070701015D6912000041ED000003E80000006400000001646F204000000000000000000000004A00000000000000000000000E00000000nvme-cli/.git 070701015D695A000041ED000003E80000006400000001642C0FB600000000000000000000004A00000000000000000000001100000000nvme-cli/.github  070701015D6968000041ED000003E800000064000000016442733700000000000000000000004A00000000000000000000001700000000nvme-cli/Documentation    070701015D6BC0000041ED000003E80000006400000001642C0FB500000000000000000000004A00000000000000000000000E00000000nvme-cli/ccan 070701015D6BE5000041ED000003E80000006400000001642C0FB600000000000000000000004A00000000000000000000001500000000nvme-cli/completions  070701015D6BEA000041ED000003E80000006400000001642C0FB500000000000000000000004A00000000000000000000000D00000000nvme-cli/etc  070701015D6BFE000041ED000003E80000006400000001642C0FB500000000000000000000004A00000000000000000000001A00000000nvme-cli/nvmf-autoconnect 070701015D6C0B000041ED000003E800000064000000016442733700000000000000000000004A00000000000000000000001100000000nvme-cli/plugins  070701015D6C76000041ED000003E80000006400000001642C0FB500000000000000000000004A00000000000000000000001100000000nvme-cli/scripts  070701015D6C79000041ED000003E80000006400000001646E2B2D00000000000000000000004A00000000000000000000001500000000nvme-cli/subprojects  070701015D6C7C000041ED000003E80000006400000001642C0FB500000000000000000000004A00000000000000000000000F00000000nvme-cli/tests    070701015D6C99000041ED000003E80000006400000001642C0FB600000000000000000000004A00000000000000000000000E00000000nvme-cli/unit 070701015D6C9F000041ED000003E80000006400000001642C0FB600000000000000000000004A00000000000000000000000E00000000nvme-cli/util 070701015D6965000081A4000003E80000006400000001642C0FB5000000AD000000000000004A00000000000000000000001400000000nvme-cli/.gitignore   nvme
*.xml
a.out
*.o
*~
*.swp
nvme-*.tar.gz

subprojects/*
!subprojects/*.wrap

cscope.*
compile_commands.json

tests/__pycache__
tests/nvmetests
tests/*.pyc

.build
.cache
   070701015D6966000081A4000003E80000006400000001642C0FB500000000000000000000004A00000000000000000000001500000000nvme-cli/.gitmodules  070701015D6967000081A4000003E80000006400000001642C0FB5000003E8000000000000004A00000000000000000000001900000000nvme-cli/CONTRIBUTING.md  # Contributing to the NVM-e CLI

Here you will find instructions on how to contribute to the NVM-Express command
line interface.

Contributions and new ideas are most welcome!

**NOTE: If you do decide to implement code changes and contribute them,
please make sure you agree your contribution can be made available
under the [GPLv2-style License used for the NVMe CLI](https://github.com/linux-nvme/nvme-cli/blob/master/LICENSE).
(SPDX-License-Identifier: GPL-2.0-or-later)**

Because there are a few files licensed under GPL-2.0-only, the whole
project is tagged as GPL-2.0-only and not as GPL-2.0-or-later.

### Code Contributions

Please feel free to use the github forums to ask for comments & questions on
your code before submitting a pull request.  The NVMe CLI project uses the
common *fork and merge* workflow used by most GitHub-hosted projects.

### Bug Reports

Bugs for the NVM Library project are tracked in our [GitHub Issues Database](https://github.com/linux-nvme/nvme-cli/issues).
070701015D6BBD000081A4000003E80000006400000001642C0FB50000466B000000000000004A00000000000000000000001100000000nvme-cli/LICENSE  GNU GENERAL PUBLIC LICENSE
                       Version 2, June 1991

 Copyright (C) 1989, 1991 Free Software Foundation, Inc., <http://fsf.org/>
 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.

                            Preamble

  The licenses for most software are designed to take away your
freedom to share and change it.  By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users.  This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it.  (Some other Free Software Foundation software is covered by
the GNU Lesser General Public License instead.)  You can apply it to
your programs, too.

  When we speak of free software, we are referring to freedom, not
price.  Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.

  To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.

  For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have.  You must make sure that they, too, receive or can get the
source code.  And you must show them these terms so they know their
rights.

  We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.

  Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software.  If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.

  Finally, any free program is threatened constantly by software
patents.  We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary.  To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.

  The precise terms and conditions for copying, distribution and
modification follow.

                    GNU GENERAL PUBLIC LICENSE
   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

  0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License.  The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language.  (Hereinafter, translation is included without limitation in
the term "modification".)  Each licensee is addressed as "you".

Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope.  The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.

  1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.

You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.

  2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:

    a) You must cause the modified files to carry prominent notices
    stating that you changed the files and the date of any change.

    b) You must cause any work that you distribute or publish, that in
    whole or in part contains or is derived from the Program or any
    part thereof, to be licensed as a whole at no charge to all third
    parties under the terms of this License.

    c) If the modified program normally reads commands interactively
    when run, you must cause it, when started running for such
    interactive use in the most ordinary way, to print or display an
    announcement including an appropriate copyright notice and a
    notice that there is no warranty (or else, saying that you provide
    a warranty) and that users may redistribute the program under
    these conditions, and telling the user how to view a copy of this
    License.  (Exception: if the Program itself is interactive but
    does not normally print such an announcement, your work based on
    the Program is not required to print an announcement.)

These requirements apply to the modified work as a whole.  If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works.  But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.

Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.

In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.

  3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:

    a) Accompany it with the complete corresponding machine-readable
    source code, which must be distributed under the terms of Sections
    1 and 2 above on a medium customarily used for software interchange; or,

    b) Accompany it with a written offer, valid for at least three
    years, to give any third party, for a charge no more than your
    cost of physically performing source distribution, a complete
    machine-readable copy of the corresponding source code, to be
    distributed under the terms of Sections 1 and 2 above on a medium
    customarily used for software interchange; or,

    c) Accompany it with the information you received as to the offer
    to distribute corresponding source code.  (This alternative is
    allowed only for noncommercial distribution and only if you
    received the program in object code or executable form with such
    an offer, in accord with Subsection b above.)

The source code for a work means the preferred form of the work for
making modifications to it.  For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable.  However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.

If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.

  4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License.  Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.

  5. You are not required to accept this License, since you have not
signed it.  However, nothing else grants you permission to modify or
distribute the Program or its derivative works.  These actions are
prohibited by law if you do not accept this License.  Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.

  6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions.  You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.

  7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License.  If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all.  For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.

If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.

It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices.  Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.

This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.

  8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded.  In such case, this License incorporates
the limitation as if written in the body of this License.

  9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time.  Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.

Each version is given a distinguishing version number.  If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation.  If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.

  10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission.  For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this.  Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.

                            NO WARRANTY

  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.

  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.

                     END OF TERMS AND CONDITIONS

            How to Apply These Terms to Your New Programs

  If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.

  To do so, attach the following notices to the program.  It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.

    {description}
    Copyright (C) {year}  {fullname}

    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 Street, Fifth Floor, Boston, MA 02110-1301 USA.

Also add information on how to contact you by electronic and paper mail.

If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:

    Gnomovision version 69, Copyright (C) year name of author
    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
    This is free software, and you are welcome to redistribute it
    under certain conditions; type `show c' for details.

The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License.  Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.

You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary.  Here is a sample; alter the names:

  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
  `Gnomovision' (which makes passes at compilers) written by James Hacker.

  {signature of Ty Coon}, 1 April 1989
  Ty Coon, President of Vice

This General Public License does not permit incorporating your program into
proprietary programs.  If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library.  If this is what you want to do, use the GNU Lesser General
Public License instead of this License.

 070701015D6BBE000081A4000003E80000006400000001642C0FB500000487000000000000004A00000000000000000000001200000000nvme-cli/Makefile # SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of nvme.
# Copyright (c) 2021 Dell Inc.
#
# Authors: Martin Belanger <Martin.Belanger@dell.com>
#
NAME          := nvme
.DEFAULT_GOAL := ${NAME}
BUILD-DIR     := .build

${BUILD-DIR}:
	meson $@
	@echo "Configuration located in: $@"
	@echo "-------------------------------------------------------"

.PHONY: ${NAME}
${NAME}: ${BUILD-DIR}
	ninja -C ${BUILD-DIR}

.PHONY: clean
clean:
ifneq ("$(wildcard ${BUILD-DIR})","")
	ninja -C ${BUILD-DIR} -t $@
endif

.PHONY: purge
purge:
ifneq ("$(wildcard ${BUILD-DIR})","")
	rm -rf ${BUILD-DIR}
endif

.PHONY: install dist
install dist: ${BUILD-DIR}
	cd ${BUILD-DIR} && meson $@

.PHONY: uninstall
uninstall:
	cd ${BUILD-DIR} && meson --internal uninstall

.PHONY: test
test: ${BUILD-DIR}
	ninja -C ${BUILD-DIR} $@

.PHONY: rpm
rpm:
	meson ${BUILD-DIR} \
		-Dudevrulesdir=$(shell rpm --eval '%{_udevrulesdir}') \
		-Dsystemddir=$(shell rpm --eval '%{_unitdir}') \
		-Ddocs=man -Ddocs-build=true
	rpmbuild -ba ${BUILD-DIR}/nvme.spec --define "_builddir ${BUILD-DIR}" -v

.PHONY: debug
debug:
	meson ${BUILD-DIR} --buildtype=debug
	ninja -C ${BUILD-DIR}
 070701015D6BE2000081A4000003E80000006400000001642C0FB5000000AD000000000000004A00000000000000000000000F00000000nvme-cli/cmd.h    /* SPDX-License-Identifier: GPL-2.0-or-later */
#ifndef _CMD_H
#define _CMD_H

#undef PLUGIN
#define PLUGIN(n, c)

#undef COMMAND_LIST
#define COMMAND_LIST(args...)

#endif
   070701015D6BE3000081A4000003E80000006400000001642C0FB500000766000000000000004A00000000000000000000001700000000nvme-cli/cmd_handler.h    /* SPDX-License-Identifier: GPL-2.0-or-later */
/*
 * Stage 1
 *
 * Define function prototypes.
 */

#undef NAME
#define NAME(n, d, v)

#undef ENTRY
#define ENTRY(n, h, f, ...) \
static int f(int argc, char **argv, struct command *command, struct plugin *plugin);

#undef COMMAND_LIST
#define COMMAND_LIST(args...) args

#undef PLUGIN
#define PLUGIN(name, cmds) cmds

#include CMD_INCLUDE(CMD_INC_FILE)

/*
 * Stage 2
 *
 * Define command structures.
 */

#undef NAME
#define NAME(n, d, v)

#undef ENTRY_W_ALIAS
#define ENTRY_W_ALIAS(n, h, f, a)	\
static struct command f ## _cmd = {	\
	.name = n, 			\
	.help = h, 			\
	.fn = f, 			\
	.alias = a, 			\
};

#undef ENTRY_WO_ALIAS
#define ENTRY_WO_ALIAS(n, h, f)		\
	ENTRY_W_ALIAS(n, h, f, NULL)

#undef ENTRY_SEL
#define ENTRY_SEL(n, h, f, a, CMD, ...) CMD

#undef ENTRY
#define ENTRY(...) 		\
	ENTRY_SEL(__VA_ARGS__, ENTRY_W_ALIAS, ENTRY_WO_ALIAS)(__VA_ARGS__)

#undef COMMAND_LIST
#define COMMAND_LIST(args...) args

#undef PLUGIN
#define PLUGIN(name, cmds) cmds

#include CMD_INCLUDE(CMD_INC_FILE)

/*
 * Stage 3
 *
 * Generate list of commands for the plugin.
 */

#undef NAME
#define NAME(n, d, v)

#undef ENTRY
#define ENTRY(n, h, f, ...) &f ## _cmd,

#undef COMMAND_LIST
#define COMMAND_LIST(args...)	\
static struct command *commands[] = {	\
	args				\
	NULL,				\
};

#undef PLUGIN
#define PLUGIN(name, cmds) cmds

#include CMD_INCLUDE(CMD_INC_FILE)

/*
 * Stage 4
 *
 * Define and register plugin
 */

#undef NAME
#define NAME(n, d, v) .name = n, .desc = d, .version = v,

#undef COMMAND_LIST
#define COMMAND_LIST(args...)

#undef PLUGIN
#define PLUGIN(name, cmds)				\
static struct plugin plugin = {				\
	name						\
	.commands = commands				\
}; 							\
							\
static void init(void) __attribute__((constructor)); 	\
static void init(void)					\
{							\
	register_extension(&plugin);			\
}

#include CMD_INCLUDE(CMD_INC_FILE)
  070701015D6BE4000081A4000003E80000006400000001642C0FB50000029C000000000000004A00000000000000000000001200000000nvme-cli/common.h /* SPDX-License-Identifier: GPL-2.0-or-later */
#ifndef _COMMON_H
#define _COMMON_H

#include <string.h>

#include "ccan/endian/endian.h"

#define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]))

#define min(x, y) ((x) > (y) ? (y) : (x))
#define max(x, y) ((x) > (y) ? (x) : (y))

static inline uint32_t mmio_read32(void *addr)
{
	leint32_t *p = addr;

	return le32_to_cpu(*p);
}

/* Access 64-bit registers as 2 32-bit; Some devices fail 64-bit MMIO. */
static inline uint64_t mmio_read64(void *addr)
{
	const volatile uint32_t *p = addr;
	uint32_t low, high;

	low = le32_to_cpu(*p);
	high = le32_to_cpu(*(p + 1));

	return ((uint64_t) high << 32) | low;
}

#endif
070701015D6BE9000081A4000003E80000006400000001642C0FB500000191000000000000004A00000000000000000000001600000000nvme-cli/define_cmd.h /* SPDX-License-Identifier: GPL-2.0-or-later */
#ifdef CREATE_CMD
#undef CREATE_CMD


#define __stringify_1(x...) #x
#define __stringify(x...)  __stringify_1(x)
#define __CMD_INCLUDE(cmd) __stringify(cmd.h)
#define CMD_INCLUDE(cmd) __CMD_INCLUDE(cmd)

#define CMD_HEADER_MULTI_READ

#include CMD_INCLUDE(CMD_INC_FILE)

#include "cmd_handler.h"

#undef CMD_HEADER_MULTI_READ

#define CREATE_CMD
#endif
   070701015D6BEE000081A4000003E80000006400000001642C0FB5000004C3000000000000004A00000000000000000000001800000000nvme-cli/libnvme-wrap.c   // SPDX-License-Identifier: GPL-2.0-or-later
/*
 * This file is part of nvme-cli
 *
 * Copyright (c) 2022 Daniel Wagner, SUSE
 */

#include <dlfcn.h>
#include <errno.h>

#include <libnvme.h>

#define PROTO(args...) args
#define ARGS(args...) args

#define VOID_FN(name, proto, args)				\
void __attribute__((weak)) name(proto)				\
{								\
	void (*fn)(proto);					\
	fn = dlsym(RTLD_NEXT, #name);				\
	if (fn)							\
		fn(args);					\
}

#define FN(name, rtype, proto, args, defret)			\
rtype __attribute__((weak)) name(proto)				\
{								\
	rtype (*fn)(proto);					\
	fn = dlsym(RTLD_NEXT, #name);				\
	if (fn)							\
		return fn(args);				\
	return defret;						\
}

FN(nvme_get_version,
	const char *, PROTO(enum nvme_version type),
	ARGS(type), "n/a")

VOID_FN(nvme_init_copy_range_f1,
	PROTO(struct nvme_copy_range_f1 *copy, __u16 *nlbs,
	      __u64 *slbas, __u64 *eilbrts, __u32 *elbatms,
	      __u32 *elbats, __u16 nr),
	ARGS(copy, nlbs, slbas, eilbrts, elbatms, elbats, nr))

FN(nvme_get_feature_length2,
	int,
	PROTO(int fid, __u32 cdw11, enum nvme_data_tfr dir,
	      __u32 *len),
	ARGS(fid, cdw11, dir, len),
	-EEXIST)

FN(nvme_ctrl_is_persistent,
	bool,
	PROTO(nvme_ctrl_t c),
	ARGS(c),
	false)
 070701015D6BEF000081ED000003E80000006400000001642C0FB500000265000000000000004A00000000000000000000001A00000000nvme-cli/meson-vcs-tag.sh #!/usr/bin/env bash
# SPDX-License-Identifier: LGPL-2.1-or-later

set -eu
set -o pipefail

dir="${1:?}"
fallback="${2:?}"

# Apparently git describe has a bug where it always considers the work-tree
# dirty when invoked with --git-dir (even though 'git status' is happy). Work
# around this issue by cd-ing to the source directory.
cd "$dir"
# Check that we have either .git/ (a normal clone) or a .git file (a work-tree)
# and that we don't get confused if a tarball is extracted in a higher-level
# git repository.
[ -e .git ] && git describe --abbrev=7 --dirty=+ 2>/dev/null | sed 's/^v//' || echo "$fallback"
   070701015D6BF3000081A4000003E80000006400000001642C0FB500001F4D000000000000004A00000000000000000000001700000000nvme-cli/nvme-models.c    /* SPDX-License-Identifier: GPL-2.0-or-later */
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <errno.h>
#include "nvme-models.h"

static char *_fmt1 = "/sys/class/nvme/nvme%d/device/subsystem_vendor";
static char *_fmt2 = "/sys/class/nvme/nvme%d/device/subsystem_device";
static char *_fmt3 = "/sys/class/nvme/nvme%d/device/vendor";
static char *_fmt4 = "/sys/class/nvme/nvme%d/device/device";
static char *_fmt5 = "/sys/class/nvme/nvme%d/device/class";

static char fmt1[78];
static char fmt2[78];
static char fmt3[78];
static char fmt4[78];
static char fmt5[78];

static char *device_top;
static char *device_mid;
static char *device_final;
static char *class_top;
static char *class_mid;
static char *class_final;



static void free_all(void)
{
	free(device_top);
	device_top = NULL;
	free(device_mid);
	device_mid = NULL;
	free(device_final);
	device_final = NULL;
	free(class_top);
	class_top = NULL;
	free(class_mid);
	class_mid = NULL;
	free(class_final);
	class_final = NULL;
}

static char *find_data(char *data)
{
	while (*data != '\0') {
		if (*data >= '0' && *data <= '9')
			return data;
		data++;
	}
	return NULL;
}

static char *locate_info(char *data, bool is_inner, bool is_class)
{
	char *orig = data;
	char *locate;
	if (!data)
		return orig;

	locate = find_data(data);
	if (!locate)
		return orig;
	if (is_class)
		return locate + 4;
	if (!is_inner)
		/* 4 to get over the number, 2 for spaces */
		return locate + 4 + 2;

	/* Inner data, has "sub_ven(space)sub_dev(space)(space)string */
	return locate + 4 + 1 + 4 + 2;
}

static void format_and_print(char *save)
{

	if (!class_mid) {
		if (device_final)
			snprintf(save, 1024, "%s %s %s",
				 locate_info(device_top, false, false),
				 locate_info(device_mid, false, false),
				 locate_info(device_final, true, false));
		else
			snprintf(save, 1024, "%s %s",
				 locate_info(device_top, false, false),
				 locate_info(device_mid, false, false));
	} else {
		if (device_final)
			snprintf(save, 1024, "%s: %s %s %s",
				 locate_info(class_mid, false, true),
				 locate_info(device_top, false, false),
				 locate_info(device_mid, false, false),
				 locate_info(device_final, true, false));
		else
			snprintf(save, 1024, "%s: %s %s",
				 locate_info(class_mid, false, true),
				 locate_info(device_top, false, false),
				 locate_info(device_mid, false, false));
	}
}

static void format_all(char *save, char *vendor, char *device)
{
	if (device_top && device_mid)
		format_and_print(save);

	else if (device_top && !device_mid && class_mid)
		snprintf(save, 1024, "%s: %s Device %s",
			 locate_info(class_mid, false, true),
			 locate_info(device_top, false, false),
			 device);

	else if (!device_top && class_mid)
		snprintf(save, 1024, "%s: Vendor %s Device %s",
			 locate_info(class_mid, false, true),
			 vendor,
			 device);
	else
		snprintf(save, 1024, "Unknown device");
}

static int is_final_match(char *line, char *search)
{
	return !memcmp(&line[2], search, 2);
}

static int is_inner_sub_vendev(char *line, char *search, char *search2)
{
	char combine[10];
	snprintf(combine, sizeof(combine), "%s %s", &search[2], &search2[2]);
       	if (line[0] != '\t' && line[1] != '\t')
		return 0;

	return !memcmp(combine, &line[2], 9);
}

static int is_mid_level_match(char *line, char *device, bool class)
{
	if (!class)
		return !memcmp(&line[1], &device[2], 4);

	return !memcmp(&line[1], device, 2);
}

static inline bool is_comment(char *line)
{
	return line[0] == '#';
}

static int is_top_level_match(char *line, const char* device, bool class)
{
	if (line[0] == '\t')
		return false;
	if (line[0] == '#')
		return false;
	if (!class)
		return !memcmp(line, &device[2], 4);
	if (line[0] != 'C')
		return false;
	/* Skipping    C(SPACE)  0x */
	return !memcmp(&line[2], &device[2], 2);
}

static inline int is_tab(char *line)
{
	return line[0] == '\t';
}

static inline int is_class_info(char *line)
{
	return !memcmp(line, "# C class", 9);
}

static void parse_vendor_device(char **line, FILE *file,
			       char *device, char *subdev,
			       char *subven)
{
	bool device_single_found = false;
	size_t amnt = 1024;
	size_t found = 0;
	char *newline;

	while ((found = getline(line, &amnt, file)) != -1) {
		newline = *line;
		if (is_comment(newline))
			continue;
		if (!is_tab(newline))
			return;

		newline[found - 1] = '\0';
		if (!device_single_found && is_mid_level_match(newline, device, false)) {
			device_single_found = true;
			device_mid = strdup(newline);
			continue;
		}

		if (device_single_found && is_inner_sub_vendev(newline, subven, subdev)) {
			device_final = strdup(newline);
			break;
		}
	}
}

static void pull_class_info(char **_newline, FILE *file, char *class)
{
	size_t amnt;
	size_t size = 1024;
	bool top_found = false;
	bool mid_found = false;
	char *newline;

	while ((amnt = getline(_newline, &size, file)) != -1) {
		newline = *_newline;
		newline[amnt - 1] = '\0';
		if (!top_found && is_top_level_match(newline, class, true)) {
			class_top = strdup(newline);
			top_found = true;
			continue;
		}
		if (!mid_found && top_found &&
		    is_mid_level_match(newline,  &class[4], true)) {
			class_mid = strdup(newline);
			mid_found = true;
			continue;
		}
		if (top_found && mid_found &&
		    is_final_match(newline, &class[6])) {
			class_final = strdup(newline);
			break;
		}
	}
}

static int read_sys_node(char *where, char *save, size_t savesz)
{
	char *new;
	int fd, ret = 0, len;
	fd = open(where, O_RDONLY);
	if (fd < 0) {
		fprintf(stderr, "Failed to open %s with errno %s\n",
			where, strerror(errno));
		return 1;
	}
	/* -1 so we can safely use strstr below */
	len = read(fd, save, savesz - 1);
	if (!len)
		ret = 1;
	else {
		save[len] = '\0';
		new = strstr(save, "\n");
		if (new)
			new[0] = '\0';
	}
	close(fd);
	return ret;
}

static FILE *open_pci_ids(void)
{
	int i;
	char *pci_ids_path;
	FILE *fp;

	const char* pci_ids[] = {
		"/usr/share/hwdata/pci.ids",  /* RHEL */
		"/usr/share/pci.ids",		  /* SLES */
		"/usr/share/misc/pci.ids",	  /* Ubuntu */
		NULL
	};

	/* First check if user gave pci ids in environment */
	if ((pci_ids_path = getenv("PCI_IDS_PATH")) != NULL) {
		if ((fp = fopen(pci_ids_path, "r")) != NULL) {
			return fp;
		} else {
			/* fail if user provided environment variable but could not open */
			perror(pci_ids_path);
			return NULL;
		}
	}

	/* NO environment, check in predefined places */
	for (i = 0; pci_ids[i] != NULL; i++) {
		if ((fp = fopen(pci_ids[i], "r")) != NULL)
			return fp;
	}

	fprintf(stderr, "Could not find pci.ids file\n");
	return NULL;
}

char *nvme_product_name(int id)
{
	char *line = NULL;
	ssize_t amnt;
	char vendor[7] = { 0 };
	char device[7] = { 0 };
	char sub_device[7] = { 0 };
	char sub_vendor[7] = { 0 };
	char class[13] = { 0 };
	size_t size = 1024;
	char ret;
	FILE *file = open_pci_ids();

	if (!file)
		goto error1;

	snprintf(fmt1, 78, _fmt1, id);
	snprintf(fmt2, 78, _fmt2, id);
	snprintf(fmt3, 78, _fmt3, id);
	snprintf(fmt4, 78, _fmt4, id);
	snprintf(fmt5, 78, _fmt5, id);

	ret = read_sys_node(fmt1, sub_vendor, 7);
	ret |= read_sys_node(fmt2, sub_device, 7);
	ret |= read_sys_node(fmt3, vendor, 7);
	ret |= read_sys_node(fmt4, device, 7);
	ret |= read_sys_node(fmt5, class, 13);
	if (ret)
		goto error0;

	line = malloc(1024);
	if (!line) {
		fprintf(stderr, "malloc: %s\n", strerror(errno));
		goto error0;
	}

	while ((amnt = getline(&line, &size, file)) != -1) {
		if (is_comment(line) && !is_class_info(line))
			continue;
		if (is_top_level_match(line, vendor, false)) {
			line[amnt - 1] = '\0';
			free(device_top);
			device_top = strdup(line);
			parse_vendor_device(&line, file,
						device,
						sub_device,
						sub_vendor);
		}
		if (is_class_info(line))
			pull_class_info(&line, file, class);
	}
	fclose(file);
	format_all(line, vendor, device);
	free_all();
	return line;
error0:
	fclose(file);
error1:
	return strdup("NULL");
}
   070701015D6BF4000081A4000003E80000006400000001642C0FB500000084000000000000004A00000000000000000000001700000000nvme-cli/nvme-models.h    /* SPDX-License-Identifier: GPL-2.0-or-later */
#ifndef NVME_MODEL_H
#define NVME_MODEL_H

char *nvme_product_name(int id);

#endif
070701015D6BF7000081A4000003E80000006400000001642C0FB500006F8E000000000000004A00000000000000000000001500000000nvme-cli/nvme-rpmb.c  // SPDX-License-Identifier: GPL-2.0-or-later
/*
 * Copyright (C) 2020 Micron Techology Inc. All rights reserved.
 *
 * 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.
 *
 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 * nvme-rpmb.c - Implementation of NVMe RPMB support commands in Nvme
 */
#include <stdio.h>
#include <stdlib.h>
#include <stddef.h>
#include <unistd.h>
#include <errno.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/socket.h>
#include <linux/if_alg.h>
#include <linux/socket.h>
#include <limits.h>

#include "common.h"
#include "nvme.h"
#include "libnvme.h"

#define CREATE_CMD


#ifndef AF_ALG
#define AF_ALG 38
#endif
#ifndef SOL_ALG
#define SOL_ALG 279
#endif

#define HMAC_SHA256_ALGO_NAME		"hmac(sha256)"
#define MD5_HASH_ALGO_NAME		"md5"
#define HMAC_SHA256_HASH_SIZE		32
#define MD5_HASH_HASH_SIZE		16

extern int nvme_show_id_ctrl_rpmbs(unsigned int);
/*
 * Utility function to create hash value of given data (with given key) using
 * given hash algorithm; this function uses kernel crypto services
 */
unsigned char *create_hash(const char *algo,
			   int hash_size,
			   unsigned char *data,
			   int datalen,
			   unsigned char *key,
			   int keylen)
{
	int error, infd, outfd = -1;
	unsigned char *hash = NULL;
	struct sockaddr_alg provider_sa = {
		.salg_family = AF_ALG,
		.salg_type = "hash",
		.salg_name = { 0 }
	};

	/* copy algorith name */
	if (strlen(algo) > sizeof(provider_sa.salg_name)) {
		fprintf(stderr, "%s: algorithm name overflow", __func__);
		return hash;
	}
	memcpy(provider_sa.salg_name, algo, strlen(algo));

    	/* open netlink socket connection to algorigm provider and bind */
    	infd = socket(AF_ALG, SOCK_SEQPACKET, 0);
	if (infd < 0) {
		perror("socket");
		return hash;
	}
    	error = bind(infd, (struct sockaddr *)&provider_sa, sizeof(provider_sa));
	if (error < 0) {
		perror("bind");
		goto out_close_infd;
	}

	/* if algorithm requires key, set it first - empty keys not accepted !*/
	if (key != NULL && keylen > 0) {
        	error = setsockopt(infd, SOL_ALG, ALG_SET_KEY, key, keylen);
		if (error < 0) {
			perror("setsockopt");
			goto out_close_infd;
		}
	}

    	/* now send data to hash */
    	outfd = accept(infd, NULL, 0);
	if (outfd < 0) {
		perror("accept");
		goto out_close_infd;
	}
    	error = send(outfd, data, datalen, 0);
	if (error < 0) {
		perror("send");
		goto out_close_outfd;
	}

	/* read computed hash */
    	hash = (unsigned char *)calloc(hash_size, 1);
	if (hash == NULL) {
        	perror("calloc");
		goto out_close_outfd;
    	}

    	error = read(outfd, hash, hash_size);
	if (error != hash_size) {
        	perror("read");
        	free(hash);
        	hash = NULL;
    	}
out_close_outfd:
	close(outfd);
out_close_infd:
	close(infd);

	return hash;
}

/* Function that computes hmac-sha256 hash of given data and key pair. Returns
 * byte stream (non-null terminated) upon success, NULL otherwise.
 */
unsigned char *
hmac_sha256(unsigned char *data, int datalen, unsigned char *key, int keylen)
{
	return create_hash(HMAC_SHA256_ALGO_NAME,
			   HMAC_SHA256_HASH_SIZE,
			   data,
			   datalen,
			   key,
			   keylen);
}

/* Function that computes md5 of given buffer - md5 hash is used as nonce
 * Returns byte stream (non-null terminated) upon success, NULL otherwise.
 */
unsigned char *
rpmb_md5(unsigned char *data, int datalen)
{
	return create_hash(MD5_HASH_ALGO_NAME,
			   MD5_HASH_HASH_SIZE,
			   data,
			   datalen,
			   NULL,
			   0);
}

/* Read data from given file into buffer and return its length */
static int read_file(const char *file, unsigned char **data, unsigned int *len)
{
	struct stat sb;
	size_t size;
	unsigned char   *buf = NULL;
	int fd;
	int err = -EINVAL;

	if (file == NULL) return err;

	if ((fd = open(file, O_RDONLY)) < 0) {
		fprintf(stderr, "Failed to open %s: %s\n", file, strerror(errno));
		return fd;
	}

	err = fstat(fd, &sb);
	if (err < 0) {
		perror("fstat");
		goto out;
	}

	size = sb.st_size;
	if (posix_memalign((void **)&buf, getpagesize(), size)) {
		fprintf(stderr, "No memory for reading file :%s\n", file);
		err = -ENOMEM;
		goto out;
	}

	err = read(fd, buf, size);
	if (err < 0) {
		err = -errno;
		fprintf(stderr, "Failed to read data from file"
				" %s with %s\n", file, strerror(errno));
		free(buf);
		goto out;
	}
	*data = buf; 
	*len = err;
	err = 0;
out:
	close(fd);
	return err;
}

/* Write given buffer data to specified file */
static void write_file(unsigned char *data, size_t len, const char *dir,
			  const char *file, const char *msg)
{
	char temp_folder[PATH_MAX] = { 0 };
	FILE *fp = NULL;

	if (dir != NULL)
		sprintf(temp_folder, "%s/%s", dir, file);
	else
		sprintf(temp_folder, "./%s", file);

	if ((fp = fopen(temp_folder, "ab+")) != NULL) {
		if (fwrite(data, 1, len,  fp) != len) {
			fprintf(stderr, "Failed to write %s data to %s\n",
				 msg ? msg : "", temp_folder);
		}
		fclose(fp);
	} else  {
		fprintf(stderr, "Failed to open %s file to write %s\n",
			temp_folder, msg ? msg : "");
	}
}

/* Various definitions used in RPMB related support */
enum rpmb_request_type {
	RPMB_REQ_AUTH_KEY_PROGRAM = 0x0001,
	RPMB_REQ_READ_WRITE_CNTR  = 0x0002,
	RPMB_REQ_AUTH_DATA_WRITE  = 0x0003,
	RPMB_REQ_AUTH_DATA_READ   = 0x0004,
	RPMB_REQ_READ_RESULT      = 0x0005,
	RPMB_REQ_AUTH_DCB_WRITE   = 0x0006,
	RPMB_REQ_AUTH_DCB_READ    = 0x0007
};
	
enum rpmb_response_type {
	RPMB_RSP_AUTH_KEY_PROGRAM = (RPMB_REQ_AUTH_KEY_PROGRAM << 8),
	RPMB_RSP_READ_WRITE_CNTR  = (RPMB_REQ_READ_WRITE_CNTR  << 8),
	RPMB_RSP_AUTH_DATA_WRITE  = (RPMB_REQ_AUTH_DATA_WRITE  << 8),
	RPMB_RSP_AUTH_DATA_READ   = (RPMB_REQ_AUTH_DATA_READ   << 8),
	RPMB_RSP_READ_RESULT      = (RPMB_REQ_READ_RESULT      << 8),
	RPMB_RSP_AUTH_DCB_WRITE   = (RPMB_REQ_AUTH_DCB_WRITE   << 8),
	RPMB_RSP_AUTH_DCB_READ    = (RPMB_REQ_AUTH_DCB_READ    << 8)
};

/* RPMB data frame structure */
#pragma pack(1)
struct rpmb_data_frame_t {
	unsigned char  pad[191];
	unsigned char  mac[32];
	unsigned char  target;     /* 0-6, should match with NSSF with SS, SR */
	unsigned char  nonce[16];
	unsigned int   write_counter;
	unsigned int   address;
	unsigned int   sectors;
	unsigned short result;
	unsigned short type;       /* req or response */
	unsigned char  data[0];    /* in sector count times */
};
#pragma pack()
	
struct rpmb_config_block_t {
	unsigned char  bp_enable;
	unsigned char  bp_lock;
	unsigned char  rsvd[510]; 
};

#define RPMB_DATA_FRAME_SIZE  256
#define RPMB_NVME_SECP        0xEA 
#define RPMB_NVME_SPSP        0x0001

static int send_rpmb_req(int fd, unsigned char tgt, int size,
			 struct rpmb_data_frame_t *req)
{
	struct nvme_security_send_args args = {
		.args_size	= sizeof(args),
		.fd		= fd,
		.nsid		= 0,
		.nssf		= tgt,
		.spsp0		= RPMB_NVME_SPSP,
		.spsp1		= 0,
		.secp		= RPMB_NVME_SECP,
		.tl		= 0,
		.data_len	= size,
		.data		= (void *)req,
		.timeout	= NVME_DEFAULT_IOCTL_TIMEOUT,
		.result		= NULL,
	};

	return nvme_security_send(&args);
}

static int recv_rpmb_rsp(int fd, int tgt, int size,
			 struct rpmb_data_frame_t *rsp)
{

	struct nvme_security_receive_args args = {
		.args_size	= sizeof(args),
		.fd		= fd,
		.nsid		= 0,
		.nssf		= tgt,
		.spsp0		= RPMB_NVME_SPSP,
		.spsp1		= 0,
		.secp		= RPMB_NVME_SECP,
		.al		= 0,
		.data_len	= size,
		.data		= (void *)rsp,
		.timeout	= NVME_DEFAULT_IOCTL_TIMEOUT,
		.result		= NULL,
	};

	return nvme_security_receive(&args);
}

/* Initialize nonce value in rpmb request frame */
static void rpmb_nonce_init(struct rpmb_data_frame_t *req)
{
	int num = rand();
	unsigned char *hash = rpmb_md5((unsigned char *)&num, sizeof(num));
	if (hash) memcpy(req->nonce, hash, sizeof(req->nonce));
}

/* Read key from a given key buffer or key file */
static unsigned char *read_rpmb_key(char *keystr, char *keyfile, unsigned int *keysize)
{
	unsigned char *keybuf = NULL;
	int err;
	
	if (keystr == NULL) {
		if (keyfile != NULL) {
			err = read_file(keyfile, &keybuf, keysize);
			if (err < 0)
				return NULL;
		}
	} else if ((keybuf = (unsigned char *)malloc(strlen(keystr))) != NULL) {
		*keysize = strlen(keystr);
		memcpy(keybuf, keystr, *keysize);
	}

	return keybuf;
}

/* Initialize RPMB request frame with given values */
static struct rpmb_data_frame_t *
rpmb_request_init(unsigned int   req_size,
		  unsigned short type,
		  unsigned char  target,
		  unsigned char  nonce,
		  unsigned int   addr,
		  unsigned int   sectors,
		  unsigned char  *data,
		  unsigned short data_offset,
		  unsigned int   data_size)
{
	struct rpmb_data_frame_t *req = NULL;

	if ((req = (struct rpmb_data_frame_t *)calloc(req_size, 1)) == NULL) {
		fprintf(stderr, "Memory allocation failed for request 0x%04x\n",
			type);
		return req;
	}

	req->type = type;
	req->target = target;
	req->address = addr;
	req->sectors = sectors;
	
	if (nonce) rpmb_nonce_init(req);
	if (data)  memcpy((unsigned char *)req + data_offset, data, data_size);

	return req;
}

/* Process rpmb response and print appropriate error message */
static int check_rpmb_response( struct rpmb_data_frame_t *req,
				struct rpmb_data_frame_t *rsp,
				char *msg)
{
	const char *rpmb_result_string [] = {
		"Operation successful", 
		"General failure",
		"Authentication (MAC) failure",
		"Counter failure (not matching/incrementing failure)",
		"Address failure (out of range or wrong alignment)",
		"Write (data/counter/result) failure",
		"Read (data/counter/result) failure",
		"Authentication key not yet programmed",
		"Invalid device configuration block",
		"Unknown error"
	};
	 
	/* check error status before comparing nonce and mac */
	if (rsp->result != 0)  {
		if (rsp->type != ((req->type << 8) & 0xFF00)) {
			fprintf(stderr, "%s ! non-matching response 0x%04x for"
				" 0x%04x\n", msg, rsp->type, req->type);
		} else if ((rsp->result & 0x80) == 0x80) {
			fprintf(stderr, "%s ! Expired write-counter !\n", msg);
		} else if (rsp->result) {
			fprintf(stderr, "%s ! %s\n", msg,
				rpmb_result_string[rsp->result & 0x7F]);
		} else if (memcmp(req->nonce, rsp->nonce, 16)) {
			fprintf(stderr, "%s ! non-matching nonce\n", msg);
		} else if (memcmp(req->mac, rsp->mac, 32)) {
			fprintf(stderr, "%s ! non-matching MAC\n", msg);
		} else if ((req->write_counter + 1) != rsp->write_counter) {
			fprintf(stderr, "%s ! out-of-sync write-counters\n", msg);
		}
	}
	
	return (int)(rsp->result);
}

/* send an initialized rpmb request to the controller and read its response
 * expected response size give in 'rsp_size'. returns response buffer upon
 * successful completion (caller must free), NULL otherwise
 */
static struct rpmb_data_frame_t *
rpmb_read_request(int fd, 
		  struct rpmb_data_frame_t *req,
	          int req_size,
	          int rsp_size)
{
	struct rpmb_data_frame_t *rsp = NULL;
	unsigned char msg[1024] = { 0 };
	int error;

	sprintf((char *)msg, "RPMB request 0x%04x to target 0x%x",
		req->type, req->target);

	error = send_rpmb_req(fd, req->target, req_size, req);
	if (error != 0) {
		fprintf(stderr, "%s failed with error = 0x%x\n",
			msg, error);
		goto error_out;
	}

	/* read the result back */
	rsp = (struct rpmb_data_frame_t *)calloc(rsp_size, 1);
	if (rsp == NULL) {
		fprintf(stderr, "memory alloc failed for %s\n", msg);
		goto error_out;
	}

	/* Read result of previous request */
	error = recv_rpmb_rsp(fd, req->target, rsp_size, rsp);
	if (error) {
		fprintf(stderr, "error 0x%x receiving response for %s\n",
			error, msg);
		goto error_out;
	}

	/* validate response buffer - match target, nonce, and mac */
	error = check_rpmb_response(req, rsp, (char *)msg);
	if (error == 0) return rsp;

error_out:
	free(rsp);
	return NULL;
}

/* read current write counter value from controller */
static int rpmb_read_write_counter(int fd,
				   unsigned char target,
				   unsigned int *counter)
{
	int error = -1;
	int req_size = sizeof(struct rpmb_data_frame_t);
	struct rpmb_data_frame_t *req = NULL;
	struct rpmb_data_frame_t *rsp = NULL;

	req = rpmb_request_init(req_size, RPMB_REQ_READ_WRITE_CNTR,
				target, 1, 0, 0, NULL, 0, 0);
	if (req == NULL) goto out;
	if ((rsp = rpmb_read_request(fd, req, req_size, req_size)) == NULL) {
		goto out;
	}	
	*counter = rsp->write_counter; 
	error = 0;
	
out:
	free(req);
	free(rsp);
	return error;
}

/* Read current device configuration block into specified buffer. It also returns
 * current write counter value returned as part of response, in case of error it
 * returns 0
 */
static unsigned int rpmb_read_config_block(int fd, unsigned char **config_buf)
{
	int req_size = sizeof(struct rpmb_data_frame_t);
	int cfg_size = sizeof(struct rpmb_config_block_t);
	int rsp_size = req_size + cfg_size;
	
	struct rpmb_data_frame_t   *req = NULL;
	struct rpmb_data_frame_t   *rsp = NULL;
	struct rpmb_config_block_t *cfg = NULL;
	unsigned int retval = 0;

	/* initialize request with nonce, no data on input */
	req = rpmb_request_init(req_size, RPMB_REQ_AUTH_DCB_READ, 0, 1, 0, 1,
				0, 0, 0);
	if (!req)
		return 0;
	if ((rsp = rpmb_read_request(fd, req, req_size, rsp_size)) == NULL)
	{
		free(req);
		return 0;
	}	

	/* copy configuration data to be sent back to caller */
	cfg = (struct rpmb_config_block_t *)calloc(cfg_size, 1);
	if (cfg == NULL) {
		fprintf(stderr, "failed to allocate RPMB config buffer\n");
		goto out;
	}

	memcpy(cfg, rsp->data, cfg_size);
	*config_buf = (unsigned char *)cfg;
	cfg = NULL;
	retval = rsp->write_counter;
out:
	free(req);
	free(rsp);
	return retval;
}


static int rpmb_auth_data_read(int fd, unsigned char target,
			       unsigned int offset,
			       unsigned char **msg_buf,
			       int msg_size, int acc_size)
{
	struct rpmb_data_frame_t *req = NULL;
	struct rpmb_data_frame_t *rsp = NULL;
	int req_size = sizeof(struct rpmb_data_frame_t);
	int chunk_size = (acc_size < msg_size) ? acc_size : msg_size;
	int xfer = chunk_size;
	unsigned char *bufp = (unsigned char *)malloc(msg_size * 512);
	unsigned char *tbufp = bufp;
	int data_size, rsp_size;
	int error = -1;

	if (bufp == NULL) {
		fprintf(stderr, "Failed to allocated memory for read-data req\n");
		goto out;
	}
	
	while (xfer > 0) {
		rsp_size = req_size + xfer * 512;
		req = rpmb_request_init(req_size, RPMB_REQ_AUTH_DATA_READ,
					target, 1, offset, xfer, 0, 0, 0);
		if (req == NULL)
			break;
		if ((rsp = rpmb_read_request(fd, req, req_size, rsp_size)) == NULL)
		{
			fprintf(stderr, "read_request failed\n");
			free(req);
			break;
		}

		data_size = rsp->sectors * 512;
		memcpy(tbufp, rsp->data, data_size);
		offset += rsp->sectors;
		tbufp += data_size;
		if (offset + chunk_size > msg_size)
			xfer = msg_size - offset;
		else 
			xfer = chunk_size;
		free(req);
		free(rsp);
	}
	
	*msg_buf = bufp;
	error = offset;
out:
	return error;
}

/* Implementation of programming authentication key to given RPMB target */
static int rpmb_program_auth_key(int fd, unsigned char target,
				 unsigned char *key_buf, int key_size)
{
	int req_size = sizeof(struct rpmb_data_frame_t);
	int rsp_size = sizeof(struct rpmb_data_frame_t);
	
	struct rpmb_data_frame_t *req = NULL;
	struct rpmb_data_frame_t *rsp = NULL;
	
	int err = -ENOMEM;
	
	req = rpmb_request_init(req_size, RPMB_REQ_AUTH_KEY_PROGRAM, target,
				0, 0, 0, key_buf, (223 - key_size), key_size);
	if (req == NULL) {
		fprintf(stderr, "failed to allocate request buffer memory\n");
		goto out;
	}

	/* send request and read the result first */
	rsp = rpmb_read_request(fd, req, req_size, rsp_size);
	if (rsp == NULL || rsp->result != 0) {
		goto out;
	}

	/* re-use response buffer */
	memset(rsp, 0, rsp_size);
	err = recv_rpmb_rsp(fd, req->target, rsp_size, rsp);
	if (err != 0) {
		err = check_rpmb_response(req, rsp, "Failed to Program Key");
	}
out:
	free(req);
	free(rsp);
	
	return err;
}


/* Implementation of RPMB authenticated data write command; this function
 * transfers msg_size bytes from msg_buf to controller 'addr'. Returns
 * number of bytes actually written to, otherwise negetive error code
 * on failures.
 */
static int auth_data_write_chunk(int fd, unsigned char tgt, unsigned int addr,
				 unsigned char *msg_buf, int msg_size,
				 unsigned char *keybuf, int keysize)
{
	int req_size = sizeof(struct rpmb_data_frame_t) + msg_size;
	int rsp_size = sizeof(struct rpmb_data_frame_t);
	
	struct rpmb_data_frame_t *req = NULL;
	struct rpmb_data_frame_t *rsp = NULL;
	
	unsigned int write_cntr = 0;
	unsigned char *mac = NULL;
	int error  = -ENOMEM;

	/* get current write counter and copy to the request  */
	error = rpmb_read_write_counter(fd, tgt, &write_cntr);
	if (error != 0) {
	   fprintf(stderr, "Failed to read write counter for write-data\n");
	    goto out;
	}
	
	req = rpmb_request_init(req_size, RPMB_REQ_AUTH_DATA_WRITE, tgt, 0,
				addr, (msg_size / 512), msg_buf,
				offsetof(struct rpmb_data_frame_t, data), msg_size);
	if (req == NULL) {
		fprintf(stderr, "Memory alloc failed for write-data command\n");
		goto out;
	}

	req->write_counter = write_cntr;

	/* compute HMAC hash */
	mac = hmac_sha256(((unsigned char *)req + 223), req_size - 223,
			   keybuf, keysize);
	if (mac == NULL) {
		fprintf(stderr, "failed to compute HMAC-SHA256\n");
		error = -1;
		goto out;
	}

	memcpy(req->mac, mac, 32);
	
	/* send the request and get response */
	error = send_rpmb_req(fd, tgt, req_size, req);
	if (error != 0) {
	    fprintf(stderr, "RPMB request 0x%04x for 0x%x, error: %d\n",
		    req->type, tgt, error);
	    goto out;
	}
	
	/* send the request to get the result and then request to get the response */
        rsp = (struct rpmb_data_frame_t *)calloc(rsp_size, 1);
	rsp->target = req->target;
	rsp->type = RPMB_REQ_READ_RESULT;
	error = send_rpmb_req(fd, tgt, rsp_size, rsp);
	if (error != 0 || rsp->result != 0) {
		fprintf(stderr, "Write-data read result 0x%x, error = 0x%x\n",
			rsp->result, error);
		goto out;
	}

	/* Read final response */
	memset(rsp, 0, rsp_size);
	error = recv_rpmb_rsp(fd, tgt, rsp_size, rsp);
	if (error != 0)
		fprintf(stderr, "Auth data write recv error = 0x%x\n", error);
	else 
    		error = check_rpmb_response(req, rsp, "Failed to write-data");
out:
	free(req);
	free(rsp);
	free(mac);

	return error;
}

/* send the request and get response */
static int rpmb_auth_data_write(int fd, unsigned char target,
				unsigned int addr, int acc_size,
				unsigned char *msg_buf, int msg_size,
				unsigned char *keybuf, int keysize)
{
	int chunk_size = acc_size < msg_size ? acc_size : msg_size;
	int xfer   = chunk_size;
	int offset = 0;

	while (xfer > 0 ) {
		if (auth_data_write_chunk(fd, target, (addr + offset / 512),
				          msg_buf + offset, xfer,
				          keybuf, keysize) != 0)
		{
			/* error writing chunk data */
			break;	
		}

		offset += xfer;
		if (offset + chunk_size > msg_size)
			xfer = msg_size - offset;
		else 
			xfer = chunk_size;
	}

	return offset;
}

/* writes given config_block buffer to the drive target 0 */
static int rpmb_write_config_block(int fd, unsigned char *cfg_buf,
				   unsigned char *keybuf, int keysize)
{
	int cfg_size = sizeof(struct rpmb_config_block_t);
	int rsp_size = sizeof(struct rpmb_data_frame_t);
	int req_size = rsp_size + cfg_size;
	
	struct rpmb_data_frame_t *req = NULL;
	struct rpmb_data_frame_t *rsp = NULL;
	unsigned char *cfg_buf_read = NULL, *mac = NULL;
	unsigned int write_cntr = 0;
	int   error = -ENOMEM;
	
	/* initialize request */
	req = rpmb_request_init(req_size, RPMB_REQ_AUTH_DCB_WRITE, 0, 0, 0, 1,
				cfg_buf, offsetof(struct rpmb_data_frame_t, data),
				cfg_size);
	if (req == NULL) {
		fprintf(stderr, "failed to allocate rpmb request buffer\n");
		goto out; 
	}

	/* read config block write_counter from controller */
	write_cntr = rpmb_read_config_block(fd, &cfg_buf_read);
	if (cfg_buf_read == NULL) {
	    	fprintf(stderr, "failed to read config block write counter\n");
		error = -EIO;
	    	goto out;
	}

	free(cfg_buf_read);
	req->write_counter = write_cntr;
	mac = hmac_sha256(((unsigned char *)req + 223), req_size - 223,
			   keybuf, keysize);
	if (mac == NULL) {
		fprintf(stderr, "failed to compute hmac-sha256 hash\n");
		error = -EINVAL;
	    	goto out;
	}
	
	memcpy(req->mac, mac, sizeof(req->mac)); 
	
	error = send_rpmb_req(fd, 0, req_size, req);
	if (error != 0) {
		fprintf(stderr, "Write-config RPMB request, error = 0x%x\n",
			error);
		goto out;
	}
	
	/* get response */
	rsp = (struct rpmb_data_frame_t *)calloc(rsp_size, 1);
	if (rsp == NULL) {
		fprintf(stderr, "failed to allocate response buffer memory\n");
		error = -ENOMEM;
		goto out;
	}

	/* get result first */
	memset(rsp, 0, rsp_size);
	rsp->target = req->target;
	rsp->type = RPMB_REQ_READ_RESULT;
	/* get the response and validate */
	error = recv_rpmb_rsp(fd, req->target, rsp_size, rsp);
	if (error != 0) {
		fprintf(stderr,"Failed getting write-config response\
			error = 0x%x\n", error);
		goto out;
	}
	error = check_rpmb_response(req, rsp,
				  "Failed to retrieve write-config response");
out:
	free(req);
	free(rsp);
	free(mac);
	
	return error;
}

static bool invalid_xfer_size(int blocks, unsigned int bpsz)
{
	return ((blocks <= 0) || 
		(blocks * 512) > ((bpsz + 1) * 128 * 1024));
}

/* Handling rpmb sub-command */
int rpmb_cmd_option(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	const char *desc    = "Run RPMB command on the supporting controller";
	const char *msg     = "data to be written on write-data or write-config commands";
	const char *mfile   = "data file for read/write-data, read/write-config options";
	const char *kfile   = "key file that has authentication key to be used";
	const char *target  = "RPMB target - numerical value of 0 to 6, default 0";
	const char *address = "Sector offset to read from or write to for an RPMB target, default 0";
	const char *blocks  = "Number of 512 blocks to read or write";
	const char *key     = "key to be used for authentication";
	const char *opt     = "RPMB action - info, program-key, read-counter, write-data, " \
			      "read-data, write-config and read-config";
	
	struct config {
		char *cmd;
		char *key;
		char *msg;
		char *keyfile;
		char *msgfile;
		int  opt;
		int  address;
		int  blocks; 
		char target;
	};
	
	struct config cfg = {
		.cmd     = "info",
		.key     = NULL,
		.msg     = NULL,
		.msgfile = NULL,
		.keyfile = NULL,
		.opt     = 0,
		.address = 0,
		.blocks  = 0,
		.target  = 0,
	};
	
	OPT_ARGS(opts) = {
		OPT_STRING("cmd",     'c', "command", &cfg.cmd,     opt),
		OPT_STRING("msgfile", 'f', "FILE",    &cfg.msgfile, mfile),
		OPT_STRING("keyfile", 'g', "FILE",    &cfg.keyfile, kfile),
		OPT_STRING("key",     'k', "key",     &cfg.key,     key),
		OPT_STRING("msg",     'd', "data",    &cfg.msg,     msg),
		OPT_UINT("address",   'o', &cfg.address,  address),
		OPT_UINT("blocks",    'b', &cfg.blocks,   blocks),
		OPT_UINT("target",    't', &cfg.target,   target),
		OPT_END()
	};
	
	unsigned int write_cntr = 0;
	unsigned char *key_buf = NULL;
	unsigned char *msg_buf = NULL;
	unsigned int msg_size = 0;
	unsigned int key_size = 0;
	struct nvme_id_ctrl ctrl;
	struct nvme_dev *dev;
	int err = -1;

	union ctrl_rpmbs_reg {
		struct {
			unsigned int num_targets:3;
			unsigned int auth_method:3;
			unsigned int reserved:10;
			unsigned int total_size:8;   /* 128K units */
			unsigned int access_size:8;  /* in 512 byte count */
		};
		unsigned int rpmbs;
	} regs;
	
	if ((err = parse_and_open(&dev, argc, argv, desc, opts)))
		return err;
	
	/* before parsing  commands, check if controller supports any RPMB targets */
	err = nvme_identify_ctrl(dev_fd(dev), &ctrl);
	if (err)
		goto out;
	
	regs.rpmbs = le32_to_cpu(ctrl.rpmbs);
	if (regs.num_targets == 0) {
		fprintf(stderr, "No RPMB targets are supported by the drive\n");
		goto out;
	}
	
	/* parse and validate options; default print rpmb support info */
	if (cfg.cmd == 0 || strcmp(cfg.cmd, "info") == 0) {
		nvme_show_id_ctrl_rpmbs(regs.rpmbs);
		goto out;
	}
	
	if (strcmp(cfg.cmd, "program-key") == 0)
		cfg.opt = RPMB_REQ_AUTH_KEY_PROGRAM;
	else if (strcmp(cfg.cmd, "read-counter") == 0)
		cfg.opt = RPMB_REQ_READ_WRITE_CNTR;
	else if (strcmp(cfg.cmd, "write-data") == 0)
		cfg.opt = RPMB_REQ_AUTH_DATA_WRITE;
	else if (strcmp(cfg.cmd, "read-data") == 0)
		cfg.opt = RPMB_REQ_AUTH_DATA_READ;
	else if (strcmp(cfg.cmd, "write-config") == 0)
		cfg.opt = RPMB_REQ_AUTH_DCB_WRITE;
	else if (strcmp(cfg.cmd, "read-config") == 0)
		cfg.opt = RPMB_REQ_AUTH_DCB_READ;
	else {
		fprintf(stderr, "Invalid option %s for rpmb command\n", cfg.cmd);
		goto out;
	}
	
	/* input file/data processing */
	if (cfg.opt == RPMB_REQ_AUTH_DCB_WRITE || 
	    cfg.opt == RPMB_REQ_AUTH_DATA_WRITE ||
	    cfg.opt == RPMB_REQ_AUTH_KEY_PROGRAM)
	{
		key_buf = read_rpmb_key(cfg.key, cfg.keyfile, &key_size);
		if (key_buf == NULL) {
			fprintf(stderr, "Failed to read key\n");
			goto out;
		}
	
		if (key_size > 223 || key_size <= 0) {
			fprintf(stderr, "Invalid key size %d, valid input 1 to 223\n",
			key_size);
			goto out;
		}

		if (cfg.opt == RPMB_REQ_AUTH_DCB_WRITE ||
		    cfg.opt == RPMB_REQ_AUTH_DATA_WRITE) {
			if (cfg.msg != NULL) {
				msg_size = strlen(cfg.msg);
				msg_buf = (unsigned char *)malloc(msg_size);
				memcpy(msg_buf, cfg.msg, msg_size);
			} else {
				err = read_file(cfg.msgfile, &msg_buf, &msg_size);
				if (err || msg_size <= 0) {
					fprintf(stderr, "Failed to read file %s\n",
						cfg.msgfile);
					goto out;
				}
			}
		}
	}
	
	switch (cfg.opt) {
		case RPMB_REQ_READ_WRITE_CNTR:
			err = rpmb_read_write_counter(dev_fd(dev), cfg.target,
						      &write_cntr);
			if (err == 0)
				printf("Write Counter is: %u\n", write_cntr);
			break;
	
		case RPMB_REQ_AUTH_DCB_READ:
			write_cntr = rpmb_read_config_block(dev_fd(dev),
							    &msg_buf);
			if (msg_buf == NULL) {
				fprintf(stderr, "failed read config blk\n");
				goto out;
			}

			/* no output file is given, print the data on stdout */
			if (cfg.msgfile == 0) {
				struct rpmb_config_block_t *cfg =
						(struct rpmb_config_block_t *)msg_buf;
				printf("Boot Partition Protection is %s\n",
					((cfg->bp_enable & 0x1)  ? "Enabled" : "Disabled"));
				printf("Boot Partition 1 is %s\n",
					((cfg->bp_lock & 0x2) ? "Locked" : "Unlocked"));
				printf("Boot Partition 0 is %s\n",
					((cfg->bp_lock & 0x1) ? "Locked" : "Unlocked"));
			} else {
				printf("Saving received config data to %s file\n", cfg.msgfile);
				write_file(msg_buf, sizeof(struct rpmb_config_block_t), NULL,
					   cfg.msgfile, NULL);
			}
			err = (write_cntr == 0);
			break;
	
		case RPMB_REQ_AUTH_DATA_READ:
			/* check if requested data is beyond what target supports */
			msg_size = cfg.blocks * 512;
			if (invalid_xfer_size(cfg.blocks, regs.total_size)) {
				fprintf(stderr, "invalid transfer size %d \n",
					msg_size);
				break;
			}
			err = rpmb_auth_data_read(dev_fd(dev), cfg.target,
						  cfg.address, &msg_buf,
						  cfg.blocks,
						  (regs.access_size + 1));
			if (err > 0 && msg_buf != NULL) {
				printf("Writting %d bytes to file %s\n",
					err * 512, cfg.msgfile);
				write_file(msg_buf, err * 512, NULL,
					   cfg.msgfile, NULL);
			}
			break;
	
		case RPMB_REQ_AUTH_DATA_WRITE:
			if (invalid_xfer_size(cfg.blocks, regs.total_size) || 
			    (cfg.blocks * 512) > msg_size) {
				fprintf(stderr, "invalid transfer size %d\n", 
					cfg.blocks * 512);
				break;
			} else if ((cfg.blocks * 512) < msg_size) {
				msg_size = cfg.blocks * 512;
			}
			err = rpmb_auth_data_write(dev_fd(dev), cfg.target,
						   cfg.address,
						  ((regs.access_size + 1) * 512),
						   msg_buf, msg_size,
						   key_buf, key_size);

			/* print whatever extent of data written to target */
			printf("Written %d sectors out of %d @target(%d):0x%x\n",
				err/512, msg_size/512, cfg.target, cfg.address);
			break;

		case RPMB_REQ_AUTH_DCB_WRITE:
			err = rpmb_write_config_block(dev_fd(dev), msg_buf,
						      key_buf, key_size);
			break;
	
		case RPMB_REQ_AUTH_KEY_PROGRAM:
			err = rpmb_program_auth_key(dev_fd(dev), cfg.target,
						    key_buf, key_size);
			break;
		default:
			break;
	}
	 
out:
	/* release memory  */
	free(key_buf);
	free(msg_buf);
	
	/* close device */
	dev_close(dev);
	
	return err;
}
  070701015D6BFB000081A4000003E80000006400000001642C0FB5000000DF000000000000004A00000000000000000000001900000000nvme-cli/nvme.control.in  Package: nvme
Version: @VERSION@
Section: base
Priority: optional
Architecture: amd64
Depends: @DEPENDS@
Maintainer: Keith Busch <kbusch@kernel.org>
Description: NVM-Express Command Line Interface
 The nvme management tool
 070701015D6BFD000081A4000003E80000006400000001642C0FB500000795000000000000004A00000000000000000000001600000000nvme-cli/nvme.spec.in Name: 		nvme
Version: 	@VERSION@
Release: 	1%{?dist}
Summary:  	Core nvme tools
License: 	GPL-2.0-only
Group: 		Development/Tools
URL: 		https://github.com/linux-nvme/nvme-cli/
Provides:	nvme
Requires(post): util-linux systemd systemd-udev
BuildRoot:	%{_tmppath}/%{name}-%{version}-root
@REQUIRES@

%description
NVMe is a fast, scalable, direct attached storage interface. The nvme
cli rpm installs core management tools with minimal dependencies.

%install
meson install --destdir %{buildroot} --skip-subprojects
touch %{buildroot}@SYSCONFDIR@/nvme/hostnqn
touch %{buildroot}@SYSCONFDIR@/nvme/hostid

%files
%defattr(-,root,root)
@SBINDIR@/nvme
@MANDIR@/man1/nvme*.1*
@DATADIR@/bash-completion/completions/nvme
@DATADIR@/zsh/site-functions/_nvme
%dir @SYSCONFDIR@/nvme
@SYSCONFDIR@/nvme/hostnqn
@SYSCONFDIR@/nvme/hostid
@SYSCONFDIR@/nvme/discovery.conf
%ghost @SYSCONFDIR@/nvme/config.json
@UDEVRULESDIR@/70-nvmf-autoconnect.rules
@UDEVRULESDIR@/71-nvmf-iopolicy-netapp.rules
@DRACUTRILESDIR@/70-nvmf-autoconnect.conf
@SYSTEMDDIR@/nvmf-connect@.service
@SYSTEMDDIR@/nvmefc-boot-connections.service
@SYSTEMDDIR@/nvmf-connect.target
@SYSTEMDDIR@/nvmf-autoconnect.service

%clean
rm -rf $RPM_BUILD_ROOT

%post
if [ $1 -eq 1 ]; then # 1 : This package is being installed for the first time
	if [ ! -s @SYSCONFDIR@/nvme/hostnqn ]; then
		echo $(@SBINDIR@/nvme gen-hostnqn) > @SYSCONFDIR@/nvme/hostnqn
        fi
        if [ ! -s @SYSCONFDIR@/nvme/hostid ]; then
                uuidgen > @SYSCONFDIR@/nvme/hostid
        fi

	# apply udev and systemd changes that we did
	systemctl daemon-reload
	udevadm control --reload-rules && udevadm trigger
fi

%changelog
* Tue Dec 17 2019 Simon Schricker <sschricker@suse.de>
  - Add new udev rules to set iopolicy for NetApp devices

* Mon Oct 15 2018 Eyal Ben-David <eyalbe@il.ibm.com> - 1.6.81.g899a-2
- bash-completion check

* Thu Oct 15 2015 Keith Busch <keith.busch@intel.com>
- Initial RPM spec
   070701015D6C09000081A4000003E80000006400000001642C0FB5000014CD000000000000004A00000000000000000000001200000000nvme-cli/plugin.c // SPDX-License-Identifier: GPL-2.0-or-later
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

#include "plugin.h"
#include "util/argconfig.h"

#include <libnvme.h>

static int version(struct plugin *plugin)
{
	struct program *prog = plugin->parent;

	if (plugin->name) {
		printf("%s %s version %s (git %s)\n",
			prog->name, plugin->name, plugin->version, GIT_VERSION);
	} else {
		printf("%s version %s (git %s)\n",
		       prog->name, prog->version, GIT_VERSION);
	}
	printf("libnvme version %s (git %s)\n",
		nvme_get_version(NVME_VERSION_PROJECT),
		nvme_get_version(NVME_VERSION_GIT));
	return 0;
}

static int help(int argc, char **argv, struct plugin *plugin)
{
	char man[0x100];
	struct program *prog = plugin->parent;
	char *str = argv[1];
	int i;

	if (argc == 1) {
		general_help(plugin);
		return 0;
	}

	for (i = 0; plugin->commands[i]; i++) {
		struct command *cmd = plugin->commands[i];

		if (strcmp(str, cmd->name))
			if (!cmd->alias || (cmd->alias && strcmp(str, cmd->alias)))
				continue;

		if (plugin->name)
			sprintf(man, "%s-%s-%s", prog->name, plugin->name, cmd->name);
		else
			sprintf(man, "%s-%s", prog->name, cmd->name);
		if (execlp("man", "man", man, (char *)NULL))
			perror(argv[1]);
	}
	return 0;
}

void usage(struct plugin *plugin)
{
	struct program *prog = plugin->parent;

	if (plugin->name)
		printf("usage: %s %s %s\n", prog->name, plugin->name, prog->usage);
	else
		printf("usage: %s %s\n", prog->name, prog->usage);
}

void general_help(struct plugin *plugin)
{
	struct program *prog = plugin->parent;
	struct plugin *extension;
	unsigned i = 0;
	unsigned padding = 15;
	unsigned curr_length = 0;
	printf("%s-%s\n", prog->name, prog->version);

	usage(plugin);

	printf("\n");
	print_word_wrapped(prog->desc, 0, 0, stdout);
	printf("\n");

	if (plugin->desc) {
		printf("\n");
		print_word_wrapped(plugin->desc, 0, 0, stdout);
		printf("\n");
	}

	printf("\nThe following are all implemented sub-commands:\n");

	/* iterate through all commands to get maximum length */
	/* Still need to handle the case of ultra long strings, help messages, etc */
	for (; plugin->commands[i]; i++)
		if (padding < (curr_length = 2 + strlen(plugin->commands[i]->name)))
			padding = curr_length;

	i = 0;
	for (; plugin->commands[i]; i++)
		printf("  %-*s %s\n", padding, plugin->commands[i]->name,
					plugin->commands[i]->help);

	printf("  %-*s %s\n", padding, "version", "Shows the program version");
	printf("  %-*s %s\n", padding, "help", "Display this help");
	printf("\n");

	if (plugin->name)
		printf("See '%s %s help <command>' for more information on a specific command\n",
			prog->name, plugin->name);
	else
		printf("See '%s help <command>' for more information on a specific command\n",
			prog->name);

	/* The first plugin is the built-in. If we're not showing help for the
	 * built-in, don't show the program's other extensions */
	if (plugin->name)
		return;

	extension = prog->extensions->next;
	if (!extension)
		return;

	printf("\nThe following are all installed plugin extensions:\n");
	while (extension) {
		printf("  %-*s %s\n", 15, extension->name, extension->desc);
		extension = extension->next;
	}
	printf("\nSee '%s <plugin> help' for more information on a plugin\n",
			prog->name);
}

int handle_plugin(int argc, char **argv, struct plugin *plugin)
{
	char *str = argv[0];
	char use[0x100];
	struct plugin *extension;
	struct program *prog = plugin->parent;
	struct command **cmd = plugin->commands;
	struct command *cr = NULL;
	bool cr_valid = false;

	if (!argc) {
		general_help(plugin);
		return 0;
	}

	if (!plugin->name)
		sprintf(use, "%s %s <device> [OPTIONS]", prog->name, str);
	else
		sprintf(use, "%s %s %s <device> [OPTIONS]", prog->name, plugin->name, str);
	argconfig_append_usage(use);

	/* translate --help and --version into commands */
	while (*str == '-')
		str++;

	if (!strcmp(str, "help"))
		return help(argc, argv, plugin);
	if (!strcmp(str, "version"))
		return version(plugin);

	while (*cmd) {
		if (!strcmp(str, (*cmd)->name) ||
		    ((*cmd)->alias && !strcmp(str, (*cmd)->alias)))
			return (*cmd)->fn(argc, argv, *cmd, plugin);
		if (!strncmp(str, (*cmd)->name, strlen(str))) {
			if (cr) {
				cr_valid = false;
			} else {
				cr = *cmd;
				cr_valid = true;
			}
		}
		cmd++;
	}

	if (cr && cr_valid) {
		sprintf(use, "%s %s <device> [OPTIONS]", prog->name, cr->name);
		argconfig_append_usage(use);
		return cr->fn(argc, argv, cr, plugin);
	}

	/* Check extensions only if this is running the built-in plugin */
	if (plugin->name) {
		printf("ERROR: Invalid sub-command '%s' for plugin %s\n", str, plugin->name);
		return -ENOTTY;
        }

	extension = plugin->next;
	while (extension) {
		if (!strcmp(str, extension->name))
			return handle_plugin(argc - 1, &argv[1], extension);
		extension = extension->next;
	}

	/* If the command is executed with the extension name and
	 * command together ("plugin-command"), run the plug in */
	extension = plugin->next;
	while (extension) {
		if (!strncmp(str, extension->name, strlen(extension->name))) {
			argv[0] += strlen(extension->name);
			while (*argv[0] == '-')
				argv[0]++;
			return handle_plugin(argc, &argv[0], extension);
		}
		extension = extension->next;
	}
	printf("ERROR: Invalid sub-command '%s'\n", str);
	return -ENOTTY;
}
   070701015D6C0A000081A4000003E80000006400000001642C0FB5000002F0000000000000004A00000000000000000000001200000000nvme-cli/plugin.h /* SPDX-License-Identifier: GPL-2.0-or-later */
#ifndef PLUGIN_H
#define PLUGIN_H

#include <stdbool.h>

struct program {
	const char *name;
	const char *version;
	const char *usage;
	const char *desc;
	const char *more;
	struct command **commands;
	struct plugin *extensions;
};

struct plugin {
	const char *name;
	const char *desc;
	const char *version;
	struct command **commands;
	struct program *parent;
	struct plugin *next;
	struct plugin *tail;
};

struct command {
	char *name;
	char *help;
	int (*fn)(int argc, char **argv, struct command *command, struct plugin *plugin);
	char *alias;
};

void usage(struct plugin *plugin);
void general_help(struct plugin *plugin);
int handle_plugin(int argc, char **argv, struct plugin *plugin);

#endif
070701015D6C74000081ED000003E80000006400000001642C0FB500000B8B000000000000004A00000000000000000000001100000000nvme-cli/regress  #!/bin/bash
# SPDX-License-Identifier: GPL-2.0-or-later
#
# Copyright 2015 PMC-Sierra, Inc.
#
# 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 Street, Fifth Floor, Boston,
# MA  02110-1301, USA.
#
#   Author: Stephen Bates <stephen.bates@pmcs.com>
#
#   Description:
#     Regression test-suite for the NVM Express CLI.
#

DEVICE=
WRITE=false
LIST=false

RAND_BASE=temp.rand
RAND_WFILE=${RAND_BASE}.write
RAND_RFILE=${RAND_BASE}.read
RAND_SIZE=4k

green=$(tput bold)$(tput setaf 2)
red=$(tput bold)$(tput setaf 1)
rst=$(tput sgr0)

while getopts ":d:wl" opt; do
  case $opt in
    d)
      DEVICE=${OPTARG}
      ;;
    w)
      echo "WARNING: Write mode enabled, this might trash your drive!"
      WRITE=true
      ;;
    l)
      LIST=true
      ;;
    \?)
      echo "Invalid option: -$OPTARG" >&2
      exit 1
      ;;
    :)
      echo "Option -$OPTARG requires an argument." >&2
      exit 1
      ;;
  esac
done

if [ -z "$DEVICE" ]; then
     echo "regress: You must specify a NVMe device using -d"
     exit 1
fi

function print_pass_fail {
    $* > /dev/null 2>&1
    if (( $? )); then
        echo ${red}"FAILED!"${rst}
        echo "Failed running command: "
        echo  "   $*"
        exit 1
    else
        echo ${green}"PASSED!"${rst}
    fi
}

function run_test {
    LINE="$*"
    printf  "  %-3s   %-68s : " "RUN" "${LINE::67}"
    print_pass_fail $*
}

make clean > /dev/null || exit -1
make install > /dev/null || exit -1

if $LIST ; then
    run_test nvme list
fi
run_test nvme id-ctrl ${DEVICE}
run_test nvme id-ns -raw-binary ${DEVICE}
run_test nvme list-ns -n 1 ${DEVICE}
run_test nvme get-ns-id ${DEVICE}
run_test nvme get-log ${DEVICE}  --log-id=2 --log-len=512
run_test nvme fw-log ${DEVICE}
run_test nvme fw-log ${DEVICE} -b
run_test nvme smart-log ${DEVICE}
run_test nvme error-log ${DEVICE}
run_test nvme get-feature ${DEVICE} -f 7
run_test nvme flush ${DEVICE}

if $WRITE ; then
    run_test dd if=/dev/urandom of=${RAND_WFILE} bs=${RAND_SIZE} count=1
    run_test nvme write ${DEVICE} --start-block=0 --block-count=0 --data-size=${RAND_SIZE} --data ${RAND_WFILE}
fi
run_test nvme read ${DEVICE} --start-block=0 --block-count=0 --data-size=${RAND_SIZE} --data ${RAND_RFILE} --latency
if $WRITE ; then
    run_test diff ${RAND_RFILE} ${RAND_WFILE}
    rm ${RAND_WFILE} > /dev/null
fi
rm ${RAND_RFILE} > /dev/null
 070701015D6C75000081ED000003E80000006400000001642C0FB500000BB1000000000000004A00000000000000000000001400000000nvme-cli/release.sh   #!/bin/bash

usage() {
    echo "Usage: release.sh [-d] VERSION"
    echo ""
    echo "The script does all necessary steps to create a new release."
    echo ""
    echo " -d:  no documentation update"
    echo " -n:  dry run"
    echo ""
    echo "Note: The version number needs to be exactly"
    echo "      '^v[\d]+.[\d]+(.[\d\]+(-rc[0-9]+)?$'"
    echo ""
    echo "example:"
    echo "  release.sh v2.1-rc0     # v2.1 release candidate 0"
    echo "  release.sh v2.1         # v2.1 release"
}

build_doc=true
dry_run=false

while getopts "dn" o; do
    case "${o}" in
        d)
            build_doc=false
            ;;
        n)
            dry_run=true
            ;;
        *)
            usage
            ;;
    esac
done
shift $((OPTIND-1))

VERSION=${1:-}

if [ -z "$VERSION" ] ; then
    usage
    exit 1
fi

# expected version regex
re='^v([0-9]+\.[0-9]+(\.[0-9]+)?)(-rc[0-9]+)?$'

# use the version string provided from the command line for nvme-cli
if [[ "$VERSION" =~ ${re} ]]; then
    echo "nvme-cli: valid version $VERSION string"

    # remove the leading 'v'
    ver="${VERSION#v}"
else
    echo "nvme-cli: invalid version string ${VERSION}"
    exit 1
fi

# extract the vesion string from libnvme by using the ref
# defined in libnvme.wrap.
libnvme_ref=$(sed -n "s/revision = \([0-9a-z]\+\)/\1/p" subprojects/libnvme.wrap)
libnvme_VERSION=$(git -C subprojects/libnvme describe "${libnvme_ref}")
if [[ "${libnvme_VERSION}" =~ ${re} ]]; then
    echo "libnvme: valid version ${libnvme_VERSION} string"

    # remove the leading 'v'
    libnvme_ver="${libnvme_VERSION#v}"
else
    echo "libnvme: invalid version string ${libnvme_VERSION}"
    exit 1
fi

if [[ -n $(git status -s) ]]; then
    echo "tree is dirty."
    if [[ "${dry_run}" = false ]]; then
        exit 1
    fi
fi

if [ "$(git rev-parse --abbrev-ref HEAD)" != "master" ] ; then
    echo "currently not on master branch. abort."
    exit 1
fi

# update all docs
doc_dir=""
if [ -d "Documentation" ]; then
    doc_dir="Documentation"
elif [ -d "doc" ]; then
    doc_dir="doc"
else
    echo "documenation directory not found"
    exit 1
fi

# update meson.build
sed -i -e "0,/[ \t]version: /s/\([ \t]version: \).*/\1\'$ver\',/" meson.build
sed -i -e "s/\(dependency('libnvme', version: '>=\)\([\.1-9]\+\)/\1$libnvme_ver/" meson.build
if [[ "${dry_run}" = false ]]; then
    git add meson.build
    git commit -s -m "build: Update version to $VERSION"
fi

if [ "$build_doc" = true ]; then
    # update documentation
    ./$doc_dir/update-docs.sh
    if [[ "${dry_run}" = false ]]; then
        git add $doc_dir
        git commit -s -m "doc: Regenerate all docs for $VERSION"
    fi
fi

if [[ "${dry_run}" = true ]]; then
    exit 0
fi

git tag -s -m "Release $VERSION" "$VERSION"
git push --dry-run origin "$VERSION"^{}:master tag "$VERSION"

read -p "All good? Ready to push changes to remote? [Yy]" -n 1 -r
echo
if [[ $REPLY =~ ^[Yy]$ ]]; then
    git push origin "$VERSION"^{}:master tag "$VERSION"
fi
   070701015D6E41000081A4000003E80000006400000001642C0FB600003072000000000000004A00000000000000000000001300000000nvme-cli/README.md    # Timberland-sig nvme-cli and libnvme

Timberland-sig uses a copy of nvme-cli/libnvme

When cloning your source you will need to use the timberland-sig repositories.
Both the nvme-cli and libnvme submodule repositories are forked in the
Timberland-sig Github group.

Use the following command to create your timberland-sig nvme-cli repository:

```
  $ git clone https://github.com/timberland-sig/nvme-cli.git
```

## Timberland-sig nvme-cli/libnvme work flow

All changes and pull requests target the timberlandmaster branch.

To submit a change for review to the timberland-sig nvme-cli and libnvme repositories:

1. cd to `subprojects/libnvme` directory and create a private branch
2. cd to the parent `nvme-cli` directory and create a private branch
3. edit and compile your changes as normal, makeing your changes in both repositories
4. git commit your changes to the `subprojects/libnvme` repository first
   - git push your private branch to the remote timberland-sig/libnvme repository
5. git commit your changes to the `nvme-cli` repository second
   - git push your private branch to the remote timberland-sig/nvme-cli repository
6. open two pull requests at timberland-sig/libnvme and timberland-sig/nvme-cli
7. merge the two pull requests in order: 1) timberland-sig/libnvme and 2) timberland-sig/nvme-cli

Changes must be made in this order to correctly order the submodule commits with the parent module commits.

More at:

https://mesonbuild.com/Subprojects.html#meson-subprojects-command

### Overriding system libnvme

If development headers for `libnvme` are installed on the system, **meson**
will use them by default. To avoid it and make sure Timberland's modified libnvme is
used, use one of the following options:

 - uninstall the libvme header files  (e.g. `libnvme-devel` package)from the system;
 - use the **meson** option `--wrap-mode=forcefallback` (this will also use
   local copies of other libraries, `libjson-c` and `zlib`);
 - use the **meson** option `--force-fallback-for=libnvme` (this will use the
   local `libnvme` but system headers for `json-c` and `zlib`, if available).

See also [Command-line options for subproject usage](https://mesonbuild.com/Subprojects.html#commandline-options).

The fallback library will be used when the locally built binary (`.build/nvme`) is executed.

If the Timberland nmve-cli and libvme are installed on a system in parallel to
the upstream versions, you will need to set `LD_LIBRARY_PATH` at run time to
make sure that the nvme command links with the correct shared library.
Alternatively, you can pass the the installed path to the Timberland libnvme to
**meson** at build time (see [meson documentation](https://mesonbuild.com/howtox.html#set-extra-compiler-and-linker-flags-from-the-outside-when-eg-building-distro-packages)):

    LDFLAGS='-Wl,-rpath=/opt/timberland/$LIB' meson .build --prefix=/opt/timberland --force-fallback-for=libnvme

Otherwise, all instructions below apply.

# nvme-cli
![Coverity Scan Build Status](https://scan.coverity.com/projects/24883/badge.svg)
![MesonBuild](https://github.com/linux-nvme/nvme-cli/actions/workflows/meson.yml/badge.svg)
![GitHub](https://img.shields.io/github/license/linux-nvme/nvme-cli)

NVM-Express user space tooling for Linux.

nvme-cli uses meson as build system. In order to build nvme-cli
run following commands

	$ meson .build
	$ ninja -C .build

nvme-cli depends on json-c

To install, run:

	# meson install -C .build

There is a Makefile wrapper for meson for backwards compatiblily

    $ make
    # make install

RPM build support via Makefile that uses meson

    $ make rpm

If not sure how to use, find the top-level documentation with:

    $ man nvme

Or find a short summary with:

    $ nvme help

## Distro Support

### Alpine Linux

nvme-cli is tested on Alpine Linux 3.3.  Install it using:

    # apk update && apk add nvme-cli nvme-cli-doc

if you just use the device you're after, it will work flawless.
```
# nvme smart-log /dev/nvme0
Smart Log for NVME device:/dev/nvme0 namespace-id:ffffffff
critical_warning                    : 0
temperature                         : 49 C
available_spare                     : 100%
```

### Arch Linux

nvme-cli is available in the `[community]` repository. It can be installed with:

    # pacman -S nvme-cli

The development version can be installed from AUR, e.g.:

    $ yay -S nvme-cli-git

### Debian

nvme-cli is available in Debian 9 and up.  Install it with your favorite
package manager.  For example:

    $ sudo apt install nvme-cli

### Fedora

nvme-cli is available in Fedora 23 and up.  Install it with your favorite
package manager.  For example:

    $ sudo dnf install nvme-cli

### FreeBSD

`nvme-cli` is available in the FreeBSD Ports Collection.  A prebuilt binary
package can be installed with:

```console
# pkg install nvme-cli
```

### Gentoo

nvme-cli is available and tested in portage:
```
$ emerge -av nvme-cli
```

### Nix(OS)

The attribute is named `nvme-cli` and can e.g. be installed with:
```
$ nix-env -f '<nixpkgs>' -iA nvme-cli
```

### openSUSE

nvme-cli is available in openSUSE Leap 42.2 or later and Tumbleweed. You can
install it using zypper. For example:

    $ sudo zypper install nvme-cli

### Ubuntu

nvme-cli is supported in the Universe package sources for
many architectures. For a complete list try running:
  ```
  rmadison nvme-cli
   nvme-cli | 0.5-1          | xenial/universe         | source, amd64, arm64, armhf, i386, powerpc, ppc64el, s390x
   nvme-cli | 0.5-1ubuntu0.2 | xenial-updates/universe | source, amd64, arm64,       armhf, i386, powerpc, ppc64el, s390x
   nvme-cli | 1.5-1          | bionic/universe         | source, amd64, arm64,       armhf, i386, ppc64el, s390x
   nvme-cli | 1.5-1ubuntu1.2 | bionic-updates          | source, amd64, arm64,       armhf, i386, ppc64el, s390x
   nvme-cli | 1.9-1          | focal/universe          | source, amd64, arm64,       armhf, ppc64el, riscv64, s390x
   nvme-cli | 1.9-1ubuntu0.1 | focal-updates           | source, amd64, arm64,       armhf, ppc64el, riscv64, s390x
   nvme-cli | 1.14-1         | impish                  | source, amd64, arm64,       armhf, ppc64el, riscv64, s390x
   nvme-cli | 1.16-3         | jammy                   | source, amd64, arm64,       armhf, ppc64el, riscv64, s390x
  ```
A Debian based package for nvme-cli is currently maintained as a
Ubuntu PPA. To install nvme-cli using this approach please perform the following
steps:
   1. Perform an update of your repository list:
   ```
   sudo apt-get update
   ```
   2. Get nvme-cli!
   ```
   sudo apt-get install nvme-cli
   ```
   3. Test the code.
   ```
   sudo nvme list
   ```
   In the case of no NVMe devices you will see
   ```
   No NVMe devices detected.
   ```
   otherwise you will see information about each NVMe device installed
   in the system.

### OpenEmbedded/Yocto

An [nvme-cli recipe](https://layers.openembedded.org/layerindex/recipe/88631/)
is available as part of the `meta-openembeded` layer collection.

### Buildroot

`nvme-cli` is available as [buildroot](https://buildroot.org) package. The
package is named `nvme`.

### Other Distros

TBD

## Developers

You may wish to add a new command or possibly an entirely new plug-in
for some special extension outside the spec.

This project provides macros that help generate the code for you. If
you're interested in how that works, it is very similar to how trace
events are created by Linux kernel's 'ftrace' component.

### Add command to existing built-in

The first thing to do is define a new command entry in the command
list. This is declared in nvme-builtin.h. Simply append a new "ENTRY" into
the list. The ENTRY normally takes three arguments: the "name" of the 
subcommand (this is what the user will type at the command line to invoke
your command), a short help description of what your command does, and the
name of the function callback that you're going to write. Additionally,
You can declare an alias name of subcommand with fourth argument, if needed.

After the ENTRY is defined, you need to implement the callback. It takes
four arguments: argc, argv, the command structure associated with the
callback, and the plug-in structure that contains that command. The
prototype looks like this:

  ```c
  int f(int argc, char **argv, struct command *cmd, struct plugin *plugin);
  ```

The argc and argv are adjusted from the command line arguments to start
after the sub-command. So if the command line is "nvme foo --option=bar",
the argc is 1 and argv starts at "--option".

You can then define argument parsing for your sub-command's specific
options then do some command specific action in your callback.

### Add a new plugin

The nvme-cli provides macros to make define a new plug-in simpler. You
can certainly do all this by hand if you want, but it should be easier
to get going using the macros. To start, first create a header file
to define your plugin. This is where you will give your plugin a name,
description, and define all the sub-commands your plugin implements.

There is a very important order on how to define the plugin. The following
is a basic example on how to start this:

File: foo-plugin.h
```c
#undef CMD_INC_FILE
#define CMD_INC_FILE plugins/foo/foo-plugin

#if !defined(FOO) || defined(CMD_HEADER_MULTI_READ)
#define FOO

#include "cmd.h"

PLUGIN(NAME("foo", "Foo plugin"),
	COMMAND_LIST(
		ENTRY("bar", "foo bar", bar)
		ENTRY("baz", "foo baz", baz)
		ENTRY("qux", "foo quz", qux)
	)
);

#endif

#include "define_cmd.h"
```

In order to have the compiler generate the plugin through the xmacro
expansion, you need to include this header in your source file, with
pre-defining macro directive to create the commands.

To get started from the above example, we just need to define "CREATE_CMD"
and include the header:

File: foo-plugin.c
```c
#include "nvme.h"

#define CREATE_CMD
#include "foo-plugin.h"
```

After that, you just need to implement the functions you defined in each
ENTRY, then append the object file name to the meson.build "sources".

## meson tips

In case meson doesn't find libnvme header files (via pkg-config) it 
will fallback using subprojects.  meson checks out libnvme in 
subprojects directory as git tree once to the commit level specified 
in the libnvme.wrap file revision parm.  After this initial checkout,
the libnvme code level will not change unless explicitly told.  That 
means if the current branch is updated via git, the subprojects/libnvme
branch will not updated accordingly.  To update it, either use the 
normal git operations or the command: 

    $ meson subprojects update

## Dependency

libnvme depends on the /sys/class/nvme-subsystem interface which was
introduced in the Linux kernel release v4.15. Hence nvme-cli 2.x is
only working on kernels >= v4.15. For older kernels nvme-cli 1.x is
recommended to be used.

## How to contribute

There are two ways to send code changes to the project. The first one
is by sending the changes to linux-nvme@lists.infradead.org. The
second one is by posting a pull request on github. In both cases
please follow the Linux contributions guidelines as documented in

https://docs.kernel.org/process/submitting-patches.html#

That means the changes should be a clean series (no merges should be
present in a github PR for example) and every commit should build.

See also https://opensource.com/article/19/7/create-pull-request-github

### How to cleanup your series before creating PR

This example here assumes, the changes are in a branch called
fix-something, which branched away from master in the past. In the
meantime the upstream project has changed, hence the fix-something
branch is not based on the current HEAD. Before posting the PR, the
branch should be rebased on the current HEAD and retest everything.

For example rebasing can be done by following steps

```shell
# Update master branch
#   upstream == https://github.com/linux-nvme/nvme-cli.git
$ git switch master
$ git fetch --all
$ git reset --hard upstream/master

# Make sure all dependencies are up to date and make a sanity build
$ meson subprojects update
$ ninja -C .build

# Go back to the fix-something branch
$ git switch fix-something

# Rebase it to the current HEAD
$ git rebase master
[fixup all merge conflicts]
[retest]

# Push your changes to github and trigger a PR
$ git push -u origin fix-something
```
  070701015D6E46000081A4000003E80000006400000001642C0FB6000004B6000000000000004A00000000000000000000001B00000000nvme-cli/meson_options.txt    # SPDX-License-Identifier: GPL-2.0-or-later
option('version-tag', type : 'string', description : 'override the git version string')
option('udevrulesdir', type : 'string', value : 'lib/udev/rules.d', description : 'directory for udev rules files')
option('dracutrulesdir', type : 'string', value : 'lib/dracut/dracut.conf.d/', description : 'directory for dracut rules files')
option('systemddir', type : 'string', value : 'lib/systemd/system', description : 'directory for systemd files')
option('htmldir', type : 'string', value : '', description : 'directory for HTML documentation')
option('systemctl', type : 'string', value : '/usr/bin/systemctl', description : 'path to systemctl binary')
option('nvme-tests', type : 'boolean', value : false, description: 'Run tests against real hardware')
option('docs', type : 'combo', choices : ['false', 'html', 'man', 'all'], description : 'install documentation')
option('docs-build', type : 'boolean', value : false, description : 'build documentation')
option('pdc-enabled', type: 'boolean', value : false, description : 'set default Persistent Discovery Controllers behavior')
option('json-c', type: 'feature', value: 'auto', description: 'JSON suppport')
  070701015D6E4A000081A4000003E80000006400000001642C0FB600017CCF000000000000004A00000000000000000000001B00000000nvme-cli/nvme-print-json.c    // SPDX-License-Identifier: GPL-2.0-or-later

#include <assert.h>
#include <errno.h>

#include "nvme-print-json.h"

#include "util/json.h"
#include "nvme.h"
#include "common.h"

static const uint8_t zero_uuid[16] = { 0 };

void json_nvme_id_ns(struct nvme_id_ns *ns, bool cap_only)
{
	char nguid_buf[2 * sizeof(ns->nguid) + 1],
		eui64_buf[2 * sizeof(ns->eui64) + 1];
	char *nguid = nguid_buf, *eui64 = eui64_buf;
	struct json_object *root;
	struct json_object *lbafs;
	int i;

	nvme_uint128_t nvmcap = le128_to_cpu(ns->nvmcap);

	root = json_create_object();

	if (!cap_only) {
		json_object_add_value_uint64(root, "nsze", le64_to_cpu(ns->nsze));
		json_object_add_value_uint64(root, "ncap", le64_to_cpu(ns->ncap));
		json_object_add_value_uint64(root, "nuse", le64_to_cpu(ns->nuse));
		json_object_add_value_int(root, "nsfeat", ns->nsfeat);
	}
	json_object_add_value_int(root, "nlbaf", ns->nlbaf);
	if (!cap_only)
		json_object_add_value_int(root, "flbas", ns->flbas);
	json_object_add_value_int(root, "mc", ns->mc);
	json_object_add_value_int(root, "dpc", ns->dpc);
	if (!cap_only) {
		json_object_add_value_int(root, "dps", ns->dps);
		json_object_add_value_int(root, "nmic", ns->nmic);
		json_object_add_value_int(root, "rescap", ns->rescap);
		json_object_add_value_int(root, "fpi", ns->fpi);
		json_object_add_value_int(root, "dlfeat", ns->dlfeat);
		json_object_add_value_int(root, "nawun", le16_to_cpu(ns->nawun));
		json_object_add_value_int(root, "nawupf", le16_to_cpu(ns->nawupf));
		json_object_add_value_int(root, "nacwu", le16_to_cpu(ns->nacwu));
		json_object_add_value_int(root, "nabsn", le16_to_cpu(ns->nabsn));
		json_object_add_value_int(root, "nabo", le16_to_cpu(ns->nabo));
		json_object_add_value_int(root, "nabspf", le16_to_cpu(ns->nabspf));
		json_object_add_value_int(root, "noiob", le16_to_cpu(ns->noiob));
		json_object_add_value_uint128(root, "nvmcap", nvmcap);
		json_object_add_value_int(root, "nsattr", ns->nsattr);
		json_object_add_value_int(root, "nvmsetid", le16_to_cpu(ns->nvmsetid));

		if (ns->nsfeat & 0x10) {
			json_object_add_value_int(root, "npwg", le16_to_cpu(ns->npwg));
			json_object_add_value_int(root, "npwa", le16_to_cpu(ns->npwa));
			json_object_add_value_int(root, "npdg", le16_to_cpu(ns->npdg));
			json_object_add_value_int(root, "npda", le16_to_cpu(ns->npda));
			json_object_add_value_int(root, "nows", le16_to_cpu(ns->nows));
		}

		json_object_add_value_int(root, "mssrl", le16_to_cpu(ns->mssrl));
		json_object_add_value_uint(root, "mcl", le32_to_cpu(ns->mcl));
		json_object_add_value_int(root, "msrc", ns->msrc);
	}
	json_object_add_value_int(root, "nulbaf", ns->nulbaf);

	if (!cap_only) {
		json_object_add_value_uint(root, "anagrpid", le32_to_cpu(ns->anagrpid));
		json_object_add_value_int(root, "endgid", le16_to_cpu(ns->endgid));

		memset(eui64, 0, sizeof(eui64_buf));
		for (i = 0; i < sizeof(ns->eui64); i++)
			eui64 += sprintf(eui64, "%02x", ns->eui64[i]);

		memset(nguid, 0, sizeof(nguid_buf));
		for (i = 0; i < sizeof(ns->nguid); i++)
			nguid += sprintf(nguid, "%02x", ns->nguid[i]);

		json_object_add_value_string(root, "eui64", eui64_buf);
		json_object_add_value_string(root, "nguid", nguid_buf);
	}

	lbafs = json_create_array();
	json_object_add_value_array(root, "lbafs", lbafs);

	for (i = 0; i <= ns->nlbaf; i++) {
		struct json_object *lbaf = json_create_object();

		json_object_add_value_int(lbaf, "ms",
			le16_to_cpu(ns->lbaf[i].ms));
		json_object_add_value_int(lbaf, "ds", ns->lbaf[i].ds);
		json_object_add_value_int(lbaf, "rp", ns->lbaf[i].rp);

		json_array_add_value_object(lbafs, lbaf);
	}

	json_print_object(root, NULL);
	printf("\n");
	json_free_object(root);
}

 void json_nvme_id_ctrl(struct nvme_id_ctrl *ctrl,
			void (*vs)(__u8 *vs, struct json_object *root))
{
	struct json_object *root;
	struct json_object *psds;

	nvme_uint128_t tnvmcap = le128_to_cpu(ctrl->tnvmcap);
	nvme_uint128_t unvmcap = le128_to_cpu(ctrl->unvmcap);
	nvme_uint128_t megcap = le128_to_cpu(ctrl->megcap);
	nvme_uint128_t maxdna = le128_to_cpu(ctrl->maxdna);

	char sn[sizeof(ctrl->sn) + 1], mn[sizeof(ctrl->mn) + 1],
		fr[sizeof(ctrl->fr) + 1], subnqn[sizeof(ctrl->subnqn) + 1];
	__u32 ieee = ctrl->ieee[2] << 16 | ctrl->ieee[1] << 8 | ctrl->ieee[0];

	int i;

	snprintf(sn, sizeof(sn), "%-.*s", (int)sizeof(ctrl->sn), ctrl->sn);
	snprintf(mn, sizeof(mn), "%-.*s", (int)sizeof(ctrl->mn), ctrl->mn);
	snprintf(fr, sizeof(fr), "%-.*s", (int)sizeof(ctrl->fr), ctrl->fr);
	snprintf(subnqn, sizeof(subnqn), "%-.*s", (int)sizeof(ctrl->subnqn), ctrl->subnqn);

	root = json_create_object();

	json_object_add_value_int(root, "vid", le16_to_cpu(ctrl->vid));
	json_object_add_value_int(root, "ssvid", le16_to_cpu(ctrl->ssvid));
	json_object_add_value_string(root, "sn", sn);
	json_object_add_value_string(root, "mn", mn);
	json_object_add_value_string(root, "fr", fr);
	json_object_add_value_int(root, "rab", ctrl->rab);
	json_object_add_value_int(root, "ieee", ieee);
	json_object_add_value_int(root, "cmic", ctrl->cmic);
	json_object_add_value_int(root, "mdts", ctrl->mdts);
	json_object_add_value_int(root, "cntlid", le16_to_cpu(ctrl->cntlid));
	json_object_add_value_uint(root, "ver", le32_to_cpu(ctrl->ver));
	json_object_add_value_uint(root, "rtd3r", le32_to_cpu(ctrl->rtd3r));
	json_object_add_value_uint(root, "rtd3e", le32_to_cpu(ctrl->rtd3e));
	json_object_add_value_uint(root, "oaes", le32_to_cpu(ctrl->oaes));
	json_object_add_value_uint(root, "ctratt", le32_to_cpu(ctrl->ctratt));
	json_object_add_value_int(root, "rrls", le16_to_cpu(ctrl->rrls));
	json_object_add_value_int(root, "cntrltype", ctrl->cntrltype);
	json_object_add_value_string(root, "fguid", util_uuid_to_string(ctrl->fguid));
	json_object_add_value_int(root, "crdt1", le16_to_cpu(ctrl->crdt1));
	json_object_add_value_int(root, "crdt2", le16_to_cpu(ctrl->crdt2));
	json_object_add_value_int(root, "crdt3", le16_to_cpu(ctrl->crdt3));
	json_object_add_value_int(root, "nvmsr", ctrl->nvmsr);
	json_object_add_value_int(root, "vwci", ctrl->vwci);
	json_object_add_value_int(root, "mec", ctrl->mec);
	json_object_add_value_int(root, "oacs", le16_to_cpu(ctrl->oacs));
	json_object_add_value_int(root, "acl", ctrl->acl);
	json_object_add_value_int(root, "aerl", ctrl->aerl);
	json_object_add_value_int(root, "frmw", ctrl->frmw);
	json_object_add_value_int(root, "lpa", ctrl->lpa);
	json_object_add_value_int(root, "elpe", ctrl->elpe);
	json_object_add_value_int(root, "npss", ctrl->npss);
	json_object_add_value_int(root, "avscc", ctrl->avscc);
	json_object_add_value_int(root, "apsta", ctrl->apsta);
	json_object_add_value_int(root, "wctemp", le16_to_cpu(ctrl->wctemp));
	json_object_add_value_int(root, "cctemp", le16_to_cpu(ctrl->cctemp));
	json_object_add_value_int(root, "mtfa", le16_to_cpu(ctrl->mtfa));
	json_object_add_value_uint(root, "hmpre", le32_to_cpu(ctrl->hmpre));
	json_object_add_value_uint(root, "hmmin", le32_to_cpu(ctrl->hmmin));
	json_object_add_value_uint128(root, "tnvmcap", tnvmcap);
	json_object_add_value_uint128(root, "unvmcap", unvmcap);
	json_object_add_value_uint(root, "rpmbs", le32_to_cpu(ctrl->rpmbs));
	json_object_add_value_int(root, "edstt", le16_to_cpu(ctrl->edstt));
	json_object_add_value_int(root, "dsto", ctrl->dsto);
	json_object_add_value_int(root, "fwug", ctrl->fwug);
	json_object_add_value_int(root, "kas", le16_to_cpu(ctrl->kas));
	json_object_add_value_int(root, "hctma", le16_to_cpu(ctrl->hctma));
	json_object_add_value_int(root, "mntmt", le16_to_cpu(ctrl->mntmt));
	json_object_add_value_int(root, "mxtmt", le16_to_cpu(ctrl->mxtmt));
	json_object_add_value_uint(root, "sanicap", le32_to_cpu(ctrl->sanicap));
	json_object_add_value_uint(root, "hmminds", le32_to_cpu(ctrl->hmminds));
	json_object_add_value_int(root, "hmmaxd", le16_to_cpu(ctrl->hmmaxd));
	json_object_add_value_int(root, "nsetidmax",
		le16_to_cpu(ctrl->nsetidmax));
	json_object_add_value_int(root, "endgidmax", le16_to_cpu(ctrl->endgidmax));
	json_object_add_value_int(root, "anatt",ctrl->anatt);
	json_object_add_value_int(root, "anacap", ctrl->anacap);
	json_object_add_value_uint(root, "anagrpmax",
		le32_to_cpu(ctrl->anagrpmax));
	json_object_add_value_uint(root, "nanagrpid",
		le32_to_cpu(ctrl->nanagrpid));
	json_object_add_value_uint(root, "pels", le32_to_cpu(ctrl->pels));
	json_object_add_value_int(root, "domainid", le16_to_cpu(ctrl->domainid));
	json_object_add_value_uint128(root, "megcap", megcap);
	json_object_add_value_int(root, "sqes", ctrl->sqes);
	json_object_add_value_int(root, "cqes", ctrl->cqes);
	json_object_add_value_int(root, "maxcmd", le16_to_cpu(ctrl->maxcmd));
	json_object_add_value_uint(root, "nn", le32_to_cpu(ctrl->nn));
	json_object_add_value_int(root, "oncs", le16_to_cpu(ctrl->oncs));
	json_object_add_value_int(root, "fuses", le16_to_cpu(ctrl->fuses));
	json_object_add_value_int(root, "fna", ctrl->fna);
	json_object_add_value_int(root, "vwc", ctrl->vwc);
	json_object_add_value_int(root, "awun", le16_to_cpu(ctrl->awun));
	json_object_add_value_int(root, "awupf", le16_to_cpu(ctrl->awupf));
	json_object_add_value_int(root, "icsvscc", ctrl->icsvscc);
	json_object_add_value_int(root, "nwpc", ctrl->nwpc);
	json_object_add_value_int(root, "acwu", le16_to_cpu(ctrl->acwu));
	json_object_add_value_int(root, "ocfs", le16_to_cpu(ctrl->ocfs));
	json_object_add_value_uint(root, "sgls", le32_to_cpu(ctrl->sgls));
	json_object_add_value_uint(root, "mnan", le32_to_cpu(ctrl->mnan));
	json_object_add_value_uint128(root, "maxdna", maxdna);
	json_object_add_value_uint(root, "maxcna", le32_to_cpu(ctrl->maxcna));

	if (strlen(subnqn))
		json_object_add_value_string(root, "subnqn", subnqn);

	json_object_add_value_uint(root, "ioccsz", le32_to_cpu(ctrl->ioccsz));
	json_object_add_value_uint(root, "iorcsz", le32_to_cpu(ctrl->iorcsz));
	json_object_add_value_int(root, "icdoff", le16_to_cpu(ctrl->icdoff));
	json_object_add_value_int(root, "fcatt", ctrl->fcatt);
	json_object_add_value_int(root, "msdbd", ctrl->msdbd);
	json_object_add_value_int(root, "ofcs", le16_to_cpu(ctrl->ofcs));

	psds = json_create_array();
	json_object_add_value_array(root, "psds", psds);

	for (i = 0; i <= ctrl->npss; i++) {
		struct json_object *psd = json_create_object();

		json_object_add_value_int(psd, "max_power",
			le16_to_cpu(ctrl->psd[i].mp));
		json_object_add_value_int(psd, "flags", ctrl->psd[i].flags);
		json_object_add_value_uint(psd, "entry_lat",
			le32_to_cpu(ctrl->psd[i].enlat));
		json_object_add_value_uint(psd, "exit_lat",
			le32_to_cpu(ctrl->psd[i].exlat));
		json_object_add_value_int(psd, "read_tput",
			ctrl->psd[i].rrt);
		json_object_add_value_int(psd, "read_lat",
			ctrl->psd[i].rrl);
		json_object_add_value_int(psd, "write_tput",
			ctrl->psd[i].rwt);
		json_object_add_value_int(psd, "write_lat",
			ctrl->psd[i].rwl);
		json_object_add_value_int(psd, "idle_power",
			le16_to_cpu(ctrl->psd[i].idlp));
		json_object_add_value_int(psd, "idle_scale",
			nvme_psd_power_scale(ctrl->psd[i].ips));
		json_object_add_value_int(psd, "active_power",
			le16_to_cpu(ctrl->psd[i].actp));
		json_object_add_value_int(psd, "active_power_work",
			ctrl->psd[i].apws & 0x7);
		json_object_add_value_int(psd, "active_scale",
			nvme_psd_power_scale(ctrl->psd[i].apws));

		json_array_add_value_object(psds, psd);
	}

	if(vs)
		vs(ctrl->vs, root);
	json_print_object(root, NULL);
	printf("\n");
	json_free_object(root);
}

void json_error_log(struct nvme_error_log_page *err_log, int entries)
{
	struct json_object *root;
	struct json_object *errors;
	int i;

	root = json_create_object();
	errors = json_create_array();
	json_object_add_value_array(root, "errors", errors);

	for (i = 0; i < entries; i++) {
		struct json_object *error = json_create_object();

		json_object_add_value_uint64(error, "error_count",
			le64_to_cpu(err_log[i].error_count));
		json_object_add_value_int(error, "sqid",
			le16_to_cpu(err_log[i].sqid));
		json_object_add_value_int(error, "cmdid",
			le16_to_cpu(err_log[i].cmdid));
		json_object_add_value_int(error, "status_field",
			le16_to_cpu(err_log[i].status_field >> 0x1));
		json_object_add_value_int(error, "phase_tag",
			le16_to_cpu(err_log[i].status_field & 0x1));
		json_object_add_value_int(error, "parm_error_location",
			le16_to_cpu(err_log[i].parm_error_location));
		json_object_add_value_uint64(error, "lba",
			le64_to_cpu(err_log[i].lba));
		json_object_add_value_uint(error, "nsid",
			le32_to_cpu(err_log[i].nsid));
		json_object_add_value_int(error, "vs", err_log[i].vs);
		json_object_add_value_int(error, "trtype", err_log[i].trtype);
		json_object_add_value_uint64(error, "cs",
			le64_to_cpu(err_log[i].cs));
		json_object_add_value_int(error, "trtype_spec_info",
			le16_to_cpu(err_log[i].trtype_spec_info));

		json_array_add_value_object(errors, error);
	}

	json_print_object(root, NULL);
	printf("\n");
	json_free_object(root);
}

void json_nvme_resv_report(struct nvme_resv_status *status,
			   int bytes, bool eds)
{
	struct json_object *root;
	struct json_object *rcs;
	int i, j, regctl, entries;

	regctl = status->regctl[0] | (status->regctl[1] << 8);

	root = json_create_object();

	json_object_add_value_uint(root, "gen", le32_to_cpu(status->gen));
	json_object_add_value_int(root, "rtype", status->rtype);
	json_object_add_value_int(root, "regctl", regctl);
	json_object_add_value_int(root, "ptpls", status->ptpls);

	rcs = json_create_array();
	/* check Extended Data Structure bit */
	if (!eds) {
		/*
		 * if status buffer was too small, don't loop past the end of
		 * the buffer
		 */
		entries = (bytes - 24) / 24;
		if (entries < regctl)
			regctl = entries;

		json_object_add_value_array(root, "regctls", rcs);
		for (i = 0; i < regctl; i++) {
			struct json_object *rc = json_create_object();

			json_object_add_value_int(rc, "cntlid",
				le16_to_cpu(status->regctl_ds[i].cntlid));
			json_object_add_value_int(rc, "rcsts",
				status->regctl_ds[i].rcsts);
			json_object_add_value_uint64(rc, "hostid",
				le64_to_cpu(status->regctl_ds[i].hostid));
			json_object_add_value_uint64(rc, "rkey",
				le64_to_cpu(status->regctl_ds[i].rkey));

			json_array_add_value_object(rcs, rc);
		}
	} else {
		char hostid[33];

		/* if status buffer was too small, don't loop past the end of the buffer */
		entries = (bytes - 64) / 64;
		if (entries < regctl)
			regctl = entries;

		json_object_add_value_array(root, "regctlext", rcs);
		for (i = 0; i < regctl; i++) {
			struct json_object *rc = json_create_object();

			json_object_add_value_int(rc, "cntlid",
				le16_to_cpu(status->regctl_eds[i].cntlid));
			json_object_add_value_int(rc, "rcsts",
				status->regctl_eds[i].rcsts);
			json_object_add_value_uint64(rc, "rkey",
				le64_to_cpu(status->regctl_eds[i].rkey));
			for (j = 0; j < 16; j++)
				sprintf(hostid + j * 2, "%02x",
					status->regctl_eds[i].hostid[j]);

			json_object_add_value_string(rc, "hostid", hostid);
			json_array_add_value_object(rcs, rc);
		}
	}

	json_print_object(root, NULL);
	printf("\n");
	json_free_object(root);
}

void json_fw_log(struct nvme_firmware_slot *fw_log, const char *devname)
{
	struct json_object *root;
	struct json_object *fwsi;
	char fmt[21];
	char str[32];
	int i;
	__le64 *frs;

	root = json_create_object();
	fwsi = json_create_object();

	json_object_add_value_int(fwsi, "Active Firmware Slot (afi)",
		fw_log->afi);
	for (i = 0; i < 7; i++) {
		if (fw_log->frs[i][0]) {
			snprintf(fmt, sizeof(fmt), "Firmware Rev Slot %d",
				i + 1);
			frs = (__le64 *)&fw_log->frs[i];
			snprintf(str, sizeof(str), "%"PRIu64" (%s)",
				le64_to_cpu(*frs),
			util_fw_to_string(fw_log->frs[i]));
			json_object_add_value_string(fwsi, fmt, str);
		}
	}
	json_object_add_value_object(root, devname, fwsi);

	json_print_object(root, NULL);
	printf("\n");
	json_free_object(root);
}

void json_changed_ns_list_log(struct nvme_ns_list *log,
			      const char *devname)
{
	struct json_object *root;
	struct json_object *nsi;
	char fmt[32];
	char str[32];
	__u32 nsid;
	int i;

	if (log->ns[0] == cpu_to_le32(0xffffffff))
		return;

	root = json_create_object();
	nsi = json_create_object();

	json_object_add_value_string(root, "Changed Namespace List Log",
		devname);

	for (i = 0; i < NVME_ID_NS_LIST_MAX; i++) {
		nsid = le32_to_cpu(log->ns[i]);

		if (nsid == 0)
			break;

		snprintf(fmt, sizeof(fmt), "[%4u]", i + 1);
		snprintf(str, sizeof(str), "%#x", nsid);
		json_object_add_value_string(nsi, fmt, str);
	}

	json_object_add_value_object(root, devname, nsi);
	json_print_object(root, NULL);
	printf("\n");

	json_free_object(root);
}

void json_endurance_log(struct nvme_endurance_group_log *endurance_group,
			__u16 group_id)
{
	struct json_object *root;

	nvme_uint128_t endurance_estimate =
		le128_to_cpu(endurance_group->endurance_estimate);
	nvme_uint128_t data_units_read =
		le128_to_cpu(endurance_group->data_units_read);
	nvme_uint128_t data_units_written =
		le128_to_cpu(endurance_group->data_units_written);
	nvme_uint128_t media_units_written =
		le128_to_cpu(endurance_group->media_units_written);
	nvme_uint128_t host_read_cmds =
		le128_to_cpu(endurance_group->host_read_cmds);
	nvme_uint128_t host_write_cmds =
		le128_to_cpu(endurance_group->host_write_cmds);
	nvme_uint128_t media_data_integrity_err =
		le128_to_cpu(endurance_group->media_data_integrity_err);
	nvme_uint128_t num_err_info_log_entries =
		le128_to_cpu(endurance_group->num_err_info_log_entries);

	root = json_create_object();

	json_object_add_value_int(root, "critical_warning",
		endurance_group->critical_warning);
	json_object_add_value_int(root, "avl_spare",
		endurance_group->avl_spare);
	json_object_add_value_int(root, "avl_spare_threshold",
		endurance_group->avl_spare_threshold);
	json_object_add_value_int(root, "percent_used",
		endurance_group->percent_used);
	json_object_add_value_uint128(root, "endurance_estimate",
		endurance_estimate);
	json_object_add_value_uint128(root, "data_units_read", data_units_read);
	json_object_add_value_uint128(root, "data_units_written",
		data_units_written);
	json_object_add_value_uint128(root, "media_units_written",
		media_units_written);
	json_object_add_value_uint128(root, "host_read_cmds", host_read_cmds);
	json_object_add_value_uint128(root, "host_write_cmds", host_write_cmds);
	json_object_add_value_uint128(root, "media_data_integrity_err",
		media_data_integrity_err);
	json_object_add_value_uint128(root, "num_err_info_log_entries",
		num_err_info_log_entries);

	json_print_object(root, NULL);
	printf("\n");
	json_free_object(root);
}

void json_smart_log(struct nvme_smart_log *smart, unsigned int nsid,
	enum nvme_print_flags flags)
{
	int c, human = flags & VERBOSE;
	struct json_object *root;
	char key[21];

	unsigned int temperature = ((smart->temperature[1] << 8) |
		smart->temperature[0]);

	nvme_uint128_t data_units_read = le128_to_cpu(smart->data_units_read);
	nvme_uint128_t data_units_written = le128_to_cpu(smart->data_units_written);
	nvme_uint128_t host_read_commands = le128_to_cpu(smart->host_reads);
	nvme_uint128_t host_write_commands = le128_to_cpu(smart->host_writes);
	nvme_uint128_t controller_busy_time = le128_to_cpu(smart->ctrl_busy_time);
	nvme_uint128_t power_cycles = le128_to_cpu(smart->power_cycles);
	nvme_uint128_t power_on_hours = le128_to_cpu(smart->power_on_hours);
	nvme_uint128_t unsafe_shutdowns = le128_to_cpu(smart->unsafe_shutdowns);
	nvme_uint128_t media_errors = le128_to_cpu(smart->media_errors);
	nvme_uint128_t num_err_log_entries = le128_to_cpu(smart->num_err_log_entries);

	root = json_create_object();

	if (human) {
		struct json_object *crt = json_create_object();

		json_object_add_value_int(crt, "value", smart->critical_warning);
		json_object_add_value_int(crt, "available_spare", smart->critical_warning & 0x01);
		json_object_add_value_int(crt, "temp_threshold", (smart->critical_warning & 0x02) >> 1);
		json_object_add_value_int(crt, "reliability_degraded", (smart->critical_warning & 0x04) >> 2);
		json_object_add_value_int(crt, "ro", (smart->critical_warning & 0x08) >> 3);
		json_object_add_value_int(crt, "vmbu_failed", (smart->critical_warning & 0x10) >> 4);
		json_object_add_value_int(crt, "pmr_ro", (smart->critical_warning & 0x20) >> 5);

		json_object_add_value_object(root, "critical_warning", crt);
	} else
		json_object_add_value_int(root, "critical_warning",
			smart->critical_warning);

	json_object_add_value_int(root, "temperature", temperature);
	json_object_add_value_int(root, "avail_spare", smart->avail_spare);
	json_object_add_value_int(root, "spare_thresh", smart->spare_thresh);
	json_object_add_value_int(root, "percent_used", smart->percent_used);
	json_object_add_value_int(root, "endurance_grp_critical_warning_summary",
		smart->endu_grp_crit_warn_sumry);
	json_object_add_value_uint128(root, "data_units_read", data_units_read);
	json_object_add_value_uint128(root, "data_units_written",
		data_units_written);
	json_object_add_value_uint128(root, "host_read_commands",
		host_read_commands);
	json_object_add_value_uint128(root, "host_write_commands",
		host_write_commands);
	json_object_add_value_uint128(root, "controller_busy_time",
		controller_busy_time);
	json_object_add_value_uint128(root, "power_cycles", power_cycles);
	json_object_add_value_uint128(root, "power_on_hours", power_on_hours);
	json_object_add_value_uint128(root, "unsafe_shutdowns", unsafe_shutdowns);
	json_object_add_value_uint128(root, "media_errors", media_errors);
	json_object_add_value_uint128(root, "num_err_log_entries",
		num_err_log_entries);
	json_object_add_value_uint(root, "warning_temp_time",
			le32_to_cpu(smart->warning_temp_time));
	json_object_add_value_uint(root, "critical_comp_time",
			le32_to_cpu(smart->critical_comp_time));

	for (c=0; c < 8; c++) {
		__s32 temp = le16_to_cpu(smart->temp_sensor[c]);

		if (temp == 0)
			continue;
		sprintf(key, "temperature_sensor_%d",c+1);
		json_object_add_value_int(root, key, temp);
	}

	json_object_add_value_uint(root, "thm_temp1_trans_count",
			le32_to_cpu(smart->thm_temp1_trans_count));
	json_object_add_value_uint(root, "thm_temp2_trans_count",
			le32_to_cpu(smart->thm_temp2_trans_count));
	json_object_add_value_uint(root, "thm_temp1_total_time",
			le32_to_cpu(smart->thm_temp1_total_time));
	json_object_add_value_uint(root, "thm_temp2_total_time",
			le32_to_cpu(smart->thm_temp2_total_time));

	json_print_object(root, NULL);
	printf("\n");
	json_free_object(root);
}

void json_ana_log(struct nvme_ana_log *ana_log, const char *devname)
{
	int offset = sizeof(struct nvme_ana_log);
	struct nvme_ana_log *hdr = ana_log;
	struct nvme_ana_group_desc *ana_desc;
	struct json_object *desc_list;
	struct json_object *ns_list;
	struct json_object *desc;
	struct json_object *nsid;
	struct json_object *root;
	size_t nsid_buf_size;
	void *base = ana_log;
	__u32 nr_nsids;
	int i, j;

	root = json_create_object();
	json_object_add_value_string(root,
			"Asymmetric Namespace Access Log for NVMe device",
			devname);
	json_object_add_value_uint64(root, "chgcnt",
			le64_to_cpu(hdr->chgcnt));
	json_object_add_value_uint(root, "ngrps", le16_to_cpu(hdr->ngrps));

	desc_list = json_create_array();
	for (i = 0; i < le16_to_cpu(ana_log->ngrps); i++) {
		desc = json_create_object();
		ana_desc = base + offset;
		nr_nsids = le32_to_cpu(ana_desc->nnsids);
		nsid_buf_size = nr_nsids * sizeof(__le32);

		offset += sizeof(*ana_desc);
		json_object_add_value_uint(desc, "grpid",
				le32_to_cpu(ana_desc->grpid));
		json_object_add_value_uint(desc, "nnsids",
				le32_to_cpu(ana_desc->nnsids));
		json_object_add_value_uint(desc, "chgcnt",
				le64_to_cpu(ana_desc->chgcnt));
		json_object_add_value_string(desc, "state",
				nvme_ana_state_to_string(ana_desc->state));

		ns_list = json_create_array();
		for (j = 0; j < le32_to_cpu(ana_desc->nnsids); j++) {
			nsid = json_create_object();
			json_object_add_value_uint(nsid, "nsid",
					le32_to_cpu(ana_desc->nsids[j]));
			json_array_add_value_object(ns_list, nsid);
		}
		json_object_add_value_array(desc, "NSIDS", ns_list);
		offset += nsid_buf_size;
		json_array_add_value_object(desc_list, desc);
	}

	json_object_add_value_array(root, "ANA DESC LIST ", desc_list);
	json_print_object(root, NULL);
	printf("\n");
	json_free_object(root);
}

void json_self_test_log(struct nvme_self_test_log *self_test, __u8 dst_entries)
{
	struct json_object *valid_attrs;
	struct json_object *root;
	struct json_object *valid;
	int i;
	__u32 num_entries;

	root = json_create_object();
	json_object_add_value_int(root, "Current Device Self-Test Operation",
		self_test->current_operation);
	json_object_add_value_int(root, "Current Device Self-Test Completion",
		self_test->completion);
	valid = json_create_array();

	num_entries = min(dst_entries, NVME_LOG_ST_MAX_RESULTS);
	for (i = 0; i < num_entries; i++) {
		valid_attrs = json_create_object();
		json_object_add_value_int(valid_attrs, "Self test result",
			self_test->result[i].dsts & 0xf);
		if ((self_test->result[i].dsts & 0xf) == 0xf)
			goto add;
		json_object_add_value_int(valid_attrs, "Self test code",
			self_test->result[i].dsts >> 4);
		json_object_add_value_int(valid_attrs, "Segment number",
			self_test->result[i].seg);
		json_object_add_value_int(valid_attrs, "Valid Diagnostic Information",
			self_test->result[i].vdi);
		json_object_add_value_uint64(valid_attrs, "Power on hours",
			le64_to_cpu(self_test->result[i].poh));
		if (self_test->result[i].vdi & NVME_ST_VALID_DIAG_INFO_NSID)
			json_object_add_value_uint(valid_attrs, "Namespace Identifier",
				le32_to_cpu(self_test->result[i].nsid));
		if (self_test->result[i].vdi & NVME_ST_VALID_DIAG_INFO_FLBA) {
			json_object_add_value_uint64(valid_attrs, "Failing LBA",
				le64_to_cpu(self_test->result[i].flba));
		}
		if (self_test->result[i].vdi & NVME_ST_VALID_DIAG_INFO_SCT)
			json_object_add_value_int(valid_attrs, "Status Code Type",
				self_test->result[i].sct);
		if (self_test->result[i].vdi & NVME_ST_VALID_DIAG_INFO_SC)
			json_object_add_value_int(valid_attrs, "Status Code",
				self_test->result[i].sc);
		json_object_add_value_int(valid_attrs, "Vendor Specific",
			(self_test->result[i].vs[1] << 8) |
			(self_test->result[i].vs[0]));
add:
		json_array_add_value_object(valid, valid_attrs);
	}
	json_object_add_value_array(root, "List of Valid Reports", valid);
	json_print_object(root, NULL);
	printf("\n");
	json_free_object(root);
}

struct json_object* json_effects_log(enum nvme_csi csi,
			     struct nvme_cmd_effects_log *effects_log)
{
	struct json_object *root;
	struct json_object *acs;
	struct json_object *iocs;
	unsigned int opcode;
	char key[128];
	__u32 effect;

	root = json_create_object();
	json_object_add_value_uint(root, "command_set_identifier", csi);

	acs = json_create_object();
	for (opcode = 0; opcode < 256; opcode++) {
		effect = le32_to_cpu(effects_log->acs[opcode]);
		if (effect & NVME_CMD_EFFECTS_CSUPP) {
			sprintf(key, "ACS_%u (%s)", opcode,
				nvme_cmd_to_string(1, opcode));
			json_object_add_value_uint(acs, key, effect);
		}
	}

	json_object_add_value_object(root, "admin_cmd_set", acs);

	iocs = json_create_object();
	for (opcode = 0; opcode < 256; opcode++) {
		effect = le32_to_cpu(effects_log->iocs[opcode]);
		if (effect & NVME_CMD_EFFECTS_CSUPP) {
			sprintf(key, "IOCS_%u (%s)", opcode,
				nvme_cmd_to_string(0, opcode));
			json_object_add_value_uint(iocs, key, effect);
		}
	}

	json_object_add_value_object(root, "io_cmd_set", iocs);
	return root;
}

void json_effects_log_list(struct list_head *list)
{
	struct json_object *json_list;
	nvme_effects_log_node_t *node;

	json_list = json_create_array();

	list_for_each(list, node, node) {
		struct json_object *json_page =
			json_effects_log(node->csi, &node->effects);
		json_array_add_value_object(json_list, json_page);
	}

	json_print_object(json_list, NULL);
	printf("\n");
	json_free_object(json_list);
}

void json_sanitize_log(struct nvme_sanitize_log_page *sanitize_log,
			      const char *devname)
{
	struct json_object *root;
	struct json_object *dev;
	struct json_object *sstat;
	const char *status_str;
	char str[128];
	__u16 status = le16_to_cpu(sanitize_log->sstat);

	root = json_create_object();
	dev = json_create_object();
	sstat = json_create_object();

	json_object_add_value_int(dev, "sprog",
		le16_to_cpu(sanitize_log->sprog));
	json_object_add_value_int(sstat, "global_erased",
		(status & NVME_SANITIZE_SSTAT_GLOBAL_DATA_ERASED) >> 8);
	json_object_add_value_int(sstat, "no_cmplted_passes",
		(status >> NVME_SANITIZE_SSTAT_COMPLETED_PASSES_SHIFT) &
			NVME_SANITIZE_SSTAT_COMPLETED_PASSES_MASK);

	status_str = get_sanitize_log_sstat_status_str(status);
	sprintf(str, "(%d) %s", status & NVME_SANITIZE_SSTAT_STATUS_MASK,
		status_str);
	json_object_add_value_string(sstat, "status", str);

	json_object_add_value_object(dev, "sstat", sstat);
	json_object_add_value_uint(dev, "cdw10_info",
		le32_to_cpu(sanitize_log->scdw10));
	json_object_add_value_uint(dev, "time_over_write",
		le32_to_cpu(sanitize_log->eto));
	json_object_add_value_uint(dev, "time_block_erase",
		le32_to_cpu(sanitize_log->etbe));
	json_object_add_value_uint(dev, "time_crypto_erase",
		le32_to_cpu(sanitize_log->etce));

	json_object_add_value_uint(dev, "time_over_write_no_dealloc",
		le32_to_cpu(sanitize_log->etond));
	json_object_add_value_uint(dev, "time_block_erase_no_dealloc",
		le32_to_cpu(sanitize_log->etbend));
	json_object_add_value_uint(dev, "time_crypto_erase_no_dealloc",
		le32_to_cpu(sanitize_log->etcend));

	json_object_add_value_object(root, devname, dev);
	json_print_object(root, NULL);
	printf("\n");
	json_free_object(root);
}

void json_predictable_latency_per_nvmset(
	struct nvme_nvmset_predictable_lat_log *plpns_log,
	__u16 nvmset_id)
{
	struct json_object *root;

	root = json_create_object();
	json_object_add_value_uint(root, "nvmset_id",
		le16_to_cpu(nvmset_id));
	json_object_add_value_uint(root, "status",
		plpns_log->status);
	json_object_add_value_uint(root, "event_type",
		le16_to_cpu(plpns_log->event_type));
	json_object_add_value_uint64(root, "dtwin_reads_typical",
		le64_to_cpu(plpns_log->dtwin_rt));
	json_object_add_value_uint64(root, "dtwin_writes_typical",
		le64_to_cpu(plpns_log->dtwin_wt));
	json_object_add_value_uint64(root, "dtwin_time_maximum",
		le64_to_cpu(plpns_log->dtwin_tmax));
	json_object_add_value_uint64(root, "ndwin_time_minimum_high",
		le64_to_cpu(plpns_log->ndwin_tmin_hi));
	json_object_add_value_uint64(root, "ndwin_time_minimum_low",
		le64_to_cpu(plpns_log->ndwin_tmin_lo));
	json_object_add_value_uint64(root, "dtwin_reads_estimate",
		le64_to_cpu(plpns_log->dtwin_re));
	json_object_add_value_uint64(root, "dtwin_writes_estimate",
		le64_to_cpu(plpns_log->dtwin_we));
	json_object_add_value_uint64(root, "dtwin_time_estimate",
		le64_to_cpu(plpns_log->dtwin_te));

	json_print_object(root, NULL);
	printf("\n");
	json_free_object(root);
}

void json_predictable_latency_event_agg_log(
	struct nvme_aggregate_predictable_lat_event *pea_log,
	__u64 log_entries)
{
	struct json_object *root;
	struct json_object *valid_attrs;
	struct json_object *valid;
	__u64 num_iter;
	__u64 num_entries;

	root = json_create_object();
	num_entries = le64_to_cpu(pea_log->num_entries);
	json_object_add_value_uint64(root, "num_entries_avail",
		num_entries);
	valid = json_create_array();

	num_iter = min(num_entries, log_entries);
	for (int i = 0; i < num_iter; i++) {
		valid_attrs = json_create_object();
		json_object_add_value_uint(valid_attrs, "entry",
			le16_to_cpu(pea_log->entries[i]));
		json_array_add_value_object(valid, valid_attrs);
	}
	json_object_add_value_array(root, "list_of_entries", valid);
	json_print_object(root, NULL);
	printf("\n");
	json_free_object(root);
}

void add_bitmap(int i, __u8 seb, struct json_object *root, int json_flag)
{
	char evt_str[50];
	char key[128];

	for (int bit = 0; bit < 8; bit++) {
		if (nvme_pel_event_to_string(bit + i * 8)) {
			if (json_flag == 1) {
				sprintf(key, "bitmap_%x", (bit + i * 8));
				if ((seb >> bit) & 0x1)
					snprintf(evt_str, sizeof(evt_str), "Support %s",
						nvme_pel_event_to_string(bit + i * 8));
				json_object_add_value_string(root, key, evt_str);
			} else {
				if (nvme_pel_event_to_string(bit + i * 8))
					if ((seb >> bit) & 0x1)
						printf("	Support %s\n",
							nvme_pel_event_to_string(bit + i * 8));
			}
		}
	}
}

void json_persistent_event_log(void *pevent_log_info, __u32 size)
{
	struct json_object *root;
	struct json_object *valid_attrs;
	struct json_object *valid;
	__u32 offset, por_info_len, por_info_list;
	__u64 *fw_rev;
	char key[128];
	char fw_str[50];

	struct nvme_smart_log *smart_event;
	struct nvme_fw_commit_event *fw_commit_event;
	struct nvme_time_stamp_change_event *ts_change_event;
	struct nvme_power_on_reset_info_list *por_event;
	struct nvme_nss_hw_err_event *nss_hw_err_event;
	struct nvme_change_ns_event *ns_event;
	struct nvme_format_nvm_start_event *format_start_event;
	struct nvme_format_nvm_compln_event *format_cmpln_event;
	struct nvme_sanitize_start_event *sanitize_start_event;
	struct nvme_sanitize_compln_event *sanitize_cmpln_event;
	struct nvme_thermal_exc_event *thermal_exc_event;
	struct nvme_persistent_event_log *pevent_log_head;
	struct nvme_persistent_event_entry *pevent_entry_head;

	root = json_create_object();
	valid = json_create_array();

	offset = sizeof(*pevent_log_head);
	if (size >= offset) {
		pevent_log_head = pevent_log_info;
		char sn[sizeof(pevent_log_head->sn) + 1],
			mn[sizeof(pevent_log_head->mn) + 1],
			subnqn[sizeof(pevent_log_head->subnqn) + 1];

		snprintf(sn, sizeof(sn), "%-.*s",
			(int)sizeof(pevent_log_head->sn), pevent_log_head->sn);
		snprintf(mn, sizeof(mn), "%-.*s",
			(int)sizeof(pevent_log_head->mn), pevent_log_head->mn);
		snprintf(subnqn, sizeof(subnqn), "%-.*s",
			(int)sizeof(pevent_log_head->subnqn), pevent_log_head->subnqn);

		json_object_add_value_uint(root, "log_id",
			pevent_log_head->lid);
		json_object_add_value_uint(root, "total_num_of_events",
			le32_to_cpu(pevent_log_head->tnev));
		json_object_add_value_uint64(root, "total_log_len",
			le64_to_cpu(pevent_log_head->tll));
		json_object_add_value_uint(root, "log_revision",
			pevent_log_head->rv);
		json_object_add_value_uint(root, "log_header_len",
			le16_to_cpu(pevent_log_head->lhl));
		json_object_add_value_uint64(root, "timestamp",
			le64_to_cpu(pevent_log_head->ts));
		json_object_add_value_uint128(root, "power_on_hours",
			le128_to_cpu(pevent_log_head->poh));
		json_object_add_value_uint64(root, "power_cycle_count",
			le64_to_cpu(pevent_log_head->pcc));
		json_object_add_value_uint(root, "pci_vid",
			le16_to_cpu(pevent_log_head->vid));
		json_object_add_value_uint(root, "pci_ssvid",
			le16_to_cpu(pevent_log_head->ssvid));
		json_object_add_value_string(root, "sn", sn);
		json_object_add_value_string(root, "mn", mn);
		json_object_add_value_string(root, "subnqn", subnqn);
		json_object_add_value_uint(root, "gen_number",
			le16_to_cpu(pevent_log_head->gen_number));
		json_object_add_value_uint(root, "rci",
			le32_to_cpu(pevent_log_head->rci));
		for (int i = 0; i < 32; i++) {
			if (pevent_log_head->seb[i] == 0)
				continue;
			add_bitmap(i, pevent_log_head->seb[i], root, 1);
		}
	} else {
		printf("No log data can be shown with this log len at least " \
			"512 bytes is required or can be 0 to read the complete "\
			"log page after context established\n");
		return;
	}
	for (int i = 0; i < le32_to_cpu(pevent_log_head->tnev); i++) {
		if (offset + sizeof(*pevent_entry_head) >= size)
			break;

		pevent_entry_head = pevent_log_info + offset;

		if ((offset + pevent_entry_head->ehl + 3 +
			le16_to_cpu(pevent_entry_head->el)) >= size)
			break;
		valid_attrs = json_create_object();

		json_object_add_value_uint(valid_attrs, "event_number", i);
		json_object_add_value_string(valid_attrs, "event_type",
			nvme_pel_event_to_string(pevent_entry_head->etype));
		json_object_add_value_uint(valid_attrs, "event_type_rev",
			pevent_entry_head->etype_rev);
		json_object_add_value_uint(valid_attrs, "event_header_len",
			pevent_entry_head->ehl);
		json_object_add_value_uint(valid_attrs, "event_header_additional_info",
			pevent_entry_head->ehai);
		json_object_add_value_uint(valid_attrs, "ctrl_id",
			le16_to_cpu(pevent_entry_head->cntlid));
		json_object_add_value_uint64(valid_attrs, "event_time_stamp",
			le64_to_cpu(pevent_entry_head->ets));
		json_object_add_value_uint(valid_attrs, "port_id",
			le16_to_cpu(pevent_entry_head->pelpid));
		json_object_add_value_uint(valid_attrs, "vu_info_len",
			le16_to_cpu(pevent_entry_head->vsil));
		json_object_add_value_uint(valid_attrs, "event_len",
			le16_to_cpu(pevent_entry_head->el));

		offset += pevent_entry_head->ehl + 3;

		switch (pevent_entry_head->etype) {
		case NVME_PEL_SMART_HEALTH_EVENT:
			smart_event = pevent_log_info + offset;
			unsigned int temperature = ((smart_event->temperature[1] << 8) |
				smart_event->temperature[0]);

			nvme_uint128_t data_units_read = le128_to_cpu(smart_event->data_units_read);
			nvme_uint128_t data_units_written = le128_to_cpu(smart_event->data_units_written);
			nvme_uint128_t host_read_commands = le128_to_cpu(smart_event->host_reads);
			nvme_uint128_t host_write_commands = le128_to_cpu(smart_event->host_writes);
			nvme_uint128_t controller_busy_time = le128_to_cpu(smart_event->ctrl_busy_time);
			nvme_uint128_t power_cycles = le128_to_cpu(smart_event->power_cycles);
			nvme_uint128_t power_on_hours = le128_to_cpu(smart_event->power_on_hours);
			nvme_uint128_t unsafe_shutdowns = le128_to_cpu(smart_event->unsafe_shutdowns);
			nvme_uint128_t media_errors = le128_to_cpu(smart_event->media_errors);
			nvme_uint128_t num_err_log_entries = le128_to_cpu(smart_event->num_err_log_entries);
			json_object_add_value_int(valid_attrs, "critical_warning",
				smart_event->critical_warning);

			json_object_add_value_int(valid_attrs, "temperature",
				temperature);
			json_object_add_value_int(valid_attrs, "avail_spare",
				smart_event->avail_spare);
			json_object_add_value_int(valid_attrs, "spare_thresh",
				smart_event->spare_thresh);
			json_object_add_value_int(valid_attrs, "percent_used",
				smart_event->percent_used);
			json_object_add_value_int(valid_attrs,
				"endurance_grp_critical_warning_summary",
				smart_event->endu_grp_crit_warn_sumry);
			json_object_add_value_uint128(valid_attrs, "data_units_read",
				data_units_read);
			json_object_add_value_uint128(valid_attrs, "data_units_written",
				data_units_written);
			json_object_add_value_uint128(valid_attrs, "host_read_commands",
				host_read_commands);
			json_object_add_value_uint128(valid_attrs, "host_write_commands",
				host_write_commands);
			json_object_add_value_uint128(valid_attrs, "controller_busy_time",
				controller_busy_time);
			json_object_add_value_uint128(valid_attrs, "power_cycles",
				power_cycles);
			json_object_add_value_uint128(valid_attrs, "power_on_hours",
				power_on_hours);
			json_object_add_value_uint128(valid_attrs, "unsafe_shutdowns",
				unsafe_shutdowns);
			json_object_add_value_uint128(valid_attrs, "media_errors",
				media_errors);
			json_object_add_value_uint128(valid_attrs, "num_err_log_entries",
				num_err_log_entries);
			json_object_add_value_uint(valid_attrs, "warning_temp_time",
					le32_to_cpu(smart_event->warning_temp_time));
			json_object_add_value_uint(valid_attrs, "critical_comp_time",
					le32_to_cpu(smart_event->critical_comp_time));

			for (int c = 0; c < 8; c++) {
				__s32 temp = le16_to_cpu(smart_event->temp_sensor[c]);
				if (temp == 0)
					continue;
				sprintf(key, "temperature_sensor_%d",c + 1);
				json_object_add_value_int(valid_attrs, key, temp);
			}

			json_object_add_value_uint(valid_attrs, "thm_temp1_trans_count",
					le32_to_cpu(smart_event->thm_temp1_trans_count));
			json_object_add_value_uint(valid_attrs, "thm_temp2_trans_count",
					le32_to_cpu(smart_event->thm_temp2_trans_count));
			json_object_add_value_uint(valid_attrs, "thm_temp1_total_time",
					le32_to_cpu(smart_event->thm_temp1_total_time));
			json_object_add_value_uint(valid_attrs, "thm_temp2_total_time",
					le32_to_cpu(smart_event->thm_temp2_total_time));
			break;
		case NVME_PEL_FW_COMMIT_EVENT:
			fw_commit_event = pevent_log_info + offset;
			snprintf(fw_str, sizeof(fw_str), "%"PRIu64" (%s)",
				le64_to_cpu(fw_commit_event->old_fw_rev),
				util_fw_to_string((char *)&fw_commit_event->old_fw_rev));
			json_object_add_value_string(valid_attrs, "old_fw_rev", fw_str);
			snprintf(fw_str, sizeof(fw_str), "%"PRIu64" (%s)",
				le64_to_cpu(fw_commit_event->new_fw_rev),
				util_fw_to_string((char *)&fw_commit_event->new_fw_rev));
			json_object_add_value_string(valid_attrs, "new_fw_rev", fw_str);
			json_object_add_value_uint(valid_attrs, "fw_commit_action",
				fw_commit_event->fw_commit_action);
			json_object_add_value_uint(valid_attrs, "fw_slot",
				fw_commit_event->fw_slot);
			json_object_add_value_uint(valid_attrs, "sct_fw",
				fw_commit_event->sct_fw);
			json_object_add_value_uint(valid_attrs, "sc_fw",
				fw_commit_event->sc_fw);
			json_object_add_value_uint(valid_attrs,
				"vu_assign_fw_commit_rc",
				le16_to_cpu(fw_commit_event->vndr_assign_fw_commit_rc));
			break;
		case NVME_PEL_TIMESTAMP_EVENT:
			ts_change_event = pevent_log_info + offset;
			json_object_add_value_uint64(valid_attrs, "prev_ts",
				le64_to_cpu(ts_change_event->previous_timestamp));
			json_object_add_value_uint64(valid_attrs,
				"ml_secs_since_reset",
				le64_to_cpu(ts_change_event->ml_secs_since_reset));
			break;
		case NVME_PEL_POWER_ON_RESET_EVENT:
			por_info_len = (le16_to_cpu(pevent_entry_head->el) -
				le16_to_cpu(pevent_entry_head->vsil) - sizeof(*fw_rev));

			por_info_list = por_info_len / sizeof(*por_event);

			fw_rev = pevent_log_info + offset;
			snprintf(fw_str, sizeof(fw_str), "%"PRIu64" (%s)",
				le64_to_cpu(*fw_rev),
				util_fw_to_string((char *)fw_rev));
			json_object_add_value_string(valid_attrs, "fw_rev", fw_str);
			for (int i = 0; i < por_info_list; i++) {
				por_event = pevent_log_info + offset +
					sizeof(*fw_rev) + i * sizeof(*por_event);
				json_object_add_value_uint(valid_attrs, "ctrl_id",
					le16_to_cpu(por_event->cid));
				json_object_add_value_uint(valid_attrs, "fw_act",
					por_event->fw_act);
				json_object_add_value_uint(valid_attrs, "op_in_prog",
					por_event->op_in_prog);
				json_object_add_value_uint(valid_attrs, "ctrl_power_cycle",
					le32_to_cpu(por_event->ctrl_power_cycle));
				json_object_add_value_uint64(valid_attrs, "power_on_ml_secs",
					le64_to_cpu(por_event->power_on_ml_seconds));
				json_object_add_value_uint64(valid_attrs, "ctrl_time_stamp",
					le64_to_cpu(por_event->ctrl_time_stamp));
			}
			break;
		case NVME_PEL_NSS_HW_ERROR_EVENT:
			nss_hw_err_event = pevent_log_info + offset;
			json_object_add_value_uint(valid_attrs, "nss_hw_err_code",
				le16_to_cpu(nss_hw_err_event->nss_hw_err_event_code));
			break;
		case NVME_PEL_CHANGE_NS_EVENT:
			ns_event = pevent_log_info + offset;
			json_object_add_value_uint(valid_attrs, "nsmgt_cdw10",
				le32_to_cpu(ns_event->nsmgt_cdw10));
			json_object_add_value_uint64(valid_attrs, "nsze",
				le64_to_cpu(ns_event->nsze));
			json_object_add_value_uint64(valid_attrs, "nscap",
				le64_to_cpu(ns_event->nscap));
			json_object_add_value_uint(valid_attrs, "flbas",
				ns_event->flbas);
			json_object_add_value_uint(valid_attrs, "dps",
				ns_event->dps);
			json_object_add_value_uint(valid_attrs, "nmic",
				ns_event->nmic);
			json_object_add_value_uint(valid_attrs, "ana_grp_id",
				le32_to_cpu(ns_event->ana_grp_id));
			json_object_add_value_uint(valid_attrs, "nvmset_id",
				le16_to_cpu(ns_event->nvmset_id));
			json_object_add_value_uint(valid_attrs, "nsid",
				le32_to_cpu(ns_event->nsid));
			break;
		case NVME_PEL_FORMAT_START_EVENT:
			format_start_event = pevent_log_info + offset;
			json_object_add_value_uint(valid_attrs, "nsid",
				le32_to_cpu(format_start_event->nsid));
			json_object_add_value_uint(valid_attrs, "fna",
				format_start_event->fna);
			json_object_add_value_uint(valid_attrs, "format_nvm_cdw10",
				le32_to_cpu(format_start_event->format_nvm_cdw10));
			break;
		case NVME_PEL_FORMAT_COMPLETION_EVENT:
			format_cmpln_event = pevent_log_info + offset;
			json_object_add_value_uint(valid_attrs, "nsid",
				le32_to_cpu(format_cmpln_event->nsid));
			json_object_add_value_uint(valid_attrs, "smallest_fpi",
				format_cmpln_event->smallest_fpi);
			json_object_add_value_uint(valid_attrs, "format_nvm_status",
				format_cmpln_event->format_nvm_status);
			json_object_add_value_uint(valid_attrs, "compln_info",
				le16_to_cpu(format_cmpln_event->compln_info));
			json_object_add_value_uint(valid_attrs, "status_field",
				le32_to_cpu(format_cmpln_event->status_field));
			break;
		case NVME_PEL_SANITIZE_START_EVENT:
			sanitize_start_event = pevent_log_info + offset;
			json_object_add_value_uint(valid_attrs, "SANICAP",
				le32_to_cpu(sanitize_start_event->sani_cap));
			json_object_add_value_uint(valid_attrs, "sani_cdw10",
				le32_to_cpu(sanitize_start_event->sani_cdw10));
			json_object_add_value_uint(valid_attrs, "sani_cdw11",
				le32_to_cpu(sanitize_start_event->sani_cdw11));
			break;
		case NVME_PEL_SANITIZE_COMPLETION_EVENT:
			sanitize_cmpln_event = pevent_log_info + offset;
			json_object_add_value_uint(valid_attrs, "sani_prog",
				le16_to_cpu(sanitize_cmpln_event->sani_prog));
			json_object_add_value_uint(valid_attrs, "sani_status",
				le16_to_cpu(sanitize_cmpln_event->sani_status));
			json_object_add_value_uint(valid_attrs, "cmpln_info",
				le16_to_cpu(sanitize_cmpln_event->cmpln_info));
			break;
		case NVME_PEL_THERMAL_EXCURSION_EVENT:
			thermal_exc_event = pevent_log_info + offset;
			json_object_add_value_uint(valid_attrs, "over_temp",
				thermal_exc_event->over_temp);
			json_object_add_value_uint(valid_attrs, "threshold",
				thermal_exc_event->threshold);
			break;
		}

		json_array_add_value_object(valid, valid_attrs);
		offset += le16_to_cpu(pevent_entry_head->el);
	}

	json_object_add_value_array(root, "list_of_event_entries", valid);
	json_print_object(root, NULL);
	printf("\n");
	json_free_object(root);
}

void json_endurance_group_event_agg_log(
	struct nvme_aggregate_predictable_lat_event *endurance_log,
	__u64 log_entries)
{
	struct json_object *root;
	struct json_object *valid_attrs;
	struct json_object *valid;

	root = json_create_object();
	json_object_add_value_uint64(root, "num_entries_avail",
		le64_to_cpu(endurance_log->num_entries));
	valid = json_create_array();

	for (int i = 0; i < log_entries; i++) {
		valid_attrs = json_create_object();
		json_object_add_value_uint(valid_attrs, "entry",
			le16_to_cpu(endurance_log->entries[i]));
		json_array_add_value_object(valid, valid_attrs);
	}
	json_object_add_value_array(root, "list_of_entries", valid);
	json_print_object(root, NULL);
	printf("\n");
	json_free_object(root);
}

void json_lba_status_log(void *lba_status)
{
	struct json_object *root;
	struct json_object *desc;
	struct json_object *element;
	struct json_object *desc_list;
	struct json_object *elements_list;
	struct nvme_lba_status_log *hdr;
	struct nvme_lbas_ns_element *ns_element;
	struct nvme_lba_rd *range_desc;
	int offset = sizeof(*hdr);
	__u32 num_lba_desc, num_elements;

	root = json_create_object();
	hdr = lba_status;
	json_object_add_value_uint(root, "lslplen", le32_to_cpu(hdr->lslplen));
	num_elements = le32_to_cpu(hdr->nlslne);
	json_object_add_value_uint(root, "nlslne", num_elements);
	json_object_add_value_uint(root, "estulb", le32_to_cpu(hdr->estulb));
	json_object_add_value_uint(root, "lsgc", le16_to_cpu(hdr->lsgc));

	elements_list = json_create_array();
	for (int ele = 0; ele < num_elements; ele++) {
		ns_element = lba_status + offset;
		element = json_create_object();
		json_object_add_value_uint(element, "neid",
			le32_to_cpu(ns_element->neid));
		num_lba_desc = le32_to_cpu(ns_element->nlrd);
		json_object_add_value_uint(element, "nlrd", num_lba_desc);
		json_object_add_value_uint(element, "ratype", ns_element->ratype);

		offset += sizeof(*ns_element);
		desc_list = json_create_array();
		if (num_lba_desc != 0xffffffff) {
			for (int i = 0; i < num_lba_desc; i++) {
				range_desc = lba_status + offset;
				desc = json_create_object();
				json_object_add_value_uint64(desc, "rslba",
					le64_to_cpu(range_desc->rslba));
				json_object_add_value_uint(desc, "rnlb",
					le32_to_cpu(range_desc->rnlb));

				offset += sizeof(*range_desc);
				json_array_add_value_object(desc_list, desc);
			}
		} else {
			printf("Number of LBA Range Descriptors (NLRD) set to %#x for " \
				"NS element %d", num_lba_desc, ele);
		}

		json_object_add_value_array(element, "descs", desc_list);
		json_array_add_value_object(elements_list, element);
	}

	json_object_add_value_array(root, "ns_elements", elements_list);
	json_print_object(root, NULL);
	printf("\n");
	json_free_object(root);
}

void json_resv_notif_log(struct nvme_resv_notification_log *resv)
{
	struct json_object *root;

	root = json_create_object();
	json_object_add_value_uint64(root, "count",
		le64_to_cpu(resv->lpc));
	json_object_add_value_uint(root, "rn_log_type",
		resv->rnlpt);
	json_object_add_value_uint(root, "num_logs",
		resv->nalp);
	json_object_add_value_uint(root, "nsid",
		le32_to_cpu(resv->nsid));

	json_print_object(root, NULL);
	printf("\n");
	json_free_object(root);
}

void json_fid_support_effects_log(struct nvme_fid_supported_effects_log *fid_log)
{
	struct json_object *root;
	struct json_object *fids;
	struct json_object *fids_list;
	unsigned int fid;
	char key[128];
	__u32 fid_support;

	root = json_create_object();
	fids_list = json_create_array();
	for (fid = 0; fid < 256; fid++) {
		fid_support = le32_to_cpu(fid_log->fid_support[fid]);
		if (fid_support & NVME_FID_SUPPORTED_EFFECTS_FSUPP) {
			fids = json_create_object();
			sprintf(key, "fid_%u", fid);
			json_object_add_value_uint(fids, key, fid_support);
			json_array_add_value_object(fids_list, fids);
		}
	}

	json_object_add_value_object(root, "fid_support", fids_list);
	json_print_object(root, NULL);
	printf("\n");
	json_free_object(root);
}

void json_mi_cmd_support_effects_log(struct nvme_mi_cmd_supported_effects_log *mi_cmd_log)
{
	struct json_object *root;
	struct json_object *mi_cmds;
	struct json_object *mi_cmds_list;
	unsigned int mi_cmd;
	char key[128];
	__u32 mi_cmd_support;

	root = json_create_object();
	mi_cmds_list = json_create_array();
	for (mi_cmd = 0; mi_cmd < 256; mi_cmd++) {
		mi_cmd_support = le32_to_cpu(mi_cmd_log->mi_cmd_support[mi_cmd]);
		if (mi_cmd_support & NVME_MI_CMD_SUPPORTED_EFFECTS_CSUPP) {
			mi_cmds = json_create_object();
			sprintf(key, "mi_cmd_%u", mi_cmd);
			json_object_add_value_uint(mi_cmds, key, mi_cmd_support);
			json_array_add_value_object(mi_cmds_list, mi_cmds);
		}
	}

	json_object_add_value_object(root, "mi_command_support", mi_cmds_list);
	json_print_object(root, NULL);
	printf("\n");

	json_free_object(root);
}

void json_boot_part_log(void *bp_log)
{
	struct nvme_boot_partition *hdr;
	struct json_object *root;

	hdr = bp_log;
	root = json_create_object();

	json_object_add_value_uint(root, "count", hdr->lid);
	json_object_add_value_uint(root, "abpid",
		(le32_to_cpu(hdr->bpinfo) >> 31) & 0x1);
	json_object_add_value_uint(root, "bpsz",
		le32_to_cpu(hdr->bpinfo) & 0x7fff);

	json_print_object(root, NULL);
	printf("\n");
	json_free_object(root);
}

void json_media_unit_stat_log(struct nvme_media_unit_stat_log *mus)
{
	struct json_object *root;
	struct json_object *entries;
	struct json_object *entry;
	int i;

	root = json_create_object();
	entries = json_create_array();

	json_object_add_value_uint(root, "nmu", le16_to_cpu(mus->nmu));
	json_object_add_value_uint(root, "cchans", le16_to_cpu(mus->cchans));
	json_object_add_value_uint(root, "sel_config", le16_to_cpu(mus->sel_config));

	for (i = 0; i < mus->nmu; i++) {
		entry = json_create_object();
		json_object_add_value_uint(entry, "muid", le16_to_cpu(mus->mus_desc[i].muid));
		json_object_add_value_uint(entry, "domainid", le16_to_cpu(mus->mus_desc[i].domainid));
		json_object_add_value_uint(entry, "endgid", le16_to_cpu(mus->mus_desc[i].endgid));
		json_object_add_value_uint(entry, "nvmsetid", le16_to_cpu(mus->mus_desc[i].nvmsetid));
		json_object_add_value_uint(entry, "cap_adj_fctr", le16_to_cpu(mus->mus_desc[i].cap_adj_fctr));
		json_object_add_value_uint(entry, "avl_spare", mus->mus_desc[i].avl_spare);
		json_object_add_value_uint(entry, "percent_used", mus->mus_desc[i].percent_used);
		json_object_add_value_uint(entry, "mucs", mus->mus_desc[i].mucs);
		json_object_add_value_uint(entry, "cio", mus->mus_desc[i].cio);
		json_array_add_value_object(entries, entry);
	}

	json_object_add_value_array(root, "mus_list", entries);
	json_print_object(root, NULL);
	printf("\n");
	json_free_object(root);
}

void json_supported_cap_config_log(
	struct nvme_supported_cap_config_list_log *cap_log)
{
	struct json_object *root;
	struct json_object *cap_list;
	struct json_object *capacity;
	struct json_object *end_list;
	struct json_object *set_list;
	struct json_object *set;
	struct json_object *chan_list;
	struct json_object *channel;
	struct json_object *media_list;
	struct json_object *media;
	struct json_object *endurance;
	struct nvme_end_grp_chan_desc *chan_desc;
	int i, j, k, l, m, sccn, egcn, egsets, egchans, chmus;

	root = json_create_object();

	json_object_add_value_uint(root, "sccn", cap_log->sccn);
	cap_list = json_create_array();
	sccn = cap_log->sccn;
	for (i = 0; i < sccn; i++) {
		capacity = json_create_object();
		json_object_add_value_uint(capacity, "cap_config_id",
			le16_to_cpu(cap_log->cap_config_desc[i].cap_config_id));
		json_object_add_value_uint(capacity, "domainid",
			le16_to_cpu(cap_log->cap_config_desc[i].domainid));
		json_object_add_value_uint(capacity, "egcn",
			le16_to_cpu(cap_log->cap_config_desc[i].egcn));
		end_list = json_create_array();
		egcn = le16_to_cpu(cap_log->cap_config_desc[i].egcn);
		for (j = 0; j < egcn; j++) {
			endurance = json_create_object();
			json_object_add_value_uint(endurance, "endgid",
				le16_to_cpu(cap_log->cap_config_desc[i].egcd[j].endgid));
			json_object_add_value_uint(endurance, "cap_adj_factor",
				le16_to_cpu(cap_log->cap_config_desc[i].egcd[j].cap_adj_factor));
			json_object_add_value_uint128(endurance, "tegcap",
				le128_to_cpu(cap_log->cap_config_desc[i].egcd[j].tegcap));
			json_object_add_value_uint128(endurance, "segcap",
				le128_to_cpu(cap_log->cap_config_desc[i].egcd[j].segcap));
			json_object_add_value_uint(endurance, "egsets",
				le16_to_cpu(cap_log->cap_config_desc[i].egcd[j].egsets));
			egsets = le16_to_cpu(cap_log->cap_config_desc[i].egcd[j].egsets);
			set_list = json_create_array();
			for (k = 0; k < egsets; k++) {
				set = json_create_object();
				json_object_add_value_uint(set, "nvmsetid",
					le16_to_cpu(cap_log->cap_config_desc[i].egcd[j].nvmsetid[k]));
				json_array_add_value_object(set_list, set);
			}
			chan_desc = (struct nvme_end_grp_chan_desc *) \
					((cap_log->cap_config_desc[i].egcd[j].nvmsetid[0]) * (sizeof(__u16)*egsets));
			egchans = le16_to_cpu(chan_desc->egchans);
			json_object_add_value_uint(endurance, "egchans",
				le16_to_cpu(chan_desc->egchans));
			chan_list = json_create_array();
			for (l = 0; l < egchans; l++) {
				channel = json_create_object();
				json_object_add_value_uint(channel, "chanid",
					le16_to_cpu(chan_desc->chan_config_desc[l].chanid));
				json_object_add_value_uint(channel, "chmus",
					le16_to_cpu(chan_desc->chan_config_desc[l].chmus));
				chmus = le16_to_cpu(chan_desc->chan_config_desc[l].chmus);
				media_list = json_create_array();
				for (m = 0; m < chmus; m++) {
					media = json_create_object();
					json_object_add_value_uint(media, "chanid",
						le16_to_cpu(chan_desc->chan_config_desc[l].mu_config_desc[m].muid));
					json_object_add_value_uint(media, "chmus",
						le16_to_cpu(chan_desc->chan_config_desc[l].mu_config_desc[m].mudl));
					json_array_add_value_object(media_list, media);
				}
				json_object_add_value_array(channel, "Media Descriptor", media_list);
				json_array_add_value_object(chan_list, channel);
			}
			json_object_add_value_array(endurance, "Channel Descriptor", chan_list);
			json_object_add_value_array(endurance, "NVM Set IDs", set_list);
			json_array_add_value_object(end_list, endurance);
		}
		json_object_add_value_array(capacity, "Endurance Descriptor", end_list);
		json_array_add_value_object(cap_list, capacity);
	}

	json_object_add_value_array(root, "Capacity Descriptor", cap_list);
	json_print_object(root, NULL);
	printf("\n");
	json_free_object(root);
}

void json_nvme_fdp_configs(struct nvme_fdp_config_log *log, size_t len)
{
	struct json_object *root, *obj_configs;
	uint16_t n;

	void *p = log->configs;

	root = json_create_object();
	obj_configs = json_create_array();

	n = le16_to_cpu(log->n);

	json_object_add_value_uint(root, "n", n);

	for (int i = 0; i < n + 1; i++) {
		struct nvme_fdp_config_desc *config = p;

		struct json_object *obj_config = json_create_object();
		struct json_object *obj_ruhs = json_create_array();

		json_object_add_value_uint(obj_config, "fdpa", config->fdpa);
		json_object_add_value_uint(obj_config, "vss", config->vss);
		json_object_add_value_uint(obj_config, "nrg", le32_to_cpu(config->nrg));
		json_object_add_value_uint(obj_config, "nruh", le16_to_cpu(config->nruh));
		json_object_add_value_uint(obj_config, "nnss", le32_to_cpu(config->nnss));
		json_object_add_value_uint64(obj_config, "runs", le64_to_cpu(config->runs));
		json_object_add_value_uint(obj_config, "erutl", le32_to_cpu(config->erutl));

		for (int j = 0; j < le16_to_cpu(config->nruh); j++) {
			struct nvme_fdp_ruh_desc *ruh = &config->ruhs[j];

			struct json_object *obj_ruh = json_create_object();

			json_object_add_value_uint(obj_ruh, "ruht", ruh->ruht);

			json_array_add_value_object(obj_ruhs, obj_ruh);
		}

		json_array_add_value_object(obj_configs, obj_config);

		p += config->size;
	}

	json_object_add_value_array(root, "configs", obj_configs);

	json_print_object(root, NULL);
	printf("\n");

	json_free_object(root);
}

void json_nvme_fdp_usage(struct nvme_fdp_ruhu_log *log, size_t len)
{
	struct json_object *root, *obj_ruhus;
	uint16_t nruh;

	root = json_create_object();
	obj_ruhus = json_create_array();

	nruh = le16_to_cpu(log->nruh);

	json_object_add_value_uint(root, "nruh", nruh);

	for (int i = 0; i < nruh; i++) {
		struct nvme_fdp_ruhu_desc *ruhu = &log->ruhus[i];

		struct json_object *obj_ruhu = json_create_object();

		json_object_add_value_uint(obj_ruhu, "ruha", ruhu->ruha);

		json_array_add_value_object(obj_ruhus, obj_ruhu);
	}

	json_object_add_value_array(root, "ruhus", obj_ruhus);

	json_print_object(root, NULL);
	printf("\n");

	json_free_object(root);
}

void json_nvme_fdp_stats(struct nvme_fdp_stats_log *log)
{
	struct json_object *root = json_create_object();

	json_object_add_value_uint128(root, "hbmw", le128_to_cpu(log->hbmw));
	json_object_add_value_uint128(root, "mbmw", le128_to_cpu(log->mbmw));
	json_object_add_value_uint128(root, "mbe", le128_to_cpu(log->mbe));

	json_print_object(root, NULL);
	printf("\n");

	json_free_object(root);
}

void json_nvme_fdp_events(struct nvme_fdp_events_log *log)
{
	struct json_object *root, *obj_events;
	uint32_t n;

	root = json_create_object();
	obj_events = json_create_array();

	n = le32_to_cpu(log->n);

	json_object_add_value_uint(root, "n", n);

	for (unsigned int i = 0; i < n; i++) {
		struct nvme_fdp_event *event = &log->events[i];

		struct json_object *obj_event = json_create_object();

		json_object_add_value_uint(obj_event, "type", event->type);
		json_object_add_value_uint(obj_event, "fdpef", event->flags);
		json_object_add_value_uint(obj_event, "pid", le16_to_cpu(event->pid));
		json_object_add_value_uint64(obj_event, "timestamp", le64_to_cpu(*(uint64_t *)&event->ts));
		json_object_add_value_uint(obj_event, "nsid", le32_to_cpu(event->nsid));

		if (event->type == NVME_FDP_EVENT_REALLOC) {
			struct nvme_fdp_event_realloc *mr;
			mr = (struct nvme_fdp_event_realloc *)&event->type_specific;

			json_object_add_value_uint(obj_event, "nlbam", le16_to_cpu(mr->nlbam));

			if (mr->flags & NVME_FDP_EVENT_REALLOC_F_LBAV)
				json_object_add_value_uint64(obj_event, "lba", le64_to_cpu(mr->lba));
		}

		json_array_add_value_object(obj_events, obj_event);
	}

	json_object_add_value_array(root, "events", obj_events);

	json_print_object(root, NULL);
	printf("\n");

	json_free_object(root);
}

void json_nvme_fdp_ruh_status(struct nvme_fdp_ruh_status *status, size_t len)
{
	struct json_object *root, *obj_ruhss;
	uint16_t nruhsd;

	root = json_create_object();
	obj_ruhss = json_create_array();

	nruhsd = le16_to_cpu(status->nruhsd);

	json_object_add_value_uint(root, "nruhsd", nruhsd);

	for (unsigned int i = 0; i < nruhsd; i++) {
		struct nvme_fdp_ruh_status_desc *ruhs = &status->ruhss[i];

		struct json_object *obj_ruhs = json_create_object();

		json_object_add_value_uint(obj_ruhs, "pid", le16_to_cpu(ruhs->pid));
		json_object_add_value_uint(obj_ruhs, "ruhid", le16_to_cpu(ruhs->ruhid));
		json_object_add_value_uint(obj_ruhs, "earutr", le32_to_cpu(ruhs->earutr));
		json_object_add_value_uint64(obj_ruhs, "ruamw", le64_to_cpu(ruhs->ruamw));

		json_array_add_value_object(obj_ruhss, obj_ruhs);
	}

	json_object_add_value_array(root, "ruhss", obj_ruhss);

	json_print_object(root, NULL);
	printf("\n");

	json_free_object(root);
}

static unsigned int json_print_nvme_subsystem_multipath(nvme_subsystem_t s,
							bool show_ana,
						        json_object *paths)
{
	nvme_ns_t n;
	nvme_path_t p;
	unsigned int i = 0;

	n = nvme_subsystem_first_ns(s);
	if (!n)
		return 0;

	nvme_namespace_for_each_path(n, p) {
		struct json_object *path_attrs;
		nvme_ctrl_t c = nvme_path_get_ctrl(p);

		path_attrs = json_create_object();
		json_object_add_value_string(path_attrs, "Name",
					     nvme_ctrl_get_name(c));
		json_object_add_value_string(path_attrs, "Transport",
					     nvme_ctrl_get_transport(c));
		json_object_add_value_string(path_attrs, "Address",
					     nvme_ctrl_get_address(c));
		json_object_add_value_string(path_attrs, "State",
					     nvme_ctrl_get_state(c));
		if (show_ana)
			json_object_add_value_string(path_attrs, "ANAState",
						     nvme_path_get_ana_state(p));
		json_array_add_value_object(paths, path_attrs);
		i++;
	}

	return i;
}

static void json_print_nvme_subsystem_ctrls(nvme_subsystem_t s,
					    json_object *paths)
{
	nvme_ctrl_t c;

	nvme_subsystem_for_each_ctrl(s, c) {
		struct json_object *path_attrs;

		path_attrs = json_create_object();
		json_object_add_value_string(path_attrs, "Name",
					     nvme_ctrl_get_name(c));
		json_object_add_value_string(path_attrs, "Transport",
					     nvme_ctrl_get_transport(c));
		json_object_add_value_string(path_attrs, "Address",
					     nvme_ctrl_get_address(c));
		json_object_add_value_string(path_attrs, "State",
					     nvme_ctrl_get_state(c));
		json_array_add_value_object(paths, path_attrs);
	}
}

void json_print_nvme_subsystem_list(nvme_root_t r, bool show_ana)
{
	struct json_object *host_attrs, *subsystem_attrs;
	struct json_object *subsystems, *paths;
	struct json_object *root;
	nvme_host_t h;

	root = json_create_array();

	nvme_for_each_host(r, h) {
		nvme_subsystem_t s;
		const char *hostid;

		host_attrs = json_create_object();
		json_object_add_value_string(host_attrs, "HostNQN",
					     nvme_host_get_hostnqn(h));
		hostid = nvme_host_get_hostid(h);
		if (hostid)
			json_object_add_value_string(host_attrs, "HostID", hostid);
		subsystems = json_create_array();
		nvme_for_each_subsystem(h, s) {
			subsystem_attrs = json_create_object();
			json_object_add_value_string(subsystem_attrs, "Name",
						     nvme_subsystem_get_name(s));
			json_object_add_value_string(subsystem_attrs, "NQN",
						     nvme_subsystem_get_nqn(s));

			json_array_add_value_object(subsystems, subsystem_attrs);
			paths = json_create_array();

			if (!json_print_nvme_subsystem_multipath(s, show_ana, paths))
				json_print_nvme_subsystem_ctrls(s, paths);

			json_object_add_value_array(subsystem_attrs, "Paths",
						    paths);
		}
		json_object_add_value_array(host_attrs, "Subsystems", subsystems);
		json_array_add_value_object(root, host_attrs);
	}
	json_print_object(root, NULL);
	printf("\n");
	json_free_object(root);
}

void json_ctrl_registers(void *bar)
{
	uint64_t cap, asq, acq, bpmbl, cmbmsc;
	uint32_t vs, intms, intmc, cc, csts, nssr, crto, aqa, cmbsz, cmbloc,
		bpinfo, bprsel, cmbsts, pmrcap, pmrctl, pmrsts, pmrebs, pmrswtp,
		pmrmscl, pmrmscu;
	struct json_object *root;

	cap = mmio_read64(bar + NVME_REG_CAP);
	vs = mmio_read32(bar + NVME_REG_VS);
	intms = mmio_read32(bar + NVME_REG_INTMS);
	intmc = mmio_read32(bar + NVME_REG_INTMC);
	cc = mmio_read32(bar + NVME_REG_CC);
	csts = mmio_read32(bar + NVME_REG_CSTS);
	nssr = mmio_read32(bar + NVME_REG_NSSR);
	crto = mmio_read32(bar + NVME_REG_CRTO);
	aqa = mmio_read32(bar + NVME_REG_AQA);
	asq = mmio_read64(bar + NVME_REG_ASQ);
	acq = mmio_read64(bar + NVME_REG_ACQ);
	cmbloc = mmio_read32(bar + NVME_REG_CMBLOC);
	cmbsz = mmio_read32(bar + NVME_REG_CMBSZ);
	bpinfo = mmio_read32(bar + NVME_REG_BPINFO);
	bprsel = mmio_read32(bar + NVME_REG_BPRSEL);
	bpmbl = mmio_read64(bar + NVME_REG_BPMBL);
	cmbmsc = mmio_read64(bar + NVME_REG_CMBMSC);
	cmbsts = mmio_read32(bar + NVME_REG_CMBSTS);
	pmrcap = mmio_read32(bar + NVME_REG_PMRCAP);
	pmrctl = mmio_read32(bar + NVME_REG_PMRCTL);
	pmrsts = mmio_read32(bar + NVME_REG_PMRSTS);
	pmrebs = mmio_read32(bar + NVME_REG_PMREBS);
	pmrswtp = mmio_read32(bar + NVME_REG_PMRSWTP);
	pmrmscl = mmio_read32(bar + NVME_REG_PMRMSCL);
	pmrmscu = mmio_read32(bar + NVME_REG_PMRMSCU);

	root = json_create_object();
	json_object_add_value_uint64(root, "cap", cap);
	json_object_add_value_int(root, "vs", vs);
	json_object_add_value_int(root, "intms", intms);
	json_object_add_value_int(root, "intmc", intmc);
	json_object_add_value_int(root, "cc", cc);
	json_object_add_value_int(root, "csts", csts);
	json_object_add_value_int(root, "nssr", nssr);
	json_object_add_value_int(root, "crto", crto);
	json_object_add_value_int(root, "aqa", aqa);
	json_object_add_value_uint64(root, "asq", asq);
	json_object_add_value_uint64(root, "acq", acq);
	json_object_add_value_int(root, "cmbloc", cmbloc);
	json_object_add_value_int(root, "cmbsz", cmbsz);
	json_object_add_value_int(root, "bpinfo", bpinfo);
	json_object_add_value_int(root, "bprsel", bprsel);
	json_object_add_value_uint64(root, "bpmbl", bpmbl);
	json_object_add_value_uint64(root, "cmbmsc", cmbmsc);
	json_object_add_value_int(root, "cmbsts", cmbsts);
	json_object_add_value_int(root, "pmrcap", pmrcap);
	json_object_add_value_int(root, "pmrctl", pmrctl);
	json_object_add_value_int(root, "pmrsts", pmrsts);
	json_object_add_value_int(root, "pmrebs", pmrebs);
	json_object_add_value_int(root, "pmrswtp", pmrswtp);
	json_object_add_value_uint(root, "pmrmscl", pmrmscl);
	json_object_add_value_uint(root, "pmrmscu", pmrmscu);
	json_print_object(root, NULL);
	printf("\n");
	json_free_object(root);
}

static void d_json(unsigned char *buf, int len, int width, int group,
	    struct json_object *array)
{
	int i, line_done = 0;
	char ascii[32 + 1];
	assert(width < sizeof(ascii));

	for (i = 0; i < len; i++) {
		line_done = 0;
		ascii[i % width] = (buf[i] >= '!' && buf[i] <= '~') ? buf[i] : '.';
		if (((i + 1) % width) == 0) {
			ascii[i % width + 1] = '\0';
			json_array_add_value_string(array, ascii);
			line_done = 1;
		}
	}
	if (!line_done) {
		ascii[i % width + 1] = '\0';
		json_array_add_value_string(array, ascii);
	}
}

void json_nvme_cmd_set_independent_id_ns(
	struct nvme_id_independent_id_ns *ns)
{
	struct json_object *root;
	root = json_create_object();

	json_object_add_value_int(root, "nsfeat", ns->nsfeat);
	json_object_add_value_int(root, "nmic", ns->nmic);
	json_object_add_value_int(root, "rescap", ns->rescap);
	json_object_add_value_int(root, "fpi", ns->fpi);
	json_object_add_value_uint(root, "anagrpid", le32_to_cpu(ns->anagrpid));
	json_object_add_value_int(root, "nsattr", ns->nsattr);
	json_object_add_value_int(root, "nvmsetid", le16_to_cpu(ns->nvmsetid));
	json_object_add_value_int(root, "endgid", le16_to_cpu(ns->endgid));
	json_object_add_value_int(root, "nstat", ns->nstat);

	json_print_object(root, NULL);
	printf("\n");
	json_free_object(root);
}

void json_nvme_id_ns_descs(void *data)
{
	/* large enough to hold uuid str (37) or nguid str (32) + zero byte */
	char json_str[40];
	char *json_str_p;

	union {
		__u8 eui64[NVME_NIDT_EUI64_LEN];
		__u8 nguid[NVME_NIDT_NGUID_LEN];
		__u8 uuid[NVME_UUID_LEN];
		__u8 csi;
	} desc;

	struct json_object *root;
	struct json_object *json_array = NULL;

	off_t off;
	int pos, len = 0;
	int i;

	for (pos = 0; pos < NVME_IDENTIFY_DATA_SIZE; pos += len) {
		struct nvme_ns_id_desc *cur = data + pos;
		const char *nidt_name = NULL;

		if (cur->nidl == 0)
			break;

		memset(json_str, 0, sizeof(json_str));
		json_str_p = json_str;
		off = pos + sizeof(*cur);

		switch (cur->nidt) {
		case NVME_NIDT_EUI64:
			memcpy(desc.eui64, data + off, sizeof(desc.eui64));
			for (i = 0; i < sizeof(desc.eui64); i++)
				json_str_p += sprintf(json_str_p, "%02x", desc.eui64[i]);
			len = sizeof(desc.eui64);
			nidt_name = "eui64";
			break;

		case NVME_NIDT_NGUID:
			memcpy(desc.nguid, data + off, sizeof(desc.nguid));
			for (i = 0; i < sizeof(desc.nguid); i++)
				json_str_p += sprintf(json_str_p, "%02x", desc.nguid[i]);
			len = sizeof(desc.nguid);
			nidt_name = "nguid";
			break;

		case NVME_NIDT_UUID:
			memcpy(desc.uuid, data + off, sizeof(desc.uuid));
			nvme_uuid_to_string(desc.uuid, json_str);
			len = sizeof(desc.uuid);
			nidt_name = "uuid";
			break;

		case NVME_NIDT_CSI:
			memcpy(&desc.csi, data + off, sizeof(desc.csi));
			sprintf(json_str_p, "%#x", desc.csi);
			len += sizeof(desc.csi);
			nidt_name = "csi";
			break;
		default:
			/* Skip unknown types */
			len = cur->nidl;
			break;
		}

		if (nidt_name) {
			struct json_object *elem = json_create_object();

			json_object_add_value_int(elem, "loc", pos);
			json_object_add_value_int(elem, "nidt", (int)cur->nidt);
			json_object_add_value_int(elem, "nidl", (int)cur->nidl);
			json_object_add_value_string(elem, "type", nidt_name);
			json_object_add_value_string(elem, nidt_name, json_str);

			if (!json_array) {
				json_array = json_create_array();
			}
			json_array_add_value_object(json_array, elem);
		}

		len += sizeof(*cur);
	}

	root = json_create_object();

	if (json_array)
		json_object_add_value_array(root, "ns-descs", json_array);

	json_print_object(root, NULL);
	printf("\n");

	json_free_object(root);
}

void json_nvme_id_ctrl_nvm(struct nvme_id_ctrl_nvm *ctrl_nvm)
{
	struct json_object *root;

	root = json_create_object();
	json_object_add_value_uint(root, "vsl", ctrl_nvm->vsl);
	json_object_add_value_uint(root, "wzsl", ctrl_nvm->wzsl);
	json_object_add_value_uint(root, "wusl", ctrl_nvm->wusl);
	json_object_add_value_uint(root, "dmrl", ctrl_nvm->dmrl);
	json_object_add_value_uint(root, "dmrsl", le32_to_cpu(ctrl_nvm->dmrsl));
	json_object_add_value_uint64(root, "dmsl", le64_to_cpu(ctrl_nvm->dmsl));

	json_print_object(root, NULL);
	printf("\n");
	json_free_object(root);
}

void json_nvme_nvm_id_ns(struct nvme_nvm_id_ns *nvm_ns,
			 struct nvme_id_ns *ns, bool cap_only)
{
	struct json_object *root;
	struct json_object *elbafs;
	int i;

	root = json_create_object();

	if (!cap_only) {
		json_object_add_value_uint64(root, "lbstm", le64_to_cpu(nvm_ns->lbstm));
	}
	json_object_add_value_int(root, "pic", nvm_ns->pic);

	elbafs = json_create_array();
	json_object_add_value_array(root, "elbafs", elbafs);

	for (i = 0; i <= ns->nlbaf; i++) {
		struct json_object *elbaf = json_create_object();
		unsigned int elbaf_val = le32_to_cpu(nvm_ns->elbaf[i]);

		json_object_add_value_uint(elbaf, "sts", elbaf_val & 0x7F);
		json_object_add_value_uint(elbaf, "pif", (elbaf_val >> 7) & 0x3);

		json_array_add_value_object(elbafs, elbaf);
	}

	json_print_object(root, NULL);
	printf("\n");
	json_free_object(root);
}

void json_nvme_zns_id_ctrl(struct nvme_zns_id_ctrl *ctrl)
{
	struct json_object *root;

	root = json_create_object();
	json_object_add_value_int(root, "zasl", ctrl->zasl);

	json_print_object(root, NULL);
	printf("\n");
	json_free_object(root);
}

void json_nvme_zns_id_ns(struct nvme_zns_id_ns *ns,
			 struct nvme_id_ns *id_ns)
{
	struct json_object *root;
	struct json_object *lbafs;
	int i;

	root = json_create_object();
	json_object_add_value_int(root, "zoc", le16_to_cpu(ns->zoc));
	json_object_add_value_int(root, "ozcs", le16_to_cpu(ns->ozcs));
	json_object_add_value_uint(root, "mar", le32_to_cpu(ns->mar));
	json_object_add_value_uint(root, "mor", le32_to_cpu(ns->mor));
	json_object_add_value_uint(root, "rrl", le32_to_cpu(ns->rrl));
	json_object_add_value_uint(root, "frl", le32_to_cpu(ns->frl));
	json_object_add_value_uint(root, "rrl1", le32_to_cpu(ns->rrl1));
	json_object_add_value_uint(root, "rrl2", le32_to_cpu(ns->rrl2));
	json_object_add_value_uint(root, "rrl3", le32_to_cpu(ns->rrl3));
	json_object_add_value_uint(root, "frl1", le32_to_cpu(ns->frl1));
	json_object_add_value_uint(root, "frl2", le32_to_cpu(ns->frl2));
	json_object_add_value_uint(root, "frl3", le32_to_cpu(ns->frl3));
	json_object_add_value_uint(root, "numzrwa", le32_to_cpu(ns->numzrwa));
	json_object_add_value_int(root, "zrwafg", le16_to_cpu(ns->zrwafg));
	json_object_add_value_int(root, "zrwasz", le16_to_cpu(ns->zrwasz));
	json_object_add_value_int(root, "zrwacap", ns->zrwacap);

	lbafs = json_create_array();
	json_object_add_value_array(root, "lbafe", lbafs);

	for (i = 0; i <= id_ns->nlbaf; i++) {
		struct json_object *lbaf = json_create_object();

		json_object_add_value_int(lbaf, "zsze",
			le64_to_cpu(ns->lbafe[i].zsze));
		json_object_add_value_int(lbaf, "zdes", ns->lbafe[i].zdes);

		json_array_add_value_object(lbafs, lbaf);
	}
	json_print_object(root, NULL);
	printf("\n");
	json_free_object(root);
}

void json_nvme_list_ns(struct nvme_ns_list *ns_list)
{
	struct json_object *root;
	struct json_object *valid_attrs;
	struct json_object *valid;
	int i;

	root = json_create_object();
	valid = json_create_array();

	for (i = 0; i < 1024; i++) {
		if (ns_list->ns[i]) {
			valid_attrs = json_create_object();
			json_object_add_value_uint(valid_attrs, "nsid",
				le32_to_cpu(ns_list->ns[i]));
			json_array_add_value_object(valid, valid_attrs);
		}
	}
	json_object_add_value_array(root, "nsid_list", valid);
	json_print_object(root, NULL);
	printf("\n");
	json_free_object(root);
}

void json_nvme_finish_zone_list(__u64 nr_zones,
				struct json_object *zone_list)
{
	struct json_object *root = json_create_object();
	json_object_add_value_uint(root, "nr_zones", nr_zones);
	json_object_add_value_array(root, "zone_list", zone_list);
	json_print_object(root, NULL);
	printf("\n");
	json_free_object(root);
}

void json_nvme_zns_report_zones(void *report, __u32 descs,
				__u8 ext_size, __u32 report_size,
				struct json_object *zone_list)
{
	struct json_object *zone;
	struct json_object *ext_data;
	struct nvme_zone_report *r = report;
	struct nvme_zns_desc *desc;
	int i;

	for (i = 0; i < descs; i++) {
		desc = (struct nvme_zns_desc *)
			(report + sizeof(*r) + i * (sizeof(*desc) + ext_size));
		zone = json_create_object();

		json_object_add_value_uint64(zone, "slba",
					     le64_to_cpu(desc->zslba));
		json_object_add_value_uint64(zone, "wp",
					     le64_to_cpu(desc->wp));
		json_object_add_value_uint64(zone, "cap",
					     le64_to_cpu(desc->zcap));
		json_object_add_value_string(zone, "state",
			zone_state_to_string(desc->zs >> 4));
		json_object_add_value_string(zone, "type",
			zone_type_to_string(desc->zt));
		json_object_add_value_uint(zone, "attrs", desc->za);
		json_object_add_value_uint(zone, "attrs_info", desc->zai);

		if (ext_size) {
			if (desc->za & NVME_ZNS_ZA_ZDEV) {
				ext_data = json_create_array();
				d_json((unsigned char *)desc + sizeof(*desc),
					ext_size, 16, 1, ext_data);
				json_object_add_value_array(zone, "ext_data",
					ext_data);
			} else {
				json_object_add_value_string(zone, "ext_data", "Not valid");
			}
		}

		json_array_add_value_object(zone_list, zone);
	}
}

void json_nvme_list_ctrl(struct nvme_ctrl_list *ctrl_list, __u16 num)
{
	struct json_object *root;
	struct json_object *valid_attrs;
	struct json_object *valid;
	int i;

	root = json_create_object();
	valid = json_create_array();

	json_object_add_value_uint(root, "num_ctrl",
		le16_to_cpu(ctrl_list->num));

	for (i = 0; i < min(num, 2047); i++) {

		valid_attrs = json_create_object();
		json_object_add_value_uint(valid_attrs, "ctrl_id",
			le16_to_cpu(ctrl_list->identifier[i]));
		json_array_add_value_object(valid, valid_attrs);
	}

	json_object_add_value_array(root, "ctrl_list", valid);
	json_print_object(root, NULL);
	printf("\n");
	json_free_object(root);
}

void json_nvme_id_nvmset(struct nvme_id_nvmset_list *nvmset)
{
	__u32 nent = nvmset->nid;
	struct json_object *entries;
	struct json_object *root;
	int i;

	root = json_create_object();

	json_object_add_value_int(root, "nid", nent);

	entries = json_create_array();
	for (i = 0; i < nent; i++) {
		struct json_object *entry = json_create_object();

		json_object_add_value_int(entry, "nvmset_id",
			  le16_to_cpu(nvmset->ent[i].nvmsetid));
		json_object_add_value_int(entry, "endurance_group_id",
			  le16_to_cpu(nvmset->ent[i].endgid));
		json_object_add_value_uint(entry, "random_4k_read_typical",
			  le32_to_cpu(nvmset->ent[i].rr4kt));
		json_object_add_value_uint(entry, "optimal_write_size",
			  le32_to_cpu(nvmset->ent[i].ows));
		json_object_add_value_uint128(entry, "total_nvmset_cap",
			    le128_to_cpu(nvmset->ent[i].tnvmsetcap));
		json_object_add_value_uint128(entry, "unalloc_nvmset_cap",
			    le128_to_cpu(nvmset->ent[i].unvmsetcap));
		json_array_add_value_object(entries, entry);
	}

	json_object_add_value_array(root, "NVMSet", entries);
	json_print_object(root, NULL);
	printf("\n");
	json_free_object(root);
}

void json_nvme_primary_ctrl_cap(const struct nvme_primary_ctrl_cap *caps)
{
	struct json_object *root;

	root = json_create_object();

	json_object_add_value_uint(root, "cntlid", le16_to_cpu(caps->cntlid));
	json_object_add_value_uint(root, "portid", le16_to_cpu(caps->portid));
	json_object_add_value_uint(root, "crt",    caps->crt);

	json_object_add_value_uint(root, "vqfrt",  le32_to_cpu(caps->vqfrt));
	json_object_add_value_uint(root, "vqrfa",  le32_to_cpu(caps->vqrfa));
	json_object_add_value_int(root, "vqrfap", le16_to_cpu(caps->vqrfap));
	json_object_add_value_int(root, "vqprt",  le16_to_cpu(caps->vqprt));
	json_object_add_value_int(root, "vqfrsm", le16_to_cpu(caps->vqfrsm));
	json_object_add_value_int(root, "vqgran", le16_to_cpu(caps->vqgran));

	json_object_add_value_uint(root, "vifrt",  le32_to_cpu(caps->vifrt));
	json_object_add_value_uint(root, "virfa",  le32_to_cpu(caps->virfa));
	json_object_add_value_int(root, "virfap", le16_to_cpu(caps->virfap));
	json_object_add_value_int(root, "viprt",  le16_to_cpu(caps->viprt));
	json_object_add_value_int(root, "vifrsm", le16_to_cpu(caps->vifrsm));
	json_object_add_value_int(root, "vigran", le16_to_cpu(caps->vigran));

	json_print_object(root, NULL);
	printf("\n");
	json_free_object(root);
}

void json_nvme_list_secondary_ctrl(const struct nvme_secondary_ctrl_list *sc_list,
					  __u32 count)
{
	const struct nvme_secondary_ctrl *sc_entry = &sc_list->sc_entry[0];
	__u32 nent = min(sc_list->num, count);
	struct json_object *entries;
	struct json_object *root;
	int i;

	root = json_create_object();

	json_object_add_value_int(root, "num", nent);

	entries = json_create_array();
	for (i = 0; i < nent; i++) {
		struct json_object *entry = json_create_object();

		json_object_add_value_int(entry,
			"secondary-controller-identifier",
			le16_to_cpu(sc_entry[i].scid));
		json_object_add_value_int(entry,
			"primary-controller-identifier",
			le16_to_cpu(sc_entry[i].pcid));
		json_object_add_value_int(entry, "secondary-controller-state",
					  sc_entry[i].scs);
		json_object_add_value_int(entry, "virtual-function-number",
			le16_to_cpu(sc_entry[i].vfn));
		json_object_add_value_int(entry, "num-virtual-queues",
			le16_to_cpu(sc_entry[i].nvq));
		json_object_add_value_int(entry, "num-virtual-interrupts",
			le16_to_cpu(sc_entry[i].nvi));
		json_array_add_value_object(entries, entry);
	}

	json_object_add_value_array(root, "secondary-controllers", entries);

	json_print_object(root, NULL);
	printf("\n");
	json_free_object(root);
}

void json_nvme_id_ns_granularity_list(
	const struct nvme_id_ns_granularity_list *glist)
{
	int i;
	struct json_object *root;
	struct json_object *entries;

	root = json_create_object();

	json_object_add_value_int(root, "attributes", glist->attributes);
	json_object_add_value_int(root, "num-descriptors",
		glist->num_descriptors);

	entries = json_create_array();
	for (i = 0; i <= glist->num_descriptors; i++) {
		struct json_object *entry = json_create_object();

		json_object_add_value_uint64(entry, "namespace-size-granularity",
			le64_to_cpu(glist->entry[i].nszegran));
		json_object_add_value_uint64(entry, "namespace-capacity-granularity",
			le64_to_cpu(glist->entry[i].ncapgran));
		json_array_add_value_object(entries, entry);
	}

	json_object_add_value_array(root, "namespace-granularity-list", entries);

	json_print_object(root, NULL);
	printf("\n");
	json_free_object(root);
}

void json_nvme_id_uuid_list(const struct nvme_id_uuid_list *uuid_list)
{
	struct json_object *root;
	struct json_object *entries;
	int i;

	root = json_create_object();
	entries = json_create_array();
	/* The 0th entry is reserved */
	for (i = 1; i < NVME_ID_UUID_LIST_MAX; i++) {
		__u8 uuid[NVME_UUID_LEN];
		struct json_object *entry = json_create_object();

		/* The list is terminated by a zero UUID value */
		if (memcmp(uuid_list->entry[i].uuid, zero_uuid, sizeof(zero_uuid)) == 0)
			break;
		memcpy(&uuid, uuid_list->entry[i].uuid, sizeof(uuid));
		json_object_add_value_int(entry, "association",
			uuid_list->entry[i].header & 0x3);
		json_object_add_value_string(entry, "uuid",
			util_uuid_to_string(uuid));
		json_array_add_value_object(entries, entry);
	}
	json_object_add_value_array(root, "UUID-list", entries);
	json_print_object(root, NULL);
	printf("\n");
	json_free_object(root);
}

void json_id_domain_list(struct nvme_id_domain_list *id_dom)
{
	struct json_object *root;
	struct json_object *entries;
	struct json_object *entry;
	int i;
	nvme_uint128_t dom_cap, unalloc_dom_cap, max_egrp_dom_cap;

	root = json_create_object();
	entries = json_create_array();

	json_object_add_value_uint(root, "num_dom_entries", id_dom->num);

	for (i = 0; i < id_dom->num; i++) {
		entry = json_create_object();
		dom_cap = le128_to_cpu(id_dom->domain_attr[i].dom_cap);
		unalloc_dom_cap = le128_to_cpu(id_dom->domain_attr[i].unalloc_dom_cap);
		max_egrp_dom_cap = le128_to_cpu(id_dom->domain_attr[i].max_egrp_dom_cap);

		json_object_add_value_uint(entry, "dom_id", le16_to_cpu(id_dom->domain_attr[i].dom_id));
		json_object_add_value_uint128(entry, "dom_cap", dom_cap);
		json_object_add_value_uint128(entry, "unalloc_dom_cap", unalloc_dom_cap);
		json_object_add_value_uint128(entry, "max_egrp_dom_cap", max_egrp_dom_cap);

		json_array_add_value_object(entries, entry);
	}

	json_object_add_value_array(root, "domain_list", entries);
	json_print_object(root, NULL);
	printf("\n");
	json_free_object(root);
}

void json_nvme_endurance_group_list(struct nvme_id_endurance_group_list *endgrp_list)
{
	struct json_object *root;
	struct json_object *valid_attrs;
	struct json_object *valid;
	int i;

	root = json_create_object();
	valid = json_create_array();

	json_object_add_value_uint(root, "num_endgrp_id",
		le16_to_cpu(endgrp_list->num));

	for (i = 0; i < min(le16_to_cpu(endgrp_list->num), 2047); i++) {
		valid_attrs = json_create_object();
		json_object_add_value_uint(valid_attrs, "endgrp_id",
			le16_to_cpu(endgrp_list->identifier[i]));
		json_array_add_value_object(valid, valid_attrs);
	}

	json_object_add_value_array(root, "endgrp_list", valid);
	json_print_object(root, NULL);
	printf("\n");
	json_free_object(root);
}

void json_support_log(struct nvme_supported_log_pages *support_log)
{
	struct json_object *root;
	struct json_object *valid;
	struct json_object *valid_attrs;
	unsigned int lid;
	char key[128];
	__u32 support;

	root = json_create_object();
	valid = json_create_array();

	for (lid = 0; lid < 256; lid++) {
		support = le32_to_cpu(support_log->lid_support[lid]);
		if (support & 0x1) {
			valid_attrs = json_create_object();
			sprintf(key, "lid_0x%x ", lid);
			json_object_add_value_uint(valid_attrs, key, support);
			json_array_add_value_object(valid, valid_attrs);
		}
	}

	json_object_add_value_object(root, "supported_logs", valid);
	json_print_object(root, NULL);
	printf("\n");
	json_free_object(root);
}

static void json_detail_list(nvme_root_t r)
{
	struct json_object *jroot = json_create_object();
	struct json_object *jdev = json_create_array();

	nvme_host_t h;
	nvme_subsystem_t s;
	nvme_ctrl_t c;
	nvme_path_t p;
	nvme_ns_t n;

	nvme_for_each_host(r, h) {
		struct json_object *hss = json_create_object();
		struct json_object *jsslist = json_create_array();
		const char *hostid;

		json_object_add_value_string(hss, "HostNQN", nvme_host_get_hostnqn(h));
		hostid = nvme_host_get_hostid(h);
		if (hostid)
			json_object_add_value_string(hss, "HostID", hostid);

		nvme_for_each_subsystem(h , s) {
			struct json_object *jss = json_create_object();
			struct json_object *jctrls = json_create_array();
			struct json_object *jnss = json_create_array();

			json_object_add_value_string(jss, "Subsystem", nvme_subsystem_get_name(s));
			json_object_add_value_string(jss, "SubsystemNQN", nvme_subsystem_get_nqn(s));

			nvme_subsystem_for_each_ctrl(s, c) {
				struct json_object *jctrl = json_create_object();
				struct json_object *jnss = json_create_array();
				struct json_object *jpaths = json_create_array();

				json_object_add_value_string(jctrl, "Controller", nvme_ctrl_get_name(c));
				json_object_add_value_string(jctrl, "SerialNumber", nvme_ctrl_get_serial(c));
				json_object_add_value_string(jctrl, "ModelNumber", nvme_ctrl_get_model(c));
				json_object_add_value_string(jctrl, "Firmware", nvme_ctrl_get_firmware(c));
				json_object_add_value_string(jctrl, "Transport", nvme_ctrl_get_transport(c));
				json_object_add_value_string(jctrl, "Address", nvme_ctrl_get_address(c));

				nvme_ctrl_for_each_ns(c, n) {
					struct json_object *jns = json_create_object();
					int lba = nvme_ns_get_lba_size(n);
					uint64_t nsze = nvme_ns_get_lba_count(n) * lba;
					uint64_t nuse = nvme_ns_get_lba_util(n) * lba;

					json_object_add_value_string(jns, "NameSpace", nvme_ns_get_name(n));
					json_object_add_value_string(jns, "Generic", nvme_ns_get_generic_name(n));
					json_object_add_value_int(jns, "NSID", nvme_ns_get_nsid(n));
					json_object_add_value_uint64(jns, "UsedBytes", nuse);
					json_object_add_value_uint64(jns, "MaximumLBA", nvme_ns_get_lba_count(n));
					json_object_add_value_uint64(jns, "PhysicalSize", nsze);
					json_object_add_value_int(jns, "SectorSize", lba);

					json_array_add_value_object(jnss, jns);
				}
				json_object_add_value_object(jctrl, "Namespaces", jnss);

				nvme_ctrl_for_each_path(c, p) {
					struct json_object *jpath = json_create_object();

					json_object_add_value_string(jpath, "Path", nvme_path_get_name(p));
					json_object_add_value_string(jpath, "ANAState", nvme_path_get_ana_state(p));

					json_array_add_value_object(jpaths, jpath);
				}
				json_object_add_value_object(jctrl, "Paths", jpaths);

				json_array_add_value_object(jctrls, jctrl);
			}
			json_object_add_value_object(jss, "Controllers", jctrls);

			nvme_subsystem_for_each_ns(s, n) {
				struct json_object *jns = json_create_object();

				int lba = nvme_ns_get_lba_size(n);
				uint64_t nsze = nvme_ns_get_lba_count(n) * lba;
				uint64_t nuse = nvme_ns_get_lba_util(n) * lba;

				json_object_add_value_string(jns, "NameSpace", nvme_ns_get_name(n));
				json_object_add_value_string(jns, "Generic", nvme_ns_get_generic_name(n));
				json_object_add_value_int(jns, "NSID", nvme_ns_get_nsid(n));
				json_object_add_value_uint64(jns, "UsedBytes", nuse);
				json_object_add_value_uint64(jns, "MaximumLBA", nvme_ns_get_lba_count(n));
				json_object_add_value_uint64(jns, "PhysicalSize", nsze);
				json_object_add_value_int(jns, "SectorSize", lba);

				json_array_add_value_object(jnss, jns);
			}
			json_object_add_value_object(jss, "Namespaces", jnss);

			json_array_add_value_object(jsslist, jss);
		}

		json_object_add_value_object(hss, "Subsystems", jsslist);
		json_array_add_value_object(jdev, hss);
	}
	json_object_add_value_array(jroot, "Devices", jdev);
	json_print_object(jroot, NULL);
	printf("\n");
	json_free_object(jroot);
}

static struct json_object *json_list_item(nvme_ns_t n)
{
	struct json_object *jdevice = json_create_object();
	char devname[128] = { 0 };
	char genname[128] = { 0 };

	int lba = nvme_ns_get_lba_size(n);
	uint64_t nsze = nvme_ns_get_lba_count(n) * lba;
	uint64_t nuse = nvme_ns_get_lba_util(n) * lba;

	nvme_dev_full_path(n, devname, sizeof(devname));
	nvme_generic_full_path(n, genname, sizeof(genname));

	json_object_add_value_int(jdevice, "NameSpace", nvme_ns_get_nsid(n));
	json_object_add_value_string(jdevice, "DevicePath", devname);
	json_object_add_value_string(jdevice, "GenericPath", genname);
	json_object_add_value_string(jdevice, "Firmware", nvme_ns_get_firmware(n));
	json_object_add_value_string(jdevice, "ModelNumber", nvme_ns_get_model(n));
	json_object_add_value_string(jdevice, "SerialNumber", nvme_ns_get_serial(n));
	json_object_add_value_uint64(jdevice, "UsedBytes", nuse);
	json_object_add_value_uint64(jdevice, "MaximumLBA", nvme_ns_get_lba_count(n));
	json_object_add_value_uint64(jdevice, "PhysicalSize", nsze);
	json_object_add_value_int(jdevice, "SectorSize", lba);

	return jdevice;
}

static void json_simple_list(nvme_root_t r)
{
	struct json_object *jroot = json_create_object();
	struct json_object *jdevices = json_create_array();

	nvme_host_t h;
	nvme_subsystem_t s;
	nvme_ctrl_t c;
	nvme_ns_t n;

	nvme_for_each_host(r, h) {
		nvme_for_each_subsystem(h, s) {
			nvme_subsystem_for_each_ns(s, n)
				json_array_add_value_object(jdevices,
							    json_list_item(n));

			nvme_subsystem_for_each_ctrl(s, c)
				nvme_ctrl_for_each_ns(c, n)
				json_array_add_value_object(jdevices,
							    json_list_item(n));
		}
	}
	json_object_add_value_array(jroot, "Devices", jdevices);
	json_print_object(jroot, NULL);
	printf("\n");
	json_free_object(jroot);
}

void json_print_list_items(nvme_root_t r,
			   enum nvme_print_flags flags)
{
	if (flags & VERBOSE)
		json_detail_list(r);
	else
		json_simple_list(r);
}

static unsigned int json_subsystem_topology_multipath(nvme_subsystem_t s,
						      json_object *namespaces)
{
	nvme_ns_t n;
	nvme_path_t p;
	unsigned int i = 0;

	nvme_subsystem_for_each_ns(s, n) {
		struct json_object *ns_attrs;
		struct json_object *paths;

		ns_attrs = json_create_object();
	        json_object_add_value_int(ns_attrs, "NSID",
					  nvme_ns_get_nsid(n));

		paths = json_create_array();
		nvme_namespace_for_each_path(n, p) {
			struct json_object *path_attrs;

			nvme_ctrl_t c = nvme_path_get_ctrl(p);

			path_attrs = json_create_object();
			json_object_add_value_string(path_attrs, "Name",
						     nvme_ctrl_get_name(c));
			json_object_add_value_string(path_attrs, "Transport",
						     nvme_ctrl_get_transport(c));
			json_object_add_value_string(path_attrs, "Address",
						     nvme_ctrl_get_address(c));
			json_object_add_value_string(path_attrs, "State",
						     nvme_ctrl_get_state(c));
			json_object_add_value_string(path_attrs, "ANAState",
						     nvme_path_get_ana_state(p));
			json_array_add_value_object(paths, path_attrs);
		}
		json_object_add_value_array(ns_attrs, "Paths", paths);
		json_array_add_value_object(namespaces, ns_attrs);
		i++;
	}

	return i;
}

void json_print_nvme_subsystem_topology(nvme_subsystem_t s,
					json_object *namespaces)
{
	nvme_ctrl_t c;
	nvme_ns_t n;

	nvme_subsystem_for_each_ctrl(s, c) {
		nvme_ctrl_for_each_ns(c, n) {
			struct json_object *ctrl_attrs;
			struct json_object *ns_attrs;
			struct json_object *ctrl;

			ns_attrs = json_create_object();
		        json_object_add_value_int(ns_attrs, "NSID",
						  nvme_ns_get_nsid(n));

		        ctrl = json_create_array();
			ctrl_attrs = json_create_object();
			json_object_add_value_string(ctrl_attrs, "Name",
						     nvme_ctrl_get_name(c));
			json_object_add_value_string(ctrl_attrs, "Transport",
						     nvme_ctrl_get_transport(c));
			json_object_add_value_string(ctrl_attrs, "Address",
						     nvme_ctrl_get_address(c));
			json_object_add_value_string(ctrl_attrs, "State",
						     nvme_ctrl_get_state(c));

			json_array_add_value_object(ctrl, ctrl_attrs);
			json_object_add_value_array(ns_attrs, "Controller", ctrl);
			json_array_add_value_object(namespaces, ns_attrs);
		}
	}
}

void json_simple_topology(nvme_root_t r)
{
	struct json_object *host_attrs, *subsystem_attrs;
	struct json_object *subsystems, *namespaces;
	struct json_object *root;
	nvme_host_t h;

	root = json_create_array();

	nvme_for_each_host(r, h) {
		nvme_subsystem_t s;
		const char *hostid;

		host_attrs = json_create_object();
		json_object_add_value_string(host_attrs, "HostNQN",
					     nvme_host_get_hostnqn(h));
		hostid = nvme_host_get_hostid(h);
		if (hostid)
			json_object_add_value_string(host_attrs, "HostID", hostid);
		subsystems = json_create_array();
		nvme_for_each_subsystem(h, s) {
			subsystem_attrs = json_create_object();
			json_object_add_value_string(subsystem_attrs, "Name",
						     nvme_subsystem_get_name(s));
			json_object_add_value_string(subsystem_attrs, "NQN",
						     nvme_subsystem_get_nqn(s));

			json_array_add_value_object(subsystems, subsystem_attrs);
			namespaces = json_create_array();

			if (!json_subsystem_topology_multipath(s, namespaces))
				json_print_nvme_subsystem_topology(s, namespaces);

			json_object_add_value_array(subsystem_attrs, "Namespaces",
						    namespaces);
		}
		json_object_add_value_array(host_attrs, "Subsystems", subsystems);
		json_array_add_value_object(root, host_attrs);
	}
	json_print_object(root, NULL);
	printf("\n");
	json_free_object(root);
}

/* fabrics.c */
void json_discovery_log(struct nvmf_discovery_log *log, int numrec)
{
	struct json_object *root;
	struct json_object *entries;
	int i;

	root = json_create_object();
	entries = json_create_array();
	json_object_add_value_uint64(root, "genctr", le64_to_cpu(log->genctr));
	json_object_add_value_array(root, "records", entries);

	for (i = 0; i < numrec; i++) {
		struct nvmf_disc_log_entry *e = &log->entries[i];
		struct json_object *entry = json_create_object();

		json_object_add_value_string(entry, "trtype",
					     nvmf_trtype_str(e->trtype));
		json_object_add_value_string(entry, "adrfam",
					     nvmf_adrfam_str(e->adrfam));
		json_object_add_value_string(entry, "subtype",
					     nvmf_subtype_str(e->subtype));
		json_object_add_value_string(entry,"treq",
					     nvmf_treq_str(e->treq));
		json_object_add_value_uint(entry, "portid",
					   le16_to_cpu(e->portid));
		json_object_add_value_string(entry, "trsvcid", e->trsvcid);
		json_object_add_value_string(entry, "subnqn", e->subnqn);
		json_object_add_value_string(entry, "traddr", e->traddr);
		json_object_add_value_string(entry, "eflags",
					     nvmf_eflags_str(le16_to_cpu(e->eflags)));

		switch (e->trtype) {
		case NVMF_TRTYPE_RDMA:
			json_object_add_value_string(entry, "rdma_prtype",
				nvmf_prtype_str(e->tsas.rdma.prtype));
			json_object_add_value_string(entry, "rdma_qptype",
				nvmf_qptype_str(e->tsas.rdma.qptype));
			json_object_add_value_string(entry, "rdma_cms",
				nvmf_cms_str(e->tsas.rdma.cms));
			json_object_add_value_uint(entry, "rdma_pkey",
				le16_to_cpu(e->tsas.rdma.pkey));
			break;
		case NVMF_TRTYPE_TCP:
			json_object_add_value_string(entry, "sectype",
				nvmf_sectype_str(e->tsas.tcp.sectype));
			break;
		}
		json_array_add_value_object(entries, entry);
	}
	json_print_object(root, NULL);
	printf("\n");
	json_free_object(root);
}

void json_connect_msg(nvme_ctrl_t c)
{
	struct json_object *root;

	root = json_create_object();
	json_object_add_value_string(root, "device", nvme_ctrl_get_name(c));

	json_print_object(root, NULL);
	printf("\n");
	json_free_object(root);
}

static void json_output_object(struct json_object *root)
{
	json_print_object(root, NULL);
	printf("\n");
	json_free_object(root);
}

void json_output_status(int status)
{
	struct json_object *root = json_create_object();
	int val;
	int type;

	if (status < 0) {
		json_object_add_value_string(root, "error", nvme_strerror(errno));
		return json_output_object(root);
	}

	val = nvme_status_get_value(status);
	type = nvme_status_get_type(status);

	switch (type) {
	case NVME_STATUS_TYPE_NVME:
		json_object_add_value_string(root, "error", nvme_status_to_string(val, false));
		json_object_add_value_string(root, "type", "nvme");
		break;
	case NVME_STATUS_TYPE_MI:
		json_object_add_value_string(root, "error", nvme_mi_status_to_string(val));
		json_object_add_value_string(root, "type", "nvme-mi");
		break;
	default:
		json_object_add_value_string(root, "type", "unknow");
		break;
	}

	json_object_add_value_int(root, "value", val);

	json_output_object(root);
}
 070701015D6E4B000081A4000003E80000006400000001642C0FB600001A11000000000000004A00000000000000000000001B00000000nvme-cli/nvme-print-json.h    #ifndef NVME_PRINT_JSON_H_
#define NVME_PRINT_JSON_H_

#include "nvme-print.h"

#ifdef CONFIG_JSONC

void json_simple_topology(nvme_root_t r);
void json_print_list_items(nvme_root_t r,
			   enum nvme_print_flags flags);
void json_sanitize_log(struct nvme_sanitize_log_page *sanitize_log,
                       const char *devname);

void json_self_test_log(struct nvme_self_test_log *self_test, __u8 dst_entries);
void json_ana_log(struct nvme_ana_log *ana_log, const char *devname);
void json_smart_log(struct nvme_smart_log *smart, unsigned int nsid,
                    enum nvme_print_flags flags);
void json_support_log(struct nvme_supported_log_pages *support_log);
void json_endurance_log(struct nvme_endurance_group_log *endurance_group,
			__u16 group_id);
void json_effects_log_list(struct list_head *list);
void json_changed_ns_list_log(struct nvme_ns_list *log,
			      const char *devname);
void json_fw_log(struct nvme_firmware_slot *fw_log, const char *devname);
void json_error_log(struct nvme_error_log_page *err_log, int entries);
void json_nvme_resv_report(struct nvme_resv_status *status,
			   int bytes, bool eds);
void json_nvme_endurance_group_list(struct nvme_id_endurance_group_list *endgrp_list);
void json_id_domain_list(struct nvme_id_domain_list *id_dom);
void json_nvme_id_uuid_list(const struct nvme_id_uuid_list *uuid_list);
void json_nvme_id_ns_granularity_list(
	const struct nvme_id_ns_granularity_list *glist);
void json_nvme_list_secondary_ctrl(const struct nvme_secondary_ctrl_list *sc_list,
					  __u32 count);
void json_nvme_primary_ctrl_cap(const struct nvme_primary_ctrl_cap *caps);
void json_nvme_id_nvmset(struct nvme_id_nvmset_list *nvmset);
void json_nvme_list_ctrl(struct nvme_ctrl_list *ctrl_list, __u16 num);
void json_nvme_zns_report_zones(void *report, __u32 descs,
				__u8 ext_size, __u32 report_size,
				struct json_object *zone_list);
void json_nvme_list_ctrl(struct nvme_ctrl_list *ctrl_list, __u16 num);
void json_nvme_list_ns(struct nvme_ns_list *ns_list);
void json_nvme_zns_id_ns(struct nvme_zns_id_ns *ns,
			 struct nvme_id_ns *id_ns);
void json_nvme_zns_id_ctrl(struct nvme_zns_id_ctrl *ctrl);
void json_nvme_nvm_id_ns(struct nvme_nvm_id_ns *nvm_ns,
			 struct nvme_id_ns *ns, bool cap_only);
void json_nvme_id_ctrl_nvm(struct nvme_id_ctrl_nvm *ctrl_nvm);
void json_nvme_id_ctrl(struct nvme_id_ctrl *ctrl,
			void (*vs)(__u8 *vs, struct json_object *root));
void json_nvme_id_ns_descs(void *data);
void json_nvme_cmd_set_independent_id_ns(
	struct nvme_id_independent_id_ns *ns);
void json_ctrl_registers(void *bar);
void json_nvme_id_ns(struct nvme_id_ns *ns, bool cap_only);
void json_print_nvme_subsystem_list(nvme_root_t r, bool show_ana);
void json_supported_cap_config_log(
	struct nvme_supported_cap_config_list_log *cap_log);
void json_nvme_fdp_ruh_status(struct nvme_fdp_ruh_status *status, size_t len);
void json_nvme_fdp_events(struct nvme_fdp_events_log *log);
void json_nvme_fdp_stats(struct nvme_fdp_stats_log *log);
void json_nvme_fdp_usage(struct nvme_fdp_ruhu_log *log, size_t len);
void json_nvme_fdp_configs(struct nvme_fdp_config_log *log, size_t len);
void json_media_unit_stat_log(struct nvme_media_unit_stat_log *mus);
void json_boot_part_log(void *bp_log);
void json_mi_cmd_support_effects_log(struct nvme_mi_cmd_supported_effects_log *mi_cmd_log);
void json_fid_support_effects_log(struct nvme_fid_supported_effects_log *fid_log);
void json_resv_notif_log(struct nvme_resv_notification_log *resv);
void json_endurance_group_event_agg_log(
	struct nvme_aggregate_predictable_lat_event *endurance_log,
	__u64 log_entries);
void json_lba_status_log(void *lba_status);
void add_bitmap(int i, __u8 seb, struct json_object *root, int json_flag);
void json_persistent_event_log(void *pevent_log_info, __u32 size);
void json_predictable_latency_event_agg_log(
	struct nvme_aggregate_predictable_lat_event *pea_log,
	__u64 log_entries);
void json_predictable_latency_per_nvmset(
	struct nvme_nvmset_predictable_lat_log *plpns_log,
	__u16 nvmset_id);
void json_output_status(int status);

/* fabrics.c */
void json_discovery_log(struct nvmf_discovery_log *log, int numrec);
void json_connect_msg(nvme_ctrl_t c);

#else /* !CONFIG_JSONC */

#define json_simple_topology(r)
#define json_print_list_items(r, flags)
#define json_sanitize_log(sanitize_log, devname)
#define json_self_test_log(self_test, dst_entries)
#define json_ana_log(ana_log, devname)
#define json_smart_log(smart, nsid, flags)
#define json_support_log(support_log)
#define json_endurance_log(endurance_group, group_id)
#define json_effects_log_list(list)
#define json_changed_ns_list_log(log, devname)
#define json_fw_log(fw_log, devname)
#define json_error_log(err_log, entries)
#define json_nvme_resv_report(status, bytes, eds)
#define json_nvme_endurance_group_list(endgrp_list)
#define json_id_domain_list(id_dom)
#define json_nvme_id_uuid_list(uuid_list)
#define json_nvme_id_ns_granularity_list(glist)
#define json_nvme_list_secondary_ctrl(sc_list, count)
#define json_nvme_primary_ctrl_cap(caps)
#define json_nvme_id_nvmset(nvmset)
#define json_nvme_list_ctrl(ctrl_list, num)
#define json_nvme_zns_report_zones(report, descs, ext_size, report_size, zone_list)
#define json_nvme_list_ctrl(ctrl_list, num)
#define json_nvme_list_ns(ns_list)
#define json_nvme_zns_id_ns(ns, id_ns)
#define json_nvme_zns_id_ctrl(ctrl)
#define json_nvme_nvm_id_ns(nvm_ns, ns, cap_only)
#define json_nvme_id_ctrl_nvm(ctrl_nvm)
#define json_nvme_id_ctrl(ctrl, vs)
#define json_nvme_id_ns_descs(data)
#define json_nvme_cmd_set_independent_id_ns(ns)
#define json_ctrl_registers(bar)
#define json_nvme_id_ns(ns, cap_only)
#define json_print_nvme_subsystem_list(r, show_ana)
#define json_supported_cap_config_log(cap_log)
#define json_nvme_fdp_ruh_status(status, len)
#define json_nvme_fdp_events(log)
#define json_nvme_fdp_stats(log)
#define json_nvme_fdp_usage(log, len)
#define json_nvme_fdp_configs(log, len)
#define json_media_unit_stat_log(mus)
#define json_boot_part_log(bp_log)
#define json_mi_cmd_support_effects_log(mi_cmd_log)
#define json_fid_support_effects_log(fid_log)
#define json_resv_notif_log(resv)
#define json_endurance_group_event_agg_log(endurance_log, log_entries)
#define json_lba_status_log(lba_status)
#define add_bitmap(i, seb, root, json_flag)
#define json_persistent_event_log(pevent_log_info, size)
#define json_predictable_latency_event_agg_log(pea_log, log_entries)
#define json_predictable_latency_per_nvmset(plpns_log, nvmset_id)
#define json_output_status(status)

/* fabrics.c */
#define json_discovery_log(log, numrec)
#define json_connect_msg(c)

#endif /* !CONFIG_JSONC */

#endif // NVME_PRINT_JSON_H_
   070701015D6E4C000081A4000003E80000006400000001642C0FB60002C2F9000000000000004A00000000000000000000001600000000nvme-cli/nvme-print.c // SPDX-License-Identifier: GPL-2.0-or-later
#include <assert.h>
#include <errno.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>
#include <sys/stat.h>

#include "nvme.h"
#include "libnvme.h"
#include "nvme-print.h"
#include "nvme-print-json.h"
#include "nvme-models.h"
#include "util/suffix.h"
#include "util/types.h"
#include "common.h"

static const uint8_t zero_uuid[16] = { 0 };
static const uint8_t invalid_uuid[16] = {[0 ... 15] = 0xff };
static const char dash[100] = {[0 ... 99] = '-'};

struct nvme_bar_cap {
	__u16	mqes;
	__u8	ams_cqr;
	__u8	to;
	__u16	bps_css_nssrs_dstrd;
	__u8	mpsmax_mpsmin;
	__u8	rsvd_crms_nsss_cmbs_pmrs;
};

const char *nvme_ana_state_to_string(enum nvme_ana_state state)
{
	switch (state) {
	case NVME_ANA_STATE_OPTIMIZED:
		return "optimized";
	case NVME_ANA_STATE_NONOPTIMIZED:
		return "non-optimized";
	case NVME_ANA_STATE_INACCESSIBLE:
		return "inaccessible";
	case NVME_ANA_STATE_PERSISTENT_LOSS:
		return "persistent-loss";
	case NVME_ANA_STATE_CHANGE:
		return "change";
	}
	return "invalid state";
}

const char *nvme_cmd_to_string(int admin, __u8 opcode)
{
	if (admin) {
		switch (opcode) {
		case nvme_admin_delete_sq:	return "Delete I/O Submission Queue";
		case nvme_admin_create_sq:	return "Create I/O Submission Queue";
		case nvme_admin_get_log_page:	return "Get Log Page";
		case nvme_admin_delete_cq:	return "Delete I/O Completion Queue";
		case nvme_admin_create_cq:	return "Create I/O Completion Queue";
		case nvme_admin_identify:	return "Identify";
		case nvme_admin_abort_cmd:	return "Abort";
		case nvme_admin_set_features:	return "Set Features";
		case nvme_admin_get_features:	return "Get Features";
		case nvme_admin_async_event:	return "Asynchronous Event Request";
		case nvme_admin_ns_mgmt:	return "Namespace Management";
		case nvme_admin_fw_commit:	return "Firmware Commit";
		case nvme_admin_fw_download:	return "Firmware Image Download";
		case nvme_admin_dev_self_test:	return "Device Self-test";
		case nvme_admin_ns_attach:	return "Namespace Attachment";
		case nvme_admin_keep_alive:	return "Keep Alive";
		case nvme_admin_directive_send:	return "Directive Send";
		case nvme_admin_directive_recv:	return "Directive Receive";
		case nvme_admin_virtual_mgmt:	return "Virtualization Management";
		case nvme_admin_nvme_mi_send:	return "NVMe-MI Send";
		case nvme_admin_nvme_mi_recv:	return "NVMe-MI Receive";
		case nvme_admin_dbbuf:		return "Doorbell Buffer Config";
		case nvme_admin_format_nvm:	return "Format NVM";
		case nvme_admin_security_send:	return "Security Send";
		case nvme_admin_security_recv:	return "Security Receive";
		case nvme_admin_sanitize_nvm:	return "Sanitize";
		case nvme_admin_get_lba_status:	return "Get LBA Status";
		}
	} else {
		switch (opcode) {
		case nvme_cmd_flush:		return "Flush";
		case nvme_cmd_write:		return "Write";
		case nvme_cmd_read:		return "Read";
		case nvme_cmd_write_uncor:	return "Write Uncorrectable";
		case nvme_cmd_compare:		return "Compare";
		case nvme_cmd_write_zeroes:	return "Write Zeroes";
		case nvme_cmd_dsm:		return "Dataset Management";
		case nvme_cmd_resv_register:	return "Reservation Register";
		case nvme_cmd_resv_report:	return "Reservation Report";
		case nvme_cmd_resv_acquire:	return "Reservation Acquire";
		case nvme_cmd_resv_release:	return "Reservation Release";
		case nvme_cmd_verify:		return "Verify";
		case nvme_cmd_copy:		return "Copy";
		case nvme_zns_cmd_mgmt_send:	return "Zone Management Send";
		case nvme_zns_cmd_mgmt_recv:	return "Zone Management Receive";
		case nvme_zns_cmd_append:	return "Zone Append";
		}
	}

	return "Unknown";
}

const char *get_sanitize_log_sstat_status_str(__u16 status)
{
	switch (status & NVME_SANITIZE_SSTAT_STATUS_MASK) {
	case NVME_SANITIZE_SSTAT_STATUS_NEVER_SANITIZED:
		return "NVM Subsystem has never been sanitized.";
	case NVME_SANITIZE_SSTAT_STATUS_COMPLETE_SUCCESS:
		return "Most Recent Sanitize Command Completed Successfully.";
	case NVME_SANITIZE_SSTAT_STATUS_IN_PROGESS:
		return "Sanitize in Progress.";
	case NVME_SANITIZE_SSTAT_STATUS_COMPLETED_FAILED:
		return "Most Recent Sanitize Command Failed.";
	case NVME_SANITIZE_SSTAT_STATUS_ND_COMPLETE_SUCCESS:
		return "Most Recent Sanitize Command (No-Deallocate After Sanitize) Completed Successfully.";
	default:
		return "Unknown";
	}
}

void nvme_show_predictable_latency_per_nvmset(
	struct nvme_nvmset_predictable_lat_log *plpns_log,
	__u16 nvmset_id, const char *devname,
	enum nvme_print_flags flags)
{
	if (flags & BINARY)
		return d_raw((unsigned char *)plpns_log,
			sizeof(*plpns_log));
	if (flags & JSON)
		return json_predictable_latency_per_nvmset(plpns_log,
			nvmset_id);

	printf("Predictable Latency Per NVM Set Log for device: %s\n",
		devname);
	printf("Predictable Latency Per NVM Set Log for NVM Set ID: %u\n",
		le16_to_cpu(nvmset_id));
	printf("Status: %u\n", plpns_log->status);
	printf("Event Type: %u\n",
		le16_to_cpu(plpns_log->event_type));
	printf("DTWIN Reads Typical: %"PRIu64"\n",
		le64_to_cpu(plpns_log->dtwin_rt));
	printf("DTWIN Writes Typical: %"PRIu64"\n",
		le64_to_cpu(plpns_log->dtwin_wt));
	printf("DTWIN Time Maximum: %"PRIu64"\n",
		le64_to_cpu(plpns_log->dtwin_tmax));
	printf("NDWIN Time Minimum High: %"PRIu64" \n",
		le64_to_cpu(plpns_log->ndwin_tmin_hi));
	printf("NDWIN Time Minimum Low: %"PRIu64"\n",
		le64_to_cpu(plpns_log->ndwin_tmin_lo));
	printf("DTWIN Reads Estimate: %"PRIu64"\n",
		le64_to_cpu(plpns_log->dtwin_re));
	printf("DTWIN Writes Estimate: %"PRIu64"\n",
		le64_to_cpu(plpns_log->dtwin_we));
	printf("DTWIN Time Estimate: %"PRIu64"\n\n\n",
		le64_to_cpu(plpns_log->dtwin_te));
}

void nvme_show_predictable_latency_event_agg_log(
	struct nvme_aggregate_predictable_lat_event *pea_log,
	__u64 log_entries, __u32 size, const char *devname,
	enum nvme_print_flags flags)
{
	__u64 num_iter;
	__u64 num_entries;

	if (flags & BINARY)
		return d_raw((unsigned char *)pea_log, size);
	if (flags & JSON)
		return json_predictable_latency_event_agg_log(pea_log,
			log_entries);

	num_entries = le64_to_cpu(pea_log->num_entries);
	printf("Predictable Latency Event Aggregate Log for"\
		" device: %s\n", devname);

	printf("Number of Entries Available: %"PRIu64"\n",
		(uint64_t)num_entries);

	num_iter = min(num_entries, log_entries);
	for (int i = 0; i < num_iter; i++) {
		printf("Entry[%d]: %u\n", i + 1,
			le16_to_cpu(pea_log->entries[i]));
	}
}

const char *nvme_pel_event_to_string(int type)
{
	switch (type) {
	case NVME_PEL_SMART_HEALTH_EVENT:	return "SMART/Health Log Snapshot Event(0x1)";
	case NVME_PEL_FW_COMMIT_EVENT:	return "Firmware Commit Event(0x2)";
	case NVME_PEL_TIMESTAMP_EVENT:	return "Timestamp Change Event(0x3)";
	case NVME_PEL_POWER_ON_RESET_EVENT:	return "Power-on or Reset Event(0x4)";
	case NVME_PEL_NSS_HW_ERROR_EVENT:	return "NVM Subsystem Hardware Error Event(0x5)";
	case NVME_PEL_CHANGE_NS_EVENT:	return "Change Namespace Event(0x6)";
	case NVME_PEL_FORMAT_START_EVENT:	return "Format NVM Start Event(0x7)";
	case NVME_PEL_FORMAT_COMPLETION_EVENT:	return "Format NVM Completion Event(0x8)";
	case NVME_PEL_SANITIZE_START_EVENT:	return "Sanitize Start Event(0x9)";
	case NVME_PEL_SANITIZE_COMPLETION_EVENT:	return "Sanitize Completion Event(0xa)";
	case NVME_PEL_SET_FEATURE_EVENT:	return "Set Feature Event(0xb)";
	case NVME_PEL_TELEMETRY_CRT:		return "Set Telemetry CRT  Event(0xc)";
	case NVME_PEL_THERMAL_EXCURSION_EVENT:	return "Thermal Excursion Event(0xd)";
	default:			return NULL;
	}
}

static const char *nvme_show_nss_hw_error(__u16 error_code)
{
	switch (error_code) {
	case 0x01:
		return "PCIe Correctable Error";
	case 0x02:
		return "PCIe Uncorrectable Non fatal Error";
	case 0x03:
		return "PCIe Uncorrectable Fatal Error";
	case 0x04:
		return "PCIe Link Status Change";
	case 0x05:
		return "PCIe Link Not Active";
	case 0x06:
		return "Critical Warning Condition";
	case 0x07:
		return "Endurance Group Critical Warning Condition";
	case 0x08:
		return "Unsafe Shutdown";
	case 0x09:
		return "Controller Fatal Status";
	case 0xA:
		return "Media and Data Integrity Status";
	case 0xB:
		return "Controller Ready Timeout Exceeded";
	default:
		return "Reserved";
	}
}

static void nvme_show_persistent_event_log_rci(__le32 pel_header_rci)
{
	__u32 rci = le32_to_cpu(pel_header_rci);
	__u32 rsvd19 = (rci & 0xfff80000) >> 19;
	__u8 rce = (rci & 0x40000) >> 18;
	__u8 rcpit = (rci & 0x30000) >> 16;
	__u16 rcpid = rci & 0xffff;

	if(rsvd19)
		printf("  [31:19] : %#x\tReserved\n", rsvd19);
	printf("\tReporting Context Exists (RCE): %s(%u)\n",
		rce ? "true" : "false", rce);
	printf("\tReporting Context Port Identifier Type (RCPIT): %u(%s)\n", rcpit,
		(rcpit == 0x00) ? "Does not already exist" :
		(rcpit == 0x01) ? "NVM subsystem port" :
		(rcpit == 0x02) ? "NVMe-MI port" : "Reserved");
	printf("\tReporting Context Port Identifier (RCPID): %#x\n\n", rcpid);
}

static void nvme_show_persistent_event_entry_ehai(__u8 ehai)
{
	__u8 rsvd1 = (ehai & 0xfc) >> 2;
	__u8 pit = ehai & 0x03;

	printf("  [7:2] : %#x\tReserved\n", rsvd1);
	printf("\tPort Identifier Type (PIT): %u(%s)\n", pit,
		(pit == 0x00) ? "PIT not reported and PELPID does not apply" :
		(pit == 0x01) ? "NVM subsystem port" :
		(pit == 0x02) ? "NVMe-MI port" :
		"Event not associated with any port and PELPID does not apply");
}

void nvme_show_persistent_event_log(void *pevent_log_info,
	__u8 action, __u32 size, const char *devname,
	enum nvme_print_flags flags)
{
	__u32 offset, por_info_len, por_info_list;
	__u64 *fw_rev;
	int fid, cdw11, dword_cnt;
	unsigned char *mem_buf = NULL;
	struct nvme_smart_log *smart_event;
	struct nvme_fw_commit_event *fw_commit_event;
	struct nvme_time_stamp_change_event *ts_change_event;
	struct nvme_power_on_reset_info_list *por_event;
	struct nvme_nss_hw_err_event *nss_hw_err_event;
	struct nvme_change_ns_event	*ns_event;
	struct nvme_format_nvm_start_event *format_start_event;
	struct nvme_format_nvm_compln_event *format_cmpln_event;
	struct nvme_sanitize_start_event *sanitize_start_event;
	struct nvme_sanitize_compln_event *sanitize_cmpln_event;
	struct nvme_set_feature_event *set_feat_event;
	struct nvme_thermal_exc_event *thermal_exc_event;
	struct nvme_persistent_event_log *pevent_log_head;
	struct nvme_persistent_event_entry *pevent_entry_head;

	int human = flags & VERBOSE;
	if (flags & BINARY)
		return d_raw((unsigned char *)pevent_log_info, size);
	if (flags & JSON)
		return json_persistent_event_log(pevent_log_info, size);

	offset = sizeof(*pevent_log_head);

	printf("Persistent Event Log for device: %s\n", devname);
	printf("Action for Persistent Event Log: %u\n", action);
	if (size >= offset) {
		pevent_log_head = pevent_log_info;
		printf("Log Identifier: %u\n", pevent_log_head->lid);
		printf("Total Number of Events: %u\n",
			le32_to_cpu(pevent_log_head->tnev));
		printf("Total Log Length : %"PRIu64"\n",
			le64_to_cpu(pevent_log_head->tll));
		printf("Log Revision: %u\n", pevent_log_head->rv);
		printf("Log Header Length: %u\n", pevent_log_head->lhl);
		printf("Timestamp: %"PRIu64"\n",
			le64_to_cpu(pevent_log_head->ts));
		printf("Power On Hours (POH): %s",
			uint128_t_to_l10n_string(le128_to_cpu(pevent_log_head->poh)));
		printf("Power Cycle Count: %"PRIu64"\n",
			le64_to_cpu(pevent_log_head->pcc));
		printf("PCI Vendor ID (VID): %u\n",
			le16_to_cpu(pevent_log_head->vid));
		printf("PCI Subsystem Vendor ID (SSVID): %u\n",
			le16_to_cpu(pevent_log_head->ssvid));
		printf("Serial Number (SN): %-.*s\n",
			(int)sizeof(pevent_log_head->sn), pevent_log_head->sn);
		printf("Model Number (MN): %-.*s\n",
			(int)sizeof(pevent_log_head->mn), pevent_log_head->mn);
		printf("NVM Subsystem NVMe Qualified Name (SUBNQN): %-.*s\n",
			(int)sizeof(pevent_log_head->subnqn),
			pevent_log_head->subnqn);
		printf("Generation Number: %u\n",
			le16_to_cpu(pevent_log_head->gen_number));
		printf("Reporting Context Information (RCI): %u\n",
			le32_to_cpu(pevent_log_head->rci));
		if (human)
			nvme_show_persistent_event_log_rci(pevent_log_head->rci);
		printf("Supported Events Bitmap: \n");
		for (int i = 0; i < 32; i++) {
			if (pevent_log_head->seb[i] == 0)
				continue;
			add_bitmap(i, pevent_log_head->seb[i], NULL, 0);
		}
	} else {
		printf("No log data can be shown with this log len at least " \
			"512 bytes is required or can be 0 to read the complete "\
			"log page after context established\n");
		return;
	}
	printf("\n");
	printf("\nPersistent Event Entries:\n");
	for (int i = 0; i < le32_to_cpu(pevent_log_head->tnev); i++) {
		if (offset + sizeof(*pevent_entry_head) >= size)
			break;

		pevent_entry_head = pevent_log_info + offset;

		if ((offset + pevent_entry_head->ehl + 3 +
			le16_to_cpu(pevent_entry_head->el)) >= size)
			break;
		printf("Event Number: %u\n", i);
		printf("Event Type: %s\n", nvme_pel_event_to_string(pevent_entry_head->etype));
		printf("Event Type Revision: %u\n", pevent_entry_head->etype_rev);
		printf("Event Header Length: %u\n", pevent_entry_head->ehl);
		printf("Event Header Additional Info: %u\n", pevent_entry_head->ehai);
		if (human)
			nvme_show_persistent_event_entry_ehai(pevent_entry_head->ehai);
		printf("Controller Identifier: %u\n",
			le16_to_cpu(pevent_entry_head->cntlid));
		printf("Event Timestamp: %"PRIu64"\n",
			le64_to_cpu(pevent_entry_head->ets));
		printf("Port Identifier: %u\n",
			le16_to_cpu(pevent_entry_head->pelpid));
		printf("Vendor Specific Information Length: %u\n",
			le16_to_cpu(pevent_entry_head->vsil));
		printf("Event Length: %u\n", le16_to_cpu(pevent_entry_head->el));

		offset += pevent_entry_head->ehl + 3;

		switch (pevent_entry_head->etype) {
		case NVME_PEL_SMART_HEALTH_EVENT:
			smart_event = pevent_log_info + offset;
			printf("Smart Health Event Entry: \n");
			nvme_show_smart_log(smart_event, NVME_NSID_ALL, devname, flags);
			break;
		case NVME_PEL_FW_COMMIT_EVENT:
			fw_commit_event = pevent_log_info + offset;
			printf("FW Commit Event Entry: \n");
			printf("Old Firmware Revision: %"PRIu64" (%s)\n",
				le64_to_cpu(fw_commit_event->old_fw_rev),
				util_fw_to_string((char *)&fw_commit_event->old_fw_rev));
			printf("New Firmware Revision: %"PRIu64" (%s)\n",
				le64_to_cpu(fw_commit_event->new_fw_rev),
				util_fw_to_string((char *)&fw_commit_event->new_fw_rev));
			printf("FW Commit Action: %u\n",
				fw_commit_event->fw_commit_action);
			printf("FW Slot: %u\n", fw_commit_event->fw_slot);
			printf("Status Code Type for Firmware Commit Command: %u\n",
				fw_commit_event->sct_fw);
			printf("Status Returned for Firmware Commit Command: %u\n",
				fw_commit_event->sc_fw);
			printf("Vendor Assigned Firmware Commit Result Code: %u\n",
				le16_to_cpu(fw_commit_event->vndr_assign_fw_commit_rc));
			break;
		case NVME_PEL_TIMESTAMP_EVENT:
			ts_change_event = pevent_log_info + offset;
			printf("Time Stamp Change Event Entry: \n");
			printf("Previous Timestamp: %"PRIu64"\n",
				le64_to_cpu(ts_change_event->previous_timestamp));
			printf("Milliseconds Since Reset: %"PRIu64"\n",
				le64_to_cpu(ts_change_event->ml_secs_since_reset));
			break;
		case NVME_PEL_POWER_ON_RESET_EVENT:
			por_info_len = (le16_to_cpu(pevent_entry_head->el) -
				le16_to_cpu(pevent_entry_head->vsil) - sizeof(*fw_rev));

			por_info_list = por_info_len / sizeof(*por_event);

			printf("Power On Reset Event Entry: \n");
			fw_rev = pevent_log_info + offset;
			printf("Firmware Revision: %"PRIu64" (%s)\n", le64_to_cpu(*fw_rev),
				util_fw_to_string((char *)fw_rev));
			printf("Reset Information List: \n");

			for (int i = 0; i < por_info_list; i++) {
				por_event = pevent_log_info + offset +
					sizeof(*fw_rev) + i * sizeof(*por_event);
				printf("Controller ID: %u\n", le16_to_cpu(por_event->cid));
				printf("Firmware Activation: %u\n",
					por_event->fw_act);
				printf("Operation in Progress: %u\n",
					por_event->op_in_prog);
				printf("Controller Power Cycle: %u\n",
					le32_to_cpu(por_event->ctrl_power_cycle));
				printf("Power on milliseconds: %"PRIu64"\n",
					le64_to_cpu(por_event->power_on_ml_seconds));
				printf("Controller Timestamp: %"PRIu64"\n",
					le64_to_cpu(por_event->ctrl_time_stamp));
			}
			break;
		case NVME_PEL_NSS_HW_ERROR_EVENT:
			nss_hw_err_event = pevent_log_info + offset;
			printf("NVM Subsystem Hardware Error Event Code Entry: %u, %s\n",
				le16_to_cpu(nss_hw_err_event->nss_hw_err_event_code),
				nvme_show_nss_hw_error(nss_hw_err_event->nss_hw_err_event_code));
			break;
		case NVME_PEL_CHANGE_NS_EVENT:
			ns_event = pevent_log_info + offset;
			printf("Change Namespace Event Entry: \n");
			printf("Namespace Management CDW10: %u\n",
				le32_to_cpu(ns_event->nsmgt_cdw10));
			printf("Namespace Size: %"PRIu64"\n",
				le64_to_cpu(ns_event->nsze));
			printf("Namespace Capacity: %"PRIu64"\n",
				le64_to_cpu(ns_event->nscap));
			printf("Formatted LBA Size: %u\n", ns_event->flbas);
			printf("End-to-end Data Protection Type Settings: %u\n",
				ns_event->dps);
			printf("Namespace Multi-path I/O and Namespace Sharing" \
				" Capabilities: %u\n", ns_event->nmic);
			printf("ANA Group Identifier: %u\n",
				le32_to_cpu(ns_event->ana_grp_id));
			printf("NVM Set Identifier: %u\n", le16_to_cpu(ns_event->nvmset_id));
			printf("Namespace ID: %u\n", le32_to_cpu(ns_event->nsid));
			break;
		case NVME_PEL_FORMAT_START_EVENT:
			format_start_event = pevent_log_info + offset;
			printf("Format NVM Start Event Entry: \n");
			printf("Namespace Identifier: %u\n",
				le32_to_cpu(format_start_event->nsid));
			printf("Format NVM Attributes: %u\n",
				format_start_event->fna);
			printf("Format NVM CDW10: %u\n",
				le32_to_cpu(format_start_event->format_nvm_cdw10));
			break;
		case NVME_PEL_FORMAT_COMPLETION_EVENT:
			format_cmpln_event = pevent_log_info + offset;
			printf("Format NVM Completion Event Entry: \n");
			printf("Namespace Identifier: %u\n",
				le32_to_cpu(format_cmpln_event->nsid));
			printf("Smallest Format Progress Indicator: %u\n",
				format_cmpln_event->smallest_fpi);
			printf("Format NVM Status: %u\n",
				format_cmpln_event->format_nvm_status);
			printf("Completion Information: %u\n",
				le16_to_cpu(format_cmpln_event->compln_info));
			printf("Status Field: %u\n",
				le32_to_cpu(format_cmpln_event->status_field));
			break;
		case NVME_PEL_SANITIZE_START_EVENT:
			sanitize_start_event = pevent_log_info + offset;
			printf("Sanitize Start Event Entry: \n");
			printf("SANICAP: %u\n", sanitize_start_event->sani_cap);
			printf("Sanitize CDW10: %u\n",
				le32_to_cpu(sanitize_start_event->sani_cdw10));
			printf("Sanitize CDW11: %u\n",
				le32_to_cpu(sanitize_start_event->sani_cdw11));
			break;
		case NVME_PEL_SANITIZE_COMPLETION_EVENT:
			sanitize_cmpln_event = pevent_log_info + offset;
			printf("Sanitize Completion Event Entry: \n");
			printf("Sanitize Progress: %u\n",
				le16_to_cpu(sanitize_cmpln_event->sani_prog));
			printf("Sanitize Status: %u\n",
				le16_to_cpu(sanitize_cmpln_event->sani_status));
			printf("Completion Information: %u\n",
				le16_to_cpu(sanitize_cmpln_event->cmpln_info));
			break;
		case NVME_PEL_SET_FEATURE_EVENT:
			set_feat_event = pevent_log_info + offset;
			printf("Set Feature Event Entry: \n");
			dword_cnt =  set_feat_event->layout & 0x03;
			fid = le32_to_cpu(set_feat_event->cdw_mem[0]) & 0x000f;
			cdw11 = le32_to_cpu(set_feat_event->cdw_mem[1]);

			printf("Set Feature ID  :%#02x (%s),  value:%#08x\n", fid,
				nvme_feature_to_string(fid), cdw11);
			if (((set_feat_event->layout & 0xff) >> 2) != 0) {
				mem_buf = (unsigned char *)(set_feat_event + 4 + dword_cnt * 4);
				nvme_feature_show_fields(fid, cdw11, mem_buf);
			}
			break;
		case NVME_PEL_TELEMETRY_CRT:
			d(pevent_log_info + offset, 512, 16, 1);
			break;
		case NVME_PEL_THERMAL_EXCURSION_EVENT:
			thermal_exc_event = pevent_log_info + offset;
			printf("Thermal Excursion Event Entry: \n");
			printf("Over Temperature: %u\n", thermal_exc_event->over_temp);
			printf("Threshold: %u\n", thermal_exc_event->threshold);
			break;
		default:
			printf("Reserved Event\n\n");
		}
		offset += le16_to_cpu(pevent_entry_head->el);
		printf("\n");
	}
}

void nvme_show_endurance_group_event_agg_log(
	struct nvme_aggregate_predictable_lat_event *endurance_log,
	__u64 log_entries, __u32 size, const char *devname,
	enum nvme_print_flags flags)
{

	if (flags & BINARY)
		return d_raw((unsigned char *)endurance_log, size);
	if (flags & JSON)
		return json_endurance_group_event_agg_log(endurance_log,
			log_entries);

	printf("Endurance Group Event Aggregate Log for"\
		" device: %s\n", devname);

	printf("Number of Entries Available: %"PRIu64"\n",
		le64_to_cpu(endurance_log->num_entries));

	for (int i = 0; i < log_entries; i++) {
		printf("Entry[%d]: %u\n", i + 1,
			le16_to_cpu(endurance_log->entries[i]));
	}
}

void nvme_show_lba_status_log(void *lba_status, __u32 size,
	const char *devname, enum nvme_print_flags flags)
{
	struct nvme_lba_status_log *hdr;
	struct nvme_lbas_ns_element *ns_element;
	struct nvme_lba_rd *range_desc;
	int offset = sizeof(*hdr);
	__u32 num_lba_desc, num_elements;

	if (flags & BINARY)
		return d_raw((unsigned char *)lba_status, size);
	if (flags & JSON)
		return json_lba_status_log(lba_status);

	hdr = lba_status;
	printf("LBA Status Log for device: %s\n", devname);
	printf("LBA Status Log Page Length: %"PRIu32"\n",
		le32_to_cpu(hdr->lslplen));
	num_elements = le32_to_cpu(hdr->nlslne);
	printf("Number of LBA Status Log Namespace Elements: %"PRIu32"\n",
		num_elements);
	printf("Estimate of Unrecoverable Logical Blocks: %"PRIu32"\n",
		le32_to_cpu(hdr->estulb));
	printf("LBA Status Generation Counter: %"PRIu16"\n", le16_to_cpu(hdr->lsgc));
	for (int ele = 0; ele < num_elements; ele++) {
		ns_element = lba_status + offset;
		printf("Namespace Element Identifier: %"PRIu32"\n",
			le32_to_cpu(ns_element->neid));
		num_lba_desc = le32_to_cpu(ns_element->nlrd);
		printf("Number of LBA Range Descriptors: %"PRIu32"\n", num_lba_desc);
		printf("Recommended Action Type: %u\n", ns_element->ratype);

		offset += sizeof(*ns_element);
		if (num_lba_desc != 0xffffffff) {
			for (int i = 0; i < num_lba_desc; i++) {
				range_desc = lba_status + offset;
				printf("RSLBA[%d]: %"PRIu64"\n", i,
					le64_to_cpu(range_desc->rslba));
				printf("RNLB[%d]: %"PRIu32"\n", i,
					le32_to_cpu(range_desc->rnlb));
				offset += sizeof(*range_desc);
			}
		} else {
			printf("Number of LBA Range Descriptors (NLRD) set to %#x for "\
				"NS element %d\n", num_lba_desc, ele);
		}
	}
}

static const char *resv_notif_to_string(__u8 type)
{
	switch (type) {
	case 0x1: return "Empty Log Page";
	case 0x2: return "Registration Preempted";
	case 0x3: return "Reservation Released";
	case 0x4: return "Reservation Preempted";
	default:  return "Reserved";
	}
}

void nvme_show_resv_notif_log(struct nvme_resv_notification_log *resv,
	const char *devname, enum nvme_print_flags flags)
{
	if (flags & BINARY)
		return d_raw((unsigned char *)resv, sizeof(*resv));
	if (flags & JSON)
		return json_resv_notif_log(resv);

	printf("Reservation Notif Log for device: %s\n", devname);
	printf("Log Page Count				: %"PRIx64"\n",
		le64_to_cpu(resv->lpc));
	printf("Resv Notif Log Page Type	: %u (%s)\n",
		resv->rnlpt,
		resv_notif_to_string(resv->rnlpt));
	printf("Num of Available Log Pages	: %u\n", resv->nalp);
	printf("Namespace ID:				: %"PRIx32"\n",
		le32_to_cpu(resv->nsid));
}

static void nvme_show_fid_support_effects_log_human(__u32 fid_support)
{
	const char *set = "+";
	const char *clr = "-";
	__u16 fsp;

	printf("  FSUPP+");
	printf("  UDCC%s", (fid_support & NVME_FID_SUPPORTED_EFFECTS_UDCC) ? set : clr);
	printf("  NCC%s", (fid_support & NVME_FID_SUPPORTED_EFFECTS_NCC) ? set : clr);
	printf("  NIC%s", (fid_support & NVME_FID_SUPPORTED_EFFECTS_NIC) ? set : clr);
	printf("  CCC%s", (fid_support & NVME_FID_SUPPORTED_EFFECTS_CCC) ? set : clr);
	printf("  USS%s", (fid_support & NVME_FID_SUPPORTED_EFFECTS_UUID_SEL) ? set : clr);

	fsp = (fid_support >> NVME_FID_SUPPORTED_EFFECTS_SCOPE_SHIFT) & NVME_FID_SUPPORTED_EFFECTS_SCOPE_MASK;

	printf("  NAMESPACE SCOPE%s", (fsp & NVME_FID_SUPPORTED_EFFECTS_SCOPE_NS) ? set : clr);
	printf("  CONTROLLER SCOPE%s", (fsp & NVME_FID_SUPPORTED_EFFECTS_SCOPE_CTRL) ? set : clr);
	printf("  NVM SET SCOPE%s", (fsp & NVME_FID_SUPPORTED_EFFECTS_SCOPE_NVM_SET) ? set : clr);
	printf("  ENDURANCE GROUP SCOPE%s", (fsp & NVME_FID_SUPPORTED_EFFECTS_SCOPE_ENDGRP) ? set : clr);
	printf("  DOMAIN SCOPE%s", (fsp & NVME_FID_SUPPORTED_EFFECTS_SCOPE_DOMAIN) ? set : clr);
	printf("  NVM Subsystem SCOPE%s", (fsp & NVME_FID_SUPPORTED_EFFECTS_SCOPE_NSS) ? set : clr);
}

void nvme_show_fid_support_effects_log(struct nvme_fid_supported_effects_log *fid_log,
	const char *devname, enum nvme_print_flags flags)
{
	__u32 fid_effect;
	int i, human = flags & VERBOSE;

	if (flags & BINARY)
		return d_raw((unsigned char *)fid_log, sizeof(*fid_log));
	if (flags & JSON)
		return json_fid_support_effects_log(fid_log);

	printf("FID Supports Effects Log for device: %s\n", devname);
	printf("Admin Command Set\n");
	for (i = 0; i < 256; i++) {
		fid_effect = le32_to_cpu(fid_log->fid_support[i]);
		if (fid_effect & NVME_FID_SUPPORTED_EFFECTS_FSUPP) {
			printf("FID %02x -> Support Effects Log: %08x", i,
				fid_effect);
			if (human)
				nvme_show_fid_support_effects_log_human(fid_effect);
			else
				printf("\n");
		}
	}
}

static void nvme_show_mi_cmd_support_effects_log_human(__u32 mi_cmd_support)
{
	const char *set = "+";
	const char *clr = "-";
	__u16 csp;

	printf("  CSUPP+");
	printf("  UDCC%s", (mi_cmd_support & NVME_MI_CMD_SUPPORTED_EFFECTS_UDCC) ? set : clr);
	printf("  NCC%s", (mi_cmd_support & NVME_MI_CMD_SUPPORTED_EFFECTS_NCC) ? set : clr);
	printf("  NIC%s", (mi_cmd_support & NVME_MI_CMD_SUPPORTED_EFFECTS_NIC) ? set : clr);
	printf("  CCC%s", (mi_cmd_support & NVME_MI_CMD_SUPPORTED_EFFECTS_CCC) ? set : clr);

	csp = (mi_cmd_support >> NVME_MI_CMD_SUPPORTED_EFFECTS_SCOPE_SHIFT) & NVME_MI_CMD_SUPPORTED_EFFECTS_SCOPE_MASK;

	printf("  NAMESPACE SCOPE%s", (csp & NVME_MI_CMD_SUPPORTED_EFFECTS_SCOPE_NS) ? set : clr);
	printf("  CONTROLLER SCOPE%s", (csp & NVME_MI_CMD_SUPPORTED_EFFECTS_SCOPE_CTRL) ? set : clr);
	printf("  NVM SET SCOPE%s", (csp & NVME_MI_CMD_SUPPORTED_EFFECTS_SCOPE_NVM_SET) ? set : clr);
	printf("  ENDURANCE GROUP SCOPE%s", (csp & NVME_MI_CMD_SUPPORTED_EFFECTS_SCOPE_ENDGRP) ? set : clr);
	printf("  DOMAIN SCOPE%s", (csp & NVME_MI_CMD_SUPPORTED_EFFECTS_SCOPE_DOMAIN) ? set : clr);
	printf("  NVM Subsystem SCOPE%s", (csp & NVME_MI_CMD_SUPPORTED_EFFECTS_SCOPE_NSS) ? set : clr);
}

void nvme_show_mi_cmd_support_effects_log(struct nvme_mi_cmd_supported_effects_log *mi_cmd_log,
	const char *devname, enum nvme_print_flags flags)
{
	__u32 mi_cmd_effect;
	int i, human = flags & VERBOSE;

	if (flags & BINARY)
		return d_raw((unsigned char *)mi_cmd_log, sizeof(*mi_cmd_log));
	if (flags & JSON)
		return json_mi_cmd_support_effects_log(mi_cmd_log);

	printf("MI Commands Support Effects Log for device: %s\n", devname);
	printf("Admin Command Set\n");
	for (i = 0; i < NVME_LOG_MI_CMD_SUPPORTED_EFFECTS_MAX; i++) {
		mi_cmd_effect = le32_to_cpu(mi_cmd_log->mi_cmd_support[i]);
		if (mi_cmd_effect & NVME_MI_CMD_SUPPORTED_EFFECTS_CSUPP) {
			printf("MI CMD %02x -> Support Effects Log: %08x", i,
					mi_cmd_effect);
			if (human)
				nvme_show_mi_cmd_support_effects_log_human(mi_cmd_effect);
			else
				printf("\n");
		}
	}
}

void nvme_show_boot_part_log(void *bp_log, const char *devname,
	__u32 size, enum nvme_print_flags flags)
{
	struct nvme_boot_partition *hdr;
	if (flags & BINARY)
		return d_raw((unsigned char *)bp_log, size);
	if (flags & JSON)
		return json_boot_part_log(bp_log);

	hdr = bp_log;
	printf("Boot Partition Log for device: %s\n", devname);
	printf("Log ID: %u\n", hdr->lid);
	printf("Boot Partition Size: %u KiB\n", le32_to_cpu(hdr->bpinfo) & 0x7fff);
	printf("Active BPID: %u\n", (le32_to_cpu(hdr->bpinfo) >> 31) & 0x1);
}

void nvme_show_media_unit_stat_log(struct nvme_media_unit_stat_log *mus_log,
				   enum nvme_print_flags flags)
{
	int i;
	int nmu = le16_to_cpu(mus_log->nmu);

	if (flags & BINARY)
		return d_raw((unsigned char *)mus_log, sizeof(*mus_log));
	else if (flags & JSON)
		return json_media_unit_stat_log(mus_log);

	printf("Number of Media Unit Status Descriptors: %u\n", nmu);
	printf("Number of Channels: %u\n", le16_to_cpu(mus_log->cchans));
	printf("Selected Configuration: %u\n", le16_to_cpu(mus_log->sel_config));
	for (i = 0; i < nmu; i++) {
		printf("Media Unit Status Descriptor: %u\n", i);
		printf("Media Unit Identifier: %u\n",
			le16_to_cpu(mus_log->mus_desc[i].muid));
		printf("Domain Identifier: %u\n",
			le16_to_cpu(mus_log->mus_desc[i].domainid));
		printf("Endurance Group Identifier: %u\n",
			le16_to_cpu(mus_log->mus_desc[i].endgid));
		printf("NVM Set Identifier: %u\n",
			le16_to_cpu(mus_log->mus_desc[i].nvmsetid));
		printf("Capacity Adjustment Factor: %u\n",
			le16_to_cpu(mus_log->mus_desc[i].cap_adj_fctr));
		printf("Available Spare: %u\n", mus_log->mus_desc[i].avl_spare);
		printf("Percentage Used: %u\n", mus_log->mus_desc[i].percent_used);
		printf("Number of Channels: %u\n", mus_log->mus_desc[i].mucs);
		printf("Channel Identifiers Offset: %u\n", mus_log->mus_desc[i].cio);
	}
}

void nvme_show_fdp_config_fdpa(uint8_t fdpa)
{
	__u8 valid = (fdpa >> 7) & 0x1;
	__u8 rsvd = (fdpa >> 5) >> 0x3;
	__u8 fdpvwc = (fdpa >> 4) & 0x1;
	__u8 rgif = fdpa & 0xf;

	printf("  [7:7] : %#x\tFDP Configuration %sValid\n",
		valid, valid ? "" : "Not ");
	if (rsvd)
		printf("  [6:5] : %#x\tReserved\n", rsvd);
	printf("  [4:4] : %#x\tFDP Volatile Write Cache %sPresent\n",
		fdpvwc, fdpvwc ? "" : "Not ");
	printf("  [3:0] : %#x\tReclaim Group Identifier Format\n", rgif);
}

void nvme_show_fdp_configs(struct nvme_fdp_config_log *log, size_t len,
		enum nvme_print_flags flags)
{
	void *p = log->configs;
	int human = flags & VERBOSE;
	uint16_t n;

	if (flags & BINARY)
		return d_raw((unsigned char *)log, len);
	if (flags & JSON)
		return json_nvme_fdp_configs(log, len);

	n = le16_to_cpu(log->n) + 1;

	for (int i = 0; i < n; i++) {
		struct nvme_fdp_config_desc *config = p;

		printf("FDP Attributes: %#x\n", config->fdpa);
		if (human)
			nvme_show_fdp_config_fdpa(config->fdpa);

		printf("Vendor Specific Size: %u\n", config->vss);
		printf("Number of Reclaim Groups: %"PRIu32"\n", le32_to_cpu(config->nrg));
		printf("Number of Reclaim Unit Handles: %"PRIu16"\n", le16_to_cpu(config->nruh));
		printf("Number of Namespaces Supported: %"PRIu32"\n", le32_to_cpu(config->nnss));
		printf("Reclaim Unit Nominal Size: %"PRIu64"\n", le64_to_cpu(config->runs));
		printf("Estimated Reclaim Unit Time Limit: %"PRIu32"\n", le32_to_cpu(config->erutl));

		printf("Reclaim Unit Handle List:\n");
		for (int j = 0; j < le16_to_cpu(config->nruh); j++) {
			struct nvme_fdp_ruh_desc *ruh = &config->ruhs[j];

			printf("  [%d]: %s\n", j, ruh->ruht == NVME_FDP_RUHT_INITIALLY_ISOLATED ? "Initially Isolated" : "Persistently Isolated");
		}

		p += config->size;
	}
}

void nvme_show_fdp_usage(struct nvme_fdp_ruhu_log *log, size_t len,
		enum nvme_print_flags flags)
{
	if (flags & BINARY)
		return d_raw((unsigned char *)log, len);
	if (flags & JSON)
		return json_nvme_fdp_usage(log, len);

	uint16_t nruh = le16_to_cpu(log->nruh);

	for (int i = 0; i < nruh; i++) {
		struct nvme_fdp_ruhu_desc *ruhu = &log->ruhus[i];

		printf("Reclaim Unit Handle %d Attributes: 0x%"PRIx8" (%s)\n", i, ruhu->ruha,
				ruhu->ruha == 0x0 ? "Unused" : (
				ruhu->ruha == 0x1 ? "Host Specified" : (
				ruhu->ruha == 0x2 ? "Controller Specified" : "Unknown")));
	}
}

void nvme_show_fdp_stats(struct nvme_fdp_stats_log *log,
		enum nvme_print_flags flags)
{
	if (flags & BINARY)
		return d_raw((unsigned char*)log, sizeof(*log));
	if (flags & JSON)
		return json_nvme_fdp_stats(log);

	printf("Host Bytes with Metadata Written (HBMW): %s\n",
		uint128_t_to_l10n_string(le128_to_cpu(log->hbmw)));
	printf("Media Bytes with Metadata Written (MBMW): %s\n",
		uint128_t_to_l10n_string(le128_to_cpu(log->mbmw)));
	printf("Media Bytes Erased (MBE): %s\n",
		uint128_t_to_l10n_string(le128_to_cpu(log->mbe)));
}

static const char *nvme_fdp_event_to_string(enum nvme_fdp_event_type event)
{
	switch (event) {
	case NVME_FDP_EVENT_RUNFW:	return "Reclaim Unit Not Fully Written";
	case NVME_FDP_EVENT_RUTLE:	return "Reclaim Unit Active Time Limit Exceeded";
	case NVME_FDP_EVENT_RESET:	return "Controller Level Reset Modified Reclaim Unit Handles";
	case NVME_FDP_EVENT_PID:	return "Invalid Placement Identifier";
	case NVME_FDP_EVENT_REALLOC:	return "Media Reallocated";
	case NVME_FDP_EVENT_MODIFY:	return "Implicitly Modified Reclaim Unit Handle";
	}

	return "Unknown";
}

void nvme_show_fdp_events(struct nvme_fdp_events_log *log,
		enum nvme_print_flags flags)
{
	struct tm *tm;
	char buffer[320];
	time_t ts;

	if (flags & BINARY)
		return d_raw((unsigned char*)log, sizeof(*log));
	if (flags & JSON)
		return json_nvme_fdp_events(log);

	uint32_t n = le32_to_cpu(log->n);

	for (unsigned int i = 0; i < n; i++) {
		struct nvme_fdp_event *event = &log->events[i];

		ts = int48_to_long(event->ts.timestamp) / 1000;
		tm = localtime(&ts);

		printf("Event[%u]\n", i);
		printf("  Event Type: 0x%"PRIx8" (%s)\n", event->type, nvme_fdp_event_to_string(event->type));
		printf("  Event Timestamp: %"PRIu64" (%s)\n", int48_to_long(event->ts.timestamp),
			strftime(buffer, sizeof(buffer), "%c %Z", tm) ? buffer : "-");

		if (event->flags & NVME_FDP_EVENT_F_PIV)
			printf("  Placement Identifier (PID): 0x%"PRIx16"\n", le16_to_cpu(event->pid));

		if (event->flags & NVME_FDP_EVENT_F_NSIDV)
			printf("  Namespace Identifier (NSID): %"PRIu32"\n", le32_to_cpu(event->nsid));

		if (event->type == NVME_FDP_EVENT_REALLOC) {
			struct nvme_fdp_event_realloc *mr;
			mr = (struct nvme_fdp_event_realloc *)&event->type_specific;

			printf("  Number of LBAs Moved (NLBAM): %"PRIu16"\n", le16_to_cpu(mr->nlbam));

			if (mr->flags & NVME_FDP_EVENT_REALLOC_F_LBAV) {
				printf("  Logical Block Address (LBA): 0x%"PRIx64"\n", le64_to_cpu(mr->lba));
			}
		}

		if (event->flags & NVME_FDP_EVENT_F_LV) {
			printf("  Reclaim Group Identifier: %"PRIu16"\n", le16_to_cpu(event->rgid));
			printf("  Reclaim Unit Handle Identifier %"PRIu8"\n", event->ruhid);
		}

		printf("\n");
	}
}

void nvme_show_fdp_ruh_status(struct nvme_fdp_ruh_status *status, size_t len,
		enum nvme_print_flags flags)
{
	if (flags & BINARY)
		return d_raw((unsigned char *)status, len);
	if (flags & JSON)
		return json_nvme_fdp_ruh_status(status, len);

	uint16_t nruhsd = le16_to_cpu(status->nruhsd);

	for (unsigned int i = 0; i < nruhsd; i++) {
		struct nvme_fdp_ruh_status_desc *ruhs = &status->ruhss[i];

		printf("Placement Identifier %"PRIu16"; Reclaim Unit Handle Identifier %"PRIu16"\n",
				le16_to_cpu(ruhs->pid), le16_to_cpu(ruhs->ruhid));
		printf("  Estimated Active Reclaim Unit Time Remaining (EARUTR): %"PRIu32"\n",
				le32_to_cpu(ruhs->earutr));
		printf("  Reclaim Unit Available Media Writes (RUAMW): %"PRIu64"\n",
				le64_to_cpu(ruhs->ruamw));

		printf("\n");
	}
}

void nvme_show_supported_cap_config_log(
	struct nvme_supported_cap_config_list_log *cap,
	enum nvme_print_flags flags)
{
	struct nvme_end_grp_chan_desc *chan_desc;
	int i, j, k, l, m, sccn, egcn, egsets, egchans, chmus;

	if (flags & BINARY)
		return d_raw((unsigned char *)cap, sizeof(*cap));
	else if (flags & JSON)
		return json_supported_cap_config_log(cap);

	sccn = cap->sccn;
	printf("Number of Supported Capacity Configurations: %u\n", sccn);
	for (i = 0; i < sccn; i++) {
		printf("Capacity Configuration Descriptor: %u\n", i);
		printf("Capacity Configuration Identifier: %u\n",
			le16_to_cpu(cap->cap_config_desc[i].cap_config_id));
		printf("Domain Identifier: %u\n",
			le16_to_cpu(cap->cap_config_desc[i].domainid));
		egcn = le16_to_cpu(cap->cap_config_desc[i].egcn);
		printf("Number of Endurance Group Configuration Descriptors: %u\n", egcn);
		for(j = 0; j < egcn; j++) {
			printf("Endurance Group Identifier: %u\n",
				le16_to_cpu(cap->cap_config_desc[i].egcd[j].endgid));
			printf("Capacity Adjustment Factor: %u\n",
				le16_to_cpu(cap->cap_config_desc[i].egcd[j].cap_adj_factor));
			printf("Total Endurance Group Capacity: %s\n",
				uint128_t_to_l10n_string(le128_to_cpu(
					cap->cap_config_desc[i].egcd[j].tegcap)));
			printf("Spare Endurance Group Capacity: %s\n",
				uint128_t_to_l10n_string(le128_to_cpu(
					cap->cap_config_desc[i].egcd[j].segcap)));
			printf("Endurance Estimate: %s\n",
				uint128_t_to_l10n_string(le128_to_cpu(
					cap->cap_config_desc[i].egcd[j].end_est)));
			egsets = le16_to_cpu(cap->cap_config_desc[i].egcd[j].egsets);
			printf("Number of NVM Sets: %u\n", egsets);
			for(k = 0; k < egsets; k++) {
				printf("NVM Set %d Identifier: %u\n", i,
					le16_to_cpu(cap->cap_config_desc[i].egcd[j].nvmsetid[k]));
			}
			chan_desc = (struct nvme_end_grp_chan_desc *) \
					((cap->cap_config_desc[i].egcd[j].nvmsetid[0]) * (sizeof(__u16)*egsets));
			egchans = le16_to_cpu(chan_desc->egchans);
			printf("Number of Channels: %u\n", egchans);
			for(l = 0; l < egchans; l++) {
				printf("Channel Identifier: %u\n",
					le16_to_cpu(chan_desc->chan_config_desc[l].chanid));
				chmus = le16_to_cpu(chan_desc->chan_config_desc[l].chmus);
				printf("Number of Channel Media Units: %u\n", chmus);
				for(m = 0; m < chmus; m++) {
					printf("Media Unit Identifier: %u\n",
						le16_to_cpu(chan_desc->chan_config_desc[l].mu_config_desc[m].muid));
					printf("Media Unit Descriptor Length: %u\n",
						le16_to_cpu(chan_desc->chan_config_desc[l].mu_config_desc[m].mudl));
				}
			}
		}
	}
}

static unsigned int nvme_show_subsystem_multipath(nvme_subsystem_t s,
						  bool show_ana)
{
	nvme_ns_t n;
	nvme_path_t p;
	unsigned int i = 0;

	n = nvme_subsystem_first_ns(s);
	if (!n)
		return 0;

	nvme_namespace_for_each_path(n, p) {
		nvme_ctrl_t c = nvme_path_get_ctrl(p);
		const char *ana_state = "";

		if (show_ana)
			ana_state = nvme_path_get_ana_state(p);

		printf(" +- %s %s %s %s %s\n",
			nvme_ctrl_get_name(c),
			nvme_ctrl_get_transport(c),
			nvme_ctrl_get_address(c),
			nvme_ctrl_get_state(c),
			ana_state);
		i++;
	}

	return i;
}

static void nvme_show_subsystem_ctrls(nvme_subsystem_t s)
{
	nvme_ctrl_t c;

	nvme_subsystem_for_each_ctrl(s, c) {
		printf(" +- %s %s %s %s\n",
			nvme_ctrl_get_name(c),
			nvme_ctrl_get_transport(c),
			nvme_ctrl_get_address(c),
			nvme_ctrl_get_state(c));
	}
}

static void nvme_show_subsystem(nvme_root_t r, bool show_ana)
{
	nvme_host_t h;

	nvme_for_each_host(r, h) {
		nvme_subsystem_t s;

		nvme_for_each_subsystem(h, s) {
			printf("%s - NQN=%s\n", nvme_subsystem_get_name(s),
			       nvme_subsystem_get_nqn(s));
			printf("\\\n");

			if (!nvme_show_subsystem_multipath(s, show_ana))
				nvme_show_subsystem_ctrls(s);
		}
	}
}

void nvme_show_subsystem_list(nvme_root_t r, bool show_ana,
			      enum nvme_print_flags flags)
{
	if (flags & JSON)
		return json_print_nvme_subsystem_list(r, show_ana);
	nvme_show_subsystem(r, show_ana);
}

static void nvme_show_registers_cap(struct nvme_bar_cap *cap)
{
	printf("\tController Ready With Media Support (CRWMS): %s\n",
		((cap->rsvd_crms_nsss_cmbs_pmrs & 0x08) >> 3) ? "Supported" : "Not Supported");
	printf("\tController Ready Independent of Media Support (CRIMS): %s\n",
		((cap->rsvd_crms_nsss_cmbs_pmrs & 0x10) >> 4) ? "Supported" : "Not Supported");
	printf("\tController Memory Buffer Supported (CMBS): The Controller Memory Buffer is %s\n",
		((cap->rsvd_crms_nsss_cmbs_pmrs & 0x02) >> 1) ? "Supported" :
			"Not Supported");
	printf("\tPersistent Memory Region Supported (PMRS): The Persistent Memory Region is %s\n",
		(cap->rsvd_crms_nsss_cmbs_pmrs & 0x01) ? "Supported" : "Not Supported");
	printf("\tMemory Page Size Maximum         (MPSMAX): %u bytes\n",
		1 <<  (12 + ((cap->mpsmax_mpsmin & 0xf0) >> 4)));
	printf("\tMemory Page Size Minimum         (MPSMIN): %u bytes\n",
		1 <<  (12 + (cap->mpsmax_mpsmin & 0x0f)));
	printf("\tBoot Partition Support              (BPS): %s\n",
		(cap->bps_css_nssrs_dstrd & 0x2000) ? "Yes":"No");
	printf("\tCommand Sets Supported              (CSS): NVM command set is %s\n",
		(cap->bps_css_nssrs_dstrd & 0x0020) ? "Supported" : "Not Supported");
	printf("\t                                           One or more I/O Command Sets are %s\n",
		(cap->bps_css_nssrs_dstrd & 0x0800) ? "Supported" : "Not Supported");
	printf("\t                                           %s\n",
		(cap->bps_css_nssrs_dstrd & 0x1000) ? "Only Admin Command Set Supported" :
		"I/O Command Set is Supported");
	printf("\tNVM Subsystem Reset Supported     (NSSRS): %s\n",
		(cap->bps_css_nssrs_dstrd & 0x0010) ? "Yes":"No");
	printf("\tDoorbell Stride                   (DSTRD): %u bytes\n",
		1 << (2 + (cap->bps_css_nssrs_dstrd & 0x000f)));
	printf("\tTimeout                              (TO): %u ms\n",
		cap->to * 500);
	printf("\tArbitration Mechanism Supported     (AMS): Weighted Round Robin with Urgent Priority Class is %s\n",
		(cap->ams_cqr & 0x02) ? "supported":"not supported");
	printf("\tContiguous Queues Required          (CQR): %s\n",
		(cap->ams_cqr & 0x01) ? "Yes":"No");
	printf("\tMaximum Queue Entries Supported    (MQES): %u\n\n",
		cap->mqes + 1);
}

static void nvme_show_registers_version(__u32 vs)
{
	printf("\tNVMe specification %d.%d\n\n", (vs & 0xffff0000) >> 16,
		(vs & 0x0000ff00) >> 8);
}

static void nvme_show_registers_cc_ams (__u8 ams)
{
	printf("\tArbitration Mechanism Selected     (AMS): ");
	switch (ams) {
	case 0:
		printf("Round Robin\n");
		break;
	case 1:
		printf("Weighted Round Robin with Urgent Priority Class\n");
		break;
	case 7:
		printf("Vendor Specific\n");
		break;
	default:
		printf("Reserved\n");
	}
}

static void nvme_show_registers_cc_shn (__u8 shn)
{
	printf("\tShutdown Notification              (SHN): ");
	switch (shn) {
	case 0:
		printf("No notification; no effect\n");
		break;
	case 1:
		printf("Normal shutdown notification\n");
		break;
	case 2:
		printf("Abrupt shutdown notification\n");
		break;
	default:
		printf("Reserved\n");
	}
}

static void nvme_show_registers_cc(__u32 cc)
{
	printf("\tController Ready Independent of Media Enable (CRIME): %s\n",
		NVME_CC_CRIME(cc) ? "Enabled":"Disabled");

	printf("\tI/O Completion Queue Entry Size (IOCQES): %u bytes\n",
		1 << ((cc & 0x00f00000) >> NVME_CC_IOCQES_SHIFT));
	printf("\tI/O Submission Queue Entry Size (IOSQES): %u bytes\n",
		1 << ((cc & 0x000f0000) >> NVME_CC_IOSQES_SHIFT));
	nvme_show_registers_cc_shn((cc & 0x0000c000) >> NVME_CC_SHN_SHIFT);
	nvme_show_registers_cc_ams((cc & 0x00003800) >> NVME_CC_AMS_SHIFT);
	printf("\tMemory Page Size                   (MPS): %u bytes\n",
		1 << (12 + ((cc & 0x00000780) >> NVME_CC_MPS_SHIFT)));
	printf("\tI/O Command Set Selected           (CSS): %s\n",
		(cc & 0x00000070) == 0x00 ? "NVM Command Set" :
		(cc & 0x00000070) == 0x60 ? "All supported I/O Command Sets" :
		(cc & 0x00000070) == 0x70 ? "Admin Command Set only" : "Reserved");
	printf("\tEnable                              (EN): %s\n\n",
		(cc & 0x00000001) ? "Yes":"No");
}

static void nvme_show_registers_csts_shst(__u8 shst)
{
	printf("\tShutdown Status               (SHST): ");
	switch (shst) {
	case 0:
		printf("Normal operation (no shutdown has been requested)\n");
		break;
	case 1:
		printf("Shutdown processing occurring\n");
		break;
	case 2:
		printf("Shutdown processing complete\n");
		break;
	default:
		printf("Reserved\n");
	}
}

static void nvme_show_registers_csts(__u32 csts)
{
	printf("\tProcessing Paused               (PP): %s\n",
		(csts & 0x00000020) ? "Yes":"No");
	printf("\tNVM Subsystem Reset Occurred (NSSRO): %s\n",
		(csts & 0x00000010) ? "Yes":"No");
	nvme_show_registers_csts_shst((csts & 0x0000000c) >> 2);
	printf("\tController Fatal Status        (CFS): %s\n",
		(csts & 0x00000002) ? "True":"False");
	printf("\tReady                          (RDY): %s\n\n",
		(csts & 0x00000001) ? "Yes":"No");

}

static void nvme_show_registers_crto(__u32 crto)
{
	printf("\tCRIMT                               : %d secs\n",
		NVME_CRTO_CRIMT(crto)/2 );
	printf("\tCRWMT                               : %d secs\n",
		NVME_CRTO_CRWMT(crto)/2 );
}

static void nvme_show_registers_aqa(__u32 aqa)
{
	printf("\tAdmin Completion Queue Size (ACQS): %u\n",
		((aqa & 0x0fff0000) >> 16) + 1);
	printf("\tAdmin Submission Queue Size (ASQS): %u\n\n",
		(aqa & 0x00000fff) + 1);

}

static void nvme_show_registers_cmbloc(__u32 cmbloc, __u32 cmbsz)
{
	static const char *enforced[] = { "Enforced", "Not Enforced" };

	if (cmbsz == 0) {
		printf("\tController Memory Buffer feature is not supported\n\n");
		return;
	}
	printf("\tOffset                                                        (OFST): 0x%x (See cmbsz.szu for granularity)\n",
			(cmbloc & 0xfffff000) >> 12);

	printf("\tCMB Queue Dword Alignment                                     (CQDA): %d\n",
			(cmbloc & 0x00000100) >> 8);

	printf("\tCMB Data Metadata Mixed Memory Support                      (CDMMMS): %s\n",
			enforced[(cmbloc & 0x00000080) >> 7]);

	printf("\tCMB Data Pointer and Command Independent Locations Support (CDPCILS): %s\n",
			enforced[(cmbloc & 0x00000040) >> 6]);

	printf("\tCMB Data Pointer Mixed Locations Support                    (CDPMLS): %s\n",
			enforced[(cmbloc & 0x00000020) >> 5]);

	printf("\tCMB Queue Physically Discontiguous Support                   (CQPDS): %s\n",
			enforced[(cmbloc & 0x00000010) >> 4]);

	printf("\tCMB Queue Mixed Memory Support                               (CQMMS): %s\n",
			enforced[(cmbloc & 0x00000008) >> 3]);

	printf("\tBase Indicator Register                                        (BIR): 0x%x\n\n",
			(cmbloc & 0x00000007));
}

static const char *nvme_register_szu_to_string(__u8 szu)
{
	switch (szu) {
	case 0:	return "4 KB";
	case 1:	return "64 KB";
	case 2:	return "1 MB";
	case 3:	return "16 MB";
	case 4:	return "256 MB";
	case 5:	return "4 GB";
	case 6:	return "64 GB";
	default:return "Reserved";
	}
}

static void nvme_show_registers_cmbsz(__u32 cmbsz)
{
	if (cmbsz == 0) {
		printf("\tController Memory Buffer feature is not supported\n\n");
		return;
	}
	printf("\tSize                      (SZ): %u\n",
		(cmbsz & 0xfffff000) >> 12);
	printf("\tSize Units               (SZU): %s\n",
		nvme_register_szu_to_string((cmbsz & 0x00000f00) >> 8));
	printf("\tWrite Data Support       (WDS): Write Data and metadata transfer in Controller Memory Buffer is %s\n",
			(cmbsz & 0x00000010) ? "Supported":"Not supported");
	printf("\tRead Data Support        (RDS): Read Data and metadata transfer in Controller Memory Buffer is %s\n",
			(cmbsz & 0x00000008) ? "Supported":"Not supported");
	printf("\tPRP SGL List Support   (LISTS): PRP/SG Lists in Controller Memory Buffer is %s\n",
			(cmbsz & 0x00000004) ? "Supported":"Not supported");
	printf("\tCompletion Queue Support (CQS): Admin and I/O Completion Queues in Controller Memory Buffer is %s\n",
			(cmbsz & 0x00000002) ? "Supported":"Not supported");
	printf("\tSubmission Queue Support (SQS): Admin and I/O Submission Queues in Controller Memory Buffer is %s\n\n",
			(cmbsz & 0x00000001) ? "Supported":"Not supported");
}

static void nvme_show_registers_bpinfo_brs(__u8 brs)
{
	printf("\tBoot Read Status                (BRS): ");
	switch (brs) {
	case 0:
		printf("No Boot Partition read operation requested\n");
		break;
	case 1:
		printf("Boot Partition read in progress\n");
		break;
	case 2:
		printf("Boot Partition read completed successfully\n");
		break;
	case 3:
		printf("Error completing Boot Partition read\n");
		break;
	default:
		printf("Invalid\n");
	}
}

static void nvme_show_registers_bpinfo(__u32 bpinfo)
{
	printf("\tActive Boot Partition ID      (ABPID): %u\n",
		(bpinfo & 0x80000000) >> 31);
	nvme_show_registers_bpinfo_brs((bpinfo & 0x03000000) >> 24);
	printf("\tBoot Partition Size            (BPSZ): %u\n",
		bpinfo & 0x00007fff);
}

static void nvme_show_registers_bprsel(__u32 bprsel)
{
	printf("\tBoot Partition Identifier      (BPID): %u\n",
		(bprsel & 0x80000000) >> 31);
	printf("\tBoot Partition Read Offset    (BPROF): %x\n",
		(bprsel & 0x3ffffc00) >> 10);
	printf("\tBoot Partition Read Size      (BPRSZ): %x\n",
		bprsel & 0x000003ff);
}

static void nvme_show_registers_bpmbl(uint64_t bpmbl)
{

	printf("\tBoot Partition Memory Buffer Base Address (BMBBA): %"PRIx64"\n",
		bpmbl);
}

static void nvme_show_registers_cmbmsc(uint64_t cmbmsc)
{
	printf("\tController Base Address         (CBA): %" PRIx64 "\n",
			(cmbmsc & 0xfffffffffffff000) >> 12);
	printf("\tController Memory Space Enable (CMSE): %" PRIx64 "\n",
			(cmbmsc & 0x0000000000000002) >> 1);
	printf("\tCapabilities Registers Enabled  (CRE): CMBLOC and "\
	       "CMBSZ registers are%senabled\n\n",
		(cmbmsc & 0x0000000000000001) ? " " : " NOT ");
}

static void nvme_show_registers_cmbsts(__u32 cmbsts)
{
	printf("\tController Base Address Invalid (CBAI): %x\n\n",
		(cmbsts & 0x00000001));
}

static void nvme_show_registers_pmrcap(__u32 pmrcap)
{
	printf("\tController Memory Space Supported                   (CMSS): "\
	       "Referencing PMR with host supplied addresses is %s\n",
	       ((pmrcap & 0x01000000) >> 24) ? "Supported" : "Not Supported");
	printf("\tPersistent Memory Region Timeout                   (PMRTO): %x\n",
		(pmrcap & 0x00ff0000) >> 16);
	printf("\tPersistent Memory Region Write Barrier Mechanisms (PMRWBM): %x\n",
		(pmrcap & 0x00003c00) >> 10);
	printf("\tPersistent Memory Region Time Units                (PMRTU): PMR time unit is %s\n",
		(pmrcap & 0x00000300) >> 8 ? "minutes":"500 milliseconds");
	printf("\tBase Indicator Register                              (BIR): %x\n",
		(pmrcap & 0x000000e0) >> 5);
	printf("\tWrite Data Support                                   (WDS): Write data to the PMR is %s\n",
		(pmrcap & 0x00000010) ? "supported":"not supported");
	printf("\tRead Data Support                                    (RDS): Read data from the PMR is %s\n",
		(pmrcap & 0x00000008) ? "supported":"not supported");
}

static void nvme_show_registers_pmrctl(__u32 pmrctl)
{
	printf("\tEnable (EN): PMR is %s\n", (pmrctl & 0x00000001) ?
		"READY" : "Disabled");
}

static const char *nvme_register_pmr_hsts_to_string(__u8 hsts)
{
	switch (hsts) {
	case 0: return "Normal Operation";
	case 1: return "Restore Error";
	case 2: return "Read Only";
	case 3: return "Unreliable";
	default: return "Reserved";
	}
}

static void nvme_show_registers_pmrsts(__u32 pmrsts, __u32 pmrctl)
{
	printf("\tController Base Address Invalid (CBAI): %x\n",
		(pmrsts & 0x00001000) >> 12);
	printf("\tHealth Status                   (HSTS): %s\n",
		nvme_register_pmr_hsts_to_string((pmrsts & 0x00000e00) >> 9));
	printf("\tNot Ready                       (NRDY): "\
		"The Persistent Memory Region is %s to process "\
		"PCI Express memory read and write requests\n",
			(pmrsts & 0x00000100) == 0 && (pmrctl & 0x00000001) ?
				"READY":"Not Ready");
	printf("\tError                            (ERR): %x\n", (pmrsts & 0x000000ff));
}

static const char *nvme_register_pmr_pmrszu_to_string(__u8 pmrszu)
{
	switch (pmrszu) {
	case 0: return "Bytes";
	case 1: return "One KB";
	case 2: return "One MB";
	case 3: return "One GB";
	default: return "Reserved";
	}
}

static void nvme_show_registers_pmrebs(__u32 pmrebs)
{
	printf("\tPMR Elasticity Buffer Size Base  (PMRWBZ): %x\n", (pmrebs & 0xffffff00) >> 8);
	printf("\tRead Bypass Behavior                     : memory reads not conflicting with memory writes "\
	       "in the PMR Elasticity Buffer %s bypass those memory writes\n",
	       (pmrebs & 0x00000010) ? "SHALL":"MAY");
	printf("\tPMR Elasticity Buffer Size Units (PMRSZU): %s\n",
		nvme_register_pmr_pmrszu_to_string(pmrebs & 0x0000000f));
}

static void nvme_show_registers_pmrswtp(__u32 pmrswtp)
{
	printf("\tPMR Sustained Write Throughput       (PMRSWTV): %x\n",
		(pmrswtp & 0xffffff00) >> 8);
	printf("\tPMR Sustained Write Throughput Units (PMRSWTU): %s/second\n",
		nvme_register_pmr_pmrszu_to_string(pmrswtp & 0x0000000f));
}

static void nvme_show_registers_pmrmscl(uint32_t pmrmscl)
{
	printf("\tController Base Address         (CBA): %#x\n",
		(pmrmscl & 0xfffff000) >> 12);
	printf("\tController Memory Space Enable (CMSE): %#x\n\n",
		(pmrmscl & 0x00000002) >> 1);
}

static void nvme_show_registers_pmrmscu(uint32_t pmrmscu)
{
	printf("\tController Base Address         (CBA): %#x\n",
		pmrmscu);
}

void nvme_show_ctrl_registers(void *bar, bool fabrics, enum nvme_print_flags flags)
{
	const unsigned int reg_size = 0x0e1c;  /* 0x0000 to 0x0e1b */
	uint64_t cap, asq, acq, bpmbl, cmbmsc;
	uint32_t vs, intms, intmc, cc, csts, nssr, crto, aqa, cmbsz, cmbloc, bpinfo,
		 bprsel, cmbsts, pmrcap, pmrctl, pmrsts, pmrebs, pmrswtp,
		 pmrmscl, pmrmscu;
	int human = flags & VERBOSE;

	if (flags & BINARY)
		return d_raw((unsigned char *)bar, reg_size);
	if (flags & JSON)
		return json_ctrl_registers(bar);

	cap = mmio_read64(bar + NVME_REG_CAP);
	vs = mmio_read32(bar + NVME_REG_VS);
	intms = mmio_read32(bar + NVME_REG_INTMS);
	intmc = mmio_read32(bar + NVME_REG_INTMC);
	cc = mmio_read32(bar + NVME_REG_CC);
	csts = mmio_read32(bar + NVME_REG_CSTS);
	nssr = mmio_read32(bar + NVME_REG_NSSR);
	crto = mmio_read32(bar + NVME_REG_CRTO);
	aqa = mmio_read32(bar + NVME_REG_AQA);
	asq = mmio_read64(bar + NVME_REG_ASQ);
	acq = mmio_read64(bar + NVME_REG_ACQ);
	cmbloc = mmio_read32(bar + NVME_REG_CMBLOC);
	cmbsz = mmio_read32(bar + NVME_REG_CMBSZ);
	bpinfo = mmio_read32(bar + NVME_REG_BPINFO);
	bprsel = mmio_read32(bar + NVME_REG_BPRSEL);
	bpmbl = mmio_read64(bar + NVME_REG_BPMBL);
	cmbmsc = mmio_read64(bar + NVME_REG_CMBMSC);
	cmbsts = mmio_read32(bar + NVME_REG_CMBSTS);
	pmrcap = mmio_read32(bar + NVME_REG_PMRCAP);
	pmrctl = mmio_read32(bar + NVME_REG_PMRCTL);
	pmrsts = mmio_read32(bar + NVME_REG_PMRSTS);
	pmrebs = mmio_read32(bar + NVME_REG_PMREBS);
	pmrswtp = mmio_read32(bar + NVME_REG_PMRSWTP);
	pmrmscl = mmio_read32(bar + NVME_REG_PMRMSCL);
	pmrmscu = mmio_read32(bar + NVME_REG_PMRMSCU);

	if (human) {
		if (cap != 0xffffffff) {
			printf("cap     : %"PRIx64"\n", cap);
			nvme_show_registers_cap((struct nvme_bar_cap *)&cap);
		}
		if (vs != 0xffffffff) {
			printf("version : %x\n", vs);
			nvme_show_registers_version(vs);
		}
		if (cc != 0xffffffff) {
			printf("cc      : %x\n", cc);
			nvme_show_registers_cc(cc);
		}
		if (csts != 0xffffffff) {
			printf("csts    : %x\n", csts);
			nvme_show_registers_csts(csts);
		}
		if (nssr != 0xffffffff) {
			printf("nssr    : %x\n", nssr);
			printf("\tNVM Subsystem Reset Control (NSSRC): %u\n\n",
				nssr);
		}
		if (crto != 0xffffffff) {
			printf("crto    : %x\n", crto);
			nvme_show_registers_crto(crto);
		}
		if (!fabrics) {
			printf("intms   : %x\n", intms);
			printf("\tInterrupt Vector Mask Set (IVMS): %x\n\n",
					intms);

			printf("intmc   : %x\n", intmc);
			printf("\tInterrupt Vector Mask Clear (IVMC): %x\n\n",
					intmc);
			printf("aqa     : %x\n", aqa);
			nvme_show_registers_aqa(aqa);

			printf("asq     : %"PRIx64"\n", asq);
			printf("\tAdmin Submission Queue Base (ASQB): %"PRIx64"\n\n",
					asq);

			printf("acq     : %"PRIx64"\n", acq);
			printf("\tAdmin Completion Queue Base (ACQB): %"PRIx64"\n\n",
					acq);

			printf("cmbloc  : %x\n", cmbloc);
			nvme_show_registers_cmbloc(cmbloc, cmbsz);

			printf("cmbsz   : %x\n", cmbsz);
			nvme_show_registers_cmbsz(cmbsz);

			printf("bpinfo  : %x\n", bpinfo);
			nvme_show_registers_bpinfo(bpinfo);

			printf("bprsel  : %x\n", bprsel);
			nvme_show_registers_bprsel(bprsel);

			printf("bpmbl   : %"PRIx64"\n", bpmbl);
			nvme_show_registers_bpmbl(bpmbl);

			printf("cmbmsc	: %"PRIx64"\n", cmbmsc);
			nvme_show_registers_cmbmsc(cmbmsc);

			printf("cmbsts	: %x\n", cmbsts);
			nvme_show_registers_cmbsts(cmbsts);

			printf("pmrcap  : %x\n", pmrcap);
			nvme_show_registers_pmrcap(pmrcap);

			printf("pmrctl  : %x\n", pmrctl);
			nvme_show_registers_pmrctl(pmrctl);

			printf("pmrsts  : %x\n", pmrsts);
			nvme_show_registers_pmrsts(pmrsts, pmrctl);

			printf("pmrebs  : %x\n", pmrebs);
			nvme_show_registers_pmrebs(pmrebs);

			printf("pmrswtp : %x\n", pmrswtp);
			nvme_show_registers_pmrswtp(pmrswtp);

			printf("pmrmscl	: %#x\n", pmrmscl);
			nvme_show_registers_pmrmscl(pmrmscl);

			printf("pmrmscu	: %#x\n", pmrmscu);
			nvme_show_registers_pmrmscu(pmrmscu);
		}
	} else {
		if (cap != 0xffffffff)
			printf("cap     : %"PRIx64"\n", cap);
		if (vs != 0xffffffff)
			printf("version : %x\n", vs);
		if (cc != 0xffffffff)
			printf("cc      : %x\n", cc);
		if (csts != 0xffffffff)
			printf("csts    : %x\n", csts);
		if (nssr != 0xffffffff)
			printf("nssr    : %x\n", nssr);
		if (crto != 0xffffffff)
			printf("crto    : %x\n", crto);
		if (!fabrics) {
			printf("intms   : %x\n", intms);
			printf("intmc   : %x\n", intmc);
			printf("aqa     : %x\n", aqa);
			printf("asq     : %"PRIx64"\n", asq);
			printf("acq     : %"PRIx64"\n", acq);
			printf("cmbloc  : %x\n", cmbloc);
			printf("cmbsz   : %x\n", cmbsz);
			printf("bpinfo  : %x\n", bpinfo);
			printf("bprsel  : %x\n", bprsel);
			printf("bpmbl   : %"PRIx64"\n", bpmbl);
			printf("cmbmsc	: %"PRIx64"\n", cmbmsc);
			printf("cmbsts	: %x\n", cmbsts);
			printf("pmrcap  : %x\n", pmrcap);
			printf("pmrctl  : %x\n", pmrctl);
			printf("pmrsts  : %x\n", pmrsts);
			printf("pmrebs  : %x\n", pmrebs);
			printf("pmrswtp : %x\n", pmrswtp);
			printf("pmrmscl	: %#x\n", pmrmscl);
			printf("pmrmscu	: %#x\n", pmrmscu);
		}
	}
}

void nvme_show_single_property(int offset, uint64_t value64, int human)
{
	uint32_t value32;

	if (!human) {
		if (nvme_is_64bit_reg(offset))
			printf("property: 0x%02x (%s), value: %"PRIx64"\n",
				offset, nvme_register_to_string(offset),
				value64);
		else
			printf("property: 0x%02x (%s), value: %x\n", offset,
				   nvme_register_to_string(offset),
				   (uint32_t) value64);

		return;
	}

	value32 = (uint32_t) value64;

	switch (offset) {
	case NVME_REG_CAP:
		printf("cap : %"PRIx64"\n", value64);
		nvme_show_registers_cap((struct nvme_bar_cap *)&value64);
		break;

	case NVME_REG_VS:
		printf("version : %x\n", value32);
		nvme_show_registers_version(value32);
		break;

	case NVME_REG_CC:
		printf("cc : %x\n", value32);
		nvme_show_registers_cc(value32);
		break;

	case NVME_REG_CSTS:
		printf("csts : %x\n", value32);
		nvme_show_registers_csts(value32);
		break;

	case NVME_REG_NSSR:
		printf("nssr : %x\n", value32);
		printf("\tNVM Subsystem Reset Control (NSSRC): %u\n\n",
			value32);
		break;

	case NVME_REG_CRTO:
		printf("crto : %x\n", value32);
		nvme_show_registers_crto(value32);
		break;

	default:
		printf("unknown property: 0x%02x (%s), value: %"PRIx64"\n",
			offset, nvme_register_to_string(offset), value64);
		break;
	}
}

void nvme_show_relatives(const char *name)
{
	/* XXX: TBD */
}

void d(unsigned char *buf, int len, int width, int group)
{
	int i, offset = 0, line_done = 0;
	char ascii[32 + 1];

	assert(width < sizeof(ascii));
	printf("     ");
	for (i = 0; i <= 15; i++)
		printf("%3x", i);
	for (i = 0; i < len; i++) {
		line_done = 0;
		if (i % width == 0)
			printf( "\n%04x:", offset);
		if (i % group == 0)
			printf( " %02x", buf[i]);
		else
			printf( "%02x", buf[i]);
		ascii[i % width] = (buf[i] >= '!' && buf[i] <= '~') ? buf[i] : '.';
		if (((i + 1) % width) == 0) {
			ascii[i % width + 1] = '\0';
			printf( " \"%.*s\"", width, ascii);
			offset += width;
			line_done = 1;
		}
	}
	if (!line_done) {
		unsigned b = width - (i % width);
		ascii[i % width + 1] = '\0';
		printf( " %*s \"%.*s\"",
				2 * b + b / group + (b % group ? 1 : 0), "",
				width, ascii);
	}
	printf( "\n");
}

void d_raw(unsigned char *buf, unsigned len)
{
	unsigned i;
	for (i = 0; i < len; i++)
		putchar(*(buf+i));
}

void nvme_show_status(int status)
{
	int val;
	int type;

	if (argconfig_output_format_json(false))
		return json_output_status(status);

	/*
	 * Callers should be checking for negative values first, but provide a
	 * sensible fallback anyway
	 */
	if (status < 0) {
		fprintf(stderr, "Error: %s\n", nvme_strerror(errno));
		return;
	}

	val = nvme_status_get_value(status);
	type = nvme_status_get_type(status);

	switch (type) {
	case NVME_STATUS_TYPE_NVME:
		fprintf(stderr, "NVMe status: %s(%#x)\n",
			nvme_status_to_string(val, false), val);
		break;
	case NVME_STATUS_TYPE_MI:
		fprintf(stderr, "NVMe-MI status: %s(%#x)\n",
			nvme_mi_status_to_string(val), val);
		break;
	default:
		fprintf(stderr, "Unknown status type %d, value %#x\n", type,
			val);
		break;
	}
}

static void nvme_show_id_ctrl_cmic(__u8 cmic)
{
	__u8 rsvd = (cmic & 0xF0) >> 4;
	__u8 ana = (cmic & 0x8) >> 3;
	__u8 sriov = (cmic & 0x4) >> 2;
	__u8 mctl = (cmic & 0x2) >> 1;
	__u8 mp = cmic & 0x1;

	if (rsvd)
		printf("  [7:4] : %#x\tReserved\n", rsvd);
	printf("  [3:3] : %#x\tANA %ssupported\n", ana, ana ? "" : "not ");
	printf("  [2:2] : %#x\t%s\n", sriov, sriov ? "SR-IOV" : "PCI");
	printf("  [1:1] : %#x\t%s Controller\n",
		mctl, mctl ? "Multi" : "Single");
	printf("  [0:0] : %#x\t%s Port\n", mp, mp ? "Multi" : "Single");
	printf("\n");
}

static void nvme_show_id_ctrl_oaes(__le32 ctrl_oaes)
{
	__u32 oaes = le32_to_cpu(ctrl_oaes);
	__u32 disc = (oaes >> 31) & 0x1;
	__u32 rsvd0 = (oaes & 0x70000000) >> 28;
	__u32 zicn = (oaes & 0x08000000) >> 27;
	__u32 rsvd1 = (oaes & 0x07FF0000) >> 16;
	__u32 normal_shn = (oaes >> 15) & 0x1;
	__u32 egealpcn = (oaes & 0x4000) >> 14;
	__u32 lbasin = (oaes & 0x2000) >> 13;
	__u32 plealcn = (oaes & 0x1000) >> 12;
	__u32 anacn = (oaes & 0x800) >> 11;
	__u32 rsvd2 = (oaes >> 10) & 0x1;
	__u32 fan = (oaes & 0x200) >> 9;
	__u32 nace = (oaes & 0x100) >> 8;
	__u32 rsvd3 = oaes & 0xFF;

	printf("  [31:31] : %#x\tDiscovery Log Change Notice %sSupported\n",
			disc, disc ? "" : "Not ");
	if (rsvd0)
		printf("  [30:28] : %#x\tReserved\n", rsvd0);
	printf("  [27:27] : %#x\tZone Descriptor Changed Notices %sSupported\n",
			zicn, zicn ? "" : "Not ");
	if (rsvd1)
		printf("  [26:16] : %#x\tReserved\n", rsvd1);
	printf("  [15:15] : %#x\tNormal NSS Shutdown Event %sSupported\n",
			normal_shn, normal_shn ? "" : "Not ");
	printf("  [14:14] : %#x\tEndurance Group Event Aggregate Log Page"\
			" Change Notice %sSupported\n",
			egealpcn, egealpcn ? "" : "Not ");
	printf("  [13:13] : %#x\tLBA Status Information Notices %sSupported\n",
			lbasin, lbasin ? "" : "Not ");
	printf("  [12:12] : %#x\tPredictable Latency Event Aggregate Log Change"\
			" Notices %sSupported\n",
			plealcn, plealcn ? "" : "Not ");
	printf("  [11:11] : %#x\tAsymmetric Namespace Access Change Notices"\
			" %sSupported\n", anacn, anacn ? "" : "Not ");
	if (rsvd2)
		printf("  [10:10] : %#x\tReserved\n", rsvd2);
	printf("  [9:9] : %#x\tFirmware Activation Notices %sSupported\n",
		fan, fan ? "" : "Not ");
	printf("  [8:8] : %#x\tNamespace Attribute Changed Event %sSupported\n",
		nace, nace ? "" : "Not ");
	if (rsvd3)
		printf("  [7:0] : %#x\tReserved\n", rsvd3);
	printf("\n");
}

static void nvme_show_id_ctrl_ctratt(__le32 ctrl_ctratt)
{
	__u32 ctratt = le32_to_cpu(ctrl_ctratt);
	__u32 rsvd20 = (ctratt >> 20);
	__u32 fdps = (ctratt >> 19) & 0x1;
	__u32 rsvd16 = (ctratt >> 16) & 0x7;
	__u32 elbas = (ctratt >> 15) & 0x1;
	__u32 delnvmset = (ctratt >> 14) & 0x1;
	__u32 delegrp = (ctratt >> 13) & 0x1;
	__u32 vcap = (ctratt >> 12) & 0x1;
	__u32 fcap = (ctratt >> 11) & 0x1;
	__u32 mds = (ctratt >> 10) & 0x1;
	__u32 hostid128 = (ctratt & NVME_CTRL_CTRATT_128_ID) >> 0;
	__u32 psp = (ctratt & NVME_CTRL_CTRATT_NON_OP_PSP) >> 1;
	__u32 sets = (ctratt & NVME_CTRL_CTRATT_NVM_SETS) >> 2;
	__u32 rrl = (ctratt & NVME_CTRL_CTRATT_READ_RECV_LVLS) >> 3;
	__u32 eg = (ctratt & NVME_CTRL_CTRATT_ENDURANCE_GROUPS) >> 4;
	__u32 iod = (ctratt & NVME_CTRL_CTRATT_PREDICTABLE_LAT) >> 5;
	__u32 tbkas = (ctratt & NVME_CTRL_CTRATT_TBKAS) >> 6;
	__u32 ng = (ctratt & NVME_CTRL_CTRATT_NAMESPACE_GRANULARITY) >> 7;
	__u32 sqa = (ctratt & NVME_CTRL_CTRATT_SQ_ASSOCIATIONS) >> 8;
	__u32 uuidlist = (ctratt & NVME_CTRL_CTRATT_UUID_LIST) >> 9;

	if (rsvd20)
		printf(" [31:20] : %#x\tReserved\n", rsvd20);
	printf("  [19:19] : %#x\tFlexible Data Placement %sSupported\n",
		fdps, fdps ? "" : "Not ");
	if (rsvd16)
		printf("  [18:16] : %#x\tReserved\n", rsvd16);
	printf("  [15:15] : %#x\tExtended LBA Formats %sSupported\n",
		elbas, elbas ? "" : "Not ");
	printf("  [14:14] : %#x\tDelete NVM Set %sSupported\n",
		delnvmset, delnvmset ? "" : "Not ");
	printf("  [13:13] : %#x\tDelete Endurance Group %sSupported\n",
		delegrp, delegrp ? "" : "Not ");
	printf("  [12:12] : %#x\tVariable Capacity Management %sSupported\n",
		vcap, vcap ? "" : "Not ");
	printf("  [11:11] : %#x\tFixed Capacity Management %sSupported\n",
		fcap, fcap ? "" : "Not ");
	printf("  [10:10] : %#x\tMulti Domain Subsystem %sSupported\n",
		mds, mds ? "" : "Not ");
	printf("  [9:9] : %#x\tUUID List %sSupported\n",
		uuidlist, uuidlist ? "" : "Not ");
	printf("  [8:8] : %#x\tSQ Associations %sSupported\n",
		sqa, sqa ? "" : "Not ");
	printf("  [7:7] : %#x\tNamespace Granularity %sSupported\n",
		ng, ng ? "" : "Not ");
	printf("  [6:6] : %#x\tTraffic Based Keep Alive %sSupported\n",
		tbkas, tbkas ? "" : "Not ");
	printf("  [5:5] : %#x\tPredictable Latency Mode %sSupported\n",
		iod, iod ? "" : "Not ");
	printf("  [4:4] : %#x\tEndurance Groups %sSupported\n",
		eg, eg ? "" : "Not ");
	printf("  [3:3] : %#x\tRead Recovery Levels %sSupported\n",
		rrl, rrl ? "" : "Not ");
	printf("  [2:2] : %#x\tNVM Sets %sSupported\n",
		sets, sets ? "" : "Not ");
	printf("  [1:1] : %#x\tNon-Operational Power State Permissive %sSupported\n",
		psp, psp ? "" : "Not ");
	printf("  [0:0] : %#x\t128-bit Host Identifier %sSupported\n",
		hostid128, hostid128 ? "" : "Not ");
	printf("\n");
}

static void nvme_show_id_ctrl_cntrltype(__u8 cntrltype)
{
	__u8 rsvd = (cntrltype & 0xFC) >> 2;
	__u8 cntrl = cntrltype & 0x3;

	static const char *type[] = {
		"Controller type not reported",
		"I/O Controller",
		"Discovery Controller",
		"Administrative Controller"
	};

	printf("  [7:2] : %#x\tReserved\n", rsvd);
	printf("  [1:0] : %#x\t%s\n", cntrltype, type[cntrl]);
}

static void nvme_show_id_ctrl_nvmsr(__u8 nvmsr)
{
	__u8 rsvd = (nvmsr >> 2) & 0xfc;
	__u8 nvmee = (nvmsr >> 1) & 0x1;
	__u8 nvmesd = nvmsr & 0x1;

	if (rsvd)
		printf(" [7:2] : %#x\tReserved\n", rsvd);
	printf("  [1:1] : %#x\tNVM subsystem %spart of an Enclosure\n",
		nvmee, nvmee ? "" : "Not ");
	printf("  [0:0] : %#x\tNVM subsystem %spart of an Storage Device\n",
		nvmesd, nvmesd ? "" : "Not ");
	printf("\n");
}

static void nvme_show_id_ctrl_vwci(__u8 vwci)
{
	__u8 vwcrv = (vwci >> 7) & 0x1;
	__u8 vwcr = vwci & 0xfe;

	printf("  [7:7] : %#x\tVPD Write Cycles Remaining field is %svalid.\n",
		vwcrv, vwcrv ? "" : "Not ");
	printf("  [6:0] : %#x\tVPD Write Cycles Remaining \n", vwcr);
	printf("\n");

}

static void nvme_show_id_ctrl_mec(__u8 mec)
{
	__u8 rsvd = (mec >> 2) & 0xfc;
	__u8 pcieme = (mec >> 1) & 0x1;
	__u8 smbusme = mec & 0x1;

	if (rsvd)
		printf(" [7:2] : %#x\tReserved\n", rsvd);
	printf("  [1:1] : %#x\tNVM subsystem %scontains a Management Endpoint"\
		" on a PCIe port\n", pcieme, pcieme ? "" : "Not ");
	printf("  [0:0] : %#x\tNVM subsystem %scontains a Management Endpoint"\
		" on an SMBus/I2C port\n", smbusme, smbusme ? "" : "Not ");
	printf("\n");

}

static void nvme_show_id_ctrl_oacs(__le16 ctrl_oacs)
{
	__u16 oacs = le16_to_cpu(ctrl_oacs);
	__u16 rsvd = (oacs & 0xF800) >> 11;
	__u16 lock = (oacs >> 10) & 0x1;
	__u16 glbas = (oacs & 0x200) >> 9;
	__u16 dbc = (oacs & 0x100) >> 8;
	__u16 vir = (oacs & 0x80) >> 7;
	__u16 nmi = (oacs & 0x40) >> 6;
	__u16 dir = (oacs & 0x20) >> 5;
	__u16 sft = (oacs & 0x10) >> 4;
	__u16 nsm = (oacs & 0x8) >> 3;
	__u16 fwc = (oacs & 0x4) >> 2;
	__u16 fmt = (oacs & 0x2) >> 1;
	__u16 sec = oacs & 0x1;

	if (rsvd)
		printf(" [15:11] : %#x\tReserved\n", rsvd);
	printf("  [10:10] : %#x\tLockdown Command and Feature %sSupported\n",
		lock, lock ? "" : "Not ");
	printf("  [9:9] : %#x\tGet LBA Status Capability %sSupported\n",
		glbas, glbas ? "" : "Not ");
	printf("  [8:8] : %#x\tDoorbell Buffer Config %sSupported\n",
		dbc, dbc ? "" : "Not ");
	printf("  [7:7] : %#x\tVirtualization Management %sSupported\n",
		vir, vir ? "" : "Not ");
	printf("  [6:6] : %#x\tNVMe-MI Send and Receive %sSupported\n",
		nmi, nmi ? "" : "Not ");
	printf("  [5:5] : %#x\tDirectives %sSupported\n",
		dir, dir ? "" : "Not ");
	printf("  [4:4] : %#x\tDevice Self-test %sSupported\n",
		sft, sft ? "" : "Not ");
	printf("  [3:3] : %#x\tNS Management and Attachment %sSupported\n",
		nsm, nsm ? "" : "Not ");
	printf("  [2:2] : %#x\tFW Commit and Download %sSupported\n",
		fwc, fwc ? "" : "Not ");
	printf("  [1:1] : %#x\tFormat NVM %sSupported\n",
		fmt, fmt ? "" : "Not ");
	printf("  [0:0] : %#x\tSecurity Send and Receive %sSupported\n",
		sec, sec ? "" : "Not ");
	printf("\n");
}

static void nvme_show_id_ctrl_frmw(__u8 frmw)
{
	__u8 rsvd = (frmw & 0xC0) >> 6;
	__u8 smud = (frmw >> 5) & 0x1;
	__u8 fawr = (frmw & 0x10) >> 4;
	__u8 nfws = (frmw & 0xE) >> 1;
	__u8 s1ro = frmw & 0x1;

	if (rsvd)
		printf("  [7:6] : %#x\tReserved\n", rsvd);
	printf("  [5:5] : %#x\tMultiple FW or Boot Update Detection %sSupported\n",
		smud, smud ? "" : "Not ");
	printf("  [4:4] : %#x\tFirmware Activate Without Reset %sSupported\n",
		fawr, fawr ? "" : "Not ");
	printf("  [3:1] : %#x\tNumber of Firmware Slots\n", nfws);
	printf("  [0:0] : %#x\tFirmware Slot 1 Read%s\n",
		s1ro, s1ro ? "-Only" : "/Write");
	printf("\n");
}

static void nvme_show_id_ctrl_lpa(__u8 lpa)
{
	__u8 rsvd = (lpa & 0x80) >> 7;
	__u8 tel = (lpa >> 6) & 0x1;
	__u8 lid_sup = (lpa >> 5) & 0x1;
	__u8 persevnt = (lpa & 0x10) >> 4;
	__u8 telem = (lpa & 0x8) >> 3;
	__u8 ed = (lpa & 0x4) >> 2;
	__u8 celp = (lpa & 0x2) >> 1;
	__u8 smlp = lpa & 0x1;

	if (rsvd)
		printf("  [7:7] : %#x\tReserved\n", rsvd);
	printf("  [6:6] : %#x\tTelemetry Log Data Area 4 %sSupported\n",
			tel, tel ? "" : "Not ");
	printf("  [5:5] : %#x\tLID 0x0, Scope of each command in LID 0x5, "\
			"0x12, 0x13 %sSupported\n", lid_sup, lid_sup ? "" : "Not ");
	printf("  [4:4] : %#x\tPersistent Event log %sSupported\n",
			persevnt, persevnt ? "" : "Not ");
	printf("  [3:3] : %#x\tTelemetry host/controller initiated log page %sSupported\n",
	       telem, telem ? "" : "Not ");
	printf("  [2:2] : %#x\tExtended data for Get Log Page %sSupported\n",
		ed, ed ? "" : "Not ");
	printf("  [1:1] : %#x\tCommand Effects Log Page %sSupported\n",
		celp, celp ? "" : "Not ");
	printf("  [0:0] : %#x\tSMART/Health Log Page per NS %sSupported\n",
		smlp, smlp ? "" : "Not ");
	printf("\n");
}

static void nvme_show_id_ctrl_elpe(__u8 elpe)
{
	printf("  [7:0] : %d (0's based)\tError Log Page Entries (ELPE)\n",
	       elpe);
	printf("\n");
}

static void nvme_show_id_ctrl_npss(__u8 npss)
{
	printf("  [7:0] : %d (0's based)\tNumber of Power States Support (NPSS)\n",
	       npss);
	printf("\n");
}

static void nvme_show_id_ctrl_avscc(__u8 avscc)
{
	__u8 rsvd = (avscc & 0xFE) >> 1;
	__u8 fmt = avscc & 0x1;
	if (rsvd)
		printf("  [7:1] : %#x\tReserved\n", rsvd);
	printf("  [0:0] : %#x\tAdmin Vendor Specific Commands uses %s Format\n",
		fmt, fmt ? "NVMe" : "Vendor Specific");
	printf("\n");
}

static void nvme_show_id_ctrl_apsta(__u8 apsta)
{
	__u8 rsvd = (apsta & 0xFE) >> 1;
	__u8 apst = apsta & 0x1;
	if (rsvd)
		printf("  [7:1] : %#x\tReserved\n", rsvd);
	printf("  [0:0] : %#x\tAutonomous Power State Transitions %sSupported\n",
		apst, apst ? "" : "Not ");
	printf("\n");
}

static void nvme_show_id_ctrl_wctemp(__le16 wctemp)
{
	printf(" [15:0] : %ld Â°C (%u K)\tWarning Composite Temperature Threshold (WCTEMP)\n",
	       kelvin_to_celsius(le16_to_cpu(wctemp)), le16_to_cpu(wctemp));
	printf("\n");
}

static void nvme_show_id_ctrl_cctemp(__le16 cctemp)
{
	printf(" [15:0] : %ld Â°C (%u K)\tCritical Composite Temperature Threshold (CCTEMP)\n",
	       kelvin_to_celsius(le16_to_cpu(cctemp)), le16_to_cpu(cctemp));
	printf("\n");
}

static void nvme_show_id_ctrl_tnvmcap(__u8 *tnvmcap)
{
	printf("[127:0] : %s\n", uint128_t_to_l10n_string(le128_to_cpu(tnvmcap)));
	printf("\tTotal NVM Capacity (TNVMCAP)\n\n");
}

static void nvme_show_id_ctrl_unvmcap(__u8 *unvmcap)
{
	printf("[127:0] : %s\n", uint128_t_to_l10n_string(le128_to_cpu(unvmcap)));
	printf("\tUnallocated NVM Capacity (UNVMCAP)\n\n");
}

void nvme_show_id_ctrl_rpmbs(__le32 ctrl_rpmbs)
{
	__u32 rpmbs = le32_to_cpu(ctrl_rpmbs);
	__u32 asz = (rpmbs & 0xFF000000) >> 24;
	__u32 tsz = (rpmbs & 0xFF0000) >> 16;
	__u32 rsvd = (rpmbs & 0xFFC0) >> 6;
	__u32 auth = (rpmbs & 0x38) >> 3;
	__u32 rpmb = rpmbs & 0x7;

	printf(" [31:24]: %#x\tAccess Size\n", asz);
	printf(" [23:16]: %#x\tTotal Size\n", tsz);
	if (rsvd)
		printf(" [15:6] : %#x\tReserved\n", rsvd);
	printf("  [5:3] : %#x\tAuthentication Method\n", auth);
	printf("  [2:0] : %#x\tNumber of RPMB Units\n", rpmb);
	printf("\n");
}

static void nvme_show_id_ctrl_hctma(__le16 ctrl_hctma)
{
	__u16 hctma = le16_to_cpu(ctrl_hctma);
	__u16 rsvd = (hctma & 0xFFFE) >> 1;
	__u16 hctm = hctma & 0x1;

	if (rsvd)
		printf(" [15:1] : %#x\tReserved\n", rsvd);
	printf("  [0:0] : %#x\tHost Controlled Thermal Management %sSupported\n",
		hctm, hctm ? "" : "Not ");
	printf("\n");
}

static void nvme_show_id_ctrl_mntmt(__le16 mntmt)
{
	printf(" [15:0] : %ld Â°C (%u K)\tMinimum Thermal Management Temperature (MNTMT)\n",
	       kelvin_to_celsius(le16_to_cpu(mntmt)), le16_to_cpu(mntmt));
	printf("\n");
}

static void nvme_show_id_ctrl_mxtmt(__le16 mxtmt)
{
	printf(" [15:0] : %ld Â°C (%u K)\tMaximum Thermal Management Temperature (MXTMT)\n",
	       kelvin_to_celsius(le16_to_cpu(mxtmt)), le16_to_cpu(mxtmt));
	printf("\n");
}

static void nvme_show_id_ctrl_sanicap(__le32 ctrl_sanicap)
{
	__u32 sanicap = le32_to_cpu(ctrl_sanicap);
	__u32 rsvd = (sanicap & 0x1FFFFFF8) >> 3;
	__u32 owr = (sanicap & 0x4) >> 2;
	__u32 ber = (sanicap & 0x2) >> 1;
	__u32 cer = sanicap & 0x1;
	__u32 ndi = (sanicap & 0x20000000) >> 29;
	__u32 nodmmas = (sanicap & 0xC0000000) >> 30;

	static const char *modifies_media[] = {
		"Additional media modification after sanitize operation completes successfully is not defined",
		"Media is not additionally modified after sanitize operation completes successfully",
		"Media is additionally modified after sanitize operation completes successfully",
		"Reserved"
	};

	printf("  [31:30] : %#x\t%s\n", nodmmas, modifies_media[nodmmas]);
	printf("  [29:29] : %#x\tNo-Deallocate After Sanitize bit in Sanitize command %sSupported\n",
		ndi, ndi ? "Not " : "");
	if (rsvd)
		printf("  [28:3] : %#x\tReserved\n", rsvd);
	printf("    [2:2] : %#x\tOverwrite Sanitize Operation %sSupported\n",
		owr, owr ? "" : "Not ");
	printf("    [1:1] : %#x\tBlock Erase Sanitize Operation %sSupported\n",
		ber, ber ? "" : "Not ");
	printf("    [0:0] : %#x\tCrypto Erase Sanitize Operation %sSupported\n",
		cer, cer ? "" : "Not ");
	printf("\n");
}

static void nvme_show_id_ctrl_anacap(__u8 anacap)
{
	__u8 nz = (anacap & 0x80) >> 7;
	__u8 grpid_static = (anacap & 0x40) >> 6;
	__u8 rsvd = (anacap & 0x20) >> 5;
	__u8 ana_change = (anacap & 0x10) >> 4;
	__u8 ana_persist_loss = (anacap & 0x08) >> 3;
	__u8 ana_inaccessible = (anacap & 0x04) >> 2;
	__u8 ana_nonopt = (anacap & 0x02) >> 1;
	__u8 ana_opt = (anacap & 0x01);

	printf("  [7:7] : %#x\tNon-zero group ID %sSupported\n",
			nz, nz ? "" : "Not ");
	printf("  [6:6] : %#x\tGroup ID does %schange\n",
			grpid_static, grpid_static ? "not " : "");
	if (rsvd)
		printf(" [5:5] : %#x\tReserved\n", rsvd);
	printf("  [4:4] : %#x\tANA Change state %sSupported\n",
			ana_change, ana_change ? "" : "Not ");
	printf("  [3:3] : %#x\tANA Persistent Loss state %sSupported\n",
			ana_persist_loss, ana_persist_loss ? "" : "Not ");
	printf("  [2:2] : %#x\tANA Inaccessible state %sSupported\n",
			ana_inaccessible, ana_inaccessible ? "" : "Not ");
	printf("  [1:1] : %#x\tANA Non-optimized state %sSupported\n",
			ana_nonopt, ana_nonopt ? "" : "Not ");
	printf("  [0:0] : %#x\tANA Optimized state %sSupported\n",
			ana_opt, ana_opt ? "" : "Not ");
	printf("\n");
}

static void nvme_show_id_ctrl_sqes(__u8 sqes)
{
	__u8 msqes = (sqes & 0xF0) >> 4;
	__u8 rsqes = sqes & 0xF;
	printf("  [7:4] : %#x\tMax SQ Entry Size (%d)\n", msqes, 1 << msqes);
	printf("  [3:0] : %#x\tMin SQ Entry Size (%d)\n", rsqes, 1 << rsqes);
	printf("\n");
}

static void nvme_show_id_ctrl_cqes(__u8 cqes)
{
	__u8 mcqes = (cqes & 0xF0) >> 4;
	__u8 rcqes = cqes & 0xF;
	printf("  [7:4] : %#x\tMax CQ Entry Size (%d)\n", mcqes, 1 << mcqes);
	printf("  [3:0] : %#x\tMin CQ Entry Size (%d)\n", rcqes, 1 << rcqes);
	printf("\n");
}

static void nvme_show_id_ctrl_oncs(__le16 ctrl_oncs)
{
	__u16 oncs = le16_to_cpu(ctrl_oncs);
	__u16 rsvd = (oncs & 0xFE00) >> 9;
	__u16 copy = (oncs & 0x100) >> 8;
	__u16 vrfy = (oncs & 0x80) >> 7;
	__u16 tmst = (oncs & 0x40) >> 6;
	__u16 resv = (oncs & 0x20) >> 5;
	__u16 save = (oncs & 0x10) >> 4;
	__u16 wzro = (oncs & 0x8) >> 3;
	__u16 dsms = (oncs & 0x4) >> 2;
	__u16 wunc = (oncs & 0x2) >> 1;
	__u16 cmp = oncs & 0x1;

	if (rsvd)
		printf(" [15:9] : %#x\tReserved\n", rsvd);
	printf("  [8:8] : %#x\tCopy %sSupported\n",
		copy, copy ? "" : "Not ");
	printf("  [7:7] : %#x\tVerify %sSupported\n",
		vrfy, vrfy ? "" : "Not ");
	printf("  [6:6] : %#x\tTimestamp %sSupported\n",
		tmst, tmst ? "" : "Not ");
	printf("  [5:5] : %#x\tReservations %sSupported\n",
		resv, resv ? "" : "Not ");
	printf("  [4:4] : %#x\tSave and Select %sSupported\n",
		save, save ? "" : "Not ");
	printf("  [3:3] : %#x\tWrite Zeroes %sSupported\n",
		wzro, wzro ? "" : "Not ");
	printf("  [2:2] : %#x\tData Set Management %sSupported\n",
		dsms, dsms ? "" : "Not ");
	printf("  [1:1] : %#x\tWrite Uncorrectable %sSupported\n",
		wunc, wunc ? "" : "Not ");
	printf("  [0:0] : %#x\tCompare %sSupported\n",
		cmp, cmp ? "" : "Not ");
	printf("\n");
}

static void nvme_show_id_ctrl_fuses(__le16 ctrl_fuses)
{
	__u16 fuses = le16_to_cpu(ctrl_fuses);
	__u16 rsvd = (fuses & 0xFE) >> 1;
	__u16 cmpw = fuses & 0x1;

	if (rsvd)
		printf(" [15:1] : %#x\tReserved\n", rsvd);
	printf("  [0:0] : %#x\tFused Compare and Write %sSupported\n",
		cmpw, cmpw ? "" : "Not ");
	printf("\n");
}

static void nvme_show_id_ctrl_fna(__u8 fna)
{
	__u8 rsvd = (fna & 0xF0) >> 4;
	__u8 bcnsid = (fna & 0x8) >> 3;
	__u8 cese = (fna & 0x4) >> 2;
	__u8 cens = (fna & 0x2) >> 1;
	__u8 fmns = fna & 0x1;
	if (rsvd)
		printf("  [7:4] : %#x\tReserved\n", rsvd);
	printf("  [3:3] : %#x\tFormat NVM Broadcast NSID (FFFFFFFFh) %sSupported\n",
		bcnsid, bcnsid ? "Not " : "");
	printf("  [2:2] : %#x\tCrypto Erase %sSupported as part of Secure Erase\n",
		cese, cese ? "" : "Not ");
	printf("  [1:1] : %#x\tCrypto Erase Applies to %s Namespace(s)\n",
		cens, cens ? "All" : "Single");
	printf("  [0:0] : %#x\tFormat Applies to %s Namespace(s)\n",
		fmns, fmns ? "All" : "Single");
	printf("\n");
}

static void nvme_show_id_ctrl_vwc(__u8 vwc)
{
	__u8 rsvd = (vwc & 0xF8) >> 3;
	__u8 flush = (vwc & 0x6) >> 1;
	__u8 vwcp = vwc & 0x1;

	static const char *flush_behavior[] = {
		"Support for the NSID field set to FFFFFFFFh is not indicated",
		"Reserved",
		"The Flush command does not support NSID set to FFFFFFFFh",
		"The Flush command supports NSID set to FFFFFFFFh"
	};

	if (rsvd)
		printf("  [7:3] : %#x\tReserved\n", rsvd);
	printf("  [2:1] : %#x\t%s\n", flush, flush_behavior[flush]);
	printf("  [0:0] : %#x\tVolatile Write Cache %sPresent\n",
		vwcp, vwcp ? "" : "Not ");
	printf("\n");
}

static void nvme_show_id_ctrl_icsvscc(__u8 icsvscc)
{
	__u8 rsvd = (icsvscc & 0xFE) >> 1;
	__u8 fmt = icsvscc & 0x1;
	if (rsvd)
		printf("  [7:1] : %#x\tReserved\n", rsvd);
	printf("  [0:0] : %#x\tNVM Vendor Specific Commands uses %s Format\n",
		fmt, fmt ? "NVMe" : "Vendor Specific");
	printf("\n");
}

static void nvme_show_id_ctrl_nwpc(__u8 nwpc)
{
	__u8 no_wp_wp = (nwpc & 0x01);
	__u8 wp_power_cycle = (nwpc & 0x02) >> 1;
	__u8 wp_permanent = (nwpc & 0x04) >> 2;
	__u8 rsvd = (nwpc & 0xF8) >> 3;

	if (rsvd)
		printf("  [7:3] : %#x\tReserved\n", rsvd);

	printf("  [2:2] : %#x\tPermanent Write Protect %sSupported\n",
		wp_permanent, wp_permanent ? "" : "Not ");
	printf("  [1:1] : %#x\tWrite Protect Until Power Supply %sSupported\n",
		wp_power_cycle, wp_power_cycle ? "" : "Not ");
	printf("  [0:0] : %#x\tNo Write Protect and Write Protect Namespace %sSupported\n",
		no_wp_wp, no_wp_wp ? "" : "Not ");
	printf("\n");
}

static void nvme_show_id_ctrl_ocfs(__le16 ctrl_ocfs)
{
	__u16 ocfs = le16_to_cpu(ctrl_ocfs);
	__u16 rsvd = (ocfs & 0xfffc) >> 2;
	__u8 copy_fmt_1 = (ocfs >> 1) & 0x1;
	__u8 copy_fmt_0 = ocfs & 0x1;
	if (rsvd)
		printf("  [15:2] : %#x\tReserved\n", rsvd);
	printf("  [1:1] : %#x\tController Copy Format 1h %sSupported\n",
		copy_fmt_1, copy_fmt_1 ? "" : "Not ");
	printf("  [0:0] : %#x\tController Copy Format 0h %sSupported\n",
		copy_fmt_0, copy_fmt_0 ? "" : "Not ");
	printf("\n");
}

static void nvme_show_id_ctrl_sgls(__le32 ctrl_sgls)
{
	__u32 sgls = le32_to_cpu(ctrl_sgls);
	__u32 rsvd0 = (sgls & 0xFFC00000) >> 22;
	__u32 trsdbd = (sgls & 0x200000) >> 21;
	__u32 aofdsl = (sgls & 0x100000) >> 20;
	__u32 mpcsd = (sgls & 0x80000) >> 19;
	__u32 sglltb = (sgls & 0x40000) >> 18;
	__u32 bacmdb = (sgls & 0x20000) >> 17;
	__u32 bbs = (sgls & 0x10000) >> 16;
	__u32 sdt = (sgls >> 8) & 0xff;
	__u32 rsvd1 = (sgls & 0xF8) >> 3;
	__u32 key = (sgls & 0x4) >> 2;
	__u32 sglsp = sgls & 0x3;

	if (rsvd0)
		printf(" [31:22]: %#x\tReserved\n", rsvd0);
	if (sglsp || (!sglsp && trsdbd))
		printf(" [21:21]: %#x\tTransport SGL Data Block Descriptor %sSupported\n",
			trsdbd, trsdbd ? "" : "Not ");
	if (sglsp || (!sglsp && aofdsl))
		printf(" [20:20]: %#x\tAddress Offsets %sSupported\n",
			aofdsl, aofdsl ? "" : "Not ");
	if (sglsp || (!sglsp && mpcsd))
		printf(" [19:19]: %#x\tMetadata Pointer Containing "
			"SGL Descriptor is %sSupported\n",
			mpcsd, mpcsd ? "" : "Not ");
	if (sglsp || (!sglsp && sglltb))
		printf(" [18:18]: %#x\tSGL Length Larger than Buffer %sSupported\n",
			sglltb, sglltb ? "" : "Not ");
	if (sglsp || (!sglsp && bacmdb))
		printf(" [17:17]: %#x\tByte-Aligned Contig. MD Buffer %sSupported\n",
			bacmdb, bacmdb ? "" : "Not ");
	if (sglsp || (!sglsp && bbs))
		printf(" [16:16]: %#x\tSGL Bit-Bucket %sSupported\n",
			bbs, bbs ? "" : "Not ");
	printf(" [15:8] : %#x\tSGL Descriptor Threshold\n", sdt);
	if (rsvd1)
		printf(" [7:3] : %#x\tReserved\n", rsvd1);
	if (sglsp || (!sglsp && key))
		printf("  [2:2] : %#x\tKeyed SGL Data Block descriptor %sSupported\n",
			key, key ? "" : "Not ");
	if (sglsp == 0x3)
		printf("  [1:0] : %#x\tReserved\n", sglsp);
	else if (sglsp == 0x2)
		printf("  [1:0] : %#x\tScatter-Gather Lists Supported."
			" Dword alignment required.\n", sglsp);
	else if (sglsp == 0x1)
		printf("  [1:0] : %#x\tScatter-Gather Lists Supported."
			" No Dword alignment required.\n", sglsp);
	else
		printf(" [1:0]  : %#x\tScatter-Gather Lists Not Supported\n", sglsp);
	printf("\n");
}

static void nvme_show_id_ctrl_fcatt(__u8 fcatt)
{
	__u8 rsvd = (fcatt & 0xFE) >> 1;
	__u8 scm = fcatt & 0x1;
	if (rsvd)
		printf("  [7:1] : %#x\tReserved\n", rsvd);
	printf("  [0:0] : %#x\t%s Controller Model\n",
		scm, scm ? "Static" : "Dynamic");
	printf("\n");
}

static void nvme_show_id_ctrl_ofcs(__le16 ofcs)
{
	__u16 rsvd = (ofcs & 0xfffe) >> 1;
	__u8 disconn = ofcs & 0x1;
	if (rsvd)
		printf("  [15:1] : %#x\tReserved\n", rsvd);
	printf("  [0:0] : %#x\tDisconnect command %s Supported\n",
		disconn, disconn ? "" : "Not");
	printf("\n");

}

static void nvme_show_id_ns_nsfeat(__u8 nsfeat)
{
	__u8 rsvd = (nsfeat & 0xE0) >> 5;
	__u8 ioopt = (nsfeat & 0x10) >> 4;
	__u8 uidreuse = (nsfeat & 0x8) >> 3;
	__u8 dulbe = (nsfeat & 0x4) >> 2;
	__u8 na = (nsfeat & 0x2) >> 1;
	__u8 thin = nsfeat & 0x1;
	if (rsvd)
		printf("  [7:5] : %#x\tReserved\n", rsvd);
	printf("  [4:4] : %#x\tNPWG, NPWA, NPDG, NPDA, and NOWS are %sSupported\n",
		ioopt, ioopt ? "" : "Not ");
	printf("  [3:3] : %#x\tNGUID and EUI64 fields if non-zero, %sReused\n",
		uidreuse, uidreuse ? "Never " : "");
	printf("  [2:2] : %#x\tDeallocated or Unwritten Logical Block error %sSupported\n",
		dulbe, dulbe ? "" : "Not ");
	printf("  [1:1] : %#x\tNamespace uses %s\n",
		na, na ? "NAWUN, NAWUPF, and NACWU" : "AWUN, AWUPF, and ACWU");
	printf("  [0:0] : %#x\tThin Provisioning %sSupported\n",
		thin, thin ? "" : "Not ");
	printf("\n");
}

static void nvme_show_id_ns_flbas(__u8 flbas)
{
	__u8 rsvd = (flbas & 0x80) >> 7;
	__u8 msb2_lbaf = (flbas & NVME_NS_FLBAS_HIGHER_MASK) >> 5;
	__u8 mdedata = (flbas & 0x10) >> 4;
	__u8 lsb4_lbaf = flbas & NVME_NS_FLBAS_LOWER_MASK;

	if (rsvd)
		printf("  [7:7] : %#x\tReserved\n", rsvd);
	printf("  [6:5] : %#x\tMost significant 2 bits of Current LBA Format Selected\n",
		msb2_lbaf);
	printf("  [4:4] : %#x\tMetadata Transferred %s\n",
		mdedata, mdedata ? "at End of Data LBA" : "in Separate Contiguous Buffer");
	printf("  [3:0] : %#x\tLeast significant 4 bits of Current LBA Format Selected\n",
		lsb4_lbaf);
	printf("\n");
}

static void nvme_show_id_ns_mc(__u8 mc)
{
	__u8 rsvd = (mc & 0xFC) >> 2;
	__u8 mdp = (mc & 0x2) >> 1;
	__u8 extdlba = mc & 0x1;
	if (rsvd)
		printf("  [7:2] : %#x\tReserved\n", rsvd);
	printf("  [1:1] : %#x\tMetadata Pointer %sSupported\n",
		mdp, mdp ? "" : "Not ");
	printf("  [0:0] : %#x\tMetadata as Part of Extended Data LBA %sSupported\n",
		extdlba, extdlba ? "" : "Not ");
	printf("\n");
}

static void nvme_show_id_ns_dpc(__u8 dpc)
{
	__u8 rsvd = (dpc & 0xE0) >> 5;
	__u8 pil8 = (dpc & 0x10) >> 4;
	__u8 pif8 = (dpc & 0x8) >> 3;
	__u8 pit3 = (dpc & 0x4) >> 2;
	__u8 pit2 = (dpc & 0x2) >> 1;
	__u8 pit1 = dpc & 0x1;
	if (rsvd)
		printf("  [7:5] : %#x\tReserved\n", rsvd);
	printf("  [4:4] : %#x\tProtection Information Transferred as Last 8 Bytes of Metadata %sSupported\n",
		pil8, pil8 ? "" : "Not ");
	printf("  [3:3] : %#x\tProtection Information Transferred as First 8 Bytes of Metadata %sSupported\n",
		pif8, pif8 ? "" : "Not ");
	printf("  [2:2] : %#x\tProtection Information Type 3 %sSupported\n",
		pit3, pit3 ? "" : "Not ");
	printf("  [1:1] : %#x\tProtection Information Type 2 %sSupported\n",
		pit2, pit2 ? "" : "Not ");
	printf("  [0:0] : %#x\tProtection Information Type 1 %sSupported\n",
		pit1, pit1 ? "" : "Not ");
	printf("\n");
}

static void nvme_show_id_ns_dps(__u8 dps)
{
	__u8 rsvd = (dps & 0xF0) >> 4;
	__u8 pif8 = (dps & 0x8) >> 3;
	__u8 pit = dps & 0x7;
	if (rsvd)
		printf("  [7:4] : %#x\tReserved\n", rsvd);
	printf("  [3:3] : %#x\tProtection Information is Transferred as %s 8 Bytes of Metadata\n",
		pif8, pif8 ? "First" : "Last");
	printf("  [2:0] : %#x\tProtection Information %s\n", pit,
		pit == 3 ? "Type 3 Enabled" :
		pit == 2 ? "Type 2 Enabled" :
		pit == 1 ? "Type 1 Enabled" :
		pit == 0 ? "Disabled" : "Reserved Enabled");
	printf("\n");
}

static void nvme_show_id_ns_nmic(__u8 nmic)
{
	__u8 rsvd = (nmic & 0xFE) >> 1;
	__u8 mp = nmic & 0x1;
	if (rsvd)
		printf("  [7:1] : %#x\tReserved\n", rsvd);
	printf("  [0:0] : %#x\tNamespace Multipath %sCapable\n",
		mp, mp ? "" : "Not ");
	printf("\n");
}

static void nvme_show_id_ns_rescap(__u8 rescap)
{
	__u8 iekr = (rescap & 0x80) >> 7;
	__u8 eaar = (rescap & 0x40) >> 6;
	__u8 wear = (rescap & 0x20) >> 5;
	__u8 earo = (rescap & 0x10) >> 4;
	__u8 wero = (rescap & 0x8) >> 3;
	__u8 ea = (rescap & 0x4) >> 2;
	__u8 we = (rescap & 0x2) >> 1;
	__u8 ptpl = rescap & 0x1;

	printf("  [7:7] : %#x\tIgnore Existing Key - Used as defined in revision %s\n",
		iekr, iekr ? "1.3 or later" : "1.2.1 or earlier");
	printf("  [6:6] : %#x\tExclusive Access - All Registrants %sSupported\n",
		eaar, eaar ? "" : "Not ");
	printf("  [5:5] : %#x\tWrite Exclusive - All Registrants %sSupported\n",
		wear, wear ? "" : "Not ");
	printf("  [4:4] : %#x\tExclusive Access - Registrants Only %sSupported\n",
		earo, earo ? "" : "Not ");
	printf("  [3:3] : %#x\tWrite Exclusive - Registrants Only %sSupported\n",
		wero, wero ? "" : "Not ");
	printf("  [2:2] : %#x\tExclusive Access %sSupported\n",
		ea, ea ? "" : "Not ");
	printf("  [1:1] : %#x\tWrite Exclusive %sSupported\n",
		we, we ? "" : "Not ");
	printf("  [0:0] : %#x\tPersist Through Power Loss %sSupported\n",
		ptpl, ptpl ? "" : "Not ");
	printf("\n");
}

static void nvme_show_id_ns_fpi(__u8 fpi)
{
	__u8 fpis = (fpi & 0x80) >> 7;
	__u8 fpii = fpi & 0x7F;
	printf("  [7:7] : %#x\tFormat Progress Indicator %sSupported\n",
		fpis, fpis ? "" : "Not ");
	if (fpis || (!fpis && fpii))
		printf("  [6:0] : %#x\tFormat Progress Indicator (Remaining %d%%)\n",
		fpii, fpii);
	printf("\n");
}

static void nvme_show_id_ns_nsattr(__u8 nsattr)
{
	__u8 rsvd = (nsattr & 0xFE) >> 1;
	__u8 write_protected = nsattr & 0x1;
	if (rsvd)
		printf("  [7:1] : %#x\tReserved\n", rsvd);
	printf("  [0:0] : %#x\tNamespace %sWrite Protected\n",
			write_protected, write_protected ? "" : "Not ");
	printf("\n");
}

static void nvme_show_id_ns_dlfeat(__u8 dlfeat)
{
	__u8 rsvd = (dlfeat & 0xE0) >> 5;
	__u8 guard = (dlfeat & 0x10) >> 4;
	__u8 dwz = (dlfeat & 0x8) >> 3;
	__u8 val = dlfeat & 0x7;
	if (rsvd)
		printf("  [7:5] : %#x\tReserved\n", rsvd);
	printf("  [4:4] : %#x\tGuard Field of Deallocated Logical Blocks is set to %s\n",
		guard, guard ? "CRC of The Value Read" : "0xFFFF");
	printf("  [3:3] : %#x\tDeallocate Bit in the Write Zeroes Command is %sSupported\n",
		dwz, dwz ? "" : "Not ");
	printf("  [2:0] : %#x\tBytes Read From a Deallocated Logical Block and its Metadata are %s\n",
		val, val == 2 ? "0xFF" :
			val == 1 ? "0x00" :
			val == 0 ? "Not Reported" : "Reserved Value");
	printf("\n");
}

void nvme_show_id_ns(struct nvme_id_ns *ns, unsigned int nsid,
		unsigned int lba_index, bool cap_only, enum nvme_print_flags flags)
{
	bool human = flags & VERBOSE;
	int vs = flags & VS;
	int i;
	__u8 flbas;
	char *in_use = "(in use)";

	if (flags & BINARY)
		return d_raw((unsigned char *)ns, sizeof(*ns));
	if (flags & JSON)
		return json_nvme_id_ns(ns, cap_only);

	if (!cap_only) {
		printf("NVME Identify Namespace %d:\n", nsid);
		printf("nsze    : %#"PRIx64"\n", le64_to_cpu(ns->nsze));
		printf("ncap    : %#"PRIx64"\n", le64_to_cpu(ns->ncap));
		printf("nuse    : %#"PRIx64"\n", le64_to_cpu(ns->nuse));
		printf("nsfeat  : %#x\n", ns->nsfeat);
		if (human)
			nvme_show_id_ns_nsfeat(ns->nsfeat);
	} else
		printf("NVMe Identify Namespace for LBA format[%d]:\n", lba_index);

	printf("nlbaf   : %d\n", ns->nlbaf);
	if (!cap_only) {
		printf("flbas   : %#x\n", ns->flbas);
		if (human)
			nvme_show_id_ns_flbas(ns->flbas);
	} else
		in_use = "";

	printf("mc      : %#x\n", ns->mc);
	if (human)
		nvme_show_id_ns_mc(ns->mc);
	printf("dpc     : %#x\n", ns->dpc);
	if (human)
		nvme_show_id_ns_dpc(ns->dpc);
	if (!cap_only) {
		printf("dps     : %#x\n", ns->dps);
		if (human)
			nvme_show_id_ns_dps(ns->dps);
		printf("nmic    : %#x\n", ns->nmic);
		if (human)
			nvme_show_id_ns_nmic(ns->nmic);
		printf("rescap  : %#x\n", ns->rescap);
		if (human)
			nvme_show_id_ns_rescap(ns->rescap);
		printf("fpi     : %#x\n", ns->fpi);
		if (human)
			nvme_show_id_ns_fpi(ns->fpi);
		printf("dlfeat  : %d\n", ns->dlfeat);
		if (human)
			nvme_show_id_ns_dlfeat(ns->dlfeat);
		printf("nawun   : %d\n", le16_to_cpu(ns->nawun));
		printf("nawupf  : %d\n", le16_to_cpu(ns->nawupf));
		printf("nacwu   : %d\n", le16_to_cpu(ns->nacwu));
		printf("nabsn   : %d\n", le16_to_cpu(ns->nabsn));
		printf("nabo    : %d\n", le16_to_cpu(ns->nabo));
		printf("nabspf  : %d\n", le16_to_cpu(ns->nabspf));
		printf("noiob   : %d\n", le16_to_cpu(ns->noiob));
		printf("nvmcap  : %s\n",
			uint128_t_to_l10n_string(le128_to_cpu(ns->nvmcap)));
		if (ns->nsfeat & 0x10) {
			printf("npwg    : %u\n", le16_to_cpu(ns->npwg));
			printf("npwa    : %u\n", le16_to_cpu(ns->npwa));
			printf("npdg    : %u\n", le16_to_cpu(ns->npdg));
			printf("npda    : %u\n", le16_to_cpu(ns->npda));
			printf("nows    : %u\n", le16_to_cpu(ns->nows));
		}
		printf("mssrl   : %u\n", le16_to_cpu(ns->mssrl));
		printf("mcl     : %u\n", le32_to_cpu(ns->mcl));
		printf("msrc    : %u\n", ns->msrc);
	}
	printf("nulbaf  : %u\n", ns->nulbaf);
	if (!cap_only) {
		printf("anagrpid: %u\n", le32_to_cpu(ns->anagrpid));
		printf("nsattr	: %u\n", ns->nsattr);
		printf("nvmsetid: %d\n", le16_to_cpu(ns->nvmsetid));
		printf("endgid  : %d\n", le16_to_cpu(ns->endgid));

		printf("nguid   : ");
		for (i = 0; i < 16; i++)
			printf("%02x", ns->nguid[i]);
		printf("\n");

		printf("eui64   : ");
		for (i = 0; i < 8; i++)
			printf("%02x", ns->eui64[i]);
		printf("\n");
	}

	nvme_id_ns_flbas_to_lbaf_inuse(ns->flbas, &flbas);
	for (i = 0; i <= ns->nlbaf + ns->nulbaf; i++) {
		if (human)
			printf("LBA Format %2d : Metadata Size: %-3d bytes - "
				"Data Size: %-2d bytes - Relative Performance: %#x %s %s\n",
				i, le16_to_cpu(ns->lbaf[i].ms),
				1 << ns->lbaf[i].ds, ns->lbaf[i].rp,
				ns->lbaf[i].rp == 3 ? "Degraded" :
					ns->lbaf[i].rp == 2 ? "Good" :
					ns->lbaf[i].rp == 1 ? "Better" : "Best",
					i == flbas ? in_use : "");
		else
			printf("lbaf %2d : ms:%-3d lbads:%-2d rp:%#x %s\n", i,
				le16_to_cpu(ns->lbaf[i].ms), ns->lbaf[i].ds,
				ns->lbaf[i].rp,	i == flbas ? in_use : "");
	}

	if (vs && !cap_only) {
		printf("vs[]:\n");
		d(ns->vs, sizeof(ns->vs), 16, 1);
	}
}

static void nvme_show_cmd_set_independent_id_ns_nsfeat(__u8 nsfeat)
{
	__u8 rsvd5 = (nsfeat & 0xE0) >> 5;
	__u8 rmedia = (nsfeat & 0x10) >> 4;
	__u8 uidreuse = (nsfeat & 0x8) >> 3;
	__u8 rsvd0 = (nsfeat & 0x7);
	if (rsvd5)
		printf("  [7:5] : %#x\tReserved\n", rsvd5);
	printf("  [4:4] : %#x\tNamespace %sstore data on rotational media\n",
		rmedia, rmedia ? "" : "does not ");
	printf("  [3:3] : %#x\tNGUID and EUI64 fields if non-zero, %sReused\n",
		uidreuse, uidreuse ? "Never " : "");
	if (rsvd0)
		printf("  [2:0] : %#x\tReserved\n", rsvd0);
	printf("\n");
}

static void nvme_show_cmd_set_independent_id_ns_nstat(__u8 nstat)
{
	__u8 rsvd1 = (nstat & 0xfe) >> 1;
	__u8 nrdy = nstat & 0x1;
	if (rsvd1)
		printf("  [7:1] : %#x\tReserved\n", rsvd1);
	printf("  [0:0] : %#x\tName space is %sready\n",
		nrdy, nrdy ? "" : "not ");
	printf("\n");
}

void nvme_show_cmd_set_independent_id_ns(
	struct nvme_id_independent_id_ns *ns, unsigned int nsid,
	enum nvme_print_flags flags)
{
	int human = flags & VERBOSE;

	if (flags & BINARY)
		return d_raw((unsigned char *)ns, sizeof(*ns));
	if (flags & JSON)
		return json_nvme_cmd_set_independent_id_ns(ns);

	printf("NVME Identify Command Set Independent Namespace %d:\n", nsid);
	printf("nsfeat  : %#x\n", ns->nsfeat);
	if (human)
		nvme_show_cmd_set_independent_id_ns_nsfeat(ns->nsfeat);
	printf("nmic    : %#x\n", ns->nmic);
	if (human)
		nvme_show_id_ns_nmic(ns->nmic);
	printf("rescap  : %#x\n", ns->rescap);
	if (human)
		nvme_show_id_ns_rescap(ns->rescap);
	printf("fpi     : %#x\n", ns->fpi);
	if (human)
		nvme_show_id_ns_fpi(ns->fpi);
	printf("anagrpid: %u\n", le32_to_cpu(ns->anagrpid));
	printf("nsattr	: %u\n", ns->nsattr);
	if (human)
		nvme_show_id_ns_nsattr(ns->nsattr);
	printf("nvmsetid: %d\n", le16_to_cpu(ns->nvmsetid));
	printf("endgid  : %d\n", le16_to_cpu(ns->endgid));

	printf("nstat   : %#x\n", ns->nstat);
	if (human)
		nvme_show_cmd_set_independent_id_ns_nstat(ns->nstat);
}

void nvme_show_id_ns_descs(void *data, unsigned nsid, enum nvme_print_flags flags)
{
	int pos, len = 0;
	int i;
	__u8 uuid[NVME_UUID_LEN];
	char uuid_str[NVME_UUID_LEN_STRING];
	__u8 eui64[8];
	__u8 nguid[16];
	__u8 csi;

	if (flags & BINARY)
		return  d_raw((unsigned char *)data, 0x1000);
	if (flags & JSON)
		return json_nvme_id_ns_descs(data);

	printf("NVME Namespace Identification Descriptors NS %d:\n", nsid);
	for (pos = 0; pos < NVME_IDENTIFY_DATA_SIZE; pos += len) {
		struct nvme_ns_id_desc *cur = data + pos;

		if (cur->nidl == 0)
			break;

		switch (cur->nidt) {
		case NVME_NIDT_EUI64:
			memcpy(eui64, data + pos + sizeof(*cur), sizeof(eui64));
			printf("eui64   : ");
			for (i = 0; i < 8; i++)
				printf("%02x", eui64[i]);
			printf("\n");
			len = sizeof(eui64);
			break;
		case NVME_NIDT_NGUID:
			memcpy(nguid, data + pos + sizeof(*cur), sizeof(nguid));
			printf("nguid   : ");
			for (i = 0; i < 16; i++)
				printf("%02x", nguid[i]);
			printf("\n");
			len = sizeof(nguid);
			break;
		case NVME_NIDT_UUID:
			memcpy(uuid, data + pos + sizeof(*cur), 16);
			nvme_uuid_to_string(uuid, uuid_str);
			printf("uuid    : %s\n", uuid_str);
			len = sizeof(uuid);
			break;
		case NVME_NIDT_CSI:
			memcpy(&csi, data + pos + sizeof(*cur), 1);
			printf("csi     : %#x\n", csi);
			len += sizeof(csi);
			break;
		default:
			/* Skip unknown types */
			len = cur->nidl;
			break;
		}

		len += sizeof(*cur);
	}
}

static void print_psd_workload(__u8 apw)
{
	switch (apw & 0x7) {
	case NVME_PSD_WORKLOAD_NP:
		/* Unknown or not provided */
		printf("-");
		break;

	case 1:
		/* Extended idle period with burst of random write */
		printf("1MiB 32 RW, 30s idle");
		break;

	case 2:
		/* Heavy sequential writes */
		printf("80K 128KiB SW");
		break;

	default:
		printf("reserved");
	}
}

static void print_ps_power_and_scale(__le16 ctr_power, __u8 scale)
{
	__u16 power = le16_to_cpu(ctr_power);

	switch (scale & 0x3) {
	case NVME_PSD_PS_NOT_REPORTED:
		/* Not reported for this power state */
		printf("-");
		break;

	case NVME_PSD_PS_100_MICRO_WATT:
		/* Units of 0.0001W */
		printf("%01u.%04uW", power / 10000, power % 10000);
		break;

	case NVME_PSD_PS_10_MILLI_WATT:
		/* Units of 0.01W */
		printf("%01u.%02uW", power / 100, power % 100);
		break;

	default:
		printf("reserved");
	}
}

static void nvme_show_id_ctrl_power(struct nvme_id_ctrl *ctrl)
{
	int i;

	for (i = 0; i <= ctrl->npss; i++) {
		__u16 max_power = le16_to_cpu(ctrl->psd[i].mp);

		printf("ps   %4d : mp:", i);

		if (ctrl->psd[i].flags & NVME_PSD_FLAGS_MXPS)
			printf("%01u.%04uW ", max_power / 10000, max_power % 10000);
		else
			printf("%01u.%02uW ", max_power / 100, max_power % 100);

		if (ctrl->psd[i].flags & NVME_PSD_FLAGS_NOPS)
			printf("non-");

		printf("operational enlat:%d exlat:%d rrt:%d rrl:%d\n"
			"            rwt:%d rwl:%d idle_power:",
			le32_to_cpu(ctrl->psd[i].enlat),
			le32_to_cpu(ctrl->psd[i].exlat),
			ctrl->psd[i].rrt, ctrl->psd[i].rrl,
			ctrl->psd[i].rwt, ctrl->psd[i].rwl);
		print_ps_power_and_scale(ctrl->psd[i].idlp,
				 nvme_psd_power_scale(ctrl->psd[i].ips));
		printf(" active_power:");
		print_ps_power_and_scale(ctrl->psd[i].actp,
				 nvme_psd_power_scale(ctrl->psd[i].apws));
		printf("\n            active_power_workload:");
		print_psd_workload(ctrl->psd[i].apws);
		printf("\n");

	}
}

void nvme_show_id_ctrl(struct nvme_id_ctrl *ctrl, enum nvme_print_flags flags,
			void (*vendor_show)(__u8 *vs, struct json_object *root))
{
	bool human = flags & VERBOSE, vs = flags & VS;

	if (flags & BINARY)
		return d_raw((unsigned char *)ctrl, sizeof(*ctrl));
	else if (flags & JSON)
		return json_nvme_id_ctrl(ctrl, vendor_show);

	printf("NVME Identify Controller:\n");
	printf("vid       : %#x\n", le16_to_cpu(ctrl->vid));
	printf("ssvid     : %#x\n", le16_to_cpu(ctrl->ssvid));
	printf("sn        : %-.*s\n", (int)sizeof(ctrl->sn), ctrl->sn);
	printf("mn        : %-.*s\n", (int)sizeof(ctrl->mn), ctrl->mn);
	printf("fr        : %-.*s\n", (int)sizeof(ctrl->fr), ctrl->fr);
	printf("rab       : %d\n", ctrl->rab);
	printf("ieee      : %02x%02x%02x\n",
		ctrl->ieee[2], ctrl->ieee[1], ctrl->ieee[0]);
	printf("cmic      : %#x\n", ctrl->cmic);
	if (human)
		nvme_show_id_ctrl_cmic(ctrl->cmic);
	printf("mdts      : %d\n", ctrl->mdts);
	printf("cntlid    : %#x\n", le16_to_cpu(ctrl->cntlid));
	printf("ver       : %#x\n", le32_to_cpu(ctrl->ver));
	printf("rtd3r     : %#x\n", le32_to_cpu(ctrl->rtd3r));
	printf("rtd3e     : %#x\n", le32_to_cpu(ctrl->rtd3e));
	printf("oaes      : %#x\n", le32_to_cpu(ctrl->oaes));
	if (human)
		nvme_show_id_ctrl_oaes(ctrl->oaes);
	printf("ctratt    : %#x\n", le32_to_cpu(ctrl->ctratt));
	if (human)
		nvme_show_id_ctrl_ctratt(ctrl->ctratt);
	printf("rrls      : %#x\n", le16_to_cpu(ctrl->rrls));
	printf("cntrltype : %d\n", ctrl->cntrltype);
	if (human)
		nvme_show_id_ctrl_cntrltype(ctrl->cntrltype);
	printf("fguid     : %s\n", util_uuid_to_string(ctrl->fguid));
	printf("crdt1     : %u\n", le16_to_cpu(ctrl->crdt1));
	printf("crdt2     : %u\n", le16_to_cpu(ctrl->crdt2));
	printf("crdt3     : %u\n", le16_to_cpu(ctrl->crdt3));
	printf("nvmsr     : %u\n", ctrl->nvmsr);
	if (human)
		nvme_show_id_ctrl_nvmsr(ctrl->nvmsr);
	printf("vwci      : %u\n", ctrl->vwci);
	if (human)
		nvme_show_id_ctrl_vwci(ctrl->vwci);
	printf("mec       : %u\n", ctrl->mec);
	if (human)
		nvme_show_id_ctrl_mec(ctrl->mec);

	printf("oacs      : %#x\n", le16_to_cpu(ctrl->oacs));
	if (human)
		nvme_show_id_ctrl_oacs(ctrl->oacs);
	printf("acl       : %d\n", ctrl->acl);
	printf("aerl      : %d\n", ctrl->aerl);
	printf("frmw      : %#x\n", ctrl->frmw);
	if (human)
		nvme_show_id_ctrl_frmw(ctrl->frmw);
	printf("lpa       : %#x\n", ctrl->lpa);
	if (human)
		nvme_show_id_ctrl_lpa(ctrl->lpa);
	printf("elpe      : %d\n", ctrl->elpe);
	if (human)
		nvme_show_id_ctrl_elpe(ctrl->elpe);
	printf("npss      : %d\n", ctrl->npss);
	if (human)
		nvme_show_id_ctrl_npss(ctrl->npss);
	printf("avscc     : %#x\n", ctrl->avscc);
	if (human)
		nvme_show_id_ctrl_avscc(ctrl->avscc);
	printf("apsta     : %#x\n", ctrl->apsta);
	if (human)
		nvme_show_id_ctrl_apsta(ctrl->apsta);
	printf("wctemp    : %d\n", le16_to_cpu(ctrl->wctemp));
	if (human)
		nvme_show_id_ctrl_wctemp(ctrl->wctemp);
	printf("cctemp    : %d\n", le16_to_cpu(ctrl->cctemp));
	if (human)
		nvme_show_id_ctrl_cctemp(ctrl->cctemp);
	printf("mtfa      : %d\n", le16_to_cpu(ctrl->mtfa));
	printf("hmpre     : %u\n", le32_to_cpu(ctrl->hmpre));
	printf("hmmin     : %u\n", le32_to_cpu(ctrl->hmmin));
	printf("tnvmcap   : %s\n",
		uint128_t_to_l10n_string(le128_to_cpu(ctrl->tnvmcap)));
	if (human)
		nvme_show_id_ctrl_tnvmcap(ctrl->tnvmcap);
	printf("unvmcap   : %s\n",
		uint128_t_to_l10n_string(le128_to_cpu(ctrl->unvmcap)));
	if (human)
		nvme_show_id_ctrl_unvmcap(ctrl->unvmcap);
	printf("rpmbs     : %#x\n", le32_to_cpu(ctrl->rpmbs));
	if (human)
		nvme_show_id_ctrl_rpmbs(ctrl->rpmbs);
	printf("edstt     : %d\n", le16_to_cpu(ctrl->edstt));
	printf("dsto      : %d\n", ctrl->dsto);
	printf("fwug      : %d\n", ctrl->fwug);
	printf("kas       : %d\n", le16_to_cpu(ctrl->kas));
	printf("hctma     : %#x\n", le16_to_cpu(ctrl->hctma));
	if (human)
		nvme_show_id_ctrl_hctma(ctrl->hctma);
	printf("mntmt     : %d\n", le16_to_cpu(ctrl->mntmt));
	if (human)
		nvme_show_id_ctrl_mntmt(ctrl->mntmt);
	printf("mxtmt     : %d\n", le16_to_cpu(ctrl->mxtmt));
	if (human)
		nvme_show_id_ctrl_mxtmt(ctrl->mxtmt);
	printf("sanicap   : %#x\n", le32_to_cpu(ctrl->sanicap));
	if (human)
		nvme_show_id_ctrl_sanicap(ctrl->sanicap);
	printf("hmminds   : %u\n", le32_to_cpu(ctrl->hmminds));
	printf("hmmaxd    : %d\n", le16_to_cpu(ctrl->hmmaxd));
	printf("nsetidmax : %d\n", le16_to_cpu(ctrl->nsetidmax));
	printf("endgidmax : %d\n", le16_to_cpu(ctrl->endgidmax));
	printf("anatt     : %d\n", ctrl->anatt);
	printf("anacap    : %d\n", ctrl->anacap);
	if (human)
		nvme_show_id_ctrl_anacap(ctrl->anacap);
	printf("anagrpmax : %u\n", ctrl->anagrpmax);
	printf("nanagrpid : %u\n", le32_to_cpu(ctrl->nanagrpid));
	printf("pels      : %u\n", le32_to_cpu(ctrl->pels));
	printf("domainid  : %d\n", le16_to_cpu(ctrl->domainid));
	printf("megcap    : %s\n",
		uint128_t_to_l10n_string(le128_to_cpu(ctrl->megcap)));
	printf("sqes      : %#x\n", ctrl->sqes);
	if (human)
		nvme_show_id_ctrl_sqes(ctrl->sqes);
	printf("cqes      : %#x\n", ctrl->cqes);
	if (human)
		nvme_show_id_ctrl_cqes(ctrl->cqes);
	printf("maxcmd    : %d\n", le16_to_cpu(ctrl->maxcmd));
	printf("nn        : %u\n", le32_to_cpu(ctrl->nn));
	printf("oncs      : %#x\n", le16_to_cpu(ctrl->oncs));
	if (human)
		nvme_show_id_ctrl_oncs(ctrl->oncs);
	printf("fuses     : %#x\n", le16_to_cpu(ctrl->fuses));
	if (human)
		nvme_show_id_ctrl_fuses(ctrl->fuses);
	printf("fna       : %#x\n", ctrl->fna);
	if (human)
		nvme_show_id_ctrl_fna(ctrl->fna);
	printf("vwc       : %#x\n", ctrl->vwc);
	if (human)
		nvme_show_id_ctrl_vwc(ctrl->vwc);
	printf("awun      : %d\n", le16_to_cpu(ctrl->awun));
	printf("awupf     : %d\n", le16_to_cpu(ctrl->awupf));
	printf("icsvscc   : %d\n", ctrl->icsvscc);
	if (human)
		nvme_show_id_ctrl_icsvscc(ctrl->icsvscc);
	printf("nwpc      : %d\n", ctrl->nwpc);
	if (human)
		nvme_show_id_ctrl_nwpc(ctrl->nwpc);
	printf("acwu      : %d\n", le16_to_cpu(ctrl->acwu));
	printf("ocfs      : %#x\n", le16_to_cpu(ctrl->ocfs));
	if (human)
		nvme_show_id_ctrl_ocfs(ctrl->ocfs);
	printf("sgls      : %#x\n", le32_to_cpu(ctrl->sgls));
	if (human)
		nvme_show_id_ctrl_sgls(ctrl->sgls);
	printf("mnan      : %u\n", le32_to_cpu(ctrl->mnan));
	printf("maxdna    : %s\n",
		uint128_t_to_l10n_string(le128_to_cpu(ctrl->maxdna)));
	printf("maxcna    : %u\n", le32_to_cpu(ctrl->maxcna));
	printf("subnqn    : %-.*s\n", (int)sizeof(ctrl->subnqn), ctrl->subnqn);
	printf("ioccsz    : %u\n", le32_to_cpu(ctrl->ioccsz));
	printf("iorcsz    : %u\n", le32_to_cpu(ctrl->iorcsz));
	printf("icdoff    : %d\n", le16_to_cpu(ctrl->icdoff));
	printf("fcatt     : %#x\n", ctrl->fcatt);
	if (human)
		nvme_show_id_ctrl_fcatt(ctrl->fcatt);
	printf("msdbd     : %d\n", ctrl->msdbd);
	printf("ofcs      : %d\n", le16_to_cpu(ctrl->ofcs));
	if (human)
		nvme_show_id_ctrl_ofcs(ctrl->ofcs);

	nvme_show_id_ctrl_power(ctrl);
	if (vendor_show)
		vendor_show(ctrl->vs, NULL);
	else if (vs) {
		printf("vs[]:\n");
		d(ctrl->vs, sizeof(ctrl->vs), 16, 1);
	}
}

void nvme_show_id_ctrl_nvm(struct nvme_id_ctrl_nvm *ctrl_nvm,
	enum nvme_print_flags flags)
{
	if (flags & BINARY)
		return d_raw((unsigned char *)ctrl_nvm, sizeof(*ctrl_nvm));
	else if (flags & JSON)
		return json_nvme_id_ctrl_nvm(ctrl_nvm);

	printf("NVMe Identify Controller NVM:\n");
	printf("vsl    : %u\n", ctrl_nvm->vsl);
	printf("wzsl   : %u\n", ctrl_nvm->wzsl);
	printf("wusl   : %u\n", ctrl_nvm->wusl);
	printf("dmrl   : %u\n", ctrl_nvm->dmrl);
	printf("dmrsl  : %u\n", le32_to_cpu(ctrl_nvm->dmrsl));
	printf("dmsl   : %"PRIu64"\n", le64_to_cpu(ctrl_nvm->dmsl));
}

static void nvme_show_nvm_id_ns_pic(__u8 pic)
{
	__u8 rsvd = (pic & 0xF8) >> 3;
	__u8 stcrs = (pic & 0x3) >> 2;
	__u8 pic_16bpistm = (pic & 0x2) >> 1;
	__u8 pic_16bpists = pic & 0x1;

	if (rsvd)
		printf("  [7:3] : %#x\tReserved\n", rsvd);
	printf("  [2:2] : %#x\tStorage Tag Check Read Support\n", stcrs);
	printf("  [1:1] : %#x\t16b Guard Protection Information Storage Tag Mask\n",
		pic_16bpistm);
	printf("  [0:0] : %#x\t16b Guard Protection Information Storage Tag Support\n",
		pic_16bpists);
	printf("\n");
}

void nvme_show_nvm_id_ns(struct nvme_nvm_id_ns *nvm_ns, unsigned int nsid,
						struct nvme_id_ns *ns, unsigned int lba_index,
						bool cap_only, enum nvme_print_flags flags)
{
	int i, verbose = flags & VERBOSE;
	__u32 elbaf;
	int pif, sts;
	char *in_use = "(in use)";

	if (flags & BINARY)
		return d_raw((unsigned char *)nvm_ns, sizeof(*nvm_ns));
	else if (flags & JSON)
		return json_nvme_nvm_id_ns(nvm_ns, ns, cap_only);

	if (!cap_only) {
		printf("NVMe NVM Identify Namespace %d:\n", nsid);
		printf("lbstm : %#"PRIx64"\n", le64_to_cpu(nvm_ns->lbstm));
	} else {
		printf("NVMe NVM Identify Namespace for LBA format[%d]:\n", lba_index);
		in_use = "";
	}
	printf("pic   : %#x\n", nvm_ns->pic);
	if (verbose)
		nvme_show_nvm_id_ns_pic(nvm_ns->pic);

	for (i = 0; i <= ns->nlbaf + ns->nulbaf; i++) {
		elbaf = le32_to_cpu(nvm_ns->elbaf[i]);
		pif = (elbaf >> 7) & 0x3;
		sts = elbaf & 0x7f;
		if (verbose)
			printf("Extended LBA Format %2d : Protection Information Format: "
				"%s(%d) - Storage Tag Size (MSB): %-2d %s\n",
				i, pif == 3 ? "Reserved" :
					pif == 2 ? "64b Guard" :
					pif == 1 ? "32b Guard" : "16b Guard",
					pif, sts, i == (ns->flbas & 0xf) ? in_use : "");
		else
			printf("elbaf %2d : pif:%d lbads:%-2d %s\n", i,
				pif, sts, i == (ns->flbas & 0xf) ? in_use : "");
	}
}

void nvme_show_zns_id_ctrl(struct nvme_zns_id_ctrl *ctrl, unsigned int mode)
{
	if (mode & BINARY)
		return d_raw((unsigned char *)ctrl, sizeof(*ctrl));
	else if (mode & JSON)
		return json_nvme_zns_id_ctrl(ctrl);

	printf("NVMe ZNS Identify Controller:\n");
	printf("zasl    : %u\n", ctrl->zasl);
}

static void show_nvme_id_ns_zoned_zoc(__le16 ns_zoc)
{
	__u16 zoc = le16_to_cpu(ns_zoc);
	__u8 rsvd = (zoc & 0xfffc) >> 2;
	__u8 ze = (zoc & 0x2) >> 1;
	__u8 vzc = zoc & 0x1;
	if (rsvd)
		printf(" [15:2] : %#x\tReserved\n", rsvd);
	printf("  [1:1] : %#x\t  Zone Active Excursions: %s\n",
		ze, ze ? "Yes (Host support required)" : "No");
	printf("  [0:0] : %#x\t  Variable Zone Capacity: %s\n",
		vzc, vzc ? "Yes (Host support required)" : "No");
	printf("\n");
}

static void show_nvme_id_ns_zoned_ozcs(__le16 ns_ozcs)
{
	__u16 ozcs = le16_to_cpu(ns_ozcs);
	__u8 rsvd = (ozcs & 0xfffc) >> 2;
	__u8 razb = ozcs & 0x1;
	__u8 zrwasup = (ozcs & 0x2) >> 1;

	if (rsvd)
		printf(" [15:1] : %#x\tReserved\n", rsvd);
	printf("  [0:0] : %#x\t  Read Across Zone Boundaries: %s\n",
		razb, razb ? "Yes" : "No");
	printf("  [1:1] : %#x\t  Zone Random Write Area: %s\n", zrwasup,
				zrwasup ? "Yes" : "No");
}

static void nvme_show_zns_id_ns_recommended_limit(__le32 ns_rl, int human,
	const char *target_limit)
{
	unsigned int recommended_limit = le32_to_cpu(ns_rl);
	if (!recommended_limit && human)
		printf("%s    : Not Reported\n", target_limit);
	else
		printf("%s    : %u\n", target_limit, recommended_limit);
}

static void nvme_show_zns_id_ns_zrwacap(__u8 zrwacap)
{
	__u8 rsvd = (zrwacap & 0xfe) >> 1;
	__u8 expflushsup = zrwacap & 0x1;

	if (rsvd)
		printf(" [7:1] : %#x\tReserved\n", rsvd);
	printf("  [0:0] : %#x\t  Explicit ZRWA Flush Operations: %s\n",
		expflushsup, expflushsup ? "Yes" : "No");
}

void nvme_show_zns_id_ns(struct nvme_zns_id_ns *ns,
	struct nvme_id_ns *id_ns, unsigned long flags)
{
	int human = flags & VERBOSE, vs = flags & VS;
	uint8_t lbaf;
	int i;

	nvme_id_ns_flbas_to_lbaf_inuse(id_ns->flbas, &lbaf);

	if (flags & BINARY)
		return d_raw((unsigned char *)ns, sizeof(*ns));
	else if (flags & JSON)
		return json_nvme_zns_id_ns(ns, id_ns);

	printf("ZNS Command Set Identify Namespace:\n");

	if (human) {
		printf("zoc     : %u\tZone Operation Characteristics\n", le16_to_cpu(ns->zoc));
		show_nvme_id_ns_zoned_zoc(ns->zoc);
	} else {
		printf("zoc     : %u\n", le16_to_cpu(ns->zoc));
	}

	if (human) {
		printf("ozcs    : %u\tOptional Zoned Command Support\n", le16_to_cpu(ns->ozcs));
		show_nvme_id_ns_zoned_ozcs(ns->ozcs);
	} else {
		printf("ozcs    : %u\n", le16_to_cpu(ns->ozcs));
	}

	if (human) {
		if (ns->mar == 0xffffffff) {
			printf("mar     : No Active Resource Limit\n");
		} else {
			printf("mar     : %u\tActive Resources\n", le32_to_cpu(ns->mar) + 1);
		}
	} else {
		printf("mar     : %#x\n", le32_to_cpu(ns->mar));
	}

	if (human) {
		if (ns->mor == 0xffffffff) {
			printf("mor     : No Open Resource Limit\n");
		} else {
			printf("mor     : %u\tOpen Resources\n", le32_to_cpu(ns->mor) + 1);
		}
	} else {
		printf("mor     : %#x\n", le32_to_cpu(ns->mor));
	}

	nvme_show_zns_id_ns_recommended_limit(ns->rrl,  human, "rrl ");
	nvme_show_zns_id_ns_recommended_limit(ns->frl,  human, "frl ");
	nvme_show_zns_id_ns_recommended_limit(ns->rrl1, human, "rrl1");
	nvme_show_zns_id_ns_recommended_limit(ns->rrl2, human, "rrl2");
	nvme_show_zns_id_ns_recommended_limit(ns->rrl3, human, "rrl3");
	nvme_show_zns_id_ns_recommended_limit(ns->frl,  human, "frl1");
	nvme_show_zns_id_ns_recommended_limit(ns->frl,  human, "frl2");
	nvme_show_zns_id_ns_recommended_limit(ns->frl,  human, "frl3");

	printf("numzrwa : %#x\n", le32_to_cpu(ns->numzrwa));
	printf("zrwafg  : %u\n", le16_to_cpu(ns->zrwafg));
	printf("zrwasz  : %u\n", le16_to_cpu(ns->zrwasz));
	if (human) {
		printf("zrwacap : %u\tZone Random Write Area Capability\n", ns->zrwacap);
		nvme_show_zns_id_ns_zrwacap(ns->zrwacap);
	} else {
		printf("zrwacap : %u\n", ns->zrwacap);
	}

	for (i = 0; i <= id_ns->nlbaf; i++){
		if (human)
			printf("LBA Format Extension %2d : Zone Size: 0x%"PRIx64" LBAs - "
					"Zone Descriptor Extension Size: %-1d bytes%s\n",
				i, le64_to_cpu(ns->lbafe[i].zsze), ns->lbafe[i].zdes << 6,
				i == lbaf ? " (in use)" : "");
		else
			printf("lbafe %2d: zsze:0x%"PRIx64" zdes:%u%s\n", i,
				(uint64_t)le64_to_cpu(ns->lbafe[i].zsze),
				ns->lbafe[i].zdes, i == lbaf ? " (in use)" : "");
	}

	if (vs) {
		printf("vs[]    :\n");
		d(ns->vs, sizeof(ns->vs), 16, 1);
	}
}

void nvme_show_list_ns(struct nvme_ns_list *ns_list, enum nvme_print_flags flags)
{
	int i;
	if (flags & JSON)
		return json_nvme_list_ns(ns_list);

	for (i = 0; i < 1024; i++) {
		if (ns_list->ns[i])
			printf("[%4u]:%#x\n", i, le32_to_cpu(ns_list->ns[i]));
	}
}

void nvme_show_zns_changed(struct nvme_zns_changed_zone_log *log,
	unsigned long flags)
{
	uint16_t nrzid;
	int i;

	if (flags & BINARY)
		return d_raw((unsigned char *)log, sizeof(*log));

	nrzid = le16_to_cpu(log->nrzid);
	printf("NVMe Changed Zone List:\n");

	if (nrzid == 0xFFFF) {
		printf("Too many zones have changed to fit into the log. Use report zones for changes.\n");
		return;
	}

	printf("nrzid:  %u\n", nrzid);
	for (i = 0; i < nrzid; i++)
		printf("zid %03d: %"PRIu64"\n", i, (uint64_t)le64_to_cpu(log->zid[i]));
}

char *zone_type_to_string(__u8 cond)
{
	switch (cond) {
	case NVME_ZONE_TYPE_SEQWRITE_REQ:
		return "SEQWRITE_REQ";
	default:
		return "Unknown";
	}
}

char *zone_state_to_string(__u8 state)
{
	switch (state) {
	case NVME_ZNS_ZS_EMPTY:
		return "EMPTY";
	case NVME_ZNS_ZS_IMPL_OPEN:
		return "IMP_OPENED";
	case NVME_ZNS_ZS_EXPL_OPEN:
		return "EXP_OPENED";
	case NVME_ZNS_ZS_CLOSED:
		return "CLOSED";
	case NVME_ZNS_ZS_READ_ONLY:
		return "READONLY";
	case NVME_ZNS_ZS_FULL:
		return "FULL";
	case NVME_ZNS_ZS_OFFLINE:
		return "OFFLINE";
	default:
		return "Unknown State";
	}
}

static void nvme_show_zns_report_zone_attributes(__u8 za, __u8 zai)
{
	const char *const recommended_limit[4] = {"","1","2","3"};
	printf("Attrs: Zone Descriptor Extension is %sVaild\n", 
		(za & NVME_ZNS_ZA_ZDEV)? "" : "Not ");
	if(za & NVME_ZNS_ZA_RZR) {
		printf("       Reset Zone Recommended with Reset Recommended Limit%s\n",
			recommended_limit[(zai&0xd)>>2]);
	}
	if (za & NVME_ZNS_ZA_FZR) {
		printf("       Finish Zone Recommended with Finish Recommended Limit%s\n",
			recommended_limit[zai&0x3]);
	}
	if (za & NVME_ZNS_ZA_ZFC) {
		printf("       Zone Finished by Controller\n");
	}
}

void nvme_show_zns_report_zones(void *report, __u32 descs,
	__u8 ext_size, __u32 report_size, unsigned long flags,
	struct json_object *zone_list)
{
	struct nvme_zone_report *r = report;
	struct nvme_zns_desc *desc;
	int i, verbose = flags & VERBOSE;
	__u64 nr_zones = le64_to_cpu(r->nr_zones);

	if (nr_zones < descs)
		descs = nr_zones;

	if (flags & BINARY)
		return d_raw((unsigned char *)report, report_size);
	else if (flags & JSON)
		return json_nvme_zns_report_zones(report, descs,
				ext_size, report_size, zone_list);

	for (i = 0; i < descs; i++) {
		desc = (struct nvme_zns_desc *)
			(report + sizeof(*r) + i * (sizeof(*desc) + ext_size));
		if(verbose) {
			printf("SLBA: %#-10"PRIx64" WP: %#-10"PRIx64" Cap: %#-10"PRIx64" State: %-12s Type: %-14s\n",
				(uint64_t)le64_to_cpu(desc->zslba), (uint64_t)le64_to_cpu(desc->wp),
				(uint64_t)le64_to_cpu(desc->zcap), zone_state_to_string(desc->zs >> 4),
				zone_type_to_string(desc->zt));
			nvme_show_zns_report_zone_attributes(desc->za, desc->zai);
		}
		else {
			printf("SLBA: %#-10"PRIx64" WP: %#-10"PRIx64" Cap: %#-10"PRIx64" State: %#-4x Type: %#-4x Attrs: %#-4x AttrsInfo: %#-4x\n",
				(uint64_t)le64_to_cpu(desc->zslba), (uint64_t)le64_to_cpu(desc->wp),
				(uint64_t)le64_to_cpu(desc->zcap), desc->zs, desc->zt,
				desc->za, desc->zai);
		}

		if (ext_size && (desc->za & NVME_ZNS_ZA_ZDEV)) {
			printf("Extension Data: ");
			d((unsigned char *)desc + sizeof(*desc), ext_size, 16, 1);
			printf("..\n");
		}
	}
}

void nvme_show_list_ctrl(struct nvme_ctrl_list *ctrl_list,
	enum nvme_print_flags flags)
{
	int i;
	__u16 num = le16_to_cpu(ctrl_list->num);

	if (flags & BINARY)
		return d_raw((unsigned char *)ctrl_list, sizeof(*ctrl_list));
	if (flags & JSON)
		return json_nvme_list_ctrl(ctrl_list, num);

	printf("num of ctrls present: %u\n", num);
	for (i = 0; i < min(num, 2047); i++) {
		printf("[%4u]:%#x\n", i, le16_to_cpu(ctrl_list->identifier[i]));
	}
}

void nvme_show_id_nvmset(struct nvme_id_nvmset_list *nvmset, unsigned nvmset_id,
	enum nvme_print_flags flags)
{
	int i;

	if (flags & BINARY)
		return d_raw((unsigned char *)nvmset, sizeof(*nvmset));
	if (flags & JSON)
		return json_nvme_id_nvmset(nvmset);

	printf("NVME Identify NVM Set List %d:\n", nvmset_id);
	printf("nid     : %d\n", nvmset->nid);
	printf(".................\n");
	for (i = 0; i < nvmset->nid; i++) {
		printf(" NVM Set Attribute Entry[%2d]\n", i);
		printf(".................\n");
		printf("nvmset_id               : %d\n",
			le16_to_cpu(nvmset->ent[i].endgid));
		printf("endurance_group_id      : %d\n",
			le16_to_cpu(nvmset->ent[i].endgid));
		printf("random_4k_read_typical  : %u\n",
			le32_to_cpu(nvmset->ent[i].rr4kt));
		printf("optimal_write_size      : %u\n",
			le32_to_cpu(nvmset->ent[i].ows));
		printf("total_nvmset_cap        : %s\n",
			uint128_t_to_l10n_string(
				le128_to_cpu(nvmset->ent[i].tnvmsetcap)));
		printf("unalloc_nvmset_cap      : %s\n",
			uint128_t_to_l10n_string(
				le128_to_cpu(nvmset->ent[i].unvmsetcap)));
		printf(".................\n");
	}
}

static void nvme_show_primary_ctrl_caps_crt(__u8 crt)
{
	__u8 rsvd = (crt & 0xFC) >> 2;
	__u8 vi = (crt & 0x2) >> 1;
	__u8 vq = crt & 0x1;

	if (rsvd)
		printf("  [7:2] : %#x\tReserved\n", rsvd);
	printf("  [1:1] %#x\tVI Resources are %ssupported\n", vi, vi ? "" : "not ");
	printf("  [0:0] %#x\tVQ Resources are %ssupported\n", vq, vq ? "" : "not ");
}

void nvme_show_primary_ctrl_cap(const struct nvme_primary_ctrl_cap *caps,
				enum nvme_print_flags flags)
{
	int human = flags & VERBOSE;

	if (flags & BINARY)
		return d_raw((unsigned char *)caps, sizeof(*caps));
	else if (flags & JSON)
		return json_nvme_primary_ctrl_cap(caps);

	printf("NVME Identify Primary Controller Capabilities:\n");
	printf("cntlid    : %#x\n", le16_to_cpu(caps->cntlid));
	printf("portid    : %#x\n", le16_to_cpu(caps->portid));
	printf("crt       : %#x\n", caps->crt);
	if (human)
		nvme_show_primary_ctrl_caps_crt(caps->crt);
	printf("vqfrt     : %u\n", le32_to_cpu(caps->vqfrt));
	printf("vqrfa     : %u\n", le32_to_cpu(caps->vqrfa));
	printf("vqrfap    : %d\n", le16_to_cpu(caps->vqrfap));
	printf("vqprt     : %d\n", le16_to_cpu(caps->vqprt));
	printf("vqfrsm    : %d\n", le16_to_cpu(caps->vqfrsm));
	printf("vqgran    : %d\n", le16_to_cpu(caps->vqgran));
	printf("vifrt     : %u\n", le32_to_cpu(caps->vifrt));
	printf("virfa     : %u\n", le32_to_cpu(caps->virfa));
	printf("virfap    : %d\n", le16_to_cpu(caps->virfap));
	printf("viprt     : %d\n", le16_to_cpu(caps->viprt));
	printf("vifrsm    : %d\n", le16_to_cpu(caps->vifrsm));
	printf("vigran    : %d\n", le16_to_cpu(caps->vigran));
}

void nvme_show_list_secondary_ctrl(
	const struct nvme_secondary_ctrl_list *sc_list,
	__u32 count, enum nvme_print_flags flags)
{
	const struct nvme_secondary_ctrl *sc_entry =
		&sc_list->sc_entry[0];
	static const char * const state_desc[] = { "Offline", "Online" };

	__u16 num = sc_list->num;
	__u32 entries = min(num, count);
	int i;

	if (flags & BINARY)
		return d_raw((unsigned char *)sc_list, sizeof(*sc_list));
	if (flags & JSON)
		return json_nvme_list_secondary_ctrl(sc_list, entries);

	printf("Identify Secondary Controller List:\n");
	printf("   NUMID       : Number of Identifiers           : %d\n", num);

	for (i = 0; i < entries; i++) {
		printf("   SCEntry[%-3d]:\n", i);
		printf("................\n");
		printf("     SCID      : Secondary Controller Identifier : 0x%.04x\n",
				le16_to_cpu(sc_entry[i].scid));
		printf("     PCID      : Primary Controller Identifier   : 0x%.04x\n",
				le16_to_cpu(sc_entry[i].pcid));
		printf("     SCS       : Secondary Controller State      : 0x%.04x (%s)\n",
				sc_entry[i].scs,
				state_desc[sc_entry[i].scs & 0x1]);
		printf("     VFN       : Virtual Function Number         : 0x%.04x\n",
				le16_to_cpu(sc_entry[i].vfn));
		printf("     NVQ       : Num VQ Flex Resources Assigned  : 0x%.04x\n",
				le16_to_cpu(sc_entry[i].nvq));
		printf("     NVI       : Num VI Flex Resources Assigned  : 0x%.04x\n",
				le16_to_cpu(sc_entry[i].nvi));
	}
}

void nvme_show_id_ns_granularity_list(const struct nvme_id_ns_granularity_list *glist,
	enum nvme_print_flags flags)
{
	int i;

	if (flags & BINARY)
		return d_raw((unsigned char *)glist, sizeof(*glist));
	if (flags & JSON)
		return json_nvme_id_ns_granularity_list(glist);

	printf("Identify Namespace Granularity List:\n");
	printf("   ATTR        : Namespace Granularity Attributes: 0x%x\n",
		glist->attributes);
	printf("   NUMD        : Number of Descriptors           : %d\n",
		glist->num_descriptors);

	/* Number of Descriptors is a 0's based value */
	for (i = 0; i <= glist->num_descriptors; i++) {
		printf("\n     Entry[%2d] :\n", i);
		printf("................\n");
		printf("     NSG       : Namespace Size Granularity     : 0x%"PRIx64"\n",
			le64_to_cpu(glist->entry[i].nszegran));
		printf("     NCG       : Namespace Capacity Granularity : 0x%"PRIx64"\n",
			le64_to_cpu(glist->entry[i].ncapgran));
	}
}

void nvme_show_id_uuid_list(const struct nvme_id_uuid_list *uuid_list,
				enum nvme_print_flags flags)
{
	int i, human = flags & VERBOSE;

	if (flags & BINARY)
		return d_raw((unsigned char *)uuid_list, sizeof(*uuid_list));
	if (flags & JSON)
		return json_nvme_id_uuid_list(uuid_list);

	/* The 0th entry is reserved */
	printf("NVME Identify UUID:\n");
	for (i = 0; i < NVME_ID_UUID_LIST_MAX; i++) {
		__u8 uuid[NVME_UUID_LEN];
		char *association = "";
		uint8_t identifier_association = uuid_list->entry[i].header & 0x3;
		/* The list is terminated by a zero UUID value */
		if (memcmp(uuid_list->entry[i].uuid, zero_uuid, NVME_UUID_LEN) == 0)
			break;
		memcpy(&uuid, uuid_list->entry[i].uuid, NVME_UUID_LEN);
		if (human) {
			switch (identifier_association) {
			case 0x0:
				association = "No association reported";
				break;
			case 0x1:
				association = "associated with PCI Vendor ID";
				break;
			case 0x2:
				association = "associated with PCI Subsystem Vendor ID";
				break;
			default:
				association = "Reserved";
				break;
			}
		}
		printf(" Entry[%3d]\n", i+1);
		printf(".................\n");
		printf("association  : 0x%x %s\n", identifier_association, association);
		printf("UUID         : %s", util_uuid_to_string(uuid));
		if (memcmp(uuid_list->entry[i].uuid, invalid_uuid,
			   sizeof(zero_uuid)) == 0)
			printf(" (Invalid UUID)");
		printf("\n.................\n");
	}
}

void nvme_show_id_domain_list(struct nvme_id_domain_list *id_dom,
	enum nvme_print_flags flags)
{
	int i;
	if (flags & BINARY)
		return d_raw((unsigned char *)id_dom, sizeof(*id_dom));
	else if (flags & JSON)
		return json_id_domain_list(id_dom);

	printf("Number of Domain Entries: %u\n", id_dom->num);
	for (i = 0; i < id_dom->num; i++) {
		printf("Domain Id for Attr Entry[%u]: %u\n", i,
			le16_to_cpu(id_dom->domain_attr[i].dom_id));
		printf("Domain Capacity for Attr Entry[%u]: %s\n", i,
			uint128_t_to_l10n_string(
				le128_to_cpu(id_dom->domain_attr[i].dom_cap)));
		printf("Unallocated Domain Capacity for Attr Entry[%u]: %s\n", i,
			uint128_t_to_l10n_string(
				le128_to_cpu(id_dom->domain_attr[i].unalloc_dom_cap)));
		printf("Max Endurance Group Domain Capacity for Attr Entry[%u]: %s\n", i,
			uint128_t_to_l10n_string(
				le128_to_cpu(id_dom->domain_attr[i].max_egrp_dom_cap)));
	}
}

void nvme_show_endurance_group_list(struct nvme_id_endurance_group_list *endgrp_list,
	enum nvme_print_flags flags)
{
	int i;
	__u16 num = le16_to_cpu(endgrp_list->num);

	if (flags & JSON)
		return json_nvme_endurance_group_list(endgrp_list);

	printf("num of endurance group ids: %u\n", num);
	for (i = 0; i < min(num, 2047); i++) {
		printf("[%4u]:%#x\n", i, le16_to_cpu(endgrp_list->identifier[i]));
	}
}

void nvme_show_id_iocs(struct nvme_id_iocs *iocs)
{
	__u16 i;

	for (i = 0; i < 512; i++)
		if (iocs->iocsc[i])
			printf("I/O Command Set Combination[%u]:%"PRIx64"\n", i,
				(uint64_t)le64_to_cpu(iocs->iocsc[i]));
}

static const char *nvme_trtype_to_string(__u8 trtype)
{
	switch (trtype) {
	case 0: return "The transport type is not indicated or the error "\
		"is not transport related.";
	case 1: return "RDMA Transport error.";
	case 2: return "Fibre Channel Transport error.";
	case 3: return "TCP Transport error.";
	case 254: return "Intra-host Transport error.";
	default: return "Reserved";
	};
}

void nvme_show_error_log(struct nvme_error_log_page *err_log, int entries,
			const char *devname, enum nvme_print_flags flags)
{
	int i;

	if (flags & BINARY)
		return d_raw((unsigned char *)err_log,
			     entries * sizeof(*err_log));
	else if (flags & JSON)
		return json_error_log(err_log, entries);

	printf("Error Log Entries for device:%s entries:%d\n", devname,
								entries);
	printf(".................\n");
	for (i = 0; i < entries; i++) {
		__u16 status = le16_to_cpu(err_log[i].status_field) >> 0x1;

		printf(" Entry[%2d]   \n", i);
		printf(".................\n");
		printf("error_count	: %"PRIu64"\n",
			le64_to_cpu(err_log[i].error_count));
		printf("sqid		: %d\n", err_log[i].sqid);
		printf("cmdid		: %#x\n", err_log[i].cmdid);
		printf("status_field	: %#x(%s)\n", status,
			nvme_status_to_string(status, false));
		printf("phase_tag	: %#x\n",
			le16_to_cpu(err_log[i].status_field & 0x1));
		printf("parm_err_loc	: %#x\n",
			err_log[i].parm_error_location);
		printf("lba		: %#"PRIx64"\n",
			le64_to_cpu(err_log[i].lba));
		printf("nsid		: %#x\n", err_log[i].nsid);
		printf("vs		: %d\n", err_log[i].vs);
		printf("trtype		: %s\n",
			nvme_trtype_to_string(err_log[i].trtype));
		printf("csi		: %d\n", err_log[i].csi);
		printf("opcode		: %#x\n", err_log[i].opcode);
		printf("cs		: %#"PRIx64"\n",
		       le64_to_cpu(err_log[i].cs));
		printf("trtype_spec_info: %#x\n", err_log[i].trtype_spec_info);
		printf("log_page_version: %d\n", err_log[i].log_page_version);
		printf(".................\n");
	}
}

void nvme_show_resv_report(struct nvme_resv_status *status, int bytes,
	bool eds, enum nvme_print_flags flags)
{
	int i, j, regctl, entries;

	if (flags & BINARY)
		return d_raw((unsigned char *)status, bytes);
	else if (flags & JSON)
		return json_nvme_resv_report(status, bytes, eds);

	regctl = status->regctl[0] | (status->regctl[1] << 8);

	printf("\nNVME Reservation status:\n\n");
	printf("gen       : %u\n", le32_to_cpu(status->gen));
	printf("rtype     : %d\n", status->rtype);
	printf("regctl    : %d\n", regctl);
	printf("ptpls     : %d\n", status->ptpls);

	/* check Extended Data Structure bit */
	if (!eds) {
		/*
		 * if status buffer was too small, don't loop past the end of
		 * the buffer
		 */
		entries = (bytes - 24) / 24;
		if (entries < regctl)
			regctl = entries;

		for (i = 0; i < regctl; i++) {
			printf("regctl[%d] :\n", i);
			printf("  cntlid  : %x\n",
				le16_to_cpu(status->regctl_ds[i].cntlid));
			printf("  rcsts   : %x\n",
				status->regctl_ds[i].rcsts);
			printf("  hostid  : %"PRIx64"\n",
				le64_to_cpu(status->regctl_ds[i].hostid));
			printf("  rkey    : %"PRIx64"\n",
				le64_to_cpu(status->regctl_ds[i].rkey));
		}
	} else {
		/* if status buffer was too small, don't loop past the end of the buffer */
		entries = (bytes - 64) / 64;
		if (entries < regctl)
			regctl = entries;

		for (i = 0; i < regctl; i++) {
			printf("regctlext[%d] :\n", i);
			printf("  cntlid     : %x\n",
				le16_to_cpu(status->regctl_eds[i].cntlid));
			printf("  rcsts      : %x\n",
				status->regctl_eds[i].rcsts);
			printf("  rkey       : %"PRIx64"\n",
				le64_to_cpu(status->regctl_eds[i].rkey));
			printf("  hostid     : ");
			for (j = 0; j < 16; j++)
				printf("%02x",
					status->regctl_eds[i].hostid[j]);
			printf("\n");
		}
	}
	printf("\n");
}

void nvme_show_fw_log(struct nvme_firmware_slot *fw_log,
	const char *devname, enum nvme_print_flags flags)
{
	int i;
	__le64 *frs;

	if (flags & BINARY)
		return d_raw((unsigned char *)fw_log, sizeof(*fw_log));
	if (flags & JSON)
		return json_fw_log(fw_log, devname);

	printf("Firmware Log for device:%s\n", devname);
	printf("afi  : %#x\n", fw_log->afi);
	for (i = 0; i < 7; i++) {
		if (fw_log->frs[i][0]) {
			frs = (__le64 *)&fw_log->frs[i];
			printf("frs%d : %#016"PRIx64" (%s)\n", i + 1,
				le64_to_cpu(*frs),
				util_fw_to_string(fw_log->frs[i]));
		}
	}
}

void nvme_show_changed_ns_list_log(struct nvme_ns_list *log,
				   const char *devname,
				   enum nvme_print_flags flags)
{
	__u32 nsid;
	int i;

	if (flags & BINARY)
		return d_raw((unsigned char *)log, sizeof(*log));
	else if (flags & JSON)
		return json_changed_ns_list_log(log, devname);

	if (log->ns[0] != cpu_to_le32(NVME_NSID_ALL)) {
		for (i = 0; i < NVME_ID_NS_LIST_MAX; i++) {
			nsid = le32_to_cpu(log->ns[i]);
			if (nsid == 0)
				break;

			printf("[%4u]:%#x\n", i, nsid);
		}
	} else
		printf("more than %d ns changed\n",
			NVME_ID_NS_LIST_MAX);
}

static void nvme_show_effects_log_human(FILE *stream, __u32 effect)
{
	const char *set = "+";
	const char *clr = "-";

	fprintf(stream, "  CSUPP+");
	fprintf(stream, "  LBCC%s", (effect & NVME_CMD_EFFECTS_LBCC) ? set : clr);
	fprintf(stream, "  NCC%s", (effect & NVME_CMD_EFFECTS_NCC) ? set : clr);
	fprintf(stream, "  NIC%s", (effect & NVME_CMD_EFFECTS_NIC) ? set : clr);
	fprintf(stream, "  CCC%s", (effect & NVME_CMD_EFFECTS_CCC) ? set : clr);
	fprintf(stream, "  USS%s", (effect & NVME_CMD_EFFECTS_UUID_SEL) ? set : clr);

	if ((effect & NVME_CMD_EFFECTS_CSE_MASK) >> 16 == 0)
		fprintf(stream, "  No command restriction\n");
	else if ((effect & NVME_CMD_EFFECTS_CSE_MASK) >> 16 == 1)
		fprintf(stream, "  No other command for same namespace\n");
	else if ((effect & NVME_CMD_EFFECTS_CSE_MASK) >> 16 == 2)
		fprintf(stream, "  No other command for any namespace\n");
	else
		fprintf(stream, "  Reserved CSE\n");
}

void nvme_print_effects_entry(FILE* stream, int admin, int index, __le32 entry, unsigned int human) {
	__u32 effect;
	char *format_string;

	format_string = admin ? "ACS%-6d[%-32s] %08x" : "IOCS%-5d[%-32s] %08x";

	effect = le32_to_cpu(entry);
	if (effect & NVME_CMD_EFFECTS_CSUPP) {
		fprintf(stream, format_string, index, nvme_cmd_to_string(admin, index),
		       effect);
		if (human)
			nvme_show_effects_log_human(stream, effect);
		else
			fprintf(stream, "\n");
	}
}

void nvme_print_effects_log_segment(int admin, int a, int b, struct nvme_cmd_effects_log *effects, char* header, int human) {
	FILE *stream;
	char *stream_location;
	size_t stream_size;

	stream = open_memstream(&stream_location, &stream_size);
	if (!stream) {
		perror("Failed to open stream");
		return;
	}

	for (int i = a; i < b; i++) {
		if (admin) {
			nvme_print_effects_entry(stream, admin, i, effects->acs[i], human);
		}
		else {
			nvme_print_effects_entry(stream, admin, i,
						 effects->iocs[i], human);
		}
	}

	fclose(stream);

	if (stream_size && header) {
		printf("%s\n", header);
		fwrite(stream_location, stream_size, 1, stdout);
		printf("\n");
	}

	free(stream_location);
}

void nvme_print_effects_log_page(enum nvme_csi csi, struct nvme_cmd_effects_log *effects, int flags) {
	int human = flags & VERBOSE;

	switch (csi) {
	case NVME_CSI_NVM:
		printf("NVM Command Set Log Page\n");
		printf("%-.80s\n", dash);
		break;
	case NVME_CSI_ZNS:
		printf("ZNS Command Set Log Page\n");
		printf("%-.80s\n", dash);
		break;
	default:
		printf("Unknown Command Set Log Page\n");
		printf("%-.80s\n", dash);
		break;
	}

	nvme_print_effects_log_segment(1, 0, 0xbf, effects, "Admin Commands", human);
	nvme_print_effects_log_segment(1, 0xc0, 0xff, effects, "Vendor Specific Admin Commands", human);
	nvme_print_effects_log_segment(0, 0, 0x80, effects, "I/O Commands", human);
	nvme_print_effects_log_segment(0, 0x80, 0x100, effects, "Vendor Specific I/O Commands", human);
}

void nvme_print_effects_log_pages(struct list_head *list,
			   int flags)
{
	if (flags & JSON)
		return json_effects_log_list(list);

	nvme_effects_log_node_t *node;
	list_for_each(list, node, node) {
		if (flags & BINARY) {
			d_raw((unsigned char *)&node->effects, sizeof(node->effects));
		}
		else {
			nvme_print_effects_log_page(node->csi, &node->effects, flags);
		}
	}
}

const char *nvme_log_to_string(__u8 lid)
{
	switch (lid) {
	case NVME_LOG_LID_SUPPORTED_LOG_PAGES:		return "Supported Log Pages";
	case NVME_LOG_LID_ERROR:			return "Error Information";
	case NVME_LOG_LID_SMART:			return "SMART / Health Information";
	case NVME_LOG_LID_FW_SLOT:			return "Firmware Slot Information";
	case NVME_LOG_LID_CHANGED_NS:			return "Changed Namespace List";
	case NVME_LOG_LID_CMD_EFFECTS:			return "Commands Supported and Effects";
	case NVME_LOG_LID_DEVICE_SELF_TEST:		return "Device Self-test";
	case NVME_LOG_LID_TELEMETRY_HOST:		return "Telemetry Host-Initiated";
	case NVME_LOG_LID_TELEMETRY_CTRL:		return "Telemetry Controller-Initiated";
	case NVME_LOG_LID_ENDURANCE_GROUP:		return "Endurance Group Information";
	case NVME_LOG_LID_PREDICTABLE_LAT_NVMSET:	return "Predictable Latency Per NVM Set";
	case NVME_LOG_LID_PREDICTABLE_LAT_AGG:		return "Predictable Latency Event Aggregate";
	case NVME_LOG_LID_ANA:				return "Asymmetric Namespace Access";
	case NVME_LOG_LID_PERSISTENT_EVENT:		return "Persistent Event Log";
	case NVME_LOG_LID_LBA_STATUS:			return "LBA Status Information";
	case NVME_LOG_LID_ENDURANCE_GRP_EVT:		return "Endurance Group Event Aggregate";
	case NVME_LOG_LID_FID_SUPPORTED_EFFECTS:	return "Feature Identifiers Supported and Effects";
	case NVME_LOG_LID_BOOT_PARTITION:		return "Boot Partition";
	case NVME_LOG_LID_DISCOVER:			return "Discovery";
	case NVME_LOG_LID_RESERVATION:			return "Reservation Notification";
	case NVME_LOG_LID_SANITIZE:			return "Sanitize Status";
	case NVME_LOG_LID_ZNS_CHANGED_ZONES:		return "Changed Zone List";
	default:					return "Unknown";
	}
}

static void nvme_show_support_log_human(__u32 support, __u8 lid)
{
	const char *set = "supported";
	const char *clr = "not supported";

	printf("  LSUPP is %s\n", (support & 0x1) ? set : clr);
	printf("  IOS is %s\n", ((support >> 0x1) & 0x1) ? set : clr);
	if (lid == NVME_LOG_LID_PERSISTENT_EVENT) {
		printf("  Establish Context and Read 512 Bytes of Header is %s\n",
			((support >> 0x16) & 0x1) ? set : clr);
	}
}

void nvme_show_supported_log(struct nvme_supported_log_pages *support_log,
	const char *devname, enum nvme_print_flags flags)
{
	int lid, human = flags & VERBOSE;
	__u32 support = 0;

	if (flags & BINARY)
		return d_raw((unsigned char *)support_log, sizeof(*support_log));
	else if (flags & JSON)
		return json_support_log(support_log);

	printf("Support Log Pages Details for %s:\n", devname);
	for (lid = 0; lid < 256; lid++) {
		support = le32_to_cpu(support_log->lid_support[lid]);
		if (support & 0x1) {
			printf("LID 0x%x - %s\n", lid, nvme_log_to_string(lid));
			if (human)
				nvme_show_support_log_human(support, lid);
		}
	}
}

void nvme_show_endurance_log(struct nvme_endurance_group_log *endurance_log,
			     __u16 group_id, const char *devname,
			     enum nvme_print_flags flags)
{
	if (flags & BINARY)
		return d_raw((unsigned char *)endurance_log,
			sizeof(*endurance_log));
	else if (flags & JSON)
		return json_endurance_log(endurance_log, group_id);

	printf("Endurance Group Log for NVME device:%s Group ID:%x\n", devname,
		group_id);
	printf("critical warning	: %u\n",
		endurance_log->critical_warning);
	printf("avl_spare		: %u\n", endurance_log->avl_spare);
	printf("avl_spare_threshold	: %u\n",
		endurance_log->avl_spare_threshold);
	printf("percent_used		: %u%%\n", endurance_log->percent_used);
	printf("endurance_estimate	: %s\n",
		uint128_t_to_l10n_string(
			le128_to_cpu(endurance_log->endurance_estimate)));
	printf("data_units_read		: %s\n",
		uint128_t_to_l10n_string(
			le128_to_cpu(endurance_log->data_units_read)));
	printf("data_units_written	: %s\n",
		uint128_t_to_l10n_string(
			le128_to_cpu(endurance_log->data_units_written)));
	printf("media_units_written	: %s\n",
		uint128_t_to_l10n_string(
			le128_to_cpu(endurance_log->media_units_written)));
	printf("host_read_cmds		: %s\n",
		uint128_t_to_l10n_string(
			le128_to_cpu(endurance_log->host_read_cmds)));
	printf("host_write_cmds		: %s\n",
		uint128_t_to_l10n_string(
			le128_to_cpu(endurance_log->host_write_cmds)));
	printf("media_data_integrity_err: %s\n",
		uint128_t_to_l10n_string(
			le128_to_cpu(endurance_log->media_data_integrity_err)));
	printf("num_err_info_log_entries: %s\n",
		uint128_t_to_l10n_string(
			le128_to_cpu(endurance_log->num_err_info_log_entries)));
}

void nvme_show_smart_log(struct nvme_smart_log *smart, unsigned int nsid,
			 const char *devname, enum nvme_print_flags flags)
{
	__u16 temperature = smart->temperature[1] << 8 | smart->temperature[0];
	int i;
	bool human = flags & VERBOSE;

	if (flags & BINARY)
		return d_raw((unsigned char *)smart, sizeof(*smart));
	else if (flags & JSON)
		return json_smart_log(smart, nsid, flags);

	printf("Smart Log for NVME device:%s namespace-id:%x\n", devname, nsid);
	printf("critical_warning			: %#x\n",
		smart->critical_warning);

	if (human) {
		printf("      Available Spare[0]             : %d\n", smart->critical_warning & 0x01);
		printf("      Temp. Threshold[1]             : %d\n", (smart->critical_warning & 0x02) >> 1);
		printf("      NVM subsystem Reliability[2]   : %d\n", (smart->critical_warning & 0x04) >> 2);
		printf("      Read-only[3]                   : %d\n", (smart->critical_warning & 0x08) >> 3);
		printf("      Volatile mem. backup failed[4] : %d\n", (smart->critical_warning & 0x10) >> 4);
		printf("      Persistent Mem. RO[5]          : %d\n", (smart->critical_warning & 0x20) >> 5);
	}

	printf("temperature				: %ld Â°C (%u K)\n",
		kelvin_to_celsius(temperature), temperature);
	printf("available_spare				: %u%%\n",
		smart->avail_spare);
	printf("available_spare_threshold		: %u%%\n",
		smart->spare_thresh);
	printf("percentage_used				: %u%%\n",
		smart->percent_used);
	printf("endurance group critical warning summary: %#x\n",
		smart->endu_grp_crit_warn_sumry);
	printf("Data Units Read				: %s (%s)\n",
		uint128_t_to_l10n_string(le128_to_cpu(smart->data_units_read)),
		uint128_t_to_si_string(le128_to_cpu(smart->data_units_read),
				       1000 * 512));
	printf("Data Units Written			: %s (%s)\n",
		uint128_t_to_l10n_string(le128_to_cpu(smart->data_units_written)),
		uint128_t_to_si_string(le128_to_cpu(smart->data_units_written),
				       1000 * 512));
	printf("host_read_commands			: %s\n",
		uint128_t_to_l10n_string(le128_to_cpu(smart->host_reads)));
	printf("host_write_commands			: %s\n",
		uint128_t_to_l10n_string(le128_to_cpu(smart->host_writes)));
	printf("controller_busy_time			: %s\n",
		uint128_t_to_l10n_string(le128_to_cpu(smart->ctrl_busy_time)));
	printf("power_cycles				: %s\n",
		uint128_t_to_l10n_string(le128_to_cpu(smart->power_cycles)));
	printf("power_on_hours				: %s\n",
		uint128_t_to_l10n_string(le128_to_cpu(smart->power_on_hours)));
	printf("unsafe_shutdowns			: %s\n",
		uint128_t_to_l10n_string(le128_to_cpu(smart->unsafe_shutdowns)));
	printf("media_errors				: %s\n",
		uint128_t_to_l10n_string(le128_to_cpu(smart->media_errors)));
	printf("num_err_log_entries			: %s\n",
		uint128_t_to_l10n_string(le128_to_cpu(smart->num_err_log_entries)));
	printf("Warning Temperature Time		: %u\n",
		le32_to_cpu(smart->warning_temp_time));
	printf("Critical Composite Temperature Time	: %u\n",
		le32_to_cpu(smart->critical_comp_time));
	for (i = 0; i < 8; i++) {
		__s32 temp = le16_to_cpu(smart->temp_sensor[i]);

		if (temp == 0)
			continue;
		printf("Temperature Sensor %d           : %ld Â°C (%u K)\n",
		       i + 1, kelvin_to_celsius(temp), temp);
	}
	printf("Thermal Management T1 Trans Count	: %u\n",
		le32_to_cpu(smart->thm_temp1_trans_count));
	printf("Thermal Management T2 Trans Count	: %u\n",
		le32_to_cpu(smart->thm_temp2_trans_count));
	printf("Thermal Management T1 Total Time	: %u\n",
		le32_to_cpu(smart->thm_temp1_total_time));
	printf("Thermal Management T2 Total Time	: %u\n",
		le32_to_cpu(smart->thm_temp2_total_time));
}

void nvme_show_ana_log(struct nvme_ana_log *ana_log, const char *devname,
			enum nvme_print_flags flags, size_t len)
{
	int offset = sizeof(struct nvme_ana_log);
	struct nvme_ana_log *hdr = ana_log;
	struct nvme_ana_group_desc *desc;
	size_t nsid_buf_size;
	void *base = ana_log;
	__u32 nr_nsids;
	int i, j;

	if (flags & BINARY)
		return d_raw((unsigned char *)ana_log, len);
	else if (flags & JSON)
		return json_ana_log(ana_log, devname);

	printf("Asymmetric Namespace Access Log for NVMe device: %s\n",
			devname);
	printf("ANA LOG HEADER :-\n");
	printf("chgcnt	:	%"PRIu64"\n",
			le64_to_cpu(hdr->chgcnt));
	printf("ngrps	:	%u\n", le16_to_cpu(hdr->ngrps));
	printf("ANA Log Desc :-\n");

	for (i = 0; i < le16_to_cpu(ana_log->ngrps); i++) {
		desc = base + offset;
		nr_nsids = le32_to_cpu(desc->nnsids);
		nsid_buf_size = nr_nsids * sizeof(__le32);

		offset += sizeof(*desc);
		printf("grpid	:	%u\n", le32_to_cpu(desc->grpid));
		printf("nnsids	:	%u\n", le32_to_cpu(desc->nnsids));
		printf("chgcnt	:	%"PRIu64"\n",
		       le64_to_cpu(desc->chgcnt));
		printf("state	:	%s\n",
				nvme_ana_state_to_string(desc->state));
		for (j = 0; j < le32_to_cpu(desc->nnsids); j++)
			printf("	nsid	:	%u\n",
					le32_to_cpu(desc->nsids[j]));
		printf("\n");
		offset += nsid_buf_size;
	}
}

static void nvme_show_self_test_result(struct nvme_st_result *res,
			     enum nvme_print_flags flags)
{
	static const char *const test_res[] = {
		"Operation completed without error",
		"Operation was aborted by a Device Self-test command",
		"Operation was aborted by a Controller Level Reset",
		"Operation was aborted due to a removal of a namespace from the namespace inventory",
		"Operation was aborted due to the processing of a Format NVM command",
		"A fatal error or unknown test error occurred while the controller was executing the"\
			" device self-test operation and the operation did not complete",
		"Operation completed with a segment that failed and the segment that failed is not known",
		"Operation completed with one or more failed segments and the first segment that failed "\
			"is indicated in the SegmentNumber field",
		"Operation was aborted for unknown reason",
		"Operation was aborted due to a sanitize operation",
		"Reserved",
		[NVME_ST_RESULT_NOT_USED] = "Entry not used (does not contain a result)",
	};
	__u8 op, code;

	op = res->dsts & NVME_ST_RESULT_MASK;
	printf("  Operation Result             : %#x", op);
	if (flags & VERBOSE)
		printf(" %s", (op < ARRAY_SIZE(test_res) && test_res[op]) ?
			test_res[op] : test_res[ARRAY_SIZE(test_res) - 1]);
	printf("\n");
	if (op == NVME_ST_RESULT_NOT_USED)
		return;

	code = res->dsts >> NVME_ST_CODE_SHIFT;
	printf("  Self Test Code               : %x", code);

	if (flags & VERBOSE) {
		switch (code) {
		case NVME_ST_CODE_SHORT:
			printf(" Short device self-test operation");
			break;
		case NVME_ST_CODE_EXTENDED:
			printf(" Extended device self-test operation");
			break;
		case NVME_ST_CODE_VS:
			printf(" Vendor specific");
			break;
		default:
			printf(" Reserved");
			break;
		}
	}
	printf("\n");

	if (op == NVME_ST_RESULT_KNOWN_SEG_FAIL)
		printf("  Segment Number               : %#x\n", res->seg);

	printf("  Valid Diagnostic Information : %#x\n", res->vdi);
	printf("  Power on hours (POH)         : %#"PRIx64"\n",
		(uint64_t)le64_to_cpu(res->poh));

	if (res->vdi & NVME_ST_VALID_DIAG_INFO_NSID)
		printf("  Namespace Identifier         : %#x\n",
			le32_to_cpu(res->nsid));
	if (res->vdi & NVME_ST_VALID_DIAG_INFO_FLBA)
		printf("  Failing LBA                  : %#"PRIx64"\n",
			(uint64_t)le64_to_cpu(res->flba));
	if (res->vdi & NVME_ST_VALID_DIAG_INFO_SCT)
		printf("  Status Code Type             : %#x\n", res->sct);
	if (res->vdi & NVME_ST_VALID_DIAG_INFO_SC) {
		printf("  Status Code                  : %#x", res->sc);
		if (flags & VERBOSE)
			printf(" %s", nvme_status_to_string(
				(res->sct & 7) << 8 | res->sc, false));
		printf("\n");
	}
	printf("  Vendor Specific              : %#x %#x\n",
		res->vs[0], res->vs[1]);
}

void nvme_show_self_test_log(struct nvme_self_test_log *self_test, __u8 dst_entries,
				__u32 size, const char *devname, enum nvme_print_flags flags)
{
	int i;
	__u8 num_entries;

	if (flags & BINARY)
		return d_raw((unsigned char *)self_test, size);
	if (flags & JSON)
		return json_self_test_log(self_test, dst_entries);

	printf("Device Self Test Log for NVME device:%s\n", devname);
	printf("Current operation  : %#x\n", self_test->current_operation);
	printf("Current Completion : %u%%\n", self_test->completion);
	num_entries = min(dst_entries, NVME_LOG_ST_MAX_RESULTS);
	for (i = 0; i < num_entries; i++) {
		printf("Self Test Result[%d]:\n", i);
		nvme_show_self_test_result(&self_test->result[i], flags);
	}
}

static void nvme_show_sanitize_log_sprog(__u32 sprog)
{
	double percent;

	percent = (((double)sprog * 100) / 0x10000);
	printf("\t(%f%%)\n", percent);
}

static void nvme_show_sanitize_log_sstat(__u16 status)
{
	const char *str = get_sanitize_log_sstat_status_str(status);

	printf("\t[2:0]\t%s\n", str);
	str = "Number of completed passes if most recent operation was overwrite";
	printf("\t[7:3]\t%s:\t%u\n", str,
		(status >> NVME_SANITIZE_SSTAT_COMPLETED_PASSES_SHIFT) &
			NVME_SANITIZE_SSTAT_COMPLETED_PASSES_MASK);

	printf("\t  [8]\t");
	if (status & NVME_SANITIZE_SSTAT_GLOBAL_DATA_ERASED)
		str = "Global Data Erased set: no NS LB in the NVM subsystem "\
			"has been written to and no PMR in the NVM subsystem "\
			"has been enabled";
	else
		str = "Global Data Erased cleared: a NS LB in the NVM "\
			"subsystem has been written to or a PMR in the NVM "\
			"subsystem has been enabled";
	printf("%s\n", str);
}

static void nvme_show_estimate_sanitize_time(const char *text, uint32_t value)
{
	printf("%s:  %u%s\n", text, value,
		value == 0xffffffff ? " (No time period reported)" : "");
}

void nvme_show_sanitize_log(struct nvme_sanitize_log_page *sanitize,
			    const char *devname, enum nvme_print_flags flags)
{
	int human = flags & VERBOSE;
	__u16 status = le16_to_cpu(sanitize->sstat) & NVME_SANITIZE_SSTAT_STATUS_MASK;

	if (flags & BINARY)
		d_raw((unsigned char *)sanitize, sizeof(*sanitize));
	else if (flags & JSON) {
		json_sanitize_log(sanitize, devname);
		return;
	}

	printf("Sanitize Progress                      (SPROG) :  %u",
	       le16_to_cpu(sanitize->sprog));

	if (human && status == NVME_SANITIZE_SSTAT_STATUS_IN_PROGESS)
		nvme_show_sanitize_log_sprog(le16_to_cpu(sanitize->sprog));
	else
		printf("\n");

	printf("Sanitize Status                        (SSTAT) :  %#x\n",
		le16_to_cpu(sanitize->sstat) & NVME_SANITIZE_SSTAT_STATUS_MASK);
	if (human)
		nvme_show_sanitize_log_sstat(le16_to_cpu(sanitize->sstat));

	printf("Sanitize Command Dword 10 Information (SCDW10) :  %#x\n",
		le32_to_cpu(sanitize->scdw10));
	nvme_show_estimate_sanitize_time("Estimated Time For Overwrite                   ",
		le32_to_cpu(sanitize->eto));
	nvme_show_estimate_sanitize_time("Estimated Time For Block Erase                 ",
		le32_to_cpu(sanitize->etbe));
	nvme_show_estimate_sanitize_time("Estimated Time For Crypto Erase                ",
		le32_to_cpu(sanitize->etce));
	nvme_show_estimate_sanitize_time("Estimated Time For Overwrite (No-Deallocate)   ",
		le32_to_cpu(sanitize->etond));
	nvme_show_estimate_sanitize_time("Estimated Time For Block Erase (No-Deallocate) ",
		le32_to_cpu(sanitize->etbend));
	nvme_show_estimate_sanitize_time("Estimated Time For Crypto Erase (No-Deallocate)",
		le32_to_cpu(sanitize->etcend));
}

const char *nvme_feature_to_string(enum nvme_features_id feature)
{
	switch (feature) {
	case NVME_FEAT_FID_ARBITRATION:	return "Arbitration";
	case NVME_FEAT_FID_POWER_MGMT:	return "Power Management";
	case NVME_FEAT_FID_LBA_RANGE:	return "LBA Range Type";
	case NVME_FEAT_FID_TEMP_THRESH:	return "Temperature Threshold";
	case NVME_FEAT_FID_ERR_RECOVERY:return "Error Recovery";
	case NVME_FEAT_FID_VOLATILE_WC:	return "Volatile Write Cache";
	case NVME_FEAT_FID_NUM_QUEUES:	return "Number of Queues";
	case NVME_FEAT_FID_IRQ_COALESCE:return "Interrupt Coalescing";
	case NVME_FEAT_FID_IRQ_CONFIG:	return "Interrupt Vector Configuration";
	case NVME_FEAT_FID_WRITE_ATOMIC:return "Write Atomicity Normal";
	case NVME_FEAT_FID_ASYNC_EVENT:	return "Async Event Configuration";
	case NVME_FEAT_FID_AUTO_PST:	return "Autonomous Power State Transition";
	case NVME_FEAT_FID_HOST_MEM_BUF:return "Host Memory Buffer";
	case NVME_FEAT_FID_TIMESTAMP:	return "Timestamp";
	case NVME_FEAT_FID_KATO:	return "Keep Alive Timer";
	case NVME_FEAT_FID_HCTM:	return "Host Controlled Thermal Management";
	case NVME_FEAT_FID_NOPSC:	return "Non-Operational Power State Config";
	case NVME_FEAT_FID_RRL:		return "Read Recovery Level";
	case NVME_FEAT_FID_PLM_CONFIG:	return "Predictable Latency Mode Config";
	case NVME_FEAT_FID_PLM_WINDOW:	return "Predictable Latency Mode Window";
	case NVME_FEAT_FID_LBA_STS_INTERVAL:	return "LBA Status Interval";
	case NVME_FEAT_FID_HOST_BEHAVIOR:	return "Host Behavior";
	case NVME_FEAT_FID_SANITIZE:	return "Sanitize";
	case NVME_FEAT_FID_ENDURANCE_EVT_CFG:	return "Endurance Event Group Configuration";
	case NVME_FEAT_FID_IOCS_PROFILE:	return "I/O Command Set Profile";
	case NVME_FEAT_FID_SPINUP_CONTROL:	return "Spinup Control";
	case NVME_FEAT_FID_ENH_CTRL_METADATA:	return "Enhanced Controller Metadata";
	case NVME_FEAT_FID_CTRL_METADATA:	return "Controller Metadata";
	case NVME_FEAT_FID_NS_METADATA: return "Namespace Metadata";
	case NVME_FEAT_FID_SW_PROGRESS:	return "Software Progress";
	case NVME_FEAT_FID_HOST_ID:	return "Host Identifier";
	case NVME_FEAT_FID_RESV_MASK:	return "Reservation Notification Mask";
	case NVME_FEAT_FID_RESV_PERSIST:return "Reservation Persistence";
	case NVME_FEAT_FID_WRITE_PROTECT:	return "Namespace Write Protect";
	case NVME_FEAT_FID_FDP:		return "Flexible Direct Placement";
	case NVME_FEAT_FID_FDP_EVENTS:	return "Flexible Direct Placement Events";
	}
	/*
	 * We don't use the "default:" statement to let the compiler warning if
	 * some values of the enum nvme_features_id are missing in the switch().
	 * The following return is acting as the default: statement.
	 */
	return "Unknown";
}

const char *nvme_register_to_string(int reg)
{
	switch (reg) {
	case NVME_REG_CAP:	return "Controller Capabilities";
	case NVME_REG_VS:	return "Version";
	case NVME_REG_INTMS:	return "Interrupt Vector Mask Set";
	case NVME_REG_INTMC:	return "Interrupt Vector Mask Clear";
	case NVME_REG_CC:	return "Controller Configuration";
	case NVME_REG_CSTS:	return "Controller Status";
	case NVME_REG_NSSR:	return "NVM Subsystem Reset";
	case NVME_REG_AQA:	return "Admin Queue Attributes";
	case NVME_REG_ASQ:	return "Admin Submission Queue Base Address";
	case NVME_REG_ACQ:	return "Admin Completion Queue Base Address";
	case NVME_REG_CMBLOC:	return "Controller Memory Buffer Location";
	case NVME_REG_CMBSZ:	return "Controller Memory Buffer Size";
	default:		return "Unknown";
	}
}

const char *nvme_select_to_string(int sel)
{
	switch (sel) {
	case 0:  return "Current";
	case 1:  return "Default";
	case 2:  return "Saved";
	case 3:  return "Supported capabilities";
	case 8:  return "Changed";
	default: return "Reserved";
	}
}

void nvme_show_select_result(__u32 result)
{
	if (result & 0x1)
		printf("  Feature is saveable\n");
	if (result & 0x2)
		printf("  Feature is per-namespace\n");
	if (result & 0x4)
		printf("  Feature is changeable\n");
}

static const char *nvme_feature_lba_type_to_string(__u8 type)
{
	switch (type) {
	case 0:	return "Reserved";
	case 1:	return "Filesystem";
	case 2:	return "RAID";
	case 3:	return "Cache";
	case 4:	return "Page / Swap file";
	default:
		if (type >= 0x05 && type <= 0x7f)
			return "Reserved";
		else
			return "Vendor Specific";
	}
}

void nvme_show_lba_range(struct nvme_lba_range_type *lbrt, int nr_ranges)
{
	int i, j;

	for (i = 0; i <= nr_ranges; i++) {
		printf("\ttype       : %#x - %s\n", lbrt->entry[i].type,
			nvme_feature_lba_type_to_string(lbrt->entry[i].type));
		printf("\tattributes : %#x - %s, %s\n", lbrt->entry[i].attributes,
			(lbrt->entry[i].attributes & 0x0001) ?
				"LBA range may be overwritten" :
				"LBA range should not be overwritten",
			((lbrt->entry[i].attributes & 0x0002) >> 1) ?
				"LBA range should be hidden from the OS/EFI/BIOS" :
				"LBA range should be visible from the OS/EFI/BIOS");
		printf("\tslba       : %#"PRIx64"\n", le64_to_cpu(lbrt->entry[i].slba));
		printf("\tnlb        : %#"PRIx64"\n", le64_to_cpu(lbrt->entry[i].nlb));
		printf("\tguid       : ");
		for (j = 0; j < 16; j++)
			printf("%02x", lbrt->entry[i].guid[j]);
		printf("\n");
	}
}


static const char *nvme_feature_wl_hints_to_string(__u8 wh)
{
	switch (wh) {
	case 0:	return "No Workload";
	case 1:	return "Extended Idle Period with a Burst of Random Writes";
	case 2:	return "Heavy Sequential Writes";
	default:return "Reserved";
	}
}

static const char *nvme_feature_temp_type_to_string(__u8 type)
{
	switch (type) {
	case 0:	return "Over Temperature Threshold";
	case 1:	return "Under Temperature Threshold";
	default:return "Reserved";
	}
}

static const char *nvme_feature_temp_sel_to_string(__u8 sel)
{
	switch (sel) {
	case 0:	return "Composite Temperature";
	case 1:	return "Temperature Sensor 1";
	case 2:	return "Temperature Sensor 2";
	case 3:	return "Temperature Sensor 3";
	case 4:	return "Temperature Sensor 4";
	case 5:	return "Temperature Sensor 5";
	case 6:	return "Temperature Sensor 6";
	case 7:	return "Temperature Sensor 7";
	case 8:	return "Temperature Sensor 8";
	default:return "Reserved";
	}
}

static void nvme_show_auto_pst(struct nvme_feat_auto_pst *apst)
{
	int i;
	__u64 value;

	printf( "\tAuto PST Entries");
	printf("\t.................\n");
	for (i = 0; i < 32; i++) {
		value = le64_to_cpu(apst->apst_entry[i]);

		printf("\tEntry[%2d]   \n", i);
		printf("\t.................\n");
		printf("\tIdle Time Prior to Transition (ITPT): %u ms\n",
			(__u32)(value >> NVME_APST_ENTRY_ITPT_SHIFT) & NVME_APST_ENTRY_ITPT_MASK);
		printf("\tIdle Transition Power State   (ITPS): %u\n",
			(__u32)(value >> NVME_APST_ENTRY_ITPS_SHIFT ) & NVME_APST_ENTRY_ITPS_MASK);
		printf("\t.................\n");
	}
}

static void nvme_show_timestamp(struct nvme_timestamp *ts)
{
	struct tm *tm;
	char buffer[320];
	time_t timestamp = int48_to_long(ts->timestamp) / 1000;

	tm = localtime(&timestamp);

	printf("\tThe timestamp is : %'"PRIu64" (%s)\n",
		int48_to_long(ts->timestamp),
		strftime(buffer, sizeof(buffer), "%c %Z", tm) ? buffer : "-");
	printf("\t%s\n", (ts->attr & 2) ?
		"The Timestamp field was initialized with a "\
			"Timestamp value using a Set Features command." :
		"The Timestamp field was initialized "\
			"to â€˜0â€™ by a Controller Level Reset.");
	printf("\t%s\n", (ts->attr & 1) ?
		"The controller may have stopped counting during vendor specific "\
			"intervals after the Timestamp value was initialized" :
		"The controller counted time in milliseconds "\
			"continuously since the Timestamp value was initialized.");
}

static void nvme_show_host_mem_buffer(struct nvme_host_mem_buf_attrs *hmb)
{
	printf("\tHost Memory Descriptor List Entry Count (HMDLEC): %u\n",
		le32_to_cpu(hmb->hmdlec));
	printf("\tHost Memory Descriptor List Address     (HMDLAU): 0x%x\n",
		le32_to_cpu(hmb->hmdlau));
	printf("\tHost Memory Descriptor List Address     (HMDLAL): 0x%x\n",
		le32_to_cpu(hmb->hmdlal));
	printf("\tHost Memory Buffer Size                  (HSIZE): %u\n",
		le32_to_cpu(hmb->hsize));
}

static const char *nvme_show_ns_wp_cfg(enum nvme_ns_write_protect_cfg state)
{
	switch (state) {
	case NVME_NS_WP_CFG_NONE:
		return "No Write Protect";
	case NVME_NS_WP_CFG_PROTECT:
		return "Write Protect";
	case NVME_NS_WP_CFG_PROTECT_POWER_CYCLE:
		return "Write Protect Until Power Cycle";
	case NVME_NS_WP_CFG_PROTECT_PERMANENT:
		return "Permanent Write Protect";
	default:
		return "Reserved";
	}
}

static void nvme_directive_show_fields(__u8 dtype, __u8 doper,
				       unsigned int result, unsigned char *buf)
{
	__u8 *field = buf;
	int count, i;

	switch (dtype) {
	case NVME_DIRECTIVE_DTYPE_IDENTIFY:
		switch (doper) {
		case NVME_DIRECTIVE_RECEIVE_IDENTIFY_DOPER_PARAM:
			printf("\tDirective support \n");
			printf("\t\tIdentify Directive  : %s\n",
				(*field & 0x1) ? "supported":"not supported");
			printf("\t\tStream Directive    : %s\n",
				(*field & 0x2) ? "supported":"not supported");
			printf("\tDirective status \n");
			printf("\t\tIdentify Directive  : %s\n",
				(*(field + 32) & 0x1) ? "enabled" : "disabled");
			printf("\t\tStream Directive    : %s\n",
				(*(field + 32) & 0x2) ? "enabled" : "disabled");
			break;
		default:
			fprintf(stderr,
				"invalid directive operations for Identify Directives\n");
		}
		break;
	case NVME_DIRECTIVE_DTYPE_STREAMS:
		switch (doper) {
		case NVME_DIRECTIVE_RECEIVE_STREAMS_DOPER_PARAM:
			printf("\tMax Streams Limit                          (MSL): %u\n",
				*(__u16 *) field);
			printf("\tNVM Subsystem Streams Available           (NSSA): %u\n",
				*(__u16 *) (field + 2));
			printf("\tNVM Subsystem Streams Open                (NSSO): %u\n",
				*(__u16 *) (field + 4));
			printf("\tNVM Subsystem Stream Capability           (NSSC): %u\n",
				*(__u16 *) (field + 6));
			printf("\tStream Write Size (in unit of LB size)     (SWS): %u\n",
				*(__u32 *) (field + 16));
			printf("\tStream Granularity Size (in unit of SWS)   (SGS): %u\n",
				*(__u16 *) (field + 20));
			printf("\tNamespace Streams Allocated                (NSA): %u\n",
				*(__u16 *) (field + 22));
			printf("\tNamespace Streams Open                     (NSO): %u\n",
				*(__u16 *) (field + 24));
			break;
		case NVME_DIRECTIVE_RECEIVE_STREAMS_DOPER_STATUS:
			count = *(__u16 *) field;
			printf("\tOpen Stream Count  : %u\n", *(__u16 *) field);
			for ( i = 0; i < count; i++ ) {
				printf("\tStream Identifier %.6u : %u\n", i + 1,
					*(__u16 *) (field + ((i + 1) * 2)));
			}
			break;
		case NVME_DIRECTIVE_RECEIVE_STREAMS_DOPER_RESOURCE:
			printf("\tNamespace Streams Allocated (NSA): %u\n",
				result & 0xffff);
			break;
		default:
			fprintf(stderr,
				"invalid directive operations for Streams Directives\n");
		}
		break;
	default:
		fprintf(stderr, "invalid directive type\n");
		break;
	}
	return;
}

void nvme_directive_show(__u8 type, __u8 oper, __u16 spec, __u32 nsid, __u32 result,
	void *buf, __u32 len, enum nvme_print_flags flags)
{
	if (flags & BINARY) {
		if (buf)
			return d_raw(buf, len);
		return;
	}

	printf("dir-receive: type:%#x operation:%#x spec:%#x nsid:%#x result:%#x\n",
		type, oper, spec, nsid, result);
	if (flags & VERBOSE)
		nvme_directive_show_fields(type, oper, result, buf);
	else if (buf)
		d(buf, len, 16, 1);
}

static const char *nvme_plm_window(__u32 plm)
{
	switch (plm & 0x7) {
	case 1:
		return "Deterministic Window (DTWIN)";
	case 2:
		return "Non-deterministic Window (NDWIN)";
	default:
		return "Reserved";
	}
}

void nvme_show_lba_status_info(__u32 result)
{
	printf("\tLBA Status Information Poll Interval (LSIPI)  : %u\n", (result >> 16) & 0xffff);
	printf("\tLBA Status Information Report Interval (LSIRI): %u\n", result & 0xffff);
}

static void nvme_show_plm_config(struct nvme_plm_config *plmcfg)
{
	printf("\tEnable Event          :%04x\n", le16_to_cpu(plmcfg->ee));
	printf("\tDTWIN Reads Threshold :%"PRIu64"\n", le64_to_cpu(plmcfg->dtwinrt));
	printf("\tDTWIN Writes Threshold:%"PRIu64"\n", le64_to_cpu(plmcfg->dtwinwt));
	printf("\tDTWIN Time Threshold  :%"PRIu64"\n", le64_to_cpu(plmcfg->dtwintt));
}

static char *nvme_show_host_metadata_type_to_string(enum nvme_features_id fid,
						    __u8 type)
{
       switch (fid) {
       case NVME_FEAT_FID_ENH_CTRL_METADATA:
       case NVME_FEAT_FID_CTRL_METADATA:
	       switch (type) {
	       case NVME_CTRL_METADATA_OS_CTRL_NAME:
		       return "Operating System Controller Name";
	       case NVME_CTRL_METADATA_OS_DRIVER_NAME:
		       return "Operating System Driver Name";
	       case NVME_CTRL_METADATA_OS_DRIVER_VER:
		       return "Operating System Driver Version";
	       case NVME_CTRL_METADATA_PRE_BOOT_CTRL_NAME:
		       return "Pre-boot Controller Name";
	       case NVME_CTRL_METADATA_PRE_BOOT_DRIVER_NAME:
		       return "Pre-boot Driver Name";
	       case NVME_CTRL_METADATA_PRE_BOOT_DRIVER_VER:
		       return "Pre-boot Driver Version";
	       case NVME_CTRL_METADATA_SYS_PROC_MODEL:
		       return "System Processor Model";
	       case NVME_CTRL_METADATA_CHIPSET_DRV_NAME:
		       return "Chipset Driver Name";
	       case NVME_CTRL_METADATA_CHIPSET_DRV_VERSION:
		       return "Chipset Driver Version";
	       case NVME_CTRL_METADATA_OS_NAME_AND_BUILD:
		       return "Operating System Name and Build";
	       case NVME_CTRL_METADATA_SYS_PROD_NAME:
		       return "System Product Name";
	       case NVME_CTRL_METADATA_FIRMWARE_VERSION:
		       return "Firmware Version";
	       case NVME_CTRL_METADATA_OS_DRIVER_FILENAME:
		       return "Operating System Driver Filename";
	       case NVME_CTRL_METADATA_DISPLAY_DRV_NAME:
		       return "Display Driver Name";
	       case NVME_CTRL_METADATA_DISPLAY_DRV_VERSION:
		       return "Display Driver Version";
	       case NVME_CTRL_METADATA_HOST_DET_FAIL_REC:
		       return "Host-Determined Failure Record";
	       default:
		       return "Unknown Controller Type";
	       }
       case NVME_FEAT_FID_NS_METADATA:
	       switch (type) {
	       case NVME_NS_METADATA_OS_NS_NAME:
		       return "Operating System Namespace Name";
	       case NVME_NS_METADATA_PRE_BOOT_NS_NAME:
		       return "Pre-boot Namespace Name";
	       case NVME_NS_METADATA_OS_NS_QUAL_1:
		       return "Operating System Namespace Name Qualifier 1";
	       case NVME_NS_METADATA_OS_NS_QUAL_2:
		       return "Operating System Namespace Name Qualifier 2";
	       default:
		       return "Unknown Namespace Type";
	       }
       default:
	       return "Unknown Feature";
       }
}

static void nvme_show_host_metadata(enum nvme_features_id fid,
				    struct nvme_host_metadata *data)
{
       struct nvme_metadata_element_desc *desc = &data->descs[0];
       int i;
       char val[4096];
       __u16 len;

       printf("\tNum Metadata Element Descriptors: %d\n", data->ndesc);
       for (i = 0; i < data->ndesc; i++) {
	       len = le16_to_cpu(desc->len);
	       strncpy(val, (char *)desc->val, min(sizeof(val) - 1, len));

	       printf("\tElement[%-3d]:\n", i);
	       printf("\t\tType	    : 0x%02x (%s)\n", desc->type,
		       nvme_show_host_metadata_type_to_string(fid, desc->type));
	       printf("\t\tRevision : %d\n", desc->rev);
	       printf("\t\tLength   : %d\n", len);
	       printf("\t\tValue    : %s\n", val);

	       desc = (struct nvme_metadata_element_desc *)
		       &desc->val[desc->len];
       }
}

void nvme_feature_show_fields(enum nvme_features_id fid, unsigned int result, unsigned char *buf)
{
	__u8 field;
	uint64_t ull;

	switch (fid) {
	case NVME_FEAT_FID_ARBITRATION:
		printf("\tHigh Priority Weight   (HPW): %u\n", ((result & 0xff000000) >> 24) + 1);
		printf("\tMedium Priority Weight (MPW): %u\n", ((result & 0x00ff0000) >> 16) + 1);
		printf("\tLow Priority Weight    (LPW): %u\n", ((result & 0x0000ff00) >> 8) + 1);
		printf("\tArbitration Burst       (AB): ");
		if ((result & 0x00000007) == 7)
			printf("No limit\n");
		else
			printf("%u\n",  1 << (result & 0x00000007));
		break;
	case NVME_FEAT_FID_POWER_MGMT:
		field = (result & 0x000000E0) >> 5;
		printf("\tWorkload Hint (WH): %u - %s\n",  field, nvme_feature_wl_hints_to_string(field));
		printf("\tPower State   (PS): %u\n",  result & 0x0000001f);
		break;
	case NVME_FEAT_FID_LBA_RANGE:
		field = result & 0x0000003f;
		printf("\tNumber of LBA Ranges (NUM): %u\n", field + 1);
		if (buf)
			nvme_show_lba_range((struct nvme_lba_range_type *)buf, field);
		break;
	case NVME_FEAT_FID_TEMP_THRESH:
		field = (result & 0x00300000) >> 20;
		printf("\tThreshold Type Select         (THSEL): %u - %s\n", field,
			nvme_feature_temp_type_to_string(field));
		field = (result & 0x000f0000) >> 16;
		printf("\tThreshold Temperature Select (TMPSEL): %u - %s\n",
		       field, nvme_feature_temp_sel_to_string(field));
		printf("\tTemperature Threshold         (TMPTH): %ld Â°C (%u K)\n",
		       kelvin_to_celsius(result & 0x0000ffff), result & 0x0000ffff);
		break;
	case NVME_FEAT_FID_ERR_RECOVERY:
		printf("\tDeallocated or Unwritten Logical Block Error Enable (DULBE): %s\n",
			((result & 0x00010000) >> 16) ? "Enabled":"Disabled");
		printf("\tTime Limited Error Recovery                          (TLER): %u ms\n",
			(result & 0x0000ffff) * 100);
		break;
	case NVME_FEAT_FID_VOLATILE_WC:
		printf("\tVolatile Write Cache Enable (WCE): %s\n", (result & 0x00000001) ? "Enabled":"Disabled");
		break;
	case NVME_FEAT_FID_NUM_QUEUES:
		printf("\tNumber of IO Completion Queues Allocated (NCQA): %u\n", ((result & 0xffff0000) >> 16) + 1);
		printf("\tNumber of IO Submission Queues Allocated (NSQA): %u\n",  (result & 0x0000ffff) + 1);
		break;
	case NVME_FEAT_FID_IRQ_COALESCE:
		printf("\tAggregation Time     (TIME): %u usec\n", ((result & 0x0000ff00) >> 8) * 100);
		printf("\tAggregation Threshold (THR): %u\n",  (result & 0x000000ff) + 1);
		break;
	case NVME_FEAT_FID_IRQ_CONFIG:
		printf("\tCoalescing Disable (CD): %s\n", ((result & 0x00010000) >> 16) ? "True":"False");
		printf("\tInterrupt Vector   (IV): %u\n",  result & 0x0000ffff);
		break;
	case NVME_FEAT_FID_WRITE_ATOMIC:
		printf("\tDisable Normal (DN): %s\n", (result & 0x00000001) ? "True":"False");
		break;
	case NVME_FEAT_FID_ASYNC_EVENT:
		printf("\tDiscovery Log Page Change Notices                         : %s\n",
			((result & 0x80000000) >> 31) ? "Send async event":"Do not send async event");
		printf("\tEndurance Group Event Aggregate Log Change Notices        : %s\n",
			((result & 0x00004000) >> 14) ? "Send async event":"Do not send async event");
		printf("\tLBA Status Information Notices                            : %s\n",
			((result & 0x00002000) >> 13) ? "Send async event":"Do not send async event");
		printf("\tPredictable Latency Event Aggregate Log Change Notices    : %s\n",
			((result & 0x00001000) >> 12) ? "Send async event":"Do not send async event");
		printf("\tAsymmetric Namespace Access Change Notices                : %s\n",
			((result & 0x00000800) >> 11) ? "Send async event":"Do not send async event");
		printf("\tTelemetry Log Notices                                     : %s\n",
			((result & 0x00000400) >> 10) ? "Send async event":"Do not send async event");
		printf("\tFirmware Activation Notices                               : %s\n",
			((result & 0x00000200) >> 9) ? "Send async event":"Do not send async event");
		printf("\tNamespace Attribute Notices                               : %s\n",
			((result & 0x00000100) >> 8) ? "Send async event":"Do not send async event");
		printf("\tSMART / Health Critical Warnings                          : %s\n",
			(result & 0x000000ff) ? "Send async event":"Do not send async event");
		break;
	case NVME_FEAT_FID_AUTO_PST:
		printf("\tAutonomous Power State Transition Enable (APSTE): %s\n",
			(result & 0x00000001) ? "Enabled":"Disabled");
		if (buf)
			nvme_show_auto_pst((struct nvme_feat_auto_pst *)buf);
		break;
	case NVME_FEAT_FID_HOST_MEM_BUF:
		printf("\tEnable Host Memory (EHM): %s\n", (result & 0x00000001) ? "Enabled":"Disabled");
		if (buf)
			nvme_show_host_mem_buffer((struct nvme_host_mem_buf_attrs *)buf);
		break;
	case NVME_FEAT_FID_TIMESTAMP:
		if (buf)
			nvme_show_timestamp((struct nvme_timestamp *)buf);
		break;
	case NVME_FEAT_FID_KATO:
		printf("\tKeep Alive Timeout (KATO) in milliseconds: %u\n", result);
		break;
	case NVME_FEAT_FID_HCTM:
		printf("\tThermal Management Temperature 1 (TMT1) : %u K (%ld Â°C)\n",
		       result >> 16, kelvin_to_celsius(result >> 16));
		printf("\tThermal Management Temperature 2 (TMT2) : %u K (%ld Â°C)\n",
		       result & 0x0000ffff, kelvin_to_celsius(result & 0x0000ffff));
		break;
	case NVME_FEAT_FID_NOPSC:
		printf("\tNon-Operational Power State Permissive Mode Enable (NOPPME): %s\n",
			(result & 1) ? "True" : "False");
		break;
	case NVME_FEAT_FID_RRL:
		printf("\tRead Recovery Level (RRL): %u\n", result & 0xf);
		break;
	case NVME_FEAT_FID_PLM_CONFIG:
		printf("\tPredictable Latency Window Enabled: %s\n", result & 0x1 ? "True":"False");
		if (buf)
			nvme_show_plm_config((struct nvme_plm_config *)buf);
		break;
	case NVME_FEAT_FID_PLM_WINDOW:
		printf("\tWindow Select: %s", nvme_plm_window(result));
		break;
	case NVME_FEAT_FID_LBA_STS_INTERVAL:
		nvme_show_lba_status_info(result);
		break;
	case NVME_FEAT_FID_HOST_BEHAVIOR:
		if (buf)
			printf("\tHost Behavior Support: %s\n", (buf[0] & 0x1) ? "True" : "False");
		break;
	case NVME_FEAT_FID_SANITIZE:
		printf("\tNo-Deallocate Response Mode (NODRM) : %u\n", result & 0x1);
		break;
	case NVME_FEAT_FID_ENDURANCE_EVT_CFG:
		printf("\tEndurance Group Identifier (ENDGID): %u\n", result & 0xffff);
		printf("\tEndurance Group Critical Warnings  : %u\n", (result >> 16) & 0xff);
		break;
	case NVME_FEAT_FID_IOCS_PROFILE:
		printf("\tI/O Command Set Profile: %s\n", result & 0x1 ? "True":"False");
		break;
	case NVME_FEAT_FID_SPINUP_CONTROL:
		printf("\tSpinup control feature Enabled: %s\n", (result & 1) ? "True" : "False");
		break;
	case NVME_FEAT_FID_ENH_CTRL_METADATA:
	case NVME_FEAT_FID_CTRL_METADATA:
	case NVME_FEAT_FID_NS_METADATA:
		if (buf)
			nvme_show_host_metadata(fid, (struct nvme_host_metadata *)buf);
		break;
	case NVME_FEAT_FID_SW_PROGRESS:
		printf("\tPre-boot Software Load Count (PBSLC): %u\n", result & 0x000000ff);
		break;
	case NVME_FEAT_FID_HOST_ID:
		if (buf) {
			ull =  buf[7]; ull <<= 8; ull |= buf[6]; ull <<= 8; ull |= buf[5]; ull <<= 8;
			ull |= buf[4]; ull <<= 8; ull |= buf[3]; ull <<= 8; ull |= buf[2]; ull <<= 8;
			ull |= buf[1]; ull <<= 8; ull |= buf[0];
			printf("\tHost Identifier (HOSTID):  %" PRIu64 "\n", ull);
		}
		break;
	case NVME_FEAT_FID_RESV_MASK:
		printf("\tMask Reservation Preempted Notification  (RESPRE): %s\n",
			((result & 0x00000008) >> 3) ? "True":"False");
		printf("\tMask Reservation Released Notification   (RESREL): %s\n",
			((result & 0x00000004) >> 2) ? "True":"False");
		printf("\tMask Registration Preempted Notification (REGPRE): %s\n",
			((result & 0x00000002) >> 1) ? "True":"False");
		break;
	case NVME_FEAT_FID_RESV_PERSIST:
		printf("\tPersist Through Power Loss (PTPL): %s\n", (result & 0x00000001) ? "True":"False");
		break;
	case NVME_FEAT_FID_WRITE_PROTECT:
		printf("\tNamespace Write Protect: %s\n", nvme_show_ns_wp_cfg(result));
		break;
	case NVME_FEAT_FID_FDP:
		printf("\tFlexible Direct Placement Enable (FDPE)       : %s\n",
				(result & 0x1) ? "Yes" : "No");
		printf("\tFlexible Direct Placement Configuration Index : %u\n",
				(result >> 8) & 0xf);
		break;
	case NVME_FEAT_FID_FDP_EVENTS:
		for (unsigned int i = 0; i < result; i++) {
			struct nvme_fdp_supported_event_desc *d;

			d = &((struct nvme_fdp_supported_event_desc *)buf)[i];

			printf("\t%-53s: %sEnabled\n", nvme_fdp_event_to_string(d->evt),
					d->evta & 0x1 ? "" : "Not ");
		}
	default:
		break;
	}
}

void nvme_show_lba_status(struct nvme_lba_status *list, unsigned long len,
			enum nvme_print_flags flags)
{
	int idx;

	if (flags & BINARY)
		return  d_raw((unsigned char *)list, len);

	printf("Number of LBA Status Descriptors(NLSD): %" PRIu32 "\n",
		le32_to_cpu(list->nlsd));
	printf("Completion Condition(CMPC): %u\n", list->cmpc);

	switch (list->cmpc) {
	case 1:
		printf("\tCompleted due to transferring the amount of data"\
			" specified in the MNDW field\n");
		break;
	case 2:
		printf("\tCompleted due to having performed the action\n"\
			"\tspecified in the Action Type field over the\n"\
			"\tnumber of logical blocks specified in the\n"\
			"\tRange Length field\n");
		break;
	}

	for (idx = 0; idx < list->nlsd; idx++) {
		struct nvme_lba_status_desc *e = &list->descs[idx];
		printf("{ DSLBA: 0x%016"PRIu64", NLB: 0x%08x, Status: 0x%02x }\n",
				le64_to_cpu(e->dslba), le32_to_cpu(e->nlb),
				e->status);
	}
}

void nvme_dev_full_path(nvme_ns_t n, char *path, size_t len)
{
	struct stat st;

	snprintf(path, len, "/dev/%s", nvme_ns_get_name(n));
	if (stat(path, &st) == 0)
		return;

	snprintf(path, len, "/dev/spdk/%s", nvme_ns_get_name(n));
	if (stat(path, &st) == 0)
		return;

	/*
	 * We could start trying to search for it but let's make
	 * it simple and just don't show the path at all.
	 */
	snprintf(path, len, "%s", nvme_ns_get_name(n));
}

void nvme_generic_full_path(nvme_ns_t n, char *path, size_t len)
{
	int head_instance;
	int instance;
	struct stat st;

	sscanf(nvme_ns_get_name(n), "nvme%dn%d", &instance, &head_instance);
	snprintf(path, len, "/dev/ng%dn%d", instance, head_instance);

	if (stat(path, &st) == 0)
		return;

	snprintf(path, len, "/dev/spdk/ng%dn%d", instance, head_instance);
	if (stat(path, &st) == 0)
		return;
	/*
	 * We could start trying to search for it but let's make
	 * it simple and just don't show the path at all.
	 */
	snprintf(path, len, "ng%dn%d", instance, head_instance);
}

void nvme_show_list_item(nvme_ns_t n)
{
	char usage[128] = { 0 }, format[128] = { 0 };
	char devname[128] = { 0 }; char genname[128] = { 0 };

	long long lba = nvme_ns_get_lba_size(n);
	double nsze = nvme_ns_get_lba_count(n) * lba;
	double nuse = nvme_ns_get_lba_util(n) * lba;

	const char *s_suffix = suffix_si_get(&nsze);
	const char *u_suffix = suffix_si_get(&nuse);
	const char *l_suffix = suffix_binary_get(&lba);

	snprintf(usage, sizeof(usage), "%6.2f %2sB / %6.2f %2sB", nuse,
		u_suffix, nsze, s_suffix);
	snprintf(format, sizeof(format), "%3.0f %2sB + %2d B", (double)lba,
		l_suffix, nvme_ns_get_meta_size(n));

	nvme_dev_full_path(n, devname, sizeof(devname));
	nvme_generic_full_path(n, genname, sizeof(genname));

	printf("%-21s %-21s %-20s %-40s %#-10x %-26s %-16s %-8s\n",
		devname, genname, nvme_ns_get_serial(n),
		nvme_ns_get_model(n), nvme_ns_get_nsid(n), usage, format,
		nvme_ns_get_firmware(n));
}

static void nvme_show_simple_list(nvme_root_t r)
{
	nvme_host_t h;
	nvme_subsystem_t s;
	nvme_ctrl_t c;
	nvme_ns_t n;

	printf("%-21s %-21s %-20s %-40s %-10s %-26s %-16s %-8s\n",
	    "Node", "Generic", "SN", "Model", "Namespace", "Usage", "Format", "FW Rev");
	printf("%-.21s %-.21s %-.20s %-.40s %-.10s %-.26s %-.16s %-.8s\n",
		dash, dash, dash, dash, dash, dash, dash, dash);

	nvme_for_each_host(r, h) {
		nvme_for_each_subsystem(h, s) {
			nvme_subsystem_for_each_ns(s, n)
				nvme_show_list_item(n);

			nvme_subsystem_for_each_ctrl(s, c)
				nvme_ctrl_for_each_ns(c, n)
				nvme_show_list_item(n);
		}
	}
}

static void nvme_show_ns_details(nvme_ns_t n)
{
	char usage[128] = { 0 }, format[128] = { 0 };
	char devname[128] = { 0 }, genname[128] = { 0 };

	long long lba = nvme_ns_get_lba_size(n);
	double nsze = nvme_ns_get_lba_count(n) * lba;
	double nuse = nvme_ns_get_lba_util(n) * lba;

	const char *s_suffix = suffix_si_get(&nsze);
	const char *u_suffix = suffix_si_get(&nuse);
	const char *l_suffix = suffix_binary_get(&lba);

	sprintf(usage,"%6.2f %2sB / %6.2f %2sB", nuse, u_suffix, nsze, s_suffix);
	sprintf(format,"%3.0f %2sB + %2d B", (double)lba, l_suffix,
		nvme_ns_get_meta_size(n));

	nvme_dev_full_path(n, devname, sizeof(devname));
	nvme_generic_full_path(n, genname, sizeof(genname));

	printf("%-12s %-12s %#-10x %-26s %-16s ", devname,
		genname, nvme_ns_get_nsid(n), usage, format);
}

static void nvme_show_detailed_list(nvme_root_t r)
{
	nvme_host_t h;
	nvme_subsystem_t s;
	nvme_ctrl_t c;
	nvme_path_t p;
	nvme_ns_t n;

	printf("%-16s %-96s %-.16s\n", "Subsystem", "Subsystem-NQN", "Controllers");
	printf("%-.16s %-.96s %-.16s\n", dash, dash, dash);

	nvme_for_each_host(r, h) {
		nvme_for_each_subsystem(h, s) {
			bool first = true;
			printf("%-16s %-96s ", nvme_subsystem_get_name(s),
			       nvme_subsystem_get_nqn(s));

			nvme_subsystem_for_each_ctrl(s, c) {
				printf("%s%s", first ? "": ", ",
				       nvme_ctrl_get_name(c));
				first = false;
			}
			printf("\n");
		}
	}
	printf("\n");

	printf("%-8s %-20s %-40s %-8s %-6s %-14s %-12s %-16s\n", "Device",
		"SN", "MN", "FR", "TxPort", "Address", "Subsystem", "Namespaces");
	printf("%-.8s %-.20s %-.40s %-.8s %-.6s %-.14s %-.12s %-.16s\n", dash, dash,
		dash, dash, dash, dash, dash, dash);

	nvme_for_each_host(r, h) {
		nvme_for_each_subsystem(h, s) {
			nvme_subsystem_for_each_ctrl(s, c) {
				bool first = true;

				printf("%-8s %-20s %-40s %-8s %-6s %-14s %-12s ",
				       nvme_ctrl_get_name(c),
				       nvme_ctrl_get_serial(c),
				       nvme_ctrl_get_model(c),
				       nvme_ctrl_get_firmware(c),
				       nvme_ctrl_get_transport(c),
				       nvme_ctrl_get_address(c),
				       nvme_subsystem_get_name(s));

				nvme_ctrl_for_each_ns(c, n) {
					printf("%s%s", first ? "": ", ",
					       nvme_ns_get_name(n));
					first = false;
				}

				nvme_ctrl_for_each_path(c, p) {
					n = nvme_path_get_ns(p);
					if (!n)
						continue;
					printf("%s%s", first ? "": ", ",
					       nvme_ns_get_name(n));
					first = false;
				}
				printf("\n");
			}
		}
	}
	printf("\n");

	printf("%-12s %-12s %-10s %-26s %-16s %-16s\n", "Device", "Generic",
		"NSID", "Usage", "Format", "Controllers");
	printf("%-.12s %-.12s %-.10s %-.26s %-.16s %-.16s\n", dash, dash, dash,
		dash, dash, dash);

	nvme_for_each_host(r, h) {
		nvme_for_each_subsystem(h, s) {
			nvme_subsystem_for_each_ctrl(s, c) {
				nvme_ctrl_for_each_ns(c, n) {
					nvme_show_ns_details(n);
					printf("%s\n", nvme_ctrl_get_name(c));
				}
			}

			nvme_subsystem_for_each_ns(s, n) {
				bool first = true;

				nvme_show_ns_details(n);
				nvme_subsystem_for_each_ctrl(s, c) {
					printf("%s%s", first ? "" : ", ",
					       nvme_ctrl_get_name(c));
					first = false;
				}
				printf("\n");
			}
		}
	}
}

void nvme_show_list_items(nvme_root_t r, enum nvme_print_flags flags)
{
	if (flags & JSON)
		json_print_list_items(r, flags);
	else if (flags & VERBOSE)
		nvme_show_detailed_list(r);
	else
		nvme_show_simple_list(r);
}

static bool nvme_is_multipath(nvme_subsystem_t s)
{
	nvme_ns_t n;
	nvme_path_t p;

	nvme_subsystem_for_each_ns(s, n)
		nvme_namespace_for_each_path(n, p)
			return true;

	return false;
}

static void nvme_show_subsystem_topology_multipath(nvme_subsystem_t s,
					  enum nvme_cli_topo_ranking ranking)
{
	nvme_ns_t n;
	nvme_path_t p;
	nvme_ctrl_t c;

	if (ranking == NVME_CLI_TOPO_NAMESPACE) {
		nvme_subsystem_for_each_ns(s, n) {
			printf(" +- ns %d\n", nvme_ns_get_nsid(n));
			printf(" \\\n");

			nvme_namespace_for_each_path(n, p) {
				c = nvme_path_get_ctrl(p);

				printf("  +- %s %s %s %s %s\n",
				       nvme_ctrl_get_name(c),
				       nvme_ctrl_get_transport(c),
				       nvme_ctrl_get_address(c),
				       nvme_ctrl_get_state(c),
				       nvme_path_get_ana_state(p));
			}
		}
	} else {
		/* NVME_CLI_TOPO_CTRL */
		nvme_subsystem_for_each_ctrl(s, c) {
			printf(" +- %s %s %s\n",
			       nvme_ctrl_get_name(c),
			       nvme_ctrl_get_transport(c),
			       nvme_ctrl_get_address(c));
			printf(" \\\n");

			nvme_subsystem_for_each_ns(s, n) {
				nvme_namespace_for_each_path(n, p) {
					if (nvme_path_get_ctrl(p) != c)
						continue;

					printf("  +- ns %d %s %s\n",
					       nvme_ns_get_nsid(n),
					       nvme_ctrl_get_state(c),
					       nvme_path_get_ana_state(p));
				}
			}
		}
	}
}

static void nvme_show_subsystem_topology(nvme_subsystem_t s,
				      enum nvme_cli_topo_ranking ranking)
{
	nvme_ctrl_t c;
	nvme_ns_t n;

	if (ranking == NVME_CLI_TOPO_NAMESPACE) {
		nvme_subsystem_for_each_ctrl(s, c) {
			nvme_ctrl_for_each_ns(c, n) {
				printf(" +- ns %d\n", nvme_ns_get_nsid(n));
				printf(" \\\n");
				printf("  +- %s %s %s %s\n",
				       nvme_ctrl_get_name(c),
				       nvme_ctrl_get_transport(c),
				       nvme_ctrl_get_address(c),
				       nvme_ctrl_get_state(c));
			}
		}
	} else {
		/* NVME_CLI_TOPO_CTRL */
		nvme_subsystem_for_each_ctrl(s, c) {
			printf(" +- %s %s %s\n",
			       nvme_ctrl_get_name(c),
			       nvme_ctrl_get_transport(c),
			       nvme_ctrl_get_address(c));
			printf(" \\\n");
			nvme_ctrl_for_each_ns(c, n) {
				printf("  +- ns %d %s\n",
				       nvme_ns_get_nsid(n),
				       nvme_ctrl_get_state(c));
			}
		}
	}
}

static void nvme_show_simple_topology(nvme_root_t r,
				      enum nvme_cli_topo_ranking ranking)
{
	nvme_host_t h;
	nvme_subsystem_t s;

	nvme_for_each_host(r, h) {
		nvme_for_each_subsystem(h, s) {

			printf("%s - NQN=%s\n", nvme_subsystem_get_name(s),
			       nvme_subsystem_get_nqn(s));
			printf("\\\n");

			if (nvme_is_multipath(s))
				nvme_show_subsystem_topology_multipath(s, ranking);
			else
				nvme_show_subsystem_topology(s, ranking);
		}
	}
}

void nvme_show_topology(nvme_root_t r, enum nvme_print_flags flags,
			enum nvme_cli_topo_ranking ranking)
{
	if (flags & JSON)
		json_simple_topology(r);
	else
		nvme_show_simple_topology(r, ranking);
}
   070701015D6E4E000081A4000003E80000006400000001642C0FB600003058000000000000004A00000000000000000000001500000000nvme-cli/nvme-wrap.c  // SPDX-License-Identifier: GPL-2.0-or-later
/*
 * Definitions for the NVM Express interface: libnvme/libnvme-mi device
 * wrappers.
 */

#include <errno.h>

#include <libnvme.h>
#include <libnvme-mi.h>

#include "nvme.h"
#include "nvme-wrap.h"

/*
 * Helper for libnvme functions that pass the fd/ep separately. These just
 * pass the correct handle to the direct/MI function.
 * @op: the name of the libnvme function, without the nvme_/nvme_mi prefix
 * @d: device handle: struct nvme_dev
 */
#define do_admin_op(op, d, ...) ({					\
	int __rc;							\
	if (d->type == NVME_DEV_DIRECT)					\
		__rc = nvme_ ## op(d->direct.fd, __VA_ARGS__);		\
	else if (d->type == NVME_DEV_MI)				\
		__rc = nvme_mi_admin_ ## op (d->mi.ctrl, __VA_ARGS__);	\
	else								\
		__rc = -ENODEV;						\
	__rc; })

/*
 * Helper for libnvme functions use the 'struct _args' pattern. These need
 * the fd and timeout set for the direct interface, and pass the ep as
 * an argument for the MI interface
 * @op: the name of the libnvme function, without the nvme_/nvme_mi prefix
 * @d: device handle: struct nvme_dev
 * @args: op-specific args struct
 */
#define do_admin_args_op(op, d, args) ({				\
	int __rc;							\
	if (d->type == NVME_DEV_DIRECT) {				\
		args->fd = d->direct.fd;				\
		args->timeout = NVME_DEFAULT_IOCTL_TIMEOUT;		\
		__rc = nvme_ ## op(args);				\
	} else if (d->type == NVME_DEV_MI)				\
		__rc = nvme_mi_admin_ ## op (d->mi.ctrl, args);		\
	else								\
		__rc = -ENODEV;						\
	__rc; })

int nvme_cli_identify(struct nvme_dev *dev, struct nvme_identify_args *args)
{
	return do_admin_args_op(identify, dev, args);
}

int nvme_cli_identify_ctrl(struct nvme_dev *dev, struct nvme_id_ctrl *ctrl)
{
	return do_admin_op(identify_ctrl, dev, ctrl);
}

int nvme_cli_identify_ctrl_list(struct nvme_dev *dev, __u16 ctrl_id,
				struct nvme_ctrl_list *list)
{
	return do_admin_op(identify_ctrl_list, dev, ctrl_id, list);
}

int nvme_cli_identify_nsid_ctrl_list(struct nvme_dev *dev, __u32 nsid,
				     __u16 ctrl_id,
				     struct nvme_ctrl_list *list)
{
	return do_admin_op(identify_nsid_ctrl_list, dev, nsid, ctrl_id, list);
}

int nvme_cli_identify_ns(struct nvme_dev *dev, __u32 nsid,
			 struct nvme_id_ns *ns)
{
	return do_admin_op(identify_ns, dev, nsid, ns);
}

int nvme_cli_identify_ns_descs(struct nvme_dev *dev, __u32 nsid,
			       struct nvme_ns_id_desc *descs)
{
	return do_admin_op(identify_ns_descs, dev, nsid, descs);
}

int nvme_cli_identify_allocated_ns(struct nvme_dev *dev, __u32 nsid,
			 struct nvme_id_ns *ns)
{
	return do_admin_op(identify_allocated_ns, dev, nsid, ns);
}

int nvme_cli_identify_active_ns_list(struct nvme_dev *dev, __u32 nsid,
				     struct nvme_ns_list *list)
{
	return do_admin_op(identify_active_ns_list, dev, nsid, list);
}

int nvme_cli_identify_allocated_ns_list(struct nvme_dev *dev, __u32 nsid,
					struct nvme_ns_list *list)
{
	return do_admin_op(identify_allocated_ns_list, dev, nsid, list);
}

int nvme_cli_identify_primary_ctrl(struct nvme_dev *dev, __u32 nsid,
				   struct nvme_primary_ctrl_cap *cap)
{
	return do_admin_op(identify_primary_ctrl, dev, nsid, cap);
}

int nvme_cli_identify_secondary_ctrl_list(struct nvme_dev *dev, __u32 nsid,
					  __u16 ctrl_id,
					  struct nvme_secondary_ctrl_list *sc_list)
{
	return do_admin_op(identify_secondary_ctrl_list, dev, nsid, ctrl_id,
			   sc_list);
}

int nvme_cli_get_features(struct nvme_dev *dev,
			  struct nvme_get_features_args *args)
{
	return do_admin_args_op(get_features, dev, args);
}

int nvme_cli_ns_mgmt_delete(struct nvme_dev *dev, __u32 nsid)
{
	return do_admin_op(ns_mgmt_delete, dev, nsid);
}

int nvme_cli_ns_attach(struct nvme_dev *dev, struct nvme_ns_attach_args *args)
{
	return do_admin_args_op(ns_attach, dev, args);
}

int nvme_cli_ns_attach_ctrls(struct nvme_dev *dev, __u32 nsid,
			     struct nvme_ctrl_list *ctrlist)
{
	return do_admin_op(ns_attach_ctrls, dev, nsid, ctrlist);
}

int nvme_cli_ns_detach_ctrls(struct nvme_dev *dev, __u32 nsid,
			     struct nvme_ctrl_list *ctrlist)
{
	return do_admin_op(ns_detach_ctrls, dev, nsid, ctrlist);
}

int nvme_cli_format_nvm(struct nvme_dev *dev, struct nvme_format_nvm_args *args)
{
	return do_admin_args_op(format_nvm, dev, args);
}

int nvme_cli_sanitize_nvm(struct nvme_dev *dev, struct nvme_sanitize_nvm_args *args)
{
	return do_admin_args_op(sanitize_nvm, dev, args);
}

int nvme_cli_get_log(struct nvme_dev *dev, struct nvme_get_log_args *args)
{
	return do_admin_args_op(get_log, dev, args);
}

int nvme_cli_get_log_page(struct nvme_dev *dev, __u32 xfer_len,
			  struct nvme_get_log_args *args)
{
	return do_admin_op(get_log_page, dev, xfer_len, args);
}

int nvme_cli_get_nsid_log(struct nvme_dev *dev, bool rae,
			  enum nvme_cmd_get_log_lid lid,
			  __u32 nsid, __u32 len, void *log)
{
	return do_admin_op(get_nsid_log, dev, rae, lid, nsid, len, log);
}

int nvme_cli_get_log_simple(struct nvme_dev *dev,
			    enum nvme_cmd_get_log_lid lid,
			    __u32 len, void *log)
{
	return do_admin_op(get_log_simple, dev, lid, len, log);
}

int nvme_cli_get_log_supported_log_pages(struct nvme_dev *dev, bool rae,
					 struct nvme_supported_log_pages *log)
{
	return do_admin_op(get_log_supported_log_pages, dev, rae, log);
}

int nvme_cli_get_log_error(struct nvme_dev *dev, unsigned int nr_entries,
			   bool rae, struct nvme_error_log_page *err_log)
{
	return do_admin_op(get_log_error, dev, nr_entries, rae, err_log);
}

int nvme_cli_get_log_smart(struct nvme_dev *dev, __u32 nsid, bool rae,
			   struct nvme_smart_log *smart_log)
{
	return do_admin_op(get_log_smart, dev, nsid, rae, smart_log);
}

int nvme_cli_get_log_fw_slot(struct nvme_dev *dev, bool rae,
			     struct nvme_firmware_slot *fw_log)
{
	return do_admin_op(get_log_fw_slot, dev, rae, fw_log);
}

int nvme_cli_get_log_changed_ns_list(struct nvme_dev *dev, bool rae,
				     struct nvme_ns_list *ns_log)
{
	return do_admin_op(get_log_changed_ns_list, dev, rae, ns_log);
}

int nvme_cli_get_log_cmd_effects(struct nvme_dev *dev, enum nvme_csi csi,
				 struct nvme_cmd_effects_log *effects_log)
{
	return do_admin_op(get_log_cmd_effects, dev, csi, effects_log);
}

int nvme_cli_get_log_device_self_test(struct nvme_dev *dev,
				      struct nvme_self_test_log *log)
{
	return do_admin_op(get_log_device_self_test, dev, log);
}

int nvme_cli_get_log_create_telemetry_host(struct nvme_dev *dev,
					   struct nvme_telemetry_log *log)
{
	return do_admin_op(get_log_create_telemetry_host, dev, log);
}

int nvme_cli_get_log_telemetry_host(struct nvme_dev *dev, __u64 offset,
				    __u32 len, void *log)
{
	return do_admin_op(get_log_telemetry_host, dev, offset, len, log);
}

int nvme_cli_get_log_telemetry_ctrl(struct nvme_dev *dev, bool rae,
				    __u64 offset, __u32 len, void *log)
{
	return do_admin_op(get_log_telemetry_ctrl, dev, rae, offset, len, log);
}

int nvme_cli_get_log_endurance_group(struct nvme_dev *dev, __u16 endgid,
				     struct nvme_endurance_group_log *log)
{
	return do_admin_op(get_log_endurance_group, dev, endgid, log);
}

int nvme_cli_get_log_predictable_lat_nvmset(struct nvme_dev *dev,
					    __u16 nvmsetid,
					    struct nvme_nvmset_predictable_lat_log *log)
{
	return do_admin_op(get_log_predictable_lat_nvmset, dev, nvmsetid, log);
}

int nvme_cli_get_log_predictable_lat_event(struct nvme_dev *dev, bool rae,
					   __u32 offset, __u32 len, void *log)
{
	return do_admin_op(get_log_predictable_lat_event, dev, rae, offset,
			   len, log);
}

int nvme_cli_get_log_ana(struct nvme_dev *dev,
			 enum nvme_log_ana_lsp lsp, bool rae,
			 __u64 offset, __u32 len, void *log)
{
	return do_admin_op(get_log_ana, dev, lsp, rae, offset, len, log);
}

int nvme_cli_get_log_ana_groups(struct nvme_dev *dev, bool rae, __u32 len,
				struct nvme_ana_group_desc *log)
{
	return do_admin_op(get_log_ana_groups, dev, rae, len, log);
}

int nvme_cli_get_log_lba_status(struct nvme_dev *dev, bool rae,
				__u64 offset, __u32 len, void *log)
{
	return do_admin_op(get_log_lba_status, dev, rae, offset, len, log);
}

int nvme_cli_get_log_endurance_grp_evt(struct nvme_dev *dev, bool rae,
				       __u32 offset, __u32 len, void *log)
{
	return do_admin_op(get_log_endurance_grp_evt, dev, rae, offset, len,
			   log);
}

int nvme_cli_get_log_fid_supported_effects(struct nvme_dev *dev, bool rae,
					   struct nvme_fid_supported_effects_log *log)
{
	return do_admin_op(get_log_fid_supported_effects, dev, rae, log);
}

int nvme_cli_get_log_mi_cmd_supported_effects(struct nvme_dev *dev, bool rae,
					      struct nvme_mi_cmd_supported_effects_log *log)
{
	return do_admin_op(get_log_mi_cmd_supported_effects, dev, rae, log);
}

int nvme_cli_get_log_boot_partition(struct nvme_dev *dev, bool rae, __u8 lsp,
				    __u32 len,
				    struct nvme_boot_partition *part)
{
	return do_admin_op(get_log_boot_partition, dev, rae, lsp, len, part);
}

int nvme_cli_get_log_discovery(struct nvme_dev *dev, bool rae,
			       __u32 offset, __u32 len, void *log)
{
	return do_admin_op(get_log_discovery, dev, rae, offset, len, log);
}

int nvme_cli_get_log_media_unit_stat(struct nvme_dev *dev, __u16 domid,
				     struct nvme_media_unit_stat_log *mus)
{
	return do_admin_op(get_log_media_unit_stat, dev, domid, mus);
}

int nvme_cli_get_log_support_cap_config_list(struct nvme_dev *dev,
					     __u16 domid,
					     struct nvme_supported_cap_config_list_log *cap)
{
	return do_admin_op(get_log_support_cap_config_list, dev, domid, cap);
}

int nvme_cli_get_log_reservation(struct nvme_dev *dev, bool rae,
				 struct nvme_resv_notification_log *log)
{
	return do_admin_op(get_log_reservation, dev, rae, log);
}

int nvme_cli_get_log_sanitize(struct nvme_dev *dev, bool rae,
			      struct nvme_sanitize_log_page *log)
{
	return do_admin_op(get_log_sanitize, dev, rae, log);
}

int nvme_cli_get_log_zns_changed_zones(struct nvme_dev *dev, __u32 nsid,
				       bool rae,
				       struct nvme_zns_changed_zone_log *log)
{
	return do_admin_op(get_log_zns_changed_zones, dev, nsid, rae, log);
}

int nvme_cli_get_log_persistent_event(struct nvme_dev *dev,
				      enum nvme_pevent_log_action action,
				      __u32 size, void *pevent_log)
{
	return do_admin_op(get_log_persistent_event, dev, action, size,
			   pevent_log);
}

int nvme_cli_fw_download(struct nvme_dev *dev,
			 struct nvme_fw_download_args *args)
{
	return do_admin_args_op(fw_download, dev, args);
}

int nvme_cli_fw_commit(struct nvme_dev *dev,
			 struct nvme_fw_commit_args *args)
{
	return do_admin_args_op(fw_commit, dev, args);
}

int nvme_cli_admin_passthru(struct nvme_dev *dev, __u8 opcode, __u8 flags,
			    __u16 rsvd, __u32 nsid, __u32 cdw2, __u32 cdw3,
			    __u32 cdw10, __u32 cdw11, __u32 cdw12, __u32 cdw13,
			    __u32 cdw14, __u32 cdw15, __u32 data_len,
			    void *data, __u32 metadata_len, void *metadata,
			    __u32 timeout_ms, __u32 *result)
{
	return do_admin_op(admin_passthru, dev, opcode, flags, rsvd, nsid,
			   cdw2, cdw3, cdw10, cdw11, cdw12, cdw13, cdw14, cdw15,
			   data_len, data, metadata_len, metadata, timeout_ms,
			   result);
}

/* The MI & direct interfaces don't have an exactly-matching API for
 * ns_mgmt_create, as we don't support a timeout for MI.
 */
int nvme_cli_ns_mgmt_create(struct nvme_dev *dev, struct nvme_id_ns *ns,
			__u32 *nsid, __u32 timeout, __u8 csi)
{
	if (dev->type == NVME_DEV_DIRECT)
		return nvme_ns_mgmt_create(dev_fd(dev), ns, nsid, timeout, csi);
	if (dev->type == NVME_DEV_MI)
		return nvme_mi_admin_ns_mgmt_create(dev->mi.ctrl, ns,
						    csi, nsid);

	return -ENODEV;
}

int nvme_cli_get_feature_length2(int fid, __u32 cdw11, enum nvme_data_tfr dir,
			         __u32 *len)
{
	int err;

	err = nvme_get_feature_length2(fid, cdw11, dir, len);
	if (err != -EEXIST)
		return err;
	return nvme_get_feature_length(fid, cdw11, len);
}

int nvme_cli_security_send(struct nvme_dev *dev,
			   struct nvme_security_send_args* args)
{
	return do_admin_args_op(security_send, dev, args);
}

int nvme_cli_security_receive(struct nvme_dev *dev,
			      struct nvme_security_receive_args* args)
{
	/* Cannot use do_admin_args_op here because the API have different suffix*/
	if (dev->type == NVME_DEV_DIRECT) {
		args->fd = dev->direct.fd;
		args->timeout = NVME_DEFAULT_IOCTL_TIMEOUT;
		return nvme_security_receive(args);
	}

	if (dev->type == NVME_DEV_MI)
		return nvme_mi_admin_security_recv(dev->mi.ctrl, args);

	return -ENODEV;
}

070701015D6E4F000081A4000003E80000006400000001642C0FB600001A11000000000000004A00000000000000000000001500000000nvme-cli/nvme-wrap.h  // SPDX-License-Identifier: GPL-2.0-or-later
/*
 * Definitions for the NVM Express interface: libnvme/libnvme-mi device
 * wrappers.
 */

#ifndef _NVME_WRAP_H
#define _NVME_WRAP_H

#include "nvme.h"

int nvme_cli_identify(struct nvme_dev *dev, struct nvme_identify_args *args);
int nvme_cli_identify_ctrl(struct nvme_dev *dev, struct nvme_id_ctrl *ctrl);
int nvme_cli_identify_ctrl_list(struct nvme_dev *dev, __u16 ctrl_id,
				struct nvme_ctrl_list *list);
int nvme_cli_identify_nsid_ctrl_list(struct nvme_dev *dev, __u32 nsid,
				     __u16 ctrl_id,
				     struct nvme_ctrl_list *list);
int nvme_cli_identify_ns(struct nvme_dev *dev, __u32 nsid,
			 struct nvme_id_ns *ns);
int nvme_cli_identify_ns_descs(struct nvme_dev *dev, __u32 nsid,
			       struct nvme_ns_id_desc *descs);
int nvme_cli_identify_allocated_ns(struct nvme_dev *dev, __u32 nsid,
				   struct nvme_id_ns *ns);
int nvme_cli_identify_active_ns_list(struct nvme_dev *dev, __u32 nsid,
				     struct nvme_ns_list *list);
int nvme_cli_identify_allocated_ns_list(struct nvme_dev *dev, __u32 nsid,
					struct nvme_ns_list *list);
int nvme_cli_identify_primary_ctrl(struct nvme_dev *dev, __u32 nsid,
				   struct nvme_primary_ctrl_cap *cap);
int nvme_cli_identify_secondary_ctrl_list(struct nvme_dev *dev, __u32 nsid,
					  __u16 ctrl_id,
					  struct nvme_secondary_ctrl_list *sc_list);
int nvme_cli_ns_mgmt_delete(struct nvme_dev *dev, __u32 nsid);
int nvme_cli_ns_mgmt_create(struct nvme_dev *dev, struct nvme_id_ns *ns,
			__u32 *nsid, __u32 timeout, __u8 csi);

int nvme_cli_ns_attach(struct nvme_dev *dev, struct nvme_ns_attach_args *args);

int nvme_cli_ns_attach_ctrls(struct nvme_dev *dev, __u32 nsid,
			     struct nvme_ctrl_list *ctrlist);
int nvme_cli_ns_detach_ctrls(struct nvme_dev *dev, __u32 nsid,
			     struct nvme_ctrl_list *ctrlist);

int nvme_cli_format_nvm(struct nvme_dev *dev, struct nvme_format_nvm_args *args);
int nvme_cli_sanitize_nvm(struct nvme_dev *dev,
			  struct nvme_sanitize_nvm_args *args);

int nvme_cli_get_features(struct nvme_dev *dev,
			  struct nvme_get_features_args *args);


int nvme_cli_get_log(struct nvme_dev *dev, struct nvme_get_log_args *args);
int nvme_cli_get_log_page(struct nvme_dev *dev,
                          __u32 xfer_len,
                          struct nvme_get_log_args *args);

int nvme_cli_get_nsid_log(struct nvme_dev *dev, bool rae,
			  enum nvme_cmd_get_log_lid lid,
			  __u32 nsid, __u32 len, void *log);
int nvme_cli_get_log_simple(struct nvme_dev *dev,
			    enum nvme_cmd_get_log_lid lid,
			    __u32 len, void *log);
int nvme_cli_get_log_supported_log_pages(struct nvme_dev *dev, bool rae,
					 struct nvme_supported_log_pages *log);
int nvme_cli_get_log_error(struct nvme_dev *dev, unsigned int nr_entries,
			   bool rae, struct nvme_error_log_page *err_log);
int nvme_cli_get_log_smart(struct nvme_dev *dev, __u32 nsid, bool rae,
			   struct nvme_smart_log *smart_log);
int nvme_cli_get_log_fw_slot(struct nvme_dev *dev, bool rae,
			     struct nvme_firmware_slot *fw_log);
int nvme_cli_get_log_changed_ns_list(struct nvme_dev *dev, bool rae,
				     struct nvme_ns_list *ns_log);
int nvme_cli_get_log_cmd_effects(struct nvme_dev *dev, enum nvme_csi csi,
				 struct nvme_cmd_effects_log *effects_log);
int nvme_cli_get_log_device_self_test(struct nvme_dev *dev,
				      struct nvme_self_test_log *log);
int nvme_cli_get_log_create_telemetry_host(struct nvme_dev *dev,
					   struct nvme_telemetry_log *log);
int nvme_cli_get_log_telemetry_host(struct nvme_dev *dev, __u64 offset,
				    __u32 len, void *log);
int nvme_cli_get_log_telemetry_ctrl(struct nvme_dev *dev, bool rae,
				    __u64 offset, __u32 len, void *log);
int nvme_cli_get_log_endurance_group(struct nvme_dev *dev, __u16 endgid,
				     struct nvme_endurance_group_log *log);
int nvme_cli_get_log_predictable_lat_nvmset(struct nvme_dev *dev,
					    __u16 nvmsetid,
					    struct nvme_nvmset_predictable_lat_log *log);
int nvme_cli_get_log_predictable_lat_event(struct nvme_dev *dev, bool rae,
					   __u32 offset, __u32 len, void *log);
int nvme_cli_get_log_ana(struct nvme_dev *dev,
			 enum nvme_log_ana_lsp lsp, bool rae,
			 __u64 offset, __u32 len, void *log);
int nvme_cli_get_log_ana_groups(struct nvme_dev *dev, bool rae, __u32 len,
				struct nvme_ana_group_desc *log);
int nvme_cli_get_log_lba_status(struct nvme_dev *dev, bool rae,
				__u64 offset, __u32 len, void *log);
int nvme_cli_get_log_endurance_grp_evt(struct nvme_dev *dev, bool rae,
				       __u32 offset, __u32 len, void *log);
int nvme_cli_get_log_fid_supported_effects(struct nvme_dev *dev, bool rae,
					   struct nvme_fid_supported_effects_log *log);
int nvme_cli_get_log_mi_cmd_supported_effects(struct nvme_dev *dev, bool rae,
					      struct nvme_mi_cmd_supported_effects_log *log);
int nvme_cli_get_log_boot_partition(struct nvme_dev *dev, bool rae, __u8 lsp,
				    __u32 len,
				    struct nvme_boot_partition *part);
int nvme_cli_get_log_discovery(struct nvme_dev *dev, bool rae,
			       __u32 offset, __u32 len, void *log);
int nvme_cli_get_log_media_unit_stat(struct nvme_dev *dev, __u16 domid,
				     struct nvme_media_unit_stat_log *mus);
int nvme_cli_get_log_support_cap_config_list(struct nvme_dev *dev,
					     __u16 domid,
					     struct nvme_supported_cap_config_list_log *cap);
int nvme_cli_get_log_reservation(struct nvme_dev *dev, bool rae,
				 struct nvme_resv_notification_log *log);
int nvme_cli_get_log_sanitize(struct nvme_dev *dev, bool rae,
			      struct nvme_sanitize_log_page *log);
int nvme_cli_get_log_zns_changed_zones(struct nvme_dev *dev, __u32 nsid,
				       bool rae,
				       struct nvme_zns_changed_zone_log *log);
int nvme_cli_get_log_persistent_event(struct nvme_dev *dev,
				      enum nvme_pevent_log_action action,
				      __u32 size, void *pevent_log);

int nvme_cli_fw_download(struct nvme_dev *dev,
			 struct nvme_fw_download_args *args);

int nvme_cli_fw_commit(struct nvme_dev *dev,
			 struct nvme_fw_commit_args *args);

int nvme_cli_admin_passthru(struct nvme_dev *dev, __u8 opcode, __u8 flags,
			    __u16 rsvd, __u32 nsid, __u32 cdw2, __u32 cdw3,
			    __u32 cdw10, __u32 cdw11, __u32 cdw12, __u32 cdw13,
			    __u32 cdw14, __u32 cdw15, __u32 data_len,
			    void *data, __u32 metadata_len, void *metadata,
			    __u32 timeout_ms, __u32 *result);

int nvme_cli_get_feature_length2(int fid, __u32 cdw11, enum nvme_data_tfr dir,
				__u32 *len);

int nvme_cli_security_send(struct nvme_dev *dev,
			   struct nvme_security_send_args* args);

int nvme_cli_security_receive(struct nvme_dev *dev,
			      struct nvme_security_receive_args* args);

#endif /* _NVME_WRAP_H */
   070701015D6E51000081A4000003E80000006400000001642C0FB600000BEB000000000000004A00000000000000000000001000000000nvme-cli/nvme.h   /* SPDX-License-Identifier: GPL-2.0-only */
/*
 * Definitions for the NVM Express interface
 * Copyright (c) 2011-2014, Intel Corporation.
 *
 * This program is free software; you can redistribute it and/or modify it
 * under the terms and conditions of the GNU General Public License,
 * version 2, as published by the Free Software Foundation.
 *
 * This program is distributed in the hope 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.
 */

#ifndef _NVME_H
#define _NVME_H

#include <dirent.h>
#include <stdbool.h>
#include <stdint.h>
#include <stdio.h>
#include <endian.h>
#include <sys/time.h>
#include <sys/stat.h>

#include <libnvme-mi.h>

#include "plugin.h"
#include "util/json.h"
#include "util/argconfig.h"

enum nvme_print_flags {
	NORMAL	= 0,
	VERBOSE	= 1 << 0,	/* verbosely decode complex values for humans */
	JSON	= 1 << 1,	/* display in json format */
	VS	= 1 << 2,	/* hex dump vendor specific data areas */
	BINARY	= 1 << 3,	/* binary dump raw bytes */
};

enum nvme_cli_topo_ranking {
	NVME_CLI_TOPO_NAMESPACE,
	NVME_CLI_TOPO_CTRL,
};

#define SYS_NVME "/sys/class/nvme"

enum nvme_dev_type {
	NVME_DEV_DIRECT,
	NVME_DEV_MI,
};

struct nvme_dev {
	enum nvme_dev_type type;
	union {
		struct {
			int fd;
			struct stat stat;
		} direct;
		struct {
			nvme_root_t root;
			nvme_mi_ep_t ep;
			nvme_mi_ctrl_t ctrl;
		} mi;
	};

	const char *name;
};

#define dev_fd(d) __dev_fd(d, __func__, __LINE__)

static inline int __dev_fd(struct nvme_dev *dev, const char *func, int line)
{
	if (dev->type != NVME_DEV_DIRECT) {
		fprintf(stderr,
			"warning: %s:%d not a direct transport!\n",
			func, line);
		return -1;
	}
	return dev->direct.fd;
}

static inline nvme_mi_ep_t dev_mi_ep(struct nvme_dev *dev)
{
	if (dev->type != NVME_DEV_MI) {
		fprintf(stderr,
			"warning: not a MI transport!\n");
		return NULL;
	}
	return dev->mi.ep;
}

void register_extension(struct plugin *plugin);

/*
 * parse_and_open - parses arguments and opens the NVMe device, populating @dev
 */
int parse_and_open(struct nvme_dev **dev, int argc, char **argv, const char *desc,
	struct argconfig_commandline_options *clo);

void dev_close(struct nvme_dev *dev);

extern const char *output_format;

enum nvme_print_flags validate_output_format(const char *format);
int __id_ctrl(int argc, char **argv, struct command *cmd,
	struct plugin *plugin, void (*vs)(uint8_t *vs, struct json_object *root));

extern int current_index;
void *nvme_alloc(size_t len, bool *huge);
void nvme_free(void *p, bool huge);
const char *nvme_strerror(int errnum);

unsigned long long elapsed_utime(struct timeval start_time,
					struct timeval end_time);

/* nvme-print.c */
const char *nvme_select_to_string(int sel);

void d(unsigned char *buf, int len, int width, int group);
void d_raw(unsigned char *buf, unsigned len);
uint64_t int48_to_long(uint8_t *data);

int map_log_level(int verbose, bool quiet);
#endif /* _NVME_H */
 07070101755AE8000081A4000003E800000064000000016442733700000307000000000000004A00000000000000000000001300000000nvme-cli/fabrics.h    /* SPDX-License-Identifier: GPL-2.0-or-later */
#ifndef _FABRICS_H
#define _FABRICS_H

struct tr_config {
	const char *subsysnqn;
	const char *transport;
	const char *traddr;
	const char *host_traddr;
	const char *host_iface;
	const char *trsvcid;
};

extern nvme_ctrl_t lookup_ctrl(nvme_root_t r, struct tr_config *trcfg);
extern int nvmf_discover(const char *desc, int argc, char **argv, bool connect,
			 bool nbft_compat_mode);
extern int nvmf_connect(const char *desc, int argc, char **argv);
extern int nvmf_disconnect(const char *desc, int argc, char **argv);
extern int nvmf_disconnect_all(const char *desc, int argc, char **argv);
extern int nvmf_config(const char *desc, int argc, char **argv);
extern int nvmf_dim(const char *desc, int argc, char **argv);

#endif
 07070101755AE9000081A4000003E8000000640000000164427337000012D9000000000000004A00000000000000000000001000000000nvme-cli/nbft.c   // SPDX-License-Identifier: GPL-2.0-or-later

#include <errno.h>
#include <stdio.h>
#include <fnmatch.h>

#include "nvme.h"
#include "nbft.h"
#include "libnvme.h"
#include "fabrics.h"

#define NBFT_SYSFS_FILENAME	"NBFT*"

static void print_connect_msg(nvme_ctrl_t c)
{
	printf("device: %s\n", nvme_ctrl_get_name(c));
}

static void json_connect_msg(nvme_ctrl_t c)
{
	struct json_object *root;

	root = json_create_object();
	json_object_add_value_string(root, "device", nvme_ctrl_get_name(c));

	json_print_object(root, NULL);
	printf("\n");
	json_free_object(root);
}

int nbft_filter(const struct dirent *dent)
{
	return !fnmatch(NBFT_SYSFS_FILENAME, dent->d_name, FNM_PATHNAME);
}

int read_nbft_files(struct list_head *nbft_list, char *path)
{
	struct dirent **dent;
	char filename[PATH_MAX];
	int i, count, ret;
	struct nbft_file_entry *entry;
	struct nbft_info *nbft;

	count = scandir(path, &dent, nbft_filter, NULL);
	if (count < 0) {
		fprintf(stderr, "Failed to open %s.\n", path);
		return -1;
	}

	for (i = 0; i < count; i++) {
		snprintf(filename, sizeof(filename), "%s/%s", path, dent[i]->d_name);
		ret = nvme_nbft_read(&nbft, filename);
		if (!ret) {
			entry = calloc(1, sizeof(*entry));
			entry->nbft = nbft;
			list_add_tail(nbft_list, &entry->node);
		}
		free(dent[i]);
	}
	free(dent);
	return 0;
}

void free_nbfts(struct list_head *nbft_list)
{
	struct nbft_file_entry *entry;

	while ((entry = list_pop(nbft_list, struct nbft_file_entry, node))) {
		nvme_nbft_free(entry->nbft);
		free(entry);
	}
}

int discover_from_nbft(nvme_root_t r, char *hostnqn_arg, char *hostid_arg,
		       char *hostnqn_sys, char *hostid_sys,
		       const char *desc, bool connect,
		       const struct nvme_fabrics_config *cfg, char *nbft_path,
		       enum nvme_print_flags flags, bool verbose)
{
	char *hostnqn = NULL, *hostid = NULL, *host_traddr = NULL;
	nvme_host_t h;
	nvme_ctrl_t c;
	int ret, i;
	struct list_head nbft_list;
	struct nbft_file_entry *entry;
	struct nbft_info_subsystem_ns **ss;
	struct nbft_info_hfi *hfi;

	if (!connect)
		/* to do: print discovery-type info from NBFT tables */
		return 0;

	list_head_init(&nbft_list);
	ret = read_nbft_files(&nbft_list, nbft_path);
	if (ret)
		goto out_free_2;

	list_for_each(&nbft_list, entry, node)
		for (ss = entry->nbft->subsystem_ns_list; ss && *ss; ss++)
			for (i = 0; i < (*ss)->num_hfis; i++) {
				nvme_ctrl_t cl;

				hfi = (*ss)->hfis[i];
				if (hostnqn_arg)
					hostnqn = hostnqn_arg;
				else {
					hostnqn = entry->nbft->host.nqn;
					if (!hostnqn)
						hostnqn = hostnqn_sys;
				}

				if (hostid_arg)
					hostid = hostid_arg;
				else if (*entry->nbft->host.id) {
					hostid = (char *)util_uuid_to_string(entry->nbft->host.id);
					if (!hostid)
						hostid = hostid_sys;
				}

				h = nvme_lookup_host(r, hostnqn, hostid);
				if (!h) {
					errno = ENOMEM;
					goto out_free;
				}

				if (!cfg->host_traddr) {
					host_traddr = NULL;
					if (!strncmp((*ss)->transport, "tcp", 3))
						host_traddr = hfi->tcp_info.ipaddr;
				}

				struct tr_config trcfg = {
					.subsysnqn	= (*ss)->subsys_nqn,
					.transport	= (*ss)->transport,
					.traddr		= (*ss)->traddr,
					.host_traddr	= host_traddr,
					.host_iface	= NULL,
					.trsvcid	= (*ss)->trsvcid,
				};

				/* Already connected ? */
				cl = lookup_ctrl(r, &trcfg);
				if (cl && nvme_ctrl_get_name(cl))
					continue;

				c = nvme_create_ctrl(r, (*ss)->subsys_nqn, (*ss)->transport,
						     (*ss)->traddr, host_traddr, NULL,
						     (*ss)->trsvcid);
				if (!c) {
					errno = ENOMEM;
					goto out_free;
				}

				errno = 0;
				ret = nvmf_add_ctrl(h, c, cfg);

				/*
				 * With TCP/DHCP, it can happen that the OS
				 * obtains a different local IP address than the
				 * firmware had. Retry without host_traddr.
				 */
				if (ret == -1 && errno == ENVME_CONNECT_WRITE &&
				    !strcmp((*ss)->transport, "tcp") &&
				    strlen(hfi->tcp_info.dhcp_server_ipaddr) > 0) {
					nvme_free_ctrl(c);

					trcfg.host_traddr = NULL;
					cl = lookup_ctrl(r, &trcfg);
					if (cl && nvme_ctrl_get_name(cl))
						continue;

					c = nvme_create_ctrl(r, (*ss)->subsys_nqn, (*ss)->transport,
							     (*ss)->traddr,
							     NULL, NULL, (*ss)->trsvcid);
					if (!c) {
						errno = ENOMEM;
						goto out_free;
					}
					errno = 0;
					ret = nvmf_add_ctrl(h, c, cfg);
					if (ret == 0 && verbose >= 1)
						fprintf(stderr,
							"connect with host_traddr=\"%s\" failed, success after omitting host_traddr\n",
							host_traddr);
				}

				if (ret)
					fprintf(stderr, "no controller found\n");
				else {
					if (flags == NORMAL)
						print_connect_msg(c);
					else if (flags == JSON)
						json_connect_msg(c);
				}
out_free:
				if (errno == ENOMEM)
					goto out_free_2;
			}
out_free_2:
	free_nbfts(&nbft_list);
	return errno;
}
   07070101755AEA000081A4000003E80000006400000001644273370000025E000000000000004A00000000000000000000001000000000nvme-cli/nbft.h   /* SPDX-License-Identifier: GPL-2.0-or-later */

#include <ccan/list/list.h>

#define NBFT_SYSFS_PATH		"/sys/firmware/acpi/tables"

struct nbft_file_entry {
	struct list_node node;
	struct nbft_info *nbft;
};

int read_nbft_files(struct list_head *nbft_list, char *path);
void free_nbfts(struct list_head *nbft_list);

extern int discover_from_nbft(nvme_root_t r, char *hostnqn_arg, char *hostid_arg,
			      char *hostnqn_sys, char *hostid_sys,
			      const char *desc, bool connect,
			      const struct nvme_fabrics_config *cfg, char *nbft_path,
			      enum nvme_print_flags flags, bool verbose);
  07070101755AEB000081A4000003E80000006400000001644273370000232E000000000000004A00000000000000000000001800000000nvme-cli/nvme-builtin.h   /* SPDX-License-Identifier: GPL-2.0-or-later */
#undef CMD_INC_FILE
#define CMD_INC_FILE nvme-builtin

#if !defined(NVME_BUILTIN) || defined(CMD_HEADER_MULTI_READ)
#define NVME_BUILTIN

#include "cmd.h"

COMMAND_LIST(
	ENTRY("list", "List all NVMe devices and namespaces on machine", list)
	ENTRY("list-subsys", "List nvme subsystems", list_subsys)
	ENTRY("id-ctrl", "Send NVMe Identify Controller", id_ctrl)
	ENTRY("id-ns", "Send NVMe Identify Namespace, display structure", id_ns)
	ENTRY("id-ns-granularity", "Send NVMe Identify Namespace Granularity List, display structure", id_ns_granularity)
	ENTRY("id-ns-lba-format", "Send NVMe Identify Namespace for the specified LBA Format index, display structure", id_ns_lba_format)
	ENTRY("list-ns", "Send NVMe Identify List, display structure", list_ns)
	ENTRY("list-ctrl", "Send NVMe Identify Controller List, display structure", list_ctrl)
	ENTRY("nvm-id-ctrl", "Send NVMe Identify Controller NVM Command Set, display structure", nvm_id_ctrl)
	ENTRY("nvm-id-ns", "Send NVMe Identify Namespace NVM Command Set, display structure", nvm_id_ns)
	ENTRY("nvm-id-ns-lba-format", "Send NVMe Identify Namespace NVM Command Set for the specified LBA Format index, display structure", nvm_id_ns_lba_format)
	ENTRY("primary-ctrl-caps", "Send NVMe Identify Primary Controller Capabilities", primary_ctrl_caps)
	ENTRY("list-secondary", "List Secondary Controllers associated with a Primary Controller", list_secondary_ctrl)
	ENTRY("cmdset-ind-id-ns", "I/O Command Set Independent Identify Namespace", cmd_set_independent_id_ns)
	ENTRY("ns-descs", "Send NVMe Namespace Descriptor List, display structure", ns_descs)
	ENTRY("id-nvmset", "Send NVMe Identify NVM Set List, display structure", id_nvmset)
	ENTRY("id-uuid", "Send NVMe Identify UUID List, display structure", id_uuid)
	ENTRY("id-iocs", "Send NVMe Identify I/O Command Set, display structure", id_iocs)
	ENTRY("id-domain", "Send NVMe Identify Domain List, display structure", id_domain)
	ENTRY("list-endgrp", "Send NVMe Identify Endurance Group List, display structure", id_endurance_grp_list)
	ENTRY("create-ns", "Creates a namespace with the provided parameters", create_ns)
	ENTRY("delete-ns", "Deletes a namespace from the controller", delete_ns)
	ENTRY("attach-ns", "Attaches a namespace to requested controller(s)", attach_ns)
	ENTRY("detach-ns", "Detaches a namespace from requested controller(s)", detach_ns)
	ENTRY("get-ns-id", "Retrieve the namespace ID of opened block device", get_ns_id)
	ENTRY("get-log", "Generic NVMe get log, returns log in raw format", get_log)
	ENTRY("telemetry-log", "Retrieve FW Telemetry log write to file", get_telemetry_log)
	ENTRY("fw-log", "Retrieve FW Log, show it", get_fw_log)
	ENTRY("changed-ns-list-log", "Retrieve Changed Namespace List, show it", get_changed_ns_list_log)
	ENTRY("smart-log", "Retrieve SMART Log, show it", get_smart_log)
	ENTRY("ana-log", "Retrieve ANA Log, show it", get_ana_log)
	ENTRY("error-log", "Retrieve Error Log, show it", get_error_log)
	ENTRY("effects-log", "Retrieve Command Effects Log, show it", get_effects_log)
	ENTRY("endurance-log", "Retrieve Endurance Group Log, show it", get_endurance_log)
	ENTRY("predictable-lat-log", "Retrieve Predictable Latency per Nvmset Log, show it", get_pred_lat_per_nvmset_log)
	ENTRY("pred-lat-event-agg-log", "Retrieve Predictable Latency Event Aggregate Log, show it", get_pred_lat_event_agg_log)
	ENTRY("persistent-event-log", "Retrieve Presistent Event Log, show it", get_persistent_event_log)
	ENTRY("endurance-event-agg-log", "Retrieve Endurance Group Event Aggregate Log, show it", get_endurance_event_agg_log)
	ENTRY("lba-status-log", "Retrieve LBA Status Information Log, show it", get_lba_status_log)
	ENTRY("resv-notif-log", "Retrieve Reservation Notification Log, show it", get_resv_notif_log)
	ENTRY("boot-part-log", "Retrieve Boot Partition Log, show it", get_boot_part_log)
	ENTRY("get-feature", "Get feature and show the resulting value", get_feature)
	ENTRY("device-self-test", "Perform the necessary tests to observe the performance", device_self_test)
	ENTRY("self-test-log", "Retrieve the SELF-TEST Log, show it", self_test_log)
	ENTRY("supported-log-pages", "Retrieve the Supported Log pages details, show it", get_supported_log_pages)
	ENTRY("fid-support-effects-log", "Retrieve FID Support and Effects log and show it", get_fid_support_effects_log)
	ENTRY("mi-cmd-support-effects-log", "Retrieve MI Command Support and Effects log and show it", get_mi_cmd_support_effects_log)
	ENTRY("media-unit-stat-log", "Retrieve the configuration and wear of media units, show it", get_media_unit_stat_log)
	ENTRY("supported-cap-config-log", "Retrieve the list of Supported Capacity Configuration Descriptors", get_supp_cap_config_log)
	ENTRY("set-feature", "Set a feature and show the resulting value", set_feature)
	ENTRY("set-property", "Set a property and show the resulting value", set_property)
	ENTRY("get-property", "Get a property and show the resulting value", get_property)
	ENTRY("format", "Format namespace with new block format", format)
	ENTRY("fw-commit", "Verify and commit firmware to a specific slot (fw-activate in old version < 1.2)", fw_commit, "fw-activate")
	ENTRY("fw-download", "Download new firmware", fw_download)
	ENTRY("admin-passthru", "Submit an arbitrary admin command, return results", admin_passthru)
	ENTRY("io-passthru", "Submit an arbitrary IO command, return results", io_passthru)
	ENTRY("security-send", "Submit a Security Send command, return results", sec_send)
	ENTRY("security-recv", "Submit a Security Receive command, return results", sec_recv)
	ENTRY("get-lba-status", "Submit a Get LBA Status command, return results", get_lba_status)
	ENTRY("capacity-mgmt", "Submit Capacity Management Command, return results", capacity_mgmt)
	ENTRY("resv-acquire", "Submit a Reservation Acquire, return results", resv_acquire)
	ENTRY("resv-register", "Submit a Reservation Register, return results", resv_register)
	ENTRY("resv-release", "Submit a Reservation Release, return results", resv_release)
	ENTRY("resv-report", "Submit a Reservation Report, return results", resv_report)
	ENTRY("dsm", "Submit a Data Set Management command, return results", dsm)
	ENTRY("copy", "Submit a Simple Copy command, return results", copy)
	ENTRY("flush", "Submit a Flush command, return results", flush)
	ENTRY("compare", "Submit a Compare command, return results", compare)
	ENTRY("read", "Submit a read command, return results", read_cmd)
	ENTRY("write", "Submit a write command, return results", write_cmd)
	ENTRY("write-zeroes", "Submit a write zeroes command, return results", write_zeroes)
	ENTRY("write-uncor", "Submit a write uncorrectable command, return results", write_uncor)
	ENTRY("verify", "Submit a verify command, return results", verify_cmd)
	ENTRY("sanitize", "Submit a sanitize command", sanitize)
	ENTRY("sanitize-log", "Retrieve sanitize log, show it", sanitize_log)
	ENTRY("reset", "Resets the controller", reset)
	ENTRY("subsystem-reset", "Resets the subsystem", subsystem_reset)
	ENTRY("ns-rescan", "Rescans the NVME namespaces", ns_rescan)
	ENTRY("show-regs", "Shows the controller registers or properties. Requires character device", show_registers)
	ENTRY("discover", "Discover NVMeoF subsystems", discover_cmd)
	ENTRY("connect-all", "Discover and Connect to NVMeoF subsystems", connect_all_cmd)
	ENTRY("connect", "Connect to NVMeoF subsystem", connect_cmd)
	ENTRY("disconnect", "Disconnect from NVMeoF subsystem", disconnect_cmd)
	ENTRY("disconnect-all", "Disconnect from all connected NVMeoF subsystems", disconnect_all_cmd)
	ENTRY("config", "Configuration of NVMeoF subsystems", config_cmd)
	ENTRY("gen-hostnqn", "Generate NVMeoF host NQN", gen_hostnqn_cmd)
	ENTRY("show-hostnqn", "Show NVMeoF host NQN", show_hostnqn_cmd)
	ENTRY("gen-dhchap-key", "Generate NVMeoF DH-HMAC-CHAP host key", gen_dhchap_key)
	ENTRY("check-dhchap-key", "Validate NVMeoF DH-HMAC-CHAP host key", check_dhchap_key)
	ENTRY("gen-tls-key", "Generate NVMeoF TLS PSK", gen_tls_key)
	ENTRY("check-tls-key", "Validate NVMeoF TLS PSK", check_tls_key)
	ENTRY("dir-receive", "Submit a Directive Receive command, return results", dir_receive)
	ENTRY("dir-send", "Submit a Directive Send command, return results", dir_send)
	ENTRY("virt-mgmt", "Manage Flexible Resources between Primary and Secondary Controller ", virtual_mgmt)
	ENTRY("rpmb", "Replay Protection Memory Block commands", rpmb_cmd)
	ENTRY("lockdown", "Submit a Lockdown command,return result", lockdown_cmd)
	ENTRY("dim", "Send Discovery Information Management command to a Discovery Controller", dim_cmd) \
	ENTRY("show-topology", "Show the topology", show_topology_cmd) \
	ENTRY("io-mgmt-recv", "I/O Management Receive", io_mgmt_recv)
	ENTRY("io-mgmt-send", "I/O Management Send", io_mgmt_send)
	ENTRY("connect-nbft", "Connect subsystems listed in ACPI NBFT tables", connect_nbft_compat_cmd)
	ENTRY("show-nbft", "Show ACPI NBFT table contents", show_nbft_compat_cmd)
);

#endif

#include "define_cmd.h"
  07070101755AEC000081A4000003E800000064000000016442733700001E8B000000000000004A00000000000000000000001600000000nvme-cli/nvme-print.h /* SPDX-License-Identifier: GPL-2.0-or-later */
#ifndef NVME_PRINT_H
#define NVME_PRINT_H

#include "nvme.h"
#include <inttypes.h>

#include <ccan/list/list.h>

typedef struct nvme_effects_log_node {
	enum nvme_csi csi;
	struct nvme_cmd_effects_log effects;
	struct list_node node;
} nvme_effects_log_node_t;

void d(unsigned char *buf, int len, int width, int group);
void d_raw(unsigned char *buf, unsigned len);

void nvme_show_status(int status);
void nvme_show_lba_status_info(__u32 result);
void nvme_show_relatives(const char *name);

void nvme_show_id_iocs(struct nvme_id_iocs *iocs);
void nvme_show_id_ctrl(struct nvme_id_ctrl *ctrl, enum nvme_print_flags flags,
	void (*vendor_show)(__u8 *vs, struct json_object *root));
void nvme_show_id_ns(struct nvme_id_ns *ns, unsigned int nsid,
		unsigned int lba_index, bool cap_only, enum nvme_print_flags flags);
void nvme_show_cmd_set_independent_id_ns(
	struct nvme_id_independent_id_ns *ns, unsigned int nsid,
	enum nvme_print_flags flags);
void nvme_show_resv_report(struct nvme_resv_status *status, int bytes, bool eds,
	enum nvme_print_flags flags);
void nvme_show_lba_range(struct nvme_lba_range_type *lbrt, int nr_ranges);
void nvme_show_supported_log(struct nvme_supported_log_pages *support,
	const char *devname, enum nvme_print_flags flags);
void nvme_show_error_log(struct nvme_error_log_page *err_log, int entries,
	const char *devname, enum nvme_print_flags flags);
void nvme_show_smart_log(struct nvme_smart_log *smart, unsigned int nsid,
	const char *devname, enum nvme_print_flags flags);
void nvme_show_ana_log(struct nvme_ana_log *ana_log, const char *devname,
	enum nvme_print_flags flags, size_t len);
void nvme_show_self_test_log(struct nvme_self_test_log *self_test, __u8 dst_entries,
	__u32 size, const char *devname, enum nvme_print_flags flags);
void nvme_show_fw_log(struct nvme_firmware_slot *fw_log, const char *devname,
	enum nvme_print_flags flags);
void nvme_print_effects_log_pages(struct list_head *list, int flags);
void nvme_show_changed_ns_list_log(struct nvme_ns_list *log,
	const char *devname, enum nvme_print_flags flags);
void nvme_show_endurance_log(struct nvme_endurance_group_log *endurance_log,
	__u16 group_id, const char *devname, enum nvme_print_flags flags);
void nvme_show_sanitize_log(struct nvme_sanitize_log_page *sanitize,
	const char *devname, enum nvme_print_flags flags);
void nvme_show_predictable_latency_per_nvmset(
	struct nvme_nvmset_predictable_lat_log *plpns_log,
	__u16 nvmset_id, const char *devname, enum nvme_print_flags flags);
void nvme_show_predictable_latency_event_agg_log(
	struct nvme_aggregate_predictable_lat_event *pea_log,
	__u64 log_entries, __u32 size, const char *devname,
	enum nvme_print_flags flags);
void nvme_show_persistent_event_log(void *pevent_log_info,
	__u8 action, __u32 size, const char *devname,
	enum nvme_print_flags flags);
void json_endurance_group_event_agg_log(
	struct nvme_aggregate_predictable_lat_event *endurance_log,
	__u64 log_entries);
void nvme_show_endurance_group_event_agg_log(
	struct nvme_aggregate_predictable_lat_event *endurance_log,
	__u64 log_entries, __u32 size, const char *devname,
	enum nvme_print_flags flags);
void nvme_show_lba_status_log(void *lba_status, __u32 size,
	const char *devname, enum nvme_print_flags flags);
void nvme_show_resv_notif_log(struct nvme_resv_notification_log *resv,
	const char *devname, enum nvme_print_flags flags);
void nvme_show_boot_part_log(void *bp_log, const char *devname,
	__u32 size, enum nvme_print_flags flags);
void nvme_show_fid_support_effects_log(struct nvme_fid_supported_effects_log *fid_log,
	const char *devname, enum nvme_print_flags flags);
void nvme_show_mi_cmd_support_effects_log(struct nvme_mi_cmd_supported_effects_log *mi_cmd_log,
	const char *devname, enum nvme_print_flags flags);
void nvme_show_media_unit_stat_log(struct nvme_media_unit_stat_log *mus,
	enum nvme_print_flags flags);
void nvme_show_supported_cap_config_log(struct nvme_supported_cap_config_list_log *caplog,
				enum nvme_print_flags flags);
void nvme_show_ctrl_registers(void *bar, bool fabrics, enum nvme_print_flags flags);
void nvme_show_single_property(int offset, uint64_t prop, int human);
void nvme_show_id_ns_descs(void *data, unsigned nsid, enum nvme_print_flags flags);
void nvme_show_lba_status(struct nvme_lba_status *list, unsigned long len,
	enum nvme_print_flags flags);
void nvme_show_list_items(nvme_root_t t, enum nvme_print_flags flags);
void nvme_show_subsystem_list(nvme_root_t t, bool show_ana,
			      enum nvme_print_flags flags);
void nvme_show_id_nvmset(struct nvme_id_nvmset_list *nvmset, unsigned nvmset_id,
	enum nvme_print_flags flags);
void nvme_show_primary_ctrl_cap(const struct nvme_primary_ctrl_cap *cap,
	enum nvme_print_flags flags);
void nvme_show_list_secondary_ctrl(const struct nvme_secondary_ctrl_list *sc_list,
	__u32 count, enum nvme_print_flags flags);
void nvme_show_id_ns_granularity_list(const struct nvme_id_ns_granularity_list *glist,
	enum nvme_print_flags flags);
void nvme_show_id_uuid_list(const struct nvme_id_uuid_list *uuid_list,
	enum nvme_print_flags flags);
void nvme_show_list_ctrl(struct nvme_ctrl_list *ctrl_list,
	 enum nvme_print_flags flags);
void nvme_show_id_domain_list(struct nvme_id_domain_list *id_dom,
	enum nvme_print_flags flags);
void nvme_show_endurance_group_list(struct nvme_id_endurance_group_list *endgrp_list,
	enum nvme_print_flags flags);
void nvme_show_list_ns(struct nvme_ns_list *ns_list,
	enum nvme_print_flags flags);
void nvme_show_topology(nvme_root_t t, enum nvme_print_flags flags,
			enum nvme_cli_topo_ranking ranking);

void nvme_feature_show_fields(enum nvme_features_id fid, unsigned int result, unsigned char *buf);
void nvme_directive_show(__u8 type, __u8 oper, __u16 spec, __u32 nsid, __u32 result,
	void *buf, __u32 len, enum nvme_print_flags flags);
void nvme_show_select_result(__u32 result);

void nvme_show_zns_id_ctrl(struct nvme_zns_id_ctrl *ctrl, unsigned int mode);
void nvme_show_id_ctrl_nvm(struct nvme_id_ctrl_nvm *ctrl_nvm,
	enum nvme_print_flags flags);
void nvme_show_nvm_id_ns(struct nvme_nvm_id_ns *nvm_ns, unsigned int nsid,
						struct nvme_id_ns *ns, unsigned int lba_index,
						bool cap_only, enum nvme_print_flags flags);
void nvme_show_zns_id_ns(struct nvme_zns_id_ns *ns,
	struct nvme_id_ns *id_ns, unsigned long flags);
void nvme_show_zns_changed( struct nvme_zns_changed_zone_log *log,
	unsigned long flags);
void nvme_show_zns_report_zones(void *report, __u32 descs,
	__u8 ext_size, __u32 report_size, unsigned long flags,
	struct json_object *zone_list);
void json_nvme_finish_zone_list(__u64 nr_zones, 
	struct json_object *zone_list);
void nvme_show_list_item(nvme_ns_t n);

void nvme_show_fdp_configs(struct nvme_fdp_config_log *configs, size_t len,
		enum nvme_print_flags flags);
void nvme_show_fdp_stats(struct nvme_fdp_stats_log *log,
		enum nvme_print_flags flags);
void nvme_show_fdp_events(struct nvme_fdp_events_log *log,
		enum nvme_print_flags flags);
void nvme_show_fdp_usage(struct nvme_fdp_ruhu_log *log, size_t len,
		enum nvme_print_flags flags);
void nvme_show_fdp_ruh_status(struct nvme_fdp_ruh_status *status, size_t len,
		enum nvme_print_flags flags);

const char *nvme_cmd_to_string(int admin, __u8 opcode);
const char *nvme_select_to_string(int sel);
const char *nvme_feature_to_string(enum nvme_features_id feature);
const char *nvme_register_to_string(int reg);

void nvme_dev_full_path(nvme_ns_t n, char *path, size_t len);
void nvme_generic_full_path(nvme_ns_t n, char *path, size_t len);
char *zone_type_to_string(__u8 cond);
char *zone_state_to_string(__u8 state);
const char *nvme_pel_event_to_string(int type);
const char *get_sanitize_log_sstat_status_str(__u16 status);
const char *nvme_ana_state_to_string(enum nvme_ana_state state);

#endif
 070701017635AB000081A4000003E80000006400000001644643F000009990000000000000004A00000000000000000000001300000000nvme-cli/fabrics.c    /* SPDX-License-Identifier: GPL-2.0-only */
/*
 * Copyright (C) 2016 Intel Corporation. All rights reserved.
 * Copyright (c) 2016 HGST, a Western Digital Company.
 * Copyright (c) 2016 Samsung Electronics Co., Ltd.
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License version
 * 2 as published by the Free Software Foundation.
 *
 * 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.
 *
 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 *
 * This file implements the discovery controller feature of NVMe over
 * Fabrics specification standard.
 */

#include <errno.h>
#include <getopt.h>
#include <fcntl.h>
#include <stdlib.h>
#include <stdio.h>
#include <stdbool.h>
#include <stdint.h>
#include <unistd.h>
#include <dirent.h>
#include <inttypes.h>
#include <libgen.h>
#include <sys/stat.h>
#include <stddef.h>
#include <syslog.h>
#include <time.h>

#include <sys/types.h>
#include <linux/types.h>

#include "common.h"
#include "nvme.h"
#include "nbft.h"
#include "libnvme.h"
#include "nvme-print.h"
#include "nvme-print-json.h"
#include "fabrics.h"

#define PATH_NVMF_DISC		SYSCONFDIR "/nvme/discovery.conf"
#define PATH_NVMF_CONFIG	SYSCONFDIR "/nvme/config.json"
#define MAX_DISC_ARGS		32
#define MAX_DISC_RETRIES	10

#define NVMF_DEF_DISC_TMO	30

/* Name of file to output log pages in their raw format */
static char *raw;
static bool persistent;
static bool quiet;
static bool dump_config;

static const char *nvmf_tport		= "transport type";
static const char *nvmf_traddr		= "transport address";
static const char *nvmf_nqn		= "subsystem nqn";
static const char *nvmf_trsvcid		= "transport service id (e.g. IP port)";
static const char *nvmf_htraddr		= "host traddr (e.g. FC WWN's)";
static const char *nvmf_hiface		= "host interface (for tcp transport)";
static const char *nvmf_hostnqn		= "user-defined hostnqn";
static const char *nvmf_hostid		= "user-defined hostid (if default not used)";
static const char *nvmf_hostkey		= "user-defined dhchap key (if default not used)";
static const char *nvmf_ctrlkey		= "user-defined dhchap controller key (for bi-directional authentication)";
static const char *nvmf_nr_io_queues	= "number of io queues to use (default is core count)";
static const char *nvmf_nr_write_queues	= "number of write queues to use (default 0)";
static const char *nvmf_nr_poll_queues	= "number of poll queues to use (default 0)";
static const char *nvmf_queue_size	= "number of io queue elements to use (default 128)";
static const char *nvmf_keep_alive_tmo	= "keep alive timeout period in seconds";
static const char *nvmf_reconnect_delay	= "reconnect timeout period in seconds";
static const char *nvmf_ctrl_loss_tmo	= "controller loss timeout period in seconds";
static const char *nvmf_tos		= "type of service";
static const char *nvmf_keyring		= "Keyring for TLS key lookup";
static const char *nvmf_tls_key		= "TLS key to use";
static const char *nvmf_dup_connect	= "allow duplicate connections between same transport host and subsystem port";
static const char *nvmf_disable_sqflow	= "disable controller sq flow control (default false)";
static const char *nvmf_hdr_digest	= "enable transport protocol header digest (TCP transport)";
static const char *nvmf_data_digest	= "enable transport protocol data digest (TCP transport)";
static const char *nvmf_tls		= "enable TLS";
static const char *nvmf_config_file	= "Use specified JSON configuration file or 'none' to disable";

#define NVMF_OPTS(c)									\
	OPT_STRING("transport",       't', "STR", &transport,	nvmf_tport), \
	OPT_STRING("nqn",             'n', "STR", &subsysnqn,	nvmf_nqn), \
	OPT_STRING("traddr",          'a', "STR", &traddr,	nvmf_traddr), \
	OPT_STRING("trsvcid",         's', "STR", &trsvcid,	nvmf_trsvcid), \
	OPT_STRING("host-traddr",     'w', "STR", &c.host_traddr,	nvmf_htraddr), \
	OPT_STRING("host-iface",      'f', "STR", &c.host_iface,	nvmf_hiface), \
	OPT_STRING("hostnqn",         'q', "STR", &hostnqn,	nvmf_hostnqn), \
	OPT_STRING("hostid",          'I', "STR", &hostid,	nvmf_hostid), \
	OPT_STRING("dhchap-secret",   'S', "STR", &hostkey,     nvmf_hostkey), \
	OPT_INT("nr-io-queues",       'i', &c.nr_io_queues,       nvmf_nr_io_queues),	\
	OPT_INT("nr-write-queues",    'W', &c.nr_write_queues,    nvmf_nr_write_queues),\
	OPT_INT("nr-poll-queues",     'P', &c.nr_poll_queues,     nvmf_nr_poll_queues),	\
	OPT_INT("queue-size",         'Q', &c.queue_size,         nvmf_queue_size),	\
	OPT_INT("keep-alive-tmo",     'k', &c.keep_alive_tmo,     nvmf_keep_alive_tmo),	\
	OPT_INT("reconnect-delay",    'c', &c.reconnect_delay,    nvmf_reconnect_delay),\
	OPT_INT("ctrl-loss-tmo",      'l', &c.ctrl_loss_tmo,      nvmf_ctrl_loss_tmo),	\
	OPT_INT("tos",                'T', &c.tos,                nvmf_tos),		\
	OPT_INT("keyring",              0, &c.keyring,            nvmf_keyring),	\
	OPT_INT("tls_key",              0, &c.tls_key,            nvmf_tls_key),	\
	OPT_FLAG("duplicate-connect", 'D', &c.duplicate_connect,  nvmf_dup_connect),	\
	OPT_FLAG("disable-sqflow",    'd', &c.disable_sqflow,     nvmf_disable_sqflow),	\
	OPT_FLAG("hdr-digest",        'g', &c.hdr_digest,         nvmf_hdr_digest),	\
	OPT_FLAG("data-digest",       'G', &c.data_digest,        nvmf_data_digest), \
	OPT_FLAG("tls",                 0, &c.tls,                nvmf_tls)	\

/*
 * Compare two C strings and handle NULL pointers gracefully.
 * If either of the two strings is NULL, return 0
 * to let caller ignore the compare.
 */
static inline int strcmp0(const char *s1, const char *s2)
{
	if (!s1 || !s2)
		return 0;
	return strcmp(s1, s2);
}

/*
 * Compare two C strings and handle NULL pointers gracefully.
 * If either of the two strings is NULL, return 0
 * to let caller ignore the compare.
 */
static inline int strcasecmp0(const char *s1, const char *s2)
{
	if (!s1 || !s2)
		return 0;
	return strcasecmp(s1, s2);
}

static bool is_persistent_discovery_ctrl(nvme_host_t h, nvme_ctrl_t c)
{
	if (nvme_host_is_pdc_enabled(h, DEFAULT_PDC_ENABLED))
		return nvme_ctrl_is_unique_discovery_ctrl(c);

	return false;
}

static bool disc_ctrl_config_match(nvme_ctrl_t c, struct tr_config *trcfg)
{
	if (nvme_ctrl_is_discovery_ctrl(c) &&
	    !strcmp0(nvme_ctrl_get_transport(c), trcfg->transport) &&
	    !strcasecmp0(nvme_ctrl_get_traddr(c), trcfg->traddr) &&
	    !strcmp0(nvme_ctrl_get_trsvcid(c), trcfg->trsvcid) &&
	    !strcmp0(nvme_ctrl_get_host_traddr(c), trcfg->host_traddr) &&
	    !strcmp0(nvme_ctrl_get_host_iface(c), trcfg->host_iface))
		return true;

	return false;
}

static bool ctrl_config_match(nvme_ctrl_t c, struct tr_config *trcfg)
{
	if (!strcmp0(nvme_ctrl_get_subsysnqn(c), trcfg->subsysnqn) &&
	    !strcmp0(nvme_ctrl_get_transport(c), trcfg->transport) &&
	    !strcasecmp0(nvme_ctrl_get_traddr(c), trcfg->traddr) &&
	    !strcmp0(nvme_ctrl_get_trsvcid(c), trcfg->trsvcid) &&
	    !strcmp0(nvme_ctrl_get_host_traddr(c), trcfg->host_traddr) &&
	    !strcmp0(nvme_ctrl_get_host_iface(c), trcfg->host_iface))
		return true;

	return false;
}

static nvme_ctrl_t __lookup_ctrl(nvme_root_t r, struct tr_config *trcfg,
			     bool (*filter)(nvme_ctrl_t, struct tr_config *))
{
	nvme_host_t h;
	nvme_subsystem_t s;
	nvme_ctrl_t c;

	nvme_for_each_host(r, h) {
		nvme_for_each_subsystem(h, s) {
			nvme_subsystem_for_each_ctrl(s, c) {
				if (!(filter(c, trcfg)))
					continue;
				return c;
			}
		}
	}

	return NULL;
}

static nvme_ctrl_t lookup_discovery_ctrl(nvme_root_t r, struct tr_config *trcfg)
{
	return __lookup_ctrl(r, trcfg, disc_ctrl_config_match);
}

nvme_ctrl_t lookup_ctrl(nvme_root_t r, struct tr_config *trcfg)
{
	return __lookup_ctrl(r, trcfg, ctrl_config_match);
}

static int set_discovery_kato(struct nvme_fabrics_config *cfg)
{
	int tmo = cfg->keep_alive_tmo;

	/* Set kato to NVMF_DEF_DISC_TMO for persistent controllers */
	if (persistent && !cfg->keep_alive_tmo)
		cfg->keep_alive_tmo = NVMF_DEF_DISC_TMO;
	/* Set kato to zero for non-persistent controllers */
	else if (!persistent && (cfg->keep_alive_tmo > 0))
		cfg->keep_alive_tmo = 0;

	return tmo;
}

static nvme_ctrl_t __create_discover_ctrl(nvme_root_t r, nvme_host_t h,
					  struct nvme_fabrics_config *cfg,
					  struct tr_config *trcfg)
{
	nvme_ctrl_t c;
	int tmo, ret;

	c = nvme_create_ctrl(r, trcfg->subsysnqn, trcfg->transport,
			     trcfg->traddr, trcfg->host_traddr,
			     trcfg->host_iface, trcfg->trsvcid);
	if (!c)
		return NULL;

	nvme_ctrl_set_discovery_ctrl(c, true);
	nvme_ctrl_set_unique_discovery_ctrl(c,
		     strcmp(trcfg->subsysnqn, NVME_DISC_SUBSYS_NAME));
	tmo = set_discovery_kato(cfg);

	errno = 0;
	ret = nvmf_add_ctrl(h, c, cfg);

	cfg->keep_alive_tmo = tmo;
	if (ret) {
		nvme_free_ctrl(c);
		return NULL;
	}

	return c;
}

static nvme_ctrl_t create_discover_ctrl(nvme_root_t r, nvme_host_t h,
					struct nvme_fabrics_config *cfg,
					struct tr_config *trcfg)
{
	nvme_ctrl_t c;

	c = __create_discover_ctrl(r, h, cfg, trcfg);
	if (!c)
		return NULL;

	if (nvme_ctrl_is_unique_discovery_ctrl(c))
		return c;

	/* Find out the name of discovery controller */
	struct nvme_id_ctrl id = { 0 };
	if (nvme_ctrl_identify(c, &id)) {
		fprintf(stderr,	"failed to identify controller, error %s\n",
			nvme_strerror(errno));
		nvme_disconnect_ctrl(c);
		nvme_free_ctrl(c);
		return NULL;
	}

	if (!strcmp(id.subnqn, NVME_DISC_SUBSYS_NAME))
		return c;

	/*
	 * The subsysnqn is not the well-known name. Prefer the unique
	 * subsysnqn over the well-known one.
	 */
	nvme_disconnect_ctrl(c);
	nvme_free_ctrl(c);

	trcfg->subsysnqn = id.subnqn;
	return __create_discover_ctrl(r, h, cfg, trcfg);
}

static void print_discovery_log(struct nvmf_discovery_log *log, int numrec)
{
	int i;

	printf("\nDiscovery Log Number of Records %d, "
	       "Generation counter %"PRIu64"\n",
		numrec, le64_to_cpu(log->genctr));

	for (i = 0; i < numrec; i++) {
		struct nvmf_disc_log_entry *e = &log->entries[i];

		printf("=====Discovery Log Entry %d======\n", i);
		printf("trtype:  %s\n", nvmf_trtype_str(e->trtype));
		printf("adrfam:  %s\n",
			strlen(e->traddr) ?
			nvmf_adrfam_str(e->adrfam): "");
		printf("subtype: %s\n", nvmf_subtype_str(e->subtype));
		printf("treq:    %s\n", nvmf_treq_str(e->treq));
		printf("portid:  %d\n", le16_to_cpu(e->portid));
		printf("trsvcid: %s\n", e->trsvcid);
		printf("subnqn:  %s\n", e->subnqn);
		printf("traddr:  %s\n", e->traddr);
		printf("eflags:  %s\n",
		       nvmf_eflags_str(le16_to_cpu(e->eflags)));

		switch (e->trtype) {
		case NVMF_TRTYPE_RDMA:
			printf("rdma_prtype: %s\n",
				nvmf_prtype_str(e->tsas.rdma.prtype));
			printf("rdma_qptype: %s\n",
				nvmf_qptype_str(e->tsas.rdma.qptype));
			printf("rdma_cms:    %s\n",
				nvmf_cms_str(e->tsas.rdma.cms));
			printf("rdma_pkey: 0x%04x\n",
				le16_to_cpu(e->tsas.rdma.pkey));
			break;
		case NVMF_TRTYPE_TCP:
			printf("sectype: %s\n",
				nvmf_sectype_str(e->tsas.tcp.sectype));
			break;
		}
	}
}

static void save_discovery_log(char *raw, struct nvmf_discovery_log *log)
{
	uint64_t numrec = le64_to_cpu(log->numrec);
	int fd, len, ret;

	fd = open(raw, O_CREAT|O_RDWR|O_TRUNC, S_IRUSR|S_IWUSR);
	if (fd < 0) {
		fprintf(stderr, "failed to open %s: %s\n",
			raw, strerror(errno));
		return;
	}

	len = sizeof(struct nvmf_discovery_log) +
		numrec * sizeof(struct nvmf_disc_log_entry);
	ret = write(fd, log, len);
	if (ret < 0)
		fprintf(stderr, "failed to write to %s: %s\n",
			raw, strerror(errno));
	else
		printf("Discovery log is saved to %s\n", raw);

	close(fd);
}

static void print_connect_msg(nvme_ctrl_t c)
{
	printf("device: %s\n", nvme_ctrl_get_name(c));
}

static int __discover(nvme_ctrl_t c, struct nvme_fabrics_config *defcfg,
		      char *raw, bool connect, bool persistent,
		      enum nvme_print_flags flags)
{
	struct nvmf_discovery_log *log = NULL;
	nvme_subsystem_t s = nvme_ctrl_get_subsystem(c);
	nvme_host_t h = nvme_subsystem_get_host(s);
	nvme_root_t r = nvme_host_get_root(h);
	uint64_t numrec;

	struct nvme_get_discovery_args args = {
		.c = c,
		.args_size = sizeof(args),
		.max_retries = MAX_DISC_RETRIES,
		.result = 0,
		.timeout = NVME_DEFAULT_IOCTL_TIMEOUT,
		.lsp = 0,
	};

	log = nvmf_get_discovery_wargs(&args);
	if (!log) {
		fprintf(stderr, "failed to get discovery log: %s\n",
			nvme_strerror(errno));
		return errno;
	}

	numrec = le64_to_cpu(log->numrec);
	if (raw)
		save_discovery_log(raw, log);
	else if (!connect) {
		switch (flags) {
		case NORMAL:
			print_discovery_log(log, numrec);
			break;
		case JSON:
			json_discovery_log(log, numrec);
			break;
		case BINARY:
			d_raw((unsigned char *)log,
			      sizeof(struct nvmf_discovery_log) +
			      numrec * sizeof(struct nvmf_disc_log_entry));
			break;
		default:
			break;
		}
	} else if (connect) {
		int i;

		for (i = 0; i < numrec; i++) {
			struct nvmf_disc_log_entry *e = &log->entries[i];
			nvme_ctrl_t cl;
			bool discover = false;
			bool disconnect;
			nvme_ctrl_t child;
			int tmo = defcfg->keep_alive_tmo;

			struct tr_config trcfg = {
				.subsysnqn	= e->subnqn,
				.transport	= nvmf_trtype_str(e->trtype),
				.traddr		= e->traddr,
				.host_traddr	= defcfg->host_traddr,
				.host_iface	= defcfg->host_iface,
				.trsvcid	= e->trsvcid,
			};

			/* Already connected ? */
			cl = lookup_ctrl(r, &trcfg);
			if (cl && nvme_ctrl_get_name(cl))
				continue;

			/* Skip connect if the transport types don't match */
			if (strcmp(nvme_ctrl_get_transport(c),
				   nvmf_trtype_str(e->trtype)))
				continue;

			if (e->subtype == NVME_NQN_DISC ||
			    e->subtype == NVME_NQN_CURR) {
				__u16 eflags = le16_to_cpu(e->eflags);
				/*
				 * Does this discovery controller return the
				 * same information?
				 */
				if (eflags & NVMF_DISC_EFLAGS_DUPRETINFO)
					continue;

				/* Are we supposed to keep the discovery
				 * controller around? */
				disconnect = !persistent;

				if (strcmp(e->subnqn, NVME_DISC_SUBSYS_NAME)) {
					/*
					 * Does this discovery controller doesn't
					 * support explicit persistent connection?
					 */
					if (!(eflags & NVMF_DISC_EFLAGS_EPCSD))
						disconnect = true;
					else
						disconnect = false;
				}

				set_discovery_kato(defcfg);
			} else {
				/* NVME_NQN_NVME */
				disconnect = false;
			}

			errno = 0;
			child = nvmf_connect_disc_entry(h, e, defcfg,
							&discover);

			defcfg->keep_alive_tmo = tmo;

			if (child) {
				if (discover)
					__discover(child, defcfg, raw,
						   true, persistent, flags);

				if (disconnect) {
					nvme_disconnect_ctrl(child);
					nvme_free_ctrl(child);
				}
			} else if (errno == ENVME_CONNECT_ALREADY && !quiet) {
				char *traddr = log->entries[i].traddr;

				fprintf(stderr,
					"traddr=%s is already connected\n",
					traddr);
			}
		}
	}

	free(log);
	return 0;
}

static char *get_default_trsvcid(const char *transport,
			         bool discovery_ctrl)
{
	if (!transport)
		return NULL;
	if (!strcmp(transport, "tcp")) {
		if (discovery_ctrl) {
			/* Default port for NVMe/TCP discovery controllers */
			return stringify(NVME_DISC_IP_PORT);
		} else {
			/* Default port for NVMe/TCP io controllers */
			return stringify(NVME_RDMA_IP_PORT);
		}
	} else if (!strcmp(transport, "rdma")) {
		/* Default port for NVMe/RDMA controllers */
		return stringify(NVME_RDMA_IP_PORT);
	}

	return NULL;
}

static int discover_from_conf_file(nvme_root_t r, nvme_host_t h,
				   const char *desc, bool connect,
				   const struct nvme_fabrics_config *defcfg)
{
	char *transport = NULL, *traddr = NULL, *trsvcid = NULL;
	char *hostnqn = NULL, *hostid = NULL, *hostkey = NULL;
	char *subsysnqn = NULL;
	char *ptr, **argv, *p, line[4096];
	int argc, ret = 0;
	unsigned int verbose = 0;
	FILE *f;
	enum nvme_print_flags flags;
	char *format = "normal";
	struct nvme_fabrics_config cfg;
	bool force = false;

	OPT_ARGS(opts) = {
		NVMF_OPTS(cfg),
		OPT_FMT("output-format", 'o', &format,        output_format),
		OPT_FILE("raw",          'r', &raw,           "save raw output to file"),
		OPT_FLAG("persistent",   'p', &persistent,    "persistent discovery connection"),
		OPT_FLAG("quiet",        'S', &quiet,         "suppress already connected errors"),
		OPT_INCR("verbose",      'v', &verbose,       "Increase logging verbosity"),
		OPT_FLAG("force",          0, &force,         "Force persistent discovery controller creation"),
		OPT_END()
	};

	nvmf_default_config(&cfg);

	ret = flags = validate_output_format(format);
	if (ret < 0)
		return ret;

	f = fopen(PATH_NVMF_DISC, "r");
	if (f == NULL) {
		fprintf(stderr, "No params given and no %s\n", PATH_NVMF_DISC);
		errno = ENOENT;
		return -1;
	}

	argv = calloc(MAX_DISC_ARGS, sizeof(char *));
	if (!argv) {
		ret = -1;
		goto out;
	}

	argv[0] = "discover";
	memset(line, 0, sizeof(line));
	while (fgets(line, sizeof(line), f) != NULL) {
		nvme_ctrl_t c;

		if (line[0] == '#' || line[0] == '\n')
			continue;

		argc = 1;
		p = line;
		while ((ptr = strsep(&p, " =\n")) != NULL)
			argv[argc++] = ptr;
		argv[argc] = NULL;

		memcpy(&cfg, defcfg, sizeof(cfg));
		subsysnqn = NVME_DISC_SUBSYS_NAME;
		ret = argconfig_parse(argc, argv, desc, opts);
		if (ret)
			goto next;
		if (!transport && !traddr)
			goto next;

		if (!trsvcid)
			trsvcid = get_default_trsvcid(transport, true);

		struct tr_config trcfg = {
			.subsysnqn	= subsysnqn,
			.transport	= transport,
			.traddr		= traddr,
			.host_traddr	= cfg.host_traddr,
			.host_iface	= cfg.host_iface,
			.trsvcid	= trsvcid,
		};

		if (!force) {
			c = lookup_discovery_ctrl(r, &trcfg);
			if (c) {
				__discover(c, &cfg, raw, connect,
					   true, flags);
				goto next;
			}
		}

		c = create_discover_ctrl(r, h, &cfg, &trcfg);
		if (!c)
			goto next;

		__discover(c, &cfg, raw, connect, persistent, flags);
		if (!(persistent || is_persistent_discovery_ctrl(h, c)))
			ret = nvme_disconnect_ctrl(c);
		nvme_free_ctrl(c);

next:
		memset(&cfg, 0, sizeof(cfg));
	}
	free(argv);
out:
	fclose(f);
	return ret;
}

static int discover_from_json_config_file(nvme_root_t r, nvme_host_t h,
					  const char *desc, bool connect,
					  const struct nvme_fabrics_config *defcfg,
					  enum nvme_print_flags flags,
					  bool force)
{
	const char *transport, *traddr, *host_traddr, *host_iface, *trsvcid, *subsysnqn;
	nvme_subsystem_t s;
	nvme_ctrl_t c, cn;
	struct nvme_fabrics_config cfg;
	int ret = 0;

	nvme_for_each_subsystem(h, s) {
		nvme_subsystem_for_each_ctrl(s, c) {
			transport = nvme_ctrl_get_transport(c);
			traddr = nvme_ctrl_get_traddr(c);
			host_traddr = nvme_ctrl_get_host_traddr(c);
			host_iface = nvme_ctrl_get_host_iface(c);

			if (!transport && !traddr)
				continue;

			/* ignore none fabric transports */
			if (strcmp(transport, "tcp") &&
			    strcmp(transport, "rdma") &&
			    strcmp(transport, "fc"))
				continue;

			/* ignore if no host_traddr for fc */
			if (!strcmp(transport, "fc")) {
				if (!host_traddr) {
					fprintf(stderr, "host_traddr required for fc\n");
					continue;
				}
			}

			/* ignore if host_iface set for any transport other than tcp */
			if (!strcmp(transport, "rdma") || !strcmp(transport, "fc")) {
				if (host_iface) {
					fprintf(stderr, "host_iface not permitted for rdma or fc\n");
					continue;
				}
			}

			trsvcid = nvme_ctrl_get_trsvcid(c);
			if (!trsvcid || !strcmp(trsvcid, ""))
				trsvcid = get_default_trsvcid(transport, true);

			if (force)
				subsysnqn = nvme_ctrl_get_subsysnqn(c);
			else
				subsysnqn = NVME_DISC_SUBSYS_NAME;

			if (nvme_ctrl_is_persistent(c))
				persistent = true;

			memcpy(&cfg, defcfg, sizeof(cfg));

			struct tr_config trcfg = {
				.subsysnqn	= subsysnqn,
				.transport	= transport,
				.traddr		= traddr,
				.host_traddr	= host_traddr,
				.host_iface	= host_iface,
				.trsvcid	= trsvcid,
			};

			if (!force) {
				cn = lookup_discovery_ctrl(r, &trcfg);
				if (cn) {
					__discover(cn, &cfg, raw, connect,
						   true, flags);
					continue;
				}
			}

			cn = create_discover_ctrl(r, h, &cfg, &trcfg);
			if (!cn)
				continue;

			__discover(cn, &cfg, raw, connect, persistent, flags);
			if (!(persistent || is_persistent_discovery_ctrl(h, cn)))
				ret = nvme_disconnect_ctrl(cn);
			nvme_free_ctrl(cn);
		}
	}

	return ret;
}

int nvmf_discover(const char *desc, int argc, char **argv, bool connect,
		  bool nbft_compat_mode)
{
	char *subsysnqn = NVME_DISC_SUBSYS_NAME;
	char *hostnqn = NULL, *hostid = NULL, *hostkey = NULL;
	char *hostnqn_arg, *hostid_arg;
	char *transport = NULL, *traddr = NULL, *trsvcid = NULL;
	char *config_file = PATH_NVMF_CONFIG;
	char *hnqn = NULL, *hid = NULL;
	enum nvme_print_flags flags;
	nvme_root_t r;
	nvme_host_t h;
	nvme_ctrl_t c = NULL;
	unsigned int verbose = 0;
	int ret;
	char *format = "normal";
	struct nvme_fabrics_config cfg;
	char *device = NULL;
	bool force = false;
	bool json_config = false;
	bool nbft = false, nonbft = false;
	char *nbft_path = NBFT_SYSFS_PATH;

	if (nbft_compat_mode)
		nbft = true;
	else
		nonbft = true;

	OPT_ARGS(opts) = {
		OPT_STRING("device",   'd', "DEV", &device, "use existing discovery controller device"),
		NVMF_OPTS(cfg),
		OPT_FMT("output-format", 'o', &format,        output_format),
		OPT_FILE("raw",          'r', &raw,           "save raw output to file"),
		OPT_FLAG("persistent",   'p', &persistent,    "persistent discovery connection"),
		OPT_FLAG("quiet",        'S', &quiet,         "suppress already connected errors"),
		OPT_STRING("config",     'J', "FILE", &config_file, nvmf_config_file),
		OPT_INCR("verbose",      'v', &verbose,       "Increase logging verbosity"),
		OPT_FLAG("dump-config",  'O', &dump_config,   "Dump configuration file to stdout"),
		OPT_FLAG("force",          0, &force,         "Force persistent discovery controller creation"),
		OPT_FLAG("nbft",           0, &nbft,          "Only look at NBFT tables"),
		OPT_FLAG("no-nbft",        0, &nonbft,        "Do not look at NBFT tables"),
		OPT_STRING("nbft-path",  0, "STR", &nbft_path, "user-defined path for NBFT tables"),
		OPT_END()
	};

	nvmf_default_config(&cfg);

	ret = argconfig_parse(argc, argv, desc, opts);
	if (ret)
		return ret;

	ret = flags = validate_output_format(format);
	if (ret < 0)
		return ret;

	if (!strcmp(config_file, "none"))
		config_file = NULL;

	r = nvme_create_root(stderr, map_log_level(verbose, quiet));
	if (!r) {
		fprintf(stderr, "Failed to create topology root: %s\n",
			nvme_strerror(errno));
		return -errno;
	}
	ret = nvme_scan_topology(r, NULL, NULL);
	if (ret < 0) {
		fprintf(stderr, "Failed to scan topology: %s\n",
			 nvme_strerror(errno));
		nvme_free_tree(r);
		return ret;
	}
	if (!nvme_read_config(r, config_file))
		json_config = true;

	hostnqn_arg = hostnqn;
	hostid_arg = hostid;
	if (!hostnqn)
		hostnqn = hnqn = nvmf_hostnqn_from_file();
	if (!hostnqn)
		hostnqn = hnqn = nvmf_hostnqn_generate();
	if (!hostid)
		hostid = hid = nvmf_hostid_from_file();
	h = nvme_lookup_host(r, hostnqn, hostid);
	if (!h) {
		ret = ENOMEM;
		goto out_free;
	}
	if (device) {
		if (!strcmp(device, "none"))
			device = NULL;
		else if (!strncmp(device, "/dev/", 5))
			device += 5;
	}
	if (hostkey)
		nvme_host_set_dhchap_key(h, hostkey);

	if (!device && !transport && !traddr) {
		if (!nonbft)
			discover_from_nbft(r, hostnqn_arg, hostid_arg,
					   hostnqn, hostid, desc, connect,
					   &cfg, nbft_path, flags, verbose);

		if (nbft)
			goto out_free;

		if (json_config)
			ret = discover_from_json_config_file(r, h, desc,
							     connect, &cfg,
							     flags, force);
		if (ret || access(PATH_NVMF_DISC, F_OK))
			goto out_free;

		ret = discover_from_conf_file(r, h, desc, connect, &cfg);
		goto out_free;
	}

	if (!trsvcid)
		trsvcid = get_default_trsvcid(transport, true);

	struct tr_config trcfg = {
		.subsysnqn	= subsysnqn,
		.transport	= transport,
		.traddr		= traddr,
		.host_traddr	= cfg.host_traddr,
		.host_iface	= cfg.host_iface,
		.trsvcid	= trsvcid,
	};

	if (device && !force) {
		c = nvme_scan_ctrl(r, device);
		if (c) {
			/* Check if device matches command-line options */
			if (!ctrl_config_match(c, &trcfg)) {
				fprintf(stderr,
					"ctrl device %s found, ignoring "
					"non matching command-line options\n",
					device);
			}

			if (!nvme_ctrl_is_discovery_ctrl(c)) {
				fprintf(stderr,
					"ctrl device %s found, ignoring "
					"non discovery controller\n",
					device);

				nvme_free_ctrl(c);
				c = NULL;
				persistent = false;
			} else {
				/*
				 * If the controller device is found it must
				 * be persistent, and shouldn't be disconnected
				 * on exit.
				 */
				persistent = true;
				/*
				 * When --host-traddr/--host-iface are not specified on the
				 * command line, use the discovery controller's (c) host-
				 * traddr/host-iface for the connections to controllers
				 * returned in the Discovery Log Pages. This is essential
				 * when invoking "connect-all" with --device to reuse an
				 * existing persistent discovery controller (as is done
				 * for the udev rules). This ensures that host-traddr/
				 * host-iface are consistent with the discovery controller (c).
				 */
				if (!cfg.host_traddr)
					cfg.host_traddr = (char *)nvme_ctrl_get_host_traddr(c);
				if (!cfg.host_iface)
					cfg.host_iface = (char *)nvme_ctrl_get_host_iface(c);
			}
		} else {
			/*
			 * No controller found, fall back to create one.
			 * But that controller cannot be persistent.
			 */
			fprintf(stderr,
				"ctrl device %s not found%s\n", device,
				persistent ? ", ignoring --persistent" : "");
			persistent = false;
		}
	}
	if (!c && !force) {
		c = lookup_discovery_ctrl(r, &trcfg);
		if (c)
			persistent = true;
	}
	if (!c) {
		/* No device or non-matching device, create a new controller */
		c = create_discover_ctrl(r, h, &cfg, &trcfg);
	        if (!c) {
			fprintf(stderr,
				"failed to add controller, error %s\n",
				nvme_strerror(errno));
			ret = errno;
			goto out_free;
		}
	}

	ret = __discover(c, &cfg, raw, connect, persistent, flags);
	if (!(persistent || is_persistent_discovery_ctrl(h, c)))
		nvme_disconnect_ctrl(c);
	nvme_free_ctrl(c);

out_free:
	free(hnqn);
	free(hid);
	if (dump_config)
		nvme_dump_config(r);
	nvme_free_tree(r);

	return ret;
}

int nvmf_connect(const char *desc, int argc, char **argv)
{
	char *subsysnqn = NULL;
	char *transport = NULL, *traddr = NULL;
	char *trsvcid = NULL, *hostnqn = NULL, *hostid = NULL;
	char *hostkey = NULL, *ctrlkey = NULL;
	char *hnqn = NULL, *hid = NULL;
	char *config_file = PATH_NVMF_CONFIG;
	unsigned int verbose = 0;
	nvme_root_t r;
	nvme_host_t h;
	nvme_ctrl_t c;
	int ret;
	struct nvme_fabrics_config cfg;
	enum nvme_print_flags flags = -1;
	char *format = "";

	OPT_ARGS(opts) = {
		NVMF_OPTS(cfg),
		OPT_STRING("dhchap-ctrl-secret", 'C', "STR", &ctrlkey,  nvmf_ctrlkey),
		OPT_STRING("config", 'J', "FILE", &config_file, nvmf_config_file),
		OPT_INCR("verbose", 'v', &verbose, "Increase logging verbosity"),
		OPT_FLAG("dump-config", 'O', &dump_config, "Dump JSON configuration to stdout"),
		OPT_FMT("output-format", 'o', &format, "Output format: normal|json"),
		OPT_END()
	};

	nvmf_default_config(&cfg);

	ret = argconfig_parse(argc, argv, desc, opts);
	if (ret)
		return ret;

	if (!strcmp(format, ""))
		flags = -1;
	else if (!strcmp(format, "normal"))
		flags = NORMAL;
	else if (!strcmp(format, "json"))
		flags = JSON;
	else
		return EINVAL;

	if (!subsysnqn) {
		fprintf(stderr,
			"required argument [--nqn | -n] not specified\n");
		return EINVAL;
	}

	if (!transport) {
		fprintf(stderr,
			"required argument [--transport | -t] not specified\n");
		return EINVAL;
	}

	if (strcmp(transport, "loop")) {
		if (!traddr) {
			fprintf(stderr,
				"required argument [--traddr | -a] not specified for transport %s\n",
				transport);
			return EINVAL;
		}
	}

	if (!strcmp(config_file, "none"))
		config_file = NULL;

	r = nvme_create_root(stderr, map_log_level(verbose, quiet));
	if (!r) {
		fprintf(stderr, "Failed to create topology root: %s\n",
			nvme_strerror(errno));
		return -errno;
	}
	ret = nvme_scan_topology(r, NULL, NULL);
	if (ret < 0) {
		fprintf(stderr, "Failed to scan topology: %s\n",
			 nvme_strerror(errno));
		nvme_free_tree(r);
		return ret;
	}
	nvme_read_config(r, config_file);

	if (!hostnqn)
		hostnqn = hnqn = nvmf_hostnqn_from_file();
	if (!hostnqn)
		hostnqn = hnqn = nvmf_hostnqn_generate();
	if (!hostid)
		hostid = hid = nvmf_hostid_from_file();
	h = nvme_lookup_host(r, hostnqn, hostid);
	if (!h) {
		errno = ENOMEM;
		goto out_free;
	}
	if (hostkey)
		nvme_host_set_dhchap_key(h, hostkey);
	if (!trsvcid)
		trsvcid = get_default_trsvcid(transport, false);

	struct tr_config trcfg = {
		.subsysnqn	= subsysnqn,
		.transport	= transport,
		.traddr		= traddr,
		.host_traddr	= cfg.host_traddr,
		.host_iface	= cfg.host_iface,
		.trsvcid	= trsvcid,
	};

	c = lookup_ctrl(r, &trcfg);
	if (c && nvme_ctrl_get_name(c)) {
		fprintf(stderr, "already connected\n");
		errno = EALREADY;
		goto out_free;
	}

	c = nvme_create_ctrl(r, subsysnqn, transport, traddr,
			     cfg.host_traddr, cfg.host_iface, trsvcid);
	if (!c) {
		errno = ENOMEM;
		goto out_free;
	}
	if (ctrlkey)
		nvme_ctrl_set_dhchap_key(c, ctrlkey);

	errno = 0;
	ret = nvmf_add_ctrl(h, c, &cfg);
	if (ret)
		fprintf(stderr, "could not add new controller: %s\n",
			nvme_strerror(errno));
	else {
		errno = 0;
		if (flags == NORMAL)
			print_connect_msg(c);
		else if (flags == JSON)
			json_connect_msg(c);
	}

out_free:
	free(hnqn);
	free(hid);
	if (dump_config)
		nvme_dump_config(r);
	nvme_free_tree(r);
	return errno;
}

static nvme_ctrl_t lookup_nvme_ctrl(nvme_root_t r, const char *name)
{
	nvme_host_t h;
	nvme_subsystem_t s;
	nvme_ctrl_t c;

	nvme_for_each_host(r, h) {
		nvme_for_each_subsystem(h, s) {
			nvme_subsystem_for_each_ctrl(s, c) {
				if (!strcmp(nvme_ctrl_get_name(c), name))
					return c;
			}
		}
	}
	return NULL;
}

int nvmf_disconnect(const char *desc, int argc, char **argv)
{
	const char *device = "nvme device handle";
	nvme_root_t r;
	nvme_host_t h;
	nvme_subsystem_t s;
	nvme_ctrl_t c;
	char *p;
	int ret;

	struct config {
		char *nqn;
		char *device;
		unsigned int verbose;
	};

	struct config cfg = { 0 };

	OPT_ARGS(opts) = {
		OPT_STRING("nqn",    'n', "NAME", &cfg.nqn,    nvmf_nqn),
		OPT_STRING("device", 'd', "DEV",  &cfg.device, device),
		OPT_INCR("verbose",  'v', &cfg.verbose, "Increase logging verbosity"),
		OPT_END()
	};

	ret = argconfig_parse(argc, argv, desc, opts);
	if (ret)
		return ret;

	if (!cfg.nqn && !cfg.device) {
		fprintf(stderr,
			"Neither device name [--device | -d] nor NQN [--nqn | -n] provided\n");
		return EINVAL;
	}

	r = nvme_create_root(stderr, map_log_level(cfg.verbose, false));
	if (!r) {
		fprintf(stderr, "Failed to create topology root: %s\n",
			nvme_strerror(errno));
		return -errno;
	}
	ret = nvme_scan_topology(r, NULL, NULL);
	if (ret < 0) {
		fprintf(stderr, "Failed to scan topology: %s\n",
			 nvme_strerror(errno));
		nvme_free_tree(r);
		return ret;
	}

	if (cfg.nqn) {
		int i = 0;
		char *n = cfg.nqn;

		while ((p = strsep(&n, ",")) != NULL) {
			if (!strlen(p))
				continue;
			nvme_for_each_host(r, h) {
				nvme_for_each_subsystem(h, s) {
					if (strcmp(nvme_subsystem_get_nqn(s), p))
						continue;
					nvme_subsystem_for_each_ctrl(s, c) {
						if (!nvme_disconnect_ctrl(c))
							i++;
					}
				}
			}
		}
		printf("NQN:%s disconnected %d controller(s)\n", cfg.nqn, i);
	}

	if (cfg.device) {
		char *d;

		d = cfg.device;
		while ((p = strsep(&d, ",")) != NULL) {
			if (!strncmp(p, "/dev/", 5))
				p += 5;
			c = lookup_nvme_ctrl(r, p);
			if (!c) {
				fprintf(stderr,
					"Did not find device %s\n", p);
				nvme_free_tree(r);
				return errno;
			}
			ret = nvme_disconnect_ctrl(c);
			if (ret)
				fprintf(stderr,
					"Failed to disconnect %s: %s\n",
					p, nvme_strerror(errno));
		}
	}
	nvme_free_tree(r);

	return 0;
}

int nvmf_disconnect_all(const char *desc, int argc, char **argv)
{
	nvme_host_t h;
	nvme_subsystem_t s;
	nvme_root_t r;
	nvme_ctrl_t c;
	int ret;

	struct config {
		char *transport;
		unsigned int verbose;
	};

	struct config cfg = { 0 };

	OPT_ARGS(opts) = {
		OPT_STRING("transport", 'r', "STR", (char *)&cfg.transport, nvmf_tport),
		OPT_INCR("verbose",  'v', &cfg.verbose, "Increase logging verbosity"),
		OPT_END()
	};

	ret = argconfig_parse(argc, argv, desc, opts);
	if (ret)
		return ret;

	r = nvme_create_root(stderr, map_log_level(cfg.verbose, false));
	if (!r) {
		fprintf(stderr, "Failed to create topology root: %s\n",
			nvme_strerror(errno));
		return -errno;
	}
	ret = nvme_scan_topology(r, NULL, NULL);
	if (ret < 0) {
		fprintf(stderr, "Failed to scan topology: %s\n",
			 nvme_strerror(errno));
		nvme_free_tree(r);
		return ret;
	}

	nvme_for_each_host(r, h) {
		nvme_for_each_subsystem(h, s) {
			nvme_subsystem_for_each_ctrl(s, c) {
				if (cfg.transport &&
				    strcmp(cfg.transport,
					   nvme_ctrl_get_transport(c)))
					continue;
				else if (!strcmp(nvme_ctrl_get_transport(c),
						 "pcie"))
					continue;
				if (nvme_disconnect_ctrl(c))
					fprintf(stderr,
						"failed to disconnect %s\n",
						nvme_ctrl_get_name(c));
			}
		}
	}
	nvme_free_tree(r);

	return 0;
}

int nvmf_config(const char *desc, int argc, char **argv)
{
	char *subsysnqn = NULL;
	char *transport = NULL, *traddr = NULL;
	char *trsvcid = NULL, *hostnqn = NULL, *hostid = NULL;
	char *hnqn = NULL, *hid = NULL;
	char *hostkey = NULL, *ctrlkey = NULL;
	char *config_file = PATH_NVMF_CONFIG;
	unsigned int verbose = 0;
	nvme_root_t r;
	int ret;
	struct nvme_fabrics_config cfg;
	bool scan_tree = false, modify_config = false, update_config = false;

	OPT_ARGS(opts) = {
		NVMF_OPTS(cfg),
		OPT_STRING("dhchap-ctrl-secret", 'C', "STR", &ctrlkey,  nvmf_ctrlkey),
		OPT_STRING("config", 'J', "FILE", &config_file, nvmf_config_file),
		OPT_INCR("verbose", 'v', &verbose, "Increase logging verbosity"),
		OPT_FLAG("scan", 'R', &scan_tree, "Scan current NVMeoF topology"),
		OPT_FLAG("modify", 'M', &modify_config, "Modify JSON configuration file"),
		OPT_FLAG("dump", 'O', &dump_config, "Dump JSON configuration to stdout"),
		OPT_FLAG("update", 'U', &update_config, "Update JSON configuration file"),
		OPT_END()
	};

	nvmf_default_config(&cfg);

	ret = argconfig_parse(argc, argv, desc, opts);
	if (ret)
		return ret;

	if (!strcmp(config_file, "none"))
		config_file = NULL;

	r = nvme_create_root(stderr, map_log_level(verbose, quiet));
	if (!r) {
		fprintf(stderr, "Failed to create topology root: %s\n",
			nvme_strerror(errno));
		return -errno;
	}
	if (scan_tree) {
		ret = nvme_scan_topology(r, NULL, NULL);
		if (ret < 0) {
			fprintf(stderr, "Failed to scan topology: %s\n",
				nvme_strerror(errno));
			nvme_free_tree(r);
			return ret;
		}
	}
	nvme_read_config(r, config_file);

	if (modify_config) {
		nvme_host_t h;
		nvme_subsystem_t s;
		nvme_ctrl_t c;

		if (!subsysnqn) {
			fprintf(stderr,
				"required argument [--nqn | -n] needed with --modify\n");
			return -EINVAL;
		}

		if (!transport) {
			fprintf(stderr,
				"required argument [--transport | -t] needed with --modify\n");
			return EINVAL;
		}

		if (!hostnqn)
			hostnqn = hnqn = nvmf_hostnqn_from_file();
		if (!hostid && hnqn)
			hostid = hid = nvmf_hostid_from_file();
		h = nvme_lookup_host(r, hostnqn, hostid);
		if (!h) {
			fprintf(stderr, "Failed to lookup host '%s': %s\n",
				hostnqn, nvme_strerror(errno));
			goto out;
		}
		if (hostkey)
			nvme_host_set_dhchap_key(h, hostkey);
		s = nvme_lookup_subsystem(h, NULL, subsysnqn);
		if (!s) {
			fprintf(stderr, "Failed to lookup subsystem '%s': %s\n",
				subsysnqn, nvme_strerror(errno));
			goto out;
		}
		c = nvme_lookup_ctrl(s, transport, traddr,
				     cfg.host_traddr, cfg.host_iface,
				     trsvcid, NULL);
		if (!c) {
			fprintf(stderr, "Failed to lookup controller: %s\n",
				nvme_strerror(errno));
			goto out;
		}
		nvmf_update_config(c, &cfg);
		if (ctrlkey)
			nvme_ctrl_set_dhchap_key(c, ctrlkey);
	}

	if (update_config)
		nvme_update_config(r);

	if (dump_config)
		nvme_dump_config(r);

out:
	if (hid)
		free(hid);
	if (hnqn)
		free(hnqn);
	nvme_free_tree(r);
	return errno;
}

static void dim_operation(nvme_ctrl_t c, enum nvmf_dim_tas tas, const char * name)
{
	static const char * const task[] = {
		[NVMF_DIM_TAS_REGISTER]   = "register",
		[NVMF_DIM_TAS_DEREGISTER] = "deregister",
	};
	const char * t;
	int status;
	__u32 result;

	t = (tas > NVMF_DIM_TAS_DEREGISTER || !task[tas]) ? "reserved" : task[tas];
	status = nvmf_register_ctrl(c, tas, &result);
	if (status == NVME_SC_SUCCESS) {
		printf("%s DIM %s command success\n", name, t);
	} else if (status < NVME_SC_SUCCESS) {
		fprintf(stderr, "%s DIM %s command error. Status:0x%04x - %s\n",
			name, t, status, nvme_status_to_string(status, false));
	} else {
		fprintf(stderr, "%s DIM %s command error. Result:0x%04x, Status:0x%04x - %s\n",
			name, t, result, status, nvme_status_to_string(status, false));
	}
}

int nvmf_dim(const char *desc, int argc, char **argv)
{
	enum nvmf_dim_tas tas;
	nvme_root_t r;
	nvme_ctrl_t c;
	char *p;
	int ret;

	struct {
		char *nqn;
		char *device;
		char *tas;
		unsigned int verbose;
	} cfg = { 0 };

	OPT_ARGS(opts) = {
		OPT_STRING("nqn",    'n', "NAME", &cfg.nqn,    "Comma-separated list of DC nqn"),
		OPT_STRING("device", 'd', "DEV",  &cfg.device, "Comma-separated list of DC nvme device handle."),
		OPT_STRING("task",   't', "TASK", &cfg.tas,    "[register|deregister]"),
		OPT_INCR("verbose",  'v', &cfg.verbose, "Increase logging verbosity"),
		OPT_END()
	};

	ret = argconfig_parse(argc, argv, desc, opts);
	if (ret)
		return ret;

	if (!cfg.nqn && !cfg.device) {
		fprintf(stderr,
			"Neither device name [--device | -d] nor NQN [--nqn | -n] provided\n");
		return EINVAL;
	}

	if (!cfg.tas) {
		fprintf(stderr,
			"Task [--task | -t] must be specified\n");
		return EINVAL;
	}

	/* Allow partial name (e.g. "reg" for "register" */
	if (strstarts("register", cfg.tas)) {
		tas = NVMF_DIM_TAS_REGISTER;
	} else if (strstarts("deregister", cfg.tas)) {
		tas = NVMF_DIM_TAS_DEREGISTER;
	} else {
		fprintf(stderr, "Invalid --task: %s\n", cfg.tas);
		return EINVAL;
	}

	r = nvme_create_root(stderr, map_log_level(cfg.verbose, false));
	if (!r) {
		fprintf(stderr, "Failed to create topology root: %s\n",
			nvme_strerror(errno));
		return -errno;
	}
	ret = nvme_scan_topology(r, NULL, NULL);
	if (ret < 0) {
		fprintf(stderr, "Failed to scan topology: %s\n",
			 nvme_strerror(errno));
		nvme_free_tree(r);
		return ret;
	}

	if (cfg.nqn) {
		nvme_host_t h;
		nvme_subsystem_t s;
		char *n = cfg.nqn;

		while ((p = strsep(&n, ",")) != NULL) {
			if (!strlen(p))
				continue;
			nvme_for_each_host(r, h) {
				nvme_for_each_subsystem(h, s) {
					if (strcmp(nvme_subsystem_get_nqn(s), p))
						continue;
					nvme_subsystem_for_each_ctrl(s, c) {
						dim_operation(c, tas, p);
					}
				}
			}
		}
	}

	if (cfg.device) {
		char *d = cfg.device;

		while ((p = strsep(&d, ",")) != NULL) {
			if (!strncmp(p, "/dev/", 5))
				p += 5;
			c = nvme_scan_ctrl(r, p);
			if (!c) {
				fprintf(stderr,
					"Did not find device %s: %s\n",
					p, nvme_strerror(errno));
				nvme_free_tree(r);
				return errno;
			}
			dim_operation(c, tas, p);
		}
	}

	nvme_free_tree(r);

	return 0;
}
070701018A4035000081A4000003E80000006400000001646E2B2D00002254000000000000004A00000000000000000000001500000000nvme-cli/meson.build  # SPDX-License-Identifier: GPL-2.0-or-later
################################################################################
project(
    'nvme-cli', ['c'],
    meson_version: '>= 0.50.0',
    license: 'GPL-2.0-only',
    version: '2.4',
    default_options: [
      'c_std=gnu99',
      'buildtype=debug',
      'prefix=/usr/local',
      'warning_level=1',
      'sysconfdir=etc',
    ]
)

################################################################################
cc = meson.get_compiler('c')

prefixdir  = get_option('prefix')
datadir    = join_paths(prefixdir, get_option('datadir'))
mandir     = join_paths(prefixdir, get_option('mandir'))
sbindir    = join_paths(prefixdir, get_option('sbindir'))
sysconfdir = join_paths(prefixdir, get_option('sysconfdir'))

udevrulesdir   = join_paths(prefixdir, get_option('udevrulesdir'))
dracutrulesdir = join_paths(prefixdir, get_option('dracutrulesdir'))
systemddir     = join_paths(prefixdir, get_option('systemddir'))

###############################################################################
conf = configuration_data()
requires = ''

version_tag = get_option('version-tag')
if version_tag != ''
        conf.set('GIT_VERSION', '"@0@"'.format(version_tag))
else
    r = run_command('meson-vcs-tag.sh',
                    meson.current_source_dir(),
                    meson.project_version(),
                    check: true)
    conf.set('GIT_VERSION', '"@0@"'.format(r.stdout().strip()))
endif

conf.set('SYSCONFDIR', '"@0@"'.format(sysconfdir))

# Check for libnvme availability
libnvme_dep = dependency('libnvme', version: '>=1.4', required: true,
                         fallback : ['libnvme', 'libnvme_dep'])
libnvme_mi_dep = dependency('libnvme-mi', required: true,
                         fallback : ['libnvme', 'libnvme_mi_dep'])

# Check for libjson-c availability
if get_option('json-c').disabled()
    json_c_dep = dependency('', required: false)
else
    json_c_dep = dependency('json-c', required: true, version: '>=0.13',
                            fallback : ['json-c', 'json_c_dep'])
    if json_c_dep.version().version_compare('>=0.14')
        conf.set('CONFIG_JSONC_14', true, description: 'Is json-c at least 0.14?')
        requires = 'Requires: json-c >= 0.14'
    else
        requires = 'Requires: json-c >= 0.13'
    endif
endif
conf.set('CONFIG_JSONC', json_c_dep.found(), description: 'Is json-c available?')

# Check for libhugetlbfs availability (optional)
if cc.has_header('hugetlbfs.h')
  libhugetlbfs_dep = cc.find_library('hugetlbfs',
                                     required : false)
  have_libhugetlbfs = libhugetlbfs_dep.found()
else
  libhugetlbfs_dep = []
  have_libhugetlbfs = false
endif
conf.set('CONFIG_LIBHUGETLBFS', have_libhugetlbfs, description: 'Is libhugetlbfs available?')

# Set the nvme-cli version
conf.set('NVME_VERSION', '"' + meson.project_version() + '"')

conf.set10('DEFAULT_PDC_ENABLED', get_option('pdc-enabled'))

# local (cross-compilable) implementations of ccan configure steps
conf.set10(
    'HAVE_BUILTIN_TYPES_COMPATIBLE_P',
    cc.compiles(
        '''int main(void) {
               return __builtin_types_compatible_p(int, long);
           }
        ''',
        name: '__builtin_type_compatible_p'
    ),
    description: 'Is __builtin_types_compatible_p available?'
)
conf.set10(
    'HAVE_TYPEOF',
    cc.compiles(
        '''int main(void) {
                int a = 1;
                typeof(a) b;
                b = a;
           }
        ''',
        name: 'typeof'
    ),
    description: 'Is typeof available?'
)
conf.set10(
    'HAVE_BYTESWAP_H',
    cc.compiles(
        '''#include <byteswap.h>''',
        name: 'byteswap.h'
    ),
    description: 'Is byteswap.h include-able?'
)
conf.set10(
    'HAVE_BSWAP_64',
    cc.links(
        '''#include <byteswap.h>
            int main(void) {
                return bswap_64(0);
            }
        ''',
        name: 'bswap64'
    ),
    description: 'Is bswap_64 available?'
)
conf.set10(
    'HAVE_LITTLE_ENDIAN',
    host_machine.endian() == 'little',
    description: 'Building for little-endian'
)
conf.set10(
    'HAVE_BIG_ENDIAN',
    host_machine.endian() == 'big',
    description: 'Building for big-endian'
)
conf.set10(
    'HAVE_ISBLANK',
    cc.links(
        '''#include <ctype.h>
           int main(int argc, char **argv) {
               return isblank(argv[0][0]);
           }
        ''',
        name: 'isblank'
    ),
    description: 'Is isblank() available?'
)
conf.set10(
    'HAVE_SYS_RANDOM',
    cc.compiles(
        '''#include <sys/random.h>''',
        name: 'sys/random.h'
    ),
    description: 'Is sys/random.h(getrandom) include-able?'
)

configure_file(
    output: 'config.h',
    configuration: conf
)

################################################################################
libtype = get_option('default_library')
if libtype == 'static'
  requires = ''
endif

substs = configuration_data()
substs.set('NAME',    meson.project_name())
substs.set('VERSION', meson.project_version())
substs.set('LICENSE', meson.project_license()[0])
substs.set('UDEVRULESDIR', udevrulesdir)
substs.set('DRACUTRILESDIR', dracutrulesdir)
substs.set('REQUIRES', requires)
substs.set('DATADIR', datadir)
substs.set('MANDIR', mandir)
substs.set('SBINDIR', sbindir)
substs.set('SYSCONFDIR', sysconfdir)
substs.set('SYSTEMDDIR', systemddir)
substs.set('SYSTEMCTL', get_option('systemctl'))

configure_file(
  input:         'nvme.spec.in',
  output:        'nvme.spec',
  configuration: substs,
)

disc = configure_file(
  input: 'etc/discovery.conf.in',
  output: 'discovery.conf',
  configuration: substs,
)

dracut_files = [
  '70-nvmf-autoconnect.conf',
]

foreach file : dracut_files
  configure_file(
    input: 'nvmf-autoconnect/dracut-conf/' + file + '.in',
    output: file,
    configuration: substs,
  )
endforeach

systemd_files = [
  'nvmefc-boot-connections.service',
  'nvmf-autoconnect.service',
  'nvmf-connect-nbft.service',
  'nvmf-connect.target',
  'nvmf-connect@.service',
]

foreach file : systemd_files
  configure_file(
    input: 'nvmf-autoconnect/systemd/' + file + '.in',
    output: file,
    configuration: substs,
  )
endforeach

udev_files = [
  '70-nvmf-autoconnect.rules',
  '71-nvmf-iopolicy-netapp.rules',
  '65-persistent-net-nbft.rules',
]

foreach file : udev_files
  configure_file(
    input: 'nvmf-autoconnect/udev-rules/' + file + '.in',
    output: file,
    configuration: substs,
  )
endforeach

################################################################################
add_project_arguments(['-fomit-frame-pointer', '-D_GNU_SOURCE',
                       '-include', 'config.h'], language : 'c')
incdir = include_directories(['ccan'])

################################################################################
sources = [
  'nbft.c',
  'fabrics.c',
  'nvme.c',
  'nvme-models.c',
  'nvme-print.c',
  'nvme-rpmb.c',
  'nvme-wrap.c',
  'plugin.c',
  'libnvme-wrap.c',
]
if json_c_dep.found()
    sources += [
        'nvme-print-json.c',
    ]
endif

subdir('ccan')
subdir('plugins')
subdir('unit')
if get_option('nvme-tests')
    subdir('tests')
endif
subdir('util')
subdir('Documentation')

executable(
  'nvme',
  sources,
  dependencies: [ libnvme_dep, libnvme_mi_dep, json_c_dep,
                  libhugetlbfs_dep ],
  link_args: '-ldl',
  include_directories: incdir,
  install: true,
  install_dir: sbindir
)

################################################################################
install_data('completions/bash-nvme-completion.sh',
             rename: 'nvme',
             install_dir: datadir + '/bash-completion/completions')
install_data('completions/_nvme',
             install_dir: datadir + '/zsh/site-functions')

foreach file : dracut_files
  install_data(meson.current_build_dir() + '/' + file,
               install_dir: dracutrulesdir)
endforeach

foreach file : systemd_files
  install_data(meson.current_build_dir() + '/' + file,
               install_dir: systemddir)
endforeach

foreach file : udev_files
  install_data(meson.current_build_dir() + '/' + file,
               install_dir: udevrulesdir)
endforeach

install_data(disc,
             install_dir: join_paths(sysconfdir, 'nvme'))

################################################################################
if meson.version().version_compare('>=0.53.0')
    summary_dict = {
        'prefixdir':         prefixdir,
        'sysconfdir':        sysconfdir,
        'sbindir':           sbindir,
        'datadir':           datadir,
        'mandir':            mandir,
        'udevrulesdir':      udevrulesdir,
        'dracutrulesdir':    dracutrulesdir,
        'systemddir':        systemddir,
        'build location':    meson.current_build_dir(),
    }
    summary(summary_dict)
endif
070701018A4036000081A4000003E80000006400000001646E2B2D000394D3000000000000004A00000000000000000000001000000000nvme-cli/nvme.c   // SPDX-License-Identifier: GPL-2.0-or-later
/*
 * nvme.c -- NVM-Express command line utility.
 *
 * Copyright (c) 2014-2015, Intel Corporation.
 *
 * Written by Keith Busch <kbusch@kernel.org>
 *
 * 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 Street, Fifth Floor, Boston, MA  02110-1301, USA.
 */

/**
 * This program uses NVMe IOCTLs to run native nvme commands to a device.
 */
#include "config.h"
#include "nvme/tree.h"
#include "nvme/types.h"
#include <errno.h>
#include <getopt.h>
#include <fcntl.h>
#include <inttypes.h>
#include <locale.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <math.h>
#include <dirent.h>
#include <libgen.h>
#include <signal.h>

#ifdef CONFIG_LIBHUGETLBFS
#include <hugetlbfs.h>
#endif

#include <linux/fs.h>

#include <sys/mman.h>
#include <sys/types.h>
#include <sys/stat.h>

#if HAVE_SYS_RANDOM
	#include <sys/random.h>
#endif

#include "common.h"
#include "nvme.h"
#include "libnvme.h"
#include "nvme-print.h"
#include "plugin.h"
#include "util/base64.h"
#include "util/crc32.h"
#include "nvme-wrap.h"

#include "util/argconfig.h"
#include "util/suffix.h"
#include "fabrics.h"

#define CREATE_CMD
#include "nvme-builtin.h"

struct feat_cfg {
	enum nvme_features_id feature_id;
	__u32 namespace_id;
	enum nvme_get_features_sel sel;
	__u32 cdw11;
	__u32 cdw12;
	__u8  uuid_index;
	__u32 data_len;
	bool  raw_binary;
	bool  human_readable;
};

static const char nvme_version_string[] = NVME_VERSION;

static struct plugin builtin = {
	.commands = commands,
	.name = NULL,
	.desc = NULL,
	.next = NULL,
	.tail = &builtin,
};

static struct program nvme = {
	.name = "nvme",
	.version = nvme_version_string,
	.usage = "<command> [<device>] [<args>]",
	.desc = "The '<device>' may be either an NVMe character "\
		"device (ex: /dev/nvme0), an nvme block device "\
		"(ex: /dev/nvme0n1), or a mctp address in the form "\
		"mctp:<net>,<eid>[:ctrl-id]",
	.extensions = &builtin,
};

const char *output_format = "Output format: normal|json|binary";
static const char *output_format_no_binary = "Output format: normal|json";

static const char *app_tag = "app tag for end-to-end PI";
static const char *app_tag_mask = "app tag mask for end-to-end PI";
static const char *block_count = "number of blocks (zeroes based) on device to access";
static const char *crkey = "current reservation key";
static const char *buf_len = "buffer len (if) data is sent or received";
static const char *domainid = "Domain Identifier";
static const char *doper = "directive operation";
static const char *dry = "show command instead of sending";
static const char *dspec_w_dtype = "directive specification associated with directive type";
static const char *dtype = "directive type";
static const char *force_unit_access = "force device to commit data before command completes";
static const char *human_readable_directive = "show directive in readable format";
static const char *human_readable_identify = "show identify in readable format";
static const char *human_readable_info = "show info in readable format";
static const char *human_readable_log = "show log in readable format";
static const char *iekey = "ignore existing res. key";
static const char *latency = "output latency statistics";
static const char *lba_format_index = "The index into the LBA Format list "\
	"identifying the LBA Format capabilities that are to be returned";
static const char *limited_retry = "limit media access attempts";
static const char *lsp = "log specific field";
static const char *mos = "management operation specific";
static const char *mo = "management operation";
static const char *namespace_desired = "desired namespace";
static const char *namespace_id_desired = "identifier of desired namespace";
static const char *namespace_id_optional = "optional namespace attached to controller";
static const char *nssf = "NVMe Security Specific Field";
static const char *prinfo = "PI and check field";
static const char *rae = "Retain an Asynchronous Event";
static const char *raw_directive = "show directive in binary format";
static const char *raw_dump = "dump output in binary format";
static const char *raw_identify = "show identify in binary format";
static const char *raw_log = "show log in binary format";
static const char *raw_output = "output in binary format";
static const char *ref_tag = "reference tag for end-to-end PI";
static const char *raw_use = "use binary output";
static const char *rtype = "reservation type";
static const char *secp = "security protocol (cf. SPC-4)";
static const char *spsp = "security-protocol-specific (cf. SPC-4)";
static const char *start_block = "64-bit LBA of first block to access";
static const char *storage_tag = "storage tag for end-to-end PI";
static const char *timeout = "timeout value, in milliseconds";
static const char *uuid_index = "UUID index";
static const char *uuid_index_specify = "specify uuid index";
static const char *verbose = "Increase output verbosity";
static const char dash[51] = {[0 ... 49] = '=', '\0'};
static const char space[51] = {[0 ... 49] = ' ', '\0'};

static void *mmap_registers(nvme_root_t r, struct nvme_dev *dev);

static void *__nvme_alloc(size_t len, bool *huge) {
	void *p;

	if (!posix_memalign(&p, getpagesize(), len)) {
		*huge = false;
		memset(p, 0, len);
		return p;
	}
	return NULL;
}

#define HUGE_MIN 0x80000

#ifdef CONFIG_LIBHUGETLBFS
void nvme_free(void *p, bool huge)
{
	if (huge) {
		if (p)
			free_hugepage_region(p);
	}
	else
		free(p);
}

void *nvme_alloc(size_t len, bool *huge)
{
	void *p;

	if (len < HUGE_MIN)
		return __nvme_alloc(len, huge);

	p = get_hugepage_region(len, GHR_DEFAULT);
	if (!p)
		return __nvme_alloc(len, huge);

	*huge = true;
	return p;
}
#else
void nvme_free(void *p, bool huge)
{
	free(p);
}

void *nvme_alloc(size_t len, bool *huge)
{
	return __nvme_alloc(len, huge);
}
#endif

const char *nvme_strerror(int errnum)
{
	if (errnum >= ENVME_CONNECT_RESOLVE)
		return nvme_errno_to_string(errnum);
	return strerror(errnum);
}

int map_log_level(int verbose, bool quiet)
{
	int log_level;

	/*
	 * LOG_NOTICE is unsued thus the user has to provide two 'v' for getting
	 * any feedback at all. Thus skip this level
	 */
	verbose++;

	switch (verbose) {
	case 0:
		log_level = LOG_WARNING;
		break;
	case 1:
		log_level = LOG_NOTICE;
		break;
	case 2:
		log_level = LOG_INFO;
		break;
	default:
		log_level = LOG_DEBUG;
		break;
	}
	if (quiet)
		log_level = LOG_ERR;

	return log_level;
}

static ssize_t getrandom_bytes(void *buf, size_t buflen)
{
#if HAVE_SYS_RANDOM
	return getrandom(buf, buflen, GRND_NONBLOCK);
#else
	ssize_t result;
	int fd, err = 0;

	fd = open("/dev/urandom", O_RDONLY);
	if (fd < 0)
		return fd;
	result = read(fd, buf, buflen);
	if (result < 0)
		err = errno;
	close(fd);
	errno = err;
	return result;
#endif
}

static bool is_chardev(struct nvme_dev *dev)
{
	return S_ISCHR(dev->direct.stat.st_mode);
}

static bool is_blkdev(struct nvme_dev *dev)
{
	return S_ISBLK(dev->direct.stat.st_mode);
}

static int open_dev_direct(struct nvme_dev **devp, char *devstr, int flags)
{
	struct nvme_dev *dev;
	int err;

	dev = calloc(1, sizeof(*dev));
	if (!dev)
		return -1;

	dev->type = NVME_DEV_DIRECT;
	dev->name = basename(devstr);
	err = open(devstr, flags);
	if (err < 0) {
		perror(devstr);
		goto err_free;
	}
	dev->direct.fd = err;

	err = fstat(dev_fd(dev), &dev->direct.stat);
	if (err < 0) {
		perror(devstr);
		goto err_close;
	}
	if (!is_chardev(dev) && !is_blkdev(dev)) {
		fprintf(stderr, "%s is not a block or character device\n",
			devstr);
		err = -ENODEV;
		goto err_close;
	}
	*devp = dev;
	return 0;

err_close:
	close(dev_fd(dev));
err_free:
	free(dev);
	return err;
}

static int parse_mi_dev(char *dev, unsigned int *net, uint8_t *eid,
			unsigned int *ctrl)
{
	int rc;

	/* <net>,<eid>:<ctrl-id> form */
	rc = sscanf(dev, "mctp:%u,%hhu:%u", net, eid, ctrl);
	if (rc == 3)
		return 0;

	/* <net>,<eid> form, implicit ctrl-id = 0 */
	*ctrl = 0;
	rc = sscanf(dev, "mctp:%u,%hhu", net, eid);
	if (rc == 2)
		return 0;

	return -1;
}

static int open_dev_mi_mctp(struct nvme_dev **devp, char *devstr)
{
	unsigned int net, ctrl_id;
	struct nvme_dev *dev;
	unsigned char eid;
	int rc;

	rc = parse_mi_dev(devstr, &net, &eid, &ctrl_id);
	if (rc) {
		fprintf(stderr, "invalid device specifier '%s'\n", devstr);
		return rc;
	}

	dev = calloc(1, sizeof(*dev));
	if (!dev)
		return -1;

	dev->type = NVME_DEV_MI;
	dev->name = devstr;

	/* todo: verbose argument */
	dev->mi.root = nvme_mi_create_root(stderr, LOG_WARNING);
	if (!dev->mi.root)
		goto err_free;

	dev->mi.ep = nvme_mi_open_mctp(dev->mi.root, net, eid);
	if (!dev->mi.ep)
		goto err_free_root;

	dev->mi.ctrl = nvme_mi_init_ctrl(dev->mi.ep, ctrl_id);
	if (!dev->mi.ctrl)
		goto err_close_ep;

	*devp = dev;
	return 0;

err_close_ep:
	nvme_mi_close(dev->mi.ep);
err_free_root:
	nvme_mi_free_root(dev->mi.root);
err_free:
	free(dev);
	return -1;
}

static int check_arg_dev(int argc, char **argv)
{
	if (optind >= argc) {
		errno = EINVAL;
		perror(argv[0]);
		return -EINVAL;
	}
	return 0;
}

static int get_dev(struct nvme_dev **dev, int argc, char **argv, int flags)
{
	char *devname;
	int ret;

	ret = check_arg_dev(argc, argv);
	if (ret)
		return ret;

	devname = argv[optind];

	if (!strncmp(devname, "mctp:", strlen("mctp:")))
		ret = open_dev_mi_mctp(dev, devname);
	else
		ret = open_dev_direct(dev, devname, flags);

	return ret;
}

int parse_and_open(struct nvme_dev **dev, int argc, char **argv,
		   const char *desc,
		   struct argconfig_commandline_options *opts)
{
	int ret;

	ret = argconfig_parse(argc, argv, desc, opts);
	if (ret)
		return ret;

	ret = get_dev(dev, argc, argv, O_RDONLY);
	if (ret < 0)
		argconfig_print_help(desc, opts);

	return ret;
}

int open_exclusive(struct nvme_dev **dev, int argc, char **argv,
		   int ignore_exclusive)
{
	int flags = O_RDONLY;

	if (!ignore_exclusive)
		flags |= O_EXCL;

	return get_dev(dev, argc, argv, flags);
}

enum nvme_print_flags validate_output_format(const char *format)
{
	if (!format)
		return -EINVAL;
	if (!strcmp(format, "normal"))
		return NORMAL;
	if (!strcmp(format, "json"))
		return JSON;
	if (!strcmp(format, "binary"))
		return BINARY;
	return -EINVAL;
}

void dev_close(struct nvme_dev *dev)
{
	switch (dev->type) {
	case NVME_DEV_DIRECT:
		close(dev_fd(dev));
		break;
	case NVME_DEV_MI:
		nvme_mi_close(dev->mi.ep);
		nvme_mi_free_root(dev->mi.root);
		break;
	}
	free(dev);
}

static int get_smart_log(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	struct nvme_smart_log smart_log;
	const char *desc = "Retrieve SMART log for the given device "\
			"(or optionally a namespace) in either decoded format "\
			"(default) or binary.";
	const char *namespace = "(optional) desired namespace";
	enum nvme_print_flags flags;
	struct nvme_dev *dev;
	int err = -1;

	struct config {
		__u32	namespace_id;
		char	*output_format;
		bool	raw_binary;
		bool	human_readable;
	};

	struct config cfg = {
		.namespace_id	= NVME_NSID_ALL,
		.output_format	= "normal",
		.raw_binary	= false,
		.human_readable	= false,
	};


	OPT_ARGS(opts) = {
		OPT_UINT("namespace-id",   'n', &cfg.namespace_id,   namespace),
		OPT_FMT("output-format",   'o', &cfg.output_format,  output_format),
		OPT_FLAG("raw-binary",     'b', &cfg.raw_binary,     raw_output),
		OPT_FLAG("human-readable", 'H', &cfg.human_readable, human_readable_info),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		goto ret;

	err = flags = validate_output_format(cfg.output_format);
	if (flags < 0)
		goto close_fd;
	if (cfg.raw_binary)
		flags = BINARY;
	if (cfg.human_readable)
		flags |= VERBOSE;

	err = nvme_cli_get_log_smart(dev, cfg.namespace_id, false,
				 &smart_log);
	if (!err)
		nvme_show_smart_log(&smart_log, cfg.namespace_id,
				    dev->name, flags);
	else if (err > 0)
		nvme_show_status(err);
	else
		fprintf(stderr, "smart log: %s\n", nvme_strerror(errno));
close_fd:
	dev_close(dev);
ret:
	return err;
}

static int get_ana_log(int argc, char **argv, struct command *cmd,
		struct plugin *plugin)
{
	const char *desc = "Retrieve ANA log for the given device in " \
			    "decoded format (default), json or binary.";
	const char *groups = "Return ANA groups only.";
	void *ana_log;
	size_t ana_log_len;
	struct nvme_id_ctrl ctrl;
	enum nvme_print_flags flags;
	enum nvme_log_ana_lsp lsp;
	struct nvme_dev *dev;
	int err = -1;

	struct config {
		bool	groups;
		char	*output_format;
	};

	struct config cfg = {
		.groups = false,
		.output_format = "normal",
	};

	OPT_ARGS(opts) = {
		OPT_FLAG("groups", 'g', &cfg.groups, groups),
		OPT_FMT("output-format", 'o', &cfg.output_format, output_format),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		goto ret;

	err = flags = validate_output_format(cfg.output_format);
	if (flags < 0)
		goto close_fd;

	err = nvme_cli_identify_ctrl(dev, &ctrl);
	if (err) {
		fprintf(stderr, "ERROR : nvme_identify_ctrl() failed: %s\n",
			nvme_strerror(errno));
		goto close_fd;
	}

	ana_log_len = sizeof(struct nvme_ana_log) +
		le32_to_cpu(ctrl.nanagrpid) * sizeof(struct nvme_ana_group_desc);
	if (!(ctrl.anacap & (1 << 6)))
		ana_log_len += le32_to_cpu(ctrl.mnan) * sizeof(__le32);

	ana_log = malloc(ana_log_len);
	if (!ana_log) {
		err = -ENOMEM;
		goto close_fd;
	}

	lsp = cfg.groups ? NVME_LOG_ANA_LSP_RGO_GROUPS_ONLY :
		NVME_LOG_ANA_LSP_RGO_NAMESPACES;

	err = nvme_cli_get_log_ana(dev, lsp, true, 0, ana_log_len, ana_log);
	if (!err) {
		nvme_show_ana_log(ana_log, dev->name, flags, ana_log_len);
	} else if (err > 0)
		nvme_show_status(err);
	else
		fprintf(stderr, "ana-log: %s", nvme_strerror(errno));
	free(ana_log);
close_fd:
	dev_close(dev);
ret:
	return err;
}

static int parse_telemetry_da(struct nvme_dev *dev,
			      enum nvme_telemetry_da da,
			      struct nvme_telemetry_log *telem,
			      size_t *size)

{
	struct nvme_id_ctrl id_ctrl;

	switch (da) {
	case NVME_TELEMETRY_DA_1:
	case NVME_TELEMETRY_DA_2:
	case NVME_TELEMETRY_DA_3:
		/* dalb3 >= dalb2 >= dalb1 */
		*size = (le16_to_cpu(telem->dalb3) + 1) *
			NVME_LOG_TELEM_BLOCK_SIZE;
		break;
	case NVME_TELEMETRY_DA_4:
		if (nvme_cli_identify_ctrl(dev, &id_ctrl)) {
			perror("identify-ctrl");
			return -errno;
		}

		if (id_ctrl.lpa & 0x40) {
			*size = (le32_to_cpu(telem->dalb4) + 1) *
				NVME_LOG_TELEM_BLOCK_SIZE;
		} else {
			fprintf(stderr, "Data area 4 unsupported, bit 6 "
				"of Log Page Attributes not set\n");
			return -EINVAL;
		}
		break;
	default:
		fprintf(stderr, "Invalid data area parameter - %d\n", da);
		return -EINVAL;
	}

	if (*size == NVME_LOG_TELEM_BLOCK_SIZE) {
		fprintf(stderr, "ERROR: No telemetry data block\n");
		return -ENOENT;
	}
	return 0;
}

static int get_log_telemetry_ctrl(struct nvme_dev *dev, bool rae, size_t size,
				  struct nvme_telemetry_log **buf)
{
	struct nvme_telemetry_log *log;
	int err;

	log = calloc(1, size);
	if (!log)
		return -errno;

	err = nvme_cli_get_log_telemetry_ctrl(dev, rae, 0, size, log);
	if (err) {
		free(log);
		return -errno;
	}

	*buf = log;
	return 0;
}

static int get_log_telemetry_host(struct nvme_dev *dev, size_t size,
				  struct nvme_telemetry_log **buf)
{
	struct nvme_telemetry_log *log;
	int err;

	log = calloc(1, size);
	if (!log)
		return -errno;

	err = nvme_cli_get_log_telemetry_host(dev, 0, size, log);
	if (err) {
		free(log);
		return -errno;
	}

	*buf = log;
	return 0;
}

static int __create_telemetry_log_host(struct nvme_dev *dev,
				       enum nvme_telemetry_da da,
				       size_t *size,
				       struct nvme_telemetry_log **buf)
{
	struct nvme_telemetry_log log = { 0 };
	int err;

	err = nvme_cli_get_log_create_telemetry_host(dev, &log);
	if (err)
		return -errno;

	*size = NVME_LOG_TELEM_BLOCK_SIZE;
	return get_log_telemetry_host(dev, NVME_LOG_TELEM_BLOCK_SIZE, buf);
}

static int __get_telemetry_log_ctrl(struct nvme_dev *dev,
				    bool rae,
				    enum nvme_telemetry_da da,
				    size_t *size,
				    struct nvme_telemetry_log **buf)
{
	struct nvme_telemetry_log *log;
	int err;

	log = calloc(1, NVME_LOG_TELEM_BLOCK_SIZE);
	if (!log)
		return -errno;

	/*
	 * set rae = true so it won't clear the current telemetry log in
	 * controller
	 */
	err = nvme_cli_get_log_telemetry_ctrl(dev, true, 0,
					      NVME_LOG_TELEM_BLOCK_SIZE,
					      log);
	if (err)
		goto free;

	if (!log->ctrlavail) {
		if (!rae) {
			err = nvme_cli_get_log_telemetry_ctrl(dev, rae, 0,
							      NVME_LOG_TELEM_BLOCK_SIZE,
							      log);
			goto free;
		}

		*size = NVME_LOG_TELEM_BLOCK_SIZE;
		*buf = log;

		printf("Warning: Telemetry Controller-Initiated Data Not Available.\n");
		return 0;
	}

	err = parse_telemetry_da(dev, da, log, size);
	if (err)
		goto free;

	return get_log_telemetry_ctrl(dev, rae, *size, buf);

free:
	free(log);
	return err;
}

static int __get_telemetry_log_host(struct nvme_dev *dev,
				    enum nvme_telemetry_da da,
				    size_t *size,
				    struct nvme_telemetry_log **buf)
{
	struct nvme_telemetry_log log = { 0 };
	int err;

	err = nvme_cli_get_log_telemetry_host(dev, 0,
					      NVME_LOG_TELEM_BLOCK_SIZE,
					      &log);
	if (err)
		return  err;

	err = parse_telemetry_da(dev, da, &log, size);
	if (err)
		return err;

	return get_log_telemetry_host(dev, *size, buf);
}

static int get_telemetry_log(int argc, char **argv, struct command *cmd,
			     struct plugin *plugin)
{
	const char *desc = "Retrieve telemetry log and write to binary file";
	const char *fname = "File name to save raw binary, includes header";
	const char *hgen = "Have the host tell the controller to generate the report";
	const char *cgen = "Gather report generated by the controller.";
	const char *dgen = "Pick which telemetry data area to report. Default is 3 to fetch areas 1-3. Valid options are 1, 2, 3, 4.";
	struct nvme_telemetry_log *log = NULL;
	int err = 0, output;
	size_t total_size;
	__u8 *data_ptr = NULL;
	int data_written = 0, data_remaining = 0;
	struct nvme_dev *dev;

	struct config {
		char	*file_name;
		__u32	host_gen;
		bool	ctrl_init;
		int	data_area;
		bool	rae;
	};
	struct config cfg = {
		.file_name	= NULL,
		.host_gen	= 1,
		.ctrl_init	= false,
		.data_area	= 3,
		.rae		= true,
	};

	OPT_ARGS(opts) = {
		OPT_FILE("output-file",     'o', &cfg.file_name, fname),
		OPT_UINT("host-generate",   'g', &cfg.host_gen,  hgen),
		OPT_FLAG("controller-init", 'c', &cfg.ctrl_init, cgen),
		OPT_UINT("data-area",       'd', &cfg.data_area, dgen),
		OPT_FLAG("rae",             'r', &cfg.rae, rae),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		goto ret;

	if (!cfg.file_name) {
		fprintf(stderr, "Please provide an output file!\n");
		err = -EINVAL;
		goto close_dev;
	}

	cfg.host_gen = !!cfg.host_gen;
	output = open(cfg.file_name, O_WRONLY | O_CREAT | O_TRUNC, 0666);
	if (output < 0) {
		fprintf(stderr, "Failed to open output file %s: %s!\n",
				cfg.file_name, strerror(errno));
		err = output;
		goto close_dev;
	}

	if (cfg.ctrl_init)
		err = __get_telemetry_log_ctrl(dev, cfg.rae, cfg.data_area,
					       &total_size, &log);
	else if (cfg.host_gen)
		err = __create_telemetry_log_host(dev, cfg.data_area,
						  &total_size, &log);
	else
		err = __get_telemetry_log_host(dev, cfg.data_area,
					       &total_size, &log);

	if (err < 0) {
		fprintf(stderr, "get-telemetry-log: %s\n",
			nvme_strerror(errno));
		goto close_output;
	} else if (err > 0) {
		nvme_show_status(err);
		fprintf(stderr, "Failed to acquire telemetry log %d!\n", err);
		goto close_output;
	}

	data_written = 0;
	data_remaining = total_size;
	data_ptr = (__u8 *)log;

	while (data_remaining) {
		data_written = write(output, data_ptr, data_remaining);
		if (data_written < 0) {
			data_remaining = data_written;
			break;
		} else if (data_written <= data_remaining) {
			data_remaining -= data_written;
			data_ptr += data_written;
		} else {
			/* Unexpected overwrite */
			fprintf(stderr, "Failure: Unexpected telemetry log overwrite - data_remaining = 0x%x, data_written = 0x%x\n",
					data_remaining, data_written);
			break;
		}
	}

	if (fsync(output) < 0) {
		fprintf(stderr, "ERROR : %s: : fsync : %s\n", __func__, strerror(errno));
		return -1;
	}

	free(log);

close_output:
	close(output);
close_dev:
	dev_close(dev);
ret:
	return err;
}

static int get_endurance_log(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	struct nvme_endurance_group_log endurance_log;
	const char *desc = "Retrieves endurance groups log page and prints the log.";
	const char *group_id = "The endurance group identifier";
	enum nvme_print_flags flags;
	struct nvme_dev *dev;
	int err;

	struct config {
		char	*output_format;
		__u16	group_id;
	};

	struct config cfg = {
		.output_format	= "normal",
		.group_id	= 0,
	};

	OPT_ARGS(opts) = {
		OPT_FMT("output-format", 'o', &cfg.output_format, output_format),
		OPT_SHRT("group-id",     'g', &cfg.group_id,      group_id),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		goto ret;

	err = flags = validate_output_format(cfg.output_format);
	if (flags < 0)
		goto close_dev;

	err = nvme_cli_get_log_endurance_group(dev, cfg.group_id,
					       &endurance_log);
	if (!err)
		nvme_show_endurance_log(&endurance_log, cfg.group_id,
					dev->name, flags);
	else if (err > 0)
		nvme_show_status(err);
	else
		fprintf(stderr, "endurance log: %s\n", nvme_strerror(errno));
close_dev:
	dev_close(dev);
ret:
	return err;
}

static int collect_effects_log(struct nvme_dev *dev, enum nvme_csi csi,
			       struct list_head *list, int flags)
{
	nvme_effects_log_node_t *node;
	int err;

	node = malloc(sizeof(nvme_effects_log_node_t));
	if (!node)
		return -ENOMEM;

	node->csi = csi;

	err = nvme_cli_get_log_cmd_effects(dev, csi, &node->effects);
	if (err) {
		free(node);
		return err;
	}
	list_add(list, &node->node);
	return 0;
}

static int get_effects_log(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	const char *desc = "Retrieve command effects log page and print the table.";
	const char *csi = "";
	struct list_head log_pages;
	nvme_effects_log_node_t *node;
	struct nvme_dev *dev;

	void *bar = NULL;

	int err = -1;
	enum nvme_print_flags flags;

	struct config {
		char	*output_format;
		bool	human_readable;
		bool	raw_binary;
		int	csi;
	};

	struct config cfg = {
		.output_format	= "normal",
		.human_readable	= false,
		.raw_binary	= false,
		.csi		= -1,
	};

	OPT_ARGS(opts) = {
		OPT_FMT("output-format",  'o', &cfg.output_format,  output_format),
		OPT_FLAG("human-readable",'H', &cfg.human_readable, human_readable_log),
		OPT_FLAG("raw-binary",    'b', &cfg.raw_binary,     raw_log),
		OPT_INT("csi",            'c', &cfg.csi,            csi),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		goto ret;

	err = flags = validate_output_format(cfg.output_format);
	if (flags < 0)
		goto close_dev;
	if (cfg.raw_binary)
		flags = BINARY;
	if (cfg.human_readable)
		flags |= VERBOSE;

	list_head_init(&log_pages);

	if (cfg.csi < 0) {
		nvme_root_t r;
		__u64 cap;

		r = nvme_scan(NULL);
		bar = mmap_registers(r, dev);
		nvme_free_tree(r);

		if (bar) {
			cap = mmio_read64(bar + NVME_REG_CAP);
			munmap(bar, getpagesize());
		} else {
			struct nvme_get_property_args args = {
				.args_size	= sizeof(args),
				.fd		= dev_fd(dev),
				.offset		= NVME_REG_CAP,
				.value		= &cap,
				.timeout	= NVME_DEFAULT_IOCTL_TIMEOUT,
			};
			err = nvme_get_property(&args);
			if (err)
				goto close_dev;
		}

		if (NVME_CAP_CSS(cap) & NVME_CAP_CSS_NVM)
			err = collect_effects_log(dev, NVME_CSI_NVM,
						  &log_pages, flags);

		if (!err && (NVME_CAP_CSS(cap) & NVME_CAP_CSS_CSI))
			err = collect_effects_log(dev, NVME_CSI_ZNS,
						  &log_pages, flags);
	} else {
		err = collect_effects_log(dev, cfg.csi, &log_pages, flags);
	}

	if (!err)
		nvme_print_effects_log_pages(&log_pages, flags);
	else if (err > 0)
		nvme_show_status(err);
	else
		perror("effects log page");

close_dev:
	while ((node = list_pop(&log_pages, nvme_effects_log_node_t, node))) {
		free(node);
	}

	dev_close(dev);
ret:
	return err;
}

static int get_supported_log_pages(int argc, char **argv, struct command *cmd,
	struct plugin *plugin)
{
	const char *desc = "Retrieve supported logs and print the table.";
	struct nvme_supported_log_pages supports;
	enum nvme_print_flags flags;
	struct nvme_dev *dev;
	int err = -1;

	struct config {
		char	*output_format;
		bool	verbose;
	};

	struct config cfg = {
		.output_format	= "normal",
		.verbose	= false
	};

	OPT_ARGS(opts) = {
		OPT_FMT("output-format",  'o', &cfg.output_format,  output_format),
		OPT_FLAG("verbose",       'v', &cfg.verbose,        verbose),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		goto ret;

	err = flags = validate_output_format(cfg.output_format);
	if (flags < 0)
		goto close_dev;

	if (cfg.verbose)
		flags |= VERBOSE;

	err = nvme_cli_get_log_supported_log_pages(dev, false, &supports);
	if (!err)
		nvme_show_supported_log(&supports, dev->name, flags);
	else if (err > 0)
		nvme_show_status(err);
	else
		fprintf(stderr, "supported log pages: %s",
			nvme_strerror(errno));

close_dev:
	dev_close(dev);
ret:
	return err;
}

static int get_error_log(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	const char *desc = "Retrieve specified number of "\
		"error log entries from a given device "\
		"in either decoded format (default) or binary.";
	const char *log_entries = "number of entries to retrieve";
	const char *raw = "dump in binary format";
	struct nvme_error_log_page *err_log;
	struct nvme_id_ctrl ctrl;
	enum nvme_print_flags flags;
	struct nvme_dev *dev;
	int err = -1;

	struct config {
		__u32	log_entries;
		char	*output_format;
		bool	raw_binary;
	};

	struct config cfg = {
		.log_entries	= 64,
		.output_format	= "normal",
		.raw_binary	= false,
	};

	OPT_ARGS(opts) = {
		OPT_UINT("log-entries",  'e', &cfg.log_entries,   log_entries),
		OPT_FMT("output-format", 'o', &cfg.output_format, output_format),
		OPT_FLAG("raw-binary",   'b', &cfg.raw_binary,    raw),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		goto ret;

	err = flags = validate_output_format(cfg.output_format);
	if (flags < 0)
		goto close_dev;
	if (cfg.raw_binary)
		flags = BINARY;

	if (!cfg.log_entries) {
		fprintf(stderr, "non-zero log-entries is required param\n");
		err = -1;
		goto close_dev;
	}

	err = nvme_cli_identify_ctrl(dev, &ctrl);
	if (err < 0) {
		perror("identify controller");
		goto close_dev;
	} else if (err) {
		fprintf(stderr, "could not identify controller\n");
		err = -1;
		goto close_dev;
	}

	cfg.log_entries = min(cfg.log_entries, ctrl.elpe + 1);
	err_log = calloc(cfg.log_entries, sizeof(struct nvme_error_log_page));
	if (!err_log) {
		err = -1;
		goto close_dev;
	}

	err = nvme_cli_get_log_error(dev, cfg.log_entries, false, err_log);
	if (!err)
		nvme_show_error_log(err_log, cfg.log_entries,
				    dev->name, flags);
	else if (err > 0)
		nvme_show_status(err);
	else
		perror("error log");
	free(err_log);
close_dev:
	dev_close(dev);
ret:
	return err;
}

static int get_fw_log(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	const char *desc = "Retrieve the firmware log for the "\
		"specified device in either decoded format (default) or binary.";
	struct nvme_firmware_slot fw_log;
	enum nvme_print_flags flags;
	struct nvme_dev *dev;
	int err;

	struct config {
		char	*output_format;
		bool	raw_binary;
	};

	struct config cfg = {
		.output_format	= "normal",
		.raw_binary	= false,
	};

	OPT_ARGS(opts) = {
		OPT_FMT("output-format", 'o', &cfg.output_format, output_format),
		OPT_FLAG("raw-binary",   'b', &cfg.raw_binary,    raw_use),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		goto ret;

	err = flags = validate_output_format(cfg.output_format);
	if (flags < 0)
		goto close_dev;
	if (cfg.raw_binary)
		flags = BINARY;

	err = nvme_cli_get_log_fw_slot(dev, false, &fw_log);
	if (!err)
		nvme_show_fw_log(&fw_log, dev->name, flags);
	else if (err > 0)
		nvme_show_status(err);
	else
		fprintf(stderr, "fw log: %s\n", nvme_strerror(errno));
close_dev:
	dev_close(dev);
ret:
	return err;
}

static int get_changed_ns_list_log(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	const char *desc = "Retrieve Changed Namespaces log for the given device "\
			"in either decoded format "\
			"(default) or binary.";
	struct nvme_ns_list changed_ns_list_log;
	enum nvme_print_flags flags;
	struct nvme_dev *dev;
	int err;

	struct config {
		char	*output_format;
		bool	raw_binary;
	};

	struct config cfg = {
		.output_format	= "normal",
		.raw_binary	= false,
	};

	OPT_ARGS(opts) = {
		OPT_FMT("output-format", 'o', &cfg.output_format, output_format),
		OPT_FLAG("raw-binary",   'b', &cfg.raw_binary,    raw_output),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		goto ret;

	err = flags = validate_output_format(cfg.output_format);
	if (flags < 0)
		goto close_dev;
	if (cfg.raw_binary)
		flags = BINARY;

	err = nvme_cli_get_log_changed_ns_list(dev, true,
					       &changed_ns_list_log);
	if (!err)
		nvme_show_changed_ns_list_log(&changed_ns_list_log,
					      dev->name, flags);
	else if (err > 0)
		nvme_show_status(err);
	else
		fprintf(stderr, "changed ns list log: %s\n",
			nvme_strerror(errno));
close_dev:
	dev_close(dev);
ret:
	return err;
}

static int get_pred_lat_per_nvmset_log(int argc, char **argv,
	struct command *cmd, struct plugin *plugin)
{
	const char *desc = "Retrieve Predictable latency per nvm set log "\
			"page and prints it for the given device in either decoded " \
			"format(default),json or binary.";
	const char *nvmset_id = "NVM Set Identifier";
	struct nvme_nvmset_predictable_lat_log plpns_log;
	enum nvme_print_flags flags;
	struct nvme_dev *dev;
	int err;

	struct config {
		__u16	nvmset_id;
		char	*output_format;
		bool	raw_binary;
	};

	struct config cfg = {
		.nvmset_id	= 1,
		.output_format	= "normal",
		.raw_binary	= false,
	};

	OPT_ARGS(opts) = {
		OPT_SHRT("nvmset-id",	 'i', &cfg.nvmset_id,     nvmset_id),
		OPT_FMT("output-format", 'o', &cfg.output_format, output_format),
		OPT_FLAG("raw-binary",   'b', &cfg.raw_binary,	  raw_use),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		goto ret;

	err = flags = validate_output_format(cfg.output_format);
	if (flags < 0)
		goto close_dev;
	if (cfg.raw_binary)
		flags = BINARY;

	err = nvme_cli_get_log_predictable_lat_nvmset(dev, cfg.nvmset_id,
						      &plpns_log);
	if (!err)
		nvme_show_predictable_latency_per_nvmset(&plpns_log,
			cfg.nvmset_id, dev->name, flags);
	else if (err > 0)
		nvme_show_status(err);
	else
		fprintf(stderr, "predictable latency per nvm set: %s\n",
			nvme_strerror(errno));

close_dev:
	dev_close(dev);
ret:
	return err;
}

static int get_pred_lat_event_agg_log(int argc, char **argv,
		struct command *cmd, struct plugin *plugin)
{
	const char *desc = "Retrieve Predictable Latency Event" \
			"Aggregate Log page and prints it, for the given" \
			"device in either decoded format(default)," \
			"json or binary.";
	const char *log_entries = "Number of pending NVM Set" \
			"log Entries list";
	enum nvme_print_flags flags;
	struct nvme_id_ctrl ctrl;
	struct nvme_dev *dev;
	__u32 log_size;
	void *pea_log;
	int err;

	struct config {
		__u64	log_entries;
		bool	rae;
		char	*output_format;
		bool	raw_binary;
	};

	struct config cfg = {
		.log_entries	= 2044,
		.rae		= false,
		.output_format	= "normal",
		.raw_binary	= false,
	};

	OPT_ARGS(opts) = {
		OPT_UINT("log-entries",  'e', &cfg.log_entries,   log_entries),
		OPT_FLAG("rae",          'r', &cfg.rae,           rae),
		OPT_FMT("output-format", 'o', &cfg.output_format, output_format),
		OPT_FLAG("raw-binary",   'b', &cfg.raw_binary,    raw_use),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		goto ret;

	err = flags = validate_output_format(cfg.output_format);
	if (flags < 0)
		goto close_dev;
	if (cfg.raw_binary)
		flags = BINARY;

	if (!cfg.log_entries) {
		fprintf(stderr, "non-zero log-entries is required param\n");
		err = -EINVAL;
		goto close_dev;
	}

	err = nvme_cli_identify_ctrl(dev, &ctrl);
	if (err < 0) {
		fprintf(stderr, "identify controller: %s\n",
			nvme_strerror(errno));
		goto close_dev;
	} else if (err) {
		nvme_show_status(err);
		goto close_dev;
	}

	cfg.log_entries = min(cfg.log_entries, le32_to_cpu(ctrl.nsetidmax));
	log_size = sizeof(__u64) + cfg.log_entries * sizeof(__u16);
	pea_log = calloc(log_size, 1);
	if (!pea_log) {
		err = -ENOMEM;
		goto close_dev;
	}

	err = nvme_cli_get_log_predictable_lat_event(dev, cfg.rae, 0,
						     log_size, pea_log);
	if (!err)
		nvme_show_predictable_latency_event_agg_log(pea_log, cfg.log_entries,
			log_size, dev->name, flags);
	else if (err > 0)
		nvme_show_status(err);
	else
		fprintf(stderr, "predictable latency event aggregate log page: %s",
			nvme_strerror(errno));
	free(pea_log);

close_dev:
	dev_close(dev);
ret:
	return err;
}

static int get_persistent_event_log(int argc, char **argv,
		struct command *cmd, struct plugin *plugin)
{
	const char *desc = "Retrieve Persistent Event log info for"\
			" the given device in either decoded format(default),"\
			" json or binary.";
	const char *action = "action the controller shall take during"\
			" processing this persistent log page command.";
	const char *log_len = "number of bytes to retrieve";
	struct nvme_persistent_event_log *pevent, *pevent_collected;
	enum nvme_print_flags flags;
	void *pevent_log_info;
	struct nvme_dev *dev;
	bool huge;
	int err;

	struct config {
		__u8	action;
		__u32	log_len;
		char	*output_format;
		bool	raw_binary;
	};

	struct config cfg = {
		.action		= 0xff,
		.log_len	= 0,
		.output_format	= "normal",
		.raw_binary	= false,
	};

	OPT_ARGS(opts) = {
		OPT_BYTE("action",       'a', &cfg.action,        action),
		OPT_UINT("log_len",	 'l', &cfg.log_len,	  log_len),
		OPT_FMT("output-format", 'o', &cfg.output_format, output_format),
		OPT_FLAG("raw-binary",   'b', &cfg.raw_binary,    raw_use),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		goto ret;

	err = flags = validate_output_format(cfg.output_format);
	if (flags < 0)
		goto close_dev;
	if (cfg.raw_binary)
		flags = BINARY;

	pevent = calloc(sizeof(*pevent), 1);
	if (!pevent) {
		err = -ENOMEM;
		goto close_dev;
	}

	err = nvme_cli_get_log_persistent_event(dev, cfg.action,
						sizeof(*pevent), pevent);
	if (err < 0) {
		fprintf(stderr, "persistent event log: %s\n",
			nvme_strerror(errno));
		goto free_pevent;
	} else if (err) {
		nvme_show_status(err);
		goto free_pevent;
	}

	if (cfg.action == NVME_PEVENT_LOG_RELEASE_CTX) {
		printf("Releasing Persistent Event Log Context\n");
		goto free_pevent;
	}

	if (!cfg.log_len && cfg.action != NVME_PEVENT_LOG_EST_CTX_AND_READ) {
		cfg.log_len = le64_to_cpu(pevent->tll);
	} else if (!cfg.log_len && cfg.action == NVME_PEVENT_LOG_EST_CTX_AND_READ) {
		printf("Establishing Persistent Event Log Context\n");
		goto free_pevent;
	}

	/*
	 * if header already read with context establish action 0x1,
	 * action shall not be 0x1 again in the subsequent request,
	 * until the current context is released by issuing action
	 * with 0x2, otherwise throws command sequence error, make
	 * it as zero to read the log page
	 */
	if (cfg.action == NVME_PEVENT_LOG_EST_CTX_AND_READ)
		cfg.action = NVME_PEVENT_LOG_READ;

	pevent_log_info = nvme_alloc(cfg.log_len, &huge);
	if (!pevent_log_info) {
		err = -ENOMEM;
		goto free_pevent;
	}
	err = nvme_cli_get_log_persistent_event(dev, cfg.action,
						cfg.log_len, pevent_log_info);
	if (!err) {
		err = nvme_cli_get_log_persistent_event(dev, cfg.action,
							sizeof(*pevent),
							pevent);
		if (err < 0) {
			fprintf(stderr, "persistent event log: %s\n",
				nvme_strerror(errno));
			goto free;
		} else if (err) {
			nvme_show_status(err);
			goto free;
		}
		pevent_collected = pevent_log_info;
		if (pevent_collected->gen_number != pevent->gen_number) {
			printf("Collected Persistent Event Log may be invalid, "\
				"Re-read the log is required\n");
			goto free;
		}

		nvme_show_persistent_event_log(pevent_log_info, cfg.action,
			cfg.log_len, dev->name, flags);
	} else if (err > 0)
		nvme_show_status(err);
	else
		fprintf(stderr, "persistent event log: %s\n",
			nvme_strerror(errno));

free:
	nvme_free(pevent_log_info, huge);
free_pevent:
	free(pevent);
close_dev:
	dev_close(dev);
ret:
	return err;
}

static int get_endurance_event_agg_log(int argc, char **argv,
		struct command *cmd, struct plugin *plugin)
{
	const char *desc = "Retrieve Retrieve Predictable Latency " \
			"Event Aggregate page and prints it, for the given " \
			"device in either decoded format(default), " \
			"json or binary.";
	const char *log_entries = "Number of pending Endurance Group " \
			"Event log Entries list";
	void *endurance_log;
	struct nvme_id_ctrl ctrl;
	enum nvme_print_flags flags;
	struct nvme_dev *dev;
	__u32 log_size;
	int err;

	struct config {
		__u64	log_entries;
		bool	rae;
		char	*output_format;
		bool	raw_binary;
	};

	struct config cfg = {
		.log_entries	= 2044,
		.rae		= false,
		.output_format	= "normal",
		.raw_binary	= false,
	};

	OPT_ARGS(opts) = {
		OPT_UINT("log-entries",  'e', &cfg.log_entries,   log_entries),
		OPT_FLAG("rae",          'r', &cfg.rae,           rae),
		OPT_FMT("output-format", 'o', &cfg.output_format, output_format),
		OPT_FLAG("raw-binary",   'b', &cfg.raw_binary,    raw_use),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		goto ret;

	err = flags = validate_output_format(cfg.output_format);
	if (flags < 0)
		goto close_dev;
	if (cfg.raw_binary)
		flags = BINARY;

	if (!cfg.log_entries) {
		fprintf(stderr, "non-zero log-entries is required param\n");
		err = -EINVAL;
		goto close_dev;
	}

	err = nvme_cli_identify_ctrl(dev, &ctrl);
	if (err < 0) {
		fprintf(stderr, "identify controller: %s\n",
			nvme_strerror(errno));
		goto close_dev;
	} else if (err) {
		fprintf(stderr, "could not identify controller\n");
		err = -ENODEV;
		goto close_dev;
	}

	cfg.log_entries = min(cfg.log_entries, le16_to_cpu(ctrl.endgidmax));
	log_size = sizeof(__u64) + cfg.log_entries * sizeof(__u16);
	endurance_log = calloc(log_size, 1);
	if (!endurance_log) {
		err = -ENOMEM;
		goto close_dev;
	}

	err = nvme_cli_get_log_endurance_grp_evt(dev, cfg.rae, 0, log_size,
						 endurance_log);
	if (!err)
		nvme_show_endurance_group_event_agg_log(endurance_log, cfg.log_entries,
			log_size, dev->name, flags);
	else if (err > 0)
		nvme_show_status(err);
	else
		fprintf(stderr, "endurance group event aggregate log page: %s\n",
			nvme_strerror(errno));
	free(endurance_log);

close_dev:
	dev_close(dev);
ret:
	return err;
}

static int get_lba_status_log(int argc, char **argv,
		struct command *cmd, struct plugin *plugin)
{
	const char *desc = "Retrieve Get LBA Status Info Log " \
			"and prints it, for the given device in either " \
			"decoded format(default),json or binary.";
	void *lab_status;
	enum nvme_print_flags flags;
	struct nvme_dev *dev;
	__u32 lslplen;
	int err;

	struct config {
		bool	rae;
		char	*output_format;
	};

	struct config cfg = {
		.rae		= false,
		.output_format	= "normal",
	};

	OPT_ARGS(opts) = {
		OPT_FLAG("rae",          'r', &cfg.rae,           rae),
		OPT_FMT("output-format", 'o', &cfg.output_format, output_format),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		goto ret;

	err = flags = validate_output_format(cfg.output_format);
	if (flags < 0)
		goto close_dev;

	err = nvme_cli_get_log_lba_status(dev, true, 0, sizeof(__u32),
					  &lslplen);
	if (err < 0) {
		fprintf(stderr, "lba status log page: %s\n",
			nvme_strerror(errno));
		goto close_dev;
	} else if (err) {
		nvme_show_status(err);
		goto close_dev;
	}

	lab_status = calloc(lslplen, 1);
	if (!lab_status) {
		err = -ENOMEM;
		goto close_dev;
	}

	err = nvme_cli_get_log_lba_status(dev, cfg.rae, 0, lslplen,
					  lab_status);
	if (!err)
		nvme_show_lba_status_log(lab_status, lslplen, dev->name, flags);
	else if (err > 0)
		nvme_show_status(err);
	else
		fprintf(stderr, "lba status log page: %s\n",
			nvme_strerror(errno));
	free(lab_status);

close_dev:
	dev_close(dev);
ret:
	return err;
}

static int get_resv_notif_log(int argc, char **argv,
	struct command *cmd, struct plugin *plugin)
{

	const char *desc = "Retrieve Reservation Notification " \
		"log page and prints it, for the given " \
		"device in either decoded format(default), " \
		"json or binary.";
	struct nvme_resv_notification_log resv;
	enum nvme_print_flags flags;
	struct nvme_dev *dev;
	int err;

	struct config {
		char	*output_format;
	};

	struct config cfg = {
		.output_format	= "normal",
	};

	OPT_ARGS(opts) = {
		OPT_FMT("output-format", 'o', &cfg.output_format, output_format),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		goto ret;

	err = flags = validate_output_format(cfg.output_format);
	if (flags < 0)
		goto close_dev;

	err = nvme_cli_get_log_reservation(dev, false, &resv);
	if (!err)
		nvme_show_resv_notif_log(&resv, dev->name, flags);
	else if (err > 0)
		nvme_show_status(err);
	else
		fprintf(stderr, "resv notifi log: %s\n",
			nvme_strerror(errno));

close_dev:
	dev_close(dev);
ret:
	return err;

}

static int get_boot_part_log(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	const char *desc = "Retrieve Boot Partition " \
		"log page and prints it, for the given " \
		"device in either decoded format(default), " \
		"json or binary.";
	const char *fname = "boot partition data output file name";
	struct nvme_boot_partition boot;
	__u8 *bp_log;
	enum nvme_print_flags flags;
	int err = -1, output = 0;
	struct nvme_dev *dev;
	__u32 bpsz = 0;

	struct config {
		__u8	lsp;
		char	*file_name;
		char	*output_format;
	};

	struct config cfg = {
		.lsp		= 0,
		.output_format	= "normal",
		.file_name	= NULL,
	};

	OPT_ARGS(opts) = {
		OPT_BYTE("lsp",          's', &cfg.lsp,           lsp),
		OPT_FILE("output-file",  'f', &cfg.file_name,     fname),
		OPT_FMT("output-format", 'o', &cfg.output_format, output_format),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		goto ret;

	err = flags = validate_output_format(cfg.output_format);
	if (flags < 0)
		goto close_dev;

	if (!cfg.file_name) {
		fprintf(stderr, "Please provide an output file!\n");
		err = -1;
		goto close_dev;
	}

	if (cfg.lsp > 127) {
		fprintf(stderr, "invalid lsp param: %u\n", cfg.lsp);
		err = -1;
		goto close_dev;
	}

	output = open(cfg.file_name, O_WRONLY | O_CREAT | O_TRUNC, 0666);
	if (output < 0) {
		fprintf(stderr, "Failed to open output file %s: %s!\n",
				cfg.file_name, strerror(errno));
		err = output;
		goto close_dev;
	}

	err = nvme_cli_get_log_boot_partition(dev, false, cfg.lsp,
					      sizeof(boot), &boot);
	if (err < 0) {
		fprintf(stderr, "boot partition log: %s\n",
			nvme_strerror(errno));
		goto close_output;
	} else if (err) {
		nvme_show_status(err);
		goto close_output;
	}

	bpsz = (boot.bpinfo & 0x7fff) * 128 * 1024;
	bp_log = calloc(sizeof(boot) + bpsz, 1);
	if (!bp_log) {
		err = -1;
		goto close_output;
	}

	err = nvme_cli_get_log_boot_partition(dev, false, cfg.lsp,
					      sizeof(boot) + bpsz,
					      (struct nvme_boot_partition *)bp_log);
	if (!err)
		nvme_show_boot_part_log(&bp_log, dev->name, flags,
					sizeof(boot) + bpsz);
	else if (err > 0)
		nvme_show_status(err);
	else
		fprintf(stderr, "boot partition log: %s\n",
			nvme_strerror(errno));

	err = write(output, (void *) bp_log + sizeof(boot), bpsz);
	if (err != bpsz) {
		fprintf(stderr, "Failed to flush all data to file!\n");
	} else {
		printf("Data flushed into file %s\n", cfg.file_name);
	}
	err = 0;

	free(bp_log);

close_output:
	close(output);
close_dev:
	dev_close(dev);
ret:
	return err;
}

static int get_media_unit_stat_log(int argc, char **argv, struct command *cmd,
				   struct plugin *plugin)
{
	const char *desc = "Retrieve the configuration and wear of media units and print it";
	struct nvme_media_unit_stat_log mus;
	enum nvme_print_flags flags;
	struct nvme_dev *dev;
	int err = -1;

	struct config {
		__u16	domainid;
		char	*output_format;
		bool	raw_binary;
	};

	struct config cfg = {
		.domainid	= 0,
		.output_format	= "normal",
		.raw_binary	= false,
	};

	OPT_ARGS(opts) = {
		OPT_UINT("domain-id",     'd', &cfg.domainid, domainid),
		OPT_FMT("output-format",  'o', &cfg.output_format, output_format),
		OPT_FLAG("raw-binary",    'b', &cfg.raw_binary, raw_use),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		goto ret;

	err = flags = validate_output_format(cfg.output_format);
	if (flags < 0)
		goto close_dev;

	if (cfg.raw_binary)
		flags = BINARY;

	err = nvme_cli_get_log_media_unit_stat(dev, cfg.domainid, &mus);
	if (!err)
		nvme_show_media_unit_stat_log(&mus, flags);
	else if (err > 0)
		nvme_show_status(err);
	else
		fprintf(stderr, "media unit status log: %s\n",
			nvme_strerror(errno));

close_dev:
	dev_close(dev);
ret:
	return err;
}

static int get_supp_cap_config_log(int argc, char **argv, struct command *cmd,
				   struct plugin *plugin)
{
	const char *desc = "Retrieve the list of Supported Capacity Configuration Descriptors";
	struct nvme_supported_cap_config_list_log cap_log;
	enum nvme_print_flags flags;
	struct nvme_dev *dev;
	int err = -1;

	struct config {
		__u16	domainid;
		char	*output_format;
		bool	raw_binary;
	};

	struct config cfg = {
		.domainid	= 0,
		.output_format	= "normal",
		.raw_binary	= false,
	};

	OPT_ARGS(opts) = {
		OPT_UINT("domain-id",     'd', &cfg.domainid,       domainid),
		OPT_FMT("output-format",  'o', &cfg.output_format,  output_format),
		OPT_FLAG("raw-binary",    'b', &cfg.raw_binary,     raw_use),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		goto ret;

	err = flags = validate_output_format(cfg.output_format);
	if (flags < 0)
		goto close_dev;

	if (cfg.raw_binary)
		flags = BINARY;

	err = nvme_cli_get_log_support_cap_config_list(dev, cfg.domainid,
						       &cap_log);
	if (!err)
		nvme_show_supported_cap_config_log(&cap_log, flags);
	else if (err > 0)
		nvme_show_status(err);
	else
		perror("supported capacity configuration list log");

close_dev:
	dev_close(dev);
ret:
	return err;
}

static int io_mgmt_send(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	const char *desc = "I/O Management Send";
	const char *data = "optional file for data (default stdin)";

	struct nvme_dev *dev;
	void *buf = NULL;
	int err = -1;
	int dfd = STDIN_FILENO;

	struct config {
		__u16 mos;
		__u8  mo;
		__u32 namespace_id;
		char  *file;
		__u32 data_len;
	};

	struct config cfg = {
		.mos = 0,
	};

	OPT_ARGS(opts) = {
		OPT_UINT("namespace-id",  'n', &cfg.namespace_id,   namespace_id_desired),
		OPT_UINT("mos",           's', &cfg.mos,            mos),
		OPT_BYTE("mo",            'm', &cfg.mo,             mo),
		OPT_FILE("data",          'd', &cfg.file,           data),
		OPT_UINT("data-len",      'l', &cfg.data_len,       buf_len),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		return errno;

	if (!cfg.namespace_id) {
		err = nvme_get_nsid(dev_fd(dev), &cfg.namespace_id);
		if (err < 0) {
			perror("get-namespace-id");
			goto close_dev;
		}
	}

	if (cfg.data_len) {
		buf = calloc(1, cfg.data_len);
		if (!buf) {
			perror("could not alloc memory for io mgmt receive data");
			err = -ENOMEM;
			goto close_dev;
		}
	}

	if (cfg.file) {
		dfd = open(cfg.file, O_RDONLY);
		if (dfd < 0) {
			perror(cfg.file);
			goto free;
		}
	}

	err = read(dfd, buf, cfg.data_len);
	if (err < 0) {
		perror("read");
		goto close_fd;
	}

	struct nvme_io_mgmt_send_args args = {
		.args_size	= sizeof(args),
		.fd		= dev_fd(dev),
		.nsid		= cfg.namespace_id,
		.mos		= cfg.mos,
		.mo		= cfg.mo,
		.data_len	= cfg.data_len,
		.data		= buf,
		.timeout	= NVME_DEFAULT_IOCTL_TIMEOUT,
	};

	err = nvme_io_mgmt_send(&args);
	if (!err)
		printf("io-mgmt-send: Success, mos:%u mo:%u nsid:%d\n",
			cfg.mos, cfg.mo, cfg.namespace_id);
	else if (err > 0)
		nvme_show_status(err);
	else
		perror("io-mgmt-send");

close_fd:
	if (cfg.file)
		close(dfd);
free:
	free(buf);
close_dev:
	dev_close(dev);
	return err;
}

static int io_mgmt_recv(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	const char *desc = "I/O Management Receive";
	const char *data = "optional file for data (default stdout)";

	struct nvme_dev *dev;
	void *buf = NULL;
	int err = -1;
	int dfd = STDOUT_FILENO;

	struct config {
		__u16 mos;
		__u8  mo;
		__u32 namespace_id;
		char  *file;
		__u32 data_len;
	};

	struct config cfg = {
		.mos = 0,
	};

	OPT_ARGS(opts) = {
		OPT_UINT("namespace-id",  'n', &cfg.namespace_id,   namespace_id_desired),
		OPT_UINT("mos",           's', &cfg.mos,            mos),
		OPT_BYTE("mo",            'm', &cfg.mo,             mo),
		OPT_FILE("data",          'd', &cfg.file,           data),
		OPT_UINT("data-len",      'l', &cfg.data_len,       buf_len),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		return errno;

	if (!cfg.namespace_id) {
		err = nvme_get_nsid(dev_fd(dev), &cfg.namespace_id);
		if (err < 0) {
			perror("get-namespace-id");
			goto close_dev;
		}
	}

	if (cfg.data_len) {
		buf = calloc(1, cfg.data_len);
		if (!buf) {
			perror("could not alloc memory for io mgmt receive data");
			err = -ENOMEM;
			goto close_dev;
		}
	}

	struct nvme_io_mgmt_recv_args args = {
		.args_size	= sizeof(args),
		.fd		= dev_fd(dev),
		.nsid		= cfg.namespace_id,
		.mos		= cfg.mos,
		.mo		= cfg.mo,
		.data_len	= cfg.data_len,
		.data		= buf,
		.timeout	= NVME_DEFAULT_IOCTL_TIMEOUT,
	};

	err = nvme_io_mgmt_recv(&args);
	if (!err) {
		printf("io-mgmt-recv: Success, mos:%u mo:%u nsid:%d\n",
			cfg.mos, cfg.mo, cfg.namespace_id);

		if (cfg.file) {
			dfd = open(cfg.file, O_WRONLY | O_CREAT, 0644);
			if (dfd < 0) {
				perror(cfg.file);
				goto free;
			}

			err = write(dfd, buf, cfg.data_len);
			if (err < 0) {
				perror("write");
				goto close_fd;
			}
		} else {
			d((unsigned char *)buf, cfg.data_len, 16, 1);
		}
	} else if (err > 0) {
		nvme_show_status(err);
	} else {
		perror("io-mgmt-recv");
	}

close_fd:
	if (cfg.file)
		close(dfd);
free:
	free(buf);
close_dev:
	dev_close(dev);

	return err;
}

static int get_log(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	const char *desc = "Retrieve desired number of bytes "\
		"from a given log on a specified device in either "\
		"hex-dump (default) or binary format";
	const char *log_id = "identifier of log to retrieve";
	const char *log_len = "how many bytes to retrieve";
	const char *aen = "result of the aen, use to override log id";
	const char *lpo = "log page offset specifies the location within a log page from where to start returning data";
	const char *lsi = "log specific identifier specifies an identifier that is required for a particular log page";
	const char *raw = "output in raw format";
	const char *csi = "command set identifier";
	const char *offset_type = "offset type";
	const char *xfer_len = "read chunk size (default 4k)";
	struct nvme_dev *dev;
	unsigned char *log;
	int err;

	struct config {
		__u32	namespace_id;
		__u8	log_id;
		__u32	log_len;
		__u32	aen;
		__u64	lpo;
		__u8	lsp;
		__u16	lsi;
		bool	rae;
		__u8	uuid_index;
		bool	raw_binary;
		__u8	csi;
		bool	ot;
		__u32	xfer_len;
	};

	struct config cfg = {
		.namespace_id	= NVME_NSID_ALL,
		.log_id		= 0xff,
		.log_len	= 0,
		.aen		= 0,
		.lpo		= NVME_LOG_LPO_NONE,
		.lsp		= NVME_LOG_LSP_NONE,
		.lsi		= NVME_LOG_LSI_NONE,
		.rae		= false,
		.uuid_index	= NVME_UUID_NONE,
		.raw_binary	= false,
		.csi		= NVME_CSI_NVM,
		.ot		= false,
		.xfer_len	= 4096,
	};

	OPT_ARGS(opts) = {
		OPT_UINT("namespace-id", 'n', &cfg.namespace_id, namespace_desired),
		OPT_BYTE("log-id",       'i', &cfg.log_id,       log_id),
		OPT_UINT("log-len",      'l', &cfg.log_len,      log_len),
		OPT_UINT("aen",          'a', &cfg.aen,          aen),
		OPT_SUFFIX("lpo",        'o', &cfg.lpo,          lpo),
		OPT_BYTE("lsp",          's', &cfg.lsp,          lsp),
		OPT_SHRT("lsi",          'S', &cfg.lsi,          lsi),
		OPT_FLAG("rae",          'r', &cfg.rae,          rae),
		OPT_BYTE("uuid-index",   'U', &cfg.uuid_index,   uuid_index),
		OPT_FLAG("raw-binary",   'b', &cfg.raw_binary,   raw),
		OPT_BYTE("csi",          'y', &cfg.csi,          csi),
		OPT_FLAG("ot",           'O', &cfg.ot,           offset_type),
		OPT_UINT("xfer-len",     'x', &cfg.xfer_len,     xfer_len),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		goto ret;

	if (cfg.aen) {
		cfg.log_len = 4096;
		cfg.log_id = (cfg.aen >> 16) & 0xff;
	}

	if (!cfg.log_len || cfg.log_len & 0x3) {
		fprintf(stderr, "non-zero or non-dw alignment log-len is required param\n");
		err = -EINVAL;
		goto close_dev;
	}

	if (cfg.lsp > 127) {
		fprintf(stderr, "invalid lsp param\n");
		err = -EINVAL;
		goto close_dev;
	}

	if (cfg.uuid_index > 127) {
		fprintf(stderr, "invalid uuid index param\n");
		err = -EINVAL;
		goto close_dev;
	}

	if (cfg.xfer_len == 0 || cfg.xfer_len % 4096) {
		fprintf(stderr, "xfer-len argument invalid. It needs to be mulitple of 4k");
		err = -EINVAL;
		goto close_dev;
	}

	log = malloc(cfg.log_len);
	if (!log) {
		perror("could not alloc buffer for log\n");
		err = -ENOMEM;
		goto close_dev;
	}

	struct nvme_get_log_args args = {
		.args_size	= sizeof(args),
		.lid		= cfg.log_id,
		.nsid		= cfg.namespace_id,
		.lpo		= cfg.lpo,
		.lsp		= cfg.lsp,
		.lsi		= cfg.lsi,
		.rae		= cfg.rae,
		.uuidx		= cfg.uuid_index,
		.csi		= cfg.csi,
		.ot		= cfg.ot,
		.len		= cfg.log_len,
		.log		= log,
		.result		= NULL,
	};
	err = nvme_cli_get_log_page(dev, cfg.xfer_len, &args);
	if (!err) {
		if (!cfg.raw_binary) {
			printf("Device:%s log-id:%d namespace-id:%#x\n",
				dev->name, cfg.log_id,
				cfg.namespace_id);
			d(log, cfg.log_len, 16, 1);
		} else
			d_raw((unsigned char *)log, cfg.log_len);
	} else if (err > 0)
		nvme_show_status(err);
	else
		fprintf(stderr, "log page: %s\n", nvme_strerror(errno));
	free(log);

close_dev:
	dev_close(dev);
ret:
	return err;
}

static int sanitize_log(int argc, char **argv, struct command *command, struct plugin *plugin)
{
	const char *desc = "Retrieve sanitize log and show it.";
	struct nvme_sanitize_log_page sanitize_log;
	enum nvme_print_flags flags;
	struct nvme_dev *dev;
	int err;

	struct config {
		bool	rae;
		char	*output_format;
		bool	human_readable;
		bool	raw_binary;
	};

	struct config cfg = {
		.rae		= false,
		.output_format	= "normal",
		.human_readable	= false,
		.raw_binary	= false,
	};

	OPT_ARGS(opts) = {
		OPT_FLAG("rae",           'r', &cfg.rae,            rae),
		OPT_FMT("output-format",  'o', &cfg.output_format,  output_format),
		OPT_FLAG("human-readable",'H', &cfg.human_readable, human_readable_log),
		OPT_FLAG("raw-binary",    'b', &cfg.raw_binary,     raw_log),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		goto ret;

	err = flags = validate_output_format(cfg.output_format);
	if (flags < 0)
		goto close_dev;
	if (cfg.raw_binary)
		flags = BINARY;
	if (cfg.human_readable)
		flags |= VERBOSE;

	err = nvme_cli_get_log_sanitize(dev, cfg.rae, &sanitize_log);
	if (!err)
		nvme_show_sanitize_log(&sanitize_log, dev->name, flags);
	else if (err > 0)
		nvme_show_status(err);
	else
		fprintf(stderr, "sanitize status log: %s\n",
			nvme_strerror(errno));
close_dev:
	dev_close(dev);
ret:
	return err;
}

static int get_fid_support_effects_log(int argc, char **argv, struct command *cmd,
	struct plugin *plugin)
{
	const char *desc = "Retrieve FID Support and Effects log and show it.";
	struct nvme_fid_supported_effects_log fid_support_log;
	enum nvme_print_flags flags;
	struct nvme_dev *dev;
	int err = -1;

	struct config {
		char	*output_format;
		bool	human_readable;
	};

	struct config cfg = {
		.output_format	= "normal",
		.human_readable	= false,
	};

	OPT_ARGS(opts) = {
		OPT_FMT("output-format",  'o', &cfg.output_format,  output_format),
		OPT_FLAG("human-readable",'H', &cfg.human_readable, human_readable_log),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		goto ret;

	err = flags = validate_output_format(cfg.output_format);
	if (flags < 0)
		goto close_dev;
	if (cfg.human_readable)
		flags |= VERBOSE;

	err = nvme_cli_get_log_fid_supported_effects(dev, false,
						     &fid_support_log);
	if (!err)
		nvme_show_fid_support_effects_log(&fid_support_log,
						  dev->name, flags);
	else if (err > 0)
		nvme_show_status(err);
	else
		fprintf(stderr, "fid support effects log: %s\n",
			nvme_strerror(errno));
close_dev:
	dev_close(dev);
ret:
	return err;
}

static int get_mi_cmd_support_effects_log(int argc, char **argv, struct command *cmd,
	struct plugin *plugin)
{
	const char *desc = "Retrieve NVMe-MI Command Support and Effects log and show it.";
	struct nvme_mi_cmd_supported_effects_log mi_cmd_support_log;
	enum nvme_print_flags flags;
	struct nvme_dev *dev;
	int err = -1;

	struct config {
		char	*output_format;
		bool	human_readable;
	};

	struct config cfg = {
		.output_format	= "normal",
		.human_readable	= false,
	};

	OPT_ARGS(opts) = {
		OPT_FMT("output-format",  'o', &cfg.output_format,  output_format),
		OPT_FLAG("human-readable",'H', &cfg.human_readable, human_readable_log),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		goto ret;

	err = flags = validate_output_format(cfg.output_format);
	if (flags < 0)
		goto close_dev;
	if (cfg.human_readable)
		flags |= VERBOSE;

	err = nvme_cli_get_log_mi_cmd_supported_effects(dev, false,
							&mi_cmd_support_log);
	if (!err)
		nvme_show_mi_cmd_support_effects_log(&mi_cmd_support_log,
						     dev->name, flags);
	else if (err > 0)
		nvme_show_status(err);
	else
		fprintf(stderr, "mi command support effects log: %s\n",
			nvme_strerror(errno));
close_dev:
	dev_close(dev);
ret:
	return err;
}

static int list_ctrl(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	const char *desc = "Show controller list information for the subsystem the "\
		"given device is part of, or optionally controllers attached to a specific namespace.";
	const char *controller = "controller to display";
	struct nvme_ctrl_list *cntlist;
	enum nvme_print_flags flags;
	struct nvme_dev *dev;
	int err;

	struct config {
		__u16	cntid;
		__u32	namespace_id;
		char	*output_format;
	};

	struct config cfg = {
		.cntid		= 0,
		.namespace_id	= NVME_NSID_NONE,
		.output_format	= "normal",
	};

	OPT_ARGS(opts) = {
		OPT_SHRT("cntid",        'c', &cfg.cntid,         controller),
		OPT_UINT("namespace-id", 'n', &cfg.namespace_id,  namespace_id_optional),
		OPT_FMT("output-format", 'o', &cfg.output_format, output_format),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		goto ret;

	err = flags = validate_output_format(cfg.output_format);
	if (flags < 0)
		goto close_dev;

	if (posix_memalign((void *)&cntlist, getpagesize(), 0x1000)) {
		fprintf(stderr, "can not allocate controller list payload\n");
		err = -ENOMEM;
		goto close_dev;
	}

	if (cfg.namespace_id == NVME_NSID_NONE)
		err = nvme_cli_identify_ctrl_list(dev, cfg.cntid, cntlist);
	else
		err = nvme_cli_identify_nsid_ctrl_list(dev, cfg.namespace_id,
							cfg.cntid, cntlist);
	if (!err)
		nvme_show_list_ctrl(cntlist, flags);
	else if (err > 0)
		nvme_show_status(err);
	else
		fprintf(stderr, "id controller list: %s\n",
			nvme_strerror(errno));

	free(cntlist);
close_dev:
	dev_close(dev);
ret:
	return err;
}

static int list_ns(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	const char *desc = "For the specified controller handle, show the "\
		"namespace list in the associated NVMe subsystem, optionally starting with a given nsid.";
	const char *namespace_id = "first nsid returned list should start from";
	const char *csi = "I/O command set identifier";
	const char *all = "show all namespaces in the subsystem, whether attached or inactive";
	struct nvme_ns_list ns_list;
	enum nvme_print_flags flags;
	struct nvme_dev *dev;
	int err;

	struct config {
		__u32	namespace_id;
		int	csi;
		bool	all;
		char	*output_format;
	};

	struct config cfg = {
		.namespace_id	= 1,
		.csi		= -1,
		.all		= false,
		.output_format = "normal",
	};

	OPT_ARGS(opts) = {
		OPT_UINT("namespace-id", 'n', &cfg.namespace_id,  namespace_id),
		OPT_INT("csi",           'y', &cfg.csi,           csi),
		OPT_FLAG("all",          'a', &cfg.all,           all),
		OPT_FMT("output-format", 'o', &cfg.output_format, output_format_no_binary),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		goto ret;

	err = flags = validate_output_format(cfg.output_format);
	if (flags < 0)
		goto close_dev;
	if (flags != JSON && flags != NORMAL) {
		err = -EINVAL;
		goto close_dev;
	}

	if (!cfg.namespace_id) {
		err = -EINVAL;
		fprintf(stderr, "invalid nsid parameter\n");
		goto close_dev;
	}

	struct nvme_identify_args args = {
		.args_size	= sizeof(args),
		.timeout	= NVME_DEFAULT_IOCTL_TIMEOUT,
		.data		= &ns_list,
		.nsid		= cfg.namespace_id - 1.
	};
	if (cfg.csi < 0) {
		args.cns = cfg.all ? NVME_IDENTIFY_CNS_ALLOCATED_NS_LIST :
			NVME_IDENTIFY_CNS_NS_ACTIVE_LIST;
	} else {
		args.cns = cfg.all ? NVME_IDENTIFY_CNS_CSI_ALLOCATED_NS_LIST :
			NVME_IDENTIFY_CNS_CSI_NS_ACTIVE_LIST;
		args.csi = cfg.csi;
	}

	err = nvme_cli_identify(dev, &args);

	if (!err)
		nvme_show_list_ns(&ns_list, flags);
	else if (err > 0)
		nvme_show_status(err);
	else
		fprintf(stderr, "id namespace list: %s",
			nvme_strerror(errno));
close_dev:
	dev_close(dev);
ret:
	return err;
}

static int id_ns_lba_format(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	const char *desc = "Send an Identify Namespace command to the given "\
		"device, returns capability field properties of the specified "\
		"LBA Format index in  various formats.";
	enum nvme_print_flags flags;
	struct nvme_id_ns ns;
	struct nvme_dev *dev;
	int err = -1;

	struct config {
		__u16	lba_format_index;
		__u8	uuid_index;
		bool	verbose;
		char	*output_format;
	};

	struct config cfg = {
		.lba_format_index	= 0,
		.uuid_index		= NVME_UUID_NONE,
		.verbose		= false,
		.output_format		= "normal",
	};

	OPT_ARGS(opts) = {
		OPT_UINT("lba-format-index", 'i', &cfg.lba_format_index, lba_format_index),
		OPT_BYTE("uuid-index",       'U', &cfg.uuid_index,       uuid_index),
		OPT_FLAG("verbose",          'v', &cfg.verbose,          verbose),
		OPT_FMT("output-format",     'o', &cfg.output_format,    output_format),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		goto ret;

	err = flags = validate_output_format(cfg.output_format);
	if (flags < 0)
		goto close_dev;

	if (cfg.verbose)
		flags |= VERBOSE;

	err = nvme_identify_ns_csi_user_data_format(dev_fd(dev),
										cfg.lba_format_index,
										cfg.uuid_index, NVME_CSI_NVM, &ns);
	if (!err)
		nvme_show_id_ns(&ns, 0, cfg.lba_format_index, true, flags);
	else if (err > 0)
		nvme_show_status(err);
	else
		perror("identify namespace for specific LBA format");
close_dev:
	dev_close(dev);
ret:
	return nvme_status_to_errno(err, false);
}

static int id_endurance_grp_list(int argc, char **argv, struct command *cmd,
	struct plugin *plugin)
{
	const char *desc = "Show endurance group list information for the given endurance "\
		"group id";
	const char *endurance_grp_id = "Endurance Group ID";
	struct nvme_id_endurance_group_list *endgrp_list;
	enum nvme_print_flags flags;
	struct nvme_dev *dev;
	int err = -1;

	struct config {
		__u16	endgrp_id;
		char	*output_format;
	};

	struct config cfg = {
		.endgrp_id	= 0,
		.output_format	= "normal",
	};

	OPT_ARGS(opts) = {
		OPT_SHRT("endgrp-id",    'i', &cfg.endgrp_id,     endurance_grp_id),
		OPT_FMT("output-format", 'o', &cfg.output_format, output_format),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		goto ret;

	err = flags = validate_output_format(cfg.output_format);
	if (flags < 0)
		goto close_dev;
	if (flags != JSON && flags != NORMAL) {
		err = -EINVAL;
		fprintf(stderr, "invalid output format\n");
		goto close_dev;
	}

	if (posix_memalign((void *)&endgrp_list, getpagesize(), 0x1000)) {
		err = -1;
		goto close_dev;
	}

	err = nvme_identify_endurance_group_list(dev_fd(dev), cfg.endgrp_id,
						 endgrp_list);
	if (!err)
		nvme_show_endurance_group_list(endgrp_list, flags);
	else if (err > 0)
		nvme_show_status(err);
	else
		fprintf(stderr, "Id endurance group list: %s",
			nvme_strerror(errno));

	free(endgrp_list);
close_dev:
	dev_close(dev);
ret:
	return err;
}

static int delete_ns(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	const char *desc = "Delete the given namespace by "\
		"sending a namespace management command to "\
		"the provided device. All controllers should be detached from "\
		"the namespace prior to namespace deletion. A namespace ID "\
		"becomes inactive when that namespace is detached or, if "\
		"the namespace is not already inactive, once deleted.";
	const char *namespace_id = "namespace to delete";
	struct nvme_dev *dev;
	int err;

	struct config {
		__u32	namespace_id;
		__u32	timeout;
	};

	struct config cfg = {
		.namespace_id	= 0,
		.timeout	= 120000,
	};

	OPT_ARGS(opts) = {
		OPT_UINT("namespace-id", 'n', &cfg.namespace_id, namespace_id),
		OPT_UINT("timeout",      't', &cfg.timeout,      timeout),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		goto ret;

	if (!cfg.namespace_id) {
		err = nvme_get_nsid(dev_fd(dev), &cfg.namespace_id);
		if (err < 0) {
			fprintf(stderr, "get-namespace-id: %s\n",
				nvme_strerror(errno));
			goto close_dev;
		}
	}

	err = nvme_cli_ns_mgmt_delete(dev, cfg.namespace_id);
	if (!err)
		printf("%s: Success, deleted nsid:%d\n", cmd->name,
								cfg.namespace_id);
	else if (err > 0)
		nvme_show_status(err);
	else
		fprintf(stderr, "delete namespace: %s\n", nvme_strerror(errno));

close_dev:
	dev_close(dev);
ret:
	return err;
}

static int nvme_attach_ns(int argc, char **argv, int attach, const char *desc, struct command *cmd)
{
	struct nvme_ctrl_list cntlist;
	int err, num, i, list[2048];
	struct nvme_dev *dev;
	__u16 ctrlist[2048];

	const char *namespace_id = "namespace to attach";
	const char *cont = "optional comma-sep controller id list";

	struct config {
		__u32	namespace_id;
		char	*cntlist;
	};

	struct config cfg = {
		.namespace_id	= 0,
		.cntlist	= "",
	};

	OPT_ARGS(opts) = {
		OPT_UINT("namespace-id", 'n', &cfg.namespace_id, namespace_id),
		OPT_LIST("controllers",  'c', &cfg.cntlist,      cont),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		goto ret;

	if (!cfg.namespace_id) {
		fprintf(stderr, "%s: namespace-id parameter required\n",
						cmd->name);
		err = -EINVAL;
		goto close_dev;
	}

	num = argconfig_parse_comma_sep_array(cfg.cntlist, list, 2047);
	if (!num) {
		fprintf(stderr, "warning: empty controller-id list will result in no actual change in namespace attachment\n");
	}

	if (num == -1) {
		fprintf(stderr, "%s: controller id list is malformed\n",
						cmd->name);
		err = -EINVAL;
		goto close_dev;
	}

	for (i = 0; i < num; i++)
		ctrlist[i] = (__u16)list[i];

	nvme_init_ctrl_list(&cntlist, num, ctrlist);

	if (attach)
		err = nvme_cli_ns_attach_ctrls(dev, cfg.namespace_id,
					       &cntlist);
	else
		err = nvme_cli_ns_detach_ctrls(dev, cfg.namespace_id,
					       &cntlist);

	if (!err)
		printf("%s: Success, nsid:%d\n", cmd->name, cfg.namespace_id);
	else if (err > 0)
		nvme_show_status(err);
	else
		perror(attach ? "attach namespace" : "detach namespace");

close_dev:
	dev_close(dev);
ret:
	return err;
}

static int attach_ns(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	const char *desc = "Attach the given namespace to the "\
		"given controller or comma-sep list of controllers. ID of the "\
		"given namespace becomes active upon attachment to a "\
		"controller. A namespace must be attached to a controller "\
		"before IO commands may be directed to that namespace.";
	return nvme_attach_ns(argc, argv, 1, desc, cmd);
}

static int detach_ns(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	const char *desc = "Detach the given namespace from the "\
		"given controller; de-activates the given namespace's ID. A "\
		"namespace must be attached to a controller before IO "\
		"commands may be directed to that namespace.";
	return nvme_attach_ns(argc, argv, 0, desc, cmd);
}

static int parse_lba_num_si(struct nvme_dev *dev, const char *opt,
			    const char *val, __u8 flbas, __u64 *num)
{
	struct nvme_id_ctrl ctrl;
	__u32 nsid = 1;
	struct nvme_id_ns ns;
	char *endptr;
	int err = -EINVAL;
	int i;
	int lbas;
	struct nvme_ns_list ns_list;
	struct nvme_identify_args args = {
		.args_size	= sizeof(args),
		.timeout	= NVME_DEFAULT_IOCTL_TIMEOUT,
		.data		= &ns_list,
		.cns		= NVME_IDENTIFY_CNS_NS_ACTIVE_LIST,
		.nsid		= nsid - 1.
	};

	if (!val)
		return 0;

	if (*num) {
		fprintf(stderr,
			"Invalid specification of both %s and its SI argument, please specify only one\n",
			opt);
		return err;
	}

	err = nvme_cli_identify_ctrl(dev, &ctrl);
	if (err) {
		if (err < 0)
			fprintf(stderr, "identify controller: %s\n",
				nvme_strerror(errno));
		else
			nvme_show_status(err);
		return err;
	}

	if ((ctrl.oacs & 0x8) >> 3)
		nsid = NVME_NSID_ALL;
	else {
		err = nvme_cli_identify(dev, &args);
		if (err) {
			if (err < 0)
				fprintf(stderr, "identify namespace list: %s",
					nvme_strerror(errno));
			else
				nvme_show_status(err);
			return err;
		}
		nsid = le32_to_cpu(ns_list.ns[0]);
	}

	err = nvme_cli_identify_ns(dev, nsid, &ns);
	if (err) {
		if (err < 0)
			fprintf(stderr, "identify namespace: %s",
				nvme_strerror(errno));
		else
			nvme_show_status(err);
		return err;
	}

	i = flbas & NVME_NS_FLBAS_LOWER_MASK;
	lbas = (1 << ns.lbaf[i].ds) + ns.lbaf[i].ms;

	if (suffix_si_parse(val, &endptr, (uint64_t*)num)) {
		fprintf(stderr,
			"Expected long suffixed integer argument for '%s-si' but got '%s'!\n",
			opt, val);
		return -errno;
	}

	if (endptr[0] != '\0')
		*num /= lbas;

	return 0;
}

static int create_ns(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	const char *desc = "Send a namespace management command "\
		"to the specified device to create a namespace with the given "\
		"parameters. The next available namespace ID is used for the "\
		"create operation. Note that create-ns does not attach the "\
		"namespace to a controller, the attach-ns command is needed.";
	const char *nsze = "size of ns (NSZE)";
	const char *ncap = "capacity of ns (NCAP)";
	const char *flbas = "Formatted LBA size (FLBAS), if entering this "\
		"value ignore \'block-size\' field";
	const char *dps = "data protection settings (DPS)";
	const char *nmic = "multipath and sharing capabilities (NMIC)";
	const char *anagrpid = "ANA Group Identifier (ANAGRPID)";
	const char *nvmsetid = "NVM Set Identifier (NVMSETID)";
	const char *csi = "command set identifier (CSI)";
	const char *lbstm = "logical block storage tag mask (LBSTM)";
	const char *bs = "target block size, specify only if \'FLBAS\' "\
		"value not entered";
	const char *nsze_si = "size of ns (NSZE) in standard SI units";
	const char *ncap_si = "capacity of ns (NCAP) in standard SI units";

	struct nvme_id_ns ns;
	struct nvme_dev *dev;
	int err = 0, i;
	__u32 nsid;

	struct config {
		__u64	nsze;
		__u64	ncap;
		__u8	flbas;
		__u8	dps;
		__u8	nmic;
		__u32	anagrpid;
		__u16	nvmsetid;
		__u64	bs;
		__u32	timeout;
		__u8	csi;
		__u64	lbstm;
		char	*nsze_si;
		char	*ncap_si;
	};

	struct config cfg = {
		.nsze		= 0,
		.ncap		= 0,
		.flbas		= 0xff,
		.dps		= 0,
		.nmic		= 0,
		.anagrpid	= 0,
		.nvmsetid	= 0,
		.bs		= 0x00,
		.timeout	= 120000,
		.csi		= 0,
		.lbstm		= 0,
		.nsze_si	= NULL,
		.ncap_si	= NULL,
	};

	OPT_ARGS(opts) = {
		OPT_SUFFIX("nsze",       's', &cfg.nsze,     nsze),
		OPT_SUFFIX("ncap",       'c', &cfg.ncap,     ncap),
		OPT_BYTE("flbas",        'f', &cfg.flbas,    flbas),
		OPT_BYTE("dps",          'd', &cfg.dps,      dps),
		OPT_BYTE("nmic",         'm', &cfg.nmic,     nmic),
		OPT_UINT("anagrp-id",	 'a', &cfg.anagrpid, anagrpid),
		OPT_UINT("nvmset-id",	 'i', &cfg.nvmsetid, nvmsetid),
		OPT_SUFFIX("block-size", 'b', &cfg.bs,       bs),
		OPT_UINT("timeout",      't', &cfg.timeout,  timeout),
		OPT_BYTE("csi",          'y', &cfg.csi,      csi),
		OPT_SUFFIX("lbstm",      'l', &cfg.lbstm,    lbstm),
		OPT_STR("nsze-si",       'S', &cfg.nsze_si,  nsze_si),
		OPT_STR("ncap-si",       'C', &cfg.ncap_si,  ncap_si),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		goto ret;

	if (cfg.flbas != 0xff && cfg.bs != 0x00) {
		fprintf(stderr,
			"Invalid specification of both FLBAS and Block Size, please specify only one\n");
		err = -EINVAL;
		goto close_dev;
	}
	if (cfg.bs) {
		if ((cfg.bs & (~cfg.bs + 1)) != cfg.bs) {
			fprintf(stderr,
				"Invalid value for block size (%"PRIu64"). Block size must be a power of two\n",
				(uint64_t)cfg.bs);
			err = -EINVAL;
			goto close_dev;
		}
		err = nvme_cli_identify_ns(dev, NVME_NSID_ALL, &ns);
		if (err) {
			if (err < 0)
				fprintf(stderr, "identify-namespace: %s",
					nvme_strerror(errno));
			else {
				fprintf(stderr, "identify failed\n");
				nvme_show_status(err);
			}
			goto close_dev;
		}
		for (i = 0; i <= ns.nlbaf; ++i) {
			if ((1 << ns.lbaf[i].ds) == cfg.bs && ns.lbaf[i].ms == 0) {
				cfg.flbas = i;
				break;
			}
		}

	}
	if (cfg.flbas == 0xff) {
		fprintf(stderr,
			"FLBAS corresponding to block size %"PRIu64" not found\n",
			(uint64_t)cfg.bs);
		fprintf(stderr,
			"Please correct block size, or specify FLBAS directly\n");

		err = -EINVAL;
		goto close_dev;
	}

	err = parse_lba_num_si(dev, "nsze", cfg.nsze_si, cfg.flbas, &cfg.nsze);
	if (err)
		goto close_dev;

	err = parse_lba_num_si(dev, "ncap", cfg.ncap_si, cfg.flbas, &cfg.ncap);
	if (err)
		goto close_dev;

	struct nvme_id_ns ns2 = {
		.nsze = cpu_to_le64(cfg.nsze),
		.ncap = cpu_to_le64(cfg.ncap),
		.flbas = cfg.flbas,
		.dps = cfg.dps,
		.nmic = cfg.nmic,
		.anagrpid = cpu_to_le32(cfg.anagrpid),
		.nvmsetid = cpu_to_le16(cfg.nvmsetid),
		.lbstm = cpu_to_le64(cfg.lbstm),
	};

	err = nvme_cli_ns_mgmt_create(dev, &ns2, &nsid, cfg.timeout, cfg.csi);
	if (!err)
		printf("%s: Success, created nsid:%d\n", cmd->name, nsid);
	else if (err > 0)
		nvme_show_status(err);
	else
		fprintf(stderr, "create namespace: %s\n", nvme_strerror(errno));

close_dev:
	dev_close(dev);
ret:
	return err;
}

static bool nvme_match_device_filter(nvme_subsystem_t s,
		nvme_ctrl_t c, nvme_ns_t ns, void *f_args)
{
	int ret, instance, nsid, s_num;
	char *devname = f_args;

	if (!devname || !strlen(devname))
		return true;

	ret = sscanf(devname, "nvme%dn%d", &instance, &nsid);
	if (ret != 2)
		return true;

	if (s) {
		ret = sscanf(nvme_subsystem_get_name(s), "nvme-subsys%d",
			     &s_num);
		if (ret == 1 && s_num == instance)
			return true;
	}
	if (c) {
		s = nvme_ctrl_get_subsystem(c);

		ret = sscanf(nvme_subsystem_get_name(s), "nvme-subsys%d",
			     &s_num);
		if (ret == 1 && s_num == instance)
			return true;
	}
	if (ns) {
		if (!strcmp(devname, nvme_ns_get_name(ns)))
			return true;
	}

	return false;
}

static int list_subsys(int argc, char **argv, struct command *cmd,
		struct plugin *plugin)
{
	nvme_root_t r = NULL;
	enum nvme_print_flags flags;
	const char *desc = "Retrieve information for subsystems";
	nvme_scan_filter_t filter = NULL;
	char *devname;
	int err;
	int nsid = NVME_NSID_ALL;

	struct config {
		char	*output_format;
		int	verbose;
	};

	struct config cfg = {
		.output_format	= "normal",
		.verbose	= 0,
	};

	OPT_ARGS(opts) = {
		OPT_FMT("output-format", 'o', &cfg.output_format, output_format_no_binary),
		OPT_INCR("verbose",      'v', &cfg.verbose,       verbose),
		OPT_END()
	};

	err = argconfig_parse(argc, argv, desc, opts);
	if (err < 0)
		goto ret;

	devname = NULL;
	if (optind < argc)
		devname = basename(argv[optind++]);

	err = flags = validate_output_format(cfg.output_format);
	if (flags < 0)
		goto ret;
	if (flags != JSON && flags != NORMAL) {
		err = -EINVAL;
		goto ret;
	}
	if (cfg.verbose)
		flags |= VERBOSE;

	r = nvme_create_root(stderr, map_log_level(cfg.verbose, false));
	if (!r) {
		if (devname)
			fprintf(stderr,
				"Failed to scan nvme subsystem for %s\n",
				devname);
		else
			fprintf(stderr, "Failed to scan nvme subsystem\n");
		err = -errno;
		goto ret;
	}

	if (devname) {
		int subsys_num;

		if (sscanf(devname, "nvme%dn%d", &subsys_num, &nsid) != 2) {
			fprintf(stderr, "Invalid device name %s\n", devname);
			err = -EINVAL;
			goto ret;
		}
		filter = nvme_match_device_filter;
	}

	err = nvme_scan_topology(r, filter, (void *)devname);
	if (err) {
		fprintf(stderr, "Failed to scan topology: %s\n",
			nvme_strerror(errno));
		goto ret;
	}

	nvme_show_subsystem_list(r, nsid != NVME_NSID_ALL, flags);

ret:
	if (r)
		nvme_free_tree(r);
	return err;
}

static int list(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	const char *desc = "Retrieve basic information for all NVMe namespaces";
	enum nvme_print_flags flags;
	nvme_root_t r;
	int err = 0;

	struct config {
		char	*output_format;
		bool	verbose;
	};

	struct config cfg = {
		.output_format	= "normal",
		.verbose	= false,
	};

	OPT_ARGS(opts) = {
		OPT_FMT("output-format", 'o', &cfg.output_format, output_format_no_binary),
		OPT_FLAG("verbose",      'v', &cfg.verbose,       verbose),
		OPT_END()
	};

	err = argconfig_parse(argc, argv, desc, opts);
	if (err < 0)
		return err;

	err = flags = validate_output_format(cfg.output_format);
	if (flags < 0)
		return err;
	if (flags != JSON && flags != NORMAL) {
		fprintf(stderr, "Invalid output format\n");
		return -EINVAL;
	}
	if (cfg.verbose)
		flags |= VERBOSE;

	r = nvme_create_root(stderr, map_log_level(cfg.verbose, false));
	if (!r) {
		fprintf(stderr, "Failed to create topology root: %s\n",
			nvme_strerror(errno));
		return -errno;
	}
	err = nvme_scan_topology(r, NULL, NULL);
	if (err < 0) {
		fprintf(stderr, "Failed to scan topology: %s\n",
			 nvme_strerror(errno));
		nvme_free_tree(r);
		return err;
	}

	nvme_show_list_items(r, flags);
	nvme_free_tree(r);

	return err;
}

int __id_ctrl(int argc, char **argv, struct command *cmd, struct plugin *plugin,
		void (*vs)(__u8 *vs, struct json_object *root))
{
	const char *desc = "Send an Identify Controller command to "\
		"the given device and report information about the specified "\
		"controller in human-readable or "\
		"binary format. May also return vendor-specific "\
		"controller attributes in hex-dump if requested.";
	const char *vendor_specific = "dump binary vendor field";
	enum nvme_print_flags flags;
	struct nvme_id_ctrl ctrl;
	struct nvme_dev *dev;
	int err;

	struct config {
		bool	vendor_specific;
		char	*output_format;
		bool	raw_binary;
		bool	human_readable;
	};

	struct config cfg = {
		.vendor_specific	= false,
		.output_format		= "normal",
		.raw_binary		= false,
		.human_readable		= false,
	};

	OPT_ARGS(opts) = {
		OPT_FLAG("vendor-specific", 'v', &cfg.vendor_specific, vendor_specific),
		OPT_FMT("output-format",    'o', &cfg.output_format,   output_format),
		OPT_FLAG("raw-binary",      'b', &cfg.raw_binary,      raw_identify),
		OPT_FLAG("human-readable",  'H', &cfg.human_readable,  human_readable_identify),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		goto ret;

	err = flags = validate_output_format(cfg.output_format);
	if (flags < 0)
		goto close_dev;
	if (cfg.raw_binary)
		flags = BINARY;
	if (cfg.vendor_specific)
		flags |= VS;
	if (cfg.human_readable)
		flags |= VERBOSE;

	err = nvme_cli_identify_ctrl(dev, &ctrl);
	if (!err)
		nvme_show_id_ctrl(&ctrl, flags, vs);
	else if (err > 0)
		nvme_show_status(err);
	else
		fprintf(stderr, "identify controller: %s\n", nvme_strerror(errno));
close_dev:
	dev_close(dev);
ret:
	return err;
}

static int id_ctrl(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	return __id_ctrl(argc, argv, cmd, plugin, NULL);
}

static int nvm_id_ctrl(int argc, char **argv, struct command *cmd,
	struct plugin *plugin)
{
	const char *desc = "Send an Identify Controller NVM Command Set "\
		"command to the given device and report information about "\
		"the specified controller in various formats.";
	enum nvme_print_flags flags;
	struct nvme_id_ctrl_nvm ctrl_nvm;
	struct nvme_dev *dev;
	int err = -1;

	struct config {
		char	*output_format;
	};

	struct config cfg = {
		.output_format	= "normal",
	};

	OPT_ARGS(opts) = {
		OPT_FMT("output-format", 'o', &cfg.output_format,   output_format),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		goto ret;

	err = flags = validate_output_format(cfg.output_format);
	if (flags < 0)
		goto close_dev;

	err = nvme_nvm_identify_ctrl(dev_fd(dev), &ctrl_nvm);
	if (!err)
		nvme_show_id_ctrl_nvm(&ctrl_nvm, flags);
	else if (err > 0)
		nvme_show_status(err);
	else
		fprintf(stderr, "nvm identify controller: %s\n", nvme_strerror(errno));
close_dev:
	dev_close(dev);
ret:
	return err;
}

static int nvm_id_ns(int argc, char **argv, struct command *cmd,
	struct plugin *plugin)
{
	const char *desc = "Send an Identify Namespace NVM Command Set "\
		"command to the given device and report information about "\
		"the specified namespace in various formats.";
	enum nvme_print_flags flags;
	struct nvme_nvm_id_ns id_ns;
	struct nvme_id_ns ns;
	struct nvme_dev *dev;
	int err = -1;

	struct config {
		__u32	namespace_id;
		__u8	uuid_index;
		char	*output_format;
		bool	verbose;
	};

	struct config cfg = {
		.namespace_id	= 0,
		.uuid_index	= NVME_UUID_NONE,
		.output_format	= "normal",
		.verbose	= false,
	};

	OPT_ARGS(opts) = {
		OPT_UINT("namespace-id", 'n', &cfg.namespace_id,    namespace_id_desired),
		OPT_BYTE("uuid-index",   'U', &cfg.uuid_index,      uuid_index),
		OPT_FMT("output-format", 'o', &cfg.output_format,   output_format),
		OPT_FLAG("verbose",      'v', &cfg.verbose,         verbose),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		goto ret;

	err = flags = validate_output_format(cfg.output_format);
	if (flags < 0)
		goto close_dev;

	if (cfg.verbose)
		flags |= VERBOSE;

	if (!cfg.namespace_id) {
		err = nvme_get_nsid(dev_fd(dev), &cfg.namespace_id);
		if (err < 0) {
			perror("get-namespace-id");
			goto close_dev;
		}
	}

	err = nvme_cli_identify_ns(dev, cfg.namespace_id, &ns);
	if (err) {
		nvme_show_status(err);
		goto close_dev;
	}

	err = nvme_identify_ns_csi(dev_fd(dev), cfg.namespace_id,
							cfg.uuid_index,
							NVME_CSI_NVM, &id_ns);
	if (!err)
		nvme_show_nvm_id_ns(&id_ns, cfg.namespace_id, &ns, 0, false, flags);
	else if (err > 0)
		nvme_show_status(err);
	else
		perror("nvm identify namespace");
close_dev:
	dev_close(dev);
ret:
	return nvme_status_to_errno(err, false);
}

static int nvm_id_ns_lba_format(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	const char *desc = "Send an NVM Command Set specific Identify Namespace "
		"command to the given device, returns capability field properties of "
		"the specified LBA Format index in the specified namespace in various "
		"formats.";
	enum nvme_print_flags flags;
	struct nvme_id_ns ns;
	struct nvme_nvm_id_ns nvm_ns;
	struct nvme_dev *dev;
	int err = -1;

	struct config {
		__u16	lba_format_index;
		__u8	uuid_index;
		bool	verbose;
		char	*output_format;
	};

	struct config cfg = {
		.lba_format_index	= 0,
		.uuid_index		= NVME_UUID_NONE,
		.verbose		= false,
		.output_format		= "normal",
	};

	OPT_ARGS(opts) = {
		OPT_UINT("lba-format-index", 'i', &cfg.lba_format_index, lba_format_index),
		OPT_BYTE("uuid-index",       'U', &cfg.uuid_index,       uuid_index),
		OPT_FLAG("verbose",          'v', &cfg.verbose,          verbose),
		OPT_FMT("output-format",     'o', &cfg.output_format,    output_format),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		goto ret;

	err = flags = validate_output_format(cfg.output_format);
	if (flags < 0)
		goto close_dev;

	if (cfg.verbose)
		flags |= VERBOSE;

	err = nvme_cli_identify_ns(dev, NVME_NSID_ALL, &ns);
	if (err) {
		ns.nlbaf = NVME_FEAT_LBA_RANGE_MAX - 1;
		ns.nulbaf = 0;
	}
	err = nvme_identify_iocs_ns_csi_user_data_format(dev_fd(dev),
										cfg.lba_format_index,
										cfg.uuid_index, NVME_CSI_NVM, &nvm_ns);
	if (!err)
		nvme_show_nvm_id_ns(&nvm_ns, 0, &ns, cfg.lba_format_index, true,
						flags);
	else if (err > 0)
		nvme_show_status(err);
	else
		perror("NVM identify namespace for specific LBA format");
close_dev:
	dev_close(dev);
ret:
	return nvme_status_to_errno(err, false);
}

static int ns_descs(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	const char *desc = "Send Namespace Identification Descriptors command to the "\
			    "given device, returns the namespace identification descriptors "\
			    "of the specific namespace in either human-readable or binary format.";
	const char *raw = "show descriptors in binary format";
	enum nvme_print_flags flags;
	struct nvme_dev *dev;
	void *nsdescs;
	int err;

	struct config {
		__u32	namespace_id;
		char	*output_format;
		bool	raw_binary;
	};

	struct config cfg = {
		.namespace_id	= 0,
		.output_format	= "normal",
		.raw_binary	= false,
	};

	OPT_ARGS(opts) = {
		OPT_UINT("namespace-id",  'n', &cfg.namespace_id,  namespace_id_desired),
		OPT_FMT("output-format",  'o', &cfg.output_format, output_format),
		OPT_FLAG("raw-binary",    'b', &cfg.raw_binary,    raw),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		goto ret;

	err = flags = validate_output_format(cfg.output_format);
	if (flags < 0)
		goto close_dev;
	if (cfg.raw_binary)
		flags = BINARY;

	if (!cfg.namespace_id) {
		err = nvme_get_nsid(dev_fd(dev), &cfg.namespace_id);
		if (err < 0) {
			fprintf(stderr, "get-namespace-id: %s\n", nvme_strerror(errno));
			goto close_dev;
		}
	}

	if (posix_memalign(&nsdescs, getpagesize(), 0x1000)) {
		err = -ENOMEM;
		goto close_dev;
	}

	err = nvme_cli_identify_ns_descs(dev, cfg.namespace_id, nsdescs);
	if (!err)
		nvme_show_id_ns_descs(nsdescs, cfg.namespace_id, flags);
	else if (err > 0)
		nvme_show_status(err);
	else
		fprintf(stderr, "identify namespace: %s\n", nvme_strerror(errno));
	free(nsdescs);
close_dev:
	dev_close(dev);
ret:
	return err;
}

static int id_ns(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	const char *desc = "Send an Identify Namespace command to the "\
		"given device, returns properties of the specified namespace "\
		"in either human-readable or binary format. Can also return "\
		"binary vendor-specific namespace attributes.";
	const char *force = "Return this namespace, even if not attached (1.2 devices only)";
	const char *vendor_specific = "dump binary vendor fields";

	enum nvme_print_flags flags;
	struct nvme_id_ns ns;
	struct nvme_dev *dev;
	int err;

	struct config {
		__u32	namespace_id;
		bool	force;
		bool	vendor_specific;
		bool	raw_binary;
		char	*output_format;
		bool	human_readable;
	};

	struct config cfg = {
		.namespace_id		= 0,
		.force			= false,
		.vendor_specific	= false,
		.raw_binary		= false,
		.output_format		= "normal",
		.human_readable		= false,
	};

	OPT_ARGS(opts) = {
		OPT_UINT("namespace-id",    'n', &cfg.namespace_id,    namespace_id_desired),
		OPT_FLAG("force",             0, &cfg.force,           force),
		OPT_FLAG("vendor-specific", 'v', &cfg.vendor_specific, vendor_specific),
		OPT_FLAG("raw-binary",      'b', &cfg.raw_binary,      raw_identify),
		OPT_FMT("output-format",    'o', &cfg.output_format,   output_format),
		OPT_FLAG("human-readable",  'H', &cfg.human_readable,  human_readable_identify),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		goto ret;

	err = flags = validate_output_format(cfg.output_format);
	if (flags < 0)
		goto close_dev;
	if (cfg.raw_binary)
		flags = BINARY;
	if (cfg.vendor_specific)
		flags |= VS;
	if (cfg.human_readable)
		flags |= VERBOSE;

	if (!cfg.namespace_id) {
		err = nvme_get_nsid(dev_fd(dev), &cfg.namespace_id);
		if (err < 0) {
			fprintf(stderr, "get-namespace-id: %s\n", nvme_strerror(errno));
			goto close_dev;
		}
	}

	if (cfg.force)
		err = nvme_cli_identify_allocated_ns(dev,
						     cfg.namespace_id, &ns);
	else
		err = nvme_cli_identify_ns(dev, cfg.namespace_id, &ns);

	if (!err)
		nvme_show_id_ns(&ns, cfg.namespace_id, 0, false, flags);
	else if (err > 0)
		nvme_show_status(err);
	else
		fprintf(stderr, "identify namespace: %s\n", nvme_strerror(errno));
close_dev:
	dev_close(dev);
ret:
	return err;
}

static int cmd_set_independent_id_ns(int argc, char **argv,
    struct command *cmd, struct plugin *plugin)
{
	const char *desc = "Send an I/O Command Set Independent Identify "\
		"Namespace command to the given device, returns properties of the "\
		"specified namespace in human-readable or binary or json format.";

	enum nvme_print_flags flags;
	struct nvme_id_independent_id_ns ns;
	struct nvme_dev *dev;
	int err = -1;

	struct config {
		__u32	namespace_id;
		bool	raw_binary;
		char	*output_format;
		bool	human_readable;
	};

	struct config cfg = {
		.namespace_id	= 0,
		.raw_binary	= false,
		.output_format	= "normal",
		.human_readable	= false,
	};

	OPT_ARGS(opts) = {
		OPT_UINT("namespace-id",    'n', &cfg.namespace_id,    namespace_id_desired),
		OPT_FLAG("raw-binary",      'b', &cfg.raw_binary,      raw_identify),
		OPT_FMT("output-format",    'o', &cfg.output_format,   output_format),
		OPT_FLAG("human-readable",  'H', &cfg.human_readable,  human_readable_identify),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		goto ret;

	err = flags = validate_output_format(cfg.output_format);
	if (flags < 0)
		goto close_dev;
	if (cfg.raw_binary)
		flags = BINARY;
	if (cfg.human_readable)
		flags |= VERBOSE;

	if (!cfg.namespace_id) {
		err = cfg.namespace_id = nvme_get_nsid(dev_fd(dev),
						       &cfg.namespace_id);
		if (err < 0) {
			perror("get-namespace-id");
			goto close_dev;
		}
	}

	err = nvme_identify_independent_identify_ns(dev_fd(dev),
						    cfg.namespace_id, &ns);
	if (!err)
		nvme_show_cmd_set_independent_id_ns(&ns, cfg.namespace_id, flags);
	else if (err > 0)
		nvme_show_status(err);
	else
		fprintf(stderr, "I/O command set independent identify namespace: %s\n", nvme_strerror(errno));
close_dev:
	dev_close(dev);
ret:
	return err;
}

static int id_ns_granularity(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	const char *desc = "Send an Identify Namespace Granularity List command to the "\
		"given device, returns namespace granularity list "\
		"in either human-readable or binary format.";

	struct nvme_id_ns_granularity_list *granularity_list;
	enum nvme_print_flags flags;
	struct nvme_dev *dev;
	int err;

	struct config {
		char	*output_format;
	};

	struct config cfg = {
		.output_format	= "normal",
	};

	OPT_ARGS(opts) = {
		OPT_FMT("output-format", 'o', &cfg.output_format, output_format),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		goto ret;

	err = flags = validate_output_format(cfg.output_format);
	if (flags < 0)
		goto close_dev;

	if (posix_memalign((void *)&granularity_list, getpagesize(), NVME_IDENTIFY_DATA_SIZE)) {
		fprintf(stderr, "can not allocate granularity list payload\n");
		err = -ENOMEM;
		goto close_dev;
	}

	err = nvme_identify_ns_granularity(dev_fd(dev), granularity_list);
	if (!err)
		nvme_show_id_ns_granularity_list(granularity_list, flags);
	else if (err > 0)
		nvme_show_status(err);
	else
		fprintf(stderr, "identify namespace granularity: %s\n", nvme_strerror(errno));
	free(granularity_list);
close_dev:
	dev_close(dev);
ret:
	return err;
}

static int id_nvmset(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	const char *desc = "Send an Identify NVM Set List command to the "\
		"given device, returns entries for NVM Set identifiers greater "\
		"than or equal to the value specified CDW11.NVMSETID "\
		"in either binary format or json format";
	const char *nvmset_id = "NVM Set Identify value";

	struct nvme_id_nvmset_list nvmset;
	enum nvme_print_flags flags;
	struct nvme_dev *dev;
	int err;

	struct config {
		__u16	nvmset_id;
		char	*output_format;
	};

	struct config cfg = {
		.nvmset_id	= 0,
		.output_format	= "normal",
	};

	OPT_ARGS(opts) = {
		OPT_SHRT("nvmset_id",    'i', &cfg.nvmset_id,     nvmset_id),
		OPT_FMT("output-format", 'o', &cfg.output_format, output_format),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		goto ret;

	err = flags = validate_output_format(cfg.output_format);
	if (flags < 0)
		goto close_dev;

	err = nvme_identify_nvmset_list(dev_fd(dev), cfg.nvmset_id, &nvmset);
	if (!err)
		nvme_show_id_nvmset(&nvmset, cfg.nvmset_id, flags);
	else if (err > 0)
		nvme_show_status(err);
	else
		fprintf(stderr, "identify nvm set list: %s\n", nvme_strerror(errno));

close_dev:
	dev_close(dev);
ret:
	return err;
}

static int id_uuid(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	const char *desc = "Send an Identify UUID List command to the "\
		"given device, returns list of supported Vendor Specific UUIDs "\
		"in either human-readable or binary format.";
	const char *raw = "show uuid in binary format";
	const char *human_readable = "show uuid in readable format";

	struct nvme_id_uuid_list uuid_list;
	enum nvme_print_flags flags;
	struct nvme_dev *dev;
	int err;

	struct config {
		char	*output_format;
		bool	raw_binary;
		bool	human_readable;
	};

	struct config cfg = {
		.output_format	= "normal",
		.raw_binary	= false,
		.human_readable	= false,
	};

	OPT_ARGS(opts) = {
		OPT_FMT("output-format",   'o', &cfg.output_format,  output_format),
		OPT_FLAG("raw-binary",     'b', &cfg.raw_binary,     raw),
		OPT_FLAG("human-readable", 'H', &cfg.human_readable, human_readable),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		goto ret;

	err = flags = validate_output_format(cfg.output_format);
	if (flags < 0)
		goto close_dev;
	if (cfg.raw_binary)
		flags = BINARY;
	if (cfg.human_readable)
		flags |= VERBOSE;

	err = nvme_identify_uuid(dev_fd(dev), &uuid_list);
	if (!err)
		nvme_show_id_uuid_list(&uuid_list, flags);
	else if (err > 0)
		nvme_show_status(err);
	else
		fprintf(stderr, "identify UUID list: %s\n", nvme_strerror(errno));
close_dev:
	dev_close(dev);
ret:
	return err;;
}

static int id_iocs(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	const char *desc = "Send an Identify Command Set Data command to the "\
		"given device, returns properties of the specified controller "\
		"in either human-readable or binary format.";
	const char *controller_id = "identifier of desired controller";
	struct nvme_id_iocs iocs;
	struct nvme_dev *dev;
	int err;

	struct config {
		__u16	cntid;
	};

	struct config cfg = {
		.cntid	= 0xffff,
	};

	OPT_ARGS(opts) = {
		OPT_SHRT("controller-id", 'c', &cfg.cntid, controller_id),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		goto ret;

	err = nvme_identify_iocs(dev_fd(dev), cfg.cntid, &iocs);
	if (!err) {
		printf("NVMe Identify I/O Command Set:\n");
		nvme_show_id_iocs(&iocs);
	} else if (err > 0)
		nvme_show_status(err);
	else
		fprintf(stderr, "NVMe Identify I/O Command Set: %s\n", nvme_strerror(errno));

	dev_close(dev);
ret:
	return err;
}

static int id_domain(int argc, char **argv, struct command *cmd, struct plugin *plugin) {
	const char *desc = "Send an Identify Domain List command to the "\
		"given device, returns properties of the specified domain "\
		"in either normal|json|binary format.";
	const char *domain_id = "identifier of desired domain";
	struct nvme_id_domain_list id_domain;
	enum nvme_print_flags flags;
	struct nvme_dev *dev;
	int err;

	struct config {
		__u16	dom_id;
		char	*output_format;
	};

	struct config cfg = {
		.dom_id		= 0xffff,
		.output_format	= "normal",
	};

	OPT_ARGS(opts) = {
		OPT_SHRT("dom-id",         'd', &cfg.dom_id,         domain_id),
		OPT_FMT("output-format",   'o', &cfg.output_format,  output_format),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		goto ret;

	err = flags = validate_output_format(cfg.output_format);
	if (flags < 0)
		goto close_dev;

	err = nvme_identify_domain_list(dev_fd(dev), cfg.dom_id, &id_domain);
	if (!err) {
		printf("NVMe Identify command for Domain List is successful:\n");
		printf("NVMe Identify Domain List:\n");
		nvme_show_id_domain_list(&id_domain, flags);
	} else if (err > 0)
		nvme_show_status(err);
	else
		fprintf(stderr, "NVMe Identify Domain List: %s\n", nvme_strerror(errno));

close_dev:
	dev_close(dev);
ret:
	return err;
}

static int get_ns_id(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	const char *desc = "Get namespace ID of a the block device.";
	struct nvme_dev *dev;
	unsigned int nsid;
	int err = 0;

	OPT_ARGS(opts) = {
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		goto ret;

	err = nvme_get_nsid(dev_fd(dev), &nsid);
	if (err < 0) {
		fprintf(stderr, "get namespace ID: %s\n", nvme_strerror(errno));
		err = errno;
		goto close_fd;
	}
	err = 0;
	printf("%s: namespace-id:%d\n", dev->name, nsid);

close_fd:
	dev_close(dev);
ret:
	return err;
}

static int virtual_mgmt(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	const char *desc  = "The Virtualization Management command is supported by primary controllers "\
		"that support the Virtualization Enhancements capability. This command is used for:\n"\
		"  1. Modifying Flexible Resource allocation for the primary controller\n"\
		"  2. Assigning Flexible Resources for secondary controllers\n"\
		"  3. Setting the Online and Offline state for secondary controllers";
	const char *cntlid = "Controller Identifier(CNTLID)";
	const char *rt = "Resource Type(RT): [0,1]\n"\
		"0h: VQ Resources\n"\
		"1h: VI Resources";
	const char *act = "Action(ACT): [1,7,8,9]\n"\
		"1h: Primary Flexible\n"\
		"7h: Secondary Offline\n"\
		"8h: Secondary Assign\n"\
		"9h: Secondary Online";
	const char *nr = "Number of Controller Resources(NR)";
	struct nvme_dev *dev;
	__u32 result;
	int err;

	struct config {
		__u16	cntlid;
		__u8	rt;
		__u8	act;
		__u16	nr;
	};

	struct config cfg = {
		.cntlid	= 0,
		.rt	= 0,
		.act	= 0,
		.nr	= 0,
	};

	OPT_ARGS(opts) = {
		OPT_UINT("cntlid", 'c', &cfg.cntlid, cntlid),
		OPT_BYTE("rt",     'r', &cfg.rt,     rt),
		OPT_BYTE("act",    'a', &cfg.act,    act),
		OPT_SHRT("nr",     'n', &cfg.nr,     nr),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		goto ret;

	struct nvme_virtual_mgmt_args args = {
		.args_size	= sizeof(args),
		.fd		= dev_fd(dev),
		.act		= cfg.act,
		.rt		= cfg.rt,
		.cntlid		= cfg.cntlid,
		.nr		= cfg.nr,
		.timeout	= NVME_DEFAULT_IOCTL_TIMEOUT,
		.result		= &result,
	};
	err = nvme_virtual_mgmt(&args);
	if (!err) {
		printf("success, Number of Controller Resources Modified "\
			"(NRM):%#x\n", result);
	} else if (err > 0) {
		nvme_show_status(err);
	} else
		fprintf(stderr, "virt-mgmt: %s\n", nvme_strerror(errno));

	dev_close(dev);
ret:
	return err;
}

static int primary_ctrl_caps(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	const char *cntlid = "Controller ID";
	const char *desc = "Send an Identify Primary Controller Capabilities "\
		"command to the given device and report the information in a "\
		"decoded format (default), json or binary.";
	struct nvme_primary_ctrl_cap caps;
	enum nvme_print_flags flags;
	struct nvme_dev *dev;
	int err;

	struct config {
		__u16	cntlid;
		char	*output_format;
		bool	human_readable;
	};

	struct config cfg = {
		.cntlid		= 0,
		.output_format	= "normal",
		.human_readable	= false,
	};

	OPT_ARGS(opts) = {
		OPT_UINT("cntlid",         'c', &cfg.cntlid, cntlid),
		OPT_FMT("output-format",   'o', &cfg.output_format,  output_format),
		OPT_FLAG("human-readable", 'H', &cfg.human_readable, human_readable_info),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		goto ret;

	err = flags = validate_output_format(cfg.output_format);
	if (flags < 0)
		goto close_dev;
	if (cfg.human_readable)
		flags |= VERBOSE;

	err = nvme_cli_identify_primary_ctrl(dev, cfg.cntlid, &caps);
	if (!err)
		nvme_show_primary_ctrl_cap(&caps, flags);
	else if (err > 0)
		nvme_show_status(err);
	else
		fprintf(stderr, "identify primary controller capabilities: %s\n", nvme_strerror(errno));
close_dev:
	dev_close(dev);
ret:
	return err;
}

static int list_secondary_ctrl(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	const char *desc = "Show secondary controller list associated with the primary controller "\
		"of the given device.";
	const char *controller = "lowest controller identifier to display";
	const char *num_entries = "number of entries to retrieve";

	struct nvme_secondary_ctrl_list *sc_list;
	enum nvme_print_flags flags;
	struct nvme_dev *dev;
	int err;

	struct config {
		__u16	cntid;
		__u32	namespace_id;
		__u32	num_entries;
		char	*output_format;
	};

	struct config cfg = {
		.cntid		= 0,
		.namespace_id	= 0,
		.num_entries	= ARRAY_SIZE(sc_list->sc_entry),
		.output_format	= "normal",
	};

	OPT_ARGS(opts) = {
		OPT_SHRT("cntid",        'c', &cfg.cntid,         controller),
		OPT_UINT("namespace-id", 'n', &cfg.namespace_id,  namespace_id_optional),
		OPT_UINT("num-entries",  'e', &cfg.num_entries,   num_entries),
		OPT_FMT("output-format", 'o', &cfg.output_format, output_format),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		goto ret;

	err = flags = validate_output_format(cfg.output_format);
	if (flags < 0)
		goto close_err;

	if (!cfg.num_entries) {
		fprintf(stderr, "non-zero num-entries is required param\n");
		err = -EINVAL;
		goto close_err;
	}

	if (posix_memalign((void *)&sc_list, getpagesize(), sizeof(*sc_list))) {
		fprintf(stderr, "can not allocate controller list payload\n");
		err = -ENOMEM;
		goto close_err;
	}

	err = nvme_cli_identify_secondary_ctrl_list(dev, cfg.namespace_id,
						    cfg.cntid, sc_list);
	if (!err)
		nvme_show_list_secondary_ctrl(sc_list, cfg.num_entries, flags);
	else if (err > 0)
		nvme_show_status(err);
	else
		fprintf(stderr, "id secondary controller list: %s\n", nvme_strerror(errno));

	free(sc_list);

close_err:
	dev_close(dev);
ret:
	return err;
}

static void intr_self_test(int signum)
{
	printf("\nInterrupted device self-test operation by %s\n", strsignal(signum));
	errno = EINTR;
}

static int sleep_self_test(unsigned int seconds)
{
	errno = 0;

	sleep(seconds);

	if (errno)
		return -errno;

	return 0;
}

static int wait_self_test(struct nvme_dev *dev)
{
	static const char spin[] = {'-', '\\', '|', '/' };
	struct nvme_self_test_log log;
	struct nvme_id_ctrl ctrl;
	int err, i = 0, p = 0, cnt = 0;
	int wthr;

	signal(SIGINT, intr_self_test);

	err = nvme_cli_identify_ctrl(dev, &ctrl);
	if (err) {
		fprintf(stderr, "identify-ctrl: %s\n", nvme_strerror(errno));
		return err;
	}

	wthr = le16_to_cpu(ctrl.edstt) * 60 / 100 + 60;

	printf("Waiting for self test completion...\n");
	while (true) {
		printf("\r[%.*s%c%.*s] %3d%%", p / 2, dash, spin[i % 4], 49 - p / 2, space, p);
		fflush(stdout);
		err = sleep_self_test(1);
		if (err)
			return err;

		err = nvme_cli_get_log_device_self_test(dev, &log);
		if (err) {
			printf("\n");
			if (err < 0)
				perror("self test log\n");
			else
				nvme_show_status(err);
			return err;
		}

		if (++cnt > wthr) {
			fprintf(stderr, "no progress for %d seconds, stop waiting\n", wthr);
			return -EIO;
		}

		if (log.completion == 0 && p > 0) {
			printf("\r[%.*s] %3d%%\n", 50, dash, 100);
			break;
		}

		if (log.completion < p) {
			printf("\n");
			fprintf(stderr, "progress broken\n");
			return -EIO;
		} else if (log.completion != p) {
			p = log.completion;
			cnt = 0;
		}

		i++;
	}

	return 0;
}

static void abort_self_test(struct nvme_dev_self_test_args *args)
{
	int err;

	args->stc = NVME_DST_STC_ABORT;

	err = nvme_dev_self_test(args);
	if (!err) {
		printf("Aborting device self-test operation\n");
	} else if (err > 0) {
		nvme_show_status(err);
	} else
		fprintf(stderr, "Device self-test: %s\n", nvme_strerror(errno));
}

static int device_self_test(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	const char *desc  = "Implementing the device self-test feature"\
		" which provides the necessary log to determine the state of the device";
	const char *namespace_id = "Indicate the namespace in which the device self-test"\
		" has to be carried out";
	const char * self_test_code = "This field specifies the action taken by the device self-test command :\n"\
		"0h Show current state of device self-test operation\n"\
		"1h Start a short device self-test operation\n"\
		"2h Start a extended device self-test operation\n"\
		"eh Start a vendor specific device self-test operation\n"\
		"fh Abort the device self-test operation";
	const char *wait = "Wait for the test to finish";
	struct nvme_dev *dev;
	int err;

	struct config {
		__u32	namespace_id;
		__u8	stc;
		bool	wait;
	};

	struct config cfg = {
		.namespace_id	= NVME_NSID_ALL,
		.stc		= NVME_ST_CODE_RESERVED,
		.wait		= false,
	};

	OPT_ARGS(opts) = {
		OPT_UINT("namespace-id",   'n', &cfg.namespace_id, namespace_id),
		OPT_BYTE("self-test-code", 's', &cfg.stc,          self_test_code),
		OPT_FLAG("wait",           'w', &cfg.wait,         wait),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		goto ret;

	if (cfg.stc == NVME_ST_CODE_RESERVED) {
		struct nvme_self_test_log log;
		err = nvme_cli_get_log_device_self_test(dev, &log);
		if (err) {
			printf("\n");
			if (err < 0)
				perror("self test log\n");
			else
				nvme_show_status(err);
		}

		if (log.completion == 0) {
			printf("no self test running\n");
		} else {
			if (cfg.wait)
				err = wait_self_test(dev);
			else
				printf("progress %d%%\n", log.completion);
		}
		goto close_dev;
	}

	struct nvme_dev_self_test_args args = {
		.args_size	= sizeof(args),
		.fd		= dev_fd(dev),
		.nsid		= cfg.namespace_id,
		.stc		= cfg.stc,
		.timeout	= NVME_DEFAULT_IOCTL_TIMEOUT,
		.result		= NULL,
	};
	err = nvme_dev_self_test(&args);
	if (!err) {
		if (cfg.stc == NVME_ST_CODE_ABORT)
			printf("Aborting device self-test operation\n");
		else if (cfg.stc == NVME_ST_CODE_EXTENDED)
			printf("Extended Device self-test started\n");
		else if (cfg.stc == NVME_ST_CODE_SHORT)
			printf("Short Device self-test started\n");

		if (cfg.wait && cfg.stc != NVME_ST_CODE_ABORT)
			err = wait_self_test(dev);
	} else if (err > 0) {
		nvme_show_status(err);
	} else
		fprintf(stderr, "Device self-test: %s\n", nvme_strerror(errno));

close_dev:
	if (err == -EINTR)
		abort_self_test(&args);

	dev_close(dev);
ret:
	return err;
}

static int self_test_log(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	const char *desc = "Retrieve the self-test log for the given device and given test "\
			"(or optionally a namespace) in either decoded format "\
			"(default) or binary.";
	const char *dst_entries = "Indicate how many DST log entries to be retrieved, "\
			"by default all the 20 entries will be retrieved";

	struct nvme_self_test_log log;
	enum nvme_print_flags flags;
	struct nvme_dev *dev;
	int err;

	struct config {
		__u8	dst_entries;
		char	*output_format;
		bool	verbose;
	};

	struct config cfg = {
		.dst_entries	= NVME_LOG_ST_MAX_RESULTS,
		.output_format	= "normal",
		.verbose	= false,
	};

	OPT_ARGS(opts) = {
		OPT_BYTE("dst-entries",  'e', &cfg.dst_entries,   dst_entries),
		OPT_FMT("output-format", 'o', &cfg.output_format, output_format),
		OPT_FLAG("verbose",      'v', &cfg.verbose,       verbose),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		goto ret;

	err = flags = validate_output_format(cfg.output_format);
	if (flags < 0)
		goto close_dev;
	if (cfg.verbose)
		flags |= VERBOSE;

	err = nvme_cli_get_log_device_self_test(dev, &log);
	if (!err)
		nvme_show_self_test_log(&log, cfg.dst_entries, 0,
					dev->name, flags);
	else if (err > 0)
		nvme_show_status(err);
	else
		fprintf(stderr, "self test log: %s\n", nvme_strerror(errno));
close_dev:
	dev_close(dev);
ret:
	return err;
}

static int get_feature_id(struct nvme_dev *dev, struct feat_cfg *cfg,
			  void **buf, __u32 *result)
{
	size_t size;

	if (!cfg->data_len)
		nvme_get_feature_length(cfg->feature_id, cfg->cdw11,
					&cfg->data_len);

	/* check for Extended Host Identifier */
	if (cfg->feature_id == NVME_FEAT_FID_HOST_ID && (cfg->cdw11 & 0x1))
		cfg->data_len = 16;

	if (cfg->feature_id == NVME_FEAT_FID_FDP_EVENTS) {
		cfg->data_len = 0xff * sizeof(__u16);
		cfg->cdw11 |= 0xff << 16;
	}

	if (cfg->sel == 3)
		cfg->data_len = 0;

	if (cfg->data_len) {
		/* rounding up size to page size */
		size = ((cfg->data_len - 1) / getpagesize() + 1) * getpagesize();
		if (posix_memalign(buf, getpagesize(), size))
			return -1;
		memset(*buf, 0, size);
	}

	struct nvme_get_features_args args = {
		.args_size	= sizeof(args),
		.fid		= cfg->feature_id,
		.nsid		= cfg->namespace_id,
		.sel		= cfg->sel,
		.cdw11		= cfg->cdw11,
		.uuidx		= cfg->uuid_index,
		.data_len	= cfg->data_len,
		.data		= *buf,
		.timeout	= NVME_DEFAULT_IOCTL_TIMEOUT,
		.result		= result,
	};
	return nvme_cli_get_features(dev, &args);
}

static int filter_out_flags(int status)
{
	return status & (NVME_GET(NVME_SCT_MASK, SCT) |
			 NVME_GET(NVME_SC_MASK, SC));
}

static void get_feature_id_print(struct feat_cfg cfg, int err, __u32 result,
				 void *buf)
{
	int status = filter_out_flags(err);
	enum nvme_status_type type = NVME_STATUS_TYPE_NVME;

	if (!err) {
		if (!cfg.raw_binary || !buf) {
			printf("get-feature:%#0*x (%s), %s value:%#0*x\n",
			       cfg.feature_id ? 4 : 2, cfg.feature_id,
			       nvme_feature_to_string(cfg.feature_id),
			       nvme_select_to_string(cfg.sel), result ? 10 : 8,
			       result);
			if (cfg.sel == 3)
				nvme_show_select_result(result);
			else if (cfg.human_readable)
				nvme_feature_show_fields(cfg.feature_id, result,
							 buf);
			else if (buf)
				d(buf, cfg.data_len, 16, 1);
		} else if (buf) {
			d_raw(buf, cfg.data_len);
		}
	} else if (err > 0) {
		if (!nvme_status_equals(status, type, NVME_SC_INVALID_FIELD) &&
		    !nvme_status_equals(status,  type, NVME_SC_INVALID_NS))
			nvme_show_status(err);
	} else {
		fprintf(stderr, "get-feature: %s\n", nvme_strerror(errno));
	}
}

static int get_feature_id_changed(struct nvme_dev *dev, struct feat_cfg cfg,
				  bool changed)
{
	int err;
	int err_def = 0;
	__u32 result;
	__u32 result_def;
	void *buf = NULL;
	void *buf_def = NULL;

	if (changed)
		cfg.sel = 0;

	err = get_feature_id(dev, &cfg, &buf, &result);

	if (!err && changed) {
		cfg.sel = 1;
		err_def = get_feature_id(dev, &cfg, &buf_def, &result_def);
	}

	if (changed)
		cfg.sel = 8;

	if (err || !changed || err_def || result != result_def ||
	    (buf && buf_def && !strcmp(buf, buf_def)))
		get_feature_id_print(cfg, err, result, buf);

	free(buf);
	free(buf_def);

	return err;
}

static int get_feature_ids(struct nvme_dev *dev, struct feat_cfg cfg)
{
	int err = 0;
	int i;
	int feat_max = 0x100;
	int feat_num = 0;
	bool changed = false;
	int status = 0;
	enum nvme_status_type type = NVME_STATUS_TYPE_NVME;

	if (cfg.sel == 8)
		changed = true;

	if (cfg.feature_id)
		feat_max = cfg.feature_id + 1;

	for (i = cfg.feature_id; i < feat_max; i++, feat_num++) {
		cfg.feature_id = i;
		err = get_feature_id_changed(dev, cfg, changed);
		if (!err)
			continue;
		status = filter_out_flags(err);
		if (nvme_status_equals(status, type, NVME_SC_INVALID_FIELD))
			continue;
		if (!nvme_status_equals(status, type, NVME_SC_INVALID_NS))
			break;
		fprintf(stderr, "get-feature:%#0*x (%s): ",
			cfg.feature_id ? 4 : 2, cfg.feature_id,
			nvme_feature_to_string(cfg.feature_id));
		nvme_show_status(err);
	}

	if (feat_num == 1 &&
	    nvme_status_equals(status, type, NVME_SC_INVALID_FIELD))
		nvme_show_status(err);

	return err;
}

static int get_feature(int argc, char **argv, struct command *cmd,
		       struct plugin *plugin)
{
	const char *desc = "Read operating parameters of the "\
		"specified controller. Operating parameters are grouped "\
		"and identified by Feature Identifiers; each Feature "\
		"Identifier contains one or more attributes that may affect "\
		"behavior of the feature. Each Feature has three possible "\
		"settings: default, saveable, and current. If a Feature is "\
		"saveable, it may be modified by set-feature. Default values "\
		"are vendor-specific and not changeable. Use set-feature to "\
		"change saveable Features.";
	const char *raw = "show feature in binary format";
	const char *feature_id = "feature identifier";
	const char *sel = "[0-3,8]: current/default/saved/supported/changed";
	const char *cdw11 = "feature specific dword 11";
	const char *human_readable = "show feature in readable format";
	struct nvme_dev *dev;
	int err;

	struct feat_cfg cfg = {
		.feature_id	= 0,
		.namespace_id	= 0,
		.sel		= 0,
		.data_len	= 0,
		.raw_binary	= false,
		.cdw11		= 0,
		.uuid_index	= 0,
		.human_readable	= false,
	};

	OPT_ARGS(opts) = {
		OPT_BYTE("feature-id",    'f', &cfg.feature_id,     feature_id),
		OPT_UINT("namespace-id",  'n', &cfg.namespace_id,   namespace_id_desired),
		OPT_BYTE("sel",           's', &cfg.sel,            sel),
		OPT_UINT("data-len",      'l', &cfg.data_len,       buf_len),
		OPT_FLAG("raw-binary",    'b', &cfg.raw_binary,     raw),
		OPT_UINT("cdw11",         'c', &cfg.cdw11,          cdw11),
		OPT_BYTE("uuid-index",    'U', &cfg.uuid_index,     uuid_index_specify),
		OPT_FLAG("human-readable",'H', &cfg.human_readable, human_readable),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		goto ret;

	if (!argconfig_parse_seen(opts, "namespace-id")) {
		err = nvme_get_nsid(dev_fd(dev), &cfg.namespace_id);
		if (err < 0) {
			if (errno != ENOTTY) {
				fprintf(stderr, "get-namespace-id: %s\n", nvme_strerror(errno));
				goto close_dev;
			}
			cfg.namespace_id = NVME_NSID_ALL;
		}
	}

	if (cfg.sel > 7) {
		fprintf(stderr, "invalid 'select' param:%d\n", cfg.sel);
		err = -EINVAL;
		goto close_dev;
	}

	if (cfg.uuid_index > 127) {
		fprintf(stderr, "invalid uuid index param: %u\n", cfg.uuid_index);
		err = -1;
		goto close_dev;
	}

	err = get_feature_ids(dev, cfg);

close_dev:
	dev_close(dev);

ret:
	return err;
}

/* Transfers one chunk of firmware to the device, and decodes & reports any
 * errors. Returns -1 on (fatal) error; signifying that the transfer should
 * be aborted.
 */
static int fw_download_single(struct nvme_dev *dev, void *fw_buf,
			      unsigned int fw_len, uint32_t offset,
			      uint32_t len, bool progress, bool ignore_ovr)
{
	const unsigned int max_retries = 3;
	bool retryable, ovr;
	int err, try;

	if (progress) {
		printf("Firmware download: transferring 0x%08x/0x%08x bytes: %03d%%\r",
		       offset, fw_len, (int)(100 * offset / fw_len));
	}

	struct nvme_fw_download_args args = {
		.args_size	= sizeof(args),
		.offset		= offset,
		.data_len	= len,
		.data		= fw_buf,
		.timeout	= NVME_DEFAULT_IOCTL_TIMEOUT,
		.result		= NULL,
	};

	for (try = 0; try < max_retries; try++) {

		if (try > 0) {
			fprintf(stderr, "retrying offset %x (%u/%u)\n",
				offset, try, max_retries);
		}

		err = nvme_cli_fw_download(dev, &args);
		if (!err)
			return 0;

		/* don't retry if the NVMe-type error indicates Do Not Resend.
		 */
		retryable = !((err > 0) &&
			(nvme_status_get_type(err) == NVME_STATUS_TYPE_NVME) &&
			(nvme_status_get_value(err) & NVME_SC_DNR));

		/* detect overwrite errors, which are handled differently
		 * depending on ignore_ovr */
		ovr = (err > 0) &&
			(nvme_status_get_type(err) == NVME_STATUS_TYPE_NVME) &&
			(NVME_GET(err, SCT) == NVME_SCT_CMD_SPECIFIC) &&
			(NVME_GET(err, SC) == NVME_SC_OVERLAPPING_RANGE);

		if (ovr && ignore_ovr)
			return 0;

		/* if we're printing progress, we'll need a newline to separate
		 * error output from the progress data (which doesn't have a
		 * \n), and flush before we write to stderr.
		 */
		if (progress) {
			printf("\n");
			fflush(stdout);
		}

		fprintf(stderr, "fw-download: error on offset 0x%08x/0x%08x\n",
			offset, fw_len);

		if (err < 0) {
			fprintf(stderr, "fw-download: %s\n", nvme_strerror(errno));
		} else {
			nvme_show_status(err);
			if (ovr) {
				/* non-ignored ovr error: print a little extra info
				 * about recovering */
				fprintf(stderr,
					"Use --ignore-ovr to ignore overwrite errors\n");

				/* We'll just be attempting more overwrites if
				 * we retry. DNR will likely be set, but force
				 * an exit anyway. */
				retryable = false;
			}
		}

		if (!retryable)
			break;
	}

	return -1;
}

static int fw_download(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	const char *desc = "Copy all or part of a firmware image to "\
		"a controller for future update. Optionally, specify how "\
		"many KiB of the firmware to transfer at once. The offset will "\
		"start at 0 and automatically adjust based on xfer size "\
		"unless fw is split across multiple files. May be submitted "\
		"while outstanding commands exist on the Admin and IO "\
		"Submission Queues. Activate downloaded firmware with "\
		"fw-activate, and then reset the device to apply the downloaded firmware.";
	const char *fw = "firmware file (required)";
	const char *xfer = "transfer chunksize limit";
	const char *offset = "starting dword offset, default 0";
	const char *progress = "display firmware transfer progress";
	const char *ignore_ovr = "ignore overwrite errors";
	unsigned int fw_size;
	struct nvme_dev *dev;
	int err, fw_fd = -1;
	struct stat sb;
	void *fw_buf;
	bool huge;
	struct nvme_id_ctrl ctrl;

	struct config {
		char	*fw;
		__u32	xfer;
		__u32	offset;
		bool	progress;
		bool	ignore_ovr;
	};

	struct config cfg = {
		.fw         = "",
		.xfer       = 4096,
		.offset     = 0,
		.progress   = false,
		.ignore_ovr = false,
	};

	OPT_ARGS(opts) = {
		OPT_FILE("fw",         'f', &cfg.fw,         fw),
		OPT_UINT("xfer",       'x', &cfg.xfer,       xfer),
		OPT_UINT("offset",     'o', &cfg.offset,     offset),
		OPT_FLAG("progress",   'p', &cfg.progress,   progress),
		OPT_FLAG("ignore-ovr", 'i', &cfg.ignore_ovr, ignore_ovr),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		goto ret;

	fw_fd = open(cfg.fw, O_RDONLY);
	cfg.offset <<= 2;
	if (fw_fd < 0) {
		fprintf(stderr, "Failed to open firmware file %s: %s\n",
				cfg.fw, strerror(errno));
		err = -EINVAL;
		goto close_dev;
	}

	err = fstat(fw_fd, &sb);
	if (err < 0) {
		perror("fstat");
		goto close_fw_fd;
	}

	fw_size = sb.st_size;
	if ((fw_size & 0x3) || (fw_size == 0)) {
		fprintf(stderr, "Invalid size:%d for f/w image\n", fw_size);
		err = -EINVAL;
		goto close_fw_fd;
	}

	if (cfg.xfer == 0) {
		err = nvme_cli_identify_ctrl(dev, &ctrl);
		if (err) {
			fprintf(stderr, "identify-ctrl: %s\n", nvme_strerror(errno));
			goto close_fw_fd;
		}
		if (ctrl.fwug == 0 || ctrl.fwug == 0xff)
			cfg.xfer = 4096;
		else
			cfg.xfer = ctrl.fwug * 4096;
	}
	else if (cfg.xfer % 4096)
		cfg.xfer = 4096;

	if (cfg.xfer < HUGE_MIN)
		fw_buf = __nvme_alloc(fw_size, &huge);
	else
		fw_buf = nvme_alloc(fw_size, &huge);

	if (!fw_buf) {
		err = -ENOMEM;
		goto close_fw_fd;
	}

	if (read(fw_fd, fw_buf, fw_size) != ((ssize_t)(fw_size))) {
		err = -errno;
		fprintf(stderr, "read :%s :%s\n", cfg.fw, strerror(errno));
		goto free;
	}

	while (cfg.offset < fw_size) {
		cfg.xfer = min(cfg.xfer, fw_size);

		err = fw_download_single(dev, fw_buf + cfg.offset, fw_size,
					 cfg.offset, cfg.xfer, cfg.progress,
					 cfg.ignore_ovr);
		if (err)
			break;

		cfg.offset += cfg.xfer;
	}

	if (!err) {
		/* end the progress output */
		if (cfg.progress)
			printf("\n");
		printf("Firmware download success\n");
	}

free:
	nvme_free(fw_buf, huge);
close_fw_fd:
	close(fw_fd);
close_dev:
	dev_close(dev);
ret:
	return err;
}

static char *nvme_fw_status_reset_type(__u16 status)
{
	switch (status & 0x7ff) {
	case NVME_SC_FW_NEEDS_CONV_RESET:
		return "conventional";
	case NVME_SC_FW_NEEDS_SUBSYS_RESET:
		return "subsystem";
	case NVME_SC_FW_NEEDS_RESET:
		return "any controller";
	default:
		return "unknown";
	}
}

static bool fw_commit_support_mud(struct nvme_dev *dev)
{
	struct nvme_id_ctrl ctrl;
	int err;

	err = nvme_cli_identify_ctrl(dev, &ctrl);

	if (err)
		fprintf(stderr, "identify-ctrl: %s\n", nvme_strerror(errno));
	else if (ctrl.frmw >> 5 & 0x1)
		return true;

	return false;
}

static void fw_commit_print_mud(struct nvme_dev *dev, __u32 result)
{
	if (!fw_commit_support_mud(dev))
		return;

	printf("Multiple Update Detected (MUD) Value: %u\n", result);

	if (result & 0x1)
		printf("Detected an overlapping firmware/boot partition image update command "\
		       "sequence due to processing a command from a Management Endpoint");

	if (result >> 1 & 0x1)
		printf("Detected an overlapping firmware/boot partition image update command "\
		       "sequence due to processing a command from an Admin SQ on a controller");
}

static int fw_commit(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	const char *desc = "Verify downloaded firmware image and "\
		"commit to specific firmware slot. Device is not automatically "\
		"reset following firmware activation. A reset may be issued "\
		"with an 'echo 1 > /sys/class/nvme/nvmeX/reset_controller'. "\
		"Ensure nvmeX is the device you just activated before reset.";
	const char *slot = "[0-7]: firmware slot for commit action";
	const char *action = "[0-7]: commit action";
	const char *bpid = "[0,1]: boot partition identifier, if applicable (default: 0)";
	struct nvme_dev *dev;
	__u32 result;
	int err;

	struct config {
		__u8	slot;
		__u8	action;
		__u8	bpid;
	};

	struct config cfg = {
		.slot	= 0,
		.action	= 0,
		.bpid	= 0,
	};

	OPT_ARGS(opts) = {
		OPT_BYTE("slot",   's', &cfg.slot,   slot),
		OPT_BYTE("action", 'a', &cfg.action, action),
		OPT_BYTE("bpid",   'b', &cfg.bpid,   bpid),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		goto ret;

	if (cfg.slot > 7) {
		fprintf(stderr, "invalid slot:%d\n", cfg.slot);
		err = -EINVAL;
		goto close_dev;
	}
	if (cfg.action > 7 || cfg.action == 4 || cfg.action == 5) {
		fprintf(stderr, "invalid action:%d\n", cfg.action);
		err = -EINVAL;
		goto close_dev;
	}
	if (cfg.bpid > 1) {
		fprintf(stderr, "invalid boot partition id:%d\n", cfg.bpid);
		err = -EINVAL;
		goto close_dev;
	}

	struct nvme_fw_commit_args args = {
		.args_size	= sizeof(args),
		.slot		= cfg.slot,
		.action		= cfg.action,
		.bpid		= cfg.bpid,
		.timeout	= NVME_DEFAULT_IOCTL_TIMEOUT,
		.result		= &result,
	};
	err = nvme_cli_fw_commit(dev, &args);

	if (err < 0)
		fprintf(stderr, "fw-commit: %s\n", nvme_strerror(errno));
	else if (err != 0) {
		__u32 val = nvme_status_get_value(err);
		int type = nvme_status_get_type(err);

		if (type == NVME_STATUS_TYPE_NVME) {
			switch (val & 0x7ff) {
			case NVME_SC_FW_NEEDS_CONV_RESET:
			case NVME_SC_FW_NEEDS_SUBSYS_RESET:
			case NVME_SC_FW_NEEDS_RESET:
				printf("Success activating firmware action:%d slot:%d",
				       cfg.action, cfg.slot);
				if (cfg.action == 6 || cfg.action == 7)
					printf(" bpid:%d", cfg.bpid);
				printf(", but firmware requires %s reset\n",
				       nvme_fw_status_reset_type(val));
				break;
			default:
				nvme_show_status(err);
				break;
			}
		} else {
			nvme_show_status(err);
		}
	} else {
		printf("Success committing firmware action:%d slot:%d",
		       cfg.action, cfg.slot);
		if (cfg.action == 6 || cfg.action == 7)
			printf(" bpid:%d", cfg.bpid);
		printf("\n");
		fw_commit_print_mud(dev, result);
	}

close_dev:
	dev_close(dev);
ret:
	return err;
}

static int subsystem_reset(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	const char *desc = "Resets the NVMe subsystem\n";
	struct nvme_dev *dev;
	int err;

	OPT_ARGS(opts) = {
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		goto ret;

	err = nvme_subsystem_reset(dev_fd(dev));
	if (err < 0) {
		if (errno == ENOTTY)
			fprintf(stderr,
				"Subsystem-reset: NVM Subsystem Reset not supported.\n");
		else
			fprintf(stderr, "Subsystem-reset: %s\n", nvme_strerror(errno));
	}

	dev_close(dev);
ret:
	return err;
}

static int reset(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	const char *desc = "Resets the NVMe controller\n";
	struct nvme_dev *dev;
	int err;

	OPT_ARGS(opts) = {
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		goto ret;

	err = nvme_ctrl_reset(dev_fd(dev));
	if (err < 0)
		fprintf(stderr, "Reset: %s\n", nvme_strerror(errno));

	dev_close(dev);
ret:
	return err;
}

static int ns_rescan(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	const char *desc = "Rescans the NVMe namespaces\n";
	struct nvme_dev *dev;
	int err;

	OPT_ARGS(opts) = {
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		goto ret;

	err = nvme_ns_rescan(dev_fd(dev));
	if (err < 0)
		fprintf(stderr, "Namespace Rescan");

	dev_close(dev);
ret:
	return err;
}

static int parse_sanact(char *str, __u8 *val)
{
	int len = strlen(str);

	if (!strncasecmp(str, "exit-failure", len > 1 ? len : 1))
		*val = NVME_SANITIZE_SANACT_EXIT_FAILURE;

	if (!strncasecmp(str, "start-block-erase", len > 7 ? len : 7))
		*val = NVME_SANITIZE_SANACT_START_BLOCK_ERASE;

	if (!strncasecmp(str, "start-overwrite", len > 7 ? len : 7))
		*val = NVME_SANITIZE_SANACT_START_OVERWRITE;

	if (!strncasecmp(str, "start-crypto-erase", len > 7 ? len : 7))
		*val = NVME_SANITIZE_SANACT_START_CRYPTO_ERASE;

	if (*val)
		return 0;

	return argconfig_parse_byte("sanact", str, val);
}

static int sanitize(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	const char *desc = "Send a sanitize command.";
	const char *no_dealloc_desc = "No deallocate after sanitize.";
	const char *oipbp_desc = "Overwrite invert pattern between passes.";
	const char *owpass_desc = "Overwrite pass count.";
	const char *ause_desc = "Allow unrestricted sanitize exit.";
	const char *sanact_desc = "Sanitize action: 1 = Exit failure mode, 2 = Start block erase, 3 = Start overwrite, 4 = Start crypto erase";
	const char *ovrpat_desc = "Overwrite pattern.";
	struct nvme_dev *dev;
	int err;
	__u8 sanact = 0;

	struct config {
		bool	no_dealloc;
		bool	oipbp;
		__u8	owpass;
		bool	ause;
		char	*sanact;
		__u32	ovrpat;
	};

	struct config cfg = {
		.no_dealloc	= false,
		.oipbp		= false,
		.owpass		= 0,
		.ause		= false,
		.sanact		= NULL,
		.ovrpat		= 0,
	};

	OPT_ARGS(opts) = {
		OPT_FLAG("no-dealloc", 'd', &cfg.no_dealloc, no_dealloc_desc),
		OPT_FLAG("oipbp",      'i', &cfg.oipbp,      oipbp_desc),
		OPT_BYTE("owpass",     'n', &cfg.owpass,     owpass_desc),
		OPT_FLAG("ause",       'u', &cfg.ause,       ause_desc),
		OPT_STR("sanact",      'a', &cfg.sanact,     sanact_desc),
		OPT_UINT("ovrpat",     'p', &cfg.ovrpat,     ovrpat_desc),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		goto ret;

	if (cfg.sanact) {
		err = parse_sanact(cfg.sanact, &sanact);
		if (err)
			goto close_dev;
	}

	switch (sanact) {
	case NVME_SANITIZE_SANACT_EXIT_FAILURE:
	case NVME_SANITIZE_SANACT_START_BLOCK_ERASE:
	case NVME_SANITIZE_SANACT_START_OVERWRITE:
	case NVME_SANITIZE_SANACT_START_CRYPTO_ERASE:
		break;
	default:
		fprintf(stderr, "Invalid Sanitize Action\n");
		err = -EINVAL;
		goto close_dev;
	}

	if (sanact == NVME_SANITIZE_SANACT_EXIT_FAILURE) {
		if (cfg.ause || cfg.no_dealloc) {
			fprintf(stderr, "SANACT is Exit Failure Mode\n");
			err = -EINVAL;
			goto close_dev;
		}
	}

	if (sanact == NVME_SANITIZE_SANACT_START_OVERWRITE) {
		if (cfg.owpass > 15) {
			fprintf(stderr, "OWPASS out of range [0-15]\n");
			err = -EINVAL;
			goto close_dev;
		}
	} else {
		if (cfg.owpass || cfg.oipbp || cfg.ovrpat) {
			fprintf(stderr, "SANACT is not Overwrite\n");
			err = -EINVAL;
			goto close_dev;
		}
	}

	struct nvme_sanitize_nvm_args args = {
		.args_size	= sizeof(args),
		.sanact		= sanact,
		.ause		= cfg.ause,
		.owpass		= cfg.owpass,
		.oipbp		= cfg.oipbp,
		.nodas		= cfg.no_dealloc,
		.ovrpat		= cfg.ovrpat,
		.result		= NULL,
	};
	err = nvme_cli_sanitize_nvm(dev, &args);
	if (err < 0)
		fprintf(stderr, "sanitize: %s\n", nvme_strerror(errno));
	else if (err > 0)
		nvme_show_status(err);

close_dev:
	dev_close(dev);
ret:
	return err;
}

static int nvme_get_properties(int fd, void **pbar)
{
	int offset, err, size = getpagesize();
	__u64 value;
	void *bar = malloc(size);

	if (!bar) {
		fprintf(stderr, "malloc: %s\n", strerror(errno));
		return -1;
	}

	memset(bar, 0xff, size);
	for (offset = NVME_REG_CAP; offset <= NVME_REG_CMBSZ;) {
		struct nvme_get_property_args args = {
			.args_size	= sizeof(args),
			.fd		= fd,
			.offset		= offset,
			.value		= &value,
			.timeout	= NVME_DEFAULT_IOCTL_TIMEOUT,
		};

		err = nvme_get_property(&args);
		if (nvme_status_equals(err, NVME_STATUS_TYPE_NVME,
				       NVME_SC_INVALID_FIELD)) {
			err = 0;
			value = -1;
		} else if (err) {
			fprintf(stderr, "get-property: %s\n",
				nvme_strerror(errno));
			break;
		}
		if (nvme_is_64bit_reg(offset)) {
			*(uint64_t *)(bar + offset) = value;
			offset += 8;
		} else {
			*(uint32_t *)(bar + offset) = value;
			offset += 4;
		}
	}

	if (err)
		free(bar);
	else
		*pbar = bar;

	return err;
}

static void *mmap_registers(nvme_root_t r, struct nvme_dev *dev)
{
	nvme_ctrl_t c = NULL;
	nvme_ns_t n = NULL;

	char path[512];
	void *membase;
	int fd;

	c = nvme_scan_ctrl(r, dev->name);
	if (c) {
		snprintf(path, sizeof(path), "%s/device/resource0",
			nvme_ctrl_get_sysfs_dir(c));
		nvme_free_ctrl(c);
	} else {
		n = nvme_scan_namespace(dev->name);
		if (!n) {
			fprintf(stderr, "Unable to find %s\n", dev->name);
			return NULL;
		}
		snprintf(path, sizeof(path), "%s/device/device/resource0",
			nvme_ns_get_sysfs_dir(n));
		nvme_free_ns(n);
	}

	fd = open(path, O_RDONLY);
	if (fd < 0) {
		if (map_log_level(0, false) >= LOG_DEBUG)
			fprintf(stderr,
				"%s did not find a pci resource, open failed %s\n",
				dev->name, strerror(errno));
		return NULL;
	}

	membase = mmap(NULL, getpagesize(), PROT_READ, MAP_SHARED, fd, 0);
	if (membase == MAP_FAILED) {
		if (map_log_level(0, false) >= LOG_DEBUG) {
			fprintf(stderr, "%s failed to map. ", dev->name);
			fprintf(stderr, "Did your kernel enable CONFIG_IO_STRICT_DEVMEM?\n");
		}
		membase = NULL;
	}

	close(fd);
	return membase;
}

static int show_registers(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	const char *desc = "Reads and shows the defined NVMe controller registers "\
					"in binary or human-readable format";
	const char *human_readable = "show info in readable format in case of "\
					"output_format == normal";

	enum nvme_print_flags flags;
	struct nvme_dev *dev;
	bool fabrics = false;
	nvme_root_t r;
	void *bar;
	int err;

	struct config {
		char	*output_format;
		bool	human_readable;
	};

	struct config cfg = {
		.output_format	= "normal",
		.human_readable	= false,
	};

	OPT_ARGS(opts) = {
		OPT_FMT("output-format",  'o', &cfg.output_format,  output_format),
		OPT_FLAG("human-readable",'H', &cfg.human_readable, human_readable),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		goto ret;

	r = nvme_scan(NULL);
	err = flags = validate_output_format(cfg.output_format);
	if (flags < 0)
		goto close_dev;
	if (cfg.human_readable)
		flags |= VERBOSE;
	bar = mmap_registers(r, dev);
	if (!bar) {
		err = nvme_get_properties(dev_fd(dev), &bar);
		if (err)
			goto close_dev;
		fabrics = true;
	}

	nvme_show_ctrl_registers(bar, fabrics, flags);
	if (fabrics)
		free(bar);
	else
		munmap(bar, getpagesize());
close_dev:
	dev_close(dev);
	nvme_free_tree(r);
ret:
	return err;
}

static int get_property(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	const char *desc = "Reads and shows the defined NVMe controller property "\
			   "for NVMe over Fabric. Property offset must be one of:\n"
			   "CAP=0x0, VS=0x8, CC=0x14, CSTS=0x1c, NSSR=0x20";
	const char *offset = "offset of the requested property";
	const char *human_readable = "show property in readable format";

	struct nvme_dev *dev;
	__u64 value;
	int err;

	struct config {
		int	offset;
		bool	human_readable;
	};

	struct config cfg = {
		.offset		= -1,
		.human_readable	= false,
	};

	OPT_ARGS(opts) = {
		OPT_UINT("offset",        'o', &cfg.offset,         offset),
		OPT_FLAG("human-readable",'H', &cfg.human_readable, human_readable),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		goto ret;

	if (cfg.offset == -1) {
		fprintf(stderr, "offset required param\n");
		err = -EINVAL;
		goto close_dev;
	}

	struct nvme_get_property_args args = {
		.args_size	= sizeof(args),
		.fd		= dev_fd(dev),
		.offset		= cfg.offset,
		.value		= &value,
		.timeout	= NVME_DEFAULT_IOCTL_TIMEOUT,
	};
	err = nvme_get_property(&args);
	if (err < 0) {
		fprintf(stderr, "get-property: %s\n", nvme_strerror(errno));
	} else if (!err) {
		nvme_show_single_property(cfg.offset, value, cfg.human_readable);
	} else if (err > 0) {
		nvme_show_status(err);
	}

close_dev:
	dev_close(dev);
ret:
	return err;
}

static int set_property(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	const char *desc = "Writes and shows the defined NVMe controller property "\
			   "for NVMe over Fabric";
	const char *offset = "the offset of the property";
	const char *value = "the value of the property to be set";
	struct nvme_dev *dev;
	int err;

	struct config {
		int	offset;
		int	value;
	};

	struct config cfg = {
		.offset	= -1,
		.value	= -1,
	};

	OPT_ARGS(opts) = {
		OPT_UINT("offset", 'o', &cfg.offset, offset),
		OPT_UINT("value",  'v', &cfg.value,  value),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		goto ret;

	if (cfg.offset == -1) {
		fprintf(stderr, "offset required param\n");
		err = -EINVAL;
		goto close_dev;
	}
	if (cfg.value == -1) {
		fprintf(stderr, "value required param\n");
		err = -EINVAL;
		goto close_dev;
	}

	struct nvme_set_property_args args = {
		.args_size	= sizeof(args),
		.fd		= dev_fd(dev),
		.offset		= cfg.offset,
		.value		= cfg.value,
		.timeout	= NVME_DEFAULT_IOCTL_TIMEOUT,
		.result		= NULL,
	};
	err = nvme_set_property(&args);
	if (err < 0) {
		fprintf(stderr, "set-property: %s\n", nvme_strerror(errno));
	} else if (!err) {
		printf("set-property: %02x (%s), value: %#08x\n", cfg.offset,
				nvme_register_to_string(cfg.offset), cfg.value);
	} else if (err > 0) {
		nvme_show_status(err);
	}

close_dev:
	dev_close(dev);
ret:
	return err;
}

static int format(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	const char *desc = "Re-format a specified namespace on the "\
		"given device. Can erase all data in namespace (user "\
		"data erase) or delete data encryption key if specified. "\
		"Can also be used to change LBAF to change the namespaces reported physical block format.";
	const char *lbaf = "LBA format to apply (required)";
	const char *ses = "[0-2]: secure erase";
	const char *pil = "[0-1]: protection info location last/first 8 bytes of metadata";
	const char *pi = "[0-3]: protection info off/Type 1/Type 2/Type 3";
	const char *ms = "[0-1]: extended format off/on";
	const char *reset = "Automatically reset the controller after successful format";
	const char *bs = "target block size";
	const char *force = "The \"I know what I'm doing\" flag, skip confirmation before sending command";
	struct nvme_id_ns ns;
	struct nvme_id_ctrl ctrl;
	struct nvme_dev *dev;
	__u8 prev_lbaf = 0;
	int block_size;
	int err, i;

	struct config {
		__u32	namespace_id;
		__u32	timeout;
		__u8	lbaf;
		__u8	ses;
		__u8	pi;
		__u8	pil;
		__u8	ms;
		bool	reset;
		bool	force;
		__u64	bs;
	};

	struct config cfg = {
		.namespace_id	= 0,
		.timeout	= 600000,
		.lbaf		= 0xff,
		.ses		= 0,
		.pi		= 0,
		.pil		= 0,
		.ms		= 0,
		.reset		= false,
		.force		= false,
		.bs		= 0,
	};

	OPT_ARGS(opts) = {
		OPT_UINT("namespace-id", 'n', &cfg.namespace_id, namespace_id_desired),
		OPT_UINT("timeout",      't', &cfg.timeout,      timeout),
		OPT_BYTE("lbaf",         'l', &cfg.lbaf,         lbaf),
		OPT_BYTE("ses",          's', &cfg.ses,          ses),
		OPT_BYTE("pi",           'i', &cfg.pi,           pi),
		OPT_BYTE("pil",          'p', &cfg.pil,          pil),
		OPT_BYTE("ms",           'm', &cfg.ms,           ms),
		OPT_FLAG("reset",        'r', &cfg.reset,        reset),
		OPT_FLAG("force",          0, &cfg.force,        force),
		OPT_SUFFIX("block-size", 'b', &cfg.bs,           bs),
		OPT_END()
	};

	err = argconfig_parse(argc, argv, desc, opts);
	if (err)
		goto ret;

	err = open_exclusive(&dev, argc, argv, cfg.force);
	if (err) {
		if (errno == EBUSY) {
			fprintf(stderr, "Failed to open %s.\n",
				basename(argv[optind]));
			fprintf(stderr, "Namespace is currently busy.\n");
			if (!cfg.force)
				fprintf(stderr,
					"Use the force [--force] option to ignore that.\n");
		} else {
			argconfig_print_help(desc, opts);
		}
		goto ret;
	}

	if (cfg.lbaf != 0xff && cfg.bs !=0) {
		fprintf(stderr,
			"Invalid specification of both LBAF and Block Size, please specify only one\n");
		err = -EINVAL;
		goto close_dev;
	}
	if (cfg.bs) {
		if ((cfg.bs & (~cfg.bs + 1)) != cfg.bs) {
			fprintf(stderr,
				"Invalid value for block size (%"PRIu64"), must be a power of two\n",
				(uint64_t) cfg.bs);
			err = -EINVAL;
			goto close_dev;
		}
	}

	err = nvme_cli_identify_ctrl(dev, &ctrl);
	if (err) {
		fprintf(stderr, "identify-ctrl: %s\n", nvme_strerror(errno));
		goto close_dev;
	}

	if ((ctrl.fna & 1) == 1) {
		/*
		 * FNA bit 0 set to 1: all namespaces ... shall be configured with the same
		 * attributes and a format (excluding secure erase) of any namespace results in a
		 * format of all namespaces.
		 */
		cfg.namespace_id = NVME_NSID_ALL;
	} else if (!cfg.namespace_id) {
		err = nvme_get_nsid(dev_fd(dev), &cfg.namespace_id);
		if (err < 0) {
			fprintf(stderr, "get-namespace-id: %s\n", nvme_strerror(errno));
			goto close_dev;
		}
	}

	if (cfg.namespace_id == 0) {
		fprintf(stderr,
			"Invalid namespace ID, "
			"specify a namespace to format or use '-n 0xffffffff' "
			"to format all namespaces on this controller.\n");
		err = -EINVAL;
		goto close_dev;
	}

	if (cfg.namespace_id != NVME_NSID_ALL) {
		err = nvme_cli_identify_ns(dev, cfg.namespace_id, &ns);
		if (err) {
			if (err < 0) {
				fprintf(stderr, "identify-namespace: %s\n", nvme_strerror(errno));
			} else {
				fprintf(stderr, "identify failed\n");
				nvme_show_status(err);
			}
			goto close_dev;
		}
		nvme_id_ns_flbas_to_lbaf_inuse(ns.flbas, &prev_lbaf);

		if (cfg.bs) {
			for (i = 0; i < ns.nlbaf; ++i) {
				if ((1ULL << ns.lbaf[i].ds) == cfg.bs &&
				    ns.lbaf[i].ms == 0) {
					cfg.lbaf = i;
					break;
				}
			}
			if (cfg.lbaf == 0xff) {
				fprintf(stderr,
					"LBAF corresponding to given block size %"PRIu64" not found\n",
					(uint64_t)cfg.bs);
				fprintf(stderr,
					"Please correct block size, or specify LBAF directly\n");
				err = -EINVAL;
				goto close_dev;
			}
		} else  if (cfg.lbaf == 0xff) {
			cfg.lbaf = prev_lbaf;
		}
	} else {
		if (cfg.lbaf == 0xff)
			cfg.lbaf = 0;
	}

	/* ses & pi checks set to 7 for forward-compatibility */
	if (cfg.ses > 7) {
		fprintf(stderr, "invalid secure erase settings:%d\n", cfg.ses);
		err = -EINVAL;
		goto close_dev;
	}
	if (cfg.lbaf > 63) {
		fprintf(stderr, "invalid lbaf:%d\n", cfg.lbaf);
		err = -EINVAL;
		goto close_dev;
	}
	if (cfg.pi > 7) {
		fprintf(stderr, "invalid pi:%d\n", cfg.pi);
		err = -EINVAL;
		goto close_dev;
	}
	if (cfg.pil > 1) {
		fprintf(stderr, "invalid pil:%d\n", cfg.pil);
		err = -EINVAL;
		goto close_dev;
	}
	if (cfg.ms > 1) {
		fprintf(stderr, "invalid ms:%d\n", cfg.ms);
		err = -EINVAL;
		goto close_dev;
	}

	if (!cfg.force) {
		fprintf(stderr, "You are about to format %s, namespace %#x%s.\n",
			dev->name, cfg.namespace_id,
			cfg.namespace_id == NVME_NSID_ALL ? "(ALL namespaces)" : "");
		nvme_show_relatives(dev->name);
		fprintf(stderr,
			"WARNING: Format may irrevocably delete this device's data.\n"
			"You have 10 seconds to press Ctrl-C to cancel this operation.\n\n"
			"Use the force [--force] option to suppress this warning.\n");
		sleep(10);
		fprintf(stderr, "Sending format operation ... \n");
	}

	struct nvme_format_nvm_args args = {
		.args_size	= sizeof(args),
		.nsid		= cfg.namespace_id,
		.lbafu		= (cfg.lbaf & NVME_NS_FLBAS_HIGHER_MASK) >> 4,
		.lbaf		= cfg.lbaf & NVME_NS_FLBAS_LOWER_MASK,
		.mset		= cfg.ms,
		.pi		= cfg.pi,
		.pil		= cfg.pil,
		.ses		= cfg.ses,
		.timeout	= cfg.timeout,
		.result		= NULL,
	};
	err = nvme_cli_format_nvm(dev, &args);
	if (err < 0) {
		fprintf(stderr, "format: %s\n", nvme_strerror(errno));
	} else if (err != 0) {
		nvme_show_status(err);
	} else {
		printf("Success formatting namespace:%x\n", cfg.namespace_id);
		if (dev->type == NVME_DEV_DIRECT && cfg.lbaf != prev_lbaf) {
			if (is_chardev(dev)) {
				if (ioctl(dev_fd(dev), NVME_IOCTL_RESCAN) < 0) {
					fprintf(stderr, "failed to rescan namespaces\n");
					err = -errno;
					goto close_dev;
				}
			} else {
				block_size = 1 << ns.lbaf[cfg.lbaf].ds;

				/*
				 * If block size has been changed by the format
				 * command up there, we should notify it to
				 * kernel blkdev to update its own block size
				 * to the given one because blkdev will not
				 * update by itself without re-opening fd.
				 */
				if (ioctl(dev_fd(dev), BLKBSZSET, &block_size) < 0) {
					fprintf(stderr, "failed to set block size to %d\n",
						block_size);
					err = -errno;
					goto close_dev;
				}

				if (ioctl(dev_fd(dev), BLKRRPART) < 0) {
					fprintf(stderr, "failed to re-read partition table\n");
					err = -errno;
					goto close_dev;
				}
			}
		}
		if (dev->type == NVME_DEV_DIRECT && cfg.reset && is_chardev(dev))
			nvme_ctrl_reset(dev_fd(dev));
	}

close_dev:
	dev_close(dev);
ret:
	return err;
}

#define STRTOUL_AUTO_BASE              (0)
#define NVME_FEAT_TIMESTAMP_DATA_SIZE  (6)

static int set_feature(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	const char *desc = "Modify the saveable or changeable "\
		"current operating parameters of the controller. Operating "\
		"parameters are grouped and identified by Feature "\
		"Identifiers. Feature settings can be applied to the entire "\
		"controller and all associated namespaces, or to only a few "\
		"namespace(s) associated with the controller. Default values "\
		"for each Feature are vendor-specific and may not be modified."\
		"Use get-feature to determine which Features are supported by "\
		"the controller and are saveable/changeable.";
	const char *feature_id = "feature identifier (required)";
	const char *data = "optional file for feature data (default stdin)";
	const char *value = "new value of feature (required)";
	const char *cdw12 = "feature cdw12, if used";
	const char *save = "specifies that the controller shall save the attribute";
	struct nvme_dev *dev;
	int err;
	__u32 result;
	void *buf = NULL;
	int ffd = STDIN_FILENO;

	struct config {
		__u32	namespace_id;
		__u8	feature_id;
		__u64	value;
		__u32	cdw12;
		__u8	uuid_index;
		__u32	data_len;
		char	*file;
		bool	save;
	};

	struct config cfg = {
		.namespace_id	= 0,
		.feature_id	= 0,
		.value		= 0,
		.uuid_index	= 0,
		.data_len	= 0,
		.file		= "",
		.save		= false,
	};

	OPT_ARGS(opts) = {
		OPT_UINT("namespace-id", 'n', &cfg.namespace_id, namespace_desired),
		OPT_BYTE("feature-id",   'f', &cfg.feature_id,   feature_id),
		OPT_SUFFIX("value",      'v', &cfg.value,        value),
		OPT_UINT("cdw12",        'c', &cfg.cdw12,        cdw12),
		OPT_BYTE("uuid-index",   'U', &cfg.uuid_index,   uuid_index_specify),
		OPT_UINT("data-len",     'l', &cfg.data_len,     buf_len),
		OPT_FILE("data",         'd', &cfg.file,         data),
		OPT_FLAG("save",         's', &cfg.save,         save),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		goto ret;

	if (!argconfig_parse_seen(opts, "namespace-id")) {
		err = nvme_get_nsid(dev_fd(dev), &cfg.namespace_id);
		if (err < 0) {
			if (errno != ENOTTY) {
				fprintf(stderr, "get-namespace-id: %s\n", nvme_strerror(errno));
				goto close_dev;
			}
			cfg.namespace_id = NVME_NSID_ALL;
		}
	}

	if (!cfg.feature_id) {
		fprintf(stderr, "feature-id required param\n");
		err = -EINVAL;
		goto close_dev;
	}

	if (cfg.uuid_index > 127) {
		fprintf(stderr, "invalid uuid index param: %u\n", cfg.uuid_index);
		err = -1;
		goto close_dev;
	}

	if (!cfg.data_len)
		nvme_cli_get_feature_length2(cfg.feature_id, cfg.value,
					     NVME_DATA_TFR_HOST_TO_CTRL,
					     &cfg.data_len);

	if (cfg.data_len) {
		if (posix_memalign(&buf, getpagesize(), cfg.data_len)) {
			fprintf(stderr, "can not allocate feature payload\n");
			err = -ENOMEM;
			goto close_dev;
		}
		memset(buf, 0, cfg.data_len);
	}

	if (buf) {
		/*
		 * Use the '-v' value for the timestamp feature if provided as
		 * a convenience since it can often fit in 4-bytes. The user
		 * should use the buffer method if the value exceeds this
		 * length.
		 */
		if (NVME_FEAT_FID_TIMESTAMP == cfg.feature_id && cfg.value) {
			memcpy(buf, &cfg.value, NVME_FEAT_TIMESTAMP_DATA_SIZE);
		} else {
			if (strlen(cfg.file)) {
				ffd = open(cfg.file, O_RDONLY);
				if (ffd <= 0) {
					fprintf(stderr, "Failed to open file %s: %s\n",
						cfg.file, strerror(errno));
					err = -EINVAL;
					goto free;
				}
			}

			err = read(ffd, (void *)buf, cfg.data_len);
			if (err < 0) {
				err = -errno;
				fprintf(stderr, "failed to read data buffer from input"
					" file: %s\n", strerror(errno));
				goto close_ffd;
			}
		}
	}

	struct nvme_set_features_args args = {
		.args_size	= sizeof(args),
		.fd		= dev_fd(dev),
		.fid		= cfg.feature_id,
		.nsid		= cfg.namespace_id,
		.cdw11		= cfg.value,
		.cdw12		= cfg.cdw12,
		.save		= cfg.save,
		.uuidx		= cfg.uuid_index,
		.cdw15		= 0,
		.data_len	= cfg.data_len,
		.data		= buf,
		.timeout	= NVME_DEFAULT_IOCTL_TIMEOUT,
		.result		= &result,
	};
	err = nvme_set_features(&args);
	if (err < 0) {
		fprintf(stderr, "set-feature: %s\n", nvme_strerror(errno));
	} else if (!err) {
		printf("set-feature:%#0*x (%s), value:%#0*"PRIx64", cdw12:%#0*x, save:%#x\n",
		       cfg.feature_id ? 4 : 2, cfg.feature_id,
		       nvme_feature_to_string(cfg.feature_id),
		       cfg.value ? 10 : 8, (uint64_t)cfg.value,
		       cfg.cdw12 ? 10 : 8, cfg.cdw12, cfg.save);
		if (cfg.feature_id == NVME_FEAT_FID_LBA_STS_INTERVAL) {
			nvme_show_lba_status_info(result);
		}
		if (buf) {
			if (cfg.feature_id == NVME_FEAT_FID_LBA_RANGE)
				nvme_show_lba_range((struct nvme_lba_range_type *)buf,
								result);
			else
				d(buf, cfg.data_len, 16, 1);
		}
	} else if (err > 0)
		nvme_show_status(err);

close_ffd:
	if (ffd != STDIN_FILENO)
		close(ffd);
free:
	free(buf);
close_dev:
	dev_close(dev);
ret:
	return err;
}

static int sec_send(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	struct stat sb;
	const char *desc = "Transfer security protocol data to "\
		"a controller. Security Receives for the same protocol should be "\
		"performed after Security Sends. The security protocol field "\
		"associates Security Sends (security-send) and Security Receives "\
		"(security-recv).";
	const char *file = "transfer payload";
	const char *tl = "transfer length (cf. SPC-4)";
	int err, sec_fd = STDIN_FILENO;
	struct nvme_dev *dev;
	void *sec_buf;
	unsigned int sec_size;

	struct config {
		__u32	namespace_id;
		char	*file;
		__u8	nssf;
		__u8	secp;
		__u16	spsp;
		__u32	tl;
	};

	struct config cfg = {
		.namespace_id	= 0,
		.file		= "",
		.nssf		= 0,
		.secp		= 0,
		.spsp		= 0,
		.tl		= 0,
	};

	OPT_ARGS(opts) = {
		OPT_UINT("namespace-id", 'n', &cfg.namespace_id, namespace_desired),
		OPT_FILE("file",         'f', &cfg.file,         file),
		OPT_BYTE("nssf",         'N', &cfg.nssf,         nssf),
		OPT_BYTE("secp",         'p', &cfg.secp,         secp),
		OPT_SHRT("spsp",         's', &cfg.spsp,         spsp),
		OPT_UINT("tl",           't', &cfg.tl,           tl),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		goto ret;

	if (cfg.tl == 0) {
		fprintf(stderr, "--tl unspecified or zero\n");
		err = -EINVAL;
		goto close_dev;
	}
	if ((cfg.tl & 3) != 0)
		fprintf(stderr, "WARNING: --tl not dword aligned; unaligned bytes may be truncated\n");

	if (strlen(cfg.file) == 0) {
		sec_fd = STDIN_FILENO;
		sec_size = cfg.tl;
	} else {
		sec_fd = open(cfg.file, O_RDONLY);
		if (sec_fd < 0) {
			fprintf(stderr, "Failed to open %s: %s\n",
					cfg.file, strerror(errno));
			err = -EINVAL;
			goto close_dev;
		}

		err = fstat(sec_fd, &sb);
		if (err < 0) {
			perror("fstat");
			goto close_sec_fd;
		}

		sec_size = cfg.tl > sb.st_size ? cfg.tl : sb.st_size;
	}

	if (posix_memalign(&sec_buf, getpagesize(), cfg.tl)) {
		fprintf(stderr, "No memory for security size:%d\n", cfg.tl);
		err = -ENOMEM;
		goto close_sec_fd;
	}

	memset(sec_buf, 0, cfg.tl); // ensure zero fill if buf_size > sec_size

	err = read(sec_fd, sec_buf, sec_size);
	if (err < 0) {
		err = -errno;
		fprintf(stderr, "Failed to read data from security file"
				" %s with %s\n", cfg.file, strerror(errno));
		goto free;
	}

	struct nvme_security_send_args args = {
		.args_size	= sizeof(args),
		.nsid		= cfg.namespace_id,
		.nssf		= cfg.nssf,
		.spsp0		= cfg.spsp & 0xff,
		.spsp1		= cfg.spsp >> 8,
		.secp		= cfg.secp,
		.tl		= cfg.tl,
		.data_len	= cfg.tl,
		.data		= sec_buf,
		.timeout	= NVME_DEFAULT_IOCTL_TIMEOUT,
		.result		= NULL,
	};

	err = nvme_cli_security_send(dev, &args);

	if (err < 0)
		fprintf(stderr, "security-send: %s\n", nvme_strerror(errno));
	else if (err != 0)
		nvme_show_status(err);
	else
		printf("NVME Security Send Command Success\n");

free:
	free(sec_buf);
close_sec_fd:
	close(sec_fd);
close_dev:
	dev_close(dev);
ret:
	return err;
}

static int dir_send(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	const char *desc = "Set directive parameters of the "\
			    "specified directive type.";
	const char *endir = "directive enable";
	const char *ttype = "target directive type to be enabled/disabled";
	const char *input = "write/send file (default stdin)";
	struct nvme_dev *dev;
	__u32 result;
	__u32 dw12 = 0;
	void *buf = NULL;
	int ffd = STDIN_FILENO;
	int err;

	struct config {
		__u32	namespace_id;
		__u32	data_len;
		__u8	dtype;
		__u8	ttype;
		__u16	dspec;
		__u8	doper;
		__u16	endir;
		bool	human_readable;
		bool	raw_binary;
		char	*file;
	};

	struct config cfg = {
		.namespace_id	= 1,
		.data_len	= 0,
		.dtype		= 0,
		.ttype		= 0,
		.dspec		= 0,
		.doper		= 0,
		.endir		= 1,
		.human_readable	= false,
		.raw_binary	= false,
		.file		= "",
	};

	OPT_ARGS(opts) = {
		OPT_UINT("namespace-id",  'n', &cfg.namespace_id,   namespace_id_desired),
		OPT_UINT("data-len",      'l', &cfg.data_len,       buf_len),
		OPT_BYTE("dir-type",      'D', &cfg.dtype,          dtype),
		OPT_BYTE("target-dir",    'T', &cfg.ttype,          ttype),
		OPT_SHRT("dir-spec",      'S', &cfg.dspec,          dspec_w_dtype),
		OPT_BYTE("dir-oper",      'O', &cfg.doper,          doper),
		OPT_SHRT("endir",         'e', &cfg.endir,          endir),
		OPT_FLAG("human-readable",'H', &cfg.human_readable, human_readable_directive),
		OPT_FLAG("raw-binary",    'b', &cfg.raw_binary,     raw_directive),
		OPT_FILE("input-file",    'i', &cfg.file,	    input),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		goto ret;

	switch (cfg.dtype) {
	case NVME_DIRECTIVE_DTYPE_IDENTIFY:
		switch (cfg.doper) {
		case NVME_DIRECTIVE_SEND_IDENTIFY_DOPER_ENDIR:
			if (!cfg.ttype) {
				fprintf(stderr, "target-dir required param\n");
				err = -EINVAL;
				goto close_dev;
			}
			dw12 = cfg.ttype << 8 | cfg.endir;
			break;
		default:
			fprintf(stderr, "invalid directive operations for Identify Directives\n");
			err = -EINVAL;
			goto close_dev;
		}
		break;
	case NVME_DIRECTIVE_DTYPE_STREAMS:
		switch (cfg.doper) {
		case NVME_DIRECTIVE_SEND_STREAMS_DOPER_RELEASE_IDENTIFIER:
		case NVME_DIRECTIVE_SEND_STREAMS_DOPER_RELEASE_RESOURCE:
			break;
		default:
			fprintf(stderr, "invalid directive operations for Streams Directives\n");
			err = -EINVAL;
			goto close_dev;
		}
		break;
	default:
		fprintf(stderr, "invalid directive type\n");
		err = -EINVAL;
		goto close_dev;
	}


	if (cfg.data_len) {
		if (posix_memalign(&buf, getpagesize(), cfg.data_len)) {
			err = -ENOMEM;
			goto close_dev;
		}
		memset(buf, 0, cfg.data_len);
	}

	if (buf) {
		if (strlen(cfg.file)) {
			ffd = open(cfg.file, O_RDONLY);
			if (ffd <= 0) {
				fprintf(stderr, "Failed to open file %s: %s\n",
						cfg.file, strerror(errno));
				err = -EINVAL;
				goto free;
			}
		}
		err = read(ffd, (void *)buf, cfg.data_len);
		if (err < 0) {
			err = -errno;
			fprintf(stderr, "failed to read data buffer from input"
					" file %s\n", strerror(errno));
			goto close_ffd;
		}
	}

	struct nvme_directive_send_args args = {
		.args_size	= sizeof(args),
		.fd		= dev_fd(dev),
		.nsid		= cfg.namespace_id,
		.dspec		= cfg.dspec,
		.doper		= cfg.doper,
		.dtype		= cfg.dtype,
		.cdw12		= dw12,
		.data_len	= cfg.data_len,
		.data		= buf,
		.timeout	= NVME_DEFAULT_IOCTL_TIMEOUT,
		.result		= &result,
	};
	err = nvme_directive_send(&args);
	if (err < 0) {
		fprintf(stderr, "dir-send: %s\n", nvme_strerror(errno));
		goto close_ffd;
	}
	if (!err) {
		printf("dir-send: type %#x, operation %#x, spec_val %#x, nsid %#x, result %#x \n",
				cfg.dtype, cfg.doper, cfg.dspec, cfg.namespace_id, result);
		if (buf) {
			if (!cfg.raw_binary)
				d(buf, cfg.data_len, 16, 1);
			else
				d_raw(buf, cfg.data_len);
		}
	} else if (err > 0)
		nvme_show_status(err);

close_ffd:
	close(ffd);
free:
	free(buf);
close_dev:
	dev_close(dev);
ret:
	return err;
}

static int write_uncor(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	const char *desc = "The Write Uncorrectable command is used to set a "\
			"range of logical blocks to invalid.";
	struct nvme_dev *dev;
	int err;

	struct config {
		__u32	namespace_id;
		__u64	start_block;
		__u16	block_count;
	};

	struct config cfg = {
		.namespace_id	= 0,
		.start_block	= 0,
		.block_count	= 0,
	};

	OPT_ARGS(opts) = {
		OPT_UINT("namespace-id",  'n', &cfg.namespace_id, namespace_desired),
		OPT_SUFFIX("start-block", 's', &cfg.start_block,  start_block),
		OPT_SHRT("block-count",   'c', &cfg.block_count,  block_count),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		goto ret;

	if (!cfg.namespace_id) {
		err = nvme_get_nsid(dev_fd(dev), &cfg.namespace_id);
		if (err < 0) {
			fprintf(stderr, "get-namespace-id: %s\n", nvme_strerror(errno));
			goto close_dev;
		}
	}

	struct nvme_io_args args = {
		.args_size	= sizeof(args),
		.fd		= dev_fd(dev),
		.nsid		= cfg.namespace_id,
		.slba		= cfg.start_block,
		.nlb		= cfg.block_count,
		.timeout	= NVME_DEFAULT_IOCTL_TIMEOUT,
		.result		= NULL,
	};
	err = nvme_write_uncorrectable(&args);
	if (err < 0)
		fprintf(stderr, "write uncorrectable: %s\n", nvme_strerror(errno));
	else if (err != 0)
		nvme_show_status(err);
	else
		printf("NVME Write Uncorrectable Success\n");

close_dev:
	dev_close(dev);
ret:
	return err;
}

static int invalid_tags(__u64 storage_tag, __u64 ref_tag, __u8 sts, __u8 pif)
{
	int result = 0;

	if (sts < 64 && storage_tag >= (1LL << sts)) {
		fprintf(stderr, "Storage tag larger than storage tag size\n");
		return 1;
	}

	switch (pif) {
	case 0:
		if (ref_tag >= (1LL << (32 - sts)))
			result = 1;
		break;
	case 1:
		if (sts > 16 && ref_tag >= (1LL << (80 - sts)))
			result = 1;
		break;
	case 2:
		if (sts > 0 && ref_tag >= (1LL << (48 - sts)))
			result = 1;
		break;
	default:
		fprintf(stderr, "Invalid PIF\n");
		result = 1;
	}

	if (result)
		fprintf(stderr, "Reference tag larger than allowed by PIF\n");

	return result;
}

static int write_zeroes(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	__u16 control = 0;
	__u8 lba_index, sts = 0, pif = 0;
	struct nvme_id_ns ns;
	struct nvme_dev *dev;
	struct nvme_nvm_id_ns nvm_ns;
	int err;

	const char *desc = "The Write Zeroes command is used to set a "\
			"range of logical blocks to zero.";
	const char *deac = "Set DEAC bit, requesting controller to deallocate specified logical blocks";
	const char *storage_tag_check = "This bit specifies the Storage Tag field shall be checked as "\
		"part of end-to-end data protection processing";

	struct config {
		__u32	namespace_id;
		__u64	start_block;
		__u16	block_count;
		bool	deac;
		bool	limited_retry;
		bool	force_unit_access;
		__u8	prinfo;
		__u64	ref_tag;
		__u16	app_tag_mask;
		__u16	app_tag;
		__u64	storage_tag;
		bool	storage_tag_check;
	};

	struct config cfg = {
		.namespace_id		= 0,
		.start_block		= 0,
		.block_count		= 0,
		.deac			= false,
		.limited_retry		= false,
		.force_unit_access	= false,
		.prinfo			= 0,
		.ref_tag		= 0,
		.app_tag_mask		= 0,
		.app_tag		= 0,
		.storage_tag		= 0,
		.storage_tag_check	= false,
	};

	OPT_ARGS(opts) = {
		OPT_UINT("namespace-id",      'n', &cfg.namespace_id,      namespace_desired),
		OPT_SUFFIX("start-block",     's', &cfg.start_block,       start_block),
		OPT_SHRT("block-count",       'c', &cfg.block_count,       block_count),
		OPT_FLAG("deac",              'd', &cfg.deac,              deac),
		OPT_FLAG("limited-retry",     'l', &cfg.limited_retry,     limited_retry),
		OPT_FLAG("force-unit-access", 'f', &cfg.force_unit_access, force_unit_access),
		OPT_BYTE("prinfo",            'p', &cfg.prinfo,            prinfo),
		OPT_SUFFIX("ref-tag",         'r', &cfg.ref_tag,           ref_tag),
		OPT_SHRT("app-tag-mask",      'm', &cfg.app_tag_mask,      app_tag_mask),
		OPT_SHRT("app-tag",           'a', &cfg.app_tag,           app_tag),
		OPT_SUFFIX("storage-tag",     'S', &cfg.storage_tag,       storage_tag),
		OPT_FLAG("storage-tag-check", 'C', &cfg.storage_tag_check, storage_tag_check),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		goto ret;

	if (cfg.prinfo > 0xf) {
		err = -EINVAL;
		goto close_dev;
	}

	control |= (cfg.prinfo << 10);
	if (cfg.limited_retry)
		control |= NVME_IO_LR;
	if (cfg.force_unit_access)
		control |= NVME_IO_FUA;
	if (cfg.deac)
		control |= NVME_IO_DEAC;
	if (cfg.storage_tag_check)
		control |= NVME_IO_STC;
	if (!cfg.namespace_id) {
		err = nvme_get_nsid(dev_fd(dev), &cfg.namespace_id);
		if (err < 0) {
			fprintf(stderr, "get-namespace-id: %s\n", nvme_strerror(errno));
			goto close_dev;
		}
	}

	err = nvme_cli_identify_ns(dev, cfg.namespace_id, &ns);
	if (err < 0) {
		fprintf(stderr, "identify namespace: %s\n", nvme_strerror(errno));
		goto close_dev;
	} else if (err) {
		nvme_show_status(err);
		goto close_dev;
	}

	err = nvme_identify_ns_csi(dev_fd(dev), cfg.namespace_id, 0,
				   NVME_CSI_NVM, &nvm_ns);
	if (!err) {
		nvme_id_ns_flbas_to_lbaf_inuse(ns.flbas, &lba_index);
		sts = nvm_ns.elbaf[lba_index] & NVME_NVM_ELBAF_STS_MASK;
		pif = (nvm_ns.elbaf[lba_index] & NVME_NVM_ELBAF_PIF_MASK) >> 7;
	}

	if (invalid_tags(cfg.storage_tag, cfg.ref_tag, sts, pif)) {
		err = -EINVAL;
		goto close_dev;
	}

	struct nvme_io_args args = {
		.args_size	= sizeof(args),
		.fd		= dev_fd(dev),
		.nsid		= cfg.namespace_id,
		.slba		= cfg.start_block,
		.nlb		= cfg.block_count,
		.control	= control,
		.reftag_u64	= cfg.ref_tag,
		.apptag		= cfg.app_tag,
		.appmask	= cfg.app_tag_mask,
		.sts		= sts,
		.pif		= pif,
		.storage_tag	= cfg.storage_tag,
		.timeout	= NVME_DEFAULT_IOCTL_TIMEOUT,
		.result		= NULL,
	};
	err = nvme_write_zeros(&args);
	if (err < 0)
		fprintf(stderr, "write-zeroes: %s\n", nvme_strerror(errno));
	else if (err != 0)
		nvme_show_status(err);
	else
		printf("NVME Write Zeroes Success\n");

close_dev:
	dev_close(dev);
ret:
	return err;
}

static int dsm(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	const char *desc = "The Dataset Management command is used by the host to "\
		"indicate attributes for ranges of logical blocks. This includes attributes "\
		"for discarding unused blocks, data read and write frequency, access size, and other "\
		"information that may be used to optimize performance and reliability.";
	const char *blocks = "Comma separated list of the number of blocks in each range";
	const char *starting_blocks = "Comma separated list of the starting block in each range";
	const char *context_attrs = "Comma separated list of the context attributes in each range";
	const char *ad = "Attribute Deallocate";
	const char *idw = "Attribute Integral Dataset for Write";
	const char *idr = "Attribute Integral Dataset for Read";
	const char *cdw11 = "All the command DWORD 11 attributes. Use instead of specifying individual attributes";

	uint16_t nr, nc, nb, ns;
	__u32 ctx_attrs[256] = {0,};
	__u32 nlbs[256] = {0,};
	__u64 slbas[256] = {0,};
	struct nvme_dsm_range dsm[256];
	struct nvme_dev *dev;
	int err;

	struct config {
		__u32	namespace_id;
		char	*ctx_attrs;
		char	*blocks;
		char	*slbas;
		bool	ad;
		bool	idw;
		bool	idr;
		__u32	cdw11;
	};

	struct config cfg = {
		.namespace_id	= 0,
		.ctx_attrs	= "",
		.blocks		= "",
		.slbas		= "",
		.ad		= false,
		.idw		= false,
		.idr		= false,
		.cdw11		= 0,
	};

	OPT_ARGS(opts) = {
		OPT_UINT("namespace-id", 'n', &cfg.namespace_id, namespace_id_desired),
		OPT_LIST("ctx-attrs",    'a', &cfg.ctx_attrs,    context_attrs),
		OPT_LIST("blocks",	 'b', &cfg.blocks,       blocks),
		OPT_LIST("slbs",	 's', &cfg.slbas,        starting_blocks),
		OPT_FLAG("ad",	         'd', &cfg.ad,           ad),
		OPT_FLAG("idw",		 'w', &cfg.idw,          idw),
		OPT_FLAG("idr",		 'r', &cfg.idr,          idr),
		OPT_UINT("cdw11",        'c', &cfg.cdw11,        cdw11),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		goto ret;

	nc = argconfig_parse_comma_sep_array(cfg.ctx_attrs, (int *)ctx_attrs, ARRAY_SIZE(ctx_attrs));
	nb = argconfig_parse_comma_sep_array(cfg.blocks, (int *)nlbs, ARRAY_SIZE(nlbs));
	ns = argconfig_parse_comma_sep_array_long(cfg.slbas, (unsigned long long *)slbas, ARRAY_SIZE(slbas));
	nr = max(nc, max(nb, ns));
	if (!nr || nr > 256) {
		fprintf(stderr, "No range definition provided\n");
		err = -EINVAL;
		goto close_dev;
	}

	if (!cfg.namespace_id) {
		err = nvme_get_nsid(dev_fd(dev), &cfg.namespace_id);
		if (err < 0) {
			fprintf(stderr, "get-namespace-id: %s\n", nvme_strerror(errno));
			goto close_dev;
		}
	}
	if (!cfg.cdw11)
		cfg.cdw11 = (cfg.ad << 2) | (cfg.idw << 1) | (cfg.idr << 0);

	nvme_init_dsm_range(dsm, ctx_attrs, nlbs, slbas, nr);
	struct nvme_dsm_args args = {
		.args_size	= sizeof(args),
		.fd		= dev_fd(dev),
		.nsid		= cfg.namespace_id,
		.attrs		= cfg.cdw11,
		.nr_ranges	= nr,
		.dsm		= dsm,
		.timeout        = NVME_DEFAULT_IOCTL_TIMEOUT,
		.result		= NULL,
	};
	err = nvme_dsm(&args);
	if (err < 0)
		fprintf(stderr, "data-set management: %s\n", nvme_strerror(errno));
	else if (err != 0)
		nvme_show_status(err);
	else
		printf("NVMe DSM: success\n");

close_dev:
	dev_close(dev);
ret:
	return err;
}

static int copy(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	const char *desc = "The Copy command is used by the host to copy data "
			   "from one or more source logical block ranges to a "
			   "single consecutive destination logical block "
			   "range.";

	const char *d_sdlba = "64-bit addr of first destination logical block";
	const char *d_slbas = "64-bit addr of first block per range (comma-separated list)";
	const char *d_nlbs = "number of blocks per range (comma-separated list, zeroes-based values)";
	const char *d_lr = "limited retry";
	const char *d_fua = "force unit access";
	const char *d_prinfor = "protection information and check field (read part)";
	const char *d_prinfow = "protection information and check field (write part)";
	const char *d_ilbrt = "initial lba reference tag (write part)";
	const char *d_eilbrts = "expected lba reference tags (read part, comma-separated list)";
	const char *d_lbat = "lba application tag (write part)";
	const char *d_elbats = "expected lba application tags (read part, comma-separated list)";
	const char *d_lbatm = "lba application tag mask (write part)";
	const char *d_elbatms = "expected lba application tag masks (read part, comma-separated list)";
	const char *d_dtype = "directive type (write part)";
	const char *d_dspec = "directive specific (write part)";
	const char *d_format = "source range entry format";

	uint16_t nr, nb, ns, nrts, natms, nats;
	__u16 nlbs[128] = { 0 };
	unsigned long long slbas[128] = {0,};
	struct nvme_dev *dev;
	int err;

	union {
		__u32 f0[128];
		__u64 f1[101];
	} eilbrts;

	__u32 elbatms[128] = { 0 };
	__u32 elbats[128] = { 0 };

	union {
		struct nvme_copy_range f0[128];
		struct nvme_copy_range_f1 f1[101];
	} copy;

	struct config {
		__u32	namespace_id;
		__u64	sdlba;
		char	*slbas;
		char	*nlbs;
		bool	lr;
		bool	fua;
		__u8	prinfow;
		__u8	prinfor;
		__u64	ilbrt;
		char	*eilbrts;
		__u16	lbat;
		char	*elbats;
		__u16	lbatm;
		char	*elbatms;
		__u8	dtype;
		__u16	dspec;
		__u8	format;
	};

	struct config cfg = {
		.namespace_id	= 0,
		.sdlba		= 0,
		.slbas		= "",
		.nlbs		= "",
		.lr		= false,
		.fua		= false,
		.prinfow	= 0,
		.prinfor	= 0,
		.ilbrt		= 0,
		.eilbrts	= "",
		.lbat		= 0,
		.elbats		= "",
		.lbatm		= 0,
		.elbatms	= "",
		.dtype		= 0,
		.dspec		= 0,
		.format		= 0,
	};

	OPT_ARGS(opts) = {
		OPT_UINT("namespace-id",	   'n', &cfg.namespace_id,	namespace_id_desired),
		OPT_SUFFIX("sdlba",                'd', &cfg.sdlba,		d_sdlba),
		OPT_LIST("slbs",                   's', &cfg.slbas,		d_slbas),
		OPT_LIST("blocks",                 'b', &cfg.nlbs,		d_nlbs),
		OPT_FLAG("limited-retry",          'l', &cfg.lr,		d_lr),
		OPT_FLAG("force-unit-access",      'f', &cfg.fua,		d_fua),
		OPT_BYTE("prinfow",                'p', &cfg.prinfow,		d_prinfow),
		OPT_BYTE("prinfor",                'P', &cfg.prinfor,		d_prinfor),
		OPT_SUFFIX("ref-tag",              'r', &cfg.ilbrt,		d_ilbrt),
		OPT_LIST("expected-ref-tags",      'R', &cfg.eilbrts,		d_eilbrts),
		OPT_SHRT("app-tag",                'a', &cfg.lbat,		d_lbat),
		OPT_LIST("expected-app-tags",      'A', &cfg.elbats,		d_elbats),
		OPT_SHRT("app-tag-mask",           'm', &cfg.lbatm,		d_lbatm),
		OPT_LIST("expected-app-tag-masks", 'M', &cfg.elbatms,		d_elbatms),
		OPT_BYTE("dir-type",               'T', &cfg.dtype,		d_dtype),
		OPT_SHRT("dir-spec",               'S', &cfg.dspec,		d_dspec),
		OPT_BYTE("format",                 'F', &cfg.format,		d_format),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		goto ret;

	nb = argconfig_parse_comma_sep_array_short(cfg.nlbs, nlbs, ARRAY_SIZE(nlbs));
	ns = argconfig_parse_comma_sep_array_long(cfg.slbas, slbas, ARRAY_SIZE(slbas));

	if (cfg.format == 0)
		nrts = argconfig_parse_comma_sep_array(cfg.eilbrts, (int *)eilbrts.f0, ARRAY_SIZE(eilbrts.f0));
	else if (cfg.format == 1)
		nrts = argconfig_parse_comma_sep_array_long(cfg.eilbrts, (unsigned long long *)eilbrts.f1, ARRAY_SIZE(eilbrts.f1));
	else {
		fprintf(stderr, "invalid format\n");
		err = -EINVAL;
		goto close_dev;
	}

	natms = argconfig_parse_comma_sep_array(cfg.elbatms, (int *)elbatms, ARRAY_SIZE(elbatms));
	nats = argconfig_parse_comma_sep_array(cfg.elbats, (int *)elbats, ARRAY_SIZE(elbats));

	nr = max(nb, max(ns, max(nrts, max(natms, nats))));
	if (!nr || nr > 128 || (cfg.format == 1 && nr > 101)) {
		fprintf(stderr, "invalid range\n");
		err = -EINVAL;
		goto close_dev;
	}

	if (!cfg.namespace_id) {
		err = nvme_get_nsid(dev_fd(dev), &cfg.namespace_id);
		if (err < 0) {
			fprintf(stderr, "get-namespace-id: %s\n", nvme_strerror(errno));
			goto close_dev;
		}
	}

	if (cfg.format == 0)
		nvme_init_copy_range(copy.f0, nlbs, (__u64 *)slbas,
		  eilbrts.f0, elbatms, elbats, nr);
	else if (cfg.format == 1)
		nvme_init_copy_range_f1(copy.f1, nlbs, (__u64 *)slbas,
		  eilbrts.f1, elbatms, elbats, nr);

	struct nvme_copy_args args = {
		.args_size	= sizeof(args),
		.fd		= dev_fd(dev),
		.nsid		= cfg.namespace_id,
		.copy		= copy.f0,
		.sdlba		= cfg.sdlba,
		.nr		= nr,
		.prinfor	= cfg.prinfor,
		.prinfow	= cfg.prinfow,
		.dtype		= cfg.dtype,
		.dspec		= cfg.dspec,
		.format		= cfg.format,
		.lr		= cfg.lr,
		.fua		= cfg.fua,
		.ilbrt_u64	= cfg.ilbrt,
		.lbatm		= cfg.lbatm,
		.lbat		= cfg.lbat,
		.timeout	= NVME_DEFAULT_IOCTL_TIMEOUT,
		.result		= NULL,
	};
	err = nvme_copy(&args);
	if (err < 0)
		fprintf(stderr, "NVMe Copy: %s\n", nvme_strerror(errno));
	else if (err != 0)
		nvme_show_status(err);
	else
		printf("NVMe Copy: success\n");

close_dev:
	dev_close(dev);
ret:
	return err;
}

static int flush(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	const char *desc = "Commit data and metadata associated with "\
		"given namespaces to nonvolatile media. Applies to all commands "\
		"finished before the flush was submitted. Additional data may also be "\
		"flushed by the controller, from any namespace, depending on controller and "\
		"associated namespace status.";
	struct nvme_dev *dev;
	int err;

	struct config {
		__u32	namespace_id;
	};

	struct config cfg = {
		.namespace_id	= 0,
	};

	OPT_ARGS(opts) = {
		OPT_UINT("namespace-id", 'n', &cfg.namespace_id, namespace_id_desired),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		goto ret;

	if (!cfg.namespace_id) {
		err = nvme_get_nsid(dev_fd(dev), &cfg.namespace_id);
		if (err < 0) {
			fprintf(stderr, "get-namespace-id: %s\n", nvme_strerror(errno));
			goto close_dev;
		}
	}

	err = nvme_flush(dev_fd(dev), cfg.namespace_id);
	if (err < 0)
		fprintf(stderr, "flush: %s\n", nvme_strerror(errno));
	else if (err != 0)
		nvme_show_status(err);
	else
		printf("NVMe Flush: success\n");
close_dev:
	dev_close(dev);
ret:
	return err;
}

static int resv_acquire(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	const char *desc = "Obtain a reservation on a given "\
		"namespace. Only one reservation is allowed at a time on a "\
		"given namespace, though multiple controllers may register "\
		"with that namespace. Namespace reservation will abort with "\
		"status Reservation Conflict if the given namespace is "\
		"already reserved.";
	const char *prkey = "pre-empt reservation key";
	const char *racqa = "reservation acquire action";
	struct nvme_dev *dev;
	int err;

	struct config {
		__u32	namespace_id;
		__u64	crkey;
		__u64	prkey;
		__u8	rtype;
		__u8	racqa;
		bool	iekey;
	};

	struct config cfg = {
		.namespace_id	= 0,
		.crkey		= 0,
		.prkey		= 0,
		.rtype		= 0,
		.racqa		= 0,
		.iekey		= false,
	};

	OPT_ARGS(opts) = {
		OPT_UINT("namespace-id", 'n', &cfg.namespace_id, namespace_id_desired),
		OPT_SUFFIX("crkey",      'c', &cfg.crkey,        crkey),
		OPT_SUFFIX("prkey",      'p', &cfg.prkey,        prkey),
		OPT_BYTE("rtype",        't', &cfg.rtype,        rtype),
		OPT_BYTE("racqa",        'a', &cfg.racqa,        racqa),
		OPT_FLAG("iekey",        'i', &cfg.iekey,        iekey),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		goto ret;

	if (!cfg.namespace_id) {
		err = nvme_get_nsid(dev_fd(dev), &cfg.namespace_id);
		if (err < 0) {
			fprintf(stderr, "get-namespace-id: %s\n", nvme_strerror(errno));
			goto close_dev;
		}
	}
	if (cfg.racqa > 7) {
		fprintf(stderr, "invalid racqa:%d\n", cfg.racqa);
		err = -EINVAL;
		goto close_dev;
	}

	struct nvme_resv_acquire_args args = {
		.args_size	= sizeof(args),
		.fd		= dev_fd(dev),
		.nsid		= cfg.namespace_id,
		.rtype		= cfg.rtype,
		.racqa		= cfg.racqa,
		.iekey		= !!cfg.iekey,
		.crkey		= cfg.crkey,
		.nrkey		= cfg.prkey,
		.timeout	= NVME_DEFAULT_IOCTL_TIMEOUT,
		.result		= NULL,
	};
	err = nvme_resv_acquire(&args);
	if (err < 0)
		fprintf(stderr, "reservation acquire: %s\n", nvme_strerror(errno));
	else if (err != 0)
		nvme_show_status(err);
	else
		printf("NVME Reservation Acquire success\n");

close_dev:
	dev_close(dev);
ret:
	return err;
}

static int resv_register(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	const char *desc = "Register, de-register, or "\
		"replace a controller's reservation on a given namespace. "\
		"Only one reservation at a time is allowed on any namespace.";
	const char *nrkey = "new reservation key";
	const char *rrega = "reservation registration action";
	const char *cptpl = "change persistence through power loss setting";
	struct nvme_dev *dev;
	int err;

	struct config {
		__u32	namespace_id;
		__u64	crkey;
		__u64	nrkey;
		__u8	rrega;
		__u8	cptpl;
		bool	iekey;
	};

	struct config cfg = {
		.namespace_id	= 0,
		.crkey		= 0,
		.nrkey		= 0,
		.rrega		= 0,
		.cptpl		= false,
	};

	OPT_ARGS(opts) = {
		OPT_UINT("namespace-id", 'n', &cfg.namespace_id, namespace_id_desired),
		OPT_SUFFIX("crkey",      'c', &cfg.crkey,        crkey),
		OPT_SUFFIX("nrkey",      'k', &cfg.nrkey,        nrkey),
		OPT_BYTE("rrega",        'r', &cfg.rrega,        rrega),
		OPT_BYTE("cptpl",        'p', &cfg.cptpl,        cptpl),
		OPT_FLAG("iekey",        'i', &cfg.iekey,        iekey),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		goto ret;

	if (!cfg.namespace_id) {
		err = nvme_get_nsid(dev_fd(dev), &cfg.namespace_id);
		if (err < 0) {
			fprintf(stderr, "get-namespace-id: %s\n", nvme_strerror(errno));
			goto close_dev;
		}
	}
	if (cfg.cptpl > 3) {
		fprintf(stderr, "invalid cptpl:%d\n", cfg.cptpl);
		err = -EINVAL;
		goto close_dev;
	}

	if (cfg.rrega > 7) {
		fprintf(stderr, "invalid rrega:%d\n", cfg.rrega);
		err = -EINVAL;
		goto close_dev;
	}

	struct nvme_resv_register_args args = {
		.args_size	= sizeof(args),
		.fd		= dev_fd(dev),
		.nsid		= cfg.namespace_id,
		.rrega		= cfg.rrega,
		.cptpl		= cfg.cptpl,
		.iekey		= !!cfg.iekey,
		.crkey		= cfg.crkey,
		.nrkey		= cfg.nrkey,
		.timeout	= NVME_DEFAULT_IOCTL_TIMEOUT,
		.result		= NULL,
	};
	err = nvme_resv_register(&args);
	if (err < 0)
		fprintf(stderr, "reservation register: %s\n", nvme_strerror(errno));
	else if (err != 0)
		nvme_show_status(err);
	else
		printf("NVME Reservation  success\n");

close_dev:
	dev_close(dev);
ret:
	return err;
}

static int resv_release(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	const char *desc = "Releases reservation held on a "\
		"namespace by the given controller. If rtype != current reservation"\
		"type, release will fails. If the given controller holds no "\
		"reservation on the namespace or is not the namespace's current "\
		"reservation holder, the release command completes with no "\
		"effect. If the reservation type is not Write Exclusive or "\
		"Exclusive Access, all registrants on the namespace except "\
		"the issuing controller are notified.";
	const char *rrela = "reservation release action";
	struct nvme_dev *dev;
	int err;

	struct config {
		__u32	namespace_id;
		__u64	crkey;
		__u8	rtype;
		__u8	rrela;
		__u8	iekey;
	};

	struct config cfg = {
		.namespace_id	= 0,
		.crkey		= 0,
		.rtype		= 0,
		.rrela		= 0,
		.iekey		= 0,
	};

	OPT_ARGS(opts) = {
		OPT_UINT("namespace-id", 'n', &cfg.namespace_id, namespace_desired),
		OPT_SUFFIX("crkey",      'c', &cfg.crkey,        crkey),
		OPT_BYTE("rtype",        't', &cfg.rtype,        rtype),
		OPT_BYTE("rrela",        'a', &cfg.rrela,        rrela),
		OPT_FLAG("iekey",        'i', &cfg.iekey,        iekey),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		goto ret;

	if (!cfg.namespace_id) {
		err = nvme_get_nsid(dev_fd(dev), &cfg.namespace_id);
		if (err < 0) {
			fprintf(stderr, "get-namespace-id: %s\n", nvme_strerror(errno));
			goto close_dev;
		}
	}
	if (cfg.rrela > 7) {
		fprintf(stderr, "invalid rrela:%d\n", cfg.rrela);
		err = -EINVAL;
		goto close_dev;
	}

	struct nvme_resv_release_args args = {
		.args_size	= sizeof(args),
		.fd		= dev_fd(dev),
		.nsid		= cfg.namespace_id,
		.rtype		= cfg.rtype,
		.rrela		= cfg.rrela,
		.iekey		= !!cfg.iekey,
		.crkey		= cfg.crkey,
		.timeout	= NVME_DEFAULT_IOCTL_TIMEOUT,
		.result		= NULL,
	};
	err = nvme_resv_release(&args);
	if (err < 0)
		fprintf(stderr, "reservation release: %s\n", nvme_strerror(errno));
	else if (err != 0)
		nvme_show_status(err);
	else
		printf("NVME Reservation Release success\n");

close_dev:
	dev_close(dev);
ret:
	return err;
}

static int resv_report(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	const char *desc = "Returns Reservation Status data "\
		"structure describing any existing reservations on and the "\
		"status of a given namespace. Namespace Reservation Status "\
		"depends on the number of controllers registered for that "\
		"namespace.";
	const char *numd = "number of dwords to transfer";
	const char *eds = "request extended data structure";

	struct nvme_resv_status *status;
	enum nvme_print_flags flags;
	struct nvme_dev *dev;
	int err, size;

	struct config {
		__u32	namespace_id;
		__u32	numd;
		__u8	eds;
		char	*output_format;
		bool	raw_binary;
	};

	struct config cfg = {
		.namespace_id	= 0,
		.numd		= 0,
		.eds		= false,
		.output_format	= "normal",
		.raw_binary	= false,
	};

	OPT_ARGS(opts) = {
		OPT_UINT("namespace-id",  'n', &cfg.namespace_id,   namespace_id_desired),
		OPT_UINT("numd",          'd', &cfg.numd,           numd),
		OPT_FLAG("eds",           'e', &cfg.eds,            eds),
		OPT_FMT("output-format",  'o', &cfg.output_format,  output_format),
		OPT_FLAG("raw-binary",    'b', &cfg.raw_binary,     raw_dump),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		goto ret;

	err = flags = validate_output_format(cfg.output_format);
	if (flags < 0)
		goto close_dev;
	if (cfg.raw_binary)
		flags = BINARY;

	if (!cfg.namespace_id) {
		err = nvme_get_nsid(dev_fd(dev), &cfg.namespace_id);
		if (err < 0) {
			fprintf(stderr, "get-namespace-id: %s\n", nvme_strerror(errno));
			goto close_dev;
		}
	}

	if (!cfg.numd || cfg.numd >= (0x1000 >> 2))
		cfg.numd = (0x1000 >> 2) - 1;
	if (cfg.numd < 3)
		cfg.numd = 3;

	size = (cfg.numd + 1) << 2;

	if (posix_memalign((void **)&status, getpagesize(), size)) {
		fprintf(stderr, "No memory for resv report:%d\n", size);
		err = -ENOMEM;
		goto close_dev;
	}
	memset(status, 0, size);

	struct nvme_resv_report_args args = {
		.args_size	= sizeof(args),
		.fd		= dev_fd(dev),
		.nsid		= cfg.namespace_id,
		.eds		= cfg.eds,
		.len		= size,
		.report		= status,
		.timeout	= NVME_DEFAULT_IOCTL_TIMEOUT,
		.result		= NULL,
	};
	err = nvme_resv_report(&args);
	if (!err)
		nvme_show_resv_report(status, size, cfg.eds, flags);
	else if (err > 0)
		nvme_show_status(err);
	else
		fprintf(stderr, "reservation report: %s\n", nvme_strerror(errno));
	free(status);
close_dev:
	dev_close(dev);
ret:
	return err;
}

unsigned long long elapsed_utime(struct timeval start_time,
					struct timeval end_time)
{
	unsigned long long err = (end_time.tv_sec - start_time.tv_sec) * 1000000 +
		(end_time.tv_usec - start_time.tv_usec);
	return err;
}

static int submit_io(int opcode, char *command, const char *desc,
		     int argc, char **argv)
{
	struct timeval start_time, end_time;
	void *buffer, *mbuffer = NULL;
	int err = 0;
	int dfd, mfd;
	int flags = opcode & 1 ? O_RDONLY : O_WRONLY | O_CREAT;
	int mode = S_IRUSR | S_IWUSR |S_IRGRP | S_IWGRP| S_IROTH;
	__u16 control = 0, nblocks = 0;
	__u32 dsmgmt = 0;
	int logical_block_size = 0;
	unsigned long long buffer_size = 0, mbuffer_size = 0;
	bool huge;
	struct nvme_id_ns ns;
	struct nvme_nvm_id_ns nvm_ns;
	__u8 lba_index, ms = 0, sts = 0, pif = 0;
	struct nvme_dev *dev;

	const char *start_block_addr = "64-bit addr of first block to access";
	const char *data_size = "size of data in bytes";
	const char *metadata_size = "size of metadata in bytes";
	const char *data = "data file";
	const char *metadata = "metadata file";
	const char *limited_retry_num = "limit num. media access attempts";
	const char *show = "show command before sending";
	const char *dtype_for_write = "directive type (for write-only)";
	const char *dspec = "directive specific (for write-only)";
	const char *dsm = "dataset management attributes (lower 8 bits)";
	const char *storage_tag_check = "This bit specifies the Storage Tag field shall be " \
		"checked as part of end-to-end data protection processing";
	const char *force = "The \"I know what I'm doing\" flag, do not enforce exclusive access for write";

	struct config {
		__u32	namespace_id;
		__u64	start_block;
		__u16	block_count;
		__u64	data_size;
		__u64	metadata_size;
		__u64	ref_tag;
		char	*data;
		char	*metadata;
		__u8	prinfo;
		__u16	app_tag_mask;
		__u16	app_tag;
		__u64	storage_tag;
		bool	limited_retry;
		bool	force_unit_access;
		bool	storage_tag_check;
		__u8	dtype;
		__u16	dspec;
		__u8	dsmgmt;
		bool	show;
		bool	dry_run;
		bool	latency;
		bool	force;
	};

	struct config cfg = {
		.namespace_id		= 0,
		.start_block		= 0,
		.block_count		= 0,
		.data_size		= 0,
		.metadata_size		= 0,
		.ref_tag		= 0,
		.data			= "",
		.metadata		= "",
		.prinfo			= 0,
		.app_tag_mask		= 0,
		.app_tag		= 0,
		.storage_tag		= 0,
		.limited_retry		= false,
		.force_unit_access	= false,
		.storage_tag_check	= false,
		.dtype			= 0,
		.dspec			= 0,
		.dsmgmt			= 0,
		.show			= false,
		.dry_run		= false,
		.latency		= false,
		.force			= false,
	};

	OPT_ARGS(opts) = {
		OPT_UINT("namespace-id",      'n', &cfg.namespace_id,      namespace_id_desired),
		OPT_SUFFIX("start-block",     's', &cfg.start_block,       start_block_addr),
		OPT_SHRT("block-count",       'c', &cfg.block_count,       block_count),
		OPT_SUFFIX("data-size",       'z', &cfg.data_size,         data_size),
		OPT_SUFFIX("metadata-size",   'y', &cfg.metadata_size,     metadata_size),
		OPT_SUFFIX("ref-tag",         'r', &cfg.ref_tag,           ref_tag),
		OPT_FILE("data",              'd', &cfg.data,              data),
		OPT_FILE("metadata",          'M', &cfg.metadata,          metadata),
		OPT_BYTE("prinfo",            'p', &cfg.prinfo,            prinfo),
		OPT_SHRT("app-tag-mask",      'm', &cfg.app_tag_mask,      app_tag_mask),
		OPT_SHRT("app-tag",           'a', &cfg.app_tag,           app_tag),
		OPT_SUFFIX("storage-tag",     'g', &cfg.storage_tag,       storage_tag),
		OPT_FLAG("limited-retry",     'l', &cfg.limited_retry,     limited_retry_num),
		OPT_FLAG("force-unit-access", 'f', &cfg.force_unit_access, force_unit_access),
		OPT_FLAG("storage-tag-check", 'C', &cfg.storage_tag_check, storage_tag_check),
		OPT_BYTE("dir-type",          'T', &cfg.dtype,             dtype_for_write),
		OPT_SHRT("dir-spec",          'S', &cfg.dspec,             dspec),
		OPT_BYTE("dsm",               'D', &cfg.dsmgmt,            dsm),
		OPT_FLAG("show-command",      'v', &cfg.show,              show),
		OPT_FLAG("dry-run",           'w', &cfg.dry_run,           dry),
		OPT_FLAG("latency",           't', &cfg.latency,           latency),
		OPT_FLAG("force",	        0, &cfg.force,             force),
		OPT_END()
	};

	if (opcode != nvme_cmd_write) {
		err = parse_and_open(&dev, argc, argv, desc, opts);
		if (err)
			goto ret;
	} else {
		err = argconfig_parse(argc, argv, desc, opts);
		if (err)
			goto ret;
		err = open_exclusive(&dev, argc, argv, cfg.force);
		if (err) {
			if (errno == EBUSY) {
				fprintf(stderr, "Failed to open %s.\n",
					basename(argv[optind]));
				fprintf(stderr,
					"Namespace is currently busy.\n");
				if (!cfg.force)
					fprintf(stderr,
					"Use the force [--force] option to ignore that.\n");
			} else {
				argconfig_print_help(desc, opts);
			}
			goto ret;
		}
	}

	if (!cfg.namespace_id) {
		err = nvme_get_nsid(dev_fd(dev), &cfg.namespace_id);
		if (err < 0) {
			fprintf(stderr, "get-namespace-id: %s\n", nvme_strerror(errno));
			goto close_dev;
		}
	}

	dfd = mfd = opcode & 1 ? STDIN_FILENO : STDOUT_FILENO;
	if (cfg.prinfo > 0xf) {
		err = -EINVAL;
		goto close_dev;
	}

	dsmgmt = cfg.dsmgmt;
	control |= (cfg.prinfo << 10);
	if (cfg.limited_retry)
		control |= NVME_IO_LR;
	if (cfg.force_unit_access)
		control |= NVME_IO_FUA;
	if (cfg.storage_tag_check)
		control |= NVME_IO_STC;
	if (cfg.dtype) {
		if (cfg.dtype > 0xf) {
			fprintf(stderr, "Invalid directive type, %x\n",
				cfg.dtype);
			err = -EINVAL;
			goto close_dev;
		}
		control |= cfg.dtype << 4;
		dsmgmt |= ((__u32)cfg.dspec) << 16;
	}

	if (strlen(cfg.data)) {
		dfd = open(cfg.data, flags, mode);
		if (dfd < 0) {
			perror(cfg.data);
			err = -EINVAL;
			goto close_dev;
		}
	}

	if (strlen(cfg.metadata)) {
		mfd = open(cfg.metadata, flags, mode);
		if (mfd < 0) {
			perror(cfg.metadata);
			err = -EINVAL;
			goto close_dfd;
		}
	}

	if (!cfg.data_size)	{
		fprintf(stderr, "data size not provided\n");
		err = -EINVAL;
		goto close_mfd;
	}

	if (nvme_get_logical_block_size(dev_fd(dev), cfg.namespace_id,
					&logical_block_size) < 0)
		goto close_mfd;

	buffer_size = ((long long)cfg.block_count + 1) * logical_block_size;
	if (cfg.data_size < buffer_size) {
		fprintf(stderr, "Rounding data size to fit block count (%lld bytes)\n",
				buffer_size);
	} else
		buffer_size = cfg.data_size;

	/* Get the required block count. Note this is a zeroes based value. */
	nblocks = ((buffer_size + (logical_block_size - 1)) / logical_block_size) - 1;

	/* Update the data size based on the required block count */
	buffer_size = (nblocks + 1) * logical_block_size;

	buffer = nvme_alloc(buffer_size, &huge);
	if (!buffer) {
		err = -ENOMEM;
		goto close_mfd;
	}

	if (cfg.metadata_size) {
		err = nvme_cli_identify_ns(dev, cfg.namespace_id, &ns);
		if (err > 0) {
			nvme_show_status(err);
			goto free_buffer;
		} else if (err < 0) {
			fprintf(stderr, "identify namespace: %s\n", nvme_strerror(errno));
			goto free_buffer;
		}

		nvme_id_ns_flbas_to_lbaf_inuse(ns.flbas, &lba_index);
		ms = ns.lbaf[lba_index].ms;

		err = nvme_identify_ns_csi(dev_fd(dev), 1, 0, NVME_CSI_NVM,
					   &nvm_ns);
		if (!err) {
			sts = nvm_ns.elbaf[lba_index] & NVME_NVM_ELBAF_STS_MASK;
			pif = (nvm_ns.elbaf[lba_index] & NVME_NVM_ELBAF_PIF_MASK) >> 7;
		}

		mbuffer_size = ((unsigned long long)cfg.block_count + 1) * ms;
		if (ms && cfg.metadata_size < mbuffer_size) {
			fprintf(stderr, "Rounding metadata size to fit block count (%lld bytes)\n",
					mbuffer_size);
		} else {
			mbuffer_size = cfg.metadata_size;
		}
		mbuffer = malloc(mbuffer_size);
		if (!mbuffer) {
			err = -ENOMEM;
			goto free_buffer;
		}
		memset(mbuffer, 0, mbuffer_size);
	}

	if (invalid_tags(cfg.storage_tag, cfg.ref_tag, sts, pif)) {
		err = -EINVAL;
		goto free_buffer;
	}

	if ((opcode & 1)) {
		err = read(dfd, (void *)buffer, cfg.data_size);
		if (err < 0) {
			err = -errno;
			fprintf(stderr, "failed to read data buffer from input"
					" file %s\n", strerror(errno));
			goto free_mbuffer;
		}
	}

	if ((opcode & 1) && cfg.metadata_size) {
		err = read(mfd, (void *)mbuffer, mbuffer_size);
		if (err < 0) {
			err = -errno;
			fprintf(stderr, "failed to read meta-data buffer from"
					" input file %s\n", strerror(errno));
			goto free_mbuffer;
		}
	}

	if (cfg.show || cfg.dry_run) {
		printf("opcode       : %02x\n", opcode);
		printf("nsid         : %02x\n", cfg.namespace_id);
		printf("flags        : %02x\n", 0);
		printf("control      : %04x\n", control);
		printf("nblocks      : %04x\n", nblocks);
		printf("metadata     : %"PRIx64"\n", (uint64_t)(uintptr_t)mbuffer);
		printf("addr         : %"PRIx64"\n", (uint64_t)(uintptr_t)buffer);
		printf("slba         : %"PRIx64"\n", (uint64_t)cfg.start_block);
		printf("dsmgmt       : %08x\n", dsmgmt);
		printf("reftag       : %"PRIx64"\n", (uint64_t)cfg.ref_tag);
		printf("apptag       : %04x\n", cfg.app_tag);
		printf("appmask      : %04x\n", cfg.app_tag_mask);
		printf("storagetagcheck : %04x\n", cfg.storage_tag_check);
		printf("storagetag      : %"PRIx64"\n", (uint64_t)cfg.storage_tag);
		printf("pif             : %02x\n", pif);
		printf("sts             : %02x\n", sts);
	}
	if (cfg.dry_run)
		goto free_mbuffer;

	struct nvme_io_args args = {
		.args_size	= sizeof(args),
		.fd		= dev_fd(dev),
		.nsid		= cfg.namespace_id,
		.slba		= cfg.start_block,
		.nlb		= nblocks,
		.control	= control,
		.dsm		= cfg.dsmgmt,
		.sts		= sts,
		.pif		= pif,
		.dspec		= cfg.dspec,
		.reftag_u64	= cfg.ref_tag,
		.apptag		= cfg.app_tag,
		.appmask	= cfg.app_tag_mask,
		.storage_tag	= cfg.storage_tag,
		.data_len	= buffer_size,
		.data		= buffer,
		.metadata_len	= cfg.metadata_size,
		.metadata	= mbuffer,
		.timeout	= NVME_DEFAULT_IOCTL_TIMEOUT,
		.result		= NULL,
	};
	gettimeofday(&start_time, NULL);
	err = nvme_io(&args, opcode);
	gettimeofday(&end_time, NULL);
	if (cfg.latency)
		printf(" latency: %s: %llu us\n",
			command, elapsed_utime(start_time, end_time));
	if (err < 0)
		fprintf(stderr, "submit-io: %s\n", nvme_strerror(errno));
	else if (err)
		nvme_show_status(err);
	else {
		if (!(opcode & 1) && write(dfd, (void *)buffer, cfg.data_size) < 0) {
			fprintf(stderr, "write: %s: failed to write buffer to output file\n",
					strerror(errno));
			err = -EINVAL;
		} else if (!(opcode & 1) && cfg.metadata_size &&
				write(mfd, (void *)mbuffer, mbuffer_size) < 0) {
			fprintf(stderr, "write: %s: failed to write meta-data buffer to output file\n",
					strerror(errno));
			err = -EINVAL;
		} else
			fprintf(stderr, "%s: Success\n", command);
	}

free_mbuffer:
	free(mbuffer);
free_buffer:
	nvme_free(buffer, huge);
close_mfd:
	if (strlen(cfg.metadata))
		close(mfd);
close_dfd:
	close(dfd);
close_dev:
	dev_close(dev);
ret:
	return err;
}

static int compare(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	const char *desc = "Compare specified logical blocks on "\
		"device with specified data buffer; return failure if buffer "\
		"and block(s) are dissimilar";
	return submit_io(nvme_cmd_compare, "compare", desc, argc, argv);
}

static int read_cmd(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	const char *desc = "Copy specified logical blocks on the given "\
		"device to specified data buffer (default buffer is stdout).";
	return submit_io(nvme_cmd_read, "read", desc, argc, argv);
}

static int write_cmd(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	const char *desc = "Copy from provided data buffer (default "\
		"buffer is stdin) to specified logical blocks on the given "\
		"device.";
	return submit_io(nvme_cmd_write, "write", desc, argc, argv);
}

static int verify_cmd(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	__u16 control = 0;
	__u8 lba_index, sts = 0, pif = 0;
	struct nvme_id_ns ns;
	struct nvme_nvm_id_ns nvm_ns;
	struct nvme_dev *dev;
	int err;

	const char *desc = "Verify specified logical blocks on the given device.";
	const char *force_unit_access_verify = "force device to commit cached data before performing the verify operation";
	const char *storage_tag_check = "This bit specifies the Storage Tag field shall "\
		"be checked as part of Verify operation";

	struct config {
		__u32	namespace_id;
		__u64	start_block;
		__u16	block_count;
		bool	limited_retry;
		bool	force_unit_access;
		__u8	prinfo;
		__u32	ref_tag;
		__u16	app_tag;
		__u16	app_tag_mask;
		__u64	storage_tag;
		bool	storage_tag_check;
	};

	struct config cfg = {
		.namespace_id		= 0,
		.start_block		= 0,
		.block_count		= 0,
		.limited_retry		= false,
		.force_unit_access	= false,
		.prinfo			= 0,
		.ref_tag		= 0,
		.app_tag		= 0,
		.app_tag_mask		= 0,
		.storage_tag		= 0,
		.storage_tag_check	= false,
	};

	OPT_ARGS(opts) = {
		OPT_UINT("namespace-id",      'n', &cfg.namespace_id,      namespace_desired),
		OPT_SUFFIX("start-block",     's', &cfg.start_block,       start_block),
		OPT_SHRT("block-count",       'c', &cfg.block_count,       block_count),
		OPT_FLAG("limited-retry",     'l', &cfg.limited_retry,     limited_retry),
		OPT_FLAG("force-unit-access", 'f', &cfg.force_unit_access, force_unit_access_verify),
		OPT_BYTE("prinfo",            'p', &cfg.prinfo,            prinfo),
		OPT_SUFFIX("ref-tag",         'r', &cfg.ref_tag,           ref_tag),
		OPT_SHRT("app-tag",           'a', &cfg.app_tag,           app_tag),
		OPT_SHRT("app-tag-mask",      'm', &cfg.app_tag_mask,      app_tag_mask),
		OPT_SUFFIX("storage-tag",     'S', &cfg.storage_tag,       storage_tag),
		OPT_FLAG("storage-tag-check", 'C', &cfg.storage_tag_check, storage_tag_check),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		goto ret;

	if (cfg.prinfo > 0xf) {
		err = EINVAL;
		goto close_dev;
	}

	control |= (cfg.prinfo << 10);
	if (cfg.limited_retry)
		control |= NVME_IO_LR;
	if (cfg.force_unit_access)
		control |= NVME_IO_FUA;
	if (cfg.storage_tag_check)
		control |= NVME_IO_STC;

	if (!cfg.namespace_id) {
		err = nvme_get_nsid(dev_fd(dev), &cfg.namespace_id);
		if (err < 0) {
			fprintf(stderr, "get-namespace-id: %s\n", nvme_strerror(errno));
			goto close_dev;
		}
	}

	err = nvme_cli_identify_ns(dev, cfg.namespace_id, &ns);
	if (err < 0) {
		fprintf(stderr, "identify namespace: %s\n", nvme_strerror(errno));
		goto close_dev;
	} else if (err) {
		nvme_show_status(err);
		goto close_dev;
	}

	err = nvme_identify_ns_csi(dev_fd(dev), cfg.namespace_id, 0,
				   NVME_CSI_NVM, &nvm_ns);
	if (!err) {
		nvme_id_ns_flbas_to_lbaf_inuse(ns.flbas, &lba_index);
		sts = nvm_ns.elbaf[lba_index] & NVME_NVM_ELBAF_STS_MASK;
		pif = (nvm_ns.elbaf[lba_index] & NVME_NVM_ELBAF_PIF_MASK) >> 7;
	}

	if (invalid_tags(cfg.storage_tag, cfg.ref_tag, sts, pif)) {
		err = -EINVAL;
		goto close_dev;
	}

	struct nvme_io_args args = {
		.args_size	= sizeof(args),
		.fd		= dev_fd(dev),
		.nsid		= cfg.namespace_id,
		.slba		= cfg.start_block,
		.nlb		= cfg.block_count,
		.control	= control,
		.reftag_u64	= cfg.ref_tag,
		.apptag		= cfg.app_tag,
		.appmask	= cfg.app_tag_mask,
		.sts		= sts,
		.pif		= pif,
		.storage_tag	= cfg.storage_tag,
		.timeout	= NVME_DEFAULT_IOCTL_TIMEOUT,
		.result		= NULL,
	};
	err = nvme_verify(&args);
	if (err < 0)
		fprintf(stderr, "verify: %s\n", nvme_strerror(errno));
	else if (err != 0)
		nvme_show_status(err);
	else
		printf("NVME Verify Success\n");

close_dev:
	dev_close(dev);
ret:
	return err;
}

static int sec_recv(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	const char *desc = "Obtain results of one or more "\
		"previously submitted security-sends. Results, and association "\
		"between Security Send and Receive, depend on the security "\
		"protocol field as they are defined by the security protocol "\
		"used. A Security Receive must follow a Security Send made with "\
		"the same security protocol.";
	const char *size = "size of buffer (prints to stdout on success)";
	const char *al = "allocation length (cf. SPC-4)";
	struct nvme_dev *dev;
	void *sec_buf = NULL;
	int err;

	struct config {
		__u32	namespace_id;
		__u32	size;
		__u8	nssf;
		__u8	secp;
		__u16	spsp;
		__u32	al;
		bool	raw_binary;
	};

	struct config cfg = {
		.namespace_id	= 0,
		.size		= 0,
		.nssf		= 0,
		.secp		= 0,
		.spsp		= 0,
		.al		= 0,
		.raw_binary	= false,
	};

	OPT_ARGS(opts) = {
		OPT_UINT("namespace-id", 'n', &cfg.namespace_id, namespace_desired),
		OPT_UINT("size",         'x', &cfg.size,         size),
		OPT_BYTE("nssf",         'N', &cfg.nssf,         nssf),
		OPT_BYTE("secp",         'p', &cfg.secp,         secp),
		OPT_SHRT("spsp",         's', &cfg.spsp,         spsp),
		OPT_UINT("al",           't', &cfg.al,           al),
		OPT_FLAG("raw-binary",   'b', &cfg.raw_binary,   raw_dump),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		goto ret;

	if (cfg.size) {
		if (posix_memalign(&sec_buf, getpagesize(), cfg.size)) {
			fprintf(stderr, "No memory for security size:%d\n",
								cfg.size);
			err = -ENOMEM;
			goto close_dev;
		}
	}

	struct nvme_security_receive_args args = {
		.args_size	= sizeof(args),
		.nsid		= cfg.namespace_id,
		.nssf		= cfg.nssf,
		.spsp0		= cfg.spsp & 0xff,
		.spsp1		= cfg.spsp >> 8,
		.secp		= cfg.secp,
		.al		= cfg.al,
		.data_len	= cfg.size,
		.data		= sec_buf,
		.timeout	= NVME_DEFAULT_IOCTL_TIMEOUT,
		.result		= NULL,
	};

	err = nvme_cli_security_receive(dev, &args);

	if (err < 0)
		fprintf(stderr, "security receive: %s\n", nvme_strerror(errno));
	else if (err != 0)
		nvme_show_status(err);
	else {
		printf("NVME Security Receive Command Success\n");
		if (!cfg.raw_binary) {
			d(sec_buf, cfg.size, 16, 1);
		} else if (cfg.size)
			d_raw((unsigned char *)sec_buf, cfg.size);
	}

	free(sec_buf);

close_dev:
	dev_close(dev);
ret:
	return err;
}

static int get_lba_status(int argc, char **argv, struct command *cmd,
		struct plugin *plugin)
{
	const char *desc = "Information about potentially unrecoverable LBAs.";
	const char *slba = "Starting LBA(SLBA) in 64-bit address of the first"\
			    " logical block addressed by this command";
	const char *mndw = "Maximum Number of Dwords(MNDW) specifies maximum"\
			    " number of dwords to return";
	const char *atype = "Action Type(ATYPE) specifies the mechanism"\
			     " the controller uses in determining the LBA"\
			     " Status Descriptors to return.";
	const char *rl = "Range Length(RL) specifies the length of the range"\
			  " of contiguous LBAs beginning at SLBA";

	enum nvme_print_flags flags;
	unsigned long buf_len;
	struct nvme_dev *dev;
	void *buf;
	int err;

	struct config {
		__u32	namespace_id;
		__u64	slba;
		__u32	mndw;
		__u8	atype;
		__u16	rl;
		__u32	timeout;
		char	*output_format;
	};

	struct config cfg = {
		.namespace_id	= 0,
		.slba		= 0,
		.mndw		= 0,
		.atype		= 0,
		.rl		= 0,
		.timeout	= 0,
		.output_format	= "normal",
	};

	OPT_ARGS(opts) = {
		OPT_UINT("namespace-id", 'n', &cfg.namespace_id,  namespace_desired),
		OPT_SUFFIX("start-lba",  's', &cfg.slba,          slba),
		OPT_UINT("max-dw",       'm', &cfg.mndw,          mndw),
		OPT_BYTE("action",       'a', &cfg.atype,         atype),
		OPT_SHRT("range-len",    'l', &cfg.rl,            rl),
		OPT_UINT("timeout",      't', &cfg.timeout,       timeout),
		OPT_FMT("output-format", 'o', &cfg.output_format, output_format),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		goto err;

	err = flags = validate_output_format(cfg.output_format);
	if (flags < 0)
		goto close_dev;

	if (!cfg.atype) {
		fprintf(stderr, "action type (--action) has to be given\n");
		err = -EINVAL;
		goto close_dev;
	}

	buf_len = (cfg.mndw + 1) * 4;
	buf = calloc(1, buf_len);
	if (!buf) {
		err = -ENOMEM;
		goto close_dev;
	}

	struct nvme_get_lba_status_args args = {
		.args_size	= sizeof(args),
		.fd		= dev_fd(dev),
		.nsid		= cfg.namespace_id,
		.slba		= cfg.slba,
		.mndw		= cfg.mndw,
		.rl		= cfg.rl,
		.atype		= cfg.atype,
		.lbas		= buf,
		.timeout	= NVME_DEFAULT_IOCTL_TIMEOUT,
		.result		= NULL,
	};
	err = nvme_get_lba_status(&args);
	if (!err)
		nvme_show_lba_status(buf, buf_len, flags);
	else if (err > 0)
		nvme_show_status(err);
	else
		fprintf(stderr, "get lba status: %s\n", nvme_strerror(errno));
	free(buf);
close_dev:
	dev_close(dev);
err:
	return err;
}

static int capacity_mgmt(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	const char *desc = "Host software uses the Capacity Management command to "\
		"configure Endurance Groups and NVM Sets in an NVM subsystem by either " \
		"selecting one of a set of supported configurations or by specifying the "\
		"capacity of the Endurance Group or NVM Set to be created";
	const char *operation = "Operation to be performed by the controller";
	const char *element_id = "Value specific to the value of the Operation field.";
	const char *cap_lower = "Least significant 32 bits of the capacity in bytes of the "\
		"Endurance Group or NVM Set to be created";
	const char *cap_upper = "Most significant 32 bits of the capacity in bytes of the "\
		"Endurance Group or NVM Set to be created";

	struct nvme_dev *dev;
	int err = -1;
	__u32 result;

	struct config {
		__u8	operation;
		__u16	element_id;
		__u32	dw11;
		__u32	dw12;
	};

	struct config cfg = {
		.operation	= 0xff,
		.element_id	= 0xffff,
		.dw11		= 0,
		.dw12		= 0,
	};

	OPT_ARGS(opts) = {
		OPT_BYTE("operation",   'o', &cfg.operation,    operation),
		OPT_SHRT("element-id",  'i', &cfg.element_id,   element_id),
		OPT_UINT("cap-lower",   'l', &cfg.dw11,		cap_lower),
		OPT_UINT("cap-upper",   'u', &cfg.dw12,         cap_upper),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		goto ret;

	if (cfg.operation > 0xf) {
		fprintf(stderr, "invalid operation field: %u\n", cfg.operation);
		err = -1;
		goto close_dev;
	}

	struct nvme_capacity_mgmt_args args = {
		.args_size	= sizeof(args),
		.fd		= dev_fd(dev),
		.op		= cfg.operation,
		.element_id	= cfg.element_id,
		.cdw11		= cfg.dw11,
		.cdw12		= cfg.dw12,
		.timeout	= NVME_DEFAULT_IOCTL_TIMEOUT,
		.result		= &result,
	};
	err = nvme_capacity_mgmt(&args);
	if (!err) {
		printf("Capacity Management Command is Success\n");
		if (cfg.operation == 1) {
			printf("Created Element Identifier for Endurance Group is: %u\n", result);
		} else if (cfg.operation == 3) {
			printf("Created Element Identifier for NVM Set is: %u\n", result);
		}
	} else if (err > 0)
		nvme_show_status(err);
	else if (err < 0)
		fprintf(stderr, "capacity management: %s\n", nvme_strerror(errno));

close_dev:
	dev_close(dev);
ret:
	return err;
}

static int dir_receive(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	const char *desc = "Read directive parameters of the "\
			    "specified directive type.";
	const char *nsr = "namespace stream requested";

	enum nvme_print_flags flags = NORMAL;
	struct nvme_dev *dev;
	__u32 result;
	__u32 dw12 = 0;
	void *buf = NULL;
	int err;

	struct config {
		__u32	namespace_id;
		__u32	data_len;
		bool	raw_binary;
		__u8	dtype;
		__u16	dspec;
		__u8	doper;
		__u16	nsr; /* dw12 for NVME_DIR_ST_RCVOP_STATUS */
		bool	human_readable;
	};

	struct config cfg = {
		.namespace_id	= 1,
		.data_len	= 0,
		.raw_binary	= false,
		.dtype		= 0,
		.dspec		= 0,
		.doper		= 0,
		.nsr		= 0,
		.human_readable	= false,
	};

	OPT_ARGS(opts) = {
		OPT_UINT("namespace-id",  'n', &cfg.namespace_id,   namespace_id_desired),
		OPT_UINT("data-len",      'l', &cfg.data_len,       buf_len),
		OPT_FLAG("raw-binary",    'b', &cfg.raw_binary,     raw_directive),
		OPT_BYTE("dir-type",      'D', &cfg.dtype,          dtype),
		OPT_SHRT("dir-spec",      'S', &cfg.dspec,          dspec_w_dtype),
		OPT_BYTE("dir-oper",      'O', &cfg.doper,          doper),
		OPT_SHRT("req-resource",  'r', &cfg.nsr,            nsr),
		OPT_FLAG("human-readable",'H', &cfg.human_readable, human_readable_directive),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		goto ret;

	if (cfg.human_readable)
		flags |= VERBOSE;
	if (cfg.raw_binary)
		flags = BINARY;

	switch (cfg.dtype) {
	case NVME_DIRECTIVE_DTYPE_IDENTIFY:
		switch (cfg.doper) {
		case NVME_DIRECTIVE_RECEIVE_IDENTIFY_DOPER_PARAM:
			if (!cfg.data_len)
				cfg.data_len = 4096;
			break;
		default:
			fprintf(stderr, "invalid directive operations for Identify Directives\n");
			err = -EINVAL;
			goto close_dev;
		}
		break;
	case NVME_DIRECTIVE_DTYPE_STREAMS:
		switch (cfg.doper) {
		case NVME_DIRECTIVE_RECEIVE_STREAMS_DOPER_PARAM:
			if (!cfg.data_len)
				cfg.data_len = 32;
			break;
		case NVME_DIRECTIVE_RECEIVE_STREAMS_DOPER_STATUS:
			if (!cfg.data_len)
				cfg.data_len = 128 * 1024;
			break;
		case NVME_DIRECTIVE_RECEIVE_STREAMS_DOPER_RESOURCE:
			dw12 = cfg.nsr;
			break;
		default:
			fprintf(stderr, "invalid directive operations for Streams Directives\n");
			err = -EINVAL;
			goto close_dev;
		}
		break;
	default:
		fprintf(stderr, "invalid directive type\n");
		err = -EINVAL;
		goto close_dev;
	}

	if (cfg.data_len) {
		if (posix_memalign(&buf, getpagesize(), cfg.data_len)) {
			err = -ENOMEM;
			goto close_dev;
		}
		memset(buf, 0, cfg.data_len);
	}

	struct nvme_directive_recv_args args = {
		.args_size	= sizeof(args),
		.fd		= dev_fd(dev),
		.nsid		= cfg.namespace_id,
		.dspec		= cfg.dspec,
		.doper		= cfg.doper,
		.dtype		= cfg.dtype,
		.cdw12		= dw12,
		.data_len	= cfg.data_len,
		.data		= buf,
		.timeout	= NVME_DEFAULT_IOCTL_TIMEOUT,
		.result		= &result,
	};
	err = nvme_directive_recv(&args);
	if (!err)
		nvme_directive_show(cfg.dtype, cfg.doper, cfg.dspec,
				    cfg.namespace_id, result, buf, cfg.data_len,
				    flags);
	else if (err > 0)
		nvme_show_status(err);
	else if (err < 0)
		fprintf(stderr, "dir-receive: %s\n", nvme_strerror(errno));

	free(buf);
close_dev:
	dev_close(dev);
ret:
	return err;
}

/* rpmb_cmd_option is defined in nvme-rpmb.c */
extern int rpmb_cmd_option(int, char **, struct command *, struct plugin *);
static int rpmb_cmd(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	return rpmb_cmd_option(argc, argv, cmd, plugin);
}

static int lockdown_cmd(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	const char *desc = "The Lockdown command is used to control the "\
		"Command and Feature Lockdown capability which configures the "\
		"prohibition or allowance of execution of the specified command "\
		"or Set Features command targeting a specific Feature Identifier.";
	const char *ofi_desc = "Opcode or Feature Identifier(OFI) "\
		"specifies the command opcode or Set Features Feature Identifier "\
		"identified by the Scope field.";
	const char *ifc_desc = "[0-3] Interface (INF) field identifies the "\
		"interfaces affected by this command.";
	const char *prhbt_desc = "[0-1]Prohibit(PRHBT) bit specifies whether "\
		"to prohibit or allow the command opcode or Set Features Feature "\
		"Identifier specified by this command.";
	const char *scp_desc = "[0-15]Scope(SCP) field specifies the contents "\
		"of the Opcode or Feature Identifier field.";
	const char *uuid_desc = "UUID Index - If this field is set to a non-zero "\
		"value, then the value of this field is the index of a UUID in the UUID "\
		"List that is used by the command.If this field is cleared to 0h,"\
		"then no UUID index is specified";

	struct nvme_dev *dev;
	int err = -1;

	struct config {
		__u8	ofi;
		__u8	ifc;
		__u8	prhbt;
		__u8	scp;
		__u8	uuid;
	};

	struct config cfg = {
		.ofi	= 0,
		.ifc	= 0,
		.prhbt	= 0,
		.scp	= 0,
		.uuid	= 0,
	};

	OPT_ARGS(opts) = {
		OPT_BYTE("ofi",		'o', &cfg.ofi,      ofi_desc),
		OPT_BYTE("ifc",		'f', &cfg.ifc,      ifc_desc),
		OPT_BYTE("prhbt",	'p', &cfg.prhbt,    prhbt_desc),
		OPT_BYTE("scp",		's', &cfg.scp,      scp_desc),
		OPT_BYTE("uuid",	'U', &cfg.uuid,     uuid_desc),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		goto ret;

	/* check for input argument limit */
	if (cfg.ifc > 3) {
		fprintf(stderr, "invalid interface settings:%d\n", cfg.ifc);
		err = -1;
		goto close_dev;
	}
	if (cfg.prhbt > 1) {
		fprintf(stderr, "invalid prohibit settings:%d\n", cfg.prhbt);
		err = -1;
		goto close_dev;
	}
	if (cfg.scp > 15) {
		fprintf(stderr, "invalid scope settings:%d\n", cfg.scp);
		err = -1;
		goto close_dev;
	}
	if (cfg.uuid > 127) {
		fprintf(stderr, "invalid UUID index settings:%d\n", cfg.uuid);
		err = -1;
		goto close_dev;
	}

	struct nvme_lockdown_args args = {
		.args_size	= sizeof(args),
		.fd		= dev_fd(dev),
		.scp		= cfg.scp,
		.prhbt		= cfg.prhbt,
		.ifc		= cfg.ifc,
		.ofi		= cfg.ofi,
		.uuidx		= cfg.uuid,
		.timeout	= NVME_DEFAULT_IOCTL_TIMEOUT,
		.result		= NULL,
	};
	err = nvme_lockdown(&args);
	if (err < 0)
		fprintf(stderr, "lockdown: %s\n", nvme_strerror(errno));
	else if (err > 0)
		nvme_show_status(err);
	else
		printf("Lockdown Command is Successful\n");

close_dev:
	dev_close(dev);
ret:
	return err;
}

static int passthru(int argc, char **argv, bool admin,
		const char *desc, struct command *cmd)
{
	const char *opcode = "opcode (required)";
	const char *cflags = "command flags";
	const char *rsvd = "value for reserved field";
	const char *data_len = "data I/O length (bytes)";
	const char *metadata_len = "metadata seg. length (bytes)";
	const char *metadata = "metadata input or output file";
	const char *cdw2 = "command dword 2 value";
	const char *cdw3 = "command dword 3 value";
	const char *cdw10 = "command dword 10 value";
	const char *cdw11 = "command dword 11 value";
	const char *cdw12 = "command dword 12 value";
	const char *cdw13 = "command dword 13 value";
	const char *cdw14 = "command dword 14 value";
	const char *cdw15 = "command dword 15 value";
	const char *input = "data input or output file";
	const char *show = "print command before sending";
	const char *re = "set dataflow direction to receive";
	const char *wr = "set dataflow direction to send";
	const char *prefill = "prefill buffers with known byte-value, default 0";

	int flags;
	int mode = S_IRUSR | S_IWUSR |S_IRGRP | S_IWGRP| S_IROTH;
	void *data = NULL, *mdata = NULL;
	int err = 0, dfd, mfd;
	struct nvme_dev *dev;
	__u32 result;
	bool huge = false;
	const char *cmd_name = NULL;
	struct timeval start_time, end_time;

	struct config {
		__u8	opcode;
		__u8	flags;
		__u16	rsvd;
		__u32	namespace_id;
		__u32	data_len;
		__u32	metadata_len;
		__u32	timeout;
		__u32	cdw2;
		__u32	cdw3;
		__u32	cdw10;
		__u32	cdw11;
		__u32	cdw12;
		__u32	cdw13;
		__u32	cdw14;
		__u32	cdw15;
		char	*input_file;
		char	*metadata;
		bool	raw_binary;
		bool	show_command;
		bool	dry_run;
		bool	read;
		bool	write;
		__u8	prefill;
		bool	latency;
	};

	struct config cfg = {
		.opcode		= 0,
		.flags		= 0,
		.prefill	= 0,
		.rsvd		= 0,
		.namespace_id	= 0,
		.data_len	= 0,
		.metadata_len	= 0,
		.timeout	= 0,
		.cdw2		= 0,
		.cdw3		= 0,
		.cdw10		= 0,
		.cdw11		= 0,
		.cdw12		= 0,
		.cdw13		= 0,
		.cdw14		= 0,
		.cdw15		= 0,
		.input_file	= "",
		.metadata	= "",
		.raw_binary	= false,
		.show_command	= false,
		.dry_run	= false,
		.read		= false,
		.write		= false,
		.latency	= false,
	};

	OPT_ARGS(opts) = {
		OPT_BYTE("opcode",       'o', &cfg.opcode,       opcode),
		OPT_BYTE("flags",        'f', &cfg.flags,        cflags),
		OPT_BYTE("prefill",      'p', &cfg.prefill,      prefill),
		OPT_SHRT("rsvd",         'R', &cfg.rsvd,         rsvd),
		OPT_UINT("namespace-id", 'n', &cfg.namespace_id, namespace_desired),
		OPT_UINT("data-len",     'l', &cfg.data_len,     data_len),
		OPT_UINT("metadata-len", 'm', &cfg.metadata_len, metadata_len),
		OPT_UINT("timeout",      't', &cfg.timeout,      timeout),
		OPT_UINT("cdw2",         '2', &cfg.cdw2,         cdw2),
		OPT_UINT("cdw3",         '3', &cfg.cdw3,         cdw3),
		OPT_UINT("cdw10",        '4', &cfg.cdw10,        cdw10),
		OPT_UINT("cdw11",        '5', &cfg.cdw11,        cdw11),
		OPT_UINT("cdw12",        '6', &cfg.cdw12,        cdw12),
		OPT_UINT("cdw13",        '7', &cfg.cdw13,        cdw13),
		OPT_UINT("cdw14",        '8', &cfg.cdw14,        cdw14),
		OPT_UINT("cdw15",        '9', &cfg.cdw15,        cdw15),
		OPT_FILE("input-file",   'i', &cfg.input_file,   input),
		OPT_FILE("metadata",     'M', &cfg.metadata,     metadata),
		OPT_FLAG("raw-binary",   'b', &cfg.raw_binary,   raw_dump),
		OPT_FLAG("show-command", 's', &cfg.show_command, show),
		OPT_FLAG("dry-run",      'd', &cfg.dry_run,      dry),
		OPT_FLAG("read",         'r', &cfg.read,         re),
		OPT_FLAG("write",        'w', &cfg.write,        wr),
		OPT_FLAG("latency",      'T', &cfg.latency,      latency),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		goto ret;

	if (cfg.opcode & 0x01)
		cfg.write = true;

	if (cfg.opcode & 0x02)
		cfg.read = true;

	if (cfg.write) {
		flags = O_RDONLY;
		dfd = mfd = STDIN_FILENO;
	}

	if (cfg.read) {
		flags = O_WRONLY | O_CREAT;
		dfd = mfd = STDOUT_FILENO;
	}

	if (strlen(cfg.input_file)) {
		dfd = open(cfg.input_file, flags, mode);
		if (dfd < 0) {
			perror(cfg.input_file);
			err = -EINVAL;
			goto close_dev;
		}
	}

	if (cfg.metadata && strlen(cfg.metadata)) {
		mfd = open(cfg.metadata, flags, mode);
		if (mfd < 0) {
			perror(cfg.metadata);
			err = -EINVAL;
			goto close_dfd;
		}
	}

	if (cfg.metadata_len) {
		mdata = malloc(cfg.metadata_len);
		if (!mdata) {
			err = -ENOMEM;
			goto close_mfd;
		}

		if (cfg.write) {
			if (read(mfd, mdata, cfg.metadata_len) < 0) {
				err = -errno;
				perror("failed to read metadata write buffer");
				goto free_metadata;
			}
		} else
			memset(mdata, cfg.prefill, cfg.metadata_len);
	}

	if (cfg.data_len) {
		data = nvme_alloc(cfg.data_len, &huge);
		if (!data) {
			err = -ENOMEM;
			goto free_metadata;
		}

		memset(data, cfg.prefill, cfg.data_len);
		if (!cfg.read && !cfg.write) {
			fprintf(stderr, "data direction not given\n");
			err = -EINVAL;
			goto free_data;
		} else if (cfg.write) {
			if (read(dfd, data, cfg.data_len) < 0) {
				err = -errno;
				fprintf(stderr, "failed to read write buffer "
						"%s\n", strerror(errno));
				goto free_data;
			}
		}
	}

	if (cfg.show_command || cfg.dry_run) {
		printf("opcode       : %02x\n", cfg.opcode);
		printf("flags        : %02x\n", cfg.flags);
		printf("rsvd1        : %04x\n", cfg.rsvd);
		printf("nsid         : %08x\n", cfg.namespace_id);
		printf("cdw2         : %08x\n", cfg.cdw2);
		printf("cdw3         : %08x\n", cfg.cdw3);
		printf("data_len     : %08x\n", cfg.data_len);
		printf("metadata_len : %08x\n", cfg.metadata_len);
		printf("addr         : %"PRIx64"\n", (uint64_t)(uintptr_t)data);
		printf("metadata     : %"PRIx64"\n", (uint64_t)(uintptr_t)mdata);
		printf("cdw10        : %08x\n", cfg.cdw10);
		printf("cdw11        : %08x\n", cfg.cdw11);
		printf("cdw12        : %08x\n", cfg.cdw12);
		printf("cdw13        : %08x\n", cfg.cdw13);
		printf("cdw14        : %08x\n", cfg.cdw14);
		printf("cdw15        : %08x\n", cfg.cdw15);
		printf("timeout_ms   : %08x\n", cfg.timeout);
	}
	if (cfg.dry_run)
		goto free_data;

	gettimeofday(&start_time, NULL);

	if (admin)
		err = nvme_cli_admin_passthru(dev, cfg.opcode, cfg.flags,
					  cfg.rsvd,
					  cfg.namespace_id, cfg.cdw2,
					  cfg.cdw3, cfg.cdw10,
					  cfg.cdw11, cfg.cdw12, cfg.cdw13,
					  cfg.cdw14,
					  cfg.cdw15, cfg.data_len, data,
					  cfg.metadata_len,
					  mdata, cfg.timeout, &result);
	else
		err = nvme_io_passthru(dev_fd(dev), cfg.opcode, cfg.flags,
				       cfg.rsvd,
				       cfg.namespace_id, cfg.cdw2, cfg.cdw3,
				       cfg.cdw10,
				       cfg.cdw11, cfg.cdw12, cfg.cdw13,
				       cfg.cdw14,
				       cfg.cdw15, cfg.data_len, data,
				       cfg.metadata_len,
				       mdata, cfg.timeout, &result);

	gettimeofday(&end_time, NULL);
	cmd_name = nvme_cmd_to_string(admin, cfg.opcode);
	if (cfg.latency)
		printf("%s Command %s latency: %llu us\n",
			admin ? "Admin": "IO",
			strcmp(cmd_name, "Unknown") ? cmd_name: "Vendor Specific",
			elapsed_utime(start_time, end_time));

	if (err < 0)
		fprintf(stderr, "passthru: %s\n", nvme_strerror(errno));
	else if (err)
		nvme_show_status(err);
	else  {
		fprintf(stderr, "%s Command %s is Success and result: 0x%08x\n",
				admin ? "Admin": "IO",
				strcmp(cmd_name, "Unknown") ? cmd_name: "Vendor Specific",
				result);
		if (cfg.read && strlen(cfg.input_file)) {
			if (write(dfd, (void *)data, cfg.data_len) < 0)
				perror("failed to write data buffer");
			if (cfg.metadata_len && cfg.metadata)
				if (write(mfd, (void *)mdata, cfg.metadata_len) < 0)
					perror("failed to write metadata buffer");
		} else if (!cfg.raw_binary) {
			if (data && cfg.read && !err)
				d((unsigned char *)data, cfg.data_len, 16, 1);
		} else if (data && cfg.read)
			d_raw((unsigned char *)data, cfg.data_len);
	}
free_metadata:
	free(mdata);
free_data:
	nvme_free(data, huge);
close_dfd:
	if (strlen(cfg.input_file))
		close(dfd);
close_mfd:
	if (cfg.metadata && strlen(cfg.metadata))
		close(mfd);
close_dev:
	dev_close(dev);
ret:
	return err;
}

static int io_passthru(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	const char *desc = "Send a user-defined IO command to the specified "\
		"device via IOCTL passthrough, return results.";
	return passthru(argc, argv, false, desc, cmd);
}

static int admin_passthru(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	const char *desc = "Send a user-defined Admin command to the specified "\
		"device via IOCTL passthrough, return results.";
	return passthru(argc, argv, true, desc, cmd);
}

static int gen_hostnqn_cmd(int argc, char **argv, struct command *command, struct plugin *plugin)
{
	char *hostnqn;

	hostnqn = nvmf_hostnqn_generate();
	if (!hostnqn) {
		fprintf(stderr, "\"%s\" not supported. Install lib uuid and rebuild.\n",
			command->name);
		return -ENOTSUP;
	}
	printf("%s\n", hostnqn);
	free(hostnqn);
	return 0;
}

static int show_hostnqn_cmd(int argc, char **argv, struct command *command, struct plugin *plugin)
{
	char *hostnqn;

	hostnqn = nvmf_hostnqn_from_file();
	if (!hostnqn)
		hostnqn =  nvmf_hostnqn_generate();

	if (!hostnqn) {
		fprintf(stderr, "hostnqn is not available -- use nvme gen-hostnqn\n");
		return ENOENT;
	}

	fprintf(stdout, "%s\n", hostnqn);
	free(hostnqn);

	return 0;
}


static int gen_dhchap_key(int argc, char **argv, struct command *command, struct plugin *plugin)
{
	const char *desc = "Generate a DH-HMAC-CHAP host key usable "\
		"for NVMe In-Band Authentication.";
	const char *secret = "Optional secret (in hexadecimal characters) "\
		"to be used to initialize the host key.";
	const char *key_len = "Length of the resulting key "\
		"(32, 48, or 64 bytes).";
	const char *hmac = "HMAC function to use for key transformation "\
		"(0 = none, 1 = SHA-256, 2 = SHA-384, 3 = SHA-512).";
	const char *nqn = "Host NQN to use for key transformation.";

	unsigned char *raw_secret;
	unsigned char key[68];
	char encoded_key[128];
	unsigned long crc = crc32(0L, NULL, 0);
	int err = 0;

	struct config {
		char		*secret;
		unsigned int	key_len;
		char		*nqn;
		unsigned int	hmac;
	};

	struct config cfg = {
		.secret		= NULL,
		.key_len	= 0,
		.nqn		= NULL,
		.hmac		= 0,
	};

	OPT_ARGS(opts) = {
		OPT_STR("secret",	's', &cfg.secret,	secret),
		OPT_UINT("key-length",	'l', &cfg.key_len,	key_len),
		OPT_STR("nqn",		'n', &cfg.nqn,		nqn),
		OPT_UINT("hmac",	'm', &cfg.hmac,		hmac),
		OPT_END()
	};

	err = argconfig_parse(argc, argv, desc, opts);
	if (err)
		return err;

	if (cfg.hmac > 3) {
		fprintf(stderr, "Invalid HMAC identifier %u\n", cfg.hmac);
		return -EINVAL;
	}
	if (cfg.hmac > 0) {
		switch (cfg.hmac) {
		case 1:
			if (!cfg.key_len)
				cfg.key_len = 32;
			else if (cfg.key_len != 32) {
				fprintf(stderr, "Invalid key length %d for SHA(256)\n",
					cfg.key_len);
				return -EINVAL;
			}
			break;
		case 2:
			if (!cfg.key_len)
				cfg.key_len = 48;
			else if (cfg.key_len != 48) {
				fprintf(stderr, "Invalid key length %d for SHA(384)\n",
					cfg.key_len);
				return -EINVAL;
			}
			break;
		case 3:
			if (!cfg.key_len)
				cfg.key_len = 64;
			else if (cfg.key_len != 64) {
				fprintf(stderr, "Invalid key length %d for SHA(512)\n",
					cfg.key_len);
				return -EINVAL;
			}
			break;
		default:
			break;
		}
	} else if (!cfg.key_len)
		cfg.key_len = 32;

	if (cfg.key_len != 32 && cfg.key_len != 48 && cfg.key_len != 64) {
		fprintf(stderr, "Invalid key length %u\n", cfg.key_len);
		return -EINVAL;
	}
	raw_secret = malloc(cfg.key_len);
	if (!raw_secret)
		return -ENOMEM;
	if (!cfg.secret) {
		if (getrandom_bytes(raw_secret, cfg.key_len) < 0)
			return -errno;
	} else {
		int secret_len = 0, i;
		unsigned int c;

		for (i = 0; i < strlen(cfg.secret); i+=2) {
			if (sscanf(&cfg.secret[i], "%02x", &c) != 1) {
				fprintf(stderr, "Invalid secret '%s'\n",
					cfg.secret);
				return -EINVAL;
			}
			raw_secret[secret_len++] = (unsigned char)c;
		}
		if (secret_len != cfg.key_len) {
			fprintf(stderr, "Invalid key length (%d bytes)\n",
				secret_len);
			return -EINVAL;
		}
	}

	if (!cfg.nqn) {
		cfg.nqn = nvmf_hostnqn_from_file();
		if (!cfg.nqn) {
			fprintf(stderr, "Could not read host NQN\n");
			return -ENOENT;
		}
	}

	if (nvme_gen_dhchap_key(cfg.nqn, cfg.hmac, cfg.key_len,
				raw_secret, key) < 0)
		return -errno;

	crc = crc32(crc, key, cfg.key_len);
	key[cfg.key_len++] = crc & 0xff;
	key[cfg.key_len++] = (crc >> 8) & 0xff;
	key[cfg.key_len++] = (crc >> 16) & 0xff;
	key[cfg.key_len++] = (crc >> 24) & 0xff;

	memset(encoded_key, 0, sizeof(encoded_key));
	base64_encode(key, cfg.key_len, encoded_key);

	printf("DHHC-1:%02x:%s:\n", cfg.hmac, encoded_key);
	return 0;
}

static int check_dhchap_key(int argc, char **argv, struct command *command, struct plugin *plugin)
{
	const char *desc = "Check a DH-HMAC-CHAP host key for usability "\
		"for NVMe In-Band Authentication.";
	const char *key = "DH-HMAC-CHAP key (in hexadecimal characters) "\
		"to be validated.";

	unsigned char decoded_key[128];
	unsigned int decoded_len;
	u_int32_t crc = crc32(0L, NULL, 0);
	u_int32_t key_crc;
	int err = 0, hmac;
	struct config {
		char	*key;
	};

	struct config cfg = {
		.key	= NULL,
	};

	OPT_ARGS(opts) = {
		OPT_STR("key", 'k', &cfg.key, key),
		OPT_END()
	};

	err = argconfig_parse(argc, argv, desc, opts);
	if (err)
		return err;

	if (!cfg.key) {
		fprintf(stderr, "Key not specified\n");
		return -EINVAL;
	}

	if (sscanf(cfg.key, "DHHC-1:%02x:*s", &hmac) != 1) {
		fprintf(stderr, "Invalid key header '%s'\n", cfg.key);
		return -EINVAL;
	}
	switch (hmac) {
	case 0:
		break;
	case 1:
		if (strlen(cfg.key) != 59) {
			fprintf(stderr, "Invalid key length for SHA(256)\n");
			return -EINVAL;
		}
		break;
	case 2:
		if (strlen(cfg.key) != 83) {
			fprintf(stderr, "Invalid key length for SHA(384)\n");
			return -EINVAL;
		}
		break;
	case 3:
		if (strlen(cfg.key) != 103) {
			fprintf(stderr, "Invalid key length for SHA(512)\n");
			return -EINVAL;
		}
		break;
	default:
		fprintf(stderr, "Invalid HMAC identifier %d\n", hmac);
		return -EINVAL;
		break;
	}

	err = base64_decode(cfg.key + 10, strlen(cfg.key) - 11,
			    decoded_key);
	if (err < 0) {
		fprintf(stderr, "Base64 decoding failed, error %d\n",
			err);
		return err;
	}
	decoded_len = err;
	if (decoded_len < 32) {
		fprintf(stderr, "Base64 decoding failed (%s, size %u)\n",
			cfg.key + 10, decoded_len);
		return -EINVAL;
	}
	decoded_len -= 4;
	if (decoded_len != 32 && decoded_len != 48 && decoded_len != 64) {
		fprintf(stderr, "Invalid key length %d\n", decoded_len);
		return -EINVAL;
	}
	crc = crc32(crc, decoded_key, decoded_len);
	key_crc = ((u_int32_t)decoded_key[decoded_len]) |
		((u_int32_t)decoded_key[decoded_len + 1] << 8) |
		((u_int32_t)decoded_key[decoded_len + 2] << 16) |
		((u_int32_t)decoded_key[decoded_len + 3] << 24);
	if (key_crc != crc) {
		fprintf(stderr, "CRC mismatch (key %08x, crc %08x)\n",
			key_crc, crc);
		return -EINVAL;
	}
	printf("Key is valid (HMAC %d, length %d, CRC %08x)\n",
	       hmac, decoded_len, crc);
	return 0;
}

static int gen_tls_key(int argc, char **argv, struct command *command, struct plugin *plugin)
{
	const char *desc = "Generate a TLS key in NVMe PSK Interchange format.";
	const char *secret = "Optional secret (in hexadecimal characters) "\
		"to be used for the TLS key.";
	const char *hmac = "HMAC function to use for the retained key "\
		"(1 = SHA-256, 2 = SHA-384).";
	const char *hostnqn = "Host NQN for the retained key.";
	const char *subsysnqn = "Subsystem NQN for the retained key.";
	const char *keyring = "Keyring for the retained key.";
	const char *keytype = "Key type of the retained key.";
	const char *insert = "Insert only, do not print the retained key.";

	unsigned char *raw_secret;
	char encoded_key[128];
	int key_len = 32;
	unsigned long crc = crc32(0L, NULL, 0);
	int err;
	long tls_key;

	struct config {
		char		*keyring;
		char		*keytype;
		char		*hostnqn;
		char		*subsysnqn;
		char		*secret;
		unsigned int	hmac;
		bool		insert;
	};

	struct config cfg = {
		.keyring	= ".nvme",
		.keytype	= "psk",
		.hostnqn	= NULL,
		.subsysnqn	= NULL,
		.secret		= NULL,
		.hmac		= 1,
		.insert		= false,
	};

	OPT_ARGS(opts) = {
		OPT_STR("keyring",	'k', &cfg.keyring,	keyring),
		OPT_STR("keytype",	't', &cfg.keytype,	keytype),
		OPT_STR("hostnqn",	'n', &cfg.hostnqn,	hostnqn),
		OPT_STR("subsysnqn",	'c', &cfg.subsysnqn,	subsysnqn),
		OPT_STR("secret",	's', &cfg.secret,	secret),
		OPT_UINT("hmac",	'm', &cfg.hmac,		hmac),
		OPT_FLAG("insert",	'i', &cfg.insert,	insert),
		OPT_END()
	};

	err = argconfig_parse(argc, argv, desc, opts);
	if (err)
		return err;
	if (cfg.hmac < 1 || cfg.hmac > 3) {
		fprintf(stderr, "Invalid HMAC identifier %u\n", cfg.hmac);
		return -EINVAL;
	}
	if (cfg.insert && !cfg.subsysnqn) {
		fprintf(stderr, "No subsystem NQN specified\n");
		return -EINVAL;
	}
	if (cfg.hmac == 2)
		key_len = 48;

	raw_secret = malloc(key_len + 4);
	if (!raw_secret)
		return -ENOMEM;
	if (!cfg.secret) {
		if (getrandom_bytes(raw_secret, key_len) < 0)
			return -errno;
	} else {
		int secret_len = 0, i;
		unsigned int c;

		for (i = 0; i < strlen(cfg.secret); i+=2) {
			if (sscanf(&cfg.secret[i], "%02x", &c) != 1) {
				fprintf(stderr, "Invalid secret '%s'\n",
					cfg.secret);
				return -EINVAL;
			}
			if (i >= key_len) {
				fprintf(stderr,
					"Skipping excess secret bytes\n");
				break;
			}
			raw_secret[secret_len++] = (unsigned char)c;
		}
		if (secret_len != key_len) {
			fprintf(stderr, "Invalid key length (%d bytes)\n",
				secret_len);
			return -EINVAL;
		}
	}

	if (cfg.hostnqn && !cfg.subsysnqn) {
		fprintf(stderr,
			"Need to specify subsystem NQN to insert a TLS key\n");
		return -EINVAL;
	}
	if (cfg.subsysnqn) {
		if (!cfg.hostnqn) {
			cfg.hostnqn = nvmf_hostnqn_from_file();
			if (!cfg.hostnqn) {
				fprintf(stderr,
					"Failed to read host NQN\n");
				return -EINVAL;
			}
		}

		tls_key = nvme_insert_tls_key(cfg.keyring, cfg.keytype,
				      cfg.hostnqn, cfg.subsysnqn, cfg.hmac,
				      raw_secret, key_len);
		if (tls_key < 0) {
			fprintf(stderr,
				"Failed to insert key, error %d\n", errno);
			return -errno;
		}

		if (cfg.insert) {
			printf("Inserted TLS key %08x\n",
			       (unsigned int)tls_key);
			return 0;
		}
	}
	crc = crc32(crc, raw_secret, key_len);
	raw_secret[key_len++] = crc & 0xff;
	raw_secret[key_len++] = (crc >> 8) & 0xff;
	raw_secret[key_len++] = (crc >> 16) & 0xff;
	raw_secret[key_len++] = (crc >> 24) & 0xff;

	memset(encoded_key, 0, sizeof(encoded_key));
	base64_encode(raw_secret, key_len, encoded_key);

	printf("NVMeTLSkey-1:%02x:%s:\n", cfg.hmac, encoded_key);
	return 0;
}

static int check_tls_key(int argc, char **argv, struct command *command, struct plugin *plugin)
{
	const char *desc = "Check a TLS key for NVMe PSK Interchange format.\n";
	const char *keydata = "TLS key (in PSK Interchange format) "\
		"to be validated.";
	const char *hostnqn = "Host NQN for the retained key.";
	const char *subsysnqn = "Subsystem NQN for the retained key.";
	const char *keyring = "Keyring for the retained key.";
	const char *keytype = "Key type of the retained key.";

	unsigned char decoded_key[128];
	unsigned int decoded_len;
	u_int32_t crc = crc32(0L, NULL, 0);
	u_int32_t key_crc;
	int err = 0, hmac;
	long tls_key;
	struct config {
		char	*keyring;
		char	*keytype;
		char	*hostnqn;
		char	*subsysnqn;
		char	*keydata;
	};

	struct config cfg = {
		.keyring	= ".nvme",
		.keytype	= "psk",
		.hostnqn	= NULL,
		.subsysnqn	= NULL,
		.keydata	= NULL,
	};

	OPT_ARGS(opts) = {
		OPT_STR("keyring",	'k', &cfg.keyring,	keyring),
		OPT_STR("keytype",	't', &cfg.keytype,	keytype),
		OPT_STR("hostnqn",	'n', &cfg.hostnqn,	hostnqn),
		OPT_STR("subsysnqn",	'c', &cfg.subsysnqn,	subsysnqn),
		OPT_STR("keydata",	'd', &cfg.keydata,	keydata),
		OPT_END()
	};

	err = argconfig_parse(argc, argv, desc, opts);
	if (err)
		return err;

	if (!cfg.keydata) {
		fprintf(stderr, "No key data\n");
		return -EINVAL;
	}

	if (sscanf(cfg.keydata, "NVMeTLSkey-1:%02x:*s", &hmac) != 1) {
		fprintf(stderr, "Invalid key '%s'\n", cfg.keydata);
		return -EINVAL;
	}
	switch (hmac) {
	case 1:
		if (strlen(cfg.keydata) != 65) {
			fprintf(stderr, "Invalid key length %zu for SHA(256)\n",
				strlen(cfg.keydata));
			return -EINVAL;
		}
		break;
	case 2:
		if (strlen(cfg.keydata) != 89) {
			fprintf(stderr, "Invalid key length %zu for SHA(384)\n",
				strlen(cfg.keydata));
			return -EINVAL;
		}
		break;
	default:
		fprintf(stderr, "Invalid HMAC identifier %d\n", hmac);
		return -EINVAL;
		break;
	}

	err = base64_decode(cfg.keydata + 16, strlen(cfg.keydata) - 17,
			    decoded_key);
	if (err < 0) {
		fprintf(stderr, "Base64 decoding failed (%s, error %d)\n",
			cfg.keydata + 16, err);
		return err;
	}
	decoded_len = err;
	decoded_len -= 4;
	if (decoded_len != 32 && decoded_len != 48) {
		fprintf(stderr, "Invalid key length %d\n", decoded_len);
		return -EINVAL;
	}
	crc = crc32(crc, decoded_key, decoded_len);
	key_crc = ((u_int32_t)decoded_key[decoded_len]) |
		((u_int32_t)decoded_key[decoded_len + 1] << 8) |
		((u_int32_t)decoded_key[decoded_len + 2] << 16) |
		((u_int32_t)decoded_key[decoded_len + 3] << 24);
	if (key_crc != crc) {
		fprintf(stderr, "CRC mismatch (key %08x, crc %08x)\n",
			key_crc, crc);
		return -EINVAL;
	}
	if (cfg.subsysnqn) {
		if (!cfg.hostnqn) {
			cfg.hostnqn = nvmf_hostnqn_from_file();
			if (!cfg.hostnqn) {
				fprintf(stderr,
					"Failed to read host NQN\n");
				return -EINVAL;
			}
		}

		tls_key = nvme_insert_tls_key(cfg.keyring, cfg.keytype,
				      cfg.hostnqn, cfg.subsysnqn, hmac,
				      decoded_key, decoded_len);
		if (tls_key < 0) {
			fprintf(stderr,
				"Failed to insert key, error %d\n", errno);
			return -errno;
		}
	} else
		printf("Key is valid (HMAC %d, length %d, CRC %08x)\n",
		       hmac, decoded_len, crc);
	return 0;
}

static int show_topology_cmd(int argc, char **argv, struct command *command, struct plugin *plugin)
{
	const char *desc = "Show the topology\n";
	const char *ranking = "Ranking order: namespace|ctrl";
	enum nvme_print_flags flags;
	nvme_root_t r;
	enum nvme_cli_topo_ranking rank;
	int err;

	struct config {
		char	*output_format;
		int	verbose;
		char	*ranking;
	};

	struct config cfg = {
		.output_format	= "normal",
		.verbose	= 0,
		.ranking	= "namespace",
	};

	OPT_ARGS(opts) = {
		OPT_FMT("output-format", 'o', &cfg.output_format, output_format),
		OPT_INCR("verbose",      'v', &cfg.verbose,       verbose),
		OPT_FMT("ranking",       'r', &cfg.ranking,       ranking),
		OPT_END()
	};

	err = argconfig_parse(argc, argv, desc, opts);
	if (err)
		return err;

	err = flags = validate_output_format(cfg.output_format);
	if (flags < 0)
		return err;
	if (cfg.verbose)
		flags |= VERBOSE;

	if (!strcmp(cfg.ranking, "namespace"))
		rank = NVME_CLI_TOPO_NAMESPACE;
	else if (!strcmp(cfg.ranking, "ctrl"))
		rank = NVME_CLI_TOPO_CTRL;
	else {
		fprintf(stderr, "Invalid ranking argument: %s\n",
			cfg.ranking);
		return -EINVAL;
	}

	r = nvme_create_root(stderr, map_log_level(cfg.verbose, false));
	if (!r) {
		fprintf(stderr, "Failed to create topology root: %s\n",
			nvme_strerror(errno));
		return -errno;
	}

	err = nvme_scan_topology(r, NULL, NULL);
	if (err < 0) {
		fprintf(stderr, "Failed to scan topology: %s\n",
			 nvme_strerror(errno));
		nvme_free_tree(r);
		return err;
	}

	nvme_show_topology(r, flags, rank);
	nvme_free_tree(r);

	return err;
}

static int discover_cmd(int argc, char **argv, struct command *command, struct plugin *plugin)
{
	const char *desc = "Send Get Log Page request to Discovery Controller.";
	return nvmf_discover(desc, argc, argv, false, false);
}

static int connect_all_cmd(int argc, char **argv, struct command *command, struct plugin *plugin)
{
	const char *desc = "Discover NVMeoF subsystems and connect to them";
	return nvmf_discover(desc, argc, argv, true, false);
}

static int connect_cmd(int argc, char **argv, struct command *command, struct plugin *plugin)
{
	const char *desc = "Connect to NVMeoF subsystem";
	return nvmf_connect(desc, argc, argv);
}

static int disconnect_cmd(int argc, char **argv, struct command *command, struct plugin *plugin)
{
	const char *desc = "Disconnect from NVMeoF subsystem";
	return nvmf_disconnect(desc, argc, argv);
}

int disconnect_all_cmd(int argc, char **argv, struct command *command,
	struct plugin *plugin)
{
	const char *desc = "Disconnect from all connected NVMeoF subsystems";
	return nvmf_disconnect_all(desc, argc, argv);
}

static int config_cmd(int argc, char **argv, struct command *command, struct plugin *plugin)
{
	const char *desc = "Configuration of NVMeoF subsystems";
	return nvmf_config(desc, argc, argv);
}

static int dim_cmd(int argc, char **argv, struct command *command, struct plugin *plugin)
{
	const char *desc = "Send Discovery Information Management command to a Discovery Controller (DC)";
	return nvmf_dim(desc, argc, argv);
}

static int connect_nbft_compat_cmd(int argc, char **argv, struct command *command, struct plugin *plugin)
{
	const char *desc = "Connect subsystems listed in ACPI NBFT tables";

	return nvmf_discover(desc, argc, argv, true, true);
}

static int show_nbft_compat_cmd(int argc, char **argv, struct command *command, struct plugin *plugin)
{
	char **argv_plugin;
	int i, err;

	argv_plugin = calloc(sizeof(char *), argc + 1);
	if (!argv_plugin)
		return -ENOMEM;

	argv_plugin[0] = "nbft";
	argv_plugin[1] = "show";

	for (i = 1; i < argc; i++)
		argv_plugin[1 + i] = argv[i];

	err = handle_plugin(argc + 1, argv_plugin, plugin);

	free(argv_plugin);

	return err;
}

void register_extension(struct plugin *plugin)
{
	plugin->parent = &nvme;
	nvme.extensions->tail->next = plugin;
	nvme.extensions->tail = plugin;
}

int main(int argc, char **argv)
{
	int err;

	nvme.extensions->parent = &nvme;
	if (argc < 2) {
		general_help(&builtin);
		return 0;
	}
	setlocale(LC_ALL, "");

	err = handle_plugin(argc - 1, &argv[1], nvme.extensions);
	if (err == -ENOTTY)
		general_help(&builtin);

	return err ? 1 : 0;
}
 070701015D6913000041ED000003E80000006400000001642C0FB200000000000000000000004A00000000000000000000001700000000nvme-cli/.git/branches    070701015D6914000041ED000003E80000006400000001642C0FB200000000000000000000004A00000000000000000000001400000000nvme-cli/.git/hooks   070701015D6922000041ED000003E80000006400000001642C0FB200000000000000000000004A00000000000000000000001300000000nvme-cli/.git/info    070701015D6925000041ED000003E80000006400000001642C0FB400000000000000000000004A00000000000000000000001300000000nvme-cli/.git/refs    070701015D692F000041ED000003E80000006400000001646F204000000000000000000000004A00000000000000000000001600000000nvme-cli/.git/objects 070701015D6942000041ED000003E80000006400000001642C0FB400000000000000000000004A00000000000000000000001300000000nvme-cli/.git/logs    070701015D6924000081A4000003E80000006400000001642C0FB200000049000000000000004A00000000000000000000001A00000000nvme-cli/.git/description Unnamed repository; edit this file 'description' to name the repository.
   070701015D693E000081A4000003E80000006400000001642C0FB400000F34000000000000004A00000000000000000000001A00000000nvme-cli/.git/packed-refs # pack-refs with: peeled fully-peeled sorted 
5215cf75e5f478fcfdab09086cc0d619fc5d5f99 refs/remotes/origin/1.11-stable
07d9e6a79ce12070286c30f695328f49f7f53cf6 refs/remotes/origin/SLE12-SP5
86f82c58cb9792703fe9fd402537aff39b536204 refs/remotes/origin/SLE15-SP4
f955b99e51003d0cf802d400ec09fd3c5d37fd78 refs/remotes/origin/SLE15-SP5
df9600fd220f9cef6fc02b85744bcae82adedf19 refs/remotes/origin/SLE15-SP5-next
59c3abad4e26487fbae72b95316cfd773d6f57ed refs/remotes/origin/integration-libnvme
70b9835a9dace56557acc5ed10fd4c77ac063238 refs/remotes/origin/libnvme-int-3.4.2021
68fcf887353c3b93c924a3baffe8cc55e425b428 refs/remotes/origin/master
2ac02061479a49cc9d77d23443d39c61cf11d542 refs/remotes/origin/nvme-cli-monolithic
b51ec72399b1e729394b5f44cc4bd4a095451713 refs/tags/v0.1
2827dec42453266f3e723dacbedf930ee6bd5efc refs/tags/v0.2
^992d220362e0e64f2c38a24cc6357b2121baf484
bdbb4da0979fbdc079cf98410cdb31cf799e83b3 refs/tags/v0.3
2ea5b01ec664e5a19a7b434ffe5370daae56dc74 refs/tags/v0.4
76f72197156c541dab2192df391f81550cc6475e refs/tags/v0.5
d6748bfba3a98ffde5790ea632345d2f3caec95e refs/tags/v0.6
8d6732d9f042df6b3e91ed5c942987649a282f0a refs/tags/v0.7
ea0658725898e4831edd70823388e2c8d143defd refs/tags/v0.8
f2273c28dd277995226b12abc73688778ce001aa refs/tags/v0.9
f6a8a0744553ab1fa7796498f8eeb6f5bb8e5b09 refs/tags/v1.0
d15673ce8d2f909dad160c4501aba0eab94b938e refs/tags/v1.1
d158aaefcfb063eca95f1bd0c522abf3a17a085d refs/tags/v1.10
1d84d6ae0c7d7ceff5a73fe174dde8b0005f6108 refs/tags/v1.10.1
f51db5855593b84a79cd9f48322e702fe0be8bb7 refs/tags/v1.11
e2126df6079466e80d76ce5fe86e4bed6a3b7028 refs/tags/v1.11.1
5215cf75e5f478fcfdab09086cc0d619fc5d5f99 refs/tags/v1.11.2
949d0aea730136d04af1fb9e0efd4427c20dee6d refs/tags/v1.12
f0e9569df9289d6ee55ba2c23615cc7c73a9b088 refs/tags/v1.13
627602c91e51052e349aac6b2c56f0cacae82648 refs/tags/v1.14
00e93879605449cabd525a85b1f8cd467e224aca refs/tags/v1.15
deee9cae1ac94760deebd71f8e5449061338666c refs/tags/v1.16
891899661cae31be232a8046bded2c1e928be8d7 refs/tags/v1.2
272240a5a4164e2e2100a84f120e99ffefd1c271 refs/tags/v1.3
10e0bf6130ddd3c0b937093dabfc93b4fb5614d7 refs/tags/v1.4
121dc80e99ff6e90fb79d57f6ca81527b73364fa refs/tags/v1.5
642d426faf8a67ed01e90f7c35c0d967f8cc52a3 refs/tags/v1.6
4704680580b24cd7ea399e9ac679839d0414c1c9 refs/tags/v1.7
2853f90c715ea8f47e9243b6cbd1cd5941049e4b refs/tags/v1.8
c40b5f01e1c89f3b0ed20e24e9ba1564bb13b894 refs/tags/v1.8.1
977e7d4cf59c3c7f89e9c093c91f991b07292e45 refs/tags/v1.9
b4e1b642fc500adef3fca4d49f7ccdcc4882569d refs/tags/v2.0
^5a36baba322e7979175ed9dfeede0a96e29efc37
7a97bca7b826941225baa96abb9c8551b8cc0b74 refs/tags/v2.0-rc0
6d6a08b757fa1b2ad65af6a5bf8526a268065cb4 refs/tags/v2.0-rc1
e290046eff3cfc6035185b86e9c013c66e3a2b73 refs/tags/v2.0-rc2
f02a78a4599b4fbee9ca82fb887f2736c5a67bb8 refs/tags/v2.0-rc3
59263bbcd3e4f5eaffe7d200c4cad2a361008e48 refs/tags/v2.0-rc4
221734dca8aabc8c2e30820368d1fb5893c80c00 refs/tags/v2.0-rc5
6d3ca33c721d4481bababdd8280a90b1ea47a1a5 refs/tags/v2.0-rc6
555e9d750464dd3c09701eb35e40ad3f5f8eaf97 refs/tags/v2.0-rc7
27eb620d76c2de4520d15636e811bd61be5173ce refs/tags/v2.0-rc8
d78d46a583c5bd8790f68851d9d69513c297f065 refs/tags/v2.1
^19159120c291e5ddb8e31b909e3a1deedd3495e2
b1975e0b0a9d9666695d4ba731a34c3386b03332 refs/tags/v2.1-rc0
^f2cc94275081454acc0ae8fa21a093a8e3f00769
9409512c3c05d089e7ad690688a781b7509cb4df refs/tags/v2.1.1
^972f9f76bca4238f7a19e89de313c97fbe4b0163
bf5a5f47fa3c4ae4d07d36df5b3f2dfc8535701a refs/tags/v2.1.2
^93dd92fefd36581fc795909ed4a1b07e23e92acc
3f5a546e31e85b20f57f046674ff7c8f63889fe2 refs/tags/v2.2
^867cd4a6c0f8957048e7997a37432df0a5004626
bc474694d27c50f639248f94a279661f322a65b9 refs/tags/v2.2.1
^aff7a09da61a555cea25c48b24224b6e45b905df
e80f3e8b27554b8aeffeef0c3500551ca5582733 refs/tags/v2.3
^137fb15a285c060789581fc074ab3b1f6b250188
2a83e0ab786e693e8df75ead028ddd5dc8e12903 refs/tags/v2.4
^0b2961e62f4138f991c3af6b5deea60d9900174e
070701015D78EC000081A4000003E80000006400000001646F203E0000049C000000000000004A00000000000000000000001900000000nvme-cli/.git/FETCH_HEAD  5215cf75e5f478fcfdab09086cc0d619fc5d5f99	not-for-merge	branch '1.11-stable' of https://github.com/openSUSE/nvme-cli
07d9e6a79ce12070286c30f695328f49f7f53cf6	not-for-merge	branch 'SLE12-SP5' of https://github.com/openSUSE/nvme-cli
86f82c58cb9792703fe9fd402537aff39b536204	not-for-merge	branch 'SLE15-SP4' of https://github.com/openSUSE/nvme-cli
c83733d2e3574b1341b1dfc165da195e612a37ba	not-for-merge	branch 'SLE15-SP4-next' of https://github.com/openSUSE/nvme-cli
f955b99e51003d0cf802d400ec09fd3c5d37fd78	not-for-merge	branch 'SLE15-SP5' of https://github.com/openSUSE/nvme-cli
f4cfca93998a2e3bd8b3ba6f01b052c6a95fbc9d	not-for-merge	branch 'SLE15-SP5-next' of https://github.com/openSUSE/nvme-cli
59c3abad4e26487fbae72b95316cfd773d6f57ed	not-for-merge	branch 'integration-libnvme' of https://github.com/openSUSE/nvme-cli
70b9835a9dace56557acc5ed10fd4c77ac063238	not-for-merge	branch 'libnvme-int-3.4.2021' of https://github.com/openSUSE/nvme-cli
68fcf887353c3b93c924a3baffe8cc55e425b428	not-for-merge	branch 'master' of https://github.com/openSUSE/nvme-cli
2ac02061479a49cc9d77d23443d39c61cf11d542	not-for-merge	branch 'nvme-cli-monolithic' of https://github.com/openSUSE/nvme-cli
070701018A403E000081A4000003E80000006400000001646E2B2D00000029000000000000004A00000000000000000000001800000000nvme-cli/.git/ORIG_HEAD   e7367554bdc667a4d2f27ca8f3df2bcaa378beb9
   070701018A89D7000081A4000003E80000006400000001646F203D0000015B000000000000004A00000000000000000000001500000000nvme-cli/.git/config  [core]
	repositoryformatversion = 1
	filemode = true
	bare = false
	logallrefupdates = true
[remote "origin"]
	url = https://github.com/openSUSE/nvme-cli.git
	fetch = +refs/heads/*:refs/remotes/origin/*
	promisor = true
	partialclonefilter = tree:0
[branch "master"]
	remote = origin
	merge = refs/heads/master
[extensions]
	partialClone = origin
 070701018A89FC000081A4000003E80000006400000001646F20400001487D000000000000004A00000000000000000000001400000000nvme-cli/.git/index   DIRC     1d,¶%7ad,¶%7a   >]lº  ¤  è   d  §g²Æ¦ö7’ŒÀõ3rŽ6 .github/AppImageBuilder.yml       d,µìYd,µìY   >]i\  ¤  è   d  Gùë^Ü2Ä¼p¸^hb@mÎ&&s .github/azure-pipelines.yml       d,¶%7ad,¶%7a   >]l»  ¤  è   d   P„£çá î-øÒ¨dXÙ®ê?¤g .github/cross/clang.txt   d,¶%7ad,¶%7a   >]l¼  ¤  è   d  ÄAÈ2‰(+çã|û¾§©<(Pk .github/cross/ubuntu-armhf.txt    d,¶%7ad,¶%7a   >]l½  ¤  è   d  Ñkªï¼&ßçšˆgãèŒ´{,!.tÊ  .github/cross/ubuntu-ppc64le.txt  d,¶%7ad,¶%7a   >]l¾  ¤  è   d  ¨Q£Q¾)t(Šac<vÿ´‡¼`l .github/cross/ubuntu-s390x.txt    d,µ)nd,µ)n   >]i`  ¤  è   d   z#ÄË;P‘ŸéÐîvÁžÏÜz„cj .github/dependabot.yml    d,¶%7ad,¶%7a   >]l¿  ¤  è   d  R€°IbPÃÈâjã¨Ìó8õ¹2 .github/workflows/appimage.yml    d,¶%7ad,¶%7a   >]lÀ  ¤  è   d  )úå
U8Ç§ŽäŠþ@R…½Ñã|H .github/workflows/build.yml       d,¶%7ad,¶%7a   >]lÁ  ¤  è   d  `È‹éé¨¦=÷šV”óRÞÃF€ñßÌ .github/workflows/release.yml     d,µ)nd,µ)n   >]ie  ¤  è   d   ­ÚHÉãŽ“¦Ñ§Øc,Þ
J¥B;è 
.gitignore        d,µ)nd,µ)n   >]if  ¤  è   d    æâ›²ÑÖCK‹)®wZØÂäŒS‘ .gitmodules       d,µ)nd,µ)n   >]ig  ¤  è   d  èÍèRsN¥ð|Òvsjg" CONTRIBUTING.md   d,µ)nd,µ)n   >]ii  ¤  è   d  ßø¦é1v8*œÚ 6:Áz'Æ½ Documentation/asciidoc.conf       d,µ)nd,µ)n   >]ij  ¤  è   d  0‰HáA&ÏØUðJƒ*U@uÚ 'Documentation/asciidoctor-extensions.rb   d,µ)nd,µ)n   >]ik  ¤  è   d  m÷g`92o¼ÛøîÏ‚Õ!ï½T“—ô Documentation/cmd-plugins.txt     d,µ)nd,µ)n   >]il  ¤  è   d  ¦ÿi˜Jw…Ò8tåãÉ~ÅîO• Documentation/cmds-main.txt       d,µ)nd,µ)n   >]im  í  è   d  õí‹Oóå‡N¬/þ4†«éÙf‹'Î Documentation/install-webdoc.sh   d,µ)nd,µ)n   >]in  ¤  è   d  °<At8KpK_rp£<›¢‡ºÓ Documentation/manpage-base.xsl    d,µ)nd,µ)n   >]io  ¤  è   d  Ý·0~3ø{LÆ<ã}aíÝT  Documentation/manpage-normal.xsl  d,µ)nd,µ)n   >]ip  ¤  è   d  ¨¥&¹’ÖÔ¦lb"–Ä rÅ·	ýæ Documentation/meson.build d,¶%7ad,¶%7a   >]lÂ  ¤  è   d  E°øÆ¤Ò’=3SÑœJnÛXK× #Documentation/nvme-admin-passthru.1       d,¶%7ad,¶%7a   >]lÃ  ¤  è   d  Z.š7fa\[¨¬Ìõ…ë²úd£ &Documentation/nvme-admin-passthru.html    d,µf$ƒd,µf$ƒ   >]is  ¤  è   d  ­ÎE/¢±W3{7XF¶§ù*-[
 %Documentation/nvme-admin-passthru.txt     d,¶%7ad,¶%7a   >]lÄ  ¤  è   d  	•%yÃÛbXù¯83±hVµ.èbr Documentation/nvme-ana-log.1      d,¶%P@wd,¶%P@w   >]lÅ  ¤  è   d  I2Á®‚¿ákêÖ‘Ò©3t8J@¡ª Documentation/nvme-ana-log.html   d,µf$ƒd,µf$ƒ   >]iv  ¤  è   d  a¶ÜœXaªñ¥ „Ò*è€¤nü§Zù Documentation/nvme-ana-log.txt    d,¶%P@wd,¶%P@w   >]lÆ  ¤  è   d  xF‘°¯q%ƒÑ,NMnfžó1' Documentation/nvme-attach-ns.1    d,¶%P@wd,¶%P@w   >]lÇ  ¤  è   d  Gÿ}C‘OØÒ¼z£ÑŸ8J%KÂ !Documentation/nvme-attach-ns.html d,µf$ƒd,µf$ƒ   >]iy  ¤  è   d  d«Ž
Ÿ~ÀòÜ¼¾—Õ·£{Ô  Documentation/nvme-attach-ns.txt  d,¶%P@wd,¶%P@w   >]lÈ  ¤  è   d  
T¿\‚„=FÞ¸Ú·˜Ü˜x;az
¡ "Documentation/nvme-boot-part-log.1        d,¶%P@wd,¶%P@w   >]lÉ  ¤  è   d  J@þ›»Ø$²ŸÂþž‹F¥ˆ–{™æ %Documentation/nvme-boot-part-log.html     d,µ£-˜d,µ£-˜   >]i|  ¤  è   d  Ú-Ó*g±QfùBJã«*-‚èi $Documentation/nvme-boot-part-log.txt      d,¶%P@wd,¶%P@w   >]lÊ  ¤  è   d  !åóXÆq³d
INºÊ½´9.ïŸâ "Documentation/nvme-capacity-mgmt.1        d,¶%P@wd,¶%P@w   >]lË  ¤  è   d  KeZ*šÈ¦·I7üõðF
Xå—/ %Documentation/nvme-capacity-mgmt.html     d,µ£-˜d,µ£-˜   >]i  ¤  è   d  é–'Lðò½”¼ NS¦®?Íéže $Documentation/nvme-capacity-mgmt.txt      d,¶%P@wd,¶%P@w   >]lÌ  ¤  è   d  ä@Ô€šñ~ž‘ÿÐîÂ*m¨¸lÔ (Documentation/nvme-changed-ns-list-log.1  d,¶%P@wd,¶%P@w   >]lÍ  ¤  è   d  KIðÛ¸x¯ÖWurÝí(ƒ”ù +Documentation/nvme-changed-ns-list-log.html       d,µ£-˜d,µ£-˜   >]i‚  ¤  è   d  ãLýS)S!òÐË!”¦rÒ¼Ó *Documentation/nvme-changed-ns-list-log.txt        d,µ£-˜d,µ£-˜   >]iƒ  ¤  è   d  ·ßòM{›Ê]ëG¦9)¸Sb* %Documentation/nvme-check-dhchap-key.1     d,µ£-˜d,µ£-˜   >]i„  ¤  è   d  ED’~×æAHA¢UË&>d h™ (Documentation/nvme-check-dhchap-key.html  d,µ£-˜d,µ£-˜   >]i…  ¤  è   d  ñœús~M[åŽÑÙã~&%jÓv 'Documentation/nvme-check-dhchap-key.txt   d,¶%P@wd,¶%P@w   >]lÎ  ¤  è   d  „¦vðClŽ¯–Iïô‹þb¨ù`8t¦ $Documentation/nvme-check-tls-key.txt      d,¶%P@wd,¶%P@w   >]lÏ  ¤  è   d  0]Çn-:Ç$éõ´<JtªÕÐ %Documentation/nvme-cmdset-ind-id-ns.1     d,¶%P@wd,¶%P@w   >]lÐ  ¤  è   d  PlË›õ§HÛƒ'EÈöÔ”¼ƒ!– (Documentation/nvme-cmdset-ind-id-ns.html  d,µ£-˜d,µ£-˜   >]i‰  ¤  è   d  	úUÈ3[³
ÞN÷kmŽÌÂ½Ó 'Documentation/nvme-cmdset-ind-id-ns.txt   d,¶%P@wd,¶%P@w   >]lÑ  ¤  è   d  ÎáQóãOxù¦×–†áµUD Documentation/nvme-compare.1      d,¶%P@wd,¶%P@w   >]lÒ  ¤  è   d  cÍdjY]™,1E†6ÁÑø™ûÌj Documentation/nvme-compare.html   d,¶%P@wd,¶%P@w   >]lÓ  ¤  è   d  ,±MnÐÜ
¼Ú¾§óÖ: Documentation/nvme-compare.txt    d,µ£-˜d,µ£-˜   >]i  ¤  è   d  W[v’Xëg"¡Aù¸¸D£Á_ðv„ Documentation/nvme-config.txt     d,¶%P@wd,¶%P@w   >]lÔ  ¤  è   d  &/Wò|2OŽñhWÆÃz@¼t
  Documentation/nvme-connect-all.1  d,¶%IŒd,¶%IŒ   >]lÕ  ¤  è   d  q±±“Ÿí$"§èY"¸Ý¸äUu”¡ #Documentation/nvme-connect-all.html       dBs7	†á5dBs7	†á5   >uZå  ¤  è   d  ƒË·Êl¿½ÒP#¿/Õ”KèŽšRT "Documentation/nvme-connect-all.txt        d,¶%IŒd,¶%IŒ   >]l×  ¤  è   d  #92KÄZoo«”_ŽÌ‹ëìžæû‡ Documentation/nvme-connect.1      d,¶%IŒd,¶%IŒ   >]lØ  ¤  è   d  o6ä‰áÚÝ4µíMd?½åÒég Documentation/nvme-connect.html   d,¶%IŒd,¶%IŒ   >]lÙ  ¤  è   d  9ˆVÇÞ×«æ?›A9iE¼E Documentation/nvme-connect.txt    d,¶%IŒd,¶%IŒ   >]lÚ  ¤  è   d  ¡–Ñ•õhüÍ•}×–ø¡@pa1ø Documentation/nvme-copy.1 d,¶%IŒd,¶%IŒ   >]lÛ  ¤  è   d  UðvC‚q8¡û>[:n=&7Œm Documentation/nvme-copy.html      d,µà6­d,µà6­   >]i–  ¤  è   d  
U­•-eXŽ™.½¶6¾Ú];×@ Documentation/nvme-copy.txt       d,¶%IŒd,¶%IŒ   >]lÜ  ¤  è   d  "hÆV½.åS´\£M%NSDpÖx Documentation/nvme-create-ns.1    d,¶%IŒd,¶%IŒ   >]lÝ  ¤  è   d  TëÀý¸õ ¢ °¦3€æƒ™ºk~ !Documentation/nvme-create-ns.html d,µà6­d,µà6­   >]i™  ¤  è   d  
÷ß¥ee…ž
æû˜b(T¼ã¨  Documentation/nvme-create-ns.txt  d,¶%IŒd,¶%IŒ   >]lÞ  ¤  è   d  ¾  Üð_HÁjÈD€B´òw±1H Documentation/nvme-delete-ns.1    d,¶%IŒd,¶%IŒ   >]lß  ¤  è   d  FØÀg–s ÷„¢tìðõ
€ði !Documentation/nvme-delete-ns.html d,µà6­d,µà6­   >]iœ  ¤  è   d  ×b0NtKÈQ§5YÓÙ[ô’Ö_³  Documentation/nvme-delete-ns.txt  d,¶%IŒd,¶%IŒ   >]là  ¤  è   d  ^ýõË±â¿»ä[cñÏ¥¡Iû8 Documentation/nvme-dera-stat.1    d,¶%IŒd,¶%IŒ   >]lá  ¤  è   d  G/ tA~·{ôVÕ2Ì“~CgéÃ4 !Documentation/nvme-dera-stat.html d,µ?Ãd,µ?Ã   >]iŸ  ¤  è   d  3Q.XO"ÃÒ¥Y]<Áür	Êï‚n  Documentation/nvme-dera-stat.txt  d,¶%IŒd,¶%IŒ   >]lâ  ¤  è   d  ØIntaß-z6Ñe­.m˜"…>xS Documentation/nvme-detach-ns.1    d,¶%IŒd,¶%IŒ   >]lã  ¤  è   d  G1»9é=(“F>…¿pi”Ÿ
·!ŒO !Documentation/nvme-detach-ns.html d,µ?Ãd,µ?Ã   >]i¢  ¤  è   d  Ùí#Á\›ÇÙUE=O]…e€ÁTJ  Documentation/nvme-detach-ns.txt  d,¶%IŒd,¶%IŒ   >]lä  ¤  è   d  <<“&U·9^(õl`æTv”àS %Documentation/nvme-device-self-test.1     d,¶%IŒd,¶%IŒ   >]lå  ¤  è   d  L9±õ8'»¾
@Á˜ö2%€Ì>SšÙ (Documentation/nvme-device-self-test.html  d,µ?Ãd,µ?Ã   >]i¥  ¤  è   d  ‡Ð˜'wY9D 7C9w5¦ý?B 'Documentation/nvme-device-self-test.txt   d,¶%IŒd,¶%IŒ   >]læ  ¤  è   d  Ëá{?W9[z&L¦oÙØï¡/5îÚ² Documentation/nvme-dim.1  d,¶%IŒd,¶%IŒ   >]lç  ¤  è   d  OF†vg2X©^²…»õ_Imäßí—P Documentation/nvme-dim.html       d,µ?Ãd,µ?Ã   >]i¨  ¤  è   d  ¥Rß%mˆƒ/X…PþtêbTÁ/!a Documentation/nvme-dim.txt        d,¶%IŒd,¶%IŒ   >]lè  ¤  è   d  5j‘Ÿˆ"/ß.ÑvÂ_FZï  Documentation/nvme-dir-receive.1  d,¶%IŒd,¶%IŒ   >]lé  ¤  è   d  Wûn:F%¬LÊ‰j·Øß1ã7Gè #Documentation/nvme-dir-receive.html       d,µ?Ãd,µ?Ã   >]i«  ¤  è   d  ´À¹7}¤õ‡£i@Èú¹OZåM "Documentation/nvme-dir-receive.txt        d,¶%IŒd,¶%IŒ   >]lê  ¤  è   d  ±Å¼áB{|æ¢´ï%ÙØ.x Documentation/nvme-dir-send.1     d,¶%IŒd,¶%IŒ   >]lë  ¤  è   d  XÛ Ï^AS4Nc‹?$á*ÿwdK  Documentation/nvme-dir-send.html  d,µ?Ãd,µ?Ã   >]i®  ¤  è   d  \ë]­ Ù†l-(îÑþ”˜k¨¸- Documentation/nvme-dir-send.txt   d,¶%IŒd,¶%IŒ   >]lì  ¤  è   d  L[ªÅ•÷a‰ÈsOÝÏðí&C»ÀÂ #Documentation/nvme-disconnect-all.1       d,¶%IŒd,¶%IŒ   >]lí  ¤  è   d  Eí>•)\9Í…Ýò2dkƒé8âr &Documentation/nvme-disconnect-all.html    d,µZHØd,µZHØ   >]i±  ¤  è   d   kçäÞ§,|5á²ðöçUhP>¦ %Documentation/nvme-disconnect-all.txt     d,¶%ÊR¡d,¶%ÊR¡   >]lî  ¤  è   d  
˜•!†Z¹1ú›èmL£³ËÅ Documentation/nvme-disconnect.1   d,¶%ÊR¡d,¶%ÊR¡   >]lï  ¤  è   d  J7ðÎn¸ª0ø_ãÒ–ŽSÖÿ™ "Documentation/nvme-disconnect.html        d,µZHØd,µZHØ   >]i´  ¤  è   d  ¶ºÛ†úEcÉa„ÙÈ+kB¤Ø:z !Documentation/nvme-disconnect.txt d,¶%ÊR¡d,¶%ÊR¡   >]lð  ¤  è   d  +úà­Î)kL‡Uî@ã€ÀN‰FÁ+í: Documentation/nvme-discover.1     d,¶%ÊR¡d,¶%ÊR¡   >]lñ  ¤  è   d  y_<”ìqñs:O@Ì°!­äb¿d!_  Documentation/nvme-discover.html  dBs7	†á5dBs7	†á5   >uZæ  ¤  è   d  #²°@ÆˆÊºª¼]Ê-sÛÑ—,
 Documentation/nvme-discover.txt   d,¶%ÊR¡d,¶%ÊR¡   >]ló  ¤  è   d  Ñš$:CV­ÕŠDm¥­Qß(u&u| Documentation/nvme-dsm.1  d,¶%ÊR¡d,¶%ÊR¡   >]lô  ¤  è   d  P§ã—Ô§/Ñdµ¯ØÜ%4ÂœŠ¹£ Documentation/nvme-dsm.html       d,µZHØd,µZHØ   >]iº  ¤  è   d  ôèáLÉc,VÅæpJ bx¨³HÅ Documentation/nvme-dsm.txt        d,¶%ÊR¡d,¶%ÊR¡   >]lõ  ¤  è   d  ‘xQ¯Î%‹±wŸ!”§ö¥âÍ  Documentation/nvme-effects-log.1  d,¶%ÊR¡d,¶%ÊR¡   >]lö  ¤  è   d  KM™2GJ”n;Bß]âaþ°…UfS  #Documentation/nvme-effects-log.html       d,µZHØd,µZHØ   >]i½  ¤  è   d  ½÷Ð	-Ôõ±¦3Ç‰8ÄYÄçŒ "Documentation/nvme-effects-log.txt        d,¶%ÊR¡d,¶%ÊR¡   >]l÷  ¤  è   d  –”ÖuÍ’3é…¼)¦'¢c1á­ ,Documentation/nvme-endurance-event-agg-log.1      d,¶%ÊR¡d,¶%ÊR¡   >]lø  ¤  è   d  M›G‘Y5ábl|ëT¡é> /Documentation/nvme-endurance-event-agg-log.html   d,µZHØd,µZHØ   >]iÀ  ¤  è   d  ¬ip=Räøäïþ‰Â=ˆSÏv .Documentation/nvme-endurance-event-agg-log.txt    d,¶%ÊR¡d,¶%ÊR¡   >]lù  ¤  è   d  ‡N³SGío‚y@ËÙÆÝ:Ê) "Documentation/nvme-endurance-log.1        d,¶%ÊR¡d,¶%ÊR¡   >]lú  ¤  è   d  K?"=4Ð+éiÎ÷±ör*™lm %Documentation/nvme-endurance-log.html     d,µZHØd,µZHØ   >]iÃ  ¤  è   d  Â^µzÐyaoŽUcÏ4_Ïµç $Documentation/nvme-endurance-log.txt      d,¶%ÊR¡d,¶%ÊR¡   >]lû  ¤  è   d  eûŠ
0‡¹–Rç».7ÞÄµÁmÞ Documentation/nvme-error-log.1    d,¶%ÊR¡d,¶%ÊR¡   >]lü  ¤  è   d  LvÖ‘õ‚³T£ÛRkñ›†NÖCF !Documentation/nvme-error-log.html d,µ—Qìd,µ—Qì   >]iÆ  ¤  è   d  pîºÊ}:´NØ†÷¯¦ÙËöù  Documentation/nvme-error-log.txt  d,¶%ÊR¡d,¶%ÊR¡   >]lý  ¤  è   d  å¨ÍÝ¢`÷»>x ¹?qDSŽˆU½š  Documentation/nvme-fdp-configs.1  d,¶%ÊR¡d,¶%ÊR¡   >]lþ  ¤  è   d  H`Ýêc7aÿå;3ð6ˆì]Q‹­ #Documentation/nvme-fdp-configs.html       d,µ—Qìd,µ—Qì   >]iÉ  ¤  è   d  ŽÄ1³½ƒKäÈ{ê¤ná<&‹;.^ "Documentation/nvme-fdp-configs.txt        d,¶%ÊR¡d,¶%ÊR¡   >]lÿ  ¤  è   d  ¹o#ÌOù¢Í³üãR]•î„o05 Documentation/nvme-fdp-events.1   d,¶%ÊR¡d,¶%ÊR¡   >]m   ¤  è   d  H4£³Gjh~âº¬\´€=Þ•@”ßÕ "Documentation/nvme-fdp-events.html        d,µ—Qìd,µ—Qì   >]iÌ  ¤  è   d  b`j6Þ’¡Yü=~\ì§qÎºpd !Documentation/nvme-fdp-events.txt d,¶%ÊR¡d,¶%ÊR¡   >]m  ¤  è   d  …½ ªg<x(¢ï6ÕZ{èÄÆ6 #Documentation/nvme-fdp-set-events.1       d,¶%ÊR¡d,¶%ÊR¡   >]m  ¤  è   d  GÆ––«eîqPW­œÏh‘ûf[p— &Documentation/nvme-fdp-set-events.html    d,µ—Qìd,µ—Qì   >]iÏ  ¤  è   d  >´X¾
J§)ùî´zÔwêšÓ2 %Documentation/nvme-fdp-set-events.txt     d,¶%ÊR¡d,¶%ÊR¡   >]m  ¤  è   d  =„¡Õ¡KvVZÓ9C ";Üôš Documentation/nvme-fdp-stats.1    d,¶%ÊR¡d,¶%ÊR¡   >]m  ¤  è   d  GsÝ“(CÈO9ÎÕP­i¹lƒ[1 !Documentation/nvme-fdp-stats.html d,µ—Qìd,µ—Qì   >]iÒ  ¤  è   d  –ZcµLí°^ã@¥¢Qqsž  Documentation/nvme-fdp-stats.txt  d,¶%ÊR¡d,¶%ÊR¡   >]m  ¤  è   d  iePz3YÎOVËì×_š¥Ü Documentation/nvme-fdp-status.1   d,¶&[µd,¶&[µ   >]m  ¤  è   d  G:¦Œ*}4Ó¸œä`¸8d/Ö"Ö” "Documentation/nvme-fdp-status.html        d,µ—Qìd,µ—Qì   >]iÕ  ¤  è   d  Õ&<´É^;×Ã42p˜”i TRø !Documentation/nvme-fdp-status.txt d,¶&[µd,¶&[µ   >]m  ¤  è   d  6Wž“#õ¤6 “±:cBHe‡l Documentation/nvme-fdp-update.1   d,¶&[µd,¶&[µ   >]m  ¤  è   d  F–rx\V&ŸbMq´´Äˆ¶ýKt "Documentation/nvme-fdp-update.html        d,µ—Qìd,µ—Qì   >]iØ  ¤  è   d  =KpÂGá„]mwîÐŒ¼×(ßd !Documentation/nvme-fdp-update.txt d,¶&[µd,¶&[µ   >]m	  ¤  è   d  S}Š_EGHÄ…hÿû˜lÿ±= Documentation/nvme-fdp-usage.1    d,¶&[µd,¶&[µ   >]m
  ¤  è   d  GŠrÅ?9\ƒ¹¹ñ‹¨EGèÄ8O !Documentation/nvme-fdp-usage.html d,µÔ[d,µÔ[   >]iÛ  ¤  è   d  $­º«Râðn ‹îÝI  Documentation/nvme-fdp-usage.txt  d,¶&[µd,¶&[µ   >]m  ¤  è   d  	?YlUðm¦ÿYTŸÜÝ‡I7
åõ ,Documentation/nvme-fid-support-effects-log.1      d,¶&[µd,¶&[µ   >]m  ¤  è   d  HÛ‰lÏ–\¢‘ÉÈiêR'3\/Ùæ /Documentation/nvme-fid-support-effects-log.html   d,µÔ[d,µÔ[   >]iÞ  ¤  è   d  Q]±ŠÛX*wÔNÊcŸì_E\ÿp .Documentation/nvme-fid-support-effects-log.txt    d,¶&[µd,¶&[µ   >]m  ¤  è   d  œù›&¯E8¥qPø(Ç®<úñ ×S Documentation/nvme-flush.1        d,¶&[µd,¶&[µ   >]m  ¤  è   d  F—PÁ¹îœBøáèÐ*VDkÿÕ,A Documentation/nvme-flush.html     d,µÔ[d,µÔ[   >]iá  ¤  è   d  Â(Ï¦;—ËéÉußèúù°d«[ÃÄ Documentation/nvme-flush.txt      d,¶&[µd,¶&[µ   >]m  ¤  è   d  ©"ÒeFÄãAjŒ:§ÑvÒôW4É Documentation/nvme-format.1       d,¶&[µd,¶&[µ   >]m  ¤  è   d  eu Ýâ¦Ì©µ^%çÎ®f‡¢6 Documentation/nvme-format.html    d,µÔ[d,µÔ[   >]iä  ¤  è   d  üË­ÑÖ-¾‡Ÿô¬ç°êã~šÞ=?Ü Documentation/nvme-format.txt     d,¶&[µd,¶&[µ   >]m  ¤  è   d  ^òý’Ã4JS(4ä
SaÓ< Documentation/nvme-fw-commit.1    d,¶&[µd,¶&[µ   >]m  ¤  è   d  U¹¡K{À]&×fúËÖÇ5`qˆ7 !Documentation/nvme-fw-commit.html d,µÔ[d,µÔ[   >]iç  ¤  è   d  73~x>ûÉPEÎù)¬b ~ÿ  Documentation/nvme-fw-commit.txt  d,¶&[µd,¶&[µ   >]m  ¤  è   d  kUxéðGZoÓôHXæJ+²§ÎC  Documentation/nvme-fw-download.1  d,¶&[µd,¶&[µ   >]m  ¤  è   d  N‡Ôc…+ëžpŒga$ogSÍøJÕ #Documentation/nvme-fw-download.html       d,µÔ[d,µÔ[   >]iê  ¤  è   d  Ë„äíƒûŒ	‡&@fÝY¡šZ "Documentation/nvme-fw-download.txt        d,¶&[µd,¶&[µ   >]m  ¤  è   d  -¤kJµ¦ö,>—úYÈù®Ÿ Documentation/nvme-fw-log.1       d,¶&[µd,¶&[µ   >]m  ¤  è   d  J·aZ”ýØÁ?3ä4Q‚ |ïbþ= Documentation/nvme-fw-log.html    d,µÔ[d,µÔ[   >]ií  ¤  è   d  RKsWr¢¼Ÿ>¯³X:øÄÞ½mÇ Documentation/nvme-fw-log.txt     d,µÔ[d,µÔ[   >]iî  ¤  è   d  	š­T±ÿ }‰çieC„Ì“¾Çcd #Documentation/nvme-gen-dhchap-key.1       d,µÔ[d,µÔ[   >]iï  ¤  è   d  Ie"Nw1=½ZÁ„ñ¨¿–E¬¢]‡z &Documentation/nvme-gen-dhchap-key.html    d,µÔ[d,µÔ[   >]ið  ¤  è   d  byèíX‹‹>J617¥ËÃ£éI<= %Documentation/nvme-gen-dhchap-key.txt     d,¶&[µd,¶&[µ   >]m  ¤  è   d  tåÑ;Ð=Cî„§„.Ìa¦5œÈ™vd  Documentation/nvme-gen-hostnqn.1  d,¶&[µd,¶&[µ   >]m  ¤  è   d  DùˆDŸ^|Ö}™VåŸ´ƒÛD|Y$ #Documentation/nvme-gen-hostnqn.html       d,µÔ[d,µÔ[   >]ió  ¤  è   d  ¥žþûZEw<„Yð¥›J	 "Documentation/nvme-gen-hostnqn.txt        d,¶&[µd,¶&[µ   >]m  ¤  è   d  Ýšã«1I—¦¤0ôïÿsl—ÍF "Documentation/nvme-gen-tls-key.txt        d,¶&[µd,¶&[µ   >]m  ¤  è   d  Òõ¥¬î×˜g]#‚Ï!§LŸÑ  Documentation/nvme-get-feature.1  d,¶&DdËd,¶&DdË   >]m  ¤  è   d  Yùd¾ ¼j¸"°`òùQÞsm	ï1 #Documentation/nvme-get-feature.html       d,µÔ[d,µÔ[   >]i÷  ¤  è   d  Ý¦õzzî`³øb*[:Ú6~]óc "Documentation/nvme-get-feature.txt        d,¶&DdËd,¶&DdË   >]m  ¤  è   d  µƒõº$Ñ7@+ðŽœã?{H+ #Documentation/nvme-get-lba-status.1       d,¶&DdËd,¶&DdË   >]m  ¤  è   d  Q!àêC„Î»]³X+°N|3q &Documentation/nvme-get-lba-status.html    d,µÔ[d,µÔ[   >]iú  ¤  è   d  	X}Ä¶Ù8V•±%>ìê+
žˆzÌ %Documentation/nvme-get-lba-status.txt     d,¶&DdËd,¶&DdË   >]m  ¤  è   d  #ŒqA`­Æ™À’ÉÍÍûŽþ}åÁM Documentation/nvme-get-log.1      d,¶&DdËd,¶&DdË   >]m  ¤  è   d  X«Hm;Ãá|0ÚFoú> Ô¤m1 Documentation/nvme-get-log.html   d,¶&DdËd,¶&DdË   >]m   ¤  è   d  )¥C]ðK–YLˆˆj,ˆ.LB‰ Documentation/nvme-get-log.txt    d,¶&DdËd,¶&DdË   >]m!  ¤  è   d  5·ì¼ÔfeÞŒ#SbÐü¢ûô'‡~ Documentation/nvme-get-ns-id.1    d,¶&DdËd,¶&DdË   >]m"  ¤  è   d  EÀ£ýjè¥Õ™®#Ä‘é ÕQA !Documentation/nvme-get-ns-id.html d,µ dd,µ d   >]j   ¤  è   d  ]ÍÆÔøí»ä5çVPÉ‡Öã(Ý‹  Documentation/nvme-get-ns-id.txt  d,¶&DdËd,¶&DdË   >]m#  ¤  è   d  
Ëkçel‡ !ˆâ¨hMÖý8 !Documentation/nvme-get-property.1 d,¶&DdËd,¶&DdË   >]m$  ¤  è   d  JgzÓÈºß=vw®¸©WS›”Î; $Documentation/nvme-get-property.html      d,µ dd,µ d   >]j  ¤  è   d  œ²·Ò$½h7ç²?/ê‘þƒÛÜ6 #Documentation/nvme-get-property.txt       d,¶&DdËd,¶&DdË   >]m%  ¤  è   d  ÉÛúp3´J:’¬åbŠûU‰ Documentation/nvme-help.1 d,¶&DdËd,¶&DdË   >]m&  ¤  è   d  EsËó<ÓŠÒ\Å•Ã+ÕiòN H– Documentation/nvme-help.html      d,µ dd,µ d   >]j  ¤  è   d  £LØ»5œ°æU?Ý¾€ØH Documentation/nvme-help.txt       d,¶&DdËd,¶&DdË   >]m'  ¤  è   d  ²ºŸáîY%‹?jP]hk`Ñ?dz #Documentation/nvme-huawei-id-ctrl.1       d,¶&DdËd,¶&DdË   >]m(  ¤  è   d  M0•Ãn\ ™p ™UÇo‹dã]Ä-Û5 &Documentation/nvme-huawei-id-ctrl.html    d,µ dd,µ d   >]j	  ¤  è   d  *ôÒø_#sH›D,^®®ð±ý %Documentation/nvme-huawei-id-ctrl.txt     d,¶&DdËd,¶&DdË   >]m)  ¤  è   d  ³·¨Šÿx”æüÌÍw¿×ö   Documentation/nvme-huawei-list.1  d,¶&DdËd,¶&DdË   >]m*  ¤  è   d  Få<‚þh@3o„æ¦„'aý‚)(9 #Documentation/nvme-huawei-list.html       d,µ dd,µ d   >]j  ¤  è   d  ?e¦Â&5?–ŠÆáGP=©z&ý "Documentation/nvme-huawei-list.txt        d,¶&DdËd,¶&DdË   >]m+  ¤  è   d  ã‰“ÿ4àä9ºG“X5|£:Õï Documentation/nvme-id-ctrl.1      d,¶&DdËd,¶&DdË   >]m,  ¤  è   d  SšùP*¤—‰c±ÃMözù¸‚Þœ]oê Documentation/nvme-id-ctrl.html   d,µ dd,µ d   >]j  ¤  è   d  ©¹üÿÄêGä-{\ŒªŒÆï£3¬_> Documentation/nvme-id-ctrl.txt    d,¶&DdËd,¶&DdË   >]m-  ¤  è   d  µ'æ¿9R+ÚŸ)*ÊÌ®,Ò) Documentation/nvme-id-domain.1    d,¶&DdËd,¶&DdË   >]m.  ¤  è   d  HP›¹ækž09—2ÙêÃ4¾Uê !Documentation/nvme-id-domain.html d,µ dd,µ d   >]j  ¤  è   d  Ô‡ˆ<PYõ§ –yÎç‹Æûìò  Documentation/nvme-id-domain.txt  d,¶&DdËd,¶&DdË   >]m/  ¤  è   d  
òú¤ Ð.ò-a¾y˜Œ@]y%ÇÀ Documentation/nvme-id-iocs.1      d,¶&DdËd,¶&DdË   >]m0  ¤  è   d  JÂÆ 'e”rÅï!º·¤¿30Š¥nDÈ Documentation/nvme-id-iocs.html   d,µ dd,µ d   >]j  ¤  è   d  ;£Rá_ü—`æ;¶øÊø#!í Documentation/nvme-id-iocs.txt    d,µ dd,µ d   >]j  ¤  è   d  $Ël*”Ï4¡û¾iéõ‰6æô %Documentation/nvme-id-ns-lba-format.1     d,µ dd,µ d   >]j  ¤  è   d  R}Kƒÿä*Ì„øD*ª6S‡ (Documentation/nvme-id-ns-lba-format.html  d,µ dd,µ d   >]j  ¤  è   d  ?2ß/amÝ"qþ+ŠèŠƒEêœ§ 'Documentation/nvme-id-ns-lba-format.txt   d,¶&DdËd,¶&DdË   >]m1  ¤  è   d  +/Ub°j‡ÁÜ/·EªÚ{'Ž|} Documentation/nvme-id-ns.1        d,¶&DdËd,¶&DdË   >]m2  ¤  è   d  Y…ŸÃ0™QÁ´L‰óÏû¶ýPõ Documentation/nvme-id-ns.html     d,µ dd,µ d   >]j  ¤  è   d  9¢¬T„ÎøF;“kØj‰f Documentation/nvme-id-ns.txt      d,¶&DdËd,¶&DdË   >]m3  ¤  è   d  ‹ƒ‡XÅ·w]×(u§ÂIüþ@ÿŸï Documentation/nvme-id-nvmset.1    d,¶&DdËd,¶&DdË   >]m4  ¤  è   d  NF³p¸Wœ–ssW —vÂ+Ù !Documentation/nvme-id-nvmset.html d,µ dd,µ d   >]j  ¤  è   d  +Ã1A’¤SVÐRNé<ùºw©È  Documentation/nvme-id-nvmset.txt  d,¶&DdËd,¶&DdË   >]m5  ¤  è   d  BêJÈÊÈP}¡YèQø¹5ÆË +Documentation/nvme-inspur-nvme-vendor-log.1       d,¶&DdËd,¶&DdË   >]m6  ¤  è   d  GT§ƒ'æ§f/¦†­£!mVUuÏ« .Documentation/nvme-inspur-nvme-vendor-log.html    d,µ Nm,d,µ Nm,   >]j!  ¤  è   d  Íf¼QŒÚ,¶p¦é, x¢ö¶ -Documentation/nvme-inspur-nvme-vendor-log.txt     d,¶&DdËd,¶&DdË   >]m7  ¤  è   d  :Ì!™Åú{ZëàÜâ…ùs˜vhh› "Documentation/nvme-intel-id-ctrl.1        d,¶&DdËd,¶&DdË   >]m8  ¤  è   d  L™ç¹´W	hO¿z¤ËŒ7ýSŠs %Documentation/nvme-intel-id-ctrl.html     d,µ Nm,d,µ Nm,   >]j$  ¤  è   d  ¸ciÇªðÛ<ÎQ`2äÀM­ý1 $Documentation/nvme-intel-id-ctrl.txt      d,¶&DdËd,¶&DdË   >]m9  ¤  è   d  MÄ¢ £åŽöãÆ¤Ê8›î|?ú 'Documentation/nvme-intel-internal-log.1   d,¶&màd,¶&mà   >]m:  ¤  è   d  Mé˜l`}ÒbÞXàÙY¬zŒXwÙ– *Documentation/nvme-intel-internal-log.html        d,µ Nm,d,µ Nm,   >]j'  ¤  è   d  / 1:Ó¿Ÿ­Û‚^æ¹KØ¤c )Documentation/nvme-intel-internal-log.txt d,¶&màd,¶&mà   >]m;  ¤  è   d  
oN[›à¦Ì¼dáÍXJ,ÎC $Documentation/nvme-intel-lat-stats.1      d,¶&màd,¶&mà   >]m<  ¤  è   d  IÂDØŒï;¥¹Æ‘CN¯‰R˜A 'Documentation/nvme-intel-lat-stats.html   d,µ Nm,d,µ Nm,   >]j*  ¤  è   d  ¸v|ù!eƒÄíÛ÷—´¹ç-4KÎq &Documentation/nvme-intel-lat-stats.txt    d,¶&màd,¶&mà   >]m=  ¤  è   d  	œY“…
år:ŽÌŸŒØ,‚‹òj0 &Documentation/nvme-intel-market-name.1    d,¶&màd,¶&mà   >]m>  ¤  è   d  H¾Š[•<÷ÝSqU^ùÂÿ\4°N^¾ )Documentation/nvme-intel-market-name.html d,µ Nm,d,µ Nm,   >]j-  ¤  è   d  \K–«ikoÑ—¯JS¡ ·Ún (Documentation/nvme-intel-market-name.txt  d,¶&màd,¶&mà   >]m?  ¤  è   d  Îü}*ƒf?kNØc›‘{„=oN7 (Documentation/nvme-intel-smart-log-add.1  d,¶&màd,¶&mà   >]m@  ¤  è   d  LÄ.{qC'ì¤’6¼Á¨™7Mó™É +Documentation/nvme-intel-smart-log-add.html       d,µ Nm,d,µ Nm,   >]j0  ¤  è   d  á|þyB+ ƒyZÎË'¨0G°ß  *Documentation/nvme-intel-smart-log-add.txt        d,¶&màd,¶&mà   >]mA  ¤  è   d  
ŠzÄ<hâ§L
/¢Œ6%y0EŸ$ %Documentation/nvme-intel-temp-stats.1     d,¶&màd,¶&mà   >]mB  ¤  è   d  I´m«9X‚Ä!–J—§ùº"·Y¤ (Documentation/nvme-intel-temp-stats.html  d,µ Nm,d,µ Nm,   >]j3  ¤  è   d  âed"öÈ¬_éfKqóà³¿–3ø$­ 'Documentation/nvme-intel-temp-stats.txt   d,¶&màd,¶&mà   >]mC  ¤  è   d  )>˜ù¤Lî,ñcÞ;”´|¬2i¬ !Documentation/nvme-io-mgmt-recv.1 d,¶&màd,¶&mà   >]mD  ¤  è   d  K<-„âÞýÄ’;„Š°g`îsµ $Documentation/nvme-io-mgmt-recv.html      d,µ Nm,d,µ Nm,   >]j6  ¤  è   d  °æÁ_9ÞÑy°øw‰-°*]oÛò #Documentation/nvme-io-mgmt-recv.txt       d,¶&màd,¶&mà   >]mE  ¤  è   d  
Ô mOAdËm‘&æ½£Oè¼wq !Documentation/nvme-io-mgmt-send.1 d,¶&màd,¶&mà   >]mF  ¤  è   d  JèèÏx‘ÅÔ‹ JûžVÎÙãƒXçÎ $Documentation/nvme-io-mgmt-send.html      d,µ Nm,d,µ Nm,   >]j9  ¤  è   d  ]Î!ªNjåxÚcZF$ªS›² #Documentation/nvme-io-mgmt-send.txt       d,¶&màd,¶&mà   >]mG  ¤  è   d  ëAÅo™W~h³úƒzã§+Ô‹ò®Í  Documentation/nvme-io-passthru.1  d,¶&màd,¶&mà   >]mH  ¤  è   d  Zm'6¯­¬j+_Ž‡Í†Áo;‰¢ó£— #Documentation/nvme-io-passthru.html       d,µ Nm,d,µ Nm,   >]j<  ¤  è   d  ßº	ÏdæC%½Ð½ÖaM«;Ú "Documentation/nvme-io-passthru.txt        d,¶&màd,¶&mà   >]mI  ¤  è   d  
¼â%ì†q”’‡Pùz}rçÃm„ #Documentation/nvme-lba-status-log.1       d,¶&màd,¶&mà   >]mJ  ¤  è   d  IÝ¥âfêžþ-Ÿ!ëjå$öŽ &Documentation/nvme-lba-status-log.html    d,µ Nm,d,µ Nm,   >]j?  ¤  è   d  öˆj/¶|þœßtðŠføšov %Documentation/nvme-lba-status-log.txt     d,¶&màd,¶&mà   >]mK  ¤  è   d  
å5›¤‚(M¡ÏÅÿÈy¥Ë°k”S Documentation/nvme-list-ctrl.1    d,¶&màd,¶&mà   >]mL  ¤  è   d  J@–©¦÷Í:óG+Ü®^Ÿi%" !Documentation/nvme-list-ctrl.html d,µ Nm,d,µ Nm,   >]jB  ¤  è   d  ¿ñ»RÙh^û“dÿ)F–‰s©>   Documentation/nvme-list-ctrl.txt  d,¶&màd,¶&mà   >]mM  ¤  è   d  	–<êd3{rÓÃ/]’X¦«L.E  Documentation/nvme-list-endgrp.1  d,¶&màd,¶&mà   >]mN  ¤  è   d  InBg©|GÏBÈ	Š<^4¤ #Documentation/nvme-list-endgrp.html       d,µ Nm,d,µ Nm,   >]jE  ¤  è   d  }Ê˜b„ó\¤oVóƒ!÷ Žq "Documentation/nvme-list-endgrp.txt        d,¶&màd,¶&mà   >]mO  ¤  è   d  ³}{‹xÊC[}lTù§A•fI? Documentation/nvme-list-ns.1      d,¶&màd,¶&mà   >]mP  ¤  è   d  Lë±WÄ±š‰¹xx®)rÿÄ=lÓ0> Documentation/nvme-list-ns.html   d,µ Nm,d,µ Nm,   >]jH  ¤  è   d  ¡u:•”!E#í`¤ú¤êÚØbx Documentation/nvme-list-ns.txt    d,¶&màd,¶&mà   >]mQ  ¤  è   d  ©D8ˆ*Ì^óµ8G=0:µW¾ù²Ù  Documentation/nvme-list-subsys.1  d,¶&màd,¶&mà   >]mR  ¤  è   d  L\cfÖs  ’±PðØ‘™QçWä #Documentation/nvme-list-subsys.html       d,µ Nm,d,µ Nm,   >]jK  ¤  è   d  „fP»ã«‰ßgË±OŒ}¬*ÀbNº "Documentation/nvme-list-subsys.txt        d,¶&màd,¶&mà   >]mS  ¤  è   d  )í_¦RåYM{>xíÄ“ûtÁ Documentation/nvme-list.1 d,¶&màd,¶&mà   >]mT  ¤  è   d  G÷>å€MïMØÖgµu¥ŽR Documentation/nvme-list.html      d,µ Nm,d,µ Nm,   >]jN  ¤  è   d  =|Ã3¾Ro¢×âÛË#†©†\ë Documentation/nvme-list.txt       d,¶&màd,¶&mà   >]mU  ¤  è   d  G {@W‹·„ß¾\¡_ÀÒ,kû Documentation/nvme-lockdown.1     d,¶&màd,¶&mà   >]mV  ¤  è   d  KÝ¤ÎùÂ¡ØD%Œ¤÷Y¤SÇ?x  Documentation/nvme-lockdown.html  d,µ Nm,d,µ Nm,   >]jQ  ¤  è   d  ÜÏŠHÿœõóy† ajdð=A Documentation/nvme-lockdown.txt   d,µ ‹vAd,µ ‹vA   >]jR  ¤  è   d  	!ÔÐWã3“xwÍU¶Ò-Á (Documentation/nvme-media-unit-stat-log.1  d,µ ‹vAd,µ ‹vA   >]jS  ¤  è   d  E¸PBºŸ³’ˆ”ÜV‘v«dÃ˜£ +Documentation/nvme-media-unit-stat-log.html       d,µ ‹vAd,µ ‹vA   >]jT  ¤  è   d  	B{wÏUÐ8Úa"¾pW[æš *Documentation/nvme-media-unit-stat-log.txt        d,¶&màd,¶&mà   >]mW  ¤  è   d  	Ç H Gc6§È	¨”6Tö£Œæë¢f /Documentation/nvme-mi-cmd-support-effects-log.1   d,¶&màd,¶&mà   >]mX  ¤  è   d  I€p6làÄ™ß{Ÿ6 VôCîëØ 2Documentation/nvme-mi-cmd-support-effects-log.html        d,µ ‹vAd,µ ‹vA   >]jW  ¤  è   d  Óg¸5_ÒÖdwu×N=V¾ù‰ 1Documentation/nvme-mi-cmd-support-effects-log.txt d,¶&màd,¶&mà   >]mY  ¤  è   d  e0“¾ÇíÎZ³Üm.ÌP*v¾ð= -Documentation/nvme-micron-clear-pcie-errors.1     d,¶&màd,¶&mà   >]mZ  ¤  è   d  G:_A6uI°S¿ƒª—Ñ><{ 0Documentation/nvme-micron-clear-pcie-errors.html  d,µ ‹vAd,µ ‹vA   >]jZ  ¤  è   d  <Mðè¢ž£Ùç¬ýÓŸ‡4¦­\1 /Documentation/nvme-micron-clear-pcie-errors.txt   d,¶&¾võd,¶&¾võ   >]m[  ¤  è   d  
	º=oE§¢žýŽ9>}ôøV¨^£ (Documentation/nvme-micron-internal-log.1  d,¶&¾võd,¶&¾võ   >]m\  ¤  è   d  I3ñðTž¨ÉàšoÆSC+¨´ÙÅ +Documentation/nvme-micron-internal-log.html       d,µ ‹vAd,µ ‹vA   >]j]  ¤  è   d  Ç7¥
ÔÖ³­Ë¯Zvb±:u *Documentation/nvme-micron-internal-log.txt        d,¶&¾võd,¶&¾võ   >]m]  ¤  è   d  Wêé©Ö›=ìéÉ²‹õŽ=W» &Documentation/nvme-micron-nand-stats.1    d,¶&¾võd,¶&¾võ   >]m^  ¤  è   d  G(ý÷êzÎÈ€	,Þjñ®Y?w )Documentation/nvme-micron-nand-stats.html d,µ ‹vAd,µ ‹vA   >]j`  ¤  è   d  +hâïUâ‚+6n.}[Q^×A¶ (Documentation/nvme-micron-nand-stats.txt  d,¶&¾võd,¶&¾võ   >]m_  ¤  è   d  ?õ÷f÷ToL‡˜Zˆ4Q]û`ï— &Documentation/nvme-micron-pcie-stats.1    d,¶&¾võd,¶&¾võ   >]m`  ¤  è   d  Gao@Ô8÷ËË{[£¤tVç¾ )Documentation/nvme-micron-pcie-stats.html d,µ ‹vAd,µ ‹vA   >]jc  ¤  è   d  õ‚W®Wíº­€ÓLŒ:ýG¨‰òA (Documentation/nvme-micron-pcie-stats.txt  d,¶&¾võd,¶&¾võ   >]ma  ¤  è   d  ¡HÝgñÐ»%](Á¶ÛÆ÷Ò(”0 .Documentation/nvme-micron-selective-download.1    d,¶&¾võd,¶&¾võ   >]mb  ¤  è   d  M~Fá'2L’ŸG´ß±°©·¾¡#  1Documentation/nvme-micron-selective-download.html d,µ ‹vAd,µ ‹vA   >]jf  ¤  è   d  €_±y¥dQC‹çÏXB¯ÊÃ 0Documentation/nvme-micron-selective-download.txt  d,¶&¾võd,¶&¾võ   >]mc  ¤  è   d  †³¨QÜWbd¥ œì2ct¯Ý¿ )Documentation/nvme-micron-smart-add-log.1 d,¶&¾võd,¶&¾võ   >]md  ¤  è   d  J=®ÖVÿ·ëËS7YÏXh:€ ,Documentation/nvme-micron-smart-add-log.html      d,µ ‹vAd,µ ‹vA   >]ji  ¤  è   d  ×K¬’À+‰‘{=ˆ°(Œ_æñ +Documentation/nvme-micron-smart-add-log.txt       d,¶&¾võd,¶&¾võ   >]me  ¤  è   d  ð¢+åû1a?ÎûIC£åB -Documentation/nvme-micron-temperature-stats.1     d,¶&¾võd,¶&¾võ   >]mf  ¤  è   d  GYI`(¸M’œ·žO2Ö³Òì:¦ 0Documentation/nvme-micron-temperature-stats.html  d,µ ‹vAd,µ ‹vA   >]jl  ¤  è   d  ]‹=›¨Ãª°ª¿¾ÜáT0±}Î /Documentation/nvme-micron-temperature-stats.txt   d,¶&¾võd,¶&¾võ   >]mg  ¤  è   d  „Ó¢ ‹_Ù¦•¿Ö³CÂÂÎçq	Í (Documentation/nvme-netapp-ontapdevices.1  d,¶&¾võd,¶&¾võ   >]mh  ¤  è   d  G®³[
S•kzôSÒD¤é½$Íu +Documentation/nvme-netapp-ontapdevices.html       d,µ ‹vAd,µ ‹vA   >]jo  ¤  è   d  ôÂ’u…˜ûÔÅç¤@c´wÛd ¤’ *Documentation/nvme-netapp-ontapdevices.txt        d,¶&¾võd,¶&¾võ   >]mi  ¤  è   d  •ÅZ¨±ÔEážÒ™÷¤"Ô¹sî %Documentation/nvme-netapp-smdevices.1     d,¶&¾võd,¶&¾võ   >]mj  ¤  è   d  G“ÀàZÏpQ;"—‰S¦Û×¹ (Documentation/nvme-netapp-smdevices.html  d,µ ‹vAd,µ ‹vA   >]jr  ¤  è   d  h¶k˜ÑÙ~ë&Øc/²Gœ4\$ø 'Documentation/nvme-netapp-smdevices.txt   d,¶&¾võd,¶&¾võ   >]mk  ¤  è   d  *	ÒÐádò€|7Ì+Æ©	¨R Documentation/nvme-ns-descs.1     d,¶&¾võd,¶&¾võ   >]ml  ¤  è   d  N=WlL‘±ÆÖ*PPˆGÚKyêŽ  Documentation/nvme-ns-descs.html  d,µ ‹vAd,µ ‹vA   >]ju  ¤  è   d  
ŠþºX
’ügãŸ…óXœ%gÇ Documentation/nvme-ns-descs.txt   d,¶&¾võd,¶&¾võ   >]mm  ¤  è   d  «TúË,(EXÁ²ùê„KiøíI Documentation/nvme-ns-rescan.1    d,¶&¾võd,¶&¾võ   >]mn  ¤  è   d  Ecœ´yo	œÀ~1#~X5°ïQ !Documentation/nvme-ns-rescan.html d,µ ‹vAd,µ ‹vA   >]jx  ¤  è   d  ÚÍA‡
µª\–‡:¦ðEÏ  Documentation/nvme-ns-rescan.txt  d,¶&¾võd,¶&¾võ   >]mo  ¤  è   d  
Ñ³Þrz`;¿ ®FÃ¼tv+  Documentation/nvme-nvm-id-ctrl.1  d,¶&¾võd,¶&¾võ   >]mp  ¤  è   d  IKÍÂõÎ
IOA²¬]§¡ß¹`„ #Documentation/nvme-nvm-id-ctrl.html       d,µ ‹vAd,µ ‹vA   >]j{  ¤  è   d  sûJ#rKÔ‡²ëFo‰÷Ál“ç– "Documentation/nvme-nvm-id-ctrl.txt        d,µ ‹vAd,µ ‹vA   >]j|  ¤  è   d  ¦†r?
öÛõ÷Ðï=ˆÖY°® )Documentation/nvme-nvm-id-ns-lba-format.1 d,µ ‹vAd,µ ‹vA   >]j}  ¤  è   d  M…	¬Ly‡”‰ÏÄÓúéµH¤¡Ã ,Documentation/nvme-nvm-id-ns-lba-format.html      d,µ ‹vAd,µ ‹vA   >]j~  ¤  è   d  –cŽ/º×Ÿf~ƒˆ5¼1Õ€f©âF +Documentation/nvme-nvm-id-ns-lba-format.txt       d,µ ‹vAd,µ ‹vA   >]j  ¤  è   d  Žýã{NÊóLêŠWª´æšmØÒ˜ Documentation/nvme-nvm-id-ns.1    d,µ ‹vAd,µ ‹vA   >]j€  ¤  è   d  O‚d]Ï™E62C`
oÎ–î! $|  !Documentation/nvme-nvm-id-ns.html d,µ ‹vAd,µ ‹vA   >]j  ¤  è   d  Ÿß»ú¢š´Öî°ž|\·)ž¢ÒM¤  Documentation/nvme-nvm-id-ns.txt  d,¶&¾võd,¶&¾võ   >]mq  ¤  è   d  
Ýá‰n\pU5xŠä%çÏà0¯R 2Documentation/nvme-ocp-clear-fw-activate-history.1        d,¶&¾võd,¶&¾võ   >]mr  ¤  è   d  J1ÀêÈ“æƒUDÞÖ|U7ÝJ
 5Documentation/nvme-ocp-clear-fw-activate-history.html     d,µ ‹vAd,µ ‹vA   >]j„  ¤  è   d  ˆ!HJµÌx«"¹ÿà'¸LzcŠ 4Documentation/nvme-ocp-clear-fw-activate-history.txt      d,¶&¾võd,¶&¾võ   >]ms  ¤  è   d  	@Ò2@‡,é&Ì_B\xµ‚b»ˆ ,Documentation/nvme-ocp-latency-monitor-log.1      d,¶&¾võd,¶&¾võ   >]mt  ¤  è   d  Hž8<pUS{Ïx(´à]ö¼‹ /Documentation/nvme-ocp-latency-monitor-log.html   d,µ ‹vAd,µ ‹vA   >]j‡  ¤  è   d  öf÷`ÅÏs$ÚÛŸ¼elcþdT>$¦ .Documentation/nvme-ocp-latency-monitor-log.txt    d,¶&¾võd,¶&¾võ   >]mu  ¤  è   d  	mÈù÷nPI–‘¨·¾¢g,\ˆk &Documentation/nvme-ocp-smart-add-log.1    d,¶&¾võd,¶&¾võ   >]mv  ¤  è   d  HÀ#Âçù!{æï¥Ž
¾×$þ{¶L )Documentation/nvme-ocp-smart-add-log.html d,µ ‹vAd,µ ‹vA   >]jŠ  ¤  è   d  :%‚'Ka‚™×—ÚÈ…Ù«CSt (Documentation/nvme-ocp-smart-add-log.txt  d,¶&¾võd,¶&¾võ   >]mw  ¤  è   d  ÏÜLd¤uÚQãÚÎ¾.×®IûÇ )Documentation/nvme-persistent-event-log.1 d,¶&¾võd,¶&¾võ   >]mx  ¤  è   d  O(¹v…ƒŸ†óF¡ŸE|JðZ4¨àŸ ,Documentation/nvme-persistent-event-log.html      d,µ ÈUd,µ ÈU   >]j  ¤  è   d  øƒ4‘ôZ2¢ûhcªÈ¹Wœ +Documentation/nvme-persistent-event-log.txt       d,¶&¾võd,¶&¾võ   >]my  ¤  è   d  JÎÿYRf<;jÀ=“Â¹Û›ûn, +Documentation/nvme-pred-lat-event-agg-log.1       d,¶&¾võd,¶&¾võ   >]mz  ¤  è   d  N\×LÅ)
à¦zb|ôªäHæjò .Documentation/nvme-pred-lat-event-agg-log.html    d,µ ÈUd,µ ÈU   >]j  ¤  è   d  9°›°ÖéÿPbBŠ¾WjèåcÑ -Documentation/nvme-pred-lat-event-agg-log.txt     d,¶&¾võd,¶&¾võ   >]m{  ¤  è   d  ­x‘¥m¨¢çFî—=­( (Documentation/nvme-predictable-lat-log.1  d,¶&¾võd,¶&¾võ   >]m|  ¤  è   d  M­†Ú?ø¬Mö½Ç&|•Ñì¨ +Documentation/nvme-predictable-lat-log.html       d,µ ÈUd,µ ÈU   >]j“  ¤  è   d  ÀÑÝèM{=u Wu7\7oèÆ8 *Documentation/nvme-predictable-lat-log.txt        d,¶&¾võd,¶&¾võ   >]m}  ¤  è   d  Q“8âfµ–|ù“å—á©ù_?!Çù‘ &Documentation/nvme-primary-ctrl-caps.1    d,¶&¾võd,¶&¾võ   >]m~  ¤  è   d  JÛ¬rÀküÿuïj‰ÚÄò"×aÁÇË )Documentation/nvme-primary-ctrl-caps.html d,µ ÈUd,µ ÈU   >]j–  ¤  è   d  ¤>ß\]}‰…ò$cþ)#Ï-9¾ (Documentation/nvme-primary-ctrl-caps.txt  d,¶&¾võd,¶&¾võ   >]m  ¤  è   d  F
ã0ôø¶î‘|ô†r$×ßl Documentation/nvme-read.1 d,¶&¾võd,¶&¾võ   >]m€  ¤  è   d  `Ì¬Ù°Œ›&ÈÀÓDFïÌC6Ø¸ Documentation/nvme-read.html      d,¶&¾võd,¶&¾võ   >]m  ¤  è   d  á<îºïiõÎ_ÊšgtKf™MŒ` Documentation/nvme-read.txt       d,¶&¾võd,¶&¾võ   >]m‚  ¤  è   d  ÕÒvxuZýÔïÃ”.þ´›E´1 Documentation/nvme-reset.1        d,¶&¾võd,¶&¾võ   >]mƒ  ¤  è   d  EbÂ™}Ó—ö¥…¸‚Jœ¥‚º`Õ Documentation/nvme-reset.html     d,µ ÈUd,µ ÈU   >]jœ  ¤  è   d  ­Ñ¢‚¼³×–ó¬Í ‹Ô‡KB	 Documentation/nvme-reset.txt      d,¶&û€
d,¶&û€
   >]m„  ¤  è   d  ‚­Š`ZýÐ8Q®÷díÆ†n;ý !Documentation/nvme-resv-acquire.1 d,¶&û€
d,¶&û€
   >]m…  ¤  è   d  WíîK¼q¶<«‘µ×—¥ÏâÿóL $Documentation/nvme-resv-acquire.html      d,µ ÈUd,µ ÈU   >]jŸ  ¤  è   d  		nú‚îŒéäó0Sëg #Documentation/nvme-resv-acquire.txt       d,¶&û€
d,¶&û€
   >]m†  ¤  è   d  
¯Z}Ù·Yõî1 D ë¬‰†%Û¥ #Documentation/nvme-resv-notif-log.1       d,¶&û€
d,¶&û€
   >]m‡  ¤  è   d  J %H­Ð7U,:¢¬ŸaM.z´Ý?ú &Documentation/nvme-resv-notif-log.html    d,µ ÈUd,µ ÈU   >]j¢  ¤  è   d  -©ÅÍÚºqlB½ÛÁˆ àÑBk[z! %Documentation/nvme-resv-notif-log.txt     d,¶&û€
d,¶&û€
   >]mˆ  ¤  è   d  '(Œ#KàŽ~¿1hÓ`‚¡ÌÒØIXc "Documentation/nvme-resv-register.1        d,¶&û€
d,¶&û€
   >]m‰  ¤  è   d  Vñ#iØ*Øë©ð¢)±‰¡<ƒþ†œÎ %Documentation/nvme-resv-register.html     d,µ ÈUd,µ ÈU   >]j¥  ¤  è   d  	ãàU?B©4#­hÃÿˆ…¿‹!e $Documentation/nvme-resv-register.txt      d,¶&û€
d,¶&û€
   >]mŠ  ¤  è   d  MèêQsÞÑ~/´•v©°Ô¸U Hø !Documentation/nvme-resv-release.1 d,¶&û€
d,¶&û€
   >]m‹  ¤  è   d  UákB·\þ	n%Éq©èJ‚lŠÂ $Documentation/nvme-resv-release.html      d,µ ÈUd,µ ÈU   >]j¨  ¤  è   d  	n°´<"ŸxišÙ˜€MÉC”¨ #Documentation/nvme-resv-release.txt       d,¶&û€
d,¶&û€
   >]mŒ  ¤  è   d  ¯fi'¥n?ÔP£Ã¹Ã…EÁ®–Ç  Documentation/nvme-resv-report.1  d,¶&û€
d,¶&û€
   >]m  ¤  è   d  LMìÙ;ÑÑ#”\Š"TÈÝ‹¡Æz.† #Documentation/nvme-resv-report.html       d,µ ÈUd,µ ÈU   >]j«  ¤  è   d  :2/íC~¶ñúY–ÃáŠäoïv "Documentation/nvme-resv-report.txt        d,¶&û€
d,¶&û€
   >]mŽ  ¤  è   d  öQ@¬Ùµ,.>šÚ
YáŒ› Documentation/nvme-rpmb.1 d,¶&û€
d,¶&û€
   >]m  ¤  è   d  `Ï#ÆË	‰EÌãÕTr´œ+µÈkÁH Documentation/nvme-rpmb.html      d,µ ÈUd,µ ÈU   >]j®  ¤  è   d  ¡ÃƒØ—%K–J$–FÒoÖŸ] Documentation/nvme-rpmb.txt       d,¶&û€
d,¶&û€
   >]m  ¤  è   d  D']/Û‚W¶ß[áîF’yÈ[C¥ìŒ !Documentation/nvme-sanitize-log.1 d,¶&û€
d,¶&û€
   >]m‘  ¤  è   d  Q™û~ÁÑÔ#¸NjÀL¦¢\¼ZÆE± $Documentation/nvme-sanitize-log.html      d,µ ÈUd,µ ÈU   >]j±  ¤  è   d  %<-CêÊJ÷‘æÜˆã„™b“ #Documentation/nvme-sanitize-log.txt       d,¶&û€
d,¶&û€
   >]m’  ¤  è   d  fM^ã,o÷ îâK¢d(SÓ¡ Documentation/nvme-sanitize.1     d,¶&û€
d,¶&û€
   >]m“  ¤  è   d  V¬c¾õ×¤"TáÜWš )õ  Documentation/nvme-sanitize.html  d,µ ÈUd,µ ÈU   >]j´  ¤  è   d  ’Ã¹¯"ÇÐ¨e_€uQÞ¤~@êÝ.‹ Documentation/nvme-sanitize.txt   d,¶&û€
d,¶&û€
   >]m”  ¤  è   d  $3m„yN¿@‚OkÎãq’BÜ4t 6Documentation/nvme-seagate-clear-fw-activate-history.1    d,¶&û€
d,¶&û€
   >]m•  ¤  è   d  GÒ¨ÛÐWh÷ë#Nw$ˆ6ío+ª! 9Documentation/nvme-seagate-clear-fw-activate-history.html d,µ ÈUd,µ ÈU   >]j·  ¤  è   d  R+""móy>`Á…³Ê.¨Æy?· 8Documentation/nvme-seagate-clear-fw-activate-history.txt  d,¶&û€
d,¶&û€
   >]m–  ¤  è   d  -ôßY#(W£µr³à¸ÛÿÇ<”š :Documentation/nvme-seagate-clear-pcie-correctable-errors.1        d,¶&û€
d,¶&û€
   >]m—  ¤  è   d  Gt¥¢K™"c—{í@$:.[˜Gº ž =Documentation/nvme-seagate-clear-pcie-correctable-errors.html     d,µ ÈUd,µ ÈU   >]jº  ¤  è   d  Y3•-8òìåmQB*¨!­ÃW3óó <Documentation/nvme-seagate-clear-pcie-correctable-errors.txt      d,¶&û€
d,¶&û€
   >]m˜  ¤  è   d  ã§~®£“"—ÍÐì+_*»:äž 5Documentation/nvme-seagate-cloud-SSD-plugin-version.1     d,¶&û€
d,¶&û€
   >]m™  ¤  è   d  E©zEÕHóÆó•ËÀ#l7w’ ~s 8Documentation/nvme-seagate-cloud-SSD-plugin-version.html  d,µ ÈUd,µ ÈU   >]j½  ¤  è   d  ù©*ù
Q<°]ï¸”ÈçTƒÉöÒ 7Documentation/nvme-seagate-cloud-SSD-plugin-version.txt   d,¶&û€
d,¶&û€
   >]mš  ¤  è   d  }ø¼ËövIlx/¹4$ôÌúÏª¬¡ *Documentation/nvme-seagate-get-ctrl-tele.1        d,¶&û€
d,¶&û€
   >]m›  ¤  è   d  Gþµà<þëë“HÎ@‚h¾Õ¨â$Û5* -Documentation/nvme-seagate-get-ctrl-tele.html     d,µ ÈUd,µ ÈU   >]jÀ  ¤  è   d  ápTŒI(>ÎÑ7´gB°G¡ìXc ,Documentation/nvme-seagate-get-ctrl-tele.txt      d,¶&û€
d,¶&û€
   >]mœ  ¤  è   d  	Y‹Çß–ÕQå§Pw)¦¥²ò=¤é *Documentation/nvme-seagate-get-host-tele.1        d,¶&û€
d,¶&û€
   >]m  ¤  è   d  I?ŒÙ#M¡ë.é`êì{¬Ü)ãš -Documentation/nvme-seagate-get-host-tele.html     d,µ ÈUd,µ ÈU   >]jÃ  ¤  è   d  j(cÁ#Š¶›±U×Þ?™b2ÄH¦E ,Documentation/nvme-seagate-get-host-tele.txt      d,¶&û€
d,¶&û€
   >]mž  ¤  è   d  
¸÷phgØÙÙ³u0†çÞ¹#Ïõf’ !Documentation/nvme-seagate-help.1 d,¶&û€
d,¶&û€
   >]mŸ  ¤  è   d  IöÅk˜§¬cÕ+JÙVkŒ{dMgÏ| $Documentation/nvme-seagate-help.html      d,µ ÈUd,µ ÈU   >]jÆ  ¤  è   d  Ð
z…Ùì.ºÂ±ëyºmÅª #Documentation/nvme-seagate-help.txt       d,¶&û€
d,¶&û€
   >]m   ¤  è   d  µÔûæïžz–ÔQNÄ~Ùø¢ +Documentation/nvme-seagate-plugin-version.1       d,¶&û€
d,¶&û€
   >]m¡  ¤  è   d  Enlú”Dg&zÇ}íž¨$Šñ&¸;a .Documentation/nvme-seagate-plugin-version.html    d,µ ÈUd,µ ÈU   >]jÉ  ¤  è   d  Ý^Južs¤ÊÙK_6”„¢˜‘D[ -Documentation/nvme-seagate-plugin-version.txt     d,¶&û€
d,¶&û€
   >]m¢  ¤  è   d  Ó’¦!±ÃCÈÍùéL|—`eìnm $Documentation/nvme-seagate-version.1      d,¶&û€
d,¶&û€
   >]m£  ¤  è   d  E…o2dÑÒZ"è *Üž‹3®a¼ºaF 'Documentation/nvme-seagate-version.html   d,µ ÈUd,µ ÈU   >]jÌ  ¤  è   d  ô-\|ïÏ t£%!Ù7žÍXóÒ &Documentation/nvme-seagate-version.txt    d,¶&û€
d,¶&û€
   >]m¤  ¤  è   d  oA?Ë,Cä±Ø™¸§ÐŠEƒK7 3Documentation/nvme-seagate-vs-fw-activate-history.1       d,¶&û€
d,¶&û€
   >]m¥  ¤  è   d  Hü	¿»÷bú+å/žhŽþ 6Documentation/nvme-seagate-vs-fw-activate-history.html    d,µ ÈUd,µ ÈU   >]jÏ  ¤  è   d  Œæ°0Òë.ùr÷>¨‘yèìž×¤D÷ 5Documentation/nvme-seagate-vs-fw-activate-history.txt     d,¶&û€
d,¶&û€
   >]m¦  ¤  è   d  l³TNG¢lX3;›¦µ°4‚õ$\ ,Documentation/nvme-seagate-vs-internal-log.1      d,¶&û€
d,¶&û€
   >]m§  ¤  è   d  HšOB–|-Kõkû¥ÌSA‹#½x /Documentation/nvme-seagate-vs-internal-log.html   d,µ ÈUd,µ ÈU   >]jÒ  ¤  è   d  ‚2„f%äÃ¤Ï¬Ä¨HHhÇV; .Documentation/nvme-seagate-vs-internal-log.txt    d,¶&û€
d,¶&û€
   >]m¨  ¤  è   d  	’(Äù.ù2üL_TîÑÄDËÒq ,Documentation/nvme-seagate-vs-log-page-sup.1      d,¶&û€
d,¶&û€
   >]m©  ¤  è   d  HÙœÓÓ±%&î@øÿ¶çþlõ+TÒ /Documentation/nvme-seagate-vs-log-page-sup.html   d,µ!ˆkd,µ!ˆk   >]jÕ  ¤  è   d  ¥¥ÑHXzb.˜ßJ4¥ÞÖËtÿûì .Documentation/nvme-seagate-vs-log-page-sup.txt    d,¶&û€
d,¶&û€
   >]mª  ¤  è   d  
“NñÆThG\îTÏŒGÕ¾¹J=$ *Documentation/nvme-seagate-vs-pcie-stats.1        d,¶&û€
d,¶&û€
   >]m«  ¤  è   d  GN³âKØÂèe/Ãõ_¹Ñ:IÓ -Documentation/nvme-seagate-vs-pcie-stats.html     d,µ!ˆkd,µ!ˆk   >]jØ  ¤  è   d  &tY›ûúËö©Ð×L”Üi—¼uI ,Documentation/nvme-seagate-vs-pcie-stats.txt      d,¶&û€
d,¶&û€
   >]m¬  ¤  è   d  
u…r,ëÝ‚vW­	7²þÍ¸ -Documentation/nvme-seagate-vs-smart-add-log.1     d,¶&û€
d,¶&û€
   >]m­  ¤  è   d  JÊœÛW#æ×¨¼_’Ú–ðê>2×I 0Documentation/nvme-seagate-vs-smart-add-log.html  d,µ!ˆkd,µ!ˆk   >]jÛ  ¤  è   d  ‚–*ž¨ë•>ýù’ŽàA|½Q~ /Documentation/nvme-seagate-vs-smart-add-log.txt   d,¶&û€
d,¶&û€
   >]m®  ¤  è   d  '™êƒ4í†2O›ä’â•¼iÔ×ü¾ 1Documentation/nvme-seagate-vs-temperature-stats.1 d,¶&û€
d,¶&û€
   >]m¯  ¤  è   d  Gg¼“‰M¼A‡‘’5nèçN 4Documentation/nvme-seagate-vs-temperature-stats.html      d,µ!ˆkd,µ!ˆk   >]jÞ  ¤  è   d  F&‘ãŸÒ‰¶TülUA‰’Žž9p 3Documentation/nvme-seagate-vs-temperature-stats.txt       d,¶'8‰d,¶'8‰   >]m°  ¤  è   d  ö~þôÍ˜ßÙ ýéÚ6_åû,ÿv® "Documentation/nvme-security-recv.1        d,¶'8‰d,¶'8‰   >]m±  ¤  è   d  Pyoqˆ6^CN<Ho9rf×T<²6 %Documentation/nvme-security-recv.html     d,µ!ˆkd,µ!ˆk   >]já  ¤  è   d  	CŸéœÆ.‡í§)¬u2!cÔ $Documentation/nvme-security-recv.txt      d,¶'8‰d,¶'8‰   >]m²  ¤  è   d  3ƒcü¼Ò{£‚ºî§…ÞUûJyQÊ "Documentation/nvme-security-send.1        d,¶'8‰d,¶'8‰   >]m³  ¤  è   d  OVÊrð†TT—™-üŸÂo¡š5®Ë %Documentation/nvme-security-send.html     d,µ!ˆkd,µ!ˆk   >]jä  ¤  è   d  ¥®"b§;c¹0Ö.‹B•ü …Ô $Documentation/nvme-security-send.txt      d,¶'8‰d,¶'8‰   >]m´  ¤  è   d  óo¬ÓýR
´läÚ£Ôµ_Ó$M "Documentation/nvme-self-test-log.1        d,¶'8‰d,¶'8‰   >]mµ  ¤  è   d  LŸ»õmW ýÊ;1(UÕL0_!‰, %Documentation/nvme-self-test-log.html     d,µ!ˆkd,µ!ˆk   >]jç  ¤  è   d  ÕV£Ä¬`y™üLÃj¯s+–™õ-1– $Documentation/nvme-self-test-log.txt      d,¶'8‰d,¶'8‰   >]m¶  ¤  è   d  B” ÛóXüùÙa¡5\§ð…©3„  Documentation/nvme-set-feature.1  d,¶'8‰d,¶'8‰   >]m·  ¤  è   d  PÉ¼\g¶ˆª1"ŽgIl²™°ä2 #Documentation/nvme-set-feature.html       d,µ!ˆkd,µ!ˆk   >]jê  ¤  è   d  ¯$©ô	U³M(ê¿cíYRtw,VÌÂ "Documentation/nvme-set-feature.txt        d,¶'8‰d,¶'8‰   >]m¸  ¤  è   d  3¿ÿhf}_ÇXËÉö?eùûœðÒ !Documentation/nvme-set-property.1 d,¶'8‰d,¶'8‰   >]m¹  ¤  è   d  FSÈÚjÝ_Æˆ$ó,Ï2€6•ã³ $Documentation/nvme-set-property.html      d,µ!ˆkd,µ!ˆk   >]jí  ¤  è   d  :ºý;Ô
­Šþ	j‰¶–¼+|£ #Documentation/nvme-set-property.txt       d,¶'8‰d,¶'8‰   >]mº  ¤  è   d  Áò@•‡Nc•Bûy’ÒrÚÉP"ð_ !Documentation/nvme-show-hostnqn.1 d,¶'8‰d,¶'8‰   >]m»  ¤  è   d  EN!»Yqi@úÓÕ]åmÞIÑ1öi $Documentation/nvme-show-hostnqn.html      d,µ!ˆkd,µ!ˆk   >]jð  ¤  è   d  ÷X&=†	&v9k"w7Ni	yj* #Documentation/nvme-show-hostnqn.txt       d,¶'8‰d,¶'8‰   >]m¼  ¤  è   d  q‰s‹.‚hnäÿçÌH!X Documentation/nvme-show-regs.1    d,¶'8‰d,¶'8‰   >]m½  ¤  è   d  L»ªˆ&_˜Ø«FÊP:ØðkÏù°• !Documentation/nvme-show-regs.html d,µ!ˆkd,µ!ˆk   >]jó  ¤  è   d  ;‰+9D8m}Óë[¶ÖÔÿÈ"|  Documentation/nvme-show-regs.txt  d,¶'8‰d,¶'8‰   >]m¾  ¤  è   d  >ùHØlêÑ}_î=ÉßãøÛ7È "Documentation/nvme-show-topology.1        d,¶'8‰d,¶'8‰   >]m¿  ¤  è   d  GÿHm‰ýoÈA!¦$È©"J|#> %Documentation/nvme-show-topology.html     d,µ!ˆkd,µ!ˆk   >]jö  ¤  è   d  6ðX?¼6”ƒ›«TyðåŠ”"Z $Documentation/nvme-show-topology.txt      d,¶'8‰d,¶'8‰   >]mÀ  ¤  è   d  Æ§™*„îÎoNµäžÂ"À9 Documentation/nvme-smart-log.1    d,¶'8‰d,¶'8‰   >]mÁ  ¤  è   d  Läiƒm¯ÃGäˆ«¿Bþœ(M}: !Documentation/nvme-smart-log.html d,µ!ˆkd,µ!ˆk   >]jù  ¤  è   d  ÔwÐQ3o­Û.ã‡•æy”`  Documentation/nvme-smart-log.txt  d,¶'8‰d,¶'8‰   >]mÂ  ¤  è   d  u;êí¨ÔI	­Â¥-RáUüêö@ $Documentation/nvme-subsystem-reset.1      d,¶'8‰d,¶'8‰   >]mÃ  ¤  è   d  E‘Xc¨ mk–2H>göÞ™¯™¯éª  'Documentation/nvme-subsystem-reset.html   d,µ!ˆkd,µ!ˆk   >]jü  ¤  è   d  Ü"g¬Ý·š K´¢âçVS	kç2• &Documentation/nvme-subsystem-reset.txt    d,µ!ˆkd,µ!ˆk   >]jý  ¤  è   d  < Pc@ãW)›N¤˜ú9ÅèçÂ+9A /Documentation/nvme-supported-cap-config-log.txt   d,¶'8‰d,¶'8‰   >]mÄ  ¤  è   d  Þàˆ0œP%+eRá^Ýôà(¤ü (Documentation/nvme-supported-log-pages.1  d,¶'8‰d,¶'8‰   >]mÅ  ¤  è   d  Hlù@éE=?AÄ¯ýw—6†©Äþš +Documentation/nvme-supported-log-pages.html       d,¶'8‰d,¶'8‰   >]mÆ  ¤  è   d  óø
¥ø 9l…táë¤‰åò¸Óò *Documentation/nvme-supported-log-pages.txt        d,¶'8‰d,¶'8‰   >]mÇ  ¤  è   d  I˜ü2C/„yÑj¾Î>AÜ,iÑÑ "Documentation/nvme-telemetry-log.1        d,¶'8‰d,¶'8‰   >]mÈ  ¤  è   d  KJÄT.Çáe+Ñ)ÇðeÝûûð %Documentation/nvme-telemetry-log.html     d,µ!ˆkd,µ!ˆk   >]k  ¤  è   d  ÃÏmœQ=¶‚Êé1s(âopáÏ¢ $Documentation/nvme-telemetry-log.txt      d,¶'8‰d,¶'8‰   >]mÉ  ¤  è   d  ëÉ—•†ˆ¨ýà’~Š#¬û°Ì|½ :Documentation/nvme-toshiba-clear-pcie-correctable-errors.1        d,¶'8‰d,¶'8‰   >]mÊ  ¤  è   d  F0ÅÊ¥ì>HXþ­«ï¸`ª‹¸< =Documentation/nvme-toshiba-clear-pcie-correctable-errors.html     d,µ!ˆkd,µ!ˆk   >]k  ¤  è   d  ÔXq ~†m[²ÜißgmË@—Ó <Documentation/nvme-toshiba-clear-pcie-correctable-errors.txt      d,¶'8‰d,¶'8‰   >]mË  ¤  è   d  T™M»ù†–)ÏG^ÆÏF/;¬ ,Documentation/nvme-toshiba-vs-internal-log.1      d,¶'8‰d,¶'8‰   >]mÌ  ¤  è   d  Lõ*œóM0º•¨/.Zþs‰ /Documentation/nvme-toshiba-vs-internal-log.html   d,µ!ˆkd,µ!ˆk   >]k	  ¤  è   d  fÓÀ@©î/ü\c
|^™º1 .Documentation/nvme-toshiba-vs-internal-log.txt    d,¶'8‰d,¶'8‰   >]mÍ  ¤  è   d  õ°HÕŽ3õ/`#ÕnQ}Â7b¹]† -Documentation/nvme-toshiba-vs-smart-add-log.1     d,¶'8‰d,¶'8‰   >]mÎ  ¤  è   d  KîÊ²á¶Î±eŠP¡^u¹t+ 0Documentation/nvme-toshiba-vs-smart-add-log.html  d,µ!ˆkd,µ!ˆk   >]k  ¤  è   d  Ž¤Óàmª‡…P!‚\ºÆ›/• /Documentation/nvme-toshiba-vs-smart-add-log.txt   d,¶'8‰d,¶'8‰   >]mÏ  ¤  è   d  &«ÆëÆTîë*ÇøÿuûÈÕp 'Documentation/nvme-transcend-badblock.1   d,¶'8‰d,¶'8‰   >]mÐ  ¤  è   d  Fø«X÷ï'FtNôˆ¸F~µš *Documentation/nvme-transcend-badblock.html        d,µ!ˆkd,µ!ˆk   >]k  ¤  è   d  ÷ˆ€vÃç¹þÇœo“ª_)Dkà )Documentation/nvme-transcend-badblock.txt d,¶'8‰d,¶'8‰   >]mÑ  ¤  è   d  PØúÑ›¨_)¬´¡òÝDe›xmgh *Documentation/nvme-transcend-healthvalue.1        d,¶'8‰d,¶'8‰   >]mÒ  ¤  è   d  G&^^m<1É#’R<†;åÿa= -Documentation/nvme-transcend-healthvalue.html     d,µ!ˆkd,µ!ˆk   >]k  ¤  è   d  *J}RñMÎ°˜£w6Qí…2i`ç ,Documentation/nvme-transcend-healthvalue.txt      d,¶'8‰d,¶'8‰   >]mÓ  ¤  è   d  ƒO¦RÚæždXæÑaé·VBì Þ Documentation/nvme-verify.1       d,¶'8‰d,¶'8‰   >]mÔ  ¤  è   d  Sö¢›r–<Åœ
~­K~V&éV Documentation/nvme-verify.html    d,¶'8‰d,¶'8‰   >]mÕ  ¤  è   d  †<€9¦`S–ˆë‡]Ç54k‚ŸN Documentation/nvme-verify.txt     d,¶'8‰d,¶'8‰   >]mÖ  ¤  è   d  žÉôH	9»((Ø¼¨øP$8Pv 5Documentation/nvme-virtium-save-smart-to-vtview-log.1     d,¶'8‰d,¶'8‰   >]m×  ¤  è   d  R±ü@W÷gé"?µÇ¢¢¶ÓM“¸ 8Documentation/nvme-virtium-save-smart-to-vtview-log.html  d,µ!ˆkd,µ!ˆk   >]k  í  è   d  
ð1:ÃZ"íˆ]gÞ¥ÿs 7Documentation/nvme-virtium-save-smart-to-vtview-log.txt   d,¶'8‰d,¶'8‰   >]mØ  ¤  è   d  ‹œ»9§X&²×:`D¬ý-å *Documentation/nvme-virtium-show-identify.1        d,¶'8‰d,¶'8‰   >]mÙ  ¤  è   d  G[¯ýÆ[³ªRºá±àU„€a<PÅ -Documentation/nvme-virtium-show-identify.html     d,µ!ˆkd,µ!ˆk   >]k  í  è   d  c\á“?<eÅåh=%_vÜÛ; ,Documentation/nvme-virtium-show-identify.txt      d,¶'8‰d,¶'8‰   >]mÚ  ¤  è   d  «),ª§l	rÎ¤Yý¢¢1KA !Documentation/nvme-wdc-cap-diag.1 d,¶'8‰d,¶'8‰   >]mÛ  ¤  è   d  MÅÅ—ÆÌ_.z|»K1Á‘’ $Documentation/nvme-wdc-cap-diag.html      d,µ!ˆkd,µ!ˆk   >]k  ¤  è   d  ›”9ê¦€crúËÆí™ùvé¿®& #Documentation/nvme-wdc-cap-diag.txt       d,¶'8‰d,¶'8‰   >]mÜ  ¤  è   d  iÎñ-ºq!GËG§æò³g·eo`Ë %Documentation/nvme-wdc-capabilities.1     d,¶'8‰d,¶'8‰   >]mÝ  ¤  è   d  EÆê}­`q¯®ÉÁd(u‚ÿ<•^ (Documentation/nvme-wdc-capabilities.html  d,µ!ˆkd,µ!ˆk   >]k!  ¤  è   d  @…›µðÊ#ªE+*h5—päið 'Documentation/nvme-wdc-capabilities.txt   d,¶'8‰d,¶'8‰   >]mÞ  ¤  è   d  ýrìð‘ÜÐTc^Žñ8ùùbˆ‰ *Documentation/nvme-wdc-clear-assert-dump.1        d,¶'8‰d,¶'8‰   >]mß  ¤  è   d  FÒ–¯ªÇoç0•ìþâ3ô‚ÃjßŽ -Documentation/nvme-wdc-clear-assert-dump.html     d,µ!ˆkd,µ!ˆk   >]k$  ¤  è   d  Î¥u–á­—iŸ9[ày*7²X8Ù ,Documentation/nvme-wdc-clear-assert-dump.txt      d,¶'8‰d,¶'8‰   >]mà  ¤  è   d  tÄ‹5jH{³/xn­ãpœ5^Úé 2Documentation/nvme-wdc-clear-fw-activate-history.1        d,¶'8‰d,¶'8‰   >]má  ¤  è   d  Fò[mÛLf,Âí>{o-¯#0® 5Documentation/nvme-wdc-clear-fw-activate-history.html     d,µ!ˆkd,µ!ˆk   >]k'  ¤  è   d  õP¾“WGeN<ß'œùNÄ„C~9 4Documentation/nvme-wdc-clear-fw-activate-history.txt      d,µ!ˆkd,µ!ˆk   >]k(  ¤  è   d  |nY‰ßêÄAæ6€Áy(P'mÿÜx (Documentation/nvme-wdc-clear-pcie-corr.1  d,µ!B‘€d,µ!B‘€   >]k)  ¤  è   d  D">ŠJžÞ:ÑÀ;ÛƒðdjÄA +Documentation/nvme-wdc-clear-pcie-corr.html       d,¶'u’4d,¶'u’4   >]mâ  ¤  è   d  ¶­º³¡sÈ=ÄµÄâÊxáj+%ñ 6Documentation/nvme-wdc-clear-pcie-correctable-errors.1    d,¶'u’4d,¶'u’4   >]mã  ¤  è   d  GA”-_K‰X

Ýmádè; 9Documentation/nvme-wdc-clear-pcie-correctable-errors.html d,µ!B‘€d,µ!B‘€   >]k,  ¤  è   d  GˆñüFCx=Fç6!(|ýF 8Documentation/nvme-wdc-clear-pcie-correctable-errors.txt  d,¶'u’4d,¶'u’4   >]mä  ¤  è   d  Ú©Rá¯D¶,ÇX—åå¾j–º 1Documentation/nvme-wdc-cloud-SSD-plugin-version.1 d,¶'u’4d,¶'u’4   >]må  ¤  è   d  F>Åœu£ÀPn±I%â1>ÄN˜ôšÁ 4Documentation/nvme-wdc-cloud-SSD-plugin-version.html      d,µ!B‘€d,µ!B‘€   >]k/  ¤  è   d  ¸?í\Õ–*Â÷¼ç<½¬¤¶:1›Ö^ 3Documentation/nvme-wdc-cloud-SSD-plugin-version.txt       d,¶'u’4d,¶'u’4   >]mæ  ¤  è   d  ÓOÛ?l0^›^A#Z¨D‡X¯} /Documentation/nvme-wdc-cloud-boot-SSD-version.1   d,¶'u’4d,¶'u’4   >]mç  ¤  è   d  F5†ÿ°ŽÇ,¤wÑÒ”ðHI|pñ 2Documentation/nvme-wdc-cloud-boot-SSD-version.html        d,µ!B‘€d,µ!B‘€   >]k2  ¤  è   d  ¯£ñââ5’#/¢âêšË¯w 1Documentation/nvme-wdc-cloud-boot-SSD-version.txt d,¶'u’4d,¶'u’4   >]mè  ¤  è   d  1²`D^TG­^ð\áb—ƒïwžè¬ )Documentation/nvme-wdc-drive-essentials.1 d,¶'u’4d,¶'u’4   >]mé  ¤  è   d  JXßp»Ë´»E#MQDÆ"à¡Aúe ,Documentation/nvme-wdc-drive-essentials.html      d,µ!B‘€d,µ!B‘€   >]k5  ¤  è   d  ‚Y²xw¥†M„XÁn-î¾®´°ô +Documentation/nvme-wdc-drive-essentials.txt       d,¶'u’4d,¶'u’4   >]mê  ¤  è   d  i·•§Š‹\38I?u-¡ÔÊ¨Ä?Þ' "Documentation/nvme-wdc-drive-log.1        d,¶'u’4d,¶'u’4   >]më  ¤  è   d  J_Gáÿpˆ^³ó~ï®`‹j| %Documentation/nvme-wdc-drive-log.html     d,µ!B‘€d,µ!B‘€   >]k8  ¤  è   d  E<jXšæ™ðŠ;~j‘	t›e.â $Documentation/nvme-wdc-drive-log.txt      d,¶'u’4d,¶'u’4   >]mì  ¤  è   d  ÎNã÷oúoœèVAï×S‹ÛÒ %Documentation/nvme-wdc-drive-resize.1     d,¶'u’4d,¶'u’4   >]mí  ¤  è   d  HhWØÀ	´÷8\·±=§J~ (Documentation/nvme-wdc-drive-resize.html  d,µ!B‘€d,µ!B‘€   >]k;  ¤  è   d  ‡KàË$ô`¾¢]ÃÛò+åC+e 'Documentation/nvme-wdc-drive-resize.txt   d,¶'u’4d,¶'u’4   >]mî  ¤  è   d  Ü´†£j~Hþ{Ù_[¡Zê2ð $Documentation/nvme-wdc-enc-get-log.1      d,¶'u’4d,¶'u’4   >]mï  ¤  è   d  KŽèj÷óÕêYê;"çy^åù‹¼îs^ 'Documentation/nvme-wdc-enc-get-log.html   d,µ!B‘€d,µ!B‘€   >]k>  ¤  è   d  
®“§«XÍ·ÛYzçÝ•zNó°± &Documentation/nvme-wdc-enc-get-log.txt    d,¶'u’4d,¶'u’4   >]mð  ¤  è   d  "ÈªÑ")æmC­¿äkp*L 'Documentation/nvme-wdc-get-crash-dump.1   d,¶'u’4d,¶'u’4   >]mñ  ¤  è   d  K	F!6Ôj›WókP%ëMŽ`À¥A *Documentation/nvme-wdc-get-crash-dump.html        d,µ!B‘€d,µ!B‘€   >]kA  ¤  è   d  í¬¤8­Ï¡ù÷V"žPv )Documentation/nvme-wdc-get-crash-dump.txt d,¶'u’4d,¶'u’4   >]mò  ¤  è   d  
½+Ö—æË\ŽÉw)ËÙ‰ÛEÂ 1Documentation/nvme-wdc-get-dev-capabilities-log.1 d,¶'u’4d,¶'u’4   >]mó  ¤  è   d  I¶(+pµ¼Óê*x<¢õ:‡;8;A 4Documentation/nvme-wdc-get-dev-capabilities-log.html      d,µ!B‘€d,µ!B‘€   >]kD  ¤  è   d  Å!ˆÙRz‰¬2Vhr3Õ:Ñ 3Documentation/nvme-wdc-get-dev-capabilities-log.txt       d,¶'u’4d,¶'u’4   >]mô  ¤  è   d  
åj*{MY6¨úkºP_,M¨ )Documentation/nvme-wdc-get-drive-status.1 d,¶'u’4d,¶'u’4   >]mõ  ¤  è   d  M#´i0µAwáawp5tzzöÃAË ,Documentation/nvme-wdc-get-drive-status.html      d,µ!B‘€d,µ!B‘€   >]kG  ¤  è   d  fâ±Yióˆ?ÓðÁ
ŒÕ¬&)~û +Documentation/nvme-wdc-get-drive-status.txt       d,¶'u’4d,¶'u’4   >]mö  ¤  è   d  	ö/<~Ùª±­™*pPÄó5áq /Documentation/nvme-wdc-get-error-recovery-log.1   d,¶'u’4d,¶'u’4   >]m÷  ¤  è   d  I–(O¶–l[:zÊ{ÿQEÊš‡‹C 2Documentation/nvme-wdc-get-error-recovery-log.html        d,µ!B‘€d,µ!B‘€   >]kJ  ¤  è   d  ­*Ó`_{0]P›žÒ©ZTCæÒ 1Documentation/nvme-wdc-get-error-recovery-log.txt d,¶'u’4d,¶'u’4   >]mø  ¤  è   d  	Fhø9ƒÓÃÂHÊ/¿fâ³žÞ¾ 0Documentation/nvme-wdc-get-latency-monitor-log.1  d,¶'u’4d,¶'u’4   >]mù  ¤  è   d  H|‰§Î;‘ÚÞ1&v-fÉ<þ˜þ" 3Documentation/nvme-wdc-get-latency-monitor-log.html       d,µ!B‘€d,µ!B‘€   >]kM  ¤  è   d  Õý¤©2øëÝúN½M[Ã5• 2Documentation/nvme-wdc-get-latency-monitor-log.txt        d,¶'u’4d,¶'u’4   >]mú  ¤  è   d  >ÖöÇªÖwg1AÞ$¢"DÐ÷k 'Documentation/nvme-wdc-get-pfail-dump.1   d,¶'u’4d,¶'u’4   >]mû  ¤  è   d  K2Ï^”ÊrÓËŠ•8,¿ó˜~Ò• *Documentation/nvme-wdc-get-pfail-dump.html        d,µ!B‘€d,µ!B‘€   >]kP  ¤  è   d  chŒô”€Ðˆhº:r!VüS )Documentation/nvme-wdc-get-pfail-dump.txt d,¶'u’4d,¶'u’4   >]mü  ¤  è   d  
ðf¾T‹Uœƒç¶§¶@ç­ 1Documentation/nvme-wdc-get-unsupported-reqs-log.1 d,¶'u’4d,¶'u’4   >]mý  ¤  è   d  IÀª‹²…ñj÷ý:Š®BLÖ,øÆü 4Documentation/nvme-wdc-get-unsupported-reqs-log.html      d,µ!B‘€d,µ!B‘€   >]kS  ¤  è   d  Ðð(f]P)Ìì)Õ–Ï¶	÷P†2 3Documentation/nvme-wdc-get-unsupported-reqs-log.txt       d,¶'u’4d,¶'u’4   >]mþ  ¤  è   d  Ó±˜¤³ D9¦¸ô‰ÛðDãz^"  Documentation/nvme-wdc-id-ctrl.1  d,¶'u’4d,¶'u’4   >]mÿ  ¤  è   d  ML=WýpÑDj÷é8²æ:@¿2Á #Documentation/nvme-wdc-id-ctrl.html       d,µ!B‘€d,µ!B‘€   >]kV  ¤  è   d  0©Æ¯å¬”8æNu£et—5·õA "Documentation/nvme-wdc-id-ctrl.txt        d,¶'u’4d,¶'u’4   >]n   ¤  è   d  	ÇKôÑm˜)È°e#ÝÀ½%Õ•iÊ +Documentation/nvme-wdc-log-page-directory.1       d,¶'u’4d,¶'u’4   >]n  ¤  è   d  I"!w=kçAæüUjÖR³Ý‹Óöu .Documentation/nvme-wdc-log-page-directory.html    d,µ!B‘€d,µ!B‘€   >]kY  ¤  è   d  rMa’ð@ýX—¬šö|ªYÇÉ¬
 -Documentation/nvme-wdc-log-page-directory.txt     d,¶'u’4d,¶'u’4   >]n  ¤  è   d  xCC	“F‡ò|÷ÉO¡"›lô¶& )Documentation/nvme-wdc-namespace-resize.1 d,¶'u’4d,¶'u’4   >]n  ¤  è   d  KDµ>‘¨*ß&`'a½»¬ëëx ,Documentation/nvme-wdc-namespace-resize.html      d,µ!B‘€d,µ!B‘€   >]k\  ¤  è   d  ¨qüxr2mçªÚüYp­h´\Š +Documentation/nvme-wdc-namespace-resize.txt       d,¶'u’4d,¶'u’4   >]n  ¤  è   d  
‘uØþõ¸’Û‚ítƒŽèra©GàY &Documentation/nvme-wdc-purge-monitor.1    d,¶'u’4d,¶'u’4   >]n  ¤  è   d  Ly!•I/ ÏXrkŽjß¼Ýù;’… )Documentation/nvme-wdc-purge-monitor.html d,µ!B‘€d,µ!B‘€   >]k_  ¤  è   d  Ì1<±’‘¯q¦¾ÑFJ´ƒ‰Èÿí (Documentation/nvme-wdc-purge-monitor.txt  d,¶'u’4d,¶'u’4   >]n  ¤  è   d  Wþ6Á¶~½5¥d$Ju]´Oþ Documentation/nvme-wdc-purge.1    d,¶'u’4d,¶'u’4   >]n  ¤  è   d  GBëÀ{ØMeÙÄöÅj³·1e !Documentation/nvme-wdc-purge.html d,µ!B‘€d,µ!B‘€   >]kb  ¤  è   d  •ÂÝ,‘@q›…ñ¿Ö¹Qº/æ  Documentation/nvme-wdc-purge.txt  d,µ!B‘€d,µ!B‘€   >]kc  ¤  è   d  2Pþ=å·aÁY¶êÝÀ”sªU# &Documentation/nvme-wdc-smart-add-log.1    d,µ!B‘€d,µ!B‘€   >]kd  ¤  è   d  ŠTçñÕ`Çq­PK²#úŽ¢¢ªM )Documentation/nvme-wdc-smart-add-log.html d,¶'u’4d,¶'u’4   >]n  ¤  è   d  
¨çO´G4Ë¦ˆ’ÕèØªY %Documentation/nvme-wdc-vs-cloud-log.1     d,¶'u’4d,¶'u’4   >]n	  ¤  è   d  Jz
f·bº8H‘Ÿg$ðJº (Documentation/nvme-wdc-vs-cloud-log.html  d,µ!B‘€d,µ!B‘€   >]kg  ¤  è   d  &žîä!ö¥&óN(ñ8`Êü H†V 'Documentation/nvme-wdc-vs-cloud-log.txt   d,¶'u’4d,¶'u’4   >]n
  ¤  è   d  
¥ÊeÞÜ{¿Žü¥ð1¦ëŽTWqð &Documentation/nvme-wdc-vs-device-waf.1    d,¶'u’4d,¶'u’4   >]n  ¤  è   d  J|¶oe Ó¢&èCÚÖˆ†ÿÓ@‘ûb )Documentation/nvme-wdc-vs-device-waf.html d,µ!B‘€d,µ!B‘€   >]kj  ¤  è   d  (U	ZMN æ^™Ÿ\ÄÌ:õ‘P (Documentation/nvme-wdc-vs-device-waf.txt  d,¶'u’4d,¶'u’4   >]n  ¤  è   d  o*äÝ‘›M¼€|$Œ¢ß@Ü!’Í˜~ &Documentation/nvme-wdc-vs-drive-info.1    d,¶'u’4d,¶'u’4   >]n  ¤  è   d  Ht%½_X<÷ÿqŠvñí„ÛœJ )Documentation/nvme-wdc-vs-drive-info.html d,µ!B‘€d,µ!B‘€   >]km  ¤  è   d  •ý×¢2»”šçùÔÿövn[ú„ (Documentation/nvme-wdc-vs-drive-info.txt  d,¶'u’4d,¶'u’4   >]n  ¤  è   d  '´çò™ŒêÔÚzXuÐ'ŽÑ• 3Documentation/nvme-wdc-vs-error-reason-identifier.1       d,¶'u’4d,¶'u’4   >]n  ¤  è   d  Lþ›|yÔƒŒÖ±G‘(ïÑG³ù„Š 6Documentation/nvme-wdc-vs-error-reason-identifier.html    d,µ!B‘€d,µ!B‘€   >]kp  ¤  è   d  UMgY|I^MË¨~Q“ŽR3Mm 5Documentation/nvme-wdc-vs-error-reason-identifier.txt     d,¶'u’4d,¶'u’4   >]n  ¤  è   d  Íg^ŒPî¹¼19q¦›˜ÕÁ—V.Ö /Documentation/nvme-wdc-vs-fw-activate-history.1   d,¶'u’4d,¶'u’4   >]n  ¤  è   d  RD•4o!?ÔÚ½ÚÒ  czUL 2Documentation/nvme-wdc-vs-fw-activate-history.html        d,µ!B‘€d,µ!B‘€   >]ks  ¤  è   d  ä0ÆíêÿÒ9WË¥C@½Î§ç V 1Documentation/nvme-wdc-vs-fw-activate-history.txt d,¶'u’4d,¶'u’4   >]n  ¤  è   d  
›LFÖýïø=OD4k¼‰ÙÀìé¥ &Documentation/nvme-wdc-vs-hw-rev-log.1    d,¶'u’4d,¶'u’4   >]n  ¤  è   d  Jkí}Ùƒ}‘²D¢m÷s°j#þ )Documentation/nvme-wdc-vs-hw-rev-log.html d,µ!B‘€d,µ!B‘€   >]kv  ¤  è   d  Å3]•Ëg¶êG7Yçy"1·ã (Documentation/nvme-wdc-vs-hw-rev-log.txt  d,¶'u’4d,¶'u’4   >]n  ¤  è   d  ´•ÑJaö/N½°pfU"Ìý|Jì (Documentation/nvme-wdc-vs-internal-log.1  d,¶'u’4d,¶'u’4   >]n  ¤  è   d  Ze[ucæ>|f"î0Lîˆs¤?:¦W +Documentation/nvme-wdc-vs-internal-log.html       d,µ!š•d,µ!š•   >]ky  ¤  è   d  øO½ãŽÌ›Át ‰³Šòø®>? *Documentation/nvme-wdc-vs-internal-log.txt        d,¶'u’4d,¶'u’4   >]n  ¤  è   d  	Ÿ$Pk½
.*ÿô7öa#VHæp &Documentation/nvme-wdc-vs-nand-stats.1    d,¶'u’4d,¶'u’4   >]n  ¤  è   d  H÷Ã©Ä¹O´
§6~¼rŽÌ™_{øGU )Documentation/nvme-wdc-vs-nand-stats.html d,µ!š•d,µ!š•   >]k|  ¤  è   d  DÌB(˜.çæüeÁpôë{6ùAZV (Documentation/nvme-wdc-vs-nand-stats.txt  d,¶'u’4d,¶'u’4   >]n  ¤  è   d  Ð?~&¢*ÚIÆú Æ%5¦~Ôw )Documentation/nvme-wdc-vs-smart-add-log.1 d,¶'u’4d,¶'u’4   >]n  ¤  è   d  V÷Ìg— PßIï¶¶¶¦ r¥ ,Documentation/nvme-wdc-vs-smart-add-log.html      d,µ!š•d,µ!š•   >]k  ¤  è   d  ‘}á¬û³8}."×•Ù”G5Ý…U +Documentation/nvme-wdc-vs-smart-add-log.txt       d,¶'u’4d,¶'u’4   >]n  ¤  è   d  6´^^C˜¬A?²íÙð"È¥7æÅ 7Documentation/nvme-wdc-vs-telemetry-controller-option.1   d,¶'u’4d,¶'u’4   >]n  ¤  è   d  L³zRiWMhóGüF·((¯Ð&m :Documentation/nvme-wdc-vs-telemetry-controller-option.html        d,µ!š•d,µ!š•   >]k‚  ¤  è   d  Œ~rŠø)7uþS)–lTG¬à8 9Documentation/nvme-wdc-vs-telemetry-controller-option.txt d,¶'u’4d,¶'u’4   >]n  ¤  è   d  Ú?Žó.ÒÄLcõ?>jN¢,Žä -Documentation/nvme-wdc-vs-temperature-stats.1     d,¶'u’4d,¶'u’4   >]n  ¤  è   d  Q]Bqˆ©]ŒRç	]zü¥gº›§Ï÷5 0Documentation/nvme-wdc-vs-temperature-stats.html  d,µ!š•d,µ!š•   >]k…  ¤  è   d  Ã 07O!
JÖ~½»úþ9ÚM /Documentation/nvme-wdc-vs-temperature-stats.txt   d,¶'u’4d,¶'u’4   >]n  ¤  è   d  Sk¬ä|µˆãŠP=ÿ¨¤e9ÓN½  Documentation/nvme-write-uncor.1  d,¶'u’4d,¶'u’4   >]n  ¤  è   d  H)á ƒ]ƒÕÍTÎÃ¡Qúõœ½hÝò #Documentation/nvme-write-uncor.html       d,µ!š•d,µ!š•   >]kˆ  ¤  è   d  8¯16Ll4«|&’¹Á!/wš,±Ý "Documentation/nvme-write-uncor.txt        d,¶'²›Id,¶'²›I   >]n   ¤  è   d  ‰™ãª*"o8cZhpq$?À !Documentation/nvme-write-zeroes.1 d,¶'²›Id,¶'²›I   >]n!  ¤  è   d  V„Òl}¡‹aU|(°»ìüA $Documentation/nvme-write-zeroes.html      d,µ!š•d,µ!š•   >]k‹  ¤  è   d  	kÏÊÃoèÁ\44r¦;£•®Lë #Documentation/nvme-write-zeroes.txt       d,¶'²›Id,¶'²›I   >]n"  ¤  è   d  úi­M¥ÖRå¥+Ê§ìã
šh^(f Documentation/nvme-write.1        d,¶'²›Id,¶'²›I   >]n#  ¤  è   d  b¨ˆÝ¦¨ÑdïÅÎk
Ÿßâ Documentation/nvme-write.html     d,¶'²›Id,¶'²›I   >]n$  ¤  è   d  }vË×¬wÁÿ_Ä¼De[¿ Ù Documentation/nvme-write.txt      d,¶'²›Id,¶'²›I   >]n%  ¤  è   d  
¡P4ï0îTÕï®¶ŽJä ÄÈo’ *Documentation/nvme-zns-changed-zone-list.1        d,¶'²›Id,¶'²›I   >]n&  ¤  è   d  J2-ÛŸ’ñÕ¦ï¤}¥à®l!Êuk -Documentation/nvme-zns-changed-zone-list.html     d,µ!š•d,µ!š•   >]k‘  ¤  è   d  ¾–&À^ÏPŽ=³XfÇ¶³ÜiC¤- ,Documentation/nvme-zns-changed-zone-list.txt      d,¶'²›Id,¶'²›I   >]n'  ¤  è   d  
Ã£9\ì&•)ýMÝ	–çºàvs #Documentation/nvme-zns-close-zone.1       d,¶'²›Id,¶'²›I   >]n(  ¤  è   d  Jß
ýÇ}BÇ×mH-óeä¹‡· &Documentation/nvme-zns-close-zone.html    d,µ!š•d,µ!š•   >]k”  ¤  è   d  Ï’ÈY
Eü )PÓ(opX*ÇaÐÒ %Documentation/nvme-zns-close-zone.txt     d,¶'²›Id,¶'²›I   >]n)  ¤  è   d  
Ø'Ä—Ä™åÚ m˜õ¡~^|U $Documentation/nvme-zns-finish-zone.1      d,¶'²›Id,¶'²›I   >]n*  ¤  è   d  Jô¼ Ø9à6Ž)^g(]‡p¼	M 'Documentation/nvme-zns-finish-zone.html   d,µ!š•d,µ!š•   >]k—  ¤  è   d  ã( ý^UsjJ˜©çÞ²B%ÓŽ &Documentation/nvme-zns-finish-zone.txt    d,¶'²›Id,¶'²›I   >]n+  ¤  è   d  
[K‘$U’§}jðÍÝÁ2rW¨|ß  Documentation/nvme-zns-id-ctrl.1  d,¶'²›Id,¶'²›I   >]n,  ¤  è   d  ImR„Ï³é,x8YxÞ® 2Owù| #Documentation/nvme-zns-id-ctrl.html       d,µ!š•d,µ!š•   >]kš  ¤  è   d  –ç½[ª²RR0•• ¤Ô&É·‡Í "Documentation/nvme-zns-id-ctrl.txt        d,¶'²›Id,¶'²›I   >]n-  ¤  è   d  æ€N‚oÊ­²q+6Ð¸‹?#“» Documentation/nvme-zns-id-ns.1    d,¶'²›Id,¶'²›I   >]n.  ¤  è   d  Kæ>“7ãp’¥’'õj?Ó„ £ !Documentation/nvme-zns-id-ns.html d,µ!š•d,µ!š•   >]k  ¤  è   d  yž;gSébà)ÓRÔmª_  Documentation/nvme-zns-id-ns.txt  d,¶'²›Id,¶'²›I   >]n/  ¤  è   d  
Õˆ”ïo€¬€P2²S%C.Tâh %Documentation/nvme-zns-offline-zone.1     d,¶'²›Id,¶'²›I   >]n0  ¤  è   d  JóÏHäÓ[R7•ŒÕ¼»1æú%m (Documentation/nvme-zns-offline-zone.html  d,µ!š•d,µ!š•   >]k   ¤  è   d  ãX
g$>ã- —„]DŒ÷¦º 'Documentation/nvme-zns-offline-zone.txt   d,¶'²›Id,¶'²›I   >]n1  ¤  è   d  ¡1ÆmÉï.Ê¨õÝ­àæ¡4ÿ×„Â "Documentation/nvme-zns-open-zone.1        d,¶'²›Id,¶'²›I   >]n2  ¤  è   d  Ke”ÂêkT[GØã½aE-rÒH; %Documentation/nvme-zns-open-zone.html     d,µ!š•d,µ!š•   >]k£  ¤  è   d  ',³UVÈŠ`ò!¦‡ëö#ßM´ $Documentation/nvme-zns-open-zone.txt      d,¶'²›Id,¶'²›I   >]n3  ¤  è   d  *?PÖ$kNÕQUÅ8ø<¶É59 %Documentation/nvme-zns-report-zones.1     d,¶'²›Id,¶'²›I   >]n4  ¤  è   d  WIß˜–7ì­+2­‡rt^06’„ (Documentation/nvme-zns-report-zones.html  d,µ!š•d,µ!š•   >]k¦  ¤  è   d  	Ä5Õí¤IµWåÂçq*%u©+‹ 'Documentation/nvme-zns-report-zones.txt   d,¶'²›Id,¶'²›I   >]n5  ¤  è   d  
ïõ4##¹nñ¾þª&+Ç@Ö"p #Documentation/nvme-zns-reset-zone.1       d,¶'²›Id,¶'²›I   >]n6  ¤  è   d  K‹@¹¤vö È!zÆÄÓÃ\"Ù &Documentation/nvme-zns-reset-zone.html    d,µ!š•d,µ!š•   >]k©  ¤  è   d  %%Ð ÌýJ‰Ùãþ¤ðÇrl~ù] %Documentation/nvme-zns-reset-zone.txt     d,¶'²›Id,¶'²›I   >]n7  ¤  è   d  ÉhëÐói¥÷âŸ}Ž,œþdÅÌ &Documentation/nvme-zns-set-zone-desc.1    d,¶'²›Id,¶'²›I   >]n8  ¤  è   d  L$GK©9ÉzÒWq¾«ã¶à¬(ý_ )Documentation/nvme-zns-set-zone-desc.html d,µ!š•d,µ!š•   >]k¬  ¤  è   d  ×Ýuš!#Öß3]áb†:§oS“è (Documentation/nvme-zns-set-zone-desc.txt  d,¶'²›Id,¶'²›I   >]n9  ¤  è   d  ì»)jk-Ï_Éªí¯
P­šßIútc $Documentation/nvme-zns-zone-append.1      d,¶'²›Id,¶'²›I   >]n:  ¤  è   d  RÍ&eÝ­Ïµµ¯oÏúJCígÔ†l 'Documentation/nvme-zns-zone-append.html   d,µ!š•d,µ!š•   >]k¯  ¤  è   d  ´eàû#}\à5j“çŸ{jiÚ:^µ &Documentation/nvme-zns-zone-append.txt    d,¶'²›Id,¶'²›I   >]n;  ¤  è   d  
È‚ó!¯ZÂþ#=xàˆósÚ  'Documentation/nvme-zns-zone-mgmt-recv.1   d,¶'²›Id,¶'²›I   >]n<  ¤  è   d  O%üU¸óñoÞ#Ú"þ/ŠrÐY® *Documentation/nvme-zns-zone-mgmt-recv.html        d,µ!š•d,µ!š•   >]k²  ¤  è   d  \Í˜éÃã!Â±-LaÐ>NC»Ä[ )Documentation/nvme-zns-zone-mgmt-recv.txt d,¶'²›Id,¶'²›I   >]n=  ¤  è   d  °he©QK<'X:¢›øÌQÄÆA 'Documentation/nvme-zns-zone-mgmt-send.1   d,¶'²›Id,¶'²›I   >]n>  ¤  è   d  PWú0q`Ž&Ð­Õk°6¡Ft *Documentation/nvme-zns-zone-mgmt-send.html        d,µ!š•d,µ!š•   >]kµ  ¤  è   d  ÂŒ»\ZŠ)“fbþN¡J†yÅ )Documentation/nvme-zns-zone-mgmt-send.txt d,µ!š•d,µ!š•   >]k¶  ¤  è   d  
bûˆ!Í¥„’îy6=áž”ÿ¯jÊÉ (Documentation/nvme-zns-zrwa-flush-zone.1  d,µ!š•d,µ!š•   >]k·  ¤  è   d  J58 ùÜˆ‰G}c›Pé„˜ú) +Documentation/nvme-zns-zrwa-flush-zone.html       d,µ!š•d,µ!š•   >]k¸  ¤  è   d  ÐO>rÊ/ÖG«)q÷@ÜöŒqÑíV *Documentation/nvme-zns-zrwa-flush-zone.txt        d,¶'²›Id,¶'²›I   >]n?  ¤  è   d  ?®;±œ0"»e‘¢iœÆÔ‘ Documentation/nvme.1      d,¶'²›Id,¶'²›I   >]n@  ¤  è   d  ´*ý¡ãšT9¨›TòòvÃ_šm©~9 Documentation/nvme.html   d,µ!š•d,µ!š•   >]k»  ¤  è   d  £‡Þ{ƒ}‘0#~ïY’‡é¦üµžàM Documentation/nvme.txt    d,µ!š•d,µ!š•   >]k¼  í  è   d  )‡§<Á+›û¬¾e£JäÚí_cv Documentation/update-docs.sh      d,µ!š•d,µ!š•   >]k½  ¤  è   d  FkÖ©2f÷HÖ¸„ùCOöbþ€¹Ü! LICENSE   d,µ!š•d,µ!š•   >]k¾  ¤  è   d  ‡Ño‘§Í¹ÿ±K*q.>à£ Makefile  d,¶'²›Id,¶'²›I   >]nA  ¤  è   d  0r™X`M¡uÛBç.ân«'æ\O 	README.md d,µ!š•d,µ!š•   >]kÃ      è   d   ·•«Ü‚ä]FÓÏØÇí‹:o| ccan/ccan/build_assert/LICENSE    d,µ!š•d,µ!š•   >]kÄ  ¤  è   d  F—ëæÉfƒgSEo}EüE®ñÝéH	 ccan/ccan/build_assert/_info      d,µ!š•d,µ!š•   >]kÅ  ¤  è   d  Ì¹ìØ@(ãûëÑ¿ œ<Wè¡“äVF %ccan/ccan/build_assert/build_assert.h     d,µ!š•d,µ!š•   >]kÇ      è   d   ·•«Ü‚ä]FÓÏØÇí‹:o| ccan/ccan/check_type/LICENSE      d,µ!š•d,µ!š•   >]kÈ  ¤  è   d  IÌBg4’’ëg~1)ØëÆ–K ccan/ccan/check_type/_info        d,µ!š•d,µ!š•   >]kÉ  ¤  è   d  	@ƒzï{6¨^Š.÷uÙ¢É,jÇ–Ä !ccan/ccan/check_type/check_type.h d,µ!š•d,µ!š•   >]kË      è   d   ·•«Ü‚ä]FÓÏØÇí‹:o| ccan/ccan/container_of/LICENSE    d,µ!š•d,µ!š•   >]kÌ  ¤  è   d  j±"íÔüýR“]9"}=e1Iì ccan/ccan/container_of/_info      d,µ!š•d,µ!š•   >]kÍ  ¤  è   d  ¶G£M…;Lsð(6êA4€äß‚) %ccan/ccan/container_of/container_of.h     d,µ!š•d,µ!š•   >]kÏ      è   d   ·•«Ü‚ä]FÓÏØÇí‹:o| ccan/ccan/endian/LICENSE  d,µ!š•d,µ!š•   >]kÐ  ¤  è   d  ‹ïå¨»Þu1dê mM‚É¼JŸc ccan/ccan/endian/_info    d,µ!š•d,µ!š•   >]kÑ  ¤  è   d  %¸7Sôß]1 Šµ±Tëãu×æ– ccan/ccan/endian/endian.h d,µ!š•d,µ!š•   >]kÓ      è   d   #TÑ)EÓ"õ}šDÂj$w
1	 ccan/ccan/list/LICENSE    d,µ!š•d,µ!š•   >]kÔ  ¤  è   d  ïÄóâ ¬ò2	|õ³©Caƒ
K ccan/ccan/list/_info      d,µ!š•d,µ!š•   >]kÕ  ¤  è   d  è'ú?å¬L¿BôŽqŸýCæ¥ ccan/ccan/list/list.c     d,µ!š•d,µ!š•   >]kÖ  ¤  è   d  ^ó¡S!Å•ïx°CÈ˜æôŒrV ccan/ccan/list/list.h     d,µ!š•d,µ!š•   >]kØ      è   d   ·•«Ü‚ä]FÓÏØÇí‹:o| ccan/ccan/str/LICENSE     d,µ!š•d,µ!š•   >]kÙ  ¤  è   d  KµyR_ªÁŽ¥ –²é¶ïóJp´ ccan/ccan/str/_info       d,µ!š•d,µ!š•   >]kÚ  ¤  è   d  BŒQ”B×’§|9¨Þ/Ä’K ccan/ccan/str/debug.c     d,µ!š•d,µ!š•   >]kÛ  ¤  è   d  ©$\Bì@eNP·'v˜‘µw
 ccan/ccan/str/str.c       d,µ!š•d,µ!š•   >]kÜ  ¤  è   d  FÙ¸MI¾<ó§ÇC_ý˜"üc#c ccan/ccan/str/str.h       d,µ!š•d,µ!š•   >]kÝ  ¤  è   d  ’ÁAÌaP¦to‡dË‡i:]Y ccan/ccan/str/str_debug.h d,µ!š•d,µ!š•   >]kß  ¤  è   d  ÿ‰Þ5G•ìz|Ú°|	)e=6T ccan/licenses/BSD-MIT     d,µ!š•d,µ!š•   >]kà  ¤  è   d  ïþ¹±æµ ñ;MÂ*W½{öB ccan/licenses/CC0 d,µ!š•d,µ!š•   >]ká  ¤  è   d  =K£µúUú‚ˆ1Ñ´(…ÓHmŒ ccan/meson.build  d,µ!š•d,µ!š•   >]kâ  ¤  è   d   ­PÙå]“"W¿Yˆ;î-²³ËšÝ	Û cmd.h     d,µ!¼£ªd,µ!¼£ª   >]kã  ¤  è   d  fÄ²oM\Hl"6få—Ô1DW cmd_handler.h     d,µ!¼£ªd,µ!¼£ª   >]kä  ¤  è   d  œjN	¨ i™/ôS£Î'¤âG common.h  d,µ!¼£ªd,µ!¼£ª   >]kæ  ¤  è   d  õº2®Áå 1½¢ˆ\»§DÌf completions/README        d,¶'²›Id,¶'²›I   >]nB  ¤  è   d  ŒÖwüÉðÌ4‡þ¶œ0€€¥R!—Ê completions/_nvme d,¶'²›Id,¶'²›I   >]nC  ¤  è   d  {Ûúã«@¨}*VX…¥Fà,æ¾[ó¬ #completions/bash-nvme-completion.sh       d,µ!¼£ªd,µ!¼£ª   >]ké  ¤  è   d  ‘¯1™!öTkstôÏ‚Ü¬=:û Ü define_cmd.h      d,µ!¼£ªd,µ!¼£ª   >]kë  ¤  è   d   ·ÏÚÁêˆÍ-Ì%“¬}ÊþD©oŽ etc/discovery.conf.in     dFCð'8ÇdFCð'8Ç   Jv5«  ¤  è   d  ™Ñ-qÌÄZn zMk»ÎÀâñâí2" 	fabrics.c dBs7	†á5dBs7	†á5   >uZè  ¤  è   d  ýœU“E¤‚Ü©gžºJÿÜÄ‰Îº› 	fabrics.h d,µ!¼£ªd,µ!¼£ª   >]kî  ¤  è   d  Ã5Nzú:CúÇ#Ç¢[¶€6i}| libnvme-wrap.c    d,µ!¼£ªd,µ!¼£ª   >]kï  í  è   d  eŒæ’IŠÚ»¤,Kyv‘#ÎÎ¯à– meson-vcs-tag.sh  dn+-7+ódn+-7+ó   >Š@5  ¤  è   d  "TLï*o˜;Â¿@‰¹æ .ÃÞàæ meson.build       d,¶'²›Id,¶'²›I   >]nF  ¤  è   d  ¶gyB®¨’ÂsÄ"¿…ÖÓ‚~Q-¡ meson_options.txt dBs7	†á5dBs7	†á5   >uZé  ¤  è   d  Ù4r‡ºkVÐ"²’LàÂ†Èú‘ nbft.c    dBs7	†á5dBs7	†á5   >uZê  ¤  è   d  ^	s?_c„ùÖ'nóFuÊ	¸8 nbft.h    dBs7	†á5dBs7	†á5   >uZë  ¤  è   d  #.E±Ê´ÁG ê:ä¿Æ3¸)¬$E nvme-builtin.h    d,µ!¼£ªd,µ!¼£ª   >]kó  ¤  è   d  Mö8äÐ=Þ€Í‡nê]›©y	› nvme-models.c     d,µ!¼£ªd,µ!¼£ª   >]kô  ¤  è   d   „-ÌLÌ$»["ò#A…Déi°xö³ nvme-models.h     d,¶'²›Id,¶'²›I   >]nJ  ¤  è   d |Ïë~HOK¶œñ}Uwú`tÏi·² nvme-print-json.c d,¶'²›Id,¶'²›I   >]nK  ¤  è   d  6AÈOmó“Bo‹tXæT?¸ nvme-print-json.h d,¶'ï¤^d,¶'ï¤^   >]nL  ¤  è   d Âùti“¤´ÑB~×ð(ÿ¢»6é‡6e nvme-print.c      dBs7	†á5dBs7	†á5   >uZì  ¤  è   d  ‹‘n+w2ûÅ\9N;2ÙÊçÊLã nvme-print.h      d,µ!¼£ªd,µ!¼£ª   >]k÷  ¤  è   d  oŽ@Ýµ²ãš5´ !(þªIˆ¼%± nvme-rpmb.c       d,¶'ï¤^d,¶'ï¤^   >]nN  ¤  è   d  0XÎé²5ÓÕA-YÑ0ÏNj6ÌSßø nvme-wrap.c       d,¶'ï¤^d,¶'ï¤^   >]nO  ¤  è   d  äJO(9_z0·¸Âÿ7BîÚîè nvme-wrap.h       dn+-7Ú5
dn+-7Ú5
   >Š@6  ¤  è   d ”ÓÊBôýÝo/œê®væÒðþ´iì nvme.c    d,µ!¼£ªd,µ!¼£ª   >]kû  ¤  è   d   ßtÓj¢Šc¨{ßP	EæQgÒÖÈ nvme.control.in   d,¶'ï¤^d,¶'ï¤^   >]nQ  ¤  è   d  ëØY˜>~¯‰¡B†xëÆ;×Ê¹ nvme.h    d,µ!¼£ªd,µ!¼£ª   >]ký  ¤  è   d  •þFu§»Ç¶[¡”ÓðH€àW) nvme.spec.in      d,µ!¼£ªd,µ!¼£ª   >]l   ¤  è   d   <º–fJò5Jvª‚fL‡nù=÷\ 8nvmf-autoconnect/dracut-conf/70-nvmf-autoconnect.conf.in  d,¶'ï¤^d,¶'ï¤^   >]nR  ¤  è   d  jp6b\wˆcH‚t Ðª/ùMR& ;nvmf-autoconnect/systemd/nvmefc-boot-connections.service.in       dn+-8>dn+-8>   >Š@7  ¤  è   d  ry0´º`7Ö°ÚêÚBL4Ð 4nvmf-autoconnect/systemd/nvmf-autoconnect.service.in      dn+-8>dn+-8>   >Š@8  ¤  è   d  —‡iˆM¤’¯yð*!ÿ•Ý_ 5nvmf-autoconnect/systemd/nvmf-connect-nbft.service.in     d,µ!¼£ªd,µ!¼£ª   >]l  ¤  è   d   <öJ7Â˜ÄßÀ«¶Ô{|‰ö¿zd /nvmf-autoconnect/systemd/nvmf-connect.target.in   dBs7	†á5dBs7	†á5   >uZî  ¤  è   d  ‚‡û£hc
ëá»Uaí“‘ 1nvmf-autoconnect/systemd/nvmf-connect@.service.in do @.]udo @.]u   JŠ‰ý  ¤  è   d   v4IB¼ ÀØ9BL˜B"‚×§ ;nvmf-autoconnect/udev-rules/65-persistent-net-nbft.rules.in       d,µ!¼£ªd,µ!¼£ª   >]l  ¤  è   d  ¯çQî	Óµ¦¼{’¾rú½“Dz| 8nvmf-autoconnect/udev-rules/70-nvmf-autoconnect.rules.in  d,µ!¼£ªd,µ!¼£ª   >]l  ¤  è   d  ®ýIèðrÉ­ÎC×8tV÷4¬DÕ <nvmf-autoconnect/udev-rules/71-nvmf-iopolicy-netapp.rules.in      d,µ!¼£ªd,µ!¼£ª   >]l	  ¤  è   d  ÍD T¼ïç¾ŽfgÈWtýêÅ`æ€ plugin.c  d,µ!¼£ªd,µ!¼£ª   >]l
  ¤  è   d  ðoa¢-¯Ûün¹¡w b°™ÝÆÒ plugin.h  d,µ!¼£ªd,µ!¼£ª   >]l  ¤  è   d  $àJ¥5øÄ­˜Èšà,q¶Tý plugins/amzn/amzn-nvme.c  d,µ!¼£ªd,µ!¼£ª   >]l  ¤  è   d  ‹öÄø»º5¤Ðwá(É«;!õ˜’ plugins/amzn/amzn-nvme.h  d,µ!¼£ªd,µ!¼£ª   >]l  ¤  è   d  cŽÑµæó_«w-E(‹'¨L plugins/dell/dell-nvme.c  d,µ!¼£ªd,µ!¼£ª   >]l  ¤  è   d  ‰ªðÞ,@X-ÆýÌ’Á^)ýqÛ plugins/dell/dell-nvme.h  d,µ!¼£ªd,µ!¼£ª   >]l  ¤  è   d  ¸”å×Tßœ2à2{¥Î¿] plugins/dera/dera-nvme.c  d,µ!¼£ªd,µ!¼£ª   >]l  ¤  è   d  ¥»
äxà=°O\VEïÈÿè plugins/dera/dera-nvme.h  d,¶'ï¤^d,¶'ï¤^   >]nT  ¤  è   d  ,¾).Œú¨æ£_'k´„ÕžR‰@ plugins/fdp/fdp.c d,µ!¼£ªd,µ!¼£ª   >]l  ¤  è   d  ñb³! Ê-çÚ"æ´ªåŸªµ6 plugins/fdp/fdp.h d,µ!¼£ªd,µ!¼£ª   >]l  ¤  è   d  '•W †ÎŒ3kÄ–/‡/ò;BÃ‡µ plugins/huawei/huawei-nvme.c      d,µ!¼£ªd,µ!¼£ª   >]l  ¤  è   d  ðôžoÙ@SÓ«e#¸Ôj…ºnÐ3 plugins/huawei/huawei-nvme.h      d,¶'ï¤^d,¶'ï¤^   >]nU  ¤  è   d  5DqSŽ3ÜõK”˜t/ruU^<?V  plugins/innogrit/innogrit-nvme.c  d,µ!¼£ªd,µ!¼£ª   >]l  ¤  è   d  J-àP*e>ðÃWøˆLÆ™w+  plugins/innogrit/innogrit-nvme.h  d,µ!¼£ªd,µ!¼£ª   >]l  ¤  è   d  æ©z Š<[Þ •½ˆ&¼ã¯Û plugins/innogrit/typedef.h        d,¶'ï¤^d,¶'ï¤^   >]nV  ¤  è   d  8ÙŒ’š ^»ÇBzÐVß“ñaá| plugins/inspur/inspur-nvme.c      d,µ!¼£ªd,µ!¼£ª   >]l!  ¤  è   d  ¯¥ç`ž~©ç®¼£c»p×>O plugins/inspur/inspur-nvme.h      d,µ!¼£ªd,µ!¼£ª   >]l"  ¤  è   d  ÏÔ¿)Ú+vpv>wªÞtívˆ% plugins/inspur/inspur-utils.h     d,¶'ï¤^d,¶'ï¤^   >]nW  ¤  è   d  ¹gŠ)Ï“½f+%Î;ÌÆuÏˆÅ, plugins/intel/intel-nvme.c        d,µ!ù¬¿d,µ!ù¬¿   >]l%  ¤  è   d  &PH©²HsÜaÊS¤Ç¦¹â­ plugins/intel/intel-nvme.h        d,¶'ï¤^d,¶'ï¤^   >]nX  ¤  è   d  ‘•zF3¯¤­èKYóŠËíy…èa  plugins/memblaze/memblaze-nvme.c  d,µ!ù¬¿d,µ!ù¬¿   >]l(  ¤  è   d  nâÊeÅK1Ä¹Í?(G³ÍøÒØ  plugins/memblaze/memblaze-nvme.h  d,µ!ù¬¿d,µ!ù¬¿   >]l)  ¤  è   d  #öJQVDôX\­\ÊsåÖ1n•² !plugins/memblaze/memblaze-utils.h dBs7	†á5dBs7	†á5   >uZï  ¤  è   d  Æ8·ÍíÅ>8‹Óc
$ßýš"pfš plugins/meson.build       d,¶'ï¤^d,¶'ï¤^   >]nZ  ¤  è   d ®h½_}~iÖýA«,ýõï*—4 plugins/micron/micron-nvme.c      d,µ!ù¬¿d,µ!ù¬¿   >]l-  ¤  è   d  O{‰'†s}WÀåÅŸyslÕZd plugins/micron/micron-nvme.h      dBs7	†á5dBs7	†á5   >uZñ  ¤  è   d  A„jâRZUÈ¼+þ[qùA×8·4l plugins/nbft/nbft-plugin.c        dBs7	†á5dBs7	†á5   >uZò  ¤  è   d  ƒIÙaï³"‘h~ç4ËÐÌ plugins/nbft/nbft-plugin.h        d,µ!ù¬¿d,µ!ù¬¿   >]l/  ¤  è   d  DªõË3¸²wj„Ãk™`OX Q plugins/netapp/netapp-nvme.c      d,µ!ù¬¿d,µ!ù¬¿   >]l0  ¤  è   d  ×sÞKBÔÛ¸nx¯¤âÓé|Ï plugins/netapp/netapp-nvme.h      d,µ!ù¬¿d,µ!ù¬¿   >]l2  ¤  è   d  qà¼3éÁ¦Ýì¸ÝsþÚÎ~]ú plugins/nvidia/nvidia-nvme.c      d,µ!ù¬¿d,µ!ù¬¿   >]l3  ¤  è   d  •=‡éÁÝœ…È©Í´°4ÚÏæ plugins/nvidia/nvidia-nvme.h      d,¶'ï¤^d,¶'ï¤^   >]n[  ¤  è   d   ¢d9¢Qü‘UXÍô˜=–ƒ¯`¡Ú plugins/ocp/meson.build   d,¶'ï¤^d,¶'ï¤^   >]n\  ¤  è   d  %¹#[‚ëé#T¸q­È+¹]ÓÂü )plugins/ocp/ocp-clear-fw-update-history.c d,¶'ï¤^d,¶'ï¤^   >]n]  ¤  è   d  1ÍDÈÄˆý}ÚÔgtÞÄšžÿ )plugins/ocp/ocp-clear-fw-update-history.h d,¶'ï¤^d,¶'ï¤^   >]n^  ¤  è   d  H¨d6;2Aš€Gåäÿ°XAî©Î plugins/ocp/ocp-nvme.c    d,¶'ï¤^d,¶'ï¤^   >]n_  ¤  è   d  åÜžOEøIÚâ˜pUf¨BÔ¬#þ plugins/ocp/ocp-nvme.h    d,¶'ï¤^d,¶'ï¤^   >]n`  ¤  è   d  7P7¶.’™Ja—6vûšÕ¤èW68 $plugins/ocp/ocp-smart-extended-log.c      d,¶'ï¤^d,¶'ï¤^   >]na  ¤  è   d  ¯BÁù…j*êú‘èòÙû'id $plugins/ocp/ocp-smart-extended-log.h      d,¶'ï¤^d,¶'ï¤^   >]nb  ¤  è   d  ¾£zXÆÞRS.hˆ!?£2µ?ñ plugins/ocp/ocp-utils.c   d,¶'ï¤^d,¶'ï¤^   >]nc  ¤  è   d  ;©b]å˜á
fëÇô.} d"Ìý plugins/ocp/ocp-utils.h   d,µ!ù¬¿d,µ!ù¬¿   >]l=  ¤  è   d  ™KÏ¿j½šÃŸMU¸W‚œV[4ùÑ plugins/scaleflux/sfx-nvme.c      d,µ!ù¬¿d,µ!ù¬¿   >]l>  ¤  è   d  c•Ù-iÓXz4D¨ïÐk plugins/scaleflux/sfx-nvme.h      d,µ!ù¬¿d,µ!ù¬¿   >]l@  ¤  è   d  E·9ðÓšÜ) ôÉ_‚ 'ØñòÉô plugins/seagate/seagate-diag.h    d,µ!ù¬¿d,µ!ù¬¿   >]lA  ¤  è   d íÓ
Tq¡TÝ¦‹#—í‹T°™e plugins/seagate/seagate-nvme.c    d,µ!ù¬¿d,µ!ù¬¿   >]lB  ¤  è   d  
¼™ö2sð¾1¤Š&ÿÿXð–Ð·®™ plugins/seagate/seagate-nvme.h    d,µ!ù¬¿d,µ!ù¬¿   >]lD  ¤  è   d  . BK?s¾0´®ç4ò1¥jÓ/À¥þ plugins/shannon/shannon-nvme.c    d,µ!ù¬¿d,µ!ù¬¿   >]lE  ¤  è   d  ¾%[¶¶ÁKV³^0­œ~ kÿuâÇ plugins/shannon/shannon-nvme.h    d,µ!ù¬¿d,µ!ù¬¿   >]lG  ¤  è   d  
Ro°/›¼1ìßï"XZ)¬¡–ùL plugins/solidigm/meson.build      d,µ!ù¬¿d,µ!ù¬¿   >]lH  ¤  è   d  –8(¹æ~à*8íkŠkF˜—Ñ .plugins/solidigm/solidigm-garbage-collection.c    d,µ!ù¬¿d,µ!ù¬¿   >]lI  ¤  è   d   î£ãK+‹þ=Þ”™ècì
JÛ£ .plugins/solidigm/solidigm-garbage-collection.h    d,¶'ï¤^d,¶'ï¤^   >]nd  ¤  è   d  /”@íÏ ÐñÐBýë«žÄÏCþ ,plugins/solidigm/solidigm-latency-tracking.c      d,µ!ù¬¿d,µ!ù¬¿   >]lK  ¤  è   d   öšv:g˜H£0Ã[ˆžl MæF' ,plugins/solidigm/solidigm-latency-tracking.h      d,¶'ï¤^d,¶'ï¤^   >]ne  ¤  è   d  ¸B½oR¿Ò'ŽW‘HBÞ¾
P  plugins/solidigm/solidigm-nvme.c  d,¶'ï¤^d,¶'ï¤^   >]nf  ¤  è   d  ?Üjg8S-“Ù:ñðæÎÓ­×  plugins/solidigm/solidigm-nvme.h  d,µ!ù¬¿d,µ!ù¬¿   >]lN  ¤  è   d  ùV:¿Ó)Msí›Ó	BŽÑ!ÏÉÞ. !plugins/solidigm/solidigm-smart.c d,µ!ù¬¿d,µ!ù¬¿   >]lO  ¤  è   d   ìáž¾QpgÃAîf‚)§-kR !plugins/solidigm/solidigm-smart.h d,¶'ï¤^d,¶'ï¤^   >]ng  ¤  è   d  p™F™t‡@æ†uAªþÚ¬o& %plugins/solidigm/solidigm-telemetry.c     d,µ!ù¬¿d,µ!ù¬¿   >]lQ  ¤  è   d   å—â¬°ó«•‰ Ò`z?ƒ %plugins/solidigm/solidigm-telemetry.h     d,¶'ï¤^d,¶'ï¤^   >]nh  ¤  è   d  ¯zÌÅ8LdÓ³KsX9j%	fü )plugins/solidigm/solidigm-telemetry/cod.c d,µ!ù¬¿d,µ!ù¬¿   >]lT  ¤  è   d   Ô,ÍÍQôeXâz6cµ+›ï/ )plugins/solidigm/solidigm-telemetry/cod.h d,¶'ï¤^d,¶'ï¤^   >]ni  ¤  è   d  ?Qp1#ö†0Æ¨¥ý! Ahãï ,plugins/solidigm/solidigm-telemetry/config.c      d,¶(,­sd,¶(,­s   >]nj  ¤  è   d  C0æûœÈÆû‘ÖÆvk?Dö7" ,plugins/solidigm/solidigm-telemetry/config.h      d,¶(,­sd,¶(,­s   >]nk  ¤  è   d  1·/ê&-²ˆ/ÃLðµ¡ÍËÌ…C /plugins/solidigm/solidigm-telemetry/data-area.c   d,µ!ù¬¿d,µ!ù¬¿   >]lX  ¤  è   d  	^¶LáA•AV¿Îˆ¶Î—2	×> /plugins/solidigm/solidigm-telemetry/data-area.h   d,¶(,­sd,¶(,­s   >]nl  ¤  è   d  !YÐ…ÂF/Ä£Úà»¾ÝÕ/SÙÍþ ,plugins/solidigm/solidigm-telemetry/header.c      d,µ!ù¬¿d,µ!ù¬¿   >]lZ  ¤  è   d   ÝzõW:æD-¾
Æ¨¥z’,¾0 ,plugins/solidigm/solidigm-telemetry/header.h      d,µ!ù¬¿d,µ!ù¬¿   >]l[  ¤  è   d   ×S«E,!ì—ã°ªŒ¿¿¹FÐUù[„ /plugins/solidigm/solidigm-telemetry/meson.build   d,¶(,­sd,¶(,­s   >]nm  ¤  è   d  ·éï÷4	N	ªØL5óõ7z‡Ž$° 3plugins/solidigm/solidigm-telemetry/telemetry-log.h       d,µ!ù¬¿d,µ!ù¬¿   >]l]  ¤  è   d  }q¤”¾`Š< ¾žð«BÅ‘]  plugins/solidigm/solidigm-util.c  d,µ!ù¬¿d,µ!ù¬¿   >]l^  ¤  è   d   Ï:P1¼=j>gï‰=¢!#‡æÛ  plugins/solidigm/solidigm-util.h  d,µ!ù¬¿d,µ!ù¬¿   >]l`  ¤  è   d  7ÂU@þ§]³Ä?’¦–%W†	Ívz plugins/toshiba/toshiba-nvme.c    d,µ!ù¬¿d,µ!ù¬¿   >]la  ¤  è   d  Xbõß§w“RûØ™Ðð9’ó plugins/toshiba/toshiba-nvme.h    d,µ!ù¬¿d,µ!ù¬¿   >]lc  ¤  è   d  ÁCQõB(©ÏÂ€3žy.&÷Æ "plugins/transcend/transcend-nvme.c        d,µ!ù¬¿d,µ!ù¬¿   >]ld  ¤  è   d  õœ‰ˆ8,“N§Ó¡ˆI`‰ý "plugins/transcend/transcend-nvme.h        d,µ!ù¬¿d,µ!ù¬¿   >]lf  ¤  è   d  œ	ÈßaïŒ™¾8é1ìÀR†ûyB§ plugins/virtium/virtium-nvme.c    d,µ!ù¬¿d,µ!ù¬¿   >]lg  ¤  è   d  -
£QDµ\\ËvªÔ¶ë,X plugins/virtium/virtium-nvme.h    d,¶(,­sd,¶(,­s   >]nn  ¤  è   d ÐÈ-];ÄõŒw!0ËÜJŽG%¢XI plugins/wdc/wdc-nvme.c    d,¶(,­sd,¶(,­s   >]no  ¤  è   d  “ÍÙa]Ç^Æ¼´½Dìäiö—Qæõ plugins/wdc/wdc-nvme.h    d,µ"6µÔd,µ"6µÔ   >]lk  ¤  è   d  ¥8æÒÌ>ò#a=x»rl~P3 plugins/wdc/wdc-utils.c   d,µ"6µÔd,µ"6µÔ   >]ll  ¤  è   d  oƒ²îÄHQuq•nêçå?l§§ plugins/wdc/wdc-utils.h   d,µ"6µÔd,µ"6µÔ   >]ln  ¤  è   d  ˜ÐDÈÎðUDPÊ¥y^ }¿©ý plugins/ymtc/ymtc-nvme.c  d,µ"6µÔd,µ"6µÔ   >]lo  ¤  è   d  ß]Yëª«â{;e®ÜNo plugins/ymtc/ymtc-nvme.h  d,µ"6µÔd,µ"6µÔ   >]lp  ¤  è   d  œ9÷œµ©¶ˆ¯½8mu.à`ŠP‹ plugins/ymtc/ymtc-utils.h d,µ"6µÔd,µ"6µÔ   >]lr  ¤  è   d  z{ø€›¤t·á9Ç_
)U[ºônH™ plugins/zns/zns.c d,µ"6µÔd,µ"6µÔ   >]ls  ¤  è   d  ïw¿Ýf«ü”Ùò¿t ß]½õý9 plugins/zns/zns.h d,µ"6µÔd,µ"6µÔ   >]lt  í  è   d  ‹0/ølÏºIÌ„B,Û¶îØh regress   d,µ"6µÔd,µ"6µÔ   >]lu  í  è   d  ±´®ÉÆH¢wá&à‚5€ØÆ¯ 
release.sh        d,µ"6µÔd,µ"6µÔ   >]lw  ¤  è   d   H³íñOÐ1n½h`;J¨ü@qþÆœ scripts/gen-hostnqn.sh    d,µ"6µÔd,µ"6µÔ   >]lx  í  è   d  ì
ŒÄŽÄ.i%«ðuKôùê scripts/latency   d,µ"6µÔd,µ"6µÔ   >]lz  ¤  è   d  ÝÎŸõòómNþ<<úõØ„¥.©Î subprojects/json-c.wrap   dn+-8>dn+-8>   >Š@:  ¤  è   d   ¤†£ŽÖòhÿ£zDr¬Zˆ, subprojects/libnvme.wrap  d,µ"6µÔd,µ"6µÔ   >]l}  ¤  è   d  h¥úp„ýðž!FàqŽÒ—x¾š¿©` tests/README      d,µ"6µÔd,µ"6µÔ   >]l~  ¤  è   d  ii€jžJDEi$¼$ gÔ}óþ 
tests/TODO        d,µ"6µÔd,µ"6µÔ   >]l  ¤  è   d   Z	º€Z¹c\#Å³¸—‹Ø tests/config.json d,µ"6µÔd,µ"6µÔ   >]l€  ¤  è   d  Bc5Û>Jøg'Çÿ—l(NÃwØZû tests/meson.build d,µ"6µÔd,µ"6µÔ   >]l  ¤  è   d  ÁúçÅ— ·<‚Þ7íU±¨x° #tests/nvme_attach_detach_ns_test.py       d,µ"6µÔd,µ"6µÔ   >]l‚  ¤  è   d  üàG—†	fSZ¼«‚ÔËÞtÆ±Ì tests/nvme_compare_test.py        d,µ"6µÔd,µ"6µÔ   >]lƒ  ¤  è   d  dØJm$:p¯ôIÇ:‚ì @\ïç’ tests/nvme_copy_test.py   d,µ"6µÔd,µ"6µÔ   >]l„  ¤  è   d  TQyq´PU)WÀ%z“ªk6î  tests/nvme_create_max_ns_test.py  d,µ"6µÔd,µ"6µÔ   >]l…  ¤  è   d  ÇÙ+õŽY
â!ÁY.0êM°•ùc tests/nvme_dsm_test.py    d,µ"6µÔd,µ"6µÔ   >]l†  ¤  è   d  %º‘À%k_É³ÿp‰Ÿ¿ÅzwŒ*@y tests/nvme_error_log_test.py      d,µ"6µÔd,µ"6µÔ   >]l‡  ¤  è   d  äñ'ÚÁá´ó$ÈùLxÌi– X% tests/nvme_flush_test.py  d,µ"6µÔd,µ"6µÔ   >]lˆ  ¤  è   d  Úhå¢øÎ2œ5™û¹¨šÊ. tests/nvme_format_test.py d,µ"6µÔd,µ"6µÔ   >]l‰  ¤  è   d  z¶pgŸ¨"!§ü±~,I—A	 tests/nvme_fw_log_test.py d,µ"6µÔd,µ"6µÔ   >]lŠ  ¤  è   d  `xO+îÛ¼
SîªÙ ´Eë/A tests/nvme_get_features_test.py   d,µ"6µÔd,µ"6µÔ   >]l‹  ¤  è   d  ñSœI7c£¼Ž,Ù ±éhqž»| !tests/nvme_get_lba_status_test.py d,µ"6µÔd,µ"6µÔ   >]lŒ  ¤  è   d  m(ÙJËé°©43W¡xõ8â`ÿz_ tests/nvme_id_ctrl_test.py        d,µ"6µÔd,µ"6µÔ   >]l  ¤  è   d  
¿fâù:ÜqŸ×ˆrÞ6ë tests/nvme_id_ns_test.py  d,µ"6µÔd,µ"6µÔ   >]lŽ  ¤  è   d  ìÉV¿&E!º2Rã?‡Ç1ÚÀ !tests/nvme_lba_status_log_test.py d,µ"6µÔd,µ"6µÔ   >]l  ¤  è   d  
IŒ®
¬,D3HøC•œD‹vcv tests/nvme_read_write_test.py     d,µ"6µÔd,µ"6µÔ   >]l  ¤  è   d  ü*ÚëOBvîÆÎe™îœ¹ã"– "tests/nvme_simple_template_test.py        d,µ"6µÔd,µ"6µÔ   >]l‘  ¤  è   d  
¬‘nôšZn-KE…‹v‘ø6‘\–¦X tests/nvme_smart_log_test.py      d,µ"6µÔd,µ"6µÔ   >]l’  ¤  è   d  GÕì¡€Ý÷rÄÏ€’ú]+Ht2ú tests/nvme_test.py        d,µ"6µÔd,µ"6µÔ   >]l“  ¤  è   d  £¿0à¤°(u>VfmbÐ£ûì.ïu tests/nvme_test_io.py     d,µ"6µÔd,µ"6µÔ   >]l”  ¤  è   d  îÐ/Ò9£]¢FÎJÊe˜~‘àBj tests/nvme_test_logger.py d,µ"6µÔd,µ"6µÔ   >]l•  ¤  è   d  Æ|0‚Q¿³ÀaòØ³H+¸G‹Œ1 tests/nvme_verify_test.py d,µ"6µÔd,µ"6µÔ   >]l–  ¤  è   d  
¹ƒÔb43¯çXÒµe=ÖŠët‡E@ tests/nvme_writeuncor_test.py     d,µ"6µÔd,µ"6µÔ   >]l—  ¤  è   d  21ãÝŸ¤eÌ|ÉûVÉŸA¯ÏÃ tests/nvme_writezeros_test.py     d,µ"6µÔd,µ"6µÔ   >]l˜  ¤  è   d  Ö†›>FR^#/·«Hmh‘ÿ# tests/run_py_linters.py   d,¶(,­sd,¶(,­s   >]nq  ¤  è   d  ç~‡„˜=’p²›CU–ô.ºñƒþ unit/meson.build  d,¶(,­sd,¶(,­s   >]nr  ¤  è   d  ¢#ÈÔþïhÎ™ÝäwŽýHŽtÝ™# unit/test-argconfig-parse.c       d,µ"6µÔd,µ"6µÔ   >]l›  ¤  è   d  Ä_jÄ¨–lÊ~|,±Ðžœy2§rÆ unit/test-suffix-binary-parse.c   d,µ"6µÔd,µ"6µÔ   >]lœ  ¤  è   d  Ò¼’ER&‡'œ™Ï*ß`ÀÝŽ unit/test-suffix-si-parse.c       d,µ"6µÔd,µ"6µÔ   >]l  ¤  è   d  ‚ÌEEñ€Í¸ò?åEBÓÁÝ unit/test-uint128-si.c    d,µ"6µÔd,µ"6µÔ   >]lž  ¤  è   d  /c£ƒ[Ÿ³®ÆŽÅˆTXÇÇ9› unit/test-uint128.c       d,¶(,­sd,¶(,­s   >]ns  ¤  è   d  2‘>¸…úÌÞÎ¸¶Ä/‰ý¨®KFÿ util/argconfig.c  d,¶(,­sd,¶(,­s   >]nt  ¤  è   d  dê¯@^S×Šr¸Û!b?%Éöu\ util/argconfig.h  d,µ"6µÔd,µ"6µÔ   >]l¢  ¤  è   d  ŒùuÈåèXæ¢C|æ3Ììò—ç util/base64.c     d,µ"6µÔd,µ"6µÔ   >]l£  ¤  è   d   ïÀö.+ù /^˜%çN0Ù·²’-` util/base64.h     d,µ"6µÔd,µ"6µÔ   >]l¤  ¤  è   d   ‰Ö¬|ga<,SGƒ… ¹,òv util/cleanup.c    d,µ"6µÔd,µ"6µÔ   >]l¥  ¤  è   d  WZ%×{íØ¶w<¿Q…/ÄÎÒW util/cleanup.h    d,µ"6µÔd,µ"6µÔ   >]l¦  ¤  è   d  gÌ-#Þ	oï5ÚQ&Ô;«g util/crc32.c      d,µ"6µÔd,µ"6µÔ   >]l§  ¤  è   d   ÁäŒ—ÚŽ<íU%HÓlÕà¯Ù:6 util/crc32.h      d,¶(,­sd,¶(,­s   >]nu  ¤  è   d  {-å„‚ˆÆFèÕüÅÅg\‘ util/json.c       d,¶(,­sd,¶(,­s   >]nv  ¤  è   d  zÃb@‹~yF¸øŠ&	%JÎŒq¶ util/json.h       d,¶(,­sd,¶(,­s   >]nw  ¤  è   d   óñIÐ1•f€to4Ï¡U–ž[]¿ util/meson.build  d,µ"6µÔd,µ"6µÔ   >]l«  ¤  è   d  cŽÐ€Ôí•<ç [ùD¦î›ÚëÄ util/suffix.c     d,µ"6µÔd,µ"6µÔ   >]l¬  ¤  è   d  ]^¥H¬’ºËa'=´Qmk©“ util/suffix.h     d,¶(,­sd,¶(,­s   >]nx  ¤  è   d  EÚï)‹ÓÍ…þÔ*¾!ýp= util/types.c      d,¶(,­sd,¶(,­s   >]ny  ¤  è   d  ÷þŸÎÓãWamƒ©Ëì;äª util/types.h      TREE  e 817 12
¨ÎÊ«Ì?IYØ=ðµýôÓ…µetc 1 0
§ËœÚFˆî=]FšsK½ccan 25 2

·®ÚyŽ/®4é*—úAìc…ccan 22 6
r¾x>o;	Ò“?ocŒ!©ˆKstr 6 0
Q™Õê¦vÛ¦±bñƒ&ú<7v˜'list 4 0
‰ûÿ-¬•K&;,ˆ½5ŸÊendian 3 0
S–*ñ.“«/„ËÇÀÍ2‹³ù¼”check_type 3 0
1ÁeîqËÆ,ysù½ ©q˜CEbuild_assert 3 0
nð#ÈTb]ÏÜ^¥?s±ù¡Hcontainer_of 3 0
îÃHRÖ<»åœ¿Àb~7D¡Ålicenses 2 0
WVœ*ïSÔçRöÝ­hêv”íunit 6 0
øalAvË^@!®™÷[ñ¿ §9zutil 15 0
 ïpÃ½ˆŸ\Ò_;îö?0 ë‘þtests 28 0
Ó}™£”‚`º?éJ·§ù9Å|¾±.github 10 2
^`ÙÉwë×A
‡R&Êª(Y¯™Across 4 0
z„J†ÙdßŸgÞ¨9ç’Kbk îworkflows 3 0
VüJÎh‡<1˜wFî²°Ÿâ¾plugins 84 24
­O(*°¦8’ó$åòÓôÆðàqfdp 2 0
õ—
`ÉùžÔ¥Æ¶ã¬j¤rãFocp 9 0
¶´ˆoeTýt·üúÒu„Õ³ŽÑÏwdc 4 0
ƒ”/l7hÅÈ›“üì;kúƒ œzns 2 0
l¤´×ð08z¨œ*AÑaƒ¸/amzn 2 0
5x NÂs·¬gþh0yî¹Í¨Ýdell 2 0
0¥ÎûÚÞMô~¯HZ<Ý´S·dera 2 0
g *­óç9ÔàXû’Gärúúä]nbft 2 0
Ûi+dX–[&@÷1-Ò¶y’tšymtc 3 0
ÁB˜IVsz3çÀg¤êéá"ú?<intel 2 0
ÿô÷S{ÛqDÐ}s|Y¦í€huawei 2 0
‰däh¤^»¨6C'ÖF>¦)ÔOœûinspur 3 0
¥¨i¹êŸh¢Ú{Úøè*ÔÝä micron 2 0
€>mØúJ¤¨unçÝÉ'kÇ›#netapp 2 0
îÒwìãi …ñŒzHZnvidia 2 0
ê¯÷;oµ~±aú,Ýí8gÌÞ9seagate 3 0
©•~»eg/]ø"‘yqìÈL¥™shannon 2 0
æ'NºžŠ³„tÎÖN™FßšÊtoshiba 2 0
2SoŒ²ŽXNfê™yÿÈ˜virtium 2 0
Ž{6€»(þJ6|&m­ohŒ¥zinnogrit 3 0
3óxõÄ0–â½[}PÄÇ `memblaze 3 0
"ðúÂ–ÎQñßPñnìq·õosolidigm 23 1
O²‹êÈÍ¯Òl{”U”ï½œsolidigm-telemetry 10 0
|eðB«t+)í±öí j}£¥ýscaleflux 2 0
ÆÀï‡†i\)bU3X>ÐXEc<“transcend 2 0
Ö(B«°R#j.ã*¸[Ê© uscripts 2 0
z`=',iÀ¸­( ºäËµ$completions 3 0
ûC 
N…û¬qÓ«Âù;ÀÇìsubprojects 2 0
ñÞ‘E¾Z›´„€%6ÏBõ äADocumentation 596 0
¥¨¿·Nl¯eÂUÔünx÷‡g…ôtnvmf-autoconnect 9 3
»º¢åœÐo'œ=±búMØË«È¦systemd 5 0
š|ôSî•‰ösÎ–2çFjudev-rules 3 0
©“.c°”x,N“’€,°œ¡BÃódracut-conf 1 0

{žú»žæå˜ÏøØÀkô"Tzu¹"quR¥½º?í$BìòÃ   070701018A89FF000081A4000003E80000006400000001646F204000000029000000000000004A00000000000000000000001300000000nvme-cli/.git/HEAD    f4cfca93998a2e3bd8b3ba6f01b052c6a95fbc9d
   070701015D6915000081A4000003E80000006400000001642C0FB2000001DE000000000000004A00000000000000000000002A00000000nvme-cli/.git/hooks/applypatch-msg.sample #!/bin/sh
#
# An example hook script to check the commit log message taken by
# applypatch from an e-mail message.
#
# The hook should exit with non-zero status after issuing an
# appropriate message if it wants to stop the commit.  The hook is
# allowed to edit the commit message file.
#
# To enable this hook, rename this file to "applypatch-msg".

. git-sh-setup
commitmsg="$(git rev-parse --git-path hooks/commit-msg)"
test -x "$commitmsg" && exec "$commitmsg" ${1+"$@"}
:
  070701015D6916000081A4000003E80000006400000001642C0FB200000380000000000000004A00000000000000000000002600000000nvme-cli/.git/hooks/commit-msg.sample #!/bin/sh
#
# An example hook script to check the commit log message.
# Called by "git commit" with one argument, the name of the file
# that has the commit message.  The hook should exit with non-zero
# status after issuing an appropriate message if it wants to stop the
# commit.  The hook is allowed to edit the commit message file.
#
# To enable this hook, rename this file to "commit-msg".

# Uncomment the below to add a Signed-off-by line to the message.
# Doing this in a hook is a bad idea in general, but the prepare-commit-msg
# hook is more suited to it.
#
# SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p')
# grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1"

# This example catches duplicate Signed-off-by lines.

test "" = "$(grep '^Signed-off-by: ' "$1" |
	 sort | uniq -c | sed -e '/^[ 	]*1[ 	]/d')" || {
	echo >&2 Duplicate Signed-off-by lines.
	exit 1
}
070701015D6917000081A4000003E80000006400000001642C0FB2000000BD000000000000004A00000000000000000000002700000000nvme-cli/.git/hooks/post-update.sample    #!/bin/sh
#
# An example hook script to prepare a packed repository for use over
# dumb transports.
#
# To enable this hook, rename this file to "post-update".

exec git update-server-info
   070701015D6918000081A4000003E80000006400000001642C0FB2000001A8000000000000004A00000000000000000000002A00000000nvme-cli/.git/hooks/pre-applypatch.sample #!/bin/sh
#
# An example hook script to verify what is about to be committed
# by applypatch from an e-mail message.
#
# The hook should exit with non-zero status after issuing an
# appropriate message if it wants to stop the commit.
#
# To enable this hook, rename this file to "pre-applypatch".

. git-sh-setup
precommit="$(git rev-parse --git-path hooks/pre-commit)"
test -x "$precommit" && exec "$precommit" ${1+"$@"}
:
070701015D6919000081A4000003E80000006400000001642C0FB20000066B000000000000004A00000000000000000000002600000000nvme-cli/.git/hooks/pre-commit.sample #!/bin/sh
#
# An example hook script to verify what is about to be committed.
# Called by "git commit" with no arguments.  The hook should
# exit with non-zero status after issuing an appropriate message if
# it wants to stop the commit.
#
# To enable this hook, rename this file to "pre-commit".

if git rev-parse --verify HEAD >/dev/null 2>&1
then
	against=HEAD
else
	# Initial commit: diff against an empty tree object
	against=$(git hash-object -t tree /dev/null)
fi

# If you want to allow non-ASCII filenames set this variable to true.
allownonascii=$(git config --type=bool hooks.allownonascii)

# Redirect output to stderr.
exec 1>&2

# Cross platform projects tend to avoid non-ASCII filenames; prevent
# them from being added to the repository. We exploit the fact that the
# printable range starts at the space character and ends with tilde.
if [ "$allownonascii" != "true" ] &&
	# Note that the use of brackets around a tr range is ok here, (it's
	# even required, for portability to Solaris 10's /usr/bin/tr), since
	# the square bracket bytes happen to fall in the designated range.
	test $(git diff --cached --name-only --diff-filter=A -z $against |
	  LC_ALL=C tr -d '[ -~]\0' | wc -c) != 0
then
	cat <<\EOF
Error: Attempt to add a non-ASCII file name.

This can cause problems if you want to work with people on other platforms.

To be portable it is advisable to rename the file.

If you know what you are doing you can disable this check using:

  git config hooks.allownonascii true
EOF
	exit 1
fi

# If there are whitespace errors, print the offending file names and fail.
exec git diff-index --check --cached $against --
 070701015D691A000081A4000003E80000006400000001642C0FB2000001A0000000000000004A00000000000000000000002C00000000nvme-cli/.git/hooks/pre-merge-commit.sample   #!/bin/sh
#
# An example hook script to verify what is about to be committed.
# Called by "git merge" with no arguments.  The hook should
# exit with non-zero status after issuing an appropriate message to
# stderr if it wants to stop the merge commit.
#
# To enable this hook, rename this file to "pre-merge-commit".

. git-sh-setup
test -x "$GIT_DIR/hooks/pre-commit" &&
        exec "$GIT_DIR/hooks/pre-commit"
:
070701015D691B000081A4000003E80000006400000001642C0FB20000055E000000000000004A00000000000000000000002400000000nvme-cli/.git/hooks/pre-push.sample   #!/bin/sh

# An example hook script to verify what is about to be pushed.  Called by "git
# push" after it has checked the remote status, but before anything has been
# pushed.  If this script exits with a non-zero status nothing will be pushed.
#
# This hook is called with the following parameters:
#
# $1 -- Name of the remote to which the push is being done
# $2 -- URL to which the push is being done
#
# If pushing without using a named remote those arguments will be equal.
#
# Information about the commits which are being pushed is supplied as lines to
# the standard input in the form:
#
#   <local ref> <local oid> <remote ref> <remote oid>
#
# This sample shows how to prevent push of commits where the log message starts
# with "WIP" (work in progress).

remote="$1"
url="$2"

zero=$(git hash-object --stdin </dev/null | tr '[0-9a-f]' '0')

while read local_ref local_oid remote_ref remote_oid
do
	if test "$local_oid" = "$zero"
	then
		# Handle delete
		:
	else
		if test "$remote_oid" = "$zero"
		then
			# New branch, examine all commits
			range="$local_oid"
		else
			# Update to existing branch, examine new commits
			range="$remote_oid..$local_oid"
		fi

		# Check for WIP commit
		commit=$(git rev-list -n 1 --grep '^WIP' "$range")
		if test -n "$commit"
		then
			echo >&2 "Found WIP commit in $local_ref, not pushing"
			exit 1
		fi
	fi
done

exit 0
  070701015D691C000081A4000003E80000006400000001642C0FB200001322000000000000004A00000000000000000000002600000000nvme-cli/.git/hooks/pre-rebase.sample #!/bin/sh
#
# Copyright (c) 2006, 2008 Junio C Hamano
#
# The "pre-rebase" hook is run just before "git rebase" starts doing
# its job, and can prevent the command from running by exiting with
# non-zero status.
#
# The hook is called with the following parameters:
#
# $1 -- the upstream the series was forked from.
# $2 -- the branch being rebased (or empty when rebasing the current branch).
#
# This sample shows how to prevent topic branches that are already
# merged to 'next' branch from getting rebased, because allowing it
# would result in rebasing already published history.

publish=next
basebranch="$1"
if test "$#" = 2
then
	topic="refs/heads/$2"
else
	topic=`git symbolic-ref HEAD` ||
	exit 0 ;# we do not interrupt rebasing detached HEAD
fi

case "$topic" in
refs/heads/??/*)
	;;
*)
	exit 0 ;# we do not interrupt others.
	;;
esac

# Now we are dealing with a topic branch being rebased
# on top of master.  Is it OK to rebase it?

# Does the topic really exist?
git show-ref -q "$topic" || {
	echo >&2 "No such branch $topic"
	exit 1
}

# Is topic fully merged to master?
not_in_master=`git rev-list --pretty=oneline ^master "$topic"`
if test -z "$not_in_master"
then
	echo >&2 "$topic is fully merged to master; better remove it."
	exit 1 ;# we could allow it, but there is no point.
fi

# Is topic ever merged to next?  If so you should not be rebasing it.
only_next_1=`git rev-list ^master "^$topic" ${publish} | sort`
only_next_2=`git rev-list ^master           ${publish} | sort`
if test "$only_next_1" = "$only_next_2"
then
	not_in_topic=`git rev-list "^$topic" master`
	if test -z "$not_in_topic"
	then
		echo >&2 "$topic is already up to date with master"
		exit 1 ;# we could allow it, but there is no point.
	else
		exit 0
	fi
else
	not_in_next=`git rev-list --pretty=oneline ^${publish} "$topic"`
	/usr/bin/perl -e '
		my $topic = $ARGV[0];
		my $msg = "* $topic has commits already merged to public branch:\n";
		my (%not_in_next) = map {
			/^([0-9a-f]+) /;
			($1 => 1);
		} split(/\n/, $ARGV[1]);
		for my $elem (map {
				/^([0-9a-f]+) (.*)$/;
				[$1 => $2];
			} split(/\n/, $ARGV[2])) {
			if (!exists $not_in_next{$elem->[0]}) {
				if ($msg) {
					print STDERR $msg;
					undef $msg;
				}
				print STDERR " $elem->[1]\n";
			}
		}
	' "$topic" "$not_in_next" "$not_in_master"
	exit 1
fi

<<\DOC_END

This sample hook safeguards topic branches that have been
published from being rewound.

The workflow assumed here is:

 * Once a topic branch forks from "master", "master" is never
   merged into it again (either directly or indirectly).

 * Once a topic branch is fully cooked and merged into "master",
   it is deleted.  If you need to build on top of it to correct
   earlier mistakes, a new topic branch is created by forking at
   the tip of the "master".  This is not strictly necessary, but
   it makes it easier to keep your history simple.

 * Whenever you need to test or publish your changes to topic
   branches, merge them into "next" branch.

The script, being an example, hardcodes the publish branch name
to be "next", but it is trivial to make it configurable via
$GIT_DIR/config mechanism.

With this workflow, you would want to know:

(1) ... if a topic branch has ever been merged to "next".  Young
    topic branches can have stupid mistakes you would rather
    clean up before publishing, and things that have not been
    merged into other branches can be easily rebased without
    affecting other people.  But once it is published, you would
    not want to rewind it.

(2) ... if a topic branch has been fully merged to "master".
    Then you can delete it.  More importantly, you should not
    build on top of it -- other people may already want to
    change things related to the topic as patches against your
    "master", so if you need further changes, it is better to
    fork the topic (perhaps with the same name) afresh from the
    tip of "master".

Let's look at this example:

		   o---o---o---o---o---o---o---o---o---o "next"
		  /       /           /           /
		 /   a---a---b A     /           /
		/   /               /           /
	       /   /   c---c---c---c B         /
	      /   /   /             \         /
	     /   /   /   b---b C     \       /
	    /   /   /   /             \     /
    ---o---o---o---o---o---o---o---o---o---o---o "master"


A, B and C are topic branches.

 * A has one fix since it was merged up to "next".

 * B has finished.  It has been fully merged up to "master" and "next",
   and is ready to be deleted.

 * C has not merged to "next" at all.

We would want to allow C to be rebased, refuse A, and encourage
B to be deleted.

To compute (1):

	git rev-list ^master ^topic next
	git rev-list ^master        next

	if these match, topic has not merged in next at all.

To compute (2):

	git rev-list master..topic

	if this is empty, it is fully merged to "master".

DOC_END
  070701015D691D000081A4000003E80000006400000001642C0FB200000220000000000000004A00000000000000000000002700000000nvme-cli/.git/hooks/pre-receive.sample    #!/bin/sh
#
# An example hook script to make use of push options.
# The example simply echoes all push options that start with 'echoback='
# and rejects all pushes when the "reject" push option is used.
#
# To enable this hook, rename this file to "pre-receive".

if test -n "$GIT_PUSH_OPTION_COUNT"
then
	i=0
	while test "$i" -lt "$GIT_PUSH_OPTION_COUNT"
	do
		eval "value=\$GIT_PUSH_OPTION_$i"
		case "$value" in
		echoback=*)
			echo "echo from the pre-receive-hook: ${value#*=}" >&2
			;;
		reject)
			exit 1
		esac
		i=$((i + 1))
	done
fi
070701015D691E000081A4000003E80000006400000001642C0FB2000005D4000000000000004A00000000000000000000002E00000000nvme-cli/.git/hooks/prepare-commit-msg.sample #!/bin/sh
#
# An example hook script to prepare the commit log message.
# Called by "git commit" with the name of the file that has the
# commit message, followed by the description of the commit
# message's source.  The hook's purpose is to edit the commit
# message file.  If the hook fails with a non-zero status,
# the commit is aborted.
#
# To enable this hook, rename this file to "prepare-commit-msg".

# This hook includes three examples. The first one removes the
# "# Please enter the commit message..." help message.
#
# The second includes the output of "git diff --name-status -r"
# into the message, just before the "git status" output.  It is
# commented because it doesn't cope with --amend or with squashed
# commits.
#
# The third example adds a Signed-off-by line to the message, that can
# still be edited.  This is rarely a good idea.

COMMIT_MSG_FILE=$1
COMMIT_SOURCE=$2
SHA1=$3

/usr/bin/perl -i.bak -ne 'print unless(m/^. Please enter the commit message/..m/^#$/)' "$COMMIT_MSG_FILE"

# case "$COMMIT_SOURCE,$SHA1" in
#  ,|template,)
#    /usr/bin/perl -i.bak -pe '
#       print "\n" . `git diff --cached --name-status -r`
# 	 if /^#/ && $first++ == 0' "$COMMIT_MSG_FILE" ;;
#  *) ;;
# esac

# SOB=$(git var GIT_COMMITTER_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p')
# git interpret-trailers --in-place --trailer "$SOB" "$COMMIT_MSG_FILE"
# if test -z "$COMMIT_SOURCE"
# then
#   /usr/bin/perl -i.bak -pe 'print "\n" if !$first_line++' "$COMMIT_MSG_FILE"
# fi
070701015D691F000081A4000003E80000006400000001642C0FB200000ADF000000000000004A00000000000000000000002C00000000nvme-cli/.git/hooks/push-to-checkout.sample   #!/bin/sh

# An example hook script to update a checked-out tree on a git push.
#
# This hook is invoked by git-receive-pack(1) when it reacts to git
# push and updates reference(s) in its repository, and when the push
# tries to update the branch that is currently checked out and the
# receive.denyCurrentBranch configuration variable is set to
# updateInstead.
#
# By default, such a push is refused if the working tree and the index
# of the remote repository has any difference from the currently
# checked out commit; when both the working tree and the index match
# the current commit, they are updated to match the newly pushed tip
# of the branch. This hook is to be used to override the default
# behaviour; however the code below reimplements the default behaviour
# as a starting point for convenient modification.
#
# The hook receives the commit with which the tip of the current
# branch is going to be updated:
commit=$1

# It can exit with a non-zero status to refuse the push (when it does
# so, it must not modify the index or the working tree).
die () {
	echo >&2 "$*"
	exit 1
}

# Or it can make any necessary changes to the working tree and to the
# index to bring them to the desired state when the tip of the current
# branch is updated to the new commit, and exit with a zero status.
#
# For example, the hook can simply run git read-tree -u -m HEAD "$1"
# in order to emulate git fetch that is run in the reverse direction
# with git push, as the two-tree form of git read-tree -u -m is
# essentially the same as git switch or git checkout that switches
# branches while keeping the local changes in the working tree that do
# not interfere with the difference between the branches.

# The below is a more-or-less exact translation to shell of the C code
# for the default behaviour for git's push-to-checkout hook defined in
# the push_to_deploy() function in builtin/receive-pack.c.
#
# Note that the hook will be executed from the repository directory,
# not from the working tree, so if you want to perform operations on
# the working tree, you will have to adapt your code accordingly, e.g.
# by adding "cd .." or using relative paths.

if ! git update-index -q --ignore-submodules --refresh
then
	die "Up-to-date check failed"
fi

if ! git diff-files --quiet --ignore-submodules --
then
	die "Working directory has unstaged changes"
fi

# This is a rough translation of:
#
#   head_has_history() ? "HEAD" : EMPTY_TREE_SHA1_HEX
if git cat-file -e HEAD 2>/dev/null
then
	head=HEAD
else
	head=$(git hash-object -t tree --stdin </dev/null)
fi

if ! git diff-index --quiet --cached --ignore-submodules $head --
then
	die "Working directory has staged changes"
fi

if ! git read-tree -u -m "$commit"
then
	die "Could not update working tree to new HEAD"
fi
 070701015D6920000081A4000003E80000006400000001642C0FB200000E42000000000000004A00000000000000000000002200000000nvme-cli/.git/hooks/update.sample #!/bin/sh
#
# An example hook script to block unannotated tags from entering.
# Called by "git receive-pack" with arguments: refname sha1-old sha1-new
#
# To enable this hook, rename this file to "update".
#
# Config
# ------
# hooks.allowunannotated
#   This boolean sets whether unannotated tags will be allowed into the
#   repository.  By default they won't be.
# hooks.allowdeletetag
#   This boolean sets whether deleting tags will be allowed in the
#   repository.  By default they won't be.
# hooks.allowmodifytag
#   This boolean sets whether a tag may be modified after creation. By default
#   it won't be.
# hooks.allowdeletebranch
#   This boolean sets whether deleting branches will be allowed in the
#   repository.  By default they won't be.
# hooks.denycreatebranch
#   This boolean sets whether remotely creating branches will be denied
#   in the repository.  By default this is allowed.
#

# --- Command line
refname="$1"
oldrev="$2"
newrev="$3"

# --- Safety check
if [ -z "$GIT_DIR" ]; then
	echo "Don't run this script from the command line." >&2
	echo " (if you want, you could supply GIT_DIR then run" >&2
	echo "  $0 <ref> <oldrev> <newrev>)" >&2
	exit 1
fi

if [ -z "$refname" -o -z "$oldrev" -o -z "$newrev" ]; then
	echo "usage: $0 <ref> <oldrev> <newrev>" >&2
	exit 1
fi

# --- Config
allowunannotated=$(git config --type=bool hooks.allowunannotated)
allowdeletebranch=$(git config --type=bool hooks.allowdeletebranch)
denycreatebranch=$(git config --type=bool hooks.denycreatebranch)
allowdeletetag=$(git config --type=bool hooks.allowdeletetag)
allowmodifytag=$(git config --type=bool hooks.allowmodifytag)

# check for no description
projectdesc=$(sed -e '1q' "$GIT_DIR/description")
case "$projectdesc" in
"Unnamed repository"* | "")
	echo "*** Project description file hasn't been set" >&2
	exit 1
	;;
esac

# --- Check types
# if $newrev is 0000...0000, it's a commit to delete a ref.
zero=$(git hash-object --stdin </dev/null | tr '[0-9a-f]' '0')
if [ "$newrev" = "$zero" ]; then
	newrev_type=delete
else
	newrev_type=$(git cat-file -t $newrev)
fi

case "$refname","$newrev_type" in
	refs/tags/*,commit)
		# un-annotated tag
		short_refname=${refname##refs/tags/}
		if [ "$allowunannotated" != "true" ]; then
			echo "*** The un-annotated tag, $short_refname, is not allowed in this repository" >&2
			echo "*** Use 'git tag [ -a | -s ]' for tags you want to propagate." >&2
			exit 1
		fi
		;;
	refs/tags/*,delete)
		# delete tag
		if [ "$allowdeletetag" != "true" ]; then
			echo "*** Deleting a tag is not allowed in this repository" >&2
			exit 1
		fi
		;;
	refs/tags/*,tag)
		# annotated tag
		if [ "$allowmodifytag" != "true" ] && git rev-parse $refname > /dev/null 2>&1
		then
			echo "*** Tag '$refname' already exists." >&2
			echo "*** Modifying a tag is not allowed in this repository." >&2
			exit 1
		fi
		;;
	refs/heads/*,commit)
		# branch
		if [ "$oldrev" = "$zero" -a "$denycreatebranch" = "true" ]; then
			echo "*** Creating a branch is not allowed in this repository" >&2
			exit 1
		fi
		;;
	refs/heads/*,delete)
		# delete branch
		if [ "$allowdeletebranch" != "true" ]; then
			echo "*** Deleting a branch is not allowed in this repository" >&2
			exit 1
		fi
		;;
	refs/remotes/*,commit)
		# tracking branch
		;;
	refs/remotes/*,delete)
		# delete tracking branch
		if [ "$allowdeletebranch" != "true" ]; then
			echo "*** Deleting a tracking branch is not allowed in this repository" >&2
			exit 1
		fi
		;;
	*)
		# Anything else (is there anything else?)
		echo "*** Update hook: unknown type of update to ref $refname of type $newrev_type" >&2
		exit 1
		;;
esac

# --- Finished
exit 0
  070701015D6921000081A4000003E80000006400000001642C0FB200001276000000000000004A00000000000000000000002E00000000nvme-cli/.git/hooks/fsmonitor-watchman.sample #!/usr/bin/perl

use strict;
use warnings;
use IPC::Open2;

# An example hook script to integrate Watchman
# (https://facebook.github.io/watchman/) with git to speed up detecting
# new and modified files.
#
# The hook is passed a version (currently 2) and last update token
# formatted as a string and outputs to stdout a new update token and
# all files that have been modified since the update token. Paths must
# be relative to the root of the working tree and separated by a single NUL.
#
# To enable this hook, rename this file to "query-watchman" and set
# 'git config core.fsmonitor .git/hooks/query-watchman'
#
my ($version, $last_update_token) = @ARGV;

# Uncomment for debugging
# print STDERR "$0 $version $last_update_token\n";

# Check the hook interface version
if ($version ne 2) {
	die "Unsupported query-fsmonitor hook version '$version'.\n" .
	    "Falling back to scanning...\n";
}

my $git_work_tree = get_working_dir();

my $retry = 1;

my $json_pkg;
eval {
	require JSON::XS;
	$json_pkg = "JSON::XS";
	1;
} or do {
	require JSON::PP;
	$json_pkg = "JSON::PP";
};

launch_watchman();

sub launch_watchman {
	my $o = watchman_query();
	if (is_work_tree_watched($o)) {
		output_result($o->{clock}, @{$o->{files}});
	}
}

sub output_result {
	my ($clockid, @files) = @_;

	# Uncomment for debugging watchman output
	# open (my $fh, ">", ".git/watchman-output.out");
	# binmode $fh, ":utf8";
	# print $fh "$clockid\n@files\n";
	# close $fh;

	binmode STDOUT, ":utf8";
	print $clockid;
	print "\0";
	local $, = "\0";
	print @files;
}

sub watchman_clock {
	my $response = qx/watchman clock "$git_work_tree"/;
	die "Failed to get clock id on '$git_work_tree'.\n" .
		"Falling back to scanning...\n" if $? != 0;

	return $json_pkg->new->utf8->decode($response);
}

sub watchman_query {
	my $pid = open2(\*CHLD_OUT, \*CHLD_IN, 'watchman -j --no-pretty')
	or die "open2() failed: $!\n" .
	"Falling back to scanning...\n";

	# In the query expression below we're asking for names of files that
	# changed since $last_update_token but not from the .git folder.
	#
	# To accomplish this, we're using the "since" generator to use the
	# recency index to select candidate nodes and "fields" to limit the
	# output to file names only. Then we're using the "expression" term to
	# further constrain the results.
	my $last_update_line = "";
	if (substr($last_update_token, 0, 1) eq "c") {
		$last_update_token = "\"$last_update_token\"";
		$last_update_line = qq[\n"since": $last_update_token,];
	}
	my $query = <<"	END";
		["query", "$git_work_tree", {$last_update_line
			"fields": ["name"],
			"expression": ["not", ["dirname", ".git"]]
		}]
	END

	# Uncomment for debugging the watchman query
	# open (my $fh, ">", ".git/watchman-query.json");
	# print $fh $query;
	# close $fh;

	print CHLD_IN $query;
	close CHLD_IN;
	my $response = do {local $/; <CHLD_OUT>};

	# Uncomment for debugging the watch response
	# open ($fh, ">", ".git/watchman-response.json");
	# print $fh $response;
	# close $fh;

	die "Watchman: command returned no output.\n" .
	"Falling back to scanning...\n" if $response eq "";
	die "Watchman: command returned invalid output: $response\n" .
	"Falling back to scanning...\n" unless $response =~ /^\{/;

	return $json_pkg->new->utf8->decode($response);
}

sub is_work_tree_watched {
	my ($output) = @_;
	my $error = $output->{error};
	if ($retry > 0 and $error and $error =~ m/unable to resolve root .* directory (.*) is not watched/) {
		$retry--;
		my $response = qx/watchman watch "$git_work_tree"/;
		die "Failed to make watchman watch '$git_work_tree'.\n" .
		    "Falling back to scanning...\n" if $? != 0;
		$output = $json_pkg->new->utf8->decode($response);
		$error = $output->{error};
		die "Watchman: $error.\n" .
		"Falling back to scanning...\n" if $error;

		# Uncomment for debugging watchman output
		# open (my $fh, ">", ".git/watchman-output.out");
		# close $fh;

		# Watchman will always return all files on the first query so
		# return the fast "everything is dirty" flag to git and do the
		# Watchman query just to get it over with now so we won't pay
		# the cost in git to look up each individual file.
		my $o = watchman_clock();
		$error = $output->{error};

		die "Watchman: $error.\n" .
		"Falling back to scanning...\n" if $error;

		output_result($o->{clock}, ("/"));
		$last_update_token = $o->{clock};

		eval { launch_watchman() };
		return 0;
	}

	die "Watchman: $error.\n" .
	"Falling back to scanning...\n" if $error;

	return 1;
}

sub get_working_dir {
	my $working_dir;
	if ($^O =~ 'msys' || $^O =~ 'cygwin') {
		$working_dir = Win32::GetCwd();
		$working_dir =~ tr/\\/\//;
	} else {
		require Cwd;
		$working_dir = Cwd::cwd();
	}

	return $working_dir;
}
  070701015D6923000081A4000003E80000006400000001642C0FB2000000F0000000000000004A00000000000000000000001B00000000nvme-cli/.git/info/exclude    # git ls-files --others --exclude-from=.git/info/exclude
# Lines that start with '#' are comments.
# For a project mostly in C, the following would be a good set of
# exclude patterns (uncomment them if you want to use them):
# *.[oa]
# *~
070701015D6926000041ED000003E80000006400000001642C0FB400000000000000000000004A00000000000000000000001900000000nvme-cli/.git/refs/heads  070701015D6927000041ED000003E80000006400000001642C0FB200000000000000000000004A00000000000000000000001800000000nvme-cli/.git/refs/tags   070701015D693F000041ED000003E80000006400000001642C0FB400000000000000000000004A00000000000000000000001B00000000nvme-cli/.git/refs/remotes    070701015D6949000081A4000003E80000006400000001642C0FB400000029000000000000004A00000000000000000000002000000000nvme-cli/.git/refs/heads/master   68fcf887353c3b93c924a3baffe8cc55e425b428
   070701015D6940000041ED000003E80000006400000001646F203E00000000000000000000004A00000000000000000000002200000000nvme-cli/.git/refs/remotes/origin 070701015D6941000081A4000003E80000006400000001642C0FB400000020000000000000004A00000000000000000000002700000000nvme-cli/.git/refs/remotes/origin/HEAD    ref: refs/remotes/origin/master
0707010176359B000081A4000003E80000006400000001644643EF00000029000000000000004A00000000000000000000003100000000nvme-cli/.git/refs/remotes/origin/SLE15-SP4-next  c83733d2e3574b1341b1dfc165da195e612a37ba
   070701018A89DB000081A4000003E80000006400000001646F203E00000029000000000000004A00000000000000000000003100000000nvme-cli/.git/refs/remotes/origin/SLE15-SP5-next  f4cfca93998a2e3bd8b3ba6f01b052c6a95fbc9d
   070701015D6930000041ED000003E80000006400000001646F204000000000000000000000004A00000000000000000000001B00000000nvme-cli/.git/objects/pack    070701015D6931000041ED000003E80000006400000001642C0FB200000000000000000000004A00000000000000000000001B00000000nvme-cli/.git/objects/info    07070101755ADF000041ED000003E800000064000000016442733600000000000000000000004A00000000000000000000001900000000nvme-cli/.git/objects/92  07070101755AF8000041ED000003E800000064000000016442733700000000000000000000004A00000000000000000000001900000000nvme-cli/.git/objects/ec  070701018A89EF000041ED000003E80000006400000001646F204000000000000000000000004A00000000000000000000001900000000nvme-cli/.git/objects/34  070701018A89F1000041ED000003E80000006400000001646F204000000000000000000000004A00000000000000000000001900000000nvme-cli/.git/objects/b2  070701018A89F3000041ED000003E80000006400000001646F204000000000000000000000004A00000000000000000000001900000000nvme-cli/.git/objects/61  070701018A89F5000041ED000003E80000006400000001646F204000000000000000000000004A00000000000000000000001900000000nvme-cli/.git/objects/43  070701015D693C00008180000003E80000006400000001642C0FB400000D3F000000000000004A00000000000000000000005200000000nvme-cli/.git/objects/pack/pack-7bdf8f19ab7444581176724ed847b8b4d7a558d2.promisor 68fcf887353c3b93c924a3baffe8cc55e425b428 HEAD
5215cf75e5f478fcfdab09086cc0d619fc5d5f99 refs/heads/1.11-stable
07d9e6a79ce12070286c30f695328f49f7f53cf6 refs/heads/SLE12-SP5
86f82c58cb9792703fe9fd402537aff39b536204 refs/heads/SLE15-SP4
f955b99e51003d0cf802d400ec09fd3c5d37fd78 refs/heads/SLE15-SP5
df9600fd220f9cef6fc02b85744bcae82adedf19 refs/heads/SLE15-SP5-next
59c3abad4e26487fbae72b95316cfd773d6f57ed refs/heads/integration-libnvme
70b9835a9dace56557acc5ed10fd4c77ac063238 refs/heads/libnvme-int-3.4.2021
68fcf887353c3b93c924a3baffe8cc55e425b428 refs/heads/master
2ac02061479a49cc9d77d23443d39c61cf11d542 refs/heads/nvme-cli-monolithic
b51ec72399b1e729394b5f44cc4bd4a095451713 refs/tags/v0.1
2827dec42453266f3e723dacbedf930ee6bd5efc refs/tags/v0.2
bdbb4da0979fbdc079cf98410cdb31cf799e83b3 refs/tags/v0.3
2ea5b01ec664e5a19a7b434ffe5370daae56dc74 refs/tags/v0.4
76f72197156c541dab2192df391f81550cc6475e refs/tags/v0.5
d6748bfba3a98ffde5790ea632345d2f3caec95e refs/tags/v0.6
8d6732d9f042df6b3e91ed5c942987649a282f0a refs/tags/v0.7
ea0658725898e4831edd70823388e2c8d143defd refs/tags/v0.8
f2273c28dd277995226b12abc73688778ce001aa refs/tags/v0.9
f6a8a0744553ab1fa7796498f8eeb6f5bb8e5b09 refs/tags/v1.0
d15673ce8d2f909dad160c4501aba0eab94b938e refs/tags/v1.1
d158aaefcfb063eca95f1bd0c522abf3a17a085d refs/tags/v1.10
1d84d6ae0c7d7ceff5a73fe174dde8b0005f6108 refs/tags/v1.10.1
f51db5855593b84a79cd9f48322e702fe0be8bb7 refs/tags/v1.11
e2126df6079466e80d76ce5fe86e4bed6a3b7028 refs/tags/v1.11.1
5215cf75e5f478fcfdab09086cc0d619fc5d5f99 refs/tags/v1.11.2
949d0aea730136d04af1fb9e0efd4427c20dee6d refs/tags/v1.12
f0e9569df9289d6ee55ba2c23615cc7c73a9b088 refs/tags/v1.13
627602c91e51052e349aac6b2c56f0cacae82648 refs/tags/v1.14
00e93879605449cabd525a85b1f8cd467e224aca refs/tags/v1.15
deee9cae1ac94760deebd71f8e5449061338666c refs/tags/v1.16
891899661cae31be232a8046bded2c1e928be8d7 refs/tags/v1.2
272240a5a4164e2e2100a84f120e99ffefd1c271 refs/tags/v1.3
10e0bf6130ddd3c0b937093dabfc93b4fb5614d7 refs/tags/v1.4
121dc80e99ff6e90fb79d57f6ca81527b73364fa refs/tags/v1.5
642d426faf8a67ed01e90f7c35c0d967f8cc52a3 refs/tags/v1.6
4704680580b24cd7ea399e9ac679839d0414c1c9 refs/tags/v1.7
2853f90c715ea8f47e9243b6cbd1cd5941049e4b refs/tags/v1.8
c40b5f01e1c89f3b0ed20e24e9ba1564bb13b894 refs/tags/v1.8.1
977e7d4cf59c3c7f89e9c093c91f991b07292e45 refs/tags/v1.9
b4e1b642fc500adef3fca4d49f7ccdcc4882569d refs/tags/v2.0
7a97bca7b826941225baa96abb9c8551b8cc0b74 refs/tags/v2.0-rc0
6d6a08b757fa1b2ad65af6a5bf8526a268065cb4 refs/tags/v2.0-rc1
e290046eff3cfc6035185b86e9c013c66e3a2b73 refs/tags/v2.0-rc2
f02a78a4599b4fbee9ca82fb887f2736c5a67bb8 refs/tags/v2.0-rc3
59263bbcd3e4f5eaffe7d200c4cad2a361008e48 refs/tags/v2.0-rc4
221734dca8aabc8c2e30820368d1fb5893c80c00 refs/tags/v2.0-rc5
6d3ca33c721d4481bababdd8280a90b1ea47a1a5 refs/tags/v2.0-rc6
555e9d750464dd3c09701eb35e40ad3f5f8eaf97 refs/tags/v2.0-rc7
27eb620d76c2de4520d15636e811bd61be5173ce refs/tags/v2.0-rc8
d78d46a583c5bd8790f68851d9d69513c297f065 refs/tags/v2.1
b1975e0b0a9d9666695d4ba731a34c3386b03332 refs/tags/v2.1-rc0
9409512c3c05d089e7ad690688a781b7509cb4df refs/tags/v2.1.1
bf5a5f47fa3c4ae4d07d36df5b3f2dfc8535701a refs/tags/v2.1.2
3f5a546e31e85b20f57f046674ff7c8f63889fe2 refs/tags/v2.2
bc474694d27c50f639248f94a279661f322a65b9 refs/tags/v2.2.1
e80f3e8b27554b8aeffeef0c3500551ca5582733 refs/tags/v2.3
2a83e0ab786e693e8df75ead028ddd5dc8e12903 refs/tags/v2.4
 070701015D693900008124000003E80000006400000001642C0FB40012654D000000000000004A00000000000000000000004E00000000nvme-cli/.git/objects/pack/pack-7bdf8f19ab7444581176724ed847b8b4d7a558d2.pack PACK     h™4xœ•RÁnÛ0½ë+xÜ°5»‰‹ (º ÅÖõ² è™–([‹-e’¯?Ê]‡ö8@Râ{||b
DÐT«bYÉ%z½¡¦¦–uYJÖ¤×Õ²ÄR®T‰â„\‚¥lªåº6Í*UM…r-¥1«B]6µVRoju)pLpHt&]«:ò=|ç®Û¨
¹YôD7‡Èoå‡k(.×ëÍ².ë
>ÉZJÁ·ƒM‰ìÐYêá	[ÇÙvÂÖÞÞùaáC;#7²æ“‘#…;´PWð¥#u„½ÃÄ#ÀãIc"¸èÆƒMÏ`˜I÷BìŸï8ÓVqI„Ô´oêÐiÀÞ¶nÈNú5Ú@sìM.æµ‰°eoÉºÆ¹¡†æy&ü'äë\³ó“ë=jÈ“rƒW‘ùO>d Ë+áÞÞÂèlŠBvï$bçùÆø0`²ÞŸ·ª™êüÙjÒb¿¦¬5f‚@1«2ˆ¦Ž?-uüÆGÂû‘>Ãé¯”xêmŒ€ ÉàØ'!vž‰Ø‹3…ÀÝ^8~þ-æhm^ö€9‚¸¸†ÃxÊóë¶Ô³3mžöC®âGPIˆt¶4‘¾hž¯àžlêàvŒªƒí1'‹&'7í€¶Ÿ‰/æÍ€ë¢=Â7bg¶Ý`?9z·xâÀ¸Ú3#þkkÅY•xœu;n1Dsž¢s{3Ãù,ÁP X‰8æ§8C›ŸÉ‘°Î:Ômt é¦NV¡_uwÕÐ¬FH;i){µJËÁûQh¾šyÓ$8»ÈŒXiéa{ÌÐS/Œ^Í –u™9Ç ¬2|^–‘É£î)ÓëËÏ·_Ïtk¾ß¯énÒùN§ð‰†Æ¬bœÏ+}èÏ}Ïš\­Èt/£ƒ§¯r‹MÝ>ÉÍÝ…SèRÞÞÉuYÎBŒÉ|ÚnhwÛN^VD}¥êJ•áB®”Œ}ÙAÉŠ'íÔ“…¬G…ø¨\¥š(ã’Qþ<ü7è#©£É–Q.Ðd`]tÕ¥Ø6Ðtn`ÇÆŽ‚òò(H’T|;«’N9C¿·xé}z"ÛúIÈ¶‰ŽñŽšY÷÷ÏtS1‘OqkUDÀÀtŒ}v­sJÖžÔõæÿ-³ßæ¼£(—xœÁnÃ †ïy
ß§F$$@ªjj¥]vÞ¤MâÔ !º§Y×wãïã·S$&d;ª$ÃJµjäÒ‚7ƒªêtÝ6ÞŒäôRñQp-Ú®“6Œi¥e3ªš1VsÁâµ¬û×4…ïá¼ú-¼žÉ ³p°÷C™ŽÆ¡Ë>¸g¨„”mÕtª‚'Ö1Väª³)Q„ô–fø@ãóíð‰Æ]ðÁ•!š;)„ê8Ïd•ÉÂ_íá4[ãÁP‚‘0­‘`À„ ×qÌš™¼Iè\Ð,ö‹ Ày=&*Š7ë{G.ÄPŒy˜×…†Z‚£‡x\îò>Ä¸^Rn	×¿OÊâ4/ÒD`—e¥lñ 	2æë]·=özó›b‹¾Õ~¬MÎ”W0ìÂ8îômÿÏÕß¯½ŸR“xœ•»j1E{}ÅôÁ‹ö!­×˜à7nÒ8ZZ6ƒõXd­“ü}DŒËdŠy1w8Üœ‹^ÛºUZƒnxoM™Doum´è47ã‡®µlV	C4Fš^¨A
+T­5×Â¢5bh%o:3rÙÊ±ajÉï1Ák<-!&‚Ã	'å	¶tmª¼›¼"WÑ?B-û¾—<ðsV¶žrÆ{¼©)”iû¡&Úù¢¯bš®J)×CÛe]”,\<nà9†LaA˜0ƒE•—„P¸(G^Ž€)ÂNüâ2Ío·dÎŒ£¿mÎ°Ô€æþ	Ù’{PÎÿ´¿­*á<ãH–ÐTìÉ#Ì‰Š‹÷LEkÆ¸ªFÅ³ŠÖ®ô×æ6³o@¥Ê•xœeŽÍNÄ0„ï}
ßQK~Ú¤E+´Hˆ@âœMœl´m\¥©Þží	.Ûúfì’O½b=ªÞ(­­gBŽ¥7JLLøž)¦ûQYÕ¬&c*`àùT‹éžŒÄAiÉô
…÷8Bk~jÌ^Î”áâÐÑ“çî·?n4GÃRÐžÍ¾;KË#ðúÁ ¹´ld¬©Û%–‚žMŠ8Ã§	©N‡«	ñ¸P¢¥£nNÍÄ¤àŽñêlÖy1m÷d×x}zû ;Óî žƒÓÀÇ/Üº¦iá%~AL–rF[þ±7›ãZ"¥û—ÀäÚBm¸…TÈûËÖü ®q*›-xœ]RKnÛ0Ýë³Sâõ1eA‘6]4MÓ¬GâÈb#‘IÅõ­z†ž¬CÕè";‘3ïñ}È²+÷»J¶¶»F´å®´¯EQÔ…¤¢B*Ë=uE2£# oûœdWTy[5E/d_6R6uÕT{Qçb¯Úª­H%¸„Á:ø¡ý€#<¢yÅŸp; Qƒ£ÂuÞäŒÈåUèçþfñä|f¬£y<e†¥Í:;}„\ÖõNæB¸»R$|;éÈÁ4šFxÁƒáÓõúf²ÆN™u‡3’ÍT’‘L$¨M3±ŒÅ8Be—àAµ!8òË‚§»,I6ð?£œÒWß´IA{8º(Â¬H{$×¡§-ïŽä™.€è˜Ásrd:Êà+ï½‘ÛòØÃ<.Ž³9Sú•sbÿ€óììì4‚–:ähÀö«¨Î2Õ¯±°OJ‘Šì3vq/‰ÅÄ%³L-ÇÁY¯ÇUýe‡J~ßSŠî/#ÏË@.Š‚”GéŠúï’•¯¢ÇHåcgÛõfÄµ–‹c%ê_‚é}Êñ}£>û ›˜áƒœÁ ­aÓO'Ï-DWÏ¬Îo¶Ð0ˆ”Žs¸(DÞp”³âü;^ná3÷…Ë;"E­V(ÀyÞñÉ_#éï§Ÿxœ%ŽKkÃ0„ïþ{Ë!Åèaim%´½”RÈ©=¯¥õ£±%#+-þ÷uÈmf˜o˜œ˜¡Óu…²vš)j¼Þ ä¶Bm;a°agTªX(qÈP£7Þ7­Ò®n+[ÉÒYaÑQ×	]4ÈÂû‚nyˆ	¾Æu 	.®ô¯Ÿ('ÞN²‘(…´ÇÜ-Ýù¶rZË/ÓVöcnméâüÒ"VR5JÃQ-Š=Çœ9Á…‘'ø¦>ìîôGýxžcˆsSÿ 
UÙ”BÅýAÏ<ýŽá 9ÂáúÐO@+$¾¯sð{©Ý /ï—Ï²øâø]m•xœ]OoÜ Åï|Š¹í¡õ¼6 Um”ª—©‡ª06
pýöÁÙ^ÚËhþè½÷Ó”„¨z'zê¥¶Æ
ÉZÍµ¥æÄPSÓ´m•åÈÈ¢†ìÔ¡’
*å`…Â¾ºÅžq-åÈ©E-NÔZ¦˜à;š¸}…'•<Ü½Õz4ûæ’£wÆóQÇù¼—Œw=4TRJêvv¥`5PÁ¡‡_juºÛÔè.sq>Æ4~*EÛ	ÖIøBYU’Å¯£ù[ÔË~¸wØ&W0/J#¨` —«Gp9¯˜	yÈp‰© á

t4Þ…=;a^}Éà<?¾ÀÍ™ßfû¤9hÀÇrÈ-Ì*¬ÊƒöX›e?Y÷^]C7¸1èI…ÿÕê·£ße09ëêá›+FWÀ8k¡i¶˜L³÷òJ~ºŠbšhm3\Ïÿ¿ë/é%¯ëçïÉ£Õ£óŸ&xœQM‹Û0½ëW{j)1¶b[vX–,,…í¡…n¡‡RÊØ»beÉH£dÓ__%)-ì©ôÄû˜7ˆ ìºfR²¡fêÕØUŠ¶ªtMm×÷e¯»
•Ru+VäH6ÍØT²$Vƒê'ÙÖ’qÛÝÐÈ¾¯ë¦nZ‰ú _üsr>x|¦·æz)x?/hl1úåªVµY¨,[xWöe)2ºf
ð€Î…¯8»üº=âlö‹w~)|˜/L%ë­¬TfV™)»ƒÏt ÀðáéÓGð‰×ÄÀV‹ÆKË@!
q¯5ÐËjÍh¬Ñš_ÈÆ;ˆŒ›Ít‚)¹ñMy dW²û‘åN+ÅBÜÛè!çÌ™žSf§™r\dÊ²W;0.2¡?eìª^ñÞ¼PÜÄnûÞÜ¸ÃB›5ÿòLÌ‰OÌ³X?ƒFFHÎp„pC§áÎM9xz„ÚD7oÅ“ÉméŸ¦ÍpÚýçÄ7}¼´¼ËY9xÆßýkÈVåß2¾¿öxµ§?Rû˜"šîÄoÂ!Ï]œxœ…ÏËjÃ0Ð½¾böÅF²õ°B)	ôºèzdƒE‘ò÷ÓîZèn†ápï´JA
nŸ‘‚u#ãôìG1J+ä¤gå·ì+åœKŽ–+3¨„˜¡ÕÀN
‘HË Æƒf¸µs©ðŠy¥ï¸dªðì¯áxÙ.Ô{z¡–ÆZ¥à‰ÎÙ\RZ[£_ô.×c*¹¤¾Ôå!Í0
!ídù3ÑNÞCE¬Ë–öÊ­@£H‰Z½u±,°G`öŒb,×ý>GÂ
íLéÖ¡|ïÊž±·õÞÊw%„ÎÝÿ½É¾ ä˜sªžxœ…½nÄ „{žbûè,>ÿœ¢èŠ<A)5‹„Á‚½8ÎÓ‡s~šéÐ0ßìîPB¥Œhí ”æVuZóFw‚‹¦ç\öýÐèZJJÁ•0p~9šV)ŽRÛÂJ÷\Ê®i-7Ü6­SWšb‚GzxUcÀ÷fÝç|ÍX|€ºíÚ¦k}w¼æœé8ÏŽÿ …tç9†8W1;Ù	Y×ÍðM²ð6ã	žÐ*Meôˆ„g¤´#,jD˜Ð/˜ûõÑô#E(‹¾/ÞiG £ÁBÑ”Á…Låfˆ¶¨Á8r1ä°"ãWÈî¶>®¼L® VµAvóâ¿ÂÓ-A³Ûæ«'ÆdÙ}à‰Áo0¦¸Þ~J-—0WŒ=»Òƒ9Dk—íô_±ìf–xœ…»NÄ0E{Åôh#¿¯ÚÑQQPFN<ÎFÄñÊ™€öï	Ý\éÝ;T!¯uªVÞBy%ZiM2ÉyïŒ.²[¨¸H.m2ÊH¹Ãd…±ºWƒç-o“í]+¤å¾•,lt-žÃ2áïa\°Âcü:ŽËº­ØD|aÕÖ{ÎáÎÙPržˆðº›Ó%—¥ä¦Ôñ0TBhÿk²å3ã^Â@{qÙöÍ+áŒ©Þa.#Ä G^ˆ±×ð0"uB?L·3ÝçÛ^ Ÿr©CýŒcoÓ¾'žJJ§þ~þïAör6qw‘xœ…Î½N!†áž«8½Ù0ünŒÙÂxÖ8Œ$†U÷îlì,ì¾æùòÎA\'ˆ¬ä¢–Ze>KÌÎF+ªœ„p‰³j¬‘Áiˆr0>,É Õ<¦À%_rÜ¿"×Az†×ùÞ<c+ôo¸6ð˜¾îã¼]7:&za¬QÆ[iáÎYìµ–9éÝe9×Þz=ö±Þ¥•‹ÊÿJÖ>+à¥|Ã¼]Jco¨´m¸c¯e¿J‡žó!ÜNÿµ±tÌZšxœ…ŽÍNÅ „÷<ÅÙ›6ü•roŒ¹ßÀ…kà*IC©Æ··©î\¸›™Ì—™Þˆ`ž„ð6HQa@g½ÂY.ƒ
I«¤5–Ø»kT:D1IB'ŽêÈpï¥QÚ{Q{²Vëéâ"s{«ž]I´Â«[
5¸ÇÏSÜ¶}£é„™×b¾h¸ã‚sjÎ©wúƒdºåZjk[~H#¹ææ—d~O+^áò^œºkuÆžNW>2aM°o©,godì%8Ôÿuýï4ûsêc.žxœÁj!Dï~EßÃ,êL;î²„ä’s9;vkdW®CÈßGØÈ¥¨.xEWoÌµ\|X2#«Í*iÐPf%æÍnÒ‘¶Z|»Æ¥ƒ½_i™†…H!‘¢7ÖËLÈžII;·÷¯Úà£^÷R[‚·+G—œÓÃú%f—n_ó3(³\õ"ð$RŠ‘æÔ;7xu%ñ>],ã:ÿ¸˜.¹–šµÅi”53RRì%õ¼Aç{Ÿ\‹¾–â4&ÜYˆ÷4šhª!LÛïéŸŠ?TŒ_óœxœ…ÏÁjÃ0€á»ŸB÷Ñ '±”1:Øž`‡åJi‰=l‡no¿t§v?ú@*I‰MÝµÆ·½µ^kl[-BÈ´FÇ©Ï¨¾(I(ÐÖXÛÚh¯›9ÇugZ‹ìÝÕÎé^+ZÊ5&x£0ÊŸt	’à™oÛpÊK–Šå´uÖØÆ¸žP#ªsœç±y «Osq®bºÜ¥ÓM÷'•_Æ‰ðÊ¹éñÎ)æ[
ÈOrÏErÉJ½ïíäMÐ”#¤%¬Ã´¸]%ì+c¸ì¢Rêc\¯äC†ƒÿ9þ÷¶úZÛx5Ÿ"xœ…‘KOÄ …÷üŠ»×ièƒct6®q}KÓBÔ‰ÿ^¦:n\¸#çžïÜ9Á~¯Höm-ïZjÚ®VvèlÝôRKÑê¡W¢•V°#ùJŠAŠ†£è¨i°³š7”Ü¨¦:
÷JYâ×|
ŽèMð†£§wæ¼=Òš¨2tu¿ïEÛ¼…^sÎt˜g—3ýAéæàÃ\…8^IÙW’©ÕMæ ¯‹ÁLðô› ãH91öSÈ§¿EHÎ:|”VÊe˜C¼Þºq˜]ðÔT1¶ƒÇŽ4&ô©uüM¿†³Ë'Ðú±HOÅì×eëoh1äõ'L.å[ j¬àÃwqrÊ¨5]Lä7[¡|È`ÑMPF)ÿ1œ1zçÇt{ß•hÌút‰š€ó×ÐXbx'Ë/®Öì‚µ;õyøï§Ø‰{µòxœ…½NÃ0Fw?Å[A#ÿ$q\!Ô‘!FäØ×‰ÕÄF¶Cáí±
LlßrÎ=º%!‚Ð½™µ¼EÆ•0ÜŠ2&µEÛË¶3|0”Kò¦†T¡l•s=×Ì0:8{©”£8t¬³\8*1h¢·2Ç:x\àEOÜÙËuœò–±±x¬—}ÛSÅ(ÜPF)1q]})ø­¤?­1Äµ‰iú&;!$å?$	ï+á9#˜yg´P[ð&,¯Kœv{BušJÒ!»ª]ý4±À%¦3ŒhtMƒ~Ìu–êÈqKañ5,ßBŽäê‡2ãï…¡=ÃÎ¢ÓÛRö!O¾fÛCtî0~ÿûùª›xœ…ÁNÃ0DïþŠ=‚ •;IS!ÔP!Žhc¯‹Ä.¶Óª|=-ˆ—•WÞ73šˆ ¨[Øò†KYÉ”Š-WTóŠTMQ¢(;` — ”Fš‚ó…ÑB–BèFr#Ú²ÕEÕmZ”Ý¦`8§ÁxBgi„ìxÐ§¯Ç.Î‘Öš³SËšËMw<ë2å§É¦DÐLÚÝäŸÖ>ô²¢áå•dî8Ñž#9ë’“PyN#ö£ï{ëz°zJ¯y½¹eìp9Ê¡"¤Æy8b°Ø§Áªl„Ñ¾Ñx†H	’~ý	u=ûåu9gÀy·ú à÷ÕHn‘
ô>Û@r±8ma?+•9Æ~æG§ál¢Å.&õ¿óýðY3¶·¹$½òÆ¬ºóö¿ÖÙ'Ì]¦Kxœ…ÏÍJÄ0à}žâ.™!MÚaAÄpá²¤¹7m IJ'µøöŽ"n\¸;pø8œºRä¹è8o…(¤Å6x'Œ4ÆiKÊ®Á·R®Ði‰²Õ¥5NjôÚqá1«CÛqe=§N›†¹­Ne…g—#ÍðæÆL+œqÿ—ëv¥#Ò#cM£”P<pÁ9ó%¥X+ý¡7/©ä’Že¥åòG²a‹3žàiKÌqÈï‰`_ÝÂØU?A2íðUô)öSÌýHµŸËØ/n¤»{[ö5–|dì5Þ–ñPB8§ÿ®°OpTiÅ›"xœQMkÜ@½Ï¯é%¡¬¿=&„…†R(-…öX4y=í1ölÒô×wv“^zêí=IO¼'Å•œu•f.¬¡ŠeÓra8áBJEÊô•­¤F,{±àÊsUSomãÊ¦­k©µÑZºÊèÂ–„–ZRŠZM­ÀSÂ
‡È=Îð	Î~{¸Ý.…÷+»cFaºƒR*Ù¨Ö˜vE["U'#¯p³ç¾ãqNìö~?…9LYXoJ]T•„÷E™”b~š¸ƒÞÿ‚ÜñS¾-.‡ø²!÷Ÿáë·/4àŠtÞŸf<ñ)Œ0²Œµî1$
«óób€8°pNS:Ff¸b\¶.¿Lg>ä©ŸMdCœÆwgôƒNßdð1™J.n2!å­I¦W¦êAÔJW¶®dÝRÓp­ª­µµ$]p}õšíaõéýißÜÃ‚q¸º¨û÷^îùö[r9¾Ÿ¸Û…¾ßÙ—îÿþ#þ _@³B’xœ…ÁNÃ0†ïy
ß8 ViÒ¤Ù„Ð¼ Î^ì¶ÑÚdJ3¡½=aˆ $,ËßoÿÉÌ@hz%i°Þ­<kB¥FRèv¥B¶Ü¡Ä3ÇFËA9ìÉ[g”#çÝŽ:ßj‹Úãº±jj—2§O/ð†Säô~kÛeã–ø:;X©ûÁh¸—”Â§u¥ð´’á°¦˜Ö6åé‹ì­µ»oRPò{hš­¤Œ7§ÆÏìO@‰·xW à‰ã0O—µÚÙ„x=†2×,’¿M±„¡Ö/Z-¼ÌaƒÏ/1,!²HçPÇÇ”Æã‚|nü}»â9ToÔ¤qlŽ×ýa‰'jEFxœ•SQkÛ0~×¯8ú²–Å©'Ž[Æ(kö0Ø`°AŸÏÒÉ“%#É	ù÷“§MÚ2èéî¾ï¾ûî9_‹M]­øZ\’Tˆ»5GÚ”²y‘WË:_±™ ùº&Q¬Ö$9b™.ä
«ªÌï–›5Ö$ò%U‡ÐZ?Ðeài49øÔy=i=ç¶û‹rSæ«jqWB–¯óœÅh§Bˆ¨-Ež°1‰czè¬±ÝÜºæˆ\•e^-àc¾ˆH&±vŠû{øjüàZëC
án•DNÀ­ñÊ2ü 2
½ŠC<d¨õcO-¼2ÍE²LÐNqº‚½Š|O\ÉCª-íƒŠÔ,ËÎzSdl?ky«´ˆ¶ÂÔ!¡ÃX‹;«<v—¼Ð ú#Ñ3‚M&”çvGîrÁY­£q×ÛÇ›9c¿[å!¾£rÅ'ÌólÓ°o)Zg£Á“d=¹£káUO„w;ÆÌÐôJ”¶ôØDÎëí÷Ÿ7£?aÂÚŸ±xÐ©§ eXÒ™²5‡oòEsœ'j°¿b´·ç{¹Ø{wNÌïì"1?¯‚aNÕC ä=Ø'—ÆÞéŽRÙöñŒådx·qåÄÿD÷%üû@`\MdXïìN	³±("£¢¨ØXÅƒ<IÛ>~ðo9ÙçIßÛ1ÅxJíÀÊ(4ýOÏ¦ÛH~3öKÅ(2+eVîÿãs³¿Ãe†!™4xœm’Ër£0E÷|…ªfIÍxh*™
ãØ&ÁŽ_;@`#ñ¶Í|ý8™Ê.½êº}zuOßR
(¤HG
‚jbÒ”jT7,b¦“„iVÌ,„cCªã–ŠÄfj1]§–-E‡$Æ&R±Å¤Ð4¡¥a¢‹}ñC$V­”âT!:T–dfª‰Šf)Æ:BD•â¡Ï«x±(h	vq&hÈõsyê†Žþ"ô€†i Ý@†d*Š”Vœ}‡ý¢Ÿ	xUKër|ÊŠ>’_wà›·¬Îº"??Æ™úÁ
¼ú¯`ø+{óM?s	HàÚ9©cÛŽkÛoÎÛüd.‚¥9/f~BáEkƒ«mG®Øs+D¹¾’×¡Â±W›ó4]ãQ¹¦5ËeÉì/Ü8¯oM¸Ãˆ•)g[{›>†kÃAu2ãyo6N»;H`R”‡M<x2…†~lZY³uÙ2zóü}{-é±Âõ}´UÆ.;’l.;d®Õ5ô¼ë\ð´9ø–³»¹·äVèK5ÈgJ9óH¡ýèúþÔÞï{¶’qðÞ°›¸áæšöU™!oÉ$ÐÔþ(—^ÔWÇNŒ³D<ëQy~7Nû¨w;§zN5%ÚsŽ:¶|'6à<\ÙžQ8bg·'æ´žOÞvZ)š«pdà˜Ÿ×Q‰»Ùcu³×ÊbJ³´C®Ýú©¼]VxÜxa#ýïlºò¾oLZÒ6£ Ê´´h×ƒÐ‚°¶â ¢ÊÚ¢?S!Æ	»»9’T—CVˆnòuýxE
6‚»bA@U§¡€Ý¥—»×e•<%¯ÿ9“d—xœ¥Ýj!„ï}ŠsHý_·”ÐWÑãq#Éª··¯)ä	z50ó1ÌŒN(½1¤¢BÍ¥SI'¤×!Å`&	ÁšïTXî-0A¯^'e'0LÎ‘S<J)MP™?ÆµvÈ¥Ô­çq£Ržðõ'g¼ßï kog¬û„]¬6b5+œ¸ãœMwÏcÐÿZX»[.7û	{9=áÕïK„Ú°F‚4çÒÏ<y¯¼|ŒÇÞØ/ø#_³š.xœ…R»nÜ0ìùU	‚Ó‘”D=`.‚¸	Ò¸H{c‰Hž/ùûð>¶«´$gvg†) ‚b¢RŒV¢í;ÉUªi/¤hxÃ»ZUC-[$«èÚµ5ïX>ÖËzW‰¾ÕJ+%º»ŠÎy£*mˆÜ§É¸—£…»`…a„›˜ËÛñR–~&ZQ7Lp
Ÿ(§”h¿,6%ðE:‹3ü£ËÕ9œ~nã>bi®PÁZ‘¡,C‰{Zp³ëÒ §¤	á¸
#f¬Õàd.¬ƒßÑ;ðû´îÈœgB¾æ‰•OD»¬3‚t&ig4—Ã1cÄ7¨‰žd0øtj±]å™ÆÎ2@ò0ùÃÿÛ·W64enoÿ``G»¾Ñ¨XÝ |(^‹zÖ’›Y}R3Û˜àè\ž¸øHîmvÊlün·Q‡wC ß¬{`JiÃv;û€å#‡séÃ¸[NyE9khOsFe«ïëÛ¼d"?/! Éžå·MÖ;9Cqwžºxv=›ráálp|8iÈZ²K®Oñ=»W©±€ˆúHöë¥¾w.
ùõt‘3xœm’Ks¢@ „ïüŠ©Ú£›8#00[ÉV@¢(Š(Êm`å%ùõ›dkk/éSW××§î®á`]Qh”`J1a2Ö9Bl”pYOtkœi„BC&Õ´áeF
Œ©B9Uã(f*ƒˆS6’#¨Œ(¦ª¬ª#BÕˆüã	§1'bP•H’R©&$‰Ucˆ’H‹G‰Dû.«0¡¥à9hZò<±Û—yiû–?2þ ¬aEÁú‚DJqU¢ë>`Kt³>OeÕð:¿¿¤¢Ëúèñø¦–Öi+Rðð)sjÙ+°¶Ö`k[+ÃßyÓ¯\¸µfl†96Œ¹™Ÿ4ûí<öÌ…–÷*7öÍ0üÚ†é)ãÐ96Y0Ežá
©îr#î ªûjV:ÓruÙ¬ˆ¿?4ü$îÃ}ˆ‘¸_nšµ_àÉþÜ†ÕÕö#h9võUïfÅnx—€fñ,ˆtƒžN®8d[^ûÓpÌçÍðL8tsi´hv^Lyœp×y

Ùr²\`,ÂHjèôGØŒwV“L}ãûu|/qÿžùç@q"ç‹¶k§àÖvù¾æ×Õâ‡A3€ˆÎ
Òò=>ÞgÆ¼‡â8=üm.®4H7üµãZïFš
ãÁ\ŸwpXVéV“{	˜ãXÇË fa‚×Ô½ÞÂ$~­¹§/Íä0Iß'¹9¯’c!»³½èÎ«½t*bÀ“¼{–Àó><éïfÓÕäûÅ¤%oRê>ÏAÃ/=o;ðéHIS ÔrÎ‡¿¨sÞ‰ª”¤ÿþHÄèîuõPÆ@!ÚV”) MÚþx#ü“!xœ‘MOÃ0†ïù¾C«ô#i;M·	.ìÄÑMÜ.eIª&Æ¯'À$˜8ÁÉ±ã÷±ß$.D ÛºÆ~ˆ²Ó•l©(t9PÕ­é¦C.$×lÆ…\„²æ
k$ªWZh^ê²êy]¢DQ	Qv(úŽá1îý»HÏä`GG7ª=ùÜ¥©ë 
Þæ¢›€6¤»\y»B6²®d!
¸âç,U­‰‘þj¯Ï Ò| h¼[Á`^!žf¨5X‚q#à2Æ^){£ÅÈ6ðR`Yæ¬Q’±-IM–ý¤„±ßÜš“ŠtÖŸVðèÓ¦“q°MÖ§)™îò)%6ØÎŒ.Iü0|ÊþôìÖg_Ÿpzo\0O°%ï`½·&ŸÒéRòœo®ºœ4xœm’É’›0E÷|…ª²tuÌ „”J§x<aÚ1Ý;ƒ™,À4ýõq'UYå­Þ»uÎê¾^0¢ˆ¢˜0ƒa™G(6Pb(ˆQfh2•5bs®&ªÔRÁê$Æ$ÒTDÎuÄ!Cëˆðˆ>$Ì¡Æ’ö'DÕVl¨yx\ƒªN4Btªbˆ!ÅŒi*‘èÐg Zç¬šÖL€ïÉøgùÙûš°@AÒ$ºf²"ËRÜTUÞ÷x÷›!ßëF°¶œ~¦yŸÑ×ð-mÓ.OÁÓçXËµ³ÇõÎzo¾œOË?¹$0vVl™¦e›¦oùnä)´O–gd<Ü5áŒ¦ù69Ž¹ÁZS¼U¡e‡ÅfËKöÉL/ûËAöÄâ½•l/f0OúäØînóâ#ÞéÖ[h^¼µ³Ãí/Ö¨ïÆþPMD¿FAP¡6D	³£øvÞR­¸·]¬‡Õmw“œ®írãÊ|­Kÿ\±¹¸ìä³½¦"	¸±CÍaºÌCñ*Üè—}f«fòâ"t
o±:YS½ºú|”ö†`g€¶¸«GÓÚlÝÖ¿K@§<›t¿;ÛUqx¹Í¶®éÀx·ž–\Y=½æZLÛ4#ÜÍ[ìÝæ§„Ó:ÌœkßC	ØÆ)_]'‚G:a3[WúlßdÑòjÊö©‘ý;šñsÀ«ÎÂŠŒšØ7ž"½ËÏxö6ž'ýíl¹_ü¿1iÇDÊ@;”%ì6°®_¬@ÀES‚q.ØDËœÕó’ö¬Ž§§²I%©-‡4¯»ù˜ÄßÀ*	í)X5¢¢}Ÿ×)à÷Üþ5À®©óþónRp¤)ûQR“xœŽÁjÃ0DïúŠý¤+K–­PJO9”
ý‚•vå¨ÄRpZÿ}è½e.3Ã<˜¶ˆ kŒ½·^{+è“EÃDÑXCw±6Á’Au¥EJ†€½ÇaÁGvŒƒë’ÖQ{Ãl¬æ>(ºµs]àERZd…S–[Ú_6ûüÅqëüÚÝÐY;tˆjkçÜšü“58ú±ÿeÕõr›rù|Ø&8æo`jÇºÌÔZ.¤íÓ‰š”¸Âk-¹Ýsà&Qê=OExWSÚ…õðçõÕ¨e=”2xœm‘Ërª@Eç|EWÝ¡•ØmC7T%·ò¾ÀÌhhå%BP¾þz“Ê,g´kÕÚg²Û†s@”$¡Ì#ÊqDD™²(RP˜ÐˆÃ$¢”Ð'‰L„:lxÙÌ(ƒ–IQ™1%ŠÉ„Ë”L„"¤à8Æ"Š%öãG¡Œ†E…'â£ÊBÌ“	%ˆ ÌdÈ˜ŒD¡$„]{¬ ‡eÆsà‡iÉð÷_áíÚ]ùsÌÿD("Æ
FPˆª¢ÈÚö![Y;ëx)«†×ùý-ÍÚcÇžÂ/µ´N¯Y
žþŸfX¶Þ­w°±-WÝîÖÆ€ ú«iªªMUÕÓ¼ùI*¼ñt­-èñ$®>qc÷ªŽ­.¬=¹³íóÙU¾Ò¥ÚzÑn°&ç÷NGt·q·ãÙ5›`¤ÜvíáÌ]ùÚ¢5ey;^$¥œãÉ!ngºáA	ê£ÙJ óY­Æ+ýîÚ`jæm]ºj §Ã˜MñÀÍÖˆœœ…5>„©ž,uP·{Ç‡ÌÛ‹ V†fNHq[Ícè×e'ùG‘”áêÀ6±ç_~šl7òÙÓ“ÑWi¯:M#)¥[˜‰yIj¨(a–zØfâý4Ûs4øäž3’¯ìí°¼Ú±íææ:ßÌõñPÕC|ÚéÁýìÀGJUÏ÷ýžÜ7aÍaÍ†u=ú8|úN¥•˜Ä8×]ì<fXRéæ¥ß`ÜO÷ÙL~À«Mò¥ð½™áê¿/&8¼I9¨»<¿tüÚ‚?H†$MU€,ûqžùÓéZ•OÑSU·YU†ù£ø à›‚úFPöâ–xœŽ±NÄ0{Åö(';Nìä„B´TÔ›õnb¸ØQâpº¿'QC7ÅÍ++3¸Þˆ`ÇäÙ’k:?õÅk!ïG+Ò9µàÊ© ÷ƒ¸A×>xËBZŒu˜:xÖ­¡ª-z­p/S^áSä¼á˜x…ûpý†ÇmßøøŒó­o{§¸ÓFkEyžc)ü/õÐ¬i~U•>g>Ã~0¼o9Uy)1'¼ Ž“RO{k,”‰aY#ñAX@öD?ËXn7˜ã¶Å4ž”zG6TY¤nç¿^©/®un2œxœ½nÃ0„w=·…Ù”%;ŠŠþ:Ëå°%CRôíë(
ti7’Ç+‰¤q²ç(´¶ÂtÖÈ•èZTÎµj„•|${¶èD¡@ãº¾qVôMÛj2VZ…]íœÂHØu™>—SLð¤ƒ§	>ô(ÁÁ^·â1Ÿ3í,=@-U»®c'áž×œ3çÙ—Bÿ’J.°Æo)—™ª%ùPöð/ÏÇ÷7Ø>ŒàÎÁ¬}®àüDŒ½P¹Ë—É(§ßº5z—â¼1CŽý`-ÎìoçÀg©llõü¸cìè×çm«†Ïý_ÙØü„û˜xœÍJÄ0…÷yŠ»TdÆ¤Í$Í âÂ7q9äç¦ÍÐ&%I-}{«èNÐÝs>ø85#:Í¸²¦µÊh)ìI+Î(³TyE56Ê{ÓxêÉ¬3Æ
Ì8%;æ$¼£ŽÊD«ÐYŽ’ËX#Å‰ª–è¥)Ã³ŽGxÓ}Äný
Oe)xtøLÈ“Ü:w”QJlš¦P+þ”·¬ß(™Ç¥±Ü—4úé¯áZR¼ØŒºâ%™+Ú
kÖóŒ™Ïß1oë€¡¿Íon ¨	JÕØK(uäHÈKØÅÜ!y0Ûù/oòWmzÄŸxœŽ½NÃ0Fw?ÅÝQËõR!ÄÀÂŒ#rso‚«ÔŽlèÛ*1Ãv†sô}­0ƒéLçRš¢ôÆ[Ò
{m
ÌÐ¢w(Å
§R÷vèƒuž”‘ÇAjC£BÃ½3d©³²Ce½amï¹ÀcH‘gxSâwôy…‡ºVÞßƒtÞz4½qpƒQù|Ž­ñ¿R‡FKý›Še^§˜êmÍs¤8ðRj+ëÐàTszËÇo¼IA¡]&…xj?fNÓ|¥ðÈ¥0AË°í-sb»êB"9Òo^÷B<Çííò8îŽ—Ã_÷Å7"ˆz}—xœÎ½NÄ0àÞO±=ÜÉŽc'9!DAMCA½ëÝÜYJldûOOø‘(¡ô¦ gÈ³ëLÐÝ<õû‰&g{£GÖ!wÖ“«^±Hj`i íìè9#ÑØw2¾›	f²Ì›eG
Ïí”<bŠ²À“¸ã·¯ðPÏUö,÷`üàÆ¾s£…m´V!¯klMþE½î­±þ‡ª©ÄPð”!‰0´u[iñ] •z	‘ÓÖd.J-‘Òeà,p)‚|ýŸà$U ¶Ó±ÞBýÝä±1¦½RÏqûÅ»<Ï;ºþº­> ~|x–3xœm‘Ks›0 „ïü
ÍôèI-ñ¦Ót
Ø&ØüÀöMB‚ˆ‚Àâ__·Þ²‡oO;ôŒ"jç9* mQšk±‘U;×ËÄŽcç˜ƒJ‡{&€4h«f®TÓT½°õ»R!Ñ5¢C¬kÛÖÞ0lb@V˜÷‰E1-°iaÂ,Ket54	Å…‚ÇáµíÁÎjáR°|§·¿á§%ûJÙ€LË„š¦9Ì ‚PÉÛ¦áÃp‡><|mÏºzúYòáu$_ïÀ'³²+%/ÁÃyË ŒA$`±»?¤Ë¿½p“^î¹®ç»î‹÷²®Œ
~êm¬×Jß¾i}xsÝ8ÈCw=“ºê¶¸…jiÃãÑvÜc+ ž®²Ü~øî9÷DøÔI2¿©¢L;EÒ#ñ<ø”¥]3È°ž“$mƒ[ÊÉG¹«róKS@y6Ätœ«ítY¬–á5Ý×i&ôÊ£ÙqsbìZ\×ÎÇ¾»VÖ†ÖÝÖ›Mc1Q,Ò®û@
Øé–œ'Ÿ•†«ÓQEé{szÁNùþSä‰n¼NçS<.Ø_å>X4¿¹Ë®Ï]›œ7#ÛÉÃå’è‹ˆk-Y¹qëx+ç°ëø½FÞ9ê…íÓÌÇ‚›ÛY3Ô+è( ‘óe¡ŽMÏQ!öðj¶gò¼ajƒ¦§„k#ŸðÄ„œlë_P–íÕßùïÝm8UòQE•Ÿ-ãÅç)Ï¬/èÆº=»ŽLà²¡Š¾m@ƒû‹Âj,JÖÏþþ@Û\Qî&¿gS×J€˜RÐp)¹(AÛ¼¿Ó“þ7™xœ¥Í=NÄ0†áÞ§˜dåø/Îj…'Û3ÁRbG¶‘ØÛ³B\ Q~Oñ½£dg}ðrA›:^’Q)ª9iB3ûÇ$–FœØ¨pž#{¿h«£«Ž«2¨2“ÑZ2Ê£¼ÀÏñQ¼a¹ÀíX6jp;~à~á9Ñ¾_b=ž`v‹]òJÃ$­”â¡Gƒþ÷"Rý
¯ù‹ŒûY;`IpäÞsÙ ž#×Ò…xÏ[¡4Uæ)Ü¯HŠoK0j*3xœm’Io£@…ïüŠ–æˆ³/£d¶`³ÄŽ}ë¦»Y‚1fñÂ¯'£¹¥¤'•J_•ôôjì	²* A„'(8ÇXçEŒU*q’(ª2AHÏeQãsŽé`OÚ(Í©¦©¢,æ"ÒÅ\$("H)Ñò\–‰$ÈH´ÿ<UF2TU—$¬!¬æ
¢T”Iè.^y¬aNcyìÛŠ4`‹–ôà	_¾›—aÈ#& ¯¨
'
š$ –ã9ŽÉ‡C5ŽwØ­Æå„ÀS{ìI×Ü^Šj,'ôx~X+ºb¨
ððU¦ãz!X»kznhdï‰ó=g .ƒ™›†aZ†›ñª–ëÑ·ÓWËZŠÎbï]ãfJžá%÷Zí™ì-‹sÂLßDI0à´‰DÒôsU\¨/z‡­C£DØ,ß“ÓDùÅÒlüLiÇÕÕ›®ˆëõ|öüÔÞu×ms¿…Ó{‘mÎsº÷œP°6Õ.ËâúFc[;8ç¨+ËØ¿Ui8#%1gŠ×2¿—‹áîbk(²ø€uƒÎ6Öžž·)Än¦rð¦¢$SÊJ2Ü/u_4YöcçÒ¥iíš&sÏÍEÉ¢]ã«œ78Ë)[ïä`%~æ…|¾y×XpäW—V;/jÙt¹Œ?0iæÏ)Àô´"ÅÄÄtl˜­>pÔ¶¦ÍfÆQwN•C°É_/ë– cs²·xõé~ÕÛi?Ïx–¢õ…ù—™Ú?'Æ¼‘¾  ›šôä4‘a¿xÓíPð² Õõv]u€a4UþÞ;Gš
õ°¿Žå èý%®ó¾È¿+lüdà	ƒzxœÛÀöiBÜÄ>#3SCCmC®äüÜÜÌ’’Ô‰“59M- ¢“Ù˜µ¢¹¸B“JóJJJ‹S‹rKsJ2s2“ŠSKJ2Ró’SJ2R€bE‰E™ EE©
yù%
iù¥y)\™y
ú@93=.®àÌô¼ÔÝü´4Ý¤J«‰S¹ á).,4xœmRKo£0¼ó+,íuƒyšU»*$4B$iØ\*ÀŽcB1¯$¿~ÙV{ëw™O£i¤™ZÓ†XØ°SEÇfLHBÔ°
h{^³±…¥2„×@Å1TÄš	u]1ÕF)6 žšzëVÙ£ÿz… "h)*4±NBl¨ÈŽ5Ë$Š¥ë¦¦UÕ’â¦>ŒbÎHö1åD€gÜ}>¯US‘Ÿ˜üÐ´[C²€¬@E‘ÒârauÝ‹Ç¬ž4	xæ… e~¥¬>5ÉÏ^ð–´b<ý;×O`5^Ít¼p¶»Ðûä% ®rS×qÜ¡ã¬Ýõ,3‚r;]ß:eú²ÕÄ´sœnæL‰È°lÂð¼?\pf@³Ý[[	8~¹+ç6íÄ£÷ÜóVv ¨¾çóWÔ4;_Ê¡ºº¼+^÷X$ûùáXlùCÐ÷¨.ñ<¹Ñ3ÛûVÈÚhÀsØ¦ãje/›]µÜŽf,Ñz®Ò57«·vz¸ã’€|=žŒÑ,þª@­@$<æyí²&‹Œ?ÖAmGAƒ“tAŒ"ÝtySC–^]UvÇg	p¦mý6ìÎÈ¡‡Ctf.4eZŽÊì]SÓ?C-8é±‰Zçy›gÞ<KÜ¥É¹)»eŸw£&.»À½VÓöØÒŽ²çÍSÙ?uXI#£-K¶²Rc5`dË#dß©;]žò0:¿HàeÆÒ›ôÕ™·}ß˜A	(›<‚\RÕàDŠ
Ž¢¸ Fãnpd·§ª9öð‘0‹ûG¿ÖŠ<	B©*VpIjj–ÿ‹æ’Q®ßRÑÔ æwðåý¾AœWhãœá¿m“Ò™*xœ’Ûj1†ïõC®Ji½GB%P(¥Ô„^­fÖV»+¼õÛwÖ.”B¡½‘†‘æÿ¿)"š^)j±î¬°ÑD‘Ú`©¤jç7=¶(Ž:KP¢Ve§pÓ¨ª’µ,ûÎ`­*ÓTFW5JÙw=b'tNà½v–&øª÷Ž<àr	žbŽT =‚jÚºß´²jáTR
ãçÙ¦Dÿ]Ú6õ¯R‘“¶ð)Ï…‹e‚œ@»3Ä<Žöp §èá¤'‹B\Óoƒu:œß¸ÅH·w`#°BòpIÁìc?B:¸<S°VNíPLÖQ,à9‚MrpVÓõê¬­[•Àh^VµàO	¾eÖsbŠß˜¼0ëªh(Fë‡†ç?Áº<fÃ€Ë,«‹ò}qÁ×ÙÏÈ|‡´¬‘Ú¤ÕïêÁÌB¼¬ûÕzÀºª›²„Û›ë_¨Á_&ÏŸ?ÜÜ‰/tô!Þç-ì˜eGÙíÙÕOð‘?×C4JvÅDôõù¬à±=Šå—Ä{?Ž—â<´ø	ˆoåµ›5xœm’IrÛ0E÷<ª²TÉ$ÅdÊN$%Š,ÉšµAp9œD­rš,'	b';cƒ®®‡ÿ»Ð¿f”‚@]ƒ†©*ÄÐ8‚#‰j¡L¨©š-ôeCÃB‰Ík@M`Ãð‰¬²æCÙ4õ B¨IŠá›2—QtÃ¤ÿ|`ÍÇ©!)¾JÂBª«:!ÜÜ—MCSÀM88Oh
Ž8Ê)A÷Q<WMEúÈ:äÓª
TÁ@’¹)²,©k»I=m|ð˜Œ–iÿ%uÜøøâYTFUáßc]ï¬Ý5ØzîÚí_Ç} «,b!dÙm¬ÍìªæöÈ~µæ0¾ª«Va^‡×FšÏN×-e¢sóv§[¸¶°4íMÄ*\$ÇÝ—k»9öYÞ‡KU„žèîÏv=ëìêpÝ¯zŒõc…0bù¢Ünß/ãX\E­= Æ[ØçŽ{è´n”ºç£ðoˆN–Ý‘ s¤/’×s‘Ad‹“Ã¼ëw›Æ+!FËºšC¼Íï	ñ´©ÛJ°h­ý4>&‹qã.ÃwcjöåL7ŽYêtåh0YïÍj¿;¬‹…¢*? ›¶«œ'cã6—Ñuæ”eîâò~JH—'	j#(ÏI¨Üá!n‹U­—Fµ:“þvôH dçã¸¹yÔÓ5äî¼ÓêˆÙ*=×÷A‰f£f.rÕšÐƒu™lµq2Xä‡T»'<ÅÓH>w6~q¾Þ˜°¤,¢ lÒ0úÞÐªßdp²"Ép–k1¢õ0¤¸nV5¿+AÈÛŒ~vLÉHò§I BžÇ |€¼ßP^2FIö ä¹åjàŸÚïŸ¿þ ÍÙT–xœ•ÏÍNÃ0ð{žÂwØ”4ËG§	!1!q€ÃàÜÔé¢µÉ”¦C}{Z8ÃÅ²þ²~¶K&ô~GŠ¤•X£3ž´v¦–Š;TB"'m*EB²+fŠ„4¾
+«×ÜØZYá7;ld#¼n*Å…µ§rN>ÒeŠ)x¹P‡C€Cøn¶å±0ô[—†Ú¨Êp­Üñšs¶¤C(…þ%cwªúX¼´‡çÐ¯Jš
ŒË4‚ï±[êr\G<-a&Xbl{Ñ\3ÝBšÆ~†)Fr4Ž˜g8¾îá–Ax:Å@};Â'­Î™Ü…Úí
u‘ÚMò~ÓÌû?þÁ¾ ”Ôƒ—˜3xœm’[o›@Fßù+õ1J¼Ë*©æb;lŒí:/°æËÍö¯¯›ªªTežF£3£‘Î×SB€(ñ8b……œ"a)Ž$Ë1	¢„ â9‡
ÏBÈ4%U¢"…</0–£(ˆCI\DbEXædA	Ã¿<"BbD–ÂðŽßO‹DàxNP ÄB „1f‚¡?×èA•’ƒ¤"<ãé³yí†Ž<aò Q$™g9	<@tÿ+ªË2íû;l¥ýbÁsUSÒ××$íÏCøt¾XKš¤Kðø»4ÃZ:`cmÀni9ª¿÷ŒÏ90uZ¤©ª6WÕ­¶]e|¥ösO{“ÎïŽ]NªG§¥ªQq:âÙÍÎ‹üz©/6åœ{j’v:±°xËñŽlmÇÀ–tÝàŒÎõ@ëÚ$rƒÃ8­Js>ÂÅ9½É^;¶ïf?kÌ ¤×F§í¶ì×F^h#¶eÜ,`-ˆ{Ý8Á×—Ï¡mN;eŸ•uÏ$]qèÞ,]3€±¬šTíÎõ°÷až—cQÌ8÷®ÐÝÜ²5¬Ûò(¡ƒZ-Vâ¶So·Öé¨x’&™# Xm¦ªt5â‡7®±u´¬.6Y×¦·÷´w354š[29+{{îØubë(wÅÕiŠàKvé—Çc×Š£0®y—d4Ð°Ÿ^„5·Úf™]‹½Üd>]-ß±bÆÔ[4üÚi¾–/xÑ–ˆùãÌpô¯1kBš¡( %í@º|C’ALë¤I0Í(IË¦ å= ÝÇéå£K?î‰íÃ}Z|Þ?ü‡üu¥Ø™xœÍjÃ0„ïzŠ½—IŽe;„B/¹•¶!Ç [«x‰‚µNš·¯pzè¡ÐÞ†Ùù`vxD-k'¥ªt&µÌ•’¾È5Þª¥—¨–RJYq±#öFÖ¾Ì«Ó“¦¾0EY%«Ò×ºÊ´Îå²®œ°7Ã/¶'lá`O=Ž°v·YlÃ0q¸eò,]–¥JáI*)E=t1ãÿÐ¼HKm¾Q11µ+Ø_œe„0yOŸÇŠz;Þ±~@x~Ý	±‚›°Ýì ß/>–ý±n½¢ø	ô8'ph¨)b°m€z7ÕÑ„©.cà™%N„xÃ+áÝ¢º¯àc8Oý0ìÎx²Áš"áí©³Ô&qŽx§ø¹[ÞÏÔÃˆ/¨´šÐ–DxœSËnÛ0¼ó+öÖÉ²‚ )Š‚’ =4¹’XK¤ÀG”ôë»¤zi}0$qfvvvé-"ly¾]¯óM·+*±^×(ËªlpSØv]Y¶XtÛ¦älæµ‡¢l"”¯ÛJäuÞ´Ûª-:‘7¾+wEWïÖU^´-ãÁÆÂW®Žðƒ÷-ÜÈ%=Ü¹à0“xEÝTëzSÕ9|Î·yÎ„™&å=þµiËvSµ *^×ð„jšGœ¢]ºN½¿:õJþ2ö×‡‹K¸®áíðe¿p+Ai2Ðq°(?@pJ÷€ÖjCPyA	Dµèƒ%:fðˆþ“ƒŸÁy"!øO a$F¼óÜÇ>Š%Õç¶ÉrG©8±hTøƒåoFIpèýñŒ%Scß‚¥W;¼¢ïÊA´ðÊhpƒ	£m<ìµYHçƒ Dç;<<~¹wW |2MÍ³qÔ™7NŽm„§$ø1Ñ4+i0„L,ë“¡Ùâ›2Á¥¾§¿…DFgNAÄŽPË™ðË iŽ£Y\Ô9ÏEv¿påÔÑÇY.æñ¨¼S”ë…£U–F¤yjÛh&,r+í.) ïøîa¶fG€òñ?¯‡r¯ç"ŽtÒ¨†ãA0™eu
§GO[Â…–j\f}uVl^¨OFïèê¢Ü~MLÌyäÆ¸#L*{¸9XLK×SGÜRÒz%Èö}Ln žÇÃ6Ijâ#Ì†à@õi§=ùÅÓz8b?Ñ,pA¹Ú}\Ã‹Ùm¬‚‡=ö|Rp£™¿ë'®ÆŒîÞ-{VtÍäÊt]býã²ß¦QyÏ“2xœm’Ks›0 „ïü
ÍôèIƒ@HÐI:?¶±16ŽÉMBƒy™‡qøõMÓé-{ÚÙùö´Û5B 	C‰0UU(ckš,‘XÑu¥ŒiœK5mDÙj
)Ñ©."+”aL„AuŽ°¬PÅQòŸ7äØÀ464aÈTEVp¬qÂÁŒ!¤ÆBLÑ"‰öÝ¹jÀŒ–©ÈÁMJÑ€'>|™—¶oÅO.~ˆ‰F4©Ld(ËRTEÚuŸ°v¯=OeÕˆ:ÿxIÒîÜ³ŸŸÀ7µ¤NÚ4eÍmg<Û{ÇÞ˜‡ÀŸåÀÐZ‘ešÖÔ4wÖn™¡Äp§¾µ"çmojã¦É…ã˜+ÿ.f([¿¯÷j_j#Ñ‚L$bîlÂWØÇÅºCÀ`øv¡›¸ _Ú¬Ãs°óÞnÇ@_Ò:’ó¢ÊSï]mþ193	”…Š]¹f¹"üd¶ÏN,ÝIØeTñI¢Ovýt/}î¶¹Îçžº6ñ3rôêí=i¶€5.çùÓV~TÏ§Írw\yBéÝ±Lr¸îòÞ¹¾^¿^wûÛÁQ9…‹°Dà{Qê*öW<Æ¥¹ Ø’ÃìÕC«rèYt4²@l"÷<µ¹ùÞê}]L2ˆ¨íŽS	\ïZÊÖ#kbî­Š·¬Dw;DAfçñÅ>Ÿ–“jºF'^´îLA·ÑåÃºnéõ†í³žÑvu‘þm6ßÌ¾_LrE“P÷yqíEÛ:ˆ›ª iB‡GÞTõÃ˜§L’ú.Í“s5‘ª€´¨sQ|>—viUþ KøÉ“1xœRË®Ó0Ýû+FwS4qœ§[ÊCBÜMH\‰µcksS;rUåëqB)‚ììñ™óOˆ å²©XÃš²Ô¼-)-;ì±ME¥‹{Þ^j2Š€.‚TJ¶¢PŒqQSÅxUp]SN;¤uW1Ö5½Æ¦!bŽÆø(œÅ¾Š“Ã oÔe=¼Ÿæ	3…o¡hÚºi;ÞpxEJ‰ôç³ÿ·u1pk%s´Ã>(2È’=ž“m­w„Z«Š¥¦šÃ‹‡¸9¡Û*#·ÏxÝÀ¢/œzx	ÖÅàÕ,QA4ßÛ…#:…N^Ó3ø ’³è!YZ1?eõìä"˜Á“±L«{•ˆÁ;„ô Àù¢Y»…RvAˆ~ë¼†ÉÃ€q“ˆŒÁÏüÅ‘¿¤yJ^4tðgˆh ½Œg‚1øo(“®±Ò,ÁJtSJ9'Å@ŽŸP¦l0ˆå¼†¥Âî•>¥c\¢Ý¹Rtãým
+œÜ	nüÉâÑºç˜Çi—çSŠ"ñ’ö*óá”ŸlÌß‡_>³tß‹C?ø~¯iöùš8“{Óê¶.x'ÓV¬-9ëX)e§YEiÝrÁJEÑµ5ùbÓÎ¨­×zÛ_wÿZ)òH[?•3xœm‘Ko£0…÷ü
K³Œ:1`ƒµ£’’6¯&4dgƒ!P0`Lóë'ÓÑìz¥«{tîùVGIÎŽ	N¸madÐ„"YœHâP’ÙE4s°ÖRÉ…Iš&6ÕSÃp(†©á ÝÉ0t ádÄb·¬ÿyd9¶i°Ìæ” Œ:Ø TO2~'JR[§$Ñ5:¨S#OEÁ+ðNsÁ%xL/ŸâW?ôü{ÊÝ²±m0‚:„ZÒÔu¡Ô=j60ð(ÉÛêö+/Ôi`ßï/°¼Íû"Ç›á¬ƒ5xƒ¥»Ûo'Ÿ¾4pé½Äs]ïÙu7Þf^¢œœŸ·ÞÂ>•hu6exqÝt’‡î<²œä2êýdµ|ëGä¹ÝŒ×k JÅ{—¹p‘^ÝEç½T1¯|8­®©Oç>\Ê%êëÎÁ{›(\œvKAÞ=TæÁT¼˜‡c°›‡æ¼æ×Nç^´6M¿yÅÉM=vk"¡gTVøÀ°ï‡üìÛnBàÓ5Óc±­QÍ_üc¸†@Ês·XBSx×ÕÛAìEYÓ)^kÖûÌ;t¨£¬ÕÀÈËfj7GØ•¡ÎM‘[É¾mË|pSç­w|cžÕf7Bñ‡€Ùá])“•ÊÉ‚iM5°÷]ÇÏdoñ|p-˜4¶ëÆÒˆ¯ª7dl°²{ÛfÌ<2y>íÛãGõ:®¯³SñÎ~Wá“ž¢¨ö´M–þ×i¯\æ´CUÉ»÷
|ÓmÇ™ljPäô2ÎŠëC=4âE•jÚçùöý“üþM	îËUÝ@#@ë“FdwëA=þãxœPËN!Ýów×…Vf 1Æ… Æ¥¹…K‹™	0iû÷2MÚt§ÎÍyå”DTÒPßÉ¶ü‰sÞömGJq4J£r½Æ–lÂD¡€±ÖôØX!4Jn…ní$×\—ªBu[G]Çp.û˜àƒ§¾p(Á³=œ?¯yÎô`éš®—æ²oàŽ7œ3ÇÑ—Bÿ•6B\¤l;ûÁnà3L‰œ?ZŸ >2e8AOÙÄàê‰±=Ý`ð0 §Á_`Â²‡Õ#³ªw¥²Ç¹Zøqh¬S`ñFÇ~¢ß?/&6ÅiòawV\[ÜW8g8¢ê!—´°j¼Á€…X¹ö±®ö9ð!B[S`ÎÓ›<7³Ôx`ìÝ×uì::·Þž6Ç~P©¥™xœ…]KÃ0†ïó+Î]/d%é’¦C&ˆ z1EPD’ætÚ´KRÝüõ¦ÝÀKïÞóñ¼ç#zDÐ\QY«Be„ijI©/´@U55_TF’^ytX-LÍJjaÌ¼¨¸®P$!ÄBÒJ0­¨‘¼ÔDq×yƒ;X·…ÕYÐ‚Ñõ~Ÿ×]{	¬”BPVð9\ÐŠR’²­=\+gñžÕÖ¥he¾'±CÀÜà	-%gsžP–Pâ¾ZœõÞº¸„§€ bôáÝº¦àÐ¤}^:‡p•JVÜ¦ºoU´#äq‡p·y¸‡nˆý!Sr¤³É0›\twý¨”3£°´Øjô!'7ö @“Ãx|ö·Ë‰='*'äõ|Û†Þ¨ˆN_H†!¨-†7²±©ÁÌº¦™éãò¿ß_*ëšqœxœŽËjÃ0D÷úŠ»/	×²$[¡”ú!]t­Ç•#ªÈAJûõ5!ûv70s˜Ó
PàZjD>ïÃ9©@"«Õ4Jzt>v3…râÜb gi–JhÍ•ô4yô|¶f²Êq”ÎˆÀLo—µÀ›É‘|˜%Sgÿu¯µWÚ{zAMRŒ‚óžp@dn½^ckôotDþ@™í1ùS]¡•¸,wüé…ào”b&›ÓéÌØ¹g0÷Ý…À¦ÏFµÕG[÷Œ½ÇíÌïÖvöûð—ûhi ›2xœm’M¢@„ïüŠNöhf„Fºa3³EüBE‘[7Ý(B#ê¯_w’½Í{ª¼y*©¤JÖœaqUh@B("œ	ËPU•ab3aD`N0ÑLS©HÍ	ƒ8á(Qu“˜x`éH`b
B™E¡-C@KƒêÞd*W5A¸ %˜!’¨„k”`šÁf&ÓL]!­<”5pI‘ñìHZð¼±î[|4mÃ_ÿ4„®#‚žª©ª’”çs&åerÜRðV”5¯òûGšÉCK_ŸÀ¶´J›,/ÿÎŽ¼9XŽ–`íæö&\¿ÿ
P@×8‰cÛÎ§mN09ê+ºþ\9>>‹«^{m3àÙ“À¨âšž+x¹3³l3üžtpÛãíŽºW‡V]=•.‚•<íÃ8ÌôcÒx)EÆçä…_ŸzP­öEgÏ´!Q,;-WÀ }@¥þÑ#²,¯ûÛtUŒçö˜6›Ç%[ÛÈZà.:vÛ4¼¬54æUïT–·Q0½mpŽlÃ_Åg¾»ùFÒ÷ ýàÓ¹Œ¯"<9³¸}_výmú3X‹GÙ„­1©Ç'¾ŽÇÑQž×UÓÔõJ¹qÍÁ,Æeö	:õ·b{È	†HRí^vgw~º¥™€‡û—Lû›1Šº)à´è(ž,|±=úQ©òå2¼×Ó·A<´;<ÖPüe_!î¹ÁŽDw1†{mè¢{5µ{Ñ½+àÝêÏ(ßÝçîÏ)3^§Tmžƒš_ZÞHðKÃ–D]žA–’®O{¡ùé¹šF6ŠBÛ,g¿Á° 4çÀ~´5Ë¬âyVp@R’Ó•þy‘xœ±NÃ0†w?Åm¨•ã4q\UˆJ°1 Ä|ŽÏ‰EbWö…Ržž”‘‰í~é¾Ow?g"ð†¤÷ªQˆ¶ErÞ4RJ§+«»Þ¡×„«®'ÌZ§tOm/ë;½3u[ï4v­3Ve¯L¥¤À…Ç”ác 	Þpˆ”áàÎ?Ã}Y
mÝAÕêfW¯˜„[YI)ú4Ï™þ
»„Éíá1¢Ž_K&x'šB$ÀCâ‰ø¦À>ÆÄãjç|N°ªaÍ€Î)Sá²…×ñ·N‡kôÉËu³Íåê8§ü1·B¼„õb·IÞoìeÿ×CâEgå‘3xœm’I›@…ïüŠ–rD‰›fé&J¢€Áž°<¾5Ð`<lÓ€ùõ™$Š”CÞ©Tï+Õá½3²ŒJ„Êe2a&«:e„¦XÕr•d¤D:ÊY3 ™ÊJ.A¤§XIÁj‚P‚d]Ê!Åg„Hˆè,ûË«Ì±Ì0•t”Q†q‚e	¥XÏT„(DP•Þ¿Hº@ÇáÖr`Ñ¦dˆiÑ0¾dÓïá{?öìSÆ¾IÃª"é:‘%…´­ërÞám9ìÆ|iZÎºjù^”ÃmL>½ÿ9+º¢/ðñ—L{»w¿õA¸ßºÆé|´ï €©7SÓ0ÌµafàÜeoã¯æßîŠ÷ù~2¶o÷†=×N»K,oüÅWî>
&¨	à­ô¤z­ÍbâßÅ(œ‹ÐOÞ^2,û›ö˜vˆvåJåm?Ž·âb½1I®¹.çäRíŸ ;Çzìƒ°“çã"5éîºqm÷Ñ ù¶xŽ/Ç:åeíéHy!ÎÃsº„á°=ÅëX ®Óš;% ®V­›æv‡7¬NÖQ)ŽzÎˆwžÓåâDÜ=EîU1Ú{TáÓ²¼Œ “8Ä0L©ºçÆÍšœÛÛñÑ×ËvW:]Õ-õ­5çŽœÅ§á²Œ^eõüÚZ¶ ´µ¸‰MþˆÉœÉÞ!(ê<äæh5UšŽF§$–ë§ñ’-‡tz	f;:Ÿ°7esØBÙ´àW|u^$üÉÌv­ÿ'&ü`¼` «
pö:²~ $¬+ çmÊ‚N+–ç,úU[Bó¨ÙgŽ]×òücü½9Mx™ö xõÍ½ü¯ž'xœ‘=oÜ0†wý
Ž-Z–}>ËA¤H–L¡3-Q>!²$Hò%þ÷ÕÝ%h;ÉBˆÏKŠÌ‘”B.Hì›[Õ‰F´uýˆ$Pý^÷BñÅÈFr:ìvš7í(‡$1ôSÛNm7rÝàÐJÞŠ‘Ã5|„;t†,üÆÙQ„êùü¸Ik¢ZÑ5ðýÐïøØ¾5¼i˜ôËbr¦O£»^¼¢Ìº‚Ç53Ö$sª¬ŸA—Q4NÑÈ2G{©­¤5pä5ßCº@¤ÞÁ@ÑÑHJàÝ¾ÃÍÚúåö”„…7˜0•HŽèÒ)›à>!<ÜÞ­á×t4~M'¥gbéàW«ÞdþÀ8EŠ)«÷òþ*BÞÕŒÝù7	¦´‰©ÄãfÜÙÃ‚áÌ”®i6©ì5:U<TçÔíÏ¢óF_¤4{²Ö–oÈ'XÓY°”Ï”«×rS¶¡8(eŒGSÎ£*¯u5mW]ýàqÖ:”xœ]N;OÃ0Þý+n§v^NP…ZÁ 1¢‹}I-»rl
ÿ7ÀÂtßSßÅ@U¥¥„cm9ò–¨}£ûR÷²Vc/[ÙÕ²rP!JQU¥h…’8ò²ÁQÉj@>Ž2_ª°c˜âÑÐwÉqäíagQ¡±Ps¿xk´™æBùùD+k!ež-ï8gYMŒà!¯8¹Ìvú¼‚ý’*4­Õ¦¼¬+¸â"WÙÉ¦É¸åúoâZCJFƒqš>!P¶R4Þ1v±òã~ÆH?¡·ÿ!8Éeƒ¡ã&°9ëÔ×6TïY`ÖO˜08(o-©µ¸êè4<?ž^.´`ßyÿ%”xœmŽÁNÃ0DïùŠ½Á×±ƒ*T©½ !ÁŠó:Þ¤©]9|=. NÜfgßŒ&'f°hXJ%­c‰½5RR¯°ŠA¢µPÚ˜êD‰C”z°¨¨1ª­Ð¦S‡^èYiqhm£ž–|ˆ	Áv	º†GŽ’‹°ž~Uí¨î/ÏÍ'ïüx¬ûx¼lµjP`‡p#ŒUq>gN°£ày‚WC¹Öîü-6ó2síø'º]×H¸X¢ÕiZFæÛØŸî`?3Îç˜ÞÀ~d†˜\éÊÐ§í3ì÷;x§iáªz90øà³§ÉRö1@ ÷Ìn†Á^ÐŠëêÂo†”xœŽIN1D÷>Åß£Dž‡(BYä°`mû—CKnÔí€¸=@bW*½úR(¶iWR&h¦0'_MLÕ5ë#§¤LÌâ#oX:…ZœJðFWJD¬ÚED¦–¥i&JÀjùÑß×®y™0Ó[¾-ØèÌ_¿â²?vÏ¤|p2Z<=I%¥¨ëý>õŽD¯õD/¸ap¹ƒò<ÓðvjãÉ§>!^§QÂ‡µµCù>ýµ!~ Ú[Y«xœÌAjÃ0@Ñ½N1û’0–F–Jé¢7(¡ë‘5Ó
+ÈrJn“ºû›÷{OÁQa§CpÉ&¯–bÈê"#9¦Ñ\¹ÉÜÁë(nN6’:M#¥ˆI0A6éa"oxí?µÁÏEÎðÅß³4xÍ¿Ïx_ÖEöYÞ`ƒÇ¸‚ÍT/—Ò»üƒš´–s>Âéš¹Ü¤-¥ÎÐ+ÜìÞóY¶AÞUÕ]ºÿú›ïY!˜xœKjÄ0D÷:EïÃYmë3!„Ü ‹¬»¥V"ðYž!·ÉÙUÁ«W­Š âès@²<¸ŒÑ8g²‘Ä›>{<‘,j£*Kë£O}
!?Ú1aô˜D³å˜ŒvÈŠŽöµVx£¥Èô¹H…[zü†—ýØ¥Kò½u£öƒ	žt¯µŠë<—ÖäSÅG™Ò^yƒ©ðrŸ¥{TÚ Ê$´Üû•z/§(]Öœ/ü}ýëGý fX[‡œ1xœm’Ko£0€ïü
K{DÝÚHíªÐ@y¤¹ÛðLè¯_ÚÕÞ:šÃhô4šoÚš1€&²i:œ„PÑ¬ã	FDŸP
Ç”	Å„ê!BD¸áš-PT¥	ÒPH U	£H"XŠh¨D„hP‹Ê“ÿóM5È$=T‰L`Q’‘¤2U"ªK’&ÁˆR$	¸kã²s\$,'ÌVƒzÿ.Þš®a¿)û:U &MeDˆ H™çIÛŽð"ií./EY³[6¼ñ¤»ð÷ü0Æo¼I8xú
ÓZ8ð>Ø;Ï8;ë»/ Ü“˜†aÎckn—)šöõlg®¦q:ÙôríÜ£²¡c,ûsjÂÎÇ–åŠ.«Ue™°nšnmã®Ñ‹dµ¥1ŒsM²kêq%3]±í·ÝU,ssÏ›#ox`‹\‡®m’œTÜkp°%\/×}N1ƒÞ=*F½akÎž­ÈLSšy¥GíÊ»Äç¤Ïôåp¢ƒ2¤qW”—ÝcÜAõbmypgû¾PÄl6ÎA]ØñÔ]íûÜ"Ýu}˜´ƒ²ºÂË%¨ÓÕ·<Ñ³÷O¼tÖãvÙ~ý¹²³Þ'"¢¥›Úñã±­î}eónÓ‡êŠÅcÐíøL«S#´±[W æº·å6¸ž˜Éþ‰/“Ë¼¹êÍqÏ{­Ñ 8Î?h¡%ûÈ­¼:wéé5t¡¡ØxÀë&5áŸ3Ë›ÿlLpYÍ¸uYjVu¬iÁ¯ñ	%Õe’+ã8OžÚgÚ´‚0g}BhX=µ_(‰qÁYó4Øù*˜xœ±nÄ D{¾bûÈ'°±§StEšÔI”zÅ‡Î†ðEùû ç"M13Ú§ÕÔLBƒWšKÃG%…ÕÒ9Þ4X‡Öi#„e_˜)VpŠ£G1ZšfE'TÆ{â–,=J÷’á^o)Ã{ºï1å ¯wZpp	æT¯Ë†a=Ù´=ƒ˜f©f1ôž¸æœµvµR†ŒVøÄ%¶tqß‡¹–½ÐÉÑŽ\õbî*Êâc£3|4)W(´ú®R©`“#päC5¤\w‚K%tpÃìºãäè{í•ë’÷ù9ÿsûÃnæ“xœËnÃ E÷|Åì+[€yFQ•E7Y·U×Å†ÈÆ©ú÷%étwçqŽfêŠ#¥‘{&ìÈ)¢B¦‚±zÞÞ¢yL¤¢†ÜÜŠ¹óÞr…’yÍ¤ôƒrFDfGëq`‚Y\kq{½”>ÊuÏeMp¾âä–Çôúzš—æÞ—å˜ÒÂHÑðB-¥¤u—T+®ðærÂ¾Ü”[ußÏpÚöû€OTRÃ™æe%¡ø|Þ‚«ïÉc·á»Š[…‡Øå mi_ÚG®¦’	yOÍºc7þþy6ùÚ´f;–xœŽ±jÄ0D{}ÅöáŒdË–|áŠ4)R%ze­œålée‡ü}ÄåSÌ¼aJ&#É(9hÖÕ#é‘‚E£ÑµdœíÐLžT+î˜)@)­7èph1½îe7 ÙNYM£Cí©÷oÀ½|¥é¶Ç”^o4ãÊpá?Ó”ë¼"/Í”ÖgPƒÑ¶ï”²ð$G)EmW.…2¼`dZàçXÓÅ?ÌuÛ7j<=Ð^ÚVmEUEE<V:Ã[:¶‚…'803º…ÀSàÈ…SÜ ¤ª;¤ âë°?¥NîçüÏçâ…õhT›xœMk1†ïùs/J’ýH""
ÅK/
=™ÉÜMd7*ý÷öôö¼Ãû03efÓr£,µÜ;ƒd”±Ækï[¢Î²’Îtd3½¸áÌ©€G"Ó öõõM0¬IK+ƒm'm¯¬%+ð^.y†S¾ÞSž#®<àaÿ`]öÃ„q\û<í@õ¦µv®ƒ7é¤u:ÅRx†L‘GøÆ!Õ´¥çöË}á5ñK­[µêuUUUEzL¼w" ~DÏ°ðV…—ÇÃçáëKŽpÁDcL„zéc|+1'(ðœç"Ä±6™V9„ÕùgóÏwÄ/Län‰žxœËnÃ E÷|Åì+[€1(ª²è&ëVêÌà Øaœ¨_’þ@WsçHGw¦D`bÒÁ{©Á	­0ŽzîPO(ÕÎsÅ×Š’›-˜*ƒ.8#Fäbà(˜(…àÓðj¤J1ï”!v¯—\à+_÷”K„óg»F8Æ¿Ð×Ó¼Ú¸ôS^ßI%ô GmàJI£k¬|Øqo;§¶ýãNÛ¾aïñ¥ŽTs&ySYSIº¯x€óÜz<Þã„°áºŠ[…‡ò­Æœ ´­Ëå	°Ø'#ä3¶ßå:÷søçäÙ—kf•xœÁNÃ0DïþŠ½£DŽí8IU¡¸pÄyï¦VÙN)| ·Ù™}MIDà”TÚ¸ÁQot×“a#­De5óÙêQ1j3!‹L
ðd×'ÝË³F"-ÙXeål5³žhvÊÜË%&x×=ÄäáùJnŽþW´å´lè×vŽÛ#tv0£¶JZx“”¢º›/…<að´Â;.¡^G÷y§¼gjÝÑ^Žª³ª¢]EE¸mt€·Liå¦P.0GWÇûà‹n¸î”Á‡\\0¹æçÇý%B¼øÚãšÈÜœ¿ÿ"¾<ˆmšxœÍJ1„ïyŠ¾Ë.ì&“,‹ˆˆ/àÁs’îvóG&qñíÄ»ÞêƒúªZeÎ9ò‰$1†I!hµ8I2X
HÌ'µÆÊsÇèÌY{2’Ë1‰˜P²’³G/–XïýØÛm©ðçÂ#¼Ç™+\éþž¶¾ñ‘ø´,z<ÂjD•—i*­ñU£ùUUêe¤<÷i…±¤ùsb¸×¸*õÊ-ß`ãQ ñÖ /ÄÐWŠ;•z+û4‘Cúºüõ¬¾~ýdD4xœm’Ë’£8E÷|…"fITñÒD÷DƒË¦°ÛåG•{'!eó*`ûëÛSS1«ÎUæ½'ssSµB ‚Ì!ŽˆM's2Nc®MÇ@ÀÌ¶¥Pkh+*2Ç0Ä3[XÜf”Q‡¦&G3¸k9¥Œ¦–eþÏ;)¥ÈÎ8D<%º™)q-HS‡ ’fr×Æœi´W§ºÏ´’¢ o4¯D¾óñ³ùÙõøÆÅ? ¢n:ØD@7 ahi]–R©HõÒ3ð½ª[Ñ·Ÿ¹T§ž}{ XË›¼“9xú·üY&`¬Á6o·}êÐÀØù©ïyþÔó6þfq6ˆ/§¯þÒ=íÕ`µáèye<†Þ2weèÔyãîÛ\ÕJ|ù¯zÿºô‹MtjÞë4íÃ°Ã{ÿpY­/ã;ªCB½è>NF“/öëÁ.–¤ŸÛÜ]j`€Þä¾n¢Y/õ³q¹M§hW‰®Ó¾g'Ì6*>ÊbL;|x&dXM/Qwº{ÔÀY.ã·±vºç7|pV{|q÷j&~»¶…k6åi,„h2ô×ã½&S«ÂupzgÖ ê‘É	¯›ç²Ž/«·k¤Ÿß.ça¾ÑuQç³<Þ²H‡ÂÓùu”›ô_Êf…U™Úã¶îÍ;õ:m¯59«c˜dcuU¸Ø¬ï-ˆô»åÝÃx?…Ç’÷XÝ¶“s9ï~hà=‰ö_f³äùÏ‰i±hsš¾(@+>zÑ)ðt1Y[—@ætœ´¢´O}Ã©O…dÕPŠ§A´¬+Mc½,øß`ÿiƒ/|Ù€‹FT\Té<¦¯[¿ÌÕ’xœÁNÄ0Dïù
ßÑVIÛ¤í
!ü¬8;µC#µI•¤»Ú¿§,ì7ÏØ~£)‰S;c¨—ª¯µÓŽcm×ZK³ûƒrmc•X1q(à´¬µ!×rC­E‹ÇšLc%uVv´86M­neŠ	^0xžá?'x¤ËmxÎ[æŠø	”éÚ=Y«¤’RŒqY|)üWa7?ÓN+aa˜½ç…áÌ)û€xå@Æ+ì*ñÌ˜Yˆ·‰ïò˜üZ Oq›	pÎ¶oXÙ¯~~ðœòm-îÆ%á
>¸˜,_Á˜ÁîôJˆW¿W Ctî`¯Ç¿ŠO{x‰@š2xœm’Io£@„ïüŠ–æˆw74´¥d06Æx‹·Ëc3»Á`Ï¯'£¹¥N¥§¯OU @ŠÎý€ƒB)Ã¡N=Œe„öÂ}EMgœq•I_@Ù ¬<i]Q)Žý€f `ªªœÓh¬*Ì‡ÿ¼Âb…		U­<À_Ù¾ª¨4Ò#‡L	cÉ¿5i%å—hç'%ôußæ£¾ÕðÁoD4]å¤ÿ’1ÁX
«ó9kš'lgÍø ·²p)IÖ¤·àõ	üK.I%èåKæÐv\´°híØ®±ù\¿ï’PW›¡iæÀ0–ær’cýVæTOsÕkát†ë¹c˜ò£®¯N0±î[á÷Û 9\öGOBo+«»ßÛÝ<Ñ&'íxwuû°TB¶é•¸@Æ½½¶­ØQ™í¶ÖnSåõ\ùlœä|&!ÏóÌÂì•Ã½¶Ç‡Ö…÷îÔ»ÆÎhv8‘]<ë¹åäº÷ÿ¸"Á4Œ#RŒ7kE{5Ð³í¤ž»ëd²è9V·âqìâ&e£lÔ›œÈùýC§+ˆµtXmeiæ·]µÌ%ÔÔMqÛº¹©Û»¡²ÏózŒÇtºYžhÃ€à|Öž‹ñÂÉEvlNîÆçê^hç+DZ®:ÌÛMÏ¬òOÖ;žÒQ){ƒ•1&Nuƒ•j|B! MóY•\›Q2À<(Ëw	½»Þz.ýëlèZ?7&ÍA$€.·¢@®7¨ô‹è:G±¨Î(Kü®w‰Â—8»C-IuV7_S²:¬ZVe#ª¢xŽêû;IøZxœOK1ÅïùCO-Ò’löoñ "Tè¡Ç2I&m MJ6kí·w· èIð63ÌïÍ›—ÈŠ¨©,uˆMm[¡ki°“•m+¬RÒè¢ídÁN˜(dàDu«¸®
Û*â†kÑ˜®Öe#+‰F’é„‡|ˆ	08ò°Å} ·æ|-îû¡§•¡;uS6%¯ºn¸àœéx<ºœé(³¨’ÓýÞ°ïÁ¸^ÇwJÐ9yÈv»¯Ù|ÁØ– ?ÄÁ8Mëù@?‘rŠÞ—M<‡ß4`0b¾2nôŠ9¦cîƒÆë]U ò²TR
˜Ï¾]=Å0&ò¼y}™ä­Ûƒu~SHç%zS £þlÁ6n|Ø,£µKuYÿ•û„—1š#xœÍNÃ0„ï~ŠUO ÔÈn“8Tq¨xzöÏº1$veoZúö8¢H¸íJßÌh†"h][k¥Î`Ó¬¹n]g]£¤©íZš•àØpÙivP	)l-j.:#µtbÕJ»jl‹k'äº«»UÛh§5Sõ1ÁVìÔ>`‚{ºOyÊXY|ÑÊZÖ¼æÜqÁ93q=þCÊœÒÉ›¼gÿjH¨ìL¡ÂLŒ½öCŒïÓN~
—#$¤)…™¥‡SSä³Ê¥8‚õÙÄ#¦sUÇT°3ëü¾zË1TPL3Âè÷=Aˆg¤kp»P	¾@¯2S`ñèBP#Â	Aå<•‹zE—7áÆJ/,õ¸´­¾y'àfñ]{/áªÌ7hîõ%ŸŸß‹JC^Ü²_¦µËèÜRŸ7-Ï>Ì-¾0ž#xœPÍJ1¾ç)†^l‘–l7ûWDDŠ/àÁc™$“n ›”$«öíM{ÁÛdòÍ÷—#hÉIrÉUÝwÛZ#Ýà ±!êI	Ó¥[ÎÙ	#ùªýPëjÐT‹ZlkÃu7È¦é;Ñõmk¤j;±Îyöè-9xÃ£§úã:<¥9ÑFÓ#TÝ	¾­Z¸çUÑQašlÎôSfPF«Ò^ì'h›Tx§x|ŽÁ¹Âb¬»P›Ù«lƒgì‚:¨Ý¡ Œ=&Ìj\® avÐ¥ ™Rk ô“Ì&@•gtîÌð¦ÞžIa1ár¥¿R
ý]ù)<¿ÛAžB¤c%•ˆ¼Ó­ªŠx_Árñ}À‡X*œNr€H…Ë“º>ÐEB}õxY‘¾:J‹{µ¥^½Æ¬åy÷Wûì@œÀo›3xœm’É®›@D÷|EKYZ	4c½DØÆæñ€½‰.ÓcìO_'Qv©ÕUé”jQw  HˆTé‘˜]P°(Irª“4ÖTIM“XÒ0h$JëB
Í€DuD,Ô0Ô9"EBUIL "]þÇë8‚PÖÒ+â«'‰°ªªIŠŠ”Â+©‹º‚1ŽCÞR4›*t
³(zKnŽldð%ï«šL0Ö‚&.nëº†lÃrŒÐ[ÓRèªÇ¬ò1úòþËºŒúü[æÜZ9Èµ\ä¯,ÇØvó?>‡8tcfl†95ÏôÖ¥ ´óéÎ´µ¼”ß¯]Ý#èo+c³tYvnûq½úàtuò\¯Œ–C[ûyÜñ5™ÜžIJí×±XŠ®k9¤™L7;q¥‰ŽÉó¾ç·³…2¸YË$+0})ŸÏ”CF¬8q•tç²Lh{è£C5Ü¯éæ©è™µÚ±cûaOïåb¡žÿ€s&k±Œwô´”8tw+Û[ø†=—ƒq©ýKáy&e—=ï&0x¾A˜j”K'‹®[¯Ù8Ï¦ßŸc-ï¦å:%sY€Pº+{>š«›@;Y§k°­s×É½;•ð°€OÒ¸'÷
ø ·åE}ô1]Û+S²8dO$­[Çs?¦¢Ÿ¬6y*ÇÝo‹Óizï>^&ÝdãJº¼8›ËÙ?Ø\µžcöCß|¸ÖÜßÍæÎìÿ‹q[  n¬*D¡èÖˆ€RÚÖ(+ˆXØ$@ù´¸ól E÷™uaŒãJÖ6?“‚ÅíèãgÕf_Qxm‹Ecš¾~ì·OÇæñŸ©›!xœ•ÁNÃ0†ïy
ßØ$:µ[Û¤B Àà<9ÓuI•¤E{{BË…ÜlÇßÿûOôDËºÜkÑäU±?JÝÝòúPkÕxA\H¥8Ñ“°'l‰†ŠRäT#òª”"TU9ÖE+ˆdS2œbï<<á@Nhy¸kÃR<Œ“§ÇŽv­»ÜCQó’WU%8d9Ïs–¦#ýSó}õ£À>‚³geBëfò×óàº#àìŒ9iÄ¾ç~²ŒÙùBç½ÏaÄ–Âf=@NëL^3g	Òr
”ì!Dô1ÀBŒÆv°R#Äž@^#ÁãËÛóëÒR"œ^_ã¼Z™×l²46DBuË>{Óö {Ó%3%Ú„„w‹*qðiõ
S Ô[½±ñwÚÍvÇØÉt–T¶Æ8þñ3Ù?-µI›4xœm’M“š@†ïüŠ©Ê‘ÚÈ0 JRuwQñë6@#8ºúë³•[úÐÕýÖÓõÞ éInÖËJ5gM3…,O“T#ÇúØ²205©£,B,R’hcœPƒ•*ÄT©ªbSQ€PjRœkú?Þ ÁZšQBLœºEr	¥‰BßÇh–>‰¢l9šÒ†Av´h€£ŸÙísøÓ=|Ïà7ÂcC3tB‚d+Š”¶ç3âv™˜	úÙ´ºúþ§`¢’ïïÀÎŠ®èYž>Ê™¹Þ­Ý5Š<wioâpö©KHB·ÞIÛv&¶8Áâ¤ðm6	£<i«+áÞÍ¶¹ïÙ/zãþô¬çûÛhå²h¼[OBTÖ'bù®÷’XvmV–Ýä8)‹=Ý­ªtú*ÇáÄ,ÕÈË+3Ì.üÎÍ_¶ò¢—Èo‘Æé‚…lÊ{¹¯“S{Ý^j½zì»œÂ³r;gî•Ýµvn±Èãèšw3Í+Ùv×Jh¸Ýt=VÕ0»o¨ôuZÇAØ”M:Ìí³ð—u–Î,E)nkGL¬31åX	6åAÖÞ_ABE°
ŽÇå¶;ÅêòªÎŽ£Î572r*K(Aóa²ÚìÚaš÷qSõÏ#¦¯7B^[YBþéyz¥Š‘VVø¡TüÔ·,%G;ôy˜íÔ¦œG×}ÛQÄâà³ÆY];ÞåMüKB¿Ç¯¤¯ÌfËéÿ“|à n¨kÄá2@/Ð7lÊy{F¬‚‚žÙ“‚ÕOýçìM’>–hMyèKC	k(¿£+­@´GCÓ³¦€ÕmS|µ´åRQßÿÝ@x”xœÁnÃ Dï|ÅÞG`ŒQU¥ÇžÛXØ…¢Ô&ÂDUÿ¾Dùª·™§Ñh¦Uf0>ZVÆ;¦QÇÙÚÀƒ†—¨Ìì±Ä+o&ô­Óuêè´$F­½fƒÆ.hÈKoí³Tø(—ÛVj†·'\3<ç‡8¶sZ1CY_@ÍË´5›ž¤“RtºæÖøÿ‚J8Á+ì­TL<4LP®-—ˆ÷PóCÇ>³WÜ 2àFð]sã;_»Û…xÏicJŒƒÿ9ýq•øšt%—xœ•ŽÁNÄ E÷|ÅÛ›™@iy0™·îLôôQÉ´`(û÷šŒ ››“³8¹­2"ítô&`qf?KëEM:ê`ådjñA•s§µ“´ò„Š]Ú4ÊJÉšÈ’Šã$¨·÷Rá­Üz.5ÁóÚ\ÓÎíiÙ(­çP¶GPGœ”BÒI)~ì–ZãÿÄß‚è-­x¡º3ì=Æô>eª|ÒÚh‡ž÷”ža-y¹O(µrhë!ÄkZ2Ï§ãÉ—?ßDÓnm™1xœm‘Io£@…ïüŠ–æˆ2¦¡¡AJF¼aÇÆŽñz£én³6àí×“ÑÜR§z¥ï•žô:Á@nŠ#+Ò©¦˜A[#:Ãi”BNqH¥:¬ì@‘iiZ”iHCªÆŠ-¢ëO#6ƒ“ÈÀHµþó
Ò‰Ax¨+
‡RSazH£–òqÈ ¦†:—Â¾K*†a™²ìÃ¸d¼Òë÷òÞö-ûMÙ ŸßŸ-¬@E‘¢ª(Ò®{Â“´›ö¼–•`u~Ó.éÉï'ðƒ-®ã6ÁË×8£‰·«É
l¼ÉÒ¶Ÿ£ï»$pmÈ±mÇµíµ³žeJ•î§3ÇI†ü‹&¼«m?ÄÑ³½K]f{U<íóÒaÖR-Ø
IàaÜ§V7É^ç¾™?§ê^N]%’Û{À5§Ñã££Þ²_«MÙyÍ‚b9ÓMm'mUºìÇùerh¥VÏëŒ˜XlªÓ2ôÏt:äÉÌÖ>‰ÑÂÐ=,¯àÚ!³Î'2—@ÉfÒÎ÷K°¯Ä•ïö‘5mnšÛå^Y8.ÏGN¾Š·ÑµÕ,
Rc8«DjŽ$ðqMúzÇãµ~X<V™ÁL;˜äóÊ¹ƒÛ˜½°ƒ{´fê}ãçð&½·còì˜eXË9 KnT&–QîžfiÆ[7¦÷+÷·þ4Ž¦¨m|wMÆx S{—u»Á63ëC<%WåMo§ó´•þu6ZnLZ03P÷ykzÖvàÄ.ªTœYÞ—tÐÕ"ã…§7ÖJR°úRà[ý·Äô(šxœ•ÁNÃ0†ïy
ßQ«ºM›eBˆâ —I<A;[aI£$´·g“¸ÂÍ¶þï“ÿš™A"Y¯-)§ÝHC·QG¥'¶#+/"ô¤‰d2Ç
Î³DïpBµQ%K½4µ#ãÐ°íå$ÌZK†÷£Y¼q,áñ«ý¼MÏÅ„²Æ}ë–ð8)©úáâ„‡»N\®a®•ÿKìõtÇE<nRžcÝBÊ\ënxJÀ§k:.Õ„$Ä./‰óñ’1¹0ÔÃUðÅÃëËî‡,`"Ýusm…ø˜÷‘©Y¼oìyû—Å7û€|‘xœËjÃ0E÷ó³/1R,ëJ)Y&Ë~ÁŒ5JZr°¥Bÿ>%«,Kw÷8ÜºŠ y+ÖkM¿O1$=§ Øè’½ÄÑ¨Üh•Rq9–Œóœ˜èûà5k«|t£ŠÞd‰€Zý\V<ÏÔ6<IÙ¤àëWw}¬÷òÖÊ¥—ü†Ú:ãŒÞÛ_”V
~mžj•æÀmšã¹åÎ—ï, Ç'ê >¦K‘¸[RÚñÏá/Gp^‚_–xœ•NËNÃ0¼û+öŽÙ±;Bœ8À‘¨6ñnëÒØUìø{ªÀ…œf4/M]ˆ€‰õäœ”’”´l'åÉP°J#ý`{30¢vâ‚¥
®3ŠQkë‰¥YvƒI¤ÁîlpZ	\ë1/ðrÆµÀ3¥B	îßÚÓÆÎeM‡vÊó¨Þ×iiÜI%¥¸©s¬•þUW¾û©‹t©¹,1Õl ½1V¸ây¥ï±áTra¿‰ûõëOñãÛâ¼ÌXkLÈü{ â5…&37ãçî/?Å1övxœ±NÄ0D{ÅvW@‚'qrBˆæ¤”ðv¼NŽbÈßãC”ˆfµšyZMÜ¡S’q©yC™â­DQkÞuÝ@+ÝŽ´ªjªeÛFV±¡‹0¶ØpÍ«¦—Ã€£Y;ˆ^
ÖWœ·”I­)#"ÅÙoðhE
ð€. ƒÛ×òå{»b	ÉMåè—;¨:Þðºn{W´¢”du11â?ãdµi2.Ühµ!„8#lfšóÿ-œ*¬qáÃÄq&ä9ŸÅùð#€	0¡ÃMX»_ò
¢‡ß†sÊ€bC¡„´>Å5Å2ƒ(?¦%·$¢ñ„½˜v°&Äù§ÃoÌÙçqzÏîpÁƒ6Ÿ`"¤µ$äÉLUáµ.ä~üK	äkò—H"xœ•ËNÄ0E÷ù
ïÑŒÒ÷Ì!ˆlðnìtyTMZ©O¶°³ì{ÏµfPm%³¶hêSÃxFYK-Ë5ëªRY^U9åçúTŠö	N…¬kjd&™K­jE’”VÔ”g¥rÅ-LUQ
Ó5ðlqŒðÄ>²‡ÛÏãÇVÝGtqôÝQwYÝ”Mž¹„›,ÅÒu&%þ—½lêo»ð“ãC?Ÿ.Ðœ’Ñ3¤+ƒ¦xZïØ¦ÆwB¼/}b£Mpz	[Ë?"^vk
Á‡EŽC
»N¬;\[ì"Dã¯±3,¿ƒàícdZÆ“Q˜¶1Lh™4/1"ÇkÜ¶­aKñ(Ä+»0íÚ­‡à~·CO+LZÑ*,ìd‚G»n¢=AüðÞLç™AëC;_þòdñYŠ»ÍšxœŽÁNÅ E÷|ÅämMZh)/ÆèV—Æ 0´h¡/0˜ø÷6uëÂ¸š{oÎI†2"LVŽh5·Úqoë•U?(ÏÝèg!¸Ñ~’Ê²›É˜l''-\§
)d/Péy&%Õ4Ž•ì53•Ö=ÃËfjgLÜ´ïgz,&–š–ÖîñºÃP}§‡;ÞqÎŽ5"ü§ÎÒgÄæ–C¢+œjªd´›	ñ¨`5ÉmX{rîiZ.o'~C”Ã\	a÷¿Ê-c¯aIèšÝûfþºþåcö~yù”3xœm’Ks£0„ïü
Uí‘Êš—$ØJ¶ÂË;?c'7IŒm`ìüúõfko™¾Lõ|}êé$ç Q"n˜è92	"QCãœØfžk¶cPfJC$€”bSs§†ÃJŒLgÈÖæPçXgä–¥aó?Ï¶9BV1ä4³4+cÞ--ÇÜ‚–‘ÛSHßík	"J~[R.Ác6|-ÏmßòŸÿt„-t—£UÓ5MauU•]w‡£²›ô<ŠZòæt{.ÊnßÓŸwà›XÑmY€‡¿ã…Qœ‚y4«8JÝõf~ù
PÀÐzÌs]ÏwÝ…·˜´åœúKo†÷ëõbÊxp](ÚØx¯ªN`|¤Ð¼ÌÔjìÈ×a(vf°Ã¬
¬VÕ2/µg“MÛ1Œg<ÏöÞ-U·éLÝ×Æùsíòzê‡
ã¹K=ììqd¯/u^\£›ÅoÂ&RÇ¹™/}gµr'·3Úù‘Å¨Hü|Sæï¡TÀz»Å³Z\§Û2ð´—ƒ~õÓzû¡™r÷AâÕ!I†FõÅ…,·{µ­.(M|’ËöâŽ"ðñ™“µš¥þe|1×¨¡a¸êHZÆ‡¸_8Þ¨hÂ,Fçñ†Ù±Nw·¥»¿ÜBU,˜ºcÂ6g-œ~Z×MÒ%fS]!ÑéüðÖ	N§rÜÁÍ»“•ìl¬Gþë†|”.í'<Ö“Aù×Y˜ß7¦$\4ýé$?÷¼íÀcrYW ,È0ªÈ‘?4{¨›®¬9)JN¨,Yû$÷˜> |O.åý%Y-ò²è%¡'þÏƒüv™ xœMO!†ïüŠÞÕ;Ã‚»1ÆD/LL4ñ\ 3ÓÈÀ?þ½ÌÆDozBŸ÷i[3hå;ÙïŒÇK9HÝ‘ë/•&ƒÝÞô®—jß
½GÌ+¨®³Rë}ï½²ÆKlŒÙ)åHJ£Èïgu'p©SÊp‡‘)ÀŽ‘2\ù÷Óå¦,…6ž®a«Ò½ÒÛÎäVJáÒ<s­ôO´ÁüFÅ€6³+xÀW‚Ç»[°4á·>\ŠKFHˆç‰àH¹p©ëPž‹Ko”?×²šSMÈð?a	Þ'vÌ<NUØLø
ôÑB8ŽÀ±T+§¸ûö"ô@±Oßu5‚§—PÏ[yùÅ‘Àf*Ï}!Y?m¯©Ž§£¦5†cÚß‰¢P]û(!ž¸mÊ_¤a¸°Ÿ‡¿)¾ Ï®#–xœËjÃ0D÷úŠ»/	’­‡Bé¢PJ×WÒU"%#Ë	ùûº¥ËB»†gz#;ri†8¢¶¨¥³b (¢87è…Ñˆc¤Á¶`£ÒA8;ÅQz=J’Ö*#)£DÐäµ²NRŒJÁpë×ÚàK¢x)ÔàîßåeÝV:z¡ÔRM‡'.8g¾Îsêþ‹jnÔÊÜ–r8Áû°ääÊm&¸7\ûe„^!Ÿ·@Ð¯µ5­ýëfH«¯7jðµôVs¦¶«•˜.3îAØ·FGÆÞÒ®5Æƒ{œþ²fŸèyBš6xœu’K›H…÷üŠ’f3#«CQ2
Ø·ÛÆCÛîlFu1eCá×¯ŸNZÙeîæ^}GwqŽê Á1%.%¹epQÀ©“ç&÷læp›QÌ¹Ö²j…ŒÌs‹äŽE€xžM
6µî@îØ^F (\FŒ_¼ëž	®mäÔÅÀ]›€	Ä7ó³¸[¸yÆlŠ56¨²éÐ„Õ$Ú±CúÂ¯?oýÐÃ'#Ã¡Ä!¶áa4ÂÆZÞT•PêŽ„šúR7´òþí T9dŸÞßØí¡ôôc‚i4Aëhþ™G/~úº™þÔ5¤¡käïcßO‚$>â„ÎÆ›`AË#Y]¬n~õ}Iû¹‡Ábu9.§± ²ŠÓs¦¹¸kH¦'¯Zv‰ä›Ý†Á7çt™'4ˆ'ÏS´ñ×÷ J‹ä²ßÑ+¾¦«:Ú¶QîGÚ%®ãˆ
&Ž>(ûqÿÈ <·Ù°Váõ%˜•07ÚZÖ.-ž‹ÓÍ4LG­ï.¾ÏG›ˆhh}™eîÌR]ÆÓb¿YÚŽµž<Â×81hã'ú¥ÇNxï¥ÔÃíÈå¥‰ÝŽ»Ä´5”Ê²,7œ¢7ÉÁªÆò¾:®ÆãU·‡ð©<_ÕÛ*›ÏCÇã‰¹òÓ­÷°ðÆûLC>Ië¸¯Ï“ý‰zõã-L¸bv:íL='Ë2wæ^c7òÕÈ“ÌKÛí¾/sè¾Ÿ’ëW}]ìAh™M_&¿OL[Bw ÔR¢Îô
ýaPj¡¢k*$E=ÜžêK:‡jÎ²FéUù—åJ4u¯ÿÚC+ÆŸX§Dñ®=Yš–Bò?ß­ý_ŸQ6T-úøã‰Tƒ¬ÿ ¥ç˜Kxœ•TÙŽ£8}÷Wø±K(B ê5d¡¨TAö	)õƒm°Å6Ù¾¾©Jk¦435R[òƒÏ=÷Ü«»X0Ja×@=j$2¦XU!(ŠÜ	±NUG¡ÞW£TˆÑB@…}bàH£Ývº
ÖP¤šFOÓqŸD”êwzJŸT‹}É`H+Z„—âµ¹?àWÍÔMSUUé–ï5§Œ·‹’Ñ*»¶ãDìkÜ&eþìè}M3û]…’ÒÐ y"eÐIÄcá×_nßÿ×-®bžÄ°õvì±ãzpæÌàÒu<kµ^Œßq <s›Ø–e-knÏŸÒ¿>ö´¿O5ÿ¤2÷lY›„»ÖPÇ¹ªÄEp²l+s)º¶ìàSïy)HO¯˜¬'ÒqXSÄ·ÂÑ‹yÇ#¯6ý|ØÝÌE½E|ð\¦—‡¢ã¨hõd â•¼<_ÏÙ³þÎw49YŠ|Ezn¬$efu³ÙÊFë%zÎ˜ÔCÓ¹M‡m †Ò¥[xðÝô–¨yg#GNV3j„îåP‰|½%çbgÜá#LÐñX½	Ú§2:yA:\(nŽ›ÔNëÉIžê :ÞâSCòcí¬`k2“n	êTl»ÝÙòTÇNÊ6“8›¼¼ŽüàºT¤ùe“¼ÑK3E¾sòëzN?Ñ’£­î¶žÚ¨†ËË”]Ÿ¥Ë£:¾ÜFS3BŠˆ¿øÍZ(GpïÙØýwÇ ®“,üÒL@\çDD$eÁåºÊJ¶IÔ`0be»P”PÀn˜¾~Âýñe/DÅ²ü÷TÉŸp>
·A¾.hF§°(å¿#%³»'x“¾úï	4¶·m•OÝv»}R x+S]…HÐ°uß;Z„òAâ¯÷µU œ>+€©âZ5Ô0a”ˆAÅÊ°~÷jH÷8¿§f§¸uœæÒÊQZ2Ð$À2‰‹&©2ŠZø:ø÷wÁëª*™ø¸Ø?â ¦3xœm‘I¯›0…÷ü
K]V¯`°±©Úª2ðš¼l*ƒÍ°3¼_ß´Uw½«£Oß¹›#{! âCl¤&²1Ê°ƒ#ã	 D‚p˜b‹§Ô¡ZÇzÑH€¡à"A¦iSÇa„@Ã¡8{3c™#lBþùFÂ±°SfÂb	´RË)Á–IŒÛ&DPScJmÆ¬)Eö,oD¾ðÛŸð}PƒøÄÅ7 m‚°M¡CÁG†–¶çs)åSöK9S	øÒ´½èêÇ÷¼”…J>=…ÿÔò.Ê¼ü>oâ!Xûk°üÐ_·“?\¸^ê¹®7rÝ·™ŸÞ?þhë-HqBÑÕêƒ›ë>¦«À] Žn×Ý¦ +ËÓõµ¶îñ¨æÊYr‘ªÊÕÛë°¥Qˆc¹àëe¡ .ö²zó‡ ¾o÷ü #½‰×ž½½Ÿw¥)¥/«ùžÎöIí$éã=çÛ¥g’n›à£ÞYU£áL¦ã‘¬¯˜ØÓý¤ëîÙ|S#½]j`¬…†fµZ×ÞËç¹¾»]úS=·Qw…i´š^îr!&½µŽ»Í4¦H0œïzHôù;±Ùj6dóËñ–”]ùaO¯‹SÆNê‡›þbz¬èi‰Çƒ÷ài«}›uâC;¢W_gy#åú[œIµÛÑ4ù óÔ­«åBmX8ÝàfÞ~ÕÀ×he%ÚßÍ&áøÿ‹i+Ñçtª®A/.J|€„ õí”•ÈÙ¹|‘º’eýrfe#Ÿ7ãÏà7úÆ¢R ®ººL™Dëøç2
}ÀEV6¥,ÛæøÓ *šxœKjÃ0 ÷:ÅÛ—IÑ×”Ò@ Ú¤Pï‹,=¹ØR0ò¢·¯¡(Ý³˜i"¨$´Ð<Je´Ê
çIñM¡Ð&õ!Eç»‡K-0á ¤4Îûà·Vpïô xØ@æ=kYXÛW] ¯·µÔ…à|Ã1Ìôûö<Î¦}¬óc•6æ $<pÏ9ÛìL­áÿìíx¾ô¬¦N8aCHë}¢&¸¾÷Ÿ¯×Ë$ÌT¨Q-Œ}ÐX0íjÎ»á»ûã›ý ¬‡fÔ“4xœm’K“¢@Çï|Š®Ú£5Ý<ªf·DFEQÅ[74‡—ˆúé—}Ý6‡$•úýS©$=g D…
“UDSf`Êd9–tY¢aD×Rj)’…–pV÷@GP¥0–d˜ÊQ±ŽbCc)…	ÒôêDNþñÐPS]WÌ$(±Dƒ‰’à„`E—¢èÄqªdèó†›Ô+Á‘d5ãà5'?º¡c_ö@+ªªèŠfS;Iˆ›ª*ú~‚Ý¢_¼Ögmùø‘}>Ð¯ðYÖf]‘—_f9®çƒ­»{ÏõÍð°s~× €±³bË4­7Ó¬àýòÔdú¶³–8¿(››Ì½Ñ4oo’g:ù§#‡qAWÚâ<üuå8XÙLÙñÖ–ÃËÜ6Ž-ñ¬)Þ=ˆ˜”^Ãs‡0†äã¹<{sO†ôxHÊ’ã€9O¤·'/­Þ/'ÍôÑ~½·¢~»äZË÷u*‘­÷"}"šïªŠ¦íŠ«£Xù7×f¸½ßw‡]¯éR«5÷Íi±m—Ÿøjúsã¼ý\[Ìª¶XHÖ‡s:eÛ¢]å'{v¬É’Ù×Îà]ÜÛý´ºE‹¹Èe»[Žv]]è¿-ˆ¾?ªû÷›.;=6«õf
j°QTT5ÑÏ§çpF¯þÃ®¨"¦]f‹çQÛ°ý\©ÌçJô®Ò‡clôä‡c¯îÜUZ1F6Ëç› ¾m¢+þÜÌñíÿ_LX3ž1Ðe	8»¬ëÁˆ5¤¼©@‘‘Q¬È'{i“ø%a)Ê~M0ÔÅÄƒ¤èâæÆøÄMÝó¦,ï@;¹¢ëý4éÀ_áO“»”xœŽÍJ1„ïyŠ¾Ë.ßIû<w’ŽÌ&šÉ(ûö‹àM½UõÁ7:3ä)y*Þ!¥hã„QP3šQÊ¢‹R(Åu®”vJ¹ ³56PÈV’““%Í^£CF¯BñÙÚÆkëp¦:óÏôR¹Ã}þ¼…Çu[ù˜ù¤›t0Æ!ÂJD‘Úå2ÁÿBB»ë|£¢PìsZOpnPÛ€<¯©ÕÊiÀVç÷o¤Ñh2Ú–!Ä¯÷öÁý
û0z[–Ýä‡<
ñ4ïRùÐJ9Äëé/gñ½wr“!xœ‘MK1†ïùsó -Iö»ˆ¶¢-ZñœM&Ýàn²$i×ý÷¦EAÐÛÌ0Ï;3ïDU.eMó¶BÎ^ÐªÄ¦U¬VšÓ†sÍr]Ë&+É(<ÚXhQfXÓŠq®x–åe­¹(ÁeÆ«&Ï˜æ‡Ø9kaöð&ö=\©éÜ„CÀ¥Âk`e•3V´€KÊ(%Òƒ‰ÿ‡rZ°’~¡D‹ÖVp/¬êÖ¯ÛçÍîáñî	R6ÛÛ—5LZPÎØ=(¤;¢Ÿ	Ùu»mMYB© qr`qÝ‹} .½;uÂŒMù ¢q¢ƒ˜ÐÎ…H¦ÎÈî[¤³Ñ»¾OÛ› ãÁÛ‚ð‡Ð„ zBÍäÝº	ÒD£Ï­¿
*‡Á^D‡qt>ýåcì4‘Œèƒ	­œ—„¼˜ä™Z8­í¼úËRò	<9°j“#xœPÝJÃ0¾ÏSœ{ÝHš®]‡ˆ 0Pð:?'m0Kjš¬ìíMË„ ÞÎ9ßoŠˆÀw¶\il:%U»£²«Œª*ºgÆtµàDY‘QDô	*.¾­ê¸”†R£j»ÆJ«$òš‘Ó"¼oÑÁ»è=FxÐó:<MyÂ­ÆG`MË»ºæ¼ƒ;Ê(%*œN6%ü´®(ãœ^¡Ä­špŒh
&{û™´¨„sÙÎè|ø0{Bžs\b¹Ë=¤oN+hy¿€
>Åà\Ú	Šº†±ÌÈ.žÑ“’5÷ÃÊ‘Dì1ÁÉöC‚)cˆéÖÉR1-\Ö£&ÖÃÛq_2m‹µAøWÊo)‰ƒ8ÛÒj
‹õö3™ô¸D¾ñuu4MEäÕ–Nõ&³‘—Ã_•“/NŽ¿®šxœŽÍJÄ0F÷yŠ»—òÓ¦í ¢àÆ â:¹¹™Ò¤¦Éóöq)èîãƒÃ9µA?tÞ9¹´c'&Gˆ£78YVhÕMýÔi)%[M¡TAÓK9ôS¯¥@e¥=Žšs^ôf~ …œ3Óêœ<›(Â‡9'*pï®ßãqk=€ÐC'¹JÃ;‡yYB­ôoT)þƒ2ÛBt'x_©1ØtY®Å¬ŒýrBÍÆæêLÐRøl.l˜/Tn€9Õ’cÜõO¯/g“Î´{{Š;dïövú«”}sDs±4xœm’Ko£0 „ïü
K{ŒÚ˜—mVíª¤„&äAÞ½Ù`	OcB’_¿iW{ëœF£oN3RpÂ‡XhéY6(·˜apËŒ-Â¨õH…8&8²”Š
^H C‚CÂbƒkW5Èë1ÄpsŽ(SMˆùž©ÅºaªØ€±IIŒBf¨'Æ“ÑH³B¦+´•ÇR€!-RžM
.ÀKÔ}›·¦møsÄÿ aÃ4!ÒTÐƒ*„JXæy*åvS9nx)JÁ«ìö–¤òØ²çðC-©’&MÀÓ—œ‘ëÍÀÂ]€•çÎìõ&}ç
P@×8¡cÛÎÀ¶—Îòãt7Õh8|<ó‹.¼Î¶{™áÙv×7×y}°NÔô>}6mªkwVÀÕBÇªj|ï}ç2êœU#wâ66-É"–
â—²vaìß÷áu~Y7x:t‹dqÞ„Å†) ˜®‡ˆÃÒfM-¶|è]KuYS7(ÿ†€è+üyoK¶[I§ÓƒÄ¯Rï5
(.yw¸oo½ÁË»fÂŽ¦B]qyèåÜîÏó«×fË÷…ÖÛóÑpWèÛÕ¶ÏÖDLv‹Þ˜Â œ°v¥Õþa¿#2p¯1&§6Ÿ´Ñ»¿aA½6œ÷çûÛšl‡PÆV<™+ ÍÝ¹ŠÑê‚Â~EçV;0gŸ.)‹%Uý³˜‡û9gåç1›Ðz¹sûGÍ7³Ö½*àu°<Œ•›fÃŸS|.ª6Ë€àuË	~©k eÒ3Ohž>É~+Óì©i!åËÿv8Í8h¤à4Óœ]K–à›])"Ð	ZU<ú)qxœAnÄ E÷œÂûj"’ £ªj—]w.`ÀÌ ¢¨·/Óö U-/ž¾¥'ÿZˆÀ¶1V|ÖƒHÚAzòZÔ|t=—^I§ÙŠ…–
Ü*i•ñ‚GýÀ@?j5‰ÙHë‰f4ýÄ%1Üë-¸äû¾äàýNWLžÃtõõš0ÄÎæôý,…ÐÓÐ+xâšsÖÒj¥ÿØ^C<Ã›sàC$Øj!LÐz`¢‡¸fXKhŽ\×•c—[Ø m;cŒùxÀF‘lm
—÷
­V#*å×¹oÑ·«cì#\r§ìýÉ|žÿø>ûãJ‚› xœ‘AOÃ0…ïù¾«ZZšvBˆI\8‰³“8[ mªÄ¥ìß“nBâ†ÄÍ’Ÿ¿g?s BIE«K,´¼«”ª–-ml}_JR*Õ­)*1a ‘¬iÂÊÈÎ(}¯tmt×)¥›Fhj¥¥l›Ö
œùè<ãè¨‡7<ŒàÁ,çâ)Î‘rCP6²®ÛN–ÜeQí‡Á1Ó?F…š]o¶ðz$ÔF‚Å‡Ûû4ŽãAˆ_ý ¨Ùù\„Ñ3 ê	ØCÚÞ¯bà¤å5¨«‰ÂàbLâë\ìÆÓ‚§[XŒ_Á¦pÒÌ?	2vSéþ¬G¦ÈÙö>GEÓ	+ù²0LÁkŠèk"Í1u\ÌaïWú™—¸Ö&q³–ÎHö?~ââ»izð@¹{—²2oíF¶E)¾˜ª­¾™2xœm‘K›J…÷üŠ–²´wÓMWIŒ‰Áül“]Ó¸=03ž_ÏHw—Z•Jß)Ó5 ˆàD–pËÎå’1še†a0`„€¤Tç”ÐˆV‹Êé¦ms=•¦„#KhbpiØ`5Sn¤’2
–ý?o‘Lr‚™
+ÁøùWrV’e–ž˜Ø2ÛºÉ¸&úî\5h*J:Š¼„}O‡ÏåWÛ·ð-…Ÿˆp“1ËÖ)C#L0Ödu½ª®{Â3Õù}‚¾—Uuñø•«îÜ'ßžÀ?dy·*G_?fâÍ‚mf´f¡óí¼Ï»†44´9qœ‰ë8ÛÉv~y¿é{w7Y˜ç[ßiŽ“;qàxSw7eöñ^Å¥³šu‡‹5÷q¥¡wé×‹hI£¿Do‡3­DaÁ¡°âuæM«½[SÆ½mö‚rpGêm–“ƒ†&
^§yð‡a1Ê£¹‚Å~—â·•á>º·{¥_B|8¶«•ÜDÃ~ïïŠÜ(/Urço£þéa1|eZž¦QJ'n××åðÂ—úÜõ}:»ËPûLÖ»%Q&ôNèm‰=öÂu_ì±†äù?ÎóÛýõ„¯GÅú&áûc–Ž“Ã(]D¢¹”G¯(¦™9’¯ü¤~/u»•á8µWwÏîÂœ–k'<’ø1^ÄQžãš'1s©q*ãl}ø³~Œ[*1ÒÛ›l‘»¸¸…›±¿~hè‡7œžV>»ñÂé¿ÓVÐä€ê¾(P·Ú}!¦IPÖTW¤r1ŒE]««Èákˆ4-éU‘þ‡¢º¨DŠ
Ñ}Èœº>°¿‹ù¦’xœŽMKÃ@„ïû+Þ»´dóîGRD¼xéy?f›Ðm²Åo©âUoÃÌóÀÔ Ùx¸äM×'É&(Å)i­””Ì­aÉR,nÅT©µ}oÚl@j¤Nž½6A÷°`Ž£ë…Ûê0¯ôì¦™Žî4a¥ûøqe+ØG<4V©Î²Tt×È¦a¾\ÆZñ_µë¸ÿQ…ßÆô¶äÙEÊ®¢TzZ–—‹;Aˆ#hpï :ÓöÔ¿;¹B+2\¹þZø*¨ä(Óy/Äëx½wsJ;ÿyøë¡øÅ\o”—2xœm’O“š@Åï|Š©Êq+Y†©$AtÑEto3Ðà( Â è§ÙªÜÒ—~Ýõ~}y-Z ”€lf˜ÊQTÆ4F±Ió,/4`ì©Í\V¥m¡È°¬LpÆôt‹R‚eaÝ$XW°FXf(DÍþùóLj¤0Œ‚jL×˜¬ªA´œZªLTöl!ŠD{q8·È¥‡
¥´l E?òáSüîú¾åðá'ª–nZèEÆ²,eçºæB<Í>³ž¡Í¹…Kuÿ]rqèÙ·§á?Xy);^¢¯Ë™úAˆVþ
m?´ß“õôs/!	“9¶íLl;vâùñQ»ÛÉÚYÃQ‹nj¶­MÍÀžLÂqðø4éùòrºö¡ÐãÛH$´oô`~8š¶»Œ™®¹N6—Õv@Û¯žù®”„¯6³lÞH&fõ’’û…„ú³%àüñàQ¼ÄoäÚnÄÛ@¯ó$­‹èCÙ]V¡&ËEP7iÈH–'áiÖ7j¾n6‡öê,.æ6;§j</áû&½íïçÝýM}¹ÅKfºÁ#wPÂ(õ Ï‹äú¶&ƒ„j}?­Ò	ÛÒ|Q(°à¤î±Un;cÄ‹a?¹ª,1k“læFîn\â}ã;¢(ºç«Õv<vsÿ=ÚŠ§'6òl~ŒÈÛº–«k¹ûôÃ*dÛ«°ï½Ý_Êªôß½ÄÎ³$þ)¡ŸT»>}f3Ýÿ'&-¡-]úªB-\{èú‚	‘QÑžkÄK:¼æø:P.$©¹ÕðÙyŽþÎ¨x~`7žê *xÒ ÈRü%”$xœ…‘KOÄ …÷üŠ»7Ð¡CËÄ5î\jâÂ¸àqiÉ´Ð ãÄ/TcŒW\ç~çrDE*.Z~ÐÖZŠ–³r ”jUßk~Plß±½ d•}¥;ƒƒP}ÇZÔ|Ð”Š~ÐR£xw0”î»½à‚ÈsžB„Gty‚ûsÒ\ŸT]oO=Î»ÇhyÏØÀ˜è¡¡¥D‡eq9c„éÎð"G_v×æ²·éœpgp“vl8Àm‹”ø÷pg\¤Ë`ßà»Ó	gS&¤^Ë¯•%½Ùy„°f<äð­iª¦©¸L®Ø_ä	TF£gGR–Îà|1œK§Ú-âbN°Æ0FLiÏ“K›
t)95c%U¤ÚÌm°[Y©;Bž\™Ø4ÁÚF}ÿË’¼~Gtüb•çå6•Þ¸­šŠÅ¹úþ…üIçí/òŸ? ŸüÜÂ€œ4xœm’Ë’›0E÷|…ª²¤&F J%©`›€íÆÏ¼B`a^†¯3©ìÒ«[}Ow/n‹†1 CÝ º¦ëPÃf„“(6 Î!	M¥F
‰0‚”jÒ°R€ˆ¢˜Y82‘5,ª(Ø´(¡,¶¤ÇŠ¢"ø¯+¢YšXÕ4=¢‘‘ÀXÖS"B¡
2±D:q­°$%g9x#iÉð5>Ä¶kÙç˜}Ð0‘ªê†@V ¢H´*
.Äv¹ðº|-«†Õùø#åâÚEŸŸÀÆÒ:my
^þÔÜqW>xu_Áaåúöñ´w>úÀÐÎéÜ¶çÛÞÍwël¼Gýb?ß˜×½Ö¬ÛßéÊÞhíâÞ™M6Â$)?ŒôŠ	õ³L<Æ›_?Ü¶³èh)6³Ó±}»NxU¦¬WìõKFË—.nA¹©PIÀíïé¸žÊG°7ªEÒS¾röýz™³Kz±†çAY{ÈÆº%js°x­Ç¬›²©¾ŸVD¼YÒìŸÐ¬·×Þ»+ãSç—æy³H÷Æõµˆ³ F³¦|˜Ùû·svÄ2Yµ‹¡'û°”À­­ê×“8ûû­íí*H*#t–üé$ÊPCèÔoûpeñô3ìªËÚ9Bj¿Žb·ƒ­òqÜ$¿n~4zãp{GÎ´PRm£”×SüSö•ÉU‡VžG³ªãiÂÆ=Ï”ÌCr‘¾M;ç›¾ÉtÉ¥¿™9þòÿ‰I[Ö¤Ô]žƒ†Ý;Ö
ð	šƒ¤©
Ào,%³¶ xÉ«T’Ê¾`/uÃKñ,y[çd6xÚ &‚€®ä¢}.$1 e†æÏÏ•Ïó 'yÇ~<‘ xœ•=OÄ0†÷ü
K¨§´M¸!3ìÈmœ6º6©çÿž^a`„ÍŸÏûÚœˆ@÷ªoí¤S¶©Û¾ë[UwìÌQ£µ
nH¬˜(0RiÝj×K’ÔÚVêŽì­vÛŽëœV55h%O1Á[<•“‡—¸x¸÷ßÁÇý|âò õí±i¤Ùpp#;)ÅV]<3ý‹Ðµµ©ÕA„óBÕš|à;xöyñò‚‰aŽ#Xd„<gH„0XøHÉ ¯/pÆ¹o“¿ôsœÏ”ÁmñDàs.WõQé<Í9Â0aé¾l²ucÞù›”³S,ëˆ…×ÂðáyÚòXò¦ž¯aða¼àÛõy÷…ÖSæÊ—Ze/.Ö÷b>ñêÇ@¶ŠÎUýçÝ_&¾ \£ª	’ xœQ=OÃ0Ýý+nA#;ã´B$&†ŽèbŸ·©ÙUÿ=NùHLwò½½ç‰@+¹ë•©•èd/—š´µ´}³­DÞòFuªg3FòZDY×…$ÛZèm_×Õ]Ë9	+$vÂ*ÚjÎ.yÞÐ;šà€ƒ§Oær[^Ò’¨2ô¢UMÍ•”;xà¢ðt8Ÿ]Îô*\vƒ‘öð~› 'ôô‹›`ÌÎ¢Î‰±ÃH–äÊm,8$ŠßÅ'-óbÃù—þy$¨4ê2Œ‹¤sˆWp‰¡1d*xR [Â”óM3Íp	ñ´îs3Åéz)áf7Ñ×½IÕ1Ïly‚äPà”Öžï.£Óc1ã’2 LÎŸVÀJq*U”1°*Àªp_1öYâ“Ùk7ýuÿWƒì>ª¬”3xœmRÉrâ0¼û+T5G*cÉH²©J¦"ba1KXn’-ã/øúñ$5·¼K¿êåÔÝTRŽ)ïSAáˆ`aÊé D¾à„öMc •¼’y÷…A©¤Œ sŽCÉe@Ì †BÜ÷‘ ™ÿýÐ¨ $¡… /¤ †E÷-Ó"
“‚ÈÀ§o›SQ!Ïc™‚rYç@}=¯u[Ëßü5±$ô:€š_dYÜ4Ù‰·à9/*Y¦÷×(nN­øÝ~ˆEeTÇxúwöÈÏÁÒY‚õØ™³Ív5úâ5 UÛ¾Í˜ýÆ˜g{“ó=	Ã·•=5Og¼¸ö«±bºþ˜¹…Z.t„îÞ oŸ0NÊÓLChBs‚Áà–.Æg[MÛE±w+²¬I"aJ%·wk:Œ¸ŸöZÒÝìÌŽÉðX
®„F>î_æC¤ÇzÎ¨F›üÐóÐ$öëÄ^§ûQ»½LîòÜäÀLµ…J`è6&Ú‰ƒÊè–¨÷*Óëõó¾ííï‡2÷üâ1£²1†Êk±}°ôÉ>³“b5‹‹Ä>Êšy“·Y­4°¼-y´·ÅizYê9“)«‡{œºrß4[v~äêÕäd®i>{0µˆì^µš—Ìð/ÀŽá_í•þ¾É1ì{ÅV}½þ5q]´ùGÎ›ž•;‡ˆaoRÏWãÜº¼û¤WŒÇ/xÉfAª}w6šnL›É*’ lÓTòÒÊº¿I-VEâˆ+=‹kÿ)ä¢Š;ˆo²îR%Ó”ç²hkð­/M³²*®2ëæ\ÿ«-þ|š4xœRKoÔ0¾ûWÌÝU’Í£[U‰^¸p‰óØoÜ:öb;òï™¤»4 $8%Ï÷˜oœ#`Ýâ¡•mÙ`ÙÔ²jj]ÉÛ£)•Ä¦=tÕQœ1’ÏÐèF–UÓ˜®Æº«´Òu!«CwÐ$eM’šîP6êVà˜ûá½%ßñä)Â½žÖŸiL´×ôÊ¶«‹¶ª‹#¼/Ê¢*ƒÍ™þZÅm{…
ƒ2Z•îà!€y†s† ’
Þ“Zè"¡žáR"*G—„ø4ÆeJ7ß\ïvè ××3L–ÒY¯Ý9Î’‹¿ŸcpŽbÚÃ·ˆái<CîisÖ¯:Ñ[ŠU?ïá³Fvñ8¦öäC¤µó:áâÐ u{!¾„L70ôøL‹”¶)[mêARžˆ<§t[g+·ªðLqSSÏ ^¿ ¦YdƒÅd¿ÚCš"°‰/1_µÅÆç/bð?ü*…)cÌÒnìRÙt½Ê›ß¤KN¼Î8x‚·g¶Ìsñ²Þ-fXZb²oe ô/‰xYO>L^üî`À¬zZ†ž/É¾*r†_Ù:é]0f'ç»½DñžY$¹–xœ;O1„{ÿŠ-‰P"ûîü¸!è((‰Ú^ï%‡œsä(ÿžK‚Ð­´óf¦$" Æ8”²ó­"­„nhQIî¤Eí¬B×kv´‰¦\K4ÞÙ¶bÐí¤$)U+x×wœ[á¸1½é˜­e<Ùi¤ ¯v7Q‚;ÿq9rÍ´òtBéNÉ{	·\pÎ0c)ô?´áÜ¨þeƒuiÄ¼†ðcÆøNéÏÛ°!GæDXÓ¥Éù˜J`l»'ð4ØÊUœ÷±eAžíÎh™u?ñ‹ýœx*)†0‡¼ÉÕ•Ó‘ ]€<L±À[Íßôï”X¬ÛŒsM¿ŒÃ°t§õ_+°O> “v‘xœ1OÄ0…÷ü
oÀ)I4=!ÄÀÄ
ˆÙ­k¤6©’ôªû÷ä˜a³üÞ'¿ç’˜Áíe×ªF+·'e¬CjºÞö}ÓÒ4ÑéÖÃbÁÄ¡@ÌÊIT¶k´q’´}@²Ž\£©oå ‰ÚVàZÆ˜àƒç	>ñ8Á#m×á9¯™wÄO L»—F·ÆÂ­TRŠ!Î³/…ÿ‡j)­é~Pá°O~ÈøX§T#Ìœ3¶‘1
`=1/àÐOYˆ÷ñ×<DªN?M°$_û–ª$ÆCåÏàË7r9ÂÆ@1ÜñÄP¢Àœ×™¯{OÁù@•ÙÁëšär	µX.–’<S¥ ‡Ñó‰wB¼ùÚî£s÷ýùð×Än“+xœËjÃ0E÷úŠÙeQb[(”Rè‹@I	dYkd«ØR°Æ	ýûºiw]´»»¸gÎ\A+_–Vi¯…(^pî9.¥”Z9^)Ô¨*Æ°“0 öX¥@É…‘FrSV¨U-ŽF(¯–ÂÔÚV¥dv¤6ðhcÀ¶‰8À­»\Ã}3ï`¡´àª\7|²³:õ} Âÿ¡%çKe~PÏ=®`›4 ¼n_Þ6Ûýúá	:<cÇØÁ¥8#˜. µ¿+`	l×°o§Ô£,ä›a6?Ï µ™Å¡?Ùš
Ø%x3AøV†	.äÔã—ÊÝTðiè-…!“h"Ø%P{ýa½yÞŒíÂ4ÐÍ“÷óãÇê¯ýìê?ˆ–xœŽËJ1D÷ùŠ»×’tOƒˆ‚ àú&¹™ô¤›<úïmEWº+(NÕi…¢4:j!êÑŽÞIÎ1žPZT"
ogœwvd+Ê0ZéI
ŒARXiBTáD!Øaï¸âZ*$ÃÞ¦¥ÀæD3¼ã%S‡pû
OµW:z¡ôÈ‡Q[w\pÎür½¦Öèè®k”ýFYDW’¯gxj_×¥4ˆ»…KËKokoŒ½MŸ?˜Ì)L4¯Pq«p£ðtmêpnSª,¶^èÈØkÚµÂa‰ñà¶ó_ÖìŠxÿ–xœOKÄ0ÅïùsW—¤MÓvQü"*,ËžÓÌ¤t“%I]úí­ËâQ½Ãû½÷x9A¡mÑÔH©Ñœ—UÑÕ%ç¬…5r-SÕì #ùXtªP%5VvUƒUÇE‡
•QºÖŠ‚dÛÊªczÊCˆð ½£vº÷á§ã6M‰VH7 T-y)¯à‚Î™	û½Ë™þ‡KUÕžQfuIkØ&òè´‡ÆÃ‚òI£ó= K&|Rœaý"ÌÑQblG†0KäÀ„Éd¸ÿØþæ÷-ýñd‹ç
vƒ	t—/A)@š½9)_6ïo¦|˜2]ÎI>……8ÿµG––Z¾wv>	Ÿ^ïž7+Æ6n™¯‚µWÝ¼þk%ö!Ÿ¼ž&xœQËNä0¼û+ú6 ÕŒòŽƒâÀ;H£ŽÝ2öÈîLÄßã„	qÙ½õ£ªºJÍZ)ÕXäØe¡ä¨+UçÔ"fC^–c™WÊ²#)ÎÈ1”C7t£®µîe(°,Š¦ÎTEuEy;`ÕéZv(pfã<¡³4Á¸×ËV<Æ9ÒAÓäM[Ê¶id²<Ë„ò§“e¦ÿ¢VE–É¦ûK#ÁªxOœgð
K°L@!8‹ex”×$Dß«@ÈÔkÕ
ï‡éæl…ÓdÝÜå4ö¨õuµ«Dâø-+C¢?›¯=E·cX|ø8À39E°DãçIÿòÅ†®"«·µýá¬ƒ~;ûÛßAˆW“<ž]Ò["°Oµ?ãª~«¤Ý:YóD›ztzˆŒúÈ!A}¸Ù·jMÿ>G¾zÙÍîÃùÅÁ†„}¾K÷_lz‡ÞûqÜŸwÿú–ø ÓD“!xœP»NÄ0ìýÛQ '—s„HüõÚ^çÌ9vd;ù{l‚ºÙ™ÝÑäH‡q0ÂtÍØ4z”{Ò¨;ˆ7#×¼§~à­”œ-Ég8 ’­$Æ®kuW´†ô¡×ÜÎ»½j¤èšžáš!Â#zKžqòáVŸ?À}Zí4ÝA#úýÐ÷\ôpÉÎ™
óls¦Y»–óAŒ_V&Wëô<Q†%†R9&ƒ«ËCr ½.,û×kŠ×.(tŒ=ð!ƒõ)£sU^YXÊëïÕ‰JY]Šp„WŠçh3A>Ó6åhåšmð	
•
€`*	ªN´ƒ‡zÂ¥¯,“õ¤m–Á¥ú‰ý
;ã‰Šê•\XæÚ|¢¼.€	ÎeüÅOV[£mgÜ¾S³ÏqÇØ“-é«`Ì•Ünþª”½Ãî²>š1xœm‘Ko£0F÷ü
K³ŒZÌÛHí¨NÈƒÒ0’–fgÀ8@Œy%ùõ“v4»ÞÕÕ¹çÓ]| À4OMªª	5th"j[ŠžUŠR˜!¢d TE'‚Ö ¶ùu'šE-Ë†J®å¦™"b$0Ï`NS*ÈDð¿¯ëª›–J-h¶®ÝÓ%÷Gºn¤ºž’ÄH3%³%Òw‡³ ©z„ÕT€§lü^^Ú¾¥ýÓÒÛ6&PPJÏUUtÝ]^ÝªOÀS}”Ÿ®/¬è}òx~ˆ1ÎÚ‚‡¯™Î—®6ËˆÜ¥·»pþÍ% ±¦SŒ§3ŒƒiðZ^.›…SÏ:”úŸAîˆq·Þ¹x‡ò,Üó‹1ÄÑ¶	VOTu” ;Ùäø¦E‘CòÚ¾Gè-˜Àe¼ñ¡S¬P`µhc™8§Z¥«Õ`ú\¼Mz£Ø
³qÂýÉ{Ò6ž&²#›ÈÀùÒUS¿âyå¦>ür˜¶«BÉ?¹mÙ3¾Ý$ˆqå“á`˜÷Z›––¿uålø—bîT^FÕùÞÏŒžEôVW+c`Ë ¯R·¢q±[Û¡\~™”n¿iØÎ¼ØBt0üˆµEx•Ñ(¾2žØ9‹ÛHgÉÚ=Ž^½ç®§Ž4£¨% WjÜö%kD¬]è<o=ù(n4úÜÙ‹!êõüÓ·ØU)Œ×a!/•—Í{Þq¯ï<Kà9=(Pú×ÙÜw~nLZSÁ(àýémzÚvà—b™6ÈÅ¹#£œ
J:ú@8/*Â¨$Í¾Àœ»_à/Áõ*”xœ±jÄ0D{}ÅöáI–mù!×\H‘z%­l[2²|&c)“nggæ•LÜzÛ”†jÅM]+”AÍ%iËF‰ºÖVj6c¦X@hO-j¡¤Û-OèqáÛ]_c'+¡*k=Ãµ)Ãc >°”áÙmÇñº¬½€hZ%*!5‡'.8g6MS(…þYí´ªëŸ*3kÝ®ÎÁužïöÇ¶”?ý˜¶…±·œÁ`ü=(/!EHÊ@`×|À;ø¢ÐRBìÏŒ½‡}„;%ïOæëò×Fö¢r€‘xœË1ND! ÐžSLob†eÀlŒ…'°±`X‰|Øðùù×71Àî5oM h,_°.ñ‘'²1S	>’³Úˆq‰0ªOé8Ð5²gãÄ¹€º˜B”<Ûˆ%c‘dQ{ò¨øX_cÂ;÷*>ùÞeÂ-Ÿ¿xÛ]ž³¼‚&wÕF£'xB¨ÒØ¶º–ü³¯ƒû«*µåøÎ[íwàž!5á~<vÎ1¿K'”ÚdW?j‘Nÿš5xœmRËn£@¼ó£ÝCvem0 %«€mlˆ±ñ3‰oÌ ö˜Ç0Û_¿$ÒÞÒ§R«ªÕÝU‚hd ¨«T%”‰iê‘±Jd©6-XÔè–*ÌI!@„pl-A$Q(Ô±
M#QbiPEº…¨Ž5’è?ß„D—MMÖdS70R,5R5CÑ°¥¢˜š1ý<j¨nEVr0ÆENxÃiA8xJº/ðÒ´yLÈ_ HS,SV-0Y–âò|Î…èÉÓ\ÌÚ<%'»½¤¹ÈÚè±'|#K«´ÉSðç³œÉÔ[€p‚7]ØÛÝzòÕ—€ºÆ‰ÛvF¶½rVþñvì£µóŠ²£¶¼@îu¶½^î<{t¿'Ç×îº_]"¶ºŠº;¦t'Õº6c¸ÚçÙºÙ§sÊÝÒ¬vwR†Ž\W2­øJ>æã¾2wzõ«…>ÛM"¯”€'¦«£p^eg1™ß^ë<ïïv¡D®/[ÃVï¬cZÁÛÁwÜ[œíèï/Þ5Æ0Ëy?á´qºy2¸³Fo›õÉç%7¼Ãù ÇGfíçTô¤™­/KŒ(hï[‹ŸFì„âr$åa=ƒtÃp|È½Zks*P¾¶7÷ÅþÖú˜p£O½Â+k±µŠOâÃ-Ý» C-P¶ê°ßç29âmŒøÉ{w•![¼£pQ—IlàyFìÃÉ%¸D©Fó†ïo‰îÇ8}ólÃ|–Àómºìùòf²ï˜žPµŒNê–4üTn ÊË3ˆr~"¬-’¡¨4E3$ÉNð@“êT¬MóÐ>†g\à§ !—<&hÚª*¹ølmÃO!øõÃeäšGŒô¡„ýoÈ¹Ïüßÿ É²2šxœÍJÃ@…÷ó—®i˜¿Ü$EDA\è¦ /p'¹“F3“’LŠ¾½‰Ú‹î>œïpÒÈÞaarí5£‘\–¹S†4Kï´£²²\y\€Ä‘FŽ	_gQ:4¹ñhÙh£17µ,¥Óµ¶š+As:#¼ô4OðÌqâ·ÙûÝO¦9¶Y=„;PXÈ
U¥4ÜH%¥XÒÐ¥Ä×­Ê¥±å_]ÄSàPÓ€ïù³s=CC‰àØSÍa½(Rû‹ëÅfâa)ŒÜó‰–ømo•E¸Ú<«bVl®ÿ“dB¼vmäf;x¿u_»KˆoÞ.~PxœÑJ1EßóCŸé6éf³IQAE,Ö˜$“íênVvÓbÿÞ´ˆ¾öm¸œ337D°TÚÔÚˆÊIe\]jjÔXrò"Çµ¯(8§*ö…#ÅÜÛš·œkÄŒU(—è7(¼ÖV;\2Ü¥í0Âs‡»	ž(Náú³ø8M·öÓ.6…úªæ¦2FH¸â‚s–Ó¾M‰ÎÖ¥¨x)õ¯Îâ¾§ ÷ÐÐcÄ†úãóYõ‹‘ÜŽ0ú‰±»L¥-Áãâ^þÑMF!ðFŽÚ=ý€x
m$ö ïk)¤b³‡Ž¾[ÛÜcBXwèN‹f—c›¶Éø|an«sJ±Ù„šxœŽ½NÄ0„{?ÅöèN±×?ñ	!D	%O°¶×‡!q¢ÄFº·'BTT×}š™Oš¶1ƒŽ6±ÓèÐ£e©<;é•Ag½IF§Œ+m\Gqd'™ÑÂÑ&iÙkTÎx—i‹õö±lð6Qßá•ëÎ¿ÎŸ¿ô¼Ó¼÷z=Çe~ic´‡á q¤siïÖµÔÞø§‹ÐË”.ú¼ÂTBýžÚyÄ ¢ŽÚá(ÄË¿–R‚œVÈ½ÆV–JSi·³ïåZ9–œOáv¹ç‘øhlB˜4xœm’I“›0…ïü
Uåèš! •¤^0öxa<6žÜ„À6‹2ÿú8IÍmúÐÕÕõ½>¼×8ŽàcÌ	†I‚R§’HBqŠav-d4T‰ªÌÄ¶l™šÂˆ#Óöwl	])=ic(,ÊMÊ>x—Ør(dnêpn›Rá`&$£Š)&žÀÄ1¨îòZ1­
q	Í*¡ÀwÞÿ~µº_¹ø	 CåXÐ$``BÓ4X]–E×=à°èf:ß«Z‰æüþ++º\§_À'²¬ÉÚ"O+˜„Ñ
lÂØFáÊÝ½Lþí`€¾XàûÁÈ÷ã žõ0NG/Á‚äG¼¾"õ¾?¿.#?ZdÜõ×ëáÜ{.”Þ/Æn\°Ä ª“KÚûA‰vç,zšÖç™çL"Êìúi:*Ìá°L0uòýé~Ó4ðÒ8Vn€á”Û¨jùÛÝkž_&U¬Ç\Î›õ¬;ì÷yÒoEÇN/Šëóó~xJ7AœKk°´ ‰iº…îgKJÈaÅâß¡ïº+Y_wg;m—$ÚÎnÅÐŠ£{§U…&›Åtf¯„ð|w¨0ŠöÛ{"ËµðÐÐ]R®Ñ†Éd”ßß®ÁÍõÞ'·Ës¼ªý~©­Ð;VÃ8»ñ68Õ8»<|ÐEª9i8¶û~¾:´}èNw;ËÞ>÷lDn¨Þ°òÕeÇ Åz~‹’Á¹<Ù~cw=kàÇ)Ÿ›ÆÿÌ&«ñç‰K¡2}>%.Z´ø‰Tu	ŠŒöCYÜž”`×GkjÕ=åuÛÜ0ªk)¾µîÝ»P5h(ç‚ƒÿ (ªÇÉöCþ¾­ø+Hð™xœP±NÃ0Ýý·£VNlÇM…
bv|çÖRcG¶ST¾7”	¶ÓÝ{ïÞ{%A×¢”µl„pZ\N;­»V ‘VÛVnZÁ&“(°\*%”8q(¸ê	;åšs½S²¡Ö 7–™¹c‚'<àÝ%¸ÇexÌs¦5Ò4m×¨^Áo8g6Ž£/…þMíÕ•…óH[ØÍeš|RŠ0DB8Æ\<‚(ŸW‰¦˜j–úÊdìõH¿Àg}Î> T­äk¥b¯ÒùªvÓu5hÝ³êzôÁœ .Öð6¡)´p¶»BGS Od½ó5—±6&¬/N—õ·“çýîå¦ )Wz5RQ‰lYP{_›ÀUtn5\¶Å¾ Z§¢û˜3xœm‘Isª@…÷üŠ®zËTÂÐŒUÉ«€Ê Š((Ñ]74SAý3IÕ[å®îðS·êÐŽ #"«¼¤¢aBM%*kC$+šÂ(hD„cÎ¨#2‡ÒX†b,qDà8E¥’ÆXI4‘¤qœ<AþÏk<ø$ æù©)æpŒ0‘’J2T5‚TUâ4o;0GMA*¡¬!xMÆïæ½zò’¿€—A‘5(à‰ã9Ž‰Ûº.(}ÀVAíƒ×¦íÈ¹º½gÍüò ~‘eç¬/2ðüUÆÂr<à[>ËÓÃýnñ½g ÆÞˆ]7fº¾5¶Ë’ZZ0Û®’—âæ
;gÔõÒ9:ºåè›¼±¦±XùBžl‡õƒ%ž2eÑ„§Àg/Ùl¬¦gÎ0;	ÙÜ¿•Ö‡ýÙ
ÂÃ¶qr	\3¿,½Óvß¥w»«–ÄßÏÙVmß3·+¨¸Áòxì£Œ«ƒ‹ÊÍv©±ÁÔO•‹å{köûnØ»Îñ³?œó3üLFiÂ¹ã;×lhì‘ìùEX³.ÝDájU:~”®Å›ÅÝ¯X–f½_™»0Öo)1ý$¸;Ü¹jËÏÚ“ÒpMÔ¦Ø`i¿Dúq×¾®ôz“OškP1@¥±¢2© u'Z±öõÅ‰ çÚ¦ÄëC‘”$(†h–5Ró9œjÖ³ÊÁ•ôð¼ÓÑà¸ÁkûÏ7¼yñêÀüd¶ðæ¿'Æ¬I—pª
tä2ž‚?¼"I íÚÙ¡)è3}\z†1‹	$mðPT	@MúsUPÐ\k¾™á—ægþÌæ –xœŽËNÃ0D÷þŠ»G­ühìÜªB,øX°öcÜXJ”8Tý{B»a‡Än¤sF3mÈzØ^uààŒá½ŠŒ`¼uì$ŒfŒ‘âÓÏ¨|×Y°	¼‘˜œŒÖ°ÖZÙ˜M'uè™%òA¿¶ašéÕ×‚‘>ü¹b¦SºÞÃË².Ø'<“²N;ËÒ9z’JJ§Ë¥´†TEXË˜Žô¶VZkiÔ°´…òv£úV¾@waâÇh~[×õÁK=?ü2ÞöB¼—m6í¦œwávüë•ø&ƒl7’&xœQÁjÝ0¼ë+ö^ò"¿g?Ë¡”rí©…ž×ÞQ,jKA’ŸÉßWrKSJ¡Ð“–ÙÑÎÌnŽ ÝŸûáÚ£qnmúá<M]cY¬¹ˆ´ŒNŒU/á3é®;ƒa™š¡!íÐ^&¶Öjô¸6èÆK§xËsˆôÄÞa¡¯üìé½ìGñ1m	'Áj®EþjtÓÓ;Ýh­¦°®.güÇWµy—èS¸jI)'Ê˜<v1å_•ú2ãg÷HSð™O…][d#¯ØCüF¶©óÏ*‚š9;Ä^¨¾yÞù@G÷MûDEF‚ú¡V¹…#eÒñw®N%áÌÕè½àvïo+4í 4‡m%.ñ¸T¬ôRv!°¼-ùTr„à0¶¹4Óˆ¼¾2ÿ´rÈU¼N? õp­+ãå7þ_¶Vä>»r¹ÖÞ¯ÿºúìÎ7‘xœNÍJÄ0¾ç)æ.»$i;µ‹ˆÙPð<M&»4)é”ußÞ(x¼}|ÿR™Áë)x«9L<±ÑÆ¢¥ÙGh,á±ëÇQ­T9 ¦à°ëÝ ÙjÝu}‹6¸yôSÏÁ9ß,ír-^)GNðA—Ìžüí¼lûÆGÏÏ`p´#"N<h£µreY¢ÿ#ª|q'8ÇO˜÷˜<„¶ó¶îÖ´_bVêýÊ¿"Å´ÁÌŽZHã%Jbˆä"àJ­ì$Ý¿[öG¥Þb{à%„Ã|?ýuP}ðpã™4xœm’K“š@…÷üŠ®Ê’šHÛ@C*IP‘q| àŒîš~ òhÄñ×Ç$•¬r7÷Ô­ïœÍ¹²ãP‹Ùf‚	äs¡#+Ñiê1©¥ë™¢º PiIÇk	¦Ì¢ŠÇ"lj›
Ó`Ì‚˜$ìÄÖmË$ÄyÆ!Äc2(fSS·nO™AEb@Ñ$a…2k:0#uÎKðJÒšwà+‹ýÐóÏŒÐÄSlNmCª5M¡MUåR>`?—Ë!_ë¦ãmùñ#Íe6$ŸÀli›öy
ž~;÷ƒØù;püÅûùï»0ö.uÇõ'tÃç‹\œWÞÞ]áì¢o¯¨FÇY”aà×>Ú0L½9#²[ÇÐn‹›^…·'Æn495(<ÆY¶ %í‡`•FÜï­j»›ÈëÓ¸¾£Á±_6hy[ZA
H^U$œ{yí¢}|\o0„ÃŠÆõv9Â‡ù	=7çöÕŸÌ¨w³£¯ŽÈÇÅúRLà¨€9^hûÕö#ð©³W´½‡íÚ'ÎzéÆòÑð·ÆÙ›¯h<ÐøŠ6ëý²Û©–Õ*à¢îx}:ªõ:{¾ïc©¿¨¦ïY^9Ý¹èä»W©n— ~ÑS-Äæô‚´0*µHº¶:”ØæF…*¯û–É=“U1-}ÇÆeÔ2ÖZzdÔùª²ï"fÛdrW=¢ñpaÿMßæo°Pþt6ßÌþß˜²æ]ÊA;”%èøûÀ{	>Alh@tMò‚§¤ÊŸä¤îŸhÇ‰äŠR_+þ8eÙŒ —¤f¤cd0Ô¹ìx¼å?ø¡î<PSÒ‚¼nùZê¦'xœ•‘M‹Û0†ïú=–¸–¿´¥4-=J($§½ÉÒÈ6–Œ5Î~üú*Úv÷Ú
F/ï<ó!^¡–hš¡/¥´Ô5šÚuíéº¶²vò+%•˜õ‚žÁÔv¨gu[7ëîê¦Ñ=vVõm-{­W·Vö(ôÊç°À)<¬>,ûõDð™^ƒ‚¿Ž“¦KaÂôd§ªt”,ácÙ—¥HêDÌø_Õ6UÕÿ!pfAÍ¸ñq;kÁÇÜDíSlôœãe\§4\‘<DN½X8îaõÄQˆÓ™"¤;/a-ÏÀgLR\>HÕ¨NI¸êKâê=a&¤,KW²oIÂë	ã¬ÂÏo;ˆô‚‹ë‡ãýÜááûîW{—ë¼b}àw4ñ²DÊŠ		Äçì¾ú6%„™)øX€Cà´–[ŸøD‘ÉÙû)ûÞWáÂå3*ÎhÈ‘Ñ7XtäSí¼•Bˆ#é¹	Îm†çí?~—øËâÓ ‘4xœm’Én£@†ï<EKsDIX»a”ŒÛ`C¼áØ¾5ÐÍb»icÇO?$ÑÌ)uúë×W¥*UqF0TÉTS]7©Œc„!JŒt-5‰ªÉ¦©¡iPJá„i8”X¡˜ b+TEÃ	V©jÊº¡©0¦i¢©É?žš©ªÇT‚²L©¦!¬¤Ê`)Šª™2Qh‚c
øÂó–7©À;ÎÂÀszý¯Ý¥#)ùdˆÝD@”dI’¶®ÎxRðé%ÏMËÈ©úxÍ
ž_âÇø¡,;e]‘‡Ï°Ý‰‚ÅdÖÞ$´6ÑÊýò €kg'¶eÙ#ËZÚK¿äãM5ZÙ3”—Ú[¯2ïjYkQò¬ñôêVÑj³ßmÐ†ÎõÑ-?ugY ¥›·VÆîF›GþÝßÁòù°%6«3ÏÍj4ÒðÍó,»û·zýAàú:~
8
NÑö(€ãHiû–ºáJ=.QSÙ½ÑÃ¹çi3UOêí~wpÄqÜïýÃz~|ªG,°/|TßýÍ!*ô(@¥‰>sâ¼£^ßMœ•âÞ($ÙFdq¥ßÛSß,¥ Y9yêeþOYVšpÇÍý,I?· N^é¡Î»®òß+C. ÷¥qù¾N’Å!	³üˆ·­^ÝóyÐŒ¥õ;)½<Æ»¥¨†‡YœEy¾';E[ÏÎŽ8/pŠªÜ}„’½[a·1|RëùôÈËæR7l¼à…Ã	ß7sCçç‹	a§KUFÎÒqðKFº
(kkPI†ëâ?u¸Á	è8+šLš¾&¿Á`¼¸Êªªöú?Z´ø¦A«¡ñ_.ìœxœ•ANÃ0 ï~ÅÞQ«4Çv…×ž¬×ë°*±£Ô­¯'< n£9Ì´U"g¶(ã`;É,Œ’3B7ºž¼Ø„âP"›…V)0Ñ2Æ8fü0RJ=sêCD×o6 eC×ö^Wx­çk©«Âé,Í
úûö<Í¤{®ó¶Bwà¡]g6;kkòï‚÷¿“*ámIÔÊm¸PÑ¦_÷8•ÄMk$^u¹³1/:I»šó.~ÿx7ßÁ*l^›xœ»N1E{Åô(Ñúí‚’~`l+ky½AðõDŠ”Ñ{Š{F'‚¤‘"I'bžHe'å‚KF J.}4!ö‰ê€ £>EÔR™dœT
g2ÑÎZò­ORG>Ã}|´ïí¼×Ö3¼žiÁ’á1ßà8ž—‚y=†Vž€+´³\kx˜æibW[òôÿV/…N°aÍ#ÿ\ée]Û×}†‘[…mô\¸àºÓÆØ[^*ÅCKéà¿OŒ³_´Ykt›3xœm’I›@…ïüŠ–r%îf'J¢€ñ`<àe<·¦hƒa1Ø¿>$Qn©SÕÓ÷¤’Þë[Æ #§(UT"ÝRUËÄ²È|(ªF A‰©Á-«z@šÊ)§X›y®›Šªb‹éÔ°4YØH¹¢Qd±¼B5n¤$E²f0DM©0ÅTÅ©¦ééÔ5¨BSÂCŸ×-pq%X	N8«X¾ÑñÏò³:ö…²`vÈº¡è†ž ‚P"õõ*ú~†=Ñ¯‡|«ê–5åýg&ú|H¿ÌÀlY“u"Ÿ³òü¼z¯ ñ½ÐÞâÕ];‡8¶í,m;r¢Í¥»]ƒeì¼ùEÝÝ”Öm»53ß~¾g>¡´­óqY,|¾Öâ¦”€y3á¿MÔYëùÃWÎÛ…ÜFŠ…§FADñ­+ú»ñÄî+µŠëzi7rpÅè'èv‡¯5|íZsy%|XòãÖÚØ8ëÜíïá(?Ú6Ç7ê¶4ÅóúØò`þùÌâ,ìË¤EÜÝ‘ÔiP›q}æOmQÁ²är&CÙe+Ã‘üî=¹*wÍàm-d5AO¬I’éA¦›Ó›å¯;vÓ%	ý$Úíõbñð§¼ê’äý´<óû¾ªNÅÎ>žŽˆya9[—î­3>ØA76{«Þ òæj·ÊDâÝcðøú8n>.éói/²8ÖFÏ¡áöõ¥Ž¾KàûÖ÷îÒßÌV¡ûÿÄ¤€µÍP– eëzð	¼­¯ ¸ÊNL$¬\\q7÷F’Üå`®IS²^ÔÕWp­odeâPFÊ¹Ê@T}øP‘ßÈ/’Ñ×ž$xœ‘ËnÜ0E÷ú
®[ÄðC¶GAQ-P ›¤AtièAMÈ’«ÇtæïC'i‘]»Eò^²$D@m¥jíÜ©Om7	Î…ìµš‚ºžÛ™m2a( £ze©ÞN‡s)p2³‡NÈYÙa4@&kyŠ	îGø‰>ýÚŸÍot_rÍØè¸~†nš{Þub<ÀÇöÐ¶Œ~WW
þ'ÙsÞ¿‘ì«ÌO@¹Ícq1\ÃOG•ô`P{r .”¶½—0ö)tçw¸œ+‚ºì¼#	oNÒ%©<æ—ìOXÂiÅ%W¥W“¸)Ô B,ƒ¿@®® XÚ„"yìÝ˜|ÉWPµ€ô9Rå¶ÅT`•¡J¿£±&/dÜVÒûÄn¾]8/Ùž—¸•yCïS¢9äï5ÿ7½cßbJ¨¹Hnw·wËÝÇ …rô:FæLàJ‡n{pÇ€æ*Z{¥.×ÿ¸{ôZÇ¬ž2xœmÑÉrâ0à»ŸBUs¤,y‘˜J¦"`†@¸I¶l¼áÃÓO’©¹¥/ÝÕýõéo*! a¦k(0	*1TŽyéÂdáŠH€‘•’U"o€nh!#F!1U®3£H7L-äœ f2‚‰ˆøï!˜™_A-Ô‘ˆ4M3U•h2<Â›&‡†ÂÚ&)*0f¹)Ø³8x
¯ßÃKÝÖâ1 41Bp¤«¨PU• È2Ù4Ÿx*›YËÁS^T¢Lo/±l’–?~‚Þâ2®e¾ÊšLxSøÎÔ¥ÛÝfò½W€®µX”Z6¥kkývªhíÚkŽ““¾ê´Ê¹RJÜ³Cm|x†ÇZ47û×Ëíà§Ýy]*à©¯”¾uÕ¥õ–mAýtÎÇû]GñàzwÕ˜~ž¬ó¹j»ÞÜù oíûæ)`\"Ïöm`e<&§Á­ßËnA$Š.W«Ôl4]ø‡ü’Â]¹?‘¤³‚w±<m%eËi4T@_Ììˆx}“}øÙ‘ÝûcâÉ7³ÂÛ;Ã{uõ>ÀãõmgÃ$Ù›\JÄô9|×£ž“³VtZ.“ÁA¬W‹³±¡«®åÓyÔ ={WÓÞµ:ydnÐ:7G£
nã™_öN1äŒÆ6Ùv™·Õˆm¤ÆÜÝYÇQIw5Ôü†ûa“¬&“÷í='²ÐŽ®í¨éÇ
'¯G‘Ï
xÞú¸Qþe6qÇ?'¦,EP¶i
*qiEÝ€_ëDU‘y1ËäC3¬YÎ‚æ!i©(y—‰ßÀÉÊªèø<ÉFÞø²ÈÁ—ùó¢ûÃ™xœ•Ž½N1„{?ÅJ”(‘ÿÏ‰¢MM^`m¯s«ÄçèÎžžHÐÑ@7šÑ|3}&•œÕZ£“H28‡˜Š%&Ä¤KHƒvJ\q¦©ƒu&«\¤*9x-š¨‹uÞäƒFAS(®}l3ÛyÚÌp8Ó	+Ã‹m;UäË6µú
ÊZ9·3;x–;)ÅÃ­Ü;ý“àÑ?1Ý*íáP¯s»,8qçOLÛ#]®BG^ ðè#/ËJð¤ë!®0ç_Eµºs‡ò˜^g‚Úò#»,m+Ä;Ÿ&Ê›VÊ&~ìÿx]|x(~Ð”5xœ}‘Ks¢@…÷üŠ®š¥c¤¡m`*™
/‚
¢¢ì€n6¿~œLe—š[gqï­ïlÎé¥€¨ˆ(ŸÊSI „@$*p:MeÈø8	UD¢qMÄèGä8!©BèG%‘ŒSK1%”¦2R•Q,§1üâ±B1F	Mc!RE 1
JeŒx„b‰yÌÃ*\ÔwyÍ€}´A”}PžÉåsymû–>ú@,A™WY#ò<—ÔUUtÝžÝ[ƒçšÑ¦¼½fE—÷ñÓøÆ–5Y[d`üw4sn­€;woÍWêv·1?ÿàÀ¥ÕMU5]U=Í[œš¤ŸèÍ–òZ"³.ªzÜY–ª‡Ú<RÊ•±U7xoÒš»úÜ5È•ËjkÏ‚õ§}»1/ÎýÝÒlä•†œ“}PôÇ%»ÆŸm-7´í ìCaƒ8"ãè)j”êNq˜ê^ÓµŸšÝn!›¾{?Üm`ÃÒ6°èß—tÅù´©N~á $ûY®ÃS>cÙ²JãœÀ …Õ»·F[/½¥¢ßµædßêu'Ûá[¹Y„Å¯°s?”±¹¸ê;°{3¸“ˆÏuì^w6à Š¾[U¾äî‹ƒÊ(;ÖÍÕ9/îÞÄª¬GÒ^Ûr`äÈFŽýù¦¯ö~—Ã$cçj©×Çµæ_o8Óí‘‘œ[jC§«,íË»}´õ^8˜/xb;çþuf®Œïã–”e4}YFÏ=m;ðJ¢RVW ­Ë‚Y5YëîX/iÄÆ³`¼kHÔÑñ[Ñv5»qÜõÔIó¨„Pþã mß45ëžþ 5
Fžxœ=ÌÁj„0Ð½_ñ>`”ä%j†2e t×nJ×Ïä9
š„¡ó÷µ-vyïåžœ˜AÒÐ3ZÝi%•ªmœÖ:,Ñ¸Uß×V›"RbŸ‰°E‰ƒ”ªS‚m#Ì ëAZk¬Á¦„Ce° -!ÁÉ‡õ—‘R¨þùëä3Ï•ËÈ¦¸+µ‚R´B{»L9s‚™ƒ§äBå¨²›	.{õŸ®k˜'7Ý—j¥ÐÔ¸Cf‡Šc?A°ñÏÎ±ƒ·Û{y›™RùòY~DG™Ë×iÍ!=`Ýb)Ÿ€¼þŠaÝSÞCð?ÌïtÀçí^N~­Šolj’4xœm’Ko£0F÷ü
K³Dm0æ•Q;*iHBC^MÒ<6#cbÞ!¿~hG£Ùô®î=úÎê»¢duCƒÌ¤>!H³4!b†¨IJ-°Å &†Tà’e@bPU1Í Ì|•2ŸYëÚ°ÇCƒ©RzÇTÿå‘a)ê¦B4Ó‚Á&„ª¢?€:êm!òU	×â’—`Œ3ÎpÀaÆJðDÛ¯å¥ª+öHÙ/ ZÊP3 ¨(ÉÓ”Ñ‡§\Ìj<eyÉŠ¤{	¹¸ÔþcøF‹°â!xøœ‘3u—`=]ƒ­;]Ú»ý»óÅ% ¶‘‘m^m{3Ú¼EIáëûhn^"mÕ Òmm[kC×v7Ö•*Ù®Ýó3å­vÎñd'µK7ìþš®^†ü,ßrOŒQ÷‘ÍÇºwUdamÂÊõQií®²¯r·ÜÄ×?[Áˆ‹•Àn¬ì÷Í/>º»äB'¬&»Bžs/ŠšÂßç–Îåå ÉƒšPÑvÞ¥Ž±(txi²»VÛIs¹F³ÃYM9NfQ2¶o7â#=wùÅÃªJ½û¾q“Î‹»µü6±¼÷wNñ!Î$à9‹¼7,´oójrœí°œ*EßnÅ6Ç‡‡àÊ&«íÔ9ªíÍsP3L4û­– ‘£Øö³"·SŒx}=>º$=N“öf,’u<Íæáë}•[<8MG<BæUŽWÙv/Ê`ó,çr¿ÒßÎœåøûÆ¤+CŠ:I@É®5«øMMA™§ âYÂq¶ƒŠ‘ß$¥’”5)û	ªº(òR€×%ÝCÉHpFÿ“ŠõWÞô¯ö©<¤üñó	mxœ»nÄ E{¾‚>²eÞxµŠ¶H•6Ejc‡•`¯öïÃ>¢”I3š{Ñ9Q Ö £’Ig´”B“‘€c–(®5jTBP©»­&A(Xi:b{ BEo5¼×B(a‰¶\h^;A†™­|Å„ß}˜½	þ¼ãù/§)Æi†ÖÆå©W”IŠ›NwªíâK„ßLð0Wz
5Ýå¾œò–¡uð@u×3ÂñKG*ŠÂ¾Àçm]c*8ƒÝ’/×&Ý±	î·ÉPSÜ«ö†4‹Gèã‡òË:ÃŸpÞ†Û¥õ!ßEè)Â><œvömµúz³kâ86Ãõð¯/AßSÓ‡“5xœm‘KsÚ0…÷þšé2“X’’;m§6Çb `;Ù’€Ø2Æüú’d:Ýô®Î|ó¹‹#! gsB¡…-&§Ñ¢d°$ÆPçH#B©Y#J	Å	C±%Â†SÍÐ-jÄˆuƒêwf ÈúëS%Xy’ÜB Ä¤º©CSg˜qSÇŒ…u2«0fe.N`ËÒR4àï?Ãï¶kÅ¿ 2	2-ªa
 ‚P‰«¢È¥¼Ën._ºü(«FÔ§áwšË¬‹žîÂji¶y
?Î™¸Þ+X¸ðæ¹¯öz³š|r( oØ±mgdÛKgéjGìF+gJ²ƒ\´Æëm;žÄž=n×vnŽþ0_ÍŸÃéôØiÐ+`ÛòáxÝ«Þ²}}µR›8»t™&Kœo¾º¸]eïéô—†ÌÐFG²ç»Å&K„Aá^bÎb³žM^Ö»9E½…‘&çœ=Ûe2bž_«j7žÑí¸¯¢ÚÖ|€N˜ª3û¦€Ã4ÊNµÄGO,öù"¨à–›‚nK¯oÚùÌz×P1¿ê¯—Ê×nýÁLŽÖ^Ý…U=ŠøÁƒ.ƒá¸ïÙh¹¿¶·ÛèŒV¶–¿^¡eB½½g¸SË“Äc;õ¹:KÔ\gLÍF¢yQÀ&R×S5
O—uÝº›g°+ð[>iüÁ=Ïçê)$ˆºVnù¡Žš|5ð
N¾Eñ~÷S?ƒÐÍ”¯Í&¯ãÿ/¦ÌE“
Pw§hÄ¹­ßÑ54Uò£HY‘?Jµ¼â±nòR>ÚªT”à;xÎ¯@V€qº; ¬ü
¦>dPEKpa§ûƒ³êdÝÉ?$Œˆ%xœ‘=o1†wý
.™
$Ý·ºtN‹Ep%êÌäN:èÃ©óë+Û™íFR|È—¯R@„ÑHËÛÕ×Ø4²WéhÍÀÇ¾á-ÊvhØ¦ºR)ÙK!­õXsÔ]aEk…Öƒd7Znd=H¦r:ú ?ükv>|ÅY­÷tªô0¯Š–Jûõ+ˆ®e*o[øÂGÎY©®”ø¦áOjv%»7o×à!æˆ•ÁÚýÐ\PQPæN+î¶@.íá©…ÞrÉk9%Hç#hê´œ[ðR÷“Þ2L9¸ÊAv‘Ê*sàíHú3¦ø;¡3—
nMì£	ÉÍpgÀú°ªqCM–ŠøâÇKônò‡—²zRÆL'µdœŠ´
~FdwÈA:R¨"þ¸\J—+LÙ¶œ+Æ¯BvÞÚÝá¼ÿOçÙ¯C÷P†—›VŠ7ý¹XäN"yŸ?OÿÇ¯°??}Ìè‘2xœm‘K›0…÷ü
K]Ž¦±Û M«B`€$	iJ2;æ^’ùõM_»ÞÕ=Wß•ŽÎç Õ…(TËb]Å¦$Õ1TQœ1LXÆ .C¥ŒH=x+€Ì˜Le$g)ºyB –!œ¡$ÑM&zSYÑä¼š¥2Çk8¥$‹5Ê´Xã~`œ+±ŒS¨*)§›DÑÀbmÉk±¼åxIçßË·qùç”ˆP¤ªDÑtð„RÒ5M)ÄvJáN1xi»÷õý[^ŠbŠ??€ÿ¼å}>–9xþ5¦íx>Ø:[°÷ßø~íßw	H`ÍÄ4si;s·ª:KGËÐ\Ó¢Rƒ«2x³ax%ôÇ©OÍ¾:øcg)”ñÓl½^W©9+Ô^˜ê.0u=%JEQàäH*?aÇîOî¡­*•ZK!Ÿ]Ó{oÎCsl/óÃC¤ãÍÝƒt´›ÖúëNskd\´øà;á°=ùó™Ñjýá\Öa|ß¿r&Â'+¼µí¢¶»j>#Ë÷‡~wÏM'¨yµS7‚n
²ŠôˆyU•©‰rÚÊ°Ø®*m	‹ø.õ¼z{_nÙ~Ù¬Û‘tFÄåÈEŒß*Úç–Óác¾)s6¯¢Ã!,Ù¹õ6G9xbðúÈÁz#\Ÿ;åT‹½{­Üü6Z’Êñö±gØÝ–Ánß¾¯Ú÷è‡}-êóE(È¯ó	|ÙdõEúÓ™í[ÿoLzãCÎA?Õ5øeâ£ ŸU!È†®å™ç¬)ŸÅ¢àuÿÜðqd9—$÷¡À_’‚µ9ijö·žxœÍj!F÷>ÅÝ—ÿÆJ¡«®Û¸êu"upœ@ß¾¾@éîã,Îá¢ÒH;'ï”FMtš+ájƒ	¹›¸Û°S`cPj’“ÒZŠ9Ò>„`£'/EgÒ,”6ÃcÜZ‡¯v?jë>î´`ÉpÍ¿ã<Þ–‚y=‡V^AËg«„ÓðÂçìIKƒþo`õQèï­ø\ŸGmÍE¸ÑºA¡}Ç…`=×Ø3ú•vÆ>óR)žZJ'ÿ}ùcŸý ÎŸk—ŸxœŽAjÃ0E÷:Åì‹ƒ4’e9„RÈªëö²<’ElQ””Ü¾)½@éîóà=~«DÐ«Y‡ØGe"N“Ec‘rˆh­s½‰ÝW*Ð{PaTJZR°ÒEõôCpÁ¡£œQ;þÖ®ðÉ—[ášáýBÉoNùwÚ[Ú|^·WPvÎ½±ð"G)Å“n¹5úA”ûFG8s­\þêï¼rzÀOÞ—Zw¸î´®¹$ Z¹
ñ‘S¡¹ã»éqüãñájØž4xœm’I“›0…ïü
UåèL$¨JRa³ñllcOæ&X<˜ElÃüú8S•ªÒ§×ÝßëËë^pt™L…	V°¡B#Q1L±‚Œ™ˆá$e©ÂRÝÐ¤†
^õ@O´”'ªb*a„òDÓ%1C±¦kD5b–‰ÉÑ_R):Bœ0]AÌéƒOá<Vn˜Œò'ú¼À¥UÁKp¥YÅøÊ¦ñ£:þ…ñï@ÁØDØÔ±	PPJêû½èû¼*zˆÁ×ª¼)çYÑçCüåüÇ–5YWdàéOÙÞj€Ãê NëU`££÷1—€¦ÎNlË²Ë
ípsËÖ$wŽö–ä7m?"±ž,ë¢Àµe5•¯¿KM^Z-ïåV;‹7	übsaóTÖOè8·>§­ðN{Ïó=OmóÓumëY~¶*yô&¶ÒåþpÓ… l±&{‘ËÚ{lŽÁå|08^¯l?ÎqÃ–«ÂKv¨­³¹l§ÁkosMê2¥çéb7‹ERªNéítLÛ—=×¡EqGî;ž}åçèyU÷ŠÆ—–wÊ¥¹î,?Ü%.öõÕ’@µ¹JßvÚ=Ùœ­_ihGKw»].#£­^dÃ3#v”ÅÎâ=ÊÈ²Ù¡e_P‹Ö•@„Éè^›.÷Iç¢â¬žgÌç·ÀÈmõÔLÙ²è]®žÙ>¯îãvðCèoßM6þÍ‰¾Ià[»Ç¡l¼ÀýbÒO.2š¡,àíÀ»|R" õ85ãN]u½’^n„œNO¬žª²¦L’þiæ^ÌŸA#êLð®´b€Q‹§ü!Ë¢Ê@qlG~<z÷RºjLxœ•SKÓ0¾ûWÌ›*¥IúBÒ‚ ‰•à<±'YÇ~4ê¿gœ´l/ 8%q<ó½f¢'‚¶~µn:T’ºz½Y×uÃÏZ¶
Kêv´iw-UUÙ‰=ÙUÝÔ¸Þn°Äº+U»©Ô®“[YVûz[í×ÚïÊ¦ÜL±w>§áÉ{xýãñ­tŠ¤³!ú$ãJºa…é¬›fW•õ®ÞÃËrW–‚:FúûMµÙ6×Âž:@7ÊMÖ8TèÑ*CàNäŽ£¶GðhÜÛù Äƒ>ûD ‡ÑÐÀ‚1jƒÏà)&o-|¹éðõ©è&È¼‡1Bt\R²
"_[àb‘É@ã	ÕZ"!ÛË5ŠNZÒJ|§·×|Þë šÁAºÄÔ H²èµ! àó‘?<¼×~˜8)¸ŸñÞ]´Cö“ÕCHR)RwÐ¦Ü––£ Ó#«%˜˜œq!‚J”9%ëÉ`$‘%ð%A‡(,àWgU³‰V’1(ã2{ë&þ5›NÅÅ#RBÜ[p^qÒŒsI(«½[4Ë~¶•b» (ôÑ:®w'nÌÙä2–!n’fIíEðL½–=Ó&ŒaÖû‡ð¸}ÖÙ¢Ãˆ†Yã¦|'×tW[C0êè]ö&û™B®¾®lSžž•ÈQ*gŸEôqÑ7÷UÔa2‘}éñ¤]òIL9ÊZá˜MDbœ\'“ÏÛhÎE]æÃ4.hÙêéo&à<bð<g“¿ÑÊ˜Xö™ã·Ù,7¯Êäu¤E¤¥id¡Ø¤+àìxËC¦ˆ#Ã'§–æh¯X<\”§†_~&í9zÍ[ÌôØžŽ•Táº®hÏ‡Ûyñª¨9‘,xœ•’Í®1…÷y
ï q[Íÿt*„@bà<‰Ó	7“ŒòÃÐ·Çi‹Äò²Œíœs¾8)ÁØÎlF9ÍU#{ê$ÖÃÔµHM'§S‹F-6ä4M7¨®ž›^iì'î†¦ë^ÏzªúZ5½¤k9->Àg
´^á… ï~>^‘ô.¦e:J¿1¿‡zÆ‹Õ¼­NU%¸±š”è?¦¶kÇ¶~÷k¥3èý üî¬Gu†JA ®°’\Ð™¸
ñÝ8I°Ó«@°ùÄŒ­½B$§Œ» ‚õ	¼†×rÉî™ÔP˜Œƒ´øÇ ¶à%ÅøÈF¥±&]Aó; DV³7î›Ù1y˜I”P†Ô]DYùJL˜rå)‚ã†ILtùäá+×¾QÉùÚâå(Äîß9¥Ï¼3ù‰)
*>"p5æ’WçÂ›º¨Ù¹äÈ'+þ6k^~ZÊw¹'7à—ò{¼z)1ïÐÞ¥6Ò$Ê€s©•ôûâ-‰¿–Ç²…‹#uðZæëùeK oåïQ˜xœ•KNÄ0÷>EïÑDN:q>Bˆ-°äíî6˜Ø#Ç!ÊíÉ‚Àò©¤R½’U!pÛÑ:QO}KMƒLêÇFºÀ“–UTqæNYcž,j]ëj9¸&¸žÐ[d×ù¶›ºFñ†¶rM^5ërÀ›æŸ_ÏœD9ÅµäKÅi©h{‚Ú¹~-¢ƒ;XkN°Ì¥è?#¶Øcý+0ñ{Ñ	Â~‘´Ç["™àžçóA ù¦)„U‹1/:À+l«†í%Áef*
ûUËõŒ x@É×pŽÄ¼å¬Ró>D•Ëéºøcú[«ù~ìzý›xœ•ÐMNÄ0à}Ná%Z%“6mGÁ–p'v`šTIJ5·§#;X[þžÞË‘PâÁ:%QÏÔèÚÔÆq×rWKKhØ¡Òl¥X0²ÏÀCm%‹Ú´FU²£N¹¦r\u–«¶k›V©ƒÀ5!ÂGžÏðÌ1ÂÝÛûƒÄ.ø”ãêréÂ\âzÊ˜¶’F75ÜÈVJ±æ)gþÐéJ7Z~ÂÌ|„~+(lþŽðHWaÉSðxº†Ñ§~Xb"§aÍËš…x§nD?ì%@ð¼Æa/#äð.Šoâ¶qrãNN>'±ptû^O`Ï™ÓOnd*…x™ÏT„¾/ìùø·ºâTõ“‘Ÿxœ•ÁNÃ0†ïy
ßaSštM;!ÄŽðNâ¬6©’teoO¦!ÁŽ–íïÿì’ˆàÐõª•”DÅ›¹NpÒõ­sbè‡Þ‰F²…Ò	¥º·Ê}-4é•–†D×·VèƒÖÚ:Ëp-cLðL‰æ¼PJððþñd¢%C.i5eoâ¼Çõš®.óNªÜñžsV³/…þd+•äß Î3Ám;·0E´G˜ã™ÀëÏÞ®8AI²£”¡D@ÈToÄBàÖ`Š±·‘ ÐgG˜Ã‰2l~š ­…%ÅS¢œ!ÑSñálIUlI4RÈþL¬Ê×_üŒÕ¼RÑ¿ì®0SY÷°ÞŒ·M7X"´¨'b˜¯ž•0ýXî{õ§@vÛéËño/c_Þ6«Í” xœP=kÃ0Ýõ+nËPlùCN(¥@—B™OÒ9q+ëŒ$còï«JÇB·{Üûâ¥@…i¥¬¬eÑêŽ¨,¤,L]ÙªVuc¤¶²LS‹ùÕ •j÷E­Ì¾Ë@“.QéÊl»ÚJÝh­í`.éÊNèGrpÆ‹§ Ïv}¯q‰´³ôeÛî«¶Û+OEYÂð4)Ñ?¤B/£³81xN0cŒ°])„Ü#1ðL>Fë•<,qôÐ9æ+
ñv<B ™CŠ€`x™°bðwêCõ¸£ìÕ÷ï€QÄEÏ?É¤ôŽÒ&þæ[^=¤+ýÙ	q&0è]d°çÇ;âDašî3¹²õ²Œ6gÀJÙÈoXÊÁØ‹tã0Ü ýmâ@Ù¼óHvËÃ°Õ·Ã_Šoýª08xœmRËŽ›JÝó­¹KËcºîæ*‰Ìà‰±=ŒgLvÝÐ<l^¦yØþúÜ›E¤”jQ*:u¤sºV`F	ágB‹“$F”PŽMD1%Œ%HÄÃXiX+ª@Êµ$æŽc*L5DæPÕ5B°©ªªŽýç:Af$ˆ)ÁH74ÈUB)£I¬CBhE¤)¬ï²ºO¬ÊE>XZ‰|ŠÇ_ÃWÙKñ‹/ âé‚:VÁL…ªªDuYæ]7Ý¼{î9øTÕ­hŠÛ×4ï²ž?N€¿œ¥M*óÌ–í¸žvîžë[o‡Wç×^
¥Ù–e/-koï×'q§‡å«ýB²“¾´Ö-k–ÕžåŒèM×R§<Ä·]µ®<tÞz‡J¶Z};÷„²Î¡½ïÏ+¼˜%G½ñ±¬à0»Ü/‡fõüd-ÿî®Ô•ýé¤»Û™‚÷c`éN#ý>â®P®†eœà.Øó…Q9þÅ¢§áûPl«}–/š›UœmÂ‹>R@ß½ÙNh¢êÔÜjÁ ï¾½­ÝÓ½”/Žÿ¥»UëÐ5nÙ3AÇ4ìz¬Ý"×AP«Wï¸^açÂ¦½S_ÏºÆÂ±(í1ãÍ|\©*’•\_êh»ÚTþl†1‹–ÇI¼šëŸB óa©4=gu ›dR(ÍëØù¼“aÀ.÷³šh		¯Þâfd„ág|nÛø®üç™ã?ýÝ1e#ÚT€¦/
ÐŠK/dþD3@ÒÖ%8åUÖ³©«MXð>Mòë¢J1—%k»yQ§sÇó8—MÁnóQ°v^ˆAy•ÎEÛÖ­¢4EŸæ•\”¢ä»‹ÁÄþ`x ÿS€‡?8@.e/ ‡u¼œxœ}MNÃ0…÷>ÅìQƒ“ÖvRU¨nP$Ö“xÜ»²UeÍVœKp½n*lXŒ4?ï}cO
DÐtFµ¢EškÑ(#:S·²©j©JUDS‘îPJ¶Ç@.j¸àºªBUqÕÖÔ‰3A-Œ"1/…®kTÄpL;àôñ|z{ÿ|y…Õƒu»‹n»hh{|¢¢óÃ”RÖJòÅBÂ¯9g¹;Ø”(À-:K=ÜãÖåj¥S²Žc¤BÓdmxUÎ+ž­e¶²}?n­»þÞ°„,…G
.cZÌy:î)‚u1jðšŒu¤/ÆîvÊÙû•ÇßýC”ÕBLaì›`6Yï
Øøó8ØÎƒ£³ÑO/ŠÔ›¿‹Æ66ÿNÏ¼1³ö¸„ß'ûï€ìµgœxœŽ1NÄ0E{Ÿbz”Å±cÇ^­wàc{œŠí•ã AMgàœ‡boAzDñš¯§¯×*ç”è5FŽ2jxT^õRáE$+Jk,»`¥Ü tZI®)r#…¼´ÎÛÁR°|ûè\¯ÈZ†[;—
×¯×ëÇç÷Û;œç|Þð°“§ûDÉ-øB_ÒôZ›Q£àpÃçl_ÓÜýû€]–mšóí¯v„J©<¬%l+-´®àK ˆ{æš°¶n)S‡!0ö0O™BWbìÜóñoì®u“xœŽ;NÄ0E{¯âõ(Ãsü‰=¡Ù+x±Ÿ“ üdœ‘ ¦…Š5°	ÖC1» Åm®®Î=%3ƒ—ñµaS†P«HÊ)ojÊø@VJÄJ™çÒµ*Å6ØHFÇ¾‘ªvµm%jÕ4Ö#¢¶äm¥_2\?_®ï_¯opzæ~£Ãž¹;O<µ#=ó!,ÓHk]£¥Õ7èÅÞNC)üo€XÇ­æÛŸÙ¶5Ra(=CXræPàBãÆvÍÇ‰r©Æ¥«(F!î‡næX-)UíÓ~ÿ¥!¾ÑÜqò™4xœm’[o›@…ßù+õ¥••²»À.TmUÄ·€mlc'/ÑÂ.`››¹›__'U*užÎŒ¾9ÒèL[ ÄXtƒ!L)ƒz¤¨P™M(1jDC¬ÆLªX-Šh$2˜2*Ä
‘ª0…TSt
c…Nþò˜¨©†ªBÅT7(T4ò8Ž„Î1%Gš,–X×¦elVDv,)D¾óþCüjºF|åâ'@„èš°Á"¥¨ÌóCÛÞáñ¡t!ø^”µ¨²Û¯äÐ¦]øõüg-©’æ€‡÷²œñÔËñ¬§cÏÜl}çc.	ôY¦i=šæÊZÍŽ|NÈ£oÍizT¥žö¦9š©9'hT9í£Ÿo·ÝÐ—õçn'ruqÖÃžR-ßÈ›«kó&˜»ùpt}».¯åóJÉ+g‘>±Ùë
ù7c=9ìäi ¿Ú;*²#kâòuzîÚ¦›±üb§Vv+»K¿¾ÞÚÊÌMKs„¢£ÿÌ
TœÎ‹y'wúÉ³°ÙK`æ­Üs³¿VÚõ‰_Ä¬.ìÄýŠ£Gï¼lfÐš<ïsýh—²Aq¨&ÞÖ1.OûdswÈyb©ÊðºƒÝ¶[d¶íÑsÀƒpF†¿?¤]0µ–hH8ÙL#†WÆIÆË±ô7ëý
/pŸ¢E:Ö‹«÷’m‡ÙÉ-ŸJ}1FÑu¥¹+ŸÖåüYN_Î¯W;qŽ/qÐGhp~HàQFTú“™ãÙÿOLrEPuYjqîDÓ‚Oˆ*Äu™ÎŠËË"ÉE!ÿÓôü¡ÉYÝ>¢.E#IÅ%ß@ÄîFïò-íÛñ–•Éç/ ¿ÿhëNü¯c”!xœQÍnÛ0¾ë)ˆîÒbH Å¶dÅÐavÙÖ¡Úc@K´-T’INÐ=ýäæv!øƒï‡dŽD°Óz7hämm4o»^õ¦jpÐäƒ¬jU+Ñó–0RÈ µh¥!QUBšÎPmD7Ô¤ø®Ò­V­îE£Ô—<Í‚ÕoÐ;,ñÁ`xC?‡ÑSx=Z·Õ³ÿBÊ¶Rm«jØð†sVºÞæLö,9xÅ1”êÁ\>’Ç´$ÚºB›NˆFÂg.
”…³§{Ðè¬éq¤|Lc>ºy¼½ƒ‹Íè1ömÂ0Ú0Bžl‚<CŽA¤´¸Ll ÿ¯”Š“ {;ÚŒ:ÅáûËü‰3ü~ùEìpØ§ÊK+×ªü—âœ`(ûHåBVJÙÎaÏt¦˜èÕ GC¬¨i­ªA6ƒæBÂíÍu•¯ÆÀ%âéDñJùƒ2ü,Œ',Ð‰Ü:¸¹cì™ÒìÎ”à“P»nËØÁ–c™Í<›þýþ^ÁþÖ®­É™3xœm‘Is£0…ïü
UÍÑ#H0•LExaóFŒ=7±ØF`o¿~2ÎajªÒ§î~ß{—×5Œ9Š"‰("LO Á
a‘Š#¢$‘#]EH¨Ã†ñèTPD–B”2K:DŠ¬kª*²)Ã+ÿx%f±¬Jqª)*Æ	R!ŽÒT–%)•‘ªk8HÇ!Â¾Ë«ŒC^°ÂŒ³¼&×çòÞö-&ì0ÖTM#šP‚Pˆ«²,ºî6‹Îê#ðÊ«†Õ§û{Vty?olYµE^þŽ11íX™+°¶Íõ7“ç_ ¸¶FlPjŒ(õÏ9$®ß>—äeyA}¥Ž÷6f)·Âmz«h ¦Ç39xKxã¾’í‚i|0~«ªYõÛÓÜ“¸ç.0žo|ó`yÜ¹iwW¯Š‡Nå•ýqGöÆ¶H$ ØHõÊZ¯¦ëIàÝ®6*Ùsä”7wò1íg¸=´<–„¥:MýÉnãh|«òÀìta•8ÙMï~Ž§ÛÜV#“Eg=¶¼ÇÍyÜÑ/ÉÖ3û`ÃÔXfs.ÏTZ„É½€<®µÇõ:ã®+£ñ¥G¸]…×J²jeNÄK4É×r¯Åã˜ø{§§«d!ªÆ…nJë¡
`Ý­ÝšûMPW¹óÂ­‚üHöXobè?\bÉº¸
£#*Š£ý/wí¹ëí~|À›ç–#á«³Ébü}cÂœ5u:†{Övà‡DiS• 	ù1,+ž•Œ‹ÿ%k+þ‡*BAˆúâ”ü|&O|‰ƒ?ß0ü	—xœPÍNÃ0¾ç)|h¬JXšfÓ„v€#'8¢4v»hm2ÒTÓÞ³íðÁ²?}?²K&Û‘ÕÚpIô„qƒØ*cÑ^»I’Ôâä2ÅÆ+k\¯•a*iT›NS#Ÿ×ÞúÆúVÕ¾v^¸¹R†üÚÁqß¡‹G7¦Ø÷ýèÂPù4¾€2Æ®-­†•¬¥ŒŽ¡Êðêb ¾\yÛáù:ì§y¢
é&­­m”¥T,íÜB¦Ÿ9d‚‘¦AVµ¬äRˆÏÁûºò¦y`¯	:reÎ<„XrÂ™‹ÓàB„©ä{æ¤,BôÃŒôlîKÊ¦Å#‹î®· 'v/âp¿„Ð1KÈJÛJVð6„1DW8ËÝUg—#'TB|¾W©ëVíeûŸï‰_Ä®“Œ“5xœmSË’›:ÝóªÊrj‚Fˆ[I*€mŒ{<~Œ=³Hñ0~|}˜ÜÊ.½ê>}ºÏ¢Ow-ç€ ËÜ ¦à„Pf@ˆ8µ9±#Ãˆm%GBh5mù¥Ì¶,Ë±Ll›‘0'0‚6¦
ÃD3hÃGv$ð_>‡L°ÁpLŒÆ–›1Q‰Ñd2.µMö]Zµ`J/’àD“oÁ7vý“üT½â_ÿFbŒ,ž ‚P‹«²”]7’Ù-ú|»T-¯‹ûÏDvi}	ÿKêDÉ<†7ÂØ[°ƒ{8îfphàª¼Øs]ÏwÝWïu™±eÓû;oe§Ùäe0ÛðêºÕö=t½¢ÙÞ³‡¡Wez±^ÂÈÝ`/žjà´=¥fy_9Ý&¯ëØe»÷P7 m¥ûQò^sCÑ‚I~~û{¿dÞja"Zí3„†þ­Ék¹XVÄðI?ÃúŒÜéM·Ö'wø€ûÔÚúÆÔðo”÷C±›tDeî&›TkÜ˜Z,W¿Ù®Ê®Ÿ·Ôö6åK¶ße(Ç«G~×ã³‘ÏX¼03ïú$‡|+šzÒÜÐêCâMN"÷È}ƒå/'ï_¡@ºDêq¸RlòÕé²…ŸpG•ð—™ù³Ùû9Ð§û›“j —DÎ?ª{¾Ißæ;Or<9ÇvºÜã9­•Ý7z°÷M+w¡“è;;^^yâ?¦áw|?&U­ý³Ùfúï‹ikÞ&Ô}Q€–7=Wø‚lƒ ÑV%9Oh)Ÿ;Uñ³ÝÖÉ×´±úÌåü…À§±è…~£e]p¨qJ[šñAÆˆÑ²R©žã_ü±Š	‘2xœRKo1¾ûWÌD“ÚÙf×‰
*ˆ"(BjyHˆÃÄžM¬îÚ‘½›dùõŒ“‘è|òë{Ì7ÓE"Ðj^Õ4Ã¢&­ÑÎ¤T„éj5›™ª”õ‚T]‹-Fò”FéÒ’*
UÚ…¥+«õUrVm*mVjnæhöÝ&Dx½ÑÁ‡GZcëàÚ6ÓîfÝ¢k¦&´¯@•¥V²(J/äBJÁ·­ë:Šð½£¾áÚóéÚî››Ô'šZ:Açº”2CC…f	ïÜC;÷‹ ³¡·@l·%ÀfƒMV°´s†„xØ0¶o¹Pì\ðPs~×ÒäÓ6†³Ì`‚¯g:ç×ø;eTâ~KÆÕÎ`ÓÐ=¡L8¤¥À+ëq¬ØRvádØ…8À§¯wôÄ!<£Ã.ùp™MÉçB¼{ÚQ¼ çZ·ß_ß}þx{‰L–;9H«s›°÷©&n¥áòÛ›&˜ÇQ`ô•ÉÏÙõ¼‚IN‚=½”©„ø’rù™fôº9›u'~bd/ãmöÓ'è·\'ßÇ–4üÓ2]3L9EÇM¶“P×“Õ°üÏ)?ÆáXZKNC-¥„kúù7ë?&KüÓè’î‚VxœÁÁƒ0 @©B<:#8vâ8[t6¶Ÿ!éŒÐQºw÷|ÏëuF,Y…¥†¢ÆBŽÝÜÄŒ¤$«€²÷÷¡gì×Ò¡I×¾2@FÓNà ²E"ªÄßõ˜Úí÷ÿ¼í¯¿˜#xœËNÃ0E÷ùŠY‚(•à$­¢¢,º@ªÄkíÄ“dÀµ£Ø¦-_“vÁ	É²,ß{Ï<ü€|Q×<Å¬‚«xT&Ê&g˜Ï%¯yÖT¹(Š¤—…L™(*YÔUš3Ö EÆ+Ë›4[d7Y^²DßÙÖÒjx—­ÁnÕ~zÜ»àp®ðxž—¼‘ÁãŒ%µÝíÈ{üG4©iµ„59Yi„Õw¶Ô£&ƒIòj;ø`¤×ÇÔa'ÒGðÂÙŽ3:ô¡r`¬‡½>É´±¯h¯£}/ÑOÎ…ñŽaMš_˜·§Qq½ÜŒP£F-9Á£@Æy©u”¾HN±ÇƒGãÈXm7@HZOå]g÷»‘îÄ>S.ârCÛß
{m§Ö/çã”žt¤Ž…4t@5ƒà<¨ó^&íasÆÄ3ÅÅªkÛ4×Õqù×Þ“¿[¼!•'xœ‘OkÜ0Åïúsë!ìb¯½¶Bh ×B¡!95#[Ä+-ú³fûé;Þ4äèEHÌÌ{?½É‘z´#ÖÅ¶¯G[Ûô m­ÛJWÓ#£ÎÙg¨Ñ6cCHØ´•ÁCCƒîm74ØZ:Ø–ªöØéZ+,y~ w¼À+Nž#<Ðz»|O%ñžøê®Ó•zÝÂ]UW•2átr9óŒª±¸…îá‰žþ”ÈðËyqžÁoÝT"f¼R/½‚³g)Îè'+¸þrâY¸cd|s~‚qyËœrÚÃ«4£ÿ–!¯¶Ñ8Ÿñ»\ðÅ4ŠÜÏ¶ývF—ÐNIå éšlôôSëìÌ¼QÕèˆØ‹ÅMþÃE¬&—ç2ªO»=<ÏEFf¼KØ0!”aõ`Ë²Ø…I~úòs¯Ô³h	uŽÅl¡ÀÖm$q.ç›Ñ-Mi±ß»¶D…H6´¥’Bð"óÛÉVh¬Ý×û¯–¦þoöÖ"™)xœ‘ÍjÜ0…÷zŠ»lH,Ù–ä!”@³ê6‹.J$ùÚ£bKF¾Ž;o_Ú¡„¤¡ŸsŸî¡„N7J˜¦ÖÂô•Õ=Öe_JQ©¦T†+mEÕé^(6›„@ð¾CÑÉFq]ó¶¶N4È®œµZ
®”1­3+b‚/>ŒÞ„¾^–û/ÇíaˆqñÎÅép)UÛÈ¶©¡(uY²|;y"Lðh‚Ç1»‡O÷Ý¶o–uÁ»w«.¥ä-‡Û’g+Ïàiç˜GœÒ¹ã ñ9‡\Åäûç3˜ÐAÂbKžè„ûóq@:þ±³õÃôkpäcøKÌJC°!s&@fÙøÓ/äó7·dæÓÇ¸EÈyQà‚b#À‡Âf v¸f;0Æo~“¸Ñï4ÙsEä(L¼"q	á•òbÕ›a»„=ù<Ù®ˆ}_Øóá¿Šcß^ú8äÒš`J¹t;\ ó	çïÿF¿Ó)û¬ˆä‘xœÍnÃ „ï<ÅJ=V‰°1vˆ¢*R{é¹‘z^Ìb£Ä`ñ“(o_’ª÷J†]¾Ùr$!¬m¬Tfè•l%rÝ(VJ‹†}»#Ñu\±#ù-ªÖªn”‰kc%5iz>bµÈ°ä9D8…sñ!:ø<Ó„‹ƒƒûÛ|œt—í–7hú~èWJÀ+Wœ³Z]\Îá½£|ãäëí`nOqL%ÑÖÐÝñ¾Ûµ²¢ME™¿.´‡÷ýDÔ—°Ž"¥PâH 1f°.¦úi·M¤)Ác,zÃØiv	ê©øéúˆ^e*ºny&(ÞÓH)a¼CÍY|*ëb&ógò„]ÝHl©.øÚ¬ã¸K©¼4R‰-c_®f2›`íFß÷ÿü4ö7;“ó›3xœm’Is£0„ïü
UÍÑ•XI@U2‡à…àØÄŽo Äâ°È›Ø¿~˜LÍ-ïÔõºûÔ_/9z–’81˜†¨Æ9Ï TÁ	ÃzFtÄ2’j„ª)"–¼é‰¤Æ1ˆÊÍÑJ¡AtR'!j±ªQF“ÿùDåe&¦,M©IDM2¥Æñ„AŒrÎ”øÜ­nÜ”¼»8o¸éð-žºsÇïSþ JŒ‰‰1˜@¡ÂÚº.û~{eÿrNÀCÓJ.ªëS^öÅ9¹?Ôr‘weîþž=óü „^6¾XÛèmöýW€†Îf¶eÙŽe­íõüÈš„8oöB/Žøõ¢I°¬ë0øÖóÉq›nÚAÐÜÒ44|cj˜èh©~2Á³rX¬¨Ðô†œmçG~â<»5œRLtû«[LfýAè{xãŸ{K¼Î?7·@Ðó³âv\ëtUæ~­„ðd×î›â +-NHÏÎñâ®ÙGmø=:„		Ž¦…¨Ö;2"F?Úmœ±h/ËUájcŸèr©æ6oñ‚J«•oË|ÅªvoaýÛ³>T7œ_VÜ\-ßk"7;}r³ÄÇs@¥çŸ"ä‡¯Û¼niš‡]iï¼k$´]wªÞ7å®ÐÐG‹Í¥•Ø½"çØy?P³Ä/ëŠ¶‹È®×Ý÷4T×‹lw¥5Ž±ÝŽáÌ»G<öˆöÊ¿ÍfûóbÊŠËœq®* ùéÌ»üBº¦‚L¶5(óx˜6—šß±ª¼«Û¦­FLJ¦(®l(›Qñžƒî,D+{TnC"ÄM
FÁ£EýrxœPKOÃ0¾÷WX\a#I“´âÀyâ1‰sâ8[MK’û÷dCâŠÄÅ²lþ%Aç2¶Ç–ë–ˆ<c‚+iQv^u½r­ÒBñf6‰b%Ñ¡ð’9í³B÷†dë5ÖzÝiì½ÐJÉÆ,å0%¸71Ð¼˜}¤7îóÜÜå%ÓÚÑ-p­{)ÙÀ\2ÎXƒÓ8†RèÐæ‰>(¸ðÆ¦€yy™ç©N–Þ2NõäX6s¡¶Û‹¦ÙB†t†gø‘ ²P3´‚‹ƒºžu
[lmµCo¸Ä–a·>Á)Œ&¡BÜgCÎµ_3˜Ó4W»‡žñöºù+,Dàë¯5œø›KšÜ‚”áuÉ¥êÙ'ªo¦˜¯à@«ƒú
B©”Ï¡¦áV“÷+{ÜüVóp@ž4›xœKN1D÷sŠV6, ÁÆF±à "±ö§1öÈö ¹=N8 ›V-ºªžªDp“ž¬r"XæjÅ#a<p9Íˆ6rZÈa1SÍMJŒ¨™ž(1DNÜ"¥Œ032é¤ÌÚŽ¹À“I?àÍ¸÷_ñX×Š;@¥TœE)\JÈàò<ÇÖðÖá?±4ØcKtõ<ºì®ÜZÎôWàcu¹? ®¶žjÃy3ûc¬P.æ
¿ `©æÌk)¨1Ü†™`&Í<%"áû:vw¶cA˜M:A;Æt¨0ÇZ»€ÐXJ^:ÿþYÊnûá½{Yr	èî{çþ!¦V²_Vx_kë<‡‚=&§zGLÁ÷(ˆ­W¾Æ¾…ßæ¶öt÷×TÃ¿›ã˜xœ;O1€÷ü
«Q.÷Ê]U¡J0ÂÄÀˆœÄiƒò¨r9Jùõ¤¥l‘;Ÿý99AÝ6}[óF¢u+«Î4$ø8ôµ0œã():4†í1QÈÐH%°«D%êªÓz0½ÔjšÖèFÝ 8/dÇpÎ»˜àçd¿l„§è%&maíÝO¸I¤w˜—*ú{à}/F>´¢…›ŠW+Yos¦,9xÅm(·µ>œƒÍ4O´ÔtA‡^Ôýe{7om˜î¼U)†û	¦l«Á“éš™r‚¢%cš>Þ”‹]]ƒ ]"ÔGPè\AÐœ$òŽà}ö{ÈqÎ‹%{(u¶`3Ô­§‚n±ÌÍç×z‚}´á„—¶s˜ÐHRXÌY¡Ö¹ß*‹×‹-‹êÛhÌ­<®þû•ìð?›ß•xœÁNÃ0†ïy
k§M°)ÉÚ&›&´G8qàˆœÄ]#Ú¥éÊxzqåöÙò÷ÛrNDÀwFÚºÁšvšâ¶2²‘¢’Bó¦RBq-+©{ÃD!Cårai¬jƒ¤k)Ec¶ÛÚ	¥±Ve„`8å.&xÄ)ùá!“ópú<&ræÃˆ¦Q;¡ÔVÀœ³Ò|Î”àƒ§žñJupó7Çi¤£«ª›Zë«ÊÂy =´þ¦mGhzp¦äÛË‹ÜrÅXî¾…%¥’|µ(ƒÁùìc€±‹SïÀ¹#ûJ_ØÆôg¬·,–ˆ4û±„g˜…@eXœN]Þ0öäËÕnÛvm.ûÿþ…}Ý6†›xœP»nÃ0Ûõ‡¬mRY~A‘¡c;uè|>l¡²H2œöëk$ù€n$Asd.•2H¨IUeI½‘ªTÊ¶°Â¶F.¥êšB\0²Ï€(!¥e/UU“¡Ž6§äšIšS/pÉSˆðK´¿6À{˜ŒÚÂivwxŽ¬'Ì
ó+MÓöE[´5<ÉBJ±©³Í™#¼¡·ìàG¿±“^oàœ–ÄÍh×Ô¥|DÅÅ-£õé%™ëŒ½zà·93§„#ƒõ·\ánb·F›y6Ÿ2¤­a,M@è}È00øÅ¹gXÒ§&¦oAf<Ü*¶ú”µŸvÛª÷Á˜ýðsüïââyˆš2xœm’Io£@…ïüŠ–æˆ’nºi¤dˆ^ðŠ±/£š-ì‹·_?LFsK]ªTz%=Õ÷ú–s #Aì‡aÄYÄ‘µ±aBÖ8Œ—¢²P³–—=Ð8UC.iH¦0ÄPQòµPöÈ¹ý ˆH*2þ¯‡ŠQŸAH('XÓdî‡ª±©
,)*AÄ—|}Rµ`ÂÊ”çàÈâ’·à%¼~oÝÐñçÿ2!*ÕTH)%Y’„ *Š´ïG±™ö³Á/eÕò:¿¿ÅiŸþó(øæ,®ã.ÁÓß2¦¦µksv–¹Ò÷‡íôk/ \;#0tÝx×õ±±3–DÖûÖ˜«I¦8ÔZW]¿fº¥Û;ìôÅ»sèÐDš9'€S<œäÔE%³#µ;9?¨Çî°·$4\øøIn³p?«†%IE£Ûa‚‘½×…Ñ±«¹G[Ú±3ëîÊvºŒëÙìhÜ'¤É¸yÞÞWkí<³g˜Ö¾óa†qÃ½YÓÆ«HŽ€)ÌÉÉ‰?îxãß¦sF/0UÒN}ïNvõ¨w—ºÈÐ­>èÚxÕáQCžÈqšŽˆy/ '‡¹çýÜð³±ˆæËà“¥zÏ¬‰‘ºùº}bâeüG<u÷q‡e7··“£÷Ó…Y
`˜ë~i~*ZÞ"žÎšÀ=Ôlµ‘Úé„”«eV®G‘äì+/¸7·>
2Œ\Ó=ÑW¼nŒÓFøÇlºš|OLXò6æ ò´¼x×ƒ²
ˆÚª YZæ)+ãëÏ‚ucja7ÔuÕö€…EZþ®Y×õI;€ê2Fª¼ü©Hÿ ®Dü’xœ•MKÄ0@ïùóÜ%Û4i»ˆèQA/
—igÒFÚ¤´é.ûïM×ƒ è%!CÞ{!qb†Rd”ÍtMd-+™UiÓ¦TºâÌ*–J•;1âÄ>‚,	s-ëBi$Ý$S WÒhµË¢"ÃJ[Ã—Ø…	œïú^×åúíóxºmCh{Þ6a¸1…Ê´Êld!¥HÓÁÅÈÿàËJç¦L|™xáïáŽNŽcÙô¤ÁùÃˆó»iµ‚ž„xéÜM—¼œîÐ+~ >~Ñóÿ¢¸Ø÷áäÒ±ixž!SáñþâõÜo…xb¦4«—a„ wõÚùV/žxêÏ«äÒÜá£ö³™ZB<»Ö3m‚µ›ú¼ÿÓ?‰wˆ—§«xœ½NÄ0„{?Åv4$ŠókŸBtÐRP¢µ½NŒÛJœ‹x{œÓ= ¢YiW3³ß¤•¤V]C.do5²BÙkâ\Ö-"ïxÓÖFµ,âJ>$1ªdÃEmºº°QÒp¥k"Y+­moMË;†{šÂ
ïÎÏýŸçxú¾¯ÇËÂ8S©Ãò¼ï!»¦•PT¢ªX¾..%ú¯ŸÍNùëBå±b¼Àë¾DH†
5
ÁØ›ô°Çìv9VO9’à ‡y†sÍm1¬	l®&4YøqÛÒ´î7>ôÂ5#žŠÅ=Â@Ý>eÃ N ÈªÍ"l»K%cnôdŠ`m¡~.jÉ~çŽDžxœ…?OÃ0ÅwŠÛ¡ÅqÛ‰*T$f$ƒí»¤–R'Š†~{Ü$6†“î~ïÝK3¸J¥uœÊ’K,Ð	jqÙ8[+Eg+%\-Ùdf
	J¥¨¶Ä…ÒÊØ±³N;iKI(k[#u©UÍÌ’ã«	ý‘n»¿{â´Ì[7¡R6•…„;®9gy{ô)ÑÏ&xàÝô!O;\¯Í>.‘¶HWTé¢’Îh‘Q6KŸÅn-<!ÂËµ‡Û	è+Qˆ~[Æ.×¸ØÍÅÑ„4ÂLiöt¢_
éäÁÌ¡†±ÏØÇÏ#-DB0ÐÑ
ÖÁŠ÷à9mÞûœÁ¤Œ¥óDñ¢îCúd¯>Ã¸»ncÏí!Ù7“GŽ@“4xœm’Ë’›:†÷<…ªÎÒÇAqK%§ÆÆ€¯3vl¼“@anƒÀ?}<IÕY¥WÝ_ÿ]ÝUw-c€%C*4!²HA–©ŽŒ+³°‚‘b@¬%–A¤†´¬ê€ªi*¢‰SB¡ªë
A‰¢X!Lu¨ëè³þ_oAhXM Tp‚U›ØÐ(Õ¯Ø4´×f‚”*‘¾Ëê¸¤â¬ '’V¬ß’áwòCô‚}IØ éºa¢×a&˜@¡×eÉ»î%öx·ì)øVÕ-kŠñGÊ»¬§_^‚¿Œ¥M*x
¦ŸáÌ=vÞ¼ûÞÆ>ßæ¿¹$0'vlÛ™ÙöÞÙ9Ù¬†Ù›YŽ·wµõÛ‡Ú·Ã[ÑÚ¹äùvæÏEß!!¾myÞ=p°È7~ÈkOS¼Â›¥››,÷²Â„s4f¦ÃŸ8]¨ý0³p×Þ~®æï^!Ð€ô©QñÕº¸êÑåãÁ÷-²W­è«È‰ÎÇäèc-sƒL®ïªÕ-e=îñ¥«Ÿƒ¹–@4£1·æòþ‘Å«ËìBmˆü‚Jå}q{\GÛg™«UÖÄêúö$ºm+»NE$ tÍ"±÷Û'}0‡Óùô4ü|sAâž5yÙoühÝŸàu“ã‚Ÿ´N]£¬ç¹ˆ%`Ìz´dáX¬“oãýähñ	SqK&þ!ïÐ~ÁàI}¥Ùå±R¸ònz¡3?…}—À÷h¤;égóûwÇ¤5kSš¾(@Ë>z&:ð2®m]‚œW'U:È%¯¯‘¤ê^²iÉ¿Ñ7MÝv Ó„‰Xüš–—¤§q×Ó˜4/TpÑM‹ë*yu~æ“xœ±nÄ D{¾‚'lcÀ§(J6Eê'àD÷÷á¤«Ò$J³ÒÎèíÎ´‚Hù¸˜Ù Æ	cœaìè`ñB»iBôJ’
¦FµTÖ	–{½ÌŠjYLJL£ófÎ…%£]r¡o!mÒJ?îãùúX¿^×œ×O6Ç:H©†aÐóDWœ“®ÆÐþ—'é3"‹áLë±ï¹4š*sXm}¢{	ÊÙV6faïÒjcmN®;„¼wè7ŠBr?ÀþÌÜ“w§’ÞþX/ôäÔ†5¡cÙ{fnç?#ßl’‹”2xœm’Ër›@D÷|ÅTeIÙÞ²S0Â=³`†‡ƒ`_Å©ìÜ«{»N¯ºY‡10tb`	HJu=…Š «‰®¦šœU”e=!„¢‘p-êpÃ "DCÐÈ* EQRŒD%}`¢,Šr¢bYI¨dä?/
DW"ºª	Äô$ƒH5’L•’L‡Š¬ Ë’Ê¡´6jJ|1ÊÜ—ìöu¼õCŸ3üªª=b‚
¹”ÖuÉØvKö>$à¥¡nÏ÷·¼dÅ<?€oby›÷ežþÊr\oB7[Ï]›»}ä|ùàÀ­·RË4­¹in¬Í²BþŒÎ#Ë×ŠJ®RçÝLó ©g¾{“
%^ó¯žòU¥y‚?Ð\+Úh§¤ãP¼®>á­©5_¾uCi*—6êbR+ƒÆn–¶3&ÀêÚv[›ëƒ€Nh²S¯GlÇt¸à™<N"»àÓ<ÄÚ•.¨!ImÒœNŠøÖGÌßé»uK¡Ês2¶TœeÕ.
eÌ®bx7}¸BÝýNs7mWf_ïûÖmî“"fË}Ç÷33ZÄ8ÑþíG­õrè»(êz§dºà5ö½¨`Ë³`æLUîì?U•ÖØ>žõå°UÎa™Rø—#rvÔ®#6b7îäÇj‰±~>Û¬Ð±²æGxØHÁ"KrË÷ñVl:,yç•¯Ó|I¸9kûûÆ¸îrÚá|¾¸gà‡ ‰" ­A–9el6õÅSßfã)GŽ{|?AM¯lCûÊì1Ý’”¸ûw…ø´•xœ•¿NÄ0‡÷<…7¨ÚÒ¤Bˆ8kþ8w>®É‘¸ xzÒŠ±±Å±ß—˜3"è)hT¦3×nš\+»IÙI¹qðAõÃ0Ù‚îµg“12˜FÓjoTg¤”M/]ë‡¾¬ÂAZÝJ„Yø2<¦h"ìhŸ˜á6¯Õ}>žÂ;è”G¥õ(áªÛV¸4ÏÄŒÿŒ‰¯r¸9½#<í^€|})Â,Äó¡¶¡¢Ï'dJÊgaœ!ãÛBËÖò€X„‚k.P.'Š(RØn~Qj‚"­ÇVÉsepN~qèÁf4¯¥¨ˆë\ç.¡$¨´‹Ç¥Š¶P]ñ¦Ÿ>b#¾d®ŠÏ–xœŽÁjÃ0DïúŠ½—˜•Kr%‡|A{èyw½›»ØJKÿ¾¢?PèmæÍLÝTÁÐÈö•½Wr±ÁšUbNRZ$°û M—
,±DH4hI8QR*…{aÒTúlÉ=êûºÁ•–Igx£Û¢œÇ¯_qÙ»v£>ƒO)16žÐ#:Yï÷©VýêÆUNð¢7m9ª
4ÏÐ¼¬=ù]è¼s¯S««Ù¿O­¸ÿÁ[œ’xœÍ=N1†áÞ§˜e5^ÿ&Bˆ‚DˆÚöÌ€¥dy½‰¸=+.€D÷4ï÷Î3Ú#†Ì3»€Þs‰hBbvlhòG¿#ª[ê¼0œÅ‰Ä°DG»
…äŠHVLÎÎic…UÚÆWëð––ÊøHŸwx¦Ç/^×må‰ø´÷Á¢‰FÃjDUÚõZÇà¤*oõB'x¿QwîkmŒ÷yš'­Ô¹îth"‡ü}úëAý AˆZ™3xœm‘Io£@FïüŠ–æh%î¦YÌ(/ØoqçFÓÅâ4` 1&¿~<Í-uªzzU*é“5 Ð07ÄŒqDî3°6U×™Å˜N0M¹„5 3±A¸NøHÇh&™eáX‹c•[[þû1×­Æ!19&£˜‡¢0ÖUM‹4Uµb3Æ:Mª„­LË¹a‘@Ç0) FO¼ûj~7m~!b¦†Ubêh€ï+Q™ç™”wy–ÉyËÐSQÖpýï$“iËïÂ7kÉ%i²=ü-g2ó´™mÐÞ›öËa7ùâ
RP×8‘cÛÎØ¶·Îvq>•ùp¼s–fzÖÖWZ{m3êy¶W½¶ÍUÓÃ¬ÒKU¨Æi›œ3Y[îeiJ–4š^åæÍÇˆa}8Yˆ [›Gs¿øðW’-úÏr×¼¶Mãöe6Ó6Æ
â×S™¾9ÂŸtzß~†ÅbÓfÝQ{ÛÈ«ð{¨Óýf´}—çåûÍÒºøø²IÇhìÍà~!R¯³y’­YÞÈD´õ‡‡^õmŠã5ó
Uz¹LYºÆjvŸ¬.·ò\’ã:š[O†pö‹›I—§½.ç»ªvFêÀué.,wÐÓÙR.Íîíè4VÐtqR]ûÕÝMÂ÷]e—‚àæ;:5ý¡ž7Ü/4¾òò-®¶ú-ÃäâêýTË˜nžÄ7a¤gÏ8¬†6ïÚEò¬ g£pTå_f“Àý>1Å‡:ti…@5T-4ý &±P\—9Ê’°¶Jx{àpQÖf‚ÿD‡/Œî¸¸æ€®P7YY »‡"ê‘,yTÿ J²žxœÍjÃ0„ïzŠ½—)±üJé¡oPJÎ’wTIHrŒß¾nhÏíiva¾a¦f€€Frgá()å¨ö¶—]{ÒÚÖj%Ï½jD2¡’ÂYJËp­b­¸×r@Ó±³Ã ]ãÜ‰‡³„Yê3½™à1ÓÕ|dzæõq¼–¥àÈx!Õ¶]#U«%=É½ãíækÅ¿Ñ®×?¨°‹ŸùB‰MÍÞ†ûtG.>b$F7ª‘Ôñ$ÄÕ×‰êâE÷Í,‹gZA`2s‰ÃsFI1°Ÿ¿Ñb×lòFëäÇ‰RŽwÏ(äk¡¸zDÕ-¡…x÷{}>Dçv»üµN|¢ç‡xœ…OKÄ0Åïùs—­Išô‹¬àÅ³‚ñd¦m¤MK“"ûívoÞÞãýÞð&mDÀ…FÙ6Èm]’–mÕjª´VcqM¢·Sl5…ª6¥mZ'œ“µVN“ímÙ7²–R8T¨Ì¼ÙÓ¸l`>£
ÎƒO—CH ªªV<;w\pÎÜ2Ï>%ÚàÉO¼™!dwÆ¯q‰{¤¿Õ²joU¶NûàC¼÷!,ÃæSÏÁM;$?ÓVŒŒ½ŽùNü ßƒK~	`Bº®xÄ,3?û}`$ƒfìý¶¥ƒHÇf˜)F3Ð{ñ9ÅÓÒ÷'{íþ{„}d
{3ãxœÁ±Â0 À;Ü1E*jÇ’,efH!Krr¹@Eï)2³ÐðÿN¿Ûz	¢3*P¶ÈsñÊKx”fTjÜw=b;§ÞMgfuãÚÅ±1JåÝ(7ã†e¬Æç™^¶ïõµ‘"ø‘xœ…ÁNÃ0†ïy
k'ZIÚ¬i§	í°'€Ä!6¨Mª6ííé¶Â	‰“mùÿüÛŽEV*eEn„°j¡*µ£\)Ó”…‘
]aÃÙ¨'òªR”º4ÜVõNqY‘ªk¥%‹-×;Îe™—L§Ø…	ôÇ,r	‡ÖÅã-Ïž@”¥âUµ%<ðœsfÂ0¸i‚“öŽzxÕ­_ª~]“ãœfúE%çU/¨XPÖ$×ãžiŸÉ§ÙBJ³œ7}BbLÖ\ØZ5
mw›:Ma¤‘<’7gz×\ØÍ=L×‰±#ö§šÁ†©bXõùí!E×?ÆóHsÖelÝÒÅŒ±·õ¸=hÄÅçöhžuKïìÅ-]Ük·ÍyÿßgØ7•b”xœŽÍN1„ïy
ßQ+;?vZU¨‡>8»‰SVÚî¢ÝÄÛ³â¸FóÍL_Ì@ÂµËÞGÑ¤ÆA"%ÌR”±ECoQ1åƒûÐÅ¦R‘“p-•}"–‘Ô–Ù‰rqúèïóáMo“-pª_¿â¼>VÛW{bæƒdOžÐ#º2ßïCïöÔÕ¹áÅn¶å´è8Âæ­Ð¶'Ÿ~ï{¶’º›[Û]¿m¸þŠX»xœÌ;N1FáÞ«¸=Jtíñ3Š;@ˆÚß`)GO»±$ºÓœo€”Cb)ëÂZh“L°¾ºÀÅ{hVqÑ0*q‹ë$Ÿct’ZçZÒ®^²Ñ9$8}tÅqŸ}Ðs\.ôßW:—ÏßxÚöÇ‚G’ÖÚà¼ôX1‹Ü¯×6'þ±Š´·K9Ñë­Ä	ºcl­¯4;ÝÕQ	ñÒ~€rèµÒ×é/_|ÜY@™xœÁJ1DïùŠ¾ËÌ¤“,"üÏ¤£™É0›ÙÅ¿WDÏ‚·¢õªï"€S¹L¬MH‰Œ'ã-‡„©ø’œÚx—µƒxO\È9JÖùŒ2‰5ÇŒyÚ¡Ñ¤LEñÑßÛO¼V™á•ßVÙá>ß¾Ããå¸Èå4ç‚Óp‡Q¥¶,µwùÇTÅ£Îù/[æ.0×¸^ÛÎ›R?eopÕƒV~ù Ôsý2çS+å?Î«OzR`æ—5xœmRË’›:ÜóªÊ"j2ˆ[I*Âöx€€ÇÆa6)Iˆ‡-#0~|ýu’Je“³9]çtW/º%È=lÛ³,‹æ5læÚL‹Ø…Ppa{vŽµŽ*ÑÀà®„å¸"gdäwÌ\„˜i#ÇBÔ4ú‡Ï\Ãd…;9¦žÍ DØ0ä…E™‹¹0E‚iô4T­SÚÔB‚-¡Àçüü|ëO½ø”‹¯ :Žã¹®- ¦ah¼=ëa¸“çõð|bàsÓ*ÑÉë·²ªût'üCVve_—àáçø³y€—ùHƒyBÖ›Õì×]8÷>÷	ñ'„,ýe¸%î÷ÉÊÜjo/FKgBfW# Å^Ñ^¶dtØbžYåq ’jàp+9ãÈ¹è¯A6{d±ÌCñ=œ¥fVâDcç£\®£ç±bè/£t…d°™TÝ@•§—˜`yÈßo’,»Úçýx­§’$¦­2ÝKDz´­0;/ÓGölCéåO×yPj@_-^7È)èb÷¶–"Û Ç„OÚœ³A]¯YÔ/£Ë¸µ’;ÛA­Û¨’l•î.¸Š8$Y¹mÞÌwc¡ïQÝlãüåÜ„aZË
7K=¸‘ê”ù/d±n^%.X }§z¥Œw#ãÐuŸÝ½ó†^Þžtï6ìnÑtá«jÓ¾ËY*=?SÛ7/š´Ûþ‹¾„óu§ýÎl–Lÿ˜U
Ð¤J¼ŸD?€Ð…6(T{Gª†ºy(»ë£h(“âG'T_÷Ã½¬šVP¦jÞÿŠú>þý|mrY7%ÈOêçâmÓ><Ð»Íù^4¦‹ä.“âã‹
™—xœ?OÃ0ÅwŠÛ: VŽ“8IU¡ $$`èÀ€Îñ9±pœÈq)|{LÅµx°ï,ýÞ½w1VªÉ¥2\µ2£ÚT¼•±hd^œŒ2y&3!Ø„|-DŽØNéÈºjj¬tV¡¹(uSr.¨Ä¢f¸ýàC´nhÁf8¶ÝÖSÄiZµãp	™”²©Êºlà‚—9géw°1R€+ô–<bçS·Ñ‡c±÷3­4}£•à<¡éfÌ 
¶×`ì,&
³c2¾€½vi6è}ø|ÚÑ{jãƒƒ=Üîîæˆ±kÊÑ)oþ°þu k`¦)iì)ðÆv¿‚+Æv69×ËÑ˜¥z_ÿc-ìé+íPkÒ`Ò…íØar4$OíèŸÏ¥ÿØû  Í¦—3xœmQËŽ›0Ýó–ºD31T3Õ !$!/&!ÙTâ„@Æ@^__:U•zWGç!Ý£Ó
Æ „Œa[:ÑiŽ2š©•"HI–3DÕ”h0GØ"Ò™Vµ€"¤b¡>ÖMÃ2‰A!
‘N-BÄt¢™ýç*ÄÔÌ1³,J±™æXÓ‘F•iÄ‚cDM]"]»¯’Š³lHQ1^èõ¼5]Ãž)ûŒ±e`C3„RVŸN¼m{³ÏÛq—‚—ªì\Þß
Þî»ô¹7ü'Vœ‹†àé÷9ž?Y€•¿ë‰¿°?¢wï‹—€®“9¶í¸¶:áôØ—Æ}wcÐ–UL®¶MmbÏf=Æ8êÈÍDÖ‰ÕœßNhÄx¤We35h+ÊóRe}¼¹tÃÅÚi²zùÜ§‰5—Eœm}5<ºÆ®“Àºx\GÁæD»ðÑä“°1‰¨¼ãï·tô±¶…¶¥ëQÛMwÝÕÈ"ÏÐÖ«¦*æ%Ë±’¢ºK›…‹ññ8ôçÅ~ît²¾?)ÝíñÐ¿¥Ý›|v”Ë¾ÛV}¯ÙCœd×7Žz!j¹Ê"kr›A‚ã$©–r½#Áno†Iøu^âôàÄvœ,¢›±°vÌ5ÔCyð°u‘ ¡RkzðˆÎŸS¥Øñu©ªÎxèEG'ðò.2Ñaæëœî‹¥H#÷ÌVV#WžÖ¯xÝdÌ‘þlæ-†ÿ_Lš3Q0pîÊöÙ±¦ßCQA.ê8Ñòê©8ß9¿ýäo9)ùƒ´¼®$©©KN‹ÓwÐ‹à_\‰¨xUüÌÖ ”“9xœRËnÛ0¼ó+öæd‰¶dK} @ÐÒS=©J‰+™E
Ç9ùŒö÷ò%YË°ƒ9¤åEZîì`¸3Þ!B!¦qš%"‘5¯ærYf%¤¨järVŠyTó4¬ÉùLˆŒÓ.ÙR,d<ç\F<‘YE1_21øµuðM8¯|Aë„wíX6zÑuaeÛ§iš-fYšÁ›(™EŒn[å=þß4ë­V²is¨Õ-(£¼ZÝ	¯¬­p†»D¤/ø5B‰ÚnØ®•F êNé}mnZ*­rÆ¨¿9|2$mß’Êaå­ÛÁÏ°”–¶â‹i_Áùiþl¹!ØHvÓN2}1ªTM{ú	<jlÑ»]X…–…á:="¦ÏAsøj L5¾ïáþ÷‰¸A_œ€…¶ÍÃýŸüå¼1OsÎóãbò=·FÓø5ñ@+v´8z”0˜Ó–©"¿üZõOšVÁwB—ü…»b à5™hjÕîàÏ{ØôÖÞ^£AWPèz,ðöÕ¦§«3Øƒ‹Þ»38(yývÏòÌùñë_[%ñhÛ…2×c,åí`cŸ)Fã‹ÊÝSœŽá™„LàF8%JŠŽ·p‡Î†”1Õ”­ë Üå/3{šuAØ•1xœm‘Ks¢@…÷üŠ®š¥•‘wCU2DÀ¢Qãšn6ñ×ÉÔìrW÷Þó:‹Ó1ŒEJbžO‚c©
4J‰(ê$ãHÅHç¹&b¸ê |ò„×‰¬ëŠë0Š	Æº$¡DcEÕ•HŽµˆèÿyII”ð–ˆª ¤Kš%X“JtQ•ø©é\ÔwYÍ€U9¦à¥fà5¾—÷¶oñïÿ‚ª>CT]ÒÁ„yžCuYæ]÷„¼[ô1x­j†:¾§y—õñï'ðƒ-mÒ6OÁË×˜¶ã®Aà`ç:kcÿÚßp`hMd†93Œ­¹õŠ#T—³ÐôaVÈ››ÄÜá)ƒk˜ÅÙBÕöÄÆ~ÛU¥ø1„Ëô´‹‡ÃgÜ¤vî,,‡Gê¡,ó¶w<9\I“ûÆÙ5ágc§!µ¥Œ­'È£÷Øv+ä‘G´‘Çûú˜ˆ5šË·I9²6éÛRÒÉJðýàL:ß¼™±=/ZÃr×8'n7¨ô"¬—^g	´B†—ýr¦ßX£=	-¥`gY6/Ã99m+³6\Ã±áÁs"\ñi:‘?­ Ì«Z¸ÇpiÎ-·ït›?¨â§BËzaù›ûÇÃ›ÇeÛBK±ürÕêŒyùø¸Ê—bó‰<å…Å¢`ÓJ:J—Ï^ØŸ¯x3e«°šI‡cŽO1Ý×1uöÅª7îÞ:ÛÞqÿ:³×ÖÏq+ÌRšžRÀðµÇm~	Pau	ò4¦qŸÓä…äwÜrœùu DqTõMûhôõ&‘xœŽ1OÃ0FwÿŠÛQ+ÇIÎv…ª"¥c—20û|w‰Æ•ëñï©*vØÞòÞ÷µ*Î;ç{õb-çQ¨Ë8jÐ÷ì\Tv”Pr´æšª,¢wƒz'TQ"äGTÒ!sîƒú^r"4im¥Â”–Y>á-½/Rá™¿p¸­7Ù²ì¡CÄ8„0x²ÎZ“Ëå2·&ÿU#¢ÿUÍùøršŽ;˜j¹B•ûå,PX×™yïÞÕ}ïþ0?%ÒZd–xœAOÃ0…ïù¾£MY»¤é„„¸ƒÄ9qœÕZ—LIª²OéàÀ	n¶õ½çg×L„ÔY¥:g”V­ÝS½ôFjô­	Òycz‡=Š‹Í+g¤%¿“¨‚ÔÅ–dP­t{ß6Ê©.˜Fk×;Õ!ex²‘i„w{Œ”áÞÏkñX¦B[O°ÓZ÷û^)	w²‘R`:Ÿ¹Vú·Tëî[*ÜÄ£?À3 EÏ6„'KÌ©X	!ÞúMp2].©‡š ðqÊ\¡.dÊž2Ç#¤¸ög‹GóÀ8¬ÇÑæ+Ì<Ž§¸€[x¡ˆ3A¤›émÓ>¤R!¦ÕýúÇs+Ä+/gúM
aã®‡¿¾ ><ý”mšxœ½nÃ …wžâ*Sª*Û˜¨ª:ä	Ú¡3p/	’ZyûºQÆJív†óŸ’‰@’ž£¹³R¡ï¶{ê©å£5Î #Õ)Å“)hú±Õ¨F®•ÒyK|pBj©MÒõœ$jb¦–KÊp21ÐŸæ)Ã®wñv­Wj^AÃ »±ç<ó–sæÒ<‡Rè¿¨–B?Pfk˜ðï4§/‚7'B­›5›|˜ˆ±Nsáµ²ÛY	ûÝƒ9å´ ÒB)º¤S°?ìî	|ÊçT $È÷hV.1­¿W4Œ}„m*’÷{;þõ„}Œg~~‘!xœ1Oä0…{ÿŠ)±DŽãÄ1BˆškWpåÊÎL6–;Š]òïÏ‹è¡éÍ÷Þ›É+ªU¶7Rsƒ¶V¶Õ‚wº³(ÇA¤„Ô­hzÎ³RÈ šVŒlq9ÈAñ†[Ù¶@©8kM†™-Oq…WyøgÎVxÂë×ð’¶DÒ3Ô]×iÙw²{.8gCœg—3ýÕM­¿Qf7çñÞ4™`v.´&ÄfJeÈx%{Æ¼³á2·Ë^Ê†¦¢ÏLáœæˆ›§?wpÜ0K€´P@Î;‡í”öÙFº¸ä¬ó.ï#˜õ¼ë÷ä©P“I`‰ŒkœÍ^âûø®Uª(¸–••<™DX¼áïæ‹^÷`~¾	GZ@ˆ»	¼]Šë+YgÊyS.©irKººÄ]ù>Äq|°ûãOeÿ¤I¨ŸxœŽÁnÃ Dï|ÅÞ«D0°QUõÐ?h«žY³4H['Êß×j{o/£™‘žfzc†hPªÑk§*Ë#éÄ&)HFTž¼—ä¤&±„ÆµƒsJ%‰É ŠÐJÌ¨õ­¢ÁâùP„­_æ/¡fžà#|VnðoßæyÝV>F~‚“µªAÂƒTRŠq.%÷ÎÿFõ	QA[žâÞ—:Ã”©^Ã­…Eˆ·¶Ÿ¾ä
Wnkž+D^¸r\Ç;ì¹ðº«</ÄkÞ÷âaNé@÷ó_wÄðõi¼›4xœm’Ks›0…÷ü
ÍtÉ$ $Ñi;ááìÚ~ÆÞd$¯`À ×¿¾i;Ýå¬Î¹óÝÕ9²˜cÓ0RFj¦,	lcŒ¬„98³Ò,ÍP’p­c½h$°G¶),Ç‰Á3‹:ahcŽë#ÓDØœrdþç	$f	bÙÌ&I2fCH3šš(A–%p†8"S²h{°¦58°¼=ø–ŽÍÃ qŸŠÀÀ;ˆP› šjI{>—R~Àa)Ÿßš¶]ýë!/e¡øýðÉ[ÞåC™ƒ»?ò¦a´Ïá3ØDáÒÝîÖÓ¿wh`¼Äs]ÏwÝØ‹gÕÁÖþÚ›“¢B«w«F×=0r£§"z¹&
Ÿä¶¡A5ÀÝ·—(Ü/ûò}âÇ‚^‚ßð!Ek§[ÍõÅfVÉz+Q•í»=”¯~YA«Ö‡RñÍöÇŠN‡¥tñê ”gÎå‹Ø%$Ÿ‘MÉ[£æA:–§ërï‹‰þœ±€cõä|yÔ€^·pçG†Y:uzÀ¤Ry¬¾ý^(¼µgnûáxJÝ[›úÃ, ¨$=;F¦ÈÑæzÛh`ÝÑ}µõ=×ŠÇóEA7E]1é™{[ª?ZNì0ÿgíE“Ý¬íwÄ7~¤R}\£‹ÐÀ"¿&óÁj¦>ŒÇ)2ù4ÔðüVïéW§6WãÅãÃöh\c·Ÿ¯~N&xñ$Í¡£ß5ð]G™©ýëlº>oL[ˆ> SuzqQbà‹Ad}{uÙ¨ë]ó~“²Iî
ÁRÑkš’e=©†¶¹/¾7MÁÿÚòJ$ò5òU•Äd¬®9KÞ@yîjqþX8“eÛü7S˜xœ±NÃ0EwÅ[:¡VŽ¼ÖU…+BŒèÙ~n-%qd;úõ4ˆ	˜îÎ‘î­™”DTMãi×ì”''%1vˆ­vd0h|h³b¢Ìc½%­ŒîÜUj-jm¬"Ó´ŒÈ,ƒ²4‚æzJîiŒÜÃGÎpðç¯rWæÂÏ·Ð ¢i·F¸‘JJáÒ0ÄZùßêVwßª(©>‡=<Äw˜rk€ò@u	(ñÂ¯Þ(G²=ñ8‚V6V˜zªX`ÕÏÔÃ9§ñø‹¿çÂb!]Ê™]…ÕeþÉ×S,!žâu¸_§Ööcÿ×/ñ	,Eƒü—xœÍNÃ0„ï~Š½q@)nü»B$Þ€C‘ÖKbWÉÄÛ“V\Üfg5ŸfhF„Ns…Üm¼WÖ(—çJt¹‘ÆD+Ãž'Žìâf,Êy©ZV`Øû$Œíä†Ð^Z±Ý& òÆË–¹•†:Ã«+G8ºSÁãçM</ë‚»ˆO°×ZÛ $Üó–sê4e"üo´ëZýe+åñá¼Ô²ð#\u_ýõ'¤~Í…´„äÆÑ»ðyºŒ8m»åZ;"Ä4 DL¹ä«5ýFÊ‚[ðön‹—rGp™ëGŽ™vŒ½å­wljJÿ:ü5‹}(ïƒå™xœ=½jÄ0„{=Åö!F?–d‡#\‘&Eº©÷´kŸ@–Y&äí#B’næƒfZe¥¯ÆHGÊ±a¯æÑNÎ:-åDkëzMhqÇÊ¹Ú)J3ÎËÂFêª=»Ðé"™çÐ±¶Ž¥À£ÝJ…Ä%c¥2áÈ7„SGÿî¼—)®ÛÊöÊ97+i•‡Gé¥n±5®ð‚9r‚\sw'úüçýØy þŽv43<È¾_ˆ¿ê'x¿6&¸pâ[ý‚þfy…Pˆ¡x{½@ŠsoßÃW©”xœ…PANÄ0<“WøŽZµIÓ¦«Z$~Àâ&N7"MP’‚ö÷xWÀŸì±fÆãšAØ¡œÇI˜	••S×)®xß‚s…ÎõF*å8ûÐcZ.Ö9¡>)Ü0X‰‹Ónêä"å&œ%
Çô^Ï)CÀu¶©µº5{<k8ô7J
ÞúukMÚ ÉVñ¹—Ðtt
#tóµb†'=xÑk¤éh¿nÍ©ì[‹7ê8r3Üwœ¨ìWú Ö¢JP|\ÁÑYnXóÌ^jÚH²úGÔK@°ºjÆ^<Ð@¡,•4Ò'æH$øˆ…Á_5°ÑÎ‚E0ëêS]¡ž\}ŒWçä® »»–Ìû{öda›ä\³\ÿ¥dß£‹“”#xœ…PÁnÛ0½ë+x/âÊŠ-YA0t@/;÷°Ã0²H%Jm©äýû)MZôRôD>>>>â•DBµV(©»­@7
1rÙ›–‹~ Nj©{Ú´ºg/&Q(€B¢¤0’skz%hØ¢Uz­R„B#ß2³”SL0Q&alÐ4v	'û:ú@9Nýqnlœ@+¥Ô-Wƒ€Wœ³:})”àÑOü6ÇPÑ×·æ!/™¤›´ë»­†;.ª”-ÅOùþœcØÁOD¸t‡8žÉ–C õ°øPd®~y¡6öÀ›¶cì/ "}©—qÂúÐ?JÙÇ 5%˜}Î>Y9ùn	¶T¦_!2HÎ‡ÊCY# wŽÞ’ýlq+Õ›½^	¬	p^r¹^ ('g¦i4öùÃœO¹4Œý¹E´ƒDkŠåºfÊÙé/{òu7Ñ¹Íøºû.eöž ¼T˜3xœmÒËr›0à=O¡™.=­Ì4
Œ‰cÛøÎN‰/`IØqž¾i:Ýå¬ÎœùþÕŒ’0·}$$Añö\\8Òæcè£Â/=â;žÇ«åJ^ …ç×ã¹ð9.JÌóÒ%¹ðr§t¼ÂG%Ëý÷Ò%Èç¾ÏeIJ …žËmœ#8’Ôõ „9µxg~©å	lyu‘
ü,îŸËoÝiù£¿ $„ø×=Û±mK4çsmÌŽkóÜåàç¥Q²==~Wµ9tùðE¬j+]Wàûß	¢x”€y<ËQœ°Õ:>ï°À]"`,[‹—×-ž¬Ã4ÓÃ+žÝÝöñˆ¶™ÚÛEœTËüèÝ(N› oå’µûŽÜ[8ë±mêÓÃóãðÚÚÑèÔ'mVÁänP»Ÿvï³ÕÛäÕÉâµ©†“·Í`nt&^´‹—Òôˆ»VÁá}&XöÜÍ*f†ÅuÚ?$Pç¾ß»Ía“^÷qãÍÐúÜZ < öÝý+”±J3|li *êž®)A5G|ïúšŽ^Æ¡B<€´Ü>Tef§Šñ%µÀt9‰^rl7ëp2ÞÀi=˜0Y	[&3:­‹§Œ£ÕUŠçáµ.}¦ô.fƒaæLk/´€¾ÂãPŸq™n„³|p²}©izÄc¸%D“m6ÈÂñ°Mö,Zqc÷Iß–TA/²'{j?Yàéy'‘õ¯³(|Ý˜5•ª’ íN' äµ“Ú€oÚ”ª9ƒ°)dØ\´Q0ýVõµá¦ÓßÍ£•Ú²XQ Ýµm£(?ÞñTç·ËY‚
|ª?dXûh“xœ•=OÃ0†wÿŠAÈI×©bÄ{u±Ï‰±#Tê¿']Ø`;éîyïys$ÓŒ|è4ÉÎH¥…ê…i‰c'D3tf°J­RØ²#ùAmhÇ•BlUßñ‘¬Õ+ÙËQt%2,y^(Òr†WŠŽŸO:ÒÁ§‹ÎµKå)eß´\íàŽ+ÎÙ¶X\ÎôŸ€a“æý5€ùÓBÕÏ{¸†àíRÆ\œð«Pbìcv	ôŒ~"@c¤²®!f°›zž/H•VÒÎ:ý›½ôæœXIÎOpyyXÜáçðÃ6mÓÍmÍØ»›<™*X[çýßj±o/xŠ ˜xœ•ÍNÃ0„ï~Š½ÓVvê„¸Bˆ3á^9ö¸	MœÊ?­*Ä»“¤å‡Õfç›Ñ¦ P#¸(…*\m%¯Œ-TaëZ–¶uó(¸´Z€o9;é ŸèQ–ªTM+!k]”NÉiÃÀÚb[i§Ñ P‚éœÚ1Ð+†+½!zú<¾˜ÑÂŒ>¦MÚ˜qØèüL¢ªª’O E¼æœMÂÐ¥„ÿ ÔVJ^ÞÌŸì(GP‹þ„ÉMuLsìübÒ)GJ×"cí”Bzr¸P7ñµ7ˆtY”nNJ-~­)OgÝgãÀú®™SÉè¾´^¡MK£›«¥ÏÌðSÈ|»¿Áö_s‘ÕÂúf÷ÂÆÞ»ƒ‡]Î­›ëîo¿`?zÿ¶xœ•±RÃ0D{}Å•0à Û²"g†J
J|:Å
¶ä‘ädò÷`*howßî\ŽD°µM-Ì+ƒ¦±\HSVÜ”X#©¦”Ôêªjx)Ø¬#ùÒ¨V6J÷Øja¬Ð½mdª¯l¥L[ÛQP_3½ä!Dx¡HÓ^)Fx<|<c0„Á§ÌÓF/OPJ)E+¶ŠÃWœ³/ar9Ó m-o® æst>ï`M‚”u^äóL‰±w—È§¬îî¢w{ÊÝêyø}<êq¡›[Ðˆ”Rˆ	œg£ëWß=DºlZ"]qC8u?ô8†Ówy‘fBg®Ãœq~¿‚ì²F7Œ½¹½'Sk‹þ¼ûÛØ'gœçœ1xœm‘Én£@ Dï|EKs%¬Mƒ”ŒÂfL0àýÖÐÝ€1‹1Kð×“ÑÜR§ªÒ«Sõ¥€Rœ¨šš

¥‚*Q1¡©’"¨IN°ÀD¢(QÌµ¸£uR]1e²¬ÈP%ŠÀ4™BBˆF5Q'²†*@¡ÿ¼rç™ŽD˜œŠº”2YG)&T“(dXW	ƒêÃCŸ7°q]Ð3Øá¬¦x"Ó·y¹WúHè ªªªiª(Ëà· 	—6UUôýv‹~9$à©n:Úžç—¬èó!y¼?Ì²6»xø’é¸žVî
ÄžëëMä|÷àÀt5SÓ0LË0B3|=í.µhEæÊOJ0Ê7Æ8žaÝ¦ÀÊ±Ú¿&—)RÖÝ¼iW?¿…F_ãhá“Ëæ¨H…mï·3¿Fhko|/…uZÚ|H5ëÆm}»î»0«Ù'ê|‰K/ËK~££ytxÜ^áÐ0³´!&ë2öº­=MdKâå©:–¦QçÑ¥¶eäq ‚MòPRŽ¼R­‘í—ç&ØJø²Ï‹€9	òÂ]Ü Ì(ÜXÑÐAqdñ–‘„o¥gûtZ¹Ð÷`·²‚Þ*»ñ]Ý»º—Û!¹å¶ïE?)EóÕb“©—äBRýÀfIæÀhWÑ¦!Ä‘ßq¶Y¦gÃ¶`ôv>[ñ8/ìÓûg˜¬ùI0uuÆ,©Fä§6¦Ú3ž?.¯„û÷™ãÛ??Æ}Ð.£ ÎgÐÑË@¯=ø%"A¬k*PdxâI×´ÃPŽ³ïœ‹ä+B[ZZ§ó_ƒöâxœÁnÃ Dï|ÅÞÛD`cB¢ªê!ÐCÏÀŽ*,åïkW9ôÖÞž´z3;epÞX¤¤i <‚‡Î6Öy'{Å–»NLnF*d¥Úu/µîŒç`¤Ó¼2:/Ù›ÆöJ)WË%Ïtv)b ÷™0Óß~àm©öŒWRÆtæ`ÚVÒ“l¤!c,ÿRµmÛ™‡*|Ÿè<ç‰#…;åDCôµFb…tAÓœ¯‘AåÚ.Ô×JÌi¡È…RÝ0Ü)üLK¦¯ºZ›W!/ëºÄÄ[Íæ?ÂUî…xë·¼Ë}¿ó÷Ó_cÄ7ýkÈŸxœŽÁjÃ0DïúŠ=7$È–%K¡”J ”ƒ¤Ý¶ld¹¡_·ôÞÞ†aÞÌÔBmô¦%©³iYùÀ®ÓÁÈÆzæÆa4NŠÅÊ¢“'VªSÚ`'Ù*ÒˆhÉîIeû@R›¾~«Ã\àÙçD#¼û[¦xÿ—u[é„ô1ÆZÕº²•RÄyšR­ôotÿñ‹Š°¥Ïð¶ ¯c
ùc"¸¿ñB5P‚oóºÕ4^€·kšózâ5íýxœ™áóü×¼øk‘e4˜2xœm’Ms¢@†ïüŠ©Ú#•`˜­d+ bPâGDQo3Ì€(#è¯_“­ÝSúÔÏÛÕUo·5ç IˆAiÌuJbœ HµDƒT8AšÔÉaÂ‘T‘š-€œÑ„)ŒrEÇŒ³iæ#šè
1¶°FMÿÇ#Ã˜ 51K±A b%8Vt©8Ö-b=ä¦u‰ˆöPÖÀ%EÆs‘´à5xfÝWòÚˆ†ÿdü7PMÓ´…uÈŠ¦(R\žÏYÛ>àqÖ¾	
ž‹²æU~{M³ö èÏð,­Ò&KÁÓg8£±?‹ñ¬üñÌ×£¯¾$Ð5NìØ¶3´í¥³œ£ÆÃgŠG}~…µßÙv¶j|{	dz”_T5rãDóûE(¿o%p1ÍÊ‡‹Jßä†+N2f»÷Çý¢)‚jÙ©Þô4Í/„Tëñbf[B†³û%ˆŠ™ØV¾¾—@Øgp=Ïï§šîÔó“»þˆâ£l6Ê¥ŸôÃ%·’dÚßú³1ÁZxg&·ûðM½G	ìX ¹Yj®Ç2±‰
D=ÚQ2¨²ëyÝw(mœ´&?ÐU/›ºe}å²ö¦¼E˜º/®	ot©Ò¡Nó>"ä¥¹9ˆ´
#†Ëms¼xwMÙšõ6nMÈÞÕhUK`Çu8É‚}gŽœê4Ïvž7ˆ§™œ7GºYú`»¶FKC”«ý¶tÕsìý	ÊŠpwé‹^ÒbaH=ÍÜï“ÞyrP‰<5¿Þ´à‡jb’º<ƒ,%Ý ¸žùS[Ve^¦7Iú,›1ÐÊîÿ |¾)Øèúzxœ1nÃ0Ew‚{áB-S	Š"zƒI‰J8–a+rû¦Ú±ÝþðÞûmU…R8ˆ$í…Ó®Š/#Zeò=z‹’YxÕ¹¤`U)÷B}`ŠLá ¸ÔFVrQZ2|mçºÂÏ£NðÁ§YWxÉ·ïqØ®›>g}7ílDOÖ[kR½\ÆÖô¿ªÃõË]&mc·=s†í\o]«Kêé~cÞÇG0wµ”Nîû¿þÌ'Ê`©œxœËjÃ0E÷úŠÙil½B(-ôºèz¤%†X
¶Ü¿o(Ý·»—sO_E  IŠØägöIˆÄ‘-Ùähý8Ùi´>ŠºÒ*µƒ16”ÈÑè)
'—FÌžjq4¡FBÅ+Úû¹­ðNu–|Ò©Ê
G¾ýÀë¶oòÌòÆ9çCÐ>Â“F­UnË2÷.ÿT£Aƒ¿ªâ–ðÆõkØÎí6ôvm—vºÃcÛ—*úÜªRóãŒ‡VÊî‡¿ZêÁÔ^šxœ?oÃ Åw>Åí•#Œ‰±£ªj¤Î]:tÆ¾# aˆ Çò·¯Vº´ÛéÞïÝŸWä½FNbTÍ jE²QÖF)Eu§°Œj)ØU'
ÂÁ Ç¸ì‘Ð(qì	{5Éu«ú®šÉô\lLð¦ƒ#Ÿú(Á3.÷â5Ï™H/P·­¼ç¢†'.8gcœ&W
ýËÚª®ãGþceá6Ñ	Îˆm\ª¯ÑÇË
ûL±]Ú¡_úbÝh]¾z½f(vË%—è~p1ì³1¨@{Gó<ä5š2,®ØGHÉ¯.\¶BIÑ{J¶CÀ•ÌrÑ…2¸0úwèü~³E¶ûï{‘nn¤|`ìÃm¯c©†õôW2ì¢Eý˜5xœm’Ë²š@†÷<ÅTeiÈ 0:ID="ÇËÑ¸›æ&¨«<M,Os©TéUWÿ_WwÕÿ‹ T™é:C«šAFº¡©‘L€á F£ˆ¬«šTÑ¸@X	dE1<"Úƒˆd
F¤éƒJ0+@BM¦Á_ž€BT Æ030QéãÓJ) êD#‰¶")kdSžBŽ4æP£ç°ÿÕ|nÚÞ‡ð	aMÓÁWÑ@VdY
Ê¢H…xÀN*æ-CÏ¼¬¡ÊoŸãT$-{ÿ þ³Wq“ÆèégYSÇõïøhë:ž¹Ûo¦¿æ’PßXešÖÄ4_­×EvX—ædc-I’×Ý¨v{ÓÜ‹©k:3%ç{|ÌùjxKõ –á	q_7“nºF¼"ýeY-dVb‡/—ltÙUØÝßbÝeÛ<ôE»ïÀb¨é§/Û*Z'OB÷KæO'è³v³ —ªWU‡cß¬rŽ³]XÜÏJç®³Cž³×äMv4Ÿº®ga¢œ;ÜÔÝé>¸ãrëíj×:^ònÖÖ¡¸¶i7³òJË—·¢¼áî¨ÏW×«„L>-×gN·GF¶åjm®×û,öÎ½>&á¢_švÝ®N0V½Â^Ê»[PyXõ¶qt®¾\Hh1mNó{;¶[¸ÜŒù¼ü<Ï|ó%Zºöú8|»NøF¬x˜OlŸÙêîJø-åÅæà|ù(¡Š³eÒoÏ¦žýÇ¤Ô1 ªÍsTÃ¥…F wX3ÕeÒ3Ä´HŸÄ°ñmOr˜Hï
ø€fé=$ôGB?óEyˆD‰âÆiøHw¥ÜÉv‚rà±Hm¾ýö	\ƒ›(xœ‘MkÜ0†ïúsl)1þˆe{	%…Pè¹[z(eI#{ˆ--’¼Ûô×WÞMC(”V§Ñhžwf^¥@Té¶T}OÝPß¶rèš~­-;R•®š¦±ØU}+Å¹Z·ÊtØƒF¥šJRÙRƒj Y¬›Áª[kš|€½\ŸiÄ…áŽ¯A‘îÇy.´_ÞC%e+»N–5¼+‡²9»pJàÓ_qtùvgÎ—à>®‘
CTÊºn«>£uF…;-´ƒü"%°„i›":ÉÃø*Í&¯Å–³vù0ÁLnL`„Ÿ¼û‰`Ó;dæðÌ®EoÞ‚]NìOœO0å3AÊ˜á@—WÁÎú°à¥Rû°¥ç§öÓafµé»¼Y5@pt†…¸Þf5Žâw¯¾Ä\žà<‘<eQÍTñ™³3æÆ[{£žvÿi½øöìè>ç€ÇcöB{C×Ù¾ðrøºûË,ßÿå(~óBÜZ˜ xœMnÃ …÷œbvYT±ŒÿbGUÕJ½A"u=ÀPP°± ÇÍíK£DU»i4ó¾7¼Id×Tµš¶£ž“
‘«C[5¤Íû²ß‰ŽÍhJ@ƒàµ¨³B·-U¢&âºÔRRÊ^Q£ô®åCÉpIÆxÅÉ’ƒ7|Ÿ(À£Z¯ç¸D*=ïòáýÐ7ðPVeÉ¤G›ý­ª¦¯o(sVLç‘¶kÀy/gohtN <F8c°(Á„#1v47–d]aÀª<LÛ,2™ˆË<û@ç()Ë7w;&óJ6×¦w_\þüœÑ8!_å'q9Ð½)XyŠl5VX­shv(	²û÷Œ$úHÙëàa%ˆÆ/NþˆÅ~Ç*;Ø¼(µõZoÅeÿ×Ù'ž®Ÿxœ?O1Å÷|
o¨§ÜŸ^Ó
!f@bv»g‘Ërißž\²$Vž~Ï9A§Ñ‘÷Î÷­w=óvG]ÍÆøž[o½qnïš1QÌ°åÚ;ÓîË¦7¶ÑŒ–¬é´fî«îÙò^+<åaJðˆQ(À#%¸ó—ëãa9-Tyº‡º/§6m»…[Ýh­Ü4Ž’3ý³µi:Sÿ´ª öGÚ\Îx¦ˆ#K ¥^‚ky³~Î”n@@°’!O©°ÅU°
ù]–). òP„+ÊcÝ;È8ËJð[É%ì|qZ\Äs™Tî„Ih©à‰¢#˜±|`Á¬¼‹äáW])õ"%ŸßLÌûyø+¾ú “”““xœŽÍj„0F÷yŠ»/3†ÒEé”Ò¥Üx¿¨ QœX™·ïÝ·»‡ïä P2`áËF›Ñ.º Eê²3…µ¾ªB¨•7¤LZ×ŒÈ•¯côN$Â45lSq™”¥â=ËFÏœFLôÎ}ÂFW9~àé¶ßp<’vÎ[i¯é¡(‹BuË<9ãßª¯›_U…}œäBo«pMcH3èØxUê¹(á˜îÄ"úÛ¹à¼oh'¤>%Å=uy\ÒY©×ñëSNKŒ§p¿ü•¤>0im‡›xœŽÁNÃ0DïþŠ½£Dv²¶q…þ !Îkï†¥qä8Tü=¥ô·§Ñ<Í´*\ŠDv2	q0ŒìMðÞŽœEÔ0j²£Z©ÊÒÀ'­1MA˜ƒD}o™ÑG´ƒ7Þˆ=%4¤hoÇRá™–,3¼Ñû"ø|…§mß¤gyã"ºqp§­U*§SnMþ¯Z{SUÜóÌx]™šÀÇV–.õçJ«R·¬hGùÂ[»âo~Zð)uËeé•zÉ—-îÊ4uñëð×õçh-ë€RxœÆ1
Ã0PÈRè)²w±,Û?:LI–ÇRB.Ð_«¹T¡oz×r-ûyD¬RÀÃªF1:æ™ŠZ 3DSÑ–úý¥G<Ïuxg2©ä`ÝÒŽÍÂZ÷æ5æþ¸5.µ	æ§ü‹Mæ÷ý½ë$šxœ½j1„{=ÅöÁF^I&„yc\¯N«Dp>:Mòô6Žû¤ša†o¦7fˆ9é•	l½cæèÉCšI¹Dè18“˜©ñÔAéAj´2£²$=)Þ9¥¬f—PÒ€‚ÖþU|ÐTx„}NÜà5]æ}YÞ&~…ˆÆîœµð"µ”b¨çséÿúðDE\Ë˜öpœu†Ÿ±D¸6š…x&½Âx×¥ÿvnK©ÓVˆC¹O§MÍy¿÷=‹x4bqœ1xœm‘Ér£0E÷|…ªz‘ÕAHDWÒðˆmÀv<Å;!‰Á °<äëÛ®Þå­Þ{uîÝœ¶ XOØT7zLi„B#›†ÝCLÄ”3Á™r¢µ([Àt"0Œ ÅÁ‹ˆÙ<æ,"º Ð¢¦E°þè±ÿóÔF™&‡ÔÒ‰{ˆDY:g±N(& ÚµiUƒ-3Q€MJQƒ~ýZÞš®Ï\üºišë@…B…URfmû€ÇY;é"ðRVµ8÷·$kÓ.z~ ßÄ’SÒd	øùwÜáØÀb¼ ïÞ8pÖ›Õðë¯ \—¹Žãögé.§ÇMnOú+wf¥G#¼àÚ»:ŽwN<ÇMîn†"ky2íÝAŽ†1U+`z‹ËbZÝ9\H".­¡k{#·×ÜÙ\ò(£[ôÞ…úáj±Ú¢Y;òñfDæÍ"©ô\ï÷Ê`•=»l¯÷îì}šƒO£ÜèŽŒÉj"YÇ‘Z3m¹V5/
f¤Ú;êÅ~(Z+ ¹Yðœ˜»Ì+Û–îýÛªOÏ|ÝGãiýÁCg ÞD0Çóžk¤Æ:wÎ‡O9èŠ ó‰Š[ý)§ÕaxX¦ŽÕoanÏ	•9»!ˆåÖßÏbìË”gÉEhõú4	Ñ=	{›NÊb¢ Ôö×Šš™¿5Ìã\–'ªUi•ÙÚÈw‚XžRÑß@–-ízª»ò}¯ºÏš6%¯
x5¤”Ê?gÃ`ð½1Åu"À©+
P‹s'šüÐ-h€¸®$hh\h2`4qVˆ_€ržäã]™•MK‹âéõ+˜*xœ‘OoÔ0Åïþ£^öÀ6$›¬³[!D/ˆ•í…ãÄ'Ö:öâ?©öÛ3-‰§dœ÷~oü’#ô=µ-=™^ÖÇºiT#ë¦¦}ßÊá FiTš´8c$Ÿ¡#¹§vh»zG}·š]'[34Zi<`§eÇ4%O!Â£ƒ‡û
>Vð¹xïBúÐ¸JŸÞC#¥ÜÉzèàM½«k¡Â<Ûœé_Æ´žTŽß0§âÇŠå/V›+D<à‰Œut¨5lf¡xëSFç6BÜû×Â9Ûà·`ýª¶ë 9À×/p•¼ý-fUŒcÁÁ]Ä÷b3
~!o¹œ
¾QÞÂKz‚’
›. øáÃb5zØü±Nf eHÖ+‚<a†çPœ†H‰Ÿ*Dmý¸¯.ü¹æŒÞJ™?h¡JÊaF«Àpõ‘æ° «„øži¡¸…™Û&L¿PÜ³G†0Òa9sžMÄk¯»°ûiâK«	ýHìYÂ‰o–'ºÂ^‹|Á,áæïÎoóhGOú6s;\îþÿÿŠÀ†å6Ÿ3xœm’Ko›@…÷üŠ‘ºie5€gp•TÆØàŽíxÌ0Æáa`âüú:©ÔMsWGWß¹‹{N#9:eFÊt=fBØ×(Š-Äs†xœ1L¸Á©r¢’—@ÜÀÆi}n"ë}dÀ4Ö™ëœQ‹"f “§ÿøÆ™•jiLyššrJã~Mû&X&2¸¦Ð¶9T8´Ìx¶T”\‚{Ö}ŠÇº­ùã¿n„Aô´¾¦)IUYÓÜ`/kÆmîËJòS~}Yshã»ð…MœD	ðócl×óg`á-@ä{3²~Z¹Ÿ{( «íÄ&Ä²´—“ãÓk0®ì©y8¢ùJ¿#„]jŸ8£,Âø=0¨*lôžïÇx¶Þ*@}ó¯õ1°.Aƒ‰×ì4jñÝj;èÖÈªºëÅFPò½3–KÄ.ZqqÎÂ@«“îÍÃÉYóu¿•çGçvÝ°©}wjƒ©]ÑH·H3ëÓŠa‘Y4ØÈÚT›•?/Ñ¦ªökU.ÉÂÌ²r´—¸hµ|4¤EÜ›ÚÞæ`uÁs>	Êfád³Ö\l‰ÓŽz,;îWh]S•( [–¦j!wãÞèuÙ…‹œ#X‡,pEg‹I¤††^ö›Á<Yî®%ÁbgúÝ^ªŽ°´Ž½‹\cÛð†ÚÎD¾t0ap‡°{.Ü¨ëÂðŽÛ*œ žœ¬ŸÑ$'NW&§sý €\ëcåofîÌù:1%äRppjóH~nyÝ€oº©aÊª ™ z+ÓÏ¤•}‰Û,g/,“Šò)§šƒ‚×Uy÷óýHo%mnGë?e+NœxœÍNÃ0„ï~Š=¶B'¶Ó
!\9âXm²kj)‰#ÿñö8¥gà¶ÒìŒ¾™˜¡1ÄR!×†­éÐUoò±n*”8X’+^hÙsÓw#1Yc¤néAw¤»{«µ4¬z-0§‹ð„‹ã	Þñcá ÷ôy=cŽ\?@£‹G7mÝÂ]-ëZŒ~ž]Jü_«4m³Š!»‰NðfŽ~©Æ6êóU8“»=ØB•8¦(ÄóöWR›SÄkà“+’·· Ÿ€à}Úí+€×‹òTPy)KlŽ<o¹ÉCþ¡âÅ•2tðÖ†¯Ó_]Å7â``ž2xœm’[oª@…ßù“œGÒÊpNÚ“‚XÅŠ`m}i†q†Û:€¨¿þØžœ·î§½¾•ìd­VP
˜ªÑªØÐlMGZ
…Ð€I‚!b‰¡©wÝV-&± U0TÕDa¶–Ø˜Œlwžî‘jÄ$˜"þçm‹doèQD
†Ì"Ì´lbêŠ©Z
Ôª1“I¸k³Z W9å`‹ÓŠ
ð´ï¿——¦kèãžþÐ4Mˆ ji@VTE‘H}8äm{‡Çy;éðTÕ‚ùõ%ÍÛ¬KïÀ¶ô˜6y
¾Æý ¬Æ+ùãÀ‰7ëÑ÷]è—¸Žã'tÃiËùn¸vgVVèË³&üÞq&ÛÒwFÈZÑÞâè€c8œãÓh=—@œBõvDÓ·¦ÛzBÈz›ï»¹·ãñ )Neo‹_ã~îÆK„I99øp³Í*¶Zt*äa1ÈÇ™×¯{v±ñ!SæËúò®DQj6›âámÄŠkær˜›ÀŸŸÊh*þõCy-Ó­¹bê$­uœ4z÷Ë Õ­´Ztú.vŒ(rXªW?AÙŠÈ \°è$pž,ËpzÛ\Yg2–çC¢S?šŸ&ÔÙî2nÛµx6Ï¢„}½\Ò³WÃ­7¾ÊêTH€œ»>åã4âÍÆ1³ëíê”ý‡ß/¯¾\®¸ÕmÝaã-‚âøš¸p"7™Ûè»Ès×ÕÇ³žý}˜Iÿ2ÞÏ‰I*R
Žç@ÐSG›üº×ZLÔPäÏq•öƒnî­‘¤®Íùoðš_ §PEŸmýIŽ¨+Àï½âôVû»ã/øûÈ+xœ•‘1o0…wÿŠ3&Á6`ª¢ªC†ª2dŒ¾€+0èaÊ«”_¿EyÍÒ^Y÷ê³|Î‘íp"Bc‹®UšsÝq-2/H–­±ÖTTTYÕUÛTl1'òJj:o-Ù®,¥Ê
«•[•gFwJÉ’
cµbfÃ|ÂWçGg|§KûôãÀýs?ÏýHwí<ÝC(¥D¦ò2CÂKÎYÜ\ô_z-2yèÙÜXãÁ1’ú9ÌÏí²aö£ïH	y}{"x"‹0cÝÍ‚0öùdWÄóÝ_
L¦œ§(˜ïØC¼!Í´ŒTÇPçC«~ÎùkeÇ”ÇŒ@† 
@e$T€DjÐ1.Àù±^ÀåeW”¿QÌÂÎo¾?~¹ÅÅïR»ø3^i—x£=»ù²wúÞ×¹â]R|kZk!,k¦½ÃÖ\¾'ßÎ‰ÿ9QziI;ºÔ­ëFk*J.{t½'›Ì]—4¿êúrö9Âk›(xœQMoÛ0½ëWð>Ø‘e[þ@PtØ€b@C»-Àn´M[ZÉ•å¤é¯Ÿbt9¶“ÈÇÇGòÉ;"è$çDy–&˜c/Ê’ª&-2ÌD%«¤ÌZQäi—#›Ð‘ñÐ¢çÔ
l„]EeèI*’©Ìä$ZÑ¡L.^YŸÑha‡ƒ!Ûî´÷ó2SÜÑ$2…,ÒBÂ.8g­=´÷ô­ežJ™¼·2ÛN5|Ÿ:ô£nÉÌÞÂÃ×ÇHÄ<².CÉ1¶Sdà8:j:Q^Lã2èŠó>@'gÍ0ž¡G\ÌxŽá›"69û‹Zz†eÖfXnçüÙ!†'ñuå¼CÌÑË¢.žþeÅ˜±Om;ÒðSaÐßžÞ.ï}ßÄÁ¡»µúƒÌ=<áfÛãš:Ñ\™Ï:ØÖE¶ï£æ\ÿËÕ[úGçÕâàYá[\“9ÄWõGmö5(ï§¹ÞlFë(Þ“34ÆÖ·\ž'—\ä2?FIt3•ýe¹Ò#ç‚xœ=Ê1NÃ0€aè’=C½£Fö‹óì J”•	±wx±ŸEXQœÀ!*E9`á œ Ô¡Û§_ÿçê÷j?ÌB¶•	M`Å´èWiÕ„ ØàÚŠóžŽ£@°¬¬vž}0°ª=¶¨=êŠl@Ã5y‹ó¾¼´²™º@T¦A¨Å)ó|ä4¦ùëvuÂRdÇõý0Åž¢¡(Ä–úCIÿi—è-M±[¾³býHñ•â‰ºgzÛ¾N:?wòZéKƒPmÔÆPyØ¥)qéyùÉäP¾M®™4xœmRËrª@ÜóSu—Vâ ÃëVr+ƒQ¢ ¾ÐÝ0ÌðR <$úõ—$•]ÎªÏéî³énkÆ€¬kœsQÔ‘ÈµP×ƒÂÉ•TEeT£(”…ŠÔ¬h%’"ÉPCŒ¨BÐ`Ut¤©ò TMä‘"ÿè£‰Â05&ªQQ!!Ò8R9BEŠ„D²@º6)k0%EÊÎà@â‚Õà)ê¿ÀKÓ5ì1bÿ€¨ªª8Œ"” hy¹¤m;ˆgikw!x*ÊšUçÛKœ¶I>‚_lq7i>Ç´fóðfØÌg+¼ÝùÖ×] è“š›Œ×æz‘m[ÒO|ÓÑ’¹W¹ž÷ãÏ±3…£ýØ›Öpråwœßöcé ÊDùþ¶³-§Ó‚4+<âÿZ¬5ÿ¶~ƒ]_Ü$ev°©n­–eeLÝõnŠ 0›::<Õ1âm˜géõZ)7Jž‰NeÏíè¦´3Qä,÷N§í?¤<°úbB¼Ñ"ÀÔfï6Uå1j­·þ¤fÒÛ*¤¶AÔ£žœÎ»¨+q›4¨Üc¾Ô’“:èxádïaÄ’1{_Ÿ&´¿-«—»Ž¼³óƒhJvï›Â¼Ü·Ô+²¤»’­ýJMäU»rãR ËýG‰_¹Ú¥‹k®ùš'Úó„´‹ñ5ª°i:ô°ã‹n†÷œ·u°’»÷ˆÏãþY ÏGÅ¾3³VÓß–¬Ž¨ºóÔì½cMþˆª ¯ËHcÒ‡®•´,
FÛ‡¬)‹‡aái,œ„uJ›¿À.‡ÅÆ]oðôÌ@Z€þvÑü"ë”xœ½NÄ0{?Åöè¢í8ñ	!
Þ ¤«ý³NŒîld;p¼=>DGÝ·ÒŒ4Û
ði^´”3Ÿ‡“Îz=+Î’ö£À…/ìÍJôÄA)­#ÙÀÑh©g®‚ÒY¡å&-Q0³·-x2)ÒNfMTàÞ|ÇºW<=À¨””
‘+¸CŽÈ\¾\bkôUO?*Æ–èê^J\×.õˆ.§D®A·â:¼Öœ€®±¶ÊØi£~Ä¶uÞÇêò;•áBÏÿ-@¡ìg‚ºåýìÁ£+¹½‘{Ž=Òrûyüëö+|;ŸxœŽAKÄ0…ïùs—.Iš¤í"âÁƒxÐÃö<›™´n"i–â¿·ÁƒÞfà}ï{µ0ƒeìûVº3Ôä‚gœ&eiî|¯œU½añŽ…S%µê]Ë–{çZÝy2†Av¦½hkØ‘ÒouÊž0EžáŒcâ÷´~Ëmáñ(çŒ±ƒt-ÜI-¥ðùzµò¿ÑA~£"à¥D¿á9§Íýrz{ŸSˆ#„83Ä´¿‰}mpžaWa"!Î'XêÄeK-€¿ÙÍ
±ÂºG)Ç4Še!NqÛGM¡¹|ÿš/>;\xì“ xœ1OÃ0…wÿŠÛ ¡Tnã8q…K%#:ÛçÖ"±#ÛiÕOÒÂËéI§÷¾wWtµW²$×²î¤TˆM'ZtyWo¸ãb#&
¤PMN	S+%ÐtDÒ V
ÉÔu«,¶–š¶a8•CLðŒÁS¸”àÁž.â)O™V–a-¥¢nk÷|Ã93q|)ô_ëÜ¸ù±2‡:y“·Ž‰Áù=TÕ­wg°4R°b€* ULûi˜cì%@Lv&•š uO‹ü1ãoÜ‰ ÙeÕÇø¾À42çS.+x?Ð…ý¹¬¦ñ3O:Ÿs¡áöö=œü<LÂ| ï–,ÃMacŠGog(ì^w+Æ–œ’0ä1¦>_Wèoµ+áÚ«¤Ø÷”fã›Ÿd«è\¥ÏÛ¿^È¾JÁ¨D3xœm’Ërâ0E÷þ
UÍ"*ƒŒmIL%SñƒØ€† 	ìdYÆï¾~¦f—îEßî{zÕÝÖœF#cLG2¢<bá˜QŒðˆ„DÑB5ŠT¤H%­yÞ‚ˆœ0|/ÑR•a:RDd8Â@eŒî©"ÿóÑ SrPå$ÃH–U†4EåŒ+£H	L¹D»öXÔÀ¢yÌSðIEÎkðöñÖtÿòß@FA"kšp¡ÄŠ,‹ÛöÛqëtxÉ‹š—éõMÄí±~ÞoÖD)šX€ç¿aLìéø¶>¦öBßl×“Ç\èƒºn˜º¾2V³Ó&ó6æÚ˜ããI]ž•zÚßËjª[íÍV…< •ïœ²Ä
3Z)V'²úhöƒ[—GBË]G]9{¸¾S'óÎåÌ™‹Ö=/.ëÙnpQE¼o?Ã(³ÚCÔ×ý	I j£ ¬ó
dç:ÛÉ¾IF–—áÙ?7b—d“þÝOšZ`rô[mfÍoå;»-W		%à·;ÄýÁPTo—Z¥[=îÖíÅQ]uClhî­¡~3±ÐZËU…v‚dkÌ–€¦»É€-gŽgxlTÚfÕWžÁ¯ó&‘ñõdî·ÅqÒ×"Yž‡Ž±ÒÃNí2ê¶>—€:s÷ä¸óÝS{ópÔ<HzÙô¦¬·µ`<”ñ¶Zç×›'_=mQh¨~›÷ºˆŸ“W	¼ZŽ_Jÿn6YXß_Lòx-8(»45¯:Þ´à‡ŒÆDu‘†É<§œCtâŽÓ„GqÊ=ÁSvoÁÃzÑý]œ† 2ût—xœ¥Ž;nÃ0D{žb;†®L‘–IŸT:Á’;”ëHT€Ü>Bn¤›0oÊ£–Æ‚“ï|ŽÙgè¥ÒÊUÖçÄž“g>eÁT(ˆ&k]ÊTD{­U]ˆ®®_‚$Çbd+y¡¶àµØ¦.=0ô¾S_ÖÄöz€×UÆuïÎiïÄÞ×Þqmc­ÙÓ±/ÿ2òDîÜèM•ãnI·î@yÿù+)ný Æ´}7AOsÎ§ø}ûÚü LÜl"“5xœm’Ms£F†ïüŠ®Ê%)jm``F¤vS‹„Œ‘õadÉÒú’†¾Ab#ñëC6•Ûö©»ëyûð¾­:ÎÁA1'#›º˜1s;'&#ŽeÇ.šf	¤]hÇ„&Ì0l&\ž$.I‘Ø$¶‹˜Ää&"”Ù&ýŸw˜cRìÆÔa1ØE†C°`,(³gœ²D£½ÊÚ|Úä¼‚MÞÁ×døÙ|—½ä	ÿLŒ±13ƒnX†¡±¶®s¥&8ÈÕsÃ×¦íø¥ºOs•õñÃüB–^R™§ðåßš/ƒp¯Á+¼…ÁÖ;÷ËŸ{4äœÍ=o¾ð¼h­ŠC½¶ûùÉ
{÷‰ºpð¼Û‡z/ÎBöz;ž”ÂÀÙI‡«Õg¿Q§™Æ-*ÑÖ¹è²¶ò‡ž\ý÷MŒ	'Ñ:5ÇQˆ"ßE³õó°?ž†Á6M|Ò .üûÉ6µßïñùítÎ²ZŽ/¯‡Ò¹þªu¯øsì¬ÝV·€­=¾´ôâ9Ó ë­‹oú+î’Õ8¼UÇÍËèÕ§éðÞy,Ê¶xªŠn1ÓÁb//KZ³å6¾ï›hçW››¹Ö ìªLn{eÉè•¢óÑ±¾v‘õ*Fy-n¡‹]Š›çbq~òSµè»J×Ó•/­²"£>j0Ye;ï¨UóûÞ´éÓª6ÞeˆD˜-ÓánÝ<6kWúÓ¦ÔÑ¹dqz†Œî‰ï+´[²o|;p{¡ý—Ùrëÿ:1mÃ»”Ã¥¯*èøµçRÁo&v1ˆ®­¡¦}—yû¥jë˜vIþØLäßjÂ4­ù¬ùŸÀ2ÎJÈ0‘>Ô\Ñ„*
¹„íq½†˜‹é¿àB¥Ì›rª©ºŠ7¿ÿñ³®_”xœ¥ŒMNÃ0F÷9Å,©*ÿ;Fõ ÛãÆ¢Ž+gÊ‚Ó‰#°ûÞ“ÞÇƒ¬Žä½Óƒ£Rf›ƒ³Þe™¼U&}°ÔEOw´1xÌI“J œEqÙøh¬òÒK’Úc2'|ðÚ¼ãcÔŸÚaé-âÈ^Ûío^åùœz{éœµó¬”‡g¡„˜Û*3ýãbÚ¾½@Z)}A-ÊõÜˆ1##Ô>>—"•>î¸ïu»Beà;mO§é3E[¼’3xœm’É’›0E÷|…ª²t%Nu§aƒ±Ûp{'˜Ìd&ö×‡t*»~«7Üû6÷´‚s ²@õ R
#Ê5¬r®3¦¡‡"ÎQPK5¼lA±¦ ]6h¨ªÈP¨+:”¡n(Ã Ê“ÊVø½¬LxÀ¡®ÊŽ€:T#„9”eªTVuJ´k“J€)-SžŸÆ%à…õŸÍ[Ó5üã¿€‚±U‡ŒäáVE‘¶í vÒvÞà¥¬¯óÇ[œ¶Iü_Øâ:nÒ|ÿ[dæ¸k°u¶`ï:kópôfŸ{	H oHHL“X¦¹#»E¶º{Ë#K=É´Í]nošs2sM;8‹ÇØë’5½„øD¨eû·L‘Àõ(û‡¾j[‹…-öŒWÔŸ8çß–Èõ»Æž	:Ívj¶~gUŸO]øÛ£Mœƒ8…KTñ*7[¢£W>×èz"WÃ Ïé³>”Ç®ôñ6ìÍ¼·‘úÕÆò'ÈÝ¯på àxëô\ãtY·îy
;W[ÒÃ¢bý‹Ñ†¹Édæ.é5Ù=cThw{ûÔ-W×“ëœç@èürÙN%pwH—ÅL¡Fëdôj,M<«“$¼Ì/QÝm*/‰æúµ2üw4íµ£n"ãœ~l©.Âò›uqm?/VaMÎÔFÐîšølÅË,
>faŸ=4d‰qs´í|A²é©Î›‡BúW	¼ÂÕa!ýËl¶ž~˜´â"æ îò~ëxÓ‚o
ž@‰ª "Á4Oy9.h3€#IuÞÅiÙŒ{þ&c éêºí‘û5Æ2`"½ó?Yûæ™xœÎÍJÄ0à}žâ¾@k~›:ˆ(3+7ƒ¸¾Í½#3MIÓßÞ€®ÅÝáp>8µ0Ã`¬
š½¦àÑaôQâ„FJ§0pD£’Q,Xx®àM`51EŒÁic”­¹Eo&7ÖXß¨·¨nõ=xâá9ñw-öç>)ô!_îA5£¥½…N:)Ek/©VþrîŠå¼Ò¼Þ´É‰`Ý–%—
±½8¾ƒ*éÊB¼.„•áí°‡W.kÊ3ÔºW½â˜N3S—cì¦¯ÝßgÄ7Nèenš9xœ…RKoÛ0¾ëWð¾&ð#‰í"+rX1`‡Öm=Ã@K´­Õ–JN–?ª	Ð¢è6ø`Q¿õE&‚7ºi›ªlÒM©å+0¯u¾Ygëºª›<¯šÊ”jL.B·i«MÑV´Âœ«:[YA™.ò¢ÊtÝ™®*Â9žá{ÙN-qÛ å®¿”Ë‰n ßlÊº\­ËÞee–)í§ÉÆHÐYá{'ÕÖŸ»0ZšsëªuU&­…´ª[¶:\Ó‚	ÄÀØ ýø£ïa=Áq øâD{Ù£ð0IáHG2JÝ§‹s°N‰ƒ1á­¾p¶{Å÷|ªF(ÀÙl<:º¤'úgZÀ.™GiGº‚##+^1E¶t À­û›99ñlBPGB§­Ÿ#ì}¶Ié]/jâ€Qœ`@ÁôZÏÌBdfN~ã`åŠ„-¼¢9(QâbL²âR©o{ï’ÚG++ß‰ÙÐn¿ß~þú^à/@É–FV?†ˆür¨Þ©d~Ë¸“’7ŸI@­–ÑxCg#=I80ÒùÑŸ´‰ ;+™1ßu‹ötýß8ª/KGéH·?á$cº›’¼í¯þõ|×OhÇ¥õF=\RyhŒp/ƒLâ§íPÄ!÷ó$:~¼–ñïd«?yTA›3xœm’Ks¢@F÷üŠ®š¥•	ÐÐÀT2E%""ÆÇ®iš‡ò²Døõc2•]îêÖ­s7ßwF) ¦F*Ö Q$CJ0Š!V$IŠd•ˆ„j,5f´l€
ãX×E¨QDU“QSY‡!Áª.SM5EWECùæcBˆ†]‘TjPF²Rª‰Ê!"PW#LŒ¡€Û&­°p™ÑìqRR^¢îkyã-§¿#úH)22tY#QETE‘5Í¶³fÞ†à¥¬­óþ-Éš´?€Þ’:áYž>g<µ.ðll¶k;úu€ :>&cÓOLs3Þ,Ï+‰?v´ô¬¬o-:ÓÄînaÚŽ¼gÝ)›gsN}ÿØì¹ üj´ûXg'„h»£ÉínÐ2·FFuØ.ûƒ{æÇxBŽ2^-a²sM±Àóé"Î+Â;ó" q´®ñ*ÐŒý)¶5vIëU”\ÖÚÅ¹Ë¨¡ÒáC%w#;X\\“÷þ:PžoÖI‰æþ0K‰ ÂÓE-.õž}TËEqt7ÅàÕçˆ&ñ’}æ…UNú€Í¥Óa¤¬z(âÑ8èÙÝ#ó» Êš{u™ëÊ;OÙ´¾Þ[m‡›=žµâlÌåABEe-ž‚Îƒf-W¹ç{›ú¾¿Z·ëéöÈa{ƒòó<8ÈfS÷êGu>­aÁW-î»ëÐù4` ™l—is•Ä5›[qDâ« ^¸Î„ÿM]ëçÆ„e	u›ç€ÑkKy~IÈ@ÌªLªˆNª’7¬%ÍsÍž‹ì)ÎXÑ=t„òVÐ?ÀŒ"Ð1\×”q?¤üÀ§l¸Œø?ÆL·xœ•Ð=OÃ0àÝ¿âvheÇù¬‚HŒèâ;7ÄŽ§Uÿ=B­Ø`ñrzŸ÷Î10ƒÒUAšó
+mre¬fƒ¥Õ˜+¥(3:'Ó6v¤äÚ”ØXYÔ’™bk(Ï-Yš45¢–mV)Kì|€G<žà‰C€›Ï;ã‰ws‹‰[ãÇ-.· Ê2—2½®d-¥Hƒ±‘ÿdeY×Í ÜaäÜÁ1à4q˜Á¦}lÆc:Öt4ñÚõ3˜Ýž‰fX£ïÄ‡ßÉØñ%Mþè‰¿Ì>žékÀaðÇÞíáyH!<?|÷9¶B¼18æ$A»ŒDCß®+œ[G†Óê¤ä¥-és^ú½cÚxk7íi÷·_©õ›xœ•MNÃ0F÷>ÅìX@#ÇŽÿ*„;`É	wÜ;rìF½=nÕÀn¤™ùÞ¼)˜{fÕŒ	Û÷½”Œ›)ç¹Ü8ÚKG…ád±cÁ½×šr…Ò¡˜=2ÍGg…f¨zª-¨ˆ­å”2|`ÆùŸ˜3<ÿ¼ºt@—âZru¥siîl}†hCITSJZc¥à˜”ÊÈ{ ™ÂÏ3v[¶ËÞê¼@I •¢ª‰òÁF¨KKñîdãaÃ‡i‚Í6Óµ.KÊ|³('ò¼µ'ìÚäaj;·#[½>Áš`¼ÚÜW0œ1¯!Å+z­¡t„|…cÄÃ.y¿/û¿é‘_¬Æ‰O”3xœm‘M›0„ïü
K=FmÀ|ØTmU`!!ò±É¦ÙKeÌ!$8v÷×wÛª·Îi4zæ2#; ¤À6Î¹A™¥ÃJlZ`XÔvmTwiQâ’ÚuÐJd–,§ É©]¸T§N‰	ç¸…u–3'çÔ¥ÜøÇcS§&u™Eä˜ÙÄÎ,È“[®ÅL‚ÍÂäÓ˜’'Ñ¡ÖÖpAVµÐ¡/ÅøÇ|ïUŸ
ø†Ç±—º&:Öu‹ëµ–òžÕr®rô¥Ü.¯ß«ZžTþéøO­ºU}]¡¿å‡³8CëÙ=Æ³ÌÛí·áŸ\C{Ÿûžçž·ñ7‹sÊæ2ØúKr:[«ÁìâÑóœvŒ=ïôVVÎ:ÚeaõÜåñ9§XCŸôô.6Y¼¹a§Í|º´“\ñ+ÉxÇå42bU¼‘îÐÛ[Ñ´Å ­»¶¨4téÁ\ïóã¶Šb‹b½]ÝUÄ‡Õ‰¿†^Àåªf;9ª£Œ1{t{R ˆÙ}Ox>yÑ$ù3.§Éó…ò—m´:ÉMQú¶j` PˆK&*76É-.wî¨ÛlÁqa§³´~K]­G'Ñ—]ã>	bdn³tYº=¤“}2´çŠy:}piÀìÆI‚ÃÆèœÉD]4Bßw0”ó¦Ù­LçõÂ'Í¾a~mvydYÍKªÀºãW;YXáyÿ#Úêñi!è&‚v¹Õ|ÕÐ×A;íïgaöðÿÇ´º
ÐM].¨ƒ»‚^¢†ãê¨ìÄ¢€@´½ì—Ó†©ª[i`ªiJÖ—Ï(ª_ÐÞƒŸRüä7…D‹òºúmQ³öÍ6ý€•!xœ•Án!E÷|Å•ºè"¶5“`GU”Tjí²•ºŒÞÀÃC;qý÷}n¤®›BèÎ}P3Œ5ÆöÆx2Ö;§Þ|ÎYêÆ¡“åI÷ÆªNvìGmG}kØúÞ’0ƒSpÃÞ÷Ú–hžZrÁ.¼\ð•KÁ‡Ÿ¿]öìrZki®î\^vÔ ïî}0öVã¦Ûw’`‰µòûÕjœïñ9þÆÌºß?×üìN9aŒÇ-'))õƒáZ¹¾l¾`¢alGœ'Nš.5¦#BÉË«hZqæ÷óŒ,é¹ÄÊêœ‹_Q'ªa¦ëà‰Ù£f&¿Sêi^óm•†„P¨NBÉ„w1x¬YÎŒŸàH@'Ñ([^Nqf‘|o%­ÈíoË«_pwå&iá²"ä«3®Òø-ûma;^îÿï#Õ“û®›5xœm’M¢@„ïüŠNöhvå£¡!™Ù,ˆ"*
Œ3FoÝtƒ­Ð`2øë×ÍÞö=UÞ<•:Tu’1ààÌ6i&U©FUäGÍM†L„‰£©N†rÓ2°Ò`ÉDÑ‰†ˆfQýÉ@fÐ`8Ï MuB„14Ð?>cDSuhcÆ&!j47ˆPF´sÙÁ†‚ûî\KàcÁY	¸L‚:|‰_mß²”ýšeAÍAªÁDÕUUÉêªâ]÷„Þ-{^D-YSŽ¿
Þ{òã	üÇV4EËðýÏyó Ü‚8ˆÁ[lÝý{:ÿú+@Cëežëz3×M¼du‰pp˜¥Þ/pw7d8¸n·¾†nxõ‰·`ÑÕ‹‚À÷m¾ôV©
8¦l'Â;¥.ªàç¶_Øö‘›çÛ~¨ý$ZVC¤ÛÃ\4ÕL'¥ñA¦hv¿ìÈ‰Àô$s¡€sŸ|¸úûûÄ¨»Ñ™÷ÆçiWX÷|[ír¿Èç¡i=÷WÛOƒIÉ6gZçXMé"Ö"DŽÕ$ã*¸þE]¼CÑ-÷Ðcq’Ò]º›ÓGyÅ³,…×ˆH	¥»É4yøj© mç3ýÃ;OÅtý0nÓÆÇå…;¦†ûÝÜº]Ì]³ÑS™4œ'›K–{ýB‰ëQã1»m0¹»§zí!fÅñHÂ žœöÇmÆW5­¼¬XÝó@½°q:7i%0|+'R½¿*àu}åogó­ÿÿÆ”ˆÉ‚¦/K Ù­gm¾i–mƒ\Ö˜Õ”ÍjÑv²Ïº)e÷iÆ¿g²n[Eq)–‚‹äü“µ 
˜À¤dà‹Ï15¼Ä¯èð3¨kàïÔÀPËk^ÖCûïÁoŸ!xœ•»NÃ0†w?ÅÙi»mì¦Bˆ‰Øx_ŽkÓÄŽl§…·Ç¡ÀÂË‘ÎíÓ§¿$Dè¥Þo{.Xg¨a†Š^õÔv(:!UÏh¯…íøV’I&öÜ`Çd¶Û2ª„›Îh®¤VZÕÉÝP&‰œ‹‹	1áøO˜Ü¾žîu4¨cÈ%Íº¬u×r¾ÆùŽ1Êƒº§”ÔÅèKÁúnÇ¿äè‹›\b:Ù!^ò¤1 Óè,È``š4ß:Åœ¡r&¿tõ)òìO'Ï&`ð*œG\Aq¾¾8Ž¸P3È
˜§úíØ|‰Aëƒ/Ul£8„ßfÙ~Ú­~Ú)^0]5×„<ø7¬·®”)ÚöJYhæ·fQk—ÒèÁ·>çsËø^òâM­mÔûáo‘’Æ.µ5›/xœ•’O‹Û0ÅïúÃB¡¥NˆÅvBYz*´½”îaËXÅÚÈ’ÑŸõæÛwœìe…ö2`æÍoæ=9G" C]}PÛ®Ùïtm:Ý˜Ž6{ÕsÐûiZƒHM'&Œä3´ý¶¯Û¾Þï¨ÕÛ{¹‘Jî’ÞÖZ¶ˆr×
,y~P¤ñ?)Føò|þª‚&|Ê±¨¼Va\c¹‡ºidÝqéàó¦Ûl7F›3ýà°—Mýþe¤
&WNÖ§#û
OO¥‘°º‡â“=yÒà‚?Ý
¦TÆ)[&ñH0à‚
erÁ S2zE	æÁªá6@oL› ý{l%n:nùÝŒ—y P˜h-Ä7Ngùœ¢õÙ|ü&Äsª`&˜Cq¬&tî%1ô×ïïº‘ô%Cðà\#Åä0/c<d3¯çe¯QÅ°ìîc8“?.mzÐk¸súŽ÷œ­ø«ƒkYÃC¨@‡¥Ë g“ØA^0ïäâ:³ÄD¨+Ökx.¬ããáƒsš-?Ú<ÜîSú]­*&ó3N–sžYØßŒÑ[J‹Q¯¶1ŽƒY¨b
3ÅI5Ò-1>\/XcVýåøo¿‹ø¡ÿ®š2xœm‘As¢0 …ïüŠÌìÑÙš@q§Ý)ˆ"¢(•zÙ	! Bñ×oÛÝ½í;½÷æ{§'k! …ãX¥\Õõd,˜ :‰1R?³†	N4¬#*’(R*V‹B‚˜
qiÆ	ƒ4BªN#AÎ!Äj,a"áÉ?>Á1ç‘6f”3«r¬âÒ1S2F(bHa­<•5°X‘‰XZˆ<ÆÝ—ynÚF<Äâ'@„`¤Š@B…——K&ålgrÞFà±(kQåýsšÉS=| ÿ™¥UÚd)øþ)sj;ØØðâØžì¶Ó¯^
è“›†aNÃ7ýÅÛjïv“­éê§7¼¾jµÓ†%¦Ž±œÍ_ÒÆ³Œ÷[Yš—Ûèh%
Øç‹“ßóÝÈ½åí)¿ùnç:(
=Xwçk7™É­?:Úˆo	šf®ëCûøš¥wâ]æ±BÓ=¡vfxá¨q?X·û¤õÄ2W·YxGe§Z{vI¾^¼s/TñýVµpÏlþŽ†
èûrÐpt®½´Ô<œiä¢Þ&óÙ¤oÏƒaeeGNüZ§æ¬^žÞÊ‹ÃÓ#[UTëKKÙR…Ú8îcR}|\ûS2s¹±U,òZRä˜jöŸxn]à©œŠ´ñcòJLÄY6ïOÙF]É{|>CV^Ët¦¢«µWsåzËÎßC¿[ËXïúî~@;Š¤Ÿ>)àÉë¹òç³©gýÿ1e%êT€ªÍsP‹÷V4|C„Ž@R—0)c1)‹FÖ-—ÃX\‡mVH¤REie–7?À,»¿Ý/	Ú†¥â7Ñrù÷œ1xœ•RMoœ0½ûWÌ±UwWxXˆ¢(U«Jm­”ãj°ÇàÆØÈ6Kößw ‘rmoÀ¼y_CŽD š¶’G#9I]6Ršs)OUÓà¹l”l°>•µ˜0’ÏÐšæ¬k‰¦5mQIÝvƒš®’meT£Úc«•.:sB„i¼ÁOŠîÿ<?ª IŸrœU>¨0p~ Y×¥,ÎmUÂ§¢)
ÁƒÑæLÿGÐœ«ú@ÌÙºtßìÌÖgyl.æ„=	ñeŽkwÛ¿Ž´WÎÂb20ådAðp:î;›ar˜MˆcÚ¦w6aÓ¶€W´;G!~üQè{ÚA‡‰ôÊ“æ¾§”-ÛÃ_Ñ[rð„½çˆ÷zÙÓœè éa'PëaŽ¿y¼¼‡È·‰É—Áª<Ôœ2óæpáb¬ï?|föj•dWß=„¨Y)ñ™ jí—ñhûa¸`ÔLL\YÕß
Xx;	Fl‹l„¢G‘¦H‰‹ÄU‚ÙÆlr[Zmàióe]®Ñæa¤lÕê¯ÁjðÊ®×wîN»W‡
c¼m\ô29«,_ŒÓ|v)ð%´æÜiD>[ær½¹~õ8q	™þËr·zŒÙw·»ûŸÄ_oX1xœm‘Ko£@„ïüŠ‘öhe=00€”¬ðHÀ6vpðm€áaÀ˜áeï¯_6{ØKúÐju}u©¥€O0JÄXV‰"«"T	`U*‰ÅqœH1V	JUîJ½@a–e#ÊÓlq&jŠS…* ùLÅ
ŸòŸW‚ÌxA¡œÊ¢Œ$œ%iL–åDÍÔ”(Y92EË€A.%­Á‘äÊÀc:ÏýØÓŸ)ýxŒE^^+(@È%mÓ”Ã°ÀV9Øc/-£×úþœ—C1Æ?à[~Íû2G7-Ç[köŽåk‡Àüús€s¯'º¦é/š¶ÓwîÙí%Ðßäâ,n&Äœy¼ÙÑœ6â »‰&øÝ Ž‹·90vU>ó[ÆÁt™ñ]~Â&;ÁÉ$ÇñòeƒúÛtß"Êm~.g«X%÷!ª+˜ö›G¯{av¾r¥ÈUôqÕ|”—•Z×ÓjþŽ•òæUª"ÞôÛ$Ù¡·Ôâ¥ÑÞá*ÀZC‚%v6ökqçz
y5ú”»«Ÿoó÷ÔtkÞ•Ò ë«½ßè]6Ø°ót½æ ´3º/ú®öOëÑtåÈçõ«—œŽînëž¡ˆîÔå¡²ÛYªµ®YêóÕz"½å@ãÕk?ÚhaoµPW¡ÀøC…°ÖuäÏ­yšø“z·ÅàD&›öP×,1¤¡ä¶…óÄ§;Ý•Ü¿ÎLßø¾1Î£,§à:Ö5`´i?€<V0ÈXÛ€2'ó:+oMÙ'V¶cú†,|<–u
•ö V´õW‘3xœm‘Io£@„ïüŠ–æheLC³’QÚàÛØÆÄËeÔÐÍbö=ø×ÑÜR§Ré{O%US1dIBô|¨ð)T£ïŠDF¢¬Q^ ‚
"ª+q©XÖ ÍW*Câk¾ÆKj.Õ' 5É÷TO4êQÞýÏC*Pê»²Š˜Hç+¾¤"AA#ŒUõò¨È‘¶	ó
$‹XN$ÈX^iÿeÞë¶f?)û ,?+‰/ð<çåi5ÍžGÍ¢uÁk–W¬H†÷ jÂÖýù ¾9Š ŽðòÔd:_nÁn¾ör¾ÅGç0ýÊ9À¾žxŒ':ÆûÉ~uÛ8ñR?LL%¼!««eqÔM—w®ÁõÎî×l‹qs/gŸ»ÇÂ&ƒéÙ©Çtqê®es¢yÛ;§˜†´å¡ÀÝhåçñlYn':Ûc•·¹<’jÊw(´CÛ8²9	8ÈCh:ý¸›Ù’™ó] šh#¥®ÇûôIJ/ëÆ‘<3]'*Ö')Îajõgelå÷IZØ’u9]Ãzußñ`´s$Õi'ñ‘ë#/vÍ1]Ó³	¨ábfØ&¡3o¶Í¹J™•Ëë`íQ¢,ÊÏpkCÒ-˜%–`·j¬ÔS=æÀA¬ÉF^66ð¡tš“|œö÷«°aýPŠm5rÜa}Û7ˆñ+’õ²s‰m|Á$pŽÒËÞzã2ãþm6Ýß/ÆmX0P´I*V¶¬nÀ(+ð«<)©š({qYB²€Uã–²î¥jÆqOû`JÁÂ²–3¬OA“ƒgžÈ_†#ý-•/xœ•’ÝjÜ0…ïõó ]Çÿ?¡„¤¡%¹	ìB/‹,lQY2’¼°oŸñfCMÒ›Ü£OsÎ&zDÈ×•Â^ee®ª\ÛTbÖ¤¢iDÁsÑõUQ#›¹GAòRæ\d]Óª¶“iÑ5e]¶™JÛJä±’5¯DÆøGçá‰û¨-ü@Ãí€¾OçFÒ_·I„›n «ë"mó¢*`—–iÊ¨;éñËSº:kÚö2…-×p'%<<ïÝÝÿ„è`íƒ_2vqûè¬9Ÿg£1¬äáþ„³EÔÎ†~haöî¨%Êo #(çÁD²I“€C˜Qh¥hKË(.ª‘Kp
FZe€H¼[ÞjÞ“-Iß$&°wÂÐ˜ø‰tQQäë,
ô>«¶‘#Zéañÿ•Là0ê b\S%±¿´RX<ÉãŠ³MJäH®.FXæó°™<j’¢CùçjeÖG©ƒpGô§5¡è1´7ÁÁ€1\ò–ïôãÕ3l¸müŒíõ`QîœR»þtý…ó`¯¨øœ3xœm’K›H…÷üŠ’f‰:P0JFÁmcwcŒM;É®ž<š—0v~}<Í.wuuîw¤#;)! —smI|N-êJGXÂ—Øw ç‚QhR×gžå;Ú@”è&À|G
IŠäùÜ2¡ËMm“@„z8‡ÿóáHÈ¨…Ã³l!¶|á™ÔFÐ’È&“X#óTö
¬IW‰œIÑ	>óå÷òuœGñ‰‹ Äù6ò}è¦ešëÛ¶š¦UÓf¦às×+14÷¯E5•3ýô þ`+†b¬
ðôï¬Â(N@¥àGIpÊ³ð·®,ãŠ­‚`õ‡Õa[¿²?g«[ÖöþŠT¼Ámâ ÀcÑÞY}‘¸Äò[.sjó\ß[tv›<kÏÐ<—á¢×!:'û[ÙºŠ„ïñ»o˜Gò!ËÝ5Œd‹ž­ºÂÈí4…‚Ç^±Ý&QFéaÐñr"‘%®Ý)‰›þ*S;I÷8-íå6gå[í»Wu:ºwÝý1u{†¶yqèíüR9É³øz}qf¬N­¢YÞ•%ÚrozËÁˆ¶iêýä~õq¿ì¢µÑ@1rŒuúZ¯_úå{N{zlo´Ç]m¢­yzËëÄ€/¯ãå›¸»þéGp©†ûálë1Ë4 îÉÚ¦ºByÕº•IdV8Ý¼…Qj îp×8ülã½Ž7W7Ùì?Ðqò"Þ0~ÑÀU†‘ö_ga²þscÚ›P… ÃÜ4@‰Ë,Æ	ü±‡€T}ª‚,†¬nOgO¢›Û'ÖwW¡Æªï4mhæ¢êFãqüœƒé>ÀÈ(€|<§dš• ÿ+ž ›’2xœRQkÛ0~×¯¸·l¬vå(Nb3Æ
MÀ°õ¡íÖ‡ÒYwJÅlÉÈr¼¼ì·Ïv¶1Êè$Žïôî¾»à‰ uªV-3,çåJ§4§L/³4A$U&¼\ej=ÏRÖHO6€ÊRMk)×B—"ëç<Y!O’—‰$¦Â„É.<:—ÒªàNî-yx‹ýä¼o»–b¤w,—"b!Vð†Ï9gÊÕµ	þƒÊšªÛÛž÷¨r¸@„pl”l	ôP‹&:O`1UI»Oó¡e,ŽÏ#'²‡šb•gœó\,sè¥·Æîs0uSe-œ=o³ ½«lW“—a¦ŸgWŸ?nvÛÍÅí§ëÍ®¸Ü\ÝÛbs}3ƒWò«„ÙÈ€Ý³¯^Cp€Fkš´ÿ;ÿÄÝýì­ÝœÁ}t7F¢_>0x‰!mŸòøÁ´á¾®¿=ÄúŸ½,á÷çìËÉaìÏËƒ3ôH'íc(dUÏ&ôibÐ»®B°.0cƒwØ)ÃÆƒëí$dÕQÌØV#§uTómû6Æý»ŸxœËNÅ Eç|Å™›jË«pcŒÿÀÇ8T’4@5úõ6Æ¹Îvv²öc4"j<¬+’p|ö^íyäÁ9´‘ÎFÄE!g;6*¼“h¹_Á9(¹pMnµÖÏFçŒTQ£¢E2<Æ[mð„%Ñ^q+Ôà>|üˆÇ~tºô ‹ÖÂJÁ­…›™Ï3ó5ç4ýVý¢l¿[*ý.'ßj™Ê{¦¼t_[#?`oéükË8 ïäSLgöi@O_T#`ÛŽ|íŒ=§³/L5ÆÉ}^þšÃ¾bRlrî€]xœÈ±ƒ@@QéÊLÁÆg0®3…}¶K!ö@·d†l’ëþûßò”ý:#&LD\%ˆÏP	­©¦µ…‰g@!òMôõÑ3Žk	
†S šSÔÅVÇm(ÇÒjÜw(ý~÷ßñ!r—xœËJ1E÷ùŠÚËHÞ".Ü¸E\WR•10ý I#ó÷6þ€àîràœ;3HeŠ,6»4qô:Å GœØY;aHI+D6^èÀ9•HÆ3:½	ÄTŠ^²YûøZ<ãRù
ŸxY¸Á}ÿŽ§¾w¾'~å½‰:ªÉÀÔRŠ¼Îsƒÿ¡Šíº_êÒÏðÑ^ß^vo¡¬mÆ}ã\K=B oS0nw!ÞëÑ¥ÓZÊ)ÝÎÝŠNaìžxœ1kÃ0„wýŠ·—ÉÏ±­J‡NÚ!”ŽF–žb-é¹!ýõuC—B¡Ðí8¸»ï8µµîÐÕZÚS…­Á+¯V×Ûf ÓØ¦«g“)2X½óÔÓ¡p‡v•T­“JÕÒ(DBåœuJ˜…Ç”áÑÄ@¼™S¤w¹‰‡²Ú:ºÕ4¨+-5Â¬¤6Ís`¦DE|ŸisÎ!ò^Á²*Uuðt|y¿DË!Eð+ÖL.˜~‰KÉ_{Qˆ_L’¾ž	úþ»¯g)Z‚AÓ29X™€GZés&Ë?Ç
å`¦ðâ	8Ýh¶BÃzÇm’÷›áºÿë­øxiŒß3xœm’M¢@†ïüŠNöhvº¡!™Ù*"
Ž:^6 "bÓàÇ¯_w’½M*•§’J=¯à g˜ÉŠ®`€Y.SY¡Ibš&30NI¦«@	èRÃ8ÔQœ‚’@–³<ÕTŒbl2ŠM×	&4a˜¦þçõ\7TM3€ C&TËÓ<!¦FJÀt&±N”gŽ&¬ÞC…6¬¨£—ìúÕ¼µ]¿2ø]Ç‘Uj ¬Ê²”žO§½OØÙ‹Y— —úÌ¡©îoÅ^”]òë	|³V4E»/ÐÏ5²7@gb×	¬ÕGdÍ%$¡k;JG–5[Ör´œ¼‰µG£wZHØcî^-+æ®kyÞ`YéµÜEõFÜf×7»˜ò+w÷'»¬Òñ=”»+¯Låø˜Æ•“®íPù|\*²™ˆÞ_Ð[œ]†î§ ýYn|Ue…„¦¥o^v?Ô˜›N¦ï÷÷PÜo=.äÈ‰æ¸æÙJ¬f]a*.žíçíå ¦Á¶\4G	­úÏ“åFU0yÞa”·cßÔöÔ=2Í6ŽÊÎoëaÕÀ%%²ÆWào‰å/Ê+™”ñ´‘PA§Æ3íÀ¨œÌDÓ-oÇ™¾õ‚ª_Ëî.úœž²FÛ.;m>Ã¼¯O»á¼›³vê^SK¨ýÀ.Â’_|6ŒÖí0hêDU#ÿÔ›ýR	Jr­üMÜæŽÇSM´›‹Øñ£ý*¡WzçÏ‡~¹±ƒÉ÷Æ$x¨éª
q¸tÐ
ôã©_E9?ŸÐ–p&X¼Ú[qûsNIbY¶¯Ž(-Y]@‹ògc`€2¾ï¡ý_ýßœxœ­ÍJÅ0F÷yŠÙKKšNrQñîL2“ÞÀmRÚtáÛQÁ­àöpæð1en–ÞÌÖï0Lˆè‡nÂ³hwBŽ=©vI<ŽV‹3(8‰L£Akzœ&¼™œaczEg¹åÞÄ‘Û©¼ÒÎ7JðÈ?¨u_èùZ¨HëóúÝ8öqœôÐkUéK‘‰)Îþ/Ì@‰áÜ¸ª°ÖÒF‹êäï l÷s‰I©*Ç´@=<×ú*1'È®¿¼&&øÜY£G«Ô5.I¸É!4îýò÷Ýê÷‡yŸxœ­ÐKKÄ0 à{~ÅÜukšG“]D|ôê
Þ'É¤¸mI³+ûï¨?@ð6|Ì»d"ÐÞ 4bÏÉ6JÎÛ–”	×­PÊ´IxÎVÌ4Þc¥±ÆZKµÚ(t^Û ‘{k¥[†§2-zrè2„GÌaÂnÃ/5î›î7Â5~9ÞAÛuR(Ùí;¸âZrVõ˜J¡iÆÖÓ˜æíæ'í !ÀvZ×%ˆuã×§7Æ*R€™>ÁÑ„çT7Ó\Ý] ¯#}}HÝêåý™`zVò)&%-ó5œ)o5 Ñð†±!µt·Ä¸s—ÃßOa_VçŠwš3xœm‘[s¢@…ßùSµVÂÃÍ­d+ * "5aß˜á"7aPá×¯›­}K¿œî®¯ëtÕá-¥€Q«,Ô¬1™jCª¨êLÒb„$†0’$	ÆBCZZqª±†"êP§ˆ"I—t=”qüÐÉš#SØ>Š F‰
•Q}J)™ê$¢jˆTª³c¨•R5HÏÓº©2Z€’T´/ñí«yëúŽ>Çô@ªŠ‘¢A¨ƒ	” ¢º,3Îð2ãv‚—ªniSoIÆÓ>|~ ßœ%MÒe	xú[æ|éxÀ_úàÝYzÆá¸Ÿí €[gF¦a˜3ÃØ™;7w¢Ín¶7WZšËÛ+n›a,>nŽaøIÜ„Ûß+åêo‚ÕaRd…" T>CÑ’ÃÜ¼¸²Ø;cŸštt“-½Ú—ÍjjNÐ´Uêý®<Ûönv9ÂÒ3}é¸ð£ýL?	`0“·Ühé^¢[Z@ÏÄ°SãKéº,Vr'ß«bxbkI5p0³;C–F	 K/—j;õ;Rä†BÊ’Ý:q¡øùä<tëÖ²l‡¥3,·‘=è?Pø9)+™Ý@îø”žKÛëË{EØ\áâûh.G¼v«y¼å¬ÓÕ&Ë»­kÇ·.„ì|š¦C!€|”È¡›Þ“Í>€’s½ÜrKâ,šüz:æñ:;ùä°~¼H=óÔ‡A,à<r¸ë60xÀëî{á_fsÏú>1aCÛ„‚¦/
ÐÒKO;~ UÓ këðp$œžÅ¼««§Ž·Y•tOXªkIŸšÇÈ›TqAw\¯AZw<‹AV÷}ëºçMÏÿ ‚Ó &›xœŽÁNÃ0DïþŠ½q ;±!„8 „ªr >`³Þ‹ÆŽ’m…øzZDïÜF£y3#33P0M«µÔÔº%´hïj"ë˜;ã{Ô¾×jÂ™³@Dk$Óµaº¨›®µÞ³ÕÁQMÌ.ztdîe(3¼•xøFáO¸•þWÜÏ”•ñŒ÷:—ºÖZÝ1‰ðaãœógXåÃÈ×Óœ²ÜÀæ¸cØ¼¯×0”ER„”áùõee/Ó^”z<~œ(1D>$âdà™aLƒ@ÏË™Ä¦ö;¾:•.|ÊªŠ…ªÓhõ—Û¦ãd,¼äþJ‹¬Ôy1t#›4xœm‘I›@„ïüŠ–r´<@D3Q06f ï¾5Ð,6Óàe~}œI”C4uz*}%½R=¥€ )%‚ª
±ˆ4%Öã”dTˆ’ŠP‚HB‰NuI¹Žô´@Jä’DÔU-ÓôTtUF²&f‚¦$0¡TIQ’¼¤ª*¡Z&ªŠ„
Tc¨dR¨®§‚¨®f	GÆ¡h{ðJš’V`Gò†öà9½~?ÙÈèSJ !I”5¤A0  pI[×å0<`§fcž›¶§]uÿ™—C1ÆOà‹XÞå¬ÌÁô·Ëq}8X¹Ž×›Èúô9À+3cÃÄ84ÂùÉ%‹…µ8Éo©w¯›{ËÅÞ«»'áÆÅ[±ÅïRÈ>¼‰õþÊ^8zLZºVqè‚=£a7Ÿcd+-Æ)©/Š‚‚GÃÛ)X5¼w×¶oÞòˆƒù‰n¤÷Æù#ÉMA÷›£qŸé!ŸË¼íÌáŠ®Éìµ‹æìÆUlÛwAQùÕâµmÊ®Ä­ZûbQÜ<ŠCiWì^o½RÝ^ü±¸¼Í,ÞÙæ…¹Ëúübe§Pqœ{UÉÁíPÆ˜¥èy.gù9Š’¶,~gLfËêxˆçG)^T¬Ýûpì!ëŒõáön“ÓbÒOÌÊÑ­Ýî|}üPšuWmÏèºchm½ezrí{¡Âs—nXóÆÌå÷µ©ôíÒx‹K{hs-dƒlW›¼d®Ë¸?›Yþë×‹qKÚçtcUžžGÊðMD*YßÖ ÌÉ•OÛd:v)è´¹ÔtZ•l˜²1fw6¥7Rwå¸ôl>)ð×d lÀÿ‰§á6üØw’(xœ’=oÜ0†wý
24ç“üí ):téÜ™i‘¾`K†Eçîþ}e'@¯@¦.Ið¥½”,Ì€uA¨›F÷¦n«¾ë	6+2y‘×Em;îŠÎ¨ö„%åhM×´CÛ‘.º¦¬ËÖº­ln™+ª±²Fá*ç°ÀwôŽGxÁ“ç¾Ðe¾Å5rFüL]¦¬›¢ƒÏ:×ZÙ0MN„ÿCª(Ø'ø=
_qšGŽà<ø×‰£‹rˆko1“«(õë|×Ïá’*a•y–0½éìèÀd×¶~$Z8F©MwŠ,®_e›ÄÉªD@Ðß Îh9¾imX’vžœ?¥Œ8±©ÑõÛ5@£H‡4Ð%É…‘öñ	ÓÊ?héC|ÎN™R ŸÀ¢À1UvÄÛÌýÐÇwæÔ%Ë?›.ÏÒ¶³\›Ìhó(K|µŽžË2O&¾û'ÝÙ,ÜÒóÎÆÄj×)ý
|âøéÒ†è†áÐßž>\àånƒê¬¯Ôvœ5xœm’I›@FïüŠ–rIdÍ ÍÒ&J¢€±1vXÆËxð%‚^0ŒYÝÏ¯“Q.QêR¥Ò{ªÃW¼£¤ºª!†2•0¢¤cE¥¦i!ˆ¦
œªL7RJmÚÑš…¦…S¦éfšÞA¢O5`Ã‚ªeR„¼›VŠÿò”,Ë¦P'P§
ƒ”be©E5Š4¬šÔ°¢0SJ?5pÓº gpHóšvàþß{ÑÓGB¿Õ45ÅÐ‰EÂMUœßa¯àK‘/uÓÑö|ûžü$²Ç;ð-oó¾ÈÁÃïræž‚Ø‹ÁÖ÷B{·ßÌÿì% ¡w°cÛÎÌ¶Ÿœ§Ué»îÛlã¬Ñ©Ô£«ÖùƒmO·sß^¿¨7­´É¦š¼íïŠmJ
!$ðæµ¦{ßvÐnôãñEA—§•íÎh×½nN™À“E¦N"Ì¡ßÑòŒÇa$×{6x¼¡¥ßÇ,™mÚ±Z]Xð<¡ö¢<òÈžÏVÞ\|ûÒb:Ç>©Ë…B(¢Á‘@ÞÅ›Ø<ÄÆÑ¹6N¹nErÜëÁ&¡Gþjê\ßŒÐO&Ýòò1Ûx†×­|ÄèÎ%À¦õ-›ì¯U>“¬Ú™­¿ºVòþlÛñ6.ž¦î!ß9®›•s¿…'çU®€/ãP[	ãX‹P¸å’GñÒ$ýÕË{/JhÐË\l/§ÜŽ‰,+“¢x1‰W=×åh,f+8ß•ÀWz«¦Ò{fóÐýbR@»œ‚VœÏ £A{>¨&Ò ëš
œ‹ZŒõµ¢2¡-­Iš5\~•Ÿ)æES÷òßŽO¿6‚?h’”‰âL>ÞþÓg‰ªÿRï àÐ~œ<±˜Mxœ”[o£8†ïý+|9J8B4³H9’††¤¡šƒÍ!˜b ‡_¿¤íVÕª–¸ðËó~þdûuU‘"ÊZ¤"Ž°€¢0D¢ªº¦KXÒú‚Ô#¥‡d
T’¼‚BÔSõE²¢"Ô‚XéË2{º$ê*Ñ4Mj:
ª«„–“‚ä´zi¿_ð»¢«º.Ë2÷éÏÏš‘’usZ’âxéÆi•ÔA7¤Ù_PTUYT]!'´´j–V)¡V“:€ßÛ~þ¯-.b–Æ°s¦eOøh?Â§©íÏµÞu <134ÃÆÚ\Ï9å‡®9×’ƒ²järz2ŒÓØ›coÄåâv/Dc¥F£Ã÷ö kBLÛ
©^ðÜu$ÏX)æf‹/]ÞtôÝÙãkråj“ö–õÕ/VÇ!òÃËÂÖ OŸÉÜ£Fs =òö´=˜ÊyÓH¢h4B>ÌGËÏ‡Fòv
R¶ÆØÍ¯êÛÚŠ™èž&R ÄÛóåô1Ézcuìã-×ì¹DaÉj4ÖÄÙRrä_½e6§ÊÄµýíh=—õÐ=>:€Np¶w'wEWcv—$›¹Räó6$žœûÆ‚(‰ÿ¼Î¬ÆÛû£úÍ[4ç<>,åÕ­‡ê5]D¾ l¯Ù–‹wlýxvðnåÁbá#ÖÔþ~?Þ_
—“/ŠåaK?6Ï³ÉFWBÇµ~ øÃU¹¸Ÿ™åŒþûÄ@P§Gü­½Qìa ƒ:+ 
«”æŒ¾Òº‚QI3(ÁŠB ³E|ùýú–TUÁ<ÿï=â?CKuA¾¸äH#0§a_ªÁ—w{¸ù‡	Êcr¤ñ×¼Á‘|†ÒœNÇ¶+»›á{¥÷`|±‡V¼…šo¤n·ÛÈ Üv³.0ªîÜãIò0%lÐÖþg~éä(#ƒ?vÀLu)Z§%	«AQR\¿ã-t_à7Ð´™oåÎ]0’µJ'CZ‚¶+ žÒ8o»¡QÔ	.ƒ?ŸV-«Áÿýu–sœ1xœm‘Yo£0…ßù–æµ;¶ÔŽ
Yd…ìyc±1BÊšüúI;3o½OGGç“®ô5ç@#Xƒ!D])	bƒ\)aa†`ºÁ¡†±r	*~n Bë#ýsDED‹,Î‚X#°)fÿ¿"‚ô4˜Nã0d…PÇ4Æ`=Ö)” mdYapNyöAræx‰»ïðV·5Žùo aº†ªAMS¢²(Ò¦yŒí´™´!x9—¿ä··$md>??`É%©Ó<}5²XÙ+°vì…¹Ùú£ï^
èj+²LÓ˜¦gyn6i·þÀ·¦}™Ë+ªœÎ4«ÄqÌ©˜æ÷ÍêP¬·ž¼Ü}÷ºÑÎU@¶óSÓ/5qÇ3Zç¨qYuÄ°Éøýd3ý>¦.WÕé†d>\ËÚèm{'÷–Ô˜œ)€ïN¹<Õ<·;¹3|ÿ¤TEùÁ']Y´c\Å\Ô&Uélãê¶£«5®DfG°—}|(à:?§²íõ×Ãj²r 9_Ý-HÞg7;}×Zdåq¶^¢A:9–š­ñ½}šx]â[—›Ç§çŽ\i¤îÀ§2Ofpò¹guíìÁâÞ	Æz(E&àÀÝ„ŽÎÜ28ÎúÁ¤SÀ¸wZNªƒKcº2/»ãþ&¯¨^Ô9¯÷¨ç-‹øÔÍÇÙw…'>§Ä‹`@­¶¢rx¡¯
x-³h©üu6Z6¦Ìy•ppióTü£åu~=ô ª² it½ ŽŸÚôÜè>5·W3ŽÁ¿|5 × ño–'xœ•Q»ŽÜ0ìõìƒslymË‹ÃáŠ”Rl€+‚à K”-@–‹ÚÃþ}¸¤H¤#Å™áhH;"ÈÞI<tj¨e­”2ÖJ3j‹c7Õ›¦›FÛÙq›Þ1H‡½3nèÐÓ ¤šz©T-mÛtu;*9C‹m/t¡%íp"<c„–8›S€¯¼õ9›¦VU@|ÍzÍ<«LZ_ é{ÙdÛŽð‰Õ‚_WO„;|ÑÑc€7=GîžíÇ­xÍ%ceñUúUl¡Ì>æÏg¿“/ë¾Ú
AÃ¦=ÁY‡‚t†â#ñ#ÐeC`¡¶ØT¦€B|_ð7é
É—T‚…	aÛ™‹öªr-f¶]Û;¹&‹
\‰†|Šà8—ûø¾òÃ‡ ÚZ°hüªl‰ñ¹âmñÒ¼Úîib+!Æ˜´]®&ïÞß)½?$u´À¡Ü )¢p{Z¡¬wòš}JÎ=M—ãÿGüxd~„6”øWóÏ¿5ÿq'ñõÍÑ`äxœÁ»Â0 P¡¤bŠŒp¾s.˜ 3¤°}w%BQ$F Î ÁdH)¨yï7žãºoî“†V lHFÍØA\gPÖè‘™Œ¨ÚõQ7¿ïS.¹J£ @+ž:§à‚	E¤¤9‘‰µlÇzPñx/ÃÓúçûºüû¹"òä‚zxœÁ»Â@ P¡¤bŠŒ`sÎÙW03¤ðïJˆ¢ì@‚É(¨yï7~Çeß2'‰$sdË¨PÅ-æÎXgˆÆd­Äå¼ê–÷}jYLkA¢&Š,½˜õžÄZÜ3åX®
¯Ûððõýyžþ0ë$'îƒrxœÁ±Â0 @!ReŠ,€äßïwAÅ)ÞöG¢ÀŠ,+0EMÁìEDÍÝoxK«ª“sœ™2‹C$R²¬lHq¢˜4%œD‚q“ª¥M«¢wh‰Ù#i\E³”À$ä h$zß—ó<ôçe,ûMO[½–Ö?ïÇ÷pÿ/@'‚å	„xxœÌ±
Â0€aÄN>Å`Ò¤Í¸ˆ›ƒÎ’Þ+¥–6>‚àZœ}Hg»þü¿ìµ¬Ò > ±·:Dç¤&V"æ†<…H®ÖÆÄUïéˆ38ƒª#‘¡¢¬ÍìÉ‰á98ŽžæåTí2d§ÏaýHM»¹÷n{fÐ9Bh/ç\¥íeßßÅóþ-—ì	†xœÊ±‚0 Ð™üŠÎ.r½Zãbü†¶wI¨&~€³!Î~¤‹³lox¿âµmòÄ¬˜´ã¢¥àm$¬QÛ
4%f0H HZûÝ&î³
˜x-¦´!y1X	q-‘Ä9òˆ\S’*YšS®„åsÙßrÛòcäù¨ÎD
´S±Í*ý§¹zuån\ùþnž–Ú1ý“xœAOÃ0…ïù¾£Uiš¤é„H\9Ä9mœ5(KªÆÝ´O:!®p±žå÷>Û´"‚R½™´mCkÇ±FX§û©ÇÉK.…÷ƒœb‹]1(©ù¨Zoœ‘mgõäT×Ñê¡;Þw=ìè˜ÝhÎ+¼Ú0Â§=%\áÑ]ïâ¹l‡OÐj-”lïàÎÙ”Ïç@„ÿ
#õO”mâÞòaÇät[v.¸–PûãR%„Dv;œ¨Nû˜±à¯¡~u‘ß"¤Lðµª! yÇ­{qØÀKŒù
KÜN!¶#+‚î Ê¹aì=Ô›Ý!{oÇ¿^bß‹·‚Ž—xœ5MŠÃ0…÷9…öCƒÿí@º˜;tKMÍ4vQÊÜ~L‡A‹'é½¡ÆD«dDÝ¤³ÞïC°“·.-Áx²2(cÓðŒL¥5N,VÞ#ut	­î	é&”ÓÂk/¦¸àv¯¹”ºrnßTÊœß2¦ûqù7Råç˜êö	Ò¹~I{éàC!†¾ÝrkÄðK¦\ãZútÆ×»¹ìÇN#ÒÚËHÕQÕÑ!"Bn´"Ï”ÒLÌsêäû¹u=õÔð5P³˜3xœmRËŽ›@¼ó#å°ä˜Ç0Q6
`Œ±½6~°‹}ƒ™á±Æ€af±óõ!‰rÛ>•ºª[%UñŽ1@(!jÆ(Å8Ut¢'XQ!ƒf
¦C‹!„CO©M:Vs€’SSVÍCª«UPÊLŒ,U…ÔLõÄBÔø¯O3…Yº©P2ª¥4µ4˜a‹d:Ê…B†Mª	’Á‹¦³¤.YÞ’¼føN‡¿àg/zö•²@5éÐÄMQ$Ò\¯%ç£Ø/ùB¤à{Ýt¬­?ó’"ý:
>9ËÛ¼/s0ù3Žçú!8þÆ>F{ïï^z‡8¶í¸¶½svËwß;îÞY™Å;Ü~è]0Øö¯ÒlÇ'PD¡h«Yá^Zá0¶9zØh7ÛF¡µàÑ*K‚™co_+æ­–D]pÜ¯õV-ÊÐ°ü—%’m[a>Dnaï=Œ%PÆK²,åµ|Ì1ÒwÇAxÁaºW‚Æõî¢Šv~´hÄÐÐµJèÎÎÁ…Sùþ]öuaH@^y2¾žäRÌõíEéô‚–ºWE“*êG¿Š/æ<æ{²{@­Xùkèuù_çáøaîçÖÆåï3FN,ãxÛ@{î-c+>"w‡OÚþÄy"hþfäÆ£??Ü­?]†ë;°ÏÃËIžÊ‡Í\öbýÝëœˆkqÄ‡F…Q»Þb¸˜^aíVê`z)|Åþnñv¿‘“ÛÏxFôüþeæmfŸ'&½°.g U:v¬çà‹j ²®¹‚2O†)mH?)šaÂ›I;–e¬ê$‘$Ì7`S
žFð¦æ]™
Îž@Ï/›ú7ÖXüÖ•xœP=OÃ0Ýý+nk´ŠãÄI*„@êÀÀ€``öÇ91Jí*¾¨í¿Ç'Ý½{O÷ÞÑ„ÒµÎI,5¯rYsYm°m9W¬‹RU¦ªÙQMD!š•¨QTR;®;áŒ“µhj©Ý¸¶kº¶­˜šiˆìUð8Â‡êNpoOKó˜æ„[‹À¥äà¯à¶(‹‚™x8x"ü·´•ò[Êl4;x²VC<E01ÐäõL¸‚„†|Œí£™×,¿H×‰„ã?3{Ï¾Æ\´ÀNºË"æ	ð|Ì´°ì_ßä/SÇ1ž|è—Õ‹ó®ÙæàéÂ~nfG	úÙ[}Àk3¢
Ùìä1Ýl{÷9µÝDç6ú²ûë)ìÆ+šÁxœÎ1kÃ0†á]¿âöâ [–Ï
¥$Ð©C;dè|Ñ-YNé¿oRZèPh·ããxKFŒï…(´½#t½qâ…˜ºØXn…4£fÊ’
`DâÆX«‘™­óh=ï±¾ó®Á¾®CŠÖrž2<RŠ2À+’d¸ç·Ïc·¬‹lX îºÆš¶uwºÑZùic)òoÚióEUºŒRÍ9¦²…=3ŒqYb:Á…†Uˆ	"W¾äÂ5íéðòÓZæµ(u{/gù…ÜÖoöƒl”:ÄkWSÕñ}ûW¯ú -vn’xœ…N=kÃ0Ýõ+n/:Ùúˆ	%C–B‡@	J‡³uJUbÙÈrKÿ}Ð©K¦÷Þqï£dfpˆ,•A©<k«{tÛºqÛÆuVj´ÖyMFuNL”9°¡·RÝ„@äI¢–õÑXÔÞ;bìC_óúOKù3#çÌðLØM—+î‡Øç1múqx4µÆZ9¨¤–R¬×!–Â”"_à•ÎiU;ÿ}#ûy™yãùfUºnŒ¬áAªÕ*Ò×ÀÕ”c*-¯ á¼D4Áéôtâ%®!¾C¨ºŸöî>ñöWÛyÏ>ç1Á¸”i)ïÿÃî¿ÕZu#3xœmÒÍn£0 à;OaiQc«vUhRBÚ M“¶ÉÍ`C$&Æäïé7mµ·Îifô4ÒŒVB yEFr*lN<dÛ$ƒ9b¤(l	-¤
£eJì4°òÜ¢.¦.u]WPF¨E¨Í²œ¸œ0˜»œAbôßgÔ»â<Ç´° ”!‚<áp—f¹A9F…Áz½–
Ù®xgåN(pË_É}×wâ7r‹`|] ¡‘Ëí¶ÒúŠÃJûÜî¤ms¾/+½î³ßWðÃXÙ–]U‚›ÏFaƒ4LÁkÆþ|1}õ`€cäï¾ÿ¼L6á³à‰®7vrÀ*:ú>3G‘?y_ÒË³þ8›™·›†YWZû‡¹4 u‹z–¤šº_;0™ô£·×„ Ç¥¹WQ/÷Aœ,¼ñãLöm¦«œ²Õ³æØU´6Àz<žoËþäzIT‚åRÛeÒ™OÏå«zÂa0j}Ïã¨ŸÉ"‰Í"@uÌ™«²ÔãÙ8`8,.ñžjÏÚi‹Wò4,Þ6ø<„
òJØAŠÍy—.‡2Š}hQxà3y9öÅŠµ@¶MWõa(e£z×WÎžÄùX4Qºê¢¶~á-?Å[w0Ý/Wïl'%&Î|<0?¨¡^OÒ>Þºç¸‚(×ÓÝ„)>	fÖEæM/èÐ”¨ÆïÉy¿É¶*•ÉSQÊÁafÎ¢éîú¹6¾o6Š‡?_Ì˜
U
ÐöM”Ø÷¢Óàr0…’[P•ìhö¼eZÜRm™¾á2¿é®o§«‹0ŒkÕý‹–_øºÚ•Ÿ)¸*–kÐTþ
Æ˜xœMNÄ0…÷9…w•€¥éÿ!Ü ¡Y;‰ÛDj›*I™áöxö°±,ë}öóË‘U¯±ëKS“Õ–dÓ×º×Uot7H…Ç²QªFZ3•µƒi´UÛôåhº¡ä@¶ÆRËŽTEƒBcîÙ…o¸zšáŒÓJžíåÞ¼¦=ÑÑÒ”m+•jK%áQ*)…	Ëâs¦¡ª©T_·¿¨°Á¤|l3Áâ‚9ûuºµpE“aö)ÉxÏj0‘X›îc¸øì€¸ð9„â¡ æŠCq„3ÃžÁgÈÎ'ðIp–"YÀa%à|pŠ¸9¸8oKÀa´ð{âìüÌß¶<Î) Ž®ð‰óÎ&XÊŽ™ý1rÅe›‰ÁwÏÛCÇƒþ:ý•‹øîj™à‘xœ5ŽKnÃ0D÷>÷E\ý%A‘EïÐ5-ÑŽ[2dAn_Õ@¸!‡Ã‡a-Dà´U.h®ç¨ÆVÚ9ƒÓ0NÄœ”z`Zëº¥
Êã µp¨Ô„c’”?Z‹lÛ97^‹zÏbJy.±>(¥\ÏÖûûq{>—­÷yýn¤µNÀsŒum»ÆZ©À¦Hüâœšº†ç9Üöc§>Ð‰
Æ•ÿ¨hh·-ÇÓþùŽùöK…XiÝajßú²äùÒÜîG–Uµ›4xœm’Ë’›0E÷|…ª²teHHJR3x0{üÛlR‰‡?¾>žIe—^uß>Ý‹¾-çÀÒL–™1ª%:7¸ÊÔÌÒ0G©©%Ì¤ªjpfB¥¥‚×@Shpˆp’i‰³4Ã$NHB2Ó"–i¢<C(ešU‚»MH0´R=ÓRnéfF5ÝÀ
íeÑàÒºäØÑ¼æ|g—ÏäW×wü‰ñŸ@ÃX³ nBFª®ªJÚœN¥”xZÊ—>ßëFð¶ºýÊKYôÉÓøÏXÞæ]™ƒ¯á<Oý,§K°ö§‘½Ù®ž?u(àÒ9©cÛÎÄ¶_×ÙÑ½n‹ÉÊ	HqD‹
ÿbÛ;Ó÷íÉ½ÉÃz?>[òux¿§YuD
h¡zÜ/¯rµ	BWžïi_HlSL¶o‹Þ¦ÇâÚGÞU¡µEmåïHT¶“.jëò¦€!¶µÃ¸;{ŽÜ8Ýtoñ¢ßŒnÃo›.çg¼˜Œ£7 …ñêúc?š‘ù|Ä†ª|aýVë—#B§ˆÂÈÑã ÎcÎJúVÅyc¶çÑ¼šwãi˜z))jõ =ÉÞoqcöDzçÃ^Óµw€Ø;¯i0±®-rƒ½ã©ù²ÂUÑ•öô\TÑµÏ.ÃÜ¹O‹öùÐ‹½ym–|{°¹ny¶‰Õj7¥­˜­Š|½	3mçÌÊ0	C´-v{ndwë‡<XcC·^Þh½œÅ“Ã˜Ø?ðCzÍHùëÙãÿwL	¹È9hûª‚Ÿ{ÞIðEÃ™hN K5ÕüZq>¾×ÝïÇ£4Bþ¾75ïå¡<¥ßÀ_|Š +š¾b á “THÎ Í>žMp)J><êîä—xœŽKnÄ D÷œ¢÷ÑX|4£Q”dç€iÆ–lŽ”9}œ(H¶U¥÷ªW"pcÂd1x$iâ‘''3ŠÑs®)¢b_)wP\YI^iR£	I§ÒœŒVV›`ƒMè¬C™?úR*L>(ÃDG¾Ï•ÞOë­Í‚ã°½5¿·³æ²¿‚0FX+¥ÒðÂçìL÷µwúÈ	é$þ‚Ø3·a¾B¥G©ž%Sƒ¶”c‹Z÷µSŸ¾]•z]O]üÙ16­÷LñRRº„Ïëß®°/ÛÍr’œ2xœm‘Én£@„ï<EKs´ÿl%£°Û¼àý2biƒÜ€!yúñd4·Ô©TúJ*©ZFŠ¤D‚XC>U	Ã$Šª“Dä,ˆq	puÀm‘Œ±B0	”Ç‡$Œ!‰Ä˜B1‰Õ&„	Ää?O¨0áy) I²
ƒJ†D¬HH$H™º6«2š“‚”†^âþË¼5]Cžcòñóª*VÐ .ª®×¼m°·Ó.D/´b¤.?ÞÒ¼Íºðù|SKë´ÉSôôWºeÏ<´²WÈŸÙž¶Ým¬¯œCê=Ò5M74m­¯ç3w·ÆFw”ì"-ï"›õšÖ`w¦Y;8ñl1ºM)µ r·’7=ph~|_]Òä$x¬ÐõÊ%ùÑgÉÂvï×z>–ÏÅfäoÂL+ê³œN.Òuå¥öÞ*-Ù[‰Ç‡CÝ‰7ÇõÖ|,—;ÿ|®6-1sP§¼?LN­²wèÝeKi	vs§Ÿ½¯«‡†åÒ­jh>Ë»`mOy0ðª3ý`lÍ÷â8£££¯Fæ98±l‡ù}0|Ð»zÓ»ý˜Cë¨Z¨ãå±i2“æ™×ŒÏ£Té/õ±’òg³~¸,?O\`í6Ýeqå LN†kyÁ!¬¬m ±]-Íïß)ô®Þ¯e>ºÓë\ÙôÊÎ^‡ÆûA5Vp
ûµ½œÎßé°7á•C¯KÝšsÿ>³<óûÇ8—°” º+KÄÈ­#M‹~ðX–PÂª+j"Ô§’1¡qÇ‘ße•r½_ÉSÍrÚþDI> žU4E—¦¢¨   5ù{›xœ¥AnÃ  ï¼bï•#À6ÞªªèÍ/`aqÜÆa’6¿¯¿Põ:#Í´*Ž„S¤£î‰‰Ði&ŒaÄê9N¬ÕÍWÉ,±ö‡iDËÆY1'Š£FD&†Þúh•¿·K©07yH†Yîy	)Wø8®¯{0OW‘÷ÝoûáN¡lo`œ3“³#!¼hÒZt[[“‡T~lÒÝêšÛÒúßµä>÷’áKžJÍë’%v%¥ŽŸç¿íÔ/Ù²h9“4xœmR]¢@|çWLræf„d÷² ŠœˆŠ‚«/—i„¿~ýq{¹{Ú~êtª«S]Õr D3§z’1Æ2šÍ!èjbdL3t¤iL™Y¦PEj(‡s‹ˆ™(T7†#Í  	Ö	à4™LSÅ0MÌR•PFþáÎXŠi
š
†Ößè	ÕlH†™‚“ÐT¥ÐS€D»öXsäÐs%ÚÑü=³ëgó*:O~ ¬ëØÐ	Ñ(DQ¤´®ª¢m{°[´³.AÏçšCSÞ_ó¢=vÉSøb-orQäèûŸ²'® •»BÏ¬mN>ç’ÐUØ©mYöØ²Ööúç»“OÅ8´ç£ãûpyQ¹wµ¬Ú²<kÆæ‘‹I`ÂF…àb®%ª„Nê"ÖEùÑÆuM=CÜU/nÜCâßD.¡ŠãN&»©â4–|ÙÌôÕD¾kzz¬xé±/!gÊºæàiÁæ†Qí¯‰¿­g­ófêÉc5_*i@«q„­açX×ûñ`í^ìºn¸>KHuÍÃx´­ÌÍ„1c™èYj.Æõõ~ ÓVp¥³ûu);ÄUPÌØ`tëG©ÇÃþc{È-
´[Y'÷¸—w¹NºÐì=lÿâEÔòJ!œšVx×–qQK¯ðáÓ^ÅiOVÛx3|Äö[ìÝÏðBæl·œƒ·‹Ççã5dXm‚D×v&°û^LÞOr‰/zÙ×—þz6	œ¯“Às@MW–ˆÃG¢Eß°>4PÆë
•9£iw>R¹…*hùýWZ3I²†úÔŠâœ£¬â¦.VäúDu"€_hRb´¥O¿ž­Ç”xœ¥OIjÄ0¼ëý€ÄH¶VÂ¹æ–´Ô-Û`KAÖæ÷q`ò‚ÜŠ*jë0O*Ù˜‰(cÒA³¢Ïd‚OÎ².ä,QŠ/l\:Œ!J´^;ã™Ç¨ìÈ*EÈH/}ŠÒ4"ï}©áý^|®U¸lO4éW¼u[i÷Îi)u«ócHueóFIàUj)ÅÉîkïüÿ`«Œ–“ý7"&8_k™!ŸÓ?Ÿ^è¼ñÎ½= ÆƒÛ7ÆÏþŽƒøZzi˜’3xœm’Ks›0…÷ü
ÍtéIÐi;›œÆocÇ;	$À<-ùõu“é®gîâÎ™ïÞÍ9JrApÂMÛ¦8Ž-'0ÆNâè”#ª3é†Ž™ÖRÉkln3ƒph ‹X7)ÔD³t˜è	I6ˆøÇ[º…À8Æ÷†‘A‰-¨™0æPd1&Ä¸F{•5ÌióiZs	¾'·åW×wükÂƒÃ4uM0Ñ¡®kqSU¹Rw8ÈÕSÏÀ÷º‘¼-Ç_i®²ž}½ÿ9KÛ´ËSððWž„K°Ö`KwØú¾4pë¼Øs]oæºo³¸xøÑŸm½g+»˜«ÉðæºÉ²	ÝÅ5Þ;Ç7Ú³	iWáö8z&f81Ô	Ê¢U„ÎTàÍY‰¬™‡0vðúøóœGçZúÙ-ÝNíUMwuÐ>ËÓ¹àLç
Žü7®&G‹‹aÚÊQ’thOŠ<yÃ	÷;Ú9*v‹IÃÒz¾8]AwTÝ¹iByÕÀ"|Ÿ•Ž´Nö8]˜3â(Ó·h9.bo¬ëd¢yùZÁvH*\ÔÍotQ{ñeÀ—×jRä"ƒf%ç±Šrú¾i¯rŒÊ³q^DlÃï·òØ;Ý­eƒ’ó<…Ç§… bþ¡°Å¬Î¡¬*="ÈÝÑÉ[Ö4c;9†Ê÷¯»)-»šùû—(ck4òùÜ\6þü8¬£‹ö™™¿œÿ?1í…Ë”ƒ¶/K ùµç_‚u dS<¥·©ÈßºNQõÐôªí•¦ÕCÅ¿ÚØíöîä5èî]|çe“‚Oî/ÿÛ”xœOKÄ0Åïùs—–$mÓvYO‚zèÂžóg²-¶ÉÒLýôÆE½
Þ†yï÷˜7´"‚óªqXWRtn¬myã¤mz×s•æFT\ðÆ°‹^1tØ¡PŠÊ[oy­%ï+U™–KÙ[År¾Ê3½ÑW¸×aÂNúp…½{»·iKX:<€PJÔBö­‚.9g6.ËD„ÿ@Yx]p:½$†ãÝ¦ )Ç|`1Ç3Ä.1vñº¦/ái‚€èPƒ°ä„Nù;hœøÜ„2ô0<?ý¤˜-C‘~µ×EÏFœçoOÉØ0å£]½/Ìûî¯NìXrŒ4xœm“M“š@†ïüŠ©ÊÑÚÈ× ¦vSaPuQüÀÅKjf a€]}Ìnå–>uu?ï{y»EC)0&	$Ð˜Ä4¡ŒÈ,10TUYÍÄ†e0ÊLÓÐ‰Tã†VhT‰‰c+Ê ªèê†jÒÄ’eMÖLÂ4MQþñz¬Ð˜Y´TM0F˜'º	ËdzS%!Ä îDÆ0ÅUNpÂiEðœŸÍ¯¶ké÷„þŠa(ºl–F²*Ëáe™ñ€Ý\,º<W¼¡uññ+ÍEÖÅßÀdi¶y
žþš¹ž¶îì=×·ÇÝìs.	-"È¶‘cÛ
–ô~jœZ™ÙEßôZã¶½ÝYž=CrRxo0U?dæ¨¾.Ô†Ü$psx¥åØ\¢*P•Wus™ì}È÷ô¦ìÐBñ:ÿ‰ì÷á‚ðkIý¦8ŸÖÐ´¦ÎÊr|	ø®»†kN7»‘wìƒ|ˆ¢h¾™]WUKNƒ[/f‡·Í]“‚këhÏo¤ôb6t§à½ï%€Öãþà\ðê¤UVo¡Û%në°k²8e¤bmY«0@™îÁ~¾¾™oos-2¼½|áŽ­HÀ}Ï˜ìl¬eîgõmwWI²Z¸ÙöÌÃËªXT‘zçâˆÎ£zƒy0œ‘ÛîþºÅC4H€è‘³ˆ\2wºÏC4:ãÂQ‡å{š°Dëb;Ë¦gÚ–é¼™—?„·%ÝO×¾7î¼	¼XË€K_™Íüéÿ“^i“RPwEzëh+À7ÅÐ'€5¼O¨Ã«V4ãÇ‘¶ô©¡¢Ç…$‰ÇCü çà¨xõTÑ‹¼§'Ñ5x`Ã/§Oío\%¿yM«?¨	Z“Uxœ•T[¯ã4~÷¯íK[±M›æÒ6i‹àUŽ3N®|iO÷×3vOY ÁJQ¤Äãoæ»ØÁ!B{Ñ´Ç”b+‡–7»]-ÇjÏÛC+Qî÷m-ØÌš –½h{.ZBÙìÊºiêv·Çá°ÝVÛj/dU•%ã1LÖÁ;tx¾Á7è|úëo_; °ÆE(„=<~eÛ–Õ¶Þ6|²%Fg~@SÏ ,»$W¬cÍÚàÈƒº 8Ñ¸pÑƒtöÄÎã‰›ádg4Œ½.ÑÕ·×pEð$‡+wF™®*LàgJ*4Á¬4:ß1Ps9c~¢ƒ¯ÈhDP4ÃÂø“C/¸Ytÿ,­«Ã±+Ý£M‹/8óôÑã ‘TP\«÷ô¥„Iù~^ÿDÕ=®_ÔýÂØ©Œž!"KTÂ„–TP‚ë,QtH-Â|)ÅrE
Läãn$Ý¥O¹b¹zÖÑÞl½ÊÒfMa}ìj£¨ê÷¨Ÿz²QÛžZ’—Æ¦IˆØÃ•‚±//˜(Ù8N©:ÓÍ,2w`%&‰‰5ú–ºzÕk¼;ò b„NÁ[^'%È§)a&>ŸÕÝÐü|PZCJ“(jÜÜrPÞ£³ì¯!I_ÊBœŸu+ «+&nF©ž(R‰ª¢ˆr#èËÊH´á³¿ë[ÅêM^V–9å°]1–SÜ‚ý¨í´•þ—¸ödö<k•g¢)Iò$¬'\IÎ	Ÿ„Žžä[®ŠüàéŠÂ•B…g{ÉÁdeÙÔ»¾ÞÅ’¢Fd†×ÿ²í9!¹I:Pï¯’„<`ùê~”ßÚs¯Âw?~›t¦ù:LNÍÜ¦ X¸ß	Ô‰ròjõÀšB˜}·ÙŒ”“Ø§Kc£•‰Oë?àZhµQÞÃMÙÖ{Æ¾W£Áam¥\÷·îÿ]Cì7;Í±”4xœm’K³š@F÷üŠ©ÊòVr™ax¥rS4ˆ(Š×+Ân€Gy9€¯_“TvéUW×éîÅw€4 Z¡˜ºŽs¥ $ÕCO3J‚ÕŒjŠÎtR`©cš™T5dMÃjA3F‚(KU0p®ÎŸ×ÅÒ¼ŽP•BÏòLÕ4…É„iÔ`S%ŒU	1SØ8Z&¬áP¡ˆ•ô-¿þi~ôc_røŽðó7Q¨)ô"Y–²¶®ù0<a—³1EßšV@WÝ”|8Œé—'ðŸµ²+{^¢Ï¿Ëžº^€Öî½{n`m?6Ó?s	IèÚÛ™mY¶cY¡Î¶«GÎÆöõÃ‘®.Šð®–e>ÏšMµNÜÒÍ99$­sOÇøEBÝ[ÍÅ¶sÇ8ððìÅ]¼â£ö_ƒÀ$KUÍû¨ÊÏzîö'mmq½Ø£Äi¥ÄzìN-Ö•4Ø–a¬‡é±%‡ûúuZšYæñ³â3ƒî;.[®ùÓsÁ;Þ8$ÆõdaLBÂ9Ÿ'±ÌgŠï°Ûªé¯™rtª¾w|-òq°¾¨Ù	_ŠÐÏäÕ½H4±î—ú¢n
[%£%¡ÅŽýl—/&Š·YÞ]7j'«-¹ôswâ9O[ï¾Ìnënø(“Íè‹Ø&q4½Å·…„öqò>ôÔ]'ñ2ØO“UÞxB‰çs?M,ÕÏ&ïëÐPäqLÚ–íu…GûRÌ×ò›„ÞÞ‡‰ô7³i0ùbÒD	¨«
	8ÐèÖ¨†
ÑÖèE!àÎ*ÍkÍú§8’Ô	Þ_‘•çÈi›A´Uõôi,¿£-¯¡4½e 9äh!â©jÖæðn¹¢—xœ•ŽAJ1E÷9E] ‡NR¤‡AD\©à:ªÒHwgtnoN ¸{|øïÿV™Á±qbgï5YáÈfñ6ø%!£§„ÎúèhuŽ•÷3NatNO‚)bc%.M^œ¦n3¨yA/í³TxbxÎ¼Ãé«ãaíxûMéÊvÚ¹qFÔs€aœÆQõtË­ñ¿‹ê\óÞŽpG÷eoµ¬k·¼p¤+¼åË¥ÁÃOb&&x|®µßK…X©×ü±3EdX®Ç¿§Õ/;µ_¶ž2xœm’[¢@…ßùì#Ù±¹Ãff3ÜFQQÅË[Cw#67õ×/;›}›zªT}§r’S-#`¢#Q—©¡	851!šŠ0A‚D“
ˆªPW¸1R¶@Md’Hbšbœj:(ÊH¡,*¢1^Ra2®úŸOQ‚„5¬BYy"è‚A¡¤k
ÖRQ*C]{®pP™“ìQV^ñðÕ¼7]C^0ùut#
š!Šriu½æm;ÂÓ¼u	x-+Fêâñžåí¹K^FàYVgMžŸËr§Þ
Ó DÞtenw¡û5ç †ÆJ-Ó´lÓÜX›y>ÉÝ³Zí|‘×½Ä¼Á4½™ì™žÌßüùd£õßÕüÓY#Ãì8PÂnFÑéêwv¥ážÎnÕæi©'(»nmRÅ¸2ªEô0åIk•ÍN‰þ3×ÏCiÂ¥òá°¹û¾w’”åµ€ðâêTs8A
‹Ç­zÉòåÞZmCîœÄñcáv\-(úãªáâô/çxª| –×5nR¹³âS¿^f¼¿‰I²8ÈŠ¦mÏèÁ¬,{Ç>ù­ã®nÞÒŸŠ¡Ù6´AÈ9(+4y´÷3NWÂçºgÍZ»ïƒ^:4$/”ÚU†*-
™p@ËøxmÚ—e¥\øé.dÆL;®{o-poqÜ—Ñ	¢Àõšm¦.B°C|ÄA¥>ïúÞh î_fîÊù>1Î',# îŠ0rëHÓ‚‚*K€²ê
.„RF¨ÈI9¹¢f|Žpú€µ€e•ú®Æ¨%@%4¿“æãVýàŸxœ…PÉNÃ0½û+æHå8±WPw/ãÖUGŽ»ý=Óª\á4o–·hJFÔNÛ4
{Ýw\ynûV×t³ÞÖ\×Bd£É80½PZˆ•æ­äöÆö}-ÖRÔÜÒiëPfve•2¼`°ˆ8ÀíšàlCðþàÝÌ¥íÔJjIæm—œ3šnc)ø?QñNrÑê+‘Ñjðöø‹´„Ñ,v£7'0ƒ‡81öà=L»qL¹@ xß˜§˜¨á)gê?Ð¥=æl®"ì9!*ãJÜ“ZµŠSItPâ§b¶#¬' 'Ã¾.†—¿|pf46nb<'9[~¾JÉo¨(*.éÎdì3.ôU
¡²§ùß/`?Îw‹÷—4xœm’Í’£6…÷<…ª²IâÊX` 5“pc íÆ€Ó=›	–Ã_Ÿ>dRÙÍ]Ýºõ³¸çHÁ ÆPŽ µ†Õ"ÕÂf	A±Ì\Å%Æ†®JOk% ¦†,MÃYP7 ¶
BM³4t¦š
é&§zÎ4í>Ïñ¦DF™CiÅi:ƒÔ %£´€ŒBˆ,„KËTÈ(/ O¤å¬©Z&ÀÇâöcù<ŒûP°¿€ŠÄª©XAB%ïš†K¹À—þHÁÇ¶¬¯çÏ——‘~X€ŸÈª¾xþøw×By8^hI÷Ç]
¸NîØ¶³µíØ‰Ÿù:¸GÛÄÙãËU?NÜl;­‡Àörç9¤ŒºÕüÀ†i>d–=FDÍzóú¾Í¶/!OXÂ\wçðÉ?¾fm_Ü@˜™g9ö$ê2ñ£¯ýÀ¢4h²Å!^ùµíœï’û¯áe7ÒòÊ‹óª™iüÛr9©(ïÞOu€Õ4qj“l,ØW¨‚—ÚP@@:<}}Z{ê-á³Y"Ö;/LiØLS«ÐNCl$;-ÙUo™×“³¿’ëþÅF
¸z0{Ðð0Áò)´:Ëôoû»ËÌç«mî–Ùi:dšó<÷á{þÈÒa¦ñéqWKS_>éãø­ØñËk‡C·œôý\ÝÏQ2³C?'ô5›2bvð:Ó7ßRz•Þ‰½í‘Œ?)à“Cªü—™>ý<1å…‰Š~¬k ØûÈ	~Q‘®RtØvÛví Å˜ËuÃ>øØE~%m–šý¾·SÃ¾å5ÿöûwp¤ï™@¹´³YªHÑð”c›K¾8ýk´áxœŽËNÃ0 ïþŠ½£Vk§~U¨*'$àÆØÞÝ´@âÈu@ý{ŠÄô<ÒÌôÆy`vÅaŽÎx-ètô0%gSE{ñÞîv¤–Ôxî@Ù:’"‰¤‹ähˆõ%0æbµ8í’Jk?Õ/ÜxºÂ+·ŸÇR‰K/½­¥oK¶i=€v6˜¨ƒð€QÝÀtîï8ôzÀ!þÔü=ñžˆà§¥eáv¹ý<s‡·:Â’F†ý¥ÞÏãÌ´©"›|Ýß×T¿ƒ!f——xœÎ½NÄ0àÞO±=º“Û{BZ4'ÑoÖk(vdÐñô¤¡¿z4ßLo"=
ÙD#O8Á AÝàÉù8dï¼¤VjR:VêlõµgtlcÄipL,˜Œñ#k=)Úú{mð(M–<IkpûñyÏ5	×òÕÛÆýÈu9Òv{)ÚèÂˆp££Öj–¹w¹ð:§Ý? Ê÷"'xH	~­ë.åýÎ™ÊÜç_—×g¥Îó[‘t¨9¦Ëéº)õ,a|•xœÎ½N1àÞO±=J´gûn½Š ¡ AƒDïŸuHÏ'ãåí¹†>ÝH#}3½‰ rÄ@Ž'Í2GV'kƒËœÇ”†AOµZ|“¹C L‡¼ûàœlQ,M†0²µÞ$J¬üÚ?kƒgiR®ð"­Áýåë!Ö$±Îß½­±ïc-{¿a˜F§µaf¸C‡¨¶¢œ{—Û	i0hþ5ÿ9ÀcJðÛü²lRÞî<ÕV|‡·W¥ÞÏ§YÒ®æ¼×ÃmCêz:a¾œxœŽKN1÷>EïQ‚=ÿ"„`›œ ÓŸ$ (·'H «Z<©^õ&£²º2!qp<8$-Vs.årN%Y³`“¹FïQ4haëÈ>¤}Lè’×Ñ:Æ’)e1¸öSmð&M¦+¼KkðôùõB•…ê|ém¥¾¥:mq}C—¢‡›­5·a:÷.÷¢MÎ[_þfþžd¯ÌðÓpY¤]@o={ÀÞ‘N,0f>ÎÂ›ªº9\w÷ý™_×d•xœ±nÄ D{¾bûèNlN§SR&)óÀ.9'¶±0Nä¿E>àª)Fóf¦fpQkÍÎt†ÈÄ€ÊG=X%µ³>‘
¦i°bõ…—
2±A]¢ˆ$uO–{”’LHÚpj)ÕuCï…ßë=xãÂóï\
\¿¾Ÿc&ŽyÙjÙc=Ç<Ÿý~iÍ ¤B¥à	DÑŒy¬•Xì¥Fíþbù™ù/Dð[üºrÙ µ=¯Ô^Œé€Æ¨%OS«˜Æ­nB|ŒŸÓ)§t
Çå±bñº(h8“xœÏMNÃ0à½O1{ÔÊŽÿ’
!Ø‚Ä¦'˜ŒgJ@¶#×õö‰tý¤ï½×3 §ÁEtÐS$ÏÖ’q£ J¢Ý<$ïÔŠKcÑLÑÍ¬I‹×ÖJ `iˆ†ÓdÙYc
·þQ¼rã|ƒ7n?¿ž©&¦Z®½mÔTó·'0ÁÇ8z-<èQkµyéï‚ŽÆj;ýª|g>ÁKJðÓp]¹]Aö=ïgÈXðÂùïl…ú²kJ—Kát¨"‡ùvº¯VýugKxœKN1D÷>EïQ¢öxü‹P¶ ±É	lwš<ÐÜ/8@ÖOõªªUfˆäƒ&•§¨1æ¬½‘$ZOäÆÁÙk¨<7È2z?“²=“Ñ RlF“h@ÏÝ ;aoŸK…W®<ðÆµÂó×÷--Äi™·V÷ÔÎi™Îa¿‚4ÚZ7šQÃ:DÑÁTZãÇ­T¨ü¿@Ì?_à…~kXW®ä¾'†­$x¿C¡~§äCˆ{ù˜™NKÎ§x\+·eÆxœÎANÃ0Ð½O1{Ôj’©c»B¶°ä Õx<.9Ž\ÔÛ$ÐÝ—¾ôþïM"‰HH:Æ()rdŽê(øÑggY) O.›…›ÎÈHZB>°z%Ù˜Ù¦ÉÖL”b“Ãkÿ¨^µi¹Á›¶Ÿ_ÏR“J¯½­Ò÷RËž×'&ëœG;:x@h¶¢\z×û	Ý@Há0ówÑ#¼¤é$%ÁOãeÙÈ¼ý:k?eå¾6½ó~9Ïšv5ç]¼ïÛ4¿%Tg›’/xœ•R»nÜ0¬£¯X E
ÇgŠz†aÃn.«HMrW:9GJáÃÿ}VòR%lH,gf—3ŒžPç,rj4u.e‰JeŒFmjlˆT-²EyrT+ëNÊ†êN”•h:Tºm‡ª¤¼’¹Ð…Ñ¥!)3•âaöð…<ÙWøJÞÃõó[3#™Ù…è“‰;3ÛJ7×µhrÙ-\ˆVˆŒ/ì#ýŸ@!Šî,…¤??“‰áê8i÷b©‡´ Šö¸…vr°¶Ry!¯FÊ²½c —'7‚9(7Rø'út<ÂI±q†â€~-Ì%„»?µ²w­­ÓŠãnÑ+–ÙÇ<¦pVìVÉfÉséíñ™B\'ˆ!¤e¥öY¼Þ P‰¼(›aÀ¡.dŽ¥4¤ô7EÓIÓUË•¸qWé•˜Î½Z”z»ºÛ¢êáA¹‰Žð]Ž¿ÆÓv¸üØÒÍ†}`ÿzÞŸ1odãA´}ÕõERHÉöËÕþ[?X›æég¢ácY50øÙÂ=‡xÿâ•.¶(VÖ¾?{úW:“]Ždùª8ÍŒü6ñlx9Ã¥~íÿí—d¿6$ó}”5xœm’Ûn£@†ïyŠ‘ö²êr`XuW9P M)Iš»a	§Ì¤éÓ/ÛÕÞÕ’%ËÿgË–-¥ fZª‚(ÒjkªšCUMUSÑ”i¡™©Ù¶¦I=f´ GTM5H2á+šASj"
ÕÂ)±5PÝ°íÿ<E†–)"MMÙ¹™«ÔÆ)R¨nb"’*Ø†DÙ10ÇmEkpÀEKxÊnŸÁo>pú=£¿€jšŠ9¹ÁÃ4£"‘®i*!&Ø«Äó‚§¶c´¯ï¿‹J”Cú}¾(+ú‚WxükîÂó× ò"°ó½µóšÄ‹Ï¼$pã.qÇ9ÎÖÝÕšãYì†Vy†›QgþÍqV;ÇwÂüxì§Ã}P‘SŸ
?Á‘/\WÉ£föæ|,w	¢Z2ö›vHFV‘â|zQÖ¡™¥a¥Zû#zhÓp@9¼Þß$û ÑÝAæÂå›®ší6çõ=fØ—¯kŸ”MÝ^ñŽì¥wÚÝaÆ/“g£^K &Gv_•U·âj]žqâ³ŽåPÚ„½–ã¥¿;©õwãìí9”«ñc†YK^ëÌXnÖDƒ‘÷1qóÒ¯wwv-¯8ÓûØˆ¯ø’íb³½{g‡´ùÇ^æçtSd|IC¿ž	M¢Þj“°Cp|pÕù	n­Ë»)"Y(® K#îÙ.š/='ZÈghéú9¹:7ÿÍÙþ”ÀÏüm¤7[¬ç__Lz¡¬  ê0z(à›jBä¬k@Uà›Œ³ìñÌ»öq¨ZaÂÇ’Ö=e’ô7÷ì†¾ï˜ ÿD î=å€SVáºúÀ¢êZOŸÚÕÙôtŸm)ã“Àÿ –f!xœ;OÄ0„{ÿŠí(ÐEÎË9Ÿ‰Ñ\A‰6ñúÎà³#Ûá~=Î=(h yw¾o
D ¤ª•î¡%6È…¤¬D_ŠªÄºjuÛëRS·f#r	d­”¬4iU‹v]ê¡“­ä’TƒeÏ;ªj’Ã)í}€'t†,¼âÎQ€;u<‰‡8E*ÝC)5¯›nyÅ9üá`R¢[E+.Vö½ÛÀvGLÆ%Ñ@šGŠ)´æ“ñtnæ­ÊØÅ²à“BÌƒÈØ‹OØ[ºxQÖ`"X>ŒÛA¼ÀÂ•¹¼ŸÃÞ;Åð˜ í³oôy ^Ã1˜´,¦=¡—È~4ŠìÌÖÏ¤
x¦t•?å¦G÷³Iá×w&7œF¦ÑÚ>—-Ûš|0µòZ¯úyó×=Ù7(þ¯ú˜,xœ’MoÛ0†ïú¼/	ü-»(†zé†V`Ç@¦¨X«-y”œ,ÿ~²Ñ¤;öÆW¾¢™iÚÚôu‘eÙeµ–ÄÆÈªí°Ñ}©ZYRÞUbVL.B™KÕôº®R®*¢)eÓdy§:Ì‹º­1«°¯2¡–8x†oÄ4]á;1Ããï·'ôšÐ»yÁx@?Ôòò¦–R¶eÛÀ—¬Í2‘“‘ž•³4Â/urI=êË<…%ÐAÓZÚdE+‹¬M¥E*î<Ñ¼¸È^/H°ê#ŽöVóLv[V§Ysåô]1ò(Äë`à Ü‰ÀÞPâ@`,‡Þlb´ýÊ¿¡Á,£M<Àë@Ä Îê?3“±w[ÓÍÆŠAÏLaöN[w¯{§&Ò7¸¸Aï¾Ô8úK€%ùñ€I}00Þ-EV.!9îÃLhÅ»»Ð4ÓÖ¼ƒË@	À‰’à+´ÝPé¼€¦³Eº5gú³¤lºå`™µŠ´ºP0y¦”ÄuKÞ-ìÀxÞ¼MÎið©uœXOîÃÿ˜˜?mú\½÷ÆìûëÃç–Güqóô“=xœSËnÛ0¼ó+öÖCmC’²ÃHÑ¢@[$( 9ÖKr³¡H¤"øï»”‘ ½U'‰»ÃåHj6RW•Yi4¦ÕU[×Zª]µ­åš°^nWm%E‘|†¥jq'©muÃMÕ²m›mÓld]-ÍN­[Zí¤BÔ‡|¾S¤î?(F8üy¾QA“
>å8¨¼P¡[àp„z³n7»õªÞÁÇj[U‚Í™"|AoÉÁ#>yþ:èqz¹IC¢…¦ÝTÍ¶­×k†6™÷ÚÃ'­áî×-Ío¿Aú>Ä,Ä]!Ÿ1ÃHpÆ„+`N­·þ‰hB‚¦«Œuå=©hûâŒÁB¡”ŒEÆæ³MÃëÐÖšÔâºOÓY¾ô”B<”^uFÿÄÃµNo Ãb½ò}ƒ¥ÈKé+¼N=AG¤(Ê¼+uÿÒÑoæú!Áàmð3@¯c]·˜J‚Ô“²Æ’ž.öâöóÃÏ2 RJ{!€ŸNå~ð”ÇŸ³yÝëóÜêãþP„ŠÁ9Šå[ˆ9Œg^vRíôOñ¼jè3SBw%¥ÉààòD¦kÀ‡,Þ(±<_Y…"g<1Mîdz,“Í(Ùgý3²x|^F:+ËþóÎ²…]|‘=ñ®%s9/% ž¸<AÙº]uÌ]aO9USí½	ÀyéY¾™·H¥~jˆÅaÇ"¦4tå6yZŒŸµÄ7z£unZÃ ²ÎfË~°ábÊ¢å±=³(f]“Q‚ro9çzŒ™ËËþÿþ#ñC>Næ xœAOÃ0…ïù¾Ãª–¶i3!Äp‰#rmg´É”¦›öïÉ6!¸p³å÷>?;E°RW2U¶«S7Ö4èŽì`X·©*!Ýµ¨vÅ'`Ók–¶%f3´\Jß‹!cjSrIˆZk;©.i"<I”éÏ#Ü~|ÞS`¡àçJ…©Àå*Ývº7­nàªìËRåÁäR’èŒð†Ÿ»[>œ‹ûy™¥`9YuyÓwUÓgëM¶*¿Ÿd>ÅÀ	 ,ÞÎÃe-œï,{°9!;kå|[Šèç]ˆ¹:îdVêuëf -úÀ²ÐÉü‡‘à8†Ãf—´Dù!©3é†cìß@Úþ¯æPÆ0&Ì	O°KÜÞn™•—Ã%Ôé
ü^s‰V(õâòSx¬]Çõÿž®¾ ÝE­xœMOÃ0†ïù¾‚UI?ÓiBCâG;"7vÖB?¦4Ý´\¸q±ìØ¯ý>‰LE5^›†Èh®lYéL{›úÂkòÒ…õê„Ç˜ÚÊXo$ÔXcîljHÆª<7ÖY^d”r]*\b;xáÀÃ^9Ø}|îÝDì¦qŽaq1qÓàò¦,ªÒš²2p¯­ÖJC#xÆ±ãx¥ÚÑå;ÙÏËÌ	ñ*-õê)ËEšŠTEáÚÂŸß=ÝÞAËý‰ƒR¾é{¸ €Ä	°è$oÐ9žçõy­¨ìâ¦›\ìÁt# ø%.•kq<òÌ²AŽ ÌÝpêù÷x¡þ»Lôô&¯~Èa<ü.þ¥Þ:!¢Íäý¦¹nÿ÷cêÑ>™xœ‘OO!Åï|Š9j´›e—]hÓ˜¼¨75ñh¦0´è.4ÀÖôÛËÖ?7oÀ›ß›7CŽD ¥îI(%HqÛ¶–KcÑ
.„"Þ¶†„ìl§;`$Ÿ…M»mZ%¥]¶(©mÓqäfIØ7œ‹šá”÷!Â=EOð@1Âúí}£ƒ!|ÊqÒ¹Òa¬pºÞw²oêN.áªVuÍŠ0ºœ)Â-zG¼àÎ—ÛÚ|œ›4%ªÍh_7Jò¦/hSPæ#­à‘Æp$H³Ó0¿½:^CÐ˜	‚‡p ®„!4Œ=ï]½G¿#(ýeJ÷9¢O.»‚ä 8{,f—Š¥Ó3Vp÷í,LÉùÝ™ý; Â×~µŸ(¥Æfçï)‹ðª‡èâ’±'W¦7‹`íb{Zýo»ì¢9$xœ‘AoÜ …ïüŠ¹µU²¶cQTEjO­rJ¥«1Œ×$^XÞÕþûQª´·Þ`Þ¼7CID mÛ©áæFMý¤†­ëûV¹Î(lu';íµâˆ‰B+­ÖšZ=ÕSoZ2ýÐZ…
õHS7aGÒ'p+KLðƒ.ð“R‚»ç—{ÙrI›-‡·¯ÐŽƒ;Ù÷®¤–R°pð¥P‚ï<­ð„ûÀ·;w~;Üç-Sã¨ZGFTÒH¶vlát [xÀ‚\°xµòÛÑ	ŽÉŸ°”ñH¡Ö>¹Î‚5Z\3Ðšé¼0´ß¶TŸ¼^>ü>ÿQË½†³/Ì~¥]¶ë ­¥œkKYHœ0yœVj„øµpB"·±^5x3@œ?F°éyËå>®2æwH1óbq]!rDâ¼™yGò„'úÄ‚]0ì™±Žã@µ½…áþà€UØŽ¼köïŽxô¼a·‹ó¼›.·ÿ÷ƒâuçÄ`™xœPËNÃ0¼û+ö„ŠP#Ç‰)êâX9ö:	$qe;­ú÷¸<„zã¶³³³3») BÅ«oc¦æÌ5R‹º6FÅÃJºÒ6ÆÔä Î	Ê’:áJÎl«šºB,›†òŠ‰ªá•B!1Ë[¡ˆ^Rï<aÀéÏlß?vÆ[4~Ž),&ÆO…^ \Š²áTÂU”’LLCJàQÏŽð¦»9£­=}»¸D,,^¤‚2%©TYÊ²”ÌÇ	7ðFoôß^piï-ÁåX±÷§}ÀnˆÙ#ÂLúð‡	¹æW· g{=“{9¤¡}›}~îÁôzî2ç‰þÉpÐ1¢ó"Ð¡[¦üÌ‚—!_c×Þ¹u{Þüï[äM;µ‘*xœRAŽœ0¼óŠ¾%Qf‘aÀ0›U´RrJ¤\rØã¨±Ûà¬±‘13™ß§ÍlrÎ	hW•««H‘º¾§º«tÕë–š“1Í±UE•Ô­’'Ñ
c*Œä´½èM×‡ÊA'qRuØ›†´ê¨2â¨ë®.pKSˆð"Í7øN1ÂÓ¯×g4©à×7•Jæ·ÏPÉ¶“U'ë>Š^ˆ‚f›EøŠÞ’ƒ==éëþò¼n+•š2UŠºï„”L­™Z$Þë¾LèG™é¬é&†Ft¬	“UEñBï"ÚbÞÎÝ€~/aµ~„4Ñ_øÝì?©Cæ£sáºƒ‚Ó›‰+ R´®ù4Ï=Îèõ~Õ°Ð˜°„;Ü9^(Ãm,\P|Y$Ã‘yEð]`#W›¦]ÐèüŒa'à6V:³ú9,äÁr „ú W*zÐ1,;gÙgh2ÖÛdƒ?ì–¸Ç}‚MoAdÓy¿R•9žZçà•è.óºÓ0ë|â¹]ÙÃb×s¸f#¬_l÷—CT{	,ùÓrkú!ó0Üÿï¯(þ -®ãÅxœ=oÃ †w~Åm’¸à/pUº´[©cuÀ»q8Vþ}I²uê ÁóÜ{—T5o]éTUj2ªktËec„C«´”Ft¨¨uËNÈ'(]ÕeIp[¶RkÝpk©r¤¤´®«×–¢f8§~
ðJÆ¼Q°ûþÙ›É’™|La6©0ÓXàü¢md+dÝpXqÅ9ËãxF?Ð>ñàómg—ÛaçH…¥+ÚòRIÞÈŒ–e§ã|||¼¤Ñlá„1Â½øóH_–Î0õÙ–zôà,¬ÀãHŒ}ôW
î
è1‚£FŠ°dˆ`¡‡¼_½ƒ?€žRýd}^w†iö¶€—Ü(¡]CN›«Ñß ë¬Ly"	sæ›­`ì}ÈMÚÍäÜF_¶ÿ"ûj8˜Ž™"xœ‘;oÝ0…wý
îM\?®­« 2djÇÈXPe+±%C{‘_:E[ èÐIÈïœCª$"˜¤C:)ë´²Jk¤”Z©ÎŒtäN#R§'©ÅŽ‰B®§³¶¥F;®WªÕ“äD8œ[3(‡ƒÀZ–˜à%ÚÞà+¥÷/¯&Z21ä’ª)‰[ƒõºi”S'û“‚Oí¹m6_
%xÂài…gœ¿îíõýò˜k¦ÆÒNm–í(íûZgòç«5w°cÎðËÂe£–.°,,VP³3ÌkÔ¸þéâ™`Á‚‰u_	¢ãVÊÇÉðG .˜<ê•nàÊÒW:ÀÕ
Mï„5†8\!´|_|Ã)f‚º[,¬ŸãF¿MxFf±'Ï«w5˜âywP"|=Â}˜ìæ£ýMÛñÍóöìmtîV¿ÝýßïˆŸœsºó˜xœ1OÃ0…wÿŠÛ(ÅIj;©ªŒÈ>_RCjG¶CÕÛŠ…‰Éwº÷½{ç‰€“Áªî+REÃÛ¦áªH`WÕ0²Ô¢VlÒ‘|†Î®šÊp\)TÊˆ¦¼Ö6ÍJò¶6\ÊN iíJ0=çmˆð@‘vx¤áæókƒÁŸrœ1/1ì–z¾…J
%+É».yË9+ƒË™"Ükïh„w=øÒÝØý©Ø¤9ÑÒÒ•¼nª uAÙ4Îƒóé:à´†I§çmà¿wôaér ç‹¹×#ô³ÇìJ"Æîæx¼q<,`O‘N°óhx~{"èÝH`)atSqyK4"e¥eÃLqý]µdìuëàVûàsNùäJé¨†1`ÿWÂgÒ¶°/®k¯Bß_™ÃúŸÉ~ ëGœb#xœ‘=Ü †{ÿŠé"åöŒðžNÑ©.eŠ+£›Ä†»Ú¼+¥H•Žó¼Ph9Žj82<M†ëQ	isÂH%¦—œ»‰¬Ô¢;c¢P€ç|ÕÀ…:Z¡nãQÒº#29
¦µ:uXË¼S¢íß)%xýõûÍDK&†\R5¥7që±~…A
%!ÕOlb¬k›/…|Ãài…œC›^íõ~xË5SoiG%ã“bB5”7´;¯uö!)1/^ãœ1gx8B¸lôÓÒ–¥	–8Op£®û 05íU×ÛÔ±,û{ßÁ‡-à
®S|ëÓÃ{ÍåA4áî»\oXð!xh¹Ú¾Y.~%¸Ò§D`£sðù 6Åó®5ãLÝ}˜×¨›ñßLõJ‡nxgZ£ÊÓ¶`.Å.Ñ[øÜ,øöˆö9:÷¬o/ÿ÷IÝeð¹Û’xœ»NÃ0†w?ÅA´Á6ŽSª
U‚	F‘/'M ±+_ZåíqRÄÄæËÿþ|R@)rÁ±¢µ\µBj%„æ‚R[ó¥Ð–³;CŽ* KÀX-¸ÖV3Ã”m4k¯ïymP4Â4©d’[JTNðŒÇ	^0Ø}~í·h¼‹)d“*ãÇJå`²n$£µlà†n(%åbìSÂ OÊõ8À»:¸²ÛÙó²ØÇ±²8W%å›†Ös•—*9ùÐ»x{¶fG#(¸¼î4â‡Å¨à³³Tê
5uÊ•Pk	yÌaþç0­Ê)BaÀ…W½+>NÃt½`1.‘‚ë–ò´‚·®Äæÿ:Ç„Ê® z8#˜ÙÁ,¾~¶"#ŽC,¹Ù-§Jh¡V„¼öevíÛv­§íÿÆL¾¾¥u•WxœTKÛ6¾óWÌ-@â5´~k)¶—&h/	ÚCQ,FÒÐb"‘IÙp‹þ÷~¤dg»è¡‚aÐâ¼¾Ç8z*‹uU6ûC¹Ùóa[í6šïwõjÛ”U¥7+^•ZÊj¥ÕÀ^l¤ª)YÛÃjµ.ï÷Ûu#›µ.*½¯eÃ›­ûõnÏR+cë<}/ý…>‰÷ôîë·µk¤v6D?ÖqY»~Éã{ºßm÷»âP®7ô¦8…ÂEobO?²5ÒÑo|´øõ®9çÃ‡0Y6’RwÅê°/¶÷H]!UEàz G×WÆ
ýòëÏBÚtB„Ú›!b*c££i²§^ž9)õ8ú„±»,Èž¼hok	„èØJE™“©…@iÏÇÒ<ÐY¨å“¤85‡XF8ÛÌç¥Aû\îØ¹Š»Û ‹‹K¬‚€pŽÿîùÆÀ! \%ñ,ÈÒ£­£¹J}iM ºe{êÝ)A@CÝLÈÓùú¥(=/^Ó_ùõš¤£Ê[EÏŸ9'£L_/®³ÜiO¯%óõßo•J€§)Àø Oxóä€Á˜ÖipÃØ%Gt‡f i:gUk(ôØA°8z»¤Gî:ñÀÏ6×àqe ¶ÞÇ6åß½×ÍBÖè‹±GÜ€´³‰í$ösõ ÞR©ßˆùªwIõÅ”ðu:¸1ü—¦tbo¸êdý#LòªëTÏß’OÀ–Nˆà†z˜^f:þHÂ}ÙfL{iÇ¾B´Óß•žÊ û]c¼ÔÙÂm²®ÊR›?%eåqŽu»¤Ÿ^Á«ŒëØ7q:O…Æ'ºÞÔ8©Á…`n âm¨ Àp×¡|øskê–Îì=Ã#ùä|& W¡(Väè(UX^áõ|}§ð™ 7ÎGˆÍ´yÉåhéÆi;f»©Å¯	‹Ò&c€º™‡ë´ß· Ëdú¡“¤]KõÆšjÍ!èuD›!oÿó½»-³×ö@ðÙàŸ¨¹sZßU—‡ÿ÷O§þËáÝ›0xœRMÓ0½ûWÌyÙ­Ü|5iWh%8–Žhb³‰]ÙNK…øï8v»TâÂœÆ3ž÷Þ|GŠu©”äbÝÈ†*UR|-Ë¢£¾lë^¡,[ÅÙ™ ]‰uÙÉ9‰Mµn©TÔÕ¢VEßKU!Xˆ–#Ã9ÖÁr4á#9?^ž„•$¬ñÁÍ"¬„V8¿…uSoê®Ú4Þð–s“¼G£i„o¸7ñõ(OÉyò³§•¤¥´áE»áUK‹XÊBìkÏöH°m#H:jA ², xmö#AVÁØ»Ù-Íç{8+„ñUaÀ ŽTÔQÂ@ r!|úúL,³lSâÂhp¢{@#SÐ‡XßÏ*lƒhKD‹‹Žœ7Ç‰¾/Þ.ýH³1 ƒ»º`îû2h¿ÄÍž`Š½.ò¬''û*X›Ûn/ÃÈd¯s"ðð+E¯v«ë¯¤«ÝJË¢–èï]F¦Ÿq{æ‚»«wmá¤Ç&|‰ë	@èužn¾Ô&ONØCZE|xºé¸œIžÄŠ±Ï:Þ‡|°J=ôçíÿÝûyEÿ™5xœm’É®Û8E÷ú
½4k0%1H‘<²<)~;R,¶fRž¾>z¯Ñ»ÔªP8·ª€{e€LÓæ”AÈk˜pŠ9U£›‘A(ÛÒL•c“*m ˆœ=‚ˆ&¶µ(´&*>¤S-Ð :Ãÿy“a ˜¦ãH‹(eL5 ´í!·Ì!2 †-L¡­LÊi‘B†Ð üñÕü­€oþEšiªºauõT]U•°ÌóTÊž¥rÞ2ô£(¨²×¯8•IË¾uÀ_dq‹4FýÏr'³Åíf;tXÌ¶Îñ´Ÿ|Í¤ ‡pC×qÜ‘ãø®¿LÉ±¢£½»²’ëÐ»Íâá8ïh±p–Áê¢çímã=zøðâ±¶¢'‘Ë3ò“C<vÏ`à®ÖIišÏcÜSÞ±¼=ò¢^P~Ø¢Þœ¦nŒÒŠˆósÏÎ¡Øî´J—qÀ{{¯œŒÚîŠ?On/WŒÝ|s„bm%,4zUSãÙÛ·ÊÞyG›ð-ÉtÖKEž(¿ç§!ûÙ8ö§é¨%‘yµâ¼­Ä±_•çíïöXu§ô¤CÇ÷ùH‹^YØ

áFNú$4ä;»æšUrŽ§Vpµµ£\Î2þ;­òÛ J<×®X<bs¯Ûàû~tÚÎks«ÖÖ„^\tÏ×ž"¯£Ëò=Q.{÷ÖçõéRçÛ1>Lì·B=ÌÚyóSA?—GÏTþól²ÿÝ1eM¨j³5P· $úG3EM™£iC‹0ý]CïiÑ=úìwIÐ×L–Êþf-(JqÏá;r8G	dU—­¨-B™–’%úâ»Dõ;úŒEº!•ÀQ–
ùP˜ã2xœµQ]‹Ô0}ï¯¸?`¦´Ó™.‹¸ ¢‚ ®àÃ"ËmîM›5MJ’ŽŒ¿ÞÛ©û² >ˆ/árrÏGNR`†¶=ö¬úê@eÓ6„…VM««¹;Ë¶ ¦ÅlÆÀ.AWuÍšª¶9•Z»¦+:¦Ë¾8ò¡âî€Je¸¤ÑxÐ)áSÀ³qpç’wøhÔˆlá3>Á­ÞVòi_Go™aÊ•Ÿ^AÙ¶E]×‡âû¢.ŠLÐÉ¤ÄÿC;sç‰oàŽF¶³xèÅ©d¼ƒäA*ˆ,¤}o¬1"ˆ‰	¬‰)ËÞ;¹˜/Û­£8ÛGŒÄÊJƒáñq)Û¾ŽÆòUÔ¸á™!:ŽÃ°LR÷.'a§ËÌ
cZS—xd³_§Ã½¿º<”ß6»‡êyhdÈó\äbòbŸ‰ýOP¯œÒj~}åðeäÀZaó1^Ãý^Î3Ú…×Ê»¼µâž½c§xH´.âŸ{Kã_º»7ƒcÚ{­÷ýåæŸ÷¥Þï0èà‡`Ôw¸}úä´!/ø¿ Ûæ#’xœ»j1 {}ÅöÁÇjõ°Î„"Lê•´JöÉètþ{ÿ@ Ý433ºDk#cÄ9bç4{ñÚÇD…¹ r>ªwYh©¦¹X£CØ{ŒŠ¦}Îb²Ù„„¢Yñ6~Z‡^ªœà‹¿éðšŸð¾n«LYÞ=D†œƒ$D•Úù\Ç¨*nõ”p¼dWékmŒWšôDJ}ÖG"ïZ)»x;üuPw¤YVŸ4xœu‘K¯›0„÷ü
K]Fí5Æ\µUIB7$<Ûn®¶$<b^I~}ÓVÝµ³:}3g1­ Á¤6#„JKPLuƒII,DcA)æRbÇÒÐj¦DÙ)Â“„J”èRç&²,š”è6ObT§”A#6ÿòºi$PPKb)S˜&áœÉ±þü„DˆSÛ\c]›U
LY™‹8²´
|âÃïãkÓ5â_€NDÈ€¦	FA¨%UQämû„½¼w1øTVJÔ—û×4o³.þðþKë´ÉSðþ—Æ®ç¯@è…`ë{+g·ß¸¿}h`hÆÉØqÆÇ‰ÆÑkNC3œlÆ+;áuo(pÞí}g‘F¬[õ£->LcgAŽ×;Âº¯‡%"äw»»”ÇMo¶Ó÷|Å”Cw³H}[GßÏ)Ÿ4aôŠHwXv¦?›öîß'Àåi<Z4g„ïæfÚ:iùÐ9žÝæh¤EåÍðÒ+—!œï'û×“rƒÓpÌ¶¦ì £üd`Ì¯?¹Í2ž{ŠÖIÞ«èœ¿çÙkŸ©L~l›ÍËÙ#ñ,¼£‹·}?ìVØ»å±Ñh \?¦EòÍ-Fô„.ê*×`zä¹Ù›;n¯­ÍKÄ¡<ÀQÙLœ€ØõüÈ³™³ÞíŸy’…úm7?¯‘¨ŽWißü"ÜîgøpšÀÆöš®@2<«ÞÎÐlìƒÃ² \~ÖÀgãò°´?›¹«é¿Ó–B¥ÔÝå”¸v¢iÁ;HU OÙð"óÛû²/Ä[^æí[RÕ÷7ÅÊT¼I]ÓÅêZ¨`Âž—<VLÝA/T“W%¨$øOò'!2
”xœÏÁjÃ0à»ŸB÷‘ 8©•2v(ŒÁ…nlWÅ–CêÇ¥ôí—õ¼Ý„Ð÷ó+'ÐÂ©ccÈ·BU5{oZM½5®A2]ïk5s’˜Á»M§{D±­·Mß\DÕÎ2	·5ê†ºJñ%S‚=Ç #|ð)J‚»þOËe‘ÒÉ#TÆ Ö„ÔˆÊNçsÈYþKõ¦­~©º&žgI[xŸgãaÿò	c°QêmÑ­oˆ»o!,ð|x-t‰Å”Šqe©¼û<Ü3Â·
>HRlí”\ˆ§ñV*uk)WLÞýmûWgõµu˜!xœÐÁJ1à{žbð¤hË&íf7EDQ|…ËìdÒw“%›míÛ»-Å“¢·L†ÿƒùsb†
©4h¤áecIµX"Jr¨­²²µfª–…è1qÈàÜB["ãI'm©ªª.J£em	Õ	2X,šRà˜w1ÁÏ-¬q8Á½=œÃ8ðÜòH­%MU/á¶PE!(vÏ™ÿUªÔú‡„}ÏiÏØ¶Ðú&a:ÂžÓàc€è ì;Þøàó†bÜ$[Þ8)ÄûŽá’†ÀlÈè¤äióƒtúvc <Ís!Ö;ß2`ŸïÀ‡œ¢‰¡OÜ§H<S;n'þ,'>¯OvqY4qRßbf hy2_ý'+¨ˆšÊ*ƒ¸¾ú¾ñÉZ80~üvÇ®‰íÕxóSqv›5ÇÕ_½Š/»±²ç—5xœm‘Í’š@…÷<EW²´&6Mó—JRQDEÙ5tóã È˜Už&–'‰3Iª²È­»¸õsÏæt‚1 ¦‰bh&Ñ°jb˜¤8!š‰ ¡¦1R™Ð@H—j"XÕ˜"ÅP»F)6LD)SUƒPÑNtƒÐÔ“TýëOÒXlÒ8Á¨%©
”I§¦‰FÙÔ¬J¤ïr.€Cª‚•àH²Š	ð‰oÇ×¶oÙÊ¾ YÓ ’e]Å`„RÂ/—¢ëîf·èæ}>U\°º¼}ÍŠ.ïãwÃÞ²:k‹<¼Ž=u½ lÜØyn`í£púÆ% ¡µÛ²ì‰emíí¢0¯™„öRÏÏx}U„7XÖ=Û³¼}ƒœyx+¡]k»ólÍÜ›ÚvªÅùÔ¯ 	#ëšoÓbUâh;ÅJgi‹gÿ‘ãyAõcÅGÞ±º&|TwrŒ÷ñW¹Ç…o:…·ÁÏ)D|&2¼t6jÉËÂg7‹ž¬§Ìv{·Lûƒ»TNë…¿êlTl–ðgOj%f§ñ`ÔáKê–ÊaN}>rQtw6tTy63Fnä%‘2œ½€Ð)Ø¯ÆU$PðhùüØÌEnL1ÙÕÃcÌöl;ã&_¸‘[âQr6º¸X%J˜“IØ¼ÈSW<õá–J`´7^8`D\Ù[—Å‹ðÕµ?nâYqVxD'­6
Ž£UvÝ|áãõ¶áÖg	|ö­†K¿;›Îÿ“VLdÔ}YÁšžµx/kŠ
RÁ/ ÈÈ0ìÊD÷ÐSv}ì¾„JRøÁ»WúüÁ Ë E›ð»x%Ï@MîñCÎ*@þQ^u‚—?¿ÿø6õ	ç˜1xœRM‹Û0½ëW{É¡kc;±#/Ë²‡ÒžJ¡-ô<–F±¨"}$äßwìô°……BušÑèÍ{ó49AoÔ^#‡~<4Êc×ÈÞèŽŽhld×Å‚‘|†Iw{ÙK®i}c§µžL?4Í~èŽx”¨l•é–<‡Ñ[rðOž"<ëë¼¦’¨Öôí04]3öã>pÐÎg›3ýT|£ÅEÓå	"U‘PCž	´M*pñ.œ`ÁÁu&ø¦¢‚Ï18Çd‘8ñ¤2é!~Ì6ñÕÚ;Á]9äÓakÌ¾'M­”ZÉQÊ‰ZRMX­ª…ø:%ŠëOPü=÷„d5Ud3$¸Ú<ƒ¿œß¨¬á{Gõ©~„X¼g°@FG°ûëínS„^y ,`ý%üZéþÌP¡s€ÌCÎ=
ÅžäµêñLiAE	‚ßLšCÊ«^O ½q)@âIK‰6”ô®W‰ù6ô&K8›r•Ê”ni¡ä¥äGÐLd3àfƒ6ìú,Ü…a¼^â}Ì,ÆÕë/!2¬šnOð#Ÿ)DþÎç{ZßÓWO—¥fo^ÄwË‹£«`Ì†ûÇ^‰ßX™q‘2xœm’Io£@…ïüŠ–æˆC7ë(‚ØŽñ‚±“[C7‹Ã¿~KsKžª¾:T½×·”Y'S¢*!‰ÔˆS¡8$PR!•e„1Us5niÙ}Öz<ã– Òb‹:ÕtB‘ˆ"]C*…‚¨ ÿ¼¢!Š"¤‘P›H€Z¬DP§Q(¨‡¢¦I2"0ä0ëÓª.3šƒ3NJÚ‚'2ÞÅKÇ:úHè *Š I•ÀÏBà¢ª(²¾Ÿa;ë‚§²ji¿$YŸ²ðq~XKê¤Ëðð¯Ì¥ínÁÎÞ£koÿtXÞûàÀØ™‘iæ«aìÍý*Ó7áéõ`®Õô*yjÝÑ0Æ&q£ñ-éÂˆÙÍâ@ºöÇFãÀ9fµ-¨Ÿá…¹’–iW}ñö…vòä8l¯9(¬¬I!¼ ÂÚq¿¼…½>Êpš¤DÈ7&ëµ¯üTöÂ¾Öß7‚'æ·v5x7¬Rzâ›·¬%c™2kà•¨ü–~Q-Ý˜×Š¨.fÓúÓÍÝÓ~·PÓ~¹¶(nNÁdÒ~¬,Á¢ìø™Znw&yá)yWÑÆ‚I2ŽgÚ•i.=_ùÎW·kyœÂ[÷}®Ÿ¬±Å~U³³{>xd×ÔKKi­‡ÞFÿ6_ñ½ÏŽ‡‹¾+×2ÏÚvñ{Ärœý÷Oü©¾hU[Xë¹©e5AqÃ«É	ôHÚæ§g<_H6?ôîÍrkýì÷NÛ„‚šå9hiÃh×ƒ_s %·Uò¬d·‡r(è"În´{ ÇÕ9K²²ûŠl¸À ÿc#ùŽ“%xœQMÓ0½ûWÌ­ Ø*qš8[­Ð8Á=p@MÇãÆ‹cW¶³¥üz¦´‚H–eç}ÌsÍÌÐßÚÙšá`É[í¸í:w°zg4÷}‡È­ÑN0s¬ÐêwdF<Ü¶8p7hê;Û7;"j‰ÌÎY=ì.uJÞqæùï9g¸{üzOÉ2¥Xj^¨n)Í[\Þ@;ôÆŒº5¼jÆ¦Qò0ûZ9Ã[Œž|Äc”Û=¯‡û²ÞZ¾B‡F7Ýhjªø4óü|
Þ] ¾TðVüKA©X'áªF˜—Pý)ð7ž¤ìÒ"Û©zñ	/Î“§	0p’Ó*ñå7áKx\„_Áu°>3Õpy-®W†g’(Î,3@¢”íÕBMkÓ†Šß¬°èmà¹w«Ôƒ—ìMrîæpÙÿ_ÄêÓ¯äö@2÷‘-Lé¼jýlÌÇ^VôÕcðßÙ~þ[êŸ¡~ Ê`Êé’xœŽ1nÃ0{¾âº‚ŠÒñDÃ\¤JÊ©©ãÉQb‘EÁðïÃäév±˜Á–,=rgpê4ŒcçÍ#“EÔä\°èd
“ºù,± Z‹BD‡DCÇÄsåFë¨7dx´Ôkž”ßËgÊð*YÖ¼IÎpúú>s
Â)n%ï\ZNkë÷gè,’u¶j Ñ£ÖªëRŠdxñq‘+|øK¬íîá¼í›´A~Q«6]EMEÕ*[ŠG¸„Ÿ
D‘ ¸i joËU²RïKÕ„CšçÃô8þï¦úT]u™xœANÃ0E÷>ÅìX Ç®§ªP%X`ƒD—ÑÄž¤ÄŽ[¨·ÇåìfôçÞO‘C«lãz^ó¹è4Î4Æ©½Ô5¡…Å¶e+Fò	dOµEá$ÖRXÁ…&¥äQYae‹’…Î8†9]B„Š´\á•b„ã×÷ÉG6ø-ÅlSeÃRa~„Z«F×ªm4ÜsÃ9+Á2¥DžÑO4ÃG_¶£ûùN[Þ¨rtC5/­j*
ÊÖ9“ß‚]àbX!ûrí`p€qÌKéÁØ™À—ÀS‰"EÕ[‚ ]Þ?ßè†LÊ§n“OÝ“ìæ0v>ÄçŠ±©Ø¸]†]=ü¯-ûWÉy‹xœP¹RÃ0íõÛ¥€YŽe9“aRPÁ@µŽ•£`KYJ&?@÷öxÇnŠˆ€JQ¡¬ÕJé¶oj¾c¬¡¼Ã¦‘¬çÚ4ÜJÙîÈ,#ú¦æ=&šÚ¨Z°žIÞÎ•ìÛQÖKT	+ˆÌé"<cÄé/#ÎßGêà—³N•S%ó#Ô¼íxÍxÛÂ”’2˜\JáIz‡#|ÉÁ—ê`®¿à¸ä+ƒ+•SVŒÛ¾PY¡’yÌƒóËÃÕè=÷pA°dò´ž`c˜`Žn…ÙëäJB>N¸ ˜à7	<¢tBxû|-=¼8]$Ü¸âEG7§ï×…Û&"œó’þôœÈq«Ã8¢NEÄÈ$+BÞ]	m¶ÁÚ­ºíÿ÷ò™„ˆg–xœ1OÃ0…wÿŠÛ
¢-Ž›Ä)Bˆ¨Xê|µÏ©!±#ÛiÉ¿Ç-V†“ïüôî;½ˆ@rÝ”˜Ë`Ý¬Œá…¬Ë¢k!xEëªA,VRlÀ@.lÊRAZsTe]Ž…T;³S²ª¢üSÎpL{à‰õ<Spûþq¯¼&å]LaTi©|¿ÄñŠº’uæHW¼áœe¡·)Q€t–:Øbëòt«çæ>Ž‘–šNÖš.ÖÕ*[E¶²¡[ëâõQ«0özê#¥‹KðÒž µ#xƒ·.s;Œß>ºaL`ãŸ0‡#ÍÃ)€nú]·°®› ³”ßY69†m¨ÅD¦–ŒmivÈÈ.ê	¬³Ébg#éó)?H^Þ6À?Ð¢Ïj¾âÅlt³ÚŸ€è¦,¹6¯~µ9
½ðÆ,vÓÍÿ¢f_pæ¤Í)xœ•Q»nÜ0ìùÛÅAîÎÒéq’ai“”Io,É¥Ä˜"riçþ>”#pçlvgfg†‰ÀtRJƒmkêº—¨ûþÒ£éZlÝ×µ–]h<‹#y†ÑH2C7ªó [©ÇkÙK%»‹¡æÜUúÜ7íP53Ï!Â7Š´\á;Å÷¿¿¨ IŸ8fÅ'–æÏP÷Ý¥¯†æ<Â§j¨*Q‹e¦ÿ»ºêW±º<YŸnSpVÛi¹cC$ÎÑÃºL<˜d(áRé­Ë‘„øj6„ÕÈô2¯™^€7wP: ÏÅàö@…¼º"gŠÏ	¬ßÖb¿<-°9.ƒræÙ:÷jáF¹HI[Øš’Švåq“ß8çE‰^šLŒœÓ	~Î6á1o¨°^èõqÅÄ;3„ØIªèM´õ@isø¶’pþëaOs ò)Gë§=‚x¦%*ÎèÜf|*üË¡¿zåÜ;yÒÇ`ÌQ^ïÞ÷‡â[áßò—#xœ•OoÛ0Åïú<&X›Ùq"[ÅPô¼a½lØµ (*ÖjK†þÄÍ·Ÿ¼õ°ãv">þøžrd†“$)MÇA÷LGy–¨ÏZ’Œª¥EÓÄ‚‘}Õ­²½¬“Ó±l­âAîÚŽTo5ŸtÓÊN`Écˆð™#Ï7øÂ1Â§Ÿ¯OSð)ÇBù@a>`y„Vž{ÙtRõð¡šFÔÁìræÿ ¨sÛ­zˆe*çÓÇÕÐ,‘¯›{S–ÉfšBbž|e0|uÄBTñELã‹)ó²ÛÃê¦é]›Gþ[ÖM[Ÿ(º%‡xºdHLX—‚—Pí9¦ƒßGWŸ#úC®œ~3‹÷LœÆÛŸK»ý`‚•+¥V„šoB#½¦©zÛ\o‹[(J‚Éy†Ý::aÆJÁ’6.¿-L™8ojzÌ.x±bôÎ_Ò¾Zúæ.žÍ}°ö^ßþí«Å/-¿µ’xœËjÃ0 ïúŠ½—˜ÕÃk9”’Cþ ”žWÒ:8Vå„ü}B Û\f¦UpÙâ(ŽsHE;;8k	©÷ºr•¥DcœÖ‰hŸœÖHº±gDÃ!r”WÅˆV¼µßRáÈK–~ø¼H…ÏtÿƒÃº­Ò%ùMýhÉ[?ÀDËå’[“7T¶<§=|_7›Ô5—Z›ét§•:åW"íÊ4íÂcÿßA=pjY>›xœÍNÃ0„ï~Š½£Fvê¿Tq€gœ7ö¦5JìÈvhËÓ“‚ZŽ ½ŒvæÓhj&4ÚK%x/Ñp¡,ö¢uÊIÛª-©^¶hUÇfÌ+p^S×I¯¶1ÃÐq…(Õm»%Ó™Á
Ëp©‡”á	c Þp)Ã½?~‹Ç²j<=€ÐªÛjmmw¼åœ¹4M¡Vú/j¬¼¢¬_Âèwð|ª=d	Aq9Ìj‚²ÌsÊ¦àr‚Ê%¤xÍÆ^"¸q$ˆDþ‚áË¸Þ„ïÍny Ÿšz ë‹ýV¡s´ªSsn>oM¥æ÷¥aì5¬[ü&Ã¦?ïþšÊ¾ ÞŠì”2xœm‘Ko£@„ïüŠ‘öˆ’ð)Yì@À±ƒíÛ3`0¯ð08¿~½ÙÍ-}j•¾VW©†Ž1 @Y#"“¨S¤'‰NUUE
J(U‰&',•‰„¨Ìµ¸cõ ˜ UEFD®&0Õu%©,"ª ¨,¨éL¾yŒ$ÊdŒ%B%QŒ4œ*P$¬0EÆT!‡ÇáÔtÀÂuÎJã¬fx¤Ó×òÜ=»§ì7¡Šd]¼ Ýþ$MUåÃpƒ|pGë¦cmy}Îòá4’ûðÃYÖf}ž»¿cÚŽ€Ð	Á›çÆv·±¿tp`êÍÄ4sa‘­r•ïìÅÆ\k§By½È7LÏX×80;âÙiwætq"g¦AÃ(Èò^¥‚O¥¶Ò–¹Ç6G‰··ºm@(µ…{Fåeµ¿~¾6}ýì«7¯¢ì†ÍÇøÔˆpù¼“È˜¯8ƒÆ¡à?ÝxŽ}ä¯ã°âH&ËD©«;ÊôÉOOE‹ÎÅ-EÜ?WëëÓ>‰§ÌY„g2áØMÈÉ§Ð¯tµ°Ï\Xê±”Ñ~³G2<XçÃÃåÝ¸yµì_õÕ²
P›Ö¼+Y\O
ÓÛ½èÛj†Å,ÆßìX»ÖÄ9™H[ãÕˆË8®<å‰¯\éÚ{îÛC‘%êbL÷¹+–3Žh¸‹o÷*!ws	ÔÉ´³J[,“%‘Îï8‹ÔâÀ“%ðŒû×™X?7Æù¬ËhÇ²ûY?€_"”H»¦y†§‡4Ÿï:V2Ü³»—e3=Ç-óüWÁ·ú3Xù%™xœ1kÃ0…wýŠÛÛÙ’l+”Ò”.YJ¡CfIwN–”Êrƒÿ}ºº=ÞÝûà+™d#Z[Q]ÓëÎ¹•RZj‡¨l+õÂÖ»˜L±@ëœm±Ö¦7¼•šW¼áR55
Á[ÛÉNˆž°’ÌLåœ2¼™èi€£9EÊð„×5¼ŒÓH[¤g¨¥E£”TðÀkÎ™K!øRèSf'?àöˆ|ôa
°Vékò™ÂÍ E¼ß; ](â­5ˆ„°ÿ8ŒàáLÑ\	"-ç’`º )iÊw:»ÓW¸q.eôñ4Ì[xOeÙ—3Áþõ ©_ãÂÍ&ÏàG‹±mûô‹nRßoì¼ûKœý ¦wŽè›xœŽÁNÃ0DïþŠ½£Vv»q…Ep@.HpŒ6ÙujÑØ‘ã¶Êßcø$.£9Ì›™œ˜”µRÛz×ÔÖV½j©ÁªvJMZi3 -êœ˜1qÈÀÒèí•´­ŒkÛÆ)ª•¥Æš¶GÙ›]ËR
<çcLðˆÁó	>qœà–®¿æ~9/¼%¾ƒ²cëŸÊ
ndU¸!N“Ï™ÿŠkÂyæ´‡\¿ \&î|ð¹â¼v	ÃÈS°¬SOB.Ñ ‘# 1ÏˆÃ°BðòüðöñúÔ©®P<dÃVˆw_¾Ð&:·é×ý_WÅ7hkr2xœm’K¢@€ïüŠNöhf¤iM2³@”ÑQðÜ€.Zy‰úë—Ý½M*_}UI¥ª­q"$š()¢¢KŒÈLd2 MÕ@a”hšˆcáÕP´ëXÑ±$&’Ž‡*‹)ë¢$Â€t¤ÿ¾”êt0I"RMO”43¦ã³4UQVcÆ U„¨ke&Q‘AŽö/ F/¬ÿJÞš®g?V(TVD4%Q’ò|ÎÚví¬uº½e—üþÆ³öØÅÏƒðM¿ð&ãèéO˜S{¶D+{…ü™½46[oúÅ$ ¾1Ó0LË0Öæzž)ôq·<ÓÕŽ'ùãJêYo«l13æ%/F£ùh9IÒÜMm‹ú|) xtWæÎin?V˜·¨ŽFÛ”ëFfô¦Ê,z¬«©ïXô½6zo{3IwïØ´¢òŠH@ïí~´œœËë*íPÜvÞàïÙoÞ·»Â>„³ô/K¯>YÜY^»¬0æ>ñéêWxÜyçíE²ONé—¶tÝÇ|†_kt¯IûÍù§ãdßW¼TÓ¡kfßS[|úÃUrÊáçx„%sËÂžæ+KÝ±>¥;¢‹}~[|ô#<OaJû Ž
Cnäð‘Ì•´\“$
9#Õ(ËCmoƒ‰ºå£Ð{g[UãùAeSÉ·ðÑì,-nOö&Àý«€^#ùo6]N¾¿˜°€šºtyŽj¨:hZô«XFi]žQÆ£~ÜÜ‹ä©†¢žš. øCÿúb¨åY\\Ïð4Ôý^šxœ1OÃ0…wÿŠÛP+'uœ¤Bˆ‘³c?·V»²/Tü{LAB°Àvº{ß{zÇ -œÛŒ¾mÙiM×hc½Vè½ó“rýfT0âd2"S£áüf’1ôÖûÞ¸ÎJÛŒ F5ùA¹N
³ð>eº71àH/f‘éÆ/Ã]Y
Ö·Õ¯«‘T#]ËVJaÓ<fü¤–_¨˜–pt[z>9Ã WäR¤	>ePÆ•7âŽ\²Eˆ§=.ÙÙ„H¼ÿÆ
çª\ÓøªPSÄù—©øaÊŸvË\U7UÅ‰À‰D”P¸žÖB<†ZÅ­’÷«émûWSñƒ,®”xœËjÃ0E÷úŠÙ—É¶9„ÒE7ÙÚÒõX%
ŠdôhÈß×˜„n
ínàžsáNID ûfUceÏµiQàÈÉJ‡®“‚íØ#mlÂD¡€m´ºf#¹ìPkŽ¤,6gµ–óM?0¬å¼bpäáìÌu9^rÍ´6ô¢—JÈ¶
žxÃ9Óñrq¥ÐUÅewWÙX7[ø˜‚Dž0|QÊ.HÕSfl´¯† œ~Á¸EzÀ¹$ŽàB‰9¥x&]Ø=_ÃûÉe@ïã5ÃÌÔÉG4@s~û¥v&·Ã~îË…Ð°sÍeéµ. kÆÞÜ<Ò¬¢µ«ñ¶ýëì9B•IšxœŽ½NÄ0„{?ÅöèNë¿K!DÁ@A½±wHIŒÄÛcÑ]…D7Ò7£ùZi![O.gV1‰‚ŽAÙ!²KLAÉ|p•­FKSPEÏ^Ýu Š(N0Ç¬MŽ”¢á£½—
Ï¼Í²À_7©ð¿~ÃÓ~ìrÎòöÉÇÑFwØ/M*ë:·&ÿ˜š¹J¯pàe\Ò±vinsÙnèížŸîl¡Ê"¼‹1¯s¿Ê§¢zš¾ïÿ21?PŽi™xœÍJ1„ïyŠ¾ËÉÏ$‹ˆß@Äsgº£™ÉÍìâÛ+¢gÁ[QõUo"€Q4™‰r“óƒ$fD±!Y‰Z“žÕNM¶­‘<{£ƒ!œm}ŒžÐ9J£±^OÆ"+:ú{mðD[‘^ém“÷|û—ã"Ëhï¢qÝw8"ª¹®ké]þ1Ué(ŸáegêKIÛu¸5Ú•ú){…«4ÔüË¥žË—™O5çSú8ÿu¬>¶/`ïž4xœm’Os¢@Åï|Š©Ú£å:ü‡­d+ ˆÄˆAQ/©g`2"|úu³µ·ô¥»ºï]^Ž1HY—’˜:2œ¨öÉH	$P³ˆ¥ë¦–M N4©FW˜Ÿ‚MŒ™:„º¬‘„Ø	4Rš–¢¥ªýŸ7ƒ+•õR‘Š!L4Õ2lMCJb˜¶’bSÓSˆ%ÔŠœq0CÅ%ˆQVaNÝ×ðÔ´þyÂ¿lè¶ª›²¥‚T ”Rv¹P!î°OÅ¢MÀCÅ8®Ëþ)£"o“ŸwàYVgÍÀøo¹ž„àÕÛÀ·÷÷µ—€ºÆM]Çq§Ž¹Ñ3Õ-2™nÜ¥™ŸµõUåAç8ìŽï®÷žcÍW·¢ÎÁëà±+$àø¦çæËQÚ«…¶?/ªF‡@MÛäýerPvlÐM/i·íG%ï×‹ÎÊ‹Ž&±L+3¦e¸téL…ìä¬ QM^õ»ò*ÄÎ·‡…:‘ýÞvú4^æÓ|öYW½|Ü„êz!2	<gÕK<S|{s^4èØß¼@É_ºçŠg<xÒÕe}8Êy½³Xé®•ŸmØÜ“¸)$´sŠH›ÛW‡Ç£(Ðk~^­8CoŠ’D‘dÓZo“õ‹‡æïöè\Ýtù6šÌ¹üncz4^î‚ w¯ŸÝÑÖ‹[x÷”³I¾Ëe!=ÍãÃvµ—Ý¹¼íIsˆÞE%{”ÀcWé_f^8û>1i…y†AÝ–%àø³Å ?dC1áìh†º	¡·ñ‰µI‰Ç˜sÆÇ%Ë$©º^ð/0c bÔœÞ¿÷ë
.¸iÐÝ“V ee‰Sñ	¹·æã.9.kÌÿ Å	ßŸxœ9nÃ0E{žbúÄÆh¡#Rø)\\>-)”ƒÜ>ÊÒ¤
j>xóß”Ñ•¬j§{©ººmg;n7H©Ø£cèV¬*!êV;ôŠ5Ðª—Ì²jv£æÎÔÜukšQ¨­L1ÑY…ž.êèÉ¾}…—¼e-ž©êäØÈN6==pÍ,L\–¹üá¾àDçH!ZÓ¼û"¥ÝbAÎêš™è=L¹Â¹}ä«7šàW$!.øE©`)U¶L1P™@%®äq‡¤üÙB°ûö›)ñ}ì(Äë¼ûÚCtî ßO½#> Õj£š4xœm’[s¢@…ßùSµ–Ë0\d¶’­€D/Qß€™Á18’øë7—Ú·ôËéêþú¼œ–‚R€‘©áÌ€È&¶¥‹iå™I0Ó #)µ3¥I­$`#”Qœ†lZ$‡ëÆˆ!¬#hÈ¤”˜³ì?O3†Ì\ÇØ„61G)¥&¶ø!È`¹–C]Ó ’vòTðœVœ–à%-**Àé¿š§¶kéoBÿÍ2±nZš¡ƒD*y}¹p)?`ŸËi—‡ª´)ßŸ
.O]öûøá¬hŠ–`øYîÄ"°ô—`ø‘³Ù&“¯¹Ð·nî:Ž;vœ•»šqÓ^ÞÆ‰ŽNg#¾é"ègQlg{Ù@ï6Kâ·çpÆŽ^`ïKÑ6:Bóæå¯(Œæçëò(“x$éQµ}ÓìÆvÎ/¡ú\–+ŽâõqÑîV* ¬tÓDq½î÷Aåæh‘¸kßï/±6Xö“Ý”WKé¼µºÌØ¢Ø¹·ýÌ[%±wa»R€Ë§üÝ°<Þ9®èA}ã‘„é«ÉŽï/ŽgóDxÏÚ´‰\kœ%;ï…ûf©XW\D31?°„¶/ž56ý½}^aZæjÓ‡ÑHG…6n-s¢zÇD—áLí.*ÞZç‹
ÐÕÓ:õî¾fx2æEß >¹×n½r4ŒOå®ÁwyNkœ_ã×(mf%»yª['ê}û¨€G6};*ß™M¢çŸST4]YA¯m%ø¥YÈLÔÀ‹´W‰¨›áçÃs)Êá+}W–f‚çíÐK}£€œòSÚ|-Í•ß„·ùÇ^¨y]U4—Ã´,ÿ_Ss‘'xœ‘OoÔ0Åïþsã Yœlþl*T©—r ‰RqžØã‘cGö„e¿=³Û
õ€7kæ½ß<ùq&‚AÛºÆŒnêè0¦Ýj±íÚ¾Þ»ºkÚ¡¶-µb¦È0ŒÓØô-Mz¨õA]ÓØ~ê¦{2­u_÷88…Ï)Ã=FO¾ã1R†öt}Ü•­ÐÎÒ-Ô}7î»vèjx«­•IËâ™é­½nû«r8eoÊ|¥%ý$°³™q­çP2™\NX_Œìó{“b$Ã† Ô·ù¯_`•û"åœBç´ñ`´ð“DŒL"†WÖ²Sêcžz$~S@gpXXTË¼¯…9€Ð¯5SyÑ%áåä¦
>Ò;ø±‰Óæ´^wžwðÀpÂ1IrÒ"­	ãù„çkÚË*ø"SåŸ™6™í¢Cö)JÄ§B×ù§Ç/Ÿ/é?‚óAÄç,¥¥½4b«ä\5oþU˜úZØÒM’5xœm’K£8…÷ü
K³Œªcu¨ðJBž•J²ilˆ©ð6Pä×O¦Z³ë+]éêè|‹«sDËÐI„c,3$§:Óˆ¡¤Ë1ŠSM’jkRMZV
 ›±‰°Êb¨ËÐ€¦†Å±#‚!yªò“ÅDOÿ÷§ÅÌHiŠŠÕ@&LTUEIªPj"#ÁŒ0Œ%Ò‹[Õ‚WRrvï$+Y¾ÓñëøÙõûFÙ?@Æš©hÏ•Á"¥¤*
.ÄÓìqá÷1ø^V-«ïÓÏŒ‹[{þ€euÖñ¼ü7öÂ"°õ¶àx‘u|Û/¾t	H`ììÄ¶,Û±¬½¹f¬cgo/õ[®n¥FËZ7I`-·³áQ‡MÎ]—x,âÂóöŠ¶âè_9Ye:…=8™bmVÒìÞjÚÌ/v¸ó;çú8Ùó¹—òYw$aÃ©T®HéÚeÔw‘–£m™wrpm¡|Ÿ´sH;R»^¤š¾Ïje4L–bLÚ^è@´F‘žºú8Ü7S´T>Bç³ÕÝB”h®/Ž.»Þ?tõˆŒ÷vnmõÕäSpZáña5“@GÖi†epàÍüžµãÎ=_ë´›¼Œ^BÓ˜eÚ†ñÏfñ¸…Ž>£ãñw:œg¹q¼zH•@·9´Rç|u.¥oL²o®>­Óãe™ï_iœæ‚@[—ßö‘¥n™&Ý‘óYd?$ðCýGéwf‹èõÏ‰IkÖfÔýýZÖô¬à/#¤mU€‚´‚—/Y=ÍI7•É/6<kú+©Ê”g’T{©[^Š¿Ÿ/—\ðâÆ@ÆÄKÊˆè[¾@ð‚ß ¨zQ÷â_¥‡
F˜xœ±NÄ0D{Åö('Ç9;—BtTTðëd³”Ø–³‰_/TT ºÙ‘æiv8&t½2ÖÔ¤j×’ÆKã¤©-Êæl”:mŒ	3†¶³2g²²­åEvZ©ÁXm‰Å­KÖ`ë®|‹^1³ðB1óqŽÏS:õq~‚Úè®€ÎFÁƒÔÅ=3ý/-Â6S•²|…ƒgÿIÀ7‚‘¸r„¼f\öÐm÷Ÿúœ!®œVâ=ûÍãÎ ÇŸˆ;ûŽøæ€ÝÂ²–ãJi?-p4£ÊžEÇDyÚ'?NB¼¢ŠÎUv¿þañøf˜ª4xœmRMo£0¼ó+,í1jÆ€³jW…@R6*—Ê›ðƒIš_¿i¥½õžÞÌ¼ÃÌ‚1`©ÖRÊ9fòÄ dÊ$–ô”&HgªšrjB¥#‚5 DÇŒ`ƒXS-ÕŸb&‚&S–ªâÄ2¦ÿùñÛ/ujaU'ÐÐ5¦2#’’b¬[*£N5ª9ä­ .i
V=É&Àczþ^ž{Ù³û”ýši`ËÄª`¢BUUh[×Å0ÜÈ‹bx‘	xlZÁºêó9+†\&÷7Â²¬Ëú"w_ãx? ëÅÄþ"°7ÛÈû¾+@çÞ¡Žm;3Ûðo¡÷EÎÒÊKô6êÂ?Û6[ß^öæºÔY²]ºëÉž_ ß#Ã¯\mÙö‡†9Û•Ö¢`e¸´>Äë\Ÿãkj®Æî@gh?šçÂ2.v—¬VÀz<ÚQ¸ß:YÜª"š”NÔ^‡n¤ÖækŠc³-OÈ&„´¤Þú‹0Æt”[èy‰£€~á·òhîv­ÞÌØÇ×ÙI8=ñø]˜oÅéSF"ò9‰´ƒ³ë…ÞarjæAuÔU@ì’þŠ5ñp	¬n†L#jÌ¬5³på,qÑŸv»ª¹¤«74º._ò*@+§ð“-MC£Q€¿M.ú,GÓ—dÀfWG²ê6¡'Ôøùu,Y•{#ÌÐi“nE™ÞÍ½)ë7,0Â'<ÅåñfÇw6^àþœ˜²b"c “U;IÖà—fBpÑÖ ÈÈù—;AØÝ­T¢W”f¬Ùo³¤ŒYà‚‘T’~ëäþ‘±á£é‹ô£j3ð-ü§ú–+xœ‘OkÜ0Åïús/YdÇë?!	äÔÞšBËXÙndÉHã]òí;Úœ
…„†÷{ïi8îÆ¦©o›Z¾fÐ†Ü m]™NWØ£Ó·ÖÛ®Ô†‰C£mgŒÖGmµÑÖêM×ö½65öWiì†VáÎsLðŒa!¿p
”àÞ^®‡Ç¼g:Xz€ª=öÍPµ†/ºÖZ™¸®3ý‡T…óJwðB–îž!!ÁýNà$L™Ÿ&âSÈ‹=ù8°RVÊ/c™AuÐ0c²`¢¥<Ó'zÿ
GåÐK,ø)Š}“K˜„VA"O˜	.‹(7ÌŸ¡<§¸O³âx¼R
ägÉ ¿Á=ÂH3ž‰`fS±Šr1\u)‰#'i_RŠÅWNÅ!Â{8¥žJþøÒàD)•vÁ~¼Î+&I’‰Ö,äÕeF~wÝÈHÃ²2
6‹ÃÚbb²7ãÛ|£Dë|8Üÿ~},jbÈËðATÜÔË"kµ7Ñ¹«è[W {ê›2xœm’Ë®£H†÷<EI³DÝ¡¸FÝ£†„prÈädsTT¹€„[Š"	ýô“îÑìÚËö÷[²ô[
 äRÓ¡cì¦Ôb†K8èŒrKÃ®cSË¡8Õ™ýjÆJKÔaÐˆFÓ-t `Ø7-’µ±…Lf`#uþ×§ÔÑtÂ4b›TãS®SkŒ1èæŒ;ð¢0æ¦Bz™7MI]@‰Ž$«A oìñ»øÑõ|eðÂ¶å¼ÎÃŽTM×4…6UUHù‡…œ÷)úV7Úrø‘2ïÓ¯/ÁÖ²6ëŠ}ù~.b´×h·coØ¿ç
RÐ£ó©ïyþÄó6þ&*t‘O&[ÿmœ_ÌÕÝ‹ÇÙÂ‹ŽþeÙØN”GN4ƒª¹™ö\¹5É5ïma˜k~Íœj·~ˆû<˜äàQ8¨Æ ñhçŒÎ1.FI£uëÃ6yVïü¡²½‚Ê™}ÔçHÏ—äºN·Ëè©U	6Kš<«÷üE¾úñé£9†:1™ˆd$,²Y)¨9ÝÂ½V¡C6šäž$Ý´êÕõ:¿ÍÃýÑòkÛ>Ð•¿“÷YEWoÕš†AK‚²õG–‚rUûÉ/†?ì³ÅîWÕ,¢fq¸ÞÍ¦î`'é9:%ò²ü„c7ØÅU8ÉWÑ2{lÀV;ÞoéÓ}·ÖSs•ûËóqû³µhÝ¿ÑŠyãÙÖË’žó9ÒØµ§iÂâËòx³·³î»‚¾«·ÝVùÏ³ žþÙ1åD¨íË	¸õÐIô~ý0â¢©Ð80²€zT°/}ÿJ¼x*J+ŠZþfÅÕ÷
>öù~–E'ÿQý™xœ•ÌMjÃ0à½N1pÐßØV(!«,Jw=@G3‰J,Gn›ÛG'(tóøxð^]™ƒ}ä!’Od%P¢FN8pÒf´êW.°wÉÅ “õÞ&+h-bÐçYL”Q"±Š[½.+¼³|d.ðöÕ¸»5íh™`zD†Ñkè4j­Z;çZùßCu_s©{8å_(ß3Ÿs:o[‹[~T¥>ó¥pê‘nzîÿ>W/ßWBž3xœm‘Ko›@ „ïüŠ•zDI–×URlƒŸ!ØÔ¹DË>0¶Y0Oã_ß$UÕKæ4šùæ4MÅHP¢rbŒ™²ˆM§&Öt›@Ì¶aÈ´,$•¸b¢XcØ :äŠÃ°1²Û†‰9Ô7n$Œ"õ¯Cj¡)$Rˆ01‘eA¢bKa„«KLI¸mEÆXdìbœ
VGÚ™çº­Ù=e¿€‚K·ÃD@†*„)ò<kšØÏši›€GQT¬<ÏiÖÚäþøf––i¥àîSîÄŸ­ÀÆß€×™¿r¢m8ùÊ% ¾v‰ë8îÈq^Ü— SË¹>
Ý¹y8êëN«f½ã\.pæLã¬íV£¥š„›Òë^è‡<ÂºLªdô´s_ë¨_««ýÞ»Vžßh>ÈùéjäùEMeßk‰¶Kf‘ážYoÍ s¢Dã`}Ð»Ó:×½f¡âjSÔßx|TBò{¼Ìƒ’Yòîôc¬µ“U»*<q°—Ó7	Œ‚ÅhªªÅb7ßê‰?æ ÙUZ¯=Yñ-Þur–ŽF¼æÓµX<œ´Ú9§·8M/ÿ¢,M:]›±ÁVµføz‘fCV^ë¼Eþƒ½O{ƒ†"ó©3/Q=. ŒíJu˜yxcEç~+wîN.»¼.6†v•×ESì÷ÁEöÂ…˜$þqKÌ±1­¯–1Þ¯'^lŸ$ðDµp&ýýl²ÿ˜´dUÊ@ÙžÏ b—–Õø¡ Å¼*r¥¸ YM
!iîúâ®&XHÇI•‘ú'pº"£@t9{ÿlÞISA`üŸe"ý«àð™!xœ1O1…÷ü
o@•ËåÊB$$6Fä8M“*Éõß“ž@b€É–í÷Þ'×ÌëIQG½1Jkìxr“A=hMh†5[ÒÃ ûqÐb™c§ˆ&­®9ví‰$òèPu(§Gî”WëIà\7)ÃFÏ^ð-r†û±4we.¼²|Ýz•Òý¤à\*)¥ÝÎ×Êÿ•JN_RáÐdOåîÉ[ˆ‡¿ÂøJ5øØpë¥™ªoB<F Î}«)Ÿr—¨†-·IÓù ¦
û´ŸV\¬¡Ì¦Kå0s…Ã(óƒ–Ts
óêÌÉÔ¡Ð¢ËLQˆ#fŸ
ÔÎG»0|[@2ï{O\Ï
Ø´ìCJÛy¦QÛ† Í) b81­„xöísö29wiŽ×=V|ª£´–3xœm‘Ks¢@F÷üŠ®š¥åØÝ4žJ¦(**"j|ìš¦Am ¿~’LÍ¬rW_Ýsîæ~i8Öc•RQMgªnr
)"*"F$”“¢l@‚9§4Ñã2a&#©ÊL¡&:ýç3¢ÆÔ0LN ¦rJUqÊÍ„#ÂH‡„!C©¦°[sª$²29Ø±´<Åï_á¥¾Õâg,~¤k&1)Âô †PáUQdMó!³fr‹ÀSYIqÉï/iÖœnÑÏá›³ô’ÖY
úŸcÆSã ¬§cßÚlÃÑ×^
x¯mn[–íXÖÊ^y®ÞNNhÏŒÓ™,[UNß-«[‘©åšfXvÃƒ¸º¶7_ž_»mÎ¹© •·IáÍ­Gxpåå|ž'e:™Éb}i¼ÅæM²RŒð ‘›Y(ñ~½ö×[ºKP¯uM÷½m?H:¢»7ß$×vŸ\OÝPµŽÎ -m8Ó¶5âÐ/¢Uí½ó±<vøÐ±z¶ÜQ@/0ÅpÞ›„Hä‹àUã:zºŸ{q'wó<(Ë…9™µ.^îÜêIã¾:µAwÆÆW@N6êbåoê]ì‘û¦®s«Úg½Ág¾ òjGUÓ–mwu])³­&öÆé*{z3AÃZ*À«›¶vÙcì8Y¾#>ÜqGç%c/ìUŽ]½ÍÎ–£7kKËé>w½Þ|¥ù¬€gÏ_ÊßÎFþðûÆ”…© —[ž)®7Q7àÒ1‰¬
à~üšgu?¬ÍÊEÕŠ~|»ägèçY)¥lñ„_ü‡àþ;ýCšxœµÐÁjÃ0à»ŸB/Ð`'v—R6;£{Å‘w±7£o¿@z½ŽÝÄ'éG('"h´Pe_÷•ÖºÓªÆªnæZq¡Iê„l:b&
liŒ–e£x+¤’hGj-–¹®°¥ÊrÞÔšá51ÁkÂ`Ü	à9änðîÌ€4Â	/p°ÛHá7|šãèzwö…‰þ¢V­U©ØqÉ9[Õ»œé?²YX<íáD>.ýuÁL0º@ŒÝ9¿[SrÁÆoÀyvçà×1ö¹VÔï¢µ»î¶ÿóyo1`0À¥äÌ.w)úMö 1•£p“xœŒAjÃ0E÷:…öÅAÉÒ8„ENÐ.²K_­!±ƒ¬¤ôö5½@ »ÿ¼ß* ]IbÁQoãÔ³CÌÌ2Â'Çvp£ºKÅÜt43F_\‡Â…JÀ%ÚœER&ë9RH^É£}-UŸežpÕùœQõ!ÿÓúX±Ë8júÈÆýfÈ•–ÛmjÿHÕ;®úI;ÛÕ´™ikr·”Ò?ûW—ê•äT4žxœŽ±jÄ0D{}ÅöÁ‡$¯e9„#E¾ W¤^I»ƒm²œ¿?‘îª@º7Ã¼Z˜Á¤^Æ8¸Qœ(l0¢ö,aJ1ïœxDu£Â[°‚ÎikZI‚&ædQGê'O‚“¢£~æo´Í¼À]7.ð’¾Ãë~ì|J|ã†Ñk´^Ã“¶Z«˜×u®•ÿ1Uï|åV¡Ê@Ë)ÇcmÒTç¼=ÐÒ<¿ìÉt%j(¼0í¬Ôenw©Ë"]øyþËFÝyþj²xœÁjÃ0DïúŠ½i­Hn¥‡üA(=ïJ«V`[F‘ú÷5%=·—av˜·Óª˜à¡uŒÑc ôuHÎ&k£†ˆÏ£æA­Tei°ŸšÒˆÞâ„Ct‚vÜ±ƒ#Œf¯™±¢­}–
gZ²LðN‹T8Åûy½nWé£¼€q?j«QÃÓ.Z…2Ï¹5ù7jœ} Š·<Å#¼­‘šÀ”y¹Í÷J«R°¸™Þt5h(é·Ó+uÉû÷Ø•”:þ:þ5®¾ ûc3xœmRË’›H¼óá£b­nÞDØF¯a$=†¨†–BÐHb¾Þò8öæ:eUdV2E€LCS@±r&ƒªS]g¹ŽULš)ªÌdBš…Dji@-”ŒQ‹é²l*†idÄÌU úÜÅ’5lP,ö?ßT +
U6lé ú ¦&šeä–Eˆ¬gDuéÐ‚6j´§eúVÜ?Á~èákÿ"¢k†AŒ§š`c)¿œÏ\ˆ'ÙãÂ2ô­¹tÐÖã’‹jÈ¾>	‘•mÙóýó{fŽ¬PäEhx+ûm›8Ÿw	IèÞÏò™mÏæ¶ÏâþÑ'á<™…FuT×7¥î¶íÔÀžq–‘ÓÂÙ:›:òó[\’\ÈJp0Nwêäs‚xLö{m^ï_dC^u[ëO{þ~äÖ¨]Së²Ô¦Ö%.ý1|ÜwF(¡}9Ø¯×Ä¸w“·ÉdmˆRhº-ø®õq©HoÜ‘zW~Øf-;–%ˆ‡w<Mh®,O:¤ïNžDW¼ôÞÇõ^ÙÆÍc~bú›{;¥Šµ+7=¯·Ž¾5=ÈSo•\}]ÕÖØÐñù¡lÇC1ø¡9×|¾IµEüÞi÷˜Þº‘¤xáÛqÙ²q:­X‹Ä¿FGºb¶q˜[BBíuš˜/•îç¸ÓÛäeÙøÉ.Ü²éÇcëÖ€¼ÜöÃ±ÁrBpêØ^GÑØÎÂþ.¡ï¬J}éOfÎjñ÷Ä¤%t% v¨kÔÁu€^ /D'±îrFG`¬ƒ‘Öšé™öÏâHÒ÷"ÿ‰\þ@9miÆk.8ô¨!xSöˆ=‹¹YéF´)>‘ö¤ ŽŸxœŽKj1D÷:E_`Œ>£Ï²Ê"„l|‚–ÔmËŒ5fF!Éí#‚×Æ»WUUm%‚à­!3%Ö4:tŽ““Œ&`4£f­0ä‰”¸áJµAÆl"ãÄNë`|ðQ…4aWÆLÚJR+øÕÎË
ïÄ…*.wsÇ×ïœvi¹¾€rÖ;+Gí`VJÑÝkiž)zåû‰{QôhoåÞ0–¹´BlÔZ©§¸9~ö-ÀšÿÉ
q,§JyX˜‡ø»<)þ Â\C”3xœm’Is£0„ïü
UÍÑ5Ilf*™
2Ä[bƒmì›„$a3‹ÁþõãdjnéSW××ïÒ¯­… H0KŽ-YÌ0d„™jR9VÍ(âZê8R-ƒKÊ•ŠÖ¢h)¹)TSÓ†”2ƒ2d1©P¡Ê(ÇÈ¤–õŸt
ˆ”f$ôû%fpŽ°e`R„X$‘à3…ví©¬C‹Dd`OãBÔà‘÷_æ¹éñ‹‹? ºi`jŒ †P‰Ê<OÚöO“vÖ1ðX”µ¨²ësœ´§ŽýºßÔâ*n’üüq§óð¦ðçÓ•l7îW® ô‰ˆm“‰m¿“÷ErÛ…çÉ†,ÍSª­/j=ïmvýÜžca&»ÌÝYrœºó8 d*`fE¨ZÍ—òDœAYŽ´‹Yù6Y›€ï'¢×åBg·µ/-ì½w+×.ªuh+`<tÉÇ¥§ð%2±X¸>’§ÎÎöi‡¦©FA¹ËRÚÙIètÎ6ó	'Q'ûóÁ7+Ìlw‡¢M—Åa¶1ìÎ·ÎÇ~¿ÝoœÃGI‡Û‚=‹%ñT+»wÚUÀÕ›G_ÛcÀI×ç°uƒo›â9² <oùšÆ(ê³8óŠWÝKYº`q¬ã›?ë§ÔÊ]÷•¨,U Õ‘3rŽxœ5}.ô‡K±Zx§[.·ÎØ\f^ÊÁÉ³|Lq¨;ÿù€Âíñåj?)à	âCù·™»r¾_Lyu,@Õe¨Å¹M~ @Öeü†ë:R‘f<ä´¹¿¢\ó6úd2€O(çI›”Í@“ÓºI!KÀ“¦Êèõ/çõýt™xœË]
Â0à÷œbßÙ¦ùÙˆˆ7‘m³Ñ@›JMÁzz«x Ÿf˜á«³8-Æ9N„†=kCÆt‘|tÚ7Þ¶­í<º¨î<K©¦t'FM½l€{MÉ{j$ØÔ¶dƒS¼ÔÛ4Ãº”!Ãñ—×Ëõ¼Žµß÷Óx‚ÆYï0‹°CBTÛ:æZå§ÑZósêó å'|pŒ¹æ©ð ‘ç
¹¤	b~Ü^ÕÚ®L¹’5xœm’K¢@…÷üŠJfÙ±‹âÍ¤{Ò€¨¨ø¥qT¢ò*@Ô_?j2É,ú®NîùÎæÞÓ2B€ *$ÂB,Ê*æE¬«óDÆ˜”,"ª&Z„®Š)Z«"EšDý#**c*
2/Ä*B±®*Šÿñ’˜ (Qä‡-!M ’&Rh¼(F2•)‘JcIÐ¹¨k%Ã¨ÈÈQZ>pÿ_M×wLþ ¤Èª‚4E’Á/ð<—”yžµígí¤‹ÁGQ2Ro_iÖºøýüK«´ÉR0xŽiXWÀsÆÃßnì×žè31Ã´cm®§Ù};ÜYs¦ŽÒò"2§7&ŸcbÛ…š²LìÀU²Ù£z>ï8@„Âé:ßowŠ]Z5ŸfÌ=
×V;UžÝI˜®ÌÐélV[pzöÇ^·ŸûÖ°ºNm%»0¼¤QN½áî·¡¹ÔûJiÓUyÙv4t¤û./ó·n4ÊNþ¼Î“%óÒ€Ö^©×9œ–»=œz‘¯$ÝYÒñ&8*Ê¤€ç¾}£ëU6Ñ
ÞîBÕÏ™QôY5ÞÙ‹D~4a¬µã~ÎÌW‡» üNbY;Þi"Ý/n‰7„Æ!˜{*É.³€ïbˆ”€?ZÊ½ÎBHõz”4–ÊÐÏÍ:w4žÝ1yi3#ÄÐ,quòwWË6ì5wcÜPUüÓ·ìŠÃëµ?zLã?9ðYD“Ç9^¿±ÃŸ?Æ¹„¥TÝù©;Ò´àRxPVæ K£Òì:`¤íX1HJLOg@(%IÛÎeÊqÅ%'¿ÁæÅ€¦Ú®„±GAŸ@â?<Kø/žÑ´›xœ»NÄ0E{Åh+Úà8;+„(Ð~ QFN<ÞDrâÈž°ð÷xTÐ]y|æD¨{]Ö–ªV½*k­D)—ï¤è„T•ÑE)¬f‹84%·M#:Ì¹ªÇR•ºÊJ©rl*[(^¨ª©™^iðžõ<¢ƒw}˜1Àƒ9žÃS\#f!¯+YM%¸ã‚sÖûi‰ðßhÒ½¢lþ˜p/Hk˜!’¦5ÞcI£÷Á¦€ÖbOqëüNUz6,u:—^Ûë°=QS„uÂeãeIðÓ¹¨= ~¶ýd~Èö>u00?Ãq@ç²Œ±ýø‰qyUÙ;‹²“p³y[Œ&üå•À!y9„iu4.)\U!"ÅÍ-c¯cº…Ùzk·Ý×î¯S±oI~ ëŸ3xœm’Io£@…ïüŠ–æh9îºQ2
xÃÞpìp‰hh6›½16¿~œdæ–:=•¾R=é=^1	{b,‘!ßÓDˆ\F±&Ê"†Œ)PQ1¤&nÅ2 Â€J¢È4¨‰ª$É„QJ¤ª5ªRÿ?O©¡âË’/Å‡’Š‰Â4@Œ§>>bW·áQ^‘›ÅìŽn˜±
<ûí—x­›š=ùì@+©2F E/OÓ˜ó<¹ÙPðœå+.÷×0æQCŸÀgaÖqúŸcŒ§3l¦°ŸM-Ý>ìÆ_{ ­ÏÐuc¨ë[c;»ƒnwÆB‰y}•ªY«ëô¤ÎôÅÎJ¼A™:r^À°{#¡Åóƒ" ¬X’•sk¹ŠîkÓôíÂf–£8]¯ÆÆq'£¢ƒhQl»oÊÂéïwÇ)g÷ns†ìÝÊh¼p»Ém,Ë²³¾›óVó¬íê±Á‡«HKqõÑ½uòoF
MC×œœœ,gã4õ]	·í,9Zé8:¢jz›ØN¯Úûy¸j­Ú§3éÚ­kõ(^·Î•ŸqbÌ äóD1XB%KÜ,÷3:É'Ö"As²¶Êò$ã¡³Q”í¨‡‡›I¬R²]ÍårîÁ½ì@_ÎWþ^9Ød«õ.gsð¶)è!¾uùQÞÎö$Ò—™± ™“J£Ô£2òØÈvš$mçÓðE /ïêÆ¾3[£ŸV¬
(šËT¬lXÍÁ/D A•§ u+gý°¸BÆ?æò¦bæG^ð8Ï!»¦ì7âøTàõÿA }
ôMðþª¡ŸšXxœTÛrâ8}×WtÍË$EŒc§v¶Ö€s5—d /S–,Ùl[68_?‚lvk«vª¶ÖOR»Õ}NŸî–¥`vš†où0Lô¶Õ°ß1uÚ!ij¤ãKÃÌÇ(õ3šH°Z³,Ó†è&¡-³åÝdŽÙ V›5M­i¶-ù…ŒD3?“<!YHá·øvÿH¨ôÓô‰ˆøwhíŽÑh†	5­ÝÔ²Æ\Júÿ^‡i˜ó¯_×ºsð†¬ÝáÜÞ¼¬œ›¾Œº¶Ýí…öeÀ§WŽñBÅdU­‚ä}’¤A1YëûÖÀŽ§óYioFÃFD’UŠãÀF€ãWm·íž§ñ¼ÄK{Ò[Ù'zÔ[©‹k^÷Ýºµ:«¾à³”ÈªÅg˜13ÕY±[j›gß14ÏeÄ)äe?Ôú]zâ«|“»YÉX
M¯Ì°½|íhÞiëœšÓM}Û²¦ƒ€¼Ä›.\<[¯6ÖúoõUr–îtì°QÔ .¥>ÝW³ÅzØÑÆ·Ê÷¶{ŠAT&Æ&rl÷Äa¿ÔöáhêU-K±V´’sº÷º³Î)²8?~úÂ¶|Ú¹lëf ŒVí‡}ZwO¯\5¶YY—Å÷]×Ýë·Ê‡»^,Æ—w]4{¼ŸtPofÆÄ>´³·•ñl1`Û°Õ{ßoò®6>Ã­Ó^hãWZÛÜvr‘ûRÔ½]³¾5ëïñÖ*i…à›Zuô¡¶3ïÿ›Ö()cúŒ_àz‚ÊGF}YdÎ\Fð8‘J.„zEvmócõð_Ñ¿ýùü˜ƒf\G ú’i€xÂ0ÕþyJ	gœÀgä$?‡¤ˆ±jrÁÀ]À© ÍáŽñà›vÑ:÷ÈÏ«„ -¯sGDÂTWþÆ÷0±7(ýcAÿ23e¦’<Á&â9ðaJü"§72?þÄð#Äùãôäw÷puLJq ˆäXg7’D¨Jä©H5qè+.ØWH…b©«'*/àqÅEÝ!!¡„æ¹ŸU7ê× >%ýäŽ÷'X‹›ò
WÑX”*Ã‡Ae”'·ÚªÐGúíŠà×žÀ–·l¹¯“<¦ªI~­ö-è?°#eP»#J1_RÅ÷ÆDÀTá¦p­—Z:··¬HnhžðÍŸëî¾|´Q3.«++š¹GhÍÃ„‚±G\=ÿ‡†~2Ö’3xœm‘ÍŽ¢@…÷<E%³4=VQÈ¤{Ò2
(‚ÿí®€Q„BÁ§»'³ë»º9ç»ÉÍ9¢æ0Yc¢ÂsekLE&k„%ŠkDÆ\W#©b5/PB=I°Œ	£P&XåQÂÔS!Iœ„#]Áä?>MŒBÃ3IHbBM!2‹Tu9]b­8–5³"ã9Ø±´à5xï_Ë{Ó6ügÌ¤*šŠF0€2„RT^.™Ox’‰i‚×¢¬y•÷ïi&Žmøó	|s–Vi“¥àåskb{ÀŸø`eO<ºÞ,­/]¸7FdPj˜”FàdµÂÍ¥ájÇYÜpmß)ªg›ºîÕÝùïO“ÇMqÅÞµš….ëÝ.¤âZD,õ"çœg‚÷E©ÌèdZÁ|ì²=oë-¦t³ØÞóÓjXÄ3£F'	XrÜWQÀÆÈ©PõPää&ñƒÇfŠÑø£q²/[÷»š¤›}gÝ|ÜNS/õúŽ%°=~´|P›Å=`½×Cí¼P“Ï©—Í‚ÛÐ_¯­í#£€6îÔº•Ò™¥­b2.$~ø¢¤ÖLñìX_Mõ>ìfü™ám¶?±qrËœÃŒá¡_´ëjW&áòŒâÇ¡[yž“åMøü¡ûðOýc¹›y‡±=ÚT‡Ýâ<J½Z{2=Õâr{X2Š‚ÍûF¥?²Á²—›VNÏÄ~“Àµ¬\ú×™å¿oLšó:å jóÔüÚòF€H…$uyfs³,Q·‘Þãè%ÊË†¿$Y'IUÞ¦YÑ|Ê¿€à9¿pQ÷ /SðôyóøþÌ“xœ•1SÃ0…wÿ
mÐ’Ä­ãôz+0ÂÞSl91¤vqdzù÷¸Ýa•ž¾÷ž8AWSßmœÕAãÖ-)ç¶²m5ÒFR£ú¶%qÂD¡±z£”TšªZêJJÓ“Ò®²r«Ðt¥v¦i”ÀÌcLðL‰Ž¼PJ°ÿx4Ñ’‰aæ”¯M<®1?@­¶­ªëj#á¶ÒU%Êâè™éŸ€m×üÄiÊƒóýÙšØnÎÉ3_8ySÀ"£OŠê`ãÁàéÀ4Ñ‘8-‡¢¸ƒ3ÉéÒ}Z ³™€ã/íJï†¢Ëþ
ÏLÉÓ‰8§bäy„=Tk!ÞF?ƒ1ØÇÄóÏiÌ|Ê×°1\f3A©Ó\ÂÏLhËõ«ÙUtnÕ/»¿½I|*ž§(ž"xœ•ËjÃ0E÷úŠÙuÑÄ‘üv(¥Ð]K»	tkô9jlÉÈrƒÿ¾r’m …YÜ;gîLðˆ€ºAFYÚ 
Ê³T°BªŒ2I¡2T(™Èe•’‘{´d#*E)«s](•f¥fuÅY‰R£V‚cž³Tás8:oèqXà½‡§ïÓ‹téìü,C"ÝðùXYT%£uUÀ#­)%QLø? +šô c?wÆN»³’{=þ¬é•›E {7!Ql•k%Û€=üÒö®#äuöë½ý²¹k‚³éû+>¿>´Úy$Ãì­±ÝÄ`r`ð8átì&k?™€Sc%ÂÖéX—ËÖdà§H¸à#Ùhw×…Ó2¬AL¤l@y7^<WM{7{©B¦³¨¶‘¿Ëþo&¿xu¾´2xœm‘Ér£0E÷|…ªzéJ#Ä ©*é
Ç3ÆØ±ÛÞ	$0˜Q@<|}»“î]îêÕyç®n'… ³"¤qiŒ¸IŠ0·(cÄÐ £ˆ„¡Å©R3)Ê<Œ˜R
rD"aƒEˆÄMP3Ö	Ô‰I­ÿ>³LÝâ˜r#:E‘cj($Ðœ"Œ¢Ó(f
ë»S%ËÊTä`Ï’RHðÌ/ŸÇkÛ·â'¿€f™ØÒ0 ‚P‰ª¢H»î!ÓnÒ‡à¹¬¤¨óÛk’v§>üù¾©%uÒ¦	xúg4žzÀû`3{öö=}r(àÒ:‘cÛÎÐ¶×Îz–Þ·(ÎŸ2cõ¡Ëéåñ¨S{Þ¹2Ù2«#D³›£&Ì¯³N]Ž“¡ŽÑ.É²*+›žVÛÂdÏÇáàÜ7È¼WK¶nZ¸ˆÉç‘y%¦÷äüÞñÉ±ßâ8ÜºµËßü¦»N¡é¥Ç`¡£Å¤ßªý^4ŽcâkÝQAçÔÜæ™ô¢^þõà÷»U('g¼“—²´Óky7×n6û÷=Ì)êýT›î‚MvÉ­¢‡ÃJûÖóÓdIvmµX…\_ÖÙŠÓé}íÞRß!+78.`Ì–íj’Þ5Ç½mWûõèvKŠ·ÙIåj®îémroyt¹í“zy(Ù*pÜÐrÑûkÓ×Ôô–âMÇáµÉŠÆÄ¹dÝàü¢€—s;P¾6yî÷‹)K!ê>ÏM/ÚüÐ,ˆA,«¤	»¨Œó')rÁZñÔF2­;E±9ÿøb š(ø˜xœP±NÄ0ÝóÞàNIhÓä„f˜ÝÄmƒÚ¤JRN÷÷¤èvXìØyïùÙ%AƒÊJá›AºÖ4œ£´SQ7‚£‘ºï•3lÅD¡@Ã¥íýÐömËÝ@­V­é´’ít«¤N3ÜÊ¼bð4Ã'Ž<¸óïã)o™ŽŽA¨¶S¢ÕFÁ-—œ3—Å—Bÿ¥*-Ì•ÊúÍÏîÏÎA¢™0TqÁâc€l“_cû7^+ªÇ‘ªnÅ„±ö¯Ä#co±Ð,”c¸É°¦øE¶À7¥¼«ùÛê°ƒæK¶¢É—©šÅ5³žF UöýÖi7Tç9ŸªRåœ'
;0œ1CˆVøº¨;Äa8ô—Ó_w`?¨A“€šxœO;K1îó+¦³[²¼K;ëÙd²nws$Yÿ½¹+ÔN°˜ùø^SH'xÏÑzÓ*­±Wr4â:(=ÖÉw°ì‚‰ÖfàÞ˜n¤–»N[ô€¶Ó^)Ý’¾×¼×ÂH†[9Å/¸šá§•<¸ý¶<å-SãèZ)”l…4
îyÇ9³qYB)ô)·0»#<;{Lg?ÇJ›A¢™0ø(8eÆ^©Üe¨Uãre”Óë’¢¥œx¯`Iašj‰jvË üæ…Ì~ËªoÃØ[¨UÝ!z?}Â¾ Ž§~u–4xœm‘Io£@…ïüŠ–æˆ2nh¶%£ &Þl›Üº¡Æ,vÆä×'ÒÌ)u*½úªôT¯ŒˆPS±ž$£ˆ`KÁ„XÌÂ‰A!£qdéÔ’.D°ªÈHˆš`ój±JLD#ÍŒ(NPDMˆt#Q(þÇGŠ…µÄÀ	3cH¡F3Òfª¦D
T5¢aUeH‘H×fµ cRqV€#I+&ÀsÜ5¯M×°Ÿ1ûC7u„LÝ2T!”¢º,yÛ>à	o§ÏU-Ø¥^SÞfýù ¾YK/iÃSðô·o2[ƒídö³ÉÚ>;ïK—€úÆ‰Ûv\ÛöÎ‡Q€Ý³0³\ÛÜ˜õ¶-–öÌöNW>1ðÖq‹7¢X|¦1M¹.$0§£|™-ù¤®§ÇEqqI{š:®¼þSžï†a?,²a¶Q`SÇ9Š[q>4ÔGþ»ð-ð—³©w(V¡,ëJzîBß‡‹m×ÍUíc÷4[ä±?Vºz#’ëÄ¾Ó»J\fkökoön0¹ydGö¼ÎQ…QŸœ†^Ë½½ª™F‚K¡õaŒçÆ9bf+{„ÆæeXñ)/‹2½ÉôVÅ%Î>Våß'ÌÖ‘ÑÁU¼’Wü:”/ëß|mÀìóp\‡øL6õÊn$à.79’7Eîfò:»ê]—Eš)iXç)©±·1wÎCëÌûª0êŠÁ÷ûAv¨÷"—”¤w|eã­Çß'&­˜H¸tE»v¬iÁEÇ$¢.?³””ü©µ¼|ÌHy‘¤êV²_ÀÍXtÿeÔ¢$íãHÓ- Ux	FšVð*ÿd ]¦ãšxœ;nC! {N±½eØÇÏŠ¢H©R;€eyFïƒ…q‘Û'’/¹M13:3$”>y6-êSJV…¢9²s6µQDâ;ïQRqr^z[‚™¹	Cq(•ÖÙ#£Lñ1®­Ãw[{ë¾žãVá­>á4>æ-ÖõDm{eCôdRüÙ­ŽÁ¯Dnt?ÃgëiÀýÆëZ÷èÊ´ ÷Þº—:ïœ­”cú9ÿó%~Ü!c/xœ•MJ1F÷9Eí¥‡Êt~:ƒˆàÊµ^ ººÒº“41#x{ô ºûxÞ×›ÌAû%Í´LÚk™µ™„½1^{
zÈ8uP“ÒÁz‡8ÙÑÈ³E:ãâÌè02Ft×N\@¯èÖ¯µÁ{Ýn¥¶¯›¬”<¦ŸqêÏk¦´Ÿ¸æ'ÐÎúƒw0 ª;Í©wùwar¿U>³GK¥_à¥¶&Üáã}Oe¾
o ­Õ¦Ô[Z‹,Cq˜¿.|Tßãae)šxœ•»N1 {Åö(‘_kç¢!QQÃ¬íõÅº³‰¿	ÑC7šbff -œ2žÈù”¬1F{“et2øì‘3*7Ü&c5EÃ¢sDöÉ²Qz«lÒê$Ñ¢÷†PÐ}^û€·¾Ý[^6^©¸”8Î§µRÙ±×GP½‘èŒ‚¹H)¾m-sò?Nªß‚h•ÏðÜÇà8áýÆû^Ú
ñÊq£!^ËÚ8zÎ‡ðyþãK|Åcï•xœŽ;nÃ0{žbûÀ?’HF6UŠä«ÕR&l’?rûÈ‚tƒWÌ›V˜aõÆ†¤ÑOÌ4âdFGÊê…P*¥­—nµ,v,œ˜E­¤gfí–Y;$‹ÊzÒ8iGr@=I7(cövË¾ò½§\¼ßyÃà~áÜÞ¶ˆáq¦_AM£ÕÎšYÂ‹œ¥ÇCküƒHÏÈøèmïZˆ\ÆžøèXáèëÓZa+¹ï!m@7,HÇkâ3l‰×Söþ´|_þ˜!~ ÓjnrxœKK1„ïù}—2<fñ$(‚ëYòèìÆ$K¦GÔ_ïìzñ(ÞŠîê¯è¢Š²4ŽZõA‹Ö;ðQ†^HiôÂ…®UƒËN¦b&@5¢ÐÞë¾­é¸µ²µÜ)¹ê…^aÊtÞrf:”
»r\r©î¸7)ÂuüÝî“‰SãJºV
Õé^i	W|äœ­Ó‰ðÿ–ßnáÑ<³LÎdÒ	B©ÉØ%„5cŽ_&{ u3ÕpvBEªKW<2ö³C ‚[ê¥‹ßÇqüpˆý™oæõá©yÙÝm4LÅ™	/áÍ™³Ïè7%„ýÜþñ=ö‹½‹²”4xœmRÉŽ›@¼ó-åhMÜÐ¬Q&0˜ÁÆ¶'·^YŒ³Û_ÏD¹¥N¥÷êé©TÕ5œÂ4ÙÔÌª©†¢qÓÔ„.0aH7‘ Â@6¡"Õ¸áe¸aqÍdÌDŠ&c¢ËR¬ëÐ@š©šÜÀ
#ðŸ^çBfL ¡+
F2£FaB‰…ÁeU¨Ä”¹pß¥U\\f¼ œ”¼?ÙðEÞÚ¾åßÿd]3´çoh‚T ”hu>g]÷ûY÷Þð³¬^÷·$ëÒž|
þs–ÔI›%àåŽç!ˆül?´wñÆûšK@CëPÇ¶‰m¯õ,»:Ù8s#ÍÕÕ5Á`Û~³ì`¶•#…œ¬Ê¾›z—›’¯–Xßâ8èÝ‹y;,æëø4"d£|Ežþc%IÜùÑ<g÷p¤×Gž¬±wªÍv¦;}J%+›KSW«\,W‘…¦c÷^ÏõÇnÏ4ç¡,FìØô}}‹Ç(Ôç†BÂæ^@ÇGOÓAÚÈ5×0äøä_ÉšúL³¸Ú}Üöâƒ›ž»ÙÀÖ7óÝEB{:XýaËä©o»HFzü{?{ÚX4Ÿm&ûëÜððp­(¸#”Ë1öÚEúûð®yîÂ…Ñyl 	zÐíã"º-OñÒT²ÛÝ×Ò-óø¡•L=¶wêÚzÿø˜ñƒ“¥¤PáRnW^{É
^^?æ÷Ó«^³0¥¿™y¡ûÿÄ¤%oê¾(@Ã/=o;ðMÖ!¢©Î Kð0þì¦ü¥ï²â%o«R’ÀåõÌ€¸å€VMÃi>w åM†‹ì‘•	ÏŠÕ“°ª'oÿ G¸[’ xœMNÃ0…÷>Å,©P+Û‰§Bˆâ€XFŽ=n\¹q;-åô¸!„„`7ï{3“&DèŒ`Rpej-Êš”RØÊªÎ•,¬¶uÑ(I9Õ„C‚Ž×Xrj­,GÑUÌPÅn+FZhCe²DÍ©Ü«Á¡‡µp‚sZ‚»8GÜ¼V‰š×¢”\SN)Ñápp)áÿ¤¢àeS~JÉp<àž#‚Ó„:Á>†"NNy÷æ†Ø¼“90aî<FBÜë<‚òF¯4F8õN÷]uº}&µÊ˜ö¨üŒ­õA¥«¤ðEFò	é<^0.õ¿>æ®Vxê9â]^VÏ)B°RnÍã˜O¯JèÜR]ŠŒËK?-7„<ºü"³ÎòuwÞþõAòXòªîžxœŽ=OÃ0†wÿŠÛQ+Äi\U$fFt¶ÏmªÄŽlG¨üzÄÐt7¼÷ñ¼zk&eŒ×ZY#T+)UÂÙ+m´3BwÂ[0S¬ \gB7Â›ÐpeÛ;ê6õÃ€Ò¡=ô×zI^0Ž4Á;ž#e8ùÏñTÖB{O z}­4‡.9g.ÍóX+ýÕJv¦ûEÙµ¤x„gïáBÓÒ š Pq¿¦ÏàÓj'‚z[¨0ökN~ux‡¸LX·U©yu6Ûd¯ÔtÈin—;/¶yí{[<¿K!ììíøWzö­¢záxœ1NÄ0E{Ÿb:
Ø•“8q¼Bˆ‚@±µíoŒ;r¢½=f‰¨ šÑè¿§ù9tBheDGh¹¨jWY¥[Á‘Kç¬©[ÕôHe³N2(ÙÚZc¯›^q’è:#k$Ù®o°¯„ÒØvL¯yˆ	^tð4ÂY_%xÄí¶</ëBG¤'¨ºVÖR4ª‚{^sÎlœ&Ÿ3ým›Z(±£ì}‰á¯4Å‚¸ø:€Ÿæ‘¦ò¼Î>ÆÎƒ.]FB@š) {…øMì,FÊw¤Ý¶¦#ûm<åàÇ"Ìà3Üây ][ÒóLiaÍ~ô© o¾´ÁCtî`®§¿Ê²OrŒ‚›xœAKÄ0…ïùs—–¦M6É""è?ðày’Ll¤MJšnÙo•U¼éáÁ0ïÍ¼Zˆ OÓ\8”Êd¯ƒòh‘l !ƒuÞ˜A³¥
÷A*4ZyanEZ:ÇePs©Œò^2Üê˜<cŠ4Á+¾%*pï÷¯áqÝVj== ?I%n„‚»®ï:æò<ÇZé¿h/´¹¡ÌnqògxšÓ¶ÀûšSãÀÓBÉSrWÆÒe¦ÆMF\ÿË…œnHûQG‚‰BÍ*+„’çÏ«q&ØG*ô}d?òòRcN8µŒ½ÄãWßä{=ÿU…} Ó«"žxœ=OÃ0†wÿŠÛQ+'i§BˆF&†Î¶ï\Ÿpb;”ü{\Tu…ítzŸ÷£$"htGÒMÆ);äœÅar;rA¥©Fõ¦ÛM­8ëD± õ
QumßèV34FZ=rìzµS4êz)~Nð¢#S€ƒ>FJðˆ—ßã9/™¶HOÐýØwÍ8(x­”ÂÎ§—BÿE[97T˜…îáõûØr	+hDHô¹p"„9‚×	éL)ÚUˆ7ýAÀu×‹gë!°I:­¿N´±óãx¬F[!ž.WZ‡<×œ<§Åd²…k\ý_%ªŽùªâ^ç^ƒ)W¿w®óp3;·1ëþ¯õâ¡´’û‘4xœm’[¢@…ßùì#™‘»ôff3-"â/¨ oÝÐÈU®ê¯_Í¾M=T*•S_*9§©(º,éÄŠ¬êDÀÚp(ªP§Q©À©È•¸¢y¨¦2ª¡¨‰²4TUë!‘E…êPe’¬ãçÕ½D¨HŠÊ°@ELÂà…„`:Ôe(’2*"‡Ûæ\T`Œó˜¦ÀÃQN+ðößÃWÝÖô=¤€¨©Céù&Ô/H‚ÀE–ÅMó[q3m	øÈ‹Š–éý+Š›sKÞŸ‚Î¢2ªã¼½jdZ¶ÖÖ¸¶å Ý~k~ï9À¾#„FB›Ñfßø“glGóáù¢¬:¹²{„¢ÙÈœºÑÖ]_/Éjžøîu=ç9 —ncœRiR^:Vºhad÷ÖÇ¥óØ"ýãíõóƒð·ÝH2Œz2TÚxÜ”È,=mÆbÚî"xŸû¾1•âÜå¯µVß¼äÁ÷+)¶Ždï0?sÅÞXÛ†T‡«œ¹¢SâH“¹É8À0»Jˆxšº–{¹w¥é°ûÂ	ë#ÏCq†ÆáæRN˜–RWŒ»{æ›åt¢}5:Ì<àý{<´Û]CÒý’·òÊ_ÜÖ¹Ø½>äÈ¯érìñõU»u"0¿b³»w¬½	ï7£t»%¹¦ÓM®‘©m+ïÏ’‚œzž'péMÅ“,!¼U²Çº1´KÝ"µ‹O|É‰ûç™éŒvŒ[Ò*¢ lÓTôÚÒº¿D*€UEâ„F8‹ßšAX5Ç½úo€Âä]FÁ+M8ÁÖ|2Ô4hâ"ìÍ'E¾™qE³g¸ÿ~ªÃ™xœANÃ0E÷>ÅH,Q+;Ž§B,Ø°HË{œXÁvqœ"ni/€f1óõçëý’AñF™^·\¨‘jÙuœº^ô
Í(:ê¥Î"#g1@)×°L2ÞtB(­ìÈY‹£DÕ×p¥ëÑ[™S†SZ¶˜²‡×'<<øÛ²/OSÐþcoRx&E×Ð¶-ÜÓžRRÕàKÁÿ'›Ìz€gk!^Âo¢Ž†—Óûðv„Mñ)‚«”wLH
?7Ÿ1Ôž„·Ã‚ÕôÕ[gN_ cU/iñq‚sN×‚Ÿæ+rðaÝÌUO™¸
¹eÜrôSD»KÎíÆïÃ«‘Š˜Š´Ÿ2xœmRÉn£@½ó-ÍÑJLÍ(&ïv0±/£†nÛ,nvýàŒæ–:ÕòêUIïUœ1 31(ê2‚BBDƒ „šÊ‘h>1
¨PÎ²
 ŠÃ!#DW	f–‰*‘ìŠL%KªýÇSI“%ü#!l¸€XHDj¡ˆ‘¨ª¢®H uçX$KØx$Ê/´ýJÞÊºdÏ”ýPEÄ*R0%Q‚<M“ªÀNR½×>xÉrÎŠkÿ%U\ûÏà›µ¨ˆÊ$O0mg¶gö3ge|¸;û«/ ´¥˜†aNckn'ÝíÜNvæ\‹ÏÊº‘ù¬5âg†]Îí°>šz›ší))ßÇc„ª/fªß/Ã—•vsØÑ¤®˜Fuþ×|97Ô;ºïå÷\µ¬FþÜ7ô´¤q¶@¯oËÛ­©™3w's…dç±â¨âˆ38©Ä›"uÊ²+ØÛ{É[Ã^¯¦a\Rë®÷y*€Ê¶%+Ñ³$œ5øª/—ës§¨“hTzcÞjõ›ü¾^t|™‹éâ`oœ¢M48…õ¡€×åæó.ÃžÂ¯³ÍMj’6õ”¢¥ãÄ5ç~Wªé±jš­Û«þÉ%39}å~·†b‹b–Ï-²+N[Ák½¯ƒ¾(ŽWÂ[k·ŠùaIâƒú›¿?‡i¢R±KïÍbàW¼z®Yÿ4³WÖ÷Š	KÆ#ŠúzœÝjVVàDºBž§ ¹°ˆ¤ÉS5NrAÈš”ýÓ¤eí6ú“ä ÊÁ`6ð=Êp0å°¯¢¿#·ÿD0xœRMoÛ0½ëW9%Xkø#vì (zØ¥—]Öa‡¡(h‰vÔÚ’!ÉóòïG%nì²]ŠÔ{||bpDPP[R–6YFXvÊJ%e—ö™T$S<´ÔÕ¥TbBG&@©ê’êŽ›
kÊë«1+‹VîE
Ë:—ÕAàNÖÁ“}›uß¨ÇQÃ¾IxèGÔC"íxYU²¼®)|J›4œuäà3M|ÇÞðíN-—àÁÏžE+´®öU„ææçHGøæ	ì$­"PÚ‘Ã´?·Lü¢­!hh¸ÊýÐÍFmMÌ*Àa É9záD ­‹œbí MO§Ùƒ±`ˆŽØ39<üú‚tº?XN9ñÞ
¶Qõ‹#T7p	§Ý@’$»\‚×Ù‡?"ÖæÁŠxë‰}ÑòŠæ¡Þ©!¾ØHuÕ=ÆŸ„=tú+eOš¶RE'qŸ×l7¾lwÇø6‘R¬ÐMœí"aõ rŽ<äfí`ÔÞG.ú&ëÂlt8G‘r 4óÄ%t•}Õü›êÖvÝm{>þçºˆëÙäÅ:^;¸.Œä=öôü7ñ?¶Hü™*
©›2xœm’[s¢@…ßùSµV6w¶’­^ˆ‚¢èÛ03 †›ˆøë×$µoé§®>çë‡>ÝrÆ€Æ$˜DW©a›L•!e•4°ÂbÈbƒ5æ¬l1cŠ"4”D¥T’µ:†#	KhŒ™¢@)QÕÿ~9QÔT*ë±UÓTÓ,ãÊ$]T!”u]p×ž*&¸ÌXö8-/´ÿjÞš®a¿)û»t(j¢l‚‘(‰¢@ª¢ÈÚöažgí¢‹ÁKYqVçÃ[šµ§.þý0ü€¥uÚd)xú,k:·=°ž¯ÁÆž{hÓ¯¹ Ð7±²Æù–ïd·½*ËÕOgeu•¹Ý#Ô8¡f}Û5	©î–þ"-ºñ0Ü#&Ž¹>®ôþ£H&At»^Vq–ÜP^‹Nï|1ó¢se…{Úlí‰¾5£uÞÏ7žíÜà§ø¸%O¯0³œ`t8ó,*ÊÁS2£ËæjSH“Ó†ff´¬ˆoõîâ/†w¾?¤¡ 2ºmì¬nØ_YáAõ‚€UNµëE™l£U]ë„c5?^ nÐP.stl§»Ð^
 )ÉþÝZ’ƒ§?S) J¼9_L&ªƒp=NøR”®ÆéÙyÛÁœJÃ¬õ¶#1Dƒå¥Óùã“wá®Îh‚måtÍýaEG¢˜DwÈ.ç&F‘/»¾¤xÞ»¶ï½»6s­~Ž½3ñ_ðÊPëß™M½ÉÏ‰	KÆSê.Ïg—Ž5-øUS	¯
¥¸æ¬¨®ìéñrÕg×Œõ‚wYNÿ€àKŸø–@\µÿ J–ýRŸ0xœ’ËnÛ0E÷üŠºÈ¢‘-Ú–-AÑ-Ð ]IŠ®ùIŒ)Rå#‚ÿ¾CÛ]§aDÎÌ=÷J) Â7{uT‡F·­’âˆÍ–klõy+6¼U(9ÊV±Yt	ÔQt]óv×7Zo¶ûž·Á÷¨zìµ¸ÛñMß4Lä4ú _…3há·xÐË¥øsÄ•ÆOÀ÷Í×ÍîÐÂÇzS×Lùi2)á9¿2™Õ<áäßˆÀCÀ7ƒHŸûåzRv"¡=ßÃ#,"‚ó	„´ÔÜ›!ŸŒ~)'¤AùP%6c˜LŒÆ»´*ÿ*ÔIµ.zUÀ?cªnº… »c/´„ªâÄú!vŒ|Á‡¾§4ßÊ'Œ>…W*¥¤
›<ƒq	‡ I_·i¯òDŸärQœ#‘
ƒŸ_^`ñÙjz†Ó=HòóHIkÏ4æîôˆ¶D]ùç^QGBˆY´dö†>[º9aqðìÁbº‹ ƒŸÁÓ0‰^ºù<¸‚]»,,+I•¦d&ò‚Æ´ï‡q§ØÁHîc·^&Y®ˆiýN¨ü\,[]g*RŠ—÷kbÕ…˜€‰uåû¾’çî½ß‰ýzÐ8’2xœm‘Én£@E÷|EI½D‰
´’Vƒ!ØØÆ‚‡ìª Ì<È×·Û­Þå­žŽÎ}zÒí[JRL¸Y
ÅI<N	C™ƒ$â8,yŽ©qKË`…—Hà‰,!*ÊKN¦ˆÇ„r<Š ðˆ»ÃˆÀÿ¾‰R"!Y‚œ,É¢"*2	$	"4ä9*3xè“ª:.Sšƒ3ŽKÚ‚—p|,¿»¡£Ï!ýø¥´TD(	2`9ã˜ *Š´ïï²™öë€—²jiÏ¿ã´Oò|¾‰ÅuÜ¥1xú;šanlà˜ð6¦­¾û®ñà`ÀØi¦ªÚJUÚÑJÇ~¥®\m‹’<|ŠífTU_7ªêÏQ&~MQµ+Q¶Žçµa.Ë€¸8o/½6t ïÙàÚÏ[/Xe.¥Îµ×2'‰[«°°­~ïÞ¯Èýí¤Wb]cÀüæÂ¯ì£ñFÝ¹±—õ-z‹Ë|+ìÃ0©†÷Þ¾6jÔÍâSÍ+Ì¬èÜtîµVÜ‘“æ~á¬[ê°›6F³°6ÄY@ÁY®£9†~)TZ5\œ#õ°Ú‰¦<'+«ö«ËÁ$þ›Ø·uÂ§1^X»ùä#\HìT²Ze²Sc‡ƒßvÐC6ž„ià"Óñ®$Ç(ÄÖ'f >Ý¸õËV.Ðª,ºòmñÂB^ŸLÇ×ÞOüMö4ê|©<pên»ðêdµ…gßn’fóÊ€Wwï¯<º1lýûÆ˜=mc
ê!ÏAK›v=øÁK
¢¶*@ãq1Ô!îéÓ­«Ê§€aÈæáOà?(øGŸÇ× ¥Zù›xœŽËNÃ0D÷þŠ»G‰|ýª]!Ä‚?@ˆµ×ÔUGŽCÅßJ÷0«£ÑŒfz#%T6ˆ&i‰žkri•pJsqpÁ-¾ÑÜ![“ý.á1g‰.$BkS´ÎÚ@H‘k•„´ÌoýT¼ø¹Ðïþc¦ézƒçu[iLôh´q•TðÀç,ÖË¥ôNÿ®jmïU¶2¥#¼-Éw‚óZç!Ž×æÆî^¯ÐOÓÎk¿áo
~RðIm-u{-ûVjÎCø:þu…}ëyh.œ4xœm’M¢@†ïüŠNöhf¥Á†f3»Y@ñTpü¸5Ý"Ø€¨¿~™™l²‡­Ô¡RyÞ·’ªjç é±c¤A¤)PaQU¡ˆ4¨ªº)˜Æ”Å±TÁ‹ÄX‹I
q¬B#bbÌ(60Ž8äTF#¦¨ø/¯PÊÑ£Ê‡¯Nh/W5C]S4L‘ŠVT*‘¶9•ŒI‘òìHRp^Y÷Yü®Ûšgü€Òu„d²"Ë-/—´izØI›i×¢¼Ê¿“´9µÑ÷ø,©’:MÀËGXÇõÀÊYÀu<3Ün&Ÿ}	H «-j™¦e›æÚZÏÒ®±*{cÍõÓyäßTáv¦yèd×|›§ƒaa=2w ØëqûÜî&ºoH€	ùŽF¹Î/:•ÅÚw¶9;\Ã÷Z‡ð¯‚U>„þ3SÍ™­e¼çÙ‰‡&Ýºþ^(DS|9ïùÆò£œ%î+Ú–Ðû$£<°×ƒÓv´™””áÎÕoÏ°–Ó2 6’À84Ÿ«,÷ð=YÚÅyv‡‡c>CÝ"ÜFÃ«³ô¯ÅÜ4‰mu0ÞÍ—ë¢™¯ëq.$PêŠó\¼™Î’ë‹`ÌÏîcXÇ…%gWÙ®|½ãg©ÎB¦³ém.Fæ”ë/jî®G®qå÷›Dåö<Éöae“EýÜ/NñìŽ±J«‹ED‡½gÙŽ/ÈìÑ]ÇIÇíM.õÁuûS?wS§‘¾n6ñÆÿ¿˜´ä"á jó~myÝ€o
ˆEyiBºaÿkå‹à·”w/QÙ¼T\\$)jÓœýèßèÆÁ¾Ð iÓ›ö\Z×iY€>ÿñÛð™&xœQKÓ0¾ûWŒÄ¥©Ç¦BXí" ¥ˆãÊ±Ç‰µ‰üØªÿžI©7°|Ùß|™ÁÔ7FpÓ´¼iškU	ÕèºåUuÓ¢SFicØ*º¦k¤#$7¦â‡A#ï:­ºC×ÈQí›Z‹ªc2§Éx/Å~ÈÑa€Wút)ÞÄq§ñ5ð¶i•hD/÷b¿gÊ/‹M	ÿ·µ®Íµ•ÙÎº‡;ûŒ@ú>[<Áàœ‚M+†ÅÆh½ºkžgÂüÌcïrØ"Îgˆ˜’u#¤	¯dÀ¿\^66#íádÓÔ3€Û|èá>¥õZ>`ô9(G`©’æ0Sï¬K8™ÈcGâ»ûp¼ÿþöñøåãígpˆ::ŸÇéo·&¯ZR„ÍÂ×‡cŸ¬{Š=L¤û²Ô^ÅÝHŽò°£!–èJ©6•XFT™âŸ‹1[±Üf³U$ÿ„®ØvEÉ­º¸zñG6Æ‡‚>‹ßÄ<ûfiºðÆÃ¹ÿ×¢Ø/<{Ó(™/xœ…Q=oÛ0Ýù+no$S’E‰FPd(Ð¥[†Ì'ò$‘HãHÙð¿/Õh´ÈÆG¾¯ã%&©ú¶nGetÓ¡î›º©ÝŒúØ8X%u§uÔ•8#“OÐÚ¶Ï—vÀ®ê{ƒõ@¨UÕ·JJi´‘ØS=•À-Íá'?Ù­ñ1Ã§éË•¾C¥ZÕT]]Iø&)…	ëêR"†è-ð‚“ÏèÑ^ÿžâ©´w©nªºk³´ÎR±Yºœ€©`Bi&°.šp!¾Á&8ãDpÉ¾{1Á'Ë’C˜2ðdY!^vâÏBâèbÚà_ºø nü˜'Þ¹.!R„»³»¸tôVô{ŸþÆŽûä˜Kº…Ä•ÀÙ7NbGœÐùÿ—_Ûl‘!{CØœCŒnXÌŒ~ÊmÒŒ)7¸ÁŒÙ3³1ç »ñ>oš]¦¸5§Eñ1æÍ rŸ"\‰iŸ/•B<»¼[„q,†ÛéËÕæ±nñËù×Ì)ãépXSùJìi)O>Ô²®¥ª;ÙKÕÊ²’½nTQŸƒÅo¿lÊ—4xœmRÇŽÛ0½ë+äèÄ&©B1ØVr•-I.»{£LªYÍ*.úú8^ §ÃÃÌà½Þ4•€S9€X00¨ëâècMõ5¤ùLP‚!Ž2¥RÉ*‘7@fºÊ4&ˆÀX{ Ç(à‚QF‘*sÌF¹†ùÏJ®?VÉ\(
¡ìk¥²ð	V…ÄÚ&**0by,Rp`a.*ðÂ¯Ïä­nkÑçâ@šªi*Á
=ˆ!”ŽE–ÅMó OãfÖúà%/*Q¦÷·0n¢Öï?ßÈÂ2¬ãüúæxj­Àfºž5]Û;~ö% kmMÃ0‡†á˜Î<¾”{6tÍ‰e}‘+ëjT9Y†Ùu+Õ±d¦y
ðÎÿØev‘@l6Ÿ5»—O’ÛbpÂc²8{bŒ=ºtçÙ};+üƒƒP;õ2‡äÊÔ¨/³‘²,ñ¡^IÀ'•›•eêF“]`‚góa”wœyëÓ•Œ·ç]×7M¼Èvû^€&Öä0ß¸î°ß$ÐvÞ•yÉ¦
{‘k½kk{x¶¯÷°´I2Çw×šOÎwÝÞçí­Ý+ÓÉD,bh'Èï)Ig<® ³+^êÓêf	¥eØ0WOµUÖÉÒ™’db®‡Î$"#«]FPä®ÕÎªp™?&ØPøº¾)ç¨)[¡ltâôé¿ç¶sõý›óéãíº½h²Ðl(›½àt›AÙid¦Ö«^«÷“#}y6^¾wLZŠ* lÓTâÜŠº?J!ª"õAýW*Ä *3Iz€ßÆ)ÿFàÅ±Ï4`—"æ@TÕã+ŸÒ,®ë8Aýý¨ÉRÄ©¨ÿgÌ© xœ¥ÁŠÜ0†ï~
[ÚdgâÄ¡,{˜í©Ð29íQ±åCl-¶3mß¾¦¥P
B ýèÓÏ_X­ä4¸N¢ÃnžÉlR›êÕ†¤'Ù¡3ƒÖâÅÎ#*¤‰¤TµYÙ;K¨Q÷ã`¥=£¶ªŸ&G¹s‚µÐƒ"¬tÄ›¹ïð¥~ý”MßÍíNôœ1äªµ†ÃôjTµÎú:Ýu¢nƒ/…þ$Ò[Ø¿Û.–M†ß#|°·@)U¿.q€àsöñmÿÚ{	;8¿Sâ[â[Â ˜÷ŽX‘¯/+¼;96OÕ÷âÂæ56,žã)PæØþq!Ça™x¹^¿^ø\ñšïÖ4fçÃ6siÖõÒ<(åzÞöÕ6eˆ\€~ø\Z!V‹dv®Ù~.ÿ–‘øWÃ¦ƒ–5xœmRËn£0Ýó–fµ6Hí¨&!ò~vSl	Â3í×O¦ÓÎªwuuºW:§.9Õ03 ¬²+P…¦&«˜j²©—¤ªjDH¥RAKžÕ "#24%Ô(‚Œá€ézH•cMá…Ú0Uÿ×›†®†¢@™áû-„tˆ¸FfšŠp 9Æ¹D›:ÎK0¤YÂS°§"ã%xbÝçòR5dü7PŽtÃ„ªz²*ËR˜_.I]ßÅNR› <eyÉ‹ôýE$uÜwÁ6Qˆ*àáïX¶ãÎÀÂY€µëÌÈf»²?q	H «¬Ð"Ä²´–^Ò;°²&8>ió–nGˆŸ]2P½.šˆ‘r›ìOÖ«9¶Ê†H`³yi†iØ¸ë]²ž,ÏŽ½é:;º¢¾¹è;Gc†Ñ½–#×î]Æ>›o˜];GHóEJ_µ|”“QûîY»¸Â+¥0>‚BY­N¼’Ùb=‰üÀqæö9[ì-ñOb:QW¾µz•@u*KÒ‹ µôÍŠa¢Ê™ÖÝÀÅqWÉîX„|´žyKÅWÇ;ø|œë!üx/ºõý‡¶¨§e½tòA2Ù>$DŽ£ÅY[fÉFÃÃMëF1ÝÄ‡}ËÛnã‘‰.¦òf_·Ç×m*Yë]Ûó~ð±ÔæÂ¹­\c>\Æ¸7¢SrÃš3aÁË¹í‹+ò=¯g\(4¯qˆsÓ~–ÀóíM¤™Ù³áÏ‰I>/E“¦ ä×†W5ø¥Ü;¢2¿€T06YLû´å%ü-¥5ÏÂ÷·º¤á9É„$Æ8_<øâAtï%uª<MX".ßÌÃ·ó!ÍÅãÎñ
#xœuP»nÃ0Ûõ‡¬Y–_EP¤hÇî™ÏÒÉ*K,§ðßW}ºñHG0E"èQvº¯¹Ðª«jQ’‹%ª±'®k¢7­@vÅH>AÝö¦—•’ØÖZw£n…•é:Y¶Jfb}‡·4‡áeó3á‚Ç¨œÜ/*5–êK<¯ÁYm§%‘š}paÚK–'¨Ú¦•²É à’s–ÙÅ¦D^Ñ[rpÁÉçë¤?¾ÁyÝV*5ýX›vr€.²•ÝŸ<Â³Ö€7Š88LäÕ&§iÆþ• ¸'Ü•"ETïÖOE®\2v™­#À6º5@¤%ÜÒLPŒ`N®É&†å/ïê¶©°þÖ3ƒ·¼[0p(Œ6/µJö	‹AxœÍjC!F÷>ÅmIP¹ê5-¥…¾A]–QÇDÈÕ Þ†¼}íí²Pf30ßù8Ó+8%:2qæn²1Ì½T|âè­™½Ð‚QìŒ•r-dô$¹5SpÂzÒÆ)t!çNéYgDd¸öc©ð„9Ñ	^ð©Â]¸|.mm´tB«1VH7\rÎ|Y–Ô;ýe>íá1XRk)àLõõÛ£Ò[¢ËèOÔ+c›ßÛRƒ\:4ê·#Ø×š?è\~¨qtô#Á²cì9›°-1nÝuÿ—,{ÖUv•4xœmÑKo£0 à;¿ÂÒ£m0b¤vU^!@MR’ËÊC¥é¯ßlw{ë\f4úFšÑt-c@N3M£4™d*Ò SCÓq	Â²¦)Œ TÃ™!K5iYÕD "g†*')ˆ¢„e:ÑÒÊHf#Ìî)ÉŒ/o”1L±ž*
DÚD‡T…™UBU}Â¥
ÖÂé»“hC*ÎJðJòŠµà1>‹çke)û ®é"¤`$+²,Qq¹ð®»cw³>•hY]ÞžsÞúäá¾ËëüÊsðóoX®çG`å­À‹ïEæv·q?ûÀpµ¨eš–mškkð~˜Úk>9ÕåjýÁ4óxðM¯ÕCÔçbKD›WÇš/Ñ1”@"÷4v¥óbôÁ…ïÍèäXƒ3ÅÞé£ôKá¤ëJ©WüÀß3{\,Î«­úqvŠÆ	º@£È<_ck:·æ•Åx±[zË‰S°¼y¼f¼r§MF˜öÞî×P/ÂmwßîÀ#	(öxp[óìÈwG"Lõ™½UÐ~Œ[_Ÿ9WèrV.‚íp¸Ê-t²]6Aï
	ÄÑy7S¦Š“7¦o¼°:ÚÇó‘N9	ß&%Ç¼TûæbÇÅÝçÎøºÏ	wZÈPz	Øåê4ïH6ÝéŽYžÇ™Ä˜Eb«bt“¯ˆÞ`SÖh=dv¡ÞØ@ÔEèzðƒ¢³û$'.jéßÏÜÈùþcRÈÚœº/KÐ²¦g×ü€F kÅ”yJh_ÈøE”<åùå÷‚t¬¢·ßÛ–Ð‚W¹$™iÊRpíëZ´èø²à¿_öá&J˜xœ…Ž½nÃ0„w=÷6†ü')AP¤hÇl)Ð¡è@‰´-Ä‘YFš·¯dïBïÃ‘—3h2lT©9ÉMÙ²cC\iIkkš
µÕu…bÂÄ!ƒu„ªÕÎ”U§UÛ¡©Kl¬ÔJYTs¦e«¨¸ä!& „·%øGŽEØUîæ8zòý%³Bc+\¼¼@©Ú¦Ú®cÙH)V÷âsæï<ð‰}X·=]ïâ0/3Ä÷¨ªËZÖždµFÅ+ÌË4Å”!G8=¾Â3wƒ„îìC_ñõ8¸ƒëà3Ï:†Îÿðü-N~%´‰]·±·ÝMÄ/”ƒuv“2xœm’É’¢@E÷|EFô’¨–˜:ª:
JQQQApØ%™	¢"³Ó×·UÑ«z«çž·º¯­… 2kºN×¹Bc‚…I	çTW‘PÆQ"¤’ÖâÜ±¦%1	âPM´1’ È1ÿ}d>3J±b"f²+s†qÌ®¨:Ôà\Ñ¸!Ñ®Ý5èÓs&N`MÓ³¨Á+¿~-ïM×ˆß\üPS5!Â
¤(+ò<kÛ§<ÌÚQƒ×sQ‹òtO³vßÅ¿ŸÂgi™6Y
^>ÇÇX =kúƒ/.	\›Ù–eXÖÒ^ºY"ùÃ·'úþ@æ\¯–5?’±eéÆÍwÑrï×c'CëÍT³t~Z5éü0r¯—Â±ÛÓ ±58{Üæ!ÿ˜Ê÷‚úåÄ_Ãû9Vežïõ+PžPE±f¬xg±…—øÆ£ÛÙ.lnÝ«VÓÌUl*©±Ëèìø¼_lÁ¦…½ê–·Ævéy¨î¹Êxtsëõ&Û¶V¡áR7>Õ;t«óyÿ~¬—À	’†q7Ý–Ó•Ùei>t|	´íziÊÞ8ÓÅhlë=E^7,®wG¿	vsj:æ–ónŸ.š[%Å¥ï#Ñ“=¢,% ©.®x”£hÝØ5­À´œ¼ax6Ñ¢ÇÚ¶ù$îõO*·ËM…×[Ù›G]2‹¢-{“ÀÛÐlé»³×ÿ¹1i&êT€²;@-ªN4-øUCI]ä KéµG9yþ[Q¿Ôâ’‰«$±ì°8Ÿ|Cí?ßæ÷æ—xœAOÃ0…ïù¾q@«š¶IÓ	!&8"Ä³[;M´­™’”‰O;q‹õôìçOvŽÌ0êIjÂÚè¡jkä¤H1¢i§¡í¸gÕÙv´8aä%÷¦î‰ÈŒjhH[+œ”$-‘Ø¨^ëÎJc'kv!Â.žðŽóÂîèü-Òš¸"¾©•®U×J·uS×b
Ç£Ï™ÿUT×¨˜üvDPØ"x>Ã²»˜ÝÁaL{&(ý‘‰Š.æÏl¡?;†—ÇW8ÖÙ/09\fN•xæ|“ q^O€ËoFïG?»xHÎXžU&\{(‰ì|¢¸¬¥Ä+ A\L»æ5r%Ä›/wÒ&X»?·½A|ºZ“èž2xœm’Ér£0E÷|…ªzéJ,Ô•t…ÁÆxÀˆwBˆÁf°Ç_ßî¤z—·zuê¼·¹·œƒ˜i†&ª"•DA1ÒW#•ÑH¥Š¦D‘t¡‚W-0b]Õ¡q™«7ƒ(J‚¤S=ÁL7(’Äÿ}9"…D
Ô£$ÂHÇF,Ë'ŒÄ‰ÆÆkJ´k³Z ‡V9/À¦à%î¿–·¦køsÌÿ ¤©ÔˆŒ0@B‰Õe™·íCvóvÒEà¥ª¿ŸoiÞf]ôü~8K/i“§àéßX#×óÁÊ]Às}s»ÛŒ¾¸$Ð7³LÓ²Msm­§y{¼q{cÍôì„—ŠðzÓ¬bè™ÎÉÛ³Q1½í>™sÉÖƒ©uv	,¯Ó¹Œ•¤§l(Ýýj×µýyióHÌ²$Y5ÍA¡¼“—õ!¨œ±/‚ó`ý>Ó—g	ÌÃZoå~“ß§‹·ÊLW}lc”›óò½Ø°1öS%X¯~Z]RÏ!7hköÇ½||8:ÇYáÎ‹ù~¿+fûÛ`aßuL/›ÙØö•ÞoÉ²Òö½W·wôaöÛ³=™ÖÎpÃ N95NB÷Y”Áu5;*Ýð¢¹¤K†,=yÔÓ›“¼®ŠìHø9êwÑ"°]r˜Äö$‘À!:êÎÇŒºÞ †¦#wt´¥îÝÕ¹«;I6“J9ãÖìv¡³ZÐZ¤]<¸ƒcÿ*×s½U¤ïÌF¾ósbÒ‚‹”ƒKW@ðkÇ›üBªA"ê¤E^²,Æ¼($éRti^5¿ÇÀy ðM@ÿèˆh“3ÇO¬Å_5èùã–xœ•KjÃ0 ÷:ÅÛ}¬g)„Ò”BÐHzO±@¶ƒ¬zû–~öírf1Ó3HCˆ†UTiT]ôN+½Id¦à˜1j×ÐxíÀ““¹h½&ÌYé¬"TØÙ	qÌÊå$Â­Ï[ƒç­•^kYÒÌN_|øå'^Ò!mË#(´(µñáA)Å§]Jïüß„×ãô“×z»”u?Â™^¸Vø6p/}†ö’ Ðz«B¼•ËÊ4l9ñýø×«ø ÒŸg
ž3xœm’Ks¢@…÷üŠ®š¥•„W78•L5Žbà®¡hÃKšg~ý˜ÌÌ.guëžïÖ]œÓ6”‚H"*QÕ¹Š©*¡X“Dçk0Š1†Š.b$GˆÈBZ¶€jº¨BôÎe‚’D’q%‚$L¨5„ÔDÒ“ø?OHŒhB‰rsQoæjÍ)Ôe¬È	T°I‘‚ÜµYÕ —Œæ ÀiIðH†¯á™wœÞúH"©¢ÁL”EQˆ«¢`m{ƒÖ®º<–UCë|zNY›uÑýøæ,­SÎRp÷)ÓvÜØ;{ptñê{ö×^ ¸›†a.ã`Ö¬³íÂ37ZvQ÷Jã†á×XFVnÁ²óôã‰õ»êl|É^ÐúÛj‚¥•ÉöÌÕ×G-x•ÃÓIõÑM§h’k{ñÇl;5mZ~è×UhŽCJ?Hb
à®çgç<ë!µKÕlê	®¦.çŽ!.$æ:
>Í:¤Ùys
¬ºóöÜhy7ÁÄÛ¬ .geáh37öfz8]0>øg¯d²^ÍTŸ…‡ðe½wóž^Œãðæß‹H6®§·p·@²f×ÅòxÎ
lrj%H|3zHŒQÇ_y—÷àPïì>lèr'Ÿ4hd8mðí& ø£÷½*«àbM¬UEÚ3÷Ú¿»<w—ø„juLóÐî$›o—óœìµ2´­åð$€'gÎ„¿™Ù;ëûÄ„Ú¤Ô]žƒ†^;Ê[ðC‚š’¦*ÀÇ%ùôP`~«Œ *æ?UÅ]ñÙÖ²/è#w%ÍpÏn2Z‚’3â¸ü§?ßû››xœ}ŽÁJÄ0†ïyŠ9*ºeÒ6i*"Â.‚÷`Áû4™Ð€MK›v]ŸÞ.îMp.3üÃ7ó¥‰$ze´U¤LÁ¹7uY–µ¥CÎ‹¶’ÖWº4b¤‰cc%3i‹µÇœª¶.KäÚ8¥¼VäZ_èÂU5
ZR7Lð}êüçû³ÔEf‡þ	¤Vª2&Ç
îÐ Š-íCJü/¢Qçym®ˆpƒà0Ø¥¿¸Åµç]p»8CË­aûê8Bœƒƒ0~½\KšÁ]AÞ–Žo°ß$(:h8A3²>XJaˆðÎk˜/ƒÌ°½¶£ñâZf2S™„ÝüÕm—ƒ?Ã‘zžG²JMš›–‰áfl ±»ÍÄÆNz¯5xœmRÉ’›H½óá£¢-Š¢€r¸FBhmIhA·Z5Ä"Z:ùkæÃæK,Û1sržòe¾\"_6•” a“2!°Å(âÊ¶‰C	'XéT‡H *B„VÒJæ@R™ÊQ[Ž¡–€È2,eKÃ€’K“!Ã±)·íÿø	ë9€3›ÄR‚:„)Â°4MÌ¡‚ÔQ¶¬Ñ¶IŠ
x4Oe4Îe¾Šî·ó½nkùYÈo Z;ÄÂ=ÝÐu—KÚ4Oò$mü–¯yQÉ2»Ó&iÙç'á/eq×i^~Ù`4	–àmò¶Ádé†»Íèw\èê¸î`èºëÁzšÖ·|3Üfvr6W7TëÊ(Üq}RbD÷Ëþ.š?ÈáM0<rÌ»kÎK%ó‹'Ó-›DN\Lçe‡àú>;ÁQ×d}?ÃGôÞNŸÃx±ûãzµÖÀÎ­fA{ÉRÜ£ý6X}TÑÉ=.†eRl<;bÕm³|œSC/æŽaÍ%9Ó÷ýExæûÕ¬÷ƒçsv†«@ÚÃSÛñ×Ûž±ªgãÕ}ö"o·Úx1"ív¢}Ÿ,{‡ð|ÜeÉÁÌNÏÍÁLˆÁØö`Of—SØp¤wtºåñÞZøW¸ÛZ¸G†Gt¸zØ„ë¬éð~¢Y¶¡úx›EÏëqdgº~ÜX04mç‹òt÷¯4Ä£¤LÖZñº£éøíRàz£2Â^Ç_5ðêùïHû£Ùhéý]1m!«X‚²Í2PÉk+ë|‚Ø@UÅ¸¹¸ûEë§MÿBëçÛh¯$mäK^*ý ÿC hš.‘9xaÀÔ‰õi&A*~e+Ù´UòŒQõ
ÿýñÏOù4€‘%xœQ=OÃ0Ýý+n‡€?bÇ®(ÄÀ€ÄÀìØgj‘ÚUâ´”_SbCâM¾w÷Þ½“ËˆB¶¶÷^ªÞ
ºÎhkœ‘ZÊ„-3Ösc<ÙÙS¡:0©4§\y&W¡CÎ:l{Áug]×;—Má#<ä®/6y¾™œ0óû…ËÛk`JJm¨VÎ¨¦”TvKÁH‰ÑlÒ´‚ßá§„`ã ‡&hzh©QµˆBôKwÄ2	ÒÐÛ°f`“
¡†—ŒŸ;=!÷‹³®TL³Ïö[üµêÒãþrá(4µþÀ5ÓJµZUIåœÝ­è”n¥RÓÙ½5S¬³§l•*q‹y.kÆiÅiÙ‚ûÇ»ÛgpyqÚåäcz…’ád ‹Á×q)—zNþGø4`Mý¥tå—àêqÓ]Ço{—™áHÈs|Mè›BÓW}ù~´Ç›2xœm‘Ë’›0D÷|…ª²¤&– 	HeRáeœŒñk¼H€ü ,ÀØþú$3É.wÓ·ºO¯º—œc¤CM·3†ˆ¸)Šc=Ï	±
†¡Åm]SZ*yÝ+GœS’C»€53Û0 ·-†qA0eY¡™6üÇsˆŒÂÈˆÍ±•ã¬@DÏÍ$¦M„,×)GTãD¡C_5ø´ü¶´¬¹_Ùøþ|ï†Žfü@cê4€
5•¼9ŸEßÿ†CÑ¿øZ7’·§û÷RôÕ}þü§V¶e'JðôçÜ Œ^Á"\€4
_Õz¼û
PÀØ¹¹ë8®ç8‰›Ä¢{SsoéÎÌê`Ì¯ºŒFÇ¹m‚È‰¦~'X9¯‰»påÂ7nQ_ac¯ÅBRü€Éœ®q¾ò·¾´óCêMÚãØçd{«ˆ7ÊÕ%­K®lýÊÐ.¯â“
ˆHD¯³K3mçÛ‹»?î°–hšŽMã‹£n	/‰Ó™ËÉ!ÙßR}?—•ééUÃ»‚*`5™¦ê¹Å¸Ÿ–­óm´xÙmä|™y~}>zWºÜÛêørŠ­{m¬<,!äÆü5
x;N~z¸œËrM’uüV@N—³£¿±_l³ãÕ]u}(´8ÛÕo5åö÷µß¯&ñ^;* Olš]ÊbÒC’¦r¦^_‡«Ëø¨}LkæM­Û51]s…·¨*äB[‹óªœÏ
x®¨n(›¯þÿS~rYrÐ§ü2ð®Ÿ6mPÈæDIÇ	eìIÔuSJÁžÚÓPŠZQ>´ûÆÀß´î/Ö8ú3˜!xœ…P±NÃ0Ýý·£DNS;IU!,Ìƒã;§‰Ù¥C),x±ïùÞ½w/"¨…¨j¾©»…ám+”Æh!j­¥l
ÞRWoØ¬¹­®ˆ”Ô¼3|£š¾Ûn9u-
a¤PØ›ZÖØtœ©%} ëœ‚MoäÜö_W©ËÝõCû0—ÚO·PI!šFÊm7¼åœet²)Q€Gå,pPƒËÕO_»¸D*‘.Ô–×R4™ºÉT6Ë`]ÜÁ=â	¸ Œ­`\æÙ‡&»LGúÛTÂSºöÄÜ4ŽþdÝ «)å0î€8©ŠÑ…B\RAï9©Œ]kË43öà‘`þÝ"!ôçßÙ°—ï­vp8ÚDqVšÀØŠõV¥qÌêyF £tò!Û‰å*ò}òVy°‚Kn0QŒj Wöló\,¼1EÞý&û˜°¹–5xœm’Ks£0„ïü
Õî‘JBâ±•lü 666qìÄ¾¤›W$aB~ý’lmí%sššîžK’34œ"“0ÓbÈPÓâ8¦…cMs…)eD#)BDig•²±‘BÍf!”BÃ"1BÛ˜hÃ“HúÏo›±eÄ†n˜,qLJÆRŠ‰u!F!5©S¤+¤•Çšƒ1©rV€g’UŒƒ[Ú}-÷¢ìš²ß@71F6Ò0ª5MIê²Ì¥Ì~.ÚÜV5gMÑßg¹<¶ñõ`ø&–5™È3põ9ÞÄŸ…`í¯Áfæ‡îÓöqòuW€:á%žëz#×¼hžóÀ|=zu<¡ÕÅà³ÎuwúræúÖ²®ÂÖT×Ï#½óÎ9ñ·+xÁãDeßR®ÚBR¡bë´»zÿ>êŠ­º²ÔË·f—±Ó'Ù³aÇö¤sxfD«ETÒèP½ªl^ž\tÑÆ”CÌƒ©Oöz]${CœšêãàÁtoÎz{è;Ú
X
¸›X¦4êsOŸø¬œf¼M§:âŽï=ŽpÛû›´
Ä‘”›t?mÚâcWcÉÉ!Œ
X˜CUÎá@Y‘•8ºÌ/ë"'V+þ<Vûà¼ºØÚ­z™ðMVªz3¾	Î¢ÙÖl¯€€Ÿ·æƒdåqØë}"·²±iCY¦±g›½ÚçÒ[¬ñåg¹Š:Ï5gÌ'âNw³¤DÊßÎ&áøûÆ”%ãM[€³·–		~êØÂ åu	ÂQWð|3pÑLæuõšæïL¼jPQb"ŽWÕ¥dWÿåkqüˆÙeƒ¤¨?8#´®ŠþèÐÀgàë÷?.À
¥šxœ…MN1…÷9…ÅuäfòÓA±A\ ð4µ“TIú3·'-!±`ã…íïÙïÕÌ¨½2ÄÆ²¤ÄuOÃ`¬å¤wLH^)GÊ+j£{/qÃ‘s²·4*¥õF¶¾"ãšyA§:¥oçŽ¼çáy/÷¯‘rr]>½ÀÚh­Œ•ý Ø#Š]šçP+ÿOYì¥ü¦ÄHeZÅóÌ«&p<p)vez‚‘ïr>\Á·g2“Kñ°<À%Ô	n$èî*ÄvbàœÛÎ}"¯!ò‚J	q¾%‘â*·#ìÄ¸€ÔÞmví¸F³#´¦W(µ1äŒ¶ìíGw°B/×¹ÔÔÊ¯“ÂŸâîæ†¡.@ÑA‹¼@I3Ã)†f©‘K'>…ƒ‘ƒ™2xœm’Koâ0…÷ù–fYM‰ØR;j4áMh ”MÇ1’:¯Â¯ŸNG3«ÞÕÕ=ß‘Žtn­¥BJ8O	â&'”˜¦èÇ119ê‹„™q	JŒ2ÖòR)dBCÁÁDj§vBSÜÇ6³â,P$2&ÿxŒ(8Ic’Z&N)£”X\ˆ>MÌl&‰E¨eÄMã‹’9ˆâÃEjð º¯å©j*y/ä/ -B°Eí>w&2M#)ÎgU×Ÿ°§j¿áàáRhYæ×§ƒª³†ßßØå¡RðóÏ¸#o¼ +o^ÆÞÂ	7ëÑ×Ý è*7qÇ8Nà¥ýio°v§vvÄË¶¯Çãl!;Î¾·¡§hEw0IóS£ÔÓ v“Û•º5»5ØÎ¶sÁT®n^C÷›YÙ6íÕìIŸÖ­¦	Tå¾á½íÎÙ	¹4 ¡ÄÃúÎÒ¢ÓæÑÞ>—ÕºbZnOx9±;¡ï†‰»Ï„
ü©ýžWÞÊÙ¥Pî?3D_33@=ßÕ¿"Y»Y¿·G˜|œOv˜“-g¯%F«€Kú×¯Ù‘ÄÒi8ê®ee€ê
OÍW‡uUÎ¦Ž5ê¿¤Å(l¯øxzÎÂ°dÞ;“ÜRLÚMJ*¡r2^wC{è{°^ê[Ø°ÝŒGÏi©³ÔmÔzäÃyy‚~Øô‡ÝÆow8›@ù<¤·“òøv£¯x„M;2þv6Z¿oÌ˜K} lòhùÞÈª? ±1HuqÓXçUqA§Þç_”¹¬UqyKÕ‡¬ÞLhn\e`ð__ÊoÏúäŸxœ•ÍNÄ F÷<ÅÝ›™ ¥ÀcÜ—>?÷¶¤-4”Vçí­q1k÷çœ/_«ˆà¼	^¢¢€\Ü”\Yí|/D†‡Øu†ÙÈVW17@ntó†s+ˆd$‰HÞRÐ:Ó+ÒŠ¹½¥Âû1`¾ÃGM^&9½eWK¼Öý„î{¥¶žxÇ9eYRkø?‹y·—|,x9ëŒ-•|ÝÆg ôÚ}-ð•ÚºÁ5„uÞ‡”ûôG*ûöGTÜö¹ü9ék™0Ã#t^ùÕñ¡ÿ qgÚ”xœÍNÃ0„ï~ŠUO HšØq~B\GžÁ±w«‰ÙNCßWªàÊu4óÍL
ˆ0"¡Z¡©6Ã0ö=iêô(FÞÖ¢éozW·±Ut	d+ŒP¼i¸á$9Çžj©e“ýHµ¢ž”F¦¶4ù —º+|ëàõÌÏïNoÊ°½AÝJÙ´<U¢ª˜öËbSÂÿ¤$¯î)6ª8î²`‘ëŒÉzWÆéÈ~£!ïØ'týt–ÒnóBöå°˜­C8TÆ»ùz€Ý¦	TŒöä–Ûß5÷nïKð×‘ù32±”iBˆ¨½Ë-vAx8bÒÇL¹™!àì•y†¸A–ËGö<~‡œ5xœm’I“Ú0…ïþ]•#5Á‹,ÙU™T¼ 6;Ûp“eyÃ`eøõ!™Ê-}êê÷ú»¼'ç€‰±G‘©éŒiHM3Æ	±X„™e›EšMq¬\©à	ÌÒ	‰I¤%ÆK²˜Ç#Ä š¥'¦!ŠUãŸkªa½pzbÛ@ˆ %:E16XV”h†Á°ªÐFf• Ÿ^r^Âž¦.àGÜý]~ÕMÍ¿Çü'hØ4Fª… §êªª°ê|Î¥|™G¹š~\*Á¯åãWšË¬‰¾¿ÿyK¯i§ðögÜÁ(œÃr´„p4w6Ûõàï]ºÚe®ã¸žã¬ÜÕ8#oë­Ý	É
´hvŽs¼oCÇß>
ä,H[®–žÕÓËg¼¥™ˆt¸éKÜò»œ¶~Z_ë6ž$<–©ZKQ¯›»i1×æ6›Lº–[’ËÁ´5¦ ·‡‹þôP=«N²èØ…'Õ(^|²þpç6yûÝa8ïÔQ¯`Ÿiðá2®~t…7Óx¶²htÖrÑ­¤ÊãôÓ\ëF”OAöÞê>4ÖÛÁÍ&;"ÊyæŸÖAµÈÛÜÑîØz(`§ó>¸¸ôžågóØŒ\7c>“4–·y·.÷ä6F•ãcÍpãÁóS'›Yè%º ¼Q@OÈ68lïþ$/l’MK2Ýg5[DhgUÆóºU;R'}S4S¨Ù>ëõ,êÏøÄGï
¼O*c¨|e6˜ûÿOL™q‘r¸6e	‚ß^Kø¦™D‡DTg(x’þ eÎ/ýZ²7V]¤¨Ê·(—oI~W”a~YAÍ_e¯„àLÂKH^íü• /ú†¦àeœ ¿€Ì8„ð¾@0,iZÿø×
Äšxœ}ŽËjÃ0D÷úŠ»/6zX’B¤Z
]¤Ðõ•tå¸µ¥¢(Mû÷5ù€îÎœaj!¯•RpO²ó}è­Õ&"Zï´ñZöŽËÁs"ö……Rm4·q½’B… 3\]'$r‹ÎQPF†×zÎž)Fx™(ÁöcÅv^q¾õyÙ0º3Jš~€†kÎÙÚ.S­TàÓD3¼ã˜Ö´·;ì/×µîª–Co”€.W•¥ï…6pœ~àTsÁ‘àG8œÉÂÓ+rª%Ïpœqdì4­s¡É16îwóÿMö´ÎZå’xœ}Ž±jÄ0D{}ÅöÁÆ’%ŸtáŠT!]©%ín¢`ËF–ïÈßG„ÔéÞ¼aj!‚Ó¬µÎ›è"±Ó"²Rƒ³ÁŒèµ<‘WFl¾P®`¦Gï8(­*6J‘ei¢ÑrÔÄÒ³eIø£~®ž‰^e¸|5ìç†×;Æ>®Ë#ÈÉ%”ºÁƒhí’j¥O>'šáÝä–.xÿ…ë~ìÔ#ý©ÎN£„‡A5U„#Íx†·}%˜SÈ·…ú{ñº¥=­Yˆ×Ôf°[™»ð}þÿžø*ÆZŽ2xœm’M¢@†ïüŠNöhf¦›ÍÌf@?G¸AÓ ‚€ÐÈê¯_ÆÍÞ¦N•'O%•z‹µ”E–HŒ”DQRYŠ´XƒI¢ !¢A’ªI²H°Æ5QK+°,%£—Æ!˜ÀCHÕTÄ#QB4£TM#Bÿû”",jPÃ1”ÆbŠ‰*UbH#•F‚FeUM¸¨g§º³¨Êi	>£¬¢-xM†góÞõý™Ðß@”1F²¤(L(©/—œ±QžçlÑÇàµª[Ú”÷÷,g§>þ9
ßŒeMÖåxù*Ãœ/àÎ]°[Î}ïoÍ'ç †Î †®S]÷o•·nK9Ñæ&µËA×'v¶ÔMäãñîUÇ¶ÕPLîzõ±¡sœ`J»V­‡È]„ÛÀ6§rw–—q•”Å,:['SiíÇ
?ÂÌBÐ®d¾™:¢×ºø´BjóyqœIwýÀÈfÍâî²öx3³ÈŸ<)s+Äáa ÛÒ»Zt=ê¥›Úá!2+8‚¶¿ÁÐèFì\Œ{t«/“Õíá“ÇìÆ³Ü÷Ùæ^L¶+}²
ÃbÚÂm§‘-_uaûàÀŒ,|ò	OçÀ¾xÉ.T{?7~O¡¾9NŽâ•`r´Öeà—vÁÎúŸòÞ,êÃÌŒ½a}à@U˜n‡ÔÝõqCµ3qÛu&?—ø„à}°3Ä¢ú˜¹N.çŸ=ÚÂFŽkyýr\þonbî_f¦3û>1Î¦mFAÓ—%héµ§?D¬H mëÈ³hàÙ»—¦nÙKUwrÜ“üîˆ «Á“‚¨J@_}=WÇþj»üòŸ@xœ“MoÔ0†ïþsÛV´i6›d»BH $@%ZzŒ{¼±”Ø‘?¶]~=coªq€›íÌ¼ó¼3“àaÛnD_oåv«Úßõ»JÊm]r,E½i{»M»ÍŽÍÜ¡	Ð´Iqª¯êº’•jª
oÕºM½ÞÔ¨Ö\Ý*.ñëà#7Gxâ{ƒÞÊç|xï£ÇBâ;X·MS7õ¶¬àMY•%vštøŸ©mU—»%•ôÁßÁ½u‚c=VÀ„h’¤Œ=éd|ÐãÑk³ÏÁð<h1ÀÀ=ôˆ|œÑyD‰ú#Ëz<Î’RY”|*ELùáï’Õ´0i£'ý³Îƒ60Y¢°*§ÍDœ ´i.Hå`±g+ó@R_|ÁÏßŠ®#±ÐuGuy“!/.áq¾¸¼Ù¯¨äÓ G@“ÓÑàºz”à>à”Q'{8ÛE™É;ÇJí
xˆŽ¬–?¤íÁ!mÍ«“û#ÝœDØ©#òCR¤¯]7v]Í:ôìmt³djW.” •~Yggû§+º©ô"¬QzŸ¥¶Kä6’›ç[Mè	#ºþ Eö±J4)YÀÒ”×I›,ñøà"¢ÕPÖ±ÅKjÑi®!!ÑÓÖ8<QûW§V9kCŸ¢£'7Y‡W,‹Æ¤™þ¶5t²1Ì1$,ÁçTW¾ª™Ã„9Ž›Ÿ;¶´F8¤y¦5“Äþgý</Æ¾kú_äµUêº?Þýëwb¿ ŒŒcc”3xœm’[£8…ßù–öaZ;\ŒÁ¬fVcHBrë¤»³7Û”	`nIÿúÍÌjß¦žJ¥ïTéT§¥¾°½ wlO*™
P¾ëÌ¥Žô,Ë#–Qs×ùŽ’*.µ|Ê	õúÔw)µ°l®E‰íý?/ìÀÅià›sW(¥ sÅý §¶E”E$ÇŽpað¾Ë+&üZ@‰Ž<»‚FßÒñWó£í[øšÂßÈöˆëÏqôd9–eÈêr)ºîÇE7ïúv­4ÔåýGVty/¾>€ßÈ²:k‹ýù³Âi¼Ø ]¼C‡E¼a/¯ûé¯¹4¶¡#ÆžÃçeqQË2Ú‡‰Ÿ¸ÛëÅÈ˜÷ÊlÎµâ»c(£óGZÅb8Ëèsa %{JªºÛÞ¼Ç]v˜4>›læ˜S{ÝL¥~Š“ežšËy»>Y-šÆ7s¾Ÿ¥¡¹”ÓÁk23¯©¿‹krÐÔôp³M)®çÃn¾ˆ×÷õþ6™cÒFL^NøêºoI¸Ýâê¸Ý/îvAPÝVQô¢üüœNãšÞÎïNî¹	{OªŠ§‘r%=ÖÊÑKZV	˜oG›JÅ?ugto+ðÉ'öæƒ“Áòr&›)ûvmRXg3d:ˆÉ[»Ç&l*ý<ieYPºQu}§Ž<ò}™'âÕÝô³åKªnÙÃÍ4ãW‹*5ùêp~3ƒÈº=ÌröÝ@ßO³àdü—Ùt3ù}bÆt¨îËihzh;ô‡M0AJW”k(® Ï`¾ì¨e»†¡¸Ð…lÿB)È*ôEöúçë~AiÑÊj }Gm/Ú{ÛÁå_ñ¸üe‘xœ•±NÄ0D{Åv)Ð!;ŽsÉ%%~ÀÞ]ç,îì“í€ò÷˜â$
$Dù¤™§™š™aÐLè{o”šžz‡Ú9y%ûÉ¨qÞ;£µ›9VÐÔ€ùÞL¬‡yå¸×Ü£SHHFÎÒORØµS†'#xáßîÍóXÖÂ·Ä Æ&ßÏÊh¸‘½”Óùjåÿ7…·., ÆD®ù{s
¦Î”Õ•­T>ñö<I5€%b‘?äNi‹]Z¿aÝ.Í§;ðíR=²¸ºSww×¡‚EL™B\NÛ­¯a‰L»äýÎm‡?.Š/ñ^†9–3xœm‘K“¢0 „ïüŠTíÑÚ1^ÙšÙPdPAP”Ñ„ñ˜óëwv¶ö6}êêþúÔ=§[…MV bSl#[gD:ÓM+ÇâÜÔl˜J—sÚô •©T-Ë’i†M‘Žuš¢)TR’Ò€2þçu’BS5f”¶lhT0lçªN$–’Ë~ßr0Î›šž@–Wåà¹¼}™W!}*éo š†®¦Š!@B…´çsÝ÷Ÿ°_÷o² ÏMËiwz¼Vu¿—ÅÓ'ðÍ¬ê*QWàç_¹žD öc°
üÈI×Kï+W€nÂ%®ã¸#ÇIÜdZŸY0-Ý™µ?è‹+âÁÍqÂ_Ž·RÃSQUÌþÛÜÌ6T%œFÎ’cxvãcoÎïÛ½V$êa*jlG;#ÑààVzvwo9YgžÒÜuªÞç1CÜîr2ˆ¬ö2«Ý:é¼‰çC”»K¿°$KÖåæq€	Z…$róÐØ·½FËâÂW^6É„:M±']ÑÇ•¹3ìÃ@fC£~š˜ÍðÈØ±2dìÍÎ(ÆéôòîÐ.oÏ&´Eåj—¤]?îêN¬Úl;¹wÛôXo–­YÝq»Ø½éx]?ò|Õ*€÷–;óÖ2oÌý+ì+&óûäŸVeêL¼x¼„»¨TÑæ±Ûe±Û¦£Y·b,yQÀKì"åßg^4þþ1%¤¼¢ “§àô"©èÁÕ@&`¼=ƒ=§uCÉ‘ÓØ†*R–¼&â²ëZÞÙÔŸ3PÖ‚´WÊŸE!¢§g%ÑçÎü›!xœPKK1¾çWÌÍƒmÉnö‘-"=µ‚çl2éÙ¤&“Âþ{S±‚PP˜Ã0ßkf("‚î‡~”ºµ£Ð)dck.Ût½TW·CÛ±£Šè	„¢ÂÊcëV¢h†¦ã]/°Öc¥6-¸•œ©LSˆð¨¼Ç/è<êw„»©ø<¤œpcðª®BVœ÷pËkÎ™óìˆð¿Êª¿(™Uct:m!åã1D‚ìÝGF0.épÂ¸`LK"œa÷¼cìÍÑ¯O’WPéé*S+“:!¨‹ßÆŠËö¡@z*;‚-Ó„¿sÀ%ðÊÐZ§Ýù‰Ê/sˆÈ(€u‡B&p¶ˆ¹”º¶Ê
‚Gðˆ&AQ~E²sÜÍ7e9â”Æ¢èÆL¸*Ô°alïÍ:X»—íÏeŸŠh²÷œ4xœm‘Ër£0E÷|…ªféÊX „ðT2°¿Ø!ÞL	!6,çëÇÉÔìÒ‹®î¾çöæ6Šs@D‚iì2d:ˆs. ´LlÇÌ&“	œ ìXØ4jª¸l€i96s…zˆ0›Bd[&±E’ôbŽ©ãÐØäTXö^8<v±`÷?œŽ,™SNŽ¸Å˜1é	ê´m²J•9/À+M%Wà1¹~ÏºÕügÂÓ±	†øÞ@š¬*Ë¼iîð(oÆme¥x]ÜžÓ¼ÉÚøçøÆ–Ö©ÎSððYþp,Àj´Û`´ðÂÝføu7€®Úg¾çù}Ï[ûëI>¿øƒþÆŸ’ìh//HWÏs)¼É••éÛj@¬C8¯÷{/3À¤YeÃzžœßÂƒÊ·Ýá¾+<ó­L¢²÷²ÖHŽúïc¿/<Š&E›¦Ž;ßnça× ¶~]u˜A9
U{©…ü´ßÜÖþôtîªƒ°2]¤>‘#l¥->¦Qw³ël,`±žèË%›‡}ò²’¢ÖÕuÌVÇZ»ƒ0é_šihOùnZ-Üo³Tº~
çÃ÷Èq”BG¬;ƒòŒ‚Å2n1¾;úÕÍeÑl8^¾æhx|}¨qÔ©·[tYÞjrž‡Ò ÒI}ê[/½_YvîbÚº”U¼­ÍëFÞ¸S[“¨×?Å²KN[w–|´Wƒ8(wÞ“žà;ÒÆ¿Ì†‹Á÷‰s®Rê¶(€âç–ëü0mÔBU%(rÙ¾?ÈKÉ»"ÐŒÊ?ºõM7¼4ŒOá¡©êª¨ÒÛ/ÐÏ8;\ ÝÐ†ƒU9rè}+òä®¨\¦/•I”"xœAoÔ0…ïþ£žvEw'vB+„@œ*PÄíqbáØ+{Rºüz¼§^à6ö{ßÍãB“wÍk;Èq "ßu½ÔÊX5y=IëµôØk)NX(1È~Tvúán˜¬ÂnP½œ”wîÎÆqD#	}¯n¼ä0ŠðçDÞ¸Ÿ×á]Ý*½9ªIwºS=¼êd×	›×50Ó£mÿ_T¤§•œO9æù|ï²? x¨ŒLð„% ‰¡¶W®)%¤YˆÇ…^ºÖ0/)3˜†¤À¡¿È2`Œ·ÀK›ZV`°˜šK|úúðp¼dÚõtQ.ð5‹3,˜\›.˜Zò[Œç£Ã3Õ{0íKOÊ´5ìn^œâÃ3Øœ¸ä[öÏe	jÛü½n¦ž+ÓºÛßìÅg:åÂä¦qëLÅq…ÝxÙÌ^|	­DwÈÞ_õt,~ÅÐ³©BxœSKÓ0¾ûWÌ›4NÚ¦­Vh%`‘Ë"8;ö¤1õ#k;-ý÷LÒ]µB• —4“™ï5v
ˆ ämQ«•âë¥âÍj½ZT¥R5/ê¶©„šËbÞT+Ö‹€.Áb%ËJbÃKÅ—õbÙ”ô‹…âj­ä¢­æM3oÅœ‰!u>Àga1ÂÖŠàþWŸeQò‡ÚäÒÛwÀ—Õº®×Ë²„¬X£ªÕ)a€Âi4ðSì½Ý«ãôç!s…ãè¼(Ö¼.–ð¶à4ÊÜÁb&ÞÀ“Ø#HïÊ”	cÀŠ$;ívÐP]Dí"º¨“> cß»±Û’M½ƒà‡¤BêDÙ¡ÜGP:JÀpaSðÆ¨„RŽ:u Ø¥ÅøÝë7RA@Ô¶71'mŸ<R>ïïàØiÙÁ^¾mÙµè€ÏÆá NO1¡Uw¤
arÚÊ‘ÄÅÞS¾GMÍ b/ÌÄE†ãYñGÒ;9ïð·P(µ†tl½ErñÇ.þ")HCppqèû›ˆ”e@vtç!<ÛDiO²¿þxú˜YìQžÓÕiÜÈ‹¹ÈÌÙ'ZÍyl"Qºm	ÙI<GpTKç)NÕiÏcþZ‚pŠ)Ñ½I¯Ý<¹ðAìˆ€}ÃƒŽ8Í½8¼u<¨¡7ZŠtn}Ma„'XÊ,u;v^ÅÜúk8bÛj:¿*£%gÍió—ãï‰\öE»ýº”ú¸™ÍŒ˜ï184¹»Y˜ð¼ä5]Ú¢,óªXðeÆ³[Üì giøž9xœRMoÛ0½ëW½ì°ÙñWl+(† ÝiØ.í€že‰ŠµÈR 1Éüï'')Ö¶ƒ!ŠOï‘&Dº­úu]6m/y_õ¼ªÛº•=ï9—¼éôZë¢íÙAt²(DÑKÝ(=`ÓñfÐƒFÕÕmÇ;UñJc?ôªbâH£ðYLáiàþ{\Îª¨ÊínÆæÒO¡lkÞµ|½® +ú¢`);"ðI8ƒžÅÎ¥Û½:_‚m<FÌ.Ô¦(xÙòÞe¢2wš0“Öl E:“Þ9”´Í#†“‘¸Gœü	a$Gãv ƒŸ@¡GKgGâ»9€u-ÄÐrQ¥ }¨€F„»,{¡ß»ã´L†üŒs$œ»)C”Á:
ã1MãeÂÚ…%@™(“©0/o-†žGtŒFi¤8µ®>€wv~E³~	&U?>"Pâ ÁÁb’÷ð.^›¾¸¼¦ÀëËí-}8›doÀ·¨ùàÛb­™Œ”ä¾Œ54/Í(5† l„aþ½<{Õc˜rtyq›wô×9ý}ÈIÛyzù_lÀQœŒ_ª=™´*óZgÃ¼ù½cøšòÆÁ³±r÷Óy9¯ëuyòGÑ¬#ûbÜ~#Ñ!nV+ëæ{mîÃnV‹ƒ²*»’×U]å/ê&+³·ì±ŸDÆ9h‘3xœm‘Ýo¢@Åßù+&ÙGÓu†Ü´›‚Pª(U­}ÙÌÀ€(_ Â_¿¶›}ë}º¹çw“srÁ9àŠNu1¬Ç4„*R#©Læ#É±Êr…„RE/€AL§5jXÅ
¢ª¢Ob©˜ÐX	1X'ÿy¦éP×qÄBE–™L	ŠpCÄŠ'qH	#dP–hÛK,Z¤<{š\€Ç¨ûZžë¶æ?#þ ¬LÔ‰!#ˆ ”Â2ÏÓ¦¹ÃNÚ¼¶<¥àUÖ?'islÙÏ;ðÍ[R%uš€‡Ï1mgæ•³þÌñŒm°±¿î@W›¡iæÔ0Öæz~l]y>Ý˜.9žÔ·«"fa¸»ÃÌp¯m7TÝpr÷°ç1Îš=H€¦©´œï-;^©®yÓu#ññu¯©‘­»R³Ýõz“¦§™8V}{©Å)Y¯Éû²æK¿î$À®ýfßŸ²•æº%Cˆ[9Ëbâ'ûs„Ã¯b§¢S“bÏñGÞÇv‡³¨vëîu^4˜·z~î9ÝuÇy^‡`’M»1^]·fû³¼Ýª¾½¨‡ëáÛkk]‚]@"oJ…tÔòy+>Ô"3d?NHìäÓ¤ÉóéÛÌ£e0½¼"ˆ+YÝù‹«~µ‡¢ŒÛ"”À™Ñ]9‹}§Pœ+Mnt”ÈÉn1#u`Ze:XäÝÊŠæýÀ^äbó2òR:}é4¸u½*|’ÀèJú×™íYß7&-¹H8¨Ú,‚_Z^7à’ubQæ §­H‡´|ÈÊœQ¥cÚ”éŸŒÓ³$×œ?4eUfeÒÿqz9ÏKÑƒO½þÉ #“xœ•MNÄ0…÷9…— 4(Ó¦MƒbÅ
V Ê3¦‰GnŠ˜9=à °³ž??½çÊˆÐkBp;”¨:ÕÆÐ+ãtkt}tØh/iÄÉ2–
ƒµRû:­L´AK%ûÎË&bô^uÒµCºFØµNÄðfWN—DðJÙY	óü3>3†ÉÖ{Où	ö}k”nšÁÀÜK)65§Zñ¿¦mõ¯…(w•N4Óáü 1}BÆL|†íqTàŠŒÛ:y;n&—tÁ12å±,£Ÿ,ßÜ
ñr}Vì¼A¶b€¥r*‡FbÆºrÙ¸Þ~³q-¾&*B¼§CÁ°£wnKòÇJâK	Œuž3xœm‘ÉnÛ0 Dïú
=‰IQk‘•mÕ’I¶ìÄñ% HJ¢­-Ôçë›¦è­sÞÓIÎ‰83R‹&#œèCWSÓ$P…„C†lªkJC$¯:`M1¦›šfB:…jÊSJ5&ØR™®þã5]UqÊ0Õ	ÂŒØ*´©–j3uÓDS)Il-MÒwy-Á‚T‚à™d—à_ægÛ·üžñ ØÖL"&A¨Ðº,E×}ÂKÑy}ªZò¦¸ýÌD—÷Éý'ðŸZÖd­ÈÀÝÍÜ¥€hØ_Îá¸w¿r(`lgtæ8³¹ãìf»UÞ{{¾Ÿ­Íü¢…–þè8yéøÎf»þ¸œü8¼Žy|[ë×!Ú‹›P€mìÍP¾&±¡î0‘H²I÷Îwo“Íé²42ÏÓx±]N„¿B—µŒ4¯ö=ûðŸÞ#ô|A†ùØ‹#ò:â²[:LÎ'ü+ÆšhLÐ(\QÏH&hJ3:’UM¬sJüÅõ¤€f–LÕÉÓÁÛÂ"ü…Kï’o‹}?}YÅŸƒúÃîÜ¶ÖéÉµ½x~Ì`èã&®Ï/7g
_j¶P ¤¢1wáùÆ8}ƒf¨ªÝ®ÞÏ¢ö™_|iÒÊòÜVLDnÄ•N{g<ãct+ÿÒ´®\) ¢¹ÈNëÍs—¼#/6.éa˜º·*žåÊùrz®Tvt®A"çÃüÍt7›L Ów
x<È¢Tþ~æ‹ÿ?¦l¹Ì8hú¢ ’¿õ¼íÀ7¤Z¤².AIz)>D}WÔeB$Ó–Ó×”½Ö—£W”j(ùwÀjPÕ(8¹RºáHEÁAN*Vðß¥} ÿ˜xœ¥ÁJÄ0E÷ùŠÇ¬òš6M;¨øºráR^ó^¦Á6)™Ìúõ:ˆ{ÁÝåp8pK[w¾wcÓÔÍh©3º3³–P#	r=8Óª•²Ä=Ú¾f6¶<±Å;ãP{ñÎµÇ¦×l´¢c™R†g:æð<¥e¤Ìî–ùg>fá‰JåÒò u×­ÕC¯ákDõM—PŠü#¡âi‘p‚˜
ÌBï@Ò*|˜&Š<‹R¯«dŸò"›ƒ¸7Ï÷ñÊù}u‘¯7 ”ç ù	Î‡)g¾¤U:I>çPÊô›­”z	û(¼MÞoÇÝ_¨/iY„"š2xœm’Is£0…ïü
UÍÑ•XB,b*™
›1‹	^Û¹KØ`cÿúq23·ô¡«ëõ×õ¯{ÎPT’A)–UJ Q´ŒITÃZ‚DF49Kb™ŒpL8k{€’	d"P!)#r.¦‰z)–D‚E%Ï	NöŸ'"Ò°œeYž%TI¡‰J¨$æ¥¹¤åÒÝ¦„	ÉÐ—¬¤­X¶IÑ2žèåkxé†Ž=Rö k+DB`„Bvhšªïï°Sõó!Oí³c}})ª¾ÒÇ;ðÍYq,ºª ŸeØŽ‚È‰ÀÚuB}¯ì/] ¸tFfèºaêúÒXzew“=seøjù.½ž1w/ºÞ»«›{®²š
‹ä×óAÙÜæo¦) ËÛÄ¥íîèßh¾Æ^ÔnS-rx¸ØmöWý$ª²Ù¶u’úéØsñ"êítMj¬ÎY #ñÝõÇU¹·UÌl§r;:B˜#›&4Š¹ì›„LU/ø˜K½T'Ñš”H’È €yÞŽMÝt½,Qp#C°åT÷oýÞãXWMÑØÀøw`ðH.ûùµ¡½w‚·ÎKæ€ÄkÓ_¼õ©ò­¸£ÓÍJóÉ`h¢8­V"‰5{:1•·,Ô‚îf²w³S„ûõ( .‚Y\éÛËUñv˜ó8À¦ÄqÖìßsU7sGâiéÖÙ‡¯¿U—†)–"ÎÎö$_.žð¼;§¾ð73;´¾OLX0^0pêpvX×ƒHTÈù¡U‘\¦iÒ•÷¿8Ö¬g}uhòj„Où'˜U#hÏÿ€ûúuf÷œxœÌ;N1FáÞ«¸=
º~#„(  ¾cÿ&–2žhÆá±{"6€DwšïŒ ïJ’Zœ±&'cFˆSÖ§ œ-.Zu‘}PåèešLõ6`ŽÉKš9kë8æÉÎ%×qZ7z–Þp¦7yïØè¡|þÆÓ~Ýq_ðH:ØÄ'èŽ5³Êë²´1ðªfÙOGzi_Ô?Ðmu9c´µ+õÚn¸ÖZó÷ñ¯·úðÙW`—3xœm’M¢L…÷üŠJfifš¢@ðÍÌd Ql[@±¥í]}\>- QýØ½xWsW'7Ï=¹É9@4w€qnaqœslRp¬ÜfL!è§²¹It¬©Ù!“Ë`ØœnÁ-*¸3Gw¸ÁrCÈ-ÛüŸ7Mî&@Nµ©)0b€Iìa/Æ9ÓÉØÖhß•BS*+¨QF	
ýÃ—øÓö-üðá±eÆŽFº¡ëoN§ªëð¼êÂž¡Ÿ²Qp®oŠª+{öãüã¬8mU ïŸãóE„’y‚ÒÅ<r·¯›àk¯!­Ç=×õ|×]{ëçê²ü˜úoi—3þ j1¸nðÎî<4Ó£Ì3||mÏ¾(#™Žä]CElÃvò¼
¢Ã}Éofº>ôÜXú³õ€¯ï–Ó¤Ïå¶¢²L_:^‘øšu¯MqËwÿèKÑ®Üµ„,›'Q5äØÙ—kÏŠÊ·—4:o[Y…yuC;¼¼¯/ûp(Ë»W}ˆM$F¡†øEªëÌg8¹VÜæÓiF²‘ÃÉaÉ£x n{˜\Ÿ{·Ï.1]Ò?­xVÔo„j(jdöžD¦ZÕçžÙòcòféî6þ"ð±.öã´›9cÀ™ð6E7f:;$½ôT±üp
„_ïüKÌfíÞ~	NõÓíåm“•½ããi¹MF¶éãl8âå®âMO6$8Ý·jÿKC¿®˜<Œ¾²	¢é¿ÓV 
@ç¾®‘‚Km‡¾aËÆ(WÍ	 ÏÜh]|j¥5Ö¿sz¦¬ª«®‚VÓÁÿCÉœ>û›M}”Ô}QI´ÕVü<èJžxœ•ŽMJD1„÷9E_àÝÉäo7ŠAÐu~:cd^žÄâí¬ÕGEÕèÌ@Ê°ËÒ”:áÞ’
ÚHå)ú¬Éù‚!šì”øÛ o‹óž£W*Ë½fôÉE,TÈf]²¥0¥¬á:Þ¶\
<Vnpó>qw™xüÊi—¶õÈh-ÉxDXP#Šé®uþwQÌè ÷-u^¾Þàér=×/Ü?ëÖ„x®çÆyÙJYâ÷áïñðæV˜3xœmÑÉ®›Jà=OÑÒ]Z‰›±!J®Ò€mìã<ìšLŸ3?}|ÏU¤,ò¯JU_-JÕTœ5‰Êˆp ¥sH-Ó1±41ÕÔl›!¢RÛP…R’ŠH¨Å¨ÆKµœ—Cjb›:!	W…Ê °uH„-þÛ;HØŽÃG×™f˜:ÔN xiÄLÁJ^Ñ‘­¶IoðI!yŽäZð
|gýgñ³nkþ•ñj™¦„l0‚„
½å¹lšžÉ&hð½¸U¼Ì†ŸWÙ¤mòõþ²v-¯µ¼‚/ÿÅÌæk°mÁ~>[ãCN>û
P@_»ÔÅØõ0Þ¹»…¼ÏÚ»ºo(}76^Í{ŒOz?ÇS§Ñîl<Ö‡häaÓæÉˆN]$|oâõí­¾OÂîä'ÑE“ú»c%Aiªh¨%KµÌ›YèN—¸3.d1ÚÉ+`X¡8µS*«ú®bd¾/Å6(GÃÚÛ“–õ¹S½[vþ6¬¢ }~Ðíö0†óeqâñ9®Ÿ½ÐCpöqyocäZx‘åMtH—q mÌŠLâêÞ6¬J#zŽ†[ª/‹8F«éØÚè)P «<úcßk}NÆq*a¶qÃ§sžÛ÷ò~ÏTm8ác9†ó*å­éþÂÙÆ+v³ùëŠîœÕÆB_•Óc’ô#wãD`ßžflÀiÜYÍIn°v1Æy—<è¢Èð¦w</¬Ýè‡~x¥)ÿÿl²öÿþ1eÅ«+e›e â÷–×øG5-ˆê–ƒw.DÅ’I^ŒëÂ´àJJ’ÈL6’×ŠÒ3úLåì×¯!ðy')Þæ)óÿ.Ÿxœ•MJ1F÷9E] ‡ªéT'DÅ…ˆ›9AUR#3ÝCÿnoŸ@p÷ø¯¯fŠ’RŽ<%ªuœrÅXý~Ä8zTw•Õæ2…â½dÍ˜¢f)F‘RÁ”‚GIœÇ½Æâä£¿.+<Y­ðÜl†›·wçï¾JÞåår41“g#Èˆn[/­wû÷Ñmê íŽ/<!<ØgË÷rmçÖ›½;wl§ÙÊ°Ô:èÏáï„ûÛÕVÙ–3xœm‘Ír¢@F÷<EWÍÒÊØ@wUÉT@”àA4nRMÓ´„V4O?Nff—»úêžs7÷“-ç c*fˆ@J4b‚ëƒZÆƒ™&-(Îs„õ1¥¡-?J€2rS×5ƒ¢sjZ:)HÎ01)¡jfBŠ Qóÿ>ãé”æ´¸†tŽ)¶¨1œÃ‚”f–e&â
=Ë]Ý—÷¼k*Ž¼yÿž»sÇæüP	ÆD††À j*¬>öRÞeo/_Îx<Ö-oªÛ³ØËÝ9ûy¾9èö<ügìù½Ä¾Ø«$í €¾s˜cÛÎÈ¶—Îrº?yŽ"gfìJôzÑ[¿·íýÍöíiÓVæ£ÓuãÅ ÑáŽÙAk¦$œ:ÈµN3I2(Ót}áƒÅ¬n‚7¤šmÅkˆv¡•&¨÷E3ñ{¿Ü‚Q9î°§ GÓèBM7­%ãÁöæÚa¤«uMº,’x|®õOaÏ!„›©f]¯và½QnÅÓZ“ÁJÒKæJîÍyÕM‹È‹‡™ÿ²r‡Is±ëã×ù©ºB:Ãb</›Qy,Íµ1g
('vâ\.—™n7¹÷ñ6ÑNïZNÓ‚õ—ìm7:¼Îã.º‰Á1TùlþÑ¯Þð†¶u”( .wAøåk6¹É•žm?ƒ­w©yiºUÝeˆœ.?…6×¯3Û1ÙõN±R-_ExRÀSEr¬üíl¸ß7¦,x+8hÎUZ~:óN‚*6 (Úú ö‚öÃ®¸>.ß+*ß;Ie÷^Õâu¹~ÿ ¢ÄÅÜ1¸cð…Áƒø7[ý3—xœ…O½nÃ ÜyŠo¯l¢(ÊÐ¡{‡ŒÕgøˆ-Åàbh’·/J ÓýH§»+™„4Æ;í¬GôB+­••¨º`­ãÝˆÄMPlÅL±€lÇ½Eí†žˆBïT¯:eúQ(!I:n{72¬eJ.4ÃGªp¼Ó¼ŸR=oonõ±wi90Z‹¡—ƒ„7>pÎš»Ì¥P†wŒ3Ýà‚×ØÔÑß_ä¼Õöžþ¢’s3ˆm„±-<iI?5nu]S.êZjƒµÌ)Bh£¾+åç—Ã0zpÆ+½¤[<cŸsëñ»Ân|þ{À~xhÖxœ…Ž±nÃ0Cw}ÅíEŒ“-ÛR:tïÑ8I§Ä€c–„¤_µý€nI0ïÌ ¥µ£iÇI÷Ç–ÇÖš 4TÔ)é•Áz±ÑÎkF¯9ëÐh+Ñ‘g©¥ñhÌ¨LïºÖj/¨ä{ÜáÊ3|Ä§'ÏÍ=–Kr´pXÊ«qñq9ô½ÔƒQo¨EusÎ¼Ã;­3/p¥ÛZÕÉ?á’JâÆó_µEPÕj!RxáÆyZ(O)SNÓoÊ¶Å=C¨\òþd?çºæ1„ƒý:þ÷S|Ý¡^O”6xœm’K›@€ïüŠ‘ziµÚ2U[BB›„,!Éî¥†I˜†Çð
I~}iWíi}°-û³-ÙnkÎ‡„	³º¦éG‚™ejÜÔ©EF!Ã1ÕMx$P‘´æE!ˆë:Ó3Ä`é1‰Mt4a&æ09„ÿó8:[C ¼nÚÄI9EämfSÍòÌVh×¦e<Zž==¼_“þ¯ó£éþ9áß21Ö Ôàà(¬ÌsÑ¶ì‹vÚÅàkQÖ\f·'Ñ¦]üy Þ);ÉS#Nàñ¸c¶€pæ¯œmô<þW€úÆe®ã¸#ÇÙ¸›¹¨&=»+ýe¬/z=ëç-gÎ|Á†=ûépx%×QS]™Á×B¶SÝwaŸ‡‡i+‚­o]o»1NB£H@iª/¬Ý%Õ`ìW,¦å«òé,¼¥e¿øËIµR€>¶ÑÚ®gsX¤K…zÃ=-ÕWÏ°Ÿ_æ£l¾¾ÝW'ó™îÕan¶·Ã(ÅænÞ_ÄñD’ -/gŸŸ/5ëZ>,roš8cqé4ˆÚÉÚ}!BFHx»*To!p°Ó³ºfg9­#¹ü…—tf¯Ê›ÍŸw‰xË§¬¾oÉÊh š»s±©ŽûþŽWK&a°UÀ28Œ‚ìä¹31ì™nÞ»—’ÙUíÅèöžÇÝ½%w?¼EçáäÂìûƒyQI¾)àVwåífã•÷þÅ”%¯OÈ.Ë@Í«Ž7-ø€°ic]æ Ew},.9W.y‘Ð¸lÕ·WùIY+Ê¢QÿÙ†·|”·á3‹GCQâNdÉÇ¡®ùôÄ].Á{äÛ ´%0~zTT–Jxœ•TÛŽ›:}÷Wø±£(ˆÚª@2äB.m3êƒ'ìØ&ùú23Õ9£vttjÉ{y­åËÞÛ‚a‘¬)q¤Æ:X±´(²’¾j(G+±pÇIbÊ*B* ˆáRÀXC²"«ºi†™æQ‰Kë+šª¨f_A±ÜÆ8ÑªÄ™0˜`ŠËED<´óü¨YËRUµóÛÊ—ŠcÆ{%a˜æMï”ŠsõbR|†Ê@³L½/ìÈí -Z¤B`§©ðª~ü%ûòŸ²=ñô»ÏÃq§þ®¦+¸ñ§{»Ý@ kîÄŽm;#Û^;ëYºg1
¹qÎ´åUe~mÛESû¶CB›Z®Ô—Ÿj7ÞÏOÛS" w¾Œ;·gãlì%A=‘ï%Ó­y6/èzûú¤LÄýèÒ8óþt}8ñQ.ååüûÒ:ÌŸ”¼Úø¾cé×mÐÔºìŒvæÄ˜{×‘oólv¹¬ùµ:4ìúÍØá}ÄÓÅýÅUto»±S Çe¬#!šÆÝeOMg¦tÊ˜åõ7=Í¼»Ô‡ñšÌÃnñl]‘Ç_KÜ‰œch $îrS6BÏÝƒ¶\ßVÒøÑgº_ì—eÁô¨}ß¯fõ¬?æãJ>háåáÚÊúÕRù •Ø[ ¬
›eAzÞ‡N0Zóæàm
Žƒêò¶sÕá~ÂSß¡›I ­½ÓþÈWö' ?	m/ó’w1~?c ªÒ<ùÐV¿Â¨*(D±HIÉ%ŽEE»´i‹±„GF
¨@A 
€ÓÒ8|xøãÃYÊ‡’ôo=IïïÞZö@>„8ÇˆcXùÿö‘Ø«Œß={Œ^Êû/ÔíÂs{JW¥×ë]Õ; žß¥¢	8é¾6.ãóaëÿOÜtKTàá»oà[žhhËKR†c1¤Œ$Õ‹¤%½nò‹pm;¸…»¯àã¢EºÊíÉ Ø¤§²=9»Q3üósà¥„‰·mümëˆéç"„uxœEKnÚ@ @¥¦ŠNá=žñÌØÃ"ªlÆ6RöØ†ãïØ€7,r‚ˆ;dÑmÏÑô
½C¥¦«¼Õ[¼Í{¿{¿{âE
! !X7B’„"J˜"K¡Œ<…bæF|É ¢ •yE˜pQ
C„˜™ü‘`!ò©/ÃHf”É$AD!oOÆ7B`÷?o?ÅOÿóý’÷bßîM”ÝÏjTèGU­R «î9ÒPqöÃõÀ©V«íþ9yl	»ã:ÌÕFæ`\Nã$$ÇEËÚ!ÊI¶øø¥,¹I[²âZ)ÜÖõ&{3ñ€¶2xÖÒR¥Fþ°ñà¢™ƒC¯§ëÏ{kMc.nòjSa‚i¤×Ê6O"¿dÏ:q¦ñî®-Jn	‹bÒ@>ZmUºL6cëà*£˜Õ`ØÏÌå‹-™ ;A:[¶GxÔ´ãE@IŸ­9VÓ+§µx‰fý@ŽGý*ž<$<_-×ÎnAÅJ>¶þh1qƒr…ùÒƒgÂÚü,K-6JsÒNÐÔŠ—v9oÆ;ÔÖó;µ*Ä·sUµÖ.tñÖWÃtv:¢@+Ì^‘ù§­mˆ4_¿o	÷_E¥«^|™Þ"§¾þýTóæõu:_ßüúå‰®Ê“4xœm’Is£0…ïü
UÍ‘JX„ M%S‘¼;¶³ø&$rØüëÇ“dnéS×WïuÞkk! ¶)¢ÜáéHDb.láp(l‡bd3Sn›*%­EÞj;Ü²(™ŽÝÐÐåÂpÌuŒK¿z4C—ÿ×ëÐ1L¤ë3báõrCÇ¢‹b,¢ÐE&Th×&E<šK‘‚ç¢w¼ÿ\š®·\ü†1†6PuS×Vd™lÛ«x&Ûy‚»¼¨E™±l“.¼½
~°ÅeÜÈÜü›Ñdæ`3Û€?Èþð4ùä
P@ßŒØˆÑ˜íh»ÕôDÆO£¥“œ¬Ç3¬ýžýÎò	úôxÐ¢8:’ÇÓ¾9™Ã>~î•ë?sºkd("<ÏüÍìXáE“8hürP£‹S@²NSlM’Ã¦gT=¿T‘5òuàûX§ça_¯«Y®’· 
ç‹<©¼xá·S4XI·8g—È>oò4¼-Ÿ„[EÞ³†²b¹2u îÑ´žÇAèÓ•óã¼ýÀý´TãIiîµƒ–{Ñ*:9q·Ù¥gCéYä`5êd¥€U“g/P¯OÇ•!Õ}a¼*}úîmípúþž:+¶õÐ.K¤z!œªvûé±Níc­€	÷È[å¾Ä1&O\ÌãlýqÑÄr—V™ôº&ƒÙÂaqµêœxrÐsÍd¥NîpoÎëVùÊlx?'¦¬EPvi
jQu¢iÁ/ÙDu‘Ó^cò†r~S×Êå7gQ7²È…ÉßàÊÁß´hDÛ•ßz ò³¬‹<»Öû/Kµëƒ}xœ;Ìö—iBÜÄ>=!KKm#®äüÜÜÌ’’Ô‰“59á¢“ù™M"¸¸ÊLòÓJ2RŠSKJt*K2òó2Rs
R‹ÊóJŠJò²óòËÁª òe©EÅ™@:¯47)µH‹+83=/5E7?-M7©ÒjâF. C6.˜3xœm‘Ks¢@F÷üŠ®š¥åÐ@ÃT2ˆøBâÛ]Ó4M#/yˆøëÇ$5»ÜÕ­ïž³¹_]20ƒ
6 Ñ±‰CbBŠ nP•…Ì˜¦i*"ÈW±*¤dY|_cX÷QHM*Ä'¦nbÄ-ÄÈ$ªú”ŸÖþóºé#*D¡i†á M!(@H1©¡’@!Dš:ÊK0$™`	8ž±¼í×òV5û°¿ éš†¤AzPP¢yšŠº~ÂcQO¼dyÉŠ¤{ã¢Žÿ÷øAã¯ýÏ±ñt	VãØLÇKk»óœ¯\h+›Ú–e¿[ÖÚ^ÏDÑé»g»8ŠÕÛ œ¶–u›Sk¶rõ²Ò¼u¢Ã»8Û‰Tx¨ØéûÎ²ëD¹Öjw’¯nAðk³Óx»»›6n©ëMÊXÝŒŠAª×>9$n²²°¶	d—uwºÞaþÈ¶íduU;kªØ’Ÿ®tËï¾Õé|¾±Ëå»P#gÁ”Æ‰px,³×zë¶ˆæì8°‰™<ï%=3QèŠÒ´õöû²M²‰w<Ú½>v‡Ç‘¶<fè}"yqŠ8â#!œí%’éYXê<Â›rW­“ýÙÐïãI%w³²Ó:kÚ=ÿö8îwHnÃM²–x¤‰{žxrMZ9N|Ÿâ‹‹’›~H¯ˆ‚få.n)ÐŽªsÎzÆÝ¹Î—¨Äù«^¡°ué»3g9ü¹1iÁJÎ@Ñ$	(ÙµaU~!M×AXæ)œ´2	‚þ…•Kú+úY^3Iòk¸pþ€ç|&€øySƒTdà›7VV"ÏþpÃ s˜xœMOÃ0†ïù¾£vÉÈG3!ÒväHœÄ¡k:5éÐþ=Á	nÖc?¶ßº!¾5Gm¬‰h¹\^R$H)%
'd'\(WpN‘ÑNDoµß¢C«­4¨h„E)›Ü£®uœØcNt„|Í´ÀMxÿ*îÊZ¨tB+%„•Ã5\ñ-çÌÏÓ”j¥«jÐß*{<Üï;À Ï• Ý¼V˜R†7Zr[v¦¥¤93ö<Ò/R³ì…úáŽ<¶{pL.Ÿ'‚@'Ê¡@­#±M¹”?b)›ÏvWV×H¥	Rn"zê{JíñÐÍ1vî²û+û åúƒë4xœmRÉr›@½óSÎ%)•m–™aHÙ)ƒ,	„H¾¤Xf›Ø„üõÁNrsŸºßR}x¯©(Th ù2d0TPÄ#*²‚$$±òˆ1Qæa„+ýŠæ¨€Y@%È‹ó’0Ü‘0øq 	ñ„ câãÿz%À‘ÄBŠD	‚€0ŸÇ2Ãƒ„$pø*P9¿mŽE&~žÐx~œÓ
<E×Ïå¥nkúÑ_@À	<”ˆF¼Èó\XdYÒ4ƒXO£ÀS^T´Lo/qÒÛàa|a‹Ë¸Nbpÿ1ÚTŸ¯¥[`;××êÎ±§Ÿ88p­µPSUm¬ªm³HÊvý8¶µWùx‚f'Uó«ªÖB8Wgî¾^‘Žsß}å²"0Q;²9Àzo~êÐ¯÷z=9(9³·õlrkwÉÞB“¾;ÏÛ«&¹*ûødQ)JãÛ¾—3$´‰LøŽ6(‰W²ewnŽÇvEÖ#aºK•×£½³÷¦·=GÇØe)gü¶TJ~ç	ö†GmÓ­ØÊ8W˜Ì¦iw;j®¹ºÉše…±,ÏñÅ«Žèmg#ó=•ÅÌ£EkÎÙÒvyÇŽÔf±9Ä8¶ö‡ôRX¯ç‘¡àÀœl»ìÏN>ó!’+8,{äÉær^uÞõh[zx¢%SÆ$ˆµkžŒ¯»Ó'KôQá)tqq¬,‹}ø˜x®Hâª7F.ÎºÛì<ÕMTHíá™Ï;'¬¹¿™M×“¯ãV´Š)(Û4½´´nÀ7aXUdà”Ò®ÈYÒßÅø()ÇÕm0TèwR|ÿñ¸Ë»Œ‚üh
Púu= UEÃæƒÈü<ú®Õ½Ÿxœ=OÃ0†÷üŠS&4râ¤U…*Á„Ø‘Ÿ[£Ä®§-ÿžK‘bÂÓë³ŸÇwÎ	´l‘uµêUÓYV·]Ã!;Éoú¾“Npe[G0d`NIÆ±5sÂ"³MoDW!”‘’ãD‹ªÐs>ÄÏñàO1Àöƒr5,yæ¬ƒ¿T} VR´ë†wŒVAÕÑçŒ	žèð¦÷v[{¾†Ý4OXY¼¢²f|­ZBB‹i6Ä¾ûxs»ç/P†Óˆ@Êe‚r„£ž&*¤„}^FlQ¼úÐ#”ug‘keá1†¦¼ ƒ7‹¤¼þúÎzƒ>ì©ë+€Èôm>)“à;'Ÿ	ò~õY-Ó\v[™ÏÍ~­øh¯äš3xœm’K“›:„÷ü
Ue™‡zÙUI*ÂO<ÀöÌ`g'„xØ€1Ëž_¹I*«œMŸêê^õ×µJlŠÆ	Ç	Ç¶¢2q0¦	Fé¤˜$X0[hUÝ;¥Älí'ÊN™ÄD¥0Z1!Ç)fŠþÍ“Ž$Rgè	;•P:Èˆb§ŠBŠ!"‰Ã,Ñwù¥3Qª‘ÈjÕ‚¯‰ùõüÐ½V_õ@J´›8à£íØ¶%/UUtÝ^ÝªÁ×úÒª¦|üÈŠ.ïã/Càµ¬Ét‘ÏÿŸ;_z>—!Ø{KŸ¿¼îæ¿|XÀhWºœ»SÎ·îv]4ýÜLwîËO8¸¡Ö3œg)÷8g‚Šþ=¼Ê9ß!wY”Æç|bh¢úæ–ÝÓ,TüÅe¤å¦g#]ÀåøQiÇ‡íùÙžåçhk|ŒFÁ­dÞÐÙYfxcàÙ4t‹Eï½i‰Ó@¼“I]¿æâm²`×oW½¾÷Wœ{	³(	>²3Ç—W®Öðkºº“ÔÐ`±oö[6pNžÛÙfW˜{vyÑÒ¶Ýýtw
æ±»‡;/èO·ôzìš[@±.÷y1
ï7ðÖpã›™\mJV¶:¶u¶˜Érñh£0ñF¾S›Ó;žT×ýSóB×ÕÊ{xòÚ§ª?êéñ¸ÆÇ›H·Ùìâ;äò`?j,Ê¹9®M¨HÆ‹þŒüÃô0ò¾Yà›7þ	­ß›ÍýÙ¿³žU›)Ðôe	Zuí•îÀH(i{©€¨ÏE÷Y‹jT	=PcYe×·JÓŠôM":õé‚æb°¥e[4Ý€g:À™èÿ (QŸxœ•ÍNÃ0„ï~Š½£Z‰ÿšTÑŽ¨`{7Å4±#Û¡ôíIÞ8ÀqV3ßŒ¶f"°²1²CÝ94®kÈxJTrè¥–´õZÙ­wl¶™bÔžoŒ!Õ:åDçÅ E/œõF8Õ÷ÛAú³K}Möñ*</“Ípo¯‚Ÿ®â±Ø©,ñÈ}š 5Zm»^
w–[¯S¨•þèšVëîÀæbÝÁaF[	æt^YHÅç0×u×hÄÂXËaS(%Ä#X_ÃûÍ~Nù4&‹ßfÎ‡C! ¸L†òm+ÞŽÄ™äð> D\ÿdkH‘3ÅoÞJŠk²æËWò÷‘¬u+Gº‘ÙK8FÂM†»ìþöö	Nªœ¿xœŽ»n!D{¾âö‘-Ø…¬(J7)ó<.6²a[ùûìé£L73š£é¨VR„Ií
žQ=stÊ;í•æLÍnÒ’Z-I1sAg”œÑÀ=R?9of9_¬3·K\ˆýºVøÈ·Øás$SáÕìæxÛÍ{3©|9º5½[—J	-à…Š™’-M±wü7€Øïþ£xÓîÑæGBxVS9cwW(ësã·¾÷›«±ôí1æ‘„º¦ß!_ñ’ÑÖöûô·Oä±Gq¨•2xœmRÉnÛ0¼ë+ôh4ÚHŠš¢’lË²kÇv¼Ô¹‘4))ÖŠ’—¯¯š¢·¾Ó{ƒ™‡f´H×EŽ`œˆ³€3}*	âŽ‘K<Æ‘”Jn4T‰JÁ)±¸oûBø„Pì	aˆEˆÇ… ®Í%ûÇ—ÌEˆ9®ësŽ]›QSž±…!Ž€˜
ÛƒØ7h§³Z1­rQ€#M+¡À·óõsùÑv­x:‹ïÀÆb‚ˆÁÈr,ËàuYæZä8×³ŽoU­DSÜ¤¹Î:ö4þ#K›´ÍSðõÏ„“8Yu¼¯I¼
vûíä7€®mÈÃ £ Ø„›y^'¡mÃ…—½Ã—ÞUÉ5®3’‹Ð	_àªïdÛÇ­™WÚ6€<ÌcûíÜÎÌ ¶S½úˆ^±Ù/{¸»nµç±Ä}ôçÝ„Ô£5ú…n{·¤¦š3(–áAZšàn¦»4aYÌ_Åè¡H{½–gèlÑº¿àËüWèG¸šê›Û_—'§ÞÆŒèr2 åu{ÓdKfÓØÕqPä¬ÙgrÕÔ‡D9Ù²Ÿ’ºT±°óh±¡æG ¬­ûâºÚ`·~3'Ld"5¢j.k¹Ä‹·bÆï/S²·f‹ÓÏ«oåˆ½ñý¸?Ý–U½5H»­k€HZÒ)÷mµþÇ—ìqÌ¹J'Qžfýí~R0r2þ;fí=¹%?Ñà›xA2z¤Ïx>ÞÆãof“Õøÿ‰K¡Rš®(€h5øb#Tu	2Zu%­†fdfIÛ¡7ƒb0RW )º4¯@/T›§ýd=Ùð7s¥÷ñ›xœ•ŒAjÃ0 ïzÅÞF²´ò.”Ðc.}Äz³Š±T9ïO(¥÷g¦73(1âh³’],Iž5±B9a¤iV,%IQw—fµƒ©WlÆD’'cÌ†cBôD“šQZf'G_ög©Ç&µ/œásù§åk[µíuÐ};AÈ˜’'ö><Fï^v[{·÷ŒÿÜ÷o…ûí¸®Ö~Ö†Á!¹'”°NI2xœm‘Ír¢@F÷<EWÍÒJÝü4UÉT@QEQ‰â®išAÀ4úôã$3»ÜÕW§Î]N0t¦a¤š(K‘œ@33i¢#BÔ¨™iŠùVYjˆ`U0FIÆ ž råT¦eÊ˜=ÃT6 úïgŠž¦¦f Í0`ŠDqÆEO¦¦f‚±fBfªDúîP0"UÎJ°%¼b¼¦×¯ñÞö-{NÙo èš
5¤Ëd(Ë­O§¼ëò$ï¦}^«Z°¦¼½ó¼;ôÉóCøá7¼Í9xú{¶3q°œ,ÁÚÖ&Z9_\¸¶6µ-ËZVh‡^~b<®lß8ÕÅ	÷jYkºÖ¨fWÆoÂûœØ‹ 8œ7×{}¼I`Ša4qfXKváÈ½NnÎç‚]˜Úîüåñ>ÙìmW±ÜÐ›wÊxä¡Ÿ¶ªn†!– Óu¯fñÅ÷ínª³3¬¢ ›¸w†!YÄØ^ŸÑFï·b/šÉ._Œ‚U¹öQíK íc:4ÙçØ[êö Êû”Ô¶øËL(d|üØ7c3ðÜ•Ü*Dlm~Øõ¸Ý«É|UJ€@>vÖwòB‹äBc•þ–W½Á ?]ËýÂUâ4Ü¢	ó8ô7õD<ìÙf¡t–ŒÁ*>ÏnºaEÅø~OÚbhFâ²_ºì îÔô”‘…*= n:,7^ÄñúG{ÇŒß$ðvÒ¦\únæ£Ÿ‹Is&8M_–@°sÏÚüR4M™¨O çäúRÖü‰ÖUÅh÷Ä„¨E+I³šƒ|³?®¦öH• xœOO1Åïýsã lÚý×]bŒö¦˜(j<‘Ùvš,-i‹„oï‚xÑƒ^f&/yo~3Ñ”eVÖµT][ÈŒKUUš×©ÈòºæiÎo+)´b;ôd#HBåJÉ¼UH%’à)ªº¬EQgJé2Ç<Õ÷qã<ÌÑêá×–<ÜèÃy¸û@‰¦[e‘‹A
¸â)çL¹íÖÄHÿ³¦E&Êêbe¶Þ¨0iï	õ”³–T$ƒ) ‚6]GçCÈûO9MŒ-7½iíÇöÜ=ú#xÚ9Ãw„qöËà`âLp‡‹ÈN9á(Y'Ð,^šÕìq±hfËÕôþ©™Îß!D´:@7,ÅŸt	¼ì4Fbq ¹¨cì{P§ÄÆa%ì¼±ÓèWÂpÆ&Œ=›áKzìºnÜ'=‘}ìª1›xœÎÁJÅ0…á}žbör%I“izq!ø "®g’‰Ú¤¤©ßÞ‹èZwgóqþÞDÀpž—-'ËbÈN6YD­ŸÂdµ÷Ñ#†ÕFMJŽ‰Ð1›Gô™Â`È±™ÐÅ¼0¦¬èèïµÁ#•Yx¥·"îÒå{<ìÇ.·IîÁ wflpp£­Ö*Öu{—ÿQëƒá‡*>æ%áeKÔ–™ËÇ*pi´)õ$b-Ebiíšk’²P?š@nuý%J=Ï×¯tª9ŸøóüWŠú9Ohîœ3xœm’Ër£HD÷|EEÌ’p(@ÅD÷Dó‘„Œ’,á]\/W@þúÖôÄì:WçÞMæÀÉQsÈÕ\É1e9ÑˆÆT¦lÐEšSJ4$“zÊ¡PN2À§¦‘YF ¨Z¶€,Ã–TM!cøarí>Í€RFò”š@LCÕ1²ìñ’j˜ÕT-Ëb$:eÇ‘GÛ
jt¢E}Ï¦ßæ§|Ëà¤š†®XQ$+š¢Hi×4Õ0<`¿V#CßÛŽC_ßÕPŽìÛøÃYÑ¢*ÐÓ¿r–þ:D;‡ök?´Çxù;—„&á¤Žm;®mGN´©8ŸÝØ	åE»a¾žl»‘¯k;¸­fy:ªuwË‚¯Bwïf(¡óÅÔ|¼ËBùò-ïhæñ¼ÝºO¼*o„X`n}"]qÃõ»uâ6@ˆÍöXÐ°¾D\Bq>ò$&“Ae£ÝS÷¬{rîA,Ÿœ¨ZUÃnœ+\Qã6blŸ^©ZÅ	ÙMž¤ÅÚÔD½ÙŽúf}eïûúäìÅ‹çØÚ«¢î•<ðUÊñn®úökÊÒÆ%ý[y	áÏM:pW¾ÝÿÝ~Þo®s°³=ýœ`ùe±t³ÕÒ\7[Â¬MD‰ÿ6g‰ÿùÑ§8Ž*5y‘Ð÷å ?_Ç¹Ø}ˆCêéeQnC¼¡CPDúŸÙÙú¤®1<Ã4{º+š1¹¬NIW®«ä‡„~¸^~þëlznLz^ êÇºF>GúK5tå¼kPUÐé¹®Äð$F&îâ‰¶T’Ú[O=¯Úáo´/»	Ù¡Ä@@][ßQþXf×ji¢§)üÄTh“%xœ‘ÁnÛ0†ïz
¢—nØ–-ÇAQ¬@Ñã.°3-S±0[2D¦mÞ~²·tvØnˆïçGRèºµ.‡UmÑ™A·eçW´Xueá:­l©V&
½Ð4­=”•kMÆºÄº/Zcz4µµ‡†z38…gc‚Gž&ø†§@	î†×íñ™ÏLûî¡4M]šBW|*ª¢P6Î³¡ÿEuÝ]Q^fÚ-É9Âó_ááË° Ä0]Àe¡ÎÄZRêve`ò,;>÷|á[àL2ÈHWÔNØ$Åi¢ÄÐÓÃÉ‡HT?I¡y_3ö»«g@X²ý{G@‘äûs.ŽòßËæ¦füNLi]%Öšw›Iž9m–¿Ä®·‘P½Çï•zòoÄGhkÝÐÐ!4ðáæ¯Õ,(#ƒKqÞO,h®N7Õ³Ï;vÑ¹]9þë$êÒ¢Æ‘4xœm’[¢@…ßùì#™•æîff3 *êˆ‚··¦»A›MsÑ_¿ìl²OS•ÊÉW•JÎáŒR€aHÔ±$«*cMQ„#AÂ16åPD
	¡B…-81Aºf`Ê‘¡k2ˆÔP2t=DºŠ±©ÑP'Ñ^Çêªª	uÝDŠ„Ç†Ž$CÕá©h!5üZ20EEB3pDqAx%Ý×ð^75ýIèo uM•U]Óe J²$	¸Ìó„óv>oBðZ”ŒVÙã=Nøµ	À7kq×I^þ–=s°u¶`¿p6–ìf_º ÐÕ6¶-ËžX–g{Ë$Çd²³]ãšªŸ­ÂeIélaMG¾7ª÷Lý˜;¦²µ ç·NázA–¼’žôÓÏlÆäåþvrD”î¼ã‘R0ÇÆùÜv4ðYë¶×}3oÞH<	à 9?Åe©+ïüÛ*Ð™Š±Üò\V¬`%fÑÁËçe[Nœè~r­PìÒòx
›iÝA,VE¿EÇV'©ƒ»EìÍ³ñø|©¼Q³èÃ‡ÜÍŸ|–«•ÇMÛ-7Ýƒ{çá‡ÎÍŽÅóX³hí“t9ÀÊý¹»ô¡]/rî]ÒM+6EL”K9uM?Öštcª	à£^JGEÙ¶·¾Ý×}’öL™|VÏ+ZtWñtm¼ýABwå¤óÉÃã‰4WöõEJÇž²_¿	à-p9þy6ÛL¿wLXSSP5Y½7´æàÔ4D¬Ì*n	©Q>ÊQ=¤F*–ü*‚8E›SÌY††8ÑHR«Ô9îâŒ¢¢©þ ?ÐŸxœŽ1nÄ E{N1}ä`ÀxEI2Ê6h¶ð8Rnï¢4_z¯xúÜ‰ ªÌ,µ!5ÎVÌ1{TV©9zä)I¥DbÃN!Ä„ÎNÑ+'g3úQ¡	rr. 31zKÁ¥,ðà¯µÃ[»†÷£b‡g|Àåþ€×ë~´Û%®õ”³F;c•ƒ'iG)N[3ý; ¶^_ásKÈí»”4DîœƒÌ-il	öŠËéÂvlB|”[£4¬9áçú·â§lVž3xœm’Ën£@E÷|EK³Œóè#%£€mlÀÛx×@ó^†ncøúñ$š]jQª[:µ¸ºE;B€(Æ|,&q"J1Âª"„
R$ñ0áçÆ<
‰Êµ¸#5#9‰U%ª%‘DdˆANbÊ­¨8’C^ÿósÆI¨’$Š"’
%U1ä!/©‘Œ•H€R(ðf4k:°ÄuNJpÂiM:ð_Ã{Ïzò“ß@,K"xâEžç¢¦ªrJð:§‚×ºéH[ŽïiN3¾<€ÎÒ6íó<ÿ+}µ6°_ïÁÁ\;šÿé­¾öàÀÐë‘®iúBÓ\ÝÝæÕZžþ¡dÜÝ¤Î4íÒ¦f¦Yz»Æ´ÚwÅªº/St§^Ê±¡yy CfVeNÐ7'£¨x«ÙZž66Ó|2”Yµœ¹&ÍõÝê¤nç¥cP­x,Yˆå‹Â¾žlÃ¸pY}¶Ñˆ‡S®„¶žo=¥n¬£á2Éñï£¹9Ú;ùàx¨äÀì`—ûûˆÝÄe~ÙÍZCD"Ý-·íPhxš.³µu“fg[nH5¶»jvP…)™4o·ã@ó‘Ê†½Ž§'¿72¹ó}¨°-¯ž ˜Ôýd—RùJÏLwâ³µ<áá‚¼Yé’pb+è¦DÅàž¢„ŽòpwYèÛði%ÔÛÊG:iÇaìóÅÞ3Œ$ÍŽš•ý	,ÿ^VZî¾qàÍò™À}g¶r–?'ÆÙ¤K	hYY‚Ž\é)ø% GðI×T  IÒ‘—9©g´}†¼<´9|®pÿø"Ž[d¸NIhzÖ¶MG¿ÿâ Àuü-æð/w ‘xœ}ŽÁjÃ0DïúŠ½›•dÉr%‡žJ…¶ô,kwS—Ä²R“~}E> ·7o˜’™ÁJG2`ì5õ(½íÇA£öMÃœ6Cô)u‰™çZÛP<k‡AR/dœñVw”RðHƒ¸ä¶*^Ë×’á™EàeâößÛSÅÃF©MËù´wû¼¢ªíy*…3<Åyâ|Æã\Óž¶;ÖëÊ-ñ]í´óÖ"< ©ª¢%íàãB±0”~8Orƒ8ly*Üür^x©¯Þ_›}Pêmª«Ô,"ÍxÛýÿVýÖõ\á“xœŽÁNÃ0†ïy
ßQ«¤MÜtªÐ„8!Lâì$NW´¦UÛ1ñöv@âÄí÷'ö¿-ÌÀžªÊK©Bƒ†¤·•!Ó°ÂÖÖ5:CA;l}3-œ6ð>(g¼qŒ1 «Z”u`‘AËÖFE‚.ÛiZàa¡¦ºÌÓÂÐ¹(çØ_ƒ/ý4ÞƒBÝ –­E(¤‘Rd:ÛÆ<RøoÔ§<uáúöëeå2ð·j´2XWÜÉ*«"}Œ¼Ô…6xáÈ¹¼g8R¿BþÇC¡%Zð'J=¯B¼ùd(¦÷¹ûí¿âÇÏ'èÞs,Ï9þ.ÍŸvG’xœ}ŽÍJÄ0…÷yŠ»—”ü7™…+q!¨¸Nsof"3mI3ßÞè¸ûÎïpZ%3ª¬1È„Nimt2>jï	ÇÑ{¡…S¨ÆÈÖXin$NÒH!TÈQN!éÑkk²ö­J&dQM‹÷vY*<SÎðRh†ãWÇáÚñ´cÒr{éLðNŠÑVÖÛ[i*<Å¹Ð>ãyîéˆûœ¶ûFÒ¯j´NBu•­µÌí +ÆF°]–W:oû÷Wn„7Œ½•>ƒ|É™Oß‡ÿï±ŠW«›xœ}Ž»j1D{}ÅíÃ.ºzmdLpR„t)R=®™µÖH2Nþ>"¤Nwf`Ó+h£DŽ.žÐ*JèåbMÜÚ²««T:HEKÑúEPÒÎˆD–‚41ùäc\„Ê	Bænýs«ðJ)Á[¦ûóÀyx¸Ç0‡íòh´Bn¹P0qÍ9í%÷Nž]É´Â‡;•‘öñþ‡vk4Gú›j#¬†.Æ”]k.}/ùÎm+ÇÐëz¬tÊmø>wHÃcïyøâ´¥4ùïÝÿ?Ù9^]ržxœ}ÁjÃ0†ï~
ÝG‚í&vRJéa0;¶±³lÉGê„ÄiéÛÏl;ï">ý?Bya†Ð›;ë™Py‰fë|@ãvètN5;ãZ1ãÂ)ƒtº3N]j­‚$I™:&¯—Ù´žÌ.Üò0-ðÌ!ÀKä‡¯‚õXðt#_ûéreÚF)i[•l¥%½ÄœyGL‘GøÄs*Ûn?pZ·•kâ?µ5Úöð uQ…ÛâH{ø˜	3Ã]º^ˆgNÄÉßaák\ã”„xây`x­i:ÀD¿Ü5àLg^k!Þb9IÕBåîûÿ_ßÚnh›˜3xœm’Ën£@D÷|EK³´Ó†<JFáccœd×t_6ÂÓäëÇ“™Ùå®®J§¤’ªÚ I¢&Š1••1£À˜,Í5Y•ÆIÃê\! ƒPÑŠiqÏx¬6S¢ˆÍEt¦ÅkJDDñf`œ*ýç	Žf”©ŠÈùÇLd’Ìg2UDÂø,V0žGªˆ©,Ð®MËY´È GGšP£>|=OM×À=‡_+DÆ„¨ªˆ&âLV^.YÛÞàEÖ.»=eU>>%Y›vÑýøÆ–TI“%èîÏöÂñÐn±Cgáé/oéÐÐÌÐuÃÔõ½±_e—E¡˜¾áªéIÞöRíº¾ÌlG7ƒÑ1œÉ^­WP”ÙZ’Ce¸LôvÙz1zdZj¬ªÜöü3±œéKí3WìõFÍ7Î9¼…ÛR9?qð&JËU ž½ûé¸§ç^Zê§¨‰ÓQ;s\˜§þC*§ïVÿ¬¶û`Ù\é°À~ýÊø9òó~ç­{[@á}ìr×{uùt]©‰u)me=át³rÔ—m—gEÃÒŸŸA©MÖ€Oš„éy¦î¶9ÖÃQ£¦ÕmÔÝ¤«Æã[cÊÏI²Ÿ®9¦åGch†î€SõLŽMÇÚU@ï¯c_/Ìr°ØÛ{2Û¼n=ï²ß5;E ×ª³,/©yð‡±¡×V|5¥ªîBøp‚bÿ( GÈŽ/ÂßÎlÏú¾1au¨êòÕpÓ´è&²†âº¼ Äq#Í3(¦wú»¦«ª²naàì'B:çèŸ„âÛ&o:Z&² Ï4¿••“’xœ•MjÃ0…÷:Å\ÀaF–'”ÒÒ¬Bv]t-ÍOëÒØÆQrûè…nïñøêª
8ÐÐs!Œœ‹…˜ÄrPdµÖc¢°Û
÷¦nÉ«N°ø!2Ÿ‹÷d((Û¬2¨0%m"KêÍåkýšW8ªœFàé»áæ§áËMxÃóù(Å@˜üŽ ÃˆèZ{kÕ]›ö ¯"p¹.Ë¼V°¦Ÿô‡78èïÈzqî}üœTºÙ¬+÷ýß÷ û·YB›3xœmRÉr›@½óS•C”Í0‹RvÊ a„%,	ÙòÙÐHlfÑâ¯v*9¹]ýº_wÞëÎÀ†·Âla§Yº…)²ŽuGˆÔäŒ@ R§/; 	r,¢”„tdvÊ™ÃÕ->dlRfâéÅbÄ3îàá‚ÙX SpÇ2ôáŽé(ißí«LÒRò¼¤YÉpÇÎ_ÅCÛ·ü–ñß@·L¬›¦e;@…B…VE!»n ²›öÜ•UÃëüúÉnß“ÛðÍZVg­ÌÀÍgx~F`,Á:"w“¬ü¯¾pn=ê¹®7vÝgïùIAÁÇ+ofï8>MxvÝjEÃÑ-žêãæàœtsâÇ£‚AóÅU€:O6›‹½<Ñ^PÔ¾;Kéãé¼à[ùî’‹|½\×¸ZgÚ’r2R“Î!ž›à!xWÀÚxÛm4wzË7´xšÈ™EJ#€S»âWïºÖwªš”é˜®ây€jbà­¯éù6ÎÐì½iŸ\àQÂ`¼kf¯Z‡ãÊÏíã˜ÚÉÖÓç¡7vžÒ:R1=Ýßg‹15“ÊxVÀ‡6AÞy¾‹IG†º,O¨;îŽ²†‘:EÚ¸¦½ãú[3-‚è„ÉôÂæåe¬†“Ñ2P€Øèùy·Ù~vÂæqîÂÓ^ÆëÄã#ÇªWoêîñÙ»˜÷WU}m7ë"^<:×š úãx¯€û^Ó:å¯f~4ù^1eÁ›ŒƒºÏsÐð÷ž·ø¡›Ø¢©
 ³ô¬‘^æì†U´½©Ê›´¡{EùD¿À¤*v€V¥Ò–J9Ày°ÒÔUÍ.ý’#xœQËNÃ0¼û+V½­7MÒ
!*~ Îkïš˜&vå¸-ý{Ü‡
7¸XöìììÎ8Ef°å¬Vš«™¦ÚÖ(UUT¥QuÃeÑX‹s&-­’b‹‘}©USéÂ*ÔJV’¤™&STœÏrn¨šY»Ô†+ôŽ;xÇÏžèp¾¼»§ÄÏPTóR.Šù¢©¤&ô½K‰ÿÝº¨ÔµUP0ÃVÁ˜àmfÆ¹\€ƒKíí•Bâu{1Õhèé72Ò! 9kùÄÛ>Ù¤a
~ßóÄtˆ·ìi€à!µ9Ô{ŽSXáz“¾;žfˆ7.B‹‘®
ìÍ-_dòúyþ°@ï\Gg4«L…xs_œ½æ¯h4j[J*ánt	`ÍM{ÚÆ¿¬Œ³`—£õ˜ÜžG÷bír¤4	ÖNôqùWââj7»›3xœm’Ér£@†ï<EWÍ!—ãšm*™
ƒ÷cçÖÍâ`–¦Ávž~H¦æôKŸ¤ƒ~Î(:Õ †¨Œt¢SÅ8U9RdY‡HReCŠ„
3Zp` «ªÁ¢IeHUC‚ªªõEA’âÿ¼JDô\¿2‰(Œ`DÒ5"Œ0¢¸çqËÓ’ÍA€“‚2ðÝ¾“·¦mèsDÿ QU”$ˆT0€„BX^¯ç=ìd|ÖðR”ŒVùã-ÉxÚ’çøa,©’&KÀð+¬‰ã®ÀÆÙ€½ë¬Ìƒ¿›|× €[c…–iZcÓÜZ[/Ëóï¬¹–^Ðº“™{3M¿€®9·K…#üX¸ÝaS3¸©R"Æ½ÇãTWŸZã¯²YïÌu±Èf{;¨`Ã“jI¼óq©Øí*ž[êY–nVAWµ³C<€ëµµ6ÑYkg]xœžvŸyçå›ÔVïÎNó¹~§a7QFƒ©t¢‘3ÿ€¡³tÙòî\6G[ žsT÷]7½[‹S¬nÊ‡dJ÷Yu?ò`¶límÂÉ9àŸ‹ÛÓèf6îúÓO‚ê$Bé"€ XØsp×ºº;¥vî=Þo»criöcú¸y.½¤¨¦Û\Ê“p¹|ß#ñ/Û\®?ÀH©&çÍT?^[-ˆ¥E^Ü?v[º½Z(Ÿ4#6¯÷Ü8Ÿv~^ò$0üY9´©Q¥NQ
_ðŠ~*üûÙdeÿü1aIYBAÕæ9`´niÃÁ/QA
ˆYyY‚o#Òfy4ŒÊ°–Å³0„/õìé—qïÄ'Ü„YÖ—yÉž n Î{—˜gýý”xœÁjÃ0DïúŠ½ùPÖ²,Û!”ú)ô¼’V±À–‹$7äïëäÐz(ô°°Ì²ofJb†ž;ì×¨Ðõ¦gvžl­×6Ê›¦G%u3H'>(q,0¨ž4¡–†êŒÇÆXƒ¬‰ZwÛ¡mÕ ¤´–qIðJ1ðïtŽœàè.÷å%¯™÷ŽŸ¡Ö­BY·„'”ˆÂ.óJá¼
·Ø|€S²#øÍ½¢lCØä²¤
(M9R	Ÿ,ÄÛÈ‰nó#ƒ	‘Ò"ÍœïÆþ.¾áü²ºŒÁ¬ar!ž¡Œ·l{!Na+áv‹÷;s=üÕQ|æ‡ãš4xœm‘A›0„ïü
K=¢´&U[’]Âf!È¦ÉÍ€§`6Í¯oÚª·¾ÓèÍ7s9P
r¹gY2Ë\Ú9¥™F°™i4‡Î4dBËÊ¡Ò“r	l!Ë,KÝÌÊå’Ø¥ehé$/©¦a]3QVPÿxSG-lB1Á¸$¨4K£0d–›K37¡6[!£¬»¬	g´GRq:€/ÅüG|£ úhØ@›&6€
—*y×¶LÊì1¹3ð…wí›÷ï“õ˜}| ÿ‰U}%X¿Ï}òüD^ßô°úóW€fáæ®ã¸+Ç‰Ýø…ýŒ¨¶Ú»[³¾è»	þì8é¾óœ1~GÖ´_I‡¡|£žÔÃŽLmž^ÏÜ¿¤ÐNª­îÕqp=ç8=6*Â„™¶¦Ø·Þú­Eå2ÜÝãâD©Vêžó%=û-Ä76vóá<Õ,‘p×«ÞzC÷PIœXZõÌ£Õõ-vŽýõ½T€ä?QF=â3QÏ÷üÜ©í>|Ýø~1†ýíL×`§wwE½—Ž[l ‡Õ$]ŽŽ$Ë'ÖMAZ÷]4ï«ËYxéËÑk‚µwZ?§XØìVÏ›{€ä§H7}‚ª›æ•/ìÜ¬Ë“õhØò¯¬á2´çf}jMIyLä·Û¤öíóÐí^­qLß×Ues5:U×˜ON‡_ðÕ>Rþnö®ÿ¿˜Ð¡¢ ›ô:R!ÁÍÐ!(‡®¬"ó§†	¹c&ÞÅBÔÝ¼è‰¬Ï©¢ð©¥‹~`\~ÉÃ¿=ñ7,k
J6<9i©èINAÇ›÷_øK¸”xœÁNÃ0DïþŠ½C#Çqâ´Bˆ|A‘zÞÚëÚRbG¶Û*OÓå‚à¶í¼MID ­%ÙkA’ó^Ù¾E­[S£‘5òõzÏ¹Æ¶’M˜( ÕµÔ¨N))E'L¯ëš8*2¦£Ž£n¤!Bdx,.&xÅài€%x2çëñ’™*CÏPwm#×Bõ=<pÁ9Óq})ô_k#…ú´²pi5%Ê¶.žaÂâ2ØG(ŽÀú”)O¨	bfÆvŽ>×·|Üç9!/”E[H¿‚ØªàíDiþw˜o¼‹òUå2	Þ*xw>ž¢7™-(|·X\:†’â0Pºy	µ»'TŒmýe³ŠÖ®öóæ¯ÍØÀk§×‘5xœm’IÚ@…ïþ-åˆ2Øm¼I“hlÆ³³™ÀeÔ›ïÐvãa~}HFÉiêT*½ïÕá½N0šv †È´SÇ!aÓÐ0NqJe)6R‡@¤\`u˜eL·LË 	©M4©Èb”šÌTÑG”1ô_ï¤ÕL©N-ÓaC;©f*&ÔÖl¥P55ÉîÜðŠêŒ•à€xÍx¦ýßå¥•-{¢ì'ÐLC7ß¡*TU…4U•uÝC<Éº©Äà¹n»”÷žug‰Ÿ‚/0~ámÆÁ÷?ãù“0ñ$Ûp¹»ýÆÿ{W€úÖ#žëzc×]{ëYVÄl3ÞxsëœV7]„½ëšÉ:t_}øÑŽË¹ìûbìÝj~sTxÁðTÈëø>pf÷Ó^µ·­è/AÈQ:Ýá0+h¸­ô —ËºÆÓÕÔ¶§¿bç›ªçãX0¨«d82°“c™ŒÂyÓã¬ÈËx²	ïfÊó‡[Çkö¡Š‡ú¤*ä¦ÀáÖê¹6S@:]¹•§d¹h©Ð½]Ò:Ç8i¢UÄ¯-p’‚@mï­ïèœÊ»1öü’:wrÜù‡×wÛZZç¬}o`h¬;´LÜn3-è¢òe’½ïÖÑòö2ÏÖªŸ.ú¹ƒ¥ÌÑÕF
ˆ±*‹fw°Ñá×Ž¬ŽVs"ÂãÖp¥£Úí­Ê'ÁoZ‘P.Qr¸­MRÍ‚þ‡~Èãù®|fæG¯_'¦,™à\dYÁ®’µø¦ºRÑT äYŸÑpÛ”Íxõ–ìß8qöFš²d¤{+®(.¥Œ‚„ÕôÑË}=¼À?L>	0þ$À¢áO¿ˆÊ¯’xœ-ŽÍJÄ0…÷}Š»WKšiÒ†ad7³u}“{ÓÒDÓñíÃìÎç”Ì(¼RÖH+QÞçÐjÕYë­wHì­òÆIl¾0s,ÀƒV|ô0ô½Ô’F×u,p`"ÍZ ;ôÄŒØà^æ”.{œñ®œ"fJpwÕ¶î¿<o),´Lka7ÇÒôÛº´ž «WÆQ£áIôB45]—R8ÃÆ…|â«;ÒÏMœ·}ã–ø†tÅ‚!+Ú<1ÁGª¿Þãò½3¼Ý‡á³Å‰á’B`Wàš¦¶ùÅh]4—3xœm’Is›@„ïüŠ©ÊÑåfØ&å¤‚„V$!K·axŒ@lb1–}”¸*§ôéu×÷NÝ}€t 8!IBõ°šPEO4=Æ¦np*ÇŒp®¥ZB¹Ô°ªU'ºJDÅ2NeS—A…”0H@gªªƒÉå¼abÓ44ËTŒ	MM¦®S… 7åÏ†þR·ÈaU:2QA‹^’ñïñ³:øšÀ¤è!Ô Ø@O2–e‰×e™õýže½7Äè¥ª[hŠûO‘õ—!þú þó&Ñe=ÿ‘íÎüÚÌ6hçÏVÖþºs	Ihìln[–=µ¬­½gùª¬¦¡—\]¿‘Ö-‹o\ßò|ìçËbAæNxKªB'^yXH(˜Î„¯5þ¡¹[ïw£/SÙ.ËéŠk›V–0ªTh^˜´˜)áütÃJÜ|œƒr„íAB+37"Å[žÆ,9‰“F®c>;Z×õv];Š¦·TŽ"Ã·'—OÊë.Þ[“IžÖÐ‚„ví›½ßõ•ßò¾î¯Ç¹…Zü«}¦vNã(ôÝ!rqSÇòépy<˜ûkq_JhVM_YðäÀô|» knîò=ŸÑ‡rŸFS’mœJÝ‰ëFØ*ûS³œ”éiÑV&}¢ŠÖ«ÝÖuE¦]Ç[·WöÉ¬)v‹êF8[Í|­âx˜Œö	»•ÃÏåV_nwý=“¿Kè{xÊKé³3wåü¿1i	­ ÔEZ¸Ðõè‹¢¥m]¢L°qÂšÇ>žó®®žy]¥™¤”ÅmÆ»oÈ«ûAŸ1J³Púé+àý3+ŠßÙO ˜"xœ»N1E{Åt¡¬öå} „(( ¥DcÏlÖhc¯l'³I‘:<çž«‰žzECŽºëUM]Ý%Õ%õUUKU¬˜•ì;1£g¡“}Ýçºhk$Ùªž©h¨m”d]µM+¹-dÎª¸£óðŒÖðÜZöð@Çåñö3âG(YöMYw-Üåežív;#ÿíòâ‚Š•7:ÜÃ‹³É­Ì31çÙ²Žkœ&!>G†“-Ád,ƒ›£qÖ¯.ûiL»î :˜½;b@qþß{\€ƒA@xýx[LlÆ”š¤q4!¥yŸ¬ÓÏÒ!Ž,V—"+ÐÔ>Â€f:IpžÓb\º]KNèêªÿJ(Ö˜.G†	iÁ‰ÀvüåéëqsÆž«ÌÇLˆ“Ik7kõsÿ×Å/ëV¶Ð“4xœmR]“¢:}çW¤j­YCHÞÚÝZPÅaPDÇñ-„ ±œDæ×_vnÝ·í§þ8}º«Ok%@™é0Ër cYöæ39æˆ;§BÓ$tÆ2ãÆ”¨5pÈÏ 7)f¡éLd¦Q;%‚[Ô¦DP“@‘Zÿã…5‚°%ÈsN0áTdåMóqÔHˆHNÖé²Q`Áj)®àµPàGÖ9¿Û®ß3ñ˜6AÎŸA˜@¡Á›ª’Z`_êU—‚u£Äí:ü.¤.»ôûøK[q+ZY€§?æ-ýõ+Øú[°_û¯nrˆ—_y o=î¹®7wÝ·dÞæ±·¡åGwK­{×EÄ]»~YmÏÏ“}õ²Z×Í4?ïja€”ZÅ:Xlv'í¡ã%y_—¥öÑÛÆ?TEÁ=…«h¶¿üíépLp[(YÛ>ëÒIQ“î ÏÔ+?Åô¾ ÷#Ý½õ<XUÞ¦y_žÓnúóËù>œ´=¡8‰ð¸‹jøâžÆ•j@¬÷ƒÝ>y|fV²Â©ÜRa2â_ðë¦
c5ì—t[\ ÷`HëGHnµ
VID“,¾-UÀ»çXÕW‚g(žÊ¶ñS~1=äcý(âx×~DÌ)›33À=ÿÔëº²ÇëâHý½içùéÎ‡ð¥=×ÔÙHG^ŽëSâ8Eæ<ªºh‰½þ§~vt’ÿi¶|]ü]1#ªàÖ]¯@‰N´|3GõA®š
È‚õÓ\>ž*ÁŸòñÕ2Ã¨ï•xº)YëÀ¾lz0ÖÀWÈ”]ÅjÐtúÖé1nµ`hrpï¹üXfÊ•xœ‘?OÄ0Å÷|
‹ÐUIÿ¥­b@LLÜÀœ&Î5º6©÷Žûö„cbBb°d?ÉOïgSD„ÒˆNUUÇ•ÒeÕöÜöXëZ—ºë´”œÑÈ^¶ªˆž kúºçZÈZ™FŽ=ÑÙŽêJ¶²A)ŽcÅÔFSˆð¢¼Ã>ÔÁc„Gs¾6ÏiKX|Ñ6e'Û²¬à—œ3–Åá?V™?-¸[£ó4À~
gXPƒÍ&œ‡i[”‡°ÑºQž¡2,œÎÚ1öÂ1ÁìŽ
tX/·«Jc¦°¹hÂ_cï¸†Hhvãe€å€ÑPb{—cš]°ö*ÿAÁ^Ýç uU·Üj¥áîæ›c erl“îì%'òÃ<gDqÓ´Åü¼‚CZQ?éæž} —{˜2xœm“[o£0…ßù–ö1êr1æ²jW5’”Ü›„7ÛH&$üúÍvµo§3£oFG:Ys¨-tÝ:s(©&Á-Óšã¸Ìv„ƒ(g®nåLj^I`PÓ6MZ©lNaLG
[‚"ÙãŒË8ûÏ§Njá¸"….¡®a"Wã®îÚPÓÊ)·,B ³ÒÊìTŸT9/À–*^ƒgÖ}‰×¦møOÆÝB†c#Í¶Á@34MIOe™Kù€Ã\ŽZ
ž«SÍÏÅýõË¬¥?À7k‡ó¡ÉàéoyA8ŽÁ<œƒÕ8Œñz³¾æ
P@×x©‡±7Äxá-¢<‹Ý·áÒ›ØÙÑœ]a=î0ÞÒ1ø{žÐëÏíõu¿'£™ò
*@üIé/Ô]wkßßœà„âq9Û&úHp#ñ7…Üïý¥Œ¯Ç³¼Fý0õôÌžéèœ°`¡€c>&âÍ\„·³ÃkÂ§Õtªz½ì²Þ$zt1¯ˆM²ekŽT"¨®Â¸]ÅG„§ëJð¢óØëŒ« õvÔ<žlôãüÎ7¶œÎÎhó1^w½‡èe0Eq<œ¶w(0 Ñ~Nã""ÞÇˆf·;_']{A	³´aÙˆÞ˜Lüm¿ŸÝWù¨·ê,NŸ^H—¥’i•Æ(öÕäiùf£àmÆ«t¿ËfÖüSŒŠ[eàµÚÞKK~špWÊªd«£¶J¢£Ù½(àEÛÊBù—Yûß'¦¼óúÀÁ¹-
PóKË	~èÈ°€¨O%È¤SÓ‚Ô¹¸?yó0ÀE>^¡Ëÿ0c`5÷wàÑU29¯ÿ c0ú0’)xœ‘AkÜ0…ïúslimlïze‡äÒC¡-9Ëš‘­"KF’cößwl²¤9µÐÌã}ï)G"””H9jÕkyiuidoªºZvvº‘bQ‘|©LCx–-ŸsÓw4ôºé«î,µÝ‰4¿ê¶­„Zó"<*oÉÁ³=Eø‚ÛqyHk¢éêKÛtíY^Nð©jªJè0Ï6gúoi_·¯R1¬Öá|u*Zs½ÆƒyVÖÃÃoÒœÕä	ñs"ÑŽÖ+HÉFÂÛ£g^¸©6•àéû·¢)«"ÄÂ)d»¸FëÇcé…\XæÝR¡Œu”à•c	FÑêTjPÁ¿ÌTNÅx‘·Éê	¸äÂßžÞ]?¿îp&¤˜vO±MÁ½QæðNP
ñkAF=ðfJÁ¿äjñ@ÙgNZH¿Ÿ—âyâ 2X®‘ƒÙàwc›€+Ý•:ø-7qL|È˜¹7rŽíXþ2,‚1Åp½û×Š?57ÛŸxœMK1†ïùs—-ÙìW¶ˆ(¼x(ô ×$3éFÒ¤dSËþ{Ó"U¼èm2ÌóÌ›É‰x‡z¬­–hŒåRi!ÆV·R6¦íQ©ÆÚQµšØQ%
†ÁöFZÓ(”\¶BÔb0¼5¶\÷Âè¦•80uÊSL°QÁ‘‡Wµ”àÏ×âq>Í´Bz€ºïÄÀÇ¡àŽÎ™‰‡ƒË™þ‡Ê®éûúe¹üèìÖð„»íæÊ+dg%Æ.Í< YuòŽ)¾“ÉpAÀ;Ca¦ß<o_*±âUL•W%Ë”÷`§Î“3`„3Lêƒ@…L<.Éí§s.Ì¡ÈVßë!þØüÊ˜˜Ð…ýuü&c7Y	;gBpá:q‰Rü;WîƒU´¶ÒËú¯ó±OÑ ¦µä…èBxœ=É1NÃ0 P¥KfFO]P¢çÇv¤
:ö ¬¾ý¿	CLå&ôPÈÙ8×€‰ñéÝ¶_ÅiÊ"*`çÁJã[l	"¯ Gfˆ-qÃ.hk@Ê3eI“¢Îbì­DA2ô±Öj”^àè;4lÂrª‡º]>Ý}çœzP–éc”*ŸG¿|ïŠ—AÔºß„õgó¤Ž”æ‘Ò4Ìê¨öÃ¿†Ãøò{ZŸïàA;0uèª¦â+½&É‡Ë|‘š¥ü‘hAE—2xœm’K³£6„÷ü
UeéÊ „Lj&5ø‰pm®¯½’xØ¼,Àÿú8“Ênzuºë;«îVI	¶cãX`+&6–MÆfd°ˆãˆ &Ì	ÛH«™’eLibÈ1CË´`Ly[Ê–6¡±‰ "HØöÿ<Trƒ`,L9¶ÑØÂXÐØ"”›†‰©eñ8ÖX×¦•3Vf2'–”Rï¢ÿuülºF~òo€,bPÛF˜‚4 ÔxUYÛ¾áeÖº]¾—•’u>üL²6í¢ooà7oI4YþüW“ùrµþÒ‡ÕrçÃù¯\è›	Ÿ8Îdê8Á$Xg	ejú1ñhzÅû‡©V½ãxýyåLóE?N}|£t»R6Ä^æ=HûØº[Ìbâ;ð‚N“Cvz‰µHÄÕ}^Fîs=ÒQX«=):ÉÎMº—ñš¢Ð?»â‹»x¦ËŠyW'»ßú.ðs-6ùbw“¦¿[›.7ÎŸ™R¨Ékm²hß?ÏWtár}Ð Iã/}{ž[ûCP^N	ÜóàUß÷t¶:gõ4îá]ïÒx#…•ze+Wød?]¾(2©“ä´,¶4˜Ué…O_|ÑjîEQSZÃÆKÙ4áFoœå±_”övÇã©>Ù­'»P›èäv¯óêÉC3î'ûz]?º§;/6Å'õ¥ó{ŠýñhOš7ø‡~,¾â›ö_góÝì÷i[©	ê.Ï’÷N6-øƒ€XUHò¬ài¤¬yoFÓxö`B€¦emÆAžEŠ©¼GSgù;ªÊ !xø»—xœ¥Íj!„ï>EßÃŠ:¶£Ka/y€<?ÝY!Ž‹ã.äí3r¤.U_ªæ ‚h+Å\¬c¨\@¿$S¶	u,ë‚´¸ÅAÛÌ‡Èéb¼ŠÚ{›Öä‚uÉ¯ÞiÌ¼–Â…²ˆ÷yí.}ÔÞ>kËWðüÃò—_©e™{{íÐ¬Á{‡ð¤¥ÄÑ¶:'ýcBäz†to7h´÷4öz8Þ@I\¤Ùä´4B¼×Ê©3ŸÒ×ù¯·âX¾eÚ‘xœ•Ž=n1„{ŸâõèÙÞµ1Š"DÃrÿŒƒ‹‘×«(·g‰Š)¾)¾™Þ ŠYû!²²PA#k‡Ñ:a`+]½SÖˆ»o¸uòn`c”TÙ0l–€´;°‹Ú¥d½	.DÉ¬…_ú¹6:ÖVf:]ËÏhôùÏÛ'0Åm¬ÓI3*ëXK¬™ÅÚN¥w¼¯Ø="–=¥2ûpý¢µõO^³,%Ñ¼„{«Ä.Äwù¹!mjÎ›ð·uP< Pwf›xœ•ŽKNÄ0÷>EïÑDíoœBˆà»›1šÄ‘ã€¸=#{XÖ[T½Þ˜Áe¢`“ö.ø‘%NÑØ`%MQgCaE‚`òj£ÆkÒÆ‰!gÉ† ‘e‰ÉÚl4‘Ÿ}š*:ú¥6xª­ìð|-Kºpƒûo~ù‘—4¤º<€ÞŒ£C¸C‹¨nëRzç*&ÔqüQ¨ý˜·Vß8õý×2¯ï68¶LAn÷N½$8Ž’•z)¯+çS9ÍŸç¿¦ÕÒiÊžxœ•ËJ1D÷ùŠ»—òNg7îÜøé›'˜î4IšaþÞFt¯ËS‡ªÑˆ H$íNDc#ù0%¹TÉ‹8é)D'd[h´P¤4G9¹‰[ey2ÆèPhòÆ%%¸0"zÏÂ>®µÁKm¹ÃkÉ^©Áã7Ÿù™<c]ž@X#µãZ	xàŠsv¤Kƒþ§pž‹Éþ(æ„¡02BÉsíG{ËåˆêÊØ[½ÁV{Ïs!èyE‚†öN°ï9B:~¤PÊð“±÷ü±R<Õ”Nóýò×uì§•tŸ2xœm’[¢@FßùìãdFº¡¹$3›/¨(2Þxë¦«E@@ýõëÎfß¦ž*U§’JÎ×5 È ’š†¡›&&6µ°eZN±)¶à m
šR³Êé”c]šª 5‚S	Òbª) *'”¤ Iÿó’è–L5U§º–­afa3Âˆž‚iÛ:×¥Á¹ÂÎÝ®jÐ€•9(bY	z×ïæ½=·ð"à7Â%¦E5¢'•¨ª’VÇcÞuØË»ñ™£×²j .nïYÞíÎüåüp–ÕY›gèùo¹Co ÐÑjâÎz³~Ï¤ kë¦®ã¸}Çùp?¦y¦ÜþÒõÍÝ^_\´fruœ,V'ÎPÜs˜G´øºÀ—<$§ÂU÷BAþú:Ÿ\‹AØ¹b¼¸7ßÅ÷õ`Qj>n>ÝËxf¼%á<éo#<ò¸­c^yåŽÕm® `–‹°ŸðbØÓ ÝåŸÐkú×‹¾¥v2ÿˆ7÷¤Œ¤1cúïio|÷ë æ¾FÂäñÃI[o6ñU5‡ìK~›öüÀï=ÙÓÎWãkãú¼ón·ž»\ãáÓ4,îq­ 9¸
Š&&ÈM"Ô‘…OÁ'·ºÓ{7Æ÷ú¶õG‡Ã1\|²
O|ìVÏ+pË¯¢~ªèFAÓ(:<,xíèzEÞb•WÝ*Y/)Lï™;•';ÃdÙ_íVó—¦™ð˜…ZƒF–ó7½í“ì¢üs6?SæÐd€êsQ Ngh;ôS¢!ÙTG´)¸±"‡²×–VŸÉó‘µ )JÇÊZ$AŒ}´
¾÷hÐäø@¶ùP–xœŽKNÄ0D÷>E_À£ö§{„lb3'èØm"ÉÈñ€¸=^°FìJUõTÕ›Ë‰r¡IØgž¨Äœ<£­9F(ÆšdY&uå&[‡bau(‰ƒ!Qœ«Ù{òqÆ2º¾$T|ëo{ƒ'©žÙàî}ÈÓÇ_%Ÿò¾Þƒ	dzï"h$D5Üué]þRLÓ/¨Ft†ÇRàóÐ]Ö«4î·&úèÜ¨ãÊå%ÔV©ËòºIÑ{­zþ>ÿ½¤~ Ì^X°’xœŽMNÄ0…÷9…/ÐQ~š4!ÄŠb‡8@j;CP›Tm
ÌíÉ ÖˆÝ{¶¿÷\7f0H„‘”rFJo£c­±WfôÍÜjF‹5lœ+Œ²ÞDF$èU¯pÒË	ËäÈöF„£¾•ž8FxNœáî½ÉÓÜäÃ'á	ËrÊYeuï¼…NZ)E›.©Vþ¨´n4¿ h«3¼®*ÄÄ3ñŽ[Zk*y‡”ácïp.us¹À­)dà1}5fÝR®å¨Pb‹‡éZö%lnç?‰»/é’™ºc7]Ï)¾ìéo«”xœ•KN1D÷>E_`Fþ"„XGì°ÝÝaPb&ˆÛã ±{ªz¥0†(¦CâLU!ù½ÊŽ}HF£r©*CbÏµd	9«³†=+Vd•1¶ZSt©)´JäÇøèœ‰^7jðô9q½N|ùÆºÖ~{å6Òéà`‘NJ1ÓÛ6ý{(fu‚÷ó ˜ûõqÙ|ÑqßzƒÑA¯râÛvi„Kg^ÊÏéïñm-YPxœKN1÷>E_À‘¿cO„l#v9AÛÝFÉš8‰¸}ŒÄ±+=©^õØzŸ‘lM’}¤€ä]°â±øRÑæTã<Eõ…/(a´;#)9“‰)vž)[–â<!Ïnf…×þ±np`xk¼ÀÓçÀÝiàËê®®çg°Ó8³Ñ…	´‰Æ¨±ž[ïüÑùa„ô+*Zë^‰` H;ñdô‡·‹&¾µÊúŽ?	\H©c{_˜ô*¢Ë÷þï z M™\«›xœŒKN1D÷>E_À‘?c»'BˆuÄŽØýAÉš˜DÜ#±Fìª^éUßE  F!us+’[Ðˆ¨%Fm¡ÆÚBáX¨J™ÌGÝeífÊ9;tLÁ'ä¹Ñ4á¨%´T¥ä4õ³¿m;œDžYáá}ÄÃyÄ§;Ó¶Ë#øœ|ö>eë’sfÐËÒ»üCÑM3Æ_ÑŒé•nWËr[Hì½*üÖ•yY^Wa»©ÚöuüûÞ|ÙgVWŸ2xœm‘Ms¢@†ïüŠ©Ú#µ+ßUÉV€(~¢õ’ša†åCÉ¯_7Ù½¥/ÝÕïÓÕ‡§å”SMB2¨	*›¢ê2q†SB(eZz&\§UµÌ‚4£2!ÑÌJ!T4jQY"–4]3ˆ‘þç3D°"QR(cC6ÓT1T%ÕMQ-™2Öubuí±æàU9-@‚XE9x"ýçðÒtýEèo ºMíñˆ’"IBZ—eÞ¶ØËÛi‡ÁSUsz)†–·Çÿz ßœ±kr~þ-gìÍ|z!ØÌ<ßÞÆÑøs/ ô“:¶í¸¶½vÖóœ©zìFÎOZpSù¬·m²3gö|¢õþÙtïv¤ÚÍ¢«ÌsW mHØXÉžM~m¾“Œ¾ˆÉý »‘£‹ÚÍEmn†ðÄBÏYX’§¨Çs_7Ø´ƒjvÙÏÅÍ¤ñïË|
å;ò#þ6.çg…U2ZÛËC|Ï"Ú‘3²êêÜ”{êÃ® Ò^Ê1_Ÿ¼½º¼nGÚ´Ñ$·C‡{7)&³XÜ^7¸ö^yÎ/b8 î–Ëù”…ðÜ$ y+v+6«ƒ¼tóÚVJ;¦"·[œ¦V’é®w·†“z»–oulO_:Uc3ln¸Ð[±]ß­I Í ¢Ž¬NÁ;[“…"^ø“¾ÔÈ\o‘u\§ä2/ÜšöþÇþY ÏQå…/gcÿõ{cÂŠrFÁ¥+
Àéµ£M~Èº,Œ×%(AiWÑ(£¨í8mVv´}‹ß/EÇòJ&ÿ‚¦D¼·| Š¡þ5‘xœ5ŽÍNÃ0„ïyŠ½‘ãø/¨B­à—‰³ã]'–;Jo[•ÓÎÌêÓL^‰@Š¹i5×LùÞyÏ”1­ÕÞ5œZË˜e¨yµØ•bÞ9¥3o¥Á®wB˜b5ï¥î”M	+»ç1­€^÷8ÚGx§íŠ	Ó]Õhkw}·4ÃœÉ1Miø­]š_ QB«–kÑÂŒU%CÎ´Â›&ø²C,î€?7qÜöj¤+*¹6¢ÐðÀxA«ÿ’g8!Âåî`™ö!Ä|YûMËÙrÁ—Óù|)Â­®þ =¥`›“2xœm’[o£0…ßù–öµ1ÆXµ«¹”„ÜÞllj 	ùõ›mµo§Ñ™3£‘¾ÓJ! ¦)ÔØÒSjl@ËæŒ¥Ô†Øbq"˜m`¬ÔTŠª)Â¤#¡¶A,›$rC‡	ÕÒ,Æyjü÷SË4LS‚"Á°I J˜n™<%Øæ˜é+´kg	†´ÊEö4«„/üúÕ¼5]#ž¹ø4b “ØG
„Jr.Ë¼mæIÞ¾w¼Tg)ê¢ËòöØ±ç‡á‡µ¬Îš<OÿÊMü,'K°ö'¡³ÙF£/]
¸6nâ:Žë9ÎÊ]Mó†­¹y<áÅE—þÕq ¾úÎøý¶Ô´‚l¬áÞ˜Ë¸^D•žŽ.ð8,ˆä×bvµzÕh0`n¦vž'Ûú~\_Ö3¿œ¢žEª£š¼IÍ¡–³à[¼šè³ÐÜ§\Î‰ƒš8þïy²uû@“u­…™ùž¦nîäã[Å—ñIÜú~½§w´}P²jþa‰¹GÃfnïÝÝXZ£Ã{½ÙYÑ”£ÅÚ_L“íJ…Ó.S•ùë;Z]PÞ´ àÆ"°cQ>–-Ýä]tWõ÷ôell„¥ã8š]wxaìHi<Ö“ ½j„¾ß”þl_”ƒíùízOÞÊ>¨äi6â«v”³ÛÂ¨vuvàÓ“tény\Ñ"£e¯
x•IÃ”of£pø31e.d&@Ýâ³M~iú •çä½¤(Ïñôˆh#¤¢tm^üÑ—ºê5¾gä\ö'–xœAKÄ0„ïùï.[Ò4y›,‹xð¨àù¥y±6YÒTñßÏ‚·™a¾i•4E”äXÛ)’Em¤uÁûHNjë•
ÈÞ­Å*çQi+Ii439ƒÖáŒ2˜IÎ4)5ZB<ã„‚Ž¶”
”¯ðJo™+\ÃÇ·xØ‡À÷0¢Qgt£3p'•”b.Û–ZãTÅÑÒz'ÞÊ;Ã‘{0@çÞ¹
ñ²peH;äÝ¨;Ý9üVÚÒÛmå­_¥–J„xN}6œJŒ'ÿyù‹J|¨Çl‡œ2xœm’Í’š@…÷<EWeieình~R3©#Ž
þŒ»¦»AÌÓÇL*»¹«[÷|wu¾®C“ Ê¡	"&âÂXcê‰…`B™JT,t¥¦(;`hLãœ#$¸ŠˆaÀ$±0‚œš©aj`¢b%É^…P”Æ#R-LAô”2
-LMh˜ØÀ©Î°P¨ìŽU\Zæ¢ ;š•¢Ï¼ÿ\^[ÙŠ'.~¤¬é:A¡ÂªË%ïº<Í»7™€ç²jD]Ü_³¼;Êäé|ñ–ÕY›gàûßq¼i° ËéDÁtaÇ›µ÷yW€úÖaŽm;Û^9«Yž–Íe²v~Ç“ö~S› ·í€ÀÀžIÊUå;4ï—…Å,ŠÊäù}i§s-®ÒÎb¡Ö}V¶åNu![ Ù}Æ¯›Ö§5iVýl/»«J?\c—ã[ê9•¬ÛûÊ÷÷“ï®½Ýž£a2w+ÿh‰Zg|9Z¶w:8,B±«EñYC›"X[™ˆFcˆùaRa¨V^º—ÃU.£é‡³ö±o%2–ã~Lª¹þ6¾×S¶¼Ä%>¯óÉv|Í6™G
HßF7ËèÝoÚhoûvÕõªj¼ñ­¢"ýÖ2³IÇã¡ÂØó¬ßéþS#bÓ£’+:tsüQ³‘q?žTíMkBIrè°­s7á>4²É°¼yP„Ããü°¸÷,ÜÊìE/!1±ò¯3oá~Ý˜Š& –Eq•¢íÀ7ôh¤MuY‘_Ø1_hûpFQ™üxè¤Ì9èZƒô!bJ‹âaÿ| Ç,ù¢’xœÍNÃ0„ï~Š•8V)þÛ8©P…¸ð <íÝP'©[ÀÛU ®ˆÛÌhõivja¶$T>"ú pPÄ#kIöaT2øhÐhîÅÕ^*8-)Åd:'Cµ’DÎV{§Ñ Ž!ßêe-ð´–´ÁsNs¼p‡›?þøGžã1®óTÚ"öÚÀA)ÅžÎ©Vþ¢ÿFˆÐR¦´¡µDð^ü¦½ÕäsÞ_{ƒÛ…Û¾D«)w9-íãþWÞíP'ÄKz]˜ºušºðyúk#ñ&^p4xœm“ÉŽ›@†ï<EK9Z‰¦Y¢IðØ˜xŒÁxƒ[Íb³¹›Æž>ÌäKêT*}µHÿ_=%¤†–ÊRªËPK•ÔÌ@Š¢eˆ`„‘Œ!J°Ë±ÐaJšd(©HR$+±L’èXBŠ¬èªŠcQ”pª"ýãe”¥z¢‰Z,‰j‚EM…Š(£‰NU¤‘L“Ä8"`Þ-¯¸)IÎ8o/éã3ùÅ8#ßRòHê´A˜‰²(
I[×eßO°]ökƒ—¦¥¤«Þåe_ðøÛü§-ïrVæàëGXKÛqg{ pl×<÷ËÏº ð`Vb™¦µ0Mßò—Y=¿,öÖF+®Ên€Ôy˜æ¡VsUÙü4@g7‹æ©z¸Un±à« lúD	1Úžû`Hg—ìzznI4JÉÆ<ôoááZW—Íº-Ó|ª^Ð×§	F‡ÞTv‰¢Úð HmïÆªÉÜâÚÕ3ûy[«f%µa8pÓŸ%?h«7i·Šëì`Ñ	ÀÊ¨xoŸ‹óXAŸìÖÚYì†#—3÷q¼o£»¨]ØÎì÷´¿Î¶~F;æ±v­Ìç13›çêd^0žòÌë}Â®sˆÂý »0¨ ‘ñµ_l½âÞí6çbz.òA=ß§°7—Ö:Ûã‘N¤…”7'ÛÿíˆÖ+ë„òb´®6Õöµ7æQ¾,½†;x¼éÇÖù!€ïLŽ„¿š-Ý×ÿ+&l	Í	èxUJîœ°|‘¤ƒŒ¶5ˆë–Ó²Éç5f“i„ÿtéË¶aßÁ¢­*Ü±é-HRaŠ?Ê 7)À}OË˜÷`6ù¦©'oÿ_NS•axœTMoÛ0½ûWÙ¡	:;¶§I°ëvö™ÝNÛPÈQ$C’Óæß´Ýtë€V …%’¤‚C„´x‘ÎËE>[Îq!2—y1["–U•Ì³‹º^^äó:j„C _Vóù<]¤²Ê3”ÅB.Ëj6[Ðñ"/‹Š+2ºŒD¶ÖÁ'$|¶­Sf/K:½[ŒùC#}b0¼‚l^d”6Kg§EšF•ÝïUøß ŒÐhÊ¿‚·VkÑx‰•Nð5P4ˆœ*Û€ ¼W³§£èÚáAÙÖëãs dl³•¢¨};'ŽjªM4Òº©oK¦Ì„7®ëÖTÐÊªÀÃ:ßh@™`AüÁÉÖŽFãÖs½#>x£É¶keTòàêPHkôq4I`m¢Rø-I–ds‹ …®Gy>H ä\AMÚØ;†@ç¨ª±ÃÆº€257 (5›ãûÇà}Óq¡_CM	à·¨5Ó´ÁO¢ Iú	L[OÚlit¦Ì'~lÊô·þLÍañ:ÒA”ðh=)ÍN0ˆLr„6(’ñØEŽ[CŽ¡5" ·­Cº³æŒ+@¡BJ’ÍWN5}K¨–j/‰2Ç¤ŽðQØV’>;>%&ÙgÑ5uBùŸÃU»I O³"êBßX$*#UEND·Âƒ±`ûœäÿÐ&ø²¾]_½¹X¬ó¿ýõéÔåºz:‰<1n7Êø~D”ðÛLv±k'©[ž?*ÉÖÄÃõ§oïÞ¹]¿ùpCìá³ØÑhinÇ0{_ÁmŸâ–!÷1û§ýTÍÓå˜Œß;Q^Ž”Œ«àt'²3BÇÚn@‹“°ÁÃÇ¡:ÿðûYsöóòìß8=OÆ
†˜ø£	â¾Ÿýõ	ËHCŽ‹8î—"Ø–m4Ž&§è[·~Ý3qJÓ²ÐNi±éßˆÓótô›ŽýÃ!œb_j›Nj¯‹CoõÒ³§ò¾EÚaî.¯jÜøãšDgÝŽÐâò´Œ7ô¦¡Œm]Çåqõô1Ý÷_¯7{"Î³ý*ú*ä¿‘4xœmÒI›Jð;Ÿ¢¥Qbö%Jž6ÞãeŒÇäõ´Yw7ã±?ýóKôn©S©ô+©¤)A)ˆ|‡X—%q|äB›B:žc—Ø%žï9Ð$Ä×(h¯€©í&rí›6qhû†ëûØöaIJÃ³ÃÐøß“à‰)¤Èóá˜‰ÝÚ–ç¢z$ômÛÇUÍ˜ÁžÑ¼Áª§|#·ßÍ9Jú…Ð€é¹–ãZ¡e Ý°CÃ¼ë˜RO¼`j9"ð­ç‚íýGÅT=¢/Oð—µj¨$«Àçÿ*N«ì;ðºZdÑ1?$¿çÐÀMÆ8Ž¢xEûx¿feç8ÓCüâ×gûn‹Õ-Š®2_E‘;#5:ñÔ‰o“G]¼>ÓòzÕÀô…±°Îy9^c,}QðÂÛx¦Û"
ã-Ü§W–ëóà'¾¹÷½Wù	RÍnNF¶öP¬¥Ûx›æáï{}¥R¦§\¯Ä›nÏ’ãô¶­²&¾ÄÝÝ0î„Fz01ÉñÒÄ¨un7òÊäxgC?½¡fyhÎí>SÉæü¸Dsç¤£ä„‹!Ù„[(‹õÆÝê†“Ï$ÊÒåpy™Ö³,}<o8ýL&‡×3{,­vÖ,§–Q´±aíì*ÖõÝ.ù‹‘½‘7ãtWÅâ’Âq~PÞ=o°Rô8(Œ–G™ëýisNGwÂðÚ?„žµm–×ù¾~iS¹Ë@…0¾;A|xIÍ"Çâ»¾¿ö²Ðþd–d³¿'¦m¨¨(Æ¶‚^G*ødº¦JÁ;0çˆÞO:.í'ò.íÈgIÅ;ÃTÓ:*yÿ‹Šñ^~«·#¡àòù`„	Š÷ ½;”Ixœ“É®£VEç|Å£z¥T:¶éÍ3xÑ\›Î´¾|}½T’YQÎpIg°÷ÖšG„tÓŒXÐd’eIÂ²O’-ˆYž3¹cC2ÂnU$¤Š$¥Ù”JY>åŽe2†eE–.˜„gI†/°d™«~V?Î°—ºËá¸äà×ö'ø½ùü2l¿Šç(Rä„p’&I,ëÛ¶žgøÿË¡œê|üy²¦›6pu¦nK×Ð×~r` öÌ]–$Y)¥üXkÚæIä½»?®½zòÜvÒ…ðîÄ´VñQjOÃN’R>½8Ö*¥ DŠ¸ '+Cc§Ul¦"Öæ×™	Íf¯/E—a²é¯v{¤q‹QáGñR}¾
Ü–k/84A™Ã“Œ­™>9q<tÛ¢âOÞè*Þ¾žTêB-“jËAä7ØÜ_Ã‚‡z„Cð`öõ`“²³%w+CkGŸÖº oé‚ ÓèÝÄÄÝÕxtcfç¨‰º¢³’³ãóýúØÇ†µu­£ÚÛ¸ÖA¤.é¬Ù7tºéÙPŠ_¦M"Mƒ³h*¶=ÖµÂjÃ>0z³Ñ5²íCùL­ü¡JfIAóJøŠ¾1i#ê„í}¡¨)!œÇù”rñž‚Î,õ ón>(y4ä3: ÷´/†«dŒb:x09KL~&&N„í¿¢¸°ÑIÏdZÿÌ‹Ç@ÈÓÈ*!×oTß&W›â#­ƒ¼®0•`Ukjû(dßbž¨Õ&ÃbªÏÐ™ðLøZsaGÉ4Þ…|j—¢†=6öñ9Fo³«k+?‘ð
&j€BêDŒHòÙÅW½Ô÷ò+…~Ež#{x¢Ž;RëâhLwÓú”uJM3-µm+Ò½EàÓûäºò­»ccøÏŠß2ˆa6æ¼Hû@®
Ä[½ÆíáÚôÜ$äE¤Ù4#w‘ó‹Ìs:ÄÏºäCãµ»%Œcø0y”ÚHÝ–Vîú÷Ãz#N™U©¶rfú#=lÏm¼B~¿ï÷ã©.·ïøÞ^‰ûËÍVÿÍ¬…SßýÑsÝwÓ7`vY³äLhša¦%y=ÂlîG„aA]v0ÿè‹â#Eßþ“ÉØÓ’z"•2xœm‘Ér›@ Dï|ÅTå¨r43À );e@a,„6dtc™a‰ÅH|}§rsŸº»^Ÿºo)b,1AA1/C$)˜XQdÄ&H"HÄó!w	ZZ÷ cÉQD1Ä2„XžÅ‘$G¡R±ÿ¼ÄDQ™F©À‹TÀ|òHŽE€
¡<f‰rÁÐ§MAÑœ‚¤¦-xŽÇ/óÚýÓß ^&`1„\ÔTUÖ÷ØÌúÕ‚çºié¥¼¿&YŸáÏðÍ,¹$]–€§¿ÒÓr€kº`o™Žz8îŒ¯ž;-ÒTUÓUu«mß2VµXßi¶”æÂæ“o­QUÑ)±Toº™äM¥à§°ÚáÆ‘ßóÃ†^Z ¦jõ‡§×’z+6a<{kãDÖÜW¤sv‹Çf&×‰!íÕ©Ê…(•Þ4é"Zsà£Ú“±îóšòj™\óˆædèÒQY„â{â¥>åóÞ1'+µ7¶ä­ù=Y^›Û°qL»Pc^ü™%ÓÕUßnñÝ¥3å#ûW]Ùòb•+¹.¸ýjZÊ-6ÓœÅ>±D¶vñG|žsÀ¼¬p8¿49·©áŒ_éc.úÃ9È÷®óòÈ h·—âÐ§oTJ_<ìlC-Lq[daQ˜'# °¨w~“÷	YNŽMüëíÄ£b0]§èÚ|CmÙ¸mêétÌÉÜ®›Fõ¶/xY—µÈýûÌpß?Æ­i›PpÊ´ô:Ð®?ˆ1`mS,	ÆyÇnOá½§OA™%5Ç=ò/ðåËn´3ÐUAÛ—MòU/ø–xœ…=oƒ0†w~Åíã(ª"µC÷™}§Sc+áß×!R‡.Ýî^½Ïéž¡µ¢gŠ˜º£¬‰P5UJ’žPNá¦iºbÖ§Q­ÐÖJA-“­i­1VXÃ;ÂPÍ™V\:ÅÁX~¥éê&8š1É•"»ßð˜K5ù€ó¸V‡ÔUÆßÞ€ð–Æ%°«e]9½¹1À‡žŽpÖ—)o{ß†ã’U7”²L·O”f´XúÇ–4Ï>DøNÖÒèÌ §ncŸÍ-0‹mê'rú¯}[C±(Þ}ùrE[vëÖMö¥X=£GìÇôØÄŠ“ËßÚÒ÷ýV?£ƒOŸàpGW>ý­ÿ á‰0™xœË»ŠÃ0…áÞO1ý‚‘d]—Rl±oÒè2“lk±$ìÇ_“îü¾¶#‚DÑ“\4Ö'¬µˆ+Ô2hœÈ2bÃŸßqkÑÄH>¥QO‘OF’L'™¨CJnð½½ËOÌð[:ÜÌã»ôG~AZú9Æ²ÞkÅ™˜4cðÅ,cÃõ®¹5ÜáÇoxú×vÕ-Ÿñ¨½â˜ðC…Tœ+sQqÑ¡Òù”OLPËŠP|Js]ýÞæ¥¼æÜp­°•õ]Žr­‡Š‹T#xœË1nÃ0ÐÝ§à^ÀmÉRš ÈÐ¡7ÈL‰t"@¶
KBÜÛ×É@àó¼º‰ Í£9Á0ÞxvÊŸZžF§­áA³³ØýÒ&koX7¡(
¬‡ú˜õiœ‘ƒuÁ[/*ÌµúÈÜ$ÂOnpyJì¹]K $sj{òò85­´…å”êŽv‰µÊß´FIp£ûz|~¾Ãµ´"=Ë›Ú šÚ•yÿ„9îÂàÿª ¥x†XJ“3óëby¥e¡­BÊwˆU–ÒýLTŸ˜4xœm’I“›H…ïüŠŠ˜£ÂVÅæ°'Ý	õtK‚É¾ˆ*I¿Þ²'úæ<e¾üÞé½ ¬§IbD(ÕC&1@B$5Ò©§8"q@ÁP„kÄ dPUU±Ž*‰(OSL	ÑŸ§&ÅŠSEŸâ'/GÅZ,ÉÖEœ‚
)&OFUe¢èXM"ÍP±H„hòŽ¡×¨- Fç(k¡ïÉügùÉG_ø‰ª"Kº†XÂX ]ÓÃð„íbØŒ1úÞv®õýgVù}±e×Œúò{¬•½Ý#ßöÑ[{o¾¼­þèÐÌ-j™¦õbšGëèiãO/o–«å%9L2ÛÎ¦¹”õ­i­?ŠövÄ×Õ,É3Ï†Å‘
hgö·\dÁò,•<z”±Yç)o©S‹¶	Œ¤{NuÐ¶Þ*ÊSµ©ŒëÙÅ¦œ¿¯¥µ€¼z¶Ó~¶*Ñ¹¬îJÙ©.,xó™Û“$Ü½Ö÷Ìy¬çÇ¹–÷ÈeVó­Ìã°?ˆ€VX¶ÇÚMò¾>ÃÍ’ð2ãM¼7ÏcôRž:'{o˜Û¸œâË ¦ÔZ;í²™fÑ)Sâ6ÚßÃ|9ç xwƒ)÷zùHÅI1s6KUæ‚5[b_©[ýÑø‰‰õ*\?BoÜ/ #ôÕð¨fÛäÄ‡JÙ/½þt0íÝhÞ^Â6µõ>ßx»ê®Z×=¯¤ùq¹ÝóêtI»úÞ³ˆÿg¶Ú¿þ=1Á–ºŽuô#ðý#CG)ëÄ©ˆõ/5Àòq>äl„vjàZ7Œ=;8çÐ¢Ï7J:à¨íÔDÍQw¥](Ž8$(­£ŒÿT[‘5xœ•RKsÓ0¾ëWì‰¶C›‘üHâ´e€a¸Ðáè±Š5•%$7äß³6i
Ç½ßs½*	ÚºVªnšÚt«6Û®Óf½åÊ4¢Ó¼5ÂŠª­Ø(†(7uÕ$­”ÂðJðJTÜ®)tgTÓ©Ö29•>&Ø|Á {œÂA÷=<QêCÖ‚oWñs–C&l¥ãð	Äºé6MU7køÈ;ÎMW
¾ß¨åm·Þ4ÍÙˆ…—wðÝýL‰Š{reÎ¥O˜ˆB,0È¢{ˆ£ŽAÉŒ¬—‡ÌØ"8&Wàâb —!c¹VSy¸Åäæ¬ó¹“7„ÍBWzH(ÿÚ1*‹`©Æ<bŽ´ž\}	³Ö`ÖÉ%¦«K­1g(=.4jµúðf5÷uz­%3Ñ{¶QÃ@g¤ö´˜B U¼,pÍÅŽsø&‹„_I†l1Ý°/ÞŸW¦ä¸„Ïw‘ÁÐŠ’Àr¦‚™…”–)ÈYGTü‚†¸V‹áÙ!ß‚ÚOÆ…Ð	Îj}á0.<Bs™èJŠÞcºÁgäm2ã3±Ÿ8ÆTÐÜ©Ó~œèid÷ûÞxxÎ‚‹j•éã¿wÃöî@æ.Z»ÈÞõèØù?›1xœmRIo›@½ó+Fêµ¨’*€1Æ6&`b“Ü†™a1‹Yãå×—¶ê-ïø–OŸôÞØ3’Dƒ$ÅˆÈPÕ4&*ª ¥DiJ" 2¦s-îY3"¦XÐ°šâD’1‘Q¢`E†Ê².K)ÄH Jÿû£)D*…PSE£
šãÖq¢ë‰† B
%1Oc~éÁ7@ÈŠ†‘’§|¾ó2LûAÙ/ "ETUG
àI8r©ëbYœb\O	xj.=k«ûKVŒù”ü˜_Ä²6Š|ÿÓvÜ=xu^ÁÁuöFôÚypà:˜Ä4Ó2ŒÀ61vºš[5?Ëþ'ìÝë,bâf^³îÁ‰OÃÛøV²Ùž¡½”á[´»n¢­¨¹³¿®]¿‹þÇ1ŠËõ(.:‚ÿ¡oÍÇ£¯§Û¼ië5‘å¥ÈØ„ÇŒteTžÈM>ðFT,$áæÞQÿ8XÖð±“â†>ÁO3k¹ý¤â^èêDdj{Ê––ŠëÓ* g^Zuog[TŠCžÀu›}ÄÎÆ7®çÉèÈf¬Ú^~4gçj¯šiyònpßÅôðÞë1²1Ùz«rµXæ«`;yÝÙŠMÓ¿WÃr{:bl°è´füËH¬þÂ»´ôlbçu\vÌÎ%Ëæ½]ieÕVžIÕ,Ö¸›ÆMw‡{7g'jú£[>sà9‚<ãþufï—_7Æy¬Ïh§ª=ë&6Œà›¨ˆ*HûK²ª¨Iž,j<Ì›á¸Ð6æ·~L)¨çá€ÓŒ¿B¨õ¿’xœ¥ÁJC1E÷ùŠÙKKò2É›•Wnôf’IûÀ4’ÆEÿ¾¥à^pyîâ\Îèª B>Ž	ýL¤.ÌÖO2¹˜¥HAl¤¬º1ßÜõ4 ¹Â–x.,ŠŒ8 OqƒSñÑúXÿŒcëðÚúr†·¯¥¦£vx¼óú—Ÿµ¦ujõ	\‰B@x°ÞZs[ë2†þCa>ö/»÷ý8g¨­ßj9ôlÌçr8i^µRVrÙþõÁ\#‹^j–1xœmRÛŽ¢@|ç+:ÙÇÉŽ\¤Ádf34*^A”qÄ·¾ÊÍçë×Ý}›ótrRU§’ªVr¸¡ëÐÒ˜`p(àj1¡
¡f	œ1BÈPºRcÉË`Õ4&·l›>˜ÔÆÛŒB(¦‰ÿãmÁØ-ŽU„°‘EfÁºÅ*ÔT1Qp×¦•3\–¼[ž•œž9xI:oM×ðgÆš*Ô-¨ŽÀ“ª«ªB«¢ÈÚ–Kàeí¬#à¥¬$¯óû[’µiGž€ohI4Y~þ4ñæ>Øx°›{¾½o'ï
PÀ­A9r'Dá"‹ëðènÑÒJOÃàjÈùÍqjÕž;Ë¾Iw²IT\ü…=?Už)€LMdëÓ²—6ëMo*6Ü×+÷ìÜ
Ÿ–0‰¬ñÚÐÇÑ¾¹å,¿EÝBÓ0èÃ©­€£þ4,tx½Ï¨Ó×±Ÿôƒû5D‹âý³Ã‘º;–ë«^¢
iw=ÕÌ1[»EœäÛµºœTU¯€ ¯J±u’¾ïéìÛñepy|˜“ƒµÂg#´O¯Óm/?|Þg0ˆ—³åÅÍÔv¢Ï¢Pç6ho¨ÙÄÎâqNa¬›ÐÈ–nébÍXQBÃ[ì;íQ¶?o>Îý‡”Òß;ÇÑÊ{x€°NËõ1^Î£Ç§¸Õ!«&èB¢“zÞÝï{¥ÓŠ-2=¡mX7Áì|-†êæ¯
x4ªüËlâ¿OLYs™pPwy$¿t¼iÁÍÔt dU€T~k@«+—Y{W÷k"ëyó¸”öå’xœ•1NÄ0E{Ÿbº•mlo¼B‰†N0¶'‰EbG‰´·Ç[ Q !šiþ¼yúSV"è0¶×ª÷¶ÓÎu–{ÉÏ\qI¤)ôB#[p¥TÀytRHî¼ÂZtÂÔ5©Uîl;ß[Ñ)²Žá^Æ¼Â+¦D¼QLä?ÇzçyÛ7:za47ÒhmáŽKÎ™ÏóK¡ÿ“,3] C€¦m‡5ïËÖ@^JÌ	J†[˜°òÀØK>hå
U¸LXÊˆ¥‚æ›>pè&‚OÜ QEÀ˜
÷lË+Jóí-ø»³ù)mNŒ½Ç¡šÚÜ÷­»^þèÈ¾ C‡†Všxœ•ŽËNC1D÷ù
ïQ«4¯&BHlXÃøú:mÔÞåQÑ¿'+¶ˆÕÈ3ÇöôÊÐDIRyïep¼8:úEÓ"é,­3Dñ…•såƒd¼	“³†×I[ïÝÔƒÎK£Ž~)Þ1gnðÁ)3]ž/óÎk÷+¿ÀÁYé”3ZÂ“TR
*Û–zçÿoŠ|ßøTî\S@LßÜ„xûËÈ+´²1ÜÊ9¤ÖÆ|€Ó­ÜÊ¨4ÆkÛñ™Î™×]‰q·<Nt?Ïkhn“xœÍÍNÄ Fá=WñíM'
´3™•q­WÀÏ‹CÆBtbï^îõžszH«Ñ„Å1Ç(±ˆQN0\ÍZ)kçÑ‡è¢Ól³¹“àÒx3Ka­Á$dàQ§çQig'¼`vï·RéÕæŒFoHþz¾ýt®mo8\hÔŠk¡å$è‰Î™/ëšzÇåÄÍ¯dù±b¨ÛêÎÓ×¾QE+{õ OØ{cì¥ì9;È—jêÇ‰±÷ô‘†ãàŽóSö?+`r•xœ•ÍIN1@Ñ½OQ{Ô‘]n‰b…²†x(+i;ò¥o7@à¿?A)ÄI¢ç%elàIq#£è“¨ÙÝ5*b0é˜V#l°Nš(B@éV£Jë£FpËÜ—ÚàìJ¡Ÿ”…+Áëå×yï³Ó!Ò­¸F-W„Žœ³P·-Aÿ/Yyl´l5Ò­Ÿ åç¼C£^g7r×ÎØG%‚ß!Ôµ<öc_ù»P\jJ‹ßOlÙB_t’xœ•ÍMNÃ0@á½O1».ªTþÁ»BUWˆ5œÀÏP«ªƒl)·§7@à{o4f@óâBÌ’#ÍdÄXÁôâ"±’·ˆê;5®Ä{í¼ËA$Ú€â5=1QtFkI–3¡ñÎ«´ÛÚà=ÕÊ>¸T¦;ÃëíÙ¹ö­ó)óÌìõlgµÕZÑúx”1øÿRIZZ¡~†O—ÑRÎí ¥CiRêmÝj†eZ¸•±Ÿ”ú,_•ó´ŠLË~þã©~(Ó^¨œxœ•KN1D÷>EïQ‚íŒm!Ä
±†ØÝí‰ÅÄùÌíN€XT-žT¯ze45‘u’&µG2yrÚ*¶'~ÐA{tž‚«¯œ;LIôl8ì…dÏ. [ÒA§,:têäì™„ýZ*¼úœ¹Á§ÌøÁðxÝ=Ïm4>?²FZmµ‘p'µ”Ëí–zçÿ/Åèi¹÷uÆ’cš/Ó÷Xa-­¥°0”O®q)_Mˆ—22AØ aêÛQˆ÷4g¦C‰ñ¶ËïâÛ"e•xœŽ½N1„{?Åö(Á{—ìÙBTˆžÀÞ['VûäÄñô\AÝH£ï›iE8ÌäŽ4âh´qþà-!Š78Ñ(V£eÏ#¨W$50lGçœfâ-mí`S˜q	N4ŠU®·K.ðæR’
ï“ðUàé²y^j¯²ŸåŽšÒÓzÐZq¾ßckò_rûýKªåÖÏ1ÕÇïTOâW_ HÍ½°ÀMÜµ*õš{šÁ¯ÀùSJlë^©xN2ïr;¿žþ˜U?üÒaV–xœ•MnÃ ÷œâÛWIÛ`¢ªêªêº=†G‚ƒÅOUß¾¾AÕÍ[ÍÌk @b@à°~rã±ƒ×JŠqÊLƒ<x§ÛlAjä§ÔJ,³‘RÌ˜­‘FeübÔ¨åÄçÅ‰Q0ÛÛ-ú°)¡Ò'b‚»ƒ^nGç­öŠ³Ç+	5q%×šž¸äœ¹¼®±5üßdÛ£_cªÏûÚÜ…BüéÔÜ‹=`ï•±÷Ü“§e'—¿QbÛÏŒ}Åk‚?åNË~ùã—ýVàai”xœ•ŽKNÃ0 ÷>ÅÛ£°W±B]Ã	üyN-;ò§4·o9b;ÒŒ¦WDLqÃä„@‚+íõ
Cc˜`1iÈf+æZ ™dt“²Üsœ<“ÖŠk´šõb½Ð‰ýR*œmÎØàSFÿðzytÞÛhxøLIª¸4ZÃå”_Ö5õŽÿ7É¶Œ9åö|Mµ§±ž ¦ÛØ`+­%· ´^Sž¡\±Æ¥ü4B>ÊÈÜþ¦¾	ùJsÆp(1Ü~úã‚ÜègM–xœ•Í]N!Fá{VñÝ›VšÆxe¼ÖðóÒ!m¡Æ8»×pž3@Þ&¯¸äÆÙè“•‹vž”p&š`¸^ `×Pa’2iãµ°³Ö\›¢‘*"p§ EZ˜ÛÆZ½»RÐé¹ \Açõ×yí[Ç1â…„ž¹žf+zâç,Ôû=ÿ—ìqÛ.¹ôçQûš½;QÊßÔÐëÖèweì­n%’ß)Ô/´<ö#cŸùR5¥ƒßO|Ùvb1™xœ•P»NÃ0Ýýwc€?šG+„™a`¾qŽ“¨‰]Åv¡Õ	UB¬ç­“V€ú¾ÛCiÃÕno5šÆ)´uÍmß(×ÂÔÐ;qâ>‘5½rÜ·•tM×7ÖÖÖÔÚì[†4ÒèJ)…NpNcXé•½G¤7LözKÎKÌÛÏ¤êJÖºj¥¢{©¥6,Ë”þï§9“<pÂÜô•OÔ]ÈòlóÌi
^ˆþñ¥äóÒ•Öà®†HnËobö)xˆ‘#¥@ð1¯(2NWí™ç\¼–ý]¢pÆêæðù@1P™ML3¯Cùœ‹t9\yèVy	ô·Èë€­ïÓàÑo‚s›îrøã*ñgP¢•xœŽÍNÃ0„ï~Š=‚P‹cb»®â„8Ã¬×ëÔ"u"ÿ æí©œá8Ò|ßL+Ì0iG5 "ÉäŒAË–TpJ†ÃŒ‹,cTc+Îœ%ÇÚûÈžØƒÒÊ ùðàýèÚb+°·ÓRàsæ
oœ2ÓÃãéêy®½ò>ðFK£´•
î¤’RÐr>§Öøß¤~H±Î}J¹ÞWÂ™ãÜ/GˆéÒWˆ7º¹…^qb!~#Rë8Ïn½ä
˜¡çš¦Ìèº¶/KÏü´|rImÛñþ]Ø-1îüvüã¦ø6ÔsM‘xœ•KNÃ0 ÷>ÅÛ£ÇN^š
¡®*Öp‚÷KAìÈq*åöôˆå,f¦3^â	#ª!Ñ ì‘¢AB}§¡o1j”è*–*(G[æ[%¦ÖXšA-6§®ÜžfG[½ç”’­ðiS2ù6x»?;—u[í¨övC‡m/>xï$ÏóT«ýßtËÏv›Òúše9C±9?ÔHA²šs×¼%ÞŸø°2ÕýèÜ×tK¦‡<ŽÞÏ,Ý/ÿ²_ö“xœ•P»NÃ0Ýýw§)q^n
B .,0€ÄîØ'‰ÕÔŽl§¥«"Ä†ïyÝ£=@E#4o{Y¶•€ìÎuQŠBu"¯Zðœó®êU¿a³ô°‘T)µ(UÅQÕº‘bÓ UJuEÉu]&}#%“K§gi-½ÁX¨=è~L9a	Xk<oê¼)êJºÉ‹<gÊ&FüßÉæiŒ·'­¶¤ÜÞÄ3õæ±ÝÏí«IZr}ŸuçÌY¼OUO#,ÍÞØhì@^žè(§áŽ&çöM&µî€‹¥w~pigSn¤8‚xÖÉ M¯/I7C]Ùç,¥TÇ.ªü[µûÅ®Ù“Õ«Ô(a‹X¥ÏÞ¸%GHˆMû°fìÝ:»–ßþ1ûíç œxœ•Ï=NÄ0àÞ§˜íâ8±c¯
DA'ðÏ8±6kG¶³NO@€D…¨¦yßÓ›š;«¨‘J{Û{I¹ ºSL”1ÌÚb«·Cf1VhœÕ¬—¢•žëÞ±†öÂ0&LËÛ¾Š	Û9¢—:¦:F,ð„!¢="\[ÏMY
î^C#8Œ3Iá‚2J‰M§S¨ÿ/É<-Cˆåruö >¼,3`ÎÛ†9‡XC@Gs*%˜	¡„7„tÆì§´rÿ	Æ-2}D“ÿÂ6¹mÅ/ù
¬#ÆŸzòxwg=-Xö„<‡!¢Û%ïwæõðÇ7ä†I€â›xœ•Ž»NÄ0E{Åôh?â$^!„DC_`;3Yk;òÈß“mhÅíÎ9º5#‚¤Á’t‚.M?qÝ+oŠtïyÇGBÕqØf3Æ
\J#	g¬R¤¸óä8ÓÝ„Š¬Wš„e¶ÕkÊðfcÄï"úÂÓõè¼”Vð<á3ˆ^ó^ja4<pÉ9ói]C­ø“mK›C,kð9Åøô‰9Ô(|caìuAÛ[*%¸¡ÔâwŒ–ôUÀÆéCÆ’Zö‡q+@©Å‰¹ý·xfì#Ì§S":¹ýòÇYöã”tÌšxœ•ŽMNÃ0÷>Å·G-¶c'NU!Vˆ5œÀ?/­ÕÄŽl(§'œ ±½Å<M+ É>iÝ0zi½®ÆL£˜‚âÐ|äB=¡ØjR#i-7bD×Òhn) «„éö”ÔÁôgvk×\èÕ¦„Joˆ	þ:_÷ŸçºUžHôš÷RiÕÑ—œ3Ÿ—%¶†ÿ›l·KLõqÁâfûùüÛ¦ø…ÊØËŽ@5/ ‚š·âA3ì­’MÖ\kt3¨¶Ó…~åiÎŸõÈØ{¼$„Cž¦ƒ»Ÿþhc?ä¢n
›xœ•Ž1nÄ  {^±}t6Ø§(JuJ¼ vŠàÓù÷I›*J=šÑ´Â*x7rjòž¼v†”!* &”aT½Ò“ïHl®pj`'ip½ì$b7Z6–¤ñš´ÅÉØaÀA£%+ÜÞn¹À»K‰+|pLŒ_/·ŸÎ[Ý+Ÿ‰_¡3ƒ4J½‚'©¤˜×5¶Æÿ7Å¶ìsLõ9¦ÆËB|À’çˆÀ¥äR…¸ÆÇ¾AÍ+ÿòžü˜ï\b;ÎB|Æ91r'\þ˜ßxiÌ•xœ•ŽÍN„0E÷}Šo©13ÊïÄWÆµ> ùho¡
i‹oïÀ¸»‹sNn
 M^Ã6Uf
÷¥¬Ë¾×•Ì ZÝô¥1,Ë6Ó­Ø8À'’²¨”âÆÊ¶Ö¬ajSä•Ê™¶·2—ª.š‚÷4®ÞØ{Dz‡óÐèi¼u^âq6x¦¬*e•«Zµôps¥Ðë²¸”ðSló>8Ç¿à.¤×O—²îŠ(Ä«»R\P@\÷ A3xŠÄÞPA?ø|ÐÌa ÅÄz¢=òm;/~›ÝœOÝìbê\ÂrwâÃæ´Z{êË·Å7‹¾xÖ—xœ•ÎÁNÄ …á=Oq—33ÐŠc\×ú æÂ½tˆh
¨}{ë÷ßrêÊhÐzƒ$’ˆY#KrÊŽ¬½ÄÑ£gKÔ‰WN½c‹ª·ó½T^;§v53†®ó¦7¶§Þlõ’WxÁ”¸À+ÇÄþƒáá²ï<•VøHüÊhiºÞhw²“Rø|½ÆZùÿ¥Xæ6ÅTNÄ+ž!ÄoXr)ÑÍù“×0ç/ˆ	&®ï¥bmåæVˆçÜÛÀÿšX·£oqJL‡ÂÁmç?Žˆ2•ho•xœ•ÁjÃ0DïúŠ½õÐ$¬lG6¡”B¡ähúki‹Ú’‘äÐü}BKé¥ô¶;og6Gf°Õ¶«jÈv²·uekT*­‰eo´V#J"1SdŸ¡¨[cQc£%5ÊHCªm±Ö
-¶¦íÊ(µ %!Âž¼ç¯ì<ëw†‡¡pžÒ’xcø¤Ú¢ªê-"Üc…(t˜&—3ÿß)æq99Ÿv ÇJ37²á¤£›sˆIˆ—'…‰!2¥àäáf‚[Ú&ø»‰y‚ çÑñ™¡,tvþ$Šø“þßÀs8stù²‚ÃÛa¿* Nqeñãzh‚e†_îïl@öÚøZMˆ£;y6ë`íº¿ìþxƒøÏt•™xœ•ÍKNÃ0@Ñ¹Wñæ¨‘óüM…C†VàÏ3uIìÈv
Ý=ì ±€{îhD p‰˜$JEgPè…;½0„RZ½TlwÊ +]ÁhF/(…Æh=çvAìS´³â³JÌãR¼¸R¨ÃåBá“àñòë<÷£Óé	f­¸F4¸ÀGÎY¨Û–Ç ÿ—¬~oõJaô3¬Ù—ÛFÓWs;{tƒ{=ÖrPoÔò¸CÊßÔ'ÆÞóG¡xª)üýüÇšý œ§`çŸ3xœm’Í’Ú:F÷~
UÝ%• Ér*¹<`ö Ìì„,ƒG6²O&·î.½ì:_/ú;Zq,å˜Ø–âÒq(²•AÀ!Gˆ¸dVG—‡2‡ù¶}/ÀŽíá’ |26#¨%A.D®øŸÇ4 T`,<×ƒ(@L â—qÁ¡ïœhÀ,jô±U`J¥ä=XñZrvæàûñyçgozþµäÿä¹ÐÃ¾K @¡ÅÚ÷÷Zk®À¤ÖSs ße«x×ÜVµ>šÃ×'ð—XÕU}]/ŸÅ“$¯“W°N&Yøk³Šÿì-`[±(£Q.£å¬Þw¯d´ŠRÿxrò«­’[†ç6	§Fç0çñylG™=/%î¡j-ðAÄåŸ}´	)ÎÓdÝäøã¸î:w‹LÂ¤D3ÖµÇScû²{).£Ûâ%¤äá+Œ‚x&[é©eB}¹[n_§ûÙÓV/L“O½gOsã°áñÜvªª¹òY´UÃs8XßWEéÓLz)öƒåe˜Ÿ²ÕŠ»ÅJzÛÓÆéÆ&Úœ½.£Iúˆ.¤É„ªÞœñžaS¾Ž7úNíí›‰ÛE.Ö£r—ß‹ðZª{µs (î®Õü-1óÁ¾Ke·v\/÷™azùüärýv?‰ñ-î&Žbæ®SD©¡yÑBÚ¬,ì(­^óöµI.…¿ž«9n¦_6?,ðc8c7ë¿Îâlü÷Æ¬Wi øÅð^ƒ‹ª}×Z²§–ga†´,ÕÖp*MgY‚TÍúo@ÔàÈ›ôZÕ²â)%kŸR2´ú¶Óu+À'X‘xœŽQjÄ Eÿ]ÅÛ@†§1F‡¡ôk6PèÿSŸ¡Ñ`ÌÐî¾)Ý@éßáÂáÜÞ˜­Bž'¢¶£²ÆŒÇ¨É»`œŽž¥IRlÔ¸t`šGå´t”ˆdÄ9H/QI…Éh’ÁE¯Ÿ’ £?jƒ÷\Âw?àöüåK:^wZ÷£,—P×fBíp²œÅ¹®¹wþ§.ù–Ã~…”?áÁì½å²@:…Z
‡½QŒêÖs-B¼å¥pjJƒÿºþ%,¾N)f-xœm‘I›@…ïüŠ¾£xXšMš‰Ò˜Åxß06·¦»Y8Û¿>NrOªKéÕ“ê½ž3tYIJUF™Òô=0•eÈˆÂ¨
%h`‹X:”…æ¬éÃ†ªXP¶pŠ±L%ƒÈ‰,)²"¥:Ä2±h­DK|ïó–ƒnÖ=+F*>ó·Ï¯îÞ±	e?¬k’®¼‘€()’$¶®‹¾gøE?»'à³i9»]Ÿ¿²¢ÏïÉä-øæ,»e]‘±]?Xƒ­¿‡À_£c¸wÿí €±³‰=EhgïæÅ¥1WÓ½½0òn•#B¥ÑhVFG“r7«cê·>ùèÎêë €§W¼ƒ¡nÃ%basËä,LÄ—ßDœ*é¦z›êÕyÍ)ŒÊ'_Œ×ÙjCÊê% ÝÏn]d@Œ›|ÌZXÅ½jëùòo/Ë©è=V§×Ù©Û›î*[ô¡u?øþJ.—õN ."¯ã¢·/IÈ×±˜w¼,/Ë¥ê>-û™¶væ£:•bZ?ÊHÌp¿0Õs²  Ú‡­ýô!Þ]ÅäJì‘–›v—+Q€ÎcA‡­²^Wý¨eiz‚CAŽnP¡=s± š1V>.©bK<wR6å¥ªöÒw•Ùg÷í9¹¶MF«anžÝ¼¾o+æ— ¾ìH+…ÿ¹kçûÆ„ðFqÏÀÞEÎÊÔT¥€´ãEÿÁH0ÍØä†hÞ£š4xœm’Mo£0†ïü
K{DÝ æsÕ®
I
$¤ä£—ÊÆæ#!@lCÒþúÍvÕ=u¤¹Ì<ó\ÞŒR ##ƒÐT4lA­Ü0r¢åjeDAšiºƒ5Gê£ XÕdeXÏ¬Ì¶d@ÇVdèØ ÐBÒ°¦}ñ†id6¹ÙlRU‡ÞšäºF‘¥R!Ç„&Í‘„zQ¶¨i(	­š)¸/ožGÞsú“Ðß@5Z6´ +š¢HY{:UBPüJ=÷MËhW¿?•({üó|sVt¯
p÷·¼©.ÀÊ_uè/ÜÍ6™~Î% ÷2Ïu½±ë>{Ï³ê•£Ý8ñæVyÐ—dáÅu'%Ý™'Ïµ"ÃFÍ×$JC,¦±.6I{9¼âÂr#eG=g¯..³d­&ÉjàV•e¯/‹á‡z`~x¢§ˆâ«üêM-N”s¶/ä8»¼°è(ì9f8,ÏÑ¶ŽÄRiSœ¶Ü[mÆçXžñáê/7¯ç°¤ñµ›aÕ^êúiuø:hÚGuZU,˜î‚¡2
âÎÊõR‹!O¾˜É>-F[Ì“AØQ_¿ØíÏ²»LÆòb¥ú»í\'S¥‚G8éçÖpÐý¤[Óe3)Ü­éfc9/»ù)Úæ)Ýû°&M ù0ç‹WÏMããÕ»ÎË˜¹›§´H¹^‘ÉyíÓÉ2]G{[g×ÌuÅxðiÌ¥™M“ï“bÊ

º¾®£çžr~¨†bœµ'pBLTÍ]Ñ½šöM0Ôð®eâÓ"G}-$)G˜UÿÐÐV|-@•ƒÿ8ïíçï‘?‚r™Hxœ•SÛnã6|çWðq‚ÝemQY–ïv|‹£äeAR¤$¯DÒ%Ùùú*nv.Ðò83gÎ™Q¥8¶c"ÝDÌôuÌÌ¡©Ëñ}zþÐG–e$Nâb QE¹‚CÓuƒ`æÙ„¹®gø®iø¾á¹:ÓÆˆG±eÙ Fe¢‚kT©œÃ)UJá/åý›þÎ©BR>Qþ×ÑM×ujºcé ¯–¹Rôÿtû–ýWw*Ó:Oáàó¢é|·Ó-<Ì§›àø²îu Ìw“Ù(Fa\'y5‹[ä¾Ðçf¹¿íþ±ä2i–‡éãÙžå"‰´ú8›á{‰Ë$ —'ý-u«rÓâ]°÷Á…¦-çXÛÖÚ$Âcuät(µ=»GEÄS¹*1s´žÏhG‹ZÍ…:Xx
«ºú°Ñ8?òsöÁ«m<~á›³½//	N‰Cí˜…óó•9þ;€ŽÒº@ã¡÷~™(Ý3Ì,Õ³¼Ö«¸]æÅˆïrÏ&i÷u 9Å™WjÑ˜mt4Û:– Ž\ôîÞÊ­X³r_lwº¼Òæ}*šù2í±» k‡f·aÛ Ù¡|þ“™õa¦k+PÉ|=‹º7Z†;ì±s¬ ’r|3ÉôQH½½XüvëŽëKÞjåp|¥ÃÅÑ1íÕ5™È€›Y6®gw¨{¡îÉÀ¯×3}Œ2ãä›"Œk>ãÞÚÖû~óy›¶Ñºxà¯‡Ýº?ÅýªÑfüo·á*'õD­ÈXÓ”¡¦P0gPUˆ×RT
ª›¤0¯¡¸[/ €¼-)Lòšˆ¶÷bof"8§DPQÀN4EIS}Æ¢¸AÊØHØ»2úsˆjXg¢ãÓBtO üÈ9è á›ýVŒÃ°á ý³àêà@Ó² ©\pø'é"ª£)%M¾ö:î¢UoŠ¿•ã$%ßû0ýtF€Z”´Ž}BÊJJ“{‡)UßzÇû¦ªº%yòåë ‡<å4Æøöô"þ fíw‹•4xœm’Ms›0„ïü
ÍôÐC§„$¦S Æ§8vì@|é!@±ùˆóëë~Ýú÷Ý}.»º—‹eÈ"\`;§µŠSî ,s+ç™Åb¹Í$7:ÞËFÛ´(B"+…e1äX&rÄ,X@T‚ÉcRüóS[`'Ë¤I%”æÄSÓ¤<3™ÉÚµ¯|>êªíÁŠ7ÀNªFŠ“Ÿª+çË0òC.?dQˆ™1ï 	¡!ÚºVZË,•^øÔ´½ìÎ—/¥ÒÕ˜}¸þ+»rP%xÿë¼Å2ŒÁýò<„ËØÝv‹ßº0žð\×ó]wëm#•ÇÌßykV=“ÍÜ‡Óõ¹¡ëoÊ±æà$Wk?ØkH&„£W¬æÌ?Ñå}è×kŸ $Þë´ˆXAóõyÊ®ªEÝa¦™:š‰îÜ)Þãþ¬ºä	Wð”‚_»`wŸm¶uÃfÅ	´?©ïòh¸kI5Ð)Iƒ¶!m²4
§ÅÁ|±½Ç< ÙÒœÖê9HëyÐ2ú–3Ri¹xSµ&X¤—•¨¬e¶²É%%áQù°O%}ì*a€àÉ?ŽM1îÜîa¼C—U¢¶8æ6[ðå¼fÌÓÑ¦Éçfs¦,F¯ÓÍ”`o“š¾]:Ú Ù<ç§³ Åø’Þ$¨q·ñsÜD‹¤ÈøX9„´„âƒmßü‹›ÄÈÓAŠ»}»%ÍÓ­n7Ó:[Ä_ÿß˜ñMö¥Ýx>ƒ^¾ŒrÐàº¶Š¾­AÍ{­š÷ew¹Nªû.ÚëÜ„6Œ‚g½ÃGðKe 
 +	tÏ›¡k{ô¥»®3o›·úÊÒ¢ú	ºÉ7ž\xœ•”]s«6†ïõ+ö.NbðÁ`<m§þŽ¿›Äv:Ž@à€DÀÆ¿þÈNræL'¶º‚•öÝgw¥U9¥`b³‰[Ñ¤¸A]ÓeÄ6›b¸Ç6cfe8§\u,¿ÅÛÄŽ-Ç1¨KÜVó[ƒùA ›¤aY.f*9Ìq®b#*òÂ/éõ7üS…³ì>éo`Ú–Û²®Û„šÑüf mMc¥èÿð¶£ñáf¡ŒC¸»¬î`4^Àj´‚Íx´èxOëÁÕŽ Aü8|èv:Ý^Ø9ãÁ ˜Tû‰.‹éºZ~žòŒÓÍ¨~°†t²mM-ïadF_g~J:üôÙØïºÇYº(ýÇÎ´·î¼Ñ¤aec¿¶ŠæÝº­Þƒzf3\²;îëûç¼ßT¼q4Cw:›Óí÷ÎSiš¯Ç]c~>U?¼,šoGËk‰°ÃšýÔÛýÙíu°Ø<Çy|@Pº“t†É$6x×~y+w9³Àsˆˆ¬p_k³2:ï'‰é=ây¦¶–Ç~ø´.+oyFÐ[SÊT)OQMØûÑKÙ,íÕ(*OXøýÓbfý9Mj§€ã.O‹sed[—6j3´g¼ÉÎk™¹´¥O:CºWb•Út'Ú@Í…õÔïÕËÉ‰—ž)ÉVžgëVËÏ™G£âQ!N—„½nRÂ-ÕÅž±­XÑ§‹ÑbYèæ—qiXÄ3^üÕrVØÇå¹×ò™#øÕ{ÝÖÐ{·‹þW½FûyÈ6È×8ƒ@pN1QP9æ2¹UeTüFAŠU!Ôe JšWˆ2¬/!Á
ëí
b$¡Ó@äD‚OÁC}=A	 1côò`ÐßôïaÌ€ùå^¦ôè'É­¶ýà“€õ#H3E	\ï¼GÒÔXiL*€~‘ˆ†•’ˆ4Å-Ä
E‘ œ@‘iöŸ1'ENéçzÕ~sCm ÷á=Náê¤—`L$‰8^’ y®éb~MWrdª·È/Ô¿ð^nXpXÓÆJ«I)‚_äôÂ©l#t)Ý_Z·­KhôToÊ< =ºr*å‡^8¿3N;½ÚÙåk¯BÃø¤t¿‚,¥ä’Ë1VïµüÌDð¤ú‡‹‚Þ+)†0.)ÿìÏGwÒ¹´ö¡?>æW|¼^¥X.RH‰àë Aô'ÚÄ!§äN0vçWíÿ0Ñw±ô3xœm’Ko£0…÷ü
K³ŒÚclÚQ!ò"ÐJÓÍÈH	P!É¯Ÿ´£Ùõ®ŽŽ¾{t¥s»FÀ‘!Ó„Ôš0r#Ý„*ÆB•±¦Æ*d¤Ô¬exÌ±ä8A¡3Í€CÉ‘©“/OÇØˆµÿ¼
	çZ’ÄqB4QbRÆUB1cRW©„4N„äLa}—U˜°2ˆXZŠ<&Ã·xnûVÜ'â7P	6MÍ04Œ ‚P‰«ã1ïºìäÝ¼çà±¬Q—ç4ï²žßß€ÖÒ:móÜ}=uà;>Ø-œ„Ûé·¯ ­Û–e-ëÅ~Yæ‘íDã­½¢Ù{'­Y–¥waM‘¼œéÔK"²fa5‰à~ø
Ðu[»³ C;Òºå—ûüu4NÕ»VÃ<¥^©¥†Íf¢Ü¥ÁmëQvö4lÇoÝ‡‹Z|¹^Ó‰„Np¾ÉÒ]²MM7÷†|½tNc;-j¯Gû«ºJðhOà»y¾ÝP±å,{Á‘Ñà‘ÎXÄùÉe¤ ¹ô¯¥'é^öÖ°7Uçaõ²WFUÕNz´]…ÁpKøDþ"|ój¯"tshÃÃ,xÓûÜÊ\9Ÿ¯‹~ÓnÞ‹Ófp1»ÁûZRo‰5äTU€Ù¯ú=õãŒ\sáPköÊ$òV³’‰s<Ÿ×ýtB}­fk™}­H„ëÐUkxRÀ“Ëü¹ò¯³éfòscŠ+šT€º/
ÐˆÏ^´ø¥bÙTGpR6âÂŠ\”mi¨ð)J4¿èÓ¼ãŒ•©h¼=ãnóç “&?‰¿%‡ù>œxœ}ŽMOÃ0Dïþ{G	ÇqìªBEô„¸qèyë]§©'Ê‡*þ=îÜÞŒô4³-"P7„ì‚±ŽÑ_+çx[Ç«v-ZÖhŒ8m½Q3-’6°–9VN‡àB â“˜Š­uš0´Î+Ú·Û´À»Ä½$8Þ3–CÆÓƒC¦ñ*k¼kÛJWP`ƒ¨r;öÛ&œ)õ2À…º”Ó‘¿pZ÷UJ–?Õ×Î¢'ÔYU<…¼2?ï3Ó&0R‚™:Ø²BÌo.ç7˜‡½ëü,Qb7J¬J}öy€‹)Æâúuøÿ¸úøatxœ}ÍJÄ0…÷yŠ»—i›¶É0È³¡ˆë4¹éD:IiÒßÞ8‚"îÎ¹ßýO3"(Ör¬µ¬”jx_éJ¼/„®Ñ˜Rö’aY0fÉ¤fô	°å½°º)TÛ+Þ¶¥‘¢®JÛkmMS›’s©,QK:‡ÑZxrèáðžånÌò¸½ÓárEÃ¥hQ´@YÍÉÑ‹K	g8)ïp„75øìf»Šc\"îÞJe%jYÃ+s)É]÷ð2.ƒó ÏÊ!ˆË4…9ÇºgQ0Z‚™ÝŠ„<z‹¡}‰vÝ‰®8Grƒ¼ˆòæš²FzËÃðœ7:ãúƒ¼NF%ü‚×1Ôyþ€>[“Jñ’Îå#ÖÒþcÿÿóÈ'îš2xœm’É’¢@E÷|EFôÒ¨–!™:ª:
'gDw9"%•$"~}ÛÕÑ»z«7Î]'c@gØµ±©™&ŒØ[USw±É\›ê\åÔÑ]G©`…Ì†ØáÄÒ´m•¹ÔuLCç˜N-“êºˆÿç5N™£cL¢º¶Á]¢Úcc@Ý€&ãÜp!SP#Ï¥ CTd,”L€WÚ~…÷º©ÙOÊ~Í‚®k8†	AOÕUU!åõšIù„Ç™œ4¼¥`UÞ½§™<7øçøf–Vi¥àåïùÁxÕx¶Óqäíö›à«W€ÚÚ'¾çùÏ[ûëYvðzÝ`ã‡öù.o†˜¶ž·¼À©8kC.804’÷/»Nãdî+`£ÚÉ`ÒÎ&V)Ìe2rû¸[×jéQ‹÷û”-‰5VÛtÕí„s¼öÙ­D(/&2Ýl–+`y]9‰u—ô²leÚUn/QsÇ1.®œŠ^H>üKdjå®¾ôh’×­ÂÄ£
øhöÝgÙóÉ]®3óS`äÝ‡n‡¤Æ»p‚ÎÆ~ì´Í±ˆ×õd0—½.^Ÿr
­|¾›ßyÓpa=>ƒ|¶Ñ‡ùv”MõtUíÛ†!ZFËrB“‹T7Ê£Øäê~¤aÎ¦°u
èmÂkI
Í&Dˆªx;¨òA7Im±SRÁyŒI¼öP¨ÇavÒ¤ÕžjdF‹Åž7¼µUæ*ÿœÑð{cÊ‚‰”ªÉs ØgÃj	~hOû€‹ò
²µ}DéËó;^nLÔYY(Jq»²_À£<ëçŒYyf gÝ¬Óü—/xœRKÓ0¾ûWÌ‰­V©bo'+„8pá†g?ÆU×®§!ÿžIJØË"ù0òÌ|/»dD¨{©ÞpmÐH§Œ¬ë®½n°—V¸ÚÙNô»¨Œ± wÍÁñæ©ÕÚr#¸‘Ó‰Ö j[wèD'–ÕLMeH>«è1ÀuŒ˜áƒ·âÓ8¸·øx{è;IkQ×Ì¤óÙ—‚ÿ·Ú‹Vòû*‹×3>CšÊe* Â˜ x½^ÂóèSdìköä¢c_÷a¼¶öz]™àÁåWç~¤{Æ¾DHÙ’¨’@#heN³ÊHûE¯‚Mñ}üyA³Ò©gÄ9,Œäd'ƒà¦hÊÊëã‹”&WWåƒ"(âû>9%¶.9]½%- `Fu‚q9ë~«§ÁD~æ¼Æ¸ZÂÈÆBºŒ
a=ù`IÿÖxa½l™¨Æ^{K'«eUÎl Ž‡¬`4'Zp›©?&Fø[5À»-E¨ª{ü ÿ¤-ö5<}Y‹JTÇúI>I¡w4øúeø}–ßfnEçpÇØ7OÿÂVÉ¹J/Ïo}öñûâœ%xœ‘1OÃ0…wÿŠÚ
%ØIê$B ±030Û¾sb)u*Çié¿Ç©Ê€*Ûùùî»÷ìˆ@ÛR6[M5×V•Êp)m#¥Š4ªÆÔ¢6ÜZË*Pò²2eUkQL-m[TR4\	-·¥Å¢`jŽýàUyG|¨ÎS€G<]Šçiž(Gz!«¶–UY·pÏÎ™÷{#ýo´©ÛJ×Qæ{ÚÁ"t.B q„Ø§”Î«pfìÍÃ0Ñ’®	”h)­ëæ@0ÎN½3ýµÜÎCÚk›²Ð§ÚbIKÑç®s¾ƒÉÅYE7ú¸¸šÒV5gèi8ØyXè½:ÒÅÅjq…4™à4­ØâO!þt™3p¹žÝ€K$È²#…)íH7áz„"ç°^¨©ÈŠ¬3KÛàýæ–qBsËYÄo–È…Ì«ßpï.=>f£µ™>ïþúöKÀäšxœ½nÃ0„w=÷"-Û’E‡¬íÒ¡³~èZ@l2Ý o_;èÞnâ¾#Rˆ Û^k‡ØZošÆ‰ªcph,‡­¶!¨ÅšbBíLßµÁ´ºšLí;m#ÆºsýBêœò›Œ\àâçLWøô_3xN·‡x]·•ªD/P›¶·¦qXÃjDyš²ýu¶oký‹ªÄq=ÃÄßÛ’¼Ðé˜TëÂ°KH¹(õÎ°pÞ»äâu{ìÚ¥Œ…YÜ²ìÐ˜×ß XcÉ‹Tðv„«Ã}á¸MûS¼džŒ¢p¹WJ}äýÔtâa8…ûù¯&ê?“~ÔxœÍJÅ0F÷yŠÙË•¤vÒ‹ˆÁqyÉt&×@Û”4½ßÞt­»ïÀw8µ¨‚í‰ØF¶ÒQ`çZth[$‡Þ5lGòìÅš5]*(!û8ö.$²:Èà»¶‰<ŽQúNÄ!Döú–<†%é¯á¼h;¹~‡mßôVô\ƒ§¡Ånlc­ó<§Zõß*ºæG5¼§IŽð²J¨
Sâå2+\KXyÒ
_x:k=]´l)/KžÆ<§Ï€rŒ~?þÕ7ÏçeK”6xœm’Yo›@…ßù#õ¥••²ÛTiUˆ±Y¼@c'/Ë0Æ†™÷××MÔ>å¾ÜEßÑ}8‡3ŒA¦èj‘ÃÂÀ¦…U¤ç9*5h©*ÖpQ–¶³J}Æ0å Ð3EU aäºeå¶]©y‰tMÕ¡
mMÍ
åºãÒøÏE¡ePS ªŒÂ@XW¥Ê±³BÕ R¬
U…QI™à§ŽyFkÜ€CF(fà¶œÞ†Ÿ£ñ×ÿ ª©#ÛÐTÓ 3ES©èÚ¶æü
/kî‹ÜÒŽá¾¹ü$5?‰üëø@Fz2ÖÜü-×[/c°–çaï½Ý% it×qÜ;ÇIÜ$¬Sf/îîÝÈ:õídÁä8L_Žwìâƒ;=¹~à·=×O\I¢™2d3-A;y:q™¹\Þ­S.Ñ}n–‚@r‚+b(œRâYÌå÷éØdâ"›ˆ|¨èt(Â
ý4xÞ±—y¨Ûr¨¼x½Ö~=ã½í4GvwŽñvhûÄÉ>Ý\J%o<{^ÑŠ´Ê„Øf0*¶tÒ[×ðž©¯!íˆx?¹=NãÕiãròzŽÊGÝ„ („Ç9œÔYh«3’ƒsSYŽ§ßlÌÒþt1C¢‘mç=ùIU‚Õyÿ#Ã­áþ¤Kà|<D$?½,L»2¹›.ý9nÂVƒŸî¦ßštÇ~&âÁ¥á<l7ær™3ÅlÙ­íïøž6E#½{æmæ;&­1#ô¢i ÃƒÀ#ŸTCÑ@Åº45¯7ô¥År‰{LË,ï¸ü•_YÁëŽŽò¿>b.ú›þrM&½’”‹º)?_uã—o m>"ß©€w þæoEœ5xœm’IoÛ0…ïúzia$¢6Š*’¢’¬-Ž÷Ý—‚¢¨ÍZl‰Šlÿúº	r)2—¾‡æ=Þ0Q…PB¨lH±#25V¥ŒH*AZˆT,ÅP8‘†U¨J1“°LãHARÈª+”ˆ†b¦ë©²®¡(úäõ8„T3Xk8„Ä¡N•èRŒU‹Â†NÒñ´nÀT+À–$kÀSÔ¿¿Û®eû$¤X“¡Á Ê
´.ËŒó;ìeÜïBðTÕ;×ßIÆÓ.|¼_È’SÒf	xøW–ã0óf`xsµ^8ï{ o-j™¦e›æÜš¿d›FØk¤§¹:}Sš 7MozL§ÀãeàwpÒ/¨x™í®%y]3ØoCëø:×m×mRÞîêÖÖî‹Óóš¥U!åLë"š›09×¯+Ú›Ò=¢íÛ„
`¿”Ý¡/og§t×ùúUco Ž‹Í€\n¾wðÒÂqým¿6';ñÓ] Eu\¯2©æíÍ@ÓL±Ë EÏÛ.{r‚i>cSÅy©s¿²»‰¾%¶Y&#u±*Ç‘dÍ¯AêSM:‡N€c'ñ>¡E¯ŒL”£-j#e fÅ—þ+uVÞË~Ó4?ÎG¾qµÃtY#Q9Óà‚};îÉéoãûçÚœ‹™ÖXÉl0¯ÒCg‡õö4^˜›Ò’eNòÃ~ ÷rÑÓiŠo.ÞØûg<gÖy.|xæL†_;&ŒY“0pêŠ4ìÜ±–ƒo’%7u	Š¬ê.Õ[ÉÄˆX‘°æâGTþÊ³ºjÅÏNSFuÇA»¬ˆ¾ß5íŸ ìÊøŸú8 ^å/OØ ˜MxœT]›8}÷¯ðcG£„ð™µ«Â@I
ùd›Œú`ŒùH lH²¿~™IÕŽ¦«ÕXòƒÏ¹¾º÷óš¨©–FKºë£‡D‰c‚Dij¨)#1€
Õ¤äP`1&âHÂq$kbHt<”õˆT-&Ã!Öi¨jQPÃSZÃˆT¤ŒPHùs·ÀÏŠ®éº,Ëïn¾6ŒÔ¬_ÒšTù­Ÿd<mÂ>¦Å_PÔ}¤Šš*ÁÇA·@‡ç¤†NÆ§M?ÿ”}ý_YR%,K`ïe™¶ãzpé,áÆu<c»[Û¯8€ ^˜‰MÃ0Ÿce®fYPì§µ9¦GÅoåÚ½Æl¾rk·Áþ:moFÃÂ“³Ÿ¢ X¬ w§s×·ÔÖ:m‹ÜlÄ ’YžÏñ(5<†|O¸$Ã¾]‹ÜØêæÜ×”È	äQ¥ èÏVõ~2<òAj™×v•/“•ðƒúXVö&÷ôíZ7—ç¹á^›SmO‡RE­o9ÍQˆ<àIÓåd“ÇI´b“ãÕöÆäûs2ù¶•RoV¯/yáÑD¥{ò·ìê\7+IBiÈ‚o”Õãíèßžºø~žÎ"<¸Žøâ¼”üà&ævm’ª™½½ËŒ¸bº™æR \ L,ûÇâ…\I¬™f%NQˆ¯Ê+YoÃ9?9ÍÞ9í¶	üjÂ&NéÄß­ÐÂÝ}ð‹Åõ9¸÷Ìö¬ÿî›,>uÅÆ0lŠ
"Ì3Z2§ŸhÃa\ÓJS(`vŸß“~|J9¯ØX~Ï‘ðžôð6Tôàóšä1KÊ	ûP¡¾KØÃ‹þ)EeBrš|Læ4
”•ÂÓÔð{á;ý"ºGz5ÆsèÀS­Ôï÷[ù€—j6U„8‰zw{’g„»Ø¿Î·^‰
2þ£Â ¾åð[Õq¢¬&˜«šFÍ+½#ÝøIh;ÏwpïŽ):¤W #­A— ›,)»lh÷ÂÛøÏï„5UEkþÖøÿ4Æ—¨”2xœm’Io£@…ïüŠ–æˆ&¬›Q2
ÄNðnÀË­›n–„Íl^~ý0Í-uz*}õõ^×pTn*TaªaèŠ¬GlB8ŠQ¤OTÆœ|H¨IÃËPhpƒr-&fcÅ„†Fe2á:c¦®2Ñÿy]%Q<ºFºÉ‰2Ú¢†S'ˆê©:"º)¾K«LI™ñHRò<³ë—xmû–?1þ(†n"¨šDY•e!ªŠ"ëºÆY7ï)x.«†×ùý5Éº´§O#ðÍYR'm–€ŸÇžag6xö^Y~°›}í €kkG¶eÙo–µµ·n6þmg{“ôC_Zã\-+ÇÂV­’EØ´´ð\ÿ
cM Ò¢¡Õ™l†BIü¬M½Õd†ë‹¼a›ü=ö¥Ë
¿MÝyT»Ýr ÷ÀõÔ½‹}ÇÞ
 Õön¦¡…½Ò=³-éeT¹¸
n·ç½±Ü¥ÝîŽóš;ÒÚ í|íKg–/ÙA ;‘ms"žJa†¥”ß%/Ù¤ÇiÚ_û«c+AŠçŸnFœÐïÐ™û)YFÌ‚í¡A ÛÍ}8MÕ%/‡3ÉãRËËZ«¶‡-ÐÃÝ§C4ðÀ[¹L,üpeúTÌ)¤òŸÚø+$¥{wqpÕû¬šr%6	4kGqL	ŠïŠ©{b8h{'VDñ1q–<þ<5ûàE /IŽð/³Ùjú}bÂ’7	uŸç á—ž·ø¡@YqS É³"J©TvìŒ DÙ/5œtÄY3²Œ×¼d„VÝÓ½Èÿ êðø¹šxœ¥;j1E{­B}ð ï	Á¤É²Iï*X##Ë…wHHwÎ)î›Nš‘ÓÊe^#B	Ù­†<y_ Â‚¸Æ}Êä	”`KÜ²/zód£¨¸Â1oÎ°å”‰xŸç>ä{õ&?.µå3†|ýñå×OhyÉ½½IMn^Ymä‹²J‰gmuNücBäz”y NÈRÇmJÆ;ÇÔçòh!>ë×>ôRéqüë“ø‚»cˆ’5xœmRK“š@¼ó+¦*Gk#àT’
(‹ˆøX]A/©˜”ç0¨ì¯I*·|§®®þºÝ‚S
La¤Íˆ‰®ÐÇ‰b)&Sµ˜ªª „˜®Kæ´ $›ú!¬@f8Š†U¢`i2žðŸ^GŒ$š©i±aP¨Š"Ç3¦Çh&³dT¥IBgº„{‘Õ,p•Ó„8­(_“Çð£ë;ú9¡ß¢AÓ€cœ	&²*ËR\—e.Ä(vs±ì	øZÕœ6Åð#ÍEÖ“Ï£à?oi“vy
^~Ÿí¸ÞìÜ8xîÆ:¾¿9x	HàÑÙ±mYöÜ²öö~•Ÿ¸}¿Ù¾ž]áö>ãÞÃ²<7ð,ïQnç3}¼Õôzùð?–Å­ÚJ€”vÈ‚x€ÑÝ	õ¶â9ØH×è+_#·1¬ ò.|:…ëÛ<õ6Xš¾ˆâ~.ÚèVK€"r¹ÈÏ[Àßø~9Ø¾a„‡§šF4k½õ4ZŠŒúx¹ Úà×“EZ­¢Ÿ›wÖ1KyÐÐ}[«¹ñÚ¿zäèÂŽ¶M‘ãáÖáÊý8Á=|LÞB³ß<Ù{ðÐrHvv÷tk%jµíys›F“MëÌ“^ vœŠ.Åq"²vX¨ÖÞüóÚ–÷§~@ß€j²½d†ÿ<I`V¯Œaâhba1 Eäg»Îd¢8uÙ±­rï”“Ëýb’½žÐe€å<¿¯…‰wÇ&„ß$ðíÚ$¡ô·3g³øcR@yJAÓà´íi'À'š:`¼.A‰¹È«—´¦”óŸUýs*.;Ib˜ð<î¾€‘‡XÒ®Ã£qu/)Hò.®ï”Oãºªh,^ð˜ð7ªü5ù‡Ä^’FxœSË’£6ÝóÚeÑãnæ5•¤bhƒmüj?ÚíÙ	qÙ 1 Àðõ£v’ª¤j©h#éêž£{¥sD€lÕIìØI"°Ç‰­–c©Qì¶¥«L[$1&ØVJ\ÈÀºáëš2×[ÄNœ Ä bÇÍ„è–‚‘ñ
­q%(Cð*ôkñØ¦0¸,Ÿ	/~Gcsâ˜–m8zR]Ud´ BÀÿC§eZÓ>‡;´vè°6Óãi?{Ä¤ úæÏÝéÔõÒéÝ§³Y³ìgæ	¶M¸ï÷1BVÆMx^®Z,OA:9ÎƒqFØ¾ŒŠxª ¨xW/n·*6mô6½ýô;äÚ¤\DO;¾Ü—I1¾®ÛC“9—“ùÎ¬DOe)Â«kŒ»…‚ÔyÙŠzuÐ›üÃ_Ý·Ã™˜Ù­O†#Å¯Y&,cÖ|µUØ«&7/kGìB°´˜Ù„ïNÛAÖ0»úéëÛzÑ^^»üÚ÷ï‹ws>KîNV6íÕóøzI»óÈÐÏv=¯c©g›ôbR'¹x
:FCpro7C|´ÊpÑœ¾ù9¸0ÛZ†—Ÿ?ò»¦yûÛª½ŸËï'/ÓªK'÷Õöº^pBïégJJ›íÃ…úM—k¹e9Ú<•ó‚š9mßæÝ¹8…ÑY>¡©·ÉM•¸SCàÓK¶1,Ëm—¹ùi'=0¨/?;“ßòÌ€9uÂ—¸ç›{§ ßÒá*þölóú³¿VU”Ô_T•”du¥œ¹fm(¦5á-T/„3DŒpž£ŽŠ1Ž¤îqQ+Š×TŸÈ{ÔeÀþD’éŸXZ#"gˆ,¼Ò=u-•‹0ëÿbü‚¨@5-JÉå˜Ýj$ÿ<ÀL‚’&W•?£G8Žå!’ú¯xYQ,à'mÕÉPM€áŠòú‹"ï¡9®à²z,~©QÌ i-‘}âkÑe4‡GW#’ÓQÁÏe)” ¨ÂŒdÏŠr )ƒxÄ“dõ_ÿƒ7•âxuš5xœmRËŽ›JÜó-eiM¦y5t”Dƒ<öðÛ›¨nƒÓþúëÉUv9«£:UG%U‰ŽR ›32Ý Œ"%ÑøÓ6 Äˆ’4…†Ô’ŽÖàT'²a(PK‰!3–Äš!Å„º&#Y5Šeõø/?Õplh*V“4NL
±¢(šªªÉqŒSFL†˜Dz‘7pH]Ð
IVÓ|OÇ?Ë/Þsú5¥?Œ4ljF2˜AB)i®×BˆÙ+ÄKƒïuÓÑ¶š~e…ÈûøëƒðYÖf¼ÈÀÓçØ®ç¿ÀÀÖ÷Þ¬Ý>rÿàÀÈíÄ¶,{nY¡.‹Ã]æ‘ýjä¥¶ÔÎ-«^5¾µØ±Ø60õž}[ŸUª…‹<–@Ó¢eäM¾;q®hey¡¾9ùÏÆ«¢®àÜ=¨Ç«Ëoëån¤+¼h 
wça…‰%‡í»ÞKÀg³z=?[»;)[Í±DîOq€ÎåìD¦pnòRLå©#ù®itØ°Ð)šW¹ãßª}]x“Œþ´š{7Cì­Öšå‰0¸å·úí¼~¶z–q'Äî…*÷ô½ÿèÌm„–îÐÈÊã^/gþŒÆ.©|:„ÉÖ}mp,êá~ñÓ¥‡áæYx¹/o/—Ñž;lÃ©£×‘³
öŠž”h¬£|$¨¼_£ô<ã[u^h½¹xÆMÄØp*ê£ÚmL_ß~øÁ	9ï?$ðã°O‘ôfî›óïÄ¤5í2
Ú¾ª@Go=å|‘5¬Ö5Wp%(ê§¬žÓ‚'¿[Úñ‚‹ßœfŒô•$Fâ®Hø7@†¦HÁßsZƒz¸Rð)l†Gã)*ÆGÏ€È)xja‹¢©ÿù#Ÿ/xœ’Í®›0…÷~ŠY&jÉÅ@ø‰®ª[µjÕEWwÑe4ØC°jldœ ¼}¢¤JW•XxF>Ÿç&"Hs”ûTJY·²“u£SUW]!5¥y‘åE³×º¬ËTŒÈEØc^¶ØbžeT5U#«=éFwD¬À¦¤¬¡Nå•Àsì}€Ÿ¢qð|8¼kyzsqwÊŸ@–EÃ_S§ð!Ýç©àî`b¤ _Ñ²ðOŽ«W=¯‡·é<ÑNÓMZU“,ÍÒTˆÛ`Ôt ¼x£a¢S‡gaîÉ»ÚLÊ_×¡±Ì&ö{‚d?Fã?ºµcœ‰íCqå]ÞZV«@¸Ü¾czc	Fœ&¶'žxýŠ{~}Ãá0Î‘Š	Z»…Å5:ýLäÎVƒ%ÔwqKÖÏ;!žiI„ „dÙd;YÖ;¹“²€Ÿ9%¾ñÄ´’ç`"-‡M——™<ürn1h¢íF¢ Þé4ð*ÜÝ/én”<ÍyIo…ø¼f{3ýý¬V=©ß˜[¾ÿ¦É3'ŽÇ[q¼›;ªìfL» epKÝòÜ¼âµcàNˆwÃ›¡ßuI{=üÇÚ‰?_[–3xœm‘ÉŽ›@†ï<EK9Z34ˆf¢aŒM°8¾5Ð,››n/yú8–r›:T•Jß_ªÒÏ(! k¨”³R+„ˆ3h@93Ê"'š®**‘3]ƒÂˆ)é@
DH2JŒe^èrž«VA0“tŒÕRÿÏKD",Q®@Ý r‘«¹!Ij¦!(Í©,2C!æ¬(ppß¤¸ê	oÅõÙ|L|"¯ù¤¹bèŠ¦#Ì ‚PÈ‡®k{À^Ã<oý@ÉØÞ?ª†Õ<{} _Èª±šš
¼üËõül¼Øù^hîãÈ}Î €ëdå–iZ¶in­í²IÎJdGÖJ«OÊú"Sÿjš’û,ªf*Qb/¼ìêp¡ÎF"€MÓ;¥†›°õª©ÞÆeZ™S×È‰—&Ëm…f·ávS­ýÊÝN+äŒùÞí" ñ>þð•ìùl{89aGÜc:…Öø{}ÕXAÆX.OQt]×LÊ]aæ¸íBÜDÉg!€tí/î“1×‰¡óW“4îaè¦	‡3{·×êJûœ›­’×»ù‰o÷89Ê6µ3äØÑ.ëy¿-^Â•4ÎÎ+P;E­5§òzeJÃž–µÔ$óMãŽ{e8ì†ëñ,±óØ°ïcwÔÄö¨Ù:®ïbuçÀ;Ï®:9¢ô­»cçÙÉ=¢»?«m¼ÐŒ&Óõ] ïFÏ<½qCçkÇ„Ÿ„VŒ¼m%gN&¾IŠ!ƒ’ønÙ@‡^ìÊH/–Íí¥#ÓÐÂ³|~?1üó‚\ å-™ €È'*¶Mþ±&ÿ$žHxœ•“9³£FFs~EçªgömÊã2ˆ'»¤5-@b‡B¿~žÇžÌ}ÃSuª¾àžeB xC‚LAx“hå´\Ü$QP–e‰çD–ƒbÁ$†|BÝøœ®ù5g‰²(Ó"Š/	¡Q¹, FF7ÈŠDŽ—ªŸÀ¡ŸÔÏº+Ð„ð{ûüÙü~Ö? -p2Oñ”DƒÅPû¶­—ý_’dá—_å\—àã¯SuÓöÀÑ<‚È6=%NBý'' êÀ~«Š¢îK¥0j]_…ºt—{ÜkNpÄ¨S>ÉàBÎÏêl(­aœ(ûòüâxVyŒCE)S±Û®žËR_OÿÚ†•{sFÝ|³Óˆ/a]ÏqJ¢áÝœó±¯;L ºtýç^IÖà.<ŒÛVè0“ótrrkærçÑ$¡f_'ñR<{1äÇûI^ÚÜ0a8n·VÓj>Ätà½qŸ;§³´§ÏLSÕ;Uô¤a‚å|™ÒJ»î”‡ÜÇKZë×‰Â	ÔmLuäûÉ1zwÿrö]­k…½nŽð®›¤,”RšÕEd\HN7I£vÒÈ®aìÔzðí´›XL,(x)äá”+b¸·3Ù·++…µ|'µpYcMÌe<Ó/*Ìl7#€ŸÂN‰§qíŸæØ¼ÞÙµKnä6‘Á’~T!9«Œ®“¬‹÷‚G7lÂ+Š¶vu1`fR^|£T\Ç^vôÛÇOèØ–üJyü®rÝ³qSY
ëÇíÆöªÍ.‚±¼*ž!€6m¯FûÊ·œ½ïv?6™ª°1Iÿ0ZFE1Ï…£m&,'ßÃLÉéYª—ñ; //ÖÓR—®Â%+âGG˜>Þ'5N¸¸3ž÷åÜ×RÆÉ,ÐÐS£¨àŠ%
\Þ·Û×†4üÆHî÷SÑë-mE‰Ê÷3àŽSrIý¦Ã»•Moªó%7M¹m¼¿ªæ, [™r«Ý¸5¦qÝm:ËÌrpom7U¼gçl]µY8‡Æ23¸ôß	ð]QZƒø»ÝÓþ­¢Esß}v7/yÓ \ ç×÷5hKH<OdS_	"ªËýíöqÝ¾ý§†‰oóyë”3xœm‘Ks›0…÷ü
ÍtÙi"x¨ÓvŠÁv¶ñ+ñNBd0~ä××m§»ÞÕ™;ß9›oè¥PB‚¹M°È‰‰]D`ÝÌƒ¶m»Ò<G†Ò³ŒŽõ²€Í,‡3Î,Ó”.q	rm)ˆÈ¥2âH“È<³Ü<3=B$ÇÂä¹ðÇ.—–Ã'Že1|ŸÊL†c°q(Û<±FÉìYÑÈ|—?á§µ|ò@&vlƒÏÐ„ÐÈÚÓIÃŽÔ09øÖ´½ìêÛÏBåÈîÀjEWhU€/¿†Ñ4Ëh	ÖÓ(ñ7Û4üó7€.šfÔ÷iàû+ºš©Ý;AJ_Üòˆg«Ÿ^|ŸõÙÔ÷{:^Q ÓLzeõ2;—³
 NEä5ªæ­X¼a—xñ¼Ä77XêÉ,¬/ÚGì7Í|ÖïCT[®ãÉbC´¥Rµãg“ö•µ<T\PH«U¯»Åç]l]˜¼&o&œÛ«;Z4M‚K{£,;ÐïÕP¯N/»ì5âÙaú’­ç³éòCÏ¦4-Šå¦;átaùjØŽ1›îèz=KSMØà)HóüsÔWxæÔ•Z‹õ}ì_âòq6œíÎ;^#óîyxÞ>Ï9¬·¡-z/o’ >€Í«ÅÉÎ±
Âõì£•¼W®¯|•zj~8ì¯«Çh|ÊÜ¸ŽÌbR$éîybvû»9{7À÷¤,<ã¯³0yú¿1#–}!A7Ö5èåû(õ >!L0ÈûöYµ¾U­–Ã­“Ú0ÆAÕœiéà¯ WWpRZ«¦ ú¦ÿ2%PMVBþ©rþd›#xœQÁn›@½ïWì=J¼,°USÕ6SÙ¸‰MRû-0x!°$Æ__H¥žzè4zÒÍ¼§[ L€p+aÜÊrnXå$%NêÆ˜,KrêZ\5¢¥1¦ˆD˜†w8ud<Ë2 ‚Û`pÈSÓA¢×/u‹›n(ëðWQÉ¾‹a¬›Þ¿aj[œÌq,|EF ´>¤Öðß"cMÑÉ_OXøAáÝn…waÍ÷ñƒÿÉ#Ó(ŒIµšO¸ÛÛLÓ:5£zýôXn^cºÙ—W¨ø@›UÄÛx¸z#UQò»RÎÂ Dx57ª@QS¨‡uºÓÅ¤ðŽFEæq¼ˆÀ·…ã¼ØOÌÒŒ.bI«£Òhï3„?ÏX˜í¹÷è-¼Åv›_2fS—lß•®C¢ô™üi¹~wnVù.|[¦åÓpÇãCáŠ_µëeÎû~_ÕÉk«Äai»Åý-úc‡yÿ2õZV³Dt`[_p.Ïø$»NªwC7ÓCÝÍ–*­úRS²ÎÇ,ûg©´i<kô²â«×™xœMNÄ0…÷9…÷hªüÕmF±à ¬Ä™é¨mP’‚¸= ±z–ŸŸü½V˜a”s4Î+e”zv1ªèF?…ƒÖF+ñN…÷4‘µSòÊZFÅ85çÍ¬ôzÔÃhç íš<Ñ¾ð
otÙ¹À}üüëQyˆü 
­³Q!ÜI-¥yÛ–ÖøQs8Ã_¸ßQc u…¾;¶NNmÉ»Ï…š@êli)µAá•©2äíÊ 	ÝºýÁ¥öÌ ÄëÒ?ÇSNéä¿Î‰o\	kÕžxœPËJ1¼ç+ú.»d^™"
« xó°ç$Ý3Ì$C’aÝ¿7ã‚·¦ª«ª»R ‚Zt£hK¬°i+R¨Úª«
ÞÔe‰ª†j5*¶Ê@.TºB] —ØõmÑ´$8‰†säÄ|T²ìûšÉ-Í>ÀI:CÎrrà/ŸÃ}Ü"‘î u_W¢n{¸á%çLûe1)Ñ?¤½Ž<™wH&Y‚1àõ
«Ý&ã`·–#c2jcòö­V7‚ä3éôm°Èð†þâŽŒüˆrÂÃóËãiÈ´[åDÁmÙÛùR™¸3(“WÆÎ³É˜L`r{6zˆ)\À—ç_µñ¢5Óœì5¾šü.ü8Ôuø«ö‡—Š™xœÁNÃ0DïþŠ½£FëØq6Bø„8¯»k°”Ä‘ë´âï)ÎHÜFo4óZU<‹ÇèÓÀ1Œ(uééFDHÕRä`6®º6@ž¨'ëR:©#Q—<¹‘Ð…œ%qCœTÓhxoï¥Â¯Ygxå·U+ÜËõ;<ž÷³v¢_þÉ»`{wØ#šSY–Üšþcjâžg9ÂË&Üæ×Ë¢p­¼ó[‹íJúí;cžóíY%¥Cü8þ%6Ÿpîa­‘xœËJ1E÷ùŠÚK7yT^ƒˆÿ@Äu%©h §»É¤ôë÷‚»ËsîèÌ€J‘³ìò!äjÂÀ¡ ÌmuQ£ñ:P;u^ Žmf—XKeÅM2¨¨zs³)û@ZgAÇøÜ:¼ÐÚxwúX¹Ãc¹ÞÇóå¸ð\ø	”ÃˆÆFáAj)EÞÎç6ÿCéhK9ÁÛ^h0|/-ÁµÓ.Ä/ÛNjÖ³ÒB¼¶[±L[­Sú:ýu(~ 9]@–4xœm’M“š@„ïüŠ©ÊÑJ–q€ªMjA…UAÅ¯ËÖÌ0._ ê¯›TnyO]o=Ý—îVpÎŒ)±J†T9Ò…Â8k
G'Ú8–UªsƒK5¼lEr8¦q®#*2 Ñ!VXCPÕøó³Lÿñ"U †cÈbªxLªãXg”«2æ‰tmZ	0%eÆs°'IÉxû?â­éþ#æ¿ ÄÈ@ªb(*ÉŠ,K¬*Š¬mØÍÚYGÁkY	^ç·$kÓŽþ€ÿØ’:i²|ÿ:ËvçK¸ØÌÝ¥¹ÖöŸ¿$Ð7³LÓš˜fh…^99¬-_K/huSÅ¼7Í&ç¦ï®¯øb.‹ÇÑÜê®hÍc2	% Ïvü¾h“Åñ†qé
§¸V%†Ÿ×É8è‹§µ)ƒU¾’·£æTó»âÆ;Ç£æmvã‘è†„ÛÁÓ[D¦µ9n·Iþ²óöµæC$GÇqpZ„r”xÏOåÔWáî¨:–ïÙ£<6ë¸ØI@¾—ïÓëá/Ñ=ÏM{Z^©_¤þ»µ¡s7P˜²È´(Ù?íÏUï\ÜGEú™øëª°H»—À,ò÷xªmO:¸ŒÝ¢Ëæhd;Z{EGÓÃ¬¿;›}Š×“¾›»v2bû¼\¼“Ì«6¥-mÎ˜ô6ÊÊÑ3U¹9_‰Õér·Ü—p¿fÑÈÞÆÚÕñfÏëÐÑÙúR;«	¹d>ãDÿ)ŸVªÞ¥¿ÙËéÿ“\$Ô]žÁ¯oZð"CgQ KHÿÂª²ä¬ýèÊl >X+rIšNÚÁÈE“5í×v¬UžÛêš¬LÀ_4mR€e¸üyü2xœÁNÃ0DïþŠ½£V¶ãØ¸B	ÎˆgÇ»i-R»ØQþž¤â n«Ùy£™š‰ ÷^bã¬W¤Œ”@l$eÉ™yÓ]“%vv™b…ÎkkLkI8D¥<7V‘×Æ)¸ê¥ð-G­‘¹±S†ðâ‘2Üàt9îÊXh‹tB+«!µ+.9g>N¡Vú/*5çŸ(ë]—ƒ/;¸Ïä*Á™r	¥®½}Š5§aX’ÆâÆÞF‚2ve^,'Ø?í{ÌÔ¯–ž€¡øôNyþV`U`¢aØ¼Æ4Eö™ŽÁýR$ð—¢¸eì9,ëp“ú~ÓÍ»¿Æ³ÛP”àxœŽ±N1D{Åö(Ñúìóù"„R¤¥‚Ú^ïK;ò9 þžQÝhfžfzcòŽƒ¤¨c
‰Å¢A7{)y—¼´Á¨®¡qéÀÆMÚI’uÆ çI#J™çq Ë±QáÖÏµÁ)”Ì¼„×ÂîÓû·8®·•÷‰@;;Ûa§îp@TT/—Ü;ÿ5ƒCüA•„Ø2­xb	Ô·ù”WªoNµôV—åK6=×¢ÔãA?ó¯µÍK¹ô
µ0\—@¼Wê9ooÒ®ŠìâÇá¯³ê¨¦v¹—xœP»NÄ0ìýÛ£;9Nì$'„(è¡ ^Ûëœ¥‹ùº¿Ç9‚n4šÙ™’ˆ ¡zet×õÎuÚàÄ¥’Æ	i9
-¥ì$$²…FuªÓjæ4!™Ž3ÊQê±ç¼™GîÐLÒ2¬å<aðt7\%¸·7ð˜k¦£¥èÔ0b¢ƒ;.8g&®«/…þií…âüËÊêäM>Áµ¥ÅcZêº÷Þ0gp,	CÞbjßÄàüRcoô£ÃËÊ¹íSJòºÊÝùÍíƒõïÞÖæ¼á9ÅºíúJ\¨–!‘­†nwB]u#ÛÕï’™Å@pÆ¼+÷"àCC»ØÕ`ö”|dìÕ·ì!:wÐ×Ó_3±OÈ)¤F•xœ»n!E{¾búÈ,ì+ŠRäR¤`°QvÁ‚Y'þû¬-·QÒ]iîÑÕ®D`ìh‹½t^R¯‡i’a´4‘£îT´ÞudÄ+eg”#Õ;eˆ&³ÚX…“´£Qz¤8P”NàÊ§Rás¢>ð˜©Âsøº‡×¶6Úz5kº^<ÉNJáË²$fú'ª»AÊ*"ºš|;À;1Š¸Î\ÛÅ§ Žb©s)Ÿë¹æ ²?	qkó‰~#¸^S>—›Ö<bÊ}§Æ·Î™jÛâíQ!5_.T¯àKæZæy»í·±´Y„]‰qç®‡¿$Ået‹‡ž4xœm’K“¢H…÷üŠŒ˜¥Q-¯$a¢{¢QD,µv$™	‰¼
R±üõc÷Äìú®î=ñÝ³9G”ÌR4ç6 l •b–CL–eEcT‰’çÌ”úl ­ ª¢"Ædƒ)¦Ž	aD5,Œ ÑUHÂ ªÁ\cLýŸW,hÈˆäæ/ÿ\61ˆ†ÌÉY)6!±PN¨”ÝDÙÀÉZNkpÊŠ–à;™~/?ÇÛH¿úPÝÒ5ÊÌdU–¥¼k.Äö¸ðo|o»öõ×Ï‚‹ò†¿½€?¼}1ò¼ýš…ë;{18ÞÎN‰û[—€¦q‘/l{±´íýb¿æÇ…Ëd¢²Ò£»6“m'Ý6°}~6ñ§<r¬qâWåãs\‡ÈÎiíª-Q4Ø¨!®ö‰uSÕ×›7Ël1ö}u,}­Pß‰R_mc§zxÔ$ž˜î‚hÿ>ó¬t9õ[³ymÚ(÷Nlfò}ÔnÖ‹ö«Kú˜ej€æÝ³«Ügj“äåða°Õ&L„íyíâM)lê'ÏøÜ­Åç¹S<Ê^O{¾„Šû,ïÜO¿\;v"Â#.Î°=v‡®Š¹HÇj‚PÙû—¦|:Ž×^î´‹åy6e0¦ê–×¼|,}}Êìvõ%pA“Ùa–FÑÎžUþ]/ëÕluÑ
÷#;ÏÌC7Æ¶w>…Z’q'¹žÔÐ¼Ï+ûpù!iPm¥ÿ2swÎŸ“¶t((èouúy££ )ºi6tàE6Í¼õtù(^}»f¢{M§JËðÀóñop „vö*%ácÞÝéðò®CW×¯ºM%mÝ-Ío‹íÀ`˜'xœQKkÜ0¾ëWÌ=É"yý!´ÐCK=¤%Ç0’Æ»"Zi‘ä5î¯ïØ[B ‡ö6ƒ¾×|*‰Œ²}×t£¦VÙÊ¾ÑC-%cm+Iƒ{ÓÖâŒ‰B½éª^­[©•jÔ¾Úk¢ºmúfì©#j:M¶1§rŒ	¾`päá<Øy>å)ÓÎÒ#¨¶j5tU7²’R˜x:¹Rè?©•j÷õ_ªQ'gò=<QïŸþ€‘#X—M¼PZÀÄPRôžåæ#…udŠ!¾ñŠ™`&àKß=A‰PŽô&CöN^ñù'o}Ž"³óŠÞÜ/è'Ú2œêrYÜt>Ê<§ÄŽ~Ù	ñ+0©Ly½Ýô¸–³[ƒg¢S^3Ø‰ù#×aA/ƒß­+.ô~YÃ\/8EÀ`aÆ2 ŽS)¸ÀHôî7ó/˜jO;øJÁ\[ð3.Yä¹Ž•è:¿_˜w¡æ´OŽ?ÆÞÅq¼ÓËý¿þMüˆÙp–xœP»NÃ0Ýýwc@-¶ã¤q…H]˜˜ý¸N,%ve;Tù{ÜR$`»st%!‚îZ)PJÓòÆ(º“m£+dï(kwmOQsAQ£J
Ð†k«8Ý	.a¬"º†õ»Î²†jÇi/™kˆZÊTð8Á›&¸·§Ëð˜—Œ[‹À:!“´gpK9¥ÄÄyö¥à?©œŠnw¥§tò&ïá!D˜£õn‹N-Sƒó¸êÊúlâ;¦õ|,)N&BÞF ~}‚Ï±,G8!Ô&À,éÜÇ´^U| ŒH~Šmá)×s%îKRÅÇ ³ÆjÊ4Bd/¶BL³šÈóÝË7é6†›ò•Æ8b……‹ú–W_k±›èÜF¯û¿Z#½¦y‘xœAKÄ0…ïùs—]’6m·‹ˆ‚7AÏÓÉdÈ&%IWößWoz›yo>oJb†¡°UZN“%ìä0î¨û™É vÖŒˆdu«Å‚‰C©Q('É¬ÌŽš
6ƒ¬×J÷Øöº¡¦U–YàZæ˜àƒcoxœàÚ¼_†Û¼fÞ¾ÕëQ«¡Ó
®d#¥ x<ºRø¿è8vú§ä(ïá™-R©ñÆeŠ§ŠS%Eïë˜¹¬‹U‡2ó×Ñ^–àü›p¡D@˜Ù/œ„]Ã^g—«	Kâjà§¶¦ÎŒwá w¯OpB¿2¬‹ÁÂYPýbBïÏ[!^\md6ÑÚÍtÞÿUX| šÉž4xœm’K›0…÷ü
K]FSlãSM«B’Bäµ©Œ1Ä™˜@òë›iÕ]ïêêêœ#]OÕB +¡ÈB”ÒÓÆ¦…¡e‹g" |¶¹™"ƒe$H«X-
ŒL (¥#±)O1™É™I0ÇÊ„ø§'˜p+ƒ™A¨-Ûà)–!›[6OiÆQÂŸ!ÃkÕ¡¬ÁˆRœÀ†å…¨ÁKÚýY~6m#¾¦â@&±‰µÀ b5^žÏR©‡x,Õk›€—¢¬EuºýÌ¥:´É×‡à?¶¼Ê™ƒ§Ïq½q‚he0U¼ðþÜ5 ®q¹ë8îÐqæî|"coîÔ:ÉìjÔAç8Ñ(œñí<ƒþíÝdWžð€ß¨ïkàB¤ágï¯¥B­‰úõ°ŸHo²Z7ñm§YHóQáÆ|0wŠza:GåÂÙTUGx•»BîÁ1ôP±lÞ›ADTŸ¹	‡›ÓŠ/Ö×ÝG÷ñöÀß³»tœmq·'ÆºŸvöÆË$\ú^òVÞgŽÏ—u ‹@?gÙé£E¶hñdô´<§h8»I[_¬ÞS9\•Öhàƒlúå¨ÚÌoªÖÇ·Í*rìC¹qõ™>°ª·x­ÝÝNÕ+M˜nß·wSåþ`wïÖÞãý2¹Á“~ù"^Öåû’½…«ýTÄÑuWŒuí.é}l°Sƒ·Ï^>è'~Œ ‹§tFEð]ßõÙUi;óÂÑÿÓÞEPµ§¨Å¥_¡duy2gžÉþ)•/¯¢~buÞž¨jZÆ’ZòæXvRñàeQ® +RP‰º‘úDúŸd^ýz}æüTnàž3xœm’[s›0…ßùšé£'¸ˆK§éD°±ƒq’&~ÉH 67aj~}dúÖ}Ú³ûíy9+c€«™fQfA5s`J(Ólƒk†cAGç6Íl”fR®tD°F›Y¦I¡Ê©†HªÕ‚:rÌŒh©¡I¹iiÐÈ²<×8²8á”©ÔBºjhXÜæº‘AdS‹èÈ¶â
dÑ
à‘¦døMò†	ð3?›û~èÙ÷Œýªi8ºaªŽfPƒPIÛº.¥¼Â~)ƒ‚ŸM+XW]îóRý~þs–wy_æàæ£Ü…n@ìÇ`úüôœ,>ç
PÀØ»©‹±;Çxën—åÓH’yâ®¬â`<žuŽ×eÜ‡88Íõ‹w¬)ÈÎ-OàÂU@;“Ët2V;Ï
£n÷<ÇÕáY§ãÚ®BÇ›Š©bûœ%ž8ð¦Z6çQ–>ïZM* |}þS•¤á²£?µQ£Mß¼¸¡›[ˆöx{ZûcŸOy¹ØØÖƒ3-Ž%ðyÁ¬"MoÁ„­«V1Y¢Î<êSð;Â2|ÙÍÂ×'¡:ÃÖ_åÖ{8USiÇBL“Ä³Æu®)Žº
}Ó¦{zÂŽY_Š	—«sWnË-Iø~ißDpŽÞú¨×œ7¿¿*å„*@kã—s½ÉÄ&—Ü[ðS¾¯t&t®£8ÁÉŠ‡ñ^7‡%ß¹½ãC¾"ÎãízÒžE±½SÀÝv¶ÇÊWf‹÷ÿÄ”59ÝPU@°ÓÀz	¾©† mÊœŒ·}Jš^V×¯¹ºŒH¦(Í¹f?À—²úý|ÿß%¨Û¬äeJdÙ6ý_M …xœ…1OÃ0…wÿŠÛ¡UœÄn]Uˆª.ö™X$v; þ=¨`aóYï}ïî•™µ’”Ò®%GUM­Þ7Fa]ï$j§MGZÉÆ)1áL±€ñØTŽp¯«µ­RètÝ1Àì ëªb¹qRàRú4Ã-ÆHî(D²¯Çž9×yÉ´utR·¦V²Õ\Tl6c(…f¸Áh€G|‰<Ýû×ã·µiv­‘g«ˆo#`™‚’`OÙb<ù00òT`L.ø`±„³=Á*€o„CèVô˜¡#Šgž»„œ~Øl³É‘àù*Þ	’‡P¶BÜÞÓm’÷›îãðOâé|×ƒs8eÅOXúžŒ)Â¸%¬_q¤<¡¥üü7éŸÂÄ'Û±£œ—xœŽAKÄ0„ïùï.»4/iš,"
‚xD<.¯ÉkhÓ’¦»øï]‹w½Í|3S23“BºÖZmªZ!¡E´–d£;ÏJëŒ¯Y,”9hœ4­	žêÆ1úÊ¡ªµR:hM’½v¾!-me˜3<SŠ<Â'õ‰3Ü‡ë.×måcàF;ÔÖ4î*¬*áçiŠ¥ðÿP…5ÊæíÇp‚%Pac›.Ã5Ó"Ä(ƒ(õ¼BL»íâø³õôö
”Âežæ0wÂ—<ž{.gJt^Ë­õ(Ä{¼ý‡¹ëí×é¯›âKqwŸ2xœm’I“¢@…ïüŠŠ˜£1-K±ÔD÷Ä°5®ˆ
¶z+¨KVYDøõc÷ÄÜ:Oï}yÉ÷ÚšR %"j¤¡Xƒ1Š„É¡Gšˆ5DDIŽe®Â5-Z "A	?iYETŒxôt¡$A!¨(FE*†Â^V¨Dæ#C¢ ,¼FC¤"YAa¨I¡¬†è©q¸k/e,\0šœ´¯¤ÿZþ4]C_ý"	Šš 	/ò<•yÎÚö	;¬u!x-ÊšVÙð'aí¥_žÀ7gI•4,??Ç°¹<Çû¹ãê~°³¿tp oŒÈÐuÃÔõ­±]0ÿž1sg,ÕËnîR=ïu}æ•s}^î®¶r³ZTvïÏ9lS¶‘±ƒd¸”b÷á›uòwIXû~y6gµêXù ¤Îfe_«üxµæï†ËÖ„ï‘ÊéµœØÉjŒÛL|(m×ÎÝ›4ÕmÎ½žŽ¼1ß,Çt+ýÃ‹¶Ã°Ë‰Ÿ`ËYìƒ©wá Þ±Çm¨q\8°mºÚÜ*[S}(É#\º,(—‡9LgçÇrVßN¥ÝžÜÜÃ
µåB.{!òM$bžœ³*8Z~¶ßRgôÂ²>šž¿øõŽXÎóýáÆ¬÷ém%ó“[Og4Ââ„‡¬tª4íÜØß‚ð2å·³Üp\õ†Õ‘ï˜x¶fDj–“gÅ¬O)\ˆê{šox;i“Žû—™íZß'Æ­iPPuYjzëhÓ‚Ô×e®4Žk:àŒÑbšãæYŽ;–‘_ ¨n)ÈiS eUXv¶n­í—œüî¿ýe’xœËJÄ0@÷ùŠû-yÜ6Í 2‚³Ý(~@’{¯f˜¦¥“Aü{»p-î§mÌ`9‘ó6#ê!ãdiÄHv°Q§1eCFÅM£ZãÆµf$%ú >Y’ó	MŠÎ2b ìÄ—ƒUñÖ>—žXžW¸;ïØ_v<~Qîó2ßƒ1Xï<Zèô µÚí\Zã†Ó4ü†*ÝÊ…ð¾Rl3_—
­¬W(^O/§~&¥ÞÊGeê‘.}þ¾¨^3X›3xœm‘K“š@ „ïüŠ©ÊÑÚÈLeS;*¾qAtÕÛ¼€QDýõ1›Ê-}êêþúÔªa`„m›Ï·Ä·5žÎC%ûÈÔmÃÊ×sµ5L¨'O±ãx„!2È5	ö=×3É,Û4lûçÙ£<ÅØD¦‰ñ°M-ß¢†áQÇ3|ÏÉÜKˆïÐÌfjUQ5`Œggð‰rÁð“v_æM¶’}§ì0\{`=Çºzº©ë©Ê’+õ„§\ÍZ~Šªaõùþ–sU´øûøÏ,¯sÉsðòGÃ`:ÀÇô¬çÓ¦›$øÊ5 NÉÂáÂx/xZËë(¾{ÅÑ^]­fÞAXLös8Ïö·óÐM®üv(]˜3ZA50vó+.Cg³;è¢ZzÑU¿8-½K8íÜÕDªJÿygÞH/‰s~ìgYßòzh@°ÃµOawÛ˜“~ré¸QFúúˆåÂj™Ø/a9»ÂôÍÅa´ÍO½Ô)êúP%ï¸4™ÙS~ïv“©S‘GtìÞm+2E¯Ÿ§áµæ1¹FãÕDÄ¾:u{’•Æ}›´“óµfýu§ú÷ÏÕöžø#8ËÖ[”®ÄÖ^ûµ<0gi>Ï{~œ¥Ñ*yOwÅ1¨…}Ñ@æöúŠVzê.˜’ð"—p³·`llô¼]|o;I½gó{ÚÙ6Û“ý¾\£8Ø…§W¼Nö»RûûYÿÿ˜¶dMÎ@ÝžÏ a—–I¾¶o¬©J ð)vêË»ÌäKÆoL¾˜š&®%{©.Ô0á7p”• ¨iÐTøÈˆ\H…„âHñJü´\QxœMŒËnÃ E÷|Åì«F`ƒ1UTEUU©ûJ]a“Æ`Á¸¯¯/òª»û:—ôÆâèŒÕA“rÊeì¤Ã4YëìÙÄN¬X(1Èµ‘jðÎ½4¤T§Œ
ÞŽS/;Òƒ¶5Ž7žs·¼`…§_dú€#O»8
3òÁçåTCÜ ëàN*)EK—ÈLž1EºÁ;^RsÇðµ‹SÝ*í¨ëÕhF×Ð®¡"}.t¿–˜ø^â7\kN€¥àäéJž!¦Ê˜8"Çœ„xMÀ3ÇJÏ°l7Žë`Î•+ò¹„ºOþ¿Tq¡V·²l+S8ˆ?ß%j’™3xœm’Is›@FïüŠ©ÊQ›uªœTfBhÅHÈ’/®±
aé×GN*·ô©»ëõwy-:Î’cjÄ–j†¡AÅÔ¨)‘¦C†´2U—5Ä¥–v¼@3T¤ U†Ü€	J ¥0&'±jr¦ÈrÌÕc3íoÉšªsd¨†ŽMf˜
}¤ª4b
ŠCùT&ÑAdM¦´Îy	ÞhZó¼ÄãŸæW?ôü)æ?uKS Št0‘UY–¢¦ªr!°›‹ùÀÀKÝt¼-o¿Ò\d{z ÿ9KÛ´ÏSðý«ˆãzà»>ØyîïÃÀù³—€ÆžDcbcüJ^ù¾u‘¥™õíUë¼ã`ÒxØ™úÈY­«Z6lÕ‚úÊV%Ð¬–ê–8þ€ð@æx6ð`q=­ìhê›:žC“ó.èûûÐNT5›böì:Ð!Ë`.Ý4MMt©×…9}Nîï5KíŒÓ÷ãŒœÏÐÖ÷;ñ–‘Ï‹!j/à›„®ƒÓ‚"Ò\«‰³YÊ ,R4v<9± ,ô.^L4Š8oçI³÷sÖ»©=Þ'£{º	BüãBoÐT<jB	LêÝ3¯=¼¡·ûÌOqrlCq_WvÁû5¹n³×½1²¥=VÚ3íâPq_ßuÇõ·E%X÷çâ3,|B^Kvgr1Ë!»(ÎmžÊM3·npf²‹}Ü³bþv±é¯+óS3æ§øÁcm+ýuæl¦ÿ7&­y—rÐe	:~x/À7EˆOº¦ãÀY¶ž+Ú?~F’fù'¨xÕt7PrZ€1ã5¨¯ÿè#Zˆ¦-›ööHCWƒ„æ%XJþ)‘xœ•ÌÁN!Fá=Oq÷&HbŒqá+¸làòc'0A°íÛÛWp{’ïŒÐ
vn±Ñ+ÆêW¬†Ìˆ6éÈíŒ…8BGdØ$rp>;¿rŽÚE£bÐŒñ‰uvJ³_D˜ãÒ:}Nzoôr±ö­ÎÛÛW	Û~âV^IYãµ2ËbéI>K)µlcà¿N|l7*(­ßiGø¦ë•êoÁù‡C=vìí¸SÇ˜½R~œÄ¡	Q ’2xœm’Ks¢@F÷üŠ®š%•áÑÐUÉT5ˆø@L$ºƒ¦y‰€M#ê¯'©Ùå®îýêÜÕùgXº92-Í0RAd¦ª…c±ªÇÐÒ˜…"ªa3N,©8«@%j”F&NMlÐ4†fŒ´8‚:C'¦¦)ÖÿóØ€ˆÂHÕG&Ö,¤¥‰!aªÒ˜¦”A5VKQ/ò†ƒIT¬a”ÕŒƒçdøZ^»¾c¿öh#„¡fXªdUWU‰6§S!Äv
1ëcð\7œµÕí5+DÞÇ¿ÀoY›uEžþ=uÜðl]gEÞ?‚éW.	MmBì1!{3/Þ%¶gæ%Z_ wBˆ7uÉ<‘`óväCÙÑI¬kØ»…ÄÛ
/ÜŸ9áuØgwmÝuÇòÞ‡°;l]c2xVXïpÛÞ"¯r}*ÆóRÌq½†±H{()uµ)+gELcçÐh÷;ú—$¨ƒqµ(–õñ {˜¡Yîå9ÎÙY7ÃIArv.7‹ÂÉäõåZì:„,šž¹s°«Ð(knuËbm2Ýn	·ÄfbLŒëªº¿yî±À»’DºÉùêƒßÖë(¼äJ3EÇûQ¿1\«XÈ-éÒë|¢Õg­ÜõÞ÷	É>ÇN"[™z¡Q)ëàÔ,Çf*œê¼•ù^A·ë±çÛOâg=–}Ø¨óx»?Î‹(Ô[¯æÝ‹^f»šHßÎ¦«ÉÏÆ¤%ãm_U€³sÏ:~iè!>åÍ	DüQ
ÞåQ¯DI¢4´}j«>+jI"Ij6€õØßÙ_k÷B‘xœŽëÂ0ƒÿgŠ[ ty4wAÑ˜ ÍƒV*m•¦b}#ðï³-Ë®%%`E–Xv]&£ed7híPšebãƒt4D›/i©À!ZD#“2-Gµõ]Bgl 4l³¤,üQÇµ@_êxxŒþ€«ÿ‰½ñ=ç°¾n ­qŠ;©NHˆ¢¹¯©ÖôGUÄ5\ @žæ´Cn–ô†5l°ÍÇsZà»à—¸‹O§MD‘ xœPÁjÃ0½ç+ôk±7ŽG+…·±Â»)¶œ˜%vqœ–îëçv0Ø`lIOÒ{â)E"Pªeu]ŠFVÄJÞ´œ¡–«C.—ÜX’‹=Fò	„†¡E©¬T+mÛJ¶‚·X•$„2º²’WZ•Î©61õs„]3¬ñ¦\ßÚv©Ãx¼u%V¥ZÁ‚5Œ¹;º”è_TUÊ¦U¦ÊL-6Æ€§#<la?ÌóÅý7©Ç:ø)Î`¢	¦0›'vö:¹àqpé6†ñÒ9D87ÙÐ§Ð´„»|8^÷ù9t”’óÝYoË ½mCè`MË¢Ø¹Î“Ykíéú/‹?×_ÈÁkùÀúø~Î¿->“ËFŸp¤©‡õá#v=Ð‘> qY¨ª4xœm’O“š@Åï|Š©ÊÑÚ8©ÝTuÁ¸zÃaø£8"~ú˜MrKŸ^uÿºßáµœƒXÕäŒ›O¡AT11Ó0f#8aJ DJ	^J µHÇÌdDƒ˜#¤"Œb6"Gª\7ôÑ(Ò#òO8‰	FI‚Øó!:f:!Vu|ÔaS{ú1¢D­Ì*&Q™óì¢´ä¼ÆÝ§øÑ´ÿóï º©b©@B…U—K.å¶s9kàµ¬¯‹þGšË¬=~}ÿYKë´ÉSðò»¬©í¬€g{ pì·›ég_
è‹Y”ZcJ}ËŸçaÆk1ÊNúú¦	§£t)‰C÷õ2‹qô³ËæÖj:>ÏLÓ³}3ÙõFÆ‡³Ûî<¢}Y§½=þ®¼³L?¸Ù®nçMàíƒ÷zÛ³e¨Ípmºn½×uææÁËz;¿ïÄø™®b1»¸?G—^ŽIè¦;ºÝ[Ã¹–ZYÎ–èqþq:¶Ê·w›OÊþdm|yò†”’l‘¨]Zw_ü†ãÕ£uÌÇd¸´÷,Ü‹c1i³³5Z‹›k_µ¼Ø{Ýµ=N£~qsfkkñ°ðe	ï®Í¦ÉiAêœª«û¸§ËÜS@¦¢ƒ;fi¸¯üm¡g­g8r^®M¾4ÝYÈÓ‡íaûNÉÍ73Óî×È_‡µ‹VÈySÀ[½eåOfÓÕäÿ‰).)u[@ðkË	¾ @ˆêò4ê†I~‰yµ…|©+!EI¢£ÈYó\‚¿3 Escy><ß3{ *c°™¸ô¯ŸxœOkÃ0Åïþºí°µ8u'eŒýéu0ÖÁÎŠ-·Þ\»ØJJ¿ýÒ²Coƒ=½ß“8Z‰M³¬tÕud©ô•¥ÚuÔ©ÆVJµ—Ì´©5uº6µ[4J*‰¨-¶mß6²rSµhQ
x—2¬1z
ð‰ÛHîíñÒ<–¡ÐÜÒTMÝÉVO|¸•)…Iû½g¦¬
‡}ö¦¬`C–s·pH™¸)ÓÇË`´ð¾~}"ø>Ž{›¨Ä†ï˜Ž€&EÎ)„‰m2!ûÁ;àA¤ãõØ±M>nô“‘/&”OWš9<gÎÌað|%Á×P
±øM\`"1/öF
s!6~ºßÎ’s³þ´úë=âõç•3xœm‘Io£@…ïüŠ–æƒ•˜†féQ2Jc0ÆïÄË­iš-lfñöëÇÉhn©Séé«Wzz]Ã9Ð†¹&qEVt]†kX¦`Q¢:“¦¢,5mxÙ¤iŠh”KA$+L%MTEC(àzH!T£ˆêþç1
X<â˜E*feLÇº
‚ŸZ(Š˜Ií»¤j€IË”ç`Gã’7à5¼|/ïmßò—ÿPEX’‘,‰` J¢(°ª(Ò®{ÀvÚMú ¼–UÃëüö§]Ò/à‡³¸ŽÛ4Ï_cX¶3K{	6Ž='[m}ëÀ¥5˜Aˆ1"de¬¦éöÃ^Ö†«%ZœåÆ¹RæóvWq%´WÍdëˆ\EÜz8p™tv/ºlÙýMØ•ÙbZœõMÑ™t‹Ár0ñmrLG¯=›îDž.ÆÞÌh9¤Ž â6¸ù;H7©õÛ£lí±ä^«„\‡[‹êí°±û)©ŽÁÄ>¡{k¦Íé“ÆxQgÒ->àZ]×÷ÙÏ¸^æb	§áVòC˜x=ëÙÚ¸_¥®)šË•ü‘×û‹æX±¼x¤€õÜ¾Z«ÓyV18,­9 Ý9ÓEÞÍ®"¾èCHïãqì»u;5`sîH1>ç¡]û˜¬¸r-ìÃXÙ«Þ<ºìFyåÉ†sŸú…ÆqA—Òp”Ùæ(ßÏÍqwo§Y–ä¤:6¢­÷&€7‰Ú¦ð¯3knþÜ˜àñ&æ îó4üÔó¶¿ Òˆšª IÃÓ’³O>LËŽçÏY[•‚Pç}œ–í?í7(è'OAÿÀºö	PðEÚ4ôöÙüÁ”xœ•Ï±NÃ0àÝOq[AÐ;¶“V12/p¶ÏKbWñeèÛã±ôß÷K?¯D`¢T*Ä`LßÞÅãàôÝxTÖ.ŽÊE§ÑhqÅ•2ƒÈYÕ…ÁzH›vJc{K£”.XéÈÈ¡÷$pã©¬ð†9S…wJ™üÁóÔz^ëVéè¤ÕÇÎ­5<tªë„/Ë’˜éÿR\çíœr}J™i>Á‚íÜÖ,× \jÉ€ëŠ7!>§ßÍ´´qRnIeäT9ù
eãëÆà~„\X ÌíJ„»Nçù
÷PÜ…<×ƒéœ)ìKŒ{w;ý±J|ž¡Õœ3xœmÑËŽ¢@à=OQÉ,M·Å½Hº'b#âA{WEb\}úqz2»>«““ï?›¿k(ÊdLÅDJR‰¤’¦+:QU…d0£Yj˜D55n(ï Í ‘°Ž†?¹†‘ŽˆŠåa$Rj *ê)Ñÿ{¬¤²
‘œªH‰d(êó½¬gT‘¡®IP”P’h²"à¾Ë«Ø˜´fœ6à-½}/mßÒ×”þ¢¦!ÑÁJ
¤:Ÿ‹®{b§èf}ÞxÕÐº¼°¢Ëûäõ	~ˆ±šµ/Çš:î
øŽB×Y™Û]0ý¾@ ·Ö"–iZÓÜX›yx<	,OÏÊú*7îÍ4“ãÁ5|Ÿ§ò8÷ÆÖ%p
Þæö#ÀÞC÷k0(«“Å#Ü´b^_ìi»ÁpNõv£TÍ*Šå ôÉi€ln®XF—%´ˆ ü(:Ëçü¢l¢c´Þê¶¿X{Útv$Œ§<6/›HÕÖ_TÅ.^ê>O‹EL—»[YÜó‹ æÜ»ð5C3k”Å6¶ÑAÿÚÇ“©ËÁÝâ!¯»GÐÍ"ïp2ÃaãËÁÉåykÞL Äµó}×.÷ÒÀìXn›BòIÜÔíîfW¹:ÍNvˆ[FhøU’ñM,ÉJ<e#‘« †ÏÙ6n¡êžàq`R•Œäm›ûíè¤Å¤Ï\”ùÂ»Z,$w}i¾ÏÛGe³ÃgÌÞðþ˜á_gÓ•ýscÂ’6Œ‚º/KÐÐKOÛü]YSÁ‘fYCï¸,(¯'þ‹ô
_²‚ãR"{ê²g$ÇœÑthûº®š<1xbÖ”€?š¬—xœ•AjÃ0E÷:Å\ÀAÒÈ²J)´«Ò]Y¤Q¢âÈÆQ0½} ÝãÁ¿-Ì ’²Ñ$ÌØKÃVš1‘½ÎÊHòCˆ6öb¦…kX#ƒô¤¤rž8G
-b$&£5™to—iOÎ¾
WxùÞp7nø¶¦¸‹Óõ”5Î™­ÖC'{)Åf¯¥5~z(æñ~.uÇ9Qc8}¼C¤™BK+|ƒG™j‚µ´T^ÿÄÃÜ„8”såÔM9wágÿÿµø=I` •xœŽÁjÃ0DïúŠýYŠÖR(¥½†Þú’v7U°åàÈ„ü}Uè¹ô23<fÚÆaœIŒ¦àS"q&›);o'Oè‚ÉˆcÕ-n\xŸ&ïÙõÞ]åí”R´&x&ÖQ´Vqo_ëgÂ^®Ýænß”y]^aÄ£G´Öj´ëTO—Òÿôµ6¿ ¢5ïK[Yë	Þ‰ G eæ;HRù‡Û¼_J…Ÿ¥Xé®Ôg¹T¦aÒóô÷°úÛ¾_¹’!xœÍNÃ0„ï~Š=Â¡‘í&vZ!*'„Bœý³	F©m§¥oÑ¨·Ñî|£ÙÍ	,Z#+$ïŒh%ÕJ7F0ÊL¶R+&ç$ª„>—¨§V
Ã-ÖM‘¬s-cÚ
¦±)nƒDMù%$¸Å®ƒ;‡.^‹¬†"¯¶ÖT&¬/‰ºåœ·‹f´¡””éÚåŒ§€í¼©ky I¦Þù%\[·ð|³‚¯ìC•·#t¥ÐýêxE	|:+È¬ã v€)[B6˜vpæ,Ð÷;‡!ôU£7Î •vƒËÇo¾>…Ÿü8ÅRF[
¼M.áº<ý'¤9
yŠVeü}h)<ºà÷‘¬b¢ª	yt½G;]7Ó»åÿ_%zè¨L”3xœm“IoÛ0Fïúz4RSµmQ-^âÄ’«ŽœI‘4mm–(KÉ¯¯Û¢·0˜Áà}§‡Qc a¤;6e:Ì!Ä²×´Ž™¹Í¨­“›Z‹;V+àPËažcQ‹¶i2lBŒ».qm¨ó{»¸ÀðLRÃÃ%†‘aÚÈ`Ò‚3ˆ9Ñ1ç$ÜÒð NM"\KV‚W,jÖ¯ÅøgùÑ=û\°ï@·-:´˜AB6U%•ºÃ+©Ö_ë¦cmùþCHuÈç;ðŸ˜hE/xø]Ábõƒt•‚ýã*ö³Ÿ/‹?wh`ìø~úþ.Ømä^ñ0|	žœÓÙJnf÷8úþúÕô×Ã“ì³p}äÇ|ÚÂíñ2ë£±Ô@Ý0·d2goŒ_6ãîú1þ£Hèü¶´!5æm´}›M3ÔÆ/É³Ž’¥ÈV“yFxx¶°3Ú„¦ÎDÀx¹oëñ0-ÄŽçðøÑú™Q0•eNÏ#Bù¬ŒÅ!»Ûšk ºåïë|ºžÛKózùF%Ÿ‚0‹›a{XeÙr^XåAÄEù/¹ˆëè›Ó.÷Ò„âDi@½ø¬ƒMÎ%NßV,ž'Ç~wnÇËyÙá´«°â§hVG+nDúü‚ÜóöæÇé†sh _—ìbûNš_*”ÚG¢Úæ°½~ëE"Úç}¶®t(~¤®nl0ªäb¯Rë›¾y"Ûk-âèÿÆ´-ëíP– c×õ
|Ò-Ç¼k* ç\N¬jÕûÃ©éU}­¸,™¦qL:Iû/ j@Ý¨{âþ!½ÂJÒûèd-~—Óÿ$˜xœMK1†ïùƒ[¤mv³_-"‚ý=x”Ùd²h'5™¶úïÝJ<	æ‹a^æ}$–¾ÆºhKZ·Ôö}U•©ê©Ô¾!Û½C£Ž˜ˆZ[µ´n+[ù²1†ÐhÄÖa×õ]£?E‡µÂ“Œ1Á9Ð^q`Jðè.ßÍs>eZ:z‚¢©ÖºYSÃƒ.µV6A„þqª<ö)Ø¼mŽþê0J°SI¥Lw5\akt³»Ÿ“ÝéxŒIÀFf²t&†Ë8%Ž°"±+>h5Æ,üÎÊ‡=}„,ùn%Ew²OH4$Ê9D^¦ám—)ÍæpÃ(€Ój`@õë/7i@v«‰Üun	/È÷7+2†¼Tj7	[Dïýçæ/Nê.—ŸMœxœPÁNÃ0½ç+|±Mi›¥í„þ`H+'qÚHm2%é&þžvÁÄÁ–Ÿüüží‰ ,Pà¾.¥nESâ(L+kÝ¨Ö¶ûk^ñ½P’0’ÏPkQS[-l)«Š°âˆµÁ¦Qä…]¢Aƒœáœ‡á½£Þ°÷áÑ\®Åsší=A!EËeS”<ð’s¦Ã4¹œé£Ì¢ŠN§/.ëtðžtôN“Ky½c?Oka—»Î¸Î{B4‹Y°ð—ù•IÏK÷LLã8B7U½Ê‚Kàü•v‰Á÷7‡cðƒt·Ûm@…0~Y~¢oÓŸ'ðç‰ºSt>wvÄ>Á5ß3vtËsÌ6X»Uï‡ß~Ç> †¨À•5xœm‘Ër›@E÷|ÅTe©r` e§²HB€„¬Ý0›ç Bö×GyíÒ‹®[]çlúŽœ1 D!"f$¥‰&BÉFªe„¦ºªeR†$t„³f²Æ,ÃTÃTNRïQR±‚™.IIŠ¥„©’¦PöWôL%*"š±A¨XÅ(ƒ‰ÓÄ0(Ò±¢h²"i,ZžIS²
Ä$oéü;ü¦}MÙw ad@¬I’P†P m]—ãx‡×åèL	xlZÎºêãG^ŽÅ”|½ÿÑò.Ê<ükµv=à¯}ºkÏŒŽÁê÷] ˜‹Z¦i-Mó`6e8×e`mµâí¯
wgÓ„·£kÚÁÂÌœvVyþæÚÞ`©7Ž ¼õu<.õ-ÏÓæærÞÇz*Ëª(1ÝéÏˆuÓªèÈÚ7ÄÀù¤ÔíeN|¶ÝP	 ‹úí‚¡¸™õ“W>7Îý§h_lkÊˆ{RUö˜¾ÛVoÙ’·ù´CDsk^åƒI•R ÈÀì…ÇØ<­ïû4ôëgþbÒÜ[VÅ•úð=è|™…æ¿äø0EÝÖfªŸÎë*@¼»:èmWzi \ÜÌ&Çè5ØÍ½lBG¹­oJ§`ß^tÝ:9»mNäW‹¼½fÈ+Do '<[Ût¹>¤g«Òû×I‚ðt K˜mb$æþUypë¨Œ75n.3|g;§aaì%jyZ=	à)`"üélå=ÿ¿1aÇxÎ@7Uà¬ŸØ0‚/Ò4ñ¶÷ÇÎbVÞXÝE;ŒMß<deÅ!#	/éð„S×µ|´mFGÀ®¬sq_MD6R±¹ÖLükƒ_6`·r‡Ÿ¿I¿–%xœ‘1OÃ0…wÿŠÛ ¡¦qš8M…#[‘«³}n,§ÄNÒþ{LŠØËé†wï¾{"(Ü æe•ÔJÖEÓ”eNE£kƒJo«Úp#dÉN8PÔ$E‘ëZ¨BSY¥–Wb#hË¹Ô‚Kªx½QÄpŒm?À3zKÞðèi€=/ÍSeš‹²É…àu÷y‘çLõ]gc¤Œ2ƒr°*ì`?žNýAõÞ“Š@y˜ÛT|kŠjí§ŽÖm¢ÿð`¬# ³10öÚÒÏœBç`¶©´¬ØÒ@`ÃïF§¤Eé(ƒ//ža¢!ØÞƒ¶Zœ0:'Q½CGªM—†.Ùz89Lá-¨ñ
bìñ
8c€Î†`ý1cì…âM Ô:éŽ!Œc"[,åe!OBHxæðw8R
#ÝÞ-a°¿I‹ö6Å®W½1+yÙýõö	ÎÀÈxœËJ1E÷ùŠÚK7©¼3ˆ¸ðqJ*ÚÐ/2éæïÑµàîr9÷ÜÞ˜AJ6Äj4’KUä¼EoÈ‰ž0ji‹Â(öÔxíPÐT9Zd¬&4¹jgœbI>bª*[Ò¬D:úÇÖà%­Ïð–ÞWnðXnßáùr\x,üèLœöð •”"oË2õÎÿ˜
:¦¹œàu/©3Ì­×…áÖÒ.ÄOÙ7¸â(‡–lõ—…8O_ö2lµt?ýu.>z©a˜xœANÄ0C÷9Åß£¥m’þŒbÁ,Xÿ&ÎL¥6Ei*àö.€ÄÎ²lù¹€bD´v1xöqJÞvÁÙid¼õI‡ a0#«w)È•x	Ñ3ö¬;Íló˜z	ÚìlËkÝ+9êm+ô$yÆBorÍ(t?~Åã~ì8G<PçsÇÖ;ºÓ½Ö*lë:×ŠTUÜÂ…^pEËIÉ²PóŽµ‘K·¬ÔsÁÏJ-ã³RÁÙAArœ[é¬ÔëÜ†âiKé4}]þâPß:gÜ–2xœm’Ks£0„ïü
UíÑ•˜§[ÉVLpü&àÜ’Û¼…MøõëdkoéÓL×7séæ-c@”!ÓDÔb"Aª	M QQÒ%E—hBHŒ4j…š´¬ä€QP-Qº"ßW	é11ŠP¡„¨’„Sÿó±
Ub$ªˆI TwZ”d™j¢!•XRQÒó¬jÁŒ”9»€¤%kÁ½}/]ß±GÊþ 	ªI˜ˆ²(
IU9çwØÍù¼ÁSYµ¬¾|¾¤9Ïúøñüp–Öi—§àáK¦ízK°v×`ç¹K¼¶ö·/ Ü:3116-Œ7ææ5ß^=ÅÚš¾žÔÕUi½Æ2²=ì§…[; áÂ9qIe*ñúþadÎžG™êîh‡\Þ¯:49á‚YÞî0Œg72Æ ¯¶ÞbjKo|­f·p¡ïOC¯í¤Ò 7_é{³¸™çåÞ'áà¿×£TíYÖ0.GXÍ‡Ý,QmC¹[‹›ÁÊOŠ<!ìš•T6Ô™¯,[¿†„Ó<	:›¹-_âFä¬ôƒé~AÌrO3Ã(Hñ–Þ²ŠÕM" ·¬•:hgè¬ÆÍµ|×?wýí2ÍzÝ¦³­ÜÒqäc2úã9À~M½ìÝêðÜ²P¹íÆ?‘¹wFfœmÎí‡wÖ:^g·Z·OÓxþ©#o}ø0çt\D¹jã ùzÀóêøÿ2³—³ŸÞX›2P÷—hYÓ³Žƒ_’
8¶U
Òò¼|ˆÙ…”)k§4/’‚
Â‘Ämžt¿¦Ì¼7ðU,RÒ¿x:ùÁŸ!xœ¥MOÃ0†ïù>n‡VM›¶Ù„Ð	i‡!÷¤qÚHm‚’ŒiÿžŒ¯qEH>½¶?vôˆÀi)Ëª(ûU¥Éx+šRJ©t©d¨­uÍÈ«ðh#pFyÑ¬*Ê°bÈ›’ó²Ñ}ÛÖ=öL•RkiMÄ!ŽÎÃNøh,Üá$ì€®æ —_ÁÂiÊ{7_mç4á[È
V$¥³‰ÿG!ZHoú°†[¥`³ÝÁ™+¬"dÿÈZ€Bm,ˆ#þîÃbcBïÞÐŸ`kµó³ˆÆÙ$cÅ€súÆ’ˆ ŽâÑÁ&$ÛìhâéöúïH{7§É éœÞMúö£	êPAÚ/;ÌÎsÙý§;G´ÉËZìÓÝCZGº$àÅtaÂ…`ÑmºeNÈ³,ªÌiÉÓú$ïš‘³l”2xœm’Is£0Fïü
UÍÑ•X±M%S6ÁÄƒmn,VÀ,lã_?ží–>ô¡¿×}yÝsB€K©”¬áŒjXIŒ³Jc‘ªD—‘¢&bªjBsRõ *1Sˆ†P*'¥Ë”t‰œéˆÄT"TFÿùT‘T9ÆHÉÄG×±’a¤fº¦CH°*ªº–‰Pˆ‡þTs°ˆ«ŠtÀ'¬"iAÀËéqçg7tä9#? R°¦!I‚L ¡Öç3ë{ÂÍúÅ€—ªæ¤)ÇŸ9ëOCòü ¾XË›¼c9xú]¦e;àÚ.øpì±|ëÏ\ ¸vfj†93ÏôÞ™?ìàÌ7—êéo/w®p~t3¬qŠ©Nö‹:hLIà_«(nË·ûìŽ¼ýuGî¾<u¸©t1LnâpHVlQ\¢*)|YUÕ¦#åô¾8UÕ6)¨ ´í^ï<½­®[W¯g«è³ñöÚ2:{¦E+w×¬/zbèâb¹œÀ–nã´¼°œ5‘-€{íÅãÝÝo³þ¼ðVú°šý›zÎeÕ)Ž{Ùã»\M~;,˜Üæy±w1éž`F3æfŒ+åešO-ÿXÓ9	ýù»×yð€R¸<®”7ÉçvDip0§ƒCËYÚ©[šh'·µÕÚ›y¹õhfÐFý„³|géº.¦aAgF4îÓ‡kÃªKËÒý n>+ºÚ« ^§EÂ_gÖfþµ1aMxN@3”%à¤H×ƒo«P^ŸÁ‰ÿ{¬iZW”åO”Ý!X™}A“Å=%KªË™<_yÜüÍ÷ÿ˜xœ1OÃ0„wÿŠ§N ÔÈŽíÄ©bƒÄ\=ÛÏ­EbGŽCÕO*Øaºáî;ÝÕB¥“–”Q>Õ9ÁÑ{.I©6ô4hÑõ¶u½a3Jx‡¡u\#„ÓV† ”6\Š“öƒ ’‚×zÎ^1%Zàb"÷IðxÞzž—u¡ÆÓˆN™®½2ðÀ[Î™ËÓk¥‘FH1ð_’Ù5Žþ ³ÇJ0F›¾&j.gÆ^¨Â®n‡€ã¯Ë&cv· Ë)Ä„8Ä7èXýñÇ¸»ßA(y‚u^¶œÆÞã)‘ßçöözøc)ûwŽr^—2xœm’Ko£0…÷ü
K³¬¦ó°#µ£BB	I!™<7#6u/c É¯ŸL³ê]Ý{õéHçHA)HQšàÔ™*¡	6,Ýb:4	"&±A©A54Ò,¬ÔDÐRLÅj&¢:30"ªj15U#ÖÌéŽSôŸOU¢Æ)IÃZÖcÊFÓ4ŽJFcÝÔ	RH'?+&¤äôö$+© ¯éðµ¼·]KŸSúh–±:ÒTžT¨ªJR—ò{\N»¼–• õåöžqùÙÅÏàYVg-ÏÀÏã¸ž¿+o6¾·´o×î×_
Z'qlÛÛväD3¾–›íxíÌÑçÙ{]øƒmómåÛ“ (v/ý0?…­†êëŒ†íIF
Dl,®¹¯…QOíUâù±¿pãAÝNü»y®êtï6ÓM¦Í)bùÒa¾iç¢ž¦Qs8ú[¯g±1Îp¦–z¾Z2ÌÏ/±Ô¶Š+õëåyëñøú*X˜ïNp}T ×}%²…Sßfð6°0•Kwiˆ½?oÇæ&w‡xÚžGW'àCt7´‡4ùÈå­:Š­§ ›Ií:såbb·mÞî«[ÜÏW|
ÇãÅ¦Î;Sg»ñážÄùÐNò¡ëôžpFw¡²k?%§¨.jì~š«¦á—E"Å³¨ìTk¼œxŠ÷‰á‘rô¾•uä³b@þ›ÞÚSø°ò•»œ|Ÿ˜P‘QPw—´éh+ÁÍ°`¢*€(IOÅ¤Éã×?mM/EùàWš‚¯ƒ—`"®ˆ\òªüxTüäŸxœ%Ž=kÄ0D{ýŠí®1òZÖG8Â!uºÔkiåˆX²‘åK~~LŽiæ<˜V™Á!¢ÓŒäê)HGxF[g•Š„qR‡@$6ª\XÕ[©ÝÐ+[Ö¢ŽÞ˜Ñ³W§(µ2ý(èh_k…BwæßG¦
×úÀ®±¿Í™ÒÒù5¿B¯•5J›áIŽƒçšSk\áJâ>i.']ÃÏ¹íÇÎ]à‡j¥“FŸ*J)D¹g~®[ž^à=ýÂ¾ñ²¤2C<ß\>¨¶ÔÒZ.â­ÜMŽœ1xœm‘Io£@…ïüŠ–æh%@Ý”ŒÒŒ±11ÄKœK³ØliÀ„üúa2š[J*é«Wï^ÏPXQð¼	‚"EÓŒˆ®H˜ÈiŒR	iZEBrV÷@g8R Òq"¬¢4ÅP‚H–fEK™Žb&$$ñ¿©ºCiþh*DLfLÕTEe($PWÁP—‘…pèó†3¬V‚S˜ÕŒƒ‡dü†§nèØ}Â~©„HD':XHP’„¸©ª¢ïg³]ô«!uÃY[NOYÑçCt?~ˆemÖ¸û;†e;ØÙ;ðêØÝë[€ ÆÎˆJgJ}Ã_Aï'Ï±ÁùE}¹)Ü)-—Ô¡ë÷,qR"u«™â;Ñ†ûe, ·goÑóÔÖ=D¥—LHÙT.9äMˆ}8MÆ…ÎÇáÕÍc-wö+¯PÇCNÌ³ÂV¸ÞìuŸh«h ¸¦þÛi‹}°Üï
ô•ã¸ìä¯8Úß^Ý±›¤Y®çþ¿žªkçE KÓZ„éñXšËÆÇfZwþª9¢¯Éü<^Ûvâµ»tZ¤[GÊÚÝ3¿µq;I[CŽ
^[ìwÁ”¯¦—z·—d.úøÚ;µæÄ°®mãËgún$/F:‹I´ßG¾”wT9ä¾ 4ãhÕÚÍoœ&<Øä\æ}Uc_¶2ñŠ·â1âô´H\G¤bŸ¶Q´éíô3’²&¦êÎrðèºoŠð¯3Ë3nLØ2ž1Ðe	8ûX×ƒ_²ªi åM.,M9›Â²`µXß*vï%Aðf3ç<¬3Öý¼íñ&”xœ}Ž±jÄ0D{}ÅöÁfmË–tá©Bº©%ínÎÁ–YÎ‘¿¸H÷f†¦df0&ÔD(äàä¨7fÔ¢ãä¢ÑN“qaT7Ÿ9ˆ^CäÑv°t]è´LÞ[Ò('m‡^ù£\·o,ï3'8Wl—Š—;Å6në3t“6Îvv´Ðàˆ¨ª»Î¥p†WŸf^àÓ¥ªÎtÀe?vn‰UkÑNèà	ûZUégåæ–çTNðB×cõ	2{òaax$ õSÚ})¤î“Rs¦fiÂïéÿÃê8å`*xœ}ŽÁjÃ0DïúŠ½‡•mYr%‡öRz(”Ò³¤]%*¶ld%¡_%P†·3LÉÌ ”%:o‚‘®÷N#¶’&ivNIÚã@bµ™S^JT£i5u^µ£Å>êyPäI:§±ba/å¼dxãà=r‚ÃOÅÝTñx#¿óËürèõXÕihP!Šúc)œáÅ¦È|ÛSª×n8n—wÄ¨1há	Ûé:s³æ˜Ê¾V²…áƒó·rþz½û´œ Ô^Ú„øŒµ‘š%„Æýîÿ_*þ †]ÙŸxœ}Ž½jÄ0„{=ÅöÁFþ‘%G¸ÀU!]Š”FÚ]9
¶e,™#oqî›a¾|0ƒB¢Fb§ŒF9H#²¶Wm×9&4’¬—Ô‹Ý¼eðVcCn´RÒ½kÑ·NëÖ4¾qS=1š•°gþŽ¼³÷ðxƒëOÁz)x{Ö×Wh†^ÚŒC•TRŠÒ®!g>àn·À|Ùy+éJ'ÜÒ™¸&~N‘f#¼È¶LELx#‚{Äs-¶6‡¸'ðEfæ<­aÂ•¦tî{<òTœsš–8ñÊUÑûÊý^þw¬f2Ÿxœ}Ž»n„0E{ÅôÈ~±ZE[¤ŠÒ¥H‰ŒgLˆÀ 0Yåïãì¤;÷J÷‘wfàF¹Ö!b ¥¤Ö„­qHª‰Ýà¤8Ú&¢E±ùSo]Cƒ²5–Q4ºhµ6èÁ‘ÒQ¶Nø3®;¼rŒð6q‚ëWÁz.x»S¨Ãº<e;ë”‘PI-¥(î2åÌ;¼ø4ñ~LE]éþ€Ûq\?¢ÎIgdO²)Q‘¾¾€'‚‘s¿L}X¨?Îm[÷Ü—mùèçu„¿ŸHˆ÷©tRµÆX?—ÿ¿Š_@	^#™3xœm’Is£0„ïü
UÍÑ5±ˆ©d*È;1^ˆIp.S,CØŒ„‰ùõãdjny§¯^wŸºeË9Hª©ÓDƒˆ«Fj(Äfè«TC"‘®4AË+	P”˜i˜bÇ±ª4Ðø-dB Ç<
uJyüß¯£Ø0SS¹F …˜èBhbÌ1F	ÔÃD'ª‰tòT·`T/ÀkV¼÷qÿ¢ü.æ¿ªJ¡¡Œ ‚P‰ê²Ì¤¼™™\v!¸¯ê–7Åõ1Íä©ïn†obi“Š,??Í«Ø-vàyµØXÏ}ý €^°ˆY›XÖžííÌš¸ìÉ8åd{Áíª·¬ÂõVÖz©!_ÎÇ]cª¬r†à°…!S@:K>G’“çlå/!…wYŸ5‰õ¤Í¼àÃvNhgs›×qÝµ*Êko%„ÓW„î{s¼öt;ÝÀ~5"Ó1—Ç-;÷—2Zñq7Ÿ.Gë×ö¨Æ¸!´:ŒÍQäìK§v2<x
ð¥ïÚ‹Ý¨ïL'¹˜Õù“M[˜Ï’·üm?É2Q[híÊ4±ØÕÉr†ŸÍ”oHÄ&ÆZš_¾¥ÃÛpþ”w"¤ìâõŽæ/ÊIêÌ?l×òfèéiÖ•¦€ó C¯íuî«g‹V“\îÞ/Øè%°}œ—ÒÈ­!‘e§³ŒùõºÎHdçÛ™pwl9l¬I;KZNÆì’ÌúAïv™*ÿ:›m¦ß7¦8¼M9hº¢ -?w\HðC%:I[—Àj»ª	ª8*UË›*þa (_øXq>$·1¦\‚›„d'ÀçÔnQðL F”xœÁjÃ0DïúŠ½—Yµd%”Ò\{í˜•w•(Ø²±Öùû:¾JO³¼™Y˜ÁûÑ9æhÑØø`â‘BÔÚ÷6®Ÿ†šqá,€uo[g,[·]&¶‘Z¦£õ–mï|S#7Vá*×ió²æ3%Ìð	o8ß*ÜÐGÁ±¬ùRõÓøµk¼mtë<¼hûªÕFÇ$ÂÿýWaMàLù{äîÂÒ»"(ké„‹@ÊðÔC*¢Ô:
ÓÎvôŒ\¦\ímpOr…Ì÷áHÄ¤öäoõJ}¥Kf:L1Âãô§%ê2D†“xœŽANÄ0E÷9…÷hFIš¤é!fË–8µS:¢iÕ¸nO*ö±³ŸÞ·¿ìÌ`	.`7r×»­³4èÁ“OF§“xJÎ»Am¸s1š±G2]jjæ.ßGÛ3ëd=S[†ò±îpß²a¡¼Á3n+6ôZq©G™®ãº¼@«½ÓÁXxÒ¾ÓªÑeáÿæ•p•zƒ;œ#äVebÏ„På¨pþh‡\@"¦_µ÷y*L—5çKúºý©˜ú”sp”3xœmRM›0¼ó+,õµ±Á6Pm«B’M€„ É&Ý\*ƒÍG–¯€!Éþúf[õÖwzó4#=ÍŒì„ T‡Z‚R”RÎ4,A…ÎTÂ(¤LÇ†Ê‚5ˆ¸Ò²NÔ0ÝPyŒõ‡@§º@0A%fª=Õ“jÆ?>*œš	&„›KÂ&55NÓ#ƒCaƒÌ›ÌY]ˆYV‹<ñëŸåG?ôâß¢Ø0 Žu&P…PIšª*¤|—…\1xª›N´åýGVÈ|ˆ¿<ÿ‘emÖøü1öbéø X`ç,}kÿ-þÜ €ko'¶eÙ3Ë
íÐ-¢¿Ï"ÛÓó3ÞŽZç\-+Çrk¹‹Ý™¿kC²Üé¹pž½™ÔŸ4”O/_;ï™´oÉ|Í:ÿŸÖ·mUÏïÞrŒ?>;†qÍýUc4\·e°US¸î{“²u‡nšqÁu{3Þ¥k¶Â©$Gyèi\d³Õ¥X"x|Ê[¨ºQ.Çéëø¢€“=îýb½÷‚Ÿ{Ú”ÄÜžÕS/_M;’Ën]B·rgòpúý¾M(³´‰«šÎÔðñCµ©òí–Lm&{#×ö/ƒ­®Ð‹BÍ{6ÏãÕËÉÆ
Ê£5ð‹ããHz«Æ‘Š|ß“µîŒm=ë¨]<1:7_Ÿú}ÒwÇC_kkš÷ÕdwOßmkß;…Ìë†²ó$¼xó·o
øv¨š@ù›ÙÂŸÿ?1e#ºL€v(KÐ‰Ë z	>!LtvMà-:Më±¿’¦½ÿJ‹›¢|ÀÏð+`œƒªèû¢Î@ú("²2à£f¬æ¿S4üþ”xœKj1÷:EïMŒþ32!d‘#ä-õ³GØ™±bðíãäÞE  “ÀšÍÉÅÀ8†Ú'›‘³$ÑPWÞ°Jìcï$úèbÄ†ÙLÚ.Á¦2i¸yRü3–¾ÑW«c{Ðw=/ýNï"ãŸ>Oëe_zû ýì±s vZ«§}V¯Õj½7¼•~}ˆE¨ÕÛ­®':V\„F§±€þ¼Šú=aQû‘4xœm‘Ks¢@…÷üŠ®š¥•‘GóšJ¦‚ˆ‚MØñènA^6ý8™š]îêÔ9ß=›Ã(B ‡™THºVð

¢Œe™Ç’¬‰º,ªš¢Lãu®O)jÐ  ñŠ.	IiŠ¨i¢‚sU•s”ÃBÌ0¯@Uÿó©Žü M€Åƒ‡š˜Áôád¢ªIbÎcëŠ”séÈNVÚ–¨Ç”´ˆ‚çbú¯Ã8 Ÿú„Gƒ*‹’ª€/ò<—wMS2ö€’­Æ<·E}ýùJJv³Ÿà›7Ò“¡$àéï™¶ã tB»N`ìßvö—ÏLƒ™›†a.#2£u¹Ã\ìLO=Up{•¨;† ×p­È|ó¶1Ÿ$Å¦ÙöÍ´#ÌçÀf¹^ÛÄ–r_{;‹—Á9Ä;E9Ý|x—èbÒù>bü¾EÎªƒ,íMéŒâhÅ^_q€7®ó,SgŸÎ[röÇsL
oõ¤t›Ö:¤Éu“îMß¬*NN ^íÖyÏV‹°ÉwsÈÑ´RoÑA§+LE<î±ŸÝŠÍÜ’×Óû°7ãùá^dBÒÙ3›yeê–ŽÃîÊÓ¼aFÔª„$ÇS»èÍyk»2ÜøÁ¶.aÅfÅ”Ã:±CÕø®eiøÝíêˆn&Æ˜Yâù<s4WK–Çï°”“î‚3»¯…­ëÁ®±<·ñL­„©åÕÆñiÕURž_8ðR†ÄýÛÌ¬ïã|D	ýX×€¢Ëˆ~P– ¦]J’Nó¾ÈŸpGsÄq8Íh™¿€Û2ÚcŽÀWpÀ:Ð]hÉ•ˆåÀPûHëŽ”ùÚ “”/xœRËŠÛ0Ýë+î.‹’à—üJ™nºê¢…YYº²Õ‘%#É1ùû^%À@¡Ý¡{Î=”"Èf¬U=ôªh‹¦m›²âšóB×¼¯ÎU×	ûb`«è5o{>Ô…yÕ¢.6ÙBVmÙwM7öµ,™ØÒì|Î …W19ðYí·ËsÜ"ž~²mú²i›ª„OEYLúe1)áÿQ»ºæÅ@ÔŠ¨L‹1Ÿà›KÁ«M"hòiÅÉƒ¿`ØƒI+†hbBGSë'#û9|¾‘vc-Œø`ÒÆ+$ÂŽ›±	Œ»óOðb­ßYžÃðQ.Í&fÞüÅ(ã&¬å¼Â)°Æ‘ÊšŒw'Æ^gc­O°ˆ7¼	”‰2ï<ëà—³ôN›é¬	y€U¤™|ÎâB´˜áìà.‹>¿sîä”F¡€Ý2”döŠl-"É™²G	Þ—\Én®ÖZ‚wóü×SN}Ïéžà»³W&
J/Àáþ÷%Y1ºÔËF}øÀvb†çU®Syˆ.FÀñx+ŠúaèS¨£×ú8^ŸþõgØo²*/‘xœÁNÄ E÷|ÅÛ›N ¥@'Æ¸0~€.\Ãã1%¡`€jæïí˜¸4º»¹É=9·W"\HOÚ1Ž{g‚£…;ÔRq5óIyò
Ù»­”;)WË$$M’ŒU@­g$”~t+©ÅÌìÞ×RáÉæH	Þì%S…{ÿùÛÞèäé„’F*­•„;>rÎ°l[ìþ7ÕÓ¸ˆŸ)ÖÕˆíÏ·k¹äa³×˜/€%÷ZR:H~¯·ÆÇ†åƒê•±JdM	*µ²W¤áÐïë¯œc¯ñ0òC	ap×ó_Âìíèw#–3xœm’Én£@†ï<EKs´¶¦Q2
Øcƒ—[Cwf‹müôã™ÌÜR—’J_múÿ¾¥D:%‰¢
±F"º"‰	a!]¦Š$h²¬3®Á-­z ‘ˆ)*Q¡ˆtèT ˆ™!U	SH™µÿ¼ªˆ
#Ö(Ru*1A(0ÁˆA¢HTcˆ8<ôiÝ‚®*ÚŸfs
^ÒÇœ·nèè3¡¿€ˆ öX%BLI¸¸.Ë¬ïiì¬_x©ê–6Åø–d}:DÏà›¶¤Iº,OÂ´lg<Û[Ç^»À·þÖ9ÀkgÆ¦a˜SÃØ˜›÷ÌÇ›ÕÔ7—jz†ë‹Ü:WÃ(qçÖ¸œ2†Ö‡£c/…N:ÖÝ‚JˆyæEÅÇJmbˆ½WŠçãX¨¶Ãì}R}56¹F×Jåþ“m›—ß¯×ýœÊî¦È8Àç+¿\†eºµ®˜çÁNºG·…›qDøÝý‰NÊƒÉ[óù>Å|ìöy=6§‚ëkÎ”g²¼5¾Ö¼ºž¸— Ù‘jâª³DëºùÝBÆØGny‡xzPŠ¾&xåó¦óx¨yÜp:Õ…¿MNÅlÑÓ3ÉÇÞÜ×K7›Ñâ{—Þ¢¶ûËt…ã©…¨kž?w.ÎÏzÈã`™—-nù«v	¶‹Ä<ßŽfÔ6¡y‡VkW¹,ix¯wk®yëzáºv)‹þî¼5ÊÀ}åÀëÆßÊÜ—fÖjö½bœKÛ„‚f(
ÐÒÏv=ø!B„ kë¤í?cñU÷Ä²âaœGºq\u)éO0ÏnC*\Ò®Á1_DV%`¤=À	Îªßyz‘xœ•ŽKNÃ0@÷>Å,© •ã$N\!Ä
±†L<ãØjíD¶Sèí	'@à}jf†É0¡nš¡Ã‘œ&Ó+RDJ#NÚ´Ü+9¶­qbÅÌ©‚¢Éõ]£!Ã’µ£Öé¡mÈõÚI²SÝ(p«~ÉðŽ)q‰í…áÙïž×²>¿@£»qh¥ì<J%¥°KŒ¡Vþ?)Ò-òÞÂ÷¶BÂÈeEËàÂu·…4Ã+àŒ!	Qj¶q}8@(Ps°—û”2V¿—­ßƒàöû²D®þþ
ÕÂnœÄ•Ó\ýIˆÏ0'¦ãâÜqºŸÿX?°!v”2xœm’K›0…÷ü
K]tÚØÆÚª2„!0@^;cÌc’@0$™ä×w¦]ÏòÓ¹W::g”B€Üà¸4!Ž4ÍÒ‰&(ºnÈÂ˜#.0ƒ¦rfR´#À¹^"sQfP¤³’RCCzÉ‰Î)§Ø0‰nÚ?NÂJƒ N‹YbÝ@¹¥›BZeQPËÒ®°ËXwÌYÛŠ$¢i?ð­~ÿós¸âk!~ D‰i D*Ä*¼;šqxÍ8¿äà[ÛIq>ÞVÍX_ò¯ï†ÿœUçjh*ðåCÎÌó#°ô–`å{‘fÉì7W€nƒÃÛv¦¶;ñs“¬óÇ4q£~%/WMú7Û.†ƒoÏû^Þ&î“Ú…ÙfñbgLÞàN²¨«cûpò¼¿¡?Ãýþš2¹^l“L+«Öùfþ¢–­>tþ¶Æ§WÕj¢eŸ§=ÁS°ÎKpó<!ë×dË—(IŒõnp6òÀvvÛYók§zŽ‹±4íÍñÊb®®šùUh5MU-ÏìÅ<½‰09âÁYy[·œÁ¤yÊ®<ž<íƒ¶®üu¦óíAªÙeg3¬+€{ëÝõB­3]ú–±SOEW§uÊOöOîbéêê8÷n2¨AAv~wê–ØíUúžâížÂàAvôNwý)†vŒÊ%QEJ¤¸.7‘ø,Ñ|m¯þ°ŠÛfâ–^Œå„|WÀ÷æ\/•?Í"÷ÿ)¡• çËñ¤è/bÁ'D(¥ìN –‡5i¯'ñ…wmÙTŠbøüAÀò|ìŠµÅ/!îô|ŸxœŽÁj!E÷~ÅÛeQÔQGC)í®tÑBóO}f$3Naþ¾H×íòp9‡Û&"ð}É¢RFª ºÎiÕ‘Q\k…“2ˆ@¹eWœ¨4ˆNKk:o°7Z‡@ªd¤BHi½5ÚõÜ3\ÚP'xÅRh†OÊ…Â…àqØ:Ïó2Ó!Ò£¶š2ÚÀ—œ³PÇ1·Fÿ4tün²„~Êa>Æ»ò=„ZR>ïàVÅ{Ù&üEhbž¯_¸ÂÇsZ¡o§÷»½LØr-ÆNù\(îkJ{¿ÿ8È~ ¼m”xœŽÍNÃ0„ï~ŠU/¡F±ÿ¤BˆœAœ«õzÝZ4Nä8 Þžq‡¹Î|3S3ûè¤éƒ$ë[²*6´ÉµQ©ºÁ8#f,œ+(¯£ìˆ´4hÔ±Ô‘zM†Œ²®×ƒí®õ2xÆœyN™éáþ²õ<.ëÂMàØfQÒöîZÕ¶‚¦qLµòÿÈÎ(×ÿ’Â¯éŽð6¬×äóÇÈÍgÁYˆ'®°‹èK¢åì77žÖŸð‰¦Óùæv¿ƒX¦Öy©…ql„xMçÌá0Åxð_Ç?^‰o‘cjŒ5xœmRÉ’¢@½ó1G£›­€ª‰î‰TÄ”vôE²ØZ,Š_?öl§ÎS./_FÆ{@'1!$$LÇ DTW¦T5EÓ‰F )‰!œCeƒŒG)2“dEMÃ„…Zb¨j$G
“T¢¨˜Ê
Sþá‰Ñ˜1Ì¨.1‰¦`l(@pœ,|Ü"1…ÊBØ6YÅÑ$,K¨‘y	ìÐKöày«Ûžcød]ÑtEFI‘$U§SÞ4À‘“7“6B/eÅá\ôoiÞdmôü |±–žÓ:OÑÓgX#Ç]¢µ³F×YšÛÀýîH@×Úb–iZ¶iz–7Í}3y·}kfdG¼êTî^Móp¹ºæ¸ôò©\Æ÷ÂØÁy5óØN¿hƒÕ¦pÛ«˜ÄYˆÓå®ã}a„Y¥ãÕ±=«–KYœÒÛ€Ga97áî“ƒ<;N~Þ4­§S=,rSE:¶s¸æ·YKG©]ì¼uÄqáÜûýÊ8R´¨5ü6)©
äF@ëÙXnú²2&;RèöñÂ:ÐNÓc—DcÈlgñ~qF–hŽuí4dÇîo«»¬S­[i©w—·¶>™wEÓÜ¬x>¡Ø6C[#ûàj;Ž×¦[ð¥“¥jÝ2ùØ xw•þÂûŸäñ…F3OÖÅÅuW™@‹|Oo¾>Ä‡Ïï»dÕ+Ç?¦ƒ©eûÀƒmJn‡b3rÔ¶ˆméU@¯ËÁ¶þh6Z¿VLX OÛ¢@.-Ôú&c]E	¯N(ã%ž ®Ê§ºáy™æI/IñœÕß‘]q¬)zôŠâ¼fU¼ø©LPXÆè3ÉÓçãƒÃ&«Ê°šxœ»NÄ0D{ÅíÑF~&Î
!¤m¨pn®³Y;²Eù{‚´=t3Å9š©™¬ö£µÖYl5É¡o•DÓõªóÒÛïâÒwlu™b…î¨¢È…lÉmÑß)5ˆA"WV*Ý‰’¹­Î)Ã›‹‘
¼Sˆ„W‚çùð¼–­P3ÒˆVÛVj«<qÉ9Ãt»…ZéŸ¤‘F<HæÝ–3\RÎ„uÙ¡Ôâüc(˜î”÷Sôàâ¿!LÍWIVWçÂØçLp5ÓšR)Çï°,Sº»es• ¦+Å!>ô¥aì#L‘ÆSòþ4ìç?¶³dŒyŽ˜5xœmRM£8¼ó+,íebŒ1f5³Hºé¤¡ étö22`	áÃ`ùõ›žÑìiÞáé©^Õ¡TÕÎAJ°	ŽQl™8c©?—•Aj1AŒ81 a¥JÃ¯zÀf‘j¦†¨Î¢%¶(KFqJD¸–Qý7ßH¡Naœe–¡§œX&Â–k”k¢˜f“ª%
“ý©`Éª‚—àÀòŠð5½ý<¾w²ã_RþÐ¦†Ô€
„JR_¯Eß?ÈnÑ¿È|­jÁ›rúžýIÆ_„?Èò&ïŠÌ>ÇyrWo`ënA´rßìÝ>|ú‰+@·ÎIÛv¶8Áºäe½WótÆ›A«›m»çne¯=y'ËOSÏs]7‰,SÆ"×šM ýK)öƒ}„—ÍõäË iÅ*hvns§Q2\¦ì‰uj/í¸%«×¥p(ÓXK0y¿øÕ.ú˜ÔþµBÈ(F?Â¾¸&[UH$¶jd©Ç…–ûºà–7³
Ú÷è¨ {õîµ—ÖõþÝÇö’zþMÃ€Œ–vÔ<ÒÃ0™Ì7=µÛs2FŽz2§•¼ZvB]t>K}~ˆIòì¨ëÊC›Þh.b’ÞÛvO·b_Cã#zï?ýîð~xë‰µZW¡º¶;DómVN‡“z1åÄeœôìo†îýÃè6r>fw?|¼jwÑ—“3½pqÛ¯7/Þí›¾µH§Ê¯ÌžÞ–NLñ¹È9hdYÁ[É»ü¥a‚@&ê+(rv›gÅ8c"Oê*+òÙ£©³ºégYÉrEùÿõ7XÖ ª{ðhHyÆdÙƒ•’ƒ²fiQå ž@Îû‡öGYWùº*§ÿ ‹ 
ö’xœPANÃ0¼û{ã€ÙqœØBT@{©ZHÑÆÞ$ƒbÄïIâ†à6šÝ™4“µÑÒ\
"E¨Š‚c^Km*mrÊ”¦\²W)$p•¶º‘Bå¦äÂ’%Êmn\Sc)•Åºª•À
S7ŒpƒÁÓž°4Â…{ŸÁU<FÊ]‚(­
-J	ç<çœÙ¡ï}JôO©¦ÐßR†ck‡Ðøv	÷°'¸^ožwûÝ-¤aÆëíjÃØë#Lnî4m¦°û»Çy#ƒÕá Cêè‹ƒí8Dèð`bYÉv>´³'P8öl)E¿{Â³0¸Éâ…À'˜GÓÔmÆØƒŸ^t‹¡iõÇò¯Ø'6aŒÔ’xœMKÄ0†ïùs—-IÛØvYDAô"(è²GÉÇ›¶ÐmJ“Zöß*ëU/ÃÀð<3ïÄ Å¡+mDi¤0%œ-
€ç¬ÖƒZ	ÔÎ°IÍ#&·²jrƒ®¨jé4 êªT·ä
ÒA‹‚©%v~¦G5öè¤Ú3ìº5÷a	È,îHÜ–µ,«†7tÃsÎ™ñçs#þ‰JÑäW”MÃÒöcØÓ1€âeiïréŽ×·Ï§—‡gÆN °öÑt°»ô¹¥.¤þ+•èi	ýØnÃßLIÂ®’ŒŽ“U1±ÃðkNÔ=bÝŒ±÷>lwÞ¹¾ìÿJÄ¾Å4‚"åxœÁËƒ0 Ðœ:TuìçÜ988þÜ@B]…m¥Ûô½k8‡åØÝ'd¯j©S‰jŒ³ÌF –%Â(IVâöøÈîÛ1½B‹EF‡„\“´@õZ‹

qµ0¾<Ç’!÷ó=nßÕûïþh$uŸ(xœQ±®Û0ÜõÜÒ¢xìØ²óPÞòÖ¶@Ç€–([…,2Ô_É):¼í&’wÔÝ‘ÔªNê$Q*eU­¤éÕ+©LßUÆ6M/•íÄÕ÷•îÐT›Áœ¥¥“Rm××‘ê–L.ÎV	\yŠ	^08òðÇ@	>šûþø¼¬}‚J5}s®zUÁYK)tœgÇLÿGmÛê\·¿©Ó¨c°n|†—!2d,²¸z†ú•ÀG4.Œ0l0Ç+_|ã%¿	ñ¶óî=¸pðw*ðôfãÆ%Òì·#|›â:N¢`x»L¸â@ppGxµûÎJ‰˜h!Wë\Ò-’wä_Jàî¼‡x£tOŽ	Ðü@](3Í1mY›Fv1…øBfÕ´ÿ“Ã¼zúéx+~ó<e[–×D™ñ¦ì­¤õGû£ÏÊ5–®wC¸ÍTËcâN«fQ&‹Crz¹<pÈ[¿º|/ó­}¶çSü³mÝt•3xœm’Ír›0F÷<…fºÈ‚IAÐI2›cÇMœ˜ 	°1ÆAì§¯Û´»ÞÝýæÜ»ùN×rÒ›(ã™Í1¡‚Y.Î¶M†)Eˆ`×13ikyÝê80µYMf%™k
~Ãˆí ›s3A„g·ÅôÏ]s,[ÐD0$ Lœs„J#Œ

SF\©®8µ duÍ%Øð²æéƒ‡âöç»T’Íø€Ôrˆå˜ÝD¦©¥§ã±ì:Þ‚IÙ…*õ©åMuùž—]¡’¯7à?gy“Ë2÷¿Ç&ÓXMVàçt²ð^^7ÁŸ\¤Ÿúžç<oí¯£rÝ•x´ñgv±·–=n§ƒçmÕóÔ+âî¬£;§qS‹[­yëjÀŒgû%é?Šz?
L,úœÄr!”½©é|3“z¼Ùu™3ºb›ÀÙx~àž»“Ú­F¨õYÎ±=Ó—»îg—íjT¼Ýî9kÜoFó1xËç»`Í†¦q†ƒò½•ñ5p™½<ûÕézT5s:Ý‹*¾@c»,æµ¢ï³8ÂôÚ'ý™¢·ÉìšÀEx€$a½ì­‰¢çâ2äû}jxwçC½ôÓ<J}z®ˆ¶ïI”]Ž!):$ë~õê+}¤Ãj{¬ÄfØž{½è£Iój×y0Àpzè/g=¿bàPŽuoñêØÒƒç€«§?L`ô~Õ§xìŒJhŸ‹ñÿÓžy›sÐ¨ª-?+.;ðZÑžŽ hÿŠeˆ²ºYs_KM«û#ÿnŠÏˆ›ˆwU)»{©y‘à!ã}ÍŽüéîdýþ›xœ1oÃ …w~ÅmÚDØQuìÜ11ª‘Á‰üï‹UÍÖŽ÷Nß{w/Ïˆ`§Ì¢UZÊ„tºé¸\QÍ¥dLð®¥¶aä¢gD‹½4”K®¸SÌvµêT'¸­»¾vu_LŒD¢—<Ä^u˜à}@ó‰pŠÏKZî-ž –M+š†±ž(£”˜8M>gü'©”ü!I¸Nx€²çÇÍÁ•üjô)ïÒÒ§5ÁÑâ5è	O!ÐPo6|‚tAãG{‡7Kxp¨à††¸Œ–ô—Ù‡ìÃâ’!†q…òsÉ/]åÑ•!o5ßo˜qÔ¹(q[ß¬‡#ž!ÄüÍ•¶ý|Ç÷„¼ûs@»‹ÎíúõðG9ä­e›˜xœ•=nÄ D{Nñu[Dkaƒ½Š¢tI( 3¬QÖ`ñ“ÕÞ>Ü J9Å›yS@NöS/¡æaYÌh.'1;-àÔhÖRðA*¡Ø¡B!9Ïýª´í¹Æ.Üa”rj¸¸&Ø'™®e‹‰ÞuÈô°~ƒž·ÖóškFgñB½ó$”\8=ñs¶Æ}÷¥àÿ$3Õßì…¾«èæMøÙÑÝ“>{C¡Si‡/d#…X(¡Ô)5Ëû†@ÎßÚ®WŠµP®&?rÁžOäRÜY=r+Ð{ÇØ§¿Østîl—?LÙ/èörxœAJ1 ïyEße—žI;IàÁs'ÝY3‰L2ˆ¿W÷‚·ºTÕØU£%Â8Í”¼Ú¤³DŠìÆ%{›¢ª'"óÁ»Öa’ƒ„M!;La	Îer,±pYã½íðÂµè
o|­ºÃƒ|Þà©]Ï¢0-äÉ¡¿'¸ÃÑ¤¶meý‡jâQV¹À³l¥÷R¯ð›crYÖÒ”
Cûè°ioõ|“Œy-?u9µœOñëò×Ü|ÑcÕ–3xœm’Í’š@…÷<EWei%vCÿ@j&5 Š¨¨ ÑMª¡[DIƒúô1¦²›»:uÏw7÷œFI	¨Ž¤ÀÌ49)4™ {Ë°L!a" Ñ	Ç	çZÅ•,`qLAq"%LuK
˜ˆAñ”èVÊ 4LöŸ×AhÏ§&æ„&ŒJjHip‹
i™)ÆD@–·Íá¢€ËË\ æY)xÝS¼Õm-¿	ù ŠML‚èAB-½œÏyÓ<`/oÆm^Ê‹’Uq{ËòæÐ&ßÀ'gY•Õy¾þgèùs°ô–`å{s{½‰†Ï½4ÐÕNêØ¶3°íÐ	'y¸»ƒÈ™²Ã/>åw¶¯6¾=všÊ0ˆÊ%ì‚O¯.Eï8\»Ø:éŽ3ãu`KSíŒ¹ë-Ñm¶æØ‰h7‰öÇìÊ…˜Ê%Je˜Ä·œh°eÈ5LÈ$q7¾ÊÆÔ^éË¼E«þ&rYt’ës‘îD£ÞñIžñ6,·ë±½º‘îÜÓÀ¦(ïí³üx®=i]Ó€÷äÖŸw±Ýòã,C"¥uµ8Y4’É-óTùÑ®'÷jÀ¹n¦»·›b‘²6["ù*x"÷á¨'{\p;¾Än5|¯æ§f·éÇˆ¦•£°÷N¼»²;-àµÿA‹jã¡¬¡»€t¯öQw¡Þ¬`ã[ä]›‘?Z/ºÖÜÁó wÚM£îU¯cŸ)í_fÃ¹ûybZ U&AÕPòw+ë|A˜`°W—3°U[V¼9/é7·þU$\Óžò;°… O	ö6>P7¼ikP\2PñLþXýñxœŽËJÅ0 ÷ùŠ³—[’ô™‹ˆ.uë”“œ“ÞHš–&Qü{‹+7‚¸˜aÊÁ[×úÞI©µp’vš4±ÁÑhfÙc'3ŠÄŽ§#¡oõVÒco½;B¥”¶h‘kóˆk¹m<5í˜(`‚¸Çý­Á=f\sMKã¶õÔÐMg¯SîdßJqÒ5”Âÿõ…­!Òž“‹•ÒûÊs´8ç‚¥æ9nË\8	VÎ[j¾!êNX˜~Bð!2|„rû5#ÄkXÓeóþb?¯º_û%¨“xœŽÁjÃ0DïúŠ½—„µ-YR!¹öÚ/XyW®C,K>äï+šs ô6<ÞS6ˆ–ˆ,Æûv0šØyvµµ­m‚8ÇÁ±V+m’
DDoÄ„Î¢!-UC/¢ö=´ZGnëíå{Ùà¶íi¥Ä%ø„3­÷#UtÍ4ç=Ça™/ÐôÚµèë| éPU:O¥ÈûªH.ù7føë—G È…Êžá±Œ°Ò(JUE^”å½ø5Iø°ÄxÏÓŸŽ©U;qm’2xœm‘Ën£@E÷|EK³´Ý¸AJF@0öƒcã]C7Ì›Æ8ùúñd4»ÔêVÕ)Ý’.DV3”¦TÃ©Ê=“V4¦'8A˜áûS¤/!:2°†ƒL’t•©	Ä’JC„&é’AIºS’*a„2ªhÚò?©šQÌ”1Jt²„º¦ËšN5%Õ•»Åê½Ñ @&~n`‘¦`ˆHÞ°<ÑùK¼ŒÓÈ)û	ä%ÒYW%,$Y’„´­ë‚ó;ì|5%à©iÖU/yÁÏSòx¾9Ë»|,rðð·LÛq=à;>xwÏ8÷ö×\ ˜G35Ã|5ŒÀÖ…OÃéuonð¹D»+ÜÙ0\ÃÍýfÎL?·Ó¥;ÕÑJÙÝª âË’èÕÅ§#½•Ù>XŽnÄÔ=YÙ‡¦ß)žNÆ‘ðîpaI^e\EmðN×´ÌÚE?@Í÷’ï¼‡žû¶ÅÚ@Ð›koÜ*¶Øíbx¦šFªXÎÑ¿èRy5äó¼Þ_ü6û½–I`;9\­B?vP<lÏ³¸Zl-r:õUçk’¨-ûMr–¹‚P8é"ªSÛmaÉëýêª÷¢pè7×™ß`²ª@í¶¥]ñ2â5’z£‚äU5:ŸvŸr}4ëÑq6]¤ŸNV²ÓÐ@0þÅnçf†óZ¬áu#~~ÖQç‰å0ûw[×‰Ok«J×žHÌLéÛùÀ¢x—†^ryÀ³».>„™Ùžõ}bÂ–9ÝTU``ýÄF~ÈHU@6´5HÊŽL];ˆU2òZJÁ—mÇ‹¶¼éÀgÍødø#”xœŽMjÃ0F÷:Åì‹,ë·„’„ ÐE×’fÔbÉÈ2¡·¯H.ÐÝ7ox3_«Dà'•dŒhMT$\âd„%L†L_”NÏÈ6_)7PšBð\‹997%ZÅ‘nƒŽiŽ‰´Z0´ŸRáZ}Æ’áÃ[©§ðãöç;Æ1–õ&-SVZWœ³N×¥5ªðîóB7øòß¹O'¼?Ây?v‘ª““\ÂŸºÊ.ˆp{[¡lméÿ[XÉ7òÎØçÒàPRÂïëÿK²?²áb<šxœÍJÄ0…÷yŠ»›ÅÐá&MÚfAðD\ß4736-IêàÛ[D×º;‹óóš™í Œc–*HÉD¦7h¸Õ®m‘:c¯œJŠ•2§
Ñ6®íÑfMÞ·ˆÚvh°×:x5 ­Þ–Ï”"OðN×Äüý[\ÊVøäùd§%­²=Q"Šq™çX+ÿ;ªQÿD…ÛâäÏð¶zªStécf¸gZ…xá
‡'ïar¥ÎP¶u]òþgg3ïþ&•Œ7JW.ò2ÿœ„xû´o–÷yþ‹L|y„l°œ4xœmRÛ’š@}ç+¦*Vâ3\&•¤‚¢¨(+²î‹5Àp‘›rQÖ¯»©¼¥ŸºÎ9Ý]Õçtç ˆ‰*)BC…R‘D!S$„aDe‘J\á"‡WÖðªfJ£"D8À%”e!aj(©˜bÇP„üŸžÄjˆ8Ä’(‡Š„Q„±HdqD™¤Êr$Q¤b‰¬ïÒº:«2^ Ÿ%oÀèñÙünû–‹ø/€d¢"ªbŒÁ"…°.Ë¬ëF±‘u«> ?ªºá×âýw’ui|ÿK®I›%àëGÍ†¹;c^Lc«<wñ‰@ vÎ4m6×´ýloe»“MçîÌVÒqî¸1š6Ý«¦¶<tÆàÞÝM/rµÜÞwYº:Î0ØÓÛð$1Êê%{‡“Æ¹ùè˜ÌíAW“–Ï«ŸC0y]Ùê­$%´n4qò…å€†ô:_xñ«ÚîŠåÉ›ÈV³Z¯u|h&.ñœÊüÕô-sö–³9žºwC×ÚÌ½bŸ³F šéõmnòÓ7±«nS»þâmaÞ.Ö{Qº½ûå=U‡‚ø2jn´&¦â1§³JK Gâ¶hoèi)O}ÓJ‹6JþP¬¢˜_×í’‹NóÛc’~ ÓSl:>Æ^éäŠHêtüäíãjwxÙÓýJ”ºaëÈªœÕv‘ó¬°Sû½DWå`“tŒP\îÞFÝkïJúâõôS ?/Çj)üõl±Õÿï˜°áMÂÁµ/
Ðð[ÏÛ|AcLAÜÔ%Ðš¾º²*ÊX…¤i7²íYDgˆ¡º—üÜ–¬éÎEœ?¸ï dãžOŒ ˆÇˆ~ UÖòÔXï4ð@Mý“xœÁNÃ0†ïy
ßÑª,mÓdBˆ]$ r§ëh’ªI'ñö„‰#ÄÑßo¶ËFÆwªˆsô|ÐZtÎâÐkc­ÓRèžÄ±e+n´G©—ÆeM‰¦WÞ“¶Ü£Â)†{¹¤ÎÛWŒnÆ/ðˆëµÁŠž3†¼Ç©±)<ÁQvê8(­<ð¾å¬Ò0—BÿgñhÌ·2.iår‹Ëw‚¯ç}“˜Á`&)ÂëÛ™1t®VöBölª»Ë\£’~Pí.;1CÕAwï§ßÔ(¯h©aì}ž"¹Còþ`>OzŒ}Æf‰-žxœËNÃ0E÷þŠÙ£FŽ‰S!D·lù€hb[7c9NQÿžÄ!v£;çhæ–L(ÚZX]cë•–M­´0žô¢qšŒh¬õÒhÇfŠ´DäºÕ­å ]§4×Ø¡Uh¬6²“Bz.81\ËeÎpÊkL]ÀoðŒéZá½.8-k<Wvž^ n”©[ÓHO\KÎ¶t
¥Ð}ïõ…–r„“s°¬)õöBvìƒëmÉ7øÈ˜ÒvÀoOîë9ø"CçèW§ÌßèÈ\6cŽpÙ§‘pÇÛJ;:áH
œ)R¶bì=œ#¹ÃìýaxÿÔ‘}/ÐŽ’3xœm’Énã0†ï~
s¦‘¼kÐjgqœ¤vœÍI.…bÉ[½ÊV–>ýd:˜[y ÈŸ/üÙsÆ U …XŽ‘.3E!4ÖˆÊ¨et&4DqL‘ÂYÕƒ˜°XÓ ¤J	Cj¤2†IiÈÔc„ÎXÅŒDÿç1£&¢ÃŒÅ&2ˆjê
b1+:TjjJKDôiÍÁ˜T+@H’ŠqðL¯_Åk':öDÙo€tÕ0) ‚PŠê²Ìúþ;Y?gð\Õœ5Åý5ÉúTœŸÀ7kI“tY~þ{â¸X9+°qÏÚîÖ“/]¸vvd[–=²¬Àæ™?·Ï£µ½0Ò\õ/
w¯–µ-×r¶¾K`+â0_¯t¸ï­­[g	ÛZOµðÞŽùã(…Qqµveq[&«ºÈý¡u)Œ@ÅE ê›™rûövJî-çBò(÷d$¦˜P_l"õƒf²öb™¾}èÖŽi¥2âÞ"Ñ†59‰eRÜM^ÎC6–€zšGZ«)YyZµe›mù@™Qºp?ï:C›ãEDÞi1¹Làt¯µ“8pÐx×‡`9ô%Pk¨ÅI¸+fÿ‘jr\<„›¤.éir[xSuåÞm8¥íNdYº\ÅãäÍ·89‡ù'ÿ ÖxF·Ï@‡SÁ×h9X‰]9ur8ó•vN/)Þëû¾¶§8ºå¹]ˆúæ‹^ò2¬¤žM¼ñ÷ŽIoŒ'4¢( g­`]~ UÅ æu	,.ª†T4#Ò†ýcÚ½Ëè*’ôÕüÏ[Ô	Èª¸~$P±ÛCÈ*öGéýÝ“xœPÁJÄ0½ç+æ.ÓlÚ"¢{õ¢x]¦É¤F·II»vý{S¼Šsï½fÞœ‰Àl;¡Q˜Fb-k[ÛÆús#„EYÉ
]#ˆ´b#fŠ3h­©qF‹j[9§¬hŒÔ)M•@§¼ö5¡oÃãü’2\çc1º€náÇWŽ…ºšp˜Ž±ç6— ·•©µQZÁ™ÐJ°Âažé¿ól¦ižZs(7R!úTD:"DbìK±ÿÕq*8½M+èèßÚûe_,ûu'*íáùžvË]êoÇWöÇœs¶yXJVPtð%GïÁR»n} hAœ$óy’ž¾‹±ÇÐGr›äý¦ûhÿô8ûžÖ“:—4xœm’Ër¢@†÷<EWÍÒJ¤¡±a*™
(…ˆ
(š˜Mª¡›‹ `syú1NÍ.gsnß6ÿi9c Kr¤1‰JaX“¡ŠPQÑY¤ªT‰‰Bð‰’PÎÊ(ŠÂ4ŠÍ¥r$jX„,”†DBåX‰UFbÿç#	jP”°‚èLÒÄPV	Q0aŒ†âL¤“ÝNÉéÚ´â`AÊŒà•$%ãà‰÷â¥éöHÙ g«XV1Š¢U—KÖ¶7ØÊÚe‚§²â¬.Æ—$kÓ.|¼?È’:i²<|‡aZöx–ö¶µÕƒÃÎ¼Ï €¡1"C×¹®û†¿Ê\[óæ;ÃÁé¹½ÌíA×³ÜÖ—RÿÞ¹µ”m9}ËOhÁ×B iIT¬…Ûñ`uí<nBGõü¥÷5ú®tÙ/Å]¬6•¾ç_âaº(k~ëzoD§rƒ?áë¸€&5×ró‰â$§Ukoí®¦Êù¼\°11ƒùdŠM£nãÕàHñ «*¾Ö2
)\¾ bw‰[£+d	ô/nàm©¢g2q§åçîˆ-eÎú^ë’Ýk­6;²O?ìœp¾“_ÐäU;yÚëÎ±!§…†ëuäu6ÂË~’™ÁÄÔp”‡©ƒR¼‰&ur5^[kæšv>x(*“:üËxWyÿ©é£cï ¯wz£s0Hº97žöƒßšå!Úl×ºw<-?šÃ³ žÝUQÿ<3·‹Ÿ6Œ'Ô]Q Î®kZð"¤‚˜Wp!¼ÍÊ‡¤§5ÏÊöƒfMôAš±Œ>XûXA(û{¸/ƒ{ßLÕ3>‚;î hºº®xûpÇœ:xœRËnã8¼ó+xÜ±Þ”‚ÝÅJ¶žŽmY¶'—€©‡W"e‰òëëÇÉ\æ0‡Åö¥Ðêj «DO)Dª–ÛT%jŽ)²5ÅÒõƒ¢91sË"FŒL]VA‡{Ê4ƒÚ²nê„h¹l#Y¡Í ºŒ‰V…Eqa#€GQñ.p/jÊû’Â?Û¯¶ü‡Q»î{ÎÛ¿¡bêÈ´e$ÛP’Mi[AÿßvÙ•C]Â§Ïr½ ZÂ$Hà&
–Îv—z_s ¬×~è:Ž;-«_{Þß<sGWã<½¥„Ýç¬#ã|LŽºï´‘r=\¶a T9K»CK m&¿íÝËK»<ÖÎ|š:'Ú¨z¤ä4úîÄÎÊysÿ7ž´›åw±×ÞTjÌ|9ŠI ó¡Zí³:=:·¨ßÍ¼##¯*™EXßu&zwÜº·œ#Ï&ºö6UºMW6­ÖójŸ XEByÇóu²zã6YµÜPh´yßê( Ù¶¨Mçn{T([K—²€Es˜¿ìJ)°àæw†]s•ÅÞlaøÜd–®½>ÛÝÑ9EyB©$=~àªš5õ8?Õô]*jÿÚ>RkWÄ·çq%4Ö¼’ñ8§¬›ö¸àÁ>;_C§Y„²±d¬¥i’ªeÙ¥\Fþ@’¨‰9Ã&ç8u§±ª§Ÿ'«“_üé$e¹/-sÁ\/¿¯èÄ&¡Ïš5€½\´ütÛ[Î~ç5`ç–>u}ÍÄ3üHê!çgÚß n,‡ôü™íaì:Þ ’/’¨è/Ä†—°Ãæf`\Ô9~+ðˆìçÍ‚b1öôc¨øå£¨iC†?¾}`S—Œ’'^O‡ÛóH9ø¶.xœÍJ1„ïyŠ¾ËÌN~¾ˆçNº£™ÉÍìâÛ+¢gÁ[Q|õUo"À‰³Ïa&kHfôóä=IHÑ‰LµÚ©ÉÖ!Ù)Ø¬sì=fãgŸ›²ÐÉ&ÊÁ2ÏŠŽþ^<ÑVdWzÛ¤Á=ß¾Ããå¸ÈÈò Úžœ5Æw¨UªëZz—LU<ÊÂgxÙ™ºÀRâv]nv¥~Ê^áªGZrPó/3*õ\¾ì<Ôœ‡øqþë\}¢c‘˜xœMNÄ0ƒ÷9ÅÛ£%mšŸB,8 ‚ë—Ä‰Ô¦(MÜžÀØY–-n ø¤&ž>å'“CIïGåƒNCòv,Þ¹¢4
#dtp:¹h‡Á€•œ”±6y­ÎE¯'ÁG»m•ž¸d,ôÆ×‚J÷éãW<îÇŽsÂ)£­Tftšî¤’RÄm]skøGU¤-^èWô7/uïX;9·¼!ž+~žÐÜÙ
>U,à¹¤ÜKg!^sJ§mžOáëò‡ø$dgÃé€Sxœ5Æ»ƒ@ P‰"E¦`€gßùÃ0¶ÏWF¢fÄV(S¥Ê«Þ=ÝÓºo™3HÍ¡YA•ÒD9{7Á±4•¨L­Xy~lË÷>{PöæÂ$Ë€(èÒ„‹º9X5	bV¼Ö×ƒYá:é¿ïñz-"õ–2xœm‘Ír›0F÷<…fºô¤A !è4‚	¶8ŽqÂN’È?€±0ÆO_§îrW÷ž9ßÝ|ªØºØhØpŒ5ÔÙŠ­ƒ9DŒ[0·hèDkh+*„.A†Á‡S‹af;Ä4!C˜`ï§€Õ	ûï[ÜÉ‰cäŽC©Mlƒ™†ebŽ0)&&cÌ´¸mêíTY·`B+)`C‹J´àç¶ÿ»ü>wgñ}+~h!bAÇ4éP×5^R©»HõÜ1ð³ª[Ñ†ß…TeÇ¾ß…/bESœe>Çóƒ0I€UDîÛúÕÿË5 þìqÏu½±ë.½åLFó›=~õæ¤Ü¡øb¶aïº7ë#tƒý¹Ny.QKÈTdû—ReR3kÎ_®øVÖÌŸú»8|žÄ³•êÇÓ¥»/*52ÕdMo^ÕYŠ¶K´èÆ±Ÿv»<ÓÀ®—Ñ|±Éæ±LÞí
3Š\§¥V†÷Á,¸ýÓP§˜¯¨¼•©¼bºê£XÎ¡7X³é 1WëxX8|Æ«7¸Ùˆ[LÂ´LñsN™'¡má¡Š“özµ/Ó4òfkK\²LÁ¦~x¤3$râ¥,d§†»ÉtßÈ¸”øÙˆDrNÚ3ÊšÍåÔ/^7Ä+–º/¤0—ÝÚaéÚu5@JßÙ/ÞË‰Gß7IöJÌíû"ÎÂeßœI<šyp™zæ©£E¦³r4ï¯‰„Š'<aÿZkÿ:ó£É×i/¢-hºÃ´âÔ‰³ß BÈÛúdAûGÖÊªx`”ï¶â¢iÕå(~€äNÈ?ƒw*ùý	Uå¼ðø4Ÿ0xœ’OoÛ0Åïú¼í°ÅµãØnŠa†^†]Šu@Ï´HÅBeÉÐŸ4ùö£“l@OÛÍàã#|VŽÌÐ½Þo;ê4÷Ý¸ßÕ†Ç¦7ÍP7´7|?Ð0î‡ŽÕ‚‘}†ÝPóÖ˜ûvÛSßÖ8´©q×4DÛnOÓa?˜VaÉSˆðˆÞ²ƒ<xŽð™Þ._SI\¦ßÝ¶m‡>ÖM]+æÙæÌÿkí†}³*œùž¢PSœâ£ÕæI©Ÿœrˆk×F;Mu‚‘'<ZÍ–‹1O|5¯®µ¼®ƒ”±Ž+xaÀ”ÊÌ"aþ£çy1	l‚9Ÿ™ xî;‘àm²zZ5éU“l•èÏÎ)óL0J‘€lÊ1ˆ@€2scP@ÊRÀH•RßJ†ç§Ç !Ä‰W¶ñï¥a)ßo¿K½‚œyëU·ÞõÀeaŒ<°^PPPœõäÎ{º@µrä5=±~UÖ\£Z§ðIÀï»P"0}8N‰´î“ñ2 ÑûŒ+ø5I4i
ÅÉvV‘ÑÉ~âúë/]2Ià‚?€<‹</û69YÞèÁzæ(0ÏVÞm‚1›ñüð¯ç¤~Cú ™4xœmÑËn£@Ð=_ÑÒ,Q†gó%£€ƒ°qbÇñ&ºÁ1¦;_?NFÙ¥V¥Ò¹RI—QŒÌµLWuQÎIOŒrÑ€Ô–ª™¬kX’•,C*×&×$8K4e©!ê¢.Af+’L˜IZži(‘I3¾}ž›ÐÔ‘l ê©dhŠ™ŠØTrªªˆ%%ÕoZO¸d`Ç†'©	®ÀkRÔ˜‚{4}-ýÐãßÿ’¦êÐT¡.^”D‘Ëšó™0vÃsÂü!÷uCq[]ÂŽCúû~ˆmÑ“Ü}ŽíÎƒ¬çkðÌ#ëe»q¿îàÀÔÛ™mYöÌ²b;^È½,g{©Ku5*4˜,ko7å”/é„°í{¾~‘»v§¸!‘s”Awa»Þ5?ãjkkKOnàÙëm¦£þ.¥dGºe¹gy“¦Mt…ýb<ràùÊ/÷§ì®¯°)¡i”Â[ë%C|ØlÔ`ÇµÖ–>Ã¡ºˆ IÛ`¹*a#BöŽrûáp=”k¯ÊÚ+Ù
Žm»'·žb-O«ÉÍf†?ÚÓ rçûÕ!¶»o¢dUTžxŠeRÙ¡jì$S_Â‰	Ñ)Íù§ª[®_¼E‹as†Âæºp¶t•×|:t†s8Ì>Jå"pÀ9ÎÂq(ÅÒ½(R#k0g¯aµÎœÂ…¿ìWËÍ:ôý-åŸ<ˆ_gìù2„TƒÀ«ªøÙ¢¹ÿ¹‘ósc\ˆiA;T ¸pÏÀ/IU!Èisç„2RßíUÀ=¦÷ïeßÔï=.òd¨ÇÕ˜%m{Wgüääú3Â#Ép¾ 5øLf`íÀþ‘â­™TxœT]“¢8}Ï¯ÈÛÎÔL7¢°kzkÁºEmEmí~é$ 
$’ â¯ß »SÓUû°µ<‘“{Nî=÷&²¤š1Š,Ãjµ£Žna›’¸e›¶‰
¨m!ª·;QDÀqI	10ê’(´[VËÒMÃŒ(íèDïš‘ŽâÜîèÈ¸’[VÂ	.eZ@²2¡ðG~]&TbÎï#–ÿudXfWGÁo-³Ó
ÍS)éÿc'<iïšÏxÏS8ófpñìMå*\q LçÃ'×qÜ^âœ‡é`PêZÑ—Êê€¿à¤òž¶3†NþÜš£ÉòÉÓ·Qð0'€aþÚzÛ¸§q>=†sÇïÎfmƒ?‡ßf;¹Z×±·,}ëóYÛ~Û šÍ/uiNÖùóÖ—•R ïÕ:8"=:Þ-n;Õ{å«sHŒÓhÜó[}=ó5Ëáº}Lü5ª÷±\Üø¸ìØÆeàjm3-{yÝÇ:Ü˜•[ò.ŒUHôº~GÚ¦Z†	}yÙN†—÷i±;ñprðêªæ®ÓÍ NZDlôñüµ`{Œ¶¯%¹¬Mâ{7´ËöÙÔÖÈ•c´ysô¤WEß6û@ëµ'U¸|²²ÅD 8­Í"ëª
˜¦ÏËÔØ¸¯Í+y‡^{¹úñÈw#ÎkÜ? °Øs¿?#³É¸+ç3 ©íå»ÃðRu&^0Î|OçƒÙT³ùªZ˜Cü„Èh‘¶Â °f®èk'´YxéøD|œîõ Üº=˜öÿ­×à6.wÅ1§0NÏPä„Óˆ
(hã*“PMÙN°²JòJàÄÍüÉ-…OJL(”fiØˆ|¿âS*Î!ÏªD‘c5ë?eÁ?²’êÊl§’Éß§„;I(kN!VYlÙ©€!ÍØéA¥{Í³‰û¸ÅÝGºÞ5>a¸,qý	y ŽT]¥ûç¯	•Í	_ø>>Þèr#ÿcœf”Ü'd¥¤~‰XIUÊ9§ä+ Ce•Ü¦†5äXuõ®…(3KÆËKz+ç*w«æ“J9Lye•rÃˆU<£Å0Omq‘¨6(N4ËàT©¸‚ž²´hœÍ´ §ùý¥Iß!V¸•ûÍSös»dLÂ[
÷ ,Ò¤ äŽÅñ]X?ü‡',©Pn\£{®¥’\ìq’ø#º­Å§ø¿ Á_¿ì™@xœ¥SÁjÜ0=W_1ÐC6¶%¯mY&”@skOm!‡ÒÃXš]{åEÒfÉßWÞdC-Ôã‘fÞ¼yo=Î•èëZ÷²F¡*]7ZÖI7²1º&%ZY"²=zrZS6•â².Ò¥6¸–}©$Wj½n±o©Ù¤ËMÏð‡ÙÃ—mD÷€ðõ0è…ëQ7îÞ‹¹žwŸA4•¬›¦©ZÈ¸äœ¥Ó‘<Ü¢³4Án]Š®ÍñôqrCO¥Š«¦‚©”m°÷V‡F¢=Ä G=ÑH°{Œ¶·“ŒÝÎîS„½·i¬%oG!à–à8Ø)	cƒž#­Û‚`ôžp\Â~#…®XHö4ÍG8Ú4ðaJ™© Ës÷;*8¯áÂS Ó¬qJïy¿ð‚ˆ~KñÞ~m0q1¿Ùøƒ‹vG M.•
 yž/A+ªpJÈ²N´ŠsÓ<úPòRd¼ÍJ\t\u%ÏËV*.d»~R|)_­VPì\,F,Î#‰öaZ0gC÷¯óÍ‚^f|		¢í„èD“Õ
%êú%úÍdâª„•¸Z§àtßÎ-zžQyÜ>KOæt%³&>''ŠÄØ]ü­ÚgÖp±Ãè>B^è’ÔÏMþÏ’=†ðŽ%-—/,á"0öÃ¦e5Ù¼ÙdýC÷/¿ÂÛ’¿¬?ûfÝØÁã>tE1Ížò‘¼£)Ÿý¶ðÅb_‹D§¬x›—•”*Ùë®ì?3E“3xœmRIr£@¼óŠŽ˜£ÃV7[Ã„=aˆE²$$[—‰¦@„XŒ¤×lÇÜ\§ª¬Ì<TV×paÊ´##1¬èQC‡	¡˜SÙÔ±‘EªIÃ«PAMÎ ‰l‰Je(ÓàPƒêD˜,¹Éÿó…B#Ž¹À²‰‘JMLƒ)ªº*˜1¥H"}—à*çØ‘´âxdÃWóÜö-`ü@ºŠ5ÃÄØ wA(ÑcYæ]w#{yç÷	x¬Ž¯‹ËsšwYŸ<Ü?ÈÒ:móÜ–ízÁ,½%XÞÜÚÄ‘û…K@CkSÛ²ì±e­ìU˜Ïr=Žì)ÎêâCi‚á¶å8ðê†¡5ìèõ:=F< ËÕÇ^/´U½*±ŒÂ@ÚšD{Ã½(úÉX•Û8ÚïbäÙ¾½‰Ã6èöt«µ3t“ù¢ç±0Â‘ØvsÝÊö¼Îý€¾NÓãâ-3ú‹w	öæ2³<£8Öç˜ÎvîüÐ¿]zœŒ¹/ÊÌ—€6 ^š½)–B;»Óz£óýìÔj™ý.Våt®§ácˆ‡Zog£ø,_º×ö@D½ÚŠ­$0õÃÓ%Üáqqö^Ó¦œÍtáñzv¾«¦”ß­õr¿‹Ô%{×ÅëcRð÷·º¨v[	Äjtb“ìº&Ë¨X•ó1Çœ…3/Uqp(Fê›0©W}Ä?<>×['[÷IOUÌ¤ïÌÜ¹ósbÒoRê¾(@ÃO=o;ð©ªDs,ÕôUM*–“
i£ºèÓ¼ú‹tI¢%»ÿÛßÀbìçkð€Ï»iZðb=ýþ—xœŽ±NÃ0EwÅÛQ";vüâ
¡víÀÒíÅ~N]5N”8þž BbD¬GçÝ²0ƒÅØxi”ë¬FôèPª^³µÞEkH†è¸ë3-œP¯"¶2*VÎ0ao;í›»À6*bm¨mœ ­\§NË–gÊ!Q†3<Ò|«iGÇ•ÆuËCí§ñ	”5Ø¢ÁÎÁƒlµ;S)üß½ðc¨æû6¤¼à¼<_àÀg|/®Bls Â~Ùuy+Óá5•ë×ìÇ¯…¸¤!s¨¦«þýð§sâÙñs œxœ½NÄ0{?Åö(''±ãó	!4<Á&»¾3:ÿÈqÇÓãk¨(íhvôm-Ì`Ùa¶Ó~¶ŠY9–Vƒë÷Š.Ö©Y’U³Ç
ÊHœÛÃDÓ(ÑŒÚIT}O4è¹'ÛkœŒnõ”
<”-fŒä1ÂÜb~ßaC÷+†u‹ÇÝ’Âô“2Ú(m¸‘z”¢ÑàkåÿÞ‹Ç´l¡íÅêS<À“ÿ„zÉ	|„k»x]ŠÏWAˆ-V&ˆ»¯¸vžº¸þæ‚+)ˆgjqï.Íˆµ¤ó¹M­	~ð+^3.¼âÍ#S—œëæËáO‰o•”‡Ìœ3xœm’IÛ0…ïþzfêE¶¤¢SŒ;{œ}²Üd‰^2^ÙŽ›üú¦-z+OÄG@a9ÀÎ,‹PæèÜ±Æ­³È„JÊ°Ú…+(ÄÒ6ˆl
fÄ1N"b4¶GÕ!¶£¼‘Ã“6¶tÀ””˜–#¤."à!2&ðk¼mÒJ!Ÿ—ähÏ“ú.»?â½nkx•ð&6eÄ¤¨§º®‰ª(²¦yÂÃ¬µú^V
.ùý=Éš´^ŸÀÖ’KRg	zù]^0‡h9\¢ÍxºÛÝ:ø3×†ºÚžëz}×]y«IúyÒ_{S’žñâf©qçºÓÝáæÐï}°)ðCÏ›#!6¾ ×Ð†,?Þõøq~¤•ßËÂÁ×Í<]o-Sßí`kMk|r“CYÊÔÚ´JeÑóÔv—Ÿ©1hÈÝ/«ÇŸSN;6oÓyC:vùà6,'4œ'•¿éL¥Åýž;¾bgŸ]½ô,SVGºâ!]ü$|½œU=·ÙËhûq¨m3þ(dî<œ}âõSsïÃ1dvjÃÍ¨µ‡S}ÄÓ•ÿtq9Ï³­½µ=êÉþÔaoö’Î{xz7,&'y© ÿÚõ§«ø?ƒ½gçæRC0àÊcìøx|tÎd¼loü™Ë“‚{Óï™ÇÁ.?Ìðí>XÏÜã 8ÚàV#1»ÓÙ¢
Þ4ô–<&ö7³ ôÿŸ˜6• º´yŽ\[¨ôÅÀØ@±ª
TC§/9À×¨Ír©iêR|CÏïBÔU‰DUÆYÒ*ÞdÏ.+ë¸DUŒ$Ä¼ÍTp¡ªúý“xœÁjÃ0†ÏóSè¸±µØIì$eŒ=Àn}Å’[ƒcÛ)ôíçŽžvÛ@ é—ø~¤š™Á)©Gi¬šˆiVKgdß$7j¦±›Éq­•¸`æXa%wÎM}gÈôÇ^;‰ƒRD^TCh4£ënõœ2+_9Â‘·x²gN¾šë{±JNûÀüYp-m¶·iý e†Q«yêx•³”¢©«¯•ÿ2“™§HäËz€­0¬\R›¢ó§-cõ­ó±TF‚ä€Øá*¬hs*Bü¬ÄSæ5]¶ØWÌ—Àžƒ_Èç·Æ°akO¼×‹-¿ˆ'$úeEXñîs·Ä¢ÏlkÊ7!Žþ™vÉ¹Ýr;üílñOµ™N3xœm‘K“¢0 „ïüŠTíÑš•G °5³5AÔŸxð^Bõ×¯;[{›>uu}Ý—æ-¥ D„èP%…LQ¨&!CÕ`¡"ËP“TB´P‹ Ð–V@$R™1]‘µXSD‚•‰JRËj(ÅÆ³¡!¦üçY¤2"CU‚º¬h’¬"‚S5È„ÄP‘.J†ˆbô<­[`‘*£8’¤¢-x‡/óÞõýÓß@Ò Ruý9F¢$ŠBT—eÆùžgü£ÁkU·´)îïIÆÓ>üù¾©%MÒe	xù+s:·=°ž¯ÁÖž{x·÷§_¹ 0tfdblN0Þ˜'ó¬Óiâ›.Js¸º*­=`Ü4SÏÝ¥É|s VAåkcU(¦ ð1Ççƒ6Æ»@‡>)­nÓ2¨Ï{ènó!he>HÊ³åHõ{Ûx${µ¥ÅÊ›õÖU Êq³dª©åy‰ãRû\Êö1•Ñçmi—C‘rÚ~H$ÏùðÖZÿâû·½”–vÚÞðáž‰KÏÔÌ‚E~Ô”n|„7Sœ=Œ¼œº4å‡‰T"»œww^ÖËb0üÈ:YWä½ÈW›Ø:Ñ‡g—aö8óÑ‡tÈ¢?mqPiäe¢ndkKEXžF=Ý÷Î#»Ùç{ûé EsrÔ×‡®˜L’ð¨^#Ýe›M°Õssö‰ŒÅ4g›Éã4 -ãFjðâ È«àM oÌŠOÂ¿Ï¦žõýcÂ’¶	M_ ¥—žvü „€µu	²„c–Ý^ò®®^hÕqV%‚P]KúX5¨jº‚t) ]D
:Þ>‰dp¶+Ô=ozþ©”þBšxœ±NÃ0EwÅÛ ¡FŽíØm…C':0?ÇÏ­ÕÔŽl‡’¿'P!±!±Ýåœ«S3Xƒ¸V*o½”¤ÅÆn»·R¥ÛQ[Ý+6b¦XANÂûµÚiÉÑÈÎsTmëœèlë6¡—§zLvð†‡HÜå{<•©PãèZ­L'L§4Üó–sÖ§ó9ÔJÿ@Y|?Óv	bªP,G ÒãHPjñP DxÞ¿¾@šê8Õ+±ê‡ mó.¸xSÁ%À8ÃmkH‡»ßªÅò#aWI³~a6žÀbº`v–k°au†)Fê©ÌsÃØ>,)n•¼_ÙyûW)ûu‰Óœ4xœm’Ioâ@…ïþ-Í¼»{”ŒbÜ,Á,ÜÜî²ÝŽmÀ~ý2sK]ªTúJ¥§÷ê iÜŒd‚CÌ0@Ö´€¨  g
æJ¨qléšÊ°tJ(jd2ŽA	‰¥XXÆ–f2…š¥cèT9øÏG2&FLÑÐ+ÌŒˆ"kî_M¦fYQÄM)hêäP¢~PÈÐGP¢gÞ>†×ª©à‰Ã¤˜ºe¨†©š¨#+²,…‡<u}‡©¨‡CÏÅ¡„cv}E4ìéüpãJÄ¨ûUÎ€Ž|4§sô>¢¾½Z/½„$ÔVNèØ¶ãÚöÂYŒÅôf™îÒ™XIªÏÎZ9jmûFF#{ÜqÆ4¿´‰½!Ù\eô.$Ô¥í|fš±ßMšØõÓµ7Ük¨d³sÝmy¾¹¿½S9I‰Éâ9È«|0÷æö$Ta~Û÷NÓå§ »m^@2˜ÒÄÒ=Ýí‹ì£œm¦6ûÙìzi«;c~îDN8§±þ9º«ÀúìnS6¦~M×qyªÎÃˆìÎ¥Ý3¾­‡WùîÅ­›4rD«Â\¶~~pUB[o:Î×Xë—·kM¶¯wqØxàE+iæ`vq;ô¼½’á´&qÑxÎ*áú»_SBqíìCùzÙÌÒš/yB¹qˆ×°ëé¾N›)¤U6Lã7²52?¥é54è4Ahî^$ô’¦^$}{6ðû?;&M¡Œ›,C%œ¨jôKQuŒ¢ò£\íá òÞ±EÝáž.v9œE]Qt3QÕ’Tœsè>ßèÑÐ?}“Hè‹D_ñ
þ¬œxœP»NÃ0ÝýwGñ#qRU¨ê€@b`å&¾I,b;JœVü=n ‹}|}^vœ‰@Y¥PTB¹.Êª‘ºA™“·9ê5r6áL>‚ÄŽ
…’ÝÔO¸TUh$ÖªlÊ*W%—]ÁpC˜áÙúKprppÌ¬Ë½C;fmpÀK©…â%p—×yÎÒÔÙi†Gô–FxÇÞ§ÓÁ\6p\Ö…’ËUª´Re]ÔIÊ“”ù³£Ý4[÷°mÐS’ØRªm	¬‡Ñ.®!ècO¿÷-&Ê¹@ð¡ƒÓýL‡â€<‘I0@C›X'–Œã@ðqm°?n€cð=\l6J3~¦ˆàu+h#„5Âž-ÖM#ýé˜1öfÓÃÍ.tÝ®ùÚÿç[Ù7ü?œ‘”2xœm’Ín£@„ï<ÅH{Œ30À %« &˜ l‚o	6üóôëÍjoéS©ôµª¥j>P
pEˆHÄ\‚¸’$…h•ª#ˆtŠ¢"ãQYU5¨}>Ð#9VÄ2‡PÓI.é%ÑK‰BH5Y•	u\ $¡ÿ¼ZJQ"ãŠß‚ª‚²LeB5*	¡
W¹‚…|â¬À2?6´i^é ËÓ·x§‘>”ô7€*ÒˆeEwâíF¡è‡†óì4|5ðxìÚ·—çºál"7à‡µº¯Ç¦÷Ç´w"'[×Y»dcûÀi4Ó0LË0b3~m‚‹÷fmLOc(œåÁ=ÆÚ²]ÃÉÂùºªa÷R;¶z0V¯ãE ‰=®jmÝÈWøè—Î8l3î¯¯„"ª˜£ ;ò¶›å=<»\p®|vÎeêŠP ¦-i»wf®rÒwñÎòø¢«X>¼‹®½õÜoLÎÔŠ.ÝN’·¯WÑõåÂÎâJ ærö¾°×9ZÙ×lS##$É˜Ësº¶Ösf2\O	½S÷JÎê,ùÚàUÖ;‰ãCêj Œ»y®ö»léEæØÉTéŸ‹Ä	?sX`¤›nb[ÓJLZÏá	Ó^}+¼éã°ÃT q)¯±žíHÄ®Æ^\½²•^-°Å¾ð€lž(F¤6:M¥ÀÐ¢ÏÅyw™zÖ7ûC:óúI O×¦¶„ÙëåÏ	j
ú©mÁ@¿&:rð"¨‚jè`¼ý!¾o)]©iKAhŽ#ÏÛ6çMw}Î8teS5Å·óN®ùŠ—!xœÏNÃ0Æïy
_8¡­Éš¦é„Ü¹í¦üqÚJmR’t0!Þ€†@BÀ[¶ßg9GDNkª©Ú1év»F·NtœñN0J›ZZŽµ-kÈ¢"úB(AQ!k×9Ó¶ˆ]][.$•X7G×1Žœ¨5!Â!ã	=põ½0LðP\o’aTn'Ä»¤æTf[æ[`‚‹Žg×´¤tç1gü‡PÛ°–ñú"Dâ2ïáÞZX"ºñ\9.“	ÞÙ1~ÌaV&†o]°øaôfZ-^`BôÚÃ§ÊS¾¿°kBrõrü’x[T‚
³!%iO D¥×q²1„|LaÆEå¡zß©üiÆj)ûGOH ñwâ'pûâ¸	Îmôyÿ·×‘7À©®í‘xœMK1†ïùsð HkÒÍ&ÙbED…‚ˆt/^“ì¤ÜMÊ&­úïb:Ç™çý˜<!B%¤@©8ïŒ£Jpm¸¶•aÚÖL,Ð:«¨DÞ‘ž0dP’7B°ÎVLS®\­*c$5k¨¬5s‹ª£J½Ï}œ ÍxÀ -îÃÖöx(©—É2ªæâuÒc*·¹ã0Á…jššWpNJIÙŽ>gü‡‘¬™d?FdÄÃ|HYƒÎ>ØMèüLÅyÊÑ/Éø Ÿ`Ÿ|Ø æ¾Ôø¥/2á0–*+8°9ÐÞ¬o×è‹è[>øâlpˆ¯_ü‘XÁÉéÓæî~ý|vñ™KHë·»YtnfÞ—{š| ¶ò’a“xœP±jÃ0Ýõ2$Ç’-ÛR(¥CR´Pâ]%ë›Ê’±””þ}ÕÐRè–Nw÷Þ»÷¸‹3 6"µ®iW%)UYiÎ¡‚WÄ(BÐJðMr±L°–”6BÉâ‹ÒP
MYŒDðŽ±‚!yŠ½Ÿqá·prÇ®oñcJ½%|mîƒCâÖï0­YÍE#Doˆ %tb„5­EÅ¾ÐÁ»V2ôY’Lâà\ˆÒZy&{<<§¨9‚FÈÏÃÑI‹Ÿä˜ÁÂ>U¬¬¿¬ År»k_¶ûÃj±|>ìö¯«<ôéaùŸ¸ü·¹;€P›@gÞ˜L}l®;}>N’7•3xœmRMs¢@½ó+¦jV>¶’­0JÀ(¨QLô²50âÇ€#â¯_’ÔÞÒ§×Ýï½>¼nc€P‡i”9Ðqlh&Ä0ÒÌJhŠ˜¦§Ë $ÄT*"o€©Z’ ¨ÄfIª›™fi½1Ýé‰š%ŽMúÏ·‰a!CµKE)54âP«?é˜ºm¦i15³´!…ÈfW
0"¼`GðNrÎx¤íx®eÍî)û ÙûAÃDT¨ªJZžNEÓôd¿h™€G^
V»ç¼hv2¹ï	?Èò*¯‹Ü}öüqæþ,Ç~ä®â7ïk® ´5N±ëâ¡ë.ðâµ¯‹lø†'ÖnoÌ.º·®ë¦›±ë.¤›«’n\Ø-†hÙá9Û+`R2ÖãÓ,æ,r¬œYXÞ_¨xÀî©!¤{~&Ô›¸æî	+÷¾°íøµºõ]0<O¶f]êqLg¢ÚxuÀ½ÃeYjÇ6iÑNÎ©tFòd½ïp4uØN?öPÀ9²›÷ú!ð¯Ë0r+‰¶åÚñ¶™Ž>&$”Åfºžp¿E•³Ñ£ˆ3²|³ñ-›³oQ€‹§èÜN_‡o¡]ß¼ÁVžgåî€çZ|(ñ$Xv~èÛØH½8	Ë:XtU¿`gWÅ
x-àm³Òtû°+öp´ø²õÚÝp¹¿¼¦èÒ²õðš¾Ì.øtvÖjÌë$.†Íe5P›üIO©f…Êwf^4ú91%d"g ’Ç#ì,YÝ€_Ð0T‰ò\!yE8-‡è¡:Ê¼à¡©(é‰Þ}·õoàR
¾ðù_=¿=¦eúüÕ ‚œxœŽ»NÄ0E{Åô(QlÇN¼BhWKEKA=öŒƒÑÆ‰G‚¿Çˆ†‚ÑÝÇÜ£)3 9VÄN:7Jë±ïC<ÃJ‡ÈQJ”¦G+VÜ8°ªWÞŽìƒ¶QªÎkWßEïFd#ð(¯Ë—íÈ+fJ˜á	îq}k±FççýÈS–ù¤í#µ-ÜuFw¢¦s*…ÿ»a¦f½SÊû	.Dðmà\i;TMK¢vLðòxýíâ¥-ïbº±ÏiÊLÍcã?NúP|¸ºuû’4xœm’Ks£:„÷ü
UÝe*‰@S3·lŒ!øñØ;âý² CüëÇ“[w7½ê>õU÷ 8ŠF *ŠYI¢i*NäçpÁ(£@9áPYH¼ b	'˜!YY„•þÁsÊbÄ4¬†*…X•QBþçqeYŽI#¦rBaªÄR(V£Pe²
‘J°ÄÆ!kX±&ç8±´á|§/ó³{þó¬â˜@ž ¡µuÃ¶òa3†à{Ó
ÞUŸ?Ó|ÈÆðåüå-íÒ>OÁó¦eïÀÁ:€£míô÷À7¿îÀÔ‘¡ëÆR×=Ãsòí8£¥o¼-²ïoHØ“®Û¿R[·U‘¦Z*œzŽþ#eúÔ®oK	ˆÀ,-rªÄÑ·ŸÔ¹Éµl£ðÌw´ñ§]ùN;ìY•ðÜÙcºDSŒ6ü:ðÚŽðy+WžY÷;3ÒàöŸmãà×F|Ç¦ãÉÓîÝE°´ç"çU¼rÝS"_¡ëžÓÜŠN×ëy¹¤×B1ýÍv8uL_–úqb4p›Ò¹çŸöÇšŸ3gshÕ…ôâGa¸•w±%ÐèZ5cû”Öå`õûhlÉñ®÷NÚuÙôÄx+x@áÌöjíW–M’Ê¤|ÃM\#	œftÈúÞî¹ï_³,ØdI€àý¢eeJ…yË*÷5™£»t:ñ†©ôÛíz¥gý	üX6é¿ÎÌÝêïI[.Rº±ª€à×‘÷øGÆhÑÖ`ïlàåkÑ·Ís?ˆ¼I{Ijn5îaø¶¬äÀ9îw äŸ=ˆÚ¦ÏûáÏ–§Ç ÀU9_æß>òžxœKNÄ0÷>Eï£îø›Bˆ%°€t<mÅ
IFNó==aŽÀ®ôTµxÚD ë=JŽÁæB]É÷ÁŠ"9qBT»hÎÜdQ°\Ä;¶ÔÅ¡O´óîKâ“åÞ…!$tlñ†ßu\¼®3opÿÃ*Üèp»&§‘õ×ù(¸è¼õá
	Ñìë\Uå_±Y>f¹>·ºèyxxy~‚I¾7Èë²ÕMÿn|Vá¢æ·
tø2¿÷¿ST’3xœm’Iâ0…ïù–æˆzÈbg‘ºG@€4–°ßœØIYÀvðëfFsê:•ê½z—ïIN)0uÕ!´pœÓRUÕÑQjSÙ1´(Ä:±)„ÄVÎ˜ÓJ-ÁŽQŒuld¥Ø‰c=6jiÐ±©JL#ÆÄ"ÿýÄ6,èhºfèFŠLbÇÆ+ž8D3&)Â0¥ØTp#óšƒ®**À’²Š&'
ÞógÎ§hýIè/ ™Ð‚PCÈ USU%©Ë’II929jbð^Õœž‹ûgÆdÞÄ?Ÿ†oÞ²s&XÞ^ãùÃ óáDÁ0tWë¥ÿç® ´ÂK<×õz®»ð_lšâeoé­ügWƒ­ë–ü¸AÿQÂéÎOûyÖ×:þ“t§ g´g&‚“fàã¦ã‹ãÃ\ïFk'ŒÆ0jï*ÚF!Ñº>W½Ÿ®ö—"Ÿªé.ëÞù4QÀ8ÚyoµY©%í²(™^·§†E7CÇcÒÊ;sY–^ž·p¨KÑ¿£¿j'ž ÔÛ«V·(|ç¶ÐºÃ\?ÊõWA¶A4º«½ÌÌ¹9ÂÖìZ^×åî¾ØšÖŽ/–^¶c¹ºQ@¸µQg©_fbàe2d¨p‰yÞÌ'Uì4é-è“kÔ”»<´9j^½ž5_Ž½Ôj¹ìã£¡˜Åx)dç‘áJýþAlŸ´6[V›ôa7KzI¶Žî·¸ŸÖn>™ö²fk(à£e“XùËÌûßS¦”gœ›¢ œ^*$ø¡AÃ)¯KóÅê&’·êR)Ê€Ýš38S.˜¯Î¾¤úú¬TRW’×Eñ\3úÔÿe”"xœ•Íj!…÷>ÅÝ7	jœ¿PJ—]ÚÒ¸ê5#M4U'!o_é@šB¡t)~ç;GK"‚VòÁ®U‡ÚÙ¶ãœ²q=É¦×ª#…Òö¤”íÙ…V¸QF1Õ‚¬#ãSItV6J6k±n;†Sc‚'2¼dÞ	îÇêyÌS¦•¥­ê”B¶pÇçÌÄÃÁ—BÿO2‡:y“7`Æ WÛ­Ï&ž(]ÀÄPRÜï«Ø‡\-DyÒùROØ>o{þc¢›Ôõ>Ãˆ'„iF~P"œ	L]û®/c%‹ÉÞXkÎ#…y¨»/øH)ûª…ý6;/@OViš×ÔÖ¹Ë»¹ê:Êg@öË3VŒ½ú] »ŒÎ-õeóÇ/³O„ø¹¦™xœ±NÄ0D{Å– t§ub;ñ	!Jjõim¯/‰ÅpO®‡v4oô4ue†Þ+Õ Œš.PO1’C‡-;ÒZRZbtb¡•séÉö¤Öl{ÝE²Î5®õÜIe{Æ`ZG¡‚¶:Ì+¼PÎ\à•SfÿÁð8ì;Ïe+|üÒ¨ÑvÆÀJDáçiJµò¿H¥$Z}#…ÛÒNð¾ªcrùsbøZiâÖ–m!eˆéâ.ø[:ÇýŠ³¯ëxw””k©<X¨å(Ä[ºd‡9Æƒ»žþP?QÆnf‘4xœm’Ër£0E÷|…ªf™Éñ0•LbŒ_Á8¶ñfJ€r@€@vì¯'©Ù¥WÝ÷žîÍíAœZ]ulJÕ4·TÓPSÛÆ¹ej†3Ã†Â†ÒbAø RhgN®"=…4ÍRêØrLƒ3ÃfnQÇ2õŸÏL‘…ìÔT‰f©)Í4d©ÔÔU‚ôªAêd±,‡²`Œ9#ˆqÁ‰ wùé³yèeO~åä€È°ªšnT¨ªJÖÔ5†+°a*SpÇAÚêüP°¡”é¯+ðÍZÑ=+ÀíGy~0AD`3Bw»{ö?u(àÔ{™çºÞ£ë®½õœ=e>>{«<«£.f§«±Éfnën|ÜQ‡µ›uS½Ng¨<* ©Bæci³ÑqÚúÉ¶‹<+I]ºƒw®Ê}ÓµhÁQ0éáÂ[E§Í|J—Ò9â©7Þê
èÞF«å*nÞÅttxN½E‚Ç›®|E¨úÙ¼Ùp1=žmŸû[ó”¯õ÷ãøeåí¥5mD¯ë<«±7ŠãTóŠ1Z­o¼·Ín·º…¯‰Ê]=ß,çä´7‹úëýpÙ…(QÀ›ó.gEÓ¬±ËpîP·«õz99Gt²èÍýÅ¥7Ìàe›úîKLÜëõ¤Œ[V¦ª Ýwb+I¶¸ÄoÜëëM–ËãÁ“ô¾“«TcamÝ’I4Jj?ô:}`Å½î/ÍªU¾2óÃñ÷‰)OD´²ª€ $ý ~@C7 M\!y‹yÎ0‡æ¨­dÁø_ˆ%«óÛ¯±ÿÜ<ƒÀ¼ÏÏ‚#“5øòÁÇË]Oôÿ s›xœ»NÄ0E{ÅôÈ¯ÄÎ
!¶¥å&ö$k´q"gÌãï	¢A‚ÑÞÇ¹º\ˆÀÙŽ<vZ:77h4V:5ŽZbðÚGŠÐFÊÊØ ”9²Êë®—v´ÎNV¢ŸÐûŽ¬ÑjÀÁ¬|YœKÍæ˜0Ã#ÜáöÜâ!=ì¸ì5ÏmX—{Pý1Òøndg¤8Ô%1Óû",±Ù®uNy?Á9Fà‚y”ã-¼¤Â©.ðåÃçÖ1°Q·ˆL¾•[~c˜Ò•à5ñåŠøAyJs¦Ø¬ÓÔŒï§?Vä€—ž2xœm’Io£@…ïüŠ–æèIÜì %£€ÍâØØ`'äÖ4ÝÐ6ûbÿúa2ÒÌ%uzõô•êIU}K 2&„—y,(0‘Eª«S—Ä‰¬ªH‘¨QSH(W£–”=àE	ó¼c•×YR,©• Ò(Ò4™H¢ÀëH×þñ†X(¯OTT(*q,é¢®ÅDLP,PAOD(phè³ªKT2’ƒw”–¤OÉõK¼tCGòðÊ´oâÌ !‡«¢`}?ÁëÝ!OeÕ’:_RÖgCü8ßŒ¥uÚ±<ü)ÓrV[à;>WÎÖ8¼í­/Ÿ¸v&6Ã\F`¯ÌÃµ°Ø›k5;I»‹Ø®®†±áÊ°¼Äð6’wï;äêgÛ—Ö{Èmä¬ÞÛVt)œK •Æ}¥™y÷½•Ï)5]µ´†°á³ù‡¼ÕŸ*F¼¢Z&²¦>ÊqcÌð)	ÇÛé±^k¼'kù^mÍPS³·¢vW3â›È=¨ÕÍå þ\¨³ ²M»QÅÓ0;Ë:YñÝùh›;»òmû†=g¶Yí‚~»¹,µÈx½ž‚õ±ß4Èëëj;žï‘ëÖuÑ†ÒÛG‘¦â¥Kæ•vÁaÌp®‡Pš›Du}Çqs.h6²6e Y1[ôŽ–½Ž°£·Ev'"R’ŒY6÷6¯‡`ô¬WØ¹ÛîßU×]Dòíl•§…è=sàùvô¦(_·±¶Ëï/Æy¤M	¨‡<-iÒõà/‰< mU –¢ëœ²ÛC7v¸*iÂZŽs«égÀç'èbVN 2åoARü‰š0xœ’MÔ0†ïù¾q`§ÓÙ~mWÄe%Xö°\ØÚ¤JÒõßãvgÄÂ‰›Ûß×r
Ì@]›c¡‹*Ç2/j£‰ªFWeÞµdªÒ’n[5a`— à²&]aCÝáÎ´‡»².°©ÊVçÒE‹EskLaÎ©÷>¡³<À3xGç-øçÈñ{8ÔeSÞ6u]ÃÛüçÊøq´)ñ´*w»öÆ;Ç&ÝÃG"ðS²ÞAò'6¶[`ÂÔoï%&M”ú‚n²1¡ÇN‰	RÏ0Ç #‡£ü:‚žáßÍ`#Xƒ²öR¼×Öeð ŸŒ?æ˜„Œ'ëŽÒñyÓq§7+AFÓ,`TkNÏvx­]èþ|up…\¬ñEÏ”Ç°dJ=úÄ7/Iì”¢P¢±wÕ#WJ\1«ì}ìÁµ…lzŸÁ£w¾[9‘/ÅrÒ|â ízo_Ÿ¾‹ä$6`
h’5¬DòŸ+•‹FÑ:ÖýŒp–]þµá­R3;eÇiàQ®Ž)ƒÏÛ–(pŒ-6Æ™_A&?Á<‰ñ'+§B;ßu;½Üÿë’Ô/¼‘	’•!xœ?OÃ0ÄwŠ·1ÐV¶ã8q…, 1"'~n,»òP¿=-lO§»ß=]Žˆ@Q5²AT=Ô m!eFƒh:9raX¯ºŽuDŸÁ¢ªaˆœuLiÑJÑvFðÞ
Ž”qnDk-gD—<…÷Ú;œáU<F¸1ŸßÇ]*	woIÑ5²W}×”QJÆ°,.gü_Tp©½D‰ÿXì¶‡1xcÞÃCðõ‰tJU±ÆÅ¤Áùz€öÎ'!/Â¯X7c‚Ú“ŽÆ`ÐÀQç)­¸\í+Ï.ÎÊ"«Xy::L;xÔï¸úÒ³D=Ì¸#ä)dÐó|Iúº2ä ±øj¡¦_øñíìK0”¼ö×‰|rUñù©m`Æ|• GÔgøŠHzYûž]]ÍlƒµÛá´ÿkTò`³±ežxœ½nÃ0„w=÷"m9¶E‡Û!3%R± Erõƒ"o_5YººÁãGòJb†I‘gžÕ<ÊÖFš¥—‹­Ôz¢¦ç^l˜8`‹µ¤ã0²’R-‡~š:){5,>tÝ2*3
¬e	^08öpÂsàôyÏ¹fÞ?A?³œÔ<ðÐõ]'L¼\\)üQaQ'gò^ch»ó5›,¹¶•kÌ%|À@7í¬óœ…8­~º]†Ì¨&Î «óeåß×X=	ÍàB.è=Ô@íê²6Ö†eÝÃoßA˜L¤æûnÞ€èsu#,wES/-r,.†½ï®½O»híN_¥#¾ 0@ž±“xœ½n!„{žb»I,ðýpgEQ¤äR¤^`É!a8gËo¸ÂRªHiVhg†ù $" =YRc/µ°VK«z=3 :Öi&ËQp”=²…–°‡YB¡0’ãÜO4+ÛGÉçAL
+»áV–˜àƒ#_ø(Á‹¹î‡·¼e:zQ«»QJ>À#œ3ÏgW
ý#ÊÔæ¼9Á{\oà‚ö›!@5Xç)C‰°;À¸Äfí\K¥¼b(ÐûÝÙŒÞ]¶`js*†¤¸AŠ±<±²l®UÆðP`MñâZ%dÂ¤X±,`ëýe¡;ÐÎrØ!Ù¯]«mÆ;ã±OWßlž£µÏêvúëKØ#UšxœÌ1n1@ÑÞ§˜Ù¬g#„(rR¤DãõV‚5²½Š¸}P.‰î7ï÷ª
ˆÑ¡
Eq)fŽÙž8ðÆSÜ±{…yHÕ¹
Š'¬å0zQ$‹•S98&ŸÔnƒŒ,ýZ*|Ê<é¾å2k…}úù‹c[š~$=€#¿­°²ÎZ3–û}ê]ß &.Ó-íà¤­Ô’Êxne©£6c¾¦—Në’ó:>wÿÍÍ/K’Wô–2xœm‘Ï“š0 …ïü™éÑÙ
	˜i;DÔU]]åHX~™Y÷¯ï¶Þö¾yó½ÓS‚1@9·ÛÄ¹‹±AmÚÔ¶¹…ˆi˜Ür2æºÍÒz"X«€E\"“Pl3ÄMnÛØ´¨Au!71wµŒÿ>b™iñÜ5>|—g™	þXâŒéØ…¹K\ÊÌ2ªì˜‘¶b5x%EËøFÇ¿ðS’}¥ì0°i#-‚‰nèº–wMS)õ!G•ZøÖv‚õõãgQ©rÈ¾~ŸÌŠ¾UžþÄ£evÑ–Qì½÷áß^¥Ÿûžçž—øÉªÚl–›`ï?ÛåÕÜÞ‘XŽž÷ˆåÒ[,•—?Šõ…­†÷ëþØè"RÐÙý.:­7ëkÖßâYx¿ö†8Æò •”ùÉîõbÁ4¼Nßå¹¸Mqwv*{r|m°·ÇƒUGWs¸ŸñÙB‘3Þóã
†š”‹5"Þia‹²…uÜò—ðpéH-Òsñ®}Ðtº éÇðÔÌÈ›t>®ŽÓÜŸ,½zqï°^EJ/:tzd[½·[Ô<Ï­íJh€'–+ÌaPÎäU
êußŽé.zÓÉmŸ[ñ},šf%odøRÎOÃt»§ÄÁÌÛ†‰V~©Öª^³­™§­$=òªîºtNnÿ<åb¹ý¾OœD:‡æ?¢lµÖ“´¦ÒÙ,¿kà;í¶íßga<ûü1mÃDÁ@?Ô5ì60©ÀÃ„à¢k@C„ªÚ§ŒÕ¤-˜˜òêíI=úNÓæÕøCà	”²S@u ì¤ú1mø}›xœ¥ÍKjÃ0à½N1pE#Ù*¡”,²ë*'[#Û`[A™@rûšÐ”n?þ‡VpŒÉJö„œr$Œ½#ôG"ç{9Z£ëZ“¹q•MÁ³g
â»8‹è÷d·—s´] $ØFë?t*¾¹ê¼ÁYÞF©pZßpèá+É²†²~‚Ô:"k4Hˆf×uV•ÿ­˜Ëü}Ý
40Ý‹‚˜Ê]¹Îã&©)97ýëã'æ˜›b–’2xœm’Ër£0E÷|…ªféJ,Q•LüÄlüÊN16`ñ²ùúñdjvéUWßÓ«{jÁ9ˆ°"®hŠB‚9F†b-¦LG2‘¬Cª (•Tð¼˜bªjAHŒP¥kcÆI±!M8ÔýçCNÖ‚UQdP$ÇLÅÐPƒ!EÕ˜±l@]¢M}*Ó<å°§IÎx‹ºïå£j*þñß@ÖTiŠ¬ë` e¥°¸^Óº~Â³´ž7¼å…àååñ‘¤õ©a¯Oà‡·¤Lª4/ÇšÌì%ðfØØ³¥l×“ï»$ÐUVh™¦52Mßò©ëŽ¬ÑÚúÔOguÕ"awÏðèÚ¦‰ñx+?¶ÇS´Ø_°Þ†·²‘@ÅÏÁ¹ÚÈ›lè×ž>kWY”¹Ø§åì¾Çý6ðé£êNP>7Jã gê¦
éç²î³ºðZÿ<uZm®÷Öš¸^…ÎëñfYöc]	›}¸LÑ)ÉøáH6wÆ–Åp°\ç³Õñ(»þòˆ›Žî­=‚$ô±]±¬²äáí§ug×<æÖä+fµ·À>É›ÍnáH@Ê‰u®2Ÿ:½=¾	_g¹It¸+±PWóã<¿„/ÙY64ó…[T¡ºÕ	Ga—wðOŽ—Ã®¤h’y5É÷öuÝÎ_Å¬Óç„è¹„¹PºZŒ¯·WìZõ×|—e±û.wbgXú×Ùd9þ¹1Éå"á l. ø­áU~ÉOÝ@,Š+¨YOkžãôÎ«ù‰§O_ÀS’2½<%ê¨ÈÓ<ßù„Rø´˜$xœPËNÃ0¼û+öV4õ£yU~‰ÉN6EìD¶Sh%þDœ{vgf'8DhÒR4È3ÎeY¤˜ŠrY§Y+U.$U”
–SÉ%£thäÈT!”hË<ãiÙRž
*P¥R9Ï•*™àE!‰œB78¸Œôp³—Ÿá*¨pí°édHêÁ¬eË\¤YÊ–pA¥$²F‡€ÿ:&c?m´õƒFõrÜ‚»¡Õ¯è	©{i7Æ^ÆÝK'‡ý.2Þ`Ð5Ô]\ÀŠH’ÅoÅ#˜Û­Á¤®ceÅ+x‘Îj»©Àhß£l"m›X›z°«">`5jvK0´:„ÑáV“‡™ngð0¿?©Ì¿©<ø‡arÐ¹Õ‰|úkfÊ«¼:¤ˆ½$ìÐá§ð`ïtgÑÖ@ÏÉÑï§v¹½Ÿ,xœÛNÜ0†ïýs¹«’ÅÙÄ9PÅ÷•zZkÖžÔÄŽBQ^'ÁÞ"z ‰‘lÆ3ÿ|¿ÝD¼Ly]P­9%æâ6æ
ó]‘*Rb«óRˆ¢ÐlÄ‰ŒÓŒÎ‹R¥H"ãBì¨ÐuY—q‘¥šx^Æ	ÃÅµv‚ÏvÀNoÐÑw8r»}òi"Ý¢Û(;œ@œ¥yâw¤[øÀcÎ™¯sô®a6öKÓ™ùðJ«
Îºk@XfŠ°ö‚Qí-3›Íá³¶p"s9ÐÆOœ¨£\g<ÜýlÈIM—rhï^ªÝ,5:|¸»¯^“‰ó8­’¸‚+œLgš
FÛ™`Ék¶z’£›¼F Ó°G.T/¢//‘¿2€ 	·ðg8…}oÕª§d+•j\VOk¢“žLãÚõÌÝÙz%åR¬×Ù“Âßš/ãÛÿÇø«cU{Bpö¹Ï–&úå,ùEèZ{¯¡þ†cÒ—á·–4xœmSÉn£@½ó-ÍeFV‚Ùa”Œ¶ƒ‰Wlã%—¨é.¶¦i¼ðõãÌrKÝêé½ª'½*Áf:¶IqBØšê˜†a™¤«Ý[›jL±Bï¸Ks(²’ÄéÆFb$‰¥Ø‰evcÕ¼+L B1Õ‡Ú&Víÿ|ˆb+†“X†¡¨¦ma&ª
 Š‘Ä÷½:±-â`	7"-9â¢€- +€=¥÷9/uSÃ#…_H1uëÓ¦­¢NWév%Ræy&pägbØÄè©(9°ÓíeŸ‰´‰ï„/d{¶¯³=zø,oàS4÷çhøSw-p	IèR{Äs]¯çº¡¾e“¿ì-¼‘•ôÙYãÁÅu£I¸.Þû”]š6[²õê©h\	uÛ±úªrk½®™™åIÄË#O/áÔïL†c2‚qUnîðív3Õíqgž~RúãJB«¢Éê9tœp·+Ö¢tHç¶>° Š“rÊëŠV¸—_–‹k<«(œÊ÷4¶jÛ¬•«TB<jzu?“#óžuõý~j›ž0XªëÙhu‘/Üëqg—\ ‡ýtjì°!ßNƒë&ßÉ:¿Ú¹­›j±ŸùújºaÙ¨æžã9ÙxšuàÝºö7¼]-ÅßZ#™:39}U%4‹ÊÁpz™°Ýéu˜»·M˜—u¥K£Ù£Qy]L(²à½
ú\Ìf=w4ªeŸ×þ|ò,¡gæ&ýÍl0í˜4¾ÄšÓ	q¨¨ú¦èª^æHÄ-p”Iy?3"8ˆ†¤¤ IÿÀŸh	çE‰D‰Zà%*TœóäSúA?}ÿêæþ$uýžä	dŸ!xœ‘MOÃ0†ïù¾1[?FÓ!üvGnâ¬ÑÒdJÜññëÉ¶Þ¸qˆ”Ø~ýøu8ÁVöÔh”¢n[÷²iZ©Êm~ö(ëAc¥s\âˆ‘<CkL_iŒi«Î´²j™’HiÔÛ¦×Äº8ó"ìÂ„	Þ~é O<\./‘ôˆ¼Qaz†J>´uÛUu	weU–"G'ËLÿgµ÷¤øÞ‰bô8ÀÅ Áƒ?MæµþPÝêÒœ¦$Än$pvÈyºIÊ&»"ñýµ×jQÞÂçh‰OÖï`ÊèEðÁ¯/å't3Î'Ç]àÁ€BçXŸ¬¦xõ’õŠ®ôÅG†_±ié}ŒvÂhÝ÷=Lx ì ’°œ‡>ƒHŸ].³m„xÏ_Éå½i™é±(ö–Çy8ï¯pÖÏ_ë³éb1_gçŠº¯Å/Ê§¶iœ3xœmRÉ’›0¼óªÊÑI@l©™Ô°ð¾ŒÇË%%ñ° cûëãq*·yïðºúuŸº[ÁÐ-j(!˜"U1˜Y«ºEUh"¦1ÃÀÁIlJ5¬lNÕ„¨jb(ˆbl¢˜Ü—RS1!±`ŒÁADû¯W4hAS¡F¬2j@„Ó(Ä*F8¶#¶bÈÔc‰tí±À#eÆr°%¼d<Ñþ^š®a?)ûŽRÀ "¥¤*Š¬mïâ kÃ.Oe%X__xÖ»øç]ð…×¼É8øñ9ŽD3°`3ûu³ò¼$Ð7NâØ¶ãÚöÒYŽ²I?<º+glOx~VEÔÛ¶à~d‡}òõU³K¸ð‹·èý= ÊK@ÑDFò6½]&áhZ%µòž¹ÚP½M½ÙUË]fVš³¡Û­û±=Ñýeç+ê° ™ÌmJ]¶;;º=Öà|Â'ênR¬ƒ9gÂèšQ!èp³÷ƒ@^·‡¸c©çô¥5•WÃ™nqogëÕŒÏ³vl.Þ‚`”QïÝo”ž–9Ýpÿ½µK¸k‚M­ÀÂÎu§ïÍ‹èšâuJ ñ×îXNýyÉø2‹ÈYíFd‹÷‹EÔaÝ kÈüÌµB>¥“óxæ
}Ì“0/‚Þ\%°ì5µÝïHœ[³Üöi´­ÓP¾ì¯¬ÅbH¼I»‚"ßTŠf
!—½ðœ­ñ©y–ÀóÀËoÒ¿Ìü™÷ubÒ”	Î@Ýå9ì£cM¾!ŒLŠª ¶èÊš”4#%Òäöþmþ (IôØ”‚é½ŒIU_¿ƒ3Yz¿´)ÀgÛîîæ/#¦\–xœ½nÃ0„w=÷&†~lË	‚"2è”¡3eR‰[6,¹ß¾®çÝøx‡»<1ÃAÖ®d¬<k‡¦lk­‰š¬âÚT¥òÆ6ŒŽÅˆÇgŒõMSIK¾¥¦jkéZ£´•ž´.«ÆYœóc˜à2ÍqÄH#|À	Çg«tNØ§9Þ‹vèßAÕe}PÒjo²2R¬jræ	®wð…÷¸Ò‰^ÛqNsâ‚x³Z]ÚJÕ«UI)„›CGG¸A;ŒË®·Ï|óü¿ÁkzNC„í[ˆŠÀ‡Ž!$˜GÂÌ¯ùÕ-‰ø¯ØÌ)'!na-GûÁû½[ŽÿÚ.~ ø|±xœ½nÃ0„w=÷"†þA‘ºvèL‹Tê¢–Kn‘·¯âNÝº?ÜñÈº2ƒ±CïØ[4ÅäÈ£IG¥Ñ;¥£Ä@ÎrÊ‹WÎ(H¥I8X—LU4C²9šåÐ½wG'p«ïó
Oë–Ì4b†8ãòÑaC—‚SÙòµ‹óôÊ[ß+i­†éŒNc­¼Â3æ‘?á¯¹MgúÞÅ¥l…;â=´NÉUR
Q¹Ôr‚/^Çtƒû¦Vw
ÿv	HÄ©ù×-ÄëØjè0§tn§}!~ j(jÀ“xœ½nÃ0„w=÷"†$ëÏAP$@¦™2t¦LÚqQ+%£èÛWNû ÝŽG|ä]Y˜¡§HŠbÐBf©=wÆ¡”}hÉsJ+mÅNÃ”!š‚ôeh­ñ}è¹w‘0v¨•óVàZn÷NËš˜hÂopÀÇGƒÕ:fœóšÆ¦¿Ï¯ œq’Êzx‘¶•¢ºóT
/pÆ4ñ'¼ã˜êt ¯§8æ5sCüD½6ÞJ]Q%¥…sÉ{8Á&a¨)Î×l7k!ÎX®\à‚	Gž·ZË_¢ÇÌâ†"315B\§ú™v÷aØÅïý¿Š‰ÂpƒŸxœO»nÃ0ÜýÜ‹´^¶‚ H€N];t¦E*uQË†%£ÈßWI×ÝŽ‡{±l"àØÛÑheMŒ£Ò½¶Ñ….úA¬¥ ‚3ØºYi“T ÕH#KÄQ‚ë»`˜Œ	Á²ïØâè¼â†öò±lpÙö´Râ‰¼Â‰ÖÏ–*uÎ4ç=]Û°ÌÏÐ9ã<ú=<¡ÕØTvžJ‘^(MòïtMõ:ñ÷œóž¥eyX{ezãUµvˆMS$—|„3Ü!Äº",ëî¡uÉ¯ebþCñ6Õ>,1ÆÛñ_O4?x®j„‘xœŽ»NÄ0E{Åô(QŽ+„Ø––/˜Ø3IÐÆ¶bGÚü=¦¤C·¹ºS"°š´×¦Ÿ˜Ý8Z6^9TÎ[ÒFö³¤Y-EÂƒBizVØ9Íó8™Á²f Éè&7*%{åyð“x–5p?Î0ø|À+¦¯«õžqÏgXZ÷7è•T¶SF+xé¦±ÕÝ·Rè¿}Q(—|ÞžP®+JÕŽ¥IWB¸ÃBÊJðóWO Äß)À,R¥Ø)ÇÐÎçöðuóAB|nK ßDæf¾nÂß–îx*xœQËŽÔ0¼û+ú6¼&Ø™ÄÙ„‡8páÌJ{@€»=±”ØƒÛ™ÑHö3à÷öKˆ³hv$|qK]U]Õ"" àh¸Ô»åÛídcÛ+¡ª1½nm‰µ}©Jäì "úºæRÖîeiÚV«¾5¦2UÓ´FH)Ëš£*EÝ25§!Dx¯¼ÃnÔÞc„×æ´ïh&,¾!«†‹¦äžsÁ9Óaš\JøTæv ƒ§äìŽ*:ÕÎÃè(}¥¹§31v=à‚šn\„s1*ç	N.ŒÅË¬Sè>x°³×Éw·?iÜÝþì!Ëª¹êDÛÁIEïü¾Eäö~Ê+3Ž´Š†²Äêm!Ã·YÎºe¾a‚Cp>gN*î1A:>mo~SÑl/xúÌ ƒïðçóð(Å¨‡øÄàÑiôjÂ°ñ›§¯Ø=æoÀÆàà‚½w°Yí‚T„g  iÙ\Ä4¯)/®W
Ë=Ê
™[Àõ0ÓÃ-rÓ_.R0öqYÏ’+X»íÏÝ¿ŽÍ~ÐÞØxœOK1ÅïùC/*²%ÉþMÔ›7Ï“ÌÄ¶É²É"ýönkO"Þ†7¼7¿yefïŒ’MÏ–{e[­HÝ]_{ã¼k¥j:m1áÌ±À@¦•ƒ³èÚš¼ÈÍNj‰HÔKvƒo­¸”}šá	càÞñ#òwôyò’yK|ªkz©:-¸•JJáÒáJáX…]ÂH;xŽhGJ.ÃY‚a™ËEÌnSâñ|Z£»ÚZG57p½¹¤¼e›ÒÈ¡§µªõ“½úÎ$ö¸Œes#B,s¢Å1Â‰#Á"CšJH«=ÿdÚÂ—«|Yˆ²ù„YöüêVˆ×°~OUò¾²ÇÝ_åˆ/ws›ÅxœËJÄ@E÷ýµ—„êw2âÂ?qÝ*mHÒ¡§3ƒï ºÜ]÷ÜÛ¤dœ£ÀœÍŽ’Q'öj²4i‹Y±×Z‹=4Ú:DixÒ”f%qâ˜4i?±E©ÓŒÆ˜»iÕœQ„£ÔÏa+´À[xß¨Á9ß¾ÃÓå¸Ð˜é¤3¥õFÁJD‘êº–ÞéªˆGYò	^÷:ÁRâv]	n-ìBüÀ^á*GZrPù·3
ñRîëy¨ÌCü<ýu.¾ Ósbª”2xœmSÉr£0½óªšc*A€ÄR•LØ¶ñÇ7	‚Á€Aì¯g–[úÒK½~ïðºEËH¬*†¢"œ¨”ªDC&¡ã{­é˜ÀD%,E†&5¤e• 1M%:Q=VSªbë	ÖthBCcq-þÇëµ,l–FU˜LWR#MRÃÄÚ]1¥–H/xÝŸTë@ÄòŠÅ¿xæwž×®ïØSÂ~EGT †:x¸g(Åõé”ÁZàåÂï)x®ê–5åõ5ËïéÓðÍZÖd]žÇ¯p\/ÁÊ[Mà…öv¹æÀÐ9±cÛÎÄ¶×Îz–ÏÕÅ|9sƒhyÑÚ`°mÈƒÀö…2Õ<ï¸Â|<O.âò±œ/	°èSæ¢°J‡æ­LV·êü9­ì2
]¨¥yiWælA–¨œo´ybŽ®ìjË“–Ú=ü/L	
kŸö§rWW™-K–Þn×ÃÖ‹gE¤ÄG«_$=Õ÷6Mwô0ú›ƒr%¢ÉªÑëLuUò)ÝïÓƒçýF3+•—Í’²pùË·@‹Ë£.šÙ,,‡‹ýE~»æµ n22.2õˆ\ÃLk‹V<%½ãŽPK,[ŒÁíñ_/ÏçÓÉ:£ÞZw“wžäÝAá‡á6ÝÔU3œoîËF‹ô½2Ù1_£ápõ£VŠ­½Ùï+Zøè³0Þöíwé-{‘À‹+vô×37|ûÞ1éµM_– eçžuüP
AÚÖ'ÀÛ‡%“Š<6DpIšæcß ;´ÁW:AÄý/ò®)Éõ77ùy™xœÁNÃ0DïþŠU/¡'qœ¤BˆŠ'ôÖñ¦µšØQ¼)êßãV8 ÁmW3³o´<­«"¯óBU¶0¦ÀR5hTU¥¹ÔJ[ õª.Å„3y,¥N«®Uò6ÊšÆæD¥­i±—ºÖ9ê¦ë.|3¼¡÷áƒœ§îDðtLw^âicér­tÛèJ·ð s)EÆÑ1Ó’µ”)«¾“ÂŸGÚÂ4»T3,»÷DF&èS‘õà"gq1ñ×B¼Þ8 %’i¸[]ÓÙÏvÖ‚¥³ë<Ž8–1ý@ ·¿aV÷ð‰|à¤†‰æáS˜™,p€Á™+âñÆé·ûp“£‹ÑùÇq#ÄÞ<Ù,ô}f.Û?^!¾ 0“E‘xœ•ŽANÃ0E÷>ÅìQ+ÇŽí¤B¨ÝuÅÄfìqc5q¬Äõö‰=bûõþÓ«3(RvšŒóÈ¤[¥;åš¦í¥$Œ¡C/
.œ+ôäÅàÚ`QëU$eœ±Áh+;é4û ûN
Üê0/pÅœy…7N™ýáyØ=çu[ùøÛ:){g-<ÉFJáçiJµòÿŸ‚¶4†|”€•aL”?'†¯‹¿c¡lã)ƒ0ßvÜ#/¯(XXëÒZF|…xO·Ìá0Çx Çé$ñ¶Oj#3xœmRK³š0Ýó+2Ó¥Óš@Òi;å¡ø¸*ˆJë.	£
D”__ïí¢›~«oÎksN[2š¥6´m¬3SOYŠ8f1fÙ©NLÚbÃºv¥µ([a0uže·	˜ŒtœqÛÎ8¡TP"˜aþÓsb°ôõžOãÐ:µ8Â¦8…Fš1Â5ªÚcUŸ–R ¡y)jð-í>žŸjÄ—Tü ˆ`B™:@¡Æ«ËE¶íKÈvªøVVµ¸ÏŸ¹lŠ}y	þcË¯y#sðùýÜq0[0A<VÎv·àÐ@×¸Üu×sœÈærGÞÆ]XÇ^ßzÖ9ÎÛ~4sÆbE¢È-x1@%«$5=4hQÎÉñY\¹}éªýš-}4PÝ6­Ÿ«ìÜÃIKBÒ{kµÈc¼IŸ>^	Ë#¼÷÷;À«p´ÍE8²ÎoÖÀ/£I2•ñ17V\Lfsu;o4ø…ÕéŽXßš}UZ:’ÇH+O2›Aïby§L•.½ßëx¦?\^WF¬O~0YÞv^]GÅøÎæÍ!¢›`_,Ý4dX‹©šÃÒ±ãÞ“Î Óét¸úµnÉù”ÑöxôÝs3[ßó³«s1i&¾…oÉUÏµŽäj’˜‡vÆ¶³y~ÏzÜŒûú>ìdxÅ¥¿-«˜:÷ô°_ 1òeã¥£ïøÐÒþv6^ùÿoL[Š:àªŠÔâ¦DÓ‚O#²ºº ™Ón(KÙ~¦uÞhZy¿ˆ¯`ö$-d/ }ù^”º¼ÖÛ€ì5É+mšöX«?Tþ«ŸxœPKNÃ0Ýû³GœÄMê
!à ±Û“vTÇŽl·NO`¤YÌç}F¯$"(ëõà†µ²FÙ®o­±ÖY«Ñi§m#¥îÖ˜0Q(`êNR;H×Ò½žK5Z™nZÚô}¯%ðXö1Á=&Ï¸”àÚ—æ63UŽn îT×+­Õ®d-¥°q¹ú'u]·ªù¤Špi/“gË8paôüF€ÞÃEƒÏ N…cÈB<ÆT ìéÇó<h¹â4&ˆá¶w>G(høÃjÞÿâü©ZÁÓ¢2ç2‡*fän¼¤‡EþË}Äåe“èÄtæ°ƒÌãä)Uóç<çáVqVæuûW\â6²¦‘xœPMKÄ0½çWÌ]vIš&mú<O“Én MJ3u]½© xÓÛð¾xóx%‚V…Á8k½6FªQõCÓŒì­t”í:­¥Xp¥ÄÐøQißz×)t½&2Z÷fP}ÛSkÝ$¡én|É+<aŠ4Áž­pï¯ßÇcÙ
==€²­íZ©­…;©¤.Ïsd¦ZjÚ«Hï3àùc™¢‹1EŽ8ÅO‚KáËºÁÉÃA^8æT„x½ÌÄè‘±JRˆç‘/ÀFú•èwÐ¼ðM^c:W…ÃÚ®u-ØÊVn¢´ËkêVá¼Õjö‚
1Ô™Ræ£/±~è9„Ãx;ý5€ø6]“=œ3xœm’[¢@…ßùì£™±›[Ó›™Í  Þï/›¶»A¹¨øë×™É¾MÕËÉÉW©¤NÕ¥ rŠ5ÉˆAˆ‰MA1¢GÙ)Tˆ¬ªH*h)ò¨Št
ŽöŠfÈÄÄ…Q¦1E×U¤óHæûÏC$ã½FÎF¤HÝ
ülY0Eaˆ*²ª¨mêÃ¹6Í‘‚5sQ‚7~ûUS‰W.þ ¤«:!†"ÐB‰³,©ë'ì&õ Ùƒ·ü\Š"m?â¤>4û×'ðÃX\ÄUƒ—Ïê9îp
fî„Cwj.–óåK@·ªÇz¦Ù³LsÞ›’ñÃÓ¬ 7Æ‡£ê_•rx3MeâMË'ª*N§Å6IïayÜû™e×˜öóÇ-â®Þ8]x]ºnÜ½“Û£Š‡Ö,íÌ”xtÞÍÚ*ËMºÁ¾½æ•gÕä´æ¸lsá7+ƒ¹µçðÞmtÍæ1¬p2•þ-+Ôf²­ñeÐ$¾cê¤D9xç‰L%ðˆºò5Wëq§Ðû¸‹G^ÍF­óÂiŠOfà\õnT1_ê»÷Gm[Ñ¹h·öE(v)à2LC{ý0´þZ>¦¬CÐ¦;ô–¸r…™MŽ}ÜÙ®¸£©ì¾‚ð2Ž‚ì˜oöÀ¢¥ÉNkWßžkêÕ;¦{½Ê²Ácµ·è`‘î¥Ô›MûÜÑÉñ3æøÛ|~'Þ»ÞwÇüyÐ¯lœ©ýsb’'ÊX€¢ISPŠK#ªüB*Ò@Tž3`–M^Ðœ'4GZ·H›8Éÿæ¢¦E!I,ã/ßVõ|ðù_O¾MÁi-ÀÓâgö5¤ÿ±ŸxœŽÁNÅ E÷|ÅìµP ðbŒnÝúSfè«±”šèßÛ7&nŒ»›“{OnÛ™AŽÖ+­¢”cð)ØA¡ŠÁ%’A{rÚ%
îœ¯’CÇ4Öëà9xÍ&a´qpÎ(GI“vÝvxÞ\0Ó‚^àË['zª¸Ö#Ï}ÜÖGPÎ8¯Vî¤¤8éº´ÆÿÝ‹¸RWÞyÉõßnÒÓTá(„áD´E!27,åÚV¯Ë„¿êW¬01gDL·Ù{ß>š¯Ëœ™º-¥nú¼üé´ø¡{U’4xœmRÉ®ÚJÜû+ZzK’¸Ûv{xJ¢4¶±™î…lžzò žhÛÀåëCrõv9«:uª¤’êôJJàJŒ±ãÙ2z‚:œY(•©eØî“—)fŽeICk©’uÁ(E¦°wå®)%6M{Èµ\iÙœ¥PRìü¯Çyy©iS[ZØ´=žÚÜ .˜YÒä®Á¹F‡>oh]È¼Ñ¬–
|·?àG7tò‹ß²-Û±°áx`„oªªèû§8*úx`àkÝ(Ù–ï?²¢Ïöå)ø‹-k³®ÈÀçß3£é
$Q^¦ÑŠìöÛð¯Üº12ö	ÙŒ7³b†¨îoÇs'?Yë«©¦7B¼|?%A=L'2÷5"½nK Š5 U+ÜÎÊ|œ…=Ë—ÝÏ¨lÚ	»Æ~°Åh±©Š—æÑ,\méÎ÷UõØ%SuÁ¯•òexóÏÃp¬ˆ±Þ«øº`už½ùzÈ‚õzDÇöz›§]yt¼d`½çÃ}ÙÐÍÑò—T»f|u'ûÃÈÑÓËlz_V£ôAâËýx’6€ýü²‹ïâ•Çå‹¬víQ6Ò=iàÐí—z”2¡Ÿg]|õålâç7wvŽa’É©Â¥zÓgÕíT—Äáë½ŽIµŽQ4¯Ÿ"Ÿó*tHd6ü}ˆBG s bçú0“òºâå.¤~ø¹j'g6ïeŠƒ7ÝŸ7ß4ð­G÷Hûè,\oL[J•IÐe	”¼²ëÁ?ÈB&HUS¢†º¥µ(h°Þ–CVÔÿAWÓx%>¬Ý¿€„Tô¨
®š|\Àïg{š;ðÄ¢á¿ ‘n7šxœÎ±NÄ0€á=OákÕ´I“"tâVVžÀ‰^N×´JSoOÐ­ˆÍúerÉÌ`Ykm¦±C§º‰Ðx§dà úÑÖÎA;£÷bÃÌ©@OQ¤È‰ÞÌz¬ž¤U–Õè]èµx”ëšá’´a¢ˆ	Þà·[‹5½î¸ìGš[¿.g£MEôO:QëKáÿÞ‹g<Á}^l÷cŽ	~àªíPgZ½ÇFX˜À/Ô<vö¶|ñÎðËõÁˆß™Vˆ÷8'¦f¡q_ÏúW|Eëz‡‘3xœm’IoÛ0…ïúzi!$&µPR‘‘bG–#Ë¶¼çRµ8Ú7ÛúõuÒö–9½|Þ›¶æÈkªªê„²29ÄHå„ÉRjjŠÆ5Ì„’Ô<o¢S$ËA"Ê0RôÐPeHu‚5C"¡¤AN$ úŸÇˆŠ©®!a¢0¦bÆ Âq ”È‘BCtm\Ô`Lò„§`O¢œ×à!8Š§¦kø}À„¬Iº¡I@„BY–´í¶“vÚQð5/ÓëS”´qGïoÀkQ5Iî>ÊšØŽ–ö¬Û37[ò9€ ÎÅ,Ó´žMse­fÉìÂæÏ¾õªÅ'eÑËµs6Íýhë˜ï¶=õÓSa¿E«ÈI]À«•“M­6Û•ÛW‡‘sÈH”¨=ÐµI·ÜóÉ¾?)¿ˆoK6õìJ¤MåÄ;øa_Íúx…×S¼Ðw1Œó4².ïéµÞÒ¤ð§Kc4:3<Î?¬ž™A>Çr(’ë¶JØ‹u»2²¹z‡c—a$º;;_dƒ±šÄÙIàqƒçªzŸý—ju+‹‹yÙ¼_jÞÛq›ÚiTÈÛ·ŽoïkÓÕóÌ´\	×qµI2¥GÝnö[¦^#=†½%MÝðMª¦ûj0 EkÜ„¯ÅE­Z¢‘8:èÆ‹xÚ™®¡SÛ-ô2Ÿ£CÊè¦©óÌƒó´-Wûeêx”tæ
3›xã¯æ¼Ž8(»45¯:Þ´àÛí™!ë"CP¿K9¥IÓþÎAÈûŒÿÿZ@»„É|gMŠ²MŠðœÐ”ÿøPû€“xœMN1…÷9…—­€*É¤“LU!Kæ (?Nu&©&™ÒÞžuÃ^ØOï}¶Ë„†6\)†¶F Æ!£Îr-“ÂydÞ*‘õ„± ³Þ´“Þùµ´k¥³’)alëŒçØ)Êuãè¹ìÓ}ÁFèqŽ;»Ç4À[¥n³eT­Ä§¬Ç\µ•Mã#°V´’7œwpG;JIŽ¡ügP­[‰§70„\>c3ïÀ‡3,lŽ%¤µpIÈ„6*ÒÏÑ^=åÉƒôÊ±N _7ÜèµU\P'†JÚ¦cª5š6²äŠŠù
e/ïý‚ž©¼zfÏËÇòÇ4tæ²×K]>‡ôûa{ÈŒ2¾ÊµùuéÃ.VKòþÇö§·o…žµ›xœ¥½nÃ …wžâîU"ÀÆ˜¨ªú Ý¬ÎÖ5\$Œ-ƒæíKÆv«ºžóéü”´UÆhß¶
‘“ cz½áÜ)¡]Ã	•$­ÙŠ¥­"-¥Ar®UÚu¦%å­ñ¼ÓMÓ ö¾g¸—Û²ÁPè íéjo´Dø¨­¯Ù
ÞŸ#Ñ{Æ9Wïl—ùD×vZ6Brxáu«êJ¡±iÑ]àsuXb˜Ò1Ü7\ŸÞ|ø_Oq¹®B²qwäØƒ«ïƒŒhK8hLyŒ!—Ñæðˆq±µÃý`Ø®‰Üiñþ4=.»Ã¾¿lŒŠ˜3xœm’Ioâ@…ïþ-ÍeF(¡Ûk{”Œbƒ›ÍìËÍí^0à%íðë‡d4·Ô¡TzõU]Þ«$c ÓØŽ¸es©º™j¤ÅPGÇ6ä4Ö1m‹P®‘dY°M±mÄcÓR!â¦A±¦š¢ÜÐ¸®Ñˆiªjhÿy™ªuÓ‚6µÕÈ° áÈ"8Æ”rBQ¤sb+Q]r	úQ–°+ØE"c¼Ðökx+ë’=Sö óñK5† „Jœ§iRUx˜T£š€—,—¬¸~¼‰¤:Õäù|s&
Q&<}–ëý‡!XùÃ™³Þ,½/]
hK7vÇí9ÎÂ]IÐ¶—ÞÒ[§³>o4é·ŽS¹ïø¹_Ìp§7ß±V5ªÜxë»¡ [·¯¼ÜŠ&îä×ùšÝø ·çÁ0XnëT'[ÂéÄ!!ƒã@Öm:ÓÄ‰~78À®P@Þ$[£ØËÜÝd$jg}Úµj?™–ýÆ­"º/õ8g®Ÿ¼¹ØOivÀ®CxÞ«x¯€P„ˆŒÎ;¨s›‡ÝOÎ›xÅ†£‹ÝôŒÎ1¬Çs³l½tbOEîÒtmäÎl6øPÀe/3u5oAÚ#éÒ¼æj½Šjaøò¦u²ÍLvñ™ØøRô%ÍúóôîìEïf[(PÀx]LÖ¸µ&Ö>»Ì›jÙ/¬(Y·}ä7|ÐGYÁ}kQQ»$š³¾{ØÄïK@WUÀ«÷‘åŸgÞ¬ÿ½cÊ”IÁ@Q_¯@²÷š•øth.ó”1‚øéÊX—'·n+“Š)JÖ¤ì7øìàK¤à±?³<‚\2ÀÙÌ‹*É³_ðoþxœ¥Mj1…÷>…–-%Á3ãßJÐ]N Ûrb˜±ƒÇ“4=}z‚RZèƒ§÷^«D`œ”%ÒÂ¨ „Väì4"
"-#âÂÃ®X)7’t‡£E
AH”$£—ƒ²‘+=M¢‰†áÖ.¥Â©Ñ2œhËg¡2Ãgÿz\ýÀÍ~&úXqY;Ûû²¼Ã „zŽà[ÎY¿.©5ú·Ë·…ðÜp¯©¸í1}ÁK.ÐÃ­±û-×–J~e¬x¿U
kY€cpÆ^Û­œœ£h‰OÊˆq²(•äj2‘ýJ?]c€ó+\kêÍ9šË¨ÖRYÀ†°¦o‚\Zçå–ÆNéœ)ìJŒ;÷8ü-3ûa”ø™3xœm’Is£0„ïü
UÍÑ• ‰}*™ŠÀï+16—)	ŒÃŽ0±ýd©¹åºú}}êç@×¨ÇX?éŒ!ÃØˆKWø¤F–jFÐTŽ$U´á… ªÆL)¶(gLÕ¦[*×âHCºCÝP…R36ÿó(Ž¸Î0ŽâØT³"S®rF-¤i¦®B…êè¤íÄ¹lÀ)Ï@@“‚7à‰õ_â¥íZþÈø€tU7°†A(Eež§B|À^*ÆÝ	<eÃ«ìö’¤âÜ?€bI•´i>Ïy“%X{k°›xKâ¿nG_¾$Ð·vdb;„lìÍ4öiàlí™q¾¨««ÒLzBš#œù˜Žö"ºl·œ•"äçñ4$™ƒIÙ42ößÂ³·sŒÚ=¹Ø;Ðy¹Ëü »wÇYû–’Ê¹¨†éñàŸÒ–o”·•w,¾8íÊ@´©d<Bg¡iA‘ã¶²ÎuÏw×¡"`Dx6Êx
k¿*o«†,K	hÐYf½êìœ›Ë9Éúr‹®Zq••Ë†›ýÞNËdµÍVm9>^îkgþžOa«e+	X6ŽßZõYUJÿÉáõ.ûº—ÝE>í†W°àVçÕÛ.¬Á-t pwõº}—C¹¶j	,×78‹;‡K‹›GÁ˜§¯Åe:vÝKÍß§|V¼$ÃÕœ”Ö F½–¹A_Îšlž%ð¼·¹ôÝÙh9ü¹1iÁ›„ƒªË2Ððºã­ ¿
M7eHÓ-XJ¤ÉçŽö<ý[e]’’åìá[·¿a|ÿÁ·>§ömÿj	ÿãšxœÍKNÄ0EÑ¹WQs”–ãoÜBˆž2eW9íq¢Øb÷±ÄôHïÝv0ƒ³hSRnvD£W2ù¨ƒ3>Í&3E9iÍJbÇƒKcÙ+D‰Œõä‚a›¢]HÒy­5â”&½Ý·nG/;ÊXàžq\ð¤×Škíe¹Äm}Ñg¬	ÞÂ“´ZŠS×Üÿw/âJuØ?ú’K½Âî?9Ã¯ÁOà|­B¼ç¥0[JÃüuýSO|ðŽc}‘2xœm’Ën£@E÷|EK³´ÓÐ†f”Œ6!ŽÇØ»î¦yÄ¼Ÿ¶¿~<Í.µº*ºUÒ­¾åHPŠ50I$³!G2™(E3‰ÒX‘&ÇBMZ^ö j²Jãˆ!*)2DœE˜Å"’4S†5Â¡Fá^%r¬`9’T,KfõîNq,ãX!lq_‚˜H"&¡O«¬H™ñHRò<EÓ—xé†Ž?Fü€
R(I™EQ`UQd}‡­¬(x*«–×ùõ%Éút wà›±¤Nº,Ë0-Ûžåm¹úÇ>0¿úÀÔÌÐuc©ë¾á¿gvÚvËÀpÔômG¹µ']_¸¾­›º^ÛÊ&+sú°¦CVž¹[ ANXÖ×ó§c–ðª6hTcîKrM‡^g[|¼Œ‡*ãå)°µÅÖ[íef3o#€ýÄ!Üçô]myÝÄ¡gÝØ†dÃª<í‰àû‰ÎN§RÝ¸N'›7”µÅmVµ¥ t«æA¬e{¦c²¾æì¼(ÝÕ}(Ê$¥È)ÏÓço÷¨Ÿüú‹,>i…Wå~}@•7fW´ŸË{ÙÒ%-fî¸T˜3¯ªYÒO!o¶·‹Íõxs|sŽ£u×X	N×’oXŠ ,¦xîŠç™×éa”]÷¡Gàkò6J¯¼%øõÅIMØlxúfËÍ[¨Ž£›\
¸CÏxÞÖE-üËÌtWß'&lx›pPyZÞ¼ëÁˆDÄmU€ŽA?äœÏÒÝ¿FèåÑO°¯#Òsg´¦–Ô ]Âù#xœ‘ËNÄ0E÷ù
/AhhÚNÛ´B±Câ%Øçá´iZ5É0Ã×“aÇ¼¼¶Ï•¯Ã‚,oÊZ Ó-ÏYE­*¤e[¬ËZ¡¦¼BÌ›–I2ó]€¢Hk%9ã\H&,)+hY3•kQ±¶”ŒJJ	a˜ØÜ¢ƒF×Ë'·ÉõÂËœ²s‹xåùèSï\Nã%äõº.mhg´M”¤Ž&ü'ˆ5? "¢±ªƒ—Yñ€`pÛá}á3!a?£ï@›øÀCô '…pAÄNÞ—Éõ0rÿf\J†fßeYoÂÅÁ1³ÆÅÝêÀÌŽìlŽÖfE³Î¾ð„\Ç¾#êþõVD· œzg>PÐ]^ž’;ä)ë0À_ŸáAknÜ–[“îzðGÓ­Âç_£émËŒó=|ô Ó;T«Ië•Øw˜|D?¸=–3xœm‘Io£@…ïüŠ–æhe€6›¥dÀxÅ6x¹ŒšîjhÌb›üúñ$i©º”^}õêðê ™`™X7T®×9¦DgcÜÔ(£:Sb…[jO*H	—ÅjO%¬‹)3`0XOëª]c‹˜X5,Ð,EùÇ?X#&ÑMN)çÝgcNèÓÅÊ4‚1¦‘HS§y‰úä" C[’\ D¯ìþ9¼WM?üBª¡š¢êŠŠ:ŠúüCóóYÔõ‰zÜÄèõ’—Pdí{"ê´‰>oÎ’"©D‚^þ–3ys´-ÑÚÍíM¸|ê’Ð½r¨cÛŽkÛøÂK9sWÎÄLÚâÖ-½»mêÙî¸½Â‘LXp6íeæGml%¡èh$ÕVûé¢Ù‰‹ÛÀ÷òE‰<=L¬Íå¶5ë`#øáºæç™3¬ôqPaH„¼Úž„6gž„ûÍ0ÚÇãm§3YeÂ
÷Ö¸wêÜ4ß¢±•ÛbÙM;uÛ%ë2¿pB¥Ûq€k	ÞzË¦ëm£CîæÄï´‹‹>?õ÷ð^ùhYYƒó£9Íb7»>/ òíJŒSº—ÐN«öÃ0˜±¶ð?6Cß"1ä¦pOL¾Ë³´Z…‡lš«âŽ©<vn2µ8SŠötwÌçz›ö‹!6Òéœz­‰“bî3Vî¡oµ[høâ¨ÛŽµG®òàëN4›s¿Ù§~„ö›„Þ¦–+K_™æýï“fP&€Š&ËP	×ªýP5Å@¼ÌÏ¨¢ªb½d rÜˆŒý&Ue-I6cèÕ9ââÄMòµAP–yùErÿâ—"xœMK1†ïù¥k¾º›,Rô.^zWò1é.l7’dÅBñ·›Z=}!ÉÌûLfJBA­VvRáxëeÐ"L¢æJËÑ£%y1	çœ³NHïŒ2Æ:å8
ª8­ò,ØµÒÂ)ê(%f)CL°-øŠ3lq™wnÀ8ÁCíz›£ª™ï²Ùçšk\Üo€µ²]·®©®”úºKÁ‚Zþ"÷Þƒ]ÆÉ?›œ1(Âøí²;g SŠ‰¦¹qÎÌçK:fèY«{F{¦˜é\ÛÃgÍOî¯KuÁc„¼¸¡6›êFü˜Ð•˜ê75ájœÝ´ø:Í%Ú¦zN:Â·žÞ/‰í¸›Ñ¯b+{èÿ¶Jò™éµ“3xœm’Io£@…ïüŠ–æeL³3JFƒÙ	6ÞâË¨¡»Ìbâüúq2š[êP*U}Ouxoì	º(òº¬«¯Á\È$"I¼ˆy]§‚XÑ©@©–‰9×¡ž°TE	çHC(Ëµ\ "¯	¼¨hÒLÖt1×øœçÿóÑ±¨CŠ7¹ÁPÃ’L¡ ªŠ"éåT¥šÆ²í…XEjp@#=xÀó×ð4Lù‰Éo I‘x(AÜñðö'o›¦ÇìT£;eàµ=éêëSQå”ý¼ßÈŠ®ªÜ–i;^'©çÄÆv·±¿öàÀ<˜¹iæÒ0ÖæÚ¯¼’„Ë¨å«ô|{o6ê¯=cImÖÐnç…¾£zá¤Íjw>rà„¶ŸÌ§ìcÇfYN»îÃÁ\¬øýäo¡¸*¿!9Äï×h»à\mbÛN‹ŠìMŠ_ê ¼˜ó7
«âËVì×ôÍÍ™CÑâðÂ«¯;3Žïm-6‘JxFûg’¯"#<p o;-òº¢¸ö-Ãµ0»òè¯”9:­ÆÂÃIÛåç)x•÷ÝXèÊ©=Då©¾¸AÁ9kôÌõËÃÆ9ºÔ#×y
ÒI"Za©•IÑ²,»âÂŸåD²â}ß¯÷/ÍÉ’ÐÚJÂå‚×Ù-¯ý»œ‹h^ìm÷8ÆQb[‡4½Ýd»ìrLâ÷ ÞÓ´Í±¾¥4zäÀãª;Ýqÿ<³cë{Ç¸ˆôÝT× 'ç‰#øo¡´o`ôëÃbP^Tl$õŸ¼ÁÇ}öûUì00_'ÐÕSQ1ð²›hø$oþž–xœKnÃ  ÷œâí#G&EQ³í¶'xü¢€-/zûº7¨ºifúš8"t£»x´2(¯“ÖHËže4.«œ­§ ^Së ”¼Ž-³6¨Dh’±Qf?ZGÁb@¼÷ç¼ÂcÝÛÂ-nð	7^^g>ÐÇÆuÛÛts½ƒ4ÚQ¤5œp$­¥÷ô__„·¡riWxÄ¥õô†å½O¥Áoü(nB|•©¥8Ì9þûú§—ønaxxœÍjÃ0„ïzŠ½)ú³B(=äBéYÒî¶Û2ŠœÐ·ïí¹ÐÛ0óÍLoDÔ&åMlMJ'ÏlQ9‡,]ôÞI±ÅFk‡ú€¨¦ÉzL˜­ñ–CRFâW’Ù±òrqïoµÁ9®…fx‰¯+58áý[<]÷+H œqZk5xJJ‘ë²”ÞéU‘ö2ãž7Œ`.i½-÷7!~Ì^á¦F9´l¡ò/3
q)Ÿë8Tæ!½ÿ:ë×bð”4xœmRMs›0½ó+4Ó£'EB2ˆNÛ)ŽŽMŒs“À$˜Oÿú:éôÖ½ì¾Ý·;;óžê¥Ä6)23“P!Æ˜ËÂ4g„Y|N‰ÌL4Ç9ZËzY+À,bÐ<c˜Z˜	aa™&·âÜfRlPa2ÛøÇ§¹°óœ3i±ŒÚh)·3!7,$„%1µo×…¡±Q›ø¬.e~³¢–=ø.ÎŸÅ¯aäW!dóö&$&˜A¡–5§S©Ô¼,ÕÃÈÁ÷ºée[M¿ŠRGþõFøÏZÑCY€»pË`6Ëx–kg—Ä‹Ï¾4pÜÌu×sœ­»Ë`{1¼Ø]YÇWòôŽûàì8IÎ£Èû2´<oõèúT,“úmß<i@?
× /‰Ÿ•4˜‰”øPD1êšË:À†íÄbÎ~~~aùL¶dóp‰6fue«m¤Î+lƒë«”Â—Ð7â÷è)A0ô†ÖrÞm-wLld­ÉvŸ^¯¼u‰¾Nâ{ã.Y0Ü`1„é•@O±ÇîMßíÉû~öæqád¨ö3í‹=Q—.“í.˜…Éìgi8ëõ*ƒT$W>!Éä§Í6­¸WòÎØWnÈ3êwŠSÒOÉâõÂÓôxÑÏeªJOB#v65°š;hsx«¯(vL6;]=½ß‡è·á&YàS7)Žv©J	ó÷¶£TñZŸáü¸Ê Ðþj¶XûÿWL‹d_HÐŽUzÙrPà"€¼oN ,ØY[Á”¼S·Ù iŸép„ ÃØ¶M¯@~sbUÖª¬ÀjñOL}Â&›éfÕd ‰6þY“xœŽÁnÃ Dï|ÅÞ«D`0à(ªzèTí¡g`)°ªü}¨=··ÑhÞèõJjÒVè ••œK)•2FÚè”3~´Š‚£ŒÙê*å„Ó>á~ŒCÐÆhã¸òƒôc4ZŽBDÁ÷;æ¶¾”
¯.'ºÀ§›3U8ã×#¼´­Ñé„VZv<qÁ9åzM½ÓÑIiûƒ²N­·¼S¬Ôx»í
BAbwŸ²Ò*Áe„ÔJí°­è:!ô…#p!”Š)Ï¿Õ=Î[Bº¤LíÈØGÚðPb<øÛé/Eöw¥p«‘xœÍJÅ0F÷yŠÙËííOLÒ"¢àÒ…p×Ófzl“ÒL‘¾½iq¡ÑÕÌrÃÇ(S”¦&M¥êµjµÊsmJÕ·6—E…·UG•F1ãBžµ,Mßaet…Ö*iµRm]m[cnLU«°.®<„žÐ;á¯ž¸³Çò×H™¥{(”T‰Ñ¹„›¼ÈsÑ…irÌô_´–Ê|¡‚)rlàÑZˆë<‡…¡O7ŒÎ³óW@o÷<!1ôð²¥#=tÁ’—')ÆqƒÈ„#ð@¿ÁÂ¸ÏÝÿÝ²ùx8EÛ®1ƒ×Ù"Ó!³¡[§T#²K v]Xl²Œ[&Ä³óïÌslÎç«ãam³ÔÆù»íG—±§Ð÷§vkþ*L|Ù`¦Š3xœm’Ën£@E÷|EK³D‰†FÉ(`ccc1Þ5Ð8¼ÌÓñ×“h4›Ô¢tT:wu«o	<N8¨@§	U¹X ˜`I„4Q8$+2	xŒ˜·¤ê¡”O‰	g€ˆ—%ÊI‘¨`¤ˆXÄ™C‘òÏOx*XŠ‘*‚"ª"9¦(âg”#$"Œp$1xè³º+\å¤ o8­Hž’é^º¡#	ùø9 ª`9žã˜¸.Ë¼ïgÙÌûßCžªº%Mññ’æ}6D³ðM,mÒ.OÁÃßÑÓrÀÞÜƒ£e:šçŒÏ;0uz¬kš¾Ô4Ww7¹µ§åA·åì"îFØZ“¦•Zmi¶Û™áŠÝk4yºÕåô(_B‰¯í©Tø‹©UïrÑ3^/p¼N•×úS“AÍ×úHiër–½fó3zÏñ²;;ò’Ú8has‹÷èôfÿ–^ÀJ’ïÅëqÚ°ê•#Žó,'Ùº’|bQãsjx“ö›÷´d+}çr™â‹“ju$»W¹nkyo€¥RÜmnVÛªºõÍµ¬ìœ+´÷0`¼ogÛ¤—»z5Ô·¦ÚE!µÊ‚.¹üÖ“»)oØàpxè2E7Ð}x=ÞOþJ¤{þ¾`@°rò¡Å…éÒìoÇìÃCùhŽû!,:10Y–ÞæªY®ýÖ„,ŸhƒÕï{¯Óð™Ïê5˜¯Îgõ}cÌ–´)ÍP %×t=øÁCI´­K§xZ”ógæuõÐQÓÖ÷C“àž0ÌÁÐV[ã'Ø~) $Ý¼ÿ‹ø2ÿ ûÔ.xœKOÃ0„ïþ{G­üJ“TÔË=û±&F‰ÙŽªü{\Z¸ÂeµÒÎ·3S"A¥¼ïm­T»®çÖ‰†"cš+‹-³k4’Y%k]Ïœ‘´íÓ†c'8ç”×tVw¢Žž»ž¨¥1ÁA#œÕGÀöò½<ç%ãÖâ°”BH.<PF)1qš|)ø/tW“‹FÜQòv|9œŽ{8Õ¤>˜0×™=§ø‰¦dXf«
òŠ—ûµ~Kj9±€º\·è >CRe¨ÖÁ»²þ š¡ËÓö×Æð¡· [BÎƒT¹ÞÔ˜c5»i¯ªÑë¤Ò
gƒY+ñîk;»‰Îmôºÿ«<ù	Ó„™1xœmRÉŽ£0½ó–æØê‰˜Eê5B²‘=¹ŒÀØ@'¬6dùúaz4·®S©ê½RU½'JÁX¨Ä†‰U©4ÒL,›ˆBFe
cMGZŒHH(•ª°¡… ¡Í8ÒÍPArŒ#!BzŒ¨Îth(TÓMÊ(ÓÂÿx*Gz’‘Id¹ï ]Õ5£'ÁØ0Ô‡˜QlP
[‘–†EF¯à&mÀ[|ûJ>xËéÏ˜þHS5Êað„)ó<¢{™·x+Ê†V×ÇG’‰´~ö€ohI•ð,¯Ãv½É¬¼ØL¼…µÝ­Ý¯º$pã6±-Ëv,+°ƒi6™îžÎÚöõôS]vJ3¹YÖ¡+'–C§—:b¦¹³,wµèÒNŒ$0®“,/ŸÈïÌ”ï§sõ^ØdRžöÏé‘×Äiý Èf­ó sÝÌ5‡å6YÜ+³ë$p$îeT/Ÿ­»»ë|ƒÔ¨y
o
Ü]†c_œ½ÍÓÊ:BŠaWžxœÓƒo{V®ÊäF$pxÖ/¦6™)y2fUô8¯÷Ä9²ípˆŸ¬ÌOþrt<ÛãófwsïäG‹ã ~î´6¶E?c·?Ý.%éÿçx'!4¢ÃË¨+pÅ+cEÜžºâ0Hc©uMâßèÚÝšC+H­7ý©2Jåä+×üx^ÜE­M¯Ar1éu¹Aóåöî–Ç i»ù`à#÷¬L4—w	¼{ãóLú§™»~¯˜4§MBAÕ^¯ ¡uK¹ ?
eÀš2œ h¼^)ð6êó;+¥Þ«œ‹´iAÔ&,»ÿ‘÷÷'•xœ¥ŽANÄ0ï~ÅA°+ÛIìñ
!À-/˜8ã$(±#ÛYà÷Dâˆ[©[ªîš™Ár`b=¨™lhkÑœÐ±Co7¢’*;eŽ0PãLë<¡Á[K
¥éh4¶Õ&Z± £Î)C_ùÎz>âägN+¼Ÿ«/Å+‰×•ù­ÐVÎîêÓö
Ê´F;ì´…'é¤gº-µò¿E"Þ7¾ÁN¥Ô90SX¾>sŠ|Ûþ¿–•aäâó²×”…è—)òxI!\†ïÛßŽˆqòxœŽMnÃ „÷œâí«DüÙ†(ªz€ì|x<b$–Á‰zûzÑ´›Y|#}3}'ë­´6*PË`„‘“†pPÊ;rC(Ð›‘mn§ÒÅ­ˆ¨ùd•ð(É()%ç¼QgX-sG_ês§˜é(O\¨®ð8Wï7×•è«¹ÜÎîŠ5‚õ(í¨¹†n9g'Í©wúŸhƒú±L­–ì”ë‹`ß2Ú¨*˜¨Á{9åþHk × u×26§g¡p©1^ü÷íoØó~p"ê€VxœÅK
Â0 P,®zŠq-…)Í¯Ý¸òÒI&hHÚ‚Ç(®=˜;"¾Íû6Ÿ¦[3h%Y'z¥,yI^ ±BÑÈÒ«‘úAÏHîè–³A1ï»ùWÛ6í‘'(óÎ°¥Ä–kË–|ÉêF1¬_—ÓííÙ&•™3xœm‘K“›0„ïü
UåèJ,!À(•¤~`Öküb½87!	Œy.àå×ÇÙTn™CO×Ô×siÕ
HLtB93tn#[ŸÅÜÌÄ8¦‚š\gˆÅ¶¥5´•Í‚fÀÁ(fº°±®ë²Ä´ylã‡=!ÿxŠ	Á¦I E8Kbü0Â‚†žÄpfbF9Ôãˆh´S×ºZe¢ ¯4­D¾ñáÃü”_¸øeXBËÒÁ"5V—e¦Ôö2µîbð­ª[Ñï?ÓL]»øËøO,mR™¥àóŸq—ž€½·'ßœðå¸ü¸k@ƒt™ë8îÜqîá)ó}¬Ïîfv½»·þà8£Ê}gµ¯¯‹ìí2+”Ó+·¼u!^ý.­.#Ÿä)^ßé¼-\²Øvìõ4»ÄáØ23«>_b77ÐÉ­q?]ÐÍÈí÷ÜÁ%4à½ÜÌ·18Ü8l«ñl _æbmÑÖçô86û¼Aåþ>Í*¹Þ8†ºmnƒšjÓõ/ï›b®=G¤üÌWü¾³ïh÷rVy|Ž½bEpÃ¶EQg¨yÜù$
#¸„O‘‡öÛ†=>ÄÇ‰~_nhÛ…;o%» _&¡È²qÏ‹¾÷‡·(ÚVª9„Š–·Iu§cc‘å³§á¯Ïî¼ì¡y0za<	á<í.{˜šaxjœwG%·Ç~¶ÉåÊwÌ×q"§^¿kà;Ä¯ƒö·³e°øcÚV´© MW o
|BD iëH† ý¹bZ
YWšö±¾>Ð²îh›pÑˆŠ‹ŠeB‚á**wYÁ•@*ª2öô< •ž2xœmÒKo£0ð;ŸÂÒ«0ðª]òjÈƒMrlÀÂ#4|úM[í­s~3—ÿt¥ %ãØ0¨®ª:DDŽTjDjj$©0F’aC¨£†ò@"%ðÎ¥$Ö 1¦	–4£TÖŒc]#º¡)éŸF'²‘¤D†'Pº–d%ŠuEÑõT£BÔwù¹Óˆ3Z‚¿QÆižÈðÕ¼´}K	ýdMÕ ¤C	‚I–$!9Wëº;vYçõ1xâç†Öåí%c]ÞÇwðÃZVg-ËÀä³,ÇõW`í®ÁÖwWæn¿q¾æÀÐZ‰eš–mšÌ˜w›2{cÍõ¼Pß®Jã¦©ßt« ç™Ï±kò|xy»õ"€æÈµRqÉeˆë¹b«î‡ë-’W±Œ«ÖŒ}ïUmvùÃÍ2”}µ±ûmVHûSNe7æx[	àRUãrõøÇ¶'
Y>šV[UËjs-q­ÐÊ/î‡Åê¬˜Qx8ø5cq% ñÖ(«±ïÝCêêC/Ö×ù©<’¥ÓÚâüp^ÇÁÞKxv>øâ¦¿å„Gq\ “·f8’\‚Ð-2Tî~D®¾x?_c¹Oa
ë“.okS:¶ï”“ËXn(\”o<ÜÝU ¯´tæoc°žúi„mÅLÝ)ª]kqÚá•VÔ‡Ùöâðy’xYÝ9N<oÖâ»KVº|Àó`Ká;3g5ý91aI›Œ‚º/KÐÐKOÛü’ŒAÚœ+À²h»&"¤™$QK'Œ·´e»RAà×ŠN’’ý~öùEà‚OøJ¡ü°%xœQMOÜ0½ûWŒ8QµYÅIì„PÕ–¢è…
Î{¼;"qRÛËŠ_; Ñ[¥Þæó½yoR BU+©T«/ZƒãÐkšºÑÒYIµ³æ¢µj:±b Ÿ ëQåÕ7õ0äºtº'­­jÉÑ ›¾ÓŽä¨Óa	ð=Ó¸÷àÊž¶às<FÚYº©;-»¾k|¬e]³Ì3§Dÿ±*üóL•™ø~ìýR@kŒ$Ä¯åÒ	#p¿@ ßG4Yì!~>ÜÝTß¿B\É°cƒ‰—ÒÁô%<‘	ŽëšË"§åD¯,;¸ågz+9Xv.ÓzCŸJ1ËóžLªpšÀ!Oq1™C†Ù³ÙÁý‰K–9b
ÄÌ+¸LƒbƒdÉGN™²[å1;!¾ä–…|­ltgtÛ´CÛÃùÙ»'wøTÞù7Vöû¢e³è/ä³BÜs6ÜV‹sÕørù¯ˆ?aÁr5xœm’I“›0…ïü
Uå8I,	!P*IEŽ=ÞÀ—”@2`³™ÅËüúØI¥rIŸ^w}¯ûðºo•XÒaj*b©D$†EâÄˆÃHM¢³»DkhUÕ-J %ÉžQ*¤q§EL"¤$DMbîåþ/o˜–ëf¢öºº°LK§Öý…T§3¦'ºŽÓÄÐguQåª [‘VªŸåå·øÖú(ÕW€(¡RÆ,ð„ZR—eÞ÷wØÍûÉƒÏUÝª¦¸}Kó>âwà?¶´I»<e]oæî,=wÆWë×ñï¹4péìÄæÜ~æ|a/ü|rãÛçW{jfòã¬·Þ…ó¥yÜ?‚£š˜în'kWm¢Í‹gW¼Àä°ÐÙ›_ºã#Uw3¾C÷’ÍÆÑo½1éä:=²šNß‹6~›8Ë­/µB§>/¯Ñ&èëæÚ}ŸÅè`Ï³q±„Ž%æÁEl/£ž›ó-ºÚ±ëé§Eìêkœd/O¶ôbl<Ésì®[¿x–”ï|™çþ“OÝ•3ŸÇÎ(0ýfòÓ4X]h×z;œ¦{hG¬‰gvÈ²ÅgÏo~¸[ç,*ÃsÁO¯£I–Ä©!d0:yéVoYp
"Ä¯Îr‹&´Û^*ÇÂéusÄ§®õ
[OÕ4]üŒƒ™Ùzî>ü%Ý‡Ur’ò•¶)‚Žälqü¢/ùt½Óþd6ž9ÿOLT›*ÐEZuT×ƒwˆ@öm]ÞU#*™‹
£¤”ÝÏRäÕO¬iæÃ£ù¸”@Üô™B–yõÌ6xüÚÝÛ¼ðß È»þîSß’xœŽ»NÄ0E{Åô•_±Bl‹ýÄcïÅN;·¢EtWG÷Õö@’ñB´ýèôìÇ9LRFiµšº\²÷PHîŒæFû8ƒ4v—pÚ:.D ƒZÍVÛH‘áÑnë—ý(JXàžpû:aG/s=Êõä×üÂh#&e‡>*Î:Í©µðß<ó™ê1•3\ˆ —Ú- RNåÞ?ßà>Ñ{+¤wã/XRmŒ}¤k	4¬1ó÷ùO?Ø¯%jbž4xœm‘Ms›0E÷ü
ÍtéIù Ñi:c¶ãÄN7@B`ÆB²K~}ÓtÚUÞêÎs6ïJÁÀˆyÈÊKjY”¸2ËÒFš¨ NÉ b…]•¨ò´!¬— áÂ0\äYÃ.5l»„…ÄeŽ©["ËurJ‘ýwö*y.lšUÐµÓÂ…‡›æ9,°ËKË•¬Oyß°ìrÞ3¾Òë{ø>ª‘}¦ì0ä˜[ž	f†iZyêºFÊ78jäBàklh§ï¼‘µ*>¿h|àcÃÁÍŸóÃ(NÁ*ZÇ8JÉöi¾÷ÐÀuôKŸÿŽµ¿¾ouöz·ñÜú€²ñ•—ø?¤ëpóôû©h„;}š;X"9,³§6Pi6*åê“È¼°æóà\qé¯¬+ew‰½¶è*)÷é‘áõþØžù>q¨1`›Çj…à.¨®r’){èQz?>¥§©ãç—°ÝnÄkpHDfÎ.üƒ®ø¢\õEhhÀ¼î&Œ¹R‹>yIŽ1èe
Ž—"ÑèœçE2s­sgî‘}Fév9›^`ÛækÞ?¬XQ–ç~î½I¥~|×‘Ù¬ËJS—8®í¼o©MüÀQqWa»dJ "‡ës${®kÀHchÌšõƒ±qš¬°=i
ý²Ÿê¬nïÕŽèg]Mˆ.–Ëí6ÜVhâÅÛ“6â¤—ñ­n'VÚßÍÂ4øx1-a‚30¨¶‚%ødBƒJœ:ÐåB6ý&]²–uLŠé'â$~–"kMë/ûªæ¯rÕJÐôàOþ7í‰ƒwÔyOÛ¦ç¿üæŸžNxœTÛrê6}×W¨oçM±8Óvjð›È›lÉ—à²Ìíëpz:íL:ÕÛ¾­½öÒ–gŽ1Óñ€Dt0 c%Š4¬ª
é0b*f¡G8ÖAM8+Äã¡Ö:(Ò´Hµ1VÇÓQ„£!¡k€´"­8|&\d%tXÅ+:3ù³d‚ÔõcT@eˆ‡ŠªiÚö¦" ½E&ûÕI4Yîgb9Þ®œ<gil^}«ó`¶¶Ý‰aL¦‰q±3ËjgWkøÊ^Ú¹õiy›—5mçÓÿÀ¶QxlJ“ë(iTúuXPÀ°Ø¢ýnr^ËS¸6æSß8²|€k/ì­Ò¢šÓ—÷KL¯ŸXhŠœWÛÂü8í{‰Ì< i;¿)§åÁJ}…k®þfxó3?¼/Ÿ´çÂ¼¥³~iÕMü¾åçqmöfä6álOæ*€Þá°%g·ôfkôÆÌ=§Ô´ºpö{µw!e÷z:XaÅq®¹xs‹ÕÖ×óÎ[d!€å!0ËÊ“ÖœYF|Ë=Ô+õ}èŽ&ÇÞ0ÓwË9I›¡=±vê(Ü°Íˆ¹‡»ëb}Ð°7êa^U¹k~Ìâñ{¾âuhZ+Ýó{ùNoß¤X<7ØÉh{\ë­…ƒÛõE*¹Â·àF”…°’ÚÆîÂíiœ›ˆV=£Ój2[néøJ¢E^Áe9ðwl!I¡»Uki~u× <ì	ÆÙ6,‰I›(—êî…‚å¬`‚_ò*Œs¹²))i.× #¾/¡Hlë„*ó+˜gá½ô×ÎÿÈ}{%øÙ«±ý„n"VžU$lÒê\ÂåÕù	€åö™ÁFÑ6OÐ+O$Ï(\H¼I$ûlvG¯¥%ÙÓ,"‚Q˜5Òèr¿¡FHÿl’å2"™’èØfüü:e¨êê/ `I!4YUÂOQ¾E•Ì¦mQ3ú [þR†nÎCt$R&á_'Y‘œËøtbÞ‰–Î_â=Â@Ò;UrÄøï.÷ª„ÈÄ”q)ï9Í¢~ŽºèOE²¤dô¡Šã‡ðúôþ	ðàQ—7xœm’[›L†ïù#õrÕf†cæS[r‚!ÝlÒ›j`˜†ÓÓ¯ÿØ­zWË–,ûyí[vŒFSƒ¢DÕ¡FtLtKµeDÕ0Ki%©‰1UÒ1!nÃ2ÇP!Æ†ª£Ì´˜iRCcÃHµt3c(1ÿòÅlt&L·AqÌ
!¦™>Õ™¡Bª[S…²¨;0'‚³¼‘\°|¥·äG?ôìeß2u©ÆTÃà"•´®*.å¯¸t‡|uÇšòñ#ç²’/#ðYÞä=ÏÁçws+/Ñ*{oÚ?_ãÅG]
¸õNêØ¶3³í³[s—Ñ,v|«8ëÛ«Öy7Û~¦ž½ðV`7™Õs]¢Õb}SÀZdhã¹‘]iì.ÑQ¿l|ÑïoÚrÝZæùÔW›&~	<~>%»e´Ñé0{îš'ºUµ)­W¤™¾¬«pjÎí8ÄÚÅA¡ÏlÜA$ƒsM¯³óäðkÿ”8›¬ßæO>Žj÷ªz©ycJœ·o{½p½€Ê"8¢KaFë¢WYZ›^YœRô+N™D¢›žÚ —ÑýÚzÍÄø!&ËG¨€6nŸbc—–ì‘øpzv+²	\5NIvÇö°ó/	ï.ô‚éäâôìÕ?ß‡`¾½,T¼xâöe£Ã-D^š\šbá£ÄŸön¯Å[xÄ?Õðžœæ{Õž·pŸ­‹ëõŠË¨òƒo
øVø‘«ü¹Ù"œÿûbJÀºœf(KÐ±v`½Ÿ†-uuìn”Œ‰¸Vì·¼Ëß)JZÑþsE¸øØ”‚Š— —D=(ëŒRÐMSw’Q’†¤\>@Z‹l|§’ÛÞ±†ä¬\€÷yàýGGaÿÑÿÑ¤8™xœŽAnÃ E÷œböU"lÀÆQU5Ûn{‚ñÌàÅ€^äöur‚ªÛÿÿ{úm÷ÁÓäqÆÙlè‰½¸0ŽÔMlµ£ŽGUp“ÔÀMý`æ™ØˆN0¹×š,!÷h†Nk/Ö+ÜÛOÞàºí©`âˆ	¾àËíŒGôYq­{ZÎ”×è;t}o¼ƒ7íŒVGºÆÖä¿¼¢•ëiÅ˜.pe†Uì)6¨Û^áž8´P÷RòÖ„° Åö Ê)Äî±¶×¬à"b‚§ž×°¾z¥¾ã’„O9„Óü¸üé®úû{|‘4xœmRË®›0Üó–ºŒnTmU\BrC€¼³3Ø&^1&$|}¹­ºëYÍÌyH3œt]ÅJ$c]…„(&ŠhhIŒ‰ŠŠ,b¤â@5dÆq‚á¨S	¢”Ì°,Š‰’ ,#¨I¢¨Eÿ§‡3:S±¢IP)YR¤C«¢:u5†3D¨A(PÇ¯56ª2R€#J+ÂÀwÜÿi~µ]K¾bòHÚ¸K–4Uq¼%$uYfœb7ã‹.ß«š‘¦xýJ3~íâ¯£à?ci“¶Y
Þ>Ër\Ï€­çúæn9p o­Ä2Mknš¡.³^Áyd­f×\Ù< ózÓ¼åkÏt$»ìò¦|Ýµ‹òÌÍ7òá ³òþO¢¾Û5/9°÷»W·Z´(;:x¹KC¾?ºÁù#?„zù2Ð–moú±<#¥ó¡¢ l-Ü¼GÑYrKsÿÄŽùæú¼ÜqRð…±°©{®‡INú­Uõ»Â_ÑÉ;²qßßŒûiüzÑyi9zª}jJçk±´½ÃF%¬
ú~?Žõ¥v#dïý»y†r°)$˜Eg>—·@ N•*î$¶²ãDšøç°‹Ð6næ"j§<è‹ádnóK(VÆÒ¬ »¼>Öó'|Jéþ´–«d#€éêàÈñ5ñÆ“ÁÏ›×:‡¬Â!ÒËyxÓ÷ÃANŠýc'ÂžNºq§ÝÒ¦Þ´ý!€‹‚EÂ_Ïßþ¿cÂš°”€¦+
ÀÈ½#-_$h¨€²ºYŠúiS3þ†Ûäí†x-Å,KÚo€TmÇ«Á'è˜Èª®ÞÂÚ¬åŸNêŠ³º(Fä7ÕÞ[”-xœRMkÜ0½ëWÌ±¥Y#Ëñ.!$4mÈaÛCBz(%Œ¥ÑZT–Œ$'l}giÂRh‚iÞ›7o”t\Q×¨eÉ•êšŠ¨Ö•¬ùº•½ªR©y-›0KÐ¬E[õ½TU®kµ¦S%8—µD%°jKÎ;ª;†s|€+t†,|Ã£ gêi	.â©Pte[7§ëª|àË¤G“ý´-EÙ~€2}02n€\œÁ/
~bò ³çÝj¢MLÏ“HïRðÖæÆ.•„l. =;™ŒwL)Å(Ò8ÛôBøˆv¦…6?1e¢ôöoY¸´ÞíàÉ¤áE‘É.:^•-Dì)¨€/÷ÛÏWŸò¹¹ýøp·ýúL„	c$¹áþ?=ÙkÏ0	ÐFp fÈQ«#FväÊß&9Œ0¢S˜2ªß/nd­q"Y0vkòfÔÊk½ê÷ØbHÆÁ5ù°#8—twá(á4yÁçìûa›˜|xfÕÁ0zçmvËHè:9ü8¦þÇŸ`¿?¯ø“xœÁj1Dïþ
ÝK‚µwq¥…þA)=Ë–œví°¶[ò÷u“Pè©Ð›æÍhêÊŠ†Éjí¬Ü1ŽÖGv‡<7ÊÁŽ~§´t(Î¸rªÀ‡i2ÄäGïƒš¤YOAª€ž5Ö¤Øê)¯ð‚)òïxL¼Â>¯ÃSi…·Ä FmŒ‘Ý¤’Rø¼,±Vþ*\‹3íá­0¸œgÆõrfýÊ¾l® ^¢ÍUˆ¥å=ð<cLÐåV¡žøFõº¢ß›;87ÞÂsXÅ¯˜ þ$c¹‰¡[WF‚úµÔ5¦ãÝFˆ×Ø;Ñ&‡°q—ý_•ÅÊŽOxœÁJÄ0E÷ùŠ·—–—6/iþÁ ®_’´MÉ¤3Ìß+¢kÁÝårî¹­ŠÀfÄˆäC˜9Úd§4’÷~v3š„4°áÁ©«ltÐ–a°:0:;N8²¤õœ˜ˆÝ4D1Ú*>ÚG©ðÂ[–Þø}“
ñöž/ÇEú(O ­!"¤i„Ôˆ*”uÍ­É?¦Êy‰'xÝ#7%ûíº
Ü*ïJý”­ÀU÷ØÕ` ¤_¦Wêœ¿ì±+)uþ~úë\}ò&aä›4xœm’Ás¢0Åïü™Ù£ã– a§Ý)Q‹TµvµÞE@¢þõk»³·~§7oÞ;|ó~ª8	†1¶1ÆˆJ-á¢C„„•Ú±Á!7m¨Õ¬¥çZ¦ƒÓDÄIlcƒ3Ë´McÄm–â”|¯ýÏéŽŽqŠD‚	×¹IÒØ0˜m$$!Ô‰Itu*¯0f¥Ø°¬xLú/ñÜv­ø™ˆß ZØ41DØêºWÇ£Têö¤šv<–U#êâúœI•wüç=ðM-«³Vf`øytâù!Xxðæ{¡»~_M¾|h oiL]—Ž\wI—¯òe‘îG+:³ó=ŽÎ¨ñ{×õXï»mÎáAž’7™Ûe¨€;/Ò@0x!W›ëxi¡Ùbë[Â®½3mòÒsºV·;L]$ÚW(Ýo&É|_™”Þ¼Ëâ°9j`·½áC4ÿX­Ãâ$ŠTð2'$ÚÚ¦ëŒà­›ó½ˆ\™Â3iíýáBÔ%Ø\½Ù\Šˆ_ûë}-Q˜fëIm/sÛ¥u€0JVhGWž8µ{ãÁÏ#§u–[¾C=×WVjÀÜmsã²Þl[û²Ÿ9Ðº:ÉÖsä.1öÙrb=ÄFÖön[NÄ{‹0”…gu•<“izÿÂ¬w¯ÁaÖmZäæŸ¸^‰Ùü]Dƒˆ,›‚—æk±ÙðëÔ«7êNg‚²l9Šî øIOúKmiÿ6›„ãïÓæ¢É¨»¢ 8u¢UàDiSÌXÿÊËP–JÃò|Ã;!µ,Äw™¦}ù¿À¦j¬©º2²”J²BÞîŒ‰B?±–-(+âªl+Õ_*©í&xœQËNÃ0¼û+öˆ„'uÒåq@ªàÐâ9ö¦µêÚ•íPàÄgÀïñ%¤©T‰S—ÕjgvÆã›B"‹sÞŒÒ4´Ž©È²\Ö	ã"/%µ¬¹$kîÐ²ÈeC‹Ž£²ÑP¤ŒËFÒš‹Ò”Ò¤Èã”ð6,¬ƒknjxâsƒNå¦o.|ë1’x	Ë†Cš°bÇqÇDØÕJ…€ÿX%ÊÔ%<Y·äÎ¶F‚2*(®Õ{§€WÛÊƒ±]k|à&r¯eÏ… i{H«%BXàžó[çuíÐ{eM7îi½/Yëv®LIHìzÒ#»:0/+ŒD	·šÖˆ°øþøÔ<TIð•¶óÊ®ñûã«< Â-³¼tÎºòO9¶6Jì&ÛGÃd<»¹»z®¦³ñlZ=fÕåxzS=Ž'pG„<x‰2è{Øìÿ5"dªºkÈmšAýV:ù?áÒ “4xœmSËr¢PÝó·j–©D.¯SÉT@• h1›Q¸ ÏÁ¯ÍÌìÒ‹®î>§{sN·5 ’•XâHÂð!«Ä‚@ —„<B"E‘CŽ©‚h‹ ‰°A	81Æ"D‘8%–ÙPIâ€¿Hþó9>!ã ‹Q"ñ{Ë²ÌñÖ“€^‘D±È]{,k¤4ƒíƒ”Bžãá«xmºžbø…°$ˆ"¯ˆ"‹XÌ²LTEÖ¶7²™µó.DÏ´¬¡ÊÇ×4k]øt#|³–Vi“¥èñša.VÈ1ô¾0Wª»Û_s1hh´HSUmªªm³ÌfŽÓ­f‘ãIX÷|½TU½ÕJrXº²íÍÄ‘ËÓþa4õÍMQ|ÖÒi´‹e›ä¾‘7¾n»Öhï’CèÓMáÌI_‹ÞšW‹ÛÇù:í]ì–ŽÃ …¦.¹¤ú^«OkÅöÓ8?(žÆÂÂ"¹Ì;E'^`–Ò©Ñ
nåœ›·˜˜»Ã›n/ó˜AÞ^ÎµS‘¥m	*œù
c¹óÁðXÙä±çò±!ûÚë(Ç’Ãç$¸:‘u£Uÿ®1hÒï—Ê›yH]ï.­Ýï©éËE¹5÷›u:º~îMtCï O6‹ktf…šôþÜJW\tµS?aŠÃ°ëg~XÖ£>ƒ+â«/o’·r2«¯š€'îÁyZ­AU-ê>X*YvIûÝƒ^fƒ¸eþjf¬ôïcl¨S@U—ç¨†KM‹~`^áPR—*‚ºÍècZ“’¶Aõ™Ü¾à“614QÃ0n³ê‘öüDwµG@ÿ`T•½;-HîùfÉ?g5Ÿ>xœSÛŽ£8}÷WXó4£¨§Á\­ÝÕBš4á½É¼´ Ç 4· _?IïJ»+ÍÃjëÁU.Õ©c¹Nu¥f¡)&2Ô¥º’I)ŠuŒ´„Ò4Uq&%ÔIC«fDÃ$GšŒ‰@‰¢ÞjBr‚Ò$Ó)’5,H é»Ó¥nÒt¼‚6½4ŒÂ_Ê+û½¢]R×_³KùUYQDEÁ:\Š$€[¶ä]GÿšÕ¬å>ÜÍ´ì;€ÑÆöŒ}Zy ä»ÕÚ4sÉŒqÅ-«™,5¦~ï„SHªÙ©jÒ;‘ýx–WF¹‰‹u¼_Ûâ)«Â:-‰`Z¾
ÇƒyÝ–Þîgï´@r½IA[«æ£^:ß2ï¼.“ºëÙ÷îh-œz"›€=‹Q IŒìqõÒ×§q:4¬Ù'‡Á|µŠ~Õ9^FE1;´~5Šs…õtu‹­Ä z1sËy›¦¢ãÖáNv»à(EßúSÔÓJŸ´ü»?‰Ràìë±Y¸Ê°Oc¼ôI«û8pÂU<!wÜ½?‡ÏS{Fu!mýóiÞèe7-Ã²×ZAÊºõëu’™ÇA‘éºYkg³0sù\Ì¦¯ó†ÿ‘º¶	ñÒ;îÅå,¼xá6|Œ|¬ìIo(‚‘ø
¿6{³3«[– 6JŸ½å"ŠÙáŠËoZg†³Q wÆë¡ÄŽ…Vb0s¶Çá]±‘9’¬ð×g&Ý>òcª–÷ü³Yƒ?åòP%}‚ù]õÝ‰Âª%´ÍZX_xu×Z’ßÏ¾¥ XUÛ7?¯âíGòw9äÕ_o—êæxFÛ7F»7^å—Ï_¾°â#mŸ ŒU"ˆ:üüéßoâ#¼G76x§ƒ}Ï	<%)nrùmþÙúÓ "Î*J.yþNOÿaQÀlçFÔ›2xœm’Ín£0…÷<…¥YFÓÚ˜ßQ;*NHBhhH!4ÝŒ p†hÒ>ý¤iV½««{¿³8:gŒÍÒa‘Ôdºmc]CµT¦ê™–¥9ËXQÀ1)]*™@N-“ª¥™2ª¶žc#¥U¯¼ÍT¬ªÈ2!þÏcfëXM©Žd¹eC›f&d8WQÊ(65ÓÐ3¦¤ãPµÌRÁY’´L‚;zþZú±g7”ýÈÐt[‚`„JÞ6†+¼àÃrÌÀh%ëê÷‡’Õ˜Ý\odeWö¼??‡¸/ ›Å<{‹À‰â­ûuW€Î=É‰ã©ã„$\ñù6¦[â›ÕA{zÃÒ;;Ž»Ô<gaíz«Å›—Ò_9‘}².VÓ‰¸´wcÇ‚ùhpþ:MÃ ;&É)ØÚ±ß}ß'¿j-ïÄ,óé4>ŒNü½‰ ª/A´?íçÄí&Þ[[¦‘Qð³vÒ)ÜV·”®e2õŽ–gÖ\Àäòa²Žžf/Íe
˜/_âw×<QŽ>Fuƒ^½¸P,QX&ðàtìÕrÙþ‘/»¦%èc„Uº–[rDêBÒ|ãqu^S¼&ŠP—ÏÉw-¢{A®¾ê—‰ÛßÚEd³;Ä]»¯Â1y;ß]˜ŠêCÄÇEíá{0›Û«X4Ûæ2¸4WÓ&Mvžçëœ·jã[á²ƒ•F¶kM5zî½îC6å_fn0û>1eÍdÉ@7Ö5ì4²~ ?¶(dÛ GŽ¢Kå©@ú-mó?*R>ËÚ3ù<’¥MÍ××Ø\œ¼G-û¾’xœMN!…÷œ‚½™	ÕctëvNPPÅˆèÐôÂÛÛÞÀ¸ýò^¾÷æ`–ÎƒÊ1ÓÊ‚§#yÃ¢‹˜8rÎ*iZl8¸M™È¯”w+)&X$» e2g>°±Æh¿*+ð˜}È·q´lò]>ãöyÅ½îX÷£=®©×© ”V ŸX%NZËœüßþïÚÇMÞç`¬_¥±¤žŽz^ÀYzâ^éÒs¾ÄïÛŸ<â/Èb"ž3xœm’Ko£0 „ïü
K{ŒºåiÃª]%äAHJÒKelC¯Ä’ô×oÛÕî©s¾9ÍÎÀ©XGÐÐ0Ñ ËdšÁ©Ä´ ¡£¨cD*0g ÔÌJ”éD!r*CbÊ–™!ÍÊ)%„êò?Þ@†¥Ð1Ê4CÆÌ¨ª#“š’BbY!¢PÂ½8´ŒqS°
$8oôòežº¾c?)û¨º® ‘¬È²DÚº.„ø€ýBLú<4-g§êö”âÐ§??€ojù)ïŠÜ}Êñü +âÀíÍ6ò¾r	HàÒ9Ä±mÇµíµ³žž6GnäÌÐá¨/ÛîEØ~BÕ^Ê¹vÉ–N%ð\ÎëºzeÖ¤ë~<Ù¡I¢›ü@k5X„·H|ÊT,süz)½Ôž}ÙöÐUN"¼BÄï%ZéUßˆðuqªáDE+X8õ¸àñhq;ðRL/>k5½XÚš…cº³NWþÎ%Syé*³¹–VÏö
¡Zm²¹öCi7¹›ž·Mµ[{¼=+ÿw·-ÛEvÜ*}	ÀX­¤¯ùò~7QWhw…g/o†}Ôh1Ù·‰q™9ï$Ü¥DóêÞ¹x±¾ÙM‡RV	¼ŸñîºYˆ;ç]`Uû9ÌûclÎˆ»;‡éò¸¿ž÷içªÉÖ[–ÙŒHîãIeòF°Å£Ãø0•þnæ…ãï“Œçœúªœ{Ö	ðCÑLd¼­A¹(š»üt»Ï™xkº·‚¾u‹¾“¤f¨Ù/ð?ŸßÂ.ª´ø eCAØ9ù´’@xœ“Mê6…÷þ^¶1ä|ÕVM @„äa3Š;˜ç;üúæªR+uQÕ+ûø¼dã¶&Nˆ¬Id*J"FÊ”b:°€'OQL$¤"qšD ŒjÂ[¨Š•D”BY$"L§ªˆ'j,¨“hBµD]{)j¸ê–q¸$Eø[þuLÿä¤Êò=.ò? ¨)ª"	¢ªÀ7A•0¨9k[òÿ¦Ó2mX
G¯e˜KËîÒ…¾µtôà»g~é Èö‹•¡ëÆ,ÕïfšÝúajßÉ®³½‡—ð§ÍË¤³ýåøª,ôÜ
V}¬–â%æ^‰óDç!<Ÿ›Üéñ^·gž^‘›¤”~s+ßŸé3÷v	vDL¢“½ºŽÑrþéxãé­%]`% ÞÆæéÙ†,£íÄåŸ³Hí33šÅæªh2òä2Ønç¿Ÿ_„¢“ŽõÎ¶Œ£7Å‡¬:¤W ¥Ýx]ŠçJÏ÷Æ™ÄN¯DË®¯ôJ\ÄÕÃiÑqqœ?ñn3Ó&U…’žG#iÀ{fß&“·N;Ke…ó“èøsÇÞR.ßooØÖŽÝÜòätÈÙ)mÙÃåá…>ÚÏYï ‰–­šlIo« Ø¤ÁØ}¦ÎlZŒ¨Ù#w}^œ3†Ý¬_¥]†+´õD‚vpz\ïÃÕ\œ*>FË@CjfUuVÝ%»ÒÊ6áçÕ=‡×^PâZÛ¹ãpÜÒÙÁïw•åàgÚ¦3ÿ·¬ïsò¦¤ýàÍKà«_O Ø­‡/LHÏb@p!/ïˆ7£¿yã®~õÿö€eÍxÛÀv°•¤®‡Ž7mÔv¤Ã6)ëÉ?ˆ°Žo=D²a’7,y‡v$Ö@üBêö ñ…ÄÙÐð/zMÚ®æÑú%¾À?ŸÂ’_~…´ãqË
þ€ÏRN’QAé?¾ý‡¿~  ÎJj”4xœm‘Ks¢@…÷üŠ®šE–‘†n„©d* FñŠ¨¸I5tó§4hô×ÉÔìrW·N}çÞªsÚ†1€¥b"*+Je¢B,I!U¢iL•TEjÒ°²JDJb¢,Š¢µ R1Ô()E<$ÃH¡ÿyY–TM&aDp$2		’!øx¨)¢$‰!!@º6©`’2e9Ø“¸dx¡×ïåwœ=Sö@a„ ¤( 'BQÂª(Ò¶}À“´vx)«†Õùí-NÛ¤žÀ¶¸Žyƒþ×ã‰µÎÄ®5Yé[o3þÖ €+7BC×‘®¯õ,Ëæm´1æÃä„ì‹ÜXW]wvž¥¶â¯ÒÝÄjŽõ¤AûŽX.Öu¥×½Íx½”%«Î¦ãƒÏŠ«f«Ë=ÝÎCÕ·Ý;T{5s“bg›w;ó—Gär& /›³Ñv¥cÏ˜ûvœ‡m Y2Û TJ<ãnönNŸ¿š‡J2–ES>³õˆNÝ» Ä¥w3—™^Å‚ÐÒ¿Òõî”çëØXr™ç“#¦ÅÒPolÑée³2ùy\)Gîºn,€ÓF“8œÞï»Û¥£ÛÉØ¼?3ÆNÆßAµynÛd±<´‘å{_cÙrhJi°™%‡è:ñÎïŒzÓÏ9B>>TlÏÄz%ëØ¨ŠýN¢‹¾•9hejËeœ{ûÌÔÌ]õ™UsÛ{ÀëPj¯Â¿ÎÆ+óçÆ„%kbê.ÏAÃÎã-øeMQS  M›–ý¸¾N¼*?xZÔ9ûÈSÞ~„á‰ ”—‚õë&-Ûß J?ÁÓ— ¾Ð¯À—ë	pG¤ËÛ¿,Ë¨™BxœSË’ê6Üë+´»Âà7øV’Šlðð6Æ€7S²%?ÛÒÈ2Æ|}Y&•JE+©Õ§O«NKpB F0FúX“ÇºkX5ŒDVÑDÖ%ÆFk&™(Ã qR	¨ËJ$kXVLHª$I¦lFÉD—MLb¬Ç’>FãÄÀ 5"£®yç„ò”À_Ë×1ý£"1öÓòw(š®©CÓà@ÒU	ôh™Aþ_uÊÒ:Oáð¹¦öÜÝÀÝ|î|cùGÏ~á ˜ïÅÔ²¦ï©uwrÛn>:Û8’m³ô:WeÅp³<ÌG_šc•®J1—³¸òXTbÀ¨¤ËyÚ®ÊÍ-Ú[ËwÏú&…¢17ìòÁm:2×$;a‰êíé:À¡áž"mVš¶Ý¨ÎÒíÈœ—îjÞ:¦éÒõ`fVÃD3 qkCŒ÷ØŸÙûêðÁ¯sGš»Zéý~ò ¿ÏKÑœôÓ5xÿ¢vÍ'¿Ù]+ï¾«*ã€´ÍqByT´÷«í©ú%.DŠÒØÒ¬=8 …q}Ôü²0	s¸­ÅÓûâ}zW¶æš™µIêX•ç†±ž9šœƒr0+wÖñ-”6m
àŒíÅöªîJ_E£¬‘.íò²S­™êó½Å‚ Bþ¹¬|8~Ñ9£`Ë¥·ùˆV–]T òbsÌ0ñ¥8Ùª“ïD7µÈ!Ç·äºÜµµtn}wW2¦íƒï‹ðÆêÝÿv!‰þš¶½™ýÓ¬Au+Éñ¼?a’ßá' ‹¼pHáWM«°&i‚šB `%Ïä‰Œ@Nâgä–r„	´¯‰žµ¿ü«DpóbçULy/"^H£¯ç^tŒ@†êš`˜NÞà¾l‰,¯aÔ½îú”ƒ§…>æœöÖ‘ Aî{ÜèµgÃ\@Úˆ:ÍÈëÍŸ	åŸÅÙgF{£¥ì€CžVi’£îçøbàOÄ [R7xœm’ËŽ›L…÷<EKÙ$²îHÉ¯€ñø6ƒ±=3lFMwmssÆÎÓÇ“(ÿ*µ*•¾S›óõ 1KeÖ˜c[ŽMM¬Ñ¬T¡@ÌÀ¡(™ µD@Ý#]§ºÂ4`¶eP0 ;™ŽmÅ`4µ³,%Zš:¦­¿¼Â°£‚‰™Ž5¢‚®f–­3
ši™Ñ2j#5‰)‘¡/|Rs(ÑÉkè/?º¡ƒ¯þC*6LÕÑtÕDEU‰6UÅûþ/x¿Rô­n´åíGÎûbH¿ÞÄò6ïxŽ¦ãÍ« …‹=¯»ÛÇóßw	Ihì<ê¹®7sÝÈ‹ÖÜÇ±5‹½UíE«Ñu_Uºr]šÄ~ù&Â!>dÅ Ÿž4õ ¡_ŸêœžYYg}9»YãÞ”³›Þ
“+s–mç³×ðÊ£Ðv–äEs*öSÍ_ÏkDJFù4_,ñ:z;¤×aµÞWQ%ÆÍ1<Ù>[Üö‡tVl¸é­È ø€ÏVD#×	á¥Ùï&óEj×0Œ^mÈ“@]Î¨²¹c¶ŠyTíbv¶½…ÛÉE	.Oä4[ùÇí¼Ò%´d†ìd,‘_âƒÐdÿ ¶/ÞÅ•U6n¬¤Dõ8Éñµnö{ÝÂ¯çež<FÎ$äBB•©oËG«VwÛ}Ú–þð¦«äÔWÒd±Ùy<_X{¾›(!Jc-»ÛG1&ãw	}OÓ‘þt6ü7&=ÈµCY"çº}Ru£L4rO/¡+â@~Þ{(¡‚^ÜÞû[ï:*ICËHµ¢aí;Tòûì.çÿ8ú<~$¾ "ò¡ú×¨/ Œ¢K7åõÝÈš”Ó²ÉÑ‡¢¤f¿ ¡žšxœÏjÄ Äï>Åwl)	jþ¨e)[ºç=,”=ýLB	jºìÛ×öz›ø139"‚ÕÌ‰Ò¨^>í®œs×	ÇæúVr²éˆ!ƒ¡BJ®¤m•Sh„†³V)=Ñ¢ì]Û°F©è=Ok„÷¯iö˜&¸œáð0õå|¼ž>j³.oÀú¶cŠv‚ÃíJJºÌ9c„“3z¸ê1w°·?qL{ÂÚâå¼ïÊ(%äfÍ+ì›Õ-lqµ»É	üœ2¸²&£Çs¼ÃSUåû†Ï ã¸/å!ŸÿÁ`'„RL¾S5‡²;h_ùu„ß#:Øšü Šësú™1xœm‘K¢@ „ïüŠNöhfš††df3‚Š+ ø@o@7ˆÊCèÆÑ_¿îlö6uªT¾ºTñŽ1 c3Á¦º®2–R¤jz’2áÔ4ÙÔD1Ìó\j“ŽÕ˜™š@–êOÀ0U9ÏTŠ‘l)ÖÍÄH)UfúÏc¬!=Ë2p"ËH¥AŠÍ*y’¡fH…X6 ”~l:0Iê’]À.)jÖ7zû2½èÙOÊ~EGšbB(c0’Y–²¦ªJÎŸð´ä3‘‚·ºéX{¹%?Šôçø¦V´E_àå¯,{:÷@0@4Ÿzd½	í¯\¸õVfb	YY+·œè«`Z|<!P»ùÙh9'cÏÖ5ÃíÀÅv¿6xpK¡¦OÂý€ï†}ãÙéëÍoÙ-k79­sèƒR¸¹û…‡ý@ÿŒÆì\öGß<­rMH *±ç\]>ÅöUÛ3cŒ)¦³¦ÓÂ´lq»îå)¯6ŒÓ²=8®¨”à>“€jÍ×‘×¾ÖØ¼†qUE›…Ñ7ìÈ‚ØöO§yînWùaŒEåD$>—öãŠâ ó¡Ñî÷C+Õ§æ&MnÓCäÚšàc­yCÎ–NÝíV™Æ3õë^ˆèt=Añ©ø°É`\cÄêÃ
6¯ËÑÎD48úE½öár§OšíÌ+.þåQl¯)ìî‘}nâc-;6nñæ]ïqGÒ¿ÏloòýcÒ’u­¸\@Ç®‚õüPTCy×T nÒ†ÞžÔ´nø±¬‹×6áÙñE‘¤¼üüÞ6 \“ô‡šxœe»NÄ0Eû|Åô+"ÛñkÐ
mAKEA=±ÇYK;JAþž€èèîCçJ·­Ì`\´Ös()MÌ‰¢´ã@:š’‹”ÇÔ-´ri„ó^¡rpÎ%5"Áiö6éAˆcG{»×Jk<¨Q‰¥¶{.\Q:¥ÚËÿò¶o¼n}©+/£Ÿr»ïcêüÒj#G)áI!º3sk¼Â+•Ìø ©œî?Åm;ÇúÈ(*i.BžhkØž!å/hÇR!—s£¼sƒ7*4ñüsvãÐr-Ý7B_Ÿ2xœm’Í²šJ…ç<EWÝ¡•Ø?HwW%·(ê1GP4³¦i@EÀäèÓÇ››Ì²G{¯úöš¬Õi¥@J#	b¦)	L1TY‚3+a\™ž2„±j4B«ªRÆ0g©É3®$¥Tbdr.IMÅ¬Ì$ˆpžüá•àVF3‹#,B™Ä/kB(2ÌœHbA‹Knˆ¾+j¦¢:©Ä"¯”_Òá×ò­í[õ9Uÿd™Ä1‚A¡!ëëõÔu/x~ê}¾TµVMùø–Ÿº¢O>¿€¿¼åMÞžrðé¿qfóåó „ËùÚÞí·³_º0´ŽtlÛqm{ãlÞNSË¿¹[gE‹³éß‰^¶mó|i{›`ãûC0&$Ú7“f5Ý.Ð	ç´Ž/‡Åzwsþ¸Oèë£‰Ó8äæÈ²žoò<ÐmËËÄíºfÅ˜Þ«ƒ”—i¡–·QÞqßZ?üî
©Wðrœ±#^÷<^6í–Â‹ poE,Kg v¼Ý{¾v“´>nÙP†Ûb^áÁ1åˆ,VMÔÚÓž5ÏÙÄÍûx†tpñõl˜5±¾Ÿ%•—ÃóGd¯æ¹9Éò~ŒîcVá6ïm´^ž5y„åŒ×Ð#õŽ/Þî
÷:õ¼œ,¨^=¿ yNÛa
Íã£:f÷÷½•WVÊA8aèö¤ñ³*pÃu·Ù_Ð,*v‹òiýÕ _åÞÿg6[Oÿž˜ñ®t®@Ó—%ÐêÖ«¶ÿ ÂLéú
Ñ—¯^>U9¾ŠöUÃðN@vº<½ÈìUAÑuBŸªˆ*©ú}ýšøëxœŽI
Â@E÷}Šº€ÒC™î7ºö
=T›@&’
ˆ§7ˆ'p÷Þƒ_f(žƒK& f§‹Õ\“­M
Äh­£Œ5®I^ÍqáQ k‚¥P*qöÞgk(¦ì‘CSÑG”TÜ¤xÄ­‡Û(oîá<ïÂ_¾>‡ØõÇ<0žŒs¨-´×ZíuèDø¿µºw/È²ôÝ*P÷Q$æö0®Ç…¦>ON””2xœmRÉr›@¼óS•£*bX˜*;6#Y ´ ë6À°H,Ò0hñ×‡8•›ß©ß«îwènÎ(†PAÉ5I=ÁI‚!•¦ˆhÔe˜hŠp!Œ¶H*T45Ešu#O±”ŽˆæThjTõÌÀ
¢ÿùã+™h8ÁPÕpsˆó\É”jMÑhd©¢KP /;ÒV´1)ZÊÀKvÿ¿û¡§ÓŒþ’¦"ˆ¡¬`%…´kšŠó‘ìU|6$à¥í½ÔÏßEÅË!™Ž„odÅ¥è«üü;–ëÍ}z!ØÌ=ßÜî"÷ë. Ü{+µLÓ²Msm­ß+§<4vd-ôò¤7…Íï¦ù ýÜtæŽ»¨·ïÖÎ²r¶È¹·vP 	 :QÝ›$?ì3Bªº}{$\0òC¼Ö³¼¤aÇfdÂ#J:Ž]÷MÜù0A×‡ ø!~ôÇ~Egñz§.Ò›ó±aïLeH®fxÞAcÅ—LUù"÷™ì÷åì£IdçpÇ*yv7i»ÍG`»§P”L7Ô7ÕL\}ÖRuÛ­BÓ‡“¯ƒ÷)òì„ä¾Ð Ó-íÑ¥~êWÎå`iÁ~¶ÙLJ‡‹Þ§ÿúTIa8£NL"ûü–Hš¨å~ ï±@“(j¯qpŸ°e)%üü0ñ¨ï¢í±ß‘p©†¤=;ùªËæ‡eÉz³óóÁyÃR¶À†û*€W)ñnÂ¿Ì\ßù>1aEYAÁe¨kÀèu =?$EÇ g]JÒiÇf”bCú±7£¢JY×‚K=Un”õÕ¸JS85þ /*óç—xœÌA
Â0@Ñ}N1{Q&mM3 â²×˜L&´`ÒÏ¯ x —ÿ/^«ª€ÙŠ‘E¯>Ð•ì<òL˜ªKˆÑæàª¥V”¼8kÝ$Í^’qdIPZaÃ½­{……KÏ\ÚÚaÛú«õ‘7©{¹Èžï`Ý4ÑàF"8áuDó¹ykMÿL?"7…çÊ++|ÁóÍ{3NbšxœMÂ „÷œâíM~ã²ñ@°M,m<¿Ä…pùÍ|™i5%0	Gol’Âx/8W¨µ½Ô9J$ãšTSi¹$ëH3èRò‘œÌÁ9›¥U¡Á1êmÙ+ÌTúF¥-f8/?Z®Ûë^¦¸oãÑyD¯àÄâl¤ÛÚZú{€Ý¾-ÏþX¼S}­ÅÄ'Ç>¥ÚLc˜2xœm‘Í’¢0E÷<Eªfiõ ¤ª{ªATìVTDQwFA0üøóôÓãÔÌªïê«ó»ºäè(¦¦éD×M¨™B¦ibJ4Ãäi‚	¡D©˜äçèÄŒ"†Yd" DMu†l"“á˜Ã(Õ(U¬%ÿü˜ÅBãë!e$F±šŽÂ IhÌV1eTams(%pØYð„,;s	^“ëóx¯ÛšÿLø/ šÈ€jP=¨B¨ÄeQˆ¦ù’Ç¢qÛ¼žKÉ«üþž‰æÐF?¿„ojY•Õ"/bÇ,Æ°šŒ=+XûÃ'W€®µÛ–e,ki/?„sÙÀ·?ñáˆæ.'WËÊìëÄúÐá4=QÇú}ŠîUßtÛÑAGÿ‘~U6òÆ=çqªÅã,–2ó…W–›Õg7q]aÔŽ}»¯ÃÁÈ+÷îcqRu¼oâã+À½¥Z%))ÂÎ}u¢o£Ý‚žêàXú™Ü%í·èT4êÆ½×ÕÝï˜^©:>¨¡9	n¥œ°°dÕîµÝ2Ã°?Ù±å°W#Eöü²ßì9m^Aù©éÙb“uáœíêt¿=è‰º*8ãyi,îA"çfG»\Äni|¬B-™²¶wQaS}sŽ¶K„É!ãûz
¸Èu0³GAæoök­%6Ç×|µº˜MÃtÓnôc¹o5³šåñiz™¹1ÜÑ½šàõ›Þè°W+7zÎ÷‹)3.3ª6Ïä—–×ø¡êD©, 2víKÞqÙ¼¤¥Œù¿Åy[‹Ž+ŠÿäàÉÁþKoùÄ™xœÁJÄ0†ïyŠÁ‹ŠtIÒ¤MAß@ÅsÒ™lmRÚtÕ··»²àMð2ÿÏÌÿÍ”™ÓjRV8¥[å”iÑJ%|-Z/käšK…`“›)à½éd×ZV×ÞS°ÄMGQ²¶N7š7µ	Ì­¥Ï3<»i€wwH4Ã=~œ›Çe]h‡ô ¢QÊÖ­®%ÜqÁ9ëò8ÆRè£,GÚÃÛ„®ô4LPè³@Ø8ªj«1öÚ,Ù&î Gš—˜ÓÅ‡Þ-à‰Ì4æ#!ÄÄ,×V¢Æ‚›«Ÿ”§œ–<ÄsÔe8Oå´Ë%„§Ía˜»u¤âNúÕ-øµ@é³aÄt]à@Ö37î{‰Û¥Xå*ÿµÿëì‡Î’9œ#xœ1OÃ0…wÿŠ Ô*ql'©B6¤°¡s|n¬6N»-ü{œ`€í†÷¾wïÅÊRT…R¢ÐºÔ–W¦P¥¬jäF™2ãµàVdœíp ËªRµäe-i•	iŽ™ÌyQÛš7R¢(s÷±í¸GïhÏ¸ö4Àµ9NÇmØšº\	Q%—\ey–±¦ï:#ýÛ*ªüÓÊü¡£¬väÁÐÁ5ôÖl÷Álzæ8¸H0& 7Œ-§(àÉ«²Ú².ÎN~„xì(ìðG¿'¶Åý6ž]²882{èpC[ú:´©@2bØ8¿õ>éÙÏ?çpG¦Ší4¬ûhˆ)mKñ< 3):tž5-úuz›[×´àÂ˜2bV¯/ËÇßõôþ«Éœ±'—Æ5³ÞÚ™~_üµ=û Çþ»–$xœQÁJ1½ç+æ¨¨e³Ým7ED°Þ
z“I2éw“²É¶öïm=J $“÷Þ¼7É,+G²©
ek\8£´.Ò…š²)¥2UQ+Ó4Flq A5´°%RcÊº”ÕÒJƒÊ¹9:ÝÐ\VšÜ’%´À1·q€5O¼à&Ð ×v<Ü¦1ÑÌÒÈEU©y-Õ.
YÂÄ¾÷9Ó¿©u!¿¨"ìzZÁcè·ÀÒÎ‚	1UÞèÃtcò;:;‡Œï”Àp.ØûÜ)>l ·ôÅœÁ:Bˆù¤†"‘‰ÁBö=ýDý¢Ýbw4ìŸ	\‡›IÎŒý4FŸAó®é˜Uû©?W÷-ž0&Øqœž0¤<sSo	¡%ví»`à·Á¥É/{
õøvÿz÷À^øÞrÃoŒã1ÚËS²	ÇIÈ'qt*Ä“çiÛ«èÜ•>¬þúñ	ž„Äxœ½nÃ0ƒw=ÅmŠ'KþŠ¢Cž :'é°å@–“úíë¦²èFüH0'f°ˆKlTMDZR£œ‘÷¾Uë
}í¨kªZ\(qÌÐYÝ©®VUm´*¥”Ê8š–\‰¶3UJ	Zr?%8R<À#'xv·»x—™÷Ž_@Öz+Ô-*xB‰(ì4Ž!gþ*âuä¼q¤‘ÁOÉ2\)2Cž~œÓC>‘µ<ÏBÃœC</aîÁLiXÁp¾1G(îù(º_ýÈÐópÌŸY˜Ò÷èÖ¹Ý¢Sr›=¬{!ÞÃvÀí&ïwf=üõO|S±‡Ï”xœKNÄ0÷>Ek¶H#Çß!Ä‚ $Öív›‰”8‘í¸=ÑpvoQU¯WfHIeT*“¦aÈÆi4¤dˆ:iå=Éä’'±aåÒÁG+‘”Ï&’Ä!kTÎ:eC	s¦1-pï·µÂ+–‰gøÀÏÂžÒ×}¼´½ñ5ñ3Î˜ -<ÈAJAë²L½ó?TñÆ×—r,üëÆ
.Ü6$þ¦yoÓÁ qÆ}î!ÞoSƒzüƒ:kN†tR‘mV4ºˆc¦<*˜Hc¤®âue4‘5xœm’[o£0…ßù–öucbfÕ®Šs!$mš&/+cŒ!!†p	Mý¦•ömçitôÍÑŒÎ´µ Mè$¶æŒqÌ	Nc„Ì˜SDlÁ$µµŠÕBµÀaŽ‘B0J¡Í‘& rƒ¥)Áwƒ˜Ä,1É?ÛVÇáÃ8qøÝ4B›V‚L3&(NÄ)–Æº6+k0f*Ø1©D“þ»ynºFüLÄo`XØ„Ä±‰th@¨ñò|ÎÛö{y;ëbð¨ÊZTÅíYæmÖÅ?ïÀÆd%›\‚‡¯¢Ï_‚•·[ß[ºA¸™|ëÐ@ßPN]—Ž\wM×ó|œ­¬Ñ†.ììˆß®¨ö{×•RúîB–aºÝEÞíÔRÃÓ·2n¦„Nßß÷Çµ*Ì^­fü&ÕûVFx{è]þ‚jÓ?9ëyÇá!²Ð?~~´åqºg·xn4@a™ŒOÓÈP[óØL	ß¬X#="Q4ëu™+©íx&>7£öU«h:}»ž`¶°.8ûŸìÂÁóbŽ=Œu=+eƒFqÜ÷ƒ¼†ÇHWŽÉpçg–ÔTmÑ%n3,q}ÚHÚî$Ús8iò°[y:ûÔAÕ–oNÀ‹uGÏ8Ãƒìt_Óô_^ŒÁaÚ1Ô@×_8šG^³°,«¯ôÍœò<òí%}½¿”+s;Ù·¨œØ—èxôäÄ^±¸óW·Óhý¤§k0ºóÍd9þbÚ«¨¥ UW —N4-øa ‚@Z—gpfu›«YÝ¥jYõ§ëòäOÆTRäJjšw±zP×³øÒü|u@5 _0øƒôþ¯ß&‰¸æ\4Ê
Ë’IxœSß“ª6}Ï_‘÷í® (x§íVÄŸ¬zÕ—N€€ÙÅ$† â_ßpÎÜ‡N§Ó<%ß9‡“œO
ŒažO´Ifé2S„R3µÍ<1ŒQbê¦=ÌÛšZ–[€#©„4ÑsÛ¶M#×,¤ãÌFXÃÃTGyn›Š ±”l€jyan„B3Q`øëõÇ±øƒb‰8KÙõw¨Í‘fŒMMƒ/ÚÈÐ€ª^‰”øÿ¡^T¤€¯ýr=À­¿…ÑÂœxz?ê Hv³¹ë8î{áÜgÄóêeç÷ø£^…]˜ÑÇŠò¬^EþàÓœ9×EzN<÷õKJCž\3ÀäzÐNG·]_ƒ&Ù9«÷Ð¹árhòEò²•yä&e‚º³^·ƒ¼°–…Ãh;þX†Ûã	@!ÂìÌ,%y6¢[Ý4ïžŒ§]:›ÆMk³Ï
}wØÄ´iì,ì\PÕ´önÚÀÁuåGzè|òÚ)éšófwí7áyEÝ£ïP¡5mÂå—O×ßcOæU¨×Žås`qÙŒ
q^Ü¸:Úk+NÂ ÞMLZ+©ì%âö1H§šû.ßªür:·Ž<>”Ô­M M›ÏyÓŸûZkR=]V/g'ø2¸ÔíÓz»[¶üVfm¹³õÏcQ9û‡ž™º?Š“ÀŠüt{Ú»1éÚÔåÃ?‘Ew,7·m»øÝ0¾ûÕÚ¢‹£U7Q)"6YN5àoïr¶Ï×ö‚é?½5xÆå•6Wüæäû¤Ìp•Âº&¼ š•*Z0W™eTõg¸!)® ˆ/øß *žRuX:œC^Ö…ª(ð3$LûÂ¢¼v8í'ªæ…@†’Á’$½ÒTšào™2ëeJV^°À°EÌKÔâ¬Ç$¸l‰¼ü+¦H[&¾?©Ô=i1­j…{jV§’4øi£7$—Ê5‘.óþO+uTä„‚ò“?	Í™ú,êTöŒê L¬T¿ºcÁ¸ Hâ²{ "ÅÙ+Ëó×¤ûöfüxX…/”3xœm’K›0F÷ü
K]FÓ1óÚª'$!$!C’ªclâð˜0É¯ï´•ºê]]]ïnÎ'[Æ ²lËÔtdêPe©ÍS¹JSŠ4¦ã„ê¥L³S¤4¤e•f‚!¡šÉõ„B¢rD4¶m˜Î©•PªèÏ,ÝVÕÒˆe#‹b]M‰–¦Œ§™$#-±,M!½¼Ô-˜J°Ä$«X¾¤ÃŸå{×wìsÊ¾ÕÐ1Ô1AB…Öe)¤ü€çB.ú|©ê–5Åã{&ä¥O> ÿ‰eMÖ‰¼üw:÷ÎC°÷ævÓ?w(`è\ê:Ž;vœ­»õÅd·ŠÆ;wi^®úæŽZopœ§uò¿Tö‚Ú7™çÉV¾ÙDÝp|,ù
é¬|Ìœ÷MÓPTË”!XKÏÁovòèœñÏŒkQë×øš»jø¦ îèú)²Èð3êÕîƒÑ¶Ú4ð8ý=N²œGQ1	/[ßû"9µQ¶«äï©YÈ–+ ¿?Ðfåf\+Ž›|XÌ*.§g·ñ~¢áZ-·§·í+•Éý)×yw0ÉÒ-/v–R¦;¹m‚»Žv¹mÚhëá™Ÿq²*4µ	¼×XÏ‹vu°õËZT‡ûê<;âù]çýÇ‡ÐJ¤îNwB,Ê}çç§.ï#ï2º©6_âÁ3!âõq´JÞòºóŒóyö6ŽG^^ý±÷U_'ÇÙQùëlLþoLY³6c é‹´ìÖ³N‚O*²4ÀÛºWÆyË¤¬zmÚ™XQ~T÷’½ÐBüNš
)êŠ€^H•±ð^†;ðýXeýv‘,xœ…R=Û0Ýõ+¸ü•8Åîp@‹vêÐ¡(™¢b²dHòùòïK9ÍÒ¡]Š"ß{|T
DÐûcW·M×–©ž$UºB…MMí~ÀEu¯1Ë@.A7ìK‰u§ÛKYéFÖ‡ý¡Þ÷}©¤ÖxÛCÓ¹¤ÑøLZÃC~q¸³>®
wè§PÚöØu}ÓCQÊRpv2)Q€éYø./ŽojÝ‚Ç¸DÚ)ºµö}×[øPVÜ*õ¯æ¸¤šA
G”ˆ#x8Ä³’I
‘ËŒCaºWl=0ÑäÃßm ©®Q,óžlô€~™-	Æ›Œãµy§Ég^¸Câ¼ 9e¤sz½+1î›ŠŒÎà~Ìí„xæTâ:p´‚^&ãð`ç¥³^Ï¸Ät6
Ò(¬ÆZˆfš­¾r&“+Ò)ù`¾œÛ,`­9–Özduãß{ª
¯u1\OÿÞ•xöÅÓ¶SîÈÕŸœ
ÒÙâ«øñg='vIm·E²™1Ê3³¨‰Â…_èÂ5ÙãØ5ïf™püù·žÿ|ñ9õï6xœm“ÉŽ›@†ï<EK9¢Œ›½‰’hÀ`Àx™‰—[Ó4‹Íæîýôq&Ê-uªå+•~U•`”“Zª¢+šI‘f¤–Ž¨jTÉ3Ó"Ru”åÔ6‰!õ˜ÑV ¢¤
…¦™ŽRŠ°‰t!M³In1É0!ÄúÇ*¶ìB¬AKÕ5ÛÔ4ÃÆ¹©e™‘šjª¹®C	¢ìðp[ÑìqÑR¾g·Oç•œ¾dô'PL]·ÃÖU CB‰tMS	ñ„ƒJ„C
¾·£}}-*QéËøO[Ñ¼*À×?æúAƒu°»(ˆ·÷­ÿ™—€nÜ%®ã¸SÇÙ¸›y5UÍtë.¬ò¬'£Æ¢›ã âGObw$éÑëumÕúbûs1é%0V'Ë³DÅ=Ž¿Ÿ:årL‹›ÿq FxéBÖß&£k/—»åIÏ”:Þ¬¢“{YúB$ð~l&²)ë;ídø¶;DêéœÖba]ÛjýxÀšóùm¯°%w#YËC—[õ2[]âð&3qyÌ:/É3ŸoãJ¬æMûW&¿{·y4¬“•ÇKí~Î /3LÃ¼õ4¹¼ùxª8§ÉÍÃòÈöÜž)×7y²˜Éé`óù¸Ú*”eAã/Ü™õáœòÝDÐÁÂò©¢1B´&Mœ_§55ÊùqŠË¦>¢_¾ãb÷ÔœGÏÂž§\dÍ
÷èâê-¤[ÙYýÀC†…ôwg~ìýcÒŠ²‚‚~¨kÀèu \€/Šf!³®7Õ—”f“óçÙHÒ{ŸaAA;6ôkÏªV¼o $m}Ÿ!˜í¯;Á(ñóºVàª ƒ×Uö§\5ø9“Ñ±âU×‚vhRÊ~!=
Cœ,xœ}‘K“¢0…÷üŠì­ÖðÐ@U÷TZQ”ÚÁ]ÂKT„€â¯gz–SsW÷~uÎ­SuDÃ9HRª“T†È 	¢:„EÌà„1eÊ‘¢2FfºŠˆT“†ŸH¡BN´©aP-¥œŒèÊó‰ŽR©36%3D©.‘Nä—ìÈ© {’sž€×öy|ïï]Ë›v|¾4¼®†qVˆ¼£cv9ý òLÓtdÈ2/ðHzÒS!o€]§£àõ¯íý¿¶¬ÎÚ"/¿ÇœÛ®¶öì\ÛÇaô9ÿÃ% [k2cÓÂ80ƒea	è[Ÿ¦‡òRÛôjãÞ0"×ÅKˆ½—“»/›p‡ý:ºïI`Ø’¤çêî=)pg”‰¯Žœópˆ4d•³ØÐ±ŠÅ/C¯06¶+–2‘<2CÕ¨W.Î‡aNº}=zêÊµÙD¶–v>²6»hÿy‡GµV¦Ø4-ØT½®WžÏO$;œ%GÔ}t´ø:Ô¼¹ø¥‚‚Én¿†GD«Ó*Ô‡«ü:Ð¶ŠÂÛ›±üÙ„â\+$P»]f’¯Ðº~Ämò£’AÂ‚lºKÑ)õ"gÉãV»¢^jöÎ°‚õÊMyÜ¿“€w²E;êóV¨L¶|ožÔÔÉ’“Þ;÷yÂ}`ñâÎ¡c!v/7Åêðf?Çî9Á›ÞÒ¤Ô¤ïÎæþÇ¿“¢:!‚ƒsâ/uSœÅ˜ýUßÊ5xœm‘K›0€ïü
K=®¶Á@0TÝªdI Keƒ	0˜ä×7ÛªR;§ÑÌ73}¢¡zªêZ'š*«ë1”Ÿ™Q"k$5uãT5–8n( •Œ¬M“h)¡ÔŒ±¡¤Ä0Pª U‡XG„ÿøDŽ‘‚RHa‚•DÓ‡ª¢¡¡Bƒ3ÅP†ñó‰%Ü‰¬n€‹£-XÓœÑøLÁ÷ì¹çgÛµôkB ¨kš)#!ð"CY–âºªr!hœ\¸ßYÝP^Þžr‘uäëødìÄOm~¯aOoVÎ
l<gamÃõäO]è[;¶-ËYV`Ó|$«ÓÑÚöQVhË«Úx½e¥qèYÎ¥B‘ê"}¬“¡{äÓÉÀëz	Ì"ìîÛ¢Ožð(€AQêŽ¹xÆÞ+ì—÷vA/¡uX³ö æ¦6»>—g.‡þÑ'8®·ö­ ™Çç]cT[Bë-<>öË›=9¿¯^ØDÄ=Su™ÜEE¦e¿ÓvYpµ·(³$ §º¯œ“Ëá4»…k²y<š§Ì¢™«©¨'óCQ½7MíûaÞæÊCbÐ–K2Ñ–p÷#ìWiÌºÓ\‹ï­±*mwo»_ŒÝhWÚùÐô›°LÅÕ¸”4>ÈÖ#|Ï„9ãÑó_¼¶ïìã|æÌiq1»ˆÍö²ƒ×’Gã+R¬Žó²Þ0M:'Z’r‘\2Úçjø&·£UøÒ_g“ÅøscÒœ6'
xW– ¡—Ž¶|êS|ÚÔ¨p#rözâ÷AÍæ	½æ1mmÍ~µô”â®’Äè³Ç_Ùµ¢ß@šßÀÿ0øÇœAPw‚wâ7|Ôå–RxœTËr£8Ýë+´›î¢ó§&S±‰üŒ±³É$"„ùú–í©®LÕ,¦†•8ºçèÞs¯ÄÆÐ6SÍÔ“8Ñ5YÃÈŒY¬TÅJd=J‡¦¢Ä©f[ÔˆaÂa*«È²‘n‡‘žFcd«idÛVªZšÈ´¢È¨å9eð1^èaÊ2¯.¿ÙŸsT×·1­þ€Š©ë¶©Ûº%ÙÐd Ðªàÿ?vVgM‘Á›óçŽ=?€o×¾8›—Õø‚`±œL]Çq2§›ãqûØÍ<og«~•Ï©“v¶öïúÄ©üYÝé›©§ä1YÕQ•8 FÕVÞïÜÓS£¥3{X9¸TõÚ¤EfMÜÁÐMÞRm–L½W­Š:eÃœ)d™½ °4Ø:·âšHÁhQÑÍ‡›–|OO‡ÀC[ß'Ôv®ºÚöêJsG•‹JkøÚI™ãr }I=XºlDÏYSªíÖèžVáËþqT÷aÌûOxÈÅTfŸòRª•édWHÞû<\³ÆËSò¼ŸæƒéÃîušÇ4”F^×ÖdlFÕsZOÂé!À+IÖF[{ë¢W‰sOêu‹haUrxjãÇdWýn9JØ!<ôÇ™¡9åþËþ0Ý‡ÍÎÎ×G;÷“×n•± <n“À#ÃÖ(Fš²®½ù®I7.ïsj¬µ(f§Aû¤ñL¾O]~=(¹¼– ¼oªy®Ý£ë5¸ŽË9Vø¦E)@‚EŒØà,EmÉ¡´÷†H[^· '= Ï1lëŒ¡CNaYDg<ÀÜ©kX—m&È©÷¯Ê€ÐÓ/õ&íEàÌ;1J²¿‹ÞqÌ!ïk‘H&§'#\ÒÓHü’ñ9îíwß)ÊPÿö†CýJ’;à4WDèþõ5"Ãüí|Â7~‡÷÷Wú¹’ƒ)*JœÜ'¢Œã~‹)Ã"åªÆÉw &Â4žŒzX£¦—ðRˆ°•Ñšˆãk9¹k5ÂðÕŽ[è“¸l…Æ´­Ki
«‚Ûâ‘Lô"ÇìbÃ	—%¼¢&Lð©,È/ó0IÎÄóòK»~@$pŠ>œß5±—mF)‡×nXÁÉMÓ›¨¿ûïø	ü³ÑxœÍJÄ0…÷yŠ»—–Ü$ÍÏ0ˆß@ÄuÒ{£¶)™tßÞAt-¸;¾ïœÞ˜AÓ”g‰Ù¦ ˆ“ñ)åˆ¨óä=Z¶éNh/öØxëà©(æØ £›}Ì¤XÏÆÑlŠxôÚà9n…x‹ï78Óí;<]ŽÄ€Ö˜É›Éix(¥˜ëº–ÞùªHGYè¯;ÅÎ°”´]W†[‹»?e¯pÅQmÖPó/3
ñRîë4Ôœ‡ôyúë\|Gjc:›2xœm‘I“›0„ïü
UåèÌ Y‰ÔLj ÛxÁ¯3ö%%ÀØlf1cÿú8“Ê-ïÐõªëë¾tSI	Î ¢ßS®õ‘€šŽ$4ˆ†˜ ¢„+%¯dÞ€€E4€ÐÐ`ô€ãXHa@Î0â8"š]ˆüãÇˆáOP!N5(Å#$Ò¥N¥ˆB]§
o›cQÏ™‚wç²/¢ûzÞê¶–ÏBþH×4BFèA¡Y–4Ív’fÜà%/*Y¦··8iŽmðü þ‹Ë¸Nbðôç¬¡3ñ€ïø`=q<s³]¿|( «­Ð2MË6Í¥µœ&Ö¹Ëì•5£Ç“¶¸âjÒ™¦Ã‰9:L§$Z¼‡ïçþ…švƒ· óÛØŸ‡®:ÛîµÍ0®¯—›™ºY„ñq½ÆœŒÛã­<Ø­+;ªvÁ6R›+ôÈâª€É²eŽS.nËÒ‹þ`Ëuobo7ŸVÎÑ]UWn\Þ+zþýÖË²÷Óaà^°Û±fµ»a+ÝÈgŸÎÛÑ£üÃálç,®ïŽ¹Ý9~ÖœÉ!šú8fçõ]W“ôÂªóâ»½×ÞSÝw»BoFBºòÓt”©éqsîP5Ë)jçç¥}t¶™ž>²ÅÁ’0R@Ü÷¾qÖ-™ŒÈ½À>³÷\ï«›ÞÈÃAk ž7ùeRã’æv5Vi95Y{£žÜ¾*àÕ:hsåïfCoðÿÅ”¹¬b	Ê6MA%/­¬ðaŠAT¨CÙS*¥%ŸjRü
3¡(ù5“?ÀÃ¢Î¾?¤”!èª"A[óXþ¨Põ¸œxœAjÃ0E÷:ÅìKÂHÖHr¥(Ýø²fäb©ØJJo_-zþâó?¼×v˜c@a6†yðÑš1dši¶NŽdu`ÊÚSTŸq—Ò '2dmò€6p`ï|¢ˆŒ‰\xÔÚgíVw˜š<¥À$²¤›Ô;¼wëõHÃù.òvÄíèß9Õí´³–YàGDÕ×mmMþòA#ý‚Tynr
E„¡UX¤A9ÖÞ¿Ö$JMëR„O5çÓü}ù›Oý Dg5›xœMnÃ „÷œâí[GØ`~¢ªêºó	À<l$àT¹}HÔe»ùô¦DB²YyÏ¨í ìh¬BÖŽ£p5gL
dŠ\LÁÔ`ð^c-Wž·Ô	Ï™¥LnpÔöšºY"³·5˜^1Á„{ZæóŸÇê[{ªNâG5±ÝiÎñzÁù(x¯%¼PM)9ÒZÃ‰¤¢OI×ˆg\¹ueOpW›ä ¢9~µ¡®ùëYXSÑAN°âv!ä1üƒé~SRn°„x…ÐîÄ¾¹_2B¦°$t]ö¾³·óßîo}ÒŠxœ½NÄ0„{?Åöp§µ'N„”t):ùgDJìSìÜÁÛã^ š-fgæÓäj^¢A%áŽk#}'H{á$už´“(¤gg½QÈ <Ö$\Ru–¨åÊ4’«Ú™¶qF ®le™Þó72](À@{íDq×B}H–£:.DOI¯©üŽ6®À›º–è*wØ!²¢®sÎô¯¢V¡Àß".+õàçpi½/çL®[#ìIÄXÑaN ÌœÄ Ï…­ƒƒ—kÜ¯àÛñýDÓ÷Å•@ÚÉÝì7ÀiŽ'½éøíal˜Ç@î½?˜ÏþoØîá…š’xœ¥ŽKnÃ Eç¬‚yë¹æUQÐ™=àa;²Áœª»¯»„ªÓs¥sn+DÜªAõB
ÆÊ@Q€ ÞI4AD£´Ö¤$°¥Æ‰ÚXÑ	e‚4CC”Â‚S"ô’áÑæ\øØèE‰t¤ÉÏ”WþyV?ªïÁt+Ñ½âVÏ­óy»ñ^	!µ6 øX vÒmiþ-bõp{ÉOòíÊ×Å¥×FÝWÁ{ÀFŒý’Ç’X¦Ú…º“ç~Æ4QàXO¡[Zel\¦Dá’c¼¸ïëß^±Žáu@–3xœm‘IoÛ0…ïúzk£HIÑû¦X’íÄ)zi’¢-K²–Èö¯oš¢·¼Ë<¼ùf.¯©„ hÉ™0=‹‰yH@èìMKx›ósr£L*‘7€I‡‹½ÀÜf¶‹%÷0±‰%Ã›#ìšÄÂþç%!rìZœ˜&ÈAÐÛïˆ’ÏÏA’[BäIÛ¤EI®E^•‹
<î»/ó\·µxØ‹ŸÀò\zcÜ™–i¼8tÓ|ÂcÝLZó¢ev}VºI[öð	|s¦JUkîÿŠÇÓ ¬Æ+OÇ¿ÞDÃ¯Ü èjÊ©ïÓ¾ï‡4œišZ‹~Dç(=¸/N5í|ŸÉÝÔï/áNú±ß£ {SÌ-¦åÐ ó˜ºTö–5¾»[Æ]ôvNgžvw“ËÄ·Õ±v9Ò¨Ø´»[T$"ª7V×•;‡íû‘lCV”‰ŸÛíº¾¬ópq«J¼–¥ò²»Ž–°/•t‹^Nq>²ê£Iî|e á†Ó[ÑÛÌ©ÏS
_okµ‡}{ôGNW¼ø6ç}_l[m×¨.mK-VíÄ¾žßÄ ×ôPS2'Ýúð>}=^ÆÞKÌÖ»Ù•TÇËšš<>%qšß½õöÜá-ð¤·×þÅÜ ½Ü¦uÌ®K‡Ë’Œ\ÉÉ°œ	‰&“Ûkè:êClÈ`33[+ÛP=€(¥·Íé¬qñd€§BOzÆ¿Î†ÁàûÆŒ¥¨” e›e çVÔøa9È²*Nà ¤¬Ä5É´È{uîAó^ê‹aüÊ?Nâžgú7éøÚ ž”	Ó™n´¨A-šFçêèþ ™xœŽÍJÅ0…÷yŠy–¤M&©\D\ˆ;q%.ò3é´Iis¯úöFp-®æœ™ïp¦îD ƒ²Ñ;â(Yš”„QOƒ›x›^)Ë6»S®àâè)ñƒ¤‰Í4L":g”áÑh#ù$ŒWÌ^ê¹ìðH1ÂS¢§÷&û¥É»à{_Ö[(¥Ð	GÎYÛ®©Vú_P+4¿Aöš¯+u~Ioð>áÈ¨8x»Y—–TpP­)ÏàþlóL‘Év%¨¥9…¼_¶`+A«‚m¹Ì)Ã•ö#•ü‰^`?2öœæL¡+1vîëæïgÙ7@ïo[’4xœmÒÉn£@à;OÑÒ-ÇÝÐl£d0¼cã„n›}1ÆO?N¢‘æRJ¥¯Nµ5¥@#HcE„!°U
‘(Y¡!&H¢ˆç%®jš·@R)ªH%‚©L¢ª4#•$Ê0Dˆô³ÿyÈ±ÈCÌËDX•UrDc¤P!”ù(’0æ±¬pA×žŠAÎh
ŽA’Ó<Gý×ðÚt}Šè€^DD0‚B.,²Œµí[¬µ;žó¢¦e:¼&¬=uäé~8KÊ¤a	–nZóp,ìçÖF{;¸æ×žè=Ô5MŸjÚNß-˜îm„©«/åÓo¯B=ï5MT/sM_1Ëá}´t'#í-Õf¢pàê-ùŽ-QŸ'æ`WÑéèòS³³:ÒÂ3-óÛæe>d–?ÚM>²ÀØå²„zär@JìÂ÷VÉí8lÓw2ßúeñNnV´]iïÖÝñÓ“ß+…ïNÓs´YmÛÙbc%ÁrŠ8P(åîž(&ÉG$nÎ¨ó“íhÛ¾Êo}h«¸˜ÎSÃßV0ƒy©þ˜lƒåð~n¡{å Ê®¶ÉŽélå•ì½,ÉÓEï9©ƒÃ8ùD©ê€®÷ê1¿óþ\šu«·KãYÆì '".¬0;6JìM/Ó6.ã»…qŒ”î×<Ã]±ö.Vêìq{Õ»õŠ]-ÒÊ†/x1j•rß™™ãçÄ¸5­
Ê.MAM«Ž6-ø…‚¸.2À’ ŸÄì6>7E>.º¶ìÚqÊšvÜt¤ŽË¯—5ËÛß`Ænà‚oâÇ‡þ‡ÿ
gŸxœŽAKÄ0„ïùï.]’¦IÚEÄƒø<ç%¯n–mR’Wuÿ½]ñ®00ÃW"p!JšG#ùÁÊÉHC7RPé qÔªï­X}¥Ì`Gß«q2dq ‡1È‰æ'DeœJ¡¦›„ßøT*<ùœèoþ=S…ûøùmktˆô ÊƒQFî¤’R„²,‰™þ[µÒô¿U‘?êÖš2á9}Á¹•eãuc˜÷3—Ô¸k¶kâõDPKaÈD±@ŸÁ×ê¯7È{¶[Á3>ñ’öýØ•yîðzüëžø~pž2xœm‘Ko£@„ïüŠ‘öeÍc`•¬ŒÁŽŸ·a˜ÁØ€axÙùõëdµ·ô¡ÔêþJu¨ŽS
PB°!"%!©
©¨*ªDÆ0AbªR’CV4–$B9­:€4EYf4‘¢œ`(I¥ªŒê:zXXªÉÚ^G&¥R¢¨F"1=5$"ª’¦É˜j:“yºÄ¨€ûîtå`Š«œ`‡³Šrð’Ž_Ë[Û·ôgJ	A¨JH”DðôQ ×²Ì»îÏóÎíðR]9­‹û[–w§>ùù ¾±euÖæxþË™{!ˆæX{óÐ|ß¬œ¯» 0¶±LÓ²M3¶â?¹µõ{eùÚé—ƒÂ½Ñ4ÏÏœžÇ´»í£ÒW'×8øÑb²d† ‚L.ý}siÂÃÑqnFž°ºôL:Î.ù}=Äý°Žºpm:÷ªÛ&ØÖ…S¦µ]ºûÙm}@Éô	RœÄÜ‹ÞÁ½Ð“ígãdÚ/Å*+l|ZÎv±¬BQÚíš:æî¼®KXrTVsÙ	€{ö¦]‹ðnI|Ìõ7¤”MâÇg	QÜýí†B}ïi$îÞecëp·Ñ­Íjv”G´›ÔÎOËqº1›•×vøÈbºGf¨\Ü‰:¾ëõ&Šü32ÛyàJ¬&¥WîÜ.Z± ÖGè…ÉûRmë#Ö²ûyàÓÑÓ{•)ÄSó©Éhov´	â!ë”±ñj—°Í"M¾¾
àÂ…%üëÌ	§ß7&,(Ï(¨û¢ œ6=m;ðCR¿– Ïð8aùíy <¹¶ô™8Ì3r­Xžý^E8Å-Ý‰‚Ï/pÑÓ¿}¼ýÖŸxœŽËNÃ0D÷þŠ»G©œ8~´B$¶¬X°öãÞÔªcWŽ›Š¿' 
ØÁb¤ÑhÎhZEå¼Ýs%œrD.…ìQY¯xèƒßB“sìl+æ†´DÇ•&M¡wie™a0Ü“½3
³—v,žmŽ˜àÍN+Ü‡ë—y\.î>@¯ÆQörÜñžsæË<ÇÖðß¨Ú‹Êò:ãžR*Wèº«+%;A+³¯h· •	®˜{±õíˆPÎ-–v›š·ô7üYþ€H,#;Æ^ãö/t…¨sï‡¿î³è2{¸š2xœR_‹œ0Ï§˜7[Š¢®®ö8Ž¶”Â=·ÐÇe4—M$‰Úýö×½»—…ò2óû7™è‰ UR¶e_—usPe¯ªC×–õá3ª®.šœk+Õ+1¡'áØTU^–Šºâxhzì°*ú¢&UÕŠÚöH½T²)s‡ïh5øƒ%r½^¾„9P&é	ŠcUÕEY–|Ê‹<½;ŸuŒô¿Ðªn›T zg•àÙöž0Ä‘@`A3“ÏêýI˜¼[´$	òh ê3¾Îà×È2b¼À<˜(ý‡Ý
E7Å“qv89k.>ÂˆV
¤)kt.PKIº$Ù½~fž½Ã:’…7Ôæ—ÃK`>H–dÓéÜÔ¬|´1`]ä®Ûî_öÿ#‹igaÂ8îøWöLˆoúÜy ÷ >h;ì¦,?\³ðz\Í1ÍW–ùË¶Ùm)¶è¯öãˆLyÚ‘³L°Å~£Z)Ú¶Ì\„¤‰¬ÜäXèfÃïíì7l~nÓÈàWÞÝ¾–W#.ÝmmûžPJÏj^%™:¥Òîòð¯M,'æœ2xœmRÛŽ¢@}ç+:ÙG3#M÷Ðíff3 :âAÇ·nhå&¾~Ý™ìÛT*•Js’JÎ©K!€T¬ˆ0"tD¡à(`ªBe
Gü1qÈe‚¥‚•"«¥œ"EÈ!ãìÑA¤ˆ—€Ó—‡HV1¢ªÌÉ>T ¤*#H)	„FV	Š^‘,‚HH¬©Oy	–Å";vÌD	^Ãöky¯šJ<‡â€*Æ˜R™(` CY–‚<Mãº~­¸¶^³¼EÒ½ãúÔðçáÙ±8Vñ<ý+Ý´¦°²VÀZmëmÌ¯»$ÐVz kš>Ö´µ¾žÅúr7oôr:ãå•ÓVÓ
hN53ózV\É&Þà¹ÝÁóâªÅb,z¶ÍìÕÐÉ}Ðú‘ì%tÖËnã*Gå™mì,³OÊØÌÛms»ÁÜpüáàƒ{	8Pû4ª˜5;½‹Î}ï§nÚ;—™sž´ÞÃÍÖë—6¿FÕ]©jtš:¶™Fpá.ÝA¹” s­Ã4uÝ’S³'ueQÔ)4#/“Ûx^ýx’û¾½J¶êÒ½ÏeÓaëáëkze£“
×ÙÏ§‚NJ1ÜXné²>o’³—[Å~çñE5‡d~Ó;TÒ9£½¥é\\vQ=~üÀãùdaXËá®ß2¼²öCó#´l<¼éÜæ‡j}éâ»:¹à<vÑ¥3}âÄÖý‘½Ó½7	¼u¾kKßž™ãgÇ$G”GŠ&I@)®¨jð"•‚¨ÌSPP¦O‰ÃR¤ùM›ì­PúÊQž=Ÿ~ƒo | eA™Wu[ýlŸxœÏjÃ0Æï~
Ý·'q·Œ1èa—Ýú ÁäÄ[Åv:úösG·ûBˆï“~B*	Ð¢EëFyF5êÎ(Ý8¨Vwºfa5»¨„±€”Z£íZäViUÃ¸{£eo…íø :9p=2µ•…œ^1Â·8›i…ºõ%›†ËýŠø–UÈÕÛ
¯ÐBÙ÷­„'~àœU5øRð¿ ¾€¾I÷Ëº"lqËh!(“(3–h‹vÚ.à3D*p7Ù4å’|œ½»Ýu‹ÎÇ:ãã£œL° ¢ýévj]ËRQó2M¿˜g c¶˜RýˆK`¥ÏzÓSö¼ŸNŒý\ñ;rn§oÇ¿Ì¾ å5™]”3xœm‘Mo›@„ïüŠ­z´R³,,K•VƒðØ5µãÛÂ¾`0_YÀNòë›¦RO™ÓhôÌef 3šêØ¤\ÓÝ"Ô"Æ‚PF2‹`ÎTª3š¡t\B3 D˜ºP…F‰®Y Ue,ÐÁ´°•‰$Ë2 þó4åzªÒR“ÑÌÄfÊ4b2niÀ4›–*’Dáãpn%ryS@…<o@¢{qû0ýØÃ7?¦º®3ÍR54Q±ª*i[×Å0¼Ã‹bxtß´ºêõ!/†ó˜|{>©å]Þ9ºû+Ç[ø-"ôË_lì}¼ó>r)èÖ;©cÛÎÌ¶·Î6(œÍü0Û9Kó\êá•HÿfÛûhëÛþ2eWŒ—	·	ëMù>µQcøÕ´š·2.íC!£ŒZûG*ªáÂÏÎÉò+ž}ÉÎ;á©©ÊhÞOe<‡(t^GÒ›ëñd»o›´sòsCÒåUßvŒÆÙûMº›i—KÏö‰u`'R¸ÆãIm\Ad{X—ökOó•Vþ^UÑìõm’¶²½Èk¼oëëÔŠzQ–Óv{]Vé]–™c`oûÁRAÉE¼9ÕbµëMÃš‡,žEÝ>O“ôyBWív|öÂ¥±
L×ßÕ|„‘qZ/°>Ñèzù¨ \84y‹[b›ŠÉÓñà¬óðiÓ±wyw%	ËÍéhÉ‘K¼_È8›[æL]‰!þ¡ p¬üûÌÛ¸Ÿ?¦¬ß—ÔU…$<Ðè+&” L¶5*r~›¦ðfìîª"ÇBÜ	è¥¹Öp×É¢¾£Ôí .Ð—•ïÄ±ï¢´ð;}úJšxœŽÁjÃ0DïúŠí¹ØH–¬&¡”Rr	ôÔr^iWµ –Œ,§äïëz.ô6ÃÌ<¦f0¡W¬­ïÈQ°èä­²ºï¤ÅžŒ²bÂÂ©‚Ao¬§òÒ?u!¨•·ÁnIMÌÎk­­í.uÈö˜"Ÿá„_‰<Ó÷]¼ÎËÌ-ñ(kŒ^ù]RI)|ÇX+ÿc*Òeäf*1Õ|ð˜/ÄHðð~x;{ð™XˆÃ€k†DL€«)´'NÄÉ_¡f8G·,‘Ú_Lb 3`¢›wòØ
ñ×kÔäwÝýõ\ü ÎxŸ2xœm’Io£@…ïüŠ–æˆ2¦¡i`”Œc¯Ln,Íâ°6Müú!Í-uª÷ôÕ“JUŒD¬ˆÇ’&H¦(BÊÂA”@9€R Fb€Å$Ò¸& ¤b@BA‰ *š¬
Xa"É‚¢B™Ìf€f%Ãÿ¼ pŽV	R0N (#"	F¡$Š(•bQ@Hå‚že5Ë ÊI^‚´"<Æ÷¯æ¹ë;ò3&¿Äh¦EË€Ÿ“.ªË2gl†×9³û<V5%M1>§9Ëúðç|3–6i—§àá³k½qÁq}—ÍÚÕ¯ÞÙúò9À{gD†®¦®ŸŒ““îÒ5ÏÆVÉnèð!ÑÍ]×¥AÝèºUè+¯­TiZ¹/rÙî’âŽÛÓÛu_öÂCšDõ„v¶mÎ‚I§„©£Ý›Ó(¶ãXŸMg“,i‹LÿûkSYe÷Ñä€}V"ÁyÏÍ6Óo|7øï=Ø·L’c¬®5¾î;öw5Ëƒcl­q¸+¨i¯^Îæ@š™úäå‡d½GC/—¯“!^üÁÓÊ:ç÷¿[Îª½–‹íÐVâ–,³$¶ååÎMÛy‹PÚ/7äWm©é¦ðÈš„Y»ÒŠØº_öæ¤ZëÄàS£ròö¾ôñ6)Må¦0ðåî{+Øä"r|"…a#¬Ú2Z¨é4]tòŠM8(‡ËÞM1‹$ºµÌýB©2žï®¼úÄ'-Õ÷ïf–»üþbÜžÐ”€¦/
@IÛ“ŽPÂ$´.Až÷E\GaŸ1ÇÍm÷l*Fë¸˜u_Î°¼®ÀêæSüò®ùx‘xœ±nC!Ew¾Â{•¨ªªªKæÁ˜…ÀðÚæïK¢L]ÚÍGö=òí•ŒV;±±ÆKMR;1™‰&ô;£ù–ãP+ÅÃV±ÙVÊ”E¥Ñ·›FV Ú8Ï¥'r(¥ÔzbvéÇRáÕæH	ÞíG¦
þë6<·¥ÑÚÓˆá—Ri-àÎ–ó9öNÿNb#ïQæ¶=r¯Å/H0x9¯m%ƒ[bòPæ+0ör£~ü}Urº@@ßsŠû ÛN4NËÝûré,Ø”œÅÓusëoÊ¹Òè1Ç4rŸTÛ·5coq4ð«ÂÊ]öd?Uˆº’3xœm’Ks¢@…÷üŠ®š¥e¤¡yôT2P!‚ŸÙ5t7bxÈSô×ÉÔìrW·îùNÝÅ9mÍÐu(E"RUYæ”B‰2UŽEE—”˜ê”P	B•PY.¤fEY%’¬‹1ÅÅžJDA²®«˜bcò°É8ŽÿóIuUƒP¤L#XfrL(¥˜è˜ëXÑ!T(×Òµ§²3R¤,{’¬Ïôú½¼6]Ãž(û ŠÒ%U•ÀH„¢(Äež§mû€í´}ë"ð\”5»d·×$mO]ôô ~°%—¤I0þsn/<°²W \Øž±Ù®çßwàÚ˜±iæÔ03pRÓ3óéÚtµÓù½\/®†1íš…áœÐyy|âôÚHgo!;a«ÀYô”MŽn‰%ªv{îFÎÍU‡Ô< mŠGëÚðîØmkÕÛ†ò$
¬àpÀ‘iH*—ýÎÛY›É^÷+Wîgî~Ù1¡%«oÁaf–ÙÙw¬ ¥CÆ­ÎãYÂZf{håÕÌèÑfú¶.Ë*¸ÚÅ×N"#˜HŠSØÇè}v¨™<¹iîú6ç¥
£à› øÍÛêû;ËŒÕGÉÂ‰¸4ØJ]ù¡ÆzÌ'›·òáºmkM†>µÃÓ'Îéï¢ÂÜoÐT–©åÙ&Á¤Í;-õ$Cƒ{qÜ£©†³}þén¯[×ºk~wmS­‡ùîœmÞmO|ÀZù'á_fsoösbÂ;«.]–šUkZðÊŠx]æ MÈuÂÓaÌË:fcž‘dü¨j“‰ }Î~+?¾uð¥ƒ´èÙƒ(‹¿¾´ü«›+xœ‘M‹Ü0†ïþb/;CÉg2ùJ)ý‚B¡‡=´· ÇÊÄØƒídvÿ}åì–mO…ÞŒ%=zßWÑÁP´ØÈòTÐ±Â¦Æ¾­°PE#sÙžú¢¨PÕÇZ–âŠžl”ÍP¨^64PU£Ë¦Q’¤V9*)ë¶ªTE%p‰£óð	­¡	~àÅ’‡·ú¶=Þ‡%ÐAÓ;UYeÃàM.ó\ônžMŒô£Â®3á‹y„,œïÙÞ„0v%Œ³B ¿°‘@(ˆ#¦—)v+NÁL³âe·‘ìVåþeN¾G ˆ¬¸z·MÔÓÖÁjü>,‘×ÀÆîÐêÎ]™pÛöÀ÷îóÏßž¡/Â„	`]LÓú ÄWv
ŽÑ;½ôŒGðtñ’î„N»îÎl¸O$OÛÏŸ>3ñ :vÅ	ÎÆ÷š~„a±}ÜH¯=ìÂF3l6„Å™ÂµK)v¿‹N“ë1’îlØíaeÝÕÓïž-pêÎPð!ª¼…ÝÝó1¶^áôØOK0+¥ø^¢¿Ûñ`ø¶:sÃ©§ó¿N/~²én–4xœm’M¯¢H…÷üŠJfIl¨â#éž4øèE½¨LfT ßâ¯û&³ë³zsòœÅ›sº†R`è1’BPQT(Ç$–Ö)Ô4£X1(Š¡’èDQCË$F„)fEÄ „I˜È±¤iÕF0–1Á‘¦ÆôžêTpÂt#"ŒÅ‰‘D10Õ‚K¡²$S(	QßeU–QÉi.QZÒ|'ã×ñ³í[úÐ¿¤"„d1"” ’ê~ç]÷†mÞ9}¾—UCÅô3å]ÖÇßÞÀbé#my
f¿e­l×û N®í™çÏãêË€ ÆÖJ,Ó´¦é[þ†›ÆpY­­–åh?(;šæù®élF+<-æ…3¨Õ°†3šr$€íf¸Æà¨	ÝßTdb«‚¯W/Þ¶p©ÈN†^ÄŸÇ`Çªò®ï<nÈŒž^fgWW |)‰ù¦~ùmÒžEIºh­ÈÖWCÅLU÷‡z·Sr8ïN3^Û„gÊ:9ý:òlqqå`K'¤£ó,*µsF–û»T¹Úm{‹Â­¿VJ{ÚõCœøÔ\êAÙ‡}ç9ío•R7Y‹³(€ÎªWÕúñ:œûÕÁ×Þº,C3ô={|&¾4WvÅ­\N\ä§G”ôX¿æ»_›í\stIü<là–rQ×´aúÑÂ:^ˆÏWIG·2ê,L?º†á)à%?ò)HÎânâŸ·Žö“Öý!€^]¾Ÿùêfå-ÿÜ˜°£MJÁ£/
ÐÐº§mþ’U¬©î §Œ5tŠ
NËy[ªÎ
Â?åp§³¤àÿ‚5‚¡µ÷¨éf!³¢JÁï™E%ì½Ñ“÷ŽBžÐö?ôïÌ–xœŽ;N1DsŸ¢/à•?=öBh£"Ù´ÝíÅh>hÆp{‰‘=•ôªª-"àcç™39‹IbG)KÂþ1yg’xgcôê™¤IŒ)Ô“Q(±Fg¹°XìCæ”zŸDÑ{{™¸—Rà¡Ê·¯;†OœyïÀDÑ¡m‚1jOÇÚšüGD¬	¿¢zš¶Qtê3œë'l«^GZš&f=ÌWøi¦‰¡ì§.¡3À²Õ,«R—z„õ\ŠN_7/«o\`oŸ4xœm’ÉŽ›PE÷|Å“²DÝÉR5cÇØ€1´7Ñã@ƒf0m¾>îDÉ*µ*]ªÍ=CG)€ŠBU’f0$Q"‹ª¬3¨Xg*b†,2‘P&A®E­  ¬h˜±.3&ÉHÂÓŒ”ˆPšb¡¦©yIÓÓ‰±¢CJ’º¡„TK©¡!M•I£âBãÐ8äMlT´1ÊjÚ¯dú½¼ôcOŸ	ýþø§(Š¤(^”D‘ÃÍõZÃvŠa3¦àkÝt´­î/Y1äcúü þs–µY_dàés¬•ãzàèAè:žyŠ‚Õïœ˜z[¦i-MÓ·ümaI¾¬ž¿)‡ìÜÉ4ß÷‘k.;cÌ5Y““+ÓºlöívÔ˜»t£oÂU|?±åÆ#‚róí»W²ó|Y¹SÆ«ÆtºíÑÙŽUuKçpÇW‡yÏ&Ç²";Š8À¯ýäc ÑÛàx2]ìKÎúÆËãZ¼Êç¬÷Í2œ¯‚Z<C‹ÏK»kª»)$µ~å@Í¨À*…;¸Øm‹iÉ é']øÓVH”mÂNü.Xáìö~ÜÉy†	&¾
¯*ïd¯!‚£bé¸6¥d½šœöGÓtúh…’êqÔ²3ŒöaÏ»·ö=¾:ÍzÇ¡ÙÍZˆ,°Ù¬LÄ[o¯–t	ßèL·Ô?.ã-¾y{U\ÝYIýõ¶µ:L’ùã°—Œß|t¿qà[ey'îOg+ÏþcÜžvíXU £ï#íðEz(	X×\YæEEû<ð„Ðû9ÐŠ^éÐÝ9Î$„ð/ U“Fœƒ~lÛ¦ {èÛKpëŸŠú!\ª§OêÓ@T“_	ï©žxœŽ½NÄ0„û<ÅöpÈŽâ!N¢%‘è}ÞÝstIÙˆ·ÇWðT3é}5Òš^{IØÓlÑ„g×H,U·ûL[íƒ¶"=³ì½–­» PHt	J)kMçS†ó-Î•ø1Âó_Ï›{MG]Rº=…´¾€´Zk)„àA%º¶®s­ô_¾;#B¥…Vªù–t¦"”cßS®ÀMn-~ÃÖ- Pž©ÀøùN0MojÌé¸FøÆ _å4oÍlóËéþzWmh÷GZjH–4xœm‘Én£@E÷|EI½DCS+iÆ86xLvUÄLf²ñ×·“(»¼Õ{Wçè-n×P
f‘®S†˜*‰2ÃPT”Š8&R¢iL‘EBQÄÕ¸¡eR1ÖD•¬C]eP‹ D6î¦ª²;côÃÇP•cCFXVuBå(R±¨É¢¤0E‚zd¨º¡:Q8ÜwiÕ —ÍÁNJÚ€GrùZžÛ¾¥„þ’Š„’fè€%Qäâª(²®»ÃnÖÍû<–UCë||N².í£‡;ð‹–ÔI›%`ò9–ãz>X»k°ó\ßÜ¶ÎWÎ\Z+¶LÓššæÆÚ,2³Z½M·Ö‹–~ `€w1ÍñTy¦{¬O°o¥ëié±¹žcmÅ™8=Z;ÁÞÖÙVÜÉ§µ·²¥µóZŒ›UDiÐ½Ì=¤.ÜäxŽ­páG	óö’7)f(›:‘•’i½6[ŽhµÏ¬÷Û«²wÙ!È£²ð½ómhI˜WÓMCsóž9Ãí\‹Âi1]ô.Ÿ¨‰ÿj„lsHOLÎ÷óë¢EÎ¸ÒÓà ÊL2½¥qœç¾×Ýji‹‘p ×cZäÍzˆë
¢å²Ÿ86bOB½Ãoëp˜—Ýú˜Ùúl 9¿®v|·eçVF[öyƒç+=¢¾$Dm–ÖåZâÙ<ÞÓàÃ-fÉáªÈ3øá·TpZ1<ÍüëÞÕÓQ7udnÍ'<uÂ5á¾;s|û÷Æ¸m
ê>ÏACÏ=m;ðG‚ŠXS KðE`ÙuRà.N³2™”CÁ&qU–4î8îóú¶´¨zÿôC}ËíØv´  ¥ÍÅ°,§ÿh:v$xœÍjÃ0„ïzŠ½åP¬HŽåPJ}‚6Ð³~V¶À–Œ$Çäí«¸P(´·…Ý™ùrD„Æ¶Ô0.jvÐµUç]§™è„‚5ÒPf”¬‘’YFô$ö 4h±•Ga¸Š"5ª–ŠÒ¶‘âêp$rÉCˆð&½Ã>eï1Â³Y·á5-	÷_€9g¬æƒ§šÖ5Ñaš\Îø_)mšö.%þ2Ù¼ã.U5É¬ç{°1L®)ãd a¼8`Ýˆ„ìg;p	|(¡(3èà5ÎyçaÂˆ0W [nŒKºü‰W2†þ&Í"æ%ú²²7\sˆÅÏ˜ˆ)aú’‹[ðÅwaIåõžó°¤mõ#Q±vV™ÀÄ0ÏhJôVw¯vKp“‘Ñ©RA-¹8ƒ±/U¶L—ßCQ"|¸ØTÁÚJ]Oñ'_òÀÀ!œ4xœmRÉn£@¼ó-ÍÑrÒÍ&%£€ñ‚WlBÀÍ¡c³Ó,ö×“Ñh.y§R©ªÞ¡ŠÕ”Å'TA¢(ËŠ„pˆEB„!Bùªø`øàD•+IMs5ÀD!ƒ(P¡%ª¢0 Aõ‘À¼ÊG"ù§‡‰!EHB‘ìKA‚ ¨Ñ#UŽ*B¬(¢ eAæHËÎE’'4.‰sZƒ—°ÿoMÛÐ§þHÂX@¢y0‚B.(²,aì!ž'lÑúà%/jZ¦··8açÖz¾±ÅeÜ$1ž>›[`Í-`›ó­öî¦_<8Ð7z kš>Ñ´½¾_&ÚÕ²'}%Ÿ/x×	µÙkšç:¦6ù8ØÇ¥²»ÒqÔŸî^Ô‹€Óý¦ô×ÊˆÝ{©vÞüž/ŒëÑSs	‡ÑPÎ.6YV<¢"ÈÚâ,uó+ng »å@Áh¤Jm´y§ëjsNôÓIjŠ4*¡µêAm=¬
ùæ6±Z'ëMweï+ŸƒÏÇkS8pEGt!×;^¬3â]%ì—K§˜÷7æ3ãˆ½\ão¼{
bOËõÈgÖl›4¤^tË!œrÀÊ–çM¾õs›¯H¨™YàDýdØ­ÒÖ˜á‚(ëQ¹ëèÝF=míe°›ê~qâ Úñ¾Ð>LŠüg™:÷ýôy"¹[Mö†ßfªG./#÷îa^Š–.Wæõ€ºÖ^9ðz÷·³éÖø¾1nCë˜‚²MSPÓª¥?€UÕE.4Šjz#iBógFSšQVßÆ!Á÷+ï2:Òä7ÐÂ4mY5Ñc–!a<M ¬ 1eãÿæ´ˆÿ ùš•xœ}ŽAjÃ0E÷:Åì‹Œ&–d)„’BW¥».º–¬±ãb[F7äö9@woüáq!94¦ëœE´QI¡Vˆ£7Õ ©Îx±…B+RuVkbç­¡^9ÛSÔ)ž¼é”éÉ“uD8ø–|Ð0ÀçD+\~*6sÅë=õMŸ—W@«[k;ß:Ê*%ª]&f*ðÖ‰føãZ¯Kº?áº;5‰žSÝ¢As‚…u*Öß…Îð–ìÇ¶åÂ0Ô€8@m 3ŒÄ’i¦…¸<äœG!¾¦ú9É<2>Îÿ‹?± ^v—xœŽÍjÃ0„ïzŠ½—„Õe9„ÒCÞ ”žeíªØ’‘å„¾}MIÏím˜™™V™-÷¬dÖÆôè¢qÚÖ¤˜{mðÑ‘‹¯œ„!o;TbÐ¡åAR°ØG¬4*¨AÅÎ¿µ[©pñ9ñþ3s…3=~ÄÛº­|$~iÑ²“JÃJDÊ<§Öøÿh§ž¨·4Ñ	ÞòaJc¾Ïê!žf+Ðn{¶ëµÁëšJ†ÛG!®iß¡C‰ñ0~þº!¾á1gPš6xœm‘ÇnÛ@E÷üŠ²I@$š!gXŒ80EI$e‹ª¶ÊF˜Æ"±™Å4ýõ±c$«ÜÕÃÅ9osÛZJ€ÍQ©”D:7D„-ašà¦ÄáRãœ(­eÑŠ¬HcY2’&5,-‹!‰ƒ”!dj3Ì4ã/1tÈ8³˜°?1dBu2¢ë”@&±4˜­Ð®MÊLh‘Êìi\ÈüýŸã®éùCÈ_ ë[¶Tˆ Tx™çiÛ¾Ã^Úú?‹²–U6ÜÅi›tìÇ;ð-®â&Á÷Œ§^‚•·ÛÀÝãfú§W€úfÌÇŽ3vg=^ÏSç:Ý¹›ñ½™\ðòE¯ƒÞqÔ£8þ!À'³>Í=gVù4P@tÑÂ@kƒn“‡´Qé@ËŽ»ˆ>ýADoÛÇÇÙª“–…ÍLN£	sÉâ´o_¯cµä›PrÀ	mòg²<sô:Á¤œÇÐ~ƒêüÎŠ•š¬°NwÕÛ|”´°qf<E8Hy±¡
ðD»|©g8„å€	zëï÷§¾³–3—à'ßýcuñHHg‡ÑUÇ	¼Rá‡ÜlöÇ3UÇÃ¼õa£õ±7™ú´ËRµŽí"ð¤ú6ôàUÜ[ÛM±ð&Hä~åq¿RÙŒN°™ô^\¹6ÛòÒÌ…±v»ë‚h·1<Ýìž¹zß—ÝOé6ó—ùÊÛ©b]·
¸õìpP>7›†“ÿ/¦,dKPuYjùÜÉ¦_Ž5Õeœº+*Zˆ”ˆŒ¶]U•u+ÅÙ¥ÕÙ-‹(ÏiÓžÊø¼¢±T”â%—7Àü£Á;MyÚàSéjÚ¦e>L•1¨ÞÍ¯ÁäÀW„¾ýáž›xœ1OÃ0…wÿŠA¨‘íØ!©*Ôª]@ÈÀ|¶/©QbG‰ÓÒ…XØØîžî;½÷ÒLF•V“Ö¥EÙ9­M-­ªµh¨æUÉëÒHÕ”Æ±	g
	L£8ïPWÜ*Bã¨rJ
×9ª©¬3&ßÃ5]â‡yç1Àìpú,0KûÇe}aãø¢Rù…TRÂ×%gY}J4Ã	ƒ§>°yÛ¹ÛÏ°_Ö…
G¿¨RÏZgTpÎX¸Ž´…ƒsÐ®ÓçDŽ8¡õéÇ:ß¯3&œý’`ˆ=LØÓÃùõ´þ%Ä#cïtõt#·1÷-´‰® ¥lØ^(pÎÍí+x]DÂ°Ög‡n»îþOìnµO™3xœm‘]o¢@…ïù“ì¥iù`Ø´›‚ZD,¨µ(½i†áQ¥þúu»Ù½ê¹zsòœ¼'9]€´TÇ˜hX‘*4QX‚cÐf2lhŒ™¦!É’PÓÊÅ&¦ I)Õt‰a qzr‹&i26u–Ä±©ÆðŸÇ¦¡*JjH„Åq
Š©i8Åº¤i†	*K˜I€2*Ð¾ÛWšÐ2‡miVBƒ’Ë×ñÔö-Ü'ðÉ:Æª¬¬¡Ñ­–$°Šó¼ën°“w³>FeÕ@]|>ey·ïãûðM,«³6ÏÐÝÙSÇõÑÒY¢W×ñ­ÍÛzúåH@—Öf¶eÙcËZÙ«ynŽþxm{Æþ€ƒ³Ú¸ËZ­kyÞœH‰|R–ÜïçZC6×~ÆÄha5»N*—32ñÚÂ9âˆÑÛH‰FËs÷zûOò–‡«!"«Öq€s¯±tXàwù	w—‘myÃ)Îöx6ìVó°€ñ«“ŠŠVüØ\—aŸ±äò¾ç©WÓ6RÜI*Î
ÅšÇtos˜4­Èç@RÔj»ÏúÓ˜Œ&Ç§c¨ˆA¬©¾h3~ØXÊU
ý°¤¢Bô§Çþ™d‘®§Š­h³}3)”í{¦ÈÂëlÂ7
‚’^c¼«ýA4çoÇøêdÚµ}µ-ªz±~ÑÉŒwöÖ<ø†Xî×z‡Å—ÝatíHGžÅMà”×ƒH»ªŠ­HVz¼œC"üÝlêO¾_Lx&T÷E8õÐvè‡¬jJ›Š£<£1Í‡»"mUÞ%æ%Byæð­¡¤ÐÂµç¯?þ1ê*4üg×ùøgýí~þô•xœKkÃ0„ïúKN-%F¶e92¥”¦´¤”¤4‡ƒ«XKA–ûø÷µKsnN³Ìð1;)"Be9«PÔX±"GYHShÃòZÍêJk!jšSr’}%˜DJ­¬8Õ¥2ÈÍˆk0g‚k£”(9¤6Dx”Þávòà1Â­ùü=îû¡ÇÌàäœ±2/XYÃÍXC‰]çRÂËQÎþPâ?:là½ì^W/ÛÍz¹Ï¤ ËÍúiõ¼?[„ì:×÷h¦4^Â€óZ„©&kI‹ÒŒYwÄ)aº”M«ª®fjpGÓÀ[Dë¾@oÝaˆ2¹à!œ&ég×![7®2ó`í\}7ÿ&?Œ¢ˆÈ’3xœm‘Ér£@†ï<EWÍÑ•˜¥›e*™Ø^bðrk@`0Ìblž~œLå$Õ'ýRým€8–ò¡°%å™ƒb$‘pˆ1Qb,Å€™ŠÖP´HA9ÂK±Àr²Bó€RƒBA~ó1(@y™²’ÌÒSMæx
"ac6Œ¹01E†ví©¬‘N‹r´£I5z‹ú¯äoÓ5ðÁÄ‰ós’‚F,Ç²LX^.iÛ>áYÚÎ» ½eUþø›¤í©^ŸÀcI•4i‚^>cbÌL­f+ôaÎ\uëmŒ¯>ƒÔ7“p¢ªMU×“µ•ªÃVÛLÒ)ÃË›P›½ª:ÙÁT-/9çkÍÚÖÞ[jzi¼C*1h!¼¦«Âòî±PåÝÞ–èr×£9_U‚åÝ-ËtÏ½tÜnŒÊy›Í0€cµQ¯™â„úÑ­¥Yÿ•íx¨íÈnûIÞgÏ5…Òð½úÛŽ+>Æw­w†N¸õÜ©M|ƒˆ3¢ËÙÂôE_ÝBqJòcT„D´]²àF×—¯xÞFÓD¿oŽ²áyVî <`Ýy~±œ®f-ç:#¶n÷Ê©Z)ÝA®\j­û*<çÎ;Æq.Çžù¤†*ÑEzñ|m3ž7øöFˆØ“Þ>ð¼oZ_¼.#ÈÏSóâæYpÚŒËÚv{l–;±±³­hè)§iod>~gÐ{T@Àü÷ÌpõŸc¨@U—ç¨†kM‹~qP\—”&´Ç4Í_Êâ¥§u‘IÃ0A—æÑoäÐ3 ÍD_%úÄPY oìõYýžxœAKÄ0„ïùï¨È–¤Mší²ˆ€ âqyi^Ú@›–ôuÕo+{ñ$xûf`†ÎD $–míd…ÆbéŽŠ<…’lm”-]L´¤ÅŒ™ƒ¦ÖXe[gÛjmVÊk2„Þ«¦ªÈY»c-på~ÊðŒ)Ò ïØ%Êpö?ð´¬žAÕZ—ºjš¤’R´Ó8FfúGT¤ëH'xÉÓ5z‚0åÎ1u»‚0oÈb‚Žø’–KôBÜÜ»{ Ï™Z^ gx›=2÷”óÖt+í1ùažÄº¬8ÀŒûöTñ·¹þ0…pp_§¿ÞˆoI#‚™xœ?OÃ0ÅwŠÛ¡•ãü¯B*óÅwn¬:ve'Dýö8!6Øîô~wïÍ‘*U˜º”ºè¥©ê¦U
%m_Iî°án ^–¸`d?CÙp©‹Zµ¦”E×k&ª›áz@”÷XÖÄZ\æ1DxFoÙÁ;ž<Gx õ6<¥%ñžøŠ¦ªTU*%áNR
¦ÉÎ3ÿÛÚõ·U‹ut€W<3_à&Á u<¬½õ§´â¸Ä-Œ»Þÿl!ÇƒÑ±ëa\ØÖžnâ‹eLÏL€I¤EkfbÚç‹ñèÜ/\Ž1Böã+CÊ}gÖi+,—|HlìÈ–W¸Ä 9mÿ½Ùœ”vÁ˜Ýp=üU„øÉò”Ú—4xœm’Ms›0„ïü
ÍôÒŽ§1BP&élÇÆ6ø;v|éH 6,;î¯ošNnÙÓ;»Ï{ÚÕŠs`#œ1Ž¡é˜:Ü…iæ2œ"L’aAF-;Äh¨âRËÊ¸mÑ”xF0er˜ÑŒ@‡`†°ÉÍø'oz6s J¸‹9ÎLÏq¥vF¸é›¹Èó(ãˆ´Õ¢V OeÁK°¥¹ä
<¤×ãéÜžù]ÊèØˆx¦Cè˜Ð4¤®ªBëwxXèQËÀƒ¬oÊÛS^hÑ²»wà‹·¼ÉÏE~þS0†1˜ç`c½Y>|àz’À÷ƒžï/‚ÅXtWœõ–ÁÄ{vA*¼úþÉOBß/&\+²¼²½ ñ`»Zž®ËÄ §EY½ÅÏ‡Õl:#þšMÝ²#‹ÓnIM–Ö†±KtRé~·êú3¹P¨+Ä…Ûüt_^2,Ö·(o/¢Î¸nœÏ7êæ¸xAG†ì•mCråÇêrë!^‰™;ÞåÓÍ¶mñxt»^°´ävj+N‹~‡‹r~à“ý,#¢'è°)Üôuå¤áÚ¯ÇyœíÏæ–åÍ8(w‹©6À¡c5æíMc<º˜Î®Ûé8á6¬«gµ<O†r:BLGÅøÈÓõ´º>²“°÷yÕP©VÍÄ ¾ÜT½èÆk™¥Ni7é­sTU^:^ì’ÑÈ/æ‡-Ò›øãM³böÌ‚õ¸â2Hú…
ðØ#3aüïl÷¿nÌˆ¸Ê9hÚ²ŠŸZ~ÖàDØ™ª+à«V6T¦•wRP™ðôw¢Kõ;ê†¼Tüøi
>3Ð«¥VuY¾O,âš¾OTÓïÏaÿ˜onÿÇ_»Ü‡šxœÁNÃ0†ïy
AhUÒÌi3Mh	vàì4ÎVÔ¦S›nðöDnÜì_ú~}v™a©18F%ÔÊp¥|¨zÔØ€F+Ge‰ÆŠ”eàeIÞÖ¨­³H®Ô•Q‚UÆ¢Ó(¥À‚ætFØŽs<Qô-Ex5>ÊÑf¢~šã¡h†þ”YjkjD	wµ9íÛ”x„Å–;ø CÌÛÚ_®Ãfš'.<ÿ¢u¶ÇŒ*)…ˆçžW°õã‘bÃ†˜Æ¡ërÃ'Ê¥‰nžžw+_ÕîVˆw>·|a¿pß+Ø'>s„=g¿æÈC¯ùQë©Q².:æ?îbßf!¿B¸Âÿ¹Wü 7xwm™xœÏÁKÃ0ð{þŠÙH“4i‡ˆÅv(¸fÑcÈ’ï››Ž6UößÛéUP¼½wø=xi  LkžRpt¬P2§4GYQ*á1w:C—“£ &j9×¥Î‚.™Ì¥Ï[°ŠñÜî3Tº,5±SzíZÛà¾ØC„^û¯p;N#,=ÜÐLIQL*M¯XÆq}×…”à”Ä÷Ç!Ä´¢•÷tû¼iÌº©Z³~¨M³½7wíîÑlš¶ª«¶¢©§gblš0©7cšù3ïÂ8Îå/3ß,à‰â]
}$?/_\.	y
ó¿èûÓê·£ä¤‡ð—2xœm’GÛH…ïüìQ³›l’MÀ^˜iF"•¥™['¦a2ƒ½e{Y¸N…÷¾w©WC'%ÀiÃ"™„BÂ¡ÀDÚ˜™4ˆà‰H¸àXii'ëp‹è:ÅTç&¤ˆI¡È¤QÆÆÆ6F–E¬ÿxòô[CÏÐ“±°aP‹rK”i‰Ð,)LlM*t²¦>­sY‚3MkÙ¯âö{ùÞ½ü"ä¿ ™X·	Ô,Ì ‚PáMUåÃð„ßòa>2ðµn:Ù–ïi>d#ûòþKÛ´ÏSðòkÜàm±Û·-8,ÞÖÎñ´~ë
PÀ­w¹ë8®ç8;wfêá¢{{7²²o®z·¸9ŽÈÂ‰Ž>ò>âxå,Úú¨©íÚ=ùF¦ ÝœvAãÈ)òæM¼‹¦fÉÌXªêuªõ¥|ø÷ÖÊ|~&Û‹½ß,âÏ«u&ëËë4s÷6Ù( g‚“ØÙ°"‘Ú„#:½‡ívzÜÐlt–º<ºáüü¦ëO1!…sH¬lU¬ý;ÌðØ«x³µÓ½îÎ1æ)‹ÚavAËeãÅFz.Jîæ=ë½¥}.è>:ªŸáâf^—§{ív¯
è³Ãy.ç·ð2îøaÂÎG¨R¡{«`¬Zæñ×Y[W…‰#kÎQ0«P?^¯§Ç*À_¦‹ü=§ÏcÞÊM~<V¢Ít–Ç§”ÕÙØVeûÉNÁÙ³ÝÊÔ½wøÈáTðySŽòôMß
VÌ•?kÿï)+Ù¥´cY‚Nþe?€Ž4tMzŽ y)¥T“¦{Û~è$­Ô¡ÅÐ6åõù‚ÿaFöµ”xœ•1oÃ …w~Åí•-p CE:vóÐÑÂÜ‘X²!Â8Qÿ}iÕ-S·»{ïÓ½W2H#ºn’‚‹^hã¸ñ¥!+'­¸2è^²»Ë¸Îh„JK£Q	ì'ézÞõ=aPÆª*ÍÜ^n)ÃPèAÚãÕß(-ðQ¿ž6/¸i¢ËæÖ­j­Oë„–«¥´Þ¸åœÕë:—BÞ]œiOwu;áów¸lûF-Òj8ïlEEEY|¬ÔÜóË2­éA°ÇjGøQÆí–žãŒ£/y°G_æ«-ÝJ0Ž¯¦æüJ26Ì56)„fú:þ¯0ûÄö~y–(xœ•RËnÛ0¼ó+öØ¢KêA‹APÄuQÀ@êPÑƒ¹ŠH”!Rqò÷]¹5Òko³ÜÙÇ0ÍD Kí\zK…BS»ÕJ–5–­ÙZirYhi5æâ„3…FÊYSku…¸U­El+$UYcŠªØ–Æt•¸¤~š¡IôLZÂ“íiàž»ÞF«d½ˆî"Ž‘s;Ÿ@éRUeç>H#¥à×Ñ§D3|Áài€_ø8ºuç¸‹K¤£µ0µ”¹aªbªÏ#ÝÀÎ9`”y—…˜-fÝ4˜ÞíÈ]ÿÖtó4Âï¥4•‡°ÿ›h(A<‘õ·pp|ß½ÂGŠ'´BLóbÓ2“`}H=])äàþó¾^º‚Ž^àZrüùíß.ââÃ¥`ß€ãÁm„8NÀâ	[?øä)þ™x]óÑ»Çßf 6fbX#H8ûÔ³¤×}ÅºÖˆ/~\X„ÓÁ¹g«üuA\çÄaX!;ôË¥	N³ç¿@+)
Ñx¶ÂeS×eíëÍÿY.~DÆÔ÷œxœ•ËNÃ0E÷þŠÙ£Fvì$žªBE°6‘`íÇ¸µ”8Qìõï±Ê ÙÌëÌ[6"„(M/¸BD«zoQÚ œƒõØŠk°Õl”
tò@®#Ýk9´V˜Î÷Æ£×ÜnR='¡3{¹.Œ…n”`¤=]Ü•–	Þ«ê);Áu3³™s5n™ŸAôJ¨AvZÃGÎYíÎ±ÚàÍ¤H|›KªÕÉÿ<’sÞ35ž¨DÍy‹eé6Ó^¼‡Ï¯x­—Lòõ“y%Ct}õÃ’™)¯Æ¸¿=ÆÆXüa	á`ïÇÿa¿!0mÍ’#xœ•‘[kÜ0…ßõ+æ±%x‘v}‘B()	…B»œ¶a¬­¶¼Hr.ÿ¾ŠÛ„ö±o#éœoÎhrd½¯•av†jc[Ý¸V5Ã¾4v†ÚÎòÞp-µgŒ2ØÉJ­È´Útú`,ÚƒiÕÐt&§È¡%çŒÀ5K„>óèy';ò2Á—Òõ*Y%õnb¾N8§ò¶³ËüT[«ºiÚºƒi¤åvö9s„[ž'ø‰§PNWô¸×iM¼#Þ¬£¥Ü›bUÅ*ÂÃÌ—ð‘<U!UÓ€•[âŒùÝÍ±iÆ÷ðÂÇ@àâ2ÃÝ·ZšFˆÏT&õîŽ8s:£e Ì)ÇÕæ52ä‘!Ùzç™Ä÷´e,ªO[ðø©ðCF|8múð´xÆÁO>{Nâwüñnþ$ê9ï„8.á_íï¤/£Ý{ºé¯PeA¹”	0„GŸÇöéuN!z_¾ªÅ¹jx¾ü¿õˆ_Ç¹õŸxœ•ÍNä0„ï~Š>‚VÙÎŸí‰!fŽ¨íî–'Ä+Þ~ÍÜ8rë®ÖW¥ê¼2;ÝbÛz)-5¶¡Zzªº^Jåjm±Ê´bÁ•czèkâÆã i¨Mç{‰¤Û^yßhê<¡²Æ	Üòë¼Â!ó;G8ðþ•çîKêeòJšjd¾N8¥r«ü<]êUw¶7~H+¥(êræî0á±l—ôï4\§-qE|Bkk¤ÔŸ¨*¨ˆï_ÀÄmt8œí·ÉvàooÃO\Ð…1ä¸¿½_ó:aNç0”$‚9B± —@/1	q‹‰ObZØÃþé7Ãþ<@#m{œ8-è¿x>ò2¯9Ä#h©U%»J›Â<b%„8„Òvó0ìÜÇÅ÷~%þ¯¹’xœ•Ž½nÄ „{žbûè,0`Ìé]‘&R:©aYÿœll¸(otonwf¾Í'˜ÎwŒÒ¢º* i¥žp$-û¾óaD-$;ÜI1š^J§œÄŽ»R‹Î‘pÞÞ¥¬Æô†¹’çý„!Ó“"Tâ„3í+|ÕÖ[BÁûf%º'·¥ê5¸oï :Õ*®„ÐðÆ-ç¬ªÛ’3ðáâB+|»)Öí~^Ã=•DM *­±ÖšŠŠŠ²TüqîÂœ®°.>>7‚r—‰±Ïˆk	ùPÜjÀÙÅ‰cÃRÏ†Ë>Žÿ{ýßûì÷#jé™4xœm‘IÛ:„ïúr$¢HQ–ƒä!ÔØcyä}‘l_Š¤kj±ì_ÿœ¹¥/Ý¨¯
}¨VI	°0mdI±$†dD
>2#fã“Ðf&è¹y¨ÕLÉ²Ú¦òmñ1ÿJb†ÄF#FŽ8± aýÌ”HP¦i"PÄ#r1ÆÈÁÄ‘°¡É5ÖµI¥À„•©ÌAÀâR*ðMÜ~?š®‘_„ü–‰Ÿ_1"àj¼*Š´mŸæYÚº]¾••’u~ÿ§mÒ…_ž†Äâ:nÒ|þ5Ît6_ÍlöóÙŠŽ»éo]¸5w(u^)Ý:Û÷D_mÅëÎñFÉÕ\÷XÍo”>`3§Î²òî‡ìe.G÷þœ¢ÅØ×@ænÛ$®hz‹Ùk¿›{A2-yïwfU½ïÕT^óÊÊ¼0ïö=Ù‡:½œØgãÎÓÕ]ú¹¦½>}«ý`©ÏQú"qŠËËõFŽ¯þ¨\ZA?)–ç¼O²Þ-(¤GwÓäÍz}Øi {ÜÜzÈìÇÇirÉ‚¼­ëéè¶ñ§ÓáB‚÷ØÛý‹lrm“ZgA<²‡¹ÝuÔÀò¸9]qÖóL,ß&ëÂ÷¬7{(Ußj¼bÈšíºââî]“…K³­)§§…‰ø-à2Š‹s`jåÇüÓ£Ð>·t²KrwîÙ¬fTéô4e$66HçL^õ]ß}ÿžh:›®&ÿnL[JKPwy”üèdÓ‚O&ˆTU€†ÐþœK©Gé Åx×þ©Ò´B6Uù<e dÄº¼0xbÉÛJÝAÈ)@Uþ%+;–ÿNÉò—xœ¥ŽMjÃ0…÷:ÅìK‚¬[¥ä Ýù£Ñ(1ØR¥ÐÜ¾ê¢(]}ðï§fÐÁ85²•šíÀh9Ðd":µõª“¼x`áTAJgœ'¯fgÍvþIjòÞ:5¡U:’¥E­Þs¥ò“,ÜÒîœ7øì«ïÒ7æëûÑ½3åý†ÑèÙºÉx“³”¢«ûZ+ÿ»Hì|ät¸~Aàˆm«
RëXSÍåÓ¯³cj¸	±¬·Äá”c<ù×åoWÄ7¨×rg™1xœm‘Ks¢@…÷üŠ®š¥•±iš¦­J¦ÂC5q×4‚ÈC$¿~œLMÕ,rW÷žúî9‹ÓÖB€XÖ&PejšªÅƒE2‘)El¹"¸ŒU¡H«EÑ9¦rj,ŽYŒc(('Š0™P+xÂ9",üÇ«Z=|"%TcyBU*…2Q‘Â0=ÂiD¹ÄºöTÖÀbE*rðÁ’BÔà9ê¿–×¦kÄÏHü2ÁÊDÕ0„`e%^^.iÛ>`'mg]ž‹²U>¼&i{êÂŸà›·¤Jš4OÆ˜:®|Ç[×ñô÷Ýfú¥K@}cpC×S××Æz~¯†ÀÜí”á·›R»½®Û>vu»™ló¼3®Ëz{Ýë¤=/#	Ðµ×}j²‚ÂÏã@f¾ªÍ‹‘é;jØ»'Žv†xIïP…‰aÇFÝ{VÀ™{Œ]sS÷D8ˆ´þ”AÓ,Ž¶üNrgðvz¥:.–V¥Ê£Óµ¬ÀCBËmŒªl[’Ù·³8¢IÀA×|Øõ°Ûù·,«@oNSÝl6ÁÀÓ3?'¤°ÎÑ<?Ìª¼NQf¨hYúG	„Sëfa÷ž”vc­.×r#Êýu9)Õ°•’l±(.ëÉ¦Ñö³x;<xà•àëéýSÉ—h×`û`×:‹õ…¥±"s/¨;ìÙyéï3ìÚ½[öÜá¾QïÛ•ÝÑŽè··LEôE/Çò¶þv6õ¬ï“V¢N¨º<µ¸v¢iÁYÁÄuy—!}Ê…Çé}\W—°KóH’ìÿ®ßœÀôÑ—'xœ‘½nÛ0Fw>Å[$R)‰”)¡œ¡CE=d4(òÒb+‘	I9ñÛ—vœ?´K{Ïw¦€ƒ2Œuœ×(›†)!ÔX×Z7¼ZájÐu×ñ¶eäNt	„¬3ƒÐ•bZv¢6©RÈWš¢â\LGä’F`“p6¸¸ÑOp“[?GUQQNˆë(ç˜ïJåç+¨ZÖ4<5\ÐŽR’ÓÙ¦„ÿ#êxÃkq‘p7‹t×ZÃÏè¼_l@{Ñæ 2Æ„*åÔ?ÃŒ™$äÖ¦F»ó&Ï´7'M¡.á°Ì`]Lrš Žþ!þéÎ´Mäk>ôð]ª_r‡=¸ýŒE]Ò¢*qZ•¢Ý¶>|úkþ‘Àëüx*ˆýy	¸ú´¬Ø[æÛÓJ¨Ÿ¡"UÁŽÎ-}i[K'•wZ¾+8ÎY}2¿¼#dcwuá)†Cÿo_C~n¥Á~™0xœRËŽœ0¼û+úí*;#ÀàQ´Ê$§ù€È¬Ùíü}˜™¬”Sr²ÝU]ÕÕr
ˆpÊ6¹‘ºÊª7M)¸j²¢<ÇÖ .j¡°P†M2 K€E“e¥À¶åºÕ"ãU^WªØè,çZä²P'Îäœzà’pAœ]§{ôü ×oQçY}¿G9FÂŽÚï‹’5\À×ŒŒUG›þPSñª¨ïB,L£ší`Î€NªáQ€ÅJåu«0ö“n­ðÌ ¤1Od§aôŽ Z…«ÜBçá¶Ó;x´3¶q›ÅÛÞøËOÉzé#­òs´®ƒÖ‡‘òM2õz™v©)øÅ4Oy yPÖÅ$‡Ûõ	¦Aj„^(›Öiˆü¢üóåë§l	F¿ ÌÎ¡Æe¸m!I¶ÃH8yê=wœPÃ	t@™È³~ÜÁ¦GtçÁ!A4Þ$µ¼®“9=Ÿk¦éQ'nDß+ÖÝU>C{Ú¿»Ö==rÃ—Õå*»;•±‹íšƒoÛƒºÿí³°ß'°Éš5xœm‘I“£8„ïü
EÌ±£ÛBbÓD÷Dƒ1”W\…—› 	T,¢@¶ý¸{bn——ñâË¼¤êH§c‡éVj!ÂuQf¥Ôt0¡™…Ôq Ò:Ú³V†„†Å8ÇÏ,ˆMÝ1SÇb$ƒ:Î,‹aŠRÿÏ;ˆ›<ÅœA®£C=5	âs`Ê‰±	Í	74:ªRö`A[Ájp¢EËzð=Ÿ~›ŸÃ8°o9ûè–‰i9H_ ¡–É¦J=á@¨Õ˜‚ï­ìYWßB•cúí	ü!VtÅ 
ðõ—<?·`ìÁ1¶îë[ìÿþk@Óàežëzs×=x‡¨œmºd{/vùnì>qN®Kã·ÐæŽ·~¼-6Õá¼Ì=\7hÖ`i%Í°]â0è¥ÞÔ§B«Ù¬=#aÇÈsÒ*Æ;ÇZÝoû¿û·G—•¡HøúqH¥M}¢Ë¹Oò—}ªËPÛûë¬¾ïõíÉåÕ³/×H¸€B®å<gR?Z+!çÓí’h â	{È4çïwc]W³5²x½kF‰:‰÷ETd‚œ}>zÈqÜ„U×;w¼RDû(»¦¹>ç–Êó1Ú ÝäN¡û±[u‡Ó±RÕsšÉÏ­%Ù^ë›nõêý8YlÏ÷™!™v‘„Û¥9ÞQ:ÝœËË"Qur}l’°¬“/ÔÜÙqYu«kYçÔÍ\ÔÉvºÜi'_W—øa?í¿ÍüíâÏ‹iÖtc]ƒž}ŒlPà/›ð^6€6T°^·g´Í{6Í¸¸}íÍ¦i±ï.6þßà­Ë©b@•ŒéØªˆvPôYøëöc¦„lðl Ï8 €Ë¾¡J‰¶ bFö/g¡—Fxœ“I¯£H„ïüŠº£n(¶‚ÑôhÀ`Àž1^€K±ÏTacÿúñë™¹õ©SÊC|RÆ!RA'Œ 3×$QT1TrEÐ*¨ñB¡ä™¬ŠZV(¢”«*/0ŸÙ„
­ªrWdX(rs1zßÊ‚Œ«BPøkE©”%“Í´' å„ÀÏZ<?³Ÿê{ÿ¥þÆm‰i[Œý÷÷þ "‰”¬o<âyæMû–Rü;&šðŸIýY“¶ß¾Æ°l7 ;{"×ôÃqoýä`@º/C×•®—ëÖ²Tn’ÎÎ·Énn-oö8õk²Ö{GÝ´µ¾ª»ðÎ XÓ²	9dÌum]ÄÂtdÇi$rÛoóêž’‘Wí@yçœ’„yÉôpßÔ/ÉÍE.rèÆÖ„A#KÌ>i×«ÉÃ¡°e‘Í.Ù¶Ÿoódº;ëÎ£®Uî]ÕyŸ±‰t8Çœºë]T#n£q»MæN§í™’±¨wy…¨¦òÎ1­rT­å«Ë2¾é4ž·©(ÚåíÐ
ŸæiÜúÈ6ŸQd.zxƒï$U~x©ñqÏÛÃ•Wþâ>ýé$ž‰òK·ØžÄ GÅ©•¿ÖiMc9t¸­v…#¸Úû™Y˜ÑÀÒòÊ=õ÷Lçàðj¬>{âAÁˆ’|EMøÙ©–›³Ø²mK—„¤ÚäLáá1ÂÓNÎ„¨¼úØkÜ¼™)úH…Nã®Fm$#’l	6®õHEß¿g	9ûµµmº²»ç>1Ëj
8öñbíxhbm˜Ò^/éeY>1FÌs¯šW‘¬ýð9o_¡z·8YYÞH/s¤–e›gínÒ˜krä;®þ‚y,:ÛC–VÙHƒf/±qDÇ<Xž›h…/¬^žg:öèbœm^T*±Ù“bÑ{|ñ¸×)×Âêph­ò$ü]£-Þƒ9;ÄÛfCx¶$øö=µÐä»Q((àF<}"7#+õ>„/ÁˆRÁ4t½ß´ûàYÇ›­èù›Fœý´-Ý.Ñí£HÍ`#­L'šÌ]ÍÓ}î„ùÁ€ï@\æßÎXù«Æ0{K7}ë°n ò h²)+¾ºZSŸQÚ5h	™1óBe`ãUxœSÉ²«6ÜóZ&å¼Ëd0¤’T˜.6ÆxÂ¼B€Ìxòôõáù%›TVQ•JÕÝ:}Z¥:#Å¤0Gs(‰J–HÂL”EÕ$˜)‚ ê0K(ãzHq;,é‚0WqžË(Gª +¢¦¤šŠu$ˆ2RU,C)]ÈdcÙQ`´Åw°Sð|£æ;ú“uÍÇ´ÿ ¢:—uq®(*ø&,›Ø†Œ#þ&MÿÛ¤è‹àÛ÷e:î* ;wŽ+70ÂÓÁyóà Ù¯^¦a˜–adŸÄq4cq.Ç½—TnºNvŒ8>óyí$Ã§Ñ,5œ«¨öÿð¶ë'‹úàÅG]Ü1»º®ÅÝuUØÑ´%zð,®\x‘×–¢¥òV½ÆÉlÃ*b¥ƒùP]{ÒZêd?—eSéóÆúÔã/lK=rÏ®ûZŸÕ"‰¥Óªl”r	Š{;äÀrÐ1È±yì.½/Cº«rH<1÷ryx¸v|¾Uæ+|wñúåÖm”efaÔAž|S3{æWÏ–Xµè<Þó¥´ÖÓhëªx¸Òîšß±×÷']‰‹—½’—a±J÷3úMhµêZ;¦é¢¡GG¿P7ÕQÛ­H|£/A£û-8@>Õ¡“éºJ¶¼Ôû’JF®Ì6çYÍ¼[R2õaÎºøº!á.Qzò³Ò=ß~Cå‡q³¾µø¤ÙõD@Åú)Åþ–%ÐÅ‹Ó¥,›gG+>½Ê=Tóû,7—¯$_d#)K;¤Ó2Ú_å&÷¯½C)‚è,êæÁüŠ¦ôgó:ÛGï² ‹²Ëc¹	RIXª««â²OŽ®†÷qí$K9&Îšau_ª½Ê˜QÌ–së¹äyç.Ú^¯bqöÎÉm4ÖU0Æ¯¡£{W{~âcõ5ûÜ×k…p sŽîsÆcòåt:suìùüËðvz:Åw&¦~×ëñl·—•tU'ü4)Û*Ýºdúi¼µa{Ës¢FÞ)àÏ­“»Ö.Ñô«É?ÞÞ/Hw¯°9§µÞýÎßUÛ^p?fÆ	ìÿšîàöÆùœúŽŒ%,eíÈ i‡Öõû¤¤kŽkoþ†jÈ Úî XßwtÄè!ª`§Š·Ïé‡kÉÓƒŸrÚ5 Æ-57?€iwÃ?€°ÄçÅ¿€;¶€âf’Þ.“2©-šP÷&†t
:€¾‡\XN1z8¢Àzè {¿bxß»w4#m íØÔì]úï¨˜rp¢’ŒŒâáƒûX3¹i“3xœm‘É’›0 Dï|…ªrt%H%©°c{¼`¼LnYÈÛ×g²ÝÒ§®®×§7tœL™Ae91Ã&æ¹ƒL“å:Fg&-0EZK;^ ¶UP3CEa3Cƒg9, ž;z†Ç$:g:Eù?Þ€¦¥Cgërm¢†Á	F²ˆ£sâhT§¦­%¯ÀŠšwàK~û]¾÷ªçŸrþèÄÀ–Ž!"`uµ¬9Ÿå0¼Ã‘¦Š/uÓñ¶z|r8)öéøÏM´¢—|ü/Œâ%XGk°£¥›î’ð÷®Üz/ó\×ó]wãmf§Qû~âÍ­Si¬®¸‹o®Þ6±;ŸúN˜Äå³Z¼52ü‘È´òM´O=.Îêz¼ÒKùrí&]ÁfQ¶\Õ±¿—qîyÐÎÃÑÆÑWë@ ì”PÇÍh$F¸oNÄO¿Û¹·Çá,'%;]òü y|mFÞŠ”È?o•ªöõ®”—Ã9ÞÇƒ,Ž¦Ô€8xr“{¿ÚˆrìZOWÚwÿ9WaÚ<o÷ÃLMC$®¦þteçÁvžœ÷Õx^4½¼j`í›
×Þ3*wã¨[ÛáKZíÉ±ìåh‚v»,«ˆyÉ7AmO+è$³¥=¬·,¼l5.âG$Þ}Ì¢Öl•õVXâ¨î•2úÙìÆÖ2‹jÂˆ¯¦â€·Ì«øuæìMíÂ¯øjÖwí³püß˜öÂ;ÁA«ª
tü¢x?€:6(ºæ¤ ·±js:ðU#„¬…¦Õ×3ÿÜœ¶ðwÙ‰Ö‚÷@Ö ’ìô.üžŸ$xœQËŽ!¼ó¾G;¢›~Ì¬¢(+í$QŽ+¦!b ÌŒöïc6srÂ²]U®¢"P¨§e\×EKZf7%­½Œó¬í FGzF§p;JÔ8Ëy²QžG­×aÕÓE*uÐÎ312ŠPà­ù\àS ?qKTà³}|_ë­ÒÉÒ–I-j‘«‚OrR˜|½†Öèÿ ë0^Æå€Št¿Ò3¼XÜ´1o[Hi£
!Aº/	q€1æGíÛ–\HŒ"q§šöÆ6ªÏ·hA°º—‹8ØOðÝæ®S|ïhžÀ¡.Á@¡ˆ!±#‡†z‡îÈIzJ†D;ÀØÏ›|IÇ÷ãÞJÎí­@Ö¿È´“?*AÏ''~,b 1™2îÕWÜëÕŠÎ“eël“ Xÿª™\
KôÄŽ	«}œ·}ÊÎ=é÷ç}‡øÚlÆï—xœ‹ËnÃ E÷|Åì+E€y˜*ªºè/T]Ì Ù`aœü~£*Ýgwtï9£3Qr*Jm%"&¢Écvdô=¶˜93£v®dž}F›tÎs“4œHf©(¨¤C°NqT¨Ià1®­ÃÖÂüà¥r‡3Ýÿàs?v>€rfòJoáM*)EjëZÆà—S«çg*âQz‡ïp0,%ÖÛÊpï¸	ñGƒq}|ÞÜ¸ï¥Uhùß>‰_KêX9˜5xœm’Ën£0†÷<…¥YF ÁKí¨@BBîäFÃfÆ'Üj )yú¡fÓ³üþËæü `#„±¬
u††¦‘˜è
c¬(VuL`©
-@TÈ*’£“)²A!i4†ŸÐˆ…”1Õøçï)4B¦©…Ã"a)i,‚ª¬0¬1ÃRØ6i)À,,
Zƒå%W
žÓ¾çµnkú3¦¿€¢k#Mƒ2ÖÀ@VdY"ežó¦¡Ly3k#ð\”‚VY÷šð&m£Ÿ½á›XR%5OÀÓçY“©»ÛéìÝéÚ<w“/.	Ük‹X¦iÙ¦éYÞ<ÅÛ&·wÖ¥ms	÷nš·vM÷-ÂÉúP¨Éxbzko†ï°¶xw'_s¿ID”§ž_pæw£e\ã|o
¶tçètòae·¹<¶¹78^;1¿1Ç–@ñ·[tò¯¬ðê/Æç75ÓšŠt
Ê•¥,µ’ßFÕôz»Û¹³™Ÿf§%–€ábbu²	bhÖ¶{­I?Íƒ,–©ý°ÏX,Pq½¨®_·üÎ-ëÍ¬ædïól/R°…Ça05.ÝÃÞÕ´Þ'ÓLFF±
0$páÓÓò¡›(>ß7<wÊZAt,·u'å›ín~	 Ã7|›ŸeÜ9ûÀjö|¶	ü]Ékãtà3}¶„t§çI¿×NbùÞ‹^ìßI6Y¿ÿ˜´¢"¡ j³úÞÒº?”‘exÞ‡Å-§¿ëFP!J!IýäâŒ‚ŒGŸø¢€”q?Ã^é[šV eÕ¯ì¿
î)-@¿¼œ‡/ð™~"ÿA}Í›xœ1OÃ0…wÿŠÛQ+;‰“¸Bˆ…¹óå|n­6Ntqý÷T$6ØNOß{÷^fp=Z¯+bÛVû¦!O­	!8rUßùªud½5jFá”ÁµM­®MÇ=s°ƒ	n¨ÈáàÑô¬Û¡fët¥pÍçIàSä+¼á)±À£ß¾çe]xïù	LÉ«»Î5´ÑZÑ4Ž1gþ§Õ5ÚÕw«ÊeÑŽYb:ÅpƒkÒûÈÀ"¥
Mž¥~DÂÂy•ôÅ	Ê–™)†H¿{xMY&¿Â&8Ï,j;G:Ãˆ^`Y…ac˜ËÛ\˜Y¦‚Ü32ä½RÇXºûÝÂn¸þš¦>Þc†à“xœ½n1„{?Å¦E ÿïŒ’(MÚ$RJdì5œrg#Ûâíc.ôI7«Õ|;³%!‚B¡œj:Þ4Ü*i„×¾i­-3‚Ù½ÃNq‰’œLÂP€	ßJÇ)2§±i™PÝž9ª<ê®Ó†{ç¸î¤&f*Ç˜`kB|™CÀOî2‹×<e\;|¦¤š·¼GÊ(%6Žc_
þ×*i'ïVRj£l#„X`4'ÈÅ”)C‰€)…6:Ì„|¬†ŠÊmªWMpú<›ûP`Ê]Õ`ÂõÆ;õá@ªãŽiwx­:kx+Ãp…‹	eÞ~‡x<Y‹9/èb"ÞôÃ”Ït¹†wã¡&‚pq÷Ëß•¸›c/–sÚ¼&ä£¯?p«èýjÝüõ"ò×â}‘8xœ’ÍnÛ0„ï|Š=ô •%YVdE¦E€Š8iz+–ÔÊ"J‘*IÙñÛwi'@oéE—œÙo‡Œž$6}»ªÚ~U//Úº«•”ë[YUÔJ¼ÀFUjM•˜Ð“Ð,%®¥*¨ïI-Õª¯¨*šºX-—u×Wm¹®Û¶-sœ‡/h5xÄ­%ï»ýñçS˜-:ú åÅªªî\ÀÛ¢,
¡Ü8êé?¥mU¬Ëg©°»‘.áŽâì-à,„Y)
ÐvP¦yï¼#j{vap³éÀ¿ªXÀ7âæhÌâ@ž€ãÖEèõ±Ãl(,àžý¶l6»
ÂDJ÷š\ÿ¼¹ÿµy¸ººÞlÎŠóä-Žµ¯Ÿonî®ÏÊó…÷AâbÜx?`O/Œ¸sš¿öm· çE^‚‰‡‘1B[Îmâi(U] —É”ëÞ43o¡t;‚r¹…¼‡(Ÿ°ý´³lrrƒ ¼ž"Ë²€n&¥’Z’µÅÈ“Ëo½µhÞ%qkÛi…'ô¨b:(Æ„Ÿ˜w‰\ÿ¼ð¥!xóQDw„›Ìü<ÜÑì<JòÔ†ß-šàÀã.ó<DT¿y*ß·_0iþ‡'<OÈË²(ÛºÉùÆ²ãÝeœbÆ
Û¡ï2zÒ1­â²cN™¶™Ñv~úÇ?šnZ8¿Ío¿|ÏQ†|ˆ£É“ômZ2ƒR—¹¾Ïäáòµ,þ¡F,F˜xœÍjÃ0„ïzŠ½—Yò_B)-äzÈY?+[`IA’còö]§í¹=–a¿ÑÎÔŒjÔ­Àv@%¬Ñq}Ë»F4?É^£µb´(†ŽÝTÆXÁˆÞp1p-GÓñ;”-ÚnGm©Ð912µÖ9e¸¨èq«š"fxµÛsx/kÁ£Å7húVÊSÓ7=¼ð†sfR¾Vü/*ùØü ,Þžá’ &¨ù5Á-{º:­ô‰ä€¥¨	û¸'oA-K2ªú8AÄíwÉÑñOx×UÌ™”¶#lyl7ÿ†ŽŒ]g¿P«•\K‚Lò÷vž®R¥ø)P‘…ÆÝÀ& <Pg°(ŠMŸž‚ÚCrî ç¿z`_@E–Mž3xœm’Ks£0„ïü
UímSÙ„@l%[?0&vìø’’@`D?øõëdko™SOÏ7§n)8È"ªÎ8ÃRÝÐ°®©XO-ƒfãYjŒ¥†n©JK¯%05¨lPËÂ)É-H2ba1áL5s-G†™i¹Îþó§På:GÈP3N±ÍLÇr]K!Ã<‡clA…ör×0¦uÉ+°¦EÍ¸ÏN_â±ë;þ+ã€jè™ÈÐpU•´9J)¯°[ÊYÏÀ}ÝÞV—Ç¢”»žýºß¼mÑ•¸ýgâzX¸xn`/WñäËW€N“:¶íŒl;r¢ùŽÜÄá(v|s·×Ã#ÞÉ¶/]ãÙNgœ‡ÄÝ8£6iE´ñäº'd¬ªžF30xßn:o^ÇçÉ]’àM/Ú‹6ÛÆKï8˜GµÆnØ7ÜÍ¶ê
ii
 »Kz×j/ËËaœYtãPm½ØD
,;_zfaÓ«¦Ë~aå¯ó
¾­ù…JõëBbøÓõòf¬™$-*õ¼æ<£ï,¦Œ?¯ý$Ž­›í°GO9½ÞÈZ‘Y$‹÷¡Î‡C>+ã|BSxz^!™nŽÃ9Ü·ó×!N¸þúXú†'3¯¨·MH¯;ö® =Ù3²·F+÷$Òr‹Åëç—Æ/æîD@†òN_%ÅìH4o;&£²jÇ›"N}Œ´åêAÁd?(ÿ2›ãïSž¹(8hûª‚ô¼“à‡ŠtrÑ@YÐÓ]^žo«²“·u§(õñÀƒ½òŸò­Ì®½-óËÛÏOœ®-i#O%¨»2Mžw\þÞ"š%xœ‘ÏnÜ Æï<Å(§¦Õ®lÖ Š¢(éôÐãj€ÁF5`Î&o_ÖI.¹Têm4Ì÷›o>J"‚“m§HõØ`7ð¾ãmßi9 ‘ŠŒ„QzèdËVL
Œ¼á¢PÊ^+a„ìEÓRíh¹=£á¶S·2Ç?18Zà7NÜ›Ë^<æ-ÓÑÐ´Cwâã(¥„MÛ4LGï])ôR^<ÝÁ3.\Ë³3Õ²³oçï‹Ë.®Ì cJ¤„ìDk3Æž÷¥ Z¥Ò‡o7ï¸m5X®„CÈºµ¸nnAÏ&2Pfb¹`*à‚¡W°õôÚƒ€žòŠš Ó´ùjçO[Ùß<¥‰@¡þ6E¿3|q©6•0è.˜+³¦².Tm`0à]Î×ñÓÛ•ö¾÷ã ËLtÍÁ…éKµu™sÈç=–Šd_ftq/ô9pdì—«Ñ›C¥ÔÛÝ¿~†ýœxËr‘5xœm’[o›@…ßù+õ1J²ÀÂ²Q[‚í`¾Ço,†Åÿú:©úP©ó4šùFGšsDËÐ±˜‘$’C†¢02˜¢c¨D	1"ˆtšÄa¤Hm AØ JD˜ŒaˆM˜L1Ñ¨ªA³ˆ„e,ø//'r¨ÑH•Ä†¡Ç$”†#œ Ý@Eª®@‚“h/²º6å9+Á¦œµà{<|5¿º¾cO1û	d©
Vî"àÊJQ]U¹wx–‹·>ßyÝ²¦¥¹Èúðéüç,mÒ.OÁãgY“™ãæƒ3óÌín=ùšK@CgE–iZ¯¦XÁ<3ÊÚ{][œÑêª¶Î`š7½sÌ©ï­¶y6.E%Üoìùtn÷8³ùrÉn¼Ø	3¬9Ü\kºÎöÚûéC­E©Lœ>@nÄ*ÿTZWN
è¼‹Uœ?+Å{%BãúÕwÊSæð…M÷c`fu€«ù…’Z·u*Èjð‹Â¶6…{]®ë×ì°"q¼uåá(ÔÝzš—Š›—­gÎñ¬ŸYª…•Mf³Óqž#Š.Žû`lÎ}§©µæ‹ •|}‚åRôwýmªŸ³«¿[/WÛjÜ`Ù)P®‹=.ö“özË…ìî–ÛýQÇÝû¨Âû'ÇÁN|½oùr¡zÔ˜ò¾œ5|µ4ß&;ÎÙ²¤'ßaräQ £™¢‡Ëf¡]Þ“øÑµ“þx6ñìÿ;&¹¬Mhú²-»ô¬à›¬ªHÚºyÁRZåâY°’UL´ãcY§’Ä¯{®éxÛ°f	Ä=Žÿ@à3k”Ç ¹oÂ>/c0Ð–ç<ýTPÔßÈÈ
“xœ1OÃ0…wÿŠÛQ#Ç‰í¤ªPf@ˆábŸS«µ]9nQÿ=¦T,°Ý½§wß»’‰ WÚ âµ’(:Òrèi­Ð“ê…p’·ÂHvÄL±€œŒrz’Ý ÆÞQkUW³ÝØjÇ‰Ì$†A
aF†§²KžÓþSöð¸§ƒ‡ÿš²úCcR¸‡VõÐBŒîxË9«jð¥P†ŒžðŠs¬ÛÆ~\‡írZ¨±ô•º½EY<ZÃËB`0¦è \Ž´0ö%–AH¹º•‘âÕ‚ˆ–†±'_¯ÛUrn5]Öÿ¬ÏÞn­Ö•˜Ïd+Ã/`vg—S€T©|´t¤hoÖûoÜ¿²O¯q@xœ½N1„{?ÅJ”èNç³ãŸ(B)hh‰zc¯+g9>¢¼=&¼ ÝÌŽ¾ÑN«Dà0èyg%¢@N(i…âA“µãh¥ÒÜûÂJ¹W.H¹#âˆ’2V¬5^¥‚‚+ì†áÖ>K…÷rÞr©^Î´`ŠpˆblÇ%a\GWÒS¯•³6“æ';M¬_Sl*<cŽ´Â.¹»ƒ¿ÞÅñ²]hôtGÅÜ7¨¹£¼£,'ÚÃ+t­¿Ðh¥D­Þ†µ,ð[ŒÙCèÉi‹«‡+Öó\Ì‚±·ØûýPBN·ý?°Óià–4xœmRÉnÛ@½ë+èÑH¬Ý# )2’lÕ›¼È‰c=Œf¨Å‘%y´Øò×WMÛ[xâ#	<Ö ©ŒE8´˜Fqhðš²ÊS5Œ¨n×BÍTF#M*©€¼FŠÉ"]7 Ju¶tlF–…ù›fÄ4M1iþóÃ=edr]¶(Sl˜”‡¡œCšª«*UfI´©“B —æ)dhOãzâ×Ïä¥j*xäð½ß¯kŠjõ¢h +²,±â|Nëº'{iý£	ÑS^(³î%Në¤	{ÂcqWiŒþ„=ö¦>Z{kL=Ÿì^·ãÏº„$t­lfb;„lìÍ,ÁÎ5q¶ö|”œôU«‰é•áâ0%³2Ù5ÞÒ¾¿bF¬û¼ö¦ÆpåK(ó·Ã<ó}ì„‹réßë>ÞïnÁµ»N-~ìaá¦Çµñæh—]w)*Æ1­©ò6ä„Ä¤°&ÑÜÈ>Ã9:ÕlPxóB_-n×ÃúÆ ˆ¹òÑd„›`À‰xî†¬Ý '—ã~P@¯Ðð¨½ÞJmUÌÜÍÖ¢Ñq¼Ï.bäÝñÙZÎö#£õó{¹±½­{8|(œc"|7c7‘PÔkÂ)Ûî0ªNÎ»¾ªÒÙ›þäÛq©/./º}×µÄœ…#cîÍ³•·LÔR{Ãz¬!pÓî\¯š®n#y0o‡Ü»hñÄ¤Æù’u^3¶t³¦K¶ÝîO^•‘×’f6~–ÐswTúëÙØw¿vLZ‚ˆ•M–!—ª}S4]A‘(ÎèQ$ £Y
ù0‡ë‡ö¡jÊ²µ*I?óö,K!Â9ú×@Qÿ™=Në´Èi†_7däB›2øc7xœŽÍJ1„Ïæ)úfHb~&‹ˆâžDDXÄƒxH:52“cvÅ·7Ïâ¡à«‚*ªmD ƒçd'mŒ&Tä4¢Òä­p‘î’îr2p¶úJëèm˜¤qJHÙ¼3>‡“Ö"Lˆ<XÅü©½×î)%xÈTàê£ã8w¼ùŠ8b]®A%õ¥4ÜÂÀç¬§KnþY´BýÙk9/4àœßà6Fø<­kÝ¤þ¡ûÜr-~†Ã£ÒötÎHìây¾Q„—ý<Í§c.Ð*ˆQ˜Q0vÈÇBq¨)á{÷÷!öÑ×en’2xœmRÉr›@¼óS•ƒ*[Ã2¤ì”Ù,Y’µY7†ÅˆmØõõQçæîÛëîwén¥@
!¾ÑD‘Þ *ŠOE †’’@ƒH•°ÊU>£Ed‚ˆ D¢Â*–QDU"ˆ2y5D/úR$Ãà¿ŸÀ€>€
•h¨ú¼H"%ŒT>Â2BŠ„`äc‰ó»6)°ü¢ ØÒ´ AFÁcrûóÜt}é/ÀË"‚± f‡Ê<OÛ–2`¦­ÕðX”ŒV—é9NÛ¤#7Ã7±¸Š›4÷ ¿˜ö
¬Í5x·Í•¶Ûo_þÞ9À¡Ñ]ÓtCÓ6úÆI”ra[}©$Ÿâ[˜=hÚ4y¶¶ÌYè¾yaxucœ­Ï»…ÆÖ|äâYÃ{¾¬½0wSo™»ª(Ôª£¹97õa^e’9Î6µo9’=[(ê±³D·m90¦«¥)ª<#Q´wïúhÎå¼)¾?l¸.˜›èÎy<áÒkÃ;YC±žB,g»hÙº8é=ow9øêÙ°S›êèzï®™¡|T®‹úÜ­Ú><çça£‰–|($uÂ%ŽÝù(’Ê±õ5ù÷jQçÍñášž^-ƒ/¬kíìíËª ïnm†SáÉÇ«›$³Š¤.\=Æ>cAqâq‰jÚéswÈÂÏØ2aî
37Vkº22•†´ÓöcŸ+£÷Ä'{ê1÷¯³—ÕâûÆ8²˜‚ª»\ £uG›üà‘AÄÊ$ìkXóöÒÜgtâ¸¢ÏéO¥cW» ¹‰÷_ÚÝo\!øñ™xœ•ŽAnÃ D÷œâï²h˜DQÕe×m/ðbCdpÚÜ¾4¨º™÷4u%ïÝ@Þ¡ï•‘’´uâØ#ÚÙÛAyÂ±+®”*h¯‘;¨!àÁ
ôZaÐ¨l0JhÚp­œ•·:åÞ0%*ðN1‘»œ§æy-[¡½§8hÙsÁ%ïá‰8g./K¬•þO²t[è!~oWØ¹©A]Kw¡ûŽ±Ï‰ ‡P¨ˆ©f¨-h4)|­9Ïàp+1êÁCÛŒ3äÄn8GÿK”=cqLä»&ììýôÇUöÃÖrÄ’3xœm’Ko£0…÷ü
K³ubÀµ£y”„¼!I7#Ê«B3¿~ÒVÝõ®®ÎùÎâêÜNrtÄ!æ¶j „§„r'ØfRj¤†IUfi	„©¡4Dòª˜a-jfJTª†’bbÐÔ24L4lAl$}ñ)Mu[„˜ÝdS[Ò‰	U3Q™Æ&Œ+¤ïÎµcRe¼ "*.Á=>–Ç¶où/Æÿ #jéü„*„JR—eÖu7x–uO=÷U-yS\EÖ{úë|h3îÞÇÌüØÌ6`çÏVN´'º0´nâ:Žë9ÎÖÝÎÏfíí½Ð]˜ç­/ºôÇ¡°ö`òÄòax"¯ÛcÙ–/[Ì ZØÑÖ´½úÈTyž Ä4»+wLë:žÍHÕ/Œ$qëN„¯oc©á®Þ¹˜Ô§|¤€ìD–ë±!&Go¢Ë¶&/ó)P·×}Ûch%ßB¼®K»	B‘Å4í“S½C‹b­*àÍyÛŽqûfÈE±}vº45t&Wî’!Höäºç•ö¯É‚ós^,bo¥YG}å¿ŽÇ{ñEšØ­ù¬ò®åìÔVýí$ïŠçæ—QóYt1"0ê£—ÝNØÊgC]­Hó¢€²Èí´Ër$Â¹:ÚÅ=à•ÞV§ê F¨G—ÜY[ì¿\ãøoH9I38¼DÛnÚ¢<ôv6W>;›¬Æß7¦,¹4}Q É_{Þvà‡ªë6He]‚LaÄdÝÜU—’ÿ-[¡(·¿—YÒþ»®n@ßf• _îgªÈè»ð:ÿÎ‘'xœQÁj1½û+tKJ»‹gvì¡´Ð?H Ç"Ûò¬ÃŒ=ØrÒü}=š^
dIïéI3’šN,y4t «OnÆ(¯Ž¦sco¥ôJ¬˜)2h§QŽæ¨Ž;Ó£Ó
½Feü¨z½¥VÖ+ŸS†Íð„S¤÷îõ|+µÐÞÑWèôÐÇa8à³ì¤6-K`¦ÿ€Š¶@¶ÜÁ§j	q‚ø²ÐÏ¥LàsZ`fKqMß~‚P`NÓ´5û-‡?4ïáñL`ç åœêì &nä$¸¥¯È}ÆÂ¹Z®™Þñ—z0ó[«&tøÊÒÚï¦ˆôÿ‚ïá;7t¶¦ÐŽ¾©Øm\¢oÎøB"}’à¹Û6Ï5ëÜ†°£œÁ7pž¡Å-Z¨œ¨ì…xÜØÛCX3­”ñ²vÓ¸'¨‘~­)ó…òS}8‹¡9âvÉûy»û—aâ7HiÔ¹˜2xœm’K¢@…÷üŠJfiz,
(`Ò=iŠhŠÐJï((Ê³ iýõã<2«>Ë›ïœäæœQ
B`œ¦©È'¥"”	bQ*B”	Ç*’#rmÄh=€TÁT"¼š$I"‚¼âH‰Iª¦©¢ˆRŒÅHþó²ü ’ó1p*!
%b,§T’¨P"CÞ0°ŠêšöÀ£EMãÏù#çµ{ú=¡?E$cUQ1˜AB.nªªÊ€U«‘€çºa´-o¯Y1ä#ùþ ¾°emÖxú-}aÙØY;p°-GóoñçÎL½ëš¦š¶×÷ëwBcxúFÎÏ¢{˜=išÇ/lmMÌ²	aî¸ißkw)]­áÎ›AF5¸Ðj˜FMU±º˜vnžý}Ðhâ½iv‰:„Q3ùämõÕÖ¦Y•²™{¨8pÎš÷8ßñÙ2¬s^¶—åFpêªØ„Ò¬Ô+êùÚ¥Â‡À8ì/G"›¥¼vr,Ä9ã@ÉöGon™ÖÉµ‘Ì?6±Æk£OÊzÝ]³n£«3¶2¦ƒ·ˆÝ1Õ½pãD³"Û–@ògÇSwŠÄó”­üßoq}Ó-èÚÆ}È™¾kg™zq¨-éåv¡µ'ñtœ£[?¾À%™Üô\æI ­‘e‡»n/Þíª'.ž)¿;e:2³.™»ùñM%¶öÂ—ûÝxãþv¶pÌ¯ã¶”e´cYF»‘öøÆ‚RÖT gÿ†5OŠ>"%}ê»´l&Ž#cQ&?@Ð&Ñ@AYúZQ0±¨ýB¨úø™xœKK1…÷ùÜ´HK’&“¤ˆ¸Ó¥T\—<îmƒ3™!“ññï­¢kÝžÃ÷qN«ˆ°G"R"IIŠ«y§,wRjn‚ˆÑIãg“¯XíPáR
R+ÉÅŽ:oc Gd­ÒQJì¤Ù1¿´óXáÁ—‚30Œ/7ç‹çn^fÜ&¼Ñ)i´3NÂ5œ³8CnÿGvÎ(ûC²°ä>íáyJ¾!ô9”×á­ú‰±{l°|	.1}JÇØj¿Zƒ¯§eøúÖç¹Áê|<\	§×Ì—”ß—	¢ï{¬ó–±§|*˜6#Ñ&|ìÿ˜Ê>XÄq˜“2xœm’Ér£0 Dï|…ªæHeŒHb*™
ØÇàÝ±oHˆÅ`Xxáë'³ÝÒÇ®î¾¼–­@§„™š‰Ò¡É1O %äDb”@#]#š–˜Jµ¢’À"Œ ’$2A‰E,„©I(Ç‚P©kÃ1Óÿç©˜`Î(ãzÂá§˜Æ‰f0-ÂºÐ1c„
%êdvnÁ$ª*qK‘W‚<gŸ;¯—î"¾Çâ'€Ø@c@Õ ¦)ü|:åRŠ¸¹œt<WçVÔåã5ÍeÖ±ïŸ/ji^ò<ý–3v½ ÌÝ9Xyn`¯7Ëñ_
¸]îØ¶3´í…³ð3ÜøÃáÒ™’ìh„W½õn¶ýnqÏ×‘QÔ§°¢"›¤½O?ú•èz¡Âº÷¤\ù;¶¿ò¦ænÕ¯ýÂ2ËÃuíw›,GûÇ{o›EÖkDÊ‘6PÛÅ0{¸>ê‘'Raú±[¤»Ûul–á¬2Í¤=£:œ—Áãôž‹Î˜MÄhÄ|ã	HGCN‘LQ–fý,q/½åVôV{"kÆè¾:¡MV³À¿o¹:À^øæ	ÛÛã#‹ šå1hø¼ÜNw]5<M2¿Þß‹½°sîÞæê~‚>Öã´>šéjÙ.{{zÀbÛ(@=ôáüª×p_fë‚û´º…ªåßp…Ž#zÀ•µ{¬†u»±Åý¼£•sý–ÎŽÐ{QÀËÃT7Ê_fã`ô51e&ÚT€º+KÐŠ¦	¾A]Ç iÏ'µÿŽ5à²-Ÿò*—ŠÂº¼Œ€MGR€2gÕõ$À­ê_ÔØøP•xœŽMNÄ €÷œâ%n4fPáÑ‰1îtiÆx ~3D
¥êÜÞšèZðýôFƒA§¸’NByí£	…ÇÁ…ràÈyTl¶J‡JŒ…#ƒ#ŽR…ÆkB#…Qs§ƒ˜]û©6x²¥ÐJ…üÁÝió<,ëB7îAè[‰ê[×\pÎ|¦Ô;ýÔz›ù!™[S{xƒí9¹ò>|4;3öHbú„¸-¥âkkä;øZz«9oµ–9Û3\þrÏ‡1ª+Æ^Ò±PØÕwî¼ÿc‹}üJj2”xœŽÍJÄ0F÷yŠn™!É¤I3ˆ¸ÜŠ".ËMso'Ð?ÒÔÑ··Š®u÷-Îw8%rtÑ¥ÐÚÐ¯cúÀ28íÖ*2V!ØVÌ˜i,£Š:ËµqÌd|à:hI²òäÐØZÉÀk9MîqLÔÃ+v#e¸‰çïq·¬í#Ý‚²F»Ê;¯áZ*)E;C*…þ}õuõsaM}<ÂË±ô)ŒoÁ9ã,ÄØÜsê	8½oqý†-¾¨¦£ÒôS×`îhO8v´Àå¯ãñéBy}%ÄsÚ"ânbÞ…ã_âòÀqÙ™xœ»NÄ0 {Åö(‘7~ŸN'
þ !êµ½K¹øä8 øz¢‡nš™’^ËµSèu–‹+i±F+'³Bc\&VNÜ¨ó6ÀÆ¤˜b´ÁNš0;ä|p””‘Åª µtŒ×Öá¶Ê+<ÓËÆÎùýî÷cç9óÐêÅ™àÐÃD)Ej×kƒÿ­o~Uºæ<Ý2†ÏµFÞ¸×½m€ó2#NVˆÇú]ÊS+eŠ§¿FâÄS[ž4xœmÑKo›@ à;¿b¥^Z¡ÆË¢¤*c°±c.Ñ²»¼ÌË<Lì__'QoÙ¹ŒFßìŒ4}K)y9Ö°¢A"R^â"¢bsXá¡ŒMàU^åxU™µ´êA˜
ª¢)ˆXR´ˆðÉDŒx+QH¬~þïc•(’HˆFd¤Ý'ñœ¨Ý1å©F)ŒA±L4ôiÝU-À%mÁ?“¿ÝÐÑBÿ NyEº)r2¸.Ë¬ïïØÊúÅ§ªniS\ÿ&YŸÑÃ|Ó–4I—%à÷Ç3f–½žåß¶Özð²›}ÖÀ€±3°¡ëÆT×·Æv™Ê_Ow†£¤¹¸¹­=êº³×m]OÒõ<0 Þ4i›8[µ¢–1 ‘‚—‹¨îä¬çêÕpÆS[{½w»œ8?­ŠBpßMk1ÂË®ª/ëÝu´Š<œj›,ë|œ-¸‹o§¹îÃ	ÎKÖ¥¸¯jº™Z…bb–Sâz¾BU#®—'˜‡ö1†þ²³¨ÉYs‘œ!Y…luhtŽr/^±¯M0;	ò†%eÉæ gèèÛåº\Ö£~,»B¹8.¥ûÍ¹p,Wg]Zlsƒ‚êÖ&ëÝÌ·fÑhÌ
Ñ¢GW˜û×âÌ[Oa¹[Z¾GzÈ€nn_ÏÞkÜšØ–üâÔ!]6øzâøµMÊsÎ^C5·¦—é!u§¶ïÙ³ÅLŠcþ0{fÀó~‘:Ì×Ífkóû‹1+Ú&4CQ€–žÚõà'Äm]½ªU$C'MVôž¼½TYÿæ÷¨º7·NÞ<”P†©.%}:!àS¾(ê4wõÓµÍG ß9øë1Û—xœOOÃ0Åïù>‚Ðª4ý“¤šÐ&í&ÄÙÝ®¨M«6ÝàÛÆ‰òÅ~ò“Ïaf†R•uÚJÊYiMÆå.uZÉ3›)£LªŒÍÅ„3û „Ž3£­F¢¦Ð¶&å°¤¼V®Ñ5ijÌO9k83ìçÕOè©CÏ°Åé#Á(í–Õ·‰‡GHË\•¥•JÃƒ,2)¢:t!ðô÷ðŽ­Ó–®·f·¬'Ä¿V]è¼°ÑšJ)„¿\Áž^8ž…7ß8ëýØÂ„-ßŸÈÏTÞñÊ—Ž¯L›ú«Š‹|a'ŽpîÌcÇø¥íâRi’žù¸8u‘†6cÓÜÌÿ	+¾à—w5žxœ1n! {^±}ä¸c9,Ërá¸H½À’ Ýœ-ÿ>Q>)Ý4333`Xi…Qú¤B7+5{²ÉIéì„2E
Æ‘¸Sã2 Jm.1%=é@Îh«%OA[›¼æe6>M(h_µÁ•Jæ>è³pƒS|þÂ¥ïß#ŸAá¬­±
Þ¤’R„ºmyþ‡*üž×x„Û«X³/áÙè£ÂJ}pðàÖs-BÜòO.jJÿ:þußHü_!›3xœm‘Ë²›8@÷|…ªf‘…ë$SÉTÀ`ã7øq‰½“„ÀØ 0?î×Ç“¤f6éMw:½:ª˜)6‡†Ã"Xf9„0fCÊ¹m1lHŠ‚©ÖÐVH„Íl™B,‚„b†)Å;Ž%2Ó@ÈN9â?Ð´wlŽ c9§Â²1¢‚°ÔJ§ÂX£½:Õ-ð©,D	šKÑ‚/éýçñ­ë;ñ9ÿ H,4ÄÄ``@ÃÐx]U…R/yR¨°gà‹¬[Ñ”Ïoy¡N=ûüþð–7yWäàíßñ‚Ét¢I¶ÓÉÊÝí7ÁO®Ü;{®ë\7öâÙ‰Hum¼ùðt¶Ö7³Þ]÷CÖS×{”œ?ß©AT¯âõÝ×ÀÚ3[ä³:¥OøaL,•1˜¹ü]ÈŽ¼`h[yŒ*îd¤ë‡fþ¸õ.XÚx>³r÷N/}˜ómÝÆQ—I©ãúƒQ9È‡WÄÇIÀb7±ÇQ¶Þú!RãÚFëö¦0›˜?§Ö1=:Îö·õ8Þ«AvÆækÅ¾³Œö÷ç¡~t0²ÔÒ^ãj3ÛÅc~obã2ü¾›æÉfI.£pÓ,ª÷shf}EÒ2ü^´gS—µ}H¶éa4¯¨)` ïãù÷S­ÿºeé*Þá(e,f+‚ÂNMû`áÅç-zÄnDƒj1Kh,ŽÝmç$9[#&úò«¾^Æ·BûÕ,Xù.¦-E›Ðôe	ZqíE§À_Ð41ÈÚº§VRð‹ÐUÙ½]ÄSÓä­š¦àS.äÛoþ	Pù"üô’ÿgu£ŠZv? ›Æþ§—xœŽÍjÃ0„ïzŠ½åPlY’¥J{+ô‡Ò”Þ%k›ÔR°•BÞ¾jôØÂÂîûÍnžBg¤	½k»ÜÊ ¹o‚PÖ£à¹hJ\v´3b¦¾ƒS²ÖJÅµæ-WBAíÿ)ë¥³`ö”‡4Óƒ½aŒè íPrî–Ó‚µÇ-5%¼“m9B7uS×¬OÓ4æŒ’Bh~%Yüš°!ë=­öˆUþ\ªÎ+²±8ýPB~½tÌcŠc÷eý*('* f›q.L™èåãôþ´£×Ýãš±Ý¸ðU
¡rçÍ²o±Šp,—4xœm’Os¢@Åï|Š©Ú£›8300T%[%hPTüoÌ0ƒ@„AŒŸ~Ýìî-}èzõú×}y­j!€A9µm“q›éÔ2¹¤ˆI©Ón#C,Š$Õª¸¥zbaAm–Øâ0È²lC"t?`–eRÃÆšò?orBD"mLuKÜ»Mt®ë„HŒ±Å)&È$‘D‹[u8Õ`—™ÈÁ6NKQƒ§¤û/MÛˆÇDüÈ4°ELƒ „?E¦Ôö35jx*Oµ¨òÏ—4S‡–=ÞoÖÒ*m²<ü)×óÇ!˜ûs°û¡³ZGÞ—¯tË]ÇqŽ³po³,¼AäÖáhÌ.z=îGN»±ã7“}¹™žöQêÏ’­µù|_E',Fæà­³×ÉˆîáIõàXdz"‡ïÇv·—À«lR°ÄM•©#>ÌÒMc2šŽú´Üy€õÍ/œpÎ‰J¼r+Éy>¶¢ °;÷x=h°¾›ïâ~`_#´CÖqV¨#Ý/Ç«hk«•ª%¾æS)&7ÒàIæ'W.£z—2ègÁ42'íŽ-mg{’o?Ð>ñêõ[xÈ×h9ôgÅy ¤XT"tŠë‡e‰ƒª¶½ë>º¥EÔÙñ+?Kµó‘ÊWã![|„.ŽŸÜbÂ’%_*ÁèÐ‹>ÒðhfT‘~Ü­Â^Î¼ýtîÜ¢v—qÑú,‡~Ã×­g<2í´¿™yáðûÄ´©¨Sª6ÏA-Î­høt]²> áÒ‡\ˆ¾Ì®ýû šv—àK‚¶ÉÊˆk•g<S€Çº?ÿùyÆÊK!@óúäý]y\ýRø&xœQËj#1¼ë+úæ%YcBØÍa!›?`Ð£ef$#µ¼ößGŠ“H@ ¨®ª®î¦„ÚÎ=Š^âà8òq”Úª~ž¹à“u“’ý0v‡;«„ÀìPÞI!g1H9Œƒ˜N³ÔõÐž²\+dªÐ)&8^0ÀK8šÆÞk×çlúN>­ˆ²Úr­=™¸½@/¦ž’Ë	º¹ëXE7O„¿0vcÍ9±pÙp[´ÞÝÀ­ZeHùbA{Ê@4BÉh»×^,ö|°Þ(B Vy&Èþ¼«`]Çp×GÇZù_L›"x¯û”är>ÇDháýõï7ãÛÔ2*Ëg°ŠdJÅPI­Yeý¯9Z¦ÏÝ…Í1¨óYd¬dŽ°zÝ¦ƒB~W‚!4hñv	yùi¡¸Ôß->TSV=ñJI™zÓ’Úm×Û½[%µ€xeìPGEû{Ô·ýÏnÀ> ôµÌ{ïkxœ-Ê=
Â0 `(‚ÐS<q¬…$Mú’ÉÅÉ[4ÏW	ô4J¯Qœ½›³§°ƒëÇ÷Ù}³2EfÀöÆÑ°´hœWäR^YQÉHÜhò(×2ìj)œYß—«v®ÒP'Dž·a£¬”†Ç†;ð2uBjæ´Áéï]ðÃ³gèŠ#´cÜÂô:dçê™+êš3xœm’I›@„ïüŠ–r´’¦Œ4‰‚—aÀ˜¼ûÖ43ì¶Ç¿>N¢ÜòN¥§¯êR5ôB bSn@N˜np	*„Í)C†4)áY–PGDkI/êd&ÒY†™°(Â:#P7©A‘I„Á ‘e˜NE&¦ö?^@›0†°ÃMœQ:Â°,„`b
Ml=²la:¶FÆA6=Xº%8¼=xæ×?â§•øÆÅ`XÚØ‚ƒ‰nèºÆšª*†á{Åð:Rð\7½hËÏŸy1È‘~{ ÿ±åm®Š|ý}³¥çG öb°ñ½ÈÝîÒåŸ¿4pU36sÝÙÜu“YH«.öót¶²å;z»˜½uÝþ”øîR¦7¼ZE¹Õ%ç,ïV\á8	4`…£<–Gç¼jÇÐbøÚ·O¡Ó©Á_¸bÒ„ÝüýmJë¸Sž®?‰8ÄnnS:ßIª“×&÷2­ƒÉq\}Záänì8kÞ³L±àz0ºýö|»ú”žÔ;^³ÛÚ~o/—ÖS¬óí-ùÀmZxý¦®ÑÔ­ÎVœùHö[Ò¹¿!3^æî8ªV¦þ6
ÍÃ¥¬³èSE¡:wWwÕ¼ÀúŒ³ÓŒ¹ªµårÒóá*-	î6høõ5ýËùÖÍ}™]>vè¬8–¼)…÷Voî¬"…ñÇz1Æh"¶d[¼Þï<i/c;y§w®ç'»¾Ìs9Ñw|·`i;[F‹ÿ7¦­EŸÐŽe	zÑBà‹aBd}SEªâ@¤ü©"ê1M+5|eC_%›±ä@mÛô˜Gp!å#40 ¤æÀ0å/uw´‘3xœ}RÉ’¢@½óyïhŠÅ2¢{¢iÅ—[A•€²Y¸|ý0Ósš˜Œ<d¾|//ï	Îì4À:	‘‚4f„TÕCC':14YW©2‹úRE8+`Ü×0R“(2„EQx2p÷&d†Lu¦b•…•H#’’Ãšä)ìHÂ…÷º[¾çÏ¦f¼î%gUöèÅ©Hš°•ùè~£®À«ŒeYêÐ<‚qpR1iBxÿ#ûü¯,®â:áõWY#Çõ`é,aí:ž¹Ù®F¿q	$¸ÕVd™¦e›¦où_‰1w{eMûÉY[´*wo¦¹ÍF®ù5š­)!îí,³—©yŒ¤¬øF‚øàêƒ™\ù§fk/-<¬/4wgÞŽòEñ´§ü¹uðic=‰É¥8\yKƒjÐŸºça@¿$Ïhü"ôùj2…%/'$+ÑÒS¿¢ûÝ[ë¯%o›Â>4‘é”È¹b™§8òŸ…2Ü¡Lžxž?èÅ3ìï½UÕä—ÖDñî°œNü‡O¯f1ŒoK/X²ððÀýå=@;<5ÕÅUyÀòÙl1Ú¸×.´po?¨<¸;Yq(
|9xñfŠãÔ>8-º:ñ]s–s™w*ç˜ö4Ò?
2rÏŽþu|“éÐ¸§{-ùo‰üæºƒjfŒU²¦&áq],ÇÛ‰JóC‚ì LéÛ³‘7ü·cÒ¶¢D0(Úœõ"IÊÒZ¼F‚gP'e“Q¨›ª*¹ Û[CK²†ÕPž@A	‚‚¢&=€MÂþòN]N;îGw©ò²ªº¼žx™êÉÐvYMËâ'âûM‘4xœmQËŽ£:Ýó–îf®¢ž›çhf4hBÞô¦eŒÁtÀ€1¤¿~2}uwS›*:u¤SGIÆ@fÒ¥–‰¡	1³Sæ.4RfPBÌ)t ­µD2¡ N™e§(ËK‡S—¥¦CŒsÌ,§¶N2ä’ô¾i8™K³ÌºËç9Fî¦¶C³ÜJ	Â¹…;#o$ˆ(YžI!˜ß³Ëçð«zö5c?nÈ¾‹ZŒ ¡F›º.•º“£RM‡|dmuûU”Šé×;á/gE[ôeþ”Fñ
l¢ØÇÑÊ{:ìÂO\¸ô>õ=ÏŸxÞÖßÎ¸%–ýdçÏmþf¬ß±Œ/žW"öâ(>mÔ »(¹ˆxõÑYDé°ÖÀy<Ì——iÇ1:ø•‘HœÐm™Çû=-œöQÑšN‹Þë&œ:ÕÌ|;£BßÁafÈNcòžU–áêk4º•–ë¡‘çº¢–?ocµØÓI®zR‡ovïû!1Vþ¶„ßÖ“`±Œ®Ó¹§Ôë£¹]ÓÑœ>¥]’¯ûÙã–OÏUÚÉqPöZn8?]×²/c´Ö ~³°žÝÛ³—Ûä1”øt^ìb.ðfü±ƒ3§G[X3–?ín¸òƒìåùx=çãe…î.uÒ†]ŠNÞû‹&½4iÌ“Õs' g²ÞŠÂÊ9<Œn”ÙÈ<[ùÉY&ùŒ^~hàjí@û/³pü=1mÉdÁ@;T¬X¯À?:Æä²©—¬ŒžÙ˜ò{{½¦‰÷š=´²êøD 5ë[B(ø³~¥JV¯y#_¡üµ%Šù÷7Íx’xœ•1OÃ0…wÿŠA¨Uì:nRbd†1:;çØÂ±#Û-âß“V`!ÝtOß{ï®f"5o”nx»¸ãB˜Nj¥yËíhM×7z¯¤åÙ‚™b³'­Ú¦S]¯D×‰PR‘ì;­I‹óàØj$†ÇêR†gŒ‘
¼dÞ	ÜêóTŽ…¶#=WRìe/[	wofÒ<ûZéÿ$‹§™6Kö±À¸•ˆ3•p–SslÊ¡qÃ‚ÕÝÜ2öFP\:†ñÊyÕÑw¼ žÐÔàÃQ„bÖz>N€!°³Où5ãLŠ5§ÖÛf?¹
š S¡ZW†q¼®cºH—¬š ¡R~*à(Ó–±W?E7ÉÚþ<üñ3ögÛ¥T‘3xœm’Ks¢PF÷üŠ[5K*¸`*™
 A£QQñµãB_@AyóëÇdjvéU×Wçlúë¶@ÌPˆBxLT5!Á¦)"EŒqÇX1Y¨iD*ÃÎ-Š8åX×(£±jDÕiDMÇ`ÆÑ×(þÏ›‚˜*"B=Tuf˜_n€‘É9|9,2t,…]›^j4Ïäh&g¨ÑS|ý^^š®Çþ •M§øn YQEŠ.E‘µíö²vÔqôt¾ÔPæ·—$kÓŽ?Þ´¤Lš,A_c»Þx†Þ­ÆÞÌZK÷;—„®Ù–e;–åÛþ[Ê
sé,í‰žÉ¼ÇõøjYû|?¶Þ®¥óîYÅÆæ£uW5-¬çJcƒ˜]Û<¨ËCæ(#uÀfòÙÑ3£\ìç8>þ1õhî³Ï6
0ÈÆ'ùÕº¨¾íErp½6‹¹±Úñ@îø[oØ½Ë˜%ÃŒ-c:ÿ|2Ýß°¾ˆlß¾z™*¡µç{kJú‰ûÑíkj.g£§RV‘°DºšÒm`¬Cv°4:*Sh+/ØúˆSJ:6Þ˜ÜLœç49D1^*«?NIúÁªí"C=Úï—9Õ&ñoëVÙLi¹¿VK…I¨jÌð°Ùß‚Ýin™nœ„Ïeöy!X2œåBM& «¾fóövœœ'­˜öx¸ºæî³„žsnºÒ¿ÎÜÙðçÆ¤w¨@e—ç¨†ªƒ¦E¿T¬èHÔ—5‘ª9À@d‘ó°‘¤s_ÀoT\âLÜÐw†ê¦ÏÚµÄÝÿ/þ×úD3xœmRÙŽ¢P}ç+n2¦[¸ì“îIƒ"‹(‹(­oÀ½,¶,ÂÔ¯œI¿u¥rªNTri1ŒX†eâX³‘#Žç¡Èñ/b™C K5Q‹+ÇOK‚$P’ NÀœ,Å1Žá³#ÄÇþæ‹ˆ‰9N¹HF<’é‹¼ ‹?……¦b*rTÔ“¼nUî€‹
'_¼å“ÎG×wøá?€¸é3Ò<˜ÑMSI]–!¸zAŒ>oUÝâærÿÈ
’÷ñëDøá,k²®ÈÀË³TM7·ÀÕ]°3õ­ì}íßœ;5QE](Š§zV.\èÃÂW×b~æœmÍQQBhšŠšm=ç‘Ù³Ç¨)½åúkåL
º­Ò+ñmÅ«õþHëðôøL²Ô±çz¨yóÓìÀ+÷mŽ	ÇÍp´IË¯Íäà ƒP€¾}ÕWAã?mkoq
{©Ô}*ëÖ‰wREW«Ê+ýÃ(;~Ê:d¾<çžÕØž”l)p´Ú›½ÑŽ¼<TÙÙ¹nCè3]|Ä(pB“ÌîÅ-¥%Ïn¶Ziø&d{Äº+}ö*ÂS•q¶ºÎšªSÈgÆÐä<6¥<”áÈ	3U\Bß²Ö·Üæ±	c%E×B™—
Ü"Å·2hŒÖN
VŒë]Ýéq>®„90ÈåúVÛV³rñòË?™¡.
ÇÒ=X6ã;ÞqÌ©ÿžiÛåÏŽQÜf4ýåZ|íqGÀ/†…"HÛºEó—õ€_.E–“j(_PPÔ¿§Ø=7à{¦a_N1ŽHQW8Nü3“xœPÍjÃ0¾û)DO£ÁvÏ-c¶'Ø=Ë¶Üâ¸$NËÞ~NY=vŸ¾?©ŒDàPr¼VÒÍ[m„Ê´TV´Ö·Þ	KZvÄ‘†Æ<+#…VÓ[$çlÐFS¨4î[Ú˜YåÎ¥Ë#|à©‡=áÅŸ/ÃÛ4OÔxz…ê$µ’·ðÄçÌå”b)ô)óÙíà“R>ôñÐ•á” ‚sªÕ±Ä<0ö~ñ‡€j+ÕV•C;ïU«Ç_ÄCéb:öt3;–â4-Û|•.¼»¬æZ¥ÆùÜ0¶ïbO€eA°ŸnÒ¥Ï˜Xœºu}@»0öëÍ~CXÛïÝ_/a?»C™‘5xœmR[¯¢H~çWt²æŒ\š“™É€" ‹¢ç¼Lö¡oÜÄ¦Aå×/;›y›J*©ËWõUò•œ”ªzMhÐÔ!ãaƒÎ)W¹…ˆ¥ªé†®4XðZËšAK×´0¥hŽ9¥$Aâ	áHe&7,ƒÈ~ã1Ô,JU4nÖ"˜1F9&ÉH‰f”A‹šC†ÜÉì&À×9/Á§5à+{ü
~´]Ë¿0þŒÌ:ÝTÁDÕTU¡·ªÊ¥Á^.ýŽ€¯õMð¦|ýHs™uäËøÃXÚ¤mž‚·ÿÌq½`"/ï·µ?>î¯ºðhêØ¶³°í½³_gèà¢ÅÁÙÌ²îzCÛÆšØ‹6equ¿ûÇþŠf§9ÍŸ’) ôÎ¬`…ˆ	k(Ëë$ÜŸµÁÔI Ewµ2Ö¿Ã–í#„·i:XÑÐ®û“2^Õ;Å4q^Çkœ=é2ûâß¯F’áYó°'Ýd›‰¶Êd´|exN[Þ¯®¨»Ð¶p	¡o‘÷xíå /ê4{Æw¤‘®»Lû¨*ŽI‘Ñ½wþçÑgižë6—«øÝrM*Àî‰,ýUÓoöq3à—û!Yb;!žØhðªÌ(»Ó)ržmâ9êåj³æw¢€õÓyr<R=aMü±•¢ÚÌýÝšjlqS'gÿ°yí*–Oîsüª[:Eî9B>lÞ2ý¦€oÃþP(ÿkæn—VL	¹H9hº²‚ß;ÞJð—fèHÄ­OÁ_¸Ìy=_£ÉK.ÞXÔy¶º¢ü¬ûŠ¿Ñ2ÿ¬ò' ]^2ð»ò„9·De—ŽÙÚ¶ã@3´Ù¿I	˜xœÍJÄ0…÷yŠûò×ÛŒâj`DAp).’››iSiSGßÞ,\‹»ïøÎ©+3`
½•:ÙÞ¬¶‘½¡#±d‡ÁI‰¨~åRÁ¹Á:­Ð:O„GÏD!¡CNQÆž3l~¯oË
÷œ<d.pzox˜Þ]#h™o¡íhTN:‰RŠÖÎ¹Vþ§h´üÅKùœ¹£)¿Â9AØóáê×’Ë¸A.ð˜i]
<MûØR—mÛ”QƒÏy,»%¥.|ßüý-~ ÙŠ_Œ’5xœm’M›0†ïü
K=FÛš/c¤¶*6!	,ÐM²MÕ6ÆÂÂ¯ïv«Þ:§W3ÏÌ{xgŒJ¡ËÖÕ””™XÕ!%ª¦¤L3”Ê™ªË²Ô&‚Õ0Ó 41V©ÉŠ¢“$1QBˆI±®ËS
‰¡ýã1Ë JÆÌt“zšR”!(#S…„)z¢˜(‰”ŒCÞà$uÁ*pNxÍøœNïâ[?öìcÊ¾i
‚:ÖM°‚2„mn·bÞàM1lG>×`m5ãÅäãðŸ5Þò¾ààáOÙîÆ@¸	ÁwoXÏÇØ}ïK@SoSÛ²ìµeEv´ËÑ^×±½7ò«ötW…7YV Lžµ¿ÌçxÙZ>×_ºK,u‡Œò™¬?ïýy4Ž•¿»8˜/©út;8tZ,¿*Q¥êxEþAoñ£C½ß‡½	%àÄG‡uÜá-×çë²~F·«ðHÚí0;Z0ce¿í“×ƒ½Ñ.J'¡DsPì¡b1uvsÏËBù©Í1">fÖEÏä).:=Í§H\p>uÜZ?8è^3Í3¦n°™±V×Sd®¿tÍ~33Ü·?ú§S™íxq#K5\²…Z~y.«6i0°Ë’•pgáM*n8¯”õiu¬B»Töñª³2Íu²"Œøb‰ŠB½ž½Fuo$°‡A}…÷{&â}wšË/øR{¹-ýÍÌœÿ'&ùLpÚ±ª€`ÝÈú|UE™hnàÊ²L°9©
Vz{¶¨˜x˜Q5ïIúYßoìVÅ/ðX¼2U
þÍAQƒ³³a5ò7ù~Ñëû‘ý±€æoÇ 
ê™xœ»J1Eû|Åë¹ä1I&"rAÁÂB,rNNÆ\f22¯þ½SX‹°‹Å†ÅZgf D$ÏÙuÖ$ôÄ¡3VšV'n½ÎRec•qæº‚Á#Ev¡UZ[Œ1¸ˆ¨³VaG$Ñ·"nëû4Ãç…+\v<;Ï‰4× \«¥¶Òjh¤“RìïXÖ•ÿ#:iöýŠâµ~ŽÜÐPÞà®|neHpŽs-µ_ Tx¹½§aëwÌó4Âý²lÊÈ Äsé+§fÊ¹ÁïË¿ãâÒD`‘3xœm‘K›0F÷ü
K]¢v0Ø`¤¶ „IÈcBÞ³©Œm	¯“4ùõ¶ªÔÅÜÕ§û«»8J
ÃÜ¤N¹pf™ÄÄ„"N\“	„¹”;„3¤uTŠFÚX¸66šf0¥(ƒaÃ²\ŠIJEJþñ˜eÄf&K9u†ÈŒQ‚,³ÓdDp×¶ijtPE+Áˆ6¥¨Àžæà+¿ý	ÏýÐ‹/\|ïïMh;†kÝ€†¡±¶®K¥Þá¨T/C
¾6­]uÎKUé—wàƒ³¼Ëû2ŸF“x^Áz-¼Í6	ÿì5 [ï3ßóüÀóVþjZ Co‰;Å	-¯–œÜ</£‰ç±·#–×nwjF~™NvÆrôk 9øóvmóä|¨L¸;Þp±°øTµfäêIPÆÅËcëÖI^OEçÄq¢ØÌñ¡¨*+O¾\d£k¸¨Ž~îúàn$<éã~ëìï*ÕŸÆ›Ý,ˆ¼gtsI—YG§¼­ü>ÀV#5pëQ8Ý‰§o›Ùë1¹×åh»ºŠõaLÕl—×dä2õbu·¤óœb›ûüòó©ÒÀ¾Ín»<|{o„vÆì±Û¢é$uLßª_ýÙ[4ú8:žY7O‡ñ.	†÷S¨ºkàžx8OÎ+7 Í‰›Hy¢gãò0-oÄÆÐbÏÕÑ¸Gtaæ<^™Û¿ÚW´ºÂoøV3ÇÑþ:£is!sº¡ª€—Aô
|‚$ “m
)ÊF°³x*Ú^ýP’r.5mÛqªP-¨Ê´¹ÖüWVÐ&ý/·9ûíxœ•P=OÃ0Ýý+në ‰ó]b„©Ìß¥±êØ‘í€úïq	±=Ý½/½è™¡S5IlÇ‚¸oU);YwXQ×KÅUMÌHmGªz¶ˆëªjÛfìóZÉ¾†’KÙÍ8´CŸÎ(¹ä‘®qrÑZðÌÚ²:2ÜMÉç!¬3â{(šJMSt®ò"Ï…ró¬cäÿ+Åˆƒ×*ì`oÍ	Hå’ƒŠŸðý	Ò%zgû ´zm°ùbmÑ˜¯[P	ÿøAœ6K’êÓ@Xçó(îˆËbt*ø5ð¬ó3xºÙ+&·‚ñÂ?2]LV“ðžÀQ[ÂKÅi³,âE,ÓÖãv8íþ˜K| n·¤ùžxœ•Ž=nÄ D{Nñu[D¶øYƒ‰¢(eêM‘ÃPl°lÖÒÞ>Î	¢T#Íè=MÛ •õN/<… ÷ÖèÑÚÑz)#ÝÕE¶º¥‘VÞJÎÍ`­ÐÂ$t´RZ 4œQûI(æî-ÕÞ])Øé†\à¿A/éô¼í÷}À+	}•B+e=qÁ9óuYrkø?ÉnXêº”cA·nùp}º0ö™[¢–@sž~GÚ×9·³É;Å<ƒÎ,µÑ©äÊc©zÆ>òWAèjŒÝôxþãû…h	›xœ•ÁNÃ0†ïy
ßz€MÉÚ¬í„Gœà“Øm´6™’tˆ·§&¸!Ž–þï÷g—D†´EMÔ·\wFÖÜ¶Ê²¬‰µcÔ»†:DÓqÂD¡@«ö’šú½–-VYQÃJ7ZÖuº3H¦¸”1&xÄ(Ã3ù@öHp7®=yÉ´utkÛNíë]¯áF*)…óìK¡ÿ“‚Ñ$oó–“ÃBÀëúÉ›pž	Æ˜ËkIè\îköŒ–ÀŽÊB<}gçx&e$¨~aÕ'Wý€¬ÿH~Uô¡ÄKþj 6öÃ’°øn!Ç«Ò¥c'+ÀqšâäÅ—­/~ä6‘ycÞ/> K’³•4xœm’Ë®›0†÷<…¥.Ñi1¶1H§U!$)¹r;¹ìl0Â-`B’§/=jwÕÌ¯of4š_6B BuŠÍˆÆ,B,&±‡(2!b!á‚3‹i%2”š5¢”@hFDxL…ˆc+ÖuÌE¨cÊ-“]§ZkP3üÇsH!Ö	d(F`‚ˆI8Ž	15Gœ‰PCœ@¨°N^ª¸¬LE,)EÞ£þ3ùÙv­ø‰ X‡ˆbËê°ISÂª(R)xšÊ_ïeÕˆ:þLRyéø×øO[R'mš€·?áŒ§ž‚i ¶ÞÔ·wûÍøSW€úÖ	ÛvF¶½vÖ³^>Ú8szÉðêŽ¯·í›°=Û»í5ñ&e¡ÊÀô†gŽS%
XW‘cøÐÉÑÏ–¥ƒTÙ­ÚFíòÙ¦QñaKÔÅf¶T½C"$5»$8’Qì!°‹Å)ZïŠ×ØFóoÎãŠN÷×á%Cä/µëö¨Önd©Õ¾@^­8´Ô9µúþ”FŽžðqjËq­ÑûË_mÔýê¼=O²<ãAV¸E^¶ûAïî‚“ü°O“c·ÉI75ó¹aØSÀj–t¾`UfMöžú¯Åœ\û{<_ßú‡}|Î³Ùezè.2þHÌ Egk¿Úk¥_5ÓÉ–ÿR@6.v¯gEýëÔnd´A¡ä•Yå‹ó£½±$_nv;O‡æêü1Ý‰g¸øˆr—'pÖËï
ø~Oýá˜ÏßŒ}÷ÿS–¢I¨»<¸u¢•àDÐ qS |Ûˆ'ËSQ~+Eÿ‰û[ÛÕuÕH]Qì(+vŒ<0Pi(€ç~ª[ß ¸Mz¿+`›xœÍÁJÅ0Ð}¿b~ %iš¤#"‚®Äˆq‘ffž‘6)5ï‰o®ÅÝår·Ì`ýè§™¼2A¬(‰†fmB´/ƒ"o•qÝÎ¬3²ŒÞ44Ož-EÔbê‘›%ƒØ…s}/<°<&ÎpýÑâ°¶xûEqˆe»í¦Qáì‡^9¥ºÖn©Vþ'œa÷š/÷qMoð¼S¨/÷w°¯çSÊpáã3•µ€´Úþ)2S_Dúåûêï»îHZæ‘xœŽËJ1E÷ùŠú*ÊCDÝŒˆ³¤¢-Óé¦Í8ú÷fáZÜ].÷pnÛ˜!X‰œ*Ö˜‘5‘'íCÒÞ²ç£2’%±Ž×Œ6S,Ž¹”P”2‘“2.ïH)‡¹ DKRŒ§ö¶lpßwð0q…Ë÷wÇ¯Ï9íÒ2_´Fv‚-¢èí<µÆÿ Æþ‚â¹~Î<¤ãô79ÃÇi]—­Aé*Ÿáðh‰àévû; ¿”SJˆÃôZ9K)Cü¾ø[*~ ¡Z|ž1xœm‘I›@…ïüŠ–r´Ó4Íe¢´ƒ1^ñ`çÖ@5à˜f³ýë3I”Û¼[½÷U©¤×J Ä5,!¨¡SnÅ&Ñ5H…Å©HæÄ"äc"X©¹„²E<U…
ªž¤Üà ,“SÛFëT£¦à„
b ±ÿó)VÄjŒc›j1Õ4Ð1¦FJ!5(Ö„ClNÞµy%ÑŒ—%4(„¢„äèGþqçWÓ5ð-…Ÿ:¶±J©F*VU%©®×¢mA"¯hg]Œ~”•„úrÿ•mÞÅß>€OÖ²:kŠ}ý£ÉÔóWhãmÐÎ÷Vì%
§})hh&É„±‰ÃØv²çäm*œp˜ùI_÷Dúc¿ñY€“û=áxnÖ+–™¹™LŽQÛÏ¢ãtlfbÔë¥=È²SÍ·D^LRÇÝ_V.Ý•zÝ¿×îu»¤û¥'5	‚-Ìä«€9e“z­¹Õœ!˜³Ê2ß÷S=wJzß†·Ý‰–Õ=Éãc¤=GÞÜÄA[¼TÅt¬ÝôbçÙú´€Þè[ GÛ½íÇÕÕ¡Þâ2«…^·/‹ˆ…Ïg½9žŸƒ¿mn#“Dc
utBe·HN·p~lV¼˜íÃ÷ü!ÕG<³âÍòèª•|XAd_^wãÎóHðt¹½VÅâ±{0rÛÊ¢^ók¸d.y×öÒŸç¯Ý|?zÒ}xu-Ò6‡Iê¡ótïËÝpÄzÓXäp|RÐøAù×ÙtõüycÊd¨î.$á½ƒ¦E_0Á:²º¢"ãÃ˜×ÅW	C%ÏŠRöWøŽXÊëµbý‹~Ìôý’xœAKÄ0…ïùs×]š¦Ý¤‹ˆ^¼	"ž§É¤¶IIR—þ{ÓE¼*Ìó¾7¼‰ ëŠ”µí©iQõR45«°µ†ÈrJˆ²	ÎŒä3ÈF++;®:%X7XéÚpÙ
i­´µFv­j®yžÑ;šàOÌõ6<¥5ÑÑÐ#ðSÃ•h‹#ÜU¼ª˜óìr¦ÿ¡]%…?(ó_3ábpÉ\^_ Ò5ÄOÆ&×ïWÐ#úä±Ì8MÎ»î®£Ó#ïèo‡uÞ#§W×HÌù”	¦´³ÅâW™ x‚~ÛÛÞƒ™n‚ý$—)1Ô:DSÈi;2öæJ$sÖúíüWböÔ®œ2xœm‘Ko£0…÷ü
K³ŒÚ`¶‘ÚQ!!„¼É£	Ýá`ó` $ùõÓé¨Ò,zV÷œóÝÕi$ç€ Æ„©#MÐD!F”°Ž?=ƒ†1#USS.¡äetB)ƒ”B‹H q†Y$ . á*Ç*F&þæ‰~¤‚˜š”p*4=TZ‰ˆDhEÄ4¨®„m“œ%†eÊs°ã’Kðu_Ç[ÝÖü9â¿Ä:¤Hƒª	z*TUåx.Š´i>a7mÆ-/åYòK~‹Ó&iÙó'ðÃ[|‰ë4Oe;®· +w6ž»°¶»µó•+@]mmË²–åÛþ$A#ÜÖö”$™¾¼"éu–ÜÏò™scÊö÷»~0Ãõê®£€éò0(-ŸçP8A+¯±N«Û†¡°çÅëÄŠ®¶ÀƒÆ×N?ÍGÁÖ¼–†•›4ì)`{>ˆ"o<«7ª«»¸44>¹›¾Úµpÿðdàya•“JììèZlýèã|Gîi÷±ˆc_ÇÌ2å¦Ö‡É%Ã†ì•Ã¸¨ßkš	ìo‡öÊt¨Sï÷Rk+fŽ­~ykzÉö«Ý»Q)`ít#ÌÝ¤YO£Äôüó¼Ó,Zf~EØøQdÎpÚ/ºî}6ºÕÇúárª}u
gfê­âv±fvv7ÖóÎcÁ$êŸhlävsÌaò8-íú&ªãžÝ17vã`n&ËÁù«Dz¯
x½LSþmæ,†?/¦Ì¹Œ9¸´y$¯Z^7àD!ÏHã°ë‹ôöÔ–i“†yúàÑÓ5”iÈr®(£ôþkÀwóz£úGxœPÁjÃ0½û+DO£%¶')cl0;ï°ãc¹1$v°vÝ×Ï¬ì6ØA =Þ{’^ŽDÐH­m·“¢²¼“¨dK•j§Ê¬y-Œ®«N°#ù¦ªµh”6…Ž„M‹}W7}‹ªkŒí8*ÁpÉCˆð„ÞÑoxðáÎœ¾›‡´$Úº®v¼mÍ9ÜV¼ªX¦ÉåLÿ2œh/Þe‡£û$8bt¨GçaÆ”òÆÇžSÁ®¼a9¤ yÀ'<g ç%X®dÃ~»^V¾Û’äúfËØ³û ´[’#"i¡a½JË<‡˜a"ÌhJuEÉ¸H}vÁƒ-aýœ¸*^¯®|k6ÁÚ>ïÿ
ƒ}í—žxœ±N!E{¾bzó8°/Æh´±¶°†á=’]0,«ñïÝø&v·9çäŽ.§ 4yÞcg™Ï¢c4HØ¥¨>b—:ÀD!axG™³–D‰3ºŒ^´&;‘Šû¸¶/±Yà=^ªt¸ç¯ßñ¸í›Ü²< ’;ªÁ:‚Z«¹­kCþª´—…ÏðÄKI×ý"#¦Eò£Áó+Hý,½Õõ8¢Ô[9t|j9ŸÒ÷ù¯šúàz^v1xœm‘K¢@ „ïüŠNöhfí†æÑÉÎfx‹:
Š
Ühh‡—<Tüõ;;›½M*•ÊW§:Æ ”yI†Ê‰LL¤ð8£T&YB¦0B³D¡„pmÜ±z X“Œ,Ëˆ—)S Æ˜@È<‚b¢ÈL%Š¡ðŸ$R$)c’P’f
Â	ùt‚Ò,M¨PIäâq870âº`%8ÅyÍ:ð+½…·~ìÙÏ”ýHÂH‚ÄË`„\ÒTU1Ÿ°]‹‘‚_uÓ±¶œÞòb8ôç'ðÍ,oó¾ÈÁË_i¦íl€k»`ïØÕ?ìÌ¯ž¸÷Z¢©ª¦«ª§yË3?#¾ÓVòù‚·7¡sîªê‡‰£ªV”/=ßªñš§^ˆ¯Ù&¾s`7ñäuˆFÆ¹™Ásàö­a´ƒ|õVþ&¯åÇ²p¼mà?öOj6Qc’}õ\ìUëb\Êµ—X_îTþpùpöºL.’óêå)¾üp%hÑš7-N¾ZêÈHž..¹Ý¯ãpÁG¤]’ÊÐ¼À2LìQ©²»[ë©x„"™…«QââÁ±MÉÖ[MvíEÜZpÍk÷ŽOci˜ù¾QÑ=gC\??æcŽ>öÙüá	Ù”¸QïõÏ{àw«Éœ®G—ŸËåeŽÈ®`×ƒ%lwã!Ìœã¶…Ê{äpCDO£%ºWâdAeL$PŽ3èðRkn9¯x½Z¼ÈýûÌÜß?Æ½³.g Ëtì:²~ ?€ Èº¦eQ—úV±y;¼Tlˆ9ÎÀßð{îï°˜xœŽAnÃ E÷œb.àƒ1PEU“m—=cƒ½}©ûvõ¥¯÷¤Ç¤U£•$­ï™èz§†„h}š¼&GÓäÐ{±…F+CÂ“#ÒÑ*$Ô&5:¯=#aŒÕR¡áà\|Rá÷cŸ2\øÚµ•ž—ÚæwèÇ¡7Öhm “NJ1Õe)Ìô_u4ZýªâØb`‚-ì;çV9C¬Ó±œáK]…¸ÅXÖ8,ÄáÄ¤ò|9-œµ‹_e^)v5¥¿ßþê?<8ir,xœ’=Ü @{~Åtiâ5þÄ»ŠN§4)’"R"¥3ØÈ6cÞ½Í¯ÞÝ»ê¤\iæÍ›èA«¹hª;SI¬ZQÈ®/¸BWÆTuYÕ[¥G¡îšÞà±¢(…ÂŽ×u}ä¼¬Ê‚7}'°mZUóŠÉ-Žäá;Ú8Â×-ô#|™Ô~>OèÎòÃm]TE“ ãç¬§e±1âÇR“wS©,lëJ>‚„e”:-0vFð¨­Ç>Zr`’Õ*Cˆ£ßû=âë¶a„½¼tVOg«Q'ÖE^!„{kl£?àÁþÅÏ ¶È½ÅÉ3Bª0BLô»…§î2øygƒt@ëÍ)P
µl`ržé‚úÀØŸqW¿à'0¢O…l„™h
0Û	oð÷ÔÉÍWxŒ5{w »TF[|M
øF G”©ãÄ0ö%ñe„Ëþ»ÛãaRË®¿×~›‚CÔao} P”âÓ$ö;¥&~X7`Œq§<mS‡„Êgë¶—ÌÌ÷-ëg›Û6yQ;öËuFÆdêzúßg`ÿ A•ò.xœ;N1 {Ÿâõ(‘ÿŸ!¸õ³ý–ví•×›ˆÛ!zè¦™™9ˆ@h…EnÐ{’’ÇU>™ãz]„djR	™¼Òc‘R,Rr<Xë”UÑ¡p2•Âð˜Ÿ}À+¶J¼ãG£ùöÏû±Ó9Ó«…q:\pÎR_×:'ýW5\˜_•Å£.ù/9Ã6úµf‚Ò¬½Am°ÔØ®+o7ÆÞê½–O½”Süºü5cßžA^9œ3xœm’K¢@F÷üŠJfiz¤ŠŠ¤{ÒÐ*¨<»ÙP<lä!ê¯§gf×wusrnr“ï:Æ <ŠÓ˜œ	aˆÄ•”ÅË²g©œ2‚áZÚ±z ¢ÄcšðŠˆ˜ 	Iè!3„˜L°œfLA	ŠiÆþûXy	ÉY‹™H©€3	¥‰%(”!‘ Ž	/rtŠ¦Z—¬š×¬Ïéôµ¼öcÏ~¦ì€†¢,(Šf<äy.iN§r²^ÆƒçºéX[Ý^ór(ÆøçCøæ,oó¾ÌÁÓŸÑ–úÚ;}ökÝVýÀ[~qp`êµDSUíMU]ÍÝH/ož¶•‹#v.B·žTÕ;%kUóõ’~@ë:ÓÖ0Ð¢ãA—Ã6âÀiÆâõ§Ãê¾É”|öÉ˜g±Rð´ÌÕœˆÇ:¹ùñÔnzÐ‘Wç)Ù!,j›HáÀ%{¿vÒÖÐWž•^dËö´µ‰¿8ú‹d¨ßôj}O¨;y›p8á‡b‹°oÄ÷[‹–-H543¶œonö],×8Gd%êÕñzÎ<7azRÉG)Å&œÖÙWVä¸ç3ªH÷øA‰7önOvup„®ièëÍÄ35á‡ô:U´—ýKXXŠuÿ•í¤¨Çð22ˆÜFä9 /·–nøeÙÕÑ»wª"{iv}fÌ'ø~‹ÏÈ\øÇ0
˜±B†Dç"ØãÆ	íŒ]‹&xáÀ‹ë¥	÷7³¥½ø>1Îb]Î@;VèØydý ~@¤È ëš(s:Í›–Õ}_=	OýØ¶M7pœš¦ÀyàýÞø‡AöhdZ$mŸ>ÙäìÑE:”MýQ	þ„xœÁjÃ0DïúŠ½[V,9”Òrhi!”ž%k‹:R°”†ü}ÐœÛÛÎòÞ²“'€T]qcVÂ5N+ãtÛYn„²5ÎJ%¸bG=!dZ´•Ð}Õ-8šºiyËgœC*!­CÇ{n´Ó§<Ä‰6:xŒô©÷=ÚómxN§„Òâ‰êVTµì”lé¡ª«Šõñpð9ã_j½ª›_•…ï–ô‘@£7×@n~aYÓÙ‡=m¶Åöuµ.ÖÛÕ;1eúÂ%1vÇGè)ÀRŽw”\)¤òvÙç’>}æ½Otõ:SdvŠÇmqD°ý…b ·9ìv/%c;?°Et®0—å_ýØ;…†›3xœm’Ks¢@…÷üŠ®š¥•Ø4†©d*€|FÇÍT—‡¶€¼Løõc25»ÜÕ}|wsÎik Då$•Ò0‰ˆDá>ÅÔ8‰©N!ÖuÓXb	«¡hQLMÔ$Tï|,)bBq¢1)’TP™®È!]ÑúŸÀš¨“d-Ò°¢ê„©„ “±ÂTÌôIDEE`]›•5š°"Žö,- FOñí«yiºcø…DU*©ŠŒFXÄXˆÊË%oÛ;ìäí´ÑSQÖPñ—4o³.|¼ß¼¥UÚä)zø,ÓvfK´vÖ(˜9Kc»óí¯½€tkÌÈ4Ó2Œ¹™gÄÁ{Ë7]šäU/Õ³›a(ïåÌp’lì-ýQ-^‡éÂXoôCçq" 7‘k»5FÉçÈDihÀ<*¶1q;;àj5†È•ùr¯“5Åpd»ÀÞ²Éz?ÐÖÊ¸æ)ÍNÔö|7ÎêSÖ7Å'Öy÷Ñ¯¶ì¤Ìµ+»d:òô2»šôØWíqW&VÉßýÅ-}·CyÝ0=ãlE&·0%yoÏÎ×ùyÐ©èÐLNëdlüvN<-ò:8Ëlÿ:-ÈNpqOÓÅÖ–³×å¨(•.l¡{D¬§uÊÃªÝE­•ZCbŽ'X3Ëx! ;ŸZ·d'Î?èÇ\ÞÉ£­Ýi¦ï­\´®™¿mÜ¬ƒd,÷îÜt'Ó›i=vÏzîú~.üóÌ^N¾wLX@ª:ÎQ×šý‰ŽQR—”§ì6æešGŒ?„¼ŒÎM>€  ¢¿ÀOÔtUUÖ-*”Â=yy„bèóP[Þá=kòò/Ô=þ­xœÍNÃ0„ï~Š½T¡VÎ_ÝTqà qŒlï:±HâÈvZ•§Ç®8ô ·í|³Ú‰žDmöB(£ËJPRXÒŠV¶mÃVÒ[¤§9‚h„*Û’UTJT*ÝòMâDÙ"VL®qp^äli„ÙÏäáÏ×á9¬vHOPìkÎ‹º<ð‚s¦Ý4Ùé_hÑˆªn?(›Oá=ŒVeK‚£OÑ[:¥•ë­–#¨ÑéOö‹ËHn°<w=Åî‡é®L—™il¿z·Æ³Ûà¼6ÀY^àœBeºÖeq>‚IÝÌÎOÉ¯éÒÉj
p—onðäŒWSOéi«á×Ðo0vŒ½ÚTn1[u9þÕûš¥9“xœÁjÃ0DïúŠ½—Ù²¥(”ÒC¿ -ô,kgA,YNéß×	¡×ö6°ó†·µ ¤Yq&°´co»Ò2Æ¡Á{ÓGÝ ­:‡‚\‰»àÄÊh%vl†Vœ–}0ÑXØà7HÃ^œ
k=Î…^BN8ÑGøÌ(ôÈ_·ð¼¬ÆµÖxï]ï=èVkçiJµâ?hßÎôVßQ•/ôŠi¾€Ö¼™dÍ±¦9#žPÂ5+õ~D¥…òLi:Ÿ0mÏÝn$›u=bÁ/ºPÈ|mnƒ¥Q÷ýT¥ÞÒæÄ»Yd7~þRV?'Ûyœ4xœmÑKs¢@à=¿¢«fi9v7Í«*™
ˆoðAv\õ×Édv¹«S·¾³: @X¦,
®0ëDW	‰UÆ"EU´)\cL–*. lP9V˜zdÈ†U"s¦c-Ö¸²(¢QÌˆúßÇº2Ç:†àQÆ8‰‰² Sep¤o›ô$ÍËr´çI	=EÝWx©Û~Gð•E“©b &Ká©(²¦y`'k^Û =•'U~{I²&mƒßðC-©’:KPÿó¬‘3Y •³BîÄY˜Þv3úúKHB]m…–iZCÓ\[ëiJv6ÜXoZzdË‹,&iºéÇÄœÄZt¸4{S‹úl˜ó{¾¨
	ÝiÉÏÎzsïØÉ~]OÅÓ¶!T¿„/ÜÖìFæßJZ·×¥±»½%šº­ÝÖ‚Î—Ðå2+H¶˜©Þ9!#?ìS>¥KË¢ØØç²A“ý8l_sÃ±À«û7üî.6þØHH÷æ³ñGhßâ!9h.Vd›+Û]KŽÙÄÙaÏíy¶õA·Õz:¼z“v*yjºÓDBÛÑúýp1ð;½a¥ãŸƒÝåÌ‡wîiBv¼òÆnz3G‘Œ_ßÏ{lÐªè“ë^B|Šl6ÍðºmwyÁ–áÊ·)î•9÷››qî£ù{½­®YqV6¬ªH=p‡nÈ'M1–Ðó‚ì2éßf£…ýóbÒD¨jó	8·P7è‘1E±8(Kx7ˆ³k?…¼êP×<~œEýº­ª“húÇ6u??%’4Î®èS¢o‰}Kô-ÑCþd2¢—xœÁnÃ †ï<…ïS*H$Õ4í0í¶iÇŠ‚I‘ˆˆÓµo?Ònçí†ñïÿÿlÊˆÀ›Zº£hZi|':%„WRº¶³J¡¶²5ZÊ†Í&c$Àºñ­ÔØ¹¾éÔuë47²ãÚkÓZé\í¼Š™•N)Ã‹‰Gø4CÄîëöx^ÖwŸ@(É5WµVðÀçÌ¦i
Dø¯QÑêºïúŸQÏîá5\  æ+,…€à„ã„_€|pÕ²ÎséTè=ZZª1Œ½Ÿü-…!,@	2RxF Ò+"˜Í€bñ™Ì¦ÛÁÇìÝ[»åkSv!ãLt0¥3º›æÎµÎÅ¤øo?CN¥L¤CÉ8lìdÙ1öÊÞ®JÞWÇëþ¯³°o¾Ü›Ô–&xœQÁjë0¼ë+ö–C› Åqd—R
-…Âƒò ç•µŽ’,©iÿþmÜ^Ním¥ÙÝ™ÉX«µ¶fS¥tËU£Z]mD³©*YU½4mMµ8âD1b]‘ÑF™Z×}kú›µn²RuÖš^o¥©×À’‡q‚gŒŽ<ìñi‚{{š‹ÇT­,=€ÚnäVmµ–p#•”¢Cp9Ó¯¨ªÖë¶j¾©Âçíì(CÀJ€NÑÅxz'/ÄÞñU%ƒ¥ÞÍÿy ó‹Ï×Ø¹3„ô™2qrÞ/¿âÌØ[8®À%páè)°S˜Ýv¤hÉ®Ä›AxnC(ÜJ”ž!P]ø±óÅR‚ÅræaÌ®[¬Äß'O”x!S" ø1ÃØÃëîmù‘§±mGï˜pQ‘VBü¡¼H_Z¿®¾V˜FþDÎ”uý¯4	Îš•^üIÞÑ:Ý9ŽÁ.Ç¾_šÏ»ŸRÿ ªÎŒ™xœ½j1„{=ÅöÁF?w'Éã"ë®wW+Gp>YGðÛûðÜÃ0ßLo" '­'‹)š)‹QÉIN,adŠ–xSÍ¬~±ÉÒÁRä¯½sd|ŽCÝÖÈEÎ>x$®ý§6øÂ¥È¼.Òà3ý½Ìé¾ÞeŸäfÌèm>´ÑZq½ÝJïòªh-s:Ày¹Ö&$ã:wØ¿bH¥	÷ÚJ}—m)íjÎ;zþ;RO?q]î–3xœm’Û’¢0†ïyŠTí¥å˜p°5³5 ˆ‡DÝ™»„D9ˆ¬>ý:níÝtUWu÷÷÷MÿÝ	Î1ÒT#áœZÉ=UDõ”!Š16YJˆÆ-å+¼ê K°‰ m[Ð †ÊîÛ12Biˆcš¨„Rõ¿Þ ¦…­cfó4M ïmj'™&N!4¨F µ…ÈîP0!UÎ°'YÅxfý£xmeËŸÿÖ‘a"Œ0€B%©Ë2ïº»ØÏ»™¤à¹ªoŠëk–wIŸî‚oÖ²&kó¿Âõüy B?›¹8ñ6òs( oÝÄuwì8ïîûâ ú»h¹KópÔ×MÌ{ÇùÝ&sg\H³`ãY°®${³0]5(àVïsß›®ò¶îÚà”À~³ÎYî—ÑýšË ]oÈùì_<ŸÝpci^_‘'W™ü±vÄ9ë/–tÝ uï[] ¯°^Î&+8º|ìe"“ØÕz5çøXûÛpÍÎ¶¹É+D…¢~f¬÷xÇÓM‘¯ÝRÝ*ã¬¬îŽµ'j›~ã„è"gö`9=ŽÄT3–Áþ­§µéV´ã­ÌIè±Ï
’z¸8½j_Ä)\ÉÏXšV.LDã™Ùöª‹>A»…PÀq‰„yü4æeÖË±+«I/Í&
¡ê³÷N‚\×ÝÓ¬Ìq¢úÎü·^ß¦õ^H­œÞ>^ðRåkGùç™L¾wLYq‘qÐÈ¢ ‚Ÿ%o;ðiƒTÔ%È3Ò¨Ì6üú’ðaIN|H¯Ã’·u¥(øDšWøâ€^Áƒ?ýzýÃ•+xœ‘A¯!Çï|ŠI<x0mØ.»í6Æè‹^ô%ž¶X°ÛôÛK·Ï&zxÊÀäÿ›™ÿLID ºÃ€C'÷;­[%:Ú®9öBöûFvJˆnYÄD¾€1ýÁˆVK%ZÅ{…­d7´šóC?´DfÀI0œË)$øŒÞ’ƒ8zJð^_ÖÇÇ<gÚjú M/š®ã¢çðŽ7œ3¦É–Bÿ‰î›ï^P&gëô¾Qt¨¬aÂ3¼ÂD9ø-cÏ'›Áú%¸…2¤‡ƒ¯Uk¬«ñ°æƒ5¸eŸ\PN%Ä£¥¶¦‚7vœAVÉÆ>\ Û)ºëZå\“½”~þü]j;?ç\ á’0ÆêÓÔ¡ÝøR Ï1†T2»6Á¹p¹õª‹>»™\/(”Ëýe}.ÕÔý£¡‡zÞÔÑLa©#Ya*Ö *Õñ\àLŽÖäw:Îi¤Wiôú/=a&ÁW§Uæá‰ú‘ÒÛÎJ¿L—Îu%ßmÝªÞc6òzü×ÒÙ/]ê#Ÿ%xœQÍnÜ ¾ÏSÌ¡§FÙ˜­mÖ«ªê!Ê´RÎfl,ÙìÛhUåÖJÐ0ß/)á$§Ñ¹ç‰OZG©zAtb,TÇGÑ³&›ŠäÒL_d'EG’”æžz9NG¡‰Izù4ŒÌ*§5D|TÞ’ÃgµxŠøÕ\Ûåûžw:ú†bìÅ »¡x×‰®.›ý7Tòæl9ã“}ÇÏ‡kTÒ»vÙnªRz´‹Mvñ!ÀÏ•PçØ’ÅìhÇí²¹²„)ÔSmNàÕ¦ ?µ7eîyÞbx!öggÿv¡¦
Xy98®Ö/U|Ý±ô‡¿uÎ7ž00ÞBŽ,!Ûââ¹ž	=XqóJ´aZk¢æÚØXvB¼Õhuž¢Ò¯EL¸T×Ê|É{ªÌµÕ‹yçªÀ_°-Áë^‡Òm©‘µÛô ð£X$s˜ïçÛù_ß¿ qÌ;•4xœm’M³¢8…÷üŠTÍò–M	ªî©EÄ{¿½:5‹’ò¡´õ×Ó]½ë³zëÔóžÍ9ºX³³-œ9%ˆ¤SJQŠŽ!s!LmaãŒÖŠZâfÔv¡‹ pãì:ÔB\HÁ	OéGJù›ÅB[è9§0e"ÏÂÅ–Ë…GH—\BƒõúÔ´`Äê\”`ÏT-Zð5»ÿ<¾w}'¾dâo€ŒAuÁD¼©ª\ëåzÒ§àkÝ´âR>¾«\ŸúôËøÃ›º¨.W`ð¿‚0Šç`-À:Žæþf»
ú0À½xàûÁÐ÷—Árz²‚l5\ïî©ÀÉÍnã»ï[šÇþx©'»	žö-®ç§³¸^¹k€(Ê”lãr¼šÔ,lÞ£næŸW8ùXªmHÊÆqa–™÷ã´ÀcènhœÐ¦Õç§7Ã½ˆ°oŠé²Á—~tÂBßßšCÚM†R u¸8»y‰'‰9Z¬“’¤è±=}Î®Ç8-.æîü¬pÂyóa­½SÝÄ:äóýfIËÞ.ñt·ª¸zøæ*½6û÷†º3Y:t¿óWÈÌ'Ò^S::¢­C;§&Ç{k/¬Íš‹>iãéðÁÄ9‰Czí·á'äezSÁQïgMX•(z: 80²Ñ›[¼oåb¨,–šOolöy•gž·$ãC"ŸF›ƒÅfaÑ¾©MÌzæÝLµSßð-Ó‚¿:ç£?7fÌD«¸ôe	ZqíE§Á_È†È¶©@!¤lÅƒ•¹¨ÍŠu¯áÆ?õ­^æÿ‚qþÜºAW±VX–ÊF´W@7¯8Ýæâ& ï;ÝT¯ÉåÙŒ‹ž˜xœ½NÅ @wžâ{n€~@1ÆÜÉÁ¸9~>*¦-7”V}{;8·““œœÞˆ@^I?(LF9-uèœ“AšˆÂ[!Â@&Çn¾ÑÚAÛä+¬dÉÇŒ„Ö8%#eŠ:“GmrÎÌïý½6x¢œá¹Ð
÷'^æ¯Ÿ)^b]@”8"¢.Œì´KéþjeÆß½®ÇB<ÎåËßß:÷)ñ¹Nö	z…F½:â¾õºœ£’{)ÓJ‰×œyø¾ûûÍ~ ³`Š—4xœm’Is£0…ïü
UÍÑ•!±M%S/`l“ãx¹I 6‹Xÿúñdªæ”>uõû^_ÞkÆ ³TÍ¤±Â0¢	QLÕÔ1F:2MnÄªiB” $]HÃª(Ã8A(!	gªfð‡UªC-¡XW…0n!òŸWMÍD*‰U¨ºAqLãñØ²4‚™ILEÅ0&éÚ¬nÀ„T9+ÀŽ¤kÀs2|-¯¢ìgÂ~¨ãÇ#¬aF
T)®Ë2oÛìæ­×Qð\Õ»Ÿ¯iÞfýù ¾±¥—Tä)xú;ÎÔàÝ}›¹ØÑ6œ~Ý% A8±cÛÎØ¶×ÎÚÏîN(Cgad'üÖ£f>Øö0šÏm"OÜú£+‚!¬®ùqÐÉ¼I Ívÿ<emºP½¹<ž_QÑp&Å+cñájŸ…j¯OÌýé‘²>ªb‰Êå™Ü‘Àì=®µ–î&_ÏºCt6ÏÞf¯!¯/÷cgášÅG(k³]ï¶Üf´IÛcHºôö¤¹H`½ªëh¿=§oÖÈ•Sï>Å¬
Êó-á'ùŽ¿Ñ&KÏÚ£/ôñÙ:ìîÍ6†õdZhJ ü@ãè´ïÇ’Wª…Ðp£ÚŠþ®Ê°¾.G!óEyo·½?Ë]]Óš¹§b¶k£ám+w_)˜¡Ã! iä\lÑA¾ö±=æSL#XÆû©½ŠÝó1äÎ‰
q'—†¨â ‘ý"»Ÿcé_fÓ`ò}bÒŠ5)—®(@Ã®-ø‘oêä)dÚåEòÄóÛS^ÅE—°§¸®xžJÒ—òÄ#Uw¤J@IÎ´	ãyÅ(ýƒÈEû¨ø1³œxœËJ1D÷ùŠ»—òžÛƒˆÿ@Ä¥äq£‘LÒtÒhÿ½­¸SÐ]ÔSc!š¤A8iå£ã(Ñj­¬BL§ Å¤OÞ)Åf·P ƒr¸Aò*ÈIx…‹RymAœG‡ÉYæÖñÒ¸s5SG÷\iëøönûÚéé„Õ\XƒŠÃœ³Ð.—<ýµÂHk¾Qæ×\â:ÁS¤æÖGÊïv‘½STÃÍ¿R±Ïahµç>öoeûI¹R~!ŒÝç]&ZJ¿ÿre1u+›xœŽËJ1E÷ùŠÚË•¤“ô"‚¢¸QAÄuU3žN“N£þ½íc)èêÞÅ=œÛ*8%“ìÓ‹Aa4²·;‡’zcúfŽN‰ÉW d“ÖÉ'&e÷ì:¬4)tV!zâöZø¥K…k?fàÅFªpž^¿Êå¼Ì´MtÒv(­qhá%¢ˆåtÊ­ÑÿÐÕ«¬ùAEXòöðX‰óÄ2r>,Õ·\F(ÓgÌB<ÏíH0}¯®îoîn×¯~~…¶B<åÕ6…yÞ÷]µnJœ1xœm‘Ko›@F÷üŠ‘º´R3ÀÀ ¥UÁ<‚1ÆØ¸~ìf† áaó°I~}TÝõ®îwu>éJgè8†\Ó	ÕT)bÈP†Ø4djRJ!Ë0ePTºŽ7‰Î˜f@=ƒRœ!¹ Ø T7‘’é¦@Š©õO3Î\hDÇ\PMEU…JL.C†ãF&ˆÈ8mÒ”¼’7¼ÏÙýkùÕ=ÿžñŸ êš¬CEÁ
˜ÉP–%ÖÖu9Ø/‡—‘‚ç¦íø¥zÿ•—C1Òïà?µü’÷ež>Çvý`6þìm¥û­ûu—€î½ÍlË²–•ØÉ²xg¾¾ØÚ¡Q¼jñMí‚»eáÄ
,o¾)MÛ
\Ç~ñù°+iÈ$ƒ†Ò×;=ßÓŽë»ùMUL¥%70+ðäµ[ß	/j»0­—Å;•òÝ°(/o­O7`iëõ¢×¶I¾H—ð¥ó’«®…ƒ}¬OÁ¤º=WT7'æmåá¤mÛp:*¹X¡ñ´›¯ÃÇÁÃ¬Åü±4ÎjÌO¬WÐ2§ØØ¬¡Ûàh>«~—¦q|Ö´`Yk‰²?ž…¡¿D‘Ž4ìä$ÑQ¹zõªž‹ÅÝXÎ:·‘_3³)–Cü¾ù(cï¸7ë˜°$#×ë»Q:»æ·.·Û†u¹lWãtÉC¼Ò<D?ªý½öVè–vƒIy"Ÿçê{o³ª‰NQ¶ï–÷ÚÍŽAôC?¦ýÙ’þ:s×ÎÿIïr.cUŽ_GÞàTeˆ®­¯Ê§žwÒóš÷mó$Êi¼ôŸÅGÓ¦¾õè–yxœ•UÙ²¢H}ç+*úi"ì{‘íÆÜEPôa:XŠE‚¢p‹ùø)oï==31õT‘•uÎÉÌS@0„ §ð°'ùAO€| †¢Ü^Qe.Pƒ àÃH	B¾LåcX A	ö ¡¬B.ìòP"(+²Ø^!ïK‚"«*ã·$EyÜ0½ø˜ÜÁï°ù¼U…~RøYþ¢âà¥'p=Eê‚'Nä8†F‹Œø¿î‹œ ~¾ŸTI“%àé±4cl.Àr¼®9^Ö›•ñg 2gjiƒ6LÜ(3Œ½a¬µù0Z–îØ2{Ç£R–·7KÝÅdd@s7oïûn*ì½)Ç x<ÝqDö»¼™‹sà¬áJ·›]|&ž‰ùªau–…Bôl·W«¼c\ÊÝöæÆ×ÆórÜ9C¾O8nD'^·­ÃÁ–Ðum»îPO©ÓílEgc…¹Lœ–ÓdgÄñ©êºŠ¬uzÐ™±Ð®Ó±êÝ-³¶p÷ÄªG3ìNÏ‹í~©‹'¤ñ!vÆM‹ç£É©Ím\(GmÆ€Új²º^Ì¥4­<{agö©ÛŽíâ¦&œÙÞpfåÁÂ/Ä½wŸëpe9å	”ÇÑÐ®à¼œ#iÆ§æêâMíq4K/*kM>$Cª~\ê¹¸¬×K~ßÎ¢®XÂgb1`å3`tÜÅÇŽc®³VõK)Es^ðïyy¯‚YhMM˜*Ãón#[vz	ºÚ•ÊUZ/Æ\a%.…×ó|½œ‡ÛT43k‹£f•Æ;®;¾UõubXå}Õž„é(q‰+¯In6$YºÓážèA+¡z¼Ü\I>Sbû+Ñ“­%ù’2]MÐ©‰µ¨5òZÇm§ÌzåZç“›óêÆ4dH¹x5¯ÒÊœb«ö8²¥ÝØ4³…ÒWT¯{úZ| ¤ëoi×1£ œÜ.¯¸E£1ÀÕ¶ƒ+'Dx>_ÖKsé$‹‡–èšê²aèAslk£»Ö¬¡Yò±(ß­îÓ*Å½À€…0ÑÈ¹Ãàm|«EíË·ù¦¾E/¿¹v­#Ç‡^dqÛk¶¼šÛµ±[¶äÖ¨Êg@;Áj‡Û›u‚Ón×K^_ðZÛ‹ùôªŒ…þ«7Å°Aåˆ³+ÈÊaCš6hHFZ’¡²¡q¢2Î’Ãˆfæ°a˜u
AØ6`îŸà#
pK@qŒpASIš5?`½0L¿¿¬ú}ðôl3†™ <Cü¼	QöŸ×ènÖ YFQRªoÚ˜úçQÄ¦Sà7_Åge|ÐFðüV ˆÁÐ(zV6ÄÏóEÓy}úlÛ`’}¤³o…=G}VæžÊs?Ñ%¢°%%|þTõ;ÚÊ•:üò’Rü÷ ¦<ª-Gm”ßÀ%#)åbIQ±>…yÆþŒÆFØ[òôÐüK¶ÇÁsV¾ð/¼ú Æ¿€¼ƒ;Ää°LH
JôcU!L`Ä Àƒ?ÁßËìotc»ÚÌW7i{ÿµ>ðëŸJzäsÐfyôÂKTçW™ÔHq[†‘~sÔÇÇ,šHþüùBÀ¸t¾ð‹E•ó]y_lHÐ	–Ÿ=HøýØéœ«ÜaAÿˆÍ{à—“AAö@Ô9õMI]L(ehƒüášD{ô)Ãã‰0oÖ¤m*éá3ó$ôu§œUxœ”G³«F…÷üŠYÚ¥ûžÈÁåë2"!¡€ÂÆ5ÀŒˆ"I¿ÞÜçW^yå^uêÓ_oúB@DˆX†ZI"¡”…(¦%‘…sòrª(RJµ°Cõ h(&	/1bÊÈL,§‚À e	Æ¢"°©¨`U8ÈQpò¦FIÀ>É'Øoð;ê¶
÷gVAR~OšêÀˆ<ÍÑ¼$ˆà-Ð45«ôýY›õ$ß¾jeXN ¶Öì+PÇñC§ Hèz+U]i™J›Ä0.†qX­µ4¨<=ÜHËwgÖ’½<åbª•mëéd[ÑûÂæÜåìÒ@·âZép9•½_8T=m§oú~g§cj¸×—ŠÇ:\oš«\ZGœí3—å8$ï~Ê( qVÚoý·ÈïÓÞâº¬6Këìô­Êwn‘BüXdÖTîe#s‡Çîy“„À£@m¾L"h¡T^÷²¢¬®	þëðò7!ê’<±g:eÿŒð“­.h×¨Vë²{u]Àšß8‡¹®{C—™8õO¦Ë½1Ç¦¬Ywa®Æ—%«‡Öjœ¨n½›Í'G¥‡­zÜ³i½µÞÜÃî)‡ªÏ±’Ø3K>J<¶vÓ§a¯¥Ã*×“EEÑuÖ¸Î¦»Ë6Ïûï}º9ªF@¾z«dylàìbc÷ÃNaš×qXDnD‹Ñ=Â’]øCnqäœV»“tÎvÉoîÑÑóœøæÝ`iÚçøP›uV9If9}EÌ­·ÙžÜÛÃ'¾»±Ï2\[p{Ì¶ô6e)À˜Éx8ûNœO-Ö!pÎ<'‡¬©k|uÜÖçBw™Ó¡eT­Çosý˜ŸýLögw¤ æŠ|ä;œoFá¾Õ`¹œl¡'þt#g¸`e‘5±ªš•×ºK×„ôë™9G½¨7NCÛšÛ/¤Ô¸û5«ÃÑ’Ù¥z—Ve§4!“úyïµYH·‹6Ò>YîB³nE.(û@Ú!
ll}¨ã‘&$æ,!	C¥FvžDxq¼"³uŽ«qË,$^4ƒUx¸_iÔ¡H÷‹<@Å­–)°Œ¯˜+ü¼OÙ4vúü¤Àgx6têŸ¯2ý¿~ŠªPßÔ¿Lž€ÔIÓu( ì²±úJ–%Ãþ¯Áu¿üJQÎ šº|˜$¨z A?t¤Î>@<ÎæzöwðüSïÁ{ÐÂ¾GéwŠÒGôµóy†Î©QÃª-ÑdÖS4ÌqÑü{ËŒéè›
d¶R¸„sàÔ()r2Sš®˜Çê×_3Çn&ô@Ý¨Æya’7Å<ü…~XP×5Ý—2ß©¿ŒÚº54xœmQÉn£@½ó-ÍÑš@³3JFÁf1ö¼Å¾D],1›iÀË×“Ñä”:½ª·H¥×µ (Ñ¢HÔˆŠ%Q#ˆ–ŒG”P]Æ
Q@‘eÊ5¤…ªC Õ]Ô%°¢j‰jÂS¢«²ˆ5$¢'±ð_oŠ!Rëzª,Èò}3"5N(BˆL@îvŽô]V·È"UÚ‘´‚=Òó'xf=ƒ
¿¾‡ˆŠ*©,\\—eÞuw±›wÓ>BUÝBS\ŸÓ¼Ëúèá.øÆ–6)ËSôócÆ¶ëùhé.ÑÊs}s½	íÏ;‡8tfãxlšã‰iã`–]¿™„ã¹–½Ë‹Aj½³iJ¢î™N;qGön²¥<ž’	ç/9‡ZÓ\˜û…¿;ød›sb*3¼”ˆmã‰hðÚzí]q ë¨i3"°„ÔaÆÒ…nŸJÞºqgNò»Ø:nÖ‚•£‘¥:j é©ÊØ°½¦ZeÙÇ©6Ûé²v#XnSóÃ"Z+ÅrÆ¡|ßçfþº¼Ón4%Qê¶Ã{Qìh¶»yÐp¬‰PTüE%1xŒÙ«(æõÅ
p8´÷æJ–hïÅ,hWÑ:÷3§7f}ª3ûÐÙ°1!®S[™y©V.„WÿçòÁŽ{çt½9tœNóƒðTÓ¨ÔÃv my¨ôa•Vf(wùë»äU³Ú=Ÿ7ýt[ì2cóºóýÇòNâÐ“ß›û×™í[ß7Æ½@›jú¢@-œz`úE¬ ¤­KT„(ñuÕ[EJ`Íýß7¸ÄEÏò8®Jø…>xôÅ£/EWD!!}Ñý`uœxœÁNÃ0†ïy
ßQ«¶kÚuBÄž œÄÞ"¥I•¤ ½=é6	q‚›eÿ¿ýýÎ‘xTªqhYò HaÛ³¤‰[eÐìûV¢$Ù÷F,ÉgèÚ¦šÉbE’;=ípP¸gÍûŽ&4z‡J«IàšÏ!Â½%xòáÑ|]‹ç´&ª=A;ì&94£á¡)»…óls¦ÿXû¦“rú»UøÏ™ð|
ÎÌUÅ!j‚°d< 7°še›˜ ×™2n}!ÞˆQçÂ›Ïc©ÎEì¬?ßÛ¿wÕâÃi]–óˆoGÒ^›òö=[œƒ-cQ¥Z¼¸`]®¬›ýJ…7V­C4À]j!Þm	oªÀ\©Ëá¯ßˆoó½ŸG–xœ½nÃ0„w=÷Â†ü'ÛAP¤@÷2S"°%Ã’Óæí«¤;tãñL3T-Q/j¸ÖF£•­Ñ¦nˆ¨­hèµ¶RVÈ$VÜØ'`Ë4È¡š«NõVRæ™pPm]õ=78X#îi
|Ìhál¦…·ÈpY–ñWž\ð!–&,¯P©¦UM?v#¼ÈZJ‘ÝÅ¥Ä¼£w<Ã¯>«#}>‡SÜ#—Ä´•u×ªÍh•Qáo ¬ìÁãÂqEÃÀ_fÞ£»1è;[Üç$ÄÛ<aBX9{wþ
v÷&åjñ'!MüWJ	—¦ç¶(lØ‹°>°l¹=èÇ©cd*…8»\›Š`m¡ï‡ÿ>F|M‹•7xœ•’YkÛ@…ßòúÒÖØÖhWHJ$Ë‘dy“­xÉÛHš‘äh³VË¿¾nÒR
íC/\¸øÎ©KB `Â*øD–D‘áñ”²"ò9Ï0ËÈ‚ÄR

\’¬†T™0œ,³>Ç±”ó8Ê3¾'	D0nVˆÇ<¸©£¼„§8‹š›‹àƒ,É¼$Hòà·øÔT¤¬FY^’"éGa\G7òóôD"Ï ™a9™aÀMMãº&%4âÚl<øð{ú'†nXX„UÂáÑ¦†µ„kc·–±TÝ—Íô]À®Ò|MUµ‰ª:š3‹º>_O6š-E'~Õr¥Õ©*©UK5˜Ãni.d¹î8o¤lzºn
`¾»jîárØLVv?ÓË‹§·K9OVExØ+›•¡“ÞqC½>ûDÑípñ\Hèƒþà8´bg'ö–ªêÎÔWã¹$S\u®aæsó0×xÔ6³š<yÕ¯,žÖs¼’‹ÀmÍé"âö–Æf…'òÖÕí_Ì ëfçqîe¯)ãq~ØŸh€’¢»Ôj?Hu§0[d£ãþ ‹W)v„Ó¹ ¥»|ÙëîÎ‰Å¨ál!1¥ÝqºZ¾¶šÿf$bUµ×y¨&!h ÜâõÑ{ÞfÜRwÇ¿ŽzYW{b‰™¼ì+GðÚÕJògo±>™žíCgcEIlkÉ?ø(º,™M—úß)I½_É0kSrK’æ-EÞÝ*’äU‹2¯‰_Çyi™§°JqY“<â €Ÿ?!Va¿ ðõÑ;p¶q˜‘`˜S:ôúû?zþqn›…O¿ž|oçø.ã•3xœm’Is£0…ïü
UÍÑ•	±h*™
xÁxÃx77b3[ œ_?LRsK_úÕë¯/ýº­¾J°J(arH™ïC…Ø„dHI¡Š|¡òjV´` ‘èq°|Q¤H“%‚%ÕC¾H=Åg„þç1ÕTE%DÂ*E‚1CÕ=Y&C|L‰OUÁãm\Ö`ê	ËÀÅ‹
Vƒ— ûooØsÀþ ¨`QÔ†0¡(
~™çIÛ°™´NÁKQÖ¬ÊoQÒÆœ>ÀkQ5Ižþ•13­-Ø™;p°Ì­~<íg_¾ Ð5†oèº1ÑuÇp–qç!6Ù+5N±ý!ÕV§ë—ÏÎÒ—ˆ‡þ,U'è¶ÕW¹[E K-:ÞH‹Pã?äZØÅè:=›ïìœõÍì97æ›>Þè‘Ÿ69¼|,Vßäa¦SŒT	—rÓn%YDpáX3)‡ÝJSpÑÌOæâíLÔƒ”Áþt’ßõÑjíQ}BöûÙôQà(²ty¦{º¢GŸÞ­ÉsÍvùu¸‰Ÿ‹0Íªe(»8¸ea…Ý¢X©yÇë&G+`˜Olù¾<XšQ©|>¦º–ü.`cËîiaYU3²@êöêD$h/-<OTRÐ¾Žd¤Z³lÍmn}ÔùÇR9":¿KâÔršÅª,êÞæÑ9¯•š÷wÛ-‚Î1¢s×½
àµkzMøÎl¶þœ˜°auÄ@Å³Ôì³¦¿ "„u™ƒ$òºqÎš²x
™×òš=•U›”… PždÁopj˜À÷„ÃcÚ+‡õ_¥RûF˜xœ;kÄ0„{ýŠíR„3’ü:ÇqE’*Â„Ôz¬d-Kæp~}Ä‘4ié†a¿Ù™¼"‚îEÓ%°µ
µfGni»žSó–©"ë¹&‹\1d(×œjA‹¥ûFPªø±í«ES÷’kªd§Q("·<Æždð8Á‡tW8›Û]\Ó–°2xÖ5”²®ððH¥DÇyö9ã?P¢6?™¼'„”y[â’}`K•·Ã0¼2øy™¼Ý!øãÂ× vØ’fL1<¤_9U7ç0e4µŸàyò0èñ&×ü	gLßRÔW7K?UeÍ¥ü+ÅÍ!Z{gþØE¾ ’aƒf“3xœmRÉŽ£0¼ó–æˆ21˜Uê5„-I‡ì7°Í’C“íë'Ó#æÐïôôªêªJpJešFÒTÓTh¤&¶]QU±‚lR›rÊ@™…rBuhÙ&Í	"ÔÔU˜+Fþ’¨ÎmÚŠiÿãc5³	´µ…*jªåAŠt¤cˆõÜ Í ‚RÚ‰²áÀKYEk°IF9x#·¯åãÒ]èOBÅ@¶i „L CB	7§S%Ä‹V"ê2ðÆNÛúñQT¢ì²Ÿ/Â7²¢-.UzÆõÃaæá$Ã0v–«…ÿu—€n»ŽãçÓý•×©:,Ü±Y´ÙñáÍqÖÇãÐ	Çs¦<ŸGyêï‹N¿§>i%€ý±Œãë&>,RcØŒóP÷ã ØÞ–yÆ;wMFYKúÊ¼1¹8|,r1	3¸ÙŠ’†ô*?ïáS·¦wHyQÔ|ržk[Y[ìv¼ÁˆD¤^ñeñ¿–»ÇÀL6¯<*X3ƒ8ÃYrÈg~œ×²3w«m9ú4JdyÆ>Ð³à®%ñUWn§lÐ®çEÿ¬––ÀÊ³qwÛÕþ2ÎÂºk¦<á4Þ’d2Žºù„´wân'am'NŽ`ÓY 7ÏÎÒÞ¾|Xï¹ÞìÆþú¼NžòÑó&ñ:B»naÚ™[{Ón7žŒ.6•‘?;FàÊû÷+‰ð»ÞoÕt%ýÍÌ½ï“¦”´]]NÏ½ðCQ-ä¼9ªHoý‚²»žh7ŒQ,z¤Á’ÒWÓRAÁÿxAÝéÕäTTûÝDþ±˜xœ±n!D{¾bå*Qd8ŒE)üQR¤^`Ï‡â‹ãlùïƒ]$e¤t+Í¼™Zˆ`kµR¤'TJr:´×Æou/¤äÜ‹Î*®Ù	¥
VKtÒIm;%š¦L³ôA	Gn0Ö¢·>øŽáRÇ\`)Ò>ñ¨Às¸Ü×y™iè„î¬Ñ=<qÁ9óyšb­ô”èJôóÞiÊg‚%%ò4ÏX®à
ú/ª3cƒ²ÈHEð°z+±í
tŽž áDø|CëêšXrX<¨#ýÆ\ÆèG¸PiÐOILwS.‡˜ðØRB#°ýû’O7mÚ0öÛ°ÎÃ°v×Ý_;Ù7'‡xœËjÃ0E÷úŠ!«–6A¶bK
¥tÑ(”ÒõXs•b)8rBÿ¾êc_èn.œ™{¦Ì 9¬ƒîl´Œvp÷¦ï±õŒktÃ:Xã uâ©œ‰‚N;oÅl×êØôÑ×!z§}c½â¥òLÏœFé÷	3=Èõ{x:/glÔôÆÛÞhgèN7Z«§i,ÿXU’ÃyGo'áJ—	ëSB(Ji–­çjÛnA7«—y¬Ï.c¨$O œè^Ý‹@(áJùTÆœîÕòs´@{T„jß2¡ð²Qêu¬‚²Î1®‡Ý_þê6qz'˜2xœm’Is£H„ïüŠŠ˜£Â-Š¢(ˆpO4’B Y›oEñ
°Å"VY¿¾Õž˜[çéÅË/O™m€€a-Æ*ºÐc	""*D€.…QL5b
à”Š×P´ˆãX³Töd§TË¢’J‹Ä1PKbþŒJS³èÿ|„™$5¤®R5’&Õ…©[Œ˜aK]WiQx×¦ef¼ÈàŠN<) F¯ñð}üjº~Äð/Â±˜¡QÃD#«ª"Ê<ÏÚö	»Y»è"ôZ”5T×¯_IÖ¦]ôã	ü%–TI“%èå&ŽëmQàhï¹[ûí°s¾ÿ
RÐÐLÄÄ¶'SÛ'á2í77oº›¬Xú¡û=©½Á¶Yêx¶ËVë­»ZMìƒ4W::å9Ì	‘¯{5 ÆºzpªÑ}Ë}'åes°™÷Äýò÷|Z^>ÇëOÙ¡:gCß?rKÃ…3~ôkã±ýù/£“³¿„lÇÇÔèÞ6yu¾¹÷ðÜDþ¤k›q3Ã§\6á;@¨ È;TÝŒÍ1	µ%Žo£Ã×f:ÇŒ5Ózäžnmu¿Û3k½Wq­«ã¤·ø˜°·U¹ŽJIw37{±šî—^ó˜²LNãµýn›{õeÌËþ}¿sÌ~üÅ±ôµ)µo"8Ÿd-ÂÅåÁ(	Ü°?ljm’¹£.Ì(7Y#…9Œ39”êÂ"©¸íV³Á=Zó´ºw™Ô.?ôó½æ#å¿Îœíìï)¨@Uw½¢n4-úk&C².s”}BÂóì¥}/¢,
h%¨³çXcè3¨à9 ²@ß¦h«FùA”xœŽÁJ1DïùŠfO+²Kf&éLdÁ“7A ÓéÌ†5‰YÁ¿wÐ»ˆ·¢ª¨z}‰”„ÓlgçBò8z™D²že°ÁÊl½z§Uj	­	Zæ!l±vˆŽ#^#»Á9ŸÌ8± ¢k?·^ÛåZÛšáé"•§ü#Žýa)”ßŽÜÊ=8y‡Úà·Úk­6·äÞåÿêyÍp”Ì•Š@«À­Vá®Ôã÷hŠÆS„ýî·úîF½ä¥J<´”áóîTê<qèž3xœm‘Ms¢@„ïüŠ©Ú£åÊÃ UÉVð#(ŠÉæ60#¢0Â üõk²•œÒ§·»ž÷ÒÝHÎÓ‘a`
e–ªb©qUkü@P›„$ˆ*%•\4Àb”è8V¹	cB¸jb$,A–J†uÀHK8ùâ1¶,Š>pŠz8$	4!¶tUcAˆpÅ&¢–BÛæx‘À¥"ã9ˆh*¸¬û<žê¶æ¿ÿ Ñ,C·QÁ@…ªª$—¢ÈšæO³fÖÆàA\$/óþ)Íšcÿ¾?¼¥eZg)~hìMçXO×`;Ÿöîeã}æ
P@W“±mÛÇáóñº0kg3öã	¯®šœw¶½ÝvsÛÆXÆ¹+Ã(‰e›Jg§ ½\¹k.|}WÒ_GÞ,HLé¶ÖÜD›šé·ytZæ¥ƒ¥×Ãâ-‰XN–~ßbáÐ×$TÀ%ÛŽâËhä‡oï¤sÝÝª,nG=qônSîzÁŠýyº¼Þ–Ú…ÉÙs›çõ2
ÄÍ«x[ín…yVgÈ=½¶ûÄ}^¯¯ùZZÖÒ‰ñv‘Oá«V,öç"à“4ÅK‰|ªÆýUßt¦­€Qzøûãýºr‡lN•VÔ©ÞS7N0¼E¨|…·íšf3'ï^bO¶n]iN¯ ^&uçâM8Hg·"Ê<á÷þ²Àoß<#…n!ÇýªóíÃ¾öÔOÏ/“Ñ»¨pø¨€Çjåÿf^àþ¼˜²ä2å ¼· $¯Z^7àD&y)@–ÒnD&Ì‡o(£RÁ†¢þöŠb3>ð;Dýíÿäîš!xœPKKÃ@¾ï¯<µHË&i6MQ|€‡AÐóìÎÄ,$»e3õñïM£xRô6Ì7ßk$1•yU­0Ë‘2®j­We®­ÍtfnLníÚ—£Úcâ à´6ÍºÔÆ¡+jS’«iE%×knˆ*$.tf¤	®1xîà	Ÿ'8£×i¸/‰Ï!3E]•ei8Õ™ÖÊÅ¾÷"ü_j]šü‹ªÂKÏ‹}òA6pIW1HŠ]7Ò·,H(vØó°GÇßk¥îc’	ä79•–¡óö(	cw&Å~Ú~&»Æ•.,ÌNŽV»Çí¨v§nåxØüh>ÓoÕÍü—z;_žÌÕ·×ÔÈuúbç¥õlÂàÚ¥RO­ïP`Lƒc†#¡÷ÃàÃ37>xñ1ãåƒ_G‹Ø4û¾ùë³ê·¯#•xœAO!…ïüŠ¹y0m`·ÀÒãÁ£'5ñØ0´Ä.4ÀÖøï¥M=ëmæÍ÷^ò¦"°rr“E.J=†£C¤	‘„5›`©«;a¡ÔÀxTrc9MÂ*E\+¥wQN­MØ£#Åpi‡\àS¤#|à>QÿužêRiíé„–ã4¸ç‚sæò<ÇÖè¿V)Åp³²tžiu*1µ-¼RÍ¥ÁEÚÂ¶ª»è+,÷ÄØû ß“c…”ÌØÜ!¦=´~ñbŠ9Ý®j=‘[Ãµ»ÚñOb±Ë©ÆÚ.¿Áäo|‡g@çúö›xÆãBkÆÞboáW9„•ýÞþU’ý “nŠ–4xœmRÉr£0¼óªšc&AÂ€ÐT2ˆ‰ŒÁØØ&7	Äâ`À,&øë‡$5·¼SW/—î×ÖœƒH¥XÒ CDÅ”0&AÉ„p‚‰5I‘àHrF„ŠÖ¼h‡Z(É¡†JX™¨aÊ’¡9&añÿDãX%
Œ1d”©(Ž"’,©˜qUC”AE ]›–5˜Ò"ã98Ð¤à5xŒú/ðÜtˆø_€Ô	Á
"PwA(„åùœµíhžeí¼cà±(k^åÃs’µiÇFÃ±¤Jš,÷Ÿg˜³Å¸3l³µ¾ó=ó‹€ úÆ]7^t}cl–éÕš&/žaáô$;×I½èu»þB7×;×e÷fÙ…SÄÝD½)Ç…#€N»aèäÝÝ!ô”Â8]¤Ž4Ö	íTµ¬< blˆã¹[qsÄ­äÑ®0úa/€Y Iü"^NS±MýÓkÅ‹Cu–†|–v—,;Þ9lÃ¦¾ir÷¶åsQÉ"lC+(ïô·Òž¿ù«HC.ênÚÚ‹eË'®Ìd.:nzóàš—‡Ž‘Ð,MQ}·Þ£™ æ½W§°æ¯ûýúÅ´WúfÙðûÑÄ²ìECY´Ÿ¼÷ÓA<ØˆzKw.++7¸ìBPÏßµÖ»iNH©½V—ªåÒbæz@žk[ó²uÝÔ®oö]zÕaóEn{0Ÿð”¾&|of®§?/&Ø|lT]žƒš_:Þ´à’4ÄuyYB{±¯i±ûrì±iòû[ž1A`]–GÀ·âñQßnW€øôüoyØ‚§]Â[–ÇÍ?SïöœxœÏNÃ0Æïy
ßv@ëÒ6k›	!$x8;ÓXJ›‘¦Œ½=íÄÎ ù`Ù¿ïóŸœˆÀ6ØV4¥nZÔÆTRJ]kÒ¥Ñ®«Ž•\‹d´8c¢)ƒRÒMgz$#ËÞI£ªº­¥^ÉÎ’jÊcíTm.ÙÇ¯81øÀa¢örKžçe¦ÂÒ”M­­jK²”Rôq9gúŸ´QÕ¿Raö/§à“åi —â»DŸ'²;Èvø…ÐÚ	ñî	<…3dúÎÀ3 µd7¬“ã¡ðpñÜû[gyžáæ^À*.à <Yî1Óì ¯¦MÂt=ø¥tp„yIt³¹‡)æçm°¸ïXñÆë±vÛ›ëé¯_ˆú”ç*xœ‘Akä0…ïþ:Î°LˆO2)ËÒC/{^–‹lË‰ibÛ™2ÿ~•¡K{(ì‚è½÷!•D²•j¸Ô]C–œ”Êµ]Oªsn0\ÚõÖªö,k±b¢P A£‡Þ*­¤5®o.²SÎ^H©’êb\«šneŠ	ž0xšáÇ@	¾Û·{ó˜·L•¥ »v8÷êÜ4ð­–u-L\_
ýŸ´S×»TèÍÏö~g¶YýL©r>Ø—Ùë„éŽ‰¸Ÿ¶‘Ê¬]âó>Cˆ,2…,\=ò°R°ÌípM9ÊDðî)y¬)^½¥ëëx218?²&p&‚Yð•`¢ye¦P|MX"°lKq+àÝç¨¯ègÔ3UB<Øx'þË4a~™-ã8Âr·q_ßâpn¦ø 3«Ùü-n³…mµXöü‹~Ù¸RÊûâ~¿…2w%Šº:×U]ÁÏgBäCq–%ðô¡|?Â?ØG†ÿåù›ö;éÛÃ¿ž-þ åPèP‘xœAKÄ0…ïùsó »$i›6‹ˆ‚Go
ž'ÉÄ¦MIR–õ×Š{V˜Ãðxï›75ºÉYÅõd%wã(}ì„£—Ô!öJLz#[1ÓRÁJ-„$Õ+Ãåè;^kí{ä4h¡©­µ\"Ã­žS†\EøÀÏ…2<¸Ë¾<•­ÐÑÑ#ÕéaîážÎ™Mój¥ÿEU/ÛüF™ÙBt'xv.Wg lëšrßª|Ç`{?ÌTÒr³45c¾Þ¬0–´›ðJõ®	*`1´_,­54DMPo¿{dì-´†î¼?˜ëé¯Ø[^|/“#xœ1kÃ0…wýŠÛ:”ÇV;”ÒB—B!C
OÒ©•%#É1þ÷•CB—BNº÷>=^ŽD€;â[’Øe4	Ñíª-çÒ˜]]£ä]e„äšÉg¨TÝ¶©š¶¼å›†+ÁM¹7EÄkj‘´á¤á˜O!ÂzK>ðÓS„=]†§4&Zkz„hºí®­€ûjSUL…¾·9Óÿ¬‚×å\­LŽÖé=<kSÄAKHã0„˜Á”(‡üñøÆØû‰ §üMå¬Œg8aúÍ±†WŸcÐ£*}A	(C¶°¨Ìè\y]$¬\ð%c„	}N7HiZ“†ÀŸ{Z)g!DæC^ÃÁ»ùf¼rm	ByQßå8ÒÝegÐ9‰ê&[~”TºòÉjŠ…;È/¢H‹×HsÊÔÃ™bZ€Áü9£u(­;ÚÒ©^cVrÞÿU9û¬’¼0“xœ•ËjÄ0E÷þ
íË;?†¡L¡ËîfÑµ#Ë·‰b§¡_·”îHºÄ)`kt':D”’P	m´sƒ•†h‡Né”QžØj7Šˆkl{Ôb°Ø*é…é$zìµè¹DÓ{CB)®˜ÝË=mp+ôAn´Ç	ï”fx©_/×ÍLtÍvÉ5k0- dgdß\Ãœ³z]B)´Á³fxµS¬ÛÅ?Ã5ï™Gh­_”{˜Ýžœƒ¼«Åw;QL±T“%A3…¦˜6bì xÛsHä¾³Å†XjCslvæ
ûªäh¥è(b ÌØ­òäNÉûÓøyþŸ/û¥¨|M’5xœm’Y›J…ßù-åÑÊ¸ÙÜ%W1ÆŽÇ,x{±ºÀxØmüëC–û–z:útªTÒ9¼@,Á	‰¬ãË²¨É3•¨@Ñg€1U)ÅD£DhhG¦Tf„ÄRªÐ)Æ‰®cF1! Écþ÷‹âx?¡Áª¤aQÓgÚŒUVñ0ÌFA`º@{~®[4§UÚÑ¬‚}e÷ßâ{×wðÂà?$Îd}üP#:š`c!©Ë2ç|4Û9_ö1úZÕ-4Åð=Ëù¹_FÃ?Ö²&ëò}þ5¦e¯äÙ
V¶c„Ñ»õ›H@÷ÎLLÃ0_Ã7ýç>],_ßÍ59_÷&·«»a’²2,û°†-$u*ú¬Â>Ý½–Ï½€ä·{fdPïiëi˜8ïÚ&[´­2ñ¬µŠáó‰"jL‹[éœG~³ß„-xÐwr{ê‡L"óá&^›ïAãl—é&»÷.¿œÝèqs|/Ù9"¦¸~+w×4Žì¡úðÒÖ·Äú¼Ç^÷ÁwÛËº1ßú¤^Óò­°?‚ÉvFÕöhÛínèÍ\ñåq^ºNt©=¦Çý¼YOñÕ:ì't}ÖÆ˜‹ÃqæO¼êéÆËgÆ‰žI#1<•…÷ÔLã[Ñ#<”êÞÕ‡X@¾¹'÷\S»`ÂÌ£=•[%’!}\¸¥÷®Ü;Ç®4’§«|X7}Î•]ïÓb0ÃÃ7}KQþdf9ó'&l Í 5}Q ®=t}%BPÚÖ%Ê3zŸRÆNðSQg§†fpJÇÎ±î$½`A¨n%|Acèu¬­
€£ƒŠå£¯E¿›¦ÝHÃ¡Äkô÷ØO\z	üxœÁjÃ0DïúŠ=&”„µe[v(¥%½ä”ƒ=–µ´r±$l¹%_µÍ­…ö6¼ÇLœ˜ÁhÔÔ)Ù E)³ZV¥*‘¹h*F¤’(ËtMJšØEP¬H¥ºÜÖŠ›Ù"ê¦AC¨ç’;”,h‰g?Á3¹/ðB½ã	îÍûWxœ—™·† «dRX×p‡¢Ð~‡ùh[IyC…{yOÆÀ>YÈh9ÂÁ°3ƒ’ä³:Z;§ötÑCÏñõâ{!~Ãâ7¶Ú·‡õxu<­a^BðSL&q3ÍÏm`ù·B´CZo6ÞÚMwÝýuN| uÎ‚ˆ›0xœm’Io£@…ïüŠ–æˆ2ÐlR2Jc‹—Øx÷šf3›¡ÁË¯'£¹¥.UªúÞ»¼b¥@åPQ•D5(“HCP¢:…I('¡F(Ib‰²N¹6ìhÍ€‚ˆ	ªñ%ŒuU5¢²ž@JbJšjè’d(ÿy%
‚(DŠ#H$ÑHˆA9$ˆˆ¢!õçÑàÂeM¬°Îi	öaZÓ¼Æ×ïá½zú;¦ ÔdCÕ$¤€¡(r¤©ªœ±'ìäÌ"ðZ7mËû{š³lˆ~?di›öy
^¾Ê´o–Î¬=g7ÛÀþÞs€×Þ$&Ææã•¹òŸ†J0	Ì)Ê
ås”;ïŠ±¡¬<ìJÅØèËL»gåtP+!›ŒxhõîÎÈMæsxïñâ°Ô§=Úá1ðímON–ìÇe¸nFÁƒA$¯øøqa^ùðâb°íæ¼¯¯+¯@™ x.ÛÔxÝË`­¼Ú´Â”U‰vXÜœ@~MVÌªEêpÀšœ»¡Di´ß8š™·¾êÖÅÉ®¨3“ÎRe¤ñÎiÀ·Ê:ìý™>
Ÿ”NìáíÆí5Aí©ªvŠö§[ÓîÆVèXø¢1]l8Ã¸kÞž÷TùÌ,·iƒš»w¹2Ö|×Ó“º)£Ç|Of`Æo-¥µÜÛŽnNíç>¡|œMý°Úy»h!ów^«5¸Jß8ð–É’ËýËÌ^X?'ÆÍi—RÐe	:zhÏÀ/(é
Hº¦=y>ÜKI©ä7ÚsÜÇWû+åðœxœMnÃ …÷œbö­£1b¢ªê²ó	øK6X@Òöö%Q¤®ÛÍ,¾yóÞÓÔLV®ƒr8¢7ÎõãQkzGAƒsƒ„DnÛM¦XA#5*gP\h!Ð[4¤ù]‚ÜjN#2s­—”aªt£]ãì.”V8·Ô·âz+ÑG1[i»ƒKÛ;ôjÐR*1JxAÈÝ–ZéŸFRO#ou{^b=AX¾à3§8Ãšfˆf£WÈ”²o9Î”ö•6<¤ëâ;?E¿¸ìä &°f]æx§õÒ®›_yh›¼K!töûô·þì{$ƒ’xœ¥ŽKNÄ0D÷>EïÑ„ö/ŸB€]N`;ÝK‰=Š¹=–8b[¯T¯êAšC`HÊAãÀh©0k´RÞYç½cê‹»;(U`?ö~­iØ3ªÑK‰Ó¤ÌâM°#!=po„;ëš˜+=(ÁLgº…•òŸÍúV‚Ä±Ûˆ>ŠÛKc]Èû;È^OÖT^pB-Ýc­ôï!‘;]áFõpiÉ;ð™B9AYó¹-à	â˜h¯µ‰Ê³¼þV»búŽ¥
1Ç[«\2óÅ?¯{%~ Óvï2xœm’Io£@…ïüŠ–æˆ2îfk’QÀ+^ ã-Î­ŒÍÚlÆ¿~œŒæ–:•ê}õêðªáŒD#¢K*¥’!c…F4j,€†pˆ°b¨«BI8Ë€	”Ž""a¬jÔP" †ˆ’H&T–‘¦°ÐþóD&X‘È ŠÕ	TT=ïDZÀ’0ÐÔði)¶¹LHž°œHœ3^Ãþ»y¯ÛšýÙ€4ÙP5Iƒ:!‚PŠ,Kšæ	Ï“fÑRðšœ•éð'Í¥¥¿ŸÀkq×I^¾ÊšÎmxsìì¹cîþô{. ôµX¦iMskm—OCÔ}k…/WÅídn÷¦‰g±mšp¡s-ÈÖi~²}Ñ)‰¥ L8ë[ß7–S}ålŽ¿?*¬“Le_Û!ÉÙe4Å‘ÅÁ]¶éìáÃ©»þ¬¡Ca 2o»ÒSxœ6¹ßeÍÒ:ûûÊ§3U®¦v™_æ¢Q¹×³\Èä|ÇØqøîÇ!×ÙZÆð›@Ïà~¯zóGÁ†Ò»-“hé[K·°Çº5õÎ[ q¼­ìúÒ•îÖvât FµQwY% ÑÒµÕòÅ´ZÌ£WÙã7æ¬t»ã›Þ ½PùŒð84dçAÆÅzà†}X“øvø€çd®Š“jß]ð,Ríabé˜UÎáÈ×_Sšo˜&¦†×ÛN«eNxÛ·ÉÞ›¬ë xÀ[YèLø—ÙÔ™üœ˜°a<f lÓpVµ¬nÀ/$éˆx‘z-I[|ôü‘‚7/"gõËµ.rA˜%w°Ü¹ð¿5ðù¥·mÊ¶ùóæûŽ•*xœ•‘Aoœ0…ïþóÊ
X¸ªª¨‡zh#¥÷Ê6ãàljw»ùõµ©Ô[#÷¾yŒ) B£‡³À–‹V4È[=ZBô£±6Q‰Q"Ûd@GÐõæ¬úa4S=­Eß‹MÛLg£•æÙÌeÃ»ÉD³ð)H7y÷2m> |P»pÚváî:é“öëGhú³àu×pUÝ×5Ëêj‰ðí¾ãâ€°Ïö7|yøöf+Á³wÁ'Ú1vðb}ŠËÖ´ÝÜÝ^ýDM®>-(ë€f<‚à{v±Ú™ÕÎ´¦8r½ky¬¥(ÍÒAS·Ý16à¯„‘°µL¨`õœÜS–C„X–­nà.+Vz±§ýOh¶È¿Ö­{ü·3\-ÍÇ½Ìü±ØH'ø^rùÊKC–±›Œ%	2øä&åÞ6tS3¿túW^Ý1“^bËRšÛ¼§¤)§P£½¼~.„}=1w°§ÊS©Ûûÿ?Pö¹mç‰—xœŽ±jÃ0@w}Åí%æ,Û’Ji¡Ð¡³NwrD+ÈgBþ¾NÇ.…noxžVp˜0$á8…˜ÐÈä;Oè£ö.¦¶ëZ‹d®¡Ê¢htäÇ¡·–(¡©mqšlÏÔÇaÄØùäz6=•
ïaÉr†Ï0/Rá™o?ðºn«4,/ÐºnoÂ¶ˆ&–Ë%«Ê?RC[>óÞ˜aÝèâW˜eÎu-ÐÌYó¼”*Æ<=	è­ÀR´î¶0Ðvë‘HÔR³ü*c>v>””t?þµi¾¼}r¹™2xœm’_o¢@Åßù“ìcÓÊŸ‘M») ‚µ¨ VÊÛ0ÌÈ 2 ÕO¿înö­÷éææwNNrîÐS
²œÑ,—ÕLÕU Õ”óBåÌÈuÃÐLL±†¦ŠÔáž6€Ó2MY.#“Ó0Ì)eª’kŒdD§™©cE‡è?o093V™,kSxÇuŠe¬bby
UUÕM•NEÂãP´=ðqÓP"ÊJ*
ž‹»Ï«}Êé/ ÜAC×‘dE–%Ò|h<>øcž›¶§]}}=ð¡³§;ðìÐ?€Ç?c»Þb6ÞlÞÊŠw‘û÷.	\„MlË²Ë
íð­Ý7îDö%\Ÿµ~q±,œ‰…åÎee‚ÊÆVbÏª¼d'ŽÑí¶” æïæJƒ*3HN'¾cú+X_{<D‹£i^Üc8OÎ+?Ìt„ˆÓD
Þ=	 j½J³þaÑºiÑ›†ÌÚ¥—½V:Ó–EÕb¸TæÙ›ÄYÆb›§Èö›6e|Ú„	ÐÎ¹}x—Øg9Ißâ„—ët4gðÃøÚX‰Í
n§~½M­çñŒ‡s·Dr–õ|>#‰†m8ãU‹ìø}ix)N­3‰è6÷‡X’õœñF“ñ½ðsÒn#áÚÁ˜¯êµ{±Ü nâ%VöÑMÂhc’í6­ºà#o©øÙ2Þ>Ï•±ødÖ»óö:!È^—Öx]ð"—µ¦ô¯3w5û¾1) ý‚n¬kÐÓÓHÅ ~(*2 ëÛ#ðÀ±°Ë¶¯ys˜ÜñÈø’t_qÄw©)nÆN€¡·þ‚Óyûx‘xœŽ»NÄ0E{Åôh‘ãW’BûÔ3ž1kicG±£¾žÑCw›sÎí›'!Ö†Œ7>ŽfÖLÎÙÄ)°ÁÎ(hÇiP+nR:? Å0Kl(„dÑÏ4yÑX"XîýZ7¸`Érƒ7|/²ÁßÆKÛ›<²<Ãa™Ñ^kxÐƒÖ*ÖeÉ½Ë¿Ñqr¿¨ú*í—÷å¸Š=×ûÊØ°0Ü¯¹K[1
¤ü!M©×|ùTS:Ñçù¯ úß‡`Å—xœ¥Ž1OÃ0„wÿŠ·£FvÛI…eg‰ÍvžWNÅ/
í/cçaº0#nüîtw´ ‚D!¸’Vp«°¶m'TÍµ’£”¹Ô­é6›'‚FùÚ*ÝúžëÎ¹N©®E¿}íum'ff¥!-ðl(˜Oç¯Ï%†é÷ãTöœnàqë]åÒø e¹kø^sw¼ˆ:"ü_»Nù y41‚‹h¦uÎ@	®Ëf;‚Kë’ÿu}9NÂûËÛñ'jb8M¶@ÃÍÁ©ì²L—ˆc¯%ý.y¿³—Ã³oo¿€†’xœŽ»j1Dûý
u.aõZ]	)Ü¦N¹\éŽì…]ÙÈr’ÏÏÈ¤:s¦7@vYtáÑ;¯'+;ÅRu0¬¡);#Ò4Ü¹¡v-EØÉˆvI8IFìNOÉ±)(0öÏçÉ#‡"TÈíeÚ:€É§IS `“/Æüì×[Sg®VõÁ—Š¦NòõÞÏ^¯jÿµ‹ÖYuõ8ù¶mKïøÇtxG»@¥Æ5_ÕáŽu.Ë÷\?7Ìy]Ã³W´–xœOËjÃ0¼ë+–\‹dI¶BIi{ë¡´ôªÇ:Ø²‘å<þ¾rzê­°°3»3“""tZXÇ:M¥¬æ.oÇUKYSi†LYQ9Õ˜šL:bH ºš¡ŽrÁÅec•F[­¬æœÊ
E+7D/é{ŒpÄ _~'Ø]0\W´ï}X®¥7CiÇár¬âm£ê
*)%ù:ø”0Â‹{8êSÈlç.w°Ÿ—K‡wkËD”e+	çÛû-<9ó2McLpÀLñÏðÞ_ßY›?¯àymù«(	ùô9Ðc×æ¶ýGòÂ­iéž0xœuRMoÛ0½ëW=5ØHþ¶PÒPlí2¬»J•
°%Ã’ÓäßWIš®Å:A’$D¨5m´ÀJ7ŠåI‘PÐ<«•Lê:U.Ò*Uu^h$EÆªœRYÊFF[”R	VSÖ¤“HËTW:¥cxt< …?ÆÙ\=¡Ý¬ëÖØq73²›5®û¬ˆuYÖLi,Mb´3!à 7ÂláAllô®ÔÓÑ¸ö£Ç™Â#µfYü>Q©Än;œ6­á0W
üØ÷nà1€FÆ·‡9Œ…»å-!‡¬‹u„¿žà‹wøŒ;¼ñá[‘¥ƒAÏÉÉý>vôÅÿµï‘Ã›Š'Ú%ÝÉÉ›ø‰[ãã:8°—ð7*Ny‹v9$Œ,\Ôrm£+SŒ6©"?2ú ºžC^dyU&4cYÁòœüF«âú×=6‘ÕÀÊj7t"DÅW…sËgŸäŸ¾ãîù;`uÀé®„ËÓðà4Ü8¢Ÿ|ØŠvÄ'%¥IIàåýM]ý€…ëúÍœˆ0o[×ˆ€*]ÜÏ'2ú1w=ÊÎxÿîúÌ%koEMÖS¹çâè_¯<Ù÷”#xœ•QMK1½çWÌÑ¢[’M6K‘Š¶àEÅ‚õšlfÛÀn¶ìn?ü÷Æ‚z¤ÀLæ½7ó&cBs+*mÐáXNëtgLÅŒv&wXUž-ÉÎöG°¼R™q’ÕµÑÜè\zZ[+µF3¤2—…”ÄîÇm×Ã#¼‡.n`vÄxúŠæMˆûÓ4¸vZuí-0É“ŽR¹€Œ”’ôÚ†qÄlØÀÚnbÊfþxæÃ~À©Ç3Õ0‘ƒkÊ•ÄC‹YÕ„î¼ Gë­kêÐ·Çd<$Åa‡ý†1™"d™&Å“mwÞÀc„å7úþ<
,	VòÜøßÚ+Â•À%S’
Å´VE.çš<áñO¨æ\)•lm¨ÐLHBª­`ì.iW¯‹·éêEä“ºý°Š	!«öé³®®3÷QþÿYäe{¬œxœPËjÃ0¼ë+öØR’J–"Ù&”„6ÐBZJH¯ŠµN¶l,åõ÷•“”öXÐÂÎŒfvÙÐ!BY(JS(¥9•%U7ÒÈŒg¦àYš”£Œ&‚´ºC ,IQÊD”&-iŠš¢Ì6\ 2F*T‚™‚è}Ø5¬ÑÁ—mÜÆGt§¾›TÖíOC»©‡ES?“<å™’b:¢”D¶¶!`/ÚY¬`­·.¢±9^š‰ß{¼X3&âcð@Y´w¨qPT6‡©1ðÐ/íöõ&ú­ƒ;o}èÉ««³è	ùüUfevUrr…—Œè¯Î-æ°|Ÿ.V¯¨«°ƒy³…¥Ó­ß5·;zb÷°Àƒõñ9°½&î6G·»Fž›8¹©ªÈ¾™øÅ–¶,åO­Ñ]·9Á³„¥g1ƒ¦,›sþ›“oñ†¤—Fxœ“]o›0†ïý+Žzµj
Ã|ˆª©]šªm%Ñº[c‚%¾d›|ì××a4™«Š|aðó¿ï16
¼$™fM2?H³8ò0`4ò2Ox4 |c1F¦°2àaè™ÈBÎcæy¡›d‚FSp–Ñ€‹ØõSä„µ&¯¼b¿d]máfÕá4»-dÕ™–¯Ëï@§~ì'QÆ0qC×%ök)A÷¬’XÀ+ÛVöíFì»É­n5:;iB;(|u©•’jWâ„r÷Èkpµn›¦V,v6†Ò”¬¹YÁrñ¹ƒŠO‚ óz¯aŸ3ØqÄvôYliÞª®Y'3 p'9j‡%*-µ9­t;ÀS½…Ì6é2ëx·¢äŽÛ¨niL3—8N?þãzF z ÖÏw«Í·Gd…É»×kl˜¾ð÷@¯¢©Êý)ß¼;“3êÑ,QV60ÏYµÅ3ëÙe½G5±mÂj¼†ðËÏg;OõÑ¶¡„G¦Dçh¡”U¿ëÂ¡®·ñÂ¬¯†ñ‹¡éHÎZ•¬ßÊ0uñ}ÈÚ®4v‡õ.ˆ‡‚µý‹üÿ”N> G
³Ü6î™iÕ%\:Žm°À:Â|µ3ÍGÎ1G›¯€ÅÁþÆúoâšµ´7PLê,›¤ÇÙ'®7y¸àe·‘xœÁJÄ0E÷ùŠÇlu$i’6DtçBqý2ïe¦Ò&%Mgðï­ƒ¸ÕÕ=›çÖÂ­‰­ÖCì´Ñ]T­éØXÆV¢ñ$­w–HLX8UðÚ9çY·)9v…†ôºÖƒMäÈ¸Ôc.ðˆ©çÞñ¸À-/p?/3ßßjµWÆKkàJ*)Å>c_+ÿ[UFý¨bèC:¼ƒC_a^Â˜iøú§’?x_a™+“o€šaó«=Aâ3ði½:¯Ú4åR¡Oðòô¼âµ_h›cÜ†ÏÝ_âò[pp˜xœŽ±N1D{Åv)Ðž×>{%„(h©©×ö8‰D.‘ãˆßç„ÄÐMñæÍÌP@Š¼$ ho\XtY»ä¨¢âYXPc4w³mRUÓ˜8 [áÎIb7®Å¯V¥4F]˜{øãs7ïJµ˜9jÙ¬úŸwsmMrëÅÙcž®ƒÞm;ã‹>í¸aÐKûþo÷ÇÏ¯´¬ûÃ½fzâ}ÉÕëåržÿ¨ºŒ#¨Ûê‰ó8­÷¡Rà›xœ•MN1…÷9…— h•I2?©*T$–ìº`ÄÎtÐL2Ê$­èé	H€…¥g[ŸÞ³s"E}Ë›žHiÜr©›ÎIC«¥–‚K.Éµ­a«I2 uBí%y§•FŽ;ë­'®{ejíÅ@Ì”|‰	Î™®à\(ŒîBq†÷êzÜ\Ã‡ýLtÚÌ²•0î]\^ éª¿êjÁ×œ³:]¦œ)Á›	ÍðaÆP»#Þ~Åi+í‘þÐ‹¡¢MEÙ<Ùp]è ã”a+v‰Xfzþ‘kŠŸä2”M&dì6xE¬»u)ƒ¯Ñï1$0.pKS&¨/0÷t3Œ§ê»èýÎ~þw'û¶Åy­“)xœ•QÍjÜ0¾ë)æÞf±µ^ÛBIH/…þ@Zèm4y¶l$¹Å9å1Ú×Ë“tìmJè­7Ëó}óýLŽÌP;wÀÊ¸Š5•ECtp®2†¨m.ÚZ—Î5¼WFi]×uSYW¤¹qÖmô±räJ®uc¹6
ç|#œ2ç 'žCGg{x/ª7IÄÚ]Ï|›pH2ÛÑ8¼²ÞË}½oxU‹BÉßÁçÌÞbðÜÃWì‚¼nìíã6Í‰w–ÿP«¶Ð­PK¡ª‡®áÎZ˜¢Ù‡¾á'$Ÿ¸?cèØ‚‹ã ë(râ¬”wÏ_0z4=ÿC3>ƒO HÈ#<=þ,Ÿgƒ~š8böcP"‘Ä¾OÙS'ìK¬…8p’Õ¢ Y1Xé*Cš˜¼ó¤ÞYiÝ»åÎbFH9Î”çÈ¯×]—…[zö9à´ETó4H3§äæ¤Õ©çÕ!ŒðâúìxX|b±A;êbeYûû›pÜÑó†ÏkoÛD©“—»Ø«Ñ¹+³\ÿßýÕoÕÃàö™xœ•±nÃ0Dw}§.EÙ²e)Š»yè,“”#À–KN‘~}…¢?ÐíŽ‡wÄ•úÁKj?v$%Û¡C4’V½µèÇQ³ê©w·s,à3Æ¢!ÔsGfF5jMš™¥R†IáŽrK;L…aâ#.xã´ÂGýzÉØJÓ¬Ì×ì¶\³Óö­V¶Uºµ^¥•RÔëJáÞ]¼Â§[buúú×|dnˆÿÐÞÈÎT´­¨øŽù;oéÁ@Ç}è
Cò€kÊ!.à	^àˆ‘‘svûü±„…˜Bm§Sòþ4?Ïÿ[!~ :—nP“xœ•OOÃ0Åïù>‚P«4M»tšÐ&8ñOˆ!&qsw+´ÉÔ¤LìÓc¶GnNü{ö{Ž#XÓØ‹LbYbQÖd:'¥±h±Te£eÖ˜Bìq$¡È«
«b&5¬e+g9“²©U‰M^[IM&e«NqçGXGú"kšÜ¶Ù‘ïá·.S&í‰–‡À½´ñÃ5den*­U¥àJVR
þºi„[tõ°Á­ã×ÂNÅ2LRK'i•i#UÎR¶ ÄÑ…9¬¬…0í÷~ŒÐ²Ÿ£w#:ë8Œ]$à\Çñ€—B<½=$ðúZÎJxgÚÂËßœðÕ/®¤ÊRÀËnÇ®íÈ
±îØ“M|Û&õ÷üÙÅOÎ7ã	¿êû§ wäÏX|¦§ê¯æþŽI’xœ‹±J1@û|Eº+Íl&ÉD,l­-e&3s·p·+Ù,úùŠàØ½ï®ê3†:å'Ì¨S„B‚ÔÐ)ªÍ9ªû ®ëð‘Rb!°ŠUØ©æ¹PƒŠ\J%1©½…4ÏÈ5´Ücš"±–&£š€rGÇ¸lÝ¿ÐºèÕ¿ÑyÕîåóž÷c×{Ñ'9VÀ1û» !¸¶ÝnËúÕ½j?«çNk»ø“-_|,Wy×Þ·¾ŸÜ7nIXj™KxœTÍnÓ@¾ïSÌ±Äò:±»-´*HTjÅ!HEªJ4^Ï&«Øë°^7
êcÀëõIX»$•½xÇó÷Í÷m—äÇÃ”ûJ‘‡BŠA–†§1"ù‚G#ŠB¶DCÚB(#!²0ðý4Š‚A(ÇEÒ0À”FŽBÆ)Öv^˜Xº!ªõLÌ©ÌáÜu=¬÷Ç^Nt\aQ9Ÿ'Êâðh0
GÑ8Ã?ö}æÞÊZ2ðµ¢.q¦u˜­ÚËqUWäeÔ¦Æ|8ÃØ¥r—ÊN²nÈTªÔàZ‹Hèý’ôdr¾Ç=îùû`ès­eŒ½»89ž~ø8Õ´ÚÛ	[[:žööÁÍÎJoj@[ÃcLßä‰Î4ÈZÛt¼¿û9#=ÍæbŽËé‚Ö÷w¿’Md4Šƒ$&@Æ”&U,s%”…ŒDŽÛ
¥ìTÛÅçj@¦2X—5„Ý ¥•u¯áªÙ68ÚÔïo
öw]3hðÀ-ÀvhèÍSa¿Àt™9`Ðž[xâ|úñxþÛÁü$;Î§0W_·¼ìL=7*|Ã6o+kjaa~ZÙÖÿ¤)‹&@é†(pA,KgºmjÍuæŒ•r‹[[@èÒ9Ô¶/Jýg£®·`Ç~˜þOÉf³þ.¥(—ëgJéðt¤|Øß#ùv•Ú•ªÓž	ÁÀ<‡­ô¬‚”Ü¬!´”VÃW¬a5^¯Wî*UN	ÃZ®ÊkxÛÄgl¢Ü×›õK)ûé:yÞ_‚ý‡’x—'xœ•Q=o!íùÓÇÞƒ]öSVä"e”æ
–†[NÀîùþ}Ægvš(oÞ¼™Ç£$DõØ5V3trîÇYÍÆ¶­ž›y4²F­­}£;«„¡À¬Z5ÔuƒM×YÞ+!8ÊÚÈ®A…²á£–ƒ©»–©­,1Á±àŽŽ¸…“^0zøI[²|¨<âcVk&®Òqý¢kú¶ç|à9gT]])˜à‡
=<©S ô`.·ËcÞ2VoÒQHÙÊž¤‚¤,ì+N`Ý+XU”L‰Y:ùšI×jaì;}¡&ø!oz¡!„Æ%Ô%¦+ûÜG=çsLØW8y7kØ1eÔUÝ²A*CîoãðÕå‚A#P.ú7sÊ‚	Áeñ‹‘;(é
%B"=î‡í{3uÃï±££XÌ}´ö~¾Nÿ?{þHu­¨û-r²+¿áh3ÂÅy‘ÞvI®×òò÷Ê|û9"Ó7•5xœmÒÉr£0à;O¡ª9RŽA d¦’©€Œ0^Ç7É‹aLž~’Ìä–>ýÕõõéo)8D‡ºMFÃ1á”ajBÆvÌ(1	³cÙš•Š^H@	"nXV¬a¢ë7!3-ƒnš}4ZèÛC¢#fC:eÈ"”ÇºÍ¬AŒ`lcÄ‘N¨m…42-‘"ã9x%IÁxdíWx®›š?0þè–aë¦iëP5]Ó”cy¹dR~`/“Ó†‚Ç¢¼Ê»ç$“iC>ÀgI•ÔYzŸãŽ=? +o6¾8ÛÝzüµW€ÚÚ=ºŽã'r£YZëÆz¸vç8=™áÍ~ë8åøÎürÂ{ÉðÁ]ˆ±ßGêTµDU@¾CÙÄt–å-‰³©z3¾.£/¯¥&á{ynÛò=€KrkíÛÜŒèõtPã~|ò“10°çÞÙµÝb_ÏFãùÀ™öõaGxƒýfeîï/“Ùñ³®·ËÝeq8í×Ã yÝÀ)¦×±|S #/°;‡ŽãtƒFb©.Ãm‘¾ƒµqgïé}«yçÝüí”ÁùuulÖ6ÛfÖìE*€FF¦¸L]È*gñÚÏÓsRøW9ºre§ÖrFPq	,A‹ÅÖ9mf®ŸÃz4T½p¦ qïÇ•åDm=­ì¸bÙ!L»ÁômfM°µB…]gáy8‘9éw«‡ó‰ëÝÃ÷:zRÀS•Y•ò¯³q0ú¹1eÉEÂAÕä9üÚðZ‚_:ÄÄ¢¼€<+š{¯¸]x¿æ²—gô3÷ZAªžà·¬ÎÊBQh“åì7ØtÅü'à“€od	dÊÁÇº¡—’59eÁÿ×·
ñ–xœ1OÃ0…wÿŠÛP#;q’ºB¤"Á\$æs|N,»²Tý÷„ÄÀ ÓÝðÞ÷Þ]ŽD€¢
k®i-’6­–%×VY£Q¢QVÕŠ«–1’Ï ±Æ}YVT5å-
ÁI–F6!ÉŠ«NîMÙÔç<„GôŽFxÃÞS„;sÙ–‡4'*Ýƒh*%d)*	·\pÎº0M.gú¯U6{õeezv£9Àéê;öËDp‰x†H‹K.xÈò@Ð»iÖS0óH<1vÊá9b÷î|¿‰žŸ°PÜŒÁþ]`¢üMÚðÀ‹O™Ð°ô½Â7Íï¤ï¼..Á™uŒ#¤óÂœï‚On¥ùÎQ*Öbn=Ûì‚µ;}=üõö³±›½œ1xœm‘K“¢: …÷üŠTÍÒê‘’ª™[CÐ¡ÑÖVÐ¶Û]á¡¼Ò¨¿~¼}ëîæ¬N}õÕ:¥€“
,™e"-J!ŒË‘+”2j&ÐBŠáØhE§ê0JÅƒ&JBŠNLA!‹-Lch'v"IŠ-‘0çŸZ˜9ØL™’X=S%¡HA†âÄÄe=äMf¢.T	"«U~$ãWùÕë^}OÔ? ÚˆAdS‚‰	MÓMUÃðýbxÖ1øQ7jËÛ¯¬r™emÖxú7|îk°ñ7 
üµ»Û‡ó/n Œ=—Üu¹çº[¾]äýC/äK'?á×OÔ£ëúû,p½ÊIÐú¿zŽ&/|²ÎØÐ~áã<»™ËÙ‡kŠCuéÚ[OIžv;rŽäz=Ý«ˆž™åºÊ³´"×µœ¿ùA³1€Îjt½Om–‹>’vËDx÷wŠóÑq¿œm‰Nx9¶/o¯Ñ%x!;›Ú³Ús‰&¨ìt>ÈÕ5Bôv¯Z×ºgÅåð¼ò‰<ÙdÝl.ÍaçÞ¡ÿjç¹\äÕçxe­sœ¿OýëX`Nz{·?¬<ÚÂ¥ŒLC^È3Ç7Í£â´Ñyè.©ÛC"2ÕÒ¹½Éœ…~v,å11À:x_}²rð6~Ö;ßõjkGþéîÅÚÁ“Ýòý¼jR3²ÅåsÃ
þû<·ïG;EÅ¸>~à']Fã¿ÏæëÙß3VªËhuY‚N]´êðZŽ	Ò®©@‘‰q*¥¨Ÿëì)ÖE™†÷ à‹€/òêãò$œxœÁnÃ Dï|ÅÞzhÁÄDUÕCû­Ôó‹ä@¸Qþ¾VœžÛÛîèÍìl+D ”“^…pÜa0¡³}¯·$¸'m„RA1°3J°ScšÀ9!PÉNj"E„F¢ãNèpèÃ¥M¹À¦H3|á˜¨À³¿Ü†×ºTÚ{z¡¥á½ÔºƒG.8g.ŸN±5ú¯Uõü×ÊìgxOhgç0'»Œà²'kŸm½Œ}NwhŽ¶`¹Â„êr>çÒ6rŒi|‚™ÚCÚRÛ+\&JÛ¹X%ºS©1'Èá&Þs÷Œ}Äµ¼ßåvözüë7öW¾…t›Kxœ“íNÛ0†ÿû*ÚŸhˆóÕ&Ó˜Ø$¤ILÀ4iDŽs’z4Nå8°²iâ2¶ÛãJv’¶4Pg)‘¼çøy­A„±çGÇ`ìg1ÄPÆyˆ0GÎCîÆ2‚qÆÇl.j±ÆF~!¢‰ëÉ±ÈBÄ<@?]×2gNÆ­Ö…V8ƒ¢Ôhày~ÕO^6mƒNŽ/€G~ì†ç.ì¸Üu™¬«JY‹ÿºÞ*”Ígm©t“À›ÚH»˜cQ¨FÌt[Ð9Í³™ÐŒMIrUå3ÔÅc*˜ö­nmŸƒœ
Ó+tm™¢ŠˆðÛ¥¥ŸÙ,e=xwäÀÙT5`*Ë.½.–@” å¢¤¤e9fm	Y«fù. S:Œ9Î^ÓfsS¥¬ÍÞLeú²Â=)…^¾zu*·Î4ñ'‰ç%€ÆÔ&F]cg­ÕZT(Œ2KaÕ%2 ð'ðÖcÐ…ÔÅ ÷ù‰Ã¼í­¬u>ü2¤²¥ð.äÁ8ïðïPkº‡Àø$Nx”tuÃ¤sOUTÕZw€•¦†Û›_¯Þ½=LNO_Ÿœ¥Ç'éÇ×'Ç·7¿iSJpŸs †°É[iÚUÅ*ö=RSÍÉn6Ãt>è>‘A5Ü…ÏOy9ÿùïxÒX%¾·Ñ‰ÓþìSaÊte)Žhïg9Jãºÿ:cx½|H7œÀS.:þÕÙ«°¢þ¾Æ¿“Q×bŽLî&ÜßhfÅ¶tA1÷XTƒ5ú¶Âþ>¸Cøþ(ó
±Óþrê¢e‹dÓÕg Ú³}\˜4xœm’ÉŽ›@†ï<EK9Z3nÖ¦¥$/Lf0`¼M”CCwfs06O'Qn©S©êû«Jú«ŒÊ„°$XU¨Áfª)äRˆNUD4M‘K"XÓÅPhRË²©Ò”)&Õ	&º‚‘‚RÂ!áH£üÇ3bƒ¥˜ª	6°±IdúLMŒTeæ£¯JdèóV —4«Àdà3ÿ$/ÝÐ±gÊ¾ÙP±¬êš,ƒ”!”Ò¶®‹¾À«¢_	øÜ´‚]ªûKVôù<?€ÿÈ²KÖxúöbåù X`ë­|+ÞE‹?u	H`ììÔ¶,Û±¬Ð_ón*&'²¿¡ü¬m®ªðFËR¨åYÔžfžÐø«WœxœuAò6ï–ØÎ,ûF\yùö¾±­oÆ›MâXýXGíÔ…f0Sœ¨…³>)ãíój»>Ý‡øVN° F±çˆäÍÔªtÃaÆ>ôÎn¾L·Ñƒ;}¤·7îûÆI|ˆVcâ¢•@<—w†µÁnôœ’çå¸°ã%ºfZ·_¡½«”ÛEdžisYf›9¤þô~p—ÏÔ 2$°>Ü³vŠŽuyç°Æûú¸]çƒhÞüŽ«Ä÷øk_¢±GyÙŸ"ºsíÍO`÷•Xr
Ý©‰'-«¸»NèçÇIßÏ×ô.Î³Ì
MáDDó.c³ ?×ÛÚGº¹Ú—»/øòÑ›¾ô×³…ïþß1é‰ŒËPU@°ŸëzðIV
¸hkpfœv'UÁš9×'kš$}o®5{J«âØ5´}(¯Lô åàÃWuÒœ4ë@Ñ€>g &ÝïKiÒü‘Ì7™xœÁJÄ0@ïùŠù.“&Í$"âYÄ‹xQ<¤ÉÌ6²M%Wü{+xo×3h
ÎÛ$Á¦Œ:xŠi!bç3Êh­öÌ”Õ{l\;èèp$Gh³7&#
è=:Ë™Å fœIÅ¾lîXîW¸~ÛñpÚñö3§CÚÖÐÎtD“…¢ÚíZzç…d&š~CõR/+éT^á©æ_¸uØžÌ„–X|†R¡/k<ÿ\ækZ”z,ÇÊyØD†ùëêï¹ú%u_6›0xœm‘Én£@E÷|EI½D‰¡(ª
)i°gdÇP6S…ýõí¤Õ»¼Í}º:oñtg0)‰NY¨c@ƒÒÌ4„4‘ª&IQƒDjÎ*T’(*	ÕXCAŽ)„(
4‡±cOà?hDSp‚°B0Q4'Q	¤ØÐ«‘Ž`‚¤ YÍÁ0¨rV€cVŒƒ·øö½|´]Ë^cö¨X35Å ²¢*ŠÕe™ñ„\Lº¼U5gMqÿHs‘uáëøá,mÒ6OÁË×X#gºgvSgezûíè»—€n­Y¦iÙ¦éZî,k³¶°·Öœdg´¾j|z3Íñ€NÍÉv!»Wßó„sH’ŽEü¬ëåX.5Õˆf›Á).‹Ýü:Ø‘p-.·SÌ=Õ¾žÛ/#iëÖÑùˆ*aßïã‰Žvî54¶ŒéE_ZÍNÛu‡kÄÄÔ]+S$<Ÿ‹óPÀËÉv`\FŽ>g÷E·ÙË×c	}	týÊñÍòà7kZ÷VMnJM{<ö¯Yƒ³>žÈ%´ËÎ]Àf«JTu½}Ø©¼ÆÇG $)§ñ§z¿D¬L6þ|Ñl÷[GTzŽ&.’/E0ÉÊñœŒìlKËªÙß?;ïp Ï‡+,ó¯MÿQßµEgr×·‡ãE±«T{y4¨Y’Üy%Îg7œA«Xð;™4s.=«õô]ïæÒ?g£ÕðgcÒ’ñ”¦+
ÀÙŸŽµüR!¦ áu	ÚHUèKÁØ É{ÖJÒø+þù£í„™xœOInÃ ÝsŠ¿¯}0cU=@w>àO‚dCdp¤Þ¾,ªîÛåô†~å³´Qòd%i¥&ÉcJÁˆhgåFD!ƒfOPéÀ]ÒÞHí-©”S6xç$&µ:+…³äÉX4ÌŸýQX:½¨ÀBg¹ÇÕ>Gë­EŽö²}4¿·¡]bÝßëÙ¡Ò(¼¡CdƒÝsïôÏ .ð'ˆ•×NÓóÈ¥_a«ÑoÎ{®¥Á¸+¥\h? ´î{Ž¿Æ–|âTSšÂ×õocØ7<Îqî—"xœÏJÄ0‡ïyŠ*²kÒ´i³ˆø ÞÖ{I“É6K›H“¬öíÍú¼(èe`æ7|ó1iA„š+.¹Am8EÃ«˜d´µRòªîD¥L'PT‚<«}‚Á¶¬A) ªeBk-ša@‰Ò‚YUó®mšJ•ÓØ'<¡‡=fÐ#†	ËÕ»¨í¶âCTs,ÙV‡ù˜à’ÖRˆn¨¤””éìRÂÁ*ú	"9¹éöƒßu¯0d7Àe)ŽÁÂ9èÃpDzeLRSÆ>;ŸŠÊ«Äwäˆ^Æ¢×˜p0‚	FuÂwØFÃä†E-+ù™]Ö½™Î,—FÈ>ºƒ/Ýüá£\‰zp)^“§Q¥ËXn®¿«º´ÎQ]"dÿÎÝk7ÃºûÛ+É$·ÎšxœKNÃ0 ÷>ÅÛC+ÿì
!À.'x~~N#%ve;…rz²à°‘fze8ZŒÁ’!¯] ¨;4¾Ø“ÖÎã£7¬œ;ø¨‘¼!7Æ¢tÞ££ÑI‡)R¼‹#F%pï×Raê|çïy¦+—>Žëk#%Ýye~o¸µÃ©lo Fã¥Wð$½”â ÛÒ;ÿ+4ŒJËßøÎí•·rgØsfâÖ°>`ÅÀë3¤å>kÉ3Ì¥!¦eÎO%¥Sx\þv?™o xœŽKNÄ0÷>E/AhFvÿF!Öìr€QÛi;‘{;|æôdÁ`ûžTUm#'«­ä¸4Æ[«6F
C}$i”é­f7Ü(7pR9OZFÔ–wÁ WDcOÒ)Î;Úøž¬Ñ÷6•†F”a =§0QYàý°>× ¸=/D¯×z|çPÖZÊ:OÜqÎŽu[£”ÿ±{®xÛÄùëás+9Þf¸,·²B˜0'¯÷’éºÌµ=26Ì)Óx*1žü÷åoìo,“5xœm’Ë’›:Eç|…ª2tuZB¼Ô•Ü
ƒÛø…“¶gÈB@ãQ¾&–/¹¾I¥î$g´kÕÚ£}¤` L,BˆaÅˆYi)ŒM-Öu¢“L¥X7ScdQ¥¦‚• $Mt#V)Ä&´(#f–XXciŒ‘fš”!b0[ü4Afªši–U˜2”âŒêªÊRLL T“X¡,*\Zrvßh^2>¥Ã¯ð¥íZö1eÿ d`¤˜@¡’T·—ò!{\.º|*+Áêëø%ç²èâá/µ¼Î[žƒ§ÿÎ™y~6Þì}/´£Ãnö‹+@Cë$Žm;SÛÞ:Û h‹ŒNwÎÒ,ÎÚºÇÂl[F­oû\6ÞÅ8Mã'©Øjç†+À]Võ°žÝs>j®¹`vo™^ÜOQáµ•ó»h7{uT³M8èæÔN3|aÙdÕd
ˆÑ¸–VµÃ»ñ°V…7E·qI«bâÔ'¤¡÷·8ï}yYuîÍ\‹Okm/§Ý •5l0…ä+×ß&N¬¿;¦ßG+qØÏß»ÛÛÜvVY¿Ôåi»I5$ª‡©7Ž«³·:4%
8š9Ù‰Ôˆ„—!99÷‘æ¼Ù»u	¥=_÷v'6ýós{æÇ¥g}Ûº§Ìd‹<ãrr× ¶§3^±¼ˆü­™ÅøPÛàMž¶+Dô6ûMf—Sßp‚‹¼F÷PŒòÕÜÔ{ûYŸ	¨ò{³Yèþ}1eÅDÎ@Ý]¯@°¦c­j˜ ÕðËé?Ég^Jv}*û{tl?Œ^ÀÿèÌù;˜ú îø5­¼Ì«ú©ê™È®Õ *ÊÙãgyÛv|øùýÇ¿Ös	—‘xœŽËJÄ0@÷ùŠ.¥Cí$)"Š t¡ç’æÞ¦M†4Ñ¿·àˆ»ÃYN-ˆ …â¨•$‚è´Áà•ÁŽ­…½TØùÐbW0UhIû£QÖŽF‰Á);ê´Â1Î[ò­'i-s[ýÌNù¼¥\"gœÜá!þÂ¡>M‹‹óaÌË#ˆ£2Ö#;¸ç–s¶Û%ÖŠÿ/°·çáýÔCLç&]ìá5~ÁË ~‹s€µ–˜¦|iòÍù7WÒ®€öñ¸®Âí‘±8%M&jüwÿÇ%ö$+q“4xœm’KS£@…÷üŠ®šeFÓ@CC•NÉ#A‚b$&Ù5p!^iÑüúa´fçYÝ:÷»gs®à ˆÑ4–q&C’e‰›$NšÌ „°@…Lj‡Z SÕÌt5cº•„²XH	¨¦†±ÂÆªÿç€‘3-ÄóA3€e2Í0Îˆž(D&”²4–X/NG.«(Ñ+Ëkàè.¾†‡®ïà6…?HÖUëò(4Á2ÆRÒTU!Ä{…xìctW7Úòó!/Ä©oGà‡³¼Í»"G7ÿdÏ<?DKo‰6¾ZÑv=ûò%$¡¡³Û²lÇ²VöjqêNGÕYÛ=½‘—w•ûƒenî[þù2?Îýîð²£¢k¶ôÔTBÏkf½L5‹œ—W'¯Ëã™D³­øQYq|ÖR3ïÍÀ¯›æ5­øùóÀ pS‘¬òPB¹ªÎŸí÷l®&Ó·Ë&r“ìÜD@Ü`¡2ÝV¶P¦ÁŒçGªý¬ÜÓ’=F˜x[%µ÷*Xº#AS={R2öÓÓÆÔæ›e:\çåÊôùöC‹‚ 8Ÿ«Kð>ÙÛI©Zà5^<	Qß·vÓ×ˆwŠçrÎCñÜ±#21`w¨±¸Aï¯Ú½eÖƒ®/¶r•]eLˆŒÃ:{[]˜Y‰öŒeÖ­Ý:½Z‡ãÀ“n¼òDO;êòžÍ‰óHZ;\ù4{ä^B÷ëañ!}w6ÝŸ“žç€Ú¾,‡K@¿dE×PÆ›
Åo-ëÛ†Oûº—7e“ßÔ¬‚N’¶ o}9(ÿq·}ê~#VvÍ˜&z^#Œšu}’@×ýug).xœ’Moœ0†ïþ£œ³È¼UUõ#—TQ)ÙôˆÀ*ØÔ ý÷ Ú^z¨z²=zçÇ¯"ä‚×u–·-\(©NuÉ1Kë<½+ó¼.…ÌEÃ&éÐ8Ê‚§e›¦‚ó\‰,S¼<•'./rTØfüˆ¼.™Œ¡·>;i”5ð$ãdÂûz+$ÓVø¸¨&iìøŽE&rqL³xÁ9£ê¨CÀÿ1ÉïvvöÑè_ÁÈ=´Dõz~ô· oÁaˆÎ ò÷±iÐ{ÆžÎÚF?\ÀÌ#Vƒí*­ª`+œ6ÝÞ…
n~ÜW$çmÌ£íàáþtËt€Ezæó¦ÙQ†U“ÀK¯=42z›œ­=,=š@:hûúüýØ¦Ú)q…¡ÕFu†ÅÆAAà{»˜„=P*êŸ&Ò¯íoRM[»žö›òçÛ‚²éwË„±O”Ô-PÊk“ì°RÚa¬»÷5¬k,K/ÎôtäÌ6ôŠ‚åH;ÎŸôu»ÝèªYZÑìgÝ‘ãÁ¶í¡¾¼û÷¿À~÷oú¦™4xœm’K³›8…÷ü
UÍ"WrA¼ÌT2°6×¯‹ãë„$¾þõ!™™]zÕÕuNwW}GIJ±Lè™¢e®MÝ±\Ý¦Œ„fÄu ô ²°­5HÒZ)AØDØp-„<Ft‡é¦AtÃ1)žbÏ3`†¼éÿzŒ3j;:cÔmæ–M=Ý&£æN‰ã1œi¨S…`ŽjNKðå5•à+~7ßÛ®¥_ýŒg<Ý2=ÇÝÐu-UÅ•ÅWËƒ¯µ´)?¾ç\þ2
þ`Ë›¼å9øü«‚E´Ú‚}´‡U´õi²ø=×€†6Èßf¾ÿ¼ÅEK¶î,	^ÝâjízS®ßïŽÓ•¿läÞ‚qïÙòAÎ‹mV¨…‘Ü~„êp½÷R·mo´U\oÑ“—xüþ!ðér.Þæ9{Ì«I»ëp¤œyô-V0öë×Û>ÜÙkv7VÕ{‡u–^ƒtB ÝèU°½?7Î«håò{œ&å™ÕO!b>DîËó]öë›œÑT.7Y+—E%B¸æ×Ô|9Ÿ:øX"jÑiÃf)ç§ƒ#»,HýãDê¡ª>Ù„éM`C˜y¸(1ß\ÊzÝO’æ1‹˜ËiC^8~,ÒÍ~ï—Ù§§ÃSÁÐÞCw=‹eÖ›bÄì.Õ³™u“Ë¶<¦/AïÂ´“J=naüt'›0Ù}ôÆ`}ÓÀ·ð-µ™-¶ó?Ó6Tæ4]YIïmøË€¶˜($å5Ínô¥¢ùŒ‘´m5!,yÖþˆ‰)ÐH>¦÷SWKš‰¼æOJ>ÿÔ€¡Š—€yýµå'ô´"xœ•ANÃ0E÷>Åì² *›ÔiS!Ä’5=ÁØ7‰l§R8=ƒª";Kóßû3®™ú-yÔZ9¥mëußõ¦ÓÖ(½7­²¨·m/±×ZÌ˜)VPí^:oZ×ûÛÒN…L'ÑYßíîy(;ÎãR‡”ác¤/"ÙW‚‡=Oe)´qôªkwV}'áF*)…MÓj¥ÿ“Â£ÉÁ–¸1U˜sà…›%f²éÃ;¹Ð¹L¥€Ç)Œ+x^qLiþ¢!LóHŸŠ5¤X`ÜÝ|fš«xÀ3BÍËœr½JoF–)z[ØÀþ:ÐÏÊ3Ž±ŠJl*LÈzŒ+bÊ´Çt­ª™éR5b¥ß„<ÇË±hF‚RùyÁË†Zhô
Ð4×u#Ä1œ"¹»äýY|·ø 6ô»G—1xœm’K¢@…÷üŠJfiz, €"éž4 ‚¶¡Õ]AUŠˆ<Düõãôd2›¾‹“so¾³:·­º¦•ëU9I¨ŠBº?U	E„œH„ê’P‘š•-@\‹U,ëz‚%*1Jdž(\Ñd–P!â1Š¹¤ëÿxÊåPÕsM%2N(çÏ,¡\á˜ˆRA%H×f—LH™³|’´d5x¥ý—yoº†ý¤ìUY‡HV1#(B($—ó9oÛ'ìä­ÛÅàµ¼Ô¬*†÷4o³.þù¾‰¥UÚä)xù3¦íÌVÀs<Ìœ•±7ö×] è31Ã´Ã7ýyÖÐùÉÚ˜ZvDë›\ÏzÃóffØ‰z`r–:›pßÙ-üõÂc Úæã4„ûœÖTíÈBæz>)Ø"<ð%ÞÎ¡dÕY×·‡ÐöH¾ÓÓ^ÕŸËÇ¸‹àC ÑÝ?Û‡)¾8½H¼­½¿0M‰•ÀÓÉ5A^? û90x=ãnëýhã¨G´#x4ŒÝ[* ÓK|{œæ•§Çü$³ˆm¯ÝÆÞYˆïNü
fªÇ¡|ßmšx…Ã:_¸™¥œ/&:T ç(÷ªÏ|ŸÈ.6È5ŒÈZ¸Kt#qñ¸­ÐPŠÇa´4³©_L›ÉÙåýZ©ÄààÏ]uÀmN¥Õ~˜P±g³%®<¿—^4Y“ï¦·´En#;‹$Ž=òÖÒ`-÷w2D‹Uø&€·A¹ÂßÎìÕäûÆ„%«Sª®(@Í®kZðC”ðúrM"BüR06æù}Ìéù‰ Lÿ/¿‡ÐôVžxœ•O»nÄ ìùŠí£³0§S”TiÒùXû0¶>%NéÒ¥ifwõ Á]ðR™ÕK^„ zk¥¹ž™Qd;”+8gGZÒHÎk/-wVI#§Á¢UžÈ jÇð¬÷í€-¥Þ÷fŒá„Û/vËSy+¸–3/ßÖWèµÊ
Ã¼p%9kìk¥¦JÊ0Q;öwÚ|¶ö·â{nºDô×H£•´O#Ë9cù±Òè«Rb©1/øz$hãp¥–S ì-OtíiŠK¦pÙæùâ¾¯ÿÚÂ~ Upå›xœ•MNÃ0…÷>Å,AÐÈùs“ªB-•@ˆˆp;'Vã96RoKOÀêÞ¼Oz31 «më­¢U?ve)UÛ”¢«;ªF‰­²ÂJÏÚŒÉº¢ªÍV”eÛ)Úôu]±–S™gÖ÷—¼	Oqv^Ý²$8zÏn¹–	ö7-¦ëæ°r³&;£3OP²ª*·k(<äV”d×è1À;ê8ÃsZÇögqÕÃƒÅ¥paúCë&×èZØPF)!öÇà¸”à|ÔÎòFç/ \0<Âš¼w!‚–0Æ°€Ò¸HBŽ9g„ÓËpó@[x“ùv­.pr6†\<7bHcL¯à³“9òÅsN£„ïOh(kÜÚø3ê¯¼1ÜÊû‚AOåÆ)µ—Ý¿E~”ˆÕå
:xœÍ;‚@€á‚ÎSloBö13	1ÀÂ„šbfµàa ½çñžÁÆ£H÷'_ñ¿³OÖ¬³ªàà´ŒèZÐ˜8‘x ÂGÀh¥p¨˜¶xxÄYÇÕtàÐ AÁ@Î†² Ð	qDê’¥=…uk®U½êKGSës¼É]§Þ\öcµˆ³œ÷ªç%Ën¹LÃÉ8
Ì„¡ôæhËíûûù¥2•˜xœ¥ŽMNÃ0„÷>ÅÛ£VÏNj;B¬X±‹8€?§Vý9NEnO€ V#Íh¾™V‰ ÓªWÜ
¡PH+PM\ñì/Þz!ôÎJ>°ÅTÊ¸‘(”B#öNwC5¨µFÙ“#ß!'´Š™­ÝJ…±Ñƒ2Œ´åyºQ‰ð~¬>¯G}ŽD¯«Ië‘§’^€ËNkyšÃˆìpShþb1ØüHt…94X7›ŠÛ"Á¶8Óˆ±]Ù[ø„D©Ô"™;ûíç ,-”l"LeÙÁ—šÌ7hYJmL­Fð¢cls&w*ÞŸì~ýÛwöœ¯‚••4xœm’Ko›@Çï|Š•zi…ïò¦Jªð°18PCü
—jÖÆ€llúÒTU.™ËÌüõ›‡4Ó3B FyÕ\ÔÓ&0Qá˜‹™®h‰ž¡s-f¤îÂ
Ô\4¥LÅªºªCMƒŠD2’‹‘±ü?ŸÁDQGMÐE5º¦Êû§²ª¦ˆÈ’ŒårøÜ—6®)©À5aà1ÞƒçîÜ‘‡ŒüH5}œ¥i€‡B.mŽGÚ÷#ìÐ~~NÀcÝ0ÒV·ç‚öå9yOÊŠ¶èh¾ÿ5sê¸X:Kðê:±ZGÓw:35Ã´#4C¯ì‚khEæB-÷Ò¯‹ÈÜÁ0ÖÔpwF|÷…e^}(™€7Œw®ÚrÀ+n·‹OQK5¹	-}›šö|3±J>*'ÑžÖn¾aS£¼G”Äv}@Ï±å¥»‹£Ë‰K%W¯’[Ï^ÞŽ¥õ®‚Ù­e‘·ö-Vø†nù¼_î^5Z«jøía3Ñ.­ ë{_5›q‡y·=ðŽ{ïñÛŠb#í¤.„þë>·P©.Ègõ&1ñÎNl“ÒTŽÚ"z1©©
KâÀ¢‘tnmŒúÛZ‰¥,B&7¹(+%Q•t±hãkt‚èzêÞ|Z-±s_138°?\â[ÎG[Ô{§õ*o’âµtZïÂÁ=¯Ð}·öTª÷B”úC²wÅáŠdÇÞ)sÞÂð‰OiR¦Ü¿›Mûó‹q>aí¹ª #§3ézð	Š rÖA—"¨}¯™äô:¹wåïñ?ÚŠô´©9î#î~€ # >Dðu`M]€®gtt¤Î¾ý°JŸŸxœ¥ŽMjÃ0„÷:Å[¶”)O¡ô Ýùúy²¶,%i{úª«®K™ÅÀ|3m'‚(¤F®¬KÖ#¤W.pt.ž‚ µvh(°«Û)7A	ë?Yt¦Ë+Â!HJ‘Këo´’ÉHdîÖæ²ÃØèNFºå)ÌTVxï«—·Ç•è­º­öîÊö
B£8Dxáç¬§ÛÒýôCº®Ô–’ëÒò_u†ßž{ÉÔ¶/Ý(ÇgÆÆeÊ%¥ƒÿ<ÿíûáûpœ3xœm’Én£@E÷|EI½D	S+i…Á‚8v²+Š*SŽ6£í¯owZêÞä­ŽžÎ]ÝÛ5”]!2ÕLKÖ"D‘sB±nª„XTT„DL%ˆ
'ÜÐª6sª+Lƒ*BÃÒ°•C"«ÄD”"­øç3“Y¹Î4+×Ä
¬ ™å3¤š2„è…ÅÜweÝ WœÀï*Ú€§bü‚—¶oécAYW-¨Ë†®Ê
¤>y×Ýå)ï‚>OUÝÐÓáú²ã]Ùçwá›Øî´kù<ü9g2 žÆ §;['“¯¿ 0¶qlÛqm{å¬^Ë¶üôÝÄ‰Œr–ƒÚ„£mã.´í@rß/žÉªý)zå¥—¢O¬¾ŽHºbÙþòá:²•Ù(G+»“D/ßšÓÞ1Ò"Ë¸wlg›:¨ÆàÃÓ\#Ùn(1QÖ’³Žlª¯a-‡Ò–I´'mx¦™û‡kOàÂö‹t¯ã*3bZ9R¾9WË\ Î%¿N¯†yž8ÏæÛ‚ÙþáSÄÑu—êÕ¶qHÑjj¤åÝÞ•ù|;—ÅÎ™ªÎ2@¯q¢fïŸ¯A5sÿU\±=›­ø:íZy‹‚Ä›øâò¸£ÙÒ‰²A:ÓÔ°Ðù<f’ Øl¼É›®âàíCËèèd)aÈ/Ùò|-Ãë¾Tüå‡ÍýXÞÞðÚÔ¦ÊzVä~J"3ŸðÌáÉþv6Yxß7&Ìi³£àÔ ¡çž¶ø!+ºXSÁ÷¿ñúáPsÜ\:ÖU}¸O…AøÏ?ÃyÃI{~ä=c÷‘Õmš¾úõWÿœ—xœ•ŽMN!…÷œ¢öfLÑ@ÿLŒñ ºò3$C3¡abÏéÅ¨{Ý½¼—÷å«…ÆÁI6ó"Ç ¤uLã¬œ[Jk:(§Y\©ðZ!àdh¶<Á ãÀˆÓbh±è¤Ò8¹Y3kãµzÎÞ¨•x^s²T|„§tùŽ/…ý™ê£Ëéä¨ÔÝCÂJDÑÛkåÿ":aùAˆ@¶D·!Ä °-„ÎË7.¥­BÔ3CkÑÿ[¼3¤¶U°TáÂÔ³šÀî•7¨è–£ïjý­q=Á"qÊeâ=žVö‡ÂÁîÇ¿j‹ObnK˜5xœmÒÍ’š@ à;O1U9ä`%Î ’JRuuQÜE/©h…†ÁŸ}úl6É-Ý—î®¯OÝJ `ibbë'aº>¦†™¥”pjë†n±”§6Ñ&A(”€0 ,±M‹â·ž§ÉÆ02MSbcJiòÏg–ÉÂÇ&á˜1°›Ú)p)6M3Ãpl¤œi¬WÇZ¢)”hÏr}M¯ïÅ®ïàs
ß¡†¥&a4Àc-©«ªPê{…š÷}µ„¦¼ÿÈuìùç7ðŸµ¼É»"GŸ~‡;óü m¼zò½ÀyŽ¶³÷¹†4tíÜÄuwâ8¡.Žå)c“­»´Ž's}1¤uzˆ|g/"ïÂ¾¥Ý}¥xˆ©¡fsë—©°»4£»Öµ³ÜŸêóv;s.y‰_s}y/|óü¼…³Ï&ÅÂžÃh†å¢XUŠÛûx~ÏÚõÅcË¸ƒéZ§ës|è1¨ÃÜ¹d«=·¶Ñ!¸6QTÆút	|¥¡•šžÚM<´Oƒkx|Øý¼ðf/·8‘Ñf··”ñkÐ»ÝÜ¾ÀÔŒ3£wO0qd¾L4$ ÏoX_D}<^zauNËÖºf¬#HžHãø£Õà‘ˆÙ¤
×ƒýßÃpšX®ÒÐ¾ß«£|´Y#¸wÁjÆüà„ÝàÚíKVž£e{;?ñmy=“ÍN”*>ïžçzU‹´Æß4ômèËLûs³Y0ýÿÅ´G9 ¦/K$¡í¡SèÑŠ2YW¨bRâSÞÜ‡âRÁÏ¤õ³ƒ<c}©4-c\I÷eÅ}üÐ_ôýS¨È’LtM-R÷PÑ¡úýÓ_+6™@xœ“K›HÇïý)Z¹$‘5áa&Ú]-fðÛÆãÏeÕ4´76|úGÚS«-©UªÇ_ªú	N	1ˆ¦ÉŠ©ê26¤ªS}¬Å‘®„º©ŽUEad* Bœ0#Bˆ‰Q65C—‡8Œ%ž’‰¦™²®ŒÇS]×1@HKwˆÊà‚”<!ðâ&3"PU}ÃeñTô±nªªp$OÆ2²‚ü¿î¤JjšÀ—Ÿ6s«=<,Ð_-öÖ)ðœg@ éq¾œYÖÌN¬Çœ:N³î= n³ñ:/bý†UQ³ñÒU›[ÅÂwýà´\()f^‘`XœåËûì¾-ömx´6¶gÝH®jÕ*R#±-»“×j~GzïÙš¥†Ä¬.EtÎÑŽÍÀ`n•ì®nåÙöaöïj›J7Œ	îIe§n(!r-×’`oH#Ùý«SeÕ9ål‡–`g‹­µþµ÷ýÂÉGjÓkƒ?XQÍù´e¢É>ä¥™ÒU›ä_Ý÷c.8Í²yìz J7’Û©4ç¼žl×¸[œ’3B£{;yËã±iûP±ZùÐæAµ²¦Ar‰øÈžvÝ´ —8Ûyýkï…¤¨×'Y10sFæ1—™˜³ëýŠÚüÖÑ•_™äL,ËÅ9¹ÜOñLoœr%9Û‹$ì¤éÏ»Ûf½~;Qþn|à€Ëm€—®ûº+f´6ØD\×çxû‘D þ99Ï<ðëÚÎþõw·1
9ÅõwÓüÌÚ‚@\2F°øk’Ä¨É¤1±º*¹€¢«¤5,Ÿ`§gÏš”ü¦µˆæ(Ìò—œ˜pÎðð¯€ãŒhË–ðîÁëÓèË×o ÌéƒÒÆºŠM9†_>ý«EÑ0ç—ºç6Öá Å° îÏ;"ì\IîÀ¼ÌsÂëO_OF¢—2Ž_Âîû@ü &4O˜xœPKnÄ ÛsŠw‰€$ªQUu[©›ö|03šÛ7ý­+ueÉ²-Û½"‚RÔ/l¦ÔJh”ŸÆÅÎ”³™s4ÚûQ±™MŒœuÅÜaš­“Ò1!¬áŒk‹•FáÈ¥_Œ’ÂlqŽ}é¡TxÁØ<_šp<™O|:aÍ˜†R×G`bBLjp ’RbË¶ÅÞñVR1¡nW60AÈ{ˆZ(—äÀ ô€tëð++ù›ÃUÛ;˜ª³¼â^1•ó¶/&?íû^¤—/O;§Ø!E“¯‚Ñö„ÙAßy‹kFw(ÞÌýá¯ä‹‘~%–xœÎÁÂ0@Ñ{¦È ·u\WBqeŠÄqÚª4A!ÝXÓ?=é·ªj×àEbJÉÅAØùqHžSPa¦ÌËWÍÍõ£
ôÌCa" AœB¨]ÀÙñG[Jµ]ÛbïÇ[{ÙÂ¯·MkÖç¹Ôùj;ˆÁž€Œ”}_[Ó?¨©:k¶±È±_}[K6‘F¨›4xœmRÉr£0½óªš£Ëa‘Ä2•L°MÀ±ñF|I$‡Íb±“¯’©¹¥O]oëÃëŽ3’Xd„©,&I‰aeEa8"é#,i‰
!šˆ³ª„¨ÊF©:Ôˆè†‚ d@EUc¦'CÄ°$ý×Ëªšh#H5]C”C,##È$¬i”"¦`!ê»¬æ`U9+À1J+ÆÁ=½~/mß²;ÊþŒyPã°ŽÀD’Ç;¤.Ë¼ëF±“wO}î«š³¦øxLó.ëã»Qðƒ-mÒ6OÁôk¬¹ã®ïø`ë:ks·™ãÀµµˆeš–mšxYþþØ/ÖRËÎh3@î^MÓ$¦kz×Ý¯O»§¬<¯ùBuc¹Ûh¶v3šÎöëû°Iìp|ÐÉ±>ÇNÛa7ï4š½ñÆz*LË”ŽµÈvšËB,ÜIõzóMäN&Î3’¡| z½>7“à&Æ‡ÑBäýf8¼SäîO3Ï3g!Ë/ÇÃ§ V”1§pø"v«•·¼Þp¿ÁU­—ý+¹ìíä){Ù¸ÚÁŸdâ€ªýùýºÓ–…NÙ`O yÁæC’¿ãØ«®ÒÎ”Â‹~:8þz6«-ÖI&B¨„Û ô¸WØm¸Iöuâ:'H ~9áÛxY2oìxu‰QùŒKçfÖ=ÿdûµÝ87-¥3R_r••$þº§àA hx}þu6_Ï~nLX1ž2ÐôE8»ô¬íÀ¯ñ£ðºeÔóü3¯§E]Æ§¹H:^¼uÛ¾ueý–ä7A¨†’MI‘ÿ_äô‹œŽ$h³º/(ˆaM¦2ˆZ0DEÏþØ/ŸBxœ•“ÁnÛ0†ïz
"§ƒ;vÜ¤h†=ÀvÚ€Z¢b!²dHr²öéGÙi=l@Š"þÿÇŸL
D »«f§ªJRYêÃAÊºÚni‡r×ìùº|Ôm]7bÄ@.”mSW¬UË-ÊýaÛÔå¡Þ¶mG{Ýìê†ve)pJ½ð§`^‡ï~è0(Ïƒ]Žß©ÓƒôÃW¨Úº­÷eÕÂ—²âz¾LJôŸûæPWw	á®Òš')ØÂú‹4xˆ½Ÿ¬”’ÆEáŠv"!~÷ä`Ä;Cê‰ÏÊEñAåXTïåtì¨àÇ&:F‹’ò÷»ÜLê³®P¤q²	¼#X·e¹Eq4‰fW2ñg:3%²æM
º—ùå…‚#û 2Û)³r‡ÏPÂ@èâ"Â<7c-¤ÀEž¹¤wŽØBû@W
BüêÙ…?ŠùÅg)fck.«+ƒ%˜\¤´ŒóžFæÌ
¨ÔÉ¸tÂpžÎg½=9™Œw`ÎŽ½£@Æzû=.ñÄIö€÷ÀŒ~âo§W
~ÁàÛu–·8ïG$¢`èŽ€a´<-žÄäØšœ"µy¸÷7bbemþPœùºéÌ1>	Qm8“Á_ß†¾b"8¹ñK:efdüðYO¹]6M\- fÉÌŒ–ð’ÏÀk=ÉKvà––DÑÝÇ9¹l ðP¸}^¼däd1¼çÃ}l7`ãð>¼f­cçòª½íÖ=A¡ÊEÅ?9zR…×ºàæÿõï%þ:ëks—2xœm’I£0…ïü
KsŒ2Ø`–HÝ£†@ Ù:ËÍ`œ°²ýúI÷hn]uyõôÕ¡ôªm”S56tB¤Æb"JtnBƒFjD8`D©¤Š4¬hA¤«H¡(‚š#“)4&:5ÍåŠÂ_3Ô¨1:øÏsS7	Áqô2M¤"d’˜jœ#8`8ŠL…!Fñ€K¤kÓ²)ËÀŽ$kÀ½}‹Kwa¿)û®~µ‰0èA¡—y.ÚöE;é"ðV”«²ÇG"Ú´‹~¿€Ö’*¹ˆô¿ÊvÇÞ„ã¬½ñÜÚlWî·/	Ü.vl[–=´¬¥½ôS±ÀùpeFzÂ‹«Úx7ËâEâY£Æ•¯éÙk÷4…SÇyœåál]HÀõqò¨/ÏO¸@þ»Õj»v{Ÿ¶É÷PÔ§»¤ZUŒJYógww‡óÎóöZ!ˆ:“ ÛOlâÔúp— H¹zU3}¢œ#U=NÒz5¿›'=\·ê'Î¢žìM}^úøIÇÄå(µÂ?gð~4Ýì´°ÃäÝC©1g¦„©NÇJ½h·ç¥Ë¶Ä¡¨ŒžÁ$°¨Ò\Â×]þxv=¯[T¢®ºÛú ÖúÔöO¶‡¡²Ðì½;Ì…½3¡æáƒ—7S+µƒYcúµ©§IñÔ·íBîÈZlŽûÉ‰^Ë	Õ·#¤ø=o˜\zÎg=‹à»Þi†dé_fîÜù91iÆš„ªË2Ð°ºc—üBŠb Þ”9ÈDÑÝûÅ5grÙˆDò—îÇ™èçeQf¯Ÿ±$ÙÈ(àâÎ.•GúÇ” xœAK1…ïùsT¬K¶)»mñàE(zñX&É¤ØMÖdV­¿ÞlëÁ› 23oÞ÷8uV™¶QRÖÊH¹jem±qkÙZ­4:Ú¬jkÛZŒ˜(0è%Q)¬T³nT£6Ú¶óx­õJ.×féšf£”Cw1Á=O=¼â!P‚ûqzÜå)SeéêY¥QJµp%k)…‰Ãà™é£Â¡NÞä-<…þnæóÁ³ÇÞ‘…wì§rÅ ôéYÃ©ßÈ¦£¼712Œé/.A£ï3Ä‰Á;@kÓò¤ó1‡· ‹†<ÆÄ¢Ä!ò,îm¸óÊáŽÀ`¦²°¸ÁÂ4ŒÏÆJ:¥4F
kxêÿõ³ð˜âH©LŒ3Ä¨:T@¾t'x|Ùíf;ø³^ˆg_B²×Ñ¹k}Üþ•¡øÇ\«œ xœPMK1½çW^l‘.ÙìGQôèMÁcÉf&ÝH›,I¶µýõfÏ
2‡™áñÞ›7ÑAÛ‰¾o+.¨-DSô½PÊyW
Ô²Ö}“7mUt%¥'AkÕñºáSÓªÁJ%vÕc^ÕT$sÞ
&§88/Ò:À‡Ü[òpçexS éòºœ‹9Üñœs¦Üñhb¤P™=iOˆðœÝIïåe'w'y˜h¢7vFòŒ=/NP‚ÊVW¢í:XÝÈ6„iO‰SŠ«àiY¯ÎR¸Y3c£w8)B€4’E²êÑýf¾Zgð>˜ÀôdU4ÉÆ°.&mlÒ2â@‹ÄFÍ`J‹¼R¼0ß6£GBcg/ÇeöÔækúÉ0cìÍ¤gáÆi½é/Û¿~É¾Óð¬ŠxœOÁJÅ0¼ç+ö.}$)mÚÇC½xöàyÓÝØ`šH“XÞß=xYf˜Ýa¦ìÌ09ºÅhé9bdÓã<ÛO¨$Z¥±(ÞqçXÀŽ½Ò¤¬´´kZp¤išÉií—õ–iXËšvxÄè9À¾FÞáBÇ7¸Ë5ó‰øÔØ·QzêáF*)Å’¶Í—ÂÿxGÚß\HG>Ã=Ä»%ønK1_V¿@Iðð¶ú@Büvà3,uÿê®°¡¥-`$(kÍ×TCã!'°,¨©Í¶¬üc}âÙ·´Ô%ç:{=ÿUF|Ì€„”5xœm‘Ë²›8 D÷|…ªf‘…+±/1•¤~€ñ?®}±½™ l,°øâ¯ORÙ¥W]Ý§WÝJJè‹š({9fPœR3H]ì27£Œ0=gj‘T´ÀvbÃF.B„æQ+…™ƒušbb2ŠWòjóºéÂÌ&ØÎÈke0#×/ SÓÉÓÔ"–á¦ÔH×–µS"8­@B
A%øš?~šªSôKN¿Ý6,l:ÐÑÁêjY}»ñ¶}ÁoÃ._E-iS?
Þ–]úåüaV4…âøü¿üY°ˆÁ&Ø€·E{ûÃnö3×€ÊÏ|Ïó'ž·õ·QYl;6ÙùK§¼˜ëÞ‹‡çeÒ\x³ÚÎÞ^Â¶[1·ÏF×h{Ñ K®‘å•Ãµ@÷¼äa#Ñj™Á;GA}nŒS3DKÙüXTÎQøo§.~š'Âem44‚yhäƒöÖs‘Ú8á¾[Oöë÷›+!ŒV7ì3‘už=Î¼ºXVØLB}3ÒÀâ½@íf·~NQ´—ÞiÕí`@'Âyc!“t8]ãGv™ôñü–tór:¡dØ4wGM5>‡Ç‰EÏLPK®äš7‡ÄŽøåŸ¨AŠU9gõ!–dŒÄµvüåôŸïP4þ¬-ïÁJGò„8™Ä÷‚úÝñcºÓÃ‹çQ`úæhð¢iß/Î9²†ÒÁË~h‡«a.Ç½áoøælæ¡öë³Y<ýócÚŠÊ‚‚¦«* é½£ªéAÀd}7"[.>Í0Î¹ÊêžÊ3IT©iŒ¤’gêoÀøø$ú¿‘O@Ñ‚‘®jg@Š)Ð¶\Q·€ô„W$­èÂà
õ”<xœSK£F¾÷¯èÛ¬Yæ¹J¢ cübmƒÁ\¢†îÆŒÍcºøõñìV‘rˆRR•T_=¾C}%!PRM¬SY%ÈR$s¡äÙÂ"ŠnªÚ3ªš’IšŠTj1R¸V™ÒŒšåŠFUÝÒ$ÓÒL8ËeÃ”-M¨·†Áïˆ‰²†+Ò°‚ÀßªiñgMjÛ¯ySýe}¡i¦!I
œIÚBO´*… ÿoºh^ðåÓœåj³‡ÇÕž6«½}ŽÂå@ ËÀ[;¶í¸…=xårÙmÇ¥‘C·Ç×Ó®nq·;­æoªgWžå½.Ïë•|Ëë°Í*l˜Uéš8~µï³ÀÞ¹¡ýNŠÚn²ÙñÖ¸ÎÜrB_”TTÓWõ^õaœ¨§.Ñc ¯X›DÕ$è#'ÁTä	:_¿œYr'FàEåðÄ=Ÿ/—­Á‰õÏ§-ÃAÙ5mÌ‡+r_e‘Ýè.ÚÌÒÛÛ4#ZbNx¨³…ì\Í[i,®:Õg…ÝNÄkÞãÃ|(}j­š@”<ÎE0GÞv”ÒõõäOöÒbÄ
R6¥ônI1zÖÉJíFùc8ªU\ë0 °]²9
'LæîâÖ&åoC½MÓµÏÝø¾ÜbwQÑýÎO÷;Þùª?Lñ1:¤)€·œÑBñõ¼m¼å»c„3…ºËc¼N÷èêÛ~8ìÒ@Æ\#3yXÅVàïYØÈàçµ—û×»5 (ceÎ¿AZðKÝWâ’çMOØÈIAQ÷°¤œrØ"qƒ%‡u# êQù@Ùƒ `÷M‰!&ŒÐ§×ùSˆ0oêšäâ/Ä
¹`OŒ.7ò¬1FxÛÔø³ó“üÚÏáóþÉð€SYÔ¿4”¾dã·ÿ ~ð7Hø7¥—4xœm“Io£@…ïüŠ–æh%a_FÉ(Íb^°±/—¨›îÀ¸YüëÇãÑÌ)u*•¾W*é½j9¥€™aQÆ	MIT)6)³TB2°š`BˆI±”ˆB8­ZH–ebQ×©¥¢D˜¤š¢C£†f*˜è–,jŠõÇF’C•-Ye,Á¦aˆ”j„HÈ4IKWtU“¨€º6;qà¢*§Ø¡´¢<“Ë½ymº†>úHº¢)²¡j*‰²(
É©,ó¶½Á~ÞN:ž«§u1¼¦y›uøñ|#Kë´ÉSðð§lÏ`é/Á:ðp³½û\ ¸4vbCh;®ìU˜ÑX¡NlOìCz…w¤	`hÃ[äU#dÑúÉkO n‚—üúæ¢#*Ãdåùç·­Ã3¹Ë‰ä’ø_út¨(Û¸j³ÎŸkÛÇì¨`òUúó|õup5TFe»e5ØªcLƒs€?b?›Í ß½-f,rúû~Öýˆr,—Í\ E°‰®»xâÄ˜çêqN´]º­Æ¾!Ü%Û£Õnâ©.éní¨·‹´yf·Íse\µÃZ k««P_áé¨5¡W°|ÿf)nG_>Wt†Ò$IlåÐìÕÑlÖ_åÌûËÂ”Nly´p„ãB“#JýÎ2œÔ»H’èN÷Ç1óôešð2™v=wñÈœoL9ÝÇ!þè®‡(pc¬¾à%ƒ~#üõÌ[¸ß;&Ì)O)¨»¢ œž;Ú´à‡$K`üT‚ñ6¯ÒzxB„¼“¼IN=åÃ;»ÅŽBÕ—ô¡æyÕþ7 ü j†*´¿Á©b·ôÜ5¿Èëš9xœ’Ks›@„ïû+ö®rx.ˆT’
 2
¶À’·]Ød^Zúõ‘C.IU*s›®ž>L§2BS]”t=Sõ%c†&LÑUQ!(•EM“)U]É@‡9m¨ˆ4“e‰1Â–§2bªf qi ¥„õŒ¤’¾”„ ‡¢åðæCÙ@—¶<§ðKý±æß:à®û”¶õ7(i
Rd$Ë*\ˆHÁ]­Ëa ÿwwy_æðá},ÇÝðÙ}†ÑÆÌ—}è|è XîÖžeš–›×ué8ããìh{ú4úáfÍÍoºlô#W8©k³^£5Î_<W*Ò&ìH™ ’ú cë²­ƒ‰ìLßÍ3­dµÛÅsS—–`¼JJèWÚ^Åíñvôæ)…RœÏÅîrOP-ó<½ž{•µ{KPò8>½­Ú®½=&j8
J´i½e‰×:F‡€]fŒ™±Kö<­­ÀóÂ’VòèX$§ýþ*Ô%ßjJoœˆ¦?Îåæua1{X;oòÊuú´3¦ÂzÃÉ%ò– ®3Ç¹ù§½._û\è¤°žæðù4%˜$±¸rŽ;\ý%ã<\yÕÈ·‹8ÆŠÑIÅÆ~cÚý“Â°Ýò€¸ö!,«@ët'…îà_¬T6E=4ã“»ðùKd¥’’á­¤œlTð‡œdXµ×GûrV¯\š1·üÄ;½DI0õí­@aâ«³T‚]Û6~ªbàW/™lð«m'Xý©kÐL5}èxÙŸ!Î2˜•}ÚN”Ï÷s“B:½“¶»sÃJZe ˜w†½üÕÙïßQU›Ãç¤nî°6íP¦´ÿ@TæÍZÆÈüù˜?˜&/”5xœm’K£:…÷ü
Kw‰2&`,õ\BÓ™„Ò	ôÎ`œð~„N~ýdæJw5µ*}§TÒ9cÏàKCQ¹fšÕ ÒL¦`ƒ!œ"¸L–é*Æ&Òi&µ¤gõRg#)D)Ä˜pJô>%ªd7Ìà
7þçMm™j&TôT!ÙÒäX%&{‡ƒˆ¥„ŠÁ,‘i,š¬H-X	Î$¯Y^éügù1LûFÙ¿@54]]š†Ž€¬@E‘²¦ªÄ8>aOŒoS
^ë¦gmyÿ‘‹±˜ÒoOà/¶¼Í‘ƒÅï±]Ïß½·‘ïí¬ãÇÁý£K@ó`g¶eÙŽe…vø^Ðj÷åì*.Ëà¦õþlYxL|ËåæÛòFîšne„x‰¾.‰@P„WŠÌmxu¬³µ2Âáá´å°æQÕ·9'÷fÓtî‡¼­†ÆÅ-H†Â‹'Èö«à+á±4Û5Ò˜'ÉGŒ/™µEí“E}‘}ÂºõÉ“"¶ZVz›®×S•!íÚ=o››%åœ÷e|µÏÝÃ#9#E:T,|ÐæƒWXè¤àÈ8%?ýµ<;²OÃàÞõw$¸Åðñ)31Ÿ§÷Ù;½‘ÐA÷c\á^˜êã±Vü;ézº–+Ý¯hêÒ(Höh3œt‰Æå/+”Õñ|:CË³´öªGim¼Ï[o[ºqßVÄªã#wÛñDÎÑvÏ5ãC¿Kà{F.ŸÒ™¹»Õß“¶¬Ïh§²=ë&6Œàªð¾©À…qÞ³;)«_ê[ÅY)US7å³."ƒ’dQ
jR±¡%‚‚g•+06`¦hË)5øÝ:RSpCEúqA(]”Mþ@$
Ïxœ•ŽKJ1 ÷9Å»@¯óˆèV¼¸H¿¼Œò‘6£x{swEAAÍ“²¶¸gå=%%òŒÁ²‡“ú@&³‡àI$>ãÉ}‚DÆ™I;F<Ð'>²âœ#+µ²$â}~Œ^–†×Ân/uáÓO¢ö»U:¨ „¢X¶•9ùß¡xëß7ªåžS‚4èÞÖpœetÈ¥òäõså¹Õ8¹ÓïÖF/sœ[Wñ÷cS"žxœŽÁJÄ0@ïùŠù,iÒ6©,âY¼‰'ñ0ÉÌt#m²´ÙÿÞ<‹·Çƒ¯mÌ0ïgLÑH
N¬„˜zî%vÞyOn¤ŽY]qãÒÀwÑ:ŠÉŽ8‡Æ#kÆ)Yï-Në&…·v©<³¼d.pþ<ð´øôEé”êúÝèúÉöÁÐf0FvÍ­ñ¿Bgœ~Cõ^î+ë´äx»6ªé¶ÏØr- yáäXºïz_qk‰ôRgH,3+õšçÂ¤«ˆŽß¨EQc×’xœŽ1nÄ E{N1ðj )Š’vµ7ˆRÌ°!2Ø²ÙÍõC“>ÝÓ“Þ×o‡H	sXd‰ÚÛIcBíBÐvc½‘À4jµÓ!µA@­™Ñ™9ï)1MÁtÅmZ\t	“Sôh_ÛWI	nY*¼|w¼¬ß~8^âV^A;;zí'\`À	Qu[rkò¯Ðx­ÿBõQŸE†¸æOxg†JEÎ¢@fèß´žçp:Ú@ÌÃºÝ¡ïÁ¾>î¹B,¬~JˆT­xœ}ŽÍJÄ0F÷yŠ»—–›&í4Ã ƒºRw".ÄE~îmã´éIG|{«àê;|pà”LÖ£l5:‡Zq Çèzg¤7¼£Æ³b)ÅÙfJ°ï°å.ê»^µ†¹sJßyòF¦ñZØµŒK†Gb†çH	ŸÖÓ†Ç¯àk¿Ì· ;¥PjÜ!TØ"Šíc)”á‰bán½ø'÷»ÇåDS½äáOÕJj¥n°ÙTñž®3U~Šðz¶¼=ÜÃyZ‡˜àJù—eYË¶VB¼Ä!Q¨æÊ}ïÿ/?>†]!’xœ}=OÃ0EwÿŠ·£;qìU¨P&(HˆÁÏ‰ibGŽê¿Çe`dy÷èJGº/'DP­µï,í:%™1­rR3­Õ[Ë¤VM-9#³J2¨FKg¸n¹îja¢î³NP%uÇµE©kŠD­yˆ	Ñ98z°û,¸î¿­Ù˜8ÝMÍ™”[m)%¥|Î˜à	}à~]Ì »“¾äþ„)à¸‰©ÿUyÃxÃ)\Ñº¨ä=|MX™ÑÀµ°¬óSWVšë£ÊÌžcð¹TÇØÃ¬z,'->ôàuðËŸVðbæáíá ó¸ö>òâû€¶ŠÎUú|óÿ{äß8pZ5xœm’Ms›0†ïü
ÍôèIŒ@Bh&íDàˆml\RÛtz@B`;æÃ2Ä6¿¾$™Þº§}ŸÝ=¼o£¤©$ÂÒ‘ES`©išd™˜cÂíÄF&å–ÍS¬Õ‰’etÂ,£Y¯Úˆr„…M­”ÛTd8EF!¶­,åÿx!$¥ç:&¤¿œd [X2%:D‚f¤C¬%m³¯%åAžÀ&ÉK©ÀSzýlž/íE>¦ò€–‰tƒhnèº&ª¢84MO×rðTVJÖ§ûs~hö-ìÿ¬åu~9äàá£œñÔÀjº?ýiÀ¢×õøs®\/Žps\ÆB'|ÙÇ¿ÜWwíÌÈþˆ–ï¦ò¯ŒÁeå³žá@©:+gËw›Ý/½±kò~.6’oÛÉ$œCr²÷{ã8ë¸=æ4CæfÕMì¯8Ö…'±z	L¯JW‹…¤aâ DÃù¦ã,ZšÕæ¾‚þ6¯»°£«ãmƒvÑþ¾¤ÜÝ%–ùÖÍý%‰¶qåPXx<,;ƒ¹'¬kÓõ§ØhR÷z ¡Ÿ‰VQ;71Ã»«Ýû)9F°²7$«Ñ3ÑÀ0’“9—ÌyJr¼žßp›bèo$Üa8Ý¯ë·± ;ÿ8YLWm‹ùÑ£-+¯Xi {éèž»VÎ¯¦~}½[ËêÚ‰ngÎt‡†¸ðóÓËÝ¤Îêî8þ*ò=ÄÁz©lñ]ß‘7ši_žƒÑÿÓRåÔíé”<·òÒ€oÚdª*ÀQf™’÷ätå°ÏI¥š‡®*åå!;Ü4íwW^þ€8ø	¾4ð©%e
zd}JOÉÇ²-xŸ»*û¢þ®lš%xœ‘MnÜ0…÷:Ðxlù/(Š®‹"›Ð¢Ê¢budi"ÑÈLN_:Î²(º@‘ß{ 9¥~ê*Ýõu3µTÕÖ¢uÓš¶7ºM7ÛªfŠUojçF'ÓAF·Ó0vÖãäZ«k<Ú¡sÖ(\yN¾‘sðÝS„Ï¿¥<)¿¾Úé8¥åœº¦ë¾Ò=ª¶ª”tÏLÿ±ØÈn;Ö‹êç[,¿àÇýdº¤Ìð–"Ø€-8'yæg‚¸.F<’ÛUêiž)àöþ.û´IÀ¬ÎI3ÓËê3YÅIL"£'€EF0$¾âNWÎ´P¸} ·$›(ø¸^!å¬M Ì,ã­š‘!EÀ Ü
ÓRŽð8‹t…P^}ÊdÂ3¬—wgŒÅíQ·ÿwOâ£€Ë",™NóÏêTÕzÉM³—¤b‰À~Ù3vúæÆÒçÄŽJ=øçHöœ;˜ÛÝ¿¯£þ #xÇè”3xœm’K¯›0…÷ü
KÝ´Šzc0PÝVB!%òh²©À6B yüú¦­º»³Í|gÎâL×r¨N¹Šƒ@LTMá˜1™áBcMÑ)ÆŠÁ™A¥KÒòºO$È \O¹šê$1Ñ1Ê¨.cœQEMdM¡\ûÏ£TG
U©A¡n”2]Q©BS"kPÅO›™”ôÝ±iÁ,©k.ÀŠ5§'^Ï;ßE/øãß "²Ž4¨A¡D›ó¹è:Þ·èf}
^ë¦å—êþ=/ºcŸ¾<wdù%E>ÿ)Ëq½ „nbÏÌõfåüK@WaQË4-Û4#+š/³qe¯,_;–Êr[ïjšãÛÞ3­²IF´¤¥š:0oI†[*"}m+ûêÏrïlxÚÍ×»®õ4õEó#¾­n}b…wÆ®;\ác3Ñ²ÒÏÊ “‡LÊºgêÔQ)ìQŸì§!a…™³²ÅVŠ>_ûK_+Ë‘\™§)ãÂ©Íëí\H€vû(ï7Z7ùÙ÷«¡DY»§ÆoëÓjn¢Q²Ü†eœ<¢.™ãŠ‡[…nÄŽ²Œ7ÓÍYÛ¹·Iæ£7mc’D'kdO¯Ž¯nèÝŠ°_µH.´­ð4Eíã:ì–Wü é•Çwr>"w–ŠÐvsE}CaeÛ›<h¼y¹}0"t5.—k9}Ô@ë”úÍW	|=Lwô/3'˜¼Ÿ˜ôƒ·9—¾ª@Ëßz.:ða‚@Ö6g (‚úçŠóqÂØ˜ñìùfOMrzvÿLÆÀ¹¢¨sðo>.<k/ûR>ýrû£—xœ¥KJ1EçYÅ*ÒMRù7"­Ž”Vµ Éç¥:tUJ*iÁÝ›-ˆÜÑ=îi"È8D4V‰ÈÊyÍ¸ÔÁ‡^“ECG¾Ü†¥’/é`¸Ó=^"·A`ŠTo½VR$-8q×v^7~c¯e
g\g8uë}ŒšýŒx¬n©}Û‡uy ¦¸¶tJÀµ”’N—Üþûˆ¼¹¦<ãc„%×šË±³‚pszyz?ÞŸ?™¸%dÌSÁ¸[SÚùŸÃßÔä´þjùš2xœmRIŽ£@¼óŠ’æhõ(ÖQ÷¨¯xÁíýVU$‹ƒÙ~ýx¶[gÞ2#B!EÔ% 2)õu«šÄ\a\æ&S5Å—°¡¨
ÈŠ©É†(´„k$®JSEÙÀT.S›\Àƒ™L×T%Ðü ©Ôð},RQ“}.És]ò“ÊT3M®Âóo´©£¼Dsz½B…<ˆ¯À@¯ÑSç½j*øîÃO$iØtQ•4%Qxžeq]C‰fq=oz½æ%iÿÆuÔ°ïOÀ´°«8D/¿ÇšÌl}Ì>Ð§=sÈvçMþÜ$ {eq‹kDˆk¹‹¨˜Â‘g-õè¢lZ\ÚwBzà6§'~Úâ–-«µR‘´Î¨€&	9×Ë3wŠ9IMuévã¢í;guSfÅÅž=Šü>û˜kVãÍp•µc»7ó’Îž€6Ì\lXdºy6²—ìsZ.z–^‘ã>xt3¶ ËÐÝ¬÷vêïŠaÛ?¼ûé´´4åCùV¬¶ŸûeU±Þ$›Óx±¸'rÝ…;[Óµâ®ÒÁÉI±ZWÚþÚIÇÓ;]d<=ðÐ¡_$>y8÷ØšŽ.–ƒ>P³i—´ÔID{]í¶
ƒeâªY7ŠWóC<gÔ\h{Ûï&.xöã&¹Ÿ€—¥SÞh¥Æu½UÖúã6›ž•ð°8¹ež¨U’ÔI@æá›€ÞÆÁÙþf6qÆ_'&¬¡Mš¢nT5ú&ÉFA™g(*ÿkèÇÏ[(û— î!ÙµÍàzÖUËr¿I5…OkøyÔü­ìƒrxœ[Å¶œiBÜÄ>M1sSKKSCKmC®äüÜÜÌ’’Ô‰“58, ¢“¹™å­¸¸Jsr2ó’3óÒS‹JòÒ2+JRóRrR‹‹ròóRJ‹2óÒR2‹“óËR‹*õ¸ Ù£"AŸ3xœm’Is›@…ïüŠ©Ê%)Uì`XRvÊ B+ZtIÍÀ°Ð°hùõ‘ãÊÍ}êêïõ»¼×rÆ@¤",“( XÖu)ŠBQteuÂ0ÃD"ADE(Ô„³²HÒ`Q)Ô#5”™Š("TÁ4„$"E*ÿ×K•#$c‘Q9 0
J±JSMŽD(bjš*
¤k“Šƒ1)KÖ€5KKä¼$Ÿ·¦kØSÈ~¤Hª&*"’Á "… :Ò¶e8i;î(x)+Îêâö§mÒÑ§‡à‹·¸Ž›4??Æ´w<Ç×YÛÝÚþw€ .˜†ace®&IyWNÃµ9U“L^öw/†!ê†kŒw~˜®=wcexßdyé(Ø³ìØ¯\yÅÏÖq0¬/ÙMåå@"n2'óºéqc/‚E4Ÿ¢+š6ªìÛ©¬Ï6Ó®°nòeJÔe?]¥¤¶+ÊŠ¹!Y-ž“m,+fjªGmü>*ÑÉsór?êCi#936Á¹ ÆÍÒ&oµ?^è³¾nYRÃã¨R|ÏÝZkg>Þž±Ÿ®Ý÷ôp¶0ƒóõÍb½›Hùª ñ¼à¾„qïÛl´_žCù¸(ƒ¤7/KÄs¯¶®¸žìý3½j.®B{ìß‡‚ÏP‡¼~P ö¬ÞLÓ=™ØÅÑÔú}>r2)–üÒÌÔrXLç<1ÙðNÅ®Üê¤:p}´òäýaù¿
àõLRYøÌÌ^X_'&Ì¨»¢ œ;Ö´à±"^@ ¨ý,{«àOW‡¤e‚ðØ«
ºÓ£²¤M«|"ð=J¯àíÒ"ŒóGG?üÔgw3ž%xœ¥‘AOÃ0…ïù–¸€ S²®ë:±	¤„ÄmGÄÁ6Z›Tm:Ø¿'CâŠÈ-ïÅñ÷ìÐ3ƒÉU¶@£1[EjÍWºPr!eœq†)jSÎ¥è°g@¥+I¦L©09-8W¥Âr™•$‘´YæóhÊe–	Cí{Ø>²ƒ=®Ò5û^c×ûA+¹š5Ì¶CôfÚ·[PË4_©<W
ne!¥ˆjkCà$Èë5ì¼ÛƒõÆŽ00\û	Ñ†r´÷}ä¾Ró,¿Â[Nb?}H¨Ö5vÉOwp–+v¿D5Ccƒ7°Ùl`t¹ƒˆÇ1%ÃG?…r™c»*Ô€Ã¯·É&ª7´µgôçÇ—×§ÝZtV<Ÿ£|&'æñýéýÛ;Ç:$Ø4â‹r¹‘´?FFÇà»i&Ä51	±·•cJ¼1IyZÿmâ>¨Ç•2xœm’Io£@…ïüŠ–æh%t³5Œ’QÀÆ/$`<ß‹Ãfhlã_?ží–:”J¥WO%}u H£HÒ°˜J$Q°@ !©˜j±òD¥X„DI‘kÔEŽð£Å@#‘&ˆ¦ÊD"Ç8V# G1%XUù¯§‚*		ÖR‘<üTUN|-U’U,I”JrÄ–7²Žu=ò ¨!þô’?|Þú¡‡ç~ ¢ˆTÖ4P4Ác.nªª`:´(˜5Dè¥n:hËñ-+X>DÏÁgY›õE†ž~—a.l},>ÐÖ^8º¿óÌ?{qèÚ±¡ëÆT×]Ã]æ•zfSÏXÑü$½_ÄÎ¾êú½‹m}=ßŸ<Ýc]~«á¾„)£éCMÒùŸ‚:ÚªuUw—P¸±
<¹2ÝýžÚŠWþÜhJ#HÝsq(üÎ)É¯…­ŒÚyã~–Lèl€¸ÁÛm×lõÑ?ñÄgùizõ,Ýª‰žØ[Á¼
Ôô©[—Íç2Ä!Ÿ¹ï‡öþðyž0‡­Bm77ËÛù<'‹2=„¢`ÑýÔÃžPëå¡Ÿø½&kª~ÄtQÍkvüp›bÁ^œŽ2¾0_n6zÊÇù\Þ¬€Uzkmm>[Jx•yrÖ¦Ý¹PìÒù{°-5—´¯™Á{³æàB75$×å”DNDÍ|ð6øÛÅ¸ÇU”Ùí!®°u”Û¡_9ôzOÇ÷—™éÌ¾&Æm Ë µCY¢Îô}#‚,¡´k*”wÿ‚Å—MÓ>¥ÅãÊ"ª/|GÄ ~ˆª&J@C›ünùïƒpxœ[Ê6iBÜÄ>]!SCKmC®äüÜÜÌ’’Ô‰“58á¢“Ù˜å¹¸Jsr2ó’3óÒS‹JòÒ2+JròóRRË2“S€r)9™yéz\ Lµ’˜5xœm’KoâJ…÷þ-Í1øÙ6Ræjl0~„8„@B¸šEÛ]mÚ´i¿€_?d®înjuTõÚœÓI ¤›&352j0]e$KM05ì¨Ô¢$µ0M)v,Ð”†H¨:dÚs
6Nu¶ehvÊLèœ`ÂæŽjk:¶2ËÐñÿ<˜jÆ£zjzw0;µ³ûKŠUË²±fh Í-ÂÒw§Z¢%©8ôNò
$z ãñ³í[øNá¤aÃ6TGw,4Q5UU²º,y×Ýá€waŸ¢‡ª–ÐˆëÏœw§>ý~þbË›¼å9š~çQ‚6Á½FAâîö[ÿÏ^A
[/ó\×[¸î‹÷Ÿ„F'‹­÷hŸ
óy0d4ºn©î#w5&Å$[Š™¥ÞÆ”y“Ãó1K˜‚ÞžEB¶¡7‰Ï»Õ/)fÑˆ—£Õ²uëšÙÐÇpô²hóYŸ›P§Á±»‹›½‚4¸ŠvóÊ°7?æ~´½~tC±h“*ODàæuvðY»ðy¸ÉË.‘}…àEá'a*øeÇcuÞ”Ÿ¼áe{vßÙl9Âk{ÑÄ<*³“'J}“ë{ž:æ6ä\ªçPnÖ«‹¬$®†3nXñX¤ÆøB|_=kïá†‰‡ù-ÖÚpl±ø¸û 2‡U×Þõ²6Âív¦ ð²ô}%‹·G¹:UÕuª°>.nG¶&U²ˆ+wOÙÎ>‹mºó“aÛxú¡ ƒZ¯”ÿ2ó“åßSž@æ€š^$á³‡¶Cß4ÝR“u‰
`LÂ•Õ¬$í½8Šòo5”0Íÿ…¢²‘õ ˆÕ²$]Ç«üK¢÷å5¢Ïy…¾
G*Š¦hh§mId7%”NE£ºïš¾ûó´§–xœÍÁJÅ0…á}žb^ —$M'‰ˆ¸UÜ¹i3Ó[iš’›V|{+¸w~N«D0ÄÐ[;*£õCÛeÙùÞq@‹Ú #b‹•ÖƒIÔùG\b¤,oŒ1“5ÚÆ^Ä½]K…gb†—™V¸ÿ8yYN>~¦ñ2–ü ;´Áiô *%Î5Ï­Ñ?BgPuZý†âm=2Éq™ßá)oµ\jŽ­ÍëôC8nò–cm2¦$—2AÙÛ¶7!^çi¥$³¾îþ~ß?`63xœm’ÇrÛ0 Dïü
Ìä¨qv0cgÌ"RT¡*eI7 ‹±©|}ä8¹yov÷²ÛÖŒˆAƒÌ êº¤2irDj*º¦QI5°n ¡Â5+ZI”ÉˆšF¡ÓX{F•XBR$RI’¦Š$*Xýï‡$†%Ò¡šˆ25–1 ª(†²¦B•ªîÚ´¬ÁkÀše#g^ÓgÏ{Ó5ì'e¿¨ÉºU(C0€"„)ó<k[V/kÇ]^‹²f¿¿'Y›vÑÏ§á›XR%M–€—OY#ÏÀÒ[‚ïæ6\þràÚXÄ2MË6Í•µš¤Öž½¶¦zzR½\ûWÓ¼ô‰oN†Ñ4ñEw§å4W[¶gÜ1‘ ³dJg×½ïwrnQr–Ë¦Òhøºt§?¹óM£ÓoYEeGXwàâà@Žë¥È9ëE3òöb»¶‚rï;NËè´?YÛN?iØ­oíÍuìÁªÅ…–>l& ©¬ør\¡ R/µ8BûÝˆ„/Ã<mãÉžCÊÕÇ=r&;ý"qx²Kã†òôˆ³øÙÞÙ®üÍEF®4˜ªËÙí”s´Ì·þ‡u0µ­9*»ðáXÆCMÁÁét—Ôné¬DŽT D+Œsý˜f—ðŽ6ôìM¡ìÆNœÎÙqïÔƒáÂ3Û¹’íÌÓúêy>‚s-Ll•ox3ã¤¾6Î÷‹	sV'Tç f—Ž5-ø!JªâºÌAZÿ;ÖðQ4/]EqË¡â]’Í'û¾ hKã–¤ `W@0çY‘ RýóÕYYü0Mñ’xœ•1NÄ0E{Ÿbz´‹ãxíx…%%‚8žIbáŒ£ÄY´œD¢ïéÿ²AOÒGIZ«N¤;ÓöèÐƒÚƒêä¼uXüJ\ WHm‡Î˜Ð9‹ƒ©ªT§ú•RäQ«Fû“ð{™ò
ž™6x¦È^	î¦ÚyØöŽH÷Ð˜Ö¶R[ÕÂl¤!Ïs,…þoŠ%ícäíö·3ìúBP2Ì¾„	˜Þ ø”"2_¨ÄÌB<í)Ad(AªÂV Åž/3A˜<u@M|Ç*Tã?;üòŒ¿©¯9àCÈ+V<]B¼Ä‘	yýõüÇGñˆ³‰b•2xœmRÉn£@¼ó-ÍÑJ pƒ”ŒÒ¶1lcœÜº¡Y¼ a³áë‡ÌrË»U©ªô¤ª¶æh1du±¦`MOd('1)’0Tc8—¡¤¨
*Zó¢4¦ZD©¬q…QªÈ‹Õ¤9„Qq]–T,Çáÿú	CYÂ±L)–0R`3Ê&#Ì&¨b)QtvmVÖÀ¢EÁàñ¼àÑ™ƒ§lÊyiº†?Æü'˜þ™2°ŠT0“ $	Qy½æmËk`æ­Õ1ðT”5¯.ÃKš·YÇ'Á7¶´J›<_·0LÛoæ8Ø¦Kü£güá €[³ˆ„,–„ìû×ìr-/Koáàì¤ìz¹¶o„ Ll²:´ºÅôëbŒÚ"2¶}}—Î¬ÀÙ¿‹$0c7Ëy¬èíUÃæøè·~Vª—ì;OóíCQ!vÔÑ@ÂLSG‹\\] YèŽë7¼„†»=“×ÄÇmÑ™‰µƒõh#sÈËSSr¥Y¼ÒÏÛF³Ä“µ[¹˜ð£' )!^‹'ŠI.ÚÃûRuä£5ÈhW›Ù™™Û=*´ÝŠóÂYnÜ™_ëÐK|nàg¡)ãR›3;à¾7X†É.ÍM(eÃn†ÜÓÙêÒÏ¬zË‰œ€ÜÏö»°‹×¨uäÏÉÕlúp¶vO1Õ‰[;I%8W‡£8C7C*7Ni?ï<.bç'Ÿð¼6Ç¹ð·3Ã]}ß˜°åuÊAÕ]. æŸoZð"YI]^AVÿ–øµ·Ç^»x`´ˆÁ1-6h›—hºª*ëö7Ÿ›öï”xœÐ±NÃ0àÝOq[”Êö%±]U˜`€$vû|n"§J\$Þw*ˆõNß¯û¯,Ì`£'Ê±2¶5Ö%T˜‚’¤Q]T=*Ùv­'¿p.€ÙµR$«Qo­	˜|@ß¹]Æ	.Ã¼À£Ï™Wxå13}0ì‡šs·žWÞF¾ÕkÛ÷Ö ƒ©¥4OÓX
ÿA¢Ñ­ÑFW©ªùsâ†æª¨ìà>FØÄjV¦…Ë|¾Î¨,Çëb9œ§ZoâRíúó QfàìÃ‘áåý™á)7—˜Ë[*É—qÎ[!ÞÆCæØÌ)5ák÷Kkñœs›xœOK1ÅïùsëAR’lö_±ÔÃ^*¢à}63é†Ú¤ì¦…~{#ŠW=Î›÷~ð^ž™¡7£7ØÖ£%n¬ê÷#×íŠâtg)¯[]‰3Î3 ªÉ]yå{cš¾ªmÛÖ£WLDšTà%Oi†cä^9DvG†û©p—ËÂkâÐêêª7µ…;¥•.N!gþG²jmMÕü$Å–Vn*fI“›ð,|[¿D—CŠßü½!'¸âG Ì\äC¸r„§AûíNî†í”8„â›1.ç4gÁÑ%
ñ ¾4{~ßsyËcÁ–¶ežàð½â-"“LÞËñ¶ù£ŒøbÛ}qxœ?OÃ0ÅwŠÛ: Wþ'BˆªYŠHìgûÒXUí*q‡~{ÑÆ»û½wz¯ÌD ½W¢—º1­¡µäœ±FY)´!ì\§•µ½	ì‚3¥%YA4v¬ ªV
]=™Öö£7Ž^Ë”g0%Zàƒb""xšªÏËr]hèd+¬ì›ú„‚ù|>ÇRèJÝ©¦mTwW²]°9Râaò^ø‰nXý0…Ÿë}øM•uE3Lð:ðá°Ûóý°{‡)/*ÅÆçíë@w«Í±v=–˜Ó–±ÏxLxGîn$`ßsAxu“xœ•ÁnÃ Dï|ÅÞ+E,Ø@ª¨ê1çJý€6ª–Yòýuªþ@O3‡y£Ù™aö&èÙ:Ô‘0…àröÏDÑdcÜÍqÄhÔF;WÊ‘<E¢É†˜"íSN|¶zööÀ¼¢!÷¶Ã•jå\*§o†Ëýèyï£ó)ó ³ÞLÓÃ‹F­UjëZDøÿ¤ZJ¬•_á«ô×–ÇÂ0¶LÂJ}þ*ü¥@lcY TxN=¾•DRZ…Û¨éiúIý 2™\•3xœm’Ks›@„ïüŠ­Ê!U,XvyTÙ)ƒž`Œe’¥Z†7/¬ˆüë£$ÎÍsë©¯gÝ@©~‚$¥”¤@ÉÉ`
MRUQXj¦‰–‚JÆˆBT©‹9´:á3ª&ÉI‰e™È	Æzz2U–j"ë&505tYþÏëš)k
5™I‰J5Ådšª¤FLÒŒÈÅ&M&ÅbÈÏ­ã¶…P´À*@÷ùíÎc/z¸Kà'R4UÇDÖˆ‰&²r{ÃÎMSp´*†µ8¡ûöÌ¡«¯Y1äâtw¾°e]ÖúñgìÅÊñÑfµA¡³ò­m,þî%$¡±·™mYöÌ²^íW7¯+Óö“ž—äå¢rg´¬5dŽå†­HÔfkTóþøk§?5VàñQBk–K4òÄÂÊ–ëcé¿‘ÎÓ¦Õ®’?„®Z†cïù¤ÆËc¡zaN…Ãž7*®×™Ÿ™6;Àsé­éyY5¿ö"*Á^¨âB­——©˜cCÇõAß~„xóÎp>¯'þté	]{æÚÚ¶^ÄÊèáj‡{W‡ì¢¬´1šÞÛÉ>¹^Þœª]i»ŽõeW³Àé™t©„¨{M³C´?XÊhÏôb;™ˆ"x+½ò²8{¢¤oóÃëÄÚûõ`U??6KÒ…ÜÉ1®<	•[Ïv¡çDÎð.Ö¾;<‰Z yÚí&/À­.%­u¿ZBä7Î*Ò¹íúÉÔxÐƒÂ›@ú—ÙÂŸ˜ô<Ô‰ºFÞôú¦`¢£”Ÿ”óÏbM‡¢³$)ê’x 4œQœ$è;‡^ÔÃw·7ñ	ÝÏDsësÿ€oý“xœ•1OÃ0„wÿŠ·u@­ìØnR„#31Û~ÏÕÄ‰âçVå×P‡nˆñtº»ïx!‚ØzÂh­‰dï‚²µR!"î#iÛ…`”ÑbveßÄ&Xè•“ÒHlš6úƒØi”íÁvíZ)…«ÜO¼ºœ©À¥LáDðÔ¯=/¥Ú!=ƒÚë¶1ÒhR­±0cb¦ÿ'ÅÇŒŽ	x‡›…Jx.¯‚ÓHSýQË±Žë‘"Ägâ¸'ÖXa’Ïç‘ ÞzV'M¸,nžW¢Xsà4å½;“ðDŠË‰Óáïîpq×)‡¡"»ßÍ÷H7ˆïé˜	·SŒ[}üã´ø‘Žb”3xœm‘Ín£0E÷<…¥YFþŒ	R;*HM(ùŸìllƒBÀ@HóôÓéhv½«OGç»›ÛIÆ€–46°Å8!˜Ä0l‹SN¨­;6Õ¨¥2d(5–¬ê€3ÆE²L`FuZ$3E¦N5‡CŠ°Å	fÿý1DÖ8‚Ì†Ä4)BcL-Í$6uH Âš“!ä(¸ïŠ«\	V‚=Î+&Á3¾Ž×¶oÙOÊ~™¶aŒÇP#M×4%»^.¢ë>å©èf=ÏÕU²ºüxÍEWôäç§ðÍ[^ç­ÈÁÓßxÁ4Z‚÷é;XGÓ¥»Ù®‚/® ­—y®ëù®›zé¼(EpõW^l'˜ÜL®KÃEäúóe£þ}8.¥œš2îTõ-»¢³­ENÃmäõÜTµíyÏ3’ÏÝäawrØþF®˜ÃÖjó%zèMô6›½+ _û.Ÿƒk¼É•šÞ7%¾cÏpTàúí2Èâ¡!—2œ’X$5xÝ
J²ÁþlèËõþ I;ÙÐ‰ààAÃsS‘Üëíxˆîs­Ù!Y\ðq{ËüÙ0ëRd’lR­ÕôÄG3ÄÓG!îq‘ìF;k¾?Õ$žn}Õ«nŽ­ž5Ômßû(ŒDK¬ØÍœ·[ÍV‹÷O’¥® ½‰ïfCÒ­LÏ’ÔFŒ7sÞ6¥Õ/Î&<9<ÔNÕešDg$…·<Æj›¿(à¥-Sù·Y°œ|¿˜²`2g îËHÖô¬íÀÝ0Ç€Ëëˆê…µ×êITm‡Ëò‰‹’µŠòéEI®(È®y/q'>y_SÜ±öÿÔ,xœQK‹1¾ûWè–C»aI&³”ÒÃ=t¡gÙ–3n<ö`kv6ÿ¾ònÚS¡P°A ï¡OâLÑ§s‡GrZ£ít×Gg¶C;¶±ÇV:ujÁL‘¡%<}ël×4n4-u}×¨µ§¾éx…+O)ÃFO~à%R†Ov{+¾”µÐÞÒghOýÐuçÃq„MÛ4Ê¤yöÌôT¥Wì#<¥¸cÐ«EPLö'(ÄðB¹ø•zžf*)‚Mf% ²4`I>r´
E õß9P8ûx2¥5XÐ¨œ%{oìáÛšAJs…Íó$å­âÅÙùËšéèoA_ &V[Ê×
ô00X¨|Ú‹âî>¢/¼ÑÚÍ„,Ö°å$çAÄ™öï‘¼%¬ºbº.¶"ÿ’`›H¬ Ò–^(¤¥æs3TaÌ² ŒfÌ×7~¦@2Õ{,FíyyÛ„IP–œ~’á¢l”…°‡¯Ä».…¶*æ3ÔC×Ug4ìMý»—Û‡äÜƒ¾=þëþê7&îó˜xœŽËNÃ0E÷þŠÙ£Tvâg…þ ëq<n]5Nd;
ý{BkØ]]ûh…Lä„\y+µÂQ;çT¯­÷†”ˆJ+äG¶`¡Ü 7½ÓåŽ’* AŽŽ{´V9éÐ:ò ®í<xÁœè
xÊTà1lwñ\×J‡@O ô`ú}Žsxà‚s6ÎÓ”Z£ÿFtâ'Êüš®áïKÀFp©sîÆÃVpaìíükÀ·VXï\€6CLŸ€h)4bKsÞ’S>UHµ®;äol¢½àÀØkÚ„nŽ±ó·ã_?ÙrJšxœ=OÃ0†wÿŠÛ
B‰ì$ÎG…–JlÌûÜ»²Vý÷¤-;l§Óóè½{s$‚^òZ4µ@SuÊÈÖÔX	býÐs©ø¨P¢cŒä3˜^Õc;b#¥6(Õ PŽÃH²U„J¶M?tX1\ò"¼¡·äà÷ž"<êÓuxNK¢RÓˆ¶î„”\öðÀçL…y¶9ÓÿÔªêšAüªìâ·qá”¶°ó)£sàìø•‚/T¡éÈØ\Œañr€´!fN¯7Ž“îx)ê{˜0ÁHäjMº„wÊ›u³X§÷h×$ÈA:§Ló%1b<—Œ}NÖ`›]
°4fºÂ7ÝãL—36þ8S¡œ…×Ýf5?ìúª.‚1ÅxÞþÕûÕr”1˜xœ=OÃ0†wÿŠ ÔÈ±ã|T`ìÆÀ|ö]ZÓÔ.vÒªÿž´ÁÛ÷¼_cbå¸³UÃVÛÖmU+²äªÎ8©;éPKÍR:#ö˜8Œ Ñ…Î ®gTW²ëMi6Ô(%•lûÚi'Nã&&xÁày€7\NpOÇËñ˜§Ìñ”µnJSÉVÁ,¥.îv~ù¨RMÕ•_¨°“h	«xœ÷ÃÂAâÉ'ÞÃdQj!žàÓSœÁ3Xæ HÄt~ÂCô˜·>¬¡Ÿ[ þÑNÙÇPÀŠÇë”â,ºí·A!Äë¼­‘N+j´jZ‚›«ç¸Û£õƒOÑ8Ðï˜cæ|u;³~.J‹Ø÷{Zþµƒø©œ"xœ?OÃ0ÅwŠÛ: VvR’´Bˆ…˜Ïö¥1Mì`_õÛãþŠ„›O~÷{ïG"P¥2Ú¬Q6kK‹ªmQª5iƒm¡TS!–¥±bÄHž¡*6ú^U4º¦b]YÕjC•jÂ±•„FÉÚœ¸žÑ;êáwž"<ØùüxJS¢•¥GPUYÕ¥ÜTî¤’R˜0Ž™þµZE½Þ¨ëªH&º‘Ó^iìÑìÈ/»Øy˜CÜc“·0;î`áÃÅBˆ÷Žà8Ï1ØÉ· >éòyç¸~—.8q‹[Á‹?+BÏ.›å!tx ÐDÐÚH)„‰	­ˆ4„CÆ].A²ÃØ÷GØà®!Ú\¯F³Ÿ1ÚtêmDvÚõî˜¿?§Ä»úåÐ•o.—i—¡m—ú¸ý«kñ]¼×›6xœRMÓ0½ûWÌ­»Ð–¤ùjV€@ê…'Vâ€ö0¶'µNÙN«þ{ÆÍ‚vAˆ½Å™÷æ½73ÑA%÷u©Ú}Ñ”uÛõ¾T²lš–
)³Bël§Ú¼ÁLLèiŒÐî±ÒuUW;”¥Òy^VRí¤®‹\gmWê«N"	œcï<p4dá;Gòð^Ÿ¯ŸÂh«é#äuQ7y]g-¼Íò,Êƒ‰‘^Emv»¦ló'ª³±ú¾Œ!¢µ€Z›hÜˆ:c)€•íÔ<pL%!þ	³êhjŽk—iÐ€£†YÓ	‚2S[ñÙ—èÌ˜&ç#tœûjÅŒÇ+Ü,éùB}›ä£wzV¸pÀM©«Í±áÃ&®×}ìÃ
Î½a_Wh€Ó	d†¡‘UM <¡±h%Ý>—{JâìWX@;
ã*þv=yþÄá9Š›½â!Ì“ÆH©ÍµÁò[D¾œ-Ü÷,—AS0GîHÊ„‹Ka ]¶)ˆ›ÃóüïÞlóÅfB¥€þ‚¥Ú-(L†%‰_¶xð„ÁØKZÔÙÄ¾â#¥ýqÌ{îyvþ½›Ybòîdtšsè‰”çý=Ísi¸¸MY9 x1?®æç%½q]·‘—»ÿªø	,Nž1xœmRÉŽ›@¼ó-EÊe”ÐÍÖ ÍDÃâÁ`¼ƒ±}£¡Yl0¸iLì¯³ÝæêIOU%=UqF)€˜g:Í!"™œ¢<Á‰D3š‘DMäLJRYÃz"t	£Œ]2H®Ša¨ŠF!Õ´<ÉHªèø©8ÅF.ýçc¨I:$š.)DADÖu„SE“ d`’ÊOÈCH^¶L“Ë…ö`C«MÏ¼–OŸ÷~èé÷Œþ H“1zZh
xB!m›¦âœ2àV|:ðziíêû{Qñr ßŸ„OdEWôU¾ýkâz°rW`ë¹3Œ6“?w`ì­Ô2MË6ÍµµöË:&½½±f¸<)Ë›Ì¼Ñ4Vx¦ë=‚.rLÒîÚí¼PõååcU œ–£¼"þ‰m¬î‘í#Ñò˜,7jEs±Žhë7Ö¶³±MŽ%.æ§Ýþm.¼dÞOXË&‡õÞÉ÷»™8O5Í]è—´Ð‘¿CË¦kQ4?ø‰D«l79ØŒ,ÊÀQ®Ðc<øêýŸï»Ü¤g‚ÏÇ:È£i Kñ)>×(Vw…"å6|ÙKTüvÒL…nxQæQd<ü(w³û	‘¦¹E4LKò¨Q#{ãLïÁ®ÒÖ¢n„“áxõpYã8×>¯$TÁ”K7Ž‘|7q3E<og8=œw³-‡ø8Yµ•kjÙûzvsÅk·’»	×?
·ÀÛóË£ð7³ÉÂù<1aNYAA7Ô5`ô:Ðžƒ/HRT³¶%ûW,1«ú´½Qv„p¥C$ƒ¯à¹Ð]×2þ¡ôG”xœANÃ0E÷>Åìº€VvœÄI…K–z‰=Ž-Z»²ªÞ7ªØ°€ýïÿ™’ˆ€5qk²\LFjaQaC†Ì„JÓ –½1Q(0ª1FµBŠFKÕ	–—ƒh­´zèÇ¶3V0\Š‹	^1ÊðN>þ$xrÕó’—L;CÏ z©D+ÆFÁœ3O'_
ýT¼ú;É,NÉë¼C:ã³Ž_ÕtŒ3œq&¨¤+Ø#Î™±ÃÛÀE[ÃÖßz]~˜ë/ÈÓÑÀ†VxóçµcSòöÁÆtÂâc œâR 8‚DeIÌª¨±;8Ÿ«µhw™×à­y-Ø1öáçŠl£µÛéºÿãìHs”xœ±NÃ0†w?Å he»qœT12UÆêì\«‰¶SÔ·'©ê‚Êx§ï»ÿ×åHÚHUZ”Êªª”5JYWFP­Ek¹0­(!uÑ²Œä3¨F6Bé²¨„Àz#gN[mJ+¹R±0F›bƒ§Ü‡Ïè=%x%çÉúùÎSš­zQn4×‚Kw\pÎlG—3ýËš—Uñc²Mt6mÁâ0€?Ž´·9ûDyß¸dÃ‘âé¼º¹eì½'6fç;@ø%À†9Øf<äž`Œ0º®Ï`–iÁç=›¼ûœèÂÛ½ìî!ø"H}˜†fá—.‹q¥N0b<œ/ò1ýÑlÍØ›ë<5«Ð¶+sÚ^yûqÂ¤!—xœKO!…÷üŠ»ëBk`˜ÓãÒ•ñ•¸¾—‘
L›þ{ibºÕíÉw9%AÛT½±V7B‰V ´Â`/'Da'uÇ•4ì€‰Bnl•%>ÒÐò~°£l…îìÚFIUÍC3JÙö#ÃµÌ1Á†@ÞÈÒ_÷sÍyÌk¦;C z9ð®iÅ 7\pÎt\W
ýË)Þ+þëd§ätÞzO°	ßa˜Ó~].ÛKk¨.€Á€qYÇ#%Æ>]™áãEq!¯úùB—½¯k48¤xt†*²÷½äuÊç\haÏ¯Ï·#œª8ÇÕ˜*7yº”0gpÊŒ*	§™BMôÞ…}Ýy\èZº¹cìÝí™m´v;wÁ~ 	è’Y›xœ•Œ1nÄ  {^±}¤Æ¼Ñ)Jyu¤<€…ÝŠÁ–{¢(JŸjš™é'3ˆÃ9Ñl‰6âÈÑiÅèD0%cÐ#ÇÈVáäÚ“§Õ ÉŠq±Ž5;'!Q´«§°h=ŠQaôû~Â-ÔÊÞ8WŽŸ×û÷çµÆ—Ä/0¹ÙO^/8Ã“ž´Vq/%÷Îÿ/Õ–©>
?ÃGîÐ•=a)tVêý‡ðkAßáÛ¹B	HþSÛE}Y“3xœmRÉn£@½ó-ÍÑš¸›ÕHÉ(`b¼ÆÆ6ñ­n`XÝl&_?d2sK]Jª÷jQ½×2B@$CEŒ‘*ó"’cYR)"¨ 
ZH\)[a^¢ðhÁC	ªD*’y	ªX„²*	S!ÿóyYV°¨($ÂaD„H¥’ HUR‚q¸k“Š5.KÒ€#IKf<'Óœ×¦kÈSD~4-G2”dfAÈ…UQ¤mK0ÓvÝà¹¬©óñ5NÛ¤ž&Â7mq7i~~†þfnlp0à´1mÍ;ßþÖ9À¡ÑC]Óô¥¦¹º»MòãmXõ’ü^`›AÓ*Zm´URKÂmîëvñúG]‹Ú:;p õ¼¬sY¤ûÛhý16Þã¥Þ¸¹¥;!³ï²_˜­ÔþÂ?ˆÐ5ÑrÝ|¿3Ï¸áü8_Q‡<KüY06¡wì—éánÍ$¼7ƒ¬ù9{w¯¿—Éy>í3b˜ç©¾_r cY<§ž•ÈjÚÁ±ÈôUår/iÙôlíÈÇP,ôgŽÑ™Fa½]“±áÃBJµé†jï}Ø‰bš»ÆRbÍ.N•sñãòŠ>j}±â¯–K5ÞceÒýxr{·/fõÐ
vñ9Ìë}Áª73{pWâÝ»yz0sèñd_g¦›n·ûóVp×)rjÇ¼]Ã¹¦à­:Œß}áÀË¦uwÜ—fo¶ñ½bœEXL@Ýå9`äÞ‘¦?/(€²ª 	ûg¬yX•49î\G¸% —ˆª°+>Mû…u·iUšæ†¤iþ åÿ#‘ xœÁnÃ †ï<…o=L© ’TÓ´ÝvÞöL@M 
¤ÕÞ~¤víŽ¶þýçŒ¤Š
Å:ÓK®T-˜„R²é-CCËÅÐ²®!‹Z1d°’ÖFXÎµ‘Ö4¬×H5o„mk)8ÊÚ¢VïˆÚ²‹+¼«0Áú€úŒðì
ç5m	_€I.û¶i%‡'Ê(%:Î³Ïÿ³Ù²¦¼ûÝ$á2ã	LÔÛ¼;=è¬+ë'<ÀÎUÁLqÉ>B¾>TObþÃ¢ ;$E‹1á-¸"$·ÉÀŠKVwÜù°óA%Pp]Lù@n;Öe†´ †CÚÖ2É0bN…6ÇK¹šc)]Éåê³»Øÿ­ôä‹}.FŽ„|ú1 ©¢µÕð}z!ùÉ©L–xœÁJ1†ï}ŠÜæ »´tÚN½‰÷	:M:[tÚ¡ÓYðí­« Do!ù¿/$µ±\8g{íÆQ$ÒV9/±÷:¡`7>HÏW(UP#÷CO8(ÍJ;’ÖŽ«Áõƒ¢ÕdG!%s[=å÷.%Zá™b"ÿBp}jžÛu[itBKmMo„+.8g>Ïs¬•þC¡l/ÕÉÒy¦8DÈK9A‡Û¼ì|N!NÔ]«›¬và¶q\}>Sé»k”K¿ƒnøI_ZßŠ–ZJlÊ[…z"(´n¯5¦	ŽOðiÛŠ»lhéµb‹î;Æ)îr»ñíðÇÝì¯•Ž(šxœ•ŽÁNÃ0DïþŠ=‚P«µq§BUœAœ«µ³ÛX$6Jœ"øzŠè!ÎóæÍÔ™¼³Úx<"It!8rºélÛ˜NPLèÐ§Þhæ\±iM´Þë†uïbi´é¬¶žÐxÒ^r¯h­C™á‘ræž8eŽ¯ÃÅsXÖ…·=ïA»ûö{5Ü¡FT±LSª•ÿßTBaNqÙÁ|žäØ³Ð:Öc,YÒéæV©—ß"¨RN5Ñ˜>êÀpõÁ²ÎTSÉê=Õ®m8Ó¸ò²Uê92÷›"²	»?¾«/^y^xœ•ŒËjÃ0E÷úŠY6ÂŒõªJ	]v]è:HÖ(‘%cKýþšÒèêpážÓ7fÉ$‡Ñ$TFÏ’Œ•Þk
d’$ôçà˜‘Äê7®¢ŸŒ´l'z™P#'™I£ó
Óò BVÂ~o|øZy‡OÎ•çÃÛýè¼ïcçsäÐ#m•%xFBs[–Ü;ÿß%‡ú½ð+Ür‡}„¥ÅQÆ}g!¾~	/èÖQ
ä
ÇN×ÈÉÒ¯s«)ßžNgñYY›2xœm’Ksª@…÷üŠ©ºËT"Ã UÉ­0>«¢5ê˜F@žøúõ×ÜÇ.½éê®ÓgÑçë Ò! 1!AH5Y¡&Ð8ÄºFµ8À:9V"•hR(;dR4S¦šnQL©ú44PHj1pQÐú_¯É‘Š¹®bÝà˜« Ä4)DáXÑ"Ž±*1‚¾K*¦AYB‹|HKˆN€^“‡Ï{Û·ðÂá'R¨ª+D74=ÉŠ,KQUi×@vÚMû½–•€:¿½Ó.éÃ—‡à›³c}lÓ#zþ*6¶­ìúpl×ZoüñŸ½„$tiYÄ,‹-ËcÞ¯$_®Ý¡Ïfz’‘åYÎÅ²ìþäX¬oƒC³6f·ü~¹ª>g|Kk	ñäWæŽNÇçDþÎ®>­‹:aêÎ•ëÅÝ›Ä÷#³3vÛ)ål¸…Ypé4±è³p+!‹¬^\·Fr®¦3èS Ãc“Ë®iÏêuÌH›ÎFW\Ú
ž¬¦Ú×£é4òáloö]B±7 ržÞØ'Xeƒ:¤Ø)ç3öi:î¬¿õÍ~ÉÜ`»qÙro¾ž,ÏIEîí-ç´¤šƒÈï,#ËG\µTWŠ	½rm²±§EžÝ×Å=Jwxê
¾“›æ``YêÓ©XõÕMB86®V™›ÐU…(¯FÖLz­ñP]¼é
ü¾~|SÏ'~ãTítîÑpïœôuáDgïMBoäŽwÒßÌÆîèûÄ¤ˆ# ºÏs$ é¡íÐÅ¢*P"þ5xpQ$¿z˜æiwCñÀ*ç˜²¶*Ÿ£‡CAío:¬ûv”&xœ‘Ën1E÷ú
"›$hlÌxô°‹"h‘MÖíPåQ¢‘‚‘T#_:°³è¦Ý‰{Iµ•¡R¢ÕjõÁ“’:ØQZÜOCÝ$•xÃ•rƒƒI­Ì~ï‚Öê@ŠF¬
ä½ÓdöZ`osYás¦
?)fr¯ßföù^{¥­§GõdF9í	_†q„+Ë[£ÿT*ý©OeyCSlï]’g›—ZòÆÁJ‰°RVO¸·ÆkàîæifÈµ9Eû›ÖK~`¡+ÀEæG¾Ídnî…]Oe{L>æ#”|^Ipš)C¯çâí‚¯t»?*´™ ¬ñ3&ˆµv‚V@[z»òsi`é,D›Z¾~%=%ÐRä¾Xž½båRs3TâlŒ=ûL;Àì¹õÃŠ}!×êG½ç3×Ì gá¼aHåÅ¹ÎÆŸËüu½­¿â1“ß”6öýë?~Iü^»Éc›2xœmRÛr¢@|ç+¦j­„ÙJ¶‚J¸ˆ¨€Qyã2#nrU¿~ÝÍî[ÎcŸîS§«»k(Œ$$E8–3‘€b‰P$ÉŠ1H$F8W-;ÀˆLcˆIfHÂ#Œ Èƒi€IÊÒì?_fI³Pš†ˆÄ³PˆLƒi$Kf0Â ’ £\ÐwIÕ =(KÚ‡¦%>)xIwÞÚ¾¥Ï1ýA$`„\TEÚu´ZÚé}^Êª¡u~{;§]Ò‡ÏÂ7²s}nÓ3xú3sU3l°Õ¶À54[ñöŽúç ÆvÍe¾P”Ý|g&¹½¾/œùŠ$™¸„ÆÅ´+C1<™Y¾+XÖyæfÙÒ»Ç¦§º¸;›rç„ôý¶n2?:{ÐÆæ'‡Ýšán;ÞÞïìè—ÞL>ÃÆ-MÇ¿å>ô“WïÐ—ÌwvzQêÄ=ã+UQŸIú\XÝ/^5ªPÄ0B=ÕøÉ°/>mk´¯î‚ÅxšÑEÎs ÷`²TÑÂ+´w¼ŽŸèý•ÜÞÙÄ†ûÐ¸Xš±4çÁFOŠz°Wæ©¦»!çíÆ¹<\¤ºZ>åi¦îmuP,_ØMîE8j±M.ï/dªN»“ã˜j°gevñ¦ëLÙýSÉqkXî¦,Âwunbõé§kÝÖvÞé0[ÙRÚõ¦>QjÛKÙú´]Ÿ°»·žÿP^9ð:Æ‹‚ûÊLµ—ß'Æ­is¦ îó4ôÒÓ¶?ÐTœÖTHšÅâÚ´iU>õut”ãò4,‡‚þÞ€¶‹*îs
¾Ö¿¥¾ü™xœ•ŒAN!E÷œ¢Vn&™PÓP4Æ˜Yº4F@Cá»40ç·5^ÀÍÿÉÏû¯ïÌà¤×¨=œ¥7ŽIFm'DÎxåiY¢¨nçÜ!Ë#£mDM„J#)wqdÂbõ,Üè·²Ã‹Ë™¼qÊì¿žn‡çÚFãsàg@šªj'‰R
_¶-õÎÿŠ5-ù¾ñ#|¦m,[	ce5¸ÎB|ü6ô Üyo©äŸ©Žu…”áýu–8=¡E­eïgñð­[“™2xœm’Én£@ Dï|EKs´’°w3JFì!à˜Í+¾uC³8Ø@óõãI¤œR§RéÕ©ªc”‚4Ñ„âTD1ÖF‰%AÅ*ÖH¬(XB"ä¬q5fôÒY©¢ (¦&(ª–¤XH	B±5¨Ê$!ß¼ŠeQÆ“8¦cEáãBˆ`Ê£D 2BXåE‘Ã}—WÌñ¥ %ØãìBxN†OóÚö-}Lè ¨x^F˜ñwÃÅÕù\tÝ¶Šî­'àùR1Z—·×¬èòž<ÞjYµEþËXX¶|ËkÛrõÍ6\|æàÀÐ±¡ë†©ë8yi^çfh,a~’½«ÄìA×i“Ùºé8ºêÁÙ~(ýÆ-ª	f<ÿàÀÎËåvºÚvLýh¢ü0>•ëõÍ9M³èt=0WZãñ2O®‹#Ëg³qÉ¤‡u,H3ùdG±Á6KæM6BÆ°ÑÜîÚOë~á/ÙMÌÕíFH§sVøëÚüˆê¨Ü’@æ ò»¨
ø÷ÖÛ¹ˆÔŽ4ÑÞÙÔL:ÝÐ2Ka“æÜ+‡íçf¢Òþvè¨Ø¦bq`oÊSßG37hüêPçp<FÓfÞño~x|7§—%i‹5a
ßÏ–í£jÅØ¹”dŒ"«Î<·ÍSd‘`÷×óƒµ)ÞÅÓ­	¦vaÅ*œ6cÄÖnÙ‹ÊD(ØäYñMˆ·/xáûÚláÎ^Œ[Q–QP÷e	mzÚvà— Ê<HYuE†‡§¾NpGÚžœ«¤/)Ç•¹\Ïô7¸Ÿ|çàüŒýô”xœ±NÄ0D{ÅvpB‰âäì$'„(®¤£ ^Ûkbpì“í\Äßc@ÔHtOÚ™™’ˆÀšy&mï{=O3©~¸D‰³ÒBà0õcÇqfL
hm;¡Ž–‹ÎN$$Ž
G!íhŽƒQ0Â2ÜÊœ18òð‚¯Ü›ýó–©5ô \#ïºAöp×U`:®«+…þae{LïÖÇ=ŸàÃMrAïÁ;õ–chtcèÊØ¦¶P¶Æc¡\ /î’DoàJ)»XÙÂn»–‡ž¨Üd¨áPb¿:›â
+Ui=î	/FÁ¾8½€Ë \@{mÿõDZÆž]ašhm£>NmdŸMØ†C‘ xœMOÄ †ïüŠÉ^Ôè6@?(cLôèÍ˜=ó1µh¥nü÷bízÕÛ ó<ó2)"ªZrDCKdÒð¶ªPˆÆTm$­:#…Ö­ šL*¢OÐŠÎ ,YË:äh8ç’SË(c\æ›XÞ4Vµ¤>DxTÞá Gõê1Â­=­Åý¼ÌXX¼Ö”‚J!«®)£”˜0Ž.%ü/*i]n(Ñ‹ì^&«ÂÛüÞ€Å	½EoÎ„]êágPÝ”ªÕÂtZÀåî¡Gó~¦§?0Î.øˆhB>l±Œ‹º»+8}Ëœ7ÕŒR0:ïÆe„†ÐmÆž0]Ì°¬áÈÚ‹ùNQMÆ"gëÝ€ älj˜ÃÖ{öþ:s¹¢Åú_HhÁª,xvyCvºn¯?-|qÂ¦-“xœ‹KŽ! ÷œâí'14tÃcbŒ¯0q¼×I7>zý1ÆÌªjQÕ+3˜¨Ôl"+ÍÚ…Q{©‘V«™¸DG¤½“FÜ}åÜa^ìº,hÕ,!Yãhõó„ŠbÔÖY3
NøÑK…‹Ï‰7¸ú[æ
Gz¾åÜFãñ	&£­D‰VÃ—œ¤±ì{êÿ¿âôYÅ–B~ìü·Ô¡°Ã¸“ï,ÄÏ›Ðl/¶Ÿ\[*ù þ ÓHVž2xœm’Ms¢@†ïüŠ©Ú£••†ª’­€(APQ¢·aä+|HÌ¯_“­Ô^Ò§®~Ÿ·ûðvßrŠM“T™B%@SJ0ã*å¢'1¡²XhhË«p	Áa‚¸ÊIL¸$ÉXfPQ!Tc„I"Å‘Æ¿ù˜Áû.¨b&aŠa¢a‘‰2Âœc®(QD?/3‘
tèÏuLZe¼ !M+Þ‚Çxüjž»¡ã¿cþ@")¢*bÁD„¢(°º,³¾¿ÃVÖ¿x¬ê–7Åí9Íúóý¾?ØÒ&í²<|–1·lø–v¶åêÁ~;ÿš@ cg0C×™®oŒÍò|Ñ`1Û+åœcï*µö¨ëëËÑÖÄbk™f·i»÷§ÎôdÜ,-@–“¿@ÙGõÅQâñÔ]š8hÔamöWk½3wÌíÌ"tkÓN9¥5nwŸ	 4twò>¬ú±èÒ#q¿n#ˆ—9zËtgu\Ø¨3©Ó°ó­é(#âÈ¯Åk(€ÉVU¦—û+œ@—a_½Ò±r"¥Ü>~”IWmsÉô·‡…$×h™¿Ôïð=ÎW± nM®žVËÜS&ÓÅ%°Æ“ïØ‹ÛêuÌx®$-Ò·Òój3JÆÜðÚó;óÜqÌ`á*ãpø†ÚE§Òk<6~´]«ýöUµÕâ(ÞO—Â½6›¬”4?ÔùÎÝœü±ZÊ!ñüI OçÂ¿Ìæ®ùsbÂš·)ÍP åoïzð"$¤­K¥tœ–ŸÈCu-ù+²‡²®êâþ,ûvJà.ÿÒ_8[ùÿ˜xœÏNÃ0Æïy
k'lJÖ5*„@â	àÀaš&7v¶HmZµcoO;íÀN¶%ÿ>þòÀ~MÆ¹Â–¨Éà´R„¨7ž-²,)F¯<‰N¥sjÃÖS©=IW²Ê¥STKå¨ÜÔÚ<åc7À¦È|â!ñ Ot¾6/ãiäñ3(]i¬ZkxJJá»¶9ó¿Ñv7T¼sÂ–ûr7•óaò¾ZÞGÚ÷#	ÑÄzž!Äo&ÈGâSÌ±K×í[Á+aŸ¯äÒ7Ðûn ˜Íe%ÄÇ\Ij3å`©F†»E¾ô<V³*œ‡. Žyü}yÖÝ*c+eôîQL·Ê•²ëÝâb‚›±Y>NÒ²aY_ª¿r?yŽ’Û•xœŽÁjÃ0ïúŠ½ÅZÉ„’BN¡÷ž×Ú•«bKÅ–	ýûŠÜæ=˜º‹€§}Ð8{ÓÄ3“›¦HF›9àdZ´Ö¨_Ú%WðžƒÅ‘dCÖxã‚ešÃ¬mDœ¢³~—#|&ÉpýiØ¯oO}(Û;\œAo<Ú:mµVíÝR­²Ãr’¾hÉm]ùù‚ÛqÒ³¼TçG4“‡7}iªú`.áÜZ'ÕT2Ä´Ê±e,R»•ªäð×m%§Zön-‹RÿÚJP’•xœ}Ž½jÄ0„{=ÅöÁ‡dÉ²ŽpEª.„Ô+ï®OÁ?‡-çÈÛGÜ¤ûf`†¯lÌZCb8JBo\ >vSgX÷–lo­é9…äÔ7^
xk'ƒ&¬DÐˆñz@‹ÜvIlìâàDáQ®ëo,ï™8W<M/wNÃ:¿€ñÖÅÖ…6@£;­Umç\
oðŠKæ	¾p\j:Óý—ýØùDü˜úØ;"<iS§êóFXhŽ¹ªbÉë’'ÞAªÉÏÞì3n¥A¢fZG®¸Œ¬ÔG®ÏÔ¬"Mú}þßXýi·`™”xœ…Ž=oÃ †w~ÅíŒMU©Ô©êÖ¡CÕsGBeÀÂ$Qÿ}QÕ½Ûs¯îýh•¤ã8í5ÒäœÚÁh3îQI¸Ù£ÓÓ0³ÕUÊŒJ¸0ïqVrÖÉÉÑåÉ
;"%½öÌ]Û¥Tx¡à5R†ãWÇÝÒñtG¿ó%=‚4J[i1ƒ¬«)¶Fž]Ž´À»;ç~ñþ§íºÑé×jì¨ÕdáAÈneOˆ]¢muž "ôÉ	ZÛÆ·äjã‘/å½ÖåzŽ|BÆ>þÒ°–Ú!Ô’ ßq¿DžJ.Kl—è?Ù[ìÈK|þ>ü·’ý Û—qßœxœ…Ž½jÃ0…w=ÅÝ‹¤kÉv%ÐL¥[)JYºJTlÉÈrBß¾&têÐnß9p~J&®p¼QÞ[ÇQöÞJoQò®##EÓ{Ñ¢e³É­Ðí`½–½F£=*Ù	1H×«¾3RºF“BfÖrIžÉ{x	aÿ¹a=nx¸9[Û4=‚Ðˆ\4¼åPqÅ9ÛÜ)”BŽ&ádÎqS{w»ÃaYªÝ£ºoìzxàb‹²·Ù™Bp:>Á<®çáJy	)BI j¡jdì5l5®JÞWÃ×îï{ìýgusÊ…øœ&ˆ×‰*;†jJ1¡\‚ýøÝûÏ{öÏdw””xœ…Ž»N1E{Åôh#?öaG
¢£ @¶gœíÚ‹ãMÄßc=Ý™Ñ½g¦"ÀÑ’²"ô½G¥ƒ„1Në‰km9hÄ(•t’­¶Pªàœ–Öó~
NjÎ

Ê8ŽÞHË•öÆL#³[=çO<GJpøh¸›oèw>/÷Ðä=—z
:>pÎÚv‰µRG›"ÍðjO©M¼ýÂñ²]h‡ôSU£™z¥ÜqÑªì¼]­‹s¬_Úõ-ÅÏ`·SLp¥r‰91öögÛÃšK%„PòéºPççØ-9å¦8GÿÎ^bb—CèÜ×þ¿¯Ø7¾#l{Ÿxœ…1OÃ0…wÿŠÛQ‚cÇI\U¨¨P™@ê€ûœ%v”8Tý÷¸b`€åôÝ“Þ»{qFZI´œ³º¬
…¦mXeeikj„n…AY¶­à\“IÍè#…µZ3Ž%-%«&¸6B2¥i#±µ…D­±3<¡µptèaû‘0îÎFç:ŒPTœ•E]Ë
2*(%I]Œ8ÃAy‡œTçÓ¶5çì–uÁÜàÍZÉºä„;Z$+y4–ušÂÁ¦Ó{~T½¾Àsð.&é:˜T‡iÌ‹ó¼önù1%¼úbp:ìaÖÎyB^\ºl²`mÖ^67"oßnà‰ìFðŸ#fzpÙ|\ì~ÿûOaò¨‹ñŸ*xœ}‘AÛ …ïþsomÙqÌjUíaOUÕËVZ©UƒÖl0¤€›¤¿¾C’STõ€4Ì<¾yâåHcßj‰4ÉQ*Õu{ÚtØi=h3Ò ;œÚa7˜ê€‘|jÅv³“Zh%-¶8‘§­4j„ìIH­F)E…kžC„Ïd|±äáñËÆqùtÔS3…åtÃ¦—ý®;¨ÛmÛVÜ]lÎá½%¯øæùö¨—â)­‰M—§ƒÜ‰Í(áCÛñÓêû×ˆt1ÃŸà)A¡×`ì	{qßüº(&sS½Îl.Ï	°œË>	¨ÕnFúµÚHrà%>£½@cFPÄ{™K§i!w¾‹“"rÖ¯'	l‚Õ£rT03K5c†àƒtN™–ÔÀ·™¥+˜r´<Q‘pëáÂË}2W«å^ì^XÏà´0‹§Ó¼ú}‚º¶Wç-;å•Ù.WƒØƒ:gîçÑ5UõbùëuŒ©Õùáÿ‘V?nI=@I‚ÿÈÄ°€ÿ½P=9[/Ágól§Ÿ÷Ü»Äï¯þDçÔŸ xœ•P=O1Ýó+<RA«¤×»K*„¨ÄR‰­Rƒ“8íI×ä”Ë•_)L,ˆ!–íø½g¿’‰@¯¤¶
•Õ•	ˆÁ9ò²njle*W;g4bÀL±€´Ô4_iß®¨ÂV7µÔfi¥kS!…6(jk8•cÊ°+t¦;šâÁ)õðÈª·£SR/z¢ûO#ÿ-\:Ýj*Õ2§^Âµ4R
îžºR(ÃÆŽzxÂCäêÖ¿^’ûqiáémL»ª´a¨b¨øˆã2)øH‘F@ïáLÙ¦‘ ¥KÂÝW‚}WÞ…Øxÿ]Ç‚ðÚõ=X‚!w±‡Àí77ü¶Ààoòù…\ì9Â¦”ÜÙ©°ØÕ~3ãÉ_ÝmdŽ^´yb;b×ñ%~žB˜Û÷õÿÏ?F¬axeÞÑ%^õ­¼üæýÃ@ñ	“7®!—xœÁN1Dïù
ßQ«d7Í&U…*Ä qà€ÐÊ];%¨Í®’,Uûõ¤…¸yÆ¿qIÌ V’µ5¾#ëœrDdäMÖÚAÛa…ž51aâX gX·Îå­·R±”Þ»nœ¢¶SÚ·V¡À¹¼	F#<á<‰a³û6–Ó·±=Ñ°Æã=(Ó6ºi;ÛÀB®¤Õ=†R8Á#ÆÀxÁ}¬jC§Û°Ísæ%ñ-j\§[ëàNªH¹ró<UL_»\b†Ä7y#g!žC=D‹ÑûÅî¼þYñúÓa•ÄÄ>ÄPB_IWt)á¹¯ûþ3÷¹¤÷o¿¡<'¾ Œ’ŠxœµV]oÛ6}ç¯¸À^V4R$YQl£²ÔÙfñÖ%]Š=PÔ•ED"U’¶“=ì·ïŠRý•¤°õ"@.ÉûA#kga„IšE“³Häç§IÉó2gI”¤¢§E°È“ˆµÜ r09+FY2J£Rdå¨ŒÒ¼Ì&…(x–R\”çYçñD0¾r•6p-ÕFk˜7ð¦ñn(›°ÀõÅ²á²…n~€8Å“ä|<:ƒ×Ñ$Ší6Ò940ãJbøRÑêM±ñÎ…]Y¤*>5›œ§£ñ„RcJejÝ`Ð©Üü?X"¥HÊ‚¨¸¡æ ¬ÑäÚ"4º@Æ~bèP
„ï1\†'pJËSµŒTü
¤…†·-à4pÈk-îÃYNý»„à¶’»–‚+È¿CÕõœš»Š»ÃRÒ²’€éÛH%äµü¡4º¡p„;4Š)VØEXÝ äVÓÓ×hÐñ‚;¾KçNj}ÝíÅ¶° ZjÓôqýM™­ôÆß´ëú­ZZç!ƒtü2ŸÍ®G`©,ÇZo ïyÓÖø*dÌhí.(ƒ×•¶núÏwÐeô¥ƒ5[üyW÷­Akáf•Ûë°±Œm}l»,Þ-àØ[­œÑuÆ²àÈàxãÿ¶Gú7Ûú‡ŽüýÔ'&Q<	¢q¨Í2ü„Íjºð_Í3ÉÙÇ„ÍzÆ‰Š§ð¿~))?ý18·÷¿kãàÇ¢ð½; ~Á´-¸£äI*^Ì9ðÌñóœx¬K¹Göîêú=zo©¿€@„µBvxFdÓî/óÌŸ×Éà$‡üìá³£§³Ï
çmq3Ÿyç½åK<¾ÍÀŠ„½ç>‡§!úŽžÁ•4Ä›Wà¸vnFB—pº¿ØF]ÂkÚö;ýË<€¶+œìÞ.’l¦)½Ã]á½…·~•
³[’É­ôYxRÅ¹*@:è¤Õö·½Ûl*)ªNü¥ZShA"=ïä³ 4(N`ƒ^—»ñ±7–€×4%éöë‡í`4¨j)z9w•Ñ«eµÕûùéoÐrW‘ßHš¦E Ë2È¦/™Õìã0‚§@K+=¢ïê_QQË ÑJ×4¤`;\(å=…JUÐºÕ_Ç½¿2èÙ¿ÐMEžxœ•KNÄ0†÷9…÷hª¼š4h„	‰°`í&N‰Ô&U›¸=a8+ÿ~|¿ízH*OÞYÒ³âÞ	Œ2Œž¸U³–JY4ÙŽå
³œ‚’FEN}zŒ:J'ÈDa´WRX?Ž:X[ý(¼–umð¼ï¸bÆ\ÿâ°üvn'ngËËàËöÂ(ÁPFÃg½º¥Zé€Ì‰VxÇ%÷ì>ïâv¶“†@wÔ8«Õä:*8g,¦/XÓYÁ—\¾¬s¡ø¶õ7°¦’{KÝ$\JŒ—ùûñ_·²Vfhxœ•ÍJ1Çï}ŠwÇv>·Ë"+>€â!Ó¦3…™vè´«ûövU<xC É?üHDÀEÏ;AÊ`)H–;…BÊì-Gê² dWU%q¶` ¡ÆZÊRÖ†ëÆ¨®¡&£âmÕ—mÍMßôÚìÚŽaŠ£ðè§)Áý²à„­NpøŠÅpéWœ×ä†BùùD[	.¹ìZ¸áMÅYVg#x@gi‚g\®úí39®i¥BÓçj+»ºÚÉ¼*8gµ«3³5g §S@§†àÓ“]#\)·òÖ´,>DÆžl¾«·Þ˜mÞÿŸ½|Síár‹4˜àg˜½ó“Vm ÐìOYw§™¶Ö«8ãí¥(FP#º6~,<‚7™µ¿Ì¼þfûã%ìm´œ’Ÿxœ•QMOÜ0½ûWÌTÙ±7+„(pDj¥V=LìqÖRbG±—¯__/G.U/£ùÐ›÷æMÙˆÀŠõfÄqìüØi…z”ä±CmÜ]¶ÊHoP#[q£X £Ö(§• A¶wÎøÎ;å{ò‚”V-öÒ{áz†ÇrH…^(Â@Ç8Ù¥*ëU¶Rìš™è&ã’ë¬±i¹©[Ñ+-LßD/«Ý%”BÜc4ÃOœb­®Üëgr“™GŸPÝ›Ëv×W¨¬Pöó|x;ûî,!ç§ZÓì2lÛ|þæ=3v‹™¤O?‰ÿJ‘Â…òŠ–ø]ÕÑñ
V²Á‹%¤Èe#‘+¡d#L£4®íJâÂtZ’¼çãûþÿœ`¿O.´íÁmi]«´ø²Ps {À8Q¾€úÉÃÆÓèÏW¾Æþl¦$–xœ•=OÃ0†wÿŠÛ¡‘§N\U¨ $FÄpöÙiTÇŽ‡ŠOÒ2 ÄtŸÏÝ{—Gç ÞzR\òRÉÆ	í­Qe•‘äKDS*Ú6¨Ù€£‹„­9
]j)8	oª¯K$Ï•¥ŠÛ¦j*ÁÎù˜FxJ!Ìp?0bG3ì¯¶h×ÊaÂ~šc[ØÔßPRˆZËRÂßJÎ–lßåìFxÄØ¹ ¯ØÆ%ÚÓùâ¦yr¹ªt]ÉF/¨àœ1$‚ì‰Ò9Â:#Á4C3c/ÝÂÓ&y¿1Ÿ;xÆ1»<¬2át
Ó”?þ†þs{û–¼Ó08‚øÑ»M—l…{ÄØºé–?gHBgÖ†÷ßKÿxû¾"›åšxœŽKjÄ0D÷:Eïƒ¹eý†!!„u[jÙ"¶lüÉ$·™¹@vU^QÛÂÚ“Qª±¬FIQSbºEg\[­‘”b¦…Ëä4Ö.úÖ¤`Ù*$gƒ—è¬2MÍQ!ë„Î	Ú·~Zàe¡§o´ÏÓÂpià4?ÀõÃ)Lã3ÔFÉ±ñ5TRK):æmã^©dà“ºr´K¼ÝÃuÝW>E¾«ÆÛF9O²>Tñ±2ôüß4ì¼B.ëÆaJ9ä‘HÇ¹4P¡çð•K'Ä{>fc5¥Tµ¿çÿ_—h–"xœ?OÃ0Ågü)N@ÐÊ‰“8®*TìHˆÁÎ‰¥ÄŽ‡ªß—2 x:¿»{úÝK´¦mKÕ
ÊkÁ¹Â–£6¥¶´.U0«Zn+E&Ñ'`\I®Ê¢1U[1fKUSJdÉÖ
%…a‚UD.©î£ô&xx’Ë"ÂN…Ítö£7:Œ·P4eËEEykZSJ²:º”0Âƒôx‘Ï¿9|ûy™qcð´ÊÁ+Ö
¸¦E^%^ª!á€#¦x#“„|‚„
œ%g„Ó°tÎòì²¥Yk×ê¸ý?6yý¢ÙÂr'¡Ãcðap©wúüûˆ›t/}‡óo/çš Xœ:‘ÈF#Æ.eP#ÕM),µ\®îL¶_¼N.Ã¥ &˜'ÔÎ:ýÃÖ¢LKW‹µ9³}—úyuõöûÒ?²%Ú¹®ò“xœ•ÍNÃ0€ïy
AlSÚ¤i;4$$€ÄÁMœ.RšTmÊÏÛ“Â´„þ·üÙi"‚Ò
Aª–Ú
nIf¥*”’—¶-‹F5E­q¢€×-ZmŒTŠ+äMÑÉŠ‹¦¥ÆðF·‚×U)Ñ
†K:Å	£÷Ü#zèÌ‡»ë×ÊqÆa^B¿Óq¸ƒB•­ªdËÜðJp–³ƒK‰&xÀàÈÃ3ö!Góþíçe¦¡uT¨¶–™$œ3ÞÚó2ŽqJ`3u—˜`0@Ö’N3øØ_ù\½þQ”×Œ=¹¼Âl£µÛîsÿ¯KØËpçMvŠ1DïÒÉé˜)Ž9¿Rn]ÔÉƒ>aèiÞ0¸H~z‚hÁ»nm|ýÍôÇWØˆ=œåæ	-xœ=Ë½Â0@a¡Hì€tt”gŸÎ[Ð¦°»)‚(¤`ˆ–yXX„TTïkÞ·ù4í<‰€°¸d…rU.%i #Ž´reô#9K¹îÆ<Éu,2—XµÄ5äÝzä¤I•|ð†Ñz´,-o™£7d—×ù ·ÆÜËý/8—N€Äç~óþK,C˜xœ•OOÃ0Åïù¾³•¤Iói\¸‰s–8k¡K¦&ÝàÛ“¸r{ÏöûÙr™AhÅ·,Xovu´S¡3!h-¤m•3–sÊÈÑNe¸§ªŽ	é¥3ZIFCZÅt+¼rƒ’–Ø¹ôi‚mÁFØâ÷®Ç4ÂsÝºÊŽQÝŒˆ›l¹ö—k`²Õj“pC¥¤VC)8Á£Žðj÷±º•?_Å&Ï—(—F	®M²%=ºwxË).ŒÃî„SR\À„.Ußpð¬UW„¼ôaøø­çùxLSù%¬ï6L,[ÚR*˜!O~0¦så•ÞÆëÌæ<Ä=Ìeo/ñ¦ÿ£!Û¡ï—)„åîóîO"_v‰Šxœ•Ž;oÃ0„wý
îmÉO1Š»yèLQT"À–
[îë×WíÔµÞïÊ*È#y['‡›AºAÜHozËV·„ê•VIÇíX5“Ó$¾nZYc`ÏlƒqÖéFÑ^îy…©È›$˜dO7¾Kžá¹¦ž76Úg‘ËFËVoGÎË˜¡Aì4<hÔZUw‰¥È
WJQfx¡[ªêìß—Ë¶orôòƒ¶Ž]k±¢¦¢êšy_jg*1§|¥ü_BüxòJ\$ïE©)Ö§þC8¸ÏÓÿÊ«orl`™xœÉjÃ0†ïzŠ¹k³¥Jº\…
½Éš™ÔPKF¶	}ûÊÍô6óÁ¿­…¼Õ²GjY9uÏÖ±G{'­"­Ék)"‹9J+0’dyFñ£¢è´ô†ÉˆlØu^u"lëW.ðXBÂœà5ls.§áóœ¯1O÷ ;eLçSÐ´¶mE¥Ó¸®Tà9¤‘¾á#\RýNxý;ÎË¶Ði—êÎ÷F;w­¬Rñ€ïãDy[kt	í>\}æDðR¸Ð´zª)µÑ"ÄÛX]±ÉÌÍðsüsñœúj’ïˆ;xœÌÍ	1@ad‚%x”Íï¤KØÃ$™‘Ù„Y¼ÚŽ`6bNïòñ~ÓwZz#™‚FF¤µ>ëälr8‚àtæ”XYyªØhë0&¥	Íì3Ï,‰Ë€ÌC:¤í¼vFîïë9–ÒÅXôµ¯e÷rg­¥õ×åðù‘­.›xœ•ŽËNÃ0E÷þŠYR¡VvÆñ£ªPÝ !6Y°¶=ã&R“ Äõï1ü»™sufnY˜“ñ&m¥†bƒœƒF‹ÊÖfôA¹¨ŒøO¤¤CÉë|h9iôÑhJŽZ³Æè•a+ý¼@Wø‹'èx›®©çùoõëiMJºÃù¼†q­Ù!Íã(ÓxçÐµ¥—RT:¥ð—0|ƒpêv¢ï¿á¼n+ˆU4Þjt¾ªªªâ2§m¬CæéÏDPäÚê•*òýáå½éúÝPïÑ~ÎyïÇÿõ?½hf”xœ•;oÃ0„wý
Ž-‚zø!A‘ ]
]<t%*6`Ë%·È¿¯Ò¡{7òˆïî˜W"@¥Ðá1¡VÒ¨®U:x´ké´>°›])fP"tª‘µ:_øV’C'l:'96Äì–‡e…>ÓEèi‹W7Ð2Á{I=&'¸®&¢S²s*·Ê-óˆV­¥n9ì¸áœus¦^mi‚O{e;úïßá”¶D•§ªZÓÕJ›‚Š‚>ØÛDy\b:ÀÙ{¸ü	Jµ7_ÃýéòÑ×Ã3cýXLý~	a÷ÃÿÊ³]Çkž%xœ•‘MkÜ0†ïúsl(»±%ÅK(	Ée¡Ù’Céa,Ö[2–œßq6è¥ä&iÞyßgFy&mŒ•Ø´²S®tÚ5JKSµrWIÕE'ekÅ„3…ªH—AgË«JU¶5Ze4ØšK©56Ê\rg8fz¦ GZÂÉôøÉ©×‰3ší@t“pL\Ûš8þ€²’mS·–ð½h‹Bðëès¦î1xà	Oo×öåýp“–D[Kk«ªÚZ«¦åÖ’[Exi·ÖÂÞ2ºwoà˜èîp„¢éáðø@&2 ·B‡‰¬ûË_pÇ¡,CgØK…ÕàÓæ€#¥	ÅŒò¼˜¼ÌßØ\°ù<Ä”!º³€§ nŽ#Ð«OÙ‡Ó¹Ào7!ÁKïM>­Ò1ñ®½XyÌO¢,ÄÑóÜvÛto»¯íWüþXÛ¦8g²g&ŒƒÏÞ@7c`Ž5l™˜&†L¯ùÏ¿Áÿùñ%•Ç’œxœ•PMOÃ0½çWøÈÄVå£M›i MBâpà€8¤‰ÓEj“’¦þ=- \¾Ø~~ÏzvNˆÐèºf¬’\²º¤-U
SºÊR]SÓT¼Ôª¬#£N2*
#‘óÆ)®dËÝÂDÓ(e[É©ãÈ¨“DÏùÜÇ¾Ÿá4Žº×A{;Ãá+Ý:9Nz˜æÐ&·À$WŠñZÔpM+AÉ‚>gLp§ƒÇu–î`_?‹ã4OXX\¥BªºZ¤ŒRBÂeÀ=hka}˜G01ä{p¨óœ®œ·7ô6„<øeÝEçvíûþ_®ÉÓ·™=Œ1e´àR`ˆ!ö>{³…„C¼,øê¨8ƒ9ëÐá–fˆŽÀOô¾]9ÏäÅÿ2ôÇùä-Ç”•žBxœ•“Aoœ0…ïþslÕì
Xv6Q•C£¨RTEÊ!‡ª‡1Àª±W¶ÙMÿ}Ç@“6jT$dÀóæ{ÏvôDPc-³ª,KYMj£ò¬VYA[Ìe†YÙâVÅFÑ“P„»ªÍ·2Ý2+‹jŠ*¯¶-Q¶—ˆ›}QK)pŒ½óðéDh´]Ó“3pÇ]¯B“gÕÚ]ÿ[7nøù®¨ërŸïsøÕY&øë c$ŸÐj2ðˆå·+už×a´V”J7»z_nªšKs.ö4ÐîoîÀ)ˆ ùóØq,Ó2á‰¼nuƒQ;®…ÆCMä
ã:!>·{‚{òA‡˜"¸9¥çë@°.‚'TpÖ±„ mgnižqM&Ðª‹$d¡w!Bpm<s¢z75K¤>·Ä®f–/#ÛV ­x£çbžˆmÊ‰BDitè„y<iÜ8é)
9FÄÎiêš~%eOj›tÜì˜ÝSÏÐžV¿Å[ˆs¡Çðbˆ!µŸÔÖÏav/
óBPnŠrÀØôsP|­¸W.xâîs"¶Âx&ezîµùÓ7½üMå¯áM‚6.ÄIV§}B£Õe
`xcÙžcY>N9‡Îå	äØÁ»Ñ¢1Ž÷ïª£Ó6Õòñ{/Äƒæ}¬V®mWòÇáÿÎ‹øºƒ¤|X¼õn€ÁYgtÔH¶é§ejj¿øíuãœ/ñJlÈš"xœ•QMK1½çWÌQÑ.›ÍvwSD-R¨"-è¡ôÉva7)IÚê¿7«‚àE¼„™yyóò^¢G®„iŒ4šÕHuA+ÍTEU!yÙÔ%2ŠN•nÈ^x´šZI©VLi•J®(eH‹*×FU:¯Ô”r^NÄ!îœ‡uÄ#ZXãÁ¶j‡®‡eR½
ŠæMÖ#Þ1„„eÊ×@«‚ó²hò.ržç$M‡.Fôp/l‡=¼ŠÖ¦îJŸ>‹›p˜i©¬âuÉž¨4QÉ­Öð„'0‰§8Ïó%HPÍÓË#B‘å‚gô¡qô7?ŽçÒµ°C¡“Rë"ØŸ-{w"V³«‹-<`z…ˆÝ¸ð0Hô#V'¬ÜÂ
÷ÎÇÎ¶pçlÄ·kœ¾®Ÿ­îç„¬»äCOœ1ù>û_^dóÃ<î˜ŒÙã€“Î©˜)P;a[—þ.‚3ÐwrÄ·¿EÿÈ–| ™<³Ô™xœ»nÄ E{¾bú(ÞÁ¼<Ò*Ú"U”.EjC–ÈÆ+Œåß›îÜ«ûh•œ³)±ÕnÄ¤&&¯‰ü¤ÍØµ%q2!j™ÄÃW.ˆ¢99íP:ÉÓ¬õ¬ŒKÁJÃÎÓ4« üÑî[…N	>3¸þv–Ž·3†!lëH+	%’AxEƒ(º»æÖ¸Â»/™øö?¥«k<ÿá¶;‘ŸUeÉi5¼ô	âë±ä+Çìá(¹ípÖçV¹TöriÜóeÙÀj˜{4õƒ¸ñ‡Pc•xœËNÃ0E÷þŠÙ£”ÄØFªkT‰ëqfÔ®œ¸¡?ÀîÌ‘®î­2ƒ’J4Ú¨¨¼Œ.XÅÊðì-!'­ÕÙ[qÆÊyçf¥×4ÉËla´“Ó‚½eÇnö£Bmû(ž*f*ŽØÎ¥2ìÃMìÎ7q¸Ò²[Êé¦Yz9y«£GÑí)mWxÆœøÞð=÷kO×?8¬måñoTõÁZ9wãÔ£âXS{¬…Ú²½à‰!––	øÂR„µ…NTê}'âKZÒ
-ærÍB¼¦Þ@C‰qßÿÿBü i!nJ—xœ%Ž»j1E{}Åà6Øèý ŒI—.Rk¥‘W±­5’6ÉçG¶«;Ãå\N¯ˆÀw–úÄ•¥”«h›iTÜ1çB°’Z%ÅDn¾béÀÑ	†Z³àÑE‚²V3êbâ&%íœ AxÃ‰_û¼TxÇÜg8®-Ì°?O÷<œ±¼ì–zz¦¹åVHg`K¥$,×kî+¼ù’ñ_þTÆ·¿ãÐÖ†»ˆwThg¤°^((ùÀ¬6Çõ)ÿÁZZL„<Ì}yf›—õa¬€–SÅ-Cªßm)Û°!äsÎêc«ÁÓ"ãF	£Då”PŠEe}HÖ0ã'&­Âb;òÇgŽ’xœ?oÃ Åw>ÅíU"0&6QTeèØL:pØ(6D+J?}IšvîöîÏï½Ó•LmÚô$¬p¢ijÑJ$Û¯„â\éÙ3Åä¬0Jë¾Aã½·²Ö‚÷R¢R¶ãèdRt†áZÆ”á„k_!Á{šfà0O?ò˜ÉX¶6Í¯ vMÛìT§¼ð†sV»s(…2¼a4Á'±Vw}ˆã².´utGåNw­ìuEEEïÙÉ¦É–=dºLh	"•kÊçmÁ<Pk(ãoo“â"=GŒðL°¬™ Œ Øz3„ª³C:0äÓ}+ßB $öL­òþ~„z²Û$ï7æ¶ÿïSØ7³U‹ž—,xœ•RÁnÜ ½û+F9µjí‚±1¬Ò(­Ú[o{ÈÑÂf¼&ò‚e Ù´ê¿³ª”JU¥r`Þ¼áÍaC^«FÊ‘!Õ´&TJ-‘Œ²fJ6„êqj°c¢XÕ†6ÀÄY;I°N·ÝÀ%‘ŒÊVñ©íDÍ±%JiÊ&^¨f·Á1àZ8b´§qF·À·ôê­)Õ‚xïÕÙ'¬Ýù(¯;!ºô¼#’"eÏ&Üà‹²xP'›n·ú9î}ôXiÜ©ŒË®aB&*MÔâs<Ád.­7©VƒIú•½î~vqÑØÀ›Á$`50%ÁÞÙr,Š?X¯ªw¼wÃ#Ž¡·øÜÇ„óæÍ•wT´)kRÒPù¶€´¾n[êŒu^ô9eýwÜ÷
$B$?r¸Ù+n%d‚Ö"çæøiÚÙg³ñ£1I:RKÊÓ^ËVZ÷Oj‰ØgGïþ5`ž/wñÆŽ1˜åÃ^TÍàãºº-ÀâìéÂËŠï³Ë.ÌIäè4zH'õ6	ONï._=Ï"|Q³Ó¥›¦rx9üßŸ)~eÝIžxœ•;OÃ0ÇwŠÛ¡‘íTjE%„„X:0 ?Î©¥ÄŽ§ÐoO
L,ˆéžÿ»ß]¡áÔz«ŒµëFX_l¨2’!†.DíC£hM3b* um×’ë`­¤ÚÎãh‘s)4§Š[æ`š˜¹œò¹ëfØƒéL2ÑÏ°ý¶U{­ì&ÓOsj+—û;`’KE•
nh-(Y²},G8˜±ƒÓ¦%Úú÷/g7ÍV¯R!µºY¤ŒRBöÞÃ£_˜c¸ÀýóèÓpÈ½‰	žâTà8C!Ç¸ó«ÂÊ^6ÿb&¯?(±ÏgôÎ=®bv¥«¸“I-N·°ü¯@ÐE{mxû½ôÉ'ÑŒz•xœ…¹nÃ0D{~Åö,REÒ0#H—t)RóXI„%Jà‘ãïCçÒììû039"‚’œ
;©¡Â2!œ³Ü--ŽŽK9Z£Ô Í@1dà7ƒëF)%·½4hÚõõ“£ÃÉŒŒ1í3¢K^ö¯èóÏ%Ù.wóÐÛcÀõ´Çù
lì$¥Šu4TPJì¾m>gŒð¢ƒÇ>ôêuq_Ë-•„'‡´•z©à‰²Š’”£? GíWfH‡¶˜`Šû“6ÑÛ{ÉGÉ„¼ùp?Ã’ó‘Îm;×Åœªw[ÉòÝ„ÏÛÇhìê[ŸRÁÔÖn‚¼ûšÂ5û45æçü_?òarÒš xœ•ÍnÃ „ï<ÅÞÛDø'ØŽ¢*ªzì-‡«ŒjC8iÞ¾8‘Úso,£ovfs$ì†®m3ôàJŠ]Ý¶ÈE_a+¯w\éŽ¸©Ù#ù$Õ 8R×JU“”Ò 	BÚUšÚ
ûbÇÅÀÃ%!Â)Ó…<œhñV&x/[IU¼ßNDÇ„s*ÚV…ù*Qwƒ¼ià‰œ³ò;»œ)ÂzG| õe:èëýqLK¢­¦mÄÐµM?´*(ó—™öðºX0î4\¦3~N%R58> F»Ìk;ëJXÆÔïe§`g}ˆôÐî8ÈÛJG–ÌøEpŽ.D—oÃ*ÜÅ?SãbÊŒåÑ%P#zK
/è&”A1ÖåVéLÊ™²qm^Cð(oa^"=ƒýàêòø[†±SIIzŒÙÈÛþgg?YS­ê—xœ…1OÃ0…wÿŠÛQ+'NU¨Bll00¢³}I¬Öv°/EðëqY˜îžtŸÞ{Ç™ìÁêé0*ãú •4¦i°ÕÚtco‰ÜˆV‰3E†ª'×JãdGTòÐwRv²E©´t¦·C«†µÀ—”á™</ð¸»Àñlnót¦é²Oy~€¦oµ”ÍÐhØÉAJaSž™2<aôt7œcUG÷ù»œÊVhïè†ª~:¥G¸“MEE¦®…³3dZ3•Ù§ìÆ°B!~ŸyË$Ä}l>ðBà#Ó\½þ†`Íéê9˜j'^|N€×ä`üÁ—€l—zPü÷Í¼æB¡ì…xõ5·Û¥iÚ™¯ûÿ>"~ N/‡’–xœ…OËNÃ0¼û+ö©ÖNœÄ¨BâÆ‘GäÇ:µšÆ‘½íß“òœfFš‡†tnt]? BãuÐhê#¹QNùèb;ˆÕZ¼V^u®'©¥¶³Òx©½whwA:ÓêN©VØÏ¹À%>ÃÛVýŽ÷ÀÓ…ÊBó!—éd¯FDìQBƒû¦ðùzMÌTàÝ.‰fø²Ó²«cøù#§ºU:zDÛÞ];xB¹GEL7¨Äß‘,o… ærµÌi™„¨«õT3°uõÖ½sNËvŸÃî€Ê÷™B|¦}&49ÆÆÝ_þ; ~âgÑœ&xœ•‘ËnÜ0E÷ú
î‹qü¶<iH"ÝhA”Dy„Ø’¡G‚ùûÊI³hºº’®¨C^’ÑjÕ·=¯[ÞUªÚf,ë~F!¡:ÕiQR÷[Ñ“ U­e[‰7X¶5åð(êWZ£ìF>ŒÔŽš†)‡7Ï	¾®+ÎhÑ¨‡×³˜¶ÈyÀ%$;Ò-_ êë®ê»®©àSÙ5%Ë¯‹‰‘<\¡54Ã/œlVõür9)P¡hC›~Ìö9ÏhU–ŒÙ§…ö€JÄ¥‰'Xré‰–­-3Z!­«ó‘±o.DNÇçÜ(˜ˆGàò¿ý.{´ÚLÉÓÙ¥'ŒtvE3E‚k«’G+	n¼Kk€íÿŸ·pG1€±Y³M†$Â)DZ
ÆîLîJíœÖ;qÚÿ×ðÞ³ßÑg÷p±±px|•…àõßØýŸQîÁÓâžHÁ6¸q2Î h'
Ÿ!o?‚Ó0±…ÞWû`=ì7åqÑÙ›"xœPKKÄ0¾çWÌÍƒtIš¦i^¼úÀsÚLÚ`›¬É¬ÒovQô6ÃÌ÷¤„(VVàÐb;pl”«…r¦vh…âjè¹îµl;˜„ 7F¡…æ¬µVÎ"v=ò¾š¡õ ÅX3s¤9&¸5ÁãÏf
˜àÊ¾Ÿ‡›|Ì¸³x¢­5—­”
.yÍ9ãºz"üT¶½nd×¨(P6a¨æ˜)¼†=ÜãßžžînáÍ,Þò1ÀŒÇä3ù‘±Ç½€Ï0!‘PòÓ„	-¸’æüyË„ë™™åã8ƒÉ µìJŒ®’Ròª±²®d-õiU’—±op'Å–í§+VÍ’ÐØüzXp-]£Ý}… ‚û¶Wä<Á°Äñ%Z*°g¡	lÄ.)Ž.ÅVj®Ü·w³í{ð¥N[EçöUÍ> ²´Ó’xœ…Ž½NÄ0„{?Åö(''±çtBB¢¢¢ @k{XäO¶âíñ®Et³»óÍNŽD`ÑôÂÊFJmQ‹ÞxMÊ·¦S†”h¤¯{©:Y³#-d£¥õ‚d­­’Mï…¦ÞõV †;Þv’DÃpÏãá%Øi‚g2!ÁiŸt.ú<Ì¦ƒ]ç{¨U£:ÑòVAÅ;ÎYÙÎ!gŠð„K(øK™Nîû*ÎiOtptA[ÕVk¸ãuAÙ#¦JÀ6Që’{pŽ¤}ÛÖ˜Á—VfJùâšqqéoÇ6íC(ï·ÇGØ7WN"¥¯*Ò¸å|°×PL®Z½¯ÌÏñ¿òìâý~;’xœ‹ÁnÃ ï|÷*Ö‚aÁUTå©§ž{^`m£aÒþ~ê]æ4½1KM6ZËJ)P3'Cb¢€.Ç¦	 ÎâAk—ÈÆ%Ôf4£ƒÒ-ù‘"Ìä“Ñ“Ÿ=ûº5ù•ãJ|—Ÿò.Ï%ßxX^|Y
åû·ò!jtvBò@¶äÞ¹É+Õ|äß´ÔãÓï?\öçÎCâW:âäÌè½|u¤¢äØ¶zª?…‡õ]Î[+Ô{®‹%ÖI0!xœ•‘=OÃ0†wÿŠA¨Ñ%NRS*j©HAÄp±Ïm$Ç‰§ˆÓÂÂ‚˜üñêñ=w=3(”Ê`iÙVUÁ6ÍPÎ/•ÆUjÊRUhæJtÔ³PéÜ`:ÇRë\£¦L[©±@‰¤Šø ©²Èmž	Ã¾íá¡un„Û®#Gžj3Âò´&»)¹¨F¿KtÛ\CZf…”J%\`!QÄÛ¦{X“¯ÙÁ–v>ž–æã¸¹ÆÃ*ËËy.•ŠhŠ(„?4¼ 2šÑ…ºscg(0¬èyˆÈµû§ŠBÜFnóÃ½œ¸õw¶yYŸƒBfÂî·°:bGš¼«§;X­·4@}_7Y‚ðÜ±N„x®£½™µÖÎªÏÅ¿†$Þ¾{_Dý¦=D©ÓYÝêà@ïÉïx¸‚ø]Z®®¦øýwÉ?æ)¾ z±}› xœ•ËnÜ0E÷ú
î²hcÈ²G¶‹ H¦m‚ y:‹®)‹°%Ã¢‘´__¹y­»EâžK^^ˆ ¯´êkrû®6mSÚÜé²AÕµ­VN–ºî˜q¡ÀÐvÆZc%’ª”}×˜öZ;…¥mU…Ê©²¸ò¸‰ã¸ÂÕ<ãˆ½]áâå-NÛä2á”Öp*ú8}…R+ÝèVÊ>É]%EîNž™øŽÁÓ¿ðòïÂ>ý+.Óš¨°´I+Ý5uÕ¶YZJ)„óÏ`bdÈ›³gC‚…N>m¸4Ä'ð†uÂÛhÑŒ..²·ö‡Û‡ëGÈ'ì??î^ªûýä à-&ÂÌô6R
gœÖ÷È”ÈîoöŽ×¬ö	B¥užãÂdøvux_.eŸ£0þ·ÿxU~†íÈÍ«âès"ö<:wn~ù¯àÅ_²d¯‘)xœ•‘ÁnÛ0†ï~
7¬	Ûqâ¢º9ÅP`m±%[EÐ&í°-C–ZìíG9Y7ì2ì$‘âÿñ'å,3ÊaYå*AZÄTfjE¼¬Ó2Î’Šë4QŠkÌ£-÷/˜J*¥’â\å¥Ê1+NÕ:Ç,[/KÎ$Ãzw4>™¶õða°Å5y¸:ó&¼\Ø¾oæ•éÞÃ"‹3•¯T’Ã;µLT$ÙN;Ç6ØknaM/Ñ½L—ëÑ<'Ò$ËWi²^‹t¡TGì†Û‡b÷j±bé^¬vØ<ÎNâñUâŽ¿d¡Œx°ºBm¿ÜÀè¬¯œY@Þ¿û-ÿ:ñ÷¯üâÌ/Îà Œ~Œu ´Ú:c±áh‡Ô2$Á›b³OŒÍ>y;„Ý™ç“3ßLÐ?w|áíA›?L˜º9LþÛoïnwb«ec43u=+\þ×ÇDç}_Êƒ‘Sÿ™6•k¡š¶6^€LëÀÔÐê2<?ýÝòýìfÛEžxœË»nÃ0…á]OÁ½ˆAëBÉAPd(Ú©sgZ¢¡‘ØJ/o_¥ÛðÕM†ÑG±Ìˆ(–|BËfÐ):öÉOÑùÀL¤n¼ÉR!„(fˆõØ[g´Ž=N¤qÒÎÆ¦ÐÅ÷zY7xÏñÂr…7ó§’?¥›}žçk×ò=i2œC8 GTí-¹VÙà…—ÜøÏK[§ôýçý¾K—äAÞšà	ûFUN‡å«ìRðš$Aý½­JýéGŠ˜xœ•ÍNÃ0„ï~Š½£FþIl·ªP\¸!*×½ÛXJâÊq}{RúÜffõíhj!‚µcÔØ±–YëpÉ´LÞPçµWÖ+ÅÍ´aVŒŠ{é}”Ê÷½š±E8èÖv²çÐu×:äçuÊZá<¤’G‚ãò–‡?]&LcòôÊj«•qÎÀN:)Å–N©V*ð‚s¢>ñ2oî¿ÿÄiûEM¤;jìÞµÆ{x’jCÅÇBðöþúc[à\&¬°\)$NŸæ¥FÈã×ýS.×\*öiLõÖqN[EÜeæ];üc‡øœ^pÖ—xœ%ŒÁNÃ0Dïþ
ß‘¢Ý¸vbT¡gnÑf½¦F9niÿnóf4¯í	=#ˆg7Rp6òéAÓ áÀFR+ÉUÓ<Ã4€i†8õh=£0¹Þƒ +ºÖóRô[¡Ìi{/tKYã?vëÎåºäÇ½›ŸI.]¡ïSÊµ%^æ®w`Ñê'°TkçT«ýJ9ÉEÐWnt?{8m×Mº Wãüp0ãØ®Í¡ÔîýÌ·YžuLw	º>ÖE©_H†Sýxœ%ŒÍnÃ „ï<ÅÞ«X`~Œ«¨Ê!oCÏ,1ÆÆI¿´9Œ4ófZ%‚H3WV{-4…àÔˆj’Ú“äz5ï­³Ù+•H^rì
Â99›ÈGçDŒÄ½rÔJ‘
³D†G[¶
·c_êÑà¶¤ºe‚óþû;_î+¦<ømýaFmž‡Ÿ8g®©5ªpÅ’(Ã7ÞKOçðú7—þEC ¿©4ó¤¤µðÁEŸ²Wð§ò\ébúÃçä<ôÃGÊØÒVÆ~1PŽ’"xœ•[KÃ@…ß÷WÌ£b[²¹§iˆ¥‚¨Ð„	ãÎ$¦›’‹ÒoÒŠ‚
âÓîÎÙïìÙÓÖÌÀ¦™yJúlg,Ù5Èö˜lK*7@ÇSÊe—<±ÇšuèZ&YRJÃqßUd³£È°½L’Ù–ƒ6ªÌØµÛª†eU–„û=–¨± f§u’Ê¼Á]Óé|¢ªÝ%H×t|é{†c¢ŸîŠ¶å®P\ÂsÝŸfôvÜÌ›®á	ñ€ZnàÙ–? Ò0„Ð¯;$‚¸­jÌÌ!Ú²z¬·"(4Ü­o!êß@Máo—Ïâ$:ÿ"6uÑòVŒ4Ð¡–‘8NáëŠèÍ`Íu‘@}zÇEŸ—ÆU–ŸÓÕ"?~;µE3¹éj“ÆÉý*\.Ò$\¦Ñõ"º¶:‰qôS|úžâRÅ;™'°è’*xœ•RMoÛ0½ëWðØ`aËŽÅÐOìÒíÐ	ÐaZ¢a¶eHr·î×ON·Ã
CO"Å÷ÀÇGFOõJjY`Z–²*šRTœ”^×FÕ4¢\¯Íªa#z"À&ÏyÍùZ-ŠÂAM¢T57Xq^£Ð2×§xt>¹®›àj±Ã­žàâåÍÚ¹r°ÓÐfÊõ¡|%E±â>ä«2gé··1’‡[,upÀvHÙ…þq
.Ã(Ó4SKQË*‰MÔ"ÏžzÚ j7·8œ‚Â4ŽÎG0IÝÁÛHðHÞQ8!öä­y†›Ô7¥Œ]iMúJ<ìÑ[l:‚­ý•Êw?GR1÷®µ
;¸îœúÛè<¶;lÏîî¯·»›[¼~ CÉauÂÃLxØ-Î_i?ËóM%ÐØØ¬æËþ3¨±áÍiþ2Æ¶6Ù¦—Î˜eó¼y×vØ×?¦oÀSïžÒ³ÅKëTì2êˆCKá|v(¤st3œÎ63ôÛëöÿY*û|Þƒžxœ•OInÃ0¼ë¼1´Y²‚ H }@=Ó"å°eÃK‚ü¾rû‚^8œ!fHn38fCräM M-*)›ˆªuFje›èˆ‚e3.œ7ÀÔ*m“O£Ñ^“L>×¨lpÎ’ö†Û:Ö÷í>-ð9ÃóŒfìi‡ËVÝ1¹®8®{îª8ï œ®]Y+¼ÉÚHQÔ±ß6^à†¹ç¾±Ë…]èùÛ\×}åŠø°¼5MS¬å!òcä3 <xéÓŽ0Ì¥ÀŒñÕ—:M)Ú×ù_·Škþe°˜xœ•ÁjÃ0†ï~
ÝG‹;ŽSÊè`°ØaÇ"GJjHœàØ}û¹Ûì"ýÒÏÿ!åÄÎ²òäÑÔáèc¼¶JyæN÷¾eÝ´F8ˆÇ•½é•­ES5ÛÝoû®ëŒ“=	K¾­	>Öy.ð¶m8cÄ@Îý8=ËŽË^âtÖå”m´í•^d«¥¨Û%äÌ	Þ1žá§X§3}ÿŠË^v>?£5Ùí\*)…ˆ÷…O€D°gÌe‡¼§ToŠeñ2VèZJ ÀHpçÆÇuXHˆÏPñtXÇñà§}!~ ƒ»nÊ"xœ•PMKÄ0½çWÌQKš¦mvYddÁƒ¸ˆ™M&m1›–6Ñõß›]EÐ‹x™ÌGÞ›7/ŒDPZ!°4J!­Tªš¹ªy)e^Õ…Þ!ò™’ºdŽäÈBVÜjM"ß¡ZÔ¦ÔU-Ñªz—PÚ(ª±¬ÆÐö#\÷ÎEX:ôØ™‹Ï7kŽ“å„û)ú&Óýþ
òJ>«*Áá‚—g©»ïB Öè;rð€OÕÂ¼’å'Ê¡E5«e¡T‚æœ3æ_÷44Ü4 z1v:oèâ+ºT¥	tKúeJMh(€ëÆV	Zúþx³½=qÜßoÖ°9qüÀâCv„Ø$Ô0G¾	í”ÁYÔ¡ÿœ%þçÄ6zºÞgŒm»t‰¹ì­½Ü½Ïÿe{üòaq0È€î} Cøºå¸ëìü$œÆ1ihSê:ß<ý^û‡¿ìçM¸£–xœ•OÍJÄ0¾ç)æ.-iš¦Í²È
‚àÁƒxH&ÓÝ@›”4QöíÍª'/âif¾áûË‰ä¶HˆA£•jDÔfÒ¶ëIÚHÎ-’“³b›I2h§…»‰[;ÍÂTªD……%MˆÝÄ;åzfJ¾ÄOqY
<l›YL0Þ8~Ïö|ûœv³î%œ[Œë=tJôR*¥Üñ¡ç¬¢«Ï™<šàisõ:º¯å´—ZG7j¯ô(ûiªÔŽsÆÂûJ0Îw5¹Ÿ¯€1äTm«ÂžSÁ\h9ìasup;cÏ¾j»&Îsc¯‡U`¯?É°Å”ÉÁœâ
·,.¾Ycˆ‹Ï`“	xyûíöGQö	!‡‘“xœ•An…0D÷9…÷(!!¯¯êWªÔtÑµ“8€‘¤´·/´'èjìyË“w"ð%ç£^rÙY´r­àØ+LÏµSÂ„À6Ü)fpd¤’]«LÐZÙ7ªk­QÚy×J«ƒÔ(á–<®;¼­ó\àeÛpÆˆ“/pÿÓz¸È#á’Jj·.Ï t£¸ìµ‘ðÄ[ÉÙé.SÎ´Ã+Æ‰føÀ!žÛÝ¿Ã#•Dµ§+*uoÎÏº3*8g,~.tƒ0}A	ÂQÍë )ïÅå²`ôÆõ8	\ÄJŒ½Oçe_­!Töûö¯ìæm7—xœ•OKKÄ0¾çWÌ]vIÒô‘eYVü<ˆ‡I2éÚ¤4©â¿7UO^ÄÃ0ï1e%Þó¾#+Å —dŒFnÝ L£U--;!ö†-¸R,à+â•S¾m¬V­¶®u
=’¼hõîI0ÜÊ-­ð˜¦iƒûeÁ	#·Áù»Ç¹fœóÇ£MóD'ÝŠVpÇÛ†³zC)´ÂÆ@<ãëvvï_Ã5o™ŽŽvjS}U3ìTÁ9cñm¦ s0‡œC¢#åµ¥‚%¤˜{
UË’÷óqúWdöò“änMËB¦`vk°7Œ#å×ßò|Â>õD†’–xœ…ËNÄ0E÷ù
/Ahª¤MóFh$ø,BIã´m:äÌß“A,Ø±²}å{|åÁö\:Ê„”Î[ÑR%Dï[Iµ²ØiM[ÛµÆ“‰2´šyÏ•ÒF:.¸¶žQ©‡^bï¥äTð^K©<1%O[?å	ó4‡R+ÕUøÍõXÆÔ„-âi97ãœ§b›a[ï€	ÖEYKaG{JIU×9gŒð`ÂŒ<™1Ôéà>šcª°ÆáÅÚ	-y§ÜPV­ä~2aÄß¦ŒìÞ°ž³%Ó-„zS–¾üØä¥!äù¾‡rræb+¾&J¼”à®®ÁÄ±¬õ?é…<ÎuÛí6ïwö¼ÿ/)ùôŒ}ÿŸxœMOAnÃ ¼û{¯jac¢*‡ü¡Ro,É°ÒæõÅ¹´·Ý™™š‰@O\ŒJ*'f9k>‰x‘jà$&T³2ÊÚ9ëvÌ++™ùlH
;ÆNRp¦¤fŠOZRrIÊb‡G]R¾ëBu	ÑÃU¨F‚½ýCoG¡\ú˜2íëOïC]Ý›´}Àpf6)Éxg3c]C·P+e¸c´Â'úØ¶«}¼†[if½¥SÊ/JL\JxcC“v÷t¾`)[À5ø¸uçÍ¡¤#‚ä`ånTÀå´µ"+A	ÏvÔÎw2Á²P3ÆâšÃJÑ×¥‡/Ê¯$}¸®	(–#<qº¬€ÑBL°îà1kôÔwÝ/té‚Ÿšxœ…P=o„0Ýó+<¶º‚ §SuC×N:TU•¢B@Ièýõ§Ý:ùùùÙ~vôˆ€ZRUÐ®”’­©KYÚqÙ²¢AÙñJ×eÕExt•…)+^b‹\sd¬®jU4ç\tŠ+FE%;$bÃìÁØk0Öõpjº¶eeCØóÐ‡ÜÍ—qË{‡Uæjž¡àEM«ªd2ZSJ;ÙÑÃ“pGx½KÙI_nàÒ°\ãÞÊx×T¬má@‹ÔJžÅçî! Z½[ÐiØŠ§´ÌˆW+G¹Çù²ëµˆŒŸ'Q[÷ »\„°N{5zá‚IFt} Î0‰¨°nY#û`¸9á•5uNÈÛ¯ß#¬KZ€Ü×„7o{púî„ï×)½<¼“›Ô:›ÉävüïxB~ fµÉ›3xœm’I›@…ïüŠ–r´š½‰’hØì±ñ:¶‡KÔ4fm/¿>žDÊiêXúÞ«’Þë9¥ÀÄ«‘#9Š5URH"%šfJºBT“BM×°$A
æ´êAŒe‰DØ”Õ(14‚%’Äš˜&B*B2‰1’ùÏ'D	$HÅ”dÝÐt#6ô<‘¢iHª†I$à¡Ïj\\1Z€N+ÊÁ+NÙKYWuù­æé/ðüK7ÅT%0„BT—%ëû';cýë@Àªæ´)î/)ë³|{ŸÈÒ&íX
¾~ŒíÍæØÌ6`?ŸÖámçýÝ@ ×ÎŽlË²ËÚÚÛEvÉ%ÉÙÙK#ËÕõ¨ðùÕ²ÂÍ­Å´œÜšIžVy¯vwÞE7,ÄêxoOÙëUÍ0qÖnÏÌvÔf_®.ëpºª³¦Ÿäj@×µ]r–ÞÊ7ªhZ²B¼ËùòUÜÂÛà·Ã=\øõÑ¹ÚG&OÅ–çÉúÌ÷,õ€Z®l¸îãÐ:üšæI[\{„mÆÎå¸Ø:19Nƒ·q8Œ3{>¬Bge;Šr7®bÜ¾š°|ßœ×Ê±ÒZéì3{{€¼óta
2]‹G$Ô“õqQ ]ÅT=ÊÓf7)·þÃÚÖ³åþ¡¸dB¼ Ÿ&kwmgKE >ŠÚI~‡oN†”]ç•iz¹#úñvŠù–åø¶ÓúóS7üv+Ïqrg§ÆäCýS ?ïâûBø—™¸Ÿ'&¬(O)h†¢ œ¶ízðE’$¼.Á
÷wv^ó‚U©ÈÊ†×#ýý¨ºß1í"A¨Æ’~*õÏ:ö{zÔ	ƒ=ø¨®â?,ÿ%“xœ¥»NÄ0E{Åô°Qœ‡7^!„è¡`;º{œx•Ø«ØY_FÏ‘(hSž;º<3ƒFÂÆ(ÛUÆ¶¬ÉI×¶ZªšÍe«Z”²T,Î8sÈ`±’dPWqû–P’³e©KÒºëš®«Èb'‰.yˆ3<aö˜àñôõ9>ôp7m¤ SÜÀÃ›5…‰Ó=¬™J5ûºRpS®'V:ùœù."\&>ÀÌM^åaô)Ctðú|„k
+ÄËïš /èG¤‘Á‡Mù	ÎãÒûpi1Ã
1oÊW×%±½6çÎÏ)B}Øî¢s;z?üaŒøU‹¦žxœŽANÅ Eç¬âm ´ŸRŒ1Æ©3uòhIù`€¦ÿïÞV›8ºƒ›{î©™.Ötƒ49ZÔNË­¸ª÷š„zì3Å
N	muNj)Æ©#T’ÆnÐ’SOï¼8Åp«KÊðJ¾.ð²•iÇÕœù¼RŽÚ”ç'Rs©U/%4\qÎ¦t½úZéSöF°”Š&8£î°­Œ_*ìXÀä´R„¡?/5Ü!{\·üœ”>p†H;ä_î~±º|“ÏõÙ™ŒqZZÆÞýÉ6É¹ÆÜþ²g_CzÁžxœ…Ž1NÄ0E{Ÿb.ÈqœÄF+´B[-%';3‰7gåu$ £¤ä6îAhˆê?}ý/½œˆ bY5]­;Mš¸íœÔÊ WRj´µi¬uZ+qÁD1ƒQNig2wÄ¤¹õ[Ñ·¬k£úÖ×ÎJÅ×<.	Ž#B`wÚ°ì7ÜÏ4»3>Sé—ùªÆXk´lk(d'¥ØÚ9äL	î)äîÖ«a7¹ïÜO”"Ë%¿\‡GÀË5…˜å5Eð#ùIˆ‡0Dê‹…¹pO7ðñþòùúö§ÖÏù?*âh#lá€dxœÁÁƒ0P‰êŒ`'ñ·3'qÔS…t+3õ½gy–ý:#6P¯ƒÑÄ•º	Á8%f+¥¡‹jÓ›¿?ãsm‘8aLÖ„ÑPô†(-<7¥d÷þ^+IÕœõþ}ÿQH þ3xœm’Is›@…ïüŠ©ÊQåh˜¥’”#²@Fk|I³ 2›X,¤_Å©ÜÜ}yÝý½Óë¾˜šÉµÙCNtAÒM†¤!„Ê#I)±P1šq¥¡­¨z–@Q(W1Aa'‰yŸ©ÿó”9›éwLJÊ‘Lô»–”©THirs‰4ÊˆB‡>«[ðD«\à@ÓJ´à;¿|ˆÇnèÄW.~D´{chª`„
«Ë2ïû;ìåýbHÀ÷ªnES\Ó¼Ï†äëøÄ–6i—§àáoÙ®ç‡`í­ÁÆ÷Bk»‹Ý½pélf[–íXÖ‹ýdùzEØ^ÙIÞµÖ¿XV|[ùVÀ÷qçêÂcS[Ö/·Íi¢€+Y,Þ_õª¼K‹¥ÞOaálÓj¾·WŠNsë´õÆzèž¯F'ŒãèFE#ÏÑ¨ q$£WYè–lÞ™öÌ¼E«z)1—“HÕ#¼÷µ£ï™™é4µS¦Ag¬«d¢ï+Wf²Ž±y)oá®<?ãÞYõdÄGçBçïjX±Îžš×øMË‹iz._;~°ãîWQ˜|Ü+@=é‡´ó‚,íŸ†£uxÍÎèÆ#N°×5BØr'$~Š›fÚ	ŽÇ·Q“„ÙXNØ›æ®Ú¿9®­„çj¤¦Ú²Í]
Ý	ß4v…‹ŒñéôŸ¦³`ºûe…ËàÞØüˆí üËÌŸ>OLY‰6 Š´â<ˆ®_ªš@¶u	ò”^¦2N]]±VW2O%ò‚»N '
ç¾÷;ØD¡î÷.ïúû'×?î.úa•xœ]KÃ0†ïó+ÎÝ.d#mÚ¦"ÂDQd»˜â¥äãd‰´éHRkÿ½qî^	ÎïËó&DhY«Ùz]SÝTØ¨¢jUa8b©8—’ScYkMN" O V7JÒ–rªÅF—œ)U”5ÓR¶yŒ1&;¸Þaoâè1ÀµžÎÍm#®4Þ@Ñ°üªº,áŠ”5ô½K	ÿ-m¿H‰]§7ð¶ûÝýãÃûÓa¿Û‚|t1eþn&äÅâÏÆ¸#˜Nä’1?âà—
¬ˆ~‘C"zOZ$ÔH¿Š‹ñ¢wþQYìðÃ<Y¸‚gL‹Nû—`rÉ^p@x}¾fÃ4T	:'ƒ3dW„É:eÁÅÐŠƒË©õr0f)çÍ_ŸB¾,˜U’2xœm‘Én£@E÷|EI½´Ü¦˜ª,%­€C0ƒ‰‡ì¨¢˜Â<üõNÔ»ÜÕ»Gç­nß2¨D"‘‡(d‚"ËX@˜¢Ï#Eâ¡Ñ@Âx×«ƒ–•=€ÏK¢"Œ„P‘q $CJ#†$¬•Höß§„ð]Ó0bÊ3©"Qˆ‘%¡ˆ†>©Zð”)ËÁ9ˆKÖ‚‡ðöu<uCÇ~‡ì€Š(c‰’<äyŽVE‘öý§l¤ýv à¡¬ZVçóSœöÉ@~
?¼ÅuÜ¥1Xþ‹¦æŒ8šÆ^õß<ý‹s€·N£šªjUu5×Jbÿ°ÙxÚ%™ô:Š­ySÕ:¦ª*Ís´—;®*»Ö¦6jŠ³"íì¿ò^%*°ëÔàÐ›Þr<Í÷-Ý‹©§ÔÅ=ûîþ†
qeðüI?à(Bê¼	jqê\<o]Tµš-¦wÏ9Lgï°¯„{á¯û¦YÚÑ™°CUÙQø`³Ýb)µ([¥4mqÕÛÕ yg¦Ï³÷¾{¿œä{–¨Ö¸ë+3ŸädúŽš©Ö³Ýùo^õÐ˜™Å\`¿76É"û ;}4¯;k¶‹LC÷r÷5E›1Œùßº/ÞcÜuüb3´¾ˆð,Óªvµ™¬Š KJ¨†Õ¤Ì/½-Q*ŠÄMvmÈU°¾«›0qÍ¦0i«ÒÜõÛ#Ý£rß›éûçŸãÖÆÔCžƒ–5ëzð
‚ ¢¶*@ž–Ã´,Ç‚­¢tZ’!ÍÃ%­Ê(9î%Àßä/'	÷¬"xœP;kÃ0Þõ+nëPü’b‡R
ÉèPh¡óÙ:%¢²¬sÿ}åÄÛEHwßKDÐU­)³|§©PRÖÅ®îvé•Ue¹2VuÝÔM.®8gé¬ÄŠ”Ò¦©LVÈRå²DYTU†Ê ÕF(päKàˆÞ’ƒO<{àIO·ËK#m5=C®JYKÕ(	Yže¢}o™é¿Ô]¡Ê•*¦0|¦=mÄÖ0EŽ`Rg[ÿÝ“—u<Z¦Ûj™o:gÁF@7êô*ÐR‡ÉøB3¤
Àw‡´…´Ô`=„q€Ã	"ñxÝÂb±OQWhÒ€ãÍT¬yîÐ·9•å×´‹‹Aë¬?rb¥X×`=oá•ø!þfI¯‡Ñ³u0%Š=CÊF†K˜Oò÷\DCn¾ý÷pÚ
ñnS›zŒÙ´óþ¯²Åè·ïšxœP»NÄ0ìýÛQÀòr.9!%µã]'æ|vä‡ÏÑ#QìjäÙñNŽD0Ò'5Öj'­}jQ[ˆ“–#š¦RUW›N¬*’Ï ;2M/[Y·Í`p¯ºAÙè
G­GIªÓ8 ªä%DxVÞ’ƒw5{ŠpÛxL%Ñéê¾•ƒìÛþ·U]UB‡ëÕæLÿŠ©X‡gxdì'èàKTÙi³Y/”„xrü³2/° i‹„Ã•<Â¢"ó?RðŠŸœJ±x·R¶Îg!Ôäh×ý˜þòüØ†·gàžh—F-¥#¼P¾Ip!Zyf“ØB¼X?ƒá”sæ}Ûb¹»àg>y"žÑîº6ÍWæ£o–£ÀC0æ0}ÿJJ|²ù£~šxœOMkÃ0»ûW¼ûÖÇq>ÊëhÙzéaƒíX^ì÷ƒkÇaôß/+½v“„$¤œˆ 5ÔË¡VÔt½–<p§Mk˜kUÕ’U5p¯¡_˜(d\–µj4Ò`e£;Æ¶ÕÒ¦–«¶êÖª"sc‚-G>ñ(Áƒý¾‚§iž¨°ô²QºÓZ×%Ü•²,…‰ç³Ë™þÃì¼]Ã<Xbœ}ŒŸ-ÁHh—"vž„¸yLìN«1N¹!Ç›°`œÀå_šÑ…	ÐOòxmu&à˜Ä/7x7$L—{ âTÀëæcw|Þ¿w‡í~s(„xwËt»ŠÌ«á²þë™ø‰ÊƒEœ1xœm’Ms¢@†ïüŠ©Ú£•83€UÉV ?¹0|‰ˆ(ä×/ëÖÞÒ§·Ÿ~ûÐõvË8Á1I)RGÒ²XŠc%3&SeIPjÊYÕ¨DH¤˜Ä	%²¨HÆ,Œec*¡$Q#U–!Bð¿?‘‘4SÆ‘(²XDŒ*‘*Ê2gcƒ™ÄFÚµÙ…ƒ9­rV‚OšVŒƒ—øþoM×°ç˜ýh&ÊD–Á"…èr>çm;š­¼]t!x©.œÕåð–æmÖ…Ï£á‡µ´N›<OK7,Û®å‚m9Úþà. Ü=Ò5M×´­¾ýÈÒÝ¥x÷ô¥’Òæ&rû®iß“ÆÖ´éòÄ‚Ca»¸]œ(euœ7~*fßI¿˜˜=6 Û¢®^î7}æÛÇ~6èRvììñ×tPÉá<”ž³0®QqiZöU
 ò­’I´+T]!VqÝW¾Ã›%!ã›ôCµQú:ß,É]9ïBÃ™¯ÇÛlìÃÙ‘a÷%€ôó¤M¤BÍmæ»Ñí/F°îK9Ô6”ˆ®L¡s²BÜ*æÁßÃL=˜"³ÆÌP™Øðf}m‹NG/ü›ä>QŽkNÌÎ#öÐLÏÄ«Ês5µŽsTÈrùvµêèx5°`êó°Þ;á¡[º«l®Áåª—Y3ôý²Îõ–}œ¹ØdŽyÑ˜6ªïúáj_ðŠ'8þe6žùsbÂšñ”º+KÀÙµcM~!g á—3ÈSzŸrvc¼}ê‰rNAðŒ<È¿¦ô ›xœÁNC!E÷|Å¤[c…ÞŒ1.ü£q=À`_ÒG 5þ½Mí¸¹¹›“œ{GöÁp1CgfŸ)Å	‰"Î0£+%ª#7©æ`¼›m¶Ñh£#ã„…]&GÄ9’0:Å§±;4xåºÈ>ù«Jƒ§ü}-/ýÔe›åÌLÖkµ†;Z«tX×eù'êyº¡êMÎÒlêy•ûc[êx„~ÙÿÜr©}g8H‰ëÃ~éc£ÔûnéÐ®|‡?H9šPŒ÷æò“bÔ®°ÅcÒÆ—4MÅ·U¿™ea‘xœAKÄ0…ïùƒ'EvMÚ¦I/žE<O2·Ð&KšÝeÿ½í"xÔËð`Þû¯f ö*bÐMÐšÐ"c¢§.ú`Úh¥ì´aG$X8U0ÎSð$]«=éVÕcŒÎ°ì5ºè¹‹ªoŒx¬û\àÓÀ#|âWât¾Šçù8ó–ø	TßvVõN+¸—”"äijåF­ký‰Š0íà…Võ0sâ-A.´jÏ€~äU>q©bƒ^¹¨¬Up{“NoeHuóâ./âzaHse$Èñsg†ÄL+—æºgX?°çñ°´Æ’§«+Äû°, MŽqã/»¿Šowç…¤™4xœmRÉr£0½óªš£ËA Öªdj /ÁŽ±OrZ°¼€"„	þúñ,¹M÷¥ë-Ý‡×Z1
]J˜Ï-Iˆib/tÑpÈ]F}ä{A€‰«4p
È
f{„{ñ8å.ò!ôìsßÁðÞ‚¦_z‹ d.ãAè[6rh	"®O<\øžÅ-D§7p«µ#\	v{\VLGÚý~4mÃ(û,¹Ží8´!4H}¹­ïâ©ÐÏm«Z1yî”BÚâá.ø­”e#J0ü]ñxšfàeú6é4‹¶»|ü7€º&&qÅI­ãõìÀ¤øLòxîŽÎêŠTÚEQ~,Ó(®xò>è‰ßÏ¶"]$!oÞ=Ñ÷E&Íj‘|$Ëz×5u“Ë(½í®úžs­íÕ¯Îëy—WñþYÛ×ž©ÓÂ».7K¼J=^A)ªêEÈ¢àp?ÑHÏÜwý-Èå.Ë/ÓmºÖýObfýv¾ÜXý4œ6ÄmßpÄªö$žÄ¶uÝ”ƒ$´ÕÎœ›q~óñò’vn½X-fƒS6&e³#ùŽ½!‡cÔÚ ·ÖÎÂz¼¨.Ïxê¶½z™t‰S–ÓP°bRrzDKiO¤¹¶5Nêmpû¿¾ŽGn„%Œan úîç­iÜ[|Ê¤9aò¼™ë%ÒÌçüLæýÈT	Û—¥dõÒž,vs!LEûÒ=àiÿñv2þf6ÎFÿOÌX2U2 Ûó(öÑ²Fƒo–my€«úÄ‰•ø"†Ú,™r†u«ØÚmÃH¸º›ïøGßÿ…+
têVËVƒK{ÖBžÙ—¤ù°s:’xœ•ŽAjÃ0E÷:ÅìKÂŒeIV(¥Û®ÛŒ¥‘#bYE•¹}íÚÝç}x¼ÞD@kob—(að½gë>À8a2vvšX}r“­Ãñsp8JÁÒ`GÒ<
…8[##ÖÎÌŠ÷~­>êmßjËðv“…K†çü3Îýu)œ×s¨åÈäìèÉÀzDuÐ’{—´Ñ#¡ñ¿µÝ‹\€c„/Y%t Dœ¡WX¤Cî{WÞ‰Z-%ñ¾v¥Þó²I<Õ”NóãòÇõsk{œxœ•»N1E{Åô(‘½~­£ÑRCü;VÖvdf‘ø{@@Ý=§8—&"XƒZ.«÷N›cÌy5VóœbƒJ6­­d7?±¡u\$lÊv‘\j´F«eÖ!&¡œÊÌïtžÇuïcVx¼bñ­Â¹~#=”æëvŒ£Ýƒ0R/ÆJ%àŽ;ÎÙ§m•ÿUŠk¹þXkx‚xñ½ ¤—Œžö‰@ã¡íÕÛ†ðëkzeì©–Žé0r>„÷ÓßÙ}ðk›xœ•ËNÃ0E÷þŠÙ£Vãgœ
!¶¬Ëù1Vã8J'•ø{Š€=ènî=‹sy#é³Þ1'ôÑD›¼Ó>›(s*Q©HÖŽY¬a£…ÁD¤HÊ¥âLr%«D§ÆPð§Q†,ÂÎï}ƒ×~Ù—¾Ux¹ÐZ…Çú]Žü<µPçcêí	¤SÒjep€Å¶ÊLÿ0h«Zéb¹5:Áu+ÃDüV(ð¾pÿšÐö™ë:üòš¯Bœë´P>ôRñãôÇsñ	–jÅ–4xœm“Ér›@†ï<ÅTåH)b€aI%)3€°v$d,û60ŒÄ&´=}d§R¹¸ûÒË×}ù»EÇHTÛ„–b1Û"H·4ÙÃ©¡"Ã¤4Ób!Ê²DjIÇj,Ã¦”Y‰¦Âj‰‘š¦Ðf	ÌTšAÝ $±õLùÇ3KELW)z,ÒÑUÏ(!SÍ0‘ÌGW‡P"ƒ(šx¤æ¬¯$¯Y~ÒËgðÔ=ûNÙo i*²mdEU)mªŠñ€.ž‡ü¬›Žµåí)ç¢’ïà‹±¼Í{žƒÑ‡a?˜®@„ š+g÷²õ?ëÀ¥Ç)vì:ÎofÛæ»Ås³8èë³ÖM/ŽÎÔ™ß—d÷¾-¢ÍõÂCDèØÀ=õ';’Z6Çq,Î|÷~ß"w}©#}è°åcûþ¼Õd¥(;~çÞÔŠ§NÞ,6ÕKâJ`uÂ>ºœ¸Qb¡¤òfº–¾Å$´¼ûÁÕOžµÜÃ~7¦˜”öíz_r#çWåÕ™Yz{@¦ðˆ,ãxj=‡»ak®’õFð“÷&
¸<WÒ½ìyÂ*üÊ®
›`¼w¯UT¿Þ¦Žê8Ãî™2qCÚ‡ÁéålkWÍÄç™ˆæ¢}›$™»¢“nÝW•“•}lÛ…£º:¡a)rXà¤WÄ¡Šgfz{7‚e”¿ØÛÑÌåU˜™ýdaqÌ×ØÊñëóyG)ßÎÖ^iõ_øåeäMú«™¿ò¾VLZ².g Êtì4°^€oP…d]S~d9©øHŒësÅFmÇk1R%éö¸©sÖƒìqœŽRÑ•€ÔP–¼LÊÊž=ø¤û?ËOö—xœ•ŒIN1 ï~EßI¢ö‚=FÁ‘;hÛÄÊx‘ÇÃû	>À­T%ÕÌ ()—¢MÄÒúe±QaÁÈê™P4œ¼BÑip@.±×hï¤Š>J/epŒÅ`ƒ×Q+hŸ÷6à«=öÚF†Ïß¨dxÍ¿p™ï·By½ÄVÞ@Z…F¢]<¡G‡-yNþÇA¯œögtÇAÔïÂç>r/ð‘ðÚùµoÛ	æ#u š`ÿãû^¨Â`JV†k…æ&~ 6ô]Y—xœ•ÌKj1EÑ¹VQó`Sú´>&g˜y6Pj•laK2²:dùédvxðîÌr"²(Qé)„¼Ø´fÍFei½‹
×+ñ Ám‚taeup’—wvI~¿HCµ§$£±ÖÚæµøì·­õQàãÆª^ËŽó|©TîÇµ×7V¡Á QÁD±¯µÌÉÿ(h”Ónº½ ÚWåÃc”6OðžÔ6ëj»¾uÝ*5L‰â!÷Qi>ÅÃEWÿ–xœ•KN1D÷sŠÞ£DþíŽJ6HYÀ*ð§'´‚=#ŸA9»ÒSÕ«Þˆ “ÔÑ¹`µ%‰^G”ÑÌGi¬†rv¨hXB£Ú£6.Zë#&b¦8)1é­>zt&ÊŒ£C¸÷¹Áe¾ÝëÜÎ7º†ÂðÌ°ïÇk	ü¹Osyi•Øn¥õð$p›o´pïôƒ6¨œ¶
vÂm†¡~Ú-k?ÀÛéü~9À+ÿÀwêT5CzÄLkj¼tž+„Ö…OœÂ~¦Ò[Õ–xœ•;nÃ0D{žbûÀÆò#‘4‚À€«t)r¹R›¤AQ>WÎ“EFNj¦x˜é¼›qrÈ‘‡
‰¼vÞ+-õ¬Ég#ùyD#îÔ¸tàèFTÞíp
R“d©&§™¢Ì„<w‚¶þU|ÖëVjKð~å…r‚×ôÇ~^2¥Û1ÔürThÐŽƒôˆbosêÿaÐÆ+«ÑÃínå‘ùpo©ô|<"/ÏÏokÚV àçû©¬}u†‹øA<W?xœ•Œ;nB1 {Ÿbû´ÏŸµPM$Š¤âþ,`û=9&äøAáéF#ÍŒÎ!TNjï¤äÄVúS:i‡lšèQa´Ùh%–Ð¹°ŠrŒÖ±³“5„hÙ»H¥ŒÁ¡K!kmtá6.s‡ã|½µ¹8\ùjmyÂzìÎ5”Ïušë+L$Q#yRð‚Q<l-cð?J{iˆ$¬Ð>¢}W^-½´±÷ýáã¸·ò÷4¸.Z†ôÄ‰ –ñ÷’Çþ
ñ‘eWº•4xœm’KÚ0…÷ù–º¤-ÎÃŽ#µU!<Â#„ØTIì< /lg˜™__:Uw½›{tõÅÕ9Jpò¥6Ò1³¶óëŽaš†Îp’ëÐ0ÊX–bÓÖúDðVÛÄ,MmÂ‰­ÛChs‡¤XÇƒ	$K˜e!+ýÇ§)â(gŽX91tž8D‡ÄÁ$Íxž¢DÏuÓrCKUvxI[ñ<%EËøÆîâ§$ÿÊø c„#h@¨e]ÓTJ=`¿Ró!ßÚNð¾~ûYTªÒ¯à?¶¢/dU€/ÆúA¶þDÒC¼Ÿ~Ü5 »t3—RwBéÎÝ-JFªd²w—vy±6/¦î”¶zÐåuáñù¹ò¯;UÖûn_Òm5 ùËj7oHœÍ¯¶ÈîŠa_\Ç$în©§,i«ääñ7OÞÆI¼	vqÔ¤Ÿ¾3X7Úé½QGÛI“Uåóè²¢µªçe¾@JŽv…œ¾B˜½6çzÄ… Bl&¥p—w:Zm4©°ˆ ‰17¯·ú„°‘·‡vÕ½õ±]‰×ìÞÑõ!Ð¹Û«Ž›Õi«
ÈÑØkO²=ÅÇWoa´ž¯ëIöãÕäN½÷ƒo¾žûwÑâÏfy³ê'—ý3÷ç3uóYpÜøðcJðfz1¦$~—7Z_GOré*5Ì.rýp›1ú±}ãø„®›-Ò¼l‹¥µy[×À÷‹FÚßÌ¦¡÷ÿÄ´5ýP×@ðÛÀ¥ŸtC·@.ºÐkYÕ\–ûp…¿âž%ŠKM£ŒqäÐ÷P 1
EýüXÈ„ iÙCÙ’‹ŠK×D‘'z? *xœNËjÃ0¼ë+öÞôÜU ”„æZbhÏ’vM›ØXÊÿW—þ@Oób˜i»L%d
Ù¤© 9Yç¬aL“ÑÖ†P¸dt¤¶´Ë£9äœ)J$Cµ&9ÅŒëu,‰½>«ôlóºÃå{^~¤ÎpàõOoÃùëú~,ëýº¾o¢%xÑÁiÕÝûÒšü«¬.ÌÂPŸÛ¶î¦~a¢Ñ‡=‡ôàÎÈk¨²/RaøüÇkU¿ÕvNªŸ2xœm’I“Ú0…ïþªÊÑ• YBÆ©$Œ‡ÍÃM’å}Ãë0¿>dªrË;u¿úúò^w”€p)F(ÐÀS„<#‚`¬q†J8Ú”L¹R³F–0ˆ¤X )×8¡Á‚8JJÊ4ˆ¤¦ýã©Á¨!I¨iz¨3HˆZ™à4ñºC‡Âú.®°`e"sðÆ¢R6àG0~¿Û¾•ßù ŠÉlFáL*Ô TDUI×=a'é^z~”U#ëüñ;Jº¸çßžÀÎ¢:j“|ý+ËvV.ð¼®×<ö§¯ Œ­%,Ó´æ¦y°ëX/óùÑÚèqJönV£i²ø¼2×=Õh§Ol¸Ø¨þ¢"6ë!hÀ[¦Ÿöoå†uóI¶•ùÎë’}ö¶;¨áË¦÷áÅ¹]îþ<J×ãu±³ûcµÍéVÆäÚÔ¯o)"ù÷+œ;ÂŠ4>ew*¥ð†3kvõÑZÒª!;Ì‰3..SÚù;s|W€?{ŒauÑ¡<§£¿5p{·w'¹Úf`ÛÛ×í«½x¬³ô![=÷ÌOrÎÕõf+à°î¢HãÙ0vöÞôN«Gµ<ÛˆÈÄcöjrtºV^¨.qæÚhð£4ÒƒWï±ÌSöÏvÙX/ÕqÙÑ‹Wª@Ã˜ž¿ÔNý‹ÊNoÖÁkî¯8UåÇ†únFüôZ\6¥(zó§~~é3ÐÏnlwñÿÆ”l"	ê>ÏA#ï½l;ðiÐ aS ndRJ‘É	+™`µ¢”C!¿ÖMRvßAR²é@^E‰x.ÀtÍ¹éž<ùƒü†xœ•ÍNÄ …÷<Å]jÌL€clt¡cô	(Ü¶DM¹Ä·—®ŒË“ïüäÐ†vÔc8E#µì¼æ–s¡¥ÐÞuÜwA:c´—lõf‚!ˆÁ7lQ	k]'Nè¢rÊj×JÇ7"ŽÌï4—ž|ÎXáSÆðp;·žûºW<F¼a:e­VÊÀ—œ³P–%áÿ“,_<¬[Êt†”/¸|–)…& éúWa¬¯°¶…ºbøEš3¦à©Í¦hÆ
ÓVöž!U¨ä)v•bi¶\Âìó„×GÆÞÓ”1Ê8†¯óØ71¡u¡2xœm’Ks›0…÷ü
Ít‘…'µ@A'éüÀ65~`’Â€y„qøõu›v—»<÷;wîÌ9¢áPB‘Î¢˜PÂ Jc¤(:VtA˜2ÊtÌ¤š6¼€…2£*5tŽe]7L¸aëªV4†P“£ø?¯Aq¤á;F¡*š¦ZC‚Ž9¡‰1††D;‘TXÐ²ä-Øó´äá™ƒ§ä~ç¥íZþ=â?¬!¬ëÔ0‚
„RXE*o€ŠEÇÀSY5¼Î?^N©H:öý|a;Õ§6=Ç?cÍì¥¶öxKÛ5þ~öW—€úÖ
-Ó´&¦¹³v«$,ìn²·’dxsEÍ²7M8í—æÊ÷„zHRgjƒóM¤]j"•Ö¾íZæ’AË¹kæ6´]+Õ˜éGmÜ,Ü…—E:ß&ûÕjX^¦ËÄöc	”‰Û9]!½×,Ì½iáG‘$Ó¹oNlü>o—ÝÙz]:cÅnMÑç©SoMþL‘Àbs¡óJÅ~ÈÒ£}ôöíu“}ˆŠò™3:ÞuØ÷Æ“5Bçíz¼nq¬u®x£5’@¾yhÕ¾VÞ…ëV+-®ã3Î¾™ÌGªŸ`2ÃûáºÏYmÇ½o5è¦·Ë¤åý|½]SÒfÕy;õ²3´ ÄÂ‰oäòî ’œ¹9¯°	¹ÈüðèN”µi³Ìòûg	<³d5HŸ™ÍÜé×‰IkÞœ8¨»<¿t¼à›¬ÈÄMU€¤ùW¬q”Çœ
I*¯¬›´? "ðð¹x ¢Y[• êDÝ‰ßŸÉú´ëƒuxœ[ËvˆiBÜÄ>aS#m#®äüÜÜÌ’’Ô‰“Õ¹L-, Â“Y˜5½¹¸|3‹‹3óÒÒŠòs²ŠóóòKK
JKô¸¸‚3ÓóRStóÓÒt“*­<óòR‹‚R3óR“³Sl2‹RŠK‹SõRRí¸ '
œ2xœm‘Ioâ@…ïþ-ÍeðÚn’QlÀÆì„[»»½Ñ^âüú!‰æ–:•ê}UOª×TŒ1 „˜@‘éF¤…©Q“ R™¨šÎˆPâŠåÐ€’€Š†¢TS$]‚8‰PÃF05” ¬£ÿ<DSE	ŠCQª«ZHdÄd@f EyÜpÛÄE¦8Ogå¬Ï´ÿj^ë¶f¿)û$¨¨èáŠT0eQH‘eIÓ<`'iæm žó¢b%¿¿FI·ÁïðÃZTFu§Ï²fŽ»;g®³1þ~ö5€ úÚ"–iZÓô,o“Ó!šì­¥§ê¶S*·7MÕ®i»ÜÛ*?]ÛÀI¦çûªLßîøX›ýö>p…W»’*·hw­Ù¢¨oÌ½~‹ ß.êÆâlœ¥ØEiZRÝvkqz03\W+þi¿„çÂÎ©ëIþ¬_¾—ÌÝø+ù*Žãž²ÁJœÉ|è¬’¼ËŒæ—#´¬dh Êû°ÑÁ¼)×'KV'“¦æoøjÒuýÛrä/§ÞèêgE8«­j”ð$ùà^:cµ"‹T Ã û«4‹·8Üfn¤Û—;êLKo3¹=\&S­8oTÚR.B{k~Ke£>Ž½f¾Ž½Ï?ôÜ6¨¶÷fýÑKSÒ¿…ëö‚ìµU*»4·‹hÄçl~óî9oP{Ù9á#ª÷/xñ•7&|g6ÛLNLX³*b l9{oYÝ€_’,j ¬Š$îÇËŠŽ=±œ&8Jò°„ M8ýö_ ção}ü©ÿeTÿÀxœO»N1ìý«4‘ßÃö]„-©×Þu²âÎFw¿ç> ‰j¦˜g™˜AûÊZ‹ÁjvÞ¶ºˆ]Kõ¼¥:´ÆqP8q*àzOÁ“îãÉ4•«,ÆØ;ÖÖ`=·±²µëžË)OðŒIx€Oð@_Wò4ŸgÞ?Be›¶«Ó6p§k­UÈã(¥ð?¬ÊŸe =¼ò˜?BÀtÏ‰dI1+å<j4MW“¶p³yÎió‚ïeà=Dù†kÄêˆ	0¡å¶à0\ œXyI8]vp` œÖ/:)¸¬g˜~»¥ì”z“e0msŒ[ÙÿõGý i«c“2xœm‘I›@„ïüŠ–r$w³t7ÑL4`³y7Æ6™[·iƒfñöëãL”ÛÔé©ê{RIÕ5B ž`#AXUb‚ˆ©J’]GÇ‚p…BNF‘T³Fœ:@š$"‰C%
äå
2¨N4qƒ¤ÅpÿD´ÿ<á2]¥J1Rt+±Ž¡‰AÃº®	Ec±nH¬ï²ª#vÊE	v,=‰¼Æ×Ïã½í[ñ#¿À³ªF‘‚)2T ”öÕñ˜wÝvóÎë9x=U¨Ëû{šwYÏ</ÞÒ:mó¼ü•e»þ,Ý%XûîÜ7ýéK@×ÖÚ[¦iMse­ÆÙ~3ó‡5!ÙA[\ÔÆ¿šfù¾iµ7]‡xi g”acI‚¢Û1	ìBË™–hfô[ZX·¬“‡ƒà0ÚÀ&ö€‹Îåé#Û$Y¾6ˆœíQæ÷‰uîkWÃp¸V²Lù¨['‹‹fæ'Óz·„·H†Qe­fM¸WªìöÑ¡ °7š°C8©WžªÏ÷µå"?‹ëmUß£mÔ†ó Ôõæ»Ò´³zbqõ‚½ÄÞî29ÿžOêÚsÃË·½#vBŒuµKä—E;ÈÛYé6¶òõÁQ&;)·Î£òøØ"ôqÁZõdf±éöC	¨¬ãñCs0¾ýY¯ÝG^>GÌ‘Ë(÷ÚQ°]çQ¶Šª©ŒÎëà ¨ôÐF²vµ«7	¼½Â–þmfÏG_/&ÍD“
P÷e	qîEÛoHHšêxÞ¢ìOñ Éo/¼ÏËX’Ž¢­Nßg¬I^ŠŸàÏè„ó¢’#xœ•ËR!E÷|EïMF˜™LÊ²Üª••_ C“`xÄLò÷’ø(—º£º8çÞî<#‚2ÃhØÐµš³‘¢ãÆP¾Z±aÐÈU+¨â£ŒäŒ!ƒ…1h´;ÞR5
Õ²Q¬xß15*ÎzM§ú¥'²ä]œáÙÉ’à	CÂ wûæõúzHÒ§¶Íý=Ôø^0ÚñnhK)©SosÆáƒX}áÄcŠa±‘{4ÖáŒ=*ÖiB^l˜œUáÝ#|A‹ÝÀ”†¢^@Þ!`ÐVØ¡;àœ î!‚‹a‹3ÁÓ!Îu!e”•)©Ê&n¿@4H­¡Ês¼¯ùÎð©!dséGëHw”çÓ§},¹¦JÑ|·\T6ƒ©Ç¼x|Ýj©dBM®J¶—Ê6ÁŒoÅÎXÛVÀ~~àT”º8l.—ØÔËhÌR×¹4ù ‹Ð¹¿œ4xœm’K›J…÷üŠ–²´&4Ï†«$
~æacc{ì]Ó4Ð6Ü4c3¿þ:‰²KmªTúŽTªs§èz¦"#7l”Ù:1©‚0.Œ‘"·M¬Yªe˜´È2©Ãœ6˜D1	4r‚m„,¤!BˆAs›`˜Û$…¥«"Æ_^'(Sl¬¦Š4“BšP!™…,Hp¡hÛ¦Š.áAT-sÜ0Zƒ#.ÊÁ·üñ{øÙ=ýšÓ@15Ý‚ºmj`U%ÒÞnLˆì2áøÖ´œvõø³d¢²¯/à²²+{V‚·_5]¸~6îì|7vÒývñ{/	<ú)™:Îtæ8É4YUd—^fÛi€ª‹¾þÐ¸ÿpœå©÷ÐaµçíÎÖÁ>)k¯ZAYg£Ož£Ûö©¶ÇOv¥»¯|®ðÉv„ÚGTn÷ù‡f7w'àìâÉad Éñ*x	`ÂòYÆýEÛŸâ‡œ†<nŒ4ü¨´6®’„Z*ÖV-ß4+–3Í&«#·Ã”J€Ž·}¿Ê»@Õ,‹Âà ù»çÍü×LéGOÍ¦¡ª™®ŽÉº®nónNÉ{¹H<,éJóÓ½[ÏŠKòÙG×7;ív5»ú°»ËrT}z—«ˆìÝ›ã$ôæ	Nñð0W{l:	6¨1Yµ,ßõm3ã=NOñ9ë=z~¦–?Úø°m"C?-ËósÙF›Êe‘ñ|²fÒÝ¯ß%ð½|Ý%ýñlÏÿí˜Q^RÐu8½´à‹¢B¼½×ûK|coB®èó-g¯ôoª$57úX²'-è8{E·¤à&ý«‹Sð?"@ZÎ)àÁrQývGÔžxœËjÃ0E÷úŠ!Û#Ù‰,‡Rº*tWh~@±=Ä–Œ,;I¿¾"¦Ðeéjfî\Î<RD„Z–5¥“ÜÇ¥âVÍK­dU5‡c£k.E)›tDŸ ­”Ë[rg„U¨jn´*•Aa\#ùQgt£˜^R"œÃeñ!¼_°Ó#Á3mI‘^»QÓPØ0¾€Õ¡>ÔÇª‚'ÞpÎ²:RJøóëˆ'x£¤ S¤¼}‡	´w0çØ¢NKDèñŽ:J3Ø#ÚWr©gì#âJa™‡;”¿m>¤‡ô;~ÛÁ5'äí°¸,¦7ÌZj	]ÁÎ"ÎaX1÷éáŽ¨gÌìî2š|ðòVÔ>(«–\l3¿0†‚±Oê<º}hÛ½¹Ÿþøö`e¢d–2xœm‘Ko›@ „ïüŠ•z´Ã.Ï*©cæaŒãpvÁ`^æal~}ÓT•zÈœF£o¤‘fè|Ê‰Ra(Ä$1I%–Ç‚%È¥¼È§)âiª:R@‚"G©”²1J#1f"I<%J\	DR$þãY"$+ñ8Æ4&\œÒDˆg#:h!áÃ”ŠÆáÜt`Õ9)Á{”Õ¤/xú2oýØ“gL~†G¬ø9HÀ‚†4M%MUåÃð	ëù°cðR7iËÇ[–ç1~þ¾©emÖçxú#EÓ¸º|C·åC°×¾r
P`ê•D‘eE•eOñ¶çÄ7u¯˜Â¹`êŒI–³ScÈkÔ²kYpòú™ Ðn‡08
$˜kG¹‹ªîv¹D¢O#É«R‹ÕÐtûñ!ßMÃèFþØjzWÏ°z×
UôXQ`ÌïŽit%ùsísÔðÁX-OÚ.Ãý¼µ”èµ¶ŠG«¶¾“ûmR.5šÕûCÅœ„vÌai§î~Ï‡Ùº[Ë„~°ü]ñõVÍ~±Þ3zw'Z/«l•@Ôg®¦Ràä»Í6)6m)Ÿ´pÌãeª®žs6U·ºCÏ?52Ûac-±ƒìBË¦^9é`«Bz}t&¾ª›NLøëÒOUë&µô1ðÂy²5ó\„[Ñ|-'›UkrY&Ûx®Û†cÒ¯xõàÍ¢þ~¦Ù«ï£v¤ËhÇ²¹Ž¤ÀÒ¤]S<‹¦eÑ7õSò<uQKQñ˜—ø' 2Æ Êû>¯3ððJøh›xœËNÃ0D÷þŠ«®@¨‘§Ž]!‚?è‚µí{Ý'²*þžP[$v³9gfj&‚V˜ÐñèíH(ï¤}Øu¤HJ‰½Fjã›m¦T!HÜßrtÂkÒ=wV·Ú‘phÔjè¬ÑÌ.õ4ex²)Ò Ïö˜(Ã-ž/á¾,…¤;Jvš‹Î(¸á-çÌOãk¥ Ì-qÀ=À"Œ±”˜ŽðR¦´õÍ9Û™±Ç‹¼EAÁô‚	W›oì@u¥R—Þ(—8%ë…/Ø„`Y°Ãà¬…²Ìó”ëæbù­«'ú>+!ÄÆqÝŽÛ)„­{ßÿu} À‘‚}“4xœm’]o¢@…ïù“ì¥ieørØ´›‚¢Ò
Ê‡X½if`qqðã×¯íf“½è{uròœ¼ç´œR ¤¦BŒQ=7rMU±ž’iºLs¤¡ÌÔu©ÁœÖ-ÈU”É)L9#0Ed‚‘‚…$3Y‡0#ØDÿø!œ«ªJ±B¡‚ÉîŽnèÔ$ª¬çT#8ÇÔ”%Üµû#\´ÌjÊÁSvþ/¢ô1£¿ 4TÉPQ!ÈŠ,Ké±ªŠ¶½Ã³¢w<ÕGN›òúÂŠvß‘Ç;ðMŒ5L<|žíÌ\¬f+¹3ßŠ×¡óåK@ga§¶eÙcË
ìàuŸ†»Õ8´ßFûƒ¶ìUîž-Ëe×²ˆ~ÃA\(V"áÙn%Àxß¦dÄçU°œ8aŒ4PG°¯­O\}Õˆì]Çãóüþ©¥^}Rv,pq˜$£E‚ßOÃ|á&Urëb«ÝÈz'šÒ£òJw†h<ÓJa×0&·<ª+W²±>-T	Lëõ¨'È‹Ä5[•Ågqªí%,¯‡þ|5KZbàe·°d®ó.·—x7uÚp?¾HÀK<‘°5½KŸž:¿ž)ÃS„:¦Ù{Ô¿]*¶AÐñ½P&al§KÔùl~ž/<1íàšIà:Þí6Þ+i}J£Kâ1nÇèÇû«¢å¶%ÊŒ¾¶Wÿ7®W,fŠ–ÆkŸ÷V›²L<Kàùw‰éogŽ?ù¾1É£œQÐte	8=uT´à„&9?V@t·‡+®ÙSÑÜ‡räíG^\$©î+úÜ%8ócÍÀ}À¸¢ŸÃj°4í|2ÿ%ÿ ƒmÙ”xœÎMjÃ0à½N1»,ŠƒdÉú	¡ô=¤Å‚X2²œ’ž¾	´»B¡»áñ½ÇôF1$îŒµŽ[aŒ°‘´R#mRr4>èÉ('Ùê•Š¤Ä%&%Hœt@‡Î¦)h!:é£Ò1¿÷¹6ØöÏ9ïÎ?×›/ýÒê¾c]^Ah©´3£RðÂ-çì‘.¹wúO—•ÛB'Ø7‚>·<}A¸æBP×žkFëÕÇoñCˆß]~Òí6<|m±÷|)„CMi÷ÓŸ²/“{rïšxœNËNÃ0¼û+öŽZy×ÏTñ| 2ñ:Í!väl
åëIœ‘¸ŒF£yIg$´cLÅùìœËQçÑ…££¥HÌZSç*`\18™(kçIcÌ6kd4ò!–D*írm¶ýû:ŸïÏ¿ì5U™zÛ×óØ–@o¬§@6À“ŽZ«C]fþOVÕÛÂ(ó|öV'8^§…ekÚ6Î ž÷ÎÛí€µuQêmž*çS+åôq¿ü¹«~ ¤Æd±š2xœmRÉn£@½ó-ÍÑJÜì %£€M0ö€Yœ±Íº›-¬ì¯&£¹¥T‡ª§÷ª¤z5PB Lb.æfeI¢ˆsHäy^„.«*Q˜6¢¤@‚DE…|,*8’ qŒU6$N”!áˆ„$	Ç*áþóY>æ!"R²lˆbž‡,/ã˜—U‰ÀEˆT±@&‡¬¡`Õ9)Á9JkBÁž¾Š·~ìÉ3&?+ñ‚$"'ƒä dPSUù0,d3vc^ê†’¶¼¿¥ùñóBøF–¶iŸ§àéoè†i9À5]X¦£>|ãg ¦^Gº¦éMótoŸÅÔš6¾~³B8Þø¥Ó´ÝI°4ë¦m †ÑªWcÞ–ÆuÃ™BÜÍx…Çf½/ŒŽŠ“%çÙíP§Ñçžz¹ê¥9Õ¼Ö^tšßõÇ}³w7·ÛàóGË {ºXãÝ¹Èþ#ceÜµžtµÛî³èJ.1W
•"»š³‘Új_^‘¤ë!Ù™¦hÚôP×î'_š<»²gv@Ì3
©îƒ±Ç…†Ún®üL·¿‘N½UjUÖãXlObxTM¡ª]Ôøªó—‘úåÆ8Ü|šÏá¥œÜkÚ©¿ŠÆÌi¸²ñJƒÃMàCêa9Åf¼ÎÝ£bÀ±
yµÎ`É³]ú{¾ãcT)÷ËÉÉ|•ïLÝuªlUF¥´;_ý(Ïèì
Uq¨êé•¯Ç é™žÎö{Ç›Ð”€v,K@I7’~ ?XVUAB›
”¤©SÚôý:Éçu}«Èjêš á	7¨g˜U¾üXz÷ý2á.}þe“xœ•K
Â0@÷9EöB™üÆ	ˆx•&3Õ€m$IÁã[½ðoóx£‰hX’MVØœ‰Åd!“e›ƒs.€ÀAŠQH½æ&ÛÐKÁ¥@<#pâh’GÎ V0#rŠbÕ¼Gmú)u»·Ú»¾|uúù­íib¹jƒÎ£wD^ŸÀ¨\×µŒ!‡j)o½–íXrÍºô¾KWhEU•3xœm’K“›0„ïü
Uåèr,@ ”ÚM-Ø,ÆüÂõ		pØ ö¯³In;§®éoSÝ²â`Ã„2GrˆÈSéš†Æ\ç4F‚GÄàX(—¨â…Ä°â˜b„D1ÄÅe!Ž j¨Ð‚Ì¢ä?Ï¢Xå‚`
pÂÔt#ŠˆÐLubB1]‘52-+0ŠŠŒŸÁ>J
^—¸ýouSóï1ÿ	TSG¦nB¢‚Ô TX™ç™”OØËä¸¡à¥(+~9ßß’L¦ýþ¾8K.I% ÿg×ó°ô–`ã{n×îç^
hk‡9¶ím{å¬&)½¸x¸v¦8=¡ÅM¯üÖ¶Û·½i:¢Ãz¦’éÄÝ{Èþã*T€7~²B§4½]ów­ñÈ{ÑÛ1œí[,×ë:=zS²êyÇð8f3GÃãy÷x¯Â™4ßÛ†­½›ÞOcªU\<&½•˜ë®š„[¬+¹P—†Èd3eçáÌì¶"ãQø;ìïNËçQ¯;<\ÖjzºÁ÷k‚©UR¹º=òÛNLìš‹yHÛƒ=tPû®æuÏqn=÷ÌÖÌ 	W€ßv'ÜKKÁWóë(¸û.4GÏ˜·ƒ5[Ázç¡écºÕŒö†uÖÈ6O;<¿j
0V7£e3­“n¥çIA<hÊpÀ£½ÉRÏ*üÑÃ/]k³Áæ¸Ö³“îrr¤õª€×‘°÷ÊßÌÜ`ôubÊœW	—æ|¿6¼–à›ªˆªÌA–Dí æ²ŸgEÿT—EÿÆ«:+E¡MvŽ€—àify“ƒÏf~Âì7ñÿÝœPxœTÁNã0½û+F»+Ú¦MRÚ$¡EâÂ¤=VŽ=nŽÙÐ¿ßIš”rb•{æÍ{oÆŽªLÕë´ÚT|ƒy-ÊŒžBæ…ªD¾áÕu•«RU¼f÷h#”[ŠÏÖÙ¦HKµ.y™£”E^T©ª®yVd¼ÚâV•Œ÷±q¸Õhà/ß[ôp+ßÇ?¡¸”xÙv}½)²mVÂï4OS&\ÛêñÿR·kJ.¦TV÷ÚÈxÂ­¶ºí[xC´³ ˆËKp6À­.%(nLÍÅ+„¾ëœŒ}“¤Ël½dÌ¾µ˜£¸„q{×Gmv{Œ;ÃCÜ¡÷—WðÞhÑÀÞEÐ6z'{’>G”óh‡ãÊ
lk’™§YAîMph‘gz†))ÁèÚs€Qïž€^¢|€†äÖ,BÄv"Ýë£ä‘ ¸$ÿð¹4iœ ‰ÂsƒÄL˜^"t<6''–	ƒ5’‘¼£ôÎ}"Á·¬óîE¸Y2A^?ñ9!{Túƒè¹ÞÈ°¹¼ø9°Û#èêXùî¼8íÂí´|±„GÎK²ˆM–;NFXÀ;‚E*@1T"‘(MÄÜo§ÆÕ©ÀQWp½H£II›@Càˆ¼€­À~†JíÉGMtŠ»³3†¨K¸·§ÞRkN Jš1š‘!Ï;Ù	ò³õÖµû–Xh»Ni!~Ñw,Ä¨N÷ºOH½ÒûA›<®úàWÚ¥WÇÀ‹Yêù4„Æ ~$‰P†ïÃpghtÊŽhA·)‹ô3p=ëZíÈ¨ÑWã¹Äº,7«¹¡Wì¥§Té]÷•Ú8N4½Oš.™8¥’úpóÝ]ÂþÕ¹^ŸxœŽÍNÃ0„ï~Š½£FñS!ÔCß !ÎkïšZuœ(u@y{
¢7$¸f¾M[˜a¯¬·zöVZZ”2bƒñ‰“äŒJVÌ¸pmÀ7–”G¦MPŽ5{L
÷ÎÆ!{!Qbk;Oœ°f.ðŠo•x¤oq¼®WîˆŸ@:mœ¶ÒHxèUß‹8cnÿ]5FýTEXs¡¼Ì„¡äPßGâ™+q›w/ÆÊëíüÚÝW¾â„¥Œ1NåZ¶Nˆç|ûC»)¥]ØÝŸåõw’3xœm‘Is›@„ïüŠ©ÊQ%Ã ÃhRvÊ€0B+Z}`X$6±£_9©ääwêê¯__º.ˆ(ëù
ÁŠÌ&xâ""#Ñó'¾Ä=EPæ
Z²¬
$Hˆ/Š¾€Q N|Ì˜ì‹’ ÙÓ¨ø/ï!e,ùÐ…D‘ž’ú¾LŸ²HHPŽ6u”—`F³ŒU`ÇâŒy7^£gÏ{ÕTìÅg¿ T$Y‘Dˆ0DAà¼<Mãºf%0ãzÖ¸à5ËKV$Ã{×Qã¾<ß¼…EXÅ!f˜ÖØ¦Ë\«ûÃÎøãs€]¥yšªjºªnµí<róÙYßi]åM+•V§ª¢}³Ô[›­¤$óê©:¦Äìy©ì8 $ÉG&´ÛMê¬G¤1úb¸°‘Š©ª³£—š©Fõ˜†.ö—&?,Óïs 5æ­eQyãfE?I?h3ÌÙ®SþX8Ž?ó3Ô+B†$6FÑ*ÓŸEnÌ•qêOà²ÛÌY'd¦˜ŒÚó}i{ìHŠ”^fF‡:ïx¿^[÷¬lðÖŒ&é=´zÁ?DvÌ;xi8;´és¤÷??˜S‡¶¦.ÍV"<Ùø´øÜj\ÚõmXâîO­»³÷%”ÞR?µîúº3_ŒBß.LÍbƒ¹hƒUçnöšÅëûv¹Èö¾À¦ÇBsËk·9.ox[nu›û»™±ž~¿·beÈ@Ñ$	(Ù½aU~@H0Ê<yB+&J|@ãdœgc·©†qFSVÔc–ÅqY›²Ÿà‹ƒ<_üç¿HNúÞ—,xœ•RMkÜ0½ëWô’Pvñ—ìu¡¤äP(ä°-¤§0+ÖY2–¼ÿûŽ²I
=µ7ÍèÍ{óž”f"}kJ·}×6´ëvªoJÙ7²Rz§k’‡RµE+;1áL>A-M]ö½®*]È¶*zYîtGÔè¢ìªº(‰›+KÂìÕ0Ò	n—ÛøV~±Á‡¸Ua¼ƒ²­Ù6²éásQ…àîhS¢ÿ¤èª¾mÞ(„?t­ƒàá°Ä<Ž'T$Ä x
Vƒ	óˆs²þø
P)«Ù¸[ùÎÓÌâUbUPèi&òÏô¢Üí‰®®ÁF°ãähä)Ò[øæc"ÔdlV±	Ðqù”›Q¤@ÓÉ²¤±ŽÀzø …1h‚«Çç‡§¯ß¯™Ñ@X&‹p¶i€<NóÌ?ÜÿÜÿô—R°ˆGŠ0XŸ"¤ð
ÝlØ3KåÑkpÖ/’}má~}õ–Í^âItÞ‡/x¶ ÎÖ9æòáòŽÏãýå–Ï[O˜ÔÀ&_x)ãÂ/ô©ä$ööèIo‚1›Ãzó¯Ï.~‡8ïT”4xœm“Ë’›:†÷<…ª²tyŒ¸Hö©$À¾Æ˜Á³I	$„ÆÜ,n?ýq&•]zÑÕÕýõ¿ù»;ÉPÆHÅeN1z’Ò45˜‘è"¤›”e0¥™ÒÉª°„ªTÃ„Ñ11a’idŽÐÂ@„a$ÍØ_ÞÀÚ"z¦#j`¨§B¤ÑRÃÐÌGbÐÀ†Šç
é»¼–`I*Á
ðJxÅ$øJÇÏâGÛ·ì‰²ï "Ý0ÑC‰ª©ª’Öe)ºî{¢[õ	øZÕ’5Å¯\tyŸ<=€¬ñ†·‚ƒéï°]o} ¾çƒÓÚ;Xá9p?û
PÀØÚ©mY¶cYGû¸É“¸ÑœÀÞâüÝxt¹-«Ôökk}Æç”Ä†7xÇIÜ´¿"+”D(¸¶¡óÒ¹›&êîmáÈ÷™ik;w¥Zz&ÄÝB3æ—´f·×x;CÙEÞÞ=Ÿ.SÀ)aNlžôÌ”CŽ_XŒÜ0æo–ô¼ÌnLoÆž^Tÿuå$}S\äñ´mVoñlw{œ¹ìòê¼IræMÛ‘ºrõ>þ˜lºkìºK,vjŠ>Y‰Qµæ÷ú9ŠßÑ}ä;÷ïç°W€nUp|½G|MŒ1GŽ=ŽØ¼žÜ8º	D.”nô²Žws?sÏŠr“ãhë^ªmÑ( úLô¡Ln–þžãp3‹†±[ûx€b#h™fávå=·h¸“Ê¶sè,Çü@“ùd¶ÿ¦€oMV@ågîaùoÇ”=“œ¦/
 Ù­gm¾@¸0A&ëNÆY&>¦…xœÍ4Ÿš¢TCÉ¦²)“ÿ€E)øµO9 =]JÑ¶¢âÀ·ÂÕÏ½ƒÇOˆJt¢®þÁƒ±˜%xœ‘Mk1†ïúso½¬ÖûiB‰q½
	´PBÐÇÈ; •I›àŸ±[rè¥94hfÞç}U"(i&£PT?kÛFëÎh9ÆbÓšaÚ}-V•0PhÌ8Jiº±sª5¦¯¹[õƒsÚöÊŒ“í´Ò“P[™c‚c"eÂ)òîÔŸúÞbBÇ'´ULç/ {9µrjÆvu_×ÂÄe¡R0ÁW=üTçÀÕ}½]îó–±²xÝ·]/»q€OuÃ£"¼,¸Kë¢p´<ñ¦\Í`7„a¡œ)œáÇññÛó÷ã/°è(P¡„8Ýt¡‘®­Ý~Ô@¡¤h7&…€¯ÀªÝûìgÐ[Kü9V+3ŠwÅ{­ gÊ0o¾ð"
pc4žÀ)òWÓyL±®¦o=B¾ä‚KfÑ[ÇŒ°lÙÃ‰-é¤Ò¥â8»‹ÎíôåðñÄÅï¿Ak‰/W{W¤×èãùRÐìáé_ÿü†xýÈà’4xœm’Is›@…ïüŠ©ÊQå˜mRvÊ`ZÐ
XˆÛ0‹…@bÈ¿>ØInîS÷«ïõå½¶æpUá$
VE¨ðD‹JˆËª¢0ŒNÊU‰GÂ…Ö¼låŒ"I˜P•1$FQ„“$ŠeD‹aD#í?I	Æ¢È©ŠâXE2â²†U	BŽ"-F„"BWvmVÕ`JËœà@Ó’×à)î¿–—¦køÏ˜ÿRTˆd¨É`"Ê¢(°ê|ÎÛv„í¼ux*«š_ŠûKš·Yýolé%mò<|ŽaÚó5ØÚ[àÎíµîù{óK€ úÆ`†®¯º¾3v‹,
æéëÞXâì]ÝÜ”zÞëz…ý¹n=êFï’Ù9p¥áƒgMpù
À‹ïÑêc;Tª}t(£R(l™u;è¡;òæ`ß¹M]ž.Û¬ˆ[bh	VMIÀr"µæ Ïª»LÍk²>º3ÈöÄŸå×õbcÞÞ(9Â`Z¦J½¼#MJïæµZ³¸ë;oY
 oÑ[ìBÙ1g	­¤vbfŸ9¾ŒÒ+Ujÿdàz5‘Úf‡û|QZûþš&þøÊ«°sðö­Yºïö¤)­(ëhþaˆ–î¡ëJp6(jÞÖNVrö˜\ýnÅ$KYQÌN¬	 Á0#†õ¾ëPgºGÏr0ÀíÁjsbûbpÈµo¦,™oúr»’ö§Ìð?VÏx^jÁBø›™¹ž~Ÿ˜°âuÊÁ¥+
PókÇ›üD"¤®Î ?ñ”žó‡ö±ëÖ>|Ö‡–± \Š.ÍË_@/Šªm²Q.8KÁÏc—i4ž_.ðÏõlHóœxœOKNÄ0ÝçÞ£9iš¦#„˜%k¸€Ó8hò©Jª·'ˆ Vöûèù¹íÌ ƒ\æ™i¥X‡…q{;²GçF’LÊ^‹v.¦©ƒÖƒC’VK¤›Ù"öéƒa°“÷Ö
:Ú­îðQïG©{„·;¯”#<ÇßåÜ^×L1—š_@5DTžpFÍ±5þ‚ØÒ±ÆrkJõ­ÂŠOÝ¾%Îýr~öší‡Ì]â=®…ý©†pr_—?^ß‚§k$ž>xœmSKsâ8¾»*ÿAU{ÈÁµX¶ñkkfklÆ	BC¸É’ü Û2’Œ¿~v÷°U£S?¾þ¾Vu·ä”â9N>ÆÈ¦83Ý Ï#/Ç	Ì-ßÏ „Yàkâ´•€à1´,‚0r4‘çP’ÌË2Š¨‡}è be[ÿáÈ7mk±å:vN|e&¶qæûžëÀÌô}E¨¡^–Œƒ	j+ZƒŸ¨h)ßÈp7~ˆ^Ð¡ÓµÇŽ}ß:´ Ô0kšJJN*9ï3ð­eœvõõGQÉ²ÏF
ð›²¢+DU€?¿^4MÒX'kð–&«pû¾™ÞãÐÀ "…a‡ákôúTfï›2ÞDÏ^y¿\lžaøbúiGcølIôæ6†kzžj€Z«‹1_NÞÌ>‰õþ90î°-ÅQ>žùNîXïnn±YìžÕ…áL/è°‹Ù:ïÑ“}Ñ€~Ü¼Â˜,OI~°¼Uz\ëÆõœ•vÜ<¡ÏPve[î0ç]­_.Û×­Ñ0a‹”/R¥î»â¡ìÜ9½ŒãµÃn»9¦ó%+ÚÃšÏŠl¸qÂ‡cT&HOÇ¼F¹ñy`Žë™‰g8h`±pé>Y3èèöðjõñ¾0VosßØ¬aŸ—´¾Q¾ã½~Q­dV'Ä2ß>®’oÝôJ*¼D(¨ÎðØ™W½Þ_÷6egëhÛIõóÛõ#'?M¾»­nÛÔªå-Û¥ÃÖFŸ¶Nß5ð}$ê3÷ÙLW“ßOL[R^PÐõu8=÷THð‡i6È9k@U Áh¨`­¦e}U“¿@H}×1.A®Vðž÷$W!ió =h*@
+Kú?LÎQCÆO#J d¥”[J‰ ‚5
ªÖàš¢¶ï„*‘`P>jÁƒF˜"«¨ZÌi£ÎÕÊ¾Huœ£/Ý­r–èDóª¦J_qý£ p]°r¿H¨Š·<N*!{ž¡V%þeš1Žéãèç?ùŸ~xœUÁnÛF½ó+æ&µŠ²$+(Š¦©ãEœ 1’£°$‡äÆä.Á]ZÑß÷Í’”íäÐ»;3oÞ{3ô3í×œÆY¼ÝåiºÚîŠx¥®V»l“Æ«D­7ûÝ:É
uµŽZÕ±ñ”\çñõj£6»¢àýUœ¨ÕJm6ûd}Ä×ë]²ÓXÅE¤z_ÙŽþTFsM_Ui¸£_ócøñ»ë/sþVÛõz¿[m¶	ý'qe¶i´÷ü¿B¯VÉæz{5†Fi¯ëü½Ísr}ÛÚÎS;k(\’;9ÏMÉ›ŸÏ—tG¾Óœ“·ÔèFgä+&þ®×¦¤ê‘]39ªõ¼ÜwLJþ(³}‹K[±ž¨_(×`J¸ÓÊkk–QD‹±t¥\ÈŸY“që%ÐõiÛÙoœy0ž´#•"'ðäöhj«rš?iQ©ýEˆÏ¹e“³É4;š×:5O_29)ô‰'`tHZŸHäÂ‘dxÙ;õ¦f7 BŠNu'©^Øi VÎ+ë<5*«´	ñóOßÞ}¼w{øôöá/2Ì¹°­Eù1¡YÒC…tt‚\ÂÑlcóeQÜp†ò¨*/™ŒÎÐu%¬k¥<™Jöàù‰Íéd‡4ìû6(ýîn9RûhìÑïñsÂÈO„	!’F.!"Ñƒ`IÕµàp=Ã# †þÜrÊÔqcŸàžcÅp8¯`ÃÞI#4yx—\£ØKš—9œ6Ã½ÉÁŠÄüe£BDª[ÒW±NL6}Ò¶wPw@@@¨J¥V’úà²NÃiƒsÑ”cnœØ•‚]C¯~iSœ›€À½ƒçÒ˜ã!šíÐç(µø{×ƒÁ}ëH7¼ 9ÄêŠmp,Cu!Ó <03 ••ÊÉÙ³	™Û—e%!FÈ¡?YQG=ö1Më¥$á%p… .Ô;ßLÍY
¦<;7#f™	÷¾XŒÇ3rê4Ä9žè=ZQpÁÕ¬_þ ?äXdµ~NñÒ3}›+ž1·pÛý—7‹/7ÿ|¾ûx¸½¹S<¹s,ð*Ü«²DtÊð?VÁ«Þ¸Wv¯a]ô2Þz˜äÚ‚4¼>&AP{”M² >¤^’`Í³É
l¡•*ùx¬tVÉ§ .{d\\g„6PE‚ïƒ5>óVõi˜¿¢Æk4%;q¡7Ï³ó.l€‰kš‹Åák©'ç­˜ž‚ÝµÁdÖµxÇXÇ‰ Âÿ)•Ò5)?íÉÆ6p=œ·=>X2§aK¹a+u¶/+’Žv2ó—“ñxªÁXcXï¼Â ¿¢ÒZŒ…î ÆD"”.ƒ0¡NieÆ¢è³Æ÷0_Ø¢X¤§7ÿõ¹Œþ½³ó’xœŽËjÃ0D÷úŠ»/1zYJýƒRºÖãÊØRå”ü}MI»mwÃg8½!‚ò6x-8£ÒŽFé¤¸à£M“Ð‚F4>2/¹º†¥ƒãÛ BäœÑj7¨=*§%Z'E´T$nïsmðêJÆ>ÜT°Á%~~‡—mßpˆøL	a•ÑFÂå”’P×5÷ŽÿD5ÕL<PRn+žáý]Gpm
µ¤<A.aÙ#ò[3ä–|ÃíX¡Ï{ÏÄÜ0ôÚîÃÏË1‘?ò–…xª)üýü—!ùöp¹–xœÍnÃ „ï<ÅÞ+[€m~¢¨ê¡OÐr&°ÄH*À‰üöu\õ\©·Õî7³3­ ‚×VòÁ1®˜ÂÁ¢Žr=1f´W¨¯Ri¦‘qòe
¦FJM•r£JLVzé:rê˜µ\à´GNÌÚæ\àÝ¤€\Ì-a³{Ã[]+ö_‰aÐBI&à…rJ‰Í1†ÖðR’î»ÚL[ë	>0æ;ÂšvÞVB.¡ÍÐf„%\Ÿ4ôÆ¶\¶nÏCÅöº° o°›”
9ØùX¦ÜÈaiÒsÁþ÷Ó®Ž=!Ÿaéºì}wÝNµ ßÌñ}ùš3xœmSÉŽ›@½ó-åhMÜ4Í&M¢°ÙÆØxñ2Q5M·³¹ö0_O¢Ü¦N¥ª÷ªJz¯:ÁHÈSÄYbÊªbRM=åÜÀ
6qbhˆBE5¨ªI-¬î ÑuŠ#Åšnh*Õ¹ž*#˜Ê”"©æƒŽþãuJ"nrS]Ñ4šŠNTË<•Š9RäH"}—5¸¤ÎY	öäT3žÓûßäÇµ¿²¯)ûdMÁ2|,ÖÀ"%ÚTUÞuð4ïf}žëF°¶~œò.ë“¯À'´S{ºæ'ðô¶7õC°ž®AäOC+~ÙzëÀýjSÛ²lÇ²6öfž½63âlí@Ï
¼º)Â¿?š{Ï·ÜaK-Ôhò¾\æS±g7;J`ÆdJì®Ú]ÊqQ½×n<ŸDz@ZŒ*ÌVòF’"‚æ¼›g…'[0Ý”[ku7î5Ôb	£ÉÙqŠ0Û“:9¯f»v×Å÷Ýã¸QnŠ¯°I³9‹àP¦^W~ƒ¡ßòƒ,FQuw’PoÒ×öh÷H¥ÖP¿Œ™‚.£ÖÞ›¦ÂŸãÙkØAR$È*­1½xç7ÐWôuâL–û~(®­aùâ,ÞÖ:ÍLÝaö™xJ?¼]bµÂ¹?ÅôpïvÇ¬£ï;·½?n ë–×	ÑOH«ÕËÈ™%I02ÜÎ°Fùx?Z ¾E¡BŒPœ‹e<¥Ç ¾¨¼Z^¿IàÛyÆ]éŸf^è~®˜´dâÄ@Û—%ìÒ³k¾È²‰M
Æ¹`)sV+r}G’~Ö·Š=Ñ2ÿÖ‚Ý>|ûQùÍ?>„’Ç¤¦áËb’žs&þ ±=ÿw™xœ•ŽK
1÷9E_À¡ó	ˆ¸r!Þ@\t’Ff22ÄÏñÍÜêQmc†0'•9xiµý˜ržŒ6Þ„É©ˆÚNÑ:ñ¤kM*‘‰.8‰6Ž:eê2WL<’´fRÉA¯v_78sÎp)\aÿè8ÌŸ‡¸.N%*;´ˆ¢¯KiÿÅµ¾ÞÅ¹ÜàT¾Pjê¹ÔÊZÅ˜µEþxœÍJÅ0…÷yŠy^&MšIDÄµÄ•ˆägF+m*%÷Šoo®ÅÝáƒsNÛ˜!y“0haŸrvDº²F8ù†DL½ÆPLRŸqãÚ ŒÙz_¬#ï†LBÅ í±èœ{ÇCo{Ïí}ÝàŽE`œ¸ÂõÇOóo¿J>åu¹íŒEç´Fèp@T;]¦Öø_"¡§þWTÏõ²p—çé6¾[ò*ÇËçÖ
÷Oãé,Â›RÓ[åÒ­"]ú¾ú»Pý £\œ3xœm’M¢@†ïüŠNöHfºé†df3 ¢(â'*nöÐÐ¶"":òë—Mö4U—7Uo¥ïS—œ„¡Â4¢&ë‚ŒuÎ A(‰uiÜDERAKž× 1A•ëÄÄ„!Nƒ"ÌUÑDAšø¿C“iÃ„˜Ý>I6CºaD‡1¡Ý#¨*‰D›úx-Á€æ‚g`GÓœ—à=¾ÄGÕTü•ñŸ@Åš]cdES)¾^.¢®;óHÔã&oùµäEöüHE}l¢×ÎðÍYZ¤•HÁËß²‡#×‹Ñ¬Ý‘om‚Õðk.	<*;¶-Ëî[ÖÒ^NŽ¡,çý•=%Çšßaé>,Ë±,×šÞœÉæt‰›PQšsì®œž?Ž3	 q,ÒÖŸÂ¬]È[C¬ÜÖ‰t}´ã´Ã
÷öIH-ueŒ?·Î`?ªâ/*^ó’Àä˜[?¶ÅOQ.çòüûŠb˜åæžÚ>¤‘n-1¢VNB'´¡ê°mtkÌZ_á<ƒð†g±šÏñi±¨so|;Å¸¡®½ÊvÉºµìÞ:Qûp®æQ¤š;ûxŸx}D·[.¹Ñ–¬ßîµ[xLEŸªdÂMï3›Èy®j,'ýÀÂÐ¨bL‚xïíF3/¿´#&™Û²¨>·ÜùÔÐTf+ÙœÀqzÍÚÀ›2<ÝóZ¤ú|-<¸yj›/ú7§]<o~>ÜÎÞ%ð~^†žô/³¡?ø>1iÆË”ƒ¢É2Pò[Ã«üPUSIy½€O’’?i&xÞ»ÐªG’~å÷‰3ñXŒª)ŠkÙ±ÛñHµ¸æ4kë
(bûåÏü6ŸxœŽ½J1Fû<Å}Y2ÉÍŸˆì¶"6[ŠE6÷fÌ$Ã˜U|{SX‹ÝáƒsúÎhµ$åæ¬hjŠNkÃ¤½‹.ƒŠ^"Š-î\;dï•sõÌÆë¢·ˆì¼hy³DÒÁŠxëom‡GÎž
W¸xX¿(R[`¶ZÛ¡2&i¤c]KïüÏcPæ÷(^êçÊSZÊ+œˆàã¶mm½£!•^ZœŸípm©@!!ÎåZ™¦–ótù¾û[)~ A[7™3xœm’I“¢@FïüŠŠ˜£ÑcAQ€Ý‚€¸á‚ÈªŠEUýõãôÌÜ:/™‘ùòô¾¶f0Œy*GD‘¨¤ $#ª`ŠÁHA
y#rUX³¢r¢P ‡ˆˆHDŠ R!^˜ˆðLÁQ¤ˆ±4ùÏc‰N°ÄBŒ…˜E8f±óŠ(†)(%C\ØµiY=,2–ƒc˜¬ïtø>›®a?)ûx	!I€PÁ¾:GÊë5kÛlf­ÕEà½(kVåÏ$kÓ.úù¾yKª¤Éðö§4Ã´W`cnÀÎ6Wêþ°5¾öàÀÐhDSUmªª®æÎSÿ®Ý¦[Í‘Ó³¸îQmªº.[;:OöJuõX´[éó9®9àæñekæå`)»
FÏØP{ºXÜÍ¯G7s˜;º™†4Òéƒà›Pw–˜-NÅ¸°;¿Œ¢…¹žXGÏ*ŠøàžÎBSÏK<ä&Šezòx‚ðæ±+Ýë#÷è}ú¼ŒmZÎ¸—eQôÉ¥¯ucÅºvöúý%}TüpWÅóp¯ÑÖFÝ±Ýñ®NÔbÈÂ5Ü/-–†vX"´«·_w‹`pfySƒ„´½_à‘fPÇõ¥ç¨“pzŽ•ùÓfä(µ¥þB¯ZÚazõ	äe`ãŽ?lcö„ùÆqü\ùéÐì–ŠPLŒK-”jºLU9ðR+g0{ºž›©øÁ›s8p+ý{cÜ’Õ	U—ç f·Ž5-øÁó²âº¼‚žÕI‡¬ YÔ5+Æìþ
Oæoyý•qÜ®«ª²nA[‚&}Å˜‚'uYN›ßTâÁ—$xœQ=oÜ0Ýõ+¸wí“|Š"ºtè”™i‰²‰³%C×äßWÎ]2ti'Q$ß{äcŽD@±RvjÔÃ€ò¤Ñ(§Ô`ÍxÒí9¨ÏV‹#ù#j£Õbß©³•f”î$ÑfhI5ýyèÚA·g)°ä9DøŽžiœ<Eøj¿©$:ZúîÚ^5Z7ðE¶R
Ö•s¦ÿ…¶MwºCÅO¼ã…àÉZHeÛBÌŒ…8!û”!ÍuþºÒþFŒoB<ßïÝì'ØË³0”´ñy¥˜8xn_ýJGø5Ó§>˜™Ì%ãXåØ}JÍ˜`$ò·†ÊJ†š›¸NUÆ5Ø²`ÅÛºóÐÛ:%È3§½ÿF¼ErT¯bªüw+:ä%‰í2LðŽ'¨¹
µ»–ª­+{ÚGÂ¿m WN9«\}¶‡àÜa|{ø×ÄÉ¹ÃuxœMKÄ0†ïùs×-ùhÒ¸ˆxðªÏIf²­¶É’¦ŠÿÞv]Å› ÌáeæyÞZˆ ãÔ	lƒÂ¨QK/¥Î JÛ
.½Šd:‰–ØÑJœ–6(cG¤h}×©,*eŒRŠM´J0·Ô>¸si žÝ!Qk|?…Ûy™©Aºa”ì´Ð\Ã—œ³§i¨•þ¡²{÷Jqi[‚ô6TWTéH	×œ öÙ¿P¨°áŒ=õ?`YFšaîó2âÙúV¶Mþm6ð+]ž/ìŸ7þ´	àVûû†±Ça-€»ãÎìÿêÇ>÷J…Äxœ±NÄ0†÷<…7¸*M›¶9!Äpbc‰ÙM5—TMÊqoOîÄ‚`³ìÿûd;¯D`Ž]×Y=tumeÓrCmÝi••
¥5²°ÖlÁ•B†VR«,§¡—c‚+µ†V•¸Q\´}£Toz†[žâ
Ž<¼á{ îÍéZ<¦-Qeèê®½¬ù0À-œ3G—3ý²ùFÙ3Îd§=<¹OXð¢	°nžc¯ýlÆp“aÂ4Æez0´P0ô0Ë–+83¤Ù-‰åâ¹ð€Á€EïŒ¨gÈÊfp›ó¦ ×Üœ&§'@­]ÑæBœÙ)®sª*8¬q¹"!†Ý‚þ½„w)WŒ½¸r½ÙEkwãyÿ×sØ¥ œ¨Ÿ3xœm’Ë²›8Eç|…ªzHÝXï®¤+àÆ¾ö5ø‰gHH›—…›ûõít'³œÁœZëLö–‚1@sæÙŽ…¼»Œz6rQ‘MMËb9Å&Z—	ÖHà¹6†˜y¦û"¨“CÄlRÇ!vfq'çr!‡æožrœäqäº(s=Ó":<3qN…ÈåÔziž£eJ^ZæYÓ°$¬l½1ðõòúó½W=û’³ ²Ãò°í@‡B¶u]JÉK9W|mZÁºjø^”ò¢È—ð­èŠ¾,ÀÛÏ	¦a´›p¶Q¸öwûdúß]xô|?û~Ä‹Ëé~@ã$X:—«ùñÃÑÃ÷Ñ-ò£”?šB6·UŠW×c—>py9¤"ª·bZã~QëÕþ¹óˆL'Mª–mðX›çˆtöÑ8µªvFú¬É~¬Öä€phÀ^$;8;Ï®,ÈQ‡Õz]Ä+uŸ?m}ºyŸ~Æ†Þ2…Båó`”?Ý¢Ž|Ž5àßÞ÷!µîN´¶Ôï"8ugq]ïŠO•Œ7ÒèÍ²6â¹U?†RfK1º-æÐë½Lîl©ÂÏlE–³é,?ÎÍäžÖõ9?Á-[g³»Çë¹ïO»Ø¬F÷0:œWrŽ'"Ö@º«™åêçªp˜~Ü¦ð8f>{&n5-nÕ&,¬Éd˜¯â²ãÊ¨ŒÃû^tÑjÙâoøf,t¥ýŸÙt=ùsbÚŠ‰‚NUì®X/Á_èÕ>ÀE[ƒ²È£\´Ý¥Yó–³Ž59kè iÍš½u¢läß`ß3	‘¿vÙô’e9h9øéª²—ÿ…1´™$xœ‘ËNä0E÷þŠ+jÈÛ1BiæFˆuÙ.w,'²ÝÝ“ùú© b¿äS·î­’ˆ`pu×Ù×•Z‰½2c‹¤Œi•”}'‡ÁÔ½U(VLP%»¡ëP92ƒk¬•k¤é”•FK‹£¶Ô6ºx*Ó’à7FO^ñ)Á£½¼žó)Ó¥'¨‡¶íUÕŽ#ÜVMU	³Ì³/…~ŒªºùDE<ÏtX“å^2¦„Ûçêc.„Æ`¼>!~½«AÝ÷N“v$µ„ë«—Õb! Ç&K>„åe	£ó)¿òaï”ŸD¦’¯n ­%–VŠ–¢Ùv(x}Ž3Ýïšp™¼™˜‹.x._&˜ñÍÇ£(íŸw'Ûî×„i»â•Õ˜Ï~^Ã‰Ö€†àÉ4›Œàü_†²ÿ··ñáœ%Þârá]«qž	jàÙ4@fžjæt¾ª±ÜÏIÛÃâÜAoßBü…ÕÂ"š2xœm’Io£@…ïüŠ–æMÒ¸¤d°1`³xát³Ó`–Øñ¯&ÒÜRÇÒûêIõÞÐ1(J2	Bc(¢„QŠd#˜È	ÃJT3(A¢
mÜ1> Š–*!	Rq&Q*QIRp"ª«$&JœJ	òýÄ£Í’¡L™¸d–*j&#,§’*O¾1¥3!‡¢é€sÎzà±’³´bàµ˜î¼÷cÏž)ûDyrF˜Èx‚3…´©ërXÌr°Æ¼ò¦cíåë=/‡bLž'ÁXÞæ}™ƒßÿF7L{>ÌàÛæVBÏøÞ@ ·^OuMÓçš¶Ów«â˜:ÃÜÓ×¤8c÷uöMÓ¬ ²5³žÃHBîã~7¹ýrÖ¿ÊK¦_Z±¦û4¶Vë™bš_‘¯{¼šm‡`á4f–lË{xºQwe·q§I¥Ê§0Ë²Ã&<
 Ü{×âx`›,_›f­•û¸Ž{t¢AÐ@²Þ­­ÊÁsÒøòðTž¸!bç°q‡Ôl¿X°~ÔaxàÃ£Y"ùÁüt?ì½aù'îŸøþã¸Ánµó­‘z6ÁWgÜ®–Et‹T[ ñÙ_G6±Vö-®”tç¹›D<\\á²jŸŒ0[Èp”á—£<ØÃßß£Ì˜R#yYï#œH×”£k†„.V/¼à4ô)Ôc(WÊ²ÞQÅÄ®»Þ$)¼p»=Š–ïŸóÏpãbNPõ&€·¦‡~gcl?'&8¬ËhÇËtì:²~ ¿DQA ëš1ë˜OÍ(^ê¸Ÿz#Æ}`œ2
|Gópir0•·/yú±m›nøïNùc‘xœK
Â0EçYÅ›’RÑÐ‰ui^ÒlRÒ\¾¹ ‡÷p8p[â`Ñ(å˜ÑÞºRHÊ´q…QSC=Y\¹A4Vsë(ÝÁn…È­&r†(šyß·µT*ô.o³Ë-mÐÃ)ýVºÌ“¯%}™ÏÀ´TKÆ8¨”ìtžZÈíÓBÆ€ð¼_/x—öë”GX·e)µ‘/Ù)OVž2xœm’Ks¢@…÷üŠ®š¥•„†æÑUÉT@QˆBD£QvMÓ 4/›‡1¿~œLf—»¹U§¾s6çô‚1€’D'©#=ÆšCEa„¨ØDil Ñ„`…bšH-¬î“¤#DpÊ¨ž*IlâT1(Â‰Ac#!fœ0õ÷Ÿ×4‚2M9ºN!6Uëºj`ÌèÕMAˆq"‘¡?5¸¤®Y6,¯å<žn9ÏÝÐ±û„ýPWUMEPƒ`"+²,Ñ¦ªò¾g,òÞbðX7‚µåõ9ËûÓßß€lY›uyîþží,¼ ¬k°õõ¶Û8_º$pélj[–=µ¬Ð_N:s§{iœ
ô:ªÂ»X™pÏšïóµ9öª•UòG”ðä#ŠùSÂÃu¹ôÒ‹®$F<Õö‡5ô½B\Zcô­Tçcy¼zõÜ¹<hv7Á†W6\¾Ûh\½ÌªKH§™oÎÞÐœÂ·š×æ­š¹ºß(†õÃ>é6Ë¶2®þ2håÎ®Õ™5y•ÀÜËÎ«³“·S·,{o/|n¹ÇöpÓ÷÷8Zõ¦xÃÑÞŠBugÛšåŒg.óy-6˜X×TÂÕÑ®a%}ö5u
Ï^D%BÃ€©¾¾Äk1wHyU6ø|Bq¡ï>®G…ÎÙ¤ãÕÜHÉ£¾ÙŠ ­4×ÔòÚÉõmâGµÛ¹šº>ÞùÌ5LßÍ·9#ÚüIOÄ0é_gN0û¹1Ég"c ÊvX×ƒ_šHES“øÖC™ÇõX±»¡MHÏ$i÷õÁ·úÐA|M¸"Ým_ \.ýS–xœŽÁNÃ0ïþŠ½£V©í:1B$zñkïsÑ8Uâ ñ÷Dá÷™Ñ” +â8é`]ð{vZƒÙøÎ¦ÐZm£°×ÑGQgž‘¡i­³–}BtIKè|Òm´^ÚZá.LÍ)^K?Ítàœ±Ð†Œø
ºékçnYl·´sÆìqÞÑU£›FÅi‡Rð_³ÓæÛT/gá:!¿ 2Q\ç¯é‘—Zü!JÿK-k'YO 	•Ž T¿?™‹~a÷[¥ž‡c†l¦”6áýúOõÙsÿ2xœm’Ën£@E÷|EK³´’44O)l^ÆØÛñšnÀÞ&_?žhf—Z–î-•tNßæ!JUŠpBE,cÅH 4&ª 
BBUUT(‚"WÇ-){ ò‰*Ê1(Ë”OS1Ñ&‰ó"¨¢„¨P†Êÿ|šÆ+R^T!©$c*À”*H#|¬	²,c’&\Ìú¼j—%é@HŠ’à¯ùãÎ{Ç:òœ’ß€—’R$fP€ÃÕíVô=i]ôKÀkYµ¤¾NïYÑç,y~~¨euÖxú;†i»k°µ·`çÚký#
Íï=80v6tÝ˜ëz`Ëü˜¨Ò<4<%?‹›µî¨ë‘¸º³™­6¿}WôÞ<ª¦à4êã,ú’6{Z,?ŠÅ¨Ö‹s>Œšv²îãv«<5ìp­ˆÑœ)»ïÉøR[ž;4ßÑ¯É‡{§0Hhò$SeF1‰Ù°›!,ìk+‹ÁfÌ—L?¢¨jOCéö”ÆxTûÏ]ÔO'!È7Y»Ì*â¥Ýá~ÖKÅë§K¸”FaˆW3B[-‚“Ûosÿ:,8pÇçpERïòaÑL2Ç•krÞ“¡6ÐÊ€Ía2§CÈ+yR-t˜P9¥|ò¹ÚÜNó„‘š‹›±è-:]ÅŸñÂÖ½^0ûäÃ*nJ4¸ã]«ñÙ>[™£}.7	Ùù‰ÿÆ·ÕQ|¼òÍÆ\/~&Æù¤Í¨Ùõ
ZÒ0ÒõàÏ«2 muyûO¬—ã'ZÜIÇqVqg5xˆR×‡HcÜ–E™u @íøD–xœ•ŽÍNÃ0„ï~Š½£V¶×u\@U%$ÄžÀ?ëÄ¢±#ÛQËÛ8Àqf¾™^‰ ½àLDï¢òÚK´()Z2ÒHé¢1jˆÈ[l¥ÜÁg”¶¨×:Š”;âñ ¼Ä‘td¸æ³kŸJ…›35x¥”É¿<NçÜÖFû@'ñ€(ä w\rÎ|™çÔ;ý¿ÉžÓm]`,é²õ¯¶æ”ÇÆØÓ·µi¸¦>!õT²½ü†Ëòå4)Sµ}Ûme¦Æ‹é}¢yÏØ[3…]‰qç>îÿøÉ>"+s-›xœÎANÄ0@Ñ}Ná€œ&®[	[Na§.­fÒT—óW`õWOúÞÍ`¥‰FT\X§±hJ	™¹”Ä+‰à:HÖÂ–Ã)Ý‡ÉÐò J2išbž%ò"³âªi™
rùÖ:|Úî|\Ï²ÁÛ]ÿú~·~Øãµõ¯Ä1%ŠÓœ^CiµîîöÎ¶ÿ.>v=¾«A·ÚÜÀ”Ö»‡ë|z7©á.>NŸxœ•ÎÍJÄ0†á}®âÜ@KÒ62£‚(.ç
òsÒ„™¦’¦VïÞŠ®DW^øO-ˆ {E;tŒ)a"UÞ
+±C-µ4Ìp®:œ%/¦`® º`¹w.ØaP‚{¦©ìB/…¤¨½eZˆYkœÜf_Ð,ð˜²·sá`¾J¿Ëió®uót&úžïÅ ¡’R²×)ÕŠž1Õwëâ".öóž.X2^ÛýÅ/SòÞÀ€]GØ"„ûól;$Ïân¸¢‡”!¿NnUlòBÈ9}3‡ÐØ÷›ÿðNÿ “íÎ{‘xœËÉÂ0EÑ½«p Ïþ_B±¥
…2õ-°º›s{¤QNU§#2J€'bCTueÅÄÆ˜¨™‹[jXº¤Â™S*û¨¿Îyr€dàîA1¤˜EÚû°6yÃØyÝ_e§)ÿz™Ð<k{œ¥ÖzM^±<¨¨”(ë<½ãUì[Mò9æå=C| RŒC¥žxœ•MN1…÷9…÷ÐQ2™$€*TX $–°oóãL¢v2U’Q[NO(½ ÞXúä÷üìšÁÈaÂ¹AP&uœycØÐK©ÄÀ­5Š÷ÜðuÆT	áÊ¨Þ(ýèPji8§Ò1¼ïÍÐ{ê‰^j˜3¼$—QxÉ™9°Ö¤7²99ÛÙyz&9SŠö\ÁmEb­˜ácðº`½7¿}³ÇœðÐ5‹«”öÀ…•MJÞâjº”8¦©…'ä+ÄG]›‹g, Á,#Ä5 `Î-qh1]éî;•í4Nu[0¹Ý=œæÛ ±z)§v\š+d<Î¹¢;çŒ¶.!Ÿm3ºÕìýÊ\žþóòdô‡îž"xœ•‘AnÃ E÷œbö­-cìTQ•tU©Ë¶À0+Ž±`¬(·/v©É®l@_¼÷G@¬•[ËQÁˆ-*-Ñ6œou•ÐeÉ‹bÃ&p$ÀZrÑ˜mB*^Ö²1\rkSÔ­L¨T£¥´LÍä|€ÃhªïýhZ:Ø©ß$w×d6:×þô
\Vœ×¥x*Òb)=õDà{rð6Gí`wl—}Ä0â'ÅŠVÞTeY!Ê¾'£­EM1|äÁ¥öá4ÔOé°4¤"RdìËõ&E©d^ñäî7 ¹´!åÃåÑÊâ<M>š;‡éyÝßR£ÆÕy%Aé#õ£¦$k—{ÞÞ°ø¼NµL3©n©´°-BÀk¯MOÿX•3öÙw#šÌ[›µ——ÿ|ûÃ»Ý<xœ•“ÍnÛ0„ï|Š½¶I1²¤Àâº(ôNÛƒÑ–k‹DÊnÞ¾”­	Î^ìê›ŒV±C%Y‚	.UYñ²¤ÍEn$ÞHÌ8f•²$­èÐEÐ¦0•¨¨´,æ¥Á"WÈ‘Rf”¤EV	MDkßÁÒéE€/Öié»-,Ä¹3­ÇÎýQ«©òÍ°9gùœóœÃšŠ¤nccÄ¾¢5|ìƒªa±“Ãó~‡Ãý4IœPž³’g&tžP²Ôj:ÁÑÃNnÁ´?€u€Æ Ša²÷[Bžj 1ÉæâÛv¨P[·…X#øVy°·!Â±F—ÆÖÅqJ^(Þâ¾\3‡ÙÐý“Ì5ÉÁjtC–«5…¡6Ÿpáaöë^66ë|ë±ÇÓ¿€ž‹;C«”ç•Ð"8ÛÞòãœÇºEeUðÖ«ÊAû»Û9tp©^ÊèÍÕP6œ!ƒëÿ{Ç$6Ÿ÷}¨/
¼Ú;@§$6?;ñˆ_â–Uï‰·„ã)iœ já¶Ò:Ñ=CÚ÷;¤/äûØöŒïÃ”µÝ:ÔoÌD>ß¾çß!b	”xœ•ŽËNÃ0D÷þŠ»G	~ÔŽ[U¨…	Ý±³}¯“¨Ä®Wˆ¿Ç<~€ÙŒt¤3šZˆ€GM[n¤PƒF‘ÚDm”Úë$ßHTÞ»¸B©B¬‘Öq¾áB	/­×ˆÒZ5D)7Z’!l™»Ö)8&,äVxœú\FØ»_ÒOäð¡y¹a”ÐÊj9Àoa.s­Tà™æ:ÁýuìÏþ»g*‰Þû6ñ£*-¬’
:nšÊŽˆsY\­s!Gx{9ÁÓí+<´Õvò%d¤•±Ó<&Â.ÇØùÏÝ.³/ume•xœ•P=oÂ0Ýý+n,jƒœÄÄBé†ÚÍgb‘Ø‘ãPÁ¯¯¡[·÷}ï=Ý¥ˆŽFA™¨®TcjU¢MÉDK[i+d«É$#új£+¡k¬•Œkc±Ò­®[!LE+´\h¹‘¶&rI}ˆpLxEG\üY÷øÊª»Y—T¬Äý,Ç9ÏÖ:ŒïP6uÉ¹hD¯´¥”äîèRÂŸèRË¬{Ø]Ô#î/=ëÏOhÅXË)…‚6Jî~ÞBÄ)Ä÷àqi\1ª0#„)¹àÁ.^?9¸t#¤3æ·#“„o7 ¦è|B6_têÞ² ƒÉ‹'99e]JÑ©%e±—S·Ê›ºŸ9FùÔÎ‡!GwöhŠ`m¡nÛÿ}Œü Z&”Ÿxœ•PMkÜ0½ëWÌ½ÈŒdk½^BIÚMs¨!‡ÞFòØ+²–I.$¿¾r
=
ïcÞcJbelK¤çÎôºŸ;eúÉ´ÃQÑd¬Fc‡-*q¥Ä¡€Ö†Ûc•‡A;2fvVh;g;¢Ž±[A[9Çcá_`ä-,îÌñO5õ&;…ÇæÂ|›iÍ•k\\?ƒ:´ªGÄ^Ã'EEW_
'øÆ¾œáË–Ýn^í¾o_9¾41-VÝuCuƒÄCµŠ÷Op7M°úœ}Xàgw¥$o·ÂÃÓJÅÇ uÞwzâì’¿–˜„x~ùÎr7Mò™VÎWr,¿ÖF&9r‘ã•Ÿ½û8!U£HjÔªÁ¾Ñù£Â³çI<øeKmúSáþoÜS¡ú£´¹²Kä¿:
1úe/çYÚ·ÓÿýVü«² gxœ•ŽKjÃ0EçZÅ›ý,=‡’Ž
vú<Å"‰\d…Ò®¾JÛôN.¸ŸV‰ ga))o9E2(ÌQ!M\“š$’×:DÎ‰½»J¥¢¥àÏ’„²ÒZ5%n¼0AÊè¹Ó.iî52woËZáTb%·ÁK.Ñ¯õ{÷KÆå?bÃz;€0JL
Q)xâ]¬Ó[n*¼Rn<ß·°Àþâ~¼P-t{ÅOT¢–Üô(û*ÛN1Â5oM}˜±·|.‡5¥Áîþs}Åæ_*‘xœÌK
Â0€á}N‘T&“4ÓŠˆ¸ué	’Ìô}SÁÛ‹'\ý«ï/YD'‹µuM¬“ˆmòP³óK"4jqd[«¶e)™À¸ÖP+6 !j¬‹©³Ž™"CŠ0xö2¬Yßd,ƒ¾îÏ4èÓ#~{yH^d:¬¹?kã-9h]¨´ÎóXŠüAÕ¾q(¢§1.¯Y”ºý"\­]WÅ÷ñ×P} !SŸxœ…=kÃ0†wýŠÛ[;þvB	]Zè˜¡c8I'[Ø–‚¤$øßW¦íX:ï¡çyÅEOµv¢lˆK„‚K®šFð}©:Ù
¬š’“.Ù=Ùm]ì;ÕQ!yÏ+^·ÔðDö¼ï´J©§¶F.Ã[‡3Þ¼YùŽ!ÅÓðó…^ ìêªÛ')‡§¢.
&Ý²˜ÉÃ™8Âë-ÈŽ“Øæi"oiÎ¾Ñ¾¯[^BVô	e…72ÀSˆÎ(¤»“¿hï–‹tV_´™	¢”ñ†ó¼ÂÃù‰±Ï­+eˆ#%|[>ÿ‰?0@úçu¦HóÊ„wÙÞñN \ý‚€V¥—Ö’ŒÙfß¼ÆðHuÛMq	pÅHÁÖ;Šrgïí~k¾õ2v6ƒ%•9­3±þ=,ûâ¡Ü“xœ•ÍjÝ0…÷zŠy€^£+ÿ‡PBÝ„E]¥#[D–\INpž¾¾mJ×]¾Ã™’ ÒFÉåU£×v”îš^™Nv“5×ZANÍUlœ
5-šÑJ};õ¬¤²­VÃÐŒ£mÍ(UÓ×ãØ›^ð^–˜èkâ ]Ö‘žößéÞþªõTiwï.øJÇõ3]»ZÕm;¨š.²—RœéêJA¢G¸²Ð—=ë…î_¦Û}xA
§Óü¡v­jÔ©v§*ž·ÂáéÁ)“ç‚ Ê…K&¼â âVPY@>Î´ñr™¶Ý{˜Jü ÅàÚl\‰)»0{ÐÏé †6ÏúŸw_È…›ŽÁ)ñQÑ÷áÑÈàÜ°ºðÁ»y)ÿZ=qÿ­ß LÑŠµÂ8¦W¤ìb¨„øææ s‰Ö^¦ãî¿Ÿ+~"ô¦8œxœŽKjÃ0EçZÅÛ€>ÖÇ%”i'®àIzŽÝ4’‘eB³úªMÐÑå8Ü[D¡P9+ƒ@<NB£#9·Nø0*¶b¡TI¹1ø‘Ð"*n‚4ÒE/5ÚXd•7ƒîuÎNSÌ	Î¸¯¹üôëï1ô!ß^A%©¬“ÐqÍ9kô¶ÔJÞh©3œö-Ìp¸úŸ<^©$úìs¹ü©ƒÕR5Õ4•aŒð±µÝm_ÛL…©}y¤
ýÖGN´1ö¾\Å.OSç¿^þ–} Te_Ÿxœ%OËjÃ0¼ë+ö^dô²,‡PBzìãPC¯E–Ö±‰-IÉ÷wC/;Ì³;[3"Ø`£ÖclöNI½'gj;œâ¨moF#'Án>cª€­:èÐO]×F­Ž.JF)<Z'Ó"*ã˜¿×yÏ0T|`‚ïéfÜWø «Ç¤pÍŠx*~+ä5aß^AZ­t'L/àEôB0R·¥VÌðŽKá|/a†ãu|âéŠ9áÚìùò5’úZàÂR”¥Ç†Í|€'þ.ñ7Èåñ°íq™$V`ýDÖX;ûBj¹a€|ý|"§Áß¨‡O‘Xù@eƒ¯Ëž¸l„çJ(Â®Q–“ü\Ìþ Ml¾–1xœ’MnÛ0…÷<Å,Û…É²þ‚ 0šE	ºhÚu@‘C‰EºCÒ®o“³äd¥dÁŠíŠ 1ï{ï°M‡¥hÛ®Á]½Ç}Y§CÉL2ß—¢Ès.¤bGNhÔyÕÊº­"kŠ2+Z)º•Ú7rU[c)…d<†Á<\n/ž¢9Y÷£ö¤¥æ[á¦È«"oŠ¢hw°Éê,céuÒ! Áê0À§èÅtÝ|F$‹fë¨_¤»]Y5M¹J™âiáï@éŸ@"Y8qœ‚Áù`ØWB._•6øá#c‘–jÂI\Â€¿e>ŒGàV‚àÆ ùôÊþ1 A¥â3àË÷çç•¢-8’©Qp 1U›´Åyˆù(úD$P\›H¸…o7÷µAwY€k³6,ž®»º°hÍ¹¤ „>šàg_n‰–H<€öïoµíAE+‚vv5¹%I· '\AóxBufèvMê·i}Kå4ÿþ–ÜçÁkòTtéßaZÂùÖeF¶i	Iþ¢{‹rã”Út—»ÿù/ì+ž4ž“h¼ð^ÃgÒS‡ÔÃ½O×C¿^·>üiðÅ~„€6•ƒxœµUkoÓ<þî_q¤÷ˆ5KÒ¤k*„ÆØx©ÐÊeƒïNrÒX‹í`»íÆ~;¶ÒË64	8ª_ÎÅyç9F!Bš§yt2®¢dœ„X1†8¥i–ã"Žì_Ž4>É&¤¥
…$¬Š°È²$MpœEÑ´,sL]³è¤¬›1Ë3BW¦–
.™ØH	s/¹Œ%®O—œ²&($ÑdeñÉtœÂ‹0CbW93¼Gfj8[é¢†—7¹{žÞ ØR-}h¥aO`Nl(kŽ£V1afà°DŠ 45U¶80kT¹Ô\–HÈÿ½ÝdÂ3–ÁÛé±X†"zL§m‹%	òF7ûî¤s·õ]@ p]³mÉ‚
È½AáêÔ755û©˜&•¦+Ã3Œ6ì;B¥$·îÝÛC¹Bç¡%GPHµ´o×ƒ£¡%5tN“º¼ÃÁX, Öµ’Šw~ÝI‰®åÆŸÔUý…VÃ´ñÁÆón~~~±8 £G %96rxKyÛàó€%¥9µ´©¥6³ÿ‹èRÖdñõ.n[…ZÃÕ*×wÚ ×„cèmX->-àØ)Œ’MƒJ“ÑÁáÂß¶{º›­ýK‡þ|â›â0ÊFáÔ}Á7ä«Ù®ÃŸšg’ì1²‹	9ï·T<„ÿåSIyû¹\ß~”ÊÀë²ôµzÛ#~A9ê–¸¥äA*žÌà‘íÇ9ñXWVäîÙ§‹Ë/`ÑCxcTó¢ '¬-˜Ã3´6s¿‰ßØc¾ÿ¼ŽúA¼ÏÏ>[zœýR8o‹«ù¹|Ñt‰‡§éYñ‚°³ðØçð0D¿!àÞÖ#¸Zñæx®í0B‡ÐïN¯3xa—ýJw™{Ð¶‰ãÝÄÃ$žLƒ$±wØ%Þ™xKà=»—˜\[™¤OÃƒ*NE	Ì€“VÝö´ÛØÔÌv8+þL¬­kiEzîäÓ5Û(Ž`ƒ^—]ûØiK@Û%…Õí56wC“ ¶Q5¬èäÜÔJ®–õ ÷óãÐRS[%¾bKåHVÕ(¿›=¥W“Ÿ_Z$®›xœ•ÍNÃ0„ï~Š½£DvüW*Gx€úgÝXMÊqÕòöè‰{Yi4;ûM-ˆÀœ3èŒt`(ŒäÃ¨µ°‚[ƒQp>P?Ða4älæ
ÒÉyˆBƒM¤Š2mµÒA*5—(éè¤&öR§¥ÀSí
¯)·”lí¯ÒOwew¾÷Ëé˜âL3©„€Ú†4õ”jÅo˜êÏ—ÕO°=ºï½;bÉ8÷-âçt`R(¥¡kH”—t,¥!LíãœòR†ýœÖÚùZæ=!SZálkËŒé†+Xp—¿6¸NXl¾§ù% \[£SZSnlç‚COÈ{:dÝcç>7ÿiN¾  eBžxœŽKj1D÷:…v^MÐ¿%0Ádkr©ÕöˆIA–“ëgÈµyª9ˆx–Ö˜˜ƒ‘Z€0Ù¢ÑF‘Ô’Îè <±8¨Mn½ðÖd@+©$ •¨²¥´í\´áw‚wB(aEˆD!{í AP>{>Ý¢t,>çÚ¿R™+{>påç-ýôe£ÑhéãþÊ¥Ó¿Ï—ã°`Øk-sÒ?TöNãN<Øåtc®e«8—½ã–ûW;ñÒfçí³Ò‚{Yjo}?V
²oE¦_™—0xœm’Io£@…ïüŠ¾å`9ÐM³IÉ(`;Ø0ÞoÐ4‹Y³Û¿~œŒæ–RI%U}õ.ïu¥ ‚ÆA¤a(
Š€#‰`‘(Q(ªJ(FJHŸ€J¹:hhÕ¤JD‘€  ªÉ¡Œe(*J CIƒ4”°‚°Lñ^RUÂ‘¬)"‚*D‚EHAH4• Ee94.è»”5À¢Y—£oI
Þòð{~ä´©hñÊšä€²øÓHcAŽ°²ÌºŽ6ÀÌºy‚·Š5´.îÉS©_ŸÀ/oI´YÆßeÌÌÅ
¸¦ü…¹Ò7ÛõìgÏ­A]7&ºîÞWêÙ¹5Y–’ž±s›Åð<ba¡ë¾Ë;aØæY,òîò–ç]Ûp`˜…£h¹âì°Ãw4•UƒH§;eÏ:¦ôÐò§cO +\}Ã¤ÃÔÎÖnº­Ul>[×ßH¦ª™†éê®$÷"a)•r¹ZUîìõ”g'ç{£Œüu›èä|ÒùÌ‚8Ümœ:<=±Ó:<BKæÇjØ7Á#kýlx$–²Ejà|Í÷Øz„çÄé¬õuwé]=r UÿÑ–±¯Ð´8JíÛ.ÄÎNøâë¥c›ýHéõØÂVœt:*“Urà=ŸuíŒŸ‹‹7Ój)DËÊHSÛ<¦7~Z[‡ÄÙØ7¼ÓGžGl)Näm4ñòjê¼ÐSg²|çÀ»3§;îŸg³ÕôwÇ¸%m
Â&¨žz©®%“"—¬bÅ3yYÕ1P0’Gl¨þê¾êçžxœ•KjÄ0D÷:Eïƒ¬ŸGa“l²È2'Ð§e‹±%#KÜ>æ†UtWu-ˆ€ÁyF•µÞ.œb°>è‹rN° µâ8OŒjr˜‚©‚óEQJ½d3G6ÏŒÉiâV	ï´¦³1•á‚˜V×\à3o[ƒ÷ã0›I&ú×'ÇåáÜN³Ÿ--£ËûLŠOTO\	x¡’SÒÕ=ÖŠ¾0Ö>ÚéV¸Þíƒ·;–„Û˜Ëò\í#´„ö‚„„ø[<+¸œjéaýŠÏ®íýScN„|Ç%¡rƒý}ýWWò"‡f‘xœ•ŽMjÃ0„÷:Å[¶É²-)„’vÓE—=~žl[²Ííë>˜a†©,³Œá@™âž5I­½FP!¥›äàœ”g–d]0V0Îz*…UÂ#ŽÊô®GC%ÓžO¨¢Š;ßs¢[]R¯´®>rÖ«Ž:¸—'Oó#¹îzÛ[œO6mïÀ&Îè± &x£#§äp·P+øÆPøl»]àr3^oX"®§TægõÐ zèèD)!Ú9îøü0ºVt´sI-Ãö
/6î@™z…½åœJ%ä'Ì]—¼ïÌýü¯ûäPÔlxœ•PËNÄ0¼ç+|A*7}¯VhYŽÀ¨Ä››8m´mºj²øzZþ ÉËcÇš¸0ccYUêZaauc;Ê˜”Å²Æ¢²Êrª*Bq¡…}„®³YÇdsƒYJuMš
UæX›šM“›ªÎ5Ø	ºÆa^ üÉZ¾ú^<ð²ºîƒN±NFæC )¬»DÏÓ¤e†*±*àD±²“‹‘xf8^ƒ`î¶~8óâyLæ¥ÿ“n•59H,W©øñaÖ}Ý<“Áù~y4–e¼»ÁØ‘å[!ŽØÀìáôþÊòcölä‰&Ò,ŸÖ?ÈÙr”í…µ³NSt³—i’’T¨Ò«D•òm¥W#DëúíÈl­ì¾wÿKBüØ‹‚æ›xœ¥N»n„0ìýÛG‡ ?XNQt—&EÊ|ÁÚks°ØŠò÷9tM”.J5šÍ#oÞƒâ ½f4]¯Mh²C-;ï¬c4^¡½b¥ÍÇÖi=Åµl‘éÖ¨=÷Š;”-õµTò-mð–æ¹Àu]i¦H#x~`5Îe§e/q¨\Z^ 1²iº^¶žj-kqW—1gÿßAÌ0'7qúŒp´RdØËº¦-ñ1Ñó)…p²_gx§-ßÆ	^-˜¬²Øþ\ùúËAñ­×|ÿ’xœ…ŽMjÃ0„÷:Å»€-K–TB	ÙºhO Ÿ'[Ä‘Œü¼Èí«ºîj˜oø¨"Â8ãGÃ…À‰'tÐÒN^bœ1:gt\ÎR±ÝVÌÚÙQ#WF†)Î+CPÈ7VyÂ(fOZK…OK_%-Xá’[éëo¹®;ö¾<Þ›Á4êaZC7Èa`m}$¢|`¢nçáW¸ÜÝ+¯w¬·¾Ôå5Zð†Îe·”m}B9i?	ŽsßK%ˆMdKužê¯›cßiÉºcçžoÿ«²!Äa"–xœ•ËnÃ E÷|Åì+[`0¶«¨J»ªÔ]Û0!F‰!Â8Qþ¾¸ºë¢lŽæÜyä„}Û:ŠÈÅà”ÖÕ¢8 ƒX‹m¢“´'g•0dpT3…ƒVƒäMÜvuBrÚwÖ¡‚¶ŒqÖµæ)&x6¡ZàÕ«c:ÀNýzº“ýÕšÚÄù	˜,"§ãð@Ë#…Î>gLð†>Oð².f‚ÝQoÿþˆ)à©.wURÑr¨¨,*yÇ9^Ö°.haK*áä‚J‡uþ^¦8†ËŒ…/yü•ò„0V•õ	MŽé6þ©ÔðYjã9û`*{jÄ ×2l\3AWN’añÁ lReN¶r,	zƒ5!þÐVÑ¹Jßÿs4òÛ–:™xœ-KjÄ0÷:EïCŒ¬¿aC³™\ Ë–Ý²•‘¥A–!äôQ «‚U¯U"˜ÅHèƒ³NÉI:.¤A%ýÂå"D0Ò	á”ç{b¥ÜÀêy1Zd­Aí&µtLDÎ;Ïƒ·&¨Q Ã³m¥Âg9óú…ýì’5j5$¢ëºcLÃ\ö7äF
«Fxáç¬¯{l*Ü)¶ÞÏcÞàòð¼>¨fJC©ë¿êÔd5¼rÓUv‹ßPéYjƒŸ’é †ÐK˜R™±Å’Ù/¾ÒK­™ xœPËn1¼ë+ø¶µï#(Š´=>ôCAPå¼«5$®áùøpó rÌEá9CNDPw¦&Ý¶-_öÖµ+™ÒuÖS×ìQë¦êP1Qdè‹²ÐÖ4U£…¤Mï«¶ žê¾1mék×t•¯÷¤páaNðgÀÀŸËxÂü8Ùá6^‚¸µóôŠ¦*t½—°Ñ­ÖJÐ)0S‚à÷’í :³Þ·'J‘ÆíœŽŸÒ¶í«©Š—‰6v7àÃx xpÈø2­çãÓH$
NJýr¦sˆGX²[`ïåQŠÄøËá?½‹iõæ%žô—ÍäÌCZàïî¬ÖE›…-Ká"T;;ºžÉr^5™à‚ãBò™ÁdbåÓ<½ù}ó’Ïhi÷^Xðe4ËÌxbÊœwkÒ.{’Ç0JŽ­RwáÉmfï7æùæ;ûW¯gF­[xœ-ËÍJÄ0†á}¯âÜ€á¤ù-Ã ®Ô­¸irÒÆi“’IÇÛ·‚«ïåƒ§U"|è••%Ú£´‚ToÆ ø Ð˜H6
ì6W)7Pƒ·jpVsƒ\PÔ!*âh½6>DŒrŠÉÎím.^(FxK”áô}$[Ž¼üÏ|YÏÀµà(ŒD¨»ã]SkTá•R›áq¿ùN×ño/Wª™VêôO¥AkªÚ}æûJà—ôï[pàãù	¶eŸRžàNõ–J†V€3®Xßýô1LÙšxœŽ[j„0@ÿ³Š»åÆdb,Cæ·?…Òäq£AM$Æ>v_ÛÙ@¿8pj!‚‹¸HmÕAéÀ¥öº§ÞvA¸B¯| BÇÙf
¥
Þtª©É‘DI*(§{Þ‹àDÏ¥äÈ=3Gr{1Éç¯æØr!¸Ú‡h·‡¸}z×º¼>We×ÉCƒDvÚ5ÖJ^(Ö	îÇî&¸Îö—·™J¢¥ÍeüK9
¥¸8Su¦ì}'˜è>ÌrÐ1í•Œ‡À“‹«Y œsa1#¸‰ÜÓÈØ[ù&‡ÐØï§ÿ¯³‘Pi[šxœŽMnÃ „÷œâ] ?LUi¶ÝTê	ïa£$`a¬ª·/m.ÐÕHŸôÍL«D€'­œ#ÞÙàµ•Ö+§•™¸°STN…‰ms¥Ü ãØ¹’Bs.0Ö¸idQ	D£Ðc8Y6m-®uÎX2|ÌÇV*ÁÙ?Á°=ÁåÃÊã„Q|”’'ÞÛY§ÔUx§ÔV¸{Xá|ó¿y¹QÍtJ]þTÁ•1BuÕt•½!B<rh©o·5Ø7
)¦ ‘ævô/þˆ±·ß)/mÝûLK&<•Oþûåÿ×ÙIOh‰–xœKŠÃ0÷:E_ÀF²e}†B`V³	ä’ºe›Ø’Qd†Ü~rY=((¨W Ft’¸ a¢äQ«ƒu"rë1
Ols…RÙ¡„Uª#£¼ÒJGÏM k¢é½44„ŽwV3·×)¸—0'¸¹}Ë…àä? Ý>àò‹¡y=ƒPÑVr- áçì ë\+ø¡¹NpÝŸa‚ÓÃ¿÷ò ’hisßj/x¯”èU*ûNÎ/•Z©– «Ž$Ì	¼{!°-û8'Æîó˜›cã__ÿÏfWh½œxœ-ÎÍj!à½Oq_ ƒ?££J’e[ºé²t¡ÞkÆfþ0NòúµÐÕ9øàÔBCHÒ÷“$cDpdUŒZ{!$¡pV¡ëõÀ6_h©€AHã¬A­\jv°Q’VÒûÆ%ö"GËü^ÇµÀ+¥ï™8þ´ÚM­žž»¸Î/ Œ\:é¸æœµuÎµR7Êu„Ë~#oá/O7*MÝZ®ÿTm†FM£ìkyÌtˆSþ†3"Ü÷m[K…Ô^,ô„Ï£9 =r$öV~L†xœ•OANÄ0»çs¡]M’6IW.8ò‚I2éVÛ6Uš"ø=]!qçdË–e»f èíºØu1(’FTçzÕ$ã;ˆÉ¨ *<WØ%rˆÖšŒn,'›’thƒ	VF£œ‘©µ,h«—\à-ã/ËB#Í4ÄÎ¿xìoÎóJÓºÍý1äé	özçl+µ‚l5Š]†Z¹À;õ¯Û.p¾ú>_¹Ì<séoQ­´m'á€QˆùsâÓþ/Âº-K.•#Œ¹‡…z^ÿÜC„GÀ/Ä{!>†~æxÈ)ü÷é_ëÅ/Òj‹xœ5ÍJÅ0„÷yŠ³Kþ›ÀE..Üè¸<IOÛxÓFÒ||ãÂÍ|3L«DÑ®ÎEvÜÈ‚²Zj«¬T&jŒÊH~aßXél@jå!t«—&
ålð†K†d £p™E1ìm/>K?·/$øc·|iaô”‰îÛ)O±/ ¬â†á<qÏ9é‘Z£
ï”Ú¯ýŠ;ÜáÏïª'å©ÔíÕ³žá™Û²·ô[jpõp”¥çqq´á¹°_}³Hyxœ-ŽÍjÃ0„ï~Š½—š]ýX„rÈ¥Ð³,­baË*Š”¤o_zøæ›Z˜Í4(¤‚•$”AK¯Ç1X%§Ix{ îÇÞ* È#ic]Pm¥CHk/{òN*38)Lg[sï—Çg›r¿Æ­½Î·dãÚ»œN@ƒDiŒ"¸ûº½M±V.ðÅ±Îpiw7Ãq™Þy^¸l¼ö¹ÜþÑ‘>qØÑî_Pg†Ä)—_XÙ.öÛ#1øxwù±ï¾vóÝ}§L¾›xœ…ŽMnÃ …÷œbö•-°†(ª¢®ªöcl',Œ»èé‹Ût3£÷óI¯d"VvC¯4W^=x‰œŒBã{7VÖ™^è‹lÃL±€7£²àÜZS­‰ÁéëE$'Í8t­eN>–8ïÆ	n_ÕÎ§º
ãŠßÔÚ^A¨Î¢ç’Ã×œ³ê†¥ÊðIK™áíØí·çxþû“r¤µMyúCáýÅ@ÃUEYü
Ôlë1-q¿:[N²–èø:l˜K³¦©©1cÿwà„ÑAI0Q2Sµr>‰Z':©€…ý Ë*oËœxœÍ1NÄ0@ÑÞ§˜(Ù‰'‰W!:DÉ	œñÌÆÚÄŽ-·Gœ ‰êWO¿fp2ap4+ž\o½6 È C°½wZK‡ÆÚ}áTÁ†»0Z=	õ|d&œQSÇdH¢òg]rŽu·ó žoóo_o\¯m.×0Cç¦^; Ñ£ÖŠò¶ÅZùTI¼ƒÄ•aç²Åãˆ9ð˜¾6nöSméI©÷úp@ÊøÎtV?¯Ü*õ¯‰C“Ešùûò×[ý ¬HdzžxœMjÃ0„÷:Å»€‹þ-‡PJ·]æ’ÞS,bKA‘
½}²æû¦7"ˆÖX‹R8§Dc1Í$È*Ë• I’HÆibwß¨tà\¤h…óápÊIît°!~RÎh—t’˜}­~(÷¾Ç#®p¾…g~Ý¨Ú>j»~‚°r™•qj‰Ïœ³X÷=÷NoLÙ¸£ï<î½B.˜ãm9”ßƒ=FØ+Ž»äk!œjJSø;½zcÿ9Þ_i˜>xœS=oÛ0Ýù+îÒ¢‘ Q²eAtèÒÔCÝ CQ'ò$1–H¤”déo/åŽQin!ñxï>½%‚Œ§iÅH•Xò%J±âóE’a>_HI9OJ—yZ±-i<—RäyZ¼(³‚dQ&y&–sŽ)’J±J$¯*†ƒoŒÑ®ïÕ–àbw·«fÀR±0Ý%¤¾*8Ïó>'Ë$aí”÷dá)ßÀ—Á‰.¶åt^mÉjjccëj6Ÿg	DI¨¬RÐ*ça
‚ZB9ÔŽ±Ûè‘Äà	|C0ÓcG;ÏÙÞUi@è†Ö«CZÒ£²Fw¡õ3PjÒd1ð10,º>†ÍjCwÎ~YcüUk¶	üùýöIØÚH‚#Û¬1ø\Ûø‘­±#×£ ¸qXŸ?ÙWc;ô‡À-ü ‘E§Þ¾íøåèi°ÕÓ°Ñ+£¡Â°ø¸Ÿ4ÉO§FÌØÏ°MKèG¹°ÛÐìÃ´mI£
Ã	èáZ¥rÛ³FlS=‹áN»;]ŠÙDXß\_Ç!ôÄmûž´{Žüd†½–^u‘ûPÅ&-âãëÓ‹Ô\ÌØFÕšddª**ŸÎßùYþeýçƒ°¿ml"‹xœ½NÄ0„û<ÅvWåXÇŽN!ZÄCxíuÎºÄFÆA<>¹**ª™âûfzcM–¦DZC)x-()çJŸ¬è%*í$ÏÃ»o\:(7%d¡„Î­­ZZ
~fÇ‘4Æ$ÙÏò—'Ž:yvÎx"ž#›`TRl½2ˆÉš â¿÷kmðÊ¹_áeÿWx¼Ñ=ŸoÜ
¯çÚ–'Z"â$'„âê¶åÞùêðÆma æË¡œÊçÆcXó¸ÕR×c+‡ÔËQw:G—5—ýk¼ƒ?4äÒ+üáßU`o8œxœ•OËNÄ0»ç+æB]MšGéjAù‚I3i«m“*Mü=­¸ã‹e[–ì’™¼1J¡õµjo]§•­µ"ì°±Mð¡m±PæX %ïPâ£%+•±Ô j§¥¶äÙ;)Ó
µ ­)Ã[š¦^–…&Š4ú.¿|êäºÒ¼n±?ui~iëÖÝ¢‚4
ÅîÎc)œáÇ2Àë¶v\nîàësäé”rTî0ZA…Qˆø9óyÿçaÝ–%åaßÆ?Í(zà¸++L©¿›öô	ðKÖ÷B|Œ}d_¥*÷}þ×ñB3n^˜xœ•ÏNÃ0Æïy
ßY‹“ô_Ð˜&8!¸HSg	ë’)M¼=0‰+'ûûìïgÉ9––L¥øÐk¹Òª¯”´—¶BÒÖ(Þ7(ê–t¢¡£ÚZÛ´í¤¾©¥´šj’¢“¼ÓuG‹„ezÎ.&Øe:S€ÍaoÅ^–«ëÉpìÊ‘h;éã´ÌJàèêVpÞÀ*D¶¸GŸ3%x&Ÿ<Ì“q°>ô—º=P
4–1í/Q‰ˆB(„Û%Ê™¼M1FßŸ)M>†$2qð‡‹¶–-c¯ŽÀú«?Í§SLùJØÜ–¼*
ÄŠ+ödá	c|_xÙéð½³‚yòasöãí%^º?½alç÷†"Z[ôŸwÿ{ûþÂ‹œxœ•Ž»NÄ0D{Åí!+?{µZ­tù?®k9¾žlGK5ÒÍ´Š%J¡PptQ±ÈƒÌk\1*-DP• ¶bnà˜‚AÇ™dC¤ä®g4èÁ*ìµÁ(­¥Á{b÷6—
cÃOÌ0âž'?cYàýX½lžQ}Zo›]·£;ù²^õÜÕ&á‰JÉA×ÔVxÃÔfxÙ7?Ãåîy»cÍ¸œJª ”r.tt8TòZü¾ŸmK%Ÿá'oþ"ˆéëlÐÒŠeo„ŒiÊºcç¾Ïÿ;O~kÓ‘xœ•ŽAnÃ E÷œbö•£cÀQ¥ÝtÑeO f°Ql°0Têí›´'èêIÿëI¯"pèŒèM/PË‚wØcà<(6Œ“¤GB±ÝJ7Úä—\-¥pŠ£7Ú¤ÌHAZ‹~š˜muÉÞóº6xÝw»Úd£opùãi~>·ÃnGKóiÊÛ¸Æè^I„zdu‹µRŠu·vL\îîÉÛJ¢õ”Ëü«ŽãˆFIèP!2–¾6:ƒõ\Îý5Ö˜¬y†£í{.•±Ï8'ò]¡sßçå²v€g<œxœ;NÅ0Eû¬ÂÝ«c¿Bˆ±{2I¬Ä6òócý„‚PæÞsFg)1ÑJ$ƒ¸x’Àyk­[C°(Ñ\púŠë.è´¢NVÚJ-U‘tâ‘½[’úÛƒ×.zÔA©‚L³ÇaÁ5¸d=Ù)>ÆÞºøà<vñþ¸Ó.^ŽôË·ƒ{åó©õíUÈ+ƒb0Q+%Áÿ¸NŸÜ7K<éÈu©Çz)n­ç-×çûˆu‰g«|¹Ž&êwá™Î<—VÛy53M?Úªf:›xœ•ŽËjÃ0E÷úŠY6›‘ËR%}lJK7þ=F¶‰mY.äï«Ð/èjàÌ½Ü“ØÆÈ@NY.xã¤V¡WÊ‹£±ÔtÐ\˜–4û6‰Ö’{ì´ÐÎ#Ú®dS×Ùàî”4oÔAzËÌžÇ˜ ÏôC+ô´¯ƒ)ÎðYVÏ›ã¨ê™è²™e+¿ÚÅå	¸l´RBµ
Q#²B—)gJðASáeßÜç«½ßË•ÒJsÓðWÕ-B…²TÙ[tûRœMžâz‚gï¡ ÅêÝ>…ÛÃëW¨Æcý4¬ä«Beo§ÿy³_«Xgzxœ•Ak„0„ïþŠwìR”1oYÊ¶{*-½ø’ø¢²j…ý÷ÍRè½§>f&®Ì Ð1IM^ÕM£5K%Ék[IƒRH‚Ênfå%U•%´µÐ¢4^H!}íØ”J$ÎuÊXÉ®))3{Â
mäo^ å}éÝÀa‚ÏÔzÚœ@]LÌçÍÌ[Ê
æª$­K­ž‘³äÎcŒ¼Âq€·}sœ®ö¡ç+¯OEXû_”e£Jèƒ½MÇ°lGxí:¸üàÓ´÷.ýýéòÕêáeíØ/ÜåÁûÜÞÿŸý >5h]“xœ•ÍnÂ0„ï~Š=¶ª N ÿ TA9¡z@êÝ±×‰Eb#Û¡åíkD¥ž{²ä™ýfsD„V3†V1Sqmg™6B2ÖpÓðå’†œUDŸ++3Ô¼¨F‰†Í,å(™àsÝÔÖÒJKÙHFÔ˜»á˜ñ‚Ž8úVwzx/[WIWTL{ÄuRC*ÚT‡á*VKÁ¥˜×ðD%¥¤ü.gŒð†.wð:&ÝÁêÔÜÞõ	£Ç~b{•’Î&”•Qâ/.acìLAwö
¶mG ¢ƒÃç!QC=¥
•JK²{þ€mYª¼)ÐvÞàý-à/æ Lg¥ŒÊ
RŽ£ÎcDxø$û2{7”˜ÀÆ0 ~»”oïB183ñ	¾:Wz¹t³Áß½›¾‡þåI˜	9ºÖ£™k'Íuù¿û’ûq¡›;xœ•“QŠÛ0†ßuŠylÙM°D¶²KY
ËRJ 'å±-"KA’“Ý·ž¥GëI:r²[º”úÁ6ž™¾ÿŽòB–bÉÕRT\pUW«:/Ë…¼õ²(x%«,œ¤GW­(+Þ¬ÊeQñL(.²2Ïªl!²j¥Ú¢*y¹Zp&ÇØ;»ˆG´°ÃÑvªGg`C[ïƒ¢™¹A|rT›+7|‚œB,Ë¼Ìá&YÆèë cD_QÇ>Aõp¿¯ÓóaÞ¢™;ß]FEFP0Ë82{pÛÇXÄ¢P{èˆÇŽCM¢-ÑëV+µ³àZPÎT‘&Œë»iõ3Ôc÷a´ÒG}T98mTK~dìK±GØ¢:ÄÓã1Ý7®Àºe§dABÐ¶3OxîØÊ!•¶¹e$d¡w!Bpm<Qêz7šæ,‘ö<¡Eæývñ¡‘´}£§aj”mÂÆemtè	„x<œé]9²õY=F¨‘ÒÁik*%eƒÔ6é¸³cJˆ&h³"ž÷ë½WC©ý¤6Í²»
œÏ*@ã¦$U;­\3 ëç÷º?lPë-:"y!>“B=õÚ¼5E[ïÞèü5¿IÒÆt®‘?J£›»”Áo‰wÎîšÍd“ítg±™¹¶Õ/ëÿûOØ/÷DA“xœ•PËJ1¼ç+ú¨È.ÙLæñÈâ*‹^ÄC5œI$“ÝÕ¿wÏ^ºéª®*ºSFXÎsiËÌÉU-¤ª¸ËË(D-1ûÐ>çPYUª‚çR*«ËE®«Ü¬êÊ:Y”Bj«™Þ§6DÚ%ài‡½ol‹ÐÓfJ½íŠWË¸õ0NÜÒ†á’V…PJŠŠK:ãŠs6¡C—"= K-ÝìGÛÒÅ»™ûÕ;¢G¿±ù•*.ª‚¼˜¤ìÚ9zÂ‘ê½)xÚÞmÈènž^AbÉ5c[Ä±Ó|ßÝa®›ÐPí¦Ü&$ò.}8²×¬ÌÎ³R¼Ñ=<¢NÝl¸âÌ•'ßè!¦Î7t|Âg¢µ¯C~ÖOžo×§ŒíºÆÃ-B]/Ì×ùÿþÅ¾°ÜŽÉœxœ•ŽAnÃ D÷œâï+GŒm¢(J»é¢ËžàÅpÛôôMÔ^ «7š§‘¦f"èmk»ÁX:;p‹½F¡¹êPE–;ì´j¥afŠ„íåè…WVjgŒä Ñuï;®F#<éQ0Üëœ2¼¦eÙáyÛpÁˆÁípúåaz˜KÁµìq:Ø´ž¡í…Ö­l¹†'®$g÷vµR†7
u†—½ØNWóàåJ9ÒrHyú›j.Eï9g,~¬t¾ ÔÛB"”9}BÁjø&°)ú0'¬{&ÆÞÃÉ5ÉûÆÜŽÿzÎ~ #Jk;˜xœ•ŽKNÃ0Eç^ÅR¡TvâoUPË„CVàÏs5±#ÇF°{¨`ŒŽt®tjA!ŒÚ)­…ˆ¥£}O9Úè¹¢Ú±A6h”d³SÏ¢àÞ(mÓ	Ë×Ê;.#GÙK¦·zÐÄ¶:å¯yY\·Í.6Ù948ÿò8ÞÍe·ëÞÒxôy}&{cX¯T”ü¬ë\+xÃ¹NðÒv?Áùæî¼Ü°$\Ž¹ŒWCÖCG%¥„¤O`C€}›SÛÀçTK^ ¢­­ <Ä9<ÑOv=ò>	C—cìÜ×é_Õä!Ôg¼“xœÍnÃ „ï~Š}8RTE=¶½õXõÀÏRÓ`aÜ¼~ñiF£ùfZ%‚KàÞ	¥¥åZŒ¤Ä¥qN2øÀ¼vxØJ¥õ¾æhPXÅí$UðÖxËèÂ‚c2 0­$é8Ø½Ík…7Š>¸þv;ænoÏàG¿./À3ÈÐH„JÄ¡§Kj*¼Sj3¼î›Ÿázw‡ÞîTåq­?Êfº?vTutø*|NßðùÈ©ÁB!YØKj<ë1[Î•l€TÚ
s:çÔ®Wc¢¶á…fUŸxœ%ËNÃ0E÷ùŠùFž$ŽÇR…*èª°E,?ÆiâD®S~#V÷èJG§df ËV*fÅc¯Œ·ÖhÑ’Râ@äqðäœUºÙLæTÀ“
™Œ”NÁHê=’09]ð:4f/ÓšáÂ!À[äÇïŠí\ñôã]ëÖå	pìt‡G‚ƒB4õ]b)œá•c™ày¿»	Ž7û·§çÄs»æë¿JµÛëªŽUm>Ócáƒ›ã¼oÞ†óló~	œïqMPVÀe‹Í/y#MQ•xœKj1D÷:E_`¬¯1Áx9>-[8–ŒF²Éí£0Èª‹W<¨n§NÔˆ’)c™4ëQ‰™EÏ÷A©FC¶bn@)š½VFRÁ¹ñÖÁ„ÕÂÍQûÀ¥BÆ¸õ–ØÞ®¥Â¹ÚJ†ÅöG©G·Ýc§Wð;_îï0KfØl×0QA)ôžZÃ
˜ÚÎ}õW8ÞÜß=Ý°füÞ•zÙÔ½Ö\³¡Ê¡’¥¦1v©%tß>í!–žà3¤kw#…RßF
øL!­Ðó-—W&ä+]2†©Ä8¹ŸÃÿ¿ ¿¦Ðn|™xœ…ÏJÄ0ÄïyŠï.»¤“È"«'A¼è|I&mi›.iº‹oo/‚—™Ëü†™œ ;[ (ÚTÎ„P×Þ¯ec¼RËÚ£VâÂ	1S[•uÐ>Ô•‘mi4;Sk$Æ·peã©kUÞr¿$zå±Ò†7‚NýÞs^·G'*ÚR«¦1ÊÐƒ,¥n™ç!g$zÃ{zÙV×Ói´w?HÓqIÝª«²4tíŽŠ÷å
Êm—5'ðLÓ`ãu†Ï+ñ4Ñ…³ë÷5=ïADš‘:xâÝ@Ž£XoÃŽ‘e7ÞÛsßè®8
ñ9tþ°„p°_ÿœßõz–%xœ…Q;oÛ0Þù+nóÐÈ¡(›¶‚ :è–™ùøh–H•¤œúß—ŠƒèÒ‰‡»û^Ç’ 2ê !vÜa/T‡~Ðh['Z¡DoŒ<‚wœÍ*!’-ö†k)9x¯M«ú£é¹mÝNXÇ¹ë¸n¥±’©¥1ÑO2=Ã˜3èq¨<OyÉØZ|§VŠãa/»¾£o\pÎLœ&_
ý‚/ýX²èñ¬×÷éŒ0nc:}@=5\V(sJ'oòå³Ÿisoq¹ßÐœàürÕÌŒ”}.kë³‰¤+™JŠãXgŒ½õ&ãèÃ‰6á2ás“š¦zƒÅ T¦)aÂ¤ë´Ö¹¤ª[°µSœÖ>½~	Ò‚špGoƒ¯Q}f¿_êÚ²òæX*Xš£eDÎwT•ß@“?åV#ÙH¾P]©ªö¯[öIW(éÚŸb~¾²)c0rË
ý0íÍI®ù>So{ñ§ ÛDç}}øÏ²¿Ÿ¯Èã
‚xœMÉ±Â0@QB“)Ü *„íØž„*ÅÙw‘Â…ˆ=¢ÌÃÁ *Êÿþ«zVí4)`Àg°bË¶¤ÜhÌ)¤ ákº¾ÁH2)
.°Í´'_¬‹m´95l˜ŽÅ¹8·óa…Ý½"T¦º>]HT¾ïä¬vò¸ÒßV{\âê½ùÅ²]›¼57Ÿ%xœ…‘OkÜ0ÅïúsLh×h%¯ÿ„PÒž
½5½y4ZÛÒ"Ékòí;î&°ÐCO‚Ñ¼÷~¼)‰ª£6}ÛŽ²“ºÇnh±ïZÙè#žHH
¸˜D¡@m¤ÔµÖVêV¡nˆú¡¯ëÆv¦Å¶oz…'Wwµ0kc‚ï&Êð“| œžGöyÉk¦ÊÒ86ªkë]Ÿ¤’R`\_
%øA¾ŒðmÍ8Âó4ìïËD)Ð\Åt~—vZ©²a©pfHó$Úbš \÷ÛúŒñJéáQˆ_#ÁÏ¡DÀ‘À1ãb
Ž>œc()Î3§[ºzdðÍdN›I6&XvÏë\È‚‹™	>2Þî2¬—À?¯‰*ñ?°Ê=…ó)ÈhÂßù?ðà\8’Ë¼åó^x§ç?_nüÌz3X–}iæ¾!^Š!Wâ+O¶½Î2š¯qÞ›ûtG5ðÈdÏ;"óÄ­âÕŸÙCtî0¼=ýç´âGÌ“xœ…±n!D{¾b»‘-;Vd¥Š”.)R/°ø}`'%NJ‘.ÕJ£y£™m…F¡ƒŒ7NqÉÇ0Y?HD"¼Dƒa˜ä4YÁîX(5@‰¯Œ×dôhµçœ©Ýë”áÎ
D0jd¸¶9xÅ”¨Â;ÅDîJpš{Î¹®•öžžaÐÂLJj¥à‘Î™ËË[£oÛ/ku3œ®v»ç+•D·}.—_ÔH!°ãº£, -ÑÕ#„øµÞÁåÔJ¾ÝzVÂ… 'ð±vµ7iŒ}¸^.7(¨sm¦¿XÞ´Øêüôöl³b¹¬Ëö•˜j#ô{Æ>â%‘ßåvöûøÏ|ö”J~!xœ…QËnÛ0¼ó+öæ©YO*Š´½$(ÐiîÁŠ\J„eR —Nü÷¥Ò¦@N½ƒÙÙY’¥*êd«[)÷ˆÕ :ª¥¦,{l4Öª.X0cÀfe½§¦m$ö¦'B¬»¾jM7**-u_²˜xòîÐ9Šð@Ö‘:ÜLÙç6¦H;MŸ`ß–²kö²êà²(‹B(<Zf
ð,Oð%E5ÁÍaXïÛGóÎ‡ñ¯TV9$l‹6KEb;_a•wÆŽ×`ìKZàÇÏÇ§ûï_„xô`ËLÇu‘7ž	TéâZ=ƒu*FžN8'Ê”Ø¼¢'Ô:l>F‰ýÂàÙÎ3Ìõ;¬‚Mì3o£˜½B¶ÞAZòA'
ç<8KsÃ›×N|ŽSÞ8§rDz-¾ËóÇ5³u#˜üÂÿr°¿v))†&<YŸÂNˆ_vt¤·Þ˜íp¾þÏÇˆßgg²s’xœ…ÍjÃ0„ïzŠ½%¥Ø¬$×²C(¡§Boéý¬b‘X
’\èÛ×%×BOs˜ù†™š‰ )$YÅ•–H4jÎEoL7ŠN;CŠË®÷Ù]gŠ8j'Q¾xç
äÒzcŒW‚P£q=#J¦×:§ï:F*p¦É^	ŽóÖs*k¡ÖÑ+ð^ý¨†ŽÃóV‡Ì¦e	µR†
u†·µØŽWó«§+åH·6åËUÛx1Bƒý†2¯M¶ Ó’¾–Pî7mÉÁ.S]sÜ1v~˜úOBŠÝyò9-“MÑO>ÜhÿÔ2ö.‘\“¼oÌ÷áŸwìÓöpœ'xœ…‘»nÜ0E{~Åt[Ø»Ðûa‘‚iq‘z$%b¹¤@­èïCE»T€÷ž;öDPuy-Uß*,Ë¼«Žê¼§®íäÐWu_%É~¤J,èÉ2ä]V×…*ª¶ÂbP²Veƒ²EŠ,Q5ª©Zyv¾£µàiKãàuNœ·]$}¼)º¦Íó¢„§¬È21ºÇC3“‡Ÿ¤y†¯1Œ3¼Þ‡ý}»“·d.ÎO‡µÍÊ¶«áœ5É*¦dˆÃyuþ®Œ[_@:°ŽaˆÚHP©›Ûí*Ä·T÷ ð„ÁYà™ÀèÁ£ß@‡Ïj·’¿]A[@)5ë]ìv½ŒV¢—Àè'âçäâô«6˜FÝ¹×íŒË²†=Å~¤à]#Žœ„úCcäÃpUzŠÙù,ÞM £×v:zKÅEüžuÚËh½ÙŽP…Ú<Ž‘Ž‚=1H8™¢3Ä+‘³ü/þÒæmÈ_Ä»ƒûä9­#0-;Tó)€S	VÑÀšH	°­¸]„x×“%yvJ‡íå?wÖÂ˜xœ…Ínƒ0„ï~Š½%UZc°!Šª¨½´ê­}Ö`lj›þ¼}ú =Íf¾M¤DÓI^sÅWZñ–kÄ®“¦ï¤@U7-‚­:K •¤VË¾V¢'Òu%±i;2„)ÅEö1Ó[š|€gíEx#ë¨Ÿ	ÎSæ\â©è¸¬Z©ò÷X!²Þ/‹M‰¼’M<n±Ÿà<_w½ÌÝJÆ¿ªB¡Ú
”¹ÊÜçB'0ö{[á'ÿUL>&÷á°cµ{zÙýzÓyÏ úê·£u#v³ë’9Þ•Œ½Û1§oLqý9ýóû–k“—"xœ…‘?OÃ0ÅwŠ­ •'©S!LHl00VþsŽ­¦ve;­øö8”ŽˆÉ¶îÞïÞ;çˆ=­i•0º(•n¤lDS!m{&•‘UmZm´&GÑgèkìiÏX#kÙÖLQÞ5çÎú®—L
Î8%bÊ6DxÞc‚wtÕáÁÎSš®5>BÕÕ¼ëx]µpWœP¢ÂáàrÆoè²…—)){9ŸO{ŒÇuˆÃEº¡lÃ[XÑ®H‰?p£“óLqpŒÎgçHYä)ò9s/sÀ`WK±ÅÍ”Ý¸…g­aVî.Í»Ê­ †ÅòfyÅÎ`E·4ß‚™¼Ê.ø{8[W"¨Q$[6q.ÓI¶ÁcñNN£‹×ä#€ŽásùªçÁˆS˜"óS¹†+€{^—,þ„11Žp§Áù9ü,âbÏ†ó¯ÇÅrMÈ‡<êU0f%¿¶ÿ|ùEê·¨šxœ…ANÃ0E÷>ÅìQ¢‰›ØIU¡
6 vÀÆö$q“ÚÈ±©z{‚8 óWïéÿœ˜ÁR×ËvJ“tR4MƒDJƒµ¤cG¶5N|Qâ¡o´RZÚ®Ùƒ¬Q5½%w5öÎ’L«íAPÉsLðB!ðïìÛ…á4ïžóV6®?B£d¯4¢Rð€QØx½úœ9Áû<ÃSÙì§Åüöyáx­cšþPÝwP¡ÚQ1í@1p‹i×x;‚[¦u…ËCeaõ&Qºñ¾£w0’_KÚ÷¹’|˜àùR	µ~
ìª8Ž•¹ÿy!~ q$g¹”xœ…Ž;nÃ0D{žbû@%Ò+®aF*éä ü,-AiP”Ü>
r€L3Õ{3µ0ƒíˆ’QöØ£rNÙµÎh´5±ó¬ÄÝNÐFtè•f¥4.’ŽD­Šll;kŒ°[r«M‰Wøà1±ŸÎÃî¹¬ÛÊ‡À¯Ðbg	IÃ‹ì¤>/ËX+xç±ð¶­~€óä~û2qI<r¹ý¡½T½9B#qGÅ×=ØÊðÌeŠs~BÍà‡}5oæÑ¥ÇÂB|Ž·Ä¡É16îûôÏ?ñ¸´[Ä“xœAnÃ E÷œb.àÌ`›*ªªl»¬z€%†ˆL*õöuOP©«·úzÿIg3¡¡i²žØ¡3d’“‹tv<{ƒí‚>¨;u®&"³§lSF«?ûÑêLŽ¼ÎÖ¥ÑÇ¤è)[ëðÎE6¸<qƒó5üòíÊ½òíÔúúzøÇÅ¡^PÃ g­Ulû^DøSõyO$·ê×ÎPªðÚIJ«/©<b«•£ÀÑB;+õQÖÊih9áûå/¥ú
\aN“Žxœ¥YïsÛ6ýÎ¿Ó/If*Yþ;º››‹KêÖv<qÒdÒ¹Ñ€ HâL, J‘ÿú¾HŠ’œë\¯_’Àb±ûöí[Ö[)ÙÙLœ¼:O_½’g¯NÓtÆSž‹3™žÍÎÄéáéáùùìè4Ï“†[©=;âòüì4;:ŸKq.fœó3™§Çâ8?©8X:;<•ðÖ—Æ²_¤ò%»h(ÙßRúóŸÒjYM-þÁ_ŸÌŽOÙdv6›%ÂÔµò^þ…£‰ç[NO“ä—ûÊÌäL”\Ò1§´aÃÉ”]¨‚y,<8æãU…I&ŒöV¥­7Ö1®³$mfecŽ¶{VóL2å™Ò8æKå˜5­Î¦Iòú¡T•t%ûpËžŸ¼˜',ü÷AÖf)3Öê×i,Î2ç¹—5BÚmûz;9>±	[e‚5­-È™º†Œ|ÈÕ·ÝK7ÉW.¼ZÂÔ®ÀëõÎî×Yf¥s¸ÖÊ¥’«`·º$¹°0n4»ã-Þ'ÙóÃÁgœbU-Më±ly-)!9òùÕhÉn¸æEpž]Faî×JVì3/4ö>?Œée-'Þ4éXÏ™6LZS5ü‚¶*¥f¦‘Z*óEI0UEWrU¹ÎN!õ¤4Îëßõ¼‹*ûôéê[òJeÜ+¼¥”­E”H’·xžPîÎò¥ÒãÇ!ú²ZWs
Bã×I’w¸²e¯›†WxŸÊZdqç!uó.ƒaq¤VVy‰_—¢Ë¬Ã5ðØ³\rßZÙYyÔnÎ€°¥âÅ³æÞÓ«7	ßÃ‘†\svl‚€9¦2D]åk&¼­¾sd?+„¼a''¨'Ø‹p¶æ6Ú¤(×¬Ar¶¶ÂIl•™ž§•dÞ©ÅšQ™=÷€VSIÊƒÛ½‚ÞHÑ¨RâÓºÝO^E^µ­ÊðäL~ëcIÛÝ&¦ƒ=/…Sˆà”YI§+Da±ïûh€ò@é(ÛÅv€•¾š#¢x­n©¨òV‹ <Ú²è“ƒ›dbœtç×á-@¿±¦j¥ÿ'Ÿvž22Ô§SÒï¤eÄmñ˜I·H×„J+9M%Ó†ÀPá‚»á(h²1O¬˜¶ªÊÂÖ’7þö0h¶ˆ¢áÎùÒ¶}Žöc_¹&dt+Ï¡–;÷D)ÅÃPH@Ùž	ÓPðQJÂ4ë>X®mˆ¯Q*Ð9h)Û;úHD†¸ˆ®=d &ð†dÜ­µ`r¹¡æQ¡Hë¨žPýaC€>×/¾?™ÚQ‚šªÞ^¶+y*j?ë#¶ƒ×6À¶ÜðPJlEs?/™ô#>Ó†y{À'<h€êžÿ†ë‹×½ƒ4¬"?oã¿o½éÂLÁù`~z’îÊî,)à$CSØGI­œ#ö:S\kô©âû<ÓÃ]1>Ã¶‚x"òFiVX	ìÁÞ]rÝ0èÆÊÑtÆ\#Å4¦zÿx‡Ò˜‚~÷÷6“£‡,·¦Nmm—ßÈPgC(z`‰EHa“Žï]Ô]âû¶«Û:íjTe‹P|Ÿ¥´Ä\¢ÞNÝ÷±ü9_¾ù|nÀ_Ž‡â¤ë?‡¶ùUZ#ƒØb¿F“û
†î!o(²¡ò.©¼†’¯ôeÈ1»zùñ:ÜFEöc×ªé2êVÐ´»üD Jñ]¯È6]4€÷í”m,‡}è¶•Wèˆ}Á¢ü ‚sX‘p”eOtf4c.”_Sx{ÉÕG¼åH²]õø½¼½g³o‡çì©9.¸†ûì¾ÛŸüêJiDQîiµ¡Ó…ºœ2£{ò(ÍŽ‹v*{þâiçBDºzSLËé÷…kS·FHkœ&(ž¾lÙOcå|£„ÅÕ±MÞñìát6}Ùí­r‡ö)×u<	…œAkáE:7;b¡‹Æh«ƒòD=°Gl-ÁÚÍéÉ—/,XêQò¤eœ¡Rîè¥?:;ë&?“bd¿ðrK
cmÀÅ$FÜÁè¤'dòež#‰ÐÉ£\ý.*õïüñû5„~d×ÞáßP"’]^_ÅÍ„«TU„,Úßjõ; ¸i\‹ÞJ3û(Ë±ÇýÅåB=‡ÌÖÒ.£MoOqÏ76èäRYß¢{×Eí¿£c2™sª•¼j¡0Ab],­ª¿k„Á‘ÍÀZ£!h©înC§è@ôD®öè:6æ1Aëfl£;H'¨y”³@Çã9O­®kè=ž%Mu)Í%%{Vs¢”g4ð”Þ7n~pP Tm:œ Ë’ËjRÈT¹ƒ>àqêÜZ›D;Ã°‰äyöÃE‘X§0IFùFÏÒ´àMŠäËš+x£¨œ&â‡¿à.îBCÃ8¬‹gG+Û®î˜W}pÝ÷î¸‡~0ªvçŠÍÂddf”þU	Ò£ZÆkjRÉ±»f²¢ZÅ¼z¼5üvØ
Â”ý|ÿþv;“´e†Ñ‰ÊÉld‹nõ.Œ‡=<j"P° ØÖ7¿“†Þ?¢»3`ÎÀªÛÏTNÓ.Ôvg2´KýŒ¾DxQ>Í½±Äè“Ü;:Ý)A:ú,ô\8žöE¬@µ5˜+lñ% Op÷<„0žŽDÑÁÇË;vuð~Ü(2Þ•a×¦N¹ÍÔ˜sxëMjMMEa×Ò¯Œ}˜znI|ÙÛý61U)»%Eƒ¸£hÆéVM;¨î9{»ù×bsÓÐ´œïSÇß{q^Ã®ê]¾œAQH©#zŒ ÃH
úÿB™$!8³ˆç1Ýæ‰ß\±·ÆçP=CJn îÃÐû|öíì_/B¹ßß(¶Vß¾˜þ×"ïhfSKÉ´ÍîTa¼ßn^Ãã#v0=y›B˜swtÏÅÞYEx(Æï‹˜Ì¨¶óÉ(ÛSj*ˆÒÚšg«=½¦2§/W£ÝO!1Ç«Ùi˜…¯M_­É½§)ŽÝËV¨S±k¹'‡æ¬'ÓÑÆE…ƒá êƒPÖuV Õ÷Dðÿ°0¼CÇ³˜ïK…oùµ=¢·`ÂT„0£éi}v?ÁøÝ‡«o/O•„áBA7ÓØ†x#  ÛêKTMK‚h'¦IòÑ<´ÚXÅ®dÁk5.œý/b©Aý=ÈŠ>¸‰-+§hö5¦“Ø~ƒèÝAƒx>¨±ìBÙ%öÔGž·¤;LwíŸ†X)‘/…îáz}vÈ|™$£†´%6ùChâR€„üzâdœâpC‘É+L`$÷Ó5éZ³¢ý¡¤BËw>Sîi;ó¶¦ÕÀÜ9‚´>è—ÀÚ>Íù$t"~6‰ÉúÜ½1Á>¸+à'ÀkE®“F2­¥¾“Ó€¼Y†ÃƒQp5Ü€XÖw]š†ù‹nJÛœ~¦9Q;
á#ÈJÞŒ—’7¬à6Eí½¼ì¾­[	éh¸AtHó…ö£sƒ†ƒ#"/¦¾šrÒ+ª®¬Õf€ñW¤aÔ@R”ÔD¨£‰ÉóIŠ>÷'ÿ‹ ùFˆI˜xœŒKjÃ0@÷:Å\ÀAÖH²B(ÝvÙHã[$þ (¤½}›²zðà½V™I"º cNhGJhgo$;r>Øœ]ŸE«=U^HB´Ù¼X´ZS°šþëí ƒÇû¨Ò½Í[…/.m†Ïûf8]ò“®+_[ÎÐ{LÀˆ:=h­h[–Ò¿‘*)?ð˜KãÛžˆaLKšX©ï2­<v›H—¯¾ê?dVÓ“xœ±NÄ0Dû|…»«rñÚŽŸB´
~ ­×ëÄºKrr¾ŸP ¨ifŠy3S³P€¬ÉcôF‘4Æ‘ÅØ)G`Ñz}HhîXx©to”÷tŠU GåØ‚ ¡¤~pd´I^+iÙÒ>ÔAI7Ä:8Ý§ž÷:­E¼p®“xÞ7šÄÃ5|ûÓ•ËÂ·óZÆGVjÐƒ5¢•NÊ†ÖyÎµò?ªÍ+—‘E(¸•Óœ?cÝo'±&1Õzß.]7³{8GÝV~_óÈ¥[>gné–E^ê*~ƒöÏLóƒÖo)Ÿ/xœu’IoÛ0…ïú¼õ`$¦HJ¢€¦ˆh-Þ"orûRÔjÇ’¬Å²õëë¦è­Ã ïa¾¹¼×TQ¨‰uNL¬™\×B!PL‘*¸©IL"¨rˆd©”’WQÞ A9X qL|lKC…’C-
	…Å:–úß{#Ö!å7Ô¨>Þ
D$B1ÄºI©ÍÐÞ6iQŸ7XYUà{þÏÕ—xMËèYç@Õ‘!$OPƒPy¸ç¬i€—5ãV<¸¢ŠÊÏûk’5i+þƒ%eRg	xú=Ìñ&>XzK°™x¾l×Î—¯ t5“Ì²ØÈ²Vl5M†—éçhÍfFz$‹+®&e…3±X°h¨;Û7[èÝù	šš¸
äù\Ú~}dÝ`?nÉyøî­ímñéßrC:ÔÇ·vÓ‡°NØY[/–øÒ†q,¬áÆÍF
Pg¢è6ÍY÷wÄÇ!%4U†cçÇSŸÛ7v\:×ûv>eÕôæ0Ø:)gs3|æ) ]êÝaÔºažuíMpŽÓÞµî“¹Þ¬Æé¹±Èw$Ía>:ßÐ}Š˜}	õ¾NKøÇ“TÅÚÇùpcç¿ïî'/Ò’öö5µÝi0 '3îÅ Ú$nÛéˆ˜õf!Þ™Še+º]oßdw#C¨¶ûc¼²ú`;?%Ù>+Ge>=ùì¼r¹v!ÞWc[ÝYx€Aý¢€—n]EÊŸÌßþwbÊ[T%Ïe
¾yýèÆ7åMÎÙÏ8âM[Eõ/Ö8éè˜xœŽ=kÃ0EwýŠ76ƒÍ“¬;„Òèà-t²žClEöß×íÖ©ÐñžË¹Ü’™¡“ª“Ñãà/•lÚZ'ó:XTÑÇˆ¨I,”y.`èPKºÎR”ÕmcÈ*Öè\”ZÙNZÐ½\R††×4ž9Ãn^CÂÓeázHÓ#H+–Ò˜*4ˆb¥ÓX
ÿKûàôÞ3ô/pd*÷Ì·-Ò\rº^×¡ž*øáž7@ó*ÐÄ·…þÝ7µoãyæP¥+ÿ¹ýû“ø‘tj6›xœAnÃ E÷>»¬Ã€1DUUu[õ0%Æ&U_ªJU×]ôÿoZ%bÑ2d%·bžQj­Ðê …¨uM„4sÉ‡»«Tó—è9·‘/àŒÒ¤1$£q
¸µèÄß=WQ Áºà‰«àB´^0³žfap–öÊÞ(·Ä^&ötõß÷åJµÐí¼×õ™	”Ú(6ò…ó÷mË­Ñ?ÐáêJÌWW:rÚÜÑ5'¶G–Z»—iZ»ñáÏýÇógKÔR.ëT>6ñ–Y.mgšñÇ1|¾³lTšxœ­;nÃ0{ž‚}`?ñAÎàäãÊ’EÉí£¤ÊRl3Å,ft€“3äµÂ‘ôŠ¬$'#é‘g¥B0Îdöˆup™ì’–ˆh=’‹ÍÊÙÙ’%mm0&D±¶Î—ís¬ëVïüê‚÷Z9ñò‡¾;ú>ÕÖñøøšîÛX4Q+¯\Zi•ñF~FvÒ²Ö²J{þ¨:òQs<;ÏÜXð{Õ[áõYð¾ƒÎÕÌ¾ò^e’xœ­KjÄ0D÷>EïCŒ~Ö‡	!“Hr·eâ‘'r2·–9@–õxUPÜ!P2)EÌJÙ¨—¤M™¬öÞcTäŒS‹›±aeF›`T”nMž”ŽÊ	(HC4D3âb„RSì\Î´ÿpA.{ÝàÍïõ0^þÐ~a»æz6|ÏyÛ¹ô4çóþÒÊÅz!•€W±1zß™ñŸg§Ïë†4üîx1®žð…£“ú•Ëê	+RìS™¶™yúØ­ejšxœ­KnÄ D÷>Eï£±øRe‘Sd‡¡±‘l°øh&súàl’d[UýªºfD˜©°ÒKÉ8ó–pÎU–sA—”©Y#×t8MÆXA˜ž&JNž+&”^4ã~¥^ˆ“ý€ÎÌLz0­n)ƒºaÝB\áUj¥8“äåúÞ
æ2Æ”ñÜ¿Æ5Ô­-£MÇÐ>ŽLZ
7"ºz„ZñŸ±ÃGº8îž²³‡5×«÷Õ»JjÙ"$G(¿vgaŸÓÑ×ì%<{¨ÇO´ÁtP³‰ÅwÂŽq­ÛŸ˜š–æ/¹&ÀXZFxvã¢ì`¢ƒ˜`CsÂjòbV‡oÈÖ‹0•xœ­ŽMNÅ0„÷=…÷ðª¤/‘âÂ‰×ˆ6©W¼rzÚ`5ÖÌèóHaï¼Ô„ˆ½QD¦S4¢A­œ5–:bfíûÑ5Nliè‰¯'Ò½¼'Û‘3
õÔyíƒòšqƒ»Ì¹@ˆO™Yæ˜ðv·ÆôÝ]½üq?öÊ¥¶)Þ–£}D™w×ú¼¾ƒžô¨†¡ëÜÔ¨TsºkáÆ6Ÿøu*û½D9n•ÁõO]O„…ŸÑ-î \–ü}õ	!”¼BŠé®:Öº¯W*SçÖ…ÓCf+ŠŸ!¦m¨ñ‡!Hù¼7ö1D¦¶ù™‡%—xœŽIj1D÷:ÅÇ{Í„¼Í.ä¿¥¯nyè6BŽŸN|ƒ,Š·(ªx½A´A¡•Ñ†=<O¨¢¶*N8QÆÄ£.°VZ;ˆ,yHÚ(J(|ÎÙÈ@DÞˆ“”Z†,¼R™áèËVáJ_à<Z\àå:ýòíJu¥Ûi«ó++½ôJGî8gq»ßKïô)û /ªç1C.ß0ÖVæ•”Ý×'Û²[‚Ñ¬žÊ^<
ä]õÒ¶õŒ}.¥Aýûjðô$¤3ÊÙ É£ŒÉxŒÙ;ápÚ«¨<%ub?<‡i›’xœPAnƒ0¼û{¯ˆŒ1DQõÚæÔ{`G‹Q”¾¾¦=÷´£™™ÕfB‰M¥J×Zô‚ké•r¥U¶DnµÖ\;h$–ìjcYÛr/ëÊ4ØÖF(Ub#±õVéªî|eÐ5ªefÍC"¸˜•ÂWHð‘æÎpš§x&tƒÉ›æW(kQ‰Zi¥à…ÎÙÆÎ!g$xÇx[;Àiìöy‘"N‡DýÃÚˆF
¡¡àõfÝ»“M1¢ÍG ¼NÆ"DÌ·Dã!ê1Ãm}rEŠSˆø”»˜aY	!F°ÛÍØ’}è7ÕA‡>í[t±‡œØ³uƒëoàgè#º"y_t÷ãŸÂ¾éÝ‹ •-xœ’[kÜ0Fßõ+†¼v×‘oko%ÛBËR’ú>’Fk±²d$yËþûÊî…”Rè“ÐpôéÌH)õ’wºuSëVŠ¶-©FPYõØð®éÔ®S}U±	¹ížr±“-–=ÉFHQê½(©âªªy-âµ(Îið1$ãà#ùp"¸×íéÁQÂi*¤ßB¹«úª-ÛŠÃÞÖœåêhR¢ ŸÈ¤ÞÍQpËúp¦àÈ9ïçÑž·»¶|Ç9cE02Þ*Š4Î6ÁäC7"Gê,õôõ‘n_ÞãígÞ¥à­¥;D˜2I&ãtESì‹n^º¸Æ<S¸IpTyF
7à5¤ÖXð
ìÃ(‹âD2s—ÄÍ
þò:žÉáo=¦L”KÞõ•$˜=çû"%¦50âHÌH0¹h£i	ƒ½²˜0QÌTFÿÕ7ÄÁÏVó	æH° ¯´ØrßD¾oÄ+¡ZÉ¦É¯†ñ®
T0öì3}ÎnsÈn´±váò©Ú9;åüL´× S0aŒKÊsK†99R[¯õV\ïþã3±ï	ïIxœ±n„0†÷<…·*N	!N§Ó©:Tú8Ì©}ûB+UU§–å_ÿgË?'"h¥Go«¼Díl¼ÂZ$CÖ£v
µ©P¹ZÌ˜(2´*¯Œ®Êº SmŒjÝ8[©
*¬n´¥V\¹Ÿ¼bâá™¦ÔœÇ¯±»Fbœçc3PenUY–¶€i´›:fJðB{x\—¦‡óÍíýz£i8nû¾ÑÜJ“kÈd)¥ñ>R6§ù>¼Ãa``¡Îã:0Í9MÃ°	¬ït	ñÔSsÛ=ÜÓßù)mñQ"¿Ul¶¯v@ü9·2-G!ÞB©Í&ï3÷qúG.â”u‰:—,xœ•RMoÔ0½çWŒzA‚ói{UªR‰Üö¬{œ¸ÍÚQl—-ˆÿŽãR‘>ÌHóæÍ¼yrØA5²§JéQ¡`Rt¤æšÑ¶Õ¢íE¯4­¥¢¬áÅ*6´8%\¬­;ÙµRŒØõ\tœ¨¦×BªíI#%¥…ˆav>£…#F;ÉÝ_ÓÖ[/kÂªñÞ‹³OX%Ýùê¡¡ŒÑ¡íáá„©z6!à_Ð„¢—3Ü>{¾ÂÍâR¹mÊTÖ0’ÖCI†D-âÚ\ Zo&‹
LÒ/ì5ûÙÅEAôC7š¬tüè-eQüÁzÕ½ã'7>¢'‹ßN1áC÷æJƒ»@ªº+ÒÒÕümé}Þ¶4/â¼.èsÉúï¸ç2$Œ$?r¸Ù;neË(oYÝ°\ÿ™ã'½;²ßfãÿFk9¡¤áõð›öZ¶Pêô,–ˆ§ìÈâÝ¿Ì÷å)ÞX‰ƒY>ìMÕ>®«Û,ÎN×^V|Ÿ]vaN"¥Sè!ý4Û$<9½»|õ<‹ðEqÌN—Nër|9üßŸ)~?mÞ¼Ÿxœ»NÄ0Eû|Åt[eãwl„¢E|ÄŒ3N¬Ícåxù~Œ-Õ-î=çÖÂIbH’¥
I‘LErÖOš¬¶Vs@šë„Ýï˜•‘q4¤U=Mi”ÖÒÈÚûœTU˜Äïžš¬ó®F…¼7MG‰Ò¡1ÖXï;|Ôå(ðÎ¹.ðö8ãÏ7úÎ×—×ëQæNyå…1z1
ÑÅcÛr­ü´ûà23PÁ½!—Ï¦¹À‘`©õ~>ÃÜŒº¶aËqA^û™)ŸÃþ¹q×y¯üéúO÷AAmŽ‘xœ•Ž=nÄ „{Nñ.•Í?R´J¶I•C<ÃÃF|ÿe¥´)Òf¾M?‰@	—(4.ÎƒŒ„|æÑDrFyiõPHœU<iï`¸TÆå¸à’“Ÿ­å<:KrÖ$mˆÂz…Š^};NøN~CÊðEKjð^ÒÝÖ—þX¦|óG¹Ã¬¹6RLBÃÛd¦‰·¤ÞéýqC÷ÛglŒ¬fêéØcŸ!P€vÕzœâ¸–±Së/ªàÚßDÍ×šÆÆ°a–xœ•ËMÂ @á=§à6þŒ1î\yˆ)-QZƒèùÕÄ¸{yÉ×³$ƒYûd=(4ã”5£“E1C˜#«˜Ä¯]Z&‡d3 0x*Š	æ1…µ'%èÙ—­ÉK‰ñMžy*y¨åÊÃüíÓ\©Ü†¸Õ£«­3Á%wÊ)%>·–ÞùïµF~^ÔÛ¶îÖWåaÙË¼µJ½—uocÌK’xœŒK‚0 ÷=Å»€¤ú(ÆWºò¯í)¨Fo/^ÁÝd’™²2Fl<Úml0°CŒ¬kå”r†»V{ËŠ"J±ÐÊSHÁkéë`É9¢VÅŽTãtëƒÑµÝOÊ’Ñ(èY†y…{
ñ7öiƒSN®ú_úLi¬ÂœÏ P£qh­„ƒl¤»Í©þ·)¦WÞ¸ášÞ¡|–Y|*¯I–xœ•Ž]j„0…ß³Šû^”˜«Ñ”¡Ì´…RZúâ
nþ4Œ‰:»¯Ó® OœÃ9|99¶QŠ;©eEu­1H
¥7^{Ó¡”X)D[[)¹%ƒ%’^a×h¤®ªPÔœTÓØÆ;”NÑj…9£=1Á[œ¦.ëJ-ì§?–Ã½9o4oû2”&ÎOPI![Ž\¶ðÀ›ãäHç³KðáBáyßÌ§«¾ó|uiqSÓð;íDÇ*(¸äœ±‹µðnçàoðòÕÿ®:x3…>Ã–¡ß×5¦ÌX†ÅÙ"z_èÛã¿œÙ&ÔgxœxœPMoÛ0½ëWðØa‰&«±£ÅPŠ¢+
4;í’èƒ²‰ØR*É	º__¥À.;íBäã{,	¼ÁµCÕ¹NKgÛN{ç¬FÚ•lWRi¹²¸Vì¨†×”÷Æ+­­lýªÛ´BmZÕèµ3¶Y«fÓ¶LÏeˆ	ž)œc„Ç	n§Ï’ÓÄžîúIÓÈmœ¾CÓÉVIQ#|!XíNT
&xB*ÜÏÙp{0—|wÀpä1õŸ«J*!KÑÕUNÞ@žÇ˜
„=Ld¡Š’E(±M¥ßQdìK"<!ìÇØ“ÕãÎŒÑv™þàò{öt©3„ó€¿½\.upWÈ{¾`	µ[À9QÁpÎ¿ Ue:U<…\ê¾Í˜…î>m·¿~üŠ¶ŒOe@öÓó@õêÊbù{:ÎØ–ú€n½_š÷›ÿy1û ˜¢¬•xœŽKnÄ D÷œ¢/àáÛ€EQ¶É.' ¦±‘?XÐDÉíã9A¤lêmê©Š
"(Q[5šhG+¬tôfðÆëÑIó¤”òêBd§+xø>ZëœQwÇ!<:ÁaÔªÂÉ0Dé½õºg®Ñ’¼c¢ÞZ<¯þÁ×ËÛ-—ùä¨ŒV*ÐB°÷=á?TV©¤¨¸´¥c†zº€bÉ;DçK
r£³céX'XˆÎ:q>_KÍß®m~™í»;¾väèÂ–xªµaåRJÍ>Ó|à½Ë1vþgúë$û¨wr’š xœ•Aoã „ïüŠwï&;5¸ªVÕ^··ü€†£ØÎnþ}qªUÏ=¡Çè{ofjhT§^HéúIJËQ}>r!Íô|²J)÷ÜkvÕ±Rç0£tò$n''„íF«:5œ:)™Þêœ2+nˆtÆ½™‘zoW_‹\à­èµ4íhÒú“ÄÐÉqxßÓS³ÀYû]C­Èô¡Îôk+f¦×Ë´¿oäˆå˜² ŠóŽ÷øÐPo+^áÉ…dáô¶T²ºê?K³´X
Žb"ý¶îé|hf3[~„]’†‚)ãS{à4Ýw:³’hÕÐ5‡”C½SM»ð¿–ºKe¬Î¡™uôø¤ôM‡EO¨-¶­«r…	®]ÜSëh)E*¨]·Œä¿ú»×ñ?cçæöœ;L÷—ïÕÎ> Â(­Š—xœKNÃ0„÷>ÅVvÒ:.ªbË€ü'Vë8Ø*•Ó“nÙ ±šÍ|óà
–^:s”òƒŽ¬¡Ó}î¨½ñµnð‹­˜™BßI ³Rˆ
ÁNƒ–'ez¨}o´QßÂ®<•JoH<ÑëÚüDç‹{èËuÆu_êøLJwFnaÊÐNR
_rNÌø**r¹×4T±T´m´åTfâ”ÑØæ…ø3ÂòZ!Ä;¾ÖTA<ÒÌ·æ_¤-µÜR@ ¸}â)5âBöVR ;ßEN-[öÓfhéûQ¾îŠÜöB|¤qFØ•wîþô×-ñ‡a–xœŽKjÄ0÷:E ÚIöBÈ6Ë èÓíc[FjÃÌíãœ Um^ñJ
Kýà½Ñ]Ç¶ï'´›‰0êÁ[Ýwjw…6Ô^cÛyrý0:b7qdÑhr–OÍši"å¹åŸ”äG7x½û_¾ß©l´\r™ß 5Ýˆˆ[hÐ"ª×5‰Ð?TÅé•ä›ÉÉQ8—Õ‰¤mVªî.PÉ Î×ØÏ‡%mÇBŽçª<º(õ•æb“™ÿ¼þU¡~ rshc– xœ•ËNÄ0E÷ù
ïÑ”´Ó$„O„`ƒÄÞiœN4mRåš¿§± V¬¬kûØ×Î‘¤î,Jƒµ Ñª^©Úª–×V*lZ©vÚ´d©ÖlÆH>ƒ²’w(p×pÑ	#ú­nÚ¾i×–oå®ë¤m…’KÞ‡÷a\Í3ŽèÑ™ç_±ÖÊeÂ)?T}˜. –¨¥ÛN¸Ør¶d'—3Ex$—÷p]R¿‡óƒ^ãå¢§±
qøD•\ul¸äœ1ÿ6Ñ 1ÐãŒ½ËG˜–ÕMëëdôR™ç3c!eHÁæ÷åPp)J÷.ÁÍ7þôÏañè­J¤Ó›H˜éô–FÊwÞ”ˆ¾'¸¡Ì	Öþç×'x¡œÀùE³U¦¢Ó1eš*Æ^ÜàÉl‚µ}<û×ó~³÷¸^Ùåe_²Ò]óû sF¬²›"xœ…QMkå0¼ûWèÖÃ’àØq>¥”¥—²·Ý-=;¶’˜—Ø¯¶Ò’¿Î£K¡z²,iF£ED°S	ÓÖJ
®U«MÕY¡yWéÊJ5`Î5MÏ.:¢'P\ì;´coDÃ«^U-»Qu'Ð6•°-ÓÍ!ÂƒöxÖ“Ç·öíÜ§-aiñªF´\6R*øÁçÌ„uuD¹ù:šáç–Ì·çáxïÏ=.eˆÓ;T©º¯¡àM†²	}1‡DþÅŸà7®ááééñ^õâ¬&<Ì¸E—ÈÆþÎøe\‚	‰œŸ€¢›&ŒhaÌÛ\»!í‰p½2³´eu:le—×è
)%/j+E!…l¯’<‡}%ƒ_öÏªXž¨—ˆÚîàÖË‚kömù	Ê¸yyœ#–`Îé]R¶“œ™Æ[°“¿!¸Ä@hÆVXÝaz®ïoz/ûãò%lÆñôÝ•Ø?ý>³÷—xœ•ÐQkÂ0ð÷|Š{Ü–4±±:Ýö0q>_›K-¦iiÇ¾ýªâØÓîÏ;.ôDÀ•PJ—Rò)‰\Š™°4C®¦Èqª…BË<çœuØ“ 6O¥ÊŒ)Ð(QXÊ
+3¡‹’“&‘)ò)ÃŽmï­sV]‡=Ö&Ââ–Iui–6CôUR¶Í3¤JdRæ2SðÄ3ÉÙ8mê¨‡ªÃ^âPaq*.¹<QïÉ%m_]©ÊÓt¦S˜p5ÞËü¹¡9 1ÐDêÎÄÎ` 0¨d §a¬àŒ.ÔìÜ62¶Ýöîö7·¹»‡í~ó¶&g.ìí ë+»jô†­¿^a½9pÀºñúÏï-H8ì:*ÆvuåÉLZk'Åïü_Ob)h‹å› xœ•AnÜ0E÷:w]¤cH¶GòA‘LAÓvÐ9mS¶[2$i{úÊ˜4YwE‚ÄŸü‰Àª}ÝH4JVeg[<Pc¬ë²&‹v¨û¶§R,É3èªÚ›CcŒ-±Ñµ©”&©µV¥Ñ]ÓRÕ‘l•À•ÇáK˜¦î–'ôèún.µ¶ÍmÂ9­~(º0¥Kmt#eWr_I‘§³c¦_ÉñÇ5u#Ü<·[½}¦èi*B.ÒF)cì¤–Rë~AC¾œ»àD\Úpi/à<ŒëŒ>±ÇvÊi„8#ñháxzüþùäŽ§Ÿç‡§K÷íø9øC1ÀL˜™Ž¡”üÎÀÞuÈ”Èïîÿì-!¯Yíø¼Jë²„ÈÔpwz;.eŸ³hÝo#îðªüÛ“›W!ÄÙžú]°v×þ¾þ¯àÅ_×Õ­û›"xœ•‘ÁnÔ0†ïyŠ9‚`Wvâd³¨B¥i…*(¨Ý…=®Æö8‰šØ‘cõíqvKáÊi4ö|ßü–ƒ'^£¨75QŠBh)„È©¬I.
%Y¥‰i¥D6¡'@nIIU!WUÉëJÔ‚I£y…C¥ÊyQ¦·(3Œ¡s>»aˆðišp@‹½Žpq®ëv¹¹œqœ£m×ÊWyÅ¶Vlá+–¥Ó±<|¡>tpgÕÁÅ£\êå#yKÃÚùöŒÖœoŠV¬b,ËšmKpû½Ù“¢xBý~ù> ÕäË£–:¦~~EB÷[Æ4M¾W˜ ÝýÌÁGbÂå·Ÿwñ‡“ÿðêo^üÍË ¨5Ìqšœ'Á²jœÇ–²=¶`z4¼i®ùÙq}(Þ®³äÝÓ9Y´3i°O#ãLþØ»B-L
us<å?î~\ÝÝîS“»¾µ¤WÎ˜•|þð_“ý’R¶D’xœŽKjÄ0÷:Å»€ù#É!„ìB–9>-KŒG2²<ß>ž²ê‚¦ jˆwÖ·Êia=¦Ñ›QµœOJìá¤ujòF
ÉV]*m!Ô`„Pý¤‡	ÊëÓÆÞô®×¾—­ez¯!úB¬>öÍz½šç¾_Q–K.óµ²“ªÄØSÃçÌæÛ-ÖŠ¨ÌÇ²Ù¶z,`ì“´µÑÝËA1m(Ž4%<–˜@€Š•¶÷ÅQÊ•‚¾ƒžobz]—#¦™j ­÷˜÷V]m¸0öç×dïs¼üUÌ~…†xÆ˜+xœ…QMkÜ0¼ëW<rIrðÚò·—%,¥´‡¶—öÐcy’Ÿm±²d$y“üûÊ†–%´úšÍŒ‚#‚¶ª3Ù´¯‡<ÏêjèÚ®£¢ì«Z à"¯ú>+Š‚-èÈèQŠ<¥¬°m;ÞÈ›6ï„,ò²ª«ŽWXä5Ã5LÖÁ7tAøLÖ§yßŽgC—å íü¼Îë†—eÝB’5YÆâé¬B _H…	>¬^Npºˆm>_ÈÒ‡¨÷—Z¨Ì\gJ‚]¬¶ãëõÒšà¬ÖQON$/ýx‰æ—_…õæ‡GÆ>Ed˜äêö ÿ…‚·ˆÔ6Èa ÏÂäì:N€Zï*xE¥QhºyÝCPñ:ÒF
îµºÒ=»ñ7ÄÆvmƒ3ù%ûªÌåS‹?¦éYÅÖ\ª•Y_’-qºÇ–Z¥ËªuÊyÆ·@ä ©ë[ÞÂÃÝ›j¶\»ß[‡ÿÈ{÷È~¨ÑPŸØaHDd¾ÿ§ì;]=GÎ†ÿˆF‘†ŸUœúç}qö«§COOoåßùtö^Òë ˜xœ•MjÃ0„÷:Å»@Ì“eý¸„º+Ý”šB·²üd‹Ø–‘dhn_‡ô]3Ã70%p%‡Vµž{‰¤žKijá›ž¬áÆ)¶ÙDkD×¨š÷F
CÔ¤[ç††zÔF`Û*td‰ÌîeŠ	º=Oi/ÐM!Å™àœŸA~úë¸Ø0W..àª>–…ÖN¨Ù‘.¡JðN¡Lðºg7ÁùÖ?ôz£´Ò\Å4þ¡5
­T(ûÊŸo?ªÓbä\ðáXk.dˆæïGKL[LÅöaå^1Ö…q¥á½?õ÷—ü`¿f"nö–xœ-ŒÍNÃ0„ï~Š½#"¯ÿâ 
U¸páÐv½!¦Ä‰\·jßžP8Í|#}Óªxä`Ðö®÷FGceˆ)1:¯e DbŽV­T¥4Û˜0œzdœ7‰ÉqDaêäÆ8zEç6-^+Î§÷J—\`7þa·Þ¹£Ò–r»vsæ‰ä»«ôµÏ¥m—ù0˜€Z{ôð ½Õj[çÜšTx“Ü&x9Ÿx‚Ýñð›û£Ô²©KýüWvÆÁ£Z+uÿý(—Yž`ÌWIÐnë¢~ ÌRBŸxœ-ÌKn!Ð=§èxšOdEV¶YúÐôxçc1äø!rV¥*éU-Ì¬³¤é¬‚4²ñš£Q‡„ŽÆè´aÄ)8ñ…·
“vÞDtb0^&KÊRB+qb&Õ%©”¡Õy/pkÇ\Z…ÛœË¾0\Ž×p¼úõ¾†¼´¯ï ÌA«%œ¤•RôuÍµrOÎu†vÐ—GüËëƒËÆË°—û?µÞ ïÔt*¾¶¯•ß`Ê?ÐhÉ‘ >ójÞ·AüWÄP	™xœ•P±NÃ0ÜýoÑVN'ªPK­ŠÄöb?'V§r¤þ=	 XXžNº{w']D
)E¦„ÉLZq’*³	Ï¬HòTˆ2Ç”k‰iŠìŒ|[Ø²R™"YéÄFæÚjYä¹È,•TIuBÇØôú¶a{>c‹aý…«zV6vÃèë•î»;˜J¥JTQ*¸áRp6±‹‘<’‹Üƒn`}ªfÜœ(xjW}¨¿­Ùt%,yÎ9cþ½#@c`û€5ÁkØ5¤O`µœ‡çãì¦ôf`lû×óÕþ°»þu¼i/„f1[çYì“…7
=0…Á‘‚³Ð?Ù{W{2ËÞÚeu¹ý×,ìäà‰#xœ•QMOÂ@½ï¯˜#D!»eÛZbŒ€ÄƒèA&Þf»³eCé6Û­½-†ƒ&<Í×{yof‚'‚(½Éb©âˆ«“Mt,RJ¹‘D:A-ÊG’³=U¹’)a&0AI¢M*!š\ŠXF‰r’‘`Ø†óðèÊ²…Y]c‰ZÝÂíOýä¾ÁCÓVÅ8w‡;I§½^W<žpÖu6òðD6ì`Þ6ùn÷ª÷{ò•cç‹35ÎD
#žpÎXõq ) Ö°xx‹ «S2¦­kç˜ÎÝ›·à¼£æ„Ø’·æ‹N·+›iMú%ì¶è-ª’`m¿ºñò³¦<tÉÊ6Çæ¥Ë÷°ÎcA°Áb°\Í×›!ë%. _ÉPwáü„‡žðº^ÿñ>à|*Ó!(Ö»yÙ>Cþc¶¹¸Í0flm‹ŠôÈ3RÇé¿¾Ã¾ «µÅžxœ•ŽAk„0„ïùï^”—hR³,eÛK=ö¼$/*«Qb\Ø_¥Ð{/óÁ3LÉÌà$j<#êÖÊ†§”cŒ1ZIAy4J¬”9è\4Î–å«¶.ØÎ9)»®UDÆvÖïÉ[A{–ŸË4íð¾®4Q¢1ìpýeÝŸÉm£yÛS_ûe~i”6¨$6ð‚ºAq¸óX
gøâ±ð±o~€ëÝ¼Ý9'žê%÷ÕN+¨Ð 
‘3_€B€ç1>á£àX©g!¾Ç>q¨–+÷¼üë«øÿðfPœxœ•ŽMnƒ0„÷>ÅÛW gcEQÚM]öþy0È˜ª¹}ˆr‚®>i>ÍhJ&îÐ	Õhëƒ‹Q$mˆwN!¤"‰£²ÕfJ¢u’„GCÁh²ˆ¨…4þÇDÇ¹”ÌîeX2Ü–iÚás]íd“Ãç7ëþe®›·=õµ_æðV(Þ*£4| ’ÈŽtK¡ß4–¾öÍp¾»¯wÊ‰¦zÉý»*”4¢…
[DÆÒïL'ØÊc"ˆãc?cŸ(TKŒ•{œþõŒ= Æ_|”xœ%ŽÍNÃ0„ïyŠ}"ÿÛ‘ªªÀ	(¹ ¶³Û˜¦Npo§æM-ˆ€AZgÔbÔÊqë·Ò‘%ChG.=IEÝêæ
ä«ƒ·B³À”&Ácp­tleíÉjRßê´xD"8&Ì°ûh¶Ÿ›=|±ËeÜÅ„3\Âk³]K/©V,ð„©Np·]ã»søÓÃKÆ¹_Êé5Ò1kjÚ½½¼>#ÜÞáv!úÕ‡4§úÔŽl9}në¼R†/,×´äîò,O;™xœAjÄ0E÷>….0Aö$vR†2.K¡Ð®º“m9	ÓØÁãPzû:LÐ•Äÿ|ý§’™a çÙwƒôD‚¾•’Qª:4hÜ1ð Q‹•2Ç®ZÖ*ê´ÔÒYD)¥ëëB½i‰”R¦7Þ¢ ­L)Ã%Sô)ÂmkÊ'{šõ.œ¿½k\ZAjÕ¶zh{ìEU—¹ÎðÂs™à²ÝÜ§«ÝçùÊ9òW“òø5xì‡Õ5*ž¼‡yá´•ZiáýN¨@Ÿ)2¼R¤‘—ý¡çÚR‰nB¼ÏcdH!ìÏÃÿÉÅ/)iè˜xœ•OÍnÃ »óß}JE P¨ªªÛe‡÷ ?	jJ}û¥ÛìdË–-»DCßtT;n=c*(v´Ú£UA©`2XDJVS0UŽ)çÝÀ²¶—½ä2h#ÅÄQ§sN{n‰iuÊ>ó<7x_W3›d¢opþÃÃør®›Y¶–ÆƒËËzÉ¸ÔJR
oTpJvu‰µb/Œu‚¶¹	ÎwûÂëKÂùËø¡¹”ÐÑ½€ôXðÆ{Øª©mƒšKÙ7¥¶Ø½2ì4ú[kÑƒIXbxÞÜâ	ùŽcBßå:û<ýëùySoÌxœ•KNÄ0†÷=…÷¨UÞ™ŽFh`Ã‚%'p·¦M«$Ep{R8Þ|òãÿm—DÌ+ÅŒ·œiáj)Æè¸Å¸@«˜îÑŠfÇD±€ù™[2ÂbŽKwñë¡‘Ì¨^©ÞZÛàQæ-ÁÛ¶,¼ì;.1ønì¦³sÏ¸æ#NÛÖgàFHÝ‹ðÄ´dM­®¡JðN¡Ìðzd7Ãí1œ¼?(EZº-M¿R¥t/5‡–Æš&~®tú*}EÈ%Ä	‚WÒõ\©:gÀ{Ý º*úS$ßnãØß×]ßü Ð˜k•xœ•ÎMjÃ0à½NñöÅF¶¢BÚM]öOÒ“mb[F?…Þ¾I{‚®>˜a`j&mœÞšÑ© âë(*£G!|0!ºH(OÆ±3í7BKˆ¬f@qòaQ9¢äÒKŽa«sÊðžÖµÁëqàŠ;.¡ÁåÏ~z6·‚[iûÔû´]AŒRi;ˆ“>(Îé¶ÔJ>h©3¼µâg¸ÜÝÓÛòNkŸòô;Õz°JrèøÈ9cû×FgÀ Î¥bm|
T æ´ì9”ƒ<cŸË´SèRŒû>ÿë2ûý1hƒ•%xœ•QËnÜ0¼ë+xLP¬!KözE‡"è!‡Í=Ðƒ²…Ø’+Éò÷¥6EÑ{"0ÎÉ’Áž”9ö®ÇÞ­b0¶“Â´èZ3ô£F¢5ÛTÂP õÉ9nÛžKŽZŒZh7ÊVw¶Î©®åVÊk¦ö2Çßâ²ìp¿mjQAy»Ãígm¦Ú¹ËjÍ{˜×¯Ð…ìNã±íàï%g„®¾Lð}™áaÏf†Û7]ëÝ¦€KÓtíº~§üÈ9cáçŠ7 ¬…	,q‚MM¢á74à<.63vOŒ2#<;—‰øò±!\=¿\ƒ
)@­gê<Y:€§±Wç§kð‘ôk•®œ¡z¾þÆh	·S| 2l4VmÎÕ›B4Œ=¨Œ¨]ñ„?vŸp­G.³Ï`T u"¹ø9ýdÕöoÞgà×m¹ù0]v¥ÐæÏ2	©{FFŠ¡¼Gj$µ":S®³ŸÚCtî ?nþë…ì"vÅì•xœ•O;nÄ ì9Åë#[Ø¬VÑ&MŠ”9†‡ÖÆ†H{ûx“¤iFó+™œì0ø ƒ‘š$GÅƒê\F8izãÅÀUðºc»Í”
82~àCmÐ#á€QÚ¾'ÃWjèƒC˜­eÞ2|lËRámßíb“¾ÂõÛé©Ü»5M­ÛÖWàZtRjm4¼ êìK¡ŸËïõp3\ïãowÊ‰–vËÓ¯UJ5¨N@ƒ‘±ô½Ò¬÷ý¹<†¸-•|ÖžyGÉÕ•š	D‹pìäZ‘0ö§D¾ÙBhÆÇå_Ø¯
lôŸxœ}ÍKÄ0Åïù+æ¨H—&ý–EO‚7=x”i2mÃ¦IÉÇÊþ÷¦"(ž†ß{óÞDOe;u–MÇëv’ï¨—‚7u_ñnD‰ÍÔµÕ%ÛÐ“ „äÃÔb36=ªAÒ0(!¨Âqà\eOS\œ‡'´–¼¶$ÏÇ%ûœB
tPô ¼uÕŠ†·pWŠ²dÒ­«Ž‘<<“Ž<¦ 8žÇ}žÎä-™ƒóó·´ç}SCQ¶YÊìe¥"ºÍ7_ï!H´€Æ€t6zgù Ú~íßCÃ5DZon{[(“¿8Ð’Åjƒ£!ÈE<ŠQÛTòûøcóA—Œ‚‘@.¹îŽí~Œ~G™²k\ò%‹+…%±è2ë´ÊaÂ–Ï¸”±¬MžŒ½êÙ’*Ü4cî÷ÿkÙ'ý$ xœ…ËnÂ0E÷þŠÙT%v¡
uÕª»öª‰=&ÆF¶âï›Pö]ÍfÎ™¹7G"¨jn¤DiZaÈtºr«¨‘ÍvÐÔóJ£Àž]0’Ï ºžK£¸ l•ÙREh[FÞémß¡¬Ã)!Â;zO	¾ÈzR'‚ý8{iJ´Ñô
uÇÑñŠx©xU1Îg›3Eø$›Gx›’a–y8Qôä6!Ÿ¨¬eÛ@Yu3ÊüõL¥*»DÊSôPÖ<´nŠ&†3,[?GÊ?>Y½Z3öa 
ƒ 0)c.P‚AÃä4ô”Z„¢¬XaZHF1ú 6ºH¨ï(Ãp‡‡hµ^/Ö™ž£]œÅ¹ÄÛ’l¹ù'dWtÓ\Òã½â`µ.6Œ}Û£']cÊá¾û§KöQ
•ñ“xœ•Anƒ0E÷>Åì+ÐƒÁQT¥ÝtÑeO0±Ç€62vÓÞ¾A9AWOúOoñsbÓú«¬õÎ÷ƒFg”5­ém;P«5ID-;D/6J2 ä†;9ê,:l”ô¾7f¤3r¾qØ“$#¨ä)&øˆËRàmÛh¡@³+p~²sÙiÝKk×WºiQÝ+xÁN¡x¬ëœ3'øä9Oð^v;Áùv=x¹q
¼Ô1ÏT¡BÙC…Qˆð½ò	üüybð÷j‰#ì9›Kb à`Ÿâýaà0v¢0ò.Ä×<vUô¾ºþžþu@ü3Çl“•xœ•ÎMjÃ0à½NñöÅA¿¶BH»é¢ËžàÉz²ElÉHr¡·oÒž «f˜VˆÀ95I=
Á¥±Öj!<)ß2
­ÖO½ô.p¶c¡Ô€£×=RS/Âˆƒ"î¦aÚ	ËƒøhÂàmÉÞóºðºï¸bÂè¸üyšŸÍ­âV4Ÿ¦¼]AôRY#Œá…ÅÙ#ÝbkTàƒb[àí¨Ó—»{z»SI´žr™§ZqiÕ ï9g,}mtô¶XkL3PòS¢ZáAnØbN•±Ï8'ò]¡sßç]f?A[i	™xœÁNÃ0DïþŠ½õ ­œØqÓ
!Žœpìqb‘ØÁq‚ú÷˜J9ÃuwßÌÎäç²éds–Â:Ñ^`¯„ÓNÊÒIQÕŠ³Y'„Lçª¾´åJµV©Ú¸Ž+S	%j…3‡2®B]1½æ!&zÕ!`¡7ø ó	zŠÎË².8Y<S¥j¡ZÞò†xÍ93qš|ÎøÙªærÞIæt—¼Y®”0Å4ÆþdÈrz‹k¢èhô]Ø&PŠk.²cÃý°÷¡'·“}ºðhŽ)ÃRŽ;ûHKÜŠjyx¾‘¶ÌæQP.Š‡¯Õ#¨”¦'ü¦ùöy¸¯v3”“M¥Ócï¾°ÇèÜ±»]ÿˆÎ~ ÌÕT”xœŽ»NÄ0D{ÅUZ´‘Ø¯¢¤¢€/pì{‹½ø!Áßãb{hGsÎL+ˆ`ý"Ã*Üª¸$Ò†ËÅ®’íÕY=zn-Yî…d7W05K@åL0Â‰[Ž%ãÈiée0ÚŠ Îœ3×Ûž¼º”°Â;Æ„þáiž—Ú+ÎŸA©-µÀ—óù8bkø?rÌis'ÙíÚ·˜êB†”Ää¯= LµÅïyŸÀ¥ “+›Ï‰â6ÆÞF³àWÐx|äÚàîšûˆ[ÂpÊD§õçòÇ+ö†ÒjÃœxœŽAKÄ0„ïùï.»¼&›¶Á‹gýiÞd7l›,mZðß[EÐ›2·™ù†©3@ÐQ¼Ól¥q6Ú¾	ìŒ€9Æ®×ÃžŒºù¹$Ø¦gË"¶5ƒeê\]'¼Ë|‚fïûµ^ÊL/>g,ôŠ”® ‡Ë¾ó´¬Ž‚GjZmú}°?ÑkfÊ4¥Zñ?²µN·ß¤z.yÃ\©Ó·	?^ù,t×sÊË¯Î—=c*¨ŒB1XŽJ½¥s†JŒ‡áýþ7ê0çiSxœKn!D÷œ¢÷ÑX?ƒEYfœ€OãAa`Ä`K¾}ˆeEÙ%Ë–Þ«ªîfD©”Ÿ£dRD.ha8TR”óBÔQQåÉf–Ñ
Ã¡¼°ÒMm¤î¨q¡ŠkcŽÜxb/}©Þl)¸Ã;¦‚þáy9¯ûeÇCÀ˜ãš~ÔðD¥Ä×uM½ãÿL%e“”ëŠ'Ø·œ:Ôáûž¶–®¶ãam±1e$äã‡²ð@~[]ïCì|-Ý¦6gSI=Õ²7Æ¡á–­Ç î9¹»6*Ò¹`˜FÇän§?Þ!_›•wxœ½nÂ0Ew?…wòïgUc·JíøçšD%‰·'C÷²ÝsO_ ^„‹ÚK§ I‘¤£$³‡5ÆÈlÈ+`·° vž‡É¸"A^#J»MQ$G%¦ \ñaPƒcáÞÇ¶ð¯P+Vþƒ©"]À?Æíç´ÞW2>¹$¥½–äß	%Kmž§ÞñžIÖ{ûg²ú˜qäæö ¿Nç±o„±ï¸¶+:ŒýNçŠ¼o¥ìãóøO½ ¨XZžxœ…ŽËJÄ@D÷ýw/ú™t†AFW‚;ý‚~TOB’Žt:‚o\¹ÐUQP§8µ ¤‚1Œ	\'«…q.%iº^j¤‰Köá
r¥®ÓR&­•çNc™„ïa9?2†–'e»­en¯ÃZècèyßÂ@—Éßó:¡dÌ§µÜI´BÛÞ(­©áÇë²Œµ¢Ð‹Ë½aÌè2
×mßpŠ¸“RÙÖØVÐ—ÉæÑçÏgzŠ‘~
m»_Ö¸Ï`ì}¼eÄfM©ñ_çÿÔ~ÏÿÖaß=oibšxœ5Ž[jÃ0 ÿuŠ½@Íj½¶e%ä·z=V±ˆ-UÉù«”ök```Zò~e¶8³ž¢^Ó¢ÉãÄLqr1¾ˆêËVÉ–…‰ºZmXSÔnƒØüŒq4KÆ(ûh[©pµµ¥Ùm¾I…Óñ+÷'ÎAö}ðåx=#i2#¼!#ªnÔZ¯>$µ.o¿Áéî^<ß¥fÙ‡Roÿ©YîéÜSõYS¿òL^ ÛC dð%gñMý l¸L(‘xœ•±nÄ D{¾bËDÑYØp`N§è’")Ræ0^lt,Vò÷±*eª‘ff÷íæ„”ÕÒX…­Tà
eo±æ¬“­±‚ZD)¤•ª'³N24JÔªŒö\n7WLp-ÏÖ leƒZi&Z¢Kc‚÷è}—yÖ^íú×_­†=¹-zZJ*§g¨EC7¸P<Ñ3£ds'—3&ø@—Gx-‹ázïv½Ý1ôULÃ1Ê8“LH8QA)!aðÖ}¦"Øíšì>ô¸:ƒ0—öBL!o[9ËˆÞÿ	!”©Ã´<»Áˆ+&íýÁ©ÌòXòé†€ý)Z{ê¾/ÿzŸü -õ‚Æ—xœÏjÃ0Æï~
Ñëhpâ$NJe‡ÁØe°¾€c+‰ÈÇNÛ=ý¼†ÁŽƒdYßÏŸä"”Uš‰¶,°)
#«¼®ÓÌ(ÉEÓh#S£1¯E‘vQgJ-°"ÍtÑ¨x2Y”mÙòRË(nêB9SÁ÷ÖÁÙa¶ŽàmÀNMGÚ’ÄŸºIÑ˜h;=CZfY*j^ÕðÄkÎY¬Nä=:xGò=¼„E÷pšŸxÐÍ8&Öu©È3YÖö¼ŒR6¯à•nà-\EÛFë³%Æ•¡ÇêÈ/ ­s¨=\Éøž±‡+Ù°ŒwÈþ¶ÍÖo<4 ØñÛ®1¡YÁÄ¢ïqcÀrAM-¡IØÙ‚ÃÅŽ+Æwzt;TFö/7LMœt²ÑµÊªÆ/ÛŸ_èlÂØ'u3š½mÛ}s?üsµìg~ #xœ•KkÃ0„ïú{/1²¤øBIRH}\B{_I+[Ä–Œ-úïkãCÎ=;ûíl‰ ®K¹•Ö]-´1’DI•{¥r]ÊUŠ8RHÀ9ñÜ:¥¸ÄµpŠ»½ÐJ•¢ÆÚ
EŠji%Ã9µq„×Øu3œ‡;èíÇM³fÝœ&ì§94™‰ý3ä…œ—JÖðÄ÷’³Åí}J4ÂùÔÂežLÇ»^õt§1P—Å±ÙN•(yUÀŽœ3~z: Z©%x¿œÁÅ±Çó0,>Àu›?¿?àe)Â`;?øë×Z³1€¬+µØ"ãì‚Ám ã7˜|c7ß²»èÜNÿþõ
ö¸ƒGŸxœ•ŽMNÃ0„÷>ÅÛ£Dþ·SU¨°aÁ’¼$Ï‰UÇ‰QNO'`õif4š©…lß«•ïÈxTwíõFh$¬—è:¯=Û°P®@cà]çƒAk}/´œÂÎjCÐÒ	nŒ·ÊI†G×okJ¼l&ÌÇÎl§GrÙqÙ<µÃº<ƒ°R*!ðÄâìî.±V*ðN±ÎðzìÃçkÿàåJ%Sj×2ýVÕ}Ÿ[	·œ3–?j¶s=ÁŽ9ÖøMÖ	özK!~1ö§Lc³†Ðô·Ó¿Î²¤eA”9xœ“MoÛ0†ïú¼õ°ÆPlÇA1ÃÐavÚe;²D9BlIä¤ù÷£Üfh‹˜.¶)òåÃ§€ƒîË¶.‡¶îtÛl«ªj[Q÷ò¾î†-oU'»JhæE@›@×¼åMÓooëûRÈfÛÉ¡î{Õj^–;]Š¾Þ1±¤ƒð]„d,|AF„»yýï-&á}!Ýü¶MYv]Su|à»Š3²Î&%ðM:À§%ÊÜ‡ü¼?b°8¤·†VuÙòºo8gL‹!÷ÆƒtÖ¢L`4¤ lô.$H F{“`Iûl¢t'˜Ü^«IÐõŒ•Ó¢JT„'gGª’e´ÆÜö6A,à«µ„ì'Àžf¼ÒlÄ4Ý’í\AÕÎ>¡bÎÒÍs&H‘Þ‚’	ßWâEŒ¨à@·`;»eR€VÁâ‰ýU"-Ì´MsYµŸóð@,ÆœEXãY¤ÝÈÉr±gÀÈ…ºøwjX©“ôWòaI9šý5Çßhy‚@M"±4"«Ñª‰iþqÏXîÜ#Iï©‘Ïäƒ¡TÀ_4÷`í†?ý¤³÷ùíÆÌqPªá>8‰¨ò<Îy«ru×bœ.ë’ö282Ê{þuH¬0šÚkµ/S~%˜G\0öÃŒÕÆi½.ûÿøØo»Œ:é“xœ•KNÄ0D÷>EïQ"Û±<¡–œ mw>šÄ‰üÍíIàlº¤×]Uê’ˆ€;®É	ãˆ”æÎ8keÚ™`Ì :×ûí˜(è¼5È•Õ$-ÉÞ#Z©ÃÐ.å{nW"píÖ2m	Þ·e©ðºï¸`Ä9T¸þi;ž›[Æ5×8¶~[_@)ûgÕO\wœtK¡4—	Þjö\ïîÔÛR¤¥ÝÒøkí”ì¹ÐÐpÃ9cñk¥Ô=`!Ø1ç2¥
g"Æá˜	¾Ïàå8Šþq„+…
ÎKfìs#…f†Æ=.ÿzˆý âtxxœ=ŽËj1E÷þ
íËÙ?B	]J?Â9Ò±ƒÇ“ï¯“EW’.÷ˆÓØDiÖd¼ÓBÓØÓ,Lð*q#è4Ö f×¨tˆÉ;“"*§œQÖˆ°`´‹à$¼Ú…EZ™;z®®®›+=p…sþ¿òe[C«åêö	\a‘>PId#ÝÖÞ©Á7­=Ã×±‡ç»ÍËZ¡ßSm·7*‡2"Â„‘±ç>Å¶>iZKªðúäJ„ú5„¡p#HCíGÍhà]ÝÙŒéSÔxœ=ŽËjÃ0E÷úŠÙ‡±ìÑB	]JWÝd«Ç¨2‰-#Ëùþº-tu¹î£UfÀ(ïëtð)8âSØ¸Ð“r’½"êµX]å¥N6Yo)z*YcRB-Ç¨ì¨ÓÑT@F2Âí-—
W·ì³[ZÞá
çüïòežB-Ë)”ùz%%‘©‡¤ÅAç©5®ðÎSËð¶o!ÃùîôrçºðãTê×ot¥FDèP!
ñ¹¯k©þà¹uÛìjë\ŒÝ£|AYÛtðt¼û ñvƒX§'oâ%nVxœ•;nÃ0D{žbûÄÿ¦#pÒ¤H™,ÉÕÇ–H"øö±dšÌÃSŠÚrÑéÀ%YI¨­3ÆB¨d¯­÷ÒôlÅB©‚rÈ»Žº`•£Ú|ßÙƒˆ&JâÁy'cØê˜|æynð¾®8cÂ)68ýq?<ÌyÃekiØ‡¼¼°ò£;/Ü(Îîí2ÕJ¾hª#|´-ŒpºúÏW*‰æ}.Ãsª´´S°ã–sÆÒÏBGÀá²åô
~JXn€)ÂØLP#ú™ ·º¶
}.>S„)‡±ïiHw¹ïwþvü×ö³/q/–xœ•OIn„0¼û}5ÆfðhMrÉ!Ç¼ÀK,ŒŒ)¿$/È¥ªU‹ÔUXÞ¡•¢õHèœC‰JZk	-®½
å¹¨[u¡TA¨„ñfÐNæ¸¤äÄ¿"ÑGÔt¶å-Ó{rãoëª£N:¸îÜŒ§óØô²íill^^¡í9GumÅ /(;d‡º„Z©À'…:Áû¾Ù	î³9ù1SI›\Æßj'x¯z	ìKÏ…n ƒ•Ê¶z¾OÏcAÛr(:é©cp`'²3c_aLä.Ùû‹ù¾ýkû=n£›xœ•OKÄ0ÅïùsTd—4Û¦í¢â®ÿA=y›&“¶l›”4õÓ›®âÝÓÀÌûå½—à‰@T™Ä²©ËLŠ†„ÑM•–²¬$™œ#iÕ›¼fz²ÊJðJ*•]ÔÜdÚde¦jQRcjšÅ‘‚aópï†!Ânšp@‹½Žpþ3×ír¹šqœ£m×Ê—2ÁëZpÆ‹gi;ö!‡GêCû8«ÎÍ2¯ä-kçÛ#ºÉ…”\ÂŠKÎ³ï#mµ†/g	4Í
T‡¶%Ö…^àüiÐ{*ÆØ.)CGð¶¨o’Ú÷SH®™§#3Co¡¥ †0DO¬‹#Zð„º\SLÇÄ-oíŽ·‹(gMßþq'w7püƒïOS˜èy}ÎSõcŠä‰#Í&[Æ^ú6­VÎ˜Uó¹ý×Ç²o±|¡V“xœ•AkÃ0…ïþºÇNÜ¤”ÑŽÁ(Ûa¬ô<[NL;$vÙþýÜ;îò„ôô=„âŒµ.5GÁÖ¥¨u%Ò¶aJÑŠµº¬U»f-™äŒ>‚ªÊ5
Ãh§4ïÍ<m%ÏtÓpÃªŠ—†!SD¦8„^‚s	öÓ$ôÒêÛ{-ú«³[ä¸$ß*ŒP
Æh+£ð@kNIžŽ6Fœámà)-j€í¹»ÖÝg®sCyÅD]7°¢‚RBüeÄH­Á-H¯!%«Áz_Y/Òå.kBPªó’‡ÐczBö™‹þ.¾ßo§Óá·Œ?¬\`Êg^cÑiâÐ÷qX
ø@#Uw/çæ|0É«hƒ/9ÚÞ£^cVÝ÷æ_#?Â|“/žxœ•Mn„0…÷9…÷£„ü2UÓnºè²'0‰h  TšÛÔ^ «Oò{¶ß+™¬ä*Xå…•èd‹šûˆ}R£NkŒnÙ†™RkzªÕâp j´Ñ+Ïµë:OÔ	Ýyí¥rk×ë<WxÛ6œ1á*Ü~yNå¾ã²×4\üº¼‚0mk¥³JÀ×’³cºL¥P†OšÊïu÷#ÜýÉûƒr¢ù²æáoUa$4ÜpÎXú^è
ÌX(ù'p¡óZ<’m¸ïeÌÎ'˜ÂÎØ×4$
ÍcÓ?¯ÿÊÎ~ Á)kœxœ•Ž;nÃ0D{žbû@ÂŠõ1ÃI“"eN°"—aŠ(2ŸÛÇFrT˜ÁLNÌ ¤ÖJÉž\Û4Vé‘·ŽIéÎITÔ²¶ŠÇš­ÕãØ¸A·fRŠ­£Öà¨©Ÿ£;Ë÷-¨äeKðº…Pàyß)P$oœYÏæzÐz”8×f[/ÐtRöjÄá	µBqOWŸ3'xcŸx)‡Yà|›¼Þ8Eõ–æ?µm´ ÂQˆOkªø±ò	œÿ‚¼0LÅŽ|(‰…x÷sd[mÎUÓ÷é_OÅX‡dížxœ5ŽMkB1E÷ù³/}ÌL4‰ E«;Á…›®ó11§¾’Äöï«”®.÷À=Ü^E D-ÈÚiBË­Y1!Ç¼$\ÄÈqEN}û*·œ2rt“M‹¢ÏH^|–R(¤3£¸¬ü½—¹Âv*ãEZÓÖÿe87_ûÝçëa&2F[xÃ¥Fõ¤×±w©p±ø¼·X`=…Wn&©7¹s=ÿM­FKïh•Ú¦T¥5IPåg”_xÉž¿›z È|Gúœxœ5‹ËjÃ0 ïúŠ½™•Ö’l%}Ü
>äRèMRV‘pYNÛ¿oKéi˜i•Q=«£gÔèØåFE˜Ì@½íè£!ï¾òµ*‡äXéD!ÆàÌcŸLÒ¼ñ*CJIø­å¥ÂÃœË™×‡	vÿÒ¦ýëóS—Ë=(«5’íwhÅO½”Ö¸Â—–áq[c†Ý~¹Ÿ¹^ùÜ-õô·:B§H´ˆB¼M’‚„Û*Ó‡ô±•›o,sYÛR¿ l'HåS| ÑKž•xœ-ËIŠÃ0@Ñ½NQ°)k(IB:ÛÐ‡ÐPŽMl)(ÊýÛ	½úðáõÆÌÒPœÐ’•–²w*’÷Ñ­œ=EœP³x†Æ¥ƒMÒ)PÛ½5:¥è£¤èHÍÊ“Î„áÝ—Úà7´¾¸òÊœöïãÿ¸dÞ¶1ÕýÉÉ(é†5¢8î¾ö~¨¯}ëû•8=â§—·ÂÛXÛýK%YTJ?9Ã0,õÕ‡u‰¡>ûZ‹øŽŽIˆ–Bxœ…SÁnÔ0½û+æ¶ ØMÒlU¨P.¨àˆìx’¸u<‘íìvÿžqR =!­´‘=ïÍ{oÆÑ#B³?äÍNkÝªº¬*µ/
ÕUUSåzWaw¡‹²éj]‹Iztj©Úª+kU6RÖ
Ëv•jX{¼Èó«\•{!ç8‡Ò´ðSö=\êÓòqæ€™Æw°«‹¢®ve]À«¼ÈsÑÒ8š¹ø3š8À‡9´\Þ«ôuÞ¡ÍÈ÷ EÝìa›×î8â6ÒD–úó[pè=‹1Ù#œt@:4®ê %=YËÝ:il"´Òýj£·/^BôDZ |Z¯ñhZ5G¾1!Õx90AàÃ„mDÀ‰:J”7-ŒóV-&É®éä2¸ML¬ ,J-œšç•™1×³Y…sˆ8&¬IDJ‡3„(#¾ÌúdL"Ã¿¸Úš#®…Ü¸UhÑIoˆ©’â™ñéäc"qÓÜ€Gôgp~|Ý‡™‹lþa`ÛFZ{NÎ<)Ë“õ¯?¾à›Ûëo)ÀÎôá‰“‘
£4nQ¸ácÇrŸÍªtáÙå07GKÇ:%kˆbMð½µL+y(fDØ¤`»!n 0O‰}ÙŠ Òé¥vÃŸ0Ê;òÂxo¢ä=OÝ¼§><FÚ@\wÏÝ¯o€œÆu.#ùddœ,>ftà5jŽæÓÌñkOÓböù:JÎa<â[ÿxÜ,!¤¹ˆnví“á3à.Qª´UÄËgºÄ|^×ìdÒ˜â:¶%'žõdEß¿@½¥®Û*~$ÿy â7£oB›,xœRËnÕ0Üû+ŽÄ¢’Ønì$WUHˆEÙÑðã$±®¯ùQèß“¤ *6HH~ÉöŒgæ¸$D=Õó<[E™°\°iP÷zD®%ÅžNRJ’M%ÆIÚQ=g8Q|F()ï%³#
10Ñsd¨‰ªe	Ñ•>ÕlVøpÕÇüpÅÐ·1-IÎ…ŒöÐÐRbâíæJÁÿ€‹³ª¾Àìk^¡D¨Aûh®`ñÙ„%äñdÑ²{PÖ¢³¢¹æ‚!×„PVMñ°©]…Qá®€FP»Žý~‰Dƒ9ƒëæÏp‚ºaÞ”9à*œ1à¡"Áëþª2l˜n.gÃA7-<­.CsL¥UÐ¿€N¨I;‰ò¾9”ÿ2V³Zð=äÓ_"%FïÂÑž~Ç°/ô«õ»üFž³-!_]¸^`-eË—®ó1aû'Þn§¬?šð|ÃŽSÎ¨`#ë{ÞOí—Ï| “Óƒ]ÍÖ0º·½÷¢a#m¿[Óî5ìžºwå¯'–½žUŸ§oØ¡1Þu{&sÇ¨”ä›[Ú&Îs£_.ÿú
ä'òˆêk—xœ5ŒËjÃ0D÷úŠ»/6W’%YJštWð"›Bwz\YÆ‰™öóëPº:3fj!«;"i´ä½‘èb"ç5J—B·GÅUÏÉvw…–
Á9ïlÐ
ÓNMì)tQp’"öÎpïræ¶š×osž®ôÈpàð_ÚËpü|?·a½½×Bp«•µð‚J"Ûímª•
|ÐT3œ¶GÈp˜ý“Ç™ÊB×v-ãßTð^£‚5"c_C#Bß1À}+#ÁóÎ-ü6Bš~Ø/‡]JÓxœ=ËjÃ0E÷úŠÙÉzX†PBW|Åx4ªÜÄ’‘å|bZººœ‡Ó*3 2’´v8ÄˆÊèYbOÆ` Þ{G¬"ÇbÅÊ¹ÁýH^±üŒÒ6Z/1ÄÑ–‚!´,ý¤î-•
WÌû‚¹¥®pNÿ”.ËLµä•å”ë{%­ò>¤ÕR¼ßen+Üxn	¾öœïÓ±—;×ÌS©ßªŒ “NJ!~¶’!–º`ƒm_×RÛð„çÖ…:?¹›s,p„0ñÖ.UŒ“xœ•ÁNÃ0†ïy
ßÑ¦¤mZ:MhÀG`r§–%U’"¶§'qA\8Y¶¿ßúý—DJŽfŠkE½%-õpÏ…0¶’¸$Ñ6œSÃL
êFÇŽ7Š:miP}£„n»¡f@+yÃp-sLð½_áqYÐc@gVØ×ítÛ2žó¦­Žç}#Z!F)áŽË–³:=»R(Á+¹2ÃÓšõû“ºÕÃ‰R ¿iú’6¼M;À†÷œ3vyÖ}ÀDåx5”êR(C¢²¦ ïèWÀ¢ód@c¦ÌØ/8ÏèýDÇÖþÔÖžÅdª×ë¤T£•ÐU_	»]\Œ=Ï¤Oà,”™þ¶Vñ%Å¥2X<…©¾^³±l{sSE6ÑÚºìþ0ûÕ˜¨Ö“xœ-ËAnÃ  À»_ÁlÁ‚ÁHQõ˜¼b%PÛ¸ÂpÉëëJ=ÍiZ%bhýLK\ˆ‡°(´R£Ò¢5À…Ó&†( B~°RiÌ‚™UFEëÈy½˜" \ 7 r”0`oé¨ì‰;ì…©°Û÷zñÈÇ6õ’&
ýÎ„à³”³b#WœþØ÷ÜUö¢Üûê§Oì¶º?+ÕBÛtÔ÷Õ„¹ª¾êuk%ß(Œ•Z¯åsO,¹åÛñ~ÕbJùxœ•O1NÄ0ìýŠíQ"Ç>ÇçÓétP@AÉÖö:±.q¢ÄA¯Ç*:ªÑÎìŒfòBZYáÖ+ã¤;xAA[Õ
«ePš‚5ºAôÙŒ¥Ò¶V’4’MhpÜK2…ÆXnÅQ†Ðh£n¹Ÿx™†aƒÇyÆF¿ÁùënW®+Žë–ºÚMãšVÞp¥<p%9+ìs¦^)æž¶Õõp¾Ù¯7Zõ´t¿ÖÃ±¸ â-çŒ¥÷‘Nâ”ê8Òž²ÆOZ{.dîé¯ ¸Â\Ž]ò˜ò}&ˆ	Jy(ß™µ+¡ÕŒ½Å.‘¯¦*{?ýk*û«`|J”$xœ…Q±në0Üõ_‡øYN"[EP]Ú¢CfèÈe±%C¢äïŸltxèÒ…ÄwäGjYUºØpn·{ÞH¬¦Ñv'jYf,´©TÍ&ÑTÍNî¤åÖn«rÏ[ÛÊfË…F6Òp®´’‚©™úá¤:/Ñ-Æ)Ãc÷‹Ÿ€‹ŠWõ^Ö6e]–L‡qtDáõð<'ÝÃáÒ.ýxÁèq(BìViUîjÁëo)³ªN§GPÆ€U‰Î.œ­rÃ™Æ a"<ck
°ŒV¼ýý€[tð59ß-µ`Ša0ðFàÌ	í<°<MH™±è7ë&r#†™ÀæÇýuDpyŸJó4åuÏõô7å)åõÌ å[0ûˆi
>¹+þw0ª8Üá]£‰Ê™‡‚±O¼:¼¡Ù´÷GxUÙo‚OtÙöáÐç Ž)›,>±“ë|fkWöoqüäÿû/8ÀË– xœ…QInÛ0Ýóÿ •JQ²AºèÒí8<Ê„%Ò%¿œæö¥hV]ýáøg€pðÞ`€z€w£é´î¥·Öšýaêgß‹‹ÎˆLv˜l‡YÍÝ¤œRZÏR³z7ªq:Ìv”Æ	½ó)e:ê%Ð×6ƒ¼ÐS©åór/Û_¨•’]?wjä$¥°iÛ32}Cà½ìÅžèélnñùŒ±¶)/wé0Ýt—Šò^›û¯›oêÉ¦a¹-È×`ñHkÒŽ*ŒÆk“ƒ-dàSýÃâÇ%E2)ñGj\!NUóÇî•D›>ƒÊ^M*të‹Àmñvçz­Ù‘uæ–¾Ÿ@.‡kÝñ-¬+cz»i3~î(,¸âœu,—”™¶äöµhmÊîæT™õ7zC=Y+Ä1,®IÞ7æýñ¿÷¿ÍY¯8•xœ•ÎMNÃ0à½Oñö(‘cÇŽSU¨°aÁ’ gûå§MìÈ?HÜJOÀê“f4Ò”DÚ¢“–ŒP	Ôv´ÆLRÒà¤¨×¨5Ñ ;0Q(`;ç¼@;z)zé|'ôàÜh„ÄhŒ‘VHkYb‚·¸m^Ž7¸ú
ç‡í|o.÷\ÃÜº¸?C§E×I3ôž¸’œý¦ûZ
%x§µ,ðZ³[à|³w/7J¶6¦ù1•”Æ@Ã5çŒ…¯N€ÞÃ5Ç ±–£˜bÚñØÖ\>Cfìcù&NSc¿OÿºÌ~ ““håšxœP»nÃ0ÜõÜ’e)vi·¢Kæh‹²?È²ü}å4CÑ.]H‚¼;."h´,m-aµRÂTÙ©Œ¥Â¢2¢Ôm#I“fW4G(Dm”iÑr^Ö•ÕU%e[+4VèÚL]Ê®±÷.~Xg¼Ôáäàä¾‡<ž»	Ý˜·~z¡¹¬OžxÍ9KÛÉÅHÞÉÅ^×¥íá44{?fsºš<)Q¨²$À›·‰²vtGx1ÆÅ¿Fçg°ÉPG1}ûœc6ç×e¼Ý¡n…"à|/=“°†l8®)°Äž~Ëäìâï¼Ø'”N´› (À¿~~œsÆ>]7“É¼µYs;þ3=öc4•Ð›xœ•ŽIjÃ0…÷:Å¿/,Ù!¤ÝtÑeO á—-"ËF4=}r‚®¾ÇàÕŒv”bRÎŽ#Ž(¸7¶W“ÌºAõ£ã‡âÜ÷ÙuÆTµñ¹F/•GÍ­éÆà¬F*571ÏŒ$ºÕeËð¹ÅØà}ßuÔI×àòâi~&·¢×ÒÒ|²Ûz¦8ŒIEáJAÉá®¡VÌð…¡.ðÑŠ]àr7OÞî˜ÆÓ–ç×t’ŒSU”ò›ÊJ}D~°@Hpx°Ç6‡DÈw˜ºnó¾3ó¿Ž’?ªßeY•xœ•MnÃ F÷œbö•£cÀŽ¢(í¦‹.{€ãÁA±!Â)·o¢œ «'}?‹W23ÈžTg¤c©;”Æk²m'u«-Z…#;¼ó¤ÄÍfŽ²=i"r¯-ÉÉQ7µÝHFá`&7[Ë%eøNËRáóv³‹6LoîæWsÚìºÕ8ï\Z@º%BR²‡TÅ3]C)œá‡C¹ÀWÝÜ×ñÅÓ•säe—òü¾ŠÈ4¨…ˆ÷•›\YöyMw†ëÆø]	)ÂkrÓÓ+øÇ9nç%lEˆß0Gžšä}3>öÿR­n‰–xœ•ÎKNÃ0à½OñïQ"Ûñ#®*TØ°`ÉÐïW’6±#ÇFâöPzVŸ4£‘¦–À ˆVk%-Å1hMqT’ŠA›Áz1Z§©çdÇR6DäÂq«Œw^"·NHe£57\;å2J°Õ9xËëÚàeßqÅ„‹op~ØO÷æràv´4õ.oÏÀgLÅ$<Q9Pò›nK­¡À{Xê¯íp3œoöîåJ
kŸËô˜ÉåÐQE)!ék'@ïázä¹Õ½Uˆ¹lø¬ËQ?]Y	ùX¦|—cìì÷é_ŸÉøÂi`œxœ•OÍNÃ0»ç)¾#V%mú“iBƒÐÄq€¾$_ÚhmZ5)boOË.\¹Ø’-Ûrš‰@ðÚrUš:oŒB…N•TÒJ…(Ker4N×lÂ™BAMEÜT…´(ó\»Â —$µ¥ãÊbM5o”b¸¤nœá}ìû^§	{èí‡;gíæ#q	mfÆáD•QÔ‚WðÄË‚³U|J4ÃùÔÁÛM‡«Þøx¥9PŸs{ªRðBÁŽWœ3¾Úƒóß`¢‹	!Ý& ÷1}†ÈØiíÇ`áB	Îvýç_ÇN—óãßH„´Oñù·/u˜2Æ.¾dw£s;}Ûÿë)û(9z‘xœ•ŽAn„0E÷9…÷È&Àh4švÓE—=Aâ8’ª½}As‚nü¤÷õõ3vHDÃ`_5;l¥SˆÞÚCJbÕ{ê¸g/ÅfÇÞÉ®ÑØ4ØkÝ"…Ä=¶’G§H“·”0%Ok‚už¼m›™M4Á¸>YgrßÍ²—8Ö´.7º‘•ì:xAÕ¢8ìræŸòïe§	®{òþày®×4>«ƒÂA*¨P#
¿¾€qJ	Btüs\9ƒ‰öƒžM.‰w8‡)ÄW#»jõ¾²¿—½/þ Äˆm™xœ•Ž±n„0D{Åöhm°Á§Óé’&EÊ|Áú¼6èÀ c"åïÉ¤™'ÍhFS23 ïµ¶Èº1ŠmoP¡£^ù¦Q>´AIÒ²íÄJ™SÒHøÊîôQ°Ît3ZP¶Á÷­ìœ´—aÉð¾LÓ¯ëJ%ý×?ÖñLîÍÛžbýXæH£°“Rõ^P7(wKá<–Þöí1ÀõéNÞŸœOõ’ãoUZ½i Bƒ(Dúšùäý˜"D.09‚­PÙ78w)y8VŠ,Äçûj	¡rß—Ý?£ch²xœP»NÄ0ìý+*(r±;/!„(h ƒðcX;'Û9¾ž„ëhhvW;šÉ¸êûŽ6´j¸aÆöRqÛ2¢U-¨m¼ÓÈÈIFSª¦(;e»Vô•lêÚj®LW×ÚªNëšÈ5OK„ty‚§5é	îjïGŒçÃÇ`MÅš­ˆ
ÚRJôâ½ËÿA%Ö]àìb^å~ô¶§¥ÇýXr_˜yŸ–SvK¸n  Èx™7™¼Á¿8BžÝÓ ¼ª˜V€Û›pö8À.'ƒˆVê¼™Ýµ¯ÂÚ|0úîÇÕoù¥›;òêÂq€)çSÊrÜL®ê°Ù.gÖK±ß.÷RèÙ•.¥SÉ(ïÉ›šb±¶PŸÃ_ùo:Dœz”xœ=ŒKj1÷:EïC†ÖÆ˜¬!‡hIKØ£1²”óÇI «¢
ÞØEÏd+ÊA;LÛOm)X-ƒ£Õ%¤œÄ:·Ñ¯"ù¬½æhVé’&olÐYæ }¤˜HÐeïp¦67j£L8Ã¡ü[9m5õ½-ißŽ Â5h…/h5ŠgÝêÜáë(ð6©Àáxºro|[ö~ù›%¥–ðŠQˆßc¸ßæ¥6øâþ¨O•.N|ˆnJ–•xœ5Ž=kÄ0D{ýŠíCÌJ²>G¸Ü¥\á&õZZEÆgûåäïÇW¤š™¯f9RÇNù."Úh¬s1Ä(MòI«HœÄƒ
/ZvðÚ1Ë”‘Îj¥ŒÕ±¥””R–u2‚öš×ïSï¼eèopúM;}\›°Îo ­ìÐyi¼ Ñ(:µrOk†Ë¾…§ixæyâ²ð½YË÷óª°“­t¯h…èy^8Â¾üÒRò(ãa½Uª<þârœK^žxœ•NKnÃ ÜsŠ·¯lÁ6DQ•fÓE—=Ÿ‡‚ÁÂ8jzú:j/ÐÕü4š©¼àž›®qªG¡”î‰ª³L(ì4W^ŒÌ“ULœóŠJã<C)¥ÆƒJËú9F=ZeÜ(Nô^ç\à=Ç¸ÃÛºê¨“n‡ó/¶Ó3¹lzÙö4µ6/¯À†ŽŽTÒAÀí9%‡»„Z±À†:Ãußìç›yâå†%als™þªý@G(%$Ý<_°tÁVm"BÔ“}@Ì|o3kÄrÚùSB×dïó8ýë;ùO‰l…‘xœ•ŽMjÃ0„÷:ÅÛIÖBI»é¢ËžàYz²M,YÈr!·oB{næƒù˜V‰  QÆ
çµUÁ‹^KgÍà‰*†è"’¬”È­”ÕN“à…
Æ…Â{ÞËlï1<Ú¼UøØÖõ€·RpÅŒK8àòËÓô4×Ó~äéä·ô
ÂHn!,¼pÝsöhÓÒUø¤¥Íð~ì~†Ëm|òz£ši=muú›jÃõ 7œ3–¿C€R—„õ¾Õ<–f(8c_Ë”)t[ŒÝx?ÿë.û6¤f‚—xœŽAnÃ E÷œb.°°Ei–ioPuãqMccãäú%«ÿô¥§ÿKf…ƒWÔkc£î=z
ARorÖ±¡¶6 ›Ïœ
Í¤e‡Äh[RÎ:KŠºVyÙ9?jÖJ”iÍpçq„¯È	Î›¹âõ5PCër©ëª—Êöº…“4RŠÚ.±ÎðÉ±Lp;všàüï¼>8'ž›5ÿ¾U-­1ˆ¶ªXUñžŸhŽ?ð1°Û¶æc}‘ø?#ñ.þxÀK7xœ•ŽIn„0D÷>ÅßG xjµ¢N6Yd™|€Õ`#c"åöåY•T¥zU­Æ½žr,GËdÚqçGg´¸òF •T1²a¹ˆB2ÃP­-JÇª³Ç¥—60…£ð.°!<Ú\*|”e9àmÛpÁŒ)pÿÓ~º’ÇŽë~ä©÷e}¦˜QÆ2Åá…JAÉé®©µXá3¦6Ãû±ûîOwéãkŽK_êtU9Uš
¡¡£ŠRBò÷»­¦Ün€!€/¹Õsó„Õ8¥ý¢zÜ`N°K¯4åº2Žû¹ýë:ùfækœxœ•PÑJÄ0|ÏWì£"-iÓæÒã»CND<„ßÓlÒ†k“’¦ŠoŠâ»û2°;³ÌLZ+©hJ¡$ªBQº¡º*7ˆ6¯¹L	UÈ²&“ÚEPF·ØÔµ0­,*‘´¬Ä¢ÂÚ°’£¥¬E¥‰\bï<úaXà0MrNZ\`÷ƒy·^ö³çÅu¹òã=¼¼I†8ÜÑšQ’¶£QxÖ6öp\fÕÃîÚ®¸¿êàôûÐ­Ò’òe‡ŒrJ	q£Î¦`]Ü‚Dã$°€ÐÚÖÅÇš/P1„ãt>ü1¢O$´JFŸ½Ž}òpòa”ñüþ«/éÌË4ùg8Ÿ”s„óåénN¿ÓßB*Áùr†)ýx{%­9æ„\lç4fÞ˜¬ýÚþ«)ò·}Ž…˜xœ•ŽÍJÄ0F÷yŠ»—–$7Ý¸péÜ6i¦MJšŠúôvð	\ø>œZB ’£ò¥öÎ¢%!JnH8Iª£uš:(ÙF%¤
FhÙiÎ%zå­ë¹’Vt"ª{¥;t¾Ó&0:êœ¼åe9àeÛh¡DÑpýc;=žÛNë~¤©òúÂëœ‘ÚÁ×ÈÙ¹®±ÖPà=Ä:Ãë±3\ïýƒ·{(),m.ÓC=³-?Û á†sÆ~Ò~Zâg¤Æ\Vª5¦	ÆøÅØGœRðMÇ¦ÿ¾ü«’ý·°aÂ™xœ•ÁJÄ0†ïyŠ¹kK’¶iº,²Š("ˆà$Í¤Û¦%ºúön×‹Oü3ß03”Á;,µ–Ü8%tSieÑ8Ž•7Zº•”…k¤¨ÙlF‚ÊjËUe…ã…r^Ý¶l¼G[ØÚ8ã„³ž™•ú)Áã4+ÜÎ³L4Á­°ÿfÞm•ÃbÆe]ÞNã%šZ”R—pÅ«‚³s:"LðŒz¸[—¶‡ýÑn<1Eò)u›*¹ª¹à2®8g,¾˜Í)DÚÁÍˆËlZ„S
„çt"l	2„„x4´&dìõ"Qðò·èÏwnm?íÓ¶îÃÓ=ð]^ÿ:¡¢]ÎØ[è"ºlò>³Ÿ»½})/˜Ù—xœ]ÍNÃ0„ï~Š½W6ñ_Œª8p€+/à8ëÆ4±ƒãTôíI¡H§‘Fßìì”L\kïZ4=*)y×ÕÎ™Þ¡6Zv7ØJ%´-›m¦XÀÕ)g›^Jª…èj…Âz¯8o´\7}Û fv-CÊðš¢-ƒðN<r”¼EÁw7{_h8¬å¥Š)Ó<^ªc(ÃÚU.MOP«¶FJØaÈ6w
¥P†7Ú8x^·Ý=uW=œ(G«”Q#Œ„=ª-Êây¢½Ãøðå2§B„L[ýÙ–"Xw•…±—{bÙ†Hóâ·Q÷‘LÇ°\úÍ‚=”À¯ãÈ¢’ÿ×ñ¹†L7¾bßº~ß–xœMËMjÃ0à½O1hÐ¿Æ%”Ðm6¡7ìq,ìHFCÜÓ×)]tõÞƒ÷q%lCì;Ù§ç¤"*#¢öcôf@¡¥Dš%TÊTV9o AÆÞ‹úXÞ‡Þé`¤õx$b6K…¯’C†[ºf8×å·\"Õ‰fÚOÔo Z[Ójx^ˆ¦+Gb¦
WJ<Âç¶v#œ§øÊËD5Ó|*õþG[D%êú²ËLœJ^ßaHOX÷Ìá	¼/R†ïu„ŸæÀQ`›!xœ‘KkÃ0Çïþº7I¤”QzŒ]ÛðCNLœ¸ø‘Ño?÷uC	YÿŸ$+zDØjU÷­fTµ;…J3Ü²¦gÞªZ£Ä¦­y]‘÷¸D@ÕoëŽU—LË)í¥XG-kQqÑ°¦mEOxŠ£óðé¦´8oàuÂÏöæ”ñ0ÌÜØRºù6¬¢õ¦£mO´§”äìlbDohâÇäûI\üaB¿ -îÒ*…‚²,%Ë:cqòf‰;¸:.#&´«Y€/
$Ú`R€ˆó	=É#¬Ü&„¼{\KÁžoe!ÝŸàsÙˆ
ÄÂÌ},¬®Ìc¡ñÆºLŸs¡$Ç¡UÈèíCS’—ümcÊ1xäŠ‹ Ÿyük™<åÏeJB>Ì° *œÖ…8ïþyòHç·©–xœÌMNÃ0@á½Oá¤òOgP…P·,{‚™ñ8±ÚØÈ¸HÜžr$Voõ½ÑEô’e…g/€W@àavW›¸ÈXv¬>°Kš‘„CœR"—=Ft€f€H‘-ÇÙAácì­ëw)c×—Ç'ïú|£ß¾Ý¤W¹ŸZß^µ]l\Ÿb	z2ÑÅí8Êòªî…ê×!ºÔ![ÇQZUêZ¶*ij9Oôýò×Uý $tW0xœAÂ  ï¼‚hv»ÐBbŒñê+`Y¤©–éÿ­_ð4—™Lo"Zød'Â	Ðƒ˜aaÇ8Ñ0}Bµ…&k×)s<#’·ÙKD98Á$ÈL‘«°÷R›~ÈÜ‹¾ï.ú²Äo‹´U^çÚžW}\-¡±Îé8 Åõýž{—?RÅExÙê¼võ¯ˆCšxœÌMjÃ0@á½N1p‘ä‰~B)!Û.{if‹ØrP”Bo_JÈê­Þ7ºxpÉ[‘â#GÔÅÛ9Zç¼ö)gÏEÛ¤n©K ‘qfF2ŽÍ‘ˆ£åt2Î’¡¢ÉH`Qé1–½Ã§Ô±Àùq§Þ¯ù¯§«ô&ëÛÞ/`œÁ3"L:h­hß¶:†¼°ªµæö½Éj«£¦þ1¥¾ê¥	O{)Sþ9>“Õ/R!XQšxœ5ŽKj1D÷:E_ ƒÔ£ÏLp¼Œ‰³È	ZRGx>FÑøü‘C²(
õ ja>Á÷lqÎ$&rÖ Þ£i¡äzgÂ îTx­`ÑY‰Ñ+6J¶]¯=Q´£±£Œ‰´z´×i+ðA¥æN<Ózå‡åtáÏs·å”U¥2ÚÀ‹ÔRŠF—\k³Îœë§ý;Np¸…go\Vž»­\ÿÕÞkÝTÛTñ–$~äÈ´ï_ŸØözß«øÍÝKõ‘êxœ½Zûo¹vþ]›¢µSdlÉÏÄ} Žl¼‰ÃJ6À5CI\ÏgÉËÊÅýßïw9/=²Ûí±µyÈóúÎ‹¥UJŸMOÎÏgoÎãQ||6žãßë7ñùéÙë£Sü>SoŽ_Ÿ
iU^
9‡GÃ×§çÉ›7Gññh&gGøô{ãd4’³áè8>‰²*ÆŠJ—ñ¶rñBüÛã”~ÿç£²¹JŒÿ‡^¿9y}t~"¢áùp8ˆM–é²Tzëñð(l|‘sñ4:c^¦f.¦*5Kát+þîøB¤¦tÂÌÄL?+÷JÄ©’yUàSbâ*—²Ô&TE"KZ óDH1SK‘ãßLÉ²²Ê‰T?*aU‘Ê•(¬)ULÛƒËÙL‰ý“—Áÿ]&‰ÎçL†iÒÿ8“)‘»H'’•v¢4¸®Ðyªs%–ÄýÝ/·J¸BÅ8éé@ŒN¦ÿ§TÔT:ÅT3eç´û?Ü~é}Ÿð«2ó„Ï*+J-­ Úô)K_¦&fq:ÌãB§Ê-ÄÃØ5òùõ.:>Šx!ó¹rX–ªgÐ·J¼5Õ“†)te­ˆóa”?e³ffb“çþ~Ït>¼µZæâ#I¤³ëÕ…¸•ÐÚ\åÑÂ¸2ÿ=Ø…°JM·_¿Þ\ü¾y{+î?{÷ ÜÊ•*Ãµ®R—2_Iñ±J¥ÍµØ?n¨ÏÝ…¸ûúé“vN2Ÿ‘{i'
eg¸]º2ŽUQÊiªþ·{HÂß­$ëƒ™‹ïšÍˆ1Ë©Ê‰’Så`ðÎêX\Uà1û§Í•¿¬
#Ü¡-Wª Ÿ…:œ×_ÙIWš+8½(Šøì$UbZé4sƒ/ÃÊ›¼¨J¡žaMP}¢ž4-—™75Øƒ8ÄÃâk“ï•ÞR„²\@Ô3	£Hè,SÐ¥sÖTTšÂÀWqØ|&é“W‰D»Fh‰É%ü¢Òj]éxQ{ŒÊ«Œÿ>!WÆÆ•LÅ[XÄµ|‚ãt6ƒ®ž­¢ÜD‰*Ä…x¯ŸYÌ3\dJ»‚Q¿·2éâ¶ÊÍw±Ôì¿5	ö‹T–‘¨8gÌgF½'è6'±Æ3ÔšáF~3f &¤Ö¹´dãz.fUÎh³üÉ¤`ù²(d*s©°v¾fô2I`Ñ}9³&5<ÑOBJ’íwY•è˜‘xRy¼
Ûå|nÕœ”ò?&„+.‘Án'´fcL§R4+ˆ±‚€(wÚ#Rcù3­ÒÄmìæéT:€v>©·hcAœ,GCÆJ=ƒm¡KÌmbÌÉ0ò]‰Ïßî/Çcñ$ÓÊƒiÍ®n«˜ÈÆå°„€›y`·+*B8åœ´«zhë„Õ6)Ñ^e­Â‡Þ	|2À´)b“(äµŒƒþô«ÙŒý}]~áº ©v£ê´&åBíÜï¡ánüþÝå(~x÷uüNLuI°°¨@GÈ„-§ç-~ûƒ©p"B;‘©R2«Ž4BèÊd("(=â‚U^n»}•Wâó`ñW:ø•XZ]ªWÄeDÛ3VÍd\v­”Lêo±³»ÚœçÂâESf€PÏðSíå*í*,òƒsyâ`Í£jnúþ&AÉ*ÒnâW¸^4Íb»BÆ}!©gUZêòF¢ÜvuÜ€"ïF±H€9+Ëö´î&vf=sÁŸÕš~øãnkÕ	°‡  XZÀ  ßö,/ˆaÝ1sx$%|N¬4T_o¥à~»Y{·Ý\¤sPž"ŸDæA¶ù(•¸Þà½¡6ö´ÁGV6:‘+UÞî`Èëüè¤ÃíVãëš0Ò
NhAWôý7‡˜‹¸La;ÜŒ÷n\kÓjºzÚe~É¤4oêl€7Ÿ[&j(ÝAËSQyRQ\Eªs*B˜ñÁ_pªmË=ÜÂø<=à5ßá=»>Î_áÇÑß¾zgí;¥7¦Ææ©Ê(œÆdh£G*
G¯àéùŽ˜øäo¡j÷Xgí»»ë»Û%Ñ¸?Üß	—[Âj§úBdH_|9Ä{2Lëäs4âž€iƒÃm~Ø„9l"ýtíª-rò©Hµ+ÉNÂùìG,óqÁk¶©¾HòEf3{°÷ŸS¯4þ\mêHÅp}…XõÏëpà¼Eu,v;…ª¦à-k¢0 Ô³¿ÃyîÆã«`)@ÞD[ª)ŸTCËöºüºúáö-ÇÿÚ\qh(Q&~véÀº(A´>xrE'—»ñ‚Š(Ž’tÃIÔrL¬ñûÄ£.ÉM}WÖlòú~Œ,ÌÅV¬yÚ«3Ô×`Ÿc
~ØÚ¯;·	¤Þ·–Ã¬g0·¤¤_Èz+d“”Á$·&©Mì_¿6p¹°Õî(ÐDà€ñœæ³)ø4¬XÕ|l¦µ.±£]ä|1	Ä˜V`Õn`,sTù“;Q ®¿ù¸+ïwã€70âLi‘tóÍ|²{³NK„†iU¶iéZœnY#nT¾5òJ±•2+R°ôNæÛÛÀ5²JÉfÞ
è3ÝÓ ‡¸©éšÛXEÍ‚¼FB-¶!@ÃÔ2ÊÊ;ØËBN!–R¯E6®X·fç^GTºÌt¹#Õõ¯M‚ŒÒàñ¿s0	Š½?Zó~*@I#]z¥M‰Ò&…n¼OŽ”Í³ºDbûÃ§Q“tlFu+U‹nuvõ#Xí»>¾Ê„KY»‚SÔ×*Uº"h9Ë¥sƒœM÷òäœ
ñü‰Jáž;vaP›¨›}ÁŸ¹ößf[ÁL ÉnàŒ
¥†o?r§§nñl4v:áÛ£@¾½L'ÌSU.Ðuiì–rtw2bS˜s”™ Ùƒ%¦J£Ò„—ì¿nz!‚_°iLRãÞe†Â~©É¹eèØK)öºò¬{4þrüsƒ¾±Ö·½ ?	ä¼õ@PtÊú~Ö€†¥x`Óöwã†¨*ûHØ¹Ö?R~U\á·.Vï­J'«€	ÌÜÄL¡†iÿ,­•«ž®|7MÎ¥Î_Å"ÕS?lú­2©ó"îMr&t}{ÓiÑÖÌ¹ÊU·ý!(–<¿\TâƒØÓíJ÷ÅßÉ¾o:ÙâÖ§o¹ZÞ¸¿}û²‰.&E«çŽæÿ…º[å±÷èÐ± FhÝtÓ±ù"­æ:o‚ZÅB—	J˜+ÅBÉû),y— ¼Âý ˆ—Ãƒ“°6ë­í®8ýã y:ºBŸÇMüŒìD|ÒpðýQë‡ÿUgìË$®éÕ½§'¶”ÍeÊXã}7¾;?ŠÄ"‡<Ø$F}QR‰LCt>vøCÂ5E+DWŸnþm?iµ¬ƒw#ÀÓ­éÑloyDÆ§% S'0¶w’ÛÜöíúJÜ·’ÂV¶*DXÍ–‘¤6-àëÆ®Ö¸;;ŠkÛÊ•õ¢+NM•DãñuäDý(ÃDD-û.¡útÈ¦ˆµ
mãÎzº<¾dŽp,K.Óùa&Ÿ)·¾¬8å;\nóP"ÂÆÐËH6™B”û|u/Æ(Ó·ßöª‚  <b¬¬†ÉÜUíÄ¥˜dÄÕÏTÉ2ÞyËè¨ã}SoŽï"²OADrll#ÝnkðNŽþã…:…[²ˆœ–-›+Þ
0å HýÐ?sT‡±];ˆåQ½®˜¯þ}hÃ§Ä§³?´§¶Çé?²RQgêÐ Õ`÷f©x¨òÁT–â2‡äŽè—&O&3S¶”ôVâÂµßÑ<C Ÿ ¢ÏðxƒŒBZ²z;MšÜâ´\-ñi+˜ô\aø|t~4÷W7âÚ7×o®7wµ\Pš• É¤RùúòG€°~RÇ´vù0¾;>=Ý¤F"¸•Ï‡·Øþu«uÄ€5Ãç«#ñ	ÎwßÖ€\¿MŽãÚstÂÎ¶æ÷ÝÈ×¡ä±Û=C'ënJÐ™s_èAÌœBÔ „—¤ø¢»f`cê  ð"5ä Úm¬ÕYô ;yßµÃ$.ðúü¼güTíj”÷~ê1¥ÌÓ…˜ŠgHÓàŠ)Œ¸‰´œÁL©Ãµ{<Ã»LµtvájiU÷Ýö:WÈ«4tn—jª}–4mÜŠ–íÑ9{o§Æ©PE·âºÜÞ~“LR÷c<gQ–…»8<œC(Õô '.šœjqX›ï6u¾‰<­ä7—íýðL;qå!ÛºpîgçÃó(,ëJìø(¢JÖVn¿ìâ6ž'¤*Fkìv¿ŠÚW}Òë‹öÖò"ßÕ#ýœð=ñÇpciãE­ ñï•tÅ-òŒVù1Ïú4K¨þbëá¥»8Ë–:×xòŒxc Iñ4Înêˆ0Ò©Ã˜°ºlŸ¡|L%êÍŸ*Ð¼ûZ`£kc}Ek]Õp›øˆã¨hqc­°’â‰ñw¶Ô¨ShT¤²³Tú&<Ï<dQ n%¿x«R:¸÷ÂÂ{vo’Ï<«ü#Ù-ü²†ÞOÊð»œÖÅ6‘ÖQw’œÛÙÝ­.ÃV[j­†B˜û7kùÁGèg4m€¸ÙÁS¦N£?™±uÖŽê®æã™@·ZJÌ¤-¹†góƒ $–5
CAÜkª†×)‘LS²W}÷¡ß)Š~¯´*£ñf;€õ8)
M¢ŸIø“IÓK›Lö÷ÃS¦ý—/_n4ù‰Wˆ:¦>Âœg3¡LD\öKSß)ýáõ²¶µãÓšÈÇ­ø—ä	/°ÃqªOÙP ¸¿‚[@¾:öÑg[1Ï§‡iX{Ü0	_ñû¿žZÄ4(÷ýs¯°	]vB§L¨{³ÿrÃJžÙcÜ*›š”j
èÂ*_d&×Ô)é‹
vò,~ªližÌjó‘÷ò¹¹¾¹l2:cý³«ñÝåýšÉé|iŒ¸É@gØ+Ï3í§v®š6m¨TçAü¥põðp}ÂIxÞÛ©è<<šôG”xùÁx=/Ÿ¦0p1U3Ã“n¶o¥¶7¾Ç“›ñÕ‡‡CúýöÓG_¥/TZ¨cà»¦ó}sMç&*Ö¥ìŠúMP=£ {\0ŸyeÅ2Ÿ@láñV£r8‡´).'pËN›ýWÂÈÛv.<V½v{3tÝÅœfp<˜	Mî™øî,nëº¢²Útž­ð4gÏº§do7“¾šðê£†Én=iîŒfoßÝÔã¶ûÐ×½jsŸ«nÕ×ï¼_†ôîþ¡©©/a2fêLŠÈ×ï»e[ýyüù.´õp)ý˜J‡ƒÄ¼+%ö~½‹ÛË‡ÃÛÏý”r0–s-~Âå§ˆç$Z!-höJ©^äõÈ˜<íoˆ@KSÑ¤8¨¤$ª®ò9¾3©ø¤z!Œ<àç’šú}Þ%ë1¶ÒðpháR9è€ùO…iŠ¤Ûðr¬1ˆ¤¤Ç<^ç·™¤swÐ·ž üÚÄë¸Ls4F>’ø¾ä‹ßÅ¯r)“ïºûµèSéÖìðß…W„ä3à&<!/JaÞñjÒYêe[¿EµœŸ÷`‹ ë‡­8®î×=ê¢.Ÿ(«­“×µÇ¯T	®´øP™®Ò©¸m›¶íß4Ì¤“O²Wôq5ø™D:½¦:<­èœþFD÷Ïš<_º àó£=IåLV”Üb+â€ðÂ7é|jÀøXÏ}ß¾Cù‹×I™6Íƒ7.åçÈ%ûÇ[Å)×Ú˜°Oe¡ç‹†N;>ñ‹B®êký°cÿsác×K°^É|!Íïà~¾åa-{<¸¥ÌVåcwJdJò»ƒ¯uKƒ§IÜ¦~Ç uEÅr°)zÖ¹$sýÇ³×gð4~%™Ù,šÂsÿà÷àï÷[’D“xœ5‹»ŠÃ0 {}Åö!fõ´!äÝ‹4tÒz'ö!+ÿwp©†˜V™¡÷>9äÌ>YO*"1ìÆlB2)E“I¢ÒZ|ÇÊK6ä#ÑˆÊ¢ÖE¼yÌÊÇ”³‘’¬Ž">[Y+¼ÍeºóVà<Àá%Ýy8]>?:ZGNú€F;´Åo}L­q…/žZ÷çFsúãiæºð½[ëíÕ®ïìÑ!
qöÚ"P‰Ë7ñºÔCÛ™xœ•MNÄ0…÷9…÷¨£¤ÍO3¡– 9‰ÓVÓ&Uš‚¸=á,ž¾÷lYò«…ºàµJZÇ¹§ÐwmðJ[ÑŠ#ðÉÇˆ2"[±Pª£Óh£^*Þ:g8wˆRªÞh£ÈøNô-Ép¯c.ð–çy‡—uÅNa‡ËOÃ}sÝpÙö4œ|^žAhaŒåm+à‰«Ž³cºLµRwšê¯ûæG¸ÜÜ×•Dó)—áqÚ÷Ò*­¡ášsÆÒ×BgÀ '‚mEO€%ï)@	òJ×Ã×ãÛ)Aø,øÍØÇ4$
MŽ±q?çÕ`¿	oÙ—xœ•=nÄ „{NñúÈ`ƒñjmÒ¤H™<àùGkƒxW¹}ìäiæ“f4ÅWÈ–{tšsÓ4Js;épGÑ)©5iï±…ƒîµ8·½Ó¶úQ¢Rh:aïtgo9Ã½L1ÁG\–Þ¶8û®¬Çs¹e\óÆÚÅõ„1RH	/\5œí:—B	>i.¼ïÙMp½Û“·;¥@KÓø{5¦í•j â‡cá±ÒÐ{È:‚9ÀF)Ï¹œô8s‰#xÊ,•'Q€gL>3ö5|‡¡²ß—I°<†n²™ xœ•ËnÜ0E÷ú
îÛÈïqi²È¢A7E?€¦I[Y2ôH1_y²èª‹º÷P7f˜˜¤½°næn¥ž±mê¾’a¬›¶&™±é¨šEíØ%h¸FédÝÓXªê©êê©Õ<
õ]«+´ÂœVàÍ[›áÛ¾£E‡fÎðøÙÏË±yŽ¸Åì–3ùí	ª¾.—¶ø¢»F«2ÝLJà;›´ÂKŽ´Âãu:úó•ƒc{öa¹K‹rìô 'Ýk­”ûØøoþ£|3 µž0ï€V¦+DãˆáÇ¯÷w#‰xO8YVêÕ2:ãÈû¡…´2¦'²¢Ï¡ˆÅØÈ~¯î)§þå¨ONñ-ÚP²_žÝYyÿú/2ì„)Ù`T¯+š„î†°•ü‹)Ï` ówÏ­g¥~š¥lN^ä4Ýþ+võ.¯•xœ•AOÃ0…ïù¾C«4MÓvšÐ`4q 4$Îiâ´ÑÚ´JÓ1þ=íÆ…#òáIþžý,,ˆ•(¥A“WL±Š'¨´Ô‚ó,WòRÑ‚Ò£P!ÕU¹.r•¦)J‘2EgsnXFÓL—2£È3"§Ðôžû¶à~d+´z‚õUãz!›QvãäêXõÝ$")Ä\¬„š¥”ÌÝÎ†€^Ð†¦Q5°>V‹nŽè¶qïëëhÁK^2ˆ¨ ”wê0¼uaÆžÁöÑ²N:#|ol‹`P†É#!ûWØþòÃÌßþrøZòŸö; ç¤ëàã8Í„&Û÷GØî>)œd;!\"­«ÁŽ³MõÞ£
·—B#CLÈÁÖuÔUß«½ˆü 2E£›xœPANÄ0¼ç~ Ý&«mÚ]!„¸Â>à¤n5MªÆú{Òw$.¶4žÍ£š³4ÝË•n:©5vg#ìÛ^{‰ƒ4Š7
¦ J·Š®²¹*MMgÔWÛZÝ›¶QÚê"hÀÌSÜà•Oð’“àq6GžiäOqŸ@iÕ]´T]•l¥6.‹c¦Hö=°[(f†’:|8ÂH\yƒUbäœ„ø˜ÒJRGJœ ¬]=±#p)0ô°àŒ3a<¼&Àûê,zñKJ" ÷ñë®Í©w7ìwà7ÒIˆ7æLÌkºÕõXîËæTljïBþ®ÂçBõQ*ë]íRÊ”j%•ïnÔWq*³ßþzøÏÃµ“Oxœ•”I“›HFïüŠºwt‹á°'BbÑH·ª¢@€ØIüz«ÝcŸæ2uÉˆ—ù.•ñåÐXAJáy‘“Â±4Ç'Pb–‡bˆhš%	'SìH5 šp,/%:áYdˆ bÌ'è5Ï Ab…Xz!Z†‡kÝí
³VOìñVÀ®ÊÀwü‡}ÿ²Ÿ÷àºü0"#1‚È22x§%š¦^´Ì†tÀ&ÙpêØã+ø^ Ïú³ ]Enu—~©Kž¼ÑòKM›´ÏRðþùTÝ´à™8X¦£O{ý7§ 2ßšUEQ5E‰L×Ù¥oX:äq ûÛþ|3Â³ßxh§J©ŽA°T´´ðÿp
 ÝÊ­ÒÅ"Ê÷þ8µg¦Ð«bŒ‡imvã¬ëƒ¨{ùC3dÖ»hFãLwÔÝ²¶«FÖ4
˜¾z>ÚSd7^tU7…«0EM£<·^j¡0iÏÜsÇ¶S{'æy;øEÖ˜ íÎ
¨ÉCuL$äk÷ÒI™(oÌÐLn±7p>/õu)Ió3kçÌb_ì.’#
É{!º;üL£èñù +ârS_âÖî+›ÆMw;XÖFµ½óU¸6³èá"fÔ­g‡õ3"?ÌÂí]¹G
,Hªð¡²­d‚>µ§ÞÛV©ýb4J`»pÔI‹Üt#­#Ç†x»ÎÇšs¹¬cºà8úXÒYwehä;ºéÊ®ÞJ©Å:<Ð}—Þ¹]å]š¨Õ×Š3/b]îp_Å¡éP@H‘¼R¹«˜Ðü½Ñ½
Nh*ƒãÛcur†Ç])c‚¬‘¯Vûû¤Yjœ[>[»¡!ek
ô·°ó–‘$««‡‹iz³I°øÌ²Ä.	SÖ†ƒ£¡½Ù+ºõùHSÔ×—s…ÅÄX§—ybQ‰ŸÍVÖÊS$¶œ¸©ÏîÊ|sâüM ïŒóÒ]¦Â‚çßmºÃƒµl»}¾¶	ûÃ#ß°®êºš½]{dÂôÜ¯YäUSfèYÝq®}tð<9Œ]”Oã“oØ¥ëµ‹·xï5<©5FýÃµ“ƒgàG]>2ÕâÎ{ŒßV‚Â3žFòªY£åù~tÞZ ¾2£;«ÿJ5Wý7¼Â=wt¤©»ÌuE@	ú±# †7R¬=(j÷·õ)W.ŸÆž`’M(xÈêê¯–¾‚þeôü==ö¤û ¨C–V$~¯“ä=¿ýßëBýî“•=—Jxœ•”I£H„ïüŠ¼£jö­Õ=jÀ`°ãå–$	ÆP@±Ã¯ŸªééÛ\æ]žôI¡BŠ{B€¦aV "æRE5ˆ"p<Ë"E‘I®¨²¤pQêI3^à°ªIXM±Âs(±&’\DDÊ+ÈˆÏUNH1¢Ð4ÞÛ˜wTŽ¨YØOu…ú¦?ðö­ú—ýš3ü·ïNæN’yNo¬Â²Ô'}/Ç‘ô`OÊñŒiÀwð£J¿þ¯Šô©¿µ}ñ[ªŠ‚$J€fµOiÑCY€·¯3¬­ëƒ`€ÈÝúz|:Zÿp
P ÝÕÐuÃÔõÌ.-‹W­ÆX‰Y¢…p¸ÖöùvAêé¶þnLIRéfQ…8RoÓÞf†	5Û>i|n|†¦së÷£}Ù<;ÅÑøÑ?9k$‹!ND§ä)‚BàP€Ô>v±Š®²òJK	Ü€n'Èâp¸èLh˜FFøüt´£çu#ý	1§›Ó}± zÒü|†¯XÙL®kŠ*º×âÍ~[˜(FBgÝ¥‚a“šñûÓ‹'¨n½í^—`¬†Ÿ6Pî©ôÔ³+4zÞ“Üðv³”ˆÃ-&zÎ$ÝxÆþ=NžCýÑ½Æ[hªbV§›©Û_­K`R ™®t/Z7'êÕRçóÊF®–nNþm4’ÈïJÖôÅŠ¯/e“’«sš/E
^Ccq„Ï$~¿Ma½¶¬ÇÃÄ"Ú:·ð t¢í©lk‡]ö/ÍxºÀEyÝ­82ÌB!:)¨ä™®P•¦îN+¨0‘Î>;ù,/Þ¡w6gÎ%“‹'¼¨¾¨õ;;Íúw3Aý˜õ×ñAF»åôp¾¦ÊùØ»±_‰¸t'âk/gÈwÝl96=l*A_üX~Ñ~z­E•©¢lÅ»'lÔäôùœqš›rÍë2(x‚kÖSÄÙÃÜ-·y·oòlã½4SÐœí‡±9”ú3‡˜v¼©„œm¯¼µ™‹ÒcÉo8Ý_œÇiÑÝpZÞùs	+¦fèÖ¶Õßímç
ÆX‘ÅÐaZEïÊT:í§þÑèÇ(Ø7}Ï“—`¸é\/ÝÎû“?ójS¿;cù›ÿjµ6ÃwàŸ ¨/ÀØ‚ükIÊt¤Ï	ë ŒI7¢´&•EC²·6ÏßÒåûÿ]êoòñz)—Jxœ•”Ë®£H†÷<EíÑé×V÷¨‹K® dE!@ @.äéçœžéÝlÆ²lé“¼±ýÿÓ@€å3A†bÁËœDsQ\JŸ	ÉWážH²œA¸dúl ×	@’•H¶„²ñ„*Š@y
*­ ,QŒùBb²ûtî ³jÊ®sì{SgÃµ?ðö­þ—ýzøîÚ¿ 'sKN’yn	>àBæ“¶Õ4‘Ø¤šÎ@½ø~ÔùWÿU“áJšoÝPþ3ªˆ‚Ä‹€…«ÏÑ²/Çª_¡ÓþÆ¡¹ñÐ!Ú¿9Pæ[EHÕ*Ö•aðŠQ8¼/E¼
œ1mÖIô~î¢5jÕ{H+ëàg@îª¬ÝeÕbt$™òf1Šª‘±Ã#zò¯çi¡’Ÿ&ÓÇþº‰PÔc]Gû6S PûÀN˜'ËCþ„õ¸;¼“us“cß[•¼5ÚÅCæ—ÏÃ¥Ñ:1Ýš1×ï”®È3Ò©ŒY†nÚMâÈËNîÃ‡úµýù:æI‘Žöì½FÑ”ŸÛ°zÔ~æ¯t¿ \â¦ý>%3,™'Ç•œõÈ×H`¶ªXòÙâqæÓãW£¦æc3ª‚h‡WcŒ
,n‡íæè ¥6r´ni³ÎéÁ9fêï#O{·®ðR½ž}¢ÅlÇTÜ[Wb	ÓmwêF+ÉCµllÊ Öžƒ·ÆÒëŽG•çí±;Ð{­†ãy\_#CäÔgB£;_XÛBá¢Å¶bb…ÝÜEÈÉ‘7_ë7GÎG•X¯O"øÆµæÚÅÛÙ½¿íE¬‰ö¸<•¤ Çì•Šáø‡a'mBåärÒ	Q“<ÝòåéÖ“ËÞÂéúØ‡ôd½Ëæ0CÃÖ'OÈº9Ð«„Û,"ÊqàØK7½V{ê|>(œS¥N,¹E_p±LÚÙÂé† éôÇç’£5ÑË¨ôÆKbšÝV©ïdtblé!ŠØÁJdßiÄûi»§GèŸq›ªò6—Â|˜ÞMX‹[§9ˆÝÒe@Òl{ÝvúÐEÛðµŠ9-Ž×M“ç»%ÖGé2©ô”A=!púÉEÚG?ðóú>~žá·6Oÿ/Å0ïëøx‘ã€l(ÁÔúå$Õz2P‚§fÆ¤Ÿ²¼!Vå•¥ùüýÿ:ó7í/xŒ—"xœ•Q¹n1íùÓZp©=´†a8qáÂ@wiÃ]BÔpÁCŠóõáJ26Õ#Þà]`Žˆ`íØ¼×{>YÑ™VïÅÐê±¬1“ªSÓ³UF¤CkSeG3ÈQ(.;1Ù}ßYmå¨Ä^¢åVðÉ’—á5x_àûºJ/I:Sàñ†Í¼]ž“<¥Bs£Ãé	Ú¡Ç©k¹€o¼ßsVÙ“Ë#¼¡Ëü(I/ðxT>1ú&ÄùKz˜†v|àœ±?” b.‘*¤5PB¸l.)Ë\ä #ÐÎ“ÄØK‰ÛNÿ	¿~¾ÃêËìè|B0xv¿Ä:„¶årb
Í÷,4›qZÐ{¸,®Ö½¸úÌòˆ¨ú®š†½\S3äoÿ:Wï¨üÞH22š[Uví¿)ªÿ
ÁÞE9|Ü¶ØB:×%Pe÷Fcïn®ÅvÁÚú|ø¯Oa^†»° xœ‘ÏJ$1ÆïyŠ:¯t“þ—IZ]†=ƒxòàaÙ•¤Sév’!“D|ŒÝ×óI6ã¬°¸BUßï£¨¤ˆ(yÃ«z†³º5
ìäŠ1&T'FÛN²¡“5ÙÊˆ>ÕZsÅ;©Œ¨ÒÝJE…à--ojâ¢­‰\Ò"\Ylœ¹·²´®Ô¸_NÚ¹‚û
«V«ª©˜€*(%¹ëlJámšàÛ²&8»S‡¼¾Ãèq.CßQÖV
Ê2JüÞa‘Â6Ìa|ìÁØP‹5`Œy“ßâ—jØËh¥š‘‹,Jæá<‡{ëÇ‘òƒg9ô°ñ`?$<¼¾üZ«oMîv÷¸KèôëËïþ?*_µçýÑ´ÿ¸ÄÁ&bÊ |/nÞ4çGIñ.ùA ²<“Œð%ëOsïOð7~>?rmGŸÁ`L¡ò>ñäë¿®’!xœ•ÏN!Æï<ÅÜín [þ´1¦zÐƒGŸ ØaKdaÖ¤o/mMŒñäiÈÌ||¿ùjF»UÎ2±’&Õ^šNYI¥tnDŽÈ4¥{²èŒ±‚°ÎÒÑ8¥•¢Ôq>(iwŠ±S5cSŽèµžR†—Â
Ë¢ƒŽÚ+Üßj?]&Ç¢ç²Æ©·i~ &˜{Î…;ÊJZwöµb†WôõOk±'¸7—z|Ç1ô)OW©œ+¹…Ž
J	‰Ÿ3vKö±àZ`9é‚PõÎc¡`;JWgð0ç”»¾§…·ªëZàùºükƒ	0¾–0~}€Ëi†¨éÒiIAÆ%ci‰RnßÜ<u¶Kš
|ùAÚüaltx£Û4sÂú² …‹ŸAŒ`êÜà­GHkí´Ÿ"Ž]r®3çÃ¿ò'_®>¯'œxœ•AjÃ0E÷:Å\ A²-Ù.¡„²)]õ²4²E)Œ¥Ðäô”¶û.1½Ïg
!‚4:|ÚIª9MjðrTÚ÷¡uÚ[‰rK˜
L“íF©Œìc:§W¦7Öiíã‹Vã`{akY2ÁlrquÞkÊwØ…_°=?À–j¼ïc*xÚº|~e8pú±…ì¥LÏ±$xÃXx©«[`wœïþˆ”XÍ4«½Ñº1«†UqˆŸ@X*%(·BàF–\N!Îjr%æ´
ñºØ4£ÿC°Æ9Yöp…’ëñ@&Ï-xÿ‰L8Û¯(®öTù'{H”‰?ØG¿É!l¦ÛÓ¿¯ ¾ ™#‰'’+xœ•’AŽÛ0E÷:/×‘#Û)Å´‹nŠAíh‰ŠÕÈ’+É<§/5i€Ùve€üÿ“|rIDÐr<©~’²Ãî4´ò4uÒÈIiÛÉv4f0ÄAŠ…ÜšºîˆjlñÜGsF+U‹JR&Õ*i•2ãYàVæ˜àkÂ ]Ö^¶_áÉ>
ÍRMÚÜë³…|£ãò	Žý±Î£<Žph‡¶\]\)”à¹2Ã—-ëž®Sý>_)¶Æty³½R²—líÙ*^¢qvå–z1P"è¸ÜjZ\‚iÓW*`cZ°ñý^}ø Ì‰ò½ÉÀ`„i/”aå¥îÎ>ûE™	p‰[hÿu2¸yAïY|›)ðð¥Â|[$`0³Éø9³PÏ.œá}¼å*ø½QÚaŠ¼jÙWžÉÁU…9æû£ø½¢Î4¦æò•ZÍöŽïà#]5nMŒúàWŽAT)wR4›æ„ÕonÚ-è‡w¹ÃL„æÃ-¹ò &ÞÑa€WÒÎ:‡ð‡Ræ¾Püp—@æ­=LûÇÿþ7Ä_tì’•^xœ­TïoÓ0ýî¿âT¾ kS;¿SMh-ˆIŒV0iÚ'¹¶fN\%nLûß±›••u”"Í.Ò»w¾w——èâ°ðýœÌó=?â~yŒrÆCDê…i¹S’¯±ÒÀDgæ‰ŸÅ”åžçeStc7B'n’aAøRÏU©ÆVâ²šåsT>š®ÇMÎhìHÄ“†—É9¹*ß YR7ö#8¢	¥Ä ¥Ðk8C¡ç0Z6ùŽo2û<¹ÁºBé¨zv_êM gTSBªU‰ø„¥Z!ˆjÅ¥( À•È*U LkU‚e6ª.¹„E-Ì 56K©ÉÄ·O:Ý36,ù¾s&¼ÄfÁ‚ÏŸáÓ¤÷V‡Þ¾š1V¤÷èÀcà¯à~âž’Ôo€ôÍ*ûv{´bíf¼ärrI?„o½Ñhx/=a‘Ë˜y•.MM‡cz>6P0¤”ú&x	†È¶æ¥ÎAßDßa	ÀÅ¨Mùp&Fpd8`‘ñ—sŸFÃm5î3¨q·Ô´ÆÛjÆÿPC¾5ªúÃHðr-.§Õk0_ÒÚBnüØ@eŒÑ…FÁw!%dhÊ¬o‹Ö¤ÖŸ¯ÈU­”>‘*çr®½¶n/—âúÅƒ‹¡§À6'· ó®½½¸"Vð-i…w¬SkD›cÝÜœs=·xça«F8ëlhŽãl
RÌµªSñ³½hßu÷ôrêå>K¯æ:d*Ÿ&á³vÈXÍL¼&w„¤bVaÑSÓi/û1ø¿?*ùÎ†u7Ÿxœ•ÁjÃ0DïúŠ=6YŠc;„B½¥_°’V¶ˆ-Y¤__…¦Pv†;)Yi[Ó
)[‹Š+«‘¬Ð¨^	Û‰|i¾ã’]1’O GÑòm-™ÍXÙ65©®ÕVw–wj»Ó'ÅpMcˆð¦i…þzÅ	=:³Âá×ËáÑœ—Õ¥óT»ªÉªy¯¼–œåtv)Q„Ori„÷uÑ#.êáÇEOSâðDeEþ—3æo3íˆÖÑdÀyXÐ»ä¾©˜ÂÀXo8SÂ\õËÝë1ÖN·ÇÜ—sÚ<a›çüÑ,Ó%c_nðdŠ`m¡îûe?c³|G–xœ•ÏNÄ Äï<Åw7Û ÛÝlÌÆ«zÚ'àÏG!maºFŸÞãÁ£§IfòËÌ´‚täœK=R/z¥{)ü ‘‹ñˆí™,¹é‚©AÏ9³F–{£•‘rÖI©œ£Æ(ÊUoÜ‘õšè­…\àÚðŽ	®¸¥ÉÌ¼ì­çjUÝ‚x©z­{ÖÙ¼>L
Î¨”ð@GJÉî®±5,ðŒ±xÚªpžÍ·^f,	—.—é{Æà@ÅŽ’W=£ž àšïn»-Ñê†–˜ü¾ï3Õ.“½ÇýÉßÃB}Ût1MÐÂÏ–JÈ5N	Ý!{0§ÿ]$_‹kx)™"xœ•QËNÝ0Ýû+fÙªºWNì!©BUYÜ.ºžÄcÇ"v®ü€Â××	ð]XcÍyè;G"rl‡®í¤TZ÷$[ÍucSO=j1ònÂV±3F
¸ì…ZÑi>ˆ‹†÷£RƒBm§Z> FŽÊ0,y^#üX—¥ÀíùŒtºÀÕû<Ú¹IèS	ö8­þÙ¨®5À7Þ	ÎêÖ»œ)ÂOry†ï%M3\=Û¼y¢h9®Ñ~H•àƒ‚—œ3ž=]‚qƒ†H§\=»˜Á[ŸaÒ/ßÁíÖ F[|í˜{;¯àâÞ0»5€¯©-m0l¡6ÕÝýŸªŸ1ÁH µ&%QÜÞ
=ÕØ©’ƒqRŽeÊ%¼Ì®Vˆ¤KÐXÝ>šÝiË+k$Œ.'øòxúZSh2.¼›Cž1ï´#c§ÏRy¦8Æ-‹v·}<ý‚st!Wêog«Ãa5æ0¾^þ×·°C}µ¯œxœ•PAnƒ0¼û{o@6Æ¢¨J{©ª^*õ^À
ØÈØmóû‚Òœzêi¤ÍÎìÄ@ÔpÙ—„Uc*Ý´²nMÃ;Ù
!µ’¢*ZTÒhÁä"œSÙ•MXc_è¦RÄMQÖrƒ²­«ºÑ¢c˜âè¼øiJð´,8¡Ckœn˜»r^q^“òÎÏ ´¨”P\ÕðÀ•älcg#x#GxNk7ÂéÒîx¾Pp4å>¿V%´ÔqÍ9cîs¦#ôöÆ4£Ë¡Áv"è}˜1‚_¢õ¬ƒ%ØÃº&èpY{uð~g½‹aëº•Ø5ØÞJÃ6Âš–Å‡¸ÞàÀnèRØ7›®›‡]Áù{nôðiék»s 4Æºýí‰ó½gÎØ‡™Ì÷}Ö^ÿZ–ý ÊH¥’xœ•ŽAnÃ D÷œâï+[`Q¥ÝtÑeOð1Å€…qÕÜ¾‰r‚®ž4£½ZˆÀ)ë•–Fë„3Úûn4–§Érm”ò’¤°–mX(UpÒê®#£Jm:§É#„6ÓèÍ {‚+†G]rÏ¼®¼o®˜0¸Î/¶ó³¹î÷#Íí”ã„c¯»aàðÆeÏÙ#¡V*ðE¡.ðqìÓç›}òz£’hms™_S)…ê4\qÎXú‰t‚‚Éå>üÒ!ÁVBÄr‡)§Zë	7´a5ÐÎØw˜¹&{ßØûé_þìrÑnL™xœ5Ë;ŽÂ0 ÐÞ§˜~E4þÄ	!´-§˜ØcbAd;hmõª×+3¸‰Ý˜8O9…@1§$†àuN
³w£g›œxPåµÃHSÎHž"º`I'e×#YÅËÒ(L4‚ö>o¨Ñ“f8~=Ós¶4ìti¥3¨Œ1ðƒQÄmYJï\áÂ¥Ïð»·øž·éãùÆuåû°ÕëÕ¨Ð¾«Èå–ÒZY¯ÐÒ¡$©<”5Þ÷Äâ¾áEó“xœ•1nÄ D{NñûÈÌjµÚ¤I‘2'øÀÇ¶cC¤Ü>ÞäiæI3š‘¦d"0ZÕÎ­½t£wÎ£@+úaìÆž:a¤õZ³3¥:øÑYT®wÁûQ8!Fc·	ª^ØŽ70¬eÞ2¼o1VxÝwŒ˜pñ®l§gr?p=jšZ·­7èT§”1¢—ðÂÉÙé®K)”áƒ–2Ã[=Ü×‡}òþ œ(¶[ž~«ZjÃ%‡†+ÎK_+]à©0QLŽ“°ÔLØÂ9)Mç²‹„	êÎØç2%òÍBc¿/ÿ:À~ N†mÁš xœ•KK,1…÷ù…[™±ú‘~"êFän.ú†ê¤ÒìN7y(óïo¹¨K¡à@…ïœS‰ž
3 šºÓu'ld×rß–(Se•$û+Ù÷b#Ï.BWªª®M«K.ó`[w\È¾T½4U‡ˆªè”â´zxZç9ÁÃ¶ÑLŽ¬Npû©Çq¹´„äÆ£Z—;(š¢­Ú›®QV(òv±1²‡?lã)¨	nß†]ïßØ;ž«ÿ£=¢„6ˆB¸÷…OàyYß9‹NNS> DŸTLža5°y»¿€Z]ô¹OR´Ñ`g-!ž]FÕ~øßˆEXØ¬a¢ðez£Ó6[E‘¿ìÅÇ^ØÑÂpµW9ç¬³Š~>ç„põi¶»Ðì™ô4ë²óÎ‰ŸÜÞñ;KNƒf)°>
ñjÇLVcÃåô«ÿ x¬¯¤œxœ…ÏKjÃ0à½N1°ÑÃz8%í²…´8'¢‘m[F’½}•B×]ÿß0S"8TB3i»À™ðÚ9á%ÃÀµ‘+Œ¤½qŠ“Í&\xÞ9ËòÀm”qE¯ÚTejé•½ì!v/SLp¶aˆóˆ	Žkmú§iÃö—g`Ši¡…á*)%µ]æR*xÇ¹LðºçëÇ›{ÌÓÓŠ÷6¦ñv••ªJÉ‹÷	s†ÏkêÅù .ñ!ºïXÏ	1-¶@ÜÊ×üÁÛåãq/Û^ZB.ó¸¢obû>üÿù‘Éh¹—xœ…ŽIjÄ0D÷:Å¿€dM­Ð„&½
’hø²EÛ–‘å…o%9@VÅ+xEÕ‚Î=
gÎ² ¹ŠÂ2f0`”Y¯UphÙlÁµ¥ÖsaãÆøêp¹PO%1pÊ­¼	Þ3$ö¨S.ðn+ÂgN#¸®úò·iÃÞçå˜bš1%•†ŽJJIk—TkÞ0Õ	^ŽÝOp}¸Ÿ¼=°¬8÷¹Œ*×BPÙTÕTòÚÉOø(i±å„{^kÉóÜÖîv³.Í©&Üa?¶-—JÈWW]Ž±sçÓÿÉ7‚cz–Jxœ“IÏ›H†ïüŠ¾å`%ìÝf4ûÎg>lŒ¹AÓ`0‹ÁØüú8‰r›ÓÔ¥¤·6•ªži$Hg“(‰0c`.0¡0ÃAT@–rTl!¦®ÙHú	pG|™e¹(”˜Íy®@¨à€xîÝ ,˜\BcæO>_0ey^Â„/ âN¤÷D6/³å°ÈeHÌKeótFà’z:e¾ã3øû’ÿôÿ^ÈØ“öÛ0Vÿ ²ˆçÙ­Èƒ#1…‡®«§‰üÒêZÝë
|ýiŠnÚØ™;Ùf ïŸú/¨C{UdYQe¹0j]ç¶záí1Šš"–Bï~jã)¼îr_6äNéÎWYV«KøG§@î«LÒôñÉp­¶Kî&?ýpÒd>¬Úþé%ö˜øæ7G·)Ç(0úC òSkÆ…U½;Íµ§[ÏT½DŸÄîTò´2¤×´S-q†¿¹$æÍ-»ÕM„e‰î†l(`{Ê,•îør_Ð‹vË[uJô÷ª1”Í‚;†­„å´Ãw8p£yæ½ŠqqYTO
ìE/~”õÝtÝ–¦WÛcFÆ"­¯KØ^,×ÉCä›Ò=,£M×(½Ÿù“|LæôÒ9g
@|×zE	Z4	6¬’àÆqh£[›‹ãªn°„Ù6ix…µÃ¡66¦Û#C•ê—Näº:X‡} Ž±²êˆ‚½–íËØ|­âÆÍ%:ùE(Î|)ÓûÙùI‡óßòÑ\’ïQ %7¯ñbˆñÓ*Ñ!ò=ï±šqX+3Ã·¸”ÿ˜Ÿ%¼Ó¬¹NQr‰¸{8sì‡ oóã{‹(µë{³öÉf£a¾D“Õ5I?Ÿ LÃ4ä4â_ÏBÊµO»7d:êsZçÎ¤À¢¥‘fAûô/qA ¯y+¹žn‹Gf—·þ™]¶ûçòq86y1•¹Œ£&Û#ª‡Æl)pÝÒ™¸‡×$—µÝSg*‚mã¦=êŸââÅÉ«KÚù,š´ÆbÐ)'1Ž—­ì[jüþ‡sOèO]gñ‘	3š÷Æ»F²àûnzz–DÈ«è'‹s²|§À÷8eÔofô@û/b(ŸŒù˜õo¿”õ“Ü¿€¡çiºÞÿ¢éêÍéœ{“KwKÝâÝ?:ò·5¨ûi ¿Å¯¿
©dØu“`xœ”I“›8†ïü
Ýr º-vp%©°ÛxÅmL_¦Íf±xùõCw’¹ÌÌ%ºHõ–>}¤zßŽbP‹|§1Ty¥‘I0E‰(Å¢¬$‰(FRÊÓ Š«(’iP†HI$ó)§pTÓ4Ñxe$rJÌ‰ªÌ ¾Ëk
–˜t90ú6ÎÁ×Kô1ÿ¸`Záâµ¦ÙwÀÉœ"§h€…„L\—%é:ü¥Y“µ$/Ã°gó5ØÎ¶ÀŸÏÖúámoê` ÙÍŸ†®¦®'±m^µï+þ99j;¯'wÍ6ZéŽ^eÆŠº™]v¿uD+Ó»î&ìœ½¸3Oé«Šxaˆ¸Ý"/~‰i‚·¿V/Q˜0ÏÆÄØ<&øâµx3×èÒ·¬ûHÚÞVêyK ·éPTŸ»h5QÖ6‚åT~æÎÞ‚w$+±YO[×e€ÕS¼ÛÙ>7¸ÛŸŽnîˆ­u<Koq#œâ[_í;óÈïT#4^yR…êÉ±N|WÆüÈ`{î]ýÌt›µª··fXã´‘r7-Öq}kYlæoÀî¢½õ…¹ñíû=Â®V^ƒd1ž`ÐxÑ+²‘—v¬\ïûOíüº¢ánÉÊŸV×!FÊòåQèsW~¶wdÄ!&RÒÐ‡áZíØÛ^]Ú7ÁŸ¹Vìµ‹>¢¼{ÈÊPŸ@I9ÞÝÐ­xaÐŒz±®žÇï`l	‹³Ûñ,tÓY“™°5ŽRÒ…¥|·eH,%†k@a}4Ä*ÇÏæ6ïÔl¸ýës˜Êòù¸?°ã(ÂÕ
öÞR~’lhÂÍmvz¼_Ùm> I›Ñº\†óÑñÏW[mMÞÄ¢{˜¨cãî{¬´<Wz\­&ô*ß¤Ìl¹N‹’39þ’¬¸7ë¤ª†}?nøNF7ía_—~ÓóGìq·Å&(ª|æMÀRve4gµnÌê¦¡Äêe^Z•7pêE;Éæäò…T‹çj¾b@þ™8E¦—gÀJ»+ÜãØ•¼L»«ë…»Þo;¸È-u¸g—ð¾EØ˜Ÿž±×Ö9†ñ¯=jsœ€ŸÞu
ºƒ´.ŠúFªlÊür-H **
Vˆ‘† ŽT„8ˆ`")<Æ±0¦Ÿ|¤Ã
ÓOÁ¨H+¿S…Ñ?Cc
Ì¼®²¿<Òƒ¯LéãcùãQvñëØè;c¡n,À¡è<àà”¦œxÈsc¨c0ãðÙP\Ö~é(Š/#0ˆ(ªÆTùÒ7mG1*'%jÇÈùòÏE~)¯"	ñZ’¤²#s)Ç	œ Ž¸±$Nµ©ÄMÅ¦è3RÓ–Ô€¯ð•/ Ã@IBºQDhKD;ÐöMSÓîgµO²
'/uš¾D_Xà±þ\`àr’Hxœ“ÉÎ£VF÷<ÅÝ[˜§V:
ŒŒmØÁå2OŒ1Ow·z)R¾M•ŽôÕ¢¤3ò,Ç	H 8.†<‡8R@'Æ‰³ÅA’C46Ä#êf 	:M(È±1Ù4!’	†Îà'$JIç¡(‹ŸsÑÀDå\ ù9ÁüY'?æß5;ÔüÑù_€äHž&EŽåÀŽ	ƒ}Û–óŒþG5ò©ÌÁ×ÈªfØÀÑàš-]OýÉ1€Ò56Y’ä½$¥‡RU)AM­äý*½Š®5…Íáºƒ“œ¤ƒÔÊíu©¥}^»¿9’“2Œ.ŽGº’iÚº×]Øh£w,ÅÙvxÛUì.w%l¾(ìéfïêQ+ri—Ý¾“Dõ“ £·Pú±WÈ7Š½Î‚y4JÉ÷oib\%Šª¯A¦³ûM®<˜PâO,2žJSìánýj¥bQÇë3gãwÑ^]s§L¯z}¾ò­«­z³ÒãuÄû~9¼dÌ{Ÿ<?
Õ¥É³9”"¥é«6Ä¸+ßÖÉÀwÃVä¢¯‘hIoi§ßóN].j×$JDš•€o+)õÕ*ÇÓæ¬æFæ°á‹f+»¤uŒ[§Ë—71Qöã±¢×Äàh½	­éæ®$a»wü¢•ÒEÍ ?´þ4*x^áÄ´o_AønûÅÖd^=IBÎ±dkƒ¦£"J_´5Aõ^Ê*›¼šžyÛû§®<áCÓœItåûŽ)áô,%OÓÅ3aÈ´<ßêV‘•`Àò-¦Z×<„©¦ºÚ™÷ê‘ž7È‘§VŒ«•G›€ÈðM‡…3¯«|GžórgÏºhbàÍ²=ôøÇÕ<‹T˜<(ïž&¹Cêú4—^4KqÂº ‰ÕÌ”4³å¨'Ç\‚l÷¹@½nY )ºÓ¨ÐJzõç]±usA`Oñ²dÖJüu¯Q{æp~8þ“Éç¬ãû?_0p|~ÜE›ÂÎ%ù|# æJßŸ‹éù¬%GÏÕnŠÀÜ]4ïš§Ñ=Àïø~HñöËÕVþÍ¬-áØw`ËnÎ@ö±šc¾’rHS?·x„Å„a~™w(ýê³ì+yû/ƒ± A¸nÔ”fxœTÛ®£6}ç+¬yÎá’à£™j€„\I WHÕcq¸ƒ¯/93£VU¥Ö/Ø¯µ÷^°+	däCzXòŒE©?¡€‡>V¼	†BÊ#)\ŽJ’20	 7ÆÃáxÂ‚7
Q!Å‡
“‘LdÕì–•ÀD0¯K–5Y¾&áÏí÷´¡>Eï8K~"Ç„CiB¿¸>šPÆH	Ö„²Ðê
ßÀ×È{=¿G¤LIüž•áèP”å	ì¡“æaECðöZÚl¾ÜknÃr¾U§ýì3ÎP{ùÔTUÓUÕ7èl&)3sÄãÃÝ?OìMåÆÆÅµsË3UCM´dß¶ªFö¯8ú7f×òü1=ãÞªµ—®'e'‹ÆŽçnªÊôyV…“’!w
Ù!Ó¹$é¢p Pì‚¨Í<„!½H;ToÉŽJbù²7vÑM±ƒR3,”®=Èýñ”/g“Å²Ùr@?’mXGŽoº.¦šS$xÛ*	ÄÎ7ÆoYDE5¯ô²Ü(]óýÚ‹%O¼ÀÎëÜº&ÞKqëäFg_1s¢–«U(ÙÜÜ—¤y¦É²‰\%O²nì¨‡\Fx/ÖÉíÉðÌÅ}à§z‘ú~Åäf.†«xÙ÷§¼ (J<xÊg8tv,´‰,è6	ø‚¶æ½ã€¶Ô/ê~MZû¸ßŸvWîÄtÏw““"Z^¤:»…ˆ´ÃtuÚ´‰'ÕôB…šÎÝº!¬Ù4Æ|ØÌPk¹ö~:zX«•,ˆ;óY¼Ý%©îƒšç$—#®f7·¾f|­®wÇ§±™\z†»Û,ô»M*~å;Vg±¤ò¦x¬¡f¤×[ÿÛÎ„i‡OÖ5j6°q£cpÝ¸I¹½	t8/ÊåC­¢u8šNSÂ¬xEã¸6#1À¹Ûl'ÅH?ZZÉwg­‹ÞQ`ÚB`Õ>C[{r nçAàÀáz[Ä-.TkU9°
Å±$™}‡×„P<¢ÃÙ&ÎãYhÓ@ÜJUuM9ÐÍvë`ä^SöŒ*ˆbÑœáÅiØuÇôMŽÃPlç3‹º‡ûß¼“bp?ff¶þÛÄpi“€|lÏËéRy\‡4A?ãÛ³IÀa«Z g)+³8&eÅqŸFð-Íâ,ì ­@UçyV2âƒ,ýEd’8Fiö Z\ƒ’ØSë”Ð¸ãPê÷¬‰GSRê”57TúmoHocÒgC/Ê†–¬F1}"F{ú,ø,ŒóICqn_NÂn¤o¢A)î)amVF4Á+M^fa‰’y4¦¬å?¶´Gg÷ÂþUã!A%Û.õwNíE¡iÅ !©ß+RåÓ€bÐ»fõâÉDý7ÌÊøÕNòÊ÷³ÀOå¸¿)÷ÎqF=ÉJÒóÙ¸1–W<ß¶í{òS®—uò}É~YÅWYÀ^‚ð¯ïôV¥(ïõ§aJü·,Þ¼îãÿ81÷{BÊ°W¦ÎÈõ%%íp¯z9ë
…ä’þ‡?sÉPè›xœ•=n„0„{ŸâõèÙ€Í®VÑ&MŠ”9±ŸÁäŸH¹}Øì	RÍh>4SXDá§]/”±ÜNcçl'ä¨vÑMF(vèD±@×Ó¨í@ˆÃÈû-‘(Œ4gAqy±1]Ë²'øØ·­ÂÛqèMGím…ÛSÛùAîY‡\ãÜš=¼—\ÊËØó^pèið¥P‚Oòe÷šÍ·uzè}¥ik÷4ÿU•ªã=4(‹ß®ôJ@[&ðt´OŸ‹.Î?jônO±/?G²Íî\3ý\ÿ5œýë+iû–xœ•PËNÃ0¼û+öl§q’ªB…BáÖö&±š8‘íT”¯ÇiÅ‰§Ù×Œf'"h„lxm±4¥i)¡y)šÖ¶m©j)++Li¥&¶` Ÿ $^IN­(u­šJ´•ÞsiMYAâ¾1J3\Ó0xÇq…çeÁ=:»ÂñŽE¿mN§¸ú¾0óôB	Us!Û
xUr–§“K‰¼“K¼¬Ñp<ëOg
žÆbýšíÖ²­aÇçŒùËDèÜ$7QL8-Ð¦58‘ÒoËØ›‡Ï?G1…ÕÜ+÷9Ð×Dñ1¼!HJCo¡ÎînKÈ9A HáBüž2¦Ì€¾¿“,&„‘ü*N´ý—Ô] `ìÃõžìnîº¾þ•!ûÉ5šÇž0xœ…’_oÓ0Åßý)î[hÒÄm’fšÐ˜&Á„¨ÄØž'ÿ¹n¬&v±ÝUùöØ†­ xJßsÎ=?'8D¨¶‚Ö-e|Ý¨FR¡Û¶ý¦ÛvbÓ#RÑö”Ö|MŽÌ¡	ÀÚ³-]ÓjÓÈ¾í×½àUÝp®ºZÐ¶kx_©Š#a§0XŸ˜1èáµAq@¸¢Ï?y,%¾‡º­Û¦«šÍÞUuUa§I‡€>£Üž¼àúÀÓóæ€ÎàXZ·ÏÒŽÒŽv5U¥ä™?û€<=Ýßrv‚»/÷ÀŒ„	Ýa°>˜ïöhÐ± ­u2"½xBnmŒTŒ;-|)²,‹8]üR. ­˜N„5éßõÁ¾ú"0¨Øi9v_w%ìåˆÞCôl^OyH­&À%yþ`ä3œãªìs¼N,ÌË„Å«D—J§©¿’Ü:ë.(– §ãˆSºÂCl“#ä3›KBíáÈB$)y`ãV%—‚ËLäÍ)ŽÁ c]'†™èT³+í¯HnÎ{¦ƒ¿îg¿¬”vÓ9‚XÉI¯¢µÓèÿ)”Å+a™=âÐÇr÷³?Í	ù¦÷ea•*ø|õŸ?‘ü f“xœ…ÍN…0…÷}ŠÙ-¥”›sueâN}ÒN¡­éæ¾½ÀÒ«É$ç|sæäˆ‚ƒVem§m«‘Ôö¢oéÈûAIÆÄ}Gò¥"úœ[É¬©îµÜ2¡,•LkŽC+;Cûv}ÓUò"¼(ï1Á:zA¸Î;ç–JÂÚà#PAc’ËÚ4D‡ms9c„Wty†ç’ô×e<æmÁèq­CœNkÏš¾m;¨±[‰ÿÞðcq«5)çS†Ï|¥aucTñNÈÓº†Èögü#€Ã„Ê@°J„ðãaVÞT:*›ÑC1”¼ÿ“jø˜]u0ÓN<¸ÊØBD°Åëì‚W«Ë÷¿œ&ç§ó&X·îÅ8¦°%—ˆ5!ïnòhª`m5Þ/ÿÔG~$ì”=xœ…ÍjÃ0„ïzŠ½—¤ú³$‡BO…ÒKû EVV¶bG*ú)äíë´PÈ©§f÷›akFê…qB¡ê%z¥•sZ÷Ú9Ó.…Ð²¼AG>mÆXÁ0ßIÁ(jé©5ÜñÎ*o,g‚)'¨g†2Þ÷Ä¶:¥Ï6F,ð†!¢›öÓšs,­àö„`Š)Î(£”¸t¹„Z1Ã†:ÁS+n‚ý<ÜæqÆqÙ¦<þ šS-DªV”´–ÇsIq-…RssnÖGÎ¸jOw¶ÍÙ^	yÅ<"imüÝ¶ŒPLöáÜÊ
B	q\ð.íïvKÈ{#ž6ÉûÍpÝýó8ùêœ{-’(xœ‘O‹Û0ÅïúC®]Œä8NTJ)í¹—Rè±Hã‘#VRIÎn¾}ÇÞM ·^40š÷æ÷¤VˆÀŽž&5h£GÙ;´{êåàœÁa8LG÷ãÉîµS(5ÔÁ*RÓÁhÂÃ(¥–Úö´wÆº	Qá‰¬”Ç£0K;çßMi>Á/ð>Å—µ~©K¥süjTR+Í'|JJÁÝè[£ÿQ•ÒêÔ³²g¥`„â±~z½äÒ Þ¢Í¡B¡?‹/4cž˜“o\Ý’°ùœLðí&ÄÏ3U‚h°äúô¸¬`ÒWS¼±*0C KÀØ´3Á.]#Ýmwâß¾åt%fáÉ-Ã²5!Üàê«gÏ;d'ÄWòi†uÑ:h©V¨­,Ø sr~Þh¶èæÝƒK¸’#¼§ï|–ògy¶Ì«äž›­1’™iëÓ«¯üÌó“x!×¨6Î†y"0â‚çµ^rÝp;øAÉÄ;›íÞ÷þ^‚Ñ<¿9¿E}PÂ¦k¨™±¦iÚéœ(xœRM¯Ô0¼çWøˆU•~·OqBBzpq\9‰Óh“*É>è¿ÇÙÕò®TUãÉxœ‰ k{¦f®¥"«”{9Ìã4Q£eÛ¢%#¥;Fòšfl4vg;M½ìÝ—gž»AÕi»Þ¨yjµÀk¾„_1fçá§[õ/ø°ý.ÿOéš¨ÒaûõPwóÔsïe-¥`ts9ÓÿTŽu=×SÃ•W
‹*:žÀº?àü®ÎÀF[ˆ Ö”£`\Òá…âÙÆ°uðölÝJoß	q)±[ÎÜlb0%·ø{pž5Ý´] ‡;TÖ5hÌdïáàÌl©‚/òÅ¥Ç.^Y¶Ýœ¥D¯ÄŠ¸+ƒ~Y_*ñ½Tñ»ôuÅ¸·4ÅpåŒý×ÉQÕÀŸŒŽÅÒ¶ç˜…Òéæg™Û=žÈÃ™R	ñ¹¸•A(³ãKQ9¢O{ˆ¹ÀÊD¸Ùo?žŸm‰öŠ§¥€P_Dá;z>ä{–LÉºbÂäô+[‚r¡Þärj%þÖêÞ_–)xœ‘½ŽÛ0„{>ÅÂMŠ³Q–eë`¤¸"HŠ‚Ô+r%-Ä¤ìøíC)— é®"vÀo8³Ld×ªBºƒ¬Ë²¨uÛé®jÏGUÕZÏt.ªK1a —à¨Ê¶kšSy@]É®Â¶¬NÍIžQ·úpªë<ÉöÐ	œÓà|ÅØÁO6j„‹½/ç5Î‘öÊÛµ¬ÊF–Çž
Y"«–S¢')y.3YfRtØVñ:þÑ[KÖ‡Â1
ñÍ;ßA(ä: 'Vh ËI7î–ÍQù…ü“”wŽTÚ¡1›½xKlÌ"rŠ]74}`§?E 2e)Fì)BûX¢,wò“z¾eq	&&Bµf±Ü:Æ»žÂ.ÌÎ-Ì|Ð‚á‘ƒ%drwvI¬Á¬wœ|Ø®A¤Æ¸öÊ­	ØN@—öBüˆ,¦@7ös4È.ÁëY‘•y7O`Q×e¤#Ls˜|Þ·ß3FwÒ»öñŸäìû@ø2›ƒc¸¨¿Ú~|×®w­ÖŸú~Ãžá5°m)ôpÉ‹âkÿ>î-½ˆßiiâœ"xœQMkã0½ëW=µÝm”Ø±Kz({Ù]Øóx4²El)HrMþ}•Ðýèma`˜Ç{o392ƒ\›ª®[£Ú¦ª•©:m%UÄf]o¤ÄmÓ2)^·â„‘}†ÚP£¥Ú f]ë­"Û‘Ô•m6X‘¶u%%qU±À9!Â7ŒÙyøåF:ÂnZ.ýæÄ+
ÓT­d«Ú^Ã©¤\Îü?Ê­R­jtQê¢»è(=BáÀŸ2Ð€îo ¥g*HðÖõBü\‚RŒÉg0ÁóW@o Ç1,	N˜’óýU&†¿~÷p
Î—ˆIä3,a„<p\\Yí™ä _všùt{gÀº˜òJˆç >äkÄ‚-·"Û?ì¿9*Q:&¼°†	ÏLmyÚíp¯ï…Ê›‡îüOºŒþŒð:GŒÞÁŽ~c«ãvX]ï÷Yü{/ÑMÇv©Œ‡þc\M¼ï=Á¶ç’!xœMkÃ0@ïþbÇ…8u¾J)…v½lƒ[ILc»ØNCÿýÜÒzì$éIOŽžŠ¶•Š×9ï$¯‹†„RB6Ë‚ªÇ•U…ìˆžl„\Jj¤,W¢J´Ôñ¦lóVöÈûVa©*"d8ÇÑyØ£ÚÂžä6f¹Ä]˜eÒ™-ðŠç¢iVu	/9Ïs–¨Ñ1ÒÌšó–7E2‹d2{2´éì‰|„àA?[µ³€~˜Mº?@ï'9¢‡ç'ˆ.åÎ†7ÂØô§ý8ËHžàèBÐÝD|:0` K§éŠ‚ö˜š€VABn	pÄ$ØBô—pÝ‰—õéœ8R v:cì“NšR¯Ýyo#ê4zFø˜§z«a#ï,;ÜØnQòúKòÞ½6ù6!•»áVf†¶ìO›±ÿ˜9xœ“MoÔ0†ïù£ía[Ñ†$ÍÇ¦ªP«
8@Bª8"Ç'Ö:vd;Ë¯g¼i¡Ü8Å™Ì¼ï33Npˆ€²Í³®+º:¯0+ë²Àªª™Ìx[°¦®Ú®¸Ì³¢N&æÐØa¾+‹†qÙJÄ³v×U¸“"»™e×ŠZ"Ç„Ía°î™ÊÀw¥ù®Ç%>oüì1åv|ygeÓ”Yo²<ËŠŽ*üŸÊ&ÏÛ¼)¨² ÊÄ<xÁµº&ôhÐ)Úö½2=ÈÙð ¬aZ…C’ÜR
ƒÑ÷§g02î,„`ZÛÅÃh‚ÔøSuÏ>ØQýb±¬|ÑL: ªnVZ@P#3"FÜlŽï)ÜFEðø„ŽéX	šÎÚŸÃì£FÔúboìbÀR`N€?üÍ*Þ‚Öôaå„É)¢ÈÊtt$qòi’|lOJe>ùøãÃãÃÝÃíýû-t(cƒÛe¸žÂfJ¿%‰tØl!X@Ãbç"¥aÔ9Å3'€×S}‘Œß"	qxÖ#a<úUþß m6æJÖÑ’<pK¤ 4„sXtq`  òÔÎCš¦gÉÀÙ¡¡¢ ‡ûJøÀLO÷ú'Ç)¬o4šÙ9Ló3¨c+UUŠ®pº9%Ÿî” p‡,€îÊ„Î+âO°¦mÎ@:;ÒÊ)Ç©­˜„ôpAqÑ®àn`Š¶z`ðiÖ{æŒ‚kþK÷Ï±›EðãÍN~y;—#xœA‹Û0…ïúsLè®±ì(–—°¤ôÐCÙË–ÒcË£DX²\IŽÉ¿_9¤‡
‹bï›™7)AÓT5W¼-ÛP’W­(;©ê–£®ÊÉŠxË&4&Ð}S+^uRÈºÏv5¯„Ðç{½£Fª¥Ö‚áœ.>À†dFøm¬àà–õ?Æ9R¡¼{¾ç;ÙH¾¯áKÉË’eÕ™”è3dÃ¹”rŸÉ*“l¼:zì{ˆÞDã&kôÍŒgp¨‚ óB§¦L7':6e	ÇyÚl·[Æ~ÅÕü˜W
7¸ôlï—`ÒŠeÛð¬óMs†žž ó`ú3›@¬O¼\†C76Çœ,&‚)àëcwZ{ŸB!Bò9À@¹[„œœ+áòô„¥‚±wºZ¨în/ðí‚&áxCø1ÛÃhà þjÅðÐŽK¯î§üþ‰gßƒq…3b.çGY8zeÍ¢½e’xœŽ±NÃ0E÷|ÅA(mž;IUU•˜_œçÖjì€ë´ôï1¨lLW÷HG:)2Ã`ÖFôÒb#ÕJ4µ¶Eê,SoQé^Ñ ‹wŠ)U-d‡ºV­¥èª¡k„2ZéJ`eH0‰¶)hN‡)ÂÅä¼¹Ñaí/ß»=Í'^˜Éo 5"¶BcVU‘©w)ñÌ&«­ÙÙ,ÂÙsi¦Ø¤’ÆñïW`Ý'“™}Ž§ä¦ 6W•åÇì8-Ë]Q¼òÙñ…‡²¿®àñ@.Q¸<Ïã‘bp°6¿lq¼±íe0?åí<Eç{Ž{XŸòÝîowáyS|ß³vc‘xœOÍjÃ0¾û)tlÙ(v–Äéc/°sE‘•Ø4‰‹­´ôíç0=î$Ð÷/‰ª®±Õà4ÒÐöÚPc¹Òuz@ã°©tMÖ`§Õ/¦všõ`Y“éëJ;lÛ½u!ÝÖ\‘¬kU¸Š	¾1IXà&ºÀÇ|ßîW^3(ÎŸ`ZSmÓ4^´ÑZ•ïDø?JkŠ¢6EY¥rñìB¦xãôÃ6Ž†ñàøˆáîyÄ™¥˜ŽD©'t£ðxcè¹qš"¡°ƒþ×ThqÍ@ ‰j‹;“¤é|âÏ—…I0y·ñœxˆ‰[9À©d¬Y`ÆC^+ñ(ÏC.©w|dˆËæ žñºym±—±¸aŸå¿•»½B¢˜\Y4=êæ[šG•3xœ…RÁŽÓ0½û+æ–¤²“6M—â„+qvìqcâØ‘í¤ôïwAì®qòÈóÞ›7ÏÎ°á­nM7˜¶o‡^ZÞóÓQˆ~è„Ú·G‰ÝÃÑgè…9ì[Áñ¸7\öj²3½lD+:Õr#z.šÓ‰É5!ÂGé=&øŠÖ£šîGÒùÖ„;ïAtbßt§ÃžÃ.8g*Ì³Í#|–1[ß­SÜÏ—r>	sc’KÎÛŽ˜1™ßf¬µM*lïÀ…0­àO›HçÆDeYBŸcpŽnûd^o•’<g|2KÄT yÄ+¤1¬NÃ€Œ®ÆˆpCÖ€P×7«ÂRÀ&8ÛÒ¦šøPÖ”^;JeÇØC ¹«!¡+É­„Œó¢ŒWÒóõëIŠU“Ì¡™s´Ãš±ÌRc	[¿é¯Oñ†^ä2Z5Þ˜Ï(¯€2v´¤É.ê<ŒÔqálUøA.‹³´kð,8M’F.‘ Ì ƒ¯2¤u!ç· à¥»|¹%ýf¾…Â5eå†)‹”Ö‹zVO‚æþyß+{²yû›åùÍž=ê:S×»ÿüÁ—èÿ»þàá‘ xœ…M‹A†ïý+ê–ƒ$LOæ#³,²
‚¢xPÐ£ÔtWeŠtº×îžÄü{+zaëRPð~<U3Œ:}ã¹£i°ÄØ3sgy:°ÚiìÙöí¾mfóŒ™b…±™ÙÙ¶õûO<v–†½=ÌvêLìûÎºqDƒk]R†÷#øBÉõy*k¡§×`;ôÃ8^5¶iŒKç³ÔJ>’ÔÞ®Å-ðxšïûéD9RØ¥|ü+{è:Ø6ƒJãœÅ•`ùY¢T‚Ò3¤¨‡ñ  x&M(Æ|_(ÞEâêBà¥¸t¡|…Í¢Í3•5Ô¢òÿ9°""å¢>.)ª«¢YWÚ„p·PŒÿtÁò'jûîÃçoo>ÊYM\òR ÃoºJYÏä¡&{q¨b„kNÚs£%qô£üä®S¨VØóUŽ‘ü61oçÛÃÏ7¿«A™xœ=ŒËjÃ0D÷úŠ»ocîÕ[Jh7~…*K‘H,Yê÷×!ÐÍgàLo1‚š%%c<\rJ3
!p‘Èi®œµZÍ*ÊÄ6ßbí@&ùàyr˜„ôÚ$tÎ‡h¥ÆD>Ø¼¶ÚJæGÏkƒ«¯cñµçW8çÊ—¥„¶Ö)¬Ë&ÉxC%ëRz¾cé>Ç2œï?Ï¾Üc«ñ1­íöRÉºjDÆ^Ç°=Æ­Tøm/Ò„“‚(úâïÏ°m[[gE<OÍ”xœ=ŒËŠ1E÷ùŠÚÓTRy‚ˆÌJ˜¯ÈK´Ó¿ß„Y]Î…sFÏxÐA&ÉùLâBVFŠFX!ÑÚ 5E¥)Ç¾ç6 q³¤DÁyQ£×#c…F#I	‘P¹ós”­ÃÙ·¹ú6Ê„3Ê?•ÓZcßÚ·õ\sV9…ð…ŠíïZÇÈ~s~æ38ÜÂßžn¹·|_¶~ý¨ÜíºoÔˆŒ}Âð¸ÏkmðÊýYwä.Š½agI—xœ•ŽKn„0D÷>Eï#PF“l²È2'0¦Ö€AÆD™Û’dõ¤*Ué•LçR‘åDModè…Þ™F
Þ
Ó:c¹4m`«Ë”
nMOm5yá} -¢AÔ¡å
S"+5s{—ïË4íðº®nrÉÅ~‡ëëálî››·=µ_æpÍUk¹E/¨²#c)”áƒbámßü×Gwòþ œhª—<üN5?¬€
5"cék¦„øçËáÓ [yNÄØgõÕBÕ=/ÿ’d?Îbº”xœŽÁJÄ0E÷ýŠ÷S^Ú&i`AAPgf¡¨qñúòbëtÒ!Íàïå.îåÂ““X:ß+VJ·Íàt@îzoƒm±³Ž±ÒÕ…’Ä†m§½h§;ÍCcH™FP˜„ƒèF±´TÑ5K‚G	ö“DØ~—YÏeî~<×¼œo@¥]ïí`ƒ±*ïyÊY<É”G¸½®<Âö4üõî$)Ê\/éë-1®Å‚š‚VÇ·ƒlîöŸðr,îðzñ”e…P<îßá@SÌ)²À³ÌB«T¿yxN ”xœŽANÃ0E÷9Å\ ÑØN[ªP¡l€Âˆ…c›ÐÄŽG½>šÅúÒ›™œˆÀp#Dƒ¬Ad\q§„è¸7–Þpé­²FQ-&QÈàzÆMëhd#»ÆpÇzßŠŽ˜Ö®o<+³å!&x%ïá2R€ãoÁz*xº;[Û8? “¬Õš)D8`‹X•vs¦o4æž¶Õp¼õ{žn”MuL×µŒÔbWeQ«ïÏw:œ//?ðè¬Û²Ä”Á—/ÝÁnkŽsÙ<ºr„¯ç3,ÓvìWgÜZý¿zT>›xœ•ÐËjÃ0Ð½¾bö%F’-?BZâPRB»ëŒ¢±#bKF>þ¾		´ÛÎæÂ\“h#¨6ÚP­*Qq!k= ,iPUYª¦”²R¦i¶` — U—itkŒÖ•m«:sÊ`­9j©Eƒhætò^ü4eè—'thM†Í-‹ñÚl#Î1»±8úù	D-TÇ9¸*9»lg›x%›N°Ëñx‚ÍY_s{¦àh*|ïTÊ¶«`ÅkÎs3­I#Ä„)G°nðaÆd½L)XEèÒ‚˜—Å‡ÄXoŒu#¼ízx¿ÉÃÙÿÊý]~^ÏÛžáø—PcïvtdV~Vú{ý¯G°ðª†.˜xœ•ŽMjÃ0„÷:ÅÛÉ²¤çJÚM]öúy²ElÉÈr ·oBNÐÕ3|Ì´J>
ëPáÈÆ^ð~ÐB¹(=J/0J”¨ƒŽl³•rƒÁ8,Z£œ¦AZA‚F7LÔ¾W„^q¡Ff6—
_eYøØ6»ØlS8àòâiz6×Ý®û‘§“/ë;ˆÇ4š•„7®$gtM­Q…oJm†Ïc÷3\nîÉëj¦åTêôRÇ¾GäÐqÍ9cù¾Ò*­åNÐªMKÊì›õÄØOš2…®ÄØ¹ßó¿^²?Ac4Ÿ²xœÕVY¯â¸~Ï¯ðÃ•fF@Z}F°¯Kƒ®Ôrb'1Yâ,À¯¿géEÜ3Ò¼/!åúªÊ®ú¾8K1P”[¢ÖÂ²$áN[qU:ªÝr5EÑD„[°5W[BSg@•Ý6Öd]Óe·EÅ•±¬«¶ØVl§Íýõ6–µÝ`žù4ô¦$²qêÏŒ¿~ñ^_þHšÔê¨RKÖA]l‹¢àÐ("Y†S0Å$ó™3ÇŸ»z~	pã°ASïª*ºj¢Î¡^â1âzõ3ûÃñ,‡K`‡c³]÷ïv€¬Æ7Ó0Ì®a é÷åNÍ6NÛ:¡¾š±C8ØVÉÒž#2—R·4º^°z³Àž›ËhvzsmA²U;˜ÖZT|ÍÚ[n7ÖMJŽ7RJÍþó³YÄ³D$9kÚè¨6½ƒ æJçÒ
—T:vŸÝ­1¤G¥ åeÖ/°Þ"›S´¸v/4ÔÍM·Öx>AF÷ëÃq¶¿°D  é^®·d9Y"X¬F=#S{1ƒ‡½u9š·y“º9-I±Mº¬CsÇ©ÜJÏ;ªÍ¯,7ÖWn<¹Ô:îP+¯´UÓÒ‘¤ºÒäxÖ2lÅ§5Ì}6*ž¥6õœQ›hÑ?-PÔ?Îù.Â¯‹Í1ñÐj™Ú›æÀ>^kØtoZS«ÝÖfR«WI<m¶›6¿vçÙ¸½Yô–Ò<É_ šR”›ýñ¢ô´^’zjOëQ¾Žšƒ¤ÆÄÚÎLkÊrgÄvßLìaJ§ypFÑm•8£±èé‹BÍƒ\ÞNƒ~Ú>­co?Ý?oÄöHV¬!"«<-WÖ:sMžm»±uêÃÛxgÕÂó† dŸ5×ÊÆýI¿yÕ—‡ÞX)vOpëx²²q<Ú/ÛîµuŸƒÒ“ë0ÈÖ=gy˜EÂ¦ìö+ßèÇë¸è¼fXì¡r>­ƒøfOFéö”^Ë0‹F³öl.Qt>]ÍÝ ¶®0ÐÆ+‚Ç“ñWÖ§²ûsè„Em¦X;}Ufgn\7¹¸¦ï7g	Í&ç¹>ñ½0ªŒév`mVêžÐîÑR‰ÙñÆòE~i•zŠ#ý`†º!§Â»[ù$€§¾½%Âgú‹Þ#ÆqázFRïú	ø°À $,«³ÜfW’”pi qx³”†!N(+úÂ,ƒŽˆa„Y,{Ç Íã˜ÄÞOh `	vˆKœïˆ?A‰Í³$Ï CùXø1QæÃØ8¤<\F«eð0ÃH±SbÆ qïk)>ç˜¯!á= @'ã|á{x/ù%VÔ„þFIˆ?	ÿÕaüTtá¢YYÅXz9ª—ÔÁbµxŠÏqC%­.J.nx~f“Œ…ÐfŸòœ ObÛq]kõTÝ:WC©nkšRçZê¸¥¥‰º-üW µú=½2'Y
JŸ$±!IJ£Õ¸…AOª*‹¼DÞ%šd$"7¾Õ7¬ô+VQÊ#ì;B~€>D(ê{ˆ $†ŽÃ[Cìð;\}ðáöÞ­	ÕÚƒ#ÚrÈ":r|ŒÐäxÜaãó‘}åÿÇh„ËŠœnÎ*bÁ˜Ý‡>gü‹šù$î¯ßÙøÿ&¿"½†áiý'o'D)KÈ‰_Ññµ’Ò'üc¤´ ˆ‡±¯÷dŽc¯j6r‡/ø8ådú÷³éNºÐ{U)ÞîKœ @V'¢Ü0ÆßÞŒÝågx9Ë,_…Ix“äJØª»ïpÌ¾Uí±S5‡Å¿e Œñ#ÿU×=ÞÔzù ©@²Ê³rã^ßøÔ|{IôîÆ¿š!>(?ëå÷a~üÎDôE—_kAÜVÆ/Áï…øoÖ¥éÝñ.³k\\bT·ùg¦Ë—ùF®Ló0€iLÀgçÍÖ^m_JäTƒð—`/æPêºwøßÝ<õÿ›Û¦ð?¾Y¥²” xœ•AkÜ0…ïúsl(kd[;Þ!$MÒRJ—@Jïcid‹Ø’‘ä„ý÷µ×%÷œž¤ùÞðžrd†ÊØ’5")Y•r(­>’i“E¶¨e¥é¨ÅD‘}mÑHm«#µížZ[!£:.RµnjÛ¬U³ð4ç>Dø†a†ûi¢<93ÃÍ¦E·Nîiö]¡Ãx%–ûF)Ä¾Ê}-Åò:ºœ9Â/v¹‡osÒ=Ü¼¶«Þ½rô<!v›õ TY#ì$J)„ùÈ˜È)AY(Èa•tO¾ãvÉ÷p9Ãéømí—ÏñÓÃéïo¾¸ÒÄºøàhä4‘fxºà¾Hì¯ X˜8&—ò2Û¶!tðH™à{ˆ#eØÁéáþ¬ãÁÀ;% ”\çy¹¬õJ„öœ9p
ïÂù-îÀåc0nñšµÉá?*ÄËeÃ.X»kÏ×Ÿúqñæ¨¦Ö‘xœ•Ýnƒ0…ïó¾ßŠ’ !TUÕ­“¦iÚUŸÀùƒ¨ ÛxûA»=ÀnlÙþ|Žì4ZLjKyÍ©Ì]QéŠqÊ5¶”¦´µwè„adÀÑ†¼2L¹¢@E¹P”jSÔ*¶¢º2¥ä&g•$8§6Žð»n†§aÀz3Ãáž³f›œ&ì§94™Žý˜`e!eNKx eNÉÚí}Jv„wëSÏó¤[8\Õ–OW;Ûeqlî«²ÈE]ÁŽ
J		Ÿ½Ýƒóß`¦0ÐqX`“\‹	Üvþ<€š³ãDÈ[€—ËÇ<oäùü%à«õ«»Y°÷»n5DÉbº	šÇÍÑ‡R‹)#äâ›`Í.:·SËþ_ï ?FT‡÷›xœ•ÁNÃ0DïþŠ½£VN;qU¡8ò›Ýuj5±#'AêßÓŠˆ§‘ÞhggÖ"Î„š¬ï¬­¹·ÜµZ*o»š¹§¶ïqÕˆS3I+¸Ð9©±¥
ëÐŠ±ì[öV,YMÞ™ÞXgœÂm=çoy7xšg1aäŽßºîÎiÁiÙÒ°§<=Bå*Ûxm|Ú­ntŠë*Þ%®gxÞ:ÃñÒßõt‘’dÜç2|Ÿvq];í´V*}Nr d†„“,3’@d œB DÂ­!åù
÷G˜X©×yùAþàÛ"åW”RqHÂ»Â®¿þ5\}¹€y‘xœ•=nÃ0…w‚{CŠeY‚"íÒ¡[{€@–h[ˆ-	ú	Û×N€¬E>€|ßÉÁ°¦ÕRÈ½lv¦a”S†B2AUƒJ70´m%	*¢Ë°çïRÖil÷\µt­Ø«NR(Z^kÙôÈ‰*yò>ý<xAÍÊ)k
ZÛä”Ô’Š+í—7`‚5µm'á…65%kw±9c„/´y‚’ôÇK¿éé‚Ñá\ù8>PÉkÁ%ì¨ ”w]ð ¥óºˆrì¢¿"ä	!¨”òÅél½#äû/ï+X¿{‚›K™Åºg‹DLeÎ¢uÙºz•Ð€w÷”í˜ñA{ƒw<ßBƒ’6÷j"z1çìÏ)¯cEÈš†];üëäý¾¡	˜xœ•ÝJÄ0…ïós/-éOÒtYewDÖ;}$´aÛ¤¤éªoo»ÅñJN†ïLæÄ€…*•¨±¢™ÆË¯¹(5/XA£¦2™ %£è"”tW\6¥Ö
¹`ZKMueò¼ŒUëŠR$rŽðìû~†ã8Ê^:i›ö[OÛur˜ä0Í®Mµ ãYYWŒ³
îè²Ÿ,¯ƒœÑÆNó¤;Ø_ÔÚûÔ‡ö†2QŒ×PN)!î:àdÓ@À	ÃUFë8­‘z½oa”-òÞÙ	–ŠþFÄašÇÑ‡f¹bÕ\ìæB~\àcýâëËÜý4%äÍ¶›Ä“¨¯Ý¿Â >9Þ2\N|–!vö§†%„M§Jä¿ÁoØáš¤%xœ•Q½nÜ0Þõ„×öûléì ’tèPt*ú ’Eù”“EA’“ÞÛWöµEÑ%èD‚¿‚9"‚ÄnìÔÄMß÷üØŸJ5½P˜ª”Rã©šÑg8Ý Æ£Ö]#ùq@£[#¦qè„œë‰…+xÏäšÏá39·ÂSÒI/­^áþVëyC“\Òêçz¢åZÑò¶oGÎáCÃ»†•ébsÆ_Ðæ3<¯i:ÃýEmõñ‚Ñ£«)Î7j×rÁšSÓ0æ_<„h}¾»„H¯›žôÒÅ[Æà”8šá%‘Cq‘™±OkÜNv×wiAÎ…ù7}w¶~éäsÁÃDØ¢šBáÚˆÌŽýc€ºf_)å"\Ü~íü1²	ªïþBo¾ú-úŒýºìÉ\Ã“KÄ¤ÖÛàn©H½ìq+9¥j? ²´µ™`ºy,0`”Ýµfì›=êsP×»ÿz%û	]“Ìí‘xœ•P½nÂ0Þý·1´ ‡Ä& TÑ
µC¤<Î‰…cG¶CKŸ¾!t`ír'}÷ýÜ]Žˆ`”Þœm)«8­u!*ÊÊÖBk©Jm°2Œ+ÅÈ "ú%ßÖ†sº‘¥Ò…,5¦æTn¸,%
Æ*Um(ÕDŒ¹>‚s#¼ƒpÂ«GØßûª½MIôiôíJ…þ
^0Ê6õšÁe%%ÚÛœ1Â'ÚÜÁÛ˜Tû³¼õÃ£G·
±½KË‚M‡À’Nâ/=îÀØo8žÐ˜T´C¶Áƒðl?ÄpAÈB˜Jœ˜ètz$&BÞoòæôˆ>ÃWg§-l‚£ÈN1dT3ÌÙú6Í¶ä1ÿ/[¦•Î]aaœi1Òu^&ûƒˆèÄlÞÙaEHc[zŒYÊëî_ï%¿›×¦è“xœ•PËNÄ0¼ç+|G]%MÓ6«Z¸pàÈ¬ÜÆm£m“*Vðõ´€'Nc=3–S ‚Vv­eÉ¹Qº)©aß«A¢ÔZ¶º7±¹J ªÊªí¨­lD­¹ìP‰F*]­Ë†¨©É0Ìiòžü<gxXWœÑ¡5N_x÷É9â³½_îAÔ¢Òu%+w\IÎ6v±)Q€g²i‚Çû	N×nÇó•‚£ùàÃø)URÈº-¡àçŒ¹×…Ž#Á^]âäo—˜0å·‰ìÞè|s½76‚ó®x§à{Ù&úÙ”rp¿8{7Âm¿ÍPB;Ç¯f“±‰æüð7Þº˜Í>[ƒuÉn{…pØbíèÈ~Šîíø¯²8œw–xœÏ±NÄ0à=Oá­jIÒ&iOŒ° ñIã´åÚ4JÒ{zÇÂÆdû—?ÉÎöŒÔ‰vJºQ#·0TõÂiÓ	©Ú#AGô¬1Fô8vz­rLIÖ*ª—V£¥ŠkZ2Þ}äyðºê#Áú„.ÍÇOwNzK‡ŸšqßI&ø ™¢pG¥¤¤Û’3ŽKžáùHã\´ù®çFk³ÇéF[Ör! ¦ªPrõééaÂqÓÜª'påœëîtè-!OÖBžªºþ]¬à¾LoÕ_Pß@CÈû2y´õî\m>OÿyŽ|åoø˜xœÏNÃ0Æïy
ßÑª¤mÒvBhü9Á/à&N[¶&S’jOO:€'[¶þ>;"¨•hš†÷½ ©dËÛ™ªA]cWi•Ò½EQrvÄ@.u¦®Œ©µPFT]­µéJÓ·…*µÐ–kA­!†K}€§.ÉErp½/Þ/Ù.â7ÚÏ7 ”e§¸pÅç,Wç)%Ê8Mi„»%ê1Óýw{
Ž…ÃZ‰ª”6¼É(ûpqÆƒó	ôHz3%4˜Ncöp¨L"%Æ~¦‘ ÓàæõRoÈÉ^šgŠGÔ´òÖ‡³IÃN«Çús¢øCgàùåöþí[¯`ì5¯'³ñÖnúóö?ïaŸ^â‰ ™xœ-ŒÍNÃ0„ïyŠ}†uìØ®TUH •¸pB6ö&1ÍOå8ÞWâ4ŸFóMŠÌ€èwµ /Mcµ´uLRè½ÐÎ ÊY7Š<% m<¢sí"ÕZµJê¦©<ŠÊzeÚ‚ÖÔÏ^¸máx‚ÃWÆrÈxúñ®tóx‘ÿM¥dma‡±ÈíRâ¯Rëâz8\›{ž®'Ê9vÿªÝuWMV‹é{äÂ'<‡.´=\ÂïK~ó”8ÒÂàæuJø°ÜúeyƒÛSç¹ƒ7ê¸øC&U+Ÿ'xœQKoÜ ¾ó+æØªY‹ØÆ(ª’>UUÛRõaX£õ‚ãTÛ__Ö‰šhÕCæ{‰À*ÓHc°“%aß·Õ0(UZJ¶Æ–eÛtXÕ–ÄŒ‘<CÓ”}SVHµ¤¦¡¶nV•ìê^•ªUkºNvC„-Fv>Sˆ;‚ëÃzÝÝxbœçB‡Ã[¸l.ëV••êáÌ\"WŽ™"|%Ç#¼[’áz?œö›=EOS‘ùž ]V–°‘­”BX¢Óé
È§%ü¦`Àf7>øÍL1¹Ä§0:xŽašrEˆ[c a¤)7€]¼f<ðˆ‰8å!‹ËÄ„8-´Òæ'a\Òáâñ%k·Sð;øuŠ±:Êá³ÊÉÇ³³•H¼rðíçöÓý‡y}¹{ÿcûý5¸3¦Dr/Âÿ5Å³æ8œRxš@Ê3©3Fq6•%¹ Lp@o3j8®ÓÈ^	ÒLºâÎí<™M°v3¯þãÛÅÊØƒŸxœ•ŽInƒ0†÷>ÅÛW ØÆQ¥ÝtÑeOàá¬€AÆt:}Cs‚®>éŸô×‚œ¥1:\bO10éQšŽJÓÓà„ÔH²Ú‚¹Btv<úÞ³(UÌPÁú —^ÇMpŒ³`ˆÝë¸x]¦i‡çuµ“Í6…Î¶Ãá\7;o{Z¿Ì`ŠuBs)9<Q)(¹«sª¼aª#¼ì›á|s¯7,§v)Ã£ªY¯…†jJ	É36kI¹ž ¦/(8¤í˜ÚÒB¼+öóàl+üåyOCÆÐ,16îûô¯óä>7kV›!xœ•QÉnÝ0¼ë+xLP¼y—ƒ ÈÒ,@ñM=Se±%C¢ƒäï+÷E{ì‰à23’# mt§êÛ¡4½¥AWJv¥²…îMUÓ`UiÚJ‰#y…ªTUOuÓ´²WEÖR[ë¡‘Ô•R…ei¬¸ñ"<‡yÞàn]qFÎlp}ŽÇqïÜ&\ÒæÇã–(Ú¢nËJ•|‘M%E®.Ž™"|#ÇÜoi˜àúMïñö¢§ùâx†vE-«²“Rÿ¾ÐaÎóX÷/§{‰Áò	"¥5øDà<LÛ‚>WÐ ž	lˆ²OÙÀKH'ZBüÌòÙl¼ÈL—;MÜi0A>C°ÿ°Ÿâ•ræ/N¯— ƒKàÿðDððý¾þ”€Þ äCO)Áü;Åä‚y£ßÓKì†9:½1AFH·ao…øáFOæ¬=èÏ«ÿz„øüO³Y˜xœ•MjÃ0F÷:Åì‹ÃÈú³C(i»è¢ÐMN0–Æ¶ˆ-YNéí›tõà{¼ÅW23´J÷ˆ•gÛ)[³éMÛ(d%[e¬IÙ†ÄJ™S`3}OÄšjg46Á‘§–œóšµ”Ý½´—qÉð¹LÓoëJ%Ša‡Ó“‡áaÎÍÛž†ƒ_æWVj£¤i4¼ Q(îëKá_ËïûæG8]»ÏWÎ‰§Ã’‡gê¤jµ…
¢é6sµæ˜Ê(ø¾\> <ˆ	BÌìK¼1ÜÉnãòóô›—8$ÕÒ÷U÷{ü×ñ”5m¿ž)xœ•’Ën1E÷þŠÚ±€¹ã~F
	ˆB‚‰µån+n»e»#æï)g4ˆ°caùQun]—]"Œ|½è±WnûIâ DË¹Ñ]Ó)­º±½º¦kØ&†“hQLv0ªU}o”•rWÓ¤ídìh¦¾éuc˜ÜË|ŽÞïðaÛ¤—A:³ÃÍy>Î5r›åš÷0u\ßCÓ7mÛµ#oà-ïgtººR0Áte»=ënžToŸ0ôÇ˜æ3:4bjF8ðsÆÂóŠ×`Ý/È¨÷´—-‚I#¡F÷ŒPõiŸé ï¾P6zÃØcàá_ÀDÌáM%¼‡² Üÿ÷òw,á)us–é›ÌÙ…¢}U\ éV¿Ùº[d˜1õVi°¦>|ûzG¼—M-KaRÕ+àÈnd–žˆÅPó_šg6n˜dq1dˆÁŸ^{‘™l¦BYµcd‘6É_n_÷§E´"ÝÍcAÒ0ÎZ|ù6ÅµÖe—F©nhÑÚƒ:]ÿ×_`¿ë÷âQ˜xœ•Ínƒ0„ï~Š=õRÙcEUÚK=ö	Öë¬€AþI›·/(OÐÓŒf4Ÿ492ƒ¤a×K+­>ue¤%m­kmMGKNi±bäÁ5µÓÆ¶#j‰Q#™®wØ°ãR[­6Hc–<.>—i*ð¾®8a@ï
\žzöæšpN%Zæ7P­j}Ôm¯R×Rléìsæ_ìó%Ñ—›Ýõzãx:,qxNª;#¡’FJ!Â}æ3ôþS‰>?6¼@dbgØé\‚4.?2æ’¶Ð±ß~ìª¥ï+û8ÿë…ø&bq•xœ•PÁNÃ0½ç+|G«’6KÓiB„8Àb‚{Ú:mµ6‰’Øß“n»ràä§ç÷ülG‚¶JëšUºUÅsÑ®k•×\s!g¬P-\·Ä)&B)ª¼’’k*…e®
-%«É5]k­)dY5ÇÞzx²ã8ÃsjTFíÛKÍº¥³j
³é²ÆN·ÀRd‘r7t]P’Øiˆ=<ã{¸ŸCÓÃöX/uwDopÌ¬ï.Ö’’JXÑ’RBÌ×„+ç7Ü8Dp“ŸB‰±W<‚2íÏ„Î²Ø#¼íßa“õ'88Õ <X½Ác7„e!Á¡b8O#Ê_ìwÒ.!Î%Täªt‡
dá^?÷ðøã<†ÜØdÀ2^CÓ+ÓaÈÒZCg°]Y­Wõió¯—’_ž“xœ•PAnƒ0¼û«ôØ&²1ØEUÒK½TíÖ°+`#ÛTÊïB?ÐÓ¬vgvF“#Ôº’¦hÈ¶U¡HÚÚÔØJU
Å‹Â*ì„©¸2ŠÍÉgÐ1¢Ô‚c«uŠKmÚ¦)ºŽPÖhyS•¦¶šá’‡á=Œã—yÆ=ºnÓ†‡~½œNiñý¡Ó+%ÊB7¼ðÌ+ÉÙ};¹œ)Â¹<ÀÛ’ÚNW³âùJÑÓx±ß¤ZH-ì¹æœ1ÿ3ÑÚ}On)Óã=“ÙY×bvÁƒa;Gç³…`~p»¤u„<Œ˜)eXÃ¬ÜEŸ_ðÔHù²½w¾Çw¢)Ä³èÆ%Òf˜6Ç,i¥î6‹8…»¿;Æ¾]ï©Ûk÷ævüWìºGš…‘/xœ…RMk1½ëW¹8¥¶Ñz½ön%é¡zkrúy…ei‘fíäßwÖ1ù€@O‚™yOï½Êˆ°²¦±mUWÛÓºm´”®k¬Ñµ”]»Ò·«µl­TÆHÐÕ]­;ÛukmAÙmÑ©•ÝèF©f³n¥nÖ¶j¤>eø­bÄÑG4{„ÛžyîÊXpiñT›j½Ú´u+á»¬¤&ž3üAO=ü‹éáv¯§÷n9bX¦¼{…n«º©XÈ-C…S:{SnÀ¤œÑPx^EåðR)OtHPÈÇ]ÇCJƒ=ÂñèÓÈeÿÌ@*‚/eD8MJ2:ÌY…2UÀœÒ,Ú£ †[ŽaGFvÌƒÖÀÍPÂ	p–ÙcYŠ{žó>2\zpÂŒg³Iälþiè“%q±tÑFàíôHC™gQÍ–â!1‘/0(2“­#f*gî·^[“…÷(uPq_DbºiöËHáÔcdL,”Gs®œg!à*—–BüòÏÈ{âZ»ZÃõÕûê¾¤eµ>r°Þ~Èãê›xð»ˆv‘œ[è—›ÿ›ø'v˜xœ%ŽÍN„0F÷<Å}mé_2™Œ:+5Æ„…ãn/ChI)ãë‹ãê;9ÉI¾œˆ C«{Û)®gR“åÖ(KÒvVœÐ2Ë‹¥K20.z¡ë†7ä4³ŽIc¯3½G
ƒ¤†¢Ûò<Ó0À«§ ‡ï«iÇÓÃ
ã|¦X£„†AY«º.v;ûœ)Áù<Âã¶â‡kÿ·§+¥@SÓå?ÕL4÷Tïiñn3•8ù/xpÖmYbÊ0ì/>ÎOð>m §¸¹²mÏåråÒêc€¡}R¿1äU.š"xœ•QKOÄ ¾ó+æ¨ÑmZË–­1ÆG²Œîa÷†–ØBÔÇ¿—®¯³&3Ì÷‚ˆ@5ÊœiI¸6FRy&kåF^Ñ†Wkj.8jÁ&ä­UÛ–JÙrND(k%´ië
ÙÈV·f£Ê’áœzàÎÃ×Ó„:´z†‹¯ZtËÍUÄ1Î®+”/¡j*.ªªNÊu]²<mJàžlêáfŽª‡‹¹Ô«
Ž†Â‡îZóFÀªYŸ¹×‘ÎÁØw°:;·æ”w)dÙÌS˜UšA¬Š[ÆÒ #cO}~ž]G0Â”Q)n0<>?T—€NºÝ6÷Ä‰”5Va²Þl7-Ø~«ÜæDd?O“éh·½ÝIjMùLð¼ëÀ)1o²¿†O’>Ï8mÞÌ¹^óÞÅ%ðBòçwŸŒímçH¯2éJ~œÿë_Ø'3Îº)”xœP1nÃ0Üõ
"k‘D–mÙ‚"èÒ¡èÒ¾€’O¶‘X6d%m~_%YŠNHwÆ ¤ªR[ÓhY«ÆJ¡*mU#•­µD™µ,fð‘ŒQ²ªÎÛä¦âºÊØä%\«¹°5CÃ˜JÁçØOÞ9ÄÁÓ+¦Ðöã}ì‘çyc§ñ™2:i*EO²Ì¥Hè8Äˆ@obO/çÅö´?š[=<N›¤÷8­Rì¼¤µ¬¤Â±	ƒ]vtž[Ž vXìtA¸&/ï!¤P#–…;ñ1-)öéß10­n¬¥Äwì7›¾z<àiNÍäÅÑnýeÄö‹ãá´l„ø:v=9·6×Ý?~!~ É„s›xœÍjÃ0„ïzŠ}K¶%J	¡=„ôÐ³$¯máXJåuHÞ¾Js)ôÒÓÀì|ËîPD¥K©UkªyUä¶­[[ª\4…-E#„Ñ<×œtDO—Eiµ¶i¬hZËk!«ª¨µ2Áu¥¸å’é™úaö°u¾ƒ‡¤«£óó%;{¤Ì™1³a|.yY(ž—
¹Ìs–ÜÑa„-:êa=O¶‡‡ÁÜt5`ôxÌBìî¨E]U	U	eþ<âvz@èÐ/ú0‘ÿò0Oérä‚‡ÃaóI7ë¼¾|>¿ÃtÇ‰±?àå­átÔÔ†8‚¨	›ûçz„ÏÎ"£Ôk‡”§^èégø;x»öoûŒ±×yl¡mæºüg]ìf‰´•xœ•MjÃ0„÷:ÅÛI–-;„vÓE—=Á³ôd‹èÇÈrinß„ÒtõÁÌÔBÔI)„•æWÖJƒ’¤å@Ó8;©ÑM3WÄ6,”*ë´Ú^O½‘’Œ’(wNvÆšÎÈ~ÒÎºæï9„^·&ôö€ó/ÛåÙ\wŒû‘–Öäx1%G.„‚Þwœ=Òèk¥äë
oÇnV8ßæ'¯7*‰B›Ëò§öÓCm¸æœ±ô©1ÁŸ úÝ´àü7íà›"Å\î€!dƒÕç}8
ÁûôK"Ûdçšù~ú×ögm¦’xœ…ÁjÃ0DïúŠ½ù”J²#É!”´§ÒBÍH«uì¦–‚,ò÷uZrîi`˜7Ã”L5µ®%y/m¤mk¯‚VhëNl¤ÕÒxDÃÎ.S,àMcŒW¢«bÛJJ[‰vFl+’VŽ¹¹ô)Ã‹‹‘&ø¤!žvýÒ³Ÿæ‰ÖAjY7ÖÖZÁJH!¦qJ¡o4”žç	{ØüM÷'Ê‘¾×)ÑFév£pa”ÅËH<¦å-¸àkJÒ\Îsaìi1JOPñT=Tœÿù¼Kyt¥‚t.Ã’.	Ž)»Bðzøx¿ãKnp_¸®;ÇH§®ãþºýç-û¿ut,xœ•’MoÛ0†ïúDO-Ö’?â¸(†&C7ívÉ°;%Ó¶[ò$¹[ÿýèdÀ¶ã.ú ð>äK*"Øª¼©:B“kª©ÍÍ.ïTƒ²j°’HMiê]Õå…˜1K Ólµ"Êù5/tQK]æ]^+£©PeUhYE#pIƒðÉãûyÆÚvûËžõëËCÄ).®ÏŒŸÞƒÚªRÉmWðNV…lJà™là°D3ÀýI¯ûÃ‰‚£1ó¡ÿ-Ý±HÁFÖR
á^'ºl[ˆË<û ãzF¦%Âè{˜±'!¾öÏø¼Dj!y˜ƒµ-‡k'LÖ;@í—$â¢#}_Ö– YãÒ@0ø˜`Â7Hx¢•ÐÚhü+ø1X3NbŽ GoNñ–Áàp¢8£¡•€Œ˜šá\ƒX±Æ»¸_nÏtç¹\×3V:g@=g!Çl3ñ‘ÝNža-%´c„Èãþòí3<þœÅ*+á8“ÉàHg¢ÊT™)^®¯^{8^úôô—ùëîÒSË¶mg9½|n®n„8ÚÞQ»ñ]·Ñowÿ5uñÁoöçÏÂ€‹Ÿ1¤Ážà°ŠyØ—k¦wù¿º_Ž¾ë»-xœ•RÉnÛ0½ó+9%h-ÖEìÂ	‚´½¤è}DŽ$Â2)p	Ú¿/%·ië[OÃYÞ{³08" ¼,d'zÁ{‘—uƒ]ÞKÎ9RÓñ¦j+ÅËZÖ›Ñ‘	P–…êj¥8rQcË‹mSlQ	AÛ¢«Š¦¨ò¼lÛŠa£uðh§)ÂnžqBƒZE¸;ÛlX2÷O>š!“öôD%ò&o*ÞÂ;^æœ¥èI‡@žI‡öÑËîŽÝbïäM™uÃ
-x[Šf^sÎ˜y=Ñ- Ràã<[ OýQÑ¡‘ƒ³qz]¦Âap4` ˜ìÀØ×Qûå3Ú(-SÎƒîÞ(WŠÃJ1¢gVÊè©U	Ú-ã„îóÂH ( ž<Øž-î_å¿ºr‹¸œ¢J”Ú¬˜"öd’Ö	ƒ¶æOÇ‹|1œk2xHþo1OÄ¾|û‡ï³#ïAd¼Ì$3x!¹Ò”™(2‘‰®¯.åÎ³îÞÖuý)i>©Ô½NgâãÍÕc/z0¤6¶ï7ÝÛÿúì£ÝìÖÏ“ö	üœö2ê#ìp:þÙÍºfû/î']]ïï‘xœ=Ž[jÃ0EÿµŠÙ@Þ¶!”ßÒEŒÆ#[Ä–¬$Û¯ZJ¾Î½‡;µ0CÑå£ÔÑONEŠÑ˜Þ*•BK½£‘¬ƒ8°p® ô¤[ˆ183èÑ“›2Ú€ÉÈCüÄƒÀG]ößXjÊpãóÌ.ÛèÂ?¸N¼®íÛ'(¯¬Ô®W>¤“R4º¥Z›õÅ©.p{œ´Àå~ïõÎ%óÚíe~«£“Mí›*Ž’Ú·?1dÜ^g ÂØæg@8¸œé¬ü®‰ÜVV™xœ•ŽMnƒ0…÷>Åì+¢Áø(ŠÒnºè²'ð`¶«æöMTõ ]}OïÓ“^>˜AÕ­3*4ÞZez¨Ê±Tó(­ª©µmOAŠŽ´5½C|£ŒvhZ)Ñw­fmºFR§•<n¼oËRàußi¡H“/pùåixš[¢5•8œúm½Bmj…[íàuƒâÑ®SÎ|ÀOy„·’ú.s÷ämæ#òrÚŽáoZk×@…QˆøµòÂô)S.éyñ°Rš§8 Ež2A¾ï,Äç4DöÕBÕÝÏÿº-~ ìyiœxœ•KNÃ0Eç^Å›C*;ñ'®ªª BYÁ‹ýœXMœÈq
ìž–®€Ñ‘îÑÜ’‰€7­jMÒw!Ø&h²*8MÉ×Òu(‚l9¶lÁL©@Ð56N
çMp³(ÕœÑr#­D¥¸uÃ­s†·y7xZ1aôîÜõ7sZqZ·ÔïÜ<AhÑX¡6ðÀUÃÙub)”áƒbày[Ý ‡swãéL9Ñ¸›sÿ—J^¥TÜpÎXºL´‡¿aÉ1•˜zX©T°l™àõý0ù»ç¿Dý+^èšÐèWÆ>cŸÈWsU÷³ÿ×öSpS– xœ•ÝNÜ0FïýsÙ$u²ùÙE´‚Upµ<cN,²vd;ñî8» qÛ›Ëóñ‘£¨^s%x-Q
±ÕªëäVê¦*tÛÕº
Ym4:Í&áa#©Š·Ð²«%/•ª .xÛ¨J*‰®•ÅF¶h”Þ01ÇÁyºuã8Óõ4‰QXaÔL—§ž÷Ëä*ˆ}˜mŸK·ÿIES¬·|Ëë†Îx2cévob„§;˜8Ð¯9È.»¥_=Â[Œ¹óý­xYÔëe¼åœ1{Ø#›¼±ñ‚ÂàžHCDÒ£
¤“ÚŸ¿7ôƒ^ùsÑž§R¾‘°Š<´Ñ%®gì!qé@Âšhþ~;«MOßNì‚®ŽÔb)Òà_èŒì3»ÛÝ¯¾åêh2{|Èä	<½Iq }9[[g3m,Ôw €Z"!‰†ÉÙ€<iš>Í3§uÖ½\ü×Ÿ³w°X¨Œ’xœ•KjÄ0D÷:EïƒM[†!L²É"Ëœ@V·l3¶ddi ·Ï89AVêQP•3xÃlu-M•±=)ÝKâ±ï©Ì@¨Ñ“ØmâAŽN†Òé;¯ÙÞ“Ñ9mT«v–¼°%Ï1ÁG\×oûnWìB®¬§ÓÜ»%Lµ‹Û+4m£4ƒîáBñL·%gNðÉKžá½n†ë}<y»s
¼Ö1M¿U²1RB…¢á±ñ,p ’lpSŠe~œO\~™ž"/1€g›Kb!¾–)0UÑûjü¾ük¿ø˜‡m¦’xœ•MNÃ0F÷>ÅìQ*;ŽZU¨°AˆPíqb5q¢ØAâö¤Àê“ÞûF3SW"8É…B'É[·ÁzÉ[¡Í±Ó¤œÁãîØ‚+å
öhœð.êÎ*C]ëPÑrjcÔÜÐ*´R2Üê0¯ð2ãOË‚#fLaƒóOú»¹œÊ–ûƒŸ§GZH£¥T¸’œítJµÒ
o”ê Ï[ñœoîž—­™ÆÃ¼ö£]«54ÜpÎXþœ¨YÖ”ë	0(ëV®u¾–ºÓâ~Þë;Üw`ÞýB>Åä‹;TûH}¦ÐÌ16îëô¯Ø7)1sÑ–xœ•Ž»jÄ0D{}Åíƒ–e/Ë²I“"e¾àJº²ÍÚ–Ñ#¿—@úT3œá”D:p;mi$r…õB´}/µƒF£•‘˜h/ÐI#„6F!h/J”ç…àØ£áJŽÂ>hÇ°–9&xëZáõ8pÅ_áú›íô\î·\÷©uq»è…2½äÃ/\+ÎÎv[J¡´”Þjv3\ö™÷¥Ö6¦é5‡†ÎÛ¿6º zžh¢y ”N­\°Ô.zÊŒ}.ÓN¾‰!4öûò/göYi“xœ•KnÃ Eç¬âÍ+Gc0QT¥tÐaWð0Ç‰‹O¤î¾±²‚Ž®tŽÎàÖLãh…>Š£QŒäqPÆY©¸r4Ð0È^[ÃuïØ†™b”ê	=JïŒ–ÂŠ^õÔÓ4iìÈ~µbØê5eøJëÚàcÛpÅˆ‹kp~íaÞÍ¥`(-Î‡)…wJôÒh5xãCÏÙ“†¥VÊðMK½Âg+ÓÎw»ïåN9ÒzHy~¥Zp­5t\sÎX|ê¶¼Äz‚L!=Zl…`ž[ØÏlXÊg¨	n%EH­n­‚O9àÓî-c?ËÉuÉûÎþžþuˆýSÜs’xœË=n!Eá~VAçÊŸHQ¥²¹Ëàq™±lÏXgý‰‹l Õi¾3: ‚8iŽƒ×Ò’k*SFi0.´½e[¼)uºåŽu(m|l!YN ›‰JÎ&ru¢k-žcÄŸO”¥ÛàJ•4k2OBh1y‰È+¦üËÖÕ'NcQ»,êõ\ž}?£¯¸¼l}~SÄd9kÚë¨õ$ÛõzÿX§#úUz^—Ìß¸l7tÚŽ_»é£ÍXF—xœŽ½nÃ0ƒw?Åm™ëôcËAQ
Ùú'éd±-CQòüU‡;q ?’%31zìÑ*%ÆHX‚ÒI§½q‡hzÙ”y/03²žœFXÉÄ>PÄ£3ÚÛJõ›7a@k¥Bô¡šGv,‚F‰Ãà$«4)Ï¢¡G™S†O^Êï»Ÿáåæ~ôíÆyçõœòô
õ«ê­”ZC[ÏŠÆ§m[Já Í•óÄà2í9}\¿N"Ì¥÷K×MµîáÎu óSà'¯éàŒÝþÜ¸õëË^üµÚZÑ|hëj—œxœ¥Ž]j!„ßçýük'BÉrƒV[FvÕAÝ…½}ÌB½UEÍÎï‘wRiôÁ#Zg›ÐÇ ,i´‘‡ß.ê\'È	}hTŒŽF*TrÉGi2‘ÑH'6zÌ³uøN‰á£P¿µÎ'WÊ•ë×É÷‘ë-.­¿&‡s­|‚´R[£Œrð&”ÛJKž“ÿ¿´ý°§Á¨Fè‹~.Ïåš/¸z®³=æ€´.wÜÿÊ{4s«cß~w¸`Àšxœ¥ŒAN!÷œ‚½ÉÝÌ£;7nŒhàáL¾€á£‰·w6žÀm¥ªæ ´K±X¬Å±XáˆŒ°¬”xárq$-8dõ)mjv!²µ†C ³%¤L ¸lD¶àà‰ÍŸ¿r´L>X1ç8ˆëÏØÓ&²IŽ(HJ¾æÞ‡~*ú¾Ê¸ö‹ìßhr4´Ç·£]ŠÚÇÏDÚ/©×m½uä»Uß™ÅuÒzÌ‰ÿŸÔ+¢Ü ¥e]1Þ¡6»~~yS¿« bÂxœ;nÃ0{bûÀ—QŒ >€S¦_’Ëˆ°I
í ·Rä)ß3x½1ƒò."Û¨!Çiµ7Ò,>D¥‰²YÂ°QãÒÁO+tžPK.:Š™¼U.ÌZÙ õ"• }­.12œ3µ[i}r¡T¸¼­|ßS¹¥Ì¹¶ïÎ~}Í¯€“°íl¼)ÄpÐœzç˜PéiQóŸi¸„Ê'P	ðØõß±×ÌPöS
p¤|„vèC*÷# _©¯ðþqeØ7ö#4~Ž€£vÃf²gËë€]xœÈÁÃ0 @)Ï|ºBF°À£ä?«(ÊÀŸÎ“ºB{Ï»—{Ù¯3s9•H˜‹`uð„FŠÁÒFšSÇÎ±væëÚˆ,†gk¢Ð< Šu×ÂôÒŠÁEæþžŸÇü>Í¢ ·–Vxœ…TM¯¢HÝó+j9¦ßîÎCEEEÔÍ¤€‹ïˆ¿~ðeÞfÒÉÔ¦R§î97¹¹ç! ±QÄËl‰¬Š
!••CAJa<C(F²@Õ°A%ª$©TB(±Ä*A%‰ãäÆ\Ç$†J †‘@ÁŽÜ«laCp	T5	?ŠÏg×¾%õøžçoaUüœÌ	²ÈÉ,hVXjBLjÀaró®ïàG¼î÷5%Êß&Í©²Ì*êDUY–Jê¤Å	øö:sÝX;`oìÁqm8ÚÉ;èŸ8(€Ýõs®ió…¦E+¬ë¼¢Gö)œÓè¬ºv{ÍWþÕ­÷ÁV[i…ÖåOW[$™û…S Ø.Î‰Ë0þÍ7;7ÂÝí²àš.¬]ñ&÷è‡Lsg»ñ¢ôÆW‹ÝŠqœnK[¢€ôG’ŸsÚínš¡J
øQ@…6/Š˜>%á±È-‚ýÕT½N¦Íš}”­ó›ePÀª´Ìß\¢GÓ2é >›{×ßGÈ³}ákù=IŠ:xø^œ8#ÜãÍ>‰ãÖ¬7'|ÎÌ6ÕÝ<¯ÆrzöÒl?z|Ô™%Àbpç=ùònQt®Î%œi´ïêM…òvf,ÎŒ ÷˜û°É!éD`×[M±f•Þaµc…%˜(å¹!°N	#n ¡ÀÆÑÇuÎ‚ø£°àù	Zw—dy¹¸ËÓ™åíñÒ•ËX8G°S£·Œç‹Lh
 }8¤™8=[¶Ý
ÇpÊ\ÓáqM C7«µ¹;Q=¶½‡û ³Uh]ttûá±AàU_‹ØZÑË—Ü)ôÌf˜ôÔúOîp¼•0Ó•Í®É¢m^×õ
-ìÓ>Ûû™÷pç!œÆî”j~S·Vn8Œ÷±WV¡Ôs~¦ä;¼äU±Á¢å>õIa“)…,T×Ýü¼dÉŒãù9sDÁ’ŸWâžFÞÑ¡å(GQxÄ+S\iëÃõìž¾s1½J8LÓéà4sßÒi’SÇp¸E§Äácob/Ÿ"ucÎÍòAIw¡2ò§ŽËOcë´±þIŸíÆŸVáÓº³üc¨Ûï FÍäMAR<el’®x…C<>ÂmXõ¨AX•¤©ò5-E¸Gåï?AKPV€aˆjò’DÉdü/Ù–zé¾ºýõÕšÜha¦Zt8þ®j‚«²ýãÏ7Š:â¤DÑ·*Ž¿ã÷ßGPò^¢iëÏø¡¨Çh˜8¯z–%jÁá…ÙÄ¸OÑ÷Þv-z‹Ð¯ÿªÿO<Qÿ SHÁ• xœ•AoÜ …ïüŠ¹·k¼oUÉæPUQ{iÔû ƒÖp¥ô×g%9VBñfÞÇðJ"×‰~@£z'?µzp½ÁAÈ£8õ]ëN$5q¶b¢P@²½Bm¸1V	l5×\ÚôƒêºA!WV2ÜÊ|ó¼ÁýºâŒ½ÝàöZ›qïÜe\òÆÆÄåpÉ;y<¶‚Om}žUuñ¥P‚Gòe‚ó–Í·½×»¥@sÓøÏÚK%$ZÕ¶Œ…ßÝ ZXq$À`¡"×™Š!CtP§viÙ[™
ø}"”T—£ÄØÓä3ÔSâ©LôFsõ{»ðã×÷ñJøfkNÞ=ÃÃ'—´•-]7ø“§Ï 1OïwiûéÇ@ö;èç›ÿJŽ=ÄÃýKàp®æGLeò8ïf¨‰]ïÄGã_uÀ«œšxœ•MjÃ0…÷:ÅmIY²e…Ònºè²'Ù#ÛÄ’‚,zû&é	
>x?‹W23xÅd¨çÞ*…M«ºvx•Gr¬:mzc•7ÊHkŒw¾±£´Ø[k†Vw®3ýØ*‹Ú½#Ý4,¨–9eøLëZáýv£•"-c…ÓÓ3¹l¶§ÃÂd'­¥Õ
Þ°U(nXJá_¼”>ê6Ìpºº'/WÎ‘×CÊÓkª:”-JØ£A"Þ!sHw†iÛ–)òwÊ¹•a·:·øœø”ð5eIQˆïW{Ÿ¼ß»Ÿã¿~ˆ_–oI–xœ;nÃ0D{žb;R”IÉ0#]¤Ir~Va“ø‘‘ÛG6R¥J5ƒ7‹Ý’AXC;N’Yi$-¥’3ÖÔ’*a¸6vìŒ ‹J
.Í0šÖtƒ<t²ï$Õ¼WZ ƒ{äZšCDÕ2Çï.Üb„W'ÿ°óÅõ<yå®‰þ˜`í (m<ÑR²M½+¼¡+3¼Ôlf8]ô]ÏL¯MLÓ£Êe]ßÂžÊ­JÂêñ	}\òR“‹5Ã}£
òo°Kyµ;B>þ@÷Ð…	T)ÉéZð—l ¾f—W°iˆÆ=”IÍÛ™.,µ4„|º) ÝÇqÜëïãž'?w…~žxœ•Ánƒ0DïþŠ½W µÁGQ•öÒCý‚Å^
dLÕäëÚþ@OOšÑÌhrbS[§+«5aÎ5¡ÓÚe°Q>(”N‘é¼vb¥Ä1¶Þ %«[éFÅÚJd]·º³Ö>¬Me• =K‚·ešvxYWš(Òèw8ÿ²ìç²Ñ¼í±/Ý2?ƒl¤jÐÖª…'ÔŠ‡:9s‚wó ¯ûæ8_»ƒ—+§ÈS¹¤þ'Z5(k]CQˆ{ÜNÆ/¸/‘a~¬ö<;?ŽrŠî‰à[ O™ ßVÞ„øûÈ¾XB(ºÛé__Ä7ÄÉp¥˜!xœ•‘ÍjÃ0€ï~
ÝG‚“Øù)e´ÝaŒ6X_ÀNäÄ4±ƒíltO?§¥°v„,¾O–"d´ È…jš¼B…Xr![šaÑf´T˜WuSqY•dM Ù)¦
)¸”¼¨˜R5Ö[QcË$æXÉ’c›ÕD,a°ží8.°Ÿg1
#t·ÀöÓ~­ì¼˜übú´µÓ#deV°¦äY””ÄÛI‡€Ž¨Ã ‡Å·lÏr»3:ƒcj]CKš1J!¡¥„˜	7 ºt_®ÕZk‚‹m£/VaµÓÇ ~™gë!§A{øÔãxEÃ€÷¨8Îšÿ¡#?t)\5ñzš­ý…0ê8XÆšdê‚‡—×;èAx˜£ìôŒ2šò®{ƒ]b•Jäeó¯e’'›ì¯‡…ƒ>Ãa…!.ñ–§²Îƒß½ù³}˜%xœ…‘ÍnÛ0„ï|ŠE.JÐØ D‰¤ƒ´z(ô–öðgi–Hƒ¤ŒøíCM _Ò»óÍì°$D`Øqî(o–ZËNA•DÚ3Î\Û%{·#G•0´:)¤¢;Û2Y?ƒÞ)6'”•¼'j)cLð¬BÀ/èšÂãX9OyÉ¸µøZÞ²AÒ–3øF[J‰‰óìKÁ¿Ñ—~.ÙŒðxÐëûtÀpÚÆ´ÿ”w°¡¢J‰S:y“À”4½N1ç×2GÈXŠ{ð|8©É[p5Y3Åxlù;"4WŠæk	X<yƒùr„9ž”Š°èÔ2(šMÛÀíE°„ŠjîîA1LçWû~Æ¸âXŸMÅ¥óêbV(Xÿù^P+¡v˜`T—U’h¼óhë8Öi‚{Á-!¿üÖN¸ÔFòÜÞ|ÖäüUÎë¥W|§ Ï	oîÈ¿h7Ñ¹>?üçOÉ;b†Å6˜xœMÉn!@ï|…ïmR–É0HQu9Uý0N†&ˆä÷KÒK-K¶Ÿ÷Zˆ §IúÑi®åN#ªúaÒÒŒäº:m&Ï%yÍ²-+à8’­$
wtö(YÔÊùiPÚËÁHÅ-³­Î©Àg	ï­ÔaO=À‡/ôá´ØpÙbZ^AŒBši”†ÃïÂ:]B­Tà‹Bá­­8Ãþìîöp¦é²MåôhU;®ŒQ°áº·²o!ÛAËÞV‚x]|X1]©0ö‘°-÷O6O×€)×"¬	2¥|!8ÇtƒŸ¶V¨	ÚJPç>á¯8Ú…žY±•Îû®	¸Ý}ér¡LÑ“ß²_ÞÒt@›xœ•KNÃ0Eç^Å›£Tþ¤¶SU¨0aÀ<ÛÏ‰ÕÄŽÑÝC©X £#«3¸­C.P9gÝq01îPè±WAíQZDk¶b¥ÜÀx2¯Õ`ãà,Fhé<9k¼î{ŠÑÏÃ½M¥Â[™ç^ÖgÌ˜Âçã}¹l¸l{¾,Ï ´PÒ\KxâGÅÙ]RkTáR›àußüç«»ór¥ši>”:>Ò¾W\Zè¸áœ±ü¹P·Ö”Û	bú‚HÍO)°5lû¾‚v[	0‡?°á¯dì#™BWbìÜíô¯#ì¹Èq¬›xœ•ŽKjÃ0EçZÅ›}lY
!¤tÐaWð$=ˆ-	Y*t÷MÈ
::p.n-D`-{òãDBYM(ÇiÂA‰‡ÔB§…äÁ°Œ…b…>¬Úiî{¯ƒ•vâN(2^!*œ•†­.©ÀgÚ¶ï9ã†×Ðàòâi~.·÷£ÅùäÓ~¡…’£µf€7>(Îv_k¥_´Ö>Úá¸ÜÝ“·;•HÛ)•ù•ö½4BCÇGÎ‹?;u¹¬±žC€	ŽŒž Kj1@]R¦‚5•ƒ±ïuŽº4Mû=ÿë8ûî,kŸxœ•ŽMnÃ „÷œâí+[€ù‰£(J»é¢Ëžà6
ÆÈÆRÓÓ×iOÐÕ'Í§ÑL]‰À¶7œ»¬8YZ
§w„¼³ýI/¹“Ê²‚+å
Æ*Œ÷Âk¦7½ò¨zÍ¥v–¤Ñ¢3$ÑÃ½NË
ïKJ;¼–‚	3Æa‡ËÛñinÎÛžÇÖ/ó„ÒðÓ1/\wœék¥>(Ö	ÞöÍOp¹»'owZ3¥vYÇßj§”4]·œ3ö·3„øgÚ
zjâ V„ú(1Ã¼§K"(éÐcŸqÌ44K{œÿužý 5³kxœ•OËn„0¼ç+|¯@†…¬V«m/=ôØ/HŒh!AyTêß—_ÐÓxÆc'Gf„ªmÐÊŽP“#lµ%$Ëƒ6Ü’n™Tí vÙgúÞjg­³ŠzgpÐt‘ãX‘rº³Ê‘”ã0Sò"|†u-ð¾ïf5Þ,cÛ‰õôÚ<’ÙRñSMa»Csi¤l±k$¼¡’(u[ræ_¼ä>J¢nOûÂÇ“£çµq:O;ÔR*¨°GÂÿl\¥lrIW0ãç9 Çx¼æ¤²ï!fpÝÍy5™ÇÓ‘„ø^&Ïcœ«ìïõ_mÄÇ8sžxœ•OKnƒ0Üûo_žÁ6EQÚM]öÏðVÀ Û4ÍíKÔ^ «‘æ§™™¡Ñ’µrÖé®kUkœAr­¬¬¤FUØ¬Z£ÄF‘Ct•ªç%*ÂÆÙÚéºÓš°œUý0´–¤´çið¾Îó¯ÛF3òÃç_,Ç§rM´¤=Œe¿.FÖRµ]UÃêÅÁ.>gŽðÁ>Oð¶§~‚óÍ>ñzãx.×8þEuS›
<Ž¾.¶èC>Í~î>÷SÑSb¸?ëøÛ§ìÃ)?fâópñP¬Îöqú×vñ<k›œxœ•ŽKnÃ Eç¬âÍ+G0à(ªÒN:è°+ÀðÀ(6X|*µ«¯£vé~to+ˆà%ÓFOÊz3—©Ðršœà3’É‘
?k²›‚©:‹‘!:ÎQ(Ž“ãš17ò‰O8ž••ì¬(1½-¹À[^×/ûnV“Lt®¿<…‡s«f«=…“ÍÛ30É8ZPOtä”ê[ÃïÛ¯½Ú®÷ùÁÛKÂõ”Kø«ëŠÂ@¥„¤Ï‡½ÄÔ.PÐÛŽ;Õ¤Øâ7ÂšÔfZ¯ŽP ä#†„nÈÞó×å_ÏÉB@k˜•xœÌ=!@ážSÌÖ ³`Œ1¶–ž€ŸÁ%ê®ALôöê	L¬^õ½Þ˜Á&ã´#Ÿ1Gš2[›F§É
ÞKg“2ÉJqçš˜	I"•£‰)r1k0‘òQygŠðèÓÒàÀµO°ÜÓ›süvwæ6óeµ´Ó)”äµ30H'¥HËõZ{ç?¨(õ	¨‡X;|6·za!Žõ4s–R†øZÿšŠ7ÈT™œ'xœ•‘ÍjÝ0F÷zŠÐ@K°"[²®ïM¡%Ý”$‹B7%Yÿ4¶elù6íÓWv(4«Ð„†ùæœAa"BnÕ^ZÒš2«seµÖ¢¹&SVJ‹BT…²pl4d«)E™Ð™Ìö©•äŠT*›+JM&ò]j²–™%4~‚k‡úGk\®'_Ÿ×=õeg~·¾¿Bšï‹˜*ö9Î"O°XíÛhÂjCƒËl\>•ë}ýDÓ@÷S£:•BÇ¬D"v1Ê*2á ãBÛÏÁô#æeýÞß¡õƒé>0–r|ö]çâîÛ-aÉ"åê‚eŸ3Ô„Ð¬wSú%`»L„ÖA<‹›&9nžãøŽfø
«³ÜŒeŽnéÄÁoÈ y„:g'§ó©¼;ÁÕêH›$ï|ýÒæÅyðóáØG5
É_ö¹£ãVHªMce¼ž¡ÞÖ:þ«¥V­ÿñîûã«=ûÚÖ¹ÄWURþ:¼ýéìSÇ(›xœP»nÃ0ÜõÜ;’¥Ø–i»(:uë¦e±%C‘ƒ&__%m§,åBðxw82ED µi´PL2)\…†µr‹L	£…q´u¢µ¦nmCÑ'Ô(ªkÇµÝZáš¼s\jn*Êè¶’¶ÆJqÉ‰ZÓ"|Ê÷ç^× »ËÏPkØÏ8ëI]°4a~V³\‚¶<Ð–R’ÑyL	#¼á˜x^f€ÝA_ûþ€ÑãT†Øß¤œÖk9´ÉRâP¥Ì„*cˆÅz8®Ëb"„•ðd-¤áÊ\#Bpwt—Ã¿ÿf$U	/9òðKÍË„È–6@¹ñ§áïž;£ÅÓB=#äcì=Ú"8Wès÷Ï÷o§‰÷“TxœµTÛnÔ0}÷WÌ#ˆMêKœ›*TZ@,•Ð.à8“lhnJœÕ._MR`¡u¥ÎCN<ñ9g&cÙˆÀ%¥“%/BÅT,„JE’+Æ‚)”^ØH¸F.#™3ÎãH© àŠm’©ˆ+!ãH$YÆQ“ÙuäU[~­T—îé»åUƒMV«oèë®y,¤à4ŽxEcJ‰Í6•18ÀG¬Ì®§Qïàò.sxu‡C‹µß¥£2AÃˆÅ<Y*)P™Æ©ï»ÁÀ®*wP+ƒ­>BÝ•„0¦sÑ€Û;¸‚*‡jzxÇ÷ÁÙ«6<¨¦¯1µ9Ër„¼Uæ2ã”wà_´ûá¾çãY¸Èqÿã¯º¢Är½Å,u.ðâÓ=éÏ
_®`¯êÉî[ÂºóÙÛ'›³•<Ïü@Ý$¤5>”ø÷Ÿüw^?Tö¬ü*†üô|ï„Ö‹ÐÚŽÄ{Î ÛªÁÑØAÂ#±=öèðó‡·nf¸ÝÌ£³¾~3o¾šù}ià™‹ç”SF¹ð<&SÉÒ€ú<¦ðe{³Ï—eP8 ¿µ7¢Ì²€KNR&Ÿ®-Ù#ÚúT;ÏÐÖkçüT;8G;|X[‡'ÚAÂÙTe‹¹×…—Óÿß]ä;‚T×xœ…P;n„0í}Šé#¬Á8V«h•6exÎbƒŒQvsú@m‘"Í<Íç}491C­{£X¹J=7%™‰4bÝPo­´kÝj"#J3°AS»ZõH­S¶+îlc‰K£Q9tmÝ©¶´åqN`}>=E8Uí%pè&úfÙÏáÊu¥P£'lÅ>>gNðÆ>ðº­ýçkwàåÊ)ò$ç4Ô²ÂÚ”Mš*Ö|Ÿø{T
n‹}ös¢”@ÖBè>`IìüÜî7ÈãPI8–ËüµÛŠ4ìè˜ò–¼¿ÞP‰JÂêÃ2yw‡<òúX…–ýßýÙ³sEw?ýÿñnÎ…!ž|xœå•ßoÓ0ÇßýWœÆ%³óÛÕ†¦Á€	&¤UâÝM.­×Ä©lgeûëqÚfMEÍ^ñCbçî>>ûëœ­Fž¥"àiQžräyÆ‚2H#Ò$‹ÎEYÒgd%4*Ë9Í¢8YÀiI™E¼Hò°Œ‹4(SŒELDk†Bªùƒ
.º§ß¯j¬g•xF?oêÀbÎÝl!cðžf”÷µ–Ö¢†o(í®[“/àb9ëÞWKÔ
+¿Ñsš0—fÊ²<šºPR¢°0íjÕh²JXTù,¤±Í\‹šæƒÁãFèæª˜Óøçê±Fèóíü=c…5p^àãÆHÁ+È´Ís4¦l«êiÃF%fÂLZ(Ý&|¾ýoé¯›àØ¨?†Ž#éÌ'+-ÕÁ5Šâ|­¥Åñ«õ¶´}Vä®÷¹ý÷Ž·$ø¾›îëËvß‰—ã=>J#`äNªÃO”x£¹nó¥ÛŒM›Z¡w]¸qiôí§¨Z|œÂ¾ÑÖ¼ôÃ`?`,M8I´ïg4K8	žC+Ož		žC+²—Y”ŽÕ¼õtÛóð?jGOŽž$Z|’`%ÑÀmhbÉ>ÍÀÉïw’¬*tÚX4L®åÊ’Ó«†b®*¼qÕ×lJÅ X-ò¥«ÂãhØÑvuç¯°ÒY<½¾Ôî4uõ¼RV.¨ÆËCš‘ÏxÉ¾€·±õwÄY7É&P6·‡õ5ÈmdÏ<ýwq\=wu—Ô‘Ûd<Ò[÷Ô>¯c—ÔTÎ^S–Þìiòïk”ü§×;§”xœ…KnÄ D÷œ¢÷`f4²Í2'àÓØž1ÆÂx‘œ>øYtµêI¥îªdÔh…Ö^Ë8¡úæŒ‹B0§6ÉÕ G²Û‚[*!"—ÌùÀ1Ê€‚iÁ•“Œ£šHìYç\ ,ÛôZì÷K»Ë>&·Ú_ì|NàƒE¯{iàƒŒ‘FÓR+øÂ¥Îðy~†ûÛ]ûùÆ²áÚå2µ¨â=Sš=P¦[”øvop$[*]óD[¸&5{É/ôŽsßs©„|/Ó†æ©û¹ýÿ,ùöa×’xœ…ŽKjÃ0„÷:Å¿/6²d½B(!Û.{‚_/[eE!¸§¯}‚nf˜a>˜VC îmtŠZª£TB#åè<JnEtÒ©½”Þ“kXp'ŽµRjŒqG>ŽÌ¥z£cÑðHðÕæRÁ§uúI¸ÂõÔþŒ·²]ð7ô®äO„ÑLhÆ9|PM)9ÚœZ¾Bj3Ü_O7ÃõaO¿=B]ÃÒ—:¨8•jÐ:ª”<Û¾„äâSÜa«%oÞ¥zB¾Ó´ß•;»_þ¿Fþ {€[ažxœ5MnÄ …÷œÂšMm#H:$H£jÔŸU—=3AC "N«¹}‘º°lÐóó÷¨"B‡ètÀpÃ¨¼Vƒq}ç;ÞÊ ½ÓN½8gŒXlÅL0ú€Ru§åˆƒmY1J)íBØ™~TÂn4•
Ÿ5zxß*Å'ä‡¿Ïª?_fSãËü
J«ÖÊ´
ÙJ
þ#VøÂH¼m«Ÿàtu{?_±fLM©—ÿÕ¶<ËžWÅGÉKL‹µ2CÉøŽ@Ê‚&ÿÌøLe)©\nâ»ÌHqÆõ.Yó²Ž8t,Ù¦tËDóBìc3WJå—çÝú	Öí*hB8ìÞâJØ“°º®w¸xœ=ÁNÃ0†ïy
ß8 #éÖ¤‘&4q@<Eš8m´6©Rgðøø`ÿþ­ï7UDPÇÐõF£´»È-àiƒ±:ZÂF¥ŠÍUÌR¡>:TAû£zMTÚQG¯±Òõr<
×h.ÞkòðÖ*¥gäÅÿie.ÓêÒrðe}¥UgUT%—`wMDXáÍpm»Ÿá|çå†5ãr(uúGugáYFÅGÞ~oèi‡€÷ä²[¾8ªðí…M!®¬BÉ;NÑµ… Eh;?IšÓ)ûR+'=±Ü	]€­–{
3.[l‹H9–ƒøHl žxœ%ŽËNÃ0E÷ùŠùFcÇXªªòXbÃ±°Çã&4qëÀïcÄê]éH§fpNFr
‘„5,¼•š"*¶8":"¶)ŒÝ—/œ+(d«•DKÁ)Á$£ã´T>•‘M Ø¸ó{¶Oœ¼ÌœáøÙ°_ž"õ´­'FH­µPh»ö®s­\à™ç:Áý~£	Ž×ð·ç+—ÌK¿•Ë¿:JtJ5Õ6µ{Ïß+h™?àaòùÂP7¸q…ÈÉïK…Ç;H-éíÕØýB_L™xœ%ËNÃ0E÷þŠÙ#*?ãXªP‚[~`l«I¹Ž
³¹ÑÑm•Ð%'çÆbÂ1™Ñt'$7N%¡I[îmâB°+mâèSÐQ ’¤Hóˆ>˜¨¥ŒÉª0(?kÈ†G›K…÷š¼µåÎÔCøóÂ^¦ór
e}1©ÆÁ8O¼ëíš[£
Ÿ”Û¯Ç-Ìp¾ú‡^®T7ZN¥NÿèÈ¹áž¹í(ûª?y› ˜¨Â¾‡A/þÈK„©ô'cùîX·n€KéÀý1Ôflìâ¥Wm•xœ•PËNÃ0¼û+öNÙq;U…
8pƒ@~¬«‰9vBü;I)H9¬v´3£ÝÁi%´i„rXsYñÆ0k$“Œïh£Xij&´ÐŽL*bHPK£i#8wÛ,^nª])„FjI­eé¬ *§nŒð8ö}†»iR½
ÊÛ‡ï^´+sœÕ0çÐfnÕ¬ŒV;7´â”,ÓÁ§„žÐ§îól:8œôÚ'ŒûbŒíÕºä¶TPJH8¸‡ˆÃxFÈ!ÏhÁå`’Ã+ûúQÙ¼EŸpË²õÈOBþÊ®ü;.ðª‡¥Hhô¡£ú~ÙäL½2XÀóš`eR‡óOò›¤ äÅ·ívtn«ß÷ÿzù _—Æž xœ•ÏNÃ0Æïy
ßQ§´K›všÐà‚7x7qÚhMR¥é<=);ðG\¸Ä–¿ÏN‘zRBì»rß6µªQ-ÛZ·²å‘¦SÈ+a„0lÆH>AUÖ¥ÆJ6½®j%t«š^`«¹ Ñ5uÛåyê$2\Ó"<„iZánžqBV¯p¼ÆÝ°uNºeõÃNweSVM'ïà†×{ÎrÕÙ”(ÂÙ4Âýº¨Žç~‹§3EOÓ.Äá:*y#Ê
.9gÌ_à9¬^C0FG	5&„Å¾¤ Æ&°>'ýÔTþœ{4 éb	ÑaækxÝð>øâbø%„™`ý¼&ö³n˜hY2ýödV•óž¾È._ÕOš}ó &wÕÜŒ{ˆŸkä™m“¿}ï{±C*‚1Eÿvø×íÙ¡%¯ýxœŽËNÃ0D÷þŠûìÄñCªªRº)°`XØ××Äm^rÂçcXÍ™‘Ž4%ADQx!•ëTµ5ˆ.} !HjSÄV—i. …÷<z)´¶VFÎ-:$7Òc/mßÉ@AšÀÜV†%ÃÅo‰fØ_+6cÅãwÀ—é B	¡´é:;®8guR)”á•Rà´Ýq€ýÍÿåñFy¦±Yò×¿ÚöJðÞVUW•}Ì‰v8¦Ox
îÛº.¹@¬/øO«[ïÏ8Ó#!ÁåÌ~PMÒ•xœ•MjÃ0„÷:ÅÛ—ýX’BHJÓR
]4Ížì'[Ä–"zû&´èêƒ>˜)™^µ‘„3¼"†Sí¤•åRŠ&ÑX§g3fJ°5¢•u«¼“¦Ö:8¼At]oU^*m†Ké§/Ó0,p˜g0alØþrÝÝ›ýÇë’ºu3;FÈªÒRIxàZqvKÇX
ex£Xzx\®MÛ‹¿s¡œhXO¹ûSµ²JÀŠ[ÎK_#m`Îñ¶úýô|<|Âùõéãx>ÁÇ1A¿Œ˜ ¶è‚0åc§Ø%jWS+ÿ½ù×ö{kü–xœ•AnÃ D÷œâï+[Ø€M¢(J»é¢ËžàÛŠp¤öôuÔ^ «§™ÑŒ45òÂ¸±wƒwæ$¨WâÜv^:äÜpƒBKbfŠð$¸÷$°óÖ¡µÃŽdgœ¤ö†FÒVêîuNÞÓºîðºm¸bÄÅípùe;=“[ÁPö8µ6…+tC×K®”êà…+ÁÙá†¥VÊðAKám/v†ËÝ<y»SŽ´¶)OU% á#çŒÅG 3d
éAð<Ç0:(T!m69*às
Pg:NÙZ`McŸËÉ5ÉûÆ|ÿõý aCpz›xœ•OKjÄ0Ûûo_üËÇÃ0L»é¢ËžàÙ~NÂ$v°Boß	¥èJHBBª™”ÕÂX#LG\w$pPF÷VZ‹ŠrÒž÷¼wlÇL±BÐº‘”QŠä(¬qŽK7ºA Ðƒ4Ü:ìƒV:§ïi]xÝw\1ââ¸þb;Î½àVŽ8µ.m7½jFðÂ;ÅÙSÝ–Z)Ã-u†·£¸®{âýA9ÒÚ¦<ýE•ì$4|àœ±øµÑÐ{X±R©v—<ÏYg1FåØ÷”+y8…@®XÓÄØç2EòM
¡±ß—a?ø˜p"xœ•ŽAnÃ D÷œâï+[`ØQT¥ÝtÑeOðbcCÕÜ¾ŽÚ «7šÑ“¦d"Pƒ¶¤IT†‡ OÈ{‡N?¸žz/¯$Û0S*ÐIeI+£¸7N“7šºÐwÖ‰àmðÜ Ñö0Ö2­ÞÖy®ð²m8cÂè+\~ØŽåºã²×4¶n]žAhÑI=èSO\IÎŽv‰¥P†wŠe‚×º»	.7ûàõF9ÑÜ®yüUçJ@Ã2–>:Cˆ_0RLöƒ°ÔLû_h¢¡Ü7bì#Ž‰|³†ÐØûù_ïÙ7E®lÅŸxœ•=n„0„{ŸâõÈ66?«Õj“&EÊœàa?ƒµ`#cP¸}X%9@ª‘f¾)¾œˆÀb'lSE\ö’K×)+eet/¸U²åèªÊõŠ-˜(dP'X“¢ÆÖmWW'äZU7Ê Óq²’Ò­5Ã-1Á{œ¦^—'èí×Ÿ,‡çr_q^·0”&Î7µ²ÕºÕðÂuÅÙÙÎ>gJðA>ð¶­f„ë£æýA)ÐTÆ4ü^;!¹†‚7œ3ö™.àüLq(¼=U3B>Íq'ØB CëŠéøãvœ¼Í>Æ>ýÈÑ¹¢?.ÿ’aßÃpó•xœ-‹ÁnÃ Dï|ÅÞ«&8¤¨ŠõÔk`kÅ6Æ‡ü}qÔ9ÌìÛÑ”Ì–¬ƒbTÒ ·}Ã—Þ6ÎX­\j¼ciÄJ™—iDÕ;ãÈÚ`Œ÷]ß)Ùó¥¡@½ÆÊ‚ö2¦ß9zxì¹Ä®\Á¿oinÃLq:ù4l¥RÊjÛÂV‰úc)œá‡cá¾o~„ë³;òöä¼ðtJyøŸj´
áMŠß×š`;çòâõð•Ïƒo„mLû 3U;*ñ>Pèxœ•P»N1ìýÛC"û|8ŠPBCAR
j?ÖwV|ç“Ï„¯Ç!ˆ’j¤™ÙÙÑ¤ˆ²Q5×œW”R£4¥vÓÉ–ÓÖ(#lG™ºS’“YFœÓèVo¬@ºéxÃt]+šÑFU+~QÄ¶ª‰Ìiž‚÷ó,½œ¤3v7\÷We¿ÈqÉS¿Öa| Ö2ÆEU‹îhÃ))ìèRÂÏèÒ yÑìNêŠûÆ	ý:ÄþvÚŠ–5V´£”é<â¤1`ÝØÒe‘“Kîáåíõp<ÂYú\˜øÐÃ,{„%Å¬SŽHÈÓ»ó‚a
) kÖ„ŒAi@(Mg	¿£ŒLò7
FQa\îAçx]Ñ_ â‚g4Ä:ôf2.¸~
±Äý˜Êƒc!Ñ¬‚µ+uÙþkMòÙº)xœRMÔ0=O~…H³+¦U?ÓÎh#H+Ä‰_¦nm“T‰Û2~;igWÀ\l=ùÙï9&‡uÛ5uZ•5f9oS^µ•,„àUyn²"©ª¢æ	9›„CCaÉsÁe“¬ËTœER„WÖ²+$V\v²Hx&˜˜i°¾+³ZÏžôžÆJÇ-.×^5ÆÒêOò4Í³ºÎkø˜œ“„T+"tððeör€§—f‹×tÇØºþNågž&DI¨Ì,#O‚f‡4;{AjA¸ã :x‡ÎËØqGP<…€EŒ3Â: ó„¤Ga¯]•éaÝÔ	Ã'x}À¸O ¬¤ñ1† ›NðÜ€Í0-tÁ³ßYv¦@¼ýÝüÄh§(èÅÖoZ^õœXÿø¸ÏÛ5ÆŒ}9þzñ´y[ZkŽ“³‹jqd'RÖxèB±´Æ ¤7YÆÎZº.úòë=l|+a‡MKp@N?YGðÑcXC?ëpÿQ>|f‡ð?To°l×EÍíò?gÀ~~¢Ø–'xœ‘OoÔ0ÅïþOâ¢IÿÙ¨BmC{Z$$.È±ÇY«‰½J¼»´ŸžÉ¶¢WNß¼ùÍ8ÎD(‹º-³¦%SU¹iÊFy­Š¶ªe#7¹ÎMkÚRŠƒšÉG[ËT5¶®6Tª¨ÒySV½2¶×V·Æ¶ê÷aÆÖùsx˜p3]ÂÔM©¡Óí0)7¦:LŸÕ™¬‹¼hr|ds)8;¹iÆ7rqûã¢÷¸yì×óö‘fOcæáRšÕFm‘0¯âÙ/³cÖ…FÒñ·GXG£e _Á¶Ê«¦u y#Äƒå`UãîŸÚy|þò3+à¶ŠˆÙvßïïÞï¢š£óøògÇ5=	7ø0“I{®9¨ÈÔÊ2P¯0xƒa»ÌpŒ8ïÉ‹å¨5-‹=Žãs²Ó–™„É'Ý‰ð*ÂnÌË‰k¯‹e*Ä×?j:ŒÔ	àüi"ð>0ó'Ïëä×¼ûëõAúÉ‰D±˜UÉ›ªÃî¥Ë”Ž.ø®Ä%/Wþ.ƒ_œé2!v<2™$X›ôOÝÿ|¶øÚ.Ì6”xœ‹ANÃ0E÷9…w]fœØcK!¶ˆCL<?iÔ6A®#q|Â‚°úz_ïµ
8™
<å8)OPxñÁx¤ Y=%ËeôÆÖ}iÅÚÜ0@}ähR\2%oJÇ3Ø€d’þó{eá"œU
'-¼õÔ§ä¦8øN÷vÙªûÀÒ.î}”‹{¹Ž¿ûvE]q{Úêüê82Ç“;S"êÊv¿/­ái÷‰:ÃU×#9Íºêb»œíÑž§åûÔý ÆWñ™/xœm’Ks¢@…÷üŠÞÍ"•Ø4†ªd* DQðAÔ]ÓtŠ oâ¯3S³Ë]œ[uê»wsN[30§A]åDäŒ0„‘‹TˆNÔu¡XŒ…©YÑ&IU1‘$)Pä²†ˆ¤G2RãK"Ñ™kXaÿyU¦sbËœŠŒj:“È!„„@D¹"Ç:bP ]›–5pYÖ¦Àìš‚×Kô½ß/¬.XþRÖÉo ª¢¨ê
†<Ã‡
´¼^³¶e5˜gí¢‹ÀkQÖì–½'O]ôò ~8KnI“%àù{Lkn¯€?÷ÁÖž¯ŒÝ~cýõ €¡1©iæÔ03pË>í§ÓÅéY^÷Rm†/lÛ˜^¼Ú«Æ"ù¬6è4¸N˜ŽŽ»@Ê«Ð*õ{rÎJ	Woç÷ÝRs|š‡I3÷0]AzÉœUpŽuEªIÎ?²1È/csõ'ðXeŸ‡ã"ÿœuGëÆÄ:|ôô¾Þq¡ÏºòÉråÞ§}'At×ÂÖ›Æwé`[âÁ€9<ÍtˆZ±fèÚÞ?O´œ¶Ÿ¸Ínv]ÄïaAï}·ªŽ‹0lg(<”^Öp
SÞ ÛÑ;¸¦ªÀÔ[ólË/UM¯!×5‚¤R±þ"/O;g©[aØ…aÙ`ãL³]Êy°‹Üp:	ä¡oÕMˆåk”µÇÆl»vØ²•}Ì[‘o»ì\ŠrìkÞox[—ë¥ð/3k5û91ÁcuÂ@T“âQ¡_WÒ<ºñdE[‚¸i'<ÿ J—ë”™xœ•ŽKjÃ0EçZÅ›I–ž­JÚIvú<Ù"¶l$9¥»oCVÐÑ{¸pZ!‚”Ák?Rk"ÇÄˆJ!:ÒnpÞõ’í¶Pn`¢!ÓkéÐK”&àh­¡1j®Ð[c1 E
’Ù£Í[mYxÛw»ØlS8àòäiz˜kµk=òtòÛú
…PR©à…ëž³¿uM­QOJm†÷£ú.7÷àõF%ÓrÚÊô¼¢Ñ(t|àœ±|_éîÉTZ"4ª|øêN>Åä!&ZBeì+M™B·ÅØ¹Ÿó¿²Ù/gSj0™+xœ’IÔ0…ïþuk$J:«Ñ¸€Ü‘—rb—–í¤i~=vw‹E€Ä%ŽŸüªê}v
ˆÀg!(¶³è(oÇ£DÞ‰i`hC;#•¼ÔHN, KÐubl‘ÏSËÕõBŽxæ~{Åèpœ:¤8Â¶´ú µ;{Oìõ·Ö¶–¸?.–iSoßB;¶m7C3Â«†6ÉªÕ)a€÷¨Ó
ï¶(Vxxæe}|ÆàÐÔ>,7ëH{:P5S¶·[¬’?yã—ËPú+L[pÚ- ÝÎŒ–¿æDÁÜ—¸ñx‰	m|ñ’˜"»Àae;‚ÝLÒ'ƒÖ‚ìçñR!­Y¹nk€'ULas„AÔ¶xe 0:¦”\ÌÉ×Åô—ÞpÖÆ€Ã=˜Ê)rÈÃîóžW1èŒÌd9hÆæÎŸ×¬ÇÕoF/ÑtÒ9ê7”<0rî•Š´ûâw ?@Õ„\žXÊ3CŒÿ¤¨‚·7
äÑŽ¼º1¬~A§üædîóI/eå•ªx¾¯ÿx/ä;!ñíÝ–xœMNÄ0…÷9…÷0£¤iÓf„H#!6l†x§)?U“Vp{RÁ’,,Ë~ög¿²WFJ«…°ˆü*•Tf°‚”æmÛ(uOFk.ØŒÅRŽJÐuèvV¶£QÔtCÛwD­EÝ5½$MÃÈp-·´ÀKò~…çyFYáá;§]yÊò§ã˜Â#%D½Ø6=ÜñNrV»Á•BÿâRñ‹[ X÷†67dò
å>MŒ½a <c^ÏD"%A¨ž]Š`«•r£_·ïÙB!m.N³3€±†1{}¾¼ïP)‹£\ o»¸)’9$k×ÏÓŸ¼±/<èŠxœ-ÁNÃ0DïùŠýT±›8„PE!àÀ‰â°±×ibG¶Ó´ÏVâ´£•æÍhr$)S	jºV¶½êšª1²·V6„f'ëZ)Û	,fŒä3˜º–uµë­ÜJ¬u#·º“²ï[eZ+:ê¬î›±À%!Â+YïŽ<Üý²ÜŒ,÷«Ñ¦{JˆJ)µPVªª
þN.gŠðF.ð°$=ÀÝ©¿Ýý‰¢§qâñßÚ‰Z¶lmÙZ|ûóD¥Ý|=`—£ó`Ý…X®rN¥]KÔÙ1S9¸”C¼Â-½) ú#A°$‚°ràá%,1ó)ó",|º‰RÆiæ'hŠo%†<»<ùÌàR Þ-:.Á‚qiñJSnižVVÅú‚2™&xœ•‘AoÛ0…ïþ¼%š@vm'.Š¡ØuØi9íPe‘%CbÚ9¿~ô»î HxÒG¾Gq"‚¶);êJ­4µDU­MEMÛØ
»z•ÚZ+Eµ*fLNmiëç®©Pu¶ìŽ=ê^×§¦¬žukŒ5]kµ*ðÆcLpŽæ;üÄ4÷«ƒWþ#îáÍ&èãôÊ¦«e}¬ZØ«Z©BÔÉ1S‚oäx„¯·ÜðzÕëþv¥i´-U+K=
Zä«›Á¸<{\ Z˜\Î.ÐÇÀ)z/E­#orQlÎ	Cžcâ`0°Acå¼y¼ ‰†ÄÇä°)N—lsáx°_.ñeîÝE»Ýà;aø'ØdF¦G-pbðdâÎ=†KÏÉowOG±Å#þ­ê]æíf¹9Åy\Î2ë~Qþ7Ÿ Ÿv9‚& iæå 4Ñ¿€9ßDw1¬mø3ùjL<=s¢wùèuT(Ê`ñæYzÿpƒdßGk÷zyùŸ-~}DÑìœ&xœ•QKo!¾ó+æØì°ö>«(JrÒK£z©faØ%Æ°œÊþõ¼®zÎ3ßk G"0»ºï$mô®•{¥PË¡Ö’#ª2-¶MÓa/Œä3¨ÚýNî‡ºéôÐw£¬vjhëªïd…ªq”µ1ƒÀSžC„·pÄt_øõå`á>_ÛË­ðh}&·Uáø U3Ôm#÷UYK)¸z´9S„²y†çSR3ÜÆ²?(z¦†81µ­dËKöLí˜*–ÈÊÃ\˜Î`8Ë÷Ÿ¯>hJ`=¬t@¯aÁ<ñ6ÛTŽlAGÇ0gS¶~ú‡Õôa—¿œ¼æPw|¿NçdÒWQ¤òL<cð­+*°‚L‰V«âŽX˜»
ÛsÔÚf<ºÆOŽG*ãs°°ÜZÅÅØ˜ò-•XSý•Áj&u ½…'SèyÆŽ&Tçße¤+„}I‹à×î5ûª`KúHðÖœˆ‡Šœñ‡<éM0f3ž¿}ækÅ_Æ`Ò¼•(xœ•‘Ok1Åïúƒ%ØYGûÇ
!„BO¥¾4í¡—2+¼bw¥E’cÖŸ¾c¯)½ö Ã¼÷~OÊ‘Ý¶–v1UEJRMOuÓÊ
U»Ûmeajµ5F¡˜0’ÏÐH,••¤””(+e+j|*Z­)55­Õ­xÌ]ˆðFLgø…'4çÞÁK¾6çÛàÍùLÃF‡ñ¶•*ë²*+ë¢,
ÁÓÑåL¾’Ë|>&ÝÁKß^î·ž¢giˆ–ÖÛ¢æSìXÚ°TDšBÌ4zã"PŒ!&p: ž.e!~øìˆ¤¹Û0Cî&ä¤@w¤{8a‚£ÑÁ<^=úx\mà½s	F4.ÃÑ®'v°Üù–ywÙ§Æ¿Á,!öáÄY˜ÿ…Ôš¦œÀ8kéúØ”ô ¦&ú[!uá8héæJŽÓ•<eÔ=»Ii‡ã$ç5Áj`ÿó£;MiŒîGúÅõA,‹màîw|‚4'›î`?¦¾ô£qÊ3w›Â3~wOf¬]·óóÿü¹øÎÛœ9xœ•“AoÛ0…ïúDO-P'râØIQÅ¶†C´—]
Y¢-²dHrRç×rš;îbø>=>*Ñ#B¥–˜7E¹*óESUÕ†ãZðe±æ¼ÜðÇª,ëå¦f½ðh#µBä+\–y©*©0—¾^(Ò”y¡
\«jCg&†¸s^\'Â	~‰£P§½†û8f§Âƒ¶ÍLºîä«Í²X®Ö«5d¼àœQµÓ1¢‡'Ôq_‡ wp¿¯Ó÷Ã½%©ó-IËœ—ôáIZ‘”	¥ $Šì¡C0:DÆ~XØ>‚Þ»ß(#\‡^ígÚÝ€Ž ô.]L2½Ç@S3…-1À´máÛëöD ¹^Èdïò»¶p5§Ã<QçW ´§Kœgì§ƒ0†& ñ¼¦^ÊZ´èEDeE¼°fŒ%Û™4šJL„wâ ©“Œ’¿ …%~€âw–Y<’³sHaÏž¸nfƒ­ã[
äúŽ"ÍEˆ¨¦é´E–°ÑõÎ¸v¼…zˆt‘ˆpt~O­ÎÆ]†½š‚&Ã/Žˆ”^b§¨¦¬/é4ÎwLeJÎ¶T!‡PxÇ2‚„p^½5Ñ%+ÉSBAz	Â*êª‘æD" Ü'Ô4ûíù<…1Î‹úgPÒâ{OJ¾:JŠbj¦ßÂP'bGk¡æ¼”ÁÊ¨ÒRb?¯`ìñ]t½!ëŸÏ2×ÏØV·Uæš&«Ç»ÿù/üú“<eœ xœ•ÍNå0…÷y
ïá^¥¿IBÌi„F°aÁÚMœ6"Mª$½Þ~R]±aÇÊ–íïÛ%ù„Ù´$Ó÷JŽÔ6JH+ Ý*1¢$Û0Q( ¬’¢i´îdgÍÐë¾íº	­´l­R
'EVu÷²Ä¢÷;üÚ6ôÐ™î¯ñ<ÇŒkÞÃ|Öq}€fløØ÷¢á†gµººR(Á_reß{ÖÜLG|ü ÈŸcš¿Ð«N\pÎX¸¬tÖýƒ™
ø	!,{†Cƒ#1X<…:LÞdÆžÃwÍêÂyKÌò‚ÞCÞH;û	ôW9f(»DUWÊjº­¸qa†×·ç§«	”‰4¹Mq…=×#}Ž€9»9|_¬–a«ce!˜+àåõéýpÞéÌØ[EÈœ¢µ§éóîGŸgÿãÈ­[“3xœ•R[kÛ0~×¯8ô©e‘ËqJ6šìFi2Ê2ö.KÇ¶ˆ#INš?)mÙJû2°-|Ž¾Ëù8Á!ãL–ËQÔ2G.E3£‚×¼”˜Å¬ US)V’A84$-æŒÍ‹y5+Ä´(+^‰iIyQUM#
¿DŒ¡³¾Û¾a9¢Fh5ÂâéÌÚÔ¹õbïGÓfÒî?+åœçÓ)| |JI¬îuèàuè`5zÙÁbW§óv‡Î`ŸY×¾@K:/aBg”b{¼¡øq¬ÐD?ƒC¥euÐ‹€Fž`ˆü?~oÀc€Þ¶0ˆ	ùÕiñ	öÉúî|úH—×ððáú/!I„[×0zT‰Daœc¯BèäèÎyµQöxfMe? ÔFõ‚‡c‡æ]‘U˜ü¡IeÂ¤÷xˆ¼ž„NèÄÁÊ³˜z+Ï"|‹­u˜\
Ý{âãn¤î×Ç˜˜÷À²¶—Åû2hk€g¬ÈXÆ(\^¼ã<<§š†¸\ÇXïT4–tÐewuqEÈV·ÕÄ6Í¤>Ýü×²Ïv²<ïX$XEð½p¡Ó;X%0Ä%yúÏê*ü‰ÇˆJ’ÛòŠ&c[vh{XÇÉ^2Ze=âkèói’˜xœµVKoÛ0>O¿‚ÀŽ­9Nâ8è†¾bh°¾¶ÛPY¢¡¶•JJÒ^öÛ';iâ<Zdk÷],S¤$~¤HYÍ˜Š(èv"F-lµDÒ8ŽZ<díNÒí(91…Ži+êPž2§Ì»qK°®ˆyÈyÂBÁ©è1oEMÂÆv¨4\Êbª\äpWC_æ¾ÀÉá g2ó¹Ê¿BÐ	h+n¶£6ìÑ˜Râ¤¹´5|Ci‡p<6|Iù=|@]`æ+=x1»q<9SRLrôFZ¶©|‚>ËÑŒG¸8«@ —9Ë U:g–#³Á<›Ô€ª©ÂHÌ [Óß‡j}žÉRqœ	¨¶"+»8»U+àHi¥*X–=ïƒJ«±6¸vˆN+ËÔTb§
JïY!h4ãÌš—tSî`Æ2ç!Ÿ¼ê09ÉÊxÞu¢r[_ð‰å£HS83X¦t÷KØô	ÑJÙÃIÞûÝ˜*ýÐxñÖHûüÆrÃ¾uÜôa—N+Û"ßÀ’À;Ã¸]é¼b³.ø	×8!Þ`]ðªðmÅ7L6¦Òpé]E‹ :¥@&ÄtÅ—«³Ë;èÿ¸D8±ú-ŠÂærø´íH=†FýÇ¡”ZÇ°@áx6¹s,—ù²K¤þpö4rIoàfœ¸Ûh17„,Æ/Š×¿Ú–sïÆ‰*¬vwµÙ-µ>Ì*š©œ¦ÕùŠÇÂoÒ öh·¬‚þ#æãÞÖ$ûGTÉKH="uNÈ)N$/“eûß5(ç×óÁíÓw¥mY#«½æX	ü¢>,CòA·¶Â«?‹˜TÁxßÝv·t6qYòIz4èQZM¬D~^QV¢Rce”Š®×‡JüM5}-ï×©Ú‰÷W8›—DhÒ:	;µY^®8ñk×è\Oc‰QÙØbö\kšÆ‘ÓòQöÚûEÙ»Ÿ7ØZ¿öÉl³îÁáž(Ö+dõ2ØxG8Ã9(Px*M½ä¹·ËÃ‡ü£yP¼—2xœRKkÜ0¾ëW9µi²ø½ëPJ(¥Ð–žRèq‘­±­¬,”ÍþûŽÄ¦ç\ôb¾—f‚G„²êG¬±“M)«^¡Ù÷mÓ7mSÕeÑ‡¦žŠIlÒ£Ðï«¾ªÆZÉjšÓá ‡®©Êâ€m×a9`[ÖRÈçá—‘‘à'ZBŸO»ç|z$¹R´óntë(»¢mËn_÷ð©(‹BðëªC@†£|4.ŒÒþxBoÑìœŸ´,š¾hºî‹=CÅ¤_AÑ
Ò*Ýv/íŒ@â&ÄŸAúytvÒ3Ÿ¼¼À‚fCOÀ		AÛàÒ’	¢%=[T`œó"2†vðÃB`²,1E;í,œ;?J
šÒ&¦[`Æã1–Ým&å"´JÄÎ)ÜÙ'îi"fZ
(Õ<G
ÙPR	—‰¹ò%Gù¯IBic0—kdû‚>äBm•~Ñ*Js¥™Sp{4&yäB1nñÜÑàíÛgì„ø»hsÍ§)ó9›ÜÈîz]QiuïNÜ]Î¿:6MŽ°Ò('ÂÂµÏÁ·§ßIýŒÆ i;²»À@”'JÀ+ÎúÜƒ¤a]€ºƒÉÏwýŠô ­›»±*e	n¤R@qÛ§J:š(¦X¤×íÍ~'þºù(žr;ïÝ4Ý—‡÷L§øŠÎTŸxœU‘Ñj„0Eßóƒ¯E‰kÌ®e)ËÒJ¿b’Œ4‰Ä¸Ô¿o,…Ò—˜¹ç00)ÁIIl8õª¯Õ¥á)%ZÞ_ÚŽ”è¤$^+Ž[0’OÀ±ÓDº7g.eÓ]šºEq9S–¨Nã	eB1ÜÒ"¼í8Ã|ùŠkàªåÉmphçJ÷µäR
Ùñ3<ñç,OM‰"|’M#Ü·UpÔÑoEOsâp 5M%?g”=(Ú~/}(-ðïöNÔÛ™ ß÷Š±â_ªøÄ-—Ÿ¥¥Òˆ)Ê{ë¡ðG,1Œ¸‚yò†¼ÞYð ƒ!ècp?Ø2oC]0Y»Vð‘@£E°­d@í™~ÐŠ+dB¤!ÒºÚC5’žXÆÓoÎÈèœ©Ø7:9“!›xœ½NÄ0„û<…»«rYÿÅ6BÑ"bí]'Ñ]œ“ãðü!$jªÑhf¾i•YX$†à]€X‘É”3F‹!æ€Ì‘,8b;v¬\šHœ<ŽL`=’•>Êœ”2. µ×rþíÓ˜|$ÖÉ0)rÒVìtv£³ä‚4	½VmÞªxç¥ÍâíØÓ,žoñ[_o\ß¯[^„%˜ RÑƒèÒ¶®Kküi÷Áub+–srYq?1±e1·öØŸ†a:‰G¼žÃŒåX±œ~ÊçÊ}º/b)m’þ‡Ñ}=¦n+å€hxœ»Í´„iBªFZRj²…y¢±i’q’¹¥q²Qb’‘A²‘eŠa’™‰IŠIJš‘i¢ebÒÄ^&ƒ‰û-uLt,¸¸|S‹ÒS’Šó’3Ô3óJsóJ2J3ts‹KR‹Ô¹ +IŒ”xœŒ;ƒ0D{Ÿbû(È^l¤(JI“Cø³¤`19¬9@Ê™7oJf†ÁÈÖ9-‡Îb,ºèÙt(‘{öÄ„šŒØmæTÀ¶Á*çµ¦>Ä!¢š¢×ØÖQÄƒ¯Vg£°g™·£MçjS™Oá6ÿÒüXŸ·Ôøm½öÒõÊ\$uRÔv]Já¿ÄóKaÓ’ÀWqâ®ðæ|,`#%>KœPœxœŒAj!E÷ž¢ö!¡l­…²œMQ­åØ0ê`WCŽŸ&‹ Ëÿïëˆy½8_bˆžH¢·þ	y•HåÊË’Îdž<¥+¬žK‰èœÏìpeŽ®d
­EGÁ¥’£ÏÉ>´Ž	7îGã®õ€¼×¿U?Û–æèoi´°DöìáÉ¡9iÛTåßæë×ÂóqÜ·éï²Ã+È·JÏ’ao<ªðC+l½àžah•¹›;žYï”xœŽAj!E÷}
÷¡Ô²T!Ë¹FYVcCÚ›ÛOo’dùÇŸCÕ¬Â€b½“@L¶rÎVRð±&r’<aÊËƒ‡öijr¡:‡à+¬¶èšbp	¨ç#8¸jB
¿¾‹È˜cÈ’¤ÔzÕ]ð‚ZO
ÊÑK¡²ð9Û1Ìû¹sŸí4wóÞþVûÜ7G¿É±K×CŒ9’yƒàa¹è¾Í©ÿ,ÏŸ.æ{›Í|ñÔç4CÇò¤žWý‘xœÌ1!@ÑžSLobYf™Ä+ã5``…‚eCØÄ½½VÀò¿âžPD
~Š&FJ¬y"ÑYc<GžDV›ïi — …­Ä4ó‚‚’b`‘‰È&'sâÅÐÅ)¿Ü:<ýºW¿Ž¼Ã®ùWù^‹ô¶ž¥ÕhËDÈÌ3œÐT_­eŒô÷@=Ê¤mG/¯<`[Sü¯KJxœŽ;n1E{¯â•‰"Eþ=$„bûY3Û#ã)Ø=¤ÉRÞSœsG'2Üæ$•Ì. ž¼Ó‚8ro´'œ<ÏhÔ”¢ekèT`ŠZ“‰R¡­Í‚§(Ph×Úe«	““‰…mÌ­Ã)Ô­„:æN°›ÿÖüS–Ø[ýŽ­ìA 7¨,W¾8*ÎÞ´,cÐ¿ì<¶um}@~¹ÒzO¸ô6(Ž¥U8Siý	Ç{‹7ø¸^ÎÇOøí†šì{Y™xœMoÂ0†ïù¾Otmý@hBì2ÄvÜ''uÚˆ4AI
âß/ÝÇi—]lËÖóúµ£'‚ñU)¥,**¥Z6(+.Q`“7\U
kÎÓ¨!vAO6B#…èJ^(U´‚‹BŠº­y½ì*Y¨FHRJ5§88oÚÞœƒý›ñ«Ìô˜utÝö#j“I7>AQyž—mËá!oóœ¥î¨c$Òq€Ýä ›³˜óöLÞ’Éœï¿ÑeÓV%‡E^'”ÙëHkð¤PÆ´ÿø±?>¿¼?Îy÷z€Û¬7¹Œà‚1©ÿá2¢ô.@t?¨ÉÊ¨ œgž0½@ïÀi èhàŠ^£0³¥1Bç(€u`œí“%êf]A -“˜GÛÁ‚I3ÆŽº·Ô-œRq_ÿçŸì«œ7”Cxœ“MoÔ0†ÏøWŒàPM6Ùn6ÉªªÚr@UÅzC{’˜uìà-Ë¯gœõãÄ)Ž=ïÌ;ÏØÁ!B]¯eµí›ZŠí¦jÊº)dUo6UQ`/zlÛ‚Ë¶læM !×¥”HÑ¼>ëË­èšE{V7íšWEÓ’t]ËšñFëà‹2÷ÖÂÍçÓ²ÌÕ”K<\W:vº€r[EAº|,Ú¢`´;©ÐÁ-ª0Âuôb„ó}—¾—{tunÝð Ý4mÕ65I™9L¸:mÅ¼úƒ,ýí©,tØ[‡à0sÈ%PWAec×/N”žA:›ø²î€?f§”Jài*0ñ=²g5maÄWq|žµ‰üh£– -¤&Ñí{“Á'm=‚ˆnÁÝ+$öÂ©9Nndrhg$SøÀ•É“ì+þŠèÃ‹rÉÕ+Ý‘duŸ3v»p„;Ž0rRy½'xgc øÓ¥¬à†èAo#ýð ßË”äŽZì•£Êv^ºšÔ006¤àÁZI
	)ï”Ne”!0ÊÃììàø÷£#£k0#(a±D%³Ž{”Ï™å WZ/\}ìÃÈ¨Cº3ÆE ÅÛ^Â‚(» å}ÄÓ‰Äø-%»!úæ$À='ÖÁ²Ž|î—ôIfŽ—ËŽ(+‡fé=uÁÝÍ@Ã÷¾œÈÔËB†ô3eEÐï?¤‘¼¾Œöâ,y@Š>ñ¯î-‡A¨•×©(a‡1„ÙïV+M6z+­Lü¥°Zë²(‹ª¬h±É?_•ÛuU^jèõ­îVï"cßÔ`Pf¶ï³î¸ûŸ§Êþùkkž8xœ•’ßOÛ0ÇßýWœxj5š9‰›Æ&ÈÆ¢Lhöî8—Ä"#Ûvý.´LC“,Yçó÷s?ƒC.ËT®ÊLÈ8[ñj)22´”užd"¯…Ìu-U‰lPû 2ó<KÒ2‹y‹ŠË´â"Mãr¥s±’K¥W:Áœ©1´ÖÁíº®†AuªW¦áüpGÍä¹ôjëÇ¾‰´Ý~‚˜ ©ä‰ð/SÎèukB@whBÅèuçåt_>¢ë±‹¬kR‘Ë$ç°à+ÎëŸ¶xªªÀÃ`]€šòVFUv
Øë=àÓT™j‡=AgTƒŒýh:ÁþZß~à;^œÂÃ_Ðõz=AÙÕèš =…p„Ž+05¨÷õÐ*Ï¬Ö££/aeæ‚Ñc§|ûy|%Ï½ue:žF;y¯wT°÷,ŽlÔý×ÁØ–Q,¢8Šc˜¼ÿMþlÊfS%·yMmh2¼hç'sÆîÕèÑô¯¢œËý¡Þ×ž­$\xnÍÒø36Ûšv5±¼ùE—Y1‡ÅÁ´5ôãvºŽôY^Ìç'c$Åœ]¨Ç?ŒmLÓcµ°u½(÷gÿµ‡ì³]\½¬/
ßQË[óÅ$Ú¿ƒ•yòVøŸ>“j
¹	ÓbQÃÉ­[´¬i*ç^Ç<:Ä·Òßpå*6—*xœQÍŠÜ0¾û)t›ËÎàL2I¼”RZè¥—BŸ@q”ÄŒcKÙ6o_'¡—BOIŸ¾I"­­®m[×mÕ˜ÆPu­*Är0d45×[U6µ)è¦Ln†li,•T¥Ñ)ê®éõµÃ«¶Õ­ºu†š²0
W™b‚oäd‚Ï+Û	>Ü»½~ºS
ä/1¡¨]µm[•pÖ­ÖÊÆyv"ôP5¸_pòŽåo”ºÈCÖ`c½Ï7ÎÄZb¥¾Ldï.Œ Êc8¢,¹MÀkÇÍ'~ÚØ)ÀåN…þ'nœ9R"+Ð‘Å5óîà`Æm_ÎS˜W/nÁìÌâ‚§|Iå°ø	Á/Ç…w»ÐGâp’Ìî]–¸7Ô/Àœ …ža]Ö‘DvŸ½ãÅãFý¾'—Ÿ‰ÞèG@Ï6³äƒNâ}7à)®¾‡	ßr²Îç/Q1C\E9îûO¿§‡e‰¥~¸1PŽÃpî¶×½YýÈ<ç_›xœP=Oô0Þó+<‚àª¶×¤-B±!ë)Mœ6¢IªÄ½~=)÷/“-ûù²)"‚îEÓUJá —Ri¾ß×µV{.[9´­ä{^²EFô¨z£´Æ(Q—MWçÝÀ{äªãm_5bèºRcÍäJSˆðlý)xtpë~ÚÂºBãñ~tÒÎ…
î*Q•¨ëZÀUÙ—%ËSg‰0ÂZšàaMj‚Û÷a«÷ï=ÎEˆã?j×UM»²ÍTöåÓûi
'ëGHŸ‰ÐÆ˜ãX—éð<&Æø£ÃC¦þß\\f ­Ñ§_GIöˆ—p”óŠ×`‰e§uÖàÁ€°È”P…³ðãHÒºiž&›/É¿L˜àåí!ßºÌH6xvFå‰Æ-¨’	!XB²›åÙLhÊ h.{µ£G½Æì†Ï›¿|œ}¨ªé›xœ%KNÄ0÷>E_€ÈŽãO¤±`\ÂŸî‰g5Žàø±z¥'Õ¢:#‚›Å¬üœÕâWG³ž}ô&fK„NEôcŸ±vÈhƒÒ18²1£\£×V'’I:-QzÉdÐÎ¾5†7$‚‚.÷Ó>ðúÓ”ÚñÊ*©Ôº.ž¤•RŒ÷(½#Ã;–¾ÁËù•6¸<âß^È÷©ñí_Õ~U^ÕU¼–ˆgÙ3P(ûÉÄí€RScÆÔå‘PêMüÐÅNx”xœŽÁNÃ0DïùŠýDvâÚŽT¡ŠP*$$8 Ž½nÝ&Ne;-ŸK¹‚8íhæÍî¦€†j´$DòÚX&F»¶î8CÛi.X×!fÂÐ'àR´J3jµæµf\²Y­¤nJÍIP ÊQ¡¦´< µ°rèa¾Ë²ê³\œŒ®ô8\å”PÊ%'PNH‘ÝÁ¥„Ñ¥-\OQoa¾ïÎs±Çà±¯Æ°¹TÙRy®Š\-Þ×¯O·åruÿo7Kxî§ópç>1‚Í¯¼¬KÑàK¯¼)cR)‚‚óÉùìâèÏð Òß`P§î{wÄ#ÕƒuØ›x©&ÙLSÀ2Á±tÞŽ¿ƒ_AYž›Rxœ•TÛnÛ8}çWÌã[k)ëb+H‹:—^P'ê ¯ED")T]ï×ïÐJÐz(`ˆàxæœ™3G
ò¶-³j½N—mµjŠ,KKÌDÝ.«RdËzÕ®(ÒbÎFáÐX®r‘W«¢’kY7MU¥Ë"Ë‹B–yš•ÈQ¬2Y—5SPÖÁÛ÷lÆQôÂÝLp>ŸIÿyçÅà'Ó%Òo!-Sž/ø›ÓÉ(:èÐÁgÔAÁÅä¥‚óÇ:žïÑìëº§Òužò|Å9cæû€g šü4ŽÖh©Ÿ×>ÄQð{|ö¶ƒQtÈØ½Òèì‹ªí§+xü¿zw?®O^³ž¯ ­	BÂ4„1ˆ ­QÛ)€×Ñ­–â¹ÆæG”1|l@\Ðrê…ƒ¨ƒ0M÷
Oà´Ræ•è{¨Frl@Hg½‡ÑîIFy=z ,Jð|ïi¾ëšXÑ{æÉ·ßnàúÇH9Ò$‡u–Àå‘µHÒ<I“4{)ÆÖvì/zÀ§†®4‘ò+õŠ±K%©×Î²ÑœEC3 ì•íñ§zÚÐÚ¶…œW%Ô‡€>a›¦Ñ¦ƒíî„ë¦!r’'¨í4·§”3ëQ¤Y	Éþ—oæ‚½BGëp „'ÑÀäIÁ}´)rýpûåaûåÃ±'O~¡~ü‰U"ú“…ÃˆþŒñTÁîfóõþ(z‚RíŒ½¢ýó¥‚÷Ú{z×àòè}Æ3÷z@Ä0Â,"ã¹‚»¸ÐuM¤_ã./ŽmÂnªýèø(\s»vÎ:ÆKõ„ ·‚ G!	k¥¢ÈPsq Û1¾>	R/cQ#Æ+šAô¿øœ¼ù%ôkê•Š†%”žÌ$'…¢lGæÇfaÛvQÎþèÁ.íbsü°À&~¥á"}æ{R¯—¿/Ü…¸r4eH…¶‡-ÙþÜË”¯“ñ´ú?¯¿kœxœKNÄ0D÷9E_`"¤Ñh€ 6,§Ý&f9N¸>VõTÒ«ª…:6 —Gå÷ÎZNÈÌ(QÞ(FªÁØîÇJÈnHŒ¨§0‰`ÈÒ$E°¤GäÄH¬sÛëœ<Sð)Áù»a¿4¼þzì1¯àŠiÎ…5NL1ÖµvµRŠu†Ç}ÃÎ·éž×•DKŸË×¿jØ¨gMÕMí>Ò±à?áÁ{xÚ·š×¶ôN%ºÞöj†c;ù:Å2Üÿ\òÝ{R¾“xœŒÍJ1„ïóý=™é$‹,
TPð(’NÇ‰;d³«oôTU|U²D«m «Ø¨Áé1÷äÄ*"ãMN£ö‘Óì.ËZ€È…È¢µQõŽƒ
è<h¨‡~è[Û¸K™¶#<'YáðUk;×züÜò¶ÜB§ÑÔÛ)¸AØTº¤R$Ã“¤2ÁÝåÌNþ/'É«Ìí–?ÿU‹d°Ãªšª6ïëuà9}ÀCúÓµN·;ŸæT’œ¡l°ˆx¹…·]¸ùÌ¾No“xœAjÃ0E÷:Å\Àadib)„R²í²'¬[Ä‘ƒ"ÓööuNÈêÃƒ÷~«Ì†˜zbÝ“,ˆ¢I’=:íX‹ôê*—dŽšœGO–R´ÌFÆ‚‘`’w¾·IÈmTØÚ¼VøâÜf¸lq†ó5>÷óÊµðrXëôúˆƒ!ã½ƒ¢×Û-·Æo¨Jò/”mYàÑj.ì­{^öÔO¨eJ}ç©pêV‘.þ^]¨!A[N›xœ=‹ËjC! ÷~ÅÙ—„c¼¾ ”ÐEô+ÔsŒ’^½X/4ßtÓÕ033PðDZ-Î*é|p†­Ë‹Ô1Fc%g$$¯ØŠ-nN2/˜•‹Èhˆ”ô)Åˆ”O!{Rj£‰°ÏÒÜBÛ×ÐfÙáçòoå²Ö4z;¦¾¾ƒÔÞôÞ[xC­P¼êZçäŸ\gý;8?â/¿Ž}Ü_«A«´²VÃ-¢×ú©oÏQïeÂ|n]üé˜Hf—xœ=ŽÁjÃ0DïúŠ=¶”ÙZI1„’ú(?ÐJ«ÚØ–Œ"ò÷u.=3Ãc¦f0‰œ5º%B2èw	Îb'¹•Ç½0ˆ1ŠÕN‘VºÞ’oC ˆ]Ôä0 z¶6¢n„Ûê\\Ú—ê°ÁNÃ¿ÎËèKNŸ—/htg´²Ruð!µ’bO—±V.ðÃc ß~€ÓD/=O\Ï‡\~wÔH«vÖjø”VJ!¾C€Ç¶®¹Tˆû…;¯³{Â­äÊ¾Ž9Á•—\žÐÏÙOðv¿]ûwx-ºâ cXŸxœMÎKNÄ0à}Oá´ä1MSi„†‡X {ˆ…›8m˜6­’t˜ã“aÅÊ¿l–s$ÝË*ìœíú¾c¢%3Âj®œRý`¤­«6Œ2¸V[ÍRrÝËVèœ”®’³F“#Váž§5Â+9ïž¿KlæO?Ö4f]î+Ö2ÁZÎ fŠ±ªtŸ3Ex#Ÿ'xÜ“™àxnõt¦hnÖ8þQ¥RÚZ}†ËB`fÿÖÂÇóló>ú ·«,\R½OuÊ˜Óÿý½Ó‚1×hm=¯#,>Ü-x…=•w,fŠ˜ŠX÷Pø/Æ„d(ŸxœMNÄ0…÷9…÷¨É4iªØ+¸@Ó8m4M2jÒnOŠ@‚Û²Þçg;­ˆ0ršNRÅÍ8rC©²£\ƒRª£RRA®ÃŠ>
Æ(øÊZ¨ZïzÍ1b«[ÙvRµm‹mC†-Ía…gëßB€³ƒ£û*KëJ·Óä»”cp÷ÐðšwŒ±ŽÂ]-ëšä®³)á
OhÓ[g8^ÔžO\=.eX§”7’BQ‹Œ’­ÁÙ­Ÿ nªØg^Ãbý%‚Yƒƒììsðp&$äu¶1—)[ZÇßô7!H3þ%KBÎ1nØÃœÒ5öU5åe7µUe»í½ð7‡ÕŠq±•ÝÕ±’‘;yÔE0¦Pý¾D>Ÿz‹‚Ÿxœ%ŽÍNÃ0„ïyŠ}DÞÆvl©ª*è	¸õÀqðÏ¦1MìÈqÊëcà23Í'MÉD ,"CRR wƒò{®™à\ŠÑ
òdÑKlV“)8Hk­9ë{QEípÐ½R^Z%z£´=Hetcö2¥/4Žð(Âñ«Æn®ñüí]çÒr”L Ö¨Ð2ÉXSÛ%”B^)”	žöÍMp¼Û_?ß)Gš»”o¨„âz¨èPÑæ#>jÝ>áýòë¼ßBã=lûº¦\`¬‡Üœvß^¯—öÐ>(o!ÅæÛÕRŸœ0xœ…RÝnÓ0¾&Oq®µäÿOZ‘Š˜€"mÕ@¨râãÆªcW¶ÓŠ»=¼Þž„“¬PvÅÕ‰œóýÚÞ"oKŠ4ª0Š«8)ò*,Š<f\D9fM§QÃË¦öÌ¢öÀRÌå"/K^p‘”yZi‘”œeI9Ï«*Ëã€¾3–öÈ4Ü¡àçšW­•Í¼5ýˆò0©ª4)KxFaÐi/½GPúÞ®íàb×Œój‡V£š» igQ³°$h =ÎöVj_Ã‚s©·€zèa<ßd>Öt°gž8ÝQŽÃwã¿ÁâFr °r¬YüÞ2¥èû/Ë<Þ³ÃÈþÏ2‡—ì÷
{ªŠyi40_ÐZc/Ozp/i*¶…£T
8zl=Je(¹&AârD0ñ8Ò[@3HÅA0©È((cv”Ü!ÔÁ³sîy[§YœÕq“h=™CûèåÀÔ€ðpÿsu÷i¹y·\¬777î6:¦ù˜Sê?Õ|›=±þýI}Œs7>“Ý.V×ëë¯KxOˆÒIŽçÇ®]gŽ!Qq÷âåñŒY}^-/Ã“_R$-2F³•o™zÍQ°AùÓâ±£î4"íß­Üjä3#Ä¬ùQÿç¿¢–ðî‚rxœëa[Ã4!Î´ ±(5¯D!ÙØÄÈ<ÉÈ$ÕÈÒÄ(ÍÜÂÀÒ(Ñ8%1)ÍÌÀØÔÂÂÔ"9Ù"ÕÈÐ˜+±´$#â\-6c]‹‰“LM ,..ßÔ¢ôT…¤¢Ä¼äu×¢òÄ<ÇœÌÄâ"CÝÔ²ÔœRÝ´ÔÄ’Ò¢Tu. 4…&$–xœ•ÍNë0…÷~ŠYpÕj4¡NšT!¶°ë ÿŒß¦ãâB÷Ý¯ÓKV¶çœùÎŒs$‚¾Ów„5J’=:=’íµêGÝº–öR"¹§¸¨HœMÚa'ì)‰®3•¶rZÝÝ!öš°Û	Uò"3½Ã‘
Of¦°ÀKM½O¦Å¡Yˆ“:§ª5&œ íq7ìw•·8"ŠZ=ûœ)Â3ù<ÃSIf†û“^ÏÇE¦¥	qº¶Ên{ÙÁ÷µUðû™št!Óx>@Iž'XŸÞyÖG29ÄOpuÊÕ
k–báÏ%¤,ÄÍ×kÒž«÷_UËbA\eÈ‚g%Cp`É©²d¨Îo¬§$R€¿%eØ\éñv®T~ã|\ar½Å|¬«m~±j.¶!Ž~b²ÛàÜV~÷¥â?#G Ž‘xœ%ÍjÃ0„ïzŠ½—˜õc	B	½æÜXIëX$–bYŽ¡O_—2‡>˜i•ÈIòlú¥²½‹AKÆ‘ˆÇ½íûHÎ+)^T970Q3ù•±³~ðdJ§ÑP@tÞj‰‚¶6•
q£<QYå;\ZeÜ‘ë²t¡ÌŸp6¨”VF÷ðQíœZã
7Nm‚¯m\þ××ÌÏ®Ôû¿ªÏƒuN8ªø~Ejù=s„¨Ü¶šk=†ìg÷S,{~Š0¦:ïÇ)XÓCZ@T¢™xœËn„0E÷ù
ïºbŒªªj—í®_‡!å1íü}4ûvc[º¾ÇÖÍ¨èçZ6hÔÀjì©iÍ¨£-§#kõˆªQä""ú½âÍ x×“j¤làœ2&¥it3ö´S–ídˆ(y	>ÐæÞJR<¯òÞ_WŒÝ)Äùšvtbí4@E9¥D…m³9ã¿­]ÏVr‰áj5ÂU¸‚ Cñ:ZP­<ø²a´J8p6åDÈû¡XyA(i?ù hþ(Dmý|ì°¤Íé>ßž"’9J yø5|ß?Žb×ã¾$<$ëöÔÜr,^‰Œç`Ÿù´~=Ã’ó%ëzÞÍEžö jg}ù©üuÃú^*ålmS*˜ê±É—=ê*SÉÛù¯ È/³È¡Ãœxœ5ÍNÄ0„ïy
ßW­Òü‘ „¶Aâ/¦NS¶Mª4]Ø·'+/–?yf4%#‚—¨S•VtÔœ{Æ“Ìj#:JQ(êÙlÆXÀòNH†|è”4Þk7ç¼Cú`¨‘ÌåGFìQBÊðš¢-ÁFøÄ OœJ®©à§¯?ÜçcÇ¼·1eÜ–[;Í%CëÒú¢\›N+	'Z‡TºÎ¥`†7¬ðrì®ú^†û>_0G\Ú”§©2TCCU•’x]±ÙòË#|„ôkM»ß¢¼ÞË¹ý<ŸqwBúeOõøú÷–4A´+¶ä\oae”xœ-ŽÍjÃ0„ï~Š}›õdBmè¡-¥ÐC¥yµ«±å"ËIûöU §ùø˜‰*f+’R‰ê{&l+±V	i.Yñ€h¹¡ìÛöZTÄ5–¦·°e5ô][ÛÚ**[£ÛN˜13[— ,ÏŽ=ì¾SÂÃÕRAË¼‡RcÝÕªrTˆYjg#xbG¸ÛVawny8sð<K8ý«MUu:©:©Ù‡¿ÌœÓä>áýx¯ÓvrÄý@\à!MlB.×ÜPt9Ý—ð·Yã-Hzüö¢„cp^³?3z\ŽxœŽAjÃ0E÷:Ål²te"[*¥”n³ì	4Ò(©-#ÉÐÞ>î	
Y}>¼Ïû½Š ²Áˆ9œ	½»ÅÑ²FJ,ì%:ï(9#jóUÖ„‘ý¤Ã(f<ÄÎ:Kš±qIÙx:&å÷>—
WÉ}†Ï½…Þîü—w©«|¿”z{="McÂ€¢
eYrïòÄT¥ü>Æ*­ÁVóq7•ºø®ÔVŽ&µAð+ìMà´)õ•o«Ä¡¤4ðïë>õ ã÷`P‘xœ%ÁnÃ Dï|Åþ@,0ŒUQiÿ êaY–Ø‰#L’ß/QO3éifja†dL’6ñzTÑI¥­FÍ4§COˆÞQlÅç
	½'‹dÜ’BM¨PÙ(£2Î„ùA²ÀG¶gN	¾gÎp¼6Û-Íž^‘:ÚÖPVjí3*8ÈAJÑÒu®•|ñ\'ø|ì4ÁñÞzºqÉ¼t[¹ü£ÎmnCmCÅO~®| eþ…>G 	ó…¡n€1Þw(üœùïŽvepþPžxœ%ŽÍNÃ0„ïyŠ}DþO"U¨‚Pz ‰â`oÖ‰iêTŽÓòø¸â4£‘¾™É‰˜ë¬¨,Ã–Ð3ƒFDÁWÚ2fdgûêbÅ-1Ë…sÄ°×Úa¯¼Zu½Ò¢ÞiËI5TvËÓ’à…¼‡C »Ÿb›¹ØýmÀ—ópÃ$W¼ãj¦«Jz9S‚W
y‚ÇmÅ	v'w×ý‰R¤¹YÒø¶JK#j
Z}?ß¨~:<Ã;]ÝàÞv?“#­(Óp™·1D¸®uˆe*Ú¹ž—|ø_.[Éª?3'XIœxœŽAnÄ E÷9…/ˆ@€Œ4M»l«nº¬º `'tŒ™öø%]ùËÖóû%#FÆJŽÒëÙ8L8˜Ñ
©pR¤ÔˆNYÞëæn2Æ‚¼?i7)O'"2Æ	q|z¹ì™Ø˜½,)ÃÁ›Ççï»PãõÇÙÎ¦õ½b\kÍ™†–IÆšº]})˜á}YàyßìçÛtÌësÄÐ¥<ÿ£BR(QQUÑæ3>Vlmð_ðäœ/>E€ü/nPT)ÜÃ>û­õ±Jê½i†Ãj¢ª…?Þµ`ÍïÍXŒ—xœŽAnÃ E÷œb.`kc)Š¢.Ûª›.«.06ÆÁn_’Õ|ÍèÍû%ç\öèÑVjtÜ95Æt²sväZ)í&ËÙÍdJü0xš´ÔRi”J8t~ÈwBt=¡•ff/Ë–á•¼‡÷@	N?5¶±ÆË¯³­ÝÖ3T‚wˆŠwÐ`Èêv¥P†7
e—ýn8]§Ç¼\)'Ší–ç'*Ù%*ZÅŒ}¥c¥ÆÆðU ·¸Ï!àk‘ãÞ„T'›¸Íð0™äž·ÏA ¸jÙ?ª¼Uíxœ5ÝJÄ0„ïû¼—“f“&‹È¢èwŠpšœ´µ?)gSVßÞ*x5ÌÀ7Ìa†@šSŠµ­™êÆû6ik&¯ÛØÔÁ!9­tµ’ðR ›÷!bcšhZN.¸V¡®IEVÊ[çK®¢­ôYàr¥ù»Œp?’lëºýùCéiéHèóÜÍ4L‡çPõÑ:£p‹Fcµ§óP
¼òPzxÜ.¡ß›Ú_=,O‡,Ý?ê•Sp‡±ª^†¯¼3uT>–E8j'†7¦Ï"ûº§¼íŸ„×,…#”ën¬³Õô˜Yt™'xœQÁnÜ ½ósë!k‡µñFQ•&Ç*i•äÔÆÃ‚Öpw÷ïî&J•ÊÍðÞ¼7èa«*ÑqÎÕ®¯ÙŽ‹-°FÖ+&*&±oq`”÷™…GA´¼ê¨ª9ï«ºã´gª«»¦«T­d«ÉvD,Q;Oæ0Š "áÖ®e)×òî8ÈRºé+l[Z7ë…+ZQJRw21¢‡ïh¢†û%H·‡>ßwôÇÒùý…Ú6”s(h›¨Äþž°˜½±ñ”9Á¯§xüö|ýøãÖ6(ç'	I]0äâónãùï3/6˜½Å¡$™÷/ÔæUã‚vË8À¢FbÂO‚%!?siìòÐ*à,ÎFïÆ1­µˆ Â:MÊbCÒøcÈ¤b»£6)Áa°_"LâôÐL/ÆJ|çeëgéùbšžÔå€±«ÕQ˜QnÈünð’XÂk<­
aÅN.ÄZÙ}á”*úóÍÿý6ùà¬ÑŒ—xœ-Ž;nÃ0{bû@Â’4€a8nSç Ôr	¶HƒY9~ Õ4o0O:3 …4«S¶>¤lƒ!63ú ŒÎx£|Œex¦ÎU  Gëb.Q‡˜³µsÒ¤S–È“7)ÎÂvYZ‡÷ÿ¤š;Ã­í¯•;œ©UI$×´Í“”(‡ÆX¥Ý	ÞP#Ô¶m9¶¼Ê·ý›8ßç?^ïÜ+?¦Ö¿þÕ€ÞiÑêðùÌI<Žõµ•ñxÑŽ^e’é`™ÖútKc™ÖxœÍYÛn$·}Ÿ¯(8@´4Òè6’Ž]Ö^yWkAÒ®ÝÍ™¡ÕÝl“ì‘FAþ+ïù±œ"Ù==y“7ûa-5Éb±êÔ©‹œ‘’äÁÉáþa"OÅéqšœždûƒ$9IÓ“ýÃAšœìîŽ†½JY:ÚœN‡{I–‹ýãý½Ó$I²“}9Ãô`˜f{{=Q»©6ô^*7¥óÚ¦Súî1áÿÿíQšRæ;ÚL¾§½áà`ÿàøxpBýÁñ`ÐKuQ(çäÿ|ôä`/í91¡R>‘‘¹Vöz÷b2QåÒÇºŸJ*´udÕ¤Tc•
¼+Šr"-á•ä°O|Ñ¥ÌzE!m%RI¶®*m.ü&#SØ$Ÿ“‚dF?_Kº¿Ù¦¤v$r«I•i^gÒöf²Ì`[É”/¥ºÊ„“v›fÂ(][REeôL‰¯¢Ìü^Káj#{²„ŠiXæGˆò‘æº&§qQîõIuéŒÂÕÚXã27U–Œ®Ël‡îà—ëIo¬ó\?ÙQ¯w–‰‚~ª³‰¤7{ßŽzäÿ»1rÆ®†'*•Ãþ½ºrªP/lM8H?)²á!ßnñ-—4<Lˆ?Bl.­Tt-ðž®ä3¾˜xq^KÒcJÉrmíƒ+ôN1Sxø-Û|JoöÛ£å¬ôRÚY9aÀâº¤±¨sSZdôM³‰^à¹~1)\ßÂêß¬ÉHq§¤LÎÜ:ÎX€ÊX›7ßÒ¸.Ó^ïÜÀ¸¡«~–ÁÅ—W÷÷$Ÿ«\”AöT
l,p*1V`‘…„Q6lâãQN•4Þ½P+‚Ä‰tŽÍ’|v–ø[<UT¹‡¤ˆ,S|LädÙ,Ö©Ô²c2e¡å<¹Ðxå]»
…î¯ï÷üMûKºEã4˜O§2}˜‚Òþ"Ë)prùœNëŽâæ•á[˜——Ê2’àßB¥:_Ymc£jƒç£Á`Èeë›~•*ÙOÃ+E’Ë¾4F›(åõÌR4Ð8(,ÜÊh\m-±ø
êÑ0—¡*¯Á$vI§I®½l	‚­•SÙŠù¯J8	»Sñ+ùÌ1Ñ„´•ŠJ$*Ç&i·¶w¤ˆ''éæâêíÃÅ‡·g·×gwï£À»ð«çö¥²S(¦tðzWpp£ýŠÃ–O,ùø“'­;üQo`‘ƒ¾K¿/.Í¤±n× 8³}UúÝyÜÔº™qRÛ…È`U»¬EÜÜ‚Õrã>ªÄä¶ŸÓ}"itÃXe}ŽtÜíåŸtAosÁCç¹Ðï@¡q)ŒÌ»B@§e&hñšÉ
#Ë”mAvnøŒþÜüÔýÏz½·å‹%:[j.ºÒàG1m¹´Ú"àuXo7¯¤ç^ÄCï¾Ò;‰4“U}ž„)Y5¦R;Ÿ˜cfË(1äÓœ‘üóLf;^rË¹iMïº´{­Rƒ7ô|/Á%&±ÿswï'9Ó%™^‡íe—·Ÿû¨5ï>|†‰¨¸ütEX4EžS#¬è°óâ‹u¦NÁ5øô³ 5•Æ[ÿŽœý–.>\ýƒ~¹¼ › üEDnPÅzw9¨ö¾¯kÅÉ#“Ïô4Åk¢Iy‰Ivð|±O ë rM**ÛÙ9`­tŠÉþªbÁ†¢¡d§} ÉÇÒ;/ÝþåãÁáeFÍäÎ‚#r$€»n:š¬Šù=êåp|ÊÒ†;!ˆOÜñÅ_ŒçŒŸúyb†÷öQÈ $çm²5Wc€/_»v)×ý4WáÒÆê`ûÈNsù	Ü­™t!¶±îÎºÐ ™5bE)e7;j]êºPF@ÜÃù&Fuô"TÅGGÑÍÞ©¾ Xõ¼Ý´.›ýþŠ¹Y_âUl.NWQcl–¹Ù]×ƒKQŸ¡\ðULçåÑ:v]Äå+¶æÛ1o+ùuC³1x‘ËìX„‡·=q7Ò†×Ü¿¾“ä£Œ3êkS¿/æÁ‡
Yë’oY!õ®Y^e?èöJoöN[Ýóœ²6%[éâÎ<\4/á5®±sy-µ\!sE1ž‡òÝvvTH’ñì%¶™>üÞÇ¿¿Z¨j«¸f¤W­IT6d.0+Þ†>™7“›|í}¸,¡£F³ÂÒd$$JI	Ò)³…ì«„=ÿU›’ú•á:{<‡’[1ûýD9tp*Ï:Ÿc;DžÚlhŠBˆ÷7æv\(p¦ÊÚ÷t(n&¦kQ¥QœCÞ"i.©ùlqa>u®²£ÝÝ	\[';¸j×Ï}ÆÚn¸(VƒñPÈælPzoŒŸàÔ§2×¢ûá¡_ë4”¹]g"…[Û¾vÓ.#'Èu›à²Ö€¿Ï¬ð“,­Ïõ‹Âfpù(¸-:N6zÜñ8:ê<AÈeí ¸­¹;µìÚÒ±S.n|wÊÙ)<ªsP>§²j©¯š°Pâ÷·+|ñÇÖÎCÃKq$EÜ \žê§>|g—Ã°»›Ã©i·`ðÄ÷Áö	ˆ±Çwy…Iß7n¾í€.Õ|•©ÿ‰ŽvŒó¯‡8Íqš Wø@Š]S©Ûgdl}Gƒ-EaøÃrXÔ%Ïm$ÛlC_Ñ¡MMlwyô*ÌUšÆ.Ø9äDˆãêkÁR!òþóï(ðd‰˜!%Ïçä)dÞ!À/ïÚÚñOlÇ=W·ó$Oæ¡NåOþ9NƒüD¡®|2eYpÈbM%*åD®^$}8?ãm™´©Q*Ö§«×ŽÞÊ‚’?ÇéB 2vè¢/>Ëaåø0˜)˜è!
fÐ„__ÉUþ›mæ$X½ÕÜ°ùßšuïà+ž\²zôáªá7Ø»ãÜgú±6NÏô¼‹…Ñ¾Knê¦xÅR`÷>¢Rä‘Üés·eú1o|_kêÊ…ÎK—y(§ÒÚ˜0^C/¦ó\6ÉãÆ?g…"hù "¦	FÒ:è Ñ¶
ÖÊœÞ.½¤	j¶ÌghD+í»á¼ºU¿øõÕ½ ¼ÿªÒYÈ<1¥sž7
ßfv©lÓÙë³ÛÝëŸoã¾Þ-¼3§sßp½9h+*öìz&I?œ¯Ö£M›æ¡\Õ()ŒüEŠ‹ÅÖÆ!.”3nzéVü*ìT>
³
N±£Fƒ+¸4§ÏŸâ@€;; ¿×»E?ûòá@Ebx,—)›rq3ïøæ˜rhÄ“ñØˆ|ÀâH‰ëA8"×?Fó#`ÉTêÐ€ðWE°ÑÑ(Ø ±¯uÅþ]èƒZ¦Žm24Ü9	¿m“+'Aeßöö}×Ž,¾g±<¨•Ù¦Ó¼âGSÝñï_”ÌSt=fA#Ôøåû3«yÔ—r–žÉ8-
íÂÛ‹Ÿ¯¯á'+Ví½rk“›K™p½‚?óÐ2ð/LÄ!›àô‡ïd]NÒ©Ô9}riVÑÒËÕîÏK¼³Lêm¹-x<±4wã:i1:ôÑl†>ü;Ò6Ž†ð~æÿPæÍQ‹A7Ü7kJjËI!©»³Ák–0o‡A¾ŠXº¦óÝÓw¥{ÁDèfæ°¿VT<øúÃ)Âó}_X †5w\í¾ö’
jdù"ëùÓÍøý	5ŒŠâ¸G>³¢ÍôzÛûú!—œt¾L¸ëŠÝZá×1M;a°‹§.×o¡ÚÁˆ6NÅ˜ÇácÈ HFˆ|ÙNÂmýéxpÚ-Sª"42íÀ¿$ôH¼º­8ÞEÄyehp hxÒ‰Âtä“Ò6=æ svïâí	NRÐ¿£¿ÃkýW¿µiªÂ«4j"$Äƒ#íSF°ôµx”ÜÅoYÿç1N…Ë_¤¢wºî&:;~Ž[º]FLÌÈà	ÿQ¨±úQHÊE_xÅå8º
³fÔEå~g¥wçÐ¾ûÉ|ôµ?Töþ³L¾–xœŽ1nÃ0 w½Bp ZeEPdíØPi©¥@•‡þ¾é
tºé×›ˆ‰H½(¢ÒŒ¼Œ˜]RGcHà&™§‰óÍƒš”nADƒBp\&`ÅLsx‚Â2‰ÞÐÙ·Úì»ì}³·ó‹7ûzO¿|»K+òy©m½Z@çGÁ.:g¸ÇÞ»üC5MV)6W>ç+õ½c>öµHªê¾_þªšƒ:Wpxœ•ÁjÃ0†ïy
Ýv-vœ&q)¥ìºÆú²-'¦Ž]l§£o?o0vÞI éûõë/‰¬2Ò(©çZ0‚SrÀ;Ü	’ÂJ.›&
´ìhFvúÖZ5aë’º^1-”ÖÄû5¸–9&¸ºS€­aÒ3Eoõê!kÎÆ­':e\rmu\ŽÀ{ÆÛ‘w¬…g&kjwq¥P‚Wre†—5ëWõ]OWJü6¦ém{ÞŠ‘Ã†õmÒmQ«óf.ä‚Þƒq‰t‰ÉQ†5»0Á¯d§§wL•§üG‚Æ5PJõ“ Ìù‘-ð9»jÄýêg-Õ€4ÁÇûÔ)V¡‹›™M´v£ûÿ…Ñ|B.ˆužxœ%ÍjÃ0„ï~Š}i%¯m!ô˜ôÚSéA?«X-YN^¿
=Í0ðÍ0%3ƒ‡1 5ÁF¯ÐIM]§uP^x¯´%c6“9-iÉ“TG$Pi§,¡Dî;m/„"jÌ^¦5Ã…C€ÏÈ	Ž¿Õ¶sµç—w­[—ÈZ …ìuÑ	ÑÔt‰¥p†+Ç2ÁÇ¾¹	ŽwûÖósâ¹]óí%‰ŠÆŠRE›ïô\øàæø_o
'7¯ÛžÜdÒ7°fck‚ÌÏÈ/xïÕ[[Ûü6¦S›xœŽAnƒ0E÷œb.dcÆf¤(ŠºÈ"íª.Œƒ0‘1M_ÓÕÿúÒ{ú91ƒ÷b0*=xÃVö]#[êI’êÐê¾Š$úêiÇYiºƒ(’ŒÖ‘BÓÓ ­4¨|[Ù=Ok‚;{#œ¿K­çR¯¯ÁÕn]. µ[$§âUY—3'xç'xÛ77ÁùÑy}pŠ<×kÿÑFËFi*¨.hõ>¹9|Á-üÂ¡*7°q€íi]ˆ#¼)G7¯ÛžÜdãÈ[õäšQà”xœŽMnÃ „÷>Å»@,0æOŠª¨êªíª.žáÓ`ˆ0n®_ÒÕŒFúf¦U"0(	D¥½ñÎ1k¸ñJÙ…+-zQÆÃ+åròNH¦=‡ 3FÎ‹U³7Ñë`Iö‚¶–
ï|FÊpþévLÝ^Þ®l/ÀãR[£œ˜dlèé[£
Û
¯ÇîV8ß–§^nT3¥±Ôë?:)>	e;ª::|åßN.Åox+îØú]l±d1Ñ¡¿Éô€>÷t\cÊ.•ý¨Ï]Ì~øZVÖxœŽKnÄ D÷>E_`,°qc¤Q4ù¬’ì³ˆ² º;cƒ…qrý0YÕSIOU%3ƒžÌˆ$”vV#ZgÑ;+½3b´4hÕwÜ[Ùl6s,@¬G­{=â ˆ„³Jb@‹*õªC¯µ4Ò˜ÆeJ^9xŸ9Âù»b»T¼ü’o}Z@¢ƒ6ºá$!šÚ®s)œáç2ÁÓ±û	Î7wÏËsä¥Mùú¯v(»MU±ªÍgüYùä—ù‰`?¶-å¡¾àè—´™w(	>^ža[Žëá¾g#íÍ‰Sa˜xœmAjÃ0E÷:ÅMZh‚,Y#;„’6tU
]ô²4NDbÉÈr =}í–B
]ý™÷>LND`e[¸Ér”µ nñ²ÒMëÈµ¤5Š
¹´Èz“(d KZˆZ;ÓÖBðZ©B“l”ušJƒØ¨Bh”ÈÌ˜1ÁKøŒðfò0vþj`KÝï¼ÆÖŽ¡Pu©‘.aÅ%çÌÆ®ó9S‚WòùÏã`°=5sîN”×1&y¡°â¨''”¹h7`œƒe¶ýÌ 9™0ô1eÈ×ž öÙÇÀØþ»\YX'‚»E¸t´§	ÿØ¿ß‹ûÙI7VÃþõ>@3NRïÂrŠhÇnþšÏkÆfëTØÆ´asÏÊÆÈæ•9Ÿÿ~ç/”ØáS‡œxœKnÃ Eç¬âmÀó“¢*ê°íªø<bG€“v÷¥Ý£+{[A®âšI=É‰y1šE¡CS0ÎÏÜZÖ»-˜8©”2ð)R¯·ÒñiŽ+¡”ö1D–CìÑ–½ÀÆ	3œ®Çµãùüè÷í˜¤T#Ô”’Þn©5,ðŽ©-ðzT¿Àéæþò|Ã’q÷rùW™šrÙÕ>CÈg~l8ø5}ALßPïÖ§|TëR†~:Äç`}KÛpXRm{ù!¿Y6SÓ˜xœŽKjÄ0D÷:E_À¦e},Á†²Hrƒ…,µleüdgrû(YÕ£àU2 à†ãÀ%ÓIÉ­«ÌM4Ü$¡1(må`ÙÕeZXÃ{¯ƒúƒ!¨Ø™h¥èÐs¡ås·2mÞ(FøH´Âé»b;W<ßƒoý¶<×ˆ½µÜ
hP!²Ú.©ÊðN©Lð|Ûý§Ëð—çå•ævËã¿Ê•6(tUëcŸë±Pãçô¯éÇÞÄ{ã|I‡+ÔLi/[þXOáã¥ƒyáêFb¿¾ÚOØ˜xœ…PÁNÄ ½ós7íÒR»Ö£&šÝ˜Ôø[”–¨º~™wLV7ñ(È¼™7ïñR mêð˜ËZjÓÖ²¢é„^ÔÒÞQ'›ŽÍhJ t+Ñ¬5ª†S¥”B¬[’­2lMÍk¬MS3\Òàl0YŒpõìƒ³ÓÎÆ ”àâM«Rùñª–W¢•àpÄóamJàŽlàj‰j€³¹/^(LäJ¶¿Ôãö„Wk(x›©ìvœƒ%ðKš—P£´Î¦xi ø˜"X]ä{¯ƒ“f¬€ë÷ÙG‚Íe¿Ú<ô`'@–Ü=lpÆ‡ü…2?ÍAœQQIéh‚WtK.“tv›ÌÙÉlu»òOcïá ³ºéïW}Æ’Ór^Ë3™4hRvD—­Ä”-ìÝô^2öøÓ/¼1…ÜþåüõùOÐì*D§X‘(xœ•‘Ko!…÷üŠ»ªš¶1ÌÓ‘UEÙt‘ªâE—0—d#`<r}±HmÓMW\÷Üó) B]Ö¥DÑv¢bí(oßv²¯›Re%ºFRZ5=™y@— iš¶µ¨Ë^±A°zËzV3•'ôTJY”‰Ru„/iòö	è`‹å„ÞÀ×œº‹²¤}aï"·1ŸÒÛÏP¶”nË¦c|¤[JIV­N	< NÜ/QN°;ˆózwÀàÐ>Œ/Ö–enØÐ\âŽyùð	Ö ÂÀ‡¨"ÄÉ/f  Œ—‡gé—|½`ü¨%7WõÒJÈãtŠ‰ _íƒV
/o³ž	ßúAoáÊJJ¾D¯ÀÍëøþ·g.æ9øqAý¸[ÏõéÞókü­ûûœ´Í1×Þ}Ž¹!dþçúÊi“ôl.Ño!Bözt8l¼Rqºý¿Ÿ#OxÔ¸fûÙzÞFïáA[Ø‰ëÆmÿôüÖÄÖ¥˜"xœQMoÛ0½ëWð¶ÃOvd9.Š¡ÝŽC; ½í¦*!âP¤ví¿ct;‰Ozd+ˆúÁ¥Éôzç!ŽÞ¤)Fk|?ïÒ~HCô£qF]\An`‡i
~î÷;;Øàí˜¼ŸÇIïMÂ°Ó®Ÿ<NÊ½´c.ðH§ÅUøîjÅnyM»°¦w¿cèB>…ÞjmÌÎö>k	%è™ZÃ?Ú¾½Ôp„Û“¿žw',ŒK—Ëá/Õši†­–»RüzÆí¥·Hô¿ŸááþéËÃÏ'Xa¥îCÈ% ehG\ÿÔJ\£Ì›ª ?Uð®bÜ€ãœa!±)%ì*c$\b™¼¸aé\¿¥Ø±­P§ž‰‚[ÈŒõZãê¢º3±¨·¶  Gr¼–ôtøH¯*À(â-«˜åõBæW,UlƒG1…óÚœhÊ$euT3wJÊã6§´õï7ÿ·õH4´Å’xœ;Â0€÷ü
ïG«ô•„pãIÇÆ–8(	JÂ½~ý•J¬§ób–?[rŽDÐMÈ•°¤8otßˆºB‰RT’u¬*Í¥ì¦"ù5‘0}'x-uß.U#›^tŠ¬6ý²CÎ+kë-S÷<„wU‚W•°ö3–8ãöÓ`‰áºJpÞ¶M'$¼ð)ØÔ½ºœ)Â¹<Àþžp€õE?òöBÑÓX†x~ª¢í%|ªóW*nÑù¼ë¾àt8Â;);Œ!%8O°woTt”`el‡¢qþ9@höÒÐY‡*»à®qž=¬ðƒi:K£—@eÐ._€ùIuÉØÑ=™"X[èïÕÿÞÄ~øF‹µ–xœP»nÃ0ÜõÜ’M?EÚŽ²të¦q¤@R´__×@;u(òŽw7\IDÐò®C7ÊNá ±izCm3
¡:BáÌ ±³nÔš]T¢PÀ*«¤°wØŠVjé¸¤#e¬Š^:ÃÔµL1ÁÁŸf•áEåL3ìÂ
k³ÂýÝšÚÄó#ˆžsÄÛø2laÏ¾JðJ¾Lð|Íf‚ÝIïý‰R ¹ŽéøcíqPñåf,ÜÎT]’eï‡7ˆŸ&ƒó4[ðyÑƒö%3ödLLÖ‡#”e¢U›/d¼óFÃæ—þ3bÃî%ŠDK;(Sº‘]¿5coþÈVÑ¹JlÿWûßÕ¡âxœÅ»Â0 PE¦bŠl€}öÙ¾ŠÑQ§pîSŠR±…`J†@¼æ}ÜËMë¢:¢W"UœSLÍ «Œ+o¥ìmÑÛ:Bm°¨B`ôØr¶$\H8é\M¼ö)í€Jíï«{Þ¹Oÿ¶ãpÒvÎ?ëm&ó“xœ•MOÃ0†ïù¾qê”6ýÊ4¡Á—Mãî&N›­M¦4Ú¿§âÀ…‹-½zÛrDK©äYI<:åæˆº¤2­2­Œäµ257;c ¡j“Š¢È‹Š7¼”‚×R¡jÁ…L3Tu&T–q†Sì|€]ÐÅvxÄ±£Ø„ïl~²­u‘ú•òÃ#¤…”UYÊ´†„—œ³9lŒà•ì<êyU›S³ôí‰‚›UÚYñ”K^w•¹Ë@‰êíg‘àeYØ"¼ùž´fl.àèŒ¥^=ÄîN?Œ?ÞøÞ·†s˜/^‘~kÖÁqô¤›t56=ñaÀ82öîµ5×Ûø?0“SÑzÇØÞ¶ŽtâIšëúÿ¿d_ÞÇžu–xœ…ËnÃ E÷|ÅìºrjüˆMUQê¢ŠºH Ã€QT€åï‹“¨ê®«™ËÜ{M
ˆ ‘¡¨8­šVT”*ÅjEEÉEßP&•Ì¢£ýZ’oÐ%èd+j54Xa-zU±†Q9Ô£kŽ
‘wCWÖ’>§Ñ8pmà=;`Ð°Yîô]®,>m[÷}Gk(Ê®,‰ðÖš”0Àš4ÂóÅÛã°ÔÝƒÃiåƒ¾Eû¦îX{w²XÄÄÓ7ðêÝC‚€r|šÀ¡æÉœnŒ<¼½|î÷„|ò`ôó$a@p>'yôÎãÎ¿£?¸4æW´Ü%#îÈ¼¼ÌØlÏ×)§Ao¯n‰'#ðQ†¼DX>ç³aB°ÈÝµ‹‘ÜP° V„Œv(¯T1\6ÿÞ“ü õ(œ—‘xœ%KnÄ ÷>E_ _Ò(Í6›lr€š±51 Œ“ë‡È«'ÕS©z#í‰ÂJôÒÛdicÆ«`µH!›4SÅF¹ƒuN3Å´•AÑ
Ô=IDLÂ+Ž)ò	Ï¾–†9–ŸxÖÒnþs½Àý7†9”ý¸vŽ-Ê0oL36ºo½SƒÚú
ó+Ü^þï/j™¾çÒž—Ê-„ê2Ôé«FìÇYG¤S„H?[ ¶;f¨ø¤é0ìO×–xœ%ŽAnÄ E÷9…/ AU£é²›^Á3‰&Èôú¥ÊÂúÒ“Þÿ®™&dŒÕ³—N:ÅšÂf‰B2K¤‚¬¥îÌ+šÃÇ¤¦Àì¬gdK¨|;ÅfÂàQÖ¢íð¬KÊðÈ}Šðƒç‘2ÃÍ]`8.pÿõ4PÚ?Ajk…QÂJè…¢kt_kåß¼Ög¡n/÷Ÿ÷çÈÛòóR¥Ñã¨šjšÚ}¥œ™*{x—~­$âÖoé	å<Ún…R±žBû±¤Áó{%.Ý·>Yå™5xœm’ËnÛ0E÷üŠÙ7²dÙ–å"(âAtS 	²5#‹0Eª|Øq¿¾CÙu7@ˆ¯¹÷òÑ#Â¢êÄ|Ùòªk+l•hPµbÙ´_ÔbŽõ¢Yn¸läm„F¢jêVÉj½àXÉM-°ÞtõJñº«xÕªõ|í’ñ{çá‰<Ã[’ôp¯dœz{û$fÒß`¾ÚlªuÓ®+øRÑÇhvÐ1RÁ¤}ð˜‚ìáþ òÿÊ-š™óûki»¢ŒPT•2­
½c€Žì·ÿí,<¢–ðhœ<Àkt{ëu nŒ;ˆ=B
äàgô\Æ<î’mIhàQ“NçÝ÷²#Zå|F”º#áN£QpêÑÂ¯„þ¬íþ?¦|LáQK$ã¹ìQ8ÿMù^ÑOë3x±@ÌI îïÈUv±¡Ø£i:Rù)ÊñÅds‘§	áÄx¤<62ò¹RÛ©¿ýù’ÜQrMˆIØuÓJ>2ìJR+ƒ’;F(/£Ï#ÁsÚä³‹½ÎÛã€õnÔÑ¤=YxT‰ŽÂ² EÊšoÄHÕ™O8S®®m¤†>dúÚJ“Â•0»!¹<Àp¯=(¢×"å«™1ÖÇ8†¯e©œ3~¢6aÍ¬Ü~¼>?ÕeFbùN¾'­pŠ] ÅÑ™4ö>æ¦ôï•–¤W^ô
”uAž&”„\”Ý2ú’D&1­ØgÞ(Þ”xœÍNÃ0„ï~Š½„Ù‰cÇ¨Bpä*ÿ¬ÓÄ©l•·Ç­x N³Í7š-	8ç†yTJ	æPsïBA•ŽSÛ[ŠJàÀ¹è„±€×­QÌiÉ;e¤Z¢¡L{…­i;mY';K[IôV¦5ÁÇ¬·ï3F8œ›¯ûuÌzÉ[»./Àz5¨~‚Âm)%Õ]B)Xqe‚×-Û©Òæ¦Ç3¦ˆs³¦ñ•\öTT”øp…ÝèjKò3¬¶˜ÃÑ^/	sÕ'ä­ÆË„€)Õµ“Žnq¼åã÷‚§Ë©rîá±!äóÎïWï÷æçù?¯‘_&årq•/xœRQkÛ0~×¯8Ê'rjËv	£´ëXÚ®…%ödéd«±¥`ÉIËØŸœdÛÓ`z‘¸Ó÷Ý÷Ýï³,Œ±rž¢,²S™a™«”¥9•,NgY.ÉŽwh<d\äŒKÁ.éü²L²œ¥’r.ËE,0Ÿç‚f"!¼÷µíà¡á½ƒ{4,¶Ó—ãëÚñÖõ¦š
Û~€8-ò")Ã{:§”„h«½Ç Gík¸é¨ºîë-v›©íª34KXžADY€’ú‰Cÿs£û¾Ã+0NKPmAâ^c%²Tàk„Jïƒ¼sF»cLXã;Û4AÅ)1÷›È[ ¯ŸÎgJÖuÀð¦±Î¶èkm*hô6T 0ûht³À7¢"ˆRˆöðn4Ša±€˜Ç„„Ûm;À×
rJÈJ› ï´qc¬‡Þ!¬6ËÕíç¯³á¾y|¤I­ÓÒÜ#”èÜýõC¸‘`x‹nÇßÉ]P~d?õ~Øš„½ˆSZÀè¢ÃÖîWcÅö ¢F±Œª0ç?tã	¼ôÎƒïÞŽ}|úöån³|¾]?n–A[áhÚÅuãà0Lùîéy½þ>	ž]:ækîÃŽãØÊ Œ¬RQùvõ?»F~ËFøÊ•ËxœíXKsÛ6¾óWìäÒCL– A‘Ôd:¶ÇuR©Žå¤ÓÞ@”8!†„^ÿ¾Ë—^¶SM-;Sï…ØïÛ],¸CUpfÄbF¢8pÂ8ˆC›{”»^óžKü^0/Ž)÷]-g
\3°LÛ™CbÅ´i:ñM‹j¾Å¶Ç˜Æfj*²%\Ï
%çrï²I«ž‹y%ÌeöÇ÷¨íùÔ†·¦mšÎf‰R¼€O<QSÌÊp
ï¾Õóü/OYLÚ­Åí ›.nÕÄ<ã}`Qå,Ïe¡ FB
(§èB‚e¼ÌYÈKM»œ•Wéêª}z˜&ÀÊr–qPS¦€¥)*|k$˜€Ñ×!ÚÊU©x¦¡ÝÎzÀÕ‚s±ÞJ¡
™¦¼(¸Ÿr\™”•™«I)	aÁ™âZ ÑÓÖ
QEY@X&ÅdßrEªš*q¶CÍ€è=_²,OùYµn|§ßüþ8& "CïÏ@
4‡œ˜RM´5`ÅWs´&2‹8äE2Gö5c––È†­¶³²smí@ÉÑhÄŠÕŽ+R¤+n*‡0P!+ù™V­–3•ÏÈÞT©‚4)èó7kûtgÒ×jÿ¯–yÁËÆ]0×kZYOè£Ï#8\nÜÒô=ý‰cË€º2ôæd85?ñ]Ä÷©NHUˆŸr†1¬KèvH\Ûî[†£'"œöÇôÏÑèÊa‘Qê€ÊñšÚ"~ó´ÌöIš§³›±í˜iïù<Á3ˆ©z,?ÃC“öá®Uî—·Õ…pE5V+;c´¹~˜ªƒó{
<ñúéœ‘*Ú†|1]Ãð¯?~ûHîý_ïtÅÝ‹ÀÕí'ß8Ÿ!“*žÕš¾Éú¦i6Oë“Q'EtÙV§ØB;Åé”^ÃÓ?%Oëh<-ó”<íãñ$§äIÆ³¾LNÆÓ<
Ï;f«Æ7WL]üã›÷µò¥d
~O3üªmä©[~¿ðºE¿ÐÝ‹t 6µ†æz ?oPR•Ê Þba ‡ÞÂm4óV‡c¹Ôð¼gkð\»ucãÙu;œÍà¹8´1O×8¾e˜½g3x.NóAgâžÝåg3x.N¯1ßëpˆí”¶8[ƒ£]Äªnò8ÄÉü'l¯&\53xÎå"Á®H&Sœ“¹LådõÚvý¸€_Û®×¶i»¬Í'ëÅZ*{—Ã‹´KtÃK´Bÿ‰6çß¹¯39Vëá©·°Ì#59yw i—aÿg[NÎ3ž¦LÈeý'O'Á#]Æ±¬¬ìçßþ–øá§ýQ£,Üœxœ-ŽAnÃ E÷>Å\ Œ‰UQ¶ÝdÓÌÀP£Ø`aœ^¿$éj¤÷çý™Z˜A’	Ò³™P²#Ò–XPI£™ydÔn:	ÓmX8UµòcŠái`"ç”´)ŒÑ-ôb’®Ã£Î¹Àµ`ò9Á-†3½A¿½Áå×»Þåõ†ñ4Yc¥ð!F!ºF×X+øâXg¸»›á|§ç¼Ü¹$^ú\~^ªUVLƒnªij÷½y¬7¤¸Äy‡g_»¡½µç•—Vž^{ÿÑƒËsÚ»?òœ\2–xœE‹KNÄ0÷9E_`"'þÅÒŸ ¶H w;1“8‘qq{2Äê•žªJf
­—è­jZòdµ%ß!itÂ°–ÛÀÕŠ™S‹ƒBÙu½qˆÒ`ãI¡±ØŠ@Ü7®3=U¸•qÉðÈ!ÀsäÇÏëiÇÓ7ùÚ/ó4ÚuÒ©„¢Úß9–Âž8–î¶/?ÂñÜ_÷tæœxª—<ü¥Ö¹vOÍžVïé2óÁOñ^îa¶!&H83øÓÀðö"•†²\Aë
à–(ÇCLa+öqŠåç_újªZÞ•xœÍn… …÷</àLÓ4Ý¶»>Â DEÃOsûöÅävÓM»™IÎùÎäLŽ ØZN˜TFZG‰q‘œt¬V(í$µl2š©ž SGWBÊ.ª'@pÊ­ÒB%B	Õ;0^E¤K^ŽˆßÀç¿–dü´N×~Y!ØnGœŸ1åJöƒdTâ†B9öÝçÿý#Šœ¿c”p½rúðýUúˆ»Î	¡’~¤q:ÁxçÍoôÝ‡uÄKÎgÛv®UÊt«©vó¡Ü›ð¹C{Æl¾õ)H­}ø9€mçšéküë	ôH€}Û›xœŽKj1÷:E_`ŒÔÖ§BÙf™¨¥–GØ32²Îíãœ Õ£U¼9DÀb)%p:°Î¡pvbžh£³Þ1'££º¦!ûOœÉGDŒ>“	åH®4E#y4–82s,*ÝçÚ|J›+|Üoy…×3ÿîûYÆ.—C§70.ÒÑ“F‹Z«Ü·­Í)ÿPUmðvá6á:ÚómícKó¦ÔW;íR–^ëÂß/¥ÕúWY“-xœ…’Oo!Åï|ŠQ.M¤Úe½`­´Jzh=¦÷h`‡]"`íºŸ¾lbW²zè	x3ï÷r$ÉÛ¶¨å¢¯ûF)ëA›ÎÔ¢ÅŽš¶Û;]Á^1’ÏÀwšê¶’}×õÈeß¨¡RU'¹D)K›ì„ª´ì.y
žp´ð=ÚYQá>•òa<—Û™¾@ÕöBöõŽsØpÁ9ÓažmÎáÙ<Á×%é	î_Ôz>¼Pôä¶!Žï­}ÛÔ¼9·2ƒ*Zö`ì/xÅ”¬Açèž]Hé9Ïá3u‚..3¦Í¸½º‡£uvTü¦€äÁ°Ž˜ü‡‰2ÃèÜG8ÌKÊàC~ó½6ë!Oefðžt¶ÁCÊ±°mû9Ù´âR„Hc¤B]—Tìl1Ç‚¬`ŠØÛ…¢ˆT^µóMP†&ôtI·ÇÉ–uê%®ÏéNlÆ¬§b¾ò½/÷¢½+tßV°=`WñkŽup{ã3m´³ŸþîûqX7•Jöˆóê|Ž
znî.cÕq!DFTeÌã8Ð-Á\Ü–¾';z6Á˜:íÿû™ØßLï³‘!xœ…PËjÃ0¼ë+–œÚCŒl+vB-´‡@Í¬¤•-lKFRêæïkCÚkOË,óbR ‚²h„æ¦ªŒØç²6Jì	K4ZìTŽ…@YäT˜ŠMÈ%ÅŽ7’jÞˆª6$¥ˆÒ‹¼l8¡p_”ÅŽá-u>À[ïÁŽ’BÇ¸Àsû€ÙH'ÈwM½/Ë<¯aËkÎ™òãhS¢ ²©ƒ—[T{¹ÞsOÁÑùÐ>¤µà¢yH™A¬Š0ö"µoC‚¹#ÛÇÐÅÉ‡tÁùÆHš±"ÉƒêHõ`üQaÆSð_V/IÆ‚™@S ³”QÄlÊ{³ß´7+^IF)xÚüÂaðóêªuXƒ$Açc‡#Áâ	v‰qmñ›7Ïìj[GzëÙÊûáß5Ù'}YšÅÊ~íÐ&tw„Ëmè18GõûËúÇï<k•-£ŸØ±œ¯dŸ*xœ…QÍjÜ0¾ë)æ–Kw‘í•B¡—zL_`$l±²d¤q¶ûöÕ®…ÈIŒøþæNDPÕÚ˜^Êº¢¶›NžTÝÖÕˆX)«¤ê­lºv@±b¢ÀP¬ÕÐUJUkÙôDÍxÂªE[ŒÑ©®×7žc‚7œüJnÑ”&xÊe|™>ÆãBÏP©¡;5]§8ÈNJaâ²8fJð›ÏðsËf†§³¾½/gJü1¦i§öª•ú 
‹:9“Áº¿à‚uÁ1q—atÙÄwJWHd¶”]`b`t!ÞaB¼òC†5æì´'à¹ð¬¥ûöÿn¼½§”aÁ›b GAXÒFž)á5bl0Ó¸\œ÷0—lÃ§Œ˜E1<0pBsÞýËßŒïèáx÷d˜Æ¢0B&ÚmŽBü™	ö†Š
å›Îš"0llŠËÈ–Ë|¹‹ÐdpËŽ‹Ý¯¥ïã¥”·­Þ,Q¿$ó77ÑÚƒ¾>~{ùÏøo®-þÝ÷ê••xœ…;nÃ0D{žb/`C~#0Ò¤Hé"e@‘+š°DK*Žo	q•ÆÕbóf€©„\´wÔf4m/x×£—¥1Bb«Fé†A·¢aWK˜*çQ4Q
ÙòvÐš­:É•ö£pBÙÞpÓIf—zÎ'"¼Sœ¤ ‡²ÊcxÈýŒ¯Ð
£x¯”Ð°kTÓ0—ç9ÖŠëÞ–âÎp¸Û=^NûLáÕB6Š?P6Ú¢+/0ço—SBW¿,…øSÉºs‚šÁ‚G­èòRcBÆ>nqš áúuómÌeª”§	©€-pCXÇXHv%¬eÄ–-ÍÇâ6}‡)¸Ú€ÝBe­Þ3vŠ!¡ßåqÜ÷—§ûü÷?Ù„ýâãše™%xœ…QÛNë0|÷Wìœçê!ÄMBŽNï{XMìÈv¨ú÷8-„Ô'ïef4Þ‰ž4—$tV`ƒÞä\k•ËVj±QT×¥Æ‚ˆ³	=Ù¹,JQË¦ ºÔ•Ô”çYÝò²<Óªá”…ä2œcï<l±3ðèÍØ’ïà*¤ö¦ûj×#]CVmDb‹JÀŠÎ™tãhb$Ïdbws=\íÚå½Ù‘·4¬ïNÔ¦ª¹È¾¨Ì~Œt	¨hl½‘”	Ò}?€t6z7IX‘Æyˆ09ÁÎ‹ÆÞz‚§Û×Ûÿ§ Óðw á|ÃÈëû]¼Ýÿ´
Ê2ç'¢=œ6ÿ^¾É®aë`Ä±0{‚è@›a ü	CXjåööÏRì—eOÃs °'=ÊÝ=bLçI¾,ÉhœôÝ<¦¨ÂÑCN§4¶ƒiö“ÖŒmMgI­œÖ«öpy6£Ÿø3¹°O°EÇÈ›xœÍjÃ0„ïzŠ½É–e©„z-”B¡×¢Ÿ•-bËA^•öíë@ §>f†
"á¬ëuŒwQJã”õQÑkÍCç£:"JÅ®¶`&°Zà ºØ‹½\z¡1ôèŒ7rpfÝf+Í[w[ìžÖÙfø‚ÓáÎKÊõ·ýÉHmrkë·õÄ`ÔØõBxâCÏÙ‘®‰¼a¢^ëîg8]ÜMÏ,—v+Óíù $4\qÎØGIÇÐ¹®GgA¬[¶J×JIÒwDKµà„;Ý‘”§G©—x#[Æ>Ó”14[Œû{~ì/û¢*}n‘!xœ‘OOÄ Åï|Š¹›m°¥¥˜1ô`âAWtØ)50]w¿½l³ñÏÍdæ½_ÞËPBËá]'ZÙ_
©j%[áT£z´e(d;h)ºÎ°0²ÕB‰^¨Ú6ík£¥ÃÆÕXó^FCSëF2½Ð8'xÔIg?:Â+lËï&ø¸ª}Dª¼™*;O×pÙªNÖµR=\ð¶á¬L'O„	ÐÓ·K¶#lßÍé½yÇ1TsÚ­o;ÞqÎØ=ù¸‹?-Ág‚9†#¸É.i­bçHicOhË¨hÄ„ð©3hpþ°vg`Ùý‚îÑRY®lY½9Ô´$Ì18ÂL¼ŒšN€¼ºWñ	©C€¸ŸðWˆÌ|\Eù˜	§
îüa­A`Ž2|SÖJç:ì‡T1öìw‡ÍìÜÆ¯þwö#W²\Ÿxœ-ŽÍjÄ F÷yŠû	æG£0C—m·]•.ôzMìÆL_¿Néê;|pà”LƒBK=×(É¨žÔh$gÔOõÌ˜U“5fTÃØì:S,À4ö‚Ä,9MN	ŽL™Ñ06Inùh´s\¢`¢ÑgYS†WrÞ=E¸|WìBÅÛÅÓv…ž+!¸š§ZÆkê»ùR(Ãù²ÂËyà
—»yîíN9RèR^þU¡äŸ*ªÚ|ÆÇF-ÿ»Õ…,Ø„çV³uñ)‚ópµêq´Ç¦siµµmHÔ"ØÃ¹øÏmóÙ÷Z”Ÿxœ-ŽKn„0D÷œ¢/ ²H£h’e’DYôØm `ƒŒ™\?FÊªžJýZU2¤|hîBh¡YàFÝK‚¦xo´}³c¦T@y'%i'8riLà¬š–÷Êh&¥F’òVøÏ2mÞ)øœ)Áí§b·V¼ÿz×¹-¾ WƒÖÊp3@ËcMmã\
eø ¹Lðvn‚Ûò¸ò¾PN´v[ÿU=X)ªª«Ú|¥g¤Ö­ó7¼zë6ÂŽ#AÄc©”1Òõ¸lð<Ú#b.-zß^wuìë9Î	®˜|×üÖWï—xœÑÏOÃ ð;ÅËN3ÚÐÖ,fº›¿b¬ñNË£­ëJSè’ý÷RwÒ“'¼Ï7ïA˜AVYÆ‹BI¶©,
#˜â6ãgyA¥Êã9ÖQO8 ‚
¾AšÊ¸±J«Ù&ji¤e<FK+4#z­›à©×³‡G<°=¤_?»×G?MZ»ã0™Ë<&d®)§”ÄÓcFŽ]háaöuuµ¬»Nö©›š…Š3 ¡*R¢?£›ØØ@çýÜøî8öµÏ°äëÁxBîÿT¿~¾ |¼ JjX¯Ê‹Ú/jQ««8ñØgJeJY¯Þuèl‡ñ&%¤ìšMâ¬Mªóíæ'{—\^+ºÅ”O±ºÄXQ·èzxŽ?µõ5£yÚ#þÖßf»Ž‡ŸxœmŽÁNÃ0†ï}
¿@«$m²Fš¦'`ì‚ÄqpkgëÒ*M7ñö„±%ÿ¿l}ÖŸ"3±NPÛ˜ZpMÝFHCÖ’É­‘œî$³pÊ3F	ô†¬tªî”Di¬Àkm	U«eKØ"i‰ÌMk¦/ì<Ø~g[ÙîoÔWýtÙÔV+m­n¡Zˆ"o/>%ŽðÊ>ð¸.ý Ûs÷§û3ÇÀc5ÅÓ5JæYgÔd´ø<~¼qùtxþ‚"XÖyžb—S\—ÒÝJì“¿bârðKšâ` èGÆøßµ€{ù 9.Ìãzòa¹{?Ö.~ˆ+cv“xœŽANÃ0E÷>Å\ ‘ÄN-UUPºAbƒXŒíqcš&ÑÄ×Çíæÿ§=ég&¥ZœŠ;B›^“Ž}T3DE(]GÁR/Å‚LSCr6%­¶]4„®ý0îdÔØÚFà–‡™áb„S¢	ö¿ë±àñ/øÚÏ·(mu£2*©¥åzK9Ã;¥<Àó¶úöWwïã•x¢±žùòPM£J¶E5Eßç¯ª^N¯?ð¬Û²Ìœ!–~$äjñ‰*?3“ÏèFªˆ¹<Óe,ãvIÓ*àa|žÛN‹OP[Lxœ=ŽÍjÃ0„ïzŠ½—ý­dC¡§@éC¬¥udIF‘Þ¿n¡=3Ã_oÌàÑ(½&gÐ¬(9r (•UNê…HäŠ—´¬Qê)ZÅ¸]˜½sð8‘]AkæUÐè©6¸Q™JOnpNÿ.]óZ-§PóÎNéÉJoGš·Þ¹Á'o=ÁÇx…çÇò£×·ÂÏSm÷¿é¨á]:)…øú=†ý9î[*b#ôÔ·£{¤Î/ñ‚PDxœ=ŽÍjC!„÷>ÅÙ—¢Q!t(}ˆ££$êÅèû÷¶Ð®†™a>f"ðEmPØ$<Fe{<%8yÜÒI"±µ	B/¥p"&í0Ê¸3Öæ))’0*ê€Šáš¹¸a[ÛÌnpÎÿ._k	£·Cèõ²SÒ*nàkÅÙžÖ2'ø¤23|¬WÈp~ø½>h4zú¸ÿMÞ¹áœ±¯_0lÏu/°Eˆ=¬º¿ÇYöbm'½Ø7ÌåQ˜xœ•PËnÂ0¼ç+ö^ˆ‰íP¡ŠÂ	Uå’·½&†$ŽC/ë½?VCRõaW;ÖÌìlðDP’´˜L8£LS.¦¬à¹$™qªxžM3.)N˜ôè©±¬RLp…BÏŒ*òL¢A’Ó©@­¸(ˆŒP<†ÚyxÅ`q€åþãÝ7¶ÛÁ¼½#iµww`ñ¦Uª\û>Œs&<°ø’ˆ¶6òðB6Ô°<ª†ù¡ºõÅ|GMêüî‡*gŒÁ˜‰HMÖmïÝ‰ ÷Â%6—wBM°Ý”°ŠÚØi()ÀZÇdÖ\`ƒ-=*õõ$cxÖú¯Š‰±Zô#h],Þ7#¸)ß€±Ôè!¬UƒÞFÊÖu¥½RtÆ 'lŽv O½ó4Øj:§ßF5¡Žy¿|në^º¸«~’Òî:ÒcgÌ¸º<þãÎÉ'v¦g™xœ•ŽKjÄ0D÷:EC–Áƒ>–%…!Y’OÐ’ÚÆ–ƒ$æöQrƒ¬
^ñ¨ª™Œœ¬¶ZL(%P*ãD¤EcLÊž}a¦TÁFå¼ó(=Z¡	•D¹êQNƒä"öÊ÷NKÉð¬Ë‘a¬ôM	F:Ó:6øl«×·—èVp/­»„c¡2½ÒNÃ3wœ³F÷µVÊðAk]àí,aëÝÿæíN9Ñv9òü§j7hnt|h*{Ç·5ÍP¥Ò”s;ôdËØ¸Î‰bwLSç/ÿ{É~ f„akŸxœEŽËjÃ0E÷úŠYu—XÖË„’–ÒM—ýI3Ž•DräBÿ¾NCéjî=ÜÓ
¼WZ¡2ÒöˆÖ8/´Ÿ‚Âzîp
ã %7šÝ\¡ÜÀy¤à‚”V©QŒ^Ð8y«*B³q¯'ƒ4:æÖ6/Þ\)1Ãgr¥ÁÛÏuß–gèµÕÚ9XØñs–”bkTàƒb›áu­a†ÃÅßïñB%Óu¿”ÓC5\öc¿©fSÙ"¤XkÌ'@ºQFÊ!R…%Cý®ÂÓ_Ú­H_Œ½ovk-¹»#‡	\ÆøØ‡ve?'¨`Žxœ•ŽKjÄ0D÷:EïƒMË²õ†0É6Ùùr«ýalÉÈr ·¹@VUTñ¨*™l£,JÃ„NKoÐ¹ ½rjìF­ÑÑ,vŸ9 !`ceã©Ò­¤´¤:$ÃZš–›Q–9eèq„žÏ8ÑÌi…Ïkõ~D[¯ÌÃoÇÕÕ”¶WkÖ­Qð‚Q\é¶”Â>x)3¼ŸÍp¿úxrŽ¼Ö)O¨³Ê T¨/T¼… yß`8—5@:Ë~H¦¥,SL™…è/Ã¡JãXß·ÿ?„âd	™xœ%ŽKŠÃ0÷>E_`Œþ¶ ™l³™+´Ô­±HlE&×¯¯Ze£Ù²I‘Ú3“48» ¼ÑÉ¥ÄH,¤vØ±òÖ`ŽÎP°jÐL¬gb/•&‘¨SÁ¨€m)n7*üâ±—Êp	'÷\ßÇXÖoÖgµT|	+ÄÐéš[ã
wÎmÛñŠ\á³××Ÿc©§êµðÎwÕuuø!b*ñX{5¶ÜRÏ‰¸cÈÏÜ2¿àsÐc†›T+–xœ%ŽAŠ„0E÷ž¢.0RQ“XÐM/f3›¹B’ª´A#sýqpõáÁ{üZDÀEä‡^GfÕ£vÑö. t4F¶ºCDVl³»"¹Â@#RJÌÈ!’ÎwVÑÀQÓ;ã½#ynÜY§­À«¸Ì[†wî[xø´ûž¿Ú°­Ÿ ®€ÑhÉÀjÄæ¢kªU
|Kª¼Î#Lð˜ýÿ>g)Y–v+ï[¥ÉÐ¥šKm¾RNÇ$iÝY¯ç)¿!¸Ýù´¤šä€0I˜æR…˜xœ%ŽAj!E÷ž¢.ÆÖR[Â0Ûl9–åt33Ú›äø1ôêÁã?ø½1Cb§’£efg"Êœ2GTšh ;ï¥ZHÛàÅ—Éc’ŒD.¹·
£8Jeç±f­/ìD8úZÜZ(©øÇ^Ã%žbÚOqýI4Q}½Ãl<Zt¨%¼I#¥öµõÎ>xë+ÜŽoZáòˆÿ¼>¸~NµÝÏÔëñÆÔŽT|í¶r‡¼ýŠ?[†G—xœ%ŽËjÃ0E÷þŠÙeÓY–dBÉƒ,BZí„‘4ŽMÉÈ2ùý*x3‡9÷NŠD I8¡L+k£¹k¯¨9
’ŽSÍëÐ©ª˜0’O`*Þ(ÁˆÖ²i5µËC‰VØÎš¶“Æ9!»—Ô‡‡ˆÞW\¦	¶få´‚ÝËÙÒ†çTRÁ«Vsød’±"ÓçE¸Ðz8,³íaû0ï½{Pô4–!ÞWU×L+U•Õâì‡4à6¸Áß¡ËŸxzÁ;2×ÃÆâ„fóÍ›Àq`#a"¸Ï§Ûñû´ÿ½ýìÿ.Å?Óÿ\èž xœPËN1¼ç+|ãÂv³í¾R!„8!ÁñNâìFÍ&U’¥íß“"!$.¶lgÆ“#à0JìµÙR/H¶Fïv¢mzlzIZa3J!Ç±Û±#FòúvËU7Ê®áZKÜ
Þq®…:CFPbäÄUÃpÍsˆðL6Ïð¸&5ÃÝA^ûÃ¢'·	qº‡¦­à}ËG¨øÀ9SaYlÎôS¶&â‚Ð¹ Àæ:œ¼¨{Z'‚#N” üÁ»ÌäŽfuŸ`‡± rDŸÅyÆ^€ÎŠH—™˜ŽöâM*û3$š–k.Î×xóŽRáþ©
'ô¹P…oÌìKù)Ï·ðÛ<fü†±ë{˜s>¦}]O%“UnJJµ³~=Wþ}¡úZ*ålmSZ)ÕÃÐ±W;yÒU0¦’—ý_i²ÎM°^”xœ•PËnÃ ¼ó+õX9›8Šª¨×ö–/X`‰Q0D€­æïëôqë¥§‘fç±»5ÁÀåÐ*nÅ`¥³{ËQ´ÖYtB’ÔVJaT«œa7Ì+81n:¹‰ºN
k{Ñ’êtß½ Ù[­hïôÐ1\ê”2œ+­áLK¼˜‰R€÷­õXŒàû] :œË6Û™4¿€èG9tƒ<ó‘s¶±³¯•2¼‘¯¼.ÅLp¼êž®”#…]Ê—kßK% áj³2—òŒõ ™ŠÁè1ßäÀL˜Ñ<HK«7ÁÇå£‰ëLð¤øÈX¦&ZØn¯¾ú¡¢¾@Šá+ú`¿²tHæú“ÃJ› âLå††Êï•2vö—H¶IÎ5ú~øßÃØ'v“ô™xœ%ŽKnÃ0D÷>/PƒúK@¤ÙvÓ+P±-C–[ôöU›oð0¬…½Ó!\P!xÔ^*­Å˜<YŒd)‘³ì»
o4q(²G'µT¥qGÂ2	‡V¦ŽÎ:å÷B[Ê|Ò¹çÂp‰/Ðï/pûNC?äõ
Â´'””ÂÃÄ®Ñu®•|ð\'¸ŸÇ0ÁåÿîíÉeã¥Ïåñ¯jaPÕTÛÔî=%NðXr¤6ZùØi`hÓøknqni>ö…~º_wtQ›xœ%ŒMjÃ0F÷>Å\ Fÿ¶ ”m7¡7É£Ø$–Œ2"=~Õfõ}<x+H$ï‚ÉÅ09çdBcæh¤Ò) Õ
•·ÆÇáÀJ™Á¡@”ÑI¢É&
ó¢ÑÏI‹þæ(–Yè¯¥Â¥b^J†+¶£T‚Sxƒñxƒók‰c,û'Hë•V^¨	>„bètß˜©Âm¼Â¥=ã
§{øÛój¦ÇXêí_5Ò
iuW]W‡oJ¥îØí˜~Jã£1pN{¦ðÚÃÇ£Ý¶ü~úJT§xœÏNÄ Äï<Åw7­´PþlŒÙxð GŸ€ÂGËî õé­ïžf2™_2Ó
"°É¡cÔÊù¬•^R/™¨…4Š['¦!¹š‚©å…á¨…R£p29ÛÁNÒz¯‘©f1:4ÄlmÍ^/f«ð‚©b‚‡súqÇjbÝÒÒÛa˜4›×j„;:RJö4†ÖpÇ1´ž¶j×ž¿õxÆ’ðÒç²ü¢b ZQè¨ØQ’n»k	©à3Uˆ¦ÜÇ}ˆxqöÀF˜C«„<‡wh+‚Íé†¥†œÀ—aÐò_­'ä-,	]—½ïæÃ>‘/ë<müŸxœ-ËAjÃ0@Ñ½N1¨‘¬[‚PBÝdÓ+Œ¤IlKF–I_—tõáÁoU†^ÓH: °çè4³‰Hi‹èˆõN¬¨•«ä#Åd't†ÉŒ„)š€£Ñ7Ÿ4öžƒgsS¼·©T¸TÎ©døæ}-UàÞÐ­o8¿RìbY>Á·„vÐ>4i­]æÖ¤ÂUæ6Áeßâ§Gøëù!5Ë³+õþ¿’¶hŽu8Võ5ÿH‚­,ÛÊqÎwõ½£Hùœxœ%ŽAnÃ E÷>Å\ÀÖ€)ŠÒl»é€j+Ž±&¸íñK›Õ—žôþÿU˜Á™lsH'•5r$…h«½sãIE¶Æ%b·á­NˆÌVë@nòyCšÕˆ“£IÁq¶”C¦.u.7	•>Â±a8Çö¸~SRy\@¯WÎ!ôh»FK­,ðÎKáv<Óç{üËëeãu(òù¯ŽÆ`ûÛTÛÔîˆ	žÇÞ6*äv„økIøÓª-Ôiå ýžîSáTC\¹g‘"Ý/©¡YŸ”xœ%ŽAjÃ0E÷:Å\ FÒX¶¡¤ÙvÓ+H3ãØ$–Œ,ÓëWÅ«ÿàÕ"Ì–x0†É""2Ü“Ì~žPL/ÁÇˆäÔŠ¤
¤'Öè="GÛ^ýÆ‘´ôS˜}eˆä«ÂY—\àQBâœà'œ{.·xn¿Àý—©£¼}‚q£­÷ð¡ÖªÑm­U
|ËZxœ-p{Åÿ½¿¤$yw¹</Õµ"ƒMšª¾˜…a[cMO8d[)¿sR–îL±xœ%AjÃ0E÷>Å\ AÒX–¡¤!›Ðm.0’Ç¶[Š=~Uºúð>W3LÒÕ'#Xz2¨¼BdÃÎãDŽIõ]¦Â©‚U?éô 2¢7ÖZå‡ÞõBKKhêŽŽºì®…Ò¸'8ûg¦#ïå2o×SØ·OÚ¡J£€a„èÝb­\à›c]àz¼Ãç—ÿÛË‹Kâõ´—ù_ÕhQbS‡¦v_ãÈ#ÜîðO^)Q-ÜòV¦ÔÎ#Ã;Sˆiî~¸LvŸxœ%ŽMnÄ F÷9…/ÐBø‰4ª¦³í¦W0Ø4Ñ4P¯_ÒYY~Ÿžôja
k•õä£XŒV““Œ^NSD½öFNŒ‹4‰ÈbVÎ™…‚GïP©ãŒý‹83yluÍå_ØŽ\nþÆãî¿Æ÷wz™–YºEÁ›ÐBî[­\à“·ºÂ£a…ÛÓ_÷þä’øgÌåû_UZ9%/Õtuø bÊ¡í½ëÖbÏ©¼\°¶žrv~Bl)\óðnWážxœ%ŽKnÃ0÷>/PC-Y‚"Í¶›^"©ÚHü,·×¯Ò¬0À`^ÉªàE?xåˆÁ§À”:‹ÈÉ
.PÐf§¬kƒ½ïGôÔ%/H½fÆ‘¢ ÇÁ&Sg„:Ë´e¸eZe[á‹Î}Ë
—øíþ×_á–·å:7ÚÞŒ3¦©t™KÑŸ:—	nçÁ\îñ¹×»æUí–¿ÿUt°Ãªúª6"* ú3³Âqî5U€'å;¤úªè²ÃQ¨ð¬ÔGÍÑeUŸxœ%ŽKj1÷sŠ¾@ý?`Œq–&…/ÐÒ´2ÆñhhKäúQâÕƒzTc"dfÌYX’ÉR¾fWLŒÎ«ŒAû¤ÈM;2m¬±Z©EJ$Ú`Æ)Œñ!ZE…1,
Å„½­•áÌ¸-uƒOì{e‚CzyÓÏ’ç\G6ª¨”ŒÞ„bôqk.tk+œû3¯p¸§¿=Ý‰7úž+ý«Úê ¥ªêô^™)7Z ­µ·½7¨®W	# ÔôÕNp™xœ%ÎMjÃ0†á½O1¨Ñ¯%A!»ÒM¯0’FˆmyLéíë6«xáãN¨å)øhÐÎàTb²JF©„'•J )Ç0lØieÐ™J	ÆED’¦('TtY]Ðxœt…(jÀƒ­Ã½ãšÛ
Ÿxl­\âÆí·ïœÆÔ–+H”7ÎoÂ
1œºTfêðA•p?öô€Ë3þííI}¥ylýë?ÕV{-õ™Ng:¼/ÛLËy˜2`Î•k[q†‘ëÎ5íÀrÝ·†_zS­–xœ%ŽInÃ0E÷>/PC´¬	Š4Ûnzô€Ä’¡ÐH_¥ÞÀû|àçJÊº	mð8Ù0ØÁ˜„ÁšàFi<*ÙÓÑu»¯”„–Z:kŒE1‰6b¤ÑLd&t£K’H+ï;ðR*ÜªÏ©døñÇ^*Á%œ ßOp}¥ØÇ²}*7h!QXøJˆ®Ñme¦
ß´ò·ã¸ÜÃ{_ïT3=úRçU*i%Ê¦ê¦v_)Q¦m§êùh×<•ºy^[™™˜×<CkÒn~ÎèÍº?TbWt”xœ‹KŠ1 ÷9Å»€’OçÓ "î†Ùyƒ——;¨iIG†¹½éUAQÕ3p²,“Ö8¹<eEÙ#âÌÚ±×1R"ÎŒSÔâk™ÉY$Žrä1È-Éúä('?Û0Tð?}YÜ°¦¸bçN-î¼üq<l¥ó‘Ö×”AåÌi¥Ã¾JïÜà—K_àúÙhÓ#î¼<¸U~×vß×ÙXŒ2cuc?µô‚O 5•zâ$éF¹–xœ…Î»jÄ0…á^O1}°ëfiYÂ’*2EjKšY›µ-#Ë$yû8äR8ðÁ_¨˜L0:”V³‘LžUÒœFãdˆ®Ó^‹m(´V]Ï½GƒD¬-YVŒ
¥”Ìà¼±)9D9ˆá¨c.ðA¼æ®Ÿ4µc>n{fâùøjc^ž¡3^i´½’ðt& 8ßeª•
¼ÑTGx9ö8Âõ~÷ö ²ÒÜærÿ£F9é-4hOzÚR(VØóB°•¼lUˆ÷é¾Rj2s¾/ÿ‰Q×Uú–xœ…Î1jÄ0…á^§˜>ØH¶d–%,©)S¤–4£µYÛ2²L’ÛÇ!Hõà‡^-Ì`ƒ&í°ëµbD‡H4$‹Éw–R¯¬bö–Äæ¯vƒSŽ=9KD:XVHF;cIK“²64ÂuÌ>x‚×|Àõ“§vÌÇm~æ4_mÌË3(ãz-Ý;x’(¥8ë2ÕÊÞxª#¼{áú¿{{pYyns¹ÿQÓcçhäpÒÓ–Â±Âž†­äe«B¼O÷•©É)5áûòß!ñÓÞV¡›xœ…ŽAjÃ0 ïzÅÞ‹,É²TB	9zì¡gi½k;VPdÚü¾n?ÐÓÀÀÀÔB}ìeÐ^zÇcTLFØÚ°e+%Å=Ú*X¥ÂÈž;çÔ ‘to£Ho\”yp®3"ìuÎ>)Á5ïpú¢ÔÎy??0¬ÄëþÝb¾½A×{¥­1^Á‹tRŠÃÞR­TàRá²?p†Óy^¨l´¶¹L©îµSÞB#Q!ÆîS}Îa›è á"ÄGš6›ÌÜÄçëWâæðXe“xœ…ŽËjÃ0 ïúŠ½§’ìU¬Bè©Ðc=¯´+ÛÄ"K4ýû¦ýž¦dèZ´Æ	z‡˜F
Q‚uÎxDfÂhŽAŒú¤,k6j¢>4}`î´?v‰X,
QKžÙˆµ¢ZÆ-Ã‡LðºU8Ét·zÝ#Í’æz?Äm¹€AozìÚÞÃ“îµV»L¥H†7™Ê/u#œoá—×›äUæÃ–‡¿´Å¶·ÞA£Ý#U{ºŸ€˜a—ò<Hi’P©Y`¯âÂJ½OÃ*Ül)5áûôßú\\Zàxœ•OKnÃ ÜsŠ·¯l¢¨J»mw>Ÿ‡mÅ†
p¤öô%ê	ºiFó«„°|2ç\*êØ`4ÒI+ë”Ônœ¨	là†|™Œ±å`ý ´ôlR³h¸0†…qäH­AsÖ5e˜+>0ÂŒg\ÜŠi‡ÏÖz-ŽQÕïˆ·bŽÒ´Þ¥ã˜Ô\è‰K/TSJ{lµb†Üê
ïgq+\ïö‰·;æˆ{Ÿòòg•\B@GÇf%oÞÃOŠØËQ»Œîí„9°Å¨	¶RN„g…‰žy["ú.…ÐÙïËÿ–“_9áiG—xœmPËNÃ0¼û+öBìø‘¤B¨påV> rìuc5±+Ç	‚¯Çmá€à²£ÙÙÕNNˆÐt¬¢QL;ƒ¬BsÑrÉÕZ¡hXÝÊÆHGÎ:aÈP«^ÝaJ5¦3e×ó^pW
kCÊ$ÑKb‚ç¤W,ìõ„ó úÆ«tå»wk*§'`²+7¯x ’SRº“Ï¼¢Ï¼,³)û§þ‚»¦€cÓñ¶*y[Sª(%$¬Âg˜·`Æ8#X\½Ap| o&§ñîÜ!×û¯˜}ÑÖ}D^r<˜ó&†Ó\TÈ\A—SAçq´óÅéœ|‰ëÇe®yóÇ€vÛôÛ?É|ójÿ;òó>ˆL˜xœeËNÃ0E÷þŠQW ”ÈvN*„
,Ù•¨&ö$±š8•íÑ¯'iaºÝ3sç=(lP‰J‹Z9/UÓòRdº1RÕ…$…¦&e0g'ôä"Ôäy›ëJI•ÂpÔ¦*E)ò\Ôj‰RVÈpŽýäáÕãÙ:{)ôðŒ7ú«Þ}êi|QÔÙ2_”5<ñ"ãl¡£‘<|=¼ÍA/þc³ÆÝ‘¼£!|w³Y%¹€„—œ3æÎ#ÁÅ…-êÆemŒvrÐâ<D°ôh`óW—ÉQ2vcL9³al‡V íìôÕ¯q„èr°7œ¢_’s°®ƒØ»ŸšÂ{Oú¸fá4Y·Þe]ˆ„¦–†)cŸ¶sd’©m“æ{{÷º_îÿ¿Žý Ä¤–D’xœ;nÃ0D{‚+Yü­HA¤rr¹k	ÖÇ ¨ Ç]äifš7oj!J%“µB™‘GbN@d4JðÞ8£¢ÍÒfÃ¡{ÄB[IÅLÀŽƒ3Z±uœŒ k9²kÖÿñZ!±#=zåArD,C@õØî’1ºxÖi/â“æ:‰óÀI¼ÞÓ³ßïT6Z®{¹½	Áh<€è¥“²Ã}]çZéÓî‹ÊD*qk“Ë¦¹ˆÅTëãx†[3žéÚ>†eÞÎŸ~û^ixFËÜýn#d%‘.xœmRË’¢@ »ó}·f¦yUÍlø ÔQA]ÑÝ4/yÙ4
~ý:»×É%U©$—„3J‚âXÅÐŒM]…PO +Ë‰ŒC#6Tk’	mÄhÍÑ”$Š#j¬(1(¦T5	Ñ˜ %BØTTŒ õ<kXÑœgÀî;’÷+þæÏ+e5-5,ýdÕT „„À›¤I’@šªÊ9§89w{Þë†Ñ¶?ÓWS½?ÄÒ6íò¼}Ãž;ÞìœØ{ÎÆ:ƒù?] xt6±-ËžZ–oûKj–š4ì•žh{W˜÷°¬Øõ<keÁtœÎxÀuØËÇœ~•Dµ0&mâB¿¸>Cs^ëQ^‡‰§ìî7øô“~øÓÑÐOKÑËªš›Îy®ê?pûaá§A/ Îˆ6.bè.³å"«l•Ÿ±¤õ³jô ¿Z[ý¤ÏøAWÇÞÊK1Ùž(¶ŠÏ­’\'ƒ)ZÌ²³ƒÆBsO;YŽ´Ò‘ƒÃ`iU5<+t˜·“…hxã1ÃKG÷ËÜ`ÒÜµiÍu›9ˆîÕòLœÍâ}ñPGÃ¦(IÆDZÅ}©{oCŠmO¢eˆÄtâ9i2H'~KœH >êg»¸¤wÅ-4O{&îä¶uõ…Föïböüž(îqxeÏmêf­JŠ¨™wø€²þo6ßÌ~^LèxÄ^¿kjž×}Ów ¯9MYÄó¦—–-`4î	}yª6/)ÀŒF×(¥LçäÝ›xœÍNÄ0„ïy
ß¸°Ušô/!Ä• qvgkm7Y¥Y oOË®¸ÂÉòÈßx4%A-åÐ‡ëÎiÙÝe¥÷ö¦w¤k"eÐ'Ì¸NôhÔÐz­¥ÈÒ ÚN6ä]£±±F·¶QÏeLž‰ËOçÙp°Û|<PŽ4U)ï nVÒô†ì¥.\
ýZuE'7Cà/š…x¡cú °\V…&?WðNà0ÞÈ4-"”‘8ƒ]
AÊžrõ‹]œË9œp™ú[˜9:Ú¨UäysJ‘às‹YFþ*ñ6^-N9žV‹Ä±ÌP`„µÇ¼ ÿüöëÊa¹ÜcÎ¸¬1^yÉïR;»ÜýU…ø„ð–J”xœŽËmÃ0Dï¬bÁÿ'0‚À×SHîZ„-QXÓ@Ò}ä
ä4˜Ã{3ƒÁz‡fv:i…ÁS¶Õ9›u©6JMG'çÎ$ö™q Kt¡PðAÏ1ø¬(Ô˜K¢lŒSQÕÃ“%1?ÇÒ>±.ÏGYà|Ë¯ü¸!ox?u¾¾ƒrÉhiµô0É ¥(}]ÛøTPû†ƒßÛ™;?€¸¯ÀX^ßwâ«]7¬S'šòÏÛ_âzw[a“xœ-MnÃ …÷œb.P0)Š¢,ºh{	Æ1ù±#ŒÕ¿Têê}zOŸ^«"@:`"$‹ÙXrÞ“#É3Å¬¸à…m>zÅ*K¶20H0zê+Y'‰§‘´%ñš™š¤Ù¨¸·y­ð!Ó_E8Þ:ŽçïÌ¯Ï¤ÑêÏð¦QkÕÛgiM*|Ji3\ög8ÞÓ_žïRyk½þ«„Öù®ú®ª÷òÛ+rY®P¶m—Aý†‘Cpxœ-MjÃ0F÷:Å\ F#ÉJÚez€î¤Ñ¨v“ØF‘“ëG…®¾Ç×*3h²ÌÞ#ÉP0&Rt²hï‰e­:“Øbå¥Ar‰Jt‰µd¥´2#6™KÄ ­“IÉÑj÷6­>¸8Í¼Àá·ãpéx|dh½¾‚ÂÑ(x‘(¥èïun+|òÜ&xßo4ÁáœþöxæºðeXëÏ¿:¢¶®«®«â-g¸íÛ¶Ö¥§¿¿ŒEÈu¾ó žáG%˜xœ•MjÃ0„÷:ÅÛ·1O’%Ù!„Ðm»óŠ~žmG*–\šœ¾ô]Ìð13u%Ê`HH#Û‰ëN¢ïQ¯©J¨q”ìË®”*hg-j#çZ!¶Îrß+”hzâV¢4F(Ù­Îy…¡Ò7%hK“Ÿ)/ð±·žŠçØ5Ñ¥Ø[Ù³ÆçÛ¸ê%×Zô^°Gd»{‹µÒ
ïëo[ñ3œ®î©—+­‰–&¯ÓÚ)¡;8 ÞQöHåÕÓ@–<E[yôK…qK¾Æœ^!Øj?—}j™ó¶p1»W*ŒqJyî~üß)öÏ’qô–xœ•KjÃ0„÷:Å¿/–l¹R!tÛî|=F¶ˆ-K.mN_z®fø˜™ºd”÷è¸PÒ¨./;‚Ô\Za¤Ô¯­6Jc³!UV SÆ"ØÞj)•‡­D?ØÜ	gf¯sÞh¬øD¢{šÜŒ¼ÐÇÑz)Ž·ê´ ·bÖrd'—×+q©;>\sziuÛ²Ã]c­Øè±Îô¶7ÓånõvÇ–°œò6ý¡JŠAQÓÊž©œ)•è)Ú<…cÐ3'4ë´Ö¦ yÂ—Ã£Æœh6É/1MŒqJðM¡±ßçÿ]`?0m€“xœ;nÃ0D{žbû@
?úPF)R$eN@QK‰¶D	ä2±oÙnR¦šÅ`ß†""hÛñZ:1H‡m¥t[[gtß=8T=6¢²âšm&b 0Ußbk×Ê6v­k¹k¬CÑkÑHº±»¨b&Ó´FøœMNð!a€—syº_Çd–”ÃXÚuyQwŠw²æ
ž¸äœííâ‰pÇÑÓo9Ùi§û[ÏÎåÇ*¸àJBÁ›eá{Áb‹>ÐE4ËìBšÖŸ"â˜`Í´ebìÝ_`ñ€LŸžÓf,&È	Á‡?ï[D¢+Ü`Â föc¸1y6„{øJÆ¾ö‡bu®è¯‡ÿ,g¿Þ'~¦™xœ]ŽMnÃ F÷œb.`ŒpUQ¶Ýµê+þ+Ærû:QV]=ÍHOß+™l#QeCl#1IDCcM:ëª˜t2X(óT eIÒz2žœÔFQçœSÆ&ôA§„lu”N+A[¹Ì>iŠw8QáÙ?x¼±¯Ö¾pæñvM×v*‰RŠý;ö¥p†îËNÛ.p¸úWÎõœÏ/Z»«fWÅ÷ŸS)Ï#,Û0@æŸ×²ó·ç›_ýyâXÍ)Uþþö¯o?hêWfÏBñE]3•xœ]ŽËjÃ0E÷úŠùij½JÁ‹nº)-ý€‘4~Ç²BÉßW)Yuu¹÷”Ì‰•6®óÒ§hýœatŒ
S$Éhíe$q¥Ìk…484¨¼NˆÒ!©¨½(rÎ+ÑFe'èV¦-Ã'­é=ÞáÃ#O?š}.ÜÆír¥=úN"*h¤–RÔõ2—ÂÞy.ô·=Np8‡GžÎœW^Ú-OT+mmEMEÅ÷5Õ¨§ðAygxëaÙF¸ÒÈB|ÍãÊ©Ù†¡	÷×nµÐ²´OÅÿìÄ/rYèxœ}ŽÍjÃ0„ïzŠ½—ÕŸm…PÒÒ[Žy­´Š…9Èr¡oß„^zêifà›aZe†1:SÒƒÑœH›~ô–¥ñÖ¥AQ{í´âî+—!’ÑÄnˆ”‚ŠJÇÞ"J5	µ•a$á÷6­.ï8çÖà¸5þâÓ6«×µ^ß@Z§öh^P!Š°Þn+œ9·	>ö-Lpœé©§™káåOÕJ«Gè(Ä{ŒðÉ”}\¶æ—Å·¼þ†º‡§ß„¸äkáØ­)uô}ø÷ÞY:Zºœxœ;N1DsŸ¢Cfå_Û3!DJÈ	üéÞ±v×Fœž Uòžªjt"À ™–ÙqV‘3¡q„¬­Ôœ¢µn–iöâ=tªh2úÐ)«æì¥	5óaÍÎetÆ$£1‰°µux¥2VxÙ·´Âã%þäó…z¥ë©õó(\ô¢õ¢<LÒK)R»ÝÊôUpù £§XÄ½\³[ù¢Æw÷P6Èå˜ù{¢ÕƒP38}â­œ+å©1Oñóá¯nñ,Bafœxœ‹»n! {¾‚Î•£eaáVŠ¢Èmäà±Ü]ls‡‹äëã4ù€TSÌÌè":°GrXÈ‹TŸÙyqH< yg¸¦ò”%¨{ìÒ†.S­ÆV ›ˆshM2™rÉ@œ
004å¯9Ù$	R rt1›){[&Bækä âc,[×²ŽEŸ{^ôë%ýòý"½Éõeëó›6ÄÈˆ>x}„  òv»­cÈ?Vu–>‹N=¶çr8Ç±Æýô¹õëÚæã½ËkýúnûAý æ[#Ÿxœ¥ŽKN1D÷>EïQ¢¶ÇŸ1Bˆ°gÅÛŸÄÑŒ9œŒ=ÃŠÄµ|UªªÞbcµPR¥cLÚ[©£Ê F¡´ä6Qf0ìäZ,pÂÉy>Ï¨<¥¨¥0ÞÒLQ‘#šÑÐ4™ÄÜ¥jƒ×³;Ãóñû«-¹ìáa½‘-ë<]ƒßúº>WVXÁG¸Ã!6èš{ÿka»%ïœZ÷k‚Ïr†Þ|o\s?@y_c¯#Ã¦¦´¡û?³xzm‘xœ¥MNC!…ç¬âÎMþÐÆuîÈ ÷Ri|ðT£+sîÆÄîÀx†ßà;çŒFh”°QY%£@4<r†;rAå´³ÆNÆ6ß¨@)&)—dyÇmäV)§K n¼ÔÚ-&1/µÁ“Ùwx<µ×\Np»^É>œëÜ¿cÜÇºÞXò ¹nø›tÍcÐÿ,ìúeÛjæ¤­å2~%oæ)¹ÀgéJgì9Ÿ
á®¦´Ç?T³‚-mš›xœŽ;Nƒ1„{Ÿb{”ÈïG„Ð§â ÈÖ›8ÊoGŽI”œŒž‹a. [Œ´ŸF3Ó[J€Fqa%’òQF£¬#'ìä¥%R£wHÉhdÇØRé0¹ìp
Fóh„µš0‘pJx©|@r’¸añ£ïjƒuì9žàuÿõÙ¹láq¾“å´¯wð|ÁÍrSç'&È ¹Öø86èœ{OÿIqAþ¦°—CÞ8¶<æW‚[9AÆ÷¡—ÜwPÎóÏËØÛð%\T¢Åt]ý¡”}Ö;kv’xœ•ÍNÄ0„ïy
ßQWIš¦´BHÜø9õ	¼±ÓÚ5)ÒòôdáÄq–¬±æ›‘ËÆÜöá¬uÀ6°j“VÁØ¾5²ŽÕ^jDeY‹OÜ8ÐqÚiÉ=uƒ!ÓÛÖ;:£ÓD­WdPà^¦´ÁPø‹#¼ÇÑOœx­©§ì•<æÇŒk®·ƒOë¨ÎZåœ3ÜI-¥¨ê:—Â·ƒœ>:Ùû
r$ÞÍá~Â82ÁwŠËœ\#0”sÎ;ÃÈ¥YÒ(Ä0‘©I!4çËýmÄSjþ^P	W÷Ë‚{†gŽ¹2N‡÷ßí¿çÃ»ÿë	€vxœÁÁÂ0 @¡þ;Þ)u'~2 #ôáÆ¶@iUú'&`Sî>Í»é—YÕ±Øµ8€$FH34‰d	€<¾ðvâYëâ‚Öˆ"$Ed¯ŒmJÌ¡Sì’eË¡„µÏ;‚ˆ‘²wGOëïr8‹¸;/ZËÓ•«–›³qv¯±ê‰§I«|÷›Ç“õ.8•xœ•»NÄ0E{Åô(‘ßÕ
è€._`Ç“l ±W‰ƒ€¯ÇŽ
ºÑhî™sËŠÔH#é ´rÔûEã,öŒK’24£äêWL‚ŠÒ`=‹Ìhg©G£‚tÌ®•ìÑr¡…•Äïå’Wxšý¾Á#¦œ_Û—ïénóË¶§±íórLi'¸ÓŽÃå”’º]¦Rp…®à[vXûæž«ôyëµíŒøä¸uTYSA®‚È}Œ€ï=^Ë”Uè3'„Å'?ârª6Ž‡>EBºiL›<Mø8ýÅž<äæ§kÍ™)“/á?|™˜ xœÍNÃ0„ï~Š½—Tvb»	ª‚pëøg»ŠRúô¸¥'¸­fw¾Ñlž¡eœaÃ-ÕÂ¶¨5ØH+&SŒÚá(»É^Í20çœ¬[G…@Qk±Ti©5×w¢qFr§9oˆZògØe<`€.¡7Æ^Jê6FÛõˆxŸÔ”ÊnmâtLtµ¼–-¬hG))êäsÆÿ€ÚŽŠvs‘SXMý”«ÍfÜÇ9Cò'½ôàü‘ï ƒEû}àSZÐÞ@JøU{÷ãáŒ‹ÉÌ~ŸK×Õ/åBË>r**Ô¸ &\Q%| ü`	>'Bv¾h«è\¥?nÿÖ›<Æêëñ…pv?jIð„!Æömýz™~z>”J«„™xœ•ËNÃ0E÷þŠÙ£V~$±]UÄØõ&ãqHœ*vÊ×ãÂŽìFWs®î)+3X«úàµóF{É5©ÎZ´.H‡Î*|ìH\påT 
Ö˜Æ!kò¦:6Ú‘ÁVõ§ÞÙ¶kµÀ­Ë
/nž9eNp|ß¿}_ç¼¥óž–ùTë:×I£$ÜI-¥¨é<–Â+œ
TðÄõ™^&x­£™”tû‰ùwÑÍD¶¯E¾‰ÇàsI áÌù‚ÄÆPMÆx…a›1ÁÊ°Ÿ.ë˜Š§ñ\Ýã®¿þb ž–ÝoånÌ¿f‹/	ñŸxœ•ÍNÃ0„ï~Š=‚P+ÇIýSUÄzËÛÆ^·Ä‰b©yz¸q‚Ûj4ßhfËB®&¥tíeÀPyô¦Ò¨”WÒªº&ãºÆE23.”
DÙÅà¨é0DGŠ®1¾«½6•iY«‘HªZà¥œ§^¼dx¦”)Áá}ûö}=dó%¶~ï¡ÚYmw¦‘î¤’R°:ö¥Ðm¡[b³?Ó4À‘K²¯¤ÝD¿ƒœ²FëJsã !@ìi0(×™2DîµN‰$)Ïè)±âÈ.ÉZ Ì°bn^ÙóLL·ýJpì¹Ú­mâ„Íã¦»îÿ²S<M›Ÿ¯0÷ÅükœøéÉŒ£”xœ•ÍNÃ0€ïy
ßQ«ü´Ù2Mh‚ƒSŸ ?NZÖ&¨I‘ÆÓ“Â‰#Ë–­ï³]VD@qð†s¯…G&:Î|'¢£5$·”kÍ$rò¡WŒ˜ÑÂõF`…¤dÊy#ÖzæÍõG£ro#z+cZa(ø‰Üb°#¦^ëÖs¶ŒÛñ’õ’ë¬µiyÖïN¥º(§”Ôî2•‚+\q*#<mÙŽp¾™=_n¸FœÛ´†U\qÞI	•%oÉMþvÔ1 ƒ¯æ)Ø¥::(	¦œ7„€¥™S d˜BD×$ïs?ýïxòœšß§«a§¯³Þ2¼`ÌÕq¾µï?Õ_æÚ}aë	xœÁ±Â@ @¢aƒ§FHŽ“øßbþ·-$P…4P³@ÄìÈ Ü½7¿u7OfA<SSQFB¬kJX“kË(Cq”í(“õsÐä…±¢Bâš•­q¨1g#Â(*À,]Ú1¶Ôr‚p^¾çÃE5Üe¶¾<C¹Z¹¦ðz;É8Z¯Ÿýêñù	.õ—xœAO„0…ïýs7v(…n6fÕ›zã”v
¸Ðn õ×[ôäÍÓL&ïË{oÒJ¼‘ä¾VµæÆ8Wõ^Î
”I.¨iÉÉžÝÌJ!æRIªûÆD¬ÚJJÕ¢!góPµâ[Í½dfOc\áe6ûÏ6
p¾–o?Ûe3Ë¶‡¡´q¹Q+]¡VáŽ#ç,_—)%Ê8Mi„Ç}³c¦ûc^®´šË¸ªQ#J¥ à*£ìÁ9 K·4Å >GøŠ`1Á´²¿ƒÃÂÇX7\½/úÏÓò²§Xü¶ËÜÁt‰Þ³º£¬°#Å^ógÏ›¼-g¢¿ô7Ž÷wlšxœ•ËnÛ0E÷üŠÙ§2H=()0Š ÙÅÝù(òJb,‘I¹®¿¾t’.Š¬²šÁ¹g) Ô‰Z ªÓA\£’¦©„B	nZ]Cö=ØY¸D­’|cÙ­èë¶2#ê¦jd¯`:.FUš©-Í>Ð1áGGlnÒ3üB¿òÔ}Ô‚w»xŠj¹¶Ó~ýI¢éË¦©KÙÑï9gY]mJt€M3=oQÏ´?÷øtBpXv>LÖ¾,k)©à2[ÙÍ;ë´¦"@_(àìC¢ho a›h´WÆìH¸&8ó¯ÁÆ¸Áü 4ç½?µßvYh Ý‘du°ç”¯{ø¢¼Ó’õŽÝ²Jµl Ì¤OTžCÖÉú™hs6EÆŽvr0…Çbøóø½—±_|¼:îîÃ¢¶H¯p13ö§ÝÛ{ö¿ç/ëî§%›xœÐÍNÄ  à;O1wÓhKÁlÌª7õ¶O0Àt[·…P}zY=yó4“É|™Ÿ’ˆ`…õFjÓIÃÉMjqÔžkÔ£ÞLÊ±+&
¸³Ö«I'zmL7¸A(ú®–ãà¬âÜIÞ1ÜË¼®¸gx¡)ÀáÒ¾ÿdÇŒ[ÞÃ¹uq{ 1h¥ï‡;.9gµº-¥På´”žöìæªí-/”­mLç5ÒHÙ+¯£{ô¾b 7ÊWt”añu÷eú„yß0@"ôhW‚kZBaì´œ+hâ45öóþ?;³çØü^XÝÍœ
}ÔîÕ7S\á­~÷àº]‰þêo¼Kyó‘xœ‘1OÄ0…÷ü
 ÔSšöÒÐÜÖÍMœk¹6­šéúëñÁÄÆdëé}–Ÿ"0)¥+ºÜ¢­rJY%kUT™¶4žªÒŠ
	¼l½3T¶è¼¡VySV¶-¬®òª¬¨®5IU\S7-ð>àáB¤ ‡Ëîó§;FãÎ;;Oïk]ï«RxJJÁêØ§DŒSŸ:xY£í˜noõx¡%Ð°›–ó5Ê(Uj™ÔŒ
t|Oƒ‹€ÁAºÎÁó&ÛÈAÀ‘âŒ–¢ŽìâX¬9ÀÆáîƒ}ð<ÏÄtÓo§ž—¹¢éÏ<!›¼ÏÚëã’‰×)û½s7¦IôÅî†Øa;š8ñÑæ²ÞDéoo¼ˆ‘xœ•»nÃ0Ew}÷Ö†$?bAd+ŠE:tÖƒ²Ä’¡0MÒ/ëÞ«È\./ï!	RD„²ªµÁÅBJáÃ……²Y¨R)­TŠ[6©ˆž 2BóºiBÍÇJHU”¥©œÓ¦-¬ª^ÙB3u¢>DxU4¨#lv?ßñ0øVãMÉõ.Ü„õÙšÜ„ñ	DÕÊ¦(x-à§`I"Œð‚õ°9M«½žózÑã!±ûCË¶•2^'”mqŸ‡^\#DœB¤´“±ý½†¯àñøÔß‰sºÚJ¦y…óLÌºN8w™é•ïR‡h„·íó¥.sÆÞ‡Î£Í‚s™¾.ÿñ ö¡&ƒ×xœ•Ž;n„0„{Ÿâï#ŸG«hCÊ<šíÒû¼£Ur²ô¹XÈ*È3Ò'ÍhrB':ÛµºÖÌrî¼WÞÐŠuJHV¡í˜F³V9²Ø„1CUk”J³J¯g“Ôp†Œ+Zk×V´®9#vËÃœàÕæ`WhÎß_i±‡Ãt#e{žoàxõ®tóô L^‹Ý%ÜÑ]d§SÈ<cÈ4Ûê8\Úß<^0EË9õUi§PÐj¯’'»„lÇð‰ðÒ<Bˆàqu),9Ìq…ë¾·³< ¼¿`·>DBN¡è‹¹ëŠöãþçÉ1 jh˜xœ-ÛJÄ0†ïûó-94i‹,®7ê*^é…x‘Ã¤­Û&Kšêë›aàÿøácfJF!M?iÑõL£%ºÓ­$áÆRdVp¤ÍÕdŒzÅ%ç‘,(%õLpcDàœU’j/³—)exÂà<c„ÃwÅn©xüõ®si½*4S| ½‚–BšÚ®s)˜áç2Áý¾¹	{ËãsÄ¥KyüW{­]UYÕæóõýÛÓùñ>Nð¶ìãa¿zS|rûZ0eNB½ìgk·ÕäÒïÛ%pÛm¢oþ ÀU¿“xœeÏNÃ0Æï}
¿ SÖôO"MhP8 í‡ÔvÛ°.­Ò„íñÉ$HœüÉþ}ö'Ï¤”–R¥!D)jª¹Eb$PUEQÕªæœ»l6ž] *4JV….W$Ö\q¥¤Øås^'[]fb&Üu°³ì`ó•äjLr{"\át¼†u©s%ÓW¢"KÝ£=<±ÜÆØÚKÝØ;W“ï­…VµNÖ*Y³—·ç{hvŸð~×À~Œ½uÐ¤Æ¼Îd/Ù,qž' Kãb]1ZëˆÏpRXÏÁ[þ¾ŒÂÀ ÎM»©‡½éùßŠôšå)`Lä|! ³öpŒ”xœ•PÍnÂ0¾ç)|ßŠZÚ´Í„&Ä¤]&¸ qØÍIÝ&Ð&UšÂx³Ý÷bh<À|ðÏçï³lO(E©
žÑRTªj„Œ.­À‚‹¶lËBaVÙ²=Ù e-%ÏJA\æç'‘¦9¦•XW5U"g8í<l1œ`süùö½±¬†;²GwÖ—F-”^!ª—õ²®²žÒh,¢ƒ	<|	6ó¤4¬Nò×'ò–ú…óÝŸ´5/!IË(eôÆÍ¨žÐÎãÆBÐŸ»=ŒýÜËØ›FÛQgòÒMnÆEšIw²ž´à	”ý£ÿÓ×˜À°7àr[ð¦‘¤ñlâå®…Ýa¦Ibmó¨Tðý‚±wóá:º)æû8‚šÄµm"¯/ÿøû 0”“’ xœ•PËN1¼ïWøŽºÚWU¨-'„èŠ7'qÚ´ÛÍ*ñåË¸óc¤­7|±f¬±gÌZjU+¬D¥uÕÈZ45"*[¢JËšpZ¡TÙ€z†FM)e‹V–¦ª•ÖJ«uÙ ¤Òº…$#3yë<";Œ°Ü}}†Îõ˜ÎL®vþLÌßŒÎµ?ÜB)ÚJ\UÛÂU‘*KìÁ1S€r¼…åõf{uêó=…žºÜ‡Í´,“B&i¶0a×aÄ|j.ù·ÉÓËjwi7öÖÄÒÎ:÷&Etö+<PPd„ÈaÔ<Ê²ç!1d€·tÙxÊäíøž s‘=(„Îóå¼£'S]ô€Æ$=½3õÑùâ8>p¯Ý¦'3ñÖNÔñæ¯û«\|u)ÜÓ)Fú^pÎøWö{­Ê•xœ=ËÍjÃ0à»Ÿbï%f­Ë‚P’\KŸ!¬¤Um,EE–Súöu{èif¾V™!8òbB”‰J°Ñd„‹bˆ¥“š'4ñ˜m÷I•½1z!ø‘lddçHF©C8¡<þÚ(îhos©pM¼n¼À;Õò„3ýÕïœó%Ó’úº¿Â ­ÐÆ*4ðrxì|Éyi+¼ñÒf¸í›Ÿá¼ºß¼¬\œúR?þé8Y8áxÐîšRù„'¥¡Dð­¦{*Ûvo¹ôÝ¯œK“xœP=OÃ0Ýó+nGâÄv¡R–JÀ›Ÿ·‰]9¥ü2vþvÕ
‰	/wïÝ{÷aï!ï(¯IÉ‘óš*RPUyÁdYä-*†UÍPˆä ¥ª$©)æ,”ëªœfAJ°*»¢&oEV”œ&bñƒu°f†­§]Í`:\àú(»´³ÓVç¬¤%Ëá&/	ì¤½G¨ý ›eîhömŒë=:ƒcj]µÖYNa•ñ`Mî¥„£pF›´c=ˆq„Okº°@F={÷83„ËÀaÌßQ¦Iò: <\„oÑõÕÖŒ'˜—ÃÁ:ä1Ä	V€I|èi™"`„\‡V/º7(WV©U{ºýßoü5=¯Å›Ý÷—ãÈf:3i»³gâ×ùà˜õ•$xœ•QKOã0¾ûWÌ}IÖq¤AâqbYXDwÇ·¦‰]Ùˆ¿“v‰#'Ïã{ÌŒsD!•i:-¯TÇÑrÍëJ4vr5ðµ©:ÓÔ_³ƒŠè3-+»â—µÕ­d«ÅÊêÁˆNq)p¨[¦æ¼úŒoè¡ÇÙoõÃ¿Éu“tÅ×åˆx™Ô”¨Wê0]@Uw¢^‰V¶ðƒä9£êärÆwèò®ç¤w°ÙË{¹Çèq,CÜþ§J)¼!*»2x|¯&L¥F—2,¢Êþ˜>äuS0Î:­²£–ZèŒYTyŽxJÁÒJ·?ÿÀÍ?‰3<Æ`ÝˆLG‚"øDžÍæ„Ÿf‰ÎÐ	É#óoIk “ÒhT§ÓRb¬? †sxx¹G(àùñ4ÚÃç
ÏL ¸à%oÊª&Ð“:ªÒ´½Ûz4E°¶>Î¿w}vŠÓ¯‘ÂÂ¾ÕœàúD›}ùzŒ¾rþÐJ»¯ç
yxœ-Ë1‚@@Ñ©<ÅÜ@fg™…ÄŽŠÊÂšb–M,@³.…Ç ÆÒ;x	î%…ÝO^þZ¬û>'UPgKBÄ­cQq¹lL hE’XÕ5‘åÃ]’Nˆ”ËÙJiÉcÝÃŒÕÖ7è9³óK*^>mÕ…í¼Æ'tÇ3´·q”)ÀE3Éœæ!ÏIaø“„ áõÞ}· 3K’xœŽAnÄ ï~Å| 3imrL.ùA4À°f×6‹sÈëƒsj©¥ªîZ˜AZ=ùÈÞ=!òätˆVËHÞgÐz5F$eº
oœ&çDÉfÀ ©HÂ…RbŒ‚äh;:êœ¼Záã7†ÝÏ¼¦¼ôÇ6÷ŽW´Œ’FZx£ÏëšjåŸœêïÇÓÏpy¸3¯./}.·´áduC±¡ÝWáŸódsìiiŠXò
y¯iM¿i»ASçïÂp„šáÙº…GgÙýIU*xœKnÃ Eç¬âm ƒUi•IÚqÀçÓÄ`aœAW_2ºGW:÷ö†ÂRÎ¥	‰	¥çÈ­ð)xé,S4!m,Ù\ÃÒÁhÏC¢<E¡¼aIÏTêh¬¤3*i™áŒyâŽ¾Ô_Ù¸ärƒÓïÀ)<¯¸ú‡ûÃ)Ôõ˜2ÖIµ€7:SJF»æÞ±Á7æ¾Àç±‡NwÿÊó[ÁÇTÛí¥Z.­¯CÕC%1Â~l[mÒø¿ü\!ºî`AÇâÛžk9‘£¤LæxœEËNÃ0E÷þŠùF~$v,UUAÝðPÙû1NLÒ8rø}›jsuFgnÉˆ`„õÌúÀx^)Æ‚á(™vVtœR£™±\K²šŒKÅUpÌ²UdÐ¡¾R1#°3Js/œA³—1exÆà5âÇ¯›¹ÆówK·°N3MkkÚQJ*½ÅR0ÃÆ2Âã¾¹Ž“ýÛç	ó‚s“òð¯òVË¾ÕU•U%—÷Ï«_àºzS>Þ” Plûº¦\àr}‚z10¢ñµâóÓ-xðýÀVòîÊf¹S7¢›â2Àœ†èÈ/¿˜bË‘xœËNÄ0E÷ù
ïa*×Mú!4b	K¾ iœ6L›Œš_O(bÏÊö‘Ï•nÞ˜¡¨qJYÝ×†‰{Ç;9ªÆIT¦AjÉh”¸éC†¶£Ú¹©kd­I¶Ý`[T¨I9‡açšZb/ôžç¸ÁË¢÷Ïx¸VoÇvIzM{˜ª1®P«d±á	Qºúœ¹èìóO{çb›Ÿy¹òx©â6ý©4Á	Û¢
Ç¼œÁùX}J>L ­Ý¢âu7%òÌâ”î!Ä_ð®—Á‡ãøŠ¡¼Ün,yU‘ýØž¢s'óyþO/ñôVoÑ™xœI
Â@E÷}ŠÚ‹¡«Ç´ˆˆ[—ž ‡*$±E½½ñ‚Ë÷áýW"0­o¥DëlPšB*Ö{å¬–™I»²˜ãBcÆäÙû”*˜SÌÅ“c¶hcPÉ'F-â£vÓgêk§Ç=w°¿}¡I_8>Knò4 ×¨A#•†RŠuúZé/Ypÿ‚!Žs¼Œq !.ýu¤²˜·é½û}*>¹áUèžxœÌ1nÃ0@Ñ]§àˆQdÙAQY;æIÙBjÉ•¡·/z‚ ™þô~oª ¬UÄÇÙÏžc@7'Ë6Š&,aâ˜|4;5-4 °(z’8’qdJzañnr6YOT=ûZ|kî+Üž¯ðñˆÿýzh+úsªmùôóù‚q‚Ák×mË½ëÔlù8rY`£²Ó¢Ð+4Ý«1÷¼•¡¦4Äßë«»ùzt[K‘xœÁNÄ E÷|ÅÛ¹š	´…ÆãÖ¥_ ¼Ç”Lõ&úõÖ¸51qu7çœä6&y-J­œ3d5:òÖ”Ã½ÑzÐÆÑOÅî˜r«¢Wf”ÆD§fk	£žÈÌGÂ¸`&={9úHÂõ¶†Jmç^Ã7ÿ½O7âLë¹ðõ”¶Ã8©£'9K)BÙ¶ÔýCL{án]á³dª"ä½µòNÌ	I¤èúÚ øMhý˜0ßµƒyëTêN!Å ÷Í‹©N{+\ÏB¼¦k&<•Oþãþ¯âZ–}!˜xœ;nÃ0{žb/ cù#Ü¦ô	DîÒ’e“Eñéãœ @š7ÕÌëFéGžÍD”Sô'ïÑÊ$#=F=Ò(žSãÒ!!fŽÑfm‚2dT$§dPY{ë*¥‘$¦½ÏµÁ/}†ó¾¥NküåçÊ­ðýPÛõ¤JD`x¡HõñXzç¨âU6Xhxïm«êÞŸ{â²\ÓPsâ÷ñ¯®ø°ãV%”xœŽAnÃ E÷œb.à
ÃŒªª¢l»ì	<Ä(	Ž0QÛœ>î	*uõÿ_<½ß›´V#ûÄ,P¼§àËŽgJ9Æ1ƒ^Ýb“ÚpòÞŽ“çàH„ÑOûŠ!éÄd=„9Î*Þû²6øÒ8Þ·´ÀÛ™óp–Våò²¶Ó;ŒŒµÁhƒvZ«´^¯¥wùªrù†[+ûÍ¼«uƒ2CÝ”ªòu)UööYNUæaÍyàŸ×¿ê	V#ZÐžxœŽKnÂ0 ÷>Å»@?±óŒBl»ì	ìçgbrœªôô¥'¨ÄjV3šÞ˜œ#é´OŠ¬7*6cÈŒˆÉDãÉ3‰Gh\;[b¥FýF…crmdš,:—|rZRb¶>/>¸ôÎÛJ3®ñ§+·Ê·ÝÒ.GPÖkc¼Dƒœ¤´Üï¥w~C¹|ÃO]Ö
%½vK~ÂW¸m¼
ñY.•Ó°ä<Äçþ¿ºøï¾YÜ˜xœŽ1NÄ0 {¿b?´Ž}‰!„h)yÁfw}‰îb#ŸSÀë9$z¨¦šÑôfÉLˆDTÉ§1Ë2ž™5±%dÕ˜=ºnV:ˆÏ’)Ì6ëcöyÊBä<1[Š>±ã£¯µÁ›m}…×ã&+<]–¾\¬»>Ôv~¢1x¢‰`ÀÑIÝ÷­wû§:FJ§_ÕÝoá«Ü@«ûý–ûV‹sïÛ¹˜5çaù|ü«ë¾XXFxœMjÃ0F÷:Å\Àa4’õSJ)ÝvÙh¬Ql’XF–éé›@÷íêƒï}½‰@`3¦LÌV»È„“KÉ3
¬çÀŽ‘¼ÚR“µC´1c’äjã2ÚTtá((%[K~"Ì".«tô¹6ø”¥ÏðqìÓ¯~îûEÚ*×Smç7ÐcÔnhôˆjª·ÛÒ»üK%C6†ñWUû±mµu(ãïºJ†g-­véJ}-çj)ß_þê«`ÈZ{Ÿ¤xœVËnÛFÝó+.²©„²ÞŠ„¢ˆíÄ­+"A\ÅsIN4œaæ!YÙuÙeÿ¦ÔþGï”L9‹õÂ’¨{îÜÇ9gä"L&ÉçÃÉ6žÌæÓé,›O†ÃÑôcÃy6Ip:›ŒYT1ƒÊÁ8é'³ÑpÀX2'Èq4˜Î‘õ³Ùx>äÏÆ}ú‚O‡ó®Ð^£p\z›ðÃ&	¯Ï7hÊž6ù0˜Ì‡£a8AÜŸõûQªËR8‡ß&-42(‘Y„í 7FÑ{üÎ °D{NƒPÎhîS„’}¤Ò|Å™C™Ñ%(ÜÁú­}
VƒÒ;°ˆ¥¹Öœ(1¢Žåô(„¶'õ`EM:©sHPê]/Š.8+á•ç9ÂÙàûEõßµ¸‡·ËwËÕUïj¹z	‰p%³›(º4Lq­à-ó•¦jÏ†GÌ/u}üü‚säÀq+¨ô›T0¿z3÷ŸÂ]óB9èÉtÜo¡WÚL	ïÐ *šPpýXêÄ–9A‡Â:möQtU0á˜Ú3xíå†%º…¨m‰È¨ZN%$ífbTnO"˜¤ ãÜ@ÆJ!÷aêT‡Î•øŒ µ®¢è+iæ˜Ê»ó¡)¬R&ñZú{°>	L Æ,aSðBœBB=¬²†ÖšÑ)Îi)õõí]Ü‡³Ñ16Õa÷2T.©g`&÷e ³°ýä…¡QÑx˜s,-beÏ9¶ïàP¼,+·ï¤Šo²ÐB§Nu ë5¹ÚD 3P¡óŠÑZ/Ì2Û@%Qt…¦ÞÍSØ£«Ó†ÙB*¡ˆ!„Ê˜´a}š¢µ=XST§ÃCY¥§	‚­0™ wAPÌAà®ƒÁ	¨é! {íÐ^’‰îíªŠ·ŒX½+°.õt4Èã9-þ¦¬ŒÞ" 14ŽNËéÈúlr\Ñš´uÐo]gbô†NJ¼<,íÃâ±Áh“:ÏÁS©Â	&‰p¶Lz<4Ð‰<N‘Péµ^
±öëG²dÆÑh~BrœAg,1"µØá°f¹R´Ìß9JV¿8—äÖ†³¾2ÝÀÙ´KÓ…AG—çq\2—aº
Ìx\·€ç=‹&œ² oŒyÈ9Z0×é¢‹OŽ¤Ç,âÎÿªªQDaK4¢'ßŠûTãH†øˆÁUPÂÏëåmí{$N¨ˆYäïèóþ‘­@0çð=\]Ð+•Fý´‘—µÿŸñ—>?¡Z°m‹y¨²qL‘‘RˆVÄø”ä¥ËZo'†vOÍ—üÁX¶a Zõ:EuÀÐ¿ôQ´r¸%¾¯Ð«œ|LK¸E|lÃ½4¡²²‚cë í¦%§ŒÍz ©6´ÄØ¨ªÀ!ƒ±AÆÃ$œ¨[
B²dM –}¸ Æ¼YEÑZo¼ÒFÀÍsòóî`—7oÖ‡I±¨›º½¦Ã©(’“>U½ÙèÂûî’×¦›«í'‘šÔÐª¥6òPo¨îhœt¥{¸Ô‡RW E^8ú´Ïxð¸MãU\·Öœ1º»øc`}w}"R5è4õ†êÿ à®xtkÕ9jûhFÑøn¬á£ƒ÷QtWh_x·Â<Žv(ˆ'ôS ¦£
é_n/ xRÑÆ†“žDÑ?ÿñïŸuòk‰e"Ùgü­vº)‚z¸Þ)©iïm²CðjyñnÝD–áç‡-‰th¦‰"WÈceq²_|íçXôfOSn›xœ%ÎËjÃ0…á½Ÿb^ FR-Y†B
ÝtÓ]×£Ñ¸i$3÷òöu›Õ~8*Ì0C¶RvLt1æ‘Ð›ì²Å)¢Ëaˆ£º…«Â4ï8§Œ~FŠý`'r4zçÀ”ÌœLîpÓ¥	œkn^q[›0Òúõ§¯L=µë¬ŸltÖÆÓíz-ª,ðÂE8o7ZàpI{º°Tþè›¼ÿ§Îyg¬ÙÓ°§ÝSaRÎ ü­Ð6]7…Ráù´|¢–ýÕRnÚä§ûH1TÎœ xœ•Akƒ@…ïû+æ^"ëêF!„ÚChMé}Ü×%ê†uØ__)”^J/3|7oàO)/PBjžI,²<$¥äJ¯×¥Â\T¤…¢T°3zêä"Ïy¢)AQÄe¡u,Ö¥ L
â‰ZS‘Äšájçá¡F°›CsBßYØªo-:Ý´ý¨U¤\»ƒXæ™ä‰ÌRXñŒs6«­<È†î‡^Õ°=-•ü<.â‚<–p7/ÎXwiiØ4nÔÚC…­m&<)g:ûIÐ8wfì½¶ýâ™Gi®&=›4¶½ròÓì5pFC×4êû[ kêàåã™^A¹®²fð¤ûkzÄØÑšŽôÊUÕªœ6ÿí…½ÑÅÒ8,ÇG4ž¼mKò¶ýŒ{sÃ¨¥Ýïg6Ç¾ ®R‘xœ5ŽÁJÄ0@ïùŠù ­“6“4°ÈºxAñâ-ÍLmY·)ÙTßHñôàÁƒW²XtHD$ÛQ0Ä=;Gq]Kq olÇN­!ËRÀp@¯ö.Zï0²FËÑÚÞ;rBÜ†^›Q…­L)Ã)‡…Ó¯a[S8»hÖ]861]îA“×½×¾#¸EBTÕ^æR$Ã³Ìe‚ÓvÎÃgÉ‹|5)þ§F›¶¦¶¦ê}åP„ï˜…å{ŽOWëÓÛ‹1x;êN5Ö ú…QÏ™xœŽ]jÄ …ß]…ï%ão4†¡”¾¶o]šëD&1ÁhgºûšÊß…óqJÀÌú!Ùâ…Iq/(å>É™ÔÒ 5Œ«Þ¡ÝfH)¹1ÚH6p¯•5hmU8ÑÑ ˜	²w­eÞ2þ€Xfü^?ãëý„‹;áí1ù‹ßÖWÌzÓÊT(_¨¡µïK•QˆO§Î—¼à}{4Ëžc*¡Ï˜î#žKÙ‘[³UwZÈS}vé{ržÎ/‘Äã¨p-zôo	¦n¡s?ãß£Ð/Œ‘l—xœŽ;Â0{ŸÂZ×F!ZJN`o6$‚Ä‘q
nœ ‰ê£½V™eŠ¤}È†2z´:Ø¡Ï}Â²V&EÐJ£%±¦ÊK“ì Øø¡ PÙì½¦Á[ HŽ£ŠÑÇŽDÚÚXª¼ðÔFyÞž4ÊÃ=÷tçºðcWêí(•‹*h`d ¨ÌóÔÿ¡ŠmíScÙÚæÏÙÔ¦²qn÷]†.¿ö¿²âº‰U’xœÌ9nÃ0@Ñž§àdÌ‰nSæ\f$ÁÚ@QEnoøRýêýV™µéKBD±nˆB‰3Á
’5Î*¹@uÄÊ[ÓHÁ˜h(Iàr<ô>£cï]±ˆH"x«âÕ¦½êožÛ¤×™'}¦w¿ž\7^n{?5º€z€ ;èTÞ×unÿAÕ:ŸYç…ãv§R?ó¸qév‘.ý~üõS/ÂS+•xœŽAnÃ  ï¼b?à
0ÄKUUU¯9öË²Ø(1D„HM_å‘zšÓhft˜uÀÄ>XÈ„¤M4mZXZ’™9ñA]¨KÀ†˜"¯³Ÿg‹(ŽcŽŽŒÏÂ‚ì‚hE·±µG)cƒïÛ•7ø8Å'¿NÒ«œßZ_?Áø`ÐØ`LzÑZqÛ÷2†üCU¹üÂ_«;UZe×kIÐåÒú(uUê§¬UÒÔržâýýUD= u÷\¿™xœŽKjÄ0D÷:E_ÀAŸ‘d…B¶Yæ-w÷XŒ-&!·ÏÌ	¡ŠW£3ƒµ¤µbE6n¶ž˜R³9é€îLÔYÔë ÆÙøì8;d“D0ó’Ä9o½¡H>E
¨ð6ÖÖáƒËXáýv]Vx¹äG¿]¸WÞžZ?¿‚ñÉÄtÏ“ŽZ«¥í{ƒÿ1U¸mí*î|=pa(í‹{/Ä ÷3x\I©Ïr®LS™òÏó_"õ¡ï]ÃŸxœÌ9nÃ0@Ñž§˜( ).Ã‚´)s.3a[èQ‘Û'>W¯ú_$ÆdSfK,!¡)*2º<g½h¶ÕWê'Ú3ÛbÕµu.ºjr0sñÑ/ŽüŠóV¥C¶>à‹šlðyÜËçK~øq¡±Óõ­õŒGgïÑÂ¤£ÖªôÛ­‰Ð©ZI€)É1è•$µë?¥×¶¯J}·u§:uæ)ÿžžíÕ	»Y·—xœÍAnÃ Fá=§˜¸TQTu›eO0f~l+‰±0^ôöiOP©«·zúZ(Åuïz/ÁÉ4;­g£Ù:ç’²Ú¹bk4„Ì¢Ga1ÙG+žC§‚X1“OŠÏ¶”J7¬m¡ÏóH]îÓo?î¨o¥ÎW2.šqÐc¨Ó^k•Êó¹¶†¬êhuÝf¤" üÃç¾—Ú ”Áí¬8”úZçÒ•œ»éûý/F½ >$]­œxœŒKŠÃ0÷:E_ Av·ìÂ0Ì6§ZÏâHƒ¬lrúñ@Õ£(êµ
P‚Ä¨‘ýbŠ“$'Þsàñ2aˆÌÚCàÍo¨È.¥ï­£jru"î@ag‡t\ùÉ„g[J¥Ö¶ÐÏs×…®÷ø¿ßwÔŒí\êüEó{ïºžNv´Öhy<ÖÖðY:°í™ß©yåt	yF¢WÉ mÝme6Ý³IY™xœAÂ  ï¼‚hJaIŒ1^}Å‹mÚÒ†Ò‹¯·~ÁÓd“i•Yêì»L&èg€¬æ)êzDc}ää‘ÅF•K“>¨”Á`N¬1)¥Á$§uÏ½CÀè‰Ù²QÐÑ†µÊmÏcƒ¼MáÇÇÄµð|]ëû.UïU‡Ö+/à D\—elÿHÅ2–sg¦rl»Ì§|Ê.¾2{Gy›xœÍ;N1FáÞ«¸˜ÈÆãB¥¥d~ü73JbGOÁî=T§út¦ „Á»Örád´¯kÌk´‘ošYCaNM=² Ob˜è“³Ö¸³‡†°ZÏºÂ¸P»¢“ÊÇÜ†Ð;ö¹Ñùø¬½\ËOß®ŽÛiÈå•ŒKÆ†¤Ÿ"-:h­ê¸ß÷9ñO½vþ—*Á<¤ÓÜ@uˆ N‚H4::qÞo‡@©ýÒÑ–Á¼”¯ç¿Vê D^ùžxœŽANÃ0E÷>Å\ hL:vPU±eÉ*ÏxœX¥Nä:BÜ¾Abú‹÷7ïë÷¦
ž­<#R$ÖèÙ¡'ñ’C@N˜¼E„3©YcÓÚA"[e´œÄ{l`B‹ä.îå€ÎE9š¸õyið®¥Ïð¶Ýe†×+ÿð|ÕVõóiiÓ	,;º0:‚=¢‘åv+½ë?Uïh´¿ªÙÖ»Â¤ýRï%AÞTý‚¸c>ÊT5KÎ¿üµnåIYˆŸxœÌ9Â0@ÑÞ§ð‚¼e„¢¥äöx&‰BâÈq
8=p$ªWý_2‘äˆÑ±1¾ë<YÆ ÑÔ<5`¸Œ­kÄê3-E"8mƒgç¬ŽMM¾EkãGãAAÀˆ¨8
¿—!ey£±òºo8ÈÓ¾^&Ê=)÷g©kÐÖtÆjY©V)ižÇRèTdZS.ò•Ú„¸ýB±JÌUxíÄ/V–xœÌMÂ @á=§à5Ã0Æ·.=CÛÔ‚¡t¡§7žÀÄÕ[}¯7".Á™	RYû S6VF$°h$ ÏN³ghT:·¨Ñ:-tLÚ[N¢ËH)CÉ)´‚õ,ì}ªßhî¿î[œøiÁo/µBCmã™ã…)¬ã8 ëºÎ½Ó”½ËÆØ}¥¡æ<àëøëÂ>P–xœÌ1Â0@Ñ=§ÈŠœ75B±2r‚¦vhmP8=âHLz¿Uë;òÔddÔûØ±ëã6¯­¶žH#šG_t©6mDBD çd†¶õaàÔ‹ Š(‘ R0ý³Ž¹Ø³Nu´§ç:Œv‹ßoZ½or¹¬#vÙÙ€ò<OµêÔ¼—Õ˜Ët]TšœR_»_óØ®Oç”xœŽ;nÃ0D{žb/ ƒË%­eAZ—9?KK±MUäö±ôI5Åà½™ÑE€ÇBR*Ì‚ž£µA³µ±°NBhƒqèHÝC—:Àp$2ô(çà™ÑqñZ'ŸÉÙc°s´hœ
ûXZ‡“¬c}K¼^â3ß/Ò«\­Ÿß Gmi6&=k­R»ÝÖ1ä¿¨Gç~Qr†¯­Uhû¸ïÊãÀuÝ<¥¡æM©Ïõ\%O­”)~¿üµ¡~ ðYÛœxœŽKnÄ D÷œ¢ À£(Š²Í2'h ý‘1X€gäÛ‡9A¤¬J*éÕ«’ˆ`Dj’½ê9énì4G‹iÑ‹Ö9A­ã­’˜(Ð\
A½œQHSËÛœ”p\j;§áY–˜à›Ö²À×™íï›yåçF)¿Å4€èGQŠ+h¸âœÙ¸ïk)ô”ù5—&Ÿ&_ùuè@[àU2ë(Ü)×’2`pp`Y2<«%ž”LÌôVÀÓŒö‚ðØ©±~…g<½cnÍ‡ÇëÆØÏ:rMœ¦Æ\÷¿¾²_u‡”xœÌMnÂ0@á½OáåŸ‰B¨Û.{=C"ˆƒŒ¡ÊíÛœ RWoõ½Þ˜µó.™ %
à˜	ÁC[ŒLÉÛ$}õHk×¢K˜á—G¤ÑóHbÈçBÂ¨Ò«OkÓŸ<÷I¼žyÒ§í½Ü¸U¾Öv=kã£ˆV€ *¯Ë2÷Îÿ ê¹Õ¬¿wuŸ©¾Vêk¾V.Ã*2Ðvüë©~ ×’Uu”xœŒKŽÂ0÷>E_ ÈŽéBˆ-Ë9?ÝÄ"$‘ãHpû ÍæÕ¢T¯U"QR@“=Úm¦Àh½‰””Áìû!9—5‹5Tš„à|J1bïlÏh´Ü€}ŸX‘a©ß–‰°·q©p¥ÒF¸ì[áxžïTgšK½@YTRK/tï•"-Giþ‘
.Ï}…©lÖZæ¶	ñ[n3ånaîâëçÛ§øÙ)V žxœÌKjÃ0@Ñ¹Vñ6àðô—J	!Ó»}žláÆ2²LèîKVPèèŽÎ”“XŒŒN(H`°N¥¢¥2Esž¹	”‚&b{è´Ù—˜0ªlyI»T0™¨t°ÅF'•7,œciTÇ÷óH|®ñÝÛJ}£ïKëó¸öjïaB‹ÈR{>ëôÊÎƒàíÛ¯¥:öŽÑëÎØW7ÊS+eŠ?ÝÙ/\ŠYxxœŽAjÃ0E÷:Å N%+²=¡”Òm—=€YãXÄ–‚<†¦§¯³i—…®><xŸ'…¼£ñ„Ü™fÀ¶s¾Öhšº¥–nÑÙÚ:‡]ƒêF…“€fºÁ6¦ö¾#nÂ	-¶¨µße§q$´Ö*ÚdÊÞ9ÊoÛ:Lð|õ}½rI<s¹¼€qh´Á-TºÕZyY¢ÿCÝÝ´æ90<nr‚qKƒÄ+µ­?ÔÔ]/¹yó3`‰éi¡ÏP
@¥Ð½_ãÿÊPH¦½H&Jªpà1&†e›%Þf‰¯G¥>â%q¨ò8Vþ~þ«_}yå|–xœAKÄ0„ïùïæewIÚí&ñêMý/ÉK»M–äUÙoñ¬000Ã3\‰@û@R÷Ê:sŽ}<E­<©`Ž±Ó^uˆÑâ‚•2ƒ&eœuzè¢ö×ÛÎ›è•ÁÐ+´Ô“”Þ ¸òT*¼Pâ	ž×æ'x˜ÝÍŸfª™Î‡RÇGPƒ•ZÛ£´°—ZJáË²$fú'j†Îü¢â•–òIàK ëåœ<r*yk#8'W±^…xŸRƒM˜¡ä±¤<ÅX*ïÀ­kcXp¾å?s —/Àâ»lm+ÅR*A¥±Rk€©q;ñ–ÆLa_bÜ»ëý_/Ä7è~µ”xœËÁÂ0 À¦È „´µ-!„ø2Eì8´*mQ ¶‡JÀë^W‹ªê49á]Æ(ÀH8PƒÉ“x)cjvdn±è\-*P+ž¾!ÆM‡,YÀµ]fNì9`Ähâ£öK±gjoO»ôv?òêqÔ2ëu»”ËÁú– RhíÆsF–ijÕ+¿jîïYìk]×çç¤æ0FJ‘xœÌMnÃ Eá9«`ŽÆ`¨ª*Ê4Ã¬€÷¸þ‘c;"8Rwßt•::£ïÔh;'®gñ¦kY(Xï¬í³“ ô²e¯©`«š‡Öjaº7@´]ˆLp9DŠl‰u&p‚JGö¢¯˜ë¤/ÇS&ý¹ðoÏÊ†ûi/ã—6.’ÁùV7Ô)Ù×u®ÿ êxäT¡ï3o¯JÝæqCnöahøûã¯¡úØ~T|‘xœŒ1nÃ0EwŸB[¦”-J$PEÖ¢‡(Ê6Ë…¢äüu†^ ËË¯7UÃ±dK¦Ä`=O Þ¹Tl ñš™3tˆ~ø‰Mk7	aä@˜3…ˆ6;`KE¸è””Æ¿?ò¤NüÑ	§PB°ÉIrJ=ñÑ—½™/]ûb.»,æýš^ü¼j«z{ÛÛüa,%&Øœ! ²oÛÚ»þC¾µÍjR‹õPN[¼™“Ykß_£s‹}Ýëù¶¦úÜtøAË\¬•xœ‹AÂ  ï}°Y
KbŒñê+¶°´Mm1Hÿoý‚—™ËL«"Š™XØ’ 5H	Œ„“É£„ÁfÛ½¹ÊÞ”s˜õ9ºˆ­ÉàBb	žô0zŽ9{>Ú\ªzÊÒfõ8>qV×uüù¾JÝåÕ—:Ý”F2Á‚† .àºX¶miMþX»,ÜŽ**I,iÙ§¾ï¾i*D¤™xœŽKJ1 ÷9Å;€=äÿDDÜ¹ÔäóÒ	í$C:Íàíwî¡ V5"D¦­‘A;/,“Ô8“ETTs›˜Ž9)®©T2’«Ø&8¡\LPm˜ŠÆ9!ZãáÔië„@¥ˆ?féÞ°Î/Ç<náÇÏŽ†Ÿ§>Ö'`Êrj¸¢j)%±_.uNüGJ^1ö„à[‚ë¨÷ÛŒ~wB>JÝáÎ­­¶Z¿=ÀÚÁôéWQç‰÷º6LKÏy	_ç¿FÈ7”þdÖ™xœŒAjÃ0 ïzÅ~Àe¥h¥U	%äÚc^`IëØÄ–Š"òû&/ô400Ó›8y$cÉ1eãƒÓÞò‘8¤à²Eõ36)&{Ðì‘ÐNÂÌÙ&­G¤“MŸœó>à¨Æ½ÏµÁ·,}†ó~O3oñÅÓMZ‘õ£¶ëhbƒŽjUªÛ¶ô.ÿHÕåQ¬K,¿›À}[Íû*O¿\‹ä¡NÓŸïÆêÁâUn›7xœR;Ô0îý+¦£¹]e“}"„‚Š!j?&É°YÛØã,ù÷ŒsËQP ]åd<3ßËœ¡µ­3çNïºSÆžún‡]·k±m1—öà°»öNEÐ3ìœkZ§q¿·f8¸Ó¹Ñ­i»þØ_Ž'{n—Scº½Ò…Çàð±d;Â»«©ç‡+&Ó6¤á=ìç¶9îÏÇ6Í¹i”·1ã+FÕ7Oý1‘gòƒRŸgLdNÅ2C=áäÀŽÚ	JèàV&¦8!ÄI[ÌÀJtšQgp”¥¾lá@OøùVÇû	-SðÀc
eAChY4 Ç¤'ˆ%ÅQóCZ¥O3XíÁà3Q'¿®äá®—÷zŠ×Bâ¼ÞÍ:Q(Y%´!¹¼RØØ‰„'ÂóV©ï#	xm…capAäøÀ é‰Ôi›fq´¶Ä„s]ù$”²Ê4ˆD‚,¨3IÂãÒî5í]%X%Ð-¦0ãŸUÌËæÅ{- ˆÝ'¤¾=ä`Ðj±PÇÇÃZÉAJ3z'aåˆ¶R‘HÊ°!ŸÕ¨Ý_6Dï*¶Ñ¡/~M"¯+1ôª|¬¸¡¯Ÿ¸Â¨Gìù(üÅ@¶láN¸HzBLD¿I¸:éJœÄ¢U§EâWñÝ&ôýÆ,oÿ÷tÕoÃ˜6è”xœŽKn!÷œ¢/0Ã/Š"ËÛìœ4MãAÆ`a¼ÈícŸ RVoUUofpì×Í[«1Å`&“¥Üäf%«DÁ‘\U+‹n”Q6›²WÖ£e¥¶lØÅ˜µÑd=¡óä•ø˜{ðÅeîp|Üi‡K|íáÂ£q}ëãüùôyœvÁÂ"½”‚úõZæä âÄ·ŠÄ€D%=ßb…ZCâÊ³ôvâ»œ§¥ç¼ÄŸ÷¿âø[	xœAnÃ D÷œâ_À6Æªªšn»¬z€1ŠÆ­rû:'¨ÔÕ,Þ¼™VšTdçØèA*š•t£—ÊB3ô`kï»Q|qEnd½Do£RC4“6xhÓƒG[y@ïm.•Þ‘ÚLoûægz¾¹G¾ÞP3–S©×êµíÏf˜ÎuÒJ)|Y×Ôþ¡ŠÏ´$—¿WPH¾•z§˜–cnâ’,h \~hÏû†ðÀ8àGºf„®ÄØ¹ûÓ_çâ¨fxœÌ=nÃ0@á]§àˆ‘õÃ¢(š®{J¢l!Ž](ÌÛ=ANoúž˜Sp%’u-ûÀÛ9‰'öT}±9JÌ7ÙpFæ9œ±–(h-ÅìjÆ”›4g—XZH†º>¥ë
{Yáõšû~•±Ëv:ÆòèRDò	&›¬5å¸ÝºªüƒšK­°õ<x<¡ïwåmå±ˆóÕ—]êt´6åçË_sóè²XßŸxœŽMOÄ „ïüŠ÷æÅn À–cŒWozðtØâ¶ÐPºqÿ½õãnâéÉ$ÏL¦€Â œRNŠÖ
¥;Ç¥×¶íœoL/äQiáZ¶Ø‚TIsÓs¬Vzð>pX©[/ï;h¡ŽÆÊÞf·:æBÏˆu¤§mõ#ÝŸÝÏ(	Ó!—Ó	mD×#5ÜpÎ|žçX+þQe/˜ó”.3Z
Bü œ(Ä	+co¸) ;ØáJ1Q]?Å]Ïïðõ–R¦TwÚëb=¾ÕŸ™°•=”c¯ñ”049„Æ]ïþºË>*ìtŒ™xœŽMjÃ0„÷:Å»€ƒlÉ‘\J)Ý•.{ýŒb[
ösCn_Úu¡«™ùàã @Û¨Ûè¥êÃÙÙÞ˜.ÂÙÐ)o=”náû>:qs
’–¬Ò©5>#‡¡sˆ)(k”4Þu:à,!ÜÆc]è™GzÛÖ0ÒóÕùzÅR0êry¡¶·­ÚN÷ÔH+¥už33þŠ÷Â¸,ŽA÷²/_3Ž>svåŸ=×Bi—;Ö&L™¸Ò¶â ý2î<ºB)PæUÔ{!~Ü°’+‘Ñ=×“ŸùR›šRãO‰‹oÆá{^˜xœ‹[
Â0 ÿsŠ\@Ù¼º+ˆˆ¿žb“lL©m%Mï¯½‚_ÃLo"ÚÁ'@"‰Ï0Xæ‚h¢2¡q²úp“¥ël¡`0„.»‹+9L)z`rôk- †ï½®M?eìU?ö-U}âÁû$m‘÷ym¯›6Zàõ	@¥užÇÞåUm·ª¾´:?Ì’xœM9nÃ0ìõ
v®d-É\A¤ò»’`‰2(*ÈóCù@f€™fŽZˆ‘FÛˆ£SIr£Ç(S¬ÁÛîáå*(àhdÄ‘Œ‘Á;DÍ)I Æ¨hÿ—fç“Šˆ¤ý‹#Gš-“Å¨ÐcR	½“,¹óg÷">i©³ø88‹×{xúûJ¦õº—éMHƒÒ)m•= @÷m[j¥T»/*‰P|n•Ëæ6s;‹¹ÖÇq†©-žáÚ>†uÉçOŸ¿7žÒÇué~ÞFc xœ»NÄ0 {Åþ@wãWÐ	®¥älïú]#ÇAâï‰ª©f¦7@öL.g	Å„2M$S*"Fû<C¡\Ô{l²wìÐ§‚u)8?j‹™0zkÈ³f¦‰Ñªxö¹6x•¥Ïp;<Ãå‘~x}HÛe}ªíþhºï:h­rÝ¶¥wù¯:z¿ªŠÌ°.iÿØâŽ3m•ÏU”z[î»ðPKÒçó_qõÔîXBšxœ5ËAjÃ0 À»^±¨ÑÊ²eCiBzh1”æ+ï*VÛE‘ ÏorèiN““oéZKˆ0ÔÙ“gí‰Æ¦3ÍHBš‚W?”dÍ Ì&4èÐQ‹r`ÐZlÉø6ÛÞŽÞê^QÉÓ–à•i÷ÂW}?=ÄíV•uª„Ë°éÑÕX/Új­ÆmYbÎ’àCbžàXîã»Ù?=Ì’V¹U[ºþ×Îi|ÔöQÕ[ü…Ïák¸œªÓp9ƒy¡û¬þ 'G šxœN]jÄ |÷^ «1ñ/,¥ôµ}ë	Ô|&IÌbt»íé›=A¡0ÌÀÀü”@[câ(ƒGE=·}ðºã½r*Ê ÚQÛVužÜ\†Th4R€6Xã47’[ïU+tð¾WR+×Á=hâj™÷LßËLßêfz]üS_È	ÖËž§ÚJË•5'hÃ5ç$ìÛ†¥À?¢$âƒÖ„	º`¤w·V _.ŸîDÈ¦e s)·c`l:û«¿œ‹lÅTMºoÀžÔ„G…ƒiaÈ'N	Æf±ñßÃ_ÏÈ/CáoxœŽ»NÃ@DûýŠÛ#[û¼öFQ”PP@™Šòî+6Ä6ò®ù{Ö-ÝÌH3gÊ#Ûë>iÔV—:á\ÂÈáRØš{i;’}ÑçNãƒòÚ‘H„6)BT(ˆ”õ)ù^ØÐ3ÚÊ°¬ðJSÌðNóŽ»nUŸ³§{L÷í§õËta,7
;…ÐðŽsVÓi,%®ðÇ2Àó–ý ÇÏÝ´n7çïàÿÊ(µ´ž¸­ev	a¬Àëy©È›Ûi™±ëx›ch–”÷8üï!ûS_3žxœ]ŽMnÃ …÷œb.`k `CEI¶Ýµ'``£ø§ÂXin_ReÕÕÓ{Ò÷ô•Ì1˜¨Ð‘c«¢Gç{vV¡–ÊTN’XöâÛg^
÷ÆupØ)o´µÁXGýÐ÷’t m‘í`:+ü^Æ5Ã§_â.¾ð‡LÏ<Ý™š-nÃ:Ašú%•4ˆ¢®s*…3|p*#\ö-Œp¸Ñ3O7ÎOíš¯/´Êj]Ñ®¢â#„}+ë\ñ$J!¾ÒuáØ¬ÃÐÐãýŸT-~šÚ—[Zâ‘…W+xœ¥?kÄ0Åw
qkÉá?qG¹vm·nÝlK¹˜KœâØWÚOß„Ð½ÐA=ôÓ{('"@mz’ˆÂøðÒ++„Dé4¶\5¢Q}§kb6QÌ@Ž:ÓèÚk2R(å[Å5
_;a”SD¨L³ÊÌ–<Ì	Þ‡¹ÅÂk(pCùÞçËZŸŽ~žAhÃ…èºšÃï8g«:…œ)Á…<ÀsYü ç›ÛúåF)ÒxœÓuGµ”¢ÕPñvEY¼OTù1œà	v¸SÄ5L@°ôaÜN‡›‡úÝÃ’Œý‡>2ö®‘°šû¾r_§¿¼ý ž­d™xœ]KNÃ0†÷>Å\ ‘Ø‰ƒ*Tºeâ ¶gÜXÍ£Ø(·Ç…Â‚Õ¯éû9¸dk{#uß´}Ë¹ÖbPyç	©uç['ØÕDZ2ÙHë´“QWžSƒõ8³ý :äºS\3³åqðbÜád2%8D{Óã'Ù*…Lµ[çG¥‚–T\qÎÊw9S„g
y„Ó–Ü‡‹½éñBq¡©^ãùŽ6¢×ª ]AÙÛK¤=eš"½o!ÂÅÖ¥fì	Üh–3A^ÁƒKµƒ
~RAj'8Zÿ‹¦?¯»4¥h6•œXü^Ãy!¬Vï+»?üÛ[3Mõ}6ºïÅì9gwç“xœ5;nÃ0D{b/`ƒ&`Ž‹4ér~Va‘4¨Uß>TL1À ow0ÔA	!´B´A]¸ˆÑs®'åE4ÚhŒ›"·ÃÓ5,ÈT´(´Uaœ“c=—^Fã¤Œ;‹Ö³1n§¥6ør%¾àî7¸6øíýiK„çPópe7]NL16ô4'"lð‰‰¸ï[Xàúð‡ßØ
®çÚæt”RvTwtøH¿°áœ{UG©H¤òíÖ!ìÕÜÏ¦8ïýA~R*3P…é˜öâÖµ†Þ1BÆ\ÛëT[ëxœ…Ž;nÃ0D{žb/ c%~DF`¨M—œ€+îJ‚c) (Ø¾}è"uªðf¦dfÀ`Šoû€‚bˆuo½7˜¬çà¢5Ñ!uÕOÌ¼èuDƒŠø4Z‘éYZ‡¦VtÒ‘Ó”œSñ(ó–á3®é	C,¼Ã9Ó‹—;S³/…Oãv{‡ÖDßzg A‹¨jz[Já¼”†cg8_éÅË•óÊß§-Oª®ÓUuUUÃ1,Þ•úZ¦•S³‰4ô|ûÿˆúZ¬RN”xœAÂ  ï¼‚Ô,°@1Æ¯}[K´­¡˜èïÕ˜xšÓÌ´Ê,)ôCT8Ä¼‚ÈÈm2aîsBm“¸ÇÊs“É;—½CGQ‡h½Ñ*heÑ$p½Å>YŠšD|´q©òÄ¥òøX‡Qî®ôåáÊuæÛf©—½T6 x4ÊÉ<€–i*­ñªÈåÉ«ÌŸ­Ñ•¶
q.—™S·äÜÑkû«)ÞÒT¸Ÿ xœ…‘±Nä0†{?Åˆ9±“u ! =]×N‘c³‰½r¼Y-%å½Ä½Çyƒhhp3ÒçùýÏï‰¤.)«7¢á¢“LIM+Vk^ò¦P‚ÕoX#hÁÈNt7Ìè%ïÄFdÂhÆicØ†kÔBWã’+"÷qðÞß^þ½þ…ë'+]®­ëo'œºQ>c®ütE%˜(yÕ”pN¥$ÑÉÆˆ~ Üïg5Àõ¶;ÕÛ-‡cîC’6”ÒMÍÈh¤ä÷ãÏ»‡_R(“ó$CëŒ'¤ÈáÓ–=œ|¤Ó=Ùèû,É®H™¯rc„õ9HWó%tvÁ÷AN­‘vl•ß»¸brÆ¯ð€2´#.8¦Ð+qÉ®íŽçöNÝŠ?Ç/˜åàÝxü$}â¼Ceå«ðÔ€j‹â€iÐ0Òn`Á0[ïà¬ÌvvEÈ£íêÌ“uÇËï6Aþ—4¬»’xœ=ŽMnÃ …÷œb.Š#EQ\/»ëøl”" I{ûR¥êêÓ¼7ŸôZA„à¼	Ê!{Ó"(Å$wè=÷R1áG'Ge¹µF›)˜ZÿŸ8¥LH.,ÊKgyOµ¢F«Éhv"æÞ¶\àÓ$ÿÇbMÃz~¢=ÔØppy?“ž˜ÐLÁ
JIO÷ØøÀØ6x¿W·Áñby¾`IxrY_ª…âcWeWÉì=\ó
7³",sg©1­¯âï€væ¡/£_ËLY6“V¬JÞ¡à#âsøÁÝkË{}%äÅ^´›xœËjÃ0D÷úŠ»/6rlÉ’	%é¢úØ4? Ç•#lYA–[ú÷U(¤Û®f8ÃLNˆà\Ï¤ Î:ªJìl#š–aÛ®…–f‡–õŠ’«J¸dè8R­P5R÷h…ãNÞJ'¬;»ÓZva¼!jË—˜à§m‰ÉÃiÂQ{ÿkê|ƒòsmbx„†	))í8ƒZ)ið9c‚ôùOÛj.°ŸôM¦ç:¦ñŽŠžBEyAÉÛñô~`ùX™Ùp´^ŸÁD‹à—S*Û®«q%ä#üo”»·|Ý2|•ÅÞ+Öª4ú\ÒÚ*:WéïáŸwÉûpyñ™xœ•Mn„0…÷9…÷0d4M»mÕ'È *õöM¥^ +Ë~~zïË‰FìH#ªÎtuÉ¡·®G¡…°†kéÚžH±C%
…J´†sn¬’ÂZ‹jähD×¡”iÚÓÈÔ•—˜`ÊôE&ºÂlŠ|”ÔûiÚFÔÑóTûY´ÚÄý-’ãÐK„—F6+×ÝçL	ÞÉçÞ®Ó,p_õï|®”muLóŸ•#TÍP¬ÌÅ´«|ƒsõÇáÃ‰ªDÊBAÉ>û ¼@)@°iå ,¯ÛŸc“ŸÙ*:WéïÛÿ(Ø‚Ãmô–!xœ•‘Kj1†÷:E-œiô~ì,!ÙÍI]ênÜ-’fÀ·†$Èª ªþÿ«G¯ˆ ¹*8¬—†3I¥Ò<1ç:åy@I­rN“«¯˜;î©ž1£½ç:ñ "ÒH…¦QÔfNI‹Ùëk©pîxÇg¼å%®Xvø5¨/-2j§ñµù£ÚËñ˜²Nqm,‡'ê(%#{l½c…Ÿ¸õ¾ÝZ\áå=<âë;ÖŒûTêòWª„ÒNT)É÷§ørGhÛŒ€)aìR-”}Æ„üHÐW¬[ƒe{‡ÂÜÖ/dÄz†}$·¼ÀƒqY°_½ù„ÆP©µfŠ:íõ,Y¢Âzn-sÒ5Ùü™ï¥¾CGzÛwÈþÀvõèŸûµâý²Ÿ†³æE@/yÂ[£1Òñ±¯‘ÆA“±‚Q:œÏÛ’q>•”Náãùÿ^@~ÝÄ¦V™xœ1OÃ0…wÿŠÛ
‚TIÇNU¡Š…1ÁŽÎö9±ÚÚ‘ãõß“VU‘X`|wï»§{9µ´¶B'Ô¦¬D£%'ÛS)¤Ê	tHÊÕlÀD!C#„p-o§RbƒJrU)ÅJ+½â¢0\iÎð˜û˜àSö^(¦Ž`s¸Èn(ã0,M<<A%T»*¥âJÁK6O>gJðJ>÷ð|M›ÝY,õYl'k~àZrÎ›nË’1‡:y3®aJ>$212ùÓÒO#\`éË‚àjaì£Ç®‡EQÜ¸âÂ- ÙÏVæœdÁÍÿ]Mà3›p‹Žã¼µq
ç´Üì(Úƒ¿%}šœöw÷KÆÞ}7ß*¢s…>­ÿÑ×oâÏŽØ7Á:¡ñ™xœ…±NÄ0D{Åö(vâËNèDKƒ¢Øx×—pIÙ§££¤äoø ørÒQS­4š7Ú™˜Q›ÕJ6†J´ÒÐZ[£”vrmH[g”ÒÖ–bÂÀc‚¢Ru­tMU­RµÄB®–¦\TÂZc½2$pN­ðýõþóñ	›—Çœºq·xhz|ãÜúá¤^¥uY¸(ÖE!uèRâ wÜ¥nçh[Øì›ÓÝî9ŒÜç>ìÎ¨©JYAV¬T<ýe?AäžmÊÈÆÞ#Á)GBæðØv&Î‡!ž½Ý+ƒëÂpXÊÂw-T÷=cd˜üaùÌm¿—z¶ÅqÇ’‡„{vn‰¹t§©e˜'ÂÄgk9F7÷¹ÝndÊ¼sYs¼úo#ñ{mÞ“xœ%ÍAjÃ0…á½N1û’0’¬‘!„ìJz‚îÆšqlÛAVºÈéëÒÕƒ>^-ª 6IÇ¨%dDÙzê“íƒÚÐS@ÍÒÙŽÌ“‹.(	kƒ©ñ>ç(8©×èD²k“KD>dn¿ê°¸}}N,eäå2ñƒßã1¯ólHÉGlÉÃ:D³×y¬Uw¤càúÚò §©ûÛË¤eÑÇq-÷“wM„ÒN|ÎÏ²þ(h)ûë¬ÛÆw5¿åŸD&–xœ%ËËjÃ0…á½ŸböÅA–Æº@¡ÐUûÝ¥‘-lKAVôéëÒÕù9ðµÊeý„R*)B*D”zŒtN{mqÂq<«{PåÜ€ådF´ìIY‰TÔè¢ ËJZÒ;ìèÙ–Ráóë»p¥PåûJý¤‹/û†ÑZ¥1
Þ„¢;ß=µÆ'âÔx~ë:ýí}åšy»”:ÿSc•D½Ð'í>N	/ª9åv>š^gÈ|É­–mãÚ§ é€ãÁ>ÅÄ¡ûWO½›xœUMOÜ0†ïùs§»8ñÚN$„§räÔÛÄžk;µ'TË¯ÇéR.þ~ž™×œ‰`”ÂL­pvÐZKsZºV¤¤:)éäÐõ£°mVÌ°srì”O„½µFÉÖS÷mg{­´1n<§?ŸÜ¡ËãÃ¾û£MË=´ªï¥ƒp#:!šzºxfªyžáq+v†»ó¸ÏgÊ‘Â1å×+jzÙ„®he#çB…ƒ/µÍüº-{¿¾@¦ß›ÏäÀG@f´ó!–[GŸ+Øëbt¥yZV¾ÀÕÁ»«­‚<ød9€Å`ªÑ®®O¤	".TV´TK–-pš&²ìß(\vILVÊÈ>Åp!þ«o¾RkÊ•š0”(›µTÊ^ê«/	ÿµµlu	ÊJÖO¾&ü³ÿ2ÂzÕ~ƒ®vðØ| š©x›xœ-ŽËjÃ0E÷úŠÙ—„‘õt%d›èz$kc[*Š÷óë@W÷pàÀ­…8Jå:•´³Ùyì‘1h2D}ÔÒTJüPáTCm­•{KvÐrDå©ó^ö1D…Î³µ:å_î®{Yãmj´ó|Žyûi¼wÊX©á=¢8ì6×Ê<×	îí'¸.á½·…KâõœË÷êz«:8¡=R‘^Ÿâ:_Þpç_X™Ø'N@	¸”ãNŽ±•§øLÍK–/xœ•RKkÜ0¾ëWÌ­-í.’×ÏJhÚÃ²46í}$×ªeÉXòn’__9/6ÐKOBBßs&ND °ÜHÂ:/
ESTXdm¶©yÛRQP)òVµùF²'r¸ ’—U’*!+M*kHéZoHæBh­«ºçØù	îü€áv³Å@=\Æ§ûýº~¸2.’]+?|Q”uSÖ"ßÀgžqÎÒë`b¤	vdbßæ :¸ìår^õ4¹õÓaÖuÉ³RÔ°âe‚²‰$Ö«4"P©Þ¸´É˜ÃÂˆŠÛ:Øß~ßÁ8ù?¤"|©˜0ê~mü'8t˜¨Ì0ZR¤!v(5ñE"Ìã‹L€£A¸þµÿñªK÷£‹®ò.NÞÚ”fo`HîpBµ¤}áY3vóúã;MÐÿLš¬üù‚gî8ÐJYÑ{àd¬ç#L¤üÁ™GZRþˆÖè3Õ;Ÿ$¬?%$ÌàS"J£xêëæ÷O:XêJ¡ûk˜‡E#œÇœÞdQ»îÐhµÕ°-2ÄªÑYÎy&ÓN)Á©lµæJ6˜öM–UÁ7EÍöæàH¯|Û®äÃÅlûÉMþñ”VxœµTËnÛ0¼ë+¾6¶)Y:ŠÔ(´u n}! Å•ÅD"’Š­ù÷RrR»ú@ÑD‘;;;C‚\g¡ÈÒ„ÐXdŸ°ñ<ÓIO)’ˆa
Ž”kfP9HÃ´ <"£‹l:!Ó,fa'YÎ‰#Ç‚Oò€5®Ô>Iø\2µ‚“VŽn»Ù©AQ27ÊuýÂ„ÒIH}xA(!ÖÒ94ð¥+aÖØ¼„“kÞýO¯Ñ(¬FÚ¬¨I”Ð†$óÔ@ÝÔ8\©Ü1ts¨¤u0Ôpeµ‚Bnƒ`†U¥7€Æxo•^ÁFVpgäj…ÞøTå¿u.»(Sv­;«=RµÐ×Wbpn´hr·`^©ðåž2Xå9LˆÊà« S¢wsYøÃ¿Ôü
s·svÆdåÕ—Y£‚±mí8¯˜µãn+ýŽÞÈÇ¶ávX_Þ ^zÓ•ß”Ò°Ð`d…/ÒxmÚTØþ¿Âs9.¿}üïÊÞ ƒ×=Íà¾ø5À]?z¤»0Ë5Ë±ÃÂ£ÇðŽpÎ\ÙÅîÎ
?’Î¤©7þ%ö)ñ(¤#2<€ß(ÛŸË¾×«ESs4=i.U³Ý3.q/.æó=ºD#Ù!yœN^Á¢,a“}ê…E1kÝnÇQJã‰ï	)!dï„meÝÔóÙ«.%‰âˆÒCü¼l­ÌYµ”·øË"ËþŒS’0ê{?~îƒàvoÅ·Çð¶±N*øèÛœ\õ‹‘C<åF3áMß‚‚¥\)OÐEÑ“~ß°žfÿ¡Iß)¶å–xœ%ËËjÃ0@Ñ½¾böÅaô°%…PBW4»B×cyüÀ–d¹ýý:tuáÂ)™¤j¨í¤6Ô121ïP«É)E}ŒÞnÄ“2§º·²³Þ5õ!¨î©Eg¼tè[G}ßJò^¯íe\3<(—)Á÷´„.ñ÷Õë¶o|
k|Y;'½ÒÞÀ*DqÜ8•Âî<•>ö-Œp™ÛW¯3çÄËiÍÃ?UD¨°9¨èÖp†ô¹
kJJEËr†Ì'ÎTn_O ÔA¤Ox}5P™žxœ%Ž»jÄ0 {ÅöA½%G8Ò†Ô©¥Õ*6¶å;YN~?6©¦U"H½°’œ%4¨¹––<*›1å ¤ÊÜD%b6¾{„J¥ÂêHNÑ	îR
)d¥yö^‰Þ{‡ÆEìÂÞ†µÂg¨m,ð5Î8Ámù=yßö.¸.o Œ÷¢—Rhxá’óî°ËØUø ±ð¾o8ÀmŠ'ïÕBóe­ßÿ©t\ŒÛ#íÒŠW(?1\K!l,Ìó½/ç;{Â+0öÜGjÝñ~MN“xœ%ŽAk„0ïþŠw/Ù¾hŒ¾e)K¯¥çžcòYEcû÷«ô40009T‹7UÒVX_ÚÊY«Ù:©ÑKoæ.€Ù›Kˆ™`%˜Î•ÐâÐUÎTM ‚©ÑˆíÛÖÃÁöb
wäaMôéR#}³Ÿè±ü^|îÇŽ›_—7ÒuÛjÑ"B/\2§]Æœ‘ècèýØý@©»øœ"æÛš¾ÿÓ²a£™Û3-Âêï(¿ÆŸ•›ç;úX®wµÑ+)µ!íãžOSücPg‘xœ%ŽÁjÃ0ïþŠ½¥’e¯¤JÈµôÜóZZÇÂ–\d9ýýÚô400¼W3¨Ž<ŽFytaU5bgÑaËÚj²ˆ¥#n~¨p®Ðk¢I
ÁIƒ½4A·Ø*ßá¡íœ6²3íuZ|Q©1Ãw\ü·ô{ò¾í_üš>@õÖ*§Ð(x“­”ÍaS¬•|r¬<öÍOp›‡“÷™Kæå²–çÚSJ‚x¤MXýò+±ðkÎì« e¹Â¡÷t~	ÞAˆDÕO1?›?'ÆMixœMÍnÃ „ï<ÅÞ+[GQõZõXõx#ˆ0N_¿¤õ¡§‘fæÛŸ’‰`èGi´T¨µ·ý ŒÐjTÕ%MÒvx²ŽÝM¦XÀ(­Tï\‡B“²›p´Ò(Áõ¨IØÉv–¤æÌìeN>L.>Â—_Ý—ðýÔë¶oÔº^+­¹F>hxAÈª|)”á|™ámßÜ—Å>õºPŽ´¶)ßþPqBÉì+Êâ#LK1’+×v£üðŽÎP—AŽ¨1ë
MLq³7Æ>k¡ÌôÏƒt/>E˜r
¿Qý&8ƒ¡$0äGfê½¡•;:•Ý ìkñ÷µ} ­e?àÜx2’bxœµTKoœ0¾ûWŒöÔªËÆ@`Jª´êãÐ&‡ÚK/Æ‹µ`Ûlºÿ¾c Y©•*µØóÍãóÌç-"äyUVñ:OÒ˜c‘È,•Û´ÊÖ2ŽSçi%ø¦ÚJÁ:aQ{ÈÊ|{‰Eœ^&iš—\ž^ŠLÊD^”ëË˜ge²N™è}m,Ü
ë•†oª)pÕ>„÷ë®JÓ¾†8Ûlâõv“®áO8g´Û*ïÑÂ'T¾†·½+k¸:á}s@«±Y»¡ÉšS@ˆxNPÂj¥DÓì@TDíEµÂ—µÒ{0WF3öN¹ÒÑž€ Þš¦AëÀH,úÞj¨M,–ÆV|-<Ø½gÞ€ )q Ä[Šeƒ…¦gà³PÞa#—Ð¨BMÀcúØž­!ò KøÎ  Šjã|4:¾Ö:â?ˆz¶\
äyšd».ìÆÏvÁŸ!·œ¾Ý]VÈ™„­Ùîœ–Ïfw}[PRFÂ—‰d	Q£E*­×á–’Œ]‡ç)ú=Õ}>œ\3oý©ÃP}LTVŠ6|«ÂbTit£ÌõÅh3pBîä<¶Å{2ÐÆƒë°TRaÅ:C]UÑ'w,Ã·6ƒ}¯é€ÖÕjÅF"Âÿ©(žPñÛ‚âÿ_Püo
zv·wÆãØÂ¡A§†¥»»8C‚n~L3Z4¡±‘=öôjÕLÎÎb¨Á©¨ct÷õÍ‡ˆTÀLc¹$ŒrÐ¢ÐÓ8M¡|Ûy$+ªhé¯ºMµäýÅÝƒyJQPNDãÍç4ÀÄhÈ\Ìf‘‚üE¼\2ª“”‡2îC–èœ /BWÐ ‚` 1>èF¨Cö.HZKaÛ`¼GÇÔ(ãÕ“ùžÈyCºDB1Š,¢.à,R‹à7`CßÌmA)>¹t?nì.‚L†Tes"¼qs"‘²
'Ò‡HlvÏ{u$á3cªS’)+ö‡ß¼ŸxœËËnÃ …á½ŸböU¢ábŒ£¨Š²ÍtÍeÈØDâ>~Ý®Žþ#}­ZäHn^Zæ„äVxÁ„æŽ19Í,(ãóãð2•¶ÄW>(œf©iô“r4ÒŠ¤%¯Œ°r=˜Þb©ðÕá^àºw[$Þb7;¥³+ë'°QOó,˜á5âp¼kj*<(µ÷þí"\û··…êFù\êóŸ@
‰pBuÐa{¯tr9]rzÆvÔ%¤2™öHø©¸–!˜”É¿ä)N2–xœ=NÄ0{Ÿâõh‘ãŸØF!ZJ¸À³ý%±’‘ã¸=ì	¨¦š™Þ Ø*ø`õ¨²´9K£k†rÑØ)ùdÜäGñÁ{'–Z±ñCvFŽÉ²dÞÌp2øßÄFH%øìKmôŠÒz9´Ðão|^Ñvl÷µÍO4Xïœ:º“AJ‘êõZzÇ?TñÎ35làôy“c«+vŠgÙ2Må‡oeÞ‘/uš.ñûá¯‹øÇ[ð›PxœÅ”ÍnÔ0ÇïyŠQ¨-Í*Ÿ›8”ªq@'@ª²rl'­×ŽüÑ%RUõ1àõú$L6ÛBE+@˜Kâ±ý·3ùÇ!€Íó¢Èš¦Èâ¼®9£<&$¥„Íç<Ïy™r’Ó(M‚ž¡4yÌë¼Ìóœ¤u™Ñ‚0Nš¬L“DQÒˆ¨e]õn©¼^ÒÎQ5P8órEêà˜Ýåf«]îtÃÙŒéõ	ÄyYÌIT’Â¨ˆ¢ ³ëÎ9aàLtn	¯¼eK8^Õãót%Œr¦M;m-R’f<nÔåZTÐt_ UúN¢Èf<Nµ6>,;=u¨†+„·Ðh)õ€0FU8É„N÷Zêv˜±
Þ*h¼b®Ó
no¾^
Ó5ÃBŠ–²a¡ìíÍ·ê—Mé<®Ò¤štñRÚ¬©¥P°ÎŒGÊ1©ª8NÜ-¡¦õk,½…óðÓv÷Ëi&´‚yÓ¹á" @y¸j{sÍþ3ž0gdxB97ÂÚ#pë~±¼`Wð›ø|}@EUvÏÔµJoAŒpÞ(¸¤ÒÐÍX£»kamŽ€&ñsâ°;Jâ×Þ‰ms^y+ø/é¥ûÁ<¥Ã)=GO;C•íµqG°×³Nì=Äý	ééx´ƒÿö_ÚûG¼#2cqTÊ{›@-FFguˆ@íÎÁš®ÐZ‡‡‡pþ_4WEæ<,š¾€7ãzˆw~cT¡$j;9`é 7š{†Òh¥Ñ€-c€~²£µÐ{ûk¯œ2KfqHüv”LcH¢˜ÄQTÁ{lL7MXÕßþu‚ïdV¼:‘xœÍ=j1@á^§˜>¬ÑX¿kL0nÓ%'F#¯ð®´²!·ôIõª7:3x›zërô¤‰Zc“4µ³Y+¦¨|Ÿ¡s0§`¥:d"dí²ŽŠ)iœg#}L6„cžExŒ¥uxã2¸>vZà|?½Ü¹W^­ß^wÖ)Ô^ä,¥ ¶meþ7uè~©¨Ï'ZË	Þyå°3<¹ï¥UÀ¢åV9M-ç)~þˆo+SZO”&xœ…‘ÑŠÝ †ï}Š¹ìÒ=Á$&&ËR–R(¥P
é˜8&rŒÔÓ°o_=Ý‹–^ôJÆ™ùþÿ×g1¢Ðý,ê¶–Xk®{aÌ¨jƒè¹i;Õ²Cô	–±hš¹ª®Í‚Bõf¬%ï3EzìùÒ1uK˜Ôjás°ûŒa…ç˜Ë—õ­¬vü u7tR¼pá’s¶Ð¾Û”0ÀW´iƒ·¸lð|ËùrÅàÑUÖûªìe+k	ïù˜W™Qs°K|å‚Ò:@"˜6Š	¼ÚLöe˜UD]f|<(¤ÈØD¹{‹"œtsœ½bYÏwp¢spõtú;ª"X*d àŽ%–õ+Ëô¢Œ1b¬`¢Ç7C¿Ù1ýíNýáOyÕà´Î1•_b?R™Ê8r?s{UE6¯|ú6UŒýØluÎfC%Û—ïÿdòîÞaµV–ã‚ÞÕœ›uù=–"ÉÑq»z
9xk“õK²ä³Ö”[¨/dÌe~}úïï²_É«Ì&xœ…ËnÂ0E÷þŠÙWÐ8~%U¨›.ºä*?Æ‰Eb#Ûú÷5ˆ®»š9WºÒ™©Wžj¤ Ž{*õàcUƒ”ê½u\r1JrÖc1X6’z¯˜ó8rÝ%Æž*Ök«%e=r¢/uNŽz
ð‘Ãj0O°/Ó·+¾ƒPjèz›Nu±i]C­˜áCáýRìû“¹ÏÃ	sÄe›òô¨*©˜¢
^º±U‰×&[v ƒ'|Á9£7¨é/‚tÆ¬kH±âB±éó«M1¢­¯à±B»&ŒØJõŠ®sh6k˜æJì¢Ë×»dªsÆ[ÓŽzírqè`	&ë°l	9†)¢Û$ï7æg÷ïgÈ/ÝýˆÆ–xœŽ1n!{NAo9>6Š"+mJŸ øÝ•½a¶Èí“HîãjªÍè€,ÎsDŽDòœM.É[BôÞ²
Î³_±£™¦¤Oì´WÅ%Š¤r
(lb"•l`í4DÜÇÒºüÄ:ù±ßó"ß®éç+zÅí¥õù]jüÉ“3VÔ¤”ÈmÛÖ1ð¼jÍC3ªä–÷í÷5ŽµU!.ë\ÁÇVÊ1}¿þW?ŸýW£’xœ…ÏÁj„0à{žbî­51‰,Ë²m¥—BO=&:QYMÊ$Òúöuéô4ü?|ðO&D°ºî}-eÓ…Ú´°=ª–Ãt­ç-×ÆÏ¾,aÈ |Ýp¯uµÓ•´¾®ÒÆD-{#y#Ð2»å)|Ú™àe™,‘%8íG¼àOR,û¸ž¡’Ê(])cà×œ³£]çœ‘àç<ÁuKý§›»ßË)àRFïT«VÓ›ƒšƒ²eN¹H›K{êà{Â ´…0‡b€¸ðÇÓ#Œ˜áýéáÚ=—ì0¦žâ
‡ö‰±y8ÑûÂíÝÿ¯°_ó±jú”xœ…MjÃ0…÷:Åì‹ƒ¤Èú	¡„BWÝ”.º”ä±­Ä‘Š$ÓøöUè
óÞ›ù¦fD°ÂQaÝÀ˜RÚ±7ZRå7ÞpjA½6Œ|ÛŒ±‚‚ËÞ2j¼fû±Mú^ë^îCj9eJˆ]ëœ2|Ùáu™mÎ6Ãqkö„wæ´óéö¬Áªñ\Âå”’–ÞB­˜áCáe-~†ãÕ=úéŠ9â²Kyz ZIµ§J@GeCÉJíÊêÊV0†;¼žÏ0`Æ±)z„Ÿ#Ô¼…8AM°„.Á¥¤ZÚ.üÝ(„|„)âÐ¥qìÜvøÿò®½k™xœ…ÁjÃ0DïúŠ…‹ÃZ²$;„
=õ˜SòvÛQXËü}•/èi˜7ÌaB"×:Ý?£žÚ¶%£"íüà†š«{¾ÀŽ¶Øé±„Z[ßÇHzšÖ;"²µ.ö2eŸ¾–)ˆÓ³Ú3?ˆ–| ¼~@k]×i‡ÆÃ;DUÓ5•ÂßœÊŸûFœæñ¥ç™åÆË!Ëõ…öÞyƒ¾ƒ]EU£$ÚŽÓî¹ÔÉ),°òšå	‡yS—z;mÛÎðfÑ*uI×ÿ69Æf|ÿ_¬þ 
aaxœÍKjÃ0…á¹Vq7 [ÖB	–N
]€tuÔ?d¥¥»¯›Ñ>No ¥d4Æq4Ê*Ÿ˜!YMÎ¹,²ÖìtvÆ‹{hØ:ÁÙÉÚ‰™­³>9Ã¤ƒ÷YYÊèbÈQ„G¿ÕFaK¿ti1tì×ÄÓ^:Î\×´SÖJå¤–Ru-½£ÑJ¿Ñëcç]æø¿×mÃr®íëI­±£RsPñyOÇ½‡¹, ^©a­ß º$JØ{ÙB/u£|4!þ #P’xœ;nÃ0D{‚‹ÀÿKa¤rˆ%¹”ëcPTã‡.r43À`æM-D,
ˆÎEŽVk™¬Ó„­“#FD‘œNÝ­•i¼Ø«œÆHà: 	BRÉk)—ý_Ÿ„G§¸ÒÒ{°1HÔ2s Ó06ç”cT$ÁuxÔq+ì“¦:²c#{„—ßTVš/[nL¤ÀÞ¸ç¼‹Û²LµÒ?¦Ý•X(¸¶ÉiÁ½aNlËl¬õ¹_û~hÄ#\ÚG?Oëñs^¿ê_rŽóÔýŸYc:›xœ…½NÃ0…w?ÅÝQ#ÿ$vL*ÔÂ„PÊ†ìø¦5MìÊu©ÊÆÈÈÛð@ð´¨Hˆ…å\éHß§«“"ƒVk*”ã”2,•²®ª©åB3‰(©ÑÜ2!ÉÚ$—NÕ¶–ÙÊX]ÉÖ ÐJr¦Öe‡š#e‚˜m^Æï/Ÿ¯o0~ô&Î‡ÅdÀÁöæ‹6ÀªZÔ¼¬4‡3ZSJíàsÆ7èó.·›v	ã•=ÞÉ
SÀ¾ˆiñ*©xÍJQy@Éýìä~€!:ßía>›ÞÞ]$„0ûÛB‡}wp2öÐÅ4˜Ü^ÀÔ9ø±Á:ù'“ñ×QÀUÖ&{Û#ìŽ¯Úxˆ€;0ÁAìÝÉ·i™ûE@7Š]7²ûóÿV!_*…wžxœMÁj!E÷~ÅÛ—õùBI»í6»Š£ÏŒ$Ñ`œ|'BW—sáÜÛ3Ð`“Rrâ„Ì½óš‚õ)i$;&´c0z$)n¾qé096Šm¤d4pÔšAíÑëV‡±ðKŸkƒG½¶Ÿ0sÝ?Ø÷æË=p‰›\RÝ†z}eÉ 4J+x“$¥XÛkî|qî3|.÷0Ãî<=sæVø²­íôRºÁ6WU|Äx„ÃßÜ.Ë)xNúÅ/§«O
—xœMŽÁnÃ Dï|Åþ€#À°UQ¯½TUïÖKŒbã¹ùû’žz™‘Fó4S)E´M¸ÖœÕØ“2ŠPðàî­‰{ÉîX(WZ:’RZ4ÑŽ\Ñ¯¬×Ap£Qö‚³uÞ
|aO8‡•öËA®ÛS¥“ßÖ7ƒUFŒcÏ¡ãç¬¥kª•
|Pª3¼?v?Ãùæ^~¹QÉ´œ¶rýC6Ò˜ªÊ>¿;5	Äô)û­ò–íš<cm½Bl‡(£[(Àû¿VÊp?…mòxŸ*-´R-Ï©Ñ¿»\N‘xœËMjÃ0@á½N1pË!„n»	¥ÐÏ¸I$#+isûº]=xðµ*ÚHfŠ³µdf¦¼Üä,ÑƒÔÚYãZ]•ÜÀ“ÑbÝˆ£F=Ì§8p¯=÷zÂÙEåm)>\Ž/8VïšlçoñÝ–šB¹Ÿ §ÑìRã¢Úï=µ&Þ%µÞ[Xàxõ=_¥f¹Jýú§lY3ãNíNÕç¥3Ä:˜Ó¤üt·¡½V²¶T²R¿–Fßžxœ%ËMnÃ @á½O1 âÇ`¢*ê¶»Þ Ã Ø`'isûºíêIOú˜A“1«lB‰Æ¥UQnrV[o*Dé¼
º[$lYçdR.¦˜18ï£ñÑêyT!‡Y—0â(ÑñÁ·Nð[~Á™æÈ¸_¾p{e<¥¾¾²~tÚ7‚VÊá¸keF‚¬|ƒ÷Çžnp¾Ï¿½Ü‘.§N×?:¹IOÖÔtxî‚qÁ™^"õÆÔ—Iôko  Ôo¨í—šáî@¸uâÚ®ÃðÇðTÊ•xœËKnÃ0Ð½NÁ$-êEÚmv¹%ÑµÛ
dºAn_·›`0O3pŽq ÁùP˜œCŠ1Èn(Ùtžƒ¶œû žÔxðÚ'DBì³‰:PgJ|°}4±`Ÿtê¬õŠvkƒ;­å—–Hx»¾8¶Iøœëòx\uŒpÒVku¬Ë$Ân<É_û–G¸<Ò__ÜVžÏµ}ÿSï|ïm8¨;¨úœçú‚ºÎï#êS¦ºÂÍ;	È´°R¿' JUšxœŽKNÃ0„÷>…÷(¿«
!X²ä~üN¬:Npm·'íØÌ,FŸ¾i Gé|P^Ê˜ŽD:­Ñ1¨H#¡vR{Ðn+”†QŽsËùä™!ÚR\TZ0®3OŽ8*„B¶·e«øR[ðk¿ù_®îÞ/W¨òi«ó3¦B+©&m(~"†ä·uM­Á?Pôö`S™q<ÔªÅ{îs*}|v{[ <–¥µývÇùtw:”cN¥åk…ñƒÏiÜ{Î£4â Ó\ [Œƒû9ÿõýž£mó–xœ•ŽÍjÃ0„ïzŠ½ýY‘C(¡×öæ'X¯W¶‰-IäíëB_ §¾™©™JYÑèX¹à'g,Žh¼2cßáDÚð¤µøÆÌ±‚³Þt¤¤ì/$÷†tðÖô>È‹ŠzöVYG]R†¡ò“#|Ä™N|«·rVøvc¾ÜË™µ”öwP¿(m´Sð&{)Åéîk­œá“×ºÀÇQhÛcüÕûƒsä­MyþC;é­…Fºñ¹ó2¤šòg8bdâR0¿ ‘êšbbXçÈS“BhÆ×õ—ÅëÐg‘’xœ-ÎËJÄ0Æñ}Ÿâ,±œœ\šÀ £âJÜxy€4=½0mRÒœ··®þðÁ¾’™ÁQPL®µ¬Ié ¤–$B{cgQRç‚•Õê3Ç-÷F5Z÷Ñ#ˆ¹W>XENuÆ9!•òŠ+¿—1eøNñšâð;ÅNÛõVB¡Ïc*‹Ÿæ:¤å	„¶‘Öð€±:Öe*…3¼óTFxÙ·0ÂéÒÞz¾pŽ<×)ÿÔHtÑ´úY;_¶ÑÇ˜"¬ó>LñÎw|}>À[ÎÇ­×Xîëê{DMÑ›xœËNÃ0E÷þŠÙC£8ÍÃ©*T±`Q¤‚èŒqb’8‘cý{œVB°c5£™{æq½#UmÓ†²¼.8oªBjQs’Só<WØH®• Íftd=Ô2ST*ÜJ¬´”B).j­3^gBÔ[T*Ïµª†Áw“ƒçÃG²YØ÷Éû5;,8.Á¶‰šÆà…(yQVu	wi–¦,VGã=EœŒïà1,ª‹´\ã¡'giH&×ÞP!òTT°IËˆ2û1ÒfvÆúhóGZfT-Ê™ÙÇ«º0¢…«ÊØ–±ß_­5à;‚!Þ?
cÐ›ÉÞƒ&;\@Ç)«äx~9ýJØSÜhüµ{Û1?Gø¤aH{£yržš¼ìà„	^Ñõ°·k^%Ñçþ=ìlZõ“ÖWæŽ²o4õ•%xœ}‘ÁnÜ †ï<Å[)»Â‹mpUQ©ª*õ²yÀƒÖ«'Ù>}ÇmÒC+å4ð3ßÏ?P	´±Êöì›`{3hwP”SFzÓJ×ôMcÓvâb	SÚ^é®•Jb7ôG7(ßëÃ¨†ö Í0zÝÒ»Ö9­%øJ¹¸+¼žîíÙþÌiïóù4é•ìZ£a'µ”‚Õs¬	¾c¬3<¬ÅÏpwr[½?!%\ö™¦7T7RŒöŒŠô|ÆÝ…bª·â+ä
VðvñëbkÌ	b‚GøöX<ÅKå„K,Uˆ§ßÀbåmÂ×
<3]7nS¶Vˆœ-8B~1Mœô×Ï"‡ßÚ…ð9æµüÁoÀ­uëÛX$Ê	ùl¹‚õ~=oÙØ-¦RÑ²kcš€£ìáifä%Ó©ðH	ÿf‘8ŠM#·ùÌå¿œb»ó%.¨-¿åvî3úúïÀŠÞ}6c‡W6ÞqŒSÂqÇÍ;w½ýøGÅ/¹þÆ›xœ•ŽÁj„0„ïyŠÿØ¥(4Q³,eéµ½ùIü£a5J—öí›B_ §aæc˜É‘D7˜I"ö‘“³ÒÉÆ	ÝYR…îŒ"'ivèH!ƒ Û‡Z©AN}7`Çm°!”‚[Ý(Ñ£pœ˜>ó²G3=)ÀHg˜íBû
Ÿeõ–,Ç¡^‰îIo©°ÚîÛp9HÅ±•¼¢Bd%Ý|Îáƒ|^àýLvÛÃüêýA1ÐZïqþ«6m‹*ìJ•…çFu:È^!›9ý:ÅXN9ÿ/›OÉ‡¹˜•.Œ~4U»s•ù¾þï7ûƒ®h.’<xœ…S;oÛ0Þù+nL†¸”-Yr`F;AÍÔ‘£DX"U’¶ªß£ì¤F ‹DŠ÷Ý÷Ð1DØjÁ‹Ýz½©tS*µ­jÑ”FÖBU(u¡6¼ÙmyiØ(ºeµ®±(y]çE%›õn­6;)›ÆhldSU|»©™8¥Îx­…¯ÁCûHÛC{Ý®|‚¢j*^rÎxà5çLùa°)a€ohSŸOQu°?Êü>18ìW>´hMŠ_¡Ìó§ˆ mTþŒaå]
¾ï©açc«É‡5CC
GZØ˜²¹¿¥‘±g*0ú­ìR'=0w0Ù¾P$qÛâ=^6eâˆŠˆÕÿ:îò÷Ëpú“¿µú~Ï&„ÁßZ3Õ	×"ô¾<gVïH©}×55pˆ’_’É¢p!a·*‹žÎÃd©p‹ÍAÌà|‚Hã2½¦pÃô&†]ÄXGIh"<ÅÌ™aw"æv$Ê¡JpÍC[cp™ªWûùào1Œ=Þ¯ûîÓ5x'q\Ä“²[ÑÞõ3X“OfÂÚœ¬ƒ8GC”¥Ñií#‰aR¨ã$‚&Ã(’•¶·i^ÄÝähÞ€Ã)«ù£	õƒœá§oñ_|‡ösÞzÛvIÚ{!ãŠ8žØ‹m¼1è£Ëðoý€ý|+O–#xœ…‘ÁNä0†ïy
á0£”I§!Ärá°žÀiœÖLšt“tº}{Ò.‰SüGþìßvŽDp0%¶RâMkIvìjIUÛÜ´J}ìt«Å„‘|†#u­DkPÉJZUß6V;s0æX‘º%¬*[œó"¼bÏðyÔ{¸OE>öŸr?ÒTu[K%¥l`')EÆ‘s¦‰ó Osê¸?éí}<Qôäö!öhSõ…
i7Eöù§èR€!¤ìÿy@o.1°ÅÚ™¢‰„øcp† o)xsžæ‚§Ë—qD†ÓäpNÐÅ°2@>Ìý°å•œöâ%d*fX.N¶
#ï
h7±ýß¼±‡´&›`¸LØó™Ì	4v§£Ù61afÍŽó
W¥É“”³@	œOËõ^ˆWî=™]°v§×»_ð=ÿ—¥‹w÷ì¾yxœPANÃ0¼û{ã DnŒ“UUAœ€¼À±×ÕÄŽì-¡¿'G8íîhfG3”¡u¢ÓiTƒèºZµqhoo”hëFrÑYÎ¥d³Nd[·Ú(TÎq±1RwVÊF8é¤1X«^»^*i™>Ñ<¡§îOÙ°=öeî˜ŽUL‡ld'›¶«Û.¹âœ™8Mžÿ-µø–²|šç„9Ãäsöá š(ùþD‹NaE2cw?¾ûL‚Ï`qÆ`KÄàËÞ0eC®à!†‚5Sœ4y£ÇñÌÊKð§ýÁù`ü5¾‚é*¢5•Eã-Â—"°¨G¶”œž*Æ^pŽ‰Ð^÷ç[xDçžáÙc€m¹ª²îkªµ¥{õ‡°r£sŸü?úbÀ’¥1“xœ-ŽMnÃ …÷œböU,ÀØ@UQ·í.'ðG±qƒ{ýºjWOz?z"PÉ{ã0"ŽÚ ò1£Õ&i«q
ƒS!Èd”/,”úD!(Ä^¥dŒ·Z›§¤û ƒõr”£‰qJ(°ñ¼¸1í”áF-ßãLÛ_Çë¥F%]·]+®õÈº¸­ï 7ôÒ8gáMz)Åá®f*ðIžá£Õ8Ãå~õú¤’ié¶rÿŸ*?Z§C
‘÷•N•‘[=C{MÈ…¸•;.ºLßð×€¸M$~ CŽVcžxœ-ŽÍjÃ0„ï~Š½—š•,­´Jèµ½å	i‡øIöóW¥=ÌÌÇLÍ" ,ßIFm™Øª¤µá¨y!í†‘Ñfíêöe­àL²è0ZD†*
ÎÔ2J°J;j.uÚ2Üªœ²ÂMŽõ'Ùføn«—ú~¹–°”–õq[>Úo4~ðð†ŒØ5wyÖ*¾äY'ø<Jœàòºÿêõ%y•¹ßòãULNÁ;RC»õ\Jõ(·$pì)T)pEüÅ»D8Uoº„ŸQW™xœËNÃ0E÷ùŠÙ£FNâ'ªPU‰JˆööxœZMÊq$ú÷¸ Ø°c5£sÏÝÜ’‰À‰60¦dè¼ó½ðÎ
Í8Ä+°¢²æb3¥NÊÞèNôR˜Þ£ÎiÝ!c‚¬2Æ1¦Uàh»–ãœaO	^ˆ‚­Ðš×øÎQÊ7ÂvëByiÓœé2]Û1–ãêZœÏÐ	Íg¢3°aŠ±¦Òs,…2<Sõ`¿.x„íÉÝîîD9ÑÔÎyü©òN©Z•µÚâGL#<ž/å
‡H“_`ð”
MðþÑo°äéW¤/1|‹1ý++yö+’¯oÃ¹Â’ÔÒX×[ãQZ4uPÇ‡ÀCï—Ã ±mš×8&ò›9„»Þÿsœæ’Šfžxœ%‹Anƒ0E÷œb.dãÁ`)ª¢VJ]ôƒ=Œ#c¤¶§/(«ÿþ“^ÉÌ`X2õR¡Â¡Ã®i¼$£:«…ÖÚ²qÕ“2¯Ô`$Zg›Ž„¥sÚ[¥zì™i F½ªh/SÊðÈ<¦ü5|ÑÌ\Ç—Iç»yÚJ¤°Ô6Å7mB¡–.¢¢:l¥p†Oe‚÷}³\çáÜÛÌyå¥Ny|¥Z‰Öœiw¤Õ=ü°ƒH‹O9ô½¥Ò^ž{ŸS„ÖPÂ_–4ÖÕ?y+TÕ“xœ-ŽÍN„0…÷}Š»WI&3ºpãÊÄ(í-4@‹¥Ñ·Œ«“ó%çË):í±ãš1:ÐN¡ÕÆ)ŽR­{ÃYë[)•:²™Œ±€ÒN0!/²ÞP.ÑJyá•s\*F©SZõÄÔ2¥õ#|æšâ—¯³5å¯]o!—P×Æ¦õ˜ê¥ä”´£”t¥`†we‚×ºÛ	.ópæuÆqiRÿ§-¥‚Ã=’çÀ×hKHJ‚%ì¶t?dw›ÃVR~ìSºÃ£;¾îÚàƒ…%ä-|Ÿ`YÂq|=fFò‰pb<›xœËjÃ0E÷úŠ.KÌèeÉ%”E7Ýµ_ ÇØqä Ë´þû*Pè¾«Ë9Ã©…bÆjFIôÖ9´ˆ‚Ðy‰Ê®¹q-ØÝÊxÄ`zííÈc@£I8FöC 8ò`‡(ztÁ3·ÕËRàL>ˆV‚£¶V!ÚgO¹<<m+•µËK¡û¼wSª—Íwa¹½×V6\hYKo©V*ðNƒó¶†¯þ1OW*™æn)Ó¯:©eSû¦²·ôòmÅ=ÍTJ+–r-KÜZmð;<iû¦ü@]M>Í©îà©~Q»ãË‘‘6¶wÑŒ£SF*¡†0ž"	)¤SQï5w¾cì3M™âaÇƒß_þùöž„µšxœ=ŽMNÄ0…÷=…/ÐÒ¤“4E Vl¹@~œi4iŠw·'AbVÏz~ß³)#‚˜FJ¢P\Ji&Ã‘-lFáGë¯ONpîÇ±ûÒ1‹PN ghf¥[®9›f2LzÍÄ´0[k:}ÐºgøÀ[Hð¶êž®¶Ê†!/›q°ûöLH¥„dB@?ÎõPu·@„´ÂëQìZaÓô|Åœ0{¾4TMjf3g•íB"Œðâ`Ò&b5õ…4ðG²ö4tŸk( +@+‚á¾__¾#=em¯!]xomu‚@ cÜ¿K×X—Ãv¨ùLðŸo˜ìO³)
¶€;òÿ°Ý/Í#{f•&xœ‘AÕ …÷ý7qÑ™˜ö•öµÐÉÄÌŒÑÄ¸™¨ûèmK^.ŽïßKÎÒ…+ÈáœËù€<"pÕqYs­»ê\±ºIÁš±îzÖŠsÍ˜èÙ¹Ÿt¶K– ëU§jÁ›©Ï¶c+Z15¼jû–iUs.ú¾gS&#-ÎÃZø‚î[!ÎU%Þ*´þPª‡Ð‡Ò:ûz-gCKT¥vÛ;H—75g¼bPT¢ª²¤n†=|Æäƒ§ô÷u¬ô×ÒùùOT4¼)ÊS4ûh~;Ããjf»¼OÕ>Y0–p…°IOÅêæBŽã«]¾ÚûcÃ!2ÎÊuøRd0„Û1Ç»1jA]!¼ÒK6y·Aþf÷rÞ$ìR_r¸IKF ù0H"oT$†››Ãr{›—Yöœ8¢=ÜN³Öålãwrv5G§Ã!ŸÞ§Gq¶øvÝ±xü;)”m+ L¢Mu!±òQxüÇ †ò îÅþ£Ã×„cá¦©P×»ÿüÈìÊŽ•xœ%‹InÃ0ïzÅ< †)R€89ää\†&m-Äþ}¤äÒtwÕLB±0Zæ'MŠ¸	Ìk”Z0‹C¯j#“ª»›Lk¸sœÂà¤6RxÁGÅHòI×Ê²@ÆšÎ´·ß-še1Þã‘§‡9xn…ré×-Ó}~ö—Tc³½Û–7`RóIO¼âˆØíí’j¥_´ÿà£át³Ï7Ê+Íý–/êÀÅ„BîªÚÕî3=ÈÃO¤L0'[ž¥Ò©ÀJäÉ¿ÀºU¸¶RáòÝ/£¨W“xœŽ]nÃ „ß}Š½€­0RT¥yL{	~–˜Ä†ãäú%}šÑHßÌÔBÒNÜp˜Žy-Ô˜fB3n½›˜¦%¾{šB©‚BKèhæ£â~
R--GI
GÁÐ¡vîÌQ—\àJ!Ào¤§{³ÃÚìùíÝàòöL´¥ÖÐ£DìZºÅZ©ÀÅºÀåØÝ§‡ýèùA%Ñ:ärûGG>iäsCUC»oïÁgwlí§©1'q¥B»‘èmžëq‹	>3&yèáµ÷¾Äõ1…ÜýØUT§›xœŒKŽÂ0÷>E_ ‘?‰í–ÐˆaÉÌ%üiCpqàúcfõJOªj•œÒq2K1„Yi]H
‰ªÉ["öp•Jƒ	•	ÉÌ&rÎcòN OÒ$oÝ<	)¤!æö¶lÎ”üf*p¸v×ŽÇwcØî_ f+8k¸æœõ÷ž[£
?”Û§ý8Üüg7ª…Öq«—UÉ	¹´]5]eß1B¡7ô:<Öý’|r®DàõbÍ/rIûï4L…‘!xœ‘[O$!…ßù_u:}hcŒÑÄÄ˜u£kæšbšØÀÈeÔ¿Õºî³OE}9§9"‚ou§·CÓo[Äžóz4]ÏGÕsƒFð®C;Èˆ>ƒ‚¦äÀ•â£˜ÚU;¶(toÍÇf‹µétË™,yd”ÉºYzØÁUW‹õå½:zÌ•U®š‚»„f-Ç~äpZ]Í¨ëlÎámžáº¤i†‹µžW/=.Uˆû/T´Û¾°©E]3ö°û…°Çe.dLt³ïŒÝ’¥ß!È3‚“^ËâÇ÷,œÜyRåa‡=ÁMðÆîK”ÙrÆVŽÂW{“~k8Ê¥ ¤9”EƒBÀ×"Èˆ_0‘ƒ5 "™/NFúö¿ÐñS(UpSâgÈÖtTI’„’Öˆ½{z„¼õ)£Ô<Ï6ÁWZë†4isÅØ»÷¨7Á˜ú8ÿÙ/°¿°`œxœÍjÃ0„ïzŠ½·1’lYr%-ôTè¥Ð»~V¶ˆ-I.ÉÛ×)”BN=í2Ì7;lÍˆÐs!Ðá :+B…-:å$ULZ&n4wÓä¬3Æ
k7ÂôÚty¯|+Ñ{¥i7°n“Eß‚K¢×:¥ï:ë–IGø„Ã¶ç×Kó±6Á,MË0¡x/„
¨h)ÙÔ%ÔŠÞ0Ô	^Öb'8œÌmO˜#ÎMÊã/*£°£’RB^£M.Äüv¿¬æœ“ÅR@GõzF«K.Xþ¼Pj¾1[Q7ÿÀ7Ã]DCžç’ ¤!ã¬+Þ'6„|„1¢Û%ïwæºÿßÈ7îâgšxœ-KKnÃ ÝsŠÙeQÅÂ#EQZ©«Ââ3Ä(W„´=~IÕÍû¿V‰@ZÔ¹4£6zFtq¢Qú¨œ‹’ŒZ""û´•J£(Ê d‡ÙûÉQ47‚+"mÇ…stÌ>ÚºWx/WÊpzÝRþô…6?ø};Ã¨fÊÙÀœ³žöY£
”Ú
o»_átsO¾Ü¨ÊÃ^¯ÿW¥µpäº_YùÚèès‚˜~ài–ûº/),¾Õ[¬/‡ÞRìÙÎM/žxœ…O»NÄ0ìý[‚P"çáØ>Ð‰!ø?Ö‰u±}rœCü=æDÍÌhvf¤-”dR”®…F9ôŽi*SãD±“l2\“‹Êˆ‘)­˜Cg5²¦+vb”Ôöb hYoµé&¢ö²¤¯>~¤ÏŽá&[N›
ÛçÖ¤ð=íx/%<PI)©nð¥`†ôe§}3Ïú›OgÌ×6åù§:LœwÐP^«Ä'SÖ¼aHW»_VoTA*[_q#äïÝG³îöW°º nîâ5`s›oÍ=!ï~Žh›ä\£?ÿ¿I¾ –Mu9xœ…Aoƒ0…ïù¾O ¡U5U»MÕNÝ}rˆS¢B@IX×¿Ðõ¾“-Ëß{ÏN:Ñq”Úr!ö‚„•´C.ZÝ)k¤æ$[­:dò	ª¦©¶;ÝÕº–œ¬FiÚZ©kj:SõT©Ã5s€çoóï¦G[ºéqŠ«¿”ý<½‚hº*»×M/|Ç9ËÓÉ¥DNäÒ okì8\õVW
žÆr—'Z·*£We+.nç»ïa]ÀOôåæ>å ·Mëfìô¨0`¡¹ç}ƒ‰ð© ý£éàAÃ)"Ø|R+µK‘ÅuYæJ€ÏÁEX0å”1;gì‚!ç3¬	4¥‘&ØØ¯èGW2vvO¦˜­-ô}ÿÿ×Ø/cÍ´š(xœ…R[kÛ0~×¯8°—5®ìØ±bÊèÖ¤Öôac¯ºÙ¢ºY^Ö?;ñ.¬ŒŽŽà»èC)"BQð•,s±ªJ‰y…K¦™â¹”5+r¶ÒU±.å%9òˆ>Ë…PJ"”))˜b%V‚óJÉZ0™k¥„XçŒð!u!ÂÞøS°spãÎÇÌ¸Ûž»~ðm&ƒ{yÅ
JÙšRxKÇŒ·Î¤„>¢I|zÙÁÍ“˜úíF6±¡ËU½,`AëJ>mßoöÛîÍw0^ÚA!hcl<™àA¦Žvh'd§!uwûÍa÷xw¸ß=lÁô P
N“úí¹Ãó†ô‹êj¬'ã[ÀGî“±:~<¢ÏF!˜½(Ð1¸Y¿¿Ö!Lká¿9Ìº&¯zEàïú7D6eC²ë‹ßƒtj")šeÙ€æ‰Û‹¥qø­úAÎïý*Q¦Ÿ	¼ú™ØÈÃ—ÍöõŸá¼yiîE}%ä³iÇøAë…xnþÿÈ¡ÕÉå–lxœÍUËnÛ8Ýó+.Z v2–"ÉÉjgÐLâ)ŒÚî écÑG@K—‰4(ªn6A?£ý½~I¯d;P f5\X4Åsîã\[ƒË`4î‹åp0õûÞˆ'Ãp<Æ|9ˆ†ÂQ˜¤[sƒÊ‚'DÈÓ ‰"ìóAˆ!öÅHà(J‚ˆGiF<ô…/¯l¦Ì¥ÚhÓžÍÖ•ÅÓ’e¥Vn¢‹¿ÀFçEaÁÞØóÒZ4ð¥ÍàïªL2xrµ¬ŸO¯Ð(Ì]mV;höp¼ ìåäô|>‰aª’¼JÔçÝ¤‚u^­èa±XçÜ"c¯2z›ü
N7wï‹ª´ñÏ·P!s$|C×m34Y"Ð†	çz#Õ
ÐmJØÈ<'ôzÊehí˜Ë“]Õû§ÓÐ¬àWÃññ1,4˜Š¢Yõ!XnVh¡³x3Ÿ8o&//¦/Î?ÓÙ¤Ó£Ì1Å–×Ð©y:.À…Õk·E÷–K[ç&H†J	©d™ä“^–.-6U¿—‚0º ÷$Eº‹—I‘ºYìb¯×TòËj®Þ[AÃÿLâ~ÌÜ
™q•æhˆ+ÆA¼ír?¾~[¼žÍ~|ýNu¥˜ä4š)0]¥m­6Q©ÄJ­Ž(‡úv¯Žþž¾|¼K>Žƒ(‚RçÜ4@Ö`Ð‚¤HŒ®cþ;{ýlº ¨n{Û£®âÍ‘–GÍçÝ²[ëãÍÍ¥p¨y~<l¥„_Ö\•¿gtöb>?]œ_Î¦¯š¼š‰kvÙmÈýúŸË~€êìwÊÖ¨u¢ÊïŒïµ'FÒ^&ÒÂvZø^Û6•Á•,Éu.ñ‹Å¦×õ€½sÞ6î)œ=Æiq} Šïâ»¶Õ=nÞ¡îy±P÷Ö$î&pq:Ÿtì¸ôàv{DblågIBÌœjÃ"c(a‰µ?Xƒdˆ)ðrgclNRÏH<¦LäÙÒýŽÖÁ	œ¶¬èÝýˆ0©ƒÏØ…\)L-„³¼Žÿ}°Ÿ
L=]’xœ5ŒK
1D÷9EïEÉ¿#ˆˆ.ïI:N˜O$fÀãUoQÕ*D+ü P£E¥BrÚii))™˜¼‹èÃ^¾ÒÚ@½%E˜¤LÑðÄ‡¨	{ëV6T)‰kæ·6–
¢nci>Ãiíp	>ŸA'Ë£S°ã],”eÉ­Q…;å6Âu{‡NÓðËËDu¥ùPêó?E%$ì9ö)KùËöž¡Ÿ¼òì[.+ûøD*˜xœ…P=o1Ýó+¼u¨@9îŽäB¨K‡Ž‘/çw	rÿ¾AíÒJ‹­g½ÛÂD€Ú¢¯kš:Do×moëºjû[íÉÓ5ê‚LQÀ6ÎPíL¯‡ÆºÁ4dM×¢ê¦ÁÂÅU©ÝÊ+¼Ê)1pðÎaî‰GØæ÷ã\Î´ƒªµU[SYXh«µrižƒ1|P¼]³;ÁöÜ?úþLiZ&¿¥ëN·«^uW¤ÊcÏÁåd8]Ž8…eN€SNàËJCÈ.ÝˆïàRNÓDœ•ú$˜ñ×Lp)ƒåqï/r$'!Å)“'æbªŠíâ‹”Q–/äÿ ¥R‡0FÉûEß<}Ñ_þ“·¨/\Ÿ“$xœ…QÍNÃ0¾ç)|ÛmëoÚM!.qÜ 4uÚhM2wˆ·'Õ‡]8}²åïÇ6"È²o»ª’}–°,QÖR¶ªÈeÝÈªm«JÕ&+ª8+BÏP4Z×U™›J©®×­A•xM®ó¨s#»]QÖP3à¨¯d]‡4À!¦òy¸•‡O×m^—M“7°ÎÚ,:8g™‘à-ð2G=ÂáÔ-ø|Bò8mWªÜeu!á!Û%ª0ª#«ãìà!Œ!²ÿô`ì„`XŽ€îÌßB¼øB T=(mBd²~ CÁÁYoýÅáöW$Ç1ÌS/nê–ÁúÈ‹D0pV1.ì{5À#Šžì%íDç‰—¾õK(Ð^ˆÅêã/ÿìO>|ù$JÊárŒtKg¯5Í«[®ÇÕ"¥™&Ði¶Á'—Ï#qLQ±_cÖÝ÷þßoÜÏÿóñq×ÂÛ–"xœ…KOÃ0„ïþ{.$µÓ<œªB¥!„„= ¸ù±i¬Æqä8-å×“ŠP/=­×šÏ3žàA³*-R%RªÓªL¸TXUMu’H^dRSVQN:á±°Hs®sVHÁy–Kžš1•0QdiRŒ˜NJÍ2"†P;Ÿ¾jÑî`u2ñÏtZ{Ôµ±röXV”,g)ãpC9¥d¼µ&ôð‚&Ô°zUÃj/§¹Þ£o±‰ßM(gyIY’h9¢¤=XŒTc–`ÑÊFüàÔd‰0Jó4ë4B5&;k¢	‹!lw„û÷×ç×'p²G@Ç)‡ï¬L£!’òo™oß¶ó³oÜw¨Èl6;¿±„®v¦íçg³ù…+˜ðÕ„lä =AÛ…Œ![}rüÃ-x´î`Æ*ÿ&²5»uäª*’§å•Ê/ÕWj&¿Z´ žxœ%MNÃ0F÷>Å\€hÿFªP[H€ØpgfÜ„¶Iä8p}¬¾§Ozz%‹@0y¢ä1r9˜hzçƒ'Ñ ÛN´Zc–¹À@‘9’ÖF&kL7Ø`%‰î9šDä)ôVÅ½ŒK†I	Þ&™áðY±¹U<~35´Ü¡µ¡µÆö>À:DUßûTŠdx•©ŒpÞ7áp~÷x•<Ë­Yòå_um‡ª¯ª:1Ã¶¯ë’¤šþx÷ÏOÀò5‘lê’{HTžxœ5ŽYn„0Dÿ9E_ dƒAE“|&¹„—2x†MÆ£,§O'RÔ]Õ¥§ê’œSJ«Á¢³Â¨ %‚aûVrÐ*‡QX%«Ãfl…œ×±ÓN¹Áê yÌ¨¼è¢eÏœóPÁ¨Ê>Ê¼gzEŒôž°ÑåÆ²YX^?‚oü¾>‘Ôƒ;Ý¶šjÑQñuM¥ ÓR™éåqú™.w÷»¯wäK³çéí;)5ŒVÏ!ÐŒå ‚ÏB1-8)òÜFË>Õ‡P‡”áËž¿Èn6»â<¬Gq¦oüõsp6Õ©ÂYšxœ5ŽMnÃ …÷>Å\ ›)ªÒ.“ª›ž Ã#¦±±…q+õô%‹®æÓè}3¯d€ŒwzìŒrÁÚ‰ z?0X)Mo-“^šÁ6›ÍH…€n~p6ðQ9.Œ’*pÉ´GEÍjf`{”iÍtEô‘èüU±+^~¼kÝº¼43¢7ZÒ‰IÆšº]b)ÈtC,½»›èüŸóò@N˜Û5ßÿU)8«ªªjóê=%»`ß¬Ã)c¿ úŠ¶ù¸ÇDÏÛ6y
µÖç‡êù¿±·ÍRµœxœ5ŽËjÃ0E÷úŠù=]B¥›>è¦ädÏÈVãHF–“ß¯¼èj.çÜ[28dÞxé¥J*g•ÖBQ÷\ø^õÙê2ÅÖJ¯<ŠŽ;âVaz®¼ž)Ñhßi­™ÛËœ2|÷ð(Âé·Æv©ñòÄ±Óým•²½€†wœ³ú½‡R(Ã'…2Ãë¾3œnÃq/7Ê‘–6åéí”à}©(»®è
ÁckB¬†è–fIÔ2X—}
»‹¾ûùVšCI°íëšrHOöv}‡*q0“Ã:âAy)¶ìµ×])“xœ%]nÃ „ß9Å^ÀÖ‚Í¥¨JûØöXbG€›ë—¨OóÍHŸ¦fðÞ±r3Ñ¬iòA.fŽÆ.¬QZ;EÚfòâA…s#!OêB6 »ÉÍ“J*…N›E×MAG[÷Ÿ#|'Îpúé8nÏÏàG¿ßß@j‡r^$*Ð Š¾ÞSk\à‹S[áã¨~…ÓíòÊóKæmÜËõ_UZë	»j»*ÞC€ÌOˆ‰·P¡íÐà±×”á·™rj£VáuÓ›øëÛO
•xœ5ŽQk!„ßýûÜ6©ç–PÒÐ—R” îÚ“Ä3¨	¤¿¾^¡O»ÌÌ7LÍD`¬öùh•V	ïD×{¥ê¬"¯µå®Ã^öìb2ÍÔØÑ`9Ië……8Jc¸íù ÷Ú‰Ú1s­SÊp1ÍppSîD6¥üÿÛr-´Fz!¥œ=Â#ï8g.ÅjmùO
u‚ÝµQ°9Ùån;Óyò÷‚*.z1(+>6”Í·H+w/ð†Ååp©P µ¾f‚)•
û¯=c°3…ÚÄ:”{©WÇãÇûÜ‚ŒÉ%¤–¼Q>PÅŸr4µÉ5/Zëw¦¶Þœèùl~î±Â~ÃëqC–xœKn!D÷œ¢/0Ö|ø4–EYd“e”4ÐÌ { ,9·Ïø‘²ªÕ«WÕ+3LÆ.Á‡Vãš”Bœ9£ñd`‹4iñM•s?£š6ZI”d†HŽ,gçUŒL³Ò,èÞ·RáƒSßàíÞü—«{æë•kæÛ©Ôõ&e,ZÔÚÀ0â8
_ö=õÎÿ@E$W“ogˆé¾äÌ¾§’êÚà8ÐR^…øjO5èCà[ÚSN‡ô$Ä{zðQÁÊÌ‹6(>Óš9%ÆÁýœÿZ%~è>k¼”xœ}ÁnÛ0†ïz
ÞrìHVÛEQd;ØmëÐ±¥@¢ƒùí+#Ýµ'‚Ôÿÿ¤>ND`öªï°97n´¦Õº•R’R¶‘gÒŠÐÆµZÜ1Q`@×ÛvÄŽ°?ëµÔ’}#]sÒÝ`š¡±Wžb‚w2ü!ÈÜ^§’sÉk¦ÚÒ¨¶ÎÝ T?¤’R˜¸,ž™ü&ÏüZ³™àõ6îõr£h®cº>­½jõIB%»bá±¸ªì&–¥†ëLéá	ñÓZ@È[fZ,|#ìêÙœç2cb8”œæ™Q•‡ƒXï1À#ûpï ‰ÍqW­Ï&>(muñ8p~& >s®ÅÇDÏ¼ŠÍý È³KvÁ,Ñ®s¡ˆì~ÍH0G´¥!L³§$Æè
\R¾´Õ.øÿƒZˆ¿þÈVÑ¹jÜ^¾Ã]È¾‰OUP¥¼›xœ-ŽINÄ0D÷9Å¿@"O‰m©…Z,X —ððÝmÚ±#Çr{bUO%=UµŠZ“Eq%…4ÄRÃ´ãÄ!;;tÎsåÙLHPÃf*æÂ;ÅwT©Eê½
Ìjœ•jfÈ-G¡­Ðƒ9Ú½TxÅà=b†ËGÇ)u¼~y7¹²>¥Vd™Õ#Yz»ÆÖ°ÂÆv‡çcww¸<ìo^X3¦©ÔÛ¿J©¼«²«ÃKü†½™vìàã¾%s¢{Âç>6L¸b«çèJnµ¤„u,[‹%C?[:n1ÿ­›ì§áW Y†xœ%Ž½NÄ0„{?Å¾ ‘7ÑùG:¡Pµí]'¾KìÈ8 ÞŸ¨f4£O3­2ƒ
ÆŽDN1*«‚÷ÖûˆÆÅQIÔ1rœŒ$±»Ê¹³£•ÚåQM6LÄDÁëÑŸhrˆrŠ2FîhK©ðÊ1Â{âçk·ÃÚíå‡ÂÊöxÒå(…©¤=ÝRk\áS[àéø
œoþ®—×ÌëPêüj´hLGuGÅG-ß‰¨„cë_]K%Cì'Ö2Ãîæ^¥Ê¡•úŸ/Ï°¯Çœ2Ü7]&ñÈAVR–xœ%ŒÁNÄ E÷ýŠ÷6>H&f¢³Rî\Sx´8miªñïeâêžÜäœZ˜ôQ;cGë´ô„£´a0Nû£ŠI‘¥nw…·
!z)>*1¸‘$¡PN*d'…E%ö&jêÜQç\àµõà=ñ§¯†ýÒðü|ïóúB“m1D8 ví]S­\àSáù¸ùN×ñ¾ç+——>—é_%a…1M¥¦v%§Àðyy}9¦´Á=ç¶ 5C8Ö–<Áî&†
ûšËo÷`IO±—xœOKÄ0Åïùs—–6i’vYdñ´ xQ¼'É6l›H’Š~{[e=xò4o~¼7J"nP	Î…UÚˆNöƒ´Îu’£îÚNIâ¨Ü¨Ù›I
;´=Nô\K¨"u£á´…zË¹Fš™µL1Á“I&ûe2^á¸©ÓìÃúQ¿*µ·K=ÆåZ©ÙªNk¸k¤hØF_
%x$_&xXó8Áñj÷zºR
4×1]~¢Š‹¾ jtÓ0öB¹äœM@‚\’ 0FÜÅa;ç½qÆÏk¢ÌØù†þúK„µ¸ªÿš9Ç›ãwˆ¬ìkÆžý%VÑ¹Ê~þ÷;ûiBºxœ…ËNÃ0E÷þŠÙCƒí<WªP+€MCØ;É¤±’Ø•íõï1¯EW¬FºšsftƒC„B*9
Š"’—f2Ã>çŠ•%k‹ŒŠ¦”ÈÉI94„Ø9S42Í•LS&{®R¤%/E\/š¼ë¢–0XÊôp@m°6Côlýâ1éðX´0!³¢€Ê(%­g:xFxX|;Àfl¾ævDgpJ¬;þ g</aEEDÉ«±×®!ê¡ÞíßõË¾Ú=@Pu`ûï<F„¼U]íÁf˜Uë¬k¦ê|ß‚±áLHe£/8Û--‚º>tVN«fBøt|\{89ô Xò+¸sË„>é©ôÑ`·²}¿j.ëº"ŸÅâ…‰”xœ}Î»J1€á>OqzIfr]YdEl¼õ'ÉÉL˜ÝDbôí]+;«¿úàïW£	^ ŽšäGKž‡É¡SZFc“R“:±lT:HQ«5NÒyƒ¤¢àV;id2'"#¹•Šá¹¯µÁ=Ö°R×ZØçÃJ_aÅ\®k[n@(c•3“àŠÎY¨§Sî<Rî+Üž?Ã
ûÍÿö°Q+tü£šs1Z¸¹Pö„¥|¤,T¨a'˜†s‡PKÊ`µÅ|éÞæ»÷ùá™±—¼ŠCMiðß»ÿ‡ÙÂ‰_š xœ…MKÄ0†ïùóÜ’´MSe‘Õ«Áƒ‚xH3Ó6n›Ô4Ýo—Eô”ð2ï3Ã h$V…(uU–Š«<es+iJEEEZŠ¢ælÒ\u‰•&n*Cm+µ*Z*¨n8ç²­¯™^bï<“ƒë]ë=¹Ãé·¬[ÙÎQÌl3fÆ· ¤ª¥¼°â5ç,¥£‘<=Ü/³éa½mNïfKÁÑùÐ]ª9Wç*»ChcZ§˜G"¾RfR´×Á’ñh]ÇØcð;‹–9môÓ©	ÑC …æø;mÒ] WL;„)Ø$É/1åQÛðûÎ4û>99ƒ	3ÆžlçW¾mWÍñæ¤_ÒþtÆ^G
é‚eºJ8§G‚÷9½¥ãüöúDö	¥·°p”xœKNÄ0D÷>E_`F¶Cbb‹Ä.`»Û‰5‰=øâö8ˆ=«ZÔ«þTÍD`#‹Î¨ÉdÚÙ[=Ad¥w8Ñ`-J7³›É+LÊiÝ]T(õ¬Í4*äó¨F!Œæ³’R+©	™iuMž)ÔžZq+\®öÐÇ+åHÛ9ååÄ¨ôÝÀG)àÄçÌ¥}µÒ?¢ì…>¡š|_¼‡RB\ “+Œ½­·L!µ™62…~Ð#ƒø·½¿ijH±sï-äîó+­wUŠo„XªÙ¶3c¯a‰„§äýÉ~Ýÿu3û×tyîœxœŽANÃ0 ï~Å~ ÈN¼Î!\{ìÖÞu•ØÈ8ªø}Ë8ÍiFÓ›*0GëQ5LÅ¼¸¼‘0Íž2;&OFóÅMKqHÌšSŽ6LšxÁì¢Ø„ãÈ1Oìf¶„bøèkmpÒ­¯ðq|§^®ñ—oWmE?Ÿj»¼‚Ã™üˆ¸Xìl­Iuß·Þõªy¢7¸I©éØÇÜ·ZŒ9o—¢2Ôœ‡øóüWÛÜ}nYaxœŒAjÃ0E÷:….à0’¬‘'„P²Í®=4ÅÆ‰]¥ÐÛ×…ì“Õç}x¯UÅÒ»`rï‘ú²Áä$³å“úŽU–¦-C¡l":ìà
ÐöQ.H[H„çXÅG×ªÏ2µQŸwõaNÿû1K]äº[ëå¨Co·¤; Š×ÛmjMÞU-y÷TÕ§\%ÞEÿ˜Ùðkº,’»µ”.ýî_õÔúRÍ–xœŽ9Â0 {¿ÂòÇ!DK/ð±N¢§à÷À¨¶Íh[(¸è„EàŽÃÛ$-—&q=H¡¬ƒ5.’‡«È
$‹Zò€ ½´dJõQjíúd“aæC#q[›J¥Ìm¢çí&zXüwOjÆ}Wêx¤\›A	a…¢3Œ‘PÖun¨äŠ™Æ¶õóÕµ¹dBnó˜»’Rç_û_UòÊÕVœžxœŽÍJ1„ïyŠ¾yš%¿ó#"âM<ŠôtfÂît–$ã²oï®x<UQðUU+DzúÁ¡™¤£õhúQ‡yBe<9‹–êÙGqö…¸A³tJÅ^G‹d´•–FŸöÎè	Ý€ÊÂïmÍÞ)µ^÷Š+<Ã]_ŽT˜N‡\–gPn­Ö£TÐÉAJyÛRkôT|V_Ï%q‹oë§Ì°ß¨
ñÖ*´œ|½ÞäP©|Tþ%ZÙ}K™áâ'^*\VbØëÍÿ”‰ÚÊ=?ñ‘¦¹Ë1váúø×[ñz¥v¹ŸxœmN½NÃ0Þó÷ŽóWK* e„1\íscšÚ‘ã´ðö8CEn¹Owß_D Qs^¯%¢â%ñªæz×Ö’7XË¶4­
+Êä"Èª’„ÑEú/*@mêB´B65¡äØÈf—á;à™Œ%Ë¯ó>ÁÕY«\ùã-u»¨
^‰o8ÏÒõhc¤ /dc÷Ó¨:Xvó^(8êsöiË‘¤m’f¯oÛG¶Þ<}ÂÖ ½šŽ©2FëÛ˜Tè42
ÁGï˜Õ‰cM‘ïëþfè§½u0WB§ókÿ­uÉj4Fo”Ô3Bô;ÕfÎÓý”X¬³côáç: ¹Îuþa]B¡£~€Hß1Ï~<{ˆ^•xœeO=OÃ0Ýó+î8Ø7R…
…(0 Ç¾4¦©]œ"þ=Î€@â–÷t§÷q‰7ÎjWklµi*.ÚN¶Jé5—µ’RÔ²^w®aH t%–£kPqî*!+×:Ssí¬q¶©*«¤*ÌœúHp]{6™–C¦ÛOgKO— ²“\Ô0^s^äíÉ§„èS×ód{ØÛ·G¤€Céð#Õ\¬²TgiñöôòxËvû»w¸r¦y#%èr‹×›ŒÃ|ð–08O‰"1B3ÅÀ¼ËúÎ#ýµzÆ3Ò„€Á´^8?-­O¤Ÿ„ž0Ñ³1$ŠÃ€Äâ˜|üÎÿÅ7¾5z@•!xœPÝJÃ0¾ÏSœp#I³¶“!Ó¡¢Âç½$ÍI×&%IÇúö¶Þùzuàœóý¦€kÊ3¡´œ)¡x©s%K%u.Tž¡*‹"×J$½è°’±µªd&JžqS1ÌJ-øÚ”9•ë,_QC4‚È!5>À£ì0Â¡“!Áæ=Î“SÎ¶u'm»¬|wlU”‚å«¢€-(%Ó¶³)a€'´©›!VlŽjžÛ#‡íÒ‡ú(¹³gˆcLØiˆN¶BˆU°}‚!"x»çýþv÷úvýr t'8É@Èƒƒ„1YW_@ôÎ¼ë¦Ð¦ìà|‚>øC;ž{éôôý…nIÈ®‘®ÆŒmñWÉƒšÅ*ÙÇ¡•	5¨‘ÈÞÇ4i5Sw“|–'úƒ­ê…7f¡ÆË´ûñG£ä…ô®C›xœ%ŽËjÃ0E÷úŠÙ—š‘õ4„ºÍ¦Ð/F±‰-Eþÿ4íæž³9p{1£g²žtöÚOfò1aFv8ZmÏÉ¡ã êAMJ‡ŒÖQˆµ×¨Ç)%3#'¶.r&x?£¢£/µA«µÃé½—­2mK}öáÏRÝi-gÐ.Ñ×}_{—WYû_Ç“8Ýç7/wiE¶¡¶Ûj¢±VÃçï!Têg¡Rjïí¸­ŽG¢.ƒz
†G"Ÿxœ;N1 {Ÿâu)PÀ^ÿ#„¢AˆŠ<ÛÏYk7v0vÁí Q¦ÍèD„ÌÆ!¦ =÷ÞkLœ~,&Jkëm!FÅ®Ø©¨ƒæÜ¹ì–ÅªEØ¤9!rÔ2Û5O&3œcm^©Œžæg\á~¿|Ü¨WÚo[??€ÐÖ8ë½‘pÃ=ç,¶Ë¥ŒAÿHÙs‹wo¸Q.;à¥ŽÞÒŒ‡Yh Ì²'h×QZeì½œ+¥cËù¾NíØ7þ_q–xœŽ»NÄ0D{Åí¶@»ºqüÊ
!D	¢âlç:±òppì‚¿ÇHôHT#ÍèÌLÉD ¤$Å¹t„#]´'k{”ÎC(ì°™öä}ßã¨uãT°’ŒªS–+ãì(ŒGm=³µÌ)ÃÅ2ÃK=ý‹ûÑç…òNë-åé	:©•ÑC¯:xÀ‘ù´m±úÊÞíB!®t‡z\>k¤rÖx4“±×z––Ä}gÜŽµ­ü¦j9j¹1ö§Æk
áê¾î½`ß¡fà’xœÍMNÃ0†á½O1{T4µëŸT!¶ˆâ û›ÆJšTŽ‹Äí'@bõ®½½¤Á[ê=YI>uE+'kÕyg…ÕÜ¤aí$)EœáJâ\N±„d½OY“ZÀæ„ŒÜû´5zCí½Þ÷<ÑÓ<þöeF[±<níòLGCŠx`6y»^kïø5ï2Cë‚3}î ý†\e¡/iUÆ»1õ²¢6ÕÃø}þë`~ =5[ŸxœO»NÃ0ÝýwKjåGlÇBˆ•‘/ðã&±Û•ãPõïIÅÄ„ÄrÎYÎ«UDðœaðN‰~ ÁIÁ…¢4H*5“Æqf¬gvÀž\mÅÜ w½´0ÂqÊ{nzã©×JyªåÈB‡QKNìÖæRác›á}[ý/÷à·ÖŒË©Ôé˜ÔjPœ	ÏÔPJ|I)¶†ÿ°’}-ù¡ä®Aœr©Ýz_¦ÃSÛV3|ÙeCB>KÚÿ—tÖnqY`ÂŒÕ6„›­9æi…6Û¶C\¹ÁÛG…CòÓN{Þ.1Ë8Ýýü×|òQÃzrŸxœŽÁJ1E÷ùŠ·×–L:™IŠˆºPÁè”$ï%š&%É€ý{+~€àâr9pÜ^‰€vZÙÉs9 ™2Ãl¸Bh·C”»IâÄçÑ	v6•rD?¢×‡ÑÍ­ 9*Ç¥B18©	…ÑdÉ1³ö¥Tx£ØxZ›[àîhúáH5SÚ–îaó¤®Ñ
n¸æœ¹r:ÅÞé*{Ž_¢]Ö@=YßÀ'c)gzÌT
±dX5xyý8üŽn!—~å÷ôË™Ú–±Ï2á¦x¿±—ý_wØ7j°›xœŽ;nÃ0{ž‚½acIñAÖ]|îr)	ŠÈ€¡
ß>Î	¸zÕÌ¼Ñ™%©¬P%È€! ³6£óÉ;ç
’æDìr¶â;u®Cjë­ƒˆŒ‚i*¦¨è¦É
Öö€äMéKëòÊëXäÇñC‹|Ýðoß7î•¿.­ÏoRÙG)Ú¨µ<AÔö}ƒŸ@Å'Ï\¹§Á27:öÇá4ÖV…¸­så|n¥œñþòŸZü„žX‚’xœ=ŒIªÃ0÷:Eï¡5Z‚ð	9„†vdKF‘îŸa‘Õ+
êõFÖI!­Á“‹‰KJ&4;äjŽ\FåÂ”Û}£ÒÓ,„Âj"¤0šNyiEœ½A£,Úä™=×_ÆæKÏãƒu…Sþ™|Þ–Øj9Æºý×“²\;‡p@-‘½í¶ôN®´ôÿã3œÖðÙóJ­ÐãXÛý›ã´5î:DÆnßcØã¾{òžìc¨JS—xœŽKjÃ0EçZÅ›)úÙ!„´4P(™´Ý€>O–ðGA•Ù}’dt9—{àÖ‚
­2FöÔì¼AsÁQPÎ”S¥¶f‡\öäj
.uÛ›àB¯gÒ+ƒÚ¢¦ã|Ç8sÂ9Ñi/} f­1øÀ4fø‰	ËñNmý§Ó0›4µ.ÏG`R+%=¼PF)ÙÚ9ÕŠ>1Õoë¯‹pí=O#–§6—á¡vRóª7•|_ß/çvö{¸l—S^ F»¦É—œ+\Í€„|§aAßä{Û?÷•ü¬íbÕ“xœ5ŽÍjÃ0„ï~Š½—„•¬Ÿ(„’öZè%O KëZ$–Œ´ôí«R
3‡ù˜áJhLTbŠFÑÉEJJ”³—Î‚fœVDrØ|¥Ì@Ê‹ÇqÒÎ¡õˆ^¸ ½ŠÎ)©%ªé­5ƒßy)ni-na©)Ü©Â¥µÿ|m{£c¤WÚš.a5¼ @BY×ÄÜû”x÷½Sp¹O¿~íl¦Ç±Ô¯?Ô šÑÀmG‡ü\çC_/¡äLÏàc„=Òêþ \ C*[y¤ðs¿¨²O>‰ß¶z9jÃé®[£xœ±NÄ0D{ÅJ”(—ø;ö	!DAT|c¯s‰Åt÷÷ä=4³Å¾YÍ-ˆà¼³­::Ž—J¬­jÜ[®¤áBkgØlŒ]‹<rÏÖÊë®5B‰Š{ç%Ê¶­³ºn½gf¥!-ðŠx^³àáÜÝæÓ—ˆã!-ý#pÑJÁ¹â5ÜWºª˜MÓˆðÿÖ†ÿZÙK¸@ˆ„#|æa4„Ñ^!“¡)Øi¥y%ði™1ör±7jç´üì€ÜOìü±·Ï'ˆæ|*Ë~K¶v‡-k9†¸^Šø5ay“ÂŽ¡Ü(ÿÛÕÝÎßt«¸¨eÓ(®%û}DW$ï‹îzú«öû—2œ$xœ…QÍnã ¾ósë%ŽlˆS­Víö´ÚcŸ`€±McC¸UÞ~‡¶jzëißïhJ"y²hÐ¨Aâ¨Õ »£T¨d{Êô=ž:åv89qÁD¡€“£ÓN#š¤ÁÞvòÐÚŽ´ë‘QRë^a+p+sLð^}€§7øu¶<VòáaZÑ/{×ßpPz8¾SÐ´Ç¶ü»úR¨j}™áÏ–íÌbSçÃ™R eÓT¥G-©Ný§TøPh¹‡Gç`Ü‚->X°4¹`ÉP"ØÅFù=Ó7ä‹Ì”w¸,ÛäÃ^üo´¦$´g&ð( YÈí¾¹¼ù……‰ n¥ìUTÐçâm´6&W8¨VØ2¥»Ž²OÄ¥cZ±ì…xÜ˜à¨eßF.ùWz_â#¢ÊÙ-1å¦{ÂP³/¾ñÓuøI*3s8%\wÀ'bâzÉ‘·Ï~
äš8Ž¹ÞÿxEñhÆ”xœ%ŽËNÃ0 ïùŠýDvâ§TUœ€Â.ˆƒcoSÇŽ\§ˆ¿Ç§­v´S2"P;hn‰è•0#E>Ja){b9Ñ¤7'FI/›ÍdŒ,¡T¡ƒÔÊ ×–1ÇFÝ;Ç¸’µ!C/¥kÌ^–”á§	Î#¾+v¡âéÇÙÎ¦õ”KA4£ZAK!MÝ®¾Ìð‚¾,ð°_í‡ËxŸ§æˆ¡KyþW©¨âU•Um>ß>^±}<?}ÁûæLApÉîk­6Å§SÍ)pÅ’¡È=ÞL€’šÛµõ±¾Ž&´!ÍP+aûì#Ü³Lt]ó4`®•xœ%ËNÃ0D÷ùŠû‰ì8~I*tU(,Ù Ž}Ý˜&vä8Eü=F¬æÌHGS2" ¸Õ’xÊ%GJ”7ÌBsF©QÌI®˜P4«Éè^bÇ‘{1r%#µžÑ^9Ó;itÖ»ÆìeJžÑ{¸ŒpøªØÍßÎv6-POÑÑZ"iêº„R0Ã†2ÁÓ¾Ù	·ñ/7Ìç.åë¿J£ŠWUVµùx{Åöt9Â£s°íëšr’ cÉïg\jùgŠá¾µ!Ö¿hævN×æ~ÇUŸŸxœŽËNÃ0E÷ùŠùDvâ§T¡ÂøÄÂqcêØ‘ë´âïqYÍÕHçÞÓ*"ÌB‹ óZ«Ù[NÂL¬UR+Å´ÑÔF™í°›Š¹GŒRŽV1iœ¢Œ8Îäì[LX”$„EÎƒ9ÚZ*¼cð1Ãé§Ç)õx~x7¹²½ å’Æ…T0AÈÐ¿[l+|`l+¼7·ÂéjŸ÷|Åš1M¥^þQAÕBï¨ìèð•ïŽ.Åoxõ|qÇÖ•M‹%Cˆ	!t¡Œ€. {:.1ÃsÑdãp¿nØêïèJnµ¤„u,û³aø Í_fŸxœŽAnÃ E÷>Å\À`c°Ei—moPuaÏ1‹àT½}IWÿéKOÿ—ÌƒQÒ”4 boU/¥Xú…&ÃÉÎ<;!œUÍ>gŽ´ÒóRe24t‚{5ö4B¡‰ŒšœÐb3eMÞØ9øðáô]±/?„¦íR=Zk	­…hj»ùR8Ã;û²ÂëqÇN·å™—çÈ¡Kùú¯ŽÒöÒêªšª6Ÿñ±q‹ÁÁÜ}O¹€«/ê ìá¸úÏ…9´ð¸·…o\òo‹)–œBàÜ¦½ø›?ŽVZ”œxœ5ÎËjÃ0…á½žb–%F#e,BH»è¦Ðµ$bá‹‚,“öíëR²:ðÁ§f°
%)­jC†YšžHjk¹³}ì|<9Ùqw…—
Þ¶Æ’
‰}HL§¶õŠ#!ÆhŒgi}@á¶:äoK_Ø­ðåÂë˜àìþ©y<éz›]ššç í7HwHð*QJ±ëœjåŸœê ïÛ8þo¯#—…§&—Û3m8J³§â#}Cý¹gxñÛ”*/à·4Õƒø·ÞM*–xœ•MNÄ0…÷9…/0%išþŒ±eÁk7qÚhÚ¤JRFs{Úak–¥g¿gëË‘Ze•ÒpÎe©Qcg%éÚöºUª¢š‹ª–¶UlÁH>ƒÀ¶êd]6u-”Òµ ‰U[*Õõ\	#{m%v¥`¸æ1Dx¡iºÂGLä{Ô#<žw¡X…9CÙé0[=PªÚ¶‘xÃ9ÛÔÙåL{”Ë#<¯éÓïýt¦èi*BîÖŽ«FÜ­ì£‡àÍìüaÁ”òW‹†À‡3f=:?@$4—è2p`ìõg©w98rpÞ8Û8ÆEÒÙmÑÁ‚ÁŒ#úd)ð>R"vó¥1¬“vÒ—ýûÝ¼Ÿ‚ÍßµK_S0öæOæ¬=ô×ã²o’¦›V—&xœ‘Íj1…÷zŠK «Öƒæ_c’’vQ0!¥4.Bú¹šž‘Œ¤Áö.Ñ¾^ž¤›¤dÑ•„8ç»÷Eºc­`T#òVò²‘Zˆ–‹ºáES–šuÇJ	FvÜ£@u-Uy[j¡•®yÛiM‹Š1¥xÎT«t‘W’>ÇÁy¸wÛÙ:o`³ÅžO.Íù’Åë~âfÌ¤›>B^·kºŽUðžv”’ô:™ÑÃš8Àç9È.·b9¯·è-Ž™óýÉZW”U+Ú&+¹ý´ùz¿†/æ Úù‰GH´öÜ[c{@ïÓnÎBY€0Â1Dœ¹3V"Ä!õâÆÑíí»ñóÚ¾ç$Ÿª…ÔTÿ2Bà¬Z?{Ÿ%ÒÓãoÀÃeÀ}?OK§NC<îp‘Œ.ágLoÖØ˜KÌñ¯¾€!~eyË«§®Î+\ýLèTKL q„9œ^À·ï›CJpñ¼­±)WæôhÑ™-í,ô•Óz%ŽëÿüZò»üÒ‘™xœ;n1D{BÃEQ+0#päúp?°­uíý³.r43S¼‡éMDs0vÀàËFI.HHYÆˆèGgÕ36©]çÈ%° ¶ë}&WˆÉá>¼aŠ}I¼X2ƒÉÞ9Ž–8ÛJaô®ðÀÃþ0«¸õymúS–>ëí'Ïú|K¯¾Ü¤U¹¿­mz×ÆyGàIT^¥wù‡ª¾¤M¢S‹uWWùÞb=]¥ÅSyÅó¾MK=¨_ºyX•xœÁnÃ DïþŠ½åP9†TUUU¹UýXÛŠƒS‚ûýu•rîiFš73­2ƒwRÐÙtŠ™£!RDÔÄ^ä€h³‘N;Ÿ»[¨\Pð™¤PB¨$•µ¤MÒ^Ü•^‡„6Å?Þ SDdrpD(=¡a6-rr‘¼2Y+Ê²[›Ö
<·	Þ·;Mðr‰¿úváZx9®u|i¬ÑÂz)àIx!:Z¯×¹5þGµûä:2ÄÊ^9$®¡¿-Û8—¬¦Ön÷ça÷Ù-÷£áÌ_[(ýy'‡ò}åž–æÒVxHú‡¡îgo.™xœÌ½NÄ0à>O±Ý(àØñBˆâZb×»N"]œÃ8ðúä@Ôt£Ñ|Óª•(å¨˜ÑFí
Ù[t‚vNœÊI©1FÓ]±Ji ”X³V(1
(zÌ>:ÉAF¦hðwyÐL2ØHF‹‘<jÁˆ†cÎƒËˆT‡{›·
Ÿ;ËÛŽž~ÒKÅ÷¶Uœä>më3ÖÞz?Z¸SA©îh×¥5ù'ï^¥NT±¤N7Ð_/û´”l¦¥Í;Ýìãùû²?‹‡ò±JŸ.,¥mðu_xŽnÁ›xœuŒKNÄ0D÷9EïfÚvâBˆp»ÝN"%ÎŒ±ùÜžD06¥®Ö«W3(¤@ÉaŒ~pÒh´É^³µRkÖ˜±wNu_8WH1’AJç¼Øi¥U0VÔQ±ÞC”tãbGiˆÊHì™’$«õ‘­,ƒ"g"ŠÎ·:m>Zäkóžn×KäâßêVüÈ÷´­Ï Ó5ôNÀZÄnÿ®s­\€&Î_ûèGñ·ý£ŒîñWÓ½rBñ™&8­;Îå[‚q®SÇìq™sû<ç÷•Ž8Ó2Ãœë‡ÿ|YÚ8çîÇnRá€rxœ»Ít™I§¤(5UÁÒÔ21Õ"ÍÀÂ,ÍÈÐ ÅÂÀ ÙÄÒÒÈÄ4)ÉÈÐÈÜ8ÅÂÂÀ8Å`¢ÎŠ‰S5YMÍŒM-'s1 u¦3™xœŒ½NÄ0„û<…»+PÀkgB×òëÍ:‰tqãÀë“C:‰šnfô}ÓªˆÀd`ˆÙ¢ñè‡è	³KnÙ$ê®T¥4ÅÙ8‰¼“ËA™t6¼±!q¾óÑFŒŽ$– 3kXgeD`²fLZ :ÚÛ¼Uõ½ò±SQ/÷ô6J¥Ï¶Ušä‘·õUˆÞéµWzÐº;ÖuiMþ©wïR'Q©RáYnB½ìÓRNjËjZÚ¼§›û|þ½ìÏñT¾Véù²¨¥´Mý‘º)Àlb“xœ•MNÄ0F÷=…÷ˆ*M›?	!FbË¸€“¸HdHãÓà ,,YŸßûÌ•p˜•w>8?7 ó2ÊàÈ(á£™£P£Õvg¬”´ÖJâ<Z1É98-'´³Ÿ¥ÂqcmqVvØøX*|¶H3<ümO‘*n\*.Ô‡rz„A™ILJ(	wÂ
Ñíé)1ÓtíŒøÕ»CŒð¼cp^Û’2ÐSÞRÉýí´12lÍß_ÿ`ŽÀ*qMt¡/Ò%ºmƒ+‚1&Þp…·—Ãë;¬eé»oq<hÅî€^xœ;Ìt˜I§¤(5UÁÂÔ0Í4ÙÀÒÒ2ÍÈÒÐÄÒÄ"ÍÔÒØÂØ<Ñ2Í8)ÑÈ7J6Lš¨³€ÍØÀÜØÒrâ¥B /­•xœEOkÃ0Åïþº6vþ4É(£lÇ±]:v-Ž,7¦‰Sl'Ðo?¥Û(XX2ïýôœ´¨­"Y¶¹éÓy³£Ú Â¢éJ,Ì®Pucl'®:OPÔ¢­LQç²$´96;),5ZQÞØÖF*¡çÔOŽnœ<±/`ãˆs¤­¡PU]É\©¼‚'©¤8£K‰õïäR¯3»`éÖûÀ^OÃv
ç?kYµJÂFÖl~iƒƒ{†·žð–SÄ[´œg¢ÕHÐ¿|~qZ(Ü„øê]„k …A{˜½'¤u¸…À¤qÎÄ,H=êHÜètŸî«-Šß€0NfXÁO	†I2L5«V dœ*ÃAÇ˜Yäsš-'.‡”­¨Ó#ZÏ¶J/Úºh+~ lA—•xœIj1E÷:Eá}ŒÆ*„„ì²¹€†’»±ÝmÔêãgºAVŸïñGBµ9b×,OdØ¢pCýM5» |IQÝR—e€-5æ¢k².4ŒÒsò¥‘g‘°„„©©´iíð*ó˜àyßÊ÷çü³gé‹\Žk?=€	äÑ²ã wš´Ve½^ç1ä©z“éOµÂ‹ô·Ë~šÏ!Ë6¯Ëñ Ôû4oÐÍþÞ êˆ)
¦E«Å{ÎèØÙj#æâƒXË}>ª/yÛ]$•xœMjÃ0F÷:Å}ŒF¿6”Ò†î²½ÀHÅ"‰d¹äø¥éJWßæ=_oÌà%ëH¨¼§ÑpD9QF•C
Ñ„Tb'îÔ¸vÈÁ¸¼ÏÙYƒŠC´Ö9kGdI¥$Gm¢ ­ÏKƒ#—>Ãa[ã/—ð³on•¯ÃÒÎ¯€Ö§&=iØK/¥ˆËíVzç¨âÄ_Ü:ìÞS‚n÷ëv.øÑ¹®e©ÃNˆÏ¹¬Ðžä
¿µ?¿Ä7Zd^ÐŸxœ5ÁnÃ DïþŠ½W±0RT%UoU/m ÌÚFq …%íç×IÔÓÎîÎ›¡ŒŒƒTÂðAZÉçJh#´˜Ô4*ãÑqgÌ¶6›1h¦•uÝ »Is†B§zÓsÏµr£È¹™Œp­´¤?Õãwµöÿêà1ÛB)ÛÛ1Ÿ¡“ƒ`B2Éá‰iÆšízD˜á-ðRË¸ÀþänópÂqmSž¨êz1t°cÃ†6Gïáuk€ËZç	c	)¶÷W!KPªÛÝ:lô@	2RxÅçñF¼k›ÅzhK°+|¾?¾`MsÛüæ(dXå€wxœÁIÃ@ @)Ï¢ÛÙõ&õõ¬ª(DŠ(\Š¤3Ïölç}UíuÄBY:*L'"åBOáí”Å¯Ïºê}ïmåÕEâ08…sj„¶¬©T™Ç÷üýÇx›xœËNÄ0E÷ù
ïXÀŒš6M¦!Ä±äòpÚhÒ¤äQ4Of`_[ö¹Ö-	´0vÓ`{N™t¢‚sœ,ïÚdÔ0"™–'²É„¡€i'R)5‰Œ	m„²]ßSÊ&.,£ÂZ£{Ê‰¬e‰	ÞÑ•^kÖ<ÕU_Î˜úcLó3ÐQ°áÔê÷ÝÔuDÇuu¥à¿Q.Æ_”¼­[Š;BFo¡`.àãWG!Kü‚² lrÆ»»ôÎ@K•fÀ8!þ .ƒÔÅíè/j.Ì¤ù€Bð˜ŽIÅŒ U¬åæÛtkm·}ÂÏÚŒÐÛk74‡híA]ÿŠF¾·f†›xœ•ÍNÃ0„ï~Š=‚D#ç¿©*T!qâVà9ö&1Mìj½)êÛã´ˆ;§•fç›-"(SÖf+û¾ÛJÄ;]•Æ¼Î³:/2)¬“fâ¬ƒÎ·Y©£³éóTI]£®MZD‡,ë\§²*Pj,…ZxôG¼(Ç#Õ—
#žÁžîZBÚÁ:Æ)Ñ~~†´¬‹¼ªÒ´‚¬¥Q-3¼¡Q/KÐ#ìOÝ:'$QOÃ/›WÍ/*ÜeÆžì>ÏF1{`Èm<‹32]ÛÉB¼ÆµC4a5uË2w§pÐÞ±².@œOÀ÷Ð]|ÓZÔ=&âc´a=à¬B0	k›6°â%´ìÛåüð¸ ä…œuX¢ØiýÜ‰ïvph6¾ï7Ýu÷ÿŸŠ4d¤—xœNËJÅ0Üç+Î^zóºIˆˆ[ÝùI{Ò†¶IÉC¯o¯¸Wf``%!‚dZ)ÁÝÔi6Û;®$Ú®5V‰­èÍÄU«9LÂP`Ô“B9äZ2æ:5"ëŒå¦CËFsm'¦ÐÚ–˜Z–˜à}Yà¥æqÇÕÞõyÅp»Ä4?ÁY~•g•âðÀzÆÈ÷Ý—‚ÿŽrÙÿF‰ó·zÀ‰Œ›k
æ[œásÁ !Âá3ø GŠsÂœ	yóa`)åÈ¥ó9Yíå<A7ê­	;Ò;5ãæ©Ï¹b¦šòîç€Skì×ð×YòÂ—uš™xœ•ËNÃ0E÷þŠù R™<»ªP…€»"Ö‘cÓÔŽü(âïqS`ÏÊÒÕœã™›"Œ²é”iG!u¬f£D!¸­b-r®°ÃF°–’Et	D_£1ÚpÞâÈ4m¥Ld¯)|¬¹è;mˆÌiòx‘.Mp2Nx’vá–mÂ_¶·.á¼Qþü ÷]ß6¬nê*ÚSJJz¶)a€W´Eõ˜£š`w¯ïþ„ÁÔ‡ã/ÚPÚü Ä]ÎX©Ùná}Ñ2!`p‘sFH(XGLƒ‹ƒÕ`²SBžÿFâäó¬aDÈ+­ow³R#x×/†›Äê;‚s,î	áÅÎOU°K*MØ‹Œ±H
_<+“L9Ée1çÉçdËmS.‚t`CÀyíÖ‰²ß›=:Ô•7¦¿¶ÿo˜|_­ª™xœ•1oÃ …w~Åí­-lƒ(Š’.UÔ6‹¥îÛJÆ‘úï‹«];Ýé}÷tï¥ˆŒ:ãd£˜²¶í•–Rµ¶fe‚S®—²
5¹ëˆ>áT	Ë]‹-«µæº–JÓÊQËä¶å\Š|¯×4†]Âzèpõƒ1Üà=Ý/¦¢²¼!=/™•&Ì¨¸h¤¬gðD¥$«ó”FxÃ)ð².f„ýµßæñŠÑã­qø±2ªšJÈ_+ñK³Q',ü:ëœ[l‚¶-!§Ë	^cXïp¶™MnÂø—Ï:ýÑÈ9ûz½ …à7ŽP•º;Bºiðh‹à\Ñíþ×š|Ž={Ÿxœ-ÍjÃ0„ïzŠ½Ù’¥BIÛ@I›äRšKéa-¯l5þ)ŠB^¿è^fXØùfs"YÕ•åñíJwNÊ%«ª±®´·huã*%~1ÑœAkÛ4Hfe¶5ºÎôÎšÐjt¨;«RÆ¼æaIðF!À>Òë¶åÈvsë|é—é˜¢4GU5ÒH)x;Åœ)Á;Å<ÀóõâXŸÛ»nÎ”fË%õÿ§\W:x¬B|O*^ö»ox¥ÛÏnðq,”–0ŽqîávÝbFxJ„ ¡`HL<ÄŽ±Ÿ'þSüÿqT“’xœ»j1D{}…ú°AoéšŒÛà*_ •îõ
{%#Ë†ü½×>if˜âÌ‘™™„A’Â+¢ÎÚÉd­N !ÁQ2`Ù5v¬ƒ«  É8%Œ7&Rð*o9Û0…Ñ.@bñ>–Öù–±ðÃý–þqž_½?c¯xyoýôÉ¥õJ¿Âñ7B°ÔÖµŒÿBµôV	õ‹²c©›²Ô—©>Vä×¾Þ‘b­3ö]NóÔˆ¦ùg÷—=Þ!YË—xœŽMJ1F÷9Eíe$éüTZDÄ­Kñ ÕIe:L'iÒÁÛÛž@·øVïÎ1&J“6ÚtHSÀ˜’UŠ&(²Ò8cy+vê\°ÅI;ô´xEŽ½Iƒö‹‘ÒÅ@'³¤):A÷±¶ïœÇ
o÷#¬ð|[~÷õÆ½òöØúõ”E­Ð qð g)Eh¥ä1øªø<Ž\öí´ëWaÈ-ŒhÏÎŠ%W!>òµr¼´”.Ë÷Ó_7âþ?\­•xœÏ»NÅ0à=OáÔ¤·!„X<Ab»§QÛä(u¼=éÀ“íßú,Y
3r¤Û¾µûÎpclh'Ä¶«‰f$¨ïÆÐ«›/œ,èLe¬i0Èv˜´×!8ï´Í@¾ZRþ9xå(3¼;Îð¸„³>/\¯÷¹\Ÿ@÷£±£kÚî×4
ó¶EþmõàlóKÕ;¯½0LGB‰9íàÖF|’$ƒÌuW®ÃìŽÏhSêÍ/[.çÓu‡j$"Ì¼Þv(L2|ž†¿n¹Ôk‰™Î“¡’âqaºWê#^Ó%OÓ%|?üõ„ú°Q…ŸxœMJ1„÷9EïåIO2=Éˆˆ¸Wž ?™ðò&$#x{ã	WUPõQT¯ÌeŽL@ÄàHââ#E¬ŒŽjÖ¢œqŠân+´‘š%[cfäLÆOV£'MrZ<Ž:	{ö½TxçÔwx;›ßáùê~õõÊõàüXêöi5-+­pE¾Ün©wþ*>ÊƒÍÚ=Žéà ­×Ó÷½@KÇ–Çé”YˆÏ´øRb¼¸ï§¿æÄ«»^T’xœPËNÄ0¼ç+|‡­òØd·!Ä‰âœÆÙFÛ6UâRñ÷¤_€„|°4ž±=Ã…PZÒ½1¡WRKãŒî/}´gë‡àüž½bÅBƒq:6D*rÞØh¬ÓxEìÑ… ZY’R]Õ pã1x§Ä#¼muáùîþz§²ÐÔår{e/F¹vÄÁƒì¥CžçÄLÿŠ¯5 ø-MÊ6Q…Ø~èØUK†nâ#3à4pLgÄïD›=6)ÃNP95ÂŽÍ0g ¥n…€G‚öÝÚ4WNy©ÐB^q¦NˆÏt[(œrŒ'ÿóô—ñ\yß›xœ»NÄ0{ÅíÑ®¿#„-%âü87±²‰WŽWhÿ(©¨N13:½äB“ÖˆžM°ÞrŒSòF²IÒ²švŒƒ¸††½“çLd›1Áy¥´ŠÞLc­òÉ&§X„[_j£7”¾ÐëíH=­ñg_V´—smó3vÔƒóÒô ½”"Õm+½ã©ø¸æÐAÛ°…r¡sÃqñŽN½R ÏÚÖ²Ï¿ùù[(óŽ|ªÌ§xüëZ|üic½˜xœÍËJÅ0à}ž"{9’ËŸ¤=DÜŠ+Ÿ —IÚÓHš‚¾½Ü+Ìf>¦7€G%¥C&eÆ¬B¢Q’"$0±š„83ÈÌ>|ÃÖ9é¨ã`ìÈáÀç”à¢8½Î29o%æ>×Æ_QúÌ_Ž=Îü¶„Ÿ~^Ð6¬µMO\§HHá£,Öû½ôŽQ-­­ý¥ìÍ/ÈeÅ•çòÉã
¿•mâûRiˆ½¶‚±÷2mH—šó%|]ÿúaß]R™xœËjÃ0E÷úŠ!Û’¢—%«”RºÍ2_ fb[
²\èß'îÛÕçžÞˆ@ª†QŽÈ˜å@5æ1²ÇÌ‘tr*‰[lT:DÆ˜0Zk1°qJ²ÑÞyïSŠˆ–sÖ)±EÜûTœhî|íNð~MO~^©Z^k»|€¼¶£’ÞÂ‹R
¬ë:÷NÿRr>8÷«ŠFký&ØË¾Q†Ã-öi; ÖÒ[]–Ç%Ï´d!Îó¥P>Væcúyû+$îÜ_xœŽÍJÅ0„÷yŠ³—[òÓ4‰ˆˆ[Ýéäç¤)·7‘ôT¸oo/(¸ÓÅ0Ã0uDà9g]öY	£‚’…å2s´z’.ëœ¤1<±ß±(§µ‰Ü	9F“²ÁÑÇ•HÖú<q=
.UùJëð‚xÞ·XàánþtÆ^qZŸAh#•³Ö	¸ãŽsÛå²á¿¦JLÆMÓ÷”u\æ
K…u©+Ö™ÊÆØë¯Å"lä;aj0#AÛeˆ­Roë ïýúSQÁoÁhÅw´m`ìí¸Âtj9ŸÂõþ/XöLãs®’xœŽ1n!E{N1}äˆ+Š’´.s˜¼Èñ®Ep$ßÞXJŸT¯øzz¿7%¦âròdœžÍŒÙå„>Ú"c&ÄPÔ%5Y;šÐRLl\ö!Y?¹É‹3ÄóÌ‰#û\TºöekpÚø¸~Ó/§üàÛIÚ*_Ï[;¾º`¬‹VkxÒQkEÛù\{—©}ð1þªê.­Ž›e¤¹6¡^eP©Ïz\…w[)»|ÛÿUPwXV[=‘xœÏNÃ0Æïy
ßÑ¶vm’fB¸!„„<€“8kX›LiÂ´·'ãÏ–}ø~þ>;'"P$D§;Å	•”Îö¹"7`¯¸5¤ÓDmØ…(±º“bk8òÖ¶Ck­î5
Ed:Ñ+Õ1,yŒ	ÉçîËbF¸>èK¿=P
4­cÚß@Ëå¶ë…j%\5ªi˜‰óìs¦¡]+¤àêeoÁ»3“¯AS,ÙZ{Š8MGí¦óæ}‰abšq‚*<–#;ù°‡JG@Xê<¸Lö10sYáêI„5Ð’S1¹$ª[1Ã‰¾m×ð:úN¾jÙbèËõîù–’b¿úk¬ê4cåj­{ñû@v[éóî¯°OÜ”«›xœÎAnÃ Fá=§`_©‚!Aªª(Ûžb`~b+±©¾Ú+dõVŸôæ lSfW‹¥ ^'ÊÐÌ¥"Å’S“b3¿2°O›}¡Ö49)ÁÕ8ÇÊ’99SMjä˜Köë\ìõxÖÅ~ÝË/wŒÏ>nßÖÇ<GNd?\vÎÔ¾mëœxƒšv™°Úë±ýË\ûn^i•Ij•xœÍNÃ0„ï~Š½£4ñ_‚«
!@\àÖ'ðÏ:±šØ•ãÐòö$¨p…ËÎaçÍ”Œšv’sÅ55Ö†šIÆZ*8§´±N+i;c;AÎ:c,€²»oµë¼×¢ã‚	e•2èqÆµpÂ#©6D/eHÞ0”ž–Ùp8™MO˜#Ž»”û ²cªQœK¸kTÓ›¦)”‚ÿB9m¥ì†®à/•K—8&í £ÇµµE(	nÁ!ö«‡ãíjˆzBe@xyº¬#áåßÝÿ>Ÿ¿Sv„¼‡xÚÃPÊyÞ×u¿V]Ìn%ê1ÄåZÅ	ëíTvu˜ççºm(9†>¢«’÷•ùÜÿ5’|‰Ð•xœŽ1NÅ0D{Ÿb{ô‘uìø!DK'X{×Iô‰‰Û$z¨fš÷fzËYØS)Lì#%>»FËÚ¡‰8fÈeõAMJ…!YlRˆ	Ñ`Æ‰9‘õbENLŠŽ¾Ô/²öž=-ðp‹?ùt“Väý¾¶ùÌè´ÞîtÐZ¥ºmkïò/1Ø_TQ›S-y¯ð*[ý8Ê±Ãyž¶Ó¹+õ¶ÎEøRs¾Ä¯ë_#êõ^exœAnÃ  ï¼bïU¢µÁ`ªªªrí1/X`7F±M„±Òþ¾É"õ4§™i•¸‘µ ŒF:²b5'ãû.ùÑ„±wÖ½V7ª¼6ðIœ%M(Îû˜¢ÓÉ’ôÎ8FÑuëƒ¢½M¥Â7ç6Áißâ×ðä×•ëÊó±ÔË'tƒÓh­·=¼¡GT±,Knÿ¡*É?0ítç’çg£Ø˜ê£@ó+-¼Ý(ò¦Ô9_VN‡"r¿ï¯fê¨b^‘™/xœ’MnÛ0…÷<ÅìÛ’ë'0Œ4Ý5»º’#‰E*$eG·ïH±ÑvÕ ç½÷Í€)ji/55ªM¡óƒ¤LU´/šGy¨Zª‹CTH1a — ’e^ lä¾Öª$Y¥Ê°ÌJ’ÔæJb)pN½ðJ&õð2GÕÃqëý<Ppdw>t'ÈUÑTu^íáKÖd™P~MJô)é>Ëò¢.nRá.#=(kžà<O“	ZFèçŽ’•mâìG™ÐéÞfè]Ñ”ŒwhíCG 1!¤€.¶âW`¤žÄ è`.Œ?b"xÇJk˜4¸y”üì[˜úÅD…"u#/0ÂDAÜvðËCOvºq„á°HÇ+L´šD£6:å]2Ýìç(â„ŠàbðÏ„fËÕ°Y€óaäøq3Órò^ÐØ¸â'òPa­9ÐÄ}×uç\ãÐ)Šë7ãº-	&ìˆ)çHÂùW8v™ÈirjYíébèJúA.Oð½G“Ð-¯³08Gu¯í†[íùªÕŽ÷súWüƒ\„oïÒq½î_A'q6ã>ß¶[ï>ŽøO"x–xœPKOÃ0¾çWø¶lÊÒW2!„¸rîÈMœ6Z›TyíßÓj ŽHH¶,?¾ÏŸ#4¢ç$M¥T#ûº²ï•¬»F´¨ÅMgÌñhØ‚‘|†¶m¶’¼V«VÔ(moEƒÕê”Z›JKÁ°ä1Dx!—Gx.Iðpî·øt¦èi:„8<Â±é„jÛ®ápÇçL‡yv9Ó? ì•æp!Ài‚]Ê±èþ2ÓÇÆ‰Þì $ˆ±÷Ñ%XáÆÁOW0˜n°é~^E¤5AC™ÌV—w	Â§g†¬ód`Á”òCFøÞöKv}Ä&ê§³æ3æìüp`ìÍ+Ã>X»ï¯§¿®f_Ð¡xœ•ËjÃ0E×ÑWÌ2¥8ÈEv%‰W¥‚Ý~€,m5¶dd9¿¯Ó&Ùw5p˜s/\ï	V,	1‰yª"™f™bÈ§*Nê0Éj–p•p2‡ÆC%¹”"¢,R1®çï(«Ø:£©ŒCF%§<•4b“o­ƒ/Âø
ñ-ÆÏÂÁÖý±•{²6»•´ý„ŒG1å1£Ð5¥d¦½ö| ž£Ó([Øž«ÛÝÑ™Yµ®y¨iÂx¥Ù¬sé1ÞÀ× „G8ÈÅ *ÝiaÔ/*½ðÓHá
öJiÓ@nw¶ëæÚ#öÖ]¡„D(§a°Î£ZæÇ²|mnùþDÑS>¡õèoƒÝåmÍ½g™öïµü,	)ucP¶®ƒêºùÿjäºÜ“Íšxœ•ÍNÃ0„Ïø)öB©ì´vìªB¥=¢^Zñ þY7¦‰9n¥¾=FÄ•ÓjFûÍì–Œz¥œâBZßy¶4|ePZ-µFy&¸ãŽµ\Z2éŒ±€FPÉ´æ^ZçhË™äB	t¶¥F©*©·+Môµô)Ão:–ŽúCÏ=^t†Mþöù×Û†XpXØ4¾ ã]»¤¢e*(%ÕC)˜áCÚ]gÛÃæb¾æö‚9V4åóÚuŒÂ3U%ñ6bc‡°†÷Éé‚°O±ä45m¯'mÂJÀ¹Þysí l¯Îý]<à˜ò½öz_Õé:M)tð¸?ìNO„œÂ9¢k’÷¹¯ÿÿ2ùÓ`€Š xœ•ÍnÂ0„Ïø)|lU9Î	B…c•
‘¶÷µ½&)‰CÅÛ×@¡§ªêiµc;³ë"EÈ P™ŽL2–ÅA‰1‡,a
EK&& ÙCã)JD•rP)ä)+0<‰¸”<+x.K)A§¨Kö¾±Ž®ñ Æ7t04¸Ggî¢ÝM›·Æc7–¶¤q6á	K^ÒˆåŒ‘ ö­÷èè3¶aÔb?È†Î¶âTç[t& Öm®hÆù„>°2 ÄzŒd×NéÛNGúò^aµi‡0p £xLŸ”¢Kk¼³]L*ì­;­ºz¯¿èÝ²ZTõòžŒøxíÁï‡3P¿ÖH.À*˜Ÿ"„‹~§LÖüâ·ªÖg?2ú^chì'u·5HÝnªÈj‰ãôÿW'_¤¬ÄxœŽ;n! {NAmûøì³,Ër›2'à=À‹ì³’sû$'ˆ”jªÍè)I`¢A¡fƒ€ÀF0&fÆÌLÐfË,¡§:¤ÃYäDžÏš@;ry†° gÙy¯ƒ Â>ÖÖåG*c•—ýÉ«<Þè—ç[ê5Ýß[¿ž¤¶^{\ŒBù¦P)ÁmÛÊéªÈåµ?d#ð:Õ§Œ÷íç:ŒÒªŸåZSœZÎ}þê‹o°tYÅ”2xœm’Ko£0…÷ü
K³ŒÚØ¼R;*BhÈ“¼šØ†ð4&$ùõ“Îhv½›#ÝóÝ»9GpÆ ŠT“BÓÀ˜Ð(N´$!T6¨®«2VÅ 8‚‘Lt©Ž8+ D‰%B‘©h
e†žhº¡iTG3™¡X5þó›ªL!Å„!ÊT¥$!±¡ªPV‚15cYÖu&E8ULY&NÀîZro—ø[?.Œ—,­xú #lê²®€4!”HU™Œ/“.oeÅYß?Òç§.~}?œ¥uÚf)xùÛõü9XzKúÞÜÚl×îß½$Ð·6±-Ëv,ke¯>)ÇÛÒYÛS|:«‹«ÂýÞ²èÄ÷­±íáÖ´÷“âÜ[ÞÓfQIÀ½~-ú9ÌÞØ…(oÎ‹a¶Ãg-©DmàÁ¥jümžÌ WËÍ¨_“û¬ª}1»ÆÆn'¥s°¨Yì•5töŽë÷WÜÐaÿØŒEëá—" éåpÁ÷˜ÙDô}UeÐ 3ð% ‹/†aá”×¬27ùÍ™ŠaÇæÃR>hÛáqá¨c¡X)f×Ó&ÌÚû**ï¼ÝFH@œç&†y0[=Bæî’k3­Âãªbf&öË‘Rùúrß'la%|²ÙÍ]XÀzBL(2	(§
Ýcé×½kï‹-njºÄf@>W?×Šª±…=Ê¦á"%§^N=¼B†„:y¬Þ%ðøJ ýËÌ~NLš1ž2Pwy8k:Ö
ðKÃHxU žf<jÙ³Ã:äô‚$É¢D%`·¨¨s’g#!¢§Y¶ :aùÈ•-xœ}’K¢@…÷üŠÚ“ÑBŠ*Hº'] "
Šn;(
°x©¿~œG2›Éœå—|7¹9§œN \	$#ÂuU…ˆAÆõ2%,ÑT5’ªPð¢1!*ÖP„#ÁA¬b¤kLM¢„#†xb &…ms*i&Âš§YÞ4„T‚°&ÿ…mÍE=(JÁ«Ëcð"§6°òú(Qˆô‘d¨©PzÑkÖ4\ 'k¦mÞþhÿÕÒ*­³|ûÓvÜœ l\gA·Ÿkû—€úÚd&¥¦EéÊ\Íbå‰µ6çä”£e§
·§4žº.µ6ñ#ÃÖÏ;Ïµ.ÁÇË^q<UnÈØÏë¯Êx."z€<.‡QvØ*7*’$Tí5	,ï 7ÏT™P[†ÅÙ½WI'¶´w¼k—øç§ïŸ¬Ü‹Çí£K<b=9<†¬šÍÒe¾èÓrwÇ¾ÔÅõ(ÖS«®Â{7£{ó*«»ãÐŸL|œëcšoPÈQŠg‡´­»iwµƒ”õc<Õµ­¸9ÑJÌ$PÞìbîQ·|w+q¨{¾m…÷5§Y=b¤Z¢ÏEÅ¼ãÉDázÒI“‰bï,ãÇÎ:Á×/o¥ÄÛáH‰ƒ×±4pŽ]òÌos;o|c‘¸Ãì5;§º¡ci‘çvf^¸2Y)Òûùü.w²ÿÜI¿;³ã7&Ñ8Ivá5è²´Õ¥ãeHàøš7xœ}“Ko£0…÷ü
ïQSÀ`‚ÔŽ
„ i^$iIfg°'¼Â3ä×éŒÔÅŒÆ»û]Ÿs%ßã¦¢„¤0‚²Hq¤!Iˆ$, )¡‚2Åt®ÄÍ H’HEV‘¨i‘ˆB¨i…HP´©©B€‰E-âpÛ$Eª˜U¸¦1kÀ‹"ËP•‘ÂÃ·¶¦U=É‹Š–é0IÒ“°È~ QAHÉð‚n¤kZ›5N€—?²·ÿÊâ2®YžÇ°lw¶öì]{­>vÖç úÚ]7L]÷oAŽj©š;ã]MÎò¦ƒ•Ûë:q\W_\îëÕ³Wš]„vRÞ?Ãk‹y,aÏß/ƒËË¼Èo¹Òù½°·µÏ¥uT}+ZÌwÖ^DóÊ~îàj¶ˆž¥Ïº–(<yÉ™^†y³}“ñÊµMÎ‘#8ÅÉñËÖä#;å0
Ööö4¿ÉRw¶?¼”‰óÞ<å…ïâNŠšõ{òY\v]Ô‹êûìyeÆ36Ü¦ÂjsÝ®¿öKÉüðä“Å#^(b[OB2RØ¥A6gÕmOFÑÑÔX
NCg÷ÍûœEr<ËJë(¹¨ÓçÇ›u÷œÁÔY¡¢Íy*™ý9pàýíõlµ®¬‰{^a/öŽ’žKýã O/þ
]-M[”Ú¤[¢•­=Üºùxq+iõÊW=tÆýÚµžý{cœNÀ9 7œ•)Ñ7Ü48Lžòú¯nS€l,KSPDßÁ#V8' NŠžå1¨‡¼Á7ð@,=3Ü°"èÇ¬‚dô#4dNA‡Óö÷Ø5Îh]âFÆ_Â"6¦ôáySi:–ßÉ/eÍ‘4xœmRÉŽ›@¼ó-åhyÌÖt#ÍD˜Í6‹ñ6ã(šÅÆfñöõñ$RNó.%=U•Jªê[JAŒU*0¡"$$Ã	Í0(å%‰ˆ‚#D¸&n)ëRˆ’¤J)‚™
!Q	yÌ'Š,á˜¨‰ŠQ&(ò>ÊDQÅð	/ð² I|&*8ÃDXU)M¡Ó˜‹‡¾¨[0§e_ }è’¼É¾iËhõR·ùO @$È"RDÆ¼Âó\RŸNeßÓØeï¼²º¥MuÏŸNyy¾‘åMÞ•9nÚ®B;+×öµõ&2ÿþ9Àk§'º¦é†¦-õå,=›Îˆô9*rp‘Z÷ªi©ãºÚt•{Ÿ'ÇØâF¾­?Ñô|ãÀ=÷riS†¦`m«RÂ¥i«§à®é÷.¢›Hè¦ñy5Ú[f“%f7c½f­§a‡óýŽq€¸íÌÄ“µ]d³0'Ñ‡pòYd£!q°«¸Í
¥+G5…+.FÏjúÖGåœŸgg±~fÐöylöaÜ#Kƒj$Â;Zø&|ò¤ÙÀ3«XÑ¨ÚC—É6µûä~îŽšoï¶£y¨qà‘EÛÇBŸYVQxH²ä>;ÎÅVg4Yu»!Œf+véy“Ç¢‹Å‡,°;zW‰f0°}G]­š»Is];í)LM5ìEà©G1YN>;'<Î­ˆ¦áÖb§‚^†B‹mÞ8ðÖû5÷¯3ÓŸ~ßçÑ6§ ª
´ô<Ð®? *¬­Oà@³¬¥÷¸*)›œâî¹Žûåo=:6îo°iÒ¸§èk°› ©†¼dàkc1KÁ¥—ì)aq5®êüÚœÜ–xœ•ŽMNÃ0„÷>Å»@"Û‰ýl	!¤²iUºAÀ±ðÏsk”:QêŽ{vŸf4ú¦®DàŒåJ«@RyŸL dPqD9x¥/…vˆž-n¥Rµ×!
Œ„*Y¥¼õJrÃƒã¼Ö`zdîZOó
;J	ö™
<|7ì§†O?1ôa>?‚P(FÙ:®8g-=çZéßCöyx¡n³ß~ÁÛ]¥¸!åßFu†ç,Óõ˜Ü%÷îvéri®â¦nš,µ¿õDðzFqÍ7êÙEYV”xœÍ9nÃ0@Ñž§˜>V0\Dj‚ÀÜ¦sN@qFl‘E¾}àHõ«‡ßªÈà°÷.øÐk“HKÅ7Œaò˜m`JÉª[¬’¸èÝà•hMðÆ‘ y«‡ix*Ë®OU¼·¥Tø–µ-pºïiÏËøì×Ej–ë{©ót4’s„ð†„¨RÙ¶µ5ùUg™%—´ 2ÃRöÖåß[Ìp‹³(õ³ÎY¸+ÓÔWõ×Y;‘2xœm‘Io£@FïüŠ–æhet³´”Œ±xßb_"ŠÝ€YÌòëÇ™hn©KIO¯>©ôÕ% ’1ÁÔ!<q ˜ÃûªLÆ®/Qì¢Ãðp…SBV#TIe »¢$(¢O)‘P…("	až§ˆ"ÿû®ˆ•>âTá!¥À3¹
ÁSÁLVyJ9§©Ã¼D6Duˆô¦rCôœ°¯ýš@™Aú;/ƒ?H^Å¼Ê«è‰—yžsóë5ªk(‘Õó†¡ç,/¡Hû×à‘Ô°ßá‡³ ª(@O_£Os‰ÖÆíLc©íÛé?Î!µ•îêš¦¿iÚFßX^¾ÎÎo[ÝVÂ˜¬î¸4[Móæ¦©ÍÝl{ßŒy«ê2#¯Æu¡»Ëã‰C³,:ÜíJJÙ ¥uÞ	¼"ôÆ£zu¯2Ón“lr9õ±0ó@9ø‡á EÖêCíÎ9ä~NòòíÖ²8>w±½îfd;I$]ØÌŠÛ‡‰ßî§Í¾ß§xaÐM®’E²º„äKº¦á.Äü»{´psZX†=N«ó9ÇCÉ’·i>„ÍÊ¤ùŽæ˜o'9²«ÄhÔ0fò<GIië‰¢Nçöe8N‚ªé"mPŽ»nmß[ÓèNþ¹×œô]ÐuIq,U`ûjØö]K÷*‡êUESüfõ¡¯…Ä×í ¶Æ#¦ÊÊ.•åfJ’…ÓÅåd¸)IÎÉúcÓ$»m4}áÐ‹¿»‹ÜwgÓåäçÆ¸” ¢ISTÂ­ªF¿$*"¿Ì¯(ß/¡wÒ²qí'+Ì?3ç
·„}ôþ™-ù—xœ•ŽMJ1…÷9E] C:& ¢èFQ—nÄEURa"ÝÉd¼½ñî>ïñ¾Ñ™Ák"Ze2#ª4“7©¸hpÑH–²øÂÎû€…08vDŽÐXëµÙ'š%Š%jÔ9OÏãØ:<q)ð\y‡ëÏ‰‡uâí%§CjÛ,îJcT •SJÌt«cð¿‡âýõí…åýúøw9ÃCKçm
ã¨m‡RW>A™>ieì²\$¦Q¿q°<ÖÓhýþ®qÏâÚYXšxœMKÃ@@ïùóRf²É~€ˆÒ^”êQâavgÖnI“·ÿ½üÞ¯.ªàMtHÐ¡!©¸äÉ÷h,ñ€DÞäœØ4g^tªÙ9	}O6õ!ÃÉDÕÎ‹Ae°b54|©‡yGÍöE'¸9®¸W¼»JÚ¤ùt48t=KÐâ€Ø¬öTjÕÿ„¾óŽº¿°y{~yÒv»x‡{H£òÒækË©–/®ÚÊg—oxÝmá<^>Ê¿7ž¤ù}2PO›xœ•ŒKNÄ@D÷9E_ ·íþ!ÄÁ!â´3“Q’…p|2À¦ôTzUu3sµW-1e
d%±&µ%%‚ñØÜûÍÖê
™’Qôè©7I^sÏ4Àñ$ŒE³üùÞrÈjqÀàŽ"%‰YBFf-%!*6ý^/·Í½Ù8º÷ÉV÷|=ð4øú]†Óp[^œ	åÁµ š£]¦ZíßÃæÃ¶³¹K­÷Ï§®;Oõ²ëÃíæiÝÚõk±îí0OÍ/áÍYnŸ%xœQAŽÜ ¼óŠ¾åŒíÁxF«Õ*‡’•%/ÀÐØd0X€wvòú´3Šr\)-ºªºŠ.	†ã(øÐKÕ·jàJRk;©e'úx²¢CÑt[UÂP o¥h¬ÀAÓÑÖrÓŒÝI£ŽÕÍ(ï[ê1µ•9&ø‚®ÌðqËz†‡Ë¸ßOL}Óô\v}#zxÏOœ3—Å•‚ÿAeÖ½BPæUi=£¾d°äÂã¤ô¼Ë…±O.åò–ÊLÀJŠÞÓÌ+¾KûÃBq]˜àº[˜U†1€®8åÝ/4@³³»£ÿJ¥„º€uèM¾ÓQQ€HÝTÁ·„/.nÙßHÕÜUÿMSl‰=„mÉŒš”duÎ˜hrÅØ³—3Ì¥¬çºÞåÊ›”Aeö©W·bZ”óÔÛë!¼,X·¼9¾êI·æ´Ã¾­æ²xö×˜
šÃx;Ãg´žyzøIeå©|º]‘ÅGöÃM€ÑÚ?à7ÖÃ~`äËTŸ3xœm’IoÛ0…ïúz4S$µIQIfK–WÙI|“HZ^´R”—üú:ÐSæò€ÁûÞÞ()@$3a†¸ß	‹a¡33åˆ‰Œ`dèÂ4pª5©•D@ìì°‰	ƒ„pfX6D¦ãpœ"Ht;»Çéÿý$³~g²Ô¶SË12˜Äp!0³ôÌ2±C‡ZÚ«}-A$j¼¾c{ðtÊ>õ÷IÈJµÌý~ÐÄØ@&x€&„«Ëò ” 8¨—>OU-ESÜ~ç÷¤>{¼¾Áò&ï9xøã)˜s°S7Y/é¿½4pé<æ¹®ç»îÂ[„¼Ú1ä/½ÈÚÉìŒåøâºüe<v»?ÄmÆa4±zy?Ïm±ÑÀmRâCŸø·¢êƒÙa7¿ûšÔýfoØö…¶±Jrº÷º(,²n²&É •È‹*}8e†tEˆ+yC§J¾.ãÕ±cám±‰¯xï²³eC‡Ãí› m/¨âjHÎb1§.êüe^4'ÞùW¾·j/¸cxë!§¯‹«¾˜ÔçÖ0‚×ÍŸäÖ_K‹IO_£·MYxhí9«w$´N¯E>T¡oMLzýpÝHÎOå	Â6ØQxÍÃ:‰°ŒZŠRy‹ìrÍW¹È€Æ>ñÌÎþ(ñI7“ó'”±lÞ§[MÚ©7»2´æíVÖò‡£Ñébu´ÂüYÏ&ë´¯Îètô}cZ,d.@Ó¢íE§ÀÃvÀNÖ%èD³O‹ºÖâA
vh>%å¥Ð´%uG1},ùOß?÷PW@í˜5¢¢e&8|ø^3Uƒ/ð/}òÿ¼”xœ­ÁJÄ0E÷ùŠ·—©iÓ$í ¢`—ƒà,ÄeòÞË4Ø&%ˆï Ÿ Ës‡{jaK~ kœ7žZ/{m¬õZ‹ÒÛ UÇØ\áTÁèvì¨ûÐ[6hhp£B¥¥GEV†0’UR¸:ççÊÁ%x</\ànÿáæó—Ö¸ï1]–˜Þya¬%§ˆ{ƒy½‡V[iT§M7²“R\×5ÖÊÿk/ÓãÓijV:Âéšs‚:3<oœ¦Õ3Óí[Æš¡0Æ…8ÇKb:äþëø‡7âž“ò–3xœm’Ko£@„ïüŠ‘öe=O¯’U c?vâ¾ÁLÆ` Ã`ìüúuv¥=¥/Ý*}]—*) PÊ¹EÒT£Œá`ÀÌ0RÃàš¹N l`&!J“¨$2uHá)Õ¹nIMf'CÞé”jÌÂœ™¥áÿ<¤ªÆ‡v’3Å)U¢ê'fBÜ&*`’€®$<ÖÍ!—Gäv-=¢§"ýÚ/ˆ
ÊŸµÈ~#Õ°°aÓBØÄX¡õùœK	Mr9íRôTÕšòö’Ýºôçøæ-k²6ÏÐã×¸þ$Q4‰Ð[0	÷ÍÚÿ«+HA}ëR×q\ÏqVîjÆªHåÞÚ[Ç“þzÑDÐ;›ã×q}SsšGaÞëó]o²ùÚQÐB¦]iýñPNÎî6#¹ßßöå48‰ãÌénëžá¶ Á5nÊÙi†Çd:KöaÁ7RAE°7ýÃ¡êØ5ÑìÁõ4`“¬56Àƒà~º^‡i®Ò·àÉkÂéî*z¼Ÿæ—m5WîÆyC˜9õåe|˜í¼iƒ~èËþfz&ÁàáAxÝç2¢Ì(3^,NåÎ»M­ÈVu5òF·Mlðõ¤C½\¿ÇyOBqqÔóüzôê÷åÉ¸ÂÊl‡ãbd'ƒQ …ÍÃx	>`ÿUAÌ¥Ÿ“¶‹Ø‡^è£ÕÌªCá-Ûí2ŽÙvf¯ýªÌôd´’×Å*|–Úz*­uïúå³‚žG:.”™ùáèûÄ”%ˆPÓ•%ðÑA+ÑÃÖõ¥PÝ[ßœ“ö^E	*	%jÊ.Ë«_Èa,¯2Äs(Y‹dröH¥(ÑvswËòºúDã ¢™!xœ­»NÄ0Dû|Å•(Q;ŽY!ttí*Ž¯³Ž9öŠý{(h¢™bŠ9G“"": oTÇÛ["ÑL(®QkBµÐ²\	KH±ôCË§­¶œv¥¹äÒPÖ“¦Ì´­è©xÑçtš#<`€gÄá†+Õ¢®5†¸7ä.¯×*Ì©F—NYWÃ<Ýå’pÑÙBIä†ßÚÉ¥„ÿ·X<†„ŸGpoŒ#X‡Þ¬fp¦Rôðö
G7‡âi£ŸRZÖC]ÿL×Þ…üQ†ó„õåà]½dïk®ÚúÛ{­ûÛUd¬¡Ru’oØi>ïRK?¼ÃûqêapÎGgŽ»ÜñKÖóª¢xqc@SÎÖ–úrøãUÅ'‡&ªžxœ­ANÃ0 ï~ÅÞQ¢u;v…P\¸‚àn{7©¥Ô®©¿§|qÃh¦Uf0Ö³œ¬4(½³HG3z‚žyÏnŒrRâê+ç:JÐYãÆ MzœaÌH}TAK;8"á÷v.ž9Ã;óÆð¨­íCà\	÷ëÖçRùºÞú%µóúX.O µq•St8!Š;½¤ÖøÿŒâD”òsâ•6hu±Õ¾>¡rZJ†ù~ð–¯ðúTÓ7oB|¤%3uež»p;ü±Gü æ!wÈ›xœ•ŽKjÃ0†÷:Å\ AoUPB×%«^ÀL43ÄÅŽŒ-§×ï\¡»Ÿÿ5vfÀ˜#†ˆ$â,‹H5U—±LT½÷¥æb6Üù9 'W=y¹·(±pn™ÞÕÛB²÷¨X‘J%Xƒçxô¾´n3?áãGñ²(~þR»´¾^Á¥bsŠÁEx³ÉZ£ê:Áÿšo>x€&êSÃm¢sbÁs çqe­=`t†mï›®¼p9ù0ëSF•3xœm’I£0…ïü
KsŒzbƒAšM'„@g¤çÆb–,à`“í×Of»u]J*½÷Õá=Õq2“[™‘a£4±r„ó´Àya#¡&6L i[#SIÇ,sÄÓ,Á$OmcD¸‰rc4Â0µ0/,“˜Yn/þë±•éðÉL
	!:A;O,H	Ç¤ Éó–ôªj;àóZU€õ2«À·Cú{ÿ8ð®áÇ¯mW~ºA &X'&x&„ZÖžNµR¼n­¦}
¾5mÇÅñþ£|’úôëSð‰­¥¬Kðò{ØØõæ`é.Aä¹sºŽÃñŸ»4p•,c”2‡Ò[ÍòÞS'd>©öxquÞ•Ò|êyÔ­fì§Tb–§Ñà2+rA½¤45Ð[¬]mœ÷Þ—$Q‘šÅy;¼ø3ª··&«ùj±‰'Î×‰ž‹ éÍ®ÕQgïKÂ'aŠ>âÍ8´zÕÓ1§ò—C¾¯Tpðc‹7s/ªrÆø$Œ+!Ïáï–ýþh|ðûŠ4°ÝÎ¥ ëe»»*rèzm?ä„­Ùà!÷‡ópÝ:^Þ›³@·ˆµwk÷s:Eæ—Ëª¸L4 í-Àë±šUƒ&¬úpé›‡3qYg‰$b»ÁKûmºÍú!
ï‚ ìMÃ5›¤D×@ôa<m>Py5èðQû³(óý‹:–Jßä‰ñ­]¤ôãøpô¡cÑn|nmg—×W¼•ÚßÌÆó·ÏÓÞyWr úãtüÜs©ÀÃ²@Ñµ'œŽ½j‡U+Usn4-–$@Þ¥â§$B¼HÁ³º¨3pJ²ªn8ðÞ@ñ,æ?Ë/Eä &“*xœ•‘Mn!…÷œ¢™éÿé¶,Ë–²ˆ¥ìl €bºÔ4``ÆjŸ>Œd/’(²ÂTè½ï•^ŽD d;´ª1cWõºSíˆÔr˜Zì§Îôå˜©×µ#¹½ªQVÓ8L¬[}ì›fåÐiR¨ZÙ×c3i-ðœgáÁé~ž³_9¦…áÖ–÷ýBÑ‘Ýûxºƒº?Vu3vM»êXUBùuåœé?ÄÇ¡ú‹—D€¶”iÕ€!ìR Å†¬¨fvßÁ”h³OÙ½:!(«ƒ»¬tø˜'p>Cˆ”ÊÞß Ïe,>×€èt‚7¶0-âwµE÷O*¦Í µÕ²xž%Íþlµà5D)Œ³S™½CËyþ:ZêO“bíß w<QL=àÅ³	3»Óßn{!~^Øn 1‘ï®+FË¥‚€YÍ`¢_áÙ¯˜ÞËÕ{Q=ñÉ‘Þycvr»ùínKe´Ü$¹4¶öîOÉ—õŠ_›4åô–4xœm‘Io£@…ïüŠ–æC”¸YFÉ(`ãxÃ[|5P,fMÓã_?Nfæ–ºÔ¢ï=•ô8@¯ÓPö1VˆLBCªˆ`) Ø—"Mu¢jD6„š2(9Ò5BÀ7Hé"%€CÙÐ¥ß—è²&âK’BþóRD#?’UbÜ† DÅ£ Gˆ†j?”TY -O*†\Hy‚¬¶	ô”ùŸý%VBþX±øUr{U¹ù ¬a,UQ¤œC“”¿¶>z*+uÞ¿Ä7§Ö¼ßÈâ:nÒ=|–5ž8s´œ,‘çLææf»Ý$ ®±Ë4­¡i®¬Õ4,”4®-—$'eq–™Ó™føê8æë:V:½÷´'D¡r½«Þ]* mó¦Fù±JÏ0ÇïGê=±i}ÏKn¦jv\p§¹G×µá~ Ãi&jø=ßØ¥)i‡<PÌM‘îìÈsÒ­.[Û³ºýz\ïGbìîÜlGP|ìíx4£'Í¨wÚAŒÓ…·¨¤«WÈuýÅòbïSrµ'YG/Yi4>8gµ”–*#E—/#úêÊuæûzîØ§~–h;’.Äc' 2æÖÑÙ6†ZO­=ûÀ¤¶õ8ØËTÜ\i¦’pzì*¢NÚ8r+¼iŒ¶Îc^®N3§ó°¾*Ã{ÍŽ{sïGRê\øa¹7úÓ.n®»Þª’„œU»mvA©©<=X]YˆSÙY=èy ¬˜ð7³ñ|ô}bÂ°PÝæ9bðÑBÃÑU'(bUÖp¦%OÖôD›2ÊÀXÅ~çU,å¹€‡ O"3Ñg´lêŠqÄûîÐ‰x…xÿ–›ì¯/¡‘xœ¥ŽANÃ0E×ø³«„”*Nb×®‚+±®Æö¸IIìÈŠz{
TÀ±üïIOŸÄhPEU[;oµS›EÙ…¶–Z{GÒ™Z1c¡Ä ¼DW[£mçd6ªi¬&tºäÑ·NIÓØ¾rŸìè„‰{Øá—ž^°À]ùbëòÍ†Ä4®}žîA*mÑF¨j]×âB§™þ³ª»ÆD:MTùqØÂc°â‚i™saàóL+ R.¯9÷tc>qsÏs@&Xúü¶ÿ4ûó#ŽKN¿„x‰B•c¬Üyû÷óâ·‹Šƒ—4xœm‘Ír›0E÷<…fºô$FÜI;ü&¶clã$›Œ$$ üFûéë´Ó]¿Í7sçœ»¹Jr¦Â&d6‚hªSŒ&Ol,ML*,j#L¬µDòZÛ"SS§Ùæ„›Ð„šˆ'œYê†Á gF"þñK'‚ØO­Ä¸)¶ù„™Üb:³™9eé¦n"ô*k$y®2àöËÀCA¿þ¯‚Ëš—÷Lx+4,BÜÝD]cMUåJq	–¹ò{
êFò¶¼üJoM=½¿ÿÑÒ6íòÜ};_ð´|û`¹qÇhþ'×€ÎË\Çq=ÇÙ¹»UR¹çEnheïÆvÀ28;NâãÛ¹·\åÝÜÚòã–ÓÑp._h`¿›x³ã±ws«Ù®%ÎHÏ1ñýEì–Ä+T,VóÚ[`wá)±_Ö‡U¶j&—g\öýÇGºÞV-jèéPíSµôŒ6ÀÍÎúVvŠi›ŽÏ†4xRã£¹0Ù¡ÑÏë>žo40‚ûÏC:‡Ãç˜lÐ0 …?	ëù¹9mÂ\ýÓŒø¡!›×*òpn¨QwY\GpmJL¯g´Û¸û8\ÙuÓo¡¥\‡âéZ-òõ‘é»³´1~yIF^üì>7µˆ/ÖºˆòYÒ†X­K'³6j½é$Mpj–¬·ÖÎ8-ú¤_ùþ,z}ŽGpºì|«x9ŸRØ
”4ª›øQ­?íïfóÍìÿ‹ik.SÚ¾,ä=ïø6±M dSˆ¤VYDÞI—ñ‚È1¯“þ-•í[Ù¤šV¿ceþÛ„(¾‚·/F’šñØôPÐ)Ù3ÕKþèÄ
—xœ­ÍJÄ0F×æ)²è¤mš2ø#®ËÍÍíÏØ&%MG|{+¢î·ç;ør"â¥3Me¨óŽ„ôªÔÞ
… $Dld×UÎí[ QÈ¼F	NX£mådé›Z)«	œ®<!`éji”õžÁ–‡˜ø…nòÀ/p…u WHü1}±cúaOcÈ41Îg.kmÍÞ¨/„‚íts¦‰±p›©Ài<ñ—ÅC&þ	Z
~KÚ>Åmi§Øó5§ó–ˆ±‡Ã·½ñíÎÞ½»ñºÆðkdÏcÈ±ë
÷~úûöÜŽlœ2xœmQÉn£P¼óOš£•ñc)0¶Á6Øà`g.oa_`;þúqf4·t©ÕêVUºFF)€’¤ bQÓUBVI‚xüh…
²5YÖcà˜ëbF› Uàc×¡Â«¨‰ b-†<%ú1"¡D”þó¡$*DŠùDÐdAL4,i1Á¼¦ËŠ&«TÑiœðHK¸x³–ÍÇ˜Ó€3ð\¢¯ùZRÖÐêgËÒ_€—U(©¢¢Êà	*r¸­ë|)«|\O<7-£]õùš>œ&ôóAøF–vé§àé«L{åx`¿ÚƒÐYyÆñ-°ÿÞ9Àë`bÓ0LË0æÁ%µ„¶V`nÔ¬ü‹Èœ«aµãfÅ6Š¤£wÿ-˜ªÁ¾G0†¡ÇÓñ¸¢³OF`—ïò<…¤¸(Î¨qLœ·éæ»3ëîÛ^ôç×ŸôÀÉÕ)ä9P­©ª‚Zj6[W
Ö§,¾ØU™Õ¥—^«.1Wa!`©].mï[¥5»Í©YÔK§%âÀräI%ì÷SUÌÜÓÂ¢°ýl²Ç+"ï/\«êDœ¢¹Úl>z<ÎÜõ½gZP*«EÌü&E3jØÚÁ7¯Ãrïv2Jý~rf‰wKu¿†ü›¯_'ý¬VQgÞÏÖä†ÕX,w^DëÍ„ïCÁišÞÅ›uxƒæIÞ2=oYÑXÏËåAüìm÷®fª,ÜÄk:¼pàÅw‹#÷/3Û[|Ÿ·£,¥ {|0ÚOtÁYAÂÚtÃß)»Í›KM?ª|?Ð”&ùã¬Œâò!'Ö€K\M´	pÜœýx¦þ4”,xœ­QËnÜ0¼ë+xlÑ]ÃÞµd«‚=õÔÉÐ½¢‡«GRï×Wnš=äRôF‡äp&G"{1‹nìQq”ZžÇ~4pI#o;Ô€\Œ8lÅH>WN­…ì§î¬~:IA8‰^“Bužx7ž¤ÖK^B„»«ºRœÌÃ¾Å+¹-Y|‚›õµþÑ¤Ê'ã3ÙFw’q–-|h»¶eu&gú+Ùç…ÔDÊ%zxD[ÂI¡×&2öÕÅâáúMMpì  %ð!ZfG.ÄÍõsŽ¬Iµ#n|ñ‚#X-ª:f<ä…@M)`€ª{Á<ŸP»VÒÜ/QXÒ~ûÑÑQY90¬æ¸5×æšì»÷U"o¼É­¹’†5ìvÔž£HeJô½ÔXíÆ,¡Nûp¢‹«f<ÌXln»€ZGJ•²ß7):<‹zËÀ_òËKå²„’_®ïÌÅ“>†y>NÛÇÍ”ý¯õ—4xœm‘Ko›@…÷üŠ‘º´Ü 3Ã£j«˜Ú˜;Ø8Ž7Ãó4àä××iÕ]ÎæJGßw7Gtœ•ÅŠlÈª‚Ä!U‰4QlpªRÇ²ÉâDÅHj£Ž×˜”bN5E—™©@™«H‹1Ã#†°,kÈŒ!†ýÏGZÄj(Q¢kÑÄ¸Øˆ"Èid$Lf‚‰)3)DÖtÀã¹È€5ôq¾ôã>¼«yùµéÒŸ@ÁºŒtˆMÌeM–¥¸©ª\Þe.Vßë¦ãmùö˜Þ?ôëøDKÛ´ÏS0ÿˆå,]ì–;°w—>9„ó·—€¦ÞŠ-B,›gëyÍ*t6ìÀòôì‚¶#ìÜ‰¶r]²xF/¾¼NUÞŽjÿý®%†¹wa/T)Wªí)\¶ÓþP½ìÚ›—\-û¤¯dy#MY°ñfÜ:¢MEÔ‡š¡ÂkN­ªý±[Yë“{²ÜNú¬×D¹Àòpº…–¸œVÞ«j!ßæííæßÆ!vÞÇå«µÔÎWG‰;ä~y”E%¶›óÕùàæ™sŽÕ/Œué-ÐÎõ‚LÆÙS=,ögZnŸ4(Ú®?ì%p+Ð^¯ñÈéi¤nte¦
÷X—G×í™¼u[»}sÛÙ¶¬ì×Ku(át~WT¼ŠÈÅ|›ÃéÎh½ïV9ëN›2½ÉhÛE]*w9›iþŒL´®Ñàï®šÁšø¡´þmæø‹Ï“6¼K9h‡²¿¼àÖMtM>FµÈ‚èõ/¢î¡çeò[Ü©ße“JR=V|—ù7@uTñ¾b>ÏhZ‘75øpæÎüîü6»E˜xœ­An!E÷œÂ(L™‰ªª]v›žÀ€ÉÎÀH¢Ü¾$•RuY©/¾¿Ÿ¿]3ØÞm=¡%j«m¶äåàäZÙÎ}o´ÒÂ«ž-˜)VPV¢C¯‡‘k·U]7hB£7Ž,ÚµQ²ïçžê˜2ìéŒ±Ž°Ç#–‘>1ÃsþÖVù¡½†XiZÙ4¿€TzP­h\h!XSçP+ýŒÅóLÜNaoÎAÄ™Ê‚–xp–R„š Ðäy¥Rù”Œ½ÇR	›ÁC±cˆÀi‚:Ò¡€o÷6yº7N¥%nn(Ùà¯ì—|N3\Æ`Ghú¥ÝPn›3ÕèLwÄ#Æ{ŸX1ö‘OÞssÝýý'ìz{©Ö’$xœ…‘Moã †ïüŠ9¬´—M„‰mìª­š]E{h›CSíµâcl£bˆ »Í¿_ò¡æØzÞgæR@d²å”é¶jpÅ4Ò²k‘×ŠëFËºªk¦›ZW-Ù‹€.A¥
!iÛÔm)‹•æcmBÖ¥F%ÔJVEÃZ­‰˜ÒàìDoào0£ÄÐÃmÌò¡¿Èåˆ÷PTœ–œUeÊ)%Ê£I	<¢Iüž¢àö]Ï‡wíÒ‡þËÚr–­u¶’Iã|Ê»C‚4 h•Ïê 8ç„Ó6³“?•Ï8ˆÓ~ïC"äõz÷a¬çDt¦â•éŒº°ºœïÊ—S"Adh8‘×›-Œ“MyKØyÀÏH°ý÷¼yËõ;úÉiG);’È•d}*Úã¹Q\²¶Ñÿ‚È»Ÿ	z<Ç;¡þ¼¾<½m×Ï@7Ã,w}@1¿2L$bÆ
iºàÇónp6
áÇe§„ìLïP/|×-äáæÛ¿#ÿn­¾€œxœOÁNÄ ¼óï¶c”¶v³Ùõ`âM¿ Ê£¥Ð ]³/»Q¯&ž&/3óf¦$D`JvÌ0š1A%"vJQœP14õ RkÃÛž¬2a(0N«‡Òž÷#
aŒR­ä\S6™ah»¡Í80"·bc‚7tÅÂÓ–'‡“ºâã	S@ßÄ4uý(ZÞîèH)™â²¸RðVòŽkL\8Kï4Ä­¬[Ó"o ;ïrÙÁ5CMÈK»ÊHç!;_÷ù8[®ñkŠgí0ÿ¾û6Çµ¸ró‡ú^]öðlS¥ãjá½ÿt3l-ìsi4É‡›CUFcnê?¶‘/0§‡Ë•xœÍN…0F÷}ŠÙÝ…ô
5Æ·nŒú¥n›””ÈÛ.L\™¸šÉä;gòQF„Æ;×jî”¶´ÜKÑiaTRõ]#¹‘­¶Ç•Í6ãD`…®ºÆ[eÄp)PÊúZh¡LÛ7•¯¥tè™])¤/)Àóº¸ ·îœO7ÌeÊ×Gµ6•’Â4pÇçÌ¥qŒDø”½æ´E0¥¢‹“Í;¤•æ• Oy´‡?‰±€ð;HÓ°ŸYð¸E‡‘ÖãŸ‡…òêŽ—ÞpL…¸°á7E‡ó2Ä….p¶°“/{×ÃP¤¾/ºýþ¯Rì˜”ƒ¿–xœÎA‚0…á}OÑ½ÁL)©1Æ¸ué	`:iM-o/žÀÄÕ·ú_^ÉÌ‚C´L†‘(Ø–ÌÙÐx°ÒKëè uƒ¬ž]æX4·à5z	Æ’ÔMßIì[q›äÕ­eLYßx*£¾®/õiî¿^fÎ‘û”‡³6½m Ñèx EiY¦RøTe8êh]¶¯]™RTê>‘C•Dªþ}üµª>s5Wzš5xœmRËŽ›HÝó%Í&£ââY%£`c6ÝØ¦qïŠªâaó°‹§ùú¸3šE¤ÜÍ}st¥sgØ8ÓuS±mF3fjªaFmØ¦–!MËm=Ó3-#ÒsÖ
 %³Tª)Sh#Í *Î)A*ElQÓÐõÿøqŽ¡¥˜HÍr†théPU‰EL[ÃSƒš„QvlX%J0zR‚¯—ì#¿0Þ²úsÇ‹b˜ÝÐM%Ò5M%ãÀ«„?dàkÛqv­ß¿¥!ûü üV\‹¾*€üó¥D`çíÀ>ð"çpŒ—¿æÀ½Ÿ“¹ãÌŽó2YÓ2~Ú.âù•g};j<¸;õƒÀYSñÔÆ;ž7æOÐ=CÕšR[¡½>ú7O{b¿4ú›3¼•n¤&áÞ«ùË>£Šúûs_=1Ä„Â}[O‡Hí„ëkG	èý¬öBqÔÝ7/™­’žzÅDû³±¹¯GX.ïy&x1C;jêj–¯LÎ›©†‡ç†K_gBïªÀ³©…Ú6òZ‡ÈA7uÿ:nnµêi5°ì4ël5nŠ§72™=\ÀŽn]	ô!Oï¡RMƒYàî‚Ìy~DêdQý”$ï®5±½wÃ![ü6O‡â¨ˆ}³¨S÷î‡‰høí2Ž[†Vm¿T»v\mk4ÖÃë•/·?JsL½bƒ7»«™RÆótšy?Üè`¤I®ß$ðm=>¯¤ÿ<[FîŸ“ž/¸u8»¬à/™ ç]z¢@K®›å—‡k/8ÃÍÌíÈÐ<Þ‹ªk%é·öhÇ†ÉwJä±—ó»Œ‰¨F,˜\V½èøû'åŸR4õß `-ãý	~J?xœ¥O;jÄ0ìu
•	‰Ù«ïBŠ”é|éùÉ6XÒb?{ÙÛGW©f˜ùÐ†ÈÕ5J­zÑYH=v±Á˜’!:HeTTŽÝÃ†…¸6Z)cŒÖÖ$ô±s€ìU´R{åü•…ƒæºñðÄÂ<Ê3Ö•ÿ´Ö:é.+â×òÞ¼ÔüÉ;mœ7JJÅß¤—’55/Døï ö]áÈíA ¥–/gFñAœ»H€–3ŠyÙ©nÏ—î}¦¼¾ò	nÍ–©à(jJ">oÄ~JÀu+˜2xœm‘I£0…ïü
KsŒ2a3`©{Ô@Y !	áÆ@‚hc²ðë'=£9ŒÔu©Ò«¯Þ¡g„ EMR™HRaC1ˆ‘‹"APN2¨ËYBD„°…&aäÊÔ ªj:ÁkêZNN‰d¼,Êjª‹©Rþña=1%Z–A	’œ$R’@U×3¬hFù‹e!éxY3à‘/Õµ¸oUúÕ?*Â®„þ¬YñHPC¢UÅ CQE×—Ë‰sÂÀìÄ.o×š‘†>?Š—S—þ|ßœMÑž
0ü*k2sWÀŸù`ëÎVf¸ÛLþèÀ½µ°eš–mšÌ³rƒöÆòôò¬®o
sï¦™9®k:Ña°=…*}.KgÁÏƒ~JG ¥ÊâÕ~Tí\KÆ6Ôs2cjŽËÅã°t¿<ž3ïxx}u,Åò”ñ|°°‘Ó»+ ¸ôíÝažuöÙ‘ôþ2{$tµh»0Ü}¾‹¤ñßZ-½MŸAlŒ<
ix¬¥>˜ÍË8ÁèOÊ:œ›'»?ûfùÐFÇ¯qéíúú§ó,øØŽs¯òBo;ÕÅËØ¬Œ(Oí(xt^ûr¨¨ÚnVÍæÔPz—7ÏË.§»½)šŒoœéj§Õ]mæÍKÓ)Aõ#¯våÎ×›Ñ.¥êêâ#Û
£GÜ£çÁŠ¶×ÛÁwÚ§7F;±1Ó \ÐtbÝËK·|À{¬ÇPø›Ùd5þ>1aIXA@ÓQ
ùìHËÁ¨« gõª.“kFF-¡ù¿–CZ‚`×ŒÌÁ2¨;Þtü7æ‘úØ•_xœ•TKs³F¼ï¯˜KN.ÙËKB©8„%YRôÖã¶À+ËÇ.é×äG¾²S‰Ã	f¶›îé™S
m½M}®§kÄ5µÛ	HàR“ø*­+´cL‰‹2’ÓTB[Q{¾oú®iêšK»¸ÝõºÍ35ÒmŠêy¾A)dÄs '‘Ô§ð[ÍuÿöÿÁRIã{'¿ƒb´MÓhcM‡î`ŒêjÂ¤¤ßwtU}‡Y(X­æêõ‡£,†X†3kã¬ú·:lÙ¿ö,«g[–?`ý>N{Ofdþ8ËéàÂD—JÁ*^^fæÀŠÕ§çÒ²ìð´|¯#¨;Fß
­DÚUWW»e(7A¼÷Ïê[ËáR¿:•1î9	>eW=ÔÜxËõ‘”U`NØ‘Úl½)Ÿ*‚e€ÿ<ŽÙa2×+gux¤1­µø±Ô†‚î«ÕFèêwûÎ„ï4Í¹†
ËIóÒ"ãl¡œEo³U•q×÷‰ÓaQ±u,‹håÂ]¸}»ww÷ürJžçÖz‡×Þ¡}v$3²Ï¥É÷ºŠ÷ªV¶Ï¡8È´ý@ç*3Èõ2’K|í,ÅÆÃ»Ž¼ÓÄq7=%w#˜_åquróƒÉËh¿Ë.±„£‹r^„Š9RªNé:a´ÌÅtMp5^K·£äÓíî¤›"uörÔõ¸:y®HÕÍag/­éaKŽê ~|Dðø<ªrôšjöôO™"›ç9õ$-I…lÅ<^È¬u·Þ
ði½X	K‰d<À-™GaÝ 65
X
YÎÃœ
’ƒKÁ%‚úP—Ev‘ß>„/¸yFóWÖ€ÑØ"€go 5M…7(úµy’Åôoì=úxk:I}÷JM„(’Ú†Œˆü™ó‹ô™Î,Ž7
Æ¿À9¢)¤ü«þá‚‰zè}÷°‰šŠ ’B‘
ÐW1Ù›®›šÙË´&Ë¨ÇæÝh­²˜yLÆ¯ïÈÿ2t“S’˜ùßÿSˆ¤Aúê#÷jš‚6áãæà¿êø”jŒŸÍ³Û¢‚þ/*tŽ˜}Ä‚¿É‡³ZÌš…)õ[<Zîå×ÿþa¢¿ ;/˜5xœmQËŽ›H ¼ó-åJÌ³VI”üÀcÌ83—¨iºónû”¯ÙÛ/YgW¹¥.¥*UÕ¥FÁ0l›$ˆ2‘aª61¤pKãˆ›ªIUHM“PÊ¤ŽÖŒ ¥<MujiâŒÛ)ÔRƒC!MG<)ˆé*Q~çm…Y©ØºÊ‚
1(GÔ‚Ð&:a‰AÅâ
‘È4æ­ ;VŒ9p¦æàS™üâ¯%«>¶"ûTZ¶b™‚
T‰¶u]Œ#`]Œ›)ŸšV°®º}ÍKSòñøC-ë²¡ÈÀ‡_p–k? ‡õDþ:À§ø¸üÏ—€®ƒCŒãÐ	·iãÌ=:;”_Œo³.ü+ÆéÆ÷±74Q‘.àu¯m¢Y‘£ö®ëHàÜêßñìºÔÿžÂ…‹GµØ{»»'V;;¼u÷jžA†l¿[ÏÚ¥´ðåZE%ÐEÏ³á…rtW—P[mk±·Ä^–n½ôÜ°'¯_oãËxOäÂŽÕ:¸7s¹{je®b1-cce:'âÉž7û“¾íß6=Ÿe¬S(+F[ðê%8ÉÞD²Û5€ÉÂÛóX®þêØ±Ö„îª­¬R£÷¥i¦·óvóÒ/é·•åÝéÖÛ0Ìå'¦÷¸¾­½`~ë%ð\È‹X>Ñmå-ä“rÝ4ëáp²|'ÉŸM³Ç4ÓC[²;è?wb§•¡—o=7Ïøœ¬VšôÿgËÀûócÒž‰Œnª* X?±aïL¤.ÚÙLš1?’rV±`M:ýÈD'IÍ\³¿ NSð~ù0i(kÑNpE1”TàLDS4ˆ¦º&âöŒ-s¢‡Fþùù÷¿œÎ
ø”xœ­ŒANÃ0E÷9ÅìºjcÇŽc#„¸ ›^ gÆM q*×©8>©œ€Í_¼ÿÿ«E’Å˜œuÈÄN¬èÁ ¼w®çÈ<hNÍ‹ä
{§MJmOJ¹øÀ„AÜ Øu–½¤àôïÞi´"fÏÑ{k¢„ýEa0ä—tGÄ=6¸Õq-p–;æ:Â?ð6Ê'x.?ìTþØë”«Ì'Z—Ð½ó¾sÊwpTN©f§ËT«ü‹¬y“rˆ3pXð¶‹°&k½ÞžÚö2Õq‹{;Oyû:æû"í#Ž4O°ËWÌÛû¥\›o«ÈxžxœMKÃ@†ïû+æVZ7ß»EDÑƒ§ñX&ÙÙdk²[6“Jÿ½QQ¤7Û<óòG"H
Ì4æT[mL©ˆÒ<)Tn­R6ÑU…‰VJ–¥8`$Ï@•T‰Q	‘TuF:C’ÚhiMEy*SÝYU`-pâ.DØÐ=w°Á=Ž½b„«øÅVñ‡Ý8ÏÔ¯š0\ÏJ•K©ª–²”RÌtpÌôß0•:ýþ8ÐnÅ½7SDß<Ä0à.:vöð‚Ñ;ßÂvŒ§p î¶óÆ—„ý\Âyâ€ì‚‡§Ð
ŸsÏƒL0vám7~\ìúYŸÙýü/+¶®õd–ÁÚe}ZÿýSñªo—A‘3xœmRÉ®£H »ó%õ1z/ÅR,£îV!@^ò^ ·¢(–„
Pla¾~Ò3ÒœÚK–í‹ÝsJ’)BJ„’–(i1Í2ª¨šŽ1‘¨‘’h¨Bƒ9}ô «"DX†X60T0Ñ… B…èY†4ªk	ÂÌþ÷‹*É$SDÙq’ª
‚$Ó˜ ˆœB¢H:ðÐ5[Zö°†Žàû=ùÍ¿î”?hõ^óü'‘úŠêéàª
¤f¬ì{Ê[öÞ€ïšÓ¦šå¯¦!yþË›¼+sðö–ãú8¸ðå»y::ÿêÀÔYÄ2MË6Í£uÜ¤¹zþ°?­­VÜ”Qæþdš©çû¦½;m§ª#ææíMM›U{Áh€”Ÿ`þüŠ…|:Ûý½±°l‹6ëæ³v„í—æŒwF|ZUÁÓ¼rsS†RÎj$ jcfoÂ9Ò£;=YxnçUë§-¥¨Ù»‡ÇÇYòMÝ	ƒëý6†âÑE¾ÍómÅ á£±x—q–YA[`oyócÉ¥0Þ”3ivÊÊpÊÙ¬>h©8©â„žÂ‹"íb|»)ˆbq·JìI±Ûé—‹[2t½¸\‹/Aâ™—ÀoØ0=Êë56¶õúSoW òuè¼>!mÖü:’Ó{¸T[‹ÀÍä1qoØ®‡…É‚(šÿÖÆ1i´Ïü°Oå¸ƒ?ð£Ú¹­ðßfN°úóbÂžòœ‚f¨*Ài;Ð®ß†@Æk:"Bý­¢t™ÕümhºžSÌ–¼a‚ð}ïJÞËÇ_ +Ÿà%ƒd(«PÎkþ¤þæ–9xœ¥SM“¢J¼÷¯èã¾0t„ÝÅ?aÄ[ÓÐ#ÐÊ‡þúåÍ^÷òâå¥"2£²™ÕT 8Q5™F ÍU 2e20	4˜É2¥Œ2Â™N•$t£”V%)‘‹c-Ž4m&G Ugú\fƒ‘®&Ò”±X¡ˆ¶M&*ì5ð€{Ð–)Ë@äØ®~¯™D´Ið«¦E=h&ŠŸXRTm€¢*xDtBÐÀ¼ià¥·´æ)ÿ‹…e¯vø`°·²wÆÉ?ZŸ<ÂT5å7l—íÁÆé„L¦SüÅÞù_^¶Ý?#Ì]‹-ca¤†½p×q*±aˆµe»Ê¬ó#c­úwAVÆæTUÔ».”«´Þî¶ívfo>/k³Ø²Qé;eK]uÏBËìõÛGöJ …þúÙÅº—ÉNïG+Ù¬â´8y›wÁv9G¸½¸ï‹~Õ)·KüÐ³ð…©/}k&sÄÒl/¼stµsÃ07¸I=ë½>ìÕ>o¦|@Xeoüi¾kïž^8¡÷AŽÖÔ}(K—–‰¿>ßÖÞžÖº£ÂAô³÷L«¯›—ó³ âÎ­ôn"üÈöâšeÜ9_³ˆy8rjÜãn{‚Õµ+‰XÌ^ßÖýë«_5êž^”CÖJÅH>+_îÉéZÜ–¾©¤ÑåãéìŽg%q‚sRï™˜~ÌÙu)™	Xà“àáª'·i³ÔWn»Múád»z¢?¹Z;óo©¢òQÀ¤¾›ð!Ú„w¸º8jyc¨*Q!ô90£m1Žz<'ãa+-L”%°fRµ9Ô8Œ6CGpÌ“>âƒ7ÞÒ+$<‡	BOKˆÇ"IÆQÿí¿5ý”Ð%€—$xœ‘AoÜ …ïüŠ¹í¡²‹íØ†Õn•æRUQ/iïÕÆkàÍî¿/ÞTm•SO0ïÍ÷f)A-e#°å4!šž·½D”µµnQQ×=öU+Ø‚\‚®ªÆŠ+­…ÎÄ]3äT²o”hPvcU+•Q†kš|€¯1 Íð´>ÇÉ88˜[î-Í3:)•·Ÿ j;!yßÜqøÀÎYV­I‰<’I<¬QMpxÞŠrØŠû“E3ÿ‹‹ZÖPð.ãÌ-j6G‚QqŸµ†ä#äw Í7PÞ9R	”ÕŒe—4ìrÃnóv¿Íl‹ Ó=¬‘B…âBÊŒWHAº.~„lž¢’±5â‰€.h—™âþ¶ËŸiE‘gùvtqñ!ƒ¶ø&hŽ/yY•UVÜ‹;&Š©Ø"Þåü€’àEøK9ØŸ7„}7'GºðãX×ýÿý{¢³¡×ŒmÈ7¼À—5$öW8X¼œÞuÿË·½|Ÿ5xœmSÉ²›H¼ó1G…M³C„=áFhC›žÞ¥HìbùzË3öÍu©ŠŠ¬<dfu 
4E¢¼IJŒÃ©R^åqJ"µ0äi,óL4ðì(Xåb•Àj(€&€µXÃ4V@ä1¯E’ HAøO%ESÌK"Ö¢XÒ"ÊacY…0¡ñTy&è»´lÐ².EzßF)ú–‡¿úš'_Ë&ùq’¬*/`}Á2ÆLT>Y×Aƒ6Y·íCôíY6PÓäÍÔ‡_ß€¿œ%UÒf	úò«ôÕfwBöÆFÞns"gß]ý·gƒ†VtBô%!Žî˜qb{ÎÒÕ÷Jz­—ÐìBâínGvé=X`ƒs®rf=É$ÿˆ
ƒAžg+¦³ð_d\Ž>«:ÔÑ`­jË·òÙ…ã	–[ex”v}¹ãâÂ÷ŠemòÊÛúÅ \qrâr‰iÍS÷À7ö	ÿY7ÄÁiÔØÖ~ÊŠíRå›"ççeœãœ÷ÑÉ[ÏŸo†“GTãÒc]|Ü.ñm¾Ëï“­iàl_9ìòyùhÊy¡ác¾0Ìr”’^µÇ.{ÞA"O7õCÆn­9Ô¹ëéP4¼gÆq¨_¯…á'ö¾!\»}ÜªÒ[¦ÖL1ÕÖ‘ûÉ ãlSv°ê»y¸×a
›Û´õoãþôZ9×¥1º¬^~œÞÂZæ\ú×ótv…úº!~òAßÇy®˜ÿ=[Œ¿;Æ¡I U}Q êÚý#É2¢Mù@w ´)(2x² }ç†aH£¶¯ª²éPW¢¶‚(£
~OY„hV j³ùý/Ï•”¶Ð¡!…'J {K” Ãß¡8èDß!öN‚ˆÓã3›xœ•‹ANÃ0E÷>…/fb{jBˆ5‚Cxì™&U’VÁŽOºà l¾Þÿz¿m"6SDu¡`¬ÀA‘Õ%…1h f§õìÌ=o²6‹Q’)*p¥œ×¢_ð¨ÉeR¯êÿ|‰†šHì…| J 5Jpà¨ ˜Ùä½·Í¾‰ª}ŸdµÏ×Oó¯ßµœÊmy±žS€|´ €9ÖejMþ}4²]ÄŽ­Ý?Ÿúþ2µqç‡ÛÏÓºÿtë×"ý#º2OæZZ ˜4xœm‘Û’¢0†ïyŠTí¥årNÈÖîÖ‚Š #¢£3ƒw$$‚ÆÃÓ¯;[s7}ÓõwÝ]Õ/œ#‹k6g&24Ãää!™­g¶ciÉ NYJì,SºT²¶Vª3‘é@’¦ÜÄ†I¡Å¡c"ÚCF°•Q~ò˜"JqjêPƒfJB„`Æ±Í3(s&J)TÒ¡/„KVöð†3-ÀÏ#ù—ÿ™lYý]Èü7ÐíÇ-Œ-ÇcjšBEÓ”}Ï$˜—}0ð³’uõíOþØ4ïà‹±¼ËÏeÆÿÂ›ÍÃÄó<‡óÈÝí·³ºp9{Ôs]oâºo³ÈØÈC“­·DEe­ßM^\7ÂÐuÉ›ïŸ¥÷êú³½Pó+_ç§Vª*§é^ßÄÁÖU0)_Š<Ú!~È¼xs_ ™žFË¤1N/Ý6+Gøv¾_Ýg1a™‡¬ÂÛ{UùñÑ;Ád6ì·Ñz!ãå“·n%î]3áÏûÉrÃŽÃ%Oì}¤½Šç;ÚÿŠÑ
ÀÜoã÷·ƒ¾…ñzÚO“E÷¦VÚ=›¬lÇ_M¯·$Ñ¸ªÍË¸ÙÏpnV«c@¿&VžŽ:À]%^n“›vÕw/<
çS;4]Í‚yênTÕï»§Ú1Ã‹.ŽíZË…XRÛ¿Ó½?¬ëñ
µYó<cBs7"ºküð*TAH i#Êe%Cìš´<ºˆÏZb%™qXýRÀ¯h6«”ÿžÍ¢é×Ž)+&sº¡®d§{ðÍ†p)Ð”íEˆ²Q;Y¶ý˜ö²îoC“¶ŠÒ¾7lüÑúxy½ 
|‚àR°|ÐcÉÒ,%5ûÔò5’xœ½n„0„{?ÅöÆøtŠÒ¦H•¼€Ö`	ÛÈ,w¹·âº4‘ÒÍŽæ›ÕPAÙ[îµô~NõÆ9§Z¡ã½m/­0F[¶ê‚‰@ñÖÃ¥—­í”k¦olƒB*ït§ÕØ5-Ó;Í¹ÀGH÷œá=Â5ž²ñmÓqÛÓTÛ_‹aäm¯„„—F5;Üˆð_0K·ˆÕZB¢øð”á¼ÀRYè±"ÜgL0ïQ§ª vÚ,ÈØ×Œ`s¢’—åø|·9ï‹ƒÏtwzâtÄUä•BN6˜ÂSÍØg˜º*{_™Çåï5ìG.„y›5xœm’Ms¢@†ïüŠ©Ú£e`øÚJ¶ê* 5ÄÈmf…Àà¯ßd¿j«6}éªîçéËÛmC)`f¢[HU,UÕˆn*)Ä2ÓU&:“	V“T“RTã†ò`–(²BuBTE†Ä„&44Ä IÕ”X!”è2LñžÊ*#2Ötƒ@d"$§*5ŒÄbBÍ€ÄHÆ&†îÚcÕ Ÿæí8 GpN>úã™6œwU“}²¦›ªe!h€1Ô!”HU–yÛÒ,òvÙ%àžW­‹á1{¿Ô%wïÀ'ZVg"ÏÀø£œùÂ@¸ÁÎ]ös´ÿœK@WáÇ¶©moœ—Ò‘ÝO·ŽoOè©W÷jÛéÒuíykŸòEËùÄDf°b¹³Ê$0Úç"Ìg‘——œx‰‰Qº“®¶†ÞqÜ|Ä‡:ê+eå±—iXt4+Ý‰è[éîf/#Ï,ãÛZ‰45rjôY#/3?êr|hgÂc=º-ûR*“‚;öÁ¦ýs½$àŒºƒ]:¡2í»+6žPUÅòDÙúÖVxeTŠÀ§ÈPø–Øû°Ø^†Úö5¤,
wtð%3¸'¯ƒkÎká0þ\¨Öd`æ,ZÆ}£ú³Ì=UYÖ²‹Ò‰ëÌS÷—^¹øîqzZPî¼îçæÌG×]l}5ú¾ç·¼\Š¶Ì€ÅîàáwûÛ:ŒûêìL¼a@F
gËiõ ‡¸k·Ò¯ÌæÁìóÄ¤5m2
ê®(@C/-ø¢2`MU‚[IÓœT“Ÿé8ç¢ÅE1>V¢}W\ŠqJkÊS1®øß-m‰$}ð_Áÿø-€Šƒ„¨žaxœTÙ®âF}ï¯è‡‘2tƒÛ/(Å;Æà‹0&Êƒ—ö‚W¼ ö×‡{s'šH#%õTË©SÕ-Õé[Œ!CpLaš$X
³AÌPë3!¦)? ¹±\èÓ ñ[\õCd¼3dHqÉ-èxÉpqäS>ÇR‰Ø%ð‡>­[xöC¸ÃQÖð×©|w~OžDuýKÝ&¿A´¤YjÁR$‚/C ¬Ë2ë{ü¿[YÄ~´&MÒe	|y3AV5îÕ=´5Õàƒ%¿ç<â¶ËêjÕjØ«ðF`fêŽÀó‚˜œ’É2ûšœü¢w§kb8ës}oó
_ FmŒXÑøwÛ&| 2¦È=Ž[÷|sa(+ÔâT»§/A%T¡¸,}÷Løjz+£\eØ–Ë"’½;€–“<Œé,¹¡˜Ïx—o„WG¬ƒy7¦£j^Riçð„éòîÂób’›ßvpo·,åùF<™N;ìgÉ¶sÉÑ,_g;2ØœÉñy3|¤~«JÒ2ºõuv ³€Ü³û˜C¢97ôBiâí©µ;w”e×ÜÕ 9}u6ä4Šæš×ª+h2Bq}>,œ ÖHWAgwŸ¾hZPùµ—–q?´ÚI”Á¢mðlÐÌiâRÍŽTÕgÛÑ5ûÀˆ“¼T•-Û/â´bQmìÒ(•9QSšþ2ˆ}ìÎ’NôÊ(…|eÊdâ,ž>RÏðDkò²æzAºsv—WjÃª»*‰û¶u×;pµ¿$æÒ±ÖœÑVl®ìÄáÑX^¥ê!à ò›h™¶îäq	B­4ÛSB?–tY6:w'©ßÄbJ¤tf—Å€Â51&D×½xféDÛdÅL
-§­IìÇÁ0âöË¶Q#uÆ˜'»ósN¡Pµ%Üv÷ã+€¶ªåAOéÌß4!´òît0K{²ôí£0ÇR`ŽzÂ5™#y2*´™#¹‹zÃS6Ãœ¾¨DQiå]sVyÈ‡›Ÿ?zg{W–n;yDËG­>wwÎfCŒ±CÜ‹Ç:AV7qHh¯Þq DsÎQ?_;“oçCknuƒç¹£Ø>J;ÐBRÓÓ,IPQKÊ\ðŒfcõx›GtÔ*š¤ºèÀ¼Žy:2¦p%§‹TÏ>ð¡âS^W+¨½mv)å¯ÚÅOò;Î¿øÕ¬‹ü}Ê²!ýèAéçx³ªëý¢xIë®j”_v0Â®¢ÖÕ?UÜ‡ hýOlê®Ë‚Ãø©N}Š¿A`ï·	îa_ÃØÏ
˜ÅßW¿£@üÀáÐãøI…ÿ…~Žûà[0²jÞ¥+Xd†h?}–dÛ‘4ëçOŸmÏ_å-˜W·ÏßU×§<5ì†0…qö\ö¹k”µ8ìëvüxø—/_à»§ûX!Dýè/þ„rÛ>› v–T8z©ãø%Wÿ¥®à/PÚø	”6xœm’ÍŽ›H…÷<EI³™Q”˜Ÿ*(FÉ(”McÀÆºÝo¢Šc~\Æd•§™Ë“ÄÑÌ*ws¥«ïéêÁª‘ ¦&ÉŠ*›ºN3™ª²Lµ#$£YªAK=å¬ ™¹ŒMåšžkš‚ ©ÓDE˜bé(5Óê*5é|Jqb M…QMƒBÄ=cV`j¢Ü`¹b&Š.ÑQ”>«D	È8¤%øX'oûsÍxË.:^ü¤cÍ4‚÷².ËRÚ5M%ãÀ©ÄzLÀÇ¶ã¬¿ÌŸ‹‡Ó˜|x ¿}1Txÿ6ÄvÜ „Nb×	¬ç—Èþy—€¦¤Ä²ÈÒ²ödïeÌlâeD|£<ÃÝMãîdYÙÚu-RiÕf·=ŽýÎÞðB¬²Ìs²L˜©YØ’§î›\ÀÚ[†÷•~Ü¹¹X?å}|Hn×—ãj#®‡H¡{‚q~?ç{eL'+ÿá0‘WFd+ JàW9Ÿß­üÎSþ&.ÆU~jü¶ðž‰ïùÚJƒ²¨ÎÑ%ôjX°‡_(_èÏÃñ+­êó½R®
ŸÆÓõysŠœ8œé™†óžÖÖ”+§éÒÛ›ý³(ÙDÂ˜Êq–€]t(\oÂÓüN»}U=oú¶Þ£n`óÝ÷¢èn}½ÙðÃ<ð“)ê«)l	Te£MT‹næÅ³“.[krÏœÊá.Éú ŸDàýµ—0jwA49çE9ãðå“>Õ½Í¥3³ƒÕ¯“¶Œôãå8»Žlà·G5AÎ»DìF[QF‡‡’Õ”/ú†™x%Øv¡ƒ¨ÒJÌ’ÔÞö' YBÆ‡jo]Þ²¦ãóÃ£¨ºö÷pý^ß”Àþ_	bAÅ8üd†ïßþùëDå›xœ­MkÂ@†ïû+æf-dó±ÙH)¥àQSð<ÉÎšmM"»£’ßhio=œãÃû>Ã{"ˆK-•ÄT'²‘Êè¦J+“¤u–¡Ìt^”VÇ²GôÔ3Ò6µºNu&K,”Q2)­”y†6Çm‰±Ä¢xâvð°¥3öÜÂ?0´ô‰žý7[ø_öêz¦Ã¢º¹*Š2ÏQ¬âXL´sÌt™èÏ-ùà_¯ZS7øqòïÝÐ?lÖÛ9ì¼c‚Õ»Æñ#ŸÂ-3•|¦y<NÁYh‡KäifÀŽ[‚ž.0)ÿ2Þ4à´p]¿z«ž®j÷¾™Q¹}O&¬êqùÿ7ˆ/¼cŸï“3xœm’Ks¢@…÷üŠ®š¥•èÇT2@E4Ág‚qGCƒmxÙ‚¿~ÈÌf¹›[uÏwÏæœZrŒ#ŠÔB ®ÅC:Á	T	‘f$RBLÓTªPò¢Tƒ‰É4œ`é4†Ô@†©ÜÄ4‰C=¤DW¡FþãC,a!g¡1™œ˜Ð˜˜Ñ 0ƒ`%!WÂ¦>•,¹¨OÀn®Ñ	<~²¯ýüÉeÁ³Ÿ¥LÍDD§a
T¤ªJTæ¹¨k.+êyÃÀcQJ^eýs:85ìç |ó–VéU¤àákì©ëù`í®ÁÎs}kÿ¶þ½+@·«Ù–e;–µ±7‹˜Ó¬u¶öŸÎÆªÕ¥w³¬xîy–;ËºbªÞñ‰øQÊ¸C&±hSÈ*œìßmê.Œl8jðf!n{k)?ª5K jáºZ3²ëú®óµ1^±uÐè^Ãô½æÎ;’`]¸KÙíÁýu2=ºŠŽ}7ËÛÝ£%Û¤¨—ëVSW;&—Éû±Óú
F³@v™v©þ±…ªŠ—âm~Ê_îÛÃ(œÏ$8tèi¸¼±Y»=­¨ÚÏ2ùQõÉâ’_Æþ§{V@¶	v«ý=®c6yCz×{‹‘…ÕT¼Žª"ö(æA=jqêÍÛŒ„ã¢—Ã+W«[`¬SX/Ë]4?kò^¶zï ‘Voê\”üÒY«Q=v+Ã¸Ú}ÚZÎù>‰wÞ(ŠoO
xBûÊ¿Ì¦þäûÄ”W.Sª&Ë€ä—†_kðÃÄ*Hd™ñÉÓ0õ8¯CiÜòüý/0´¤·P¢H—rhcY &jpí<ÿ¥ßûÐšxœ•ËnÃ E÷|Åì«X<†(ªÚeí&ùlÅ€…‰Úü}mµ‹.ÛÝèŽÎ™¹µ BkQ™®çÌ
­¹¡WBwžSÝ[ÅZÏÑZJI[0U0Œ{Ù³Îw|ÆqÓª–eg¼³Â-(gZ{¯S.pÍ·{Ê%Àù†£Ná{hêËm˜›!Çg`RiÁX'<QC)ÙÒjÅd+Ø¼½žß¯GØ¶K˜>lI!€¥lå‚C*¬µb$äÒ€°æˆ°äöÓ“MnÞ˜¶òàpÁäÐí¬j±¹dðáê„ì
#&,ahvé˜Ð²÷‡þqücòØ‚ï”xœŽAjÃ0E÷:Å\@F²GŠ¥’MCÚe»(]Œ¥Q‰­àLzûªÐþâñáñ¿¬Ì0Úa“¬õ-Þ O¸™œ	)#‘çD¢íƒNiåE x×ã”s >ŒÑò8zo’sl8bHhSVt•c]aÏ9Ã¡ð_»SÃ§{Š]¬ó#Xç;„´qÆ¨ÖÎE„ÿ):¢úx}{a½=<Â®ÆëÜÎ’”º@.'†Ü®¼ï¶p»è|×¥ÜHXËEêú¿³´¤Ný °WTœxœ•ÌANÃ0…á½O1p4NíÔ–P*Pa	ÄÂöÌP£Ö©R··'=BwŸ~é½61¹>$¡!£Ok+N¢‰«@Dœ,ŽC
¸Ø«Sœ¸6°d‡>{Z‹ôÙ$ëÑ÷Ž‘MÂYÒ*øbB/m?NðÊ"°+\ááwawXø8SîòxÜ€qƒ·hŒ Ñ!ª¥Kk|÷P}½¼±Þî^¾á‰*Ïðù¼…ÓáòS*Ü~c%¸žµÌ:æV®±±Þ—s§¿Nýç<RÃŸxœ•]N…0…Ÿí*º ¿”¹1ÆÄ7£‹ Óé¥
¢.ßbâÌÉœœL¾™Sv"î¡·èEˆ !€‰@¡Ê×N:ŒÎ¡ôÀ¶q§\xEÉ · ï´B‰ÊÝ[°BH9FÂ!üñ U´^ºèj
Lo
²bõƒJ–g™Ö¿RŒü-Qæ5¶sÏ_[\—'.mïa5(ÞˆÚÆêvI¥Ð¿Ù;íwâS)Ûqëº{*Óé/¶›S>¿›ü¹PwYƒsbìeÍqNXŽ{ØæóžòÑÕç×ü¢-²Ñéf‘xœ•ŽMJ1„÷9Å»@7é¤“—€ˆ J¸r#.òóâd¦;‘6:z{ãÜÅWm'ƒRÊ@ÎšZ±‘ˆ§8õÔjâVi£5{w;•RÌ„h„õg¥…›9½•öÒÏ\$•¹Ïv¬;<PJ°d*puê8®o.1Œ¡n×0)h¥0®8g½Ýrkôï!{y|>Ðp»Ü¿Â]þ†§ÚúÝìV8ÐV÷XÈá’Û¾>†\º¢¸uXëü9]‰#û<ÚS`–xœ•KjÃ0EçZÅÛ€ƒ>~‚R…@Jša'¥I~JTdÙØr>»¯èÊ.ÜsëBV‰½G)µE¡lŒ&¢S‘,ê^YnxÐR³Ù-T*˜'üà‚ô$’ãD•&/÷AGdn«×iwŠN‰
¼ü4Üå†ûûva_A 6F´(è8rÎZ;¦ZéßCöuþü îítü†Cz s}BL™ ­ëFpOõ
·µK¥Ù‹Ë]ž.Ð|0çí’Êß³+ûD.TÚ›xœ•ŽÏJÄ0‡ïyŠy–´“iR”Õ£ñ&3k¤M—6«âÓ}oüþ”œdÂ0Z7êˆÑØè¢?ÅÞ{1ƒ±Ît^]üÆ¹€c‘:&+Ž£õ4‘4=z§Ñ¢	Ê_ËÛºÁ‹À)q†›÷Ší\ñî3†6¬Ë-t4XÂ‘‚F“ÖªÚ%•Âÿª—§çGn§ûW8¦/XEv.P_û…ûöôÍ õÑÇÞ¤\Mös3¯g¨p™¯ç”ÿÖ}Ž­úž¡W8xœ•ANÅ0D÷9…/Ð*ýIšDB_ V K6ˆ…;Ô&U›‚àôäÝx4£y®3ØÑ*;ÅÉ+ïNÒñ0jV¨”&”F;<Š7ÎX²C¼wOhÔdƒÅÐ2R;=Æ[ÏÎhxÔ²Á#Ç—Än>›ìç&o¿)ô¡,gÌh'µÔÐI#¥hî’jåÅëóËw÷—‡7¸#‚c%¬L@%KÇšJ†Øˆ(]œ¡ý„·µj}åâÄ43ìé—@Êðµw)·L+tsy‡+"fêÅ×dp›xœ•‹KNÃ0Eç^…7ÆÿB¨ã
á÷qã*I«à Ë'° &WGGçöYjŒ&2d3ØÀ¶z`¬½IÆ«¬
(¬L^<ÊÆk—á°Pb°6ê ‘’³–4$Œ¦Z3•¿^9¯]ÎLÒBáZ¬ò:‘	Îçˆ"ú$ÊÞ§û&/\«|o¼Ê×Û§ùÀó7á	ïË›Ô>D•bpNÊ+%»´ÞùßGñÁÛ•åÔûãóe¯­O;<Ûqnëþ3¬_Ïpnâ“ZG•xœ•ŽMjÃ0F÷:Å\ f,i$JhI7)I6¥Ý”.ô3jÛØ
¡=}u…î¼Wf ,’%éK‡äBHÚ)‡N<ô:bŽŠÙ/<VpºwA%2$åÂ ‚BcØZO$s»`¢þV¿§^8g8ááÜ°»4|¼§ØÅéº…žŒEiµÖ°ABm½–Zùß¢ø8½y³;ì?á)%Xoó<-êëÌ±äÈåÂ°–_†2ÂWx~ÛCòÕCn¡¯'¥±`ÊQßxœŒAÂ  ï¼‚ÔìbŠ1Æxõè€]ÚF[Òƒ¿7¾ÀÄÓ&3­Šh¦„³Ã`òž ©ï=F`0È>úlÄ z†*kÓ!ÂäI0Î>Aˆ8k=p„Äñ+ì^…­M¥ê«ÌmÒ—í•&}¼Ç/Ïw©«<v¥Ž'dÜ ¤;° *•e™[“?RUe”UsI/¥nó¸
w%ç.¾¿fê$
SŸxœÏMnÃ à=§˜]6%þƒ£ªªºmw9àÁF±Á2C•Ü¾N/P©›yO#ôíˆPw­jt#Œ°ju×™±ëm…—…R£6¶uƒe›Ù1è^(iŒÔN:Õ´ÃˆRøZÊÖwˆ}c]ƒ
Í€ÌšÓŸh†’Ý¯7ûÌ÷î—sÚ§7hd¯”Vªo×}]3—Ö5á?N™w0ã"ßLÎ4ïÆäÊzÀ…[bìzÀÒö»ò2Ä­ø° „'N/ÍŸÎŒ}…x»ÀL´åKUM‡ªØóá¬–ËÇï«çàn	UÈ¹`®d/Ø5LGž¼çöqùëöú½€–Ÿxœ=jÄ0…{b.àE³²e{YBH‘&¤Ê	ô3ZÛ’‘ÆKrûx!2êïýp!¯´¶H£zEî¼Cíu­2Æ1X…Ö£ØL¡Ä@ÝY=ŽÃ eèÛQ²ÊÙÑu] Þ[tfç)x£È¼ìÕMpíCŸg*‰–S.·'ÀN÷Zµ¨h¤–R¸¼®‘™þŠt_©qK¼Àkü„dVª›qK¬yçmg!ÞÍLP÷BÀ¶’ïÑ<ZT:^&ÿËVˆÌá'.yYŽY?Hk~dL&ANtâ#Þù&‡ÐØ¯Ë_óÅ7I}1“xœMOÃ0†ïùþ¬¤_éŠB¸pããŒœÔY­¥É”&cû÷´L qBâd½²û‘S$e¨VU×Hj¥1ÔS‡ºo±·Iö6µí›A£8`$Ÿ@¢.ëeYé²)û~+Ë[MRÛm5ÈJ×•VU³˜Ó"<§òlF¸ÝëµÞï)zrEˆ»;([Õ©ºV[©¤&L§Dÿ@Å#Ÿ@gvÃv¹=ñ<³ßAÎ<ñ:8öùt½æbžÁ‡sÈÑ¤ Yöô¼§Bˆ·ù~œVÈµ£+i¤øÁËd¤_<°«#884TÀ3Má¸œZ\†|pl0Ø&ðÇ‰ŠqYçÝùÛƒ½¸_š‹Ðï<›`íFŸoþz‘ø›fžÀœxœKjÃ0÷:ÅOö5–~=!”º	íª4°äO‘ImYñùûºAW³š™VrNÁÇ08×ÅÊ)k}=0C»,uˆ¶OY|K#ç1ŸUÊˆV2kFÁrˆ1„Xã(#g1Ü[Y+½`j…N÷-:ÞâŸn¨>ºµ^IëìwÆ(zèmß‹´ÎóÔþ¡Š7ì¨óºƒ^Ï§ËåüL­LËu£\×™–}FWB¼—i£ú+lô7%²°:;É Y§¨{vœ=LHž¥Oø…¢_*˜xœŽ9nÃ0 {¾bá^ÉÕò0‚ H‘&]ðXE„%Ê (#ÏÏõƒTSÍ`zc£ˆSöh3£TSšˆ¢¥r•¬$#³-‹[h\;DÂ<j­#4±ÅÑ¢qrr:Lš¥!ŽV„£Ï[ƒW.}†çcO3<\ãŸ®Ü*/ç­}<‚"c¢öi¤i[×Ò;ÿCo|çÖáTï+i)x)Ÿð]¼•…a«P·:,%GÉ°†4—ÊûIˆ÷¹ìÐ~åþ@»‰Ð³õAE©³Óž	#É(½õ	SÒÖx_/dcxœMNÃ0…÷>Å¨{*{bS©Bˆ-;Ä<ã1±Ú&•ã ¸=nÀêmÞŸ¾ÞTÁ’ŠQB$ç¹dÄ\"ûäFäX(úH:sOMç"%'IÞj8TùÄÎÇÀÞ(;­ú<˜´õiið¢µOð¼­2ÁùÂ?útÑ6ëõ¸´÷GpöþGûkd¹Ýjïú¨yÕm¥~Â¶Õu–ë–ú×}9ó6ÕÚ¯i…¿!ˆ6X—‰œd&L$„H2²ì ¢gRÙ¹Œþh¾a?[¤›3xœm‘Yo£0…ßù–æ1Jƒ±1 µ£,„,d/%o`8aIÌ–òë'jÞz¥«+]óIG§ŒŠcc(ë4lD
Ä!º,S=
d9
´Ø@Ò-¬¨¢F1S±®’ÊAD	Òb=6ä0Ö!¥Ðˆtèø¿†ªBÁ±c(R
¦!–‘†b©ÕÔ©4uZ
°d¼NÕT4¯×ðëþ¹2Q°ì¥Éo U¢©ÐÐe"Ë-óœ×5Àæõ¼	ÁkQ
vË>ÿ$OR¾<?Ø’[Rñ¿ÆšÚŽ¶öÛ5§ýôß_è*‹Z¦iMsgíQXìàxo-µô‚7-NgšÑÜqÌÅç»$XWš˜Ãª{ŸÇÕãx’ ªf'î
d‡nt¿Êã"Òî2^Ž„ó.ôIoÚnŸL¥çÀy”$>­zjn™:(x˜ØO&£…Ö¡ÚDÎY°$B¥›u_Å—Åb°õ3ríÏòì¨jUŽýMwT·îÀÛg©¿ögè‘¾IZ?Þ;—õ¾mîžÓžÛ}â˜w<®çŠí÷:„!¤S­×§k_Qwzè"	øWå|qwÖü‘ÉGYÆ°8«´MµøÁ¾žk®&ÛvÖ&ï”ê¥EÛ…ß‹±ýLá¶‹mÒ²Õr|·…[MYK¦}ësËÄ·“—¥ŽFDTòvüXùeõá¹·îÞƒËt{Ù½IàÍK"}w6u'?7&­™H¸5Y»7¬ªÁ/•( er^teÉóQÌÃ°áY4dB”b?7ãaÓðH’ËË–•cNÎÔ)/’êP´9{IÿKc Ò–9xœSMnÔ0ÝûŸº™$Mœ¿I hG4‚™‘ZM»#òØ_2‰=rœ–Y€ºàÀ‚+À8M·ôd¦-¨‚~ËŸýüüÞ³l"”AH‡Ã4ö‚a&I‡i‰þ¼d>rÊ£”Å	†Q‘%3¨,$^äù"Ž}.æ1e1)ùpÎ¥I8Ç€•±CÂ:»ÐÆRky›ÍÔ•ÍÓ–5m§*—ëæ	øQœ„I	<ðRÏ#ýj#­EW_>üøúýêó·Ýq>9Nóñ,¢uÚ[žÐ§þ1Øè3„WùóÙ,? »ªj¡4ºuÖ » äaÁzL¿×BkMÇmg¤‚Zªîíî5Xm‰•Kçà/&³âx:;Ú­»bÿp´ÿ²Mòg“¢ gJÁ©À9euÝhL„ÓZ±W©.MÁÉÝþØäd<*NFGÇùt²7ØñÝÔ¥Ô­â4ˆ]!]ízdgeÏ¡7‚¥‘Êº¾Ýs’+(e½–ÍëN Øö˜Qæ=$ðwý‚Ü°,²ð(ž%ÙŽ&£ad°ñ˜×ª¬%·}Ð`WKìÓî­_^|ì:)
{yñ‰À;¸n­o{ý~]ÿ0ð[Ý½\lôÝ§keJ[Ì`iðLê®¼f†Y©èòipÎZX Á»5ŽÙ\‹Ì/ƒ\.qãÎ2S¡…Áö d=Tr,+…ÂÑeéÌWÙÿ¿ù	º¹%ªœ3xœmQÙŽ¢@}ç+*™—™tl)–’îÉ6"¢"úÆR 
”–,ê×mÒo}“››Ü³ä$§a„ 5ÑREƒšk|aÌ#-S%$i²Bˆ§‰¬E;GŒÔ@¼ 5A‘ É<UeY$ª$FYšj"/’ÉßüÁ$xQ’)³Hä‘ÌÇ&üÀR-QÅòÃpQÛ(6)šÐÛkr o§øëþ;V“ò•²ü/€2Rä!®Êƒ]B«ªhÂ€Y4³6o5eä\ÞÿåƒS¿„dù9¿9}n˜Ö
¬Í5ð,s…ý`c<ÿà@Õc}‚±«»ó4®ÝÓd£ÛÊá(9È¬ãtfYx‚d´×t§Î¢æx’•ir ¾ÛJo.¬Khì<wÒ®;¸Þžu§¤Á²cb?/Ñ*‹¶\ÐGpˆtèì[Æåv³çÀq‹Í|¦‡~ÝØ¦ƒ‡½×³ÆôÄ…[@ØUÞ©½Z~gT»›Z_’ZOfýd—Ík[P¦ôcÐå¶9ëùì†v1îaÿéxcw}Ls‘§Æñ4¥Ž\íùu.Ý£½²ï÷›øB§!æ 	7Ð_6ÓÖÌM]*Ï³Ô	&«¦lë+OØ%óšbW†’u§#L¼Æ-_òVôˆÖ85 …ÒãË’&Óx'tNïÔÛ‹rÓÛí™·\·ØvGß¸kYŒ%§§éîbRê§Áéï•¼¢<»1V?7Æ-	Ë	8·e	¹´äÚ€_2‚ c´UQ÷”Õ8+n£¸-ÊtD£l”]Ï¬¨›Œã<QðDAÚÐPðMøýç?×²â–?xœÍ“ËŽÓ0†÷yŠ£j@­hî©sá¢‘º(³@hFŽí´V»ò%ÙT³˜‡ ¼< O3[æ!pS
B Xa)²}|òÿ?qŒbDó¨)qœ–,žeQ^D5¦´lr4«QDcB#Œ2ìm°bÂ@Í¢˜"äâ5J0"(I)jB“$Ïj–âÅY‘yØš•T°àb+%Ì;xÔË€w§wÚŠe@d÷âÊ³<“Dey.Úqc˜‚»7_>~¾{ÿ)\ÌŸŸŸÍ¿¡Pf¾s²¸øÆñ~	µå-¦”ÓB-#ëâÂ4ã‰ç=ã—LNë”•iR œÂx$úŽù¤å<•”bR-G.ù–„€ß{§‡É§L¯ÜT»p+Õ:<¾,¹9±á"üA„ß¸ç¨`rAàí—=SšKyŒ_ÖV{Øù±vñ..‚(b'h(5 RÁ\@c1{Àíõ[½’ÛÅZlxÏôíõ»êçü´DY•V‡ÞTÀ—Bº“¥³k¬ÐãÖµK6{ÔQ¯ƒL2Òº»@aËÍ
°1Š×Ö0Øb%.¬°šQWVÛÖÀ+ÿ| ?>„ýCøµðã#Üß`³šÂ(ÔW:td­‡†÷ôh
wlòpŸÿf÷×ã›Åÿf³n%Y;‡!e='ì_:«ÞgÈ•”Mã×WÕŸ7ï+g›3xœmRM¢@¼ó+:Ù£q„æ£%™Ù,(Š3(Œrë¦»‘Aõ×/»›½Í»Tò^Uå%U` ¨k2ãš²9¤DFY¡*Ô9RLCáˆhÎ¡tÁ‚U@²>žCÉ(1 62B#›“ŒBˆ4ÂTÌE›kÿùº¢Qƒi˜Ê4ÃL‘±.gL3)ç˜jªÎFµLuŒ$ÜwÇZ ŸÝØ}›Áó‰üÁ_'&*V>Õ"ÿ	Ý@ºbŽ/©lÈ²”ÕçsÑuL ·è¼ž€çªìRÞå£SOžFÂ7²ü’·E¦ÆvÜÕ;øp?Àvå¾[»8rþî% ¡µ3Û²ì…e…v¸¦¤ú‘í£ã—\U±,‹z«•åôö–B{_ùeÑøÊzÿøèH$@¯|'F¿‚]‘{‘ºs¾ò×Qåò3lº4áÙ~î±Éb¢~}Ã¥ÚªÛˆz(ªâ‰î1rÎ·4,ÞÄ›ëÞWœËòDîvLB¿¿nûÍaÝnõ|'ÈñüÙl¨ƒÍÁO8ÆXö"nœ¨}8tìÕêºv÷Ák“Œ¿oîŽ‹‰¡5fjËè±h~ç‹v%6Nzv¸môC£nýÔlê…áÁxIg”Eš¾)¡çùÜºfOqZisœœÖ½™<Ü$Æ,ñ£TÍo£Ãë¡8ÈýÍ·åó<Ù§NQà›cCQí`ßšG™O&¦Ù×k¨œH–™ÞLpšNÒkèm/xáË,’þeæ¼/¿OLzc"gàÒ—%¬éYÛº®.ê38ÕP×ÅyÆk1…Oò¬ Ó¬åTyÒ¦ý…âŽIRüÁŠŽ.ø,êªuYŽe`¤þ@Ÿ k“ xœÁjÃ0†ï~
7¶'qâ¦Œ1ÖQèa»Ú³cË ±Câ4ìíçnÝe0¨OBÒ÷éÇaD4Bäe¥2-Da*Ô±ÎÛº2•¶¢Èò¦nJÃ5¢ m½’¼²œ—YD5*2W…–«²,¹à(eÃÔZ?Â;¹Å{ØõðÔ—)õ©ÁóË©WÔ¥Ú÷Ï•U%‹ZxÍ9‹ÝžBÀ›q)Š´¼âŒL¢ÃØ­ajýÛnžZ¸8•3Ð`«Î“‘ƒÃqÃØÁw*P‡p) l”nñ.Nî&p‘'gHÇw‚Ðâ?:ö£ƒÁ“‰·É™pIvòöñd<^Ô¦yüÀÆ<ÑÍ>ö»7˜0@ð°½¾6Z^çpÉ«Õ„à-ÑHêº_EÊØžNM¼m“æs}Ë×±/&‰¦)›xœ•ÍjÃ0„ïzŠ=¶”ÿÈ²Bi(=Rô	´ú±¶däuBÞ¾v¡=õÐ^–ÝY†ùJÖBÓÖ\":^igjiuã¤®4•T¼(ÖUÎ&•l ÖuÉQKÙhç«•FËÄ¢”èD©Qj¦êc‚wn1Âi„Ãøµf~ÌŒ½¾t£òC¦ãøE-DSµBVð”·yÎVuôDö_vÙ|Û™7;MiØÃÜÇ\lšýLýÛu›çØÁ¼LSL>ÀùrdlÓ.ª³p$J²«þ¸ýOf5yw‡×(ÅaX¹Œ"3¥EÓ’,øB¼1Œ×Š|è€zû“áÖ¶ûWi]S8õ€ž2Æ>|¬ÙEçvxßÿ¥ö	š–í™xœ•AK1…ïùsT¤Kv›f7ED„Ä
…ú’Éî@6‘MÚ¢¿Þ­xô —aÞã}Ã›2j1Ò7Øúºö½ÄZ4‹Þ RÎ7Îçd§Å») ÓY2†ÈJEºvD²Å†´%DçÍ=®µòVØSÓ¯/)Áó÷Ó÷ZñT!‡Ér¨ú4=@½Ñº]-¸“FJ±¸—BÿÂ»výƒÆU_æ°…<¦hÎœËµýî|û4À‘?éæ°Ûo…¨+6ä£ÍÀ±Ì	O=áïàÁT¼œÁ3„‡ 8"÷¶äå0$e$Kž#hõò§È%WByˆ„«äýÊ}lÿò øÏó‰q”xœÏMK1à{~Åé’ýÞ”"
-¥‡õ¢¯³É¤;°IJšµúï­E‹Gñ6<ï;“"(‹R©²1uÓ%É¶QEeË©£ª$l=¨Zâ€‘|Ú‡&ÇNÖEET¡Õ•îJÒ_”c¬±ËÎizö§`ç`å.cÆ.3ôö°wÈS¦ƒ»‡üÜÝ–ª.:¸“JJqÞ:N‰þÉ›…NqZÂq'Øx3Gôš`Ã|€ßÙÍvë›ÍÓz»[÷¯·BäY#}ŠÁÌš¤‘¾µö?Z‡sÒ!e /#Á2MN<M‚½a‰.Ì]K Ø_A×32!žyïÉ,‚µ‹ácù—_Å'¬—Œ,šxœAjÃ0E÷:Å,JŒe[’Bé"$xÑMJ0ÒŒcl¥ŽÒÛ×í	JwŸÏð~ž™¡¶kK­•²Xé5Yëë¶–Iù¦ÑT7Ò:+®8ó”Á5m/K´¶2Ž«JI­mßåÑ U†¸2Þø’ÞófxÓ#%èFØ¿±cAüõv1ÄÂ§ñ¤ÒÚ,"­„—Ò–¥XÚ1äÌÿÄE ÏsÜÂmH8œÎpŒÉaŒO8OáóÎÐÑr&ôçÕáxîök!#Á‰¯=£‹ü³Í°Zð5t{ðŽy$b‚0,šBˆp™˜6©ï7î¹ý‹±øv3uCŸxœOMK1<7¿âé’í¶YD„Òƒ "µùxi›dÉÆÖþ{·=¨Çâ;Í›y3Ì+rM™•oP¹…“È¸EZ/„˜I-GkŽô*c,PåF­TTÏ©FZ+kÇÊP¦Î4£š¨Ï²Kž|<¤nÃV>T÷÷Û |W™î€Íšf.¤h8ÜPI)ÙàKÁÚ‰·SSr×Â°KX¦Xrêº1nsìñjù¼Y?nÞ^V×„ü`Ø©4be-ZðXUÃÐ£©Y}©ÐwØ’‰³º2Æ@”L Þç-ÿ8-pš5˜÷hÏ
ké¯ò§ÅÙSŒ}Êe¼&¯~ÑN“sS}l/y›|¦•Š4šxœNKJÅ0gw.-ù5m"N8ÑÜ$7¯—¦¤©âî*8gçÏi•fíŒóHØA^/BqëäbjÆHiÐ/ž³+m&)Ep“ž°6
ã•µ’”á“]dœ¹Ã •°‘áÙÖRá9mï¥ÀS†ûüÇ”Ç@o×Œé6ú’@LÆÌÊr!áŽ[ÎYWsjþYg)¾ÕÛÎ=`#øá°†>û/1jÆ^èØÓmý­ž¾•ÀáAÊ·ÝãpìäGÆ^Óu£0”÷qùËCö	‹'q›xœNIJ1ÝçÿUdèL"".Ü¸Ódøé
]4é¬Û›Æ®oäõ†TzÏ­<™”¬âIéä£> b†óäIqmÉÍ5,¸IRXÔÖ1Oy4³+…^RO­¶A„0Ó'AÜè[mð¹oð6îaƒç‹àë[Á}­íüL*Í¬àÂÀB¥$Ôë5÷Žÿ¨’”¿aŒ!—°ˆÐ[%äsÜ7Œààw\‰gJ“ÌhmCßÞç@î+!_ù\0.5¥ÅO]!?°€gí‘xœMjÄ0…÷>….I;?C)¥tÓîz€Ûr"âØ!c3·oÚu¡«'Ä{úôÒŽJôÒØ
m×‰V¶zTáØYÞ´B:Ùª^Éªæ†mãŽ!–[)dedÍÇ¦—V«Q;íD«ëÞ))M-.Ø˜ÓwxGJ3¼ä‹™á¼è‡>/¸ô§¸OOpp:®ç
Šª­*fâºRJø(×ãi€7ºÁqi#„
O:g²°Žf¦€Æ^Ñ<¶_	È¶Û¯dÑ‚¾ÃOäÄØ…e€9¥í2”åt<–õé ”žB¾pùK/·ì}Ù4Š}ÒÐÑ¹Bß‡¿
±oÈù€òšxœ1n!E{NAç*0REi#b`¯e{7"øþÙ¾€›ÿš÷Š?‡ªíÍAO”º—ØCãN.–Æ 1E"óÃC×i]DK©9d5±v‡¾T‘"N"Ô0?}ò©°b„†»½´ x'AzFªáÇ\¶a¿õ2ûõøm‹}¿Ö~^u¬z;nãüa=&òTö±o.9gÚv¿_æÔRsÒqV[¯{rû—6·q0¹ŒTxœŒK
Â0 ÷9E.PyišŸˆˆ[wz‚¼—×µ¤qáíÕ®fja–Æ)Ž¨; ˜¡×Dmô1¤®Ôš¬xÄÂk•*i‡>¼Y¯U"§èYYß&ÛŸuÌE^xª£<?7åaÆ/O3—•ï»\†£TÆ:åLgœlÀÊË2ÕÊ¤âÊ¯2eÚ„¸MÃÊ©É}ßàkÿk&Þä`S˜xœPInÃ0¼ëü€ÙŽå((Š¢=öØôZ(Kˆ,Z‚æ÷•›Þ[€ 9ÄÌ`È’™Õ °—’Ï†òÑ fœ©ã0C‡#R®ÓŒl"a(0NZ13˜YÎGd|b¢W=“ŒÓ”¢#ž—œQ‹	ÞÑ¯5+OW¹÷—+¦€þÓòýÄæ~˜ØÐCG¥DÅuu¥à?¥ó4žø¯”„ÛŠòîoQ#("Ô‹Å„m¬^ƒDLª¸„eEX\€b]†G€\vÐJÀV’\î¡nZ<ò™±Ñâ¶»À*TŠL»Xx›¯‹yçýšiËó°(±¡Ð˜ë>zê×¾¸µï6§]óá–€º‹Ætò~þëä˜i•Åxœ±n„0†÷<…·Nœ§ªªªnU§{'1] (	×òöM–®•:ù—­ÿóo§@
…Q„¤´ê¸x×H#qúÎÔ±ë^	NÄv´%ÀVµ4¶ÍÐcË‡®Qr”-vPBÒÔvF4ˆ½žiñ>È¦ÞŽ¨x¾«R_ï6ræ¨»^Ö\ŠQ@Å{Î™öëjS¢XÙöX©ÒÎ^áuðOv:Ã|¬%¹¡Én{/Ânóï(‚:a²ä¤s'°’÷h§d¸Ð0QúÖcîº“9Ÿ!®@/p³ëîÊ¾´dûWIýJ°– ™·`‚%ƒeÛ>dAÆú#–×¦xaìfçLå§©Rçõ¯ûÙöJ”Í—'xœ‘Ín0…÷~ŠÙeS"¸Ì%ªª¶‘²©²ÊøgŒG2&	o_CTµê¦]Yö9g¾ONˆÐµ×^ëÎµÖigUwÃ¶îd‹Ê¡º¶ïõ¥½ÔC+•0f@iå­Ü{çÚ¡¶ÒšF;w3µkÕÐ ¼Ô7Ù[#…Ú²ç?²‡ïÛj<|žôq~0E÷œÆ/Ðt²¯›¡z¨jY×Âð<SÎøŸÑA6ý¯¨ˆ¯3V&Ð<²EHX|B<ó+‚9¹Œ\â®ÉB™)ï°$“šW ˜"¾ÁÝ–)Ü¥„&sÚï…øfí)9
ÅfÑQDP!ÀA…uACŽ¬FÅÃuLà¶˜‰ã
*Z‘0°Q¹¤=¯xhæC,Õ²§õ,ý7É²*SOZ ¸½ÿn<aRÉø¦Èoíˆ'Žæ%à|¬,óÂÇôFÁuþ`{Lô‰b)¾*Ô÷SÐ‰'ŒóéÒüT¯RùÖ Î´§e-Ù#ÚŠ«ôþð¯µ‰Ÿ‘mÖ¦›xœŽKjÃ0EçZ…6àðôµB	™v–®@zz²c©(ò »O7£ÎåôFÄ•µFjp²Ê@ˆ(J´D%¥H&È†}‡F¥ó|Ì”Ü¨ÃˆVŠ…‹É‚ô2¸Làœ‰XØû\ÿ¤¥Ïü¶?qæ—5¼®Ô
=NµM\k½ÐÀ0¬Û¶ôNo©#€µúSÙ&*ÔB'ž*îÛopèK-Œ}-S¡4Ôœ‡øsþïš½ ýXKœÍxœÍX]s£6}çWÜ™>¤Ú^	ÆžN§Iœ¤ÙÝ¸ÙÄ»û,ƒ°Õ`Ä"°ãþú^ÉàÅ_2ÎtªIbW:ç^ÉG‡äçàÙŸ8Qèø¾×å®GhŸô|õˆÓgaŸ3æÚ>X)Ëx’CHhè1?âî„v1:â¡Ô£Ï¡nßîM<±~à[¬Èg2ƒ\ä3¸(T0ƒßž&úó'ž%<îÈlú;P×ó|·ç{ÚÄ#Ä
ä|.òœ7Ú#¤Û³r¨•,æ¼Äb wì‰ÃY,T~s™q(ŠØ²Æ32S‘°¸
PÅD£²$„%SÀ`"r°XØžÉ B¾à±LçXŒdn1XÎdÌ!–&2BL·˜Îr3Åœ…r¹dY¨gW+•ó¹jÁ¼ˆs‘²|&’iË2wí„Í¹JYÀ!`)›ˆXä‚«Ž¦*_³Gzi,–ó§Me,§KŠk ­`Æ&C9„"ŠD€Ó[ÈLçž)Œ‚…P‹Å?t®Eb®/s¬JÆc–™¨™H±s™L1deaò"@´@¶ù3¹ƒHÌ…Ü[f²²”3L>Áš<ñ4‡"…¥^BŒTÜÚä 10½sŒäK\çõš*H3¹a™±HùÜC•¬Ë„‰„BrÁ³–UbëaØ7ÑU“©‰¡š2jkÊåLàêÍ™HrüÅŒ¬	žÌziždbe°+‚ùŒá@š+\½å¾/±¥Š4Me–wÖ;-’q,—º`ü™aúXEf6£îÒd\ÌM†H¬3¹Ä–Á-Db½,Öß
éÊ"O‹|¢Br*Zá%ˆŒõ¾]ÁÏ‰ÜÉ_ý2°,€ŸÖ,u%ðn$‘v½=Ž`¿ÝaT| ¯6Û÷³bS~8èÚäWïø
|lÚ;m¯ãhç0ä8&òy‡»ý.I¨azÿçÇ«žM¡îÈ»ï^ÜŒÚzŽãö»Îàörxé^í¿Î½Nw¼—8­];› Œ/à]ý›Kmü{¿Ð=Ÿ†_èÃôê|èq>öÄÇ©ó±K>—_®Ç.ñ]Bl»KÈÍÞM·£ñÕGx|Þ_ÙwCÝÝ=¼1¾óÁ éÜh>µ›õCø j||äCè{Rçãlø  M5Ÿ¯ôÞîòÞ]j_äƒ×õúÐZ}Žð¹ØâÓ-ùp×ís—ãAE{.ÕIaû(’âù0ƒã|š¯—Ûq:¤Û|ì7àc¿·¬Ïõç»×FãAÈ{Û'ç¦³¾^tH»äæü¥ú`P‡tËýS»9ÄçªKÎ‰M|<„ô™_žQú8‚³RAÏ ŠÙtW>¡­5kôå®žÓŒ+›Ó]‡nî*V›ŽöèÓ!™=¹]Ê$Ïð”Á“¼©š¾eÛ@Æ…­Db8&ßÜ´Û!¾vn°.ßÀ'èüˆÏ©lcQ3ˆt™ž€l¿ÙÞF¶› ëßCÊÙX8"ÙFvš#ïkdc‰4ˆÎ6ò:ôIöv,eªÍT;ç*G2·òËÍèXË|¸ÛÜ¦©’›Æjc=kGê_A|44vŽùª¦*pýP^ŒŸïÑPÂy´²m)ÍÆƒÕ5àœGoj"`¾ƒ§ù§Ê	A]Sœ‡| ýìHMéÚJpûø+ÌRe{¶ÁûÀ)”­7ºwš3ª<Î¸Ë€ÛPú±ÜYƒŸbƒ*C³*»¥ù*ÁÍ„§yŒÊ-€V’ýÇ[²S:­VyQI±û¿`áéÀÓüMåTª… z/ôY‰-,]Õ®<ÕÄ¡®Nºo‡æâ5¯nÇÇ¥çÈ£câQ½Õ-psÇYwôä™ªµ÷fzÍ[KýÄvpjþ¾Q?»'g·s¢V/
u¯Ò„îÃ×xõòÈ}Ó„‡mEíÉjðÒÿ­ˆz”½xœÍ–Moã6†ïúss
¬¼’•X¶‘A·È"h7I‘´9ì.
JÉD$R!);î¯ïP–-k´0àC}²¨wfŠœ«!ÍØ˜Ñ$ÉÂp4
Æ²8bgéYOƒ8	ÆŒŸŽ³‰W1ÒBÇ<aJj–DqÀ§a‡£)‹">âì4J&ÁtD«í\ix`¹€ÏZ”	êÎ=^åíã°ÄKÏÆã³ÜÆàqx©*Ka-jø…ÃÏµIçpþì†‰{¸Òb1$akŸNÂ™ÉÜ3+c±ä3ÈÄ+`:W²¢€¥óÅ£ŠÚ"TÌÎ=ï‰ÖTm¡*X*dvŽ}	,ç(!SºdÖ¶
O.JúnJJL­ï\3XÒ“£mÜdª(ÔÒ™ ÖJÏ<ß÷vlfPK©Ê¥ø9¨Ê
%aàãÀûE˜T-hû·~Au¦NÖ[2À$ß«\œà+€ï[Í¤©”¶ç¿Ý<<^~ ßÂú/|p¶"°«
½Î”sÝÙ±žÝž©£1µY¤‚wææó¾µA½)‚àp‚Ã|7÷ðsN~ÚÄž+c÷ð—;ñ]l'‚µ¨yý	žžn¦çG¾ÈÎÇË{¨	Ýç˜	IçÕZÀ‰È€ÖX]Øƒ¶!•uya÷+Þ¼u{î+‹@³e^ÿ¾% PÂT”3™(¶Wˆ£;ÔÎœ¿Cø*L“G¼½ä+wŸ­¦dA}ÿ:äà±¢´ôm©:çÄ!842°¢Ä&õQÅAÈƒ¢J]É·Ià2yÚ¶êâ§ýø[ÝqÃ§V~¡Œéo¾èï>48íqæ\ÿÅEŽÆRà|÷Ú´?G€’%îTƒJ+«RUÀ?ô4ÑàäñÓ}çq{›9³¬ú¼ôï<Îüˆ4RûBù/5Öhºóýó‘µkŠ 2
ÖZWä)m"9i«CG®]§ªee©…Å=š§÷hù1€‚]ˆŠnâÃý{N}\„Æ™o¨ûváß-[o	`%ÍAã Wý¶áh²¡ô3TÉ'TïdN'êWNWKhpè6%Ð6Ùw³õeêªrœ
¡¦´Ûú¡žÒŒ*Æûƒ¦4œÁÞœs¾.º—ðõîþñæîöá»w×.fæ5òÌoåW›žðí5âÎOðÍî)nÕ¦U»FÙ-„ÓÑ0O†á(†ëWÍháÞM‚`ê–v:~ãYI¶#Å¾0!]
§nsÔihGˆŸãÅæÁXfksåGö@¾fÔEùz6¥3qwcà`}‡=zÞƒÈ©Ùû*Ëüd5ûÏiÚû2ÇH©•xœ…?oƒ0ÅwŠÛ˜ À&(ª¢.*uÉÐ¡êà?gbpdQòík¢¨C—n÷t¿÷îÙE³ë¬1ÂTuÉ¥®k%­(ëÚÚm-T¥ÊVí¬hÙEœ	*¥¶ÚÞtµâRñ­Øj®M"P•MÛvÁ;dr¡“p”ƒƒ·à&…a€}Lò0<e1áT-çmU	Á!/EY2í§Éa€wtt‚×%êìÏ«(Ô*n&‹>í¢éª2Ùy²³ù:Ù<]÷ÚÏ3jêÁºHý¸ÂE¦L›šÅ{$œ4Œ}¦h¿Ð	ÿ€‹Á+Hñ±Ã|è™•nDäo¨W6ÛŒNmVxó›Aö;CžÏ>W£×gˆ$Á£å³áá«(Šï"b¸:Yâ’mÓHU	óáÎØÑ3šÜ[›«{ÿï÷²'¡œ˜xœ…ÍnÃ „ï<Å>@cÿ€‰¢*ê¥‡sèÃb#ÛNš·/®rhO=~³3³Ò¤€Ì²®úu/a½”åŒ™®í{†š5¢m¥–Œ\e@— «kª‡®åŒ
a(S56¬êD_^R×†È-M>ÀEŽÞƒ]#œbÆóøÄbÅW c¥œwp¨xUå×Õ¦„>Ð¦	Þ¶¨&8Í;Ãgë.E6>ã¼í+žã,ÇÉ*g<‚u1ÉeMãÂ¶`ÌÄGTÞm!Ÿ:HÂb‡,€1AòPn1”Yý¹ºÛj ‡ªô»-ÏAìè|@ý÷½ëºHeÝ6í¯JLªüë‡»óîðëšQ„\rêƒ7æ0<Žÿ.F¾*êE—xœ…AnÃ E÷œb.`0EQÔM]æ`{”* U}ûÚRöÝý'½·ø­ ‚w(1 8	¯œ™¤±ÂFó £“Vú´aß®`j W¥4Æ<oµèe0J%Ñ
£†¹W[r»›	>­Ë—ºãm~c¿â5ŽŠ[-,t\sÎ¦¼®ÔøBj|¼ê´Àåq@ï¸QjøìwñÃ8ê=÷œ­îgˆôê”°l»š"³P@Æ¨UxæÉ5@	êV%P—¤Ü zJ;3v§9aèrŒßÎÿbƒ’mB–xœ…»nÃ0Ew}? 6$Û’ã ‚.:fè¬e±¥@Všæïk7:v<<$xKFç‡¡Ð©¡5­h¸Bc:Ó4ÍNzn\ªoÖ’]uÆX “h•U^tš÷¶uo!x×YïQK”Â©]o{¦o%¤g=¼ešæËŠ§ñë ¤R’’¨xÏ9³iž©ÌðŽT¼ÞàpÙ 6œ(œêuðO»UW«Î¼6™ì²O_0¥t›bD[*=MŒ}ŒpG°íJ@(¹<®ø²…AG7áÓšè‚à-»ZïÓ÷œâz*O{¿~¸­Ð.{=ƒ.%“¹drG‹MŸ˜Ñ¦ìjÆÎ4FtUò¾2ý¿ý°o–‰Qš:xœÍ“ÍjÜ0…÷zŠK M;d<Òx¬»i	…RJé*‹.B®ä+ÿ’<i6!Ñ¾^ž¤Ò¸ìJ¡‹zw/çé;XÁYo–œ›œ«M!$r\®¸EŽJ–9¢PhJ\ÊÛ££>@ÍE-qc¨Pb%¹0d¸R(™‹¢\®•”ˆ¥Þ0Ãvpp‰…ÎvŠ\ç>ŽÍï1ëèˆBÊ‚—«r	s¾æœé¡ëläà3Ù°…÷£×[8ß¥!Si¸°} 6‹ÂgöM´Ëhgý¡£
ŒýQ°·-;ô@ÎŽ±FkXg«Œg“0Ó|êÁŒ½>Ê~ì]Œ¿q”Œò?«'i^ð¢Ê«)¬ÛôC7à(Œ®‡¶#Á`R
úcŽ‰ö3¨I·±¾n†à¬Á-ºþfìGOu<Ðm€«ù×cúÛi=ŸÖ× ž"_½ÜcØžÁÉÂßùELö~‘.¸xáOÒY«©ÇŽ^¿I®o÷ù=ƒ-ÿ7XÕz9å¿ÀÀZ‹
°mWŒˆ%ÒàCA?•àÙÜ‘±-UÅºŠEh»/(þå]CNSu§`0JjÖEq³Ù®Òþ>¤Œ]Æ2#î`Ì\ÝU|#ìõgMÉ•!xœKnÜ0†÷:Ðøk¬ ’í¦@7ÍhŠŠ…È’!Ñ3ðí+w€ Ë¢ 7$þ_23tØ[}ÁQw¢Åö2mºGcÍÀFtÆjÅÌQÀ]ˆzmŒ®AæõHÜNí„ìÓwíú¡Q¸Éœ2ü`/3|Ý
Íðôqçé(^|gJË3´ƒÖ¦ÛNnU»‹áÿÄU¼.|¢àá[œ1ƒKyAï?_Á²0‰OQ©×pÃ½ ÍL ó§E²Ÿ6á’àÊÙ»¼û#¡%§êq7‚Âuûßp%0ˆ¸pY‘¸|êÃÞ0ÂÄà£õWo·ªÜÕ¶gx›}š[a{LZsZ9×7ÌÒý¿¬Á?p9-P¸Î‹ïJüp£=+õË¿G¶§äÜiÚÿÅLõ-¢³šOxœTMÓ0½ûWŒÄÚæ;m*„\@ . !ŽN<i¬:vd;íöß3NÚMµ‹X.MãyóæÍ›q¼E„m‹yVíÚ2ã<k“¸àÛË´Ú•M›pÜažÒû¶b·¨=TUQ—©Èj¾åYWiÙ4XÇUœÆ¼m2!Ê,;‘3>úÎXøŠÒwðqtMïŽux~8¢Õ¨6ÆÞCR”ež–yUÁ:.ã˜5¦ï¥÷ø45¼læ|©=¥ðš^ÅqQ\Ó™>õ¸n”ÜÃ/n5p-@ â¨±5~zî½ÔÆ>^`0Ã¨¸%LOÐtütÃÀ`©p8áÁwtè:svôÁ­—'t`ZždƒSìÊpæ\°Í›c _ZŠJ¡É ,Ä¥s#
BP¥Z™æxåYôî±ý™H®“hŒöÖ(…Öý÷‚ÿ{¦“J3Q…Zš÷èNýÜ‹
¥~†*ƒ5')¨w'éF® Q#ÎE„ÂbèÉxÚ‚ðÐÆÓ&wæØ"R¸\òu²š&¸TëE²Ÿ,žÝœÏkcýDo´Ô“Ñ ƒ'x!…~í¡G®T˜É*êå3ÚÙZgˆ&þ0P8‡NfC;®¸h Šy·ÙS‹[i_…êz¶¿•—§±´ºƒ{¡×ÛÊÜ™·ÖPü·'‰Ôà6é†œ@«;ßâ‡dCøO‹Š™§ãnžî‚}ãÞîC0ÕÉ?$äú¥úy˜Ð3ß®˜IÂ³½½‰ÈW®`ì›ÔÇ=tÞnEºòc.z¤¤ÖÝ.x4-·‹Š8a?äA£X›¶]×—ýKöÚ±+2xœu’Ër£0D÷|…ªféJHB¢*™
ø±cüˆíìˆGaý835»™»ë®î»é£$ç€)5ÆLpÊ0Œt‚˜˜ØâœšVaŠ#­a’×
Ø1³{’(¶0ÅC˜P–B“QÌ &†ÉKÐß<¢Ö¡e"D(Äÿ.2¶	Ñ˜P':ëT.$XðBåÀíÚ8OŸßâ1ú/E­xù‹ê'0°e!Ó4º¥ëÚÝ­
¥¸^¡f]žj!ySö/ÙýAý§–5Y[dàáûÜ‰ç¯@à`ë{+g·ßL~ûÐÀµuc×qÜ‘ã„n8OŽÑv2Ú¸’ õJÿê8ÉÌ÷Ùøã=“¨Ëí=œ‡û­R{ã4ö†~m…b¢Ÿiq«xS:¨+ŽaÓŠË´–Ñèn¿¼7ò…ûO§Vöüu3®Ö““½.5p¿ñ)M§â\õí`ÝW+O®ëY2ÎP×Å £ápZÓÒ–™ë†õå¸ègÒ÷°„®3ñj_wörå£i‚Õå@ß†H¶nfŸÐ2
Ž©c-WÑÜ®›-ö›Ô·æ;ºš:ŽL#R£äTæÉ¥yHn§f[f”w}4t‚YÖôÁ¦JÛägËß³90û88Žïrð5p#ç™‚·/’%ó.êT;~ÛŠÌýeß¬&Rê{ÞWƒ¦9 ”ŒÈy,W7ÿÜã÷pÆýg<ÏSc§ýÙl²ÿ{1mÉeÆAÓ•%üÜñVwRA*EêˆIYˆÖ¸C<¬X{çFÓ¦ÅˆX›?Ô—Š?ÜyiJ®
Q?¶9P}#~¢åù]‘.xœu’Ë’š@ E÷|EWe9åÈ«i©Ê¤A”DÝAÓ4íðžâ×Çd¶É]ÝºUgunßd’až‡¼°âùt…”J11/Æ|’
YŒÕ¥J¸&nIÕ!‚RgPÅFÙJ%*æU	«B¦ªBÂ#Q‰¹xèóºÃuw@Û–Õø^%_M$ôNË˜¯¸. *Š€^âÁ‚—yž{®%ë{Ò“õÖ<Ñº%M1¿SÖçCòŒ6´c,þD7LÛ¾éƒ£mzÚ)
¿;80u:Ö5M_kZ »ôW¶ÏÖ¡î ü&F©µ'MK-ÛÖì­}óò:‹†ñúyíúw·®9°3°@G;>“fm·U‹áV6“g}†/‘?¥ËL:¦ëdç¬L¾¾®Úöñ0î°>#iœ ¹Üºn£7ëépìR¿×ÿÏ«ª¦n¾˜ÒÎaz)d…šúÓz®aã‡´9,õ°QVL‡ëÁüƒ¢1Üg/ðv¡1a/Ò™ñÞ2ûAìÆ-Ós%‹Ù¼Ù2:Æ8»'¤ìö•H=‚Ì
NÂRÙø+ÂîŒ¥¹;lµÀ;RGŠžN”¥5ÓLJì·ÐBezÝ±sx-Ë¦Š®Ê(Oæˆc·¢ñ¶$×ó40:næ5u Î®öHâN7ÂMƒß8ðö|ƒÏ}93¼Í¿q[v')xrù¢K²xúo
Ò³ºzírÐÏMÍq!éêb$ø¡ø÷‰åã‘3xœuQÉ’¢@¼ó1GÃ¶XŠ¢&º'Q¡m[•[Q‹²É¢â×Næ2óÞ)32_¾ˆlkÎ¢!®PY‹¨¦AUå(R‰*!¦H’¢±@}ð	­yÑ‚1Ç¡Â"D˜Ìp¤N$2#bDˆ@,‰+õ¤	‘!ÄZ9Wµ£ð™Ã´gŽ*RBvmRÖÀæi› £kX^OOð<Á{Z´<{aeþˆHUe‚†P…Px°yÚ¶¼VÚÎº ¼eÍ«¬ºà?¶¸Š›4Ãç¦5_‚•µ›¹µÔ·îÚüÃ@ ×Æ`†®c]ÿ2¾áÞ;ãµaãä¨|^äz~Õõp6ŸëS·Ÿ •G¦ÒønœK	šM˜`;p.)qD»7i|‡“ ÿü&Dk7ñ*5Yaî‹»µùØèîÉ‡d;ÉnÎz2Ú××Hüà)Øé
.ÆÊ6[òOf*¦kÞÒÞÙDÓ]PøSÄ×w©wý‚·¾ƒqP*RªZ …áJÖê¢Ti|xãfP¤;/Xôx×œ¼¤lû‘{«P-3O¢mn}˜çÞÞ7…ÒÈìº€JÐµ{µõ:%Z »†y4Æ,D~©òS;k,´µwÞö|>è¢¼cr:îÏå˜š0vv^!Ï9f,,El˜t;>h‹•{4.šrlüÒ‰mxsÊÉý:ÍVÒÂ¾vEÞ“ª!J¥žÞð&åùNøîÌ\NþÝ˜ðÁë˜ƒªË2PósÇ›ü@HQ]æ HëÏº"Eém˜]ñZŠKÎ‡,K‚ªæQú°æ¼¥!m)ø–4¿½þJŸxœÍNÃ0„ï~Š½Ó7qœ¸Bˆ'ž`ã¬·ù©ì5}zÒVp@= .«Õê›íp U—¤°PÒY‡u-µ¦Òi£óÒª<Wµmôr·¥8` ‰ÁTU­²®4¶°•«+MaÍÆ³id•›œT)0q?x0Ex¡)ÒûlwÙž"Ž1M]fçñ6¥ÖEUÕEw2—R,×Ñ3Ó?åbúim¿…C ç‡Fbl‘šä…(Äî	b
Ü#/ƒ~Cà#øÉ³ÇÁŸ¨…]ŠƒßÓ>ƒâ
fB</¯Âöþ<Óê'÷–íÑs'
3ÅÎÂÆÈ}H+(Å«ý·†.çâÝÞrãy^òß}7Q»ž[7ŸÛ¿Ô&¾ ¹ª#˜óxœ­YÛrÛF}ÇWLùÅrÊd(Ù’-ÕVjiIv”P—e§R©kÈ1dÄ¼íã>îßìíþÇžî@ð¢ÄÉ®d	˜î™éËéÓÒ)%÷Þ¤*=x#c™½ÝÇÿGñô y3}}´ŸJµŸ¾>ˆ
é”)Åþ›TÇƒc•^Ço¦¯Þä~:Mß¦ÓÃºb™ÈWG‘¬Ê¹uâ{¥Ë¹xWùx.þ² ?úSúã¯Ú”*ëÇ6ÿFà‡o^‹Þàh0ˆð4×e©þ¤xt'gÂ©LI¯NÄý~ÿæÒ,ÄÒV¢´BÝ+·´F‰‡¹±5¥ÓÓªT	½+çÚ7Â}q)ÍRTE"KåEj]TÎ•0êAì÷__¨XÀ,ÂÙ,Óf&lU¾©œ:û ×fBlç0ž)î•I ¥Èª™6þkõXâ¹¶¯¤ÁþÐ^ùJf"×>VY&²•:/œ½W¬„‰ŠªŒHÄ,/d–	mâ¬JTÒ¢1Œ_fvvEÃ…6vZ‰K]J±÷úÅI$øŸ¹ÏU/Îô‰IBzº¨¥1Êó`(Ïêqw‹ã¥[
(…œ©-M1ìfªBù°Ûr¾tU\Vn[˜Ž±PÎ¨¬—Ø¸ÑÁ*‚ÐJÓš&t‚É<q[ŠœÊa-Q™ÊÃ©WŸ.Ï'ÃóÛÉÕõÝÅéùä+˜$S0l$6bo¿µÊG¯ÄàQN¥ú‘÷&ËÎÕ£¸—Y…(°©ÐI/.]Ö¸!šd)FUisíüBwÕ½‡’BÓž¾?Œ…5ìç\.ß‘¼ˆðQðÚ;éJñI1ôrEG­¦Ûp)_Ê¥YEaK_úÎ¹¯>ŽF_*™Ð9p…ø”¢°”0N ¶Õ#ÂÁ^ËÍ+ù `³3gË™~ieâW¾”¥ŽëÅ^ÉRáWßkWê*ß\í—ùÔfk3=›—ðà	[èÄ!"³R›:{ÙC‡%÷ÓjÖkxou‚L#¯HçäÒ‹	';-§ÎªÌ¬œo…Ö­z°nÁŒm¢8@fª,Yéëßt)‚ÈÂY¥V~KÏx¡‹Î{(”%c‰±%ù¸@ú¶>º $IªX‘ZÅØs‘p¤Kq%så‰w©VY3˜&[h·‰N&f{û[Eð5Z•W7?|xI?‡ôóŒ?ò­®®×úw¨ò¥uª94[Äf”[³8€<)vûíùH¼¡D(Sér¹µ˜<™ÓêMwû(:K ›YJñ}•-¤3È¿£ çÓŒQ^«aj{Mç%àèsåK¡SŽTß§¦tRs`Ol­Œ4,““º~_¨Ìsìär[çÿsutL2ú—J‰‘ª”™*7ƒg: uv}z".ùVœÙøµqHÀašñ±Ö d¸+Š¾eëÃ{ ¬ ¶÷j‡©ËaLG{Ž­+5ñúWõœCé¹qm'üØ?çhIPë,•ä¦ffjÓsé¸ˆo ±^¾¤rtÊVÉ–äG.ßP`¨`pý¸g ÁÎÎ 7 £
0åé’6¦ûßY(Þ;XsŠ¤Âb	 ÐÎS@?2W16˜vFL,äŒÃƒ‰$†„f¤MõEßQ‹qNØ¿÷v‡9õÌPìK7«j@`AU…T=3`2Ï¶‹i–Ù‡ö‚ti”WG‰³ËÜb
Pªz"$ÂàH;26•¤+vŠn"	û&Œ3T'Ú¤0.¼„èØ’g²“^˜a£‰FRq à†Ü!Ëš‰mÃÅÜ VÌû\À&ÊøM­ËÍ~WÊù¡>Bc
®Äítªãß:ÓùcAÝë%ê^Ç+®ÇŠkþ–~K¸±í5õ±ÓÊxôJSÄâ®CÒ~"xîŽ.~?œ†t‘öèµ˜j²·«¬8,>¨Rœ}¼gô¦-ÐMýƒDÀÔ"CcYÈ »d’Y-ÖHÐ³š}ŠD¡„nŸkóHã«7¯$‡‹Àt™çÑñ¿/Ž$ˆâlxðm•rÞœŽ^öƒÅœZÖF[ÏÓ÷@dÌí CƒÇÓ¡Þ ˆƒ¯Pv]ç<$|abëy‡Í÷žÁ´æ”ì¬Œ|?x<´Z»Ö=ÓžiÄÅµH3´#88É$©ò?ô$éº%Šº}ÎÞþ Cúà¦R<f¤s6âüâêÓpêƒÜÞýø¬›Á"Àlß>°ŽJrá4pfÙðÎæu]Æ€$=òŸœRLgªWêÌöëIx6n(4dÐ:€uÜ<˜nÐ!6Í§â,‘ Ä³ è#ªî+—0/	°»MÆø)ar˜ÇÅL™¢Ã¤@¦m;ÀÄÈ7ù[˜š
×þÁÔòþè‚Ü²`”nxþ¼¢³P±ejÚ¿…¸°‹nh
5‰\Yª®ú¤î/!’¥=àLÉmå]hçÄs9e6ˆR`K]RAÝ¡«öä'Ðdj#Ñ¿Â‚JmŽ9›‹ë«Óñiº:ŸÖç'œ8‚†öo6Oˆ7¾¾b±ÿWÖêÐÃ>„®‹Þ9i<_aüaó×á30”úÄpÉ5¿Ò©>)G^©Ã~íõ9÷ç¸ÝiÝ‹ÝRƒ¹¶¤½wèåC¾µGÄV¬üNM´bƒÖÖWôtEš'œ^¾]Ÿ2–×<*q(DacÈ(º”âCåJ{o—bïp#~ë0¢ ëß’¤]Ë’Úh„ñtâgô–…Ÿm˜©hÔ,ñE¼’‚_M=š§'›2ê³Çvú™À´#¼•yàU!1§âV.ºÔæÁZq‘ƒf¾Ù¸íiFÅš°¾¶WúB¤¬WkÐÚ,Ü,±’»—ÒTV—ÈB[ QœºS[n‹=8"‰.ì††\=!R›dÕÊ‘ëu"VX1/IÇž×…	y'@®j¼%cy¢t+¾ý{<+A$÷h
$n65Óù¸Ê9ñ4~ê¿%;¡  É¤¿>V¢©|fK®™DÛÉ®äà´qT ˆÔ?.Ê!NÈüÇE¯t=¡_Ö(×;+ÊG§f[Â·Í„	”‹pþÁÉoWE}Sæ½.k­	£%±%dîþ<D<këvžÍÏGBíè¸ÌsD…cÇ?K¦¶TÂ˜º±æ^5ÀèÓc³Õ¥4EÚ­_9ÆÂüæ^ºµL\wAÝå:I2¢¿ O`ÊŸÛÖ	nÔdàžã—]•xœ—_¬™,´Ý0Ïñ(ãB›Ë‚¤Ýµ1¿ %`š6dákÉÛÞÕµ‚XÂöªs<UsYùÕà§}jÏfØ¼kÛ:/C(¿}{{3¼½ƒãµ+ñÈ•AÌ,®É©Ê|›CsôVÝÁFÆsº:ZœJ*Ó]G~¤E
Ÿ½kbõl $Â ˜¼ÖOÓIz7ƒ;Íš:knjÒNÉG{<ÊûêE›û]JÉ3Ön¥#õÖ  Èx7§ª»šŠ87©4±ª‰ÞÎh×0á\A?˜È$SŒ”Ù6Ý{Ñ-89zÿX˜*Ÿ¶c ­Ûð‹ç•YPw7OõÔOˆ!1¥ØÛ0]ç¨Ozõ´ž7å*©Ñ’n()Í–LñÆ—"›ÊfÚ~p—4ºÀësÅºž;EzÚì¢åÔ…ŽÞÅ¸°ÇÑßª%ÍW\µ1a¡
÷)Œx›Ö±õÈ,iûƒ(Bç„ œ‹[ùYú¹ZH×ÝgÅÚnVSË@OÐ4ª½›ËÛþôÖ­Ó½/Î‚•?ñÞ¸\˜&ÜÕáy@MžŸu»zš.¼9_¨-V8È×ªŒ¿f¡gðà¨~°&Jø@!}`~¾`©uÉ-zÆhßÐÕÎØ§®<V£Ñ—Mæèð½Þ/•†¯k¾ºb,rícÈ)-
žŸ‹‘¾bŸÛóáÙåy?G\ŒuN­y<ª-hP¹k¼˜ÖÅñeÀ ªïtç¤*2
kj˜ÜzsÄbhê}Õå‰y}u7¼áYW@­B"^š ]ñðÕ®æ©ÇÇ@úž!ƒ¡á}ƒQô£ÔNœgsú´°6l­ÑMÄ¬ÑBY*«¬ìœCÃ?ZyŽd¾>j	õª;c.TÓðõ2I~Ak¸¸´ñì!®}g³Þ˜¾tÑÊ.gïHú¢«sÃ•A’ûc²pÛSDÑ™þH®ê˜#]2NOÉ¶`o³›òõkÜ±T¹ïGÑ¿ÿõ÷ÿüãŸ]]?ììgJái&á^þ¤iù›ÓŒ!4ädPõ/ûÃþmÿŽ¾“ê™QIÏ¦io
Žöß›£ÿþéQ"™xœŒA
Â0E÷9E.PI4™IEDÜºÓd&[´©´éÂÛ[o Âß¼ïÕID»œ1o[ö[Ì¶%Äh%x‹9H½ãvA½â$¥êì’¼Î%¦diçÀ  S‹–× ;
–T\j7Nú"}íôy™¹Ó‡Ç6ô…S_ª<7<Gm=øÐ‚óA7ŒQë;ôµÊŸººÊ]ŠN#ÏJÝú{‘ÔŒ97ôÞÿT vWi›3xœu’Ír¢@…÷<EWÍ2•¡¡a*™
Ä&*(šDwMÿ Š€Ðˆúôcfjv3ww¾:÷ÞÅ9²å@aLY
¡Ž®¥HCš­ÙDçˆX¥ÐŒ¦BiHË+	¨¦ßéH˜ºÎLÇ¶DSrb:Ì!ˆRªi²Gô¯ßàÂ$ÝÍ"“š)ä¦HI
™%áýd
ée^·à2^ßÑ<¾Ä÷ôK¼•äåwZÍ´L:2Á#´ TîôXHÉ[rÚ§à©ª[Þ”×—ì~ Oÿ³–5YWdàñk<?À1Hp°p×›•ÿ›+@CçQÏu½±ë.½eÈÞ'0¯¼·Q¾7¢3jñàºlŠ±‹Ùv7k„ð¼®êc©MÊ÷pÝÏ0^º–b–ÈÑéœÌ«g‹N|º+	:Óà³sW2Œ¨U7òïæŽÆ»{"*º< sŸ)àD£ÉnHWÉ)ýðÙë8Ó…ôF—[©5­Ö¨#¼šh{A{?ÞÅtaI’/¬mÑö39VÀ®;åxYMÙê†NuÇ¶rr³W9:´õþÓ˜9‚y«éÒ8øœÍÊètˆ-#Í6±nù¥ºà2žïØÉºUsœØÛµ¹-ÑöMõr'¸R8s£7õâãu;ÓŠC±ï'±†½êK&š>¯û•:^ˆ§©–îRÓwö]£³j<|„Ñ«gBB{®[×Êœ´Ÿªû¬€çå:Rþdæ/^ÿ˜2çmÆAÓ—%hù©çßLÑÖG°âgRÉ|Eö¤Ëù´jßLQªó‘ÿ ›~í€¸WñW¬n“†ÓBàêNDuõ+V ¶/xœ­’OoÛ0ÅÏÕ§à­-Vœ¸v1+ÖK€òg;´EÅÚ)ètûö“Ü.ÛŽv1„'ò÷ø(s ‚R×ËºìTWVØ·ÙU²’lpAÖTuåJ«¾ÓâŒÕ®tÓUÍR¶øP«Z.Z-åj‰z…êK‰­À‘`Ct<À¿bèx^µy¸jŒc²óÞŸÞƒ\Õ«¦lêº„¢¬ËR$õd˜é¿À„»œèöûõsüLNùPlÏÔmzX»¤žwBÈ9<)·FãhÔ-äYÐ)`qð/À^ÐXì,MT°&²XÌaVÈ4U‰ë³é 	y4ƒÌ‰¿…_ì( 2ß¸ÞŽ*á![Æ)úéðDiâç°Ö0›<^ï_ŒµÐQª‹‘`Ì^Ãó¹LXq“éCvs¼µ	U]‡Í™yC£=›?È|wMÜ†63äãnó´Ûåï¦ìŸRvØŽç³Lê^,ÿ&“ÖÔs<¤]†1…ýƒ›q#’MEiýÙ*£ß¼Þš!5±5GGªðZÝÇÿ1ÄOyÐý¸”4xœuRË²“@ÜóSåF+¥˜K-!äBH /0»f€„W` †¯7WËž]wŸîM7ï(:ÕD1IEˆ-Ud¬#1N1StŒ4™,A3UhIGk$ªT…Ö0Nkj¬k¦0N!Œd¤áX§ÿ)ÒdZ5EÒ	F)’dI’ª¦H˜ND‰`] Ï›¸´à90‡>ÉÁ—ëø¿ïEÍiù)iªo@R‘ŠE$!|‘(
O¶*8§°¾bð¥n:Ú–ïÙ3`ˆÿcËÚ¬/2ðñíÌ…íl€oû`ïØãpÜ-~óÀ½7Ó0Ì¹af°J=ç;ÓÅùEÙŽ°sî†‘.ÇpÏ¬|yUý{ÇòqKOEî	 ÞÔ¦º]p¢Äx­³Sd’Ð.mdjy®—‘†UYg}V§÷¥þMëÏ½/K~ÌªX ‹³ÔžÙs3Ì¦ivc×Ó!æ–ûâÿ¸ÖÓú¦b§°V§1¬­éz˜q†Ó#KÚj½Ý­V£ 
ñ,;Ó&¢]ÀýLßG¯·ZÓf½ý}ÃWb;Tó¹ã6š¯NØCæTL›¹×æg¦ŸjìÓ“ÒÈßNÒ|ÙÂîfpÜõùb¸¾­ºwK©ðÆËÒZ{|‰O§ñP?Òy5lgGMÎS¥oŽÞEØëÆÏ£ºèË—º;EhôˆC¥.«ôöÍç¦2ÉðuM¾óU _Š/ÂŸÎëß	í2
Ú¡,AGoí9x§*:`]SIÍó¹>§WÒ½T¤ŽGê±¢ŸISàÓ®/žäsÁ­šîñteESƒ÷¾·ûðÍÞÔ®ÿèÉ‘(xœRMÓ0½ûWÌmÙY9qb;B,¡‘èR5.•OCG¶»«þ{œ‚àºËÅ£y3óæã98D(QRÎ„Ò”‰Nê<%§­}^
.3T"eTô™•Ã)@š±–
)D—çBm)Ó¬í:Ê¹à—¢-‘¨s¬ƒ>©)°S?”ð§rðÎýÆîÝ_ìƒ™Ž÷=½‡´àEš‰œPN)‰èÉ„€ÿKÆÊ²ü™žN¸¥5lÑyãÃ²ÕOÖ]"ÿÑØ	Þl7»[pÑ‰Qç	¹;ÏZ„?Øç$üÚøyTÂ„ÏËþU]Yª‡íÛ®ö_®¶Ù7·/a[R¡5lõ+;gÇ1Þ R³jÍh‚AxéFî–…üyž­ÐÇ»£sñõA…³‡Ço›õ¡©ÍÃc½¯¿¯ÛÝ×ÏõÇz¿þtˆ­©51©õ
jŒ²vyÇ»6ê µæJuZŠø)+9—²ÌtVdiÌqBØ¾OÚËêõâ_¸ºÏ¯’4xœuRÉnâ@¼û+Zš£EhÛíMJFéƒÁ,†8É­ÛÝ^0^ð_?d¢ÜfÞ­JU¥'Uõ­ÀâIbÇHaP…ÔfX…*Õ˜!‚
Ô6m5–ÚŠªPc!¨Ú–¦«V"¸’Ø²4Í¢Š¦@“ƒ†¡üè…°¡f›ÐI¬#STØ
¥Úªc+ônÒ¹*Ñ¡Ïêø"ï3@†.ÎÀcñØxÎ«^œâºüÝÐ¡¢šH£ûÓPº³eÞ÷¢ó¼w«ºÍéó9½ì?¶´I»<£¯#ÎÜÀf¾¡7ðþ°sþòÀ¥#1Á˜L0Þ’í‚‡Ó•7ÙßÌŽhý¡µÞcîzžÞ®M1,'º-‹—•¹ã’œ}K<²bºO’¾˜Ý³Ô=úÑªôøfq3Ûe´™fdçÆ»µi,ë“µ2·¦<e7g¤ b¶!³‚TÂ]å£³Såâ–´Ue›5îÈ‚ßCÏÐK}x3K»ã›õ	)}†g‘Ý.gaû‘uô0s·õm‰}±ž˜Eµ}ßÌ»™g¬ÛC¿iÖ„žr·œM\Š^Æ‹ûÀŠõB)ß¿t9YVÔË½Ip#¹SÍPŒ=­#{»DÑ[“òc`_Ã4Øl™Nƒk“ þº„Þµ)I…G…öìõxÑóqrø8FŸcŸ½•nÄá{ïp&ÌAÎg¯j&[¸èIOûÚj¥ïÎœ`úïÆ¤•hSšát­8¢ëÁ/é iëtuKó¶>ÑBŒ§½í<]9#Êê¡Õ¨ÂCèHæ\pðƒÁRÐô5øV?”üpÖýx’xœMo›0 @ïþ¾Gkc0Ò:ÍJ ñ ÝÍCSpše¿~ÚvØe§½ã;<é©UÈÆr4Dá¢iM[N‹E‡yg`ÖàŽ¶ŠYA“èˆëØ@:gz§9˜Ô²-LkšÎ¦!-`Wu–+,Î×ldü¼É•«¼°Q|]V©ä<±áòÀÏ_ Ž-“Ù6ÜiŽ¦.§iPJü¡_úmèá§_¸~&0RX„ABOeîÿö 8JŸºo!uµ:ÌNë"¢:2ënl¶Ë#5ì÷‘ºeU_î_ËoÏ¬§/ûü¯°š¾+šyñù4*Ö½”;‘ìvWÌU°‘!]óP(ëõ^¨ãÑŠŸgÙûyÑ>ÊLTÕn `j—ÙíàÎI•£kX{D¦ïw÷^ÆéßÞž |rßøsã'Þ¿^ m[ÑB¹ˆ¹([ ’0÷©ûS~‚»•T“4xœuRKs›0¼ó+4ÓcÇA	ÐLÚ)`â`lcì8©}“„ÌÃ¼Âvüë›´Ó[»·Ýow/û©^J åC"Lb3„§Übœ
GbŒ™gs~Ô:ÖËFì S b˜H0t„”Çä5m‹8†M D‚rî¤ýÎ1eN	ç&â4èG›EB"e6uˆáXØDÔÖØ¨ò¶‘,T¼q9x<}’þI~’Õƒhëï ‹@dXÄ hA¨}¨u¡”ìÁ¬PÏ#MÛË®zÿ‘}Œü?±¬Ë†"“OxÁ,\õl¶álå¾ì6Áo]¸žð\×ó]7ñ’yºFƒ¿ñ";/q|1ûðêºésºO/S§Mî2Ó¯gÇ:*_?h ÙÝ¢Í®ÉGºY
}8na¸9|ˆÙÝ™±ŠÍ}»]8ê.~Ëª»5V¯ªšW«v¥Ì{Kz?kwJÜô¼x'_{:tIOgy­övì`Œ¸{>5>¾ÈmÓvq¶ài’,.¡¦!acÅ{¶.Ã-«—ÅÌÇC\\Ï}ëf¤(à‘gÁ]¼CÓÉûëœdlž¿ÎÕ‹ª4°Yêþhý+§|_I1ßÞ/Ññ Û>Éº4u!w%ôÇ )–
Ók®“×Ò›Nû1ëŒ½Ð —‡Ëb­íÓžNgw_ÖÉyo]Ë‚œ¡c‡ÊâØjÊ§§yévu‚[¹\&Ë·a×çÎ~ÓÀ·»ç—ÚŸÍ‚Õôß‹iKÙgtcU^žG9(ð…`û¶uÑ\Û¶¨õcÛOÐÕYšN2©&g“A15šæ¦)Æ®k{>|`&Xx.Øþ¾ƒÏcMú;ÒW’xœMKÄ0†ïùs—–´MÛdQ/"¸^V¼O’IØ$Kš®øïí."xÛÛ|=3ï;%²B[a­!EB‘èoxÇ‡®í°‘²5]£Æ–0S,ÐËÎ:Gƒ2¶Õz•¤V£f°¨q²uR6Æ1\Ëœ2ì}üJ	^Ü‡kXûP[:?Ný±6)<@ÓBò¾ãî¸âœmÕàK¡ÛñM³êg•ê¨±Z
–uÙZ/Tàíù	×\N`´Œ}Ìþ/ƒØž/YðÞ?÷M-`9‘©þŒ©dOgbK
´.å€Å§m‡Nk2¬1“IgÊ¨tQ±€Ë)\{›o¨fìà§H¶JÎUú{w‹söw=’&šxœÁnÃ Dï|ÅÞ«Xcl¢ªj9ôPå/ ï’ ÖÂ8Qþ¾nÕÈmf¤7š©…zÖØÞ:’ãÐS«¤ÁÆ zåI¡¨œ˜]¡\Á­é;©pß£×JíÑ:ÛilG‹ÁïQÒ8åpk½qï˜Ìð•à=ýÉ&¦éþyM.NÍÈéTgtgº^Jx“VJ±¥)ÖJ¯ãƒìZ£ÿqq7Ö2À!‚j4ru-´@e8O!ÎsœÝÇå™Ç[áÌë§ûöqË:Ï\*!d~ÀÍ-[Á‚iÂÍN¿Í—xÍ„;açŸ‡W‹¸Gx±– xœOOÃ0Åïù¾£UI›þ›v@“—!îií¬‘Ú¤J=ª}{Â@\A,=Yþù=›#Ø²¡Î´eÝu­lUä†Ê–JSW¨°D1›HžAjiQj«eSi•')u¥°GUØª&]Û*We¯…9ó"œ_C€ý·ÓUfnÊÞïO“qcÖ‡éTYé²*•nàF¶RŠÔ3ý7=ÇqŒçÑõ†S›êDcg`aÃçz3›ÎŽ/B¼¼T¦a9Ïsˆ¼\žôüø Ç/h÷Á:¸~H[<t$"YŠ‘8@“åyðšè=¦ß9{]ðÃ8¦ÓÜ>¬`º‘>§¿3’XJ†’±ü‹yZò•0âèNžp¬Ýt—í_¾'> 0¨i“3xœu‘Ko£0 „ïü
K{ŒÚ`À¤vU„G(y´Ð&70v ž4ùõ›îjo»s›ÑÌ\>ÞS
(D”±‰Š®ãL”J%(J	ÓŒÊ’ªk*fHL„6éiÍJ„H¢&º&¥©œ%DÇº„0ÒTU–5¢á„eLû,£"f:Ñ3¬¥©(j„Q¥#ª„åûW¢f„ªš\xÞô`Ežó2<•ßæ1ý6/EÍiõHšóO ‘ª`#QEážžÎiœ‚»—<ÕMOÛêúr¼\ÒÿÌŽíq(Žàá[¦íx!Ø8ðæ9¡ñíìß¹ 0&1Ã\ÆÖÜúÙÎÆÅÎ\áü¤¬G¹÷&ÃÈ\Ï3üÐ·¯¸Š?æ%ER«ÉeHƒ .nÄ%=Åã.J'ÞC7ìí®åãycÙ°ŸWŽCÝ+J‰¡;˜ú¬ä½-—’Z¾æð®üüÚ¥´~Ô½-å¦¡HÙ“+¼<(©‚õ­í`4ð×·Þîbñf}©™gLÑL ›½‹ë`^ÃUáÏ¢•Ð9ÌËÛþtÛ’M³‰òÓ¢†ËOÍœ½~Ä]ÃrXÖ!jû½mQ$€£]¹hòeË¯_‘Ô1+ã¹ËµÓÄ$rÞ'ÕU¤Â[çö6€#	¤	ñö˜¸ÕÖ÷²²®\k1}FìŒ%e_Oíâ0»*+yg­GÑ¿ôÌdN×â[™–fWîìxÓNN¶Yµ}À³³Â'á3;´þMLx¥ý‘‚öRU §Ý…ü@ŠXßœAN¿Hžõ¼M8É  ,‹/@šŒ‚´jH	~­((jÀs
XÑß×%¼hê_†…þ¹Ÿ1xœ}’K¢@…÷üŠÚ“QŠGÒ=i°PD_¸ƒ¢(P^¨¿~˜Î,f1™»¹ÉÉùîâžC[Œ†r1Ä1Td>] ”H*”"¥0‘§%/âDaš¨Å‚ºH„xÁó¢EiÊq
NÕXFR#QàYˆpó*õ4«[`E5ÊpuEÀ[†(‹òê£ïpÛÍªºÅMñœ‘œf}<Cuù, $Êä°œÂqÌ¤–9¥¸fN­>o°ÿb¤!]NÀß£¦í‚½¹mºÚáèß:0v:Ò5M_jš§{ëÄ7é°ôõœÝÄÝ ´ö¨i‰eÛÚª“¹à|LÅ…ëì)Še-WàêÂ åXz2žµ¹	c„óÌjZ–.Iðü]@(f—íàÎsss¿ƒ}4R¸”N±ÉZ¨´ƒäò‚SÝ„zú¥
£žÎÎ²rö·¾2ãÛÖ­íëÕ1Ë×ëÚ„Oîõy_Õ¸¶‘ò*üM¡2ÀåÛ^ƒ÷¡Ãs™cƒ¾²Gëp×D{9¬çkâ‡+lù›4p\ZIê\Ï
!l±ÖP@Ãúî1`õ9H•§ò¸/‡LÈÆÛ.CMTòòd°ÅUçòêñ0·U~myAõ’¿õ‰7oûyìÞ¦?œ:YEçËË*/e¡…ð(Ú¬çë{ç+%ŽºâË1Hç-¾igxî½s†hmía%XÞÎòÞðîÃtè;ÃýüwbÌ* T'ÄEî £Ïƒ¼4Ã ÍÛŽ‚#š×Ã;DÐ5Âˆq:ç/´´¸êúImÚº™*69ÊˆÒ¼"³_BÕüXž2xœuRËn£@¼ó#í1JÌcxŒ”¬2øI ¶“Ü^Œ‡ûë×ÙÕÞv»OUªnU«š3Jšd*Ìîe"C–Ù@T33J-¨Vn"	$ROí8Ð’i‰¢ªÐ"$ÏeÙ¢9JÌÔÈt5Y35BI¢¢¿zÅ¢rj¤(¡PV Ñ©‚L]ÏU¦†‘)Ð4“\‡JDðòÈÀ‚V¼¶Ò<¾ÁSò^«ŽÓæ)=¶?¢Ð4LÍTÀãÝ¯,ÝÙ¶âœ2àUÜ	xîŽŒöÍõµ¸/ÉÆŠ¾ª<~—ízÁ„^âÀ[ã÷mäþæ% Ë`§6Æöã7ûmžE~¼œFöÂ,k¸9k,¸`œùA€Ýà¸s·c7bnàùgj§–l$ÐœÚÑÌ9ŠrÖÜ`Á}µRŽ»òkqa%›ŠÀýPÌñ:ùÄÞWŒ½ÞÏýÚy›„Æ¶8Œ$à5mo_/£î0'Þ»ÛY´:xSîï»«?éÌJOÉÍÎý¶_LÉ;Kk¨(ÝÅs×#b9H`š\|…Ç×CöçùL]Ý sV¡ÁºYÈÌ˜­Ûª?\öÖ¤®z†P²°¶v€Ë"‘€=yH–—GÎ9*ÅÛzã=ìÆÑ?\¨Ófµzënãg]¦«ýBÝmE¶ž)ùH‰U!:;¼_!;ç9¢A¼Y˜Åj/oö«ø§Ÿ"cÁ÷`£-íÉ%[LÝj–8­§Þ>BKGš8Ë/xiNK2s×Î¿“V”ô¢i £'A~è‚œ[PÒ1-IÕMzÂÓòQ•¤mŸ~×“ô@Šª+ÀÀ¿qÕÌî¸¬:1þ·úñ“2xœ}’Ks¢@…÷üŠÞ[ÑæaUÉT ¨<a@w-4Ð†‡4 â¯“ÉrjîYÝSßYÓ1B€pN)yJ‚s¢"D*å„Eâ‘’Êª*a	sWÌHÕQåñÌ‚¤`œ¦*$UÏrŒ’9–D(Ê"&ø,¨î»¼fÀÄuœ“
øu•×œÜãÓê½o	k§UÍÈµ§íòþ<ëòàçH’Ñ\R˜@Bîé–´ë+Ú™ý¼þÄÞÿË®YK3ðòuúrµvÀnµ‡õÊÑüÀ[~ûàÀÐê±®iº¡i{}¿I¼ìOßÊùEro"[š–˜ëµ¶¯¿‡›‰:Ÿñ^­#ž<œšÙ\n¼sØŠ“sxÙ²¢mçÛÔ]
œ	ÌÃ@›øn&Zþi6¤(“÷2´£·3ÛQ"› rpþH—xÆ7£sY$þz›|5ø¼Û»%°Á†“e.úÞ›l£Y’Ì´6j7š%F`>¢0Ò­ûp<_zhC2^o¬ô’M%"qø@æ¦ÇÉnI&Ä>Å£ÞqÀÊËm{üÜÌ
YÖVÇCsz|Xû¬mŠ$…Ú™)UÙx9ÆŸR‰È^Ñ“Öff@j;¥/Ô£êÚû¦(Ë¥ÇÂ†Jý>È±½º¸4‘­Òî&‚mD}dhü1>è›û1ÿ<ÍàÞ.ÆqÂýílé,þÝ\ÜpÅñ'ÎèsVm÷õÓ
h,ÎE«þÎq~N@u+ÉK\ÐöÉ´ Œàdø†iÏÅw°{ÂušÒ˜â<ÇU·´«Ù8ý[ü‘šxœVËrã6¼ó+¦ö’‹¤ÒÛ±Ë•²×ÙÍÛÛ•;IÄ$   ½úûô€¤–Þ(®,Kà<»{Œž™.Ëå~µ-V;^n‹Î·\®¹\åÛ%—û‹e¾Ó›ËRñ>;(Ï6Òn{Qnó‹ÝZo/óÕv»Ynóo6Å~S\nÖ³Öj·T™êbí<ýªZôØ*éú¯ ÿ×Ëõê¦j•iÚµ?Ðj·ß^,Wëõ÷4_^,—N[#{úM¬éctM×Ï¹ü¿yfo¹Y8_®ûåîr×=\3ûÒò\7æŠð­$TáæÚYË:RÐÞbÈ²§Ú
É•ã!áD2çÆªhœ•gè 0Ñw~¤ŸÂ„=ªÊÌ2eú…Œ%V¾1¨õ ¢®Ñ«<xø|÷]XdÙí4½;°Wˆk–=S£Ž ´Rõ¥¦è•çcV±/c+”×üBü"õ¼
0…ñìüQrDïšaTQx™±¥ómjgAOgRÑSÕcàš-©µ¢œ&h÷ÂþH“,Oúñdð»«è®V¶âìÞESÝcyûé~A§
Þtø_5 `ú|G>ÙÄZEª•$»ÿóO“Œ“’À`Á€p,³¾‰"Â“NuœÖxÒß¹\Ù;¹DB<¥¹¾hìªAU},þ‚f5$&¤Ÿ¢eg)£	eIIÆšhœÃ„´é_Œæ,:Mb‡n“Öæªi>ž¿I9i`‘8ããùïŽCjÈºH‡è©Zs¤Ò»6•Þ³¾e 7¶¾Å1D« sõŒrÈ> 5ÈhRMtÃÚÏ@”Áx¿º®xÓÏääÁÞ”ð@D½vŒ@$ˆE—	4Sdf©©¶/Åµò¤:ðÃ2èÞúCá,zVÇ… Xd°®²9ÝöåLyí»“¡ÂF­‹ ×~:1>
«²§¾®¨·/Ræw-RäSßØGF–™Ex‰Y,à™ÐyP!HÃõ‰qR¾êZ©0<9Í:<'j™&5ÞÜÏ­S?\êyî\Û—á\kfXÌ¾³s×74–#Re…3¶*‡Zg4(Ê€Ï¬ºxÛ&Í©Ì÷ƒDœ¬¢ó"-©P‚5ƒÞi‹#îäýIKOtºCºmNØZë¤RÕŒ-àêO[†(gN¶ßT.únÂ8ÕBªLO?×Ea¹HwÃ$ó Ü?XÂ|E·.²®ªO·Žè3tyXz‚+˜Šý8Q‡K¯ç0@<ÿº4ú‘lYª	ílv¬eïÃy2¿§ýz•KóKº\@cZ¿È}%QË…€Lãi&±HúHiEÓ ]°&{&‰¡R‚¹¦À†&ê_†GS!âÜ•å<?^ýw’ìŠàWøˆ½\øô“7mÎ¾¢ë€Ÿ7ÕðsÑò7Öýk=0ºÐX<×5Þœn@íCßÝ!¢i±ßuíL<b†ñûÄòƒ§cX”/xœ…‘ÝŽ›0…ïýó 2ˆ¢*ªTõO»›ª÷À¶©mByûÛ¬TU+õÊ{ÎœóÙÑÌ1odqèšª¨©R5u5VeWb¶“$«Vh_ïr1¡'AåU»W„Û]&EEA;Õä¸ÏÛZØPÑ•ÌÎqp.ØkøèµiÈ÷p
\žû{™zÙ¾Üd–çHäAJÑ:ctŒäá+é8Àû9´œ®Í¶ž¯ä-©óý]ZÊ}U³´d©°7CI;ê# R$?gMÜµ³B<¹ÞiÛCt0à@éÐºùF×C; í	èÆ¼á‚Ú†H¨ÀuýzWvºŸy’›#,ƒæˆOß!ÌMX¹ÙÀä|bóÂÑ³x…ÖYKm$õ°¥9XØÛkvå¸Âh•pv\yÒ4y
á¥©C=nf†°§
ñáši¤£ Ø¨_§'8Ž¦é+¼ßîO ‹æÛ†`¤ Yÿx¾užÍ'gÓŠYÑü<û^toI%®ë’f=þ÷Å3Ý4-¬Øº¿ ÀÅ pú¶5—yvî¦üóÿôB†
ðLšÙ®§ô8þÍÚ.ÎÁg'ó²MµI9ùßÓòÞÿRž^xœTÍŽ›0¾ósk+mò·Šª´RÕn«ö°Û0x 7`³¶I6oßC6Ûm*õ6ž™ïgÆx‹‰é2O¹\ÈU‘mò¤H7+zV¢X¹ÂÍ|Ë¼ŠzaQ{H²E–æ"[T™ØÐcYeU–‹\®(Pd…ÌR±^¥‰Á7ÆÂWÑ¡ƒ‡NXÛ_ŽßódžîêN¨6.M÷ÒÅ2_%é|¾„Y²J’ˆ¾vÊ{´ð•oàãàÊ¶û‚ß»=Zmll=¥.“ÅzM©KJô¡ÃYÙª[øôÔ-a6“xP%‚°õÐ±„ÞšSºŽ¢ŸBi´ÆÒÏDÛ^‰>
ƒC	Þ€ë±TÕ	Ä´R%Œá8ÆQ¼§ªR¹ÒÐž¸¾·¦mÑÆÀx‚¢¸S¯J‚¥ŠQkt=kÕ*\K¥š‚¨çâEˆeý0 È²®wB"3Fí‹#¡gØcc@y^¹¡§’£¸£+cYyCqÝSR8>5IeØzØg£(=…]ì´ø8 ólÏA´J
£?	ñŽJ(OY>‘Å$6†»Š¢)\tú'…¾lnFÄVÁQ\kÌHMùÊyÖy1µj¢éNdeo]c†Vr÷ÄuãåTëGýŽPh™Œ£±>+º´¥yuÀÇþyÀÄµñÄk Cóý& ñx7("Z¥EÁMg]ÿð7Ùr³!
[3´!ÄrjÜ™÷¥u5Í>;CŸ·U1| a”5ô-u½
•+…­ÔárÓ>¡DÚ@4ƒ9/äˆˆáV^ätW¹3×üCGóÆËÇ7eœ‰ƒ‹”ãøXUžI194ÝF‡ÂRö™T˜2ž7ŽËy6ÎýýÛ"¢ù jrfªjVœnÿãÏn)‡ãD­à³U]¶†­£í®ž¶q‡¯¢¿Íºï‘è–{„mC6ï¹s¥ôw¥ÆÀ]Û.,cÕÅ$é%—ß~vR—6xœ“OÓ0Åïþ£=íJ´rÒ4)U°°ÚC+Î•íLÓÄ.ödË~{Æýƒ
'NŽíy?¿yv( fÎËªÁ&¯Õ¢‘¥žËùe¶P3-ß–y13rQÌÄAtõLæ²¨òj¡]”sƒ3UêJ«ª¬s‰U^—º)´j¤ÎøªŒ°T XýˆiÌež­ÛAÙ~jüð²yYT2Ëó9Ld%¥àÕÁa€oh©ƒc4¬ö:ë=‡ýÔ‡ö"-ÙpÉÒ’¥Â½81½]Â‡º†àG²<DT){2ÞQð}Ï?ÐØÆPDÁê‘0
ñèà»Vd½;éÎëÚBLìA£O,ÞqhThãRˆO!(pxüã¦±®Þ
ý.IvIRÜ? uŠÕ÷WÇÔ¡øë¼T€¿l$°.íB|„C2’ÈàSÃ©¨Sñ¶¥ÓÚÙjRÝ8¾ÚxÍë)ÀcÃ-®~sª½8i.^õ×_2Üß¥ìßß=L“Øyº<zá,g¾›K¼Z#ÛÆ’[h{¯UþŽ£ŽøsLÏîpI˜c#«H4Á'ÒÁšxõ¾µ-'¾i&úuùoPlðÅâ‘5©~«ZŸƒ4†V‘§ëö2øOõÅ9FØ nö«Žÿ”ud›gôoÆ?*8–5xœRIŽÛ0¼óý;Zl-cà$‡l7;÷A‹jIŒIÊábc~Ÿ¦­ÉL‚r"[ªª®*08"¨«MS•YÝyÖwÛjÓæ9öív“QÛ6H5m]ƒ8£# jÚ¡ìú¦l+$IÛ6ËëM]KlÊª/s,š~ÓE)0†ivðy8tv?|:‹¬È÷£A¥×r6óÖ:Ë‹b«¬Î2Á_
|#&ø½œ`wêÒ¹?‘³¤×³j•m›’©S…½ZI­à}ßƒ›cP– ÌÀ¢)Èàô“V><©@æþÇZ’Ð^ˆ/ÎŽŠAÍÎà	œ”4¸Ykr>16vMßŠ<ñÑK×WpÜšºp'>¸(CL¦X•]V$!ÁBÑpã´=ƒ{º(I`¹Ï5|Ÿè·êUi]Tº¿!‡4*(þJš’æ-B	ûÒ‰J[Bpª‹Ý1T¼	u÷òçfGlÞr.Ò»µ'àÆ®1÷¶ëYÜZqX(Êóþol6U0ê¹C}¿ûØyúÓ+;/År”è“?1¸ÙÜìØ9%ý‹	ÏâG5²àj†U÷üðON¸º2'á?#§ôp –“'‚ÝÄì=/þøˆ£‚ON™ŽÜ;Ïã~\Æµ¡Gñ‡Ÿ$©™AxœSËnÛ0¼ó+öØ±¡G,ÛQ¸Š¾nIïÆ’\Il(Ò!)»ùû.%ç ‡^$š™]¥@²©P×õZ7¸)Ê56¥",ÚJVª‘Õ›º)‹ª•âˆ\‚ª.×ToZY\¯Êí·RVz«U­7mCíf¥¨ÐÛª8¦Þø‰E¸0$Øý‰ù]U¹ï4v©üð	ÊUs½.ÊªªaQ¬‹Bðí`R¢ ¿È¤¾ŒQõ°»—ù½¿§àÈ.}è.¥M±Zo¹´áRáN-”57@9*{°&¦ƒI4@Ëš”wŽTL)9&ŠBüppÄ&1ï&X$ª7®Ë)xk)DHL¬çœ¥=S….Þñuî™zzÛwB“¥Cd’(t è‡œ­ìÐ¸˜Ä+Îq‚/áoGéM¦ÆµþÃG~LÆQ)‰ŒkY—BÄQÆÇèœ1j[Å÷4øÎŸ³¨12ŠI£Ñ¾3M†åN…©S`ºp)Ä“ÑW€¬±÷L7`47\ÂïžL€Ú‘×-³Àà‡Ii†RŒ/ãX|Ggà\bÎÿÉÞ‹)@žp@•âÄr¡Î¬ðš52é$–¼KšEÇñxô!»šs7­í\³¡IÙyL|†Îz‰Œã-mQÑ|›3¢‡1ÿ'ÇËŽXËsæ‡IâYZ‹2Ÿä!Ý™Î‘^ø¶]ÈÇ›ÿøkÄ-¹&ãï°3ð-˜ARè`ù¸ï.Çå@oÐß‘,Â-qsuO°ëÙØ>òÌgê%¤mÓ)xœRKÚ0¾ûWÌ±=€“ ´B{Ù>nå ±3I\ÙVûï;¡T\öÐCdyü=íp"‚bk\‹µí¶…m‹Ñº°]©7]‰±-
"£+­®˜(0ì¶5î6UC¦i­m©´Uk[K[kË.6º¬+ÑÙ*œyˆ	~àDN&†Ãï¼¬F›âØOèÇµ‹ÓU]6º0ÆÀJ7Z+™Nž™ü$Ï¼ÎÙp¸Øe=^(×1õj­«¦j-Tn­Üè÷ð‹:t,8‚K„L€ÐŸÈÙqÏ>tRœÙRê{€k"é‰ìc€N¨™0¹Á‡\œâ8RÊ‹à„,‘Þ—trÈ1`êó^©§í@O»<Ûü‘™¦»ç—¯ÿ\-ÆÝÑ×˜gÅò#r–Ì÷¨£Ï|ö" ZÉÅ¼|7ç$³ëÌ2 Uþ[ƒ>éûô^+uò} v»ne?öÿñXRïæé]8þJõ,7-jNJùIŽyÎô	ø„½‡·ä'K©‡C–í±l×½¨?—ßß/œ6xœ“ÉnÛ0†ï|Š9¶@¥ŠŠ%Ë¸ŠtA.I_`D%6\’Þúô¹F“ƒôÄeæÿç›¡”#tI”+­±••Ô²R•Öz¥*UwÔÕšP«ª[Œä34mßQ£úfµlW7]]¯°[Ê…ìi¨‡î¦é›F.nHÜå)Dø†Ž<9ŒÖ?Ó¼ÖU-7£CcKÜÈ¦],+Y×ŠjYU‚oÉ™"|'“'ø´Kj‚õs?¯›gŠžlâx‘¶U³\°´e©ð{G…²æÐÚp€Á$öl•à0DJéïÝ	Tð9k9ÞŸ`K1™”ç6=cñ#@Úm·Ù_4oXäIå÷—µàBogûÀzÌ8¢ñ)ŠW†×j¾KòD×‰r=AÚ’2ÚÐ0šÌô´7ŠÀ‡Î˜ÀE§9}Bžpá2ÁÌ9š~—)•B|>¢ÛZº ó”à?”e	EñÇúÃm„øhS Åð­ùE@GÞ}!è× s·è™IÇàÎý¼Åq>ÌÏÊÚ‰,Ï…yžÌèi(‚ÖEºý/E<2X3ç?àîw1‡}8ÁÚáqÜ8²}8^Ë6þ|uœzÞ–Æ•Üï?í¿ O'Á#Ò3Ázâ`“v‰®$?áhà>×Saø¸/ÇÒÑøN¬.Ÿ1xœ…’ÛŽÛ †ïyŠ¹ëMma'¶“(ª¢JÕö öbóÆ°“ôé;l·Új•ªWþoàƒq
ˆ ¶Ã ·Û^ò~èe½Á†WÍZ*äBÕ`§”â²It	68¨ÑªÅUÛˆjÛ6²î‡®S»ZQÀ×]·j˜˜ÓÉ8ŠQÃCÐ¶Ç0Â>Òô0>OK‹ï jÚuÇ«ºæPðŽs&½µ:%ðu:Áû9ÊìÏ}gMéÃø\Úò¦m¨´¥Ræ‹…4zqž&L¢Ž)«KïÊ¤½‹<P:J¿`¸å(oÆŽÚNæÊ»7	F
nNx1dÓSÒnÌ3~„IŒKøæÒšø‡Æk‹8÷ñFeÌ:`&#hG ó®ø‰ÁÃYÐú"ÌŒo!zÐEtDð‹¦žÁYü}‡9b> 1›~€‡ˆ$ âÓ&%c®‚PÜ1€üxì
a”e	Eñ¢žßft¨
?EÛý·¹ìªÈôga1ÂÑ
jËþ{ÌcÍëê0Z¡MImÅ¤á5ö'ú‘.uþ*®ð0‡äêÖÞŠëx°hŒpþzÖîâ=|²„>}–Ú–
—¿]~¬þî’;xœ…S]Ó0|÷¯XÝËD¢4mÚr*§‚„à@éî M¼NÌù#ØNKÿ=ë\ïT!$žœÝÌŽgf“ˆ`KªqÙTÍ¶mU¯«
6„õf­pÕ®Z¥–©Äˆ\Ùa»Ä-VM£ëåªV›E×®ºªF¹Åm+[µÝÔª8¥Áø‚–"<X	v?c>ëª^ì{‹Ú”··°hÖ«Mµ¨o¡¨6U%¸kuJà+é4À‡)vìÛ|î)82¥ýyt]Õë²t!ÜÁRÑ}ºw>`è'ËÊ#¤Œ#hWÎ;ºâ}„#ÁÙZò§qô¬TêØù…Lt˜‡sÅm¥(Ç R@34¾¹œGcü‘/"xR™{cð-	¬ŽQ»^h§|°˜´wYHçxY “0ààÙJf)˜“8[Ò©â;Cé7ÚÑp#Î4ƒé+“2”p§—ß8Ÿ R‚WÇAsŒ–X¹˜³È3’N&AðSÊ§nµ#ùB™Žb|=ûÔÆˆg³ÒÏ ÈÎÀÑÑœ^¢cŠÎ»¼1"~xŽgŠÜ˜“É»¸Î¦¯/Ö„y#ÆðÄÇ'{7æ,2Ÿ£.LeYBQdî—{7÷TjyYã˜[,$Yx¥ŠötØkø´m)ô°‹\îûsYZºýÿÿoYÜÓAÓ‘g2þ3²Þ÷Äv»ÿ¡}dÿÿ Óîè=ÜYØÙù±Ô¶”t¸dÿRD©4xœu“Ír¢@…÷<EWÍÒJlþé©dj€@*Fîšî‰Ø4">ý˜™šÝÌÝS÷žÍù®àŒÕÔ²ÜÒs"[ÔÄ”ZVnB$ç,×sË€Š¢kJ-æ¬@Q™NÍr“2h!lèL6™a‚dSÓd¤PÂþî#Ë4s™bËB†Œ4êßrS£¦©ÐL¡ºª†$Ü‹CÃAÄJq Nß‘x:~‰ÇìKü,kÁªGÒœ~ Y74S7-¨ƒh@(ÝÝS)ãÀ/EÐgà©n8k«ñgqè³ÿœmÑ•xøÇóÃ,üX…~b¿¯Sï·/	CÛv\Û^:ËM=K¸©™‡Om~Qy8Ø6ÂÐ>Ì˜-2ôëv3'OlŠkI`I1‚“íõ¼ŽcÎUqÛñÓºÖJåÇ¯&•Ptk’-lÑðS¡Ç&/ûf©ßÒRÅ•	Úb­Oª:FcáeéFM[¦8…iªf‘?Mµh½.|÷EÛÆ#VÔîòù¶‹?±“ œÎœh½åã,möQ«2uýÊí¡(lÓÁ÷¡Íw8ÌlÒ±SF£¹x';¬r\î„»	T	˜‹ËÅÅAþžVÑ¾ëýóºÃlÿqnUêstîãvzA}»¸á½òx	_ýsž!Z•+†dGÛw~¬ÆaÒøn$Ÿ½=™7ó<3dòvm¯›QÙŸç"AÔ¬o7îÎ¨}½Äa=†A´IÈjx–Àóúu˜I:ó’—7&ÅŒ´}UÎÎ=ëø¦k2ÈysÇÃ«#›žpwGF’êË‰=´üØwÐšÔl nì¼Í]•ä%«hîŸÁ((klbäGí+<à‘/xœ•’]oÛ †ïùçr›”Ûø«ª¦µö¤U‹»d‘váP£Ø`Ù¸Yþý°›u©ÔJÝpçyá=àDˆRV«,V"ÈjÊrÊ¥Ì2•Ò<P¨b•%4c&(éù€ÆAa,„¬U*‘fyDObRL!ò e,ÈC)ðÉ5v€ïhº¾¡v„ëÃS¼n–ø‹6Ûµ°Ýgâ„ÅyÎX+šPJ|¶ÓÎáÿŠ¤”fYx!æ±ÃU?øš+{ƒG(ªÛÍjí@ilåÞ7JÐîUÁšò	ný~«¹vNåÑnZý`º¹Š]yóñ\šžKKî8Tè¸\ú·W®°³Ã	öSßÛaæÊªªöÉä’ÜÚÙÐ ÜH(|æùÎHìÑþÌÜikÆKµmq·y–‹_“{ºÇëpõe/ün›Ó¨oÛ”zÖ8ý0Ùé’ÞmËg8z¿á|·'?ñQãåª>]ÁWÙMÞæ=—¶®qI¬Í9qñÆdï›ï1«Ô‚¾ûs?–ðM“3xœu’I³›:„÷ü
Uey+1 1¥’TÀØž°ïNFb¸#a°}¸yõvï]ŸêîM¢¥h©
ÖlfP†„˜è–l L/«ÈÂÈÔ¡©+Rƒ[z kÆ…f˜ø’AU6•± "3#ÚhÅHÓˆJé¿~5%Èä‚+³RE3á˜C4M‘®Bêò%U‘F¨„;Q°¬h)
àt<-Àë§øvù¿Ë› Õ·”Õ¿€¢éH· 4ðUÖeY¿u)mWŠEw?n¬¥MõüÝåby“ó2_?Ï™y~ "/;ßìýa;ûû—€zî¤Žm;SÛŽxIb%œO·ÎÊ(>Pø€­ßÛ6Yø¾=ó½Ê
9-xÃ#¦ÎWûûËÐb	øÛa¼~gjäUµJkzJ-×ýŽìØ~Úßn3†Z7¶ùÚ›ösã±#Û3Â	ªäõKÚ‰çMášGƒåkê‰å!¬R7Û„"/;wvL
-Y'“¨¢ušwv>}z¤Ç¥&}±Iâé[1Ç›¸Û0·Ø¥¾WlÎuaò€–Í&O—­åõe$¤bÄÞc7`Õ09'ä)|8ËÉ3mNNGôtÙ,'ïg^Þy¹(½³Íi:Ì‚úÍÏŸ£®ëšùïÑuH’ãn%S_Q[ËIu(×®©%Þ"ŒEdEŒ%Ùºùø ÅË|o‰ÕçaÑôðžV$ØçI¯áõ§~ÎËE"ý³Ù,pÿ{1iCÛœ‚¦«*ÐÒ{G¹ _FÆAÖ²\‹«+Ô˜ÈHÒíQÓï x×4¬ ApMyƒS
¼ßº
·¥xþüÃç˜xœ•ÍNÃ0„ï~Š½Ñ"¥²cÇI*„@= Bê%O°©×ÕÄŽ\Ô·Ç”
.à8ûóÍLŠD`d[
¬o¬ä²–ny­zƒ¥jQ5Z6Z°#ùXÕ=Y¤{+KÞˆª±¦Ê§¨*-¤R%ÃSB„WòžÒ ÏäÒàîð¥WÃE?8Ÿh\íÂt"ÿ*Ñ–¼†‚kÎYžN.%ú'Dé¶lªö
aþm¢5 1p<Ísˆ	lŽµÅ‰Ž3îž"úÓˆÑ¥3c·ð˜oœ)ü±Øÿln`ñbr}gÏð½Í¶¡‡e~ê†ðþ;º«éb—"¦´¼¸³6Á§Æ‘"cÛ{2E°¶èÏë¿wf˜ü•	“2xœu’I›@…ïüŠ–r´fÜÝtƒ‰f¢aÆŒ7äåFC±ìaÛ¿>žD¹%u{OµHõ¾®@,¦<¦jH…à„p"0Ž€O4&ŒÉ%!hœ1&]Âê)@i„c,TÅ4Ñ…ÊŒŽG…Œe áß~0ÅZ¢ò	'IÄœ0

„¡¢F‘jŒ$ª‚Iaßeçyw2ú6ÊÐKù%žÅ—xËëNÏÑ¹úW˜¢®Êè	+K·Ê»ääÝ´è¥>7p9ÝÞÒÇ‚^üg,½¤mž¢§¯2lÇ] ¥³D×YèÛ`mÿö%$¡ÏÖˆ]7L]_«Y¼ÂWb®OÍ
ærã~êz<u]]ÇÃ½Èµüƒ®ú‹1õ5çl•Ò´¹øúêy‘P,Â~ãíq’Å…rg“<Âµ}³îÖîêj»eù^üæM³N–ê­.xÆ®Á=Qú¥$ûQ|pÀ;ÖæÑÎf¦hx–q&ç¶«8Ûº[+}™ÌDÿ¼ô !&§Ûõ˜™óÓ>+èÍ^GGg3sý†ÝPœV×MÜ»{¯S{¹;¬Òñã¦·õ® KÈºíúº¾ÌÆîÍëfÄõh¼N›£fD¥ö!MÎ‰Z‚P;Ì±+†*¥Ù ûÆ41{	F—m]’kêYzùqiG]å‘1{7Ý£½x|ø`J~77KÊ*¢ÏÜ¦·Nû 	²»OçW	½Æòt,ýÉÌ^XÿNLšC“ºô§jà£‡¶Cß¸¬¡¤9W¨ÌX•0®ÂöŒ$ÕCßQÖy—ßA…uÕƒÞö…]õ(–=xœS]Ú0|÷¯ØG¨uœtªJ)×žÚãNUŸxC,Å(÷ëkœªSOêõÑcÏìÌîÚµˆ	6ã¬(â ˆƒ‚Òã41¢°dÇ,Ž¢ˆìy‹ÚA‚Œ•TÐ¢ ›QVeIÂÂ(.bŠ´L“8 4Ä€Þ¹Ú´ðµFWÃW”n‡p³;Ÿ§õpþ(µC5-Mó‚8Î‚$ÍÒ&4¡”x´‘ÎáÛD’Èk$It!úÐà,×ÒÉ'Ô5×%6>‹%d!
ÒîïÁT ñùb}·\<B%Q	{B]p'<EV=,v­QÊûÜq°®íJ×µH ÞÁÚL>#WÊ”Üy’®e!Š¿ÜÝ!}	÷($‡EuJš_|òsïÕ½¹+¹ã®³ðÝlá‘oœ©KÕ	\ŸÝu^RFy¾YlÆç'pàªCù90ßµ½ÂS!Û•%Z[uJõp”¾ÝâjV=”WÖÉf°µ‘Â­ðÃÛcë3Â¯çEÆ!Ú9éYFEï|hÎ}Uô“çï`ÕrûVÙÙœE¯Ê.Û~ïÛöºa0géøº0_Ð½ÏÑÁ-òÓà}Ÿ[î·£’Û®Ø„üÀƒÄ#ŠIÑÏa%šNXsa”ÝI¸Á˜êðÇ"“\nµ§™ª¨ÿüÈo†Gf–3xœuRÛn›@|ç+Vêc”x¤¶
à+‰ÁŽvòÆ²ËÅ6,,·Ø__§UßÚór4£™#æt’s`QÂ	$£„êš©sSMQl03Å:QšbS¥Ž%¯:@† G:æ*¥:3&$Ä¢0åMSSšpHþê±Á©Êbv—§‰…ÌûÒ5F,!Dõ˜UM4f2%î»\HðÂ‹.Nß&9ø~þOô<UÇ/O‰(¤Ø P‡<BBåÎ–E×q	E·ì)ø^	ÉëËõ9»èélYµE¿Æ™-V>Ø,6`·Zøö>|›ýæ €±uÇ¶×¶·ÎÖcÛAH÷Íy!ù	ƒ&W£m³åjeÏùåœîá€éq”ðZ¾ìqvðÀ
Üø²C:¨FJeRlCMÇ§¨•žkÂ°fc~ƒÁÃ1(Y¯ý£4uµQ/¡ú €x#Nž‹£l6LçÂÒ{O‹ûáíej¢ÈÚJ›%	²·Cvwb0V‹:¿µÝ±AŽÛ4Sìn0¨JOËW&‚õ¦ÙwYN'pR½E‡e(6üzy—ûpÃzŽ&d^e=™ Ÿ~NN¥ª€Ï ;eò°ncîÙ1ÖùY4y+oïåó[€*7>4GÁ<TŒÏÞÝ^¹….$©¯WvO!ÙºáûÞÊÙØ«©ÈbuiøžTo¹Ó$*¶?l×é~]Ÿ£lGÝ¡8N-IÞ(àGmsåOg3úïÆ”5—u¹ É›ž·ø¦kH¥(A[”­¨Û¾å“2nïos7Äíˆ¾E5Ä—‚Qw…¨ZÀzYTÙ½À6—×§_,8‘xœ}»nÄ E{¾búÈ6ãÕj•2u¬|À ÃÅðJû÷q‘T‘ÒÝæ\Ó
ô²çA8/‚UÜÛÁ)£ÄäµQ“µ4d‘÷lÇB©¶Þo¹ÖaÂ	•°ÅàEÏqp4Ž¦7Ž$Ž¶äï˜Uø ˜È}\—óç­•^=Ý WZjÅià…œ3—·-¶Fæ¸å³[J<Á×Z÷ÞLê‡gé±QçÖxÏÝc#Ø0íx?Z†Ba%×ÀÇêòƒÊÎ¬Ý±b©ŒÍñžÈw9„Î>/ÿ¹Ÿš7ö&fÏ— xœ}‘±nÃ Ew¾âmiU%Â66vE;×CÇ
Ã#~ŠàDùûÚQÚJ©Ô	çžz) ‚ä¹6+j­º’s.d®se„­:¡«¦¨Q4•Ì:vR]ä6¦´²6¶àu®¤Éª²ÑE)sQé&—Æ
¦¦Ôû oÊ9ŒðŽäPvýìySÄÁ=de%*ÑäU/<çœi?Ž”hiôZÝšƒv1~ïò%uqÏ3wq­ÚÂ¨âü”€ÜYdÀŸyÁLÜEíÏ®Œ}ôè`®>Ñ°Ü¤ï0ÄtcÉA7Ñ`>ïŽ§g¸ ÄÞOƒtq
È’ç(cþ4^¿ñ‹Iýön õ7\¹e¡…U»7¯~¸ÌêÇúùˆÌ<²×å½A«ˆqÃXK‡fí­]w×í˜¼g_»½­«’xœ…P»nÃ0ÜõÜ<´	$[–£ :vn†ŽT,Ô–ZIN‘~}• :íDâxÇ;²$DÌ†2«´l°’kÜpA»–jÆe+;æ¸ÐÝò®†×e¯3=j%”è¤éµ–’uªwÖÉ–I$j)cLð¬BÀ/èš7„ÝX÷<å%ãÚâXÏ¥z*:x ŒRbâ<ûR0ÁÁÏ1ÀÁŒÉWa‚]Î÷þ§^pÑS>Èªo«ž„óŒ+3ù-Ø!¨Th>\ð˜ý6 ‚…&¤£Çœp5©õÙÄ3¦˜JŠÓ„‰×Ã¨é‹'(Ô¯Ôÿ<H½|8«ÉÛGÈ>ò—É†¦€FPÖÞFœ¯.µÞ}!—TGkBþÐ®¢s+}ÙþõÜúÇ=ù‡hŸÚž3xœuRË²š@ÜóS•¥å…Ñ`R÷¦>xùB½âuÌ  :€Š_M*»äìºûœîEŸF0 	£HCE£\‡T„$Ö˜©˜ê
Ã¨˜h1‡Ò9ìÔ Âb©ŒàÂ³(TCuHbE„Àaˆ9åd 	û»?Ð5ª#	Ö)Ÿ„jª¦Ä”CAb¸¥°mÒJ eM
Ì¶ŽSðž¿À[ô?³SÃŠ·¸* ˆUôô@}EUéÉ–YÓ0¬¬±Û¼Ÿ*ÁÎE÷3y´ÑÎ’sRg	è¿ÆœXÎ¬¬Ø8ÖÂØ~®'¿y	HàV›±iæÈ0|Ów©­f£µéié-¯CáÜƒÚŽcŒênåÉ#]Ç	%$÷Øæp5©Øq>c¯¹¯w"¯MSIu´¸Uoc]Ò.°®{oæÞµÊÃâ;”°æ»j¶QùP¤Ø7Ñl$vÓMéú=nÙ]ê×nŽ÷7Þj»'+¯î-y ²‡Poêµ/5’ËÖî>³©#‘»1f‡dŽ¾º¹vY¢ýn<[.aSÈíNn«mŽô¹/òŒ®N`ñ\ÑL’:n¯lm,vµ]/”d¸LB{G‰6nL:ÑÙr‚äÑ­Š<ýMV(r×ª{ß™öÈ?#Îýasœ¯À}9GklÊ~ìõûÎ;âpÂs³–;fÎ*,·ky1õÙšº½@¿D×úxÓÙ±ÄNý!yœ¥?Mã7&Í™H8·E»´¬nÀ7<Ô U	Êìt«ª¬”y%úðÈÅéZÊÏÿmcÖOXÓ/ª¤&I/ñ;)qÚžò—^Ê/×Õ“+xœ‘ÁnÛ0†ïz
Þ‡®l×vA; è†t‡»Se+±¥À’m¤o³·Ø½/69iNÃ€žDP?~$Ã@(+-Ò*Íòš—X–U®ª’RRËœ×Ze™\IvÂl€;Ä”ki,4)^Þ“À‚×µ Œê¼.ª<çR1CëØ;;/=lúK˜˜>Q4m›M—H×?À]qŸÕi–%|Ië4e1Û›èÓå‘´¨xöQÎ:;õk06N2ÙôÐë)gÐ‘Ë¨•õ—h3öêf˜	Zœx’Â§ýþ+øI˜[#Û«Û¨$yx¾-œhUüóPÓìEÅ-™p†èìYklÔyJ ~¶ÆÃ	C´;Œ> *åíßåžÝl¯	‚ÆLdáõ×ŽÀbOþ„q¦Ù„ÊãŒƒZH¢¯¦‹½Æžä¾Ó"y}l·9ŠåÝi°Ô%nh.š],Š­nèÐM/¶iÚ—’w}ÃÉÄ[<;ûöþ»£7Ø.™íò4Î^ÎÀö¦±¤VNë•8¯?s¹Jn0ïþCótmëš4xœRÁŽÓ0=ã¯˜#šuÒ4Mª²*»H«.* qwìIâÖ±‹ã´êþßÂ1I¬Äe/™hfÞ›÷Æ<"d•âb*c:Kf±Ì…˜¦ñ<çE6ÏK^ÌË</eÎÂ£Pò2URÄY%«XªœË’OyÌ³\y™ÎªBåó,a¢ó°Ñöä¬[X¶ão¤ÛHáqU·B›HºöâY6-x2ÏRxËÎe[¾ž&Å,MçW83öØ.@Ûàê%‚lz»ŸWÃÀ,¬‚Š¤Yêªcßx^ã!4ø¬æ[´³Py×Ž%â¦h±;‰†l­hÙ—ûíöã;8°°ë» ÊÑ{\°W#pöLÏy¹
ÜÆ0™¸>ú0¹L}o‡`H\£;8icˆÕÈÞˆp©D`ÐÖ¡ù'¯F×’“ó¥ÚßËÐ{d§FËZ]7ôˆø×­‚òþ ®z½VôÚ:œGƒq”@w@½‰HZÐá¢ÇãÉd;Q#|øº¾¢¦ðùûG(7v‘DFÌ4›,’´UZ–þÛyÄØ½\À'Ôdð®ï¨y¹/‡¸Ú£·h"çëÛ±gC ÑÁÝÎy£mM×R®Ìà•viwizGM7õàìÓ¯ŸŸ`¹3«!Ô4o8'¶ÕµE5qU5)Ï‹—\ û0Bï’%xœÍNë0…÷~ŠYruÕ(Í_ãªª"îb–hbÓØ¾rœTômxö¼n¡+X°šññùtt&x"¨ªBä)-UË¥à*Ë«’ª2“YYq¬‰
‘Ö$eËþ£'@qÁÎ«W*O«,%¹RK…RÕ²àY½™¤¢%†Sè‡;m÷ÎÁµ9­‰6‰¤¹éê!ÎlaYV9OÓ¢ÎáoU£C _ãEVæ«¼üÂÙ`g³ƒ;‰Ÿ²Œú@N]ümÇ@(Á©hê´ ;™–<c-ô8è 8þH…ž¢ÉË…p’$Ì8L*Öì	cð““§„±b·¤C—Ó(zØìÚãlvä-‰óÝöä¹Ã cäå³óƒ¶]¬Ü6ƒîúë$ÚmÙƒî,É…SjÑ¾¬sœoÈ9âýíœqR’ö+´ÙKñIÞÓ¬iÙ#wƒñááÊÙÃûë@Ø<Ÿ”æ8:g?‘ß	Ç”2xœuRM“š@¼ó+¦*Gk#ÃWj7µ€ˆ¨ ¸(âmf ÷×‡M*·äºû½×—nÖ]4•W0¯'Šœº¬ˆRM„‰ªHãFÔô4Õ)wE©à!OSRÈk
ÄòPRœ
UTUªˆ‚Œáß{I$)…²(I„$<¦b¢)(VxB(’ˆ¬©©‡z–7X‘‚åÀìo8¯åùž|‘÷¢fäò7ÕO È
Tx^4ðÂ€Õª`ŒtÀ)Ø¢OÀkÝtäzy¾g£AŸüç-»f·"/_cÚŽëƒ­³®ãá~gÿÖ9ÀÇÍÄ¦a˜–af°LB'ÖÎ\©ùnîRç>#]¸®±°'hc1ƒ§ôž…vê¹œáJI,Mm_Â¡›mž{S¢¯å•½ú4Õò-¯ƒjîàÀ«ÎB ºKé¾ïãô´gŸÎlð9 ÷Sc§«šõ1†§ý2¼8‘Êµ6ei²ô
ÿ´­›ý2üƒ±…Y^JC\fLH½g]´‰ŠfÖâ1e¬m‹¥BC¹8íÖ¾kƒSú~¸íÛ¦96kA´ÐVNb®íûj²?¨XðÕ™_½9Q7ZGØBq®OŸÇˆF“ ‹´i=õCv$OˆÌµÞíÎŒ‡µ°2È9Pô½£r'gt÷F¤:s¨bý¬™`…pîzÓvg¡8_êƒ«oÄÙr¿9õÑD¶çöÞˆ^xÜŸÌlöïÄ8t×þri{rcà›,É€vMÊ|¬UI¦º•á¸ú^‘À®sTc’k,ªS°#¬{þ¹Uõ–"xœ•ÍNÃ0„ï~Š=#QÙÁq„Ð–!*”®•¯‰ÕÔ®œMQßS@âË;»ßØ³¡©JQ\µ¼jTÞˆ*/QjSf²)ÔYêdeeLeÙNGô\rk¸´’—JŠ,]¹TÂ´FœYU ,¬ÊDÞJ¦GêB„Gô©ƒ{t´A¸Ø|Õ“îX_9OØOÚ°½‘+¡TÆU§\qÎ’ºuDøO™WE‘©oæ÷[<‡¹ï´oÑÀ4™jo FŠÆN`Ù…w˜Ö³X‡½ Xx0)ª³‡4í)†¾O0š4Ç–Æˆ?à}n°Ó{—Â.ÇÝ.DJÏ¤	Á&í	nQB T—Àk“ú_“Ç	Œ1ŸÄ8Àâõi¾^N×Ó§Ùúa±š×õËój>c¬Æ½Ãw4§Í!Å1Û1…XhúaãàÂÄ¿VÂ–îÍ',X{Dÿ¼Kö²pxœ…AOÃ †ïüŠï®k -Ýº,fšèÅÄƒžŒñ ô£ÅQ˜”ÎíßK7Ó‹B>ò>/ùžAó¼V|^1¥k®ËºÐyÑÐœJÎUºZä¯r¬ÈVtj)äœ!SØHJ%CÎé¢¦|:²ä¬5–DŒ±óž…	pk;‚°:¤q{…ƒÏ”ï¯€ñªà95\Ð‚R’^{#¸G;¸ÕÁj#§{½ÁàÐf>´G´,Ëùf´J(q»— :áÚ´›½ˆÐ £àDÃV(Óòˆo¨âw&ú	
)»3)ð‘þõcá ÷[k”9ÇEhÇ>É £³8p÷pßGp8+Öþ@CFÈ“i63¯õL–ÿ«!/§²h\{ùµ”õíëß¢ßš¦!;¹2.&UÇªOž¾¤DŸ3xœuRË’›:ÜóªÊ’š ,ÄãV’
xü Çd0ž›„ÆO¾þz’Ê.9«Ó}N÷¦{ÐœfC:³.©(™/îBdF¨p”˜xŽ#\DŽh®€ˆ½™p<ˆ°@£6cœæ¸„1L	ãåŸ=Æ¶gÐóJ;À æ{Æ6òïjŠ @Ðž1ƒŒÃ©Õ`Ã«á¢±/OàÓwð‘¾ƒ¯•xý±l›/ÀÆ®]Çó1x€.„Æmªaà¬ªa=RðIµšwõÛWy7é?d²“}%ÁÃûD‹Uœ‚§ÕÈãUîŸw‹_¼0õQ…a4Ã,ÊöN»ù.Úx§³óýŠt<…![Çq˜Ä¹ºtøvÓäñ´ºqløÅ «,JýŸ«ZÝžæ<b}mZjújmzîñ%¹EL»:×‡£ƒo××7„¶ÂlÕY%I6]BE%ÇoÓs1Ô!¾ØiŽÜ]+—Âõ±©±³(Î2[»Þ‚/¿½N^¹Aœ”ub uW"ù¢÷¯¦"Õ óÂ[å/§³)§cgI[Ü^üéô¬wËô–ÎiŽŸôXgË­“ü<[wç«{H³®õ_Sût|lBÁ†úú¶ƒ"¶P¶Ë–,U,)3“mo]œfLM2ÕbIíƒr3’•µ~&ËŒí“nIÝHw?ÑR\ö{vD}Ž¯–ïl™ÐW‹ž]8ý»¤Ý¶°¼íg|.ÜþhüÎl‘>þ=1cËµä ëh~y?€Í€Ðmúªé[õÐ=·ÒßkcêÚð‡+W¬ÕÿQÝ@à^ãšh2T­êA¥Àï;èêQVªÿ+ý‘Mxœ”K³¢H…÷üŠÚÍ‚¸m…HÇôÄ "A®î€*°”7(È¯gº{Õ³è\8'Wù¡#¬x&<—‰i’¥x•½• Ä|œ ™ˆr*ÆBÙRH˜&îH5 !^B‰Ï11Æ0Ã	‡1‰cŒ–1Æbc’2ñc¸Ö8Ò²®À1½v4½“üÙ÷?õßý£'_0ùpâ’—B",ä!dÒº,é0ßÏ#(.Nú‘Ï›¼§9øøwTÝ°\à8Z†«§ƒþŸÏ PßšUEQ5EÁªëI&µSß#S¸f|cÎáÃæn®tï´Q
(–O¨hùÝÿé3@÷Âÿ>ñ,·™^Ý ÁÏ ¨+X,6ùVÙ‰#ë˜¯ýãYÆ¶llöjýõ$³Ê¨ÊJ!˜¡:I©Óqêè¡ôJ#ËÅ‡G‰Š‰ iåì‚Ý®·^66I"i›ej™ý<¼ºÖè,¬ ÊÍND.åÆ¾%ÑîR“Vw=Ô››¡ÝÁÞ»úÄîj²ƒüÕÎQ‘ZØ†O‹2@bÃ‹|?èÔ®»:'X¿D°ÍŸsü$A0¯ýÓÅq“LÑÚdå±Þ(™yoVô)/F]õ5LÞ‘Uo^±™ûªƒÖ¦’È–ó
Ñf/©èˆ›ÜÝN=»xVp¥
q¶_-)ÎŸœT˜®ë§Ø»HQåc-‡yÝ‚Îøa“Z;±z?¦¤ß.•^¸z¾½˜³«ã-iÑöòÞ{0€¹áàÛã=ñÑ¡šÒÚ—“šü]ÃG*–nå·I°lÃ¨šª¾ßózò8 hg-œí¶êpö'õŸ
ûÂ'gž›Ø*nÜej»ã-¼…!gx'õ.·&,Êa¶}PJër<!³q4‚c8®-ÜÅ"rêp’ÏûK}>ÚìR²ÏáýâS?B¿tv…œÅÅmÚÁHiNÏqÖ>­MÖÔw‰+3\·g{V¯m«©Y'¦‘ ÎŸíDh×U®éÂhxæÁ_ôÜíFÓkÁG
>-³Ý¤gÜÝøH¨q%š‹´¦¹;cbohÉúb0ÙÏ&W6ÑäSÌÓ•ˆwqà7|k‘X0ß™ÑÝõÿÃTÏ’|<I…ëî+ÈèRYoÚ‹¸‹ZW= ø¾MñÈiÕ3LD@Wàë¯‘WPøÍö›ú†¤ë¿0Ì‘æÁu–}$¯¯¿UÌ?›ùŠE‘5xœuSMo›@½ó+Vê1JÌÇîRR¶±í@ì$®zX`À|cXŒñ¯¯“ª·v.£÷fæI£7Ã[ DELV"&&ÇÔ ¢®b¦ÝR$RÂb¡a-TÉ Â†©DCEV#5ˆM—5)–B,kûu,é
¡.E4%PDJAU!r¬‹@©Àz~¬[´„”‘Ùwá=æŸà!ø?ÒŠCñÖåw$ªèšFt‚îE*ŠÂ-SÎ¡E³”Ïû =VuM1þHn}ðŸ±¤Iº4A÷ŸaÚ3g¶³-òÙÚxÝyö/ š†aZ†ñb¾,¢Íbqµ<s©3¼9+­3F4wÃiÔýÙ}Rl|£:Ö’oZ2(˜aOŸ’?ËV+o~¨c·:ŒwË–W5ˆy`=û‡ñcßÆÁ®ímyigUùÎƒ	(ÝÒršJõÛKrz›mR>!ÞÉ™ä£mª<_,q®fû ®øJ¥j.™Iæpì®.Çmy7Dïê”X7ÅÊ½ÌMõÍiÆ=ë²f¨O³*wOýÞ\šÎÁ†¬/ÇãG)_´&ÛËÙd0·ÞÝ¶¨!Ú*N‘H×…j+›ò†å˜çÄìkz½T1x7Þ0{ƒ<…ü¢…~±&9ŸÜ®P6Ú¢‹•¡,Ã¥f™«8_¯¦ã9³žçwêë„Mí»„#?—î@#oê+ÖÔñ™yÞ~¼/ì'=©jé	<³×ÏÿvLp¡M 5}Q N=t}#Š„â¶.QqÜÂÈŠªIÉºÛÝÂÏõÞ…{kåüBF¡®ošºå(¾dÁnb-Šg¨K¯Ð¡êö!^£8zÞ9_Å‡ßŸñ
,“xœ•ŽÁJ1DïùŠþ’Í¤“€ˆ¢—•Õ›^ÄC’î^Gvg†LÁ¯7øžêQEÕ*3ˆµR<‹p?æ¬3EAÂ€AJ”xìâŒZSå¹AÎ#£Eï)&˜P0f¯‘ödÇd12£J×ö¹TxêÓpœx†›¯ŽÃ¹ãÝ7•¡,—[0m>¸=ì´ÓZu÷2µÆÿ.ª÷—·gÞ=pOÛu]—Ú@ú‡sª§¾H©%Ø¦Þ`f&&hœ¸Áãëá/Ô/ö7TVœ3xœuRÉŽ›@¼ó-åhÝ,´4xÁØÆcÆ[”CC7‹YÚlÆö×‡I”[ònU¯^éIUMÅdÈˆ!„L‘ˆŠŠ*fºŠUdDíwX&Â•T¬h€Š%ŠôêØW)•¡Ì¡˜ˆE1ÈX	ñ_½"ê²,SM’	‚#øjÈT$AÉ§½š‰PR!ci›˜W`É’&f[1xM¿ÀÐÿïIÑ°lðü;èß”±†u,ƒ¨B(ôlž4«€•4óÖ¯¯Ø5{¼G½Aëÿç,ºFu—¯1§–½k\ÛZÞçnú›€ ºÚLÃ0Ç†±5·ú17ÅñÎ\jñEù¸É•ÝÛ¶a±CO©¤ïÍAÇ³è'¥1> -"4YÏ–e­¤7k±·»f°h’‚ŸúcžoÕÚº¥ÖùÚ¡Œ¶„“Åæt¢7xŒ;[ ˆdfBÛƒÑ&ÄÛýª8nüS‡üjYñŒÁÕ`ú¼‡‘;°œÏÒ)Z‹]ç ºµ˜£r[ ‰ƒrÒ.IlŸ×±îÄEáukîÜ½Ë ,é=æ,éÍ=Ffª‡Þý3nÐ+‹Û‡ ÈQ
ægá™íÑ&®¢d7á*;ÏÝ·³®¥Z©‘ËÂi3ö^òí°¿6Ï3é2m’}ºS$–gE<:æVº';÷áM¶Ïz¹ÝKsêkìHk¥éV‡OZÕóæü¨róOÓ7¼]àl$üÉlºžü;1ÁaUÄÀµÍ2P±²eu¾!‚°â9 —6}ðQNê¾1‚ðcÅ£ŸÀa¹Ÿ‘'„R÷í@R„<'MÂöåt‡ÎÐî†Þð®] ƒŸxœÁJ1†ïyŠÜ¥!ÙlâFD\ë*…––´žDJv3Y#Ý¤lWPo=ú6>¾‡kYèEÐ9Ì7ÿÏüL×à„‹Š¢r0!+–2Ç¤‚LªT20²ß)nÐÖ´:,Ub… eul3UJk9å Æ*k¨b© [q•:…Ìcw[üùñúõöŽO¼	ÄúPŸ7Ð”ó¤ŠÍîO2•‰DI|D3JQOßuð/+Wœõm°¢Ûi¬ïðlPac-nbxkìƒ‹é|Øõ¹–dFr¢ÉŠ ÄÈ^ºóOØyØØÂ}çZãÕz1žëÅ\¯èï˜í±..n&ÓËõU>™îA¡óeqz~­óÙè"Ô	9$Ý¶>tî'0BK_°£èÜ¨|>ùëèõÒŽB2xœu’I›@…ïüŠ–r´&ÐÐlÑL4€°ñ
âco`Ì¾Çóëc”[R·÷ôªTÒûú–s Å:ÑbM7tÃP '
SMU‘W¨Æ%S†DE1Š™Pã–—=À†„t•RB#˜‘˜Q‚L,©±Æ°I¤&gªŠþæ9¦ª¤k2ÌL•êœ ÅºÉ$:¡PYS%úkÕ‚Oû+°‡Ž^ÁkößÉS¼§eÏóï´*~¨jŠ)™ÐPÀ‹¤I’ðp‹´ïyViï¼–UËëüþž<ä?kIti^žc/VÞVx«žO‹/_ ˜:›Ú–e;–u´k¶ƒ“èœì~½¡ý¨´ÞdYÌõ<ké»ø´ìDQ´°Ÿ8ƒ|ƒò£ aàÏD“:iJÅÙÅEYæñ¤òy·Ü¨Ý<9Âš£ÓÖG‘š§ÁÜwlqæ¦šä¹ç 6ÒJÿ„‰SÕá!·J-ïIkUE¿“ ;†»®4ã‹|é/%Y£W^V%ÆM¥=’ì@ %á,„÷l×¬\|j²Ä?xžŠ‹ºši·™heh6·¼ìÑ™6y†£ðs-‡ŸùE øì4Š³ô"7'´²>ÖQ¦OÎ¡¹•—{¦WI©ÀŒô¨ŸLcØîš~:0Ú[É» ÷nµÈW}aJãIt»6¾ú[–I€sJAåÞ6â/«°7"ZFÃ8®N¼¬$ß>ß!¢oxgÃã•¯n»ù¿¶¼M8¨‡<-oÞõà›*› n«d×VÜ=„r,ø€¼Mã;xâ„Kö¯!øù‘xœ•ANÃ0E÷>Å\ ‘SÇN\Eˆ‹"±{ÆÄ¤qëõö„PÙÁò?é¿?S23˜Ð:LÛµ]§jvŠ´ÕjÝ°ò†¥]×N7¡	$Þ0s*€lZí½sŽ’ä]cQê`­sµ·LZ7e˜3<pJ\¸çXF†~¼äj8çÛ˜
ï*?O7PkÝêZÝÂJ)ÅB§X
ÿOb”•Fuß‘Žo ‰à™s'øÔb"!¶|ŒüÎ´r§ÜÑtHHón?Fèùªô®F~—€i¹m‹¯¸xÄ}¾°*ÿ°ëúS|IKyá,øósâ@Àá—4xœu’Is›@…ïüŠ©ÊÑ%³Ã’²S‚$„6°07˜	1ˆE ýúÈvå–ôí½×ý]^w¥ I¢¤‹	TcUÅ)RJq)„H&²€‘*«	M±ÊÕqC«eˆq,XD˜4D¤QY§_ UÀX‘þîÇ	‘tKi¬#‚‘5I–$*@MOå\G¦PB\Üw9k€K‹.fßâ¼œ>Åsò)ÞŠª£å3fç_@D
ÔIA"˜Š p÷\tmÀ¬èæ}^*ÖÐº¼½e@Ÿüç,«³¶ÈÀäsL{æ¬Áv¶ïÎlmìßþò9À¡5±i¦ežé-ÈZpUË7]5?Ê›+lœÁ0ÈÜqŒß—QOx¸8S
Cÿ^èË€É®N¤vuzætè½ñmí~ªnZ¾ƒÊÓ¡cÖÛ˜žSÿNËæÕnËÃõ±•¬h¼…Øx—%Ñ]^³ø¾èôÕÉ_yvxOOæ½žwnàµÁ’Þoj†Ç6£›yf÷÷¸‡äp­{ÏºŒ4ä<*fccFn´šnšd]¤õýí°ìMCÔ­upE¸$ËÛ6g®´™«B±]90j*|Áy7«ù|ìÍ¦¾<-fÛ­<®Çé¥‘?„7«¬ñÖA“Ë Ý›ÕeI-e~xÈ"YA4ú×rqU»K^[<Ü‰¡,ÇþT$cg+Ö±…OÇ‹›y[˜/.,­6ÞbjGÎé•¯×Që¸ïÎìõï7Æ­h“QP÷e	zéiÛH’AÚ°38ÕÀXqæSÖLÄgÇ%«I_OÊ8¡eËqÕõL‚/ô5ÈXÇÀw†ÇC±¾C^t´­cLÿ ä“xœŽ±n„0D{ÅöÈÆãÓ)J{Å¥É¬Í,aqt”"I¥ÞŒ^Y‰ QŽ¼m´­Bc¼¾×¼#”\È+F¢n8[p¥T@I¥{®z½QjðÍÀ‰Ð:o…ADN]§[‚áV¦¼Â=¤#g¸E¸Æ¯X‡X´¿Ã\»_A¨NjÑJÞÁ7œ³³¡úçœ¥=ÒÜL˜`[`Ì%ÃŒ–æáÔÚ
S(ôXÐcïù€ƒÀô„;A(ß¦',+U?8Xòy%(ý>®ûc¢¡ÊÞWöyù‹:û]È|¸•4xœu’K“š@…÷üŠ®ÊÒš¨šIíTTÄSY4Ý"m>øõÑ¤*«äîÎ¹¯ÅùÁ€2±p¨ª E4Jhed‚US%ÖTK%¦Ä±`eL°®R]‘5CÑXlè”AÆQ,“t™Ädèìï|kªÐ0J¢˜ŠI 2¤Ï—Ä*4	U4	·Í¡ÀcYs ¨­É¼åOñ?ÅGV6ìôJªâ;Pt¨š–¡È&x‘¡,K·Èš†	àdÍ´Á[Y	ÆO÷ôq ÿ³–ò´ÎRðò,4vÜœ l\ga‡Ûõø·/	\kDm£¡m¯ÐjFwy;\#Ï8µåEîÕ¶éÔuíY&&»éLíßIÄÝü~ëš´
¡b=05˜ìj¾º³|­7šÚ³Y9ÎGæyi¯`¾†Ô,?õÌùMÌûùÖÚzûpâM%P+¹ŠHjt+„SÔø;÷õ#¥6Ò¯ˆVîçñjí®±D“µNæþ¦JÎCät¾VƒO<¹änwò>‚Üw´®‹ëû—Øä6ßÛÆn•÷:s*+ïRÜ Šíëwo©2¾‘Àq:<óðî¢:êk±ÙçVëÍí Í™YÈt8ºm¼¨ÏU˜}HªOQŽ–Bì(ª«ÒV¸ùán*žFæí ËÇK½®{©·±ºÁ.›¦Q.¶¨—xÉ9
q•‡û°8iºC¬¬7Áµý.÷ÑÒK¤?™£'&Í™Hàíé;·¬nÀ·ß UŽ,I»ãSÆÊ~ë7’ôcÍÙËÐw›RP·œW¢ÉÉÍÂPeÐT`7~jÓ¬Oâ
\Òú«x—xœ•ŽMŠ1F÷9E]À¦’NÒi†œÍˆºt!³¨$•±Åþ¡MãõGp÷xðñ½<3ƒRÈZÙuÒèL”¦‘T”ôž0öÔMÆ‰‰f2¸–Ñú`É¶Ž9¨&QTµ¡®½Ñ¬Ñ$¥´ %_Æ6œl;àãZ°ºüzÄP…±ÿil]
´r°Bƒ(Ší»œùí¡8ï;^­·¿ð#Ü—iç©4öMG8ý¬aº-ÿÝ ¯£ž†xO'jNð4xœu’Ks›0…÷ü
Ít™qšI;	¶ãØ;	ÄÃåaË<ýëë´Ó]{wç;÷ÞÍ9­à
ÂHSfÒÅ˜ÑT§©¡`ƒiHÑœ(0¡FªIg*xÝÄSlP(ËœqÍÐ¨ÃŒ)7eˆÃ(5d1®üÝg	ÕuHåD6–UÈ'*3¸š¤˜i±Š)Œ¡%Úµy#€Ç‹6VwsðôóK<²/ñ\Ô-/ã¦ú¤C2F`&ë²,ÝiU´-`Y´«Ž§ºü\NÏÙýAÇþs–³k‘Ù×XöÒñA°À»³ôÉÇ.´s	H`¸Z±EˆõBÈ›õæ&þ$¯^BË3ò“¶í¡pB’•ã7µ­S7„Aþžú—‚ÑÕÆÓO–¬„o[¢êÚ‰ØZéÔu¡Ž¤œtÁR‚5ôH¹Iƒm«yë~ÒÊƒˆŽ‘gvGž5@VGaönÿ,cö°‡ã )“ª„‚x‡ye3¯8zˆöÎêÓÕÓ$!Ö­¶ßâ•;WŽÛñòa;5Þåôy»Eo»Ç`‰u<÷k¼Rvî¢^l¿šúš=ë°1Nì:ªm$°YXeÙ¨ýâ6Fñ8FV‰Åþø~Ñoë*~=­·ð·ít]ÍÙpssãó6Ò•}Ý/ýKÀƒ×ðâ\Â!%å¾a‘‘«vë…Žì*±1Øç(;¯+·¶HžOç,cß<šB,ü¹ü]ß×C ýÉÌö_ÿ˜´á"ãàÜ•%üÒñk¾!Õ©h*PõÐ4E5O1Sñ¼;'´å³º¯ø,ibIÚýàîƒ6ç ¢E¾\pw»ê^kÚMýjá—xœ•1OÃ0…gü+nc€VNìÄIE¬˜ÃÙ>'Vc»Jœþ=º±Àöôtß{÷òLFÖ›Òò‚k£ªBU­.IRQšRj¡±2º¨­dgœ)fR“´µä\4Î5¦Â–´\-¢J9Þ*Ã5i†g¯)Á1@¾åÞ‡½¥ËÓÐO{“BEU‹¦­y-á·œ³Í>gú.T{Ã™Mæ h-Ð{¦¸øá<­ƒË=|ec´àÒ03vt°.[Óc^ 'Èx"À_è#ä‘"øË˜ÖÉ‚&˜ü‰ì.^A÷sÖCwkØÔö¨7ÔÃk‡ó°ôoŒ½ø!’Ý%çvúãð—yìjˆ†Ÿxœ•OOÃ0Åïù¾Ãª´KÿdB‰Ó›@ÜÝÄiKR%ißž2à7Ë~?ûùåHEÏ5×BwUÍ…âØ·ØUªÅFb)jHÔ£bFòŒTRHÙlÍ–7'ÝšÒ 6²êJUi=1œó"¬?‡ {7îRÖš–»Á¡=*¸[(ëfÛÉZv[¸â’s¶vÍ™þƒ7¥ß8ÓAíÀá+¦¤¢²|ÈüéÌêëá~OŒÃÎ
=Œ¸äÑ&˜b"ºýËœò:>ÂB_8¤"tÍú9žRø%0ØG«RðtÙ‰Y0O3¥õÌê,¨Ù}&º>â×ù@Ì/ŽŠü–ÆíàIo‚1›þ}÷—Ø4S—¬•2xœu’I›@…ïüŠ–r´ÓÐ,-ÍDC›ÅÆ`Æ7–nÀÃfÛðëãIå’Ôé½Oõêòªk(¡JÆ’31pˆ1“Š$Ë*äáSª¢"æê ¡eŽ0ÂXFÂD^x+² fjŒ° ÂHˆ)
éŸ}Aˆ˜©bH)R‚ ò!F¢
Š€‘!Š©,Ê¢ pAß¥UV4ëR@ú6JÁËç—ù~™·¬ìhþ=ªŠ J²¨b…0åežçž´ÈºŽ6ÀÈ:³ÁKY5´Î‡·äy ÿKê¤Í0ý²0¬ð¼[ÆFÛv‹_œ¸·$"šFæš¶%[;ÞÃd¾#+%½ ÷&6Ö]ÓbÓ²´¹DU_‹JãpþK{Ø»dÍï9< åàÌqæãd<Oà¦<,Ž¦óò›GL±tÏ³®LX­é}ÛúÆA¸–ƒL‡*G½Ø/HâÇñ¤^Ê›)iYçˆ˜Ÿ“Ár÷(Ô£<›»^nçKY÷íl²”³¤ÇM24î¨.Ú¤NyOjÓ-KÅ\?ŽímíoC7µ±²3óî
I¸:˜pÔªúã¢âp,>£Û»9ÞÓl¸Ú@«,Ns}²ò/OmÉfp•íô‡§‹—^ë‚6c§k{§‚X¥jƒ¹[î`¥ozÊY±õXl‹ÈoˆJI÷XÄmzgV^ý«aCÏjênœS¸­cHé…LÚ$¥ƒ¡¾ràU‰|ƒûÝÙb£ÿ»1Î¡MBAÝç9hèµ§m¾I‚XS ÈÊ{UeÅŒUÍ4/oÅ,ÊiPNûšã–Ïü‹@_ÿ‹Âù5ž'xœQKnÛ0ÜóY%­#H¤õ3ÃpEZd“ž€"Ÿ$Ú)OvÛô,½X)'Ú]VÌ¼™!É#BUä¼P5çëJ­[^ˆFå˜Wœ§ëªÅšc™‰²‚MÒ£%À
Ë’g5¯ó¦¬e¦•BðºRB×z]«¢)“3õÎÃ³±çài„íx;&fL4ž÷Ý(Í(7î ËQd¼È×ð9­Ó”Et4DøqyTõ»œö<n@É@`tLmè
ü¬höäàþìŒ†O GEÃ•±§.s@¸£qºƒ˜=¸©7¶ƒÁœ¢®7aµ”´€?§(Œ˜ŒÇ9ä<†ˆ!LÏÆÍ&gìRDZÚý³‡hu1ÔÿÇgïüà0Ó
Œ½ÙB;[EÆÙÕ_³¥Å[A7SÂØµï¸,<ÌAõ°=5ËÜŸÐ[ç»Ýó,ÉÈ ‡£óÃd;6ûÁt=ÅGKŒÛ±¦³¨]Û>6×ÍG¾€½Äôx‰¢EðMÆ‹‡¯Î¾þþ5à+l7d¿ŒÎÙ7ÉeoÕ$xœAnä E÷œ¢ö“XØmÜjµZÉ"JFÙ$' S¶«cCØ­ômæ,¹X°g"Í2RÁ/ÿSÑ#BÞä¥•h¥Ô2/ø®ÜíPÕuÅ;^˜š—Z—MU	ö®<ÚÚˆZ¨ªÖ¹6]ÙhÙˆBÃ¥ì*™%MZ­`jŽƒóðLöâ<Np˜¶mFSfp9õ“¢1kÝt„¼ªwuž‹¢†_¼áœ%u¢ñç¸lŠB~ãl´Ë´ãÀºïžRn—-ÄAù(l½ž´Œ=v ìªÏÓúÇÿ› ?6hèo€"œçÁ"š ÑAÜeí³@qV‘œ½ÙX•l]JŒÿ¬©€¬¡VEÛƒ®®ûN´9³EyRzÄŒ±ûv¿‘â wsHôáM¯õô†Þâ˜9ß·;ÏÉU¸;;?’íÓœôi¤~ˆi¹#{¥Þ¢¹u]w«?ö?™({Á…ð’ xRéàáÁÙëçŸ¯p8oÊi-½³‘/lVÃ‘ xœÁNÃ0†ïy
AhU².Y;MÓˆpGnã¶†6™Òl¼ÏÂ‹‘ŽvúëÿìßŽÐ˜É9æ…²zY•dT£
­6·¦Êe]º‘dÅ¹:×ËBêUQjm›¹•DXÕM¥JD”dÌr¡P	ÜÇÎxdwôîX§gÆCfé°mä>«ý°¥Mn”2FÁ•,¥©:pŒt>^”ó¹1¸èÝaXA Á(‰Ý;‹)û±ãHãkv0™^Ùq¼¸â¥#°4Öw‘½ƒ&EŸ³É ã¾š"¡³ÐáøoÏLˆ›zÄ±ƒëýXw°~¯&Ý¾SpÔg>´›“ç#§>×o>ôìÚ´[µí¹íbš˜±ßˆgnÙ™ošYõ±:ç
â‰LÇMÀ=¦O€[ï>¿¿zú„õÛ©²¤õîù9Ò«ž3xœuRÉ’›0¼óªÊÑå±0«R3© ÆxÅ6Þç&		0«;_{R¹%ïÖÝïõ¡û5‚1 É*Vf²F™èˆ©ufj\Õ‰ÂYÈ	”©B¥
V4@S4Ã„š‰eiZÈ‡!dÊ‰Œ0Æéº¡ÊXþ»Cåpê*Tcª©˜B•2ÖbÜDDÅn›¸`Î’&v[Ó¼§/ðF^àgR4,{£eþÈšþtÑuÍ =ˆ ”žlž4ÀKšIKÀ{Q
VeŸÑÓ %ÿ9‹ª¨N"ÐízS¬½5ØN=ßÚí÷‹—€ºÚ¦¶eÙŽemìÍ,ôéÍv{nÄuuSÄ´³¬p2ZÎðRä…¸ìŽû¹Gw“œÒ¥$0†þ¾âveûWå!”+	éÞ­öCµ>ž‹ÉÎ»T1õ+.¼Áa ›±r¯;ÏY¯Ý|Æk‡ðŽ'WVF¥6ó±3Z‘¦Z½à¸^­ýÅÖÌ\Ø-ÏçÜíÂ‰ïEÝ~•Ç›`u8Ï–'ÿ˜J`[¹I8Âv±tS«<£ƒ^M“®7œ;¿nóv¶’ ¤\ÍoE¤=Sí‘`s‡nùÌ!ÊÙbïM¯ãe‡f³¾¯ø:Kî¨mIö9C‡Ì	ÛÔùôZöé¶íâTKëé¬ÎŒû˜I 8nCÑ•jWù<óÛlà¤·&lÓ;ßÈµCY3JäU="ã’@R£Û}—«õ¸Ÿ~HàÃ6B.ýéÌõGÿnLZ21PµY»¶¬nÀ7m¨ .ÊäIÑ•e’x)úòÐ˜Ñ´O²Tˆç×6}Ž“L’žjŽ›ïàKöbk+Ø—Ú
ö,Í”xœ•AKÄ0…ïùeKÒ6i»ˆ¨·EY=xL'm°I¤Mwñß[ñ¬·ÇÇû˜yyf­j¬Yi[)k:*©‘†[íjc+Ç½³RQEâgŽt¥›VêUÛiÝ»²—ÌhÉYÕ!¢dcšZ¡¸æ1Íðìã9%8¸	—XøPô|ºú© nAiS5²ëÚ®e'¥Øhð9ó?t%ëÚüèÂ¥9`ÞLððôx<¾ÜßÀmÎ:³>Qž øaÌ`ùÂ¹paÈ#fX—íü€'„x
ü”bžÓ4m|ûÀ‹˜z†óèi¿l=qFÊ¿…BˆÃ²¬¼‡+]*ñê‡Èý.9·³_û¿lßÝ‡˜4xœu’K³¢H„÷üŠŠè¥Ñ}K°
ˆèîèB¹¶\ñmïŠªÃKZ€Š¿~¼31»™Üåçä&³S ˆ˜¦ÎcšPË2‰	FB0 !-N¹nN¤ Ú…+¨;DÇ‰ÜXŒcB'7qb'BšT‚-ÀãÄ°-ø÷Þ²ÓXPN_„n&\êclq[FL&0Á$Ñõ‰Æû.kZ@ÞeÈé[‘¡ïçOó-þ4¿òºƒò›hªŸhL¨nã	±l4ÂÆÚ‹Vy×B^ÞÍû}¯—rø•¾úøÞÒKÚæ)úú)Çõü­¼Úø^È¶»µû7×†î­#Æœ)c‘rÁÒpºvfVL>n†òïŒÉ¹ï³YžX¡(/œàòÈRçí0ðŒjè­	¢Ã=›™S›DõvëœŽcf6Åó&ÎùªØû½6#QŒ\§F2ºYP4/÷ñÙ–#0íQa‡cO—é¨uwRø£ï®@ÝEÈ=Î…šgÓjkñ!)÷<ÜWB<o÷BÏüi-IÝÏßËÝÃÕiçGzòIM›ívDùÜµ†’=›÷à	ç•ÜÜd•iÈ9ªN–“]Ò¾rË0’úq¿©kÿ„WïVèž‚ç¦¦{ùÜGfº_:ÇýøG×¥Ûsoíß4ÔÏ®ó ÄŽœ½ûc»Vwâ²Í¾³ÎkÕœÜã+…/>öS^×p.¶åuš¿^þÐÐ]õXiÿtæ†³ÿnL[‚J]ú²D
®=´úBtŒÕT¨€$Q0ð2‡ú­âík7šÆ¤D7PqÓüÂã¼Ì»uJ¡C³’¾]ÞÔŸ,¯.ª¹’÷é_”Üöšxœ•ŒMJ1÷9Å»€CÒù™~ ¢àFqë’¼/cdºÓÄôˆ··=‚»¢ jt€³±³u‘]òs¸ÍÎø)É”u]€ÚbÇ:Èú0!ikÙÙØÎžaB"ÐÁ/s‰æ¬â>>Z§W”Bo+Ýxºøø-ù”Ûò@æ¸ÍîlÓöZ«Ã.uü;TO"tCOí”ãS½ÖñC£Ñƒžß_¨ìkµ­®.[o7 íõ×!Q4ž4xœuRËr›@¼ó[•£ËÑ¢eY‘²Sæ%„e=,qÛ]–‡xjÉÒ×'•[2§é™ž>ôt/… (1â”ó$ž&(™%˜-×`ŒãxF§:×RZ*EÝuLS5¦ŽKCšèª«„`”8¥±`1fì/ß`†@X‹1‡Ogj|ÊF}cŠˆÎ)ÁXUU®Ð¡Ï	–"ï3`ÏÀCñ¾³/ð”×½(¿ó¦ú	T¬«‚¦à*ã´Êû^Hàåýb`à¡n¤hËëS:
ì?gi›vy
î¿Êr=ÿ¼{ï`í{oæfº¿ç
PÀ¥³¸eš–mš+kõÏ›´°CkI²£œ‘ô/¦/|ß´î^·êÂ>ýâÈ’ã¤z©cL°kVu¥áˆ-—k]ì\©»åé
õö¦s©Í³Åìðé§õþz.jN–¼„EÄµ ¹†
XoBN]äM¶2BWÓNüE_Ý7¸#·äCo7Z8g¶zG‡Èp‡å°?ïú[0ïð¹žR]ÍöÝÊ=´/Ñ)ÔøÆqjáÀú¹(#'ŠröÚn‰c˜f²ªL¯uÑ©R{j7ËÉ­Q€…ƒ;£ö0òI‘WçYsW­ÃìTºŸB‹ÒÝn{ûÔqžÕ½Ü±œæ§ºÍ‚øƒ,ls=¹L@C{¾gÙ$ú(Â£m³ãû2>9ºî_©—]ÊLÈhwvÞmP°´Ù’°¼,ø¨€Çð–ÊŸŸ¹oÎ¿?¦¼
™
Ðe	¤8¢ëÁ7¬È¦E6Æª“Švcd¥>Wâ¾•cÀ~€uÖ\À™–ƒ É˜Æ¤u×6²kï8´§À*^ Gt\æm?rº¡ýbü:	p•#xœ•QËnƒ0¼û+öØ@ƒ¨ªª6R[õq!êÝàu±Bld–Dùû¢(×ô8ã™ñh–<"¤ªL“´ÈK^J•¡’B6zUyºÊŠ„¼Ye‰j*6H– äB«JT…hó¹TuÉ•7²¨ž´i[(&'êœ‡´©ƒ74´CxØqÜ-øÉXÂ>nÝþÒ\¤"ÏrÁ!JD’°Àîþ?¤(óK³‡=Fƒš5Ô;ÂAö‚Ý¶^Úqpž ~ý„$	Ï½kw°Á±õf  §aV0¶íð&ƒA‚ÅãYrå·§A*…
Œeß?_aû8‹¡>°¢.¸ÕÕC³g\lä‚ —Ü‹é.€úžiƒ½§—÷wîdô	^œ%ïú>¨æª#ù©¥ÉcÌXm~-ªÈi5§õí³?;”»z•5xœu’Ër›@E÷|EWe©²Œf€Tœ2	¡’Ñ[©,f°"0Y«|M>,_œTvIoºîíÇæYs”hDÕWõ	Ó¢4N“”°‹¾dZfÌ¸RÑš—LD³ˆE8!	Ž9¢Œra¢ÞÂ15¬©‰–ìï>ÂDç±Š5B$¶‰-®Â0Œ«i˜™‚j†B[™kXð\fà´M’Á§—wq¿‹û¼”¼¸MÎ§Ï a¢Ø dÕRU¥wO¹”¼/—³6†Oå¹æUñvŸöÚø?gi•6y
7ïåL<?€·­ïönN~û
(Ð5NâØ¶3¶íçaÎ¦g‘ŽCgadÏ£õ+ªýÎ¶ÙÌ÷í)	<aj¯Û4“E5À¡zZ<)pÚ¶¹N·£ì8Zoç›Dìºudrzyê.8ÏÓdo^2[ê¥D\Þ¾"”¼»BuÝ¼L±D(Ò—×2õßÜÇÇ§üÐÉâI¤hiþÑžê­¾“]ÜZ›ýKiÏ¯x2x­âj ÀÖ4¸8wÞ+Æùº\éÃA‘éòÅÔ†e¦êë€5ËÓâÚ\Ý‰m¬‹šÁæÐ®—]w£@4Î0Ú"î	÷‹}¤üEµÜìÒ’QÏmr²³qx‰CÀ\|9."ßJQ€Wõ*Á
Ìâ83‡úÌîüÐGôP'ðY¨*;î.]Ô¹Õuu™™áxX]|ô¥ÙTÝA8ÍwiW´ÊŸÌ&ûïÄ”¯SU[Póo-o$|ÀQŸOðÌ…¨ù-r^O´é¹Q”/ÁaÅoÆKÿ+Dîø#ØŒAÓVÕ¹– z.{hâ\£’e¬æMÃÈKð¸wïƒÛO~~ÿñ¡Zžxœ•ŽAJ1E÷}ŠºÀéÎ¤:eddt§.d•T[œt“¤ñúÆ#¸ú÷ùðkÂÕ EAGëˆ|-F8˜Ø2jë¬géVÊ’*X‘:Ä`¼hb’huSÆÓè¼V¡#w´ÕÏ%Ã“ÄçYÜ~5Ü7¼ÿá°Ëõzƒ½±ì”Qªkö:×*ÿv/oÏ²;žOxŸŽ7ðÀe[×%WˆíÀÏ˜*1g)E
Ì	¥Âôz‚é¯‰[
u^Ré~HWs‘5xœu’Ûn£0†ïy
K{mÁ–ÚU!¡ärns‡Á¦„c°!Mž~ÉV{·;ÒH3£f.þO6ŒnGÈ†ØÂ†ÔF1³BDLRÈ¡‰	1údåJ6¬”@g:Š¹NM#´IÄÌˆXf¯Ñ#Ä1áÌ´ÁŒëñ_½†pÄ‹ÇÐFE¶Å`ÌÂFÔ´™A„¦Æ!âJØÊÏª3–ÊOà¶"úÏÙ£y¢æ5-%ËŸ¢ªø 6¡ah0Ðˆ¦)ý´H¥dðS9n)x.«†Õùí5é´ô?kIˆ4?ázþd	? Û‰¿tvû÷g® \…¹Žãgí®§±WØt¸qgÖçÙXu¨™\'O&Ž¿gTŽƒ‘ŸÃÚPyéÝß.W€5<u§B˜#“dœõÎI
×ˆQ%ìÙù“û²í.W¯³'ÇÉ’.°ëe×}êÓ©Æíx¬ Še1wÓ6zßyÇfå â‡]r˜-¿Z½ü”‹Au
ŽZ[Çf¶þÐ›»‘Œ¿Ž{/8)`K˜­Æ^±W¼1¤_n˜mN¾ô»ËÑSï«nÙYÝïsKõôdtmGR%b¿/o©(`Ž‘»§ÍTuî;8‹Þ–éñCnÐ:×F—»¼YGãV£ÍÊ©¾A2Áƒ`?[¹«?ÌÐžYU’©çrË­¼Å†:Ï:5qocFi¾n®gw=ï2"\xSä¼ëßÒšŸë¼LH¥)ßžyËÑ¿S¬I¨Û<»´LHðCxS€vaŠž)¦¡è©Q”M¯è‰¢­ëª‘€÷$VyÜ•DË$yJ¿+ž~â!feœ†eÉ„ ©ý“ßzw	¬•xœ•PÍJÄ0¾ç)æ¨BKÓ´M»ˆ¨,¾€èµLÒÉn MJ’÷í¢ˆ7=|ßßL
D`z-zÞÊ–8ª^L$QÝ€ŠÞµÃÐä¡J¶b — JkÙv¢¢”œxC²n¥xÕ˜¶îzQ“b¸¥³ðˆ!Á+:xˆQŸ	nÕŽ?ñ=ê¥ôát¼í¸xÝH(*YULûe±)Ñ?ôMÅ³Á—ž¹}¡BÏö OöÈM£ÁÆ¸QdìHzÎgÁœ³æoì,ª™"`„qœé¦„—Hrüüš[åÝ˜ü¨×íê:—u;…h½³92ˆ`òí¿m­KtÊ¼ŽœO°eÏ_FšŸpo ]V‚-û1•Œ=Û“£©ðÆêrøÓkØ;²žà˜6xœ’OoÔ0Åïþ£žàÐlþn²«RZ¤rÙ•àˆlgœŒšØ+“eûéqvôÜÆÑÌï½—™à¡.Ëua²Rµº©«M¥«Ö2Ç4­äZUYU7ÕF‹ƒôh¬ë¢Ì‹f“K“ÕyQ´MkT^¨\¶]—r“ÕFUy#äzçáô¾J÷ÌºG¸Q³´ò\ßI=&Îw·Uë¬hÊ*Ïà:­ÓTh7ŽþÃ|™fi“>Ï;x­ÚÂ98°ûôájˆäƒ¤h pâ…º”†=“³'y	Ò¶ Ð,ƒ!ª¢mIZ‹Ì`uŽR{ÇÂc˜¼	³&„ã‚Œ†Éjç=ê átÀîgGm¤Éø¡§’#/øßnAM4ÄFÒ Q“.y¶	ÀÔF3Æ,Tg.œG÷‚ø‚¦ rÜ‘ãÆXôKæt²X¹L¾%^„2“Õ!œ±"vÐ‡pàíjÅnòñ–¿RS÷DÃ WÜ»ã÷øJtGo©}“­Ëªâ½ÞÂzì—0ûGçŸz²üH7#ÿyžîØÒ›aÁÆýÜ>ÏÙ£sðyŒÍç2¡1iq¾ëÆˆ»ôíðà|ÀöZþOè#ý@Þ®›2Ý`YÖ*‡WW;ÝŒÀÓcóä¦eYøêµØSg£ž3æ¬ù7×)~Øæ'¡“%xœ•‘½Nì0…{?Åˆ
Š]%v¯W D?±Ç‰ÅÆŽlïòóôx—Kq‹Kw<ãsæMŽD {ÞUB6m\´­°R¼¶¨•–ˆªn¤Õ¨ØŒ‘|N\Ëû®ÁÒÔi%»¦U\Û*KTª%ËÃ}C„kŒžÐÃUJz$8ïèqÑ—¨§uˆÃÔmWµ©”„U%«Šé0M.gú…¿©ª¨¿üÌ&ZéÛÂ¥"AÚÏs(Y¶@…)ÑƒÖp ˜\ð‰±û¥öçÁ.}À‡ümvÞe‡;÷îü X:cñä±àÖÅ”ÙDS_ª% aïKXq•¿½×…ê%º\¨ÂD ƒ9òéñõ=Œý›\‚ø¹“Y3vã^)mAT5ñNhÑÐNO~®ÿâó‚·Œ9†”óçÒ—¾{ºµ0Ç0SÌŽÒÉ{tƒ'³
Ö®ú·í‚} æêÆ£5xœuRÛŽ¢@}ç+:ÙGwF.M›™Í€(
*ã8úFC7"ÍÅùúÅIöm·*9©ªÔ©J¥«	§TB$‡ŠL±HÉˆKHŽED2ÕB"k1W…5) |HD*†¢ª"dI1ÁriÌPƒj4rbªýí'…2CE‹iŒE$ˆ(æ1‘!ä	TÕhÜÕÑ¹°eç².IÙmÁKöHžñ#yKFòç¨¼þ‚ŒAAŠà‰G<ÏÕkÊ©•²e‹ÁKQÖ¤ÊïoÉ8 Åÿ¡%UÒ¤	xz˜1·ll¬lËÓß÷»ùwè#2tÝ˜éúÖØ:±V³ÙÎp•óúTÛ½®ÇKÛÖç»^]Þ5ÙmuÀhç»iÐ8¦ËöÆ1;,û¯Ý4²6Ç›XLiÜUvÿØ¬qœ‡‰²uèçÎ¹(Ë†uš¸”ÊÁ½ù(!žf“ÖÏëÎLÍá-XÅaÞ•GŸ‘I´Õ)»›pQÌ†cÆw·Ó}©àí ®ºÁBS§¾tØ~{§ï‰ŸäSY|6•J-8ÝëM“8Úâ»š8Á$ðaïÛ‡+¿÷öi³À]9€&Sdoc¾¼£…_Ïyº/WÈ®n—`Òu²îµÎÛ_¬OÞóf`˜Kÿ²ÐSÉß!mÏ«ëYÂ¦ØóÌ.¹}rÎR«©W4VÃíå]Ê
„Äƒj6Âd5;è¬½9§Îú:B™}ÿÊWò¡ŽÇ|ÿfî™ÿþ·&uB@Õæ9¨É­%?dA´.¯ ;²ÊÈô6£d8®è®ä©ªGýa'ð=@G-zk„g¼ÍÁúù@ýæwlê ,bàù‡ Ð”äqó%·mŸxœ•Ž]JA„ßç} ³ô,;Ä@@QÜó<ÓÝÃ.ÉNÂ:z~7ÑøRTÅGÕYr+ØvÉZÃÚR0œaÀ.9O)øä8±Òêg)¼Kˆl}òiG>’¤µ51­ÉAE¿êpžáUJ‘:À³Œõ(°>þæf¸åÇ±T95tž@‹­³.t°B‹¨–vk•B4:<þATùždu™—Í=DfxÙïzÈË³þãM@7ôï‡§»«n®º½ùíbaèw‡=äQNü©~ ½i\Î”5xœuSÉŽ£0½ó–æ¥Ã0HÝ£†¬d!Yo¶1„06$ýõ“Ìhn3u{¯•ê½œR@5M§¶eY¶‰Í÷MÇ2uhul:†aÇ*Ô•qÊ°!VÕÈ²±!“hØˆPìÄše"lÚªnÆuú[¯"ì`?óÈ2"ƒD&ŒH„‘Š±¡Ûª­QÃ„Iq-8˜ÓT\'krï·xÃ/ð™2A³7Rä?fZÏ­UG×AWµTUy²y*å`’Š©Äàœ–Ùã3yø?mI™Ôiº¯ðF? ëÉìüIà†ûíè7¯ ´µG<×õ®»ñ6³hÐ`ëÍáõ«¿jî·®M}ß$nH=‡YÓÖ~ìÌ5ïyËJ»lÎug«?j»sÝúùöBo1³Æœdy	·e'‘¬L7·N>è,‡+Ñ t¾·ÐºíPz±Ä‘„›~A‰:,éOçƒYyá×¡\®¶ç¡V\ýv»iÂaÒj‡¬3ÚSŸÏ:TUªÉˆU%¬
ovTc÷PwëüîÝi“'sç±De¾™Â‡™>˜:3¬uëúzœ¶^
;¡)Ç§¯l Ç79ËcÛ7Œ•¬(ÑöÆc4ÂÕÙÇ»ÀTWORç{ÐôoÑ-Âk® ïÜ¬4æŽ«‹Ù{ÜcY7µÅ©íˆqº6¡Œ“8)ïøè®öG9=FÓ“ š‹ÿ¡€Í )”?š‚á¿S–”'”2Ë §•¤µ ?LM1/r§¬-Š4ïÅïjoNS!9ë2š ‘6´K9gE·]N›”¶4RŸ	^D’<æ•9*Ë”% }¹58,)¨ÅÓÁõ/çûœ;xœR]‹Û0|×¯Ø·¶´1²;N!ô(%máîècm‹Ø’‘ä„üû®„¤WJïÉÞÕÌììHÑ#‚æ9¦™Ìe®i©d&1Ãe^åŠ/S¥S…ª”E:g½ðh#©pQ¦z¾,+Q*­–«E™sÉÕJc>¼($O‘‰!6ÎÃcOÎÁ¾ƒM7ý&¦K4wu'L›(×m!Íó²È2ž•ð™¯8gÔíLŒø^z‘ò/øÎ*!½Qa/o½·:Ñ÷¨¡"WWÀx@Uˆ"±}ÚåŽ4¸$¢%¨i‰¥„è@€=vxe|ádÚ–à§Q„ŒŽ‘7ûñÅæ6õ(ZRxœ]c„ÖÕÐ‹aÜXX0öÓ¨²U¼uI»‘D.cA	k]‡
­©m,ÄÆRŠª¡¶C@v@²ÓõG°üxíùjÔØšHøvÔBD¡Ù7û¶ÿ¦š¢	\ãwyk”œÝm9«]x=^„§é½w=…}çÁeñ¤ÖðŒcŠ_‡@«mrüî.¢‰óõvÂ<5ÂDaÏž‡ö È5lÔ­—Üz»“VÓ‹™8¯¢6ðÝ›N¢¯a¨ÜÕ×2épË^MM×9sU5“çõ{^"{Á£Á‘FÂ¿LMžyúƒû_s¿ŸÑHÄž1xœQAnÛ0¼ó{k‹ÆeK–d·Œ -P÷^PäR",’IÙõïKÊNÐæ’\íhvgv68D¨kÖHZË¹ä¶tQÏ—‚ËŠVmŽ-œKZ,äÈš ´eQ.K>_TUÕ.$mZ!ES ¬±®DÝ4±Â‚°1ôÖÁ7eÎÖÂNÃZOŸ™Ò™ÀÓ¦ÓL·úòrIëå¼ÈkøLJIDµ
ßÝžÓ‚–Muk'’µNq¿‡atÐ¹håÜ£¡<·'t—ô/¾ø§g£(ÙI=þÃ8²Ay06Àx,² Ø‰4ÄÂ°!q',§$(þTøà.%6\n.”éàËn¿ýýã	ÔUÊŒÚ!‡ž%8:Û¨³dÄÛ»‰ÁÙ0ÄñZu}ˆ€2‡ø²ðÊhÐbÜÎœ£÷r†ÉÝYÅ3Œ˜¹\cð€§ÈŒ\Z.#äWw<²À{Ðì€>ÚŽ=g7ûúðø°ûžŒO¹}Ì)LË~z'/QÆ™[¾‚=ë<:¥[t¬},7Ý­Ì4Þ“½êŠ™•rÖ^Vï¹5ù‰'…çØ”Þø½í™
1Oãp`ñ °æKPv¸A›³àW¥¿Fð¼æ†=xœEŒ=NÄ0„µ,É=Bâõ4¶coÖh[
.€(ØÂ?Ï$RbGŽ“Õ#J8—á&ª™‘¾ù¾®?¯Ž9!‚ãUåó(óŠVÒjïy]{fPŠ=r.åžsJ0dpÌekë…è<5N1Ü•%¬s–JSï¤bB/G~ÉvŠ-ëáF*TQJH˜{\¾o¿	˜RL0f§‘gm´¹ƒ>º©Chô	ó”:ÐðÿX7w/ÄœÁ`ÞÁÆ0cÊÊ±p½†Ò"Ìº›NMk›?ŸA0¤8·®0æL†„s§±Xú¾ÍëÇÅÛz¿}Ýäõ´}ú>æ`³œFxœSmkÛ0þ®_qß¶±Ö8‰cÇ!”¬eŒ2Ê`Ý8Ég[Ø–‚$Çôßïä¼Ð0…@¢ËÝóvRpD°TRfëJ)™gu•¦%æÅf%Ë¥,%nêZæÉJÐ‘	°ÁušeKLW™¢³õ²\¥i±*¨*d^dTä9¤Ž¡µ^´™¬…çvÃü3ÑCRÑqß¨ûDÙáëõ&[çù¢€¯i™¦‚«ƒ>:ž/Ò,]—Ëó¸0Çî}À0ú-<›àl5*‚X†S.õÁÂ€ çŒâU×8;šj+ žÃ'Æ cÇ¦½ŽÂè„öìˆýH cióùHR8z®0‚À¾·Uq\ÎM©ƒ¿9†ÍSi…›¹m‘Ç¾àÕÂD¢Å“Id åI{­›ÑX†šZÐ1Øú7Æ!qÏàòíbdž6û§eþÕ2÷90ï‚¼&y4ØðÿœÝA›†ñÃ)Þó"K™sMÞEy°Þky	¾#XlWG=m¿1œ‰@¡™÷£°„¸œƒgÁßú~Þk%g°LÖyNA³ƒ‹e¸Zæ<5Œ¤ó¾&Ý÷‚WrmštháûÓ¯——“ËË:<Ä9šx`yg®h+^í…BOw½ž_Õ¼Œ–mQÄ=jäP*cåOj?)2=Žžµî:¿÷û >±®y˜{žZÔÍÂÏ±ïÐ;u©%—Ú~ªÔü
Ä«n˜ëÞÖõ½|Û~äáˆßtÔÄWsø?_÷ßÍð+6~8=Hrì<÷Íù˜ô þÒ<…Ì6xœRÉnÛ0½ó+æÞF ,É²Ãp›CQ½$ý.#‰°D
\ìæï;ô†4Hœ43š·="ˆfÑ©•\u-_ò¥\éfÁk¬še[¢”ºiëVK66‚®ºªM-ªeUs^–kÝ”Ùé¶VR5]ÙIj+ÅDŠƒóðËØ“sðs‚ít.3û~f,”›vP6Íj¹àM½†/|Í9£édbÄÏÂ—%¯y³æW8³Ç	7ðŒ1y{Í½'CG1&„Ž*cIÁŠñò"0öÛAHóì|„8 LbžíÁuo¡NƒQœÌ8‚ÄÌâN
5•Ç,þ‰0‹¨_á­e¶wj D
wLFë³TfIæ«Ìéô”ÀY …×îd!.:;ðçœÄ%ˆ{\v	å8<}:"åI&´Üy7A>Ô5\ˆ"¦[8Cº.˜ÌSÐ]†Üç@g.Rù0Ó¿÷9§#õ7ÙÙàîÿ›á²BÕžÐÄ¾§@äÛƒÌÏýäq,œïwìÅôDðàºîA¾n>óç°g<<(a¢°¯žÒxÞØªÛ¬8\gû“V€_Doà‡7“DßÃ6P»ï¯m1áŽýÈK/µ‘Ixœ•SÁnÜ ½ó£žZµ±¼ñ®½­¢US©ª¢\šÜ#ƒÖ€x·ùûØiÓä’žl`Þ›÷æAôˆÐVåeYnxµj·|µVB¶Jî¤J5M­6¢Ú­×eU±‘{´J%e[V»f#v—»ªÙ6ªÞ¶\¬/^­¥¨kÑlQ
Æ§Ø;wÚžƒö&ÿÚO‡Îp=Â™kXm6Ûú²\Õ[ø\îÊ’Ñ®Ñ1â{áõª\—›¦^àÌž^Á7ÖEð'oA[ˆ=‚ÑRNåU˜ÚÔ‹[ÉØƒÃ	|!ýâð™ƒSÅ8¢ôÞ:8ñaBˆ	§íÇO_@Gz7 ©ÕÒBäq
I‡ mGÆ
 ŸÎÚ"ë<òzÖ¸P%4A€¤H¥ðÜˆžGí,íyÌäœ%_½‹,ód¬×FEŸRí0¼rŸ…%ã`œœ|£Ÿ{ðÈmª¥h,kóÑb¼Í2,v¤ë„YjæY–)Ì»Ž.è¹4Îíñ&rqçB|>=·Å@w2ÎÖ•&ÑƒðzŒÎ¿h1;Á41gÒ-øHŒ4;ÊÔdEš`ð@Ì”ü â…þ×Ëwp,ö)H'H“£ü©t¹´à0Y­œ7¯îÉ¬è¬iø1•š*Ú§ìÈâ¯8g„ÌÞˆ+¸E{ø:BímúŽ4w
ç»ë\sÓs¹}âp;Gî­†½xÞ+ŽËÞá,E~*ì^w4Š§ÔEûtõž×Å~âIã™@	ð¿ýþßóNÃw¯M‹¾ƒ} å¡[–…ÁköÅ•Šæƒaxœ-=NÄ0„%v)HÇžDIcg½I\P!*Î°ÅËó³­cGþa@¥çhÜ€.@X¡iFšO3šåîûö”#3­­’¦Æ¦µöÐé£Ü„ÔRgµÜKI($«#ûÄ¦iIt¢ÓHò ¢2Ra/@k‹VË©ÞK!Õ²>Ýw-<
-DUYìãHiù¬_‡1ÁŒ™@—Lxæÿ9LÁÇø!r.ÑCFŸ9ztÀ1†X¥Œ¹¤å^ÒœÊ<‡˜¡øÑ†8±Ùjç™Mu¥á]a¸ã6zƒþZ·±íÖf×÷»y¦ÕïÖŸÝÇ/k d%”2xœuRÉŽ›@¼ó-åhÍ˜½Aš‰0`ŒÁ†¯7ºiöÍØØ_O¢Ü’w«R½÷Jª(! ‹˜¨±%N$P„"‹2' UIø(æPÂ‰8"LQÒ€Mâ±‚
%¬òª ˜È
Š°ÈÃHc,Ë*$Æõ‚A(ÄH…‘Â&²€U’b‰{¾Š±Â*±ÀÊ‰ÈDãµ¸$2 =ÎÀ[ù^Ñ7øÈ›T¯¸­N’¹§NáÀ+³,ódë|v>,GÞš–’®º¤Ï#úÏZÚ¥}ž‚—ïÑMÛñÁÖÞ‚OÇöµ¯]hþæÀ€[¯c]ÓtCÓ=XÅ†dùF¨»0+ÄÍU ÎMÓâ¥ãhúEXŽ]”Ç¡ªò ¬Xf	Ÿ–>òæÞW£žLhÝûP5¾Bc»áˆs*…„«W­)œ•Ú”Û¨SPŽ±z¶UÕå±±Í{·sfÒmÃïÇÄŸÆé(úùÅw{gæÌ±t„iOèJTp ‡jUÐE–·Fµ@w;ëT`ùþé¬›Ã§F·KÒ÷w˜ÚÇÛ*‰—µ¦<¸½¼IÊ©™œzhS‹À5ÍnWcvcÀ"Ü5ŽºéØ™Ï'Ún=øp^Sjã¢]]c?ˆÞM=/­Û¬TNµiÛ’],Ï{_—.Z0àaë!õ¥…NòpW‰ûº¨3§¥”`ÁM›”Î¯‡2ïxší-Ò¹-8'üÎ€÷Á½ÌŸÌLñïÄÐ”€n¬*@Ée$ý ~HÚÖ ]£&êŸ"ó:êŸ­yêÇjÈ»Š€æZ“\å ‹†§ ÿÖ^úø3xœ•RËn1Ýû+®º©	ãŒç"U[`A‚jÖ~Ü‰-ÍØ‘íi•~}=“6–mùœ{Ž$“Ø(V”a%óŠUŒ*VÒ\4u»àŠŠ–2É‘¸G6,[µB–uÞäYÝX•u›Ó‚–yÉEUU%áCÔÎÃ÷¸…UR#¼ÜòiÿË~îüþ=Ð¢ÌêŠ±|³¬Ê2"]ß›ñ?ðMY,šâŒ'ö±Ç™ìÌ¾áÁ%Š˜°ë‡/tÎ`ýu÷ñz\Wãz;íoWÀ­‚õf·…Ö`§!÷Þõ¿"S
|ïùAnˆ°ÞÞß­¾/	¹º1˜¦ièŒUFòˆ!qð“„ó\
È¤ …
[cQA›bŒÚ°¼Çpà'¥A»¡S †^‰ã4@»'Äç7âÑôæ™GãìÛŸöþB4ï:àJc\lFÞ‘7akžÏF—ÑØý…ËØ1$Øb°ŠÑ1ŒÆïlôGxå±M]FGîÍ~HÌ‹‚¾>Ç8x2QÃ“6Rÿ®*RåNš¦š_ò	mºv¶;‚¿ô.ñ¦Ä©{n4)*´£ð9![³Oªg®mgâ¸ü§_F^ á‹`˜(xœ•QÍnÛ0¾ë)ø1ä?9†¡Û­‡õ²­×‚¦¨Xh,’ì o?ÆsÑa‡a»Iä÷G2Gf¨¹aWQÍÚÕäªúh‰Êº£
º7¦,Q÷dÔŒ‘C†Ràµ9–d°Õ-;çŒ•õ¥=5hÚº¬:iu
—<L¾`ÌðŒ>§DÃÇ~Å€Ûûi,¦xþekô±ktÓÁAwZ+šÆÑçÌÿÁ?™¶:µ;_=†'»ÃÓóW†²hàÑJ~ïnð„#§¥ç<_l å¸P†°ŽüâíKHJ}ã•#^ ðõ8àÊÐ3¡ìúöÎ`òSØl&yØmÓÌ¤0KÍ%ÎIò¹rd°ì|2&ˆœ8®
Õöw%uW*àÇl1óVÝ|¾ƒwÜ{vî#-b–6oå3ø_óÞÁÕçá¯Ùø>žg†yOšTôzÅ(‘CÍ˜}ï/>ß
Yš?ËXøÐß>üÓõÔOxwÙ™(xœ•QMoÕ0¼ûWì#iíÚùzB¸!—Jå¼±×‰EžmÙÎ+ïßã¤¯Ü¨OÖììÌìnIDÀ{EÒ˜QšIÚV·­ê¤ê¦aÜN„¶³f†ELäH.è¡“Z*¤­Ã`Å¨Q·Ý {Õ÷mg•V·²„_0xBŸsÖÁ‡é‚ÿ'Ôç»æ ÚŽ£‚†÷œ3ÎgW
½©¿}Û[?ó—35zu'xüå"Ä"¥â(CY°@|(·C*dûês!4,hÜ²ós¥ä%<7‰æ{&ôJ ‹ng_…¯à2#¯Ãækh2/..ÿkÓõÐ,˜fª¸3ôL8HÆå¸â•íõWÑ;øéÊR[ªPÄ¢ÀWwÈØ°®áyÏ¶·Ãî¦Rç±u÷;ë›óÛoøñôÝÞlOŒ½ƒ}=voèr¿cuóa'°œsi-»PÊ.øŠ.÷Ûh¸1TW)‚é\ò {t³'Ók›ézú¯ó±?++ÒŠ”?xœ•SMÓ0½çWÌ$%iÓnV«Õ²Àq9 ê¡jl[kc'ØN—ü{Æiw[
ö`ÅöøÍ¼%z"˜—‹¢ºjdµXâœW)*]×XIQ•åB4Å‚JEu™õèÉEPzY‘jP©¦iVuz‚u1¯+¾jVRRÊº$•áw‡{ôÖèà}rGp#öèpÚß¡´yç··PÖË¢©—W«fÅª(2ÙYkb¤×à—Ì¡<â3··4“­¹†/ôÔùGˆŒ•"ÐLjK1·t
Âqÿyý ¡÷]O>
Yö-!?©Ní6Çâøæ-Û·d¹‚ÑtL ;ÈìÐ+æ;ð„*$q&;4BeÛHËÃ£d<0½§Æ1Ù¤@¿ŒÜ0ãM2%1NëÏj8«*ŒxêòlMÞè1IL\0ïô_Ú<ý#%nšrŸuZóœ –¬ ^Ð'AO&î¦9ÿ|}!êû6ü81Ïáéa0'3AŒlâQÅkÍ¹4”±ó3§×cäø´ù•d3ÀªMò[4Žu è†ä”Aç(pà&Ø„b„qÏ¤Î|wð&‘;s÷È¦ÌÎîõàdJ„Ë>Èkø4b÷äà#î‚â³ ;ÓæFØœ‰Ýf_ÍÖ‘š±Ó31^ÿ×Ÿ’ýg7žxœ•ËjÃ0E÷úŠù€ÆHµìX!„¤Y
…îG£‘-jKA–Sò÷M_Jíîrà0soÉÌ@~-V­µÆ4fML¬Qkßum×)¥Œl½râ„™c§n­§ºvä­‘d˜ÉùÆÕóºu¤[EZzô—2¤w˜<a„Ã<ÓÀ°µgŒøž÷HS•r¿Õ´²ëŒT-¬äZJAišB)üß´JÖúÓ‡s
–9Ä0g¼ÌðÊ gÌíÈ0rìË ÄcˆÄ?ñ—”y^Æ!Â¼Øt*aÂ(9¾ü>!~·+!Ž´,9Ð3ÜÓ1åé-mO¨šª‰èîC,<V×æ»ëK}d·JÞ¯ìeó§Ä+¦m™ò•xœ•P»nÂ0ÝýWL0:vâ$!hQsÕ®èÚ¾	‘ŠM§Ð¿¯A•º¶Û9ÃyÆ@º,J›©µ¤R7D¦¨4/k­±¥¨-¢!4;c ¡¶R´m[µBEÎeÎunÄJAFò\Q¢5Çxô1DxC›a0G‚¥þD‡w¼FsÊ|èV—Š×Uss^qÎŒ?úéúF¥6Åž]¬YÀsr¶Gçh@ÝÀØÞ”,ß)W‡èæ<Ngð¸¿ür¤@ècìÙŒ±§d·õ®ƒ‡åd;¿N!Yjºb)ˆ†(mkÔ…Tª‘0Ü;l¬‹!Ý‡@×ÐÄÞ;hÓ9Û×=Ü¦¢³“YÆ^úÎ‘û¶ë¯ÅŸ¦³o	j`žxœ•Ýnƒ0…ïó~P Ð ªªv•v½i?÷‰ch¤’lI@ëž~YÕÞoÒ¹ð±üÙ>)©±ëÑ oQ+!E¥tß‹¶65'Ô¼F‰Ò°È%rl;Ñlx’FÉ±CÞlŒ¦ÖUÕóVQV#˜ZÒÉxP!Á»rpˆO[½*§®õ^á\ú0í jó¾¬ª‚KÎúy¶)Ñ¿øŠ‹;ÏV’]æídšœ±Ê9ŠlŒ1vôn¥¼ÛÅo‚1øÎùâ™n£<ŸÞîNÓèÁ­›À¦2ó8Àór!¯añ¹»ýüueººýí2'Ù±;92…ÇB_†?eb?èt†“•&xœ•‘MOä0†ïù>²‡¥Ÿi+„€•öÆ‰Õ^Bnê¶AmR%žö×¯gV»Qvä÷±_‡#55M›7†´)‹fÔEe%+Í óº)uiš1Ë­VFòEÕ÷me²²Íl7˜Q†Ú¶šŒÚ*‡vIáçá#Ã/ôp“’	.û#z<Ç×h×}ˆÓdU­ÛªÉK;m´V6¬«c¦ÿÑ×™.Êw½ZÜ4³?®üp¯ ròƒCï)%p)H©Ÿ³K°!ÛðÜ€gdHb4DÚBäÓÁ–%¼8?uJ	“vô½íÊÖtEÕÁFª çmˆ‘,¿m$©\Ç÷[ì\N–sÞdÒæT“¾}I•C¯›Àh€ƒOnò8?Å“ød|ZÈÿ2G‰£;£ž¤¾È?A”ún;¸C™3Áísˆ‹xËõº÷+]©ûsÿ]Ç]ÿÖýÓ×¨?ºµÊ˜xœ•]nÂ0„ß}Š½ ‘bÇ „èÏª¢¾¯5±”ØÔÞ qûºˆ´o3Í§ÎD0H…Ø:iÒ³ÎËNËÎÆ(•²½ñºÓZŠ+fŠíÐ’ÔÒ£ò†Fò»ö½•v;Z"£¬£Ö*+O)Ã+f†/ŒðRŠ›ö†ú„niR¾¡UZÓj¥`#)…KË˜éýnå¶öÅ-dë²‡wrs]sr8C¹/6Í
#'Äy
®Èn¼¥0à	J=[êŠëŒ!@›V†%”âÆ³R,onë"œóšj~øþu?Üé9¥©´£ø—Hã&y¿±÷ýŸÞ‰O‹Ñžxœ•ÍjÃ0„ïzŠ}É–e;„´½öÔÒûêÏXR°Ö¾}Ýh/ËÌ|ÌÐê Ÿô ;Ý÷ÒöÜs5ÛÊ‘£2Z{mU+Å(]Çn¸ºL`{…z¨¦–m…âÞ+Ùr×Žj9á'c{†…²Â®_˜áZ«	NúŽÿMjÊ:ŸAôŠÃ ¸€8g¦¤‰Ü?ò“¼“Ï<«g$w„7g–½9,Åà~Ë†bÉ*!EÃØgˆnH& ÞK´( AÝçV{Û‚q÷£.AŠµÆ<ƒ}Pñj{5Gxß¦„®á÷žÒS7ø«/ÏBÍN<³8ggÅûƒþ>þi#ûdøŒ…ì	xœ-ŠÁ	Â@ ‘ˆ«¸
dïö6&âÃ§òØ»ÝÓ &»Úƒ?›²}ÍÌ+{fUß©D´dÁÆ‚)RÊ)(;X$ñÖ:)‘ìüÂ6½	>	”>ç˜Ä£Rd@è›…:§Ê)ÒÆ
§B>>¶³ãÀW­Ç÷ÉìÛÁìêæ`Ö·v8eñçæ÷ÜûÉê8T1Ë“ xœ•ÍnÃ €ï<…_ IÈUUµÛµ›4­ÝÝ!N‚Ô@¤]ß~¤ílãÙÆÁh‹JÔ]ÝI¡R)U%«JrAm“×Y&º‘›Ð‘	@e-¸$!ª&ãE£TQ—¤JÙ!²Í«¼DY3œÃ`¼ ð…öÞ«`Ó\Ðà=ß¡ëú-¤EÉë:-r	+^qÎ”Gý£_–)ÏÅ³Ÿ<Áûép m| lÁvÀá:#@˜¬6‹\{ Ÿ‰T –±ãqÂ À‹Õ­‡0` ?eŽ&ëÂrGÐÙóÙ^µé×Œ]Ñ™%ƒ“LgÔ{ýèC<ßcìU­ámpãHûa‰›ñÉ	.¼ó„=Jâ
¶÷úùFŽn¶Ñ¿ù^(	wÚ]´zµŸº7Ô®l×­šÛúO‹c¿M©
˜-xœ•RK‹Õ0ÞçW|Œ2söN§·MoG¯(ÌZ7"%MNÚB›”$øãMË¸¸âBwçõ½àG~¬4ñ*m•«2ÏŽ•TõákUåM^fuUR.Ø,™€L+Õf‡8”u^ªçÇVÈ"¯Ä¡P’sYII&–Ð[‡Â|'ïeOx×>#¶úƒÓÞºî=nJ…žq¤Y•eLÚiB ÿÁk^–/xö…&û@ðËLN‹]<¤ðÁ3vIFâEl#çe—@‘Ìk0xmÇÑ>ú[Æ€WÛöò”lm°ýn×4Ú:Ihš…I\%Œ¤´N¦C°/zëu‚)&™EGo¶¹£°8ƒð<¬Ž# #W/,zYVÙ=îÈDåì¼×,ÐÎNØý¾IÎ2zšy™ü÷}d›E=ú°%2èÈÔŸ‘»!`ôiXß#M˜(µf|Fêp÷ùô	?ãðØãš@(è·Pvß‘j\¼ÖøËKøHŸ¸ò×7z}ÖtWt£RÖc_‡ÎJ­Öiû|ûOßÀ~ùæŽ2xœuRËn£@¼ó#íÑJÌ0À€”¬˜øÛ`lç6Ãû9€±ýõëìJ{ÚíSW©ºUÕsÆ€HC‚TéH’ÂP#0 A)XD%©¦‰‹éBC8«z@ ¤G±€1Ee*é¢‚–k¤%e.ËÑ_½Â($L£!B0ŠD)¡¤=„²ÆD)P¦PQU}Rs°fiŸ sèh^òoð|ƒ·´êYñLëò'xèE¨AEÑÁ“¨Š¢ð`Ë´ïó´_x©jÎšâö?ÁÎâ&îÒ<}iÏ—[àÌpXÎ·Æ§··óÀØ™Ô4Ó2×tWtZuÈÚ›kœdòî‚ør4Œp±\æ¶šŽ¸íBÉŸä†RdÚ1 Ë’UŸ™«•?aùàžW÷ª÷kßÙ'zt·i~ÇÎ?²“·¼†3:,Q¾t½–âó¹À"sj6ÕH¤RµÍ,uUB»P7vxIú6ƒ½[B´¶?Ž†é3Œ®—PjîÖ§Þ\2ÀÎá­%ù6ö}›ë÷hxÿò.£e^ÝÛ­ÐŒVçÉdjly©Z”I½kq¶—Î‹Z “ÅæñAÔ1‘Ww^«·xP¤ÏE6Õrd‡ÇtskŠÑ!ÓÁ3”õó"´ÆÆsòqð±~ø ð¯¡¿ôÔì„înÞOŽ™|ÂxW:p#Oò[ãU–svëï°å¾ß¬™|q†÷ƒïÍåW¼JÎºþdfogÿNLØ03ÐE8kÖõà‡"bñºçš\¬:aÕ´$Ý£4‚p¨KV]]V%¤¢¬|T·ûþêøçšxœ•‹ËjÃ0 ïúŠ½‚d=6‚R
ýŠwåI‰µÆ^‡öïë_èeÆ6¸rð™s™˜JL¾"yîˆØqnØSËžª[i“apëÔ}ÆÔNp	±sâ&>MkÊ¡aÉÜJptØ]7¸)½àKï2àý÷ôOùiò”M/M—9×kÞ|ôÞuy˜ÉÿOGóƒÙWj¦ð½ë =l=´Ãx-ÏÇnîÄL»•xœ•KÂ0C÷9Åì(“4?	!$NÁr’L)¨4(¿ÛS¸;ÛÒ³åV™AY4eö
}tÎyë»œ­–Œ†¤×ÎK/cÄ*O:´ì°s*Ž¨8êžbŽÑ&DršLXX'èÞ†RáXè‡2ðÛ÷¢÷üJ<r-›T®;@cê ”•ÔRŠ%½ž[ãÿIA9Cÿý”h¡_Æ/s™ Ä§öóßršòóPžëÊ§Y| ßÒO‚’xœ•AjÃ0E÷:ÅìCÊH¶42„RÈ)²Fq ‘Š¬ÆÉíë¡»Ïƒ÷~oª\ÎyžD0Ì^(òƒµY’ÃHJ.ÚÀNHÌ77-ì„LQd$a™cbB?¸ì(‡Qb@q†úR\*?á\-pzïûK_¢wmõCêã¬÷“&‹#p@4;}Üz×ÿ›†S‚¢ÛýVò~ý—â’`]êvlz]Í/¦•J}”4xœuSÉr£0½óªš#•D,BP•LAlã¶ÏEl6#a›|ý8³Üfúö^÷ë®®×-zJFQ¢›†ª[–e "-O`œejœè±†Ó$Îa&uqO4ÍB
5tlåjba+±LH¡1²RkTS#…þ[Ÿ!ƒbª"¨@”›43L”Ç[1Nqš[Š‰USO3(Åƒ(Ú,h)
@žàùô“/ðZ6‚Vi[
2 b*H7ÀÃ}4”îl]
A{0-ÅlHÀsÓö´«ÆWvo0$ÿ‘±Žñ’‡¯ oSo‚i "oº¶·»ðí/	\9I‰mÇ¶7d3OŸ~vB²ÀÅQ÷/Zï]m;›yžíà-“‡ô÷S×·æ%¿Òw¢H`ßE(p.^8ˆKH;×‹Š}ãùÅ3¥Ê*û¾[Ó1ñ)om/¹ùÕœ]Ìž¯ýå):J`­'ÐÆ‚m#(ŽÔ¤É)1¦ÇmÛåUA<³y8kÜóÄ%ÓëûùNVò\Ž´Ïˆlcz“€+Þµ ííÛR¾Én?µÌ×‰zKT~TWÊ\¼ÓÖÓY¡ºóƒ¬^Åç¦;Ûe·«½ò¡IàÄµ{‡oƒ=8hw\è~µk+~æÃ2dë&	ÈŽ~8‚ÔXðe¹'™„‡óŠI ½ÎÆ§ã$YÞ*lÆOyíäûAõ%üÌ;ÙûQéN,÷rs[4ìÇ!#ú	…v¼v6/x‘#¦J¿={[»ÿvLZÑžQÐUzz(à‚Èû¶Û¶Û†ÝÊ†=Õ1¿Ÿ$­÷+úàT%ˆŠ¸iÚÕÀÊæáþ	€]×öä÷óäÒ|¼ëjþøÎw–&xœ¥‘ÍKÄ0Åïý+ææÁí’~W?Á‹"zžM'Ý@š”dÊÚÿÞ´«‚"^Ì)Ì¼üÞ{„=ä¢EFµªÚŽ*Yåy.
*e†]SKÕìŠNÔ©dDO–!;Ø´R–J‰T"¶6¢*r•7ª.e[‹FÊ<Á‰÷ÎÃìlÿ¦mŸ·m˜ìuØ£µÎ¦a[é†KÈªZdM[p*Z!’843ý‘<¾<Pzk4<µðd¦^Û»Â4ŽÎ3¨òÅ4„m’@<÷dŒÛÈÉ¯Å¿Xìœ	°Ç`Ox¥x÷+e‚Æ§ì`qÔ¼]¹8/«5„ÂHR+-a©Œ¶W«ìõ(Qnò«ù×ú›YtŠ5Ðk3oÂ€žSãú¥àzâTòäé8?«M$‚îRÉÞ|ô¾±3ÄR;³–aXÌ-£dˆyš÷çGéÝ€Úœÿõ-É;DNËŸ4xœuRMs¢@½ó+¦jVÂ0Àl%[QÄo$DÉ†D…üú5Iå¶Û—î÷ºû]Þ5c #C%ÔHˆ¢Çˆ›I¬()Wu¬˜sž&˜SšÂ˜Kç¸f• gë*7MŒ(c1õTç0UN9§˜FOµŸû”p0N˜ª±”#Hqšh›˜›LÓLÄ•8%•âVìO5˜±\ìÝ6tžŠOð˜|‚—¼¬|¤§ã€°‘‰0TÀÔ!”îì1‚ÕÀÍÅ¤MÀSuªÙ¹ì_²»@›üç-;gMž‡Ï²G®·kwÏ]Z¯áfôÅK@·Æ¦¶eÙCËòmJåª7öÌØ´ÕU­½›e¥Ï³æ£©@ÍÉ¶¶õ+ÙŸ/N	¨Y/_5oîŠt­Ý™þê°;¦^kÃ¬_Ì#Oàu˜Ì2ç<ë¡mÃ¶[”ò¹ŠC	$;eân×H÷’n0‘Æ‡’|Œ‰½s³ˆ¸´‚d°Ìš%š;ÐYøã’­]ÚéÁÝŸìVù\1FGŠkéž¼½WDÖ&¯6A~ÈÑØ)³W¿ŸO¡¡…ïÖ·U¢U31B´¸vYJ ˆäIbÀõÑ¦\4¡Èž|À‹}T-ô¢YñÝð-ˆ°œÛê]—m5<YÕz=ç—jôfT	+™õõdÝÉcJÝe0Ùõº-Ù{~éo‡Šµ­Û(Î Dµr8y¡VLr§RóÔ¼´g	<Ë¤oÏFKçßŽIVgœÛ²5»´¬à†&àõéŠý=V“›¸ÊEþÁÎ5¢¿·{Æ$©ºÙ÷üÄi
¾·à‹üÑ»Z~ŒKÁ¸ì/t		™xœŽ]JÄ0Fß³Š»iÚü">
>º‚Ûä‹cÓÒ¹
ãê-£¿ÃÇáÈÐdaÃ0Â˜œ\ŠÅç½eš¦ëGç¼¬ÚxGê£fR=§Ä™Cf¯í`ŠñÅ)8íS2Š?d^wzAk™žQåz¸üìÓ|ßOµ	ÞOi]©·6Úz©ÓNkuÐ¥Šà?’~%ª}.è¶ýøœ‰s¦m‡Èî„ÊQˆ«Ô…™®ÜªÔ/Ð Ôk}kÈÝZJ7ÝÎPß~pežxœ…ÍNÃ0„ï~Š½BTŽ“8q[¡ŠªP/ð Èq6‰EìE±Ó¡¾;i‘ =q›YÍ7«Ý8 B.£Ê²”˜pQ%&ªÒ‰J3“§ºÌÊÚÔ‰@-Ù§ÐGH§°ªM!e®8eQ
4…’•”<Å\b]4eŠÓcìh€ÞÃó8DÚÒ–NïÛ•Ã¾×žö3Cî’<W‚«ŒK¸ç)çlš:#ð‚6vð4ÓÁòãdfÕÉ¬Z§mÿ‡+‘	ÁáË	g~ëpÝƒ¡ÚúB<ô6„[Ç› Ž„Óò	Æ€;„†úžv'ä’œ3ÛÀ­!_ÛhÉßÁ€šÞc§ãâWÛ°`GÀ~êºÊ‹Kà"tÝrdì·wX?T‡9l¬ßÁÚM?;Ë™u« ]}{>œ½ÙÖOajšàŸ?³oÐ žyŸxœ…1nÃ0Ew‚{C’­Ø
‚ÂèRE–ö”L;J,)åÄ¹}tèØøäÏ‰¶M£š’ªZu%¡á½
;ÓXcP÷Ò’’ºÖªcL2HÑ ÖRi¥!…èVuWVF‘Ü–ëºGK¶b8çcLpÀÞç”ã5ÞaïqZOãˆ!.…þ„RZr]q/¼äœ­[ïr¦ŸäòÞæÉa~@aÐÝø§kYIQÂ†oW…«§Í%¹wÐ»NSÍ‰lO>¦;Œ„gÆ¾èêèFÝÆÜwppá#|øõÉçX8ßNè§9ÏKìÛaÇ¾ÿþ)Æ~ hÁpýŸxœ…ÍNÃ0„ï~Š½£VþË«
U@õO°ŽíÄj#Ûi“·'-ŽÜfFûigJ²¬$ã‚)áÎPGµ`¬ÃÖÈFu’9ÔMC¾1Ù©€²M%®µª­©Aé¨RVQÙŠVu­¢æHp.CLpÆÞæTâ5®p¸ô§`Ç§¸ì»žU•âTI*á‰
JÉ–_ŠMða}àeÎÝ ÇËÝìõÝœú€~üÃ—œÖ°£õ†“­nò]>À«_ ØÓ
£ÅDyÖyÍ0ú\ù´WooÖìôz€³Ÿn1Â{ØJ>äÞ‡SÆç©|"_¾Ÿ¶ãèÜ/ðÏ0ò¿§q1š xœ…QËŠÜ0¼ë+š½ì!¬ñkyÂKËä,¹·¤¶-bIF’çñ÷Û3äÈM]ÕÕU”J"Ü‘íÑ½²¤±ÕõÐÒnh¤¢Q‘éƒ½"%VL
¨FkÕªa”}«¥$+Ñ6ª3¦UµåðÑXì†N
ÜÊœð
_¶Tâ9Þààñ:=-†x­LôŸ Ùí†–]ë>Ô]]F½+…¼’+3|Þ²™áðë>Tú>'nù+Ú¾$¼Ô’å"œ=ía[-KÙ$·ŒçéÎÂâry‚»+ÄÛLÿ"ÀFÊá¹ÀD0ÜøØÙ‚™¹…›Ë‚ëV¦ió\Oo³ËWJøð\“…/€Æì+8ˆÇ?‘pYàÛÏ‰€žòŠ†2ï@áPù–ùJˆïìL²/ú¶‡“—á«ç>ÏÊùcFŸ·0=J?Üx9ŽãoÁþ@¼ÌY¯ œ*xœ…RK›0¾ûWŒöÒÃdá±ÚVQ¥ªªªì¡[õ>˜1XÅ6Â†dÿ}mˆºê©7ýÍ÷˜±Ÿ‰ Æ–ç9QQ¶uUØT]-ˆevÄ£¨©/NdÎd<dÇª¢¨P¤±î°â§c.óJ–…¨K^	‘3\ü`g¸à¾.³·«}ƒg·þ¬iÑØ[*¬þÙéÔä¼)xüÈ9·ZyO3|'åø¼81ÀóïX¤m,Î½F5¾·7ylAÂËÐÎÌªé	–©CO0*çãÀ8Õ¼²†±Ÿƒr°ËÜqü@÷ww4Îý¢cdo¡#©m +OÛ 2tg eœ'r¿Q¦9[½s=B–Â—´Oº@CVb;YTèÉoôÑp$1¨ÉM(‚µù²´„£åîÓ:>X\¤
Iò·=QÝGþp–ÂKtÃ!ä7ÖÃŠc(•a/¿.n"qKÎ€¦'P[øM?Ìk1ï.¢L¯V2[¾”±´*ºR—´oOpQæj-|ÓaãÛ1UúìP»ÅôÛÚØ«êM [)÷†ÿüö"1åm!xœ‘AŽÛ0E÷:/CŽâØƒ`º(ÚA7^€’(‹ˆ%²ì =}5Áh.ºãÿü$È’‰@mß½k­Úšä -s=î¥†qlÇV¹ÎŠ+fŠ”vd­ªÉÎH<šQiule§Iuƒ¥®3è”Àµø”áÇ[Jð%À)<Ê†Cci;OynL
ÏÐvÝ ÷ýAIØÉ^JQÝÀ¥P†Wââáe]Œ‡Óå]4ú]œ9úïå(û±âÇŠ‹¸Ú™™Ÿ SHÁ#ZÌwàÈ…qæŸÉÁœÎ°aâ‡ç®Xê(›h˜
x¬4Æ;¸5šÂ)Ö°ñ§Ú÷”©øº.ÌLwëŠ'ñïißicº‘Ýéû¼áÄð9sÐ”'8-Už§Ùzþ;ýÉ#—ºÂë:_0G†“ùí5—ï|³æqñÆS¬hrîÿÇÄ/ÓÄ±œbxœ½TMoÛ0½ëWØa‡-ŽüÇAP-Ö¡è`ëºY¢m!¶HJ³\öÛ'{i“4iÑÓx°Å'>úI&é"Ä1ŽJšcœ–q˜%eXr‘b2¦Èi‰<ÏyÊÂˆ“3¨„˜TŒÃ$Ï“Ñ1"‹Ã¨ôÌ‚"Í¨È
>Š"ÂÖ®ÖæRm´†›¦m¿d|˜U-“MÀu{ašŽi”%QšQJ<ÚJçÐÀ-JWÃåÚò¦ËÎ	ŠÎ™Iåð€žÑœŽbOy:Q-x#' ´zïÀ™-8BZ®•Bî ôÒ¸3lºü+.Ñ1eWÚ8BnJ`PkëÀn­Ãjf¡Ð‘L	(Ya$·à:£›ý®FŸ¹iôFªêIÅÁw¬i ;]—b#½ÓÊªv ´ƒa£ÍÒ3ý’³µEÒ'oºäçtúÃ¡í©5{@Ø Ã_{A U§¿´!Fk7sÌTè&ÞA'iYhphw8µ¹jÎà'¶`-Úã÷–Ux>èZ›–¹Cà'|Ã2xfðx|=ðÊÉÖ@†¾J‡ÝEQö*K_Ç'öõÓü?æW]9½láÓ*GÁ8ó—z	ÃC§Û
#ÿ¼„ :$è^H¸RäQŠ¼ð¯¸(i~‘jýû-¿h/$Œ“ ŠvBœsBÒÀK¾WíÔŒÒ’Ñ…yQ0þÕöð±å‚Jº]•7¹öSE7ô
}ƒyÃ¬í¹ÿþ÷ð¤•&°Ð`×~•ž~xi|Jm¶„|¯¥…s~—×È—¶Ÿû6uÛ•§”=zÜÒ8æ¤V¾C}HÜ Û	Ü±JÂg#ÛMSßJrVíÜ Å‹ãè«šIÇÔ–ÁíºY2£$Lù#,wØl#x?0É¬”§ê²ìéoÑä/¢8´® xœP»Ní0ìýÛÑÄyØ‰®®ˆÝ:²õ‰•Ä	~ ù{®èÍJ³šÙ™è5”·Z1S©ÖÔL·%gHùÐU²–RKÎª¶ÖCM6éÑEP‚m¨â­ŒÖL–-èÊjà‚‚5¦šÈÇÕÃ#Ú8Â}
z„?Ó	ru‚;ë"Î¹^—¿P2Öñ†5‚CF9¥äØ.6Füå9y°6pDŸœ–	¹OÆ’ï2@É§[è{•ì­ëû>¸ÿô^¹°¹ƒÇ×d=BÙuu“Ã¿Ä*:åð¼F¼…w¼ …$çy‡Íãé0ìN.Vƒú2`ŽB:„x˜\Ã…Èïïl€}MŒ·è†œ'ë¦Œ1náR×#pRgÌb¶.}dîmÁâ™žmaCH
F9y±W‡C¶“©ýò“ÞÈ'Õ9¨0ŸxœŽKNÄ0D÷>E_ ‘“¸Ý!„Ø"±áþ´k&¶åq@s{<7@ìê•T¥×*3(NM* .R¢¥%˜ybììL¤BO]°¢˜Ê©ÁfI)¥%jI3Y–mðähug‹´êE	s¶=WøàØvx?on‡—ËFû€·˜_G—W˜ŸP«•©¥½=bküÏ¹ø*1Ïî<º²i1'!>ù“ ˜oPjþŽž=„î¸TßëÚîP®çÓØâ–Ø9„ÁÞŸÿ¢!~æ¨jžxœŽKŠÃ0D÷:E_ÀÁ–Ôú„af›eN O;‰e#Ë$¹ýÈ7²«*xÔ«…‡& ’°FF«¹·²ç\J-‚¶* ‰\;ç[]¡\!¢÷Ã@Ñqi‰“DÏÑ:´jlÉx­ƒÕ™Ûë´¸Pªüî[˜àë~”“?ÊOÊ•§°Ìß04•´BA×«¾gmS­ô!ÎâÎ0¦×¾‚(šz}ÃìrK7bŒò¶‚T¡ñkzÐÏãÆm!¥Æ2vM·L±[Æ±óïó,ØÂØi3xœu’K“¢@„ïüŠŽØ£1Ë£ih"f6ÔQÅ®2·¦€"`¢þúÕ9ìi·n™QY‡Ê¯•œ¤;ÐÀ	²uƒ
špl2™F°nAÄ˜ÐmÍÂ	¥&’—-°Å¶­™ˆ"DMLuÇÔ¨N¹°:4ˆ©±¿û1JLˆiÂL
9a“ØaXçÐÔ¡p(ÅB!]›U<o3àuÍÀëñ)~&Oñž—-/~ÒêôèaÛqÀ‹fišòpOyÛr	&y;íðZV’×Åí=}è’ÿÄÒ:mò¼<ÇOü,'K°ñ'¡m×ão_
èz®ë]wå­>)Ú™ûáÚìì`..Pú½ë²©ï»ãå Tí ±¦j*å¾;²ã“ØÕ„‘•TîùÂ–g7p=o”£=[»z°èÇÇ:]öÓC,·YwâkèÈõfáoÓ¶®àÍW€ ÞgtßRßkÝû¢š9gÈ<Dø}eðúûPÞiUE¬¢=*'º·£‹êFŽþn»‡°Y(`Äù(nu³ÇEƒ¾¾HcÔ•W]ï›™PÖ·ŽE7ï	E60œ¢µÂ5[*`½Íãx‚Zô›Ý•Ä‹¯¯ÍÞZÕ'µyÏ?,q)çúÊ-Ä®j§zGµöPÜg0Ž¤
ØËÈÌ³)P·_ß?ãì«Û=>‹vC—¬æDµ²Á%ïÑPä†ˆfõÅù:J·o
xãWíñÐïnÆáèß)s.Sê®(€äçŽ7-ø4Y@\‘Ë°Êx©žHó€FQD~‡¦*A-˜ñà°È›ö¥é’æÖ€'^¤d ¡Pÿ–œxœŽÁNÄ0Dïù
ß(iê6+!„Ä/pá˜ÆÎ6«mR5.»û÷d‰+’#{ÞŒec4Û¹	GÓ…&v=‘%í,E3êÁ9Œjõg!7ŽºÇ€zÌ¡×ÁŽCÄH®3¶ó½¦¨ü.sÙà£øOx+3gx¾5ýÊ×ÀgÞÊS(ËD‡öÐáÚj­ÚvI"ü_²GûKª˜®pª%Ãº¥öilíçTå±îS½U¸'ûLJ½ÏÓ~„‹¯ M§\…=A‰à‰R>Âêen·ò=Íñ“ ¼@™N’¨F×»Ÿ	ZŽ‡Ì—?Ÿúãkp*Ÿ3xœuRÉn£@¼ó-Í1rhè¦)¥ñÀÆÁ67hš%ÆìÛ_?ÎD£¹Ì<©Uõ^]êuç@‡ªŽaŒC$qLôHgzH¤€ÈŠè!d‘Žã«P/: #¦ËJ@0“!bL'P†šŒ ÊBB‚@"ªh’?û±"s9Šc©2~ ©L—"a-ÄXT9ÂŠ"}—–°yÖ¥Àè[–‚—Óy¿È[Vt<fåù'ES–5Œ Px¨ç¬ëxæY÷Þ‡à¥(^å··äÐ‡ÿ9Kª¤Í0úc:7W`3ß ×œ¯èîc;ý­@ Ck0ƒRcL©c8S¼l3Þ¶š~âõ5æ@iônštrš®¹ßŸËsw^žÅ³Ú¹ˆ ü½eÃóN=µKoi'•$ê“Ílâ.Ü»é0ÆÜ÷&ñ K«XÒ]mmæ;Fbu«GÂ.EAº7µ§Y#&&ãA3t8¬ÚÖÎÜ%çÕç©+W÷ûPtãaÁ½ê4;Çz¨ìÍÇM L¤±˜º‹¸<qqÐ4®––aÒÚ“¤¢:bF©Û^û8”ŠI]ÝW×p ï6-¹3à‰ÉÔ½Ã¡Ñõ¨l#ûÌÅðÓËû2ºí4nuQ‘¬}©¹ò¯•¶S<Ë7Õø)ØG ãõ•‹´¯½Ý6Ž’¯­“æŸˆž™¦ é.FS“l'ÄZè­î¦­EýOÃ;ä>Ù`ü*€×*<´ÂwgÓÕäß	KÞ$T}žƒ†×=o;ðCÄMyu{|fÓ—ErÉñ.ëÏ£*ï“¬ñkÇ‹6+‹VhïÛß6økÿÜç—˜xœ¥AJ1E÷9Eí…!éJ:iqŽ Èì“JÕ°“™˜ˆÞ~F=‚Ë÷y|x£3ƒèl(ã‚B"AÇVÄ-ö¢…ìâBN!YT—Ø¹äeÅ”½•%æä"¡sž=²ÙˆÝ¬XÔ*ÎñÖ:¼Ìo®ðÚg«gx¼þÐaüÒógé£Ìý@mã\°›Ñ¸ÂƒöZ«ûº—1øê˜3œþ¸¼Ïs©À_ƒëGir£¹ß“Ôú–U
Ÿxœ¥ŒIjÄ0 ïzEßŒ–nYÃyB ä.·ZŽ –’ßg{BŽUÕ›p$“‘RŽB	‘¼N164‡ìgÅå l:b“Ú! Z\2KfZFÃ(Æ:í|²!žÙù@ÖgQqô—½Áãø”
Omìu…ËÛMý—ÞKëelïÛQ@wvf†“žµVßv+½Ë?ê–<ÿ%p¼ŽµT.õ^öª¾ ß/QU› xœÑNÃ0Eßóþ…¦mÚlšÐšx/H·5m“©M»íïIHˆÄ›}uíë0"BQj%
‘ˆ:­Ô6Ë³²ÎR“&µ®fEXnej4;é] %µ,²ÜØL§*Ïdi%*mó¥JÉE™*”F1=‡ÖðBîì=<°>KN·¸šASÏ+?Üƒ‘Ý
!Ø$e’°¨ŽpD
-<ÌSÕÂ¾[nÖæ@.à<^*Š<âEÄ™[äížèázòƒ)è0OPy‹°è~Æ‰±¿ '7_înóVO‡£ÃN£Ç* MÐxrBM´0yï FïuLÀ{£Æ¡ÝøºÞ˜ëî?a¯¸ž#´­¦ ÝUÃqî;=:‚}õ­ñîK;œmuƒíûÇÙÄ£¬‰˜4xœuSÙ²š@}ç+¦*–×`XR÷¦¢‚Æ74o,ÍrAÐa ñë£IUž’~;§útu÷éæ ©!u *h*ƒÈ—(U‰L#ˆ}Ue,K‘ª™WŸAÉ‘&Ë¢Ä!Ä!‚P&¡D”°¤D¢æë¡¤hTTbø›$Ðå@“©
–â $ìcÍ§~(Z$*  ©DðžV- ã)2›:LÑ{þoÁ|ÏJÅ[X]¾!B©&)”(*bcáÉ^2Î¡YÆí&@ïeÅàZôß“g&ø,¹&u– á+ÌÉÌY¡ÍlƒvÎleìÛÉo^@êj34Ã†kºóP®7íxk.ÔôS^·s:ÃˆlÇ1lž§Ý6:{$MÇ@”¹×dN³rWŠ[&ÒeûÉã¹y0Ý‰ž{Û&ŸäSÍ7ëm[Åäõsì£d­»ca<gdß4x„X®sJüÙ¦ýamü<ë§h×W'ÍöÄZiCw®ˆ[7÷¬{œ
1U‘¤þD*²PB£Ñm3q?£ö4’7Žw<ÎÒèî-~¦ÓcF6P4yìô£ÔZ<ö§Ðkü©¤/Õêf;Ï=ìð*‡Ö¹1êîn½¥­pò¹*qß*uê¯Ïœ{¸[žæ	¶L°k°j¸;ñìm¥±Ê³‡ò°<úi¨ç$½^zw†ûÛÈY[­v¶Gs£³y¹‡c®Zy4Ø*vÇþåÜ5gîÌ—úØXÕZøãÙdeýÛ1a	,tmŠ1¸5PsôEÖ1ŠYuA—¬ìª*»ŒâŠÉ›>ŠŸ0Œ£aV1A(Û|EV…ÊŠ?õ¼a%Š2!/zÔ=/ªj8z‰²2Aqô=J’xœ½nÃ0„w=7EÉ–]9(Š]2tj_@?”-À–™N·¯’fé–ípä}à‘2"(å´l‘Faœël¤ïZ®Î°\£·lÕ#A‘J·|húÞ6Nûv~ÐFH¥¤í‡N¾öLï4¥_!^R‚ÓoË]Öa©ž?ÆE‡¹¶iyÑu}ÃÁ;xáç¬¸K Âçã­J8›ÃFKy>Âg‚˜2Òž#¸ÑÒ|…K(×í¾ü Ä¼cìDpÑÛcõfê˜s)qÖóŽÿ2î6O+Æ’_VhB(w‹5û™Â«&;Ø:k‹TØêNjL”* t‡FÍØw#ºCòþ`®Çgš³_§&“’éxœÌ±Ã Fá‚*™ÂDÂp0A¦pqp?¥AÙÈ‹¤È"¡}Ò÷.s™ct`KTàÓnKÎ"1”«@Ðbõ)²ªLª÷—tœc­Ì5j®»E´êÑœã°.¾‰!§y±.ÏÏóV;dàq¾çïû×U&Ná‚xœÇ¹1 ÀàˆQ‚sù‘e”r)ãñP34B@#ÜfûÙÞÛ>‡ˆ­¡UªÄ€±Ä,’EæÎŽg­ æY†Ü§íŽñ@Zj½yê›Js¡BbÈ9aìaíþäÓz]ÏíÀ}Œ[™ë÷ý˜±&šxœPËNÃ0¼û+öJd'qbWj©z@¨EÄµ²uc5qPâñ÷8<¨—çµšÙ0 ‚®Š’qaVRIS0jU•K–cf…Î%Ïu)KÞÕ€> –´®2©)VÊP.ÕÌÔ"«
h¹Ö´,MÍ)QShúÖ'ç{=ÁÎKõƒÒ.¢Õ±S®MMßÝã\Ð¬BÂ-•”’ÈFOÀÑ…î§Ñ4°<Í Õ3X9ð_œ3V@BË'þÜabZ·€»þŒ0ùiÄöo»ía½}>ìŸ^6ÛÃ!Ä¥~åkŽgÕN8‚é½m	ð1×ŠÒ¯@j´ÎÇ„óßì	-Ì=Ò&%dc×L!/î¯$½µ‰þ\\÷>ò@” •*xœ’1oÃ …w~ÅíU,pìØ‰¢(iÇªS«®ÑgÅ†p«üûbWiZ©C&¸Ó{ßñNDORÖ5*ºV´Zk.›"oVÕR)Yj!«¹¨Ù=ÙÈ‘×9/
^ð$Õ¹u±V¼X®«|¹”•\”¹f8ÆÎy8œŒur„¶ø]eCªöí€¦Ï”v Ê²æyQç5<ð5ç,u“&’‡g2±ƒÇ1¨¶§©ÈäTìôÇ^
^Â‚¯’Ùª7@­áDÞR¿ÐNÁžr4ém!úQEH(úË±wíñŒ-;í{ëL˜ìbG¿S–oóèé$û™]™}pàéÜ§ÅçùøœbF”išK
ÓÚyìmLc¨×!1žÔæž­Ìº§ÓªíáyìOè­íO/»ööŸZÝ<è#¼£…CHD‚­ü@‹ó}jÈœowìul[
‘ôB^îµ¤LIïšföÜõ3Ø¦]å8‘xœŽ1nÅ D{N±°ÆðqEQŠ4)s‚–o” ^¹}ø7ˆR¾ÑŒæq'‚½Ei‚²Úoõ’Ôæòé¦4Ñê¢%T–¬8°Seˆn´ÜÍ‘^$¥¥]:'å–œÎÚ-1
¼xo>(óo×vxþzÀìðš+Ó÷ZyeŒ“Ë0P0I+¥iÉÌôÏ¹èt¹Blá*C9·*ÄûÐI­d(XáÀ;ÁuDd:g!>ó½RœZJ“ÿyúË±øÏIe²‘xœQN†0„ß{Š½ hK©1F}õÅÄl»ÛŸFÚ($Þ^¸ñi3›™É7uc§H+?†Q*Û£œôL{/£0I5h«z±âÆ¹‚—F;eüdí€j²5šQ6ÄÁÒÀÉ³xÔ¹lðÁ±Îð~ì~†çï[´î¯1W^Z_ÒôZOÝÐk© éÆ®×7ÅZùŸqñF¹T†Z ”-a…’øŒž!cŠù¾äóšKÞ…øÜÊ‰a/‰aæe…˜¡ÎTü‘.ÞÆ»ä†»Î±_xk¬—eo…øŠÌÔ”÷óôpñ‡)}?“xœAnƒ0E÷>Åìº)ÁvUU³lw9@d›1XÙCÚÜ¾pƒª›‘ÞèÏ×Jˆà*Ù(yì”´hzîº¦ikÛ
[7Jc¤SªÃž-:a àuï„2–½G)EîZÍ{Q9]£àm­¯é•Æ˜à=ð±f;Âù¾ÃÁìðîát°q~ƒJÉ+µi@Á[ÎÙ¶=þóœ%œã!ÄP,1‘6Â]ü„ùyƒí±Û•4y{Ó9c"ð4\ª
jZ¾‚=|ãKBˆazé4 ù0 E0¸{.[Á^ïRœá¢Ô±/î'‰–|*Ëas^ÍnZN>¬?ExÌXî£°“/}Î+æRð#»ú!`_Dç
ó<ýåuö .’«žxœ•ŽAnÃ E÷œb.`Å€EU”,³ì	`jdW·Êí‹¥V]wùžô¾~-D z;¨QŒdHJeQ“"ˆÂ`”&tÖHÃ>\¡\¡·B`ÔÑ{£úQ6öÖ!É©·>"J^<s{¶·É¥êòÓÁ}_fWr‚3þ:>ÿ¸ËW@ŽÛú
Rkk«…€N´mÖìšj¥wJu‚ëþÀ	ÎóÜpI¹Òò—V(Ù·Ü´œåÏ•:\Ò	öÁžSÜÊ
)ç@KS»ÊØ[zÏº-ÆÎ?Oÿ=Î¾Cvkšá€_xœÁ»ƒ0 Ðé˜‚°eËR“LBaýJŽãXÄd#FÈ,¼wO÷´]§û’´r	µÖlìj­¯œÁ(EÑªPh>úéûµdlš@³H…ÜY]]Š‡+
„ºíû.Ìã÷yåñ?žÙ"úáPxœË±ƒ0 ÀºLÁ’e¹I&q!ÛR™ã8ñÙˆ˜%IùÅ_ó5—ó0[Ý0Iâ`*Ü“VrÖBÍJÄíÇ®‡½ÏÕ6‰[s•Èò{ª(õŽ­c¨€9É(¯…²ŒÏs‚qï_„!Ž–xœ•ŽMjÃ0F÷:Å\ÀFŽdý„PB»Ì²'F±°-ENÉíë@K×]|‹÷àÁW3p°J’Å¸Ïcôê0˜ÞÜÙ.èƒê-G­Câ†…sçY¹ØQÔþà	µSÆHË$môÄAÅUOènu\|Œ˜*æ'Âe›',9Á‰~];ý¸óW –Öåº¾·ÆYí-4ÒJ)v»¤Z¹À…Sá}»Ó§éíð‚sÊ•ç¿ÜY©¤Ûs³ç"?nhNG(¼¬†Z0Í)_á~Cb!>Ó5shÖ›áyüïañÌj‘xœ•Mnƒ0F÷>Å\ düCUQ»Ì²'Û3ÅL¦Un_ZuÝå{Ò“¾¯,DàOxê:k°E«¹•i)6ž¢²1v^9'Q<p¡\@5N³f‹^+ŒB¨Ñ­³ÖbðÌæ`8*[éçÞzLóá¶.9Á%üºzøq×¯ê0O/ ´¶ÆÙ¶3PI+¥Øí”J¡n”J¯Ûz¸Ôþ€kÊ…Æ¿ÜYÙÈ#7{.òçDUÓÂ	ÂH˜·`¼okÄ°,4íß„xO™b53Wþyþïvñum¯–xœ•AnÃ  ï¼b?`bcpEQ{Ì±ý ¬—‚bC„q"ÿ¾DjÕs3ÚYi·d"è9
7"7JÚN’°ƒRiÕiã'	{Ò*v7™böJ¡­îÆN÷‚#ý ME…ÝˆÕd™ÙŠOÞ½	ÅÄÝÀu›o&Ç 'üuííÇ]ž¶˜–3)Õ U?Jh¸âœU»„R(Ã•Bñð¶­èát{Ak_p	±Ðü—kÅ;Þ×|¨9‹…œÃp±sBÀ4àL&nwÆ>}XánJÝ™iIZ¡x‚-FBZW“w y­AŠS(!ExúP‡k•¶É1—òb
Ô{žfoû_‘¦&9×Øýøß°oˆ…€›4xœuRM“š@¼ó+¦*GËuf`H%©d]tEtÕÛ Ã‡Ê‡ã ®¿>ì¦rKÞ­»^÷«zÝRp`šrÕ„†n¨ä:#(ã*‚*Aëš#¤¦Œ&Hi™àµÅ&Õ‰ÊL¬QSÕ5F-¦ˆ=K”RªACþwß Â,Ë0CF¦§¦Á3J±a¨1¥LM³8¥¸?ÆÖÉ¢`ÆKY »»$øqüOñ'x.kÉOOISýˆƒ¨C¡¡Ò³U)%`RÊ×.?êFðöôñœ÷]üYÞæ—2ÃÏ±Ý‰7‹É¬¼ÉÜŠÖ¡ûÅ+@·‹Ø–e;–µ´—ÓeæÊ	í™QppÕ„w³¬ôÕó¬—“H{#Wx«ÑrŸi0jˆ®€w×ÜI½ªÕ„ô¸qÖÆÛˆú˜&î¨Dì€Â‡«ù†á{YÑõÊ¨ã9¯‰‰é8yWÀ[~(¸X7A”Ý_¦›–·!|÷ßº™wòÕ¼À¯®ç;>ñ¶Û6o	ïEGŽsÙ8ù‡&X—›¬|,PPú#·9Ûu·˜‹û’®™YÛu·óã2Ùø¡7ñ»ÑÚÀY-VTX‘´æ^WMØqB‚½Çã}µí’r¿Rï¾fÈròetŸÅA}ŸŠó®˜íâqqAÕÿ!÷?‚KÐÃCs~Ž›‡»Ó§c¸ÍŽÇ5êÆb}(Š³á;ÙqŸîò›æ,Îé
#\þTÀÏÚ$½ÑW6î|üïÄŸ‹œƒ¶;€àçŽ_$øÖ÷d¢©À±èkuä#Á¯\ÈaS'—aR°:çŠR_+>lE_¶ï½²j®lJ!;v>«YÎ«ÏR_º¶m„ücÌÕoÇÞ—$xœ•‘ÁjÜ0†ïzŠy5’lÙr¥%—–Òºû¬5^‹µ%#·øí£õ¶·’ãüŒ>}¿Ä‰¤s¤[ÙÔ.%ÕhTOZIm”­êRŸ”Òm§ÄŒ‰Ci«ÖÖFc[•¶Õu‰¦+OV‘©{×(gm)u%IàÊCLð“B à;y¾<^îs1ìóW˜Æ¢‹ÓPÆ4F›Ò4pµ”"§“g¦ÏCšVÚ¿®æ”w Ñ¯¯>ñŠ#üÂ€gšnµ–užcbèSœàåùé(ÄoºRNî ÛÜ¯rðgðÝ “_³Å¸eæí ¹ÿPÅ?ªÀí\è=b¿'?\^óýO1pŠã˜Ë:d„…ÓÚñš¨ïØúò·ðöò-³}X˜p§ïwaÈÂ¸SŽ·Ü%%ê8[ŸÈ‡38¿Ì#nä
!ŽþÈbßNÛÃÇŸ\¼ÐwÃG‘4xœu’Io£@…ïüŠ–æh9@7Í"%£€;xÅÄ>ÒÐ,¶1Ð46ø×Mn3u(©ž¾ªC½Ç¥À ºa*'±NhœBé0ET‘£ÂéIeªŠPGŒ^8 jLLu5%F”àÄ€D	Ò£XŽQ´$1Ôô‡‡’–J©ª¦š¤c‚$Š©†…`„	Ñu-U)¢ŽçsZðX]çàõô^Èsx/.œž_âªüdŒ5A()`,©’$<Ô²àœ2àÜíx½TŒÖçá={èÈÖ²:k‹ŒŸe}8Þ¬œØzÎÂv›o] ¸µVl™¦51ÍµµžÅ²GýÉÆškùQY^ón¦™¸žgº´o?½BÉìŽL
g{P1ºÉGèC/u9rÂþî~9p®eŸ­ÕfÛPÜU˜‡ëiT•×þ~³·ËÓ‰âÉrÕyýe-€™æˆdåk÷JZ´AXØu91®ÞY’>bë}E]¼Þ¤<Ñz'm	l,Í±gÅryã¾ÀeJ`¡$Š%±ÅÅth6ëY·²Î&õ>õ‡Ó|Óv—y&:ª!N'éDt}·¶6oX]ï’™5Ä$Á¾þu>xP©R³ln”™Ì>eÇD%·ÓŽOŠ•—qÐ0¡^ÝËðK :sïj(¶xEý
aÔEh­èñ—Ï³½¡b5³×ý–—Ÿ,ÂDÍ6•>µïÙ› Þî‘öxÇ·7‹é¿|Ê2
êî|Œ6m9ø¥
HYU‚²¸Üªª(Å´bcùÅÓ‚köØ£W5e|·Å
‚ýä_ |à OàÍú7‘)xœ•‘OkÜ0Åïú=´¡ñf´kùO(¥°Pè¡§r–Ö#¯¨-Iö6ùômHs9xÒ¼ùÍSŽD€Êƒh”ÖmGr ƒ¶MgCfß·Ý¾n5â¡îÄ¢#ù(ê»ºoõiî%¶R55)êd§ÙÌØáÐ	½æsˆðÓùKðc†/óõ¸só·¤ç´úqw
óWJµ¨Zuèá3öˆ‚ÕÙåLïhî•äfÉÍb‰a¡˜ïá»Ë°DÇÐÉ=X¦Ñðr-ÄÁ¬ÕR|È`´™r€ÄÑäsiš¦pq~„°æeÍà<øm¦j
aòÛN |¸J0R®^ìán í®ÈU ü+k~øÊVøt>GžÀ«òÑºq:»àonaÓÓJ÷ÐÚ¶C¬D”â7E]*ÙàÒ›‘šÚ¸|†õºð`)ÿ¤óó
)0åÕ8	ÚÈƒË;&ŠÅ'-tÚ	ÄÖ‹Î§3gó‡›á5KNÈrº\ÊŒpñÏr°ÿùØå—=U°¶2¼ò›Ÿ)þØ‡™%xœ•‘ÏŽÔ0Æïy
ßfì(ÓMú!„¸q€<ÀÈIÝ6Ú&¥N«y{Vˆ›û³¿ŸÃ‰Œm‡¶§¾7O,ŽÚJ©ê¦U4`kZìHJÜ0Q`]gJÏSßLÓÐ(5ØQ7½1MßvRJ+3]¤Ö3/1ÁWŽá‹‡þWxvþÓ†~Ëa>Ûè?ÂEëNêîÒJx+)EyõŽ™þC<¨¶ˆ/E,n)Þ(ñý=|'w‚YÚ6Lw8ÞJ¦,»„»§ëL|}Õ]ZKððòF#pC€ÐrÆõ·Ž%‚Û HÙ…x!±ãš	âT˜ÝN^§Âáx)¥i#>|Îü¾Å‚1†Ã‚{]s‡Ž;K'iÎ¾Þ¼x(kÀ }®qnq]ÇV3ä:Æé…¸6¼Pü±kîÂãsuêþ‚.´ÇâìR‰|L.pv\ÎBüps ñ±˜4å¬ÿüñœË›(xœ‘KoÝ …÷üŠÙ¥U›+?°ªªê6‹®Ú}„a0(,7Ê¿ïà›tWµ»àœóS" 2ó:™aZ„ê…á\zá|’½óÜ«^áºÊe`‡L
p©¸Y†‘ËQNÝØñ0½tÓƒ’}×‰™ŠQv“µØ˜à‡/1Â£‡¯þ,/ÎÏÒç¶‹ŠþôÓDòy>u‚”tê])øÿâEðžÄ”ÏØ‘â©¼~ÇPRÔU!¸°»€`jPÅÅ %‚²¨žaæ«+pcì—uY”¥ÞÇ+f¸“ú*ƒÂ;i«¾_3j²ƒËÓ{Ò“ÅŠ›oÁ}gÅb3u¹´~sWÔ˜Œ(êÅ"§7ú©Ëg²&lïì’ý•žtÙùc½¼á?» [ÞíÚ»ÍX¢&lYN#‘9xrß±y·Õ„+a™&ûŸm¬»n&§Œ\ÎwÆ¡a›˜¼<éocÜzÂùé¶€úžÆ½_iÿ\$ûÅÜ š9xœ•SËnÛ0¼ë+öÖCkA²õ°£pšC‹=%·¢0øXŠ„)Ò )»Î×we'j}K/†;3šI) ÂrÍ[Éj©8J1!ÙˆB´uÁj¶*e»äÅº[uÙt	ØŠ·ë²U¢PHª¦kUµfª­º®j‹jY,K!šFelLÚ¸ßçù?Lb°aW”„¶ýÀŒÍ…>CY×mU6u×ÂÇ¢+ŠŒN‰“0À#š¤áË…†Í~9ŸÀÖ¸„7ò®­jXÉ3wp!¬¹a‘¹ñ “#-AQ*Râ€)œÁúb
£HcÀ,{Ö&BÀÁ1BÒSC7Â+&ûÝl²#“Ýõ¸Ó2äY¶€g=ëÀ;Hþ ^‘‚Deœ‰†N¥Çè>$:Š"Ž0ø€Dbnbf0?Œ&E´j6ñ(KP­Í"0É3pDG†FrfÏF8Mm¦@Í×ÃÑ¼ °Ø™®×ÜÞÙ3Œ%GAÞÚüÑÃ‰–ðSn‡4†ÙyÛ›vw’%Fžìgñ‹Â<ˆ»÷¼Îï;º÷¿¹Gúj¦ÛVñ¿ÓL¤V5|CkO¦‡&S.ñJyb½¯Á#Ámÿ
óá•ôˆÎaš\LÚãè‚s}ÁÿfzûcB¹àçÿÒ™Þ‘È+u¾ëwÈþ C0;4xœu’K“›:„÷ü
UÝE®É$º•¤~ 1ƒM˜‰wk^aýëcçVvÉÙõWÝgÓ­).¸Á	'Ø‚95±ÀXÄ©iˆQ&±D$ZÏÙ* ãŒAA2”1‘ÄÌ91ìS‹™–96 Ìäo¿%Å<Ë¹ :”&’È ’QK7MLs‹b„t.uSc“*»¬e¥JàNcV‚OÇ‡øÈâkÕ*YÌºæ¸g	BD7,ð-µ;m*¥ä ¼JùŸÚn}}ýZÜLü/±¢/Æª Os—^­·ûÀ‹œäûnù‹k@—ÑÍ\ÇqçŽ»ñ·¾ÇÍ|ç®IùÞœÑ\GøAàxt™'qõÜø‡º¨¶×ÒÞi°Ñ€mÌh½á½;¬à5\ˆ;Ø­h¸XuÇ€œ¢÷tÚôc›×Dõe$ÔQ7›yNáÜšfWj «ciß:,ôÖŽxhˆËË•·:CfÛ"J”šùQÜÜ×ïoñLòY÷m´¡ËøóóÍ×À´]šÞfp“Æ_'?ÈÁª"c|Ùª5,¸ŸD{EÛZI<úÕaïE³Y˜úömnÓ½ð‹•“j€%Íòì|
W[·@lXÏ©­ëmòÕu¾ô/ÇÒkãÅ‡jûæÊ“ÛÈØ-\~óän?pŒqÅCõšŸ.a“ê}j|©{;uFrÄé,Ï·%žÏ—oq¼&û"YÛíN§rÁu„ŽŸ5ðùåò*´ÿ;[F‹?7¦½È¡ Ÿêò4ÉQ0% ºËû¬Žò¹aã}2šÖžùÔ÷ý¦^0%Á(ëüI=buW ÕªÍêIHðñnPR 1ÉY[©ê&?ü{m”%xœ•ÍNÃ0„ï~Š½q!‘ë8qR!Ä‰}ÿl«©Å›Vðô8¥*8Àq×ã™o–fDØ8#Œ2J6¼ïjé¤t®2]]‹Jwj¯”ulÒ3‚´š;e+«ªîm/»F×Bº¦åF
Î-2½ÐgxÁxFO„‡Ã×\—ùÉÂ±´ñø›ºVUU7¼ƒ‚7œ³¼=z"ü¿IÓŠöjÂÂéˆÅ4gÍ–ÉiBH8öa"ã(‚v\Â6q&tà\÷IOþïÛ½‚äB@¢ì€Mp0€¾© N8kò1€O«pµºÿNc·÷”ašã~Æ”•ƒG0×ôv‚Ã“·X¬¿áÆ:é=²+mÊÑÏ=–‘ÀÆ\à‚åƒóöBéûïÖö¬ühÈrÃßèKÆÞü> +bßæ}û÷û³O3%ÉD—3xœu’O›:Å÷|
K]¢6€1U[CB˜ü™d2;clB0ƒdòé;Ó'½Õ{Wº‹stîÝüŽn9±Ì³]Ox0³dÙÈuÎ\LÂnŽ)¶yn4´åµ6Î)D¶…2j¹ÌfÌqlL3Š]áÀlL=A„ÿæ™ÃFŒçyfa!„ŸAiæ"}×õÈ·ÄíôY¶`ÎK}¤Sì~\?Å·ìSü.kÍoß˜¬~!¡ë`|µ<Ë2>ÜªÔš· .õ¬ËÀZ¶¼¹½ÿ.>tÙÿœM¡Ê|ý2‰“ØÄ&ñ*Ø?ï&}`P„‘  alÉö‰YÃeîÈŸ/îº‡m2A>K’€¼š5=Ô³S­è¶L“õsŒÈû‰š«ÎrwöÕßõÚaM¢õi¾R‹0ª<”aèoÒ{V[)ßÇ8EÓœïr‚ HßWAWŸL‹k9ÙÎží§T}ì¶j†ã1š×ñ2Voçùˆ>º-‘÷`ê>lu0ï¶6ÀøE\3³·–K-+Ö¹/røê”c/ÛÉCÁ7âYCs,Ùñ&¥¶É8$<¨úþp_@•¡ÿ6;u*/›ÃÉ]u´×wGG¥23•#æa¼…lï.hš§|CbîãC»b>5 Ýšjx[Lwu·éž‹×)ê'ãk{î÷›[Ò<Šân1I–¯^/N1Q¾PÒìñþ¼Þ™×íOü´=6þa6YEÿMÌXò¶à én7Ðò·Ž+¾¸¾D++•Uªi‹ñ¨¢ê£4†­Ãï`){´‘dDÊ+@`8ótª¬@+Ë\2-Û?|4ÿíœ+xœ¥RMÓ0½ûWŒÄ”|9é"Ñ¤Ý*Ðm 
âæ8“ÄÛ:ÎÚN¿~=)°+Ü˜ÓèÍÓÌ{3c5"0Ê‹ÐÂ*ôÇ£ŽòŠŠ b‚2b‘‹%é˜ÆÖ‚•Ì§®CæÜåÜóÜ›1+XTž_ŒYX1îû%a½m”†©’¢=Â{lÔ5jøP
i,ÓŸT‡­éŽ”®?‚Kiäû3öàµã9áJJa-þoŸº«¨áí5âÙ<]Áýü¾¦óÕäÛ6›ýÂ	wÎlÏ’Iìäé&;äËì!ßÏñaÖ=^òH¶ç4•Î~,7Ûäûj™ªãäK’MŸqrC£ë6ÜçY²6»(Îª]„™™/šü‡¬“ªZÐ‹;=mÜ¾//a¾þN¼îÝö–À-ëå’üÖ:[Mÿ¥”L×É{Xª‚UÃjx¬Ô(l¡7¢­.D©¸Uz ?3f À¥qÌ`	¬P½%rVÿP«¬ð8,÷€ÚÕPù«¼p|*ƒ7:½‚VÁ^µ×“˜¾ë”¶`„NãA¨ÞìÏ¤¿ÎzÒŒNP)-™}F° Ì!VH¼ÖWoæ(,o†L¹'4ð"¸¡ä'ðXÞîŸ#xœ‘Mn#!…÷œ¢.àýK·eEv²H4£¬r‚Šnd¬'“ÛO9iFšWðQï=¨¢lDÐ[ÝY×4S;ªZ7VC§dc‹ÖšzúÆÙQIqÁbMçTÓvØb/[é¦±™¬’ýh°–rxÓ¢”¯eIœÎ>&}…W_øMÕÊtœWô¡2i}€ºï•TãÔ(ØIÅn>eM¡~’/<^³Yàp¾A¥opô±Ð?öº›úºfûÀvßWÚ™à÷ÀmÀêsöqŠÖcŒ”3˜ßiË>ÅŽßÉY´RÙ>!¤.8“§û¬¹5žBÀ\@‡dÎà<›!9ñr%Ä“ÙßÓÙ—îñE§_:ð¶þ[}Z6ŸKº,ðB!|øg„\*Kß’7œ=<o~Õ´q93ç?X­,zós$»KÎíôçþ¾?¿¶M¾W—xœMŽÝJÄ0…ïós/-Iº“4²È*Þø^ø K~&Ûh›.ÝÙ·7AÃ0gàp¾²uŽQ)ÍÑYtNx4²×Þ{­HJÓ!;Û…r Vé ½òÁK$‰QúH^tŽ+Ãû^á.tÌ®e˜x¦ºÂk¢ûÍµÛyø
¾õótQ)äBH¸áU¬~§T
-ðB©ð°^ü ûÏÍ´n3‡”ñ^Ô1ÐpUãì>xLëF‚§7ˆ£=A™¡Ã:ëJÇ`‹…¸f_Òœ{O§L¡™clÜõö‡ùøcÿ³o¹`f–4xœu’M“š@„ïüŠ©ÊÑre†!µ›ZPDpATÜ(7A>ÑýõÑ­Ê-yoýT¿}éæŒR€	•¤Hƒq¤aŠSIUµˆ¤T"XÁ‰Ç¢¬Š”(´£5HQŠÄ‡*2‚	ÔHœNñÓH,(B‰HZü×/#™ YŠ”D¤S£$…±K2Ó”@«iŠ¤$BÔó¬a`Esž£ïH^‹§x‰Ÿâ=¯9-_HSýP–¤*’8cQEáA«œsÊ€•óeƒ×ºa´-ïï§G@ÿçíÔžºüÆÏ3LËö€où`g[žì·æ7€ †Î †®3]ß‡?Ï¶Æjšñú*1{ÐõdiÛºÑ™mªèÈ5røÆÝ4í¾@[ª½>ëÍå:¾¢¯—ñ¡ØêbÝæ·aÅ—«œùÄuý|hÅbílvA’;¨ÕsÝXÛ!“\ìÌ}@WË?Gáq;ÿ°Ñ	ý…äa_ð/<ƒš‹æÎs§ÍIþÑ#°0¾ÒŒM­pÛ®ÂÅÙìñLGýœo˜±ÛÜÑs%-ÕÖ/£Jì"\Œ&…äE. wrnˆgoKGÚÁm¥aæÑÐïüðû0[1Ó³ý)
M=ÆÇyµ¸ú*ƒÖðYd5:	àì¥ì8¯¼¢Ç¡k™c¨ìŽÎf½²—–ØÛäžvÞB]\¸Œ_6VèÜnVñ&€·u°{}wczó7&¸”(hû²Œ^zÚqð«*HYS*¯‡¦É«IÚ°1|Ñ&É¹ïø¸¯óxìè>nÒ1i*õµ¢ã–=¶÷,è ž’Fõ¸o;QFÿ d´—xœÍjÃ0„ïzŠ½%¥µ‘ÿ“PB¯9
}‚•¼r–d¬MBÞ¾ÛœJO¥'‰o4³³â•öÖ¸m=®qF;´ºÓº©û¶Áv@Ôcíº†Ô‚+E†jÀÖX½3C?Ú¦]×U¦·ˆh„!:ÛéÚµFá…Ïi…wo)Á)Àkx\KÊ‘®oS@?—6…#T]××2sWÁ³Þk­„ÏLÿ´«‰¸`š)ðz/æ4àcõR>^AfäKÁb& u…#ˆéä`òWŠ°´Ÿ!Ò„,èø,Üó&Ê¥YÄùÛ*æ$2²Èb 1+N`nžÏ°<žlŸJ ‰,)û¡7’–ßýTºp©Ô§Ÿ"Er®0÷Ã_¾C}÷™uëxœÅ;Â0 P¡LteeèÎbÇ‰“H\¥C>¶Ô¥B%SoQõ^0rNoyó6S_EFÂ±!ƒ2jjÅ«äLE½ÖŠà#%ÐR†G^eé£4fO›Gq>Z€l ŠV,ä$íf·÷Ë¿ñ	`žy™û¼Éþ½šUúq>½~0m(Â•xœKnÄ D÷œ¢÷ÑXØcF£(³Ì"«œ ÜÍÉ€…Û‰æö!ŸDÙ•žªJU\‰`Ð½2£”Z-ƒÓ
µZP™i@­ñÖ³ŠÍUÊY’ÆÍÁÏjrQ:?Ì¨‚&Ý£¦Þ+m¼p¿•
/1”Ï	.é[v1uHïO·äâÚ-%=B¯õÔÛ¹õÁƒ´RŠFSd¦ÆÅVcæ3\a)ygà•ø¨ø¾” ;7ÏMˆëºBºÓ/Ù¡ý„ýØ¶Æð+èé§¤â5Þ2á©„pò÷ó_Æ‰OÓvq[–+xœ•‘AoÜ …ïüŠQ®M,Ø5ÞuE½æS+õ0,HV¯•_ðfÓH½´7f˜÷½7Pf" £¶ƒÇ=)yØévã•à{Îíþ0Žƒ<öŠq¦XÀ#z)z­zJ{°È­ÔDÆŠá¸“\¢UÂ0\ŠK3¼ú¸¦/žÂvì|è]¾Ÿú©Ó)<ƒrãÀEßøÈ9«ÝàK¡ÿ‘ÆýMÎÎ³å^b™“Y4Avi}‹—@o¹`Y2”Û´&\›Œý"px©u‚€ñò¢ZŒ&·^qX`%ˆuÙFØfìuñ)‚[òzúÄ§¥|Ð!Ù«Ù±cì§£¯þ°úiEWiµhbAc¦êM_â€/™&¶>Bff¡æˆ0æ;¨›_UÕó¦X×|nÄÞ˜i›¨ûƒ¾¯ì¿’`†»'ÌóæHæ®^Ú4ß’o»TôKõpu:¦â|<µX&U\qŸÏ„h‡ñDUõÃŸ"™‡díƒzü—ßf¿ëêžxœO;nÄ í9Å\ÀØæã(Š¢m¶H—œ f†5ÚØX,.ööÁUÚ(åûê½Z˜gm'7ÓDÚ:¯ƒv³6VyiÑ†!(I#y»/¼U@g¸™%ÒÈ£µŠ'ã”D*x3û¨R’…?ê’|pª\Ž.ðz?ANðž¶Êß=æõ”ÖfÆÑÐI#¥hìšjåÆÅ'çB-½—´úò„³ÏoôâZò±C]µ;)þŠPó›Rz!¾ÒmcêrŒ]x¾üe…ø›Rk0›4xœu’K³šJ…çüŠ®ºCËðh éTr+"¢"JôxŽ3ú€ÍCÀ×ùõñäÖM&ÉžìZ«ö·'k€iš™ƒMŽXj!dq–- `ša™6t4Ã¶SÚ´õ (OMì=}2œš–©ë965¡ƒÓÌ„Âd)Ö¡þÿ½žé"±pR†l¡®	¤kº¦)¸Å¸ÁLÌ±’^†¼éÀBCÜKÏrðåô!>Ññ­¨!?±¦úè–e´!cÍÖ4åéVÅ0ˆÅ0»Pð¥n:ÑÊÇ·ãóÁ…þ;¶Ç¾8‚ñÇ¸~®À:Xƒïa°"Û]âÿô €[ï2—×#dãnæì–§/^â.P^šñvá>Câ†óêQVÔik««Ã‹_ÏõnÝ´ßß§RZûÈŽb;õ~O¬­Îv“Ú+ˆV¯hŽ"ò~¦êæ¦ÆßïÁv·jZ<WÀâ¬öÖ~&µÂRÝþª…dnÞ‡åû5œù9ëú€Ýïšº¡eái¿=žµC2ršžà7Ò(`E‹åÆÛ	ÞË!dn‚w1´¢ïçÓd».êr}Ø—¡xM_Î×0žl¢ò{šß£}U+ x¼¶•âpsŽä÷®U´¹W6;o½Hp:ª	ÏoeôX:þÉ’ya²YÜÈ7pªØIqBGáò¾D½Œù‰Ù'Zê‹7,ëŒ4Wšíx‰¢ËèPÇ›Ôß*2;›É}¿,_ðÕ&©ü—™¿šü91%ÝQ€ö"%èÄù"úücbd]SSþ¬ÕI¨½`MÍÓî1~î¡k¤ÝXý (õµc&‹Ï åüÙä"{€_øM€â“'^‘xœ•KJ1DçYÅÝ@?ò¹ùôCÄ¡àÐäsc‡×H^z÷u:*NAUQ£AäIav+&½¶V'm¥6¤(r©Ñ(Ç¥ÑÙ»ïT„äqu$üÌ¤€…Ö™€Ê­>£"Œ~J0ÿ1¶Öá…j¥±Á3•q#x¸ýðeûæ§Rí—ØŽGZÎ"‡…ÎÙt2ý·DJ%¹þ-aõó %îå
>%(iž(ù„;ÅV“ï'L½íûÜÙË}0öZÞ*¥¥å¼„óú÷qöŽ;lj“xœ…AnÃ E÷œbÐXc›DQ•vSUm7Í	Æ0Ø(ÆD@åö%I7]u7_zoôõs$‚®Q"oÊ![#êµ$ØJ­¹!”CÓ÷†1Ò’7JóÆ
nD«T£k25©NSm¹m¹åk\£’=ÃSžB„=ŽÞ¢óÅ¶©ÄÝø+OÏP·mWËòLÀŠ÷œ3¼w9S„ry‚×SÒl·P·°sK¦¹*àC\6,zWt–Ž¤ŸÀã6ðb—t8S¼a±ä‰àˆú€#u3%˜]ÊŒ}RN€Eq0$fö~¹5ÂÂç<˜ O¾¬‚Ù…¥bì›ÎŽ.dVÃu_n¹„ ï¶þ~VÎW†Î»Ñ£{´g{7.ÖÞ•ÿÆb?]s$›5xœ…RËnÛ0¼ó+
·€­HŽ$;AP¤½E›KÓX‘+‰0*IYõßw%+Hn½ÜÇìÌ™”¹jîÚc•×uWË2/	ë¢-ñPäåý½:Y²r	”REY¥lJ‰M¥ÚC‹y[I"Õõq_å¶M¡Ž©÷^°Óð-hÛPèà1røÔ­afé3UUå¾:°Ëy.¤·V§D~N=|£ìáñ4Y3OÚ%27^áû¼¼«÷¯.â@rÏx¢Vz T
n)É[w¶s.Bò0 <a·&„øÝë^@'è€å{‹IK4æA ëÏ¤`¼ƒÑi—¸Ã;NÁD ¼Û$pl|†ŽR_Lô[H‡6c>ŒŸKá®Q|UÇÝˆÞ³@¼…èÇ )fB\g^9#¥dhò¸™Ç ýÕ1Å=ÉÓF?7»¸™I—4g0Í+³0çÒU’1Ìñc2—-ë ?	{<ô>&÷‡mâÍç»žQ˜^NXÅogkÐšØÍ/´Zs0ùÑ(ðüìï‹uðbÊv¡2W§ –-æ2ï?Ëÿè9&Í;N$^Wu>Ø7WÆO¼Ö/:kšHíšË<k7yß-<Úåši›):?uõõ—‰Ý9n÷m»@þ÷©Å?v†$3xœu’Is›@…ïüŠ©ÊQå˜†%e§FH6Z‘%ÝfˆE€†Eúõ‘“Ê-éª>¼WÝßå=Ùp8slnÛ”A¬RÕæ'„BKs `&Ç#bbî˜J…^J€,ÇÖ1!‚B|_j«ªap!Åœ¨"Í¤Úß{5Se*3TZfÖÊ!A·5ËfDP™P·297`ÆS™ ¯½Ð<e_â;ù/i)yþž‹Ÿ "dBê‚ÕTUåî©”¼A*'-Oå¹áU~}9Þ-ùÏÛ±:^Ò#xøÏÂ,‚X‡Aänâ•ÿÛW€ú‹G=×õ^]wé-§´âòuåÍ¬ädÌ;½	{×e“0tgV½]Úë‰%î³¬êcÀ?D¯¬Ûô]8]Ö»Ìƒoñ-ß‹2›Æíp²>ºâ²Þ¾Ö,ç)Íi¡ÁDÂöÌúQ°ßnä`õùaV¤·¹Žü±Ø,ˆ«Û QTööò´ûËà˜}ÌŠ‡ÈØÛï
¨¥î•ë˜páïôÑ)Æm.¢ñ.˜óúí°éÞovLä±¾žÚÊ×aæ?ÍqLâf§j©€ë7ý´›I–ï¯jÛÃÔIýl:íVËÛ&³óÁ/òVnûù
Ö·ŽhÓ0Oß5oÓ) ç7iiÃIófj“p-–(©ê„m’ªVÎò1ÅLìÄæÌæXûmËÒ`çÕ4)Âg<Š”?™ùÑøß‰)¼9rPµy^·ü"Á7ÃF@4çdÉ½V,ðå^E)»‚ÿ "@‘Þ{äµâ -AÊ¨lr´.ïÌ0É98·²jå/ædœ–xœŽANÄ0ï~Å| +Oˆ½Î
!ŽHyÁØnk'Š&ˆý=+àˆCª¥Ò ä1 „”Yl²=bL|îG.ÙCŠ¸è£7›ìhJî<†¾DÏ±”Är_
Ös¤ÈÖõ>õFÖ^Ñt¢T½‚¯?|š¾ù¹6Å|JëòDìœçÁŽSg½µæþ.Uÿ‘„‡_‰i.Tê'-µÝƒô¶j£š»¤ûLÓ±H£’%Î õÐíPcÞê{CîÖRºx»ü½À|ÛŽo¹•4xœu“K“¢0…÷üŠTÍÒ¢%†@RÕ=ÕmE|ïx$€" _¿~tzf7swçÔwïæœÛTœU')„@‘H×°Òƒú
TˆCÈU)‘U*ýŠç\ð(ð‰J°NB‚Â‹0 W
ˆ8¥©þåq cEƒ”øÑ{º¦úrÔCâ=ød59¦=.ùm“ó´I€ÑÖaÞ/ñ¼Ägš7<{‹ÓO 1Ö DšŽ€¬hŠ"=ÝSÚ4¼VÚÛ ¼çEÅËìþ?´ÁÖâ2®ÓÈ¯1ÖÈsk¼‘å°åj1øíK@×ÚÆ“1×píðjmsaŒõä Î.¨]‹†£3ÓEèì–	½—ËÞ »/|MªUíö¨Y3WÜÖÂÞîp™p‹í­l¬²ÛÅ:³«^í;2Ý Ÿ¯sçr¼Œ´Ñ/XöÒ%óÇð+Qg!]?’È¦ñâ¤x[ÅdzèÔÄÝò”ïœÎhb°>«í-îøf$9»n|3‘@r˜_'Ë¤Ÿ­÷‚æÔ;lüªÛé×k<ÞäÁäk‡)ÅFæwWô¶:÷gÊµ¨nY9=?#O®IµÁ°6‡SÑ8Š²îÚ{ŒÉf‹­yx´M¨DS¢ºÓ"‰¯)$(IH9{Œ¶'	tLÍß»a²+æ«ãÅ¹§Ýó¸‹ÕUCíÝA¨ã}äÊÆˆí3 i»Nçõ½:ž©0ú}HàcSzké;³ÓÿwbÒ”W1e›e âç–×ø¡DUœÀ)Í¯E‘žº¢¨døF»"½ÉQÑ—Åó'ä4—}9+ŠR’¾ž•üƒ€o¼æÀ/ä0( o—#xœP±NÃ0Ýý·ì4‰Ý
!&¤L°#Ç¾$Vc;rœ´ý{œª¶»wï½»w1 BÉE»¥B0ÔBóº¢c;I«¦d•bX¶šjÞˆ’Œ2 ‹ YL\”²j×VBRS|ËkNU­´DÎ±÷ÞŒ;yOöZæÆ¾LÒN³ëråí3°ªªi]ï¶(£”$Ôšñÿb^Vì&&Æ«8ìáÕœá¼ë `œƒ%'ßB‡ñs~Ä/„~Ÿ=©¸»‡iV
QO`Ä¡5aŠÅGN¯˜ƒVšae•áðüM¸W,í†E3ÂÉ8¡A˜G-#&Ÿ¬ CHº²ròÑ›	FUŸ´Ö/8A–L²4F6®"+YÒekwË× IaoÖ—õ˜_â·ø#êœwÓ9Ôß¶›æ²ÿûåä›¿½Ù– xœP¹NÄ0íýSreco6‰!!*èW>Æ‰…cG±Ãîþ=k*¨hFoFïÐ›´ BK9Õ¼£›m])Ý*YéN(ÅTÓniS1Ýp†œÌbAŸÀ A-ßñºåŠWJ¡Q²“HeË«°ëXµãŒˆ5aWë!Àó·Ó7ÜØé>Š)®~Ø¨0Ý«ë†6MË;¸¦ŒRr¾N6%ü—˜Ø ’ëáÑA‡U:,Lîi=p!Ì˜öóf\Ò‰‡6ÁADXpKB}W³¨°::él¥DDòÓe?¢;ƒ‹K0Âº˜9iD˜¬ÖsdÞrü†÷Ñž	1®ø+ä	^ÐÃÚôqÖøž Œ)Í±/ËÁ¦q•¹sé¬_…ÿœ°Ì£PÎ–óê\¹k!ovð¨‹`L!Oýß$_šªéž9xœ“akÛ0†¿ëW±&©åXq’u£)6²²ä{¥s-bËž¤¤t¿~§¸%ÛÊ Ìþâ;ÝûÞs>;8D(u>Kç*/¸N'ó©–™šeiÆ3‰5O2=Ígó´¬“m€‚2³gÏç¢|¢4G&3Å¹ä:/J‘æ²àLBÕ:Ø˜¦µ°Q•3j®¼~¾öcŸ€!²”§ÓFIž$LµMcB ú¯hB7RÁÕ>ã"×Æ¬ÇTØËEÆž’|JrfŽTmðÅ*‡Ò#xó¡-áÛz»¼+ôT$ÿ£tF5’ÒÇÄ[ß×ß×ïÖ›ÝÝrûyu»iuÌ?¸h!´P<.ó¶sÄT¾ë†/„C¼ñý=BkƒìvÇ¶2øÇE‡»ÈIÂKRXŠÞ`ì;þ8‡š:ôÔ|tö‹lTk}´/UI]ß–‚Ç—T=}¢7!‹ç~/†_-onW»Ó•¡EÐ	íjõAcï!THsØC]¢”´zêØ+ƒ¡ ‘{$‘˜ƒûƒÚÒpÑŸ?Íù…¬‰óµ(„A0ÿ‡…%ÕÕgù8cÛJ†'‰T!àâdrAäç§ Rñ·1Û˜{‹zÔ–%y.^õO°_qê$“3xœu“Is›@…ïüŠ©ÊÑ{–*;e@bZ@–œÛÌhÃ*³¡_9©Ü’¾½¯^÷å½î[Î#„Siº©2Õä”*Ð0dœÎ!ÇQ$›T“.¤åu]½dRùD)e›&K‘J5Ê°.|bý*Ör¢\A©A…šXOS¨*šÁLYƒº1"ªú¬iAÈEŸ{èXž‹/ñH¿Ä«¨{^>²¦údŒ±‚¡TðjJwZ‰¾ç-ðDï<×MË/åôz¾èÖÎ—s'Îàû×Øs/ˆÀÆÛ€8ð"+Ùïæ¿¹$0v6³-Ëv,kko¬_ígg‡z–«ëO¥FË:ùA`ÍßnS¼5‘\…“&7^`FÐ(Ï!®<ÑÓ¬€aM²µïëÒñ­-rš>yoÛkj_dKlê#ü<Ô«÷–~†>ãè‚ )ËD­žÜÝ¼[–‡ÐòŸU™kK¬]&â&™PqPç‡ÌÑ½éPÎåÉ·ÌÑŒÝu°—@•ïK†ö.­g¾2UD­fáê´åÕ>ó,+–­«)|ÈG&lŒ†ïèµÞ°•X¢}!Ý[x¬ÖÆô¡GÎb7iÝ¤ù¸E¤8éÒ~Z.ÖÇÄÆ8÷½(oWWÇþôoQœ<0t‘@FnICnÐvË¤§eW÷W³ö¢Ñ´NÎ"LŒ+ÿs»öWÂ^Pþ¾EÝø^óX>æm÷"—ñéOfóhöïÄ¤oÏ\†²-ÿx×ƒoªAÚ6 U9ôÍSEº{c$ÉWp!]'ê3pÜ¥åÅ ©AŸqP‘âþ ÷n‘úJQóÇ_ßFÿ‘#xœ‘ËNì0†÷y
‹ 1£Þ’¶!l¸,F<€Ó8C4M2J3#æíq,XéìÛÿovND0 ’î+Õöª+µ*­®‹®+¥E¢‚¤Âº«Ê^+±ÇD!C×6©z]­õ@²ï[5ØU…Rõ Û¥òGLpÌ	ž9z—¦ƒ›‘ßw;JÆuLÛ[(¥”µ,šNÂªh‹BÑ{—3ý—X<ºOØã4¹°…‡Ççû§Ä ùƒÀãŽyÙƒÑZñ°ô‚J6z0JWuSÃÅÙìñ£elôÄÃœ]²Ïxë>É,~ûõH^8»|˜r€Wê	lŠ~	S8ºƒçå]Aˆ¸œ;þ)¦˜ûsÍa8GJÉ:çÌ†O6»>½¾ÃËÌÃ²ŽWb¢!;Uë–Þ¾%³üw¬‰,ÄPF7NÌ¾qÛ@f­]éÓõ¿—-¾ ß^µý™xœŒK‚0 ÷=E/ y¯ÐŸ1Æ¸u§'x-¯@”b ,¼½rãr&™)³lŒµ‚CRdÒ­çFy gHéd”W­ë¬añ¢…s‘Uâä%Gè )¯c4ˆ˜:gÛèˆ”´•a^ä•Ç2ÈË¶ÆA;Ôa‡ó˜?ë8O'‰Zë¦ñà[Y_;¥ðŸ¹¸qÏYvs\…¸}æ®šSªÂûðËP| -ÔVs‘xœËjÃ0E÷úŠÙeÑÚèiY!”Ðm—þYÇ"–dd94_¥Ð}Ww.œsKF†h©´=rÉPi˜U£³Š±ÑH!4“°½¦d³cQWXöj®Á·Œ«I#(¸Ã‰ÏNõ5ÕÄeIR„Á-Ù»;f¸ìûß}ÝÛ	?€)%–ÊtðF9¥Ä¥|)•ÿB_ø<ª—û«´ã«\},¸¶üÕ•†jíªNâ#`ãV†ÙCyné2†ôðñeA˜ŽmõÎ„SÝu"dð·ˆS“æ¹Ÿç½M~  'e?•xœ•ÍNÃ0„ïyŠUÏ´²“Æv*„ ©*R©8úg·1¤vä8ü¼=	ôà¸³úff7'DT×\;A†iA‚­%wB˜J i¤¬IIi/z0dPF3IJËÊHNÜðJªº”¥2¢Š[YÖD0…sÜ£Ï-ÜŽƒmáòmVf®}ÈØ­l<]¯§¬ä¬%Œ“zò9ãÿðŠŸñbï˜2,ún<ú°=æ1ØÞížoÀ‡!£v	¶»ÇÃáeQ‡Ö~°~ã­•uBÙé®Ò®K#Y£»’[&!H’Äšf5ã)†#´ØõSÅtÒÙÇ “¯A?mú4wv0Dx‡.Î²†ÁŸúÏécAþ|žlŸü1 [F¢¥ùÚüåÅ7ë·”qž5xœuRËr£H¼ó±G…G@Ó<"f6$=°$û¤hèjAÈ_?x{Û­[feæ¡²:€˜Œ™	%XSeá„¦1¦cBU3QB™nI5Pu,¬aF°lÊ*œ«`0PË jªÊ*å:ý_½©ƒe0=UU9¶UÕ„1ž(4*sÕ 
åŠI$ÚwÙM ä]†}›fègñ~$_àw^uPþHo×¿‘BˆfY˜z’uY–&öšwäç]Ð'èguP—ß—) OþÇv©/m~AO_³ðü0B[‹âÐì×ÃÞû‡—„†v‘.l{áØön±[¦Bñ…³_¬ŒìCÛÜ±ÛfAÚßV}töPâ¥£šŒTåµ¨$tzgx½l*Qµ§¿³ƒÀR‚Ycp›IWmÆÑua5ÖÃgÏµú6"Ÿ²ã½Î‚ãó±8H¨Ñ‹ùç]ó§czoiúÑ¸ë¸qÖ~ÿþfÎæd7»ÄÇF)çVÒÍ<Ç%G÷ñVÏõT4òÖ§(¬oGox±²V?C–qeõ9oÐw¸Û ééiu¬ý1¾Vå4×åþ’K(}<ÆÁÏ¹“lDWý#fm>ÃÆ7õ[pe[Ö›µXà*9Ìú¥(àeû²Šb”PÙÜîKwõª5áÂ§ÇUC¶Ê³ò¡2ÇƒÏêM”4Ë,_¢6rÛŠnÞ*Ùã“î/¿$ô«æ`Hßy‘ûßIk@u_–H@ÓCÛ¡¿´©w.nWô ŸÍ¨˜÷-œ3Ïµ žç¼:ç,íDy¾õ]Ýw’d—}´hÒ!yDß2Ä§/\ÒüJKt§å”nåìéË¾Ý ·ñ š4xœ•’AÓ0„ïþï€ÄmÖ©'©¢Àj»¢­•ÄÍ‰ŸKŽ³ØNiùõ8t»­8OÎxbæ{Á!Wyž
ÉUMWœfE*9¯G¬‹º(rUE]¦äQ8´x^V´be–
N+A‹ªâ²n*–Wªä
Å1ª9Ch{sƒ{a%:X
§-¼þeE+ÜÛÃ(î'E—¸á¤yžUUZ¥^QF)iú®Ó!àÿ^1-º‚<xº‡G‡JïAÅ8Âhq;aôÐ+ÐrÒg ÂãÙôÝÅÃvè„8RÔÿ2BÓFBqcÕàµÝ^&Û„¼ »ëÎök‰»ëQ¡dýeuw2Ö¨ÕÞ÷6¸Þt3²ÓŽk§Y&‰÷'ñ,YxvmØâÃúýÈiZfSÒ]ÍW›‡õ-¬¾].ÓÏ|q³¸ŸÐ¸Qîl»½_Ïówìq¢~K¢1NÅé]:ÍYIšN7çtŒt2øÓwNÌ1é¦)I’„,ÐÅ^ŽúŸ¦Aû±v‰î„ðÇ ŒÆ® ŽuÚ>´±CðmÿÓChEHÈ/b#ð‘Dc…'€­Ø] N`‰á¥‡!rÿ<ªäü)Á™ÿè;"M"|½µ('½R“ú0û×É#¿…1/’5xœu‘Ks›0F÷ü
Ít™q,Þ¨“t
66ø_à×„8 °8Î¯¯“¶»öî¾3çÞ»ø'$š‰	SYSUC·R‚ÔX'*4,•ZDWd›‰e©‰9a<‘jirl@C!#M0RuD-“˜äAõ¿>Ô,œ¶¨ª`My¼B‘SEÆÐ@†AMŠ
’âNä5sRˆ8]‹sðòöž“Ïð³`‚”Ï¸®~ Y×5„d` ¥­
!ÓBx]^XÍISÞf]òŸµ¬ÉÚ"ƒÏqÜ©€õtvþ4°Ãhë~q	HàÖ:Ø±mgdÛg3Ã²v´uæf~ÑV½Êý›m§žïÛ®·¥SwdºðF‚-m†tä\p¿»C%ŸOMí¯žT{ÈìëF+ûèýGaµÜ–ÁßˆìÃ&ÑÔi…÷Þ¢pãÍ2’%ZÚú.-?ÛÆŽëŠz¡ðÕç‡#Ï«åÂ¸¸oçŸï¶Õò^›9¸˜e$ê™ïKÀe¬aûÓe8vÂØîÊ	™šxeôÞ1ÝÔ\9¬Rü´žïïJúVoÆXæ;Ô¡6ˆ'½ÚÃðpdùÇJÏÑ¾÷øñvÍSõNßL>zù¿g›iþtñ­öÐ†]NîæÆçÝyÝJ ôBoj’ÑpW7urœÝ,ºš2¾ÈúPô(H3ÓèK'9ðv9«†Ïh”½Jàu‘òPúÝ™ŒÿÝ˜´$<# éÊpríH+À7Í´ åuª‚Ýêº¨†´æƒ^~FCNDÇÙ€¬ËAÁZAâtPÓaµwIjÊ.+Øw°ýë{{þˆ ¦ÀVaxúþPxœ•PKK1¾çWÌ]»ì+ÍnQ¤‡BmA‹â1Én IÊ&éâ¿7-zð$žf¾×|qB‰M'ë%£š2…\6Š5KÖQª¤hX-h©+lZFN|B¡îh£ûR²Š"ïtË°¯ÛF,¥P•T´o«²í±„§8ú	ž›½‡…;{]c·!¹¡ÞÞCEiÛw¬d=Ü”}Y’|µ&Fü™v]&W™LNÇ4·‚Œir°ÞìÞ·`\ˆÈxëÝþpø ä}DsÎ3ÄÉ¸tNÌ!$qÉÀÀùg~4êæÜw0ý’žG#Gb‘»m®HàÓl®+ðíwQJDŸQÊHâÈ#dÁÚfÿtØ—¬ÈÏÏ<@8¡4Ú *y5ƒCµðZ/ÄçêïnÈB)›öžxœMMK1†ïùs—-ùØÍîJ‘jK¡Z‹ xù˜t£m"ijÛo£"Ó¼ïÃ<9!B§Z¥´T¬m(JÔ†ÝiÁiÛÔF1‰½e†¡&Ÿ*aÈ`¹³Žq];i±¦¢¦ídïxm„à¶n—}ã,Qû<Ä÷è\Â,=—4*ëä`ÍÈÄí°¦©{ÚÎàŠž‡œ¯[Ÿ3&x@Ÿ¸ÛïÌ ãFº„‰7uFyÓAEå¹Næþså7û„#$TèqzË¸†'µFˆžWœR˜á—7¯«—G¬¦ËÅ”ò"˜˜š3•ÌcÚª¼ƒCy&øS¡PgôŸº#äÙ¯Ú*:WéÓõúŸ÷{ñÞ\z“oô-vq•4xœuRI“š@½ó+º*GkÆnè:•¤¸3*0êd.)ºiYZYDýõÑ¤rK¾Û[¾wy¯k„ &060‰ÍˆÇH'±¡Æ4Rc¡!n&$HÄTå5¢î Ç‘"q—i¢1(b
Ê"DtÌÒ˜Iñ_¿ÊV9æ&fi”r©cAòˆ™	T™Žt%ê»L6`)ò.vßò|)à™=À÷¼îDùÌeõ B0…Ô¤x‚:„Ê­ò®˜çÝ¢gàK-q,¯ßÓ{@Ïþó–Ó6OÁÓãìéÜ]Í|Bw¾²Þ¶Áô7¯ ­ÍmË²ËòmßãMÚÌœÀ^Ù¯ÏZã–/\×²w¦?éâððÆ'.ú€íB·h€½Ó¹KÇ+²Êõ”–s{_¿šjm…k|¨ÕõI-äüÒÎb,ƒPB£!_þp¹=&yé*À/f„iÖ/MÝ¹ú£Ú$IŠJ¢ï‹ÊÃ¬@ïÁGúZ#f%/Ršç&Ùo0ñL²CLùa‹¬v·'›)•'>3ëÝgžÏ]ÏúÁÃƒGHß¸¤_™žSHvyÉ®õ,\!“QëÝtv›BênGr=É°›.)¢š¾8çÊnëp:ñ¦oûø<ÌŠàRí%Èâ˜Á6rÝGß®ßúÞl5h_E§^ö»`gÚût4Økúñbl‡z|}q¨·h7Ym²Ú½Þ‚x?—3ÿ«¾®>x¢üélºšü»1åU4© Ç¾,A#N½h;ð	HY*¯)ójœÈæéŒžé8É/?“øg)¢BQês%>ƒY~I^
‹–7ù±»oó¡ƒ¼÷!Šªk®O¥Lˆž!xœ‘=oÜ0†wý
"k“ƒ?¤“EL2µ{ KT,Ä}äpÿ>ôÈÚn$ÁçåK²fDè•5Néy˜ÏîqðÊŒ“Ô³>ŸÇNk;iï=ÚIì&cª0Ljôsgu¯ÐL^jœ9.g»¸Þ:5Ë¾“3ÊE˜VWÊðÒ…ž#üŒ·ðâïbbiéíd)þbjjÔý?º¹ëWc¨ÿ–“’j:àža‘>">ÂÓFÁ€w°¡yG'Äµº·z>l‹Ía¯lq5UXØt·œÒv…ËÊÅº†‡-“œà°4k±ß6îp”ð–Vsf9²¶åáÀbpŽÇ‘¿e{&ëZÆ“ÍÝT»»‚ow´ó@ãõ#FÊW†oj …XÇT¸ XÃ}Î‰›ã×/6³àÆ›xÊžüÊ"<íOxKèÈû‡åúøïÃŠO‚E´k’!xœÁNÃ0†ïy
ß¸°©íš4C!®Ü/à&NH”¤Œ½=îwÄ)úcûÿ?»f"@ÕªNwÃ5ŽQÇFâ ò08=ÊÁvh]¯ñ™b¥ŽFr›FÕÓÕR/•t²ïzeL× ±Úv×:§ÏäëOk13Ü¿ob?nâÑÇJaoÒò ­”½î¥T
vjÁ¿‹¯•þ9.^(Ç ‘ÎP*Ž¥ÿ¢"ÄëL™n
ŒD7\+P|4u&X*TœX`Þú.`²¯Þ`Ø¬EIA11ûTn¡$8Ó7óääãÄæ[zŠ|æ	íe§ßÆÛ|1ñ¶rÚF1]Ça]3±/›† h-—·‡Rd†ÅG^ÐúÉ3lx¦O_¸ºâä§Hv—œÛ—»¿\R|Rç®pDxœSËrÛ0¼ó+0½´‡Ø±^¶åñtœg§¯K’K	Yl%RCRNÕ¯/(;išé¡'4vØ…ƒ#‚u¹,ê•¢R*['*Ë³uZÊu±Êò•Ê%Ê<Ãu¢GG&@‰ÉªJªjaU.’¤Ìêr™Öe^¨ªH–U"‹Z¥™8„Æ:ø„y¸ïÐØ~÷ñ3]¤Énß¡nçÒvï!)Š|gI’Ãl±Z,¿v:rð™thàrð²íXÌ«Xì´	ô7|¹*¾d¸0‡Žf²Õ¸£±°¶ŸY3«Ysp‘UZcH†¶­AeBƒP)Rà{’[Ž0tqûš7º¹ørwsqýí‰ N¬^`ë-ÈÍžÁ+jð c<FÞûžŒ]‚Ò^Zžo„Öî#[@m˜Å Kñë4‰ö`lxÒÂªeÖq"÷£Ô³7Öè­søXƒ‚Œ´;ä<ËDò„ÍÛÀ“=QÆQí£Ø•¶Ä½ïú ‚}Þ‘¿¢Ÿ¹4gZÑhbà“‰¡%<w¶E-Ù—Á¼ÔšqŠeÚâU4¬³jÜzÚ³wLcÌ‡Ñ÷1–ZKn<ãÖŽhFÄx:Šnó,·W€ÎáiíÕkËÅÑ•ÂÉ¾cç#-?h¯£ÝðËmöSkI4ëÄ«(þ8xR<Ý­þI~	–iJJÒD­àÝ›×¶ùÇa±¿Ïw…5NŠïçlãùtÒ5VNKÿFÜë½!5³u=«ÆÍüÇÄÕÕnF–¼$×|”
¶ÄuE;nÑU÷§í+ÃµdÝž`{,çÇrg(ð	›=²r¶“xœ•Ž]JÄ0Fß³Š»–üšDDdA_ÆÜ&7“`¦ÚTt÷NÑèãùà|œ¾4ÜIijã(øh&©I¢5Á[šœŽ6èàÐ³.4w°AÙÈóhKBµ*H¢2˜RRVS$†[Ïm*=Ãa[C†»÷Æi‡‡2wªchç{Æh'•´~Ã9»®çÒ;ýKWBÿêì©|ÂëñùÒµ`?Ã9¥D¡¯PÛ‰±·\VXsÛj„‰ g¬õGúÀºÑÈØ±œfŠCKi˜¾nÿ’Â¾J+jœ3xœuRÉ’›0¼óªÊÙ1±UÍ¤ÆïÜŒm6!yáëã™TnÉ»u¿~}xÝŒPŽp–hXÅÈ²LC©ªaY’ÕD"9’sbHZ®¡Å”ÔHº"ç†˜jP!XÏ‘öÚ#9QÓ$ƒi¦ŠÈ (ù«W]Q N "‰†¬!ÑHu¬c¤Ã—¯œÊ‰¬"¨š€9;5ÌHÉNÀâ}zo—/ð3ùeÍÈõgÚT¿ T¤KPÔ%0UQ^lU2F(pKæñ¼Õ%íõùQ¼xòŸ³¢-ú² £¯±×ÁÒ]‚ï†æv·v¾yàÞ[©ešÖÄ4WÖê3¥³1ž¬­™v:£ÅM¦þÝ43Ï÷MKÝ0ìË‰Õ’4LÎæme\sø¹r‡Ç¸ã4ÂûøòäØî^»éMp¯ñà›3¸Ì—"^!Ñ±Ò'¯oÏ5ÅójWî] òyrçl‹»hžob«€:zw¦ÜyøÞø0>¹±õ¹Á»Mˆ.‹ppíÝÄŒêXÅäÆj¨©çÖ,Øogðìç§YÐ”6ó*+Ÿ;µí!sÛç9	±f‘îL;v•9Ó|¸,™XÈ[Sì»ÙòXl­niïK‡<â¼âÈžá5.w‹†mW§¥§ÆB‚0œ‹{ˆ›ho‡ýØ€³Ë0¬KÔVT#v“Bsu©ýÏš›…M™Ý¯KÂÈCRú'Ÿ.u_àZÀ{çë‰ð'3'´ÿ˜ZÐòëPÒqÒ3ði*ÈiSËéU«J:º6Å(/‚0- á¬åôå@@þjã·¼$€â;HÊÓ'ÈxÕþ9mòžxœ¥Ž]J1„ßsŠ¾À,™I'™È">‰à£'ÈOg'ìN2Ät=½ƒ^@ð¥à«‚ªâN˜Ñ§`ý,ƒv)%‹ÑX¯&eÂDU&7ÙlHl¾Se˜f­²“ÑŽšüœÑ9ª`bHcLÚá(Ñáw^Z‡Wª•x*|%8_ù´üðS©L·Slë#ŒZ£5hÂ ”âp×ÂLÿ*ÏåÚÎÛÎð^¾òqŠz?ôÖ.Ðý„R}¿CÚ×Mˆ·r©”†–óî_ßcŠl×xœWïSÛFý®¿b¿•ÌÄÔ6ØO§S~„„h&nÒi¿0gie_-ÝiîNç¯ïÛ“lŒ&3`líîí¾·ûn3ôŽGýƒQ0ê†}žòQoÚq~<ôÔ@F#Õí’J96ðIšæÇ™â.÷¦‡Ó!÷û©êŽŽzÝáQz4ô9SÃn¢ê0·Ž>°s:­}:§_òf*o~Ó&p±ŸÚòWê‡£ÁpÔ;¦NwØí&ø´Ô!ðº'Ÿ¸`å™îØymõö’ä9;&TAÞ–Lº¬¬
%åúž=Ul2mf¤ÈµÞAÍ^Ã–Œ]’g.=)ŸÌ¬ÍðJÊ¬(X±¡0çµÏ¾£Ì‚V¶&5SÚˆ#•5LË¹ýÉSjMpzZŽæÚ“³µÉöiÄBagÉ”»D°S`né
u+K{ýWã„âÏ…¾G˜²Ò…
RàRPz{vÖ9Ú28»¸:y;!§J˜Ir6WˆdVŠ>ÔÅB9£iï`ÔÜ•ÜI=Dž†¯ùðð6Pª|xâRj¶S `êŠrüïë)H¼ÕvïÕkUè™Áß"‚WªÔYŸ$çø¿C¡½Þ&©e–Ž	y›SÆw:eœ_©©.tXQ:çtÖ¶O2”eZ2WÅÚI2ºói‡;‚òŽSkYH›ÜlˆïƒS©ÄÚ5Ÿq Ìé;ôSP¡^ËR™l×N0qhÏuY}Ã¾‰éØë¯üœÍç*Sá)=œ·8ªR-ÎÎ=ã™ë‚ºâEÛ£c7 ÐÍÉÍyÌ^û Sÿ$s”˜ÚB-ætþùò…jwXzTML,IÞ#OO“R¾½ÞÝš§\XUB†“b’÷œçŽWt¥ÙlwùÍ—kîœ]]ÒŸçgô±¨g˜ÑŽ4¶Iˆo5Ðäæè°»Nðò|¿#îUãÞ¶çN{ÑÙ€J?¢€o†t…Çç@k;X“‹fÍCmÚ9#à:¹98ìB"¶rïhSæŒ;aÛð’2›Ö%Ô[mõñ'†‰<ñ[’Q»@©ùŠSkhè®Ë“`Â~{—zWÖë`Ýª5xû­täôöÜiaÓÅö¯½šñœŽêaÔÿ(,˜ö7 HJ’0‡ªØœ¾hjÀ­‚JŒãÈXg4¸bë½žbTn>_]á]$}à8Ç¯IÙ?g\r‰ª	C¸– ÏiÎÇˆsÐèì  r¡PÎØ0ø|ÓÇ×Ò5 Z‡Ûº¶Ô4¢TUáH¼4½º+0ß¶‡1t€ãÐÀµÿJµÎ.ýâÑE!c™](e¶¦ƒ´÷õ–‰ k+¡]ð+âZTs5eèäµEÖÖ‘ÓÉ9“¢½yä«£’xIë^—Û" 
ïì98Iˆl›h[½Œfä¦©}cÔ´ö
lzí0O[-'Ns×5^0¸ßš"ª-¼:=¹ˆÆ‚f{èC3¤0pÇ<0‘\k³´–.¥ŠÁ¦Œ\MôtŒµ3 g†ò‘;‡û9Gã+‡3ß{s]øïsE*QF1
¥½ã[éqDÀÊ!AxÝ˜ªÍõSÏ´OaïhAJ±¯Ä1ª&^ðÂfc›qêÈ6ð¿cŽßy 4X‰ö”Ç-Q¨JYÑÖš‚N	Å’#Æ4iÂ©å-b+Œ¶pþon6!=î:s»ì8ž=—ëæÙÃ9qŸ²u¨êÐi¢´~Ú¦¡ÇQX+‰ÎEDn+'£„•GŽkIÌa“ðg,®'Ÿ>üu;¹üû¨ŽËæ(–mÍþü±¹‘1@sï½zÓûCT¤Æ"ÁAÁî\´ãÌ«Í=‰í”³2<o¾y¼fHÀ¢Ë+åúˆ Iôðš	fñé}S­ðÕÂ`Ï·+ìÌ2P®ÝÝ zŒ£Xñ*êFPp`T¢Î•ã H£e’LÔLÓ[§Ë)»Ùn¸q›ÊåÏ¿ËhÙFF®ìÕl³œulžw¦«ñ÷|iIþ­’kžžxœŽK
Â0 ÷9E.`yù¾DÄ­;o—¼Ú¢M¤¦÷·½‚Ë˜¾2K&`0l¥à‘”C!KÌ1©˜½Ñ,>iåÚ%K‰X¤MAm=BP°@Ð>Ù1&2Œ"m}j«¼óÜ'yÛ¾y’ç×pkç÷Ûr‘Ê9‹Î»`ä	<€Øí2÷ÎæâÁO®²´¼-ûsês«âaÞHß”5xœuRÉŽ›@¼ó-å’Èš1MÓD3QhãÛc/òraºYÌóõ±g¤œ’wy[U]ªDÅ9àÞ™ Œ™Gzö¼³‡1ç‡D‘±çC Â4—¸RáV<ÀW\î»Ø‡æò™{B*Ò=bß@º|FLåñª"+Ìs9ÑtM†šjP!èžÊ\Me†î«®Ï ‘ÜF„yf<! Mí…à%~,ÏçÇò;ÊOž½<ý Æª†!ð$Y–î×4‚W`‰Is/Y^ñ"¹ýîÍù?´ ê( O¢Ã±½ «ñ
lìñÂÜîÖÃÏ»$p­©GM“LÓ¡ÎÔ+Ã¬éL/ê²E•}5M6±ms£ÓÑ³‹hX»[­~@GM¨¾IÙ…ëëlìÆ·#›¶7aÈôÎQ½1i¿Å“„-7:Uj'ãp·°˜m&K	äÝ¢srZé.¶Ó½b¥CoÙšõÞŽz‚x72Þt;j³î‚‚åUƒYž“–XíÂE‚³r8¨‰oo×á’hû­‘Ì]ìÒ¢åÁh’†;lK·(¥“’ü¹2½aJ`ýV›“oÚr¼´2Ó
¢–PKÛ“m¹‰Žž9MÞtö<0˜2-ð"æfç·û‘Ó]¡ÚíìH¡Þ[íyÚÛÜFmèLæÃíuÉôxwƒ‘6èçßx¯×®qzS;ûãjÈ;Ògò«^{VK_žÖ¿“ÞxpP4I*^6¼à›ªaàWy
Ò(»æy”öý¼z‚Ïz¿)˜+ø»¸ÃÞ‹Û=†Ù{Ë«:ºw‘¿#Iz|êŸ`÷‰EuÏ"ù×ðý¸ë€/úW	–%xœ‘ËnÛ0E÷üŠiV
[´¨‡eA4‹,²IÛàch‘HAÙÉßgd×û¢âârîðÌfD°Rk”»vïjÙî÷¾j•)}kue;«ŒôFîšÆ ˜ôŒ‘@™½QíZU—\[:ßV»¦”µo*e½5•kd«•Ðõi†—Ï)ÁóãEnÃ¸uxú~u¶6°«ëªQMÙÕðMvR
vÇ@„ÿ„™òþLNÂ4§t_ïÁ3×ôÁxQ	ñ»G6†!C<BÈyAèuƒaÆ)Í„¨×¯O?~¾<Aˆpwyá2â˜!&bäyFK³zÉà†a½c´pE`â)½qKnc5WÞHnÉå
qM~c–3¡vüß‰Î}°=—¹++gÝ:š¸6,·B<_¦ùR•ÝA ôDS>Å1P¿˜uwÅâò¾‰§‹õØØ!—ä‚CBü
Çˆn“¼ß˜Ã¿ü†øÈÄ|›5xœuSÍŽ£8¼ó–æ¥0¬fFùo’Ð$¤Ópc1&<ý&»ÚÛÎw)U©¾º”JpJ¡kØ PKhu*†¢X&	–©,C•adÅ2"²Ô`N/@Å$bÕBjbÅV¢¢Ø ²œ¢aY>AVcöŸ_FX¥:$V‚bˆ™&†
…¦B™ª&2¦B$áNd5.ÍEœ®%ø^¼È[ü"¿ò‹ å©«Ÿ@ÑuAÓBŒeC–¥§ZåBP–¹Xu1ø~©9mÊû¯ôÐÅxK›´ÍS0~3_®wàcùëåÎŽûù?º$Ð·qlÛ™Ú¶ïøïäªšÙtï¸(;kÞòuoÛÉj½¶U1c…Q˜—mö™£>Ò¼0$PºŽvØ.â!¹è¥>5&îâÑÏï,:ÜŽfy-Sl×‚Ãd07qo,Î<4Né0²â+k}	xbÚy¦K}•÷ÓQÒÄ-›YpTþáÓhUÊ/½Å®q[?‡3Ï]ÐT9¦éi#½|žßw_Á,ê3Ü
¹.>õ~ÖäÞúä–×#FGghó+#º“ÝycS×Â3"†¼’ÀÒz|&æmÜéÏàà*éEÛ/½}™Mäˆ}5xk[Ç±ÿžI˜Ÿœ]\mØ¿3:—€v<ùQrÛmÉô£È+ãºËTxoªÔ¡Æ|Ó*N4úª½Ëì°ý’†ûñuÙ³\$§âÂøÁÏ!–þíl¾›ýcÒ–ò”‚¦+KÀéµ£­ ß4¤ Æë
Tù¥¯ë¼š°š•7sÂòa\Ñj\R\Œ_–q›Õý˜Ó´•¤¼&¢ü,^cyšj~9)¿^7”‹;xæ †cž“ö‰yI“¿¤Uhœ$xœ‘OkÜ0Åïúsn»‹ÿ{J	RöHéµŒ¤‘=`KFgÙo_yCÈ5ô"OÌ¼ßI$s²•#4Cå°jº¢Ä²Ú¢±í@žŠ¡*PkƒjÅH^ Ö']fèë¶júº²®oÊ®*Z×5µqF7¶+z¬n2…Oì/!ÀyïË­<òr´ôz?.ÈóÑ„å”mÛ´§¾,;øZE¡²º°ýg»â`d¾ƒÇ=àBKˆW`#Éß5†•¢\Áe6‡:²Iùæ™¬R¿'‚‘_ÉÃ—UcN€ó
Y`ŸØÈ”U·y#<\8‡Ü\vb?‹ºð<ƒ¦›dó–Ü“÷œ'å<ìs•‚ƒ4…Ë!Ò˜ mzOŒÞÞ°~ýy¢CxÌ[ðÃÞvTêìà'	<¿óó;vö2¸å‘,0a‚ç‡s¦ŒèÓ¢|ÛÍýþæ3NR>Ø&Š´ÇB»½!f¯=ÙCpî ¯wŸùõŽßÃ»•5xœu’K“¢H…÷üŠŒ˜%aIB&ˆî‰ED| j•:1‹L‹7‰ˆ¿¾­™è^ÍœÝ9qî·9—·”55tœÈTÕ£HUTAU¡T‰8V¤E’B	jÒÒ’"¤PYŠŒÈÐ4JN_¥TF¬E±D^MCÒ¯¾Š^’0!PV‰*ëª$ÄÀP•eH
5,¥*T =¿V-ð(ãW`õ]|ß>¿Ì[ôe~°’Óü-®Š?ÄiŠn L¤Px¥ãœ¶Àa|ÙGà[Yµ´ÎÇÙÐGÿs–ÕYÇ20ù’e;îøŽö®³5ÇÐþ'€ †ÎŠ-Ó´f¦XÁ*ndMœ…–§]ohwWZw0Ídéº¦yÓ•ü|Ü–‡7,`\gÀ®L³ñ‰ù‡Ò}:5È/úæ™oàê)Û«`n9ÏôÄO‹> ‰·Ó‹ÚEçaÁu‰V›¹ ’Œ<†¦~O+ß¼­Ë•[f5Þ‰7¡½Ü5ÚöX÷Çjî†Ò;q÷l/ï‹ÍH ÎmO V{Ý?Na¼“>/®tlÝ®/I3
äÎöA¼™&ËÒ:—)DãqÊåç¬€’Ü½B‹Ô_ÚO›M/Æ°|wŸ»¢<ÿñ!fì8ô¾v71_mð™Ù4	­³õQ8[EŽ ØÇºÈ#ÏAS÷3.’‹èÏ¥CÓ2óã\Lëhñ7zœž%;×X6Ž¶ªˆˆÜÎÁw|7Žc#ü»™½ÿ÷bÂ†¶uŸç ¥MO;þ@i[ `åPU¬˜¦U;oúôÎZ>)²‚Oâœ’rÒ×‚ðW¸˜ýö¬¨s–Žàwt}ôõn¤L@UsV•àÈ«¶1éèOCiŸ!xœÍnÃ „ï<ÅÞÛX$`ìDUÕ{è)}~É€8QÞ¾8‘ê«^Œf¾Y¶$D0FXagLÅsÙ)Æ’wU¥œÛŠ¶ë‘Ì2a(€)¥ý‘÷¶W½2ö¨¸î÷Ø±ƒÖ†J+T«»V¹”1&øtá#|xxñ÷kã|cðò6xé¦FGÿ
û¶å‚±}Çà‰)%Uõ®ügœ„‹ÇœŸ'gopq©ìüàÄ¹¸2”S¼bÒ2#!ïÓeDˆõHµöË`~ìõëUžç˜
¸º2nñgPK![Å¯ø(sõ…¡æ‡Å¯ÛÒWR‘§Rœ†|.ƒ–Tõ<fwÕVg•[Ý#¥ÐUì:s^‰wm}­üLb€<£õ½¶!äì†€f­Ý©Ûé/k%ßK··™"xœMNÄ0…÷9…÷0UÛ´)Bˆ-VÌòã´–š¤JÜõöd[ÄÎ²Ÿ???Nˆ€kë®%6csj´4VâàTÝœF'ƒm+6R¬*a`ú¤åhÆ£ìÛî([ëŽ]3´uï†Ngtg‡ú¨¤PÏ1Á;…kŒðæáÙßËŠ|eñò:yEKe¢¦ï»AÊºíá¡ëZ”®'füçºOðA~]Èí`1›D+SàŠ§%>øÉ³ç!Þ'¢û@ÞôÍ…
Œ
 òŽÐÞ!
¦­H¨¬Ò´ïÀy¦«b3Cˆ1,;(k34˜³J;\gbÌ«2X |E"—`1Á#è!¡„-ü.¡_y‡…ÂÍÑ5¦Â,¤rÇÓ4sñ¸e\¢Zb˜¾”¿?×??VB|ÐÐ¢s½?ý%`ñ	]º”6xœu‘Ms¢@„ïüŠ©Ú£•0ÀŒÀÖfkA	¢«bP½X3 Ì€ùõ“ÚÛî{éê®~ÞKw‚1 ÃÄ¢ºM	Òô8ÁØÄ	¶u1b6bºfè©®!+¬î€aÂ>ØJb24ØÐL¦f[¦ÎiY8þÛ§±®Y¡Œ¥)ÁšÉLŒ™m2LDMb D!}wäÌXÞÛËä~œîæ1¾›_yÝ±ò1áÕO aŒLÃ5ð ‡*i•wÀÏ»Iƒ5¬)o¿²}ü,k2™gàá~®çú!ˆá¬7/Þg® \¤›¸ŽãŽgå®¦I«åèÅ™Ç-Ï†.ŽC'Aàø'§}Ý®o §»ùw|°(LHêýÞjçÆKþŽ[®îVFoÚšÍTy=éØIN‘,Mð¬ã¢ßûÙÉ^†úÌ;M÷+WÔË¾¼ŽÞ¦”D-ƒömC!Ÿ„v`TªÑ yo,Õx5¢h]û½}Â'âTÆEäeGhbÁuÓc¿†ï³ð};½Vh>Ÿ¶çÝ›T‡íž	ZqÛºìäjÎ§ÈSý×¦h<žˆãï¶ÙWÎ¡™˜QØy™ªë)œ¡ãÙÝõ×Œ–ådƒÚíÍ^-ÉKKŸ…×¹{9W@ÑåÛ‚Ê’º2ZÏ°?_hr¤UÖ–#JolàØ¨ãJµW.¢½˜»Ø¨6êzæÙ“žBcl)_›y‹ñ¿SæLd4}YÁÚžÉ|C&©à¨òúÂy^©)Ú£¥Ê¾i¸è¼ïš¾;|Äù”ƒ<òËA°L*J}®Øw}U —Cœ×DÜ ©)($¯ÁwpçîÜç×–xœÁjÃ0DïúŠ½)’,;”Òk…BéÈÞ•-ˆ,#K	ýû:	´ôVzÛÞìì”LBj§Qö`V©»V´èik[mi{’(F¶ºLKVI‹ªÓ’úN¥¼0f´V¶í¸ƒVøÞöè•e®–9exË%%x‰ðocbƒt~ž¢§fLñ	¤1ÚtFêD/ÛÕJ¡Ú¦ñ+ºB°ÍéÂ3Mìj×—PfHµ¬µpŸrt…±·Lçê÷l˜Ýa)9a	ó_<¸<ÝoíûOÛêpõ»aKPæüNÝ©zBêí3l{ÓBÈ“÷|ø<þ¥-û¯ó™9xœ•RKÓ0¾ûWŒr­Ò<ší
!!¤EÚ‚¶ˆ§jâŒCbG¶ÓÐÏ¸-{„KlÇ3ßkÔ[Uä±ÙUYYS^oRYfYµK³SUR›].S1¢# ¯¯ê|'wU^fE•gªŠÍ6KKµe%ë¢Ù¦æ§ÐYwÚÌÖÂí o‡Ëv­‡uC§÷í€º_K;¼ƒMYåUQT¼Nwi*øï C ÿj¿ÚK»0§®á0£uÎÇZtg@ÓÀOo(ëqßÙyå¨õB ì@µmÎ0è¶0#[˜'úN@ó"­	Îö=äFíY©m #—X¸ŠØÝ‘üõ¼É“‡HÎ|`U¼Tºm_Ü½ç^4P¢†š6:ÍšìàóáËþ¹B¯û3°P¯M»â[§=ƒìXs7“$ÿØƒ¸¿y8~¸ÝßÜÿX@¬Y‡Ž­´dÈa/V+&§°Z®ÑµÓÀA°ÈÁ¬û:<$&Vô	œ°Ÿøi¡!…SÞD¾G?~JÇ\t$%¬ø ±æE`Û3ÖÑæÜQè84þ@«Od QX;-}ò¤…ý‰x”ÁõÇ§™¼|ÅÙIœ<c±ÈˆàÈ“;q”5(M}Ã[G‚3®c]˜œá:ôþNãâG’š›8êý÷;ZÙO|uv$Îð‘”6ú2¿Dx’qÇ–ºe˜•UjUŸ¯ÿåA‹?\‰9ÿ–4xœu‘K¢@…÷üŠJfil‹w9éž4 Ò‚‚¶M‡‚‘§E¡Ð¿~ì™Lf3sW÷œ|÷æ$‡QB€"#^•§a¬@$†1%Œ…PQ1Æ‘‡2LbUM…kBJ*P2UDŒd^ *%¢
‰œð‰<BÓŒq¢@KøHT’JJ ÏCE§êcQLx™à†Ó).ìØ¹¦À!;½k£3xÎ¿Äþ¯YÅHñÕåÀË²¤ŠHá0†
„ÜÃ-3ÆfÆ¬ƒçª¦¤)†×ôñ Ãÿ9K›´ÍR0þ}nÚ.X›kØ¦«mwþü—ÏÜ[=Ò5M74m£o–ÑU$Ã×õ|‘¼›Hí»¦Å–mk3·±ò*ð¤ûÌ3‡úM]þR¦ðçAœ#-?¸8 ¥ß:–Ô«wç=<†E¿ÉíÝ%Ø±ñG­¥î¤ÛHÂm¨P°ßŠ+gÄƒ;SÍ`Mk£väOöK%‘é…jr¹8“SÙÇþ°Ûe64ßÉìØ®º3ŸÒˆY‘Øs`Ìy/Ð-[œÛnÔ1çÓ^/†Y‰gÖÅ8Ö»MZËûÜvÄ# ¡'md.‹EžÅ[AnWZV[l¼·S3™øîSl7º»½8ð¬û^u0»[¶‰â`åOòÖkÂuÓ^}~ÖïFA†–ú²/Ù)wõUkžÅw£&Ê`ËxÎwÚçjÝëÍ5^]£T°¬}þ4Â¶z_8ðBIå~w6wgÿnŒ[šÐtE(¹v¤eà›¤
 ¡u	Ê¬º×uVN’šŽù'4¡¤¬oä#îš"‹BFâÒpø(HÅqÕ­$ßQ°wø2ŒhÝþ1¡t˜xœMNÃ0…÷>Å,[A-»Nœ¤Bˆ-VÀü3N,b;Jœ”Þ·À±f¾7o^ž¡­ŒFÉj·­ëêFHÑêÊpn:e¤²55SdR3Æ–7Îv•aB·…ÖHw¬™ì¤lªJ+ƒœ	f%QkÒ/>žS‚ç áÖR¨Åí©ÊÔ¤ð¼®+)ø‘wpÇ:ÆH™Ÿ3þSNâðïÑ»ÙnA}îö¥š9Z@ÁÕ#EH	)ÌøÞ/0B#Fða1”Üh	>/ÎB²ëˆàmðL*›¬ÅÍãù:úð±Üï=]ÞH›}¹ 9ýxÓòêûˆöœ;èËé/yÉ@L–xœ1OÃ0…wÿŠA¨‘k;NR!D†,­`AûÜXŠíÊNZõß“2Á†ØN÷Þ÷IoÊD Q¡”ÖrA0mÝ­­jy«”C¡$šZÄFõì„™â²o{Ù™®‘µPÖ5j­¯VÒ8Ó+«yƒ’á<)Ã«—”`à1|Ÿ••¥óó1 +“Â¬ëZiÉµnáwœ³åü4Ñ?qÏ6ðV¶ûýöýó°ûx¹»‡€&'ðnþ«1Ì¯Ÿ#Å%^‚X0¡'ÈtÑ…‹Ÿ†ßªŸ’ËàÍ ¾ Ž™Ð^a.ãr
¦a’G*Pæ¥‡öÙ›R1vðÇHv•œ[õ×Í_Ö²/6|Šñ˜xœMNÃ0…÷>Å\ U;vRUUË†¢ Êü3I,;rÜVÜ‡VBH,XÙoæ}3óRD„®ÁFÕ‘ÑVTH¹®TVY±²ä(¬Ôh$“Šè0ÝhÖšV²ºâ’U¶“œŠª¬;Á™éŒæV”R1¢ÎižULÎÃ#†Ø#lÆoÙï<&5M+Æ-Ðºæ”	Ù
(JY–$WG—FxB—x8Ïf€ÍÇ"Vz;çž~ð|MK\dœøËˆ…9¹5(ká¶
‚ÏÅ‹38Ã²AyKÈ>T¶\ÿìC
„¦}1Î}ÎÒ…Hî•—ÃûþîÔŠ£ë=Ú"t]¡?×ÿOÞ2‹×Ì,þcÂÂÑÇ1ÇßÌóíÿùƒUyç xœË»Â0 PÄáìØ>{Hqßˆ‚(Š²HÂ2ÌÄðú÷¹~/Ó¾™…ªžP`mc×ˆK¦¨VUT"vVo±ÜWÚlÙ»"y2«Ò-qMˆ7³ü³Sð8Ÿ·-a¥ÙÞaþ­›%D•3xœuRK›0¼ó+,õ¸jcc©­
énB@²aó¸Û!^³$ùõe[©§ö»Í|3s™ÑRÀäIÛÄƒÅöXÆ1Š¡Íbis“"¬bbA.°QóF•p1…P	C:¦¦˜#Â¨…	“HàeþÕ3ŒOX"~saQ–)'fšL d2JIÌ˜4x§ÏU*Õgàv­8ƒ¯—ð%þ ?ÒR«ü‹¨Šï ‚1ƒÈ¤à3´ 4¶HµV˜¦zÖÅàkY5ªÎï?’! ‹ÿcKê¤MðùãÜç©çƒp‚Woê;Ûhóü›7€úÖ®ã¸ÇY»ë¹¨­Õq²qôœáàÝl¼ÞqäÌóœ—¹8$Oü¾yMËÌyŸì¼2@Pª|vÜë‹­O/?“è­ÚKéŠíöHûn‡¶eºbÂK²)4»":œ<·ëÁ hWs
rÁÛÑö"(…µßñ·]—½úUï½Ä7GEq„‹+©®1í#±P~BZ¿¨Ê»FÔ­+¿,³ªj¦;Œzÿq(4µxï™ïÉÎô¶—(r09òGFæºÂE7•‹LGxêñÕÞV¤öâÍZlÖ¾2«‡¦“„àh}°È“l–Ù8ZË`äÌ;IàÛå·Ë´;N°'Æ[·°žä2?Ú.‹êî˜ßÝüv“ÛYxçï2Þ;öæEÝwafAè~Ïê¦¸ôßðg”:{öþ»1c¥šDºËsÐ¨k§Z>§¦*Àå<Ìê¢F:-†/êÖ0ÂfØøË Þ$×
ðRþæA«Mòüiÿ5šxœKNÃ0†÷>Å\ Õ8~#„XVbƒÄ	Æö¤±Jœ*™.¸=Qá ˆåÿú~Ù˜ÁPÕ5ëú`ãXsÖcÊ5’	Úrv©Xu£» •±ø€ÈÅXcHúeÒ.o]ªºØ)¤„Šî2¯¼qï,3œ¹É•áùú£OóC¿¶.üy*ëòÚ9kc4a@¨wi"üH!ê};b¶ð.´Ü€v ¨$ÔëÃ‡]ŽÎE©vé\‡uš†üõô÷WõÔØh¡œ5xœu’Ks£H„ïüŠŽ˜£CæÕ4°á™B’…%Éönª¡Ô€^¿~loÌm·n™_U]2{	€2bÛ™k`šÍÔ l‡q¢0]jkŽ©c˜–­´©„ºGŽAuŠM <c„d8#tÓ¤ŒbMË±‰Ëjê÷IªAæÚ&Õ‰­ƒeŽcØ&g˜§Ôr1ži™K2%ú¢‘h¢/?t¬@O‡/ñH¿ÄoQ÷P=²æøé–…M×´±FÑ4åÓ=Š¾‰BÑÏŠžêFB[Ý~çŸú?gy›w"G£¯ñ'a´B/áÚFáÊ{M6“o_A
ºt>ó=Ï{ÞÚ_ÏY+Nñxã/ì¢ÄñÙ”ÑÅó²YyÑ"¾•÷
²sþv¡5w·åu9Å
Ú–m­/Ÿbã™£ç¤ßúÝÊJÙajXatÝ5¯¼©­P_ô~´«Øk“Y]”3ë’,DÂ»#*»Öú¢æ¸©î§+»³·Zt–v«†ç*øá4OÔábñ/]Ë]S%^]‹>Žk•x…„‡þ=™ßÏjýfßÖšÛŽç³ØˆW;­´C[û]i¿™:ç©ÚÎ­<ËT×«h?Ná;Á5ôô1Åááe¦“²Ý¿V›dîÞ÷Î»2dû„Ì¢Ýíåô6Á[_Aênù¯ÇñÜÓb9_nc1}^>;µ®[›À_í*ZÓ¾Uœçå]P¡3áÚOýä×u«ü›ÙdüwbÊ3ÈP;T’p ëÑLâ²9¢£¨/M#Ž*oäHtT	ý ëQyÚ‹3Œ@ÊºQ”Ï†JÁºÐæ›£¿}sÔ7ˆÀˆ§¢$ Q£Lt¬9ƒ¼ýÊ›xœPÍNÄ ¾ósÔ¸6”J[6Æxõ`LôÓ–X`tÍ¾½ìêÅ›ñ63ßo¦$"è;T†ë&ZÑ“«ì(D§Z%ÐvÝ8öšt¢P m%uH‚K3´#õd÷×f4J“´R¢QÂr¦·²ÄÏ.|ÆOîýelœo,g¯ÝÚ`ôÐJy×ñnn¸âœÕ«w¥Ð?ålÒ&9Ì{x¥²¥ f]Ü‘€R
J\? ‘GzÇ’Ö«kp¦jJ–±ß€wóR.ØÎr]¥:Ç yÃt_éz]#Ö¨Ø™¾%j ^¸oƒ¼ë2VóÊÎKÜV!8¤ˆDvf+ÕûÒº,ÄjáøS¹®€5 ~ÅyOÖéBë©aìÍÍìmœ¦[sÚÿåeìÜ2¨µxœÁNÃ0DïþŠ=‚ ‘]ÇIS!Ä¥H
|í¬K‰]9›Fý{\‚GÄm5Ú7³³”¡vbW×;ÞX#x¥*.Ñš­²XVF•®É’³¼ì¤!¯%¶²Þ•¶Æ5Bµ­UÚ QÂÉzkKã¤`z¦>&8ú°Ä/#<Œ_cáÇ¢ÅóS7j?6Ž ”*%—[!áŽ7œ³¬Žžÿ‰3§MòvÚÃ;Òœì4ù3¦",=ÐÓ)ù@îæ\¶šû¥,~ ­ðF¬€§u(‚†h5!Œ8Æt—›Rl¢ìÐA—³B6¡&$ºJkrF¯oÇÃ± x^˜ƒÏxî{¹‡ÁêÀ¾“¿¯½Úü48ëaÆ‚±ßl7Ñ¹¹ìÿò'ö	 £FŸ3xœuRË’¢@¼ó±GÃ±yÓ3#‚¨*ããÖÝ4Áýúufwo»u¨¨Ì¬ªKfË¢ˆ‰$1ÕTä˜’XÕd	aUFC]&’PcÎÎ-Ðu9V	«AªXS ¡h:5¨TbTŽ%‚Ôäï>ÆÑ!3ˆ‚uh$PU`L$¤BòT Š¦èbŒ5wmVq0cy›«kh^OŸà…|‚Ÿù¹eÅ­Ê@TUEFò³ƒ!Ô žl™·-ãÀÉ[·#àõ\qV÷ŸéóAGþs–Öi“§`øY–íL}8XOßÜD+û‹€ nE-Ó´ÞM3´BÖùyó¾²fzvT–W™Oo¦»Ó©9±WÎÎé¾:Û~xËÔ®{é. ÞáäŠôuÈ³{±GŠêø~´’‹‘Mø0ñ*Ü±
³GyrëÔëº^J·Q–GËmVh›Ããr4”ÁÖ«ŽóùxÌ¸«é÷Æ³k"ŠþEr˜Šºæ1Þ£>Ü„4È>”\µ°;êÜl.€´Åî¤Úäº”Ž
T(7Læ]k,Èu ÐeãõeÞoÐ©ˆîÞÎÜH>ÕýÁÖ \äkÐ/¯.¿iÒ…µÍ6d:ùH~¾J–­×e<—U4½,N²yß†«8ÿÙÉ?ìÉE W”¾fŸä Šô~RK(Œz²àæîèŠÃÞ+{Ëñì`Ç­«+CXF‹¨ë–¬Ù‹ÜÐ7¼vÓLøí™íÿí˜°`<e îŠpvéXÓ‚oÏ”‚„W%(óó­ªòr”T|(¾£žÓfWtØÕ1n™ <çï úàž\W>CÛ¼:7¿ ¼Ò0‘"xœMnÃ …×á³¯laãß¨ªÚe]µ f#ˆ€$õí‹£¤R¥.ª.£÷¾Ç“Ô\èv­jDß¶²ÓTuºG!U?õU…¢Z‘"v”\‚z’Zt¼î5£¢ax]‹q¬TEM£‡®á£¬9“§4û oÆ]¼‡WöZ–Æ–Hççƒ•f)µ·OPµm#øÈ…€‡|q–UkR¢Æz½‡D°&Fã°=(FHrÐA&NvûO>aeL[ŒÅæ”é3Á,39Ófš@÷4DJŽÁŸ‚ZÁ-z1%ÀÇlbÞQÒ3HÜì-?ùeñ—\f“‘­\I\sÙâÑ;Ì0»÷Í”lW•·nÞ9Ò©ËÂvõMDoúoÚ•eïæà?M…Z÷Y,ûçÕ´™xœ9nÃ0E{žbà6°@j±(#’&€‹TNÀehˆ´Ý>´÷AºYðÿ›ùyF„†Ýñ^‰PMÏ¤évªë{¡ÛÞpF•¨”´nH3úRô¼eŒ·ÒPJkìyÝ²Zr6ôŠK#¥l;ÞJÄ9a†ë¯!ÀÁÁ³[ËÊºJãåõä„*Ü°®kÊ¶ƒ':PJÊÔÙœñŸr¢ƒÚÃWÔ"#ø‹Ã­¶IïQ•Ð˜Ôl¥õ'1Ûà!ïx×i¡5êÇFq)¡èýC‰ºøm‚(²á¼¢Ò{v·”‚¹s¡!‡bJœøÆ›c‰þ­ô›â0gHy™âbùù:Úâ¹‚W¨ˆq²¨É}}»0€ló„ÅøhOõ6³•Ëþ/‘M]¦q&xœ‘M‹Ü0†ïþº/	ÎLbg—¥
…¶—~[I±b'Óüû:™)”žJ/Fz^½’ÒBÖVQÓªš´B¥±‘TêªLM¦ËŸ‹îªÚ’˜q!ŸÀÔª½ ´ÑiZ¥k¥¬©å³ÆJ7]…ºnµ¬À5a7ö·à“ƒWw†%»ÒÒö~pÈSi‚{UÓÔWÙ¶WOòYJ‘³ŽS¢ÿÄ…æ¾Íß&xO&8MÐí`)š…;ö„9qðQˆ#nÇcÁÓmÚ­%‡ôöw!ôy¨w9HÅÏßß¨!®]Üc"Kñuä3&3Âz‰®™Ðÿ­\
ñ`8Å =ÿÌ$zHoŒ8Žy
|¶–O‚Ã‚óãJp9s½è83‡Ø}—§Õ-°ÍZ{Îù~§\–·µºã¶w£ÇÃ˜DÃ-³ÜÁYîûÃç—³ú¾èö—9’øVÐùì„&xœÅ;Â0 P¡lá
Ù’ói>ˆk°u±c{£TUÅ=*NÂÅ‘Øà-ïk>f\Ç¹²dõ¢	Z¥Þ©g	

{ÔaÀÖìŒ‹L«Ã8P¥’#TöŒrÔ@ˆ™@´Ôž·1™’Êö¼þ¹#4 kùÞÏî:3®â¦ÇMN¯÷~÷î*iî	‚{xœ-Ê=‚0€áhÞ@—žÀPÚÒ2¸qW†~‘„€)Ä{àU<‰ð®ÎjâòæÞWöÌÚ91+¶¡"ªŠÒ²0dñR@ô"Nœ¶ù%&f¥.¼a2>ØŠ	¤ÖŽ]†ïh|‰Äè¥5ëÊ.·ã¯Ý†º	Ç+§åÝì›¿ŽÃœÆ¾çtPêtî¦ü«íêÅ*3E”3xœu’I“¢@„ïüŠŠ˜£aÅÑ=ÑÐ€€ˆ(bÛÇ*(Y-À¥ýèLÌmæÝ2#ó]ò¥€Hš˜ñ«BŠ%>Ky¢!J2$)Z*©B€4®ÇŒ¶# /PM¤2Nd"j¢*EˆO‘H2H!eªüÍ'ªŠU%AšªÈTäea""Ñ¨úÈ«fP‰‡žÆ¢c`EË± Æ4$x­žâ…<Å{ÙŽ´~Iºæ'’ ”Áœ—yž{¸M9Ž”e9:¯mÇh_ßßóÇƒ‰ü§–÷ùPæ`þ<ÃZº—!ˆÜe ïãõÛç ®ƒ‘ºn|èúÖØzI_¶úÇÎX)ÅIÚ\ s¯ºž:®«Ç‹sdŒÖçbq_‰3ï(-Æ¬}…†oîž‡åÝ½5öÂ.I“ïï×fBÃVÈvÖ!pMâÌŽ‚öPJí`*³˜•ÉÍã€í:UŽBT,që&iöß§€=ó5ßßV^v1[édQIìâ›Ëâ…åe¾¶œJ¸‹ŽÌ0½í¶½ê÷H†q=ûLñú¢j¡§‰‡“TWp³ß,š½íK24„žChßŠÂ·õÄÜí8 _G3Ø†RécÑ”íJó<ÈNa.}Æ3>ø½Î¦ýM:mG>Ý£s·ái{XÆö=úŠ9°‰˜ùq¾6!t‘†Z·‡V¡ˆ9Âesêb$7_Õ§[XðRLV ltýkÂ•M¿½nµÞ8ðF-%àþlfæ¿ãÖ”åôS]FÏFðC’U±®UñÀª¢‹d8Î.o ï†¡$5m:v5ÅèZÓqþ$µ¸ž×]þœ'ü7“xœ¥Œ[jÃ0ÿµŠ»)zYPB¿J «¸²Žba[
ŠíîûZB?g`ft€\À‰¥šg˜8,^s4.É9ÄìÙk­â,îÜQ)­¤×HÚÏÆ!Å”Mi±­ÊÚŸ³V‚ŸcmÞQ+ÆJW”±^¶?>­¿üZêÀ~ZÚq!e­ÑÚ*£i’NJñm2þ5oåƒîíñ(q8Zÿ¤¼Q«tÃ˜~â^yŸöv_ÜxW9—xœ•ÎKjÃ@EÑy¯¢6`Ñ_É
&2É0+èO•TXj)êVˆ³úØ`È4Þ^Ý!É^;².rÉ¢OÔzµ(‰œ2[²V‘Xý†¹‚2Jv“éŽ¶Å›ê•K):08E¦ÓÑ2Jø½ŽËoÈu„ó^â§Ë=špÎ§&.ó3(ç¬éµî:8ÈVJq[g®ÿÅÍQ>¸xå/ e›}…0-ñ…¿öââü»pO?q‚%OW`z Êy eÅÈÄ²Ÿ±¬>"DŸ! øØqcLï<dL‡…è®O¹+~ Š™y¢ž2xœuRÉ’¢@¼ó1G¢[–¢€ˆî‰fiiPTPoU%ˆ,²´Ë×ÎÄÜf^Ä;d¾—yÉ:J‘)Yª¥Œ2IÑÑ *‹"‰ hIXÒY*#®M;Z€5C2R1…’ªé„h2VB=CŠôÐd¢–bÂþþgLÔ  ª„bA£*JB‚”!¢ªB&=îë
æÒqÈ›Ìi1äÀû,oå¼â'ø(êž^³¦ú	DE¢®h‚^$Üƒ­Ša p‹a6bðV7mO·ÃÃ`Äÿ‘ÚC_ÀËsLÇõ°p`å¹±ÞDÎož¸ôff†iÆÒ\~fÍ-Þ[‘9Wó#¿åÎ»™yžaÝaP®+ÍÎ¬ô¦MÂºø¤Ä¸.âÑÏO‰½°Éå¼¹ñ´%a­%p·âJ‡nm^o…$nîtú™ÆTâÅ	ãËhÄØ|¼ÉÊ8¹olÃ
—FnuT>JõW€ÎÛÆžýp™îôh˜ÜÓ]¹ïå”9Ûu°T5KšqÀdu¯ñrE—¿W?R-ƒ8’MF#¼Ò¿=„©wÃÎÙŸêUÕ/9ö±Ä[ûûÒâ*t×g;X,¬#vrþ3Q¨G_üóû-4ÏT)išÏ/Ó½’šp×ûÙJÜ~s`iÖì.[J3Æ[îºbÉÎ1ßƒN}v}º¸:xLbï‚Œ ZÝŠÅÖiC¯•ÉæïjK|îOfN`ÿ;1î‹v
Úñt=´ÀˆÀº¦eþ¨UI'UÚ?*ÃqÓâ
Ú¦ï|¢ Øøþ=ÛÖB;Ê[g´ÿ6Åû…”;xœ’ËÒ¢H…÷<Eín¹_"¦'”‹î€*  äŽ¿úôcwÏìf5‘‹óEäYä9Ë„€Í”B‘ÉY‰JVPJ(óÇ0"iZE6g•2ãDjÈ&Ô- A©9QÊÏJ²¡Ìå‚ !­¢À~n
FÎrXRÙºÔýŽ¨ëÐRƒ=ÂK‹Àíoý½þ¥ÿÂÝ‚È÷¢¿ÿ	Aàž|£Eš¦>ôŽ—ýYbÿ1©†jÆøös4Ã²=p¶Î ´-O.ñ‹S€Ø·^šªjz¥BFÿæ¹S6øP±R×£·,û¢É €æM•¼p<Ìª^µþ¿œ-ÅWõÁ7a2"=QÜƒÖ÷â¥¦Ox´eŸ¬Üz#³haI·5˜-ogk§v!’ãPÌVïŸñý°‘˜}î¶“­é“„vsž£qìd8ªl­€oËk¿®Ê¾yP÷Ï¨Õ×õÀþºdOy1cR›áÈpaXÖÍ8Boã2[5ŠãªÜM,çJ§Ó-¡mR@$ËüŽ¦,ß·ñ¢­¥BÂ¶Cƒ7Ë*uM÷xïô™ò:
C?¿/rF‚û7‘ÙéàQ â®ä™›²¯êK¢ÆëÛsŒUî—êhµè)²ÁT§s£CÆì™_ŸX•!í™%§€¯í+;u•Æ]Ð3òµ¯ÇbÓšdi4Æ%Ùò)m=H•\±@¦­’¡ÂÜÄ×^œŸ¡ûù¤¡u®æ-Nlñ8–/HúÁ&«Þ·5×Ež$³ùîÝ'ßhó®okîè?±nîNÔì(wÍñøˆêç¤ImÇnÜ”Ù
fèò;í´O{{ë.yÙ&¢ªÈ¼ä‚ÃëÝ±RC¤)À`9Ûrî
ü(UW¦~wÐðvÿÕ@ÊÄO0ôóŒs‚€wqœúÙë	@4¡ò³]fêožq)Ýž3xœuRKo›@¼ó+VêÑJÍû!%UXÀ˜`vjû¶°»@0¯—Øø××nÕ[ûÝf43ú¤Î¹E7‘b"*KºŠ5C,iV!c$›XÔ¢ë’0 F:4däŠ(I&1‰dÊ´(°b‰ÄÔåÂPY˜ê†˜«õ¢¥S¬bÅ°LÝóuSÂ*²Œ\*°eˆ¢jˆÕtC@#¯zBRó
Àñ\Tà¹y€ïù¼Ö'ÇïEßþ ’¦Ý_0dKO¢.ŠÂmkÎ	~Í—cž»ž‘á8½–÷€1ÿ­Ês]‚§ÇAÏ"û1È?²7ÛÔûÍ@ —3, mCÇ¶˜¼MÖ­œ†Fõ©¾),¸Ø6^ýMIYžvÜÙ¬3}^îj%žg0"·êœpéïoÍÌdæ:3Å,¤Ö‡œ­w¾W•Ë÷—•Ù\*º–é‡-<@/ÉÇò³b<ùØ&-LÑ~vR9šŒblÊ-Šå8°\'qã”óbœÞ&î[ê°Ý©Yr2–ðtÎhc$ 3yw‚ë-‹òÓ<¼r…_Ç~lÒµ=§ÛzvâmæNpq‚NHÝ÷,ªú5HÃÌ¹Ý
äñ†ç"²•\blMXLéÕeIléJ…-é~œEg*²[Îå:5'¿·gÁòƒV +¯Bë|ÿ†{øóüé’amo+uK7öÑ®¢E]-¾Ò¼ùH¼ÙÐßB-jˆœM¹Æí¼ô^¥:ó"÷ß	kÂJ†ñxŒœFræà›ª«€²¾MuŸUCæ-:ß'#6ÆwÕÐ3^w%è)ø¨Ñ¬Q‡JÒ>f|‡‡ ðÔø©àìø•7ÿˆxœ¥MjÃ0F÷:Å\ A?–4Ú] tÛýXÇ"¶d”ñý·Gèò=>|Ò™aŒä\@rH“5aÈ>:fã/Éf²˜µw‚Qu®žâè´1ÈÈí”RvÍlŠîhå)D=Šv™[‡O®•e†y0¼=þø<ÿò{©ÂË9µõ
ÆûW8`D8é µzÙµˆð¿"ê#gè¼µ.¥Þ¡Mð]ºì´ÀUºózœzîÛ1 iPò)I_ÔŒY¥ŸxœUŽÁN„0†ï}Š¹´Ì@7³QOjŒÉ<:”-¤Í¾½ÔxÐ9Í÷gþÉ3hm‘Téj²ÆÙ›‘A"l¹`RX:®5ŠÅöˆ´­Q+Ý²-%êÆYÖØiKV2–œQÂlq˜<²s¯ð<²‡c¢<­§/ÛåÝ|¹…Qj)kYÃM±ØÓË#xâ1p·­Ý Çy›à4úÈÓ¿ºVYA{]¼=ÜÃë´õ£_ásÍÒmðfÊ¦¹‡ôÛx›_·e™Cd³‡ó‹ªŠ\ˆóØ{¶Ùì\Ö^?î¿âïI|ú+.¾}#b‘šxœEŒÍnÂ0„ï~Š½WDþwŒ¢UH<…½»4!FÁ´¯_çÄœæû¤™¶2ƒ9`¤p%MÆzÕù:’Q#æ Œ‹n”ÚøhÅ#­¼4Ð™áÄ!f…^;bm)ÚD$5kéyD”Ò£H¯6Õ¾ëòç
‡­çzú#°Þ œÓÆxë|ÈÑí½´Æ+\¸´	¾^OœàpÛ`ÈœÊÒx~Ï­RývÒ÷¹èÏ{ø$*­Ô%Í@ü[Ó#å2wËOÀ‰ñ&þõ<K×œxœM»nÃ0Ew}÷Â†eëå (‚:]Ú2t¦%ÊVëÈ¢¤Èß×.:„ï%ˆ“ÔÎ´Úiç5
Óó¦²VX¯”°µ&ÙÖÊ*£;c¢˜*.• ![§­&Î•\X½m°1µ4µ £Ñ3¼æqNðFÞ'ºÃ!P„íšÊuÝý8[Úùô\JnZ®«žªeØÒžBÎ”àBáåz±#l¿×PökØ…˜izÄkÁ•^pö¹ïà<]‡¡1·K±)âTLó Ýò£ƒ<Ão˜rÀ	^–ó3–ŒÃÉ³÷Eßü‰ü[|­Ó£û
/fÚ™xœ…Anƒ0E÷>Å\ ŠcŒ!Š¢¨›ªê¢‹œÀØc°À8²‡J¹}š}wÿIïI3”Q¡”®uÎ(Å[ÛµMk]o´2Ò)'Ã:áF µE=ˆS‡\6¼7ƒèÑÆŽ£v'+e]«¹Lï4Çw=yøH>Œ˜&¸ä‚·é…uÀ+p)yßI!9TMß4ÌÄ<&øBO3¼ïÙÌpY¨Çn~#\ë"¾ò^òv(¹*9Û~žá‘ŠŸoß€)•;(B&[6c9¤Ùo¬~A×…0S†à§™ áú„¸A1òQÅ;•Åþúš±»Ÿ6´Ut®Ÿç_d¿¶(u”š3xœu“I“¢@…ïüŠŠ˜£Ñc±T•DtO4ˆ"ÐÒ*î·²(¤h6YDüõ£=1·™<å÷"3/ïeSq<É¡LáŠJÃè"‚tŒG0BB¨16BWe©¤Ï€"H	§ºÆõÀèX‰N#-TdNð(b'#MÑßy¦)$Ô8ÑtªB&s¦ÒHÇ+Œ`¨†Hf
…„Dm›¸¨€ÇE³­Y^¿žðóô„w‘7<ýÉŠì’‰®«:/@(=ÔL4¯€-šY{¯yQñ2íßÏíé?kçò\‹3xy–9±,ìÛ7Ö›Õä[—€ºÚd¦a˜cÃXšK—Eå*¯LÄ‰öyU+§3Œpæ8†“nâÐ~ŒÃÕ!†QRßÎÄ_IÀÆŠºùplúx_ŒºZã­v³‹æÃ*æ²~¦ÐôêfËÎ×+:7É×ÍÙL]t®\	ˆùÚÙi¢U”´Ö¼ÙÜûV´ƒnî,wîÐ'žÖ®®–µüu,I°,i2ŽÇÂÊk.RÙûËNUûë®·7Yãôz¸´hþ)„X+]GeÜ%÷\?Vx=û6Î½•HÀGðcÊümú‘Yƒ‰(dln]oÊE7Hª)ßßÙ!ÁÁñüÙÏ–É­<R‹8Ø3åÐðzã~•g™ì²ÛW3»lkÃß)OXà¸¼œ'"ôGº’CcµS^f·õÒz>Û\kãMo×D‘¥?žM|ëßŽIs^9(Û4¿´¼nÀCUE`V3Z?â"Iã”Ó´%XMk>4Áôñf`‘×MSÚˆ"ÿ†ªeÏ¾¿	 È’xœMjÃ0F÷:ÅìAcK²¥$¡tW(äÒHÓˆÚVÇzúþt÷=xOz)ÀœCDÞJH™GÆSöÃdÙ™äÈsöê{YÈãèƒØzc(§¨Ø@ÎÒÓär=ÚŠ»\[‡×(eß¾à­6éísû¨ð¨—Ûñåçü|y>´þþh-N¨ƒqð QkEmYªHùo¯N9Ã]ºnç9Jmëô~÷¦¾šcQ#’xœÍMJ1@á}NQ{AòSIwƒˆˆ¸„9A%UÎ»'MRƒŒ§·Ïàîm>žvpÄeŽ_Ká£gšÓ2yŽÏ‹KG™º\bàd%3gÉŽí”9¢E$oSÉž(cI†nzi>Hå6~á³6ííg|Wx²Ûþò~Ì_Oo­ŸŸÁÅè&gïáÁ:kMiÛVUå¿ÞœZWh»tÒz=Ã¸•m ­û…²h-´®wó³PÂ˜xœËjÃ0E÷úŠÙ7„ql=¡”²+ò#Í¸®­ É¸ôë«îºîîpÌÜšEÀ²CÓI[ò4Œ(½ôƒgžÆ`'t±	êAYÖ
Æ³#?ôÆŒ½ŒEfë¥³¤GC­h7ô&E[½§oTe+ßðSÍi/s„3.—k;þz»Sþx†NëÎvhO#<a‡¨BZ–X«ü·¯®ñÊ3§}…¸r{jLKÙ¤(uK‹@H,à?S˜ì’ÖT¡ÍäÆTþà·ú«Ý…š_T\KmxT?M—iš4xœu’Ms£8†ïü
UíÑ•A$ÐÔÌÖ 'bãàøë2%	±1Æl“_¿N¦ö¶Û—îç­·ûòv«•<¥{y)ISá!QŒ<‘ë
)$r¡AŽQs­ª‘z\86!Ô&qašºBY.Ç”pº
{Ž-yö¯òÌB—™@[uŽ,[¥Q%¹Ê$ÊRbð®ÝŸ5«¢ÝÖ5r~?á›ø„_EÕªò›<ŸþÆ–K©mð]‡z*ÚVimØ	ð£:kU—ý¯üq ÿ³–×ySäàé³ØKMA$`Sù>ùÒ`€[Ã$ó}6ôý›½Ê¬žááœÝýÁy»Ú:ºù~F‘ÏJæ'‹ê›ý÷ÖŽh„º™üÉr×I9d¢SÅ“ôÎ…µqÂÖÏ©ŠWÛçh°½¯*ýÖõÅ‡“—x³¢ëˆ%èe»Ljö÷gq6°Ž¦ýÊæ£ÈKïyÛª€ám¶Ø6b|4“Ëd«Þßà;ù`ÖðÚ Uz<ìRÒOGÉ¡­q-Ë´‡—ù=ï/¨Œ÷i|Oá‡¬Ç!Ý¥15³ùµ¿IŒúãÈuÍxÍö—ØyÓ ¾»$:äÍÞÏH8ˆ–:Bn:Š—
]ÖÒP¼yój¶3Àa2ˆ¯×Ž³»K`ÁÉ|Ñy¥d}]mtðŽ'ìîÞ¬Žlå6C÷‡¢ŽxôÓ ?ýõ”2{™>ÿwbF¬t®@Ý•%ÐêÒ©¦9˜‚LŸO@Ÿûæ©æ£›Yqÿ-[ÍÛöw­/fÕõ¤ž¾æï`TÜºò²ãmq®À9¼àµVmÛƒ/ç?XµG‘xœAKÄ0…ïùsT¤Ò¦mš."
²¬»‚çI2ÝÚ¦¤Ó]ûïíºˆWñ8oæ{Ã{‰ ]¢F©rÎhYÉº”Z¦²ªŒ5VRÕZÉBŒi`PÆi4E®T«BU©s•¡¬Â²V¨ÓŠJ]ä3·!Â>,ph™b<Ä°LO?¶l<OšéÞ†þ²²Ìª4+òîR™¦bU{Ï+ö_1œzJÆèÞÀÖ°›‘} 4`9"3¬Ã‰yïK!>ÖF¬õî–†v¯Ûw#Å«…¡&D‚ç·ñ+ž[o[°8O+qŽa8ÂÅ€&à°×äÄ<ùuµ›/‰ö„MGfg†›dw{/ÄÁrIhšÄ,›¿• ¾ ‰sš˜xœMŽÏNÃ0‡ïy
ßQ+§ù×N‡!Žˆpg­`ÉT2oOr>ù³õ³¿²1ÃgeH)K6F7bÔZ±Ö^K?HTu#'ëœWÚ8°fÞíG©ØÐ48žÐOhÑUFònÖã èV–¼ÁsNg8eØ·¦?åÃwð½Ï—GÆH5ªÑXxÀZ¢N/k)¼Á+¯eãíË/°ÿhÐÏk*üù?nGèÐÕ¸¨—wð*U—€ÊF¾¬9Al2ï/Ð¾P
B¼­çÄ¡Ë1vóïî.šèrºYY™xœŽKnÃ Eç¬‚8‚SEQÕIv|.5j•û¬¨»o²ƒªÃs¥£{x¤ÕÎ£dMäiVÖ[f@¡DCÕUQñwt–	K†Ö*û…–(•Ú•¤ôì‰ª"›
9^Ç._Ñx•/Çw^åùã§ô€çÖŸ§<¶‹ÔÎi£|0FNÊ+%îëÖ˜ñO]\Ñ±G†ì¸É2ò±ÝÓ#·Ñ…xkïeµNéçé/âSò]6œxœMŒÍjÃ0„ïzŠ½—˜ÕŸ%—’’C wXKëZ´±Š¼¡}üÚ·Îifàû¤1Ã4àFJ!"{ƒ‘"NntÞã”´EŒ]&Çê›/6†8MÁbŒqI›8XfGä­§‘l6ÈƒWô”¹6¸ÖånŽ{énõü“S—êãÚ{mL?h/¸Emï£ˆpƒw.2ÃÛsM3?÷Ñû8—Eøëuì{8`Øpµ™_á’3ì"Z2Hþ•FIà~¹_a’²JI«ú^jKÌ—xœUËjÃ0E÷úŠÙË’%¹„šlÒ¦¡hÖzŒbµŽm¹%_¹tÑÞÕœ÷¤ˆL
ƒ†9î1Cç¼b•ebX×µbÖ92éˆC/©h%÷ÆË–ë¶æ²¡­ãJPŠ9ÕZ8Iôœº1Âzñû€¬*—sýåliÇËÐ¦¡µ¢¬epWåü½„”0Â3†ÔÁã|µ¬>(Íë0$ìÿÕ•PT2×Éáí‹Í~§í^ûù(@;×yšÆ˜ò®Ì!…qÐ=ŠWàð3X„Ý¶$äÎºbô¾0·û‡_÷E ÿ+@¾p¤cÆ›!xœ•QMkÄ ½û+æ$hÌ—¥”ÒöÖK¡…ž':id.Æì²ÿ¾&íÂÒ[Aßã½™7š"È†i¸êE]+$%Û¡j;CWñ¦meKØéªjØ#ùYÑô@Nª¯”R#—ýÀu¢öRÊªZp†kšB„ç	mBAx]Ý£·p¯¯\yøåÏF—:Ì šZÕJ*ÕBÁ{ÎYfg›Ex%›&xZ=Áýaå°Gë¹[{]É>Û»lgþ4S¡½töËçê M3êÆ^V‚v
±ÉaÒvÑÁX¿>_žáÍ­_†SN„p¤hƒaY—ìœu	&\À_ìÓÈüÌC£õ{ó¥„É.Ïqä. ¡_ù…SÞì<Ù\g<Ðò'+\[z«7ß­rKÉ"¡ÁÁQÉØû®,Â8Ãåî¿¿À¾3Ž±•”xœEŽÁjÃ0DïúŠ½—š•¼¶¤J(=zî¬×«X$¶‚«Ðß¯|êœfæ1uWÖà£ëÉ… âƒŽmL‰BL4NIC/ž½yð®[FÖ‘|œ£Èì¬cž\ònžmÒÁÚ¡„¼ág]ÊŸe»Â¥Àé0Ý¥œgé¤¬ï`Š½E¤^°É´vÍµê_šëÏYàt;B7áœ·ª÷ÿ9YBìá}››F~ƒïÇÌU!å»B»Ì«@YTny»š?hQIÃ”xœEŽ»nÃ0Ew}÷¢†ž–UEdÐ¹@ST-Ô±Ei¿òTN<÷âl•Yë’–âdSôÁ¤Éí½›tŠ”sÜäÅŽ•·FÛDlâˆ)F‰g3«0jœ]H£TÒIølK©p-ÛÜ
œŽe¸•óo¤Êý”³Á()­ƒÙGôôž[ã
œÛ—çƒ8}0ÌœóÖxý×­²]„Wé».úå7øÜ#6†È?™wœóš[æ¤þ­ŒvÊ½+µŠ?äOSŸ3xœ’ÉnÛ0@ïüŠ.m8ÐjYFÚ5C{Ì£áPbc‘IÇõßwdGYn=IêÍòF)0ƒ.»²£J·=b™—m×nj.*î±nˆL[RGyC¨Ø%XWmOy±aä–êA*¹­šÆtë²k4º1¦7•Âc}€Ÿ8q„Ç	C‚»?q~J™â~˜ÐîoÉOß hê®*ÖUWÃ*ßä¹’èdSâ ¿Ø¦~#p÷4nûùpo]âø¦moWîyâííŒý† …t>0Ä¬”Ú]òCÓô5SQÃµúœìƒ¥¸…cäâ·pÙL…m#ùggØûDI8g_èÖü—ñ¥*¸‹ë$ÅÀŽ¥Œ£õŒj&²ÐÅƒéë÷lá£$pþ„¼sLi¹”rsô‰ƒJ=ˆñ‡Ým„‰Q6ß4y=Þ¼/c(ƒF<ÉLÐéK'K‡1œüq¯ÁùP`Lú4¶âZ¦—²‘eiTÚstŸL˜dqèÎðJ\<Ì¡Éïè*ëeéeñÓ!±4â¡çkŽ7¯£î.ÆßÃÇÙSžu.7ËV²y\y“TWþÀ“l@Ò=ÚÁ±^ycVýyû¿­ú9™xœAnÂ0 ï~Å~ ÈNŒ³®®=ökïncµÄÈ1Bü¾åU3Òhzdcz5º):Â@Ñ2çýìâ”fs£&k‡=†èHm¶ÈÈEuª*)Î<bu!8õ1º÷¥6x—Ò¸Ü·¼Àáë»ô‚SY»|ïr½Áí="Zç;[k~íµô.ÿÌÍ™Vy ×¼A¯ÐäV·Òk{óQ>Wá¡ªéùö—ùt=^’xœŽAnÃ E÷œ‚8Ç¦ª¢ªÛìÚÌÀ'F©¡rñ"·¯sƒªË÷¥ÿôúhÇÞ¸lgð™Á g	£l)&	É"F}ó†Úu–£P4Éæ‰"’§Ë‘GöD(º0‰Å{_Ú¦¯(}ÑïûO\ôëý	'yÂ[©_§ØÖ‹¶nš½?:F=oŒ:ÖµôŽÞÕn¨:µ¸¯G3÷ÒªRŸåV‘†–ó —¿˜Õ/@õ\,žxœMŒÁnÃ Dï|ÅÞ«X€Á»Ž¢*©zˆÔ¯ v©QSÒJýúÚ·Îif¤÷zÎ1¹)q™C².ÌœfC¤‘ÄÇ1LÎ¨¯Ðdí@ãd9í§¨e¶‘ÙZòd}D?GÔ9Ä¬Â£/µÁk]ßáZá´—áZÏ?œ†ToÏ`¼#44úžôµ½·Ò»4x“ÒxyÜÓ§}qç²vùü‡#jkà qÃÕf>Â…¸•o&÷ò+°[ÃÊêÉ§GošxœMÍjÃ0„ï~Š½—ýZr%-=ú«Õª6­ ÉôõkÝ:§™o¦f@™¦h9´f4Á$Ò‰Â$dtÊÅIúixbá½
8§É«¹cVÏNq@ƒÎ ‘aœ–¤ã¶äŸyÿ†{†k7ã=ß~#”·7Öx'½¶3¼ˆSÃÙnkk\à‹×¶ÀÇQiëOcèá¶îÿpç„ôð*Ü‰çòÞcz0ÀZ¹4ˆÇö„Ú°úîqø5M2˜xœMŽÁnÃ Dï|ÅÞÛF›€«¨J«Rõ+–e±Q°n¿øÖ9ÍŒôFS7fpÁ8GÊ#EÃ ¥6œ]'Žý0šÞ²Ñh:±âÆ©Âh‡Þhö²?HrJRO½12éÀ´À½ÎyƒÏœ&¸e¸ætË×_O'Ê7z°FÚ^[xêšDk±VÞà›các/4Ãå~„“;Â5¦ÊË?Ü˜Nžá¥3mùÞ½‡‰+ø-þ0”Šu/p,còB|%@ïc9=Ã¾z¬ìf¦{ÐÞ–}]óv”Kž`Å‰4Wtqi ñþbð™xœMŒKNÄ0D÷>Eï‘?qÚF#4 #q
Ú‹™p|’µªWÒ+DP´"LÆ“Ì‹·R:,Eç}Á%k»$§c)†ÄgÔÐ/sPhŸ¢„X²ÑÚjb˜µÓIæÙ¨dDØxíÞz»Â¥Ãé(Ó¥ŸršR¿?ƒ²³CåŒEx{Ä¾Þ+3x§Ê+¼n_i…ÓÇS<à\ÓíŸŽ(•G‰».öç'xÉ2}×D°µÊP[épëW _!qíMüš K#”$xœ•PKkÃ0¾ûWèØA[ì4Î£ŒQ¶ãŽÛmŒ¡ØJbšØÅvÖåßÏ¡Ý;m`„ôù{EOwZîZÙˆ«–#¢ÎD.òBŠ]‰u™WU‘±z²„ÆJWŠjÎ¹ÊH
ÑÔ²âr‡‚7¹*r)‹,5Ã)öÎÃC&¢§áˆÞ¸U_ØöxÅg­¶Êw d^•¹¬³6¼âœ%t41’‡G2±‡û)¨nË°m–á`l¤á‡¼,ê¢Lò2É™}i£³‡ÑØ´ít‚6õaj’÷›q«Æž{ =ü¦œ0¦¨soRE­÷ÖAƒôÒ'‡‘BÀŽBb‘ego"­n E3LžÖO‚ƒÖ|$Öe…8Ÿ Õàitï	ž¬%µ8ù™5S»eìÉt–ôÆµí¦™÷ÿ=${Yõ%ËXHTÛÑàºõu‰ç@9M×¿×ß‰¸7ûÁÑÂ\xœMJÇ0Ä÷9Å»@KÒ|‹ˆ¸pãR<@š÷b‚¶)Iþ ··õâò7Ì3£Ç…{-BX5ÉÄÆR4¤!F%,*‰Nyv„Fû )¤‰Ñ¨5¸ ]$ƒBFtÜ{ø‚Ö’ÔŠ³p¹6x¡22<ÝzÌpÿqÁ¼^ðXöAŸs¬Û­œ]¤ò&n9g§º•1èŸqö\¾àh§Rm[ÐŠ%j±·~öŽL°…Øj¿,€%%úýZÌ}fìµ¼ï„SMiZ¿ïþ²ƒý ö˜k™xœŒ9Â0 {¿Âò™µBˆ–^°ë]“HP0¿~€(g¤™¶ˆhbœ|m@†¼KÌ$®Ï5Åœ+ZpAÝq‘©iÈÂ™D¤„¦’í¡	‹¯Õ3#pä“ÂgæEdlƒÞ?eÐ›ËVô…Ý85¹®Ê|ÛjCç5º3`ŒúØÛØšü™«£œeÒ<—‡R§ñ<	ws­½Ö¿Õþ}Wf—xœKNÄ0D÷>Eïf•Äñ'¶BˆÄ!ìv{bM>£ÄA`Y¥~¯¤.HG6J2	’L¨œt=WÖh©7½’ÑQØÝo´pF…“6R*Gƒ4Ay­‘s¥•µ‚Êpï#†ÂÈµ5V'ô^¤è™˜t²½´¦ÀóG×Þ(—^ŽGx¼¡gxÎK¡©Åu~‚¾!œ0ÐpÃ9«íœK¡âì¶+AØüR±Ëì÷ªºÀš`,å¾?tÝµŠŽpâ] ¥þm'Þ-358e¨îþúæ‡gì5R„ùÛë’¦ŒeoÙå†uÉxœ•ŽMNÄ0F÷=…/0(i“6•bX°‚C¸‰ÓFä§J3pzRªkV–ì÷=%U×
1Žd­°†·1äZrj¹BQ5+fŠì %ÖSß“’¤G&í ˜XI3IÖ²–ªnlðV–”á?]€ÇpŒ¼›1>ÏÐ)<—BµJrÙÃ…)Æšº®ú²¹ãâùµ
J›rÀ‡£96qòe!¸m'´­¤ýC›Ëd`òIÀæ¾	ŽÐ‚;AÜ]´wªÝ‚‹§B§œIx{¹¾þÂhÌýé_‹3œ	]âvoÓü æ,|‹“xœ•ŽKnƒ0@÷>Å\ dðà(Š¢v™ePÙf\,ÀDÄäsû©]vÑå{š73ieT„­TZ±frHì¸îtç»†HzUg’ªEW³rL€	½ô“$Ñ5ªík{«=šTŠ”¥•0[–Þ’‰/—mÍÝ¯+Çw~ô®tË|‚ªÁU¥©†"_"Û9¤Ä+\8¤Þ¶›à8îPÚÎ!&žþÈE¼Ï\¸)À‡'ä¡k˜L
K„Ç¾nË±ÆÏÎÜ’á+r_,Þöuøï÷â£¤lBš1xœuRÉŽ£0¼ó–æu›Eê5BÙÈž¾ac–„‚Yš|ý¤g4·™w«R½÷Tªª+ÎA¨P$cbÈTeéC™ÊF(CfDZŒH¬0U*ÃŠßjÀ)Ñc‚u£kZ$£($„0j(U¸U6jüÕ#‚)‹TŠ¬¨qd ƒC
QÂP¦CB¥°©Ó¢>ÏêX`)x»|ƒWú>²[ÍóWV\øü5Œ‘^dM–¥'{ÍêšWÀÍêICÁÛ­¨x™÷Éó@Cÿ³–”‰Èðò=–ãz°rW`ã¹s»[;¿y	H ³LÓ²M3°‚)[ËëÈ^[¾–žñ²U*¯3Íhây¦§Ê« ¿l}ûÓµáÃÁ>ÐñXgÿ¨fÆt§Ÿ`F]¶zT]9›Õ4VÇ7Ì‰¸“¸mÖDøÓpF\†â•;õP8§Zö)	P}[S}© ¤×è¢AçÌÇóØrÝWO¾t<š8{¦8b,èÁûš·±a=R>‘@]yçý¢T‘‹kw_®÷ò¼uú>øf"-4™k\ð¶š£ñ#ônöœ©}ÒD¾iÕml—… ƒ:KÂ˜µ#e}7Ûa{ ÉýôéOèÞl¦v·dÇ»mm4§³vËPlSµžÊÍÓ…¶*ûþMœä°ã¸,ÙÁÚ[“S?Âö¼ZâÙø²Þ¤YœíÃÉut¦*Å]z™W¦bïxl+*ýÉÌYŒþ˜4çUÂAÙä9¨ø½á¢?0 ®Š+ÈŸ­
‹á5ÏÆHÒ8û´Éò(»% â©þh óÇ‘DxœSËnÛ0<G_±È%	Ú’ü’ºmâØ©ÑÔâ8EOE®$¶”(P”ÿ}W²Sôè…âr_³;#g÷âÐïÆ~%~ £ ƒ Cî¹ˆ±%á é‰¡Wr‹…)Âa|…ƒáxÔóã¾Àˆ¢$ý¨!{½¾ôxí2cá–²< rÜÀÝ~?KŒ/:Æ¦!ô#DÉ}`þÀ÷=aò\9‡ÿ“ë-Ô+Ì7÷ À<Gªãy³Ú6àõŠ}ŽLhAgª‚Â8 †¥ÒªHÁp×–‡¯+—áÛS†º¤b—ÇpîE;cô/å®@¬¨cUë¿çVñXã5©«kà{£dÓ…jzªPNq“öJµ.OyŸ¦ÀÖ!°Øw®5h-m’-;Wž÷D€Jk¨nÞàwwä*3µ–í81‚ÅÜìQ^ƒ¡^öEFâ)ÅyÇ9Þ‹rYëOŒÖæ¥×éÄóÎ„ î’;dNåìn·X?>-?v›õöq6Ÿ†ÍÛýj{²k7û2Ÿ}ÝÍWwË›Õn×ÎÑŒ“quÊJK¿²œ—ÓnfrìÆÉÝ†—î9ŒÈ™v(¥r\ü¢ãP8cYå¬)š½$ÆæÍàÇÕL&«PÔV¹P œ¦E=¢‡åív»¼£ÛêùÛ|÷<Ü,×«éÅ9u9¿ f ÔuªŠª«
‡úx²KÇ ï{…wö¾oø“ š@ÂÑÜÂœ´êëdX¨j‘ABû¢V*Ûx •ÿ­.´¹*hý²Ó¯…9JûYW†«–6¢ÿÖI‘áÀ$­ï¤©V&G¹{KÍJˆ ³‹êC-6*-P2“$,>Lþùûy¿Ï0e¹’=xœÕ“ßjÛ0Æ¯«§8
	$A#Ç6ëX[èôb°Á.ö§ÈÖQ¢U–Œ,5íÆ ±½^Ÿd’³%…]v7_È }ßÑï|>ö”Räy½,fY#h†XÒ¢,XÃjYÊ²á²)XN:îÐxÀš’-‹l¹ËÕJÐ…àŒ±¦.³²Î0ç,§å"/	~cœG—…+Tž[x¦‡÷µâfnÝú9œÄbtE+3Ê(%m[å=þ‹—\ª;ˆ:¥¹WÖÀVù¼¼¸˜„¼vÊx9ž€ê¡FeÖÐp­Q€·Ð¥3à‚éÕÚÄMm£ m†>Iýw[i!JÄ,”Tèæðvë5<ôØ*iµ¶ÛäAçb„Š#sÛâ¼©2ÊòŠU;I=®å¾k~ ÞuØø¸[‡6o%øû“fÏq  Ñ5…:øƒ%ƒï÷®ëë/á+¿áz¿¥+ßÏÞ8§;šÓäÒ3zen¹VâRjm›èÕ„q"žL¡½±‡ÎnãÇK¼[ûÁŒ¦¿Ê|zÒ|yRåÿGó0º:?»Œ3åö5bû4DãAv&`¬-#†ÞÉ™ø“ù=BÃœÉ=e˜½Ý©íbt;„9!oÆ™•rVßWýÈOx0Osœxœ•ŽKNÄ0D÷>E_ ‘¿‰ƒB³˜KN`w·'Ö{”8 nO"q ØU•ôT¯­Ì`™£sìü4%k)vÑ»4Ñ€”$êÈV9ñ+—v4ÞFÇÚeä ‰(&mIyL2xT*‘4"ìm®+¼qn3\ögx¾Ÿ¥gyÍ¥ñGuyåì¨­4ÊC'G)Å±.¹5þnô/.n\x¡ðPÅ}9ÔCËµq=¤Îù“q{0æ”ÎÏPhë…xÏ·ÂÔÕ”ºøýôñ‡öj÷žxœ]ÍjÃ0€ï~
ÝG‚7þet?‡Ba‡í	[iLÓ¸¸NKß~ÎX7˜NÒ'}BÊ‰Œí,W$;·’¼³JÇmª½i…;#=;a¢)CËkuÒ4ÂPcPX/u«Z*MÓ“V3œó¼ÅiÛë%©·qsõ®vñø¢]i¡tÙ¼+ôr¦;
y€—ùìX–¢î–b¦LãŸÞ¬¸°
*®‹ÎÊæGxöÐûCœpO—àúrÉå\-z*¸ãž±eô<ŸN1åïÏw-ùÝÈñ¿P3öQzt%_u7x0dœn»y<`š¬ÝÕ‡öû.û2t<—xœEÁN!†ï<ÅÜÕtéîbcÔCoÞ§Ã´KÚÂ²5}{ÁÖÈ‰!ÿ÷391ö«=µjPm;ð€Æm'I+¶-÷ˆ»µÑ–¬ˆ˜ØgÐ½ÔÝ ×ƒÜ­4Ùž±5†R×ÔX©•&EFà’Çà-øllê¥Ù†çoK…é	ÔZ÷ªëåªƒ;YŽ(¯“Ë™|°Ë#¼,3°9Ö¢ÙÕâÙùÌ§|¥¥2kx}ÁE1?ÂëˆþÀ`ùìˆ0âÎ\¾ LGçB\#3ä‘á/Ù¯÷7@o!_bYKâ+ÁöeŒÒ2bvW—ˆKŠaæ¹Ï"I09_37ï-?U™Ç‰ç{X¢ÅÌ¿Ï‘)»3h™ÊR‹8xØ»ÿå+šx
ç:ILL…¶ðªà°_<Uë_ñŠ–=ŸÐxœ•YýoÜ6ý]ÑˆÖßŸ8ÎIÜÆmœì´A¯W,(‰’˜•H•¤¼Ùüõ÷†”dÉVì$@Óx—’3oÞ¼;#K÷NÏ²ÓÓäètOìíŸìžîdBìŸ¦;ûÙáÉIžE7B9–¥Ç'i–&üèø4;Lö“½££“,»GÉÑþi’íæG|ïô0â­+µa¿
éJö²µiÉþ¹¢	ýðo©œ¨©®ÿÅvŽwŽöwöY¼s¼³áÓZ:'¾kûÁÁN·=R·µ8c×¢Ü
¶»8Ž¢%W+¶Ñ-sšñªb®ÄãµrF&­“ZY&>”–™°oÁÞjg™Î™k¦¿èEd‘²\p×a_0Ýº¦u¬m2îèg®2–´Ëågaì>p•.X"*½^DÑykú…]$ÂT‚mí>?‹˜ÿC·ŽÓJž±Æˆ[r6N¸e<¥“aPTÓ·Âä°E/…Bü¬Ø¹oâŒg™Tã,©tºbV~ÌâQ©C@ðü\›š»(zUré¸Úpök[­¸Q’mííÏÜÇˆ³V)‘
k¹Ù0n­,T[Ú{ËàÄàÎµ‘Nà)ÚáàÞcÌ¶M—<8‚6ÕRÉšWð!Ég/ßÐ/ÌtÚÒU8yêÁÊš¯`¦Ôë¥…´€•]¦¼ÙzÎ,íHlXgiÜTm8ÕÜ¬7†oºÅ,iÅÍüI:³H€nMîT…%g?º'ÓêðcÉ½äR‘ù-yFx¬°.¦µ‹‡·ì‚Â«5ßXæLëñœÉ€˜hOf/˜!ßãTg‚>ÏÙàèLÚ”àµy°Ë/N‘ªm¼åÑw¥iáB¤UVÁ£ó¾H9¾–ëŒ@ø»åU+¬¯—„K&ŒÁ	5Á—¢Ót#æ]-UöxÐHFŒáÊ¼UiÈó¯DÝ‡úVÁ.@ŠÌê®ê=@ùÖ½à©«DH³üÓ
•m¤”¼ÍŸd¬ï9Çr P¾ã°Ö2œ 9ÒÖÎ¨O §–ù¨„"ö(5xÈ‚7q£g—ƒÙmwVý›‰q±¯M=x>‹¢×\±—€í˜Å®/Î__]œu¤ÊÎÈÿ­T-¹ïyÓÿÉEŠlÜÊŒ]É*!ˆÍ2ªD" “ÄnÀ ujŽ)íz‚AÞ%›PtDÃ¬Æßh¶u4cdïlxf¾^’éJò‹u›ê!ÌG{d¶L©¾{€ùÍ[PX!Ü²?«Çö}¾î³Dªakr.+–µuÃ¨z‹§¶MH8ÐÄ`…ïbfGÑb!Z['S§6À“[¤,¼TÙ86µì—›ÿ¼ëjìx5®ˆ ã6læøñÚìUY˜ŽQ9aÉß-•™áÎ*Ô†þüáç®¾ËÞ‡u™o½
hÁ#3q+ÓÞÿÜ9ž–1"Ô¥¢(rÞVÎçà®ÁJªé‹$+ ©°7á¶$Ç7•ðÞl¸+_ Ä·Òôç]‹œûŠ‚àõÇnˆŠR
C/í©¨Fåv1RçŒÑI±pàG£¤¾8KY÷ã¹p¦«Ýø|OÜönÌybdŠl{ãSÇKØ\‘‚¹':Rñ/i=~\Êô%‘îé«1ÖQâl=o†îÉ´öžžŽ‹'m-[¾²{ôxg_¿ÎîH°mó«®ñÐÍ]Õó…a&–*„Ý‰©n	Ñô[ˆ‰)©SWµ€¡×†Jê#q°Â–V­¾zxœ–pßÜQ<§¿‡ºìW6!CÀpVŒƒÔë]üPr<3\<mpú~Iìð ~ÓJ‚eýš¾Ö/y}6YÚþîœFã_”´F6„Jç`ØÉjIÜšµ©ð´ä­S^,‘9æžaO”|#Fö5-H‚g”Jq`ógãË>ïhÁ§(S	=¼ŸDúÝ	t}oš°m€„+*ï($w¸®eŠ´û¾¢©xJ‚É²%ñ‚:èÑÐ-ÿ	)ì6öH 1Ù¹Ï=Kû« ÿ¨X¿ˆ<G_)a~séuÎß€já8*$§Ê\ MòâŠxé¥,Ø…/¾,”;»æØt''—Þ¿ºì=nöÈ$@õUûãëW]ÂõÕÀ.FOòléËRg#4„i ü3
b¸d&rIR×÷\þû\‹OÖ7:z¯—‡‹Ðe/ü²°wÍ-ÄÉ¼.Íz0ïô7z÷û•ˆ_½½ô·~n³	2%öö.|øTÀ}™°÷Ë\@Ñ¨#èÀnmL=¨Q¼òÊ2–~5C—œçÅ°iMÝlŸÐ±—Nh€Mš?¹Uß~eäé{,ØoáOnì/GÐÐe õe[ÛR’ŠÚ Ò1ÿYW|ÊVÚÚ¥«µo'Ã÷½W=“ùz3¿%DƒJÍ;YÊÀGDãÀÖîp	z!‹CC*t¥ñO>:ˆéîÃ1'.@—–öjt¨§àâYÑy´@Q)¡’ÌwÄM $äjítýœ©kÒ.jF+ÑŒal);ª´ÙôÕsüõo!³pz'ÇÉmsäË„Lßøm$tzžÈ
ï4î°½J!å×6:B}OªÙP©Cª°bÌ»Ó>éÈ;h¿ö]oˆ^w/sB­	ÏÓÞìù¸Å£‹|·œµ`”–NúÌ(ºZ°ð0°óVC{àIbxýžÝ§)9UCeÄD>sòa™ÜHÐþ¢•èê ð•Tk­Ùe=¶>í˜¨8'.½w–€¥$ŸijP“ÅtçyÕPlP$@¸Ãð$º¢À+ê¢2aÚI·–$¾Lg×h?FïÀQVÖ 	öûx+ùÀá>Àëg+Aî’¶$D¹Eï‰äHýöF ÀŽ](žT"º¡ÕQü%[”þsô¶Ð.j´×¼jJöJ<Go¦¦ Rc)D.d›ùó/fá
åý™£ªÿ„>$¿òP u½ ›µd×Ú
õõ qïèÇ¾Šnx!ÙÏFÖ‰0ÅDD&Rz$I¬‡Pq7HÖ†ùï¤DÝ¸ûŠ•$âèDïZù@ßì’ñ\‡þ€ÊÂ %‡Ch˜æí}B_&î¯ì5ðµý›Ñ<²¯ðd…By‰ ‡f­KKýE)(ÛsÊé“àŽÉ*Â¯Þ‡Ê9šNîïÒ†ù«9Ë©ŽQ<»²7oðŒ7(Ì©LB¾O:ÍNäÓôË0¨ènzs?ÂFTFW-á€b¨~·¢ý–ÕÔ9g~=	Ô5Sf)õ¶·»Më—a±ŽÿgÎ€‘îf{ÑMZQ×Â¼`7ŽÆÌójSA[6M¯úÂ”¯`(6¬ØŸƒ>JQ’²Ù¹À©šÍw³ý‡òVZ[ÖœýÊ+¾ÒˆÁj ÏßJãZ"cÏL1
ç{Mßã5ú€´§±ûôF!Äg‘¶ˆT:¾8ÎÌ&0hM:¬’v&åàxÂyH«mŒEIÞmZ?’
¢ÖÏ_y=79¯·“ž»å×V4òÚ¦œ±8Gª´j³¡ü\†±(Aõ[„¡-|§CSwM;ï/§›S¯3œû`ž†v3ßû	=z ­ÞG‹à£;g¿•]·?©Œþì¿Ô]íw!¤~øŸú¡kŒ‡ÙL'KX¬}½Œ¢DèÚj­+Y]†‚ÚÍr^ô]~ßÊxNø‚:Ò÷QàXQ’¦­ñé–vZˆøŒ'„È-!v-Y—¾KyEH4­ôC<#^N{å<*hhÍîp8.=ƒÀíF­¡°¡]ýùúýåëpŽý®µÑ'nD&&ÁêEx–3º¦Ê.}ÛÚ9$ÍÖ;xW%?I1["ïÊ ¥ÃÍÅÛŸâ7ˆ%-™M 8¶B4P¯ådP	Ê–ž=PÎ]	ÁOQìt–Þu pã“C|ÅÉæì[~ýÿç•¨šxœe‹Kj1÷:EC6!F-iÜš`ŒÉ6§hI­ŒÈüÐÈûô“eVE=^µ*†{O$ž¹·)¢7ÈÞY6éd³ä”tŽ‘D­\en ºLœzì‚ÞIšlOž]–ˆÐl'ŠomX*„$wáüÇë÷Äe<Æeº vŽÐ¡1Þ´ÑZíëTZ“
_RÚ Ÿ·-pþyÊ1<åZæ&ÿówM{®ê:Á¶J„\Fù N	Û û{¥•e†Ã‹sôªÔ/*¸KÇ›xœ•ŽKn„0D÷>E_€±1þ Š¢(Ûd•œÀŸ¬Áa{”Ü> å I/Zz%ÕS•¸Qè„avrèÔÄ9/™í;¦„<‰«Î·Œ“Ý˜
h®­é•cÆ+´¢,*m¥„vNé‰ç)bjY¶Þ0”^kv<Ý/¸Ù^B*¸ÞÜŸ¡•B3ÝéžAÃ4cäLc(ÿUïyû['éq„ŒÛÁ×}Î<ŽsQÄœÍŒ„¼‡ta)eÏ#¥óé®ö2Ò5¤úÕ\z½Æ­†œ+f*„"ŸaNè›mšû=þe"ùa‡uNšxœmÎÁNÃ0à{¤½ƒ%.€Ô‘4i’J®<Ä”ÔîXÓªuy~R.ˆSü[þìðBäÆµ×å•ªE]+«\$©û®¶÷‘:/IÌa¡ÌÐ—l"Ömom4¤{m¢RÖ z
ÆKë\ƒ­C6¦>
Càù§8]Æ®Çn_@5ÆÉrA;¨¤—R”î˜˜iwJ<ÀÛ¶v…~îá÷pJ™é?î
œFš6†iæ4eˆ„ÀäõÜ-˜ž®Ä÷wÆÈ!÷™”/ðGsÃHë:‚ýs!ãA
{E„ªúUû‰¯‘Î·íñï„lüšxœ;n1D{B+”(êA6È!H‰Î.â]Zùþ‘‹\ åÞ›bFWµì$Åè’Ã„±e‰#KmÀ˜(´PÄüp×}XÊ®yO­ù*¥æIË$çš4¦‚ÄÍÇŒüD5¡Ð•<øÆ(WŒUª„–€(”…Bôbø1–{·ºŽÅ¾?ŽºØ—ïg¸È3¼­ûÐÛ¥Þ·Wë¦QJÈì€™í¶Ž¡ÿÔÍ§ö/µÒyŸÚItŸÏ
ç9z2¿òTYŒxœŽKj1D÷:….0FrëkŒ	ÞfŸ %µ<")Œ{¹½Ç7Y¾¢U¼IP¨“wNk°ÉjðàJ8:‹S.
Á[SLLâWê,Ä²—t*AW_2%U£P"B®PƒÖGÏc•ïÔx–×í‘gyþ|Á!½à­u¦¯CËEjk\ŒÆ''å•{º4fú§.úÏB'ùAwê´"“,#oË~¹.Ä­Ý;•iÔ:¥ßÓ_FÄÆF^Ð˜%xœQAnÛ0¼ó{¯-È²(‘Q$>ôÒŠäXÅ’\Jl(Ò iÎëC¥)`ôÔãgwg†%ÁÈ÷¦çánàÈwØBêÖè±“R—#òŽ%;a¢P€‹é:nL§•ÔBœ$*Ý£Ð#£Üs4Ý öÏeŽ	Žê™L-¸}ÛŠOê/uÎ”rb¢“¿6“+óY5:.ŸaÇûA
±ç¶­h[VÙÅ•B	¾RÕÁñœõ‡ç4j÷.ò7ã²¹¨ãcgá²Ð<ãÂÊGýÙ½dò¤KµZ"Ø˜,Œ}Oñâ}`ˆ§âbXè}|2¬ÞW&ŸH;{CÙ%27›3^Öã[í]Õ‹ô¾BÇ”êiøv|øÒ0öä¦@f­ÝªëÝÚÜo¬Zx\Ë‚ƒúÀÍ{y7iÙ=c˜ÈÇiUP£üñ]jÖäÙÙ^¡r!4-¨¼D–ê§jg~…ÌbðWp^¨>U™+?ÿ5õå³7ëiÈ£“xœ…ËnÃ E÷|Åü@°ÛQTEÝtÑeºxŒmT)àFé×—TU·]Íéž‘æ–„}?2!e+ÓãÈ­£•ÂZÚ¡Ö8I-'W•0˜z#”`(%ÍHÅÔ”Å9·ZÐ–¶8tíHÔV–˜à¬f/É­ÓÇ\ñ4ÿb³â0ÁåØqÖ1ØÑRbâººR0Á+º²Àó–ÍÇ÷4ú'
ú¦uÙvŒW½¯:™”NÎä(ïãBº¸¸¿%WpÞ_>6Ü0ƒ
~VÈî¡D°.›ø‰éNÈÛ‚ˆL%US†›ó\X°^„Rs*ÍÛZ«É!g7´»8M;}?üû<ùéþ~9•3xœuRËŽ›@¼ó#åí2/íF˜ØØØø/·™ax†l¾>x¥Ü’îC«JÕuèj^3"‰!ÈŒ‰ŠChz¤«L#4Â¬Ã‰®ICRdL PášLÔHT&:ÑuÆ(	!–#Â •ÂôÑGV ŽŒè¯£P“†˜B9
%Jˆd•©²Œ˜¢2†Ð€DÒÜò¤¬Á’¥<VÛÐ¼]žà•<ÁGZp–¿ÒòúHª¢©2¼@Bad¯)ç¬³”Ï[ÞŠ²fUþøˆGƒ–üg-®â&ÁË³,gæ®Áf¶{w¶6ÇóÅ@ }cQË4-Û4·ÖvA½ìœÙ;k©'™âwríö¦Î]×4ãºíFï×0ž:¢—v¬
à×]lÒ©ÙÖG#÷§²ïˆZçûXÎ'ÉYIyÜ±gkÑ×k{1U|:¨½:<ÔÍp;ÌíN Ëƒq:r=psGV“ØX$üÓÇ÷KžqÃÅåÖ9R0	»pËwç7ë~Jóy„Ö,ÛGhØÁJ?—}Pg]tÊ—ö>ÌÍXÜHæ²®<¦;?ÄÃòR÷Å.NÖé©¼TÒu=ú
 ;TQÖÜñ¤Îæ¥ËôÙÝZ´‰UTfòÖ³PxKúµc—y	w>sOã9öœû\ ÊáRì9â0ì‚³m»<*&407Ÿ|õpo´É7¦„‡*S
dÁè<éWÎ.óè2å] ï©=ŒçøÊÆYOÿ˜°buÌ@Õæ9¨Ù­eßEQ]^Aóhhž‹WÜŒ#;Çœ®œ ­BÌ0ëñó¼´hï -ŽG‹ç¬[ÊÓ²hþ ƒÓž,xœm‘K“¢@„ïüŠ¾;ònØ˜ÙDT@Tž7hlT` õ×¯;{¼TFFUê£=Æ ä0ÏbU‘²BÎeXB	Ë9*3%ƒ¬Åœ“y®T–é²7(R‘sHÈa!Æ(/ØL(sÌ"AÍ1|õ"yµd²‘žÚYô¶)À{wý,²&ù7Òþœ$Ê9I 3ö%µ×+¡÷À"t5æà½i{Ü]Ÿ¡§1{-üpVuÕ@*ðëŸtÓ²]°³và`[®vöæwÎ LƒŽtMÓšæëþm‰u_ìõ<Õ¢wz{Ò´beÛÚR®1\R8¥È=ºùÕ&:lô;'=Æo:S_lûÅvŒ‚{BJ6<qæ9W+=Ë—lJÏz|Š’Àw¤Ä“z¼6pÃ€f»ÛLGõz?Ê†é}GEwäÁÞ¹FàyØ¦Ÿ¶ª¾+3åÀÚAUýÃˆ,7áÅ°Ëm¬ÏÛ›ßãª¦u’-R?1:Áà«"¾—³~¬,3>U†ÿ5¿i¨®IþìO_=-\=Žb9ùxá…ÁAræuì9SÚÅa¤‚`­/ü,<˜‘|¢·¹‹—:"*š/†øAUÅ+Ë	ÓgÊ€M<‹$}—,Ïì.±œªÅž¼£	.çûïFÁë½él¤O5y#J¹‡ïÞÕ,dûƒ¨¾˜ÿÌL×ø™³75Ã1ƒ±+2ŠÖ£Ø’f¼Ò4»\¾g?"JÚføÅMÞ_ŸxœŽA
Â0 ïyE>`Ù˜t·ñêÙl’-Ú¦Ôíÿ­_ð8£›ˆu)Ÿ]Š%zbªÄÕSà*ù…@š•7YÔb,±p‰0PB¤s_Å×XkF>LpÉð®cÛìC&í}ÿäÑ^^?èÒnÓ¢òîr›¯ÖõC{{0‡'Uù37Ïµ°Š--ïó1Í:µÅ|Æ}I€xœ…KnÃ †÷œb.×°qUQ7UÕE9@Äc°Q1¸€UåöÅm*u×Ì7ÿ09"‚ì©æ’öº7ªç¬SrìêÆô”3r*%vC«#«ˆè3ða¬ëÁ™fF‹F‰±c£aœöªÖ­u3°V±å9D¸ˆÉÂs´‹Ä8Á)<Ow¬|„†QÚó†²5¯k¢Â²Øœ1Â+Ú<ÃÓ–Ô§÷*¹ÃÙúŒ®*…ßz™µkZô¡èÄ­JGXEJ`=ømOƒ``ÎY?ÁÇ†&B|¼îW×†´¢²Æ–Sžñ&´¶Ù/ÜÝ,ï"Ã§uŽH¼G•Qƒ)žCÊ{Æo–½ºŠ¥‡*-^Þ*B.vò¨Á˜ƒ¼ÿ]ùþb¦xœ…=OÃ0†wÿŠahp¾\§ªPÅ‚CÙ#œ‹Ä.¶£ªÿž$m%$6?÷ú¹Wº¡5£\dŠ‰ZÍ#Tnr¡X!+ct)‘kMN" KsY0UTˆr[çmxÅm(•¬Ò†Ë²4ÒŠˆ)õ>ÀQt^ƒ%†öqÆCwÃlÄgÈëªb</XÊ)%Ê£M	¼£M=¼LQõ°ÿZ “¬K8dóÇUgUU6´˜õí¬#d°*îà$bëÀMKxç`Â÷„FB\h×A{@<¡²ÆÎ¯Ôã/Khm“õN7uÎE"g; ”wUBÁgñ¾Ö¼÷1Ýjßž>àaåä!‰Ðašz¼Ðpîí0w†ÖúöPè«~Õ–kp×3BŽ¶s¨7Þ˜¼ìþ=;ù
³ªå›5xœuRÉnâ@½û+Zš#b°ÝÝ^FÉ(m0`fw—¨ÛÝ^ð‚w_?)‡‘fêöªÞ{¥R½¦h¦Ba`˜˜2¡ê*—Î™™¡"nŠIeŒ°TÐJä0u*ßyŠ®BdhST_Æ„L¸¦ùLîB!à7ßÀ†Æd]§Œi2„2Œ!v_‡Õ„*æ>Ó×$Ú6Ñ¹s7°ÚÚÀSò ?Ù¼Äy#ÒŸþ9ûŒ4„ ¦cÐ—uY–îÝ,nQIÜL[žòs%Šôó%¼´ì?²°ë8ýGYöÄqÁj²[gâ’Ý~cõ% Kmù!Öµµžù¯nË†k®G'´ì`å\áSÇ!S˜/ÞBÉó÷nŸÇ“ee¢$0:Ø¢Èg3¸H`³s{ZÎ-ûÄNd4}n«&NÛâ¶îüâÓŽLûòv3õ¤Þ<¼ ÞáF$P¸q½Å'ž¦î [fÓî4Xzehæ2Ošj@Ðê ñ°Yõøb4†w¦BQ—qwH‰ÞS‰{Ù][ÄJSÖ{Öû®®3ßO;/ˆ.çí€nõ\uºsðnµÑ®ËSý¶r¸–Àx²Ÿ¤Ýö0Z(µ¡F.J72ß˜èU`æ4»Î!å¯jX(ÝÔ>„;g‰4\žl4,ßg+	ûT1î5ãš{f¤ã ,§µãôÖËQrŒ£‚íwÛÍíÔKíÃ´G©VŽf°}ÇÉ³žÇ‘{?æë7¶;ú÷Ç¤…¨BŠ6MA%ÊVÔø 	‚êœm[GM’AÞe¢ï§ñGWMKÓøF›øœø—¤ïá/@8ÔmQœ«÷þÍïg÷ÛC‘=âþH"ÍùƒÇÀxœKn!÷œ‚Øâ7|¤ÈJÖYæM1ò #¦'ŠrúØ‘Om-êÕ£™3nÑB;ê€ÅfB“f)–âC‚¨|‰lƒ™;qƒ@k´GŸdôŒR*«C0)D]ÇäÇ~mÀßa…Û à/ûø>ßžäµvÊëG»p¹#•WRó“ðB°;m•(ÿÃãŒ6<=ì-¥œø~lÛ˜ÄË=ì«N:`­?@uôSƒŸ¹=.>F¡'öƒò]
4xœu‘Ms›:†÷ü
ÍÜe&1P§íTÄcclÇÄŽï&B2
ŸŽùõMÚ¹»Û³{ŸyÎ9‹·Wœ–pÆ ´‡ÄÒM›™•9&ÁÐ°…I‚­M¯{2œ:&O‘%ˆ ÐJm;6ÇÈ†„³D·P–0‚œÿ|‹`GÏRÆ„‰uŽw ÌÐùx…iq‰„§Z2ôy£ÀŠË>îÐ±|->ÃCú~Èºçåkªï ZÈFÈ´‘	îu¬ëÚ­dßs|Ù/†|­ÅÛòöãüq`Hÿ²vnÏ<ƒûÏq=?ˆÀÖß‚}àG4~~ò~shàÚ¹Ì¥Ô}¤tçî–,Œzüøä®pþ†6£©‚+¥Ù"è²çGë‡ÉöxY3´ÇZ?MÈæox‰{Œ,ýÕr˜¢"^eSù3š—„eÅñÎº“ñfõCº?‹ÛìjŽW.ßÞNÍ"ÝˆäÞ˜|Û¾ËŽÇÞs;‹ÛîœÓw¼½ÛLNrÊÝñp}
“r3ûmÜŠ(Xü»÷Œ‹Šy8STY+†Tß6,\îkÝ=G]a×_è‰Æóuè©i£ÝÑÈåcXF;E	&­ryp=¾¤bkÆþêbä'Ë9!'ŽŽÅaª†zëœê4)Ú€°uºš\¤Ã~Ü8ïÙöÅD¨†åØ£³›n§MA	²»Ós:›EZo½)}fkÝMîÚýþçŸ;.O©må‰oæ/7L¿ià[²ö§3/šÿcÚš«3íP–@ñËÀ»üƒB5¨d}mYÍFø€gB¾¿ö·¶y•õ«âIVqM«ÇŠß³R~ÈðaOÈÐ²•5™ìzÕ€nhÛFõ¿ Ötfœxœ•Ž»N1{Åí¶@»ò;ëBÐ QPñ^û:±²~Èqù{‚ºÑÑŒtzCô;ëPPå„5BP6¯ÞÎ«q’+#¼¶:Hí”!Õ6Ì4ÓvÁ­§JZnŒ¤ÂPí)õTÎ;á&{î‡Òà5æ÷Rà%Á}úÆ)¦ÉãåqŸlÜ&WÒ0%SÔpwÔPJnkŠ½ãrÆ¸øÉI¾$Ýhh}ÂBü€~­b†§­ÆŒàã©·§s­¥uBž•Áë ýêq˜y‹ûŒ~,!ŒëuùË'ò	²’l¨‘2xœuRÉŽ›@½ó-åhÍÐÍ&ÍDÃfŒ1c#|º1`6³xûúàD¹%¥º¼§W¥§z5t”‰HFT XN$'*</!¬R$“GJ"Š|L˜6êh= ‰‘œ¦„…ƒŽ8EÁW H $Ë¡é$ú«çÑk)•&}¬H²¢L-aŒã¸(N!N„2CÖtÀ¡ùmì“|œ_à=~¯¼hùž4ÕO€,BÄÉƒ78Ùg&¶Ê‡vÀÊ‡Åƒºéh[>¾NÓ‚1þÏØ©=õù	¼½J3-{6Öìlk­ú{ÏüÍ3€·^K4UÕtUÝjÛe²<çßº§9RVàï+ßÙ7U%ÛVõM»ž)™7%Î–KìË=U`ßJ'v¹û5ó*žÍÙÒICèž¯×µoIìÑÅ·²]gø¡‹&…žnUËRÔ§Ú·Vþ¤…‘n	ÜP_õÀØ®°šÏynØï
äé(7fZåÔÎV~Z?Žq8ÌæçÁf€^‰”xÞèØ^&UÚ#nJ¼j®ÀFM‰w~ŠeÔ—Yó(¨¡?0½<Æçvëx÷c42ÀÍ¸BqÙíx53û¤òºÞ:¸½ò·yq{.P¯e38FËÔg‹áJ¸¶;ƒ‰Æ÷ä¡mBÃtÈ}×—çEëEbQ5e0Ûà-ÑaSI;âõ”;ð$ÔU_¶J\lŠlq§4ññ'>Ù™ë323×Æ¿c\Ú(hÇ²½Œ´ÀŒ9vM’¬kjÈ¶ÑdoˆaTB(§é[›ðLÕpÍ÷ŠüTˆò.š1xœ}RÉ’¢@¼óu'Æ¦dèžèBÁqÅíVPÅ¢@!*~ý8=}œ˜¼¼ˆŒÌ<¼LÞR
t¢K¦*QŒÄ„F%S–u¨˜ªŽ‚l&š&ÇDhpKk4¨a#M‰¬©æXR<6ME’MI#’D$ÅÐ	M_"÷<g-Hò–Õ¼]é³ïhÛjÖÒ¦FYÁó>%¬ú	 ª¨Š¬«P¢ô‚ðb«‚sÚ·à³>ïß¶ÏÿÚ²&ëŠüøËq½%X»k°ñÜ%ÚF¡óÅ@ ÷ÎJ,„¬	BøÉì8u'¡5×ó³²ºÉ­wGˆÌ<Í*x¬r¨-)‹U‡öÛ«Ï˜n,dOÈM.•ÛõZ‚¾îžM÷9¢µ‡—‰|r­Þ£•C)Ä°Q¹H¶–pÅsµ?ækíp’Ÿ;90’‚áÄŸ†N±ð/á›¸róF‚™úñ<†þXŽíÕþ¸8LS7b8FìyD4Qí½Ó1}(Íì4NÊ<9ðzÅb·3Ï\]n7Ó¨Ø1]Ý9çxëëíB v{Ûí:õ¹ëå[`ÓášŒ¡ßûQ¹áD2ð<nR±9Î•Ö!æ€OúmÈ™QTí](¯„ÆÉw4¼\,³òþ´kp‰ø=	öñãõ1{àæ]u1²by¡Ã„\¦Ö–¡·uø¨~=ÂßÎœ¥ýïÆD% {­1Àd/œQEaÏÚKQg Ž4÷EI ®	Hû:á«q	XÏ›žVƒ¤o¿†ü“¶¬.ê²¨)hXËqFd÷gŸxœ•Ï±NÄ0à=Oá…VI›6Í	!ÇÄ„@bn‡F×&Uê"ÝÛÓFëÿl™3 VRYkjã•­ºÁYM½nL'a7´®ÑZµ¦KŸ)2øºm«q”ö¶²=ª=¡tuSY5©žŒGýÆcÊðDG¸ßVáæt	åp	w!2M%¦ùT£iL¥$ÒH)öé˜éÜ˜.âÇLNá Ç¯–¼×!ÓºM)ÂÒ¯+yÊ9e!^G‚åH¸Dë…`ZÎððüÇ7	œ€÷JHÈÓ¯5_úÖ´«Ýˆï3K!^Â{$W$ï‹á|øËâ¹'€94xœuRMo£0½ó+,í±êb0#µ«BB!ßÐlRÈ“H Æ„Ð_¿é®ª½ìÎiÞ|¼'Í)86K	¦˜d˜ ÄQ®é6¦5DuY¦‘Q¢)M*øY;Ë˜¡„rb!¤œa¨å4×¡m`œÎs›ä_óÄd–žØ¾“#‹bLlÍ0¡ŽM3·©Í-›,çš’vòP0ã…< ·kÙ<•Ÿà;ý/ÅYòê;«O?€f†…lbað-•{õTHÉðt<kÁ›jxÙß	:úŸµ}³o‹=xü×ó'Kú!XOü¥ósóæý®+@}ë2×qÜ‘ãDn4ežìËÑ›;³GcuEbÒ;NL&Ž»úx-ÏñB‹(† í6º±è›C®$Þ9®o©eÕËMá–ž<!‡e²%‹|l³^Èøa„—,ÉßÃ~lHis–* 9S‹ÃM¿Ë£z¤þûÊMv,ë1ÜÄ±~ï¯5:®%™v»vÔìêØ¹ÍiØÍ’›P€'$ LU)!éæ|Ž§k¤.Êæänùøí–LH¬ÏvS›Ñm¡Î©Èr÷žz›^Ms—7™ç;è—VÛ²·¼g²ÛþºÞûf¹]‹u4+ÅmTÏWs¯¿M.
(º6!‡«¥Þ8?–¹Y^.hËí×èÙ©‡ÆÃQÕ™Ë[ãÐ9Ö¨vžð¼Ž¼Zùã™·ÿÛ1eÁÅžƒ¦«* ø¥ã­ßA.êx­o´õYÍ¿’öðx‘¦º«ÕçÇSZrEq²ŒgàÞ[ 8·2­ªôüS0µšHxœ“É’£FE÷|Eî‰²ép;¡$„ Ø™Ì3‰ }½«Ûö®~»{"î]½CŒA‚Yd Ï XæC)‚,‹XÄ1‚Ä†ŒÈbYæcÌ$1Õ…n€ÇD2/Bž‹¸X€~õD	,/â˜çÃ¯…(*œHÖÀj‚`æÂÃ„ÀõðWõ/ø­›ÿ¬(°[²h†e*në:'ÿß~Ú¥cž‚ï§êÆñlÃ÷£qQîMÿÁ)@Ü9¾UEQwŠ‚ö¹®ÏŽÂMP<ZíäØnsã›ñ•}î•êUö¬ìÒÒùSà•¾n6îjÆLºµzo±Ð@¯æœîx‰} Ïl7'’®oqStÍ@ö6‡Ûkã»õCOÐ4Ý×c}Ð5Ãv
;\%4+SíG2´e+†ÞòaËÜÖU$e’d§Z¨ò~ÀÊÓx0˜é'Î2…G¦YÇŽ…Ýùyä¼³Áúì+^vûøÁ÷°Ü¸i™yÞV4ãÆjµQí²jOÞÓÞö*G?¨W=XÂ«ÙÜV¿_äæíÑX–“×ÍõèFHjMXŸ_töŠoñ*©ù
) Ën¿î±ýH\8™~3mþÌªgïÍuÖ™xëÐ‚²È-Q|Ái]í¦låÁ•lùNV‚§Ñ³ç1+ÕŽÕË½ïTC°¥KÏõ\¶)Å$Ý~ú!QÚàé*ôòÉCžX2:·Fc”¤ÆÅSyÎJQ•·ûNÃûsXjí-x<ÎCçðð.šüi-·svmåÊÕû*—w·âžòæ4\MH_Î¿»Ã©H_½—J¢'Ku£¼­Ä³%1g|}´ô{‡÷6Q@wâãÁÊžë»@êés;¬«Ús3qeQóöxÎ41°Ä6*Kí´(Ê%©wÑ@´t©/ö×?œÕ#j":y=ÍŒŠ[&ÓJ‰ ¢=K¿Žæ¤F¢\Óõ<¦%FWnˆ@»ÐÑ¯Ÿ÷Ø¤ -Yetâ§’vÎ°Ó	B–¨ùíÔì»+ÖÂ¶H9<éçëÅ(c®?Îß(ðmÍ¡þqF¿h?3†RÂ¼Ç|ÚU˜ämòf$aU…ßEÝó´Áè£M’hýý—ü¥þA<t^—3xœu‘Ér›@„ï<Å_•£’¶©rR	!ÀBhAKnÃ0,<–ñÓGN*·¤oÝÕ__ZpÆ€d2¢šÂL!Ä”œÊ¹–2¦gé²E5UTl)Lêg ¦h:Iµ§:6ÆLlh¥¦ª‘\±ô#k†NÉß~ªêS‰Å0QT#Ç9Q³”¦˜¨X1t•¤&3©DQ¶BV‰œ¡§%<]?Ì×ôÃü¨Áê¯´½}E×4aËPá‹lÊ²ôHo•ŒƒW‰åÂSÓrÖÕãâ10¤ÿÁŠ®è«¾|Èq=?‚Ø‹aç{‘½O¶îï\	î½CÛvf¶½q6uÅý8Û:¡Y^´õ+âþÝ¶³¥ïÛÁ:L~6'_	_\"4"Ks]	Ü[ÈÇc–°`s»ºj¹åWg6:>XKÔ˜ˆ¸÷Y9ôùú°ôã[…Ct å˜—K°Ÿl±üjøc8­×“iÐŸ[O ƒÂæ_{ÝÆŠÞÎ²éÝœåŒßíiiÓ~VÌJD‚‚°}ÕíÏ²£-ÇÓº^i÷³š¼j¦UËOï£»K–i—¡£¹(ÉóQ‰ÞÄÉ;nåtÛ­$h_9¥ñ‘ïæÂ§áì%£GMÏ;nóÕ~Í)^µ¶˜–vùÊ´ë5|öƒùêK ‡ìÈ/Áó@Ââ]sãÉ>çË9wžï‡—k]†!	6öCw:©H{ÖmUAæŽ¾VÔ +ë›ßB}”¥?Ÿ¹ÑüßI+ÆÝP×ÀÙËÀzŸ4d@ÎÛ”—©ë¶™ö«ëª)$iQ½²}ôÚÄØµ=T¢ªûÏ |¤É kiÿ¬*ÿ“xœ•‹ËjÃ0 ïúŠ½‚´Ök¡„žJ.ùˆµµnTüòâ¿¯)ùÌim"àó0ÐÈ]q…ƒ/˜m²>òÑõ…S	‰‚esç&‹Bö‚"!am3Û(±Ý€œƒGLLT(qgø¡·µÁ…[ÛáÊÓ´.ðyûÿíëgæ:†u>ƒ¾óD–>ì9ê\UåÙ¡{Íæ»>A÷ûºA]@eÓx)ðÐ:mæž–J+˜xœ•ÎA
Â0Ð}N1{A2é´& âJÜxˆIfª•¶)1‚ÞÞ"^À¿ú|xðkQlcPç£Pê©ëRÏ£HKÞ)¡jƒ„)™…‹ÎX¢´¡sÙ‡^¢¸U†èQ½6¢¥4Îð³Þr3—ò†cža»Oßv¼N<ŒÛ”§Ãú€
Á¢…]cÖujÕ?0:üas^PßK~À0ƒäô0:#Fû›xœ]ŽÍJ1„ïó}–¤“lXÄñç ˆoÐ™éÌF’™!›õéâÉ:}TQTµÊèöhÑÅÉ Æ (HãpB¥ƒ5?‘7Új?lTyi (ÆÀ–E¶S£ÓÞ6‚Ø*©zäI».í´Vˆ}ä‹«ÃíÎ•›¹PÊ»q-× FçÍ^Y¸(ÄÐÝ’Zã
Të'<QÎë‡Ó[ù¥eÕH”½Ü5wé¶š–––Ö™êÌp|>Þ¿¾<ÞÂ;åŸ¿òQLâ”xœ…AnÃ E÷œb.`c8Šª¨›.ºL/ xl£bˆ 'Êí‹ÛªªºéòiæÍ|ý’AõZJJ*!¹T7©ž¡VTØq`½ábTuÁ«N
Èó®\ñÁ2´½6\	A»NÔA0©ÙD)“Œè­,1ÁEÏ^’[¦N¹âyþÆvÅ'èœ3FûžBC¥ÄÆuu¥`‚Wteç-ÛNï;´f‡³}[ô«ªËª“p[±qÑëQ'HaªYF—m¼az€3\õŒ™·l%Eïë÷¼ÄÍâ‚6¡DÈF²å?·ì¢ÃŒ€·ZQ†áŽÇÝøÊP${ãÊg–²èÒrqsÀ±‰ÓÔ˜Çñß¶ÈjŒÅžxœ»N1E{Åô(Á}FŠ  @ ¤Dôc{¼k±ñFö‰¿Ç)è(èî¹Ò¹g"èƒt²kZ’F+×T®×NêaÐÞ™FìåÐ[+.˜)1(ã•ÑÍHc3ØNë0~RŽ™Q¹ m$jxåyÍpÄ)ÂsŽgKy‚}©xXâ4³\´eëÖó¨ÖÈNõm×Á4RŠÚž#3ex¡È3<^‹›aÿyƒ­½Á!&¦åWo­¥ild_uÐæèÊÐ{àŒ©\ÖÌ0úº‰ÉƒGFðq¢ÂBœæX sLÔH	írË°~Õòíã•îOOïõØÄy]Êe+Ä1N‰üfac¿wÿü€ø†å€M–xœ¿nÃ Æwžâö*)ÆØ(ª¢.:æ	8lT[pòö%‘ºwü}N÷q!‚“ïu Q•ì•ÐèÁXëõh¥"êbËH±a¡Ì´íF¡ÇÁÅVÔi{²Î4‡")£<¡ÀçµÀ§_%Ý•	.µáuIÓÌ.q]ÐÕ£_ïÐÊt£êÇÞd/¥hê=1SoJ<Ãç^ý—Ÿ'Ý®)3-u­Uû^[8HÓê"¢+É×3`À~ƒm-\±B ¿†”'!žúKJÙ/{ ¨äù±Qã<rZ3Ä6bÏÍØ…w^êëR=
qKS¦pXc<¸ÇùŸKÅ/	EzmœxœŽKjÃ0EçZÅ›ýe‡PÒvÐA'…tú<Ù"¶ä—Bw_º€Ï¹¸ÔUÉFnÕ&8%b2sTÂnßDÂ¡×Â±›oX	Œ	£9£VÑø\Ÿ½é¹ÍI
-‚¼)0§impñc÷V–€m„Ó¶ãy.ãD¡Ð6û°âº<ƒÐ®×Æ%á‰KÎÙn—B„>°Ð¯÷-Npº>àp.•pþËÖRr¥tÜí9«ßá%%øzûj¾n·µc—2VLÝšs~ŽÿüÇ~ ^5’xœ…;n„0E{¯âm`ñ‡ÏhÒ¤H—Y@d??ƒ5€‘m±û@”>åÑ½§8%WV×ä…!gõR6iï¢D©P’¶½’¶c«I´èeËÏÑt}£9ÕÒ¥¼–B»¾­-"éž™­Œ1ÁÃÞR˜-¥nùÀûð‡ÕL/Pk%ZÕ×MÞqÎ0Îs(…¼S(#¼nG¸=O¨ì	÷°šªãø«+!¸TòÐÛCgÞØ0_aË%•}¥Ï\|´ÀQ‘Ã2€2Æ/J;Lq€#-íŒ}Û Ç™ £#pÛ:4%Ä¥bì†…Ü%z±ûõß6ö¼r¤œ+xœ…RËŽÛ0¼û+xlÑÆp,ÇÅ¢ØöR=î”DÛBÉ+ÉMó÷¥œ¤@{Ù›FrfH¥@vÝ€º¯Õ¡C)úZ÷¢kd-hèZ]}ß·uÛªbÁ@.A£¢ÛFôª§C=ì%ª¾Å¦®k9´b-¥
\Óì¼âdà{0gIa‚çÈðeºÃòL_`¨»}[QÁ§JTU¡üùlR¢ ?É¤¾­QÍð|Ê ”¼—È–LÌåKWB°«:./F”Á¨øq]Ü/ ¾Áhý”w)xÚD”–ŠâÇi¦Œ•ÿEá
ÖOÀaùdœ6
Ef`Úhq•ñ±¸u2nú_ã3\0ž¶ÂÙGîàó›#• ~xàºâo<Ï€o3¡†ÅçÄÖEg/Køj£Ôðo;¿$ã]Áô{±F™d¯›öÈk¸ëã[–)·ÌlmDcIgSÜë¨R°œøÑq‡ÖBÞÝ‚Ê#¹ðüšÀ¤¬%	øœ.tæ.˜LÎ“IìMÃ½ÍN¡sžS+EËm’Ž.œ'¶ój&GzçÇq'¯OïþšâƒîÃ‘3xœu’Is›@…ïüŠ©Ê‘²Yg€”2 $@;HëÆ2Ã"õë#Ç•[Ò—®÷ªû]¾G;Œ„)Ÿ$ªË˜‚IL$QPR¤iqªii¤&± 3mÔá0Q#$J¼&+š$™H¬ErŠÅ4R Œ‘Hø¿÷	QÊÁ4²"HÂ#>$•V5^J#¤A&hÞt`‰šcè“¼œ¿Äsü%ÞŠÅÕsÒÔ¿€ e	ò2Ïkà‰Wxžy¸uA)îÀ¢ öƒ—KÓá¶ú|ËCüŸ·¬Íú"O_cXgv‹ðÅF?=ëÏ L½‘ºn˜º¾7ön¢ë¦kzÆRÉKy;J3ézj;Žnrë¤"¥µ¶§;»¿››àÎ;VâŒ/§·ƒ©§½XwÓ¯Ë­P¯Zé¸…:¬EÍ‘cooÙÉ°Ñõ^ÜÜh5KÉ’
ÇùŒŽ1ŽüÁ>ñá-»TÖŸW‚•ø0ù::}V§a¾à&*‡wEÙ
¥2½³$c@SÁ–a`8t½ïÈ†š®×ÐÄõ4V7‚Šâ¥½›ÏÏZ‰ýsQ%ÈíœžÕ=Ú tè¦‘òAºŒ­Ç¹êu?üA^´¯Û9æÎgÛã‚´¼GÜrÚÄîÕ	x+D<s×Æîì<,Tj¡ˆfÁ=
V“Â}šÞ*ÛÉoíz-B.Ì±Ÿòú=4QÕXUG6­*.ë_ðjNŽÍ|3³6³cÖ¸Ë0h‡ª¾¸§àÇ> ]Sƒ¼¬£ªj.\]$]sa˜ïýtküxÞD	iÑá„‚¡Ç ! hZýÙWûŸxœ‹KN1÷>EïÈQ±dÃ†´Ûmbd#ãDÊíqÞªª¤·&38Ç>(I´éd¹”Â%£UÈ>Æ”cÌ¸QRV\qò¾ÀÑ†^mˆÆ+åˆ6³Î+ï’×E
¼­Ë˜ðŽs>à[;œ.ßýÞ¾:ÖöB£ŸA9klRjx’ÇÄQ{]‹ÿu½Òûó~ïü
Ÿ|mH¹N¦·†Q ZMüßâO.–3xœuRM“¢H½ó+*b=@lÌlL(Ò(M£(Í­€*>D¤ùñ×îÆÞfòï½ÌwÈ—CÇ€ú"¡Î3Bž(4‘5fPQ¤=%CS‘j-íX3 ‰rž0D5ÊÊ’”ëªa$L“(CŠ¬jR¢¦,Sõÿçé¡+ºSª¥…|!§*d	M9dº¦ YF
Ê:Å¥.+‡±Oðýôß’'øY6«¿¥—ó?@ÖTªHVUð*!Iì¹Ö»Öc¾7—Žµõü3ŒÉÖò6ïË¼>‹,mÇ¾íƒc{xËy`êIJ0&&Æäã-Ix1â¢¢Rß¯JçLgkÇÁXq\Úü“Þ}î“Ïdrëà*€MÔÆL·®oá8Îw‡šù‹É¡\zN8‰}×] nòÈ’Swæ¢õ¥d-ÅðÆ,sBï`v~N—"1ÝUê2ñNÛµ2û«A5ß¾¾ŠäðrÂä¨W/Õýz?yžã´kð^ë˜Dîã&îcýŠß„Å½éšÕn0º¡r^5-ŒÌ$Š+_•ö3¹ñ<oGù†4Ýr]øœ‡™‡J;¹«cðrž+üEÝ;Gåº8½ü¸¯6pœ-¢7ÿ+šnò¼=—_^cgûÇèyc9ˆÆ•Ö~ˆm&ˆa¯4ûhðTMšbµ)Çp"oÛóçÙSÔ$‡J}ëv´>ùüØDþËléY¿OLØ².g ëtìkdý þRðîr~4Æî¬ÓÄ–iñ
¡Ì^›þo°*o íV69¸pPÓ§ö°øŽ®´~8ý³9þž,xœu‘É’¢@ Dï|EÝ‰iÙ)"º'ºPYDQÛ[Q‹‚0òõÓ³gò”ñ"2òðzF) ª¦²„5QÄr&&P"I&@J”,S¬¨’¨+”¹3zïAšjX3U!¡
T7 ¤J©”ˆŠ3HÅ’L	‡‡¾hÈ¾NfÊTðú·½t-®ßó—Õiêï@T	ª&ë€$Aà¾h]ö=eÀ*ûÍ€×{Ãh[=ßó²/†ä?³¼Í»2ß~Å\[¶+ ‘mùè‡ëßœ;“˜™K„öæÞI–—¡éêÅUÙ=df¥ÛFÈžÎÄäùp{ŒÃ|–$dÍ‰äaÜÄ:’‹]¾ôêƒª“-¬.nðeÞÇü¨ìî,¢×·EÜŸ¶Í')ñÅ•ƒ‡²‰9`ËFÏè¬œÇuÓÔ÷\Vˆ%9§ÑúO7À—¯&#4f>ÆKwX›)N¡SpàéTw<¥±;{×]7ÞnÓ0I~2c>§x\ÚÐ½Cxž[Ý´Æó“§¾¼Ÿpë¦û´ˆ¦K´»6›Hõ<RlÌã¥ê2—“áY/ŽS{­+ÝšÎ³¦«¥^Mf:aÉá@:Ï`âÏ‡|/"úqÜù?ì((gÌ#yg˜Z1‹lTìy’†r[&r9yk3a…ÈÞ¼¹?ÎÖþêßÆ¸r-+ï}yÏA“
³œä#+ìxàj ÝOÐà‡Ÿ8xœu“K¯£F…÷üŠ’"E‰nfÌ›Fš‰°ñÛ÷aïšîÚÆ<šÆ6þõáf4»¤v§TçÛœSR0ZJ×´°ÁI,Š0u]b&†í T·Åk:³•VJ ÔÆ¶K˜…#HeŽ‹tK§z¢™JÓRDRÕ ¿îuÍ¡ª­ÓTu•XšÆTcÛÆÈ±uÙ†nÚ®‚;™WŒËü®%9|»|Š¯É§øÁKÉŠ¯¤ºþšeÓqø¢:ªªÛ+—’	¹œu	|++Áê¢ÿ‘€.ù[Vg-ÏàËçø“0ZÃ6ÜÂ>
×Þáu7ùw¯€÷Ö'¾çùçÅ~<OFÞÍvþÂÉÏææfˆèîytE^°—á:¯=Z/±n~$š%ÔW _¦Æ{4¹‰q­-½uñ–_¯™ºŽ[C½,ð´ßÛG ³g’¦ü=›f½Þª[²yñªMü®€ïÊ#÷‹h©Gü`-~E|ù0ÐxnúâÑmOêÓiM±6§¡æ˜;×4­¸m—Ù´=§
ÌB9?Èî™Æ5°_¶›nføÆcõ¦®½o^–—ù9 ¯Çç)|¿Æ‹ð‚BMÆNÔOºÇ­ûåSÛ9Yv;ïHÄ/;?ÜÅIæ®ÎõÜðøÞIýU_ÕõnõÎ8Üž÷ÈßfQJ8ïÚì¶8±ýÅè™XX¹dvÌÑ¨É’0>]š ¿5‡½zZiÈ-o¤ è¤­)ãÇï
|_éýSù™Ùd=þïÄ”ƒº+
¬éX+á7ÓÐ Õ
žåòLGWÜ•Q”¨„s[•Pu²îä_ÀS9xO&*(X™¥l¥àe¼„Ï¾á’lÙ‰(–x°I¨éà¢¨–|@¦˜Ý@úpR		\–ÕðE¼­Ü»Ö²‡.:öç?¤˜xœ¥Ð±NÄ0Ð>_±N‰'¶„-Ÿ±Y¯s>odoŽ¯'tô”3½b´0CÃä‹=Í68ÞÓ0÷ãä¢±Îò4agxlv,œBqôÄÖ“kyòÎXÌÜ‹Ž»è(¶=5xèU
Ì,[‘ËgÚàõoz¯¸Õ#/’í:;gýd<·¾m›³Ý’*ÿƒh>2ÜªdC÷C_ EÐ+Ã/9TÀà›‹ÀÊyÑ+T-)/çNAˆŽ¸®B¨é4"¦ g)
„9ËùFªûŠwàm×;|ázðSóo~pœœxœŽ]NÄ …ßYÅÝ@›B1Æ×yÓ¸€\Z2ShZš‰»·uÆÇïüå´•žì€ÚIbï\TlÃ 4i$e´!—”uŽ’XhåÒÀz4LI²r>*¯)±Ec#k5Í.’ñ‚ö6Õ®œÛïû&x¹ÐûÞri|ïC_Aš‹ÒÎjTÐ¡E‡:çÖøŸuñÁ#ˆ5ìóñ™Z®Eˆ¯%Rc˜©,4òsù~H[;£°ÿú[/ÄgÇ®¦Ôùïç¿|?aôj˜xœŽMjÃ0„÷:Å»€,Ç‘B)Ý–B¡½À“4Š…‘ä–Ü¾ô ¥‹YÌ0ß0%¤Lã}«œ×0FŸmÏÐ¦“Nµª	½7J78wbã„¥”Û+u†f¯X…Sß)×˜p:Å­ò®éƒlïeX½"–^öìºŽSÛ‡yŽKÁT»u~¢¦;©ÖèCTI-¥8Ò9–‚âbŠ¹Ty·ùž/ôž‘¾@S\@6ÇL¼xÊ;d!>ÐÌËÆ·£³®#<}#&OaM¨éGPÞ(Ú~ç2•ƒóÈ1ÀQœ¹ÔB|ÄÛ_­!Tö~ùËñË.N‘xœ}ÐÍjÃ0ð»ŸB·FBâ|—RÚƒ6ö Š-7¦‰b¥Ð·Ÿe—„@ÿ’x%’}‰ª"hP«¦7µ¬4JCRfe[+UËV,¸’c(ÚœÊVÉ¢Ã¢èt‡Hæµ.eEuW—MÂ-ió
/èyx'ëH]	CpN~ó”j:B^•²¨Š&Ëá)Ë³L¨yš,3­ðJ–xÞ¼àpMÚÇædÓ˜†ÁG¼­eÖA’5!.Üm¢d´ž¿õþî÷pÖ4Ý¬"p8àzÙ¦x
:Ë4˜7†óÛ<#“Ÿ‹x ØE~y;ˆÆ(Ï€JÑ ¿¾Óâ‡È7&|ÇäÁGäG:âÃ^éd6&éïûÿ~¯_Œ§“!˜xœ}ŽËjÃ0D÷úŠ»Ë¢8\[²,‡PBW…îÚ/Ðãª±¥ É…ü}eèºË™3§f"&ôJ¡TÎ;.Ñk?Ioìh†ižf'4ïôºg)VàFÌ\ùQ	ãdzÛÎ+Çå9ÍšPÓ{]R†w#ø¤ÉÞ	®KãÜÊ^èìèúQ|ä"¼`ÈlÚ¶P+eø PxÛ‹]àz?ÂÙáb¥õÜŠs%”Ðaƒ06ºÀ#·¤½‚M±æ´®Xª®¾IÖPjWvSžåÄØWøŽäºä}gž—ÿ”Sö9Hb¿—xœ}AkÃ0…ïþºmc4ØIl'¥Œ²Ó`·‹cËic[ôßÏÁ.c'ñ¤÷	=QF„QRu¼jûQ ë¬¤ÔC-¶¸2ˆ=û4#Ÿ\Ë…F´}ÛZÏ«¥ñèy¯¤…ÒƒÑ3+Í)Ã‹‰¼aˆh/‡¹î9–µ`ãð	„ìÛNvjá‘Î™MËˆ0Ã+šáy-v†ÃeÍ´‰cˆ„×¦ðAµ¼‡×gñkÁ=TKNnµg¤ÓÖ;YÊ×“!Ê÷Œ}Sgs°à×h)¤w¹ïê¶Bh$6¹ÏŒf„büE}ÍŠ¦žZnÅØÐ0­„cïáÑí’÷»é¶ÿï#[&ö³ù„xœ$xœ‘AoÜ …ïüŠ¹·kí8ZU›ž*Uê!Û?€áa£Ø`Þtÿ}qÓ\zˆzcfÞ7óôÈ )F=öBp¨Þ˜¾îeÝ¶7ºNŽÆt
ÂvlS>S«[^ÕI^´ÍÃÀu«…­½°²kÍ ¡:¦ö<‡Hß”÷Hôç¡_@ç¹ì¹¤=¡2øB¢•B6œ7}â‚s¦Ãººœé;\žéëžôLç—£¨Æ£¸8Ÿ±TEø†wƒ”MO'ÞœùÛŠG²î×¾ÑÓ'šb(/ƒ¤£Ûr1¬MÈŒýœñ‘€ô¬üC#ò+à)}Ú uZe<KG¶±Ôï]RÞüÑZçÕòwTÖ˜ ÷µ ŸI«=9?"vXÂD›š@>dÊ¡$ãÒ¶¨{Átˆ:/÷Š±«›<Ì©ø;÷Ç’=²aÏ¸9¼à_3n «ž#Öµ„{NG£Jï‹GVÛöFþsè?>‚ýèÅ´›xœŽËNÃ0E÷þŠÙ£D~…ØU…*¶,áìñ¸qIœ(q ý{\KVWçŽÎè–•º±÷¥àç)ð`z…1Jt±7dƒVÊ [ÜJ¹€•’{£:«¤—¨-Y¬¤ƒª#TÊy+<:ÍÜ^†y…1]Áñ;”>»û¤Ôâ<=è´x4JÙ¸áœÕvJ¥Ð
/”Ê Ïû†ßïÐú;œR.4þÕ®zÃûª³ü1Qƒc:@LWpPnËÌØÛ6X\©¯jMÛÏR†_öÍ	
]KËØk:g
Ícão‡ÿla_ëºh¾5xœuRMs¢@½ó+¦jVâßl%[d(H¢æ’šAO‡%¿~u·ö¶Û§~¯ßë>¼æŒR€ˆÁŠ(ÂX‰¦‰HÓ‰&ÒÔ€©®ÀIM„3Zs #I‘thh*HŒ±¬è7·†.ËF"²n øW°!ŠR$¢DÓ(’	Ur»"Q¤Üä‰.¢T‹‰€{ž5,iÎ3`õ]œ§âÉ¼ä5§åcÜT? Rd¤H²¢Bð 5…[åœSÜœÏ{žê†Ñ¶_Ž·=ùíØ»üîe9®çƒ»[ÏõÍè-t~óÀ¥³bË4-Û4+X9õvh-µì$¯‰yÓLæžgZi=ÑË1±‚m÷Um.‡ÁêÕ×³ ÞìJµ=¯.ó6òc'6çb!ílÂÖËŽ¸F®vÒvIT;9tƒËjŽœh:s"Æ!ÚUø\•õ6\Æ¹xÅŒÕº—NuÖÈ2¶²]£AoÝNÌ5é›érL¶¶š	  œ1s×ºU~ð¹.B}‡>ý*v¼p	‡MôJäUØgÆ0›¡ìÃÐ8ZB£Åû;Ž~
@ã(Þ_—¯úV{%Å¥/â%®½~}{šë"š8ÆBÚ·ö¸vƒØWÃ´éÝÞ™|à‰ œCVB¶}?pü¾BgÑ=®?OÛéÐî²æš­íktbõiiØ6›ÍJ=¦½:³¯8žðœú½%üÉÌñgÿNLXQv¤ íË0zîiÇÁ7YÔAÊš
„Ž¸œR\2Š“ñ“^sþ	…ÛÕ5ù.Ëï Í¯à> q“PÐÔ Åy	x.,çôÞL:Lë¡¢)&,»_ßôÔ”xœÏÍjÃ0à»Ÿbï%É®,YR)¥)ñ­§Þz\Ék*ðOP¶.}û:Ðèq¾Ñ*< QbIˆ¹3É{C>$odŒ8‡™SÛÍ•«,
Z×Œ>¡#“Ùº°kO¬ƒ‰6D"ŒØð—~®úžàU¸ðVx’='y)Ó±¤ù˜×ùÈYr&„.ÀÄfoç¢*ÿ×­5ÿôÎ—E²xšáv•\ö­Â:ßè
ýùí½?_>€GÑ
ßµ¨ÜûÓ ÛiÙf9ŒœjÉ·æóXr“&xœQËNÃ0¼û+öHãÆy4B		‰ÞzàìØ›Æªk{èßãT”	q±µ3žÙÙ5DÐu[q=âFÉqÓhì¸z¢­;ì¹ÆjÔÝºg³è„î8—uµé7JÔµj$
Ñp­”–¶c7¶C£•`2Ñä<£¡	RTÜ—b5,Å½q„v¥üéÖMÍû5çÕ
ÞrÎ2z2DøO9so'ÜÂ“tÚ"Ä4Ï>jPr–ƒ±†F“%sÆæ%¥Œ1ö2¡ƒ; M¿Ê¿én`ÿ¸ƒ˜ò n˜ó %I0(HGÙ!ºxæØ³E2Þ]c,ï.„£à­ÅÀ~t[ø€¯	ãæ«¯ót¡¤¢$í_}NÏhÊÖR)tžÈžWŒíŒ;na"šã¶,y§iX6YZãÒ{±,¯\ŽBYSšsÇ²®Z¶7‡ºðãXçí_¾†} ¥Ï³—xœ•KNÃ0Eç^ÅÛ@"»þWª`Ø!+ðç™XIä8@w+3¼G÷H÷¶ŠJz…L,eÂ*/Þrç(•˜âTh=ywKƒÐšNŒÆY”¡'!˜`LJ®½ôì£4Š¸£M[…—ÉåæÊÝÁíXfWK†KøeãüÃ®Ÿ1Œa[Ÿ€IA¥æšq¨¦”tºæÖ°Âs›àùØÃ—ùFÿ×\.º‘TXÑuÕuR>VÂ’Ïò`‰Ù•‚û©¯kÂÞêÚQ±p‰„¼æ·‚qØRüýüßän8mà—xœ•Knƒ0 ÷>Å» ÈCUQ»Ì²'xø,À®ŒIJO_"µêºËiS‹÷ z%´‘ÜÊÀeÐ²çŽSF¹“Š¡Rwƒ¢–"ùÀâStÈ¤@ËMàÈ‚P¾ïmÐÚÌ8Ý¡H™³Á­Ž¹ÀÛˆ±bÚ®Û<aIÎö×µÓ»<œmm^^€)I•†qh¨¡”v‰µúWë¯ÛjG8OOh‡'\bª~þË;Ee/\9I÷Å7vŽ'ñ°Üaö	j†1ÏÖZbºA°Æ/’÷xKÞ59„fØOÿ= ßÈªm®›xœ…Ž½j1„{=ÅöáŒþïdL0iÓ9O°’V>aëdd9Äo¹K—)†o¦7"Ð_œJÞ+tÔèb”Ñ8mB¤ ÍLì†¶>%í½õD„ÂQj¸B#g
‡’’á£¯µÁ	K†S½Ó‡6¸<žæë.ÔòÂh®øl¹‚·œ¶äÞ©Á'å¾ÂÇãV8\^aç_á˜·Næ‹´370q;ælû.4…kÞCÊ?€ÐŸ·ÊØW>o§šÒäŸûÿ^±_ì´Yc‘xœuŒ½n„0„{?Åöh1¶±£ÓétÒ¥Iºãìe	Nø˜ü¼} UšTóÍhfÒÂ¥×md%Z‡ªNË‚|hK*[4­‘ÔG(f¿ð˜À$ªÐ[ë]%•Ó¨*6YG;nœ+¥~KÝ´@ß"ÃéWJué6ÿÉ1§i8C¡ÚÂJéà-¢ØÓ!¦Ä<sL\·•:8½&‡¹Ä1qÿg.M…24û\ŒgÔÇÇ6~‡ô=OG¸ß^ž²úv¯¡Ÿ^…¨»¸ÂìÓ~½÷xý¯™‹ž§W8ŸxœŽKj1÷:E_`ŒF™B¶Y@jµ<"±&ŒzH|{Û7YÖƒâoD j"cKÖ
sU³G"e;_¼‰ÖGR&¡øNu† b)6HsÑu´nÖÅ8ÒÉ„}Åª	­içeÝàƒ/ð¾\àåó	‡ü„·Ö™¾¸^_a¶Fš(­‹0I'¥x¬×ÆLÿÔÅOÁ#œ®}0ÞZ¿@}äŒ½Öö+Ä©]:•i­uÊ·ã_nÄ€_t—xœ•ŽAjÃ0 ïzÅ~Àf¥Ø’Bí1Ç¾`µZÅÂ¶\l¹m~ßZèµÇ˜²Š@K£C#Ñi£ˆAûN“„^[ŽV‡`5wêVÉLk}gš£ïŒ†zß¡±ÒFaŠìˆ´íYÑ^†e…×R¡|'¸îÓHkNpâ_W?îò¸æe>ƒnlÐvFC…Q=ìœJ‘®’Ê /ûÆœÆ'Ôþ	—”‹Lríú¶yäö‘«ü1KÅS:BL_@™ªi¹ä(gÙ6¥ÞÒ-K¨–+?þ÷X}ƒÿiˆŸxœ•ŽAnÃ  ï¼b?`ŒÁ8Š¢¨=æØ,°ÔÈ6® ·M__Gj=ö8#455F^yI&tF4(mµ @Â¢9KØ±7Ì”*â·Z{i{ãÈc•¼ø(Ò(‰^Íp¯Ó–áyÂX1Ýnû2cNÎî×µó»~x×ºm½€P=ï¹îÇ>pÎ»ÆZ)Ãbài/n‚óü€Ö>àS¥åO®øxäúÈYz_©qK<AˆŸP0Å¿JÅº ä#¦D¥0ö_ùf¡±÷ÓÏÙ7;m	•3xœu‘[oÚ@…ßý+Vêc”Æë+–’*¾c’—jmÏÚßXÖ\üëKÚô­§9ß™it8@òHÑR"Ñ”Ê©’è º–iw5Jeªƒš&wš©º!t„AÃ‘,i²¨]Ö0M±dP,cŒu‚¢°xÇ júHü;OeCÂwƒi¤8Õ¤$%8Ó2#%¢”dD¦éyÑ2@Édõ§´@Ï‡Oñ=ù¯eÃ¡úž¶õ„UETDÑÐ£¨‰¢p§uÉ90ä—|Ü'è¹itÕí5¿è“ÿ¬å]~*sôøY–ëOBùZMüÐ\ob÷7€.'+µLÓ²Msi-§‰d©[^ì•ÅYf“‹ifãÉÄœNªÄ$Ö‘dî®Ä—‚À×OJæó²ÈÎíÚÅv­–ÃŒ]`l—ÀãéÜ0ð¾V—õÂpcUžÙÊ´w>d·ihc÷ÖÞXè¼Üù2Ç<df™ãÑU.8ßèË\1IäNV³'gM¯¡Û…~æþBñÂ¦ÚÚÇ«, tô¢šÞ)0‡œã0Ã{{¢Ûå‘»ñÞÇNÉ+“‡éæ²¸6Á$Œ½¸-õ]ô4Ýc¹‰ÃŽž­yýš·ugqeS¯v×³>H-‰ëqì·Ùao/¡³½ŽWyX­É·ûnïÎŽKÒõ mêá·™¨íšžOa1|–¥LÝ3)ÊwÝ[WN&«)å![ˆ—½Ìµþdæ†Î¿æÀr@]_UˆÁ±‡GßIE”µ5J2¸‘ê©«ú¼lN?P’ò–	BüÕ¡/•"ˆ– ¢FXZÜ~åSÿªxœ•AjÃ0 ïzÅÞAòÚ»”RJûü`½^ÅÛ	ªRÈï«C>ãÓª`IeÈšQÇ™Í˜ê3Û¤s·ËÄÉÝ¤ÚÑ BOÂH!kRB`Ê6r¾kóÄÑ;¹·õZáç!|ÙßòWx·Î³}–íTæý¤×ýÂ4zLH‰àÍ£÷®Û½´f/Ô‰9>kw¶,Úúû¶Ý/åø…r€@.›ÁZ¬JÕõáþ/¢LUšxœ•QNÄ †ß9ÅÀm ´´»1Æøà‹z
ƒ%n¡iÖõôNu 		üÌÿýÃ@d?¨Ñè±sÚšQúc+
Cçeð½VÕQíˆbµî[¯ÃÐ!Zå§Þ»¶L0a8Ãðš´ÁOÂn4ç/i†§­ºî?vÑL»xŒ‰ðÜ¸¼<€ê;©£RÒH)øv‰Dø/¼5ê†‹‹w'xŽŸP©$·^ábKŠé]ˆ×¼ 0µÆ3–
,¿òlãnàózÝ÷Pò4ïÅTÉòà5oÅ!'UAeKÎÒî‹ÔÀÛjüBˆê¶®¹¢Ê°–Lèè'Æce?39Á´…€åNÔÌ%fVK<ÝV±²¶tËâ¶h}ÃOŽï	ý!‡p˜®§¿üˆøÕ¡ñ‘xœŽMjÃ0F÷:Å\ÀA²~§”R²Í®=ÁHÅ"±T™ÒÛ×¹Aéò}ðñÞØ˜B,Ekcóœ­7VÍ%è”½•¬*cÉ![ñE·JæàmBB–š¼S)gJ3«-5£'’‚ö±ô.\Ççý‘x½=áŸð^Ûàû)õõ”ÕˆÔ0I'¥8ÖµŽÁÿ¼‹ž®Ü ÷´¯G4Ú”£¦ñ7”zç‡ŸõÚ8O½”)þ¼üE$~V)_ì›xœN±nÄ ÛùŠ·W‰’œNÕµêpRÇ~ð	º QJZõïK¦®õ`Ù–,»ìD Gî•Ÿl/©×ÂcÑQ'TÜx'¹D%p´šmf§T@Xc5WHª²vNz«¦ÈheÍh%rI^tš™£,y‡·œf¸g¸ž¢½çÛ7ºÖåø½àZi©ú	žº
VÓJ¡Þ)”^O·ÀõqšÖžæR¡õ¯®¥¤„¦“µÎÒW¤Æ­êlë1‡tDÀìŽXÏ›r__mÞ„ðˆ[ËØG˜a“½oìÏå?ãìŽ&c¾•xœŽ±nÄ D{¾bûÈÃé]¢'¥Ì »Øèl°œ(\¥ÍT3#Þ”ŒÄ{áêQ	.ª3ÒjßaÖƒ°C`›Ý)p¾Ç@@Ù	çÔ:ç¸·\£âµãbäÁÈÁ3{”9ïð–Ó÷×Ó´÷|ûFßú¼>C7H£Ò„'^Åj»ÆRh‡wŠe†×ãÓÏp}œ¡ug¸ÅThù›U¿öÐpUç,}­Ôø%BEÀ¶SLxA„‰
lÁÆðX7896aËØGœa“ChÜÏå?Xö£˜_±š1xœuQK¢@¼ó+:Ù#™šæÑÉÌf@AQtÄ·î¶y(ò…_¿Îlö¶ûª*U_*©¶æÄŒª1¤“'äL2 ¤HÑ944#Ì¥ä\¨HÍ‹`C††Ìu9Ž%Â4&+Ì€&J
å:?©P;AŒÿú“yL§IARªL’Uª*ˆÈXÅ1FbtmZÖÀãY›«kX
^/_ä'ý"ïYÑòü'+¯¿€¬*«Ú³
x‘4Ižê5k[^ƒiÖÎ:
^‹²æUÞ¿'ÏýO,©’&KÀË×YöÔ]‚`€wº4·áÆþÖ €{c1Ë4­±i®­õœö|"7–§§g´úTj÷nš§™ëšG™Î½DöQ-^’_D70ˆaï¤£Í!ºk‰Õ¬>ýÌ^•$ìxñŒ`9|T…ˆS´öúXì=ÑÕ5•Ê7F«a%€P+3›‹æGuë}ÇOCÄ´Y9:|Ð×©"ö]6ùø »ÑB9î™è–“ð|›¬Š«3.¤ƒµÝ¶ÛuÅ/‘CÂGa•WŸr°NƒÚ¤ðãLFç†ììÓìŸÝRË°=‹rÞ`¯w7ý¨ÆdÒÏ¿y;<ŸªÈ5¥;rY¯(hãGCÕ·3»ø\iÑ¡]ªÆV„µ;K4m­U›îæeÜ„°L¦Ò=pÃ²˜×Öªè¢±†É¥ÞŸÊðXxŽ:v†…®G´¹ZužlÍ7¼ÝÝRø³™½œü{1ÁçuÂAÕå9¨ù­ãM~ (¸.¯€6§ìZª²n	Í¹ ß(Ë³¶qöàÍoÒó¶šxœÛJ1„ïóó ¶$íž""¢R/,xMþÝv“%É¶>¾©'ðÎ»0ÿÌ|“‰ÐïT'¤®Ä¾vÒT¦áƒéZ£[!jÕKÉµhŒàlQ‘|F]KÍ^õª©!eÛ›A	­;R$«Î.¹'ÃÔšmˆxSÑSÄsH7n^î…zÿú¸q¼…¨÷]+vU'°áçL‡yv9Ó?ƒ]Û~™?Í´Ñ“»ÆàÞá‚ÎT×¹¬fìh	—nåÍ¯Š¡ìû2º„Õ'7z2˜‚¯àC†óy‹CiSÓ„l‰-“Ò”ÊSeœ	‹J	z6Eˆa-r¸Ø¾;õg*ÀæTÄ• <ûÚâh|‰t*‹Ê—#è=S±~q¶äñôòp|þùCbäu0„³Ëö“™Ã‚¾0å-û Å¤›;™xœÍJ1„ïó}SA‡lf2Ù@oŠGéI:;$½$YV|z³»þÜ=„@Q_uUÍD q˜Å¢—I¸I£A2JJ2–´PƒTÒ89§d·ÇL©ÂÖ’›„˜¥F5ªÙÌÖêyi­tz…ÒS‡‡ºr†çÞ0'ÊðÄe…ûchßc¢ê‚ÿèÇØ¨a;mg1h¸-»kjôµÒÿèîµ”ŠÉb¶àSËqh¨@eØQ…ê#}r"`ç
ÕÒ_ˆº¶ßw±62ÕC»kÁeŽØ`8q×7±9s³c:3»À†î'µxiªã1€/9ì9W\ÝÂqõár,àyb³”=ï¼éNƒ_Ì%$ÓUÔ$fÛ
aátÚpø.{vþ²Cûî½¸›³™xœ•=OÄ0†÷ü
oLTùj.•Nˆ…©0˜ÝÔQ#õ’S’Òƒ_Oøbe±å×ÏãÁ5ë¹ÔV:é§I¥´—j’¤Q;?X/¥ïå`¬`gÌ+8iPs¯Èi×+®‰fÔ·B#„t${n¸b¸Õ%exèàs¤c*÷µµÛHÕ¯áÒ¹tºÑ+kìA×Må¬¥§P+ýÇ6BþØì>†pïkˆÔ1vË–¿'Â/0CMðø<Ž<-mC_`º`m… SÝrdt9·¸„aNTâU…­ lñï±WÌ§•`_(ÂÞ¾‹Ÿh&œ¡¼ÓL¥c×VyŸxœMËÍjÄ @á½Oqw]ÕªñJ™h×³VïÆÐéÛ7ÐYtuàÀ7:ˆh­|ÌµÔÑDtÚê¬P’KÎÏ
ÏÈöØ©‘P¥INÎ[«ƒÂé”—ÙšŒsr"h$Ï±´÷Ø+uþÙŽÞË¶ßÒWxnÛH3yë­r¼
+»îVÆ _üIá~¯Wn•Æ¼–Çí„OÍîØêË€J„0”š×	ÖRÏÇÛøÙéà,Ô‰³_!\N’xœUË½n!àž§Ø.}Zàø³¢ÈÔ©9XtHXvòø¹"–’jF£ùF'nñÄ•Â(¹Z—	åì¤äè’p³WœR Ïn¾S`¬Xœ$-BT"
Ë…áÂ©`Ù1hEÉrÌßÇÚ:|ú^©Ã{ÛWxÍåv]öxÄZy®¤ÕZ9´pFÈŽµä1ð1ý§_Û×J#mùû¶g÷«Y}:‡-_ Siª1û:­Œ=ä½¾¨D‘â	öö¼æ1±4yS˜xœŽOKÅ0Äïù{­Ù´ùSñú@Pð 7Ù¤[xmJ²|ßÞ<zæ73R™!DÆÀf5bB?¸èÑc0ƒ6&Ø’‹ÉØIíTy<ÎœÈYçà"{"oŒu–f¯CÎ
#¡¢‹,¥Â;Õ+<—¶ÀC^÷§Ø¦CºTÖG@Û×£q=Üi§µ:Ü5‹ðÿ¸€ö‡S§-/C»¶û&$Ý¢ÔÛç¬å0c–Ç}˜xÎO·?Á[Ø¡×—·ÓG¿=²äs©Š¿¤ì¥
Å|ÎríÔ7¯`’xœ»nÃ0Ew}·EjÈÉ6Pí {ÇB*jI¥$ÈßWIÚ¡['‚—¼ç’…÷£'7ö8
ípîŒÐS§„TƒÖÖY3ON*#Ù¦cQÎÝÜGÛÁÇVÚÑÎ•¡u/¹ãÂu³˜:–%|(ŠHðžòÏ>l¯:ÛZ“Â´¢ŸdÏça€'.9gU¾ü—¯Ú_ÛG³-Âêõc³€«ÙZeŒ* l”J*—ÆÞÖœv`R<!HÆO‹'(	ŠúBP`Eð*Z é„P£rG)ÀyABæËC®âº¢mîAAá‘ÿ2B²Þùª^)¹‡ö±¶>³JÅä£Y~öŒ*>ÅŠ ç#Þ)®—ûuT~á×à¬2ó(QÃ¾H¿—Û–xœËAjÃ0@Ñ½N1¨«ñÈŠ¡ô ]uÓõŒ4Â†X6’\šÛ7‹ «^¯ª€2rš½äÑÍ„œ:R?;S&G,N2’æàª¥Cb§	‰/B!hÉœ˜9bžÔ2Å‹xD›Ÿ}Ù+üp-Záko\×íø”–â¾} N<YoÖ[kw[{×—tOg¾uÛÎR4jk\ïp[Ëù÷Þï‡¶aµÄÛ™t0ÿ÷LL‘xœÏMJD1à}NÑ;7úÌ& â\‰à:énÉ“Iž0·wDqíª à+¨5˜Aûw¥\ŽÒ{Xec’uA†àm$ÒM"3ŠsÜPÐˆYfŒl‰e”É“ŽBçÉ"i“mNZ¤c•>à-Æžû,ð°×óSžt{}åÌÉéä	î¤—R\Ûº¯Åÿr*DóëÄ×þÉp´ÆÈs¦q4ë}¾,îƒxlEˆ×Â“aoøqOøþs³àÜÂì0~vVáº‰/zS[šxœ•OK1Åïý9‹Îvg¶Ó.ˆxñ žÄ£ôObv™fÐýöv÷$Þ<’÷Þ/	¯ˆ ¥ö(•‘æ`½:˜`Æ£¡Ñ4*kŒƒò3‰“]±0Éø`Ô|$2HšÆCÐj&§sÒâ8I§'œ”°ÇºÂ»]®ðR[„û´œ]½¾.°W“™'9íÜÉYJÑ»KbÆÿúÄ[Chç¶KÕs"p…Ó–3¤)•Ä©–6ññüzýè÷0TŽWW×v0’õx­ÂÖ#/Ã¥^Ôueë2Š?Oä«è7žrZR±Œ`û
=§]@9•í{Gmˆ‚£eøê0(ˆÔ’Ï@ý]SßòD…Ë›4xœuRËr›@¼óS•£Ë†åMÊI…„e$ŒÞ†KŠ…E€xyYdÉ_9©Ü’¹uOwWMõpF)˜ˆ¹‰$I)dÃPu$ë©–ë…A,É4ô"•L+³t*)£ÃB2ÊäÌTÓ›HM¥B¦…e˜†‘#ÓÐ!E¦Ó,ý«¿™B4Mµ”,G¹,‚(ÕM3S¡9Õ%Õ¤BÒ‰—=ƒ€V¼<Y	§Oð@>Áªã´yÈúö; M±t)Á½¤K’pcÛŠsÊÀ¯øÓDà±ëšëã-`"ÿ±‡ãXáþs°çÏCˆü6s?´·»µ÷›@€÷gØ¶±cÛ+¼z&—¥/:ke­¾œ6·íüi>·C	gû.£çkëcïtöˆüVNî5æâb¦Ÿ’®L"Kª1åf(*Îž­šù2Gr|Øoz·¹«å:	*s£'•qœÜ{»&± k-Ö¢~7~Ô
µF|;À–Cifó.$ÈÝ§¾ÓÏÖr,S=â·Ø¦—móòÎÖ—§ðX°Û} 7žKwÁöpÔEÝï+mv5#—xØ—d›,Ô
-Ò—§íÂ®ŠéÆýÈÊ×z5­È‡°Ÿ^ß˜¤5ëàN2§…úœd¥3;oí³S8–Oõr9Dg£<N¯…bŒ]Ì±«mT¿€–rhx‰:œ¡'ìÏ|IWâáâîšd–’ý{¼jÃ°$‹qµ<\â×Ï¢gÖŒG[à[µ/ÂŸÎ¼ÐýwcÂ’²#…aj`ôm¢#‡/ªŒ `}$§×´‹êò“­ tç–ÞgMmz¢p£¾Ü–@Ò±„ÛçåUßAÚå¿Ó*F¡êàÓö04{¨º_§¹&™xœ‹AÂ  ï¼bïšhË‚1Æ}ÈB—”¤¥•¢ÑßÛ7xœÉL-Ì`•ƒUR¶Q#vFiCý`"z'-šHÒºà‹•
ç
è”VAÛÑu$£æèÐ"Êbï½Áp A¯:._šàÆîôNœygÏ×45ÉÏMXæ¨¾uF9Û8ÈVJ±Û9ÕÊÿÝ"¿gn¶•C“2œ ¦xÚFØóuâš–+Õñ…Ÿ¯TXü ©÷P´“xœŽKnÃ0D÷:….à@ÖVQE¶Y9€$’µÐÚ
\zÑÛ×¹AåÌŒlDÚOàb¶É—Ñzt`Bk­ñž-s¢PC©³ºçVÑÈ5a) Æ£
¨4ö5#8dc"x•w™û¦/ÔdÖçý·Îúýû§ò€Ï¶
ýœj_>ô\r`Òz0Ñu¤K¡uu»cÒØë¾§³´¾*um_+áÐ™‡ò÷öÌ´ú×^[î—xœ…MNÄ0…÷9…÷(U›´M3¡%°C ?N›!M«N:0·'A,f‡W~–ŸŸ¿´!‚²VØÉV oº–©Ú1ãk,“ÃÀzÃÛ¶éµ"«Ú0&`R;ÌËÒ1%dí$ã3Æ
­„qšµ}—¢&jOÓ²Á:·áÞ<F8U•öôeMe–ùšŽKžóyu.’§³O	7xEŸ&xÞ/f‚ãg•.âäcÂpgµìÐºÏv¯3Rüž¬…	Ã
	¿¸üMN¥kØG¡Ä¨ház¡åÜU a+øX­Jø¿Ñ¨•Z¯ÆŠw?F´tqŽêÛá—ùø\€Ã=0ùþrx ™xœMPËnƒ0¼û+ö^Ù€ÁŽ¢*í±í­_àÇš¸ƒŒI”~}qUEÙÓÎhgvgsB£¸¶Òho¸g­6ÚºZz.$J†Òqæl‹JZ²è„1Cß2DÏÑ*ÙÕ3±•JôFÕ·ªnlß‰Ú5Doù<'xCïÞà#`„cAUiOWg+;OÏÀE£¡Z&à‰íEvv
9c‚wù¯ÛjÏpü. 2œBÌ8>È{¦º(ëv9‰—	©Ã^œƒ}]ÆmŠ±Ž.+-)ê‘Žó …Û§3Þ§Áê…º ‡»èZNÉIÇÕc¢køAØ?¢'Ü*B>ÃÑÑÙ{jn‡¿Ôÿ‘¿Jäñ12ùáz”xœMPÁNÃ0½ç+|ã€:5í’¶hBã„‚sš8­Y›NmºiO²!œüœ÷žíçGD\
%•B×¦ZÚ,ÕÒ”êL+Ž¢*s[¥l¯Ftx.×Km9¦R”U¡„â²ÈrU…*í²XæušY¦fß#<£µ#ž`Kè`Ñ"–ë£Ñ=ô÷ÀE^ñ´®p›†ÇB·'ïq„$ßÂÃ<éV»ukr»«</ÒJ¤2ÈÙÛ×+&›í|?nà½›rÀõûŽì	|‹`ð@èõŽ\ã0{r8-ûli
Ê5Gê:èÕapqµÁö
ß*¡ŒèGÂží÷šØ	ç+g®Ón¦3>ÏŒÄl¤.ìE¬¦	cQÖù Æ¡Ik“útwô/ÍŸ˜f÷?Mö`$–.™3xœuRËr›@¼ó[•£Êñ¢å™²S	K€–|[–å!ž‚EHþúà¤rKæÖ]ÓÝ5ÕÃzJT^Ue«²@” cEL—Ç)”¡ª(`§\‡{Ú0@(°B)L J“$Pä%S"Ê²(¦I"I°’üÝOR„¡´P‚¡€P¢ÈH&IœbH&<ä1Âs&åðÈò¶6-Xôq 9x*¿À÷ø¼£ÕwÒÖ?/"ªK…‡àJr3[ŒÑl
¶cðÔ´=íªûK6ŒñdY—E¾F76¦v›Ø›Wñ›ç ¦A'º¦é+MóußŠ¯o¯ö*Ðm9?Þõæ¤iÉÖ4µm¨|Unníiˆme7y,¼Æi4¹÷\#YÆ˜ž[ú¹Gæ.lpQI|nÜ£ÎknÖöxËúªtäa•M{î©¨¯#”-´àüŽ‘ÅH —n{tÔÆ„<\Nî‡j÷wáµŽö© +UðyÈ.òŽ#c¾µèF9úõ}yŒrOÉýQï‚>Å,>‹·W	/×Óy™¢ãîÁ$¸’Ëa8z«Lôù
'èzVº^w‹U}ôÞ	¢ËætÛF;rs˜éYÎ:x´svÊ&‹WFB«Léd/"£}9pJÑ±ÝæìíË­Vîùt‰•ÓX:ís;ù-ZVnN§Á·Æ8´ùqÊÎq\‡Nã?sà¹Õ¦;÷§3Ã]ÿ»1Î¡}FA7Vèée¤ß^ißÖ` ]Ž«¶yléC‡I‰³¢Éf.iZTôH‹ˆñƒùmºŠ²¢m@ÑÏvfù/Õ·Ô’xœ¥=oÃ Ew~ÅÛ«Xø0QUUêÜ)Cç‡yÄ(,Àjóïë$ºg<÷]½W3Xl¥Bë‘“”J©a°²›­äbä½–›½e+fŠ´';
©É)×V	éŒáH]Ïê©·:§§J#|yšex-wn¾ü¾øR|</hª9E?•fJË´¢×\©VðÂ;ÎÙž.¾Vz~U·ç«ì/ä| #8ÿË»¹ª>Eð±TV¬3c3Æ3ÝjºË‡ò¶–š	Èt;–¢ÅG^È‚¹Â’JeÖï’7Û­)c'ŽdÉ¹ƒ¹Ÿøý—	ŸŸ4xœuRÉnÛ0½ë+ô$ÖB-’¢ÔbI¶åÝ±“ER‹­ÍÚ,ùëë´hOí sxoÞð¦­9¢T$MåTÒ4Y—†&£Çˆ	ª‘#¡"5/Z •HV ÓB"ê%‘"CF’‚¢PETa”È¢!)ú=Ò£Hæ\¤Ä ŠQqD5ÊŒG;Qe•H„*éÚ¤¬Áœ§mÌ®¡	x½|—ðüH‹–g/´Ì¿IUˆdMƒàYÔDQx°yÚ¶¼nÚz]^‹²æU6þˆºð?¶¸Š›4Ï_e:®¿kwv¾»ÄûÃÖùÅ@ ·Æ¤&Æ¦…ñÆÜÌÂ~aAkkÎõäW½Rû7Œ™çûEÄWÞ¹Ð'—¶Anck˜h† øô)ÁbÔp=W¸kºûtM1#{v=¶ýJŠ$8ñ©Þ¬ç7¡«c[™âÇuz¬–£'€ÃÆ4æ°á[æšùâ{ŠP\‡Ÿ­îsøˆ&ÑöÆÞ¡­¯Ê[Cö³ÓQ\…»÷T ›Y´ûîÝ¢
Îx‘ß†ØÀM]OÕàˆû±!k:MvÜÂ’´T>ÊN8È!Ÿ”ÞûÒ»Ü˜ åbéjª+†-'hV,«u»É	Oð¾+ß©¢€'4ô::¦f·a8„~×w½µ‰J´ø^®×¥¨cAó+Ö¼ûäØ?eü¢XÒé4§âv?o|eÝ»árgsq½ˆÐîæ›ñ› Þ$y2
¿3s–ö¿^ÇT]–š_;Þ´à”tÕeÖüñ)6é¹Ç³¬œ§-Mx1é*FZþ¼u°8/9§ aÆ-aVÒhÆ¢%HÒ8ÉÝ‚´ ?‚Ð–xœ¥ÌMjÃ0à½Nñö… KPB1tS(½Á“ô™ÊVP”ÒÞ¾öº˜Í7ÌŒNÎG¡•°†¢wQX+'á08g¥ß+B¡Mæ:³vÚh•¥ÒÉä“˜UðNz¡|ÆG•"Jî„š>Fi>hP‡~¼Q­žËýñr;4íX;µ~=ƒ0ÊóÉéá‰;ÎYlëºŒcþ6o*Al‰ Ô¿àþ»ü²\KÝ3`Ùàs~½¼Ï§5±?e¸UÅxœOAnÃ ¼óŠ½W±ˆ	GQdõÒCoI? fÁ«ÛÂ$M~_R¥RÕK{YÍìÎÌjrBÕX¡•¶-:±¶ÒÕŠ·R·®çhœ´º.jåÙlŽZ¯{§eÓz¯Ñ+_oœ’·%ÂrƒµàV	’™s¦	Ó‚#ìRÁ©À.DC§ªŸâÖ²¼—ºQxâ‚sV¶‘rÆ¯Hy€çóÒ°{¿“ÊÞIGcÆŸvµV­„oŠ—ˆ«þD[ðtù6OŒ½´Àlr‰*k\ ¾p^L@ÈxÍc¼~ [ÙÛŽ&¼$ŠS€]ÑQ´Š¸gG
cÑNÞéÿ(ý[þ¢ìè†‹ƒ‘xœ•ŽKjÃ0EçZÅÛ€dËú„B;Ì°+ŸžbaK.ªÜ’ÝW–Ž;<ÎåÖB§‘K9(k¬Ôd­"p/üD^8´¹˜Í Ù»+”+øqP<HÑ*BÃå¤lÐ¨õ¤h¥ÂlÊÉ2wÔe/ðº¸X]~8¸ÛêJŽpÆ_×¯?îúå±Ç=] n9t\sÎšM±V*p£Xx9>póú„~~Â5æJÛ_.…5J¶\µœåÏDnñÉ­…œ*¥][\ö[Ìw8r{IŒ½Å{&ßí!tóãôßïìÉ°k—›xœ•?OÃ0ÅwŠaHˆÄqª
U0v„!t±ÏÕÔ©§ÐoŠÄŠtË{º÷»?1çV5Ô7JS-¤‰ž[Ñ÷‚´àýÐ#Ö­”ÈÎÈGPQJ^sÞr«…ÑØ+;¥¸6ïd¥d#ø ®qœ<è"ú+Â~Ž¼ƒ­þõÊãÍÛ}]êùô¼­UÃU×5PT]U±äž\Œ`O.Žð´.z„í1‹rÈbç|¤éo¼Wuâ2Å™¿œ¨Ð“Û€u_à¼IW`t³›Ö3.|¼-äÍC MîBïŒ½ŽnTz"ôëÎÓÌ8Ã"g`¶GJ4=ûÅ-1æšetnÈøL¿»ôæGÞæ$Ç®^çî¥dìÅ<™b¶¶®›ÿ~}Üh˜™(xœPK‹Û0¾ëWa¡—&kÙ±"/¡¤¥—RÒCºg=Æk±²dFr ÿ¾¡Ù¦äÔÛ¼¾Ç|™AH-ÄÖ(ÙÕŠ7\ö¼Ñ}m´0¯…©û¶Ã¦«MŠ0dPyË·R¥;imS›vÇåVÊ^ëºm#yÕªŽ©9‘à«:9GçõLöv¼TB;¨¼1qü¼mvM»ƒuÕV[¦£Ë	¾£Ë|™“`ÿVš.ÍÁ…Œþ/ø®êD½ÀÅgá4âÚx÷„S¤iÖéœ2ŽkÂ„B,³©ìÐ‚>ƒ‰!Sô‰±ÏÖ‚¿ðc$‹É›²‹úå©Uø—tÅzåü¼ÔÁÌTÒòg°äNË	Vß‚š&Š9•\4Ù³Biñä®6Œ=À=vx\.Ë¦bÏ·«'¸C
ï¤Œ½”óà˜A…WüËû×`#¦ðáš
ûñëWøYtþÏÛ¢Ûø7ì7åzÞÃxœŽÍJÄ0…÷yŠû-‰i’fdÜèÒ'ÈÏ½6Ú&CšV|{g7‚âîœçk‚Qynˆ¤1FŽƒU"AÎõ ¸æÄèÍÎ®bn`¹4NÊÈÇQkIÖ[rhoxÀ88-P"Er&2·µ©T¸ÛÖ–2<ÂƒÇ:#Ý+~¥Ó¶öÉ/}(Ë-%J©ºË'g—uI­a…'Lm‚ûmß®¥÷×rJ¹áüÎò¾`æt€sÅý*^qÝÁ…–JJ8G(;VšË;cÏé%cì
Qç?ßÎÿDþaÉ>kþv‘xœMPËnÃ ¼û+öÞÆÂÄ€©¢*Ê¡‡¶·~†%&ÅPÎãï‹ÓJ-Ú³;3»š’¡Ç^5P&¸0=#¬Vg…åj¤£díãÔæK%Ðv¬ßn	BkÆ,ö†+!\"§jT)EÝ¨¥L1Á+Z›ðïìVÔ®ßýÅèVÇù:¶ÃÀð@êkjwv¥`‚7te‚Ã’õ»Ï´ã
ö.ôrI˜6„Wyóâ®Î3BÁ\ÀàÙi„Œuq1@‰°dCIÑûºæ¬ü‚•h]@®R¦ûÜºc{ÊUbÇhcª®“Ëµs}¼Ó~´•aRÉT•©uÅz i›æÃ«é&Z»oO÷4~£8­QøÿQ4ßÅ^€ˆxœMŽËNÃ0 ïþŠ½£DvâÄvU¡>¸ð8 qàìx×‰iêT©êß#$ØÓÎJ£4ÜQ¥½°(¹æŠ×Ä%*I•3Ø
©±"iÙÅÎÔ’¨«ZÞim’ÊÃQ(jWßèJHá9ë™]Ò0ÍðDÞÏtƒ—@¶™Ê¼î¾Ð•n:ßƒhj¥µj„„;¾[¯çÍðL!pX®n€í)CÙeØ…˜hüÓoŒ2PðvÕÙ^€ôA@p¹Sˆ=ø5(ïG¸ŒK"äo6âµdì-ô‘°˜¼/ºÛæ§ü7û#gÿ³Ù7\aïšxœ;nÄ0D{ŸBÝV^Ë+Q–‚ Ò9„H‘kaýYØrãG.r4Î€o¦lÌÊ3Oƒµtê«Á#XBrV,˜[p¾ÆØ<ãÆKQ‰|rÆXðÚqÒ¢"‚êƒÖäÍß¿öY¸1Iê£	B¢èP€Œ%#šx”qÝÔ'ç2ªc§Q½>NsÅÓ¼ç¥ðt¥u~S=˜¡Îß ¨V;­›šÎ¹þ'Þ|ñvg…[\*v™ã^«.j5–òÜ_ºî^‹<ñnÊËñÓ.ß3w§´4åæÚÅf™4xœu’Ms›0†ïü
ÍôèI,¢“t6&Ø568þH.óe!Bð¯/i¦=µ{Ú}w÷9ì»‚S
°†4J•!E6ÄLlâ„2Ì™¦,c‚ÔÄH¨ÔDœVÊŒH!,b	cÌDÐsH0¤T1Ä!M‡þ;©D¡±©S]‘uD¨cYÖ(Ô0Œ™‘Ä#œ):–¢Nd5+š‹Ø]gàîüYÜ’Ïâ!¯-nãºüdªfhH7P‡PÕ2‚ràæâ±#à®ª9mŠá!ùÏZÚ¤mž‚›Ï°×óÁÖÝ‚çúÖÓ>t~ë@ßÚ±mYöÌ²;X’Ú'³Ð^Ù›ºyGÜë-+yô<ËF9	ƒã~BfKÙ”h>Ÿo!ÅÆ?GW5cŒœr­¹(T‹KÙ?¦°"Ôð‡·lÝ;dšõþìeÃéy8!‘µjÛvãÉ
(A}¹.ânåô5\¬öæ‚ï™;‡æ6^oYàžª„+3¤Š³pª9yO±Û³ƒ{ItkY„ÓÑ=wÇ«§yŒ'½R®ÙðÞ–gÙòªË¶5rj™¬íÖ\øôC/ƒÐ?XKÛæÆiÀQXø½´´ž÷â¼{ÑžÞÂê´|Æ¾x³ÖF(AÌÓŸ½¬W£óR·,‹¸ûÓpDæÁ"Y†7gûÆ^Ãyª3”ë§ŽãnpûÚwOíYÁUmOf¡»ü¹Ù9Ómè5[õ^÷–çì¤/ÏþoÇ¤5å)MW€ÓKG[¾©2Œ×% 	¢bÊò×Hˆ(Î^«öµ¥)‹ºÑ+éK»©ZðŒ3àO°ñ=cÁPä#¯çu•‚¼j:ñAÐè›xœŽ[jÄ0 ÿs
ý—.–íÄÎRJ)íA[Ú58Îâ(}Ü¾9C?g``´3ƒ E‘ÑcÃ4ù”² hÂ(9	y0óãð ÎM!Ï„6¢ÍÂ(ì8Ëls@ïíB¢4‡eqhy Cï[‡Ï_ªðÎ>è«dxá“~+õR–õ’¶õptÁ»èƒ…'ãŒN»Uþ_=*¥ûsÛá
R~`ç›ÐQäüIÚ+Ô²+|÷­Ý ´Ç¡ÃÝR˜xœŽAnÃ0ïz?àÀ¢LÉ*Š¢è5Ç¢eÒ’ØÌòû*?(zÛ]ìbV+3 ÷ir"q¶“#ç|‰¸÷}à(}ðæž*o
9".H– ÉEã0:‡Ö
e%a`4é¡ë^áÌEWøzy…÷ËËœ¦—ù,›òõ”÷ÛXrhD$è±7-½UþçÜüÜç¤KÑ²l{eödák‹gP>¤\ù0æ»5xîv‘nz¾ý…g~ÈGau”xœMŽÁj„0E÷ùŠ·/Jb“ÈP¦¥‹.ûCÌ{j¨&EcKÿ¾ºšÞÕ½œ²A¤7FX¼wœë–TPJ6M0ž’óÖ*öåWJÈ·Á¡å
=am¤W^!
äªé­rJ‡¾uÌïeÊ+¼å4Â-Ãå,õ-_0Ô!/Ï ´4ZK%<ñ#ìx—X
­ðN±Lðºoa‚Ëç9êþ×˜
ÍÿqÓ:oœ¥ï…ª0Ç
meëàF*÷ˆ÷PÖ†=…sbì#Ž‰°ÊÃPõ¿ÝCOÉé!Éþ ÆÉYÓšxœMOÁnÃ ½ó¾O‰BTÕTM;TÚq00ŠÐuýûÁ6©õÁò{ö³ýrB:Z!eŒáR1;nè<hƒ“Z(%4ëµš89«„!ëhoçÁÚQË™ò‘œ9å“ÒTŒìzª{*¥ ê’—˜à5†#ìkÑãájt«ãú”œ±¡$xêJÂ®.gLð†./ðrÙôûÏ
Ú¹‚ƒý£œO’AÓMENÂ×Šön·¼íÀºopæCçä)ÐÑ¸òÎ–o	ywëÙ;ëÐ€
¦N—êqr,8Ø˜V¸Öò‚ÿhAy±0éï\[žš&ZÛÌ·ÝÝº©Ö—»uòåxûâxœË1Â0@Q)lœ¢+[\»‰s˜
Ùµ=V¨ô,H¹'@L´ÛÞÿ¥oš÷Í}hŒhE«JuYÜ¥h:‹”ZõëC6_÷Á2©Å¡BMÍ¼XÅéøkny4`@.ØçÛ… ûëžÖgÿ¼ÿ/Š$å‚ xœË1
1PXÁÂSlm5™˜ä.™ÙÌ·•eaÏ`#äž^@+}ýûŸ¡®‹û¨sNb^2Ä…©˜%že*Ò”£srÄ6µ]ü¶Žæeƒ¢(ñ? d™\é”)#Æ4‘ôzÜqýY÷ØÎ×û¥¿_?ŠÜ%m˜xœ…N»NÃ0ÝýW]‘#?ã¤ªPÅÊÈb¹ñ£qIœÊvÂ×“lllç­S³÷ÐËÀmà^øN>XRIDÃ:tA…^jÆ­<y`ö©‚â-v¢CíDßó^kŒcÁJ¥T°œ¡sÆ\ë¸dxð1bºÁe‹ÍÏ®Ù»kc—ù¸–F)i¸'Ö1FvuŽµú¯>Ö^ÖbG¸|¤r©úéO]·-W@Y»×Iúž=µS<Ã#ïA8}¦`8¦X*-ëP¶t{Y!oñ–¼£KtØÎÿ|&¿öka±™xœ}KOÃ0„ïþ{£$ŠçáªB'$n”{åÇ&±êØQìõßã '\v5«™OÚ‰"0UjÞ2-{^7½æ‚W•d²éj©kÚqUug”“Y,è"ÐŽ*Öp,[•²/DKE«t0IÛ†–m_—ª b£_àU8‡ÞÑ8TW„ã˜8§°Ì5>­«–U¬n9<eQå§ÉÄˆ¼¡‰#¼¬Ap¼n"—›8ÑæÉø¯ÊjÈŠ&Å‰»M˜)kp5ÖÂ&/³!ŽËzz2n·'äcD(f»Æ	ÓÕ;{OaÆ`â§Ó~`tjÀ(aIô?äãÅúV»}gÎV(ü&wóJDã|nŸü»àäo?þ~ujsç„œÍàPg¾ï3y?ü×áÖù;¹•—xœ}AkÃ0…ïþºuc4$­4]í`0ì°v,²ý’˜¦NIœ–þû9ëØq7==½OB¡Ë
Š¥.V
«<S¥±ª”ÙBë2eSVÚÊÔ˜L‹÷ðR™Ì
S©’sd
dY fµ(J¥¹Ì¹B.xM×Ó+{>à<Ì´i"g;Œ‹'ÊÔ²K©Š=¤‹4¦;]èé.4ô<¦¡Ía‰žÄÖù€6‰ƒ¿q•grIó4qáÏGÌMëÖ´³–f=cFÜ×ãq:>t4ùûaßvõÝ½_ ¡éÆÖ’ŽBp¾¦Ðà7ª] K-o'‹)éÄ5é²Ÿqáœq6.â¶½RwFéÝ}Ôcß(»—÷áÆ5q6vþîN„øtµ‡wU5××õœ~ ¾”ü›xœ}½jÄ0„{=ÅöÁF²~lG8RR’'­Ý³8Ÿ$9Äo;¤H•nf˜o™­Hin"áÇÁ¢µÞ;«{ÙY7pî„tSïÈˆŽ}¸Œ±‚4Hã8Yâ¨ý q¥J+¹èvrRÆ(ÃÜZç”áÙÅˆÞ0Dœnçy¿s)kÁÖã#-{%•î{xàçlJ÷{¨3¼`¨3<­ešá|;L;æbÅ¥Ý‹¿¸6B	h¸ÙqVÐ]]Å&~Þñ¾Ö˜’ñ
¥n2ö2ºeÙ Ìi]<Ô¼AMàüŒ•öÊ_BüÉ(ìºm[ÆÞÃ5¢oQ3n§ÿ¾<v²o…Ls°˜'xœ}’ËnÛ0E÷üŠÙ·d=­$(‚¬t×ö(òR$l“I9ÈßwèÔÝ4èfÀáÜ¹gøÈ ¶7‡fnµZ%çEŒêL3™yT3é¾mæq˜M+6á3õã {=È…È~éylŽ}wœúiš:hÝ.BîÙ†H¯Ò{$úç¡N 'Ë>ÏiO¨5¾Ñaè¦¾ë‡i¤/MÛ4B…ËÅåŒHßá²¥—=)KO§’ÔKIžÏ8×,üÓ>Œ‡v¦ª¹]øë•vI…+âs+eL+<¢Ì.xRa÷ M‰ç°Ò&WPŽÒ'ƒ(Ä/‹·éâV›ÉÊ+h<¥íì2í9^ƒiòLÊîþ”¾R
‚k÷Žmcy¶2sÀg“(+ý
ÍNònj$ˆ;»¦Wxzy°.Š¨2_M±´ºh•<[÷
{Î'Vê¹?`©è>ç‘¸)…;MÃ¿(þŽÝnWsãÕBüt«‡®‚1Õòþð¿'/&~8ÒÕž#xœ}QMoÝ ¼ó+öÞ>ÛQEU©ª\’þÖ=O€%¿>ðÚªJ=Î²3ÌÌ¦@4Ïõ(¨«§®¥iÂqâÔàÐÍ3ïÔ0Mc?òÛ‰]0KÐJ!U=ô¢9Öb¨mZjDÓRÑ´ðgÑ+ÅpOÚxDç(Â3GòLp«³Î}Ü#UŠî îÛ±k»~ìáo8gÒo›I‰ü “4|Û£Ôp{. Ü—ÈVyñ7½jÎáÄ‡LgîØèd¼Lö¥`è °~…®Ù‡qÐAêÝ#c/~ûü(a$x-?'M%Z¿ü»ˆo1Ñö¢/æ
h-DóN°™U'YÃšý'îÊ{zøùÚ`ñ×yé]
ÞZ
ûîÀUððFÆÃ¸µàÆ«ét^³íw«rÆ˜CÊÄÊF
èâ’•®†2=gE§þQ–þäýÔE•Ë0«#uòËro7ÿ;\©ž} ‰m¾J’&xœ…‘OOÜ0Åïþs,j7²óÏ	B-Eê
õ²Ërìqb‘ØÈv‚öÛ×V‚K{I4£÷~óä="”Zö{­ªÒ¾îÓž÷¬’¢d]Ù±¦k;Ú’gáÑFP½`iY*Lc…J÷¥â¬®Ë–s)l*V"kœœ‡ßÂZp@cQ>!\M‰sÖ€…ÂïÀšŠ×UÝð¾Ò’R"Ý²˜ÑÃš8ÁÏ5È	®žòPy¸66â\$á»½i)o`GÛd'v[p§LnC™îF‚ó|‚Ù`4Ä	aD‹^Dã,H·Ú|RNÂŽÙÿO/QAt°‰Ù(ñ¶ë2 'NƒGé¼
0‰ðnTß’Ãù@p!þ5hþÜŒ_IŸs'U^..ÄLNmtzÅPÀ}Ú¿^Ì<Ã€².Æ¦T
„ÎÁÿüxxüµ?Þ<nïûÛ#|‘«Ï•Î'0f:£ù'6g«51s“0¤7(9šÑ¢Ú9­wÃéò_åæzÈ_ŽOÌl’xœŽAn!ï¼‚¬`°¢Èò5·øÌxQ²`­ÙC~Ÿõ,÷­ZªV•H¢A£g‚`(¡òZÄ-¤d2»=VÜq¥6$ptÁ”#GŽž<ÙÂž})ÑpÅ
Á9¸¹¯ò‹ê˜åe{äY~ü<ážp®mÐï!÷åSj^GÐÚÊIy¥ÄÞ.uzSßt£&KÏÛ²ÆQ{âZoÊÔ™§ôwzeYüˆ…[WœxœAnƒ0E÷>Å\ d0†8BUÔ.ºÈ®9ÁØ3€0•1rûB”nºi¥Ù¼Ñÿþ¤Èh5:ƒ¶©­“ª,u)"d2‡N!mUZ|bä "RƒZjW*fW™ºÐÜHî
ÙH4Ô¡*¥*®i˜#\°÷ðýd9öÐ.žú'æ¿@¡•nê} Û¤pó4ù”8Â™}àu]Ü íu‡Üîpò!ñ˜oÂ‡½.Œ’Zmöz³‹môn9ùÅÍ!°KŽ#ìÙHˆ‹ïS6w]fïÇ?[Šþò|Û»úm@Ÿ0ÜÎëxÅ<´îg—_Ÿ»ÓÜ£ãïcÿxK|¹‡’ xœAnÃ E÷œb.‹ì(ª¢vÑEvÍ¢kƒbC
8Vzúb+•ªnZ	ô‡ÿ†á§€-ÒR5“¦©)”³ViÜ
Q›Ê4¬áÈ¹6Š’«èh©j½S¥frÛY×Ã´ÐºTÕŽ‹Z‹
w²&rJ½p–…×`ÇC‡˜å±{ÈbÄ'ØV¬<Ÿ6TPJ”G›8¡M=<OQõp¸,¢hq´.áPdãŠómÃhÅ2Î3NÜmÄ=,S¼³Ÿqjã=&#Xg|. ¡ÇáŠw„ÙÌ2ÿ-õ2§ˆ`òö>õyëY­?&p1F%ÝÏù™PÞ¥à‡C$äl;‡zãÙ´÷ýŸY7¼Yœ3±¸_zi“tw	§i¸Èà,Ôw¯¸<zÇY«5‰ßý#<òô¬ÛŸxœÁjÃ0DïúŠ½õc9‘l‡PB{(%·æVÒÊ±¥ É	þû:!…ÐK{™áÍî29ªªR(Õ^£Òe©[‰¼BakÉ¤¶%¦Ñœ1’Ï`mÍ¥ÂJ¢u+ÐðMS5fSi+KnÄ¦±ÔR+N¹ŽØ9øˆnT;Ø¥Eî»‡,Fz.Ö¢–Ë¬aUÖeÉtG—3E8Ë=¼MI÷°;ÝD¡nbï|¦¡XÀ{\òv]Š[\.qfQE§ÓLð/ËÃè ñœg0.ép¡8Ã:8cGŒ}fÐèAœCJN¹ÇüÄ¦I¥9eáê†|È)OÑ3ô3\ppæ‰Ž¤C4©`ìè:Of¬]©yûgì‹.Ž®KâF¿÷èò²á0'ŒÞÁNÿxÅéáí¯Fßkø}ìÍ±o+î«žxœ1nÃ0Ew‚ˆ!Ë²F´C‡lÍ	H…²Gv!ËrûÊAºti.ÿã?ò3EfPlBl÷ªEC®d×°®bW‘–Æ6­tÅ'Fž8ÛH©›RÛªj*å,)r5_ZckHÚé=Ikægì=¼GˆcÝ’å±Ê"ð”uU7&‚Ì»…Cð)q„û4ÀëºØºqmâè§Ä×"¸)ÛJÖUÆMÆ…CŠÞ.82,s`ÀØ¯!·_`#{Ž‹gßO|ÙÍÎíè~ø³§øà/Ï·Llé·}ÂéŽpZ¯#ÆÉCg¼b|zÇÛÅ>Zþ>öÇÄ7Õ*ˆ±•5xœuRËnã8¼ë+ìag!$E½ÌFRlEqd;ŽmEÌ"©—õ
EY±¿~}ÜvûV®ªFWKÁ9`˜RjrÇFšÃ2ªÔÖ	²9gL‡šœC†N•žÞJ@¬;:ÑaŠÖ4’‚Ö¡ælÊˆe0ç5Ý²p¦QZÞ<›aä ÄástÛ¦î8X!£,:–¼”ðÆàëéÜ§ŸàGÙJ^ßÓ®ù ‰,è˜™àN³4M¹u›RJ.@PÊÇ1_ÛNð¾¾üÈocú?´¼Ï‡2wŸåÍƒp6Á¼†ÁÊÝí·ó¿ú
PÀ4xÔs]ÏwÝïå)=-Žë-í¢2Ög$ÂÉuÙcºAùœ»"h ¬¢“¶ÇÃ¶º\#äóæjè+wæM~3‹€Å£«ƒ‰·›ÜXª[uŠ“Öz{XºÙ›oÌæ.gÖËòx|±Þ>TÀA‹lÎIqí»0„kØÄ‹†6v6]<ð„»TS7d×f·S‰ð“Ò¹®÷úm‡w{ïñâ#†^Ô·ñ3[o&ôþJÆVó-­_Õ0FÖ—’Â>8Â$æ{—§cRMn2)àI=å<‚]’õÆéÒbœÊ$©–ÑuÁ|YaÑº¡á¾zÀ™UJt®Ó#«®I¸r¢9®Øp»ƒo¡ç«'Yug¯ÛjÒ›ÕÙJŸÑ6fçSúïûEµëì…¦Óâàn;{?Ö1ý¦€o‹|¦üÙ|õðß‰)9ýX×@ð÷‘üf@d¢kÀ–Ô}áw‚qÑ]fäÜ•ìNŠ±¥D–m~×Y(Ê¼­É§FÝQRZñó:0´½¸½böý(i—àêÍîF¼ÿ²-oxœPËNÃ0¼û+ö‚ ?Ú$– !!n!'ÔÃÆvšˆÔöæÐ[?~¯_‚ÓJ| —Õîhf4³«1+WWŠ×¶5ri*‰ªrÎZ)´X9'¬®a#Fç	°lt-QŠF+Í9¶ËZ	®¥à5êÅri…¨NÔ…¯8Œ<„h];¸‰ó}ßûq¢q˜RaB1}ÞX©RÔR”,¸àœ™°ÝöDîÿìÑ7†`p ÓaüXC
ü{Oí…ºƒþœ€âä’ƒ©+{ëN+ô	zxçžë+0ÁSì›‰z¿$Ø†D ¸>r´¹3eùaÿ}–ûŸ‚åí:MMÚ%ÿå32›"´SÌ´‚ /¹ïþÔÏïO›M™0¸%ù1}š“å0z=;QÈP~4ì¯¿•šxœ•Áj„0†ïyŠ9¶EÆ¸,ei{l_`’LÖ ‰KŒ-¾}#m¡ÐSç00?ÿ÷Ï0)‘²![	…Ý dÓ£Iè£š¦«êAØ¾nyÓ²;F
	,rÛ[.e+ˆ·˜¹Aveot-y7pDeni\"¼Œè†áºÍÆàà¬´rúÖ.F—zñOPw\Ô½è%‡¢ê«ŠeÕ»”(Â•\áy[õçéJuÍ¿ñ¾éEÆEÆYx÷TèÙÀãD¹Íó¢bÌÇÌìÂ¶àì=co£[áŽ)¯8ìë·ÿá<ù%îP;lë!äÈ°€Â•ûŠ÷´®x£’±WwdŠÅÚBí§ÿ>…}òBÄ›4xœuRÉ’›0¼óªÊÑ•˜M RI*`³™ñ:Œí™KJ		cÀ¬c}ì¤R¹$ïÔÝ¯__úu¥@O BR	6Õ4Ñ±°Ê°¥¤
”SaY1 6d&Õ¸¡eÔÕ$5‹AùnHLKgiªRb¦&ÃØÂ	Ä²Áô?~KA*cj:”u’ YG–©àTÕK¥ˆh45¤R	÷¯QÑqàô-áàËéA>%ò]”->‘êü(Pƒ"„TðQ6dYº«gÑu´¾è‚>_Êª¡uqýžÝúä?gYµ"ã¸~¸žCeÇ/;÷—.	Œ­CÛvf¶½u¶‹„·±˜íœÈä¹¾´&m;ÂÐöÛa.à/ý9¯9ê#çÖF¹#cypEîž\ì¸ñ¦®]­Œ§ã³B6ËJŸì6šµ½ÓŽ{_?Åc˜c«ŠÞW™óæÃ"–@L÷K»ç3U<nI~†óÀ›Ü2Ã@±ï½4F¸œNÇ|ò2-IV=¯'ßU!dŸËÅM¯ðÀ6‚GÃþ&Ã¨“¹®nçy{d8ì›M{©výMìgx-ò|ù&&òu±C”c´Ë‰"…jû÷ ñ^osÓ¬r–®ÕÓÖÇ¯OLBR[V_Nö±V7t…žÓŽd¹¶¼Ó^pÊJg¥ýf¥.^ùB;$ž³âSß-Ï§€ÏŽö0ÕF—4¡(w?_ÉöàñÛv¯øzj‚AúÝ™»šÿ»1iI›Œ‚º/
ÐÐKOÛ|Ðe°¦:ƒ$¥W\L™xÿQgú£m'I|÷øË«¾«ûDziÁ®€aQÐT%Hé ý	w³†“0xœu’Io£@…ïüŠ¾ÍÁJ4Í"%£°…`Çxc.Q7Ý,Æ,f1¶ý8‘æ6S·÷Tõõ¾¾eH	q¢Š1VDJ`kXL°&Pñ&˜d„e>áÜ²ªr,ðˆQ˜*‰PÕD¢a‰QQN(Iàß}I"¡2ÑÄ?‰¢I	¥"‹ª$k˜ ÌË‰Äá¡ÏêÌYÞgÀº8/Å·x&ßâ-¯zvzŽëò7D©ª"€'^æyîá–yß³8yÿ1ðRÕ-kN··ô0ÿœ¥MÚå)xúÃv\¬œØºŽ§ïüýãs€cgÄ†®¦®¯õŒdÝ.47Æ\ÉŽÒò[wÔuúáºº!	.lƒ0*.«O·îi;+™µlÀ:ÚaX—ÁíjE?5‹Pí,„ÌLy²§Í!”4ï"¶“±r£Ewß¸òÄ³KgsåÀg{¾F›R°+'ë5?¬,b1«æõ™å7jksa•mO~çéu¢6Ö1*¢%fù6ÎvÈêË gËIá&7RD:7÷};Ë²wxsî‡®_æé}rß§V‚f…w8À‘
üº”4œ+s¾öjÛ+W
£R¤Åò3ö·°¤ê»_Ø•Ò´ÇÅ¸v½]S«Á÷p:6§"
ÁÇ‘ÖjŽ¡˜zõfõÞ©—ØÌñÏCZ7.ñV4ÃB)«ëò.áýŒ43ãÂv¥Þ¶3:¬_9ðjÙ×ÇCº±=ëßqÖ¦WŒ~•¸{°ñ<ªA’_¿ªKÉ¾Ny×ÿ&vïñ’xœ•9nÃ0D{žâ—I!2).†Ii¤ÊŒÏÍ"$QE%Ðí#eAê”óf^1%{TJÉPInQ*ƒÂyjrÉ4ÃÆÙƒõÖh®9¹cö©€R¸Æ;ÇŠ¬ÁX.…T:×˜n…4ê@p)Ý”á¥ÃX0­—eè1§'ûËêþ‡?œ­í4>AÓ²–SM•†ŠJJÉFÇXŠÏpñ±tð¼Ì¶ƒS¿‡ÚìáSñÃŸÞ¶J±fÓÅ¦“ô>úÊñ#æÂ’l‰Sša.X¢%äuÇûêzÏÓÝç²><&7_®_|^Ì¼ÎÅ×˜Â´µßjMÈ[¼%ïª)„Ê¬Çÿž%ŸZ…)’xœ•ŽAnÃ D÷œâ_À`°!Š¢¨]fÙ|à#Û8Â¸Un_GjÕu—óFO3µAì¸4ÎX>‰Â	mª¤!¥EèQD
.*ÍX(Wp~@Äþ¨¤w–+Ó]@k%·Ñ÷Ê0Üë¸x1UÌO„Û>OXr‚³ÿeíôÃ®_Á·~]. t§·ÜhøÀ9;è’j¥7Ju„·}ó#œ§WhÝ+\S®4ÿéZ#Õ¡÷‡ÎòçBŸÓ	œŽ!xÌû½Iâž}MkÞ`«X“gì#Ý3…f±qÏÓÏ³oI-lÚxœ•AnÃ E÷œ‚Ø¢(ŠÚe–=ÁÌ 5²+·ÍíK¤V]w3ÒÒÓÿS÷9é`¼ë´ä$êh“Q	•R5(½ÐHÈÞ`¥r)½päí GåGÈà¤”ŒOØ.ÚÄà¨Ó¶óç	r…r~;–ö’ù™~Y?ÿ°ëg ž¶õÂ¥Œ­cä…`®¹Ö¸ó[ÌuâOÇ;Mü<?BpÍ¥ÆåO7Æ954Ý6•5v´äOù‹çÚPóV{É¯%†nK©Ãûé¿SÙ7»¹gc–xœ•AjÃ0E÷:Å,Û…dG²Bí2Ëö#i‹Ørä†Ü¾6´J7]þÇ<þgJ"$Ûhgœ´M#°‘Z¶…n]×«³†úžs/»a¢X@¨9ï½ªåVö¼C+ÚV+áµVFpÊ›nÇp)ÃœàuÀP0>ÎËxÅì7«¯_ìtw¶¶ót![¹ã=×
*ÞqÎV:…R(Á™BàeÉv€ÃuµÙÂ)ÄBã.¥ÖXuµê,~LTÙ1ìaÉK~NPJë¸‰rÆÁŠ`¾Qdì}nXÖ
t.owqƒ™Ü/ý¶i³žž!?r¡	,Ž#»ÿàà1Œ¹fì-\"¹jö¾2ýÄ>aJÜšxœOÛjÃ0}÷Wè±e´Øµ;¥Œ1¶ï(Ž-µ†Ä)ŽRÖ¿ŸSÆö>½‹ŽŽ¸ Ú\ˆÉœÒ¦!CáàZïµtDZQ”Ö`7_03¨Öz);jT«eh:i}PZ»V‘sm¯$ª–zk„_ø:ø|øÞ1Ã‡¿§'¬¸Ç·4ìS?îÃ4¾‚jtc¬éL/RK)*;&füß¶È÷aH3Ã(}Áž¾-‰ ÅúL¢OF˜2D¼§€B„«Ï—JQæã3màghÉSu¯y›íSÝ¥)ð°z~Õ•>_ÏyNq³­E
òR2ì°”<­hfÏÏó³øM|›%xœ}QÁNä0½ç+ü;UK›4ƒB#@Úü€›8Ó@›Œfþ~“AVZ­O~–ßó³ÍlÕWÚjmœé¥Q9LGº1[j¤¤í†VS§Ä
šzm[Ów²Q¦u5¨µB¤AÉ+¤®Óë·Ž®<ÆÈ9xòàæ5§Õ”Ó»k*ç[hd+›V*ÕÃ¦–u-ruöÌ´À#ya·&3ÂÍ[ÕPÀLÓOzß«&ÓU¦‹ð>ÓÆLþîý	x$°>'<“…™-2ÂDáµßqZ	b€?À>XÒ91Í©âw®ï¿ð¯‹Ô¿¾`‚|%†èJ»pq™‘Á‡¹8ƒÉ'†²#>Ápf‚ôÇ#Ù
à9~ÙrP‹RÇ%ÁëšiÎ‚aåŸ-ú¢ŠÔ_6êS­ëº/£/ž8ßÐùSnä±8JGŸ*˜¸,dò„ü¯!æÅžöPîöâûÏþÈn¢s›á|ýÿ¿Š?A!Æ“xœmÁn„0Dïù
ß[P „„ªV=Uê‘/Á†¨! Ýjÿ¾ìRµ=ÔËã^ŠˆÀJT¥©®‘¸îU!•!"­K"¡9öl5C=ôÂjmªÝS’h$òRKC%U­ÔÀkÁ«F#3—4-:;EœgŒÏÐ%¼b€ö±óŸÇ9`2ëšÛe~B
Ée©šžø>lWg—FxG—&x½lv‚öã~äýý8»ÐÿW…âñz³p1³Þà¨Õ_F`2að8¯é[Š.Œco‡j—ââýÞJý°Áç½ûÛÇ0î
ÏëÜpÈ¢¬¿Ê_lh·îö.û–~‹”xœ•½NÃ0…w?ÅÝ€!‘Ûq\U¨¶Ž<®‰•ÔAŽ]èÛã"*1°0žïžïJ''D:.úSÆ»ÎLx/Q¨^h”Âyc´°¢†’w0f`jôNHÇ<ã½Ì×®Ô\Ò*1ÊQ9jòD—<­	ž'²ŽÇ²Ì:Å {{cíüÃÎ¶v==B'—½`ƒ†rJI¥§3&8bÈ<•ÍN°Ÿ¯¡5×p1ãòKW”cÕ‡ª“x>ac—°>a³ZGÒý$Ì%E8ë¥ !/k¼ËP6„·ðÑA}¾N¨Î
èB†z»á¦k	yýv›ÕûÆ\vÿO¾ 5a‚‡œ xœ•ÍnÃ „ï<ÅÛC"üƒq¢¨ŠšC9ö	XjÆòöÅQZU½õ¸ßÌhr"‚Jr#ŒâZKiq'4o5o:Ñ‘ìEƒJUœ‰ŠM˜(d½±Q5¸ëk%õRÔVÖµÂJ«^˜e+»†á’‡˜à4 ËnçÅ_0ý­m/íx5z«ãø•hZY‹Ò 6¼åœut9S‚3¹<Àë2ë—õØªõ8ºÉÿÂw¼íú‚wgás¤ön:í	Ã2-Ý&œç<¤åéÆSš{£Éˆò@`–É;™À®s=Ô‘2ÌS\Ã¸ çõaŒéÆÐûX Xt~¾ÇÝí~A[ÆN>èjXçéÇ¥¤”y Ñ—¤	þØ-©|µ§{5å©8½»@f­Ý¨Ûþ¿³³/iG¯š–xœ•ÏKjÃ0…á¹Vq7`#Ëz9„Úa†]tue¿‚"§õîë@vx>ø§d"°è¥3Jp²¤Qô\Hë½¤
§„W­GÍî.ÓR@5º!­Cä¢…PVDìZ.L×R§-IÒœ¹­k†÷Á¥â–ÝÁm›F——güµzü±ëgÀ×ùj¥ªÕ*.9g‡Î©Êp£TxÛ8Ày|Ú¿Æ5-…¦?yÇ¥¶G®œ-Ï™*œÒ	bú‚@.T¸‚Ã#Lkw×„ôÀõIygì#õ…j±òûé¿Ø7_zn]”xœ•Ð±jÃ0à]Oqc;ØH–-Ë!¡:dìYº‹El)ÈrBÞ¾´¥CÇÿ»ûá¸œAèVB)¸µ´d•0‚.º®“¶µ•mv1	Cê…ä½kHUÔ`«­ŠL§ÛJŠÊ(%ˆ¯Ä53Kb‚ÁølÂÝÀaÏ&[ûkåùÇö7gK§ˆFÖmÕHUCÁkÎÙª“ÏÐçÞ—Ù°=?BÙ?ÂÞ‡ŒãS½ãµÒk]­u®vôH8Å+‚oæ>CN‚Áùìc Zo]4cŸ˜!y‘ -¯ÃK§2Þ.fža÷üf,²'ö38$Ð™áx\tÉØ—?­PD¢¢¿oþûöm‰ŽE“xœ•ÁnÃ †ï<…o;Ñ@ «ªªêŽ=î	ˆ1JUB6åíGªMÛu’åOÿ‡í<Aí´,¯SJ¤³(›Æ{ßy-ZS‹V*'QJìagŠ”²Â‘­(¢V$EMhvËµžL£Ì®¹O3¼õ6d7·uìœð‡UÃ7»|:¬0Mg84R™º‘ZJVèr¦nr×uÁNÃÞTÝÞ\BÌ4þÑ_…ÒmÑuÑYü˜ˆãŽàR|É°.k\Â=’_6ôB„±äøž­±²t¼äžÀÙl!o‚äŸ Äýœ¦ß?Êtàç½TŒ½?OÞón;þ÷zöîe‚Þ”xœ•Anƒ0E÷>Å\ dcc—(Š¢v™eO0ŒÇÁLeLÓÜ¾ µêºËÿ¤§ÿÉÌÐµLVZ«ŒV„F5ºÅŽ4wÖy”ìë™vâ3§ˆ^“6Š%õ¡qLÊ©ÀÙ²ì)é›Z2·2,ÞŒÓá¶M#æáL¿¬Øõá©¦e¾€jµ±{iTÒH)v:ÇR8Ãcàu[i€óx„º?Â5¦ÂÓŸî:iZ¹ëv×Eúœ¹¢)ž Ä/X÷+Ãã(M÷Â>Ñ3M˜±Ä%	ñï‰}µ„PõÏÓç‹o’$o5˜xœmÁNÃ0DïþŠý 9‰Æ¨BHH¨ùõzÛXIœÊq@ù{TÄ…=í¼ÑÌ¤È¬kÓiM5aÕ6-·´(mm•í´$ƒNvdÑ‰F	PKk.‡Î´MææB®ù9r
e-+Ui–®ª®©Ÿ#¼ôè†á¼ŽÆàáH¿¬îìôå¨¤yz‚J7ª5ªPH%¥Ètò)q„3ûÔÃóºPÇa¥ÝÅÉ‡Äã_ü`¤Ò2ÇÛásâ‚Fÿy£¸ëÕ˜0€1âKÂä	Óˆ1¿sâ£ç»ëø•1­‘ßÜ»_øæ0n°.ì íûBI"³ÚJñM+tÊ‘xœ•1oƒ0…wÿŠ[© Æ˜(ª¢vÌØîÑÙÁ²M£üû:Q«vèÒéô>½÷îtÑA_(RZrABè¾)ªV	¥Ê²ìeÕu¥"¡QT…f+zrŒÒÊH4ÉÄ›B—R5Æ4¼Öe«¹l•DÉ‘á‡ÅÃë€6¢»"·iDï,ìÍ7ËÇ/v¸t&7ËüE]‰Ô¡j	œ³Dg#y8’¼lÁ°o"×7q°.ÒôoZ.jžâ2Å™û˜)3“ÝÁŒ#A–ËÉÓÙ†TN×‡G£5Œ½é!›3Ñ.îoç`qÓ5MêÀ:ˆ)qß°útEnžØŒ~LØ†_M÷úœ±7{vÔeKßgúºûïoØ'´AŽÑ–xœŽKn„0D÷>E_ l3þ Š¢(‹l)‹œÀ6íÁ0ÈŸÑÌí7ˆ²iéUuWuIˆ€RpÎ$SbðŽ‹z’½¶ƒ@wÜ™NpÆÙMÂX …9Öf{ÑëAy!]ï´uFvhì²Bynˆ©eÞ|b(3¼×ìfx¹ÐÚÞB,¸´n[_Ë‹Ð}ÇSŒ‘C]C)øÏsòï+B˜ šónB.©ºBÈ·÷`Ÿ°ÅÃPf„„Ó'ð—©%ä+ÄÛs){)½µÕžet	±>š3›ž£qK !çŠ™
&ÉO¸FœšÍûÆ>Ç¿|O~x"}ž•xœ}PANÃ0¼û{ã 	Nl'MU¡Â	ÔC%àŽ½i¬&v‰7­ÊëqHœ8­fgvF;4!‚ª,u]¢Ò´¢Z•ÊŠFÊ
µÁ®éT×ŽÙIOè	,ºnW…0m©nk©kÅ5rÅ;^«J–u!P2=S&xÖÞc„WtÍaÓ'Ÿmœ#æ PBÊ†7RÁ-/9g&Œ£#Â	vè¨‡§9š6Çäí¶Îy~Ÿ+)ÊBAÆ«tÎüyÄÌºhÂ§5Dí¹O„p"|dì½Gøå¯`‚§)CÊ³£¿!ÐÆà)…ÝãûÒ~Û¤¼ÜïÙÇŒ3‚éµ?`¼ƒv&¸$Ï 
¢ðC¥¤	SBú<‡ƒ¾&WË–ýŸÜ!ÄäF3åŒ½¹ƒG›…®ËÚëú¿þ–ØKŒ”Ÿxœ};kÃ0…wýŠ»u(6²–B
ÝÚ¡³W±ˆ#YNÚ_›Ž…ŽÎã;µ ‚èµaBqÆ¹¡2ø@ƒÐÔXí„ìCÇdˆJ“ÙÌbÏ2§‚¥NªhUÒ÷Œk¯¢(œÃNiï‰]ë0xµ9ãï˜2ú+ÂqØzÎËº`ðäBj„€gÊ(%~ºÝR­XàSàe]ü Çë.Z·‹sÊÇv3þÆ¥à¬“ÐÐ~‹“|¿asÇ¦r€˜¾Ö¼1Ð¶Øš¦)Ã°Ú&˜Çõ’2!ŸÞæ§
ÖûcÇ˜Æ°!m›s±,-!é’14SŒû>ü÷s'%?²†tWŸxœ}ÍnÃ „ï<Å[U¶0ø7Šª´½Dê-}€
ÌbPŒ 'ÍÛ«9÷¶£ýf´³) ‚fmßI%AÕÈ+¦˜æ\
J©Ö²mzìj&«¦#^t	ú~cÏjM»f`£êú)ÞëVB2;É‘!mˆX“Y…sá„ÖáxFØ›œsˆkÄRá+T¯ë5‡Ê(%ãr¹Ø”0À'Údà}£ýy¥ÜÄÁº„s™Á?{SsV5PÐ6Û‰»^°Nó2í@ÛŸÕCF½säMgÝÖA4Ëí;sß™{z&äM)H3Ž	ÒÝg!bž8#úÇö‘d„÷÷’/;9TÅ¢u!ï»ÿÚn÷’^-Þ²aƒ?L°1-ÞÀçùf§ŒçzsLÛkÈ/Q`†áœ2xœuRIs›P»ó+ÞL™Ô,ï±t’NÀŒƒqìÄäö–°1;xûõuÚé­ÕMIiè aÈ–ÀQ5lb•Œ]`QA€‚ÕÔR˜¢©¡TMPNuËÐ„ÁIª
jr…ëfdK•U€Ìþú¹©–™š‚CÕLP!«–…5SÑ-®a%ºn‘è8äu‡^`7äÈ{ž£‡â‹|g_äiWpøÎëò'Rˆ†1&ºf¢{Y—eé¦–»a€ù»a62ôPÕ4‡ËSv+ÙbY“õ»ÝÁñü DK‰Þ?´×›•÷[—„N½ÃÛv¦¶;ñœ	žûÓ•óbä{µ.8Ù¶˜=ôã6	6QÔª—÷XŽ;	q' ìÓÎ:Ýò\·+e~[M ‰2%Öçbâ®ÞZ“ÙP…5{gŠÉûM¢…‰± ·†í4NÊ MÇsOd¥ûú¼¦¥U~z›>%y¥^<£s‚ðã2Oâx=SÊ1äaqµÈÇÖ—PºÙ³utw¬vW7Pt¶¹íO³l¿©5	ŽÇÙëÉ:rŽk§×ã8%Ô~Yiµë©OSBn‘GŸKÿ\Õæòy•ÅÛ{]=/Ûh~þ¸r[gñjéfëè‹¡½¦íè/ýé]Z³»õþn;ÛHh±ðÍÃ²¼àéD\„/%¸M:Óç&/¸úÑÂÏ`W{NÏ‹ÂyMµ<…ìÓíNz´/Bú³™ºÿ^LZ@—jÆÃuÐŽÐè›f™(íê1z˜”´¿=F’ªc	÷÷MW7ÐôÙB Qó±¼]˜»ºúð%ý&žxœËjÃ0 ïþŠ½—½Ök•RšÒ~ˆÖ»j‘e„ÈßÇ‡~@30‡]˜ƒ“•ÑÄ,DÎ±äÈ¢.n¦Ø[¶f™öÔu-‘r@¡¬>‘‘…fB•à˜Öèrˆ³ÑqJ·ñÛ:|?Ò>uƒ¯t/oz0ëG¹ž×óÚê;Xô>XáÅxc¦ÃÖ2†þ¿vÆ[óWOÛ½êéGÇiïm×>ð
¶ÞêñFiÛôP"L¾š2xœuRËŽ›@¼ó#åhÙfi7
³fÁøk_¢ƒ˜Ç€¿>l¢Ü’¾U©ªº¥.ÖP
L¤ó<Ä8”G|B¨,Q•#™—±(á…‚¸Š4´d€PJ¢„’HMFBQÓBQâ¡@bI…0þ«Bó$,É2DEâ•$æyJe"S ñ9Ò±ôÖ€5ÍX
´®Rðrý³ðüÈJFóYt+¾~1®BD0…2„ÜÈc´fÆV]^Ê[C«|øqºð?¶sun³3˜~f˜–6æì,ÓQ÷‡­ñ›ç î­iªª-UÕÓ¼÷0:ÝåV[£ô"¹½ØXwUW–¥®Ûyexyb˜o+e7ÁÖ9o=ßã€9Üâà‚\»8²lÓã­gl³ ]/ÔØ ]sÒp·>Çk‚¬ör1¿»Â'ÓgÐEë÷À­ø¹œ„LÔV¿®cÑSo=Ô¼Ç÷ü=Þl2×Qmø
bÈA%ãW	H,¼yver Êü"5ë&êåô}Õµ\·‡ÏP[]åí\ÙPî¢)%QV«‡ÕQ¦~éßœ‡vŠ…öÛŽq¶äK&>mÿœŽëcÔØdÞEÓ_Ò¦”]º+Ò¡«/«®Ÿ¸{¯yÁ×4¬à“=Hq€À­I»Ü]hÝ–×ã^a'o°ìØî'ë¡œÓË¦…JÇëx¾5?`q6Q]µ{¿ë¥péx¯x]»WÌýù™áèÿþ÷A›3U—ç ¡uG[¾IPIs+ÀØÖäó*Ê~fqËqe_Ðiq‹iÞÎ"0-%ÍØ¾dlã¨™š_icûn˜xœÍjÃ0„ïzŠ½—Ùò/”ÒŸš[hÓsXi×±ˆ%I	íÛ×}€g˜o&Gf=ê¦î;l"]5ˆTR¯Uj F£IÊŠÅ‚‘}†»nUmU¡b¥ÇJšZ’ªí96ªëªxÉSˆðú3<³‡-^-Á=¯Zó£«]a‚{€²Qª.;Õ”p'•”buÍ™ÿK×²kêrø£…¿:Þ¸@<§ÂÀc4ŒëšÅØÂRâ€g†1û—Ýq·ý8îŸo°FæÎ€RpÄ#^æ¼š³>‰Ï…03“n•yb`6ï~²nf›r‘¿²xç{Ž7Ì¡ôSv3,xâTˆ§#}Þ“xœ•OËJ1¼ç+úœ%3É$“ED<âEôòÜiœIºo¼ê©«ŠªênÊ1B/Œ2”ÂB©¾wÂh?1H/;£yH]Z$¶Ù‚Šýà¸’•ÖF9%¹«£ã\(ÝÆ¤[g|bv§qÍð‘FxÚ‹áþó 'wG\(N'¿ÎÐöB¶ºíú®8gU‘(þ+.¾ÅÙ3~Ã–«ÒšgKP¶è1a-¬(Ù8¤j«ØçµØ&K‡jáf	NH×;øŠ°—oï/0ÛÃ
¸Š6Àš`´9ÔS.—[åïžrbì/KÍšRã®ç¿¼Â~ žCX—xœ•Anƒ0E÷>Å\ d0Ø8Bj7•²KO0¶‡`v&Qn_Gm¥n»üOÿf&mD0*IZHÝ
E;®ŒãÄMe¯d=¶–:ªÇŽØ'nSKmœi…®U'æ†­@Þef«ÖŽÂ	¥iŠ¼Mè†ÂùXfÜ‚‡Þþ²rþaÃÝÙÒÆõªV4•ÐZr(¸âœeºú”hƒ3ù4Áë±Û	úùJóƒ‰–?ºªÕd]f…ÛJ…]ü	Ð9À€Å¯à¢=Ö|&cþÈqó8ýwiv¡›§{ð”ß1ÚáB>	ú)nØ¾Ë_Ðxz|ž'xœ•’MnÜ0…÷>/`Ç?²=
Å$ÙHE[ kZ¢ÇÂÈ’!ÉIæö¥§.Pè¢K>ˆï}$•tâÐ•UUk)´¬Zc_‰¾V‡¡”MŠt?tmÓfr	°ì%‰FhHÔB²®ªŽ¤ J¬÷Í¡º“®iòž&4	ÝáeµÎÀQýÖŠË®>´*”Ÿ¿@Õ6¢j¤l%äe_–«³I‰¼I<®QMp¼lE1lÅÉ¸DööÛÜÞq{æÞgÊ•5÷€ZÃlœ™Ñ:Ì­?Ã‚g‚¸.‹)Ë¾O&²”8€G@pô:ÉC ½¤‰àáí^w"ûA°.Ñ¼(3^A¥`ï\Vb
«Jk ÍgOdÜýoh£¿2 I…À{T^1†6ãH·[ìA†BÜL™)³Æ­ŸwÛÌÅ¡æ½Æ2”¶êŸéÙ7sv¤s?Žùp½ÿßËýÝþŒÎ1ñW2ŽÔ…à8ñ:Å5Ò¯ç?àÖŸ”xœ•ŽAjÃ0E÷:Å\ÀÆ’,).¡„v™eO0’Fµ°-eÜÛ×ºíò=xŸÏ•,ê“BDÑx«H:#{›œN!%ïC´Òúd´Ø°RaÈ¹²J¡&í“êÂmì´uC7+Z¦^);k…÷3cy \÷yÂZ2œÃ¯k§w¹ÇÐ†uyit/¥µFBÓ¹®‡]23U¸RæÞö[á<=¡õO¸äÂ4ÿÉìÍéÈí‘‹òµPæ#”Ükf‚­®L!ò^	nû¶­•…øÈŸ…b³¦ÔøÇËï‹oDnÀ–1xœ¥RËnÛ0¼ó+¹$A ƒ&õ ‚ Z ‡öR ¹|¬,62)T\ÿ})Gv‚Ö‡ ½q¹;³3C¦€e[
º6Lhi8­˜d†"ÊŠ*®XI«RÉŽ¶JQt	˜QBTØ´”sÊ™ª×JJS³Ú(Z×\4ºléºDN©÷¾û^:‡žúi{ÜýJÇóCœ"®ÞÃºâ\Ðºan(£”h¿ÝÚ”0À´©‡/SÔ=Ü½ÌÅJÍÅƒu	‡U\à¬nJ­3œtR«ã-ì‚M/ˆc!ûŠE²[ôS‚äaƒ¯V#xÚgµ:òõ°Ú¶Œ5Š6RÀÕÅ‰U~L6C2OœÆqØŸYBºœÁÂ™;ÃÅ5dÕÁ›I£yNÖÂšäTnå»?3•õ¿;(Hýì18.ãÑYlÙ“­gÂpu½"ä§Œq÷§tü»Œ¶ƒ^<b­ÛÌ‹$8ïˆ±Qçé°Ÿ»ÙÏ0`È¬vãÐ¾ë
µ¿ýìã“oö7æLÿ3kø'ë¿õ|â'‘?y_–-xœ¥RÍO!¿óW<½¨ÑÙ0_0Ó›ô`zß0ðp¨³°¦kÿ{a3ÝØžL{ãÁïë½G
ˆ@eÝ³š÷’‰¶«yÇZ©…fuËY]÷FJF {Ð%05ç8v½æ[É©8ã=ê®¹é£(DOä’&àÑOÒ9Œð<-»8ÙààîGú}¾KÄÆ/P÷m;PÆ›®iC)Q~·³)a€ïhÓKTÜ½–b3–âÞº„ó&WzÃx×AEY¦#Ç`U¼…C°	A¥0ogã6í<$ë;hüi‚w |ª!_ÖÐƒzÄ—ç'A©õQ®*rÕ*·’+9ÏçW$'^/
5¤	á¢ªþ \€ß'›-MžP|`Ci\:}CÆ%Áæ¥À<ìeÌyýÁ9«D¾/Õ+‡3ØSÛâxyµ!äÉ¾8Ô•7¦Ý~v#ä›}ÃÜíLû¶ìÏàßWñWôOüòbàóß“4xœuRËr¢@Ýó]5K+±›¦’©€D@ã3šnmå%4*ùúÑLÍnænnÇ=›seÍH™J	…Œ¨##h%†f1k!Ê ÅU*U\³B%ºSÆPjÜ\Ô0¹(¤*6°©Sc–S®ÿõ¦S¢SŒ¹FMËTQlrBÕD¦cf0œ¨ˆhX‰[¹/k0aBîÓ6tžŽwð˜ÜÁ‹($Ëi™ÿHÇCB<Ü—rcs!%«'ä¨MÀSQÖ¬Êº—Ý- Mþs¶«vØ‡û8CÏ@äEàÃ÷{¾˜¿y(àÒ8Ô±mg`ÛSg:N>½Å`æLÈþ …g\ûÛNG¾oOBz˜6CGÙfeÎpš¡¦€z’,I3ßsþõÙEÇìp8½¯®¤4‘ð®¯QQq¸d__&è`^lÞ"¹ªóÌ£nå£ÖÂÜhÕTM‰Å™B¬úë×ÌøìyÚñ -½,JÌbiäÂýy¸L%]±ƒ£ógê*`0°ƒºWñá­=7Î¤wÕÀ_'Swt\Áãµí&vÚ°bÐKµþŠ–šÙJññæ²YºD(@öPZtóBG5}­‘­uÑk»m6gÇièõ†sZ'¼Ž {ÜœKƒ'È¿!=Œ§SgEJ‹¬‚²èòÑuTÕBDžŸBƒ“Ê.Ï½„mFCu“%oaNöûÕ£Çg<'ÔWþt6Ü7¦¼³zÇ@Õf¨Ù©e?°E ¯Ëä¢¸”¥ÈûgôHú\\·²«Ê­(¶™h¤¢çœ=ÐLü7Ü5 
phÊb[Õ·7ü¶m…dyóW¹ƒ–xœÍNÃ0„Ïø)Vâˆù§qãUÀ©=Á=rœu»ÛUâþ½=Má·™Ñ·;š<"BÒ-G·ä•0JpÓé…A£J‡Üxé­æŽííˆ1C…]¥­C½¾RN×^ÇTZÕrY/ÐHë|Åì!ïÒŠ§”`à1ÜdI¡ìñø´–†Ò¥°Q)%kc¤„n8g×4PÎøÏs7PžÎ/ûásJ±Ýs;Ð”[Ê&Æ^gd‡?Ø@_éÔ°»=S Cx{y†b7{sŒ­§é€Ü+£øø-˜ka~ó {öNÛˆ}‘¼/ºKó—5ìèçÀ”4xœuRËr¢@ ¼óSµG++UÉV "(T|rI1ÃžÂ ’¯_ÍÖÞvûÖ]Ý}éæ-¥@e†¤°Äˆ!Q0aP3 b &Qý.$H„b]hâ–VP9Aª(CYR4ÕH¨¨é%
¢®QÕ 	£Húë—“«ºˆ¬`”È’š a‚dŒ˜jÄ"&Pˆ{~ª[àÑŒŸ€Õwäžóù‰ä5«8-~’ºü$¤(²‚t$ƒ'QEá®–ç´NÆÝƒçªniS¯é½ Çÿ‰¥MÚe)xzÀ²™–Î„3Ç77Ûµý­@ ×Î"–iZo¦¹²Vs|”¼ÅÛÚò´Ó'.J;»šfâÎf¦S[­¥;vîåjíæYl¨›ü* T)v_Íûe4œv;ÕCÓ2ŒoŽdæá»9YÙ~iµ^A®j}B=·åt^¥pAóZiäö¡d4Õ}ÄÞ}ßŽÎ±š†}r-‡ Ëz%‹ŽO—ÝõÈ7Á­cŸån"ìíoé¨€K)×T¢EÅqºrÕh×:V~(Fj?%­FÓ•ÚK¾‡“­§”#neaPÎ½¬w«r!€[s’üÚ‹³;4ˆ­8µf{‹ùc9¯¡(EÑ¸\çÁ—D¯oÎxâ.+ÉµÖ_g#Ï‚Ê8`añám£ŽÄÕ9š«¡l‡‡óáËÞ‹Öd®MPäÔS×ãRá}:¹•~]{AÊßNÑâE /VqÙ	6³ýÉ¿´M)hú¢ -=÷´ãà‡¢k€µu	ª¸»¬<ÅÕÓeLZsúQÆ·ªûàw§ l;
xu)IÜÜãiÖ=žÅîçü6gUz¯(i×Ä„þÿòœxœ•MOÃ0†ïù¾³UMÓ¤-B‰;>®•›8m¤%wlÿžnÎp³½~^›"h´«kÙVŠZÙJ[­•é|¥”Õmçº†ª†TcÄJz°Æ›ZÖC£KíL­Itµ“è•ŠÊ²®œ®<Í¼à‚9Ä	|ÀÃ6=BZÏÅ)aˆ…ã#H­¤ê¤®$Ü•Z•b£10ÓÿºÕæ[ Þ3§S´x„…Æ¯2¿]dBi„„‘ò-	ñüÃ"ž!e.0ßO›gf<À&ƒÍ†6ðe˜ÜU‘ñ6­ywK~Nó~S2¬™„tÝ¦þÖMýÖÒ§Ü3eâ5Œ‰Ü~ö~?\îÿö¯øTé‘Èš3xœu’K“›:…÷ü
UÝÅ]P#‰‡\•Ü
†Ážñ;ãÇNBÂ€1!a“_One—ôî;Õ§{qŽ’B ,˜•;·qF,Á<!KÝ"!ˆ…¡Ë,‹ØåFG¥h°2Êm6RÌ9e”;DX‡„`lç
â0ÏüÞ§SÊ¸¡Q3—ÛÈÉ(³3šyÄ²Ën:ÍmƒjU´,D©
è>+ÀçË|bðµl”¨?eíõ? ŒvÂàÉr-Ëx¨×R)!A\ªÍÀç¦•¢«Ç¯çÇÍþb;wç¾<ƒ§	¢8Y‚u¼Û$^ú»oiôK7€n}¾Ì|læìçÃ,^QÙ«Ëäæûü%Iü`7Ne_êcˆ•Årñ®LŒ`¡6§3]“ûj[ï\°¤¸õ	T<„9m;2%ž;±K—»‡äí2¦én˜;ë	¾©Á Í¥*.Ç=š`¤²êþ–³7UG3JËÓ~™¯º~^ï²·h²üØÖ«ÈÛ®ÜÙ˜Ï¾"”êfâ°mxì}»¹‡óh™šÇ1tx”ŒvSÏ2[O–Ýë)»&'¼ûškž½¾Ì<e€}šJ´¥ƒƒÇëËù¦[';¨Eþ|g5¡_Ìs~*+VÁkù¾é'V÷ú~¸ÎQÕ&
 „Ô,ä$­¯á‡çôppºa¹FŠ6æèzWTCå/š5+{ÿ¼ó6G]™PÃx6É¾à‹<¢Êø?³hþ91ãMÈ³ ®k Åw-zþÁd
rÙ^¢uÿ¨š“+í¥1Þ6ÿ* î"ÓJ 
>úDÊüñˆËñIê”=èu×Õ¥à?¿mÕ•xœÁNÃ0DïþŠ½q W¶“‚âÊ¬½ëÖ’WŽMÉß“VPõ·Ñì¼Ñl-Ìàj$DoèI¦€½ÖÖXëõD=éñQ‹#ž*ÎÛ`{Ý»ÇAdû¡cçËªc¥zCÁ	luŸ|`‚í*¸ÀKÅ´™/úmwÀ˜6>^AîG3*÷ªSJ¬î!ÖÊÿ‡;«Ô,(Owø‹}«ç6œb )©,²´	âs;Sdâ½ðgÌmNËÃz˜[œv7Ü)ÖýéZ½X¹U!å:è$¯ÉÜúÚ0¥å:¡îù·LˆmÜML2‡ Ýòü÷ƒâÝCŠmž2xœuRË’›0 »óžé1³cóìt;I Ù@ž›ì/&~}³íôÖê&¤‹$;Æ 5´p‚IL)I„\ã*BÄ$¶Ž¹b¬Åª"âŽÕP¢ÚT‡ºÁ87tÙ	ç§®s›nÅ1VyB5ü×ŸP#6mC}ÚF‚uh’jH·f"3††iÙ‰eéJ<È¬éÀ‚å2îÐÓ|+>É3ù$¯y-YùL›ê;PuŒÖ-h'h@¨<Ô*—’u`žKo à[ÝtL”÷×ôQ0ÿÄR‘öy
ž>áÎæþ
DólýùÊÙí7³ßºpí]ê:Ž;qœµ»ÈIÒÉÆ]˜ÙY/¸ó¯Ž“x¾ï8i9CAãÁˆfvlKòc·{S ²ÉY3Tó”ø©Tó&òòV×Ä.Cû~,F§¦€óBÝò$ÊÅY$aÌÆm!jê~ìe¢€¥ÉÕÂ‰Š[XgNEe>ûÐSinióq;®	ýy\naE‹i0ê,OM)±ßöãëxâEÐ+€ÌŽ’í÷÷ƒ?øü`AOžÉ­j—žn©5›£3jí…Ûm'‰ˆ¤xK¯—e(pÞãi¿‰ Ù±:û¢²‹=oË,¸^Rdã<ñµ÷¡^RïÌqîÌF›Û¢.öëÑr_½·
§bR!›ÜœÛ´-zyÅÍ¶ŒÑÕ2èzRÐñ{	³]4>·ËpÞ§l™KwR|Ãp«³«½(àEnb¤üÙl¶šþ{1åu)b(KÐ±v`½_°ïš
„Ýãr\Åýã1ŠR_*ö$ºÇ¿ž)ø
x~uÿ”°žö Ø†+ÐRò¿‘ý"xœ‹1NÄ0 {¿b{t‘×›!„NGC/°×»:K'Jœüž<€rF3mbÊ”"sÊÎZíKÉº0zÒà"õÍW©8áÈÞú ªÁ÷2fÕ£ô^GI:ÄH¨™{2qo×y…·Ÿxƒ³T¸Ä{Éð,'y-·®¤©ãyzô„!Ð0 <X²Öv*­Éoräéï6õ>ÉiYKmÃhù†º²l¼Áû×çÌ{[öf~­šMÆ™xœ•=n„0„{Ÿâ] „°aµŠVI¹ergó,ÀD¶!ÚÛ‡6éR¤œoæ+¦$"pÂó^é­!gEBX.Õ€Î=ö„mß*ö‰b]§}ç­Pä=†¸uºõ\Í½´º1â²c¸•qMð2b(o×mž0Å g÷ÃêéÁ.Ÿƒ«Ýº<o¥ÐJÈVBÕ˜¦a]B)”àJ¡Œð¼e7Âyº‡ÚÞÃ%ÄBó¯.eúVº>t÷…*7‡$ZÖ`‹‘åŒé˜sxËq,3ö6†üe(ã_KXýw»c
hgª{=*ªÕûÊÞNÿýÌ¾ ;ƒ<š4xœu‘K“¢H…÷üŠŒžå„-˜ÝŠ€
%¨ekÌ&É ¼„ÄýX3Ñ»ž»8ç»çÞÍ‘ç !‚ 4gš*•
dPÁ5aš©n˜*Ö0ÆJK:^K€:DÌ²8S5ŽUaQhR•ad‰¥¦Nà¯<M3Xj¥œ¡3«H#PåH¤DèäÔbD!ƒÌ›¬y!sà=ÍÁ·ë§ùš~šE-yù•6Õ_@3¡n3MÕÁDEªª¼hUHÉ;àÒRð­n:Þ–ãìõ`Hÿç,k³¾ÈÀäs×"°õ¶`x‘½?$î¿\
øèêØ¶3·íØ‰Wé1Š½yâ¬­üb¼Ýa|Ø6óƒÀ^‡äz˜Úóv9E£XžŽz(ùZ¨ÍŸåfá³Î\ðÙú³–Éâ‚Ñû#0Á£×Tnaîwö4‰—.ŒçGû-bK®€Ý•ïŸ«Úb¶¾ŒýêAb$ö·×Œâ$<Ý[—éësÄ”i!Uºj¦§äìÆîy<_÷
ð	ÿÄ)ÍŠÝ‰2âÇîùÈÝÏÞ6SGøQ£9Ö¡Û„£;Ÿ–Öjè6c`á²¹y…°³V‹qãÛÛŽ0wqˆ¶‰{÷ójžØ=öÖÄ®ú¹Ýú‰ïnªfW6IrÓctû{¬Úõ8ÅoY¾•W³†’ûP×Åb‘Pý0ÚÇÌ	Æù6-—öæ²yíßßï~WÀ÷ü8+ÿuæF‹ß7¦„¼Ë8h‡²¿¼—àˆ!]S½pÍ¹¼NûŠtrR6Ù„06i‰¤¹¢$¼jîÈŽeQgàËßõÐ7@æD¾„ƒfí AÑƒ;).}Sÿ›Ÿ.xœ}‘Ër¢@ E÷|EW¶TBÍ«*™
¨AEQbÍ¦iš‡(hDüúÉLf95wq§ê¬ë(ªŠUYVtË"Ì$™ŠHFÅLQ	)ÐÃÐäŒkqGkT$¥HR3œéXÕh
EjÀL#²B`j¨Z¦¢HXæðÀŠ¦íPSÊ@…ë´À]	ž¿Aõ:ô´ëŸê¦£íyzÊKVÉi.?€¨È’‚4CWÁ#T ä¾è¥dŒvÀ.ÙrHÀó_íõ¿ZÞæ}™ƒÇß³¶³k{¶Ž½2wQ¸øÃ9À±·ˆešÖÌ47ÖÆM«`;-O+N(¸Ê3šfºts©Kãe97ênfF?î¡ò‹H?Óc»§¹Â£2µ­qÕñ[Ù{îÚ`²?ü…½ZG+†‹ûJï‡àöV¶ØºG?Ú…§–Ÿy“Øé(Åy> ÏŠ'½,–U”–/ð[§@¹’MßºcØ©[«3Ì˜û¡žÉ¡;ò–#8]„ýuqóî²È\zÛò<Iwªž„³\¾ßíàäÝKuÛZ,¯ÃÍõ£âÀôÙÏwþXÉp*ÒÌoQO{É'‚I:òÃµ£jg¬ˆí*ÖEš.»J°×ÌöÒ9<í}iÍ¿…g³òÄÅé IÎÛä7yx;Ã÷K(ïÒ|ìÞÍÉdU²ˆu°ŒÉêÞ¿pàÅ °æ¾›-VóãBzi®°—ç²ÎÁÃÏúô`f_GA3°v` ìÁŸËœú¦þñê˜üxœÅZÛrÛ8}çW òb§*ÔHVìÄ©©­ql'ë\]¶wR»/*ˆID$ÀH)Êßì_ìûüØžHŠ’hÇ3»µ;™’„n Ý§O_àÊÁŽ§Çñó£çóã—ÓãÓäôtÎçÓñä4óh|zzñXŒ£“1Jn„ªØétúb*Æ|:ñ<>yyrÍŸGÏãèøhz2Ÿsq¿Çãã€×U¦{/d•±×µ2öó‚>Œæôá©*‘"]ü…MŽ§“ÓééÉÑ˜…ã“ñ8À·…¬*ñ'Åƒ‘n›ŒN‚àª:°l.„b	7¬ÒšåZ¥ÏW1[‰ƒ¥ÀçÊ2°D~Ö}_—1¯„}Æ¬fOS©Ò€3%VÌxÕ#v‹ÛU¹NIç9«2Áü¹-³REÂ}3·"æ"×+—"’œ„¸ZXŠ‰¥0k­[ezTeä¼®DüŒAW^Ç8SX
]æ"Pºb¹´XÀ2a¼T"s|¤ãC—L$>HkkaGAp|4yy|Äž¾
˜ûï,v:Ë2bs™2¡bÉ³uYâ^Íš¿‘hZ©t2šÁY.¾‰5»“…NÄZ,Ùá´S¬–…£\¾boä76¯e³¹÷L ˆ·ççìåhÂneªDê$	çëWlOãÏÜ}3ªÚo~±çïÿ×6<Ž[óÏoÎ.a€â£¦oØ¦²™œsVæ5à—ÆÂù†0BÿuTˆ(X«Ñý‚0yÁ‚œËL“7ýÚ7­tWBaÉSè"aÉÝç—WkÎÞ×ù‚%Ùáñ€‡ \½bó\G‹¥jIaÄV"TvO !ÂRQÍ”•ñáS@»ªbKž×@&¢Å î\ÊÜÝ”	c´4n„`HZºŽ²;P\Š†!‰l4.¸’"g¿
³àEÉ'×§³UëR#ÆØA,-âN‰¨: ]6.×Ñ× Ž¾”ñÆ¥Ž*P{å>ÎÈ,¥Ñ¥0•öð©Wò|.	/‰Ž¾ä`†ž³9qE
×B:l¤×FÈŸ~ý(>¿õ6EÏ\ìÃ	¯XbÉÅôhVéYTÖt\¤Ìù:Þñ¹-8{ø|àþ‘6÷e¶yNq\;3í­¶°‚4PsaëT'ÏV:ÏA×	—¹eqmHÑAÞ¹ÈÖs»ÞÔ µÁœ‡áJ‰àJlB9‡'”
líÐÔ9A`U&ßÓF&un!dšu¯´Á“Æ»!@ÿ„Œcµ:Ïd¢èÑâ68Ü•[oRöV}Ô±LÖì-¼ûFpDƒ°á™]«(3ZéÚ²Ë%]á\«D¦µiÀù€Â•Þjõý÷æâ{ž¹L³
¼'ó9¬ ð|¾fÄÀÜ *,Ó5ªD’°(=œŒ;%„šðüÃûrq^{&!ãÄF.E3âPp£m/÷GÅ¶ƒíaáéÏ„e$a2 î‘[îJòå°KZÂ™mÝ¼¢rÂ jÂû?Ú=e”P’ÕŒHå¼ñýW€…éº*ëª½¬tôCÚ<L„Ý[#ãðºÒðe‡VlË¯JJ	|
¤¼UÏÿµ†»<v€Ñ¥cZP! ¼Ó L2¸ËêéœÝc³‹¾i=ÁBŸË(øaDáÓr£e¡».mmXœT$4Ê>72²^MsB0"1_³…%Ð„Œ+`Ñ¾r
Í!5ÛûUzk}Ð¯§ž;sÉ-C qek"7+™KnprŒ›$k7)•J¹©Æ€!óçC™`#úˆjÐˆÔç2ºB[*AäÓíÕ…«IÄå9Êe½áA£®(u­b`¥9;–C˜r;D’¼¶Ù+§¡aI·X’ê;_]§ÙV&ïÝ)A¥OËVà¤”,
–jïÜ„KWcÄ¢D-(Ïö ºeå¢§c}^5Õj_ O½ðÕgvÊÂRI[°¤aÌ{ÄøìV Ë´No!0‘½(W!.‘ëuÝvÍê«Ti|!¯•>ÁôýÝ í&ßþ¡Úhp~UHo”Å{¾½©P€ÑÎ 1^hu@Ù=òš
Å7ªÜñ¡väÞ6jíÖC‘Ñ)ÖöFdg”Þ”fJ’1Pjä–&ª,pT¤*¸ØYRÆÄ‰	e ŽM~«¥¡Ph•ô KQ®dŒ £Ž+…Ò`Ww*BkâVmäû'smC¤IŽfý×>‘ÞˆBS»xñF"å]L¸##ëÑVô-~¯Á{þ b$ßÙî'à¥bOþDÍðä^ÿQódhþ´]˜5Áå‰Ë	»ð¼¨õ° Ó¨±pëžÝ,u¨aCÁÙO~éAÏ?=w?NŽ^†T¯ªº˜o;ç)¸«#:àôˆVo	üÑ|á|ïë(Ôþ`	n²ÞÉ½Œd$³ô¬j„³ÿ˜ÚvôÍàG’³ÝkS#5%<õÞÂD®"zŸsÔ]¯¥Yˆ$ËÎæèSÎ¡ãPÖUJC½Ðû\|xsyvq*}_ÿ—qErOúÌå8¡ÂÈå×œÆmxuH"ßØÛÚTz©×÷t"mºóál©+`OÈ©³Êa?qgrƒ°%½Ö)–ÅNWO-éQ%_çµ5ƒƒ8!(êS2µ#”­Hkô|1º<Û‰m¥ZiÍ®°õñP[IÉ„Y4`•ü.úœDYÃî·t~ÜÒþV¶«¬Ü°†àë±z8úp£¥l@‘‰nê&€½ËÐýÔ²ÑÕðRM€å°u½¼l:Ùpc³û¡Ô²&¨¸äv,m*xž@Ø7%NpsyvññrTÄƒ'x}}Ë(˜ýƒó³ë~Ú&Øßo„sY¤b•INI3ÕŠ†h‹–6çýÓÜ£ÃìÛ÷‡¶<atñÒY”„808ƒ&qÃ§|ôáœ‚d3*‘CÓ–ÈHÈ0?Â^åµÑÎçƒyg³¼á¾FÊRNR¡»ÆÐè>®Ý”ØCæªt“–wRÉ°
XéW½lêaìFASà¸ig’ «ÚárwÏè[7v‘»ß“¡$i;ä¹ˆÝ€ÍÁ–VD4m9à!=ýMxšsÖëÏ¶oìYé ÎÛr™»¹U¦Ø± ™[´Ÿ °O3¾pÑ@3ªŸ>f¹²3ò‘}Üjô·±^©\óøqvsùÇ
D3$ÛGª¥ù«I7jÿåãucµ@×9 °Š£ >¼Üm‚†WQævhê“—WhÄÕÀù(ß£ƒ«ç	ÌUî`òfÜê!Fµê7 @y¹	ÓÌÉ~·Ÿ–E1Ïùw1xˆöÇÐÞ ¼9ç·ó¸ŸËÜ¥Ï}]Jî’ÓN%z`12Žøž—>sDñj2ö\·
ý3Ì#‹šìPÒ Ïr÷´@ØëøjÀÂÄ9n0©UÔ?Ü÷õðm;*7W€?O§˜nËÍ¼Ý9›ºŠy¾@g00ÐU®7‘b!ÖDãä£ôøðøÜmòæZÇÕ4ÌÄ¯¾üzèò.ÍŠ¼lšƒ®þ»ÝyüµFÀ9Ç{¿ð(BuášÕ›}/hú~ørvuqùéîêÍßggwg³Û«\ÏsE:KxÃ€hô‹¸ËITÎµýì!ì­¼÷zÅvÐŽL›´CS _ò{Sez…Ú$~o)}°9ß{¿;¤@ŠòßR‹ï*˜æ`.'ÿ8íRûÙpt?xü±=RnÑá£¶lâRšb…þ@@øt«¢îžƒ\EKÌ=/ ¨ÀVnGÂŸkÌ©ó™×ˆqÓÄ0b&5z™:ã8ÚÄŒþíõRoÜXƒÄR23À2¶âôžìžKl+C/ÕÊ
?õ+x™*ÿhë'ÓÍ+j|ÎÅÂJéŸ!¥ô€:ÔGõb@M ×L?xqÿ´ÄiÀœ’¼;ï;ý\Éb¤ý÷¿¤2Åð{§Kt¾	r§&ÉkzÑhHúrqÞÜmOÚ@Â²e!‚€wÐ ­„Í¼¿È˜4DqŠò/Óÿ½›xGJiëoÑzÓþu…AÜUÅ³þÓí©‘÷ê¸ì¶±FApÍi`ùZ›ïB-ôòÇÏ“Wîl·Ïnî¶fhÁXrf¾á_¹ÍÄ‚›a,]%õïŠþdàbw¨ä†:Ý/Õm é	Š†ß¨AŠ²»þ!imlšÑ˜¾7ä} Èðäñ'Ô¾¢dgô¾@ž¢Lä•<FÉú|}{Þ	7:62ÕìfÄÞò|Éõ°£(N#áî|ÝÖeÆmÜòT²·FÒH-íL7ô¡r	÷,!“ÁbNÄ»2º 9X¹Ùq”!¯GT…¹|@m.ÝÈ½+9K«ß@;·Q†¶VyÆn+AÙcðá“rÆ'Q•å}ÁM+”¨8VØÂO(m7,¢}tU±×¼Æyß7Æ§Ú¦,¹têFR“ÑÔ•ˆ=ÉŸpÞXolr-þp{ýÓ‡ÛÏ[óñÙÝ]»²
:&ÓÖ¯ÿÓ´íÔDRUÃ«æïP°¸4Ë`Ò’ŒWÏçvwHØÏÁed¨äñ¶îø+ÙÕŠË¾Cv^åÈ*§©œYl†³»wîÑi¡™m¸ªÛHJ$åJ› øU~åkö¾.ˆ)¶²òvMÃz.êÐ­wû¸²çM°iSË´½mÓ ;Ûz¡J3¹¡Š&ÍŽ8¥Ù_¬à0 Âd‡/ºC\9ãæ~tA]*vºõKÙu‹m^º¨Ë\Fôs›dZº0"átaJ^a`+r“ý_o„ÖÍqK5C1q<z>3^PrÔ û‰¨,×@ÑvÚyÄß¿ÿ¢µ4Æš*xœ•QËŽÛ0¼ë+xÛKËëwPE¯í­û´EGÂÚ’!QIü÷•Ò-šc{!@i†3C²'‚qªGÕ£j%É±zÅFbØŒ#Rß-j¨WM/±£'ËÐNs·tMÕL}+[Õ5mMªFU¸t$k’²yUË$0²v¾“aßb˜5|~ÏÍiÊÍWc™ÖÓì¶/Pµu5¤IC…ì¤éu3Ìô?ô®ªÇºXÍE³½ngXÌøØ	fG~6Î
ñ¦	þ `ÇX{/²*Z7ö…gŽ¸®`B[RÀ8q›y}	"°	â	&š1†ôÃ QZ ;{us^}‚<3¸-{Øv³’p£DÓx5ö(4ú4Ý$„¢$–Þn9õƒã–‡¨KÅÃ_É'à	Þ´	9%‘qÏyžàis¹Œ"ï%Ã³Å” Í mwýWgì.ï9^Ò)ïñCXˆÆ¾ŸA3ïá\–—ä8Nù eJïEÚ.•¹ójJB¤PÖC'~>¶Y¸e)¦ãü/¿ ®2ê·—xœMNÄ0…÷9…wlh›þ%é!Ävp´q§Ñ´IIœ™áö¤;–É²ì'}¶Ÿ) ‚ŒnjÓµ¢î‡nn”2¼ž”Â‹Öu«êNÈ©e»èô`†¶½ZÉQ´µìºy/›†ø0Ï”L'Z|€7´´ÀkŠÓO—£)Ç£y±Žp-'¿=CÝ·\ñFv\pÎ²ºY"ü'Îf{‡€ÃU“õ.×»ü!Â¨#07L>9bìÃoÙEð3PÀ¹3Ðb#è¿¸«^"-qÇ)þJ6ïzdÚðYnœ§>!»¦|~>
PSÉØ»u—,D{<UÕ9ûJãá¦Z­K÷Â]7¬ŽTL«­lŒ	cÕªž}Ø³CSøy.ÆïÓ_ÞÃ~ (IÃ’3xœuRÛr¢@|ç+¦jÝDf†ëV²0
xAâ%_R0@fDýú5»µo»ç­»NwÕ9Ý¢aP[W)¶m¬!žPšµ	‡±iQÛ@¤YL©ã†•@Ìª›!±ÁbC×â6çŒBn–Ê°aS=¡üï>Âºm'DE–¦a5Fµ’˜·tHh¬l+±YÕ€	ËE\Ù’<¾Àcò^òR°â‘TÇŸ êXµThb<¨†ª*wö˜ÁàåÂ—	x*«†ÕÅõ%½Èä?²´NÛ<_ã½ ‘eà…Îj½þæ €®u‰ë8îÀqÞÜ·qåúd°p'f¶×ægÜãP?œ‰|Çùë}vx÷ÖÎNø¦ôPãÛël5Ñ4èãž¿‹b4¯/1:^í[;úðÞcCFºaoºqú'a4»®Q“÷nw¡.W‹üu Í.Û›‹­¨ÛÎ'­.Eè¶Ù5ý˜ñ\[’!F“^oÔe¥ò÷s@ýÑ) rxÚ×,lÍº
†SWÁ!ØñþnWìú8–ì$ôcj âr©ä(öÛ¢àÛ–J<Í6›ÑX˜ñy$;Ù×œíWë^úóÅÜ¬37)=ó…Â{›Eý]éA‹ˆ‰:ìBt©Ì€&:½( .d	Y]jù 2ašÉmÎÛ–÷ëül>Ý£juÞ›‹ð±Õ÷uâ¯º®W\7é~«<+ày®×Bù“Ù0|ýwbÊŒ5)µ,
Ð°“d­ ß°¥ÞTGPv‹þ1nïQ”ò|dä;(òV|–í [
†Ñ§¨>I-A^š·u_îËþ^”xœËQŠÃ €áwO1ï[‚£q—¥”²=G0ÎÈ
Æ„Äzûíúøð·]Ø;ÍÖ{Û›4s±	Ã0²'C£éGQ[Ø¥6@+F»b$œ“|JÂ˜FµXòìfN*œíoÝáñ
îRá7<3Ã¼{–[.]ž—.®ËÐY="Ôð¥­Öê­KnM>»U}.ÒÅ”|´©ßpE¬™Ú:Åí„\ó±•ðRÿ^Næ–xœANÃ0E÷>Å,A(‘'®SU¨°Cˆ@c{Üj%N+8=i`Ó»ù£÷ôgÊH(=B˜Fv§…ÀÎ[§ä¤IIÓÑn„dŸ8R*`½4ºk”m	ÕB	i­F…l¤uZ’å®7¾e8—!ðÒ9gxŠ°‹ëX‡X;:íÃ±¶9Þƒè$Wìew¼çœ-ÛJ¡ž)”çÉ°û¸„Ú\Â>¤BWúF«*®¥S¤ÊÃÐ½ÏSHq¢Sø&ðËU‚™½_*B‚i6Kß[ÈŒ=ü
+™ýŸxs»Ze +³de‚|N+_3ö‰\•½¯Ì×ö?Ï³/¿~$”xœ…»nÃ0Ew}÷Â†,Y¯ (‚.:¦? m	‰åVRôï« Ù;ðÜK²DBš™ãéd4SgBZ£´F©çIpÍ³ÎäËÌG%¨Ìk§•rÊÑÅ”ÊÍÆbpˆ–Ï%±·÷g»&x/isXV8ÖŽ§õ‰ã†¯ÐwP9%¼PN)ñû¶¥Ö°À¦áíV}„ãå£{À)å†×±‹Ï8Szb0PÙãd±®$_°÷Èx¿¦Œà£-Ö?Zï3´!åòÏ†÷ÚÅïLÈgL\^*´ØSý›ÔVº=rNkÆ0ìË2¸ßÃ¿ß‘?ÍYqÎžxœ…»nÃ0Ew}·©ÊŠ_AP]Š¢c> Ðƒ’…ØV ÉHó÷UŠìÝxxù¸dŽD Æ^Æ
Ýöƒ•ºëµÖ\p´Rà^h£Ñ6¦iFv•‘ÖÈ¹Â–—tÛÔÊªQNûŽc%jôˆLny
ÎÒyøˆ~QSÁ“{b½ÐðV`ÇÇ¾ÛÃ"ÓaY|Îá‹|žà}Kz‚ãåµzÀÉ¯™æº>Û›~À*ìJ;³RE¯Ó¬ô3Œó¼«õî»\’èO%ÃØ§…-•e.d(Š\ÜbXó2]È€-QUM4__Ù Ma›Íú’!Ç;ä ôCzËy"x˜—«©;{·’©‚µ•ºþýû›€ŽŸ'xœ‘AkÜ0…ïúskC±Ñ®å];„’r¥¤°ÇRŠ,Ö"–d¤‘ÿûÊRJé!è¢‘Þ|zOCºNpÕ4éµl:%úf/Z!´Ñ‚‹jQîÄ¾,6Ëˆž •
û¡Á®SxFks†åa§ä±;¨ÞÎ÷B1™i¾Y	žÜ¹ë¶¶®Ö¸ÜŸ´S­‚û»¶á¢mD×Â'ÞsÎÊ©³Dá+ZáKNj„»—­¨‡­¸·žð¯öVô‡V@Å¥ùÅa¥&{s,B06ºKñR‘]$ÙàÁ²
¤<Ï!–€XýKQœ{¢©ˆ. rÜ’Oë+Ìú3Ðˆðüðxúø<o,9ÁCZ½cð!'x\Š>Áé•Œú†‹“ë¾\Y³‚
žb˜¦’QK’(fE¹x¼”!üèþÏ8{3þ‡©dBÆì¤¯"J-‡	Á„è$ÕìûõJº:¬çòà[Šˆ	ã‚úÿJ¬;Ù³G]cªa½}ÏÿmyÇØØo¾ÞÚw”3xœuRÉŽ›@¼ó-åÍ¸YšEš‰¼`¼`=±oM/€Y§i¼}}p¢Ü’w«Ò{õJª’‚1àè,S›hªIÂu5¡&Gšª[T‡6#‰A R•VK@¡J°I8%º¡3 ®q"ÊˆL¸	M¨æß}Ã„xà*M(w0Æ¦æè¶Ñ¸±…P¢ÚwÜË¬ d¹Ì€×w$/Å<'ð–×’•Ï¤©~ éP‡š…,ð4|ƒÊÀV¹”L ?—ó>/u#X[ÞÞÒA Oþs–¶i—§àé1ÞÔ–`í¯Á6ð—îÇn3ýÍ+@—Î#žëzc×½ø=Y¶Ój¼ñB+;«³.‚‹ëÒy¸aÄË$`™7,ôízÑ[´
Pg×÷uë]Ž…69]#Keœ“imY=Ÿ»Éü³¢;g®eül}ŠÝÉ-¯SýzwÃ>P LÇ­í+·ëò°/ï:u¿²>è;²g?ïÄÜF\h™ô"ª_~~^µl<©¶pìT£Ã÷ÑV5ŠñÒ]ø«ÜŠß÷'ç~ºØÒžÛu1+ð*yûüƒ£Í¾,¨¡¹×]Ò³ÁÅâ¼)w$VÀÂì£ØØãVäEwt’÷^Ü5ÔŠâ4ØÜÑÍ×ÃLjiIth‹<?Üosg
@¶Ïã­·C1‹Žý9sæëfú…åjÏŽþJ¢rÓ.(«#Xc“´‚.?2²ŠËm¶o^ðZ5êBù“Ùt9ùwbÊ‚‰”¶/K ØWÏ:	¾é¶
¸h*PvÃå¨ÂÝÐEq)ty–¤L>µ¢i™7ð¨®)àC/—û[Íž<õÿ‡–xœŽKN1D÷>Eï£¶ÝþŒ!@„]`Ç¾÷Kó“qrû˜+°«WÒ+U«"àGÌ‰4¡%'ç]4Ù²Íç1pvÁi4&µs•µ±5Æ'!¢(ˆÉ’{Œ.doÆˆ“­µŠ¯í{«p¼ñ¯²Âÿ–éœä¹ÌCIËpÞ–'ÐÎ¢î®uð€Qõv)­Éÿlõ’30ü”õ2\¤=îuÛ¥¶üóšaêÇ>¾Nòù>¨;ã4L‘˜2xœu’I›@…ïüŠ–r´<f§‰f¢°±‡Õx»ÑM³™ÍÍâŒ}<‰rKêö=½WRéÕ@	ŠÂ)(NTb‰p,„ÅR"‰ˆpj!QRLä2]LI3 r2‰"Hñ*&)IbQQDd’ ¡XáU‘“þúUÇ³	Ç²0Že‘%P„‰"³2a!1‡S>aâqÈ[
¶¤r =ÎÁëõ^Ð¼Í@ªÜÖ? '	,Ïñ<Ï9+³,óTëbV1¬G^›–’®ú|ÏžFôŸXÖe}‘ù×è†µq€gy ÜXŽ¶ã·Î Ü{ëš¦/5Í×}9¡ª.}«ä¥èNÝÜ5-Yo6ÚÊ8‰p;÷ŸžzøäÊeõÕ…g@h÷Jpóà¹Ì³¡ü,O-©Úf',nî7›ðîú¦	ÝÆ‡u¼²ŽŽ»,–´Ò—"R—ÒƒŽ›¥”ÎÂY\ÍìRë;‰Â\@£“›ª´ñ‚»ZÞÌ¡}?‘}Ô-BC4C,/é-XýlÛ6Ø^R•ì5rÔËqfÙúEh†šµéy\m»ÒÏÍE®îÊ¨´u­9kãæy…½mO^6°¼[JâÌ­lZSßPØ;ç;Ev¨9éðH>TÏæ´—¶}Ð£1‹Nf÷Á€>ì»«8fù¹1É²¨¸œzÊO]çŒ;žUñh7õÆñþ0;ßVP¥é‡hÛÎJ´oßðj8eþtf8«7Æ|šÐU(¹¤À7
 ¥m†¢ž·¹öE±¨ãþù6ÓL5™ãªøâ$ýØu-@›‚@3~qù‘xœPInÃ0¼ë¼6¼FNPŠ~ Í´Œ¡¶dHtPÿ¾v·{Ë9äÌä”¥ÔÊëÎ´(‹JÕ(LkÛF£<Ú®ƒì}'fá™ê®<tdÝBWGƒV5RJ¬n´V²:6e+ÔÂ×é<â+]Üz¬¸Ñ½úDrþAÓ[nÂô@e[U!Ë®¥»b±¡“cÆTjÙ|«›™ÑHYKi™ç™BO/çg!ž–¸6®Ä1ãša £¼L¬œ'<ïço,6Bšƒ·Î´Îj ©´ë‘K´Ó8—ëVÍŠÍuwþêkÇ¿+8ÏbXØy$ÚóÍÝá†_Õ”ñê›…¾ÏôzúÃ+ÄÍ¡z•4xœu’]“š0†ïù™éM;ÎÖ"„În§duEu·¶7ÂÇ*CPé¯¯ÛNïÚsužwÎÇÅûj%à–El“eÄ…Ìâ.äÆ©K #³sMÇá˜ä®Ñ2% KqJ ÉY†ÝfVÎBA…C„Åó»ØFç1³LÓæcL„ÜÂ¶{kÉÄÉlóö'BÈrÖëR*°•.í»´÷‡7øÈßàKÕhqü˜Êú3@"sbî ¡qSëJk¡€_éyÏÁ}#•hÃ—âv çÿY+Ú¢«
p÷Vtæˆýl?òvÏ›ÙoÝ ¸t4¥žG=/¡É‚¯Üsù¸¡K§|Åë³¥‚‹çeó ð‚­¿¢–²²„YâºÕ÷KC¨b»ÉÖ?=Hä>béd*šK¤Yê^£3F™]QSåž’gsËé´<,.×ÎôæÉ$V/àÑ¶Ó°>3+Ì5åjT£x{ç•®ôQ˜<M	/›éäëºõÛ°n{Ýø/‡xb ³Þ[§}Z?=Ÿ›*x¤Žê‚fÞéi•Û6\tã¬_aÍ‘´ùË~w¼òòlmðlÌ=\ÇX­ãö2’¡¹}<P)Ä9Û-¶ƒ–ö¢Šûpîí©MÙ<¶_†»×©y'’úÉúºyáï ±¯®‹Ça($áüeÔùÕq–Ng'´âs£õõºá±mîf~;Œ¿Ñ^55’xx‚‰iüñlMÿí˜±ª íG Ä©ï,A®dx&v×¬»%Æ0šs-î*™ê[ºÀ'ð†?
¡´J¶BéJtï?|yu6æ•2Ï;¡ËÎ¬IÅ/Oe ­—xœËMJ1@á}NQKEl*?“N=ÇPI*èî4™²ÑÛ;^Áå÷àÉ`†dmð†JˆH6ELÅ¹R°ä+¢™çäBj§Á› Rv9 IT\,Xl%Öš4:ä9°M5»è¼Vô%Ÿ}Àû-ðÊ¼ÑÑ
<ñÍ‰_Ú2µ´N¹¯Ï OµqÆŸà-¢ºÕµ‰ðÿnµ+?¶že™2œá—–Ë>úÎC_ïîÏPÛ7x—š@¯õÊTÚ2«_CÛUVš2xœuRËr›0 ¼óšéÑ“Z Ä£“tÛ„€Ÿœñ02!lÇ_ß¤ÞÚ½íÎî^v§©®¨gz¦ÀB¥¹©gXÕR™`HD2"ãª&u)§­ ™R¤&ÑÕ010.¤a”gRDHA!Î©¡ù_ª¤†jR”¨Ñ4ƒi®«DÇ²œ!¥¤8/”\M¥tÕ™ŸÖ¢ö8dxl¾ÈwòEžëVPö=;Ÿ~#(CC10x€„Ò§zª… ,j±	xlÏœvìã¹ü,ÉbeWu	¾`»/ëÅì¼Ehí£­û[—€®ƒÙ–e;–µ±7/$ÀÌt¶¶¯WGuuAÜ»ZV¾ô<kÆz}¹‘Ò¢â$\o—ˆÇHÎâN¯aøÆ²þý¦§Ì4Û{œ.+¼òÝ£Çób›Ø½0«á8,ZB¢^Yá^ÂÍ=ÂIw•Àp®ËÚzg¨´ŒèöÒ™Í<©›àè q¥1%¿˜¾r_CëÑù¾BwºwÖey°#Yèv-·éó¼ŒÃ ìÇ]7+’z7§UåÀ£¯šYåsÆJõE8›lsZMðÝ$ÆuØ'êp›J k„ÛZ¿WÃrÙÊ¢i°ï"ÇsfÓ¾ŒP!u©Ç÷¸õÑ¦Á\™ßØi'+ž®D³DS†nÐ´¬?2æ0÷wû·pú´É¤pì&AmaâöÅ¿]œ Œµ‰/6M^™—OxšÂ—þlæ†³/&”—t#c€Ó~¤ƒ ßn‚‚ŸO€Ô¼¡llóiÎ
š
Ij/'ú±úHóc×¹ Åçg¯s×Úÿû{• xœ­OO1ÅïýsÔH÷Oq!ÆA¹H¼O;S¨”.i»D¾½zñ¬Ç÷ÞÌ/y/Gf¨ë¦jÆVI*¹àòVKee­n±0²Ö’GŠVâ€‘C×–°T¤›B£Òu¥‹ÆHEHÖÖÍ˜”dìa»¼m#¼xìÌ\Ü±ïÁT;OÄHðÌ!q€»ÝùdøqQ&ð§G†¦ÝßC¡*YH)Gnd)¥èÝ½Ë™ÿ	\Õ£°Ç=Œw@"HÝáÐÆ¶¯0_.§k!Ö[—Îaú•æ-Ãêý•!òÑ%×(†Ì½of†e»q=Ìz½ÆÜENpõ½ëØ¸p!=Q?²³'XážÓaFH9væü8âÍmÓ µv O“¿!¾ Ël«•™xœ•QnÃ Dÿ9Å^À1Æ+ªªþUí_O x£`ÁR%·/Žz€ög¥™Ñ“f‡"t8	Ó+7(el7h)bgQJÔWÚ5wìfF¬TºŸøé4gÁÅÜiå&'õdùÐÒò^£TÌZ¶èi·’Ýçë.v¯>†ƒÛÖè¤à\ôTÐðsVÝÕáÿp=üâìŽ0û;CÝ2ÊpK5òñÂØ{t[Jè(< äj-Ù¬¶¸+Ìµ½	¡úûNOÒV*ŽùÀØ§×¢[ÛöR›»÷iƒåÞÄïÛý4.øÖç\0·BØ—¿Dœšmžûÿò ûÞk‹™xœŒKÂ  ÷œ‚´ò}ÆãÖ¥ñ ðxX¢-M¥o¯ÞÀ¸œIfÚJÄ½·Ò#DtE¶h‡<8#“´*:¥…˜µeKXin#’
) ¨Drä¼ñN!9ðš¤w,lm¬+?Si#?mOùþþ…>~áXæFëtàÒ Z‚5¼Vö±SiþÌÙuI¡O»”ÛL©«9wñµûeÈÞ[²WÃ™xœ•ËNÄ0E÷ù
ÿ@ª<úHF#4‚å,ù‚Äq§QÛµ)hþžŒ,XäÍ=ò‘}ËFÊ	ë")ZòrZkPYOR£E'<u*XR†½¹RMQ¬$ÊÎªQ;¡BOfPmG‹JI˜;Ê”7x™\,.Ý\ev[ŠpÆoÖÌ_ìò°Á¼>ì”é„.Z!X¥k,…6¸R,<;Npž¡ñp‰©Ðò£[ÛÊ:Uï«ÎÒûJ—xÔÓéF§/q/|É7µvs%æÄØk¼¥º‘Ç‘ûûé¿~ëxš}xl€Óã€pxœÁ±Â0 @:*Zäþýv’âíhP9fJ‹˜ŒUw¯ýo7µªj‘J’0
#8qE¢B‘B	ÈG¢á°rÕ¹YT¤\Àe¥„ž}VIÑ%È^Ê‰
!Ë­OWûçb¨ÏGûXîvÞìö\×¥¶÷É´?èŽ'M”xœOOÃ0Åïý¾ìF«4Yÿ¡&&MBqOg´I•¤ÚöíIÅq@Ülëýžý"°†SÞb—´hx^6Tb¡$Š‚¨%CÅ9«eAŠdäM€¶¤,oJ¦Xu[I*jÅY®¨”eMX­]F=ŸBg< R°×h`õË¬åú$E&ìpyA›’TË¦‚”„$q:èÐÁ#êÐÁÝäE«Ï¹ÉÚ¹Yk°ÿç,’/#ž<¿?aºÙï`«Ï ej<¨QƒÒØK8uñŒûiàÈ%o{;mxìQ”Y’l&7'í/ßú¿r¡CØZ7ð /Îz;#µà!æ<àÀµÑæÚ'9!àF‚ïì·d‘¼uÚÃÈCŒ¤ô}ôŒnÂF—ùŠ¸üUÊÔ*•¶—ë¿¿÷[ü%_¿˜ œ–xœŽKNÃ0„÷>…/àÚñ3‰*„X°'ðãwó«‰SÅ*·'¹b3£i>MÛ hJ}Ð²ÉÛÞÅAJ) ú(u´BÇ¬m0É€ñäá7(ºh»dER ‡Þt¦óÂ¸AÉ,µ=›VÄïmZ7úØ&ú¶×8Ñëý—p†W,æK\—Ú9˜AªÞQ&¬ählþ9'ïø¤yÝßh}@ÄŒê(¨’,`#äË}¤Sk:r~;°{8a|Æ²?Yù^€ŸÂâŒkÝ¡råùÂ[ÄÖœYøÿòŽüÈèqÃ› xœP¹NÄ0íýÓÑl6Îå$+„tÔ>Æ‰Á±Wñxaÿžø D3Òé´"‚’ÚŠJÕÈÅ *%ûzÔBØ%ïj-plµZv–+‚ºãµ¬Õ -C£š®éúvhM¿¾ck¤áµULfšã
Oèh†‡œô·ï;8ªÜ»@è:.wPuõÈG>Œ\pÎ¶ïâˆðŸtöè>á-Å 1Ó9DU=Ê„¼(\c¯9!ÐŒàc˜Àú(	ì9…®Wðrv«iãaã˜n>ä6E–ðGÁ v‹ôÁüJjé¹0%Ð1{Zî–ÆY‹ßcþÄ;°Á#Ý$Xq‰—Í‘ŽŒ=»ð~‚™èœNe9mÕ³Ú—Þ…üY„Ë‚å~
í]éRÊ˜Ê¦k{qS@SDku=ýeBö6¬_šxœŒ;nÃ0D{‚+Y\þ7#mC,©¥%XC¢‚?T‘¤àæMÙ˜‚Ñl½2)xëSÏ-¹èƒÍPÙ”j^´ñR„qI1`0F£BÚV›*kt*ôŒuYEÿ·×!¸s-ÙÊ¬ˆ¨zˆä£Ë”lî5 5t”aÝÄ'eÇžñþ<áO¸KáéšÖù&À*”(Á h¥“²©í<–ÂÿÔ›/Þ,âFKÕ.3íõê"Ö,†R^û[×=êÑO½›Æåøi—ï™»3Ú4Í/qrc¿—2xœuRÉŽâ0¼ç+,Íucg3–ºG@HL€°…¥o1v’uàë‡žQßfÞ­ê-ªR½¦œšLx(t‚± +º`.ô©²‚áYåBaRT"o "UÀ€pÄ55eDd™ëºÎŸVÃâ{žkŒAõ q‘ªA"„Ž0"H#XAÂÔq¥ mâ¢®Hš˜m}ŽÁ[ú^ÙøHòFd¯çâú §`ˆ!Æ¼@BéÉ^“¦°“ÆixË‹J”Ùý#zhÙÖ¢2ª“¼|•iÙt	Vö
l©½4vþÆúÃK@}mžMÃ0Ç†±6×3FG[m¼1]_T¯S*Úw(5Üh0Üš
úÄ{ßŠi‹zz’@¾Üu—”T[¡Œý©£:y6°Ö‘¶·‚Ehø[_ñ²ÊØÔÄ·]èÈ²#Ó2î½TÝJ×éqÞMÜEJii!µps¥Ñâê¨=Eµã.>² ®9ÉÆy3®O¥uÞî¶zšJH¡{*w«“ÝÏa¦†´§”éÎôêÅ©ß‡úLlæ´vÜCÅ›”Ê¤›¹MZÒ~)ë%¸dËÎ¤¡w«WƒÇSU¶›ÖüÄ±µøöI9‰â,ã¹O.ûõ<²ÏYv2,‘Ø‘ÊòËJ>9æ†õ‡9Çi¯Þ\ÁVÆlciH/©Ó›f•Þ)‹iÛ™ë‡™;ÝÃw	¼{LJ3³–“'&-D	P¶Y*qkEÝ€
Ö@XW°A4bxêçËH’_ò Iòè»Ê¬^’4@¯è7Fäõæ”xœÎAJ1…á}N‘½Ð¤*SI
D\y UIÅîÅô™èùˆpûøùxs˜ù
¹uK–‹JŽ	%7K]/s¨—fQÝ]†ÓSe$‹¹eÈ$Ú$sB5¢U­½±È’þú¤Ô9&íL¡[³€ËÄÚJ„B6'_s¿O¸4ôÏÍTtÈ”Me´]Î×‡É§LÛêíúâa}‘'ÿ(·Öë1§ý_poÇy<vÿþ[}|ÃîL¢V‡â€>xœ[ÂôƒqBÜÄ>3&s£‰Ç”Ì´L¸¸BRK2óÒÊR‹Š3óóJòõ¹ ¤d¶ŸxœKjÄ0D÷>…v³žèÿrœ!t«[¶™Èd9ç6¹@  àQ¼êYD2F‚’’Ð2$%;ŸthÑÉâA[ƒžõô„Æ{…È;™mT!¡AãBÀ8¢IgE¦p1àÂß^¥¤’e	2’c•°8“Öä½§‚E<ÁÕ×£	§UtZ¼#`ƒw„F+ì'Ãïù¨ïB9¤qF&ñ"GMƒÖ­wþ¿aúä¶°h\ÎsoÛ¾ˆ¡Øó*nËÖ×çëyöÆP¿öŸÊsþÞ^+œãö6ýgžxœÌ1Ž! ÀžW¸?)#¢ÜSll6[„E„ü?yÃµSÌšf ˜
YL­bbÃà±nH…µaË…+Ñ†’wƒ§õU¨e‘B~+¹&A¤¬Ú¬ø(R«Øõbrü^sBŽr„_5a™¼ø"<õÁýþ2ÞyÙ¥žÏ„©P)áÇçÍ»¯>µìÿƒûS=úcTcëzp‡×{Œs.÷¬‚Lö‘xœ­1nÄ0{¿BÝUw!EÓ’€ ÈòŠ¦ìC û Ëÿ›”éÒl1;ØíÍÌQÐä!³Ñ”ÐÒLÈ±hÈ$g-ª±à˜†—4ÛºC,@„âƒeb+Q£‚
¢ÌIÑdÁ~ý™tôSÊ9 YRaó%O‰ÇÄP&¹(â g_÷æê¹J­2?d½òó0Y¤ÛC÷êÞÿî>²	¸;0ÀpÑúìÝþqrø²¶˜kV÷n÷ÞD¿ŸÛâr“MWw;_Go&õ­ÊqýÞ†ÑÑoÙ˜xœKNÄ0D÷>Ek6Y%rœc„bË¸€?íØ"‰#»4·'q Ä²žú©ª)#‚i‡Þ;Ñk9Ù9Þk'dïmG£•àÂ«Iõl×7%¬5b2ÚtÒ¡³‚[iÊÖ¹Îpå[¯4ï§é+…”á#x¹àñó9ÃsÜ—Æ¦õ	ÚA(®xË¨ùÈ9;è‰ðŸ:{Ã}Ñ!¤BõŒ·¸"å”cÕi§˜6¨BßgA5WŒ}¼“X cÁü…t:ðÝ‚_Ëo].û¥aì=Îº:y_›ÛÃ_ö²öxÊšxœŽ1NÅ0D{Ÿb/ÈŽ“8F%'XÛëÄú‰óïq{D‹(gæfø ¯úàI{4!N¨µ³f’qÐõJ5x9(ì£W<(3(k•íIb@9…”u•žl×…qCµLïœ!7^ö^)ñÏ·â¸¿œ¢u§xL™imý¾=€:+'[—¡‘£”¢º[b¦ÖÅS°a†+ÎT Ö™> Ð{ò…ÖL…áœÁŠ/I9qBNy^è›¨)ÄGªÕÿ·¾îsi…xKs¦Ðì16îóî/Å–²yÞžxœ•Anƒ0E÷>Å\ d;Šªª»ª»ôc<l1‘zû¥ê"«v7ÿIïk~ŠD`tÛÖì­UàZ)ÙX´¢F’Êic{Õb-È°#…Øb…Ï:#um9ÖRw®Ö	a:áx¾¤c¸§q‰p¡;†4Â¯¸tÃçø`eüe¯SH4—ýâ_ ’BéüJ]AÁ[ÎY¦~J‰"|Ð”«Þö­á|;BiŽð¤k^IÉåÎÂÝSÑÏÓ	Þý:“?f¬1+S %—-A¿„—y&{ðèq‡‡ãÓ©dìsÙbq®0_§ÿo|.øÃ.öRYê€|xœÁ1Â0 @¡2±ñƒ,ì©ãÚ‰Ä€ÄHÌœÄî†PxKÅø oâ)Ü}»W7¶YÕ™z,ˆYƒ÷¥‡ž2'’0DPŽÆLÀæ.³ÞšË±’D&6«¨5§AhPFâbPHLÃºŒ‡5&–Ï¾£–ßn;is§óåzt¦Ò³¾ãêùÜ)2à	‚
xœÁ1Â0 @A™xc>€Ç	±$˜YY;¤®-UTE¥ÿ¨™ø oâ)Ü}›wÓNUÕ’˜™ç(±Ñ“·"Ú°'<”(8uÛ±T}LJO0%àŠ@!Ÿ"‹öš4#DŸ‘–ö´	xàås\gX~ûÝEutçÛ0«»w­Î´LÏª/ZÍæ+°äƒxœÈ»Â@ P¡@SdDîcŸ-
&Iá;û$Š (\Ïb `&FW¾O÷êÆ¶˜õ¨EQ­xâJ‰,!0K•D,£èAí0Ëb·Ök(Ñ#çB\0.ækF  ‘a¨(ÿun/;Çüú>o#¤°~ûvìÞdšŸ§Íã:'¬žxœÍJÅ0…÷yŠÁý-iÒü‰ˆ¸\ˆàR’Éö¶—4½pßÞöú.ÏÀ|ç;­v”L†´=…¬{ã]2.¦ÔKdDÏýÄ%VšhÙë 8’KaÀUÊ‘µöL b·óDÜÚ¸Tx£ÒFxÝVáéç]:ÂK™M.çgèò>Xç5œ¤•Rì×siþù.>èJµÁÃ|=Ó	§ò_±4àÝ'Óµ —‰ 0ÌKƒK¥õ˜ùh\7DZWÞ&ˆ9c«ÓƒŸcY¡Þ±+üéAJ*{—ko½WRš”¼c
C¯"+v°èí„xßk*Å|»;´¶Ì7jpl¢Ú‰_Ü~–xœOAnÃ ¼û«œëÈ€!ªª¶×ÞÚ~ Ø%F±!Ò*¿/V?Põ8³3³35—£³!>V¢f3³|ö­õh¬tB0Ó]M¦X“œp"/¬Öã¬÷#zLZ¯f/µàÈøä¦ÎÜê’2¼Q¨¼ÞŠ[àñ²ƒ£ÝÁsˆ•Ö£KÛ°‰+¥¥Ô
úAC×Ø-ÔJÿ´wïôE¹Â!~mÔ»5œàBru…L5ß¡Ü®×Ô$¾U<¸#¹Ú›u=ºîs	¥Éöˆ¿U •×£vœ‘F%8õÄ”çÒÍ¬ÍWHL:”\w;Á…r¤J@‚oS ¦ÚÞ $¨ûƒH„¶”©Q¹†xnÞpŽ„}ò¾·÷Ó_Öw?¾ßf‘xœ­ŒAÂ E÷œb–º°(PHŒñb Ci”¶iqáíåîÜüÅ/¯îÌ`†ˆh5ë4*5rÞ'mÆ^J”Ñ)ß§hÅF;/H»10Ú\PÉx½DÐ)åI%‡6Ž=™ è]óºCyg*…ÆŽrÛûÁ4Qå.®®¿Ù¤QnÐ¨q€DÑÞ2×ÊLŠ=çe‚)FhÆ6¿Zýd:Ý!PYYkæý8C¦mûˆ/`u`“7xœ•RKoÛ0¾ëWð˜lÈo;H‹®=ö¸;²DÅBd9ävù÷£ÈšÛ.Hè{‘ŒêF)™!6ežRä5ÏJÙu¼ÄªÑy—WÙ °-[v]¥»Š—*ïxƒ…(‡ªæ-!4ÖM›aÉ•ªj] bb‰ãìáu&
wð¶Ø“ðÎÀAþê¥§kïùCÉTÎÓdU^eÖ¶$¼äœQw21¢‡74q„—%È§µH‡µx6.¢½WMSq‚×gî}ÂDZ³m~Àcï‚Q»ðïà]ØAŽ(OŒ}±âH¥°}€YoåJ¡6H}L˜0œ…ÄÞ(ú~)ò”}#DôDú›Â•jeÞ'ŒÝáoTû0äÄÍ„%žqkœþ.E€pN­ã¢M™Ù‘ cFÃîNéðœ$è7l2Ãb#˜pê‰X™3ÄËa2aQŽ)cßqh	$ºU†ËÕqÇ-.‡q4 âZùº‰©é@>ÒÂØÅã–öaB)¢ûÓÈ(ÛHÐ{z·%®Ê4,ñ·MR„¯æH«Lf­“á²ÿßSýÿ‡ód?&Éá	‚AxœË»Â0@Q)Ht4ÔÁ¿÷³¤pì)$‘åE¬Àf,AEénqîçôí†ZTû¤£ŸröN\Êä“½‰µYÉf@ã.[,ºÔÞ£åÄÉ=pG™`Òãpl™"´á~fòˆ(íÅG`+í}»¦õ¹ÍXçuéµ”µì¿®þò+uŸ3xœu‘K“š@…÷üŠ®ÊÒrxHšIM·C_ã¸I5t70ò’‡h~}4©ì’³;ß=÷lN×p"“q¡ÆTÝ`
”Æ(bPG1»išiÆB]ªiÃËÒB\…cP@…qsj˜L“˜"ýQ‚ú›75Ê-U°Xa”AË„Â¢(R'Ð„†®Þ›•éÂí»´jÀ‚g]
HßÆ)x>=ÌSô0¯YÙñü)®Šo@…šeN”‰n±b(Št§EÖu¼NÖÍú<—UÃëüöšÜúè?oI´YÆÛq}°rV`ã:>ÞîÖöo.	-‰	ÆdŠqHÂy4«—ítMfú©—Iã³™ëb[é}äÍç§ÑÕ7M$½†$`ŸÐ¬L÷T“îY· ÅÙá°/Î»pÐO­çäRÓ/íÕÒ“½5ìŠÏýâXaÿ¬h¬_H L¾Wy)ÅòI‡÷Î%þîo“Ü ÍÇP:o·eqã:U¦x&÷ð€´Ê1l®­ÎnÞ¨Ææ*óØŸe“|g¾Âk€7ôöó3Hƒè£X±`AÉú˜†0Ø~ƒfñ3k½
ÏCe““W^$ÎL‘9u
ûcá¶EÊ³e9ÝhÊbZ­×oÎu€Av.½=$rÉü"›åi¿¡mïØV"/ýM>ÏeÍrŒÏ“G†íœË6ÂËÑ–¸«-zgrn:²sŽBÌe—jòrJD†ü"—œªŽôg3Ûû÷b’Ç›„ƒºÏsÐðsÏÛ|™èMU€"+‡ªÊ
ù¢>²¨š]­+ª%Iå¥àã8Ï¾Êhûº®šÜ cãû±åÝFqQÐ’ýû¹Û‘xœ•½NÄ0„{?Åö(‘³þIr:!Z
*ÄlìuÎÒÙ>%Î!ÞžQ‚Ýh4Ÿf¦.Ì`'«1Hää¤[äŽ•§Þö’B¯­7Ã(n´p®€¦óÚX¤Ÿì(!ôJÒˆv §;4î  ­^Ê/1¿—Ï	ÎéK¶1µžïOs¢xm]IÐ¬B­$<ÈQJ±»)ÖÊÿÂMß¸È÷Ä»Æl7O•¡^|q[:.„}VôÍZ¹ÂºMGe/ÄÛ/éÃØVšJøm…xsfß”šéãô—áâ{Öxœ•ÍNÃ0„ï~Š½C¢ÄÎ]Uˆk $ÊØÞuk)v¢ØiÕ·ÇEpã §]­fæÓl^‰`Di»ž;¡ÐöX¦ä×ZÅQ’âràCß’e‹^)fÆ Ò¨F‘ÕVtb04:ktgL×·B·F‘“Loù<¯ðâãužá`¾ÖÚ‡éò|
ÚOµÃ´}ÁÎEjV®ÁçLÿ²÷#ÿ¶³x	TÙÉï`[Pg‚HWpž&Là#x¬b‚´™;GGdìã7ÙKaïnðª¥E[‚¢ÒòºÙ¼­´ƒJ”=>2ŠxòXÏ”è'¥ü4"á=ïø]ÓÊš±wŠ„Õì\en»¿”dŸ‹>’(xœQMoÛ0½ëWðØbˆ!É¶¬Ã0 Ý!@[H°Y¢a¶ØrÒüûRYÜ]{ÉÇ÷A¥t­œ–ÛFÖš+‰R”Þ*[µ\6ÚŠŠ­Z+ØÑŒhî¥k…•RûÖ7ªQN©Ú9ekƒè½uÌÌé0Œðây`ÓÃ×þú,B_8<}ß÷&t…úo jYjQ*-ààœQ·)á§×µ*eÝÈÛ:‹§W¶`œƒi>‡1';Á­h8a¢n›eLtŒmEþr…¼þz-žÃ”à`&hc&B„†ÀšH]BÏ¹Ž°û	º`»C˜HãÆ¶~Ý«`žp‚õÓo!€èÌ‡Â"{GíÝæé¾`ëyÌwî.°„ ¢ŒC"–÷`Ý™h²ÏtÀÿR·(#8"Ízó³[s¢S™¶ÃëÚ?‚4ä G3M”ŠŠ0ØÔ-,Ð^åÍrÙÄŸEE”w÷¼4;ˆxÎ9IxöÝjð~Õ^?ósìtÇÑ‡–2xœu’Ks¢@…÷üŠ®š¥•4tU2@J‰à#>výâAÔ_?ff²›¹»sî¹wó® šr¢Ë3Î¤:$ã²®1DaL£(aŠ Ò‰´¢êÀ#¹a ¡)
4šÈ@!sÄ°:"IÿÎÍäTÈˆR“ÂDÇ&ÃŠŒ©lBˆ	LL1®J¤ï²ºÈ»Øý™eà¥øÏôK¼åU'ÊgVE‡¦1„&x’‘,K÷˜wh—w~OÁKU·âTÞÞÒÇƒžþç,=¥ç<O_c»Þ4‘ÕÔ­õféþö% ál3Û²lÇ²b;žQ¿FsgiFö©-.j;,‹ûÓ©TwFåívf¨.ø†ˆ›5	„Ï'ìTû²Á'
ïêÕïeRÛÁ+KoÕi¸Œ™³¡é¢Þšûz·N¥	ÜCÍ^Ý"Z¹>‡ïZ¿	ræ:ÙAÎ¸äõ™oo8Q›	ŽÌC$_#Å[C1÷u“Ö·@‹µðÎßÓ…ƒ6ì>oàÖÍÆ¦vŽÍü~[-ýÉ.ÀóÒ¹ŽR¥:M1iNž£ª´€Á¦Û­$pã•X›­žy³&VÍ5/½ÃÁÀ1ë¡l„³´*ú¤…?Î¯»ÑUNnÍ®ø,†t_êGLû%Gb¦\ù^_î§ñ-Âüâ0êNPÃ–zXõk'¼¤ï×¥®Èkb9‹.Áñ«^+—Òfn8ù71i.ÚT€S_– M/Îø¡"’¶>‚• )éÄøHÎÊHÒòo¢«áü{¢²Oó
ügzúÝ•xœ¥Œ]jÃ0„ß}
]Àfeiõ%´/}ë!V»«ØP9Á‘{þÆzÂ00Ã7ÓwU°$¨œYDç‚3E@Ï˜˜}	•­Òp§]·nÀsöB4ÕT€œä‚µÔœ¹º$ö)ûÇ§j]Å\ ÄkT%É‘xrñÄB¶tôå¶›¯c¡ÖHÌÇrú[{å‰ÎüþPºR×‰oíb,Î)ô.š`x¶mí]ÿy3|®ÛúXÌ‹ïßÇuÝÆ;ÁðÄž` æ€CxœÛÊÔÆ4!nbŸ5“¡áÄÓ®j††
º¦\\¡)‰%™éy
%©
9¥é™y
e©EÅ™ùy\ Ù·xœ¥KjÃ0„×Õ)Yd•DëUJié:‡ø%l‘È.²rÿ:Ðž ›oø˜éàNZrÐdHJ;ˆ„œHY¸Q@ymNì›–ÎuT
2
aòÚù ²Ö6zR‘TH2í•ÿóÓ  mÚÈ&Ž.J­$3ù$=ú¼6~}ÌT+üs~æ[ýå3=ùcMÔqNk}çÒ(oí`eà'a„`{[Kïøç»¢Màuí8õFéV–‰ÇFKšùqme*Ë¥Ò¶?;ð¯uÉ÷’úöÊ/Wº!—;Øt¸läšxœ­Ž;Ã D{NÁb­ù#EQ®²˜ÅvAˆ`}ÿ¤K3ÅÌÓèq'’Ö›˜I„và<¬u*$ £M¾ñÆN/–z3X&ë½Ó*¥Ñi4˜Cˆ.xˆ ÃQàÅGë²^ÖŠyÁcæsîÈ´l­Êûïí!W;-(eäíë%f[Ofúã¥èTpãÖ)ËÑ*ÉÁý|íC| V#Xžžxœ­ËÂ0Dï®Âíúo	!T@k{M"a%õ
àÆeóFoúÊ,+p6µTJµ³59HÁ¤àbÌUc­üêR;m‘Ÿ*Ñ•P¢1ŠÙ£Í¶*­TMQÐÞÇy•m©5*G^7¦uòÜäù7»H´*ˆ¼<GÛ¦ÞùJqç6¿¹ÈÛ¾<§|å÷…^eÄÆàZÆ•xœ­Ž±nÃ0Dw} iKrAÖlúEÆB#;päÿ¯ÎÝºÜp‡ww}Sú0õæ§AŠå˜ÅQ	³$ïÇQ‡TÙ½xÓ¥CŒÙJ1ÃH<‰˜æ$™F6Ëiˆ£0Qp¼÷yÝ í3·ÆåÌó¡··òƒ»žempù;»…aÂ@Çœ0 ºÃmµwýÇJw_j¯ü™U¾ëvþúEàó¹?êâ~ ½á^¿ë„ZxœÁ1! Àä
ž`E´6Y—ÛëýÈÂ.j¡$€ß0ò.?am|„3Ÿé9½‚Dp^óx•ä"'ŠÂ™Ô¹¸)ÁàÙ~ôK©vü¶ã»Û`€y>Ž÷i@ö `LÕÌ©—ªb[¹©m½^ïçfþ!÷’xœ…ŒK
Â@D÷sŠ¾€¡3ÿ€ˆ‚[7Þ ÓÓcŽ‘8ñüFÈVÜÔ¢êÕ«³èÐG+brFá.ˆÖLÉ'Î¤C6˜£v£zÒ,
+Mè;L>
qÊ–gvd¼x¦Þ¶b:rYÑR‡i†²T
¥††5/¡Uix*°ÿ½ u:ZìÚ`‡Q­mk•.ÛNßÛ÷ÖaÜ4ê*ezK‚óò¼¼‚ð5Ó#½õ& X!™xœ…ŽÍJ1„ïyŠ~—$3éDÑ£Að	:ý³ÜÌÊ˜yGÜ«x©CU}EM¬kb›ê¬QdâPC­!µ	9Äd>»OÚtP¼EÉuGÁªeÌ(ˆIù^5‘ª‹£},×ú¾Pï$'Z}úR:ÓÐ_;<ü=BH1û<"Üùä½;ÜÞÆÐ^o<ÿ`ÿÎÄ9ùr›q/k.À‹òG[ÁŽ“ï¿¼]ös[Ý7žsZ~™2xœuRÉn£@¼ó-ÍÑJ44”Œ6Æ`^prë†f±Íâ6‹¯2£¹Í¼[Õ«z*éUË:Le¬ëº©ª«#ªèHÃ"*z¬2–ÆZ¢)BC8«Z '	©&‰K2eUM%YG,¡TQ!„H1Ö¡úW…*âQ"ijš¤
Q,k	Q	C…©ˆÒµyÍÁ’mÌîçàõüžé7x/ª–]žãºü	$UÆcJˆ4ð$"QF¶,Ú–q`í¢£àµª9k.÷l<ÐÑÿØ²&»xúÓ²ø¶¶Ží»}hýæ €áfÆ¦a˜SÃÌÀ¥ö0ë§¡¹Ôò“²é!wÃHŽc%ïï(Úû[)w‚lÃÂ/wlqRgWWj‚ùòp5“ÍÚ½FS~u§Òp"rãÜœÓÝ|rq—½Ï}>›|õtí›(f›ü, ýø%¯%»bËY]ÂæZ‰Õ9xÕa5q7— O'y¸°žïïKKYo«åY"Er}®BÜ±]XCý¦qÎ^naŽËÚX¥åÎ8ÞÜuãû(Ë°ÌgjT8'$JÝ‚£Ð´À?jýêáãîó¥ñ¬Y¶=|†è^Û|¯ô^ É46¤a×çþc?›Nèßƒ¡ê•z0E7>¨ª Ìu±KšÐÆ¸¼Ý7ºbÈ^¥Þ—2ð(‹e×.ì=ôV9âmrØ‹¦tŠÂ —óù4j³7¼íÕˆ~fy³LX3ž1Ðt—àìÚ±[~@¤‚”×%(É½({v)2R½”ä6öF"^·l\U !£5«8ö•¬å_ñúxœ•K
Â0 ÷9Å»€’ò@Ä¸vý’¼ÔBÓJˆ¢··ÁÕÀÀ0£3šª#"*“º}²èCžŒ±˜sÍ¡+Ôy K!Sƒ’>*í¥v®*žKJÖ2D*G4NÐsÜ·WzÏNí‡/óDëej4/Ç¼µ3(§ã>”á ƒ”b·mƒÿ/Å­oƒ¡Ñ
šê~¼pãÑ?âA’G×”$xœ•ËNÄ0E÷ù
 mÓ¦oBlÅ ±A,ÒÄiÃ¤i•¦#ø{R^‹‘`é«cûØÞ!eUÁê2—¥Ì¹jhÍ¥êÒŒŠó"URÊ¦.*ž‘™;´ššR¥jžå…bL°.SEà:¥’òºk –¾úar°Ç#·~€=áË€î`ç>³ØýdÚz4±˜ÆsH‹¬Î­ª"ZRJB:jïÑÁê0êr]Ä »ÃVÄÝVœ¶ç«Êò«Øãˆ‘0º…ëq68†3PÂµ@XÐ(ð¸xàV‚™ú˜û¢ä/ôÜè´í²§» k!„ûÇ;$iÌ`™Qh¥…æ^O6¾ÕöÐÂàý¼´IÒÿµÛ¬£íúm¢É·m2¯Æ$¬Ì	yÐ½EMJEÝ[ûÿ—’'1pÛcð>1Iü¸böÔäFî}8äùtÏ¾MÞYÁð’#xœP»ŽÛ0ìùûgK¢HÙ2‡KÚ»TÒ)øXJ„DÒ )ÃÎ×g…K†Ë}Ì`fjF„Á:­[Í{9ÊÑŠóóh­íYê^ZËE«5—œ]UÆXá$\Ë~Øy?
ÑKÑY‡(ÛQJ‰#ï4LmuN¾¨»ðörÃÕO*¾NAùõhRxNò3qœ‡öÔ¶Œ¦Á×ŠÞÐ×>oÅÌð¼ìÍQïÍ«ÿ€‹±ëxOðàì“µ°‚“^p'ª	Êw°ª* #
2N>Ep9 :¤Óü€5MD-­•A¯É,PüO3oq)4,u_&b92öîãr¹Ök¹4ÍD27½‹kV·û!Þ6ûs0«o®Ûº6ýÐ1öÕOí!9wÐËï˜¾}ôÏ¸Øw3«8!É|—rPµúHÿ‚0gÊ›<áÝ×'rÒ)ŒÑ`)Šì}œ˜Íòãoÿ7ûp»;ž2xœuRÉŽ›@¼ó-åhÍ˜f1M¢ã@ÌøÖt7ûÚ€Çö×‡I”[ònUª*é©jb”1F)ä«iªhD%2ÝÈB™¤*æ%¥DE	×#FÛ	P$`¼Ñ¨¦ˆŠ‘ŠRJ´‚±*
äEQ#„lþ¯~	‘D©@Ñp"ÂDI!…	Z¤‚’	$´áÐ<å-¦óˆsðR}€çä¼íDëgÜ5_”U€PyðÄoxž[Ø¦˜&Ê€SLßæ¼´£}}Í–€9ù-ë³±ÈÀÓÇ–ãÀÑ9‚®sÐÃèdýæ9À÷ÑÀ†®¦®F°KìßÍ“á)y)ùW‘¹ïºN¾¹®îàx_ugáÍ
ÜÀÎÍ“o¥^áÀÀh6š{ÎC;UûóO%º_/þ®ºì¼v6â†Çòz›zqéFÙàëûŽ1ƒ9Þ¶–=<	Ý=ŠstÜ­º@bóš5–¬j†é¡ÛÛ=áE£rýÃCy{ñžµj™Ékb_«rùâ”¨£Ôz×;Q”„\ÛFq!LO½9Ü®ŠdIÇ`Ú:ï?ð,ÞŽ©¿ê·«ÛÈ\”e±Beñ–Å©9ù<×6óÂ›RLëŠLÕU­›%	v‚¶¹oµæÞC/Ëv™óÍwð’ƒxg»~Üi´ÎGÛÆ5nNŠ[Gµçù±Æâ}°Òv<Çº!ÿ\íáeÛÃ_8ð%ÔHÇýéÌ:lÿÝ·§,£ Ÿë0:ÌtœÀ'QÖ@ÊºìÐØµf^Ì¦¹nÐ¸Ì†ã@{mè®‹Ï@'8t6EÓÌ(0—q¡–üÓ–ý’—xœÏÁJÄ0Ð}¾âíe$M›i2ˆ(EQWþÀKÞKhIÓþ½uçz–÷Âárka†Æräû [$ï­=õÑXåµº7Aü`áTl•&g‡Úu­kŒ—šBèŒ%-%)[rw\s¦¸<üOã‚q¾÷yy„F«þØ0­†;i¤G»ÄZùF.Òuá“Ÿã>3Å°ÃWxe¬[áõô¼îÉO%§¼­ðrý{5äâ¸¬1'!nQP'¬à1Áx°ožyáZvøÈ#|å=¯SÈâ'ñ|x“xœŒInÃ0ï|Å|@µ—À0_}K^06%!eÈôÁ¿ýƒ ·ªºëÂ^vìCN9h§-Kïà“³>EŽ)ë ln²£TJÊ>¦àÑõªQÅ¹A¿`€ðà%çÀÈ~4ò¨ó¶ÓKéò¸ëLÇï·Æ·œ—RñsÐm=QË]èZ{¦Æ:kÍ«®K­øçÜ|bBÁ.´J¡›L¸óµL©ÙrnÆçÇ_®Í/È:\p— xœPAnÛ0¼óû¤dETI“Œ¢§‡ž‚%¹´K¢A® ú÷¡r*z(zZÌìÌìb8n½wž¤î9-MãÌMkZ¶óÝÞ‘¬êP£¸`¢™¡W½2è;…}o±ÝËÚêÎ´F!y¯¡jÔ¾®À…‡˜àÏ˜‡ ‡Üq(ã!/™*G_@µuÓ6²o5ìd'¥°qš3%øNøºd;ÀÝy•ÙÀC˜™Æª?íºVR×ûb¿)vñí2•7‘CœoÇ1®À|L2¬[&f‚‹–câÑ¹?	ÈËåW ¿â3‘ÛìÌ~¿½?Ÿ‡ç—§·—×û+åm7á™DÉšÑŒa>ž—D•?bfˆþ“Mè7ÓœËw`£#X1Cp¢‘r¯`bJq-W}Šœ—„c8ÍävÑû¹Þþ³Ñ¿µÿÑ¢ø ~·¬ixœMNÄ0…÷9…ÀTýIÛÌ!„Ø –ÌœÔXÓ&(q¸=±@¬¬'Ï~¶$"èFF§Mc»§Æ£n'ÖÕ]ß×ý¤[Ô¥=¨WL:cÜ~²dK³žÚiÎÝˆîµÕzïhh´ÂM|LpÄ3fÏðtA†[áRîó–©šèš¾íú®Þ÷#ìê±®•‹ëÊ"”à™X<<lÙy¸=_Ee¯âžƒÐRðËnÚ¦6m[ìC±«Çè¶µÄDá0ó;ËB°b:SÊJ=ÁBáT†Ç¤¨Ÿ xÌ ,.|
4ÁåšãÊ½&zã¸eµp 
àè9Ã¥ð·“¸x
¶8œ ³cž¢“˜nJ‡Ë…^c"È’Ø‰á«”zùZ·‹ó¼³‡?ÿö›ýÇ¯Ô'>Æ¢…›xœPËNÃ0¼û+V¹¢DNb'NU¡Š#áüX×¦N\ÙUÿž		8qÛÙ™MIˆÀ'kÍ¨ìhÙ4Œ¥n…˜¬Üvµ£´œ\eÂ¥€™˜5²ãF‰VI®X¯Z¡)7ÒXËÄd8EIMGäZ\Lð\ÌðæÖ9;Ÿ8¾—ïù”×ŒÁGhy7r1ô¼‡ÚQJtœg_
&xA_<­Y;8^vÐ¨œüR04ñK.ZÖö”BM‡MN¬TÉë| iè’BbÎu™#”:n¡t©e„¼úÙ™Â}¿TÄë¶÷¸“+°eL0û³+p“[+_Q{»	’ê—{qùi2ÃChö?çM­­ÕýðßjþÊþQùtž˜5xœu‘Is£H„ïüŠŠ˜£B6k!:º'$ÈZ,lYÂEm,kQ%„}ËÝÑ·™wËïeæ%g ¤¦„˜¡66Sê!ªÄÑ¬ÔÔ-™Ð"ÄJ‹8«`ÕtÝ0¡IgºNXzãÔÒQ
1NÑ"&¥Æ_?a¦jX´R
m‚˜6ƒDU‰jkØA”R¦«Ô˜Q]ARäÏ¬9ðdOrðýò%ð—øYÔ‚•¤©þš¥Û:4lh‚©
UU¹Óª‚q"”|¯ÎÚrü™Ý$þŸXÖf}‘é×y~mÀKð^£`ã¾ícÿ7W€†Þ#žëzs×Ýy»%ž/¢ý<öžíüln¯×¥a¹ã˜”¹íÚãä0·&·e0	ƒØR€·¥å,^ßä~…´.×u\öÕN¤}4Éü[–”†þ4¾j°ý¨¸½*eäIHÌ·òpó“¯ ìÞº¥÷²Åi7o†>c¬åB¾ƒ%Ž#üôÚ'ÒYã7#6?ÎŽÕgø>¶‡í%ÀÄ¾7°ÝØY]=_ô;î•<ìWï³ .eâLÎÎñ6	Ç«ïy/-’=£ÎÜá¢iïh}&L‡ÝS›4¡\z1ÕòuunÇiÔ	WëðÃšu¾·t"±ëä¡"ÚÒ„Ÿwžz¡‹ÕG¤ òÜ4ÈL]·vƒÈo?Mò=ß‹hÞ½§Fø´8Û±>‰­Põ®Þ²×Bñ¸ÚrõÚ¡Ùü¹Rþlæoÿ½˜²f<c •e	8ë$ëøÇ05ò¦UQMSTWí>¦ÅíÔ2Î~*êSÆÄ©îOU”úZ±))‹oàn,`ÈYpy¡ì
êF€¬¸ÞÁozNë~ZÐ_ƒØŸ=xœ­“OoÔ0Åïþ£^€BVÙdóoUBâÀqØÞ+Ç'V;ØÎ.ýöŒ½Ým¹Ä%Š&3o~ïÙ	ºFçªïº¦Øˆ²ÙÕÛ¼ÏQò¶¬wÈ»Ë¢bwh ßv¶•*«º)E¹«E‹¼lk)ûBUY¶}]WŒ¯a´¾ks²¾Íp7§×ž7Ÿ‡™ëi#ìü	¶UQ¶y·+*xŸwyÎ¨:ëðŸÆÛæ2ÎÌqÆLLzJÿ‚#’Óˆúé‘¦ÁØ ƒ>R!U™ñ™–/£ VOO =,N› Í vF„³¤°á¨ù+Œ'åìœ£Þé?Äò[%ßÁÝGÈ7 ?Œ@X=yŒ 8ˆÑÙHTK°Š]‘%~ e§Éž"ÉÍa½¿™ž|ÀÈÙcü”hQf£IÞxÆAQd«CÜã†1€¯‘z®è“?ÃImá)H&Œ5Y?YñD¡ÒXô”ïá€12o,œô4Á-%{Kà1‰´Šràá’<A^Ã§6uRRlq–b„³˜¢4ÃHÍ‰àž¢|ñ~qœVÒ2C\±ŸR!J»z°æxüòªš4´Cº%÷máAŒg>y›îZ<r‡auŽ|Z‘ðìÃ¯}¼ÕÜHr“§)vëÕUŒ/½éÈ<ù8èÁÄU*ëŸöó[°ßpgO{›2xœuRÉn£@¼ó-ÍÑJhhV)¥Á›ã}‹oÐ4›YÚÐàØ_?dFs›y‡'Ué­ªâ-¥@1bb&qB¥HÇ$Ë¡¤ P…P¨ŠU¢([Zs é!TMÙTu)
eI‡ŠaÐ(!1Õ4Á)R
£¿õP’•8B’e¤©1„fhRC–MEUˆ"™H"PÂžgMšóX}G2ðrùÏÑ7xËkNËgÒT?¤Êº¬¡qx‚„ÂÈV9ç´NÎÝ>/uÓRVÞßÒq@ý§-ei—§àé;¬™ã-ÀÊY­ç,ðn¿™ýæ €[gcËÆxm­ýÈžºw{czV(ËµÞãØõ<lÅà¸éÅp;±v2š8À5©L®¹’ùºòÎhYtP><B3Ï·®.›&YWÛ‹òÞð¡ýÜ¯Ý×ÑÚá	y@œª”n¹Y$3g_Ü›ã=øš-©›v´÷½­¢“x7òr‘51$ó vÊÙIÜ™õøÅÅ˜`ÿTù{»âÕ…Ù¾Y&åU­ËÖIðc~ V¶g¥SÌ/®huÅçTzjðõG` Ç=!Ã1™.7çýÆ8|Î
µ•p¼Ðöw¶øâeÃWs4§³Ú[tXÜõƒŒ ¯åÒ@å»ƒydå'Ù”kV×)Ëiöè¦¹yÀ|?fï“ñ¯ÀªÔmìÉ‡µ½h	.Þ^ðj9n"üÑl¶˜þ[1áƒ¶)¬/KÐÒkO;~ ¤m*°å”e´Æ»>Š:±
»Ñ8‚€ãt=cMËA2ñ#'mSVöi^ÿQý™”xœŽAÂ E÷œb. aJJbŒÀ•^ F›Ø–Pz«Gpõ“—÷’ßjÎ >¡¬1‰£ëÙ¡¡!ö,V‡.aç‘œÏ¤J¨ynàYé )‰hÂà˜%GÏM‰¾#ÃÑª°µ×RáÞryå[Œ+œÖöÝË4r]æ#/ÓÐvvp½#í´V;ÆÖò_±º¦ëVÊRÈ~àö³¡¼·ç8«”ÙKó4xœu’I“›H„ïüŠŠ˜£¢»(¶{Â,-‘HHÝÖZØ$ˆþõV{bnö»å™ï’)8c€ªD·SÍML(BÌ´d¦ $+ÈÔ#ÕÐ2Â¤>ã¬@×r¦YzFM†5Ýs¬`„!Æ9ƒ¹‰aÉX—qö¿BÈª«,“
e™R#Ï#ZnZªôLSt“P(e£(;BV‰8ã@Jðåú)žñ§øVµ‚ÝžI×üdM1]5d<ABéA›JÆ_‰`ÄàKÛqÖß–oÅãÁˆÿ+úb¨
ðôyÎ«¿‰@ìÇà¸ñ#;=^s	H`âØ¶ãÚvâ$ß±ë¥{pB£¬Ñ~Rùf¶ml6¶»ª7éÄUæî‹MË»L\Maš†«JDÇãþd[8nD¢7çü^/¯û•„Ž8½ýñ.y}Þý4ËÅÙ~ ëÂ£Òsj$VíƒÆælâËÝÎ®›hÞ0ÝïÛŽê•…º‡s}ãuüV¬¼¦'½½4<±øRH`ª‡+ÙoIbùdG6è:_ls·¿4ïÂÖ®!„xU£m3ãô0ØixT…Ãö4»JmîP'«vÖ¡¯ïè#[ß?òçûZ½`ÿ
}3lã¸`¹ÍUåÓº¾{cßZwžÖoá¬½ Ý4ÿHX¿Cç#Kr½–­SóÒãu5EKp£Û“o¤iI3’›t[ùw¦’d¢®âQI¾JàkXªô_g¯‘÷çÆ¤ãýx»Î~ŽlàU3@Î»ì2QeƒSwüVµÅKÞñ§ßC“$›RÐõ¬}"eÖ¶ì”g*úØq•/ `]Ã_À0ö}ÇÅ/u#éxœKNÅ0EçY…çèUiÚ—¤!`ÎX@>NÔ&Uê ½1gcc˜ÚçúøRAÇ-
"ŒÚºQ¡<-|W“‘JJaÏVÉ‰í¦`"@Ó÷1|tWµ“tÁ‹k§zÃqârd¦Ò’<Šæ€‡×÷²Æ4ÃÍfïÖ8/”Þ¶.æ[èÏB‰¡×j„+.8g.o[$Âÿ‡Å4L?avï=äÓÉ-&%\At¢o¿Çp£î{.ÄØó‚ß›cGCtÍ”,Íf\Ñè;xÙ½!jü¯™ÕnÙ×µ3Ôä±d’ÿ†¾ŽÎ˜7¤ÒtTª£Z°cì)Î	ý)‡p²—ë¿»±Oº‡‰¾›2xœuRÍ’š@¼óS•£µa`F„Ônj]@Q\Åå6ÃŠÈÀ îÓG“Ê-ùNÝ]Ýß¥»çŒ¨¤š†s}‚pF#Š‚¨j¨:¥)Ë	RpÎ¢b*	g§<:c9‚˜êŒd“,WSC£y¦"¨Ó‰B 3 †ÿú	Êð8K¢”Ý!»Çp>f+º®@ÈË‘åD"¢/|Võ%°DGKð|xïéƒ¼V§ž¿Ó¦þ	”±:Q5¤
x‚„Ò]­«¾g8UïŠ<ŸÎÎÇÛkq ÒÿÄŠsÑUxzœ5s¼X:K°öœ…ù±‰f¿u	HàÒYÔ2MË6Í•µš§öÔ}·#ËŸ”{ˆ{ÓÌ\Ï3ýöf"'i/lbq
qJ2]ËQ!G¾òyV–4Šb2‰9úJöA:0EzãëËÐçñÛœ¶«C²Š}'^ÄF¸jt2%PX±¬ÖNygå«êñl¾ÙòÖÓxwø
­p/qŒ9´™.üÝÞ½æ¡‰Ñf[Úú­O=	È–vÁÆÚœú³ÒOGj¯ÂO‘Ôn½qÞÇíÚÉÒU>‘]y™êo×`­ÖáÝò-ð%0õ… jÂÆ³Mç¹•2çÇa˜¶‹­ÄÉØæµ•r?q
]L§å;+zæ~TcLÔÝL“€ß&GÇ¨75OLLg;¼m´Û•5F]5ITÉÂ8oSˆdB3²wíC8Œ"¹y‘ÀËbß¤?ÍÓ7&ŒœÅñ8këzð5ó¦sÒ5'»¬„mË5éî³‘¤ÓP³'z¬~€¼º‚®l.à1*rÊ@;7¿ ŒüšxœŽ;Â0D{Ÿb{òÄA!¥ã›õšXÂq”8|nOÒQSÎèÍÓ”‰¤êªÊWë•2¤íˆ:h”l”¶$Fœx(°Ž9iÉ1úÚÝ5¯tT+”ÜÈÊ
\JŸ'¸áœ‡¶KÛÂù'\ï	ãã@9]@u­•Y?ÀN:)ÅÚ¦X
ÿ9Ã3ñžñ!¾aîó6%ÊgÌâ:ÑLÞ’3xœuRKsÚ0¼ûWh¦ÇA’‘¤¿ C‚mr³e?±‘dòëKÚé­ýn»³ûÍììJÎ@q³8…ÈÐNbÓ4¢MLµ4ŒR8AúDébÎÎ˜jŒ³4Í2¨¡X§4c‰I¤ÆY–˜XSiŒù«WibšÑÍ	R	¾Lb T5RÌRCÍâQ¢kd¢Ä½Ì[–¬9°{AsðX}‡ä<gÉêÚ6?"X‡ÆÄ€Œ ¡rg›BJÆÁ¬ó>ç–³®¾=Ÿîúä?¶SwÅ	Œ¾Îöfþ
„³lüÙÊÚîÖÞo^
„MmË²ËŠìh‘Øê8k{©çå$¸ªÜ,+û¾µ|£tŠ‡óõí(¢ÃR»-Ín£º
Ø»•=n_sf»½jïÁ¢Ed““ÚBÒÎu6•ï±%Çd½€š_•^‰ƒ]øƒ·÷Þæ
h}?òd 1b/êu»+oÏþÌg}ÊÔ¡­¬êûXW†Á{íœ»«dI"©Jêû«J¡^aQ;—Úm»eX”Ÿl\]nù˜}q­+7¾f¡¹Ô+7zùÜ#/ÖÙQ+ÅÞ¾§0<¾Ú¼lpD‡
Ñîu8·7ÙÇvß·õQ8¤ŠD¼éšNo'Ôø>ÃûÒ5/;tOáv|"#_X°ýÀÙ`Î×®¯¿ÏÄUÈ÷/5×({m=Ññ-òQïNá.Rî?)àI=­wÊŸÎ¼•ûïÆ”WÆOt}]Î.=|S	o ‹fÔÖ¬E1nbqŸ¢œ¯Ñºø¦ÅHú¢NAÂY\	ÝW9s`< _6ˆüR•xœ¥1NÄ0Eûœbz”hìØ±½B. °Çã`;«,›Û¶¡ ¡}úÿ½uaá“gQØeðÎ9«å‡‰P	’Ö¨æì®+D‡ZÚ„Î·`¢ˆÆ8î"ÂØÓ`¥4=ßöèÒ Hë^†ä\ƒ´ÒGeb¯‚UVRA÷ßÖ·y§‰¯¼Ãk.sâ/pïH·ÞÈãÇ{Gsy ¡¥A¡qpwä±9hÉëÊÿ³4õR¸¥)Ÿà9_9Bñc&¨[	‡9WøŒÔ~o:‚ó´¹6/y¬Û9¥6ì§ßõôG¾ù<Ì{ç™xœ¥ÎMNÃ0à½O1{”hìw\!TT	 Û3`5?UêVÍí‰8 â-¿Å{¯."àÑŽÑ».ÐcfuDÔcÏ^Y<%Å(Îœy‘©BHè=²æ¬ŠÞò.%•R´«Æà|—ØÚÞðµ~Í¼r—>Ê8«¬rƒ'þ‘¶þÊárjÓ<>ƒíÝmGà·˜MÇR«ü¯ÅL·Qš4”=¼–;Äk2ÄEøtÝ¾@­5ïås’ÜÌªM\÷˜4ß›jä‚0xœke>É4ÁTÃ2ÙÀÌÌ 1-%%-ÍÀÌ0Ñ<99-5É29ÉÐ81--ÉÒÈÌ89ÑÐÐtb¯%³±…ÅÄ“.ÌÆfÆ“E%’J3sR’ŠR³‹Òò‹Ü,ô'{2ÊO|%ÍÈ ýÿÂ‘xœŽ=NÄ0„{Ÿâ] ‘ÿí Z(ŽØ~ÏÄ°qPâq{œ
‰ÑÍŒæMÛˆÀ‘MQ*áDrÜ:r6oPdštN92¨1dö6ª„åDuvÜ™¤¼ÀŒR”“âž"ç©¯‘X¸¶yÝàr†§BN¯]Ž—.ÏŸ˜Æ´.· Œ4NNÒK¸áœõt)­ÑTÚ÷×=Ípz;Ìs.µÑå÷^Z­:n;Îî¡~,‡ºÃ1*B£½1ö\^*á°æ<Ä¯›¿¯ý.ÿãûj	iÊ“xœŽKNÄ0D÷>E_ ‘¿qŒFh`	ì8ínCâ ÄíqVH,»ªR¿®j•d´š„QAI’³F«U´ñä’Ñ¤œ4h­fï¾Ri bˆ“TÞ*!£!­‘QÈm˜›¤‚cHÌ_Û²Wx ”à)SÓk—ãÚåùã÷í„‘ÆÊ^á`à†sÖÓ-·F)·î¯—¸Àéí0c8Ì9—Fë>ÏrRSÇ§Ž³;D(AÆ!¶ºÂñÐ„F—ÆØs~)„ÃžÒ¾nþ÷ûøƒØ7Þj<“xœŽÁNÃ0DïþŠýDkÇv]T¡Â¸ñ¶w·	$J]*þ÷„Äqifµo4uc¢ ²O&ˆEƒÉfÖÎ‰Þ[Á¨ÒYLRqãRA§]D&;¸(6jK)ïÉ™è)`l2’/u\7xbx™¸Àá­Ù~nöx¥Üçu¹íŒÛ™½tèU».S­¼Á3Ou„ÇË9px¿…>ÝÂq*•ç<ãMh¸o¸z ‚ò¹0Èµ›×Üú–X*Ÿ«R¯Ó©0u«H—¾îþ÷ûùƒÔ7	ùk`–$xœ•PËNÄ0¼ç+ü­ÚlúBZÁ qAÒÄ!¦ÝdÕ¤»ð÷¤Äã7{<cÏ8Nˆ J…¢áÂˆÆTB(ì±•«Šó¹’M®•,ÛË	]ÝšNtŠ—iÐ®x)ºªl¯USj£[e­tÍ[&çhýVR”îUÂv99‚µúÄòáÛµÊ•ßAYñŠ¯êŠ¢(XBw#N°EŠÎç ,¬‡¥Éû¥Ù‹8~“7¢å]’×IÎÜa‡™éä8ú#ô£Wh<B0É¡Æ#f.0vg)À^Ætà~²£‡a¨ß…Ñ"»¾¿Â¯°˜•NÃÑÒˆ0 îÉ=-DÈø}$ŸÎÈ BÎØ-=9Ô™7&ë_Oþû,v“|á1-XÄ—ÞJç0ÀwÁÒä`ý?ëMH¾sgìÁÐKJàiPS¼%ÌúŠÇß~þðqöÂ‹Â½hxœTÑnÛ8|çW,òÒ°}¶ìXjÐÉ‡CZô^ÚX‹+‹-E
$eÃ»”âØ¹¢8À,’»;3;Ëˆ \áz³BÔU]U„«MYÞ¡ÆuSÐ»MÝ¬Ëõ‹kÕc —`·+tUê²YWÛª*–Ë»Ý®*>¼*°)Öõv³­«r«pH­ð;Šð­Ãàý(ïbY¬ö»¨}÷VwÅÝª¨6«
æËr¹T¼Ú™”(À2©…?‡X·ðþ§|,vòñ`\¢‹ð¢Ü¬‹w¾åpåÍkkîáQk0¾N¥p‚8ô½g$#»©½sT§9Z{£Ô§!A{ši Ý'XÐiH?\
ÞZFÖ0ü8ƒÔ?$ã(ª#ã3žËƒöîMâg.nXIôcˆ)G/ ž\NPc$ðò=LÆ»È@™1Ækpl/kê‰ù1x„™¤j%+ÚÄÚˆéZ¿—½9ð¹”[Ãå}sI…OðŽ;×ºQÉ33Î!B;y%ŒÖ3AÇaÞDp\cÀ€ÜâEÌ¥XÏ?Pw¬	ÖÂkÜc–¬Gz$ÿBŽ†\'ÐœÛï9»ž©@q°¬ð$“Šqb æ`ÒI8Ääî‰¥ÛÅSLÔÅ…RQ¶ŽíéB«OÐ"K"ì……lL`iz‹5Ý‹„Â…J¬Æt°3Z[iƒalÄzþ3á=°^±bïðÁ°í0wäàoÇ¾ŠÈ-öÜ\é”¶/Í|ÁòvvmÎ8
't€ÔJO[t*1;EÜž|J£ÇÅ¤ÿ3Å˜0ñ‡îIÝFÌ²Z1'Ðd)—žÀúÁjé²nHùLç±èßÅ:=&>ÖáOŠcq®áÒÅ±@¼WsxêzKÜ+ç;‘ ŒVÑž£§éYÀ÷s3_ïìIÁ4ÙcÃÎ†*ëÂ&ýëñïÇ§\íåR£){Œ1µa¸®9Ä	ñ5îçjê|õÚ4—®Ê±2ƒcð†ÓæGGNó; Ó|œ‰³âl	I-ê‰-á:ý,_,gÜŽƒÑ¾.qëÎ÷Ð[N ž‘óÙ.ã©'™ofïHÏ}ÓÌw§ûW¸|,ò-þ°5;0ßÂ¯£þÇÅ­þ—Ez›5xœRÁnÔ0½û+F½pé¦N²I6U»H-H\zàˆg¼1í`;[ú÷Œ](«JHœ’Ï{óÞÌDÍ dÅûºª»®çm½-qè»¥à}Ï+QJU¶;¶6BÛîú±«ûª*Ë[µ-y»«ÛvìÔ®ì‡j»ë±+eÍÄ'çá“0àÞáî{HßŠWåþd„žéÌ[(B5¼ìzØðŽsFY£cDŸQÇ	Þ¯ANp÷‚bHÁ^Ûˆ—ð¶!‚·gölp#g}_…Ž HÆˆg-”ž´ë",Cr$TêV)1µÎ Æñ›Œ~fìßX\z \â‰BôÂ†Å‘¡èÀc\½…3ú'ø±jù0?ýf|¡!ê‰€"f4é#¨ˆš%sˆÜ:¿ÞÐ›¤ÿÝ¥d6 5Ç\±Rðœ”O‚Ôy·ˆ“ˆ8&¦5$+‹ EÒ#=dÔ3KdmÊÒ"†ë\à´ h'ÓÌ?>Ž_
ÆÏÂþ¸!Ì<Ã#uþ;±Ä°æ2Òx&·Îãºì{ÿïVT:ÓXÎM aÉM”œi[ä5²4~š¡q!B¥³cxYÊå‚“ughÑ–þð§­Dòr¯OÇSj3<Ý¾ºÍù@÷ƒwb$Š|`¯Qÿq“ìÐ1 i˜4xœRÍŽÚ0¾û)Fœ…@~@«
õP©í­ÛpâqânbGÊÛwìE[Ê©§xìùæûÉ²Uû¾­TÛÖª­‹æ€ý¡èñ°¯kÕuE‰TªÙ)±H6@SeÙtE#ÛZïªRËºìŽòXë¦‘¥ÞcYêê¨…Œat¾É	^gé¼ü¢ô-‹rwfi¦mïæOÀCmUÕ6ES‚ogzøŽ&Œð9R?ÂË[*¶]*ÎÆ|„×Õ¾n^3\ØËŒ›~2' Ñ]•#'ðHq
FCïlðnš˜B³½±L†H«òaC±£	ñ…}„¡>gpAOÆY§a•:W³z ­Nâ«	ÉJz.ÿ²®á:vfGdº	“¸LõÑ*øupI\½‹ÃÈƒ<ò»Å>¬s³[ÐËÀŠàj¦)ÏÎ‚äôaZ’;=*ˆKF˜”cLìÊ»eAµ…Ÿc¤ç™)CëÄ}ÔVˆx1„w¡Ù Ý‡òåí]‡ÇÅù' ÷![sShÜ#þ:¤¬x]ï@Ë?ÞÌŽ“Î,©!Eð “æÆFd¯Ij´ø;$ùj‹jã´Þt·ÓÓ"¦b›·ñÜy'ÛÈÛôŒú ê ·#xœAnÃ E÷œbvÝÔc‡(ª¢t×.Û b,Œåöµ+¹M«.²c˜ÿþÌü¡±•¡
¥i
«¹›²¦L)Å%e5Ó•*PÎ8TDŸ€qi(BÖÅÆòÚHM©¶’´‘Hu©…,•Ý¢¦Ô†/¡UÞãïíÔ­‹vi}ïÇiÄ¼Á'`¢(«z#*­(%&ô½K	#¼¢K-¦Ñ´°;-E®—bï|Â.Ÿ…ß¸ä+N¬ÒÑ™qªi É)À8Cw…â©Î1K®Ç0%°ó¶&Ì»š4w:Bž§¸œ<«/Fù‡´Òê?þÒ¢‡&8œûþÜ#¹q{½H¾|V÷‹Yˆu~NÈ!.Ÿ7à<tÎ#\–4~„oîè±É‚µ™¾nïÍû/vGÆä†Õ¼.šxœŒKn„@D÷œ¢w³bèmš(Š¢l£ÂmÜ>#¦‰rüÀ"È¦¤WªWeS5Ùªdaàs lƒ´Ð	´˜=“BG)fDGÕƒ7]Šñ¶ƒlLZåàC{œ%°s‘™ÑF…¿½²ëP#æ€Ô	@BVlˆÔ÷Ég!ÄD„ïeX7ó©cÌÇþ”Á¼ÞO¸¦ÞÇ¥èt•u~3=Xr@`jKÖVG;¥è?õêK·›š´ñrh—™ŸÇÕÅ¬Ù¥<ž/Ms;ŽötêÍ4.ûO½|ÏÚœQË4V¿Äe•2xœu’Io£@„ïüŠ–æh%fi’QÀÆ‡øÖ4ÍâpÓì_?ÎŒæ6ónUzU—ú8£@,‰Š,cŠ¡l@	Ab†‰ªaˆˆ!C’+©N$Mh1£50Å†!j˜H©Š4dèªŠsëåÊ‘ŠÂXQðß•bš¥º‘eH•ebº¤Š0W`jd(¥:"îyÙ00§/Õw¤¯Çoñœ~‹÷ªæôôLšóO ©PÖ ¡@žDM…‡{®8§¸Ÿõ)x­FÛÓí½xôébE[tUž¾Ïr\o	Öîl=wiFqèüö €¡³ˆešÖÔ47ÖÆÇb Ý§¡5GåAY]eæ¦™Í<Ï´W,*Ù]|’ÞŠ$¹Ïo±`âýLá
¼.bûóTMl=n;§ìœ¨}cŽ,¼Å]2ÐË‹~õÓ<ªNŸ·OÊ€:äÃP V¦Ù%¸—‡Þ1æ÷âØî‡Èã–\w|g9s[ß6ô$WõTÝ¯Kè¶‡EÃ&O
Ä[nŽþm¾¾®Ä!ÿˆõ™X^×ñlÿáJÅAæt<ŠëMæHH‘mªs ^:^ê… NîÔê7‘ìkd3Âûd1Ûšõ÷iYqro0ãÑ2+Í›%­®z@tNüD	²]2[I¯ØÆq ºŒEù98£¯=uÝ<6Ù_‡c:)ôUË'É¸K¤Ðº“Q;;â´î&Äcðâ‹7¼}ö[Oø³™³´ÿ½˜° ¬  íO'Àè¥§?dE9kÎÀ¬3F‡­ØËwjá£iò§¦ -~„1!´ëžàùÂ’xœ¥ŽM
Â0F÷=Åì…’L2I"ºqç!&É¤-ØÒˆßâä­Þ[||µˆ@=›Þy+Q‘’²#´™ºˆD&ëÝAâfã"K…ÄÙL™Ô9ÔÖZ­)ãMzÕë ‘~Õq-p[R‘7<d*pæŸ´ó!×ÊÛºîã¸ë|MhšÎ{8)Tª9ê<Õ*ÿ­4÷é#;äãÌs`ãA€c”}o¿$œO “6xœuRÉŽ£H¼ó)Í±å"“=GÝ£ÆvQU.y¹X¹±˜Õ	Øný¸ºÔ·™w‹PÄSH£È¶I‘É¹A‡PtLuÊ¹†Šm¡¶i*=‘¢2› LC˜æŒ82uGÓ ÏœAŽ0Î=‡¦£$C†Å˜c:6¶¨Ð©À¶arCÃ;Ô´2E'A"Ê± Þ4°|¯>Áý?Ëvõëš4Ý44B0ƒ„ÊƒmÊqDåø<Qð½í¤èë_?óÇƒ‰þ-ïó¡ÌÁìó¼ Š× RðGkwóñüæ €ëà1Ïu=ßu_½×¹kóß¼Ä.NÆËE—ñÕuùs»nnìz”í--_K§pZ÷«Jj“^ƒ¡
x*Nt_mH¥ÆK¶ž¢(X6ûùý9€ùr±€åeár¸ºTS·ÚWÞ#Þ/Ãê%_HjQu»×·j}çpFâ—ý¼ír¾Fî.Ùx·Úbö1“*òmúa•¨€oªXJ[&îz?*¤E¦¢.¢mxh½—áüåÌüÃ.º`‹ga˜ïõ’×<Y¤muÉûAýü\¥êªFkÌÜãæœð“½s|‡-ãî­%é*yaW+‹_‹ôFc)¤¹ƒ+–ßúvW€³¾Ãi¾»Ï§ËªÛ–7÷Æ7ùÒ"—øÅp›N.“É~¿ØWa,Yò~À‘'ƒ¼Ú;?ðcYòÕY°žÿwcÊJÈ\€~ªk ÅyÃþÒu2Ù5 )Ûk×•zAO–ÚJ¥'ÙáñZˆöØví1#T–LQÚK#f¬.ÿŸBPŽàK ([ÀÈ @—‡cöå ÙcÄCÑ]gRäÃ¿»Â”xœ•ÍjÃ0„ïzŠ…ÞÒÚH–[¡”BO…æÔ'XÉ«XÄ’Š$'äíë”BNímY¾Ù™Ù’ˆ@5Ê6Õ‘-¶Ä…áRiƒ’Ô¶m…mgUÃÞ0Q(`ûA5Fã
l›®GÍ¥•=	äzèGÇAa×YÍp)SL°wá#<{¸÷cí|=ÒéñàÑÍµ‰þD×ÈNn{ÞÁ-Wœ³uë])ôy/Zõ)gáä©2³ÛÇ#+¨,) À`&ˆB•Eœ»&ÍS<W‰™±§%]ËÎ—»oPþ" /úšÃ.Ã&Ä²ù´pá°ºÐ‰8{už0³¼C9Ûež/+‡#Ø=”‰@cªö¿cž§õÀÙÕŒ½¸pÜÁ”c¯îh¬¢µ•¾ìþò+öÂZ£–xœŽKnÃ0÷:….à@[’‹ (²í®9E‘±ÐZ*zÑÛ×¹AÐå<`O6"=Oq&HÉRæFã%SbNÙÐÄÑ’³¤~`£&Ú0£„Øyä1DÖO‡ç-:ˆÞ`(
vYú¦?¨Ê¢¯û}þzÂ)?á½6¡ïöõ¢íä¼OÖºY&£Žu­"ôO]}ÒÚBºtÜ×ã7HíM©[½7*CgòïÛ+uõÀB]¹’"xœ½nÜ0„{>Åv.	uú3ÁÁH•ÀMlÀõŠ\Š²%R W1îíC%vŠ†»Å~³ƒáHuÝm¥±ÅÓXS[Æ¶j;Ù¡ìÛ¡é¤zKFlÉ3TÍ©ÃÊªj@Ò=•©šºWJ¢TÆž+M5TÔÜÙ…ßƒCï)Á£Û×äæèáüÌïó%í‰JC_³¯ÊQ¤ê$|‘JJ¡ÃºÎÌáÍìànOÚÁùååxˆËì™–2¾á½º
Ùf\|z_sbä9ø[@c`E¿áD·ñ
6§Ó!gÓ|“ (4Ç¥XBJ¯1Ï~âÉ‘?è,ÀÿZéÆ.8Á+ÎS`à ûfI°£ÏQë·åZ
ñ0OžL¬-ÆëígÛ?i‘3x@÷ÈÚíœ×¬ÊôW]<1nÛŸŠþõ‰VÅoµ·6’4xœuRÉŽ›@½ó-åhÍhhšh&ï3¾Œºéf3‹ÁÐþúØ‰rˆ””T‡·Ô»¼ª+Î)ë\aA¨Èš‚Ch˜j0Dr`ªb`È)W1“N¤âEdHL™ê\“‘aBÌ4"‡!ÖD¡~_fB“3†Ñh†D¥¦,+¡BhHe¦†5ƒ„à 2Ž!1 %ÒÔqY)OêØÍ%ˆÁËñžé¼%EÍ³ç Ì EW¡jêŠn€'É²tgó¤®yFI=n(x)ÊŠŸ2ñÝúŸ³è]’<=ÆŽÜXV`ëŽ–·Ûñ@{±Û²ìwËZÛë	h©¼oì©§Úò
+·µ,6v]Ë™•¢ng·ÝqDÐBîÞÓ¹*2	ˆÂ¾ŽŠ¥1¢ö öcg)š´ÇcªÚ„»ý#­|œÏõA—]µ:ŸzÜ]GY^ÒÑ›8lü@Äz™oÚúšêãÙr§9¬+µŒ¡éÍ–b^ÅN¸“æ¸ESí€½Å!ìè§c	X¾)hp=Q¡ç³O‘q^˜ù<Ž‡>ÅI~w§õ¹Pˆ°Rï8ÊÇ±·C~çîO“ƒ]K`eí„,</d½ö`¼«ªaÎ‹±ZYÔ/×ûÕn/‹MÔDToh68tŸ“›s¶ÕµÎœ%vFðsoŠÉ·Ê¾¯òÔŸt‰·IZ{f7/ü$>m"aMºBÎÙX=<(ÒCë*uî«^Ù~ŸJ¿;.ÿnLšó*âàÔd¨ø¹á—|ƒPaUæ OŠ¶,“¼UžQ¿91Ró/^°¦"EÀ¿²2’¤âšó§ K¾ƒ0éÀ_"¸4ôñp¤`?¢­@‘xœŽ»NÄ0D{ÅíQ"¿’Ø+´Ú
‰‚Š@~\g-üXyþž€()Ýh4GszCM'd^ÌB0*™
è¤²R„™:½p¶(¹òäb–n2ÊzÎQL/‹žò@ýl©|¦È´ZãBÌÖÏµÁS,oµÂc†ûüÇ˜G·ÓšML£«ùlâ‚k©$‡;ª)%{›cïøOœ”[ÆÁ¥x€ß!¡y…X ‹ßš)_R]áëÃOÈÃ>	1!x¼º/}·þ¹nö‡	yŽkA?Ôûqø‹(ù{¶v‘xœÝjÃ0…ïýº	iìü¸Œ±ÛA»›±«1‚Ë‰hl—Äi×·_úó cq¤ïHœ8¶RW­*:£ä¦B­Ë¢°y•«¶°*—mêZVm%Ž8‘IÔY[ÊÊJËÚ(Ì¬­U)K[¬e´ÔdL]
\â&Ø³?‡ ožÝ­MÙ¥†N¯½CÓ.¸Ø¹ÌµRuO™Î2±ªŽc¤âÂŸ%ÝÈ[°ü3õÅeŒÐ^ sÂ1rð3°òf™ÐwÔŒ¡·ÃèM3²§æ±öõŽû!B‡Ë¼võskxÂÝ˜-Ä`Ä9Š;<ƒN2)À|àýs·ƒ`ÂùF®@x˜ðS!>¸÷d’`mÒ^¶	BüÈô—ö‘xœ±NÄ0†÷<…·[hÕ´×¤=!„XYÌNã¶mR%9Nåéñé˜˜‹e[þ¿ßvŽDÐ#ÕGÕëA[Ùë¾í¤j‰
G‰#i£*4ÚFò:54}ÓÔØ‘¶º—®éhŒ’M+™£Ì±êGikç<‡ÏäòOç4Ìpÿq-Js-Ï´”CX@¶uÝµ²V
ŠJU•àîêr¦ÊÅ+­á“€bä¶È³0rÆ
Z)Ç–0Æ	ø¨DB¼Øà.È£9@âÏ ÿ¬”Nn„<Šb¦e;@Ø²ž5Iœ³[ÜÙ^˜èüt“&6aÐ’‡Hh÷Û6dï€{7OOd¯`‘hÞþ2E¿_p/…xs“'[„q,Ì~úËcÄ7Ún€—xœNKNÅ ³Š»>>ýAcŒqàDg®€Âå_M}î^ê
Œ““œoN>AqÅE¯¸UÕÈŒ`RŒµ‘lhÇ®ÊjVèìúÀAtb–­ÎõÕ‰c­9Ý¡Ü¡µÒ8«…%ºä%ðŠ>/ð\’Yàáv’Ë|’'2®·Gà½ãPO´Ð°1RÕÍçŒÿ¬“‡ß lh½†/Ô|¤ –¼—LÈ›·	–œ÷4Qz­»e>×èêC¹7ásCzBcVO}Jm[NÞý5 m¢sÍü=ýåù™€sxœOKNÅ0Ûçs¾¦Iš6O!l`‡8@>“6zmZ5	<nOÊ	Òh$[öŒDðƒSÜ=J£zë¨bÒ);šÁŠÎÐÁù¡“ÂÛ‘ìúÀ˜H¤’Vj‡zìÓ²WZJf%ï¸ð¢'ºäy;àCžá¹$;ÃÃís‚§3.»­ÐõŒ	¦(ÐPI)©ìrÆÚÉGªÅÂ]ó\õŸâ©^Ëß;&ð5Ö²Å	Rñ¿*¨ÝôŠõ_"ä¥2	ö-¥`„|”hu[„:œ5&dÐ‡Ó…·oW˜sÞÓµm§š®˜3S»„XîMü\±=Wc—Ð†”
¦–sJÞÃk¸ÍûÆ|_ÿR’ü Ö˜Œ§3xœu’I£0…ïü
KsŒº³HÝ£fI'„ì²Ül0„„@bChòë'=£¹ÍÔí{zU*é½†3t]Í0Ì¬$C¦•aÂˆ¥
ƒc*ÓRÍÒL”&JWÂYÕ "dáŒd‰iX]×L“é¥(ÓI¢§§`ã¯?%™Aa
ŠQjêPÕ4MUV,Š ¡X*e	–HÛkV4Gà´"9‚·ó7¼Òoø(ª†•¯I}ù	T!ÔU"ð¢èŠ"=ÕKÑ4ŒƒQÑŒ[
Þªš³kÙäÏ-ýÏZ~ÍE‘ƒ—ïq†#–£%ýÑÜÞDëáo]è„“8¶í¸¶½rVÒZƒ“»vãxÒwÄýÎ¶Ó±ïÛSûsÄº©1N"?C*–ÓÃ¶,$%ë/²Ù‡Ú¬Õ’n„#óP3ñ¸s¯žÜ—:z™;ØÖÛ}¯¶òb
sí‰óX=)ƒsÀ%°kÛËbçUZ'ÆYOw.RÄÔÖ^zSÌxW]#qÝ—Þ~îÆIX_u±òëó×¦Ýš³Óó½{<Ä½½Ú×m¤Þå–qƒîU·[ÞHêœš|:8´ƒ"_Èq,zV?Fb—ª‡õ©‘@Éaf¤Ç;ñÙ”ÁÌ‘=FýMsq)ß¬å.Î×½ì…,6î»MîçÑÖ÷‰¼U<»©1Z¯'³µ÷ínx;•ËÀ[ÓLæ®åùA³ãÏñBCn´2YÑKsR¤Q/êw	¼ÇÞT–þd6œ{ÿNLš1ž3pmËpvk™hÀg×@Æë°«”³nÆ
._ˆx¶F’ì4M-Ž%àZ¶yQ=\È™eEÉ oK&^ Iýxžxœ¥Ì[jÃ0…áw­bÞFK–JˆÐEL¤™FÔ7d™n?&t}ü~§U§•’ö#i`a²Ñ
’ˆŸ=ù±Ï	Ñì\emÐç€)=•‘|&}hÊš(E×S5DÕðÙž[…iÍU~áKJ…O~£[.ÜKêÚv<Ëƒ»´-7p‡äáÃ¢µæªKiMþ÷b¦œáoû|~—õ",ü#ZfzÎrtæ÷œT£3xœu’I£0…ïü
KsŒºÃbì uÚ$!Ùš­oÆÐI€“í×O2£¹ÍÔ¥ôžªÞå}Z	ãœBG˜BÜ±1Ç¶åQ{.fƒÙÜ´XÇ5*ªD¡Ý‘ÜDŽ‹)˜@Ü5MÄfr‰©É½;.çŽ‰ÿÞ;ÜµFCêJÑñ ÷d"—ÌcØr<·#]laiÐFg¥¡Èuü¦fxÛ?Åkòy¡Åá••ÇŸÀrmÛvì ðb"Ó4î1×Z(0Èõ°IÀ[Q*Qné# Iþó–Vi§àå9~0šÅ`–£ÁŒÄ«¨ÿÛ7€.µÏ|Bü.!Ÿþç˜6¸Uv#?ÄÙ7œŸ5ºÂ‡£	Ñ½Í[›qAñy›¶VU’'äl€Ý"ŸÚkßªõíJ[Ósjm{Ãk¶ëõýVN$î/aÚŽº× eƒ¯<®Ò2j£oHñ-4ÀW$×ëã¸¼Mî½«sPÑp—ágÞÔ•äHêñÓt1…ãq ŠtãoýüÌ¨«îN²ïç˜ía‹ø8²£G¶œùn½õü™7ogÖ¦.û±ï“‘Š¥v¿zù÷²¸tâýv7C«Öv~0À‚$»°¹›.¼¤ÑŒ_j«·Š}y%~´²Ç™‰Eé,¸M6á«¦8½öWÚSñ÷<Ž“álël]x‹‚.ˆO{›Ó]—u‘~¨é*dXÞºóÖù¤§“Kp·B4±7›Û¾à}°<yÆŸÎú³Þ¿3¦B¥TÍá ”85¢Öà‡c# Uy¤àJ\¦"Wí#­Ôáè²Îò„‚êÐ¤yXÉ O¸ž›—¬9>¦:/‹×_¨¢›xœ¥QjÃ0DÿuŠý˜•dim!9@±Ù]7‚Ú
ŠL¯_§ôýÞ0Ì0½™AU£¡Œ#M”‚Ÿy¦9‘x)E/SrOn¶uÓ¢˜c¢¸˜XÖ„˜%
êBŒ:ß)&ÕˆäxïÚà¶i³oø°ÒàÌ¿0¬\;›½¾åÎƒÔõ>…’'ŠpÂ€èw-½ÛÿZÜMþ"ðüÚ?ËRÕàè÷Ä[µÊ¾ÿ¸—ºî‰X­4xœu’Ks¢@…÷üŠ®š%•È£Az*™
DDâQñµIAwóPènDýõcf*»™»;_s7çF)ÐHß„ ŠK³T›°SÆ4SUbÆTªcFÏ˜ºŽj¥iÈLu¢TQU” S‡±j¤(J¬[Ö·Ÿô2RÝHTØ×ê¨ß·,3U-[æ#ª#B B¥¸yÅÀ˜"NËq^Ž_â9ùoÅYÐòW§_@54Õ„–Uð¤˜Š"=è©‚2àbÔ&àå\1Z—··ìñ MþËêŒxú:Çõü˜{s°ô½™½Šî.	tÜÁŽm;ï¶:áGÌ«€¼/œq??Àà¢3¿³m2ò}Û¹
äí[oìñ´›²¦Úæ$ê€›„YYÙ~R2Wmå…î.Å64î÷ÎV‡÷Æy<$A’GnQÂn}›j-ß`	ŒÒÉt—&»Æ¼LGruÉ·–}¼ßÅhœÞÎ
‹kÏC?Up^æÉÐtf(¸¢áÌnÚÍ{ª	l*ºXTS­ëÍvIm.Ú …ÍlYò‰mOÚV>“Ìx.ïB‰­ŸãC••ÝÜÕ½H«foÖ2Š!ó`Öw× «¨¹È$92ô`xÇk´5ê;è{œ”{-»Úm>Wµ^ãHà:zÌ"ÉäÞ|7ä^{~/¤õü&›BôSšÄkù`:FÇnLÉ¢äÅ’MVí1{•Àë–ÒßÎÜÙàßISÊ2
ê¶,£MK¹ ?tM)«N€±ŠÇB½˜Ï”ôLÊÛ'}`öyâ—¤óåDŸpYü6!àÛ¸ˆEËÁ‰rg”ÿl^—$xœAoÜ „ïüŠwL¥Ø2³vTU)§öT½FÏðpžjÃ
ð¶ù÷e7«J=¶74Ì|3Pôî`´vÙnìG9Z£H=a¯‡ÁHÙmG$Ž˜(0JM3ÞNýd¼rj NÊižŒÒ(?ÍºC5Ž÷ò<E—x‰ðÔÂ#®'Œð1ÅŒ¥ðòyå°ÿjOJËóÖÚ¸}9ôr8¨Nh:Õu¢ª—Bÿ‡ª¯1j¸¢D8mÔØ•ïàÞ9ð‰)¸õrÁ²gØ(g\(Qo¹p¸þá'%tŽÄ gÒË{î¥ÄzJ–›·ÀAÄäêÚaÃå• QÙS¨ÉkaæwËª·ªÁµâ[uþ]7c®!Èe›øxÞÑW)fº«¿öžM_¿!x>’eÏ/Þ›“lU]æSÜ. ÏËžjDÉF™Vˆg^ê¶&zßÌowÿúÍâ7–¤ÁÖšxœMjÃ0„÷:Å»€dëÇ¡˜.ÛeN ?=9j-+ÈJ ·¯Rh³êj˜>˜)™\k¼s¦ï{ÞD^ÚúÎ*ƒ
¥µ¨L/ýÈ.6ÓR@J.%ilQ{Nv¢ºuŠ+‰Ü(N¾ëˆ¸föZÎ)Ã›´Â)Ú\àø±îÚðFS´a®1ÅªJ›¦5PqÃ9ÛÒJ¡ïÊ^¯+žáø¹›zÜÍ–Bq%Ä†ëgË-R…s8 ¦œ	¬šç°L<¸°bºQ¾3öS»ð@I¿ëS˜rUò¾ï‡§+»©†1'ë¶-=ÏÔ?.°/¨ß€œ"xœ•ÏnÜ Æï<ÅÜr‰×à]{EUoQ›Sž Ã`£µaËŸ´ûö’¨ê1á€ø¾ß_Žˆ ¹ÕÈ)';Ÿä|Ä -Ê	\j…8H£ÆÞ°«Šè3t§Ž‹ÎZ£ý©ëÇÎÚqfê¹TjâvêQp¦J^C„èò
ßKÒ+<\jq˜kñÍùŒÛA‡ýDß‰žsq<AÃÎÝî.gü’½“òÃÎÌÍ–3<«ÀÞYGHÑ ýIíH}{²på."”äüyEXÐct>p÷°W\*$ªÏ%-]QWnªW¬¶ú=ÀS†ß¡lf¤¶ozŒ‘Rq¶Êo`‚¿Ë Ò{•Ö*f_IH
MÃOvƒV•-ÿÇgì§ó—3¬9_Ó¹mŠ§Ì5”vs¾üiüëŽmÝ½¹öZ¶­=vœ½¸Å£i‚µÍ|;&cö²³·¨—xœPÉjÃ0½ë+†\‹äE¶C(¡ôPzê”‘4ŽEl)Èrpþ¾v.-¡Ð^Þlo‰¨QØŠB7ØTTsQ]5™©*^J”MF²Vì‚\QK¬²"ÏUQjÊžeZ
²jšRa^(­Ë¢0§Øù ï8Ãë¢¿úìœOûúŸSí‡geÆËœËFÂÏ8gKw°1R€7²±ƒ—iÔìÎ+HÕ
öÖEêž‹<“ðj9gî:P¢{»…U°zÜÂÑÎpÁq´î›Îñ34&l ]$bßÃ‚Ýxñ!ŽŒ¦°ZíoàÝRŽ‡ïéýO¢‡Øœ)8êÁLaá¹Ë í#“•bõ…Î¤w56þB2öaOŽLâÛ6Q·íŸé=îÿ#1öM§u’3xœu’Ko£0…÷ü
K³è¢j1`ƒ‘ÚQBIim³3`^å‘`’üúIg¤YÍœÝwtîÙœ+zÆ A4E˜ÄšJbˆC(E*"K=Ö5HõšÒö¬€™(SS¬¢˜¤š¡(Œ:¡FœÞ81!ŒBáß¼Æ¨cS3aJP–è±LÁQFLÝÀš2JS"ÑA]VŠØO
ðôõñ7¼”­`õcÒ5?‚Uˆ4„u<@Béæ6¥¬^)fCžÚ®g‡úò’ß
†ø?gù!çe¾e»ž¿¯Þ+XûÞÒÚlßÜß¾$0r;±-Ëv,+²£9meÕqÞìÀ(*´:i½?ZV:ó}kRjÏu²‹ºóï†ûêšs	ì·A-{¢"wZYsø0ËÞ¸ú³·ãTdj÷¾³á,<ÏJ¼)ª•Îß^œ'^·wÖ‘LÞ%°€i )í*h7dÊêm‹Çi"ûnÝäÝ~Lüfy‘sœÃà5ûÍ	%óq½só6H@µ©ô~å~äÙd’‘«º	kûÀ9›ý¶_™áv…âèÃR’QÔäk«¡ŽS·S“0—€•ÓwH»¸âF²À×‰Yã½-×ca¿ºá¸Û;¿FÔM-Ðf}±b,>O¬tf.‰He¯÷_yØT‹8Z‡»qü´‰±s¦8ÜÏ»SuŒ¶ÇÍ"º
Ç»{±´Ì¾³£@§ÁØXÏx^f;Cú³™»œü{1)d}ÎÀa¨kÐ³ãÀ¸ ?4¬ïp*+zùÚ?p¹¡üö7’4e#ÈÊó-^SÁR :p×žê’‹>ÄüÂï~qßýmxœ•½NÄ0„{?Å–P\äÄ?çC!QB¢=mìuÎÄ'Û9)oÃTHPîhôÍì”DF¢“Êô¢3=W’$ª½t²“Fku¯Gíù1Ñ\Àsm7‚ó®GO†;tZ;«¬ØÛºþ Ézm.å¼‡\áy™0Áýe;´Íçv?Æ„v¤ÆÆéZÕqa”QìøžsVÕ)”BÿDdktEèŠ`/q J©Ö³ÅL=xã’¨*0P9Î—‰ŽyéóšMÇ0ûxsËØÓ’¶wÇõwä0^-2oÀ-ƒÕŒïÌÞN!Ã‹=Á‡‰Fº`ñÚi¢œq Ÿnì/ÝÆ^Ã0“ÛEïwýz÷×}Ø‡"§8’!xœ•P1NÄ0ìýŠ-¡¸ÈN|‰ƒ¢¢¡D­íÍÅÇ'Û¹ã~O'!„ œÙÙ™ÙÍ‘Pa«´lmm´¶­,•ÐVÈ·Âl›Š“u#Ø#M¨•}i·¥Ô\qc«FRM­°ÑvÁ¦å\…œáœ‡áÙ½à	îg®+(Ð¯+¾ÍH…	þÄ¶ä•jD%aÃkÎÙÂz—3ýÓ¢•B–gvçÞÀ†Yýz¬›`t)wiÖé”ÛQî¦ƒ§3‘ÉwnêÃÅ%XÂq3%øv›nÑ¬6Aèb±`OƒK0¸œ¾Åú¸øb‚##àr™ß/úÎÕrÁÈ‡Ù¯p¦5äG>¿–/{t»‰ì&ôýFŸ®þúAö Ä´7•xœ•MNÄ0…÷9…wlè´I&I;B±`;¸@~œ©E›–&áöL% KÏOŸý^ÙAi#Ž2 G­£ÐNs´7\ûÞ
m‚Ó]/{ÃV»a*Ð	ëå $ï•vÕ cÆy‡>xT8X³µŒËÏHe„Çšýwï»8¸]<P*8ü2ßW¢“BªA@Ó™®c×íL¥àð^™ã/Îžè×¼vÆýFÀì7Z-)3ö6âîe¤t†/š&°ÞãZnÁÕaÁœn
løQiCñr`ì…Òû	ÆRÖ|jÛó5Euûïv¢T/Múœ±ÝGã'j)çŠ¹•\²W:'Ícã¾O)Ã~ Í0ƒV—xœ•AOÄ „ïüŠ÷Ü¥”Ò1êÕèeï[´@¯‡ý÷vW=Î—™ÉDÐ~0Ú©Ñp;º¡ñBÝqÛhaÓš®Zí•vl1A‹RIžw¦×vP‚óVp+{%œ´JŠ¡Ì¬4å/h‚çµÚ	î?oâ8ÞÄcH„óÑæø M'¸P¼å¼çœm4"üW\Êö;Îžœƒ‚Ñ„Ò|ÀÙUð%Gx{…3RÝ=hB¨HÜ‹ò&¶£Á_ÁæD%Ïó¶Ã$÷Ë“‰XcñŽÝøR¶1{W„öÎ”K4óžú¨9A^iYéÈØ9\ºCöþ0^O¹Ç¾ êüˆ°”xœNÍNÄ ¼óßÍS(°@cŒ1Þôæ ýº%ÛBS¨YßÞòÆË$3™¿º#‚RëÞo„r¨¹Vx)qâF7Ye8sz”ds;¦
Ú+«œ1¯Ah«ýˆŠZá<öZé¸úJÜQç¼ÃÆ:ÃÛQÂÏ÷F.¾‘×˜*.—×àªgŒI¥tL3FNuµâ?ãä=§§
Û~š åÔá#–ÚÞ·b—FXbBÈ[9B>cº0×º•ÒÛ9røVMOÛñèÒ÷Š´A–Hc)*˜%_ñ–pìò4uþgøËWòRwcœ3xœuRÁr›0¼óšéÑÓZB€`&í0Ž;6¾IH€0X@0þú&íôÖîm÷½ÝËn§„ †A˜í8Â²Ä˜:LPls3ÍÒÔÑ™éps‹ëHk¨—dÄvô”Q–RK7	eg˜D!³	§œÛ5ÍŒýý×¹mé„r,²ÑŒ!ÄaJ¹‰q*LÌ!r 2„ í»¢V ²+€×·iÞ>É7öI~ÊK'Êoi]ý ÈÔ!„ºecðµµ’]'ðeô<\j%šrü™ôì?¶¼É[™ƒ¯Ÿðæ~¸±ƒçÐ_»ûÃnþ[×€†ÖK=×õf®»õ¶KZÏd¶ó"R¼›w¬ÂÁuy†®WðûÒÄ³qîTm[º^Ðk ¶Ò-Ç¥Éã;f/åé´ßÂ£`l¿¸²áVNv¯ðP*´’¼K¹8­“«¸'W³GÝõ~1Y„ô%l½zŸ&daDð‰ÆF” §nänë²Ë!Û>é¥¹ðëëk{_>i`¶¡·0wTp|¦B"cµ-™=iÄ8I‚àBïÎÙiþV¶úÁª%LÂÆhçò\·3©ód{<¯	íËj–oÃÄtè´·’G%^¿¹Ñ&‚þ¾ˆ {&»Ð[7ùZ­ži»WÍò#áîÞèô#º
" lQÅi¤ô	D¡ãÚ‰9³·/â‹MüÑ.£óôèã/ùê¹iò]ß'½qÒþt6_?þ»1íI¨\€¦/K Äµm¾`¤ƒLÕ¸Ñ¢¢|ZÑöc1š¶7Á¬ÏÁP%@Ê„€lò’ƒú]¨A}îëØøûªÿí· ,‘xœ¥InÃ0ï|Å| s‚À¾ø–GÌpFËR@SVòûDàKÕt÷&çs¤”³„µs˜IÐ%öe(%[ò™-s`kÔ6Y:1e[©`°>"i7¸(5¥ÈÈœ2z?Â­OkƒÏmÂZ‘á:ù^Ÿ|Âƒ/wÁ»œÊZ?Àx“sÔ)FxÓAkõ×Ö¹wyqFÝæoa@ m„}’&Px7v¼É¼Œ°>¤ííøZ€~þµU¿ ™[t—xœŽKŽÂ0÷>…/ävüÁ#„[vÌ	ìv›X…Î‚Ûn0še=©J"é=š˜ÆB>Œ`é¼×òˆÆxûlQC,âj,)§¤¬)æPÆ°ÙÅaA>D§ %‡Ú:Wžú"/Ty’çõ…“<Ü¿°K_8ÕÆôØaŸ,„ -å•Û:Wfú§.®t£FKd’¹ã:oÇ#×Þ„ø­·Fyè¥éýó—¼ø Þ%]îœxœ•ŽAnÃ E÷œb.àh c˜ªªšl³Ì	€l+1Ž\¼èí›H9@º|_zz¿m"€f_¼óT†H!'’œ…Ø ÎJHÑfLÕ=nRÔ#²ø¾˜Dd“3d5÷È†£6œ=k¤8÷6­œenœöŸ<Áçõ	‡ô„ï¹6¹òº|všÈØA#tèÕc]æÖäº/]™a‰õGò8!•÷-Ö,p[G¥.óX…»µ”.ý~¼ÓP‹;]é•xœÎ=kÃ0…á]¿ân™dYÖG¡”nÝ¯¤«Z$–Œ¬„æß7i;•Ÿ/œV‰@R‘÷¨Gn•Ä ”²Ú”Æ[¯”Â#[°RnÀj7Po“£CÔJ¡pFNÝë18’hžÛT*¼`Nt‚wªGœØ‡oo/?~J¹ÝäË|€~ì­—:®9g·uN­Q…WJm‚çóê'ØïØº;þÉ…²¿9Ë—™:J;ˆéÚu)2lBZ}É™|Û@(~eì-}d
]‰±s×Ýã—ÿ†Üd_À?w¢•xœKNÄ0†÷9…/ÐGÚ¦Ñ!l`pgM›V‰ÓÛÓrÄÆÒgÉ¿ÿ#´­QØõŠv¨Ð(’JJ‡¦ŠLß([•=Š#†Ê¹¦´ÕŠz«*¤¦¢ÁÈAÒ kTWw-Ú¦¸ñ¸Dx#Ï#¼lÉŒp½Ÿëž}`šr³ÌOpüê¾k”„¬ìÊRÛÙ3Ó?ÏÅ«€C½I°Æe¥È;œ¡lâs¤ƒ,Á7&0˜Ø‡¬ËðnçC§ië£_yÞWJ¹ï>Ü/02¯éR·£Õ¦Ï.ÅäÃöÈÂ×LÅ923ùÂ§´Q*jYŠd³Å¹Lï—¿È‰ð\‹V4xœuRMs¢@¼ó+¦jV"ÃÇV²¢¨€¢ ñ²5Ì_Ê× ýõ«›Êm÷^wu¿wèî¥ VcÌk
”°F5`Dï{"+XÀH…	‚<E
„	× F«„¨”‰ŒTEH(O¡(Ý=ª’À‰""™P¥±ë(‚¬ŠW$		¢#((Š² A¤ˆ%QåÑ„CCŸÕ,iÞgÀ:œ—ã<Çð–W===ãºü(h¢ C	‚'^áyîÎ–yßSfy?bðRÕŒ6§ë[z?0Äÿ±¥MÚå)xzŒaÍl¬gk°µg®¾|ë/Ï\:ºnLu}cl¨ 1õ¥’’w™}Ñu2·mÝ–sñþä:úìq”
&›çå 2»CÂ}´J0+WóÒÈ2¾³N…ž×E¨ñÉaÛÖÅ˜x*‚TûLöŒ½‡a}m‘ÉÍ´ß['Û’W—T'k¶ƒÖlÆÆe¿ü}ÔÔ®‡åÛÊ1y³XøÎ¦m¶“]…Œ;ª›ï-l2=(‰„Lk"oÍ\¬XQõI¹9aº¿œ8 êO¦A[HëmY¦Ž—“#ÆÉjùQ!š¹ía¬[77á-´‚e°-ÖÞ‡ÜºjÞ~–Ù¶.ãŠ¹N8ï¿ÅŽ—EŽt8Ö0íÛÂPvlçÕc+ôÙ>	¤k¿M6†pjÉup¥žð#tŒÃ‘ŸjõuÝ]?=ßŽÔà•¯>ê$î+3Ë5ÿçP–RÐ§`´h×ƒ"AÂê”yu©ë¼Ÿ…gyÜ¡*ïóýÑSCÇUç’>áSþ BÀ’{5¿•àQ7T‘?Q;˜xœO»NÄ0ìýÛ£DÎÃ—ø„”T|ÁÆÞ½øˆí“ã\_QPP ºÑìÌìLNDp°ÜÈh­V£4ËVwÆLýØ3ÊV*Ôj8ˆ&
:E]ÏÕ–3¢Ñ]'‘[2mCCoÕÄª1Và–ç˜àÅ…=Fxöpï¿`í|méúxòè–ÚDÿ jF9j­{¸“ZJQXïr¦ÚE¸zªÌâŽPVÁLË¥Dqi³bpÙ}Ü>`°B<ýlÁdÃ¯J8ok†Å½Ä<õ7¿ÂîòL» ”Š1QÞRpáœ¢‡=Åãå¼ÖB¼ºS [Eæjz?þeŸø¡ÀŒO”5xœu’K“š@…÷üŠ®Ê’šhš†T’
(:*ˆŽÕ@7 ¼¦}œ¤²Kîî;uÏ½‹s:N)b)j‚aU‰ÉË˜bÄb¢hËº!ƒ‚d¡!œVÐ)‰)‰`lPMÅDj±BŸ®X¥D‘1“‘Êü»A8Ö !ŠI¢XFº)Ï3 (…*¤’@ú.«9˜Ó¼Ë€Õ·q¾]>á5ú„ŸyÕÑâ5®Ë@F²¡@C“ð"aIžj™wåÀÉ;·À·ªæ´)†Ÿéó@ýÇ–6i›§àås,Ûñ–Àw|zÎÒÜl×öo] ¸µVl™¦56ÍÀ
fä;ÃxmÍqvVWWÈ½›i&®ç™ÓIÍ·­‘ìn¶Ñ“{6üëM Y°éîVqOÜ™jÛû£wõÊzŽÒuˆÏ³¶ot*.×á$æ÷tc„ça±Ö;G¶÷Ü\¶¨¼ò’ÚìöÞ¬Q'Øš›öQSøV>¶(Þ‹ÎGº»œ…éÌ}0q,únL$ÔŒ.X¹
`5Û&“ýåª£ña%LSSÑ–Yxdãý‚åó›ržPqj¯;Û÷µtsý/— Í‹Š¿Ë_•p0ª<¯.š1{øíbê®F¢gmvUè¸Ã[*ß,G^:êM¼z˜ ÈÎÉxu\øáhü¾8cI%Õná ¸S:´ðœp(™¦/×”¤ÎôŽy¨5ÚQ÷ÔËw|ï÷j+üÉÌ^Nþ˜° <¥ é‹púÑÓ¶_ ¤Æë”yu«ë¼]åWmÔ7	éè)OžmÍÙpz9µùƒžJóZªkI_â"ÿ
Jr¡ ï@ßR°|_Ø'ob/7Þôpš˜ózGûþ×˜xœÍjÃ0„ïzŠ½›•-ÿ(”Ò@Rð!¹$-´£H+[Ô²ƒ#;éÛ×mÏ…ÒÛ0Ìó…‘8·Æ&ÚJ(m&EªxYd<i6KBR–vV#õ„¼02åš¥FŸ-OJ¦˜—ya*(ELM¡FØ¹þ:Py¸÷ß2v>64?6^¹.Öƒ žñe.’îP"²Åõ.úgõ³§Hwn^½¸ Ó…`ÿ²ÛÖÕf»?VO¯õf}\×‡êmËØóÙ¨@€7ŽˆÐªÑ€Œë›¥Þ8³ê&‚0ü¶ ×Öé–]Õ”1dÀõÐ¹~ºE_GÀŒn^P~  —HF%ee©cÆ®éÉDƒµÑécõ^ö	ÖüŠf’3xœuRM“š@¼ó+¦*Ç-×a@R»©€«ÂÂ"Šë×æA¾„Å_7©Ü’wë~ýúðºEÃ ˜bBb54]×'8Žc®C!ªÌŒ)Ó¸TG+À\c\ƒHCTæ2V¢Ë……ë1ÅXFT•Ã¿zU:‡1#ªiP§±Œ‡“	Á|lŒÆRÔ‰SÕ —¥â¬®%'ðrþÏñø™–‚åÏ¤*~ Y•¤ª¡€Ô!”l‘
Á°H…ÝÅà¥¬VçÃÏäaÐÅÿ9Kê¤M0úk¶p|,:ßÜ|®g¿y	HàÚZÄ2Mkjš+kõedQO×–«Ÿ2¼ì•Æ¹š&µÇœ]ÊaçóËç“×Ö;}oìE¹Ö-\“SpSçÆ¬u]ù`ÈWÁñÙÛn³UîrÍCfíävLäûã}{;4Ðd›¥]Ž%P$®ýdÓå¡¸Ïc¡fo»%Ž¶J•ÒKB4Íú˜&AäãIÓÛ“ð£6h5ïC…ýFâlÞýËI˜ól÷øR¬éRsÕ
‚ch®†Ìºß¦bîƒ#Ó>œ%Ú^[¬ãü|àVg6½­íƒc…–wãPŸžÜ?Yò~ÕÝv~&6JRG±‚ÁvÖÁl·M<;j¡8V™/ˆ«Êºÿ<N©ÕŸ«·kzŽºØ5dß%Þ ›8«2»òÊ‡­[ÞœêÊ)ÏOíXo_%ðjlkGú“ÙÌûwbÒkê.ÏAÃ.kø¦À	àMU ‘£*gç6MÇEÔ>j#Ie_°ÉÓï€§7ÀJšF%k[–`÷6uÞ%iùüþ’ýôxœ¥ÁJÄ0@ïùŠ¹Ë–¤Ù¤Í"²°âÕƒ‚ç&3S›di³¢oÁ/ïòïµ•8zò†"Æ¼ãÐ'cY“bèºN+•H<ŒØs½M!}ŒÆzË÷'bÂ`´šní½®ð¼ÐÇ&¯’+	}Â}“ÜÕ_žó$K—j~ ãLèû!8wÚj­v›¥5ú_E=ÉPA™
mH·Ç\—Û,¥SêEæBx¨Ì‡ø}úÃIý 7(g›4xœuRËŽ›@¼ó#åhí†™‰’(àu0k›5°^¼¾D3<Œyxxmüõ±#å–ô¥ÕU]-µªz)ÀT70¤‚h1Ä‚Æ\gZ
!KIJÈCDÕHŒ•–IQ÷ 5)cÔ@©(ædj	$&f4ÆD§¦Î"þ»O˜™ß/a-å§"6RdRÁcMW)¼õXaCŸ7¬EÑçÀº$_Êûðß‡ïEÝ‹ócÒTß€fhTÅ¦¡ð bUUnhUô½À)úÕƒ/u#E{þõ=»âÿÈ²6ëŠ<ÜË^:®vÎ„®ãY¯û`ùW€¦ÎNlË²–åÛþ3+Ô°Zöç'ô2êÒ,‹¯\×²ƒzŠe8Ùxæ,ýj‚Îö
ð±y*†™ÁÝ|°OŽSËWCïÕÇm»/ËT¯#aîÂÏç;ºoŒ-ßxT>>¤lo¥5;IçI[¯=Z%¸Ühßtži÷ae£°»øÉ%8Gyš†z÷j–j¸«òx+o:ª/Ù»¾ŠÜçaæm}™CãÈ¤UÛC'6hƒÜ¹«¿F¾v-·t›^‹¾c
˜mpºÛka½#ÓÛ´ì“ö9Ùrã£ü†(%ëm¼(í(wXØ2ˆ² ¿/Èá»ý°/~8±ö:Ô„Ñƒjõ¹ÎÌÅö]^=xŸýð¼"’‹€[v>Ï§ÚH.…ÖW|MéáöÌo–ÞÓ¿S¶Bf´Ãù¤¸¢ëÁ']Å •Mª¢žš¦¨æ£öhÎY{ËÉÏS×Ô?‡[Æ¥+ñœ‹Ï€ñÓpSÞ9ÐÊ	X’4’uúÜ×AÚÈŠõ¿/‡fŸxœÁNÃ0DïþŠ½£FNl7uU!8‚úkï&qÛ•ë´êßS(W$Äm4óæ0S3hƒdL§œTëH¹Þ¢’ª“hÇµ–ˆ†¼FqÄÂ©‚&ÝödUëY‘w·­’ëÍº´$îYI©.uÊÞBºä/vñ[6!6Äç§1b˜Ÿã#´¦ÝHÛnŒi¥77†ZùŸu‘Î‘W~[@:,§
‡SNp,á6 ½Ï…B¡fX¾œ!—ˆUˆç;ûºÿxÿaïÉ¯¸LÁO0á	
ûÛ;ósHÄ—P'H†%ùrÂü„iäFˆ}Ó*ÃÊ]·™)>Ü·¦’xœŒKnÂ0@÷>Å\ hÿ«
!v¨Ëž`lf«$F‰Yp{Êª.ß“Þë38ÊÅ™˜¬ñ”¸ õÁhw>p0¬‘d$u§×h¨ØàKr1ÓhˆMÈÁGœ`È£±$ŽHÑ£Ïmƒ/®}†óc/3|þ¼áßpšª·CiË´Ó1=Â€QýÚ¥öÎÿÌÕeZÛÆPöÒîRo¼+õ]§•¯Còóã/gõªõZ!–xœ•MN!F÷œ¢.Ð cÌèÖ¥'(¨¢›Ø?†¡'ñö2‰Ðå{Éû¾V™5›I%£µ—:ŒÞŒ6X
)aÎÉkŠÖº1ˆ/¬¼7ˆ¤²ÎNY£ÈqŠœ£šØ¥£ÓÞxB”RàÙ–£Â;—¶ÀÛyK<>àp7,ë%Û(«|*„9õ¶Û­´ÆÿÈ'ë¥ùÍÅ+TF*§ãÞgV¾ó
™±•º¥²ÏB|”ygŽœ‡øýô—7ñÊÕb0“xœÍJÄ0F÷yŠûrc~EDÝ‰(Âˆû4¹iƒÍ¤¤éÂ··>À,ÏÎ×¸¤yLN‘0Ú
^	œRAèÂè¡±ÈVßèÒAÉ¤Hz«}äVãIgS´ÒzÖÂHã˜ßû\¼Qî3¼ì[˜ááç
§ñ
OSñy9…ZZë¸“7œ³c-¹wº]wFëþuö#lûºÖÖ!ßïgê,u‚ÕOÄØkY*Ç%ŠZ-Ð|Ï)ôõ)9ZÆÎyºPjJÃø{K
ûòahê—xœANÄ0E÷9…ÀŒ’´i„ 6ˆHÌÜÚi#hR5©Fs{RHìØù?ýÿmç•T¨Ò$Q²QÒZ[¤ÒÚ¦×•tÆˆWlí´Á®‘ºjº­l:’…ôLNÖ5—*[+gnyŠ+<³Ï<li˜àæ}Ç~wãŒþã8Äù”Qm++¥8ÈVJQèìsæÇ;ÛšÆüÄÅ=¤mYâšÁ•#ÊC‘|áé¹ôÎ>ø4ƒcÌÛÊIˆÓä,˜Ë$JÒ‰sÞÃÆï9O¼—Ño™Ï~g(žÓ—sˆÁùq[1û® S1;˜ ¿Àéµ–²:
ñæÇ‚Ñ¹C¹þÏ»â‰žxœANÄ0E÷9…/Ð*©Ó¤°C,@‚8Û‰h“QšÑˆÛÓAˆõìü-¿ÿ¿kaï±³Ú;ê:£{ÆF4J;F©xì‚8SáTÁN£í´t8ôÖ´
lÙI¥Ên°8 ‘Æ;A—zÊ^9Ö<_¶ñÇ¯›hýM<Î+Å¥óú ªWÖÒH´RŠ}»ÆZùn|p¶7ÿpñsˆi†io‘ø
cNµäeÙ]©Öý¥ò¶ßþÏ@!p€˜@µ”|¾k)ñ )§&Ÿ¹P9Ñç|å²Uú…R/o{Ü^w)nk+ÄGœ‡&OSã¿÷|!~ w¶~Ê”xœ•]JÄ0ÄßsŠÿlI¶iÓˆˆú&"âò1ÝÆm›Ò¤‹½½Ý}Ö·™ß0“€Z@¶Êk+´ñpRÛú ¹TÖHpÍä•ÓšƒÍfÁ”É
‡êÐ	¡¬VWÖNºªU¢á\¹¶n<©ÀÌšû¸ÐBîéiM®§»ÓÅ”öbŽ£	CéâxO¢­æ¼i\qÎv:†œñºª›ê§Î>fo2h4'ta yÌ˜<&{)S´Ÿp™.q¢5RA±£Üƒ¦ó®ßžÓÍŽ¯3Wü;³1|ÍCp!SŽdÎ1x2ÓFvƒ',K\RÉØ{8NðEìºÂn·ùÂ¾à–‚dšxœmŽÍjÃ0„ïzŠ½·6’%ë'˜zíÑO Ÿu,ÉFV}û:	´º—afö«T/¤fNL\z'„–ÁhÇ'ÖåDg{9QÓé®'«-˜+p#¥RÚˆŽr‡Á¡	”+×Ñ`˜Q\2mÌd)'öVç¥Àèç‚)ay…±âŽ†‡¶?Å9cµëÚú%½ë™’kÅà…GŽ4ÅZ±ÀÆ:Ãûmó3ŸwÓº»9Ç\ñúg~ @CÕ1'yOØøk<ž¯`K÷èqƒd3¬ö‚„Œñ’14Ë45îëô„ý¥‡a{PoÿQ“oùºh’xœmOÍj„0¾ç)æÞ*Æ)»…ž
½øù×°%F¡oß¸]Z
Ëðý1óÅ€JÚ‚ÖÆª^r#¬(9«‹¾d‚Q¤F Ô6š,*  ¤®Ec­„¢L–ºç‰¨YYqeU…®8·TµÅaÐ™!à4ax†.âŽÚûÎ„³Ç¨–%7óô”SYÕ¬æ%<iHb'#xGxÝV3@{;@®pv>âø'ÞHY!Rœø}ÂÌŒîÊZøÀxYXÆíê<!—D­“ÅÝ\á8¥¼…>½ý0¾e—´‡''¤sW6›û>ÓŸ§ïR¿-¡]ïíÖÿÚ‘/e;wT xœ•;OÄ0„{ÿŠíhÈÅw1yœB4ÐD½¶×Éêçd;÷ø÷8'è¡YiÖšñ|›´Rí49­e»£®mµ®L'É¢~P5Âk]+%ŽÈ'PVmÛUÛüD•5zg:]%ë¶nœ’–ª¤T—4ÌÞˆÓ /K4<V±Ñ«xfŸhÜ˜yz‚íÃ¶Uªie…l¤y;qJô?{]ýØÅ+_Àe:ö=œÃœ'Z(F!¾Ø›@Ó
“‚ã¼Fp¹ìª‡éœYA/Îå=F8Bœî!ÎY
ƒþ.Ý¾ÈLpÂq¡|áˆ)—x¢xœ÷ìqüí°Fp‚	¯BÓ-ÃÂˆ¹ÂFˆwö‡=)ã¾,ûŒ»è²Ù/—ÂŸ&*×Q˜‘KŽq¡XVùØ˜âš|
4F|pïÉ³s…¾îÿrDñC…­[›xœÁjÃ0†ï~
7XBâØSÊ½ûŠ-'f‰=µ]ß~	ì0
ƒÞôIÿ'8R5¶ÝõÖ:)½’J¡'Ýv®6­¢º1ÚIÛ*ñ…™"C£©Q~§¥2
ÑvMS¡—deM­rº÷½7º¶Nà™Ç”ád3ñLËe¿Á[ˆLSiÓü
µ®[³Ói ¨ÚªkwÌ«òAG8ž;Âásƒ²ßàN7•”º«u/3v
{XC4ç[1¥Ð9°)rNÓ´.1p@&Ûp@)‡8ñîa­ÿFG\ ÿwŸªoóxÁ0a?Ñ‹¸®6Fˆé
y=èB¸â†H®HÞýmÿÈ{î•^"~ –fœâœ4xœu’]o›L…ïù+õÒJÌçU[0!Ä61Ô‰?n¢e™Å``Ýe1±ýëômïÚÑÜœ£3£‘æ‘ 9 ¦c‚iëÌ¥:Í©¦ÙØb†êšºe:ÄpTÝ4”ÐIäbµ -/(Bcì&LÆWÓ‹`S×(3òüOÞ´4ìêTÕ‹¼`Lµ©K©m@nX&6
¢©V^`…òÀšC%Èzz@_Žâ>ÿß«NBsOyûi–f;ØR]Ý©¶ª*7·­¤¢J>9úÒq§æò½¼-òŒ•§²¯Jt÷Q~Å	ZE+ô#Žoý’…¿|)hì}ê{žx^ê§O–ÕCùsûP›ÏgCÄ£çqì-’}´aaGU£òI²À]
’^&l¶í·Á­ù‹“éÆ,#Ù|·>
B—I\{Ò¢I"F<kûqx~”¾g²Ù.ü½‚z80à§úŠýÕDëŸtH‹çtÙ”)àÙõ:ÖÃº?ìêñ|qz…¼±›^6³0ºÝ qSjÑ+qûù–„j~hÉUÌ×ê‰ùû•Ê%cYNÊL—Á“jô=~\™Ça¸^k\×
Z\ÇŽ	UZ?'ïç÷qµåÁqaˆ|bg¦ŒÃýÄ^lu±Z\rÿì=§0)©[ãÕdSÒ²—µ‚[O°ÓÓOku?3=k–Û Ûí6íëæG‘ôÝ9E£.§|×Ëñ›xy6ãW}=žÌ«òÿÏÂdö÷)K% ÓÐ4HÀÏz‰>é®˜à-j«nä¼j§gíO+8ÂåMò·Ž¿QŠÒ[¸£MõQÞAHô+ƒnrDÐï\ûA÷rÒÂ¼ÿ NÝ	J›0xœuRKs¢@¼ó+æ–C*‘á9T%[E*¢øX¼¤˜”‡a Å_¿d·ö¶ûÝº«»¿CwÛ!’ˆ¤
T‹…8Š!T™Š¼&	²„°LâIä®¸!U D
%MV A*Šˆ¢ŠÚèÒi‰ÃHEÊ_½¦ð	Qœ@JGˆŒ(E„HÆŠ$À˜ŠQÄá®Íê,HÞfÀèXœ·Ë7x¾ÁG^µ¤xëò€2?È<‚à…WyžÙ2o[Ò +oí.oUÝk1|¤c@ýÇ–^S–§àåûÓr<à[>ËÓwû­ù›ç nÌˆ]7¦º¾16.&«Lžn…š¥u/6ÎM×ÛqtGO-e’!uw'Û5Á°ñõŸ”[vŒ´TCíA]ãuóŒ¤Ù¯\JºîgéÁö.‹µt«•6dN#h†Ö—÷;Fmaºc‚£«õ
Ÿœâ]_QòU,[¡o§§ã2ö¼å°*,;ü:²“Ì˜w cIr9¸¬Á¥à ì‚Ub‡[ÕE–¥[—l˜Vg³ÚK¢ëláŸ]cÕšFTˆC¯õÚ!‘×èTïlD¬¦e·÷×Ý4º*ì¡à$„ßÛëD¤ü³fJƒ›xgÜ!m»B‰33æºo‘Ùž?=s ënP¹ùÍu¶?òÙ|nNdsß%›%òÜµ~ï§–ô™¿xˆâPâÕâ¦{ßÃjëw¼/;s:3½Ù¿ãV¤I	ˆ\3z*1·ñÆ	Õ ‡¯Ê$'2|¶õgUâ&í~d;ñÄ–6xœu‘Ko›@…÷üŠ‘ºie% Jª‚q0~Û±ãM4Àðpxy†¸¿¾¤U»jïî}çJ÷Î(ØˆAS3MB‘f&iœD„˜f¬%¦®¢D‰P¬éTj	£5XKRL#ÑM[š1A4-,ha4&-]ô?<²,#ÒE³HŒ¨	QŒTb¨C‹Ý°Ž‰bP,‘žçKZð8}çàîíCÜFâ{QsZÞÆMõ(H1L¬[¦n ¡4ºUÁ9eÀ+ø¼À]Ý0Ú–×ïÙ¸ þËÚ¬+2pó1ÎÌó°ñ6àÉ÷{ØÍ~ùÀÐ9±cÛÎÔ¶·ÎvAè:K¦;giägýQhÌl;™û¾m£ð¡=&§ÕÁ‹[™QÝq	˜Õ^ Vzó~Tý‰¾<¹—4<“ÄyïÊ5õÜ§xz­ÊŽwðD·Ç£ùÞ…óa%®¢—Ànvý±YÔ,ZØÔ-·Û‰ÐÜà‚ýl¶o'V¼Çf#»ëY»:^'3±”ŸO‹ÃÛzéxÊ|øñ|}’ RÃ<SÊÇ«§ÉNªoÞçr“ƒÍ‡§gµhó È´eKÿ”w…Å%Ñféà_]1¡žOrE‚n“«kÜ‰Ã9fÂ›¼ÝEÔ;¼5¸7…ûváF?(ŸO7TBqÖf?þÁå¾ëä>èt¿b‘úâmÙ´¾(kÝKóÅcPTœYª¼Ô!\¬üI&«éCrŸ«´iî%p™õ"ýîl¸ÿnLZS–QÐöe	½ô´ãà“ja²¦UQMST²Pn±Ì(¯­iö*HùšQþZwE"Iµ¨èM\_AEÞ(øÍ‘#¼ŒpOA1:#÷7öùr:šQù–PñðÓK–)xœQÁjÜ0½ë+æØÒì"­³vJ…B›öÐÞÃXÙƒ-)ÈZ‡ü}Ç»˜z	½Þ¼7ïÍ¨d"hlÕÙº2¶¶¡£®5U×7Ôn4™êX›C«¯µzÆL±€#ßÜ¸ƒo[ãêÊ¶4;SÕ•o]mÈ[òäZ£žÊ2<r|I	|çrÏaïh¹ïò´·)Ü9š¦»CŸt«µ4p)ôŸr—@;;ñ-	2•SŽ©ÇÂÁ‚Ó‰€ÞSOå)Îì>|„—Lºi¥<Xœ&	ÂqI#Íð–Íe ;`F»F[:£éT¤AväØ+Zé#ôb7Ïâ’ì¸½åVâ|_üüýåû·µÉM|NAý–í°ÒžÓÌ7»‚9A°lÙ¾BÉ$@xV—õqJÉÖ{¥×[qÙÎ…oF«ä¼ðnˆÑ:”³dßÖ…’ÔÅv–‘¿¸—ü»äý®{½}Ïoª?7ÍÝ 4xœu’]“š0†ïù™é¥³K€B§ÛYPŠ(¢ëÇºëM'	ÁEù•ýõÕvz×ž»óœ9sÞW¶B êØN&ˆ°Sj#hrš™nÆR‹¡a—Z„p”òjmE%Ë8&®c#L	æ„ „ “2èpÛÁ†Cm(ˆEú·ß°\D­Ì¡YF²”RèRäº†ÁÆ£„g˜a*ùQ·`*rù|ÕñðíxOÙ=yÎ+)ŠG^—ßaÁÈµð µ-s)EÂ\ŽßªºMÑ?ïoûÏØ¾Ùwù<ÜÃÂ(‹pVQ˜xëÍ2øÍ5 Kçsßóü¡ç½ø/*fY3\úSçã€æg«.ž—Ž£ÈæÓ(¸Îûd;¡›7¶ÂQJÐ9Ð Ö/%›ÞÏëï_&¸¶ÒÉlðÖDŽ#kSéÅj]õïì¢ÓÌ|{¡W¨¿×lLžô3¸ÇðÐb¾Û…v´ø1oâƒïŽÏoŸ¼D‰™#¨Ïa¸ŒMÚõë,\VÇÕg\ÔªJ×í°NµÛgUSß—;uru*>VQ–GîrË_wp »âÌÅn¨Ö±±j&¯£@LÃívŠ/Ci+»D…j×§bGÃud™Æë%%1Ë=“œ,ÍÍØÓÿ˜ýÕöV£e¢æƒ`Ð^e¬gó(ã'—;×ÏöäÏû*Ï¢à¼Ý*Ò¦ÜdQ—3Ã\V?ž¡’xþ
ŽN&!OxŠ8Îµ?šÉèßŠi3Ñîhn×‚Vœ”è$øbº6ÈÚºe^]ê:/õ³ñˆuÕ¤TŠŸiÍ5­:—âùWð‡‚UåÍÆTæuÕYƒ®¯ø­
.w›vŠÝ­G«´û³O\—#xœÉN1@ïù
ßaFIgMU!Ä\Åi#eÓLÒjþžV¢$§X±Ÿýì<!BÓ™^H¹é:Ñ¶£îß R£ìÑjƒ|Qv-e$‰	CfõÆpÎtß(.9m%kúÆpÝ34
jÎ(%âO6œb„G;ÿÖÖ×÷{/¬«UôwÀ:64tì)‡Ê)%ë¯·9ã?qŽ+åìJÒ"#è¨Š_õE¶1Ì#ÌKPkN6`.ò}¤z&äõŒç~Ãd±.W6@re¿>Wmjò3ÄàˆéLÏ%¥8eÔ —ëÒ[x(žÖÛÎj²—òƒ8"„˜‰D—=ôy®õÉá§WMÈËªU­Z_„¿íöh÷u©ä²ýË¹É¨ÍÃ›4xœuRË’¢@¼ó±Ç‰hºå±1³± ¨à€ãó2Á£Zå!´"~ýêìîm·N•™•QÅB€
šS)Ö±$S)ªK¤qS¨hHÕˆLµTê¨!%)¦ˆ`AJÔx·«š+8Á’ª ‘»‰*é_=‘%˜b£äž¤0Õe¦:"M×4+DQ	T!:ó¼jÀ”0žóÜ&9x=<ÀKü ?YÉÉñ%©Š à=ë²ž%U’„;[0ÎIlÆs^Ëª!õ±ÿ™ÝœãÿØ²:kYžeZ¶ëƒwû,\Û7>–¡õÅ@ ]k&¦a˜CÃÌ`n‡¡9Uó=ž_Pãv†‘:®kŒ5‹˜XÇ›ù° '6ª“P )¬‡ÃeÑ£YßØ(=Þ^´7tÁ×Ý´SÙåÆõüCµÐ]ÞÉÏË¢Ò»m±gáU ¦kp8 ®œ*'_æquínñNÜ-Þ7«›µtvW«ÛöË5?›Y£To<iB?œÌÆk™+T u°rÉ-»oöÑšºd§Ñ®uú¬°ñÅ´Ôþ”:LG^+vŠå¥N,—¬ŸÉ'/h=ô.€YÄl¸X—Öas˜bu;š\ºõ-¶»ím0;Qãùàâ{#-·Ør#—
3;OFÌ^	Àž~¼š¢þÉèD²§S<×›Ùœ£÷åuÁ[­Ò›ºž4bæ-–±¸¤³ C.ïÞðæ“«$ü¾™åþ}1Á#MF@}>ACNgÒrðMÖ1 MU€‚•]U±B¼ÀE,ªù¬›û{}òê³¼ <úçäÈ¾ƒ‡|±Ïô\&œU%àø|Ñ¿ ’‘xœ=nÄ „{Nñúl/˜UEJ•"UNÀÏÃ‹dÀ2Ø+ß>Ž•IµÝh4ßh¦.ˆ Ž(­i…­Ö½Ú½’+c‘;lEç;4dÖ¦
½\ë•âNtVÅzÃ»#¤œàè-ztŠ3¢×zË|„tÏÞ#<ÇS6!6·×1ê056Çà.ÔÀ”TðÄcäpc¨ÆeÇ„è/?8I[Dj§p…˜7„y	©R¿&[CNP3œÓ&ä-;;¡NtÁìßLHã?ª€?ÞL¡TÐÉ‚–Õ”½œk¯ü-n,ÜC½AÊðÛ¡'°7F,!ŸaLèhöžšýúÈQò‘óŸ3xœu’Koâ0…÷ù–f‰ÚÄyØñ¨5¡(ZØTvì$†¼Èƒ„þú¡•º›¹»sôÝ³9§©„ 
›R1"!1mÎ)&×Mˆ¨A	cØ6yÄ™­”´y„qM„ · ©ëÂàb*˜2‚9³ló‡ÇÐ‚4EÄ"Ú![Û!FØ€\X:Ó	VhÛ$EfB6	pÛ:LÀÃéKÜ³/ñ$óF¤÷a‘ý·Hl#Ó¶Mp§aMSnn&›FT`,›IËÀC^T¢L¯Oñ- eÿy‹Ë¸–1¸û:w4ö`5^7^8Û`=úö €®vC×qÜ¡ã¼º¯S*|¡×î'Gsy1*¯s>ñ<gèoín°é;§»öŒ<16–{¤ëÔqONÅÙË“JÊ7í³¸Íkµ;†ÚÒÚò‘íŸéôÜããvGD[½C×ô	U€hÖïò´Ü]NÔs¦nzê½Éh0Þ·ÇÍ•
Mt‡#ë»ëÁ5ö0Ôñ²êV§kBkC¼ûÙÈ˜ö³OžªƒpÂ)[83œÄ›.Ã£o‘÷ÍçÑÏça?l_>GDÑþZ––,w±çH^0_ÉÙ›.+ºS"Uz–P›_†U®PÉqnŸû¦</Ô‰Uî»h)ª¤ñ‚~´*™Ï}ä|äZùmGí‡'’îçA¿ìó'Mô&‹~‡2=QËôpò6#kXÍõæ¶1úú¨€G³ðoAßÝŒÏÿnLñEP¶i
*qnEÝ€_:1@TÈdÞ…ÌÔ¼Gj$ûTÐSý!ó¯!Ñœ×Š’_2q¦ò7¸à 2uË~˜¿¥ís•xœ»N1D{Å-A•½ï:Bˆ
‰‚Š/ðãzcÅÕÚ	Ù¿Çh¨ÒÝ;3g¤)+"PlÕ¤°©²¼dßrìÓSÚ2ÎZf»AÚAd‘+Æí8™Ö
Áï´P‚öŠu¼³Âp†V£E#%òTi…w?S‚· Oáz6.4Ï/sÎ7:…g`ãb¢‚3x ‚RRÕàJÁ›ñ±£œ³é'ñp§½Ûƒuð(\„|RßÍ2šLÈëŸs'!»8{„€!­ÛU}¬dUf½º¥¤5ÿ„ïÿ÷¨¤1•¼,ÞiW@û”lŸŒh ªŸB>Ü\ÿ]²v§¶ý-ãÈ¹œ‰œ–5xœu’Is›@…ïüŠ©ÊQe3l3²SƒX´XBÂ–}q1Ã°(À°
Ë¿>’“Ü’¾½î÷õå½¡c¨)%,¦šUB%M“%%…X†	Aª1‘ê˜Q¡‰;V@Á1ÃË	VRD(–Y"Cƒ±DƒP–Ò*ý±’R†•)Ò±z¹°Ç(Ö4S%HJU#Ñ]ˆÇ!çX°bÈ5ö4w?¯â–\ÅCQ¬¼¥¼ú$MÂ:RuE7C(\¶U1¬n1x#w5ïXSž²Ëƒ‘üËš¬/2psËqý5Ø¸°óÝµ¹Bçk/ L½E-Ó´Mskmƒ˜­˜ùZœÕ§“Òù“i&žï›f–n±JÞŠp–þ¹k¦ÙH ÞÉ±9ÊÒÁÝL:EÒ!úü,½uÛháã8+Ln—¢—fAØy¡hÊ^=¬F{SÒá$€§Ó)tœ×ó°”?ÒcÛÁ£Áu›ý‚£u¤¿‘HGU»c1fyd9­f·U›ã­«Xêy/€7ÞŒÞ5´ã½ëìay=9–&ÊùÎŸå`²µèùh{KM<£n°¾û<šT:çÜ€¨Ø/QÒËæ\zœý¼˜²ÒŽÅ!ùÌ?^ùL_<•A¥ê²ç«ýb––l®Š¢ÙgÏi»·ä†˜[6m…PZy‘¾x™\/>ÒÄÐœ=ÚzõÇ”æ0[Md¹A
&ùÔ­ùÛÞb‹'Ï¿Àý<4 ð;3gmÿ;1aÅºŒf,KÐ±vdý ¾É†ÒŽW *ê‰ó¢OÒ-ã$yoºK»ÞiWì¥)£Cÿ^òLêSÅnhY|ø²ôÒÒkáâ:Wün.Ð/žžsxœ••]oÚ0†ïó+Îý‹	RmÓm'¤uÝŠ¶IC»pìcð”ÄYìÀø÷;Nh%m™?~ßóe\…I2F¢`*’R'ƒxÂSãa(Eœ²t<‹$(y……‰j<‘•$LÆ‘HÒ$¦,Š#•È˜¡¨P&,xíÖ¦‚]lyoóæc_ç}‰›«œë¬/LþØˆÅÉ$L†Cx&aÐÓ\;‡gãã(ŒGÉxÅ&ÇžÈôp)¡¬4WdÆŸË	ÏœT
…³½Ì¬‚`ÖþhaQ—¥©Jð{¯Ú=@{ ä+¤XQéíýqì!ìO£vôaî`kêLBŠôjbÓêÈÊpk–2µ¶Ú­Á­QW`JaH¸ó¦=„+“ef«‹|þ~ƒÀú[¢ÐJî´)(äà äœ2‘’*L•órRjBÿm‰ñßHöê/ÏËƒòK²ùn¿‚©¤Á>°@Lg‹üZ^b†aþæ–ò›æÚZoèk56~AØ.æ!ÖB³
ùùÐ …>¢ƒOÝ_¬ŽuOì‘
Ô=§4:±w·Ð\Òiµë²v
MZhšR{=Eœ@IQàšÖ5Ç‹²÷Ð µgw…XW¦0µ…«¿'îðOÖuBM&–×ºÊ·¾ågÍ´¿¤4>†æ¹/ï¥Ù™áòI{“ò}íüT<“½½£JÚì‰ºÒnG}\È—¡(<‚îP Þœô_±Æ^àíÎÊüv?,Ëë¬¶ën«OñP3,Ë¤ÛÙï35P[¸;ä]±B­Òð@é[!LUÑ]ÂÓ»¡V©–¥_·3•&J?±2/4c«Ôôýò’;n©‹oxA-’ûfìÎ^tsÑ¥ªWÊžQª—î.Îù×	þ=$ë"ž4xœuSKs¢@¼ó+¦j–‘á5°•l…—ŠDPÁ`ö’šE@Ðüú5Iím÷»uW÷wénÞ0Ò	1R]”I–1MƒÁ
#ŠHUCqFªêÂ7ìÄÆ8Õ¡‚¨œÉHaTQ1ÌD¢2Š1Á’,«†eQþ«×™Žõjª.‰©$Ã”`YÓUVQJu‰†!bš€;~¨à³œ€Õµô ‹Oð@>Ás~â¬| uõ@"]S&±ˆDQ¸³UÎ9kÀ,çóŽ€ÇSÝ°sy{Þßtä?¶ýyßæ{0þ<ËyXÍV òfo7î/ ­E-Ó´lÓ\[ëfKªÙËG‡£örã¦™Î=Ïô'fY¸‹”œø)'¢ÒK/ ¼á\	6éÑ­ »³Ák‚š2‰Í.Û¦Øh«pzØ¬Óù±![4ØLùÀ—Õiµ“­r rxì¡ßÃ¶´´·YMß®ÒŒÍó…5ÁÄåÖ-9bJç+Ë_\å/#^J˜”q6Ÿ9°¹Þ»¸“ÏÏ¾½†u²Ã’äOÑ¥úˆ¾‹Ñëzx{Yþ.FËÖ”¢uVH¦<DaOÀåº Ú`¼Â›†òvÝ\Ëí2ü}³»Uï9»Ñäõh¶RÍØm3êŽ6ž2·úâ„â@í›"€i¼‘ÌPlÅÊthBü2Žç'‰?—òJRUºöK{uQGJ’·ºQáéÌ–äíI OvSá;37pþ˜°dÍžsW– a—Žµü²¦®@•Ÿ†ºÎ«I´	9çé;M(¾gÃûw“áÔWlLËü'¨pÁ@ÎÁ÷÷µÜÅ ?/=Èî}Í†ñ·çBl˜!xœ‘ÁjÃ0†ï~
ÑÓÆh±“6‰ËƒAa‡žö ÅŽäV¬¶Kâ4ëÛÏiÝqì&$ÿúþßJ¬Œ-›¦Ñ¶]ÕE…¨,It…ÊíÂJ-m]È¥uKq2…H®n°pZ+¬ÊV[Çª¬J§±RäZr„ZIa†tˆl9Œ1Â»‡g-ìHç×½7|\´Ñ¿€Z©º”U!+xÊH)r×sJôO¹gOóöÈkðæ“€Ì™Àž´8*	.»sãüÆb7Mw0š"!LäÔÆÓädÒ]Ÿ®ŠVë¦‘sÄ!	°Äa/†žp!¶¿¡zF‚è~°–2˜ ì1‹2eZlBVŠQ¿¾#f÷,Ã	M"ØpçÇ|x»Ù™\€1Mf'ŽA82ièhö(>xçÑ¹¹½¬ÿòŸâŸ„®«–6xœuRÉŽ£H¼ó)Í±T™ì£îQƒ±Ë”ÀK÷ÅÊH$Æà¥¾~ìjõmæ^„"âÑwœ„˜'s4AŒ¨ëÜÔ—[–‰MLGiqÇ›8–Kê†3lj&×-Ó6™¥3+cHw0¶¡iâ?zD1×jéD§&ÔÔ3îb‚4B¢gŽA2Ræ*xèÙ9}üáLðíøoä	~ˆ¦çÕ•õ? šÐv,Ã²tðªÙš¦<ØZô=ï@(úé@À·Fv¼­î?òGÀ@þÇ–·ùYäàõy~Î`®@2^º‰ƒ/^
¸ž}ê{ž?ò¼µ¿~ÇüƒìG±?·‹ÒX^ônvõ<6Í¼`%´ŸžüºµÍ‘eIhÓ†R$Çj¹VçH‡åü²C³åög¥5é­ùˆ‚Xä.Þ“õÞ¯¶Ñh³9Ú·<Þ0q²ÅÇ&™Ü*¨qYIÿ¶gáË5ó!UÕÄÕ„Ù%‰’¤µÙn§­®º^ÞFqqJStiX†å68†µ¢hì·Kó$`Ó–h¸³é*Zm5W?ÇþÅœ„vðxç¿²“ÈÍéŽòµJŽtˆ>±djª Tžw]÷î¬ï0fw±ï´ƒ™‹öøï_èx0Þk²Ì¼Õ(ª'°OãÉ¶³å¤N®eœN,?Þ ãžäsRN¯•ETŒ¯â:ÞT»xJØ 1ÿÔÃ±µÓˆâ4€K	¥¿½÷îÎø®€ïÇ!+•ß‹ñ7¦|ð.ç ª
tü4ðsþB®²NÖ ÍUJQ«øf©˜±=2Á+vèå¡<ËæÀ»Nv‡JæŠÒ\jþJ+ñ7x(Ási¸aàÜr*2AÁ—ô<}@};ô@fà+áõ‘ð/úû™#xœANÃ0E÷>Åˆ%²ãÆI*„`ƒÄ‚\À±Çé ØŽ·…Û“–‚@lPw£Ñ¼¯7?'D09*ãtÝÔŠ×-*'ëJcƒ+Þ´({Õ´RÈ›tÂÁ¢kZ[¹®VIÓõ_õB*é:«:ƒm'8ÓÛ¼‰	ž(ìc„G7þ8–äK‹»»ÁkKý-ˆZ4’+Q5pÍ;ÎÙ²õ”3ž‰³°óX˜‘Ö ­…Cšæ	92àG9ÂëÄmž¶¢L)¦bŒc÷gq_HÉ^64Ÿî÷z>h 
ðù(U¡D{ZZZRL3YL†ŸéÌÅäu.{ 7œ×ßàåÅï§…Ì°\ÿµ¦àâI%:vt…ƒë¤¼¸bÏ4´Et®èß×ÿ)œ} ÅX»Æ•xœKjÃ0EçZÅÛ€ƒ>Ö“B)¡“Rè$t–ôd‰8v°¤Bwßº€Òá¹œËi;È€SÐZ{tÈå8ŽÎecHB¢ÐÊ©@S4.°û´ÓÚ€GŸˆso”4ÒRD²Þó¨âˆ†KÍ¦Þò¶Ã•–áÜkÈpº>ààð\ÖFË!l·'Z‹ÂY7œ³ŸõVZ£ÞYZzÍGø¨‘>K x¿¼¾@IPjíe¡å}ës¿láú+1v)óJqØRü×ñ/qöx=f&xœ‘ÝnÜ …ïyŠy€¬…×ÆQTE]©Rš´7©rE†aMŠÁœÍæé‹wÓ*i¥ªwó÷Î09"ç-oZÞ
Î7º]ßu×œb¯k4kÚSÓ6d’}†©äZñZ²ŽF±€¨Ö²¦Š1Ê BhŠšÈ9!Âg4n,z¸x,aåJx¹×ªRaü 5«[±Œu°¢œRRª£Í#\£Í|œ“àâÇ’Tý’\ZŸÑ½ÁmëMÁÛ‚“¯w_pµ½¹‚OöÌþ»;ØMé5<¦à!Ìyš3!Û9.û¸ÃäßöÀÛKíW¯xr!ƒŸÇ#±	^0èeBûÁ:<">ÄQº_Be*x<U ß†R˜dVÙ[ç@Òïð¯çsxG]e8NK—–†;)–/8bŸl²Á§ßžŸ¤³'«©"äÖî<êU0fÕÎÿ}roìói™Œi’
ÑQælýîáO©ÿ¸ù	{Êª3xœuRË’Ú0 »ç+<Ó#³%ÆNbwv;ux%°Â²pËÃ†„¼pøúv·Ó[«›4’.’’œc…Ðs„LÓ‚177×­ÐÐ± 	Ft	ä‘V‡’—
$\X$	Jab¢˜FTÇD&41!1<¡Pÿë'1ÒÅ‚EXGÜ¢		­DP=‰¥'(ZØªs%Á’§êì¶‰ÏàùòA¾FäGZ*ž«â;€´¶Fƒ'ÝÒuí·Z¤Jq	æ©rÚ<—•äu~ÿqú]ÐFÿ‰êS“žÀÓìéÜ]ŸóŸ`ëÎW,ØùÓO]è;¶³ÇŒmìÍ"äîë`ìÛKëœáõI·c,q\—Í6Èk·$¨©—å6ÍáÚ`ø¡)Î\%ìàuîÛi¬J'œíºË¤âÂÙ/Q)ƒ²óÒCµï®G¹½Ü_ñ£!Ç>çä™D)º†>\Ìûs<^<¼ý~Ý\Ò÷¦âÑ¼ŸÙê˜åÒµf¿÷ÍÁövûò/öaT1¦|HûûÝÚuEaXahœÝÞJHTÝÑ»8ÃÂxoÞ'ëüZ”n6î^-ÜcÓ#­w`7ª¢'Û%.×M˜NoD…tç9(=ž¯SîB·'ß#–àÂŸPô¨®7jG+¶¬‰‡T[}¶Ø0ÛÂd}¤ð0Ïì ‘Aw[ÊÀÌÇÇ‘‹j9ÆxOûä²vB¦o©0àþ<î^4ðr5û•ög³éjòïÅ4Ëu›ç@òkË¾ !«ÔQ%¼¼T·áç©žš"”JÓÊ[ÁŸâ<ýDÚu¯+–Àý°€­Çü dMU‚ªUu«~pÙÿÃ”xœ¥ÍANÃ0@Ñ½O1{”Êc'v\¡
Ø±@B”ØñLqIì(8åô”@lßâÿºA§YF£´1ê˜Œ&i}'[îc«Â)ˆÙ/”+DbÛGÅÎa4zpÁÉ6 6š]4H<St(…_ë[YàÙo4ÂCY¾(¿—nçØ…_¸;M>»¡LÀm¯œUn¤–R\uJµÒ?3"o5Ã˜öÀéêe.2<æzmŸî_^áüQ2”µÎkâ˜N™bS˜›pÙÿå-¾áûn91xœ’ËnÛ0E÷üŠYÚh,èa[fPíÂ#(
$«®ŠÊDøpIJ©þ¾#9A ‹¢ZQCrîœ{™#"h-´j›C]m÷TÛº¬ßÖ‡æÀw;É‘ï:±k[Á."¢Ï P·UkÎ+µo$ïx¹íªfßh®öj‰¯J&†|¾ÿœ|vË²0®P8~í0¶Á}jWµMÙVeŸJ^–ŒªÎäŒÿyùÑáFZs2øcƒO8ñ9€ Eì7ó–pHRŒŽwÇŸ«SïCD8þ6)ßÃNk—l‚“`H¨àÙ(´s;¸Ç„qËî7ùk0oØûâ=öÔã¯àãŽE‘pî" O„ ¡Á®ªMgòº`ì‡'•ˆi|Œ×Ã«õ<@zÁÑ­‘è~ÄE[ý¬`§	ÑÑðÞ£Ä”Dœ C)†Y>ŽµdJ¦È3Ê'B4ò™xßü¡ŸÞŒèR]O¤«ƒµáyö‰œVf{íLOE6Ã(ì€³w%!ÁËGýWR÷Å•„B\3öˆÃ…?jô&e‘q¡šM|Ít™ïêÁ+{ëÕÏ%5}0½Gµ	Zoºéö_ûåš4xœuRKs›0¼ó+4Óc'1!L'é01Ø!~?oB‡‡#	lüëKÚC/íÞöÛo÷²«çÀ&)czb9©usÎ ´mÛJ9M†ºC˜…	³áP»Á+§$¡SbêÄNR3MMÃ Ðp˜‰¹I›ÿÙB˜:‰ƒ¡é@nal!hë6Km!'ÑH£Nµ Sž«ðIOàéã‹<&_ä%¯/i]þÐ‚½É@‚ÝÖu­¿–¹R\€q®Â&OU-ø¥è^²> IþcË.™Ì3ðð/Gï`>žƒU4~w×›eðû®\¥G=×õ|×]x‹	IôLøKojŸÎhÖš"ºº.£Èõî]]ëíäŽÜ­IÊæZ^å´4°Ûíâµ<›pÜü¼[z–“ÎŸ„Bp~hÖñôVÊ×u½™ã½WDð¾9wÓãÀ­:w„ ƒÐß3èôáÞ·ß¤#osi·ï«}éŒØõ6ÛïÃ;uüÄ~„¨]7æ\Â“B£)ÒÀŒ‡B÷¥ÜaêeAì¿ðÒ¬å±žî“cèèäpwp„o©!ØÍÂVIdí#V–ì¾#?§ŸC«Z´rED¬Ú·p2Ÿã…‰iì•WóÑþ{ïåÒbÖ1‚3v,‘¹£í}”¤ÈTåŒì~ƒjc¡ÑªY°ØœH¦e‡¢[7ÿ¦x[©ëjÀ>Ï}gx@—YÍYéÏxÌ·‹ö§³à}ôïÆ´˜‹ŒƒKS@ðÏ†K¾C¤¢.ÊË‡ºà2Ï%‘ýl4­jKþ@‹üxÍoœ¼¢µÌ{­¢¨SÀ…èÇy"+ò*ëeð{àR4Y^ý ÒF‘xœ¥ŽKj1D÷:EïÃ}<’Ç„U¶Y$hI­q}ŒF6ñí3„µzÅ¦¥Ÿ—´(é,QTÊ97'
þ$Œ³ÅèÔI\±SàµMèÚ€F¢óÉ¤d´J/ÑX’
÷hkÞÆ¥uxÏôµ1Ã'—–˜˜îð<¸Ú/]r>„V^@ÍÊé£ÖòOÒH)vZxúß‹¨÷BSÈ|†7þ¦\CÛxTÃZê}½`™ëºÏ{e¸æÛÊU|ðZ)N-¥É?ÎP?Ó¼tRšxœŽMjÃ0„÷:ÅÛee#E?¶C	¡ËvYz Iï)¥`Éß¾2ô ¥›æc¦®D ÕD“C(­õæŒÚhçÐÙ@#ç>5y#eO»Rªà•Ñ
ƒA>g!†V	N)í)IFîŒÑ’Ù­Îy…wŠu†×­ø^¾Ó»ÃÜbªôè}^® ´0oª¡ãç¬¥K¬•þ‰³ÏBpêNÚVyæ-!!|ç¡a´P]÷î‘ïP6wŒÙ„Œ½m¥þ"©ÄR)ù½gì#Þa—CèÜ~ùË#öºŸnó˜xœPKNÃ0Üûïì¤qb„ 6‰Má Ž3N,»²¤Þ·â ˆÍÓÌÓÌ¼OI õvâ¶ƒ¹ÒÝ±•r”íq–VX>ekçž÷Ó ËÎ:!’ó¨Ð«ÑH+-´°¦Ã(Ú–95Ì£ZÃô^Ö˜è®¬ô¼g³Òý×•4Ó•<ºPà·½Š‹nPtàç¬v7W
þigŸô~z}!í=ÙºRªÕÇ…±§B:Êq™JŠÞ#eJ({
¿ZgiÏ.,Äoe½!ŸµAC«ËÌeBÎõ)®Ž¹Tû7R¹ZJ¼éÏµãâžiÂª+JÔ,PÓk£i;¹%`>DkÓåî/÷²âüÃ•%xœ‘ËNä0E÷þŠÚ±êàGž-„€iZjöÈrÇ"‰#Ûé0?6š¬XÞ+SeW
ˆ ša0
;N56ÓªÖCm'-­k1Ø^1Åù È*.	hÓpcÑ´È™ö†
*{f)ö´µµa¢¥œY"·4ú gíS‚'¹a€»XB¥JxpKÂ©Ò~¾Ö°¶m„5hG)ÉíìRÊÈº4ÂÓõw%Tª„Ÿø@§ü?N–ëŒ=¹#<Ïë„sY¼tïLï“¿0AÈÛè"X÷‰$¬>$çð:ÎuÇ”:~Yn¯¸Žðhd2¯çÓíëùO¦q2Yü¬WÔßÄÛ
iDÐÞ D.–l¿ê(g„òŽ`¥FRÌ;Þ\FiÀæ¿“ûè&¬à„>¿öÑÃîâÉÃ*c,»2ÓY§s²/Ëâ·!îðxz®9»Ë‚æà­=¨¿Çßæ'ò‹cƒqÃƒ“4xœuRÉŽ›@½ó-åˆ<f§ÍD/ããotÓØl†f1_O¢Ü’º½¥JOzÅ*B Ña¨!Y@P„ˆ„É*DQR‘!ÈXÅšÈ:Õ®*’3@¨‚¨?%QÓTCGD3dª‡„jŠ%QÆýëÇ”%‘
b(‹º†TÑ©L¨DM‚º&"…È˜"‘X’„ÅÀjjƒ·Û7xAßà#ÉI_p‘ý¢*jPTQ#AîÉf	c¤³„ÍÞò¢"eúøˆžôŸµ¨Œê$£ï±œÙbÜ™ö‹ÙÆ<=ç7Ïtµ…-Ó´lÓÜY»Ï X:¶g-õøªl[¹Zt¦ÎsbÞR¨ÎEÛ%nßÃ%~$Ð˜rÀujçÌ¯2ßtïg[ÌuF™æ~‡ÂßŸbÖÊ=Úi»›áÔØVGû²sø	T·úxÛú¨ãÀòR2Æ÷_›ùçqšöm,Ä>–Ýþ$Í‚³Óù':\jš‡‹^öóN^™[Uõ"TÎ~«YÏ“§=ƒ:â×íqÁkt¸ùsÓžÞþj•õaŸêqÛÍ¡îVÓöÓôŽä	cõZ¬9ðHÚ•MØ.;.EuLV{Çâ|7œéf*8³ÖÈ¤6òÂéà•< š³Ç8€ÃÐF¸»AÛM®|÷j(]Î=—ÈÚt[ÅöÝë«[„˜_nÔë#	Ž¾¿µùÓŒW.êÒ»½sà½Á¹ÍýéÌÙLþÝ·&UD@Ù¤)¨È½!5?$¨Z`I6*Rr«“dœõóm8.o32Âiò
º¿dEKBP7%©hÚMŠ†•Iü‰Ê´‰’ü¶ŠÔžxœ¥ŽMNÃ0F÷>ÅìQ*»®c§Bˆ°€Œíq2àŸ(q+õöqÄò=}zúúFd]½–Þ)ç)&¯C¥ÎÆORFƒÚ&‹bÅj´.$«Y9dMÀè”Õ.}IQI7¢F·¾´Þ2}íÌðÁ¥%&¦;<w.§öë_ç‚œO¡•PFv’“Ñð$µ”â°…{§ÿUD½Bæ+,Xc&È­Îð?p®°P^¡Ð¾ãLà€ñó¶w>V…+Ì°bŒ‹wž+Å¡¥4øÇõ¿Ä7æ¼xF›xœ¥ÎÁJÅ0@Ñ}¾böÒGÒ4ISDÝ*¸N“™:Ø4¥Mžø÷
~¸=‹Ë­"8ïÈÆy‚$eBšÉô£JÚD‰zè‹Úõ$öpàViHA*MTÖïf´^“KrƒñH±W:z¡Õ÷rÀÓŠ'3¼r.ÄÈx…ÛÊùR~ý~É×K,ù”QÖÉÞŒ=ÜH-¥øÑÌµâÿ*b»fìâÊ|¦8Á3ærÅgÛñ µ•vBiuoxƒ·ÇØ×¶ð&Ä/¦®uó×ô‡	ñá{pœ˜4xœuRK›0¼ó+,õ¸Ú®1Æ@µ­Ê#KH„<š7l!!˜ð
É¯o¶«ÞÚï0ÒŒf¾ËL×p ¦'†FU¢j:4ª1¥\Ë8£ªª&ŒB#Lª“†WÐtª2§i³„f©iŠ4ÝPÏ2ë	ÆXÁý:Ó¨A‘gêrŠ9W0¤œ‘Bd¦†œÉRÒwÑ€9/º°ú–Àëéƒ|¥ägQu¼üÊÄùU™L0†àjJõ\to€[tÓž‚×J4¼.o?óÇƒžþ'–×y[äàùã¬‰ë`é.ÁÚss³]MþèÀµµ˜eš–mš‘Í’øh
{eÍµÃ‡ƒÒxWÓL§žgzÆÄ‰­“w±¯~Î¦ÎÔq=I ‹ûiv,¶1÷cZlÃý>Y¼¡a¶ÇËMª¡í`á«›u)ÞŸ¬]n¦}_»Ýö°É--	D¡(£Ë~°N™C®Õý¯¢-qé‡ñD[ñiž·¢Ÿæ>ÛÉkì[×·wåât>zx¿hûÃ\òùzÞÓeRŽÃÖ‚ íoŽíŒmµ©v21£d¯+Wßyð²jõ¯+¬F„"M¥›kç‰­í¤øÝH?nß”-«V¥Cëx«NêUHlXìÕ­uÈMï‡6Ò]º^Œ°Ü—¾Ú±›‘½]dÏLÆû¦‘Ã»³[:²?À¹¸@ÒÔª½˜Åòy¼0† =ßáfDæ}—ÀwŽƒôÙÙ$pþÝ˜´àMÎAÝ—%hø¥çm¾ ]Y#Î +ÎÏ¢ä§¶(^ÎIû˜$UÃ™?³²øÌ4m_×¢é€È@_=&Rñ”¢Ê?¡àØŠ
4¢ïŠŠ·¿Ù'Ÿxœ¥ŽAnÃ E÷œbö•#ŒCTUÉ	ºh/``p§5ŒeãH½}£æUÿâ/žž¾~Û!"z´n*«}
£uA‰ÁZ›Uè³ÖÊ¦,ÖiÃÚÀú0Œ£÷&Ê(MR~ÔÎf-MžŒvÎÆD—•ÓÑ>xƒ×¿v"x§Â™ðÏÊ‰ü2—‰–Säò½é­¾Çix’ƒ”âNµ†ÿ[õV°‹ášìÇºòÖ€3u§¹b‚…ëü¨Æð¹s…Fwñöktœs¾Ï8"~ ¸–q˜™xœ}KNÃ0Eç^ÅÛ@"'þ£
U”	PÆŽýÜÒ¤rœFìgÄŒÙýèèêæ„ÖHx«xàÚ£»¥²ZqÑil‘Ó6ÌE.6á˜AšŽ)eŒpÔQá[£¸–S¬àZ&„Ó¡m‰]r?%xÄàq„ÝW‘õPä~õ®vÓùÑH¦¹**)%%=Çœ1ÁÆÜÃÝ2»vß›©»Íìã˜qøÃ%—Ìè‚«‚“—g¬Çø¼?T¯ÃrŠ#¼_¼Í>Å+Îs¹í0ƒ›<Âº­$¼F\a/å\òO#új
¡ê~nþA~eaes”3xœu‘Ër›@D÷|ÅTe©’=¼pÙ)22BBR¼3Þâ!	¾>rRÉ*¹»>Õ·Ý}K)Àq¢
âÏË¢ U¨”(² 	D¼¨@MÖ$Ì5Ç–V=B©KEˆŠ–È1–U,`kÒ$(P¥?þ#"*’š Â‰„ã»]…<”!"M ¨B™Wž;ý©nÁ’²þŒ¡Ã'ðœ‰‡øK¼²ª§Å®Ëï€—y$ŠPR$0‡
„Ü–¬ïiÖ¿1x®ê–6ÅøšÞ†ø?oi“v,ó¯3,Ç]À	ÀÆuVú6
­_œ¸v6tÝ0u}m¬½ãx6Cc©œ2éã"¶îU×É›ëêv„¯äõ&½U[ãçìÚ0µp»VÂ»p_ì:ÿ2MƒgÒÂ¾wí:'sù³Ä>ãªˆxt1.úÊÏ»f÷zÌ.ã€CPÔ}¾¢_#|»±jËû¶|ËwYi%ìÓ‹úý„UD‘ö.Ì–gë`ßÞšæLU:Ÿ³aL²>µÅw'èrÃº£Û—›eP@O”ÇrG8OÙ­ssÄ–'/6ZíÈÑ~¼'`7unž{u3§¤õÓ0îèg‹P´odìü¦ÐÚi¡ÒÄZ©[k86ŸÂŒo¶3‰Ê¢^F±ÖxÿðîiZ¾»Ã¤ËŸ?>”õl|Ì÷E”!Ž!-¹¶…Pvô•ò½pàålIkî÷fÖjñïÅ8Ÿ¶)ÍP ¥çv=ø&(HÚº%«®uÍÊÇ¤nçüâ¸êRÒ9.Ø(iÇ‰>¡!Çžþ )†”U?ºüÀ“xœŽKNÄ0D÷9…w³@“øÛvBlYÌÝn'–â8
ž qzˆ°)•ZU¯«íDÌ#Â¨ÑÊä¤v‚{/“FÃy0Æ$€€JI-±ÛüNkcÂXà\DH­j8€3½ó’²Ì_cð&i"aR¤T`w”¬pÆžÐQuþÞæº³[^?je¯…=•ÛçÒG:^¦âóÒc-ÏçJž:²>rÞ×’[£Ö»í±°ûgv9DÃ}‹¾Ñ[¡ÿIV›[ÛÞ‡aÊm¾‡oØðû$—a=
]qÉ,¯­²T÷ëIé¾ Šöm§žxœANÃ0E÷>Å,A(‘8N¡ª,Y°â •§–b»rÝVpz\à ˆÝhæýùÿ—L(ÕKç¤R=ŽýÐM£tƒ¥ÎH¥µ´|¥à¶g'“)˜*¨µÒ£³ÒMˆ†»nâ#	Î;D­id=Ì\Ê1exóñ–¼xßcëC‹tÝ¯Áø­]RØ„êîo<qÍ9«ÛàK¡ÊY¼j–ÍÏ(ØÍ|Ò(ç)S¹äÆÝj­3LÄC:Q|xdì¥‚?ˆë¯äv¤¾€«¦ç–±w¿FÂ&9×Øù/)ÙÞtk‘xœ‘»nÃ0Ew}ÇÅ–åŠ¢k‡ C?  %*Q£G`ËiÒ¯¯ :Ý®xt/	2D`LÁ¥.¹Q$ª¦i!¨/J^µH\R-„îKvÄB‚FHÙ¶²­M/L£5rS4¼¦5ç…Ö­TÅŒ*†SÚÇ66|ÅožýUæÖçšN¯;Öå*úXWkYHY×<ñ–s6W½M‰þigáä)SÎvàÉ÷¿©cÏË+p„°á³å®{Š`ÛOfvt.ªDúãhÏÛÙ€ÎîÂÃãj¡0Pš† cÂD~Þ÷qrÔžÔÜÁüÊÂ%ƒ^-hŒ+0ËlÊÛàaQð9ù#¤x%ÝMÜbÌ}¤Ùñ1ÏA:‹Ædý¥ûË¢Ø!1¡ß™xœ}ÍNÄ …÷<Å}
¥€™˜Ñq£ŽÆÄD×ü\¦h¤1¾½+wç;É—œÓ*" ÚÁ²àbÁ:ßK%¢ÁÈúÁ?J¯9ÛŠ¹AQp’º×N0)M½C‹‘ó 5WFá5±k›J…ŒŽ	3ì>¶ØÍ[Üßù²\C/ûQ0ÃÊFÆÈÖ.©5¬ðˆ©Mp»~ù	vŸèÜö)7œÿè\óoºÚtòüö„ôp¼‡÷»}™×SÊpøm¥gŸúR+„â×eûc[*¹#ä52Zb¤îçêÿÕä·Ña¨xœÁNÃ0DïþŠýT‰í¸	ªPK¹ZT	‰g½›R§r!þžä†8 n3+½ÝI‘
¬Ç•b¬Ëš™	µ*T­eiœqº`ÅVJq±‘B‚†ë²*«FëRŒ®TF.—ÎÈ*767²)ªš4KaÇÔˆöž¬Þ'¹è'¹þt¸Àá|EY•×Òäå&ÏÅ4=û”(Â#ùÔÁÝxÅV³Y4³Yû¨ÿËJj9áË	O/Ê¶ûœî·Ù±[`ã`O6fô”á#ÌwlpB<û6Ëæ¬ùºùû]ñz Ø’ƒ4€EÆ©ž2FÂ¹šÍqØÙÐÒõí÷Þ¤ßz<~Ô™xœ}KNÄ0D÷>E_À‘“vâÐÀ°„„k»ÝžòA‰âöxX±bW¯ÔOêJ3 “SVw¶®µ6¨”aÓÕìs-5ÊV=:nÄ‡]xJŒ%ÐXªN‡|QbÙuD	±5iK
…ÝR?/pÇ!À1ò»·‹!Çý—§‚æñÊºlP!ê
¤j”¹cJ¼À=ÇÔÃõ¶R»÷3îû8%þèU[ýê&ëâñååáx¯7ù4l§8Á•÷à—øÉ’×5oˆvXÁÏ´lŠó$Äs<Mìå‚tßÿ-~ ˆb“xœ}ÍNÃ0„ï~Š}Gþ‹c£
Ê(	‰ž{ÝR%ˆ·Ç¹qâ63«O;SfDP,¢ñÒ¶šæ¼å¢×-—}kl°\%:¡|ºs£´¶VÛ.ö*š‹Â°9c"«½rªžZâÖ2L3<`ŒpL˜a÷^e3V¹ÿ¾ñÓåxËµdRX”iÆHM/©œáSàv]ü »Í4ýfö)ÿàÂ%*ÞUœ<¿=!=ïátw /ãzNnB€0§/¤¸,uCrãÛ#—!¯éœ1Ð)FÚÿ\ýß—ü-L]’3xœu‘Ër£0E÷|…ªfI%¤’© ?08~;ÎfJ	°yHüõOjv3½ês»û.úÊ†sàP¤SÈ-#!6°ˆbÜ2 Ð5ÚXƒŽE-¥¦/%0(ƒ‚a'râ:¦†Å™É4S˜1ÖMÃ40Ô9eñß}Œ…‚,¶uÄ-Çb¦í0ŠSh(ÂÈÖ*´•iÕ€Ïd
H{‰Rðx¾Á=»ÁsVJžßGUñèHÇ›¶m;ÍÒ4åK-2)y¼LN[Ëªáuþùœ|´ì?gI\²ÜÝŠŒ=VÞ
l}oáîÂÍø® ô×%C×]“u@h7df¥'sÙß»n<õ}wBÓ©¦Õ¶ºyÞ‚ÀÝ›§ Œ*¢ö
{;9‰u7‘§ÃÞå8©µ· bÁøi4+?Z¥=T?VÛ=%„3ÂíhÓÖW½@»"WOcWº<„aÔxÏ’b½pòìjçp.ÆiOÎ¾7uÝÑ¬I¥€A§Ó6v*.îÕM¸Dý`14Ó;Æ<õœîÄp\©‡.ìå9›º½Èë6}=Ëtžø
Ø4Ž·>ìÓLMùÛdq=:ÇMoúÄeW=ú<N&}é­_ì÷@lc,µFÆ¦|=ÚšŸºO‘¯pš®–åL¿ÂãrÉ«cX>3©e<p_å,Œµ&èT­ÊnÑDÅyA+x
»çX3±ý¤€'Þ¿ÊwfãÅèß‰)sÞ$Ômžƒ†¿·ü"Áha šª EVöU•_¹Çƒ¶Ž©ä¿ú8R”²+ø]”gàÀ÷èÖƒ:o“¬üó	ü’#xœ•P;OÃ0Þý+NbD‰b§MâªBL„ì•çÄ"¶£Äné¿Çi˜lwßË¾/Îˆ°m›†1j*¡çX	ÞÖé(J¾Ñ¦]S³zÛ12‰}Ó0ÝÖ•©3H;%uWÓf	o6BÖ4/’3IDŠC˜áÙúSðä`ï.ci]©ñxß;aÇRwtKÚñ¶£p[ñª"u6Fü—óúÛNüÑa¡F»ƒ“V;0öœ]œˆj ëA•Üå˜üÁÏ±Zcè	y¸jãyÂß¥+{Èñ˜ÆÔ[_’Çä„‡…rD)N)‚:'-à×€4MaŽ¨Až!]/^—„¼â4
•¥N6«Þ‰ñJ\=ùÁ>3Iæ¸%!Ü°¶úÁò¼ƒ—?káÝº`,Z<Â>æÊÂÿQy³½Ï®`ÌÅù‡¦Éßàº“xœŽËJ1E÷ùŠÚK7yw§Ñ¥W~ARU“dè‰3ø÷6îqw8—wìÌ(i¢UhübfÒÎáb¥e¤Ä!¸¤Å%îÜ\Q­l)¥Få£ŽY‡lÍê¼_|`éTZDü}‡·Òî½Ãk…Çúƒs©3ñíùTc9ÏØë(§¼ZƒñdR¶–1øŸ¹h·ÊžËwÂ"`o×£ñ÷råB¼ü6ÍB¼—ScšzÎSúÚþrE|‡›k"š3xœu‘K¢@…÷üŠJfiÚ†âQU“îI¢">±QqÓ¢
QÊKñ×Ngv3wwÎwÏÍMN]2a"‘(’)H@	árÎ¡ƒ(Â2#á”,¯T%†4B%ø†"XT8’Âˆ3ªÁ@CÄ1¦äï>b…XŒYUT5qEä–%Y”5BÐ#Ã‚¦>%pXR€ÑTô ÞNOÑŸâ#Ék–öi‘ý’*iPS°BÀ‹ˆDQx¸YR×¬£¤7!xË‹’Óî#~hÂÿÄâs\%1xyŽaì9XŽ–`mæú§çZ|àZÔÐuÃÔõ•±šþº¦k8èpT­\ÚW]Æ¶­;A·öšƒS{wj©r¸¥³Š·`=Û™5öÀ7fïY»×n3qaz»`/†±ÕÓ¬½¼ñÛxëÏDN¥.\{qA¸)£Xœàašxv.½Þó^m™Òîv¿XÃUkÃëgïrcéº5·y=öÃR„MªY®C‘yÀQN»ŠZ˜r±8“»»UíI·›[¶«›ä¶Ú‡Ã›hÖ‡:$Òšòò°ÈÌ«Ë`Ù×5Ÿ³ÜvCo)Ÿ»nÏNˆJãÏa3cea×ƒU›& cKtˆw~zË3ÈñhÎ|ÌÇ,ÜM“[Ž[—u»Ÿ^ÌÊÕ$#³:º…â(QZ«I5‚C5¿°Áàz?­EIKó¹ÿ.€wo½ßßYóÁ¿ÏÄœ›4%»4¬ªÁˆTÀË"Y’_‹"É^[©¯½òäö•±¬(»¯”'AÈÛŒ½Ð4ù	|#ðD ÉÁöéo]ƒ#›xœ=nÃ0…w‚c‚6†dÇrE;fèÔ’HÙB%Ë°•¿ÛWŠ ÝŠnÄ#?¾G¦‰¶MMeµ“Zr]›ª5µæR4ºm›º$¬J®¨!6ª‰†¨8·X‘”­ÜI"4%™VèÖ6¸Õh¹Ddê”ú8Á‡.1Â!ÀK¸—…Òù­ÊùÂÄð
¢R´¥¨$<ñ–s–ÕàR¢âl8Úïö`Ý…8ÝÀ“ú7À¨æ9õÓiµfì`á()TIÁÍ ¼F%B¸¸ÔÃ£çiXX›MÁ¨™ Z6ÆÙ]3”wÝ°ZƒÍ÷ïãÏàÌ}<yM`ó§Æ)Ž4ù[ÁØ;â]tC÷+€ýá—(‹W¦R\6<reø3»n¢µ}ÛÿåEìÈ,¡Mœixœ½TMoÛ8½ëWÌÑnc…²>l	Íbƒ| Å®±E‚ö$PäÐ&"‘‚H9ö¿ïÐifëéeu5œy3óÞŒü€JäeR,s%WóÅ²dÉe“aÊ%Xª†aÉ³¨çy±Ä¦`"ãµ,rŽsÑ(D<-ÊBæ|ž§*â£ßØVÚ<ZŸ:øÐŽ±îb‰Û?××m,l÷$yR$Ë¢Lðž•ŒEdí´÷ø;á‹ù"û™m‡3Ñê
”ÞA‡öÐ" mÀ¸Z¢n2¢ÕÓÕ†;hð¶µ‚{”ô©ì€@];mÖ*âF‚í½¶†¼÷‡5kÛ£™L!Üoy«%Ôvôýèké¸ŸLãhÅ´®B_~ƒàÐ=Xõ4Ž¢Ú¸Cm5ˆ7ktà-L¶VKx7ƒÑñF·Úï_xŸhàQÿ#å3{P¤t]Jy8óäÑ5â%†ÏÄ‘CPQ‰¶öñGò(ãÅÅ2OÓ‹øxsùî¿¬V—wÿVÏæðÅ#p¸Ó¾‚ìŒ•æ©ºK ¡ÜAÞzÞÂyú[ciòÔŠ;ƒ”ª¦Óâ¬dß‘Žqžï‘bdýõV¢ü@eÆúY€“?•qµAñ@ö;+æÙSšà¯´´ Qi£=¶D˜u>ÜÓÛ¡Â’|Iìä[ÄÛeWóÛÛ«¢
dÓü¬L´‰àõç|tÃy«›s·õ <ß®ûôâ²&:™ñNÙ¬ÕfÜÅÎN_¤mö‡´)c×IE9½«ÿçä¬¼ž_WÇm„IXÚXTIV§ü“2/Mº‘-Ö};®‰ÝÉÓ;„åìd–dY2"–çoÒ%K§'”ýûæò¯Ó3ý]ß4Ód—š„÷Ç öÀN@ÂéæÍÎë¶¥áâô³hZ|K†5ö$—s(ðysw÷ÏÝ‘ê‡ÁÒB©Ávô%,í×Î“„/¡×¤JtOS…rf•š5ûê-ÿôè+4Yâ$„wxœmPËŠA…ôÄE«Ë——‘ÀB¨GWª«5:q˜hP”gBuõ-'L'º+cf1àb!Ûù
—ùAü·~€y4QWçP÷œso»Ç·{.G„$Â£­´$°±¦J†œ',´6HBÊ#ŒøcãÈg"R*Ö2\QeX¬¬àÜ’Ðjm’˜Ä*eø¬Ç*RÎf/<Iåì[í¤@×·¨Ý$Çýºï¦0Äa–_CŠúl–C?žØ~Ó÷ÛmECÞnÃéQç|8ëv;ïÏ£ÍóümåI•6æÕÝ³Rà2§S¸@=†I¡?a‚NÓÌìò³KF[![_;,6cí0Ùn,w|¯p^&^ ¹Ä$i´Âpc¼'_É6=ó^z+ÿ÷|¾ðäšÿò^­øÉöÒei@¤d4‚¿jýÑÕ›&bœˆúŸì­…ª€Ì¿îì­sì<=¦¼þŸ[Þu^ßk­ŒIÐF‡é²ô¬pl‹\G~¬6×ø¥ÄE‰?«ÍGÿôS{ðù7V—Ôå!‚xœmPËJÃ@%1ÝÄ…+Ñ0V¤[™w2•PŠT|Dqá¢È$™Ábl%Åâ7¸(ùW‚ß!¸uïNü[›¶bÍ=gæž3÷žÇÅ/»™ÄJ…9
aŠRi¥O…/Ä„”h‰]í ûNÆª 8œI‚¨$¡?|””Jr¦5æ˜„Úu‰æ‚¢A[.sÑ Ý×÷M;lÅW±
T«—ÆÆ‚QÏõÚ)8¿h4jg—Ûó~îÓª±jðYË¹1OŒr•8qßOT×–QÔ	d¢Â‰Âó¦ÚW“‰ûÞµ
nTXâŒgâ9É°ñtÛ¬f¿µÍõôÙt2öiFìpÒ:<~À{
±CHÌS`«Ý»U;A…0‚Š¿ì§$p-}ZÈgÞoù}ÌŠÿŽtR¯Ï%3ö
•nµ[‰Šú êt“ÊhüYXGV9CSô2EVyéod+¹Þ7ðR‰=åŠuxœeOËNÂ@M(hRå\Ï@ˆdNÒEQ%!,™N§‰±PS*ÂÆw¤[¾Â¥þ…ãG¸u/RŠAïæž{ï97çL‹ÓN)$áLqH=Ã%‚x\H—RåQ…4\Á„Kô×oE¤ú1ð %‘¥õö!–ÈXø˜û±¨i2“+H‘Ë&œ§œáIROûÛ¾®qWÆQP*ëúñõôT/ŒÆ Pâ„>èÊ~<ç )î
ˆ‚«‚ð¾ªë¶Í6lœ6œ¸¼j6‹vm±NZ9”ŸƒÇ\u×b¸ãX€‚PŠXyKy&xÏáT°©mWOD;IOZ=yÑX:|iÎÏp´p1+wàÈ€¡F,C‚RØSUY£Œ”]/ùˆS+yÎï¤_?òÛÆyù¯¿™â¼áœýË¹WXälSð”×|*ëÿ`mø“S‰?å_xœeÁJÃ0ÇéÚVÁË#¢nXGÒ4I3)2d"è@…1š,AÎÑÍáÞÀ›l½ú>…àxð¼‡ð,ní:Psù}|I~ß÷Yù´ýH) )Ä3—­|Î‘@+®]¦Ç-O„¸ðThwÃHuú@
¦BB]OKæŠéµÇëM0$œI,0ÑHJ8j¸–9Åû)?¶–zJ6#%c£°§ï#Ðœ5Äƒn–m;e0Àq­z..ëõêùueÞŽo×œñÙpò¾=¿…ÕäCödb`'5Þ*ÙV-À C	bØW½…QÄ]c=¾Ê—m”)žrñé'“¾s;³§ÊéC =Hè®€,	(vwª,+sTÊ<¯&N³´ù{(8­UOþ¥s¬4]h•Žç|ŸóËÚ]û³¼ü lÞwíŠ+xœeËJÃ@FIA£[\ÑŠÔ¹gR	RKAÔ‚(.\ÉÜP¬QÚP,>ƒ‹’Gp%ø‚[]»óAl›VQgsf†3ßüßÃü»ßÊ:Æ Ä´V‚ÁÓ«Ð"K™T<	±e&b˜FTI¬›tLšI…°ÄF	´‰¶QjBÉ´J.¥UXÅ!´°'¢ƒ|»àÛê¬¾ìœwMªs×	–çqöµ#prÚlÖŽÏª~GÃë|ÇÁ¥3g+àÙÏL$íöJ2£'ZOý‡lqõ£®Œ!ÜäŒÿé»;ç£é)uWò'WŒ?üt×Fûz6\²à……´
¦ãƒõ´wm*ªŠaåïøEå¥`œùZ
Ê¢üwˆ¡~Ø¨ü«¾èÕ÷½Ê˜÷>OøáU~•Yšé}}/z"ê!’ixœm»JA†1‹U[mŠb ,3;›™ÝhÀ(Š ‚(C˜	nv%±°³±V>…­Oa#>„­½koÁi~æÌ¾3ç˜»Ÿ©›ŽR€©ð<¥µšúR9¥@c7ðå˜pMf8%M­sÞQ‘å\¢LàÔhíHAÄÇ÷™ç”¤Ç<PwrŒ w¬g<¯œê^CÆ½(Œ¹\-XÖNë
Úªwú*~:î@#õº½–iÆxÔ~Ó¶¬J%ÅÒJv·«‡p|rpP=ª•Çåä0³0…’ü|öóv›).“¢‡}£ºÀÃ0Ü(ùMùê{É{„Ýj*q¦$0T¤Ô5NÚSJÖ²Ã!7Y3Ô÷ìõÎè-=AÐ•‹¨OI~m«Ñe[Ù¢Œe…Üwö]”<æ–†È×Üâ&F…ÆïoW÷&—a¤Ò­¨eT˜æwM~â¨åí¡Þõi¬oy{öO+Ó—Þ0•là‚xœ]PËJÃ@%iDH7®º-b»h™™dÒ™b¡-ˆÅ…P(ó
k”&»÷JÀïpÓŸp)è'¸öL›¦bïæžû8—sîkùÝ$­ä”Q,[$”D
:!E5Æ^–s<ÌC=a?ò‰Ž \NfÐ£”9J3(°f¡‡˜bÍUFWŠp8¸%Ù<=]¥ãÝXËa¬£Ô0*µ%Oá°iÛ¾Ïèø>8ïW Óë×·íu;ík^Œf•!Ä,Ñ1àãñƒä‰VzAø4pN(›•½ÿ#lvòÑÌ<Lf+/~Ì“eq¶V‘…˜øìB¸6X«V MïuS¶±‹HýOõf1‚Ó·ÒQ~õ«Tmáú¶ºlÿ²\l»ÌÏ(Ž¢Q¢Snì# 2‡wñæVñ‡,
ðm5¶Œ‚é/êc~~“5xœuQËn£@¼ó#íÑJ<€a`•¬ÆØ˜ømñ%š5/Ûùú%‰ö¶ÛRª«ª[êjçÀ@˜S1ˆ’	!$†
U©JˆÁ(äš1S¤^6€`brEG\£X6MªšX!*Ò4¬ÅŒ™úˆ!‚ÿêõ‘Lz›ŠŠ ëåÈD½Afô‡D1EH©„Û&­ðyÖ¤Àn/4O§OðH>ÁKV6<¤UñÈš¬+ú!<@¡ÔO‹¬i¸ Ó¬™µ<••àu~Iú-ù-©“K–€‡Ï²'So	ÖÓ5ØyÓ¥µ¶“¯¹$p½ØÔ¶,{lY{3Ço®ìŒ·¶Òß£U§
ïjYlæyÖtÂaçÑÊ<©^c:?	–J ÑBmâæû‰Œî÷î ®å*åd‘qÃD¶X=×=µÆåèè¡våf´÷KÑøÓM ÿv–;	Ôu‰¸³¨ã»qÏûàÖ5WÕ;ø‹ã°ÔÃŽ_wÓÎg5ÏuW«•6HViTû·Ãt/¹pCõ¢4e!êSkívÈéº©{¾dd-ÙÍqn=ÒçÈGÑ<qßj;«!_(d4SöÊrêÝS_Žæƒ»<Ù¾ž‡ÁÞæ‡sh/Úà6®{_/3ˆ=/9nã{º¸÷Èý1Y§¾í,üd°ØvB—µA~[˜“``ùø‘ÜEå¦x­®éî¶=¾¶þáÕ›kð,guxcÒwf“¥óïÄ¤	u›ç@ðsË/ø¡ ˆEU€"+¯U•ÃN~Ô‡).YÎß¹•xû.pžWT’Ê®à4Ï~ÌøâÁ—8+Ð1ÎòVpPÅàÛõ•î	–”xœO1NÄ0ìýŠíQ¢ØŽä„Í‚¬íubÛÈñÝ‰ß< Qíîhfv¦"Â©Þ+#¥4½$Z“Œm¯¬ÃÁÚž}b¡TÁu£å#Iå¸ð°\£@/&ßËQi=è‰:ÅÍÀðR×\`é–3¼DxŒ÷µ±ut}^"†­µ9>W\ó±×j‚‡nê:v 1ÔJÿ”³tÔØ-œ *å²br[Høã@ð‡üR²‡ˆÛ–-c3~„
…ê¥$8¿¾Íçn+¥_ÊLVûÝ‚ÜB]aÏ‘~±HûŽµŒ½‡%‘k²÷ù:ý¥û$ˆM4xœuRËn£@¼ó#íÑJ€aÃ*Y0~Æ;¾D03<ll0¯|ý’"ía·OÝÕ]%µªxÉ0ÆˆB2F².ª©Lb:RaÄ´*É¡Œd‚¡Jvå@Ó„T’€QIB‚"Eˆt&JWbß÷iQD!¢u+êR¬†ªÈXRp@UUUT(5Oò¸,å	0ëŠ$àáü9Ü‡ŸÃSzå,»'ùåÇ²
„šî$M’„½¤œ³X)·ë<\ó’YÿuøZ\ÄUƒ»Ï2'–³kk¶Žµ4¼Ýëä. ´•ILÃ0ŸccnfÁ›á'Ï¯¦«%'´j”ÒiƒÚŽcLíúe„'I˜5Tžl$oÚÊÞ>@Ð7™£ã•}¤fçÍ)TD_íçmgö"‹²|¼8c›óU ÒYg[ÕÖÞ·Ú­Ñ	 KVY)FtøîóxÕ¯ñîMÌ•ÛÇ¸‰Ì>ÜÏˆ#N¸OÖ‹7dÏÑ³(fx·Ov7ç‘ ÁCÔ×ScçžØÙw.Ó“—²´™b<mC#§Ãn::)ëxùö°ƒq#ö®¨GÄ ßWvëªFWbtœv¢>º¾t=-::¥^;.¨qÙïX&rwØO7œÉq½(vƒÂlA‹“Ïa+Îg‡²eÍu[Ü,Úæxn™—¤þ<÷ö,/O¡K±¤PV6ºŠõÄàäQ Øô‰ðåÙdùòoÇ„+cŠ:Ë@Én5«8ø5¢2¿€-É9ïÍ f¥˜^ŠŒ]† ¾é^öŠ \›»#Yú8ß{³¿nÞ³<þ“ïPŒü¹W	Z’xœ•Î]jÃ0ÀñwŸBHÕNJ£o{îŠ?ä,ÇÁu½ýØ¶Ç¿à'©f°ã8RPþDrBŒfä‰´Šlœ<I'IúÑŠÝÞ*c‰tpÞr@cRIyEË¶©YdaŸõ;¸ù\+\í“\GôîˆÏe«¼ö>§'©•D£:4ˆ¢MÓR+ÿƒJ~¹Ø^‰;¿.gøJûÊéx|æzo¤E-ïûšgˆ%'ý ½·eÞ8t9ÆÎ½Ï¹,~ bf‰™5xœuRMo›@¼ó+Vê1JÂÂÂBÕVY°ñW°c;q.Ñ»°˜//®ýëë´ê­}zzÒŒæÍeFIÆ M!MO¨nXÈLcfsÌíØ1MBf0lYØÂk-•¬V F‚a›²ém±ƒRÓÁˆRK‡8v¡Ë‘ûWŸ¸ib9Ô„ØI¨Ã©‰–˜ÈÅ[0±\d³ÔÒ-]£½Ê	æL¨x}—äàÛñ<ÄŸàIÔŠ•ISý Ð‚¶tW‡à^Çº®ÝØJ(Å$„šö1øV7’µåå)»ôñÞ²6ëDî?Çá
DA^Â`E¶»Íø7¯œ;/ññ|BÖÞzF„Lü7ÇyžS†gBÒi’¹wU‘–£ç—.³·Í{7ÀFùÔXŽ«ÉÉ|;ÛÃëfÆ|ÿçPxËæ}JÖóy^ãaæ{~Õ‡Cì¦©º+¼.ÚE%Ô@à¯M;-·Ñ[C"(Gaë·jÕÉi±½l‹>žˆ‹cÍH´¨%¿Ùõw(ØžêL-'v«Ëëb·†<ëx¼OìŠVom‚,æãj·“º9½lç³ÍtœÔ4*‹}xÎÞÝ*È©ï´î:¾‰ü¾
ZëÝ¹U=£ƒÑEÇpÌGQ·£ÄKå1qwæõ£ÇrÁ÷¿°ýËõçÚ<i ½šGF—ŠWó"|Aq_`à«M×K>Z›Hßªó}s~3ôhÏ6‡Ãx[ï&nQ†»ïøþ,ìJû“Ùx5úwbÚ’ÉŒ¶/K Ù©g_Œ—M*QŸ›FT|°û6¥Š}”õPiÚí°û¤_Á'þ
–ôÈ€P7ÕË0)oíU}Î9«•YÒÔ\d·¾wp*Êî‡S7•xœÍJÅ0„÷yŠ³Tä–$ýMqëâ®t/irÒ›DÒ´ßÞ´PWân8Ì|s&ED(eÅË–UMÛpUN…Ò¬‘%eÕ‚!«j%x7OÑ'Ð´S¬Ã²ÖŒÊUöri¸0UÙÕM¦¤5Z"×4…Wëo!À‹ƒGwÈÂºBãö<:içB÷¬f§¼mx ‚R’¯Î¦„ÿŒ¿9¼¨Ùö0gÙÃU~ ØÓ=`Œù³%É´.p›ÐƒŒ£
ÞØñ=Ï\L†/„¼Mxf69¯Áü¶ÞÝÃ2…uÖ0œ^Ô`Í^wP
r´ïÀ¾Kz½œÐ£ûÇH^í˜Ó—`Ìeøêÿ2ž|˜Ì“—xœ±nÃ Ew¾âý@À6à(ªÚ]©•<V0<bT, Qû÷µ¥N™2ž+§woIˆÀå Uƒ®Q-RZZ3ê˜í¨”umœ¤Q3š,:a(`©2LaÝZÆå†	ÍµãkjÕ
!E‡´eƒ$úZÆ˜ 7±8é+&8æªaƒg
N•‰ó°–	ÆÅ(ì¨¤”¬éìKY•7ôe„Ó5›ŽßTÃ÷:o¨èÄ¿NÂmÆýƒé /ÖÂLñçþcîßÁyœl—â¬ª!/héý% ÝEçvÃïá‘×Éç«ÿAë8z‹Ù$¿C,äuq)_÷·èEþ ù.…•‘5xœu‘Ko›@…÷üŠ‘º¬Ï¨Úª€›Ø1Æqê¸‹Œ1Ã+¿¾v«nªö.®tŽ¾sïâ(É9°´˜¶@‘›Œp‹Å,Žm‚lL)±Î¡VG’—
èŒ`‚"ƒè&2B„0Æ0‡ÔÆH×¹éâOØ2™ePŒ!"	¹‚†E¯;ÁÂ¼Â„œØ”iQ«N•Kž©pÛ&>ÏùMÜ³›ø–•Š_îãªø
®Mu‚-p)„ÚÕ-2¥¸óL-Z>—•äõeü–^´ì?±´N›,w·qgs6óxöçkg÷²ýò5 ¾qc×q\ÏqB7|Œ^ç›ÊÛºKz:ëAG¤ß;N²ð}gµ:?‰É8ÌÝŸ<‚kÀ]…‹Ã«ùoÝàOr·œô„Ñ ýxpÌ­…Úï©‡0:Ù\ˆÙï,²<ÖK]ó@…J-ª"J‹—ü=Bï©Ã¢ÙH•÷ÓmŒ–Cå0ÌgÆ¤ŸbËFÌØ:{^¨Î8€ãTj•'i1é) zÛ™È_§k3oöhóWç=÷XNdäÇKÝCó<œÓGœû.`‰Â÷vqI‚gÔaã<dº«`_yÔ*‹b²×£q=,f}ÌÙ|õ]OýxæœéNnŠ|1FÃGx…zFË¹uÕó6'®x^/Å’UçÍù¼w’í–rµ9øT	ly/ëÎ=©ÉÅ,ô/ø²ŠPªýîl¶žþ»1í‰Ë”ƒº½\€äo-oø€MY ÈÊ¾ª²bÒ¡{s"²á¨Æº:få1åê(x¤ZÉêÒ´²+ø]|É>›n>+n8ÈJð7þiÃ™ xœËjÃ0E÷úŠÙÉ²“(”P(ºÈªÝ=F±ˆÁ‘ãúï+;ù€R­fF÷Þ9Ra§¨0ÔtÂ2)ôFqÜ)ÝQ«´œ‰f»åV·HÉU3´Š7œÉŽ·Ö1Æº­å\)Õ ÝŠ†µ-ZËYk‰sŸ8º8¥Ÿ^ÃZÖ.Ôïoç ¯u
(A`‚¶¼PA))ÓàrÆÚI¼¬´w{ÈxË·=X÷y¾&pÎ˜Oe<-×„¼—uËÛd4`Ç¨³K¢øðLÎ{0n@ýZ_*0I«kêîÉ*RXÒ#2£5ÃQ^Ð:5!O‚xwÁ¢ôiª	”Ãjø~¢=±Š¤P/ƒÜ—DŸ”ô OS—ìh0§a†ê°6riùrçˆ¦JÖVjÞÿåÉ/Ý©Ý›4xœu’Ûn›@†ïyŠ•zi9–…%j« &'>àÄ&ÎM´'05'/c?}T½kçfôÏ|3iþV
0çBdpŒm˜è‰¡!›XzÂ©©aÈ„¡&‰¥ÔDŠ²\…*¡0bƒQŒ „¶aQ“Ý lYLØˆ¨úË3AÝT9CêBc‚%ˆ&8a‰qË0A–JˆBºöPIð$²ö Ü®aðýø)îè§xÈÊVäw¬*~ièv-Ö«–ª*·j‘µ­ ÈÚYGÁ÷²’¢Î/émAGÿ3–Öi“¥`ü®„K°Öà%–ÎëvãÕ €sã2×q\Ïq"7š“Xn\oã>Y‡_Æª‡2<;Ÿ…¡3%ƒnž£ bçtÖòÊ^L®»T× ÄhõR9¦%¯§ÍHŽŒµ·äžß»Ø£•—¿[Yí6Ã³G&þQ×›}§ápÅ
p:Z’6Ž«Sé¶»Ùš–è
Òt'<¼ö«yµòí‘
õ÷½­é>¦’žvó¾|*OKÝ?G/Ï;±Èör¯ÖV
^?)ÓØ?Ò·ú˜­Òí¹ˆU’]N;xöfºðÎÈÛÐT€Qà’,ŽNç¯4ì•âH—«	¯ÑaäŠp*×Öë«½^ùðIó.ePßó¸ÈßÔÇ°Ùj
€õ…®_	ïÛèÉš?›uúf1Þ-ßý*O–líúq†YZ³\ôÃe°®þhÄó<HÒ
ø1­ˆ­üù™¿œþûcÊBÈT€ºËs Å©M¾é¦Y ÈÊsUeÅ¤×îÌÉ—¯>š‚Èö#¯ÒÂ¹¢”}!Æ,ÏîÁWû$Ù ¾˜ñßÀ+Ö7‡“6«ÊßÐE	Ö™xœPËNÄ0¼ç+|g[ÒnÛB\9pB|€›8mDUêî.Ov98 ì‹=ÒŒ=Ã‰ÚJËAÖýa¬ºq¨{]ÒÕž¤VêÐb#q¬ŒX0Q`À¶Õ¦¯ûNvF*êÙìQ:¥Æ¦ÑC_·”Y²¸ñ¼ØpŽž=<øÛXZ_j:=M­+UôPµUÛwun¸ËÏH‘Qo™éŸtNž
åìl`rG0ö«ÇÄ…‹SZƒŽjóÙ²A¶¾ˆŽÞWkaÆ-11iàùKå‡ÀLnm¡´‚IÑƒÇSš¨âmÑÈtEv0³w;Àµ.üý.p‹gˆ/C40RÞodN) WyuôÛB¼Ú).¢1ÅøqüK`âÑ¦W™5xœuRÉ’¢JÝóñ–F•$$SG÷‹K‘-Ë¡6äÀPŒ&	¨_ÿ´:Þ®ûîÎpÏæÁf!ÔQ)¶t¨kš‚UQ4C$:¼“”Ú˜³Z éª˜É	FÄ4‰	õ„ÈTUË‚#™B…ÊHþß/k÷#QL¬ÆX£È4˜bASKÅ–¡Â™aJq/²†ƒËEœ¾#ø^<À3~€Ÿy-XùLšê_ 5¨™–jX
x’Y–îl•Á8ps±ì1ø^7œµåõgzèñ_ÞÒ6íò<=Î™»ÞlÝ-ˆ<wcïÞÂù/	ŒCÛvf¶8Á¯øÀƒt:+#ûD¯ƒÊ½Ñ¶éÒóì¿ÞÐ4æÉaïËW‘^JjLM	x5[û¨žÜÿ ,ÞêÝ˜µ>º§4êQ,ôm¶v?I¸8›æ»+Âz%üñÈ<ŸÍÛÜnˆÐ±u.Z6å­¨v3¹Õ¶/¤;Wîæ¸˜¾í6<Qµt»œnªË€¯Q˜6‰_§}ÁÈ’ÀKždùû‚üú%ùYíÞ²[ìWoã÷³†”AÜ
œvÊ.ëÞ‰y¡Ã÷‡«ï$YG%~¶3K?¯áNä5³Æ9>²^ð—ÃU§u8Y–ê¥þušã“{5‚‰Þ„“!Š"·Gh¨ˆ"ŸÜ0[PÏôÞ‰r¢Ÿ#vJao÷“£pÍW’_ŽK'›LÍiSÝ¬c²*¼ÓÚÖÒù	ü ëj#ýîl¾yùscÒšñ”¶/KÀÙ¹g ÿ(º
ÞT Êë±iòj:Àg}úµ«˜ÒÎDÏë„JR=Tì‰”ù7ð%wŒ‘$÷‘&ÄÉcnMËj šß.ð˜a\Óî?sÎ½žxœ1nÃ0Ew‚{aC±-É6‚¢k‡L=LRŽK
ÙAo_§A;Ý‚ïñÿ’™UÏÄxÐ’¥SªuØ)I8 l¤Ažzåì¤#®6s,`•"g£¥vÙ²k-õqê:L£±—°k9§'ï)Á{€cøkjâímÖ/5¦ð
uPF·Öð")Å¾¾þ'.â¸ÂÅàcáeKxf¼€Û39ëötå%=¯àñÕFº	q²_ sYs„È³-~càœw|³ËÊp?ï¬ó?-þnOÄôë?¾Zˆ?G¦*9WMŸã_Z‰/\†¾ž5xœu’K“¢H…÷üŠ1ËŠ*HIèèžh | ŠJi¹© !!±x“ å¯oubv3wwN|÷ÞÅ9¢aô+˜…4`r!UX"Ë‘ª3dhˆÊ:FëR4¬ a%&:Á4@8ÐèXcª¤%Žb‡É„PEù—§XV	Š5¬G$Ðc¤
cÌ Q‰v{DcC¥jH¤ ¼l`ÉRÁÁêÚÃÏ¯»x¡wñ;-Ë^Â2ÿä±<Ö•Ïˆ $ÝÜ<‚50KÅ¼£ð³(Veß¿“ÛŽþÏZR%mšÀó}¬ÉÌqa3ÛÀÎ™¹æÞßN¾\Z+´LÓ²MÓ³¼Eph¼¥½µ–„ŸñºWçbšÑÜqÌé,Ý7§v©L1„>¿Tõ¥N$X¨o[gÂöªX^Ÿ­ê—ã·žyóÐFåœò§/ÒÓ‰ív[{lN½8,¨ãboýq¢l«}<i]>ÊéëH[6žM;ÝþÛjí|å×?<¥ûÃ«#N4&¾vØGÑÕŽö3™:ï­Ùè¬µÆJÖ•óölÙ[îî¦?})tsR3­T8·ý~>Ô%¦ÃM{°OÑvuÅo³±®î©þ0ýÎtŽ×n:SWh÷¤F×ZþÛ÷c®´ßõÈ-»)r¿9dn4ÆüÛ/$ˆ]ZÉÎ\ÄÙ?¬öë¨ìx>Î¼Åd¹ZÔ3~Z^ä¦ëo¦}¥ç‰³Nƒá}¨¸ê[
þ%Á¯úmJÿd6q_ÿ;1é5	ƒªË2hXÝ±VÀ_Š†!nÊò´¸”ešzùE=zõDÑgX­øågÄÚP’Š>gÏa–þ€òn<%Ü™&­Dz3 Œ¡íè½…AAùpÿ ¹T¶ŸxœŽKNÄ0D÷>EïQ"'ñ7B–,Xq»»=XŠíQâÄíæÀ®ôTOU}gJÊ±#Å!ðœ,’1iRÑ»…8 N6jËÒÏâv®‚Ö”ìl4I"[/ÕÈÄ¨y;kFtR‰pém‡·\?[ƒ×åÇ\Fâëó©„¼ØÊLzÒÖ,f±ð ½”âFKîÿ©‹z-<à–WÈµó¶B lõèÐ¸çsÏ7 -Áq‰?ƒ¡´;âåOýQˆ÷|ªLCKiˆ_ëon‹o¿*}N”5xœuRÛn£0}ç+,ícÕ›ûª]rrOB›—
csKÀìäë—nµo»£ÑHs4g¤™sxC)€‰cl$4&jdaÍ0UZ2aŒ"„4DpŸ
’ê¨¡P%T5S™ª‚,¢CÃˆPŒuhbÅ0µ$2áßyÍ=–-CSŽ´’¾ÈšªèP!‰†q¿ÐŒ‰%E‚g¬3šó8¢3ð|üjžðWóšWœžžbVþPƒši)†*ƒGÙe©GËœsÚ 7çžÀà¹b­O·×´_ ðhi¶y
¿Â»þ¬Ý5xóÝ¥½¶ã?¸$ÐµNìØ¶3´í³™Fa³n‡[gfd…ºº(ßÙ6ñ|ßA†*Ü8‚ÍÆËu€§pq•À–oS¹Áu^ŽK5¿= ´º–º
®ó7¯ÝiÝ}~¼óPœ-/*‚ý¶)
k‡èN,÷(ùyrT÷óÁ”âè­àî:ÉnŠ9ÝµJ1:§”ZÛr@ûËFòé|ÖÆ2šÇ©ØÜx—kg	Ä÷i…#Œ<3©â­²;¤355Þ‹É¸àÞ½„Ö’	ç²[lŒýP”Á2xÏW[†2)*	T‹Ðæ(ÍS¢pÞÝºuy6½ûánªÅL’ûí™/ÇÖùš[Æûd@üáÊ?ŽPíÿ€Ö]º1Éý ¾í¯ÞæMÄš¿ºìTVø¼.Óµ.Ú¨ÑÓaºõˆN‚ÛÇ‡îjeeTþd’¾Hà%F#é[³ñrôoÅ¤mR
jq:†žm9øt$+A™Wcy9¸À'}@“Þû¼ý<±ôSÔ$âT’ªKIãSþD„€VÔ5k8Hz{²šç¬jgà›øØóú	üeÁ¨"¿ÑÓ|•xœ½nÄ „{žbûüsÀ)Š’2Eª(°ÀrF2`Ùø.÷öñ]Š”‰ÒFßÌÎÖ…Pbß¹Ã€ƒR½ëC'…'aÌ @m\ë;Ô­lÆ…rÝyZƒ$µ×JXíÊj´Ò9;8oºÎ¥Z†[Ëo1_J×é.›˜OççSÂ85®¤'ƒtªƒa„`»›b­ôÏ8ËçDÜMñÛì±øâ¶´ÏÇK†€B WW>•c¿C°nö¶
³‡K¬#xZÝçºî,+wÙÀË´@ï3Ð'¦y¢[ç^¸—+|³PÔñçlÃØ{<eò¼„Àíõø—çÙ‹Î•ÛŸxœ‘=nÃ0…w‚{+Cq$ÙÒ ÝÚ¡SO ÊQaI†-'ÃWN³(Ê‰à{IyBl·›®k[©x‹FIi•æ(jËDc¥FnXíÈ¨&Œ”Ö5u#™tÌ`Ó1¾U¶•ÆhÎm×Ôi'jÉÇ4Á§ç”à#À>ÜÒÊ‡ÊâéµÊ•Iá ±-—LÔðÄ:ÆH©Ÿ3þ'ñšÁï@Yó2ŽiÊàÊ:iÌ>ÅrtMžéúbÑëL-!oC:¯àC¶"P‚Ò´äqÉ´ÀAå—½ùð4Á-[-qU†ë÷œâUû¨¦Ë<.¥P•X ÷»0©3ýu–¢&äË÷-MÎQ}ÙýåLäd–Ÿ‘6xœu’ËS£@‡ïüSµÇ”òfK·Ä1¨1š‹5/^&Äüõ›hím·oÝýõwùu/9”d"gØæLw)6m9w	áˆ!fŽL3e‡%o{@ué£:Ä§%¤”P+331Ò4F •Ù.40ûË›œÚ˜CDOXÆtYØvÛÊtæ”`ƒ[R“)xè!ÁŒ—}ü¡£¸Þž›KrnnË¶çõ%Ío Û'k:jšrš6eßs	¦eÿ0pÝ
Éwõ×m~ä?gù.ïÊ\œË§QÓxŽ¦‰÷²z
¿ç
PÀ¾ó©ïy~àyKãµL‡àÉŸÁ¢²ÒÑ”ÑÞóØCyQ7òõ>LËå"Ù,7–´ÂièÖ
XàÃ¸ºo¬÷fžòÉ²úZ¼¶4:T¤x
ôÎðŠÈy™ÎËCmmF¡'i=A¤ç%WÕ×u?( w>WK²3à¦Ø¬Yø[ÆØh8$÷cz'WÂW'F;ÔÎÄÓ0qr>gºŸ¿Ð¡È
H‘°ó&Íéc¨U|—Tw¯zõ¹Y•m'ÂcQi{ç1KÄæáiâçÚÒ4ì’ƒ¿6)««Œnƒä¡Év?‰G/¾¿oÖÈlrµEÍÌ]xçê›þzL¶ÞÐÆH 7æã¼:`•¶*ú2'#Z~Aý´0æk˜­šÈØÄxf	œkµéÇÏÑlõ†Ž‰iËF»QÀMÛN
å'³0¹ûwbÊœËœƒÝP×@òÏw=øe8dR4 )Û½e£Žú¥£JÞˆ‘´]É>ÊöƒK)äG-rEiÇ†_Ðº¼ýIÐ]œQpzoÜðóË•-ÀßÅ"ßŠ‹“â‹8xœÍNÄ Çï<ÅÜM+m¡-c¼zð¢¾À Ã–¤€vußÞÖÄ£z›Læÿñ›š‰@¢8¡ê•å¦ãÐé^iÝÏJvDœK1ÌN{ÁL±JiÝÔO#74).´óhŒÂª©—dÌÌÃS]R†_S‚û 7ácl}h-ïŽýÚšn¡“œÇ^Í#\qÅ9Û¶Á×Jÿ”³xÔ˜Õ R©å ™B:Äâ-l h7÷ðãÂ`!H(ç”›5{ü£ÊIïµ1Ú–±çÅ—²h¢øÕÃ‚¾l>Ÿ” fç¬Ð"Ô… `Ù%:c4Û"VOoÍŽtýÍµ%<ùc$Û$ç}9üæOìØª¢ð•3xœu’I“Û6„ïü¨ÊqÊ‚‘²S&4”DmÔ.ÍÜ@àq‘¸Q–½5Iå–¼[wõû.ÝF ÔÅà0
®H˜ô	0ðl…™D	Œ‡ \—*%•Õ
µAÂuUJ1õl/µ%PfG(ß“2!D1Š]Ò·É¿y_Â0ÁJ¥Œ9Ž Àµí+GI*SÉl†½!NSKÜLÞh4‡Âäˆß:™£o×Oñ5ù?ŠÚ@ùU6Õ_hè]ŸaFúbSÛ¶žnUM
3½%è[ÝhhËÇì	¸%ÿó–µYWdèËçñp­Ðz²F»h²
ö‡mø·o!Ý;.yðQløf&Núu3Úò9Í/$îÝƒ@M£(åõ£ºŸY6w’±¼žŠgÎ^c¡}‹
²Ú…îƒà')úãã~OÖf™óÝ||qn*¬€oG¿ àë¥Ô%¿ã_nü3'šÌÚÜsø<Ø&‡QÞÇÞì|8ðÓ.œîtD<?JÌ†¼eâ”Ó®„E^¿OÞ¢Íû•§a5´m}Géèø¢Ç;ÉßÎäx^f•QÇé‹iÒ8Lr3¼¾®_÷—®¦¸Q¼$^yo!¯JæZ(¬Wƒóu¯Ù¾8){QøñóbÆl¶Y-§¸™@³Oün;Þc6[ôI{Ù~L-ô²¿,y¢±M…®é€XY~„§¾ÜÒÇÃÉD}àÎKÇþüæëºòÊA`·}œÕž~l¾[èûêpWÖ?…«×ÿnÌZ‚Î µ·²D>nÐôÇsg(ÕM….¢/²¦T¢{NÆ²Ê"ËMÝW"¨ER2êÀ xšñD$5S4õoqÿÕ›"xœ•PANÃ0¼û{A#'µ“¦B	$$.­ÔlìMcêØ‘ã¤Ðßð>†[õÆ«ÕŽfgv'"heAËº"‰M­V‚j*¹.j…BcQä¤¥¬´VšÈE@)u[UÉË–+ªj.–¨W¥Rº®
IJ­¸`8ÅÎxÃÙP€WïNß_–Nðð~Až”£‹Í˜)ß?B.y½,W¢¬àŽçœ³„ö&Fú‡B.+™!¯
Ìš}ÝÜ¯6– z)ÂfÞAÄ°Oƒ
„ÑxÇØævh­?ž÷4µÆ%…ŽÀÏCð³n6ÛÛvÆ)JÊ,¥„ÐáÚRL?`j‰z&`?XÓuµ˜F
#(tà‡hzsº¸°Íón÷ué×c›*Á&ÀÑ‡ƒõ¨ÇŒ±Ý4>$w¹ì@Á‘½¸7D¦aŒéœžô™!²¼L+fïH/|Û.šÏõÃe?²ê»‚‘6xœu’K“š@…÷üŠ®ÊÒrlž©$PFEGGãÆjú(ÐØ€(¿>Î¤²Kîîœ{¿»9§‘ŒD‡b`ÝÖ-êð„SN3–XÈ†:ÖŒ„«„+–¬l å·¨s•2›ŽmiˆXP%:¶tS…Håv¢ãäï½ŠÔ›#ôøfXTÇ†-”P1ÛÖ ±lSsMÁmsD,kŽÀkkrßÎâ)ù?³²aùÅ šª‰ åèB¡òp‹¬i˜AÖLÛ|+…dU~ÿ™>´É°´Jë,Ãñü œƒ8ˆÁ[ÌÝõfåú
P@W{Äs]oìºKoù‚ßÇ+/BÇ“±¸ê2ì\—NÃÐu£°
û—ã|]ëKz^jõ½-P¾e¨‡RæãÚªRŠí½;cÑF…CO›¥‡’FŽ½ý¤»…÷íë—“q~ÅDNV
°0aîyáÝ[ÿüÊÎf¬¡[+FÈòK¿Óf9év£ÙTûÕnâõ"Añ¢yÎz3M
È	ÔûK¬þ:úÛxmÛ¾ôÙôÞoüÛ{á–Û#­p¤
t×|˜3wž5»åf‰SPL>›G¿d·´ÞölfœdìÄžÊ§Ah²íuæÙaòþ>m¯ùj}Ô:Nûùšv²v·ËJvu{£ý)ì^Î%Ø…ì‰wÑ@»ôsxrP¸YE°ÇæÛ…¯¼÷õþ5OÃ|PÃ×ÚZ~WÀw¶šsåOfþ|òïÄ”“)U›ç@²KËê|ÑLp)
Pde'DVŒ®ê“5úìÕ¡.°l¹H˜ÒäÐV7LQÊkÁ†$Ï¾‚ÏË¯àÏ|Ã1|à£¸¤àA¶Å£÷¸ÉDùƒÔ7“%xœQÉNÃ0½û+Fâ©ìlm*„¸ö€„„ø ''^B<nÄßãÀ¡À©âæ±ßê¡x]í«¦¯•êÔ …¨öº¯k½oU]Ö­àX†¶6Ë=A_ö•Ð\×ªÒµ¢ëvm‡mÓa34b(¹ï™L4…žŒ_C€“ƒ{÷uÜ·Sx~4v7÷ ¢MËKÁ;¸åç,ß:C„ÿ¤3vXÖÁxB{„4+IÑÉ…
ÆB*›‹ô
T’ËÝ$™à{½›Õ¿`¶iÌÃjhb!Ñœ¨Ðaq’ ›t¸UQ‡ÅÌqÇØÉÃ˜Ñ©cB¸ûæÈ¸"X|‹ÆÀ‚sXÐ”u~°#ýÇeBD0n¶xI·Ê9{VÈÑž“µYò=a¤Íì°=3èùÕ-G|1£GU­‹þãxÍ*Ø'ÃîÈ—™3xœu’Ks£:…÷ü
UÝe*±@AjæÖ ì ~$øÇ›)	–yøõëÇž©ÙÝÛ«>_÷éÍé®˜ºa3Ôub™ÌæÄ2ÑíTèŒ „äÁÔÐjÖÕƒp~÷$X·Ç@\g\1´bÎ¡™ÜGÄ$1ü»Ï9I,†0ÂÄrx"pŒÁw"5tÓtlÇb"ÕXßí«L„ìö€öm¼ßò‡xáñCªN/qUþt¬c-ÇÐÁ3$jwZÊ®ðeô|SU#êâú#»èùÿØ²:kežEG~ø"?ËÐwWëÅè7×€Î-©ëRÏuçt>f§ª½ýÁü8¡&<»n„¡K£úºñln|å»™¼;iKÆ›µÊ6."ËW×1Ý•‹-_Ý?U×Û[Èà¥¹6âaÐÈÅAèAê“Î˜špG½Y"D8é”ÔñpvÜµ^¶”Èx±;Û8ªÊ&e£ã$Ø¸›ÈœÚ/¤U„o·n½ëi`8ïMÛ?Ëlµÿ¨üÐXÌ_n$?(‰&‡*ŸœêÕv[íbÏtÖ“ÛU-Ôfø4ZF´œëÈÖ :}êã\ÑñÀ'ìT¹¼¼|Ù0fR]ö˜¢2e=½¾.Îf¶ºÐ|}&Öñ­¾‘DÅøt<8ÌËbv¢6ÕœÐÒ
gé–J4<,ß”°A—ìVÓüb<•gŽ½Ïn9´¬›Z»ß5ð}–ÊOíOf£÷á'¦ÍD“	P÷EqìEÛlƒ´©JPJu®*YNú‹5(Ô©ü)“ŸªÕ´{+žãB¾‚}}°N Õ>Ë´=üSÉ/	àþ›xœ•‘±nÃ0Dw}÷Â†åØ–E»µC¦~@@‹T,Ä’KNÐ¿¯dèÖv;|wà1/Ì C¨¨ÝYÆ¡3®Ý)%-ÕªïM'%J‹}/f\8d@m°EcëÎêmq`…;ÓhVT5½ªZ9XÃDµÀ5qƒ×áÃÃ³¿ËÒù’øòzòè¦ÒDÿ²•m«UÓ´ðTéªÛÔ»œù_¸ªš.ÂÅsa&·‡i“{@"W¡X	‡‰a^Üv‹Ç9BH…#HëpËÆ@B¼ýïÔñÑÞ3KQ¼Cœ³‹F$˜¬‰	B¼Ž¼p	<3¸sLÉÝÜ7Ã´}ÄÈ£K˜RˆOw
LE´¶¾ö©D|ÈvœŠxœ•ÁnÃ Dï|ÅÞ«XØl¬ªêµ‡œú‹ÙMPD”8êß—T=õÔ^F£Y½ÕL-D †Ù(”rNI3Íè¬ô=^O£±£D7FšQ\±Pª`gf¯\o{9÷n°fU«gÅLi&œ{tÚ¼Õs.péž3¼ExŽß¶±ó´¿ž"†­[s|^÷ZÛiÔž¤•R´4†Zé_ø$Ç\¤=ÒaÝÂ[³ ÷°ži½ ·Jìùñ<_)=¤`9	qÄA¨P¨ÞJ‚D§vØ	¨”†í¸ÝîçÆpØèá¸U"ß	ñN‰ü!3Üçò—âÑÑ€’ xœ•P½nÃ ÞyŠÛ›X€cƒ£ªjÇò ÑÙ’ÈàTyûb«­:¶Ûéî¾ß<A×5VëVl--J\uRˆ^r%‘5ÄëFKb7œ)d¨=òƒVºîÔ\â
5š9×-¶½°\ª®g¸äkœáÝ…áäáÙocå|eèþ:ztS5Dÿ¢MÓ))jxâç¬l½Ë™þWœÁY¸{Ú“;ÂTÆ#Ìäã`	J	çØ8%zZ…¢…öÎ€ˆ±“gJdg0R,oæØ"LfùJ¾•ÖCˆr„ÛìJOqÉÌ…¢â1»6þ"•n8PÅÞ¦Ë?ÄP\%J…¬\6S°Ž«m™–~­ƒ©Ø9î¾³l·ß~¢TŒÝÈì£µûþqüK‰ì`®7xœ•Íj…0…÷yŠÙ%£Æ0RJ»ì¢«>A~&0‰hî•¾}m¡ûÛÝáp>_Ý™¡|g;BîõÎi-µ'ÍäzÅš0Œ¬Ø8±™sÛÙƒƒïÃ€ˆd‘i$±r
]'’´ÂÜêRvøˆù,Þ<§ßØÆÔz¾¿ÎÉÄµu%½ *TŠ4¢†'IRŠ«M±Vþ>Ò.ò=qãÖ8ÁzÅ	Œ÷p.±ò±Ç`¹žÌÎ²ûbž·Ç­Æ’…x»æ&?N@¸DóÑD%Àç¥^·â¸Ù“}+Ägœ3û¦„ÐØ¯é/ñ‡‡É’5xœuRÉn£@¼ó-ÍÑJhš††Q2
`°1Þ·8\¢†n–˜Í,çëÇÉhn3ïVõªžôTÕÖœÄ4E!Ö°Œ¹FdÂtDB\¦4 PSX…ŠÖ¼hŽ$¬b¬KB‰1S)T4åîFPFcEeRÄØ_=â$D².Gš¬3H
ŠÔ"!M‡$À”#®ËXh×&e<ž¶	0»&LÀÓù<_à%-Zž=†eþHŠ¤¨jH îlž¶-¯Á$m§] žŠ²æUv{‰ïºà?¶¸Š›4_cÚw	Ö“5Ø¹“¥±?lío^ è34Ã´ccnfô¨ØÚšI>ðê*×nolêº†³5·4šÔ‰¥4ªÒçOƒÄ¶ NŽA*}Ã¾ç¶{ÓÛ,Dæ6uîqÇNšó›í^oåý×=ZÉ›Kuõ•«úC,Hê
òVœl§²9öü";TÓÍr!6Éî0`üŠÏâ`)oáâäô-¶X½°¶´?×æp =À°h§%§²?Þú…¯M×¾QÝRãV¹·~ÙWo¹•Æê:Î‡a6MIr´7(ùHç‡A “ÖwŠÍhŒ§‚W|²O±K”íìÍ\âm§mf(r¦Ÿç¹&¦¸7$‘iz9O”ùzæ¼
 …‹ÎŸ/»Ùi´wñtå²qšù]yì|Ñ!õ.žÜìD]f+qtÖ¶Ìú7®iZñ³ ž»z!üÉÌ^Žÿ˜°àuÌAÕe¨ù¥ãM~ …€¨.s§E_–i.^¥GU¤Œ½Uó¥<cïmùÒJŠkÎÂ,ý	î{`®w H[ð­m	,cÂ²hë2Ëî­«yœ6÷úý˜ÆP“'xœQKkÜ0¾ëW{J	k,kåµC(Mzê!aa¡W£ÇÈØ’ä,ûï«u{HÛrfæ{ÍäˆBŒw¦•²í(ÓMm:*†qÁiƒHM£LG‚ˆè2ÈF2jjsÐÌ(¥½¤Ø·=¶¼G®8UM-h_K"Ö<ù/Ö]¼‡<.[YÙ¥Òøöm\„+å—¯@9eŒXÓÂ}Ý×5)ÝÅæŒŸ†sÞµÇcóNÜÛ‚{5Û‡OÃóéÒf0gÙÃ÷§(ïrôó\4"Ž61B^¾ ÐŠA
¨ÀÞ6ôªp£¸{ö>ÃIÄl³õÎk>æ/ï¨­Û¨½!°Wä©xÉ“M›Ù¥W•áæy"J„È+¨I¸Ñº‘ìTJƒK)¦A—e½{–!ÿŽ‹Òœü]@ˆ%˜ò‰ÿÎð{ts¢ç+\&t&ÙÛiûƒp.6O0­¥.}¡…œ±"älG‡zïÙËëÃg^E~8¨Ðg—6xœu’Ms¢@„ïüŠ©Úc*q`øÜJ¶„TD¢‰kD‡‡AÅ_¿š­Üvß[¿õt_º§P¢¨˜ B2#S‘jè¹®ª&¡:6õÜD:2Ý¢P‘ZÌi- $D'X†H%²ÔƒæðŠÝ|«š1•ô›·R3¥Ô41M-*[JšéÊÅ„
B”ØHeEÂ½Ø6¼ÑRlÓwd÷7ñÞÄï²”=¦údMÖ¨›H÷Ð€Pº~«RÊ_Š—>uÃiË†ßÅ5 Oÿc+Ú¢+p;Çóƒ)ˆü,j'ï±÷õ—€NCÛvÆ¶=wæ¯xiÕÉ8vÞŒíNN¶½í[á^ž,Vo=ìE¿{­çÈíÞ´çÃÁñÊ4-—®ñÜ[¦9$çe`‹çÅ:qpŸ…LVŠY´JX3JtÎ?dNºN+_°’?£ˆLÝÄ[–dì¼vŸA¦ÖNŸçÕQ}	é`½óE¨UÂ?#qyžŸ¢ºu$ Á'¯®uš¿W•YØñåÇÃÜ»Èìâ ÎÄÆZŸ²2gtå®ßÜY7ì‹•\°˜H·~°Ð‹	FwKû²Ë¹L(¼û<ÎÎáZôìÚ·œ,›„þDž:q«Ëãý›¼ÃŸ…î]ïµÃëÊÚIÐù¼–VÝÁó)ü¸´gÃ‹—J—‘nù,E³ð|iÞó}ó$§¤R¡ô·3oêþ»1iByAAÛ38=ô´à‡¢i çMª²>5MYŽòƒ>ÂY¶ép]ŠòB7¬)6»®©7-¿îM’êcEï	+‚+º¾m.@~ÝéM/ÚþKWX€&ßA÷× p[%®³?ÆáxœKNÄ0D÷>EïQ"¦“ô!X²`Å	üi£ØŽgœžaN€fWUÒSUµìÆi"ïQ›¨ûa"ƒvDÏã¤Héi±ÚK§QQÆS0ñ¤”"§˜â‰Ñ£òZZEÒ	{´ºÁ[*_µÂk†Ç|“}Ê}àËóœmZz_ó(Tˆâ@ð IJqMsjïÄE¹dîü’Î`C€ýX×º5ˆ×9Ÿ{-P¶7Ÿmƒa·%µôÃÝRgø+·%ñr7ÛñžæÂ¡«1vîûüŸâÙ6‚‰˜4xœu’I“¢@…ïüŠŠ˜£a[,EÁD÷D³¨­ ¸4.}1 (6Ù,@Ñ_?Ús›ÉÛ{ùeFd¼l¥ ‡’„RÈ+QEEñ¼€U!5Â<VdD1âjŸÑ²DD¬Pˆ"Š£ óÐ§Bâ0”EYUñùHöBdŒT‘ˆª@|E–$‰RBˆa(ŠRÈù]›TX4m wIÀëé)^‚§xOË–æ/¤*~ñC«!†{¸EÚ¶”iÚ~tx-+Fëüö?tÁÆâ:nÒŸ¥§3,§K°™MíÓ[¿}pàÚèD×4ÝÐ´•¾šû[µ(Œµná$“Ü‹ÈfWM?f3ÍX—ÍžÔ.rtèå6Ž®y¯q /Û°4É†FÐ®&fïUÝöN·#vÞ5ö2³õÛ¡4è*¿d„MYôwúœLM^@.Œ8PWeýéÎý$Õ_¶+Öµ³©`IFÅ¥î
Ù]Cºè…ÖMÇ·Øö~w9.Mµ©L¤…Áë—b[ÛýdŠÅËž³>±3ãË»G¹ÔÔêë´«Ôë'#^µÉÌ¿Ùm¹ù:è´Öf¨tÅAS¦ô«nÁŸRË™lÎšE&MRÛž'šÇ‘‡fûp=Áû2*î·x‘ß6˜ÅÈHFVìy·Ã`›ê¡ašõ²(ÌT«î½'tYÆœùÙû}:F–WUa¤yãÀ[rÈWÜŸÌÆŽùïÄ¸e1u—ç€ÑsG›ü"V HËkU¥ÅèÂ¿È#F‹êBe“†Ç´<RÆ*vÌ«˜ãÊKA‡$O‚õ7žxüµ_€´ßäðAþúI7•xœPKnÃ ÜsŠ·¯l¢¨Ê6‹®ª xÏ’ˆbG½}QPUÝæ#ÍL«D`¬™Í¤N:h?cp‹Fiª Wó‰ã"¹™ŒgW)7˜¸±Òz9+Ad"#–Ù…Ýê4yB)HsÃÜÞî¥Â[ÌÏRà–à’~àÓˆt\×äâ6†’^Ah¡µµz2ðÂ-ç¬³)¶FÿŒ³|$ÂÏ°?Ð5ªµÔa++`	{êC\‹%3öñ«ÏØîP)•#æògDè?¸D½ÛÈØ{\3áP–eð_ç¿”eß¥xÚ˜xœÎ»NÄ0…áÞO1=JdOâ\VÑPPÐÀø2–lÏÊñíÛxD÷ë“ŽtZ%‚A’ÑVâŒR“uSXœEmWkÑ„Ö“të0ˆ«©Th•2rïåPÏvõÁÍ#ZT‹‘rÒ¨Yaní“+¼ÅòÅ¯óoö1÷žŽç-›˜zÇù	”VZ/ˆ‹†¹J)NÍ±5úç\”#SçR¼À;e>n¥£}7õeB¤ä! Z¹v‰7!^~ò´À5›¹ÀÉp5AÜaKlM‚Æà¸´Ê)Qí…øˆ[!ßq½_þòW|ž,y=5xœuRÉr›@¼óS•£ËÖ0,©$@É¶6–¥‹k†ÁXû"éë#%•[ònÝ¯»ß¡_×p˜Uª˜†-MÕ`B æ¶TUµLd3ÛÔaÂ!Ô•Š4¼è U©†ð 3í #„lŠ¸mØÜÀ6Ç	F‰
	²!ý«ç”0®š:U5¦ë¦FtSŽ,Ã²‘®cJÍëNÇP!}—•xæ¢Ë€Û·I¾oàÞÀOQt<HJù Œ°	«àš*WVŠ®ãD7ë)øV”¯òóÏôÐÓÿØÒ*mE
îoãúÁ|	ÖÁ¼Îƒ¥Å¡ÿ›W€ÆÖM\Çq=ÇÙ¸›'òfKÇÝg3ûÔWƒÖÌGÇa³ùÜ	ž$"K[jÓn1nCè>vzºVÀÚ.ïškåv·º¨¥oš/96©-ÒJç9÷´»÷Of¿›/iÑÕ6ÝZ—Ë5¡Œý=³úÙëÈïŒ¥ÓlË²ncIÛç·ÁÝà2¯>êaÜŽ/ƒÛ]Ñ¤Ì|¯åtóÖžzl)Ä9‰&Ñ¶¼Üy/Þi!R/ÃY²òëSç}†i§Ñ‹çÙvÄx4Òv6XÚ*Þ«ûv¯€l×¼ª¤Ü{|.ÅÆeõ–'4½öé p^E–<Ó`×žÈç#¤sñZÉ’§wœíµòóQÆÑõFLÊMµ/Ë'Îë/óè|t"ýhO\;s¹æÙ­]²¥ëºÜOàw|#"Pþtæ/§ÿnLYð&å êó4¼îyÛ/*6À¡)%¢ËRÈÉ€ŒI_1Òñ’Ò~0Þ&'LòÉ¥$¿Orñü‘¶§·g#¿àæhDÕ‰² ¢ ¡ïLþƒd¿ ÏG˜0xœu’Í’š@…÷<Eï­(ÿ`ÕLj$ˆøÛÊˆîº¡hœEòô™™¤’,’»ºõÕýîæœNP
ÈT1-9±Ô„˜TÇšjLM%³úN°¤šŒ‰eb"]± ¼šJËº®¥‰­$ªa‘iš%–®U±±,›†jd”HøÖ +Æû¦AžêÏuÌêqJï/yY5Nšú+PÅ0lS±L0’§²,½ÓšuÀgÝüFÀo½VÃKÎºâFþ£å×¼e9øò1Žçk°õ·`økxˆ÷É% ¾uBÇ…pçìø5¡‹œÐ*.úæ®‰ ‡0\ÔñBm­I¿û6=+Íº¿è˜¤f²e‚ãÉ;ò=¬£ø2"Ñ¦Å¶)_•E5IìY¾,Û½EëÞ,vŽÂý¦‘Àí­?´mè*w¿Ãbå(«É"ƒÅ#Ú‘;ŸmÜ‚µÃÛ´©öÍ"Öe"ÄâÐf=ƒ	x›4 ©Sl'È»ã%r^†{USÛ/–Cc”ù;´é¿·“{7,³¢1íÀU‚7§ôx–Àj-8ÌOŽH3”
r< «×ÒI¬ŸÎ¾éë]çs-tÅºQÊ;:çÊ?ñ·KÂwÅ™¥æŠ‚F1NÄ+KÜþŒlçÛC«D.8]Î®Û.¡³>v•½¿l¸ÇÍ²BVCT>Kà—Hú™™·žý;1)º¦¸£ ½‘j`ž\1Ü‚”¶‰`×Ž50g+o\§¿¿šì—•½÷òÏ«ñš­ömŸ5xœu’Ër£:Eç|…ªî0å˜‡„ +}«Á&N0ÇÎ¤KèÄ`ˆýõ»«g÷jvv­sÚK¶œ5¬›Ð‚Hlh f«*ÄRd¨¥ˆ§‚¦XiHËÏ Í05¡Ù‚!N™e0Ã´°NLdÃ”
hiS¦ÿå™E¶hŠTL¹Ž4Õ4-
ÁºA‚6U!Ô¤
ée^·à™2nßÑ<œnÃ}z~gÉË{ZWÿiêX³ ˜©XU•)­
)yV…|êSðp®[Þ”—Ùt Oÿg-k²®ÈÀìö\oåo@´ŠÀÖ_mœ]òêýÎ €±s©ë8îÂqb7^“íÇÅ«ûŒóFëŽÃž|ßy„ù]’œò¶¼B×‹(;½·ùq¥ ¾_¾ÁFâøhl3'ÆoAlÏøãQúç{Òsëâ,tûºÉGh]å!s|ÇôA‡;Iã6W@lQµJÉ&¶©Œ§¥ñÆ>¼tØÈr¸ÒÐÖN¢þ˜–Ç!_“—¸dÁ.^ˆµf%
8„‡GAË/t'E+÷ˆ¨W½£'ŠÇ¡ïñ1fzad/»VåÓ©àù•§kOeŸó6Üy®²Ð?Í=kÁöÀÎW‡ÄúW}Ü®VÖ[—K­zÞQT,²Kùú¾Ô­*Þ½¨ën³ÝeÂó‚gúÉdøª0Iö»§qv­ªF´¹”–=Üñ2,Ëw„h¿Œ&÷2½ý°U/Q¥#Ä!êÆï
ø®†­üéÌÛ,ÿ»1%àmÆAÓ—%hùgÏ;	þ™ä¢­+Pç±®‹j>h÷æ¼o‘ügÓN‚ýìÈ¹Å•+Êy¨øŒ–Å7ð ¿ &EÿB³²ÎÀM=rf`¼i[÷²éål‚*"}C™%xœ‘Ëjä0E÷úŠZ&É¯n‡’e½zJR¹-¢‡±ËÝd¾~Ôž	d`!;©J÷Ü[*ž‰€Zeq‡=ö{­U‡Ø÷öµÄ½š®éÉ¦®z%&œ)2Ô•V
eÓÔÖì•©Úîí`vM¥+µG)»¶jÒWÓ/)ÁK€‡°KJKç§S@çK“Â#¨Vµµ’U³ƒ;ÙK)r58fú¦\Äs Âxwëd‘	¦ÙåìCÎ³`tì~QáÓ	®>-\VžV.ò£€,ÄÏ¯+ãUâáz×.âü.þa•ðì—!	ÒìN.þ¥šd	8Áw+•¦Üb\3¾˜	-jŸe»K!øFÿObÐûôúÑ~Íí›[ÈÖ<æ‰ƒOémÉAfÊ²¸¸…¯+ý3=ù»Çãgè’¸S$[¤a(ôûýW"~	NË£™4xœu‘K“¢H…÷üŠŒ˜¥Qe’$vtO4`	ˆ"XøÀM	ÉCy	)hÿúÑžèÝÌÝß9‹{xÇHDQ•S%’‰¤E‰ ÂD¡‚¨Hi$Š1b3J#¡:Vs@K1¥¡’(’T•H£Ç±ŠQC•HX}FÕ?|JÓG)cQ(C¨P$"¤2ã™D0J±BŸI"D7ž7pXÁs ßú8ß//ñN_âgQsV¾ÇMõ7±ˆeD ’À$
O·*8g0nÝ(ø^7kËÇÏìYp£ÿËÚ¬/2ðö:ýÃ´]à™ø´MWvÛß¾ 0öz¬kšnhš¯ûËh‡ÏØêÉÏòf:{Ô´Ä²mÍBÖì°¸/¼°á‡Ýò¡´§ÐÛ+ˆÚûÊ˜³{g°©DFMRÎáéÊÅn	'»`]ÂÎ”Id*„;þüƒà™/Û£t"ô»K{Ü-Ü°Óy²¨Æ`g^ûMFNj9-qd•NÞiæÈ6wŸ™£Zs½ë_È˜‡ Ö›f÷+²ôd¿`Ç±Ô`E­íàîêËj¶âeò&žm–«Çöâ>D¶ë91…%€Zí–C?š¦ï¡7¥µÔÜj’7·ùFœŒÏ%×òã
k—òÞVÈ<ÞE?Ulß¾ØÞ|ðÇlía¥“«Vëéó+8¼ïÏá®%ïRèríRçsáö×Iv^uãü'’$ü»Ù‡;ÿïÅ„5ë2Ú[Y‚Ž]o¬çà/„!H»¦UQMSTÓA|W¦Uta_}T¼øÅ¾ÖÇ_qS÷\ê¡boqY|/üaÀ‹éŠ–M~£ÿ È"dŸxœŽÍJ1F÷yŠ»T¤Ã½ÉÄIŠˆ[]ùù¹Ó^l’2+úôVq)î>çÀ×f@?=!{¢Ñgkµ1&ºCtÞ 9Gë±:……k£#Q¸P““£¤í}žÓ4ê¨ÉÄ[«íÌQ…—~hì¤¾¶îÊ×¤™Ïûä8¤Vî,YƒÞ7èÕ…éÿ™«z.¼IGÙB	Ïk¨Òå!óš9uiR«kWj÷)üæRü«ëokPêIö•ó¦Íó&¾mÿrK} …[nÎœ6xœu’K›J…÷üŠ–²´f y%QÀ0¶ñÛ1žÕÝ4ï—Œ¿þâ¹Ê.©]U}UÒ9£PI¡$#U iš¬¨†©P	1–$¢Æ†JT®AŒVD!dY
‰‰¨hØ#¢É"¡ŽAUD%¢øÏ¼ªŠªPEBU0$¨êŠ$a92"YIÇ
ŒˆÄ¡{—Ô,iÚ%Àº·$ßògóŠŸÍÏ´êhñJêò€
TdQ5$¼š p“Z¦]GpÓîýŽÁ·ªf´)†Ÿñ¸ã¬ÅMÜ¦1xy–å¸ÞlÝ-8xîÚ<žöÎ§Î<Z‹X¦iÍMsgíè¤ì‡ùÞZjI&oz‰yÓß=Ïœ[Æã<öðð\ö$>/Îü6}æú¨´—˜Ñ¹}Ë64Ï´"‡ÛzÇN±çcGÞ–[®yõá_¹Ö¨'gèoý¦_r`uH2‡_Îfå˜ðÐ¼·²¦mˆ6Z¹Êî¦Ùè™¹Øk·;“LZÙËnÇ£~ð»9à˜eéúô8Í²$×ñiÝÝýÀ2†>%¤@º0Ø¥ÂGÂÇÈ	«3©/žüÞ8¿Ž˜-U<·rãl~Ûµy9ìêtZè…Áû‹m{lwUæ—™®¹ÁØ¶5ƒVÇ
ë†8ý0™â+šð=Ä|ù%	º„uo«¡·²5Ïv¾îpÄ÷v«y_¤­¸ÓÝx[¡ÕVøÎï—ÛÜåþ÷ÌYÛwŒó)‹)hîE1¼ÝiÛ/¢l€ˆÕ%(ÓêQ×i9=ñªò(¯E_Ók”Ò"¼võ•2V³§ÎqU_ÒR¤_Á4
6DSRŸ¡CUÚ†’4J	H«¨ŸPGà“ &x’ÿÇQöœxœÏMK1à{~ÅÜ¥K>6»›RD‘
zêQ<äc²6Éc¥ÿÞ´¨xoÃÌ¼3µ 
î˜èõ (›ü8örPÜL:c„°UÆ¨ÁdÕSÁcšö½pvb–ËÑ(çíØsÃÙ¤)$—Ñïõ5x
é#g8DØÅkÙ…Ø9<ÝÍQ‡¥³9Þ“L
FÅ¤à†*JIëÆP+þ3NÒ)âÆ.aÚ9XKh‡ûvÌÅÕÉÁÛŠ6ø`!$ŸÁ\dXJ[Zò«ž‘ûŸð^…‡/áø-šP¢®!§g¡¶‚¿4ö‰üšÁcS÷©–sGÈ1Ì	Ý&{¿1çí_~$Ÿ}K‰’–xœŽQnÃ Dÿ9pÀbUUÕþô³'X`Á«Ú¥·¯}ƒªZi¤7ÒÌNÛ¹%ã¨ƒ²^O½FÙkmÑ9”·£qqÐìæÆ‡&cƒRt 3)uÄì8YÐc4hãÁÞæ²ñO¤6ó÷½ú™¿|Ÿpq'¼Qn¸\|Y_yoŽ›®½y'G)Ùá®Ôþ3Î>èÉ¸¹R‘ô%PN<k|«?RÚ0A£’y£›[»×›éø²»³[,”÷g—+ŠS:¿ Zw¬bÐWÆ¾(e]‰±s?·¿¬e¿Èõyxš+xœRÍnœ0¾û)FœÃÊ@%Šª&‡^zl_À6ãec¯l“]Þ¾ã”¶Ê­êÅâ›ñ|?ƒsD{Vm3ô½E£¬Ô²3}ÛwgÙÏƒPvRc3´Z\UDŸ¡i›Ùœ%N“µNÒêqšûÑF›¾õØuÃ'«„Úò"|CÊ¼lÉ,ðôZÀIð…|Fw2aýMßô²•C3@-G)WWÊÿs\<;n°FÍ²C°h%G*º¼Zq†«Û.ä“_ÙåB)‡HF9ˆ¨Rðénê'/[b39À-RÆR¡Å¥ò38ò(ðŽfËä/P½¡ŸC¬¨Ž{¨Ácq“oL¥öô(€[~ýæäåøÐ«ÿô~°]O|Û[Gæ]–,¨‘J5Ï”‰#Þ9&'sôŠâ°Y\«“ßÃÇbÞ«Ê¼kKwL\PôÎ(¦	uÑ*áÇ@AoäXÿÇVA£Üý;ÂÖB]@ÚtÊ‘¿RQ¦‹Ç¹ÖÖzü—?.~Ÿì™þxœWasÛ¸ýÎ_^?Ø™1eI–ÛÓéÔ±«SÛ½‰Ò^¿i@r)âD, JV~}ß-ÇŽçzùàH$°xxûÞîÊ["1›ãÓóY6;%š”gçÙ¬àçt*³³iv^|x_È““,i¥%íÅ8ûp6ÏŠ|vþþ¼<OÎò÷å˜2*³üÃ$?NN³2Ÿ&²ó•±â¤|%>v.¯Ä_Vüe”ñ—¿)í©å¦ù«˜œNfçç'gÓ©HÇÆãOå=ýÁíÉªI:ëÉè4Iný‘Rl*U“pJç$|E¢µ´V¦sÂÆ-GBêBlè`MBæy×tµôT$¤M·¬D×øê„7b#­• D
Máår$æ¸°¯Í‡Õf3J’¯YÄ±| +½¥zÄ~>D5­5kjÀjh:ßvþHÇâ¡ôÊè¤?ñH®$PË×¤ðÛÖÝRi¼ßA+ñoöðï{“ÑI2o)W¥ÊC¼£/3Ì xu­\€æºÌm§ÆíVmä–’µ’.Áë´ßæ„Ò"g†M]£q¬&*xmF¢ °š3mG¢”™U¹‹×>JøHKÎtüƒðU|1_q¹•ØšŽcÐšìQ‘-¤Ú[•u÷§$¹Ô…°{© ŽÃé»‹D„Ê·*_ƒ|â¸—š	Ê¹áXKÌ*Rívºž@¡ºèãý+°Y„ÕU‡;¶,dVï§²gzþóÝ<nfZúø¹·õÀräßZ0	8È äZ®U;AcyE•Uâp2Üìrmð²ÓšrrNÚ­YÆªù„È~î€îs§ñu¹Ï‰^7”æµº²(Ý¶…<Ë’<naZ²^õŠ	` F+>…Œ½±·Ýa{ôN±}=@òY6>o$výUÑÖÊyÆLZldï÷Gþá}Ég*Kq§`ü}¥ hzuw+.Ä¯×Wé/Á?C¾#Ü;xø*æîÍ]×ûV4ü8NòÙ@ãl•¯”«”}«7
nW»Hñ;êháÔ7
åBÛ…2‹ðÐÁr¢¿w*ëz÷ÙíQu!náSt0[ù€]žF‹ì„™$ûõõpzö¤:p|yó /ç¦ §ÕÈu/ž5®_÷…– ÷yÉŠoîÉ.¡‘ð,¶óâÏÓé™(­iØCw¬Õ£Ù¡=Ø?©Ç`k+ÈZccÍDÑÕ°ž{óŒóx*ÙšÒeuÜH|´{ÛÙò`Ö—ìV.©_r«sÚGA¥ìjÏ‰m$4Ï˜;?Üb÷â§ÿ[—?½þdÁsX>*i&Ç]ë<ð4ý6¦Æo[Ãµfè^±aî­¨M(è%Ê+#àJ­ÅÉ4Í”Ì+!¾‰cqì¥cÜ73ŽöDv\Ö«.=ò­ò·y5(‡5óçr«Zoì›GÄ£rô]0«/3vp}syu°_„6Ç¥ßÈrƒœw™É:…büš*ƒ^É"A¯¾Žö/Iú›•/<=îØ½m[°/ö:èîòóxñÿµZÖAoÜRXs£ïÊÛqX{ 81KŒËBn96<uÑÏÜÎâ3-_%ôÀÏ ôB¡#{µ’ÞûÝÆ=é{£
ò
aeèÄ)6Pk,—ŠÝ™\púWßÕInùoààôvŽâØñ¶Lg½væ¹ñ~ûQvÂ/j<^$É½Ê+	ò%Ì û—eõ ÿ9‡Ì8Ïu”ÿ·]Y
îr_n.¯ïoöÍ‡‡÷Ò®
³ÑQ»Aà²ná«W£1½1òAsŸ¼Ò¹"Î"Æ#gŒ]ÝiŒí‡t7„¼ØÍ>ßX6=û¬¸<è®ÉS
Û6fåÝ÷zë„Ò[VÅã^v_àÛê<<UO#Õ
Ò¦úÀ½XçRá*³YXZ*v¶[äùá»]žc¨Wjk‰îµ–uhypHÕ<U´xî†)êfñ0¿½^\ÞÝ½:*.£)¸þýþ#æ3hM•Û8µ…Ø_³ñxúæè9PŽÿ¤l³áÿ’í…‹þèþÃÂ«PªãîÌ˜Ð ¼ŠÆˆ%çU»S‡ió]€þ]è·HÀê×ÏsR…¡»&ÁO"øi}ŠÉFp'V“<&Ñ9wÜ}¡“Ö]Á¿·¾qõ’uù›ÃÁñç´#ùç™¬YÚ[¼;†IZ†åZñ ß+n]qX¦rôj¥Uïµÿ qbð“<?GFÿ„Æév»ˆaA±¨ðÙYmò‚¯UŽR<õ¨ýÀLh0‹Îo˜,,m¡ž=_ò‡)rSäil¡í$Æ*Å€)æ“ñ8Œ<ó‡)>EŽIFÇ¡"5e™fÛ‹ßó9ùœ˜FŸ2xœuQKs›0¼ó+4Ó#“ñ¢“tÁ8˜ãÄKGâe06üøõµÛé­ÝÛî~»ßaEË9HC£¦F©	Bªi™Fb „’”)ÐLÕ4…«ª*HË÷@”0F‘Á°)ÄDKYŠ¬$QU!‚×MdQÿÞ#Ê4NMÕ0`¢›ºjX4µ4L¡j&¦¢§øþØ„ºDz‘7-xç…ÈÓw,O»;y¤wòRì¯YSÿ Ð€¶4UÃàA1Eº©u!oWˆIOÁÓ¾iù¡º¼d·‚žþ'–²®ÈÀÃŽëù!˜{sû^h/?îo]8uslÛÛväDS2Cu¼pÞÍ¼Ô?­õO¶L|ßöã˜]ÚÓ9ößÂõçùz|ÃgÈa)÷NÔØÃdÄ†Ñ›\åÞ([ãE†Üu³q×CZWüYÕ¢™a À,x_,ÓA#ÜÛ!ïâa£!×ŠO×½‰à2X,ÕU”^i†d%Jç+v\¸6¼ÀÃ*ÏGFðª5“Y'Í…|^†Ø-É6/¬>>Hâ|ºÙ¤“Sòéë(ôè+‰dÅ[¾æÕµ¸dCQEH ªB.·×]]–²âÛcñ¾ÃÕHÝ®ò–NËÚúôºRDÒN6ãýåa kþkÔÌ>ÚÊ—€…Ù’Fg÷Â¦ãe‡ÉWüµŒI9)ƒÍrëz±‰Ól¦—'a\wtÌL\û™NØ³žÅvâH6sÃ×/&Íx›qpè«
´üØóN€oª®´mj³Fˆ‹CzÞŽÒâü³æõÏŠ“$í‡š?°ªøÞŠ3èjrËß\pwíüB•xœMNÄ0…÷9…w¬Z5)M§#„$Ös'q¦Ñä§j]†¹=)'@,ýüÞûdóJ¾z3öÆµVã4nÐÎ ·½ò^ÒI)%\)3Hí¬5z°§IyÂÞ[¯'ç”ê­FméyÔ“‘RàÎsYáb3¼ãN+¼lÇÐšcx™)¶¶¤Wƒìk]/'hº±ëDUS`¦ÆEþJÔØÎð¾aK#$J	o­Ÿ5»æ*>`+‰`¡²D‚z ˜=DòîgÀ3Üç`g¨¤%bÈ›àîôTÝGßaþ•* ¬.åØV¢¯ìÀàëx¦TÁ—pÍäšâ}cç¿'~ /å‰f‘xœÏANÃ0Ð½O1{”ÈcÇI\U¨t‡'°ãqbQÇ•ã´âö$¬€»ù£ÿ¿d"ÐÊ9DE'E¨Û¾—ˆÎXÞÈNZÝXo[£µ`W“i.ÐõCƒÂNIBR¼W¤ù`'ßÈ‘ÙVdf-SÊðæ{Jðá¿Ï:ÄÚÑí4F.õâ# B)òNÃ×œ³íC)”á…B™à¼.ÃÇ=Ôv§0úÁ;Ý+Ñ@Å»³ù©.á Æ9¸æ­¼@ò`S*°)¡„4ƒ'SÖLP,SºW™Æ…±§_ä¼“·¿¤fì=Œ3¹*y_ÙÏÃv²/*ÀvbxœÁNÃ0DïþŠ½õÒDvÒ$M…âÀ…#ð{ÝX$vˆ7Dü=N‹*qCgÖ3û¼<ªêƒD­º ]YI]Ú’T]4­©tuì¦-:+&œÉ34-JÝ¶¶)*Õ(ƒ²Óõ“²5•JéRv(¦¸pfx&Ç=<.Q÷p÷¾‰¼ÛÄƒóLC®ÃxŸTÙ$¢…L6RŠäŽŽ™þo“A&0A/c‚FvÁX"#E!žÜ<®éS€šÝçöÞEðaÃ@vvÍ® »=Ä Ü§ù„œH–KL‰_Kö·—!„isãÐH÷Ãñš‚}ê:S¯IÙqCYÝ0\Q7î-ái½¥ÀÙÔö±Pd2¹/îìÉdÁÚ¬û:ýåhâ+¬©t™ xœQËjÃ0¼ë+ö^b$ËŽíJšB¡””@¡=ë±Ž—FR•„þ}eC í©·}ÌÎÌî¦ˆZiÙò†£•
u-m…¶ºæ¦¬µ)¥R\7
;©ˆ>­KÓum»,e©Œ±\Û¥ì»e†ñ\®D#÷¢eêœ†aGþ<;X»9,È/›ƒSt,Lp÷ j!k^5RÂï8g¹ê(%Œð‚”ØžG3ÀúsJ
=%ò	Œ7¢jD‹¼	gÌ_.Ì‘V ¬…‰Myã	õd`L*G=<Qt×¼<ÎŠŒ½¾ïD!g0d‘ìÙ …m	ö*&J<ô˜)òÜu¶÷«Ç>"%„}éÙ›ž	¡Ï7ù£z3X0öí¦Æ_#“÷SÌ^æ*ºé×=ä—Œä€1fÖ	›)ÞèàÑ.Bß/ô×ê?÷gßK!­£œxœKkB1…÷ù³/÷’˜Ä‘
¥ØM¡û<æjÐ$—˜«ôß7ºiiº›ç;s¦Dpnæ,µBHmf RÑÁ¡¦–k9gm«î¤Ud4S1÷Þ.Z-¤ JPT\Û£ÖL¨™dŽsCÌT÷¹À6¤KÎðaoebïñ¼ÙEŽ½ËqL2.i“2x šRÒ¦1ÔŠ^1Ô=<N'·‡ÕáÚôöÚlBªøC®š3“ÐQÕä$#vî–0ÞT„çPâ¥€§.WªÍ¹B‹UC9Á€¦N	yûØ"°žÃiDÍ¨d?9ôwPóoþ-€I¾'dkÍñ4c.õ#¤?7~3ÞÃ.¡ïò0tösùŸ—’/Ë¡œËž'xœ‘AkÜ0…ïúÃ^‹äØ’7„’´P%½´ô>²Æö°¶¼ØÚ5ûï;N·Ý@.¹IÃ{Oß¥™0Ø;»/m\U‡ºñ­nËÂØÖ#´XV­Ñ¦(ÕgŠ	¼¥b®r{ë­Óšjk5i§ëªvZˆ¼-œÂSê§^8®ÓÏ#<Œ¯ÇœÇ<Ðù±‘‡¼™ÆÏ`*sWéR2à“Þk­d:rJ4ÃwâÔÃ—ÓÒôðpØ.¹ß.½±;S:S@& Z©x)k¾—z–Óñ8Í	p`\`ËÆ`Ý‚¿ñ<®RžšÄgL¤Ô»ÑÍA2=Äi 9»wÂp„¿_L®Õæ0¹Éá9A/zO¡é1v Moü__Ûî`áØlÞ"WêWÏ1Ií•‡F<pºuÙÔÝ@×R­lšÎ4_Dà¯¼K®ž†eúkÝµk†ÿ9ÿ5O0SÇ‹,[¸¤À¦l®D’ŒQÝžðØ9lÇžNÁýÉ]¤Mm›ùËýG>]ý©¶ÒdšxœOÁNÅ ¼óû¶–By1ÆãÅ£_@ayÝØB4Ñ¿—Þ<÷2;›™ÉNÍˆ`¤D=%•Ã0-$ú'¡­ñBé6‹ðÆ*vØŒ±‚–œKã–yT"®&køÈ¥˜Ôà¼Ôó(gí–qdö¬kÊðŽTWx9‹[áñó"ýr‘gŠ·Þ¥ý	Ä$F¡P:®9gíºS­øO;{MîÜÛ·¶RŠèco<Øâˆ|r€9§\€"¬Ý‘Ó¹–ÈxÇˆÙÖ&Ï¸[Šïàg²@­àÖt¥Âyøkéû {Dß¥ºåûö—ì8×“xœAjÃ0E÷:Å\ÀÆŠ¤h\J)ÝvS’Œ¤Q-’XÁ/zûÊìKwÿ}xÿËÂ–™(FDJtnˆ˜¼±ÚÚ¬97
ÞeëÔžŒ½÷ÚèãÆP´Á Á`‰3Yô4âØÈ*Údª|r‘	>¶5NðzÙ¡;¼—YøÚÇz{íÚžÇÑ#tƒÕÚ[áêêÄuIÍÞwhNp-«(õµÉúˆÏ~‰Aê½Wê\¾gN]Í¹?/¹V¿greê‘xœMKÄ0†ïùs—.ùlÚeY
Š^ïI:i£Û¤¤éêþ{³àÁ£¼‡áx˜yKFÓiÞ¢•á’ª·‚ÊÁIÃ´o˜§š+ŠYLÆXÀrË™UÔñÖq.´ÕÎ‹^´­ÔRHkÓ
;fˆÙÊ”2<n&ÂÓ¿CŠ#ÆŠ¿tš6ó…açÒ|¦˜¨¡=ƒ;ÚQJêv¥`†ge‚ûmu>o°³78…XðüG×]¯84TWÄËŒ;‡=¬Û²¤\ $X±Ž	aÉiÁ\®àë‹¯ï/éR/=›ƒ#ä-Œ‡&yßØëþ¿ÈÅ?kˆ“xœAKÄ0…ïùs—.é¦iÓe‘Åƒ‚¢Áû$™´ÑmRÒdÕo<x”9}>Þ›œˆÀ9”Fôœ$ß;«ZÄNIg…ÞkN¤D7´ƒlÅD!aGÜY­…C!œì¤V½àC×‹ªíÈÉZ‡†aÉsLðP0Àc	_>†	ŽSÅ÷_:Í?ÉïL\n¡•­¨ÇG7\qÎjºøœ)Áù<Ã]ÙÌÇ+ìôN>d:ÿÑ¥„€†Ugá²PcÎþ h-le]cÊ#L”aMq¥”=màêÈ—·g‚x©]÷¨“7Œ½ú)m¢sþ>ü÷öjHn®š6xœ’ËŠ1E÷úŠ‚,¼ÚôCý“UÄ²
µTr+qKFª¶3µ'žq†,‚ÑF%î©{«Dè…ºQFQæ•R­äU×v¢Sµ–]_a§Ñ(Ôì :l„ªxQrÎu©yS•¼+šZˆÊhÓp]YwIÂäDƒðÞÒ9Œðe˜Æ8Øààþ]î›8E\j|E]TE[7uwy‘çLùq´DàZàÍÕ ÷?çbÙÏÅÆ:Âý2	/xW‹²¼M8sÇWðÎQðzRO°ØÛHYœúø0;H§{IXÌüKäagie2ZÖFIÖ;½Ÿ(%Nƒ*BÛ¯qÂ1.{‹¤ü%ÇÃ!‡‰À›d:øHðŒ'#:ù«<h@F2ìà4ïcV$q–£L»yÒ¯Xðž6s×WðržóbþÜsÈ`ûi»NO&#ŒÄ¾1¸ËÎLA(H­ÃºXÎ§Je<*«×œ—ù9ö÷¿Å^Ü‚—×áŠ—áÊ«tåmí/xuÛpì³Ý9Ô™7&ëVÿû¹ÙoˆÌ•5xœuRÛn£H}ç+ZÚÇ(17fVcˆm’·¾Ünpì¯_²«}›)ÕCRR]Ž”Ñ¹n[Ž¥Z„ZShëX]¨–ÊÆÔZ`•ÒÉ¥‡‚r	tÝšc¤3bBG[Í$p*exáèÔ¶ ‰¡˜ÆÈÿõ›èšCLÝÁØ!Ì`H#QG5°m“…F©f«–E8È²à•V²ÞpÅ%øQƒô~U\Òæwíß@›k†¦ë¶ªƒçiRU™²m%% ¬äz@àïí›û¯bj0 ?ÐŠ¾¸Vxþ6/£ìÃ=8Faâ¾eiðo^
¸]=ì¹®ç»îÁ;ÄpŽw?õ^­òlîFCD7×%ë(rãË¬Vµü˜µw¹V~5×µÇŠ+ W³í2{E]¿=-}¸³“Í™“ÒÏí&1ß…°ì8kÏã±º»Çý>NŠÏ™¹ì²±ð[ó´7 —‡“ºýðÓÀ£›àQ–û„cSÊz³×G¡!XÇÃk>ßŠËÎlV™¿‚ci¼Å“Ÿ.¤¼¯Z<2y¥¥(áGš¦‡§ù%Èz9r’¯ÝÛù£’í¢|'zÓ–9ÐSÌHo{,S@<¸<õ
'<aS£Ù4	<Ñ‹C”wŸk·ñízÿ„Ÿn+½4ý 3¶Of2K¦õï—•"»ÞpW~äâìŒëåúaÆbð›²läX[›éªçS]Ýª¹¼û‘ÃHëæt¾tn?ð3?=”ÿ~$ËßLÙRQPÐM½ô*Á_ºa&º¡²š$1ƒœz{&tT”¬'PRP-ä	ˆ
Ø$Éc¸9VÑ†€Šƒ‰ÌeÅî w\Š®i&ÕÉ$§-Ú‹ñnÖý˜xœQj…0Eÿ³ŠÙÀ“D“¨¥”Òß~–. ™Ltè3_éî«;(ý<œ+¤!÷ÑºVç>ØŽ‚ÍZw©Íh¢Îyh=Òh¼ZÃFEÀûÎ²‡¢Ýõ´hŒs>{PÇDN…CæºÁ;±Ìðvì8Ãó×M¼àuZß¬ËgÚ±µ]ïà¦{­Õ¹.,BÿÔÕçš‚œß*Ë„kQêcåR¸L×¾ƒTà‚÷#ÈLPÁ÷Æ—Æ¡ðƒöæ”x*”n5ç[üyúKú.¤nçœ1xœRIŽÛ0¼óý ËÚ%Ë‚ È-Èiæ\šŠHÊ3þ}šr<A–C0$jëj¦€8ŒÝ4M¢ïe{ê¥«SS)¬DÛÈž÷¨êqä[y@— Ó¢V‡SÕCƒzºV×ÝTO¢ªºéÛº;MUËø–fà+š4Ãç-Ê>|Ï—£È—O—…{”~ùu_7SÓÑE5V£×Å¤„ï¤3w]ð\)ðk2ÞEÐå%˜„µ¹S L@™Ì#cÏ³‰°òD&ÆI»)ŒoÌä!®(¾AšñÒmEøM‰ÝFá™ Ú U@ÊrjŽ„ÂQý&@l	"¹#Ë6Ò+„€„ÞÁ¹:Ü)‡Ý“xy! ·×bo€¯&&ÒÉìŸÙÙ‹±øº"À¯Ts‡-x‚âpwW?2ö”Cü1ëc0Ø{
	¼Þ–‡ñ¿<}»O›íU2n£Ï}ú°úÀuJ.÷hûPYÀyWüÃ†;Ìë½7}Š7§´ÆsY^è/l"ÿ€Ò·½yée>
iMibÜ0–MÛç‰.Uáµ.Äíü?Šý ¯Pà’xœAnÃ E÷œb.à„qQUÝv×œ ð`£Æ8ãJ½}“œ êò=ý¯¯ß„<:Êš}F=¾˜„Æg
mbcûžRïˆ†Ô-×ìÉ[‡èRÄht²™´a;¦€Æy´sÎV…½Í«À—6Ãû¾¥^¿pˆx+µñõÖåHØƒwè¡ÓVku·KiÿYWõ{á.]Ëñ™:Á'·]*”A&¸?ÙJ@žvYE©K™*ÝšsNYV¿ÿfZ’xœInÃ0E÷:/`ƒ¢<ÈAPÝvô ”HÙFlÙp•EoŸáE6x(‡*PrP,ö–}Lƒ¤Sc©Sj¢Uì¥Öqkv>4 ›\RÏ\çˆBï©MB"âeàu mÄð­LÛß:—	¾n¿q‚óõ	uxÂçœ‹.uÜÖ°­}ÌP*ìÍÃ]çRôÍºùÙ…‹Â+óÒ#óË6ÂÊvµ6æ2Y¥ÚRªÂßé?OæÞ`8•xœŽANÆ „÷œâ] àQ(cŒ;ãÒ<àñ—ØBS©‰··õÆd6ßL&3}gãI2³Ž˜Ñ*tR mÊì½•#ú‹•í\;­)zc•OÒ„Š²‘:³ŒqäàNtf´‚Ž>·Þ¸ô^ŽÏ8ÃãÇ·pÁs©—[lë(£PºSr’RœîZzçÖÅëºíí‹!¶Ä@K¹×õúÞ*üÖ`[Ž{©B¼Ÿ	§¡å<„ï‡¿Œ‰*Åa·›xœMjÃ@F÷s
]ÀA3òDžRJé¶ËÒÌ›$¶qeho_ç¥«÷ÁãÙ&HˆMúˆb|Ìà+õTQ½öâK*ÊìÖ¼ÉlPbJcøìûjâäEa!M±¨²H>º¼Û¸lð.“ð¶Õž¯8•¼N³ÉíT—ûøx8œð CFtÇ{ŸÌäŸºû\[6‹X§’mßF¹­`òmÎ}L—YZ·¨våçé/	÷º]“xœPKkÃ0¾ûWˆž6FƒuÓ”2ºÂ`cÛ=8¶Ü˜ÅvIÜ†þû9¥c;î¦OÒ÷Rã¬‘BR)¨^p¥´m–¼Ò\,¥@,W¦Ñ¶"GÕcHÀ5g¥DY6(*…™'ÊJpmiI[H.ù
…ÑDR{Ø»0Æ¯6þZÎÏÛƒW®+tôÀ$ãT²%eð@+JIîz—öð†.µ°;º…Í×Šf[þ¥—e%%Ìs
JH8{œëÎ­AÇ>/`sš€#¼ìwàL¾ÅÙX‡ Zø|‡¥œ§_JŠP×CÇzR¬©uê»»û«Ö:¶.g±G’ÍÐ€?Z·™`6™>‡V>[³‚whæÑÚysYÿçSä¼»‰»›xœPMoÂ0½çWX\š¨Ò–ô¡‰MÛ8iWä&hÒª-0þýÂà€¶Ë|z~ò{~vßÌ“‰æaªRL!ÓLD™ˆ³LÈ‰OH'¨Ã4ŽXƒ-¹Í•J/È•ÖŠg…Ž%¢CÊ¥œ ÃC_Ö-¬Œ;Õ5,,ÌìŒç;‹¦
dmŸ aÄE‹yÎ9ó¬5}O-¼“éKx9t²„ÙþÒÅ¥™×Ó½<Mó0‚1O½œ¹£¥±¬ÌZj*”G¬ÔA­«
ZêÏwpºø¯?WoÛõfñº}^.û¸‰.£wF‚;Ø‚ÚnÈ¿ô­Fp*e	]÷Ë”ý5lšÊ‚â×û˜úèÃÁ}Þîìü>Oå5\_ì©uT=tƒQÀØÆì©q­õ¸8Oÿóaö…¿žþ˜xœPËNÃ0¼û+öH…9ÎÃqU¡âP!TA? ríucÛQì´êß“Ành/3«‡6ˆ ›²ÑR0Ö¶È(ÇVóTB°¶äÈN•d¥äÂAŽèÔ†UEÃ©XqÊMÕšZ”UÝ
&U#R­*"§Ô…Þ¬¿† ;÷sër—íÙIÛç*¸(ê‚Ñº5‡{*(%óÖÙ”p„W´©ƒ§)ª6ŸÉOÙZŸð·œóV”Q>Ë‰¿8ÌTo×0Z&„Ø…ëqÄ³³i<*u·‚`ŠËmÞòC/‚
>&éS3×5	¬ÿëðcp]ª9©ÆA£±uNû@õ(ýœ¢“}é6¸Ûíï/‡%x·žÑ*'ä`Ï³.Æd§Ûú?ï"_ÄR —xœŽAnÃ E÷œ‚8{€!ªª*ÛîÒxˆQk¨œñ¢·sƒ*»ÿ¾ô¾¾lÌÚ`‚ÑbpñÈŽR PF$ï=ØyÊyŠê—6n¢Ýh" :ëòØ3ZðÑÏ±8ž8ä`=eE»,}ÓŸ\eÑ—ýžýöý„SzÂGmÂ?§Ü×wmµˆS´F&£Žv­"ü¢®®|ãÆ	ë¹ç}=Ž“ÔÞ”úª·ÆóÐKÒßù?óê×0[Ý›xœÍNÃ0„ï~Š}T¶S;	ªPE{
Bª€âàŸubHœ(Ýx{Ü+ˆÛÌJóíÍˆà´UŠ[oU¡·ÊWu©$r%j\—¥šKÔ¾a“™1„Š7r­mBZ¡)¥t¦ZKW6ZmT)®™Y¨g¸Áà1Áæ-ËUŸåöÃ»•‡KJˆº.kÉ¡àç,_‡H„3Üb¤®–“ë`ó~6+{6Û˜û_âìþé‹Ýá.ày¿+ú¥	ö£[†ÜÞP„\ëqò†ÐÃq03Áala—?›ä;Æ6¡/Æ
ûuñ÷ örœúHÐÑÐCNCFÀdZ<A˜Çè“^ÿ1Œ}ã‚”#xœÝNÃ0…ïó~VI»6í4¡"~Ç˜T~.nâ¶];ucoO:		BÜÙ>ùÎ‰m{"(eXŠPH¡dÀ©0Jbž¦BF£XŒ"Š"`ì©µ ""à!)L#%ãdaªu$"¤8LÂ@Ë’áÎÖ]×T–07ÔÂdåJ¿qåt¯•¯ºõ	ˆHˆD¦aƒÇcÎ™›®µÔÃ[Ãén«j˜¼_ÍÔ´–š/xò4p¸t8[<Þ’—Í¯`Og™·lv•iáa£Ñ’†|½…yWAær°ÕŒÍ´v‚­	n°0±°TdÓlv|¿ÄŠÀ™ ”n©Apö/ª{óF€M×V°>}äÄwÎ‡»¶9ü*9¨iXAÐ“í9¯ÏŒË‹üÞ…Îáâ3–›ª%íueé‡ñßçeÏçæÝm·Ý+RÜÂ°¯¥í½üôúÇÅÙ¨ü²¸˜xœUÍNÃ0„ï~Š½q@5¶×6ªP'„xÿlˆ•Ø®§¥oORÁÛÎè›iZEe÷AJ‰'xo¬C©˜V7‡Þ%¸’“³­˜ †•°1ao­³™âFÔ:tÂì¬0ö ‰]ÚP*|Æ|-ÞÓý¤1Ñ€—ÓW²q¢¾¤à’s­S
™aŒ¬nŠ­a…Œm€×eöÇMP·‰SÌÿÅ…–vL­q’/	w~ŠÏPq¾e›A¸nÏÚ€0bÍ8=Ì„¼•óÊe­úeúZô¥î:Êå“›Š¡mKµüRï3”Œ3ü›ôñ{%z¼‚[â k-u¦äbr”xœÎAnÃ Ð=§àŽÆŒÁEUÔmwí	†aˆQlS9x‘ÛÇ¹AÕåûÒÿúmÑäÜ€Ñ!“c,‚—žÇ0‘óˆ	!ú¥MÖ¦³’7âƒCAcÂ`¢óÂByÈ>[Ÿímª›þ’Ò&ý¹?xÒ—û§øÆµ¬Mæ×åC÷¶ïÇàMt#€:Ò¥´&ÿ¬«o‰{™“N•÷åxM­ÔU©Ÿr[%u5ç.>ÏÙV/®([«œxœN¹nÄ ìù
º­XNÛxEÙUÊ|Çcbƒe ××Çþƒ(Íhf¤9ê€õhÌ  „ñA0Z:ÎT'ï¥`œÛ±‡h5¤ŠY¯wFX>]¯½™–Z°`q–uFxcë‘iuÊ~…X'üØŠ›ðÝû!Îö1U˜Ï./÷˜wœ£æÆ„Œ¡Ý]b­ðÏ8ºzOÏ/×§.m]óVqÍøs‹Èl
>&LòMµ®åBémïnöh¤sLí‹¤èÄÍ‘ÆR*¤Bè-Þx’C öûò—ès‹š1xœuRÉ’¢@¼ó1G£[ö¢"º'PAl\úVT
‚,n_?öLÌm&o™ïe^2û–1@2Â(Ñ±¨IŒ EÔÈ(%ÉÈ Ö¨Ea¬B¡Á-;õ€ÉÊD†(•E‘PU!)V2ÊˆŽtˆ©¢éº„ÿþk†¬"†dƒhD—¡kDÕ2D©d¤Ø˜ši)e)ðÐóºVôXCG8x;~“×ô›|§ž•¯¤®~I“$ˆ4YÒÀ‹EQxªUÑ÷¬NÑ»C
ÞNuËšòþ‘?†ô?¶¼É»"/ß°¦ÎÜ€õÜñÍ8‰¦¿uàÚYÄ2MË6ÍÐ
=ìÚu`GÖòƒºº(íüjšÔÏMkËÔÜ-‚®™¸X~¤YÅð.€$%j×,WÛOD·*ýÇµ9—~!¹Ñ	ÅŸM•Ìd<&ÕbÔGÂð0©·;QÂ„ÀŽv\§.I¯+Äž¼Ùì.cïòˆ K{«ozuçÉxˆþªr›g{î6^ŽLPXtO¿B3ôÖC¼_.•ÚÎ³¸_‰'Þ/¹éÏvæ,ÈM-?×º¯«ãå¦¦E^@Þ
 >næŒOÚ©±ª=:sû Ê÷¼¶”½Ú™¬[5©FúÀÏ!w¦íº‹÷ö©Hƒ˜tÈ¦™½•Ÿ_Ù8<;çÑ2š,f)rbcD‚ˆÄ¶¸ÏEØ_¸×ªñ²œmåLËîÞðžo)þt6õ'ÿnLX²6g Ê´ì<°®?dEY[W€”Ÿ(»°v\áî¹A˜7P±ªnïày<þ“Ãô¿–xœ‹Ë
Â0 ïùŠ½²yn"žüíf«ÅÆJˆ¢ooÞ=Í00½©‚L¢Ec´*Ùcò¤¥ µÃD‹'L™9ypÓ{u™œ8Ê£C”¼Œì§¢’r¢<S²løÙ¯kY”ïE_ÚàðóÓ¥ò¼ìe­G°ÑÚüØaF4[­sïú×lÎóªÖµ}`;næ¶»F¦’xœÁNÃ0DïþŠ½q¡ÅnâTª¸rƒJœ×öšX$vdo*ú÷$é n;³ó¤åLÝvh+§j¥H"Ö+m4RkS9­+«½ª¥˜0Sdh©1Ï]{xvÒ‘«+¬uWÕ­µT×”ÞvÊøF“À™û”á÷ð:ÛÃé{{³ŠsˆLÃÞ¦ñT£ÔAvªR°“­”bqÇÀLÿÄE¼Žôä‡¹ôG Ÿi6,éØ!GÅæ0qÊB|b2¡»'„ñ-LGr7ýz÷¡€Ÿ£å"dâ9Çò(ÌÌËŠ2=ˆiñ±,kN0^	Cš(ÂÚò^ˆwšRfr;s;Â¥OãrÅœx›÷Œáœ2Ú¶šâ#|Å%¼ßˆ?|FüZf •›2xœuQK›0¼ó+,õˆ¶l^Ònµ@HäÑdó¸ÙØÄ<ö×7Ûª·vn3ú¾¦œRd!È J5b˜Ð0 ³lÊ°–0UOlhQœ"Â¤š^¶€bjk)Ä'”1YŒCZ˜@ªªQªZší¿÷	4JR‚žŽ6 J(áÑ4ÕDuÆ’«*Ñ%ÒµY%@Èó6n×$x½|‘ïô‹¼çeË‹ïIuýT]…º¥›‚hB(=ÕkÞ¶\ ?oƒŽ‚×²¼.†÷ÓÓ £ÿy;Õ§&?—/¸cƒ¥¿?§~ìl¶ëño]¸7nâ:Žë9ÎÊ]ÍˆGw‘·vC3;ãEÄôî8,˜NpUº2òî9\í´Q}5‹XØÑn9©×sGC£¥&"kæ>=60wã*.ã¡Ì'üö¹ÞÛ$fLä—îÁl,šÆÙ!2-%pº©7~=ÂI'Ïù­´äÎ#«d~÷R¥†ªÛ”ÅñClvŸ®ü±­ú½qó[”Ê`c[i·°56ÅäŽŒ†ã6ä#´DyŸQ_]*Ç!6´}'Ï¶·}|¯wMÎ·×¯9¦ùAy<[|v¦x£5j»›Eã´(©ÐIìTŠÆÂñ²™·¹m$¢6&…'¿¯ú<ïü£bû¬(x·ÞD¢;Çši/Rèo+#TP0Qµ&|(3Ùs®CqM¡­°òŒ12ty“ÀÛþÌgÒŸÍÆñèß‹I'ê®(€à·Ž7-ø¦!¤¢º‚ˆ”U—d<¹ÒsA«†K’ÓW9]Yò„7 ”
Þç¤Í«òü5ûû• xœ­OO£@†ïó)æÞXÀ0B¢›ÒEÛ:¸ERoó¯0Mu€Š~zu7ÑË÷=>‡'yÞÞƒC)ƒ( žô½JAG±ÔÄWÚU‘$»@htÎ4=–DÆþ!JjêH ¡¡žçKéE~1C_·'âl5^‰¦TmjgñµþDÓã7úélg†Ó´1ýì…Þ‡Ýã_@€T{<Ú¾7ÿÃUªÎVøâs³t‘­1_pü;[¬Ù¦xHÿp„¶¿Š”Í¶›A™å›§{ã¡ud‘¸®Ñ©«mYñz„ª˜—•É’œÝÍf_ap™fü…÷ãÎÍï÷ù>['ÿ°]>WI©¶œzu×oåþ0¡|éK&«!yz#{]½G8~ÊÝ™¬ù˜éáñåRµEžŽVoruƒð-ŠGô·&]'ÿjAìÜ~|64Q¦ë„{ÅBJgÎVô¶m¦è<) !’xœ¥ÁjÃ0DïþŠýIñJ”Òžziz	í}-­b-±!¿_9ý„æðf`F*3 S1Ø‰í˜,2ªDÆ;cŒ3nd…d)ø	Ñv;U.“³IiexƒG¦À#©˜\Bíõ€h’ÕLÎwt—y«ð^bå\(s…—?êŸôÆ9²ä°­}Ó+hÔgmÔà<œ”SªkîšEø_%Ý÷I8‚Ìó}¥•)Ò´0ì5Éå©=òëÇçRæ%B.O'ÇSºÀ±…JkÙ`âƒö%S»ã‘e†¯ŸƒîÏÝ/ƒ¾j«xœ¥ËmÃ0Dï¬b°±üŠ#) éä®¬E,Z è¸ý(I	9Ìá½Ã`ftf¨¡LÉ:ë(T?EžfÇ¦xNÙ{2!'ã0¢sjËÛ€âJ2ó!\-Dž"1Œ.£ç µ)EGã1©üË½Ã[£ÎOxÏÂ^þèüK¯,ÄCê}=¹€ö­µ-œpBT‡]eþW‰ú±Iýd‚[—6¤]!ßäÚÖŸ?²ï†§ŒÆÂ tj;|q£cû¾q•Y*ÌÂ7Rß²_êšxœŽMnÃ „÷œâ]€ðccœ¨ªª.ºé²'€ÇÃF±qd Jo_ûU7£™OšÑÔbÀkg£‰]°Î›•RHýˆ¾¬‰Aƒ£g·S®`¢V^Ø]{iô8Z?8ç-áJªSÊ(±·Ìµ:o;|Rª3¼·‚3¼ÜÏpñgxK¹ÒrÁm}e””Rr.­”ì kª•þYgé	Ë–'(-ÆÃßÁ–¡ÓÜ§
«Ã9e*ŒÍµ>ÊMˆéXnþÜKÊíÉó÷JâŽK©”FEèN1ö•¦Lo1rÿsûËCövt.žxœŽÁNÄ E÷|Åû Û B;1F]¸qé<à1%BÔ±ï4î\—÷äž›[3h-»Á+mÐYi¥ÇÑw¾ãfåÈG-ÄÈÙŠ™bqR=)F¯¼áÆvÒßû¤{!­%4Nî¸R·:¥ïê¯[±<ÎGhÍžC¬tmmZž@ô‚s.ûþ×œ³;]B­ôO½…/¨ûš DX3}†´øeìå7‚	 ”šq‡óuÂ
7,°„RÈ3‡B·ÀèÀä4Ó!¯áâ¥eì#\"¹&yß˜ýü—×ì{ÿž4xœu‘Kâ8…÷ù–fYªÂ‰	‰GÝ£NH @ŠÐ;;¶C^•'ðë›šVïzîâJßÑ½GG:]#0ã¦”1j`4MBQ›Z&3>›¡ØFP«i#ÊL‘1M0³!3M93 4-s	n@„¦Bb6áß÷X"J©aAc()³dÂ¡I™m?×,1ffbsn2ö]V5`%T—·o“|¹~Âû„oªìDþ–TÅ?@7u¡¡C¼ÂgPí©ªëDª[ö|)«FÔùý[ú4èÙÿ¼¥uÚª¼~Žë/Hv‹x'‹Ð9Ä‘ÿŸ®Œ­›¸ŽãÎgïîêlc¹++»L·jÈè8|Iˆã…µŒ&ÙGe°‰O¶z`œNÀem¹ÌÊ à$Ë&{þh¾{³ó9¸.w?D´B‚)Íôr†»W*ÓéÚ_ËÕf,4 x†ng¬’}<¾û§à<Vmüq4—/ñæ®·£ÕHh„çQxj—ÅfNöØ{âËN›³+cõ1®V7½µíóò¨OGá÷ä.‰ÍÇ£/wëˆ^Å^½ê‚ÕÚyWÎIþÕ ‰½ÃÞw4d•E“X]’é‰øéKas¸è¯%¡ýiDö|ô¤|ðyÝ<lÎ‡æ*wN&5pg[)½^v§[ðÈ¹…§cAöa‡–ÞÛƒÇjs^[4mæö{T¾0=v÷«¾jàkŽKûÕ™znLÛˆ& îó4â£mþ2²©
+Z¦7E+}Ò×m×ZhZ9b¢økÙþxÊª]s]RÑ’¢­i"€â¿LÊª|ey•\ƒJÄÛO@xœµ“KkÜ0…÷úºhBñŒÆ²lË”ÒBºHf3v• Y×cQ[šJò´óï+OCiJ^Pâ•}Gß9ÂÑ#WJó®ë˜’¹`EËSLÖ²¢´-uY²Vä¢f”ì¥G¡`yÑ
USÅyWæ”òŠ]3Ô9e¬ÀN¨‘	"§Ø;_tpi¤ÝÁûŸf˜_>zÔ½Œ‹Ö`Å©àEUU9¼£5¥$UG#¾tU”½[%ö0âÒèÌ†´ë"D„è`‡¬1ìe‹`4tÞiÀfjpí7Ðx0-.’Ä_CoCªwr"ä0¥R 
ÒjhûƒzV^qPÇYÿÖ£ÏÎÉíÞ¼0CHøç”/&öûÔþ­Ô7°XÎøpÂ‡e=}SÈ,PòÙ{çðø}ÂMŠähö˜²¹¾BØF§Ð¬7×Ÿ.×·›í™:‡Ív}ÑPO?77'P7Åû¬W&„¥ž1RsŸú'ÓSH·¶—!¤d(¤ËOÙÈp/÷E2ú ÍWq¸â/°øÐëåþ¿TiÿùÈÖì,êÌu]¦ŽÍs?ùÁ0=?›xœÁNÃ0DïþŠ=R¡DvÇqU¡ŠB=ñÈµ×Éª±]%n|=	\8r›y»3Ò”‚ñÒß¶Rim¥ÓúÜt¾¾	¦õ×èl+ûÀ®vÆTÀkœîµS(w}g„VMÐ–¢ñÆõV…^0{+cžáDé#gx‰pˆ?²¦X{¼‡hiª]ŽO 7PÂHxä†s¶ÒH¥à¯He„çÛâF8\6SŸ7s¤TðO\®­‚Šwkœ¥{ÄÊM´‡h/[M<.n¦k¡œV––ÂØi»o(ÁbúÂ÷)»ß—š±7ú*‡P?÷ÿYÄ¾ü_m÷‘xœOKÃ@Gïû)æ¨HÂlÒn›R¤ô&RÅ“xØ?³ÉÒìnI6­~{7EÄ£·ù=xï0i µª…ÖHÜj…ki±^5R˜…ªšJ¡Y,Ñj²ì$
	x½"A5	]®eÓX-	…XJ­›jŠ7kS[Éä”º8ÀÁ…KŒðàaë¯gé|iè¼k½t}©£¿¾Ä¦Êa^Á6ˆ,SïR¢É¥öÓ¨;ØçQªyì\HôG¯ç ‡EÖY8{*tï6`Ý'\†ZP.y9Á“W¹-'¯`
.%cO¿øåù°‡·ƒAB]d;·¨7ïXm?J¶ÿé]œzŠ 9çêfÕÝBŠÐR‚Ôeûjåú«k™"Z[¨¯ÍþÂ¾Ê„Îœxœ}QËN!¼óýÎ†y1ìÆ˜Õ£ÞôLÍîLfÿ^˜hL<x"U]E5EŠD`Wí±ã5ÕB6ƒê„lIê:sÔ½¶±¼á’-É'è[-qí±QÊòš+!l’‹zÐ4HâÔZÙvšá–ÆágZámÆ˜àþc-gÃ›ú|™ÑMæ¨{>äìºPñs–ÙÙ¥D^È¥ž¶Up-à 
8;Ÿè×.›¾æ»]d;ó·™*=¹ 1`¶er½ëà=éù)y«rÿº-Kˆ‰±Ç,ü`óÚi¤?‹*:½2C7§éÀØ+fºÌÐïéŸ” }ØIQMÎè`Ôôõt¤` !W3M0Ò´Pd1l©H¿…k—8Â\ÆË6—KrÁçÀ7wñdª`m¥>Oú.à°—~V1 É…í¥±/ôÒ¨¡à	OxœÁ±Â@ @E EJÁ)èPÐÛØÍÔ)üy?¢	(JÃa@ŒÂ>ÜýVïu?Oî­—€Ñ"§0$± îœ”dL˜¡¹ÛäãÜ4+DI1¢[ $¢¢à-`V*†ºôûZ˜€”—§Ô
ˆ(ÇÏwWmÎ×Ëè¹»•Ò¥Çiym«æÝ4)“”xœINÅ0D÷>EëïÔâ!„Ø²Cì‘Ýî(™ä8ÿü$p–UR½ªj•<f$£	ƒtÉ(9˜<ëHÑéeëPl±òÒ £”]ð=G“c&g’ÊDY©‡ µå âÑÆµÂ;—6ÂÛ±ÓÏß—èÒ%^ËÒxêh_@ög»RÊõpG‹(Nw.­ñ?ãâƒ\Ü–ÇÌwšÊÄœ!ÛT(6þ¢uY˜œŸâÌWÏ~lÛZÛMˆÏ±ìP;ü›Q«Þ„¼LÚHo•Iv©l´ò=9)³¦Nü  išxœOÁJÅ0¼ç+öö.¾’¦mÚˆˆˆñèlÚÍKhÓH²Ež_o+¾»xv††3ô’’jh"EÐöª–ÍÐHÕµÞ¡5º˜ie°j2†Ú©‘ºï÷ÃŽNév°ƒ³FÉvÔ»AµÀ}ÊðF=<oeôð0¤²y
+ÓR)>BÝIS+Uw5œ¥–RìjÌôO»x]ÇLX¦}Ü¶0¸”#2pˆ”6â=Eú0ÎŸ>,t¸NÀùT Íx­à%­'†x<m…rL‘¢¥,8A¸5±§[<”ðõ“«½+\VšÎÉ¹³½Þÿe‘ø»#„Qxœ•ÍJÆ0E÷yŠy¯ä¯i*"êÖ¥¾@’™´Å¶)I*øö¦ KA—gæž·f"@#·Ú[e¹íÍ0¢RÜ¡Âpï#öÖ­x`‡Ë´WPèdKc”!"ºA)!£ÕÚk©U0ÈhÑ[æÎ:§/´ÔžÏf¸¿ ó<.{¥µi{ ÑóQHÞnÜpÎÚu[j¥ÿè’ö[gOˆpu¸b¤P¬i‚ÃMÄØÛ¼8rk(Î
u&Ø?6úUØ†¸uý	”Ka×7Ó‘rKÖž œÇ…„c¯Ë´ÞRŒ7ÿy÷—ìœêšxœuŒINÄ0E÷9EI,Xuã!ñ µP‹ Ä!<T'†Ä	v	NO‰%»úï¿úTAáÀË‚ejPZ8ëlßë(˜’Ñy‹F:½cÕm®`&ðÒ÷Áå”ƒU—ÈM´A» ¹õJ2Õó 0²?ßF%¹ïÓ½‰~Ò
Â3Æ.LšÞ»}ODÍ;×hZ¼`¢	ZœÞ¯áè¯áœ2á|ër|`F[!¦ëvº$",ð˜è©y8åµà6Ç} ùÞºW,#ÂÖæ
~4¬7BX¸”uJø‰‡qº[Ü~–®{Îan¡¦ï”GˆŽ¤ouÍ°6ÚMŽnëNÍx­iBÈk>üjk›©þ —Ðv“xœ•ËÝÂ  àw¦`~¯\bŒ‰#8Á%¶´AZ××|ý’¯7f	ìµGQ‡Ñ:7&£À&šƒ¥ñÇ 6j\»4¬CB—ídBr˜Ð‡” cLŽ:	ÚûsmòÞù`y~<¯•yø4Ž¯¡r¿HíUÑhkåI9¥D\—¥ôÎ%q›™ê¾ÉƒZ¡if™8—ZzYë[|]îD"šxœ•ËMNÃ0@á}N1;Vì&þ“bËº'ÛãÆØ•=.‚Ó½ë÷=nD ¥×Êj“:¥£”µ«JÖ-É;´N&¥Uiºa£Âà¿o5j”Ó)J]0Œt^/B¯2œ)Š	oµÁ…éNð|Ý^ÌûüÙ(|Ì…ø¤Ö8©ÜNbb
õ823ýkšÞJØG$èù;—+Dd„\à½×uðm0ð†üÔ÷F¿~ëãˆŒ7‚RËéÁõ±sŸ§vžX=œxœ•ANÄ0E÷9…/ÐQÒ´M:B±`Ã.:îÔ¢MFI:0œžv4[ØXúößvID`Ç¾i*ƒF·}[«¾–ÚÕ­Ò5’ÕƒŒö(Î.Q(ÐíF2¶v=$MãúÁJm”6†©‘°ëkÝ	·–)&x%.<¯'xøØÅaØÅ‡Bóãòª•ÖØ¶·
*ÙI)¶îÂ¥Ðð®±æŽ‹Û°
—…ŽðÂ_°ÙÎ<oq”RL\ððéRàpÊB¼Oœv3S†2Ü"`Ž'ÈgB!—´bYÓîˆÇ1SÉ0¦¸nató|…­Dt…ü/°ûÝ%²‡" ËeÛ|?æ ÄŸùjK¬†ëñ/?‹î¬“Ÿ›xœuŽÏNÃ0‡ï}
K\àÀpÚ´ÉÐ„6ÄHðùãlÑÚd$©oOvàÈÉþ~òg»$"˜µBZÑ+ÓnZ-„2ˆ¨¬éX/z×Ž©æ¤…’Úi-ÕÐuË^
çjÇ‘ñV£‚[Õ3²ó"Cn;M¬]*'Œ2L®ë$7ëíV¡ÁFÍå¼’/xœ³9Àêx…¾ÀÚ‡BãÂÄéXRänq@lj:ùR(Á³//³†Uˆ‰NãÏz_Ìú­ÙQÚœæq„D_3åWm+Á¥8Á)ù‰b¾þsÓ|l7O»í=l¬…7¾~ÿ¼rQU¾Ô4›âcÈ ‚çÏãD0ùú	ìT:Úø*VáHùÌpwOŸxœŽÁnÃ Dï|ÅÞ+Y`ŒRU5—ÞrÎyK¼ªHÒÏÛOèefô3Ó+Ì
M0N”wV©‘¬ÔÖOƒ—ÚYr~ÅŽ•r‡i‰ó8Fœæ(½9TA“u1¸àNm-:#ðÞ×RáÂ~EÚàJÜ¼z{åD¥}Þò6ø’>@iguš”…79J)š¸wúwøâè+Áëw(Ï¾‚x\ú¥çmçLÀ¹uÜ¶?¯wß¹ä&Ä9¨”Êƒ •DÐë±ÃùÏ•;µ=µA¼ ypf–xœŽ»j1 {}Å–	³zœN‚bˆKÇ`©u«UNpw2’òù1ùWSÓ+3(¯œÓ$­´š¢Ž6I3íP“Ò‰Ý˜ddÍâ*o<IBÓè­Q¬ñnH’Ñ¢Ò#úàE¸õ¹T8fš/ðÅ¹5xü³»Ö¼riïßkÈËŽÊúr@wpƒTˆân×Ü;?ûá3ÿ>.Ï·ÖÃ²ü³Þ¨ç²5èúÌp>ì?ŽñxžRD‘xœÍjÃ0„ïzŠ½Ù–B½•’SŸ`%­cK
²œ4o_¹ÐRzÊmg˜oØÝ‰ Á~+Ù=rQ7¢"Ñ*ªj…š+£M/êcÓ±+Fò	¤®4×9.9ïD­±rhÇŠxÇ¥AÞê¦ç%Ã5M!ÂÉú{ðæ`ï¾ÇÒºÒÐíxvhçRw€ªåCÛÊ^vðÂs/Ë®³)Q„w²i‚×uÑì/›(Õ&ŽÖ'úƒ÷ÝÐ‰Š¼gÌßz¶;px!@c"-\c¦`Ña"Á´:ôE$4¨fbìDÙ~ü÷°ÎÁ9GX}¢!mÎ?E)l‰­;?JÆ>ìÙ“)Â8ê±{æ	ÿ‘'g_sè’š’xœŽAÂ D÷œ‚´áC(`Œ1nÝé	€–hÁTºðöÖwó&™—iÀÅàˆ&…h¢õƒó[’I’ðÐ{ú¥ñÑéà¡¬2ÊiR7E”dÉˆÁXd¥%æ×6Õ…Ÿ‘ÛÄOë+N|ÿB¾pÌ¥áÑÇ:8iaµRN9Þ‰A¶µsnÎÙ7>Ö¸ÎÛgßr-Œ]ó­`ìjJ]xï~1³Û[w–xœNÁjÄ ¼ûï4ÆhÊRº…ž
½´?ðÔg"Mt1îBÿ¾n¡÷Rf˜¦"@ôÒ’ÃY†QŠÑÈ€Þ FEB;Y¡f¡Ù¥
:…ÎIŒžü,e°^J5L36K„‘†×ºæ¯ë
Ï×Ã­pú¼‹ÞÞÅSL•¶Þåý„âFIi´ŽOœ³æî±Vúg½‡óËxrÙ·••¶K£ša¡Úmyaìc4 ¸œn”"%G¿ÁÐŽª…â-¦Zá€Pò˜~v×­öŒ½Ç%‘ïrýzøË[öÝ(wÈœxœ…KkÃ0„ïúKî6ÖËJÚæVè%”žeie«±ecÉ)ù÷•%½õ6;Ë7;l\Ë8µT—J™JÑ
™0m-Z&“[7\
[’Y-è#”¦àLŠ¦ijÚò´.™hKkÍŒà¬–º¢ÔpMÔûi/´vÁ›z8lS¾Éã·Ñ¹žÆ' ²¨™lDÁ!+dQäŽ.F\à]ìáeº‡ÃeòvŽÎG8—uYmx™pâ¯#fzp°‡t$›‡µsž°Îó´D°©×çéÎï´(@y“KÊàÕi9!³Q!öºG}q¾»S›ñ't«šð aJ+A‘Ýé~Š¿÷Ðì`ÄT—`7Ð"æAÝÐÜcýä³Tˆ<
œ]çÑd“µY{ÛÿûEò”2“&š¤xœ•V]£6}çW\íK»š€6_Ñ¤šö¥R«Vj§êëÈ`“¸M`;“j~|ï5¡Ym’`¸÷p¿Î»^kh¯Ê”5¼,DUy©ª:fº¬›RW±¬¥Ve‘Uð,{Ý:Àg¬j²˜3¥¯YUòœ•\Éª©K^‰¦J³X¨<G·ëzø©ÛÉ¶ÕþØvgúîÿrãõƒ=Z)ýÄ)+Îâ¸€;–0ÔÝá`œÓ=ü¬ÛÁG[ïàþoZD-Lëô>BÃ³;~x!ËÐ=hdÕ›Ú®AîmV;øtÔGýdÍ?d« íŸL÷äoZèZ¨;Œ³v¡ÜïÇkßï1ãvíËAÏlÂß@uèJÐn§ßÃc­äASì–€šÖ8#÷2¶î^tÿ:B™®]qTÛ9‡ëÑÑ+«Kñ°à:z:ÁiNö[íl„!·Á«Ñ{e=@Óí÷ÝÉ´Ûuœzãô·|ÚOí?QÂb²"êúmD~~îµµ‘úEÑ
â‚}„ýðŒ€LCÓ7W—ëDð8(]ø×/ƒ·3\Lpä	d9Y\â¦ y9óÏRÈ9d! ®cà‚+É2ã7ó¾	ä%@RC.<œ˜ÁØ‘•ëekŸ»	ðÎ‚2%GáC‹	ê– ¯Ñs‡Þmzu„¦T¿‰'8p˜Ú\¾ù9,ÿîæ”Bæß‰u„(Æ?Žhö¥6j#&¸áÐ`(:¢d…O™{¸›=	[í:ëÆ–LpûBoöèz|&¸œýW¹piý3Zç)CÊ0ttýëŸ¿4ëãÑ\:[PtÒ—ÏÔGZÏ½×9Ú‚Î,ñ¥j·V"MÊ\‰°(ª8¼Ô®j‡qa¹ßSÄBíÀ†œ×t‹ù»Ã«0Y¡ëPæ¥dyR¦œ$¸lìFN(LúÎâ<Pvéù;õ¢•XT‘ä<ZM²1ÁU4Æ© úu‡ÞdsÓ·wt? ™?ÞrE†¿ã7ñÿ;o×JórhB§­›ÍÞ0<g¥á¥W^~Ai†±Ë|‹r1Ž•¸L?\¿l¦4ƒñ’gn,§®c)ÍÀ%5ÎÜXN?\ËìLin,©1ÊÁbúáÂ“aÐgJ3pcI37–Óžƒ>WÏ%5ÎÜXN?\x2úLinŠñM½Õy”×¹ÒÜã›z;ªó(¯3¥¹)Æ“Þ^£:‹„¸»»ýY àDûx'»iÃpµUèéß¼%ûVk…?ÒÂIãFƒ6+§Ùk\~ÓãæE)Ú!Ð¾&xî»g¹•N{ÄÙ–Fu§wfÛjvMV¯ë¯Ý¿ë£OèHNrkàÇÞ*ÝoáÞâòa;,£ÿ”˜¤“xœXÑR¹}Ÿ¯èG¨b¼Ø0Ô­[K`CH»‰“Ô­}¡dÆ£0#MIïïÜO¹?vOKccƒ¹7µy <V·ºOŸ>Ý“à”¢ñY1²(ÎÄÑXžœÊÑpx4.ËÑé¸åé›¡8)5ÎZá”	t¦ä‘<.NNNGoÆÇÇ‡£c”oF¢Ócy<.O†0ÏD*ëè£Ò¡¢·—ýã?¦üáWm‚ªÒ6ÿ¤áØÇ£“å‡Ç‡‡ž6:õ7Í³ïÊymÇôEÕJx•eÛ(2jA¥¡sÊSélC¡Rt÷ýVáðMZ%u©¥lŽŒÉá‚63
–¦*ÓFZ×Z'‚*hÁ±…J{ré’ô$Þ¡U]P¡¤-ØX˜‚8)üöì¤îâs/Œú/Ú)ô\ù}²Á“-É"<GÓnÊPae× 1Â¬kD‚Çlo»ÐvJëôµæ–¶ãÐÕ\¹¥5ˆ°²ˆÄ§§rÐ­ujåç	‘š?òŽ…®k`@[hÏõ²…°FéCmgçYv!loa‹Dö†ûçÅÈ‡:¯rQ¢ÎyÉ\„¯Vê.<m eÙ[á:Ô~¢~n˜ßŠUêZ“¨k» Z›\`‘§Ó…bH:ë=u.ˆ³É²ËJè ÌRÐÇ®~ÎhÚ;]»4óFå²ÖpY?pÑ(ïÅ,¹ãïqƒg”,|×•X€§ÂöUÍäÙ±íòþÄ=N¡’j¾Å%àþ®Ëqä§¯\2oën–£<ç|aç¡¤ÚÌE­™ÌºAHµÃÜšzI­C¿R¥ê•x‘®½§-d)¯È¶)®–«•_ ×ê t¶ðôa“O{6E/Æ#/ÙÚÁ¡m+z¯êz¡g´7Z¢û—FF‹AµêcE`Quÿxƒ§ÓN×©ÝÑctÊœÊ²+À‰ãP›Ñ´»›)£¸Sb+åÀ¼­µ ß¾Ý\ÑÝç;Ÿe×0ô¡3HQŽ_!d”¸ÑÎ`¸	º\¦V¶±·ÐÁr…vau{áÂWè’Í¾rÄÀë"—ÁÕ;ïcåiDM 	:€²iéè"óh·­jZN»cUÆÃ`>ýðÖÜGûû×ì“”åIÊ Œ^:iñ?ïþ…)”‹¶Â(êoÔU‚-«…ŒÊeš»²Çv»|%G‹J™D®Dr’¨—±µÐ¶Ê¼È€PÃjŽËK¡k¢èKñªo¢.õBé+ë“ê\cä]è-¥E½Êù°lÙ#Ýð8$nS|àîÒMë †‰Z>õnX(S °×NÏÆÃNçWŠ1G†p?â#K ˜eTYÒ't6Z‹gi~ùé&†7YiÒe/6Øy²]¶Êï°Ae&Ð¢ÎÃ:.+%z©ó*pÂŠÕ§\ä«@ ,†A%¿V]ã+í¶B*ÅøD­„s¯2\¾R+=ÜÉGãsVí®ÎáR˜0nàÆmn´w"Ž´{ÒËžDØfà¤yaµÄ”0£†[ýÒ£©òø,Ë6×¢ç,j-ØÁ5Š/D0¯± Ô±óÈN Ýôï"#OÓÐ?ÿ¢ÖÊµ½rì
w¦¸ír½ï[ôÄ†ëk@Ñ‚"-Cò(C¼xÇ‘´>y0úøqôöÞãäþÚ§÷2ùdr³	ú³rÅf]­SëI×Î&[IÆ¤^Ø#”[üŽgÙlœ>ã890|nAqz+j‰Ö=ÚZy¢êz)Ï¢*£¨3^!96OŸ/—Ÿ'¦øaÂ<M—aÝ0¼bNõZ÷Nè4-ãýxÅï—“´ÍÅÝÖ©9ï·½5òeýÛôûÜ¿ßí´Ënµ¬t%æ îFâ©cA€{ÞÈ5‹:»âNÅ±Ê:ý3üÇ˜66m1i”Å÷‹7nœá‘Oëvòå)»ƒnxÝ Ëéû³ë“ÂGYOE0\…{é°æ«ûF<ÞŸö¿;þ‚‡KáššúËZ).@	žŒ˜2Þç¡‰éˆfK/hÀ[@E-}Ðµ¨çÿù·}2«kn¯¸P‚CY9Õ4Ê@èÐ–f“"O¤ìGó9O¿¶K®šf¸ Ü©ì/L®!ïT?u7–Äßezí£›—·>pÅ;ÄdµC0–œyž¸É¡ÛÀën{•¿ÁR“„4†¾ÃéUMQwäý/-,¦…àgôiÞ‚e†×íÕzˆ˜¦Ë8eù‡ë»“ùÙñ…ïQ’ôhòçkãŒ[¼Gt-°yÕ‰…ÒÔ/·0ÿæÔ2½=Ó6ÖY&ÆÝjs€Jz^.wŽŽþ4¾y®.xoI[DÓ%ë÷„¬‰#C¯1£M61÷L‘R›È‡Ø+bnygañiî ñÐ~ü
‹·¬øž¦[\Æ/Æ+ê\D! äEd(G´¹¹uÀäbÇSÅ{x¹7:=ú¸ßoñÖT©+K°âi\c¦(Ä´V«—S4è×7ô/å@
÷ðr…¨éÎÝs.úf¯¡såFŠUÏmYæÓåùÏüWAö_L¢•¸™xœŽANÄ0E÷9…/Ð*mÓ&ÐÀ–%'H›Ú¥)hnOº„ìü¬ÿõ_ÉDà¬´F–Â€Áª!VjìÐyfãX…iP^I#>\¦T Œˆ:é;¯%“±vê©'MhØN“1½E¼î(ó–á˜3ÝÝ)Áõ¤ö<o_[ÜÖèF9uî”†FŽRŠú]c)”á™b™áéØq†ëû	­?áS¡åGÝjYëªÖEú\©Á%ÂC€Õ%kµw%n	8.´W¹´7™v¬‰sÔ¥Ð
ñ_…fcnüýò§ÿïü?œÅ7Xžzc“xœMNÄ0F÷9…/Ð*I›ŸŽFhfX"±€¸‰Mm:j3 ¹=í6°ó³ü¬ï+xÝYß {„¬¥ähØ¸Þ£±·Ñ7]k[2âŠåuÔÊ÷-6m$n4I­ƒj‚t²cã5[/upoe˜x'æ…î8&ÊpÜ©ÞÇÓWu˜§PFZ¥œ’*i¤ÛvJ¥ÐO”Ê —Û8~ìP÷;œR.4þÐ;Ûmz»é"NT…1ÁÎ1Â3N´^·vðBkÀÛÌQˆ×ô–)V3sÕß&ý}ÿtâ£—pè“xœuŽ½NÄ0„û<ÅJ4PplÛ‰¥:  éÄCØÙÉ%ÂùÁq@¼=¹‚’nfvöÓäpËŒöºiÊ ,T×v@¥=kãCW¡ê¸.Ÿ0e²¾qA<œ +k+§k‘†Y)qÎ•ºÆ_¿²¶Ñ®ÒÆ
Œß¥åÒ*×ÖR—g6¾ð[îçDg¹§çmm{:~\Í!\Íi˜2â¡ÇG*Í¦bM÷l™‹=‡œ‘èuÈo[ ã4',ñçtÙ[øç­xGº€–-FJøÜ°fºQJS—æ‘F?‰Oíu•Ï£_w~Q<‰@¨ßoq˜.Ôí“3Æ{gK Ü'¬ý…¾|Üçoâ—[UWç»_utÊ•xœ}ÍÍjÃ0à»žbï£_ÿ@(¹µ—^Jû +iˆÆ²‘Ö6}û:¡çÞ†f†DdôÎ¢í{åuKz#‘±(­C?vDÞŒ²ÊF·Úy«{©´V;+Ý 5­Œ-¶Þ8äB¸òm.ðŽ9bÏ##ÃÙ©¡³Jž¦'~òe­Tj“çBËý§¹&¾­¾	óôÊIgŒí»NG’âÐ)1S×Äo«‡ó_íòoM|-™ o5AˆÚ¨pÊWàAˆ»RàÃ„õû¡û1ö`	…êzgÀ
ËqZhK´CL5¬µ¦9ÿˆèg¢–!xœ­ÁNÃ0DÏä+öªˆb'Nj„¥GÄp²ë&"‰#g]Ô¿gKá€àÈm4ã};kŽD€è½r¾±
Í¶­Z4òUgÙÊj­Œ×Z×ºÌif¨]‡h[”ÜQUÖui«¦&ÄmQhÖZU5”¹Ä}ˆ0¹]ìÎÚ1Üe›J›öcZ)®ù"-ã)?Ü§6ïÂô Ê¦ÔVQE&î40ÓÿË¢Tå9Û!B/óã0ÀK{¦i!á¤HÀ}¤µ#ÂÑ‰VhiïPì¯uS>ß€ÌA¤)Ò&ï¥b×S÷ö	ê“ô’Ø¡kG‚xIn…×?7xº8dÏäxx<ÁÓ…}¦î˜ãÐ&¦5Ë`/Íòœƒ4ƒïÂ»ìj
8øA$ ÌÇ‰n—8Ìœw¿ñ> Â5²U“%xœ‘ËnÛ0D÷úŠù€H,Q’‹ È£(6É¢Ú5—a‹2È«¸ùû’±dÙÝ}pfIDHô¢CßZÕFu}o‡Qn…ÜhÛuvT4Ö­ÚGÈ3†VlÒjèeW÷M³í•PÔ˜ÆJ-š¾i…Muc·…\yZ~µxtäqË*—7Ó.r¥—ù+š”½i‡q#PÖ¢®‹43ü$ÇîÖ¨'\ïsS©ÜÜ8Ïtø,»ºMò.É‹çßOTÞ?>à»ûK/,y¸_AO¤÷°	*P$¿	‹‡=•R³{•LUQ<XHzušÒ9^ƒiðéâÙó”ñx"<-!ù|{þå¸HÞWï‹Œ¡sòÉ³ä5SŒrGpÞ8-Ùù¤Ç­™G¾¾ô¦ ’£ó‘I,qÕš¢]—ø
øspGÉzºú€ÉšxW„YÆ=e/›÷ðCZKšßugº´¿Ð¥—xq»4(“ To_þç?Š§NÃÅ•!xœÝNÃ0…ïó~Ni›v-š‚]€“ø½wg‰h“’z›x{R@‚.íÏÇ>‰ Uª7¦¯êªÉ5V]!›Jwdte¹F©U™U´bÂHžAÒ’J‰H=©¶i*Y+,ê5ÕÔ¤LÙTeê<°¶èðBñÇ	6úS¯Ž_úÂyNªã9ä•Ty™·y™\K)RutÌá–[¸<Ì½…Íë"VÝ"þàm›EÂUÂ…?Ž”õƒ;ƒ=yŠÈóD}–Æ§Áazæùùf»ûÝ,Ä“¥e,³afÿæa1G¯aŠttá0ïß[ôÎ‚	qD¶ÈBšÁ†TI×rZ»{¹ûrvÆõÈ.ø•nïIgÁ˜¬{?ûLâ!ÝC§„.Ø•næ0Y¸¦a8¹=llŠe˜y¥éü·É?b"±u›xœP¹n„0íýóÛ\«U´9¤-¢¤‰”ÞÇ¬¼2”¿	JŸò3z1 BS[*tU5¶DktÙpÁ¨9S¢²R)ÉmÉuCî2àÁJ-7’ñÊðÒÈF²‚•ÌTÊˆ²aÒ¶âD.±÷®NFp®›üçî .º~tË˜ûÐ=BQR^·u!(d´¦”h?Ž.Fð†.öð¼Ìº‡óm¹ÚÁÅM‡<xË)å<ÅEŠ“i1Óƒ;Á+Î:8… ut~ÞÂ.ÿ«ŒHÈÓŸäf˜|„€3†Í¸¸srü†Ô7||½#9‡èa¹wAëÂ¸¥}È–¾óË‘9!/=êÛÞ±ùp›!GÁÕiLŽÏ4šÌ[›©ïÓ?ç"?ä?Žü•xœuMKÄ0†ïý^ôàš&i`‘E
²ëAðZò1Ù¶MMÓÿ½QñèmžažwxKF”Îv¬ãmÐƒÜ¢gƒäUàÒV4³É8ðTùŽx-ˆWL#zÏë””TµBhÓ*¥ãáïÞ˜ñDê–!	'®:²NQ¡"xOYÛ˜µœR†'ŒåwëâN°}û†ý†]œ
—Æ[ ‚pA©-\IHS·c,3<Äò¸ZØN)ã<|îŽ5`µÿhÍóa^‡2¾¯¸¸`ŒAÈi„Z3¸xÇ9§3ŽµORîé†÷irK"~iš	?ÀÆ?—ò
J‚çÃýËoÒáuõÁªøò™tÓ–xœËÍJ1†á}®â,•BI2ù±ëÖ…àþ$ù¢IGBª·ßñÜ½<ðÎ;§Ê“¼Í	²V_½T>eÔ u±%{íŠøæë$Ž‹•>¡ÀØØ‚­Ž9fk\ˆÎìä"³àÛüÚ1A¯¼æFO}ïô—/ŸÛzÌ[&eåb¼Ž*ÐAj)Å®½Í‰ÿ¼‚KA¡+~)µIµa-ôàinôv9½S[§ËÇ4ðCê¸ˆ;µõN˜‘xœuËJAE÷ónbì÷tC¨‰.n‡~Ô$ó²§'âßÛ!¸ty.uÏ¥rB¤
‰'´¶ŠQ+óÂÉÀ5÷Bj°­’!„j²	‡­á’Ô
©µ•h%3Þx)”6J”Hkÿî³š:gU\imDÌ jfIq;ÙrË%s®²K>Ž	^1æ#<.³?Âæókw†m2vk?ö÷@%á’RÃ9ÜEHUÒ>æŒ	žc~Yl†1áÔýlE°¸jÕÓaZº~-8g¸bŒB›ÆzÌèlçã]ì§4ž°/ÿ4í˜ºæÍhýÜ´»0WÕ€ßàb†ÃµZA½;Ð7Pðþð´¿Xß>vXÆNP$¿HòvbœxœŽËjÃ0 ïúŠ=6$­µzA	}œÓ½¯¥u*°ì¢ªÍï×ý…Þ†éMè¤Ñ³‰†D£Í&˜D0ŠÏ“³9gõÉM–(Õ~”,dC`+l‡˜b²äBt´)™÷µÁYºÀÏ©ÀcÝxüÃ§[å2ÓZO€Vòa¯­Õfké]þÓªEî0–S‘9Áƒ;€? /Â¦íçòüz…©­ÞÞÏM~ Fý°wNÓžxœINÄ0D÷>Å? ‰<ü8v«ÕB ±€%\Àv¾±éÈq3Üž±`Á‚]½R=U-D Q…
­Ó^!Qw(Uè„Õ¤…Øš½ºBs…:c­öƒØ)#z£u±‹Ú›ÞHB£läž¹KMKÛäÊHëûRjº‚§´Ln…{8ÖïÔ¾´á×à:Ï•Æ6,Ó	DÇr£z„†#çlk§\+x \Ü\ÖàxÞ¡õ;ü¡c/t6¿MÔ„1à.ÀN0¯0Ð{ÌÏ3Ícã?ÿ9`_}Übõ›xœuŽÉNÃ0@ïùŠ‘¸’b;Ž©B@Bª~—qb‘¥ØŽ OJÅ‘ã›™÷4%!‚UÔú†+A<Jé
J$•A mmÃ…×”™–©êlÎ¼tR!¶ÞIFò\Ë–kÍ‘¢Ñ¸VYâGÿîZK˜“R[Ï—Ll‚²Z›F0(k¥«ÌZ†%ÁÆ2ÀÓšÝ û+ììq.8îÜ2=mIÃ‰PDCM!Õ6b)˜à%–×ÕÂ~^žÇË¡ß«ýG«Þ1õçu!áçŠ¹ÀcBZ&˜° 5£‹!~×[nI%Î}½„º;vµÉµ½ÌUµ­!l¯ÇœWFõ=äaùÚ”>ÃÍË°)»îùx3ûœ®á7ò˜Iz3˜xœKnÂ0„÷>Å¿o‹üŒm	!Ò®Y NàÇ,‚l£¶·'¨7èîûFš™^ŠNÄ¬´x†µIbÜ
;ˆ&*=d/d0Ò±{¨¸uÊ6Y˜œ¬Éeí­ÑÞkHÎ=B2.ò¬’`áÑ/K¥:è3\S¡í¼r|áþ<‡rÝ¤eÞ‘0\)ç¥TôÆ×¶¦séÿé²©üÐ´Þ–Ö )ü;µËòýQqnTq_jo4ÇÍøu<Q¸å?9½¤Qüíhì	šETMžxœ•»nÃ0Ew}Çf°A)zTAQRtôÈe‰åÀ–Sôï+O:Ýx.pHÞ²AïQë#qc’;ë¸W*ÔÊ	siZ#zvwåV#='%l¤èõsÔ5á$
%H*I
µ æ¶2Î||ºO—”‡kpÙ(7]÷/;·cÅóê¦uËCëçé¸B!¢âÐ Ad5R)TwQ*#¼m««¾CÛïpN¹ÐíG·V#«.«Îòc¢ÆßÒ	\f¿Mµˆ+iÎë‡!-äKzì—\+c]2…fŽ±é¿Nÿ.ñËÿûqö?~²â	€uxœÁ±Â0 @Eé ‰y¿ßyÛ{¤ø¼?RŠ„È8™
)b6cîÞí«íkQ5ÜáAz½&L£ø8&$I‚vAN+]ª	Ú*“ Y‰VFrÌŽa  VÐÑß{|o;~çë²ÏjòTTê´«‘Ç<ó’Ís[×G©ŸK³ý}å-uŸxœuÁNÄ †ï}ŠI<»Â@¡M6fãAMŒth‰-T º¾½ìÁ£Ç™ïÿ¿L¦f"è‘¡ìÑiÄiD''R‘ì™Þ’U½Òèïv“)VÐZk'§—JrÎz-4:ãFï¥ò½VjÀñ/oF×ÒLk7pÅjä¹ ÁNŽ‰QŽŒ¼3G]R†7
u§£¸Î·ádoÃ%ÄJëÉ¥íxÏpà¢™áž)Æº¶ÝB­”á%Ô×ÃÂ9¦Lûús™›à°ÿÔºwÊ3Á~¬+dú<¨T¸Ã†}Nl&N&»ÛU¦>l¦4×=‡kˆsƒ.'˜È‡jH±@M`¾R˜ ”ÒLð½P„ºP!hŸ€£PCèºg*¥U~qíxœxœ­KjÄ0D÷:EïŒÔúÙ†¬r}ZcA,IN&·f™}vÅ+ª
j4"ÐÈQi1nTL¨)Í¥Lž¼ÑÆbš>;]£2`Eï½“‚‚B%×VZ.l))“´5fÅ¹kìµÁáJt-¼´ð¦Åf•à·?øýêÔúRj£óógyä±_~	õ¸ƒÐW!V-àÆµälÒ#AÿßÌ>ò3—Çì­B¤”K¹–£‚ûª9Bîý¢ß;;u‚y
Ìi çÙ¨÷W„ý]p—“*xœ‘Í’Ó0„ïzŠ¹å°e#[ù±S	µÀx j,ÕZRÆ!áé‘³[›Ó§Õ_«§†ôÖtM§—RÊ¡W¦ïHZ»ÒÊÙ5­¤Uªi—(N˜(0´åÁv(QY‹ª[ihìFQ‹ªí×ƒ\÷›UÓ+c‚oŽÿ`€O˜¼ƒ]¸MúÑÓ8bˆ—ZGÿš•l×ªoä¤’RÕ;fJð…áã”õvOóPóðèÓø‚oT§Ú%T²,"D8{ªôèÞY’ÓyŒÍi¬Æ˜sÅ>BÙ=pC Í ½¢øÈÀâ•u1»ÿl˜Ëa0#L™R]öË'ÒÎ^TÚNqKýÁÀÎSœN”\4µSÆ]ÐŸFÊÛ[Ýÿ5ªêÕç{YNò)&Þ'ãñY0&íYËº©›¢„_aÏ”¹šÃîG(!Ï,Â`F~ÞñÃ™*Z[×í['¾ÓÙÑïÍÀW¼Àç)q<Ç+ì<^wî»ÞpZñn¹à{–xœuNÉJ1¼ç+xvLwvdð ‚øCòòÒÝØ›éDôïÍ<z)¨¢¶’‰ :íuÇ©œÖÒIú˜œZò¤“‰b»Ï´pÎq‰ŽGR’´¥Ø'å¥êº€hŒ<ja"ÒŸßHÉHM˜b‚%kZ$ÄÞ EòŽ‡èÚbÏ|-ã–á¦2ÂS=p„óÇœÂ\¦µÐ|Âmy„Nñ^XË5‡ûœ5u™J¡/Sy­Îë–iŸ.C+¨áŸ{§<ìuž!Óg¥£À]Ï¤¼-°Dÿ5B?,þhÕŒ=Oßa r½}É«Ÿ¯ó6üœSeJ”xœ¥ANÄ0ïyÅ|€ÈNp¼–â€¸ñ†ÕxÜN,{•xç“hŸÀ±«[%uÛ Ò6Šq—(l'¯-X˜íèÕ 38¡»ñ†ÒhtÊñ{,Äx«Œõ1*3“º°vAÇŽïm©}&Y™Þù;íô²>bŸûp‚·¥¶•Sî¥ö÷¯WÒF)£­{Öô¤¬RÔuM­áß¢î#ý"ÐŒvMåðÎ×\gj•Žg;¨- ã`Ú@å,¸âœëíÈ–j¡i¿ARLBæí§Àãá}÷n{žxœuNINÄ0¼ç-qžÁK¼¡q	ñ;î$‰1¿ÇÑˆ#—VUw-]2" '\Q6¡(rÅGo5£4‚z„¡–9Ýf3ÆDsæ‰¼dž‹žöÚXîT’iâ¤“Z0¦5ùÓK•ÑÜÏ‰QN(C(gÖ1¥}£—¼—­eNÞ1”^ê>Ìpù<ÈÙäbÁå<¤õhû‹·&áD$!]Û®¡ÌðÊ[up‰)ã¶Ü®S¨î[÷yBØê²@Æ¯Š{FŒ9­°§Ÿ`}\íÞÂ».~¯x–ð¸„½<Á07Âè›»ÔÑƒ»AÚ0#ÛR¼gÕ¸‡é¸—wtþêÄv˜xœ¹NÄ0@{Åô(‹ØIVÑ"ÑÑÐúo,%öÊvû÷8=4£9ôÞÌÔŒh£Âz+Ñ7	ÚÊÉ¨¸òÆFñ‰÷Ì8rÕcävÞ¹ž)Ï<çÎ£œEÉ¨TB2Î¹£í‰Þêœ2|à-èx§¯°ÉKF7ëz²i}&)çt¸€:RJZwµâ¿ÑQª_”Ä}ÅÎ.áq	¥žÁÎAð2Ö-Gt`n®u)‚Ïi…-–p9æ5ÁOv"ä5‚Õ!T4D¼4dGØõ²!|ÎÍ³•vè¬ÄM¹†Rš³Yî[|X°‰ÞïÆ.yß™Ûù¯¿È7H…P“0xœ’M1†ïù¾q€iç«éjµZÁ7@âœIœÆtšTùèlùõ8¥Ý§•F‘Ïc¿¯ãA·}W·MÛ7ã44²o‡®—ª–íXïº®Õ¸U;Ó6ƒ8É€.ÁT÷ã¸ÛÈÑ­2¨°™$}=²ÕV²i6m3
™“õ>géàkv/äÝ÷þ¾EÏ6Ëi¥üñ	šMÝÛ¡ßmá}=ÖµàÛ#¥„¾!%sT%XM%x&—p~ÅÛndº‡ªîî|ÄJÍô †^@yçP%bFÒœ;ÏÉ¹³œICÎ|Ž27`}L¤…øeÑÁ‚÷À–4EåÏ,LB’a	–"°ªþ1àO‰íÁ™8oQ¬1©uQ³¾åÍø¡Ô,J"ÿC‘òŠM¨dŽXÐ»ˆ’wóº8Ÿ ÛÂtIa±Ä#Ñ£{—à$c¼RW'Ê¢:»ä®*ë'çgçeªŒ·Tg7´.V‹—çùÖã.Ç°Ï(J'tde,Š‹áµ+?r¤?ÈƒãoÊÆpá×q%ÄÚ;Ô•7¦š.o]ñÏ„ƒúdÅäO¾à</Ä å5˜cZi|ú¿ÅÖFüvö|›xœuËNÃ0E÷ùŠ‘X§x;MP…*6 !>Â«n›Çßã ±dy¯æÝÉ‰¤Öä&ƒ’üh!v£e‹‚²Uh;5ŒÂ4«I<g`ICçSØ{ôR:gmïˆ5
Ýw¥”]7ú»÷£ìµ9¬Ö£r¤V°BeÅpDFjô)yZ¼rÈ<•&8]÷p°{8‡9s<Ðr{ÔBvƒ’¢ƒVôB4µ½…œ9ÁsÈ/ÅÂi^¯ñû|©‚bÿÁš7N†µÄ‰ßoî$öàÓrkR¡i†¦{¾ZJË¶µÕ´†Èm)Áµ¹Õb®ìk÷ &Æåb˜¯uÊòÁ)Çàë[¿0ììÐ\mya”#xœPÍŠÛ0¾ë)æPHK7F’ã‡e)¥Çö”íègQ¤ ÉyûŽÝeé­½	}ÿ­ ‚çèŒÒ.ŒÖ‡~´h•tR¡Ý)Ûï£4âf
¦¨Ý¡ÞïÔ>¨ µ÷Öî½ÃAÉaßJkÝ÷·fnS.ðÕ”ÙMp"Ãç³]__Ú%×ÎåŽâ¨Aj½—ã¨á³ì¥._¯Ôþ7Wq‡7®øa.(âLŒù‘Ò…•ò/,…<BàH®äZažÉCÃÚ„xp½AËà‘¯”î¶‰¹‘ìŠ¥
”jc]ô0W¬Àß0eæm¢ßÀÜ(R{t,ÇP[Ð\ê"’Þ¹×éü•’cKSÎØýb
±/94fx
—½E›LúcòŽë„øY>|üþíÓ	ï`u]K×¥šJñ±ä\cþaí´ÌÂB':'ôÛÂÖ>Žÿ\\ü'#½1˜1xœ’ËnÜ0E÷ú
îºèØ•ñc‚ Z Ï]Û%z¤Æ–‰žÇß—šiWÙ íÃ{/MŠˆÐŒ•é›]'Û±ª$Vx×¡êºmÝ¶JéNÞéZ™¶Ù‰EEôR¶u§Œ‘J5ºïjìug*­·-÷VÝv0r4(ÔJ6Dø²*ßWrÁïáaÏåŸ[õdWuDWê0?BÕÈªmeÝîà½ì¥ÜFøŽ,|\“¶ððœ‹rÈÅ“ó„Ó?xßH(ä–qá3zr&—èFw‚£E¹N#höæÁ€ôBü¶.Á¢ˆ•´Eýœ€,ÂAMÎ8:Ca4‘ÖèÑÀp¾`ùq$^dàªá²F*á3¯Oj^&Ü\=(X;Ú &`òï¬:`<kv)åi®óóÈ›cŠç”ûÌ_Ur:È»RÞä¹¯2¦ÍgÛœìÅ¹JPTŒÑpÞ8­9ü‹¼0èšR|cÃ†ósoC¯4…„×é5^ŽãâöætÀ1DŽ›HŽþe3x¢Û¥¿ÜžÝa‹á|ÿÖ[?™Ç#ƒúd#G‹…¯8MGÇ åÛ˜•ÿ—xÃ-‰¿‡Ð*—xœOINÄ0¼ûý'v¼d2BqàÂ>`·ÛgQìŒ^OòÄ¥¤jÕÒU7"èŒdP*Xã)ê‹Eë¥Ð(;KÞ6(´g«Ûh®à¼²MT£ÕJ_å{‡ÞuûÐ» ÍÀÜ^ÇeƒwJu„×½àO_'iüI^Ò\)7¸LÏ ÆH!:àBÁŽë”j¥ÚÙ[z€[W¨î1QPÒÆ>G*Çp9ƒ´Ü§
w—w*cc­k¹¶íí¨ÙýÞæ4ï>ß'jOà˜S›J9ôm'cé6SàKŒÜ_ÿò.û£_wø›xœ1n„0D{Ÿâw©Xl°±YEQ”"MÊä¶ù`kÁ üÙlnsƒ(ÍH3£ÑÓÐŽ^kÔÂyÕn„ë¥¹çJ*g¼4Rp9HáõÀ6»c"@Ó´º´iz+­rØöÎcÇEiƒ•šÙƒÂºÃF
ðvdàùvš‹;ÍkL„óÅ¯ËÅ…R¼ë5T\rÎJºD"üçœ½ÇØm²Ø4Àbó2Å41ö0#|ãŽà°$g´ÚY)àþ”ánç/Œ¢-_ëz*èÃÀzŽéxTé¾`}JåçXÇœÌu#Æ>ã”p¨Öq¬ÜÏõ/Ø/e@}ô‘xœuŽÉNÃ0†ïyŠ‘8·8v¼DªPE%±	Ä}&·†l8ŽDyz’GŽÿ§Ë‰¤³Örå­!f'kå­¬1ˆ¼”¾¢£,¥.FLÜgPµ ß7VYÕh²B[
Ah³"6ÂaYû2üù¥Wè„¯¼FKÈ•«ßCdQ(ÂJb
œóiHðÀ1Ÿàzžšì>W±¥UìcŸ¹Ý6Cw¥ÂX]+a„(ÚÅœ9ÁmÌw3Á®íy\
fú'V<q:2ŒsÛBâ¯™§R8ièàƒCH|Æ6rÙá´ÔÅóûo÷p¿áû˜ãÃaÙÇÞÃ&ìxýñvyúº•o|xœ•ËjÃ0E÷úŠ!ûYŽ-Ji	RÒRHè^Q,°¥ Ééãë+…>ÖÝ]îÑœ¥€¬çœãFóN"ölh4gƒ0ÔÍ˜ÞÈ\V³–œE@— ¨ÔJ¢âoT+9m¹4†¶]©°£½¨]"–4ú hì-:¸)±*ñn<ÅT)?ßBÝRÚuCßt°¦9“ÜÎ6%üÿ$y~}Âõv¿ƒûál²ŸÛ,NÃ‹bÆ">~œ1rÔ®¿:ÿÂT ¼Ùi%–ˆò³ø#*Yïà"¦%Odf˜r
eÉjç2³úoýýub‚±8`JÖŠw.ŠâW>Ÿ¡Ò÷ò€ÑO—
²1.+ò×Ê‹–“5xœRMoÔ0¼ûW¼ š¬“x“Ýªª
-TÔV,âŠç%y8‘íìÇ¿ÇÞÝvEÅ¡Ç{æÍÛDó2MUž•XÖ•ªóTˆR¦Y.²yÍ“e^,
Y³QÔr5¯Õ"ÏdQc.”¸‰H“ŒsáïªT äŠgLN®ÜNRÃ—IoiÐ\4þ>¢«v’¤Xý%$bé'eY^À{¾àœy¶'çÐÀW$×ÂÇÉª.þ—\‘vØäŸ'Ë".¼œéu‘êhÖ‘u‘¶çPÓ¨òKP½#F*GkRvÝ ¤Ã
´ìÑŽR¡… cìG‹Ð)jp\ß¯¼vU žìNº½ÈÂÆøcöÙÛãVöc‡g2Á1Ì*\ÏÃ!ÒÀl;LÞÖ ›Œ>¦c/uÒ¸~J¡
xKZuSåÉwgPNÔdÂ[u;˜,³ÊÐèY_¨ÔOþîî~øvwóëáñúáæÐa=oß ƒj@«ßøqÓ8Æ±0{ßÙÿš:4¸—ŸÎ¥sRµÿ\dTÅ°á ÜÝÈ1Ø>ÛÉÆ†boòž,Cˆ˜±5«h¨ë¨Ü¿ö‡±ï¸&Üxa­dCpk¨/Ñx‘P:hŽLÜãåË9¯ø†ì/¸"¼xœuO;OÃ0Þó+NbN±ë·T¡ªTˆ	‰Ý>Ÿ“¨yáØCÿ=#ã÷¼ûJ&æGå…Á;éç<EÃ<Zm¢ÈPž¬jVŸi. ‹‘crR(Œ¢°*Ÿ´1ÎV+òÏOIØtÔÉW’Çàlä\'á£FH²ÊÇ]ãké—ï4”.uÃN·ÂÎÃ\h<à2½ —Î	£¤VÐ2ÍXó`§¡Êð:”·à4/™Öñ~î5ük>(wkGÈô]i+ðÄ­ƒ”—	>q)å~ñ•òóïñc»ú‚}Ó\§u¤ißwÝø¢9>žßVÂ!ãÒmðå¨míxœÍjÃ0„ïzŠ}Ärôc;”ÒzÈ¥Rz—¥U"%!É¾}e(ôšã,ó³S3"ÌJiËt?©ñ€%;L”Ò‰óuÏ˜å´ïå`’TÆPAéaÔh¹a›)SQŽ³@#&!Ø(J*‰Zë=f¸êX+¼«3¼”MìçM¼¹PÑïu\^¡çÓ 98‡•”’v]\­ø4>
Êc89/Éã²Õ=o6øÆ`Z—’P;ë4øx+„|Ý]eL²¦sÛLiõÞ…œJÁ\»G‹é>7b 'ïA¯9ÿg›ìXÀíW³m¿Ô]x+Ò]Ø@éž«»4»hínþ9>óù9í…¸–"xœ•PËNÃ0¼û+V\¸ÈvÒ8©ªª	½Ñ/X;›ÄjâDŽ[èßã ‚pœ™‡6x"ÈŒ^‰²Ô¦ÎõŠ2,Œ1‚jä™æ‚˜Xš—lBO.€4¢*”jHq‘Éó•È*ÒRi™5µ®U%ËR1<…nôðÐ¡è.ûSDï,lÌ—¯Ü®kçšqØ‚È«JT¹’$\qÎ";ØÈÃžlèàþ4›6Ç¤z;ëõ_v©D¡d´çÑÎÜy ÄôÖ0ºþ“çÐQ?A × èjðNÞA/çÐÛ9@ÒÁ8;º”±Ç¨Ü|×n Ým¸æ½³Ø,3?£ïØ/…1ø`[Gu26M¢/ë¿‹=ÓÙÒKLXÜl-<y;hò-læwí¦m¶ýá¡ìBU¶÷ã6xœÌ½Â0@a!¨2…°dÇwþ¡ˆÄ )bûŒ,YIèÙ b Ä LFª§¯yßÓïØÏ•ˆYk’j°Á€p PY1`+m@”Åè¤÷º™†Jef2)…è’Š¤H µ	èù]eZ4bë»“Ý‡Û»»hÍ¸ !š¦¬7âaÌìÌ1ði\®<—]•æ¥v/,—usÜ;-3‹´æ@¯çáóÞÐ5èžxœ…ÎKjÃ0…á¹Vq7`se=]B	í¤ÐaW ÇU$¢ØÁ–H»û:tþp>8m#‚y²„"©Ò“•ÑYrz
JsD$-¤tÈ…gw·ÑÒ@Û™¢²¨œ0ÑLœa¤äŒVJ£#­%çÆæzËëïy+{[ï>¨ÖG¹À)‡|®{#½—³Õ3j‚"ëíVZ£>©´o}N×gŒþç²4ªã1üãFYŽæàòà,•oð½ÔC¬½A-¾÷û*—…â°¦4øŸ—ž±_îþX¯—!xœ•AKÄ0…ïýó¶4Ù´ÙÊ"‹¢—E/Š÷i2iÃ¶IIÒÅõ×›‚‚
‚ßã}3—ì:Vw[!…6\ o+š·Œ›†Ä¶«%ï­vÌ3r	ÕRdH²šP4u³å\¡ÒX)£jÓh.Š®-pIƒp; Mè.Çe<apöêÓ+OÞaèc*•Ÿ®‰v'+.	›JVU‘ÝÉ¦DŽdÓ 7KTìO«(»U¬K4~ÁkÑÖ,ã"ã…;O´Q£…+@­!.óìC“ËJÁÒÙº":›ìÁèû²(ž×xü-NÃòãU<¾<Ð·y­žJ¸ÏÌä¦„vŒ0„qMødÖ¯$Ü½ÎbVn‹8“²Æ*LÖ»ÜãÉöŽôÆ³é.Wÿ^ó'ÿ‡‹wA”³eë8xœÌ±Â0 @EP1…@ú·óñ»e	ªoû"‘E¡"

F…àÞÛç¦_fU¨ˆˆ!û6s!«P:Dm;—$zÞ]eÖi1-AaÈÎ;k=Ç )"ÚL„b9-×þØðú=íe–á®‡K=›TÇQ¦lrM·ñ¿½>Íã*òî‚HxœÌ»Â0 PE¡b‚”ÁŸÜå,Q±G
ß-¥H‚¢ÐÀt›±
¼ÞëðhÇ}ËÙ žƒc›
zN9Æ>ælý@±Gv…BV€ã%myÙMÑ(DÑ“+H
(!‘"*÷NX-c ¨ã¹Áú9µ¶~».-Ó>Ý²‘užÓ¢FW¹Îÿðùnî?´ ,=›#xœ•ËNÄ0E÷ý
 S¥Óô5B`3‚ˆ½“8Óh:i•¸h†¯'ñØÀÎ¾:××6"Q¥j´ akQKY)ŠQ­ë–ÌZéª´k¡³	y]ØQÓJe¬d‰„¶S‚ŒmMm´éêJÕQ†3÷c€ë£?!lçaÁ;8×Z¾×.û]ä\‡(d×6bÝÔ¬D#D–Ôƒc¦ [rÜÃÕuçû¥ÉÕÒ\:Ï4|±W²­D²ËdÏüóVzp°4â<Mc`°i¹ˆÞ±{!X2Ð›<Ë{.~ïŸîèt$=³=8¯‡Ù8¿ËÞHFžcâÅ³O|œ–²§a¦#§ÄÛ4ÿ0CŒnˆ0„‘ M7ó¸„ÃÍq
#y	q"í¬Ó¸D§nçÉ¬FkWê´ù÷ÇúÿðåìT«Àô’"xœP»nã0ìùÛ¥‰Q¦L)AÒHyù>–&Ï4i«þû£Á5—b‹Ý™*ˆÀm¯ÜÔk4{áìhíÌ'3Ür˜¥Tî`ð0IÅ.ª`"£ÖîÁÅp˜õl¹æ{=
Û;nÔlÜ<Ì†©…|.ðæK¨”/Þ1Æ5áÙÿ+uótBH	»^ö=3ù|DXàyx]ªñð|ÚšNoÍKH„±kÀ;}â½è]4:+X¯É@ú:cçaÝ$È#œ°$Œ÷1coùr…üÕ®lK³”Ûow’+ù|›»\v¢ã{Ð1›PËëT² ìŸ¥Sàp£bÄR;€ÏÆÑáxÄJ@+ª„Ú„ÁÚŽ¨ô@°TüîgY‚m~6ÍíÁæ'!Z |Æ 7 ´óÒjM`Ñ…(äÔ1ö;Ú]vn§¯Oÿ‰ú_ôâe™ê´
šxœKnÃ0D÷<….`ƒ–õ-Š¢è¶»9€D“¶‘Fde‘Û7¾AÐå{À`fZeV8DAŒEFã²ÁkOc2)ñ4zËi” ·T¹4eQ¬ˆDÒÎfíbí0XŽdˆ†=æL>¤{[¶ª¾ym‹úºï´¨÷Ë}>às-{Ú®j018ªCƒO{][ãÆá|›Rc5m´œxæÂõòT™Ž´¤2óÞü¬sá©ÛDºüx{¥þ Ióbf’xœmÍNÃ0„ï~Š½C"»Iã¤ªPApâXqFþÙ@b{ÓÒ·Çi¥¾X3Ö|»
ˆP¶Š©Å+^òªÔZ.DQášKYr…E³ªj6©€Ž ^¯DÑàZ«¶F¢@¹Ö•ÖVZ]£0”­nk¦fê|€½éŽ#†[ØÐÁö|ç×‡CRÓ”?Þ(›º’uÍWpÃÓaÉ{"ðŒ=uð0GÓÁöc¹^Ä®w„ÃïxS‰²ôÎ˜;Œ˜™¡ßÀÓ¡³háQ‘JË„ÙÐzã!8ù@ŒÝƒ?ÂÓHò'4}{cBÀA3.vÀÏ#ý…²+4‡—É*Â3ùõB†Ø%®rÞ£wÐÎÎPï]\p·È¨[	à1åUÎØ¾K*óm›éÓæRâO«°ç6ãm²o ° wxœuŽKNÃ0„÷9Å/±npÛ±¥
Ul@B¬8ã&4/ÔÛ“VbÉrf¾MN 9ÛVz«‚Ó¼ó*Êh¼o¥ˆpLkƒÈ4‡hªÕ&Ì™ã¬lw2†(%Wbç˜`R;íaTèÄŽ·øã…Ó:rÍ­ƒÑ`;Œ ”o­Aˆ†qik»Ê–Ü/‰Þ0äžžËæ{:^n¢v7qæŒ±öËôD0Zuî˜b¬ÚÝiÈ‰^†üZç%a¯§ó>PÜ?µêéZË8RÂWÁ–é¡1†bZ&úHið—Ç„¹nªê£_~¨Ç¸RÜŸÎßèž‘mÅm×-c:Ü½_;Lm¬–xœŽ;NÄ0{Ÿâ/¡ÈÊIlÇFQPQÂŸ7½²E{{"à ˆv4M+ ¹!Ž£ôV§‡É«(£ñ~”"Âq­"×DÏÎ¶ 5ê³²ƒ“1D)%v.µÓF…Iìúf·6çBÏ9ÑJYüÝ¿çdÛlÓ!üÇ%5œ>¯Ô£Õ4|¢Ž+ÎÙN×¥5ü£!Íoƒ½Îù“fœÎ÷™tYAl
T7W¯µaí¾c/Xó´¥­"?Á–7[Žõæv/-Ç„Ðå;w½ûóûÀ'tK—xœ•Ž[NÆ FßYàçRÀòÇã«® ÊL!RÚ´ÔËî¥‰Ð—I¾IÎÉi; ÕÖJgdA8ÔZ
/ü4 TFiz@6¿Cm4h£0j!,jÐIkqŒÞš1^G¯E‰?[Zwú
¹%úrS¢ï×¸…k<çÚ Ü¦uy¢R»Ñôi)]MúwÉ­Á¿p%Å/NÞÒúI”bO˜¡±z°	I­mÇó¹‹Îpá¼äz~±ú± ¿›JæÛY
—ÎvSž+D¶"²ð}ÿKù†lº˜xœuŽËjÃ0E÷þŠ®“JŽ¬„ºh¥ß`FãQ,bË®,‡äïëtÑ]—ç¾¸%3C*X£4*£QêÆÛÆ#¤Gg©Aê´ô
U]Í˜9PØu¨HIj:¶h2aÍÜXí¼&%jb”õ—w2d§HvÎÖ®&–}Š„“&t5¼‘NV¸–~ÊðÉ±ôðº.ÔÃñò€½À)¦ÂÃž¦ñ¤r¶Ù>;¡…¨6uŒ¥p†÷X>VÇ4ež‡ûé¼¬þŸZõÅùÌ0¯Ã ™¿W^
<Ig äi„„—8ö˜v×ç0x\ÚrŸ§6Ä[U½Å<¦ ¿Äé:rK™±p;â­M[cÛürzŸxœŽËjÃ0E÷þŠÙ—Ë=\JéªËn
Ýš‘4j‘äIpþ¾ù„¶»Ëáp¸Ò™!%LÎ¢!´†”ÑÞigí¤<-.h
Ñ(„óp¡ÎU )FÂ€*èÈŽl"43kgoNs`RGè*§Öáƒ:m¹œ¨Â¼<ÖÛ9×ë>Þ*Ë˜}C+¯ pqÚ8§<Mú8Z²ÿ;0¼çä~iÐ¤³§r…z+¼†Î$¼Ú×º­Â›üÕþÌß•ã¡¥tð÷çß]~ ;xTŸxœuŽÍNÃ0Çï}
Kœ7ê6ŸÓ„&8€4ñ‰ëlÑÒv¤	oOvàˆOÿû'—Ì£—Æ˜@c oŒ„Ú)-”´ýÄÚŒb"éDww™—ÒÁ8F=†`¬÷¤T˜ô`Ð™¬ÔˆÖùþoŸÐ‘Á¡—Šx4z3ú¾DÃû@ƒ$%:WËuÍpæX®ðZ7ºÂñö0{ÿ0§¸N{Zç@aÄÁ(»^õ}×Ò9–ÂÞcù¨ŽËšùž~N—¨þŸ³î“ó…á^S‚Ì_•·Oh%„¼Îðv®éæò±Íóì¶Æïºå{æ¥x 7MÀ9·ŸgÞ6×@¡éG)neÿv<lÚxœ­±NÄ0D{Åê*(.²;¶BH”DE¿±×ëçdûñ÷ø$ ¡¥½f·f"&eŒ	nn²½$œÐ8j9*Ë=i3HïJvÂL©‚š¤$Ñ;-ô‚±ÓäÆ1xÝaœñVi!,Nœá¹Î[†§cÅô‰ð|^Ž˜S„{÷Ãºã7{œ¥vn[@Hk”àZØsÍ9ktµÒt±tYiï–xè=PÎmâJ¥à 4}õa‰­€±·ÛÁ3»ßÐ®ã0yø˜)Áëû§KttSnY,¶
§L¥}®c_™Œw\—xœ•ŽAnÃ E÷œ‚8SUU”mví	f`ˆQj¨œñ¢·¯#å éò}éýÿeeÖÖ[ÐL
Fã„ÎD
`!”È>eÌàYýàÊM4ù’ÈŽÀDÆMÀL6rŠ)pt
7™ûª/\eÖçížfý~{ÀpªMøûúò¡‹“‡p„I°¯«=]ªÿK·`žºúä+7^QXçž¶e?ŽR{Sê«^ç¡—2ÐïÛ+õêq]Ÿxœ•ŽAJÅ0 ÷9Å»À/¯Iš4"".Ü¸ð’¼üÓ¦‚··<€.g``zc†èüh’UÁ9çµ–h(oÐ:¥P9#‘ÐÍ	E¥Æ¥ƒ‘“µN‰õL6ÌÊÈ0¢R1Jæ‰ì$•ž}Ù¼qî¼{Xàñóƒ¿Ãs.oCØÖ'µ›'´£‘pA(N»æÞù_¹tö7¯[[©÷\®pÔH…øØ¶TkÛjË§ƒ½Rà¨Dø¢SùC¡•÷Aˆ÷|-/[Jÿýð—ñÚiFž#xœËNÃ0D÷þŠ»c‰œ·SU¨bƒKú~\7†Ä®›R¾'¢ªT±`ciŽ<ãñ¼Õ´¦B#R`ÙÊ–ª‚g´è»F³ZwŠ¹G eö•Xvš5X)Ù÷ºj*Yw¬(jY6mK+Âcœ‡çÈ-¼Dûeœ=Àöäû¯Ú‘ŸÐäÒMPÔ=£eÑµ5ÜSF)It2! ‡W4a€§8Ë¶‹ÈÅ"vÆ¯ö†v%k!£u²û9a&G³®¸Ž1dÚù‰Pf–ÞCj	Á<q²ÑÙ‹õÊ`iÂ­‚Ï`¦ãˆSo3Ý÷@DRˆr2.ùúŠÓ+¼D)‡³½àQ(ƒ™sØ§3íÒ?ç³•ƒwÖ|ãüGÜiYdÁ—>+Î	y3‹*sZgâ¼ùïú·¶,N~ IWÄžxœËjÃ0D÷úŠ»/²,YR%tSh—ý€ Ç•­Ô–‚,õñ÷u Ðm7gàÀL-ˆÀ¬´AÏµ¤A§˜µ‚KŽ{É5£BŒ#7S0UÐ£ƒá{:Åã‚[M©WFÐÐ÷8p”N;Ä´:çÏÍ$xié+æ4ÁiÚñúKç¹™OŒ—×Gè¹V”õrà*JÉÞ®±V,ðŠ±ÎðÔ67Ãéý{‡sL—?]PÉƒŽò]'écÅÎ-ñÆ{¨¸Þ°˜Ú
Â†iÛ—…ˆ‹ß &¸n9]¶Õ”zYòDÈ[œú.‡ÐÙïã/l’–xœKOÝ0F÷þ³¯9¯ë!„º©¢û‰=NÜÆö•3æ–Ó"!$]~£9gœˆ`hœ±9©¹»±%;L¶Õ£µÒŒJÙi”VOâŒ‰ÃÔô½Ai¨ŸTG¨¨N¨š®S4õj@¥†Iöz˜y	~dp—ÃÃ×K‰¿ÞÓíšñB®ÖÑß@Ó—Qm£N-|“£”¢T½c¦÷äx…ïy×+\ÿ>B=áÖ¦í¤jG	•ì.Â‹§Joî
Ðà•’Ç<\È—XG›ÙÁ–%w‰«-.Bü|~ hêŠ<E“5A ËW<“?SBÎ‰ Ñ†LF¼;äŸŠÎ«ái;•ÉýíÒ[6$ø?É8aØ—Ž9ðÊGWä²;Oµn	dªhm5¿^ýï£Å©¨®˜xœuŽÉnÃ E÷þŠ'u¶¡Šª¨‹ªúÅ%_gÑe—çêNµ í9*)Ã‘Œ¨áÔkœ,AIØ8ÐIS3uYŒØ0¡ÈÈ¬h8–Ž+îœ Ôõ“r –Ê?ß›Ih§¡¨L+e¸dºßmnRÌ*ÉG­;Õê’
|¢¯¼´Í,pú¾ÃQßáìcÅp4i}Ê¥c¬‡	évuõµb7_ß›†SLs¸ç½ ébÝ–!· àOÃ­Â•\I+ÌÍ‡ËŠÙ“‚\Õ¶Ot]¼¬x0Á?Á«¿B½å>ÂÇýäÐæT´à×\ÒaÆˆÅX0d¨x­¿ÜwXœxœ¥ŽÁjÄ E÷~Åû5Ñ¡”®:tWè}f¨1!ó÷h¿ ÝÝs‡Û"ˆ‹Bg­“8ñ	Ã•ˆ>øtàh¹œ´˜ágV]ÃÒAêÙÇ'¢A¯¤	BGåTŒ†‹x™¥µZa™Ûû}kpÛ)Ý±e„ÛŸäý–^Öú³Þ•ý‚}¤%~Ë¯ ”5šÍ5\rÎž6SïøŸš‘ê·ÆÊ‘qð‰®ðN'ôGÝ€
|”Ž	jÚ×'¸€rmÛ°bÁFî˜*t<;c_´Ãã°<®xÅ¾…z´‘xœOËnƒ0¼û+öÞ‚ð0QT¥•Ò‡zÌ{¬€AfIÛ¿/TjU©—îe53Í%Dp®±ª¬jkS‰R(î|+i-R+4VIaÙdF­Y£–¨+ä\
mu#¹imUøº*KoP)-$3uc‚“í¦[8^1Âþëç?Â!"™iÊí8ÜWÍjVuQÂM±[Ù!a‚WÔÁÃ2Ûö—äí!ö¿íeUÈ
µÚY¼˜Ù>ìà		ÑÐ’æešÆDà×†ÇwÂèÐÁó8¼8ÆŽÑ´=þÖùÁ‡µ‰ïÍÂó„vc„Ö½qž³û~Á¸ÍF‚ÿ¤âù+ïbhÌ;…sD—ÞgíÇî?ëØ'ñvŒbž$xœQÁjÜ0¼ë+†\Y¶Õ(„JBÙ–î%ÙÜeé©VjË‹$·ìßW¦ÛrÊí=x3óf&G"HãdO²S’7h²Šx×éˆûYˆÎºR;êH!C9ã¥™Á´í@D°m#xïÈi¥‡ÖhÁôšÇ%âÛ2ê(ái\ç4úpó’ÿÏwiMT[ºEÓ©+ÁÛVõøÄçÌ,óìs¦ˆïäóˆ/k2#n~mK=lË™¦ºžám/{‰ŠwÎÂï™*3ùkhkRe)™„´³–±ýóBS·°äüöc	{=S:jCØÙâØ;otöKÀ}!ˆþ˜—x3|øÇr>=aÿX«>½^DÊk	“O‹CZ`ô4‘Å«{“Jï´þŒ¾87kÜ
˜N°¥P¢¨ð>v•ì.™Æþëaw’ºÆ¡L5cþg [-ÎUÃéú£m¼‡} öêÄ¡•#xœÁŽÓ0†ï~Š¹£¦Nj×ÉªZ8€àÆò“x$ve»­x{±•\ö6¿ô}žñ_'cU¶•ŠCRkc]­’jPF;{À”¸`¢P ºuftµqÎÈ~èj;´úÐ,Ú®ŸHvFàµø˜àKôeøî¯köœœ~”Ç|Î×L¥ghÕ`†c§ÕÞÉNJ1ÅuåR(ÁWââáÃ5ON?·ÐŒ[8s(´4|Õ‡VêvRU]8Où	ÐZð1¶/…c€aŠõ¨©À¶ƒâ}¥0üE\0gà:zzèÛêzÏñáÁÂ ~!Ð}{Õñ,/{*Ó>ÜVÚÿ±!^xdwÑ¹Ýøëé­ÕˆotcºWq“>úÄ¹Ä‹‡Ï´,wžáäkK.ÿ³/83|J¼Ž”*—k<Ï¯±Y+ýÏAo(ZüÔ±½(ŸxœuŒKjÄ0D÷>ECÖžÈr[RÃ†,’@È!ôiÙbü‹,Ãäöñf™e½WU%3”Î´Q+ZÒZ¥à;I>ä":eZÕj3ÏÐÛNKëeçŒW¤ZI²%Õ2QÇž$BšG?:´>¸®u±Q‚H†@Ñy$BÔÚs+»—aÉðÉ©ðºo~€óõNî.i.<žü2½@ƒ¤Ii­ÔB	QtJ¥p†÷T>vçyÉ¼Ž?—þ8ØÝ?³ê‹sÏ°îã™¿wÞ
<5$!æe‚œ—Í–’žcºÕÛÊã˜æ¾æçªzK7x0øcÛ/ªhqŸxœ­=NÅ0„{Ÿb/@dçg%„¨ ¡zÐ#ÇÞ¼XJ²ÑfCxçá(\Œ<¨èéf¾ÑL1*D€É»®-ûÆ[bÓX˜bå0ö­§>õ¾«Û’¬Y‚Ð¬àc¨¢«º6ÖØ$ºë’+Šèü¸Ö„M8q’|f8ðÆ÷¯O†;ùeoÂkPÍëòXDžîáÖcƒu…háÆ–ÖšƒNY•þcË<æXÇ<ŸDXVc^þØI"‹PTJgXy"H·éø hæú<ÒZÀë@—Ÿ‚YÞ¯#Ûû@3¨\®Vd;Ü@ðœgÍáÐÌca¾Ïk’–xœOËNÃ0¼û+öŽÙŽc'U…*NHˆn~l«‰SR»¾§EBp@Ìe5»3Ú™´ ‚ð–‰ºí¤ÖFß8)º¶í%cœk«”ï82r4ÆÜaMƒÖKiê¶@(umcz+¤u\i£19ó/s†íÇœ§÷Õ×ÜÙ¼a¨Ü<Ý—n:Íµ€V@Êv
)áÒ wùäØVRÙ•ìBL8~Û•¬ëZe%5!ñ<!ucØ€ñ‚§.-#ô%ËårýÇ1ïiˆ!«
ž1ú¢È1¼f„5‚‰?Í÷WŸÇspxªÈSØGôtî{jß7—ž¥ÛŸe›þQ|hA‰E’xœuŽËNÃ0D÷ùŠ+±nñ+~HªØ€„Xñ¾öuã6u‚ã´âïI,ÙÍŒ¦U"ð¡wÔ'Ë{†Š}Hu°#*/ð“Ýì+•¨¥DÒFj²}Ô. Û¬„‰;.Sè’Ìá_¾çŠxd˜ˆ™
MÚ¢VŠ‹èt!	n;¿¶aªðA¹ðº.a€Ãå!öøÇ\û0]_€+gz%2°cš±ns¯¹5ªð–ÛûŠp(S¥yü9ž¶ÿ©uŸTOó:ŽPé{¥¥Á·R®pŽTk—çe˜î»Æ¹ë¾6„Â} e‚í²/ËÍ9B¤[yS¾Qù•yoxœ•ŽMN!F÷}Šº@Oøi 1Æ¸påÖPP8=Å±'ÞÞNô º}É÷Þ7:„h<™¼J£Ð	GÉÄLÉÆ5JÄ%h§‚Æ¬Ôtx Z­‘¬Ó–V“¬è”1K/uŽ
}VQxœÂç(­Ãkcx¡Þk¼Àã{ã0JàSú!Ï•m§Ø®O ïÌ¢¬ô0+ÄtÐkƒþíÐÊ˜_ÇôVÚ
m7¸bàÇ§ÀPy[Mh¯‘ ~À¹îÄÇ ž™ÒÜržñëáÏééU2k”“xœuÍNÄ0„ï}
Kœ»ä¯q"­ÐŠHˆ‡H§èi"ÁÛ“=pàÀqÆŸ=—LŒ³HÌ	´½dmÔÌ¥¢ÃAc•Vd»ÃeÚ
 äVFI1Œ‚;ePÚh`¢mÔH^üòÆ±Ár"®1!…Ü†Fg-Ÿ£ï\-óžáR™á¹žã×»¸ø»¸¥­Ðr÷õ	¸²(Œ¬‚žiÆºæ®©Êð’ÊkõpÝöLÇò}›ÚêÿYëÞ)OG]ÈôYé,ðÀ†˜÷Üá&RòñS
g_Oê]l}lëº˜¾à¯iƒ_­ý™¶é_¢mç’xœ½nÃ0„w=Åm‚$PbËŽ¢hÇ}Z¢¡¶dXrÚ¾}éýY;òp÷‘Ç23£r5›“míYû–mÛëŽ¹o®ÛÙSew²Öh5ÑÌ±€l{¶ìkWY_õº"ÏÜ£7ìLgLu6Än-åšf<Óœ"^Ã0ðŒZ§ñ><ùþ`ÓøˆcÝ5í±6­Æ^·Z+QÇP
ÿ+¬|øÀ’yO^{¿v“‡à2¤Eñ¢Ô‹Áñ-XF¹RAÈˆ©üö^)#‘id)½±Ã2áþ«{xûNy‹iæ¼þè‡±¶h˜Rˆ’Ê'"é€Ì|ã(Ž´\®ÂáÏÍÑ³hëÙ·E·".âž(g9¡$ä8Íô…ËP¤Ðº“ÔßÞõî
ŸöšxœŒKnÄ D÷œ‚Ý¬<æÓˆ¢Ñ(Û(‡ ¡£ñgdã(ÇYäÙ”T¥z¯nDÐ™è‡hÉ¢TQi/•¤¢³H>Èl\ò™½ÂFKåÂ ð€@.d›’QÞ!$GÂ†&“9	0ÿ­‹”!é˜5
2Ñ€ÐP2ÞíL A,u\7þI¥ŽüãØãÈßŸ­\±•{Y*M×¸Î7.Á[e­—À;B°sK­ôOœ}Ñö Ž[XNì2‡ýT]øšùXëkëûÇ):°áýT–ã§[¾gê[tq*ì?ff«•xœPÁNÃ0½ç+|§Ú®KÒjBƒ+Ç}»4"I«4›_OÇ`BœðåéÙï=ËÎ‰jÓêj4jÜ’­-v[YS[«¶Û©ªi´‘¦SbÆÄ1C­¤e]M[¥[T6Ôí´Ö–[”Ã–›jÇ’¥ÀS§G;&SÇÌgŽ°ÿÂÍ}pˆœqž7v
P·Ôª’RÂCµ–X»ÁåÌ	^ØåžO‹aÿv%s%3û»]5JiÕAYµ«]ÄsàÒz×ƒ£Òæä{ ·Ì/€D.»)¢‡Á±§Eˆ§¿­1S«s. à»T€›¬]>®˜nhi†BÜtëÁa!C¿3ÇSÀX&FBãˆíDÃú&?#`$X^ýò½z#ÄÑ½F¦rM-Í¥ÿÏÄ'²üš²‘*xœQËrÛ0¼ó+p¯¬ÑË’˜Édì¦­Ûfìvjõq¥)Hb*‘>âäïÉiÏ½\XìÞ"BU²ãõ)ëÖ%O“6Y×²˜æ²î²NpÁy]È:egaQ{hùšËu{Ê°èêœcRge‘ˆ¼£üªJ³u™Wœ§œ‰àca„†ÏA?+£{¸í	>¾¢ÍÄU,ÍtiÁË¼®jÎáMR'	£ßIyPùÞ'¸ý=ƒø4ƒÒÇåUVUuYÁ*)¨œé§	WrT7àsÉX„NáØ:èH—jWÒÛ‘±Ã=Bç 4}˜6 —¿¹.PWáàý»cÓD@ç—>üü¾‹àã}³ßF°?4û&bû_óÇíáÓýö+±y~@j„ºSþ¤ÑÄ?Žä¨^€ó6H,ÆÐ,yWA³o¡ÛYu[8[bš‰& Õ«<^ÑÒàÑ=Û™„á`–˜ðLŒ4ûÐð°=^€r³Á1´Ho½(;[|R&8xA§àÎ(#Š*G÷³õÑÂùl¬wKàJ3öÊñ‚íêôrGÑ+ØY5ÐÒžÁMÿ
ã	ïØQõšrM×-ùÿ±Tö¡$Ý—$xœÁnÔ0†ï~Š¹“l'›8U…º-P Ê‚”méÕk7†Ä^%v·åéqC7ÄÅžìoæŸ	"TÈeÙ (ª=eJ%ua(/×´¨
£DC«µfä('txÍyIåZ–¬*‘#g”JQÆ)61h4S¼fDÆÐû	®£tð9ºGëÝÎI~Q}”'´¹òã[`eS¢€7TPJRv´!à7hC—qV=œÿxùþY\Xpøƒ×¼®ÅZÀŠ–	'îaÄ•ìH­ÁXô‰ð`uÄš'PÞ…ÉCê¡e0‡)ª'$d{×"°¼H„JtÄž^ëÌ1y‘3¼×ív¤óK¾Ý^gðñj×n2h·»6½´÷ËÕm¶Ÿ®6_ÉÒ?ô¸x06üÃC‡.î1æ°õS(ÜlºßNÀÎ©¦¢Æ»¥ôqÂëã/3ðœÁ|D•Á>p>€8ÚŸ‰×Uå„töàP¯¼1«ýÓÙÿ¬žüŽº½Qxœ•ÍNÃ0„ï~Š}$¶óÛ
!ÄG8ÛÉ:qqí(Þ”æíqª"q„ËJ³ûÍÈcZEß™¦lES×õ ¥’¥neÚÃÐª²DÎ±Ö¢*Ù¬ô²•²âªV•h*”(çª«ŒcÐ¢—­`j¥),ðŠ–&x^c?ÁÃç.r½‹'ë	]Þ‡ó#ˆêP·¢lÚ2ÞpÎÒöl‰ð_öŽ7w;ó—3fó’˜#¼ì-ƒwP˜3‡tpŠÁCÐ'ì)2öq¿{Ä!A`vMKô›Á¦éTÃvã"¤Àe£Éú‘itá+9¼O6Â¬(½ÚØk¢aÕÂÁ‚qu”}ºFJ2gl"šã±(ÆTvÕ{ÅÂY¿^³½Uq«Ö;[ØWŒ…è$covô8dÁ˜LoÇ¿|û²d¨"xœÍNÃ0„ï~Š=#µ²S’6BˆBBpàç6ö:±HìÈY·ôíqzDgwæÛÑr$‚Jmkk¤5¸k¶YT™
u¹©l£Ð5
7µ$1b$Ï [ÉrW–r‹¨¨Ù¨-ª]S Ö¦Öf
ªR`â.Dx"ÇÜ§Iwpó9‹u3‹;ç™úµÃ-¨ëºT…¬ªVòZJ‘§ƒc¦ÆÅ+õ„ÁA­7B¼cÛ:ßžØÜ).ë½ Wðà¾h‚L]Ÿ/RŒ!N€ÞÀ£ÏÁéšÂ@€QwŽIsŠ4]¤9 wéŸfÚ	‹åc4È´ í¯=$Ïäyñ½ÐäM>6ö)WÃ 	äÎŽgçó2ýð2Åb^Ð½k;ö‡á¢ÖÜ{Dý‰-AKž"²^ˆ7×z2«`íª9íÿòdñP¶0“xœŒMÂ „÷œ‚´á·€1Æ¸u§'€Ç£m´´¡táí­žÀ¸›oòÍÔ‚HÁš Œf‘ë¬—Ú[!¹I–»  IðBY|Á\©QÖ8B+—Èh4‡¯;™Ü3pÄou˜½âXzÙVèññ6|à<æŠÏæéD¹ršs#;G¦#{;µâŸsrÃ3_‘N>7‹ïq%ä>öc3§Ô„×á—kò2ZÉ›)xœQMOÜ0½ûWÌvq;iB´½µj/EÜ{‚‰ÚãEûïk‹DÅÛŒfÞÇ¼¡ˆºD«{¥Ô|è¦yFJÙ*Ñ7­æø-º™m*¢'h›®iF¥f…ìÕÈe3NÍ0´}7ˆQŽ“”Z1•É†?‚UÞc‚[›×d]ôpõ@§ú&å„{ƒ×ÐˆQˆ"&[8ã-çL‡uuDá':²ð-'máê±6û©67Î.û²ø
è[ØqQàlVSt:]‚2ÂF.x  á€1:ƒ`¢+e‚¿sép#ËØ÷ë•ËKàÁRrÓ‚ïÐd^Þ˜Î*/ôÂÈžá©Z¯Ëþ°"”ccÚ”.¹ÅÑñ¦L||²èaU>«¥vÑ‘ó÷Z“W+R•(*Ù…ÁÃEeÜ<h[–tM«ŒœÆ=c_ËÝÊtz¥øÐôK0—¿ý¾û…ÏˆS…ñ»÷hvažwÓñò³¯ýö‰w²S5ãœáyxœeÍ?JÄ@p"¬é<€ð5’F%3“ù,EOá
_f¾˜@2³&“]<Æ’ÂÂ{Yy	oà6»WüÞ{«ïÕ&DÀt’,	^#Jfˆ´¡¼2¥"GeQ¢æœ©Z¤[ÈG0ZhÆ‘ç¤rAš4CÃµµ•Pª¦J£uÊré›â\ò¢dúðnÖ’1-„9|Þ]vc€:`ƒ÷dãvÝ1÷=z7_$ëôu¢‰`~N®î³²?.û…×i5E¾{ƒ}C¦±õ/ZøBç¯äá); Æjhíû66'ødð(\ë`;Ð®ÓØÅ¥“þ?¸=ë ”nñ•xœuÏMJ1à}Ÿ¢Àµc~»+0ÈàBñC’®Ì{’6ˆÞÞ"®\¾â{ª"•TÜœÌ41Å­ÊŒƒd£Ô<híƒÀ0¬¶Pª œvjÑ W^SçÎjÉ($ÄN…E>ýzq–ÞOš“¨µðv=…ä>q=yÓGp°­žsŠõmógØ¿]ÃÎ]Ã!¦JËÎçË=pe4ÓÂ·ldlè×K¬•
<ÅúÜìS.´._‡ShîŸÚðJåD°¶eBï¶
79„’/Pí¶Ð–ÓÝLÇ­–˜NÇZZò¶Æœ†á1~Âšk2Ú:ŠžàÇÁŸû0&oó4xœ•RÁŽÓ0½û+F•*XÑ¤q·iaWpAÚ3+íPå$ãÆ"±#Û)”Ó~üÞ~	ã¦+®p±ì™7ožßLpˆ7UY”|—WÛÝv›•\Öy¹Û•*²M!¸¢Qy¥Ø(š e-ê²ÍEUí*^6	^KQd¨T…UEÐ\V|Ëä:ëàÁš3|ð=zkà]óí½Ã¶“!mìp¼Ü‰Lp^rH2‘eŒ¢ƒÿ§Z”›k5û¨Àh©Õ²‡OºAðÁis„à&ÓÈ ­aì±Ó=‘Œº¹ÉÇóØ4°MyÊáœ4 M°W:g_SÆÌiÀ´ÙÃ½E¬‘žŸ~ùFšu=(ÝÓR2.¤âùé÷þ¥‚œÞb?³ícÍÒSZíhNv
ã`g¨ñE4¶ðÝéE.à€Å4©Ë…€úÐÏb%8<F1V×?iÆ‚ÃçäñÒîVY7Èü5âök¤òf$ƒ‚z=ÊÐ­.uv~Ü¬`±ôK¿XE/éHîÚƒ‘Þ¼eì¡ÓÔÕC#'Oúj¼\ tõ¤tÄ—²ù‘ÖôgR´¹*–¦yÿnB:3G\„\“d¿¡zÚ¾ë)½X“˜5iò.Ø7 V¬&Óî_‘ÎN¦%A³Aiy=-ïºº´Ùë£â>“Gù¦¤i~¢¶‰U*©ÏûØ<ökH™xœuO»NÃ0ÝóWbnñ;vU¡Ò$ÄÄ\Ç×­EÇFêß“2°1ž£ó¬…¼"¥‘9¹"ë0j¦•õFÈ ZÔF¸ ºÍ¼ÓNy'¤ g1¤Õ™‰¤„ëíÀEäÆÈ?}tH)<·a@ã„ÖÂJD+!lu}ðÔa«×\àR½Â¹­ÃŽŸw°÷wpJs¥q?äé	¸rÊš^q;fë6vJµR—T_›‡ãœ-ãítÙšÿÇÖ½S¹,m¡ÐW£µÂïÄ’'ør­·36*sNÙwÝü=ÑnÓžC€íášæ¬mYr©·ù¿Â#jö–xœŽQnÃ ÿ9Å^À†5a£¨jz…œ`1KŠƒ…q¤Þ¾Îª~Î“žfz€‚ÈÌšlQ<qšô„>8c£Õìyr†"ª•›”&Â@Æ!O¢}´~r¬]4töóhÒèœU¼÷ïÚà>×Þá‹wipÝÞp
oøÌ¥Ëó4×åF$ôÎ!žaÐNku¬Kî]þyWåµÈ0?ón1ÂQ¾åò€m_×Ú:¤#«Ô\ƒR÷ü(‡šÒ~.±©_Ÿ‡a+—xœuOËNÄ0»÷+FâÜ%IóhÑ
­öâÄä1Ù$MI¤ý{Z$Ä‰ÛØ²=v-ˆ0èÑ¢vŠ05Jª¥í$¨e^ÆGËø ùDºEœ+X¥·8É	­H˜vRÊÑXã¨ŸÑh4Ê_ý&U8R­¼ƒ<UÌ:+”7NpÉ1Ûc?¸N·zÍ^0Ô+œÛj¯püØÁÁìàæŠñ`szÊ'.™‡žHBºM¡V,ðês3pœsÁ%ÞN—- ™lÝ+–ÂÒb„‚Ÿ×
wTàKNðfs­·³nXîß×<ëç¯„ýO“®û¹mðÇBHKÄ´ß-[]Z¿[“.µùò~Jxq—xœQnÃ Dÿ9Å^ Æ&ªªªWÈ	XRW,g©·oìJý®ú73š'ÍðJg#a”F§‡ µ¥è{M‚±c4öŒÖ+±àJ•!ödÉåHÞyŠ©'e09çÆCÒÙ÷
) 9´®±1Ã;n´ÂË}7]ØÍÛT™æ.¶ò
ÚzëŒSÎ‚TN)ñLËÄLÿÄE}’qž.p¨£SYf*û‡Ï{«Ð6^6†üÜx/¸²œÛMˆî´ðCüæS)î”èq”TÕB\§[¥$[Î2|]þ2W|›y®šxœ•OAnÄ »óŠù@–!¢ªªzí±/€dØ &$
dÛý}IÕ´‡9Ø²=vÙ‰ÀG%„(Ð‘©§H¡m­CÒ­ñÖbè(h¶¹Rn”AFê =Ž4èòWå¼ð®E#Ñˆê™;Ê´îðF±Lðzäa‚§\ü	^b*4_†uy†«²JêNY	¨eXe—X
ýËÞIýkgé¾P3Ç\zØöªZ¶ò€“Éð9Q‚´ÂH÷8P†º«ª(×uŒM¥l¹çüV?þÌçsLÇWsFòŸÜaŽ<æ|PæWŒ½Ç[¢±YChü£ÿKcö yì˜xœ•ÁNÃ0†ïy
? ›Ú¦ÝÒ	¡	qÛx7q×°4	‰ÚÛ“2N\’öïÿKäŸ`¿eWõzßÉºk°“{2D)e¨-}[£©yÕØI¢RJl”é÷e­:ìµVØªjO!Á‰,Oð¸d=Áýe¶Ã:­gr[æ¨Û¾­êVÉlª]U‰¢Î–™þ…÷M÷ƒk6š“;@¢9|xúg=eS˜á-aá¸°¯“Í‘Ë7wžÈëÏ+ùÌœÊ&ßzùbc±(¼ÚW2D¶Á£ƒ¼ùšý»;~otðœ‚så.Ê›>0Ø9:š×d-o…x¦“Ù×œ’Í“Gxšg#:,Ü$s‡ïãÅ‹=ûbãxCþÎK|?	ª•xœMjÃ0…÷:Å\ÀA’m).¡$)”BW!'ÐÏ(±%#ÉM{ûÊ»ÒUVÃÞÇÌ{%!å¤½m‘¡°Ì+lgè@-UBîá­c–SK•0pŽS³ïgšIƒzÐ|`Jhe¸Ò\st½•D­eŒ	®—œUÁ‡¬·yLÊ—qòagâü
¬Z![)zh¨ ”ÔíìKÁŸXp^³ápßÄNoâèCÁé/ÞuBV¼«8	_36Kªžx÷ßP/!äEn4—âc äd-|lŽ%Â¬îeD8]/ ‚…ÓÛÆuV*«ô„×²¬LÙçR[!íËX±ÎãdóŽ«¿´Mt®Ñ?/Ïñy"<ùÓÛ”ŒœxœmPMOÄ ½ó+æ¨1Û@¡Ýv³1ÆD½Þh¶Äj]õ×90ó†™÷DPUÍçÒš2Ñ´ZÙÔ[ÎJ&hÍšºa²ê¨$³\Ð¨Úª©T/¥f]YR!TWW¬l5“¸åy¶W‚×["cÜ/.Â£±GØº8¥¤øŽ‡!Ê3š¢wÓ50Ñò²¡œ2¸¢éTL¸À=š0ÀMôý û×Š.ƒƒ±Ç¿qN·%°¡"{špÓfw«Ìc<nŒ-yŒ‡Y†Ä'•òàã<»%€NnŸÑª¢5o!›6µä§o…'Ó£/È­GwÎ?ûmKúaCÆB—ui'\¼qœ†Õñ= Í•!¬ ùN†LÈÆj>f“¬œÐÏ²Ç5ƒ$–´ù±ÂËì‘/gò“1xœ•RÛnÔ0}÷WŒÊC[AB.ÎU«ª€„@Hí
ñÆÊqÆ›Q³ve;{ùû:•h_€7ŸŸ‹ŽÆ[DÈyÞ•Š¾©2)ë¦ndU¥iÆÓ,©ººH›¬ÎËJ°GaQ{à\Õ²l8çØä•Èk^×E‘©,íe……ª›Š—²SLL~0ÖâÝ ß„îÉÃÊ.ðÞO'´"–f)oò$mê¢‚×Iž$,L÷ä=Zø‚äx?99Àêaq7ƒ{ÒÇ?è¼äyQÂéÃ#9RéÝDcFƒV%FÒÓ)
y¬¡>âqÃØWÄ¼Òrœzwvo>æ©¢SË”è,IË–§¼åEh­±-\o¶Ÿ×ß7ëk˜tr5õp£È:“Ã 	~ jÒÒ“Ñ·/¤Šü™Ôÿ’bïF·„£°šô®]Ú3:ZÞ&-»ŒáÊ(åÐuAé ýê×.»›Ó8ß²ív.Í“Þ>_ÀOÆæJ—ÞÒÄx1†îü»¾8ßéP_¨9øíÍažÎ<¶XÒ?flC»#
6Qwnÿ~,lÂc Ìß?–œ7|Âq<ÒVC8ŽÑù¸Ç»—âÿpLì	GÀë–xœO[j…0ýÏ*fšÄÄ¨—RJ?
¥Ÿ]AL&®FÑ±Üî¾	t¥?çÌœÇÐìë4¶¢õ¾k;×(ßJ‹Aj¼w½ÔÂ³Ý˜‚î…	¦·­Æè±UÊ+Û˜ÁËaÔB TÆí™½hÞøÀH3¼^§›áé^@=ðáR»m}©‡¦ë{­T"{°Ì®‘ÿ)goñyµÇ!äª©ÆHŒ½§Â.HûVpö$ Œ.'lÖøBüêkÈf1M5c3Ñ~Þ8Ÿr‹k,Ù|‰ézTékE^Få–Èãy^xrÙIÆ>ã”ÐW[Õø}ûË7ì°-‚	›&xœ‘1OÃ0…wÿŠ@à8IT*V¤Jˆ	–*¶ÏEjÛ•_O‚Š•@lwö{ï>û¢G„YV^*ÕÌPœq:Sµ¨X­YÍ™,1ËQ(ÎÙ5mMyYU“ªò›\b^—…Ì3U•¼“T3Òô±u<µÝÀboÞ‡béQµML¥Û^CVÔ¬¤œ±ÎiE)N·&Fôp‡&¶pÛÙÂâylR16Kc#v;Ëf4‡„ƒØ×-&²3sð{o‚Ñ LÎZ”Ü}³ð6æK½Ií‹…ÐK‰!è¾ëö„|ë×b¿ïuoåÁÕu_Ù±E°ýV´NÃàˆÞuú@¦q“é¨. 8ãà˜W¿’OÀc¸”H/ÇwN]É@ƒ!j²º_ÍõÑMOÃÙƒ²uprC2BÌÆ¢JœÖ‰ØÏÿÜÚ±ö›"°ÐbxœuÍNÃ0„ïyŠ•8SÖ?±[T¡ŠHˆ‡XÛ›ÄàÄÅÝõí	Ž¿ÑÌ7Ò˜á°÷Q¹d¢BOÞ+&ÇF±§¨ö	vÖ}èÎÔx@¯ý¬>…h(…6†˜ÜÀ:F2ÄÄþ }Ã?Øzt½×SbV%4¬mÐÉ™Ä;ZeªÞ8ËÏë%Npüü…]ø…S^„Ë.Öù	”Ý4â¾‡{tˆÝ–ÎY„¼dy]—Úø\n§q¬áŸY÷Îmd8¯¥@ã¯•/wÊ#­ÎðA×<Öåa¦Ëfîº’ÇI–ëüTJý©—, ´IêE©ísMüß—nmš xœ•‘ANÃ0 ï~ÅÞQ+'ií¤Båg;²Ý”òÞÂÇp*‰\Gãñj7"Ø
Y*”µTíõ¦©	+’K*Z)Ú`!„Þ6lÂ@.A‰XÈºAE¢%!ë¢ÞTUSVZèN´…È¯9/Q0<¤ÁxÂÙP€Gï>¾>-}Àõë™Ü*GïÛ¸V~¼bÓU-y)áŠ—œ³LG“ý¯Ððê§À¬é‡äæqh­?Bò`œI0ô”À;Ð¨’'}GŒÝ]¬.ø	Ò@3ò3-©‰#r a2®¼˜Æ1º<m®ÄÌòë—5¼&.ÈX“0Q„Žf²~—í¢ë`Ä7Š,Ï9ùMki‰ÑŒöõlÀóý~ÿ°„;£5¯Ï©5c{Ó;êV^ëU{Úýqwìeº±¦ŸxœuŽ»nÃ0EwÎIõ¶E¡-PtêH2±%W¦šøïëp9¼‡Ä¥‚Â	ouP‚¡î‚sÖqÇ„4È•v02xÙ÷¬kfW0Ñæ;ÞvÖ4MÛñNIi…ÌÐÏ“È˜pæÏoQB!“Ö
¡¹¶ŠÎ‹Ð[¯[¥Pû6tyã*]rŒtS]Â×ìýŽ1Žû§àÊn£­naÇcÍ¶"x‹ô^=R.8ëñ¼=¨þŸ³æËa®ã¿+.OÜXJžà+d¢õä*–ç!Þë¼[0,˜zÑ4¯ñŽ=Ì%û'¸=*oa-‘Ö]Áð>&WVÈ•æJ2Á-—kLg¹lë/C÷zŸ$xœ‘KnÜ0†÷>1äÇx¬"(ŠA‘$º¦$:b‹†LÇõí+¹í"Yu§_ü?>%AµÑWÛÖŠ®½EÔX¡ª›Žª¶¶zèkçT_,)Hòcuë5Zêu·¾êÛ¦Ñu3tƒëLÕaCJÕØ¸ÉÈ~Œ<ã
wÞ)À£œªŒ¥Éú›BSiyþ
UÛëk]µº…‹º)U¤ßÙ‹P„Ë"pÇ-½×,J“ÅG\gö¦tÂ»„Oþ9X"›‰fØ½Œ°’Ý¢—ãÉ¾ƒñã¼É²	Ø9¾ùð
–crÈtÅË_žÉ’§”#-AF‚=r².œ›ˆ°.dýà-NÓøï„‹UÐ¾ÁÄÅs(áç˜v±­¹TÎô}›ˆ¸Cƒƒ=eçmràrä¤Ó:R¾ ëÃÙiÆÌ6©BüÓ˜ƒ!ò|²5ò4Q,Ó þ5»ð0\ÌñåÏñûp‚S”÷O'(~ÿ#Èè—xœuŒËJÄ0…÷}Š\;&Mš¤2ÈàBñ†\þ´Á6©¹ˆóövqåòœï|§fD Œ:mGÅQÜ3«å ½S¬ïG¦Œõ\H«|·éŒ±Â€’ú‘ï•dJ[E÷¡àLs?JÁ=µÇß=§Èp–öš2…ÎyäÔSg¸C3HÂ¹qœÙéVç”áCá±;ÃñýæN!V\6­@ùH$£ý@á–Bº½]C­˜á9Ô—fàSÆm¹œ¦ý ™´îó„°µeŒK…*$øœVXÊÔbïV]öç®óÚä`Ë=<…/p¡Ø#Úz6—³ÃÏ`ñGû#!Nb©:îŒ@Š€9§üCµw(š(xœ•R¹nÜ0íùÓ¥òZ÷aAªRº7FÔP" ›Ý|}†Šl›Ž|óŽy £'‚².gÔãÐP×6¦ÖØ·hæ¡®ª®¡z˜´iº^Fè‰#´Ô—f¬'c†¾P¥»¦ÆÆŒ}×ÔVõˆ†¦¸:?Ý‚?çÛAðºe`ù6Ó1]´Û¿BÙŒE_UQÂSÑ…t·1Ò´Uõi NÞêðßíf´c&?¦ûÇLW«	ŒwûÃÄò–CD–YŽ¼w^©7ø…&!$xh†¸bŸ˜E÷¢_wz0ƒ§ž%ç9ã¥R¨cÂm»?PÄ#@žá´K› t•Î>§þïÉsP.EÉ%áÎt.Å.ÝŽÏíLÚ680®§i°›<™„¦¼ð¿nê7yÖ€Ô1(éâDä‰êè—´‹.\”z_mÈ~zco²&¸¿Ýåhv^Ð,;Så-ÇùŸäüì.£BÐÈfG¿DØOÃ,²‘vÉùéMÜ¶‘xœuÍJÄ0…÷}Š®“6¹MaÁ‚"ø IîÍ4Núcš(¾½…K—ßáœï”Ì²ï$oZa\0ÞxkØu;³²Êµ${rl„oV›y. ”TÞŠA÷0–xèœFéÈ;hP;ÔhÿúÔj¤É£4
Q²¦€–ù®õ­
û+uFô­e\2<s,#<ÔÍp¼\áà®pŠsátðËtR™¡G!±ƒ[B4{:ÅR8Ãc,OÕÁq^2¯éçtÞÕý3k^8ŸÖšdþ¬¼¸‘ˆò2Á‡ÝVÎÉÞåujš÷Ùe¶x{}Wc"°ázèì6Â®_—¸Ìbâ¾93LËÄzV¾×þAàsÌ‘xœ¥MJÅ0FçYÅ¤Í/ˆèô¡ ‚¸Inhžm’ô¹}«[pöœo4"fv:;që“6 %?ŸL¥Ÿ¢0Ñ“åUlTH)d°Qs§ÌÌ-Fr³WZøˆ	
I+¯•F†ÇXöWì•¼fºçÞ	^bËˆå\·?õ¼[­x)ëi‘“‘¸àœ…}Ûòôßû,¾~ÁÇûø#¯0ýf=öÎ—ºÒÈ{”WêðM`Ûï!0$ƒQN³âx`Þ™xœuŒAjÃ0E÷>Å@×I4²%KJÈ¢-”®ri4JDÛ•¥ÒÜ¾1¥Ë.ßãÿW23P…rQ¶¨X+VD)­¤ÑJÙYvlXc×Ì.óXÀX4Öjä¸EÏ²•ÎˆNûÀA²•Æ³	ýßÞG¢4A™¨Z´ž]TÚh#ˆ¢7–D¯\ãj¹LÞ9•ëBØ_WØúi,<liº=vÆö¢Gk`#´ÍÃÞR)œá5•·êa?N™çá~8?Õÿsk>8Ÿæ:ù³òRà	µ‚˜§œh*å~t•ó.¦ï:o¦…ÇÐ4/+Â‰©æTî°Ê]fú‚2=B.@pÅýVBZ®?q’xœŽ=NÄ0…{Ÿb.`;‰c#„HAíŸñ®E¯œ1"·'YJDù=}ïÍPAßG>Ø(;1 <7<Ji¤…0Rö-jT¢g7[p%ÐFhc”Þb'ÊNZÍ{åé©ê02[éšL>Á«­Xài;¡u'¼¤•pn}^žAôÚŒ\ÃÐpÅ9;Ò%á?ëì-}ÕLèkI´Ã†kx(è?2´‚%±äBÚ>{Gˆ¹\2†õTí<ï?*]ñ—~§£Çý|'WcÄÒ26¥ËŠ¡É16nüËçìR|_•/xœ’ËŽÛ0E÷þ
~@cÄÄv0(Š™Ùí¢-0kZ¦lbdÉÕ#iúõ¥t_ðF&ïåá•¢'‚Ó4vJŸ°ªzì»zÚ¡ûîÜèŽ´šúa@Mr*6ôd#œk¤f$lk56ØWJu];Ô§sßµ6ÍQw}S¦¸8Ÿ‰ãÏ)¨žÞó¡óáÛH¦TnýUÛ§¡>V'8[ÑÊß•c¤ÿ”öºÒA¾À72„àZ•uQ¼,hg
ÀâÂü£z)
€¯tƒ+ÙI˜7“f¶3hïVx£  ^yæˆ¦Ì½Ï´Ã­´:‡p&p6ïf+DB“»ÙÞØ	¤‘€×Íùˆ’"kq¹,x%@y*ò5·Nô $Ð)&OûÌ/lMå¢'çg´ü#ËØèàhûKŸ,ÿLd)p)‚Óã”¾¬Ý­^œ8KÑ˜{®nlnn¤Ä„´eVÃ£GYSò².Šœm M%üÈ)Ê·"[±’ VVÑNŸTbø ò²9UñË#²Qæ=@ÒÉ€x£gvÌW§Ò*oî±eÚ&Œrwh'Ðü‹rÏwž-M§õa¼_þå± Îþ…‘'xœ•‘;1„sÿŠÎH˜Çîy»B.@BDìG{ÇbÆìörûïißCè¶«¾ê2%DRÚãlÜpTú0NÊý(mïì<>Ì§É:#ÎJ‹]%¦ÇiœN|=©Aê‡­•ólØõ¤N½Öl9…*´Ä_ÐÓ%›Þý¬‡V×Ã×ÖÄí=ä|bì0¡éeßžnžÿG>ò¯\„ë†Y}çbÚ¡d|ò™|¸À×ÇŸÀ;1 $üU0Z!~ ì	¯>–¼ÞÀ¢Se% xôUBV¯ÖÛð† ïh¼»;µðÙ÷‰7/”Ìbô¾zã‰m_yoa‹™`Ç¸¯5ëîy3«Ì,*\°B}SRý ¶ðáyŸ
h¾/ÙqA<ÍÏ_ÞŠ»]þaQWAm˜we°nÆYÒ­b!Úó¹ë.\pÑµÖnõ¡<5µÉîµNŸ3‡ï£â›¿´Mt®Ñ·ó¿|”øuÌÐòxœ…ÍNÃ0„ï~Š½q!‘-;‰‹*TÁÄ‘¨ü³N,œ8²7E}{Êãhæ›‘†
"HÅ{¥åàqàV÷VÔÜIeEàÚ[ã¹p[MÁ…`à¢³¦“);­Uo¤—Þ¯CàBgBP²CÎÌFS.ð:•X)¯¼aJßq„ãä¦SªÔz|¡ôA©¾ï4¼çœ¹<Ï‘|`¤	^¶ê&8~í¢µ»8Å…0µ·àï¸ìü†«Îæ|A¨T6G°\f<ï#Å¼˜t®³)tNyÊðÛÒì‘Ö1öN\pñ¹4uECtE[AÈKºÂVÑƒ½MxçaMÛ—G¨ù¾i7¶Œ}ÆqAßä{}úçö–¢šxœ…KNÃ0Eç^ÅÛ@¢8±U¨‚	CPùó»r^‹º{X ³{¤s—*"o×ÜwZ¡š¸¼Cë„ìÑ¡Fk­ô#ïxÏ®ºb&˜•ã¨ûÙxÇµEáÆQz¶ŽON¡œœdúF¡Tx5nT®Þ0¥ï¸À)ØpNµŸ‹iB)9@Ó©®c¶¬k$Â
ï)ÀËm³N_´æ€sÌ„©ÝÅ¿\vƒš¦={Î*®åŽï+^~ÅË¶êJ—TÆtvðyÛbN1#ÄcQ
%§XÖ–±¸dtMñ¾1§^°iBkšxœ…ÁnÃ †ï<…`‰’42USµ]Ví¸Ý+œÀJBEH«¾ý }€IF–Íÿý²(É‡V‘hµêÆ–Y÷¢@YÕœMßw•Ô‚]0Ða×“âÔq.:l´–c­©F”ý®ï1¿†+Ñ’áða‚]£¿ø$çnv‚½ÌÁ­±Ôôu+û¶‚7PT¢ªØàçÙÆH¾ÈFïÛ:ØŸsQª\ìÉ•IøÄyµR$¼M84û+Áïê—j}ZgñäüÄØ±+¤ˆæùWÓN~|ôŽÙd£õ:x°ØP[^.„!YxPé6»Ã¶l+éà8Âà–M³$ØeJ(Î9¯ÆoN³„æ!uÖ<–)–ëLåð’ÆðÛdJÆ¾í´.ü8êþúÏÙü×–=•xœ…AnÃ E÷œb.`ˆMUQ»©Ôe»·0Šm"'êíKÜt5óÿü§¯¡„®5V´mÝ¤Í¨…4e4Òv£Vj”B¢Frv3	79ªÆNºGäVõÂM\Hg¥6-Ÿ:#4ï-¢è$3;ù˜àÝ§)Þ<|à²<ÂgoýeÉTOø
¢éuÓ(Õ
¨¸âœÙ¸®|b o{¶Î×§¨Ç§¸„p©KðoùI‰SÁ›‚³5Þ²áˆy5‰†%Î@«Úî+Ö–±ï.P1áñl"0Dwì·eŸË-l.™Li·´'¬û
ó†S«ÆŸ—d¿_&sN—xœ•ÁNÃ0†ïy
? -i“­tšÐÇà$Nk­M«4eìíI'âÈÍþíÏ¿í‰@ï¬±HÆ½²ôdrDf¯œ¥MÕP+Ñ«Ö*1c¤À#eTU·D¾Þ`ãŒn÷;ô§Jz¬TåP
\S?Exí‘†Ây.ÃÑþhåå[;õÝ’J;ÏPé§Ví¥–
ÙH)²:rJáLœzxYÛÃñ²%¥Ù’‡DÃ/®k-wMÆuÆEø©°À¬]áùó ëB¹ëó9<	|^v¦§X
ñþ·ÁÑb#Ï)·\ûM˜c¶äÐ¸3¹@AÅH	&„iN<àess÷ñ‘Ð=^#'‚í(nÉ^oÜrÅä}an‡?L|¦ù™(•xœuŒ;OÃ0…÷üŠ+1·8NüB*P‰"ÄRû½öuá<pœO:0²óGÉÌÀ•Êxä EDß
g½ôƒQ6
jlª	3GbrÎ4&íÉ4Þ
S£AiHa`Û’v}n-aÓ„Ú!n4iµVä•Ô™”L‘°Â¥\Æ¯Ü•<.³¿Àîëj¶t5ûn(œ¶~ìï¡n­µÒµNÁF!ª•ö])œá¹+Ç…`7Œ™§ô³?¯ý3«Þ8Ÿ¦%%Èü½ð\à¦Öb{ÈcÂ!„Ûçõ¹ª"Rîü|Ç'†yBÏ›	Cà §÷Ï§—¬Ñª‡ÄŽS˜| oÌ—6xœ•’okÛ0ÆßëSy]×ù#¥Œ±ÒPØÊH²¾?Kg[C–Œ¤4Í>ýÎNÊ`0ØÞù¤ósÏïåHTáR•K©U#+2UÙ ^”k¥+]¢‘KÕ”õ\Í0’Ï€d¨©©^¯å\¹ÒµœkUÊ;”XÉz‰†Ô¢^­s"ì‚Co`ÉR„q*?ÇH)‡ˆ-ÝêÐ„»…R)×êŠR•¥àÓÞæLÿ¥ *%«ÕUA4XG«Ó=|æAPS1 1dà°Û¿<n70Jv›ÍKÎ$!ýý¬‡ÌÆ&^)žÁ…¶¼ àåXOF`‚‡ýãv)GëÛt§ÎêPëŸ@“ÎóËWv–yF=¡OãùY¤.úßù6rzxþþ¥àõÖc&s{q®q
Ê¿öThgACp²ÎÁÀV8Aþ'O²i"BJ¶vgH¡'Ñb¬Gž&†~êôô–/ø· O*½a?ðFsgh<&Ö™éà=é\°þL0Ý)ÚLïü£á-eˆôƒ»˜äds³]bÏõö0"§šx)1ÐLˆ'ûv™RŸ!xv8ªNëQƒÏŒš 4cè=££Ïöé0eáƒ/&ZÐFäéñfâv¶ÿ­æÈ·ìèšK²?éª{Ebo[Î¶MSÔçû|˜â¤)xœuŽÍNÃ0„ïyŠ•87c;¶QUU $TŽÜý³n"»¸vo{àÈi5;3Ÿ¦dD¥„y3Xé•pT+'©µB;/¨¿{ŠØ‰bwÑcÃ&>qÉ%óZPí­Õ‚LT?zÛ@È´2y!¹Abg¸5’£P|dŽ9®PQ¢)¡#ÃN×2§o¸”žêÕÎ°û¼‹ÞÜÅa‰CoÓºÂ¤dbÆ6C»]û®K)˜áe)¯ÕÀ.¦Œ—ðs87@5ÿÔºæ3Â¥† ¿*^<‰€Ïi…œ‚ŽÎmW}mä®Û…%Öïm¼­ØÏûGxN9£-ðþq:ÆºÂM‡Æ€’`Õ¥íonÒ±±o@úá©.rt/xœ’Ínœ0…÷~Šû åÿE•ÒLWSM“¨RWÈØ×`ÕØÈ˜™ÉÛ×&Y$»ªl¾‡ÃùÎÅYDÈ[Þd¥RÖŠ®áíx[0ÖP.šB„Y—±º@²P‹ÚÁPÖU]µU[
ÚT°.çŒ6Y]ÐAä‚y#,i7º¹ÉXx2Šjß,J´pg÷Ç¯ËfquÆÒcfæ{ÈÊ¶-óª):ˆÒ6M‰?¥søÿäNI½Ý}™1žîð`¬EæàÇ¯ÓPo3\¨Úpg`¦ŽMa‚‘9‚Åd±·x™ð“Rx¢Ÿç—ßçÇ/p~
wÙNÏàë#¯°f7!y£9HBŽ>:”¹WIø(<Þ³‚¹xÄ#¬dkHp ü59·’äz½ÆæM;&×%bF;¿™d[”¡|MDŒúw£>ëÓþ»Q¼ÏÓ¬Në´Š²xá‚£¼ÙìŽø¡†Êç¥
ÖYüVÃ>’zô“[Ñ´•§bjã]a@Ô°nÃ¾<þäŠJ}æPruk,µ°”#å;È"´3•*Ù·ÎÄçm¢µlJÒ´­³<žÜ¬y–£o3òuGÃëáÿòOñ÷t—xœ•PÁj„0¼ç+Þh£&š,KYÚB{Ü…ž_âÓ„Õ(û÷ÐB{)ôøf˜™7"(II[ÒT­i	ÑŠº´•¼)´’µ‘Ð­ÙŒ…Ró$A®µµ ÙØÊ (Pq­´Bk¨*5·Èp‹nZàÙ¡îçm¸á<í7–ß¾°“ë×˜Ûi|„B(UUBHWœ³„Ž>FZàL>:xÚVëàxÛÜìÇÉ‡HÃ¹*ÊºHr™ä,|Œ”ÙÁàÖdàÅ÷)xx{½\a¶>óÚÉncjˆÑO!gìêü
3Æ”…m»þæ¡KÕ¢#ØŸÃèy¡ußÇöWL2¾ø>P›M]—™ûáß±Oú¨Ÿ.xœ•RËŽÔ0¼û+úòðä±Z¡…Ò‚„4+öìØ¤5‰ü˜¿ÇÙÄ qÁ«ª»ËU-‡u5XÖ½–Øµºj0oË²¨ó¼É«^`!š¾.;Õ³U:4úB´r(óatŽM_T¥èuÙHQ(Qˆ¾])‡®f2†É:ØO’‚4	q>IgîÕo.;]¹‡iô!SvyI¿­*!D<oóœ%v¡ÐÁ#R˜à}ôj‚ûÓ²~dÎ7ãmQî¶ñ]gæ¼ W3ÝÁ3ú$cà@cz~óéãñ	Ö9ŽœLÆØÓDV’ºÔÚƒëj]€!Åø†F§+ú6KÒ¤–TbÿTÕx&…>ƒvží2ãŸ¡´HvÕFd@E÷²Û3:OÖ€ l^ðg@³1wœ±"Sråšä×ó|ØÃ^®!:ä‡Äë)ÏÊL;:#ŸíxÓyØ8ølGVe#®œô×qY¯J†CÂLd¤¹
n†Û§H'4\R\Š…Ží²5ºþêüºq¬~­ñÅ
iw75øòÊ±&ó‹ta³ÊÓÎ¯=ï´¦bËŽ[ùÅ5;ÒhPs;¼¿Üý÷Çb¿ #äô“ xœ•KnÃ0D÷:/`Cò'‘ƒ èg™e{J¢"!²dØr‹Ü¾rÚ)ÐMwäó†`ž‰ Sªµ­0¸ÖìTo„4²Q­ÐÃÐKkšý x+-›p¦˜a×a3pk{É>N
5$8vRîö¢iµØsC×ìÒ/}ÆxE8­á‚sôpÔ?Z}ùÖÝyÉµNãˆÂiÛ®ë$T\rÎŠ:úœi†ùìày]´ƒãekjµ5>f
wv)š~Wì}±³ø>R¥ƒ?ÀVÕú O!¤˜Âz®|\ '@­i¹UiÍÓšÁ¦yÄ¼ FŽÂDsÍØ›óL˜K<nˆå/Æ/ P\Ç…ùBû"ºÂ˜Þ}<Cvt[CÖGŸ}Šw‘EÕgÜdV¶mGhÊÄú@å¢WŽdªdm¥®‡?›}9€­˜3xœ•RËrÛ0¼ó+pLÒH–KžL&iOifÚCú	Z¬)RåÃ®ÿ¾ly2É©7Ø], FeÑUÍ¶¨:¹éê¦Á¶*{%[¾­»¢©lJÙÊ;6q6B‹½¬º^÷%¡7J´]%¹Põ¦-*Qª{Ñwõ¦ìOqp¾\GnÏ^“9po5<ˆ5—®¹§ab.ÜøeÝ¶UU×õ²¢-
FÙQÇˆ^QÇ¾¦ x8ÌAÞÏÁ“¶Í;z[nššèÑ™=Ž˜	£w e&¢7;x–Žh%ùS -|ûùc…äŒ=à@CGp
â€k	f?ÜÞÂ„B+-@pcz. I.„„2g¿
&É0UÝ),Jfö™Lž†YPø7%»6JVÿIw³‰ìñ¾iåüÈ£v”w#Y¤iu&6zgz&yä¢O"&ó ³ø2ì…ÃK$wÁZÞ'e7[G¾.g÷pš³G‹ž*«ÄÁ¨«³×®®ÿ‚º.»$%êù2Ÿ&“öOƒ¦•éËºœ5g6ÓS àº–[‹;>¯ƒ4DòóezœŽôZ*tÙ7½·(3§TÖŸwÿýCÙ?@SÛšxœP]j„0|Ï)¾Ä$nbŒ”²,ô©=A~>5¬F1Ñno_½A)30Ã0eC4ˆÊxÁƒ3(Œè­n‚6ÊóúvSÁym½ÔÊÕn˜
ôØjc{.U­Dá„”l¤Òª6íåœ°Äîe\6øÄXFxìÙðö¼Då.q©àTùe~!Û¶æFš(Wœ“Óc)øÏ8°Ð”i|¼bï¤Ñ#¬ÛrÄ€¡"d,eÍcÃÙ¼»«M1í/šŽÙEÔO‘ÅœwÌLœ?¯8$té{ê~º¿,$¿ûsx‘xœ•O[NÄ0ûÏ)æ t›GÛ´+„¿|r‚d2ÙF›>Ô$ÀÞžTâ ð3’-Ûcçƒzîû¥E¥4õbÒE×éI¼NkK^Ñà9ÛÍAkšïÌ8÷Ö(.G;¢’Zí”’¦ƒ%EÌ”<o¼SÈ3¼•„3<ßOp±'xk¦xÁmyÑ£ä“è4¼çœUv	9Ó¿ìrš~íì­„èà«ª·’¡”à*÷€}ÛK48ZÌêž Ï!A:6W¨y{ˆ9,8ÞÁ×gTC£5x¯ZÄípa½ÅÇ…±9ç=]ÛöV_{ÖjcXËw³~.Ôž§ÁÚR¡ÔŠ¡vü·•\³yßØÇõ/CÙR†Œúxœ½NÄ0Ç÷<…·[è)mš6Ebc„pçÑ&Uâ ÝÛ“caEH–­¿ýó'"ÀAk%JÄÙ;ª¹ÕsÕ©Î¡é‡Ö˜n˜´80Q`è­žÆNÒâì8MÓ8‘¢~Pnt¦%³èN¶³¶¯1Áy^á¥äe…‡Ï›8Ï7ñäÓv^âþm_wH#¥‚Fj)EÍîž™þÙ.^c81©BP‚ßöz<YÈrLB|¬>C5ö1àŽK¢;U˜#XŸ¯à¼«…~§áY|áV¢	>X¿ SÌ§ü—\)!Þý%m¢sÍ|½ÿËSâË…U*xœ•‘Ïnã Æï<Å¨w[à?±EUº{h¥Þ6}FÁN•·/vºêªÚÃî13úÍ|óM
ˆ°QU¢¥õ0pÚ±¦b²òK%£Šï*†j‡ªÈ…t	$Ç]G)šº¯këëf¤-2ÑàØ÷œ¶L1Þ¾¤Éø9q“¸»qx]ì™gà ~çÊógî8é˜JáçG`MßÓ¡iú

ÚSJrv6)a€W4i‚KÎkPŽkp4.¡ýÂ+Úõ}—ñ6ãÄ]g,„5{ˆ3©°^ïáÉZÿ5OæŠpåvÁ*N8_ ¢‹>Ä’—çÓH¼‘ë|¥PBòp	^.b#ü[#òð–;aài	§­!°ð
Ò„_Z`Ý;Y®V9k•¤?Ð»–{gPÁÏ°¸h´»ëøüEŸ9žÈw!ïÆZ1Ë]=’yX(’½åÕNZx¥Šñ¶ÿïK‘_ÙÌvlô‰kÏÁÌ#‡˜Ã£ÞB]Îøø}Ø?œ’| [,å	ŸAxœ•“MÓ0†ïùs©­òi;ÑmA‹eQ8pªìxÒ˜&N»lûï™V»m%²Zð)žÑóÎŒß‰!aYªã<ŒËD„yœ•g‰Lò,ª*ÅµŠ¤ªJ™° —Z¹š§ŒW±ÒiŠLÅišä,ç‚‹L„c¥Hd¦¹óu7À»Z/íAÂr×lå`Ü”O±Ùö1v[oœŸ•]û¢Tð<LrÎaŠ0(Úïq€%_ÃÛ+k¸Ù/3u¼Üë±¹ÂSšžØß-NËÆðËuv-µ^»V~Ýt›W¯xoöÐbÛhPn¡¢®?®¾|žÁ÷Ú8è¥§z•Ù£_#å›¦{0vó5¦<ÔhaçPƒ:œxÜÓ,V6PíléMg‹i0Ÿ–ðù>Ü-¾ÂêÇýýâÛÏâ>s’éIÁø¢‰9‰zê‹rÕtåÖ]S¾óT¨FÙ+7HT¤J74ƒŠv€¾Ø$ãOZ§¬ô¨ÏBÅOw‹åx{+cÙ@ïÑ9j/N/½E#­Q\›K&¢	ÉÕ@ÙÐwÎu¦ÂŽÎ›¦%mjðeàtÜ®ïtdÛ8ÐÖ<úÆÆ}cÏùö\}ö/–EYü²gG¥ X™E=íªjªÅÿˆÁáôC>œAxœ•“ÛŽÓ0@ßóó›ÊqîÑmA‹eYDáGÇ7V]'ŠÚþ=N»½ +ü4žÑqŽg×#‚ˆ£Œ
Ì™,RVä¤à£2—Y’X³9­³XFAÇz4âÈ×IRˆ˜JNDÕiJã(JIJ""
BIYÊ€®i{x×0å˜90XzÃz£àžŸs³ÍKî¡Y[7ãíöDI‘—$.óBRøìV9‡=,Q¹Þ–7p¿7³zÜ<(ãPßàI™RâñÔãù¹ÅkU!w½®à½ÚÃ·m lÒ‹~\=žÁ·FYè˜óŸj\ƒ¾®u»SfýµkÐœÏ„Ñ’àùàPÀnt…¶sª5UÌçyVùüÀ‡ÇÅX}zZ|ýQ]ÓãR‹Àà^¹
Ê»¼Ì >8ïäkq\@­[¾±·˜kÓÐ ë<ÌÖXA’'À¼=·wÅH?tÒä.§åËqÇ:óÒ†ŸËiCRåïÛÑZoH“«^4!çóBõÈÝ…ðwÊéíò) k­Uõ#W„LÖ)­¡GæZ­ñuà¸ìÐu=Z‹bü«9Ñ¿ÍS‹ŽÁŸC<¥§†ø‘3ðïññ«ã;¹+µ6(ÂVÊ°>Tÿý¿ Z¦=æá‚oxœ]OKÃ0Æé:do„^Ðƒ‡UÓ¤M›A‚+ˆâAp‡&K¤X;YëŸÝü
³Wâ7ñxñâGñhÚ9Ëåýñ$Ožç}m½´FÅTJÆJ ª¢^Œ—Ç„jU:„2…¨$žƒ8³îâ©Ì
 ˆ»ÌóR0ÇÔ#„Å\a¤˜ð¹örBÆ™:;ƒ<„,+{¸•¶H“¨G;\Ï¢•Cco3À8­0ô5”ÏF›ÕT'Éà>— Ÿ’¢N×A.ðY!óêŽÀÓ‰¸É—îOc»ã{§ZÍ»@|PzWMž6’òÃlï¬¦é”á çQÔ?»ì-¿aƒÿI6N¦RéÒI^—@Z)á¯•xoì›Õüú›MÓÝ\BëØÀñ º[Éå•i7kX[CãÚ[‹wßæÑ/)—Rì…>xœ]O±NÃ0TÚ%sb@z8vìÄ•2Q	‰VB $:ÄŽƒ"Ò%Ñ?@UVÄ±°ð)Œ8iR{xçó½÷î^ÚÏíq‘)Q lDB)ffæŽ+"áqŠ‚	¦iFó.ÈTZ@bJçBËXDõ•ž©È‘g8´•ãÙ‘7tþêï¢™fú0Q–Lâä“ +¬dz3ÿmü>Ê¡±ßt1-ŸŒ×Õ÷¡:q
÷¹‚  õ=°»ŒÙ f…Ê«?J@$Sy››¾ïVÝïÆÖ6ç$šÍ»à0ˆtPX—ÒÒhlîÖ³—r½d8èŸÂÅåhÔ?¿êýLáÃ?qÆ™’E2ƒdš/<wÅ^óðÖ8¨“|,k«éìyãzíÀÉ ¶º¶¢Ëë¦ÕªÁZ
ÿ§è,dŸÍãoòÄ~<˜@xœ•“ßnÛ ÆïýçâüWMÕlê4)«4­ÛÅ.1>ÄÈØX@ºäí‡—¬Í´tK}ßáwøàÃÞ"+ª,å%§yÉIBÓ)f‚I!!i.°lÓRäi4q‹£ÊŠD´æ¹ M#$+3‘#¹¨dR°Ð¨Ä4mÛˆï|g,¼ï¸ò|<pØìtÏí¨àFüÖ–ýI»ë¶Î/…n!aeQZbRuPÞ£…*ßÁ»ÜôódÙÌ“;5zÔg8g*ž<ŸŒ…V5XtO±ÅÉX_Ãµ‡c ‘÷Ë(‚¯r0qÚKµG¾CFkóCÛóÕAµçí`6ÉÇ¶Ž#X­Š‚d«ÕË>Þ¯?Ãã·‡‡õ—ïõ™>j„Càp¯‚/¶ UÍÁ‡ýC-FÑ»?(o<×Ð!ŸË·XM€ŸÂ-€!Ù0*KN­~U¹Çö¢ÁO÷ëÍ+[”jTá~ÃÉ»Ò`(´Ê¢ðÏy!ÈE`2Î©æzÂy¥uH‡÷Ôh¼jÛMSˆÎa{™ˆæ§q²L3z¼§ãèï Oú¥ _qóLü;Ää¿!žÌEð¨¶#¶±‘2nõ›ÿ¸è'v´5½œBxœ•“ÝŽ›0FïyŠy€ñF›jÓj«ªév«¦½è¥1C°Bld›&yûÙ4ÉªHQ¹²g8æØŸqªš¥˜gayÖ`ž2^4a*ê(Ë"ÑÄa(ª‚©×sƒÊÑûY#²‚%µ¨ËD„)q“F)#"KjŒ³šy|p­6ð¡åÒquä°º-7JÂƒø[›oÏµÇvcÝ\èÝ;“"gAÌòü ª;éX¡t-¼¬háa;NæÕ8y”Êawƒ'ŒlO	÷Ôïú¢“% 1ÚøÞ”ðQ`‡;mŽÐ!ßBCªŸ×/_çž÷£•zîè#< ×"õ»Nï¥Ú¼¡ö-ªëª0šrU{x@18¬a?úŽË‚îÔªô½Å"ÏX°X\ðéiùÖ?ŸŸ—ß•×òøHƒEàð ]		›å9ƒêèH‹šá,
¨:-¶ö–tÚñZä=ñ|ƒ%D³(‰€Ó&„A'ÐPú4,òYÌ¢ó’§>'ó	Í/OËÕ´fT’ SÑ–4£äFqBêµ4(Ü…7–¦o7–O‘ ½¶VV2¸BÁ`ì:0ÈéÒUÞNúÞ µXOÝŸS˜ÝþÓ)½þ	ó\ž
sZäÜËðuv/Å³Ÿ·–…µ¯›Æ¯Žåÿ•ÞñEB”Fxœ•“ÑnÓ0†ïóç–ÊNÚ¤‰V´‚†e€V¸àÒ±«©Åkßž“fëŠ(TøÊ9Ög9þ:DH¥*DÅeÆ+ž¥Œ3QÍtEÎSÅæº’2Á¹ˆZÑ¡Pej–ÎY’*­”ÐRrVÌ•ë™,›¦\
žG¢µëà]-Lö `Õ7[ÑY·ò¥6Ù>×îêévo€OçyÁÒ"O fsÆ"ªîLØÁ
M¨ámïe·ÛácRwÆlÎð)ù¤„ÏìÏÆ²1%[_Â{³‡î\w€Å4i~\ù<‰¢oµñÐŠ@h³G¡FZo÷dìæ7ê©F;îƒ¡°*Â=Ê> ‚§ÁsØ\Œ³e-y6M‹Ó>Ü/¿ÂúûÃÃòñGùZ†±Ð{ ÷&”Þ$EÕ!­ñ„AÕ8¹õçXpA4P£h	,Ïä.ýd	hºoš7	›>ov\¤|ÁïÓýruÙO¡6ÖPË©Î“_2=“» Fue:”áDÐåéÄ‹K@ë¼7Õ	c¯È¥€¦i CA«¼‡ïÛ¶CïQ]±ëíx»q<¤ –5ÊíB÷tjpàéA)Â4œ>æ„Ò0¦æµÃpLuìøqòg"Æò¥DüEóøw†ùµ0ŒjÑÚl,ªØiW‡ò¿_sôÞbVFxœmËjÃ0E÷úŠ¡{;–-;„`JhÝ5Ù=F²ˆ_•d·ùûÊi)º<—93Ì8ãLŒª¢DJ©(EVí„FÅPÓ¢@ÌZ6¢"3w8h+)Ó± ²P¢®+Ì1S’i­…Ü••`ŒaNøºÉÁiá#Â³³Æ‹Ô†©ùÆö½ŸŒ•©œ†#ä´®JÖ”5…$«³ŒÄt°! ƒ´¡ƒÇÅË×R±AkÇ€ý¯ÎX^5Yõ2êd\Ldo÷ ¹pVú=<ÙOÌÜ{xè&Þ‚ãJ¹‡-ÂÝˆ=(gWt)!—ÎzÐÑŠSþ>ñ¿'§1¸ETàƒ³£‰)`=ÙnÅôÏþ¸ølÍˆ*™´NÄm'îb»pq|žcIwJÃF­ä«]†û“äW‹ÑÛœ37v+vè|ÄÖü`:à‘|/ažÍžxœuANÃ0E÷9ÅH¬[bÇ‰T¡ªPÏPí™Äà8Åµ‘¸=©K–ôÞ|ý’‰`Ð£õÔ*Æ
/­$wjŽ<£Ø7 ìDsÅL©€eOÄÆ0	-Ð)æNô<Œ~2iE‹íÈ<J×IFïÐöÆ¸»ÔIoÕÈ­ê{å,jO©ÁZæ5Ã…2Ã©ÞÜ‡{ØÛ{8†T(îÝº<ƒPFÝõý »V·m³]—P
ex	åµZ8¤5Ó5~§íAµÿhÍ™òDp­1B¦ÏJ·¢7Ày]àŒ%àíô¾æÒôÃ4—ôµ\<1ÖX.7¹\¶¸ÐÖ}kš?æ	~!(+ì¬	bM`i
	0y ä æ{}ž$xœ•KN1D÷>EïI¢ñü!„ ‰b.àO{¦Á±#'NÆž‹á™ $v°t¹úUuÇ€u³–³y+¹ÎeSç¦(ë\¡6¼-lU-ò‚³½è"4Xª¦Z×œEÕ(lçjËB$EWMÙb-uÝ21ÆÞx‘Ä w¯ŸÁ’ëàz7+·ÊáÉ
9¬”ßÝ /Û†7Y]åp•ñ,cIÝQŒøOB^µü›À,u}t‡Ý41ÚÑÃ’ƒw`G;r œtš±—|{q ÔþØ£r”ò,½Oá¢F8RÚoŒ3*&» i˜‚ÆS’=CL`Ca¸X½™…çûíöa~bŽ"èÅôÃÒ\€¡Ö¦ˆôÀÓÞ’¢ÃR3áWý¤²dÀù8-A5KTxÃàÐB¹â|¶:<bX\*)!•˜êþlˆzÅØ–º4¿ôÆ,åyóÇû³/-ˆÅËšxœuÁNÅ E÷ýŠI\û,†’¼˜7š?‚á•È+•Rÿ^4qéòœ¹÷N«ÌÙ+ë"ÍHFé0ªÎÂjím”†FA8l®òÚ Ò9)QOÂp†=EEÞh?Ú‘hr(ÿò†U÷…RÏsÂÛ‰¤ë&h£fF
8îhK©ðÊ©-ðtì~óûœè.imœO¾ÜA¨¥µ5Üf‡no©5®ðœÚËAp^Kå-]®}à jÃ×+Ãvä•?ÞÜ	m ÖrƒÜŸ»ò°Õž+Ÿi½B[Èíô¹-sKe…˜2ïÐÊïqon®†oºkûŸ"xœ•ÁNÄ †ï<Å<€Ý¶Û–1F¯zò	 -‘BSÍ¾½tcÔ“Ñü3ÿÿ%D0Èqì¥²úÄµèÓôE·rFi;¡9Ü¶š³U%V¼S¦;öÜØáØ
4Fà¨m¯G1Œl´>*Þ1µÑ<”T„'t¤"Üê]üUÝO‹rþ0ÆåÚþÄ;É¥ì¡j†¦a¥º8"ü@6'þ	`ÏñÍ…	hFÐ*ÏPl«Gr1€u3P¼63©`T2Œ=niÿ¢¿€#pB$H¸¿ƒÙíëF¿ð\ÈÎ «‘ÆÐÅZ:»;à;Ô[NužË
ëïÜ¨¼'4%gÆf¢5ŸëÚ»@N…ƒA½1M5©)×«_Õ„UEÊû\.«¨s,D¬ŒK‡™ÿÅÑÛ”B„àrè{qS@SEk+}9ÿmÅìé³»’‘xœu»NÄ0Dû|Å•¨	¹‰±´B+_pcOÚ¼pl$þžlAI73:3“"@btom0,b¼íÄÀè¦åÚ1ìEŠ]"ÖDºg+½2Úöìê`]§”vM£Ñ(î‚eÝ6¡ýã{%¾Q|†¢*\ŽWÁ–hƒ)$§q‹ôŽ)ô’?Òåv7ew7×iM˜K¿-ÏÄª5ÓµÕôXÙª*Ît™RB¤×)½åŽ.ë±Ï?×áÈÝ?µâq íyž)â+ãHôÀÚP·…æó\¶§EŽs¸(>91?Ê:à €Ÿ(ä8­íâo2ÜÕ7â1m+qÉ¿ãnî˜!xœ;OÃ@„ûûÛ¥I"?â³BÔT€D½wÛ§Øwá¼åßãˆ(åŒf¾}HˆuÑ–e£5RæR×Ì€-kè"¯Ò¬nX§–Y8Â•mŒIÛ:5YnŠ¬(Š³¦Îa
6ÙÁ&Y•ÏÒ‡HK+Ð#œp [sQûaU÷ÝÈnØÛ0ÞQz¨t^i]”´KŠ$Q‹;:ü ž0†wÐél©u&êàYÐ9Ófä#H0ÉF©×ž„c¡Íê‘›Èò0 Ù’“k•¦0þBnIz–KÖQq¸Ò¥Ç•g°ßì•zéWè<-„Ì€‘>œôk¸¡Û#wØÒä¼Åj—X—ÕÅŸÂ—È×]x›y 	k#D×9¿èà±Ì|vG³m»3ç›¿ýR}ßÐ°î˜xœKn„0D÷>E`` ã±‰¢(¿eVùÀŸ6XcldÌDsûÀŒ"EÊ&Ê²ªº^«;'DP\Q‰ª¬­MG)c¨„5UÃiE…ÜrªÉ$†ÌÖ\ÚöÀ¸eXwáj[¶Õ¶µ2¼f‚Aä’‡˜àqmExA—e„[µ©Ò_Ô}?JçKÇ;¨[q âÐpEÅªŠ¬îèrÆÈ+Žñ„`P9ö`\Bc:ò´¤Ë)¿"p3„˜a™Ñ€ç1&,áÁ{ÈÃ7	t9EO¬ó8Ãú8â”Á…ËÐ$õQö[áùÊÿPKÈË³&ä}XWüÜ·ÛŠVê¼-—Ù…Vú¢<Âç€–©OÒlv8XhïÖ¹’KBÞ\ÐÑÚBoþö+ò“¥ç’xœŽMnÃ F÷œ‚8Â†á'ªª(ÛîšÃ`£Ö9xÑÛ7¾A”åû¤÷éõYFX[Ç9`¶0æ5rJÙÁëÈž8jqÇk—DS¢„¬`R£åÉ'@È“ÓÉ°Ò‰Ð:ONàÞ—¶É/.}‘×ýA‹üø9à¸”Úù÷Dmý”£ñV1àä @)ñ\×Ò;¿©‹ož¹ÊÔh_ŸÍØK«BÜÊ\9-ç!þ_yÿŠÊ\a”xœÁNÃ0†ïy
ßQ«4I[gšÐ„8Â¤‰³ÖdjRÄÞž7nþìï—íºï$Jf ÓëI(äH~4Jº^J#„¶ÆÊìlJ8vÂMrëKËåäT/Q¡ó^›;Äqê´Ó(˜YkÈ<æ`R¢/aKˆK‚ýký©e-Ô:º…NáÀ•Fìá†wœ3›ç9ÖJ<Q¬îÖbìß®ÐNW8ÄTéÔnâw¼WJŒÐð~‹³ûl×y»ØÔ˜Ó|ü€S¶_Ùƒ£÷h	*T{Ø¦5ÐãÊ¿-(—âœÍ¶Ÿ±çxLäšì}3]vÿ}“})txÔ˜xœuÁNÃ0DïùŠ•8pj‰½vì¢U	$ÄGØñn‘ÄÅYú÷¤Žg4o4#…Œ!Ï‰b“|òÖr§ØzÓZ»¨ƒóm"c|s…T	µšq£úØÝ+OA;‹¬Bò­%Vyï]‡£Ã€Cb«ÎSBê;l#†^%¬›PeÈ>i”^ëÚpü¾‹}¼‹ó¸Mû>Ï/ Œ·‡Z9Øµ®m›ÍG*ð>ÊGp\r¡ët;_¶‚ÿÁš/*‚k&(ôSixPÖ—<C˜§*ùi¥	›æB²c
R­Ïð–—G)7¼‘!)H€X™·¼]ÙH8 N&oJœ xœ½nÃ0„w=·.uà)V‚¦hŽÝ2t¦,Ê"K†LðÛWI‹®íF‚ßäLR’vÖõ“V[­”Û7NiY«ÆìM‹½®-I©ÅŒ™"C×ØN*Õº®¨3`;4š°íUç´ºVäÙ®|I^£Ýà}å4ù¼\=<…R¿\)G
»”Çghdßö²Ûï5Tu_×bHÓä™éb­}«;UÄºˆÅH\9B^3-GxKñóœ ZàEF0«se‡+!
p:A'ÄÇ…âoûx‡‡9§
›©ØÆœÑøàÙÓ>þ`Óˆ}Š¢ü©,ÄhÁ¦ÄÄ0çd× á'|bX	LHfpæ4†dG±ÌXà[´›õú¶óËp+x†ªºOËk`ðŒ˜Ž´âìÇH¶JÎUf;þýGñ¡­¨•xœŽKNÄ0D÷>Ekö	þ%qF!lØÁ	ìv;±fl‡ÏíÉÜ ±)é•ªTÕ*¨aF©¦!Æ`0£pA“WHz´3Äi³Gv³•rÍ'ëP	TÑ{"é‚Âx‰£F©­AÎ‰³{[K…7Šm…—}Ã/wèÝžcntí±¤'Úèiâ—ÐÊÙá¦Øý³Î^ã7T²þá«ÆFl†›]hcìRùŒy¶l„%{8¹kÁK‡eÏít«Mtl÷Œ}Ä%“ïJû9ÿåû¢7mœxœ•Ž]JÄ0Fß³Š»–¤Í¯"ƒo‚º‚Ûä¦Úd¦s‹¸{;àôñ||oD`¤ñ™:c%7H‡9äÉZÉS@cãDâ‚UÄ˜,Y‹Õh\ò*gíCƒŒƒtpviî¼´^¨ðçý8}Ü¡ŸîðT*ÓgÛúJ{íLÐFC'”âX×ÂLÿÓ½úÕÅÍTiC&xnq_päÒª¯ô+V¸àL€)Q‚|T÷ni7®×Úñ^æJ©k9wÓ÷Ã_ÄŠÔi ‘xœ…ÎÏjÄ Çñ»O1÷’ QógYÊ¶zèqŸ`ÔÑÈ6ÚsØ·¯K{/Ìåóƒo-D0:‡¤fë…•N{/…&ã¦Ï#y©Ûi«PYö……R+äšÄ`Ì,J”Êp¥PÏjBËi_F†G]s+†ï%n†J€óÞx	ì7z¡f5ˆežøÀ9³yÛb­Tàƒb]áõØí
çÛ½yàS¥Ï¾=þÎ'½(!¡ãºÍÙ[¶ÇÖR±ÆœNðâ4•;ø–(ukÞkúNŒ]cHäºì}gî§SÙJÎ`Â‘&xœ…’KÓ0…÷þwÇ ÔÔiã<F* ‚Ã~dÇ×‰Á±ƒ}ÓNÿ=nK5b6³ó±Îçs¦ˆ¼æ(ô¶oêZÔ•Öm‰¢–¢6Z!ïTiD'š-›eDOÐ(Þ¶ªnš-ç¥¬´È0ªªíÍ{lM[šº7R1¹Ð"<ÈÁÂ—h'…q€]Êr?ü“Å„ï¡¬ÚjSv5ïàßpÎú0M–#|GK#|\R?Âî÷Yê,öÖº"¯x#ºŠ7°â"ãÌ&,ÒŒýZ£²ÒßÃ‡…è1JBC"ð<È¹)‚`ÀúDÒ9Æ~Žx’lðp´Î=³òB_`¯!QˆÙN™`k¤~}Ž^ßÆ:„;ë¡—éâÒ“C€O6ÑÛ"gÙtu]BBÄ)PÃ2çäÅÿWÈÝ¼Ä!ŸLëµµü{°ƒG½
Æ¬ÔéþÕy³x°xÌÄÙýiŒ¹–0ð;ÚLŒy¾.Q¡_z¿É|ŽxBŸò¿Ùý’¦ÇùÑÜ®öÎúå©xÞû51ÍÆ™&xœ…RËŽÔ0¼û+úB‰œ‡óÒh5€‡]´×‘ã´“†ÄÎÚÎÌÎßã°,H\öd—»ªº]vpˆ5u/†2W5¯ZySp!Šš÷ušJa+«¼(Ù*š <+s‰ýe¹XjÐ×²µlzZ4"“u…Lna²îäHðÑÑÒ£áà#<Ž`ºàdeSæY[ñÞðœs¦ì²PèàR˜àÝæÕ‡Ÿ;HûÉœÓH|’×¢-¹€„‹(gæ¼`¢fêàí0ÀŽ`²>˜#t25`×}alç<í!Øg‚„o÷_69“&Œ>2úX#Ñü¶d¯(ª&mÝ‹Ä&i#Jx“ÚxÁ½ûãêÐû.úénÛhèÞ.xÚ·7¯Sö}"ÿwÀÍ3ô›-£+hÙ;RòÊžÑ]Aš”5U ½µîSÆîh48$Vë¤¿v/æÎnñLx‰Šý~räƒ]'ø„ó|¡¨˜bÎ³éð?÷³¼Â‡W4>þŸÃŒ?­'ý|tœÉlé¿7b¿ ãÎ¸˜xœuŽKNÄ0D÷9EK¬3´?Ili„Fl !áO{b‘ØÁ±s{2–,«Tõôj!OAz>—jbfh$SÆ£Deœ!lL;Þm¦PªàÙ0NÂ‘ò<hÔÞx6¢“2c’±ZZ-ýí×>àDjt|T8ˆ4Rh´ùÄHYÕ™Vç\àbá¹ín†óç=œì=\bª´œ\^Ÿ€IÅ•Ôzœ»£]c­Tà%Ö×fáœr¡m¹]® ÙnÝ•+ÁÖ–
}5Ú+<°A@(y…äòfCüém‹‹ï¿T¿¶}éº·ä–æ	(ùhÒi†p˜Û[¥Ç9Œ\ü¡Zr5æ´ÿ®åqg• xœ•OOÃ0Åïù¾mêHÚ¬ÿ		‰Tnâ¬‘Ò¤êR¶}{:ˆ#œ,Ùï÷l¿8&#uº¡T–…À<ã(E‰šK^¢BJMkŒ¨TÊÉGÐb“™¢R§¦â•F-r®ä†l‘¶•l«¬$†SìÂÑ#9¸Â•Ws¹E7XOÎúé°ãö„,Ó¢âYQÂœ3úÞÆHÿ4%?°¯Ü¤	Èk‹~Ý™¯i‘.»°‹F=››É«hƒß1vo;šeÎ…½õ[ qœ‘}GÚÉ:}êímì ŸvœmUÍ˜ïiÝÕ"Ëë´þBj°ýà¬²sZ¤ŽxZÁü¬ƒ…#‘ÇÐ-ØKòü	]3É·(ù¿2€3²\6ÍüŠ"hšIä«åaµš§oŒ=Ù­'c’öXÿ-8ö¸vªå™"xœKnÜ0@÷:X’‹¢(ºÍ.íh‰3‘%C¢Îí+'=@Ñ%”Bvêýd´vúfô€x#oæ~ÂÁ£C°d‡Á`§Õ†…’@pÓ¬mpãLS?ŽÆÞúqêhÍÓÃHÞ*ÜeÉž‰e{u|};ƒë|ß9	Å«Ëë7ÐýÍØaêF—nè:Õ²+‹ÐŽ«Š„•àÐW­Ô¯…+þMÖ=
o‘ nÛ‚w,‰Ó½54Yk.3`òeiUJ—œÖvyU¡äõDvO€Þ7X.>»ý,£pN Î…]}‚Bk>ÚÎ‚ÈóîéPž6Jž’{4´p¡ø€¬œŽ[É¯ää/[WzÏåíCnOMM¨JÓm ƒµ-§ëçm{Å;}vÖ¦î)p"œª`Œ°¡,õªÔO¾·ô%‡p™_þåÁêõ×¹ú™xœuŒKNÄ0D÷9EK¬Ün'±¥± $Ä!ìvgbM~8¶·'³aGí^©ê•,.²%ì‡ÀdMt²hu$ötD‚&çÉ°ïšÍgY
`ìÈ"}àŽžT×rƒZ1â‚·¨ùoÏ†Û’z4m=£j£Q¶§Ö(´‚$¦ñµŒk†Ie„—ºóçÛNá—´™N¼ÎÏ€Æjì4jªWª9Ú9•"ÞRy¯ÎËše›~.×CPÃ?·æSòU`«ÓY¾ªìÐ8ò:Ã´_ëRÆ§Ùï‡¹i^Ó7¿pÈ¶IJZØ9§­ü¦5e2—"xœ•Q»nÜ0ìùÛ¹qzž(À0ìÆA —î%¹:G‘gr¥‹ÿÞ«‹‘.E*’3;Ã’3ô¦Ò†´A7ÖSOn§aBSëV=£¬í¨.˜)2t}¯©µ(Ží±©Mwlí`+[Fwº±4¡kÇVáÊsÊðšNáç÷Ó…à!ìÀéÉQ`d¢ƒMË#Ô¢¬›®ë[øQU¥]<3ý§ÁÐ4ßêÅÿƒeá/Ø§Åfa¥Þfú3ˆ´ÉÅ×”Ïäd$g²>a’:Ôó´çÊ´yºúx7›ÝƒgpÞÅ;†B´ 'XðL²Êfµ³ ±Ð&E^tù oóZîá×ÝFbyÍ‰	ä©¹@šv¿’ÄyßîÊáÏ(!\Š¤Þ?VoÏï€«“)‘a·Pú¸W\0ºò7MY3íô§šq£ïô·Ž€ù´.òËpCÐ©ûè©¸‘”xœ•ÎÏNÄ ð;O1à6ü)P6›ÍÆ/zÒ“G CKÜ¥…¨o/5>€¿ùæ7™’A¨À¥¨³Á3kPIg<*ÑsFm?öJx.YmÆT —r@n†ÁY%gnïµ§žj7ô÷ì(Œ ¶–yÉð„±Ìp_7?Ãé}ÛÃ%¦‚×Î/·3°æ˜¢†)8PI)iÓ[,ÿÇóËÉcü„V­ñÚN|ØœbšîÀnkn,@Ýì„„¼àºä‚ãÁ}áÍú¹&xŽNœ2©µÒê2×­t8ÖÎ§3ySjëK?ä¿‘o¼npž%xœ•QËN!¼ó}óânæý0Æ¯Æ“þ@ 3°B›ý{™]nâA/@5U•*àHJé^S56Í(e?tE/«¢°¯©9j»žz;Œä%©†Á4RQÛ–UMºÇZiê:l)+D)•À…mˆpOŽ-Ü-IY¸~]ÁV®àÖy¦i«Â|e3”c]Öe›¢-
‘§³c¦É»âK.ÊèTº‚dÃü2Ël¨à9†i¢˜@»”¡'Å¤…xX&v»‰Î(3Àâ;[‚„3ó—ì	\Ž‡L0*»™ × ƒ¿`Øc~.‰—èOŒ¼¤5ÉË’ø8š0‚§•Éñ7ñlOÖ%Ø!çúÓO“cµÿ^-²ØS¤³¢ 1å5øãýZðÄ]ý–)r£UÎ›gd÷N[!Ý³'½	Æläáê/¿"> KÏXž!xœMR„0…÷9E_ *@ 0eY–;Ë¥^ ?!%$š±æö†Ë…›YöK¿÷¾4%D@!¥ÓÎt­ªAºZ4îë^¨ž[m¤M#ÐµlQ	AVÕÝ D£ëìUV´ºBÃ«;Þp‰¥ä¶ej£1&xEO#<o«áácJ½O>N¥‰ó#T¢¯zÑ¶]o9gY=Þošªãü°³p™±0“?S:y³ž á/“×›ÅX\0XæÊØœ‘@Á	¢ƒœ¹L*ç¯ tÜ–˜Hi?yºîï4"üäØ³JÖ‡ó.³ÿé%¼~…EQþÀÃzKø[—â|ÓXfýjbhh‡™U°ð5b€m=Š€TÚ™Ãg€ómîÁ•ÐB786Å¸k%coþÐÑ¹B_O÷\•}×ù¶ŒœxœuOKÄ0Äïý<»¦mú’È"‹øÄ“×äåe7Ø65›¬øí­ Go3Ão¦df0ì¥Á¡y¯i ­{ï™z£ˆ½î”qÔ,6ó\À´ìJ2°@…È$|°! íŒëW­¤0†ÿx'cHz%µïc/µ`Û!:…Æ¸ÐÞ×ØZ)ÃÇr€ëz¤lßÌÆý˜]œJÓ´R·FèNK8JˆfM§X
g¸å¡:ØÎ)ó2~íöë@uÿÔšgÎ{†¥Ž#dþ¨|,p¶Rršàd—Èùb²Çu¸inÕi}dKLó%ØqLŸð{òåõöîñJ‚tâœ£çoJym”"xœAK1…ïùól›¶Ûì¦ˆjÁƒ êÁkv2ÙMwJ’¶ôß›-Eô&ÞBæ½ïÍ›‰@“­´Z-å
­mp…M³´–PáR×ˆ¨l³¨u‹bo"ôœl­*å*GRÕJJëŒsÊ,t»,ïº’Z“0‡Üs„¿%ØÄsòCGnfï)Þw…Å<åØÝÁ¼jæZ6²YÀD®¤È»Ï™þçŒ‡]Q˜ìyXƒ	Op]ÿõíióü	™£·$ÄGO€‡x™ÿòÎ^Ì–œT'sN(§ˆÙ!ÅY`4a*žäÂ¹Æ|/ŸGuâå¾
‰nFù0ŽRö!@W„·-E²S€‡Þ”Îè7­PóÂx–qf°×šåS Ihì¸ó8ºN·S!Þ}7°s“ö¼þÃuÅo¸*xœuŽËJ1D÷ý\;¦óÃ¨àêÊ/HÒ÷v7öËt"ø÷fºsYÅ9Eå„ÁJî”P6XòÚ’µŠ	Í‚Ð>hˆïˆkj6ŸpÉ¥ì0DgcÄ;!màÑº¶Ê—Bg¸0Šÿò.J2ŽEç½ì˜"Ë##!c'ÒŒVÒ¡m|ÉÃšàÇ<ÀCÙã Çk8„k8KÆé×ù­´­c\(·¬þhj;9c‚Ë˜ŸK€ã²&Ü¦ïs_JøGkÞ0õ[™&HøYpÏpÓJ”Ö¾ü6bº›ý^‡›&~©p‡äË”áñéõþò;æ<.ýõÞ
yø~ Êl˜$xœ•‘Ínã F×ÃSÜE¥¬ü‡«Î¨ÕHé¦U™¸˜‹bð´yûâÈÍº]"¾óÝ{ z"P²M™—RIƒ•4R–<¯¸Ê+T•T†×ØQ6£§)B[šTÛÈšs#t^H%ZÙ¬±È‹º©E^—‚á{çáÕž	ŽþìÔ‘‡‡ÿ8[ò]êrnï|÷…<È¢æBBÆKÎYëÆÑÆH?¢s±Ñ¬í1¥A“Áeˆð÷øòô|‚@1¦– 6±û[€±éðŽHsg;¤9·lrœgš4iHØÖ¥<á9@»„èF0vÅ#Ìäæ®Ø²î¼2j±ƒÞœXÁä¦4ÜQ¸g¿î€>fç¿¶ü½ËÞ8d]§Õn½ñL×õ®%ðn‡Œó-Aö&’Iˆ„zÏØ©·&®Rá¦µ‰âí6)ð˜r>…q’wØÓåZe»‰tæŒÉÔåþ?À>~X¿o–xœ•OKRÄ ÝsŠÞ¹™LA±,KÝY.=Ÿf &Ä)ooâx ]¾î÷m$÷Lp!ràRû‘r¥4Gå%—¦ïŽjŽ,º`j`)~Xo{ì9ãÆ:¦61zo(CªÌ8hA-Ñk¹ÀÆàe­6ÀÃeG³ƒ§˜NG›çG`ÃÈÆAª“„Ž
JÉvckø/ù‰ª_9yv°”-Þ´—˜Îèi'„¼`ª„¼ÞÍ0ÇZ÷·WÈZÀŠ¸†¸%Æ
V¯?„Ý.a^ëÍ¸BË`,e/â6>&(ø±bm;=à´`+°”üÝ-Âhw+tr	yç„®ËÞwæëþ/kÉ7¹vº›xœÁn!†ï<ÅSÅ^ÞeÙ¶Š¢¨—*‡rŠ¢*`ØE^ƒ8NÞ¾ëØRÛ[Ž?óý3Ÿ¨™$W{äºoIã7BzgäÀU×jé¨—ÕÈö˜)VèúÁûÕÃÆéÞ 5V‰N(ÁµÐª3b”‘†‡:¥)Ž…Ò~Mðýýš4Ý–mcÓîD«…ÒmßupÍÎÙòºµR†{
u‚»C±Kw{
9…Û+ÍëýF¶ZÁš÷Ký ›FÈT(¿b)åœrQMPj‹c?ý˜MÑÏÁV˜p¿§XàxRø—È4c%'MŒ®À5c³bóúœieQ_ÁGDûr™V‹Œƒ0ú²‚2¥#Ô‰Îf€ðbÕ0öäÃÛùÆ>ÌäÛ²á˜òùr¨°£Rp¤ßì!Œ‘Ü:y¿6ï_?ókì€Ä©‚Ÿxœ½NÄ0„{?…»«ròúw!„hOàµ×¹\rJ|¼=¹‚ÑÍ7šÑHÓWÍ8±cWEc]r¡0šjü.m³%V×¼ÊÜµM>9G@Îû ©Ši `*@‰š4*ìo>:>FXsˆB¾¦˜]Â`s[}¬*ßúiYõ«Lý¤_n[9éÇ;ùÏÓÜåóX–Ë“Q"=˜`ŒÚÝËÔ»ü³®Þd÷+Ö<ïµC¾æQ¼ÎÛ2·éK¶ƒRïÓ8K–Öþ~øËŒúj›xœP»NÄ0ìý[‚''vr¶„×P 8
„(Ñ:±ï,Åväl8àëqB”t³³3ûÊÖ‚ÁÊl0¢çµâµØŠ¦3Š÷\ UíšNa­1ÛH h„âØh‡Zs%5wÊ´RHÞµZ¡Dm¤4-Ã™Ž)ÃsŠðà‡Áf¸Â¥
kqãÌ¦Ká*©*Q·ÛªK®8g…žÈþß¼m%ÿ1³[ÿÙŽ”}8;áîéqi¦q&Æ^pNø1­Šàã\NèhÁÆ’[¡K9 ™³ùb¢?
¶À)ŽÙGr?£7°¦ÑÚ(A¶!½ÙÕã£'ô¶+ì#Nì×}*/Á`±ˆ] ×éÆTË]ø½³dQÎÄ•Ú?ßoØºÜ“xœQËJ1¼ç+útÉk'Ñ« {ðà9“ô8ÑL2$eÿÞdÁ›Ð—êzÐT×ŒJPŽŽr;N|TZhÅØq¶TK.¤±Nh§)Èf2Æ
ÌÚy<*CQS*>O£åÜIa™Q2MåèŒPÄìuIîMN}˜áÆt´^ÀÝ<lZoÉ‘ÑQÎàšŽ”’¶]}­ø_³àJ(ýc&§½n{…‡çÓ8üð!øRÁG0mr6gB^Œ°e«¯`J§Òô†¶Â§¯K£’ÛˆfÅN¿ãù
Ö=T¿k²+!©Bé¢?Ûâ¦¾ÃÒ;k¿ºK’‰ÖT¾¯ìÍÌ=0H1œ¡´Ç¤ˆò¢Š‡œxœŽ=NÄ0…{ŸbJ¶ òobK-ÍH@pì1±HìÈq´ˆÓã = Ý|Oï{šZA÷†kN©TL£}V8¯<Zªr©xÏDïYmÁTrÂ0#dS4PÆ”3coLÀ`œdœØ½N¹À“-9ÁKœg,ð`ZþàÆÎåå˜ÔLpEµ†{ª)%-]b­øyÜÜdr‰ß0Ùäç˜>!¸Ä²\Ûï"Îb‚ç÷·WÈ{]÷JÈÇ7¸ÚR®à&t_‡W'„-þ`w§cäà.”ÛF[—÷v´V»Ur4°å­kG~ùðlixœ•PËNÅ Ýó³scÚí5Æ¨[—ú–\
M¡1÷ï…Ä­‰nf2s93å ÅÕh¥šFT†›™+Ë•šÔâæe\´šh^¬`;afÄ‹C©•Pbpœ»ÉIs¬%Uä¼(tÃ³¬é€7òe…×3›¯mèuž},z“¶'Ä2p%—ÐqÉ9«ÛÍ—Bÿ’Ëaü‘³—ÒhßY)>EÐL1ÚÌØÇJw2€—#BN¨ÜåVáÌ5P>uÆR¤šÏ•ŽHl¢1•Šï{:
”ÕgÀÖ	¶´Õ×Ýƒ>lxÓ¾À—åŠX¼õŒ½ûÏH¶KÎuúöð—»Ù7ž@’Qš xœQAŽÛ0¼ë|@K‰cÇ‹¢(ºÀ^zì~€²(›ˆ,½H~_¹Ø,z!fF3 )J&Óén4Ý0\-¡¿agô¹÷¨/½´oîæéQ«3E]¯‡nÐÖŒãµÃÞ\Îcì•FKÖ›Þ]íäÂ]–”á7±,ðk/Óßï9Ùƒüä(NSZÔnF÷—a<C£­UUW¡ÿŒ«7~@¡Ùãá8Ãš…¢ÔûBŸŠäúR`Å'Ä$@êŽ Õ³œ¨".°å4g\ïX”KTNðºÐtöÿüžA5``–|Ê™ÐÍ}NkÍ}Œ®Š²çX¡ÂmKyËŒBŸÃ NSÊG&<OJ-"[yiÛ¹n¾Ûcß6pÜMüX©=J3n¹”J[©Ôž#¹&yßØçËW~Pý´¬ö’xœAOÄ …ïüŠùv”Öc¼ošxfh‰-4…6Ùow=xÚã›ùÞ{3u%‚³×6tAËV¶¢Å³‘ ŽZ÷d°3ŠV«À»Rª`$¡ê±A(×‰Ö(g;çzî%
/:MASÈìVÇ¼Â;Å:ÂëVüOßWqrWñS¥éäóüBu\é^¶n8gÇtŽµÒÝvÁµ1ò×Î>hÎ;Á²!z˜ò aÍ3Ô¼4íÇîZdÆ¾(áqî¼LÛS2æmBp[!„p0û?ôÈ-pÄ°·[¡V²xeÍ{D*ûŒC"lr»<ÞóûÔ®‰U•xœŽKnÃ0D÷:/`ƒþHŒŠ¢(º-ºê	(‰²…ÄR`+rûÚAåï¦®" ;Ý‰vN[ñ]/d{wb!êÉÁ#[;têÊ«ä
v0dlÄxÄàbŒ%0&¶û§7'2FGÅ·:—¾%Õ¾n›Ÿáý|„Öá3å*—Ö—åºñ„£¶H$Dµ_—T«¼¬w¨‰ü×ÕŸ|	|IS^ŽáÓ*\'NY©ß²”u–í sL”kM%o0•
KÚš§+¶¾Ï²m%O‡w~´{ÍhJŒ{¼½2VýrRxV› xœ‘MnÃ …÷œbÐD`ƒªªj»­ºj/0†qŒbŒ‹qÒÜ¾ãþd3â{ïÍ©LAT8Utm[tDÚÕZIÙ4R[]6UÕµ½˜1Ñ”ÁØuˆ•²ª’FZ]•ÊÔmg{me‹Æ•²ÑFàš‡˜à•|àe]ì Ç­Øw[ñä§LãÞÆðJ×•bÏº…¬¤Ü>gºo”4uUÆkÆÅ	æ	x"Xüt	èËg£Åìã$Äó8¥Ó<$ÊkšÈAÂ<°ypúAæâ*¹‡Á/üüsõ‰âýj‚È½ƒnÍÀÆc-ÛeNä¼ÍØq¤3;Ñ¦.þ¼ MÏŸ‡ßÃ™…OË‡y¤°}ÇÛöÐfÏCöÞñî<Ä.öý®»Üß²Bñó:®Û”xœ•NÍNÄ ¼ó¼@(Ð~lŒÙxðâÑƒg~>¶Ä-l€ºúöÒÄÄ«žf&ó“i‘j3è`;àÞ
6/^
ÐJ³Pœ’Xr3S£3á€	Ì*¤ÒŠiëgÏ×¬']œTœ˜½­¹ÐSjÃDß0ÖJÞÇûAÎÕEL—·ÛÞbºŒ)—À™œÙt`Š1Òí-¶†}c[éÓ^ÝÚW1ÚCœcjx{ð·®äO<ÇOZ÷Xch4`	×|ïVÉÛé_÷Èk¼$ôCa°_§¿\"ßß§r¦‘xœOKnÃ ÝsŠ9@mN\UQÔE7‘ºh]0Ø(1X€•æöÅé*u7ïéý¦$"Pp8d¬tûÝ®Û÷ÃÁö¶ãZ*%äÁu;ÉL
HÝ;h!´:É¹U;> T¦çnõRìQÇp-SLp&_&x]³™àå²VoàäC¡kkâ|„Z"¸ì¸RÐpÅ9«ììK¡ÚÙ›ÿ†‡ ¡…\°d¸Æ‰±w"%Âš	ÊD•M8S­ká3Ì¾.®÷ªða|h,9hËJ•zb·É×IsÕe2…L-c´ÄTÈ6úþgL¹P€/ò9×ùím;NÙx
†š:~YKMk-Ù§k~ûõþý8ûšô’X—xœŽ»NÃ0@wÅÝ:%rüˆ“
!ÄÀÂ?p}}ÝX´vå¸”þ=)#b<G:Òi•´ÈÚ*%«´Bæ™]T£ŸÒ“²>jqÆÊ¹9Ð˜1°u–ƒQ1é±JV~¦ÑzG/m)^9µž/+-ððq‡Þßá)åÆÇžÊé3RO£SÐI+¥Øì)µÆÿÌÅKú3u>m¿%r]SÉ·­~,VZ„x_×­ÀîXòaW\¡múZ7„v;ó¯¬â-2‡®ÄØùÛþ/{âs¢q™xœ•KNÄ0D÷>E_ IÛŽ3žBˆ–ˆ´k'²nO"8 lJªj½.UÍÞºAÕ¨•&¡žÑð Hž„ÄÍà¤ØJÙ§
nPÎ  ÓŸ{Ç‹¶¤v(ðäòçN qF[—¯>Öž·bGx¸¦5‡yŠ©ú©µËü¼×¥Æ³‚"ÛÓ9Öêÿ…‹^ÿâì%ÞAŠÆÄ
Ÿ”SLWX¬y‡{/êèòþ³¬ÞÆíÏÂ’gª0“ÍKik]Ë¥ë®{ñfŽºnŠi»7écöÝ!bKÙ|éx/{‹×ä]³„Ð˜¯Ë_°oàÛ|øxœNKnÃ ÜsŠwØ«ªªîª.sÀÅÆ<§ííß êf¤Í
" ÑRØQÄ¾Gä5ô­û‹Š£÷
;å²½c»+˜	¬‹::¯Ú…è5ŠÑ¢é¼·Îq5AïdgsÍ[OL4ÃûQÃ/÷“´þ$o).mØÖWÚ
­”¼hD'{ªk"ÂÆÙmÞ¾ ãä(=×‹££`…”¡®®,ÛÔ2öQëÌD{8Ÿž‡?kù’òñÝäÇŠü„&,‰§Ó]¹Ô’ÝÒ”ql¶ÿ3üå'ûox$Ÿxœ•Œ»nÃ0 w}Àå–E5cÑ %*6?à(Cÿ¾ÉÐ½ï€»º™å¬D¦˜rL(]/Cç}6jYU%ô‰ÚäÝ*›ÍCé˜¸PîZncá1ú´WáçA¨(‹:yÔaÙàlcàô¸§>®/ØéŽã\í¶KËô	žB$ô=4Èˆîi§±V{+çî/wßk–j0É«\ìîÜ×x™-7K)þþ³u¿ŒYøžxœ…ŽKjÃ0EçZÅ›Éú—PB3)tØèód‰Ú²‘Bw_‡. p'ÎÛ"h©¹Óòœ7'I¥2VLí¤©—J±)&ÁÙ]ÃÚA…èd:%­dRÜ&‹
©‰"rd4ù 9E.q÷ž··ÜÊÑ·=Ã.Ë£ÌpÉ!_—£ß€	m¹µÖhx¡ŒR¶u-½cƒO,=Ãûý.ßOý®¥v\ÆSüËe’¨<sâb±a«C‡ÕUØÝŒ„|•¹b¶”ÿóúÏ3òb8WÑ—xœMKÄ0E÷ùo/­i&i“aA7‚¸Ñ¥¸ÈÇKL“Ò¦óïApáF—÷rÏ…SDèÑFJÖ[J9Û±¡×Lq†BH¡½V1ê©çdÖæ
‚]Š7·~à:3X%¥¶Ü)fÐkÞS¢·Êa‰k-s€GLéG8Ži­­Ã;èø vJ)ÙÃí(%¶LS¬xÂXÜo«pø¸†Ö\Ã1æŠ©½¿qN;±“ÐPqÁ‰v4ø-%0©œ2Ø’3Ú
“Î0ë	y.kMg0zE%C§²¸˜Gˆ?@£Sj	ycF×ïsÞÿ¡CÞ^p*Ÿ×Ûäp¹uÛœ¢Õ¡Ì5–üþûîŽä%Ó‰×$xœÁNÃ0DÏø+öIí6i„HÜàˆ88ö¦¶HìÈÞ´ôïIRUB	Žk½ÏED0R‹µ,EÙÈ¶hTEBiÕpQU…®Z£+®‹TDO`TÅQ¶kUÊRn7|½®kÍ[©U‰r;ñFl·S#ÙáÁF—(ž°ën7VÛ».QnðDQÕ›º®e	—\pÎtè{G„žÑ‘…û1i7ó‘7óqç<a—OàI^pQŠ
2^Nr6FÑTË%ö“‹òtð5eªë WµÃÄØcÐc?w"‹e6$Ê(*c"„\ðW‹zzXˆÞ¥äü&Ý@hÙIÕæè³€ÂÂÿökÎØ«Ûy4YhÛ¬9^ÿ±{{Á~êa tfeÆ¡sz®wÊSøx|ÿiùá{¾Ì(]³‹ój6]ù}Ù·ð9}Ò¯Ìyãøê¨Å¶‘xœuKnÃ0D÷:/C–?²Š H?YÝ´'e*bË®D¥Íík	ÚMw$1ƒá<
ˆ ¹@ÑÖ¥V*¯yQ5ÚpÝŠ¦©1/êª-xU‹ZI6ë€ž Ès!¤hŒÊ­Õ]QÉFWF”‹\
iëÒpiªÎ2¨Ÿ˜^;Òþ§4œtð¶æ>Î§ïÝqÔnÈÌ4>B^JUHQ*	ÞpÎ–ëèˆ0Àõðœ¢éa{Z—¬]—ó„íJ5…XìÕbgþ<¢Ü†0R„Hs§	z„ÁE‚ÉB‡3ú½q{ß?½¾íÁºÁÅ›¾ƒ¯5|É˜¤¬?“‹–&ˆHi¾¦ ?»0ùqEgÉ/u®ßdŒ}¸£Çn3Y»i/ðrC¥áðËê~ËîÐvý1Òµ/ûÿz”ä•xœmPMOä0½çWøÆ‰ªm&ít…Ú]-HÜ@ü 'ñ4i:›¸-óïIH¸ùÉ~~œˆ@µJËC'Oµ²Ýpè¥¨•G<–á(OT7ÔwRâŒ‰"C×µRÓµÖVÊþ¨,6¦k‡¾«%lÚ5Æ(»9Á3Žî“Ÿ4¥nrwã'¬&º…¦xÊ¡	×µªkaæiòÌ”à‘<;ø½dãàæu•ÞÁL¡*‡?ÐÅ?ÿI{Œ–@Yˆ—¼`ØEÐ‹ÖÇÎh^q$Øì¯6,ò\x˜2gÁý_|"ˆëT.iõ†rÏ3,‘}Øé¦˜™€9ûÓeøFv¸Ò—ÂTÌû>Îüa²Ä0Cž‹0ÅVLõº´™xDØùüñO%ÄS‰@Ùk}ù\ò™ç³ƒ
aó¥dW*
™+K·â=ÑŸÛ›xœmŽÁN„0E÷ýŠ÷RZJÍdBt9Kã¼–Wh€bJQçïãÄ»{orrOND ½è<Õ•äD‹½öuc¤B Aíj-ÕTìÅ¾Á¹–R©måQkÓHÓú–È6^YÛ’²Ü0Üó¸&x1dŒw„Û>O˜b€‹›~ãâþÕ†¹tër…Jj­7•†‚kÎÙ±.!gJp£GxÞ77Âe:KiÏÒ…˜é7µà¼5®œ½Å“Þï„}®i‹õ°Fˆn%c¯aˆÔ«÷…½?ý/ýØÊ‡}7[þ9fß0ÜkHš-xœ’Ánœ0†ï~Šéµê®`EDUU¥=¥j*uûƒ=`+`#{œÍ¾}Ç4ê¥—*d<ÌÿÏ?ŸàHHC×5j$ÓÔç±ÒmS#é³éë[ìëºÆ±QFòMù:UçFŸê¾%ƒh&:ë±é¦¾Ÿ†¾m5ápf¶!Â7rlá>'máãS¹Çrùì<ÓrÔaýuÛ§®îOª®ª”TWÇLo”«Ÿ´&‚gŠÉõQŠ÷D–àg òl? z#N&È›A¦¨u^y5GøeÑ?Á-dà $f·àI]m <G7fi¶.AÙ›wJ=äÄÂJ`ÝlyÄÞù×¦?±î”‚÷²Ó“{‘‘pWH
¶¥$›ç$ÞWi[¸È™Šþ’·-D†I O8F§—tœ¯ÍÞ“æ’1ÎÄ»ì{ˆMÜ­ùôÂä£Ÿ	Æ	!Sšé
—2oyŸµ"ÿ“8Ùp-ØyÚ‡|‘<rÿ—¬dÚ._Âº¹E’^1zçç´ï±›JîÉÍ9îê¤ÔÅÍžÌ!LÓa¼ÝýÏ¡~€\öÖxœŽMJÅ0FçYÅÝ@Koš¤­ˆˆA8Ÿ›×`›”ævàî}Ù8<>¾Ã' F«zkæIÎI;%£T³‹ÖêhTãÅaOÊd4J…a	äGÔ!Lzñ’ä0Njò´8½6Â^¼–Þ)ñ
/Wõ+<~7è]ƒç”™¶Þ—ý	PM‹Ô¨ŒnÐÃ îvOÌôÏ¹ø:‚e‚Püµß£-§’…xMÛ)ÃžjMùåh¾6Å+ÁÛ´_›Cí…øL·L¡+1vîçá/âHk&–xœŽAjÃ0E÷:Å\ÀadI–§”R²í®9f4ªEc;8J¡·sƒåûð¿mª@Y‹ŽBVxô¨ÂCæžì0â‚Ë‰½+¹'5—´éÒ w6X‚Z¬*ù™8Úˆ±ÄÀ¾§PœI·6­|imoW™àý÷~Àg]šž²Î`}¤Þá@:ˆf_çÚš¾¨›o×?…$Ró~:á²í‚1§ú³hîÖR:þ{¦nî÷”\›xœ]jÃ0„ßuŠ½€dIY»„Ryêcéô³ªEb)Èë–ôôuèJg˜¾áF½ó‰¤2Ö”S²huRƒÕ¨´ÎûAÜ\£ÂF)'ýÁK…Q£UdUtCÐ˜ôAZ©œ$ÒQ¸çÚà•2ÏpÚÖ0Ãñò½ˆ—\˜®}¨Ë3(ƒãˆ8Mº}AŠÝ]23ý³.ÞoÑ1Aù\¨ûj™©ÛJØabÛ²¿pœké…8_·H¸Ï¿Éoj•VðwXòÊîB{î-Š]M©ó÷§¿@‰ž)p—xœ;OÄ0„{ÿŠíhH”‡/ŽBˆ–$j;^_,îì`¯îßcó(åìÎ|š]ŠˆÐ[-Õ,¦Ù Ÿg.{.j”\k1NB[…¼ãƒìØ¦"z‚å€\š±çb
ÑŠ^ÌÓh¾t—–+=Lƒ-S™Öá­ðÓ²Âík­®âÞyÂS»„óØ<‹Ê¦;t+Ó³#ÂÆÙ©±¨(G„¼E˜{^]ëÞ1A
g„`V„-”óG¹àS/&ø+‚]•ƒ)|Y€ðÀYVCß2¦"SÝ—¶“º|ât¶¶ôv¢ÚA;¯âå”7°ÿÆ² ¾2m¹â+¤´.`~`Å»GGØ2öäŽM¬môåæ/ïaD`ŸéŸxœMNÃ0F÷>Å\ÀÕ¸ŽÿBˆ-;8ÁÄž4V;r§nO{Äî½'}úd0ƒ=[ëÉwÎ|
Sr9áì¼÷vrH> :hpˆÖy‡eñ‰-Çc4)`(l2™ì‰Šç4)ºËÚ|r•>î·¼Âëõ)§ù)ïµ	o§Ü÷70S.º#hœÕ£îU„ÿ9W_¬©XûM´Œè‡ÔÞ@:äÞgÑ´m°S;èÂJ}×Kã¢û²èùçå/·ê¨c‹ŸxœAjÄ0E÷>….`gâñ¤¥tÛM¡ílKnÌ$v°•¹}=í¦ËRÐæÐÓ"´qÈ‘Ö“³Gtf¦`ƒÂÑŒ&'Åf%}À ô4úÁâÉ¡¦CP'­´&Â	¥Ñ“ô¤ŽÂî<ç/y†ç½úÎ—{èÝ=<ÅÄ´ô>¯ Fctƒ	¥­]#3ýs]|lh™ ³ß×&m9æ¡Ù`¬>_©ñZèó^áç¬±²½PZn`	g‚9Wî¸´¢@Þ¾)œ›]Jä¹³ËÒÃû+´ùMï…x‹Ÿ‰°Ë!tîöð—7Ä)ƒxœŽMnÃ …÷œb.`°¸ªªª‹nÚ]N0ƒƒ…‰ÚÜ>NNPuù½§÷Ó*3k¶“òf"3Rž#"i¯XFe0j?ØQŠ+ç’Ô¬=“	ŽåµSQ¶&é,jg˜^ÛR*|qj|\wZàõü€Þ?à=åÆ—žÊúj´Ö8#NŽRŠC]SküÏ¸øL¿@%¤<^Òœ×ã¹ß)3üTÜ¶§Qg*9¦ÊÖRÉ;¬xæRƒk8¶[Êz!NG‡®ÄØùÛË_N‰;ñpî” xœ½NÄ0„{?Åv"'çÇ—!ÄOƒD€6ÞÍ%"±£ØQto'A‰¨Ö³£ù<vX™P¡ÔJÕ­êLÙKÓT5VZ«^i-UQW5]!\Ù(dY•Í±ÒÌR#µuÕtkªŒéÚ²î}AŒ†nap+¼ðxÜ¼àö#‰C—ÄýhOãæ;(ê¦Qm-¥„\Æ!âvCàÆÅ³ó!+­@ÎlslŽat¶…0°âi@{b‚00Ä§áÌéºà`óYžÁh}`$p=dïYrf±…qÖÑ²æ=á"`·$º?ñ@t¡~ïR0©³l ¥Ÿó4E¨]ðÄ)úÊË„æ’Î|ö‹í\í»½ô_Ö'Nk,xŽMSéxO–)w}Ÿwç›¿üø@§£’xœŽAnÃ D÷œâ_À¸ªª6ê®Ëžà>1ŠÈ†H¹}m©¨ºœ§™Ñ«¨A“ÃIÖðI†€zF²ÈIÞ¨Az­ƒawÜ(WJMÎ`°zäBûQ;K1+kÉ &2A`ð’a«KÙà‹b]àÒv·Àëíý|†÷˜+­½+éíø4fÜÚ	:®8gM±Vúçœ}×Òi[c¢Ò*<pmmÇ+1öá=Ô	3Ü ˜=¸·ž¿Å¸CÌâºÆ\É~ïûŽ×L¾+!tóóå/fìq7q$™!xœ…‘Moä †ïü
ß·‘¯!©ªªj/­zYiµç•gBK §£ù÷K¦í^÷ˆyû5p"múQ¢±¶ý$µ¶­’²§F©¦éj£Ð*t­ÄŠ‰ÃˆõdÈ¶eûal‡¡mä¨­néHÒ¶cCe+pã9&xš“Ë×žÉû³;ÁÝlæŸù`éêN©nì¤:ÂÙH)L\ÇL	^Éñ[63Ü½ï‡ƒÞ.0ùC¿uU·=T²+ºUÆ»[ `Èg\¡ôŒ€ÆPÎBü|z!pÐŸñ’ÁÒäYÀ¾LöôeÞ@ŽŸ6Ï!Z˜R\ö’Ht*«•¤! »oó ÄïLW-®kL¼Ç—C_zâºúËõ6D8v•vü•Î1½cŠ[°…è=ÄéJþ›õ	RI_˜Þ¶Ì%éB×ŠÝ–2§Í0ìOñ§ˆ%Î/w*+Vqš*}¹ýÏ§ˆ¿îË²þž*xœ¥RËŽÝ ]_á Bžš[Ý©¦í¢ËvY©2¯$š„d€Œîýû’¹­ÔQ»jH>ÆÇ>§`-HeD‰¥ìD§Ú–UË¦m-–F£k¯eg”­+²a°>BaUíjÃ[%¤4L£âWUÙ¡m´DƒUU3$¸§qð¸£·ð)LCTW¸7,†<?Ïë0éB¯Ë;à²iJQ²R ec${—)%à³Òï÷¨G¸:@¡pž|²óotY‰®Ít™éÄ¿,–êyêáÁˆû¶­!Ëš>N*ä«½·3ŒkL€Æ#! ðá‚Ë6ÛžÜ)@¯9L'Šó”¦€>™NNß`fž6OÙE0ÆóæÌtNf«÷óÂ7rGéQôûOò¯°¼„t®RÈjÑßRò·^òVÓŸzü³?åSÆ%em±†¡8—íh¯Ï&»Š×˜ìrSòü‡üü¼ðe¼5tuŽªkòdÁ×€Û–äé@g/Ó¾¼~0ù’ÒØ“xœŒ1nÃ0 w½‚p Ã”HEdÍØPe©å@‘‡ü>õŠŽwÀ]«ª 4prÌxŒ.9µ!Æ)gAtÞ[‰Ã˜ÌSª–#gœ%1K ïÈ±â(ÈÑ…žCN©÷Fö6oîº´nû+Îðõ8à¸.¥éÏ)nëz$²Þñ@ÐY´ÖüÚuiMÿ™›ª“­ÒV)ð”I_Æ|/SÑÔm9wá}þËÚ| ‡[Í–"xœ•‘ÍNÃ0„ï~Š}GvþÜV-ª8p€#="¡³n‰lµoK‹„Ä‰“5c};³v
DÐèR™µÔ®:ÙV}Û*³M%«N‹ŠÚ¦–•Ö½a3r	Hh£D%SvTÖ¦¯±\­…hu½èZ#é†á’àÏðèL.æ´íN_çWócíGë–Sa]¢±Ð~ºY+%ÚFˆ¸PB°ìN6%
ðD6p¿D=Àöý"Šî"öq¥dÆëŒ3÷9×£Ý€±'¸*ïéÄqa‰Öað1¹ÇØa  NóH`¤,'t0ã‘âæ:~ãœ§€.Î>¤]è'¼}vr]²]²¨à…q~‹Ø]NÉƒ?.Ä¿#Ú1BG—HðS®vò€:-9ê—ëÛXfïØ­HplÌ%S~™¼%enÀT0ölŽzîáÝyóÿï`_‰K·œxœ•AjÃ0E÷:Å\ÀFŽd[)!„Biwí‚,"5²e$9®o_ZRèª»™?óæ3?D¨%ãB(ªiÇÛZ×Œª¦Ö´Á­lX³œ+IÉ$Ž	XÅÚ»J+ÕñJmÔ¦FÑK±á[Î¨Ð¬\ÖL9'ã¼ÈŽWcvÛ}Èãi:ééàì8–vLèJå‡=T¼miSSÊ  -¥$«ƒM	¼¢Mç¨ì.·¦ìnÍá/Þ¶UÆyÆÉx°PÎ>€öÎù¥ð#ô6*Å°BZP^"èàH& ì	9Þ÷¼‚I¦ì÷{ïNçù<ä\d²ßWçsYònÏ#ö…×ºèÖ‡ÿAÞðjqÉ'nø“	6&?xFç{†É»˜Ê÷ä]´™ûì
*xœÌ»ƒ0 PEtLq 9Á>ì"Uêl ÅÙ>#°XùŒ2AÚÌ’¡BûŠ÷+¾E—f¨mca<6ÊKÔB×Ò%4“Ä:ìîU(gZ8f`T"mTÀÚ	)Ø*¥-KqÄ“7¤˜÷@lÝå ·O{Nòƒé¶BNïW.ÅÈ.W4ŽeybZ`¢u¥~ˆ=Pô_s‚0<y}·‡ù{é6ª˜xœu±NÄ0Dû|ÅJÔwØ±“ØÒ	€„¨©½önÎ"N‚ãè_¯ ¤œÕì¼™’‰ ë1ôÒ;¯öh´òÚJãòÀR9lQ£mV—i.Ð²GkŒ½`cƒò¥Átè¤E4Õ‹ºõíŸß‘ä¡Ó}`¦lµ—Ò²1ìe…Å=ºJjÜ^.K†7ŠåOûæ/pú¼‰#ÞÄ9Î…¦£_ÒH=ôF´R8Ô¢©×K¡/±¼î§yÉ´Nßç±ìøÏ[óNy$X÷i‚L_;mî¤RÀyIp%¤|¸ÒŒËáêæñ>¹­"šæ1H5%œÜÁ¶’=lÉåqæ¸Žyþ€Nˆ_Û)qNxœŽIj1 ïóŠ¾‚4Òh`’K¾0GÓÝjÙkddC^o½Á×¢
jtØ%§ÙzLŠkØFÐPöY¤•,ÅåŽ]ŽkfŠ!°r*‡˜GÒQ¥°êH¦KvåuÁ¿qmv9¨ÁŽÇ¾*–Ûù)$ýüœà[;óÉ­ž@[ï¼·›ð¡‚RË¤µŒ!ïöËOJP[¨Ré†ÿ»pÉ…áQ±(GnçàïÛ,^MµR­›xœuÍNÃ0„ïyŠ•8Sü»¶¥
U 	ñh×Ù´i\G”·'qä63šù¦Uã"’FJÄ*ÏäMÉhO1ëMŠá8tU™ˆU:ËCpÙê^ã	Â†”7ÁÈýõubk‘³÷©ÏÜS´.é>*ÑÛMÌÑ ÅàMêhm§¹Â‹”v‚‡õ’O°ÿ1;þ1‡25wy>ßƒv÷>F¸U¨T·¥çÒšTx*íyeØOs•eü:7ÀÊÿÌºW©GeG¨ò±Ê¥Á¶†:Ÿáø)SOc®wC¹¾m„¥Œ]÷X®ð«©•y©u®—oýeàšxœ•ÏNÃ0Æïy
? š´M×	!$$vä°Gä4N©M¦üÙ€§'…qùòÉþüó'§@$Ú½D.q@U}§°Z‚wØJ9ò"I¨½agäPSó±o”éÛNª†k.Í(DOJ`Ý‰¾1R	Ù"Ãœfàx%§qc°“óî§ŸÆã8¿Ú¼î|˜€·½l†RTu_×lôëjS¢:>Ô7{¶ïP0g»`²Þ…àC<0ö:Û…n#ë&p—•ªq±`Jà§J/§;Hó¯©¤0>;aµ®xlŒ™"³îæÑt`dKBÒ€NC´Ÿ”ÞŒèÀÑ¥1•(ÚmîH`PE°.&BÞÀ²lëL0LyÝn# hŸÕRÖØéûBå©ÔÇá¿a_y2¢>œxœŽAN…0Eç]ÅÛ ¤Ð–‚1Æ8øãÈ¼¾¾Bó¡%P’ïîãŒÃ{sNî-3„vp$µ²AÍf ¾Aåeèì‚WV)¶­'+nœ
©ugL/¡&×(é:ë|g¤6ó-HàQ¦¼Á;Ç2ÁÛ±ÓÏ÷+Ôî
¯1žkÊË4Úví0ôJC%µ”âl—X
ÿS˜`Å‘áX=Þ…¸Å”‰rJL¥Ây†Ó41úsj?û˜`ò°ñÈ‰·Ó…‹<MñKïµŸqLì«Bå¾žþòQ|2otß’xœ…ŽÁjÄ E÷~ÅÛ—5Æ$e(C»)tÙ/xú^F©Ñ!1”þ}è¾ËË½‡{êÎ4K­Q²ÃÕñlPkZfïµ›­ÑÚ»UÙ‘ÐqÇsžæUkÆ…Æ¥ÐºAá`%‘¤É¶nn€·ÏÊoaG-÷ ïœÒw¼Á%øpMGí‰_@™Éj«–QÁ“ÔR
_¶-ÖÊ;|p¬^ÏÃ¸|=BïásåÔ·á¾,“RÐIÓpD@ÅŸ[“ÅK†µYÔÀàKÎìk‡)Áã3	ño™©+ëÚ¹ŸçlÅ/lÛaš'xœ…QËnÕ0Ýç+fO“çq“ 
µ…BBðc{œXMì`Onáï±¯Z	ºackçœ93ˆ`¤”ú¬Ïu#ÙLí(‡Qé±íõ êÑÔS§±©ëbÇ@Ž¡%Óô=µ½™„V4š±ÛZB’ Ó*¥b'º^|€K°‘ý¾ÀgZ×g;Ãí¢–»5r¥éˆn87g1õÞÕYFùm³ÌàY^àáˆjÛ§T2wÖ1­Uj|OÓ¹í¡¬»/Œu|äg!p—Jm£ò—Ä¸¡Ûq¦¢€m)wmÒt±Š Ã|lÉâ</6ibƒ! ÐA]A{Šà< @¿’³*“e˜õîÊv"V§¬{Z|d÷Ó±+Ý¼(<V†\\B§Í¾¢u™ñ5AZ†ÍzË¿z¿KTOÀ]Ü}àÜ!é/Ä”5VJ0<~Ô:PŒÖÍÙ‚òNÑÎ)Ý™À¿å²Ä÷O_ïÿ¥·Û^×•Ö¼>Ôu¢«hU?ììH—Þ˜Rþ~ÿŸ« Ðº˜xœ…ËNÄ0E÷ù
ïQ«ô‘Ð¢`ƒ;¾ ·‰h“*qæïIG¬Ø°´}Ž®u)!B­0Z7²ãã „ìÀ­µ[©¬‘ÍØµœÍ6•08M¶ÒöÃx¯j.Q*ìo”i¸B¡D3©–©\Lðâ’Ï7¯¸,_~†“3î¼dª->BÓßË¶„ˆîx	b&®«'ÂoèÉÁóžƒÓç1ÔúÎ>.uõqì»*Þ½ø!ÇÅ[E	·˜È‡ô>gðaŠiUäc`ìÉZ ‡ðîÃþ]…ËŠ°”Gâm½*þúÍá‚
¶œÖxAv K5G\x„ÜüòF(øµ>›§+ljÆ\3öáç€¶ŠÓTéëÃ?±ŒŠ“xœŽKn„0D÷>E_`EQ’m–QÐ¸ðd°ôh”ÛneSÒ+©>²1CÇ©"³óÞ$6KÆv¡u˜LÐij§VÜ¸P×F&«uDýØÙ‚÷‡è­½‹„&E¯ð.sÝàƒ³Ìð~ßÓÏß'4Ã	¯¹ßšT—0.cu.:h­wÉ"üÏ¸z#‚ë^Œu[P@*Üò.pöb!¥¾VBÉe‚aÅ‰áqî~@]%×²7J}æ©0]ê8^†Ÿ§¿\Q¿¬…js˜xœÎIj1Ð½Nñ/ÐFúšZÆ„m–9†¯î&¶d4,|ûØ9AÈòU£‘Ê¬J$3b4h¼ŒJ;§¥õZ‘Ó<'ÙÝ7*¬YQqÅ…[LAgTÖD²6Å„Ój…ÌÌÏ±×ŸtŒ>f;\¾_8…Þ2èzŠõöBY#Ðq´°pÃ9{¦·cúgù¶ÅZò±av‚>Ú¨ó
ùùg–~l…ŒÇ:c_¿ZjÎKxœÿ²Ç~ ‰éan—xœ±nÄ D{¾b»Twƒ9EQ”6RŠä0,6
†¬sº¿]\¥Û½™ÕPE©”Bâ4H&ß›Þp3†Þ9ãDØR‡0Žìj+f‚Ð¡ÔŽ)?)ïxÐƒÐ£4{bRz0’KäÚ÷Ìn´”
ïi·­¹ž¿qžñ3a:»²¾€Z‰®Óf„Wœ³Ý]#þ3Î>‘¶šÁ¦Xk©J†ÁÑl³gìgKñÀŠ6-ø  Ø˜ÐÃqÞÚR¶äóÕ;øØ®ÉÞcžYÌ¡Ôu¯Ú?Ä 3í6D‚›mß6ç¶¶tfì+Îý©„pšî—¿Ìc¿üéŠf”xœuŽÍNÃ0„ïyŠ•8·¬ãdmKª¸€„xÿ¬S—$ŽSÑ·'=pä8Ÿf>M-Ì@jê"Õi…LN B×*ëlÔFöBùf±…ç
¦UÚ»ÎÙ I·†#ÉžÙ†Øi§½CöHý¨{"½fe¤2ž­wZªh¨ß‘ëMc·zÉ>8Õ¼n«¿ÀéëŽîÎi®<}ž^@tª×¤µ0p@Blv:¥Z¹À[ªï›ƒÓœ/ãý<ì‚Íý3k>¹Ë6ŽPø{ãµÂ“±ä	®K,|çùy²ë®nš˜~ f°eðyŽi8zˆûãù6ñ!¤Õç—_‡;iÙœ!xœ¥1oƒ0…wÿŠÛºj±!ªªNºfèöÜ‚A`Bø÷…¤ºVÝì§»ï½{a ™ñ\f–•H™+N²\‘š2QX¢Í‹t/”f=ä$“,ãVÐžŠÜX)JQ¬Š,Ii™£PÜhƒ’áên€7\àu …ü¸º=}`Kã©?Ùé¥q~ºÄÎjbÝµÏ 2µÏ¥J%‡ˆ+ÎÙª¶.úLé7ŒùsK‘nÜÂLø	Æº;¯ð=ôXÑó#•î¼uXwaìÝ…ŽX¹‡q tpŸˆõBMpåþ†±Ì™m¡¤›áí7ÖÝ|]ÃD°^»í,›Fç«{¦%Þ<v€`ÈâÔ˜·$íúr}C÷¹kEèM´ÞOcÌØÑUžLÔY•Ëáï½±/-Z¶±“GxœSMo›@½ï¯˜[ZÉ Œ1Qµ—Vé¥R)GkXØvÉîb›ßYì´—\É–ð.ó>æ={K²Hdš—û<Oš¼¢Õ	ÉT–»,­Óm&L÷)‰	-iUZ”uNuVc³ËË´¢6ßí‰°i³².’D€$8ûÞXø|³´vÌv÷Gr‡éÐ¾}”žÏ±Òž†Xšñ¶Y±/ó}Uä%(øtTÞÓÇÁŠ¼Ú]Á„>ŽÉAÝBGößvpDypü%ð=jØIÎ^-Ä“b7³çå Uç?8ogéAÝªîJa==,‚AÝŠj4ƒª‘àÔ“´ÝeäÀKuôé30¨Äa &†¯zÃàV¬Ê‡Kdûãä©o ¦€¹	W(™ ù–ˆ)Kf¨› ËóBÈ…©ÙÑªYiå—×Æ	/Ol1â18œŒ£€:YÃfFh9É0Ü('Í‘ì-¡Ÿ-mþÅÁïf`rwÕÝSö¢zÄç‹€ðŒóàÕÄœXÐä<ëÓ2§SºcŒp±7ËžÞ
y°Íˆ!l«4ÞæeœWñŽsueiÑôÆù4bÑÙH¿è·†¶qðÞ¡LUõæˆx¸á.y«‚×ÕãyÝ'ÛiéÄERŽ“àŠp•9^-Ç£9f>8MÄ=¸F[[óLz5·íaí¨¾ñÐ„q)éÜãÌXœç¼~Ñd,7#ª—Û÷ÿAÄO«:¥¹{Ë
ð;ß­k²Ü9þÉ3]ïkå]¬Ì½xdÚ³ýØVXžxœ½n„0„{?Åv©@†cN§StEš”W¤^Ûë`q„—\îí]Ê(ÕÎ7£ýã•,ªÆ´J¶"ë•D4NwØÁk”þYëF+>q¥…ÁuªºN¶·Æ¢mZéúu½ÑNÒQã¼Cy…7Š<Âu+n„ót@mx‰Ó\»œ.Ð¨¾ëå`¤J*)Åî¦ÈLÿl¯ñ–¯DUÊžæq„…8Ó®9àæ23\qÛ—œËµ=à×`!Þéi%X2CÙvq·Ê£0%`Ú‹‡<Á}¿+o<ÆR×µ·ø±¯r•}œþò…øÚ€Í“xœŽKNÄ0D÷9…w³ÊÄÿNBh¶ˆ'pÛíID>#§ƒÄíq¸ ËWªW*.D"×‡¤•ZäŒŠ’÷Æ:•Ê{rFææ
­,¤B åTš²Î¬Í†“ºw	HÙÁh„¿¾¥~ ¤ˆƒŽÚZï=  L!­j\a —b·"ÞhâQÜŽ=Žâùó„+žð:­Ló5nË‹PÈ¾7F´õ¸ljºLÌôO½y§r'%¬U»L{ŠÜ®_µóv¿ˆ-‹‘ù±?uÝ½xÎtqcþ¾…ƒJ÷ÛóÔü ªói’›xœŽ[J1Dÿ³Š» 3$·ˆ¨Ÿ‚
¶¸y\mI$a˜ÝÛ.`~
ª gôR ­÷Ñ(
FOˆÑI,Rû0¹h’†„›BRì{©tPŽLHR*%Hj79—’)ÂcÖ(|Ö}R‰áq|µsjcÀK‡»õRvñR–:Ê~—Úá6ŠÖB9g+ÛÖÃ2F¹únlZéÿ;{žß^:ÃüòøþÁ1g¸±æØz9µþßk«@›#øR©ñußÆÊØ¼|Ö’y#âñ|{û=3hˆ›xœÏNÃ0Æïy
ß8er²¦í&„7. ±'H‡µÉÔ¸LH<<inóÅäßçÏ<š ¬uNuºÁ}g›Š:­±m*¼wXg;SdhT¥µ5Ø(Â€ØV­
®©Û.øƒöëÎXc„]¸O3œ\b†'»Ð÷ymvÝÚ<‘iÜ¹4=€ªšj5Ö{%¡(Ói`¦›qS”nÿpñ<GšV»9EHŸ—b½Ø‡ÌÀ½e˜,»ž2ÜÙ³ƒÜ§ÈëæFI¹ÝÈÙß	%^è«3ýqÄÏ‰~¯ ,'ŠîÆÇµÅëÛÿ]!NÃ{$/S²û:Þò¢øÒ‰HxœŽKNÄ0÷>E_ ‘ãø„‚%K¸@ÛîŽ-g”8Bs{fØ±C,ëé•Tm'%¥J¨Q'Í&boB2âh™Y²óãÒ`Åwª´qZ+?¥ˆy ç9¢•Ñ„ÁÆ¨'ôÖMÏ–·Þ¨´/ç3<~Þ¡wx.µÑÒÇm}‚A;£¬±Æ@'­”â¶®¥5ú§.^|¨ô+V¸àL‡¹ÐÊJ€±¸,WÀ”J¡eú}¾¥3†½Ä£â½Ì•R·1wáúð—(ñòo«”xœuŽÍjÃ0„ï~Š…ž“JZYR!”K
¥Ï¤Õ:õ_e©4o_‡¶Ç^æcf˜’™Áha´e)­`<ï”15Ùèl«,*BC®Y|æ© »è1ÄˆÞ“¤NKG¥Ä6Z&i•BÏ–þåQ´k•ÃØ9[a7%”6(í»M@¡k|-ýœá•SéáTWêáð~7ûp7Ç4ö4Ï õvL;ý$a'ŒÍFÇT
g8§òR¦9ó2ÜŽ×m †jÍç+ÃR‡2T^<He¡Ëó“Ï~Mcï§ÝçãàOt»¬”ÓR.]újš_?6V—oÂSi±xœËJÅ0†÷yŠÙz+MÓÓTwºQÜO'ÓÓ`š”$=—·7—ân®ß?óçÈ][w­f)uÍr@°oº®U-iÓë]£UCª£^,ÙgàÞ ŒQˆ$ileORI©vF3IÝ4
YS­®y
^1b²ó„>à¾DÎúõT<çÊsEa~ Ù)u+eWõNÕ¢Tg›3ÿ föt†DÑ.F{Z!Þ'›`ÁL 1	ÆÕS¶Á£³ù9ˆËxBGë¶è›‡¥7•üÀ÷ßìmø?Ò(¬ÅŸ‚÷!C9àÙž8m#Öab#£Í|ûÈËäwÛØßdauF ;â¹\‰ÖU°Ø\	ñf÷žÍMÇ›á|÷7ÄM'¡)ŸxœuŽËJÄ0†÷}Šntá˜¤IÚÊ ƒ™Ü¹œLÃ´M'MÀÙù4>˜ObFpéîü‡ï¿¤ˆ­C'kÒ aÊ	a-—Ü9¤RIÂ•­5—RªjV§Š·µ3ÖÕJë®vÜÁ8¥Hjëk›kÉZÁþøF3-‘]º:i¤rT1ÒÐÒá4vÌZj+•S"¼ O=<æÅô°>^ÄJ_ÄÆO	‡•	ãPÞ*Ë,·DR•ïèSÂO>=gë)Dœ‡óæP²þÇVm1æ<ñ”qIpE™ Ãç0ÇÐß9ÿ±÷voRŠ)Xï<Ú{˜c©GX²žN\ïÞ·ð–õr^ŽPÂkVÃ/;5â”s°ðýùõU$z’”xœPËNÃ0¼ç+öØŠ*²Ý:vBð-BHHœÐúEBc»ØÎ¡ÓöÀ‘ÃJ;»3³£-ÉZ`Üm·„ÐçU§r'¨sZJ¡á¦SÒR%š&
`gh'±×DÈŽliß!N»é9#ÌZ'µ$’58—!&øˆá+Ûx„—Î7ÐÆá)[ý#Ðà„IN%Ü‘ž¦NýXŠý·¶'‚Þ´Í>šÑÖÜÃ)5n,äY…Ÿ «ÃûÞf•Ï¹XYxqºðá€Þ®¡¶“Ws«X1yœ ƒoÌ1,%Ã|ª`ñÍ§.iZ­a‰]‰-<O9n ‡øZ‹Ö¥«q†úÃk°zóÅá¯qÛü…þÔxœOÁjÃ0»û+Þ4Øqb§£”±Âì¸Ý‹ã÷›%vpœmýû¹û‚±‹@BRÉD`ðØZyk°§Î:7ha'‡^
îÈµJŒØJ¶šL± *¡±­D¥Í•V¶f¡¤:®ï¤²£df/>ex¥P<<í›õpú¸“f¼“ÇÍMËD§{¡øQõpàç¬ªK(…þgoâD°ï¯#A¹­\¯ûÀØsNË\|[I«‡šç¯0ÁÉÿÖºl6)OgÆÞ}Ø Ó’>iƒâ	æ÷oðÕQ×!­‘¢½«_ëš5TÃÔ0ö¦HxHÎÆÛÃ_~°KšxœÁN…0E÷ýŠù !-m¡5Æ·&.ô¦t
ö†¨/Ý—w’{æ\^‰ ×¨¬¶ºSÖ1¡“R9ìzÕK4¡‹JÛh¼¸âJ…AŽÞt½CmöÞ”Ò¦äPÔZ¢ÎÛAû(pç¹®ðD™gxÜ·q†»·3´á¹0]Ú±.÷ Ì`onè¡‘FJq\—ÌLÿ¬‹š¨ÐŠL°`+N´	ñLïÀôÁò…6À)B:†5Ä:îË19×r[…‘\&à™Ä/5žØoj+Äkž
Å¦¦Ô„ÏÛ¿‹/ÎQxá›xœ•MnÃ „÷œâ]À`lpUi]´Ë âçÓˆŽšÛ—,ºé®Ëù¤oFS7D lƒ·JM^ÍRÊ‰š½a†y«­õ”!§äª7L˜¥ŠÎÔ­NÈ½bœ3788!Q)á\“Ñ{]òoú¯Þ1•¶vüÔËùzö¿è´†´÷!U\{›ã0!GF§Q	è¨¤”4C­¸Á;†ºÀË^ìÇ¯GèÍ#œþêUÃØtÑt’n;»†<;.›o­Ìæ”ÐV°Ñ¨¢	ÖP*!á’ÐuÙûÎÜÿÿ@~ (}q›xœ•PÉNÃ0½û+æŠD"'±S·ªPáÀŽ| ò2n‰]ÙNÕü=›€·y£·Íäˆ¢Q‚Ú^s­ö­yÏ¸a]+{n$UÝ¦¡š‘“Œè3ðÖ6[Í8o[f´ÐZSÑqÉTË)¶¢²¥Šm‰œó"<Èî#.èSIÛ¿È	ÓóéÙ~­£óó¥v>ãXë0Ý@Ã6¼¡=TtC))ÛÉåŒÑåîæ¤Ø¿® V+8ü•÷k©"gENüyÂJn·ÆÀ
Þ£Îu¾dHŽ#ØÒÕº28ÿ©0.ép.©&èy*·Ëì‚‡ˆc‚~9]“@{	)Ë¸–-nønû“÷Cœµú=Æ0'HaaW]Õ„<¹£GSk+µìþÿCòlŒ<™xœ•1oÃ „w~Åû¶°1¶‰¢*êÐ¡Û=zÀ#¦1v8­ÿ}ÉÐ¥[—“î¤ïN—#8B%xCÒJÓ
=rrý0t¶×dqÄF+e47šÝ0Ò’AcÛQ›N¥T¯mo6ÎIC«p0EÕh9Ã-Ok„WÜá%ÒNK*kÇO”Î·³ûN³_¶ïÚ/™æÚ¬á	šnïåØBÅÎYIƒÏ™"¼‘Ï<oÉLp¼>L­æôïù(dÁ»‚³å¨2³?ÀÇá¬Of½—º´…€q‡¼BÀ\:íjcïþ²­Vç*½þÿ€ý ˆFq”xœ•MNÃ0„÷>…/èÙñ_«
U±€%¨^œgbHœÊq*r{\$6ìXÎŒ>ÍLÉD\*G½µ %xéÉ“Pš4v-¥ôA@‡È®˜)ŽfÆáÁƒu:q0(lðA-Aç8Ép+ã’ùîü9ÓNi­m§œi½\/á×:O1m_mL…¦Ö/óÊjF;Á° ¬ºs,…2¥XFþ¸­~ä§Ï»hû»8ÿÅ¸NW\Uœ¥ÛLŸâ‘?-~›ë,qI<Ôy?ÙW¿Ü(3ößÍBÓïÇÿgßHˆn8œxœuËNÃ@E÷ù
K,²j™w&¨Bá™ÚI ™„é©ÏtÁ’åµï9²\2ÂÙtR9#ÈDË{múh”¾HÕ9¥‘”öÍ†™RV¥ÐŠN’`!¼ñ’cç|àK¯.,\°hí_Ÿ¢Ó´&¯¼­®N
\”LŠ‘ƒñ¡2Eƒ{×ï4•^ökáôuÇpç)šq]žAšÎôÞieà œM.S)”áu*o{€SZ3móí<TÁþÁšÊÁ¶Ï3dúÞéZàAÖ5çuÏ3Ý(=.x­ê¦I?â<=A1U°Í-”ÚØ×ÓãšÅú¢‡_&hj¡“'xœ½nÜ0„{>ÅvjrEQ† 	ÒÚ½±"—Š<”½½yÆ¹±«¤ÜÁ·³3›#À	ÑKNRufÄ©•“’¢ÕzÑ"‰vdŒä3Þ5RìøÐ7œrlŒúq6zÚð~î°ëîy~áß#äS¹vÿŒ¥§Ë“y—ÎÎúýom}&W«°}…F²—S;q8ñsVÔÍæLÿkVêˆ®½™1ÿ²ÑI9{jE¿T±‚ R˜XïI•¢Ælø› ¯Ö/	2j L¶¤¹Òë¾¡‡=a1Ú½¦˜2z]Ø/,’±þºIŠà½µHå/Â%Ûà!˜Ê«n)*¸–/Ž€é³%ƒ‹„ú(GIÃ|@¥mRá…bU3ö`OúŒ9ÍÇÝ¿?ì£Á·5Ú”Ãe…ŸäÜ»ÀýªÖ³K¹Öô‰~ÀÅÂh·™b!ËWìy¹õVøWr_Ð‘xœŽKjÃ0EçZÅÛ€dýìJh'…» £Ï³%"KÁRRºû:ÐQ'íì8nÛa2LzÇ&Íå¨í¢êV‹°VxË¸âØ£SäjvÌý¢$Usv²Ú.•qt–SÎ9NƒÔN+FÌ­…²ÃkØcmåàSúŒ+œ‚çT[ïñ˜ÐBQ:#tTSJ\Ù¶ØîðŽ±x¹Uàty@opŽ¹aêñ'LòÈÅ‘ã=l±Ö˜WÀì£ÉX+¸’ï¸×Xr…˜ažS¾o³/sÅ6[Ûl"ä#®}W–¥³_Oÿmÿã,ùK›w=í€rxœÁËÂ0 PÑ#St»ñw˜œÄ9!„ªÌ”Epà½ïöÙÎyeîÍˆ|¸–PµT=ˆ«iTJä¡YŒï¯¸ò9÷Þ|Tb wìMÉuE©"ÙLRüÂ¾N¸ùz?ÖoþßÏ Æà_xœÁÁ	Ã0 @è§SdÉª$k˜<dGê£PJ£²hFèÝ5]Ó²o3ôÞ„Ù¼¦¯2ª›¡Gb›Þ?¾Å{Ÿ»…‡¢²U\jÓ”& ‚aÖ ¹J:(zü¾åyÞÊëe5 ií‚PxœÁQ
ƒ0 Pôs°Á#¤iêaDš&§C{Žì˜ûÙöÞ¯ÿöSÛÍŒh³ŽZ$¸‚qÍ’ÌÜ=òÄãåUv[Û€ ‘<ˆe€¨!1‹qª’Š’s•s‚ŽÏ÷r{Û:Ï²·yÙîŸkWÿ Ù'\ïƒLxœËK
Â0 PÚ¥¸ð=BgòÃ”ÌL@Ñ(iñBñžâôíßwüŒËÖU'¯–UòYƒ3‚±¥²´&2–XÂá‘»¶mB7°Í‘"•ˆ^èŸ<YïœVÍ d2á¾ÌƒÛ_×Óe½·Ôž7MgI¼õ÷qšú&®î„LxœÁÑ	Â0 PÚOA\¡#ä’»$7L	—äŠFiKÇŠkúá¾÷¿ã¼-ª9ï±˜ÜÀ Bµ"ƒ–ˆŽ+ZªQÑ^²hß&Á£hF!_r
PÌFÁPnÍ‹=f3àñ¾_në³§¾?4]kêëç<”?þ%¸î…KxœÁQ
ƒ0 Pôs0vÐ6­I#’´)œˆë9²kîcGØ{¿ñ;.ý4›8fÊ8[fPÅ8"Õ ,èœ’WÛ!§í}rÅSñˆ‹@HÊ¦	È‡‚X,xŽµjš¯Åp½·Çq¶½¯[{õµu{~îCþh‹&ª•xœKNÄ0D÷>E_ QÇ8‰ƒFh$– ²î±EâŒl‡ÏíñH¬ØÀ²¤ú¼*‰–AºIŽžp`£Œ‘wŽQé‘¸§¹›l'®&Q, ûñ®Wˆ#jÔZj6lm7ÈÑâBÆ29éXc/ÌQüžàÉ§Ë~õðLëú.pòÎŸ×\Ú… S£'-¡©(Ü¾m¡JðB¡xx<²ópz»‰ÖÞÄ9ÄBk[?qUçû¯TBpø„xl³+iÍ@q	&RÎ"Ä÷æ˜gSŠq~«o„x—HK³37öëþÚßîŠo&is<”xœŽÁjÄ E÷~Åû5uÊÐn
]ö£Ï(ÍÄ ¦eþ¾èª›vyàžËi&*QxéNƒáÊYM½Uœ2oÔ ¥Ñž35Œšl¶àÚ@Z¡1x£µæ\†9ª¼÷väL†Á2åœ“†Ø½Å\à%–T[Þ"¼â²|¥ÎÑÅËR[ïñ	˜Pb¤Ôh
U”—o·ÔxÃÔ"<ïÕE8< ŸpIkÃ¥?†?º`#—‡.;•äê	öŠàr)èàê“]±Vˆ¸lÇwZa+ÇÏÕ§êò'–ûuÉ3!ïi^Ñw9„nºŸþˆÿ½þG0ù“çxEì€txœÁA
Â0PZpãNp-9B&ÓÚæž¢”ÉäZKðBñzÞÁð½_ý­‡²&Jã;j,‹ª”¸çHJ¬ 
Â@ö‹¬˜‹!9¢µîœ<ul¹$.„ j;–Ô{×nƒ­h{]vÓ\pÛ>§c6ÓlòõñîË˜‹”ü>Tú-R-8•xœŽËJÅ0 ÷ùŠó-I›Wå"Ý.ý‚¤9i‚mzINÿÞ^påF—30Taˆ:D>L2Z%ÑËQ¡Q
'cµSÊã<
k¹ìæ*1ho=úQy£#NQ/Fƒ£tè´öZÎÜøA1wPÚ+<§ší·/¸®ŸyKšÓumÔ|!ÔœOf‚ŽÎÙ¼o[&Â
¯˜)ÁÓÑæ—÷;ôþ×\×þr)ô Î\ž9s!À–[Ëe,!»‚­+ew”÷Ò žSk^•‚#ê1ÓQ±1ö–—‚¡Ûcìü×Ã÷¿í³o°4y+“xœMjÃ0„÷:Å»€ƒ¤èÏ%”Ðn
]ö²Þ“%âHÆ’)½}èª›v9Ì|ÌLßˆ`Bz‘Óhœ¨…>[%#:¹¶ÑDçP[ýF¥ÃÙH…K²V„ˆÖM^>j®…4ÃˆÆÅ@žù½§ºÁkÚrëuMðFËò™g¸¤®Kë'¤gÊ*ÃùhÜrÎB½ßsï´Á;åžàeo!Áåö§é!®¹tZNGðWÂH}àêÀ™G„¶¯kÝ:Ä£?$
·\f ‚Ùj|)µûžki°·‡×ŽsûÈs!jŒÃôõôÇößéìeßžqxXŸxœPANÃ0¼ûû Å‰ÓØ¨B…^@T½T}€o«ŽÙÛBƒ8qÓîŒfF£¡ˆ²¬-”¬¹2uÅ%6—Š·¼‘U+ö¢ì‰-›uDO «
E«”2
%*ÅQb%L× V•4¦î“¦¯4†»1ÚDaáû°gØŒý¸u‰
ƒOÀE+Öe©ÚVe[–¬Ód‰0Â;Záåšú6—Ý¶Öº"ì‚¯«&ÛE¶³›Ž6\P´7«¤Ü;!öc§üNû=XŸµ0@	Cî9‡%6¦˜t¼@ºO]p	i²=èÑ aÚ˜c¸YƒËsÑçÃñv¢@÷Ów v†«ïÉŸ
ÆŽöìÑ¬Â0¬ºûã»üVÿcö±—˜xœMK1†ïý9*¸C;_Ý‘E½õ¾ô#Ý;Ó¡Í¸øïíŠ'/
¹¼Iž÷%¡ŒÒŠNh;ªAèn?µØ)9ºqŒÔœ›NôR%z¶ªŒ¶\Ù©w¸Ÿ´ÛsËQòQ93È¶íìpe­íÄÔF>exò9J«‡gŒñÎpðÆc¡ÆâTû~ä|’#ì¸äœ™4Ï3¼` [1ïWÑè«8†…06uñïÅØï+Î¶‚ tÊtsa)„ÊBrp:é-D
Ëé{ÈØ›jÍ)#¬µ¥tD 68‡ß§Ö„5DÌåôFP|Úb5#ùjŒWÈª‚¢f¬˜¡†±×p^Ðî’s;ýyÿÇ~oÿãhö*BšxœÍjÃ0„ïzŠ}Û‘üSBIÓK¡Ç>Ázµ²DÉHJCÞ¾Nh.¥Ð^fùf¦$f·¤›®#CdjæaÛ·#L(56¤ôØ¶
%J±`âP !Ù(5ÖCßkEv8uZ©ÆL­©å¶k{=4ƒž‹	^mr¹ÄÅÂ{q3ì,Ù½Ï¥ÒüìeW×c¯`S÷u-(žN®NðÎ®X8œ3YØo¢šnbïBa_­à·]6]{³ËÕ.ô5àÉz…õDÂÂàãÎÓÙNYˆÐüéˆ0@â%¦Ó|gspà{‰_ãŠ}$Á…×ar†ïß#§À\È…QC4 £3 ÌnÆPA.HÇG–‹¡âÃÍõ&³™®OLö“þÇLâÝ¢(˜xœÍN!…÷<Å} ;)Ó¦1nLtçÂõ —Bd á§µo/M\¹Ñåwr¾“œša+„µ)êÑ
¥äh”VœÎÆì˜UZ
+fr^2Æ
fR-Ü=Kf¤™Ôv;«ÉâN	)4‚:2C–V]Êðì²/5¼`W‚ƒÓîJ>ã’O”î$‡•”ÖÕ×Š^ÑWO­h‡Ï;êG+†¡tÎ¦Qtw´‚/+lN+¼ùØ¾ù@(Õ‡ ÑÀeÉ>µmó)HRË®ñT«P/ [í¥žuì³mU˜Iñ§è­×K¬á6òÞÍ&Y»Q·ý‡·ÿq’|øgŠðžxœKNÄ0D÷>E_ Á‰;A#4‚;8?í±…cb‡·Ç‘fÅV­ê~Õª*+"P&F:vý$X¯'.Í8Ò¹çzbØ%äÔ1.;Ó“«\1f†Mf¶ÜH.4%—ÒÎƒR¶Ó¬…š””‘[qi…·ú\ÒÕÁ+†°ûœœvçKkð	ºAœÒY0h¨ ”è´,¾\á}qð¼eíàôyˆVâìcÁÐVðn:ÞÕ>T;±þÁÇíö¿lØbËûñíØ5:xBÞ1ÊA‚Å¬Ç`2TR§˜‹Œ%CI tH¹f©¢8„ãdäZÑ:ïÞ%­Øòá/M“¬mÔ÷ãµÓÿ¨J~ ¬¹‹zxœ?OÄ0Å÷|
oLWÒ4—¶è„N° !X`NRç]ÚTùÃÁ·'EL,0ÙÖ{?ûÉ9"‚nUJýØiiŒÒÝÈ˜2b”ŒÉž*9v†)Þ“UF\2¶gÔŒb4Wz’ÝNµQ-GÚMbØÓ‰NdÉ6D¸·Ñ¥VèýÅà`µ=ú”›	o¡å=”Ž=ƒí)%:Ì³Ë#<¢ËîJÒçmhÔ6Ý’Ñ7ÕøƒóV0^q^qâæ5ÄÞ-åãzyŸ±±„¼á•÷p‘5PB¶.©ùRŽEç1L0—z¬Ö5¤ä”GpKµ"˜²Y*LÎˆ+HHn9UÙ¢œjTãj¿m›ÐÔt.,uyó7ûüú„VÔÎ8-7±!äÅœvÁ˜ú¼ùãK¿Ýÿøù±ñ®’,xœ’=“Û †{~ÅvnN
’Ð‡=væ’"EÒåŠ”7›œ
¬|çßœ3®R/û¼ì‘WÍ°åxÅy‡¢3#ï¥¨ê–£PõØóVÍÐØµ}W†wíˆŠË*Ew]«µ[j³íÓuÕ1¹ÒÉx"<#ü²a_ÓòètÇ`µòó²’uÇ2í>C%zÑMßÔPðžs–ÔÙa€hé_×¨N°É‡rÌ‡Gë§Þvu-DÂEÂ™;ÏX¨É~2rVÅ|Ñ*ï**4Nò©,9yx—AÍš±‰6wÁ›·y—6”NCô°F”tTÖ\€NÈ®/ñlºÊn:>ÀˆÆ¼¥’z zÅì.áq9ÙÔµLú•JÆÖ(iVor^&Œ»kq)Å]¢‡†'‘‚tqñAÏò*h/yY•UêTáþ¸a¤"Þ¹È6WZÂ?œƒÄžìÑ¡.¼1ÅxÙý÷ÄÙO<[|Md¦¾§N}xAÓ¯Üÿ–3ÆçåÙ|H’`²n}+oCgéÓé÷ç‚(xœ]Œ±jÃ0E±!‹‡îYÊ+2$YR¬@‡.ý‹Ò{O`R[Æ¨ùã%k·~G~"Ð¯©Ó­ÏáÜ{ÝÌ›cž˜AEÅÖÙˆÂ(c±#ßÆ•9 c%bVù«ÑO<d0Ú)´nîµ‘Ê´ÁK4ê=I¥l4])õ|y)›f¾=NÌcíß»3×¹O°¾ùrLÃÀ˜{ªªW"&ØýmYˆí]Á¯‚Üõœ>2Œ<u‰–¯âùáßà»x+NËSùùÌÅKl”xœ•ÁNÄ †ï<ÅÜ¼¸¥”v7Æ¨WoêP¶ÄVLöí¥î&{ÕÌLþÿÿf(!Â t7ÊI‹N«VaöNLBŽV™Ž÷ýžs.ÅØì¤l­¬›œJ×£Ð=—NYÕ8îGeÔ(;Á™.4Ç¯èi†—’ÍŸ[ÑL[ñäáÒ˜¸>B+Ù+®Æv\rÎjwõDø¹B^å,|¯¸s1­šðl-Äùô	3Ô]ôŠÕŸ±·ß†v[ØEyŽe±áŽ`Bh0gÎ÷0•:‹+‚‰R\L¹~Ÿyjàcö¹zSeÕÖfÐ· ú/¹>FØ)%<n“ õV±&{ÃnÖWÔ™†\ÌâÊrÅl{÷Ç€vÛMçÃ_nÅ~ ø¦CžxœuŽÁNÃ0DïùŠ•8§ØIlÇR…ª 	qâÖöº5Mãâ¬¡ý{ZGŽoôf4\ˆ@	%šnôÞ‘	ƒú^:k¢QÂªÉõfÐÍ	ÍDZí°C)ƒˆRŠHÊ*ÔN÷*Pˆj°Ñþùn´]£I`×‰IâØõN“´Z£Â!ø ¬¼Ï^(ñ¶uñ{Xn°r7Ø¤™iZù|| 9˜Aiq½	­ÐB4×ô˜˜©ÀSâçê`=çB§é²Ù]ªû§Ö¼RÙœê4A¡JÃ”bÉGxó™ù²ÅJå>…Ös™Ú…ÑÚ˜ÎMó˜Îðƒ
?©Ä)AšáW‡÷%Ï+Ÿ*¯¾š·s¶ž`xœ­”ßoÛ ÇßýWœ´‡4j GÍ´Nê¤=L“ÒJ{èƒ…14îî²ýõ;éÚýÐÚi<Á™ûÜ¿wx«0Ä09YH)•RyM1Í2\¹Î*X­U•å”';aUçA)Îs^	"0®‘ÆiÅ
&xÅ3V+]Áh¡‹Dô~c,\Iã=¼½²pîâaVÅÃ›¦óªI³}˜æ”±‚2
)â%Áºm¼W/r/pvpOÞ5{p^ÈÏi%œªÁÜ+«[óšš:•Þ¶pçL¦÷»ÞÏå–I²ZaF]­.×ëë%\ÔµUÎ]‰®ñÍ7e—Gn¯µ²é8°ÄxÐ>×ã’š1vòhäJV…fPí_«ÜÃ(ù´~}	FƒHú‰í7V‰®Qa½BOÃÐXnYÆ?e¥ÚycË{·³á¬ádÞ;;o›j¾_ð’Ó´mº~ŸÞv}4
'º™33rŠöÒt€²ø5À¿ðèÀ'O	ÊXÉQ¡²»ßª²©ËA³ùÆlÕÜ0¾HS«a—Ê¶7C3¹Ä„ó›E,Ê‰Æ‡„_€ "c#‡ŽJôØH/£°ƒJl(RžEÊFtu«Ê]Ûß†ÓßXãµX=Ðx¤a$)´­xäÉI12òY…Ä‹±º²:É2t»õå€=ù£œ2jÉƒ–ïƒ–‹ágÂn Æ3r;=:N“äâ÷CÕ8h>Ìv€#'åaâ¬­ò€ñÐLÚŠ­ú1&¡Ë0Öÿ¥ËM÷zr‚Id`ª;%ý‰›.‡¨79Š§0Ñv2Z
~³&×Mà|µ‚jkìWá)5?­áøÔ¸Peu/l#ªv,ést¡¤ÀÚv“$¹jn;U§Á=­¾.ŸóŠ&ß?Gì™šxœuŽMK1†ïû+¼èÁšl’M*EJ/
VÄsÉÇ¤]Ý&5;9ôß›
½ÍûðÌÌK¸ÐÂ(¥µò=“a)˜ˆÆEi„žõ‚i3pÏew²*'|µ$crÐR:˜<ð¡±e°ÜtöÏ7¨‘÷Vöžiuð½â<¢¼G…³J«œël¥C.ðŒ#`Sg€Õ×%,Ü%¬ÇD8-|>> —Z
Ösnà–ŒuG",ð8ÒSu°J¹ài:¯÷í@uÿ¬u/Xö§:MPð»âLpÅù ±ä#¼ûLtÞØŠåîsÎi‡¥ä²kC´ãTvÝßÃ[iÝ€2Ìš6°.º¾1Í„6@ŽíÕ’Æ´‡×íö×Š¶NÔÈ[J|7™'xœQËj1¼ë+ú–²ƒf¥yØã|p0Ã’ÐH­ÙÉH-›ýûhÆ†ørSÕ¥ªjJˆÐŠAŒ]7Þsi.vœ¬…6šïÆ¾Õ­d/*a ÀnzoÙKÎe?H9iÃGÑš¶¯Ø…Qí8â¤˜*4ÇG‰àVLp•×¡™ÖáÆBßè¸\C+)8ç¢ƒï9g]þç:{Ê1\Âcª$ ™¦*PSLôõ¸	•h!!•\8Áá÷ÃÃÆ²ªxªHÃØ!Bos„’1Í?¿ðãñ\=£~^—mû.¯ÊÌ»ÿû‰ßâ¬¼U`õ:šªëhgwè3V-U}}go+î=TÓU´RU8Ã‚KLgPÞG­ÈUÔ*çKÂî^1TÝXN3sA'4nòg(Á»g¬e[z×ü°¸Euô%ªìj¹ÙeËáh«áe+P…#Ÿ:ûTÐÑš]´v7/ÿå`ìÃðÓxœŽKJ1EçYÅ›9ª¢R©ügNWÏK%h'Mòjàî­ Îî¹‡—:"$'ƒ–…ñrQZ…¨LRÂ!ÖhW6l&zÉn®c%HZ'+eäÖ,Fû€Ñ­†/\[‘¤7ù6»
æÊ­ÃÊðrŒáñó³¿Ãs©„_sh×'à›VoBi˜µ,ìl¯…ÿ9gïýÔpscPîíØ3rt v¦ˆ½3öÚêÁÀ¡Ð¯hA©Ü@ Œ9(<–ºCÇX:Â83öQöŠqj)Mþûò—Ÿì-uz‘xœ•O½n†0ÜóÞ:TUUuíØ¡³!Î‡õA‚À¨êÛ7H:¶ãÝù~,;ŒíD7­5qr-yÚØ97:ÛhÆï\Pî”ÐŒ…Ð†¾5±oœqA÷ÆG7i?ÄÐùÖk…§Ìy‡7b™áõ<¦žî¨Ç¼pZê)¯ÏÐtƒq®Ñf€J[­UaW¡ÙmìêýÎ”ÁÂÂ9J}„œQ É°ð!¿. `>`§p¦€åSN1ï+^:|–b%3AÞùÆ	H¸Ò±áT‚Q°.|Kªc5~=þe¸úÏõ{Ö•xœuŽËjÃ0E÷þŠ®“j$Y– ”ÐM¥¡Ç¨6õ#•Æ$ùû*‹.»»g¸÷0\ˆ W!Ð&tÒäAr(TËÎ“‘!yô„Îv_he”tIõ.Û$µñ1¤¬­îQ6[›ƒ:[¯ü_ŸPË¬dÌ¦Ç48Û£OZ×gòC“R¦wŠ:¿ó¸ø ‰GxÝkáôý€cxÀyZ™æcÜ–@=¨Á¢ÂÑµë21S·‰ß÷ §u+t™ïç¯&ØÃ?³î“ÊÁeŸg(ô³SexBÔË¶€_Ó]ˆœ…x^|mò®ËÓR] ¶Où·Òâuâ8R…FùvðÌ¥>ÆÓñS\nyšxœKnÃ0D÷:÷EQ”e	(ŠfÕsP&j»$½}t†ìÞ0ó´·åœ)c¬˜\Ùå–ÐÒàÄ-¸\¹aŠæ{Ûfr©Ò”$Vç—\ÅG?…@Qb”¬—ÈÄ†ïzÛ;\¶ú?Ã´Á'¶VÄÚïëÊËï¹ìë ŸiŽèÉÃ‡EkÍh×Eµ½56²<¡+Ã®'ÙûÀÇ¢åÖ	Š>O¬ÚPêÑ¼ æ¶PŒxœuOËN1»ïWŒÄ¹eòh²‘*Tq	ñ™d²ì‹lêß³=päbÉ–mÙµ0CŸœ3FŽlµIÎº“Š
+=£7È‚8R·úÂsœ%‰¤-öd•Jhòž,aˆ¹?%/¢5~‰§^âÞhO"	!µ"LbiS”¡G$åSç[½.Þ8×+<·-\áüy'Gº“Kž+Ç°LO ´UVôR8 AìvuÊµr—\_Áy^
¯ãí2ìþ‰uï\†µ#þj¼UxBA*Ëk*|ãùqòÛ^Ýu×šçbÞÂòÍå)ó7hë¡.‡ý0üÜÇoÕÏÑ—øÖnê˜xœ­Ž=NÄ0…{Ÿb.ËùÙ8FQQÐRP®ÆãñÆØ‘í¬Èí	@¢ýžÞû^ÍÌ0ycÆ±Ù±Fo´¹ô®WÆ’îŽŠ[ËÎŠ3Ç
ÔºéLL«ˆ:c™/ƒWÊ¬œu½xgÐÜ	Üëœ2¼â/™Žå´=~àÊåº]ý/z^BÜ¿dˆ•Ii}‚vÐ½n{=uÐ(­”8éjåmT$A©ÇÂ@cÜ7ØKˆ7 ™ésÃJ³Ü!ÞOaM	VŒ¤;çfRÍ˜á4q—Ãý§¶2Ä½)¥oáÙ5ÉûÆÿ,¾,•‡À˜xœMnƒ0…÷>ÅìØd~Qe•J]6ˆÆf®ÀPÛ¤åö%=@»›ïIï{šàˆ@5”jâÈ1kÊF.Hg˜ÕŠ„ÎR¬Þ–”Ê’ÍèÈP¢ ÑuSVZ5y)+Ê•ÖU‹c#U^Q‘ê’áúÉÁ+®pu´’õÛÚéGò÷ù®£Ë`ìò•hHÔ4ž!-DžÕuU
ˆ¹àœméhB ÿÊDšE¾Ë˜}Œ«ÁAõh;ûaÃ:„	ü"ŸçæmÌÏ¤»¢tFù‚=Ø	´¡¡…Ã@-D{?:€ÃÐ“c&D¢Ý%ŒÝLg©'­c¹ÿþ{£‡¡ÏMñ¬ß°3ðâÌ(Éupò^º“‘Îì2kž5’ xœMNÃ0…÷>Å¨+H”'Nªªê
$–ô •Æ©KâÛ)äö8… 6#Í›™ïéMpˆÐ"«(o¥ºP52EkÁë¢¬0¯W9´fUS“‰;´¨l™(2AYÖV¶²Ì©à\0‘I¥2l*ÍsÅjÂçp¼òž.h}tÛ]ø€þ4ô]:ôÆÎ_©±ûTŽÃrÊÊ¢Y+$Ë2ÕÁ„€ÿ…±¼ ô#ö:`"{³…y†àð®¼ŸìÊƒ0‚ŸP²V˜}”6v7ÑhƒjÜÃhFáŒ?ÇtL»ÂžÈeözó7âÜ2^ŽWtÄ'FÅÃÃmÁ©Ÿ&–	SBŽ¦³¨’QëD,Û¿ç%ox5øëù‘w^œºv>¶‡î·MÜ“ob­\—xœEŽAKÄ0…ïýs[E­“¦MY"º7Áã4™nBÝD’ôà¿·ÁÓð½Ç÷˜š™a`¨jíDoµÑ¨ÆÉÌ³&43‘De…3£l¾)s¬`å`µâA‘0=)3BöL“0fPF£°%ÕÐZ}Êð™â¹pZàäááçÚäeimº<‚èµRtJÀÄfK/¡VÎðÊ¡zxZ‹ÝÜe‡vÚábå¯½CìFw¨6½!çà¹®9ç| ›CMÛ%¸m÷ýãí^îO{½½XB]©†!Dð©T¸âöÜÞÂDÅ_7¿ÏžZ1‘xœEP[KÃ0~ï¯8ŠX’tm™²7ÙAADF.§6lMJ’vÎ_oŠÂÞÎwønç¤€k½Âªª3\©ZÔ‚6œ-M£L¥5œ£ètŒñJ³Ö–Y¢f¬Q”I¥yÕ´-ç­FB¨”…œRï¼{÷Ñà¹‡»ó?(}¿Ž‡RûáèŠW´"u]Ã„y;Ø”0ÀÚÔÃãuÖPª¬­Kx¼È!¬­à–4Y^tö¬“ãü¬LÑþ øÆ™øø‚<Cgñh2Ràæ÷™a–Éz·I¦)‚’ìÞ¶´dâˆº,ŒmNÙíÏ$yÐÞÍx†Ý4¨Ü=ÇmN>˜W»×íæºüŒ%çå‘çÑ‡ËÅÒ™â7¡˜xœËnÂ0D÷þŠ»c‘ó²“ªªªRZ¡
 êÙñ5±ìÔv(ü}ÉT]Î‘f4'zD%ÏE*Ëªä’U:Å–ë‚¦"EVWL	Æë‚×”‘Ax´r‘1Éëœey!5Ï8Õ¼ÌD[1‰”JY”%Õ²¢DŒ±s>ÐÄ^ÆÐvðø5…DNáÙØˆ}Òºó¤ÏËyYÀ‚2JÉžMŒøÏ:Ùc" \Ðã,\hR²ÅÀkD;±0-¤7m€0ƒóqäxm®h:„YoBœÁtGXEL€ÞHô"¢íÝL0*¼€Â­BÛÞî3VuÐ;{ºxüÇ@–»íÛúý¸ÞÍ~½lŽ¯«ÏÍjA™ d*!ä`NÕÂi½·‡¿ø“_éK’Ÿ›*xœ’1“Û …{~Åv®P@ABòX'EŠ¤Ë)=V6‰:@¾ó¿Šîâ›«RÁî¼ï½e–I1pc¸¨{Q	e4r#{Ó÷UUrVÉ’5Y¥É¬ºR”²4CQÖ¯TÛ´Ø²¶¯”QL~¬¹.Ëšµ¤‹ððŠðÓF„C|ÊÇÑÏèÎÁí§yIÖ‹|û\ÈR4UÛ”@™dŒäîdSÂ ßÑ¦|Y¢¾Àá÷ZýZ­K8Þñº’œ‰Œ×'î:!Õ£ý0¨>X÷ðÙpádýéqÁ#ä7©	×ˆäA{çP'Xs•3„d9Ø¹@­§±[…»åîU
ÑÃ1DÐÊAœQÛáé‚à–©Ç@ü ÖÃKhvPãèµJX²DuFÀg5Í#Æý6ö¿Y(MA¹8ûº`&•oÇéš¿ŠxÕÖtB”lŒ	g+xÁÅŠ<º.aLtõ~`óµ½"l&
Þàî,y°g‡†úa ýmÿßÛ%?ðjñ)“+õMÝàkÀº˜àáWÞA<Í§áµu­[ž‹ûvÉƒàÃŸxœPËnÄ ¼ó¾õ”ˆòZUUÕkÕSÕ0ÄlÐˆ€´Ú¿/ìT½Xöx<c;G"àBª©'êQM3ŠE©q6j´v'9Ë¾_Å2ŽìÀH>ÃˆJÐBFpÉ‡~…îHINC'»nó8ÉE“!†gÞB„w²yƒ·3éžoµhU-^­ÏäZöèä$†y½„†œ³‚î6gúç8û´ûá¬¹ƒ³)CUC¿2ö•’.©ðSuÑGG´˜	ŒuÕ3‡’ùÐ9gÿ½xÜ)¨)±" [	Ž*%hÌÖ_ì¼ñò§§ÔÂÞ(=°ºí.ÔP<™+×•ñôhÄ¶n|õ´6Á˜FÝ/9›ýƒ©“t—xœ½NÄ0„{?Åv×p'çÇIŒB´tPPÛÞÍÅ:ÇŽœ(o¢G”³Úùf4œ‰@iÕj]µ}Ý*U¨©n”5®!ÓuRŽ({«+ìÄb2E†º©µuÛtU²7¦“ˆS©sVõR­fã)ex!Ï<o«›àávˆ‹=Ä“LáâÒüGºê¥4œe	å:{fú§]¼Òœ>>(¯>Esš!ø•…x'p&ž2olØa6¸9§J`¦ky,FÀ€Ü(G
0dÞÅ’“ãB]Á ‚¿/?­AK£ZEz¸ƒ5Á'A®`K#¯àyHE¤èvËD<œŽz§o„‰xäæ-^„xó×HxNãx¶ûý_æ_Y(šÚ’xœuÍNÃ0„ïyŠ•8§xý[ªPÅ$Ä3{½ii\G¨oOŠ7Žóif4šZ˜!&Îªž•ÒÆH§S ¹ÃhˆIØ.OÁôÍ
OzdÉ½B1ÆDÂ)ABX§Crœ¬$Ñ¯ßJÕÅ^
6)jëe‡èd@K”"o¼âè{Æ&¬u˜¼p®<®`ÿq»x‡<Uw4Ÿ u'µCÔZa…h6zÎµr§\Ÿ×ûi.¼Œ×Ãi+Xã?±æ•Ë‰aYÇ
®|©p‡ˆÐ—ùy.¹½¾‡ûeÝ\ÇÂ!¥\Ž¥i~ ¼ý‘7h[øò69_ ñR˜BåyÚzévÃiÌ‘vß¿wtö˜xœO¹NÄ0ìý¯G	ÏG²¶„ÅR@CCÅúxN,å’×Ùü>F >€nf43š)™¬5y'•E%z¬èŒ<¹NE!dÇµ¬Äõl³™–h¨êÚ©yÄh„Ã>8¯%!’@iI…`"gv/ãšá¼æo¯Ï/gxˆé¶¶œ×ZÍåÓ0Û4µ~«“P;©á"«êœJ¡°mÏÁ%“!åÏ|¦cL~„t…@[&oHTøým˜’ó-cïcuü, ;Mëq…å6Sã§eGàö48Rÿ²Þßÿæ¿ ‚;i›xœMŽÍJÅ0F÷}ŠY*b™üL“‚ÈÅ­×®$M'·¡mrIÓ¢oo/¸póÁùàÀ©…F,¥Vˆ&`Oì½&$´½wÞÒ(äÐÜ\áTÁtÆ
RJÉžÂHZ²¤Ž‚qÚ‰t:4n¯S.ð™Óuã<ÃÇ/?Ðæé²Í­Ïë+m¤&cÉÂöˆÍù®±V.ðÎ±Nð¶oþtç;´Ã.1U^þéV	­á»SoBü†˜·ÄòÍç‘!œ!éXù«ðvœ³°ÛøáÂž|95¿º_Qè•xœŽINÄ0E÷>E] ‘]86B!Ä†%'ðPÕ±HÇÈ©,úö¸o€Xþ§?I#v
‘½‹Ù3ºy™³](¥¸ÌÞYŸÜ%9cÔOh´hOŒèâÄlX³Ç¨mŽÝDZêK )÷£Â)kmðIEVx;´Âó÷CŒñ!^Ë.´©Þ^ÀL"úÚj­:½úg\½Sª™€Zë¶z…C‚œp¡-+õÑ)…£ôþF!—X¶"÷Q©¯rÝ)•yˆ÷§¿Œ«_ž{g6‘xœOKNÃ0ÝûsFN7)ªBˆ°ãcgÜ¸uìÊž"z{lÄ±›÷FïÇ™äŒR#ÒÐ£Ö†Ô8ÉRVNN*Ü»^!YÌ&Üï¶¤¥öÒIé4Z5‘B§È8Î
moF)^yI^R„'ÊÙÛ3N)"/»ù›yð‘)t6­÷Ðã¶W“Ò
6r¨•]=3ex%Ï<^‹]àpn 3ü)Ïþ‚grMâírª“1{*‰æÒ(C°p;3•>0X})MTn«I¡ ²à…Àùˆ
ã‘ ×Uµg›§kµ¿AÉœÈr5o¸V½ø@s'Ä»?Fš7É¹¹Ýýg£ø»ö•%xœ…‘MÓ0†ÏøWÌ­”â6I›VÑj	¢BêBR¸VãxÜD8önì°ÛSº+nÜüÎ;Ï|xü@”¬—qg2•B.â$]©…H×Å”r%OQ¤mØ#d<dˆ1’R"¤g«DÉµÊ²Drä)5ÍFˆlÃqC	ÃÑ·v€Ê^ n==È{qí}OZ£±/óÆöw°ðå"ÍVðžÇœ³í;øJoáãèšò_“˜‹IÜwÆ“þ_o–iOÎÌïž¢FwŠ¡kÜvR’„Ö:ož„M°§©¾·ÐXc¨ñ05E#û›;:"Iª3AÌnälf7bö†8{Mw!0ê+
¾%@­í3ÉÓ;@ï‡NŒžÀš«íq8“‡P œï´f¯“„7ïyÚþu›·zÎØèðÎö‚ý£&·eï¦„·5"ù±ÚêoÕñ"„|WUY×A8Èë²ú¹ÿTžöEÐá ‡ï‡ðx‚üGp¢¢ü¼?”ÅéËC}œÆêî~ ²JEâ²ýÿ5Ù¡†ÄWšxœu»N1D{Kù‡‹(¨ö>ü@ŠÒ BTð~\gWñz¯)· ävs5s4“"èÆ*tVõÂkä½’2Ñ9ªë¯{×šNicÉ¢ÆM×ÓtC#yuò¶³V3Žºõœ
æm×s÷çWÌ0©¸PÊK£ŒwB›^¡¬%k\_Y)Ñ%s‚ó §²Ú—MìÍ&ŽcÌövž^€u¢¡=oÚ)§”Ôï4æŒ	^ÇüVâœp	·ã¹Šù'F>1–$ü)¸f¸gT‚Oó_vÎùvÒÓÓ¤×J'$^'|´a|†÷i	8mÃXc[äAgp3®ñ!Wf¸Á«Ã‡×Ù‘ïAÇË
¾.ÍBYœÎx÷¤æ}+š!xœ•ÁnÜ †ï<ÅÜrÉZö.‹ã(ŠªÞ*õ–J9Ã°F2àÂx«}ûâ$UÕ[ƒ¸|ÿú¥0ibGÓyôÈæLãC?ŒÚõØ–õxv'«'´¤V,œF¶Z[{ÔÇíƒi¤9i"ãÉ›~<é³q
7™sÊ"ð7.ðT÷¡³ûð%$á¥£ŸaÐã0õãd4zÓ÷ªÆ ÂŸˆ›éd¦¸J×ÈZÂ#|‹ëÂqÿøªÀ.Æä@fp™kº(¼Ü §FØÍñU©3ÃZøòVÿÍþ¹…ÂîÛÁ+a¤†¬››¡bd%sHød†*-ÅßIÈ©vðý]¡¶ë°,å¾õVslæìX…m	T;º»ÉÛŽWNÔöf¬`™SÄ|Ýó%GØ;è¨Sê%\»Cöþ`oÿÓ¨úºt¶žxœ…ÁnÃ Dï|ÅÞ[;`°±£¨Šz©ªÓ ¼Ø(6¤@Òöï‹¥ôXõø´;3šÉ5˜‘‰ŽQnF¥–5íQm/ùÈ:ÚðŽ\TDŸu#:Ë´[1P!*f´=kµÖ©±­¦‰ºæ9D8©ÉÁKt«Æ8Á!<Nw¬W|&$ã‚Ê^Âå”ÖÕåŒÞÐåž¯ÉÌp8oPëŽÎg\êòx—wœ5=T´+rb•ŽÎ¤=¼«3Bžæ²ÿðP*¨7gÃ

Lð¬[œ2Lî†žW!Žå/PË>á‚1¹”·înéòŸÄ–ê;Ìfço+î~ï%¿ŠMª	9¹ÉãXk+ý½ÿw'ò!âŒ×š:xœ…SÁŽÚ0½û+FÛ .lØ„Vhµí¥B=n¥Wc{Ü&6²XúõZÔS/Iœ¼÷æ½™I
DP7Õš6ËJ®ë†°®È`Ý4Ø¬ÊU²zT«•A©–â€\‚ÊH]©²VlÊj¥åFn–ªD’k‰›¢ÑzSY–‡´÷^±µð%Ø^RhaùøÒ^‹žžaY­—eU¬›>eQåûÞ¦D¾’M{ø<Dµ‡íÏ|XÈ|x±.Q·`à•^—ËÇÌ‹šé‚í«â|ê:m£òGVã ØGH˜H`‚ïùÙ0¶#!.ø´'"ãøcˆ	ÂààÎ™òGê8ØåÓ©4Ç®»ÖÂH`+:Y^s?‡.Á%õùbÞ²Ò­ôBˆï8–ïmÝ­ØPë@1Ryfm
˜¬kaÅnEgóf´žõ z'5Œ@¼õ`zÊe÷ùî‡$®þg`ø%!7:«-à¯G§‹~Öœ|˜À!±ï¤s{ÞˆÈî¿qá@iŽØÜö&ò.ëÜ ¶?Œ¤cŒ¾4º·ÎööAÌ£áIÅl\yM÷°»Œ²@!³-àMðl¦Zu|=Î˜oÃè×[àidç~Ûö-«Ót&N{ËqµU	çK{L·^3® 9¤UØe•Sy®{òC§ùŸˆþYØ^Öìy»Iþ@.ó$ÍZ˜£¿ÚÖ‘ž{cæòüôßDü+Ë@<‘xœ…ËjÃ0E÷úŠÙ—É¶,+„ÚEK»k¾@‘%b[A’ò÷U Ðe—‡9÷r§$D”)'ãÌ"£ÜtJSÇæ˜´œŠÁ:6JŽH.*áZ ­µ¼[c¥e¢7ƒìÔÚÉvÄNJ6†¨­ø˜à¤¦ ),Ó‡\ñ8=±YðX/X×S1rx¡¥ÄÄe	¥`‚oÅÃÛ–‡Ãù~À1¬ç¦ŠÏøÐ±¶…]]C	qJ§`òrIa‚»ƒÙÄkmŒ[¹l¥!äkËr„‚WWk0	•UzÆ?ñ¦í.:·Ó÷ý¿ï¼¼ÕÄÃ~÷)ä/>qžo¡&|?çÒØêþ:ú{œ™xœ…=OÃ0†wÿŠÛ ‘óå4U…
 ±ÑÙ±Ï±U'Žìk#þ=.êÎr§Gz^éÞ£ˆ;.ú^K=p.ZS7Fðv£©ºZ4ªëÚZIÍ;ÁVq!(y?à¨ëÛF1…©”ªQ™¶S½ijŽ“²!ÂINÞ£›GŒRÆãtÇrÆg¨Ú¾jZÞïZxäçL…yvDáYx½$eáp¾A9ÞàèB_fñMUs(¸ÈqfäJ{xñ>làÖ« ©uÄ” à/äÂÂØ·uaÃ‡ˆ 	=Á,Ïd3ëhä*,ÚýÙÖÖ|SÚ)[(™IÂ9¥dìä¦uŒ)ÆŸý¿µÙ^n9q³ßlt‰Âjá½ß\NØ\Ó'*uv[»Š]™xœKNÄ0D÷>EköDm;íBØ²C\ÀŸ¶bM&9Îp}q6%½’^UoÌÀqÔä"Ö¸1jé­å É+mSVžµ·IÜCã¥Cd*…Iô:EdÃè”LL	•ò‘dÁdƒaïÓÚà“kŸàcßÒ/×†xÂ[]:ÏCZo¯ G+µÑR"<¡AG{«½ó?uñÅn.%ÄVÓöïó¼þ@½?„œo±Î{¯ërâ{ªgsZü½ƒ9F3šâEÆQE…š¬—R&+]Ì¹ØäŒÅAüzJcu›xœ•Ž»NÄ0{Åí¨ùÛY!„hé€ðã[Û«ÄYÄß“EˆÊ9G#M_AÐIêI[’af¡ˆÔ)#¹à\;/˜õ9¹ØkÅ„
TEÃ'‡TrÇ©˜ôÌóšBÔÞ(M‰Ý{j+<cî	žöÍ'¸?ß`t7xÌµã2úV€IÍ¸á‚r¨¢”kÉ½ãÿt5ÿèäûêµà	^°´+BÅ%W„¸¶1/XmABÞþl©íK¨w’=”~|Û}¶ødWë¢‘×ü^1-ÆÁ}žþ’H¾  sZ›xœ…ŽÍj„0F÷yŠ»/JÔüL†¡LÛEÝuž Æ$q¤oß³ïæƒçÀ—#"4¨QRÙÃ$·´5±¨…lN²T#¹áb0dÕ—m#”é¸í°c\­¸šÛ–•šre?ñV	Nô–§á¦GŸÑÍ=Æ.©àu|b=ã+4¥\2)á…v”æÙåŒ¾Ñå	Þ·d&¸Ü¨û®nÉèë">sIY§ ¢¬äÄê>:“Îðæ}ØÁ­z"¦e‚ß²!77.8TÁÚªÿ=ÿ{”üàÃá^ŠÃþ˜¢K9¬|¡÷»+ÅTŽù”ë¡¸¥unšxœ;nÃ0D{‚+Yü,ÉUFÚ ‡àgi	–(ƒ¢‚?T‘¤Y`óÞÖBÄ´B°1j§0ÉQ¤h“Ež‡@ˆ* j£Ñ©îå
åÊ„´&qmx$-c’Îõ¤“ç¬Ž{cÀüí‘¬–c“`V„D:ŽJšÑÇ¨$Œ€´w;ê´öIsØÇ±‡‰½?Ïpõg¸Ï¹ÒrÛzc,7VDÖsÃy×Úu®•þ‰w_TÄ|q¹a—ÕíMua[bS­¯ýmMtø–9?}þ^i8O–¹ûÑôexœuÍNÃ0„ïyŠ•¸ÒbÇŽ¤ªª¸€„x{½nÝÆIpœBßžäÀ‘ÛÌ§ÙÑhk!ï­D$C‘E<hÎ5C"o™õ$EÍä
”•Ñ÷ÎÛ ;mZÉH™À]Da…ivyDã:â¹g­–LpCFjR–:%Úà:d–IÝ¸¥^Æ”ê^—/p¸mfï7sJC¥~c>—š‰Nh­aÇcÍJsª•
¼¥ú¾x8c¡©œÎkÁâÿ9k>©œ	¦¥ï¡Ð×Bs…'ÎÄ2f¸N±Ðƒ†—ìæµºi²»®Cšq¼Sy@L?W2Ü3í6´‹Î—„ó3ä4lÑ—¼>ÁÕ4P¿ÉÝ`½waþ±xï‘axœTßoÛ6~ç_qè^-•úaË2â!@»¶º`HŠ½E@‘'‰‹D*$e[ÿýN²“ EÖ	áãÝ÷ÝÝw'‡UUæRâk^'j#·2KT‘$—¥ª“”—Õ:Ç²A84ªšWiV×ËM)ÊD*©D¾*ãëmÅ×|×*ßH&ÆÐZˆ	>8œÐxÊvõèÑß÷õÓÕu§ÍxŠµ	ØÅÒö¿B’oÊ"Ë¶Y	/8gtÛëðÿ‘<['e–_È˜9ôÉNï`ôè"…µ6¨ µ>˜GvÚ¨©t¥½´tŒ}ižppÔ]¢;ŠÉÏÈI,bìÂÓÞ*<¼]@µ¨œ–Ò%úB<ÁãHç
ð€†<vlZVÙÐ.Q7ÿ‰ðE¸£Îö'J Nõt?tØÓHÄ\°§Š:{d?ìÉˆ^›&fì€'1#W”C{ ßœKŽnžî
¼íñØ
š³³TT…­8h‚é&;ÎüjþãÀÍs‚ÁÙƒö³nçT`ÍKèv–Nvç<Kð#™¢K‡QœPÊí“2“Í6Nâl¹ô©Õ>ÏS')­hšûº.“2á1O×EQ~[¶|ï¬1(ün¢Ó
Þ‹ à/áhh¯VÏ¼¡#Ny’G|[×Ä3þ48ô~GÍÔ»qÔj'RUëTF"Kª(/
	Î³(KÄ™§¹(ß0vƒÇÔúDŠ½Èh‚³j”óÝtÁ ‚lI—¯ÎÚp]£²N¤Ù“Ñ\Zò¼}ß~×úýŒZd^Ý/¬‘³ÍˆÑ¼°ìýóN~¶ÜŒ}Eä¶†[”Ö)É
>¢A·lH;šù…L8ÛÏÏkôoÔä|ñìYpap ‡CÎ„rµèÉš‹f”úìL)é€³Áº@2$ìRþ–iû±"9ÌØu^«síç¾çð—ÎÙL?\Ró³ù8¼2eï/	ÏÁ8‘ïÄéù¯Ã`ìN7ôªE¶®£Šà?ý…úžàÖNp×’¶½0påìäÛë»N{:nñ ñH9üN4>:=«+Oæus1ã¿‹~×:íƒZøD”GMˆV¶×±¢ØmL	C”xœÐÏJÄ0ð{žbðÒ‹-IÛüAð èEðº¤Édi“ÒdÕ}{»E@oÃ7ðû˜)+"(¥m+TÛR¯¤wŒ#çÊ7Z3'zË½×”,fÅX@¨®³BÉÞªa0ƒv’KÕö…rÌxÛéNµJbNeL+<™3<®xÆ˜·¶Ûw3c>,ÿÝO!ž¾šNMó°^è¶“”3¨©¤”léJÁÿa’vœi&~0²¬Û®¦Á¸|éT®aÙè¼ %äåí÷ÑkJH¦K†2"T.WàNv„ñcÆÚN˜ÕŽVÀÃhâ¡$lŠyS.ßûeÜ±KGCÈk8Ftuò¾Î7¿|l²”G˜xœuŒÁNÄ E÷ýŠ—¸vZ(M&fÔ…3Æ•®ðh‰¥T
‹ù{;w.ÏÍ¹§d"°ÖXmP"—ª÷Új‰Ò(Åüà„1ÎÒöŽ1lVÌ´ŒzM½d\B¶Nˆn@Ñ3­ÅÐj×z2VÿóùÞëZ§Q+Ûak™dÂÞv¶µØ‘tƒðÖ2¥oÊu³¿¯p0W8…¥Ð|°)Þï”î×ZÁ-SŒ5ûC)”á9”—jà¸¤Lë|9{ šnÍ™òH°Öy†L?•¶7œqð9EØ0†/œˆÜ]Äm7Íƒsä Hk	i’À…mñïŸgøxz¥=4†«½AX`ªq·3¡C3ø”#–_ü«v›™xœ•ŒKJ1 ÷9Å»€CþQ\ÍBqåþuÞËL ÓiÒÄÛÛWp[TÕÌ`²³Î“÷®¨D
Éª"rL%¥â
-Å*±ãàm‚)‹J>™¨‚ÉÙÛÅú m¡mAk3+ð1ï}Àè}Âó±þhŸ_oëzÉ½½€²>J)½Óð$ƒ”â¤­ÎÉÿHÄà}Ÿµo0;P=öáóû¾Þ¯ƒoõ8·ÔîvÚƒ‘pYJ§øDPº•xœuŒËNÃ0E÷ùŠ‘XÓÚŽÛR…*€„ø?ÆÕ$N'¶ Oº`Éò^s*!‚àQ;4<xktÐÌöŠ‰”´P½7Zzï•QÝê—
‡ TPIa‘+ôÌ*Ñ¼3N[.]Œ˜äïÓŽH4ƒNÖEí–û˜RQr£…Ç¨ƒpku,Ÿ˜ë¯m#œ®qðqÎKÅéÊü\FŠ‡Ïl`¬Ûß9×Šï¹~4§¥®Óý|ÙÍÿ£u_H„µMÞnž8¨Ì0’Ûòí8»mwÝ[þÙ!ß”+ÂŒs¡;„BÔÖšËyÛöÂ/ÅÀkŠ’0xœ­’K¯Ó0…÷þ³é¶äå&AÁ±æ"±öcÜŒ°ãàG{Ë¯ÇnÊ†-wy4>ç;ÇIºV§VÉyÕØÌ=o:cÆŽ÷r‡i4½”|âl×¨OŠsÅÍ8u3¶e3ó®ï¸’bãÜBk49->ÀW¤T>ßH‰ =|¶Œ žéWF
>,¢Î>YZóËñ²b:’tGåÝGh‡Ó4´§ŸàÐôMÃÊÔQJø*ºSºì½@@¡ß]%‡Î‡(BÞù(ÆŒ‘±îZÏ îw yH÷)|2pEØDŒeA‹$ Òo„è„µ…<-b­ûLåp¯4¢ªQêÒÓ]ˆ¼JöÍ[¸’µà/Œõ×Ý¢ªÉl†#|_(Þw˜°ÑÃ"¶­°]+`Åª€%î†~EÖ«Ÿ`‚wÿòÖã.Ë´/E®>½®>Ÿ·T¦%gL»"‹˜mzPl"©ÊË×È‘ÜfK¼‹[Ž•c¿P^&&Ôås	_4kË¥{ƒRW¢ôÿ7$xÃ­ä²»÷sdì™Î+êƒ7æ oïÿë?` Õ"ã“xœ•PKRÄ ÝsŠ>€!’X–e¹pãR/Ð„&¡L`
ÈŒs{èò}ûS SÂHÍ ´Hd•R­°S?ZäãØjk‰8;b¢PÀqt½jGÙ:ÓiÑ9-;¡¥Ö1ýDš9Xa8Ã½,1Áù²ÀËž§?¯à`®àÙ‡BëaŠÛÙóÚ"•€†kÎYe7_
ý/>ê[œ½ú/p÷gXã1€ñ3P°cMþT»v¥¥R¿2L1T%ûÂ5ÚËä6ú0WŸÏàRÜØž)5ùˆÁ3$ÊûZ®~ÚÎ)VpÂu'põ	uæ6aÃiñò±w?²Mt®1—‡¿œÊ¾ÚôŽ• xœÍJÅ0…÷yŠó ¶¤7½ýuëR}€üLÚ`›”$EîÛ›*(‚q9‡™ó}LŽDPÍÐö¼ëGÝ7‚4ç'-ìhEgÎZRwBtÚ*b›Œä3Zs¶Z´½’ÆŽŠ›ÖÊÑpÞˆF7'ê!D«ÎÖ0¹ç9D<’Ë3ö¤gÜ¼C­ŽáÎùLK­Ãz‹¦ð¡ëÅ€Šwœ³’®.gúç9{Iã¬¥eŠ±ˆè`o3yíÒøaÃîc÷°Ò-d.)Ó
-—‘ò}BÕàí°(=> Q¾B
X(§oˆ“™˜ü­ÅÆ°~¢œ7ÎO_2£lÔxž]BÚ·-RJ”Ø"ãD˜iÙ°–DN”<¤¿`"OÑéŸ„Ý#ÕŒ=¹É“©‚µ•º\ÿåyì§¬Ážxœ•»nÃ0Ew}·N1$Eò#(Š¢C—ŽÍP	µeÃb€æïkAçv¼¼ç ¯DµR%ö½Ã¾3G½AÛé u4Úú.ØØ;Ä‚+
­·ÖÛØõz eÉÉÁêãFn>vƒ2E#ðÊi^áƒ2'x»VŸàùkÛÃk.Lcãçé”iÛÒ´p­”b›N™™þ¥­ºxÏßKeGpXlÜ2ç¹T!Î‰~ÛCyb˜·¼ë2A]È7pN¹Âr/|Âr¡z¦y%Ïózž~½U¦iÇÁ]óöuµâ3_
…ÃãÁÝNùJü ä~‡ö–xœQNÅ DÿYÅÝ@(\ Æ£‰?~ºJ/–ø^!ô¾Äçê¥;0þÍ™Ì$3ÜˆÀMÑhï%iŒ˜ì,1$R¯‘zå¢Z&QC£Á;ëdŒHèìÙX»«Sj¶Ú®f™UôÞ†$Â·Òà2oðr;â_'ŒË	ÏygºŒ±\Ÿ@ë'/=j¤•Rt÷š™éŸuñ–¿ÁšaÉ=Qó…€Z+íâ5\€ï• ÔÚJm90Aêcy#èØoù‡F!>òçNëPR–ûÃ_Öˆ_kÁxœuËJÄ@E÷ùŠ×Ž•î¤0È ¢‚øR]©ž4“—Î ofãÎå½ÜsnÉ"@Ž©U¢¶Š-!Q´º1
kMÖqlw^+]-”e* ™»FŒïÐ¸.Ö¬¸µòb¹¶¸ÞÉ–þö#¢Ä®sÞÚØDí<c@²LÆ–­Ñ¨+ÚJ?gx—TzxÚVîáx¹…C¸…SšŠžÇG¨ã”i•Up±ÚÛ1•"^SyÛ§9Ë2üœÎ»`ÿ`Õ‡ä³À²dùÚd-pçÄ<0ìß4?lËçHë®®ª—ô-+”Fº\%¯iž èJi 0¤	ž%$š~àAl„‘MxœT]oÓ0}÷¯¸ÚËjª´ÍÒ¦P4mëP¥±Më>@ªû&µ–Ú•í¬”§ýø{üì,x"/¹Ç¹÷ßëã8CIBB`_ðHó!Ñ°—ôGÁù0¦"fÃ¤Ÿ!Æûl†”J²"Ã$Ýe\Ã|?Íy2DžÆf™H“‘ÅH=†µ[j‡¾JÃ)I‡^çu«”+”U—ëÕè%é¨ŸöF£¢8‰cæWWÒ9úov"¿ GëÀi …yE îW ¯XKµ‚4‰ré, áKéˆ»ÚcGµ	ÍVÛNSñJ‚´-uXUpL¹D*×y­\ýŒÅvØf)ù¤âU-Èz­&wÐ‡¿$»ŒÝ±Ò3ÇÝíÓ•v¿v*ƒÌöŸ¥@Ò]ê3œCt+ÐQä¤ï7:^œœ_^ÍN>,æç×—GÓI?¬½=»n1D%Dç~±¸˜M™Y‡ü.Z´‰¬3ZùœÛB›:1ÚLad‰×Fº-øD1)Ue5¼·aPm—=^OoÓ÷³ùÕÜ/œÝ¼›.n¦—óÙùÙdwÇ7¿³÷;ª¢0ü.gÏÐf
ŠZq¦õãá[InŒÂjQéòÇÃ÷ñ%ƒ^<îÆÐlcüh‹Âè¬uSL‚Ò‡º !‹‚‚Xù•àãSÇmzätäƒ(ð|b ÀW¢‹B˜À‹Å¢N“½÷Z
x¹—×Å«ñûùN¨7n´A£¤*-ää_àùcá@=ËØÕ’~³’*Œ(¨ê1±‘{räsÿA^;@öÔ£|´VÜÚÖøXá]#½ôŸ½™Ý.ÀQ{svkeeéµXå=°ë§d¡è@ëmzÒ·õz­MÓÂóßWä—ÄZOû¡ãç6'á¿4×àçåí$ò-ÌÝœ¢*ÑÒ¼¶w«ÔÍÍk~ì'ÿ®šœ xœ•QÍjÄ ¾ûó ÝülŒ1PJé¡§{/7²®nÕÐîÛ×¤…ÀÞ
‚ÎÌ÷§æHD(‰Í8¶RjÎIbwÔGn°S\4mGfœ]1’Ï ±¡©çFC½étÛözPc7HCB÷ã(U+„T—<‡/…àlÆ ÓZUn«žO´®Ráò-Cß‹–s84¼iXé^lÎôy,|9ü	°Wû¦Êüê(ÛàAÛH*‡xcì}&PKÜît3ÖØYëSFçHCåBN³š²ªWÞÇÎ«tUd¯¬çè„ê¶›> z½M<}A\%Àt†Š‡r‹&(>+€Ý…)¸õ’bæò›ñaÇÔû1±ßWÌj^ƒDú\J ½º˜ò$š&‹œõyÝ)ÆSÅ~ 7ð±)‘$xœMNä0…÷>Emf-ç‡´!„Ø!±Ø·»Ò18±e—h4Ç`®ÇI¦$³$Râ¼Ò{Ÿ«Š"Í'35ãx8H©e³×m;eäÁ˜µj»µDÔ	WÔr¸PûöBöªkÐÚ½¬.¥°5Ê6}gq²BšC‚[N¸GG:ÀÕXÕÎoêæ´hçw&,×Ðôƒj‡¦SœË^JÁÕÅá·âaÆ„à2„!¦0z\àÙÑ4c®%·Ò#]XrñxD~Íì#®–çÞU ÃL°_›«%:|hˆÑ½ÿP°™.¦à}xvë	0¥ò¥PŸ)¤E|¼½ÿðÞ~¼ý|‰ÏL:•¥.=L@¯«ÇlnŸÍg0_Îf¿ÌÇ£Ç¡‡ßúIfÊšÝiE[Ã8ýÙÂ6YÔdfx,™€÷‘áç¯»ÂYn~Ûðásè´ñóNü°gÄ@•xœŽÁjÃ0DïúŠ½»’,Ùr	%ÍµÇz^I«Ø4¶Œ¼&¤__§PzímÞƒa†„`{lÐké‰¬m"­»d£DTH­5]',43©ú.X¬v2Fk×VR$gURÎì&$´^àÆC.ðAó•FxÇ‡ëO®óq¢É_ð‹ê§gP¦íœ3Òð ”b·ÓÈL^iäNÛ8|Þ¡öw8Ž3Óå¯ÞËf•4{]¼Ä¿p&~\‰!òVÖmYra!ÞÆóL±Ê)Uþöô¯«âÇ€bnŸxœŽËNÃ0D÷þŠ»G‰ìø*Ô²6´k?®‹&Ž‡
¾ž	±e73Ò™™:#Bg“1Y«%“\z«µï’·Îé@Eð:IË5Sdr3ŽxòÌ*ËÓ<%¼Pº)#’ãFcGMˆI·Ö¾Ìð†ã3œ\ÝõG·Õ•ý€ƒ¿¸/lC€m%\)®9ÜQC)ÙÒ!×Š3<a®=<®Kèa÷~3­¿™}+^þpK¹ì4Tl89Ä¿ðcÜž,†œr€ãËáõÏåË:Me®„óyÄØ””ÿyÿ¯Óäëd:˜xœuŽMKÄ0†ïý‚èÁ5i>šÀ"‹
¢G=JšL¶Á¶©ù@×_o‹xôø¼3ó¼S"xÍG-¬¢Z9Æ(JÚ1ŠSï¤³Â!á´k›Å$œtÚ¡“‚åiÑRg˜ÜKÝ¶Z)J…òîoŸfV…ãšK+˜¥ŽÓRd½ñª³¾U²ŠûÆÔ2ÄÊ ·5Ûöïìúa.8îlœn€rÙ©–k!áŠHBš5B)˜à>”‡ÚÃ~Ž	—ñt8®‚ÚÿsÖ<a:",u!áGÅ\àŒ>Å	²™Â«Ýõdò*oš»—Ñœàùå	a+5³ƒ\L©Â}\_Ï%…ùÛdÀ/ð1M¦ÀÅg
ß¾1EÌp¿XgÓå“‚{l—xœ•Œ;N1DsŸ¢/ òÿ#¡)„¤ÈØíK3öÊîÑ§gÄˆJUOõh B	Šk&y|VJ NôZ”ls2¹N²KØ\È˜­QÜ—¥çÁ“£JF¤Þa|É,î´ô£w‚‡¹^¥Mç-Öõ>õíB[ç¥–^Àwœ³ÛºU"üÇ…=ÕyYã'¼¼>#‚Ø2LŠ´O¨Þ;-·:j;ÃAü€ÒÇé¸ŽJø¶·ÔÇøá¿ÃŽŽóO7Ù7[Þ\Ö’xœuNMKÄ0½÷Wxv7ióUXdDA<{Nf¦Û`›®I*úïÍ^¼yxóÞ«™{)ÚQ/RbBHR.°UVÂº^ÝÕgN‘¢©¹Èkõ$ÂDNâàFÚüù{TÒù^0+÷Ö;?©¡GÆ¦tJ(­°ó{·¯ë{ÁN7p7pŽ©òrÀm} ©ŒuÒ)á^!ºÆ®±VÎðëËà”¶Ì×åç|i{øç­{ã|a¸îË™?w.îÆ¦¼­PüßýÌLÇÕ—–ÝuOiö	™€snS[Ã–kL˜ŠéË/‘à¶Å'*ÐÎ±ñü]9•¸¥r€_ÃOt,œxœ•AnÄ E÷9…/Ð)\iTuÓ]/ab'AJ ¦Ó¹}É¢èÆ–¿üß—~+"ÀeÖz´ÞZË.Â€Áx¯=)­íÌ¤f8¨Hj ¤Ü½¾âŠE3
³W¨A=!Öt"tok.Prnp«ÛC»écÙ)n—)ïï0Zç½Aã<¼(¯ÔÐÕ=¶&ÿ°Ÿi¥4	ƒ”rfÉ‘K‹i¹_1}ÓN0%®ÐÇk×å§Iª1§zøŠµuÕœà±>ÿža‹I`îÑ¤ãzS±=O|[î•]ê¹‡_Õsk’xœuÍJÅ0„÷}Š®oÍ_›S¹ÈÅ…
âC¤ÉILLÑ·7]¸t1‹f>˜œˆ ç
GÆ<¯"KÞ	«xo­åRÜ?Ö'šÝ$Z3a}‡Zt8 )”œœÓ…”ˆ$,:®¤«˜¿>×žÛK"ËŒ ­QxG$S£¶¦(;)\cJž·oòOå°3\?NÓŽ§¹…5Slí¶<W½F®%pa=cMM—3%x	ùµŒp]·D{ü¹MPÆfÍ;¥‰`/1B¢ÏBG†»Á§mÃøx¿˜£R›fe
ë%®_Ë<‡o: o`ÒT–ódýz„ujˆiÍ“xœŽ;nÃ0D{bûÀÿŠ °›Tér c¹»´	‹”ÁPrûHWH1SÞ¦7Ú½F¥’Þ"$‰9ˆH{çtÂQyd3<±Ií`c£µÉGå”ŽQÇrd<[š&¯µ!„8àÚïKƒ¯\–
—>Fø\+ÃÛ7¦ù¼×ÈwÐ.L“5›	/Ê(5ÐRJî]þ¡Ïy½åz˜ëO9Á…Yè.ô€´=)XûÒ~Ûr…»&¤}»æšû8ü™£SÎ•xœŽ=OÃ0†wÿŠS—@ä|9!D—Nl°WWß%95¶ƒëTðïI…å†{?ž7Ef0Ü¶GÄŽŠ
M^¢ÕD]Ý4X¶¦ké>/[²Æ’š0²O Ò]W#-StZ·DmÅUC[5º:¦Ú(œÓ"¼Švì3x™=Áã»ñy=ž ¯LÓ”Emr¸Ñ…ÖÊç$%þGTMãÜ‹¿ýÅ=À^>˜ c?»uø²ÿ,¾ñ°êñ’2¥Þ†0%YH[Ç$èúxçÑñ$Øøp¸VlÀâüÝqíêPÆ9ò­²ú~¡¥ ›Èï³D¦¿Ü‚Ù-²Øž ˜~™Ä±üC”3L1\dõ. Ë i}:ô„)ÄÏL}çÊ¨ xœŽ=OÃ0†÷üŠS'4r¾!K'6Ø£‹}N¬:NpìŠþ{lPU±!–³Î§÷y^ïˆ@Õ²e¥%ö=kë’IQ(ÙªºçØìXSì¥
Æ²Y„l×ð¶løžSÍ«‚dð²ª8§RpYÔ•$%3~œ¼éi¶ð’Ã!‡×`%<®¨Ìs¹<>AQïÚ¶**¶‡;VF˜§I{Oÿˆf‹	ƒ¶[cOÓô'I@7„)ýWmÐÒ½ŽÐSçŸgÙûH0/^Ïvì¶§ÈŒÎ´Q|G”°±swám@`ø^À
µ	Žî31¢¢ÚÏ°qô´#yÍýÉ–˜?mOh´I«×Sn„òX¼óç…n	Ó%Bº+òò“°ŽÖ…„WÁ˜sž}#„¨ß7xœRËnÕ0Ýç+†»DM”´7‹B !!JT‚õØž$†ÄŽb;ôòõŒ¨Rwˆœ9¯±_‰à®«Úþö®îÙÔ]-±U%ŠªkkQ’¤îr¾»´e}Î\Éx¸ªTq>Wõ¥"Ñö¢Um'©WB”}×©¦»­)ÃàG»ÂÒ~„ÁÉÞþŠ—BÄË{m<M…´ó;¨ÎKTmSB^6e™ñ×Y{Oÿ9ž}£‰Ð˜m¦\N¶²è²ìÞz¶‡°(ôä@ð£v°îðWY¯á£UÄ_r»hôRà-¸°,võ`è7Ð“'ã´5®€£žˆIˆÅ¸8M¤2 8-S´q§›øû
2¬±¿é
#n9zòlƒobf’Á£˜¨€Ç]1Rõ\£ºœu¤¿ÂdQEÀ‚QÜ–dSšèÙ^‘âÜëaôß¿F*Åq»rÎì;ösì62ŠÝBR÷ZB\ÅSFók>pTEÒ*m—‚íÙ™SUiI/$ŽX)»âš7ZóO(V-]B<ðœ~		4£‡ÓOgÍ) 	G>nñÙ—”ìÄÅ±9³ÛxöêŽ*Žõo¸j(+ÃÌ;Im¥t³66¶ÈD½~JsD³cªXø8^œf`+Ç³‰ =°fnû>×7ÿòh³¿6ã+=›xœuŽ»NÄ0Eû|Åh©w±;N¤Zh@BÔÔcûzcm^8O" ¤<÷5“@`ƒ`lÕ@Øº”²uÎH´²iƒSµª6b©‹™ÆLMS{§[íB@(%j!›Mc°¡ò–!ñ—÷ÆÃŠÚšàá*©+ßê2Ho­ÑÒ–¢4A*Í¯¹›½"æŽžÖÅut¾íp²;\â˜ÑŸÜ4<TµJëª¢ã~¾ØÔ!æŒDÏ1¿¬–Îã”0÷_—ë6°ÚjÅÒ4¯}O	+–Lw­¢¦â;w€¿xÙ¶‹âÑ{x:—MsŽÓHy¢Üäc ç5ö_xô»µð'~ü.†¸•SßJÝw¿žxœ•MNÄ0…÷=…5+ShÒ	!k6ÜÀIœN¤&®Ò´p|	fÉÒöç÷üœ"öd{UT©N
1jÝ‰a´ºéšú¨P´Å‚‘B!%õƒí(-ÉJ¶c#)#ªaT¶lÝ²VC[ºp„Èœàq?d§Ÿ'n¾×ìŸ@4]_5Í(j(«¾ªŠ£ë]Jô•âõ‚a"+î;F‡j&°‘=(æƒ©x1æ€Ne™¹‡r=/ÉqÈsœ00¬7¤Ä<-ÞØ8ë²<¥Ò¦-Ò-wïäy?vœœ"+Í.ÐÕe=C¼R‘,_Ô´fëéWöüm¯9FÒé éý2ÿ`ÛJ7¸°&Blÿ*_^–™xœ•ŒAnÃ E÷œb”½«qKUÕe€OƒOšë×Q{nßïkã¢»°E>‡"ÁçK*\” 1Ms±ÂYÌ&«R8Œäf—Ì`kÙ3O2L ®”KŽ‚FzkzkJïûýyöéók‘zKmù ÑzØy;ÓÀ³9èRUñÄ\sF¦Ó°Ÿ¨mZÛJÚHo :ˆ>:èu,k~M»|ãwßj©Güg™@ŽT7‘xœuŽ½NÄ0„û<ÅJÔÜÙñOlé„N4 !jêu¼I,’spÖ¼=¾‚’bŠÍ|.D@‘Tï
4èˆ†)Îk¤j¹1X/Qv;º1$‡ÔG¥É
zpv¨¤W¨ŒV+5õC0}28DáE½íƒƒRZÚ£i
V^r7J¼Às=Æ.Ÿws
wsM7¦õ4æí	¤¶ÖöNÂ
ÑµtKÌTà%ñkp¹åBûús †fÝ;•™`¯ë
…¾*^ÁTòné¢xÞðhìVOSú¦8Ã^îŸ"äÊ{eÈÄç™&B®…~¦¨o
›xœ•ŽKjÄ0÷>E_ A²¾CÈg•S˜–ÕÎlËH­™ëGCÈ²-ªP$5zƒz"·Fç'­‚TËƒ$ÊáÄBƒAòHcTš¦@A;oWJN
•1Âj¥ÖÑ3`ãk.Prf¸Ôí>Úåí{Ç´=/y©­µ£óÚÂ“pBî‰™þ‘_Tây%äVèà,©¼áÖÒQ™0B^¡rêC?n;ýùs½æû¼&Úbííg.…þÝ Þ5>?ò÷ä”øh¥òðjçep“xœuKK1„ïó+<ïšÉL²iXdDA<{N:=œdÖ<ûïÍ"xóXU_]%1ƒa¡ÆÞHÉ¢‘dÔIJ:¡áQøÄèãÔ]mâX`²ŠÜ0
m&Ò~rd5yƒ^ôÆ#ðÔ+öWýè¤"D%,±vÂ¡Ãih8Jê[ã´7­eÙ¼óZx®™8ÝÅÑÝÅe…·#íá	úQk5¢ÖBÑ57¬¥p‚×µ¼Uç¸'¾n·ËÜ
ªûç¬ûà43\ë¶AâïÊ¹ÀJ˜Ò Û°~Ú…Ù?›[w×½ÄÅFbno?&Î\ÀF¹º|kH8üzeoa©)¶8¥6+pÎvæ-'uš”xœ•KnÃ0D÷>‘}
ù/EÑ.z‰¢b#¶P4ŒöôU›t;ƒy3"°dÆ¡µ]tÞ¡w¶C;Î]‡³³4˜Ø£‚!—š‡Ê
ÉúÁL6áS@Û)ZMkƒµÆÍíˆÆ§Æº°€0+¼–íì&|¿í~Ý^÷7h‡iÛYW3ÓTu_Ué‘æ3/>#E¬Rð9B9Bù*Jûõ©)WSÉÕ©»v*Åß8o±¶ÞI2mÎµ¢2ÃÊ¨[%=,Ú|ÄXk.ß$L‚//¿X]ÂÆxä£Þ½þäu­äT‹NY•®GFù÷ž¤æÀ³€“xœÍNÃ0„ï~Š½õB*ÿ×A!nˆàÖö¦ŽšÚQâõíqß qÛ™Ñ~š©%„s\ôÎÊ „‘H¸H2Ñh²'Ä-›q¡\AmxÖK-él8è({n¸J p¨¤šáVSYàÆšàu[C‚§Ë]ý]¼Œ¹ÒtåúB[«­rRAÇ-ç¬¹×±Vúç;ûž#V‚DÓ%ÃÛÜ‰˜#´x¥F^ûJ~*áÒÒ­MK¸N;ÞVðDø¡¸R| ¿U¸•í!ÓO«uÉe‡š°²½U*-]ã˜ÏÍ¤†‹tdìs<gŠ]†Îßÿ2…ýç[€£xœŽ;nÃ0{žb;W2HíŠ2#Ò¦Ì	øÙ[¢CQ|{Ë7RÎóZe—œ?‰NØ#‘`êŽ6`PŒJmDêEÝ}å¥y=Ð.91Í('3¢‰Ñâ`†ˆ‰)=¢ò[›J…OÎm‚m\®/8†¼ç¥ñíËü†¬%$§tÚj­öuÎ­ñ?u•J<Ã¼ßÍeÃ-¯í •¶\y…-ñ¯R_ù{áÔ‘.<Îé¨'?ô^œ xœPËnÃ0»û+ôká4%Å0»î2`_`Çr#Ôµ2[nÑ¿ŸÛb÷aG’IP"Ì=ï|o'ß9ìÛG¯}gûª˜±ë3s7ªÕ$Œè†~ìô„ÓnrÞiŸŸ§QÛÁt­ß9oú¶ñfš”)²p‚$Yà½äy—ãlí¼QÛ™O¯ÐtÃÐèfZØèAkUÙ‰à?ß•76Ñœ÷Põ•ÂeÁlqx†È³˜Ð)õKS^…8š ÂP2‚,•L¸r&átÝÂ§™æ€f«ð](!PµóÊa®À=-,¦Ž/1°qÕïV.ÁA
,‚±µà#P8×g?ö%Î:$×Ga°&>SMƒK]ƒkÉV©/:Dtö~c¯û¿ì¦~ ¬¸’xœÍNÄ …÷<Å}6”¡@'Æ¨1n\úü\¦ÄšB“úöRcÌ¸3.Ï=ç|¹§®ˆ œPrBæ½áƒašãIŒ†{rŒKêGo™µ#‹^1U(§T¨<cLQ.¸pZQ=q6*§IP#G¢·:ç^1Ôž¶bg¸{?DoñRÅkos¼‡‹q”Ó tTPJÚ5†ZñŸuòvpÙn±}¬kÈ‰ç[	>ìXÎ„ <:‡êŒðE„² >Xˆ:Á¢/XZ¨ñ¾C¸£½.?&$ñW`ÆfWÜkãAÉ!ûü±L'WzBÞÂ%¡ë²÷ù8ÿe)ù©‹$—xœŽÁNÄ E÷|Åû6”Âc0Æ8îŒKý
)± “ø÷¶®\—çæž›Û
Žµ5‰Í•rÜ#î”>!é”$µa«-”OB„!8TJW‚[tÖx&5¢3(¹T¤f·6çoÛ/[u3<~ÐO<ÇÔhé]¾>Á 1T§:Žœ³=½ÆÖèŸ:;{?¸Sòû‹-ÅÛF°äÔm]siŒ}Ì±‚õ¾B¡V"Ýíaï¾þëJ.†èµöŒ½ÇK"ßåºéëá/÷Ø7üqðxœQNÃ0Dÿ}Š½@ªulÇ6Bˆ"ú…øØÞMcÑÄUºAâö¤7@h¾ÞH3£‘•tˆ8„]ÖdësÒÎ¤àMr®7˜|H½Cr)ªkZy°Öq–HÇÑ³!î±˜‘Xô²ñ˜]ÔšUÚdj+¼q•	^¶[™àñë‡|‡çº_¥ÍO íàlÄ¾Ðá€¨vw®"üÏ¸:Á­ÍÄß|i×½ˆZÙæý@’Ú21|œŽ¯ï'¥>ëyaêÚ8vùçá/£ê­ab¨œxœAn„0E÷9E.ÀÈÐØ˜ªªF³í²ê’`V! ‹Þ¾37¨º|_zÿÕ]ÄsËˆL¡f$…ÔiÅcbR·Å]Jõ!ô$™CS÷’j q !AD’:túÖÅ³Nëî?Äêäoç‘'ÿöý„KzÂÕJ•ù’×åÝ·0pÏ„¾pu±ZåŸºû:Ä¶lóãa›Ï»?ŠZ±jkqîÓîEÆfUmÒÏë_î^ð“xœ•ŽÁJÄ0„ïyŠÿº$m6ÉŠˆxOúIþI6›.m*øö¶Á£^¾o˜¶ ¤£¶ÑöacïRàÞ¨Ë bâÅGˆ»_PPÖE¥´Eìf•Œî9*#1$ÑÉ)#üÖ¦y¡Wä6ÑË¶Æ‰¯œÂÏ¹6”SœoO¤´9kw¶FR'”boo¹5üG·ÆýèâÍ_AaË…sé^¶±Ëu%ø5câcÊ+yæ=¨à…ÚLmÅ™A#*ßò\zò•ˆ‘r=ÆvÆ¼îï~Ÿ„xÏcwsJ]øzøËuñÊ}Ú˜xœ•Ž]j…0…ß³ŠÙÀ•ü™Är)méË¥-t“dÔP¯ŠŽ`w_…. }üßá^ˆ@Ù&Ù¢Ò×É…èÑ*tˆ)“QÊk“’³A‹H£1²iŒv””ó9'ï0ê@RÙÚäì½Ç£Àûi7*ÜÃË¶¦®_'Tñ„§22UšîÇW[tãá"”âHï…™þU÷VÿÖÅsÎp;¸½ÃÊÈeå’V¦fìHˆWjËHp…ù˜™·8”fßwÈÈkOÄ•Ÿ¥;¼ËÔ¶—øýð—?âoŠl^—xœ•Ž]JÅ0…ß³ŠÙ@KÓÛ$ˆÜ+¾ˆ/‚+˜d&6xûC3…º{[p
çå;?pdev)yôÚÆ6ô­6¤}o°÷¡³ÉvÆ9î­ZpåI  ;omˆ=u!8c´1œ‚%ƒ”|2L)¢Q¸É0¯ðÆYxÞJàñë„:œpÍ“ð½Žóøº³¦ÓúTmu¸cáÌÛÞ]üï\Ýˆàõ,€ð¸ðŠ²­EPr‘‹R/œòÄXàÈaÙÂ=Gx¿ìû„‚e`–Z©üyÔª9¥*|?üåŽúcnè˜xœ•ŽKjÄ0†÷>….0ÁvüšRJÛ]é¦ÐH±’˜É‹ÄÌíë	=@«Õÿú@yeïC­\Ô†¼ò&Ä«4
-¢!Š–Š¨ÖÄ‚+O¤a’N9šµ*×jOWedc=;_@«É8+pÏý¼Â'§ÜÃû¾5=<ß¦¢‡yMSæ¡jæñTÙ%ƒ²p‘NJQÒ1åÌÿÀup^þââ-F80âzãœ¦†¹ƒ;>[Ž€DnÓT$ÝaÙiH|œPÄŒ[Ïœažà«>Ž6^o•ß©+ÈenÛÝŸþòŸø´"q¨•xœ•ÍjÃ0„ïzŠ…^ë ÿÛ¡”Rh/í­O°’×–ˆ,k'o_9(=µÇôÍìˆ"ÐM§ë<Í¨ÊkLk­T¦IKTØ–e¯sÊ±É3¬ÅŒy†¶ÑT*YÉ¶HÙ•²Ë¤Bi)Û:’²oe¥*+›i²làuÚÀÓiµ‹ë™ÜAOã3¤EU²­ò’˜,EtGËLÿÀ³¦Èî¸x»^™`vë`=l†<x	l€ˆ(ë©ƒmOÞ›ÐwB|Âbg˜IÛþz£“ˆ‡UÝßˆšAØÓ/Öx;é‚ãìèQ°‰%3r<x³ÎÁ3Ý~rnÚ" ¼M0þHŠŽB <€?ï‡îóÀv‰æÅý²“»-¾ì—$Sß'êzüËg‰o˜£û“xœÍNÃ0„ï~Š}DþMmT!àŠ8qàìØ›ÆjjGñ¦Ð·'A‰[3;ßŽ†DpÆIÃcßùÞrÑ/º`;'ÅÝAáàÓB±Ù/˜	ÁKJÆ…;©½‘wÑŠ`¹ôÊJËüJcYàð²Ö0Âñ¼‹¶ßÅSÊ„SÊå„îŒ’Úpï8g›{IDx?®¥ÕRÿâìÍŸ¦|½@]ûfÿæs¬à3àa®©dÆ>>ý¶ˆ
œg aCp3f˜ðŠü‘•–hºíá:chá9ßhLùÄÊJ5EüÁ÷„­æT å}-cïé”16ešþöpÏ4öõˆ\™xœŽKnÃ0D÷:/à€¢>vŠ¢h²í²'H*šÈ£èíë=@–óy˜é«*X"Eo]-vŸ5DŽÙG=ŽÁM‰­ËXÌ5­Ú:Œ>yÚ"Ò dGdÍêcœÂ”]JIJ*jÒ½ÏË
ZûÇûgxýzˆ]~ˆ÷Úºžw¼\ÞÀú9B‚#¢ÙÜKí]ŸÇ=M.îÿqs¿|k“íÅíª\Ke¨2p_Ï Ê‹Ôv2æ³žšÊ°”2äŸ—gÍ/|ÞbÔœxœMNÃ0F÷>Å\ •&vŒ*lYr‚ñxL¬¦IäºHÜžTâ ]¾OzßëM{Ë“ƒÓG/“Ž(ìâX¢·šrAïIÔNMÖ)	ÒÉQ)<42ù9¶¡ˆ	£(º÷ykð)µÏðq¿ñçËNéouí²œx»¾‚A?:k"Úk­ŽõZ{—çu´“óñ_Wï9Ã¬ùèßváZ*Ó²$âôj¸·övÜ(õU¿WÉÃVÊ~_žiª?•¥cÚ“xœŽAnÃ D÷œâ_ÀÑcUTµÝv™àÏP£$8²IÕÞ>NÕd9£yzÓ€trn`á]òVÃz°ø z6Â;­®qAm”$cˆÚxŒèCDÈÅ@zŸ’Ûïu0)è¨â­MóBŸ(m¢Û*N°á­Ô†óNæË+i»©Œa¨cÇ¬¶öRZÃó¸5¾wîWï5Ñß€¾QÓöb½BJ.Bøi¨k™ëªÔ±|U¤nÎ¹_žQ©;ACaxœËj…0„÷yŠ×•s1ZJ)Ý–B¡OËDÃÑD4úö=Bà,çƒo˜©;@JDe¥èõ`¼#ÏG-œ2ÆZKå¹vl³;r%+CÆ)ÁMb†‹NXn¡•‰AÁùØÁŠÙ³Îe§¤:Óûyø™^nWhÝÞR®XZ_ÖWêT¯¥;Á©á=çìN×T+×UÇ¥ÿ:û´7ÐŒe#›ý`?RÉ4!cOž®ö;?ûZÎ)åƒBÉO•2¨Jë¶`½ÎÖZÆ¾Ó”šcã~ŸÅþ «o¿žxœ‘ÁnÃ Dï|Åþ@,°íTUUõZ¥—F½c³,X7ÍßRõžÃ2óFEDC­ŽbPCÓ#[>È¾¢—üˆÒŒ½‘zu>±MEôFLõÀ%7bœ7
‡ÑlêÑt}[óNûnT­dj'"¼£#o{š,<_Š¨Æ"^'\ª)¬/ ÚN6-—½€ï8gùvuDø¸½¼©ÿíì¾¶æ¨VÀœvrÁØ–}v¬òzÁÈØÙ"ZÖ°¸D Ñ8ïîÏ]‚5éâS`Qé\È¸¬"˜ÑcT„)Kd‰â>Ñ³,YNn[–W‹¾0¶ìÔœmÉU—<q¨Ò­äß±È<^s_BŸrôÇÉ{òShðñuBH”I*êŠ±O7{Ô‡`Ìa¼==²5ö’ª_•xœPKjÃ0ÝësYVä¨”R
]uÙ^@#b‘D2ÖÒÛW.Ò]`ó†÷áoD€Áh¥2£DcÃH£”Æj3ë0 ºÉ“UÁj«Û(1”žH*uò8k«=Îz<zKÔ6ÉX2ˆ“®ò’7ø È¼Õâx>ï Ç¼ÆÄté}¾¾À ÍaTÇIkè¤‘R´ë52Óãr-žì].Þoä+”ŠÝîåÒ\ W†`½ÔSLPx«žëFB|-± %ïJ½8¦ò_Ö‚2¸?~¿ü6¼´÷Q3K1Dc•º®yc S*1§ÍâžXz!>ã)ÑÜå:ü~z¤œøÐ‚‹p“ xœMRÃ0…÷9…@3vâü1lYÂd[i‰±JoOZ†e—’¾÷ž$ŽDPk]
hti›¢´Â"[5eY²½-ŠÖJi²#yêºªÐÂ¶E§e‹J	¬t£l‹[v½­Å²Ïpá!Dx%Ç¼,Éðð¹¹ÞŠ'ç™ÆÜ„é¤ª«BÕR5pµÙÚ3Ý.W¢VB^äÙ³µð‘‚‡°ð¼0ô!NÈ{?§˜à9†ÂÌnÅÖù•ßð´ÌsˆœÃû@;~ÁLÛp¢uµô§ºí<Æ3 ·à·¨ñü+Ly–mVa´ëI×ì~ÄãîñtuHìÆèÛ%N»Aš`IdC¾(Fg	x³ûÜñæŽžì!ôýAŸïoy]ö=ä¬­‘xœANÄ0E÷9…w¬¦JÚd¦E!vˆ%\ÀMÜI4™¤J·§…9À,¿¥÷l.D€NiœÜ„F¡“ò¤õ¬¢A¡rË`•é{3;{+Jý€§Qk7Œº—=j5É£•VÙe‘ÆLö4’Áaš6ö¹À;öðÚªõðtÙC7ïá%$¦ØÙ|}¥z’fP
ò(¥Ø¦×ÀLwãFïËÇ.>h¥‚Lp¡’(BÃ5ÀRòZÝ¤•K³Ü
U!>}¨°¶+„ì	âV¾¡è{Í…ÉýY:xK66Òƒ§B¢æCÞ³Å3í[|yúÞŽð„ŽJ…­GØÙÉîê\DÊ›!UÆÉuÛáœÈò²æŸÇ{Š¿8™³Ÿxœ•MN!…÷œ¢àt` ÿ&Æ¨[—êhºhP:@gœÛ“‰q©Ë÷ñê½*rDÁ:öü8âH…’Ó‘ª‰]d«¹šÙñHÕÈÉ&#úªG.”LŽƒàJÏŠöý0q%:†¢£¢§lê{IäžMˆð‚6xÞ“2pÿYE3Uñh}F×¨°> ]+(kÚQJ
]mÎøŸqAÛá6NÞÂ&k€‡¸;]6)ÞÍ:ëÓªœyr²Á m&0r¾Â$×Ÿ”»BÂ¾H¡À ¯†,ã‚%æŒaµ)Õìú BŒ5oÆýŒ^]ÀÙ”x36•–¯ÒR|+ÈÒ®Jò{Ý†W»xœAëÃt9ýåÈ7à€—¤–xœPAnÃ ¼óŠý@,œ*ªªVm•ÒCõX^bT\Œù÷ÅQãÌÎìÎlNˆÐIAeÛJf8§Ô1n;ÕvjoœÛ×b/:+2ÆÈ¤†ÖQÊ*¥„åks¦‘‚ÙZPæm´q%#zÉ}LðŽ>÷ð¼Ì¶‡ÃÏ*³'2•ã#ÔB6¼–ª¡°£’RRØÑçŒ÷Ûå‚‹;9ÏE y\Iñòvü>}œ^	9žÎ0Äp8e$ü]|ÂÜ /`t¸Y§¸]H|!\1a!réïõ0¬%_JKñokr_b–çè‹~†k–y›•´;³f¼%©ùô—€Ý.:Wè‡{Ú‘?ï…ˆ˜xœÐ±jÄ0àÝO¡­Ks$w‰sWJ)]K§íøW".±ƒãäíë”ƒ®Zô¡¥PiKÖ•9·5WÍåh6%7ú¶l;Ë®½T®e5›Ÿ¨r¨Ùj[j×ðùhØ¸¶Es¼XèŽtÓ°2·4„HŸ4ÐÇméz½îÍÁîÍ»ø„ñÐ…éªZ7§Ó¹®4¥.K•ÓIRÂãëuYµU{_W_aeð"¾§rÍä$¢K!nJýà)Ï¬ˆ=-Ò{aéŒOãFÃDi ™ØwÁ³ô4ÇÐG³§&‘_'Ý(Jü€(	î™–@>Ð2ŠÄSŠÛýð˜I-È“p ?ZNvÕ •eÅˆã¿oMæ
²7ÅÛˆ…`A<(õ±pE`.ìöòÈÔ/IO¤w—xœ½nÃ0„w=_ ~,ÿIíÔtêÐY–ÈXh$²Ào_%Ú©C9Ýñpæ„Úu×wJ¡è[¥ˆ¸Žl+4JT$¹ Z°É$Œ,—Ôh-ºÚX+¤5-ö]ã:íH9[­¦Fö=3KÆï>žáä#ìCQÛËq6a^Š²cxQÕZ)-9‡o8ge|Î˜à}ày™í û¯›Ùö7sô1ãåw½•R—z]êlJ%J£»¬M@ rFNyLt`\"û,ÈqÉ?Ãd²vìp›?ÛñŠi…Óx†×˜‹â÷äÀœ€`Î]ÞYÿùéZý°’†±Žè6#Ñ¦_wÿ};7u˜ xœMNÃ0…÷>ÅìQ¢Äù-ªPD€€åŽ=N,;²V½=6íŠìæÍ|ïÍh‚C„±mJ±íkY’×”Ó¶Æ†RÙÕ´—kw{NVæÐè¸,9—]_¤29¶(**«]YT%“¢ªú^T„ma¶³S>Øu†gÔú¬&ØÏ|´¹À(ë¶©JÚµÜ´(·Ë¢B@¯¨Â›ç3ì¿’ÈÇ$eê<‚7{¼·o!+Úh'jY5.éÒ0#pkò1­!%3#9\›‚…ëÀgµFçaµ)]¤Ñxù‰Ês{Bwî¤8æäÅp½	ô £Ëž•™À¡Dç˜ö9!G5™•2/÷|€|àIá9ò‰=²IÁ“SËˆ.r>ÊaºÉ|ùM¿§ÍoÊÀ~‰U®Ï¿Å*ý†|¢ÿ¿}3­’#xœ…’ËNÃ0E÷þŠÙC#'MÜUUA<Ä«”;ãÔP;%v¡ù{QDHì|gîñÌµ:"ÐEN¢Öe¦ŠjZêU%æ"«ÊLÎTÊR"g;ìÈÐR—‚WrÆÓZ
^¢¤™šJ-RJ‹LU¯ò"¶îÃ¦íàÑ¸Œƒ¹§d»ôÞ$­ßG¥Z»€4Å4ÍfBÀ	Ï8g±jMÔÁ=™°‹½W˜¿"‘ƒXh;Â3‘—9L¸ˆ8»µ»-ÙaÙÚxÕ:G*Àp)ºš±«}Ø{lèŒ±Ë_ìaõ´:eîÃÒ˜8pï.	äƒywŒÅXÑZÓ‡Q-ýÔ0”â6kÓ8ª'­ÖÙŸýÿì%Ž‰À`>ïb¸ÀmÛc$p‡D~ëÑ#Œ™56n:c%uÌcJ³lŽ2±´`Ïqoú<ºï°‡ëŽzr>~†ùkã“]¢Jã!_äã¹¸ë^xœÌÁÂ0 @!ñÊ—–y×ÚµÃÝçWÇY$â„`ÑGtWÈBôqG3¿ÛŸí©.ª€Q…YDQ%Yæ$Ùªª§È©çdÈ=QÈÍ-°H9Åž}ÐŽùß9›SÇ^‚GNœÓŒ~=¹¯ëq‡`¬XÛ4_ã|Õñ}¬¯ýç2Mõã<ÝëÊcTHS)š*˜
Ë0F0°£%´Ô˜Ð’S ÜJ[õ^/·ò=lž
"=3“ xœ…ÁNë0E÷þŠ‘ÞÅ²Ä®Q…
Bb¬x?àØ“Ô"Ž+Û-tÃ·ã âu÷vsfî«™’Á‚©‘)ÆEë¬Ö­Æ©¶³B«³Œ£5µ@r0	—r#ÝØòvÐZw¬ïu;¢æÚXÝ£Ò’õF(­zIÌ±ìc‚g¿LðäØ†ZÑy—³§Ù„|¬dc¸ÞÉ¾åBÉ®˜`ŒÔnð¥`‚GôewÇl÷°}]+ìüRp¾°Ù©4LV;¹uâ¡ø¸@‰Í©^é³'LgHææ8­£Ÿ‘cÙíc.×`9…rh
$4¸”ËT@s ÎDMú’Òº”ÜÿF¬ë}þ
vkÎ¯„¼øiA×Äql†óõÿCþb.Õ°ŠoSÀîÌÏ¦:ÌŠïtøæ‹‡\z^Ìäá!ù0`š`›+î¦¤oÈ'Ä¤¤“1xœ…RMsÛ ½ó+v¦ÇV!aIÎ87Ó4Ó6í!é½ƒÈ4d@®uÉoïb»çTÌ¾Ý÷Ø/¢—TÛ²B•Š¶Œ2¥hSöµ`Õ‚Ò¢¬‹fÑÖX²eCFî¥Ð,»¶ªT/ÛJP®ú[ö\0&ëè¢}¥êŠ•-áSÜ8ßµàA[X´òí:nÂ„¨wæ(«-›º‚÷EY½FÇ(=|“:nàv
ýVÏ	ä]km£Ü^ÈËš5ÈŠåä‹·Ò¤b…½ÛãCéIn!wž¢à¦8NñŠï\\o\ˆW/ïÀî|e¼02tYæ´nó2/!gS‘OgÞn€“éPã<ÊÞy€~€{i¥çQ;‹L6µT‘ëtÞŠïlD«8F®Iôqå %\xÅÍÑ´;{r—H;ôdt>jq$Dö}²Õ‘0u(ÁÞy”!êEÂ'úkC8ìò×xÎZœàn|{ÎOäg9cìPiàOz°RdN©¬C÷WN~b9(Hä7·|ëfŽ
žà!ïNøbÏ—š'>h¸÷:M|€U@¸Î07ò†<Ê½–Îì¯|†Ï^ÎÒüï«ßÜÈ¹úçºLòUûZ›"xœ…ÁjÜ0†ï~Š9&”5²µ²´e	›´BÓšÜƒdeQ[Z¤q6yûÊl {joóÿ7Ì%Dh¶’	©x»Uo©Z±“\Á·ˆ¬o´[T«£NvÒ½fÂâÎ6°Î½4²UŠ+.­4Ø
Î­©ôBcLðÃ>À~.U=röuÖs^
õq¾)t‚7­
>±–±ªtgO„	¾£§î–Ü°ÿ½BmV8ø@8]èmÇ¥€ëŠ^=-ÇcL÷Hð<j‡€o„Á¢…ŸËlÊè8À×SL6WÕóè3ä³”·`<å«¤i,9u€æÜ»þÇ”raxñÅ!½LÑ]]×eïÚM†yÿüÿWT¿ðÕã©(küË˜|¦xáNÓÉ;Øåô)Smñ"«ƒÝfúÐž´ópŸüº_QrÁƒûÀz.âóßìmš1Àžâ{¹r¯W|«Í™/ž\ý:¬¶oêexœÌË	Â@ Püœ¶Ši@™ýd^¼ŠG¯Öì,5†M-#X†µØ……¨ðÎï5ÿÌª!‹€ŽX„Z¬¶ˆu_p©kÄ°I%‘h‡&ÖªYÚ¼c1Î{vˆ†Ð±IJí¬±'R[=V4õ4Ž«-è•ZÇØÃ/ê%Ã¹9äJíŽM—îš‰òõÃQ`Û´·;œ$·r»tÏýäýzþ7æä	ƒxœÁË	Â@ PüœRÅ<èAØÉ$3³àÅBB˜ÝEÐD’°Œ`Ö`å{ŸíwÓLƒ™cÁJQG ,¢¨±T!ÔQ½$ÂX<u°nr™c‚'U#ÈþâC5©#”‰1h.—¦\,ËiW‘¸£'ï‹âœóèºùam¾©Ÿmxµ÷þº?¼ÛÕïtù,)è	„+xœÊ»Â0 Pñ©2…KÐÙw>;ƒ äÏY)H™,1SÐ3i^õ>Çïá¾4Õ£õ†7³×â‘É!ƒÎ‹Ó…)¤nM¦E`‹&ÛÌÁ[í•>±¥è¡ôÛ&ˆ¹°YïfÏ°®×!©30@×ÝrVcH­ªAž³´—ZªJuëtÞÝï¥,é	…@xœÁ1
Â0 PŠN=EfAùMòpqqÓÑ­HÒÿC;˜J	Þ£xáê¡|ï³ýnúºˆ(; ÷’Cä˜°£˜ƒ‘ £$p6 ¯èÔ>ã"¥ªÑw9pBÄÚgAË0!;ÃŽØeLÍÚ›&¬ëqg;P{ €¶=1«ëí"óY±ä©Luš‹ª³*¯‡Æ÷½ùý<ˆ-P‘xœ…Íj!…÷>ÅÝ—ŽŽ:„Bºé¥‹<ÁU¯£ƒcúö@÷]ø>Î9­úaD”EÈjrÒ(¥G)Œ²ÜpQôB»b¥¹çÚq¡½Èx¥ùŠa‚{!Ñò~4jšá­ÅRá9Ö´´rðB9ßÓ»èâ!/­ó´‡~ÐJök—'.8g®\.©5ªðN©E8Þaw~„Î>Â!Ír·‚ºÐr°ázÕÙž)¤L[X±ZüÍ|ßNð5¡ÍÄØë¼4B%@^·¥yÌZ$(ö‹\[ Ý“£Ž±Sšfò›ÂÆþlÿ9Ã~|Xj:’xœKjÄ0D÷>ECÖ™èc·dBH †¢ÕjÅøY†9~<‹\ ËzTñ¨ZDÀõÜzï•'£;Šìµ²UÔ-''ê¶ãf¥"s…Ž²sÚz6}¤œ*$íÐ
»$Ql|üëTÆ¡pt¬\›XœŠ¾Sš-‘‹-Z2™¸¡½K‹ä:Àû¾ñ çÛ#œÂ#¼å¹ÊxâezÝbgŒñØÃ³B¥šƒN¹Vùç¼ù–rX÷q„"?»lžz©,|,cž¿h¾äùú2ÑvXš>óF¡,	¦°§t¸—¤”ãƒÜs…•êð#Ön±+xœ¥‘KÓ0Çïþ£½,ˆm”W“4 BBB\öŠXMìñÆ4±-wB·>;“´W$|Ïã÷Ÿ'"hºîº.ï°,öhtWäUÕä¦¨µm©lƒMQïµŠ˜È3ìqhtÛU§ËƒÁÁ¶•É[´MEºµ$ž\—Q¸ð|
“óð=|uþÞéõŸÅþ Ñï4N™ó{(ê¦>´]Ý–ð&/ò\‰wvÌô_ŸÝL„Gæa±V€Á¥$íÑ‹cˆÈ£RÃâ&³âÏŽGÐŠyün@túH–3Í!]6j¯ü¯™2Ý—²‚¾êáŒÉ¥‡oea§¿ê×²œgAq€á÷·žî Ø˜$f_ØHpgÑM×ÔDhÀ #Üf°)Ìà|\¬$}÷w¯ß®Œ¿·§”ó'^‹D9/[[ðs™ãÊ³rý'ôæéƒóèô‘’i>$H‰4Ë.ý3€ÓI*e¡m#";Ù¦h¬®yû‘_ÅÕjÚÅë51SêÑ={2»`ín¸ôÿ~[õ¹ÖæJšxœŽMjÃ0F÷:Å\Àaô/—RB7]tÙÌX£Z4–Š#zû&Ðdù>x¼oì"Plæ„>8kcÒ¤C²’É‡9ê‹NÞêÌ¬¾i—6 ;*ž$ÎSÌ¢Õhìl‹Ñìƒ÷†2VtŒµïð.u¬ðz\—ž¿îpâ;œkr9-}{í‚KsÀ¤aÂ€¨nëVÇÇõÑùô¯«7i´Ó¸´Ÿr_ŽíöFíM©úÙ$O½”‰Ÿ)¨?ù+\ä–xœŽKNÄ0D÷>EK¬ÿ-!„`…F¢ínO,'8ŽÄñÉ,¸ ËWª§ªÞ˜AÙHØ8’0ºÑ%#Éf24È1ûQy«£Ø°qí€ØÆ¬”ÏÎ+‹4²O‰¤ËArÈÙø»ŸÌ_?© t&Dfí’%{%rQ™èÜPY'ðèÓÚàÊ¥Oðvìi‚ç¯;\â^Kí<_Òº¼À¨­öA'áq°Ã Ît)½ó?uñÉíÆ°ó¿Þ;<„r[x_çR?°^K½=-¸Ÿ+B,¥ž_sù¬i%†43V8¶_i‰kˆ˜xœOËNÃ0¼û+ö­6Ž“8BHœ7ø€hk¯[‹Ø®§¡O| â63ÚGÉÌ`[¬Ùk$äÎaC®«$“Äºf²5Ü[Fbq¡Ì±€TÚ©Ê-Y7\wR¢V¦Q¶G<*gê–j…º4—sÊðœFá…"¼úx‚³ñýÇŠŸÅ½¡qoRx„JµJ÷ríwX!ŠU¾þ‡IÛ5¿&âCº2ðgÉ9ÍP´0Çyb!Y†uÞr\N¦sZ†x<x;˜’Çá’ÎB|û	b*°}ßÃ”`atšV4ŽÒ|âÝŸ"Û]rnw¼þ¾A|ã´„âœ$xœ¥‘Áj!†ï>ÅÜšÐfY³ëFÛR
…Bhè¥ôŒŽYÉFuIóöÕ„
=zPfþÿ›S@Îh­²¦Õ\.gLJŽ”ÒÓ­9jººë4e@—@PÕQCùÊ(Á¤­]Ë·B­hÍEËxËi³”†È)õ>À‹¬ƒµtðfÝUÉ«}ŽŸ•tÞY%‡JùÃÐ6	*X·5­k’_6%ü—	yµ_à¦a€Ñ[WÌ44ù8…àÄt³9!kS’°Þ?7›;H=ºrÁ¼BÔ¥xq)]4äh3c@©!ygý¯H!¯eqwÈû”Éf#§!Í«s¯©Ïôí	âQŽcá†Ù¼9'yÐü6zïÀØ¨ÕŒä'ùlÑÈtÁù)LxJûkóy˜‹¾"äÃîê…7f±=Ýÿ}ïä¸‰ÁŸxœŒÁNÄ E÷ýŠ—¸ž‘ÇP ÉÄèlµ.Ý¿Â£E[¨”þ¿Àå¹9çÖÂ— E–º6'6‚’è+­n…¦f¥Â©‚'ÉŒ¤­‘JrÀ€Rc‡G*¯ëT0By‡¾µ‚•v*´Ž‘-y¶Ô±2x±$:¼biLC{rWŽu‚Û¾¹	®_w8wxŽ©ò|vyyTZÙNb+á$´Í±.±VþgÞô\F†uŸg(ü½óVáÁ%/ÐS´Ý>s™cC.§ßß¦yñÞâ8Õ÷È/1mµvN@Éƒ4¦¼1lûºæR éãsE‘xœŽÁNÃ0†ï}
ßQQº$ÎŒ#w7qÖLM‚ooÆ£LcNH>øûíÏ2"P}#±ÓèåÊ­Œ"k	½!‹Ê¤½ÚWØ¼b¡Ä0);Ù³d$¤ÓÂwVõ
‡]'í@J¬´îyÊ6È+<î>ÞËÒnãý¸ËÇþ:Òt½êÖBwp%¤Í1fú·kä Nnóà¸l÷qùu±s¿<ñ¶?¿l¾Ncrõ¸WÁc˜é¯±¡ {à‰*Á·¶nhaN‡ØÎ¡òBòù®MõÇ(\öl!d:c¡˜ôh9—·3»€ÛvyœG•øl­ðŸxœ±nÃ0Dw}÷:•ÈŠEÓ-C?‚éÄ‰,íüZ÷þXí´(:v;îÝ‘’˜¡ô†ÈLURMeUµÚ×µg¤¶ÖUÓàÞ6ºE5bâ(à+mŒ·MË¥]˜
­&sp­]íˆ-ÔFá$—!Á;J‡Þ®Ÿ)tñÏý«»½íù´±F—Fï<•»²T~èûN„ÿÉÖ]Õö‡UG"ÈÓ8I ]æ§‘–’•ƒCAX©S”4ÐäBœûuxÞd–sâÂN²oœ°¿`Œ
S,`¹ønSé™1L2|¯2¬~æH:Yí5C<wž·pl—ï˜(«¯² L<Fp‰%u<3Á½“ËŸëÎ¿×©/x«”YŸ7xœRMÓ0½çWÌ‘ŠMåæ;+„ø@H,‡qÇãÔKlW¶ÛUùeÜùcLÚB»«C<Væ½yïMR ‚ºlëRVC-DQv«¶½¦²¢¢i•¨iRKl²r	:Õ´e¡z-ªBéF–Ô¯HÕC_}×6UEWhnÓÚ¸Ád0Â›»Ÿ?ÂdÜ/ì+yçõÒÒKXUM%D[Už‹BˆlðÖš”è?±]»ª»æ„Í^+Í¸NŸ¾Þ *k\Li¼t
”ÁÑùH·›é8]@³^£Ø¥Ñ{É[JaÅU‰
ää‡o`KÓ8ÐL˜F˜?3Îg®ßB–ðem"l0k¥"¤õÜ1Mþž­3Y¼Î2ÈáÙäv67*wqË¯ÏíÌ@Ë3nv˜K™ä´€[ÚÑ…ú„râÑÁÛ¿p§ýÞ³í¹
ö”ŸôÛÖ«íD&ŠÔÕ!UÜ¡™fâ>Gæø€Ú$vÅoƒ“ùNUÀ½IœXb#À©àHá?ÂDx{8ÙNàíD`yÉoæl¼
¤ž˜ÈúÍÁÌ'¹è>R]4ó“û¼;`ÎªŸØ@öÙŒŽTîµÎåþúŸ?oöÊó+§šxœOKNÃ0Ýç#±n±%„HH¨âc3I¬Æv±–ãã.¸ Ë7ï;­G#%9ƒZZ´^9£­F´ftròNjNN”Ã¥‚F;Í^:3ŠY®9óB;Ò³GáÈså3‚ýé-÷ŠÏÜtÞÊ‰¸°¨„qÖw£±Baø4â<àÞÖ\àD¡­ðºW¿ÂÓùŽî^Bj´}ŽÏÀEèÕ†Á)Æ†~¡5ú§}ø¤²\ömƒBß;ÕÆÂ\r„·¼…ôéÒò±ö–ax?Pi‰ýCl!'˜qßìµ‹ ]#A]óíPh©p»/J¾è<AÂH¿UTvŽ“ xœÁJÄ0†ïyŠ9î"»4mÚ´‹ˆ"âÑX&É´Û&¥I»úö¦êAð"Þfæþÿ›‰3p¬Ë’T²l°Ñ•ªe#›:We¡U)9))°dÎä"Ê›¢Õ¥ª‹¼Ê.y¦…T$[B‘æ•®²Zd—Øûý`<£ƒë:¸Õ[¼¤ú^£óÎjŽÚwÀE%ê†sžÃMÆ³Œ¥éhc¤˜\|›°'ûº1Ác´ÞA‹Ëa	›“[G‚Ðûëa¦.ÀÕÆœC«ÕGbìÁÐ=éËçîœ¤Ý¢ÿm®C‘ƒiö«5d:“Òbo¤3¶¸sŠ³!6+\½5I'hý0øëF–?AOŒ½þ¦ßi?˜eœÈìÓ†í™ƒoÛƒz?ýý]ìÿEªdšxœKNÄ0D÷9EK¬3¸ý‹-!„Ø!Ä!Úv{&ÊÇ™ØYp{2Äže•^=©ÚÎ{=XX)ÒÎ9™Xdr²Ib@Ì‰r·ÑÎkV^:‰1ÎNÇ ,ÉG!’5Ê)mDà_Þ˜ANl‚‘(Ñ‹$C’Þx‹6XgéT$T±££ÝÊŸ<¶¼5Þàez„Kx„·qm<_bY^µÕƒWÖ"ôÂ
Ñí2¶Æÿœw_¼_¶cžaçûÁµÁÓ`!ïe…¦:.}ãû:NµäöL)õ§h›¹eí[é7Š]¹vÝÇZš@õç¥òBø†Ä™Ž¹ý f„xQŸxœŽ1jÄ0E{búÀ"Y#Y‚Ò¦Ø*'[3¬YÛÚXãbo%äùÝû|_f`&ì™…‚›#[‹QÄ³ìs‰EÐktð®àÐEÉ9cIb}(Cr8Xv‘FIs*8EC§ÞêWº·eƒOZé„×í—.í‡Þ•¿öåÞªèe®Û[W‡„.9‹ðb½µ¦·Û¢Êÿ±äÿ,æcoJë
µô[µï+ëRw˜žPXè\Õ|Ô«UŸxœŒKNÄ0D÷>EK¬gðÿƒBlnÐ¶Ûk’xpÎO‰°)é•ªÞèD`’â=Ïh‘;•"z‘E¢#‚4E„¬UŒ\³vZøl’9®e.6*
‚²IAËàÕ¥—…ãß^Ç,”Di¼À¨„¶Qèè”E#•	Y’“)¡*÷1µïTÇoû–&x¾ÞáïðZ×Aó9µå‹vkÎáÄ-çìh—:ýóÎ>¨_nû<C§¯¶ÞCém¥õXsßð±´~úU2q›àÝfµ­OðIKû&Ø&Š¸^`®+ý ®šlý–)xœ¥‘MOã0†ïþs‡4ÎG“¸Z­¸pAœ(ˆÃ
!LˆWµÙ“n÷ßãÂVˆÒ^,{4ó¾ï3¦ˆkÝðZÜÈNò¾ÑJ•©4æCÔë±¦m”â-›eDO0˜®oj#FÞÖfìTƒ¢B³Ö¢­ÅÐw­õP\2¹Ð"Ü„Iz	î§Å¥ÉF?~Óé~•–„+ƒ?¡j»¶ï×¢pÁkÎ™ÎY"ü	¦dš Í;$üîÐ…=BšPIÿ;ë‘±/Š0ÆààÓ8Œv‡ ÄÙå&‚\
3úíÃöºÜÞ^³·Vi}©ÂB !éhgwÜPÙ%,Q£ð€z¡üÐÁSž³Ù]žr°cŽc¿  Òø½ÃBïìê0tÏ]»ÇÍI­x÷)þXšŠG‰¤Ë#ÂóaeÊ£”KŠ¥²¾D¿?;ÜO6áÞIÿ¥JçL— 2Vnr(?]~@ÊÁ·öÅçhaõwóÝ_d¯¾©ß˜"xœKNÄ0†÷9…/0%>¦E!–°.à$NÑIªÄ™Û“@,mùûæD8âQÍ²íf5Ì§É¨nœlK³œ”íÙu«LwRbÃD¡¬¥ÖÔ·jž´DªG#QŸŽtÔ¦Uíh'B…]LðLž<–¬Ü½ïC£öáÁ¦µÑñ|m?ö²ëÚq€ƒ¥u{öÌôO\¼ÐJ˜	.²9	ñT2‚¥+œ}¨™Êf)&êr®Å}`ýåÞ%_/Ö+è*âösQùsf—bYìQ«NvÈ 1€"(™pGë†˜4CµD/”nJ0µY*¡â—Å‡¥zdFµ¤ßèÕ÷Jßz:†ìwÂrIôk¥ÒÎù ‘kZÁ	CÞbâŸZì|25hâO ¦*Qeªá«_™C´ö >oÿò_ñÖa¹³’xœ1nÄ E{N1Ý6ñÊ`fEIÚ”9àaÃ
ãH¾}°WQÚ(å_óF3%#ÂØQ3ÈaPV‹^òz×;D¡ã-ë˜È¨ää®3ÆÌtÜ>Ð‘I*U¢³T[iŒ’w¼Wí [éˆ^Ë”2| /¼¯‹àù¶‡³ÙÃ«ÃÙ¦ùh/:Î¸
šV´-©tö¥à?ÇÉ[ð×:Ž`êëRUfuóRÛ¯äG(‚Ik´øÓ€†æˆf½!Y]j»Õy¯•T+Ž0ãœòöD~ý»ëAÁG°zÁíkOKE÷µÀ˜p‰§Î‡p´õ›>#y,?òyØ›ä\c¶Ë_.'ß'‘¥xœMnÄ …÷œÂ˜ˆŸjTµÝvÙðc4F`ZÍí›tÔ}ÕÝ{¶?û™
"Ó;¡&­}6~ôƒsrR“‘“”B5¸~ÙML’Ÿõ4š¡ç¨œ@¡g+GÎ-GD‡½p{[2ÝhÍÞ1Ð
o­Ú.×Ãtæ0/!ÆÎæíz9Åå¤$œøÀ9Û«[ Ââì5†%ÁM×JkÉmYÁ4ï±TÆ>ò†ð¹ËS…ìV„+–„¾BŒ`jB0¹%‹¿„T	µ;€VCZ˜-Å;„ÇŠV÷´iR&ÐG
tÝ~ôGœ²÷'súËSìöí‡k›xœŽÍN…0„÷}Š³sc/…þÐKŒ1.LŒKŸ ´§Ð\(„ÌÕ§ÞÀ¸™d¾Ìd†6D¨Û«"Xc­hµÑx¨ÖæƒRM/Z‰µ±¾‘luf¯Um£hER¯"¶:ØˆBÚ sVz˜Ûi\6øÀD#¼îÅðt;Í¥?ÍKÊ„ÓÅ/ó3ÔÊHU·ÒÔÀ…‚tNDøÏ:{Kwð:BžÌ.Ãê„’~–•Ò’{§‡¼<B^x¾¤”;‰ÖÒUÕpŒíý9QM)ïwž¿f¬Ná~JU:Ó¥²†}¦!càKŒ¼ÿîþr™ý«we"xœÍNÄ …÷<Å} ;¡?´cŒºucô	€^
™*?SûöÒjfmÜ.ç;÷="ô}_ÑŠ*Úö}])yVŠ–¢Vœ•Lr&dƒêÜ³–,Ü£À¤ ¬*Y_1Ú @”Sªkëê†u]ÍX©JÂSÔÎÃ+š¨á%©áá²‹“ØÅ“±§“tó#”M[Wk»
ÚPJòílbÄÚÉ›ÇB™i‚2C$¥ÐpBÔÞ¥QÃÂíyÇÅùˆDÍãgà‘ÃÌ7AïS¿Om>ðÚ1ê;È°ˆ‰.Ç“Ã¿î»sPæ+³Å®|Jx"äy
<~&·Üañîj²ÎÖ½ã<=œ±·*Ù½"‘yŸ‹u+•-^D0!7ó>-ÑØfœßrâ‡-…SªÛý_þ•|º´–’xœPËNÃ0¼û+öÒØ‰â
!Äq,|€ëÆ"£xÝÒ¿Ç)=pD\vµ³3³Z¥CËQ¡óêÁJm¬”hÅƒäÐ´’÷B	§[ôŠ3êZÅeßH¡Ú¾|h´5hçCg¼÷ZÉnhz¦3q…74ÂKNv„ÇÏ­Ø™­x3á´³ñôBöm#e¯T\rÎ
z
DøO9ûH6®+Z‚%^ŠO²zB0cï#‚¶Î%Í‚+_¬ÑÚ¼\
//KÁ››¢ß°°‚¹2pri‡1xº‘ïrŠËI?#á2âmta>Þ=ÎzÊ˜vŒ½¦”q#Ñ’öu},7f³]VOaÎ_Õ|>a½…ÊN¡;ÕCÇá8£«¢÷•¹îÿò)öPÔ£—xœ•KNÄ0D÷>E_ #Ûñ!4±cÉ	Úí6±È9·'‘8 ,«TOUÕ3`DåG)£	häHÊ*ò$MF¶#%[,JË–Ä6^;¤bdp:“WÊ±bo’F/]J.†bMÞëh³À{Ÿ¶/\û·ûN<¾Ÿâ’Nq­kçùBÛòÊ8µñ6À ”âp—Ú;ÿ£þÅÅ3Ó–oó¥¶åë˜H½~bgh¼s‡3°ñZßVÎÃVÊ¾þR'~ 6a®“xœ•MN!F÷œ¢àt€îahcŒºu9^€Ÿ¢!vÃ··ÚÌÊ•îøÈ÷^AõŠAj'”ÐãIp«ÇiO*Xiå4”îÈm°AiÃ.¦bî G¡'jzÒ\Îü(¼UVqeµS†›Y
i3×K…WL=ÂËµ¹ï{ìžRî¸®l &%g9q¡àÀçŒn·Ô;þ×Rßpöì=˜u¬•žàŠÇ¡–Ä ¡]Ð1öSã}Ì×ŽÙÃ¥’•šÄü¢8§ìzDÈf#mƒ-Ø{Ê¬%/Xï~ ½qóDóðSGšiˆÞUÐb
z¡vZ2ÛûŒcgÊè%„ƒýºÿË×Ù7û|‘›–xœŒINÄ0D÷9Å—ØÀ‚Æó !ÄØpä|Wuœ4ŽÃùiu‹°«÷TU­­RN°ÏRÅÂ°œÓZ:–CŒC/%gßw—T±6
Š½Ò|È*'¨,z—2DŽ9ƒ{#ÿú"²	9!{Û‹È1X6*)m!p5ˆV+Û¥£M[¥3æ6õÇÎ½ÞòéïóÚ°œx+o$“Ú‰à='Dwµenÿ[w¨#èr,U|Ø=øHCÝ
•yÇúRÒ~½ïºO¬©€ÖŸ‚¯eŸ¨mwÑîæok1œxœŽÁNÅ E÷|Å,uÑf€ÒÂ‹1~€nÔ½2´Ä¦ðLü{Ÿ+ênîÍ='Óv"@çµÞf¤‰PXRrÜrc9r+¤Ò³ ¯Ø›Ý)7˜½±~&5é™‚C-µP+}PFbQºaböÜÖ²ÃCÌÜÇ7é¸úí®ÖØW›êùHsI·À‡ÑŒBèpBdG›bkô_X!rø†Ù#e›ò{¢—­,W×ÐÊ%-Ô.cÏk¬ð·­B	ÚJP6ÿc6{Ø¿tì7]ÏØS\2ùîpuîãô÷ßì÷.x¼xœŒMNÄ0ƒ÷=Å“XÏ¿&©„àè¥Ï¡ý›4•€ÓS„Ø³²ýÉv- ÁˆJPFw¢&8¦Ú)gbŽ¢¥Ù¸`©$>¸˜rbË]ÌYÐ†N½5Öµb²í}×â·¯´h†µ1Z¸óØFß:dq:å˜a{$#Á§†:¬…>0Ö!{?ÐÓÝ_ïáe\*¦k¿ÎÏ¤×Ö«à]”Wª9é<ÖŠÿ­›W”wÐvLÜì•¢¡\Ö™†Âûx{Ü¶Þ»K?±7Í)$\ùm¿A¼Í¨üGê×†ý¯n—5xœ­RKoÔ0¾ûWŒz©òÜdB J[*!ØVâMìqb)±?¶]~=v––8ôyü½lo‰€J‘”—ÅN‚Ê¶Æ¶ ²éŠ:¯ËNv¢í*Qv‚Ñ’ö ¶mÝrÀ
w”‚šv—n«²ªQÊŠ#ñ]CƒŸŒ…O¤|ßG+|œOä@Ô@Ê"¼›0af¥ÃSvÒä35,7Ë{(êmQ5e·«`“WyÎ"º(ïé¿ð6y[þæeR=@½S?	PXÈãÄŸä»Ÿè¯kRÑ,(>nr£¥Áy¸‡Ø_4Èç8 c}ªò†àÁM&Ìä>à<Ÿa ˆ§Û:ƒ$Èƒ]«_= Çà”sž…Ú1,i%>’Sz4÷ÊèTÉ‘´H˜Ñ° Ÿ”ŽÆmœž¢œ½¤H+¨59—ÁfÇ#ßÖ×V®ÕçEÖÁUÊ
kVm¢ž5'%H\Ykl”±+³¦Ä3<Ú(ãXŠ>P"&Êçè`¼´Ó'Ëôê5`¬Áò7/ÏàfB=¦k‰ïß¶VóÜYz8?)ù'<)ìH­Ý çÆ
ÔüÅÔÍþ¶ÿüõËmxØïï¾39ã˜1vP£&±1Rn†óÛú\ìO²%šxœOKnÅ Üs
 /BHªªêâmºë˜½„D|^{ü’+T–Fž‘<3®™ÁM˜L(¦`t~²ŠÏÊ
©Ç0;3K©Ø‰™R…ÙZ´JŒZpòÆHéGáºÍ¨•½S3É%(†­®G†OŠu…VÜ
¯‹ö"ï1UÚwìo ”æZ/#pãšsÖÕ=ÖJÿ<g_´>hÆîñ—
 ¸£ÁK‰éîTNtý³¾×>¹@= ÑOO.ÍÞ®˜|yaá‰9­À™{øeÑN•ÊÀþ ©0i
xœMINÅ0Ý÷–Xó±Ó¶„`ÍÚMZÑþ~ÒôþT]p VoÐZ5Ê5`(£Æ^ˆ¬Çà£¢“D¬‹
v­voGÑ1;)g+rÏƒGìH¥Ç±|úËìÆ¬äŒHŠK^J²sÏ&9!EFìôhÓVáÛæ6Çž'x½øíïó½ÙrËÛúä#Æà3<c<«§»Î­ÙÿÚÝ‡Õ/ƒÇ±,Píç°½Á#”º­°ë:êd6¾¬ºŸgüÂ_¡H`Œ•xœ•ŽAnÄ E÷œÂhe’@@ªª®z.º9`¤$D@4sü2Ñ\ ^}½¯ÿäš™A:©I¡
ÞJÔ½•’{Tƒ&ìì(d%£8(ó^ÁyKÞu6X5ÇaBÓ›i@£L'Éö4öÓ0
:ë’2üÐá—fe½wÚ}ÍÅõÝ¥íä Q«6ïàGDÑèkåÿ/Åw|À^¢‡#ÇöiÜ¡,é~ãœS¾­iâj¿4Í.«‡‰¡p…š áu@»Z^ý%f/¨ÀÙ\óÎO]©LRh±Š?àk=xœ•ŽKnÄ D÷œ¢/`ð'Š¢hf™e”4ÐÄ(F€¾}°4HvU%ÕÓ«™ì áÄ•1‹s|²ƒ]FÒ¨íH´iÈrÇ˜)V@É-:œ”’„3+ŸÝ Vaîf9£ÔmA=2<ê–2|¯ÜŽb6xý¹J¯¯òîc¥Ð›´¿Á 'Î¥jÐñY[w_+ýï¾ÎÏ;û*±xMwº@®¹2Göõ„‹ÑÆî)ÖœB \ =ªOC8aÇŽ'¤gìÓG²]r®ÓçË_¤Ø/qx›xœŽKN1D÷9…%Ö3äÛHqa'Ît4ý#p{¢A\€]¹žíªV™!zÐ1{Ÿ0º Ze$±BïT
^j2ƒòbÇÊkƒdÉ`¢`(¡ÈÚÜ?x¤ä<$‡‘b0Þª¿}åHÒèƒB=v6j§MHÑ#yt†9›lÈ(#ðlÓVáÎ¥Mtq‚—‡¾>†·²6ž¯q[^AYB¯¤$\dÝ]Jkü¿kñÎõÆ°Ÿó•?N><rÝÀ#–²×-='¦‚ë%—/>„8¾×Ÿ= 0¶gøÅ°c¼ã Æ÷m·˜xœ¥ŒKnÄ ÷œ¢÷‘F´¤h”d•4Ðhüà$sûX¾Bv¯ª¤×+3$3$IÎJƒÑãÇ˜Òh•
LÚköˆç–b§Êk‡É¤i@7¡6A+ŒäOb&‹ZËŒš4:zÞ*|R}¾B¦Èð¾\xk~<*ó-lËPi;8cƒ7‰RŠÓ.¥wþÇ…h¯5ÀOé(ôƒfˆì­°SxÒƒE¬Û4Ï§è!sjÐ3¿ Ó7_Á3¯Ê/G8öÖ+Ó"þ K·c:ŸxœŽANÆ …÷œb.Ð(P0Æn\ê†a°D¡MËõö¶70.¿÷òò¾¾3C˜£œœsÚ4ÒY"•3ÛÌ<¹L˜”Ôd}šÄ†;·Ò:ŸM$ÆOÁzÊÉ(¤ìl‰£¨ƒŽo}YwxáÒxº´ÀýÇc¼à±´ÎŸ#­õ”±A{üƒtRŠ3­¥wþç\<—ohXùØ°w¤¥žöB¼-í(	¾ð€´¯ÛÆ	ò¾VègsýbK£¯å½qÖœ‡øs÷ñøk	xœ•MNÄ0…÷9…/Ð*¿M;BÁ‰'°g&bšŒÚtÁíI% +ë=½Ï~n3H™Ðê9’â”±Ño‰ÈºDÎ£‹™Ñ‰n\x‰šR´zQ'­ôlgehö9)mÂä”
Dv«¼sn7x=öpƒ§¯SŒtŠ—\ßÇP×gPÖ-Ú;³Hä$¥èîš[ãá‹S¿¸x«‘aãcç|àÊûCŽýœrÀ–k9S+å’ËÎ{µôÑ±¾¸ÂÞÝ;C:J8³£ŸùZ85¥¾/é%~ 6ÈqT’xœPKnÃ ÝsŠ9@Œ«ªªªî*uSõ 1J‘Á‰rûb©ènÞè}æM[‰€œããˆÞBâÑÊhGá‰í´ è&e•òZvÅ•r7Jmœ±"LFðIª(¸²¸"gHØˆSŒ~2·6—>)µÞ·êgx9ïààvð–r£ËÁ—å„Òö({¸„ÎYß.©5ú·|’£ž´ø“³ŸÚ‹åm”k#P"Ì¸†Á—@nxÙ¨2öA1e_:s«Ð
,xî›á
÷ º%O*„’òéÀØWiÉ÷ÚÎ(Ý"…þ›°ô ¸c…L·~þV)<A-€!ìÌP®-•Ü]¾Ó)SJŒƒ{<ÿ§)û;”xœÍjÃ0„ïz
½€Ö²þJ)¥9zé¬åU-bKÁÞ„öí«@é9‡9Ì,ß2Ã;‘'3FJcp£
Ú“Wƒ6Áçµ›º	À&/.¸SaIVyTM’Ep:PœZœ!Ð W^ê.ß)ó"ß®G\äóùnúén^saZûX·	£ñzP:XÙ)«”hé–™éa<Î„Ñÿáâ7:.I"364ÖÂ{]×öqÍG[QæŒE¦ü-Ä©–í,Sk»Ôÿc/Ägþ*4w5¥núyz¤‹øÛnkø–"xœPKnÃ ÝsŠ9@±UU?Ë.›€=Ä¨6X€#åöÒß¶Ð½ßLŽˆ øØLR­ìÙIÓ½m%o†F7ÜÖW¢ÒLlÓ}†‰[a&n¸Ð–×¼QõÐjÕuƒJJ¤Õ½`zÏsˆð†.Ïð²§q†‡Ž¦€'ç3.Ç1¬ š¶—¢uï8g4]]ÎøoùP«¶íÔ·œ½†	!âžðÔ;9°e|í'Ðñ²¯´MbìJXðô‘fÓ%ÕƒKÃ]Šgü
ð„è)cëbÊÌ_}~A§;aÂ«‹mÔ+’ó‘±óLæ”CQ²qUç¿l²¹—×fA(Ýé³»KÂÎ3²¤¯4N¥¦™8ï¬µÏ0{¼b¼ÁB'$©qf\¶DáïÄÄ©
ÖVævúÏuÙ'_d¶ó‘xœKn!D÷œ‚x_+Š¢de•@Óxm°°äÛgFÉ.ïº^uµª{C¤à„c:…$Ýl ‚L[†`U
Örçµ• ˜ÈÍ7,òÈxàB¡q2á–fRXÆ¥á3“qÖ³÷Ês“ˆ}©~bî}+,ôå¼‹)ìâ-—Ž—	êõ•r©ìÌ…š˜fŒlôš{Ç§ãN¥”û‹“‘6+),¾yØoE¼gØ>^Î„|Õ{.§ÿöêKîß-Ú+Ý»ÔBÓ(Ðó6l¨a€$ŽÛ%ƒßéDÈw>Œ‡šÒ!<ŽÏ'?ä@|³™xœŽKjÄ0D÷:ECÖ™èÿ²Ên²É	ôiÅÈ–#ËÜ>ž¹@6EWñšªÑÁÄ ’ÀÌD™›h”’È¥ã”áM¤âe°dõ—FgÃ™3Lé¨$K>Ž§,Ë–)EcÔÒ(|ð^P)…âÂY-­õ9(TÖÐì„KÎ2ªS’Ùsâ÷1µW,c
û'x½ß§»y/ËÀzŠm~ƒc“c†Kmá™jJÉ‘Îeüß79c¿ ¬{­Ðñ{ÇmÀ“1{›aCœÐ÷ŒX_f¿„|”BØ/Ð2œ[Â
ŸûŽ~IÊ¶Vÿ{gÊ’ÛúÂ^üƒú.u'—*xœQ]kÜ0|×¯Øæ)¡æðgÎ†ò8JÓÒþ‚•´²E,ÉHò%×_ßµÃA o}ÚÕìÌh6G"8*Ùé†LÕÈÆÔGuìº–êv¨ËŠ¶£íêZÙ‹#ù(Û¦¬jSWª¦®SF—e§©o;Õšf¨Ì}¯t+Iàš§!M„ÑÍðíCñXÕ÷Ü°D?}Ù7ðµìËRp×Ùœé¿†Å“}ƒ<Èu„`àGÐ<ü¼:É|è5h›–/;Æz6ÐŠ¯(!~~/à´‰ŒBÿ’ÀðO.aeGë8RÊ6øƒ'˜ðLà‚¶Æ’Þ)#Í˜ù®X÷uñÙÎ“î•£…ßt¶‰y˜'3Î:ÁöäCI ØËÈÔ’®‰v¹™ü˜'Pè¯¨%†…â|a‚q+÷/bC/Ñò
ù33¤…Ôæ›]Ýrû.Ù¿Ìí®{6A¤w›ïˆYï"òSpqò€ZÛ-–‚uß ÁY¿m¡y¶~ä2e|!¸yFG*ºaú÷*í%Çùk&L[‚gK¯×è¿ˆ’çá¥œxœËjÃ0E÷úŠÙ7KÑËPJ»)t‘lÝë1Š¶dd™6_9¥%»Bws‡{Ï<jA„À•ÒZQÅm+½;X©U½r”k¼æ¬gÌX2›‚©‚’A1Ú+*¤œzc›b>z4¢sNr%˜µ¹À‚8 )q„Ç;ñL™Ü»<=åBK.T/à¡Ó]GZwŠµâ¿Âä5~Bìzà˜}ŸÖÉ6žI|\æÑ\ož˜BÞLg,Ñü¸yq.Ój¾ùNïG„óŒ.†èL9í¶~i„¥AKi§~˜~ñ÷s÷ä-ñ>~'ÝZ¶WŽWˆ|ÆR®ïµƒ%o”–Ú“/é¨/—xœŽÁN„0„ï}Šÿ„”BYjŒ1^½é¾Àßv
]j ¬Ù·—õâÕx›o&3™²ÄÐpÞÊ°—Ô®Q¡QÆ:ïL@çXyÅÊñÉ+–B¦^v­1¶„ÐiÏÞÊ¶WP'Ùj@ð^¦¼Òb™èußÜDOój{‡—¸¤ÚåË35”>õj JöRŠÃ½ÄRðÏºxGo «¬µçéGudWðÌ#h›òž<qJdA+¶œ®ð´ä¯šÎ<Žq÷wãAðâÉ²›©dÚ
Û˜b¹ÕB|Äq¯r•½=þå®øÞw•xœKn„0÷>E_€‘ÿ´£(J²Í2'hãv@3@„›ÅÜ> å £YVIõžlÌà3¹Ø§¾ÑG›,SS1ØÛZc´–ÐY&Òê—6^²¯%È™€	½×%ë!aÈTÌ‘¸è²¢]Æuƒ/žd„Ï½#¼^O¸äÞ§EøvÖùŒhƒC¡ÓQkuØyá'sõQ
lÜX€–mÏíÞ„çw®¾)õ=ý,\ºµÖ.ß_9SÆ`ºŸxœ•ŽAjÆ „÷žâ] Á¨1¦”Rºí¦Pz€§>ib~ÔPrûúC»oW3Ã0S3¯Œ\©µ’³àVÏœÏÖE£×rvF¨0pvÃL©/9‘–ÈQøD˜wÁ8ï¬3Hèp’“ÖÏº^)Ö^ÎâVxü¼‹ÞÞÅsL•¶Þûj4bäFÍÐqÍ9kîk¥ÿÔ‡†Ÿ:{Ë-†pä+¸#•X*%w1öQ
îô6€=ÚÄB0y(°ž™
|­”ÀÇrÛðŠiæ[-=cïqIä»#„Î^¹É¾_Ewf™xœŽKNÄ0D÷9EK¬üm	!"1;fÃlw›D$ö`;Ç'3`ÕU¥zªî•¸RÁ‚6ˆÀ“‹É×¨dL†[–‚¥5ÃÕWÊ¸áäQ‰H†	)0«µ¤¨¹—ÑF£çŒ9õ×OI"Ýí5&Ë¢p¨•6Âiu8+,Zg‚üÞçRá‹–>‡½Åžïút7¯Kî´žbÙ^Ž—µe£Òr„G626é¶ôNÿ£‡ÕO‚ë¾®Pé{§ÖáÁ(HµlÐ|Fª¡”íióí˜†	‘¦zl¼/yÿ%·îøvëûRrƒ^àã<½]Î§%¥p£Ÿxœ•ÎMJ1†á}NQ{aÈo'2Øâìt£'Hªª™@'‘t=¾ãà\}¼‹¾Ñ™AY›æIË)$$)žq¬Yƒ«WA®IO&xñ;×Ê+Žd5²—ÚhJ:8gŠz—”’r¶"ãÚ:|ÄJÜá¹µû=žr]·öUÚÈ­žêv¾pANÖø òÆ¶Ròü?o­ùób!b‚¥ã^s=¾!×}Äm»o?ð—î0¼_–—·Ë©ø,÷SÑ•xœËKN1„á½Oá]V‰Úã¶{ZB±EÂ23"™ Ç‘8>€å_ªotÀ&©!œYKõª‘gŠRœŽ«P	Ù|¥ŽmX¨*hN“ˆfVi~râEp¡(¡´Tþþìk›<’0§ÔüÜÔ#æÖjÞáìX‚z“îc¹vû†u,öõ~+‹}ú|Ä)?âeÝÎ§r½<[ÇAT¶GŠDf_/ëø'7ïè°¹§mg‡_vlë7nóÎ0XGxœAnÃ E÷œb.`0¨¢(ê"‹t—ž ÃPÓ8`a\5·¯Ýö UW£7š§?¿Dè¸V.©™ŠyeB?hî×|UV†^‘ÙL3ÊSÆ¼6*pŽ>Xã¸È:ë¹AåµT–ØµŽ¹ÀÆ:Âóº¸·Úa‡SL§Öåûöh£$7ÚSJ¶í=ÖŠÿÔÉ9~nÅš!V˜ó~YÀåôe‰9rÅ9—Š¾Op]—§	.ùáåO¿ó}‹h×Û‘¼Æ·´9„oë‘/È×q3xœŽÏN„0„ï}ŠßÍ¤@iÙ1FOF£}þ™
Y(›¶ì†·¢ñl<~“ù&“#@]'­ë¼pÖ»C£tnL«ºV
Àhn%4;ëˆ©áÜèöÐˆ¶F]U¢QFo¤!•òÜ
ƒÓKîçHÏrOK²=Ýžv(Í÷CÈK;OwT‰VÉZH)¨àŠs¶¥Ó3þ©³÷5Xºîæ¨3R¦bÀx“èçËàà(\&ÐÓÛãÇKbì×ŸÊoƒ"2éà(-&­)cúÎÊmøpÅì}aÖã_N²/ÆvO”xœŽÍNÅ …÷<Å¤û6\˜0Æ]ºÓ'€2Xâ-4…&úöö®Ü—ßÉùë;3X²Ò£A)FV[iÐ*Bš½UZÝ9dD¯Åæw.‚¡hå‹JIv’.ÉÍhXY­“"ãˆ(ô¥îðÊ¹/ð|´y‡ÏLáO¹t¾Ns]á‚dô¹£4RŠS]sïüÏ¸x©¥åÖo¾nÐù«Ã±Eß¹	ñÆélîr<9eÞøÃ/Ë™÷j‚¡ø•‡Iˆ÷üQ8Ž5¥1|ßÿå›ø›±p›xœMNÄ0ƒ÷=Å“X3¼æ§IB\€3 —Ö!U›vÈ¤ˆãSÄØÙŸí…[ˆƒ˜ÉF-!Á›hƒî°¶F"’HR53bw•Š­‘uÖØÞ Qç£öÓ ¥<8L)xNj}4øëGß§ä`ü€Ñ‘õ€4öF9-l”õvàB'GË{¥sËñ¸™^îúr7oóÖ°^Æ½¼Ro¬sì‚ôÈŽ¹;i™[ÃÿÖÝ;ê'èz¬+U|¸5zpŠRÝ-y_‹l·e^òS‘ëG’yÅÔuÛwÁ3¥ù‡Z•3"Ôz3Æå÷lËŸxœ­ÁJ1†ïyŠ¡'Eº$ÙM“-"‚GÕ˜$7´›”$-öí]Kï
ß0ßÏß
HäBŽÁ¡¶^im‚ÕZ Ý`¯„WÒŠe¡3=;b¡ÔÀjåwVãè¥ä4r%ÂèMÒô}JJ)ËðÔ¦\`×0ÅzÀ3¼Nù0cªû¸Ÿà±þðnÿ‹?ç‚î@ËóˆAé1Z(xà=çl¡slþ×ÊÒy¦õ±ÄÔ¶â' ´Ë13ör#ÝàEÁxw«÷J@ÉGL0åÚÀåt¦RcNÂRøv[®îÙb.ÙŸù›»ƒ·)VX¯‰ßmÂÖ1¶‹‰ü:‡°¶—íŠ²/ïüŸüà
xœ»Ïü‰I·¤(5UÁ0ÍÈ8Ù4ÑÈÂØÀ"Å455ÑÜ(ÕÔÐ,ÉÀÒ<Õ8É4%Õ 9Í$)Ål¢n9›¹¡…áÄU:–‚¶±W^Ynª•BZf…BIFªBnnbBjQQ~‘BrFjröäÉŒ> X¶!ó˜xœŽMNÄ0…÷=…%Ö3$i=nB\€3 ;qhÕ_2)‚ÛFBìYùùÓ³ß+Yë|
L‘¨OBdY.Ü¢èÄÖÁ¡o›³®„0ö&vÞGçŒzƒ6ùÐ‘º¾m“Còˆ(¿þ(®í%6’j
9L°KQ‚aŒìˆ>Ê°e˜t,ƒ×0ÀãMŸoËó¸Ïa[žÀvµ¨©1N†Œi*]ÆRô×Í‹æ7…ý˜gÈú~èµÀYHy[`¶yáõ:Óp¿~,zÚs}öZ¾ö­iþÀ¤ñ~ø76ÆlÃžxœ‹MnÃ F÷>ÅH];lÀHQÕUw9Ä€gb~RŒ«æö­"õÝ}ïé}½ApÊ¸Õ	#T˜¬¶ËÊŠí¤Â"”7‹"oÉx5wlT:Ha£µ,4¹I9Ö+29­¥t:(çM „ùë™y$òz‘¬¤6Ú/§Õ¡³óâ‚˜YÎVø¾Õ7Š}óÇ68?÷é	ï±tJ§PóÈYÛÉJ§,ŒÂ
1üÚ{§ÿ½‡µ+ÁýH	}´wx±¸Õ	oû–cÁ†,XÖ×ò•i)Ž¡Ž×aøˆßp¡\ÛájÆ˜ àNP²?˜©ý ¹Žsžxœ­ÌËJC1€á}žbö‚ääqQ\i_¡ÌIfè¡¹”4ìÛ[ßÀíÿ?hëÊÈè²wŒÑc©˜RÈJÊÅyý£¸â 6!¸Õ+¶Ñ­AÛ¬BòÖ§`’6ö'ÐNi‡Ì‹À}žû€‚—Û¹nÞ±aËðòñK§ãŸû[¦RžS¯¯°ëµqÁ.ð$­–â¡u›“þe&Þ·/ø¤ÚÇ
ázÆ­@ÂAg¨ëÎLC|CZ•xœ•KNÄ0D÷>E_ £6nw„bË0ò§M,°2ÎHÜžŒÄ`ùJõªÆ&½cY˜Ùæ ‘4wXRŽ†1QR_~“6 º£k³6l™B\03»hÂcfŽÞR~kßàEÊXáy¿Ä>np
7x*mÈç)öúšì¬ÎVÃ„3¢:ÒZÆÿèÉýêêUj¿
ìm¿H‚v­rö©–vŽ5AiûVýPê­¼7ISÏy
ß÷9S?Ja´›"xœPËŽÛ0¼ë+xÛ“ÉVìdQ‹½öØ^zÔƒŠ…Ø’!*	ü÷¥Üý€t ÅágjA„ÞKï”
#êëhÇarü¤5
¯^šÞåœÂÐ‹ÍL0\†iÒ×^J«/ÚžÑ‡IÊzÎS¯ÃUŸ/—±æQç\àÆ:ÃçƒÜ?î­9ÙÖ|ÄTq9¹¼þ¥Ï“F­Fè$“	þ]c­øýu5(©Õ×ºø×m‰ašó«+x#!þæä´ì=Ô´¡k˜:#$³"äpÔŸÑá	þpífSŒk‡°»dwÿÇð2ÄLOž$tHdÊ~²àÁÂ¢‘x‘€bjx|+,±aŠéÖ‚v
Ä8ÊÂ ·ìM5ð³ÆÝ_¦xö¸™í‚¯–F£Ï‹çv0$Zkáá¡EµÄmc“¡äõ@óþC.xjéÜú.‡ÐÙýý;‹[Žº˜$xœP»NÄ0ìýÛ¥¹D~ä‰Btˆ~ÀŽ×‰EbG±ïàþ› ÝÎjfggâŽ-5È›v0ˆµnX#$6ƒ’w½c× §j`´&›ÜÑEà½d]?H.¡X×ê¡¦Æh®)ï•áíh”lkÁ‰<ÇÙïð„6Îðpã·¯T*ƒ{ë".Õè×;`uÓQÑŒCI;JIÚ®6Fü¿œ	FEû%'ÏvÝk®à¼+å>×üzJ ×@ÈËŒ ñbG &dìâä
2w–N/ÖM`Rž8'D{‡ ®‰ð‰oø¾á!zXý%9|ŽÙ®àÑ…ˆRŸÒ¾Ð  6åLœ#Lý‹pxâá¦rŽôÑî/Vç?òµ¢, ØÉY“ä$[ì(g ü€œ%G5øÝ÷¹£*W79Ô¥7¦T×›ÿôO> Ñ¤Â³ŸxœMjÃ0÷:Å»€ÃÓ¿Ji»í²'°ž>Å¢±l¹Û' Ë¦­ ‰Éˆ5".Øhœ×ER–è{ô%„à²º+æFîˆÁë¾ ù>ël£¶È¢=Ø¸”8h1ÄžÕ°·qYéµôµo2ÒÛïé	un¸d™ÞI;Ù²‰‘:ŽÌêa§Ú^Ïµå£ÿ¹úÌ™æ¿	´Aöµ¶mWH-U¨T\²R?õ<#wK)]º^Ù¨;__’›xœŽAnÃ E÷œb.àˆaÀàªªšl»ì	€j”ÚŽl¼ÈíkK=@–ïKOï·UJ4>‰çh‘×AÐQ6)ïØ`OìT¸ÊÜÀõ-iÌ”ô`h`îS¶5>”„)†¢âÞÆe…/©m„Û¾åÞï'\Ò	Ÿunò{ÉËôh×&„ÞA§½ÖêX§Úš¼®#éÁê]]™aŽ“l˜*Ãq>NPŽ?›ä}­í	g#Î¼)õ]fán)¥KÏ·W’êg`bØ’xœŽ;NÄ0†{Ÿb.ÈÛ! ChEÁ	fì™Å&A±‰Û“Ûoùý/ýmc†˜
š<“ 5HÉpÈ1INâÝ„HBê7^›†lD$d¢h)e=šQ,Å|½s0(¼¶iÝàƒK›àíZÓOßôtÀKY_ú´ÎÏ`†¯íè‚ƒN{­Õ®Î¥5¾¿nœŽöVW¯)q­0•ŸKÝÇ*`ÎªR_ëÌù·ìY,—[þtzÿìw¿œÎÝ*ÒÑßã=OÔ?
kdŸxœŽKn!D÷œ¢/0CEQ¶YF9@M9khGòíƒ%À»zU*UñN)S>XIqu¤Ýš}´‘Jˆk1†¦öÙqÁC±ÉÆœ£&\ƒò& q^–Ü$,>h³À+o}‡Oª¼ÁÇu¤^Ow8Ä;¼×Æô{Hýüêh½ÔvUé¥Ó=Wfz¾®ŒœãºøÔrÅ[©·?ÚGím@™§ß.…øª?òÒKYâíå™Yñ*æfZœxœKNÄ0÷>E_ #·¿=!Ä±âm»M"Hyœ·'#q€YÖÓ+Õè"`r íœ÷èCÈÅZaB¼+‰¨Ä¨5Rbµs—m …Mõ×Èúb(G3¹l§b´Æ®cnÞe3¼·<Ãó÷.é¯Ë6äç’Ûúè|Ô1˜ôÙSçº.cÈã:Z}Eü×ÕGë{??À[ÚúÊŽ½ð›RŸË×&ejµNé÷é‘†úN±\å‘xœŽÍNÄ0„ïy
Kœ·¤ù„'nË‘»“¸ÛhÛ¦¤©àñ‰Vâ8XãÙš¯U"àIròÒ&¹•ðÉùdtãÄsbä:°+m(oEÁXÒdVR
¨­šŒÑ4)›0ˆôwF)'P9ïÒ$#F™¼V\ö"ïS°<H7j†g›K…;å6‡óˆ3¼<öáaÞòÖhbY_aTÚŽrTÆÁ…[ÎYO×Üýï›]©ÞösY Ò×IGƒ'caªe…ï/­”åx^ñèŒ½çJPö–Ëq¦xÏÛ¦ŽÞgÅ­@—Nðñy%8vŠ°äÎw¿þtÔ”xœ¥ŒÁmÃ0 ÿž‚ÔdQ–¢(Ú:MQ‘ÐØdA:}t„>ï8m"€ŒŸØ¢ˆÇÖYÌ9å„˜PÏ6X©»P“U£°s0zž†ïÂäfŸÂh‡8.2¡ttÕ²5øh´¦m…/.×ó¼ÎÜïO~/§]{Þ–7°ƒ‰1Â‹	Æt‡]ªªüçÑ}ZO²ƒn·¶B{à"üýÔM”êú¨7j	ŽÏ…´Îõ\õÞw¿¹K]¥xœ¥NËJÅ0Ü÷+ÎX’ô¤IAD\¸Óàþäää&ÜÛ¦´¹ ~½A?ÁÅ0ÌÀ<Ú!m@rÚsŽìBÍA[#f-.Z7-^;²5ˆÞ`˜fN†ÈiòJt"$T„IqGõ@÷–ë/m±nðÁù~û†Çð§ÇóW?çËÙF®ëh´NÎÂƒš•º»–Öä?Ãkù’uo¥ç9_ËvÔu¬Ô UèÄÞ?ßÎ]n¥ïžãðÝ¹\8œxœP1nÃ0Üõ
n^’@²-Û	Š¢èPèØ~€”(KHb’$¿¯dèX”Á#<^ŽÌÐÒºî´lU]k­ÐX$\KDX7²SM§Ä7Fž2im´Üïí ”´ƒqšP¢rnm=PmzC.ÙÏ>8d¯K2žŽk±£µx	SæÓÎÌçgP­î¥Òº`+{)EAÏ!gþ']¼…k˜F@9NRÉŽ1/‘“_žïÇå¼>çŠ`¾fžR¸0X6³]÷¬pd´Â)ä„Õ{%"f_$fT¾ÚÜ/áï[pÁÓÂ`Ê 1È«{ÄÒî.Rzqu—Æ³9î„øãÄv;;·¥Ûá/ˆ…•–šxœŒ;nÃ0D{‚+Y+~–dFÚ ‡Xj—–`}‰
rüHMf€7˜7eQÄAt˜] í’ØÐfväj	É0€Í)W/Ze.*	f	Üš)’dÍ¡`±E“-€FÁàÿöÚ·Ž€<øì³áÌ‰¼XÇL^;±Úeˆí¥_Võ)CéÕÇ¾u½zžpM'Ü‡¹Èxí–é¦Zë0¢Ñ>ª<@u´ÓPŠüS¯¾d}ˆJ+Í‡v™h;®.jÉª/åµ½5Íã8ÚÓ©7ã0ï?õü=IsFÝCõ®íf÷‘xœMINÄ0¼û-qfhÇíMBˆâÆ#¼´g¢Iâà8ÏÇ‰p«½zc†DjBk±Ó‰r.ÙFcr1Ú2"¦I–X&]Äo”C©Y/1’ÔÞŽ\1Í Ã‘Ê+Oö/ÏÑ[ƒ]É™“.YEŒ¦¨INÚMTÔ¸áì·ÚàÎs¿ÅóH7x}àËƒ¼Ï[çå’êú’´ñZ<£EC]çÞùmñÅíÊ°ŸË¿O>:<¥Õ–1êËŽ1/Äçü{«qáõ€ºÁÇ9l°‡tWþQÍg`’/xœmRÛŽ›0}÷WŒÔ·ÕB	DÛíö*UªÔ—þ€/¸16µMÒü}Ç$[õ¡’3gægŽIp§ÛF(…]SU¼=èzbË·{Î[U5}ƒZumW±Yt	”’|§÷²åZkb§4j½?TªÆºo%ïê¦¯DÇÄ’Fà±<|C“„‡'™³Ò®ÙË0	cKå§gØîš¦:tí®‚Wœ3B'“þwÀh_d(œþ!·[Þuw2ûb~Ãg7XGH×ÙGðÎ^û1štÜæCòÐSï­‡\>FH#ÂüOTéH#Q3Æzo­¿7x ÆŒFÅókBÙZ#·Ä”åSi‘’µòÑOÂéŒS”ÃýÞ÷F	›á54Âf¹“Oæ,’ñ$Ž†˜)/‘UÓ‹ôOâ„7lê$ÒŽ¡'í¹(‘§ìBwÆ­›}Bi„{]°„÷äH¢YkÕ—rY¨N$ßÄ|³%: ¤_RîŒxwm‰ÏÜ$ˆ3Zš1ä†…q­8“ª’±¯	.‚l¶ÑCÀ_ÆD²ä•®ã.*›èÉ¾©ýë91Î/G6¦4Çãf#—!–zå•>5˜B—ñ€³©$äeoé×àuý¦nÙÿåüç‚]xœU;
Â@ ´‰½õ#µÊn²¿€WI±Ÿ÷0‚nØl¡ÇVÚx%+â	Œ……ÍÀL3ïÅ}Þæ„^ÔÓÚ
4Ò‹(h§T %52Æ|ÅÉQ%©èmÂS«µpL'_Ù@Ò	c¹ýÒ™àˆ{U;?¶|©YóFÁ†ÉñãyõW^bg!_zëSÈ{„>Åú¼Jñe¦gG˜JÈ±øi7ùöú˜=?›>·œxœ•1NÄ0E{Ÿb´5	vb{	!DAEÉÆÎdm‘Ä‘=ˆÝÛã $DIùþŸyŸ3tF+×¹iVØ‘žPëQI;¨Á÷óLnžŒDGV‰3mý •A}®WN+3Z’”³uÒV¨êÇ~ÔgR†çú•à•"c‚wP»|ÓÓeÅ¸´>­ ´éªr0i¤5]#3ýC`G£¬1?ñ¯àÓ~Ëñæ¸o`"q»ÿ[Á'ØÃžÓ^G}&dºƒšfÚSfšÀÝÄi‰ž¶B>‡&CÓüzÚÓ1ø€Û… ­8Õ+p B‡Ý-5mÅf¹y’xœ1NÆ0…÷œÂËß*UÓ6Ab‚¤‰ÓF›T‰Káö¤ˆ &ëÙïÉŸM	„j”Îè^ŒÜ5RI)Q­µ2Rë,jÅ‘m:a h%o:-ÕðQ4’‚#ç®y_D™4­j•˜ÞiŽ	^ÐÓO{63Ü]OQ§xðp©M\ï¡]¯ú¶é$T|àœ•îê‰ðŸqöê³ç?13öÀ”bÊàÐŒ°Æ&ˆÆì	mï¥—-Aˆ¡Šù@§i_ËÉ™XN¿!8bº–Ü¦°CùGFøõ¡W,ÀN3¬>Ï:ØíJ…	‰9ÔTÖeØ3ÚŒ#Å“b3ÑbÍØs\ì‰U g\6 ü$Ø7«	s¿ù) ­¢sÕøuû—Ï°oò9ž£–xœ±NÄ0D{ÅvT‰ì8ñÅ'„€!  ÑÛÞõeEâDŽsèþž\A¨Fo¤Í”L½AtštaèTcÑb/]«L‹VcÔd:±¸L©€³J!ö±ñrWm¬	ÎE(½é}'e4Áº…ÛÊ0gx&.<nkàöë
µ¿Â=§BcæéTÛ«m5Tò ¥ØÝ‰K¡ÆÅ"|g.[
sÎŠó#Áµ×%âcàu§Æi…tž¨
#ß¬ÀÓ2Ò´?åt:S¾ÀÓÛo8A^?_H¨ºu¡À‘ƒ+<§Zˆw>%ÂjŽ±ò—ã_Ö‹àO~ÁžxœÍNÅ „÷<Åy€Ûhù©1FÝºô	(nÉ½…¨FŸ^Ú…kãrÎ739S3"Œn“P’I;hÏ5<£“¥LkÃ¬ Ú¢6ž
²™Œ±‚QF*1L:Í'D'Ñ(1j.é<¹’Ü{ËˆÙë’2¼a¨¼îÅ.ðx;D?â9ÄŠ÷Þ¦õ	Ø(ä40)è¨¢”´ëjÅÆÉ‹sð™CEøÆœ°ÀQh¢k¤@R!y¨K(XÓGˆ×&¢Y±lÆ"˜sû~i¡ûÉ˜³%Eâ÷hkHñ¦œ-ÍV`Æ†ñ×·PÃáë	y×ˆ®KÞwó×Ã_V‘ª¶…ù’xœŽANÃ0D÷>Å¿@,Ûu’T¡‰bƒÄªoû;‰hãÈqT¸=	\ ±›™7#MÉÌÐÕˆ#¡q­ç k¯´Á.ÒÁG‹„Þ1…FÌ”y*@j¥-Ç¦A£º:¢Ñ*šú`uŒ®EÖŽ µ)Ã+e€§uñ?v#ÝnNãTø*}º=‚¶uƒ-Ze¡R­RbKoc)üÏ¹xþœS.0ç­u¹§.÷LóÌA)%Ð`]ÊÀ°Sø¡ãÔÃùíJúÂ5mÉR6Ý/Rˆ÷±Ÿ8T)ÆÊ}=üå™øe5q¶–%xœ‘±nÜ0†w=·.=C>ùNç¢(Š¬“ MÊVcK†$ãà·u’5è þßO•Ä8ÜZ:wh¤Í`®Ýà.8XÍ®5½>·&‡­Ú0q(pÅû[×÷­ÑÆÙKßvÛjc¯gr¶ëz­/ÆR§p/sLðÌ¾Ìð´çq†ßoµh†Züõ¡ðÒŒqý2âz³ölnpÒVk%·«/…ÿS®^üº-Þ€iÚ×Š-ôÙ‡I©×ÙgÙàgÈ‚X ÁÃq+>¸Ê›8D(3C–òk’œt¨áÎ@1ü(˜	¤—v1±00
î£±‡!."˜cYÈtž³ªãg^6Ø’Ø	àO¸Ï^Ä3’`Á(Ž_± Þ8‡ñ ˆî“HÅD,ò	þí¹TÇ0	™bØÔÔüa++Í\öV|«%f/·"C"Ér¯ÛYe%¹©‹œÓ):wŽ_ßùõ¨mÉˆšxœŽKnÃ0D÷>…vY9–lZŸ¢‚n‹‚”ÈØˆ?-=~åE/ÐÍ 3àNÞ˜UKNz‡.Pb\‹±‹-¡XmÐzg:o¢Mäªn¼de5àØ¥ ’5M>·ŒÞv,)þÝ'ßu6J JQ:¯Ù‚F.ïˆ&0yX7õÉcÔÇ±ÇA½?Os¥ÓÜÇ%ótë|Sú2Í™T­ÖUIç1gþ'^}ñö`E.»Ì¸—ª‹ZE9¿ö·¦y”¢ƒN¼™Æåø©—ï™›Sê8Õ/k„gêŸxœMJ1…÷9E]À&ÕI'iqÄYºQÜ&•ºÁN‡Nz|#Þ@x›÷ÃOf°dLŒˆÎ¦@:OÉ8&2Ò”7ÎN{UãÁE`Î˜‚'¢LD“çh­žÃäÙcHé::Ù¨x“e?àM¸.\à)
7¸ovH¿ö±nÔÚ·@;¹ÐåÜi¯µêé¶Šðÿ	êRsßdx=Ÿž_ÎÃ–•:åÜáoÙöÏÎ—…¡ð´[­û!°¸”µ7áÚ¼sYãÇ ~ Kî^’xœŽAŽÂ0E÷9…/@•ÛI%„ K63'pSGÍ¢¥jƒ˜ãSÄX¾¯§¯WUàÌž¬g'„C”Ü¶©‹>F§!8¿÷98D6³,:UØ«Pg&fT×JèÐcÎJ>Ø^D‰ûÐÈ£÷þªÎƒNp‘ª+Ö6ÝOó˜Ö&ÝÇ#8$ŽÄìv6Xk¶u,µê÷æV¦-à9”Mœ%)äòe‚ßëùçvmÆÞ¼ ìVN¾’xœ•P»nÃ0ÜõÜ:%kÉrŠ¢(²¶S@Y”%Ô‘™N¿¯äÚw<ÞáÈ…Ñ -z¥dÓõ¶GédÛ{jØzg¼ñÚ!Š%†GBmeCC×)ÒXEÆªVyOº5²
Iwn0JàÊ!x£ÈŽë2xþÙÀÞnà5&¦i?äÓ4Jw}gÔ¡‡4RŠÊž"3ýëÜèö~.¾g‡LàÈã:1œ©,1'!¾B\`	y<X¢ëMí ¦)&‚Ë–È€q¬ê|›ïàãDâ²¤®3%•¯n1€0F†Bs^"çrÝñQA©ö;{}‚cýa†÷Ú³øŒcª|ö~Ûý¡©øÀ‹h™xœŽKNÄ0D÷>E_ ‘;þ$A!–°dÁÚ´‹üätæöLb=»zOURIfkLð–kn©:vÆ·È®2T[‹öfc…-©-d^\Ë½‰Öa±vTSà
»:xj*ßÇ&Ø	U8d\3¼q’^Ž½áñó„’NxN‹ðTvëühwG(t­µºÙ9‰ðýóÆ¶Nû¿¹ú“ð¾…Ž!¦oÞ•z=vÌóú•–$‡4áò_Ü!,=l‡Èé)ÿªËÈ™AF¾ñ´.C©Ô{î‹5Æ‚®÷T?Ê|uzŸxœPANÄ0»çó­’&í6!àÊ‘L’)H“ª‚ö÷$‰ëí[¶y'PMZißÆa/õÕŽhƒv(•qZ«‰´vÊŠwÊ$%NnTÊÌÂ`ÇÞM~$g&oY¥Hû`ž¼”Þ(ò¯çáxül s<ÇÌ”:_Ö'Pf¶¶·p‘W)Ee×ÈL÷Ë'c9þÉÅû–"CˆÇ–ð{99f:`ÞË
>E!^Rú§yÁúL¾ÌŽ¥|W’  #ÔÚ°–/
ÀZ´’aŽ‰ÄAudú5nŠvm©C‹¸Ïè©«‰âG¦p)ó|q·‡{j‰g6‡b–xœPAjÄ0¼ûú@‚8±]J)½–žúG–6¦Ž½d½ý}²zÛ‹ÐŒf4Bu'‚1 GTì»Ø…íl˜R“Y:3°žÐ/‰³ß)WPF¡V¥vÚÌÒM~dÊ:´cnãI­kÙáb]áízÁž¿Ð/x¹Rê±l/ ô4ëÑ§ “FJÑØ-ÖJÛ­víâ»]|žS¬ÖÇ.Ÿ¬­¤˜OÀ{Ù Sâ£Ü"ß6º‹ÿ‹êJöÆ6QÝÙãoWÀ‹µ·øJÀ1Qß‚ã)Sè
s·|?=r½øþ?b“xœŽKNÄ0D÷>…w³ÊÈqüË!K–ˆØíöÄšÄ†¤ƒÈíI€ –Õ¯_©hFäQgô€j@ 1uÎØ ÛÎÊÞ$í4ÇÞüŒ…xÚAêm2Ê·¾U:I¬°Qx „‘¨ó+uæÏ˜iàë¿»áŽðáx†:Ýó½Â8ÕKÕòFX!Ø~2þSgOµ,y¡c/Ôˆ<ÕyòD¹\{]0òS.ñ Í˜ËúyâTùûšá6n»P>pþÚF<è÷ß+”÷ú3c/ùZ065¥&l—¿Le_¬x'”xœÍNÃ0„ïyŠ•8Sü³Žm„•è±
`{7MÔ8	Ž#^Ÿ¨/Àmf43_-Ì ¥'ì4+éD¨´4JXƒä0j!˜…Ñ,½h–Pxª »ä­¶¨¼÷A)©¼i]gRçD‹ÈÄ”´}l‰Ò~muðÞ%ù$ÛäÐ’è‚"1MØj?¸ñPû¸­©‡—»>ÜÍÛ0UiÎ¯ q"ð(¬Ížæ¡Vþßº9s¹2,Û8Báï×
­„®Ìò\â@eO9¬;¡i>NÇ÷óééŽDP{†yáéòu9Áç–ãÈ?ÌKH·på_qmý›xœ•Î½NÃ0ðÝOñßQ+%¶«
Q‰,H,¤<€_š ±£Äâíé Ìe»áô»+@B¸¨{),^K%*ÉM¥£ÕAqðJA8Îf¿ R¶sF-s^J!]UÛ¾êzËk­;eó[òBOyð)a¥ó°Më0.‰Žoå7?¬ÛŠ}Ä=	}U®ƒÆÐœ³.OÓX
þMHSÿì¥9=>7û)è#•”g¤öµmè¼MáŸ@¤ÙwïþÆn(QÉôÇ2ÖŽ—„¸Ë}¿_‡[¯²oÊ“x‹˜xœ•ÍNÃ0„ï~Š½õÔÈ®§­Ä#O°ÞÝ4Sü#Ú·'E< ¿ÑÎhvjë;ïØä¸'Þyêšœ7ŒìÌ@¸ÂÞYuÁ,©‚ñ4Ø@ìÀhìÑËNGÄÞPÀƒÕ¬¶:-Þ$Ö	^Z¡	>îÐ…;<ÅTåÜÑ2?‚q½ïµö;[=h­VuŽµÊ¿ìû¡ÿµ«×…Ú,	k\Œñ*E©gæ,%¦ÔÛe)€‰a”/(-Ô³@L´ä,T¡<Ié`£¯ˆë)dùl1«K–5Æõ³uŸ¸I®Ú$—N©÷xJÂÛe·ávüKõP·tŸxœŒA
Â0 ïyE>PÙ¤›f#"âM<ú‚4»±Am¥ˆ¿WÞ=ÎÀLE´EŒèÉE¦=HbÏ†Úˆ,'+‘‚%Q÷8ËXµAÓå‚÷LZÇ–:q ¦‹s¦DŒ}§â£Ó¬Rê ÷%zsùÂªÿÂ®ŒU®«4Ý¶Ÿ§ëÁ´F7àÔÇÞJ­òî Èÿru8Ó,zyÞu.WY”:•ó(ÜL97ýkýÏV½£7YŸxœŒKJ1EçYEcŸ•OuqäÌEäS±ƒý3IƒîÞæpvïåž33°ÉŽBJìI)t6ë‰ƒD9!º¤¨çäWâ·ÅK[¼µd±\ŒÁ¨ÙùddFÊEe*z"£ýß?Ç(#9é)-‰#]¨Iˆœ´Ï™X¤6"œcÞ|rs<{šáùžo÷òZ·ÁË-íëHC¤¼4JÁ#ZDq­kƒÿG‹wnÇ¹,Ðøëä>à”¶¯°\’°?­¡_z!Þê7dŽ5lÐS«Çè¶ãçØû/®gu“'xœmÍnÜ0„ïz
>@í•ÿí¤›EQ @O½EAI´-Ä–IÎf>|¹ZäEÏ7N
DPÕª,Ä¾¯å(MÑr$SWeaªnèF”¦mI±a — îÇj(›rdÛ²Dbƒºêjº7Vƒi©")pO³ð™)ßÉ&ôðQÝ^ùr¼§í’k¿>@Q7e7mQC&)oW›½k0/*äV­ÿá¦ìe×H†K†ÅWûéâÁ²èNÚ»ü6Æ¢ß\0B Í‡DÔV¾Žóz_êgñëÃa²¯Z#\([&Ò	tFûBæNÈà­þ™ Í9`:b‰qCý„Ó:Ø-YïØ}f¡Æ=r
ÁðV‘Å«ó[´1[í4§Ìù”)Ê¶9 #Û(,×üm€ƒaÿMN_aä›«vCÏþü‹¸A‘uLä(àí*Àm˜ùwœYÊ>‘Ý¹
˜SÚâÝé¤ö)æ¯½æ>L'=ÙLYwÛ¿ö™óæ¦t–÷kœÎeuÏŸÎ}!eU‰¿žÍô›xœmPKNÄ0Ýç>ÀP¥iÜ4BÃgƒàù8mDšVmFˆÛ“ˆš…Ïï'»lD`JúN(aè[t'Ü0h9(/¼³Êº`Ùj6Ê‚nUÐJ¡â4Jn;´“­çèƒðºe§™¹”iÙà©ºx§XÌ÷ö@Mº¢ó8›˜·ÌÐJJ·Øk¸ãÈ9«Û9–B7¦t¶[íügF1p…¼šE5³çÉä1æÊDàÉF“¡–åR‡6Æ½?Øùk§ÀìWÝËÝ	ö˜Á[íž þ¨.ë^62óï}'0ÙÃ+|Æ”ÀÒí õ³÷aFjØ7R¶yt‘xœKN1D÷sŠ–X'ø×n[ŠaXÀŠøÓNFšñx$ŽO"ÄX¾Ré•ª7fÐ"+S+Qz“TpL–Ä2%”FêXØ54^:„h=ê¤E‹*yM™•pÖ{D_D‘
†‚ýÉ¦ebt¹²ÂZ6Ê;Å‰””Q7„½_×Ÿë•x	78m¿xŒw|®sÚŽiŸ@4ž,iAB·t{çÿ†n†ºO4þÚyëð€J[gxÖ6†åÇËôXCO×ƒ†sÎ°õÐî³yMPnÎS~—ýû#PmÊ˜xœ¥MNÄ0…÷=…wˆÍ´iÓlH\ÂMœi¤4©§3s{2Hœ€e¿ï½'s$‚¶Ö¢3‚D«e3uJàHCOc#5êAÉ¦kÚÙÐXmÉ3àÜO²U¢æ^
5µƒ&Qý4I9™ÚÔó`$Yaæ%Døp!ZôðIöäàÅ–ÛðvÆÈÙŸ’!Ÿ˜âAÓ+4ìF)Æ®‡Çº©ëJ…uµ\Îÿr©Þµ†ÄEZŒtP`J­w·YOßÖçKU}ÝíÖ+—5iàs€[2ztÁus”žÀÂ6^ïøÀÀ!ÀšÕ³È‡²‹+:w…BaàlŽ×"ÜƒÕ“õ'(!ûÌ™ÁþYEú=)J	B–—ÒSÊë¡â5xUžà‹ÇÑï+=Àóý1œ—/xœKNÄ0D÷9EK¬	¶ãï!@»làm»=ÇÁqîOFˆ°¬ÒÓ+U«D,j‰‘)QVe´	Ês.˜JL$ÎÉu+VZ \Kã%ãÒ«,÷‚û(pàÌ!"³iðäœˆ–y«œ“1Þ|ÎÈ¢LEpÌ%,u¸·©Tøl´N´À+6Úàqû½¿Åç5‡­%?—JêArÍàžÆº£Í×Öèÿ†n¤z!X÷y†Jß;mî”‚TKÌóÞÊCÆCW»îãüò6žûO0/¯e6¼S,aÅð…úHølªžxœŽAnÃ E÷œb.àˆ1`pTUÔtÕlÚ08È1D”,rûú•ºû‹÷ô~oÌMš¢4>ÎÖ8Œl0q”&É1™¨ywj\:X¿#8iëµDmƒ3ýˆ>Ž¤PÎD$]RŠ=úµ68•ø„ÏG¯[n?k†—Û¾ßVn…o‡Ú–W@mô¤”µé¤¡n[îÿ%‹¯óéýr>lñ—ýp®ú•áƒcmw
+-,Äw^
Ç¡¦4øçñï’øŸ¥^ ™xœ•PËNÃ0¼û+V½p¡‘'NŠ‚r@R‘ |€ëÄjjWÉ†Çßã á²šÙ™Yí.ˆ`!•M£ŒD)’e.ÕÆzS¡pmÃ…Õ¾ì¬GŒÎ(ÇKÞŠš7hjÃym7v£«Ò£iK[/¬/Ó3õi„GÔÃvžl×Ç…f!·!…M§U])Þò¶5o8g¹{
Dø¯x%åOœÝ9«û§ýáy·}=ìö+ðaÀ‚±$
±ƒ#Žz€qpŸµ)ÒÌ¼Èìõ‹/L`{»Œ/!‹£'}Døq‚Í€zM¿†¤˜“:^¼…4hÂl@˜’§÷üHÈŒÓ÷F¡‹èÖÉûµù¼úËÁìûi”xœMNÃ0…÷9ÅH¬[ü[{$„¸ g¨ÆÎ8±šØÅq½=„Ø³{?ßÛ¼Þ˜AZ#ØÚ
ƒ–Y^¹Ü˜HI›¢Õ#ŽÃ•—è2J‘,iFÄÖ8?jŠËˆAkÿËGk‰Øˆ`5)Å'â“–•ºSèUòâÉ´÷¹6¸pîsØ·8ÃÓ·>~›—\:/ÇX×gÆjD©ƒƒpB÷tÍ½óÿÖÃ+·‰áº/4~Ûyëð`¤VWXè²Ík.ÔèF…ÊøXÞW>Ä%b-)O_óµ¶,LHù¨µé§=ß_Øø¼í¡^ûyë-—	jú>l|Ì”xœ­AjÃ0E÷:ÅìAò(•Jé¢Ë¦W#ä˜ØRehn_C)½@·÷üÞR².8:Ä=GÅÊÅA!ây0ZÔ[*‚„`…59ÊA¢v3Ö»€&fG”F¨xï×Ú`áÛv]çÂ\¸¼|ü ÿùËüûþ&iYN±®¯`ìºqOúŒZt{OÿS—´Öö€%ñòüÜÛkÉóä“[òÛê½û­·¹LPóŸ ¾Þíe\œxœŒMNÃ0…÷9ÅH,º¡éÄÎØŽ„`Ãìñ„ZÍOq&ˆãÓVâìÞûÞV°Ž³5è)tŒÍÈÝ(˜™B4V:—;J„Í5VY2…ìúd†l%gßbðÎ`êd%PàØ™¿~¤='b]´Q¬„ý@ÄcÂä¼EôNRjâ®çµÂEŠžÓ¾ñ^º}˜·²¨L-¯ó+t=Ùà¨7Žè›‹ªüoÝ¼Ký¸îÓU¾vÙžÈÂX×â<íºž–ïYŽSÙ´i>ny-¬p¸C¸Ãè
¹l—íJ+-ÈO{¾}ÆªEËºl¿n”rÉ“xœ•¹NÅ0D{Åí^C"'Îf„ôTÀx¹Î³âåÉ¾AäïIƒ¢;ÅœÑDÂÍh&ƒã4Ru¼_ÆNÆÌjR½å“4ý€ì¦
&mµ¬âr–N[Ãgiœ\†Ž«EgÜ,%.B¦vºæÏÉð²SŽ¾ÔÍÃC8ùiÃ’0´¹¬Ð£X¦^34|áœ™£'ÂÿÈË·Ì^±Rñ†à’>"Bð•.@¬¯[½ßbøiÂnÎOäÉçT{¿ú
•ò­þ2]É*žIEÀ´G<Ù§T?*ZÆÞüšÐ6Ù¹F÷Ïg_˜­b—xœËJÄ@E÷ùŠ×3öûƒ¸pëGTWUÌ`2;Ä¿7üwç^îáö&9d§‰SÌ’Œ(.\@­…0ŽÁ#•aÅ&4û1Z_eëÒ(2gmI‘È³$ÿö®˜¤„•-#[£mb™|±Æa¢ã%Ç÷>ÕŸrïSÙ7šàvòõ¯÷G—ùJuyí¼MÁà¢¢RÃÑ.÷Þåöð.íC`Ýçš|í²uxòÆVÀeÞ{}f¡ÊrY·ax;Öú}üm»l°Ô&‡‹Œeþù˜l„ŸxœŽAnÄ ï¼b>àÕ`Ààh%RŽ¹åc¼hm°0›•Ÿr”[«»JêV™arÆ žÇ1ö
ŽƒT8õˆ²ÞFb”b£Ê¹ñAqo­ÑÉ^²;mHOžvQZ5Øà½ôh·Rá=‡>­¬©î÷×åÌow®™—K©ó+Hm”iFèÐ!
_Ö5µÆÿ’Åû¶È·ôÍ@9@
ËY•'×_ Ý5‚”÷Æ Diß:Rž!µs€JOˆ¥®!¾Òœ9t%Æn:^þ¾&~ LAp‡™xœ1NÄ0E{Ÿb.ä¬“ØF+%'˜ñŒƒµ±9^`oÏôHt_zzï÷&Ö¸`hDƒ¢.d=¹SŒDh1.ÈšOnæÕŽMJb¢‰Q{ë#qÐÖ‡èÝ4êÀdÆ­÷â…×þQ¼¾ÁÛµ×œÚqIpÞîûù"­ÈöPÛúã4›ÉÏnq0h§µ
5çÔ»üKV¯yoõS`¯_÷ÂÑ±Ä×°0düþ%,¡r*«Rïi-ÂCq Ûãß§êòfšxœ‹;j1 {B«5úÀã6äOOOYa­6Èr ·ÏºÈRÎ03*•Í9«B%’!ˆ	·.Q	É»lÁ'Øê“+N‹$“J.XŠgTñJO¨´TÙ#þõ6¢‰u4ÒGçJÈJTR'”¥Øh5ƒç\÷Áß©Î•ßž\ùåþ‚szÁµöIíŒûöÆ¥±Z‡å‹ðB°ÃnuNúçÎ>h|Oú±ÜëV;ø=/ý{£[]ÚŽÐNì®6a‡Ÿ"xœQ]kÜ0|×¯Xò~Æ¾³üB!B’¾´o¥kiu¶¥CZ‡Ü¿¯ì+…>ò8ÃîÌì,G"@2ÚK­õÞé©&ìÕ´²ÈtCÛh‰uÙ”âŒ‘<vòPõJö{”]W×uÙÊŠôþ€]©+’–²¯ºFàÂ6DxÃ1ÙÙÁ7ŒxA^ÃÝîø—;>-š¦©Pa¾‡ª–‡C×µu»²-K‘ÙÙ1S„WrláqIÊÂÝ¸‚bXÁƒóLÿ[ï4‡x7ÂžÝ' ƒÿ˜éxÆ”ØÆEˆÿ/ÃbÅ7aM=ã
n §)(dÒ+NÄìüI˜Ü¨^åÙt(L”¶}K^Ìîd&B²æ,Ã±€Ö%8#+»él×_â•‰ÄKôÌÕcñŠ]ð…?óeÙœq€<<ã–hsVÁk·NáCDEé—øîNžô.³.·_éUüMa»Ì˜xœ‹MNÃ0F÷9ÅH¬Sü{$„X±¢‡Û“ÆŠã×Aôö J\€Ý÷žÞ×3 ©(É²TÒB§gDQ*r““:±7)j‡+5®B
Á$èp)
‡qFo¤ˆ)hg‡È^ý×“·Zb´¨ÈzoŒÎJNJ“I²HX”~èèËÞ`åÜ—pÜâ/}zÀ[®Ë)îÛ+Hcµö8)£pB¿vË½óÿÞÃ™Û…áz”?¾ux²æ¶oPh½-[®ÔèN•jz®_±ä±ì‘Ê0¼çï\/pæmowø`Z ®¢k™xœ­ÌK
Â0 Ð}N‘½ I'5q!®ªW(“ÉTKS°·×…x·oñrÑH[*ÅÖQZƒDlò;o!Jå"ƒaõ $SÖ!†à"ôØ†ÈÆ#·X9k8°ÜzD© €¢%ßç¤kêŸ÷±»R¢•&š¢Þ©ùYsZŽQ†aËóxÐÖ• ¾ô¦ÒS‚Q»œå/™:w¯nºé‹ŒsZu-Ô«75ŒT‘xœ•ŽKNÄ0†÷9…/ÐIZ'M[!„X°aÉ	òp¦}Œšd4Üžq ØXúlÿŸþ|AgFÜèµ5
ƒqRëAZC&hlÛ. íÑ÷Z²›9hËà	I„¶¾y¡‚£~ð4TR(í°2)70Sò¼ðN1ÏðZ’›áéó„‹=á%n™–‹Û×gh¥BìZ­4BÁêv9ÓâÐê7ÎÞâŠ§;„Å\˜”âu[kýŸ¥	æœoiâüZÅž¾Ä­<ší¾?Gã–ÈcJ…—#cUA¾ÙChì×ô—bì
Qq™xœŒK
Â@÷sŠ¾€a2ßDTŒ;7z‚ÎL·É"’<¾o ¼MUÁ“…²uuÎVcI¹ôÆ8›8¶®.+6[OŽÙ¨l¶#[dœõ:"¶ÉsÈ›q6_G®²ñ
_ÒM<„æŽF8£Ð
ûõ‡EûÅã<¤µHÓp€ÒyãÞ;µV›zúÿA]û7e¸7§Ë­ž–EúñY¨%}LvžxœMN!„÷œ¢×>›¿’ãÊ‡ ™Æ!ÎŸÀ$_ò/à®ªRõU¯Ì[íÉg£ÎU6¥)å)Û„¤Hú(ÎXyï@‘#j›dˆ³&…”¥2Á4Ö¤Dhiô$ÿúÒzçg=+?6j"‰ÉÊì­qÆSšÇ±Ò^‹xõå¨ðÅ¥/tµ´Àý¡oóVöÎë-Û+Hc•ˆ^Â3:D1Ò­ôÎÿ[‹®Ÿçµ®PùûâÖáÉLë±Á: ñxÙbx!ÞË7(;ô…af*q‡–j9{û"¦h?xœ‘ËNÄ0E÷ù
ïØÌ”ôÝH»ŠÇŽpR§¦MªÔE‚¯'3ÀvHñâÚ¹×G	G"°Šê²ÓmK«±°U+óVc[©]jÙ¡X1’g0mS«\‘*šÁj[¨Nvm%«ªÓ–T£°±a®î<…Éà‰c€}VÙ|Qwã‚nÎLXn!¯ê"ïT«8ÊZJ‘º‹c¦ˆûa€´Cm&ô#Ía¢	™þÎÀ&ZžÒ‹¸¸1ø·…Žfvß÷Ü²"Í¸Qv:ÑÊð˜H&ÀíâL8žS%êŸ°Í	G:Àà†@›¿bX=¤óòüš‰ÞBß¬û6%§ÛÀù/œ÷˜zXÜ8¥¸ ÿÚ—‰Oå–~—xœPYNÅ0üÏ)| (M·¼J±}r‰,óÚðÚ:$éýI‹à øÇžÑØ3rŽ Á^¤uÚÈ~tÝ ¬¾4Êum©MÕc¼(e¬:bËÔ6²ƒlktiëQ¢7òÚ+Û5èÔ`Uh¡÷<s¤×²ÅôŸ5Ó£9PµœèyZµ_*ËëÉ®oäe†îë¾®EaWŸ3þ}@¼3mœÉOGƒñz{°³Þ&,<	ñö;’OñµûG~#Ž®Øf&³ûÅQžAAÛ›žPÑK*¸èCäOØ,n@H§äÇ€’>ätÜ9Ø=¤¡WJ¼G‹;ú@W¿ XÞ@|=Õ+§x³.¯>éº!dšQ‰oj™1•"xœAŽœ0E÷>E Ó†n3ŠF£Ñ$«,²ÈÊvVÀ¶p!2·™Ž”(Ë¬ì*ýÿë}Þˆ ¯Ò(ÝvÆP;ØîÚßG×4J*«•FgZÝY}	7
dÈÃ½w¨îr¸¡Ór•U·Ñ¶Ý G;âUI9ÜyŽ¼W„¯ä#|2çT/ÓË´¢_j×gh»þÚj­:	•ì¥e»zfúï ñÅÿGÆc Óûæ§™aôGX1Á™Ôñ}¦ßºæÝºgS^´³TùPxÒFŒf¡¼Ã¼¯ªÐ}ìÄ1ŸÆ~Þ"û0.K‰™ì)s‘¯àÃ·µ(b¸ü"{KŠ^,åòáÊM¿äú¤õðpŸEòYèíóë·þ˜!'²~ôå²˜™ÓSÓÇQ?:Öq›m“ÐþÀ©„W…mÇ%ÿi_=²›¶–ø¸î•xœMn„0…÷9…Ð¢iTõoÙe/à$¤‚gÚã7ÌTÝtWÉû½ï=™7"µl‘$º¦‘ÕwÎÔØÔ¨6lÓ)]·Z¬¸Qbp½WR¶½UZz?8[Ú;$¥<ÕJ®íŒÀ3OyƒçBex£È˜ád­š¯Ûã¸`œ+——(ª6F	÷RK)Êu‰Ìôï ñä=Ly¡GLBü‚m{Ì	Ê¼äÄ[žoFžÖ-ã¿Ð!¾’˜~ùg‚˜®’¿Iî'ï*!Þigò€#Æ´3Ì1ñá:2Ë;¥ËÎ´@Èçäï€.”à3ò+y,NyåRT‰oa‰}“xœ‘AnÄ E÷œÂhIÈ$RUµ]wÙ0Ô"p&šÛ—‰fÑuwØßþÿœ‰@›ï”5ãD£—½Ò ;­?)…“3šŒfŠUDÙi«&ti¥ñªí§Ë${Ý[k¤6þ‚Ý î<§Ÿu+ÁÆ¯æQ5ËY½_WKcÓúª×­ÇVIx‘ZJQ»k`¦ˆçÀ‘	á@¶3ø°ß3'ˆ¸’{J!×þsÜ…L–S¾C(°—:Å	ìLö|½Q¤ƒ²¸Q.!ÅÉÃ¾Î„+”äù¨ïôXÄ[…CS“0ž.qIè 0_m,•‚ùÞ@eÔB‹‡#,‚r=QÏ'æ^l¥ÜrºæšésZŸô·bsØ¸Ô¿²?x¥FüØ`¡¦œxœŽÁªÂ0E÷ùŠù%™I“DTÔ ïñ> “L¨‹ÖÒ¦àç[ñÞîœ³¸Ü:‰ ‰.”+ž±˜,h±pj¼ø€L’²)È& ã$C…˜4:[¶Bì\ŒžVòMÐD­uIÅ¥vÏ	~«ŒpŠUfØÍ_ÝòGcŸæmzö{0¶1­µm°Ñ^kµÖþQ«üA]/Éðs9žo(ë—?^†ºÀý~TovM’xœŒKN1D÷>EK¬üÿH±Bl8D»Ý“±âùàx$¸=Q$.À®ê©^ÎˆZFŸJöäÒ%’gbã‹ÕÉ9£½Ø±ó:@–)YDQeÊÞë(•Í¤µFÃ±¸è0[üÛ‡lTÒÁGeƒ”‘§à!z-çddœˆLˆIà1æ­Ã•ë˜óq£^ùü(ouÜÎ´-¯ ¬S6Æ œäýTÜéRÇàÿÙâ“û…a?ZƒÎ_ß<YSßxo[¯¸~p½´çÍ'%ÄøÙ7˜ê÷/âcCžxœ¥ŒK
Â0EçYÅ›%ÿ& âHÜÆKòúš”4EÝ½íœ\çÀm•%wÖ§`£õ˜¢LAEÞ“ IÙ¤¥7FIËV¬”ð4xH½!k¥ãB‡(¥DE.g0bÐÈpoS©ðXJ1Ã“æqëÐM'ÜßXÛžÇm ¼5ª]¢m„îÒ.\pÎby½ævä¿^Xû®†ùÃØ1´Âi~C»O­œxœŒKjÄ0÷>E_ F’­„	™e6	9@KjaÃX2R›¹þxÈ²¬âÕãF!æi¤mò~’è1hš-úd”³è¦iF—PÉaÇF…Á“3”½“QK«URÉå¬ƒpŠHiÖ‘×¼Ô?LûB>©ÃkÿÃ1<ñ}ßbcÝÞ@ÎZxwÖ^„b8í¶2Óÿ†KJ”`-¹¶y­¸Â÷õòùu…ûÊ4ê;E~êßp>Îqg¼ÝÆá¬Xø›xœÍNÃ0„ï~Š}VNó×H¢ „Z*Zz­ÖÎº¶Hì(vR7‰3ÇÝÙùf6ôDªŠ+Y×TÕ¢BLx^&)QiB‹ŠËBä”R²{²²¼ÀEFË±$.e´*ReM¨•bÁyš/K^0‚v=ìuš,<` 7þ:ÎÅe¼ëZéçÒµ·d9¯Ê"K3˜ñ’s·­	þO`Oæ‹jí‰wë|ˆÁ†¶Û{ÏØ^ÓùD–ú­ÁXQ²cK3ÙXã')ÓœÑƒuázj$#ë†“žÀ"œµ‘Ä`šzZ¶CL#õÞ8ëÁ©Ÿ
sØkãÁøø©½kš<œ’7‡õêø¸}}>Vï»—·ŒØ‘4hAtèýT78v±ýöœ³o¥žl‘xœŒ9nÃ0E{b€i"›ûAŠ´9‡Z‚%Q!)¹}¼ÀHõ¼ÿ[!2‰ŒLŠÈÛ€B`ÔVr7:VêÈe·…BkãÙà#œpI0£ü`¼CÍ¢ðÎ|HN‡'ïmJJG²œOR£ø trÞ%Z&DëT]ØÛ˜œij#î5Žð~÷‡{øœÖFó!æå¸ÒLX/µƒžYÆºk»L­ÑÿÖÝ7•Á¶Ï3úÙ©6xQ
RÉäZ3^Žéc¨mZOý–o‡¥öSí1ýr¿]÷•××7žÀÛ#^Â|½=üwùtš™<xœSMsÔ0½ûWèÖ2t3ùÞfzáÂ‰™ž•XÙ˜&öb;›¶¿)YZ¸‘ƒÆ¶¤§§'%z" z ºJ¢öˆ]žw}u,²¬ïº&«u×äÝ±¨ú¬Pgôd#Ômª]çMÞyZ—­®Û¦«Ò>o›¶.±Å¢£¦B…K‡œ"y¸wôH>­?õvúâBp‰>CVVi~,›6ƒ÷i–¦ªwól¢$ýgnÕ”õ5WÝ;{¡ÇáìŒåôp·_/8-¥~Œ\ãl&Æöæ4ÆéVô–4`ç–hÁ„°¤‹¦l²"½ƒŽ]‘“óÄñA­ÞÙÓè96€upZÐ#—%ŽÄ‰Ec=a/…Š:{ô?ñj‡‰1wóWR]nI	÷Áù™™;»Õ|Ðt¤e"i8«÷J·Â{åž™LÀ¹»™„ƒ1{@ÛïŒýh,…wÜ×·O|–&EïñùƒRÀ_š$	dbr1…˜RLÅF©ïnÝE¹®szr}!ïâ4Ñ,ù¹¿ƒP=pàáþQÕ%¿A0/ÜšˆÈû¿·éÍÎ&oTäƒÏ~Ê¯'¥¼‰†Åä2<Ál“=‡Õ-“†óòg+dÐìÎ7w	·ÎÂÄ+8ñïaµAËj|e¤ƒ}ÖdÝrAcÄ;`ž;¤»_½p”VCÄþq[NèG´'‚™CÂæ®Ô^e‚uÃ—»áÊ£œ®$•Ð»³!-‹€ñ&lóLÔo€Ã5ç“$xœP½nÜ0ÞõgËÖÙºAÑt2èÐ}Î–‰¾C—>{d_†Ì8è£Èï‡œˆ ·jTÊml§•Tê©³]7’î´$ìG5Êö„¤DÄDž¬:O’ƒ5Öô­ê”–ºizÔ-6-¶fìR®<…˜âD~#S†—|‡Õ°Á_q1¹2aù	Í±“ÍS¯t©¥¥»8fúñj-YX‡Õó
¯°à…€1‰«òáF°„ké…&–âþ:]è`fxÁ;ZÙÍù®'ú¢ÖeNa#òTÄð»F™C†au³ÍûŽ	)‘aÈaM¦dË}Pg¼•§·2æ2”Bˆ‰rð8ïÎÑ[0èa(Ü	Íe“âg!&æ˜ŸëzÆÕ›)¢­<qý/ïÇ©`2“»R}7[ÇˆB¼S¢Ío¢ÙÝÙ„þLs8ƒI„ì‚ß%Ñn‘<Ý¾Ç–†Cáz¬Ä'7“¿1‘BxœSÛNÜ0}÷WŒèíŠÇ›Û¦P¡–U…ª‚*!9Ž“uIìÈvØåwöWöÇj/[è"R’±Ç3gÎ™±Õœ&y^óGtZQ<cQœsJª¬¦Œ×3M«
7uŠÑ@5—XÌHLqÇ4«“Œ¦iÞd¥çÓ<KpãY“ÑÑ.”†[.á—P²…£%—+otBŽ«ðQrŠª™ê¿@'8"xšM!À)ÆÈíöÂZ®áv_GÃpôàaå'BZÞýNÒ$qá™GWcõ‡3[€ó¢£ÖAƒ0fäàŒa`!B·]‚]phT×©¥pu¾qþN+eOø#×ÜØ ÈÇž¬÷ §1Á„‡F;ã´ü~~]^]\_~›C`l}ÜÊq6ƒà‚@ÐBpK»Î}¹ÖJ£àôüæç¼¼™_^]œïïá„Q¶^ñ½ý-RÈ µ5ê–)Ùˆ6„Bfl±
•'Ñ+*ôVÀ™„f”lËj³î7ëƒ’¤€mÔ/‚Ë>ö¾ßTƒ6ëVé¦ÀðÒg§¥áCIµ¦OeçººYkÕƒ^>'^Õq”ïû4p¸Ð3Ó{ ¿2x#ëGÖ´¡é*j`÷#Iúé³ËñyNÂá8Ðn¬y/aG,!.ëÃá«R‹"Â©{ÊrGz5¸qNŽ<ŒÒˆVº-W:L6ëÑ¢-„qb<³qŽ4ÞúwçÑûØ,¨†‰±Úi|ðŠµEö4ÑÜ —Ž:’ŒEøAYR-]˜ŠûYÍ©/šçÞä°€Édw^ƒ{˜û}ˆÜ]ØÂªi‚ê©xïDõÇbÑœxœŽIŽÂ0 ï~E€¨mw¼H!îsš´6‰ N”˜yÿ€à«¥j›˜‚ž\o£$S¨dÏ!bŠNÛÄr
\|DëÔÊ›Ô¨CŽ³ÞD&MOÖ‰XSFãu‰…?Ú¸lðÛd¥Â…›ìpÜßØ¥ž×9ï]^æhê6Dp@¨žvžZ“ïê‡oŸ©Â iâ
yäz•ûr†?Þ&NwéÔ?ÃfR”!xœÍNÝ0…÷‘x‡‘Ø©ÜÚŽã\K‚el ‰%šØãkCb§¶ƒÊÛãÄt5?úæÌ95ŽF+§´¤ÉpË3=3¦—ˆÌhÑkeÐIÇûnÅL±‚$¥Ý8öŒ¤ZK'˜¸ …£8"çRdå7?){Ô£PÇÑ¤SB
ÁŸô &×Ki[ép«>ex£Pý´ãá÷Þöá6ÄJóÁ¤å¸”Zñaä®ÙÈX×¶K¨•þïº»§|"X·y†L7*.%—Ó—ðŒžÈþZ°´]wg-Y°d’ñÉA¥e…B±¤\ &¨žàñþîá	æt‚›ú&üÕEwÑ=yŒo\‹zÆ\øw€?`ƒ…˜*¬ÍzõXaÍôÒVà+ßÍZR¦3áuk^áeIïô²Ë­¹%=»r[45¤¸ûÁ]!E˜Ã”1ü“	w®úPZêS¦R~ø:m¬
•xœ•ŽÁjÃ0DïþŠ=¶YVìJi ×\’BÏie,ËHë†ü}åB{/ìi˜7o9öFw®ÓŠn¦±¦Æ´
Q-[ÝtÊ5mµ`¢™AQ§]ß·‚”‘Z+'…>4’:ìå›FIC’¬ªpå1&¸bðð‰#‘…—<ÝegÞ†€~Ú›^¡QJwÍAÔâ(DUÒà™éÿdu²¶T-™hý<@tÀÈ4ç˜2p	®çÓå¦8À‚Á“ãsUÕðîó2áã‡¡„¼&úC-2Âš·Õ0q½áÛ§8Û‚^(Ä¯¢.b*dà´Î¹d›rÂÌp{0m?¹´ƒ0ï ÏàËÙÚpšöÕÙŒ¥Ÿ9mS(;wÏ#L¾à¿¶o®åŒ€—xœLKN…0³Š›8oË-mcœ:pýÜ
y@±-/._òŒptþ§fP6EOA';FÅZ¥“R1‰„z²ÑÅ8v‡+¼7‰ã(‚%aŒ&‘®Ytä‚aD2ÚqD‰hþúRâ”ˆ½˜‚¨¬Œd&¼c%ý4	i”çÔ¹³Í¹À—6û³†^|xˆ·eo¼!o¯ ˆ¬$¡Œ„5bw¹ÛÒÿoÝ}pùd8Îu…Â_'×O„JÞ ×šýýùúÍÝ¸ìû´|síº÷í(ùÎpY‹Ûápáæ®+.k„+
\ëðøq™$xœ•O‹Õ@Äïù}cò’ÉqAD/êA=v¦;Éø’Lèé¸ê§·ßc¸Þ¼LÕ¯ªK…\ïKW·…çÆ·c_‘ãöä];:Gc9mÓUÙŽÂ›BÕtMëz*êîä¨rãÐQß4­¯¨Æ²æ®+F7Ô”á¡sø†‹²À»ÈgNðúá;]_ocJ1ß–7PÖuªšºïáEQEæãº½˜þß›}\w‰?ˆ‡€ìèÏ81GXìËsJy–=‡¯3ƒŸq›Œ<J\o‡ÁŠgoˆWr,&AX¢B
ë¾°äæ~BŠ`T+•¶g
£c=„ÒEvG&I_F	Ó#eb“Ì¨à…Q¯xakG‡ÃÂpç¦Ë§ßyp÷ô7ÅC¼%‰Ÿƒ%†‹}’¬ŸòÐÒŸxr Ýªë¯=BØþÝ‰8y	»†¸ýÝp³õÎ“±¯Ó|ùðùÓýã!†ü‚¿ø–xœPIjÄ0¼û9Ç‘Ü­BÈò-Ý±Ëvdùÿ1ù@nUE-P½1C¦è"&tQ‚³)©ä­ÊJ„£Jê‰C¶&˜áˆ·â=aqŒ‚&JÞ•’’•½q8åHH.ÿùÑzëL(Šüd
I¾k]ÆBQ{¯Ä$*C¼ú¼7xðÒçty†÷'ŸäsÙ:¯cÞëh¢ ÝÝ¡áU9¥†[­Kïü¿ôðÅí›á¸Öÿ\|vxÁ Òö
G­9ï­¾ÕxÞ·9>X–õ>nå¸]Çøñ¹e–!xœ¥ËN,!†÷<E-LÜ8¦¡oFOŽñD7šLâp)¦ÉÐÐê£¾½tœ0n(òUñ?eD0RõJhÑ+7öÖ\7Ü9T\7âÐàhºvlÙ¢2F7RØ…nl¤zkµv­sÜm/£¤½aj¥)e8*ÊÞœáÕ<¦<o»»åíçýlÌ7üë#aØ›4ÿƒ”ã¡kÅÐÀŽ·œ³JgO„¿IÉ/2öªÎè|¨?¨âºìû—â5Aðñïž&XãZÐV Ë-ìÂ|S—…¦ŒÊ^f'•­IÁGè$hOP¯[ªöhò¥zB ]OœÁäTÊ¥­È§ÈŽ+Á’qÉÉ`)5$Ô©l®Çãñéåáù=X” ?|!Oð_e¯tÀmªP}$·A¸‡«­Ôj@‘±7ŠhwÉ¹þ¼ýybìP×±õžxœNËJÅ0Üç+¸¶æq!‚?"“ÛbÓÔ4ýëÀÝÌ0¯Ñ‰ ²YrHD“­vÑ„ ‚$MÈÊù"µqÙ:m¤K¾xO
O.Ê`¼šŠõ¼dÄXÐñ˜þüèl(J
äEí••AÉD3iïÐkTY8ÇÜ:|Ñ2æxi†ç;žîäuÙ­Sjõ„Ö^8ãá‘;ÎÙ¥Öeú_š}R¿ìçºB§ï“Ž
¡ôVa¯5¥ÖëSÇ5ÀØ{HãºÙÎo°÷«yÙnZ&¸pƒß3m›Ò'-mt”xœÍJÅ0…÷yŠy[’6éˆŠàBô’Éä6Ø&%M„ûö¦\Ñµî†ÃùÎ™™œˆÀ
êmË%’0Êör0Jk¡¥ ViÛ“k¥ìÈ6(dhœÜ4Q7"ÇÁ´ZMRHrýÄGãÆžˆdºä9&xÕ9yü€|ˆi=¦Ûí*5k³"^Å{2-Æõ„”“P½Tœ¸âœUuõ9Ó¿ÃúNü;Œ=iÌu¯X2<?Â–ªÙ‡3`´uŽpÔÅÐ cï3ý*°UfŸcY,˜j¶õõÒÀaôöœ
æ’ˆýP®Ì>†P‡ƒZc"¨ýí;”jÔ–=|®Ô0öæÏì):w2—›¿ßË¾ JQœ{žxœMËNÃ0¼[ê?,âœ¿c	!$\è­Ðu¼&Qó(¶ƒÔ¿Ç*â˜ËÌ¬ffK"'½–BiAÜËÎK+ýÃ€ÜtÑr;Än¬aWL´°®ï¹0Â*cÑU˜^pk0‘œH{C¨l¯ÿò½í\Ô:D%¨'MuÕÆê¢’*Ô?²n1ÜË¸%¸ÐTF¿ça„ç»nïæuZÍí°-/À•r\;m%4í:V¯ËT
ý¯ÍŽ”>	®û<C¢¯rGi!¦m-çÍ?ýRƒ!4ü„k§™2co‰°Pí]·<•-ÝªÄpƒó‚‚š=ƒß§9´v`ï§c§×K~øGwr–(xœÏnÜ ‡ï<ÅÜÛEÆÀ®ªªRò‘rŒÇ06tmXÞ•sÈ³×»M¤\¢îœ~b¾o`È‘ºjhª²nJCU•ª=B–ØJ(=Z+ÉNÉgP]ÛŠR–ª–
»½d[
%Ñ¬Q3HÂZµÃ5ÛáçL)ÁÏËsK¿CJûùˆºîDÝ–]ß
QL‡eqù*ÝévmÕ¼»ì!f‚H§\qÛ#šú†††ÕÍ†3ölÉC\½w~úÜú‹%zÝz¸¸láL1¹ëiÁKÞð	¥¦\fúvY‚l)Œn¦ôƒ1ØËŸ:èÙ½|RâíßØ\Œ¬¹¶è'JwóûãþÏ^)‡žgŒ|z½‡OúKŠ‡è¦Qìé¶¥Fóz^™=ÀÖ'ÔGœ0jëÎôR¸þËö!Œ”µ%Ã²a,à)&ÊœýƒÎÌ™xœANÄ0E÷9…wlh•´i§A!¶ì€8‰;h“*IgÔÛ“V ±²ß÷÷·œ#p­GÙ	;ôjl‹¤Iè5·©žZn9—¼lÅH>ÃÅP7H%ÕíØhƒ¢W]ÛZa”ÒšË^Ø¾QÃ-O!Â;¹<ÁÛ–ÌÏßÔú€Wç3Íµ	Ë)/²“e*~áœuq9Ó?×Ù-áF°áê`"´%ÈÒJÞ’7;c_“KpÇä2Ð<˜#™ÉyC'‚¶XÚÂóf)ÚÎ¿y½…ƒóR.åŽ{¡c
a<ýçùÅä‚ô{qÔŒ}º«'[…q¬ôþô—Ù¡ðŠÎšxœAn!E÷œÂ»l:3TUUu[©›ž &AI Ô¹}IOPuùýý¾¿¹‹ÞºÅí­2qÊ,s˜¢q£FÆLjƒw_)38MÒJ5ûÉáH]Äè¥FkF4qÎh„ßø\*|Pâ3¼om=ÃËå!Žøo)3]k¹½‚š¦E.N)ƒ\¤}zKÌôO\Äô%FÀJ& ZKâ“( Ø‡«¯§~ ç ïw¤Õ?œq^ jùÀ÷°€‰ÛøDÛ«_Ô/Ñ¼Ý°•Õç5Hä¡v3…øJ§Laè}ÜŸÿò‘ø(2‚(”xœŽKnÃ †÷œb.`æeª*J³í²'˜!¶cËÁ‹Ü¾qNuù}Òÿh34:e"ízmúLNG<¡'RÆƒXqãÚ ç£/hB`ê](äÐÃQ[8åÂ½‰Ñ÷6.|óÔF¸ì÷<Âçï2pžjã›ÌË|m­óVE S^)ñ´óÔÿ3.¾ˆ€°awç3V¼òü:ÿìÅJB\°.ë~Ãˆ%¥âgºV¦n)¥Kw¶ÅeÕŸxœŽKNÆ0„÷9…/Ðªy¶E!lX"à$NýmRµ©·§¹Â³šOöŒëA(gí¹ÓlŒ$MMq²µ›‡IÐ(­×V³ÊæYx!idTNN(”sFêÑ
.¸Å &Åðª±ðA©Fx»NáùÑLo›yM¹ÒÚ»²½ WJ«{¸‚n0ÃÀnº¥ZéŸçìk÷X	|q×Fo¥’{Oß)/P#AkÀì!eð´R¥.ŸÐÀAÝqåÜöðt)ÝP„õ:#àº21/t6Ø‚ÚKÏØgZ2ù®„ÐÙŸ§¿¼Í~Ê^{g™xœÁNÃ0†ïy
ßv¡k»¤M7!&ŽˆHZgtIU;ƒ½=é$îˆ‹%;þ¾X?/ˆPëÊÉ^çZéÚÔF[5(Ý©¶k;ãö(›Î¶êÄlêÆèÚÊNI¹«:…ÖíÕ®Õºi¬‘ÚöM+Û}%Lâ1.ðŠžGxNÔpÿ¹6[»6>0NÛ>ž Vª‘™ê4U[U"OÏžÿ‰‹ÿrÖ3äÙO†}B<Ã‚D>œÀ%<02Ït(ËS–'»*ËÉ‡ô]„ËËµýäË@¥l„x..œòt…‘xuòhŽ›3˜¯D‰ò%Åz‰½æðœIßE8
J4cÏð…›f!†lA˜ñ/wûüúà	æ%~dhC0y‡[!Þü)àPDç
{=ü%0ñ“Ã£›xœŽAjÃ0D÷:Å¿€dI¶\J)¥».{‚ï¯q,’ÈF–¡¹}”n†y¦€‚“a|æ`zÖÆÖaˆ£Ž6bðb;=«6.È•¼ÇÆ°qs7ê!L@ãô¶ë¼–SV|Ôe-ô…Tú8vYèõú„vzÂ{Ê·VÖûç¼õ~{jt¯µ:×{ªÿÔÕ'¦Ä™6–+_@súÁ®Ô7*Õ$k)J\dIõlGqŽtKSáò ˆ9"KÂÞž^ºdÄfçfz¼üå’ú1Qn
’xœ1nÃ0Ew‚ÈîÀNdÅ‚¢íØ]zJ"mÁ¶Èt‚Ü¾JOPt|$???%5Ø1kmøt0;j]ÍV÷Ö¡ïµA:4ÄhÔ3Eß3¶ž5·Æž{ômÍÝI[,Ã½1–]c<+ÜdL>)ÈïÛêF¸LOØÛ'¼†(4ï]Z^ Ñº=tÇ¦k ªM]«R]‚ýS®Þ¼O®è&ó@¢ÔW’#Á‚›	#Ì)M+ ÌÅp&ðÊi[a¤L{øØVI`	ð^^ ‰U`¸Ð­Üq)àP¤%­™œ¤ü€]¼-T]Ö´Œ!;ñ×š7ÙÊb¥¾ÃÉW‰¹²ó_’ª¿`ŽYœxœKjÄ0÷:E_ÀÆ–Û²BÙ†!9A«Õ²…Çd90·ÏÌB–õ àQ%‹€t¡uÆô>šÁx-Ö°v¶ïØrÄŽÑú–È´Ní”e-0ÏbQ³788
ÑYhC#£q2ô¨è,Ó–áSR™àã<x‚×ù	µÂ{Z‹ÜjÞ–7h{=lªÆ4z¬K*Eþ©«kÞ~RÈûþL· …ò(E©Ír g¡’Öh…¯ëvâ™ÆG:îµRßi\%T[Œ•¿¿üåƒúŸhæŸxœŽMN…0…ç]ÅÝÀ#-´¥5ÆNºz{yô	-)#»v`žïäüp%ã[§£ïŒlGz$ŠžQõÚ’C´c ±•2C§M¯ÉI–T§ÐakBk¤C­ì0`ð68Ûz1ì<•
”x‚·}Ã	ž¿.Ñ„K¼¦Ì47X–PZk¯»Þ8¸I+¥8é’˜éŸqñž~ö¾©n©dÓLB|–…`¹ŒÆZàz¤|.€e= ðtî­µ<yƒ™âe¥Œ¥Ö“ˆHÖ´òÙØœméž)ÞÊ8ÞÂñô—›âéwœxœAnÃ  ï¼b?àv±ªŠ¢Ü¢ûÀ‹š@Dp¤þ>ñªg¤ÑôÆÁ+
1*9ÉE"ÃèŒ´Îx4vR¨\) wß¸t˜‹†µ§Ñ4’b²z”ã„ìˆƒ§‘„ßúZ|qî+œ·G\áóg‡CØá”Kçë!ÖÛ”ÖÚiÒÎÂ ')ÅÛÞrïüÏ\\–RÃÂ…›ï<Ã“Û#×)_Yˆï¼ž‡šÒ~?þò/™¬]K”xœMN1…÷9…wlh™LÒùA!¶làùq:Q;I”8z{2=b÷ìgÖ3eDè§~4rµ“ãˆâ4M(¬8qäJt¦ëÌÜ;çÌÌ’Ê„5zpJk>	;+!-çfè…zÆa´£”£F0Ui‰>ÐÓïµ˜^.{qÔ{ñæáõhâú
\J9óé$º¡ëXë®žÿ¹Î>s³¡¢Z€bSs† ?m°ÓU°…±ï!&òÍÀ_è>œ|B æXEª‰ëyÙ±Ò#”[³bx ØT»B‘¥Hí5^]¯·¤V!ÔÒÜ)Ûž"åxÎj…ÆI•ŽŒ}ùs@{ˆÎôíù/YÙ/kÙøšxœMNÄ0…÷9…/Ð*i¶AbÇ’äÇ™F´Í¨q5šÛ“²‚be½§÷ÙÏ¼úÁMCð–P†)šQ©Þ¨ÑuQ£8èIMJ‹«ÝicpZ‘»Þ§hìLoÐéˆè=º€VZªöà9ïðN‰gx=ŠŸáñó­;ÅsÚ˜–Öçõ	"NZöÓ¤Õ]3ýo)Fú®ÓB0Û-Ôk•ØËVˆ—eÉ7°p”z†3”+ùïÕ	¿éŸì–ç3_W‚-åXI$†TÀçÓ%ngãš‚h…øH—B“clÜýá/‰/úš„Ð‘xœ•ANÄ0ï~Å| ÑŒc;6B¸räc{²±–u×»ˆß“H< n]-Uwo" Ñ²‘½Õ&Ø´ç#Y9s
¡óZ‚úä&µƒK‹zŽ‰’˜àu’äœÁÅÈ,ÆÎÁršßúº5x“ÒWx½]Ó
çÆxÀs©]>Æ´]ž€Œ14Ò:Dµ·—Ò»üK×èuõ’30Ü¥]ËV•zïÜz©'ø:Æî8Ò¸—åT%Û²ñûá/Gê~S^Ï•xœN;NÅ0ì}Š½ ÑÚqœXBQ@CÀŸ5±DœÈ^ÇÇèÑÐRíüv4\‰ÀÎÉ(åÑ;e'µ1JëÃœ´t1&iç”fq¸J…Q¦à¥rËhÒl2áâì¨%)«T’Ô(Ü¯{…g¦c¥wŽ©Áu»ÐÁÿÐÛcmûvRëQÏ¨ÌWhEW·ÌLÿo¯Gì™ï9Pi{ïÚ
-Ô|pâåÜÿ(pR%Ørký+õñ¼<<=~ªßŽ\Þ¸Ï_ývÏ1œ™×ŽrƒËÞA|v*m†‘xœN»NÃ0ÝóWbÖïÄR…Z¤H¨0°^Û×IHÒÇ‘ø|¬Jü Û9Gç•0á-³’',ZBâJ(‹JE«eÃMµ`¢këkj¸gŠùZ`ÚªkŒ
èt0RÄF~nÈç®)p¦8­‹Ê­·^:NX0T¸ånN0PŸ;·­¾ƒÃïnä¹¿fw~žž€+%•±R6ðÈcUQ§>gú_ºz¥Ô,Û8B¢ïÖwRALóø5§v?áZÚ‹ŠýHûZ!–¿ú[J+ÜOïÇóöðv9½œ?~	ŽmœxœOK1ÅïùsÔƒ6›Íf7 b¡*
R=xM&ÝØn²$ñ~zÛ~aßï=¦$"àÂh®ëJõB£&¤J
‹ëNºž;)nê®RlÂD¡€6-u•á’›V µRÔ¶Ü*i±o¬ª…ë„máGb‚e°‰¾à!¦…Lnðý¨ïpÄŸ®Mo¡’²–ª›®xË9›éèK¡ÿ;°'Ü“óç¿)ƒ›ÛLhö¸£”ábµ~y]m¶°€çíú~óvÉØÒÚgŽÁž6àà4¥8%…`: ¡|¼ÎÃü–”e 1Ìe`Tò9Bü¤”¼¥“'ûf§x'™xœŒ»NÄ0Eû|ÅHÔ,~Ž	!:ø{<N,’xq¾Ÿh· §»ç¾zc†L­½qsF­„)XGH)ø0ÆáoPKgeÔ”ÐÉÄãˆ‰‚¶VyÅÞLÒè¯o3éà­gÖQ)]Ô,’u"fØDÃì‚÷C8ú\|qés<všáù¦/7x-[çåBu}iŒ–#*‰ð(Pˆát×Ò;ÿo=|p›®Ç²@ãïƒ÷ZCnu…eŸŽ­ÏOkØÏÿ³[SÉ…ô™a)ÄÛÎPó©¦ûÍßÇ%†6QÝr™ WˆoŸï?êÃw–%xœ•QÍN&!¼ó}Ü=8aþ˜™ÄÝ=xÑÄD_ f ËÀø4ßÛ/ßhÖƒñ°Çªnª«Š’ˆÀ()FÎ¹˜‡IH#.dßqŽ£P8NJ(3.’í˜(};­ì•S«iY„VØc7w4\èvfT’á©Ø˜à!®àþ.h'¸öb½Õä¢FÅíÚaèÛeì¦®¸àœUvs¥Ð
L­ø`Q;ãHC±Þ)
™ šª¨	ö“÷ulRÜê\bZUÆ­P"H‚û§‡×Ž±K‰Àâ+U’xZÑW (…|ô.üqa…»Õç)ý~äÍË©7ðb]ek‚íÝbþÖbLnuK•g_|6pçýçú~®Ë¶€^SÊðÃåOúâl;gò0höôøž¥„hO”ëŸV¯òÏ…v[þª¥f¸þ€Ío÷Må£èŸG,»5ÔgÑˆ¡ø—©a>žÈÉ•xœ±NÄ0D{ÅvT‰Û‰m„Ðé
( @âlg}±¸Ø‘³9Áß“À ÊÙÑ¼¡Š{‰œKk#vBéQë”èÜ|ï•Œ5¢œ-®b&pVk%¹ñh¢‰£@4¬ônð£qFÄ^h¯;æ6šJ…L4Áy[Ã‡hý!N)^ÛPæGè”¶·;>pÎöëœˆðŸqö”>!ßfl\SÀ¨ÀóÛëMü˜)_àøqÚÙÑŽ§	a-[x·‚[–Z–šá/bÅ–±÷tÉ86%ÆÆÝÿ¥û7ðq†•xœŽËJÄ@E÷ùŠ×3ö;Ý âAP7.\w'U“Æ$=vªÁÏ7øînUC]®ˆ £UA»¨SühÈŽ^¢rB:+dŽ„êÎ±âÊz‚ñ–¬Õ"RdRÚùä5©u/FBôôÇÂëARpZBSèã~6½SF/)õ*ÈÁw±ñT*|aæ)µm˜àæ’—á.¯Œóq(Ë-HcT°Úy±7íöí’™ñv÷†õ„pnó¿nWZÕ²À—ü'Äñz‰Ûþ¢ëàqŠë.ŒH±Íï/OW8!#·Š@m8—õÏùG R—ÈP^î¡^üÒøÜør_yÎ•xœ•ÌÁNÄ Æñ;O1/°›JcLL7ñìÁcÃ`IJ1,ºúöb¼xõ:ßï?­2ƒtZÍƒqƒ÷dÃu°’•AÄˆÃ<k”›ˆJ¼¹ÊGOae”&NDvb¼•µFjòÁñ$GÖQ¸÷¶•
Ï.'xqs€»ë~S†^³Kû™J¾9öXKeN8!Š~Í©5þ)K­L­ó§eYÀ5†RC•HáDG«»—ôÙÉŸµÄß «ëVnëñ‘yMa¥þ:ãZd•$xœ•’OOÃ0Åïù>n‡MiÖ4TBˆBB.;pDiâ´‘Ú¦dßžìÏq€È%’ýü~Ï’)"B³ªk#J¥då
WVµâUiš•Äá$W¦±e]±IG	8êŠ§j)j›û¶X¹¢J^	4œ+%„(¤”L'êB„<¼éÑÂõ¶ß‰ÊÜ¶ƒöýÒ„áŠ²+Yå\qÎruðDøÿIvßé±Íb‹N§žàuóô ~„iáPSŠ.†|— ~ŸÅ.ÄAÏwkˆ‰¦DŒ-à¢%(~ñ…MráÔØ²ˆÉg…†OÝ{{²˜ù%.¡oô™H_Î3ïÏLX[{´5ÑOä!u@}“·à<ööñÂüO+ñ½;¿ónï}haö¢ÉtÙ²Ã~b6˜4ä+ÐGîvsö¿íºÖ‘xœ•;RÄ0DsŸBÙF}FŸ©¢¨½ÀFÄ#yÆvaÙ”V'€¬ëU¿îÞ˜UÒ±@.¹‰AÇèÅ`&½‘Â‘\€ ‡Oj¼wåL°Æ–"œ³LV˜&ÈèÏP0NÌMðö¯1 Bòâ½ÓÅ
œbÐ99±H.êI˜“ôèËÑÔÕU½ÓÂ<©—ûömC¹Î•Öí©õU kÏELjÔQëá¤uíÿo7n3«Æõè<öFåcÝg•íeQ—mÝ?ãþUù¹Òý<¸¿XU\1–xœ½NÅ0…÷>…%f.ùO#!3³;4¢m.i:ðöD^€Åúl[îfá“IY=kb#¼·Y†ˆ"Z™{ÔÎ8£ÃtÅÆ{‡™#FŸ	e¶.
KÁjò*ÑJdG’ç þôZ:%UJ™cT&Ì*3’‰ÁHÁ³ÒY5áÙ—ÚàƒK_ây¤îøò“<–½ózIu{ iŒœƒÑÒÃ­pBL£º•ÞùÓÓ+·w†ë¹®Ðøóä£Ã
[ÝàÀ­¼áÂLwcÅ4=1qªÄP¯½Ôò¸‡Ã†;a¯íü6q…gÆ~6†O)¹p;`Ä•Žo¸>}«”xœ•ÍjÄ0„ï~
½@–ø'q¥´Pö\JÏŠ%oN/Kß¾N»ôÞ›f¾•º@N*å<kÛNŽžT+3ªÞX¥F²ÞF¬¸ñRÀ¢ÑA»u0JRÎöÝ ÖÞ)éÛýh5÷oeÊ¼ãá'f‚§=ÝUï_®3Ætòy~iŒ´•NAÓÚ¶u;ÇRøÿNñJT¥Ä>C^KÌ„ZS‚Â’·/¨Ããˆ	ÎŒå¶1\¨~Cäm¢=.WhšéV}ÍÆH8¦?æ=–	ÊÄpåÒ„áh~ ï±¦ýv‡¦2íÃc_Ù1çËÛI|²•{èšxœŽINÅ0D÷>E€ Oqœ/„@ìÙüxh'–œ8ršéö$b,J½¨zª.jˆ`R2ÖzôÜ)dqìG£•FZ¹ê­È6×p%!¨QJãµÆ!œ˜½Ò&Jôª–#Jç¹škƒV+ÁÝy¶Zp'×îAh-4VYè¸áœ…º,™ÿË³Çauî›%ïu£\WHÇSWÊwºÑ©¸	¨š¦‚ðô|…Ôêò4ù»à7°Ïõ-¯`¦ù˜âåWüYô«ú–±kžVŒ]M©ó—?÷³OðÉtxœŽ1nÄ E{N1X&Š¢(mŠ9Á€‡­–GòíãUŠ´Ñ–ïÿÿ¤ß6f ÛŒlQêœ	$Ù²Ò.ú”zd©GÃÁ÷^¬´qiàÈ`B?0&£ÕhÉ;ÛÊ#F¯U”bpÈVÐÞ¦ºÁ;ç6ÁÛ~‹<_ïÐ…;¼æÒxîb]^@£pp¨4\¤•Rœé’[ãuñ±r‘¿sdHç‰BßV:iä™[®EˆÏ
GÝ!RŠm§y>~[†6ñŸÒÓüUx¼Ô”.áxúÏ§‡œN€æxœ‹[
Â0 ÿsŠ\À’Í; "^A<À6Ù¶›–t½¿õ
~3Ü‰$ÙÉy¯1hMÙL™@¡!—`2®h0>hƒ£ubÇNeŽ‘b.)8„h|Žà@¥¨G‹1G,)9^¶.ŸLûBM>é×cüñÞ±òò®mÈÛz“`-hí½Wò¢¼Râ´ke¦?wñÚËÙ9Ì•ëÜ¶Nâ¯GÁ›xœŒAjÃ0 ïzÅ~ a-É«”RzË9/­U-°e#oóþÄ_èi``F»¸Heì»’,qœJ
#Úb˜g¦`ƒ'4GêÒØ³äÙ‹nŠHv-3{äc&ç,t%L&ýé²wx¨‹4øI*'|žÓÅïžª.km·yß¾`ð~°–<3| !š·Ýªªü37÷íèûS2¬õT¸n©e({ß’jm¿æ0ºL¢šxœMnÄ F÷œÂHÄß¨ªªšÅlºl/ Ä™ f`ŽÔöô%s‚ª/žý=Ë¦Š..¨5G'Jô³q.He”°R¨E)>Û)È`ØÝWÌsðÎ8¢²F*«N“8y-¬é9í¢ï¦ô“[˜ßi-Þ0Ñ
ç½Åž?Ã¯)nc,·Z‹^\k¸áœõî-á?uvI_0{òÐÒBÉK¦Z¶­oÜR#Æ>V„þQKù
©õy­ûzx]ñäÈØ{ºfœ‡²,Cø~úËEìÑ¬m”xœŽANÄ0E÷9…/Ð*mš¦E!lØÁ	œÆi#f’*qs{RX#¤¿yÏß–94£›‡ÅšQSï&©FCÚªN"zíµ2{RŽÄŽ™"ƒ–ÝDz”ëLöÒ»aöÆÎÖ8¯hBÄy¦j¼¥/xƒ§£,Ü¿ŸÐÚCdº´Kº>@7Ò˜©9J)ª½fúçºxŸpÄÖHÎæJ¹ñJ{Ê\oÈp”WøÀKp z°«°àQ¨ åœ*¹\sÛIüÜŒTJ+ÄÛ74ÉûÆÞîþò«ø‚˜x™—"xœ»NÄ0E{Åt4ìÊÉ&q!„è%ð~Ül,{±'»ð÷8<*D3Ò™{æÁ	 …ªo­nUo:UWZImtg]ÛìúJÉ~'õ^Õu+Ž:!0)«ÝNKÓ·ÙwuíZ¥†¶ßWÎth`¬Û©®zá1&z€ç‘î–lGº~YÅÖ¬âÖÆ´µq¾¡ªi¤Rõ¾–´‘”¢dgÏŒÚÅs9œ¼ÍúÍÏËLCÙ)•8Å•K’Gâž/2 PÂ1&†#5SŽ3ÈÆÒ§	)—2/)|#ü@sLXQ™ÎH	¯ò·=”ð³@Á—¶ô4úLGÍåŽx*ï?Û–Œt±ò?—¢à¿Üƒ^&^G­2ÙÇ@g)D¦ƒ?!\Òy}ÎïYÅ"Ö\³åÖ7¸Lž·B<úC€ÛÄaØ˜÷«¿¼W| Ú+¸?—xœŽANÄ0E÷9…@«$ÓÖÓBÀ±ânâÐhšµÎ nOÊ†-báÅÿßÏþ²1ƒf4½iÒ~<Ó™ìdÈt¶ïHëP=tÆT´ñ*€zìÑxÄ)æ<Z<šÑö'O"vÖxòzPTdÎ¼p”žËîf¸¿¢ñWá¥u9=€é:X?Zhô µªnŠ"üO\½Ò•Abâ\juJ|œùg‰ROË’?÷—½&’!ßxÛ¢¯äüKßh)|ž•EöcÏBŠkÞ[¥ÞâûÊ¾É!4Ó×å/uÕ7é±w¤šxœŽKN1D÷>E_ Q{ÆžŠ"Äìàn»=c‘±GNGÀíq8bY¯ôJ%•,™Hé®4!á€–Fco™göú©ã^[µ»ÊY Ó}	;gÙ Úyð¬gË>R0h±¡ùA¹›¬¥Â+'Yáévõ+œ>îáH÷ð˜²ðåèËvmêiõ‡v U£[áêê9}A«ötiŸ®æ”(b©›¸Jm@©7ÞKú~€.uÓY½§%7Vbüåx ~ ˜hÞšxœPYNÄ0ýï),ñ=C¶&®„€C8ŽC#ºiÊ\Ÿh$.ÀŸýô?·*ÄFÄS@ïyL‘SVÖyV–£6£³™5ŽÓp£*[ƒ$1Ì8š,äB2L†Yw£Î“ÎøÇ7]˜,&´ØíãÄÆê€:{TT6;í¼èló^áKJ›ãyð/ùúXÞÊÖd¹ò¾¾‚vv2:oà¢¼RCG×ÒšüO=|Hý¸ËU¾O9<™rÝW¸Ñ¹\>+Å²Q}^éè)Ãð¾,ûr?7—ºÞ{ÓþÇV~¨•}ƒ6SƒM$@Ýñöyrü›!xœ¥ÍN1„ïy
ß©ªýi·©„œ8‚à	Ça#m78xz¼üÄ)kì|3#™:æwvhë¢õ¡é75=¹¶Ûnú@­ÝîÍ#fžÜŽ=QgƒÝvq³óaGÔªj]Ë¬óm°«Œ)Ã-Ö	®3º8c†óÇ‡¯ñ2Ñ›0sšÒÃëšÒáÚM¿ïšý`{8kÚ¦1ª¢ÿc®¦)!hœóá¨M´·Äg”˜fff_ !sa1æfÖùï1¯ ¤ƒÏñ™‹ž>Õ¸l??cu`Å±ÒŽæô›pÖÔÂ~÷•Æ€Ô¼A©š—¶q éñíi.²6w¨z^âjæÌZÆ¨™õÍÀ9§¼áiú”Õ.ÿ-MXL©D\J¨Ó
\•Súx*ä×æœŸ·â™xœMNÄ0…÷9…wl¦UÚ&u¡b‡X"'Î4šþ)ÉHÌíI9B^}Oö{Ï%1ƒ–Òhç4Æ)MÊJ…½÷4';­?ìIì6ñZ€:eÌÐ9±—š:Y×;%iÔ){/Ó–àƒc™àížÝ/·Z:à5®…çÖmË:5sF‰9J)ªºÄRøŸçâ+3Lü¡È×9Ãžêþ‹-B¼—§(V)òìO@ü›–xO¹~Éèq8´B|ÆëÊ¾ÙBhèñü—BâÔNlá’xœ…½NÄ0„{?ÅŠ†*Qì\:%O`ÇëÄ"±#ÿ:žî$¨èv´óÍØ›"È…è¸è¥±¥²–cgzf8ŠVS-5ôÀÉ&ºJ0Æë•¡Ã€Š³F#ë{¡:£¤â¼#ò‘5Dæ4û ïÒgm#<\†ãè¤ö5êüôÐŠ~`}w€ªáMCF¿®6%ðŠ6Íðœã8zµÚÅÑº„K]ŒWœr*.8‘ZÃŒË1ë¦ÒiˆY­èr$ä©¬.x’å/ß¾äÁV„½¸x€‹ ¿%ë]¬É‹w·	"N`d^|Ìè …s©Ø¶Ò•þô^ãR.7Õ|S¢!»€£ŸœýÄküýo|'XJ]òf'‡ºòÆTê|÷Ï5É6/štŸxœN»j1ì÷‚”!{ý’!„tir]ºB^Ë·Ëíã²ö¦È×Çä’˜F#ÕP÷H½ë˜‘­‰ºdR*K«$kŒ$3vZ‰+m¼TÐ™\´Òû¬ÑEÌ!*t¾'leŒédHVù?¿óÚYö^’òD¬"j™ÛÕ˜BpV÷¬t
(h¯ÃºÁ…Ç:Ä½ô<ÝðñF^Æ¥òtì×ù”ÑèƒjÒI)š:µòÿ¶Å‰·3ÃuŸ&ØøkçRá®3·u†­{ËãL¥åññÝ}¥‘Ê ÷ðÓfû|mÑ×‰ë¸.å âíõýô14l	‘xœŒmjÃ0Dÿë{–Õ·%ô*+íŠ˜ÚVå?=}œ’f`xoH¶&ªÁˆ$ñ13vœQ7ôÅ¦BØ’±Z=hÈ>Á6
ÅcŒÍ¦P$‹ä¢Sˆ•ÒçœÁÌ^GEç¼÷?ÔO^øzïÚ×>ˆû§ðyí.É:GøÀ€¨jß¶eNùimðæM*b†BÇhgø}õ9ûå{¬2—¾C[V9þÎ!Ä›¨'I=Pl›xœÏNÄ Æï$û“xØ‹Vhi‰1z×›/0À°mJ¥ÔÍ¾½¸1>€‡Iæß7¿oJ&®ZO\iÙYîµ­D'8ï¹pè•­v°š­˜i)à´p¦·#©¾Õ£íœVÒ´^é¡Ni‡ÒàØ[ù·ïœPvì„¥¤x;/%„ò¾ï­7Æ÷2¥gšËdöÍNðtË›[ñ2/…BcS|!;%x?øÀ9«Ý8—BÿS³wÊ'‚u2}î´¸k;ð9EXq§Œf^0?FÜ*…±×ÒBZN•YæHi/à«ûËØÇ4o°ÅÒ¯·é’.¼UÔ+ñ.Û”öà â™€¾(_áç\ µ´@8þŽÕLÆHUÛ|¾]ŽIžxœŽ±jÄ0†w?…öB°'±¡”v:nh)º+²’íà8íë×ÇA×~‰ïûU23H«'–Ö™–ää‰´A¯¤ì¤ò­ê¬UÚ)êÉ‰3ÇÞ)?v4°í´¨õÎšQOÖõ­òÖy4#G¹¤ïx¬pÊ8.3<n5ÎÏ8/ë^Rn(…'P¦zk´tð k·¨Û°”Âÿ£ÅËº¦XSœ«¡,ÓQ`ª¿Ô	X„øHáíó•Áçå›w(øÅwà‚z	;SŠ¾Þlœ¯(àÍ )Šˆ÷‰8GÊŒ;W˜ÿ4^ó©¥ïÚFü)z½•xœOAnÄ »#íFÛC/í"UU?Ð[?0À K
Dý~Ó•ú,Ù–mÉ½AÐ‚Fë”ä#	/¢±FINi§ø0Lq4ŽhÒlÃJ·N™0	i•å1eƒõ¨}˜¸~âÜEOJ*£þò–[å=i”t:j+‰:3z/µÀ8hî})®”úâöæx½óË]¼§[§õâK~¡¤ÑÖÊÂ39g‡›Sïô¿6û :lûºB¥¯Z‡‡A@¬%CNËþ‚-cíŒap õTn¸ÂÝ…µÌ'vbŸÁy«8g<ÃÞðXü.õÚ §2=A+ñšn3ô#Š­íyû‚Ôl¥vt+]~ ÉÁŠxœ¥ÌMJ1Ð}NQ{aÈ¥AÄ¥‘T¾Øƒ“é&&‚ž^Ð#¸|›7@5ÄT¼ÓFLãÄÁ8Š×Ön-r¶ Î<pŸM“šJt,’2{[›lp¥rˆ­rMÕVa•×ÜA¯WÙó^V?×-ÓcÿõeÿóóŽ5ðž/òýDÆ;)&mèA[­•½_çÄÿ5ÐOÐúÈo £Ñü:QÑÔÈ„P¯˜xœ…AKÄ0…ïùs—d“nZÜƒ„…þ‚if²6MÉ&‚þz³êÁ›‡ÇðxÌ7óJf×‘óÊ[¥Ý5‘:°ôhI¿?tƒÖ}gô¤&±aæµÀd,J÷¦—ž¬é©wØ9dãRNÞ±ÑÆµÌ)Ãkp3.ð\ãV„ûøíwóœ+åªqç>@m÷{)¥‚Ù¦p)ÆP
ÿášùÿR”ì~)‰ )”Ö¹DÌ–t‚8‡w&ð9Å;ñ²^`LK Û±`a8^c8bAxjíÛ#'m¥„±íñN9QuÆ]ðÁáõ‚øzYnŒxœKNÄ0D÷>EK¬ì´¿Bˆý¬8AÛéd¢‰ã8÷Ç#àìºžJU]­2ƒSÆš¤m
ÑyÍÕÈãh¤L^““MÄPª¼5˜ŒDšŒˆžÇÈCð)ø‰FÒN:íµ‹þÏ/ƒÇe'Bm˜Ø#)£lÂ°ŸÞvæ†í¶Wøl\n¼Á5>àõø‘—øï%§ã’öüJ£U.¨€ð,­”¢Ó¼´ÆÿOW®3C9×*|4xR¦ºgÈËí|ÉtçiYYˆRù±®¿¦þ:Ó±ôþBéNó²ÍßjUn¨Ÿxœ…Î½nÃ †á«`¯asø9RuÌ’‹8ÀqŒl‹Â^}Ý&™3¾ßðèk•YºÁXÁFÎ=$NÉ(=SÈ&è}Ðb£Ê×&'ãhÔAkÏ)ðˆ>¢(8åÀƒ^Poó­ÊsŽ3­òÔËÖW’Ÿå¿ó£¿æžê=õrˆ?G9€6ˆ-È5*%â­”Ü¿g¸W^è¥ØÁ¢÷TÄVùï½<ÓÂS^YNû1¦ï¼ÃÅ….ùz¿••V’xœMNÄ0F÷9…/0£¤m’Ž„bÁ`ÜÄ™FêŸ‡a8=iÙ°`ÅÊÒg=¿OæDRïŒòŠz#›VùžÚ [”¼ààLcÑ[Vl˜hap=âp1ÖHÝ“
HhµAeCAvžŒÆÖ…®Xx\¼2m#-ðŒLò°Ï§„‘Ç).g·Î ºV÷–ZÃI)EMçÈLÿÄÅKü$O9~ð}#ÀÅÃP®HÄ%-ðS!µe.C¾ÇUˆ·‘~‘;4ãUt+˜®e®¿ÈÇµLÐ9Ú¸	¡Šó	œò
áè‡ö6RªMêõ{]üá‡Xñé†÷ò,¾YŠ˜xœO[JÅ0ýÏ*f-I›ÄDDDðKðÇL2“6\Û\z§âÝ½íÄÏs8OÙ˜‹ŽÄ	½Ë4zäl,9µ­™ÈƒµH]qãU€=–<¤Bt68ÔšRDgìƒ!—1iF“Â]æ¶Á;W™áu¿åž.'èÓ	^ê*üÕç¶<ƒ±£­ÆC§½Öê`—*Âÿ´«·Ÿ*ÐVHmÚo@(¨ÔG“ZîÐ
$$8Þàr\·ö]‰	p%àÓ'3Ÿìtz¥>ë´2u­”.Ýÿ²GýymÁxœŽÍJÅ0…÷yŠy [’4?­ˆˆ;qéL2ÓÛ¢MJ;W¸oo+nÜ‰»ó8?²1CÌ)ö)$m´&“0÷™]ovHÖXOµZqã"0$êÙÅNû½òzsˆaðÙ¦\^eª¼ò,<_÷<ÁÃû	m:ái.Âm®Ë#×yë;c4:h­w™EøŸqõÆåsaH¸TXp]™ ‰6Þw¥^Ê.Œu„\×Û\. ¡à¬õèþæŸô)7´ÇÄ|)LMÇ&ÝîÿòS}ãÚu¬šxœŽ;nÃ0†w‚°!Y/º(Š¢C–Ž9,S±ÐZ
dHsúÈYº8ðûøÀ_ ¡­•Á
MÈÅ,ƒwJcÐ)CˆB>Š‰]]¡T¡®ºÙ*'Í(U˜ê -„fPÁ«Æh™Ûë’|R¬|ì›_àõë€~:à=¦Jß½Ïë%5­æ:n8gÍ®±Vúç9;Å´¼n¥ãÇïôt1]ÀçRök9A«ß¥ÖmmÞ3vŽ—Ds—Cè¦Ÿ—¿$`x,hHš'xœ‘=oÜ0†wý
n^rßYþ¸ ŠYŠL:ëƒ¶‰È’+ÑMîß‡NÐ ÙŠ$JäËç¥8#Âé<ýÅ¢ö®5çÆºnÛKïzl[{i/Úig|ãÕj2F‡¨mÝ›¾n]Ë{¶7¶‘³kÛùºmû¶³Êl<§ß‘x†‡­¸îž÷àh÷àEÆpti¹‡“nš¡Ó§³†CÝÕµ’Û…˜ñ?ËÕ“yÆ‘ÞÅÂ&ðÉm‹ð¦áEtÒÆ`7
žâ¤Ô#½b+FÑ]iA)]VXs²—RèBŠ’<†j‘6ä-`Qm”ˆ!ã».,&®fYüöŽÓ,CDôèð…/V¬^ŒLØD¨LqDÂ\}AJÀ’á?ñŒ;á”Í[’¢®i|]9âp…wÑÏÚ=ÿË0n $p³‰Ó‡1„Ý–b“'äê¯™8™üCâ£R?hŠèiözû/?¦Þ 5“ØB’xœŽÑJÄ0Eßóó-iÒ4é"""¾øèL“É6ì6‘t*ú÷f×¸p.÷Àp%†Ð´„Òj\fòÚâŒ±F©m»(í,>°RfPÃ0ØˆVJœjvKÝh[’•òsP~ÔZàÁk©ðF‰Wx>v¿ÂÃåýrƒ§”™®½/Û#mï&m&œ¤­Ý3ýS/ÅeäTò	bú‚•0¤|†’!nÔÕÆB¼¦|o¯…w(x¥ üÚ|×j-uï…xOçL¡+1vË÷é/Ÿ‰œ$q–”xœŽÍJÅ0F÷yŠy–´ùUDänïF`&™´Á6)m*Ü·×ëÆ­¸<ßáÀ×vfPLH„Ê:GƒÖè´-±’‰Ðy²Zi9Ql¸siÀ‰œTÆ[ëMò£T‘“6va$=k6£C4Ï6×®œÛ—ó3<}Ü¡§;¼äÒxéC]ŸaÐJy«´uÐI+¥ø^×Üÿ3ï[ÄÆ°b'>„x=9—	Î´
;¯õ“s¬"o\"—pƒZ —£á²ôB¼å©pìjJÝÿòM|‰$rHšxœŽKnÄ D÷œ¢/àQƒÁ˜hE³Í2'àÓÄ(¶±p{1·sƒ(Ë*Õ«*nD0:ÓL$]ô~V¨MQ)i­›pÎdÔdÄáí2›n)©œšR2ÉdtÆkk]À¤T˜PëÑ£þâ¥6ø¤Â<®3.pÿy‰[x‰²3­·X·wzçÎI	Nˆ¢»[a¦ââë:ŽÚr?ëÎ­®k/[ËÉ°ûÎÃG‚­&:{¸|ï”†šóžoY¿1+bá™xœ;nÃ0D{žb/ ƒÿA.Ü¸ô	¸Ü¥E8¢‰’Û[n\éæÍ`fúÂh5KB
§4Z—S4¾ÅHVéÐ•XÄ=-Ü:`QÖ“WÒ£W…²´R…F‘e›wmoH¤­óg®}„ã¶æ>nO8à¾jëü}Èóô	ÊhícpQÂ ”bw§Ú;ÿ³.NõZšx½§ÌP	¶5]wÑ õžö©W(Ä¥^Ó0—2àïû_Åc,b˜–xœANÄ0E÷9…/ÐÁI:uƒ¶,98´šŽZwÁí¡7@¬¾Þ—Þÿ¶©‚D
FICQŠÈ*¡÷¨ªªæ”³WwçM›ALHâ‰®˜5DOU4WïG–\KL>ã8v|Ø´nð®³Mðvìy‚§Û	9áen¦_—¼.Ïàû)]û„Ðá€è~Ûe6Óêîµh¼è~ç¬Àfœ§‡¢gÀ~È9Ï­ìÎ}ÌŸMK·ÖÚÉ÷ã_ÞÜxb¾Ÿxœ;nÃ0{žb/ ƒß%Aâ6¥OÀÏn$Ø¢‰*|ûX70\ÎæM_‰ ¨€+r ¬½Î*fmlÖšŒ´hk(:”¨Œ¸§•ZŠÖ£cL(½2È‘*ëÂ¬]±Ò;Ãè0ed‘ö>.+üÒÔG8ï[áózÀ)ð=µN·SYæ/PÖ¢‰RŠç:O½Ó›ºø©*Ý¨´4ÓvO…`Û3Ç©U!.Ó_£:,ÌC~|¼’ÿ =^”žxœ=NÄ0„{Ÿâu4ì*ÙÄ±½Bè%\À?ãÄÚÄ‰lGˆÛãÀåŒæ›÷¦$€ø ¼Õjà·Æ_záy§¬ö\9i,j@ÛX¶é„X¨—­ï¹Õ\%,WÆãÒ9oÔÐêÎsîe?0½—iMô†P&zÙ³èávˆ³9ÄSˆóÙ®Ë#µ}×	)eÛÐ©š†Uw	¥àŸ8{vŽl‚. ¨äM[PÞÅ::Æ>¦)aDDª1GeÕ}!¡†jw,™VÿcWbÓ#2éLŸ˜ç{ªôÊ\pñ®fšÃ­^ØæúuˆãeÐïŒ|fì=Œî´z2_×¿¬bßÉ‡ZœxœŽKNÄ0D÷>E_ £vìøƒ¶,9?ÝÄšÄF‰ƒ4·'¹bùJªzÕ7"0‘9è4²Í=féŒ—ÊkœœI’¦I+#¾ÃFµ‡è³ÏI{çx4ÒãE—0ÚÑÛ	YM,ÑŠpô¹mðA¥Ïð~ìi†çû·xÁk©–[jëH­”uÊ¢„¢8ÓµôNÿ¬‹·œ¡þ¬%ŸŸ?`){‡ÔjßÚ²œ»ûá²„š…ø,_•òÐ˜‡øxú‹Süh~cÕ‘xœŽ[JÆ0…ß³ŠÙ@K.½¤""úè‹à
r™´Á6ùI¦¢»7E ¾Í™óø¨ ‚Tj.)ça6h4
QNŠjz´sðvPœÝLÁD0˜Y˜…Q#×~q(í±aZX­æÊ	ëoNÚrŒ´ÁÓYÝ÷ïWèíc"Ü{—Ã%1+9AÇ'ÎYû‘ÿ9gÏ9ÕXéòÅRšEÁ[.ÓÊØkiÓ
´!xtÙ£ÿe*µf“|;b‚?!´Òì;¤ØÚ3ö×„¾Ë!töëî/¢ìB1w
–xœ±NÄ0D{Å~ 9¶“Ø!D	%HÔ¶oX—ØQ¼áîþ§¤C”³£7³C"(aø”â†·
×¶gÔƒpÜ˜–wFœ«Ý)Øj7LÈ•ê„Ôˆ\KÓ:ç¸ôƒV*tR{‰Î;Ý;£™ÝiÊ¼c¤	^÷â'xº¢q‡x‰‰pn|^ž¡UR*Ñ‹¾ƒï9gõºD"ü'Î¾¦Heµ!Ä[L#co{!(yA¸þv± e¸ ®às*±Ð±3äm±DmàsB–·8Ædg(tŸ+y§ƒÜK•¶æÚ4!Ì1í·š·%œjc%¢¿?\-µã»ÄœÆ>â˜ð|Ê!œÜýñ/kÙ~ŽØ•xœÁNÄ0Dïù
kÏtÕnš´A!8rAâVNê´Û¤JÝû÷¤páˆ8Yãy3–9A×!zY÷7fp¾íUílSŸH+=hÛ£NªµF,˜)2˜–NN5²qRÊy_†5èµu®ö²7F¢³hn<¥¯x‚çmu<|ìâhwñ"ÓåèÒüM+¥Ô‘
ªZ×µ(Û90Ó?ãâ-ÛÃrAö)ÏàÃ'­B¼LÇGà‰@·•ËºcÈ+p‚m%À¸,9™  |[ft9‰Â~7ŒáJ…Ën
LŽ·Lw%8€KñJ™÷C;ú»ˆâ0ÒºîŽ8œÏÒíöòõ(Ä{#Uò¾²·û¿</¾ %A–*šxœ•ÁN…0E÷ýŠÙ=]€JcŒqkâBý)Æ–’vxæý½%Ñ½îæž™›¹—#h]÷¨ëAªiÖJ5¨NµC×HM‹jhU}#6Œ´2èÚ£»ç®íHÍJJ%‘ÌT+2¦ëÛj$=ö$pç%Dx!Ë<ïi\àáó¥9Ä“]™\9ÿR5M£ó—ŠJW•ÈÔ[fú—½ª»x#.{vMŒÎc<ñ<a®ÂýîiÌh±	Øz*áã·Höä®°çvÎg§»“ø:RíëD)Z4ŽàÆìFï(¥[ÀÈvÆ‘S)Ä»=¯4ažs½ÿK#ñ¿â„ÎšxœŒ1nÄ E{Ÿ‚n+Ç0VQ¥O•0^[Zcã(Ç.r4ÿK_ÿ½Z˜…¥5B@5E°¨9šˆ€­×c"Â¨“ív*œ«À)…I!ÐÚ‘²:i™’¶0r³¸Qù¿¿wŽ”w^jéb†£5Ê¢E•šÂƒ÷AûÔÑYç­ˆ¯ÊûÌY|PåC¼áê÷BKŸK~‰Ûú&”Fã¢è¥•²këºÔÊÿÄ»O.¡PŽ³¸­t4ÕMl“˜kÝû0<†šæüéó÷ÊÃ}|.Ý/iÙdçšxœŒ;nÃ0D{‚+Y$Eî.ƒ Ò9Ä’\Z‚õ1d*Èñ#¹@šfðÞÔMD±ŽÐiÁì3™"hŠCƒ¬ó%–Œ †Jh¼ÉR•9 „.[úb©g¬ž %ßÐYXüã9xË)!$IV`(µ!dm
e™tÃ{ÖM}ÊXõ±?Ó ^ïg¹Æ³¼K•éšÖùM×Û`z ZZ7Ç:µÊ?õæK¶›¨¸ñrh—™ŸÇÕE­Eµ>ž/]w;ŽöxêÝ4.ûO»|ÏÒÑ¦il~Í@e‘xœKNÄ0D÷9EK¬üIü‘bÅŽ3 ÛÝžD$ö`wÇÇ‰°)u•^Wq#‚4“EeÈ¤¤…–£Ëiö	ýð.K³oÒt
ƒT.fë4~ä)Ì2«…&…‹ssŠNýÇo•VAÊd1˜ŒvYœ™uÊ¨êQXò~
'¯µÁ'm¼Æ³§žï÷ån^·Â´_R=^@ÎZ9å¬Õð(ŒÓH™þ÷=½S»ÜÎ}‡F_'u†©!·z@gú¦kØc£íé#hÓôVÏ‚Jåu¬n¥s(‰ fÈ{"må
g§õÁég(WØ·ÎÓqùŸ®|•xœÍjÃ0„ï‚¼ÃB¯m¢_Ë†Rzj/Í-÷°+¯cÙNe9ôñ+}Þf>fgØ’™¡×ÖjÜàuÓÆÄ,«FÍ¶Ã¶BRÎ‹fž $Ý’™‚­aRº•6ø®ë­Qˆ®	¡%Õš¿<»`½2*(TÚÍM×j²Žlß´ìÉ»ÁX¸•qÉpåXFÚÖ0ÂëCïæ=Î…Ó>,Ó(k´·Î*/²‘RT:ÅRø×âÈùÂpÛR‚Ìß¯ž”†!/¬…ï|ÁDkÛaÂ
²ñÊ=W7Å™!Î±DLpÇ´1õ‘DX)ÜrÝ>§¸–s,<íÄNœFœ¯ë3|}žŽû_Çžz”xœÌInÃ0…á½NÁ8Ð@9RE¶Ý¥'Ð@ÆB<] ·¯sƒ¢Ëÿß“•P;Ÿ0Z£mBW¸Rð}áb›hk05åc¡^}§•fH‘
Ç9Ôlœ©ÞîyçÎ“wH¨Ò&Ã²Â'5àº=Ë çÇ;ùme™.`ÐÙhœ÷:Ýk­öuj"ôO®n4-?ykc…´JãTD©¯vŸ©vs—_§¿|«_q[®•xœŽKnÃ0D÷:/à€ú9Vi·]öEÇBb«pèEnçE—o03xºŠ@
ÞeÂÌ‰Ð[t.‰ôKŒh)'gû˜›_ZeQØ«®Œ(’98ÌÖø˜R	ÞÅžyÈvð†6Ú
ßRu‚¯íÁœoo8ä7\ê¢r?p›?ÀîÉúˆtØ#š=«ªüsn>KIç;”ÆÛ¼k“Ö¶óS¯‹”®c—Ÿ§¿œ›f"[–xœMJ1F÷9E@‡¤¦Ó "n\¨ z‚JRéd’&©žñøfñ ®ªøxÅ÷(.D •G§‰Fê'79ëÝ<Ë£Gí½ò“¥6NyJ(Mç¼$2vèúÉ¨NËÁNóì†^!ŽGkµQº¸óš|1m+%xF¦
Õ\çSÁÀké`óéÔÐ÷Ý¨õ4À½<J)Zz
ÌôÏsñIg*L8ÃËÇÄ`)Õ!ÞÃwËÿRfp¡r	fg4‘­®6*'àµ˜n{cì^kÈ©
C|¡æõëw¯Ô”näKÈ{…HFØ(o‘àBÐþÃ’®µ—F‹¦v?ê÷€Yxœ¥ŒKN!ç¬â&Žíð‡NŒqä\ŸËk’nhÐ·|Q7à°*uN¿!H4‘kÔ!*XôÞ¦ ××É61­èª#rºKTsá,0Ç¸õj¹—ÊË¨-oT‰}«´Žxs»¿\î<ýpYþÌËy„¶„z<“‚E-µðH¥dÚ#÷Žÿ{!¯u”®Ô¾Í«\Zw% Ôi÷®Ç\n0Î¨Ín&ïysBÊwøüÖç¹çß"8Ç¾Ã…ï[‡ÆòÎEk¢“%xœ¥‘»NÄ@Eû|…;Xå1Ù$!Ø‚
*èWž‡X›—2^XþOñ¨é2×ö½ÇŽ,DàsSv[¶ea›m™Uk‰RýÆœLƒµŠ6+«dÆ…FLmîÛ”È:£Í6ËëÔ¸ªi¼)2Ärë\m³ºHð(Ý´@z£Wìí‚,Ü¬ïqó­ÜÍƒ7·™"¯Œ)›®Ò*MU¡ÿ¹$|™À“:<ðÈÂØÃöG‚V){‹ªÂ¼ð(ûžƒìYhH^ºØìéÇ@þ¯I9(hŸ–Ñ¹é( :§Çâ…àáqwÿ-Sï7 ;0?&Þ;Òæp:	i–‡x5Òs£hzøŽZ…=
ê€nU”XË.ìe"Ý2½˜Úv8ƒ¯ˆšü„á½¿èdšÄ²„8>ýÇºÆ¯-ô_ïb¹¸N•’]ÙE¨h kÅË¨~3­”›äá¹Çà•xœP»nÃ0ÜõÜ~D‘\Eš¥C;ú”HÅBmÉ°”ýû*AÐ¡S¹‡»c^™µfÒ÷$;µåVéV*©ÈqoØ:Õ#9ÇbÁ•Ct-éÁIÌFnÍØÙVuÊà ±sN6l·8Xç<ÆŽ™—‘0s‚ÝÖ7¸_f›jç'h7}«Z9èš2¢lgŸ3¯ðÊ>p8';Âîó
js{2O¿ò®¨•–P5Û"‚É[É‡“ÏDe‘G†—÷·;Á#Øx)>W"\f®Gp~*Ÿ	saL,î÷IÛ¿ MåâD¼ÖBý)0UÑ¹Ê|?þ-žÌ­ñŠ%ÿäÃ-ö_É?šŠ5£˜xœŽKNÄ0D÷–æ-±ÎàŽ?±%„ØÁ‚ÙqÛÝ&aòçþ˜‘¸ »ª§*UÕÂ1û˜P¥S™ÒHJ’$åe¢Ô§ìŒ¸…ÂkõžIrˆŠÎÆ&VgåCoZÙq¤¿|ß òhœDÏA[5pðÎùÞI›¢f£†lÚ®G·Wžê=ðt×ç»y™ÖÊó9mË3 V¨­ÄÁC'­”¢Ñeª•ÿ×.Ÿ·cž¡ð÷Á{…DÈe[à‹¸”)]—°·!ÞŽ%¬]á@!ÎÄi#†ÜžOÔ¥Zf+ýêu?‰“xý¸ü ²Rp)“xœ¥ANÄ0E÷9…/Ðª¤!b6°`\À‰H“QjÍíÉ€ÄÎz’Ÿý¿f°~¶®×ÎZ‡ï™÷dzÒu¤çid"·s~Ô'ÉjÚÍLiê{ÍƒñÃ¸ì~4^Ï¸êòÄ–~Ê’<æ.%¸¸~Ï	eÁÔÒ¹I8¶.¯7ÐÝ3ÎÆ@Ó]§*]ƒÿÇ¡îˆ˜ aù\15…‘ÐFŸËŠù(¡º%C ÆI‰€‰.sÚZx]Â_!ÆKt	ãˆ]&†O\0BáÈ'¬­Ø >p¤BÕ-¸ÏIJŽ±¨Võ„+oGt—`•ÔÏ¼q9Õ—kÅ@a;F<W<¤,ÐµJ½„·ÄÔdï{¾ús!ê.¡ŠxœOANÃ0¼û{ãB‹ÝÚNR!„8páXÇëÆjjGöF¥¼çˆÓîÌhvf¹ÓV+ëõÐ;gäˆ]'•ŽÊa8z+MPŽzôbÁB‰¬µÚv£ÔVaÐhŒ> ×ÁÁuÆyjpÖ+O¹ÀEžàm­ãÏ—ìÝ^cbš÷c¾¾€ÒGulÁÚÀNZ)Ec¯‘™þiïñÂÓ|¾¥9·òâkŠ‘¯À
¡žâÏ!ÎmMMˆüPÁ­!´èÐÚófkü-—KkU
<ß“‡µR›€ËRòR"2§€ëÌÀSÝnÔøC{!>ã9‘ßåvî~úËSâ‹G…ðxœŽ;Â0{Ÿb{¤È›ø	!DOÅ	ÖÎRÄ±âEˆÛÄ˜n¦xz²1ƒÕ1³M8N!&ã=cïŒ5H&»{rDR•6.‘(a¢Ìì²¢æÁõAƒÆM8L^t¬=å±np®.p!áÇöÓ.~õ\—Ôº´.'@3 .8„ƒÞQ{]fþA]ç²w]ÌäµÂB*Ý¹©k#N‚’xœNKjÅ0Üûº@J"¥”zž@¶ebèóŽïøu–Ý–YÌGí"–i¥@Î§ÕâT¨¸|ôe¦À¡ä9ú°¬fç.M¬÷Ž¢EKÈeÂ5Š™<&·úxv2e6|êöèð­²oÒàƒUx=âÅï«n?µÝÒãþ-hgDKð‚Ñõ^UåŸuóy*pË°ó¡¥>ùªÏq€!ý±¤÷±±6ÐM.éÐ­Ÿp½™›ù?YîžxœŽ=OÃ0@÷üŠû­ìÄ±“ªªJ:"Ü‹ÄŽœ+ˆO2‚:0ôtïîqA£Hjc´q¡S­okr¡	ºvAb×6ÊúŽ„ªf[018ª½±N¸¾¡Î;©%’n‰<šN{R=Ö¦7BVöÆC.ð„‘¸Ü?Àñu²qä|øØàÞmðã¸÷yz;Theß;¡…¨V<Ef,peœLp±Œ·Ís±ë¡1¦Í¿£W×¯Èëã1zL•<ÁãËógœáa¶~Àu)¾'»L´sß‡ßÅwKO•ÄU?žùv›œxœLKNÄ0ÛçOb=%¿æ#BbÍ!ò’—i5M[’”‘8=Õ,8 –¶e»W"à
UB™²@oŽÓˆ™Ÿt9FãlT#F¶‡Jk
uòFh­Œ=!Ç¬q”&ò…áV“ÿúÊDo•òJX”˜RDN4^Dâ.‰ìœ”!°pôi«p£¹Ox´8ÁËCó>¯–!nå„–Þ)m‡7œ³3-sïô¿5û¤z%ØeJ_µOrÝ
üÐ÷æÖžKhç?c[Ùç…à~~Ã¥õôz]ï‡_Íh7“xœÁJÄ0E÷ùŠ·tSÒ4I[PpáÎn$/yuÓ—¡yí¨_oýguàre!Ýa—Ð¤©ÅÑ5&‡“Þ¦ýÐÇÎaT×°P0hÓè[k;ßï7YDtÆGbëuo©wQ…UÎewÚàr­pÿCÛ	é–/‰$ªÒ0É#´ÖŒCgÖpÔNkË<gú×X=•ùš/·,g8VIŸ¼Žc£T•e¼Íôñ÷8A,,!s…À»…¿ç²VX9†» Ï/¯@_B\÷phÔ/Šb?˜xœŒKNÄ0D÷9EKl`1¡ý-!ÄŠgÙN;±Hâà8Äé‰FâìªJ¯^-D`­äDÏc!zÎ=FM²ÊFË…ÒÜ1lVWh©Ð[ä(8#­ÇN£—Rî…•“Ñ ‹Äµ
¼V<ô(½!§u1ZA^1Ã¼C‰Ò¢Òx:cãö:æŸ”êè÷-ŒðrÏí½¼¥¥ÒÔ†<¿“Ü!Q¸ FlÎuNµÒÿÞÍ•`Ý§	
}í´Uxè –<ÃÝJÛö<»íô7Í{ú†|£r™ò2À”ó
imÌÇ5×)Oí/ø‰jàxœÏAjÅ @Ñ¹«xÃúƒú4Qø”Žº…B'A“g"$Ô&¥«ïï:½p§"°'r8K!Ä¼”žL@5£¶ÁJÔ½t‚³ÃJfË%G)¨ïçCÏ½RˆÒ£UƒSÁpHözbî«­¹À'ðA±V¸ÿÐùæéŠÛLÅÕÖ%j¯ ”´qÐn\sÎ¦¼ï±5ú×ÌÞã7ä“ÊmËi-çb‚ºæk×¸ååé¹c,;!–ýz°þêx¸…ºP*¬®Â k‰T_ å¦c¿Ã^_˜ xœPKNÄ0Ý÷> S¥mÚ¡!Ä–p7q¦aÒ¤$i‡¹=Î¬X"”Eôl¿#HRØveo†æ89ˆA!õG”êhº±ú£Ð£¬VŒä3Œö-£´Ò“h´¦©Õ#¢È¯kdGí€¨*Üò"¼’Í3¼lIÍðx. ž
x¶>“«UXž ‘í}×·í0ÂABT\]lÎôOzõF'›
=j0öG9Sôä@Ö<ñ1ø}!H×d¬È.L°„4Xÿkr OPS‚|]éR€Ï-å*¬ä­?Až1CðÄn1e˜ˆ s¥;¡:Ì¶k¤Ý†-
³¾.qlt,Êÿy¹ÂB#'·æÆÜÒm¥¯x9]ÚÖïè¬†r0ôš•ÞíÉ“>cÓõá/÷«~ Ÿµ¬«–$xœÏn!‡ï<…_`Wd—!3UUµUoUzIÕ;`“Ae ñ'›}ûzv¥œ£müü™^‰ÀâÉ.“ÑV{)õ£Bm	‘ôt^$ž$Y²ÖM‹(¦Rêà$ªI)TÖi­f??èÙëÎ³ÒÞžÕDË´öÂŒ¾æ
?)ô¾æVøüw/Žv/¾†Ô)]Þ¾Àƒ:éY+u–pZJÁÝ-ôNÿù\|C4Ý@HetÈ¥‡œÀ³N£žL•šÏy#øõç‰Þ{P¨2·¹ôjRó,bB_5¿dÒÀh<¸‡‹ž¡rÁ_á²R%†M¿g°$ã¾æm¥Ý¡‡ôrø‘ÝØøWÍÍoÆ	…ip¡BüÞšØ2ââ¸me.UŠ;	>¼/^G[YçbjâÜÛ#±B»n6Ç&FBV-•Ø¥„Hƒå¸W@*Ä³ä5^ø^á!{°×Où}ñ¹ëÅ/ž"xœ‘ÏN!Æï<Ezpdþº›côd¢^Ôè@qÈ20Îªo/Ì®/`BBh¿þúµp$Ù êÓš¾nd«[E]¿k†[½Û7$ÛÓî{Ú‰#y{]ï¤ôhöš®F’µ”z ›¾éZ=Ôºõ(på)DxcZ&òð€L	nÓXîûˆ–'g}¥Â|u×]¿oeWrRäèl™éŸåâi^b8’†<±Ž€¬‰à@Ñ“ƒ¡¦X	ñáÙ:ðáx"x|~‚	Dr6‚ß¢'1ØÓË…ž­_¿Á·aÞ'› ‚Ì(ÚsË3`ÆŸL?hkå**2dPè…Âb2Ñ1g2+­9yAÕgž¾®ÿJ2ŸãªxÍ¢™æ‘bº¬ ô?/8Ú‚=Í\Ll›üå¡Ö¸QNÎ*x\TÙ{ðîGû‹‹£0/ÛîìL•ø©Ìº¤“xœOËJÅ0Ýç+æ,iÚ¦)ˆèEŠ¨¸Ÿ$Ó&Ð›”$Wý|SåŠkW3œç”Dº
Û
­*£hî„œzì§Y«¡“ZIø,Ø†‰BA·—c7¢$3ÕiR}¯º%ï¸µjæƒfx*.&x)´9
pÀB.³ÞïuB_ÜêCcâñ
Ú^H1öRpÁ%ç¬¢G_
ýÓÎîü'Yx§”}>,0×&["h–Þ½¡ÌØSò.ß~¨â¨Š>0Cˆg;ÌžV>€‰¡¤¸®µÖý-`°»žeížUÌ)w7Ïhñ¹niàÕùÆaX(äSª“þFT6ê‚>Ôò¿É/®À¶¢¡ï¸®ç	ûÂ·’˜—xœŽAjÃ0E÷:Å\ A’å‘J)ÙeÝ(£Ø²‘'!¹}’+tõáÁã}í"àF›¸ ŒÅæLLQ˜ÙSŠ|u%d!“Ìžº4…2qÇ!ÅìÅâ†œ%aÌè§!ŽD‹I7·*û,ÎIå€ïãúÙßžªÎKm'ÞÖpÁ£G7† _­5oºVUù§n.ëÞ·»dPy(äzìKzByßi÷U`©‡Â§‘Z>™ †R­“xœ‹Û	1 ÿSÅ6 $—7ˆˆ6`›ìÆxî"Z¾±¿†™¶1zR,cQ$É&k‚ö)²åX­SŠ&d±âÆsƒ{)MQ±eò†ÊP‚ŒŽ¨ÿÊ{ç¥ÀW—î×‘g¸bãN{úñ²amã³ÎÇ¼LgPfp2jí¤“Rt;ÕÖøÏ]Üê‡	ÞcíñŠ™pÂÅKë‘xœŒK
Â0 ÷9EöBÉ÷¥qá<ÁKòb»H[Ò'x|+ÞÀÙÍ,†;‘ÌžŠ† = Ù1ª½®¨ KÌ&E£ 4’-bÃNK£rÖ‘¯ÆF€ŠÙó5%«4†Zú1)/žÖ.LÛD‹¼!Ó.ÏûO‡ôÕëÖò>äµ]¤vÆÅ8åIˆ£¶™™þ?ˆûü¦"ëÚ2ÏËS| ŠöJe“xœŽ±nÄ D{¾bûH`¶EIº©òÀ®sŽ°Ìú¾?ø|ùl7;óFÃH?jÔÊ¢¶·£#+Ñé	Q2Œ~ˆ39Äê7ÊaTÚI£¢QÖÛ8N.ô²o±`BÄ†K£~çKÙà‹i½P†wÏTá¹ž²‡|]S¬],éÔ ‡irz4ð$Û‰öM3ý¿A|úŸ6`IëVn”Úø
K†ëRÊÎëÎB¼!þEðñ†¦"Õºäo(3ð… ßä±Ëgìàã‰¹lÉ3éf€¿WÎ]±BóîüYÜ‰_§z&”xœÍNÄ €ï<Åx6ihm‹$Æ˜5jö²|€Í”-I¦»úöB<xwnó÷ñ‰@õZ™ZÙaÛ¥û®îÇ;jIiÕŽº3hÅ†‘<ƒÖÍØY¥ëAö^Õm×ªÆäÍ^ÊÆôhP©î<‡LÛLÈ”à!ý¦ÕPÒ§m5©2a}„ºmZ­¤nÜÊ"WWÇLÿ'ˆÃ>u_`³FÁ¡aqž`‹ÁPJÎOB=|îŽ	,]a[0·àJ0’YòÉ#øpÆ8ík¹>lì‚Ï}Ç3Ü<¿¾Oï§ap/4à9ÃCœ"®ÀM÷…áZüów$ú#PÌ³˜Âù
Žk¶ºäç"M±È_¿¡xo‘.E€g—Ày°;ï‘*ñäí–[œxœMNÄ0F÷9…@«L›¦„‰K¸€ÛØm4ÓdÈš¹=-f‹X>ûó“í‰€G©zÝh©x¿ku'µFìQ1ëAªŽÈ-³jÅ	#ùZkÓîJJÖÊÊÖŽ#é%Ò¦ÁÎboX`ÉsˆðB.ÏðXÒ8ÃÝaƒzØàÁùLÇzË=ìT£öZ™NA%{)ÅZ]\ÎôÏqñìÎÀ!.˜aS¡·é½¸H0NeY/IB¼Í6Œ_ˆÙ	/	òL‰ ã®áJ†SÎ:?Að´*S9f²Ây@H4]=Œk§†§ý–þ6†Ÿ- ý¯Ø)‰5.¥Bµ¯nòd«À\—Û¿ü@|€‰˜õ’xœMINÄ0¼ç-qÆx‹Û–Fˆðˆ¶Ý™XdÃqràõ„‘æÜj¯V™ÁõÖhžTjÌè¼ï±1RZ­i
.vU^8§³Ó6’5ƒf+ƒï1yENÇdRb|DóÌ[é1 JÎf•u(Ã€R2GÊM6dT`o::Ú¸VøâÒÆxìi„Û‹ù(KãI¤u~eµ®Gôð*¯­îRçÒÿ¯Ý}r½3lÇ4Aåïƒ÷/†ºÎé,y§Zxz›i¿.ºŽRZk.ËÚ
i¤íï¸J
%¬´‘a9g†”Ðº—~ZCÝa¸…¿kuÁ—xœ­PKjÄ0Ûço_jü‹?0”.zƒ <;/‰aÛ“Âœ¾M`nÐ•„$P+D`z­¤õEï½•v´Æ¹Þ(üÄ¹–B¡DoB·c¡­1r4RÔÊ[/Isïz@#CT1’ó.XÕá£-¹Ài„o,‰îp«Žø¹”§8R›¶l_ã{MT
²YÄZj¯çÞ¸ä¼‹y]Skô_}Æ˜Ë˜¶Z†¸à~v÷Lp&˜‚<A[¶c%8@0yÑšžô²¦Ra:§_BmåÛ¦TÖŸ¿»†{ž‡g‚ë9l÷g€tõ›xœKj1D÷:Eï²²‘d>Bâ…·	Ä>@Ëjy3#uHrûÈWÈª ¨Ç£¸#21Lde4Êh&ÌÚzŒÎ)…>YeB’Þ‹;6ªQ›eŠ“ÍÖ:r5‰Aé4‘Œ©£VÙg_<o>™î3U8"S‡çùÚ°ð¼”º¿në<¼ÆZc°“NJ1Úµ0Ó?qq*?‡|ëzý…Á°o)Q„]†¾Á7AÚêÓx„-CÉÀ3Áûåüq9C.Aé°–ÞK½íÅª[ðxœ•ÍÁNÄ à;O1G¦cŒž<xÒ tØ’µ@€n||i\o^œdóOòý­ ‚PÖIí˜ÓTkã<7£Ÿ8§³5jÖ”qtròI¶c¹,‚J£'G­Ójö}ROWÌkc¨PŒØ½­©À{Ã¼b„gÛ°ÂCý9‡ù8ŸòæêàÒöLŒ\	%äw´ééZÃÿbTF0yÈë–Kºà‡eãŸ!"Ô=çT!/)^°´þ—-Á^l9¹}8ð±†
–^þòÈÕƒ#¨»÷áë·npèˆ8ß{»È72fvY›xœ‹KJ1@÷9E]À&_õ€ˆÎÒà*•r:h’!]seŽàî½O§”@èÙzñ§}à‚Y"SÄH9:Ž›Mé
I¬pÊù”"m‘³¢+%xò×ÅÙÕºë>&|KÕ=ßÞáùÁËC^kWùYx´XƒóÉ…zx²h­ù«­ªÊÿnóy+¤—óÛûeiÅ˜s)µ_Aw6…LGe¨ýkÌFZGp…Ciª”å(JY*œxœKnÃ0D÷>/À’ÿ@Q4Yg×èC×ô1(:Ao_¦@Û}W"È™y&D@½ÚÞuÚÏ~Ñzí­›¯<â¢q^únTã4ÍzlvC˜†Ñµªu¾[[7 ”^&\§qqãÐŠ]Y­;Õ-9x+ïŒû†®†±ÂKµÏ÷Là-†|v%½‚êu7Ì“î;8µSÛ6²Mÿio.Þ£QÔÙ}‚3;„À¥Ä¿kiuÃ¡:
;o†Ec…|O„ÆƒÔÈ2?(0Š/É"5eI~e²ÿ!Ô_dÈk¡d8”2Á^*Ÿv*kùã7RóØ x:²°C…r—Ö$‘%Áíz‘Åó€à)Üñ%!ÖØø	I´R	LóìU¡ö´–è‘ÎÍWúÍ–xœŽÍN!F÷<E÷&æò3£î\û:Ée P¯ñíåÆk»;=_›;Hkýî¤JqÛ´Ú©5ø]ù`ÂfuRN:·î¢a§“áb¥7˜µß¼ÕÖ™µB4¨¢FGÎmJGo~òQ;¼3µƒNxE¦ã—pÇçVâXb-O°ê‹2Ò:gàAÎs[23ýÿƒx+­×%èôÑiŒ\O±çÆB¼¤4B©`Þ·+1Á †ºÿÉÀ3ò5ó7p…³2|õÌ$&ÜÝ,Âè–#-ânömõ˜ xœ•KkÃ0„ïú{/6òS1”ÒÇ)PÈ¡½=V‰À–Œ$'¤¿¾ë¸-½V'íHóÍlŽˆP½èuÛáÐ5J¶FŠV}ÝŠFƒhx£Ðj3h6Ëˆ>ÃŽwªow-—¤š¾â¼ê:ƒJmÐh«ESÕUc™\ò)DxË8ŸÐÃ³Ì˜à>mc©Öñqžt*u˜ jë¦ã\Ôî8FêärÆÿ†¶ù&°'C`Â,ÌÔb-ár€´(b¸ÀØÞCˆf“˜axyMëDÐ3Òg)ÙeÇ+“ôWˆ(G0Ñ©Ñ™G
"ÏÃÙyK-þÆ’“L¤7p‰.c	ï'—`Û“ÉqÊ=É¼‚1ní—äü‘xEñ³G‘Ü'B˜³¾„ƒßh«Ùï®*Kç	ac˜ÖW@Šöv-¶nÖX²/Šc¬a–xœŽËNÄ0E÷ù
ïUóš´B$Vìø‚4½¡‘¦IÕ¸0ü=™aÃ¯|Îµ-óP£ý€“qZKí$¼R£³ƒóVžÆÞÓKãÄæwd&ŒQM&ÊY¬‹@ôP³Žªô¤ÛËQøƒ—²Ó;c[éÙ3*=Ô_ì¦+>mk¨](ë#I£´Ý Gºë[‰f×ÄŒÿ_¯é‚™RžÛßžSÉB¼”}Gà¦yÁßˆJ¼©ü¹âþœ*S<r¸&•¸Ð
­m¾-ˆ¯ÄËmú-åãÒ’9åªü}F'~ <2ns‘xœ•»jÅ0†÷<…Æ–’àKœØPJ/S¡Ð¡g/Ž­ClÛÎÛ×¡ÍÙ«MBÿ÷!•„œp1Ž”ŠÃhÆyrÂ^
),1”¡¬˜µn60 ÚôšMr¶Š0céÀÁQPÂ”é)£\²i`¨½—%&ø*¸-àUÌð˜Ûn:ÚçÍ›Ü™èŸ€öŒ÷j\Â©ÕÔ©w¥à	S„æÅZ´°Ö½`®àQç=¡¯Gd(ò>UÁ·‹p¨t°ùLhhÛ3uçÊ=Ä­¸Žuy[õÊ‚7pœkâFkÞ?ß.'³ƒKÝL˜÷µZëOBÕ¸ Þ™ÛŒ&V}×ü è4—xœMjÃ0…÷:Å\ÀF?ã±RJ)ÙfSè	FÒ(‰%ã*”Þ¾ÎJ—ß÷Þãõ],L™rH3	O)O§)E7Y´Æ{rÆðQRïR;ãh'ƒQãLÎ:ÒI¥ìmô­×$Qñ£/m‡‹”¾Àùñx½=aOx/µË}Œm}ƒÖá‰´70èYkuØµô.ÿœ«vÄ°r…¯½A_ª|CË¹ÄÂwØek£RŸåZ%‡ÂÏË_îÔ/uÂaR’xœINÄ0E÷>EI¬iÊvy’B,Øõ!»Ü1	Ç‘8>QK\€Ý_èl¶yHÅë˜ƒtz`“4Æ„ŒäRð(IÛbÅ/2R"g©”2fÊ>—½UÅ‹E’Q’þò6»¬[“‹V^±“Ñ'7¨NÒ§‘0JHÄ£kƒ;×>ÇžFx}èËÞëÒyº¤u~IJS RžÑ!ŠÓkïü¿¶¸r»1lÇ4Aãïƒ÷OJ[g¸Æ^ãþñµ¶©.·—9îç‹Ÿõ‡wè+ÌñÎP;œË[øŠHhÑ“xœMNÃ0F÷>Å,AH•];¶ƒ QP»+H?ËjOWlGp4ö\Œ´å ìæûfÞ[LŽD vUÝX‰®FVTÔ’cÍ‰+[pUZ.”ÔfF
ì\dÈàÜjS¨K£TQ–(eÉÑ
§¯…ÓÇÜöÖ˜=&xØÿ|Çƒ;¸éî«}šgÝPs©Œ’ÖÂœ³ºï:Ÿ3ýŸ-lñÇ²§·5]ÃÊÁ¤ü€bìcblOéh¹…Ï–$Êù'd¹Ý¼oW¯Àà ·ý@áâš1ÔÙ÷"}Œ>Rb¹ÅÅ“kZ4Ü%˜^¦Dî¬~Þ>n–‹ð	ÆcéÏ‡3ö¨žvBšxœŽ1NÄ0E{Ÿb:
¤ÈŽØA!$:QÑíÉ&ÙÄŽbgWÜŒž‹‘¬¶ ¤Íü÷æç…¬¥VjkHjÒY­%	o¸M[b¥ÚÖjÎf\(d¨”5^ú²vÂ	ïÊÆ×Òy%JYQ#WÆÛ†áš»¸Às	^†ŸïeìÃ§g;Äë\LôB•Ri%9‡{.8g.NSŸ3ýŸ­LucÙûçàS‚-uÚ$íˆÇ˜!w<coÓš2X‚yCÈ¶ûã=í@.C‡gÚî`ë5÷#ù^ÇDlÏÜV\b¸Ëp
ñ²³_º¸Ž~÷^[xèäxõ†óDE¼éY»áû—œšxœŽANÄ0E÷9…÷ÀÈi¤E!öÃ’};´Ã$©Úp7ö\Œ8’_òóó¯›aŒý€„9DDS?Š ä–e0b«Õo’+0zœ¥'bdâa4ŽÛEk,FM¦Ó¤üGËg_¿Ãóåës».ùÒÓt)?ù”ä4u=¹¾wnP#ªPRZj•ÿÜª—×³ÜÃ]²Ë¹TðÐð÷f;¼>sc
d†Øê­~ßñZ ÎòßBû[ç¦hspÇª	Öå*ÛI}RFb:#xœAoÜ …ïþs¯â¬ïÚ–ª*©ÔJ=¤—J½™!F‹Á‚qÜüûmS©×r fà{ïdfè‘F&;šË¹s±f˜æ®ï©›Ì	ér2®ëºþ<5fŽ=‘¥‘ð<ö|åaF7^¯ó8ö:¨:6ä5¸Ë’2|ÞŽð…¼/¿Ëv®åÃ¶ÚÒÚ´~ µ0ýåb¦	Þt4Ú]½ÿ¿BóHÄñeå»à‹@•ÄHíÛ	Fˆ|¼µÁbÿÜ?oØ‹º?ïÄ/ 	BJ7p)7_¿?Á§[æR@Ï¼åÒÂ-û(da¸¯LLÄP¿W½(lEmþ88Ðµ¤•!)—¡ìš)¿‚
®(>EýYEb:¨© á	oì|`XÐÞj8õÇªõ¼û@àÝßè¾(+E~=´…GQ‰€• «¬M»Råð¢/¯z»$›¢ÓìÔ´÷uëŸ÷Ìmó%!¿ëšxœOKnÃ ÝsŠÙWq±±-EUÛ#´¨ø1R Æ‰rû{Ñ}g÷æéý(#‚•8‰^kÎ…î§q”rn”iÒ£±nÚ±UeŒNtí0K£NNr­úÑÈIšNK#ÆÙ¸™wÝ<X¦6ZR†oÂuÁŸŠ°À¹°ÑOø¾S“Âð¾ÝÄyßÃK[ÕoðDøö…—Œ¥øAE>¬9Ý0Ô(A¼<eTvgwtÏž±k±~¡Ô«*åÕ)…ügèê´£"Ôäã¥CF2¥ýÕÓã™R=î{€ÍSÞ"”MWÕO»¾2¥a¿±]ÆœxœŽÑJÄ0Eßóó¨HKš´éDÔ_P? ›™À6	IêâßÛ°ÄGçiîåÞ3S3b.ÖèQ
>v\X\4!I¥&¡ôÉX)XÒ™Bœ¹P–Ÿ9Ò8!Î“’*-Í0MÆ˜“ez«.fx«”xÕ•
<–›ìÏM>§Õ”ÞÄõ	†QH1ÏrðÀ÷a»»úZéÿö‚H˜¿º¼¸ëðbª>¨ÂçJ]Ò¥T—·#^ýJåæþm@{Qìá£\}u-ÆŠ‹×Bï{/]t _Nc;pÛãÎ£€€ízË…zö‘­†¥–xœ‹K
Â0@÷9E.`™LšÏ€ˆPºÄ'È„	-ÚVbzÅ#¸{ïÁkUDGò=#ä˜9X*	(£¥DHÀ±°IÉ1GõJUÖ¦}¢€–Áˆ¥€àHB†`Œ#¾XA­UioÓVõCæ6ñþÎ“>þ¸ûÉy^›<»¼-'mz´&CÐ ê[—¹5ùïVC•ÔD_/Ãx»^½DA˜xœ‹KÂ  ÷œ‚Øðy@IŒÑh—n¼<i£m¾Þ_Ó#¸›™d¸ÉŒuÊA_£¡`µXdˆ¨Òèµ7ÑfñN–€T½O)Uåjv¡D®¯Tjë‹Ïµô"m<®M>iâ1oåqçn—ó´0½:\ç“Ô`¬Á”¿:OÌôß-®“|—Û}èæòþF÷œxœŽKnÃ0D÷:/`Ã’eQ*Š"í6Ëž@²’XM#ÈíëÜ èòÍ`>²'.DÚF,É…l£‘ÇH†ÎHi4RQ÷¸Ò"Ðf¦ÉçlòŒv2Þ›ì2j6èƒvÉ¤`UÜen+œ©Ê_û–gx¿¼ O/8ÕEèÚçvû mÍ¨"‡Ð8êPoU„þWŸ¥€î0EÙWÚ@ÔrÜ¯ü„¸Øæö€ÃØ¯²)õ]*]cîÒóí/›êKicêžxœQNÃ0†ßs
€UIÚ$ë„ à…7HgµH“)Í´íö¤âÉö'ûÓïZAK!BÐãˆBj”rô‚cà<h­Ý^©u‚0ìd¦
~TÚöƒVÆ.Q…~œö=·FJßó‰OÊ„A1{®s.ðŽTgx>¯n†ûïmè¦mx¤T1v./ Ù#Õ°‡7œ³FªÿyÎÞè
ä[\
Ô$.ÇH+å­ëJ¼žlÚc¯O/ÞÀÆ‚Öß`j-x”Ðÿ®ßÁe¦–àB1‚³ç›s9Q´uS`)¹¬|5n!âºÂrì‚cŸtl²]a7ÝùŠý ƒ…–”xœŒ9nÃ0 {¾b? c—¤xA¸u™ðØ•ˆXR Ñ…ïø†Ë`¦ïÌ0ŒÕSu	œGIÑ±/1Ê„	µ²&¨¿´óÚ!g2”’×.d/Œ.‹¡ªäŠKÚDJž¼VéÖçm‡·>Ãùv”>ŸpÊOønkçë©lËÕC´a@¨þíÒzç7s5µ©VXÚq´uiW>”úiÓÊuØD†|ÿxå­&Z—xœPÛNÃ0}ÏWøVõžfBñ0ÁÒ
¯SÚ8$¢MK.Cû{ñÄB²,ËÇÇ>Þ"BÇÖŒm×ÖÍ©ät¬±*ÊBòVPd²XÅïÈÊ-9­éXRÎD.Ê®áÈ˜ ²íXÙÔ¬ EQµãÐ¼Z,<¢ö
vÁ
n>È†î´ñ8eã2ßBQ—UN‹:g°Éiž“Øµ÷øO:y~;à^ìrÑ¹»‚E.€_V{„¤‘#¤WÚÂÅž¹h41FÌèõbÈøÅov½Â+DCÀéYOÜ¿¤•É#Ð¼â>¦8¦N«ÄËÎ§×ÝaßŸ÷GØïû§Èp>	,’¤Ù•;ç•pAëâ	?ë,~mÑÁ¼$]ôaÍ9éwƒb³H¹®Û¿ØE¾.È¥¡–xœ»nÃ0Ew}·.µ!¿å (Ú®E²è®‘%C¦äï+£Eç¢ï%xxIJˆP5U‹cW×Zk©Í …h”íí(E?¥úìUl‘	GY[ó¦µBt8®:!šªã]oFÍë¦A©ZÎäFSLðŽŽ&xÛV=ÁÓe¥ÚÅ‹„¾Ôq~†ª­Î«±ê¡àç,»³#ÂŽ³ÓçðjP\Àã=Ì2À"ÏÈØñ§Zá†	aIñê°9.Më¦Š=f}µ„ð·®3²<tNrG+z[Â)Rf&rzó2ù{F{&êmÎ_CóÍqô°îŒ¼5Ä[ÉØ‡;4E´¶P÷Ã_®e_WªŽ–™8xœRK‹Û0¾ëW¹ì%qœÄIì¥”n…ÒÇ¥¥Ð£,cYc¤ñ†üûŽœ,„žJ/6’¾ÇÌ7ÃÊê¦ªªÃAwvêãv¿9VÝ7UÝ´›r×ÊuÄÀPÖÛ¦4º©tkê¦Óz×î5¶ÝîPïŽ¥-«v»oöµVzâž"|AÇ=|œ’éáÝ9Š6>¸ÀèCÃ{ØT[-ÕVå±,•ÜŽÿ“®¾ÿú†Ïðb-¸X{¬ã	t°0è £>aRêgïhkåþ‚.¡×Ñ®Y´Àë)Åµ'£ýº€Oˆº“#”4Åˆ†á¢¯™géA»Pê+qê`D½ðQù÷xlxbñ}±dœ³d–èö˜Ë§à¯€1RLêÒc³atÞ…SÆßLÍŽB/	Òdú%|Î-æ.rÂ€Q3>ÆÀ³DéEh'çm~—‹¿œñ-Ó„²"©ºHXìôä¹€ß4™[%/fŠd° ÙŠÛI¤EžÞ:»G–Eï5õèGiRfÄY†%÷q
wþ=Õº,U;±ÔšÁ£N2 Šçô6Ž¬ž»JU²ÈÂà,r‡áU0/–ÊºŒ§x±9†,;ÏÁñ“l
$ÆQ¼o¡¹SÏpãäÔ•úáNíŠºnÕ^ŸÿeÕE2P–xœAOÄ „ïüŠ÷¶)Ð¥­1F½£÷Wx,d[h€ºÙ/Ý‹Wãqf2ßdJ")-ÉA*Ã¥GTViÉ‰s«£Eg{sœDÇG¶b¢P ÓÓ4¡ÐÆaÔm7Ø^öÜj…HœjÄ¹b¸¼’/ž·¬ÜŸwÑL»xô¡ÐÜè¸< ï„F%Ô‡¶o[VÝÅ—Bÿ¬³÷¯7ºƒ'c »xD'Ÿ+-ÃÆ`ût>Ãš*%CÜ
G5%Åy®³¿ÀmµS-48Í6¦K/¶L™C¼ÌdNÑÞ8ùšm†¯7p„W@Ðêý“¡o¯iOVí+9Ç-ijûð§@æ­=L×»¿¼g?(•m—xœŽ»NÄ0E{Å| YÅØÙÕ
!Šm4Hô~Œck;Šø D1Å¹:wfê†¨¤œt†Ãh8·†ŽLpÇ¹ÓÈ¼’Ré%«Þ0UhÕ`Z­FIåŒk©½ãZõG4½ðB™‘Dï5äž0Ö {±Î×Ìbª8l^î
Æ$Û@×«¾'-]b­øÏ:yy{Æ\ò¶è
A'7Ç4r‰PÂºµ6äþÇ(»µXÊ40µÔ"˜9Û+$½`Yuãè`/zBò0A^1µ¿Ö÷	,B^ã”ÐuÙûÎ|žþò>ù-7~rxœŽÍjÃ0„ïzŠ}i½²¤JÒki.…ÞWÒ*6©päCß>ñ”ž†o˜a¦®"Ð"y±ÚIk}`*R(µ™8š.	Fˆ¢ÍˆjáU¦
’#wÞpëŠñ¥ Zßq²Q¹¤Pœâ­öó
2ÔÞ·Gêátßáw8S•ŸCšÇ70dœG«µ…F;­ÕË‡ZåŸuuýþ”#\r†W`?¾ëÈS†Ç¶,óZ•ún“äf.¥‰¿Ç¿ì¨'î_e•*xœ‘ÁjÜ0†ïzŠ¹å´‹$Û’mJHšXÒ6…„B’5Z«ë•Œ$'úð•½^Cu›Ñ7ƒþO9"Bc$“¶êÕ’w¢kÛ®“Ö¨ZI©;pªiM©!³Šè3ÔZé¡ÃVW’WFP´œ5UkDk´45
lK[MÔ’Çá]áó’†>Öb¯×âÆùŒÓ~çk`5“‚7¼m`G%¥¤tÏ.güÏqòíÇWìáÖpa7«”òHË<‡˜	9ä«Î”8nPä yDPæì<¼Óa9Ž{B^F—@y¡1ÁäNvZÒ¸u#&Œ¯*»àÎè×Åü¶ÔD÷Šñ=POÀ¸PuTñÁŠº5–›NkSWµàƒæVp«)µZ°r±ÍÜn6ûøØø{•‹€‡èàg`˜è©ì9NY]L‰bª ¾ž‹´ïÿòÃáéîåØò‹‡§íÕ%s"ägX®¦	~-)Ãs1c¡V²‹?ùðæ‹û!Oso.aÑùìŽÍ.X»Ó¿?æ/Õ×A’xœŽ1NÄ0E{Ÿb.•ãØc{…»‚‰ÞÏl"v“(q
nOrDù¾ôßÿuaEÅ™€™¼ÌÖ&JìrG	A5§…Ç
Ô‰ëBNûìi“$Ôâœ±")G$ì£v*mµŸxã¡öpÝVêáéû€S>àe+ßO4=ž¡µ­ß#4Úk­öô1ÔÊÿ¬«¯w>Ã¥X·yž–
²_y½ok‡;E©Ïá6ri&‘&ÿœÿ²¤~sú`ržxœŽ;nÃ0D{žb»THó+Ã’ ©òi¤§–K‹ˆ-	ÔªÈíCß H5xƒ7Àp%‚ääÑ¨£B–ÑªAšHN¢Ó(SÔ.N¬±ÒÌ€£RÊ.xŒ%ím“uÞô £ÖÁXƒ$âÎÓRá
Oð²o8Áéûýx‡§23]{\n ŒòÆKc<tÒK)Z{+ÌôÏ¹øüú #<§Û¾®KeÈíÊ…ZRä½ÒÃç×wÈ…®©¢™” ÌÀêl+aÉ#—enÂ¹\fJÝ’s7þÿòJüCýlÜ—xœÏÍJÄ0à}žâ¾@K2¦ùDÄ…Ñà>É½iƒÓ$¤)Ø·w7.ÅåwàÀ9½ãSäR[3E¥	£ÕÒÚ¨$7È%WÂLŽ+BÅªk”; 6h…M@/£Ž<Þ’Zé•±ÚHé…:1·÷¥4x¡ÔxÚ·°Àýç£¿á1åN—1”õ„Z*kO®9g×tM½Ó?ëìíã•Îðœ¾Rž¡µlŒýÔVj™]'„ØÊ
¡Ôc¨nëôã….\FÀöõúÛõTòÈØ{š3áPbüqþË<ö€}sJœxœO;nÃ0ÛuŠw’,=ÉAQ4Y‹f	Ð]Ö{Š…ÆØòÛG¹AÐ	$ËÊDe©¼&ÝÆ¤}V[Qig”•è#±„•§Ô²3Q£õØvÕ)Hìb…CMÔKÙHö2Ì+|s.œ÷-ðñ÷"‡þE¾òTø~ˆóø	Ê(gÐ[…ÐH'¥¨ê˜KáÆÅå÷‡p"‚m_–y-ê”Lõ@N˜ÂÈÛ"Ã=oEˆk¾MLÍœRÓ?ŽïtŠ'G˜b‡œxœKJ1 ÷9Å»@yé|u+ºÜç%/ÓA§Ó¤Ó‚·×¹¸¬‚¢FgòÎ0*H)ÙP¬óÉ›f/	eQA)ŠÚx±ÅÎë€‹Ê!àl¢Õ
­I<c˜5’‰Y;ôlJ"ciž¹ŽžŽ=-p÷qƒÝà¡®ƒ?O©]ï5:mt“tRŠ_{­cð?sñúþÂgxÌ:ïÜ¿â¨m…ýØ¶Ö‡oõ²ržZ)}Ÿÿò?§
^–xœKNÄ0D÷>E_ Cûƒ?#4¶6HìÝv{b1“DŽƒ4·'sÄªê=©T½1göÎ.61¡~Ô²{(¬fÊÝ³Xbã©iÊ.Y—lðÊc	H’‹tuŒœ¥Š¸õqnðÆµðº­i„§ï;èÏuê|9¤ùzi¤3R0 C»½ÖÞùŸsññõÎGxÉVN[«ý¶—)?4N\ÖmYæÖ…ø¬ç‰ó0—2Ðíø—7ñŠËaùšxœANÅ0C÷sŠ\ _i“4ÉBÀÁ‰ý$3ùh›ªMùâö´7@ìü,[²ëÊ,:ï¢7©×
}D²Æö®sÎi":É[›t`Á•ç*¢S)IÓú˜œÔÊ¢Q=’oU§”…>rg ÷:”U¼r®ƒxÙ·8ˆ‡¯.á„§<W/±L¢Õ­ÕÆ´ÒŠFZ)áp§\+ÿ³ïŸo|ÏD‰rÍeÆQ<.‚JÜ§ãž&Àaº¤{Cå>éÔkþÆÊÊ:a…\š·­ëð‘o3SSRjÂÏõ/á‰@sgžxœŒAÂ E÷œ‚´2…¡1Æ¸ué	€,Q‹©¸ðöÖwÿýä½¶2KÌYCQƒ±Ìc`bfkQä½	É[ñ+/Mz5‚£Gí";$ç0$Ð:æL°Ž²CDxµ¹®òÄ¥Íòøz¦Yî®_èãei|ëS½ï¥í¶
¢“rJ‰í½—ÖøO]¢Iö—ÒÊe©+qÞSWsîâ{ú¥*>q”XÍŸ$xœQKoÛ0¾ëWðæKcØq–EQ»EwØÖÞ)‰¶‰Ê’aÑ)òïG¥ôXÐ…Ä÷â'Yˆ ßí·¶ëû®m;{¤=ö;Úbë,ºŽðpüa·®2¦î‰e„_kv#Ü<—¡¶eøÉQ(Ô.M·ÐîÚCÓíö‡6Í¡iŒn'¡oÒÍï§º†»ÈÂàUzMãÃ¼¤aÁÉ˜#gÐ‡a9’‡xšÖ¬ÆyFGïØÃ«F¯´(I‰™ãÈ¼ÁjxÌ8¼`ä™•´g¨–ª†?k„êâ0R˜+P…¬¾Œ(Â<!´®@wŸ8pã&[]âxE©ÁZ<kcþ&EùäÖ‰¢ pŠå¸‰s		Ê˜q)}„sq›	ù+°«À&Ö:½&2	H)Féój;XhN`Im	á©–c
ìñ\ÌyÐþ6©ï7ö|ý•o3ÿNKÈ„ÎxœŒAÂ  ï¼b? Y–ÛÄãÕ»wÀm‹ÚbZ4ñ÷Êmæ0Sâ]R…¾§ZO‚ây d»@œ’·nÉ‰aàŽUý¾R™ç\U#|PSƒQV¸H®œß[šàðh¢c“S^ª<õ¿:‚avÖ3:‚zD¥®²n¹,ÐF?ën*Æxœ…OK›0¼ûWø%r€`¨šª&P–$¢	i
ìÍÀØ€ÂþúîCÚÓJÓ<¤M›TJ¼âªžð„«ŠÔ¤æ’® 3³ ÂMòT¥HNO€Ó¶®K‰$/ð ,È) Ã6oJ8äEóª¾gã;ùÙ?÷°Èà^êš©©:5	ž…„š¡†y*Êô«ìz‰;À{ÀmŽ?seÐ©|­ËæmžÏ“éÛÿÖÐü–ãz>>¸|ò\Ÿý9Î»PéÅ³âÛh¡w<&Aì5eÇ¦fÙ-]»H¥ÕöùßñPœ7±°Ú!`éãCvyTV"½Z/(‹|±¯ÁX»u~[qË»±YDc‹mÃjµ—pëe¥c"ƒÜô‡kÇcÚÆ77:ß‘3käñºìhF«_4Ï¿U¡ c¬Vôéäö¡¬ª§€^lÆ{•¿TÖ¸^£µº©ŽoõîZ ’vÇxœmÉnÂ0 Dïþ
ß£Bœa©TuL
YJnNlB¨YD!ýú¸vNoæ0Ò;;Q¶adb¤©¥†‘09/ÆBGV±ÐâBp®Øhû“€åq¿¯[Ð²
^µºC%ÎÐa‡ZH˜²êð×^y÷€÷æÒˆoL¬›cd"¨¨šª	)X#ž//÷X.õ|Ð ÆõÉ×*r; µ—»ÄÊçÄ6R/‹(‹†6'ýuª²µŽÍ&é‚jeç—Íâv#åzÆ·kÍ”å·õxæËÅ>’„?Ü¥Õ«´¾áŒ(RÉpwBÝA9¯¶Á²æÝ4Í;é¶}\P’JÙ]cL•tÖÛÌ#FNÃZ3žYt¸`£djÏF'Æy¶K®§µÍw´Y©°˜Ûád&%ýÌž~®ïüg÷FÚu§ÏxœmËr‚0 E÷ùŠì™ÚAa¦vE¥ŠÂ.„@Q*~}«]tÓ»ºç.îÌi’#g=Ì0cª„ç2RDI–(cˆr%£X¤HR…O3„æ3ôã‡¬©ª¢=ÍáOÄ§–¡;ä¼…­^Â=ÍëzI/òÖŸ¤üŠ3y® 	+
#@ÀKN;þ÷ôtfZ¶×Ö~Ø–G¶»À|ì vd-Z]ÚÛ›MWÂ+2Öb+ZFÎz­é²ð²ÎwzÔ“PÐ‹—égŒå’´H^éVAIHã˜¾6"«¸ª"Xƒ¤çbÝ|÷R£ŸdË³·~!æ¼Ö·bb^gàkq[Ü’î—H`ÃÚrÎU›ÆÇ
†Ÿ5íù¤'9Õ§jå:ï™3Ä„,`aDÏã¯ŸéÿÙ}±xqËxœmËn‚@ E÷ó³'µ¼IjÓAQÃÛî`(:<â ¨_ßjÓ]ïêÜ»¸ÉéòÁÔT±ÔJUÉq&‹Ò¬T3A#3­ ’ aM-s"ç¼ H`¸õâ®iêY/âD˜¬È	Y[
ã¬jÚ[1>áƒ™ä
ÊT“”™4S!Ç‹<@@(ÉùûyyD7-ÛžåÁÐ¶íó¹PÛ©‰ôtƒrlû~$ÁV7èÖ
'Á2*<è+?G¯Ú-Òsy¯ïWÅ×^œR|Ôï HºmŠP·6]ýÆ[õUKG+†^¥înŽñ¡©ûoÝ“U÷va°UÂ¼>g§%ˆ*Ú.ûæ‚<î"ïº6L†Ë´âÔ+c!qÝÐð±p©Ÿ,b—³Ñ8Ÿƒyto¿~¦cüg÷ÃIxéËxœmMs‚0 Dïù¹;µ$€63µÓ€ˆø€X$±(UÐ_ßj§·îéívæ•É^°™s‚S‘ry ¾ ”‰J$"¸£D
,‚cÆ@}ý•‡C^ƒ:Î`ƒû¨ï˜‰3ÇÇ\pgÇŸöÊÛ¼W—Jô¹xƒh00–±ªÂž„%	 O"®ÄßÏÓ=šaZ6tL®-Ó¦þÆ3; ¹TçTW¶–ë&^à-<§×#:#sœ±Z+«ô£u²6þó¤£,šò]„Õ‚}j7À»X¼‚Òrf¬´«dæ	hÏº]Ž÷Ó›ò:k~,Än©».,âNž…4«ç	HIÙ åìP‡èª¸´«ô4]‘³v‘ß]b!«zx]'tõRØn{(ÚkîhFy½T~ý{üŸÝ7vˆÅ>xœm“¹²›X Ds¾B¹jb§Êoj«;H€2–ËW€X¿ÞÏv:uwÐÁ©j˜Ô ýœXšI32¦S,g9ŠÁH0ÇÄCx–c1…a$ÓÈgƒS
»®ú Ÿ¸8-øü·)Àxã¾í)ˆ‹þ;ýÌÖ?æ¿ižÀü{ºÐ4Í1,~!OgÇ0qAâ	ü]ùç·®’r3O¶bŸ¼›bòþÃ•þôR9štåù«Àó³\IR€¾˜Í)ºt7Þç@ÝÀÞbwCYe¾3S)ŽUq‰(ÈæW¨ñHJ<—G5/‡¿î5Êeæ:pMá&¢PTÖNoE¯0€á—¾(‚Z§NûÎ@ÖCÐòq/šd×½þÅd<[3dqXŠyÊ·Gdçä@Â7ÌN’¦|âÕ¾GÚ;£¼VžËXw—â6
|ÍbésÞ:î×¶onûCÚiÐ¥
kÍ“g~qöœì;{¬Bu²ÓUIB2j­ö&<•¨®§fÒ ºlœ!Ní‹5£É5Õ.-°ý±ùCÈ©dE¦²Ædæí4Ô‹}Cý©#8·gk'Œs å•\Òdzå^È6Kâ·mŸØó°a-p‚x8"âö¶‘Íh²7Â8Õp=Ö=ÖB—~Â¦]'´gƒ1xD^¡§SeØ|`áúÁŒx5«yÝVñ!TŽ@j,£c€¶ïÔI½@?ZPÝµ¥+Ïuðå_“N6ÎªiW]¥yX©¯ÑQ(x¨KßnÚàÊ’Ú<eÌi8ÁœôÇ*ròMÞ<zª8çáÆml:Ð¥eS}¡Î©µU-BÂG£{qJ”ý>œoŽ–ªU#­*«\A5nÎ;Ìƒ÷È×%›ø7»ÉuÏÅïnï°Y."žÎô°-zÉP€x§yð¡ê Óš|­ëjQ¥<˜°¡b‘)w<-33¿¼Ö«E­µäõüˆé®.M²´¤$r#Ù »F¢¬¶5;Eí8QŸµ™[`_n/ËgþëùâR`þ}dŠÿ÷_}@ÞÉ>xœm“·Ò«V „{žB½Æ?™#fü{ ‘¡#r"	žÞ7Ìí¼Õ·[lµ;$5LçSœç ÆØ,fð˜¦éÆR—„ ‚JHÑ	‹ÑYŽÌûžÒ¡ëª™ãâ´_Äþø>]ã¾‚íÉ‹þ‡û;Û~Á¿Ó2Á¯þsÂPy¡ÁéŒá† 6la<Á?=ý/ÊŠ~2eóä(²Î¹ž-þÊ¤²T‘ç8^à¸EªDÑG#ð±Š.F`Çûâß>po1í!o×éU#‰ÖM¶ÉÐÏ–(P9$%ŸGäÐMdqš`óa.-°†-Ñ€/r‚¶ô°O×œ½MËÈt‹©«ÊÍr‚š>ÚR)ùÉd‡ooÀ=¸×ûÀË“Vf/{ Ÿç²µ;-ª	5„)(sš4÷TâxËh´‡S91ˆÒè¦˜—±Ñí{NÆÙt8|n—|Ë{,²©¸”û<{ ¾v7[¾±Ÿâ«‚Àfƒ´‡‚TŸ•¿ðÙR¤!§NsN”Ç¥1§UzßXBÎti‘:©MÑ¯#âbk‘MŽŸYñž_hÒX¥î… º¯ü£ÂÆGo GÖ&©z¦¼l_ð3`CZó­Þ»€ä[ÒyjåÏ³tL98Ìñ€L3HLÙfc<w¯¤ðÆê[LX¯,Ps¹cVžõtd›LòCÔ%XuoÕ›úÊãA™þ¸Ñ¯~a!ãÅ&½­’Ò¼ˆë†jHtà1Qïåì0UÊÌÎ+!œüÚ-¨YÐØÂ‹ÑˆwÞÊ/DûùJ]bÅ£p‰kKºH¨dvØIu–l<S˜«Ã†Ùa\º§¯™ag¨ ó†î>3™ÎGu[×èqY9G×…çj@fwùX‚ôÖr¹íd‚cL7ÏtÇô\ÖmPˆ6”œ—q;JŸ;+Y²#•|xGGNŒ4``.—`Ðqîé–2l“iCÛnÁ«¾·4ºXŽuöD<\=Ò»úÜ‚®£	¶Ò–Ü3¬ïoä”(ûû=¢~ý¿ïüSØAÅ>xœm“·²£H Es¾B9µ£F˜†ªy[‹7BˆÆ¤ÓðpV ¾~wfÒ½Ñ¹7¸Ùy¥5ÎæEÃ"¥ØäÄ³à ä–§Š@&Ié”*¸ôÄŠç‰ùÓãCöêºj&æ¤<¼O?è_Pâñ $Ï
·‡()ŸÿµŸùúþ™–	ÿÈñßŠƒ,àrP „‡[œLøÏË_¿"©ºé\Ý=ø¦îˆAè©¿w‚¨¥J¢(É¢¸h•ªFÇÜPÙeÓ ½ä³DÆ†?-8_ôU;7^ÇºGß£|yÄ–Hdômøló@âYö¤{¡ÁsŒ^kêºHåìEÅµÐ
LkÁ—I3y·G*/qMÞÕnÊÄµããÛšnHöigU³©<zëH.ó‡ƒ»8x÷µ.j2…z¸*8pó[QÓWƒTÜ¢Ê‚oA¹ÝƒÁx)H½?n›ƒü8JÛÁ6À›…±¡I}éÞZo÷c1Î÷ËäØàÙö4(ºŸ´£˜Ë7O®ÀB×¡¾Õ.”R¼[öSî%eÄ³ßŽRO¯¡`9ÍUÌÑ'öŠ¬ÐH&…c]îÑóÂ	­Ý(jTÃ¤'iÈ­¼›sè$†ZGËM!‚ðf¢U]ŸÑ@œŸØ s®ûwV%‰n/¯(¯ÏÇÂN;‹.$Ÿ’n2TUÐŸ'ÿýÔ©AìŽX¼ÉÐäí(Qº-¯	øH¼ò„QOmÕB­×ñò tuì¨5Ò•{§…ÀSV@|3cŽõªŸhºlSR½ôRKq™~"K°ç`÷§ý#°©À7kI:ÆÚ%£izÂdöœ§•0k>æý&fFûTñqèz1#7×°S¬Aî½	¼Åç…óRƒ¬4=DÁ­êy‘Jmˆxì‹S3«uÿžZ§KÜoœ7ó‰-ë·(T[]àz-¿—£Å˜^cˆr¢²Õïí|Ïs®šÇ÷[Õ¶µ‹¤kîNZñ,ð\öåÐ’â7gR6»òJÓ³ÄHmƒ$Öø¾Õ|Ôå×ñug{ý=ª£üŸ;ÿáä=Hž'xœQKkä0¾ûWèÖÃvçå$¥,»PúÚ²gÅV&î$vð£aþ}5)ØÓ.ø`¤ï%)"¨kY)ÝôÅ`LYH-uƒº/:Ò}+U‡ŠÚ^6U-Vä Ë®ëKÅx‰¦ëÇ¶V…¤¶i5¨vàBS
ÌiòžÐYšážx4Ûþùs¤£¡ŸP(UWªª‹~ÈRJ¡ý²Ø”è¨­ê»ªë;¦LC¶³y€·H°žOíÝhO0rŒÙ9[†éd½âe³IO<ä¿ñ\ù‚Aš¸(’Ó~üV9
ñÌšÙßÂè]¼ßá7ƒ›åMàÃâ™­;SÆStw	6ÎÀøuÕªž	Ð]è¿Ý7±¬éš‰£åÀ12S&LwQhÌÑ:<Ù#Ú™,6RÀa&ù:¸7óBY™E‚ZÇ@¶Ùðr„·5&ž`¸ïƒ;[ˆ'º‡èÅ®Íï=ÇÖñ](¦«éu«†Çÿb³Û‹åó˜ƒÇÃpyø×õÄ'à×•xœMŽAK1…ïùsV«›4ÙMDD¥/)Åól2qC›MIÒJýõ¦ÁÛãÍ÷>¦f"ã`9ŠQ’†¸ç¥4Hh¤çÊ
k8·š³fš+¨¥×ª÷Rå¤éG)œ–¢çJ÷qÙU£öuJ6!¦6vÊÁî(ÃS)ù¥Ý;z®”æ]ÇÍ ·è:fSŒ¡ÖÆ¯p´‡Oüš/k÷}ÿ¦ýÐ½ÔƒhÓæ`l>EZØ}x„Wç ØjGÍÃL0¥Raý±fìÞ°ƒöbÊ¹TŠ‹íö}u§€àbpd“£Fž(¨Àå>åˆµÕ5_ºæ·Xíwô°ÇŸó+ì=oàš"xœ}PMK$1½çWÔÍƒö¤Ó_"¢ àÉ]vÏÕIµìNB’žaþýFq–Åƒ—âÕ«÷*•—#¨¡iy[S­8x«{ÎµX»¥¤¦•¦Ñ†Œä2£ê¸,­”rµÔ\O¢¦7R‰Æˆ†×¨nyöžÐ9Jð‡¬#ýNp3—=wiK´3t¢QC?ðNÕpÉçLûuµ9S„t–xÅ7WºsüÿYÛ®úºïä—•u¢r‡•*ëƒ_¬>UŽ2†°‹ÛBéÐ04á¶dø¤`*>S¾BôfÓ91öEüz~¹ÿèÌYñXí)ÚâÒÞåè—…bú°¬!Ht ˆÌs‚ìYž‰k)Û˜N)ÓzÉÃ±³ßcAG›õlÝ[1ÀEô›3Uô£upþ+“ó+GJÅrùŠNÓŽ±½-¹˜ÊOS5ž®
¼d{û]¾·«w°×s´E]rNéŒÿEÍþ|y·i™xœ}V]oÛ6}ç¯¸ÀÒbñgœ(6Š¢]‡¢ÐaH‡õaRŠ¤,.©‘”=ï×ï\JrÒ®`&uy?Î=÷P)CËõz¹‘Û¢XÝê›ëª¸]mÖ7jUTf»R×›B_«u¥—¢“Á¸D›µÚ¨­\o·…Vë[U”E¡ÊÍêZËÕÕV›ë›u¹­t!dŸjètÎDº3Öõ`èE?¯bÍ\›—´BˆÍuqµº¡o—«åR(ß¶6%è{é¬iè£Ü;¬^ècþóäèMq³½½º-ÖãQá­¹¯ÔŽ¤Ö„ø~¦<¢«DQÛ¥(Ä©êP&î¨Œê›Õjyuu½â¶/"IŠ&‘¯Æ”<'ËÆÐÛ7³Ÿ~}o²ßÑí%•2MÞ‰T²Î&+ê|LÖí©
¾¥e‹ò?´2¤¹8ûh‚‘úD{ƒŠd‚tÔ›|¬±y@Å’œ9žÃÓúdDçC"±ÜÛ”Œ¾¤èéhHÁ…‚Ûd²3mzä
Ðºˆ?µbˆ!¦˜•pº0´ÈQü‚RºàQsK5"p¸TK`ŒñtêA›†Z»¯•ˆ àHD“dñƒþ9,G„µl’ßø
O2w>¾lÚønN~ô\Ìœîäpò³í¡–Ü¼@iµˆ&¬2—@Óªš­]ö¿,@ò©ŠÖKÔ½²‹6Õ1’6%œ SÉh¸Ø7@YùIw
‹xò˜Rœ‹×ZƒÞáÙijm;Àš[@¥GÑc¢~0CKØck#ˆ%¦îx‡<0-8Œ½ÅŸðŠ^üÁ‹yäÅ«ÙjLÑß—âƒÅÐè™¯ªYyÚýß4fsNzGQ¥¦á™#+4ŒS,{§¦oó…Í«©ÈüaÔšÆ#Ÿ‰ÉwùXˆ4ÁYû7À›ì©<e“.S°fq´ùà†1ËÍ»z5`|÷ó{j¥
>»—o5™|ˆÔØ“pCE0<-Ã¡aÖ×Å²¸€o=WëÑNm’´ŒÌ_]#d°/é`£M;Q§ÔÅÝbá|Ð6ªzîÃ~Áãµ÷LöYßÍÀˆ$F±fS]³#4]»té	Vó©éÁüÙƒì1§üuÐ1!Óì‰q‹¨Ež*;qà?j`í@aÏ>ƒúù™dl+FÛ9e€ñA8£§s·8gv_FßÀÑóÇ~yDÀe ä=é0.sV%û8€¢§y×í¥{	ÌýyD{¨%“ùu}V·Ãpú·\ž§ß2SŸÕøß QOCO•bšûF»‹,Kƒ€kœZºýzâúÓ©3ô)æ9ý4h¡ÕFž5\R2VBØ4%8)ËŒ?šy‘ÚDÚ›ÈIÕò£%6ù¸Mƒ¤>¸9}×§³s6‰l#;PiŽ²õiè;Gc°r§¡¢£Ì÷ g“I1ãvSìŒ²•¦ã)t•åKÃ„Ö:¾™€7×eŸâ³{ÌÒ¢Ü!}h\k4Z/+x(7Í÷Yšq…É 9‰¹¢Ú©ñ£ÍW‘ÿr>üt¦»£75T,ˆD*V`„«$ª(MÅÓ¯N]°+œFmêB¾‡K×=Ò?‹µ¼Ú›	%3µÆë/‡®”x0ÁáÝ¤õš¯"hyáž|¹2Òä´PŒqQ)|î™;÷ø¢úE~U9'BdaÉ$‰9‹b¿ð¶ÅD|Pu°Ðo¼Å8ý?¿‰ ®ˆ|$“`xœµTmoÓ0þž_qê@¬mÒ4m2MhL	ÓD™oª.ö¥ñ–Ú•í¬-hÿsº±1‰!ˆÇ¾çž»s|~¼%‚8‰Ë"Î²¼Hò<ÆUš”¹È3¬
O«Q>Æ	F+´¤=ŒÒ"EgcÂ,Á¼i\J!b)Ò$›PKÌ(‹°õµ±ð^Á‡õ¶jð%Ì-Éý@˜åH2ÎšäEÃã8ãˆ­Kå=Yx†ZQïp¡yu ×ÝäÐµŽ’˜:™NŠ<Í§#¦&Lôå’ú+«´ß‡0‡F9}çÎh¨Ô&ŠŽ¨iÌÈZ®­1X«¦’À[µX—ìªù]	¬¨ÝÊX¿Î0Òl¡‹¾¦èÔÙ
‚œ©âp÷Ø0¥¼¦ô>é –]5óŠþÜ”ç$ü®²ç¨Îî9ÍŠ4ÝÖEƒÎÃVº!JºT‚†®-ö´œ_’–œz­|6¥œp­¨9hCÀT–s»ýË;Ã¿Ïð¿*ÿ_õvö?û5è=ëh®ûð‘× _»‘‘Ð0³

X²wcÞNÑ×ÁÞywè¤÷Ýé¹²Ë5ßÄÎe<HòAÜ¿¿Ð’6?†}m$5'í²$Û‘Ž•n7·Œ;MÜÁ'gÇÇ·èŒ¬Â»l*Ç“"++¾ä£i†é­ë™#y´õ»&ù8ÍÆÙ$ŽãÛJp£–íòøèipÉFãQžßÅOë­S›™úB?2ëþñK–Œ:àŠÇÏÑU½¡p÷HöËí>¼lWÞ²ÌÁÁy·x¢ÃÒ”,4E3Åº"û¦ª:Ò¯ë¾÷+
qÔ:n„ƒ‹2|/ÈjjÆ.žD¯ek?Ahµy Q“¸­Îx¾ÚÃ\ó9<|è®÷ÖÐÄ½äÐnAéÊ¢ó–½[K 9ýÀmXë>ß/ï7}\"î””#xœ‘Ak1„ïúzpB»F«µ¤]c‚)…B/m¡Çð$=yEliÑÊYòï#;&‡žzÓHó1Ì¨d"°^ozåtß+Ò¸A/ug¸R­ìQxiB.Ø„™bo5	#µÖwByÕi£¸÷äzË7\šAvZ3<—1eø‰¹„”ò`wºÊÃ>RÁiZÛtz€5®ûNÂW.;Îêí)”B~`t„¿xˆUíÜr=ìçóLkGUZ}×kQÑ–sÆ<šì¼…%‡BÉ¦É–gGG|ƒ’àæ G¯Á¤7cÆt>Œ°jšO®¹r+HS	Õ.œ‘øÚîfú¡°ç¸*0á<×W—–xI+#ÁåX[„Ï¤g[òñî~ÍØc(ÍGÝ-¶­VˆuXadØòNq»1¤´óul×³_ä©~†¥ZÓÌöK%DÛ¶ìw¨ë¸&yß˜·íLÿ/ñD¡Œðý<Ûv/±6±_œý Þ¼U¸’(xœ…RMÓ0½ûWŒÄ¡ h'õWµB{@ =p$Ž+Lk;²vûïqJ9p@ÜfÞ¼÷ìù(	8sÖ‹L21(×¶¢ºNt=?¸V£’Ò*!É¢†¢7†kŒ”®S­:tØö{i±(>ôƒpD¯eŒ	¾úp‰žfx˜oaãçÇ¬ç¼†Scãü(c¼å\õÞ·´mIEg_
&ø¤ƒÇ	~êS¨Ùƒ»Ü‚Ç¼flV)\É^Šî.%>Ú2á³…KŠá	ËšXâ ',ÏKŠ¦r%äéoàyÄ©oßA^­Et|€2">åÅÏøtp`Ð~Údc|ýC¸7¬¾g=­?Mbƒ°.N¬±Z¦T§tc5äÇè3,ºØ±jçxÆ»j²«õäµ™pÍúaWu»-»÷gÐ×fïÖÏ˜®ÛgþÑžçø‚®!ä‹/ûßó>3‚µœ*©y¨àÍ(öõzì¨R”#E¦:$ßpÀzóL¶o(=ã”|÷u=n‡ao®Çÿ¯žü¨‚ÒÓ‘%xœ…QËŽÔ0¼û+ZâÂ+“8¿¢Z$ÄCˆ q\µíÎÄÂ‰£Øavÿždá°œ¸´ª[]Uêê²¤Ú³÷C; i¡9­°­j´á"vÚ±Wšx4·=uœLk[m¹è$a[2žk©G·2¦¾„ùš|šàfz„§0Ýfœò6_N.Mo€!)•6ðªáMÃöéJ¡Þá(Â¼Ì{wã¯à6o™NžvªTÒèN«ö/•…äJìá}¸Ÿ6©Ž+Ã1¥Ò *wËšZËco3„WÌ°Ò’ÖBþ5¼\,®àÒ=Xzªä)‡™ØS•»‘âž¿€CÌÇN	¦à}¤ÃòèûcßÇ°/ä¼Ñ?¦`à3Íð‘Bù¹sæžŒ¥,¹¯ëK(ãf¸êæí¾šMT¥r1ÔËc}Vœ±¡TâëÁsIÜ·JŸñ¬±­ ¡±!Ýr§:%Uã¤óN³¯4Ðþ[G¹›Ý3ÎU'$gßÂž¶¯Ò0Tö¡ÿÿ'ÙoWÀ_œxœ};oÃ …w~ÅÝ+W€y9Š¢2§ª:_Ã%A±±…qªüû¢Nº3|çQD½ãƒñ‚D$k¤5Gm¥qH}/¼áŽ³å
8rÞ[GR%´·Öˆ ´–(Ep4ré•k°b¸×ÛRàŒ9ÓJ™üàxk9oÛ¾Ñk m”Ñ\*/\rÎü2Ï©V*ðŽ9Ñ_xÍÍÃ÷¯øƒk×;+*Êòc¦ÎOé ŸkÀJ0c^ñÚêë…âD¾BH›_TžÐÕä÷	ËÆØGjé¡[bìÆçá¿Ùmá‰ý °Âc|’ xœ}‘MoÃ †ïü
ß¶ijERUÕ;ì¼zœøpÔª@ZõßTÕ6mÒN€ýø}m“GDÀy-šÊr-[ÇxË;f©’T1a$§È“Ê(rÒ#†Tñ¶¢´­¤U5Â
£¥ÌJnŒ•¦¢¦Hô”û8Â›¼£hë¾è¼¤)áÒá*!¹ä-“<SF)±ñxô9ã¯:x`§÷¡¼Öîr»ü(•lU­VJKK„„óvð+8êt€8eðá¬ï ž²!›Föà|²ñŒã•]ŠëÉs&÷x‡!åë˜Éîã®ñø„ÔÇip€!M#’!ÄÚ¹?Ž—YßÅYIû.ao¸óágVäîüðÅ=@‘þm_BÞ•ÏðÝuî7!X0-	Ùú²#·ˆ]·0×ÕË/oÈ'ª†ªßxœ…P=OÃ0Ýý+nË ­œÄŽíªª˜aèX9ö¥±Hl°Vå×ãV 1 Ð÷ùîÝ½A‡Aw\6Š6¢¥m‘34ëk%ZÙ“äMGôúšQ)ëÆtuWœ¶½Ö¢mŒaŠ÷bàŠÆ˜jˆ^ò"<iï1Á3:æa;–=iI¸¶¸ƒš3¥§]w´¦”˜0Ï.gŒð¨½Ã	öúèK¶µç[ðÚ‰NÉVŠæJüiÆ•™Ül 2”Q¨Þ\ðÜV ½…ÊÇƒ‡[9U0”#­K&œ0^ÀŸc˜&Œ„ìGô×B9<;„@ÿ:ú)/ƒó'=9{)À!a™¬¯Š¢ÚÚÁˆó•¥øo^H9–ÖšWÞ·«0«þ²ùK×"áŽ|œÃ•xœ1N1E{Ÿb:
”ÈöÚ“u„7H‘zÖž%»vd;	ÜBB¢¡ûÒü7z¿fÐšPNDˆ³Ôè<© ½0Œ¬¥qÆ2³8SáÔÀãè¬%
jÒ4D“5’Y™IãÎaÀIZ7à(èÒN¹À!®9ÁÁŸJô¯\à¡ÖŸüT/•·AYÔÎc%ÜK-¥ðy]ck½ÿL)òGzIŸt¸}…_(îÐÃ¸ÓUéºòæÊ)ä²‡9¾wû…
µ˜S…˜àûçåòSâÈà)Ý5èÿ·ØN—ÐºÙ9.\êVˆCì.a“çy3½ïÿ5U| -x1xœ»NÄ0D{Åí¶€ ?â×
!
þ µc_o¬MìÈqöï	HH”t§˜3šiLÏ<\÷Q¢UAp…Zr)ÐcÏÙ(¢#Ódusƒ`8Ç¨Œ´–Fc£‹”z4™Dî5.JÁ(q{›J…!-%Ãà§šü+<oÛ/¿nû†O_€IÙ[ÝK«àrJ‰/Ë’Z;òo.'œáÝ]ò·>~àª´²FÍ•*É·;?§3Äô	í¾–G¨¸”[ÊhBØ×9y×NÇ§!C::CWbìÆûù_“Éqµd¢š9xœ“mkÛ0ÇßëS±8«Ÿä‡ìe¬°AHËØË ËçZÔ–=IIè>ýNIKÚ•A™ýætºÿÿ~ÇÙÎ B’%IQ\ÄYš55¦užæ…Ä$/E•D%ÏÃ&‘%g£0¨È4¬xFÉ¢l’*Ä:1N±¬DÄ³´ª¢¤*Ê”‰kkÕÖ²5JÞ¢Ö>ÄŸíÎâ»?AÄ9Oã(ÎB˜…y29ô½rŽê¿
­°ƒŸâF{u}8¤Yž•ERä1LÃˆ¤Lï{œÉNÍá»–…E°ê7ÂÐÀÕj³¸-z´££p-ì…Q¢ê”Ö'^ÛS½²§úíj½½^l¾-/W tíóãá4¸ª»9cVFi×¼99Ï„L^ÙÓ;	`ÐNŒÛýÐþñÐåÖs’ð‚ÚOoß3öí”Áš:;´Ô|vöólä ­~W­00D†& ‹ÎO.¨Ð{ÚøÉ„,ú=~¹ør¹ÜG8´J¶þ†ö@õN:¥oÀµHsè]×Í¼4´vêØ+-œ¢å÷âIÄK0OØ©-ç£c‚Î÷s>¢q¾…0æÿP¼°¡ºî,ŸCÄØ¦î^§üÆUp˜M¦D~Ž>ùßÆl­èƒ­gCÓçüEÿûYJ"bšxœÁnÛ0DïüŠErlS’MIF$@“K.Ô"GcIŽl6)«þû(iSô–žv÷0ogF@–¹(Ûºð«mÅ¦×u¥[8oKßûµ.+kÖV#'!ÛlLË(K]l˜[çlÛÔÆu¿1zÓšÂTëŠ'9ÄDß88Ò+ïÝúóÇò§Œ¥Ç=¦6mS™RÓ.´V.žNƒþ_Z¯ÿHUøuê.† '[Ê—,8y:pòCØú>&Qê 2æíj…°Œ#Â1¦ýêýè~vOÛnJƒ\vÏ`™òu÷¶ûÛ}ÂÇñx!9€ÞÍ#xüû4Cdž™ì$tæV&QWßS”ÙåRÀñÇØ‘ï$M¸"ÎtÌ˜óìÄÎ!g’H«9ÔR©n˜«ð‹Ø÷{Ù~Õ”z•i¥—xœ‘1OÃ0…wÿŠÛ: VIš\âªB@HHÀÐ1œãsbá8‘ãRø÷¸ÁÓÝYúÞ½wŽµ„¨Ø´•Œc]ÔM#.H¢®¨6Ø(1Q`AÊ¼©ªÖ`išr+.Ä’d^˜\Ì…V‰tˆýàŽB´nxÃv8ÝÎs¤iZµãp	9"Êºj*	YµÎDzlŒàŠ¼eÔù4mõñÜìæÃÌ+Í'´FÙ¬KÄ„æY&„!l;oÀØ7XLf;Çd|=yíÒnÐ‡p*íè=·qIÎÁÑÆn÷÷	s,Äµ'åø'o}±þuàÖÀÌRÒØs
àí¾WBìmr®—£1Kõ¾ùÇYÄÓgÚÖ¬Á¤=é·^À“ã!y¢hGÿü[ú›‰£„§xœÍ;nÃ0Ðž§Ø>P@j©%iAø)Ró³kEA¢aøöQÒ¤Lº)æÍ´•‚õÅXé“DÁ€­3E’ÖÖçû!iÄj‰+ÏÐ Ó–¼uE¼9IAÑ3™eˆ¡O4d*ÞÛµ®pŽóÈ|ÆËÌ+Ëã'¼o÷_¿!"ö/º×Zåz»­ñ¨£àÑíÔìôÛ.·±ÎÛN¥Àv­®Õ¥Nõò„üV”ú÷ÁÒU‘.=ý©/Ý‡_ÙœxœÍAjÃ0Ð½N1ûâ2–dIJi¡7è¢kI3J±l¹!·¯éÚÝ‡Ïû¿¯"@:„T¦ä‹5¹s	',ÙzmµŽâ,u‹«Ôh03qšØ29)T°‹)cR¦€Æ32©¸÷K[á#ÖY®ðÏUVxáûoxÛöMžY^atÎùÐ<¡FT¹-ËÜ»ü‡zGÁXç:TqË'xg†ú½l—vz»µk;?àèö¥J}nU©Ïùã¡•2¤Çé¯/õÂÂ^Àšxœ?oÄ Åw>…÷*' 	INUÕ“:wéÐ™?æ@"prQ¾}“«Ô¡K»Y~¿g?»fDP"ÅÑöZ¶¦£G¡FÅJ£Í íÐõÈÆÉ’›Ì+ØV0ÍzM»¶¥šO†säÊ*Û1Á˜n•íû	;KäR]Êð&£Ç Ÿò1Ã³YÅkY
ž¾ ¢ãt¢œÁå”æÙ×Šÿ±bÛNˆÝÊv+‰÷Ïp1ŠKkSÓ-…tÝà˜)£!äè—¾:¯_nAnªCØoõ¿á.ÅC#.•
ÈhYTÙJÅ¹Àê«ûé/Ñ`›×=@¬9…€¹À|-¤TY±€:,æ€.ï°ûËÿc¯Á»×XN„|øýtÓ$kµÿúù"äž×”xœÍNÄ F÷<ÅÝ›i(Ðc\øšÌšŸKË¤¨Žo/uëBwßMÎIÎmŽV` “•©R¨M\Êrç©âÞ
oF5‘wS05°•‘Z NK©ãÒvÀML;Ïu.h&1{[s“"np1KÂþóg<×½âàñ	Æyb¦”Íð@¥ÄåÛ-¶†ÿQå¬ó¡Ž]%ÁØ]=Ã[‰ËÒ¥‘Áå”Ð5ˆá˜!.ÃµæxµUB.+ö#¶µó>V—?°=ÿ· „²ouÍûæÁ"Á;º½¡y=ÒŸr'ûuþëò—k~ÆŸxœŽ»NÄ0E{Åô(+¯íø±Z!

DÅ[û1N,emäxñ÷8THÐÍHçÜ{[E´ã‘qÆÅqdÆjµâÎP¡dŒÌ©QïÉ‡­˜ r¯¼ð>
ËõžtL³ŽI¹c©uQ{os©ðlsÂ®vÊXá¶ïãi½¯xøG)…•(£”ør»¥Öð?ª’Fs!eW]%Ñºšüz‚—’{÷ëåý|É1MÓ‚òþfôm°Ë{•ÍëŒ6„6cíÔ
ö·Û[!5Øv4””'°äGØKêûÂPbÜçé¯ùä±z“ xœMK1†ïùsS‘-ÉnÌ¦EÄƒ/Qð(ù˜´ÁÝdI²-ý÷f[{ÖKž÷y3%!‚l%e\HºæÚˆ¶ã’Sn$k[kÙwÜR¡{F&•0èdÇ×}+[C™ëã¢\hIµdÆj£˜“mßQ¢æ²	^Tð8À§ÚLðhçá9ÏWŸ€	Á9ï*÷´¥”˜8Ž¾üÚ‹u­#DEYE‰S:y“7#‚‰Áù4Í­w'°8a°b€&€
š*íæ±~Œ× 1Ùj*4‚Ò.ã/¬®qG„€h—Õã7øóDœO¹¬àcg÷×²š§¯<ë|ÊÇÛ;0jàèëc’Ê{ðnÉ²1Ü2¥xð¶Jaû¶]²ä”¤Bžb*àóYy‘^«]—^%ÅaÀTÁw_od›è\£O›¿NH~ ÈC¦XŸxœ½NÄ0„{?Åö(';qœóé„	‰Š
$jÿ¬s‰9ÎAxzœPQA7»Úo´39!ãŠÖºé7ª£Î1†–v-ºV´ºvŽ[-¨åG2©„!ëjÇ%cšÖi3LpëŒ\êZšŽ74GmˆZò5&xV)û OSp÷±¿Ìjš&Ž÷ÀD+©l¹¨áŽ¶%e;úœ1Á£
xS}(ÓÙ~ìâ2/3,nh'ä±áB”QJH¸XMÉ‡|‚¹ÐÙ!ä+B¹r¨ò’Ô¼xÛ™œï!.yZ2!¯Éß¼ÀùOÈñ·Åæý‡ùñ½†y)ô;jK^?Ì°†J™EÇ	Ó°‚|‰e„¼ì¢ŠÎUz=ý£<ò`Þ°ÿÑù`¡¦0”xœ…MOÃ0†ïù¾q€mM?ÓiB!„Ð4€8;‰³FkÓªqÇÇ¯§Cpæä×Öûøµy$•:Ikå$fÆ9•5–)2Ë•kR¥N§©p¤À`+ÒRéDÖEVhçd^Sjk%+)!­ª<C#pâ¦á¥ï0Âí2aÃúGlG²òÒôÝ5È²Ì•(•Ãe’&‰˜§g¦î0xjáaî6öýGlãiiéŒVe­²¼,gTÎ¨§ŽÃè¯áƒm	ö¯»4}doÁx|~ÚC?ñ0±÷ó…ƒñ–NÞPnh$èü¡aÐ¡ÿ#ñ„¾EÝÒÕy‰ÁHg¯X›Õ9tõës~Ž´=ÅpÁ@>òRˆs$»ÐŸëÿ>ßgc‚ŸxœËnÃ E÷|ÅìÛD6QUu‘?è"ËÃ%±„Á’ª_÷±éª]ÍÕHgî™V R®7BÉN((ËÇ.(ï¸÷ÜAçÃ0êi§	lµ©‘àR#E0btÒ5ØÎw^Ù{ÓO“¶&0{k×\èhÓŒH'{I(ôäß¾ÂK½Uì=ž©ÓÊH¥•èÎ™ËË2·†ÿ ƒ6£ìµÞÐnCYº/8Ð1SÊÖ2o¾(e³XP«½€æD.Ç×Îaõó…®ˆ+
c'ü¢lòT›m·J9Q»‚Z^)âŽøHõ³…à·í67²ìûØž±×yóõ»Ânz?üõû ‡#™!xœ=OÃ0†wÿŠÛ U¾œÄB ± ±10¢³}iL;²Vý÷8Y@b€É–Ïïû<ºˆ€WE+xWKQ¨¢©±–(„²Òœ·²Áš‹®‘›1KÀ‘ó®Ð¥îQ¢îû¾kÕZöÈÑˆZªª.iôžÑ²ðŽGGîõe»<Æ%Ò^Ó”-ï«ª©E·EULùi2)Ñ¢Ü×MÛæh™£l@ŒŠx:{£Á'úˆ
Ý‡JÁÂe$ÚDå#•Œ;2öâ@QHhòéÃÊQ)ÞA	N”_rÎXÎ'˜ý¼XL¸UC\d¼ÆD“KïìT 2)o-…ý/™µt@c!£ã¢F9ÆGHãôæð]^~fí=¼Rº‰ ý6·ÞŸ–d¶ÖYm™à0¬N{ÆÞLÞœÞùaØÉëá¯Å²/mŠ³:xœ’MoÛ0†ïúD/M°$°Ç±ƒnh°a†Z`Ç@–¨X˜-y’œÄÿ~´²vØ¡ØnÅ¯ç%ƒC„Šc¹ÙæJ©5Ê"«Ò,Më<ã›B‘‘*UIR•9ë¹C@ÈJæR¡À¼¬Ä¢ä¹J²t›ÖY™m+Ùz“9ãCh¬ƒoÜmàZwD¸ëâóxo0ð¾_	Û½ƒ´Øl‹4/ŠÞ$›uÂÈÛéÐÁn4¶ð½îä9÷~ð¸’8¥n‹ª\S.¥¦IÂ˜9u¸¥/0YpÄ°TÈÃàÎ:4°ü¶ÚÆÞnBjÇÅ+±¡Á?ñ ¸n=½Ó$„$Ý¢dÚ(ŠP}B+-à¹ˆ–ü àÌÐÕ„`|y€Ÿèa¦´|›\’í|Á¸ <E­Qúøò]Ïðuÿô 'ÞøâVäÆ VðÔhÚ³'a"Ìá÷ßØóA‘ˆÒÏæ0š“ý¬iGÐ*B
KJøÞI»a·õ n¡·DIS
õÕrçF½`è¼çnŒèS^Û>³3b_Á£›Ó€õ;{¢WuN‹¨-•nñ:Ú4Áë+Ø‡ØÍsÚXÐ’ÆOjÇ¢ÍÎÈAWæ,mŒ$ÞHB¦„in„I/:Ï˜«§Y1öQ_Ðï ¼ÎÒf7×³Dèt'*ô7sÆ5¤\Z¥–õ¸ûkg{AêÇà7û‹~;®›xœÉNÄ0DïþŠÖœ@hB6;ñ!h> „8F^Ú“HIÙþÏÂÜJÝýºJE8/Z¡jÞšŠk«œÒUÉvµÌ¥1Z
Y;•Íp&p¥³ÚäZhS˜²Ò-w­ä\an,Ve%k!]¡S+õ>À³šá]fð`gñ×ˆ™ÅG(ox%y#á./óœ?Mþm„l«Zˆ„	eóÇ„;xAZÃ‘­ñCH1Œ·.	tÅíèp²R³eÉsÓ´».»ÓEX !\>^ž?ºÒé²3“ý!3ØûpTÁÂ@@þÇÇ1ËÛŸwPpî4j‡nàfó¶XEø+Wû”kD˜Ö‘†%‰kTˆHqsËØëº°[ïÜVíþªŠ}7›£6Ÿ)xœ‘AkÜ0…ïúsL(käµ%ÛK(	zê)‡ÃXÙ"¶d$Ùfÿ}eJsíM3è½ïÍL
DÀ;¬ª›¦Ñ‚s}í;%JE½®T‡=7Š7-JÝ²¹²6Mƒ-R'ðZõXëÆI\#ÚVPsxhE×4ú ?0$ëà;ù0<Íg9<;J¸,…òóW(¥àW)…hàg¹;Û”(À7t–&ø‰ƒËÕ“ÞÏÇs\#ši#»¶ª¥ÌÒ’sÆöÁªxÜ¼Õi0¸N	¬ÐÅÅ‡é¾ØþÄhÆ^Àm3¶Qù-“rpå#•.8M°ûuÒ Öp¬`º9ëy.d#}NŒG¿;èiòû±ÌËew-JÙeQ–5\ðï†äì•†9Àd½ƒßÐåCöXç…ôcžã:™ú'W5’zÏkÿ4#Ãí„ýD9œ9,—à‘>EJošN¿·â¦¬~x,{µùúâ¹ô÷Û›½¨÷,8>ÿã¶ìÃÇàY™2xœ’OÛ Åï|Š9&jí5ÁñŸhUíªU«zÚCÑ†-“XùöÅ‰’*{i-âý˜÷<1–µµF!šM­›Bm¹®Ä&}]³á9µu-Ùˆ\Q·µ.pÛI¬dÑÔ¢Ü4M«j.TÕ•EI¢äBó‚á1ö>À/Ñ8øA>ž‡Kyxqqsé‡/À«²M«m
øTlEÁÒé`b¤ ßÐ²ð.UÏj¾l^¦ãD¹¢EZWm#ÊªJR^Œiì‚‘Óðä‚‰6ÂÜ“w”™¤?%œFc'˜Mì!öÙ~ŒÆ;Æ~êË‰q&´wÅ¤w1xk“ZÂåöÓK0â4%{ìÑ_p¯¯R8	çHÆ­]Ãâú&¦ŽV%T7qGÖÏw;;ÆiY„ „lÞnr^59Ï9/!Ã‡‘ÚbßSÇt!ÏÁDZ6OŠNO2»øõÚÜb ÐDº3ŒD½ÑaH£ps¿¤»’>¤nŽÃHjÍØë%ûØ›éïHjÙ“|Oñ€¹æû1ÍÔ“ql¿¿û›¹½ŒÁ®Öh'´	Ü‘^žƒ—D*sÆÞLš•y­³î¼û±c¯ò=	–Ëÿ˜2ö‰èh˜'xœQMÕ0¼çWøÆí£éGÚ®VhHœ8í³›8¯Ñ¦I•¤ûôþ=nHHpŠíxf<vIDÐJœ;ljÙÛ¡m4#‘žÇFqyT¶«{¬kI(6L
à0*ÄI5F“éL;©a”¶7’úižì¤¥l›¡¯îe‰	¾a*.ÀWŠéJð´žéõ9PÁm»è¸~©ºƒ¥Ÿx_÷m-¸ººR(ÁŽ<|ÇkàìÉÜÎà9ï™.†è ¦±í”b¨¬k!,ÎÉéü”Ë¯”3²°å8¼­Æeß(}Ð1Ò¥BïáæÊ!{Ä5ñyO‡Y‡ÛBáO 0ÓïX—AóKæd‰{áMåÌÃý'ã¸Ù­3ÎÃknü8Wb«ájw/ÎÉ/ðáOàM¥¸%‡…þb+ïz¬)`r1?Öq”ÈÓcy—ÁÄ@ÀG(ËÏå¶8O§«J{W­1DÏ£8sÂ —‹/Žmªhm5ßÿãŠâ“~eÀÑü£‰sŠØ	‘'xœ‘AÓ0…ïþsÛ¤8í´+„@âØEœ'ö¸1rìÈv(ý÷L»í	nÖÌûÞ<ùµB8zåe
rÍ´·‡épD%Ça’^»Ñõ~ðbÅB©2Þ›ˆ¤ûµó8I£b/µ¼Ò‡½#ínmÎÞc
ážxíÎ·ÇÛºUÚ9z½ÑÇA«Q÷ðBî¥6/KhþÍñ0(cíœ¥[ïá-ù›íŒkg[‰]%[¨/yªå}yesJd[‡1
ñ8ÿ•V¾ÏÒVrŒüœ¶öÇ09xn“YŒ '¨ÄŒÏÐºâ]…6³é‰Ú]V\Àcm¬ZÖ,³æ|†–~®…êo=6Nxý¾)bHô¾oLº’×Û.´|hpÆ
)sr6¤…[cGL—3^ni¯«*OExòtÙnW¶GüZé6ÿøðùÓ5½'ð!òô”Å"w ÄCàF\—½ï¦Ëý¿
¿ ‡åÓN˜"xœ±n#!†{žb:çÙÂ,Ë²Q¥¸â”â®H¤”Ñ C–h+À¶òö‡×)ÒÝu3ß|¿¦f"èÔØ£µVz'w(ÑQ×k®µToŒ2ÞHÙ¶`¦XaÏ…ë­†´ÕÝØYÁ%ï¹ôJ™±×ª}ƒVÄðX§”á'Æ@3¼â{¤÷î¼>Ë±ÐÎÑìU/F%¤à–Î™M‡C¨•þÔ¨;©TC÷eM¶ÜÁ¯›Û¦èÃ;ø0økÉÖ-Î3c/ÁÅ…ÑÁ"AZjH¶O_Üî£´²Í¦sš`Éé²kÿ˜qNáéùÏïÕ´ƒW‚©mmÒ:…Ò¶åÜ¬óçš¡NÄ6_A6`±˜ca¾HpYÚ`]³}—\ÐÍ·üfÈb»œ	¡r+îÄÓÞ2¡{»®¸ù!^£,X§cÏ¡Òm“÷[óy÷¯;³¿)ô¶g“%xœ‘MÔ0†ïùÖ^„fÔéwF±âÈe‘8;‰3h“*ö°Ì¿'-ì‚Än‰¬çõc[2´4hošÑU£Ö•³Ú9sêÚÎ-Žè­ÓmC¦3jÅLQÀŒ£6¤ÑÓàp¬+m«¾*ÀàÌ@¤m[[×uÖ*¼Ê”2|Àh†/x‰”á­{ÚïùÊttôN}×žúª©kxSÕU¥lZ– Bÿƒ½›¶ïz*¨Šß:¬9D9Ãã”žàáÓ° ¤8ßÀ¡	".Ä+ZRê~c`,¾¾ñ=p!d¢gÔÎ3Ø%§y¦Ì`hNñâ$ªŸ¤Ðr„ÏûÝ50 ¬Åþ¥# HæZŠÅò²»©¿SdÚB7‰­ünRfÎ»å/±ç†ûH¨^âJ}ß‰Ï0´MGN#õØÃ«»¿V³¢L>§eOô!³ü¡¹9Ý½V¡ìÜ’÷s;ÿë$êKËÇ+”xœËnƒ0E÷þŠÙ·AƒÁQUuÑ~A*e=ÆCl	ld;‰øûB¢>6U»æœ¹º9jÒF×5Æ¨^	¡q0HCÉ6¼«±*µheÍfŒä3£$ÉF
äºå(¤ªH!çZJ…Xe§E#%gxÎ6DxEïh„#ž<Ex2×Ûð’Î‰
CÏÀe#jUµ]eU–¬Óär¦ÿ ­T¨¥\Q¾¢Ì_&ÚÍÑù¼‡ƒW˜1ÛCdK0¸˜2xœ(ÍØ?.Œ-y]ÊÎŸngé¬Ó’2M6Ë¶ÛL¿ŠØ&*àíBqù¡·˜î¾uóe­¿ðn]¼gÛ2ÿJ±Q}ð9†q¤xg	{ûý¡`ìàÖRÌ.ÃN/û¿:c §Õ“AxœSMoÛ0½ëWØ¡‡5ìÈŽCE‹vÙ[1-Q‰P[2$¹iþýè$íŠ¡Ã¦“¾øÞã#™#H£*£U[.dÙÉ•Ä¢(­mËz¥ì”Z)2J‰#ù…¬ÑZ,Öe§t[b#•BkêRª¦“¶Y—•)¨ªNy"|Â˜‡;
qKp5ÛkOÇq©ÃðŠZµM]¶mïeµ’‚o—3E¸Aï¨‡¯¸õ|º2ûãæ:M‰–†æÐuÝ6+U×ZH)„Å.:6Ü:xO:ƒ³w9¢Ocˆòa¤&ø‹f½âÎåÅ‰ªF¯Ú®£²"Iš-jµÄª,+ìÊuÓ‘‘M[5„â3Yb[41a—ô»¢hÛVµ¿÷­âÆ%) [‘}0˜‘yà¼î'CI‡htÔ¿e‡ 0Îá³øCø>Z0Sœÿ!øÇž3]`ß_òÝKâ	ÆLFÏ/'&¶3çOéÅ7b±)‘«¸—Å>L½ò¦‘µ¿"²èú)X®ùûÄ³„[¾ åv	ÁãEâ¾›Élèû°Ÿ“ ùWémåpTžõxF½Ý”ÿ¡w¸°úÕºÌh)íp†ã^Æ!m„˜­ûÉ¸¶ gé?¦¨‰”ÒoÞ/äÓ7^›qÞÝóâÖ=±¦é0Æ ‰ÌœËÞå“—Ï™ßþÒâäülÂÖ=’®Ï¹º¯pæÒ.…ø~!n8ÔG(Ã Cð¡gj§¡c½û!¾8ž³Ö.ºÃæ?FQüœ™b¨• xœAOÃ0…ïù¾í «š¦M×	!¦±	ˆÓä&Î©K¦$0íß\à Û²ô½÷ìˆ ìy¥êªîDSO*Qš†«žwŠ·²áB¶•µlØ¹
Ùc¢ª¨íÚŽ·éN"M%v’ªŽŒ-Ã×´õ®ÑYà7Ž\èÃi¸Š¯‘
M—ÀeSg/Ñr8+«²dÊïv6%úÚÊn"j)3Ê3ÊöÁª8…Ùõ”wŽT"Š€ ­1t:„BÈñ”×ÄØjK0ØÞ½íN=`8B ½)~KXï>‘›¶`Ó(‚?|-Ù‡N<*6,–O·‹õün¹\ÌWëÙÍýbvý1¡ÓL6ÅŸé
xÜkLÄRòµã0€ú(ÑCÚbÊ–°ÖåL£_
#ÀZW0ö`ó—ôØ3îÓ¿žÈÞ•=ªE˜1xœ’MnÛ0…÷<Å võcÙ–QÐl
¤‹6=ÀŠLER ©¾}GQÜ HdGóÞûÞ%AÕtÇŽÚ^wF¶ýP!vu«Û}CÇN#î5µD˜0Q( Œ©Œìåî`š=O‘¢¦æÉ¾¯wªï»ö(©?ÈZà\lLð-Ú wh°.8øôà×ó—DÚbÙªè?C½?´UÛõí6UWU‚o½+…Þ¯ïvM¿kêg½(ÎKJ#}e1ÅŒN†GOgé£žGž€yÒX~ÜÞ|½»âžïÿê7Ù0¥ø@ª€Ë0g@PqºˆhžlÏÝ“Û5#Ñ³+19bU(nä«‘0ÓvÉ`«g°L%ÿ‡®D(¯HÄïªY¡·^ƒq,8»báÓo0c<ƒ¹¤YCÞ®Í4œÇòÑ–9È„AÙ¥Y`A@Î‰ô˜ù¶+.NÓ¸ta(9æ_­9äFëW¹`Ù—5ñ‘Rršë]ØÔ_BüZ×u8'œ–ù9¿%â{,t‚³¥ žÒ°¼Å<q¡ÿÀûõœÂ{aÚl‘a~º!ÞDc6òrz×o r ”#xœPËNÃ0¼ç+ö‡DvÇ)ŠPé¡BHí¥ŽÈubHì(q@ý{ÒÒJU¨§õŒwF3DHe*’3%Ò\å:ãXˆB24Ä˜œ/ò¼(xžF½Ð 7’2‘–L‘‚ðrÁJjá¹™¤¦)#´,#1…Æ°“<‹=ŽPGôÑÐRcÛ&Êw@Æ2:[ˆ	#$šÙÎ†€¼øÆÁÖuªÏîï½P7"œõœeœZœôÑ“Ö¨a»Z¿B²E§¾÷C8ÿœ ˜9âÜl´®á4ôƒuá Bƒ ¼sç1òæˆ/ìîú9Ûömƒ±_ƒô>ÀØ£²Æ*¬wðMrŸDÑÎÖuì‰åþá¦k\kn¹Àµf3ûZï¶U_Pu?‡¹§ÿÛ^a+\=÷ªº#‘Èq‘í";º³”xœŽÍNÃ0„ï~Š½£VÎâß
!<8¯½ã)MPâ¶âí‰x$n£Ñ|3ÓW€ÅYUÏÁ[ëSÈâ<Ê€šVŸRqŒfÍ—¬˜;ÅÂàÇÙ•Ô0„¨ÚRiUrr±bpðM9ÃÈµ.+½Ê<b¢9ÏXéIï¿âe»n8*žiÉrd™,[kêr¹Œ½ã¨Ñ¥žègì9é ™&Ú½ÚþäÆGgÌû¸—èaiíP¾Om˜÷ZïÅ>xœm“·²«H Ds¾B9µ#	Sµwk#|†pBX]<_¿Ï¤ÛÑé:èªîŸï<Nä“æ*gèâB¹‚ç©ôœÌóšåyÂÏ“$Å^rlÚ‡ü”öm[MØ””§…þqùeþ}’’®Ê›S”ÝO÷w¶þ†ÇyÌdù?'ŠáHš¥i†?á$M’æäMžŒùŸ–¿~I€H½Ÿ,d*º×sàïÃ*[ƒ ‚À,WDÌnvÙ¦ã‡u’}”-ßòf U­Ý2ÒVsŽ‚lŽC`éÙ?âÇµŽmp!*döÚýú´ ”¾£ëÂ8‹YäöÁíIgu´¿íJe?,ï€HeŒTÓÃZÙ	Èÿ\†N€nŽ'9¾4*‚–p-ç¦nZñx³äLV2¯¬¡° ±_†ÈôMÿöŠÑÅä¬{Ï-ãRs‡_‘îpëÈ4ïí¾¬ÌÒ«ïíõ‰ø *Sn°³>ýÅxÜìX-ƒkW4ì_.·ÐOåu7wuT¯¼ƒœWÙÕŒãZle;”2"t¥Lc¼„ÂŽúš%ÖC¶Mï•¾(ªÉºy“à‘É[œ°xä ¤ŒÂ=ÆÛ«d£ÁÉ–@½~óŒ°'ésTŸÔŸH?Îi8[Tº)ñ\‘¯ÚæÛïDmÍí£ßùþAw¸	ÃŒ¢‹XamÈv»Hž”Ònïç60‹´Q—/â®*%zšOÎK`Í…(3ßŒ¯{âÒ™-~± ¤¦°ÄµCv‘(û‘n(¬H ùÞA×Ý³ià*’BFÜ0™	çÖ‡Œ.íHuFuà8ƒ1FÛ¡QÙK‰Ô^F[Òê”LÁ%×>¯)âB/å¹Â!ý„h(ºáŸÉ‚%¦ÃªO‡jñóCàÅ÷žˆdU«në¢­øNôÜ€5¼yª!ÕÔ÷pÙûî„3€cN‹=´»*„yÉÂ<àø²"ÝÓ*ç“—Šá.>(Ð®k¶Uôt·®Ù@F—B¦ßÔCq5Âo ÖÅ];+•__ØWþÔÍ?ïwéÿ¾ó½¯:xxœËjÃ0 ïúŠ½—„õÚèJÉ!PJÎ+ïn+H¬ Ë)ýû„þ@¡·¹ÌLoª0gÖ1±r$c²˜…rÒÉÏ*Ç9‡8'Dwã¦K1sð)[Ä1LCà(–F´$ž”4 £ã­Õ'^Š^àÌŸ‹6x•ï_8®Ûª{Ñ7|D
D“‡¤çg®×ké]ÿ¡º¼•‹àã&ÜîÚÖRèî´Ÿœ{/Ï€ìªÙ.ÿþê»ê6YÓxœ…Î»j1…á^O1}ð¢ûìšŒÉ¤H­ËÈ¬$#kmòöYBR¥HwšïçŒNr5IåiL–cÞE¹G¨\ô)9¡Ñ°«ëTXt¨ùÌ}”(äœ	*.š|B®­E4r6j&æ¶ñÑ:¼ºši…ww©Ôá9>¾Çé¶ÝhŠôÂÎ|/-\Ã—œ³ÐJÉcÐºË|*­¶2µ~ù•R(ù#™ßòpÞÊÖìë½Œw1iÆÞòž‰‡–ÒÁÿûÅ¾ …`WAxœ5NËnÃ ¼û+ö^Õ]À\EU"õÚK[©g¼K	
‹`EýûZ}ÜfFójÕ{’¶ÆX&’ÄÓ4ƒÖ,˜F©´uÙè¹[]õ¹E#½TB	ËVK6ã§r„8ŒF¢§yÜHunkçRáÂžËWSÿƒ×’"Ç°4Oç\R	_=•å	ÄhQ¨ÁZ÷h»]]bk¾Â³ËÑ'øp!ïìps!—’ËÒ—þ’zRf„;”{²[Ób¾>ZáÄo/§×w T6†}Zÿðkî¾¾3TjŸ5xœRMoÛ0½ûWð¸a‰!;¶cÅP½ô°]ºa×Èe	ˆ¤Ì’ãäßR›m6`}|äã{Œ3"¨‘c';ÙrÑµí ò†®±Ú»]ÝîÕ¾aU³ãÅ‰Ïè"ìd]5\ð
G¥:†•¼ßwb/Ç®ÆJÕM=tM§
¾DígølÜê=<Y¸·ùY[J<?L–›c)¼ýU·úºïÙ ØÀXAQkbÄ¹3x„ï|rô»_ùd¬wÞ–~ž²gŒµC›5!w¶¸=ÍÆÅ;øæŒº‚[ìHØ‘šÖÏ–ÇtFÅ!åÃÑ„x À;¯ jë%Îøc¡±WXJË˜¸q'!úƒå”{Íd0.ÃÃ5D´%Àï°= S`¡©Åœp‘„ Xa"¥Zâ†
x"W¯Ýh~¦\£fþ2ÔªÕ$—
‰ÂX~„DSã…ßþ«¡ÂK¤ø•x 2x‡åTn€]Þi¼Å¨›Ê!o´!h¿†7µ’|¿
ØåðÚß"w$Bk&aD2Ó©,ÞˆqEtðz4üWKöŒH„M>áÄ£Ð^NY†•áËóÓ#(Ú
­FFMNy}r¥béþLúdbYG=sA
€ß¦O{0zBÿ¹‰Ö[ÓHgC(·^©íx½ûŸ­.~”†&XxœAOÃ0…ïù¾’4MÛiB;€ÄCâˆÜÄí¢µÉ”fCû÷dÎp²žåï=Û)ìJ]s¢•­í{ÛU\+QK®ÑvœËZ5••eŒä`ÕÉF¡•ÐX+‰™.y_™^Ó’*k®tW5i"<£÷4Ã+9OfO°ÞeŸÍ|œiié„®ÛªQª-áŽÎ™	ÓäR¢èðŽƒÏjý‰ƒÛLÁ‡iâp%ÛRj!3)3Éüi¢âÆºÙ„Å{r²I¿µÀq¼]yìF‚pH.øE±§st~X z{Ñiœ?roÁØÓu6íþ5)ÀLcŽú&r‹õùo/ÛjâùÈÂÏ2¯%c[—o³Eèû¢;¯þøû?‰ƒ•xœ…=OÃ@†÷ûÞPªûj’«*Ô$&ŠÄìsœöDsW%nQÿ='•‰…Ñöû<¶efÂÐií;§ÃèÖ´NÓØ#‹dß›–CêŒ3gG}ÝCð}ï"YßoÙ´†ûŽ"k·¶Ú)¼È±ÌðŠ9óïœ2ÓÃöX=»å²ðjà'0mÖ½÷ÁÁ£6Z+*Ó”Dx†gÌ‰Oð‰‡\«í7Òn*¹L«2îdp¶5¶’¶’*_'n¨Ô}$àŒñÄPÎ’J†‡¦‘Óò ÔË½-Ç¿#H’®(oû* ùvà×YÃËJ©}ªMÇ&Þ6ÿ<¨~ ppNŸxœ±NÃ0†w?ÅmP¢Ø‰í¸ªP‘˜(óÅ>'V»rÜ"Þ#vÄxºï¿ûô—L$qÔÞzßOÒŒè¤âR+‰ÞMJã„“²+fŠ¼ÔÚi‰(zÞ£~ì¸åÜ¢ðdÝ%…D;1¼•%exÁiƒ7
‘ì™à°Ô;Çí¶Qëè¸Òf0šw:ÞuÌ¦u¥P†gŒ.ðs¬Óáçp\SLk›òü›4½P\Ô¤¨Iï+5v©ošrÙš3}íƒt-!ÅJG9Ü	v™
V%·ƒ÷×T–±§³€ÑÁVR&B¬tYæÊÇŸ}qn;…ªîšä}3U—¿«`ßn§˜xœ…½nÃ0„w=÷6,ÿ(Š"@»t+Ð™)“¶Ø’aÓüöU‚têÐ î»;Rff8dš°,	-Y¶V®Ú"ç¼)LU·-×Ž´q.SÎªÒÕNÎØh:`­]‰«Ö\pc9·Ì…«ôq†Wž8cx†'ºÜ†Ó².¼'~†¬²umòCVÀƒ6Z«&Ž£á?h"ýiŒ!Žû8w¿da´½“Ê­~ #|M„Â0x¾G†ËŒ“RŸ=Ãû–*¸&` $qŸv²M=.Ðô:¦G~]àÂ˜	$ÂzsU’|^ÞàØ4q&ºaÛ+uîýÀ€^ ‡%R’@ÀT"\É;–Â…ExJà‡OÒ.¶íÎmÇÿ^¦~ âyfŸxœAkÄ …ïþŠ¹—j4&ËRöÐËž[èÙèÄ‰\Cé¿¯° ð3ùæñjAoÆ¥É¢vÚXÝ#´@©”Ô£÷“8çv–‚¶`ª f?:ÙkTÊ(în¤õžONÌÓ¤”P^9Žr`ö¬k.ð•·3åBðØ0ØHp£×ÐÕ{ˆ–öÎåøb0S/Ì8Jxãç¬¹‘jÅ6îðmCjÛíÇºÇœrìr	/²ÅJ36R4’•ö+<R-ÙŸÁ–àrZ(À“â±#¬¸íUÍàVt<´O•rbì“Z”¿äe¹Ì¿×V`§jÑxœÁJÄ0E÷ùŠ·—Î4MÒ4Ã #èBp@Áõk“Ô0M^É¤ˆoÔpwÏ…Ãå–ìaÇVõè7h[/-ÊN(nuœc§åÔÝ³³K:1Z©F5	/¼Bïumœ²¦
ƒý$ZôèÃ­|P†7ºn‰r€ç«›18†¿°+§9bXvÅ{à½Ì ûAÃ]kÚ–Õ6†R\†GLÁ-ðŽsªtüÄ9œ"%Š;Êó¯i$—ªÉ«ÉÖe›CºíiZð`-Ü\ï°lÙÁÓËy9_À×éŽd$j¶-X µJŒ½†ºeò¾¿ÿüÀ¾Á7k®xœÏN!Æï<ÅÜMë²@šÆ4©¯jây€™-é.4ÈÆøö}oóMòûþ´Jq’fP¨jÔÓÈ*ZrŠ‰µ4Ö29xdcœ¸c¥ÜÀ#á0DÃÊ{¯«#M¨•Dé¤ñ1Xç	ÜÚµTx/·-—šàåF3®	NéïØ·ó¼bZö¡¬O “u¶wpð0¸aý»¦Ö¨Â3æD|àœ»:}áœÎkÉeÝ—:ÿ’NK=N¶“²“â¾lsÊŸ%ÜðJŒ¡õ"­@X+0aÛ*AŠ}OâÔM/ò
˜#\ÔUˆ·Ôƒâ®0ïü÷ñŸÄ9!jG˜xœÁjÃ0DïúŠ½—¸²•ØV%¡½B)´¥ç•¼RDdÉÈrCþ¾Jû½íìðØÉ‰„Üh¡y'°7X÷‚´P|ƒÄ	Î7¦íÊMÛ³	…Ò¨õº‘BˆNªVvMÏ©áƒBMªmÛ¡npàÔÃ%Ÿc‚xYBLŽ²8:Ø¹¿¡Ê{;¢ó•ŽãÔm×÷Rvu\rÎÊvt9S‚Ž<|¡Eí®hÝ~Œ!ŽULö—”ëzÝt}!ëB²É/Ö…ù1êi‡a€y™¦˜2˜òö„	Þž:¦D:£ò”ÒÝŒK('g0„yIÄØÁûxLVÇ`œ…a¦¯Ÿ§dpñ¾Ñ/twô™ô¥øÀx´P*Ã‘îbð·Š±wW2«hÌJÝ¶ÿì†ý ³<Šýš%xœQÁjÜ0¼ë+Þ±¡ØH¶,Y!„
¥‡žèùÉzÞ±%!Ë[öï«uY¥ÐÞô†7óF3%@”fp³•ƒÒý„ÎÌd¤ì¥;A\j';Ãf
HaoÆ^XGÜ¢UZÒ4hÎÇIrŠh
‘f†{9Çß1à+Å|"xZñô¨`Jí×gJƒèµÖð™=g]})”áOüÀS¨Ó“ûy<^¶}£ÖÑA5Cu(d¥
Î—•§GØ“ÃB°b€„õö\Ýl{J1rÍOÍÞ{;S&ð„ç½î7™Ð¡]b*>ðkZh­ß'wÈÜŽ°¿hµð-l¥’¡Ü5cX®€p¡lãvlÙk¼û«›iK4ù`·Ä
ÏK…•Wj{õ5 ×Äynìõñ?ÒeŸ¦j%_!ùéýf?Ç~¦V^«íû^«ŒîFNw'²J)':tœ4=üyöµ°_eÞÇa•xœ5PÑNÃ0|ïWø­¤ÍÖ6hB›à1ÏnívÑÒ¸JSªý=aho¾óÝùä˜¡Ä
ÕÖìŒÖ[ÍTuÙª1»–±ÐZ³iKª²	ûºû£Ñu«š†Û^¡êÛmO[d¢šU§ŒÞ•˜áÏàBL²Âþ‚Áå·ù0‹³d‡1rwöâd¸æŒÏPTu]5•1%lT£T–ØÑÆÈ^Ñ[vðƒOh¿â`£xs	ÃÍi”®*]Ãƒ*’3›Ü2X??J7=ÁûË	Ê\AŸ2–‰0ò}j÷ùvüø‚ÎÉBŠdÙŽD0ÉšÎÌ1é ;£øß›Ö'sB‹sWözšÄ¦÷üp˜­x@O0ZŸø;s˜³_¾¸x=š!xœ•P»NÄ0ìýÛQÀç}B§Ñ"!QP Š½ÉüŽC”¿Ç	W]Gµöxvf<Á¬eÆy^wUÃ‹¢¥(²D LQ`Ã¬SNMÉôd”™mY‹2¯‰wU*rQ”YÕæ¢DÙ`FYU§¼-Náì<<£ÊÂ#i´=y¸7°o/ÀI’Ö{áÌÒ²ª›¤©êvIž$,¢F…·žÐ*Òð†½]5fìÕÉ8ëÌÞùþ²Yœ'p›¤q“µ“Òò /^ÅÌnÊY'ÍÆ„3Y	®ÛŽ†Æ•@a`uE+ï@ªqÐ¸l„?‰F¯ØL ÐÂ÷¤Ä—^@RLi”¥ífºñ‘àl§úÉ“Ü$ï>I„uäuÌñªâwäÎuÝ®]ÿ¨Š½Ëy«â ƒóa3P#tÞÐªµ?&q°ÎÐêãÚéªÎ‹ØiœFÚK:²_¾ ´Û˜'xœ•‘ÏNÜ0Æï~Š¹Ã®ÆYgíD¨¢í„´+EˆêaâŒC¤Ä®ï²pê;ð†<	îAÑÒCöÌ÷›ïÓGf°…Zµ2
5kÒXä\h'›<“¬3VŽÌÂ2-ÅwÙGhc]Ö('ëÐ„µ³ÆeP¢¡ºÆœ³œ‚¶ñ6ŒPEÞ±‡Š·¾µ·zX§«'“MÛóžùt¢aJ³¹ÃKmLnÌáD‘~‡.FaE¾ã®©õéurGmw:†yÛ?J-•’I)“RøÝÀ%œu{HÖiàŸ¾K4É·,Ä>uq‚|¥=ì¨ß2hQ}YCù{p#±Dó‚ƒsŽpÆ·#Oð9y"ßÀê.ŒÈtJ’d..¯7«ê…†ºDõ‹V¥(±{`xúñøM¿CË´XW›WgêogëÐÂ†Z>d]]]¬àÂ7¼µ±,¤Ço"§¾þX	Qu©…fœ›Õ÷åÿ•,žAiÃW•xœ•OkÃ0Åïþºo-v“:N)£‡2z(;´”[N‰]l§öéç±û`$~OO/G"µP–ˆl[[ÕÆ6µ Ž¢Q­±j…ØÖ\×F³+FòR²3j+ÖZkõj-¥m¤Ñ(ºŠ¬é:Ùpb8ç!D8gº‘‡3Í¾×…Žåê6iÁÕr$Ú%œRÙ-u˜Þ@ÈFI%[^Ão9ge:¹œ)Â½£>±÷¥ÛÞ±w»)ø0-CìI%×5_R’YsÝÀ»{À=ßÃ‰ôˆn‚‹wèÍHÅæ9Ar_ÄØO…4„y4à¼gC)Q¼‘y…ÓåpÞC÷Ì”X0=\ÊÐ‘‘þRßSÒÑ]s	ãXÆÎ®¼`ÁÚE÷Üü/!öfÄ™xœŽÁj!E÷~ÅÛ—LtÇ1„’B»(h¡kŸF2ê`Jÿ¾B~ »{.î­8£†›‘÷g7[ÝŠi)h?9¡ÔH…`­v’¬º`ª )Ò~àlâbTGêfa¬l6£z0ƒ¸ÊôDoõš|åÛ–r	ð~C¯c€cx„®ž|ÔaéæŸrâ—’ÃU”’ÖÆP+xÕ)àßÚ§FÇíÃ)æ”c—‹˜Ó(¨ÍdÍ$ë²ùîû<¯x±îÛºæRÁµ?oçýå|×¦·‚³Ep¨kB>C±»ìÜÎüþyžüCÎg²˜xœ…Î1nÄ ÐžSLí
Œ1xµZm‘DQê$+Œåö±¢¤J‘©~óþŸÞ˜a£gÇ`Ü¬Ù‘×dnr–uÚDgl\:à¬Xa<ŽqT’7rb£‚•žm˜­#«¢Ö÷þ^<cIœá—Â®ôñîÛ¾ñ™øj:æä0(ORI)B]×Ô;ÿ¡‡L÷µ–ºžk[~¥–RýHá÷”é¯\‘ s†\ˆ)óµ@Ä”÷ÆB¼¤£‘N5Æ“ÿ¼ü÷¢øÛ	]<œxœ…ÁJÄ0†ïyŠaO»ˆKš¦I³ˆìAžT<JÒL¶‘6)MŠ»>½­.¸àÁÃÀÏÌ|3ÿLÁ–ÊB0-*æ
fl-­à¼°´©Œ@GK­6ŽzÄ¡¢%ÇšWcRÙJÕe]N%jä%2#á¬%zÊmáN¼êCÀnìÇ·Ø§)áÖâ-BÖR)®\Ñ‚RÒÄ¾÷9ãt&ý¾!öÛ8~ÈšÒº¢g’˜ÉwvÁg¯;ÿ‰N©‰ÁY?òÜÎ×¢ÓS—/òm‚Á ø2Bnu†GL1€ú)‚ÇaÑy©ÎMºGp>èFLËà)ùp€÷èÃÛ s›Ö›-!÷þˆi¼dš+Y2ã$¬Wg·/	aÑùãâflrw‚yé¯ÉÕ†<ùùö::wmN»ÿÞJ¾ ß«›¨’'xœ‘MoÔ0†ïþsáD³Ê:Ù|T*ŠÔmÅ8íIjpì•?òï±ÓV\9y<ã÷ygÆÑÁ´ç‰|àjš†Zö\¨ÃØ(1´£è»~ªFâµ`gôd#ÈC=Ž$[ì9oÇ¶¦vß	5²iºq5ˆ¾f˜â³óp‹†œÐ*òðA†-¸9'O!:3í¤[>Â¾ë‡¦›¶ƒªîëšåì¢cÌ¢Ïh5ø³-ˆß8ë›ÅY·ìœŸ_”Y;Zx_ï³’ÙËBÕÙk¯áNÿ-Ôv7Aj8\Ð$
ŒÝe¬
ðõáéû—«|<Ü¯ ÷Ç#hñ™à^å™õ´Â­³Ñ;cr
#Bˆ>É˜§`y-ÐðJèÉ›T¯ R„RTÜ·6r¼>+÷™|Ø±§R+Ž¤P¿Kô3½Ñ
ÉºJ‡³Áõ…diÆ¨/ÎRæ|2Yµà/‚o§Ç#¤Buâ'É2˜¶D×fã	UYÈ["oÚ¢1+Ë€KÚLËG7)“ÇHfÝ1vÚ&¨Ü4Ub½þÏ_f¢dÑ{–xœP»n!ìùŠíŸ¸p–¹ˆ"%RªDJiq°œ‰° Ûñß[—ÊMºÙÙÍ´ ¨9­›ºï“r4\0ÚÔØ	Ýs®§ÝÐƒŒè3ˆÎ¨žáH)Ž¼¼Ö­î4Ã^7AÖö½LË["y"¼Ë˜­‡·€q‚»¡êûŠ¶““v®TpOP3.ÎÚn€ZSJ
ëlÎáYz‹3|ÉÉ´9ËÉn]ðÁU!N‹rh©è%ñ'‡kx±?`ýIÎVƒCâ¤R˜Ra!íÃyq²©8$B^=(™®ÒÝ„ywˆá€1_À”ˆéñ®a1)ïK÷ržƒ’ÿœ*òYØÅµxg>dqÉP&¥×·¥šd‰t—ª"äÃ–›õ*³/ëÿ½’ü` txœP1nÃ0Üõ
îEÉ¶d;‚È’¥Kt¦-JbI,·èï«´[§N¼#x<òr"5‰–"UK3jišzV}ÛŽ­èeƒT8{`¢A7ÄûN	ÞâH
£eËuOé®”i5õ’á–ç˜àï[ˆÉÁåN½ƒƒûU>Yn©¦è T×©¾n¸‚>pÎJ×»œ)Áƒ£ÞÑ†ÂŸhÝÉÇ}“ýQöbƒE)Š’mÙ-{xÕ0Ù)ã,¬DÌ‚Êèé¹8G˜fšîàÂ¼%‚·ëå\†3c·ø¬gú«›f– >²‹a}šl¾DSÐ
!f(–k†LÇ…ÖŠ±«+·ë]4f7~íÿ™	û\ˆ~Ÿ%xœQ»nÜ0ìùÛÅF :=O°0â*UŠ”ç¥¸ÒÉH‚\å¬¿u2‚Hár3³;3ì‰ Èsªµ,T™„²ë«¢©«t(	IÕØÉƒpèÉ0 >öyÙIÕ7Xg]……ªË¦ÒuYæª¡£Îê¬/¸ðÙzøŽžG/dý@p7_ÇáÑ£sigçÈªºÉš:?ðU–¹q;ÌäáÍHüÄÁÄéî‚Ãø8[cç4Ê}0¥,«ÈÌ¤Âüš)q~4ÜB?¾C ¡Çebˆ?„Å9ë™t2Ù!q8P€·`Ø…ÝÂ;ù¿¨ÄîÀnñ[ÓúG7€^ØŸI\¼5Ã‡¤z£ŽWG€ÂÙ^(šì¥Ýï´WÜiÇ¥Ý?ã	½Çõ„Z·ðÅÈ¢äëßˆø´‰ßÄå-Üßïôm³“¿@ãD:Oêên:ë)~;;Ò·B|‹áðy VpB,eó ±oc€È´;Ù4S!~Œ±Ø¾OÔÚ~¢Vñ}ÏGœ[xœ•TÁŠÛ0½ë+æØ¥ÇNâ„¥lËR(´—va{K£X¬-IŽ7ýúŽì,M¡Ðí!ANæÍ{3ïYÑA]hÔ¹Ê©ÄBëj[­±(wz•—yžïÊ¼,·$•.Džl)+½+ËBïób¿ÙìË•Úèj½&]i½¦z_­‹ªÐJàçá­¡ñhÉÃ­§Ã]eŠÞC¾ÝUy•¯ÊÞ®òÕJH×u&Fzt¿ÙÕ¾º@…ÆÚðÉ<ƒóŠ¼±GÐ,ƒÕ8ÎZ’ù“‘„ølç2àk¬[JÇÎ<ª6üÎ!Ràd–åR‡ˆ5ŒžR±èð‰ËÏFþ"&òžBï¬Jüåžá5‘ôLrˆ¤2øHyº©Ç¤!Ážž['±4Í’¸Aß“eeäÏ‚Ð·g0v*­‹W
A²uzh¹ 8?)dŽ‹yJc¹Œ´÷Ž†LˆOÆ‡øîº—2aÞóÜ“Æ¡÷Ä:Yyü‡	0š¶M	pFÃº™•õ»ÒÙ´ZcMÌ"ú#±àÆÈƒ#ÁÔœ1O>í#ÜdðÐ¸áØ0çk˜÷­f!×ý¯$ó8'£H ï—³À6[RëäŠ2Ñ8›†}àN—
VL×óœ<ÑK+œ=Xè°è“Û“ì¤‡æn‚QµaMœÂ§Ë6(òÇº‚‹NhÚ´E&½¶|l\bäµ½¤¥CÙýù2ZH{€Nü6GD(jÇ€TÒÚ·(ç~/Ok¼$Y-\ñDaJpœ}
Ÿ_Œ}:@cËå8Ž™æBQxŠ®Ïœ?.ƒÓqäa–—^Ëí2Efè³&v­øF½KÝõù _qðæ§qðÅu5zeà¶kçãkå—%ã—ýýŸ G–ôƒ9ÂíHö9îZc‡çÌÔÝ\ÿ@á)® ¯ ønø¢Q§õ„øÇ=$ÞH6™-êÙt¶@{×Á|‹qè÷ºØÈU­+Üår‹e½ÛT[µÛlŠº¢½Êw¹.+ºù_Î_$¦ Ö—xœ…½N1„{?Åv¡Dö£(¢@ˆ
j{wM,È]äs@y{4ˆ†nW£ovf[e†ÁrÊ!øÑjÌÚ£•±˜‰HçlÉ(“§Xyj Ñ*¨Q¢W]óäbøâ‘­Y'Dës¤ â¹æ
qšxG.ã+ÃîÐ}n—óÂâ=ti;x7rRà|<–Ö¸Â]œ
¿Ás|™ú¶£ïá7ê‚‘ÆÙQÕQ‘cª—-¬x½o5Õ”–[A!îçóD.€ó;×Ò.!žJw¥õœó:]¶ÿÄWxàZ/p*]$Èu>ÂOb t¹?À)>ŽŽâ0¦à{72Öê’rJúë¿'ÿé)>Æ„¶—Ixœ­T]kÛ0}×¯¸-«Ç	et1+¤£Ï²}e‹Ú’‘äfÙ¯ßuÒ¤[6ºöd[ºçÜsŽt"¨2M¹¨feÎ%T•Ë,]p^$«Ù¢*ò4—©L8¤C K…(h£¹Hò<_”™Rå\I*
Ž™ª…¨¸br­uðYº |Bë„ë~ÿÙÜrâÊöïAdùbžå\¤ðŽ§ÔŠV{:XI£±ƒÙúº®·û—?zŒk<@S>ÏÄ‚ ‚sÆÌSÑà´	Kð„ú;‚‡Áº€uÔÙ&dƒì†10vß"T£Û››À¯ƒö ¡#iaÜnºbÒƒG4Pbg·KÆ68ÜÚîöàyÕEqL„Kv»^ÿÆábsl÷‚¸¼:ŠðT“°çb#’µ!ª^mÍyiÇ$Á¾X­>Ézùˆ ôÖ!ôHU¦Qc[Z²0…ÎäÓ1Åp?Á}kÇ®:°n7‘Šì	]i=©)…-v]Ì&"* ­ª•†Ü\íë‚j0}w>sÓcã0¥©lGIú2‚?dyÊ.‚ßÂ;¤õÁÔg
Ï¼mVHNÿ—2€ÛÍ×»»éVî-®¿l~]zÍÁ[9÷BÓôÔ‘U**wË7Œ&»¨Ztnƒ®I»r¶‡ÃtB‘ÊÙ¬”s®ê’&/YQ¤e^M?Œ™ÌÊº¬1©yryÞö/3Í~ Nˆ!›ZxœTÛŽÔ8}÷WÔãŒ çÖén¡HhÑj—Y-È—rÇÂ±ƒít3|ý–“#ÄÎC”Ø©Ë9uª*GDèvØhÕ‰öP!4?ð¾íMuè97¢‘ºnv{Ñîj6‰ˆ>ƒìÚº©ûûVéJêJH.…‘Zö{¹o{^qSwgbÎCˆð^Äl=¼ÅO/Çåxzå1‹iÚª0þÕ®?4û}×UðŒwgt;Úœ1Âá-:ø(NžN/õeùx•æ„[«kÇÛ]ÅÉµâœ1ñÆ~é‚ú*Ì„ZxZdÉ~Cpádcÿ¿Ì6¢þµMà]Î9Œ"[%œ»‡„™¢'À‹Ó$‚Æ³¥±M³$Ÿl¸¹ÝÂk—Ø\âdÊHÐ#¤	•55{œ·¤*fBåY¸_ãËƒXÂM"%
‘ÃâaƒÊîŠ;Ç™ü#>‡`2zp(4•È´hñÌCói ?†1†˜¶ð'1ÂíiKHV»H~<ÑìªZ^A,UyL›]lT
T²µz`ž`1(@%ºp%çqlÍó‚"½(Gî+Ø$à°ù-?ìØ‡ßSÄ,òœŽÔ”ãîí;x‡þD!ÿògá¬>BÑÓ­wÁä†¥ò!°Dý˜(Òz€ÊQ
^©àsÎ‘2:àªwš§©Ø— 9
ŸÆÄŠY‘~•i\¡|ub,ñ‡9évÃ¿¶4I·¥ÛÆÂ“ÞiV
S2³£êR;]¼Æ›¦¦hEÆŸ$·‰­jƒ‰a¼‚ÇBÀYO«#lô¬ØánEÀØ]X¦%xòžÔŒö¼´ÊÓ¦CŠÒ‚aE¿uíƒ>)Öù5äø!_{—0•‰Èöüë6¦!¢0—Á:„ÅŒôPMòsB8r´3æ‰þ’$Fãæ0¡HšÊH.üh‡-Z­åÓ¸%ú–6ŠÞc6òþø„uÅnÔ@ÒÞÃdÕçïz¬ö¢–Ft[Ýô»®QÒ4fg:Z©uƒ½–5×¼õíã´ÿ³çØ8<îhŸ$xœ…QMoÕ0¼ûWìT5Ê—ãä©B*‡Â¥ªz@¨ÚØëÄàØÛáéý{¶ˆk¼ëÙÙ—Dmßõª¦nÀf4¬5Jcµ1Ã45ØNc#ç©GL
ŒØÎåL½éÔ ;=ÛÎVª^µ)3·µ©{lîe	ÌŽaÅøÃaXà¦i•ê¤§«¿ë·{¦”«ý¹Z\Y÷¹Òq{Í ÆQÉANpUu-¸º¹R(ÁGžp	|»1§¸Í<¬2t¡Ný$[92µaª?7:À»`cÒžÂRV(¶ÝwôÑB.ÀBåÙÇåùˆ	ñ´R ^ï‹c#Ÿ?ÝÝsAp"Àœ÷ ¬Xø Ð1”½çÝ\†üYàÌ
¬·2‘‘9Åd ½[¶—d_eþŽ÷nÙAÓ¨<|¸g“á­ú»0”urÇÓëJˆØë~Ûs@d.N<?ÅÂÛÀ¼[ËÚ§ÕéõeƒLòˆ/"; ÃüßÑÂF9³ë¯âÁq×\Gk¯çóáy‹_~ÂHãŒ;xœË±Â@ À‚Ø€. øí·ób	D•Âû#Š$è‰9¨èÙ€=
®¿×î½í×êÞ@!Õ¢ ¡wYY•"‹›’†”!›áþ®ÕçµŠµÉJÉ±€„¡ §Ö 3ùàhAŸýåðÐñvž–y™ŽKOÿ+‰R$ù|¯›Æ'„ã‰xœÁ±Â0 À†*l@å	ý~Ûÿb
ª4ÿö”Y‘˜ƒ9¨hØ‚¸{ï¿Ã¸u3—³’¦Ö,1yÌZ(µŠp%Š’5ô‡‡t[6W}ÁèJC1 QU‰*!ä ‘j”×x9<eºçuYçãÚ§“¹02¦Ïï¾ûõ¦'B–%xœ…‘?oÜ0Åw}
n’–lËö!(ò§Í”v¹¶‚´DÛlé ËI®Ÿ¾„“në&‘ï=R?¥HuSÖFJõ]WXtVö½2…¤¢mj,QµÊ¨®ŒähÄ®¥²%ÙŠtA=u¤Ikm±0¶Ñ1ÒªFàšÆá	Ýùq…›¶¨+Y•Õå©t».—Ì‡H‡é˜.k—™0©ë¶Ò¹ª*¸Ì›<\]Já+zG<ãàùvcß¶ÃíÂa™¥k+¥Ì[¶*¶
ÿ:Ó^qrÁ’BÄ á ‹ûK`BŒdÒtâçH0;ïæuôf|ßÎl^	z~OÏœŒ|H§qè²ƒ¼ü:l3¹È†uÖùaÓ,2®w“>bÏŸÓàâÑ+Ë\îàÛ{"oÉÂÓý<†8cb	aŸâjë®àÇïïðÀ|xaNI°ÿL¾ çÏ›pÞ<}ù¸ƒu[ÕÂj˜iYÓ±wÜ·×¡ï¯»ãîüÅ? BÆV•xœËJ1E÷ùŠÚK7éWÒA×
®«óš8“T“N+þ½Ä…;w÷çÀ­’­c„p^¦e™¸X:=¸Y	­¹†=ör2ÈVÌ60ÊT¶SÜÚÅäún´³6NbïÌÈ‡AH¡¹îåL^é²'Êž/Öcp?¡-'1\[Mñ:!•ì:)9ÜqÅ9«×J±1{…7ô©¶ã'úpŠ”(¶”ý©¸º¹š}5Yúˆ¶YsH¥yß(àÁ¸% ½¬{­`Ù7p{Ò%Pbì©-gûÂ_	³×”\ð@ë¼nÔ2öê ÓsÍòuøç£ìèjyçxœ½nÃ0„w=÷"†ÿd[AP¤H–ÎiÑ™–([ˆ,²Œ o_¥Éà±€ŠwG_D Hôœ+…¨yßRU‹ªáXlµ,ë¦Ìyô2g3rx¥±—U«»FV¼ÔR_4ªïTSèºTÔµ¼—EÅp£ðå¯«óÁÀç•œÌ³Èâq˜ÐØLúéŠ¦éÕ­€·\ä9KÝÉÄHÎèYøÁÁ¥ßá†ƒ9NÞù)óax&E.ª¢KÉ2%ÙÝÃÉºuƒôN›Ò^ŒÆ;ÆŠ.³5¢i/c¼Ï_™ÁiD7d“m‰izÐHÉåf¢AâV`Ußh­—`Ü	xÓ_‡ÕœÉR$XÝº‚Ûh,A¾Á3øPj³?…€>Àx·9ãbµóZïúûþŸÀÙ/èu¨`œxœÍjÃ0„ïzŠ½É?R6„C)ôÜBÏkkåˆDRå¦}ûªÍô63ð13%3[¹³Î¬{Tˆ(5Yî­šLo,ivŠÌ¬õ(n”9˜†ÁtØÆvFÎ<uhf';BÅ¬´•ƒFt‚¶rNÞÓe‹){x½ðBÁÃÁ?D[NK mçŽ ´Á¥Ù)x’(¥¨ið¥p†gŠž¯ðAK¬îp§ÅŸBŠ)´)/Rë^)YIUI?7·ìcÙÃ‹ÿ‚_ë9Ýa-T¶ÜçâSmýDšsNyâÍ×Û$çšé{ÿÏýâùÈk4™xœŽ»jÃ0…w=Å¿IÑ5„h–ÚÒù·,9Â‘dT¹¡o_¿@§sïpZõ´0cPÆ¡•’Žèl·Ö*®ƒÔ\Qí™7dÁêsKGëZ!¥Çr-„slÜ 5¨2Î3×v+ÞË¼æR#¼Ì~ÂáwÓ·Ë”0Þ{WÒ˜ÒVj*¹'j)%[›bk¾ÂsôwøÄ)oéôÀ)^RÉ%õ¥N;©Ô1º‘l#IþNþÏ7ïfn_‚?Á<Â×º,¥6xý¸ò·Ñ±+!tÃÏñŸgÉ/ ³b˜(xœ‘Ë²Ó0†÷~
íhÚ‰“8—3s.ÀaÙ±-¹1¤vÆvz¦oNÊ6°“d}úõ[%•nèœQMM¦6m=hiÆÑZlÛ¾GÕØkå¤‹N
Äv Dk:d²¢ºs²ÕÃ(MÛXƒc3
½–)&ø g2ð¤R‚·6oÁã²&Ê%&}¦£—w »¾í•RC‡ª¯*ÁÕ‹/…¡:xšá»>‡—ø¼yÍtDÚÐQõÃÈèëJ2*~äNè³WJ·ÓÏ ¯Ñ#˜Õ9òROk"\/tÊ%ùå”m)ïö0é:@tî`n‡¸™ðæ‹N%ÃF,>œáN	] LæVÞþúéË–ÑÝ_6á#|Ëtg~«ÎXÒ‡\Hãñ<y;FÊáUáM®Ä´ÏŒŸ7}õœ¸õlŸó Kò¡üév·?
ñäù›ðp·ñðŸw;;±Û,Þþäù.ÅÜO|\ÒíHäPªÚÔìº®Uãh¨†±•”û¿¥ÿq@ñäÙ¸ž5xœ•SMoÔ0½ûWÌùt’
¡–¢‡ªH»RÈñŒ7V“8²Eûï™l‹ˆ
â6¿™÷æÍ8z"P¹iÛV×Q^U$›º®R)k“ÉZ5ê<Óym
1+OS„–3U)kÔ5R§Ò6—²•„i¥rÂ&K»›R7B-±wî”v‚4¨é@ÞçDÒ='®†!Ñnü ™”EÚäEUÀEZ¦©àìhcäªOj²4Àƒ:Lküq®Â(AZKë¶ª›FJx“f\*¤ã%\#Â×ûÝþûí—ë›Ï¬yðË@Bì{Ú>ºi8šçÁRX‘û›o Ý4‘ŽÖM!‡ž&˜½;Z$|6‚q^3˜‘bƒäN  Ì¤­±ìÄ¥‰£I!8Evá ‘5x·<ÅªcYÈeH	ìÜHÀóù £:1/uIáßŸlAlèmìañ¥L`ßÛ º_Âd<RX<1RÅ.6.±"\UŠ°Ìçf3k´LÅ×ñ[ÕŠYÑíŽäO«CÑ»aà)Ô(†g¿ñúöÝ=lp[û…ØY^:^8c.ºÓå\–x¥{òžM´ú‘ÉŒw#<d˜#šN6%ªÔ¦6USæu™“Ò˜*þšJÅë—ôÿ8Iñt^$w™xœ…=nÃ0…w‚[‡"©ÿÅAQhoÐ¡c@S”#À’INšÛW5‚.: ÞÇG2GfP4T!Q×´;ÚVQo†ZUë¦6º•+c¤˜1²Ï€Rd’¦å}×Ô<`]QGUU€ÚTJKªU¯v—|>Ð[žàGÏ^õumŽiI¼ÕüªíúFª}»ƒg©¤œ³9óZH{tÁ·q¼“]§ºþNŠyZFëÓK©y‰xÇ”áÂ^—=ÒÌd%Hc†)ŒpÁia!üÅñiä|*Ú)Y7Oü]ì9zxb¿8XMäôŸq²ú	òmæí#ò™¢Ö À4¡!òbšÏ6ýªWŒÞúq+Ä§-'êM0f3ÜÿýLü =À“Ë–xœ…½nÄ „{žbûè°Û§Óé¥I‘*‘Ró³ØH,ÇòÛ‡K ÝÌHßÎlÉˆ`’¼µœs¦„pì2ÖJ1Z5Š–b¯5³ZUeŒ8í»ÎiÔ–-é0ç¤èú¾íFn©±š»‡¨­Ì)Ã»{Jðà~eãÃí®Â}‹ScR¸“}-b£àðDGJIMƒ/3¼ªèq/5Åê.»šü-¤˜B“òôGJ!d'*É*Iôæ{†—-¬°­°x¿ÂžÕJÈg‡ÅÌq_PÖ¢…2#¤Õ$‹àüRs®Ë—4=ÌãÀs9V¼7sCÈ‡¯[ì)9wÒÇùÿ÷È*!r^”xœÍnÃ „ï<ÅÞ«X`6¢¨Ê¡ªÔs+õ¼Ø‹ƒ ¢¸?o_Ú¼@o3#}£™V™A9«½ŸÐj)•ÅÑÜk©GÄ
‰ôdgÅâ*çqïp²ÆYj4†µÅÅ{4æ üh•5ÊA[;—
/å²åR#<]x¥áobh§5Q¼sI÷ ÌäÐ¹>î¤“Rô4ÅÖ¸ÂåÈWx¥5wwü¤5žRÉ%¥®7Ò;:ÓIÕI‘?à1~A(5Qƒß.Ê„-Ï-–1/ýýi®µÔw!žcï_v%„ÿ>üs·øÌLf…—xœ%AkÃ0…ïùºevâØu)£ƒ]{Ù;+¶’šÚQpœ•þû™í"¤÷xè{%Ñ^éÁ&¯¬¡ÑrÄÞèÇUG½è­wVÍŠ™–äª.„¤^Ú©º4i=*Dq ¯…±½Õ
}gÜË•3Ü<y¾Ãé†9¶ûyã|˜S!w]8òüh§WÚX¥ÔA)xFˆ¦ª)”BÞq	áç¥^§;ÎáœxáÔržÿ“VÊNuð$ºšlÖ¸ÏaÙ^Ø­G¸ðÁçåíã\äÝCý	‰*Ÿß 0lTËa!˜B¬£RgÚ7CåÑü#]”˜xœAKÄ0…ïùÃ^eKÚnÚf]d<«xž&“î`›”4U÷ß›²àÙÛÌ<¾÷˜—"Ô5•Ö‘Õ¦uJµ®²µ´¥$ëòAª®S-ªº©ÅŒ‘|UéÊ =ªeYºZ÷Eª/‘¨CgœD-+lzkº„oásõ!2¼|Ò€Ã‰oC‘ÎÃ„<&LP6­>èN·î¤–RäëÄ)Q„'ôL#|ààóvúÆÏSða*BndÓt•n2YfR¬‰Ç#¼/¼ã6;ôvdOæÄÁ/0ö[€åH&W!Ç%€¹ æ˜U¸Ð8ƒ[½Ù?2û®ÓÖ.àCÊî~Ið…‘±©Ïü»ûûàfÈÞ„x‹€u!)duWñÊù'»ÎíûëñŸ]‰_0,‘9Ÿxœ…?oÃ Åw>Å­ªX`¶£¨ÊÐ¥C¥H­Ôùøg#ˆ0‘•o_âdïÜ½ß½w”l-P‰­ëA;î˜8ÕÒ0ÅêÖh%i?¶J“fˆÇV‹ÎR¡Úž	­enÐ”#u¶—ÊÙk‚×2§_>®)Ág€CØ®ÇÃrS£Sx&û¡c£è9¼Ñ‘RR«Á—b3|`ôö¿8Åú:¬8ùcH1…&åi#G)„ìD%Y%É%ûXö° ¤‹NÆ‚`s®‘Îi‚—Ÿg¬{%ä´i£]Ï7@c¬W=Ír×—Ù>]Ê‹Oqã/8Y(	–9­°Î^Ï[ì»_L¤nOó~æZlvW(\j¿{ähùöuI³KÎíÔmÿÿ¿‘?»Pï—xœ…ÁJ1†ïyŠ¹k—¤i6›"RÅ» ÏÙd²h’’Ì*}{-xð s™æûù†*"ôF(cý`v"XÎ¥æÈ¡¼PƒÑÆº~;ÛŠ™`äR8é¸‘Ê… µ[S°Biã¤4£´B´[ÏìBs©ðdsÄ¼Û)c…;ÿù½ÚÒ°óx¢×FqÑ«-ÜpÁ9s%¥H„Ð•Œ‡TrI]©Ó•ÔZhs%YþH¸‡·†àJ­èŸ_Ž@—3BXežØ±TÂFŒgÌKú9‰r!H–Üót«$Ðü[W2vŒ½ÆUÈoJ›ñ²ÿïCöüòqÐ›xœ…Ð±NÃ0àÝOq;jpœ&Ž«
uèÀÀlÇçô$ÇŽ»¥<=!ÄÀvÃÿýÒ9!Â8Ê¡“Bwƒà¨4ßFí[#•qJKëz5(ÇV0dÀ‘«ÑŠAª¡ïšê…N¼“×fÚwh°wL—|‰	Î:zxÕsÀG{û<N[Ù°±ømmêy+¸‚ÞrÎ¦¸,”3þ¡UÒi‰!.MLó—”²•ß’­¾Ì¶Ç-z²4/8G1C¼bº%ÊkÂ+Å²ù;P LÚÓ;Z¸êDÚxdlò:Ìp)o/:CS
Ù7¨û™|£	xÆ¥Ö×$‚E§‹Ïì'U‹}Á†±ª#ì.:·3÷Ã_aöï†æžxœ…ÏNÄ Æï<ÅÜuZ¶P6Æ¬‰o ‰ç†.±…¦Ð˜}{ÙºñâÁÛüû}ßÌ”•d'¬ô’BZtºzìy-{Þ$¼Ñ¾;
¶àJ±À­Û<rïLË¹lå0ôFYÕ+ìPg	ÇÃ­\Ò
¯Mðc¤žÜ×œó–©qô­Tú¨µæ<ð*ÈlšçP
ýA+ÎsŠinÒ:þ½R­Òw’™-Lî/ÎÚR„½í'cï‚B¹@Áu¤!CŠÓJ­ïs!Ž{2‡fœÀÑBÑQ´òcílb*ì6R—\&*·ÀUó]¢ÙÍ!Zvû†±·Pïp‡äýÁ\Oÿ=†}…Í†	žUxœ”I³£6…×áWh×ªfJ¥SÁŒ°vÂÆŒ63¿¾ý^:‹Te‘D«+ÕÕÕ)ÕùNÿBpŒ€"Äq,‚›ˆå7I’2<#6ŽøhCS	“Qœ ¬^¨îA&0L,ˆ!!¤S˜d<¤Ò„(B–Ò	“Ò\–rü_ý0¦–D,•mHšÏLè(cc&E(ba*’ÜaÑÐß›£:G%¸F·½ÀoéôYüÑú–¢ßÉòxÈQ ‡„XÒTUÞ÷è\­Ðë†úèšø’ÿ ôK‹ÀŸ/¿7ï	#õmóYÝþ¥Š£(Vø)`ÀF%Š:ôsÐ×µU´Ý	˜š	.;í$:®­|ž´çÖ^ÙŠâVÅAÍåJ„ÜlÝª¤{rv´W}FK	†6©beUìZºfÓÁ5B/b ¡½5¼0Eh‰ÉÞ™Ê|«™bSTdB¨©"3h)œæzˆ©´–‡•ï¸'Ç‡‹H$*¨vwvñŒÒBÞD%£¨lW¶=¹Ó·¦8úÓm(‹²’Ö;1ÈvoFÃkâKë¾b _µ³wö÷PÛœyóÔðãÈ:äPãŒv´ù©cËÇ|'vlvùþ„«¢÷ÈàVvŠ½–Ã ¡¬+ÜÝ®L•²ÒÜ~¤bý~:/»nÇ¶fO=©ÎQSÂ°*Õòå”ð9Ý³nDb`-˜42/ªuöÆî”gB
X”(^(»£íg—¶zÂêü¥;Üo\Ð:>¬­9¼ö­Áêåçš?¯‡^ÒÒ‰?˜d2ëá,:’Wå#¸*ür"
s¨.…øBËS;)ó¶´`#å )CµªQvå„r— [¥TÒ`ßÕ«…gaÝ¹Äç˜w#¥à}-=?XïèJc}®pFÂÀÕ'{ÿ†ïWÕÑÔ«¾¬É<‹™l¡ÐØ³¸%:º¬Ã€oûsÄ;Åªj›ª#k#_qœÅ kT5á[)™Þõ`×¨ÚUGR%•íŸ÷>à}÷jŽ+ÔC$$C?mì¡3Ž°ÙúíÉg­P†ËVK$Á<['ÏŸ§q?åâ+:"C)”ƒ»3ä‚|u"®º¯zK‹
Ïš]aà²?í¶>ºqÆvhq|œ´£»Ïí'ºé†×9x«+VQp•~L“I[l2•zÝÙ^ùvuTaOxpûþßQ|<ÿ¤I9ÉÿÄf|„À'Ã_>Øûòºo@W"’éZækæÃþF'&5o³åIßýŠýÒqûj>â£#Ê<®Ç
}›^Q‹ý ^ª,äílxœÁË‚@ Ð «@+`vfw˜^ä°óYoÄtaÝÙˆWßûô¿Ë¼­'Âà°±°ˆ
UÇD,…lâ	¡`2È~{×5–m¨
.èJÖ´„¶ìLÕÈe,Ù ª6ðÇ¼÷¯XŽïã¼v÷»çÈu"‡äâ#xœÁÁÂ0 @!x±¼:²»N>ˆ%xöa§âÑE•˜ƒQ„ø³wßÝo;¬Í½G5!+ÞB‰)õlÈ)P&¶˜Áök¾¬*™²‰•¤ÂEÙØY¡ìŠ„™^Ãõø´é~™ëRçSmÓ¹Ã^C”(ïÏaó!ÿ&©äÅ=xœÌ±Â0 À†*l@å	ÿmÿ¿Äô)ì÷+¢H‚¬HtìÀ(ôôHL7À½÷ŸaÜº™Ã¤Z}dÈì‘5'kˆ‚XÍ ‹˜Tï‡[é¶l.æÐ(¶@­)E,•cÊA“pcÌ˜Hª<ÇËá^¦ëy^—u>®}:9 øÏ¯ïc÷ú¾&·íÆFxœÁ±Ã0 À"®â%<‚Hˆa\ †"…/çó"%½'È8ž ÿ×|ÍëyD,e°©aËØ°±b Þj7u–tDö|ëû¹©ÉIÐCØ(\[w Ò HDTÆñY_îõû»§? §{ß«tDXvrNØG¸´×¥XÒ   070701015D693A00008124000003E80000006400000001642C0FB400017B90000000000000004A00000000000000000000004D00000000nvme-cli/.git/objects/pack/pack-7bdf8f19ab7444581176724ed847b8b4d7a558d2.idx  ÿtOc         "   /   ?   M   Z   _   n   y   €   Ž   ”   Ÿ   §   °   »   Ç   Ó   ä   ÷        &  /  ;  C  O  `  o  |  ‹  —  ©  ´  É  Õ  â  ñ        "  2  C  S  c  o  ‚    š  £  «  ¹  Ç  Ï  Þ  ë  ú  	    )  ;  G  T  \  i  p  ‚  •  Ÿ  °  º  Â  Ï  ä  ð  ü  
      &  5  G  Q  [  i  x  ‚  ”  «  ¸  Ë  Ù  â  é  ñ  ÿ      (  1  F  P  f  x  …  “  ž  ®  ·  ¾  Î  Ù  æ  ô          )  ;  J  Z  f  o    Œ  ”    ®  ·  Å  Î  á  ó            +  7  K  V  b  s  }  ‰  œ  ¤  ¬  Ã  Ö  à  ç  ú      "  4  @  K  X  k  w  „  —  £  ¬  ¿  È  Ö  Ú  ä  ë  ô  ü  	  	&  	.  	B  	P  	`  	r  	ƒ  	Ž  	  	®  	Å  	Õ  	Û  	é  	û  
  
  
$  
0  
A  
L  
W  
g  
v  
†  
’  
¤  
±  
Â  
Ð  
ß  
ò        (  /  C  S  c  w  ƒ  •  ž  §  ¹  Ê  Ó  ä  ð  ù      &  7  F  T  d  n  ‚    œ  ®  ·  Á  Ì  Ø  â  î        +  ;  J  U  ]  h }cêÐÝôì_‰7F¥&ŒÐ Æ«ß#‚Kkû8ã…Hôò¾ Ë¨6øÉö^©4)FÎñ@ @©x:Q!e º…ªîdñ2& F3¨ð—ÊÎ×Ô&2ª®ûð 7HŽ W,H^lË’Q)AH (¡°í \Ù‡O–VÌOºqW%×å`š bzÝ
¥ÈrèÇÑÌFÝát½Þ e«±KØe
öÑwSþ­ëÕ» eEôØÀí)õy	;¥ÀªOµ« „‹Ë)„,••ãËµ‚zR?Å`Z ¬4©³™ÂØ€ÀSOÓ¥,Ì ®¹"nzÒ¢ô•,ôîR£-ÁŸ µÖª­"<ÿ’šÈ7FðÐôb9 Äb…8îMçœÍN°x0™`Î„P àô@Bà²ôR´G)©ÒNN“Ó èÆ©ðX‘üÔOÕ è˜ª0²q é8y`TIÊ½RZ…±øÍF~"JÊ °~ó¼ËuŒÄõò³¥¡ý¿ÿ$Ú£36] šž‚)ELA“'µ˜ÜŒœ
¾€ççâì3Á£$4B®½%®3Íö©W¨¿ïXQ§n^¾˜IzÍÕqVN^Š»ý8x)¶ÃÀ¿Þ¼_Í=_Ù"‚ÝŒ–hsÔB’i%Cm´¡Lqùúž¾'0âÃ;Ø}½#õn Ã 7r­n›ñ®cåwÿZ¤Èb#ç—ø·qi±.òÿtO>u…×áI2·Ñ®3ˆ>N%8eNýA¿ãÎ²×kßW©‡Ô³7è\ÁRúW›ó¡%âå£\1ÿy˜ÙSß-¡©æ.{ç}ì)ìØÞ	ëAÝxñæD.lÿð…ÏÈöüjy
P³ñÍ3ÚßâWø÷B¶ÛF 
ï“£÷­‘[­uóh¤þ»w³³^éŒa{Ë™xÏ‹Ó¬þ°ïÊÌ!èñ¹£?0¼Ir‡r…MãúÃ_0èzÏIZ<aUÒÎÑÜ4vÃ'X÷“iá:º¤â†ÔÀžèÝµhŽfŸ!cGÙ83Ú®‚yu(‰¬9#V¿å“ý'¼˜Üåé¡þë¯R'Ô——C}ïãÇ-ÖD$x²úçV¥¢F<$¬£ó‘XCkýÄ<ºï8àqÄÚDÌ]‘Õi-Î5–i ‰KÑ±h¨†ó†{†ÐÿZÝ$bðÝ„ä}
|G¶íVö…Pz¡ë1*ú²ªœºv¬€\¿æB|›‹Àº»€{3ÙÛ]M–ïŸ–«³3¼˜}‘å+Ú t)üX1æmò‘ó,Âï<X¥MBgR•ûñ({êºFI6¡öÓ¤+Ü9«Ócrò¿ÜS£_:•óo?4¤×’Š;Ó‡V…“
µ&ïä^œ{¬&t{ƒÁ\äÑƒ3È~ê¡Ëhä“`ñ?q% %\²ãX·J=ä©žU£…#Œò%ˆ<Ñèláðõ	©¨G¤PÉÈ0^!QÜx³ädw¤¨©^@g“JøF6õ6ý“žÝ†¬Gl•è¢:ã{v•ð{#Jõª¸ç4 Õ/«.înDˆ,âô5®½D˜5(þÖOÈƒ8¡1¦kaßY·¨ÕRˆüàö Õ£å:#à„-ömúQ5Õñ'M¥ô¡Ÿ^§:.øƒîä/õeüÂÕÐO@†A-aÜÑ?gäbÄ'rWÔr½'q“r]§êv4Ê²ÍÜbëü&U8¦&ÏˆW6Ô¡ò…#øÄŠÜ•hWæž¯QI›‚;jï£½ÒdY¦Ý|X[kúPÝ€å­NÙ*úï*_~jN–ˆ&Õã{ÁÅ|ÿžJx¶-êŒÖŒ2Ä+p˜áÒ–oÆð™ÉM­n‹
=›_¿v1yóÑæ%+À"Wü+©lÌV£ë*.!'¹Wæz¤R´eñ,Ì-šÛàM­ù´‚…A¾\+ò¨ävoTQC³"J'±bH Äÿ£òu÷™PâàÕßoÂŸ•R™ŠÜ[íIFŽÊÿðçãŠŽ[5Rßín!Ãž
ðèôÑ6^§ò‹:µÔ‡â‘êÙ;—1¡ÀëQhô¼éDÎ9XÏÔ¬uÎµº)+p¦ƒ@¿:0KMëT*Ñ’Ûùq0}:ðÐrAÝº·=¦'´WI°”´è¯}Õ)‹MŽ	Ö¸\ÐEµ+ê4Šï©ýõÀðeêö×iž¾ÓEïÊ¦|ßJˆ`’u«ïÚÂèÑ‚:òe
ÁÂ2d{þad]'ÕEeÂ7w³ð›ßÙNøè}‰ŸÙä69‡xÁÐŒÎGþIÓîeªO¢±—VI8 ûÊË¢Ú¤ƒcÝ3]	2‹w—ª4W@šÚ
«z0åè½ßLe4ìã/;a®¯,Å³ÿDX”]‘êóïQ îb*Øy}•Òá0u;\¨ïmúý YœÐu}[ïŒ‹2¡Þ–‰v¨'ýG·ÛÃ«±ËÍoâÌ£®®y>çÂz(Zéh’T‘qlµ\ØS1÷*E^UcI@
‰„{ÕÃ‚ÿ’DœÕ(»(g”T¿U‹§i¿€7-Azù0ùÖ..pò ”-|áP-MÏË„@#<wÙ²&nšüÝF`jE‰èÐŒ“RJó¢å<{s|7øŠ1ãï"Ð®37²ÿŸ{ˆI´\‰m¸œõÔ*XoÛ½BmÆg‰¥ìC—3dÜY¿C¹Á:(ß¨StàÞ½^Ò¤ùÉUÖ¹à¾¶([¬‡…`·RµíÆÙæ§œá p(l0ö•2I÷õ<öÛ2œ<½E8Hßù§ˆ{Ù‚)©J¼‰ú£µ®¿6ƒpÐK%•Š2ÐlÖ-5AHš;tæ(khR(€G¨4’/	ÐÎè; Óó@{hÆI	È2UÅ¸îebÆK¼g SKa<ç^_gh=Ož”·8Š¾9`_mÞ†ƒYÿk4Ü.ì­ü.’Äkïáÿ=þþª9YÊkõÃL?µ…¾¿OEþ¤\ð«Ô˜R kàS×	©XÅå‘/H[™ås’ÚEsZÕÍg®e1GÝr©_n	Nân—´ì¥l$/²Iš‚8	oÔÓy…¡dhJ—±Í— Gõg	ƒÈFú4^®ƒ¡Ql2£:n®rË	Ä¯u¸^œ˜\B¢5àè^éS%	çIÿb¡Áþ¶yŸ…Ò¨ë“Š	ï"‹Oñðù+ÛÈ> â®MÙñ	öLU2¿™Ñb‚­GÓK„‚|KS
Þa÷¶:8ŸÑWñ•ˆS7
lÄqmUú‡«iRÖŸR“£
ƒ3çÕ vê§¼7î±Î‰Úël
ŠÍy…êM­ÇK-ÌÑA o6é
˜(ÿÎ8Þ?H7€6X15¹î÷
œîÏ×ªc˜1ZH~Ô+œ¢¦úK
±7 ±A™€¥¾ø-³+bH
¹¶¿¦=<Õ}Íº³(9|Ì
Áng…äùeÀ›; H]SºÿXÆ
ÄÈºÔ?®¡xã¿Ä”a
ÔšÞrNaø§>ÇK×_{
ÛŒ,yß•;¾ùàŒæ„#šVPc
ñ(¬û ¡D¢íUd)ì®ü/Ö
ÿ¾zZþ}¼øI›å
ç1ELíH(k*²!ðÐ×®ØíÁníÄ\Ö?)aæ/A8ù‘Ã¯k]î¦™ Nc¨·Ï·‹sTcŸŸóVQ€%&ûx MÄ–Ÿ0Æðëï¼qÅ![üÕæÂ¤:±<0ìu2pµm~‚æfÔtã§†P‰)a…“®÷ñçZ(€ì.T„Ldðì6´Bè®ßNÊ/ï‘zŠ°
)\ÆØtÈª"t^6~Û‘¶6{u[$Vn5Z"
‡È¿N-á ´¯9…F·Ïîj±P~“	riýÏ&ºýÞ˜õÞœ•”&Š5ƒ™K ÿŠ£0©Ø•s­K™£Ý«­Xà]ƒ4ø…·»Ööœ‰“\XZ4
\¶ ÂÆÊ4ÁsO<~ðcdJ¤0È+ÎŒÅ4TÔž±…œû@ùÚ]JÞêð½É‡ŒÖ—_:ÛDjeÕÑw5§Ú2[žµ8×}âOûVV0¼¸½’Ì[U£`µ3¥äæ¹iVÓb¡ãx=Î%uJ/È¤µ¥§³á˜´[ªvj+‡àûhquÛä©·æ Š¯ù¶¤ªÀJÁ	¡Ø‹Œ¢Ý‹…«ÿÀ½WŸ°™„	H2ž;‰Bò(Â…î«2e~£‚Ï¦HÚùJ®xËf(KÂ"£èÕ…¬«JŒ6»ŠæÔ“‘ã²	ú“3ÛÛ-½)	°šBÎ@‰¦h[æšNP.+ã•ØÈÍ(ç_Ð‡¢…ìqA|õšnåïä—îÈ'•º–¯æƒÔàî]R‰£vàtF4ò'¢ 4ø…éÐµˆ1PVÙÀ#>«@¦÷•)ÒõÑ?'X.Àr"UØ63pbø…ÒSª_3?Q†Öæ‹Rø¾î¦ÙlG5:Óí‘Á$-ÿàJû?S•Zß´ÍØºF7TYgí¹<g-9BxÇVœ¯4j¦iÔƒ=Å’nwr’Ù¬[ÐÑsûýõ§Ÿð$ˆÝ¡}òÊeçAMàÒÍµïDkU4¿Gæ‡ú\/ø¹0NÍÙ)•aë-ÆZÎ°ôû€š\§ÖÏ×•‰¥‡ÆßSá#‰*¿<é–¤::H*ÍýÏÎü&ì«
OFza5JÓ*smÝ°9uÉ)7‡ö‹¬Bz4ÜfÇŽÜ÷­,ˆã¤~~?oæŒ(¨ÒØ§!†>]ª†c'ÍDÙÊðt;%Nm#'cžàšØC{~<Ë‚OoêÍ*0ùy¨wÌ¿²®åJÚó²-\"¾Œƒ“Âök•†È7xnfúwð^“)õÚþ•Q\)¶Îjÿ¡r´É*€D¯Ö H°ør]Vk³ÝÌÖ5§iz±gJ¯QÍïº€”tTa½×¢r»ÅØ.
l6Í­05ýý<û»÷.
Ö‡"ÓÞPÞ&ùÞ05±¢»¼Às¯‰%ØuÉ©à:vÝ¬.µè—¤Œhà¿a0ÝÓÀ¹7	=«ü“´ûV×¬¢pR€–†§SP æ5NÙo-¸”>á™2c•8æ~dKh€â€‹è_+§•Í4(2oø;®<€öáPÇý%&1MÌ†Ÿ\eT+½±Á­{BY%ÎGL|àabÐXùÙIí¶³,zbb€¢¢£ç^<â·æëÀo
¸¹®]UË’Ðq¸¥¼RdcC‰ñÔg¯<g‡Šï¡åxÿvÝþ9ŽIãZÏªm"Œ–0Ër—³Úƒ¼êÏYûÏ[oð3'î;5ïŒŒ¡0ÙÁêDóÃ+Ã?ˆ²ÈŸcFÅ– îÂÌ6)‡Ò3t?Bª×?W®ðìþÈ™ÿnûyÕl¨'·3dú.x±Y/âYB¾½‰¿hóX#¸5å1xwÄG…¹ƒ=;Ìgbh{ž;7$íqˆb³ôÞ¬8ÎodÆ297Ä 4!týÙ¾Zf«¯$k‹ë5·oéö~4®¦kdÀ{%vðWDå-òªG¾_°´q*fFŠþ<x«‘¦ãbÅ=PLÌÇOÒd‹÷•Ö”ž®%Ð>-X„Ë€“:2¿ž™Ê†læeÔù"/ dœza)ÂÔ.ó3`1yqvk¯‚b]"	ûÑÁ1¨‡g|À"’v±Ï
éöŠWBçÖ
ÆÀÇ/ô gk´“˜¾=«/)ÓÒúûS‚¿¦ÀŸ3”ºŒè{mèè½Ú}5Ö?)\Ûi7n£€ÃŸ£-l?Ó2O„DKC´
CÚ‡sí7„nÛùÝÅ«ëQórÄ¿1L;Ç%`KGO@¨úˆ^C!š˜N§€pˆ¿zåGÂåÈpn`þÇ¶T)œ³Q,ª+¸í¡'æñúeLñàe‰zZr:·zGC°/~n>l6©ŸÊàfZÌ’€±˜Óú±Z(\‰XÀt«;k%ˆ€ß³Ù÷Ôç¶[Ð­Ïg-ûU…õ÷«Qla Î5HwzËÿ•üoÑ”£÷¯øý¨0 šI‘{¸ºŒö¶•É¥gÒA¼MòédÕØQ€%tœU—(ó|› ¿‘ Ùà´µ”¯Œ¡—KàÏõ?lcÂqí“ä1Â³„®oŠ³0}³yn´É ÔðÑ2IéH¶"ùŸ ˜ã‘Ï#
.âvÌ¦êe^/ŸþÑøh6[ß÷M áÙåq6‹þ˜‰¢ýÒ˜Iú$Â¶ÍZ+ÄV¿ßšr’|lÊdÅbÉbøìˆ`GØ“^ù™wØð5ÒEå§OøÈÔ¶¤bÇá —³Û¿ï¦§CŠïh+ü†qÞz“ãÊÝÙ¨Ÿ‰X]÷4”*Û#¢piùÿG$'@"IÇ¯†PÕo‹1´ˆ?çñ¯Óeæ¨Ÿo°¼2òúçQ,Î«×°ÐfÆ¨l¨6?= b˜ä}»ZS›pÊ|<­ÂuûrIjRMhB ÎÐà÷àÁ´ Úex8ÀdäšÇÖ×ÙY¾t2aÞ»a‹7…úèqIV±ó8øÑ9i‚¹×Á·†ï6Æ¥ïÿmNü±ÙJe1'jWÕmøŠnO^{¿5<hÊxÈ"õšÒÌ	hnPÿ3Ï=\£<—ôÿÅåVÝÞýA‘2/"Ù…íG¡ò®È©8"
ßIðÑ‘è_¾¿ç·+zæ¦³0mã"´/v }Æ¶$;Ä‹hQÊŠ¾ówe‡=(\kÅ…GH¼Öõ¾#ƒ¥@¬Ø¨lJ<²L<§îåÙ/°·‰'ËÇ%#È«ŠSîóó³þŸC‡`º}…@ÄÓŒäÔ÷\8ýë)0Ž°qotS×‡Mì%1LQHT>wÝN%z ŸQcY¬8aø†±ût{|ÄsSYRÁ¸je(à–Ç;Î³}£NŠ=@œ¯ªQË©0ÐÏD^áªAŽ‰Ho™xfü3¨×ÏÐqÿµñrµ6Ñ¶NÎ=*3ÜËeÈ‘±Š?ÏiÝ"<jläv›ëÛËWíA¦Uªáœœ;¯•­íó°ž‡Ï÷­\îénKøMPAß”v'þÊ?ý™ÔŸôT¥øíïŸbêD°³Ûî…¼áµ­BÎp#-²…SìQ£ÈÇ[ ”/I°'ÅÿÁdßÆ”›)ÇC9È¼lè7„§*-•ˆŒä¦óâææ}ì*³pÙq)£=-¤;€’œá³—]·‡eØÜñJ@8­Fh¤¼·mÃ-õQ¶Êª¸·ªüP/KÀ4wxm:H¦{Òîˆ Æ…)BÚ5[ LÂ!˜«§O#¸¦úÃ=ð$‘{4¯.m‚$Ê9kÙ-2’Iñ,cîÀ¢çx/Þã KòÎÀƒS-úÊ/óJgð™¬èFÈì¦†„þœ	ïœ{#…
¿µö‚ÊÚ6RòGJ+ý_6­[¿ïæ£¯od~›Ê4‚2ü8Ô)ø`©6Pð~ôFž'Ï•¿
q§ÍÛô±vRÀjrC;EÎ4,aág™[£KÌTM²l"
£u	„iß ¶Mø³?œÜ³ý¼lúŽ—(&±7v F¨Þ:ma§ðìêŸjúRÂÖY àÆÉ¾@¥á—UÛ æmw¿TäþzBÒ¨þ­¾÷Ò«õ©#<Ï
xÌG¬Êäª§2òdÈ`|Â~‹0ü”¸Ã3¿â‚Uj‰)•m‘ Â‘åÝ¸ãž:îÝ4•â7¿Ú§D²cìØÏ)h¼‰®±@%Œ»Æƒ“õçhó6«w{ìVÜµÆPÀ‡ÖÓxÇ
¥ë…Ù|ÞY×¸…GàíaÔ×Út€šH‘|øwûò™|TkgSOÈºB.‘”à­ ^¿S‰"ÖfØÕt»~³6¼UËÚƒI€á-hÈ&¨u)ºQÒµýõRdë @X¸Î–×Bä>ö§F¨ëEYXº™@õÙ„)Ž®x[P‚'BÔn4 ¥?{õo`'ò( Mƒ=—ˆNÞóà·„“bvaUÆ:H%Y°QÓ¼ó©!’.wáKæÛ·sáR”Ø!÷Ë /óú_í'nºRœ¯¾>”•„BÍÄ¢¸ý,Ñbe>QœA!8+béØ(5Q’ZêÈÁIÎÞ^s8ó³ÚÚ4¢=˜i:OÒôÐEhJC¿F`!Ä$ô¯°®í$£˜¯IRnd÷î=^;4Ë@7?ŽYÈ1Œo¿®¦Ž¶.Å'el>Ë~6iDšzÔ5¯JÛÉÖý*m€­€<_L\œ–¼ØEÄËcv).'òŸ˜óLcNI•q~WQÖìe›NÿŠA¡/ÊµxéUáãÉWhq\(3ï£Õ³ë"fß¶ŒÏ·‹“âû±¨^[µº4F"l»N¹ù*(®ßk²ÍÖH;j¶',lßuëU„Þ^ŽËsRåž”R½zMåAÙxqd€Ô`9íÄçKÁvP“	J«æâø%’¾=Gè„Ýï¸WPÆ v8¦ÕŸ¥Zx-äAK»SRÜ{ÂÝ¿IõºMDÎwôQAU‡}\Šj¶ÕQû/6'ØXJ+OšóßC—’0úZó]ÌIÍLU¨7]³ÚÁÔsTŽäQ‹P(:zzµãœNý‹›vT÷C]Á`ß]Ó(KŽ]2U—Qºtkm wóÊë-ëèÚT–Ò–âƒƒrp¡’“Ñûêfr­ðlÔ„„C.î_#–o¬FEû³§ÿºX°¢Y>á:+ŽãÔ¡jñLËžW‹©Š[Ué…©»+<ç˜àÖ;­}É&åqUÃj„ñ›œãä'výÏ…zbûŒ"Ô<váHÚ7ÜV² 7®—üƒNÛ1Gzá–æ8ûi×ýõ|X¤q„¼m¿.˜£Þ±%ç”þÉ B€q0M6:¥¡v[Àuâ '6œíñÈ&
Ë-ß¶„ã¤ÏXBt.¬ÐªˆÎLÓ7¼›3iÀ[|h1ù®ÚŽ‚Ö%cÄ-«ÆÉ?£[9øõäéº,ÇM$j“òƒ¡’[XlÅ?`Þ–'ƒt‘!2?VØ³Ž%ÙÑe­õ¤þ¦„Ö®}|ïõ§?átÝè° _a¢º^½D£ˆˆ&Þ[ÈZû$¼zf¨ØÎ Âå¹X:´ÆEV"¬ÞpDÄ¢…0¾ÿBàXekCÚjÊ'„hcZ}!k"k57F’lMÐ-®DËE]x
+#öùgÈ%—4äûkêÕø*ú×~R›®æÏÞe_÷HÕy\"ìB¢@ÿ#ÍÃÂYv«

Ý%ž.®6?E«ìaQ0äÓ¸¼¾9¤¾Ùr³Ö;“ÃßÖD
·–^À†Î´Û)WÎžh®ûã@.`1§kHŠ^¶h¦¾,@‰ãÜ\‘· Ñý¹N0ÞöQØPžGß¹ôÿ-“	KI”î£÷O¼½W{Æ"WH±q^¤ec"ÊÍ ÏÅöÒq¤¹Z½TV"Ë½Åfå45Z	Ý…‹æÂQrù”nIyîrBD½×"²†àÆ4ÚB+óÊä»ð§ç™¨sÒ ùÁâ27«¾#cÿ”¦—©5¾ÞEˆ¥êRœœTh–HŠiª Ce®½XúwQÌþ~ê')oS.7“žŠÇg3çäNÕÍ,IÙZÃˆm›çÇôhH¤6 ”N E>Úÿõ)îèQœÒ$)ñƒ?3UŸ¼>Dôf|[~¿Ùô7.EpTñSk½!ÇL‚lêfô‚‡ËuÛ_ç!)&Ý]_	ZGy°Ò+`D:€Pzÿ¯OŠ¹ÒÔiŽóIÌ&«±É\ÞyðÀÎÛœÄf‹–Œ~Ÿ6(ÁïáãV)AÏm¨\ö¥˜^sÎm"Ïø1ÙÀúäí©Xd¦GÞ‚»ÓÀ—?œ>äû,B4^ÿ9Nå
ÉýÀÑ7Öç[ó^ñ9$Hzÿ'gÐDtÑIöÅu„å†ÄRÿb^Rµu
¶»K4õ?ÆO´C LM©n¨¯&—^$ƒàÔ¸x– &õ5$Ð~öd³Éö·&	‚ 6)2ù(ÃÎW¡ÑÖ#M”»jžŸ 7Çƒ_ê§ä#Ðóuëhk¤~ÍÂ X,¾†J±ñC°ñ;ÒÈ ³¯ Yöop…µ¬ç=KS[¸‡öå †@dÏ–jÕÔ¡„xÖ¤;tß ”Ô±^Gê2=ÄÿÃ¡ª¥ä µ'Ÿ¸¯Áþ[Z ÿ1Æ¹Ü‰Æ Ü"_è =Uf¾dË€ZÕöË çŽu‰%="I¢pˆ)8Óþ¼.ú îÎ÷âØÈPúÄ”õœ*&^ë3ž! `ÞûåòÉ:k¨üø.šÜ:¼¹!Í{¥ä Ylá•ìûÔD]~Ý!§ -Œò˜½HG½Ny"ÉÒÄ3!'ÿñ„½ßÒi·]B^õ#\?ò!1¬ÐM™EjQ›rct•›UÊ!<Ož.ÿMèB¾ Btò_èc!X!D> ¹¹w1	_”1œ{À£aw@!QÚ'kÒ\MŒkJä–X•xéz!iÃ_>4WÊ•–¥òLGŸE…)e!yïFæóð0"+å¨•mØ *!Š™%•XÑ¤}4µâc*wúÎÄ!]Êð˜öˆ3ÉZßŸ}”<¥§!µÇÐÕÕj¾ñhõ/lõå±)!Þ§%~âPZRfôÜyÜOž¸ý!óþŠ²62) ˆ%ý-Ýš`é.M!ô8°àmÓÌ»ò¯7e!øYô˜g“‹Ð¦›Ö;ØE¬ä6!ýâÖWA”¼%á¨<»†!wª–%"ôë¡ÉY-Hgû®R¶a([ï"
(Rs€Mó‡^¹ŒüŸ	´lë"4Ü¨ª¼Œ.0‚hÑûX“È "FÔ%ß¥‘iF%q_¿QÒ\å¡"^8ôX™,¥_Ë)LZªNã"rÊO©ø…lUUY”kÓEÛ˜<"uË/Ô©ÑM ÿüi.‡¤Ê;ñý"ÁŸj[X­œé,*•#ž«‘Ž"Ç‹û0ª8;ªÄ“²Qßz=©F»"ÏŒƒ¾äz¡”7²r”aÞcc'"þB­˜S›•«#v¯‘i[5šþ#8šG®²¥sì¤ëcÄ”£r=<j#ã°EŠ›²ÙÜ=nø\àÙ&#­ò„HQÛk`kŒj
’ª#‰\‹Ç!¯L”ïJåúj/;Ê#*»$6>z¦ØÚ¡XÜÌµp_L#J’ÂfÐ§R‹âqÜñŠŽm°@#Y›À(D0¢ÌØ¼·…ÚL9#[æWP×Æívâø+Áý¿Ðzv±#b&“ÕEšQ¦Z>ƒ)øØ#„y8Ø8PÈœ#öGôd#“¬ªN¥‰ÃÜÀÜ1Vë¥å#š9€êF7ê˜‰(ËNS_#¥/PÒÚZùuO^¤äphNq!Ò#§„M8B¤ÀÁÏðUœxå£›#¶8§«l“ÚñëÞÇ–ÿ +ã@#½EµÃóõ¯÷#¾]„¿Ã
úù#É%¦L <É` ‚0|¶j¡gŠ€#åÌÛ÷Þ“¦^ælÉD-Î#çPÍ,‹‡{{½æ{I®Ûî¢œ6#÷íÏcÀÏhƒuÇ£ã–TtÕ#ÿ¡û‹·ÂúJ,ü$eüU$ê’ú­FØ="Œ]¤î ±Š¥ø$¤®¥ËÍ]êÒ;*jSU)¥¹$‚Ob}æØðŽ æ›4çÝgçAÜ$ ÑT%‚ÿ†•ªù^$+ƒ(ÿX›fŽypúNÒíØÏÚ-$O‹¢&Že™½p%‡,PGck$aQ£¦;Ò¶o:Y¸Zl#»F«Þ$Aü‚è^7"LTÙ ´ü6£@$”àÎrJprNº˜ngCÈ[ä$ÝÄA·'³~×°CÈR¡§Þ¼Òÿ$îÔ„ìnlal2}{Ó‰(*AÄ($ôñ j?ÓB3×@ó’¿ßšK%J‰)‰¸&Ùw6”e^þ¡:’%¢¸Ïèƒ³SWHMx;siM­û%	-{>×NåÐCAKœ{›<D%EfðÛiZ-0©&ŠÃâô&p%vœ‹g˜÷ßìb¥»ˆÉ%I,Ý æ¬ÕjôÔv<º’Ý<J%KÍk#CoÙ)áŒ“S"AT¡!%Ri¸;4û¤Ö7v£å,âÔq%k‚CÀ~·@ò©¸n_ì¯Çªœ%sT p€ˆ(úû±b{ê¿ì,ø%u`› E?Oc7L…L'ÇH%Þsµõ -£¿6ËËMpUI•F+%ýŒp{l v4VjÖWïqðž&	I”“ÑÊ®U¬9Kiwt€-³a&	ZÞ¤—–F…¼CªZ<JŽˆsL–&&Ôñ=Î(Õ©¥)r|¯
÷M@&+â"Š‰_Ž§ÄŒmv¢>Ý¸&7?ªµOÁ³-wÒts%jý—|À&A… ·¼¶A§½¡8àsøó&B”‰ä'‰p5ëßüèÒvÒÅî¯&_‚è–>2Uð+hìêôøšÅ&fâ
ÏRË÷DdÒËÃ›&g£¹é¤+ÍãÙõ{<”>3m&|Á™»S*œìëKŽþÓ‰Æ³üí&¬Ðbß	°Åà¦j‡b˜c$i&¶Êž.FgÉÁå›;Có´Aà&»¶ô5@5YÁy8k…:‰²h©&îc`6óÛ¤[ËïCÒ
<a›‡S'Šô%ú¿—W‡”q_Oµ ”ù'ÿ6>óÄÉÖØ9#0–Ú©' §õ½ÓßÛ§äà]Úr^B_	'"@¥¤N.! ¨O™ÿïÑÂq')g¤=ä]ª=LºˆYI¨6ðÑ'-ÕÒÌ tÆ”ù»ù(ã™l'G3‘“DQ}àðX|¶™þùÄ'JIuœŒ½Ù‘%4UÆA6àêsËk'™bÜ|ï_³µlYçã}eÜ4>‰'»A-Qi’;¾ãË°M×GÀ'ÃâSì[XSFÓU¦ù÷â]'Éùž8ÀÇ²¥”ïiØ‹ønà¼'ÌT1ôª½Èþ¨³qÁ‹>Áö¹#['Ñ¿D«k ÍIº±g,}X-1x'àÛv–Æ­ê’¦Yª‰¤,cOE'ëbvÂÞE ÑV6è½a¾QsÎ('ÞÄ$S&o>r=¬¾ß“æ½^ü(IIñÿ2û˜1fm˜¬öŠ–(Sùq^¨ô~’C¶ËÑÍYAžK(X2¬!g´Ëîñ?É•¤è¨AÊ(\“ !Î–¶Fw¡µ‘ëTrFä(|ùYÄ„Ÿ‹TíÍåˆm–€C(}„‘•úß‰×gß±T¢öÃ(ŠcT×G5oÍº6wÉùÚ°(™œF GD¯‡-KýÕ‹™† Chœ(¡xš#“±vÙ@ÿÒÐ(¿&Ïºd2(³2?€z•6ˆ5F¤{A%(ÐZWÿé@*¥Y#‚7)
(ìß6îÚRÆ8ZP«¹`L(õ9çšØ)U5;P°—œ<ÂyC(ý5sþÎmPÃÀßz›s]Ó)ôˆš}FI¿yÅ~_w@dYw)O*£	,œ³=Ã;ÀÐW®¨ÝØ)a‘cGvtËI6Juüç‡.©£h)°¦„uŽâ±báËyÕ™Ã*Ò)¿ä~Ÿ*y’1,Í{§Ï²FSp)ÆfÂÕ›ÄHÜ'+W¼UÙ*0±·®¶…Hñ¦B÷"Gì#×Ì*-[CŒ½L4\ö¤§šØ4ùÌ*ƒà«xni>÷^­Ý]Èá)*‹ÉH3Ò3[Ëo…¼JÁ!Dy*š¯"öV‘ÏxXšþyìºœ* ž6r…
rêAƒ(]NB]†p*¡xšÎkæxC9#öýk£à¦*¢rñ“Æñ_ÈÈ&Ÿ#‚*À aGšIÌwÒ4CÓœaÏÕB*Ë—Ô´ÏrdýŽD*žŒóB**ß‚x	q3Ï¾Á97iãÅ=ž*èuÒ€>ÈÀª§ï³ÃòËÃÍ(q‰+,LÀøú9œ—Måó«¶+5¶X'a–<Ç»fu5Ip+GD#lu~µ­ÑU?oµÓÛ¯í+_ÌQjv¯fsüEÆÆ'„Ys+dÍ˜îhÐü)¥zÎár+is©FnÃ„ýîjn*z	Æ°+ŠîãÈ«ï´¹UËR¸‚F´áÂ¡+‘	9³¿´HÒ$OÉßnÄLF+œ.ps;ø<‰SË”³œ÷‡«´+§HGY^¯ÖÍë¯ó/×9N+©jÁµvy…Zö¨wùu|z¤J+©ö‚ŸmU9rë¤§JÌN‹qÁ~+ºYOÞÍÇBºeu¡Ã·¯OˆO|+Ãs©Ê°®Óì#—ÀŸÍÌê‹+Ä•áÔ@’÷ó]¨ý;ÄScPzß+å>®y±Æ%Þ$ÙJÝâèÌ l,fch(?	,	ßiîé|<,gç2úD§ž²{#ý½y(‡,‚Óâ—5Â¯Ür×ÐÊe2×,!uå{ãšå57“,ðp¡E%(ãÜ,4vÈ>dõÏâ!k7ý€ŒÃÀZ,A<šÒ[g£dTnRÍˆ×ÜÑÖ¿,AŠ îgâzŠô2Å¹A†È@EL,CÅ¸98AÆF¹£„|9ÈÇÛ,c/\9Û²sy­K§7‹/é‚,…|÷g*‡k}‹Éû3QÒ‘ù,®8Æ;<
¼Sþš²¸³øKöÙ,Âx7‡ˆŽzW%t«ÅZ TQ,ÎZuÜ#,W¬ú£fv&ŒS‚<,ÓÐÛGŸœƒ¿4ìÄb86ÂEÞ,Ø¼¢5öŽök¤Ï~y¹XvÅ¦¯,ópÃÃ¨–Pá:$OS%Ùq¼ìÎY,ù‚Sƒ=Ý¥î*&íì¶ˆí-(Ž¶()žÉ9_Q›v×†?-:€ÔÕ§ºä„nýÆk· ;¯ñ¾-Qw¦„¥kvæ>ã©méŒD]µ-p‘yã¢x4´'óM×½¶¦-„f6Ž8<¾hðÓV¬“£Â&-†'­>ÿûÐÊÕ3ÎSÐNê-Œ1òØ­)aeÝ|£ù¹I†ª_-¡(6@P)ŒÕÆL¤] ˜Ø-¢D^˜ßa±’DkçÆŠÍ¦-¸…ç3+aº­bm°f8|IH-º¡=MÇÈ>å3…‘„ŽFËðêW-»ø £ÿ£…Ìªßsâ£)k—Q“-¿W×AižoÓösõoÄòH-Ú?q&Uñ)nÛ´S£ª‰5-â/ÆU~ ¦ÊOµ6Éd^Q-ð,‡}D ¯®¯·»ò.	BEú½ÏÉ›®x9 ß9A.ÙO;(Ô•ðj\–Æl‚"ü.#ß+d¨œæÉvE’ÃõŸæy•ï-.SAêß\È¢%	ýmL¯Í€;ì.V:l³®…šDEŒôÎvÏÄ*.eÕï;™G–Ã=ý1køi2Ñ%Å.|#“ø9ÙqRöÀ)"‰´®.“I.“f®|Åˆa	ß'ÿi“:r.¥°Ædå¡š{COþSpÚ®VÜt.©Ž‰áHj§T¸åP¦zŒŽë”.­YrÏ×™—ž>F?èÅ ].»Çy½LG&þ?‹=iš6(ñ%|.æ×V›tŠ97e®û×…Àÿ%Ï.èŒ\ì˜çåŽ¯ðFÂAGzÛ.÷T	x¢SXJÚ²ˆ7Ê).ÿëb—÷Gî¿áÒ‚†Bw/âÔ‰Îç¶Q„ÛvÛ ²š<</5ÞÒg»µÞ?èwß”À¹·/‰/Ô’U®ÍmsÃñÿs°ÃCãˆC/˜‘ãÀ‡œ_þQÝ‘ñßöPF½Þõ/¥ÕXÓ=¤ÚY3xyŠ
õèöê/¬6x¸‰¾‰€"9‘±äL†@š /¯¿5yúüáIßÀòá—çéY{ÒS/ÄKÍ¶€¹³µÒÕDMRµöšÄ/Ë˜Œ‰ÓÉ±Ø[¡›¸´»BÂ/æü÷^Ç·‚‹bˆÓ˜)w>6/ôž5èÕ*ä.œ¹¯Esv­B/öª»HôRKoC°9--Çî0Ó¾š÷ÊÁ¦ó8L@Ýr~àÀ0ê×zr9áŽVúÊ	*€x'/l.0¥“NE.!ä7ºE'4gKé0í)Ú¸Ë¦>gÄŸ®é‡.Gˆ[0’úç¾¥j”ÉÒ½¯3•žïpµ0&<4è1Áˆñœ¬VƒtwVôÄ04ÃG±LÞ½™$aÍÀ¡±¿­Sý"07.£^4kñ¹?Ïe7V··ø—˜„0;ÀeÊmŸÈCzúç"jÜVŽïlz0>Æâ(ù)k/§È™Ûb.ö0I“ˆ,¥Æ?ŸaÄ.ºÏ.…7s}0_…(=ømPxmÃ²Jõ6³‹l80qB½î”×ZÍQóº£ª ,Ùë0y)²détçkØ¥ëí!å0”ó·À¡m@ù‡¸^‹ñ±ÔF–Àh0¸ž^ø—4Û<WÆ«vÃýO0À|EvÜÖ%Ca}øn Œ0Û§nVûï¹‰ƒÃµŸ8ÒÁß0í"ûøªÂ_F••§ÛÁxU1'(ÉúÓWŠ\$n'öLÅß1Kç%‹Ç}ÚÚó@øƒˆ|W¼1Áç6[—‰˜™tAÅ"*¼¡&16ÁÝdºŠXÎmÍ€™š×~5@17hGß‡œ¿ÓðƒÆ?Z’¶\917¾±üËAÂÂ^¨$”06„¥<1bÌþ»$˜/êÔ¹RþÉ}î9R1ißdšJbàv¢«’µþœ¬"Ø1zkÕM³C¬Ï7fšœX\Ë@1nàHÓ/ÀÛkU#PPØ	Ÿ1Œs¢—-›'¶ÀÌJ'š4¢¿1ÓERóýü¼¢ÁŽ¢u?Øï91÷5!¸ËÍ;¦.ËÁ¥÷Âë^2á=Ò®+‘å±õ|Bäv¶r¹2B}¶>B‰ŸÿªÓ2å¥{‚Q>2Nw‚›‡Eb¡þ¥Û¼·V³´õ÷2OÎ=jÚÍÐªÓ~;b«Yö2PTÛª+·´3­YÄ«CÃê2[Wy&Ã‘œ+ŸS?ú¬Û$™Ã2b[B€MBT*–jk5*åÍ2c§6Á)ñ1vþGaàg€2ð~†Âs£ÃþéC¼qè¸2±CÜÂW¹ßÇB² R_ë2íôR3î°Ï+†€¯Æï£å‡Êq3¿<!tíªßæË5÷—DÎ©+3(“¬ú_Q®ÊC¹ä– Ê«3ŠÅUÍ©Ý:u<‚#Æ¬eç3•dyò¹y¹€à`uœ—>1fÀg3—w.c:Ä³ƒ‹Jï¤‡©‰‹D3Ã.ØtÎNióhÜ¸ÿº+¹Tg3Æ¸q¥óLÖâXG^äú•'>žŒ3å–|^8ø6oùºé­'XYÎ3æöJ;&aT;A{!¶óf{4WN€œnŒ%²PŒAj¬¹k†)4hÖºˆV¸g0QÂuB}Ò4qÍ~fÀ»ÏH\n<lŸH£Ž"Ý4º‡ƒ½(ç¨­j †¦±ð'›4çÌÙ·.õ¦/éì6ß¿½×%$¢á4è­^ X<¦Ì`,l‡wð.4í1ÉAˆtæÍ¤¬ŽD-“0 4î²`¸Š^GñÑ~jÔ˜!AðÙ¯5( nVøö‘»Ò~± ÛŠMN³5-?tî¡Û]ÂGoow8F„k=ÿÛ5E²BçÆÌ¯M)Ã£!$5SÖË«f r¡Ò)¶a¡Ò5bë9Ck“…žm^ýàcØú5|Š=øìCô¤ÿ€'9•5§sÛ—¨cÉïé|Qt}ÈÓô5»•qIbŠçè¬RýŸþ5Üo/{tæ•j¶i\À>›–5ÝÍãö\É8jðÍè?Í’[ãù5ãOe$„ªÉ3
òì!çM[ûøQÍ5ó"ÐV •×îMr0b¢5ó+±Á\Fž‹ ÙFîB×ÖSÏ5ÿÌä˜ZþëJÐ¬râÍøê6¥•xÂN»Ÿ_éw%AÅk‡¥6$ÜçqÏ×‹¥šõaÜhüê6,ód¨éj%Qè>ŸÅtkô®ØY6/@k5óV*Š©¦Ý^ 65.GÄ-–ØÙD.çÅò2/¹6R½(•Ñxž¬¾ðò4ªf>Dô6†u‚]5û–gÃÔ¡Nˆ[M6‰Ñ•pÄxÊqËñSëîü“²6„JcÝ{Õ\¡÷t¦Ä½Y(z6˜ö`{<Ñ³ðÿ†v³¾¥TÄp6És91{+ÝÑîƒ«iàˆ"ª6ãÁR0œíÕd!åº Nš5ÞÌ6ï»¿ùðåØTðEN90®#ÄfF6ú/—˜Ò§;Ä|¹óËp5^¦ñ¹7w®bà‚{%øeébªn—ü7zqž|¬-08‚åéåöB7~[à'‡«ß¼Œk6íe´ªh8u7—ð¥¼¦À‡4(‰×Ö´ãA?7£)5ÂKc9²©Ykænàòµéi7®{r×?kÇ.Ò	É¡»à)@Ê7º{!mHC?+PÎ¹²Véº947÷]F&!D¨5Õp…³zïžó8ZG‘AY„ ö°e˜ZA99G810¤®ƒ,Õ¿¥ÖY®ó?L]É8±h´Nœ¹ßLŸ‘ßÜ0‹e8„ç5ë)ÎþÚGw¾nÛKºr”8HÂ9£9Ùªå¡mB^idwzøí84—(,óÁC F¸Í¼¡ø'08I†R©C‰&:\;åo×ˆ0$8kºz¶B„Ñó¤Wdj|à¿)‘W-8xÿs’$Á(“îJ¥5«£Ò~u8Œ¾†¾ôÒZˆ¯7£EKDœæ8 ™éÆ2Á­H{ùg].‹‚X8´ñE.´ËÁ{WÓå¸O %pˆr8çiP÷ª”ñ$&~ñ–«8õ¥Jsœ¸¥edð¸¹œHc7#8úÐQê¡žc÷”×¬®ÈM|9¥CÐMCd„u»oHu
M«9±wPÎ#ûìñ»«ÏÓ‘ÀˆÚ9Ü¾Ç7<[pW¿ðVìsæ¡9;$Š¯ðï›|mZCs®«)9U|	L}÷ä‹1ØŠöA=9fw‰B¾ÛéÐ7²‘—6™ú9yàz¸F Ý
²O–e^E{9ˆÇfY (x.Ç–¶`>Víƒä9Õ}?4)Sù%zG÷µ‡‰ÐËŸ9¦ãçò/ÕÔçÕÕ6Ásü¿9¨»\;¶úHF­ÒÌÒw37&ú“\9Ù\D¹&. DO, -”ú)9ë^uVz-ØñÞ¨“™£™¢[dÈ:”#Ã¾ö¥ß0áƒŽù:†D9Pó@¹-§¶úÅý1:€¤Z¥RŠ-Ûs*½üåhŸÅ¾:&·“b4¿rp÷R¬†¾ »EPû€:-¤Æ¶\sß«©.®zH-”:4ñœtÎ‡["²9
r}ˆ‰í:U½¡ùIìU¾æ‡¬JwšßÙ:`rôp5óµ­ÛÞªÔjÝ[­ì:|²7þnðLUf4XÚy`:…¦®~"gâÒÞ©©=-Jaw:²ûiÉµáj7ëKôÖ46!ê½:µ*Å£gÅ)ÏQµ5×"öÃÀ:èÉst)™¢!)V\øDííÃ{:ík¯}¬@áÌÊ¢n¶ÏKo */B:þT£{˜TdþŠÓ©F¶€Fõ;Âžâ‹’ŠÇ¡Â¦(ÀJ&A3;"èá°Jƒxó6¸¢º)Á•8(;I8õ„WËÂpß=Ã0>šàN;k>9>AöÂÀÓék2™°²ƒÿ•;n“?[»MéÓeÓÇu[fk;{8mÇ‹¹Íbèv/Á“Ý4[;ƒýå—ïÓÞu ño|‚¼ù€‘y;‹9ÉsRG2ßt _d<ü´Ö£;‘LÜ' Û¤Öü3„zNêºäƒ;›ŸÕÝ—³²£"eNTá{¤Xš;½ç‹žÊÃCkçüºK´Q:žø;Ç¥ ]Øö½ÉƒOÓÙXÁ>µ;áÊ-:, &åSJ¥ÂÃš>õ­;æ{-Øa<žµŒC.è]üq­)«;þÝ;à\
D:É;6[ãXÞUÊó<ÍNiÐhß,Ûž|«Á5£<ßåHVñ
Üc¿ÌØJ„<+	OÍ¤þ0ãS\_nN°0<-W’Î.óx_¾ê‡JpÙP®_ë<IZ©7°ˆëð ûOÔ®Ý~	5*<Iö­¯	Ÿú;š]ŸhŠ,«v<JúQwc+¿šc¤­ˆ–‡à	š<WwtÿE*CD,—y­˜÷"ù?<r€Ë¶Q2;îFX_Ž~å{í\<z›ç}-¼w("k?œWä›Ê­<†³Û™K¤ƒ¼$qBáaè|¾R<– I^)â|ª’]ó’ÔÇ	lAÐ\<³î”¼ýÈ#¨‡³ú³¥–>9Ûy<¹ŸW”Ra©X8Òíƒú±ÅvT<¼ò:sÅä5îSÐ{‰–$¿<¼Ñe´p¡¸n2>+%lÞ©µÝ=Ö3œãÖsB”š Þ,R§[q=!JÊ¿öÊ‡l}¶.$)do=3ÝòXãIFsâËÜÕ	€=6÷ó¯VCPz«ÅöÓ¯CfY%=:Ý!ù•'æj¦z£NdƒÃ=RÇjt¥þ‰MŸ¿Íüœq9Xõq=_{ËWáØ@ºÔ«Unpe=_×ä1t¹¦9‰‚É$~×YØƒ=p
B‰Œ4LZã5ÌÚ^ok]Ã=rè›ÙAÀ®yO¼™Gv„’°o=–æV:q£i.š¶iª³Va=žÙçäq]Y¤] ô„å Ôx=Ÿ½‚i×,XÏkE§÷¸4–=¢KòÏÝ§3øD´$<cæAX=Ëo«±ƒÙ£MÆ#4¹æ}tGÓÃ=ïùGº®òp+}9?¤…—
 ò>	÷XQüVBæê¦|Ç©A÷>´> ì­·hQœ¦´Ø¾†â¤Œk>
mÆYPèfì*ÅPo€ˆÐí>ŒGì+ÛÝd-Á`ãôÈdø>Æºõoîõ!ETb~Ø 07Ï3>*õýüðY¹›‘l+@éüe@p>4(x6UPÂ|éWó™>58wš[¦©\YÑjóËÑM><Ãy7’ó -n‡$ßùÂ!>FHã/§Œ–  Äv-Ld)r>FÛZ}ñŒ‘„c§T›Û9£rÌ<>´_É­Ÿ»¦­f¾’É©ÞL.>¿_ø§…ßøÍz\GO;µQ4þ>Å®xÌOý„¥’TñÙ,º.L|=>Ûý¾í÷%žÙ{ô
g˜’ $>òUã_‘Üèø0áï<Ì¤>ôøñV‚mbo~"ÎK2‡¬w>ú·ô½Per@Ýà´âK-cÞp?'vGÉƒò¾±§³Î&„Òµ»½ý?Itý–=äGšð.ªù“ër^?M¢ŒéÀÕoÍGßr²ŸŸÉ•DÒ?ZTn1è[ õftÿ|cˆŸâ?^]7¸¥™H
ØO:6þ'7t?q×˜eJÚ_«I	¸¯û™$“?•‚×ùvæäßomÚ9/³
5_?¦µ8kéî›gÊŒ¨DB	Õ?«Žæ{…Ù€†ò|ÊìB
ºkÈ˜Á?±–“sÌd´g$ýˆO£‡âÍô?Ûñ%¢DŠR¦M@ÝF’<â#‡©?ë±ª1ÿD—"C­ò;yLÍú@|PÅ(ÕT²PíèQñ„Õ\ú[@!¬?[šÅþXe—†'Ç…bÑØ@*‡¶åÓã©Äpì~íá={d@:ÞIFÅ<¢;¯‡Ï(gXO@WCÃ1B’…fDNc''ii@ihv­LËæ…Ì¬"8Uûœp@s?¾½L¶Œÿe7r9MÛO.ˆ@z¼1ÃÍÞâ¿ÒÆL$¨Àë@‡—dÐ±FpŸpë­×=:1žƒ@Áþ,ý6éÇ9¥oç|d'VÝ@×Ì PÐÀÝ¬vˆ*ìò^·–@çT |¹Aìd6•$«Ç-æ¼Ô«@ü™EN9Ûå.¢‘}ô[Y¹AS˜'ÓÅ) OýNeÜÑ»UÞ^A[ZžÅ`		²ãú¿ÜÁÈë wA^B»Z‹9%wšÚ@KºÙÕAb˜Fp’¥p¿¸ÈÝ÷½O¹Aj‚Š])‘•T÷ÏÃDOÁ
Ý|AnqG)^±.³ú½¸l§:YAƒ3×#¥	•Š¶þe +Õíá`îAãél¡8íßä´ÞµpD½CBÜ®g‡t™ahÄÚtÙJýBq‹Výóíëkßñ~`c–B!Ë…Âû¨·u|×xÝ¸„½1JB+i=Ô·Ð buDÎ tíW§ËbBL4‰ã“ÍNsëœyÍÁ¼P¢Bqw8ÿ]/¢¢ð¡
jp2‘q\B„ÔÌ)ž†ø˜…kÝ8üIyåe†BEÎkâVTÉ;4÷8û¬x¢,B¬ýzÄž¡G(ïj\Òx´ˆ$ŠIBÄÉ¢™}ÂŒ{wËA]¡9ÞV+Ÿ×B×Q–bèkggûÎ˜ø;HåÂ—Bãòj€l“Âˆ›CÊÎeÀB÷æ)i$çòâ”°s¼}å—á4wC$É¸Uö uƒí 3Nù¶î9C*Is+÷ê„ú•*¡Ïèà„Íq¨ÁCFÌâ¢,'ÕÆt¯‡µDÍŽzWC¯›>Ù ·<ÙO,£¬¿å±CÁ¬e+t.H?.€3¥õþA´)Cß#êtJ¯8ù>kÿÛ7˜u“Cò4Öºl¯;˜)Ÿµœ=Ê 7DNl<oÁÔ1cÕLPïˆîDÈÖ	W0ŠÞ“µa½¯©\ö[ejD)örçJ9Cd¸‹häEÄL«\ÑÙD=5MÑŸ~=â?Þ³pµ‘DL‚Nï=§¤Ñí2>éþµ÷ÖûgDd–‹ÊëÏB70• äaSô;Dj§í¥ßÃ†ó{3A©U¶oDl¤DuZæ†š²©ÜjÉvûCôò×F3lDvì„z²;µôm–›
Xæê’FqD™¢dþ¢ ÿÌ•×b&é+‚©D ~s€=lÆN0.Ç_ÿØþuMçüD·!›¨Šy[TYä@·v9BÐD¾Md 8ÿŒZž·0>Ò÷å	~1DÇªŸ¥¶FAð?\‘ÝæuxjñDÐÊåë®\Ö—¼æÒ±WÇÇvDànN}h–1øFtÊõœò2,UDø/«|fO&¯,Äé8]9‡DøÆ”Dé7£„ˆU/!Ü~_‰tl¿EŠ Ós€"x¹±Õ`Ÿ#SïëE’À-½ÿÉÌsë5F=¡½ajE"?ÓÅ¡=© œOD×Y<´,«”ûE'á@q ¸),9»ˆýè¸U7E=ðØ`´£²ôV=»‚¦¨.ŽEXâ˜‹¦6!´cÇÀÀ{„‚ÎúÓ“EZH¡8NéÅ»Êvgò,ch=6Ee¡s ¥ðÛ4Øü|•t‘ý˜	Ej$èÚ§àÌÍßï}êÿç² 5‡Es­¾2ø¨;•ðChÉ0R ´EtB‰².ÿxU?Ê`Å±lÄš†yEwd¾äµ@¯œô½Gi}Š&áÚEx` Õ'>'r%;dÜ™ª^j4EU‡/·Ø×iß¤.¸Œ7—d½¹E±Opýï2þø }îÛÐ²RÎÒ,EÍˆÑfË!*Îp‹ž2{˜o1}ÑEäŸ‡[z /\(„™õÙG9—×Eç*¢šíÔWÖ”åüQiðg3:¨øEìlo |=9Lÿê^QÖ‡ÇF
L½ùª¦)2§ì/€§U±‚ùFGØ3'æcê‰6öÜVŠj€¤FZMZ²	» êK;¨C‡Gw>Ý+FÂá˜D9)5åz˜C–(ÕVò·FÝ¤5‰z”T@ç9¿>™rQÃ:FÝÈs©˜Ã¥ÙÁl„}¢ÐKº”Fàºê·íoœcŸ¨-+¹DÅaFë-­â¿É+õ=y1µ­r,=Fó¶xýœÉf˜ï!Óü¼^¹ZGFöí¾àG¥ß«TªP?E‚Þ_G Ï_»cl¹ ·¬áßä{üÁ=+Gh€²L×ê9žšÆyƒÁÉGlÁÏ”5ÃÓ…×¯gy‹ã†ZÄG/ø2mc
s_
AÒ[‘ZgóGì¦R¿†¾z§"VZ÷1gŠ‰¡G)±?6Ôq<á-ÁÔB]DáG@xG8K^(¡<Ð`ÝÛòMÏ
ŒýGPbÛ_Z£ObÜ?ÂÃ!q†¸GTeX×©ù˜ÎdŸKÌhúÙGm™Â½œAM ËVÓU¸;ÓóæGu[zâ¿5ÃvöWD¾¡ÿ¨AGœ`Ë!/])x\<;ô˜¡L0ÇGçk&çS¿†­šjù€q&\S&G£¹­¼ÂuL^¿³ø'"ÔÕÂÄG¥v¥r	•$gæmSïétoá¶G·ÚŠu¶ä:›Gl%èÅYGÈÁY£¤ØUœ~8ñìØâe˜"”H¸7îÂQuÊA;V=Jÿ"&ãõHÁR1Ê	\ƒ²“vX'PÉ»Hj³X)Ž˜.O¬\6dß-\H\þ”w{èD2\‡æV´HebDx5‘êAu—pr0psHŽEÊWy|Y~¿â=û–?UøFH°I)è}\;XCŒ¨×Ä'jÝEH±3Ýñ¼aHùSŠg’¯'¢­HÁ¿¯ wqpâ	Û ÷Ð~G÷©ƒHó’R™m7
ZÇ”9Z9ÖãàIù{}óÁ’Ï9|­è._©mõ^•I1ÔÁÙ‚’ÊëðL	ý,;q‘I/qf68¼¥éí¶óêSI7Ïu} 
l‰ßº¿'ûŠT~I7õœ3rwÌ^­JÔjŒ<I=dÓc.Üd*·E“Å‡×)±vh¸IiæÏiâ²q”ßYO&»|‰½IêQëXÑÓq>Üà$»~§€J 43Ð7,6î›”FØ§Ç–’Åô„JIÙŸ1sÆ5ÃÞK[ê3Jvs†º¯9#ÆOh7Vöë”ÜJ2&¾DHà4iDˆWÖ)€þq7JI’”ðÕüuå™Àc²dµ½øgJVüž™ÏÃæEqoÚ¶ÏÇšÆ°2Jd†"²>£'bIà–1‚ÐsÔ\ Jq©á£Pœá˜Þ[xˆÈÁ½0J¿¨“ß8Œ?“#;>ZXz]°:JÄlØrÿ¡Æö‹Ð=î¼36eJÄ÷#J:P0ù‚pXÊ	eŒ: JÝ¤Ä]è§úì¢îXi¶ÄÎ¡4Jèt«è#P%w	êü¾Ks!ª¶t^Þ1iêt’Ø@«mbK¾&ÏdÆýõ7 bš÷J

c­K¿ƒX/W<ÿÏ…”uM¾ÌlK(Ð;ý2WÜ[2JŒ¶m"^—K21¥4aQWó;».’Nÿ1OK;”=ºï÷3ê«,7Ó'©‡FàKIœ –ÅBnäT4æ¨)>‡)KL‡9; $)IÀÇfÀuòŽ3}÷RK[M%ˆ˜Åë$ºSÿŽˆ(ò¨K[N ªaîuþ¸Ó©0¸ØÀØK`wy¯qÒ;ÅÿÌ§áýèP~×KaÙ±¹$ Õ0šEÆþd¥ÏK‡g™4{#!"àAzúU‘zÜKœ·Kˆò‚«éŽ°í†æÃ©íùZ 7K«Éè³r=`ï!ShÛ}Nn…ð‹K­†j4›zåÑiGO|îtEKÑ2¢X³k·6¥#YÒç,Ê?KØÂ5äG@Ö*Ý	Á¹”AML&KÞà^6×ÍáÉ- 6Ôè×˜-Kío®™z»åÞ|tôè£Á(|\Kö"úFðÅFñoèŸÙÙ}«8Š•L5+ÜÃÂÝÅ­Èž€Œ+ò>õtL:ŒŽ³Â‘´Ñ­#´o… Ú¦L:£öCŒŽR‘ºÈjB"¹c™M¹ÌLM
úy÷•Ï³{Aº2äIÜ?q<’L{¡ö'6àëP¸x¯wÉžL—²G·9Ãº«{Ý…úvL¥r¬%¸Æ—Ô¢’9cé•ì’KŒ(L©5(¤OÒ€>D¶æËw ûQlRL»º,A‰‰.ôsqüj®ÄL¾Xˆô¼åQ#í)“Íæj_ñ*«¼Lì%øEfÓPkÿ"ò5˜m–®Lïfª¯û\”ÝÇîXþÒÁ6Ö¿ØMÕÀÊnUò4‚Ù2„l¶¡`6TMYk`ÄÆÙ)ð±>Œ:£Í¹%¨M;+[j´¾&7ïø I¶¥f•'MA}“êãÜ²Éº“†@Þ~0MF,òÁ´€‚^	®û9Œš°M_ÃGºß›O©Ð1Á.h34µýMu-t|P£ß¼[åPÂìýUM ‘½—Æ—ÑÜf‰}å~]*OMÈ"<†Øò¹OËxRã³ä›IMÓ‰¥Â>ìIa^pïp©ß£ 1MÚËè¤[®…"³5Ñx¯{{MÜØÚ(|&çºøf¸·Æ}È¯ãß=NŸ64ÀDÜWXi: A‹¶N
ºk¨a©ˆgõ¼?õç=1N)?Å¸2`‘qG¾ÊKìÆ@N7ßAä½V½˜õ¶“¬«9Neã³@.t[F?±Ö±í¨¤ÖGïNi÷sL)”ò	Q.jrŠBÎ.ÔN|–ÛÐÞZ!ßê6Jp|Q+/N‰ëì¹,$Ff{{­2Ë·¹uÜN9>ã¾_wfIÏNÅq|µ—ÄGZ1ÔåêÝ3ëðk†NÇO
™…×h«àT¢”pONÇ[¾Êxaq2:jý:pž°OF’¶Næp«ÄQ^Ìxî)ØŸÚ4G¯Nõ 2Õ5Å°à¤_º°Öô ¢O#‹«+]ŠOd±‰”î…ÉP4êOG5Wø\ã­]µO4#®øsLOGOœÅ8Õ»ÛoJpñ7;yCOnöbÑñEœqƒÜ?{ÔA-Q6@O{h9œ‚Òí£ü_W>Í€ûKò™OŒRlu1Ó2FášXfÕ‘ƒTO±Üæ€6bïfCñI³`S‰O½L6È¸4]¹¹:ë{©Ý–û3OÒåU…×o¸z‹Ž…ðÞã²]=çOéV?ˆQÎä˜mo;üÿÅ™éŸÔPû?ôÉ±txëqv¬@!Â˜På`ºSp ýI÷¹·ß>Šª™é÷P"è »Ûœ&šñC[H.Ö×P)†ë=ŠŽ(¡7V^†ê‚þÁ—PntèE'Yƒ…´êä>+|oÝP}íQ wÁ•
=‡EQ8µ«0ó-P‰úT]Ïìðê5,1	~QFŠ9ˆPÃ-s'->ä™nÌM!\Ò ±ýîPõÿùÂe²iŸ&P†ÏNp»ÇŒQ+Ñ)N 	¿…ÞÍ\zmQ6úòÕìØ=6‡*e”¼ôØ2QK%É•
Îk›“œ1‹’Á^¨¶ØQMnJÐÜ®¥äÿ­C^"`Õ§QNÀ-‹$·Üh¶DÚsœòQaèø¬À)×Â%‚ü“y>–ŽN`Q¥BH¾„úqiºQsYM™'îvíQ²¬vÙÀÃM$¦Í/a·¤QíëB&‰š„q	…±
’úùæwR	H…ÂžNnF–Ùõãç¤Ç¬RÏuåôxüý«	lÀÖü]_™R!ÛTvŸÃ™.6˜/pºÒ1ŸRGà"PÔ”ËÔ8ÉîËÛ>iæ»rRZ·!¹}@Ï2cÔÒÀ]×)LœŒR[M&ˆ…Ã‹ì@#X…íï¶ÞQR\%:mq²ß[5ÿÁ”ò=ÑRƒÌÅúŒÂÂ^åËrí‹É5ô<ñR…ÏNQŒe)ôŽœJd°Ð7zå«R’âKÏt~Û|˜ŠÄÙ+ï®_ðR’ÊÔå0ó›Eå±®è¯Ï
*kR§› £$9c5šö=Õ¶ 8ô@RÜ5:‡OõðˆT¹dØÊ­ž]fRÞã´£-7Ÿ[ÅŒ,Ë’i@"4RñœER$ÜŒÌ5¤²Q¨˜(¢IS(¤ÜhRŒ‰ÑÄÚ6£…XÚSSð¾À)fÛÏŒJ”"DSmn—’“^Iœ§—oÓ^~S©»SW€X¡‰Uß-ê¼ûª ægA¡SaX•EÛNãüº£ú=˜’MõCSj#€Í”LÝ*T8†ŸÉ¬Ø9ÌS™©Wè«5ú²jÃ½Á ôS›QY”œ ŒìÔäãÐª‰>dPSœÂš|²R6Rêßà¯±¯ýôSªuœ³ÙE©¬JŒX92?Sª¶š
ÝvP}2bFi§„“pGS«J,Sà['Z.Œ þv¿Ö|SÈ§c’»ð¶oZ€a|çŽ?ƒLSÖ½ÛëzN½TJ l²ª´ÆSß”Â­‹Õãñ…^âøÐuÎSøVô"]IkBØBaXoª>I[Sú¼7øl5IçëÛaô-èu¼Sÿˆ~l•rkþ(;ÊX.qHP”T=_ó±±ë¼Ã(þ;3ödÕý,TS0¾¥„.`Dx•.þê¨Ò T`µ„¦ÍS!i&0spš½Thƒå¿—^ëHfå©ÀËS…O­TKu,I±D0K3Ö=“%à,¥
TœÝeü(O›x¨Cïk¢?c‡ÚT¥D‰ÇEXºóËLGÑ"k½T¸ÓÒlÂcÍA#Xˆ¹TÍÂômÐ²h®Cöé»övÈòeTTõä¨QÐ†ä˜ý„Š!vbtyUNDˆ¨â‹—“ëM…MS0ÿ“…UM·Ý
zB„*Ñ$¶HF3Y–UV‹KA-²I($/¶xÌM±÷U^udÝ<	p³^@­?_Ž¯—Ut¾Þ[R+Ò•–¶†¬°Ñ<U‹Pïaö}­úg«çrç	ín½¯Uœºda™{ß¡ÌŽ®”Ð“íU¤DˆlƒËf7™ì‹Ö†áU­üæh#¬ÒÐ«ÉXYCC,ˆU´ìÿä<Z½xúXý!A´š¡ÛV¬	Rãbb."ç„}þ’ÂºþV=:Ÿ²D-/R.ÅA4ïøúÎV?²szGÙ•Ü‘õièÓ™VP{ª‘ƒ!=Õ»`D z»í6QVTF~ÎÆUvþœ¾oìKpYH“V\-¨sáC³C½ô.§š©cnúVe©§Àa¾½ÃÑ+?ØÐûðÞVqCÃ°’9ÝíkÄ:$'±ºV¯ŸóÈ“Ø{¬¼aQae±™k#V¸åËYv“‚)¨qA¾ÒØ5µQCïVÀÍ?^—ïvœeK"19VÙVêU/ë_ï*ÁQ„Jƒú`ãVãÝ ÄôÖšë—•i»ƒµ{‘Vëº#ù‘uOØPÐ°‹lóÏØbWl	¼
!Ÿ¢T6ß[±MŒÙW
ú9}B†ˆ\n|ŒiÂ `bW'¬žŸð1Å¨ÕV?_\Î)ºûY]W1UxÙå Úå=½¦Ü­É3ÅEWTQNë¦x³n"Ž	ß˜)¦u‹NWY·íãP¯oÒGSajÌÌÖW`,j<µ
 ÖC`üp¥vniWl€OÓFX’  Û•âþÏ³*´W…³|ï=£¨x6ŠÅ`cb)“Ã1éWþÅèh7+]jÙØð¼D`áJW˜/¶ÿÁ¯ÁÈ DåÊì±&ÂWÙ#²¤£YÚ(Q¨­Q®äWÙ7çêÏNGi!ÎþÅËo…oÿWÝ©;_…Ž<ÛR:Fê$`ŒWè$‡ð½š‚Y½sÅ¨(*Ÿ?óXTÖ—2Å-'"0˜Âp6jYX÷C¹¦¶¹	Ç¨4NÜ~ÒrX"]ÒËœŒeé«Ä¨Çæy5­&ƒX$ž’Œ\a˜eÄ_Ñ‹¨O[Þ¹X=ÿæœÒ»w˜âºÔÆÚºt‚øÏXiðÀ:Ÿÿë—ÓjßaôœXÂ<ëÑgV²"*UÑÙÜ_4»O¤XÃ˜aÿsßéJu’2¬¦bâäXÃ›¾%àìIÀ¥"Z²x¾Ð‰XêXëlcs÷-‘yySÑ›Î«%lnYè ™”då|;¤€˜˜¬¾2ÊY&;¼ÓäõêÿçÒ ÄÊÒ£a ŽHY.lš;§æ7ñC pu8pò†Y>PLb¥HŒX›wL´€èõhYC\ñî”÷¹·÷[BšPÃYHþ	ç@gù4g¥BƒŠ?r“4iYX]Ê¯"M¶Q)ñ®sJ†ÍCgYZ{–¤x¹~Mƒ˜×ÀØ|¦ªYx¼Ï7IèOœ/ÕÑó^úëY—³Ñ9¬^€\Rp`@š¤yVÊæYÁìÃ”–o#ì!!;Áÿ]¬SYÃ«­N&Hºç+•1lýw=oWíYÈY¨apïmõáÆ|ß­u¥êäYÓ;ôÞ $ïµ_?]ÒEYXYçG|ZìKË› Ò0;N¯±Yì9Î>9‘k}º ÄT[žsYí?E¯u·ºâzk‚mø¤Á±Yð‰5óo3Ij²X¨eÉÍF*šZ˜9]0—µy2«'/œ“cFZ4uL¼í±íþÏœJ*ý%BSgZ6ºº2.yy^ÙßîÞ
–âžü7ZE\¦©‚»=¬—’WXf3Œ‡¯ßAZHïÙˆ‚%öâéÝÚbó¡|ÌYZUpÑØùØªˆvž=¸¥II;ÂoZZFã ‰Ä®V[èßŸ‘†MàyZx”mžÿÀ0œwo [:…Z{0ŽŽ/ÌÓèbÇ7£=öp´Z|Ï®Kn$, xhÈu.Ú`Zp‡O8%‰¹#öYç›w*IZŸ!R4­gãô÷vEÑÐ"/Fø=QZ°à'•€hÑóP‹K^yZ@‹QZ´Rã“ìó‰t`V´“øÎ[‹BZ¶Çq8Â«÷=ñv>Çþ«ðÂZ¿ð¨¬–£ÒdƒZbä&”ÄZË&niD-J¤þ®Õ}`<dZÎ›>ˆÎtýß{¹êaÊxlŸðLZÏÇ!YùM1ý¾yXM{:…ÖZÓê²nÆŒ$a)èCó^öZÞ©2nŒ“ŒÊÍ»¯-0}ô¡£Zã`SœéÉ7wÃzýðbƒÊZè®-4é¾´xo
1“£UC?'µ[„í…`]9¾f X¤†øÝ–é±3[¢sznÉzé„H1¦Øð[[2¦›F	ÿ?µ×cxÜ7[Dá,qsÿ‰»Æo×(ÈÙWš°[P—5Z¼¿›E	Aú+o`£„[uŠhrvJQã#câ‘nY.[‹[mŽP­ÄŸþ³·­­¿[Ÿó#D²Cnt_Jh¥Oß¸•4[«“è“‰Ìo¸rî©‹¤¶Ónõ	[·0šë)Éº-h
~QçÕä@s[ÆöAKuÖE>ÔÑ¯nà-û[Æ÷µ8iOáÖ69ðîË(…"É[Õ3ßG‚¨Ÿzv}VŸs^P‹W\°˜iK×R)n«dÞÊÃµ)Ý\‰úëQ*4L_ûÉ=¦€];\+ù—#­Aô«$yqŠÛÓvdy?\:ÜÚ¦F1W›ÏL	¥ÓE\Oì!‘‡×®ÄC§½;EG(½ÈÉã\P-¦@!å8ÅÁòîžqôeÙá¦\Q¦›¥Ëi0W?,¡qo¬,ìêÍ\iN±4#6ÀªJ_øþÇAÂs\qltXš¬€6w;¿PLM²Ÿ\„¡\Äòx¾èÁ@Œã"PÀÓ\Šb0”y3ô¦é¤Þ-§^[bð\’^7×Z½§˜\u"ì¼ýš©\ªdýÜòë—1¬YiÏ×HÛ\°R‚PN¾ìuÿtµsEw5Qõì\ÌÎaÒ€¡ˆK{iF¸xa\÷Ýýì\ÓâwMø…¤¼¦èñsgÜÄ\ÞPžæVˆI‡&GõÅz9I&\í¤æmùOSaS¥$@¦úèö*\øl,½§ÅÌ¨Pÿ7"Èíæ"]€¿ùSÞirIáà+$ni]sç¡’Úç{sÇR*o]±Ÿ6¨TPE6œöÂ¨­[N<‚Ì]$÷V§xˆ)ÊÉ;”£‰5]-vH©2q÷Ç¶ÂQªK·´:]X	}ºqˆÊ+ê–V œ
Ž+F][U÷JG-Í@²7=ë´ëåsÈ]qˆ#ÍoNž¾A!wË*ƒJ<à]~ÂTM>‰d$×öWÃ#Gf„]…èþª–¨âƒ¦*¡S¼CÞÚX,g]ÃÓŸm¦|¦ªùK¿2W¸º¤]ÄNl!¡GÜ(W`DtåØ-]Ô—¶À¬‡¿‡±àðCqø™q]ó' Æƒ@ÆeÛ¡	É¢c'É^%iÄUÙƒ¬¡Ii>NOÿAX^7-bÉÝ_Òùï&#©ðÙ^nAë„zÈTrÖC¯8¶ór^qù;ÿ‡8¬&FC¤ùvHå#šþ^’9í¸×S5*Ž˜ô+{è|^´OL‡'Aá
Í†B^ü*"Š^µjÎáÖé<hö#c‚xN’¬õ^ÝY‘øTË3íúL	Z{>–ÞYå^ùz0¾GJs×Œ®€5»•÷[á_
~©Np×–/¸M!çhü·AÕ_¯FWõá’×›DY3^4×ƒØ_È7+øh²«ë„ ÿb°ÊŸ¿_!²_Ú”(‡¶ª·ÆÙá1lG_$pÙäpHõ“E‰*Æ¢áNÄ_lÍR ¶b5ø/vÚä*¾sÏ›£_n5~ÀÂ„óûd¸àÑ~’¿‘äE`)èÆ¢E8aU>„:ýÙ0>¦î¥`INœD´çÙÿÚ ©Hn¨cïÜ`pMdìÜ\&e–ÿ7Oç­D	`‡B[I¤ói|¼»hŽƒ"%³Í`¯Æ4Å 4jõ/Ë}”ïÌÖ
&`´•,ì‘Le3š¿ ùÇº6³=ƒ`Ï—³ã^†3øh˜aŸÂµ"pL½`ïYîÁ9@ÇÑ–vS>ûÓVbax/‡“Dtò¤Ö3ˆ¿<`aÍØÛˆC¾iÉsÈ:–ñ,ÍZa/Î —M±œæ{Z¼­ê µh'·a6Ðo‚[àB²W‘Ç½ß|†paR• #Ô×‹'Ã3L;E“•najý6Y T¢™@9Ð‡Þöao‹m×‹ïy0—JE| +DÛ<a€ª2º}ú„5Ò …i‡saªKk‡¤ÌVÌæÕ›º¿aÐy9Í ·«àw¿Ày>‘ZiöÛaåÀ¶`à›Á©ŒÑô-ð0±lÖaø™²}jr°¤)óTüú{#®ðòaùê<4dŠpùü×mãà9ŽaüØ¶7ÌŠt+êüž;×Vý}-Çb*ßŸ‚sÎ5dŽ¾¬yH°L÷ˆb3•úü‡•ZfHŽg»?jÆÛ]*Wb7¿ åÛF’q*ÌÛ•“ëŸábB»S ¨ëÃo'+¤^9+»¹ŠåbPëºv3qaÍÍ„3Ñ¸Ç,ùÚbR–ˆÄ¼–¤üÉkà=hPÒôbu^ŒèÌÿ9ÎxAüz,èbvÉQ.4š¬k,VðÊÊè&HbwË‘ƒbl¶_»š¥WOì0¡{çbŽLÞßw&5Ö¶Md:f'å­†b›[Á(·âFÑûÎaˆêŠ¯¬|b¨¹Ñch‰MÒžè*}µó£R»b®;êBË:ÌwI%htz3x1 b°ùOþH§È6,3Ý$ÈZu#Eb»¶|¯u~OAëÒN»xPÎlŽb×•TF@ “>3/¿d bûYL\Ï´HeÑróvpéÛjocQ³Ígé–Ü£U(.„Ñ„ŠËcÓ„˜E3ðUÇqfÉápùyß7c$øßCb˜¬“û¡nÂ\P„qc1±FdˆØŠVéMv£xRû¼Ômc4mi€Ð³ùh¡ñ`Ê:â[ó•œOc5y‡*†
g1nfvÈ¾<à±c9¾É)o=5à›–4¡_›@£ˆc{ÀêçÄ¬.sUùb•Ü_ûóc¬#†ÀGc#`ÞÖß‚Èô(äÄc¹•—–ÊêKÂ~a÷ý÷…:4û5cÉ Y‘eí±o’)-â¢pöËcÜ¶ŒdŽ/qÄÅc{LjÙ£ãxµcßnÔ…É9¥0q?¹	e¨‰B´dZZ’7P7—&}Šì‡ÊÇvüd Å‹QÛ¢P›uþùéÉ€àÁd-Bo¯Šgíé|5ÀÙgøÌR£d/xtº¦µn6×rý÷üà{"dD@Z¡&¦(`	©Qb!£áu>dm¾´ÈŒoçH3™´Ð@dƒ\	|é</„¨Ož„d’¾ùL9”¬ŽæÊ¹šì3yÚ}åud¢ÿX		Ðë¡âá
H†q#ÁpÞdÂ€|ÔüÈžE 
 ,õM’àd÷zŠéZ#ºMVà_õˆ^pÒ½Îe-/¼OGæÆØ©<5Ã×ù×0e,ÐKŽ¦l?ù>µ @I`Ùe-ÆTÈå©'é`så
Ç´PòeUù6óàzj‡8LwR¸²1ª\8³e‰	8A¦	 y–ÛÉ5Ÿ†Î¯n ueŽ5f… 2"†ßéCN£ŠìAe¹°KxâŠµ¬¶ÎNÇã~äÒeü:…Žã²,—³àÕp¿Jä´îzˆeþYjØëVqû+K¿àõyaºf
û-³¡† 
óÎ—ÝóLfÐõ¥ÜTq1±EðÅý6è=¦•f#¼Ç»Ó7…Úb—`ÍêNÅf'[À(ŠK	`D›$NMØPf)b:äfçGÜSIRj[¥}ˆf,ÒÍ	1hS;OŸ@58µÃf-bK¤9y.@˜WÈb¼<Î‰‹sf6DÈ­µ£›	¨ÄÁVöZÀ½åf_dÆÙŠCðiÚéx·P¬‰.ôfe*ó€Bü–$¨ûòZ2ZxŒÍ<‚fh1&¤ öMÜÏµ‡Žh*]§foøÁ]££àC†”J+g’Ît\f‰×9"~oAƒf×ø²HžqÃf’ùžmÕõéÎ¦}/<©Mùùfœ\iŠdÌEeõBFÌ ¬ØÒfu“˜±%˜ömé\dTÃ­o£f¦lh?ŸÇ~é3ÔhãUNùäf®ñ‚ÌŒÊéM®AÕv‚ Ç‰fÓ ò´{XðI3&ZðF™JÚŒfóØöéÖ‹öE$×>JÎê;fù/ï5+Øç—´‰ºSOÆX’gÕt¦ñá„›@¬Ôrãú©œ( g!ÿp'4$g`P¢_ð{ïóg4#‰*ñr3Øß²;*ÙÇJ‘µ(g6^w
ªáHˆ0óÈ½™e<á=˜gD/ë7ÊºAÁ^ô_è†ìß×'gDöÌ\¦–”ÊIP%·âen*¾gnŠlG<î¤&‰ïàÞw‰áÞg Y)W¢ˆëüÞfs4Àîg§@€½'œ¥ÃÙN¿pFgu(SŽgÈî×Ò‰Še}	WQ€—"‡(íhN€«9o8Ýt_ÂŽ-¶éƒ3[h3Æ‡L‹º¹×W‚@æü98(zh3Êˆ¯ZôYP›ÖÑBŠ·ÄQh><8Û<À(öÂžËê±ˆE=+h>“â…ãÜ™óSÄx[ëL%fh[F(û¶Ê"Ì.¾"c‚+Ãhmó¹™@U“þ‘šÉ^y`Z'—Vhy¬AüÆ,F„R¨ÃáŒ`Ä~¬bh~Eqc=u!.‘@’P‡Ë`ˆ!hÇ­¤½þ6ex'î%íW‰öhžÕ€Z7×!åàÞúvU`®fAshŸ;Ø9jìåG|¨6Ó(Ô’#h¢•æ´ç½ÀžüÙ»pÁ>³ëh»Q®iå³uT^ {‘Y¨xç“h¼†’"–ÈÓ…ý!Ð(b‹›»hÈÑÙ˜VY£H7+8=à¶¼Ò;hË	s?Þ—¼<T'wŒ‹€×‚/×hÒÔ)ÌóûÛéÈaî~hÚäC<ÇÔÒoç-Ü)‚†c\©hùxmWB†	Æq…Ï(vu6hüø‡5<;“É$£ºÿèÌUä%´(hý þ8†Ë«Šô­ËúNÛib‚ di‹PÂ˜–Jš;èZivMKº%/§Ós:Û>¢x·)i!Ý#±¨ûÊ¾gïV8ž¨…i 3þ·Ä1ko#¨3F\gq„“i-UÇØ›mÓî­ ‘EíÃ”ùi16)"®Ð.[x¸¤þ‡.V)i@çO+™;R“@ÒÚÜpƒ.õij[?0-žAô’U\PÕÛmi…Q« “t	È¨¤’sÃ³d—iœ>µþYªJé‘XqR{Æ'<i¦žO"zNÂð¬¶ß89y?+ýi±(ùŸó…*)ÈJÖðsÝi³w™\Ò—Ho@_¥H‰5\"i¶²‡?]CåÕ…7•²w‰™iÌW’ü+ °@Šãïõàã*CliÖ–ÚÙ€øvgÙÅþ?ŸüjvdiædÎû*™’ëÑ”ødKp°`iÿ¹QÆZqç8å%ïÂ`ÞœÖÝjÙs±g}Ø‚süO«YDïÐÙmjBJ-ÌëªU×w‡ðHŠ`"jy†  @êzîƒg·’•ù‹új—#°Qô€ YçÀq’vóâ3jš˜I‘0?u‘Eqv-÷D7Ôj¥"u•b;"È`¨~< j«žIáó.cïëææfÚ<ØhÌ(j²éï @SØ,´QA(gIÎþj¼O6³Š¦¾<~K‰â™~Pä7jÀt]å•EË&¡bàì®Ïå!ÎðzjÍÙ½®•îä6c”víØ "Ù™~jÔ0€¯Ú@ôYFÍ=ÖIêõjðÔ×4ëð¿”ù‘Í9¯6Úˆkº¿@Ô“½àÐîÒ{éÚJNš/k0°Q-%-¿¹3F¸ÚŽ,k;"ôq)…;’>›$`A5¥ökKgALÔ–r·ùî3^×;`ªikN³,ÍÜxâP$¢ BRš(`¼Ýk^›ë_ª»ìˆMvIKîµuëk_“âkùPþÞpÂñ‘½ˆ
P~k~­Ž*™ÉqxskŸÃt‰¤ø¢
kš€3:cGïñ€|lqÖ(aõ~kªrqPº•ž07rVÐkÃê»iuìJqï˜—¬5c”HkÃërUGBY¿“‹}pO‹Q§kØ«Cf“dg×¾¥–¨å„<¯kÝ=°fù©¥;Ê2Ó¢ÎwŒä§lP·èB8’s\Z£¸Á5ÒoÛólÀ]Ê—xs|Ì^ÙÊ•øB·Ålmá3ÙÞMôç<ŒxËÅ¬lUíù(7é(•<3Uò"|‚Qe!]l_Èc§þdÊN”!0l$êlŸy/™ª‡‚³&5ÄN:W;»6È0l¤Àoìxoq|‚7Š’ñÞ‚Jy»lÚ_V‡eö9ùæàM>ûÅ0ãOlíbÀs®’¾)ò]¢ð q>„lø²{ÁÎI‚ÎÆdN~FyZ¾lü¿Šˆ õS‡Ä€¶#aƒßÞ?m%I™³A†$¶ÿœ-C(\q<m!N³Œè°¯ÎÃ>;çâ²DøúXm'ÎlŠ‡I64z«Ù²’•ò‘ m/‚{=bƒºK«¥8#€™=m2Ý…}½ÅG_›m2ÏoéÌm<£<rDºº½Ø(
±êG¡¥mKK8–áuýôµñ6¸'ÚZæ?m^«pCÎÆ®˜·ºd•¬ ›…0mj·Wú*ÖZö¥¿…&¢h\´m}9æ]ó(.q¨Ç²œ(#‚ì
Äm‰eŠ¼šMô«õkÈ²ò“ñÌN³m‰å˜Æöþ©ü>"g{ÁÉ,m›JzWüÏóóòúÁ‘~ÍJ",.Úm©KÏ½‘Sã'ê–TŸiC1¾m°ï–©Ü¬‹ÚøáxŽ†Õc£mÈ ¢âbqÏ¼_„¥ÂöPå^n$ÀÖÊ¿òÊ/Û_Ì€]áãnÆ»–Z…Ë$ÄRÝC£GÎ §n"ÀÐ»'ùf#Eµ†Q >nGÖ$4P`Ng;vZƒ¬¨Ô)nnN®çž!ã½ç‡R³Îc‡™n yëÒž›iŸæñÌ.ÏEÇó ån¯Ï–óÖ®{åúƒ2LÄ‡Õßn±?˜«&°¾‘!B
jÊþø!à*änñÝóö"£É£³«Ëp÷áOKïol¢ð„–eê
*T „"%’èoÖa}ÿÐ‹ómR*6ÛéÌJoLÆâ§Á¢÷ã]—Ù^\PÉc³V6oh%XêŽnÐJç_Ï´èÄèžjo»®¹Ý•”öê³Ü¬öê¯€õ£’oÇèÕ??,ÜWûÕFG'=oÈw\UÄŒ@ÁÎöõý‚*@ßpºS“5ˆF£ÓÚð¬¯ô5àpG.øx ç4WÎ+š5zØdpPfÛb¦Æ"l‹Í"t¾:ö„pb€¶‚KA³ˆAF ){Ã—½©p{D¤BÃŠÛ÷…4y9Ô+Wp{g£ç5¡â|úPøÒLC>oKGp’ÿUÅÙr1¦¤Û¹£{BÖap•q×{ö’×%=¦wt,g=p˜Ž´ókŸ/Ùè÷Ú¬Ò‡&Äp™"{¨o/¦+š–÷z/>"õŸp¢¿Ô)Ö!(H¸r®ñ#ÆQ»p²œ¥33MÅQ*;™ß8ªp¹ƒZ¬åeW¬ÅíýLw¬28p¿Á"ÓŸtc±”ÊoïÕAÇzp¿àw¯@®¬æÉâ¶(²ø£Lïpí¿ç ¾æšu QO¿›Â‚L9q)‹Ðff,ûÁ62npæÄï!q0ÓæihníÂì‘¸¡ÿ}KßÝqQ¬Îûôvhé'™á÷1ÞR²—qd^–Pz¿¯OE9¥‹®¸qi®_5<SOùÄ2s‘-ø^+;qi×ŒœÌ5Ë*ÆôNi~]Íq‡Þ(–ì<ÏæE pù
¥?xFq²=¼&¥þˆÆÒœ'r©‚9q»´y”ð	Ê­@„¼T•4ÞÔq×ƒPtJ{¥S6Z\C€¢qþS÷ÍÅf:¦H¦.•*(dR)¾r…j™\‰XŽ±/6}/Kr,q»2F¤jxHa£‡J¥{‘ŸIrAú3XïØ¯:Õ½à®˜O%×1rE|u’2Bì‚/˜ääóŒZ^rmx¼;Z¹VÊã—b~„þ’àrysÃ[Î¶Yü fR2í•Ê!ÛUr{¨l
ÖëH›æ{[ô|Æ¥Ù^îærÁ±Žxöùø=Sg>Zy-<ßör„-	ó>ˆ_ ®ŸèE‚æGt[r®ýÀÚÕ‡_Š›WVA•VOorº‹ÀïþÂÄóãPB%ß9Y™rãƒBêˆXØ$X­Å§WRÀõrüù´€x¥†ˆÍtˆà™@…ásl}ÃïÜ!¤‡9Ýåß—Üv~²s)ÓYøÒF¬½ô„Vcˆû`OŠ:sR¢Çj@ak[áÑúÅ_ÑñùsRöE~ÄÇERÚ-GÃêsm»xèqu`é‹alÐ¨ÊÔEKs @ ÿÅ9›´~ñ`G/+c½fs¡?ú´\ i³èÊžgbMŽùas¤Ÿ>™3£Yõçz ¼Ç3Î{üÚùs»gË·rˆÒ”.^8Î	o?}sÎíúüR3„9§;Vd4{£t¢sÏ»MS6ˆ˜†Ò˜«ÅÇ|XÅsé…û†¢ÂèÁZ½>b~§	d¬7ÞséÏ]7 NÏ,† <Mè¡â³É}síIÙ¸tº‹¹=^ñëMt IËƒaùZ0AV,Ôx4‡Ë3t î'UYWt|ø†—2rÈg0ËtïÉ†#Ûä‰WºYt’<vRÓt5íšæ¦o£÷õÕKÇ'Ç:ígYtYY¸íNH¢_”H®ÎÝ#júëâ‘t‡˜ÂTŸ¼=uøÎdÐ7øËÉt¤'@.]!pÎ¾FhX¼ª`-úþtÃ÷Fìý¸è}/½'ÈÎ©Ùd’tÄÝÑÓw¹!×HB§%5Y»tÈ÷‘‰‡èòJ-S÷òs×•„tÕ2fI §†”ïêQ'dÕtÞwŸÀä&Z˜ž›ZÚ6"atþbµ6N#”CTþå	U^’?\uý
Žg•Eöú´@ö´¿MR$|FuDÝ2ABi¹Ñ±>RµM©Ï’œu[`§Ó¦/ÿÙ#jA|†u{u²’}û¼+ÉßGOrÓu€ÿJöÙ~ø„w+ˆ¢ß½„%u¥|ck^] ç„²uùù>¾ãCàu±TmDþRš¯IÆHªŠÛïìuÈk…r Ó²å‡²í/dï72Ù{uÍ1•HQuMÁ´LÁ)«šuÍe?*çv¥‰MjYî‹‹·oA*uûÖ–lˆæ²?|SÓ÷âíÞ7v+…kîûi³Ö§PÍ° ?ÈÀ[)vx32•ýT.%e÷¤{aê*Ov‚@@†=µõ´ÁvÎwÜÒrØq?vaYÉT5aœcŠO¾Œ@…)_Üv’˜„ð†fr£øž~ð_ÿ8hsv•ï“rÓU×Ùxû³`ð_)dv¶ÍÞuùU¹µ €ÆCŠ¹É‡ñdvº%¿¤(7üL‰œî‘YÅÃHv÷!—lT«!’ß9UÆG^w"ðŸI•+—«þé3ÍbµiZKŠùw=T*[|ZdF|ˆŒ.ÃÒ¹_wB/D;
A/ž€Ü`ó‡ÝˆwTlþHz CÔB×›!úÄ²Ä2p‚w¤FÛÊí«"àãBÂIá,RþwÒ›ÚûžAÙB‘–ø¯Òâ˜ä}Æqwò)…°ÀA3&‹e‰f=ÕJêwõƒF	ÇïpÈÀFÛ=+Zå®CwöÈü:ØB!'ÀRÍ½@¶,³H×x †ÌOÕñß’~¿š-ëÀ Rx+“æ,Õ-(q)\|è°eï—éx/¡ÉîYÈ5I…W\ÄXIÈQ¹x0Që²pì«ü%Ý'‰Rï÷è¤D4xD".Ý
Í§f ¡|¿¼uoÎf!ðx\µË…ç•$ÔÕž“12Nx¶yÐºz‚¿[gc$ZÓE]x·­#UÝÕœuÇüÇOÆÉ'‡xÄüÕ>P…é½ô4âëb!xßÚ«:˜+Uèu/r+¡Ë…Ó§GcxêXòÏëa3Céc›¹™ÃÝ?y•r§ {ŽÅµ·O~SØŠ~y,„¦÷J.ùxwÑ‡[»ünÊy¶Ü¥yâÀ’5C4ÔJ"ÄœzAy8¹-Ó
RŽýl˜6fUÜYŽfTyDd„œ.Ã«HfXV'¢ðryKð3Kb”aA*šÄ¾©ªè#Âyd¡uiË[çÓ"RºB‚ÀÔ1Ãy~ÆQ W“Z“1Ÿ*>(tk]ûyˆbtg©™–‚jÞcå¶êG…y ÉŸrQqÚÆŠr_n10ºÕy¸3üè=üTœ­DäK}Ãö4(y¹&N°q	R-k[*`®°ajy»q
Çx¦{É’Ýê8¯	T¸÷y½ËÐ“[Õ1qjÿ—àe©ûäñbxyÃÊqõƒ	Z0œ-ÄŠ‚Yh4yÞÖSú¢€–•Ú<Tö’)ˆXýyèÕ¤Á‡æ}³Ó|–u\SÇ×yí‡Z¸­pûvX¬?óÝ«Ç+8zÿ¢wV¹O½¯:³1dí’zá5Fœö/g£°<e´x3!Ûz X^Ú|²`å§0ÐˆÎò946€z-!‹J4Þó.,ÀpŸX/hÇz?h='ƒ)ŒW>8ö¬]ÈL
ÜzCó˜ãô!Ö©vX3É!ÀºËsæz`¶÷æ[q”sßä~ÓVší€¢¼zd$à9’%”«,ÙµtN[|‹ázzªô£ˆ¶š£jÔ¦z ýë†½z—¼§¸&”%º©j»œ…Q¸ÌtzÈjÜc;G†]©ÒÛNÁÎ‚ŒÄzÊ™Æ¬G‹ñ£ÊÐÑGKÛ•zÜ LùíÙë]Ô{E'zÄzòíG]GB˜ëœ)GþX>ÇBÅPzøSìwÛÚ‹cð~–‡L²ÿÉ›–{ê¡â‹Ò³¯ç}ªã)ÃèÚ[{‹gs MUÓëHÏ.ÎöÏ«{%è^“ÿï–Æ¯ qáo¾’Ý{+±SçÒz´Ä>¯Ä!Ôz¤7{.#Ç$¸þ}ß‹ü©„|áN_Òž{1’vG Ž÷SÊ¦ 6é0Ì7‰{P¬'ô¼
:&V%™¯ü‹ÌF3{YZˆ>l7—½åuÃ«âtÄ¡£v{\Qd{@|…²Ò£šªó:{a*¹³Ln¶&À¦-œ¾ñË¦{ ¥8-^ÒÕjxù¦UN$­Y{£¢ÜZ<CC‚Ms1)@Áè[¸Oi{º´aÙ’-¡È6F=Ä~(ô{¿UEp°i0‰Ï<ƒ‘*È#Â {à&åTŒ¥÷3±²À8#IÂ{ía­]ÑÉ¼3óÜ¤~L«ÜÚ|(3 G­—TÌ¹²k†?9g¸Z­W|7ÐXšxÔ<%Í5¯ÿ7NÞ|GétÄòc>£
§Úˆ¸``­ |aÖ>í`šQQ W“/$`ŽVõC|¢N3õœ·ÂJAÐmÈ£Ÿ4È|­:…K–"Õwõ‰í¶äëÍ7h|µæ2Ä{ŽŒ%Ž‘0Ÿ ?8ä-|Èl/Ÿà×6lØ7¥dÑŒO%àò|Ê-c˜ù¸qb¼ë‡ÆDïû||Ë})¯ t`EbÓ0{„ƒ?í|å„”‰8?+Ê•3ÑÉ›°Fb˜|ñÌ÷„µò^¯¶í2ó‘ý3ˆÓ}¡½¬+ì%êSî_6ëÆõ}F-$©ÕÙçV—ÞÒk/t}\?´âãÈò”‘Û2‘jïî§·Ú}‚	¦*EmÊœ¡ç±]—†^}¡ÄÌt¼®já¬–Ž¡Y<Íd¤-}¯9¿Böu¿M¡+«ÍÜ9îz}¼èBËdy­ù‚DÏ”Ö éçT}ÄB2ESÜå¼Ì}¾³nÙoEb}Ü™«¹Dîê³Çß“Š{kŸŒ ~
»àÉU¼”ô%H”R‚ûZãM~¹·R÷Ç19,ÁŠÓž> È¨~ƒ³ùv%ŸSë‰»r{¹(Š~'[÷î»‘u¦—¶*¬.XréÞ~Lu–3WÎÉ+:=WHæ½h~N3Í£8u“ñëª°¢iä•n~V>¦Á`È#c€*gÀÉ~[irmíC¤‰4|ÎDÉõŽ~\uÃ?L‰‚ ‰£æã²C~f@
"(dm¨
”!`y–u~pª=w²ø~”ð™ wâ>°>~†½:Ï:ÿü%f÷mÊ>ý»g~‰ðIhµcO7P‹”eÚ£¸~~“‹ñn· †¡=ÁM$±u	pÉ~¦Û€Ú5W%hß@ñƒi—¥¾w~´K²B¸dÐcLÊê?`qüEmVÎŽoîC^B=³Ô”	n2ðõ `ŠZ’…ÕÃ²L"p¿iˆoEvN%2º\‚@×1è|9k 7dK±ù#µ%~è¢Ù>µ«$À(4Ÿ›•Ûìo˜ðrMiGú9ÆÀàX°Åžð>õ‹	·ÃJqø”_f‰zÇ eOú­ ‘q]Ø®ü>¸Ç$	8W¶¨AÞ~‡86¹×ãt[ ª¶«»
ãºÒ©.™ØË¦ÄÏÝ‚Â(™À·®©¦B±åÅð\ã©ØÛå¹‡==\¦xþàõ¬ÃŠŠ(vÙ3ûÓ5&š¢ôù__÷÷`²fÀnìÚÓYØj(€K”ðDV½Æ
MD^[‰"€l¸¼?Â|¬†ðK
cãk·Ž€!W†Ûzï0º¼VqÐ(Æ½z€[d„
Ía ]ëwÍíÏÇ1!?€râ11…-yÐó¬ FrËi´Ã€„²¦Êst;_X7]lÃQ¯%=€†«Qø äI¶92Ò†¼Eâ)ùK€ò×vä(û÷gmf]ÖÉîZîÿÍ58	{ÊE‹¥qD)H‘vg,Qçß.WÜ¢›GÃ ÃD÷Òâ. tŽ’É_8 õµRKÈ‡ËcDZËä±(¿bËŒ¸F£KoÔ¹9TÌ;è»‚‰öB¶nÖ­<Â€¿i|Ú96»ÝÎ‹Ü¸ØN[ª]Ç¸ÁýÛ¹õCçO
‚ÂZoŠ!1l0ñ€™üb>}¨°äÆ‹ÿ‚·~	'F‚±À1ó"’+¡x,–ï±ÒhñŠ=‚çç¢†{ZitE™£9
ÔpÁÖ‚5ÌÏÊÖ±§BùÝôŸL¾Ž‚.G™žùB‘èâMµê’ÓÅØâ‚ItšÌR“ÖÐªÅƒá“½^‚MûžüÌ”>I+œj|;‚eË÷Lögb‘vÿÇë3O‚ˆÞ:)Ñ&²çRà<Ñ&¤#‚‹ßó„)5?DÕëú÷µH÷é^?‚Õ€)½8Ã•a=Fã¤ˆ·üóìU‚±´>oÜfÔÖþ;Ë@XvŸ‹1‚²K‚¯÷ïäªöÄ¸Öô8-l;/‚»º1ì|dsrÊÉÿFõvh)‚ÄÑÿøÛ¹+Íªò¹˜}g3è¨‚Ç øÊçí-®-jÞÞËA‚êhñ[[[°BmÂ…þà{ª7)»‚õû?àñ+0Y/Î€¿—"—šÙôƒmpîOÆÍÏÍtœÂÎ½>Õ4ƒVPßiãè°ˆp}ãêj­n”ƒb@V°Èý+Ý"…w[u›pú¿ƒnA¼¯ÑV6´×­=òÊœzD¨<ƒoÙinfÅ¾:Úïƒ–•ºy³}ƒÌ}CõÕôÝÝ]+âCÕìíƒƒÏíDG(…Fž²¬	8eÌ nƒå@@…jq’²F©'ÏŒã¬bƒëÝBs	nA§±à¨°u—É‘k„“ãN†(‚oÇuÎÄÒ¿G„BKüïÅ»ÄN06ÒŠœ6…&þ„Be¡	Èø‘UˆW’Ç
 ‰í„E”xO,Fn8M»FïÏ(a„Zº_ïÈ”“‘„ÒƒÕ-¼„e öNt³=fŠÕ¹£´j	Æi„f™i´øÝ ò€~Ý–Ä¤ûE„ý.£ÇY86RØki¡€8­fcb„ŽÜN7;bU(ˆ@…	Ö3&ð?{„“~ƒèn2Œ‰1«ÆvUúäH#„¬Lv#v’CbØ°’<ßØ_„ÇãÇ°ÔŒ×N‡• ÓD¯ç¢¯é/„âîW&ð¶Šæ¶<*…B'©—£„üVë ëu‡=Mn]$þcUÉós…!9åºósç[k½}¸áÉwûø…B½kŸP;yOÝ.Ç×ú©«Zô…UW¸Ý»E…Á]¦º «+©…†°w«¶0^»K–E‚“%Ü?Æ…”Át­W¹í×k^Ãvuç³…¢+¤Ûˆ[|uz*kÛÞ=…¥cKÓ¢„5}^ŠÔNX+´(å¸…Ç-F“ã7¶h‘Ee_›žteÏá…Û;{wîËÐ£ûàÃ›ç˜S@rŸ†Ç
ˆ©rIPGærI‰Çæ¾Ù“)†C•*	ñ—Êê¼´…;mßÙo°†>¼¤}¹S~bÕ3@¸NøglÖUï†GZ¥Œ\q)ÞTðU/>æÁçêž†RKÔïŠ(œ™fhÕ^ÄAß†wë—ß§àÓ˜/ä»'è6Ð"G†|Ô¦Àø•pHç™z7C-ð¥ F&†<ÇPà8U,­l#þáWÉ^¸†šÄm5›‘ÀQw*ç%þ†›{Q4JúP^6W]cÖý#Š§Z†Þ‹2¹,Áž±òßm«”ð†²Ïý5¸gm‰@qÅÈI!†·/Ykƒ](ÇWÈL4XÒb6¯ñ†·;16ì–Ý>ïÕ§!tNÒÖ×½A†Ã“2¨ç×‘7.K¶QF–´	ñÒ†ÞQ©ïS·w%Ük¬¼³>ß †é}l"Â	¢+Ýûä òuñ…†ø,XË—’p?éý@%7¯ó›Sb†û11WóŠ‚í×'ùJ–æø‡	õ]ô.Ž^*›êýôš¤4Ö*4g‡.k[ÍÑ‡uª@iùº]œ‡7¢`>~q¨'Ì³fþ·¬ÖÂ]‡C‚)±Û»ÎYœòJ‚e«Åq¥Ü‡IfÃX;·‘s%#ÐŠ‡V6¡È¶ÝP1®dÎü¡~¤¤yäv‡gÅåvã\ÞW­qcmK‘È†¯‡jó!€ñT“b£-¡±xÞIx”ƒH‡{S7¨]_Ú©5ŸXFÀÒ¹Ñu*‡{Ÿ»û\ ‰Æ6¯åÅùK_Ã=ˆ‡¬;`¿(eæ¶.ÞÇñLÄß‡°h¸Ú\È¬ëŸZµ€%ùéÊ‡¹ÜÄÉ`ÀÎRDrèM÷Ê,XÙê‘‡¿$ÍÿÁ‡p°„dJ*ÖB§s‡Ä4ù2äÂ9Ô£²Ñ;s_\‡Ë¼ƒ%|¹Áá&ümÅ—ù‡ÕÝ›#È¹a±áÆ|¯ð4WWàÝ‡üé1þ.Â"’)þ/ÉÒfÚˆFÄõÎ½2ZÞŠžGŠ	Ôâwˆ.…xØTâä^‹š£ØøË¥pˆ;þ&³pòãú Z(ªoŒ#ˆcE”Ñ²ìe½¯qK¢©~Ž†:ˆmÅ•Êà@`§Åšê_óÛ®ˆt‚H¬ÆšìËö†ï¾`ÕãƒëMˆv5;s£û­õxí>Æ0³¬#òˆ~Ê€’á7's_±l"Û
JôHˆšÈ$ðu’Íx’Óoš²ì{>.ˆ¤Ÿ¸ÑÄÚ˜/þÎWÐìU«fKùˆ·…æåcmcô£{º2˜íà¯ ˆ»wÓ.«ªºÏ.\¸]M0d8`·ˆÎ;f¢±E2,ö òTÊ}ƒÉ‰™f®1¾#*€F½í,’‹è×‰m…t!éâuÅ¦caØåWBáë‰{¿d…~Bº]/öÚ…¨3‰þýù7 ¹‹!˜WC›qM˜ô‰•ƒÄsÚ‚¥*°Á®-¯+A¯Ñ‰  ²2×ùàÍN5¶Òàðþ£·‰¡xÿYðå¬“W¹Ó)Sô‰½ÛÐ®#z—µ¬fò¡Ø#¢þâ‰Ø•Ïˆg eØ2cõ?CÚã"S‰àkÆ¦˜îÂ­!©Ã;Täò$‰ãô’œ¤ƒfìùÎÓÿó\©Š‘îŽ2bXâƒ_z°á{ŠµOÖþ_=]|“xþmY˜ÁfŒŠ+ú[äÓvSËóöõtr>}²¢Š4!:<®|Í^LTEÊä0åÙþŸŠGT·ÍB©×Ùéc„Fgà÷/UŠPD*Lé¤R“ s~×¶tçf§ìŠlRrÚ§ÒØ›þµôií±0’í»Š‚ƒžEV	šÿæKÅrØ¢-ûŠ–.P´ðZÃŽ:óëJ}:Á· Š xÕtŸ­p@eÀ/ïÌE8-RŠ£®ÿ½½†O×ø„Ð ^Ì›¸©äŠ¼#êA}ñðïo’äˆßòVùãÎŠáù!3¡«tU§¬sÚ²ý'íd].Šôú¿”¬ûNŽu»Šw	|Lº|ŠþŽ!WãôŠ('àå±]sH½x‹=)í:Ø>Tõg[vO9¢QÓŽ½‹€®Ñ_*Ãàõ0´Ó%µ‚f²‹ Šs·xRr‹˜ór_ùk‹¡Ž'•ÓÔ"²ý'Ý~-)§Ìä—‹ÍùÞV¥jÊ†óg¾Þï„”èK±‹ö¶Äáu›Ù‹±„*¦˜œlÊÉŒó2÷lØÜåqî+êC¥<î7½Œêl	ð*{”@éUöZÛóc×Œ0W<øˆ»@>yX¨š}ùýpÓÑŒdÛRp½¤~8Þ‘&ýk£ûBºŒlœÒÙÞbÎ†ñ¡»š‘'&ÚCŒ{›!ìÀÔî4ìmFf‘ñŒ“ª ÆÌ“œ²ˆÆ÷îúämáéŒ›š¶WE„î6ƒÎï^‡j{Œ»Ò1ÿ³±±Ú·—7Ml‹ÎÿøŒÖ A˜rN„Ój}ž	FÇ†ñŒá²Ýù“:GîP-=ÇÏÉ	&ÿúï­l}jÀ®§¼ÿÕÙXÑƒ&IRnÂÍ£{)p™3Š¸æðuû2ÿ÷ò´A±Ü:{"ì0ä¢ü9¹º+¨ê2£Ð4¢ö C´•"CïÆ1ƒ Ä’hï U«#F4g2ÙðBßk>‘í\”)‡dš(/
uqšâån‰3ôzLx¡,’ðWL{a?´¼àBg”QÇe¼a•Ë¬SÚßß’ì
­×Èõ¼³ÈŠEz/9^…¯.g}0IŽÎª·ý¡õkÙS×,Ú6æÑèï`	'¥ELÁ×”N4Ò÷DvŽBzÏŸîn	‹^Ð=Ô¹ÖþÎŽ”¸EŽ`?»³
¥­¶&îãqŽ&hI4í†ÞZ“Fb^œ}qú ZŽ_ÿgo†¶S?®^2ƒ¥Ž?­/Žev+ðe¾À¡°veÝJž‚ùwbŽu)…hÜqÏåÙ2i½Ó$”‚†N°Žvkû%¬Ym¢É körÝŽxÓÇEÃôá¨†ªëe*äHOyþŽy\²ú¯th¼üpVû½±½—ŠŠŽ~¤,_}ÂQålÎ;¥H¥»ŽŠX Ò1Û£h•5}È,™aæŽŠ­6Ñ½÷Üë”39£Ï?Ž‹âüü¢	6;p"œ`ÖßQoŽŒ¬îKLý³àøTÉ¾w¨§ÖÐŽ¬ê³ÉæGcU6Âá~Äê!OSŽ½9¿^/È“ÚÏB€<l¹BŽÚ&šC²äzÔ[Àÿ&ëçpÕŽð;h‡YÇ]Üo`“âZ'‹*Žý‹ÀÖãe¡–\+÷}®rÜw5ŽÿÓVÔ‰{Î°njäPÁ
å¥¢õ› Ôçî­—ÈS™´¬ÚaëMCx5{€[¬¨Ê3.IT;uëÑ²÷h?‚(÷L¸nŒ&–;… tópåñè1ˆý»ö´£–IÊ€Ùüw¡€e­gBob‚ªfQü-Ê]öxÍqvd!¶®0o)­@ YÄŠ¬+âŽÅÍÓû¿-ö\&»Éìº(õkPÍ¥£Ùÿºç¬‰·J`²qÝ~8Ÿ½ÒÚdÕ»1²œKiÁÚy…(d1—ÝFGê¯;½—¿­;¢}~|P«(l S$”@Û
é#Ì?úB¹.€2N…%H„gµq¢,*ËÅQ"Â+7£=†cù¹úé ÎÔ¦>ýú}FN[z"84F‚®Üh&V(ôOƒþÈ ÇÈ²®nÇ^ÖÕ®ƒTd1Q{çyDŠÄ¿ú:gßxjY-QˆþdI-›lýúªJæíÊo;ÕÔ÷hß9³Â)Öâ£“ÙÁ©E^«tLÁ´( Šc_B(ÈèÙ¹1çvþúL÷Èfš:ëL°
ðýØ˜fµôó‰À°§ÊCÇcùjùSF2o]}·k´Cþé²\‘!¶6²Ÿ7žIkrôÖƒô^‘/[÷,9Ò”dWŸÚ:˜0!…‘1Ü˜f¨Z§Ê«Zá\™57IŸQ‘DÚä—>§äV§7éGZwYÉ‘‚ÿõ4PL¸‰q­#.Œ>×h.‘ŠÊÞ°ðmü{rˆ87×¾%3Û‘‘º÷™ÊTÈ{[ïñ¾¡1B-‘¢Ô¿ºë¤UUèR‰Ø\¢ÛHxÏ®‘¬ò?ä½Ép`ÛVø•ÌÈêöÞ‘±‰g™ø¹¿×«Yè»)‡Õ²Hà‘²ÿ×†}.,Ãi\j“ã ¨)­}‘¾¤žïÑR²ý±fmú%?è’•‘ÆÉSáI¦H¹Ç‰E„2¯‘Ò	1ÚsÉ÷–—Gé4¨fà‘Ýí+17†d– t›(eÍûp”Þ‘ívFôþvnÀß¯ö¢›0ßt	ž‘û0fú™íõNg¬dW°;þ’øeÝºÖ+þ[óR›ÀéâV‘’dI ÕJXXH 2¤EmÝ’ ¸5“+,IéÈ5MA5ì3«‘¼¤’DfûAòÑ_o,O+>dè4:î’u¹GO›ëÆŽÚ¢«Ð#z
2’x¶ëK­6‚žö5î­ô‹p°ì’…ùô³úè±¨9c‰‚•²â9¨’Š
…ë_kXvV±Ï1(Ú-z’ìý’Ì²‹«7ÞÜ ÇÍçÓ°Ÿš…’Î%uÑ"‡ªO$¨,á§*5‡9»#“7>
;tÖ†l´ÄÜR6±Zâ×“9Ã´aºqéÀ8*" ãªŠE“;µ¯õÎ¢aFLÖ«NÇ)“N9÷ÛKfÛú§s™ÏøÙal“Y´qcR1"#¼‡©r	h“>U“Y¾cúhÇ«^íN9P¬g´èv“giðý¤¿ÿÀí§jz—i&‡f_“ˆ‰ãbÑOëÚwÛ-:wX´¢þþ#““¹ÙŸã½üà—ï¢ÖµªVHTÑ“¥9Õ ìtãþ•Åò»ßJ¢¢È
“Ý’þý6XÇ•žÔ¡°~#é*Ì“à€¤›.;Ÿ¿ ;‡'Óâü]µ·”	Q,<Ð‰ç­iˆ§·Pœ´ß”™+á(ÎHJÂwé_8…–”³ÕnÉ%9¸;0fçzU/^èÆ”-(@Òv¢MÄ ßO‰|”e”3‡ÿG¿"©øQJÏáAs½á5”B™yA‚Çgæ‡zo,°óô[®”Xa_L¤#úµèaÞ&$´”rrÌt(V‘9Cz,¦Î›”xþ¸úØ‡Š·euŽI¤Œ[¿Ý”*õ….“VÐ…rt¾0:#lk”…? Žš­Ò7«DU… ?$¦Ù"¯”Šj+¡š¿¼°æ’g eT”/”
ês6ÐJñûžýD'Âîm”§—²mÙe¢5ØËãæJ”¼Û <NœöœzÌ‰†Aå7Ð	Â”âÅuUÏ÷U¹¯kÌ8™:Ë©”æ<²³Ï›ÁÿË»¾æ¢â-±”òZ†6Œ©Z¾ßNñ)Aù”ý9›HŽÿ2¢j^Ûbâp5î•* D³1ëò
”—&üôË9Hõ”•4Ã &yAýƒ<iÁo¼üãù•9bA“e‚¬µ[ÿú”X&•YÚŒ«P‹úUm¯ÿµL‹LÓ• 4\M?£P¶îwœƒÑ  •ÛtLÐ|uäÚ¼ôN@€È¹•Ób4ÆóðKöÍ¦NÛ¶±œ•ïM$ôØÌ;ïÖ×	 ^ç¡ß*(û–ûRŸïÆfGRäTå.–¡œè¾[†©‚È2/ÄZ7Lç–á½Î­ù`†¨ÿ‰…¦Bó»–YWˆÏf5YåáOµþÝÆç†–*²²i4G ÅÔë÷™ñYÍÃ–C	èîõ±ù²É«Úàk>Y–…:F…ÈJ$T¹ Ø¥ãN|œž–³;ûê)¿Ñ¬ä×u:œÑnXÕ—	ûƒÄ<«äY¤Ò_ªm5Ìw—$÷.‹ÿn›Kuo¿L½Ü8÷>Ê¶—'L,õs4žc{JUÀTˆ dp­—)"ÃÚ/øøŠ¶BŽVnå¾:—.ÿßˆN¶ÐJ™lþe‚˜²‰uß—/Ÿv¼¤#zèãÉ¾Kc—:þx*ž¾J›€7wááþÆ’6—LðU‚fKtRˆ,lqòx‘k+”—\*Ø£‰}ö´½¼·ìh=I­V—i”…õSŸ/K²`¸?)£pßî—uGúî4ÃÛˆnÇÿûÂV·wá—yéõ›s˜šåG:Ä’áÉ³8—~}Lõœ<‰éÀ“É™).E—‘vJëJVËÁW§yQX°á¿ö¢— «ár4†kÀV3°ýfËo;Žã—·'ÿq¾‡—’hWŒnx!…Ðm³—ÅÍT|/
|öyÆ@bp¾?o—Éå»þ¼é­%&¬½9Ê´˜[Üç—ÊŒªd„vè^(ÁÏ-—ôqz{}±Â	ü+¬| !§¹—ø™ë“=$^	È°ññ}_×ª£x—ÿ.àÊŒ7ü}éÆÛ-ïÊúRZÃ—ÿEÎq5fAÒ_‰›Sû·–4˜ ÿŠ$_3Ã²õlž
‹™€Õ2˜;}ïþ†B˜Y¤(´cd3˜	KûŠÚ‹KõRâßpC„
³Á!˜çð¬lÈ š²¾~Õ&Ò™˜†#¶ÑM	=3|„yZÇÂè˜|m«{MÝ_(ùC Á6P…Ê˜Cuí¿{Ë"‘Ü7qü,_ïÅ˜Uˆ0×ŠFe6ä¡Ù›&{>{dî˜béHÎ}ó$Ç{j_}õ˜j“Wâ}»ÞK]½¾‹´eÑ˜˜wñÚˆ–Cª\Ït×rÛ-SLé˜Š‰Ëµìe61Ú$Zâ™´˜Š€ÝìIM
›$‹ÖÜ_B­—˜¥ÖVR«LÑ[Â½c	ôÖ¥û®˜¬òXõ1›êõhhÍ¸œZ˜¬>/ÑjXMýõr–*Þ©
ik˜Î[	A€Õ(®KAP—ì ù¶˜æÒ®Œ%!GÑÊŸó¯¸ã¾÷²û˜ÿÔ±‘)lLßOþ~_ê„ý«]™UÏdøCä&d©ñšâî-µ§™-"bàæO,8¢LÆ5{!!ºô„™-_y{øqEG,,v ,jÊ	™/?Ñ`®	€?Qþ²-TöMÉ\™[bÓºz6	&Ìë	
ü=Ö1ØÔ™|ÕëXâºGê|üèõä±€ï[™LÞTæŽÒõ¤QÌw;c}Î™¤ÖÄ"Tzçã¥96ÅÚ¼°_M&™ªÇÁüa&A/²àáÍ¶^AZ7[™×.÷Gqì´K5Æç©‚ž<š±»ƒ«“ùbùEÛQk_Ò=šÎÓ
‡Õ‰8ƒ ›Û>n9.ºšF½CÖKî)í%p1¬Rœpã‡š‘øˆCðzØ®,ÿ„¬K‹­Xš¥ïÁp‡½Ñ'_Þèž	‹KŒ{qÂšÛja5jp´jÞÛ»CšÞèÈm"WaÄ‘JÄgêÌ(c8›
¹Õ“ xðîhÞ]fåÈ–%a©«›ðHýâ Mr%åxÉ®æJl›,æÊ;§û¸ÌŸò(‰:ÌDü›3ˆP}üØX> ¼1'Ò$X³›4{f‹œ•yëò5X—K• ›58
Yú™I‹d4iŠJ›D¶›G¢,D!),ñ>RA]¤›dŽcƒV`#L;bçT,+pf›m?ÊB‰»¸úeáŒ4„•Ü”,›ž5M\R‡Â¼/ Ú7l§U› Ñ;èŠëž+ÖS÷(3îz{›¥.ÿÍÍ°Þ²Ùª   1Câj¬›«qáÎÛ ±åP‰‰´Qjž=û›µëapÙ$l]STÔPIÃS‹›Å¿×Mj-l/²WVÕ6>Í	€›Æ‰uF¨lˆD@}°|WazPèVí›ØäswõIÏh¯Æv•ÂÖ´y›â3w	¡‰®ü;c<®¤"4‚›åjÙ´AY·û}xÎý»ˆÖ‚^œ`¯Ýÿ|Ïëœ±:ÿ¹&<¡œy d,¦I…ñà` \7	©œ4N“4²µ#À†Aˆx9i³ºƒ€œ:.¶G¸“Ã×@˜·i¨½ÓÜ„œI9cV´2½ðÀ0¸­ É·¥3œOyþš¤Ð_‚ÀóLÔ•k÷eIèœvZ1J=³ú¤Jpeÿ&#ßˆ?iAœ|É£:¾w»žù^~,èy¸zÆœ~À@Ç*ÝVnwdÚµÖ2ø-Zœ©£7¼e…U3Ø¯2¨Z5q.JÔœ® &žDÿ»:"Ð÷sXMùqœË£G€†ùTœt9÷0-ƒÏQ]è<;>úZ›z.©£Ùÿû‹°‡ÌËƒ¡=šN	…~q‹¿&Âã*É<…SJ™¨Æ€Šÿ¼ÉjÑCGÇ{SGÍÓ4`‚°f•ËEZrÚqÿËG(Aa7f± [\lžsQÄKéÁ²!pÈö$cHHÛS9."° ð8K£´-q{‚›ø”™TnfúÛÄ‡ºP|yòtgò½Dæ²D9ixxXfÈ:]’'Î¸ò®"Ll¬+éìÁ€Ó™¨$&Sýˆ«<¸‡e‚-¦´¯ÌGô³ÍÃxå½j¢ù¦T°èfàvgÍÂlqwŸB<æÂTgÜ}ë ’f–í¢í„ÈÜAH¾f ì`¿ ”f¨îù÷j:yœÜsÖ¤ð—Gàóp=ö›žjŽ1D˜¡pxó»ÿäz<Îèžu7+¹nÖÝ¤ð™éƒ‰ÈÛ*žwÝRb*>;òmg¥1ô"ž{2i}¦to÷ &iuþ–Á-ŠŒž†ï˜Qu--õ°‚î% v`ö•ž‡Þ	1‚Õ$z;Âî’¼ÏoÔžŸ4‡ŠDøÛRèTüý5å4äž¬é±ÐSðŸð¨v™üXfû|/žÁY÷Uhz=ò.îû¯ÄÈ|šžÃÄÖsrXDGÅ*Ü´ÄÿžÄ¶é[Åë¦¦9Å»™¥ýù!žžØ^žéïzHcú“`7ØSÿŸXµ+Ø³Ún¢ÉUú€PþŸ qtF`r{e¾¿×Çœ¥+W–4Ÿ4Nµ±w…@…ƒ“˜¼SrÉ\íèŸ:ª'™«Í«ˆZ¶ÂeÈÝ[ŸIäúzhé×ŽŽÉ»íÞ–ÈsŸe ð&%0ZwÒ…F³'q‘Ÿks7Ïn°< ´øéi	EåŸ}/Ó×iK{ ¹ñUÍ†¯ aŸ‡Öùù›Š‹Q•üŒ’ÍŸŒØVŸøï$×Vûx»
â0·>5Ÿ˜qÃƒýTÄ#;¯/™š¹ï“Ÿ˜¯½¥úÈZ5Aœ,unÖì°ûŸž“R¶ÂbhªžPFÊšmnþÒŸ£ê†ÌEZÖ+UiŽÞ Q9ÑŸ´B“3y¶—( Û¬ëfm­~Ÿ¾øYÂ‹KÙŠkËWþ2PÒcHŸÊKõåÞŽi"2³éH|u)ÅÆ6ïŸÏ©ì¿´m;îä-1 _ï©«<¢ ×«¦+wTP6®ƒN›¤Þ]=' 2¤×@lZ
áˆîªç	€]n Söõ¿~xŒü_9cÊÆoÚõZ ]Bðù"i5G‹Ou¾¯ÝÑé+ yä4Þ¾BI¹!éN´4s€Mi  ‚@@Ð½+IÀC—#;}- ®dy´	ÌÒª²÷-ÑþQhG ²ßëÄ#{€LyC¥lÈ±ƒ ÇumÝÆ©Ñ?ëº?5Ý €0WN ß®ÀöèuNºCÇÃ3¾O1ÐÄ à$1ƒV•æÅ½qì¤´T=Y² òˆ’kÝ
ØŸtauvíkg·FR¡"°ù;šÌ¨ºUØ%\l®ˆQ¡$ò¤:6o`
jß
3Ò¥µË@¡&@Aw­vêáµž‚xÛü¡ß	¡)ñ>¾ån¶)>tëo›<ë”O¡d·Ú:Ãi):Õ˜÷MR,í¡+ÁŽþzhÔˆ±áÛ
±Z›K&¡Åv%ÙvÅr÷º­~ÙX^\hA®E¡ÊÎ#ÏA9½dPÏ‰P«­BŽ¡ÒtßÊUó™__“ÝåŸ.ï‚•¡ß)®Øp¸Æ{Š±žìµÍ“=—r¡þGT6ˆtnÑO®Ó–ÁHš@«w¢'ÏFìì®yTÑò®¦Z±öy—¢G›Ÿì¤26îNê“¬÷$¢Jlq(:VT˜­Ê„ØRnƒ¢†õd†Õ{JqÜ§~ßX•=V¢‡ñq‰©¤È!ÑEtA:“E=.–¢‰ž´Ò¿ØG¾6­¹c:K«Â¡¢–ä9ö€ ÿ—Ì‘ÓqO8MÚ¢¨Iã«êÀ­t·Q1:`åß-J¢ÂœlÒ!]¨Ž{æ§NšCÙŽ¢Ã/­ÊµˆÁq£-´ŸULº}â®¢Ó²W´ê…µáu1w©—…±,†Vw¢Ö ¬ý¹5å3.G“ 	¢ÚKÇumùñ}uüq'X„^œc¯£CR9†HŠû^Xpù9ÙÝO¢£G6t*8M¸ÑÀ¤m¹¯vhÏ£Rã±eŸøÍ²æ31ày	R”oÒ£<>ƒ1,[¥º'Vöðly‘¹W\à£[‹v0‹¡N¯+½Û÷Œ`£sô`vp6ß§(i?VV—¦t£™5YÏ³n`BûSÊÐ,Í£§C@à«ŠXäºöÎÚÜeÐ!£©Õn†Km 5:Å€Ë,òøT£³é2†£R·—:RKGï5Ô*¦Ï£´azmR?Qƒ9v«Œ	Ô’£·ÀþÔ&—ôŠ÷I”pBÆo£·üKT¸&ÖbŒö
{„½ç²£Ç®¶ùƒ˜&Ðú¦š©àbef£Î74¬ŸCoÞ½ø“>}ÏkO£Ô]¾<Î=NÄõìAˆîÓú£Ý×´ vßÒp!*
åGýN¼ñê„£ê]@ñ0µY¦‘™ð<÷[íb£üæl,htÊ÷¦¥\¬†ÖIØ8¤¯¦U4ãü“ØtzKz²¤ÌBBÖºÝÜê¿ö|ÔŒ[¤Ö¤$¼ŒOÝNðçÙ¿Ùì·‘me¤=—xÄ<™8œÁi`Jm•¤eCúOÙtb|>Ì”›€–Èv¤ƒüß:»“ôÀRAßò‡ž6(R¤¾»‹/YŒ‘	°‚)¢øÍ:[¤­ŠÊÓ²8wù:~T2Q¡Ùêb@¤·çÃ<dépöÏá¸.lçD¤ÓPƒùQì)EÅSä0v ‹¶4¤âÑAÕÒüò¼Ù2me5‹-€L¤æ=öˆ×ß8d—G8ÚS~mi•b¥
Öç^˜›g~à›ðö®„¹¥Ÿx–8ËŸÍ333ÍJA^¥(Ãf ØÂ·L#;–c3íÖø1¥Vé;ž2ÍpÆ9"!lóP+‰ïB¥]÷'`oçC­†Ì´M—%ìÈ¥tù~þJj`ïœw$éáûTml¥{ï®z¿294ÕšJEa4Bî¥…VÌ0"ìD?´¥!Ž+û;ä¥ŒÚIÿã$'æÅŒðîœŸòVà¥²„¤§B¦p0õÏaÉä7kX¥¸$VX©ùîªG“o{þØÙK€¥Ú|µÃ¦£®>••\ûg0n»¥ìèÍ3ðƒ])©ÑHà+c|f¦	Ûy£Õµ }pƒæyïïj¦Z0£š¬„LY Lõ~‡µ¯¦2ÓUlÔåÍ,i5¤¬ó¦3®õùÐ5vcg¡sôÚ˜ÇŽ¦D‚¤‰„®óÊÃÙTØ™·8¦Q÷¿ZWÿp‰‡A*Õ8=£Œà'¦SmyÔ¾9,o~±+€nÙ'tƒœú¦^Çý„J)q4î­ë[a‡‡;_%¦r€ów²8pµø.èH/?ÆôÅ”¬¦} 0®@z¤øI6»-(Ô¦}D¬¼	‹ÊÞÐ™t
•Ã+¦Ã´`¶5?dã#fSÀ€²ÂBé¦Nöh •ø!%4ûxáº=‚¦¡§4¯µ“Ð£Yß"·/ß_¦®‹¯vD¿Ž$Xª>ºÐÚCù¦¹‚¢“
ôƒ’Š–¬ÚdÑ¦Ñh©Àx`1–¡ÏM• .ïŒ€‚¦ØdþöÑ­Lµ¼€Pm.ð8ñ¦ï™FÒÿ­´Fß¬*ïøÔ]ñ:Æ§BÊ8s­ÖMvk‘¹ ˆ2j’§t°HµÜ*ß[H¡«H«¿c¼§y
ÄˆÔg†\}0BÂnYøB§‚ÛGggáŸu|[Eð8§†&³v,ZQÑÙ¨K¦žì6I“§†ª–-ÎÔÓ–x]Y¹ùÁ'P§ˆiRyVë`Eó*9ù,U¤qº§Êç5ç´&ç\­sSOÑj:§¤GûNaæSÉ³Œ@²RÖÅHÀ§¦u”Ø)îÖêuH&³Þ'bÿÁ§Èõ^…©t)`~qƒ-§Þœü@Nq,œ·ºFk“0¶¨uÌ»½ºÛýËI _m©»žÕT¨V/1^ÌðLí>¹ÉE¹w·ýé¨&’'æE«ˆõN!<´Î"¨PÚyº)Û.ç6$€¾	ŒD$¨RÙ¶ü~s*‡É‡6Aí2åòˆ¨SÅ’¥ˆD@uÒ:€Ñåj‘†¨uw%².¢ëG`,³‡ßdKg#ä¨vWª?=€ÍGÖ‚UŒøòî,ŽÆ¨Ù¼p<ðû!YÎÁì¦%¬©Ý+Ý6–ÊfÐ¶‹PlšÏ©g!¸Wã†ç¾r‘p8o´©ÿÿêA*ÛPnQÇçÉx×3©)ŒkÇÙÃÞÝËrµÓ¡?ñ©-ãª+ÒŽÞd©zôa¶k¤ä:&V©0ÿã¡üÚ·¡äÛd¾~ŒH*©@f!/`çñîŽ	Ã×¦¹¼©DôÑ¯*Ã`¦`tÏ“9Á—u¹©dºŠ7çyóölŠ[ÐþÅ†€©kl¢Õ^K¯ö3'E7*‚©r2¡}¦ýuXd<ý-êÓ¯Ð~™©wC¾ÒäÇ“ºkØ¨/R{q©ˆfR¬Çlì †yø°zøÔº€©‘·¡§ŠŽÁò«f~šF¤Ït§©«ÖQ,mB\«L¬x»ð]©ô©ÊZÏ&ù–{ç£Äž}‡üíÒ©ÖG•Ja2tµé¾¿Õ¼ý©Ù1ev¦gcDþr (Ÿôw©ýóhÞ†H+Jó'ƒ,_–<ªGê‘¦®m÷Kê¯ÄBo9áªü-	EÏÈÄº^ÀûÂ«
þÉª+pè´§ðT²•ª YþG¦ª8ê…§‘ÑO˜R·BB¿Œí(·YªSë{W_›ù¨'ˆíÍÛ÷`µ,ªgÌ9›’e/”1†‰"ÏOÌ>®ª­GÃótìE¡ðµìªº#5™£ªÍnf ¡5}ÿHŸ9!$—k2ªÓÃAàËò~ÁqþJæà¿Á/õÄ« 7Ž"ÔÇvER¢Ž°,HùT«“ÛLûn¿]t¬MeÁ«¿!«uNª§¶ƒÂWæñ®4¥)«6ü_;ÌÏd4‰;zË®â}zÔY«C/!Âå\ý ]èEÄó‘öŒÔ¾«iSÂG¶RÉ7Þ †™UŸZõ«x«a¨$îJüLƒìiëßÐZ«‘ŽŸ8%«ífÝîäÊ.E(²'Ý7«À …}™,1ú?),“aÍ¯<L«ÃÜ
Ø—~`æPÑº)”«ÎH7¨lyHP°ÉÞS f°«Ò•¢ú•ÕÝH$"à8ŸGG•Œã%«ÞÊÃ9D‚‹.¹BÔíjÃµöÞŠ«ýAåü=l—}œuŠO3TËCŸ¬,g ì4'‘H+¡YvEOy¬RÔ´ã¶hâ§>;âãu€3”k£¬xÎôÓÏ;¯îmNµíYU8Zæ¬ªq3!aÇ¯Z÷µç; ÿw;ã¨­Í¦®øzRm´RWú5ón9­½Ybë¨ŸÛÒÏI¸€±}2­Xœæx½A5õ€­ù‡\ÔÊ^±­aÒ;’hUùo¶ õ„ûys²5|­žkó8÷ƒjÑèÌÒ’éÿX§ÅÅ­Ÿ5À¿ŠqÆ¤·XmuS¸éÑqôŽ­¡C¬'ò¡ó^™ÏfÛÖŠ? È­¨Ê£ŽKªC‹Ë¨ÍÎ“sÒ'­áQH¼«˜Ý2Åq„ˆû²öS©­ð-jÅäƒ€ L´—[žø›J®uFß…ß”ÁøÁk?k«÷®0CGük~ù›wËÞÐA­C²½®8œ¹êz£Âb²PÅgZç;d$®Ã
Ã³–ð+±ÿàÆ%DäÙ:®ÊiÜ¸EÎã\üm¢1h®ÌˆÅ…úLÆ\¦ûÖ¬‰Õº¹®Þûë™s}vËsÈz'µ­èKi¯‰õ©´Tê,'º•¢ÿPìjœ¯[§ê†7£! òKñ<¯œ)-¯ŽÕqÕáÂßœ
¸fÛÛ^c¯’Î!¯×2(ßm^Ý“¯`rhÒ¯±$÷ò¬2rÐ÷r¡IfM'>µÅ¯²æÌ2ÈTðÍ=ç¢ÎÆÚ¯Ê¼¤DÉóa2vw{ºÌOÝ+¿(¯ó¼ÇV23‰·ÑNrW¹ORh2ë¯÷ ¦U\ê%Ä‹$"KnE¹ß°1ÃÀ“\ÿwÁÃúyÃ9·‡^ê-°H‰ZŸÒÏìáºç@‡¤ŒjzR°œ>¢pb{)šý¥²ê-?†Æðö°žo\Mt+æ4€ê&kv™¿Ù°´)üñÍ€ËŠ˜´_‡b°È£	&l-¯nºßš±H„Æ•Ge¡°Î±Àx+åíš¿}ù†3u0ú…°ÞLµ¹–`”Å³Óe• ¯ì±é.jÆ²š«¸åPÕ+óç&ç± §ËL|‡ZSZÙ
TµãzÊ+"±'dí£W‹ç=¾vHLü¸õ½Ô_±@ˆÆP;ªs,Ä•·õÄD’±Hƒ××r±¿ÂÄµu×¿±H¯ ÿý{$½'¤AK”’¯–±Oƒì’¼>7PÉDÏu)Ð±VyÙ·ßr05çeNãõ¼ÑIO±`ãðÖ¾—™yB”¸Jƒèwt®$±qBQ£óE5…´õXýºìµ±;VôøTÈIwaqä@l²“±†óE@õ¨öËAN‚wf…ºÒœ³±‡Ùë!AtB¶Øz^hžôªÌ±Œ*ã±ûËù‡iTî\¥×ùtg±‘­2Í}âæÙCR(§!pŽH ±”=–QªKÿþ:úy=_Ê2	«±—^
–fi]K§1£L3†°32±­å÷ùsÅ!ô¹VQDú÷O¥H±ÌÒ«2CÍgÌ˜#§	¨ˆ;#â±Î2ñ±K“iœL8q`ÈVÞd~±÷p¤mÔbn)t^kh¦ˆn3²áØÂpŒÑF¦Êd,#î²FðÛVögçš.@©Õà³²²P›ç	Fë´J©Íôƒ¯L¨#%²XÏ–€d¡¡Eò{p}
Ä.X²Xâ¨é¡&ùú-¼¥Ëš)R«~|²YA¨Mc‰RpK~®=”!Ð+©²o«Êl£
{óÿ2,6àª¢c²~Bœ¯.[aÐ¡’ö0<ÐE²2cðã_O)oL2ÅT×¡² «¡j¢o+\àÀ6Kæ}ÿcØ²²PÂl"7·Ï96dt4ºQuè²³M?A›–žež\QÂ
²ØÁ4¡ù¦+–‘åfTßrD›²ÙžM0gyä¼òd‹¹ Li¥†Á²Þ8ÙfÈ—ßnO(+".­B¥²å”lÝih²¿‘ÓDÁëÀÊŒnì²ì FÎg<¬h|CoèŠòâ²íW«Á&<Ír ±±(¼Xs8zÖ²î³´6†69½|v1»@(Âöi3ú²ï[³{1ø6­\ÈRÜsXÐh²òÅ=Û @Ò'û“ÍƒÐyX%‡ ³œìpwÈ'!è½À9I ‘³:ÉVÚ½rõº†âÄëP…F³B¬,¹/ÅçÓºLAM!€TWs¥³´Ë†¦|YoÑœzÇ¶0d.Ð³½z»gÆ˜(±ïº:®Ò¼œp³Í(¼K9™kÖß¡ÿ^7)§Ç)˜Ð³àÈèMŒr.¶êQg}”H‹ˆÉE³è§”ëü—y‚7ºÅ)Í/Ï’J´pöH×¨ði.î——7gq¿“³Ç´á[î„­“Ict~öï´G)%©'ë)|ð*‘îÐMµŸ´Rý@ôùo¦XÕ®¤Ú@Óÿ´U¶m<K¡úióÍÞ6£œÿÈØ´d©ÄêÆc’i©0-Pó±N¤´ee…„ús¯É-Êqc«òü°ÎJ›´rœå‡bE1°xŠÔ~wÃ´t¯tmššW•† oÝi“|´}‘8H×HØÊ\ÙÜüä4t´ˆóù úßÑDçµÀók¿Â¾Æ´©’{â%iøuÊz•}â||´—2/pŒ»þ)UOFWž<Ü˜êÊ´¯ù4Ú0º©?Õ5ƒÏÙMÄ´¹/DËÝ]à`„ ^a»%	´Ö‚è±y[Q<Ñí Œ¡×¿Rz±´á¶BüP
Þóü¤ÔŸ|ÍÌH‚V´ùš¨-eÊ<®÷$ ¡Åñ»›t´ý	F¬ýCåÊKZÏÓ"î¯Åp´ý‘£…Š„@Û˜µŽ­*6;µ—…ÝÌ‡¥@ÇrÌŸã¾›Zµ	Ì³šŒ¢B Ä$ @†‘¡µÇ#™±ç)9K_DÌKÔ •Eµ)¨# EÙi9Ë[¿qÂg[ð¾µ=BTxRÂ^sG6€ø*òà{ªn·µB2rçLÑ½°ºûÛx¸G%PµBæ¨ #^üyÓq+q|E`µX½s‡aJ,—‘#^~?•¿÷µnkãúœ_V;Þð§äÝ”-=¼†µ€ˆm¼2+*qÖÀÁ·ŸÊ{uµÀN3aÞ¥@}Eàä,^ðUµÂ‹´oúGÍþ,œ9ˆÒïxÊZóµÐÈaà¬Ð(M„“jÜxË{àÏµü³o P¶»€î³žÉÉ
 ôzd¶vì×Àtüç…Ãª}F:"l¬¶#cóŽ‹},£-Ö€7¾ƒ$¶1- ¸âÜ¦Ø‰ß"øâÓ¾Ù¶3¾g6è]iË›cûñ‘?Â¹òÀ›¶5l°€pÊm'<ÄqSÛ¸':0¶b˜&Y-Ë[¸Àêy› ‡ôÉ¶wÍm2ðÈœ¦³$[7WxÏßí Ù¶¶¥øÍÐ%V–íÂ™Q€üJ¶¼úkâ!3ZÃãÞúX`±	B¶ÊÁDfŠ0Év tašAÕª¢­¶ÑN+µØyy°þÔs2ûÎ¶Õ8=ýÚö
Ì•-ZÀd1Ê¶×;€Ž‚ˆ´=‚tð_¶Ø—&‡õæZV$"•+óDÒ¿¶âšuykg èfXu¦}î¶'¶ä½V†â)™ˆNšÇ¤EE†º·¹¡mŠ”±€ó«xÎ.¥ë·{Ïbö:o5(²ÙYŠ"ÔnS·%kh–’OHÞënúŸü–·2Êap×ò<Ší¡¿Ô¿4·?NÉ=‘ómÝó%·¹bq¡û·G{ ó|É‘À&ÄjvÑØ‘¬æ*·J„…ô¨#*]~ã,í/Å„ç·]€ËT™Ò éœGâƒ?%yU[·oäŒ•êÎŠ÷õU/aêy·“xÌéÓ°#çzæØU¢QÃ·—+§Ò.C´l:tY=‘{«Ê·¬ŽM~ÑóZ#†Ñn”2u—õ¤cë·Ì×B’Oü¸wåÝˆ­Ã–6E·ä]Ob‚í3äF:gˆEyö‡Ž·égó•@¥dýï1‚8÷/·ëb™›zXPßngsÝÉ7ÿ·íÌ(øRþ¤},¢ÌÌ‹Ï‹Ñø·÷ìºçš¸Ž°GcpÉD£×Ù¸pQÅ¦Äí—³Lû[Í`Ð­†¸÷ä†ì†°6ïÁBwã BXV	™¸"Hjà-pñÆF©Ñ,ž`WÀ¸"k'¿ž¶ Þ'xµû«fÎl ¸&‘ž­—ÝÔ·áT•}@\ñwË…¸4³‚°¬HùŽ$²>'ë2 oi¸6uÒ}´-š•M<û-L¡º¸Všâ ªÊ¼Ë˜vaV–4Ž¸Y… ¥N"¤üH€Û!”åº{¿à¸g…,^¼Á^Tf²ïQ÷{à‹Á¸‰¾šþ}¨ œT}·îœBÍUÌ¸’Ýú÷Ž
"®‚;nf¥¤ÜÐ¸¤²r£BÂ£ÇÊíH/cÆ¸Çû Ÿ*„c#ˆãø¤ ’Gb8ð¸Õ ¸¡Ñv˜
ç[I2eLè#c„¸Ö¨výNÛœ#¦^tgÏ,jú_M¸÷°	@ûFˆ£ÞÙ
ƒ?T¶M¹Î{7Ñá˜QA¬È¾?>†¹¼zvbçÒ:? p6#zæð¢I¹Jà¥`Äê½æÔ!ßÞ–Í»“¾¹YK’2é‰à8V oä)xÁ/c¹iÏg™P5¡~Ø˜Ö•·ùTóœ¹rÝtÃuÃP8óü†”]ñ¹±mQpò43£¸ŽïÒ«0´¹Ékâ
â;7BòqËãS°s9¹êçY!Ð‡ö†aé›£§oÃ¹ì¼jed„ý§þ\!5ðÙ«¹þ©ÜƒÙ^×Mòø8êmÛTvpº.¶öÑ‹$M«SšçÄ­¥V
ºK.Énb;æÈ^€Ï}Í}òhºZ‚#ãfðzBÔcêä0œHÒeºlYR§5°ô
ÙÉ.Qx“)b€ºwÙDÄ›“¬;î#Ó½VÖéºxAKð .x$¸|‹û»Eƒðº¬¯îs¥¨°ãb€Dm×àº¹âgåÊ•š+7U¥ýÙd×ººÅhë`Ä§øe®,¿îì£imZ%?ºÎWK¾UsšIçúÚTƒ³Ó¥ï6ºÛU|êÉþÒË‡g*Ï4!E¸•Uzºç–kÈÔ»uQUï­¶Õ­ùõíü¥ºê\­; ¿IyTÌ°[÷£aºî
“&ðÒ…­ß2ÛpÂÝ‡ºòÆ_;»@„ÞzC¼ªÈ›^»§&‹àkóHÆ¢9qr» xš4É;z‡³^ýjLŠæë·k»&›ÛS’xk¥ÎÃS ‹SÁ\óÓy»-‡×ó†ˆ »‡þ”¯#ÆFÈv»NcgqÜüÆ›pm-5v£hÍ»^_ÙzO‚©–‹ÎûZI"»^v±ü–Â«©iqè_qšDhÊu»}j55v›Þ\:u;îòI‰jï»‚¬²€Ñï<mQÉ*Œ™v»•^!ëxŽ,*!7ô±o¡S‘Ë;»—ÊcçëÆÃ¹Sƒ€äš•Îèªk»¤&dÅmv¬UÂmøÐ¥è§»¼;UI<Ñ×±îhŒA¾ÞS:Pö»ÀÔ=6}…gépfðQ‰ Z‚»ÎVô _aúßÈ]ýßxÖŸ¼»ìä:ÿÅt†×:<'þ)¤ž»ó¾¯Mˆ¬¥&@ŽÙMx2©¼¥©ŽAˆ“éÔ”…“´&Àaß¼"f*'IâL.Û²²”üñæ'Þk¼0ÚÃ4<TBµ…ïã¤üÇÈ•¼8?šÎyl³@Æh+Ë\ºæ…o¼GF”Ò|Pö9$”¢yf2*e¹¼LÓP™ØŒõº
eM(²ÇË
¼MplÄÀÊ,óÀP0¨Uï¨eOB¼Mè›t1ìhÀ	xÊÎØd] $)i¼MþÓ»gñ» `Ó'“\¼Pî}KtZx§Rv;^®q‹Ã¼^Ô·eqÉñÀ+tvº±£§Åf‚¼_5´¸¥ÑÑ×”À?	uKÇîMt¼iwYá­ÔL”ìg§!òPÖm¼mÂÛai¦'…:«áñÐø0¯s¼zªaÖ,¹†sÚ˜Ó* ŸÆH¼{ƒëEùù¶7†çFì TÚÉH¼|Ê RÓæ‰’›VŒ1PÇŒ[¼€*Ð¦LñÏ,Wâ1ýøà*çô¼—ízÝ‡-H\]Ì×ÜkèÊd©h¼«! ¼]š±n>%¹KyŒùN›¼´ûM(gâfÊ8
@û)VgâTHÃ¼ÙAño|È~½»Bˆa\½lkÁN_¼Úe|/v_¨1¤°vk¦LÈ^¶ß½
qé‘nXµ¦œ|m·Qljö{½
ÙOè›øpjüW"=WomÑ)½/aTnËï¡~l“Šb„ª ½#…‚çÝH’ÝÛõ`bzx­øõ½oÆ‰MÀóË^ƒõ%–,dÞ6Ù½tÐÒcBž ˆþäç‘ŸÛÿþhå½vzV±½ô›‰rwÐˆõI¨ÚÇ½šðX"9SÞCð¿|ä¤^6zì½¤˜á¯‰ÛEAxkC‰¯CäÊ‘1½¦c Ð…#í	Ò·âß›L)£Ãc½»M —Ÿ½ÀyÏ˜AÛ1Ïyžƒ³½Ï|—ô^Y²Òëón«“ß#½ÔŽÝÌ]ýo°âo‹â‰CËÙ9½Ôß½cˆV]-ý…ŸÌ8•Ål½ì"WïJhïµ#?:žÈüçß¯½ôóº[µ7OøèNÊŽÄ¾.{eì¾°ÇØ|3>¦2ÀdGòP5Ù¥E¾ŒáÇ‚‰’½ŽÛg"ð$½%¾_õÅ“ß%W¤‚åÀ"›QðÇ©¾oèÑ<Úšï-Ã¨F?@nh¾öGUñ  %$îô¬„)Mi‘4JN¾÷¢¿¯ßÿ“	¿ ¸ Hó5`x¿#ÿ–š‘ÍÍ¤ŠÓ‹OÔl¿ƒp×NÒ½¸$ùŒó_ ÔésÑ¥¿}q·ÜA´^\EýGM¿&.aN“H›]‰	³ ÃQ‹®¿,z°¹?Œ±aïeÿÎxlôž'—¿<íèÂ²Hüh’‘û¸X‡„	Å¿@†-Çnt²§»iTˆw)]¿Z_Gú<JäÐ}6ß[?-ü…5p¿^´ègù­{¢)ßÿ-A‡+í|*¿q^™Ö
qlÌe»éå¬aúC‡U)¿•…‹DSÍSbwÖ( b±‰äò¿šíì±Êi%Rƒªƒ@-ßP}¾¿ÞïˆþÄÿ1_iÖ‘¯çù Ÿ¿ô»kîêì#ã¥'ŽªªöÂÀôA,.#¼Ñuïûà{„¥ÀøPl¬9cÚÜM^˜ïÝzÞ0À
ÏMûäyKûþ×6y})/è¸ÒÀ0nóI$Ô+Ö!’óubKÀŽ–7˜®YÄMK’ÝE‡^š'}À»*V°ÈË
‡J¢"x}°À/uQ–¬Á,¨ë—Ù]óÜ>_r»À=²ÆZÉ]°AI?ÌÌÑ‡|™ÀAâ”˜t£F…Š6H²à:RàÀES_°àãÓžÖ_ÿŸT*Ð¬Àt0¢}JâŠ»º:A¨ªI8Ã Àx‚˜ÔŸžÇwÂ™«ÇN†ô19›À|ºú=B„`ºê;ÿ,;]Üô¥À83Û)>O§|I¯‹~kÅbÀÈˆá…—>9“QÇ§¨n²º.	ÀÊ‹û¸¦3•‡ÿ¦4B°wtÚQíÀÔTMKÆdhö-ˆFû4^•žoÀçg†zT³nÝHŒŒþ·©´DrÁÜ­2|ËÄóûz€·OYr­Á%&u`ïÔ¥ƒugzÖ:AW†:ˆÁ&ãR-YˆCË@êYÙ£ÌÁ8|ÁH“ÑãCB?yµXtxfûÆt)Á‘ü@y1¼.ƒ" õ¸8Û’ùÁ‰Oiþ}¡|Sž$$¤’.1ÁŽ0°£2>¼ýËê¦x1©Á—ÐØ—ò.ß©Â¤áNÊÒž}…zÁ™‹n”pñgSmuçX;Ö’9Áª*á+¸££KJXG¬	;°–Á¬ŸúVÎÔq¸;Nx¿Â\dÁ±àÀ½H¾ŠhGˆ3œõUÆŒÚÌÇÁØr©Ì)¾åO ”àÛÒµýšÔâÁÛŸ¡¹Ãx5O8=RÄŸZÒ»ÁõL—Š»¤”‡ËFôæ&t¨8Áú§ú²KFµ¥CÃD”/:doÁü‰	7çÖDñ¤¦ó“Jöªã=ŠÂ'TÖ)8ªW®í°`Ñz´FCÂ1‰cÈäKå™à½¼t7"s¶€™Âj@óìLSîÚK—aÎ%Âlp³ðìPŽ^4íP'¼s®ÿ(Â…#çeDûD©¶×ª@ä+Åÿê%nÂ‘æF°'óù™ô å‘•)ÌÀ*Âã…~qäy$ëÏ9ž`Ì›Q°ÁÂïuÎÝ°ÿ›>:´\9DlY7Âú›sæ[…_ƒe=Ì2ƒ»þÞ‡ÃžxKñ¥C®¯›ßmÍ–PÛžÃ5B9EC)—%ÆVÊ.¢‡ÃB{$â”/x	*=«öX…ŒÈâÃ\våjJiøN«•i:à,¦ÃbÉ$¢hÞ+¶ r_Q8¹h–˜ÕÃn„ˆþbYpnëÀ©‘‚Ãu´|‰’¤‰.tge~}ï.:ÜëÃ|ŸÂÄ—TxG8«n¦šøã·ÅŽÃ‚\î™ó~ÇÑMsÁNåÃ“OÚ®ä|!.ƒ,©×³[w¤ÝgÃ­sÄEÖ®w†éÍìË#S´öªÃÑúØP÷½rìÆÃb9Šà02QëÃÛ+ý¥4oh4JžmyS§¿5ÑžÃéS*Õü‰	ÛpãÂí7Ge¾Ãõ8˜P{u!¯¦U$ÿ«–Æ2æÄ_áÈŸ;Ò$éºd»¸”ÄÃ6i¥^E½ž{5}Q
¨ÁÄæòÍ;À>Ðš2qˆ?$C.,Ä'ÔçI£Ã¯–v,vÕ*ÄMëÉ‡ òÓH²È‘úm¤4yr7RÄeMöÐ‡!ÿ´EÇ3äøfSÄh*¼r†tfÜ@—¡u±§HpLÄi²NGîv$™¹s¿° ü'²Ò#ÄxÁé)"í"ª$CÖ&uœ`½Ä 5[G{ˆñ½”!C‚À½žÕÄÂJD§Õzf{ªÀƒ‡Pd	„/Äï&SQ2ÒÑ-RÀÙÌ•êLØÕÅe|¶-™Ê¹ÝMGyÑfbPê!YÅ	}_nd*¥¢‰ IìåÖU‡êÅ	žÄ§"I@äî½øÃ6jÞ-‹pÅLiþPÕ¦G¿e¦ÒÝ®nJÅ,$¶áQ]¤¡œÌ°©ËÑ¹5B#Å0à|åß«mÑ)bp¡Ïß+ÅAã ÄþuØþ6ª(Ø<ÍÅE•T›{‹«w¦ÿxlIáÍÊÅYš®@µ:"æ®c’#8˜/‰¼hÅ¡ã•ÇhE©ÝQZæ–*ƒ-Å¨½"Ê—{ýðÖ°ƒ&ƒ™çÅÌ*2Ÿ\Yä¾#¬9ùü_ÅáG=czÝJ”ß5&Åághµ'ü&põ0êK!ùÂèÅäqH¹žËÃY¨º8úwP;ÿÅä1G'®ïqxcÒLIô«&/?ÅäæüéiìÕà*Öf‹ËÑùP®ºæÆiŠìšúy¥u·0
€púÈ]Æ7ZCàÒàFÔÙ‰ äry Æ9iÆw× €ò…ŒÐ'?êFÊùmÕÆ;Ý&Bµa¼â§Æî^@ÔÐ=ûlÆ?­©(]3Ž¾‚VíÄ:K“[BÆn1¼¡BÁ¿ºò¬s½„7ÒI#
ÆrÂ>¥ÏžCUãM¢m—[¾¨ÆvÑíÓ£VûÄvxŸ+I¯9V{‚Æ‰UªÑ²¯:«TáK&ymk“hÆÛ"_ác ø\àŠ±¨ë¤}ë·ÆúSÕGëuÞnìÁ˜ÂPËÂõèÇ/Î¢«"-žˆŽæ6K âÂÚaÇN}H•oÉ5¶ãÏöÚoÊ›ÃnAõÇe‘ž’mûò˜tH¿éi¦òêÇ}¤FÞW^Ô/ô|åg â¹Æ[|Çƒ:J<`¡¾ÓQjá«¿»ÔIAw‡Çƒö;e™}¤ ¸·O‚ 6=ã',Ç‰¿z¥S2ˆäÁLËJþÎŒIàÇ­ÀÙh—ƒœ¬9aµwñß¬ßùÇÒ›
Ç²PÝœ±•Ü®"Þ	ÄhÇãL¤˜CÏÜx³Äaä`G·zÇëeh–(‚2dnI‹¾²ë.­[®È —‹k}7Qå¢Ã6 î=È‰Wõ„LÛ©ÎYÆ\:·mãYÖÈ'}{1¤ŒÑÇs~C/Y´¦È7˜øÜW#ŽÐ)”8œ4ÖiåÈ?ðQœø7¥6­‘23Û=¶Î%Èn‰ÐÍ>\÷qähÌ±ºi¯XÈã<!Æ„ÄÁ¸¶lŒeàßPÈŠ‡Å˜vâ³<a+ž…+Ž?;äÈŠó3ê.¨½È…eé³þK¯®ÈŽŒÙu§A‘x6È˜+JŒŠÙ•È–EþA6VKÉfŒ9@égÊ«”Èª¹g`Xáúêuj&ïÞe£ÏDÈ°U§³ˆì»úÚªÁõà£Ç¶È¸Æ¬H€q²dçÌp[)°i†¦
ÈÆ¯‰ü9«’Eés+ëæj£ÖÈì"ÆXL“Ö4&’´Öq8s/åÊ^É®ó45m@ø>]ÝŽ8{àVwÉ"CÏ’Sžx·)3!\(ú'âÉA;¯D1Ö^ù§Ã=ù¢©	¼ÜÀýÉNƒÙDbÿ·Óóé÷F°Ã¼ÎpÉTT"²HêSBÎJo‘pf´xÙ`ÅÉ_èªƒû58 Ð@¡3ãÜÑÉƒ!ð1rÝô>òäb‡a´ãÏ±É¥å÷äÙÝñ]+yç?ÕR]Zv¾É©Ç‡ÅáàhiPé÷'1-œŠ_É³xì¼RÕçûq
â½}Ö6™&QÉ·Ð„õÝ#ozìþýºäA/UÉÄ¦P ÏÉéÆð–,)/ZÉÇ¨ˆšmÕïê¥G}ÃhÉø“ÉÜX£Œ¨ú4ÎÃIwuYFíPPÉæ2”WÙ‡°ÉdpzË°OùÊSî>è=¢š§:1…©ÌŠK€±Ê%#GÅ¤ñ„v?gŽÈÙ´Ê/sÞL¯ó†Ç
ÒWÄ-lÚ‹ÊxædÕuëÔÜ¥Ž`÷äT'hø,Ê›4žô·»£ï+E¸¸¥Ê‹u2HZ3HD^ÞØÉ_~ñ›Êš.Á =wÄ]IE,Eq”­'ÛÊ«©ÆPû©}}ŽÄ2Ø§µÊ±ë½Eµµ°ÅxjPjÈÊºš×ÖhâáŸ‡à×È¯PÊ¾¶ÍÝ²ó§¢µ›I—·ÁÇC	UÊ¿*ÐiAõ`0ÎÝe`.çìUýÑ$ÊÄ V§pšŒLR7X hœ¨qy©ÊÑï—óžžÀ#Z©ò`–¬2úÊÝs¢È¡Ö8Ã÷âÒÏEaˆØÊóœ¼åsƒ³	öª@ùH2Ëa´H ÷˜ÑÊû!sÎñÌØ8Y»Ë–‡=EãvÈ5Õgb9
3„TÎËÅnÿeNÿe_ž¿Š£ÜCËJ’Çˆ ÕA&ëyœ3»„_j^Ë[7%eSöíš$\YMÞÄ$²SËyþz±ÎXß`‡Vä)‚ìr²øË~¥bOÇ+µq(¿S—Ã³_ÀË‚Ü¡.Ÿ'I÷áà!é¦Çh Ë[¹€9\Kf…Ýþ+¼JÛçq$Ë°¬œßì‹À¨Žï¾dÌ£+TËÎ:Úàä¥“Þ©úxXsÎy„á‡ËÐ(›<ÜbÇcŒ5~atâöÌê`]‰î©ŠÎkèý3¦îmÌú®»@”&»r\[SJYùN)Ì-Í® âZ_'=NJÌ¦xÇÌ:í±ÜQ“SÞ†õhUÖ~.HÌ[×£Ü©Ê»1¾®ã«žaÚ#Ÿ´Ìd1š=làjÈ’C	2f¾E4å Ìsö_À-6$àµ¯ë½°–˜Ìˆ”vÔ	¬…jÛ°íÞþ2B*ÉÌŠ^Á°'@1Ž„~iåc-¥ÀGÌŠ–ú7~ÒWýZG>‘A¾¼þ#™8ÌtCù•Y@Õø"ïòë˜#ƒýÌ°Mk€ÝÞªLÞÝg,>?‹	5ò©Ì¶©T0âØr6Í¾£wßÂêôÌÃ’&´‡—Ä6Å4m.³]€î*®ÌÑµÅ¾ofÖí–ÞZ¥hèÌð[OŽV§ºuo}CUú¦M]_ÌûiT¶B_=¶Rp‰û½XÌý¬¤Y‚^ë›u´OcmpäÓÍÈ¦í€AœQ‹Â$y¨cƒpÿÍ!~ê@ë£åg1£öâÿåRwÍ!ÝíÆ§?Ë‰ì“x’¥”E'×ÍzA@Ç·ñ&}%Öãñs„‚e¿»Í€ò5Î‡Ô,Ô‡0˜°“Kqˆ8éÚÍ‡ß(GÐíV•ÃjßÒºÉâ2!‡ÍšÜ)ùWŒï°ƒ‹@…‚“`;GÍMþÎHîh¤ð!q²‚yì#TdÍ´;é}¿ÂÒ=e°ÌTð5‹Íº_Nüóã=¶Sïq…{bdÑîÍÜz"šPÒ”õ	àXB(kþfÍÞb+ñ@¼ÑïMâ!k@	—nŸÍê«Ên†QK…Ý(Z#¸™·^Î:­ž$>ZYp,]Ï¦ø»¸NÎ&ë¼@ªÀ%0ûôÆØ|EÎ*Ùû°W”×BHÆípÉñ·@Î4¨îýÝ Ql¾ÅwUü6\ÚÎ@5–_Ö|®l Àq¹­Ýâ8ÒÎ\á&)A‡èÖ˜[ìu†mbÞÎsC…G_«³’H[tlÜS¶ó$Î|Ï­µncÏ_ñ×Ok)@Kæ½ÙÎˆV([¤=š1ûE	B›2F¹UÎ™-€¸Y”ÝõÓ—LÍOj,Ÿ°_ÎB
ö¾ JwéXÀ/Î±H®ë«×}ƒßSG|·Høx›£Î¿&Å³.ìE_[øüô[óõpªÎÖ|šÁ4J¤ÑœÊ±8
ýo¦”Îä°zp8@Y@ëz³@Tð¶ÐUukÎïÖ“Šüš0V@ 8¶Ç#q¨ÎôvúÙÜ‰M¨ÙÃÌº=ÀØÄrÏ 'çwL5%BûVBÁ@/@Z¿nbÏVlªN¬£ö
•¡…yTkÏÏ@wÞ°Žv¯fÆ×täòÏ¹[Ï*±Ÿ¨”[°¤-»ÀüU÷—Ï;…&Äêf*ÌŠjS#Íƒì›ôÏa€Õ÷5¶É4íi¢C;‡Ì]èÏmòš»Z¿&æIÉªCÇ?½cGœÏ˜po QÔLêNr«Ä<xUP@ç{Ïè4z¿"Iyjìp–g6;z,ÿÏÆ¡Û{êÿ-)0æû¯'>ÇÚÏÉíû)‹Jº9Ž¯¼†ÏäÁaxp½½$©Í¬ë#ÕáFÏëÙUºˆ’2ÑM_2mÈ½ÎÏðû›Gòm6ìâ…™É•8¾—±Ð¦ÏÜ8 ‘ÊòòÞ¥öFÐjå±Fþða¶1Y'¶j©ÈÐ%Vÿ#,©Rrû¬'²èE¿6Ð0«?58L¸S3”{lÿxwÎ• EÐ:{<²¡t§P®d'äÐKß~¯½½é‚Œ×57§	Ñ8cÐW‘Ë¯lÈXykã¾—EÔ)¹‹VÐ['kß®£­ŠÉW ñŠi}ùbÐlm4çÕ`Ã'üò¡#«‡TöÐƒÁùcùžŠèôv$ ûr‘ÈÐŒã]ð,¢¯)ô8VgiàQ·Ð ½¬¯‚&;ï‘ñé÷ÉøƒS§Ð¶s)7°˜bÑÞ«pÅwÁåE¥ÀÐÇ'ñáÚ-FS$Qƒ»Ÿ¡Æ¼Ðñ½¯r•§f“3é?¨|±ÑºÐZZu‡,Ø’+"jÉ8-Ñë•+R.Am^ÖQ/›ëžÑ'Sv”å•5QÕŠÏ‡«ƒÃŽÓÑ+ü3ÜûÉîÍõÓ]ômÄaÄ¯Ñ,ä=;š2Æ
f7x&CR-ŸÑCŠ\i.æ¿–|ö±k÷³=djjµÑE
¨ñQ‹Ý@—O­â^ª:Ñâ$ÑO1ÉSE;Ï6F.yòÅ³âÑVsÎ/­E« ê¹K“ŽÑXªïÏ°cì©_ÐÅ"«ó¡z]Ñií(1Û)*c†k§‚@)¬à¸øÑn'„¤Œ›%åŠ‚svpÆÍÈÑ}€ÙP×)îÝ/(vatUšGy¢?ÑÙL¸W3Üo%–gDºÎ0ÖÑ•UW×ÆÍÂ^%òÏì°i†TÓÑÉE3ÅÞ]o„l?]r÷å¥Ñï“š\‡îï|GCF{âÀ—ËÑôœ|ôEíð½‘æôDÍÜ·e‘JÑýÁ¬å>…ß¦y?BO¹*Ã®.Òü+ø‰T… ¹¥v˜Ï<Þ±ÒusÓ“ý_|Ë@¨8hrï|ÊÒ#ª’îæ‡˜§ÑB-]• .ZHÒ+ß"_cê€|3„j¾¢D…oÒ50é¦6iX¿HÄEE€°ÚçMÒK¡/.êÿ&xÕâýh9YˆÒ]]ÆFaåßjßÜ2ÂO‹ý8Òm˜b¦ ÊW.ƒ‚›ŽÜwí'‹Òs(áÍªí^úð…`™ÅÒŒ]ê
Ä½ã>M²¥,:¾?g¡Ò¯‚q¿#ÖâHÊ%jl·¼«Ò§öûoÂÓQ÷Š<6æ©T°éY÷Ò«e0nðƒ#L9¼”žÙqû±^™Ò¶&>KXÕ°ÖÖÆ§ñ.I”[Ò»3X
“Ù¯%
RæžPRõ]‰ÒÜ<ß?4–ˆ£ŠR´Ù°–Î®@ãÒí«:±tªŸÐocë‹™Ê˜Òým(ú†âºL2ÃæÔ^ëRfE Òýñ+OmäsÇ†Ÿ$Ã2Ôs&•ýÓrx´´eÎ:k{§m ç-kô¼Ó î*~ñí„—`‘ƒá>3†L7Ó&ASÈVŸ|wV€GfûšÄYÓÄ&›ÈWéÊ^/¶X5IPö£éÓÑÔ4BXM¹«ûók(ùDÂ5Óà‡a«ã¡ýTŽž×Øì‘.î…ÓçL&XcŸo iÀiv-Û¦î@Óë>6#®9—äŠCÀ»ÙBÛ‰ÓózT£c@Õ¿×L¼_±+<ÔïË\ÝNà vÔÍÎ·ÁŒ~møÔ,EdxF9³NMÆŠVßÜlŽÔ=TZhÌlêZÇÚNÞíóµˆGÔB@‹ò2¤Å#É"»v×ñžŸËUªÔLÑVEà‰sv9ÂñÎ•4(úVÔ~_zvøGÿä›ø²žzFóÔd­:[ý÷BáH˜·ÔŽþ'*ìêÔŽÈ5]ÕÕXKä—§ŠÅ·Ô‘œÄvOûMM‰WØböVRÔ›t9<ÛÂž~	"&3A»úoÔœ>„•®mææƒ€Ï#Âáx|¹ÏÔ¨h‰=é.Ÿa”òêÓ±ÝZ	Ô¯Zç}s#“òVU*`»+Ô³­¹;Ú6´OÖ(¦ ïmZËÉ8AÔóäêç¡á‡†¶L@v9>h?mÕ§a¸’!ŽŠ’—ö¹drP‹ÁAÕ,™ˆb2¬ÍÖ?– °˜„ÕYe Î‚7-Og©k np5À•¸Õj¹i ƒÒöB(:´|œÕÕn~%øíh_®y§ÇÏ‘‡(LÐÕd²>Ýt…š‡bFÏSèXÊÕ¸"è§gšX’Øï A‰ÇùH>Õ» ¡ÝE	îaq‘Yr€›O½°Õ»í¢Iâä[%UšYo%X·|—…ÕÌ< ±·è™bâçì–h‚œ»ÕÎfnA´²Œ/2’ºÆ+I—óÁÒÖÒ=f‡vÌÿÓdðCl³Ö ?P†°ºP~çB|è–\üðÖWUú¢u@zÊšwÄäº6Ö]°*´”ÑlF8Ð }P ¡Öt‹û£©ýåy¦24]/<®É^ÖÇŒÜºg[;&hÜákc›Ñö¢•ÖÈ½ãÄí-qM2ç?vu×zL¨2×!ÐçEóœ;ôìì<À¹†e…×oÂ:ÐÞGîÝucj<\Ì×«»7®D|×¿!–AýÂ×,ËÉäÞ	
m)lQÅmLÒ;K¢×<‹¤¬‰kd–² 6qïq¹Ï×UYSg;ó@°v #mk{ö×ZIHI,6È+§þ?. ŠÛMÓ*7×f÷dk$BšW2!T=…HÕº+×seKk™v\ cd…ÃûþLNùL×Œ1R–ÎÎâÂû¦5Ê·µz×F¥ƒÅ½‡öˆQÙÖ•Â—ðe×‘±½ŒÛO<ä]”¶‰xD±b×™_5±G $9wˆoŒ†Ô×œ~J5‡'#/„PV.“ë£ü#×¥âw „ßï²=ªCâž×¼|ªæ9¹W®ç1,sšÒ×ÇŽåÜrIuI”â ž¬X°ÓÁ×Ë;î¥pJBšJÁŒcØR™|ú—×Þ°kØ1SÙRñÛ·Q²Z×ë°S[ÿž-˜üëˆ¨C¬Ø¾®¶z¯ÑÅš2e¿¦Ùkj3|Ø¹Qn¬æxæj‹ÿàÎÀ_‰$Ø"ïhYøŸ¯ Å×âÇ¯SØ$³lùKÜó€áúJ@¤þ*Ëç­AØ%Ò$Ðñ¾øu(Û#p!þ„eØ'í0¥©ø7fUv`g5yGÚuØ‚î¥{·˜Â²’èÔñ×‘n='Ø–¨xãEA¨€	øl‹^œâÝØ¿qáè¥\”úX=
QxÈ ýŸØ¿ÄÑ£.>@Ú¼]B-÷<c¶Ç^œØÍxËP|âQhÄúr<UIÀú¬lØä¼K4ú±'‹kÀ€:úïÏØõÝ[äÁÀ°b|È	sŸqmÜÍ@ØùIÂƒ!IQ&ÇýálÖ(Øü’Æ¯ÛÙá
ð2»æbzÚ	@`Øÿðµ”D#\Ü›Ð•ÒÙ!æj°vD3+9G¤ø
þ&\Ù(ð—®«}wž? ÀÓÆ‚'>ÙµÇèR—ÃÙ„²ø–1Ø¤ºuÄÙMLÇû@–$¤U.°&ã*èçÙOÚ%Ûº[C±ŒÚßô‰Õ ÒÙR†;jvUÌêÄ¤ö+(¸e—ÙV£FWÏåó›‚í
r-0°µEÙYÅÛ.Oƒž&@£üwV7™Ù[®87ž9S¿½i!pg‚Ù†ÞUÍÙµÐèŽœ™9ªfo¼“Ù’^r¹2o4%“™Z(HJŽã)Ù¡(ßáþ>ß’×Bg|¬—»1.Ù­dh>±QØ¦kgo¼¢Š’—ÙÓ¨ä¦_!NŒßz/Ô6vÀÔÙóW
¾4íñ]´…øäH*ÙLÙú]óV·ÏÚÕ‡K¤j–küßÚ!¼©$Ïuºý ¹˜„ˆ+Ú»Ú&7ç!‚÷Ù%	¤•9¤@äÚ.á¦‡$.ññ&P™OpMÁÚ0Æ)ðôŽÎ@Nol‡?ÃqDÚ1ƒ	E¥×—sHUöæ~ÞgÚM*Á—‰Ð9tdð…ÂÎåÖ¥ÁÚWºM\‡}k3‹oéµuÀUÚpèò¥…†0"™ÀøÊ^†…dÚ“šÞ1é+(º¡Sn•²éÑ†ÎÚ¦ù8[:$
•]_ãn¼'¹20ÚÈÒÄÓ¡—¨‰ïó×ÝLRguâ¨ÚË ´Å¨Š©ú‚›Ã$VY£&ÚÎ8yzÝõy½,¦Ô²Ï{×ßŒÚÓ¿©ö"ƒx{Äî¢ƒ3’PzÚÚ‘ÙOC›Ÿyþ¬Û„JAiüÚæpÄ8?9ãKáÄëˆ Qñ§Úç¥Ì#èÕ@I'SÍY*À‰ëñUÚòÙ‘5¦B\ã4ZÔqŽié¼Ú÷²ÒËSØbD5s›2p‘¾ÅÚú’ùL]®ßy[§ÕÖê¥%:Ûi†Õ9ý»x-Òå2ªfÔàØÛ¥Ø
dgJ-õ7á™ÛO#ÐÛ!­îÿ¥ìZ@¾“§ZÄ×£LÛ#‹Çì ¿§·%ôºÛÀ¥ÖTwÛ04»vM«¤ëÁãU+
»ùÛV(¯Íßû’ÞŸŽÅoñjÛmë[ \œšBþ¸,QñÏ&Û©i‹Ã†#ƒW¤m‡IÊc§ŸÛ±µ„R1^µutÀÃ
EKñ4Û²¢+¬{M8=}Wuö–Ì…ßNÛ»XìJ–7ñvp{&Úí*v$ÛÂ"Ÿ0iIÙÜ¿¿à—KM™òŽÜ '~÷)qL—Ë0Ädý |ÁÜÎL4¤”$îNw»¨Z
ÜÔšô†2áÓúj"í:ÀËÜ&»pØ%isLåÈ"H¢3MÜ4 Ú—¾Íß°ŽIé7pÌbÜ@"ÚÊZ§^Û{¾®|€ZÒ½ÂÜFô®ß0Eü|´|#ü½) BëWÜW‡â<ÉÊfJÕœ¤êTzÿ…ï{Üg™€ZRÐa±ÓªSÓkÂ«²Üjya·¹m5º%‚G' g‰Ø…ÜŸGÈ£}Â;˜bVd-±qÜc4µXí÷ÿY|]¾ƒÜŸ±P	‘Üt—ôŠ;fì†æ’¤Ü«:Š_4/qËL­Š‹ÛørûÜ¿¶ìÐXx_Ê¢ý›çß_–Uë	ÜýÓÈ"ïbÔör7ûop~1 ÜþV6êï¢k :yïã—ÑÜþZŽ¾9®ŸÂì8ÝgÀq’ÙÝjiÎXÎÈy‚RÒ±AŽŒð<ÝŒòÔñœðÉ ¿ÈˆH«°^%ãÝ¥ºwè´èÇ þdlÍO±˜_ÙÝ¯Ç!=€õlò÷9á©&fÎÛÝÆïí=èoT””»žX*2õ:6ÝÑEËL«]÷ú\îß‚PZûÝÑŒstAèkô@}ÖÿUÏ»÷Ýôß›ÑL|Û.TŒ!ÅžÒ©ëìÝù½ñèˆ®‹ØÁVþÉË”;“ÞpÝqÑú}&H¾’ÕÏµÜ»Ú:Þ>wÓãìæé£T|<æåÈÞTGvùÂ™»>2qo·¹oš.>ýÞjºkÞ	¸6<ðÀsQ4ß^ZÞu§8C2N¿”&wUº7¼V6Þxw7†TÝ¤ö¦OÝ4&Çq‘™ÞíðiUv£Œßü‚­õø¡ð×à[Þîœ®ÉG`Þë×ŽTI8flÞ÷/™cÉ¹±6?aïÎþÙßšwæ-nÈÒ YêcID—wß:$= C=‡7Í¿ ã¬:3ßCh2 )v˜LçÓÞLÍ‡ßL›2jõoNj…iûªçCíÖžß`¡çöYæÞ^\'Eºß¼üóößbíšÝ™—QKšP5)­—NÜÌQíßodñÞJY†'ÆÃ¦5qø³«ßšÚ! ‡ÎXþuÎ> Ë)­ß…¡¯-Ìmœ³£'²¼$¦ß•Ò~:KVÏæx@ÝVóíß– ý"œïoÀ+…tKÊè*ÞßßÀ„¥&ug×8YƒUƒZ¼ßÃAj·7J4£\WßÉÖWÖ=U·ÎôÊ×=ðætßËä$á­•ô¥3?ú2Ë*MÃ³ÜßØà½j‡àå4®xRs¦ÑXë;ßè¨÷öo¤µKcgM©0sº“Çrßí0ªìä˜…J&~n²äó…<äà
‹aýíYb¸ÆëHÉªN‘<Ôàô¶žXÅ¿<Bvy­ Ü:á¢æàdäY×Çá]}J¼:8%‚N‡¯àDR8î9»Ç„OSŒ>¼¸k˜àE7M¹mE¬éŒYûfI.IÛ‰”àF†-l©a·²Ã(1°øÁD¿0*sà]ž6•Âó‡›´×¤c©é°,àeC›˜\oˆO1IhºgŽ àm[÷îÿŸ"Kì${˜u"pßQàtdJŸìo-¸Ÿ'Ä|·Ú‹Þ2´àŒ$È¬'o6ÏÄ@l”ùáwà±†ÊX3“Râ3ù#Èïàà·IéÕ÷ó*}YÃW$l’}ôàÏp0zÿ+âOÔ¢‰ lJÐ¶ðþÅàè§É˜š*S·Ç¬ÉÐHA—ž…Màët"¹œ¦µ¸—3EuA[Ž {àý–aÕ"ã×®—ç«–Íµ„á8¼˜ÂQÌ®HR®kÔÞÊUá?Á¥gÀHD>w¹ú W{ú¨ áBó,öQ×˜Q­Di_ê6Y>áE«M›Yfîyd£·$¯UeÊášƒB™vË*Bð~U”oýüÃâxá£fz3{PH*9´&Ýs…O‡^á´ïßÁ¤m¦wÆ×€<áÑ"4dØ"Îö\¿R¯k¿¬¬MÓáÜ}ûö&,õâ¥öÖ7è˜lhC âÔ1¬qWTù)ýŸª‰ˆ$ngá|âmö”fèvÎ_ènKíj;p(â+ì¾…d™&]çÐÒ‹§¶ÂÊOâ3ö{cÎ•~fÉýsMì
Naøâ?T~““ç%×
H÷¥ÄÝ-ôâUÅK*yòd.ª£Œ‹R™DTVâzÌE5û’ž•îìè#VÏWã—â…ñ,ú…h‡eŠMÓÍ0³?xâˆo²Nÿí~Æ_v;`xA8ânÿ<ü`5[†éÀÆn:+sâ—,'› Ô<º?ÞÆ–yŒ}5fâ£0™2nÁgÝÇj²ŽE=×w¬»â·PÂ/ïGhØ„µ¥þXÊâ·TŽÊ8$­?dŸ
Ž2†Dù`,”âÈ?ÝAo"Ý»mÎQcQ"#8ÄâÕ`$!7iÞŽ]<@‡æœœþQâäcd=>4 /`äï:íæ¤FèÀãÇ;÷Ek1ÑoÂ'ë*'?k&Jã!òF.Žmn3T\vf©ÆÃ
KžãAaÇUš4œ?)Ù']––¨€™ãg \ýF3ç¿ù• ,N,ããyœ×FE-ÊLVj{¤øõã{”>.ÿÅE$¾Ð¯‡¿äÈY%÷ã’‚Ûï„Ëâ©Àe84P¾ãÄ‡ÆÙÁEºÔï"u´ú£>˜ãÖ«Ü²T–ý¨›ùµäEÁñ¨÷!%ãÚÊis×ÅòÚŒgKÎ	>%RÞãê`¹9„üjNñZJè–u7OªØãð»â’\†¹P.â¾S«ååÓä ÁÙ^¨¿‡Y*c?Ä½ƒ<ûŒÃäúý+z×S÷·ÍhÖWa1á•¯ä‹£=®6¶of[Å&
î’.¿ºäŸšFXœß{V¼G¬`š™ÖHØ
áä¡Í3µšaU0¡œZM™BR¸×vä¬¸HyoEÈÇ¼¥.¼X¦´oäÈ¬ÍPYV¦˜iýòŠ»ÀôÅ:äà ‰Hø¸½ù´Ès,Í
öµÇVäíùµŒT?oA3LC²¼˜í}AåfÓ´Œìˆµp‘q£…:ÖöåIy€µwbÏd
^‘™8^\å ‡ˆ ðIoë<¹ÅÑÏçÛoå`<<Ÿw]=cØÑ¬±
æH0ÒHåcš™®ö'aq… Ã.³Ê>uá·år6x«¦èO7Ã‹@Ü¬¬¢Öåxj×ÿ¤sBIÉ›íâ2:ML»Q«å§Ð*­–+0Z³4LIÌ
…
‹å³Â÷F@gD¼ÐƒFIÚŽºåÄêq1Á¡'2æ˜+E´ÖŽ{uóNåÙnÉÓ¹bÖ–	ŠG‰–ÃènÃåúcè-#4hÞâ¥š,2yC'æ ¨j?áìÙ¦­‘1ñ•ær›zÀY ±Í‚tèï[°fÍPæPú·_cÀ@ëU‹äbÙ¥ên4æQ$ì1]×YÂât|é´ñVæ\:uÑa2uX¨Û1N¶è•ò8 üæd¿às'v›ŽÖè·é¶=Fp%æfF|a¯JUB­Oiûu½J¶µæ„	äG²¼Å†ìiú¥7=Nâƒæ?‹8AšvÖŸT¯Z:ù yæœ4DM-F2HY“ýöM_¥‰ÃæK¢ášë:C}îÔ^yoˆÎ®o”æ£˜1½àº¶tìW Œ@znåªïæ« )"†maï­æ<’úB)¦×æµyM/0?|ÜYÛ[žWæÎ2øoÀr®µÙ+Œ³ŠÁ«´}ÙoæÖ€”ôÖÜÿŒJ‘æ †}ÆçobÀ©òÛ/}®@/–²“çî³é:àý~BœSu«çÍê¡UÓ­fÊþLÕ80ðZîç0DóíH°¶ü"§-Á…€ç6NvB{)yÓÎ]YX›U^Qç8€Ï™9VÅÚš™ãÓ•}ú˜çIêó° ^\4Šƒƒ¹o¯âÚÄHçKÆ{¤w˜S/¼ÏÖ]$I¯çaHÙCvØÐ{hC¨ÆoçeãvwD&-Œà§íÖæ
ÃMîªçpFf	jmAð8¢ˆ°ÃŽçwÎ¸‡W ®Bê—Ùø¤<iì€Àç€}Ý‹Y-oñ*Åa­èWfOüç"êS C¦³6Ð×o"†]ÆçžXÝƒ% »a°Êf5„Žz-°çÊ;ËÛ£ha@‘ÇLä›ä‰‡çþËTå••	#çlK”ohIÇ£%è	&ye9ëˆrr>À7`«Ä>¾_è>‹'UKŠïþï5 U¥X'3è!Ž%Ç¿²øéë2ùçQó°çáIªè#wx)¤±[ã›¿öè-ŽjGè%ä-[¨E£OÚ¨à³gVWä$è1V|ö¿òÜ7¬9©x,Û]‡‰èI*‰8ÅAÚ-ÞýSv
õ2¸‚èRõ¸Á”æ8Ÿoš¸6¥HË
”ètwLÌxy±ûl¡E©Ÿ>Ì ¸ºûè€FŠ×J6“OÑ…õ~.†$üA…‡è†¯gvÅxÐäå/ÐÓ‘Ræ2Íoè ·ªV×¼Rÿå8fÕc<2\è¸B<^b¥µªQY”ï0"ÌîèÓæ:
-ÿ/tøÍËÈ®¬§7fèÚ;Ý:¬ôÁ1]~Ár#®|èçrÓ’•·šÌ32˜ÃÙÔœg0èè¥Ï‰­ÿ¼œ9^@åÞ!.éJˆàû£ ËŒ2wÓ2¤¾>é4=Sçÿ$ãç~+—RÂ¯nVé5…˜)™ð8°qKƒ3$éGeö¦ožß,ÿ%ÄSöV«oéO-RKÓq‡h§½ÜÈ éYxŒ±´PN}Ê‰ZŽï÷é\¨‹Áh·–×wP8¹C6ˆ éŠéžêæîÒæ®Ý¿•ßÓdúé•+‚›¤@¥·MŠšÍ9ñÚ?é™àŠ'y´—ó!syNápg\úËé¡*„kú/¸Ãâ?+ZZoaÊYé±;;Æõ^+>áðüÙÌÈÞM÷Qé¿k}sïÀñ6O×àQÍÛÂ:péÔ=ÔÁm”ÌÙ-¸
,ðÁèÞéò¾ñÒeîúâÓòWñƒ³îPêXrX˜äƒÝp‚3ˆâÈÑCÞýê	šû~ŒÕlÐ•}sY°ÕKlêŽï0LŽ­}ò¹lý#Çdê^…óVsÃFÆ†Ý²òS8¶eê+M–Cgwr_K»RlÁ`tç\ê,Æž—71¨¯í–|È2!9ÝÖ êNÛ³ú3õE¸cF5ýqíß¬êl€M­qW:JMÑÐB¸IEËiês)Ašú¡Ð|! öJ´›_ê[>³®ÿ«ìŸ3RQÑŸùY}jê–÷ö‘*Â‰æ 
òŽÃ`iÉê¿>*ïVþ¢ËAÂ}Ã;Vg=‘ñµêÅm­•ÇëFOyÝ{Á¼&;ËêÉù· ÿ-òâêï¸ünÃuOdë$o}TDÎ¡òï[»>õ°NëIÊÚ”¾Lþw¬–+4tzõëXõH4/G}ÚU\¹9³æ¥`’ië]m¿’¯A® ÖçRCÖ+ÛëðÑP0ë)²¿“Mÿ¤Ó7ë—`ÝæŒsNó!%oTO7¶ë©ÿÛÎ¢Nƒ8•`3)P	HÄë­ât²=Ds¤5¾h‘D[·t´Pë¹r²¶~^x+síºWOf^ô}«-ëÉ`®t¼.»¿®n®QÞA¨ypiëÍ- ®˜‹ŠâýykH¾fäÛ“£ëÐÒzíšK&ãç¯*†iF®s«ýþëè–TÅé!3Ç0]K;>í9c<ëì™uÚ7	jØ	óÃoÁIÏ¢0	ëò\9•”ÝW®å–@îROÁÀ1ëþáœŒwy¶ÿ´ø5oÑì"H³NáAg• «ÊÎª²áìZ@ãóïf´ªí`y9d­)ìc«3è(R:q ¶Áþ/¯´‹-þÀì˜7¹hêÍôÃÏÅ£nl«Aãš_ìŸÍjÿÆ H#Pµž\…ykˆâì¨‘žéˆ¦~•nREPˆ|îƒûìÃ0×²×bú^‡F¢hºÔŒ¬ìç"—Úù"	UãµÍ~Jfµv6ìîÔ*Ô¦@Ž¯»ÂX&ÉÌ¯Nù«ì÷äN b2‘Ãí4ÅN W¤Ìí8HÜÜb57jr¡*,ö@4íCÃÈV‹Gã@êýÞ|+?zUMíK«G¼“×$gÐ‚jOš³çíZÕÄ‰s.Õ{©2`cÚ¤ˆäí_»‚M$àòîÃû©ãç<R< öíe„	é)ßÐèw˜jCòß¥1ú™ífSÖñÕE‚G'<â
‡éílUÅ÷‚žë	R2\ºŠy­Þôí|cg¾BxØ;UÝ	ÆRÐ«ßí†—ªíŒÁ:¸>­%KZ˜í”G_,gvz²;\ÎXñdí•8b*Æüž ”Ýhü;*´dw¹íºh7ñ‡)L’XjÅ¾"¯òI÷í»O¬¼Ùó”«öÏÄš`¶ÂVíÁµ™‚«ÿü=Áƒ:UÇ
ÓŠ1{íÅÕcµ
G—Íç}0ÿsÃíÎÞáîÓ>G>8Õ99å'ÆpíÒõ¦ý¿Aj+o­IL´	íÖ×Z–_Z°µùSÕ“`$Ü6Âíð™Zf‹s©dŠÏBqXcrî	lpDX`@|»`6t N¯õîê4Œ€V’¦"ê@Z`©º2›î êt³/x½÷[~8‰–j)Ðî+=\¯|—gñ`ï³mh	êî<|LÏJ2Ãž²‚D`;$à«÷îE)[@tû\†È²êŽ žhîfvº*ÐñþYZkc]ïÚ¥IùîjPÔyßÛ&måDHŒû$„„î9pnüTrêé 	#ÜuÒîÂZ¼Ùß|CG–’¹ýÎ¥îÇcK»á`L«GôoD¤Õ$ CîÕp¤™Óªº)èB½ä¢šhîß6}3qõV €©«™¸cf]Ênîße‘Ë›}£V¬K03>’WÇaï*zŠ¢gj‡ŒZ=Šî˜á}ÇïC0è|Å_äÒßš iæ*º~"ìï"!_§WM[Ô4±mô cP»yï8òor±T¹o:Ö·4èXyï@éƒO¿Ç	’®ßÃ‡0{¢LæïM ÅÁfY{æ“÷Ðˆ¥žü!<ŸïƒwI HK^ßpòãW$ùEˆbï£w]íÆÌñpäúÎN9]Cï·Xf…ø =ïEaÌ+}ŽNRz¥ïØn£×¼[ÄÜ™»Æg
Ô¼w†ïí€‚ƒŽgöŽÚ†B~:ÀïñØ^-ƒauð[H¦„¤¢è¸ð	^[7¤ä­¼n0–Dý(†ð*x¤Y›O¾éÊ‚ûˆ'6Å¦{¸ð+èýûƒFÄ‚ÄD,óÝ’Œn®fðDg[•€¼¤Ëg½eQ½*WüðE¨pa)ÝüÜEƒ¥7f°ðQB*PqàðHÇh¿Ù-ðkZUðe2ÕÖ¨Q‡^œeK~0ù÷ßbðlƒ +¯è­fÜ\7<¹NÏlðuˆBÍKNsê<ã•L1ØW›¢Àòðu¨¾bõà•©°Á4ÈNä]ð‰\ë^5Ho‘Ž	†³›wÿÖð®/*(q/Å9+ëZOÐ”Œì]ùð¯u)Bû6öCFc»|æHÑ°ð±®›©c(ã× ôc}þÄ@Qð¿Ùäºßž²ùGË<gGè†®à#ðÁ¨„¹:·Ol[E#§ßÅ/©Q¦1ðéVù(nå[¢Â6Ì|s©°ˆðë‰QÈžU€§ˆ?Ý RËP:ñRí¡Í¥Î`»&4¼ŒÚô¾ˆDY¯ñmÙW5w-7<ç»äÙ¸…’bôñwëE×þ:pØvuíB·É/I`é•ñ”ýA-3AÝQ.sµ9Qä]·èûcñ³ôÔõ<”
ÉÍ]Jðï¾v—áñ·÷{Æ-ºÍ~oiATñ’·¿ñ¹”ÐÞÓ~Ëð`3æFÍ žP‚ñÂ€Pñ¼úè¿2¿gB©vºEñâì¹1[½Àƒ hJØê†2Ìò'<(Ý'y•"k«Ç6ˆwŒàªòH
$eÊ•h–ÆS£"½ßv6òHü0EIÆ‰1¦Ýš*$Îy”´ö»òdpŠÃ5ƒ²qrx;0Ÿ ¶ò‘f96ÛmÀ÷QxIóËgY@NÓò§ï¥ñ•à¾Ç3CŒq_“€³ÔêòÇFWGçQ]šzá—’dUòÌ”'PEJÌ
èú! “¨ãðiòõ¯¾u1B
4ÐX·£XŽ_òý¼kÁÂ;…ø•ZàÍã#”iñ¶ó Yl£èö¤|hl+l7œù)]ó#ëOg2IÛ¹c²ƒmRe*ó5ï¿Q’nWWÑ:F=DjÅó@Ï\æ´PÊ ;C®!ÿ[Žþ‡óaÁ\3)Ò.+ûôÃ¿UžOóf}<»ù)¬<ÀÓRŸÃá®Ìó ÛŽ‡¨(¾Ù`Qº˜ó’þ(Ib¼¡ÖÙÊÙžÚ?óÍs4ŠâÉ6Òô'ÌÃ¥IË‡VRóäÐíRK.ÎÈ¡T$†j°­Ná+óó)ùu‹0UŸl¾®ò-ˆ'“ÓÈôiFé*ÆËI%ò©Eô&±Ï÷Édäh$ü™üj®¦ë5âô1‡þˆL$æUL7Ægy
ôZÈã“>(œÀ,Œq¡G)ÊoCôx’Éáp´šþyZ5~Ê”qq‡ô€oh¥OfKS=:&´ á6ÐMô‰kXZºi|ÍWþìÃ|ô¬4ž=¤Ùþ±Í.^èÖôÐoôÜ½4`v|¹qÎ{wÄ¸ôàÝ{0,9f'ÉúÝ>Ýå]3WôèÑM¨-€z°ƒT|ŒìkÚ¹¢uôóý.¤¸xþ8ý4	ótÞØÕ³JLõVßN=K«¥¬-c°×5Ë¬3!õgAó>Ó§É5Z61áuàÌ+õµ…U“¸JyÍŸH2.p/à¾‹·õ.-ÿÍrMr7ÉêÞÔ‹D*rÔUõP5=ù(PÉÛÌ“¢íÇ5õPŽˆ,3/;?@Ëu×êýJNõw×Z¢1:"øÁ¢þ”s–RZËõyŠT	ÍYÏpŽq0¹Âö²õyªJ#³8í¾)Œ˜»ªÚGHG¸õÅ½Ì¤²ê‰9£g¹i¯y"½öÔó<ÖýQœàÃT÷&Cæ/ì¨8ö*<AÍËÉ¤y`IJU	Ä¬ö-s2/áŒ½ƒÿsX–J³÷¹+ö5°ø7Õ{i	1•¦õx&å
­öö7â·ÚWùpuÆ#Œ´ä»áxÌö9Ò>?yáŸ÷hMEˆSÇ£‡1ö–¿à¹Æ¹ù:¢¥Z‡Àv{€@öš©TÔ½R§!Â†z›x9cÔ~ëö¢ÌgY<9,¨dDî  \ÆÀ3Mö¨ tES«§yd˜øî¶õ»Ž[	ö·šÒ·ä¡ê§€BàÂpÈý÷=öë…ü]>§ã/\K®}ãâÌ€WŸ¦÷	$kò±j£"Êt,9e¦¥•u÷—O¿yJ’GQ›eÔ†æä¦×÷ßßõ•Âêuè&•ê>`&¤÷÷)é>,í‡ê #Œr¿‘Ô3÷+é½ò„Ü “Gò“ „%îÕ	û÷JÁ¸A°ªç9iÞºíDðì°=º÷V:Ó$mõ!~Ý~Ëô¼uÀ»*c÷t ÚaË6õ(^´Çþ€Ý»Ù³÷•]€‡¼í¢y?[ƒá,I#÷ë„„hcÐß·ï# Õà©h÷†( 1²‹]Òˆ7òÔRæÉ÷‰,º¼¦%z°?7á ¸}­ØšUû÷“ÐuLml˜võòq‚M|®÷j÷žñwYñVaqÑaÿd¢¦}¹X÷žÆaŽ4ÓyÎ¬¸7ùeãKY÷¬ß7ªò”ö
œÏ)Ã8õÄ¬÷½µ§rM‹×Æ¿ò&ËKËAC÷Å¥fè^É÷€E¤DÛP .ƒ)÷Ì6™iiÅÅ”æŒá±ºï	2-#P÷ù¸Hå¼}VÏÅvcOéëÕå¬ø<Dÿ€ë#ûTJã‹äQ$N‹øRâYÉŠp…	»a'Ë´ev£ÂçøhªL»í1¬ÕÿžK¸.ÔŸøn[Ý²T ö¨ËùÿˆEÂ.bsøoªª*ó½áˆÜ‰ˆ¾ÀTÒ8ø‚w„1åyg¨dNxŠFá”¯Ó–ø„=~??’K‡Ý»õÿ…s,¤4|ø¾KÒŸf´ãóKdÝŽ¤€guÙ}ø¾Œ‹ù
Lz#6p€9iiFpøÏÈ¦ºE]ú\‘¥¹¾VÎ¬VH—¢øÏáÈ–—Òàc£tžÆÖ(7Yœø×TÝjŸœ!I×Ýâéî­¯nøÞ8<eÙ]î-~Ý9ž¡ÎÛ9êòøá²L” %ëæŽE«É#Î5™øæZÓ
-Á*<qÔš*iœ^ZˆùùwWéT>‰Äß-_6T9ù&UšÍëtÜ]É°ä°‡
%ùKÀ¯ g+þt@"ÈÆ“¬­\SùU¹žQ =øÔ ì	ý<]7ýxùmóÿ©57ŽãF&cçÃžÍ$ù•\„ç7VÝ¥zö—üUtù¶Â¸ŽŸ1ñªíY·%¬›ùÉI–J0b×ñúßI(-ä¾ùÓ[ðaôG¢Ò2#I/ÊŠk†ùëïâ{– mvÕ2©üè†dùëû”^$2äþdBÃæDuqÛyùú+ñ«û/Ë–ÓªŒ=è:sú+‘Út9·v§ë¯ž+#¬sÀ'ú?8„n4¦º˜]¨Ûœ5“ª½úI$“lJYH
ð·n#H¹F8™sœúN“A=¢6Ó]¨¢RÖ½E‚Ž	cúX™æm(þTÕ•µ×=v×õ½£úYÁŒÕ:¼ â`\1'*ª×nú\³@hümûÈ5ý‰Ð¸€—À¯úx”ùä…†ô4 È@ÄùQG÷cÓú|¹ x×K,ò·rñ³µMì‰Åú—PšrP°Eò¸:û\¥¯uôú«;1)îò\¼½´–Z÷þú ú¹ÙÜIˆòajiŽ¸À·)u5ñúÛ á~q¶Ì&2ÄÂb9jµX{úïU ÓÀ®ÄîšüQ†ñ”ž¬éûÕö/^xÁú˜r1*fûîã×+ë5ª&‰9åæÞ¿Es·û5[#9Ìc¡jÖè‚äjátiûFÛwÿeA.¼Uhÿ6ªZ-ÐƒLûJÍµ;ñ`™-ÙûÄ™Dw€ƒ¿DûNBüŒYÖb\s²±!Ùûc½tò­µ¬5WçÌ>Î”ô0û†·…B+¿‹	’M´ÅŽ ÃdûŽ+lFÎ×oá¬¢§filYK¹ûÐQbôÎ2@Nó©\e2œWÁGûÒ~ìB,ðŒu¯ïe¯‘gŠsûì‡£[;y<*²)Ñ¶DÔß%©«ûñæÂA´’ðo9f—IH´´íûóŠµmËBë†‚C§|-IüÞûø`›p¶«çÃ¿aáRÉ ”QÛûÿZþç+ k!"ŽPÉ7RõkR×ü2•s¨æ¾Ë<Ül^ü(ÍÄ<‹±acošd‚WšÈòÌ;ü2.Øt§Æ!»½`)*à[ÊüRR1/0HØ×gÅ ÐÅlVcÙüX;XÚ`€ÛÙF%pâæÆm¹âüX™kÑƒB/K†‰¯_k‡‚äƒŸü_¢E‚6W§VOtJ•x}üpqL3’¢/Ë+õí–ÅJ«OH°ü~+&áÌàÒoc{`ÿíŒ¹Swüƒ c[}l®Ð–Lp©x©å¸üsCþë™(®œ¤Ü¤Nc¯Ûd™©ü›ü{éGr8G”Íú2ë—þ¯~ÓüÈ¨‰ÈÜk-‹W7fÖîà‡£8íüÌvHA^žŽÒîŒ+l8]®J£üé„u‡H©LhDU7µ±-Õ†ý& †c¬ÅèÏ\lû{•ý%V™´{o__È¼0ïLùbÑäøý/Äx:.²™²xúÅ˜yäŸ‹ýX+ ìÄ´`”Þæ“Ü©êsIýY£úÐý«ì¯RDÄ"Ÿ:sýsÁ+…ƒÓÓä1%_±ôçõãõýœˆ’öVÃ¨Öm´½Ëc†UýÖPÄy³³W{‡¸*½,?ï:WýÜ‹²)š6;xgÓá—m½,ýàœx» ŒþE¸übsEZmÎhýáøÏ±Bû­Ü.È1”ëÝôøi&þiS1\ŠnWÞä6ðÎ{Ÿ[	þ‡šðE%ná±DÞ”dWR˜á±þ…ñÌ…ˆEÄí$[OAY1‰Èþž¢Šè#rÆ*æPðÏ¸Efþ£e›aºp©Hé¿F'	Qƒ¡÷5þ¤“â¤VE}BBà-Eÿ!þñ@³"é	ðƒ4n»f‚	¸½þþÛ¨HWŒƒÌïË›à·é‘4ÿºîµòe–±=š—HœñGÿ ÈQ!±vég¹²‘¦ºÂ«+.õ×ÿ6ÜÉòÁñÕ'x–Ü¢©šµÿ=ç¥¥ß€ÂTW)T€È(Ø—³ÿhô=¼CÀl£Iµ“Ði>ïš:äÿqeeöî9ZÑH(Ô,öÕHþž–ÿ›oYµtý¢J°¯CÀÌmŸÿ•—Ò•{c›“ôT@á;qhzÿ¶©üE»pªDXvuçÃ*tÿÉp]oÇÔòž^„½nbê…ÿÊx:ÜvøÔ·H#¨§”ÜP¼{BW«NŽ+÷ˆB¦=~Š0Vßõ×éê?î9ð¶i0ó² P¿mƒ`›Pø¾´9ÌÖ•0wÈ€ljAáDîÜÙ;ß” ã…Ç ~?ùÿ¤«©;ÁDãæuJt(q°>-ð[£ÒèßöP{Êò Çî7;jÆ?Æ$íþ?RþîÆÆç«‚»`¡Ã';¢R`z¾zã8²úEE~uøÃ„Ò|ˆð^+¥óGWÛª
Òk:¯ëã•»»ºzxûÕÝ\Ø òc°B$GÎ?ÞÅu£ßußÿ(„²ÎÇ±‹wMÆ3RWRBé|UDÚ¨Ér;Í×>Š¯'æ½ekÛ [{AâoÙ:[QÇfy³¥¥~5Â¹†»9Æñ—ä†^hSGì¦oKr¢S¢ÖÊz0…å%Ké	´¾|²à™Afxð’XýÁH½f–þ†^UËø‰"Üî¬[IÕº;D«5(öV0þÃc$Y);«ƒ¶aFJäwÑ´h~ô®@yÂÐâ8I
À5 û˜Xÿ}ÖteÛû½ûx^.q‚Ë®¡A¼û*þ?›-â:<ƒ´aî¢U³ÖÒoº|S(µHšP$Û¸Ü~¢,¬#Oö§fe+òŸL%Xi1¯ßB>Wa_§hdö86W”ÔtÊú£äôÖ<bY† ¿±ÇÄºBâ7Lž%VdæÇtÑ)­°îõhv:wƒÂ8âžï%H[)¬'¶
®\ƒÄš)¾
]í¢:aÿŸýÄúO®mYìá³MÆÜSl^µ‹þ ‡«ô¯y°zx8ñp^a,ÿ8x› ˆlkÍóÙªfÒcŽ³’ØpH:R½D­Pî›¨ä"ÖÚü‹Ô;>8Ñi·K6-Ìb€iAr‘•u<F
z¿š{OŸ×U¼Ÿ‘%,!qYÿ›=¶^"ökFKbÐ‚Â£_*ä¸_`ÏbzáÕ°ÈW4v•mÃ«3X¹"rI1Ãu©¿­×ò¢á’ñàÆœÝãSwæ-Ê%¼’˜d‹rjF»ÒÜ‡-z‰Ñ/J:¼TÎ¨á_¯ˆ«Ã6ü?Í‹vE¦ä³€ËÁ9S¯3á¶¡¦] —wZ.hñÅÚ"°{wÝÊônˆw”ÛÃÖ¹–Œx¥“p¥Ø¸5!4A>êL"%Ú“Uç0
ðŒM\BÚ1Z¯Ö×À’jÂAêÜ›½sIÒ­b4ëã,‘­
Çž8­'ÕeÐ{~èdX›Æ%­º`mŒé»qC˜;PsÙƒOt¨4ƒñ§Oí]¿,‹™a¯Cghåµ’gª4.O]GC0Î}?ne‡—ça>Å””~’2Z*7Áï èg¸QlBªÄI —ãJ±+a{VÚxxìÌyON€Wiœî>ijý Ûëmÿ2MSp
F6¯$Ëãýâ™xu*‰=¨ýC% ¶ã¥O¢Ì“IÇ¹q«œæîx;#9ñ8š’•;~*ñq Ci¥íëÆM6LIå´£•ð	Ìî­YóºY·í§º”~	pJñß@PÄd¶K=°À‚ÙÚ 4œf…<Ç@éÊ:·¥Œ°šégÒÍ‘;Û8iíß¬öZÅ®¨PDV¦MçX“?‰ï]Žñ1Y6Þë‘£ìñ,í8ÎíQ?	.VCÆzÏ8rÄäybÚûÊ•ß¤ónQøžœEðÂÇãw]Æ¸øfáð‡ÒÃã‡Ûy¥ÞCêô`NRKlöúÜvä¥ÌE¸àw¸—mŸ…¤`¼³ÑúbšÇ‡7¯œ#õ?Ñ7ž†´ªj…iÙ„Œ¾Rd‘tEr	‘8Nœ2¼Ëøaîâîíéœ6/‘!J–h*Q”» (Ö	&LÖ¾m¼“ÿ^>Þ¹\œS<87ÊúNaÙÜ§§§V[‹[D|¯ŒLÑìÞw2Ä^¢|t¤tãéio¦y,Ìç\‰@ô.Íê™n˜DÎ³ÈCë^ešZÑÿÏhæ&U^ê²Ó>;­ÔK7Õþ²Öh¡Õã¿;ÓMÄ–ÁkÄ_Ø°¿¯Ñ½’_©•”QçÄë¶>÷bÓËM]„î^ßZœ­Š;PjáhP])ÈŒ©:²D>&ßÇ£P‘ÉJï®ÕºîItä¶š­Ì$S™¡D9>-·:¹R¹ñýl•_«š°,`øšfuÍÓµ‹Ì˜Y¦åWê#Y L”üþt§#hì6vÔÃÉu:ü¿†×Ø¶Õ1R_‰|„·†)]%9Ž,Ü˜ÙÒ‚h"u¶_E,Ú2Ì~\û#‘fÊé‰ß‚äÏ§¤Føûc˜ÒH3RôÏ¢©~©Ã¢ü$eè Ï¬°*©ÛÎ‚pŸºŒO`þX"TŽ•rC'ñè¶~czi§(8³÷/ãIÓßø…§#ž•Bü©GXà;ý4QJÏÇuÔP¿hbòÕÙ2eQ=A•ÁBôŽWæK"å²~—¹ÃÈÂž¥¶pÍ“’î³Ô‰%ÝPT,TpLì‡ûâRhÿ‡€vÇ»¬¿¤6ö=Šlï«Éž·qwËè´®uèÍ_xšã	å?«VS™Õ]‚º4xPÜ°Ð=6Á·n^ÀOwhr]×¬ÉÿýÄ4ÆJ•¤Õ7•s^îzé®'iÞÖæ}(3•·»[±þŠ$ƒ ± Ù+’1j„ÚsH¥ëDÉ=U3Ï‰K	6²µìk5´*¨.²«÷¶ª0!-ä/Ð¥£9“cªdîÚò^#2ì¼“(5H™ËAÌ@¨;#Ígìõ8WÆëg”e•T ˆ¿»¼/»ctM#û: 7ó‰´)L•‡Ñü²³|¿JDêb®ÜPv õ¯Bè£p6‘”ª'eàf‡üRpÎúd
<Ž2Owäcá56:%Ø
T·”\<ð•¶èßèˆ„5­”©ó2ÑÉ·)|Ÿõ3|t—ï>9•gèeËÔÜC¾
Ð}Øô»±`	ÆØ`­úÊOQ×T¥'4tWC}1õwKe€r¸2Ö+Ìß÷_´Ä8 ŽºŽÒôVôƒ¿ÇÞwÇ.ÃÞÌ[ Å%]rb5úgºLÄN;£¬7ç•¸¸È“™‰%ƒ×ÀèïS'	•Õ²è%c¸àH:é &™x+ü%Éßo{sÆ¸[ú v—¼,5få),‹JG¦9±C¡Ü_Î]ÔLe5‰Õe;óòJ˜Yr¿ú0•.Ìs´O
ZÊFFêï˜…s˜³ŒûHys‚]ƒU¶h‹Þ‹q£‹‹ž¦}wH!?µA·ÚKÿ>q‘9ÃjŒ¦þì¢P¹¼9ÆüSUjîÎÑ)“°5v} •«œ(Q‡@½õì×Ñ>÷×–©!Â`û:Éå*Û7D-ˆ!
—@Eu6½óoåþMi{_°LœîÁà¥6¦£5øÂ¤ÖÆµ}s»§žGfaúÉ‡IˆG€Luo,•d}kÒPjgþ“>NÑm!­Kø±(^I„zBmw²Ûè¶Œ¯”ãÉ½Þ§;Ýò=ß›i¶”ß°¥Qý“UPm ¿@`ÓÃï›¼`)¸•›É ×¦mÀËNb¤€ë ÌTð7\Oñeç±{¤sFé€Ï£ù_ÁQš±HgOêrö/ú±ývT²]n/—Ÿa~BÇµ1»ƒ¯@üÝ>õ‡=”’ø©œ‰“’ù­½~ÞyVQ˜”†q ãÿ“û®•B"v{{wJR¤ŽBDG}-¸¨ç|ˆ5×/
&²Œ<!¬)JP„o}ñâÜjWMfh–Í¸ý‹Z‹ã[»ž;² ›v€’¥åà[Â.—›‹gµù9º”ŠV5fNf¨eÐÉ•ú¯7µs´Åç¤T Üû1D§g9rªßIHåü‚/ ¢d(é£khòÂuuäH¯;Ô³ƒÎ¡5œtë¼ÔfÛYÝš¸Rq:éŠ|[ô»EaŸŸíÝ×ð|ñö›îïÿ‰ãù’LõíÏ=ú	>ba!¥2hàÕÃ6½…Õ)Æ'Ó~:Ô²ã®\SxÄN–1köÈ•NáÓ³xpÞ’Šnèž5ºˆSz)‹†1(Sö¼š`­5}ü3€¡YOoDyLíO¢ç”Ó6¾Ý]Y 
ŒTðƒ¢Ð§C¸wQLä¨tQhxCJ7/6JÃhe{ _´Xž11-©ÌG~ n‰R|bSC$?y»ˆÑ‰Þ¼–©S6þ¾®“Ú5±nÓÇ&dvˆ¬j¾¾ôÍè¶M{c¹ºË‚9‡–Â ó¸ Ã$Ñ1ã²à&èK)»ñµ€rí²”¸S#ñà9å÷ßzP!
6(ã¿9Ý@³óšQÊŸ’”Ð“+ò`Bú'|ê"Ì.å{|¬Rå_®G3õçttŽ œ0¾Á. ¥ª]-xëÕÞÑfœ6Lë@•RrÁxü+C®¥Iš9çöuÕJzWêvœAŸ‹…‘<Ÿ?mxdŠüþõ¹³Ø©`›"OIs]øµšºº¢þ˜<tp½„	ŸPº‹©¾Çk7¶½¤OqÄà¦;Ô¡¹vßið¬TNº©Sh¯î'´Î­jÔP/Döjœ/éiGÊÒØ*êØJE¨€Æõ‚awDO¦ž Y
’éúÁ1°—
ÿ]
3–+×¡ –‡°ËËH?£ÒÙ§tÖúÂÔ”}£Œr’½P=4&GŽ¶ð¨ÖtuÏBÛôª=ñp±ÆZ	\ªº¾Ááj¯tÖ“Û;Êÿî×Ÿ0‚ËT¯bG¹Òä÷Ã2F»à¯ì5äË1?¡PÙ(8Z£4ˆjb¸¢¸.j{…O….SÙ‘4ÓNU>—ö‰ySÄ‘/ø­]BÙ®„5íÀKuÂÜ¾Ù(Ïï¥³öù=°ŽÌNÙË¿N”Ú“IîÔÈùêL¯HüÃ9/0}6ÂHÖf˜Ò^yº-Þ¤—ñ1&H¼¶Ìö×<é"›¨h,{rŽ¥ÏƒiÄwìäú1	äBù_Ô“<¾ŒâØ@ƒ¢ïo)ÀIáô×â¾äìº¯T½4˜äþºíòyiÔÃ‘ð+æ]-ï,‚PÔJ7áÍ‚—‰ÅGM‚¼½§
Aê6W{YËn©ÿ°ÂùÕFç–x+·Ë×îÊþ‰w3ë„Á’¹Ç-sþƒ÷‰B3?æ¨
m)žT¸_;a/ŒÓ‘Îh?m¯äQNü£¿*þ¾r§'<„8éµ}T—àko´ú›®=ž°‹]>˜>"×*Á.N4‹ØRH… Mu¦t¯\zÊ‚0±÷w€)FŠ:J•œO¡*jÊ‘L4ÁOÑqBb¡s­=(4­=Ò)–×*¨5çlJü«má"Æóñ"lÓÓñ®¦V@/Ï Etþ ¥osT[éq£Ád¼ÞW`¦ÛqÂÖ:‡cˆ¢Gù[ FŠ[}H}n*›,±/¥¨ÃE„Ãœís /Mõä_¡î~Šëæˆk¤¹U6ì©±* ¬}KT’¢Ã›Üšû‘BF½I¦I8³,Ï[f Ó³Yü7ä‚,±‚h“4Nor#ÌªÃ¢02HÅe=‡¦úyŠøGÙÖ\¾J|ÿ†åL³Ãû,ˆ(m=¡T|…UcTOÑ&6Þq‰­^d§bËÅ@g€ô$Œ[×NÍKÇcŒXf`§n\ˆ½oo¸wÖ2|óæ°	TzN§yý³Ï0¥#4A*µsG˜¯yqÎÒ6™ìÒÒnPžY$úû3V@Û'¼LžpÏ%`£\Ú*Ù‰ÉJ2@Ñ*Z.¤LYzU@P%MÞ ²jWfEWùêX´É*¬M,²N¿¿êEúøñõþ±rÂ0W@æV}Ý´8Œ¡o'“¼¸Å^0»ž
KÉ‚WÊð¥L¨¾…¤*7,G“s)•jßÜþ€²°XC\ÊÈdÕzhª­c¬z—#ü$fýß*Í••À~hÊ[E~yóò,k<!ïAÜzw“\îYvè)DÐýäŒ.øu¶FPÍëáÏâ'êø6ñ—àŸ##Ò2Öy<_’c‰ëÚÐs¸nÊƒ§ï¨‚öé  sÚ›½è¼ß=õWÔ
ý;,æ°´Ÿ÷KèÇd}gwwü.),2í±rèV¾xçú0¸sd*tÕ\î.‹¯ú¬Ê„×<1äÕh;`~
YyÎ„`]
»Ü.ø=Kxç&ß×Ôa÷ÛõHPfv_m½kº	M¨:SZîF~“v^6]oŠ…›QèÿçÅa«ï‚Áø;b¿îhh¹œËèêã2í1|Àj›Æ9_a½F@8¸]Ò¥F.¸O]ß¿ÀÈi .²îSˆ.|Îýb’ 	‡lË’>&`ú­7‰B/Kn¤Ì™  Å°3xt;±‹à‹zÒìU#à‘ŽÜ‰¾‰vñî{ô &?sÐ°asW©m€d~ ú7Ö/-ÊLç0&ðoéÚÚ÷XYë@iÖðÒë$SŸ«ê;e×û“
”	Î¹ƒ7ä3&zÄŸ0A>›·È
,+!V”Ÿ¸(ÕÚ^«—åiÄWy‘¶Áw<°1€Âdø²€Ú©™=Aúû]êÒò–pùr–÷‰Íß‚Êê.i¯9O3=}ÍŸßbæÎ|œU%j+LZ©X¨8Iv‚ÁÞªBn…ï{‡¢uÔ·¿DQ÷Õ‚6½‘>öú“Åqj7tÐ«ÛÍZ­©àœµFu/…l=!â P¹EBîÐ›çQØQ!îËyÖMµ#óïÐGkFÚ1óY7W^ùKsYÃm+–¬vo‰÷ûŽ’/^™@=¶Bxš˜üµ;ù,Ð7v£°p·_[¬ÏðÛr§·A#Ë¼àÐËÞ4—L°Š¨æs/ñc.ÅŸì&’’†5ÉÄ'Q:±àÖô¹Ó‹JÁÞ÷å¥Rú(žG?ÄÚl¾Jð˜ùw1sµŸÝr«cq÷ç¹Æl¸¯ÍŠ*€©€ÃY•h=/Àa“¡J†ÉuÜƒsƒmpÏc¨ýíŒ\÷VŠ+&œóp“³.ÓR»æxTe¤Û´ø+¼<+c5‚"yzÄØ,c{^fÞãÍÃAßÚwáL<8Ütš?“­¾#Š0šü¦œ¥dj°„Þ–ÑBÑV=î­-–†%ÙÇB¶·ëæN†IÏ“e³eUìu`ÆÔÈ$•àæ.Ç”O§›¹Ü÷'mì&Höˆà™{gYkd;B!$±{yûò©BÐœ5×§êý¯çƒ½ø:³•†j×ôÞ,y“uÞŒ*;“€xú©ø†³³²Ý)Éx«Ø§&©=¦*“õps‚öìÂ’ò§„Ó0ŸþÙZ»ëñ^…‹ý¶Ã–F`
 VøÎF@i)*‚Þ"ãÏ@wEQ†ã¾ª‚ÿ]½kÀÃ«ñR‰Ÿ8Nß(dEØˆ­¿ |gs\3œq”xnŒR~
vKhãùœ‡g1=ÉŸñºìŽ{è¾XV²zâ£Ž£ÖŽ
¡™jÅ+ë%þª8{×TÕ>`‹º…€wKA™©¾Êà¹§6mÛåþžƒH°cenÞýÏ7)ö_Ö^WnÁ–ë'Í§ÉoS?œÍ²‹ù­Ün1Øt
ß½*…Xé€Ø%ÉôøNõúG9˜+žN­Ä4öƒÞÏ­ñÆ( Œ–îeÁUwêªe§Ëv]„F¡hp$15’»ÀfE¶œžì€:÷qhÇ`ÒÂë!YXG}=!† Ô»ÉØ5§Ë$›¸í{l¶z ¥òƒÁ{ ÂÙaž•ÅB€À½àM8…wc2m(vö1¶+Át±—ÏO—ëwªÄÃlõSj,©ú'Ýv5ó¤VªA¯5ÀœwƒòƒÒ_¤Æ=ç†ÑÕZÅž.nH‡é­È_6&œ(žä#¤	¥9{Íþâ¼öFL«Q¶^îÜ­•	:Åœ“…˜C:#§CòÔ5ÛR(7qOÓÁ0¸Èƒ,GzÍ#¼‹PÃòN«#“¬bÛ(~Î>·.ËCd™ÆS…Ê½õyBoþÊÓgçKäáíÍ(óºSÖp]Ì¦-ènõŒ´Â%´O¸Õ¢—ZT ðœº„ÌíŸ¡«iÕCýË€…ÕKc"RI%–Bœù‰$¤¿–$—2|Q~*
+²Ì¡LÆÊ#,k†]¼<ŒZ~UÍ§Ä¼°)‡5¾ñÀ>( »ÌÓy³ó¶x ”î†ˆn€btVH\(×¹™ˆÊ¤»ÁsJQKZN ¡Û}yzœ))kq©Ì€Ó"íO·]'Z½8–ZLCRUTŸDôœ±R’*ÂûâNÿ£)ãV˜iÿ7—-¸“x]ñaÛÃÀDzA¥BWîÒ’oæöÑÈu"ó$’â$8/æg„žE•Ö
§‰UrVè‹;öå%Žü8™EHô´úh\IéB®?Š6uø´TåmbÁü,”Ì~>-µ2_øË&3¾—F&Ój#ÿM]¤—7>Ô¼é®ˆW~³ç•n­½êu¢âad©(£ÉŸ°a¾dy8*“¢âHéýýOx
À™«%·äÏuÂP¦âcf•'ŸäÂ^1žò?&ˆøÆÀÇ…P…jÄ ­æhÖ¤×œFä°ZN)öƒÒ« –y’”ŽýÝßÝ(9E)a?Xï¶HIC>Û*¼dUþÍÓB¨Øy¬Yò®ë:û•[ðÇtíóþç
úcÔ„CI?3ò#±¹Û8é!žãÙ€^þ¶ìÿ²¾çVêLf¢³aýÂ$Á¦9‚rÅ;ä'ÑKTÍ£“ 'µÎeª¥§F6OdÎTV‚4¯wn1-r	“ù@È­~ùßÌ/‡G$ñXŽOË¼1˜Ò3	#u9¦Ê©h‚ôÀØæjeõØcyN¿b»-÷pE¾Ú•:ŒÕ¿Ô?ù¾²Ôñ¼‚´Ÿ0û£³Â]åÑ—©d7d	D”c“íŽêÇ.Q™™ÈÂ,‡*zÈ±py1¼Ñú›%rªõû4ŸFü]~Þ·dØÑN6’÷KÁû©ªq›¶«Hñ ŒÊóv™ÕÔÁØ¶‡ß£Êf(>1ÝžuÀ?öðzÅF‚¼fm}¸ÔÇ€]¨€•šÍS~ „Úƒ‰P3Èøí‡ì‘&–×ë4(y3)Ãª0Ë3ò7_ßˆIØ<ðà-¨Yñ¯y´ÆhÃI÷»ŽxÄZ£bÎ=eŠž$^#ýÛq‚Y …ƒòB8DîˆˆÏÊ.½@:NÖÈµ¼dkêè"¡qÓÍ¢dÃ‘aÍQ/¡ì	Z/ šS‰9úH’ŽÑßù@Ñ2Â'ð»ô£k	Þø–R	s)br@D3À)I¢v7	H?ÀÖÅêª¾!jÂýd˜²ÁºT§$à®N¦HÕëYö¤yèñEŠ×(\vWÝ¹‹hž:‰PðôÜ)tþoìkº3™_˜÷þùVjÒÏ½øÊåËú+¡H…ýÛ\å<Ü3»>2ÏNºÎP%YEc'‘|3HCÿšå#ÇêŒÇ"ÁElCµ}~0;ÌŒ-;`ØÑgl£b†§Ù±@{%óƒBÃM©‚T•¼âÌØ”EQXYö?Äy`<‹ƒÃ¯¿–@çu”Ú^çR/äó“rçzƒ1òŠtÃŠ¶zá´c´imRÂ§2EÆ‚eŸøx\Š!%”fC”ë}µ×´ï)øo?}{ŸYju—?ÆRòYŸœ*3Pbxwšm;±V.ÿy½o¢Ñ½Ø{_AÏaÔ¤<²C
ê-ŽMã±y¦ÖT¿ù=2o;ç.~½uÞß­ºAFÅŠšAµuë³ê_XÝw=fpcJNI)>É“çÅ}b´µ¦g¬Íˆç ON·dvÅÀœÛÈp¾-c‚¨UôšD³Õ'Àè«ò&mŒ¶Lýòe…˜4Ek>í®Fž,=£ò+ÄÌ/O³6W¸è	’ŠŠdò‹—$f	–ëÚÆù¿r‰¿dÑ—ÂÊf?b…[têv€KrSéåð³]/[vàö<Ú¢Z+ýŠ>B^Ê´m$òIú’®$Â¼|{E¹WÛ„Î§•»)–GØò¦ðsnÜ0ô±ŽUŒëýwSÿS”ZIg%h÷SlïÉXz&2a/ÿG•’›VÓ¿½hœû]³ 9sŠ]¢_˜6ÒÍjT³ï‰¶øå9ùªM¹X'Ç@+NÌñ Grã˜6ÞC¼ÝN‡>KJ“¿k£‹-â£Š‘õ?âC¶¤î³¹hÑkÔ§NÜLVÀýÙ¸ƒŒ³8²á_Ý]Ãé‘Ø„QeðÓžLFùœ±öAfØù¸jæœdreÅBz¦Ó“Càµ2Œ<JûÞ‘ÃˆS^óTbFÁ"æ)è1êËct‘ 	Ù¶ÎØŸ_cQê@Çþ(÷à+&°‹ü²ÆÉäª­Zº¶µ>UL4¬Ò$uÿÜæÎø°` D·‡jsêT\ilØ_G8uo3c+xžqÖWJÜÖ|™L9t¸&£ì^seI©û@ž²	3äÉ£íe‹Ì„.„¸©õDÓJˆ¼ýNÞ3«5¢ê²Eš“Ð“ÅùEó^Gãš†²ê-ê5m‰êST±^óÊ¹*(îî' Ì¶Óæ<±½¡·ÁÐ=«‰ÄÊó³p#†H79Â{Í¬ÜTÅ£‚ù†å¯-wåÚ Ì{JßÏ£f¸üR}FsÍæõc’Pÿ?wÀcp±ªú™Ã’iWÐ2ròPÓ•Ã‡ýz^Ü#¿§8~iN-+hï(Ü'.
¹´±Bc~µ?¬6·ý3Å¶+æûJ4šª
#)¶H±|¬:Øjirîß/Áå†½õÓµn²|ÍV^—Ìèñ-|ÄÆ‰~wÐx0&ð6ÙH›f’ë5aë%UJI1´^åÙgwÀÅbjÔZgc_ŠïlDÙí¿>KŸeƒÑBö°š"”ûñ,Ñú´ÐõJ~ƒY`lj¶±eevð<ª{SÞ5»ý0åã¿ëe.OváòåñŸ™Y?ÁÏa¦ˆ'±étœÀtM'+ø>ûŒH9O!B´m1 ÕÚŠ;_Žt6ä½|’öíéÑµ`¯)kÿ¾tÎHdG ±85Žö·sîô¸È>ë‘‰õe²i»?”ÃVhø¢"t ŸhðOv Úà)ÚÏÄPæ20
‚cßz¯ï3úðƒà¡Ê£Á}È£ŸbÐ<OÎ<“+¼ÈqAˆ žöSh· L{¤fLËZjGÍ Ž@¼]póÚÛ”Tm²&Å¿]yþ6øÉ%èJ!@øSø0	oÊTÏ‹+ºr¹†v(ÍÈ§™óSÒÐŸ—T q€ù_>¬³K^w¾ZvÌxÍWvX›ßÿ­_P
·&TJ}÷OIÞFÙò÷7Òö«³ã™þÌ†éa¨÷àP¦,g†¥ …9wòoø‰ý,ñÃ:ÎÈ|Ìpu½íØ–!uÅÿÈEªs£÷b3‘/T•àÏÄ 6	ù‚#(«ÞœZù“A°¸ÀSQr¸ÅyÜc5/{×Aføc1Ìâ³
ô–×a>„i#ÏAtÀOV¦¨Ë´yÑï³>ž x°cêÄ<AGö¡O¼ý0¯—Ç·õÓ_|¾hüÌÍà4Ïúš˜ë}:]KHJWcD„^$Ûÿ½ÙíeðÑÕøù"•¸Öä…ñngêù`§2îôˆnË'æ',HÂyžÄuPQêÂ´%PÛoÂýº“xËèë˜àÅxÏÍÿ‘FîùµÞU	ƒéó)!Òøè¹ÇÀö
3úþ¿ð[–®ã"d!=®ÇÍñ%-ó{Âé™ùi „þ ×fiÅ×I_Ê¶SÖšs\Ž	xPóxõýiÄ¬<¤+¼T¨ýÎ|—H‚ZÒÛÛ<ÂÅ©—ò¤q&{§·ÙqL\(`ºnsÃ¢?ñ3#g<É²ÍCgÐ*Ä÷Ö{¹v8§u^œ5™¡­–AÉÙ;ö¤š¥÷¶¨7»¦zµÞ¼p:ÑIQüÙ¸RÀpgìºÕ‘‹&3[gœU÷Ìãûƒ›±å/§ûÆ"‹#·íÜñ{6ôAú(Íc† ã—5oE¹MàŽÞ%ËÃ…:•³ÌPqÒCG‰,lŽôÄ2ìnÍ¶
öIü[Ü<Øk†FOcwe V“»'8gÀ{z_9ºªa‚)£itÓ¡WIJr??‚šÔô2ç&ùëh¢†Ìq‰›±wõ	ïž•h9ýtÃ8‡~3)
L¯|æÄ¦¼V°ìÄ8å×·—íÎ,Ô“è±T/©kÄbÿîò–¬-ñ(û"6€‹ªìG³[Êöñ@\êÐ7@Í
NÂ’}hÃ»'ÞÈjÈ‚hkñö•ýŒõl²d6üO·	gu¤ŽÉ®Ð´¾øàèrä`ãV†ø¤ÈO7å¹GúRN°ÚWæœŽ‡»Ú¶]iáË8I²Òë'0K+…h™$<ZøUJÐQ›ôj;§~«£Gœ;ÖÏùÞÃnaþ¨O¿Ä‹sk2RÙ‰á¬’Üi!vkV9%7ÚçŒž÷´‡ª¿¨l‡ëÓ#×_À;Ø+ì» Ú[c-ƒXpdeÖ³u‰›ùºk]Ö‡ØW”†’òÙÈ1$­ß¾[P‡ïY—D·Î»&ñ1€»ŽdÐ8¾c%~æ|3+½1<ˆM“Â¦[ˆþåÙéšÖÚa[ãr¦WðYg‰Ï‹ÒãÅ1ø{}Ÿ— ¦xŸüôQñPKñC‡þ¦bÄ¿<þP×¦z¬±T³ä|Õ•ñ‚ÏçSg=OÀ+
žˆ);3¥Äïg(±¡Q‹ÌzVƒçÂ„uz“Á†£€Sœ&û $âµí–ÃØè=jÕ¬6cj{uc~ùBà™˜ßC$J|
$ûU×ãCÐG“÷€5]¤z¨Z½á&)Žõ|ž…7Õ©;Ÿ
z[»ò@nÄhw
T‡YÛ ŽPfXNzáªD—ï´`¾	\^}ºüª=õ”"L#Cã$áòÒ_îÏ§ÁžxÚ²N§ZÅñ÷ÂÅ…Á€±)Æ¤!’¹I‰jlûöƒ&\æs×ˆ¨¨~ÃÖ'„	ô-á0¤Phƒ*GuØ'€¿
ÄW(«ßÛêM‡`Æ»X‡Â¢Ù®&YgûRZ>›÷š.Áµ).¦F# !TÜŒ?È_…‚Ó•­4Î‹¨Œ™J(q@Ó÷÷µ>’Sk¢ÆÐ 7‚²‚¹4>õŸ9K~#A¿ÝSÝd‹M‘ˆÂ}ªm&
9åý?wÎšßx·ˆ/>eÕðïw-ä\Î_]<Ñ"[.^*ºén¼q)”à«LP„“HD…ÚMäŒÓæ¾kyâD&3¡ŠÒWÖ¢‘cn¥äë"8ÖO(Ô"Ãp¸¨¡Î-ð*çD^sr}Ö¡$³¥m›qµ»ãÁ8!­Í[x•ñÁ4Úo3aråTº}Ã	®éˆõýÆ3à”}Û/¸ßì=uILî¦Ñw$¹á×Lsbâ¼êdJ°µ=|kÉWã´¡í}ÚbdL`çeÍ;ú(€ÅQÉïÝÄMÌÃ¯¨VƒžB…ø8DjzýâŠ-:­­ùB¼ƒ\_„º¢²	e±SîkFáº‡?Oäi?·¡óŸÝß¨ÉÖ€jŠ‚„mœZ¡4uôo˜½… 
£½îå;O*yù2{Ñ°Rv†ï<Î&^Å°uÄ’¢ê&Ë¨ª˜×2Û„#²å_èÝÄ2à–ºÉ™LŒýHtK—Y¹")ž‹†ðöüZ ÈÀ\+<“¶j¡W™˜[Qy;£yˆ‚…Ü"V5õp°|¶ï¡æÒOh’i:=¢|™W9²×2ÎU›èånO­&p½¿ßvÆy±xX· zT°¹m/
Ö	àÊ¿Å$nÜJoÅØ$XÏ\Oº§$i-ô4&dÞKã»ZvÐ¶±ÙQl¾üdñŒ^]Cn¶Ð>Ñju°v+}†‹âRlQY­ùß¶‚·§>«Ð«[t¢ÞûÄNG¡8“ó"|¥Ñ+,5qN4À–lhBÎZqà_a~7O»bš$Ûü;ý¦ÞkÅÜLÓ°sgª{àÑ ÷ð\¸¶}§ÚÇ P+‹åÂ?É4|2ö>m³ß­~Áêj]ƒ51ø'¯%Ÿ«žÿ	zG …‹‘QØÒeWlâ
ÃKVXƒkÞ¦N’ÁXîønk“µVÐ„	‡$Yª¿BµSÔCèGw)]L¬tö-°
ú¶õÐõš%Œoó ‚+ˆ»9:@úÂùéá˜õÍTÂw0îLîHGÕa}]=qälnÇk£Ÿ)\Î³R+xý‘*­»ò;fé)Æ}g~ôëLoµ;Ï¤Ï‰TÍœe”Åw[ò£íëÐjK!á¥¸#îzƒvåÓ(Š–ˆ(¢hçÂ4ÅÐT…E¤ÕVràæÇA‚Ä–Ì_ äÐ\Î[°/ CÇþMî9ùpœèåR6W–öÃ{xTÙÜ”Ö@-:$ˆiÆ½¦Ã}%7³«úÜŠw6¶ñ»ßË8r2´=RÎ¢‹g5e÷1 N®†/D;:RíÑƒSØš*ñ¢÷«íˆ1zPÿ.p5OŽo@ê C×Î3öî†é79òù»[cë…‹¾„à}äSÃÊÓ‰ÒwfÞ&'Ê/ â ðgÔ ´¦~ iÀlÜH'¦&_ª°°ÿýŸ=­f
HÑµ<VÁ•Â^ó0â÷Š,»’'L,ÁEYX•†Ä†£CPy¦oRß,>ÆÖÄ†¾òsB’y[é3ä=†xÈdCo‹ì¼†Â˜ôã{ F%êÒ¼Ù¢™ý=‘éÄš&…‘CÄŒ1S±Ú9>dIJ«n°GÈóÙÈ;3—”?£d–Òþ[IúKXÞ+²sV4Hñ¢/Q©ÊàJÅ/}¡ØíS„6JvÇ'+†BîÚyõZ¿ø|ÖL?CCŸË»¥/x«óù´´Æù¾qAM/ÛûÎ„gNÞÆÑ½n‰¢ˆë=0#ýEÝ úÇLïLÚyö,lÍz¾éo{=Ü“â9[ÛNBŒ%KÐmU^bÔi'iG sn¢M±qK€oÛûÿ\„MFAJ<Õù;ðµœ6IÝÃÍÜ÷V
kVHqí°ç¿REÅQä¯¯Þ‰E‰UG\iF<óØ á¦6æÂû&ö…y«;è–4ÑoÝÕO|Òºóâ	>‘GÛDà¼R
€ ¢³Q¡Ú‹MÐZïÐa6êw–
üæºúßwÔå÷,;«§gLG^øÑäåË8,ÜÍãõ<øúä€"ü}ºuÆ¹µ.òŒ€~g˜<ˆ@ ù–úŠæhZõÌªkg3 #‹wMB¯œ½ÓE¸À{×%E}þlTðQ~i¤2%Gê¤Ð0dÅD¼>Q€uY§w‰sšpX8-ãÖGc¦xŠçÒÔýç£kEüTBÆ®øeaá…’* ’3’î"ºÇÓ«T[¨8kÌˆlyÊÄA*¤æc‡f¢õd3iF™m—§”ŠºÜì“|c•1Áöæùsï#Ã'9g4³àEo6'Ò:âF’fC§ÙøwiB»Š1^,Ÿ]Øß#W­§@R¹–Ù€T?
ä†äª§»ìO`ã˜Šeë/ŠÅœ5\¢Ÿ>¹›ßYèEŒŠ˜lB-DºTJ¶!gü·”?b²wp÷ä”£¹íåö0r÷¹ä\ÑvLšÉëú›t:·_wå/¸ éEeÎCg™z^É|ËºSË¶úROL¡Ÿ(40®fõ£eÙ¡wZ¨ŸK#éõùãç^VÈ?ÒÒ—ÿ
PTº«d*{X¸ÁïEòdÝcÈY‘dhnIBøÂôÌ†HFL÷-Ïx·@ctð25ÍRB¥=KâZü4ôâ)<ü6(Ò‚ŒD`#íý.;}]µ•üº)l&hÚÆeËómÔêÉfOÀ7t5€ÙñGYxƒÞ•>{3ÖÜîI™z·à°û"iŸ-&ô²Õ¸ßWž[<óbLŸ’$Ñw0#ô¸8µßX›S/_³!BGåˆ&P×Öñ(í zü«—=Wz¢Œµ<#l&š:ðþ|Œñ¬R¬ø´˜Èç±	^¿Q PŽláb«(+Jl/YÐYN"ZGÞÎ€™ê#âïÌ ½ûSˆ@-	=!,žô@¡a•‹ºîý,}Óf}ŒC FdÎ¸èØ+\BNÆ¹Ì?;]sÜ[Ïá,T³R¿(r+‡èR^9º³uêÕjÇ19*†³‰Ýp™±ôÏÇÏ‡SOvT³÷ëòú¿azþ/æç¼¸˜Ê/¬®»·ý<~$—ý‰4¸©öc¼$ í¥½‚¹Þ)ð†6s>­³c"Ôé–ÌRšžò³4ÍLúœzúlºgÇ†A6lný5Ó+“\ø´`ÕZŸ¼Ï›Û£1âÄ'…ùdXžÆæ,„Ñà{¬/èÀj&-wÐÃJsøÜ‚$Ã“Ã¬8™è·ïž½â¸X×Lxˆú©¨úÅç™iû:<Zží•åZwÚà±Û2¾Â#ÝŒ	T7æãH?mYSZ^íŒÊ¼ó@é•»/Ögó2AXüÆý£:ÒÝ“²á*é™Ñe"w€_Ð‚Ì¾l-Å=ÿ5°‡‚ï¢w5ÙÉîstC)ÔÐaÙCY<@6ÿå‡m<oÁÑÉ&±Ë¦Îsãp*gn?¯ð¯g§Tû¢Á?.×º’Û§6Mn1nÅ¹Z_áù–•ÿÎ§ÌEPÍoW‚‰þ®QAøì½ùg¹Ó[u9¨À"»p‡{ÍÑ3b‰!ä^rƒ¸vvè¿m>9O:„ÖŽŒØ"i8Pà¿?Í™©Vvá.°tÝz"±FCÆôn="Yî¡êØúy’ãúÃ¨IÉŸU±ÿv>µaÆg½Î¬µ”I¤‚387Mœýò	›²øIÀH‹170£š]ZÆHàýðÎ[Ãˆ¯®†óQ 3u[¨ÐáÔKXdŠ{ï©†úvÒ$¿ Ý×°ÊUÂ.ØZ^—c4ºà ®±ñÂÁqÝ£U¶Õq¼Îp(:ujR„×<à3Y¯êJâÄ˜ÏQÙ8³]zØd&Ã_l¤™·t\½¶Ì‰äªü÷Ù
M= ÎR¤Ñ’ñÆîüûä.Pj¥²]åa Ã e®¶®?ñKøß!-ÆŠJìP£qX$$ë
R_t	ÒIYñ½ 2Ôvª£É†È} ¤ŸaÚÀ–ÄPÛ?µ%;kë©Y‡[›:4åj|XþA›º¸º/ÒbØ6hG¬¥ŒÖ„zk‚BBé–,1¹‹à·èÃJž=P¯©]-)â4¶VfÖ‡bÀ¾\6yšed¢)6¦Þè* Ñ…ZãÊ’âš—6e°`ÊnŒ´º{JÉt yà±ò@§•WE¶…¨åŽ¹`¿	¬ÔñzÈv:1	Hfâ¬“¬‹ñ5°Ž¡dc@FÓÎA ¿`IÁ g$ ”rGÅÖ½=\C`'ˆ*µ‘f*ÀcÚ¸#±î3xßŒàîh†ùÑsiÃ7¼¨uålÜË4Ç¿žÔËÎY:ÃL~½c!Þ·lý ®U€ÁÊycBá¬…p¿0¯=NŽùHÜ‘ê7{Î¾ütp“wj6ê±_%lJåÎ+£¢ãiò@–-¦-LÑ(^:Ðƒâ	2šÛŒA:3¸ÓJë*«g†8ù›ìÑ•˜,ˆïÖgý»eú(+Ì¶^ÔÕoL¶ŠÓ
l€‘–Ö0Ç©%z~–&>,Ò¼ÄB‚~ª5û0%Ki|!aÛoC‰	6Á`,ÍOJoD6zçÖÁ6VD´¦TŠSÏ©Ü¹å¤ÏX§švÿ	§Wu¶áOº&þ_.É6¬
*ˆ“9ûqéÑvÈXÆG¹õã®_Ò>D‰ö`^gP2L Rpw—ä²Óf÷=ÈB£@vÀtºïÌ–x ùÀ œl g;  À Tn §Æ R­ i¶ ´ b Fã mG Ÿ  ÷ ë~ G u% ½¼ µ ö– v± ñà /  \u Nì n—  < ë ^& ûÈ 	ý’ ìâ Ò Ð) ÛÄ QÅ ™æ Îµ YŠ 3¤ ú  ÉQ f¿ 	j_  ` ›Ÿ 	¢& 6 ¢â 
-] 	‰Ø Z› ì ¹ö ÑÎ 7] ½  JÊ  l• AÞ ¬ 	u0 Y­ …§ 	ø ¼Ð 
±[ )  vù 	„ÿ Q` Ý0 
- ´@ ÍÝ v :  ÀV ‚` ¾’ òë IÉ ‰Ä ”¦ áR  Ï Ûü È, 	ŒN  fE gô ×B 	† 	:Õ °w É  §x   & 
ŒM Ñw lƒ y@ Ò÷ ç  ¤š èb é× Ì c® £ú û% 7Û n| B 	1 Öó Ô D š …ª éZ  Ñ u E 'Ë Ý‹  â? 3› –R 	5 
ï( Äo 	s ¹j  ßò ¦? @ úñ !‡ Î} þ°  ‰Œ Áˆ ü; H= %°  ”ª 
º¼ C-  	®j á7 Š­ †_ MO , ÑK ;  ·, \n 
Z E+ 	Ú‘ î" õ L?  8Ð Ê o‹ 	²†  iú ßx 
Š £; 
e Ýô Z³ 	
 ýW ; ä4 
9
 d8 !, ÷d ^ % C jô 	HÓ ·	 N: Ø CÔ ÿÐ èu I ð6 ð¿ GV † ¶| P¤ c} ÐÔ j   ÷¿ ¥» =ù ¹" ® P­ K S ˜¤ 	Î'  Ïº 	žè Qå N@ Ã! ìÂ  38 ’Ë T4  2 Ìô 2ã 2%  W× }ª 1 _K  / Ç ÖØ ;ù öß ªº _y $× Üi (a 	ä ð Ïj "	 *† `â $ï — Çª yå Öi 	â” 	xª üß … uA 8 =9 ‰Û ñL ú] S V e’  ƒ '¬ n¤ J8 0 h1 a #ú ßš ÿÐ 	Ä •Ó 	 î /° Ñ½ )F 4: ž€ ”Ÿ 5 ¸± 
S Jÿ -á ÝÒ  ð¥ þª Nô  ±Þ ö. bÌ s Š2 Ôþ  6  Œà Ôê Í +„ }T 1W 
U& s† 
d § ~p ¼  Ì
   6 
ô: Î¡ Ñˆ v  ‡ Æ 	« 
˜S O Ìž  . D ·ˆ 	*Ø U ü¯ öz y¾  Mr  ×¬ Êx ¯k 	mN Hm  ^P t 7± ~¥ ÷ó 
)Ü ˆÛ  ÷× ™¬ F\ 
L É µ  <î PÜ 	áØ Á ½Â -` À4 (¯ Ù€ Œ þ ú@ v5  @‡ 
™í %á •* X
 Ž 5b i: ÒQ s— q+ Þ LL 	l 	I„ …¨ ou Ö 	ÐZ 	§l g  ð ë FX g ™ ¨7 „   KÒ Šœ 	”† á# z  Œ@ £õ ¥ ùœ s ñ ‚~ 	Ý ò " #Ø 	X & 	)ó è  R\ cÕ ‘  æ€ É †=  ù“ ˆ ¥ 8í x° `ã èx V- q} TN ª õŸ  À { ôA  ^ 3… ¾0  S /ò k lŠ ¬¿ ½ÿ ïÞ q  %i 1 ,°  ¯  ÓE ¤’ ®ñ <   LR Ãª bí ×7 © 	¥K ¼N 
4q ê O. 
Y@ ÒÊ +† ö4 ¸ü .' 
º pÄ   ó0 . 2 ¤¡ ü ù 	’p 	/Î á ]? †h ï šW – ~” g 	&À  ™F Ù¾ 
O( WÝ 
<B ¢^   Î” Ø6 » _n ÐZ ñ EŒ |È | 
võ • 	Öš U µ ¢ & ûµ ‚¤ å ¿™ 0‹ >5 9< ÿ¤ "B  Ÿ£ Yª R§ ²ÿ  ßµ Å ùê /C È" V8 â: ö ô¬ Àý zh 	œ †> Äþ ,H ¾ ²Š » ÐŽ ÇM œõ 
Nx rë 
¾. É 	oç 
~g œŸ A «b 	˜Ÿ s+ ´Ó q( o 
m” ù¼ ä³ ¤Ý lª ª }B Jþ 8  Å<  :v 5ú { zõ _É ðn å ¯, â aÂ 77 ¾~ 8 úP ÓI ÜO Üþ !.  p^ Ðô Z 	Vn :0 (ž ß€ ÿ- ëd  - ] ö1 Šå 
ª‰ ˆð * § <) þ+ :4 (* O xÇ Ï¸ ×í r‹ ¹ 	yû Ö‘  =Ý õà ä› 	Ø6 f  d 	6c ÝE Ý 
› æö ¶q j (É q_  ßÁ ÞÃ mñ ì. Óç ?l 	9 
çE ­ª Yó ¦G O5 ñ òë õE „O Õ ËÇ 	ô/ ì† 	ù ÒH 	£ ªÎ 	º> bÝ 
=Ÿ Ú¾ ØÎ òî }Ê SÄ A( µ  «^ z ¶ ˆú Ó( ÞŒ 	5 ,t SÍ F³  h× á. ÓÙ Qž Óf 
zk ß\ 	‘N Tœ  Ö« {Õ ¨u ¥¼ 5R MD Wq œ ü¿    5 lÈ Íé ´ ƒ Øt ³² ¶" 	È •  äŒ ©È îc Þ |D ÷3 Í; 	Ñ Ž \ m¿ QX 
}¨ Pj 0Ž ñ i 
9Â  Èˆ 2¶ ¿ú €9 Ä† ŒÃ m¤ Z  U¸ !K Œä <W x( ˜¹ ˜g &¯ 	R\ Cä Vg à
 
² F ŸD  /ù ì­  
'Ê  ­L ØB ý 	H “ ÷‡ —Þ 
ö\ êª üá 4Ÿ \" Þµ êÍ ¡´ â +Õ 
6 ŠÀ  [ , P6 ƒ )² ª² <[ 	£À %É  ËÐ 
¿ Ø Š„ ê °° 	Ùž 5 d¨ 	‹x r~ ~ü v˜ ±¡ È€ L¨ ¤ . ¿® 4© P V¡ r Ê; H{ 0 Ž— ¯7  ë væ  S ß) i† 
 Ì Ro ÷ z ™¡ › 
$û ˜º OÍ ã5 šÄ XŒ ¥Ä U÷ í ³ƒ |‚ /Ý í¶ ‡¿ Þ´ „£ rœ ‚ I¿ çÿ ’½ ´ hz ±S dÖ  €— É‡ É, ˜„ — ~ï ñ –‹ Óš Ÿå .¸  Jô ÷ ö ?æ  ‘ 9© +V ·v  °õ ¯÷ ¿¢ ø[ %C 
v3 °± ò` mc 
ô ¡‹ v H· ö• ‚ «Û tm VU ¸ÿ 
!…  Ð® ø¿ UE  äÖ G$ F6 <ã £ó ‹Ø µ&  Rñ †± †k Ž ±Û Çæ NÃ Ê; ½ %Ô 	ó: ví û  ‹ Ãß qµ 3Ä 'Ñ I< Á ¹v 2 ç À‘ ©u ƒæ t ±˜ ™ø ù *w G§ w“ ¶1 "’ ‘ ®	 › 
¦† *æ A‹ 9    
/ ;	    	~H U ³’ ¬ 
ÕÛ ¸© È óä 
•  ’½  s¿ !h *˜ € 	ƒ1 	Èù Ø Å  5a ¸S Xi Üì 
Wª ¡Ð 	„ 	¶$ ê ç3 |t Ðz 
JÞ Þl .û 	
Ï Ÿ, ; Àa Ñ7 ûp ¹h 0Ð j\ ŽÀ µ¦ Í3 ú  ÷  ÅE C& Ü§ 
1y R¶ 
å• † ›¬ 	Ëê 
F Sr 
  Â 
žÐ 	ž ÛÈ 8Ã Yn Qp 4i :/ B 43 
w Î) À» 8: 
G 
èÞ ¹è FŠ EË  ¡ }ƒ  Þ ïÕ Hb w! ä Â£ ;• ‰a 	å  ªþ z0 Î¦ îE ©Z 
ým Ñ kE ©¡ ö`  Š] û ¤ y »ä 
b
 áá /& 
gX é N P¬ ñ 	M= d ED  • EÈ ~} ¬ÿ 	)1 ” · Íh ÈT  
= W ?µ ¢Ù  êû X" v7 	f	 	Š¤ «Ÿ 	Á  UÌ ‘ó Zî ¿ß € Ll j ÂQ 	Sà ¬ ÜÄ  2t #: mÁ 	(u ø¾ º‡ ½$ ¨¬ ä 
Ãà _/ ¼F  ` dn ¸ `® ­˜ ™ Å† 
­ÿ 
$ 
R[ ’ Æh TÍ Ä §g ?í <¹ 	v( ÍÑ IH 
ãý Šô ê) Õ
 !y Ey °N °å 
— dÆ  É# µ½  ô­ 	ër _ ¡k ª  x¥ ã­ [J 7× 	ÌÇ “Ò 
(¾ Õ* 	 — " 
à€ bª G† “Ž L€ O¼ < \“ Çs ›< eO Ðm W[ x 6 Ð¡ i-  ®” ¯f ¯J Œ÷ žð 4— ¨L ¦á ­p Û$ ñ …@ ?8 19 LE »  „ ¦W jJ ŽÇ 
¸
 	°¦ ‡ñ ð  éÀ 5 kV 
3 	3² ` þ– Çê  ek åo / 6? 	ny N ¢N úÅ  T; z 	ˆ1  @ tb  ¦g ËÙ j g WD 	sù ¶1 Íi ç/ ÉX 
a" µ˜  	“© †o  ¢° £· è( Nò )ž C Ð  YL 
úê   &‡  !Å  Á5 ×¤  A²  n œþ 
Îø |· … 0 éP 	ÿö 
Aß }o ¤é ±z [ °> ƒÑ 	‡ #J rŠ @£ 
ê X{ 
›t 7+ 	UQ _Õ ™² WL »2 ƒƒ •æ âþ s‡ k‘ vœ ¯ö < ºv æ– *^ ¯– ¼â m† ¤M 5÷ \Â « 	; –{ Âö p‚ ¿ 
î OÒ Ì$ ÿ ( 
¤ §„ ¨D 	öÌ R— ËQ Y j% úÍ »z ýä 3 S ®( ô? ´o ñ 	ÞO 
…¤ ²‹  ® ÙÇ XÔ œ. ; kß  (% –¦ ÚP 	½Ý ½ F  Ý— ¹² ÷? &× 
M )x ˆÇ Ð á „Ï à× Ç[ 	#Õ 	±› k u¥ ^” â 	´Ò 	hž  Z ï½ ' 	øÄ ©6  6F 	‰ JJ Ú  ¾, 
‰Ý “ì c” := §™ ^£   # ÔÐ Šå 
, kö Ûh  Ó1 R1 „Ñ ² ˆ˜ Ä¦ ½  ¢) Nf pZ õ — Pq 
"æ ¼õ ýq ­Û q÷ 	Õ2 Ïq ø Ç¬ 7„ žI 	›" ~B ' §e wÒ d” 1û  ý- ‰ó o§ +  8 	^; f^ ]» 0Ö 9ò  QÅ ¦o ‘Ê gŸ ä` 	2{ uÛ ½Å ?* €ö Œ§ #  à ‰a  bæ ¶ñ tu éß Ù Â 
Zç 
¡L Yö D  £a ”9 	w ¤Ÿ  “ ½È ÙÀ Ð ž	 
 4
 Â yP 5M  óË 	e. 4a “Ï }s ‰ ýÉ  î fx ¥\ h ƒˆ –? lÍ ñÙ >¥ Ë f¯ ³‰  y‰ Ù£ 
 
jU Ñ 	¼æ € ÖV a¤ 
yt ¦ú “È f Qí 0¡  £ 	ï) 
Çl 	— ÷] –  „ K% 
l¾ 	Á 	5 4 1˜  ï > Ê ·8 `¼ ) ¯o 
%Ò oG çÊ ï~ yl tö ¾5 Ë B9 ÎE · 	…À ˜K ‚8  ½ tJ 2Å  µ= ) 
”c : û 1| Ž´ Ô Ô° ¯ê ùõ 
“‹ Ý! ]k Bù &ò  Ûª ‰ð Ê ÆD Qj °/ * j^ 
ð  îæ .Ò ®^ §5 õÎ ªt ´B 
I÷ Z? S Ê¡ & ¶v *| EÌ ›‘ Sy · ï  çs  þ M8 ˆØ t 	­` ±“ 	fò ŸÙ 	a3 	75 l û §) ª ðC @0 ¨ %U Dƒ îi 5“ /´ 
„’ ,ê d1 íÞ 	Y5 ø/ 
‚ y \) Ê« Âb ¶q xj  X“ Yo Û½ ü [F Ãð 
è —þ 	Zq ­- äº ˆ aø  Þä ºŠ 	8! 	Û’ [ K ã  ræ \Q #; …l ®Q  Ï 8’ ªÀ #ï ›3 z. 7 âŸ 	¸% æý ç yx ±$ N€ =^ j 	5ž >€ `t B‡ {° 	×… ºB '± ƒ) 
oM áï { ¼ kn 
ÿÇ qî ô~ 
5ý ’p  ˜b  ‘< ¾Ó ¼m RÏ 'b ïO h} 	Ë 8
  ‡0 	ñH ^< ò ê: ØÇ Nâ  {õ % ±Ã Õh ·n  q Ð/  µ. 9g í 
C 
C Yû 
3> “‡ ”1 ¯ ug Š Zs 
:â ó8 >c {s `¹ ™ à]  KÐ § ìÃ ÚÇ O 	m 
¨ 
í 
äÎ 
«v § ŸÈ 	Z tZ [ 	»î | ”æ + }ß Lê R~ A´ Xá 
Bô žÅ G‘ <=  º‹ ‘[ VÊ ÜŽ ÞŠ 
®ä Ð½ ÷5  Ú6 ÉÅ Ú0  	Í ´g ÕŒ  „ å“ Û÷ ¦q œp êâ |” tÍ J© Äª ˜ îé ¹g § ÈG .B 	[= ŽŸ 	L] ì‘ ƒ1 ¯ M ’Ÿ –o LX 	ÑÃ ?Ì Ë‡ I °z v) ¹ý w½ Ò <W ® Ú† ¡† .L JX ¦  Ô+ ð| 	ã_ ’Y y 	}w 
x° ‰ I† t! 	w ¸- ÍÇ  PÄ (Q Ü 	zÝ   ßß ‡ çJ jP h ra $d Œë . NI ¡I Z# ƒ^ «  g 	Ü4 a oO Ó† Ã ! CQ Íú ûV žþ fE 1/ Üî ¼ 
G ~“ ÿ <Å Þ ÷ ”K D^ C»  ´Y ? 	¬ Ï ÖØ à ã® [+ 
Æ} ’_  FŸ ’ý 
ëZ >÷ ‡ ^^ Í í* 
âú Êî xã 
€2  o Ú 3 &' ýž 	À- å; ÝÄ  ƒÆ E 8Q 5l 
`0 Ë& åš ¤Â  t– ¥Ù ³ 	ß ;Ý 
¬  ¸: õq ù¢ \G Ü¢ P¾ s    	è ËÖ è6 %  £ – þi 	ÃÐ ™› ¿ ”ß $ M~ üu cH ·} æ  Ò¨ 
øØ B“ Åó 
2D [¾ vØ X¯ ¬s ë¶ ^E …¿ ¾» ×ô -5 ¹
 	 
t3 ¼ 9 Æ
 ]- p_ à 2˜ (b LÑ á" |“ [è Mð µ ) ÂÜ 8è H æZ  øX Ï +– 	 	Pÿ ³y z® h) bx jö –Ä *É ›Ÿ ¸~ 
Q? µm â¬ ×”   ]ü ±z 
A   05 a— ¹Ž < Û [O #o T ê0 è ¢5 5 '> 	Òe 
 cù Â a ìj 	K‚ ØU ²Ç à[ ©– †å 
¶‡ oŠ `v ‰$ ÃÜ £ | <ç » Õ” ã® þ  £² 
Ôä i2 $Í 
¹ T 
i( m 3^ î ‰¡ ø¥ 6• ¢* ÖU ø¦ Pô 
å ô± dÉ ð 
‚È ¨ ó ä à… Eí â ša  $: _ Kj â x ®ç ü_ mÍ - ˆˆ  ` |à š Šv :¶ 	" 	ÉÐ ÿû ª0 c¸ S 
{1 ‹  _; 
À W' ‹Ê ~ÿ Ò ¬Ú žP 	¶î \\ 9„ éë ^ó À ;é èª 
º -8 ãê 
Ê÷ ïí Æ ¨— 9ì (a þß =U ä• ‘é Â” »Ø U÷ á! 	úò Ø” 	R øì n­ 	4­ 0 Ž 0ƒ ) l ´¡ 
Q dU ! o… Ü ©Ë ý< ¹¦ 1) j ðf ›› 	ív 3  Ê& AD Ü+ åÕ 	# Ã F 	0T '´ oJ c  ¾ÿ Ï) "r p 
E 6â *Õ ¶ 3Œ æ› ž‚ 
Í‚ òÍ Õ2 u ŒÓ Nª Ä 	<Y ¬¤ ÒU  ¶! V Î& 
µm ZÇ G \ ` –W [ Zã çâ 
 … áH …¿ ”m u    ' —H 	pß ÚB =V Ëb :% $Ý 
V· ð° z n¡ :T 
Fí æ óÅ ó {  ²• 2L œ lt —¤  H| Œƒ Öœ ½ §‰ êd ïœ : ‰­ *. Ä? 	Øè p‘ íÝ nH ùÚ ,á +£ j¥ ú… . ã 
HÊ H° •Ž Æ_ ™Ì 	{Æ 	wà ‚@ Cª ™  VÍ ­ óÞ G òÔ Ô– d@ ¦ ‹ >1 «î )Õ {~ €¨ ñ & N Å0 Ÿj 
E, 
ì  ª­ õ@ 
Ü¿ 
|½ » ú ]S e€ m• ü[ €s 	H q 
æz ‘à bC 	ô üX }% Êè k 	 s §à ï  “¹ £ KÑ É ¥ý Û] 	–Å  õ O M; ¦ƒ µA 	kÀ $ß òŠ 
& 	 [. ÆÔ 	õ 
ì êd ~4 4– ‡Z B - Óô \ ñ  ‘ ]h ä U’ 7þ ÕE F2 i5 V Â! ¥ Q› ~/ 	ê— Ò È  í­ òÝ „Æ §È Ý /µ 	 (¸ C¾ Ø¸ Þ, áD ý1 	Ý³ ‚ eœ €Õ 
ðæ  & 
ƒ ž ª µo eC zr 9Ò ‚¬ Ï Á~ ^U ‘Ÿ ” 
&ñ 	P" 
‡ê 	š" ëÿ zJ Ôf ™œ PO C ØÜ $w ¼z ôã 
²ã A ¾Ð I& u 'ð ³¡ )©  ¸ f 
Ñ 	¤¶ 
\å |L Ôe °R  Ö’ ~S 	Ž± k9 Fs f  ½ 
bÙ Ä ], Ì Ñh 	¦> Í”  
 €} 	» 0Æ £ ûŒ Ÿ" 
K Àž KV è ®Ê $î D† $þ b 
™ Œ £4 ¬› ¢S èñ ±Ø ³] Bú  ¨˜ 0ä ÇÅ »Ÿ }x 	º < æ ÕÒ Õƒ ½v 
*í D3 ^Ï . C™ >i ¸ ‘™ '	 Œ 
>f · â;  ë6   â › F » 
?G š  Ã› b¢ äŽ 
†Û ,¦ 8" Dº m nG ìÎ O Sí K x Ü±  ¨( ó¹ 62  € :Ï ŒÉ T ƒ Ô~ ØD M× ¨ý €¡ V 
È HÜ ‡± ® Žž 	Üä ¤Ý { çg Ýå ‹™ 2Œ ’^ ¢Ï â… t  ó¤ ²ô 	Àâ 
_K ó Â¥ xK 	  »¶ .
 Ø· %¨ 	‡` çO ;Ï ª÷ ¼® ËO 3 9ì  |×  ü SC Uî n h¥ î¼  ó) h
 ò ¬N AZ 	Ã  
—Š %b bÀ 
CÓ úã 	™] 'k ½ x e 	-Ü kG #ë {M Š Õý 
qý ÒG Oã M  ÍD Ã/ Ñ> W‘ Þ M ¡l   ã ‹ •   vë N: „ t 
uE =2 ×º åD <¬ ä( 9J 1Ñ l â Êt E Jð  z® _ œQ œ£ ÖN G qý 	—ä ÚË úØ a½ ýU 
rí ÿ - i$ >Z È C‹  ¯ 	Îã A^ AË ¿I ™ < ¢" ž¾ w? Ö+ 2ß ÏQ ‘* 7í t» ë ‡r )» pa v 4 C] F 	ÔŽ 	J¥ 
t ‘¾ „ä ö /² å‰ ka ) 
À ²€ 	ñ §¥ e~ Bš  P  +4 
ße 
k| u 	Óã ÎL 5 Ux ÞÔ ?	  `7 ÝÐ  D1 Ò ± ì •‰ ,Ð ¥  î« Én 	ú ¾¾ 	|© ˜œ " èÜ 
‘ L– Xj Ò  m¾ „x ]  )? / sE ñ2 ³. sŠ 
ñº 	3  á 	û  kN üÕ Ãí ïŒ c 	Ÿ¾ ŽO  L* éô è Æ ¨ r 6a ò 	ÂY ù— 8ø YÈ .î øU |— ºÛ Í` ‹e äQ 	 À\ 
k3 •> fµ «Â 7 ¡? 
þ¨ ¶õ ”7 ,ž  wç /;  C ²• f ‚¡ ¼ rœ Fâ S ° Î m| ´“ Ùµ HJ õµ ÷  «ì ÖG Úö •a ˜Ï 	c Ï\ ô2 
MÄ 
q @ V/ |_ +† é Ç É* ¾É ˆG 	æ} * 	¢ò â la ¶ª 9m eC W§ 6ä ¿"  ïÃ  «Ü `~ 
\ ?¨ 
^S S³ \ž à~ ;™ Î® ¨ ? ÓÅ 
£S ÏÁ Æ^ DÕ ³ÿ 	Ø ¸1 }€ ÷á kQ À´ ‡Õ 	³– ŸU Ña ò cþ JQ Ÿ 
.9 àª ë. 4~ hq Æî ý. LU Ý BE Ìþ ±l Æ ìü Ïe 	¦ dá Ä	 
p¼ *‡ |{  úç 	r. 	ï× 
Žw ûß Ú Òý ) c— S Ëç ZÉ 	¡Z ¤œ 
é 1?  ]i þ8 œ 	Í 2 
0o š ® î– ìõ ƒÿ É= d 	©v 	ª~ ¨Z  ‚ 	 ï‡ óÄ Ç —˜ =— ãc  'ò Q» 4 Oh ï a$ è ¨Ž Ù’ ”» üj £ V. ª øñ Ûä T³ êŠ ß :3 	W Òt ¾– Ô "™ ¿ —\ ˜ u•  Nµ ÒÏ 0Ó v? Î °Þ ª ì *È ·“ 6Î ¾ß šµ Vì 	¹ž ëÑ Êt ó G! E? I† ht ¸ 
È} ëâ ¸Å Þ 7i  = q ‰† 9l # 
X‰ +c  Ã¹ ;² £r 	"¼ _; 	N B Qø {± ôù 5] •¤  (Ë ûø Ùå Ó xW ê;  _v  © 
GÃ /ˆ 5¬ ?¢  ›· S3 # ‘ ñ “É À>  ü½ 	î_ ï ©€ nž ýD 	+Ô y (# 
éÁ   g … 
ØZ e\ ô« 
Ý 	 VZ ô& \ bú 
  NL Kî ÂÏ  Ñ   o ‘¬ V " ²€ œR 	ù› gì Š 	K ,µ þ# 
fj › ìR Î Ý€ 	Ã 0 wö 0Y ™ (å ƒ Ã. •5 
[Í q[ In q· Œ Ë 	Íy 
íþ ¸ ;æ 
wµ 
D §t b€ œð -T   õ¾ d &ù ¨ bÎ u) ¢‹ â† <q Š 
l E ô_ ¾  Ò æ­ 
Ò_ 	¿A º 	,ú ©1 ² t\ v‡  	ûÀ ø Šœ .x _>  èˆ  ©¿ ^f åO 	' k  Z œ^ ì¯ ÜÒ 
þ ‰î !ã 	 ‹ † þ ? ¦´ " Ïô N× ¬  2˜ i  >  Ö ½ ( Z MÒ  , «» » ¡ ¸» ýå ¥ ¦— ë Þ Gí \¨ 	Ï£ Ø
 "ý –P ™^ {L € ÀË ¬T ÷d « Re è ø ã1 
h6 J¼ 	ìi @Ç ! G: x Lß H á4 	!ï á 
Uú 	OE 
‰# â’ K¹ 
{ö eð Óß  0 ­U .	 … ˜  •0 6` Îé 9 Þ ÿ} àb 	èÛ  Ý , »ƒ ½ Ú÷ 
@  J ¡1 _à Á @u šj bT x @ž Jå Å× @7 ïy pª 	åê †“ 
A ¶¿   •ï â= ™ê  ù, % -— 
T_ Jx Ì| 1o ®5 L‡ 6I Áâ Ž[ Ê 	¯Ž } 	=$ 	çY  • ãs ‚î 	‚` ú™ 	¾‹ ×¥ ºã ss lu %¶  ou 3É ií 	gç 4œ ¨ÿ œ Ã ¥Ÿ 
¢w l _ êL 9ˆ = 	¨d .¹ ‘P 	= t3 	ßÔ ô¶ k9 ¬Ø í åÉ 5¾ 	ÕØ eÛ •  fh ñ 
' 
 Gé ä¿ cA 
Ñ’ †k ¼ ¥× Å —ð ß½ s¢ ]f KT J ã¾ ! qz ­? 	 ªÄ y ñT "Ž O äÇ xN ce 	9ë {½ 8È Ï¦ ¯¶ 4Ç “I  5² Ö ­ î> Á¡ 	é¾ ZØ yC r· ^2 Uã Ò hÀ —A ®& €Î éz Þ yJ +á f“ 
½R A  b ‡ šÜ ©r  Ç¼ 
o²  a%  	_> [Û  t T` É< £p ª^ È× ß¢ ò. Â# ‘Ü !„ ‘ l^ ´ˆ àb 
nV Ç ¯ ¾ 	Í ± 
P Í 	M  Õ tk ÅN ðÊ Q ô Ž ý5 <“ Xå 2¶ Vö õ¹ 	ò3 	\ õ…  sù ¿ &Ì Øò æ½ ýÑ ï Ž_ vÆ ÈÈ 
iv J Ì¼ 	Ó& ÎÞ »ê 3: S} QG GO AÍ k ¨Ç ÿ ÿ É Uñ K— "‹ Jb ]b ÷{ß«tDXvrNØG¸´×¥XÒT&úz‡z®µ©öÇY
Ñ³8070701015D695300008180000003E80000006400000001642C0FB400000000000000000000004A00000000000000000000005200000000nvme-cli/.git/objects/pack/pack-464f7fdc8d4a41064ff98019522dea06dbe758b2.promisor 070701015D695100008124000003E80000006400000001642C0FB40000604D000000000000004A00000000000000000000004E00000000nvme-cli/.git/objects/pack/pack-464f7fdc8d4a41064ff98019522dea06dbe758b2.pack PACK      2¬xœ340031Qp,(ðÌMLOu*ÍÌII-Ò«ÌÍa0+}ûmÎ’73úÕ?0–Ðú\|Ç¢<±ª´(U· ³ 5'3/µ¬üçë¸;FGöìˆË`JrÈ?§¦Vlb 
ÉEùÅÅßŒê‹}9ÿZûÞ¼âÜîý;ëDE'Ô¸”Ô‚Ô¼”Ä¤ü°IÊGN[LœÿòÂ»²ƒóÎß™PÕ’œ1©<¿(;-'¿¼˜A]¨\ÿ‡²þ~³Ýkö?ÉŒjû  §cS}©xœ31 …ääÄ<†¢}vùÖ|œ—&Ûóä'÷(®ìhô6Kçd&§æ§3„‡ÍÑz|åùÜ ow×f¼*ãžò¶ÞÐÀÀÌÄD!7µ8?O/©43'…Á{ñÖ_¡¿&ˆ6u^Ü¢ÑzÙ#· 5*j®xœ342 OgW¿`W†íSeWßizëvù¼ôão»­òkøÌLLâ3óÒò¦¿~v2­9=Ø5¿Öõëºw_zpB$•fæ¤Ä'§•èe0ì|sÃAãñï×÷3Ì±	±pò“07 ˜•/Ò¬xœ342 OgW¿`W†íSeWßizëvù¼ôão»­òkøÌLLâ3óÒòÎ8¥›Ljœô:½NÊPóÆkÙcÓ¼¡
’3R“³ãK*Rõ2š«ÞWK™­ˆëÒû^zsÑI¬ãÓŽ  ·i+«®xœ342 OgW¿`W†íSeWßizëvù¼ôão»­òkøÌLLâ3óÒò6Š±*½½òçoÐäXK¥Z[ÉTCÏ7PÉùy%‰™y©Eñùizî‹}[­}Š?hð™ñ¿r4ixr¿I ç«)Ï¨xœ342 OgW¿`Wå‹š®—•d¿ÖÎr9”¥RÎ%lÈih``fb¢Ÿ™—–Ïpäó£k>IqÖ|Ý¼RÒ9±Y–Ëª '³¸D/™A]ü—½øÓ5r>ûe¾ôÎÿëül)²Š†…ÁŠG'L}_±ÁùÄŒg_&ôK… ê3h xœ342 OgW¿`W†íSeWßizëvù¼ôão»­òkøÌLLâ3óÒò¶VÅ¯:Ø'¿TaÚ¦—ÛÞö*ØÂU’šTš®—ÌÐ8Åéú¤å5Â–+îéažÄÍî-UR\RT°R%FÜéCª_Àvõ2Å¶–s!)È`¸)¹Ã×sŸÍçåÇãÿÎPú#ž¬œŒP±(ƒaÒAÇ3‰ËJòÛSN·ËHgZÅF GN¢xœ340031Qp
vÑõõaè¼gê>õMUÍ­5œš©¶f!¼†%ÎÎÿvn”x¶uÁGkßCZá{«¿9ñO  ËUÒ­xœ340031QHÉ,NÎ/K-ªÔKÎÏKÓËÌc8ëà«Ž³ºg„T'¯‘¯=õÏee~ Gg­xœ31 …”¢ÄäÒÝäü¼4®êy¿vÏ›ðìéŒó?ÄoÈîÿ¢ÄmVU\Y\’š›Âà|¢)ýÀ\ÓWïýZoUpï9xûÚˆŠÒ”Ô2Ý¢ÒœÔb††[7¶Üõ›á½Ž±ãüüþ€DŸ»Þ7&Ÿ1u§xœ340031Q07ÐÍ+ËMÓM,-ÉOÎÏËKM.ÑÒiz™y»¦	¦y}2õ*[Õ”æÓÎ‘÷Óö{ ûÛ «xœ340031QÈ+ËMMKÖMÊÏ/ÑMÎÏËKM.ÉÌÏ+Ö+N-*ËLNÕËÌc0^Ý#ŸÈ¿cûÝM
©\f)gxånÂu§é&––äCµ"k;Zÿ]âŒû…­¡“Â÷Å©V¼MŸ°ÎYLKIbQzj	HÇ7/óC3¸Ü?°zÛ•êšÎoû«R°èp@¶eÂ÷’£Qo¦Ý™ÿúÆÿ¥]…“ª÷mZ@¤xœ340031Q07ÐÍ+ËMÓM,-ÉOÎÏËKM.Ñ+*ÍI-ÖËÌcxøŽóòÖe{ª'íc/úÅºw²KU!TŸ!D_f~A~Nfr¥n^jIbABïº¿s=_|(:¹öœóu‹’°ï&k\® ½0®xœ340031QHÌ­ÊÓÍ+ËMÕKfxàµÔôÇ‘µRý3DNÌz S¸-„å¯!º²†oG~ìÞeº„û‚@ùC“«­¿Î˜ «± þ®xœ340031QHIÍÉÑÍ+ËMÕKfè»ÈW¿õÙçøÕåÂº®Ýê+|¸Ñ•e0¬úpO@Ç!BP—åØß3“Æiþ-¼ #„w®xœ340031QHI-JÔÍ+ËMÕKf˜Âñ”ízÈý9FŒª—6öžÛÏÏkˆ®,ƒaén®'l7øÇ„	÷»¾gä9ñÿ UÌ…¢xœ340031QHK)ÐKf˜ÿ^] kÌu·j3¬±ÿhˆPÁð1i³¢˜Â)Ýç·x•žmYõtþª­f ®d¢xœ340031QÈ(M,OÍÔÍ+ËMÕKfWh;×cœ}dš~;¿þ'k§Ãrí[1f0|™—Ó!øòêTQåW²ZwIæ]0 µà¨«xœ340031QÈÌËËO/Ê,ÑÍ+ËMÕKfØz…÷Ê{'Ì‹çÔrÚyüßÓõ÷$±)Í`Ð} •j÷Aòð„pá>ÇfN(×†*-©,HMIM*ZYÅÐeÃ}OfÁÔ½Bj{K¯¿ ÛÓ1­¬xœ340031QÈÌ+.(-ÒÍ+ËMÕKf˜[½åNøUyéüÅ\a+­¶{b*Ì`Yú<a^cÌÊ¹Ï×íYœ¼»àº?ªÂÒ’Ìœb Ê+‚ûù5oi—”Ù•¯¿Wò¶¬C %â0
 xœ340031QÈÌ+IÍÑÍ+ËMÕKfø–°Ã…sïýyõì8òSoßþ+nˆ¡.ƒA,Àcå&6â;‰§‚Ù–_¶óÑZ ©.”¢xœ340031QÈMÍMÊI¬JÕÍ+ËMÕKføíÖ"©ðüND§eßªIçvÜ>ºÙ›Ò†G"§RòxKÙyÖ^Ã}óÙ—n +--ÉÌ)ªýæ%æò%"fmÌ©â§×9ò¦n ´5)¢xœ340031QÈÍL.ÊÏÓÍ+ËMÕKf°ád9Âõêå]iSÖ™{Ó:/žôö=hˆ©0ƒÁ¿ºS©­X°6üÀÓ£ó+‹s®F¥  ¯&>¢xœ340031QÈK-I,(ÐÍ+ËMÕKføzšÝ˜cÇ¦ò¬–ÃÙL¢3ü#1f0ßóvºr[|G^Åú%.Ë¾¬9/- Ÿo¢xœ340031QÈ+ËLÉLÔÍ+ËMÕKf(|°Ç˜õåÁeýwßì¸[üïÖ¹ºØ_†˜
3lÛùD^¼;§õÏÊ³[6˜°Ü:ÿ ’B$õ¬xœ340031Q(N«ÐÍ+ËMÕKfð>¿?kï¬Ãó}Cw„7M˜mòó¢!šªî©7u3/GTI™¸¬xÏ"/ÒÏq! Tß®xœ340031Q(NMLO,IÕMÉLL×Ë`°üpyÖAM†/'ã›Ôo°}ütò‹!ªÊ¼²ÜT½déË\!…Cî.ãîVžþ¶;dƒüÌTl*3f~3*þ°Ïpî’.µÿÿ#>L»°}ÝL ÷ì4|¤xœ340031Q(ÎHÌËËÏÓÍ+ËMÕKfpò¶/Þg°eÝs“O†K³.ë÷XúÏ‹ÊÕèmÛz‡mŽ3X;§nAöÿÒGÇ%MŽ"Û¤xœ340031Q(É/ÎÈLJÔÍ+ËMÕKfuø·<vóûIË¦©†·q2Ÿ­/«2Ä¢2ƒ!‰ãë}‘åå“ƒ~ß˜){AHúƒå¤Ï [!N¨xœ340031Q()JÌ+NNÍKÑÍ+ËMÕKf`rüê¤±òü!Ùcy•zjßåŽbU›Á0§³Ã‚Gg²ßráË;X<ú%;ÿ BØô¤xœ340031Q(Ë,*É,ÍÕÍ+ËMÕKf8q_(‘ï}ÏÌ}/ßjû]é´Ü‹Ê.–Å.[EcxçÆ4ž.[ueÛk \!°¦xœ340031Q¨Ì-IÖÍ+ËMÕKf¸àÒxâÜ‡PnF—€SK+ãj÷¯ükˆ®,ƒá~ldÿëU«Eç2>ªæc²N]wÇ/YYiIfN1På÷9[WnëX¿×‚=·TýABW@7 k..x¢xœ340031Q¨Ê+ÖKføÑ0{IÉö‡–ÇEã¹4C£w}Éó˜iˆPÁP¾ÿnÚê?Sn~Ú_Âp?VdïW¶¿– \Tƒ­xœM ²ÿ100644 gen-hostnqn.sh ³íñOÐ1n½h`;J¨ü@qþÆœ100755 latency 
ŒÄŽÄ.i%«ðuKôùê‰4Œªxœ340031Q(M*Í+)ÕM,ÊÍHÓ+©(aÐ{W°µe{W¢æ¤Î{â
Ü7›ìüiˆ¢¶  ÙÌ$'¬ÚçÛJ-½}O4JV	ÿž±'tåäÅ $¯¤xœ340031QH,(ÈÌMLOÕ«ÌÍa8æûÛ®=M“OŸmÖ+ž¸­Æî3[!ê’J3sRÀŠ¢¦iÔ8ìØ”­m¶äéÖÄ9w¿L¨¢¢ÔœÔÄbˆYOÎlçÔ;d­´Íøã”ã¦ŽŒýÛ Að*Æª	xœ340031Q(OIÖÍ+ËMÕKf8/ýtÕ?5ßØ˜cW¿Üößpyâ¢C4U*:?W>ög*ZØ•X¯^ÐwæÇ¾­sT•–dæ³x&wéŒÝ'åDÛŠÝE9uÆÜ0”e04oâxwÄ#°”½pjÞ«çOís–/ï B>¤¡xœ31 …¤ÒÌœ”øÄââÔ¢†¼Ê'XC’bûÏß‰[j/V¼ñçB°²äŒÔäìø’Ê‚TÃƒ©ï
OÓ©,þ¹wÁJ‘ÂÎr®PEùy%‰™y©Eñùi<ïz{]³ÙýtÎþIuæ.B”¥æ¥d&æ1OÓú¨7Ydµ~ËéãÎuoþ¹g
DANfq	Cçïÿºk¦z«1O°Ö‘íØk:_þDº¸¤ˆ!pæÕWËÊn/Û˜ô±Yí—˜yÙu ÛoVå¨xœ342 OgW¿`W†íSeWßizëvù¼ôão»­òkøÌLLâ3óÒòÞ?]±û^©aÊ+…\nß¦“{¼æ‹'C¤æ¥d&æée0˜™À|¿7ÖP¡këÆ×K¯?› O’+S£xœ340031QÈM-ÎÏÓK*ÍÌIaXòô«Ô„ˆÒ[‹òƒf¤p®8•loQ–Ÿ\ ›œ“šX¤›V®[Z’X’ª›‘Y\’_T©—ÌðïÃœÿR%'”úþ%u™ië4‰ž{Žª¿³å­DùÚ?.½\˜ñòÈƒž's‘4æ•å¦Yú™íbä²¼/šÇWH¤h÷Ï‰Wt@W•ÁpˆÍm‘KXÊ—3—’Ùž½[“ª½ù)’ªÒ’Ìœb a&›„vMìu˜üàÚY9ÿ'LoìËåÂP–Áàra½WîkñžNß­6v[Œ¶o8ÎS ç²zK¨Rxœ340031QrutñueXú« åï‡yŠn
û.M¯Ø7kÿÊCˆŠ†Ì†¬y^.®™*{TÒ¯°×~îÿ•OÎÏKËL×Ë*ÎÏcàìßÕPÅ¾“19F^ùèæÓ»oHC•å¦è%•fæ¤0$ó›Þ¶óú‘®~üÿô¿Ãå7¢~C•å•å¦Æ'–”$&gÄ§¤‚©¼âø’Ôâ½‚Jöƒ¿žÎ°Ý¦éž9ëÛÐ+*6 kLÎÏ-H,J…«ïýóÀ}zgZpÔžÕMWNß+9¶ñªú‚J¸â^¹*Vë¿x·jzÃàóþù$ÅE©‰%©ñ¹‰ÈN
¬,Üª).z@µjò*þl³wÈºRŠsájojí‹äz¤x0R^Ûà•ï†©?“‘Õ¦åÅçä§Ãuìšx@5;þäæÿó÷­*ïÑr¨DÖ‘–SZœWýä£ú­ƒ·|V9ñ“Ù§âLæ4…UÕùE¹‰%påOý8g$9Çt&ÿoÉ+xÙfÒCQ^Žâ–méâ<¼óW().ÿ³±NÇsº£'²òôÔ’ø4`•¥"‚§Â_ûÏí=\ÁïVÝdØâúZ_ÀQ ]SNRb|q	P#B[ðOóäÅ{útn.àÙø2£pÞnÖdm™)ñÉ%E9põ7½N¿Ü°ÒÄ8|aÅW‹G	ÿ«âÑÔ#ÅYÚ£ŸVw
ç_çë“/â»göZ€QY5’ƒà¤¬\Ø„ýj‚®Š»Œ‚Û·7¼u Y0}¤Ä—e– `Ï:®5t\Œ=~8OãÂÚ]–\†¬¥83· ¤H%"éÓºõÚß©ìÐ±s©3ßÍÙ)õx‚Ò4}¹‰E%(Ž›˜÷eVTž®·kkwÙÄfc¦-‹@ÖSwõÍÂ†»ßù‹Žœo˜ô+V[Î£ÄèººøÌ|Òý–lÐ`)µKËMº°ø÷½÷¥JnHO-)¿ ¡É’cqì"·s^§RgÔM|à”…¬¼,µ(3‘Ýjšú÷o>øIîÆfíîÝ=†ÈÊÁYš—Ì0-ÍW’LŒ×?¸´5ÕöZ×ë’vW-U©Eùˆ¨62||wþ„%©gjNþ;9ßqýùÃP-E¥yñÀìŸ“™W’ZTRÜ6ÛÎ-ˆ'NY¿~ûjÜŒ‰ÿY•E™‹¯!xœ340031QH,JOÎÏKËL×Kf˜®Ý›Û^K0i©°W_CbÐ/}µ9†èÊ2ò>o[8åÍ–’v¥)zGŒvÎtù”ÓU–”Xœjf4Šýgé‰§/"ž-r®yf|æË'¹éÏQÕd0ø¦§ý“A?n†ês?ƒ›Û7MÒM€ªIÎIMÌ+- tmMMz¢N°{3s«„ÃNOehŠ2Â£T¯3V¿½±­Üf h«þ‘s—ÂaŠŠ’€æœÑíW¾Ç™ÿÞô–H šôëÕRé(J2žôL¿Õgó6TÕã2oÎÕëoZÉ™A•dççi¹bÄas5Uéï‹
aö©mÈ*2„…N7Þ~\,ò2Á-2+ï·ZBw'TEn*HIRifN
Ã·ˆÎ®ÏRzY¾GêýºƒÝ‡â ÊŠKÓÒ2+€–õ]h¸ÂôvªÍós£º,{7ûÖë#¨j2â–ö{¬iœ´«þ4{¢ºí–ÀÜì•“¡jJ*R‹ÆHœ»^pÿcödMï{ª3«Ln0é¤¡(É`Ðë(,mN;œ,–»ÝˆÉDÔêóï9 Ô¬¦xœ340031QrutñueØ%`´Nú ôSÃ½‹:bøw/w9“fQŸW–›Ê)ÐÙfÇ×·±Ñ$žeKÆÖ¨s?‹ÖB$%gè‚é&ççä¤–dæçég0ý}‹Át¦”çéŠ×¯øù¤ø±J ¢.¯xœ340031QÈ*ÎÏÓMÖ+/J,`87ÿ«ô§Ï²¹~ÿll~}½Ñ²Toå9Cˆ²œÌ¤¼²ÜTˆ:³ö’EÂö±©'¯yØ^ôßÎ·#u ó, ¶¦xœ340031QÈM-ÎÏÓK*ÍÌIaÐÌ/3Ÿö0PQ?Ø~Â1—‚ž?)õ¯!ÊJR‹Kt‹KÓÒ2+t“2ó‹*u‹ŠSõ’â³Ž¬˜–sª®Fgã…yÌs*–Ã¢«8®cÏ$× µvõ93Ï×kÝgK8pw._²ŽÒÌ¼C#  â3Â®<®"ÎîødÿTÒ•ÉéòÁ»XU&3.nž¿yÝ±¾£!ÇZÎ OVX¹¡Žxœ•w UïÇÙŠ²3’QˆÒ@Ùóº.®q/÷‘™­BHJFfV!)³ŒÈÈ‰ŒÈÌJ¶ø9Gßï/Ü‹ï?ß¾¼_ÏysÏ9ÏsžçsA3""Ì47ABOC‘SœÅäQAq<Â§_˜ÏH–:Ÿ¬d,Ü´C¢ø`·ì`4‰@ŸFã\é§’ålø¬~„`ZÁ‹Gý¼ý—C ¨µ	Ÿ•½|#iwËgÁÌHBYÔµ8Ùp§eªøfØ£_ÿ¢ù¬!p<œ¼Tp¤ôi·û>PíöaòúÃ ˜¨(óF[v++>G˜1à6Ç™¸{}ö»Ÿrðšˆoúh§éÝ“õZµ† l f0>cvúÚ
ïœ¬¸¢¢!ÊæDÂ¹¨x?ò‚–mYe±ÓoÐ»	/ÒÜÆWª<7pÜ2ñõæ?i‰8ml·2ÁIâÌmoM¶2f¨À¡F}xCü{èOá`ãƒ˜XÃ|64ÚÎeZçõŒ÷­ù¶’ò1#b-v¡ÛŒÂQÃ» ævÖV8½N2GoWn%ê+¬ðüœ=Ë®Î¸ÅzyþølMáÛbäZ—òR–Nððé’lA>+¤Ù†-uù›·QòD¤õ‚l³æoë:Í(1%Aäç7êÓü_ë^fÕŒ|>•n„)(äu?Õ‚¤Í$áx7óŒx$"VSt–¶díì Ps¾óC§L8º^S½w*—°€1³fÂ;9‚9jø)rø;FõêR?­aû­yÚ-s1I¦"‰u{ÿgwQÉ£¶7	·[ÿN#‘vGe÷çˆ×óðŽhºãÈžKÔ	ã|„ÐÃž…^QE˜±8Ë‰(Îë.B‚™Ø^ÂŽ R|-<fÙd7‚M—èåÒyøîŒÀÿ& nçÄgmfm·!E­šw¬sæ’
ÏÊàð-³ç>¢,Øó Ô*îTYkTQézRØJªm]ïÑ„vŠ8©4ý³8œ©ˆ>NY-ù…Ì§ÑØÂ‚0ƒ™lX>+8úŸãÕí¯òd w:á¢ÆåÀ-êÚ†Ïx{Q à2¥ë™A1î·×›OFKÊSp~)Ú4•~T;Ì­Æò³±–å@8A2ª¹¨e+ƒZò™˜oð6|–0§ÇÞû?^»UÃ ?~9Y‚û­‘1Ï®(êÖ1${%D6^Ý½–SÚ$ÎÜóØã])Àîéò	4¡Û5Ýï¸AMnœ-;!;+ô¿DÌ¼YT",SÔTï—ÖaR%cÑS•·¶7H˜aÂ7Ù¼`>ñK ¾ÓœzÌ†Ö$7-Ä#Ú÷‡‘%´giÀìîQ‡E­‡ÕôÉ/¸Æ¯íJvËê…u_‘xö(/X°º_WV¼õh#­7ÎlØ†ÔùÁàø’{?,—8NZµe“ÅŠ<Ç”]H¯Aè5ÊIN>ø\ ý«²9ƒé¦0 €+ö¹?ÔIÂÓãnêÉnh˜ÀÖ,Â¾ynè:„j›±>“]zûöbB©áôAïmQjÇ·ÑlÿìªÕã$@<²ø.™­'iò}[´*óoò©ñ›ó~ ÇÉ6 ÐÉ½úP_µþ”‚àyM[›«Òì†Úò*óšãÔ‹Ï—Ç Z±uä©_ß“õbJ‚ÇVÍý|Ð1Î®çFžÒäMñÄæn‹|5Å×7µžíè3¥ïÖ¹5k\!Ô£“¼LŽ´?vJð‹jNnâ´<½#nœhtü!½TsxqecxÝrÊåðBŸI`Ë'2òÁ´‚Ÿ.¦Î;Sò…JÿlÇù-AbÛ<¡•¨+/âjUÀ/¥$¼ú^û,iGæ,èÐS1I0N*ÔŽê# ‘Ÿ³ì?[õséM‚Á|ÈcHQ®DsÝ<P4°åÄ4YÁþÉJ%wí’OìóŠK‡ytÓWQØUë`Î‚"Õ‰ã4Tx²­Ò"úôaãZ”|‡9ˆW&³Süx#ET»¥S÷Wh»á«­i„ocœù1ò’"'üÃæ¾ÊTE'¼YH¹˜Ž9ŠX3tß™Z—’‹!¶T¾Ók¬‘$69ˆÜ8­uµ¼9I[ÿ\é*Š¸†bêbkúÿ³f¾>ôÅô­l"Ö¶$~H¶¯äÜzÌYPä²ÛùÔãqÌ/§›)[úÛÂx*˜ã€È[©^TU§º¼Ôu}w˜GéMÊ­i8Æ‡†Y™òÙÁÐÀ·ÀèEœ„Å9&†™Ü˜–¼uvE@­Câ_žnW«|UfØ\CÎ/îJv‘'µ%.âˆy2]pMþ-sHn·Þº·|X¤IÍ±‹1¤±££r²ú%#b{
t¨àmDíð@O•NÖ¸þ•¦ü¯ñíA`³ª½Ö4þ^üZ>*kvcÆ7KùY [s(>
ƒ; ·]¯
£E»ù²Ã^Z©§(N0ˆ9bKƒ4†hI¾‡Ý_ª,›hß×¶$‘ÑbÀ›õû|1R×Ä9¿øùËù×u¾_ÛžGÃ&.ŒªlÄÙŠÔ©ž¦ïOŸøBÕ<‚1
Š˜Î¬×úÃ-îŸ'gyKØÞóìå9ŒiÀb\?“,®Ó—ÑŠk²i-<Òòù[¾­aôÖ›;·Ï‰³QéáàyÜîÕóÆ¶Ðo»  ‘¿f|Øš!¥Áì,òõÛkß/“9ìÂ ^–Ãƒ‡{RN¹ˆöçPOÏ«›«H'cF6œˆò=çOŽ×ðzšR0z×ç-g –0ès7.Öì&¹÷ª¯ð¯šãé
&&D±ä—‚.ßey(c5=Ä»ó#¯¥\âgIçqjÃ¤N¿"¶:ÓÌ©pœ=ÚðUì²ázMŒQÐƒîów¦ü:gÙï=72ž’·RØ`Ljw¬oæyò­É¼M±ð9xvÔ¯îÓ–0¸j²$t)¤¬æH¤¥¦ ²œžæðÜž·]·¾È™R«­QÓÛªsþÂ¹­Ã
 lv„±_©zJ#úÃ³ñ­ç¯®|ø;35Ý8Nè?£Öþ3uÊ–iAeæ¸TKÔ]Í)ØÒ ÆTUÅv¿©O¢Íå«)è¥¦Ol øÄÛHÌ×:w?;Yøp}€x…vÅð½-y„‰=
‚Ø¸çÀ`ˆóÉÌìZ¯J€j çP®?Ú¨àò)c‹å~HP³[uÐÂ=Å=à®ñM™€x“ë¾Iûe¸“”êàâàÔA¦µ€2)5òÌì¦(=qodüwEQ²’§X_“‰šbÏƒzsŠïû7BgqçÞ¿]`Ãó>Å€¤Ž¾vndr‚ ‰‚Ô¡"†ô¯·ŒÑ`(õGè@®£cpÒyéB0\U†w\B\ŸŽaÎ‚27>ä6¿/Æ²?<É”{@—Fç.æ8 2YPã*™«üÙÓ×}áerç‘Z†ù-c?S›?#Q ×¼£Û`jéðˆíÃR.*Ê„$^*[”qH)¡û¢£T{©ånˆÛäÕgG¸±€N…à‰WÅ^Šƒo%"úÏqÞ={Ú`{ü‰›·ƒ–çC¢&*ép[.Zéù”5õ0`	ƒ2Üg¿2R?ïõdSaFÍ9Œ©®tpbÉ.F´gzBŸi¯J¹ÑèýH±­/°1Ùž,þõÉò\Ër:ùJ˜!^2À¦ƒæøÙøø]€ÍÞó-…0B\Ó¡ãáoÜƒ.3ÇMvaÀžKëX	‰B
÷Ò$y®s«ãØ“¡ÈÆ˜PRôŽì{ø!'UêÀù¨˜¢YÆ¬í!æ,hÃê•ØZúªÌœ¨+èZsY&ÞÂŒZ(æ8 âqPúZi"Ë`à|MüÑ¶èLi{À¤P†cö#Å„ ð”Õ	Ò®Ú!AóXÂ Jgn…QÍ}ƒöRì«ž…FÓón_°äÎs¹ÕGÎv”‹ÙD†ÃqnF«.nÛÛ˜lŒŸ7\R^[š\:/pÿXîò•ÜQ-Ê†|Ër,aÐÅ¶®…“Zƒúû)wn¦“ð—As<Xò€‹¢MÙå~wo}kÇÉÆ{E\„½Gvœ8öhˆ ôC<¸­ÚáBBMLú˜Ð
B9#æ,h2Oþ¥8=þþ»ªžšlÍ™”»Ô˜ã€Hf4SAú1wU²oÓˆ8wü»“´_¯nIo<£íml(»m	/žÜ-Í©KTæOÒÖ«ÆúÏk‘ï‡%¤Ó¾ ÿXð*ƒŒ,×ŸŸ
¹PÖ§ÎìÒâqlU®ÆþÀ3”×[ßÒ'›ZÙ£Í7Õ/O;dL>)PçØp®xÎˆ-nqgÔYY‹×i·×Z)$` ÞÜo´3
lœ«!ùì£ÚÑjûÞ‘å¥,“tJÝòŠ-I`*ñ\¥Ì)>eð‘¼â?¨ÆòCÜü{ç­KÄðø:Í˜õ•2q6eAfY`ûµ™Mí|%~±¿2†³ÆÜžôHÉto‰:3Öp@ÁƒÙˆô$dªùç¢g&TÅb²˜³›³>ÔO¶Èßº%$¬°ÔC=$Âÿ²Bsv»%½R­"_¿ÄáiŒw˜Ùw}[Úéˆ°BB€ñ±¦ï[‹2¼Ì'ú\áäµ/ØS¿ÉaKƒ2³úÈÄ;¿xçVÞ@ýKER^o}ˆ t¼	'¼Vîãûqžg4ýª}âÙmùÍÓV±©³®‰M4å#BWfÍKWr÷t"† (±(‚ïÞ4-7QR×u`€\°Þ3i	C¼ Ñš¨xº¢Xé—¯<µ$+zŠ­«þŽšÁ[gæ2of¯32»Ãa¼ëÂJª T&» ›÷^eGA)ÜbRï™çï"ä3âõýœwa /§‘	­»w¥ÎzŠ%Õ–'Œ^='µ1G¢í¶ˆ©oó27(3»]ÏÆ-ˆs>«’û•äŽ-YÔ·N¬’Ù¾èô5wmYÆ€S~k+:òTŽTç¼µ§=1$E)0oÏÿ=EØðr™¶Ô-8˜Ÿi´!sÔ*=zkÞŽÏ¶q‹'âîð5K=>q­±\Âìz+}jï™âØÒ >ûK¢ô|¿“Ú3PŸúP¼*g©§Û°€Nòœ³ó¤Ñ«Ec]IŠ/g<Ýôg¡ÛóVÆÿwi‰8õ)‡ÞšDº-Ám"s°éæ. (ÕB˜''y:®-½fø4]XVj±Ë.àuÄµâX^§¸ÆÃléc¼$1þÎu;ÍI~Cq¸SPÆÃš^GÓ’Ým‘{üïù¨#yFm]<*àGÈ›ÇDR…)(¤òä%ˆ*’5ßégä$vÅ‘ßžE ùàÀÝÀX™ÕK€•"¨îûÀÑé˜ÏJ¾aÎ‚Vw¾ºÅûŽÐC;p–Ðä‡¢ðnº`ŽƒÝÃ§ÊÖÅ‰ÂAÑa•j?¼ö®¯w·§mPHÊ¸…Äl•ã¯%½ÈÂŸÊÎY›D$5êhçÜV#¡X¨¿. ™Ù5>É¿Œ• ŒrÞ4‡°›‹É‘á{°æÕÕ}æoÀfe<#“½ÖÍJëË#µ„3Ï•A©ŒœèõwÄ@_ÅÎ£×{MØ´,ñßù÷Uáü²Ú‘¶LJªô¹Ð_ôiÖºLô×ÏøW¶í!Ž080éµCsm¥afˆÆã†dícèGmCÄtv6—é	’Þõ^S]¸H5ORvQÓÛ…¼~5/’²¡¯D]t?EiðâÅtö¡ß`õcCªÚc>ôéµš;ÏçâÞ³å#{õì±¥A£ØŽ¸’yÖ¥1WeÈ&h NqÂ :°ä²ãœ¢2•ýŒ—U¨¤R9·èüÿøø.ê†Ø?Ó}@Æ¡¥aÞæ]Eµ<Ž)	jü¡½zLÙÆÝQWö-…A±XYU£3¦0 ¿º^1vyï¶Þ½´{•S	Â†ÒÛ²&Hp±XÇè,sGc9uè­ƒæLÃì¯³5˜³ Æù¦Ÿ¼âLÉÃÃI¯úI™„IC1Ç?ÿs*TÚs)qNõÃw+W~üd<¼-GB{ÛÐ]ŸUZÚ¶Oç?"ß\.dxé,‹)	JæJ×Ù"ºÅrXùDZ=EÓÈ06($¨Òõ®>2:›·HQ³ÈFÈrbb[XÛ¸þ;Úªµâ	oñ|¶RÃó8ƒ7ôkW”¢WôZä©ó^$¸HÃs"ÿŒší®`'ÔË±þÊj»FË8èuX~ìiÊ˜žœ$<Q·ÈŽ^M™a	/±Á¬!lgôèJhùæ¾ž•hH’Á~cY~ŽëçÐÎ(°ñøŒ#7½ëƒ/Ÿe8fùÙ"Àt‡±ƒõÆÓà†€£Xâ”××ËN.YÌä;W·2=Áœ%Ø¾V¯sf4û}@¡D.2/ó²u§bŽ"å‚²¤¡‰DjªÊ£ç–ÈS·<«Áh{øÿÏ¥&ÿNU¨M¥øÍÌJ
dòÔKutÁ™Ò¨÷‚Šöåçk¸%‰iÅÓ6IÉX–Eïƒ|?á™Ý¸÷åTžM²çÁÑS8·âçó¶¢v0«¿.ô¼³fènhCÏ`UŸ±ä÷ïÚ±ç7û…~Otê¢¨í$Åc¥(>žw
£Ø@Š
¯J›î:w¨þ†‘Ùàûk™¿1ÿE! V 	%ÃÌEÖ¦ÉU¸Ûí¬+ízÑõ†ür\erðŸ½¯B.¨&šÐîÁŽü8‚’-ïb	h2»îå+ùœÝ‰YAìþP¸^sö ½iºÔ
“ä7§wØv#6çæ#Ž~,c•tÐm¾÷)–32Þµ¨9¸,±À¼*&ºåæó‰S¬·ÝÉXCP–À bi8ûGð® UÅ†{pH<ó8n«-êíÎ€z_ª¹yQ«2îFYâÇüDV‘Ý1@ðbD:Ü‰ßôè¥BˆÚ3æ7_”;)´õŸ	>ˆ	0:ò2 ´_U*6x–©fzÚ8üãbü^(9AnÅ½rtH+G¦Žø×9{“4á½@@ÓeÍIŽÂ“—ÙËI§¾öäsËY½Ì;9;˜õÿ'Šº4)I‡=ñ;ÞÁ9A¢ø¬/Hóã®(ø;ÈYˆø×êÛñ__%5Bxi—Lõw¥ÀÎÙ„uþc†á¨©¢ílß«wÂ‹ì™[ $XÈ¬Ü8l˜3'Ç÷u‘SÉá]ÑÊ`å†bƒV›~$7‰	!ƒ—º.¾õm*ô=Ž• Œ†¨J%({šœ²ø²xô‘]?1Ö†îæ©Ýw0	WnÍŸ?ÔSIÓî»€5¾¹>»Xw{H0b5hû¡Úëî‹ˆ™0¬Xötÿ>Kš²Å÷[_ :—BØÓÔ¢rð¶ÕbÍ‹¦dà>Yíø}$êa¹g}ÅMléÍÉk›H	õaËkü=2„Â°nÞG?‡¶ïð–*¬bü“ÃC8ŠI‹ÛB®¥ŸÝ21÷ÿ§—?÷4—³ÇèEO/e7X§»Ûâ3>åÍØØœBâ–*]×TÑ­²v7Õ«?£RáM »x‘ù»[ðçQº¬=íµ›4]|‚Ü2ÏVÛüé ª2³º_ãð¾†'álò®ªyí«Q%æ,hó´“_•·oj–Õµ&yKY}ö
æ8 2S¨ÚIkn°f²Î})" Ê(Í¼#½ñãš¡€ƒï°¦°oÓÊ“Ó?=ÞÞs|ˆ-ÊÌÍ)åÃ£º¥™ìWåÌ8„Ø||¬‰4öžÕKDjàÎÒx±,àÙîÈƒƒšó¯ÒUßÕÒfßÿ|€¾Q…–½SÔXZ–©>Ã‡”¦VÀ½2ïsY×¥T¾SP°—|Î"Ï6a”¸œ8F÷å3ñ­Y´½1Ú	ÐðÉNø¶’Äks+XW}ÍóîêÕÐ,liP%>#xÀ6 F<Ð	UÛó»& 5 è˜ª¤ôš×f_¿çšÁóÞX¹`{ð4=ñ`P,¡ÀE‰öËj¼»FÓŽ(@Üàs¿eêôìÞk¾šæ ´ü­\ÔŽ$x3..QEÆw|ëªeóM½ï«wK	µf¾6¶~…‰d!Üø¶ÜÝ™ÚÑ"9•h>ŒQÐ€àXv×hóé<ýa~™@ùÂ)jûÓà¼Kà•õ§s³N¾8“iwÒ£R[ÆöÖ08„Ïßìÿ\Æ,­ÑžšÂa¤L·?©ç5ó•âîEn*r±¯Ž„úS„wÓk<pH7)LØ4ån;6¨7Š°–Øhê$£z²å`YÃÚ.,Ø/íH/¸0¥å¿·(Æ?yðø|vÃ•}Â ´ÑP§
Î‘‹×ElÞÝÐ»ÿ^‡ÈsŸ<ànöVÔ°¹ý¨ÉGûàe)’¥ ò­8…DðA­`ŸþgY8ýµ£ç¼ÝŽá/»é½Ÿt)#‘ë(Þ
z×r¨9ÀÉŒ¸óŽðÍ%ÁOC¿jöEÖ×¦Gâc:‡‰2~·ÄúÑ‰$gê	b€·Ym¹ž_¸®ìWÀÉ:«ì¢LÜ·ºÞ—©ÈÏš—pþñÁÇÕØ²“ë$³ô^  )–DÒÚþ
?³ö¥Ž§ƒ1m6¡¤=A˜ü;¦1ˆ~RÜçzéúrÛGšÌ	j–µ²öéÝ™ÍacàÔ÷Jn¿ÂÛï¨š%Þðã÷{ïŽ‚æß¨¦Ô¿Ý¹Ï{qÚU÷†AGˆl
<üÿRq1>u«68þó}‘‡ò½‰ÅKÖÕÝPÐú/•¾}™O¤—cÜ“Áˆ·Êc»c`ùÜÍš™-J÷$_~@ÿS…†YmœÕpØß³ýñäD:?‹¢ýn—¥>qb­[Ú
¿Öb³"§áTÁ!{/¹ßïwQÞþp@Ü0›Ñ)É„âÆ…»Ã!ZrÇ^ª)ÇDƒÃà!ðŸSôØh­ç	Ú{RVIƒ6|PHŽ«-dOlSwäÑUC!–Câ¶t,¤¡Šø¥{’``‡bFè{Þ€·¥ü³¸ÈïÏ` ñ0NBÿ{*œ9Ëxòäõ'Wi%¯²\l¬ëúdµ/4ngå²{eÃ%¢3¢À[ÙóÕ^Kzu_4`}W*êyyCVÚ»’îþ›÷³]ëÿ†0;ˆ±ñÏfq ¼À4~Ç­Ó~Ýƒ­…Z@‘IŒ¶¦×u/
t½âÏu!?å^4êšÒÔ—Œ¼†Ãý{€fY¨½OäJë‡áDŠóÐ\Ç.œÄPÚúÿŽçsº•ß’÷»jJÞxòP°–EÓ®(h÷•ìûšªïOa#¡†ðËw&xÃ˜Êw¥À—,#›:ÝÆ9?{Bùs.?ÅÑcß²6‰@ó™ÀÐà4Ûïù$üAï³RÂ’+..Æy7£ ÍMÑ7síbªìI¿í­ùŒ«sÐÁøÓ€EàZIèªÙ ^¬Ï¬ÖS
³*úmaÔF6Êú=^-˜(Rz<ÀÈ’øãèvEÌYÐÃ›=âM#óÅïs1OÞ$>0¹{€9ÎÎÈú‘P¿ÆK;¢á'™<-ôxÃ–´ƒõ_s3rÏ¦Y£‹ë¾ ãCÛFÎbMƒ2R'súÏÉ±æÅ!ÔŽ­v;+úÙ× è¬(°¡[ýrÆ/¹#éJ­Â†#0ä·OBú¢dHÜéæ»æ§¤¨ýÛµ³¾ØÛf0(9ù…G4T´,¾¾’ø¬<dO0…ñtÄšºyù‹	R·y˜¦~»„N¤C·•kf•Æ5O¤å=±þÜ‰9:Ý1Ñox,Fè‚	²>b’‡Ý…s,5.\Ž’Û>™ã¢÷†;&¾ùZâ‰¿ÓH¨ÍŸ…©#¸muÊæ£^$
X†¹“w¶íþlìMæ‘‡?´¸²›
ZöÏƒÂ3ÔÇã~Æ®Ôþêû„ƒ}ûFéÁþ› v‚…è
‘Âëº[é¬4ùë}'ß*9C··`µ! N|ÖÈÑè¿³šm)/½âGhÓàª)…ù‰¤ú–û!7Q“Ø.±êqÒ¸¥K’¦Cß;×"Ý>¨,}h@³éŠ-‚YA×LnJ³'og·wulÓñº	_·èpÇ·GHØ\§MÜ5×&]U¯&0—,œVô.+úeÐ½;JrÜ9©¹ó¸ƒòÑ—>éBÔìþ¦6zôÆO ”ämæm:¿8E@{£ž{`¤O¿Îô….õž¨©¤üa¦Ñ8r/Pˆó%ÔÇš `O0õyðKç€PüJô}shÚù!šO·€(˜	8¹½nñN=ÅúÈ$ÅZÀ‡·ß\¤ŒR'`û A[Zæ<÷õÂŸS8”ì´-CUñä÷Á¾YQYí£ë*Ær%šLF¾C›¶£p¨ÄØ
¶°)kþ"F¿t'GsäŽPÄA¦ËZ{Q›uEx¸o<”}nÀªX½n=>ÏÝ±—ÛA@³éëÙµÛRöqš!öbzbÈ‘JqÆ­|ã¤qï¾À»YÀ­j‚@çùtºÛù»¢äýãÔ;Øvg@E‘SIu:å2¢È;t®!b:°™ùÒ_»c€ t¯½¾+y€ÏOvè7eŸDÉß
j-b)õâÞ~IÍÑ§Á)8sÍèýŽ¨‘×Óçª7­[|°brM—/¿ñû1kÄŽ$°e:ÍßÒêù,9ó<\Gº4»ŽE«­ÁÍ•ÍÒ¤2ö–y«þ÷H¯¯kI‰MÜ™·}‚dµ 7. ÊÁÈËð#Û§ga²ô;£àï§èUGÄlÆ§C8Ôwq[ýåˆ·%6n“¶öp°¶Â{iy.çžðú×V“+Åþ¼Ç°ÆAIŸ¶zS¶(Çç‹Î÷{N3ÜYbÅJ FÇT¤Ë‡ïLÞõœ R£7Û vpÓ?çò…ÔÔÅ'«¹¢oöùgéÇRòw6ç2=Õ5²—Z”›htÛôns½•×¯º²–6|øô¥ÀÖJ®¸«ÔŸ¹¯IÎR×™e‚‚™w Ä¼ˆáB<3šoøZ™ÝÅÉ˜‡":IØó UðÛ…Vçç™J pÓŠ¯JNK`G ©>u¹T
¶LórúuŸwwY`Ûh€ØèïÐÀÏçd0!Su%qÙ2ÖÉôÅÜÆ˜4¬qPi=´°%·FR§±þ9_ žù•pãKX	À‘•{Žž5öüà“ÎH*kÕÂŸc €É!çÒŸ¿£ÔÃn¾àH›þ"N)w`Š¦[zó=Ã}€BÄ+òÖIå?ObÌñ8r ®ÓâòO\8ä–7³¬QÞ8ˆœrØ²Þ…²±6^b1^z×\;v%y´Úè*éT§à‡±Í%*K>Õ¸s—´§4,÷ÔöNQæíH‚k£¤^Ÿq(Þ U`gˆ¸ÔŒlÝ²Ì†lôápçªÉŸç¹áuÖÀs½‘äÑ÷¬Wj¸}±Æ7/ò¡ïî‡•ü¸‘9áK.(Ä&õb% £s|ÆjÀ£êöð~l†	Ø°‘ˆ§g_.1¦£;²Ú‘9Î~c4©¿™ò!w´*¾–JœÇ‰†Šæ[DÆ4x\ò_²V5>‡zØßèIt;?öõô–Ê4bÉv'¦ñÎÀ¬\Rœ¯8Ž¡+ñ$¹ÃõßÚØ¬©VÇQªÏ	×*ãfJõ>7m\ïŠÿkØ!^:VVëY'i#÷RŸW5§ŸW:É¼ÁÞ
8ÁE¢P°?½ä¿óy]ÔtÁ9'>"òo³³}PîòßÛwL¶„n­É"1ðâðÏÄœÇòâŽaÿ½)°Àó!ŸøÏß­oÈñ<gÉ,×¦›ÅÜÒÞ„OMíâŸïð9 ,$ðÌ¹uÍÔâÌ[•š‚¯µÖé9ApÙÿÔ¸K­	WqÓ¾¿ÒoÓãi½WaIÐf|ÿ?µìÍR*ÏÉsYúSoÃ?ßô¢ªžoÆÔP¼ì6îlÀOƒþàïz(Éõ¨{F[ßÕ€c}§½9Ðû6k,m$ÇˆÑb¨m¬¤ "Ì´cšfoí·¹yï*—t}“X®™\ÖågÔ?´ ØH ºòÙ~urÇ¾È¨ï‚í¾ÚÏ3!1âº{s ¬K…r›sÜ'™ÕBW˜BÉÕÒ½ ½Q°"ZÊ˜•­Þq¨Gæ±±PÅ•dyLäŸ*·CP'¯ûN¸º)T¯?*–˜%ÛÙæßÂßœ¿¤=30ÒÎªâU{ØGV©ŽëÈO¬`DBèìÓùãtAY6þ¸yõ‡#÷Ó0;Î×û²Gi#ÞÎ^LµY‹ûxh„_.ë*ù>@Ð2-÷]ŽËËäß:ÎÑ.ÇSrˆìƒßôQ°aB'Öt*Rž	÷Ž|pãÏöÑIŠ›ÁÓÐÚ:"Ø'‡Ÿ4¼Ÿó$„w#@Ã70Í·½õL´-·ŒÚ{ª9ÛÿÚ?× ç2Õp<Î.ƒ¥ó€XÌ'­Ùf:ŒËýzêK¡ðD‘ýÕñ!ír+JóÀP¥ÿÐ (ž:)zDïu•é•©Âê{ÐHYçÿÐ¸dŸ%Ð<~z	µ ýüÓÈ˜ŽÄ‹XšØ¶tÑ8¦{ÙcIs€BíNPºsêïIöo_öC‚æˆž<_¹L¤óŠ-dFïÝ²JÌ~`püâ‡OmÊ1XžØQñüÊó*³XX ˜üÚ¸ÄxÈ*´i’h‡@Ç_Ù>ïÍ¼4·TN¡ä42zc(÷àµ¬‡¯€I­3Æóx;('5]	Ör6>Ù« ’ÔÓ^k·¾ò»eaƒ9w:º?„Ð¢›Ð7ùT.,ôåÄ9½9P—ìæÉ¹*zÍáä¸xît‹†l-¢ó{£€¬vÔÊ±åÚùÔF¢¥ðnø£"û«XÈí(ÓÑ†×ÏL™9ö?9¤£hˆphCòì•ƒ$'4÷‹N~äN’EjFžZPß~ª„‡2æùøCéßK¡îA}².Å7¸a1­L˜‰Ü<þÒ¢$êœt’u“&ß‚¿ÎÑ}ã›¯ƒ¢-iH‡ßw‘DÈ…§V>—+§ÈØwàkXb›òn®Z©‘Š‘°ÙÚ Ô|žåOAOj2ƒjëÔˆR«†HÊü¹»e8µØó £ÏHR²}0dI¼–t0¾­qð;v¬ÔŠ}ZyšÌo‚<…;×^ˆÚŠ‘øSÓsæSè¨ÂÄ¼OÆï.E«8}iéÃž¥î©­.ÌÀgûZzëþ%
íÏÁƒØ@ê«±gÊÙ#Ð|öÓwå’®2ûl“úóÎþŸÓ2Š÷J‡ 	™]O•´·J:ýõÁå>|ìùÍgš2$aˆþ7ÙÔKóß©ˆèMoµIßÂŽ R	FNW•Ê-^¢y#Ïñ	Fl%þ~#Ãì*w$µ*Î1†ê«£^÷n_zü[ÒLª+—¿A7r]•©É®…˜Ü™ è°§þ"VukìtB[ÕÎñ”F]Ùöü_Õþ"æ¿
å.SI?Âz0H7é3@5
QõàûxEF’ÈæigDÞ1+Ž• ‹ŸB~Ÿ%o%'É\#¶È‹(âuÙRË€6G:þõÊœ‚ÐÅëÔ†Ä?2|çÔÞ¬éÙboÞ?xÑlêié/¡…¤¥¸Ý2TTX	ÀH‹SÊ—˜ÓAÂÒ“ÕQLNìtÄ‚g€‚¯ï^4íiã~Ò^©‘j‘Ï" çFnsvs6…ð¡¦üÃÈK-ãT8wÍñµîÿLÄDx%.Š[»â·Œëæµ·\ÿÌê²#m‡´AnœlÀ¯zÂYFvò­TÍÓrþGå%‘Øó›ïO¾A¯ãÂ˜ÕÖùµÔ˜ñN¤¦µdŠÎ„{E¥ßtšþíNÎºå•‡ë%7„øXfÏR	¸Oè™Ï»ÈúÆrÚžÆœÝ”±˜U
_Xý½0~äÒ€ÐënIû˜ã€ˆc#îa$#]f×é¿‡CNáF4[ÞUÞ,OÚ¸©þ;/x×[_E0nx~Ø´NNlûgÓX×n(ÅaMüŸO˜ñgïÝrA²¤DôLËn Æj–ñõÍÅÜøoÃjÄ–´ÃB·2`Ì˜Uýó¶ö¿û…£=? É¥œ¹,ñad¸ŒWB3üÏ€,ŸgÙâìª7 ŸÝ¬oë]{âuëçÖ½¨ÍrN²Ö¨_WL³p9%˜ùÒÐW´Ž·–¨Ý
¥_ø=§ ¥EX—ß2Ë<ðXÃìPNÎ…Ð“’Ï~ö_ôò?KñaA4W>š{~³ÌÉ¡ÜCM~àQóAÈu
“
ÏØÎqv¬Ã¢¶~zC*ïNÍ¨ šëÒ¦¿K-°m7†ì9Ã°˜ôÓoÑ3U±£õùâ³ö+‘”Vÿ½ÍWäM¥Ný.y_#9ä,c=FÞ•ùïM÷%Û7_kÝœÝp÷^3ëÚóZ0µ´sP.æ^Pçä2ççtÕ7[<þ¾»Æ³õý›µÜÓrqÏ–î±´¿ $&fû¥Ño?0 Üòžò|ê$9ÿª”ÄÅàñáBA,ìöA#3Î³Çœô*Í_å#íú¢23ÅuûBAé£{íÏd)¬<N[þÈcÕêÁ™}Ñ€uPbKŸõ±4¿ã>*,wô
ð+£ø·\¾v(ÝvðCLŒBÀßäBæ~¼Ÿ^Ê·{:Ü.S_+ÎÖžÚÚ¬3ÔÕIQ/½P‹¿Ösë=]J%çÜàèïáP>œÏ°VEû–fÈ}â¢efÌ±²3w€XÙ#Œ¡u»h	Aƒ»D‹~eÈâ¸B3%ñ½¹Í2kW/_ÓÄŽ@ý‰©ù÷Á{£€¬‚«êÅµú¬È„ƒŽgnLøÁ¶|›cãn
ô`·5qêŽ•q¥,9V¥Ô®æßöu†àæL¤®¶^áÈç>£fzÐ¾Õê#ä:TC¬–-í!6“¹kU}Ñ-õ(ûÑXÆ“-Q8ÊnoÍ‡†8üÓËØ!ùìà°ÞƒÆ#ÖÑaúº†PÏ´ö:q4PõÀjtÎœÊäº.,ã:wÅÜ<¶ð„dw°	|µt­ {#(Y®CÊ:áO@¨ovˆºçpÒ:£
ÐwÃM`»Íƒ+;“{±ñÆè‘p¦éOÁƒ“…œK~{s 7¡i™zß¤ùyŸ¡/±	š’Õ.–êÍ½· €¬^˜Ì9Ø‡ïæRD!†”Ý][ËM `'h‡€_Iðp_…VuFäÔãòŒ&‘{çº¯co®_ÿÐL	‹=U»ÌBÐt£ß¬+…KŒ%{@QËµ•t—Fß½àÄ @ŒáVp;8Ø¹Þ•gAÂ—šûSï¡aG…)ýØÍx(yÐÓ|ëBÊŠªÒCõ>ºÙ»R€OÔëé¶4Zy^|sÑGt6ƒðéØU@ÐèA4Ÿ‰½50‰Q7$™ûùÚ±Jºi>”_SK‘Öé½9ÐÓ<†´ØÿBcÔ’Ôp«˜Í3óˆá·ð½QpÃž(¢?ó<VB·Ï‰G,OK¼3‰y¶ë‡hVŸ3ßéã«ñKhÝÖÉ Áýó›/ñØ¸†’º\Õ^¦+Œ??ü”øòþ› vB¥„)Ló2Lù\ïÉ§KÊÞÜ$0·ðoç¼¡ŽÐè«:ãQêtœKå¤õz÷­½(PX:P!æ`dÓ{‚³Ñ]^Ó‡M,*d÷ wOpÊßIp¥Ì.Ñè—yÄ½¹Ü£’ùom€*ã¤G*Êræh'n{«<wüúÇ‹Çÿ[3Àñ»ì?³JtéÂ-©KÃgX¸ð¨]~_ÚÙ
ÖE/¥Ý¸Ÿ¹Í®&Ê¶ì¡ÌF÷oQ$O|=†7´ÓQâ¶aŒJÏ;î»`d&ôÚ"xÊŠ†Ïg$æI
Fµ`n ü@/ÐÊÿýù«>ª_Tý¤ðiLZs"÷ÔMÒÞ1á}Â =µJ”sFç#é¥ Ëº_„÷Éƒ/ÿÎ|û&z4ô85ü·±'µ/9nÇMP@Õ/lãâÝ¸/C¬€3¨ûåí¢†N«~R­oR×nW}3?B¸'¶¹¨g§½ðŒ…ÿ²¢º“«÷Wiñ/>{’€©vÎ-Ç$ßkÞ4Zø¥¾É’¹Y¿0ƒ›=®þ»üBEéÑ`§ßÈcßxTâq=ÁžÝ„)/c0ô±}jD_-Ë.?iá‹Wz-´ž=ž<ëfñ€˜ÁÝ.
vúfbãénsÅW$ÌÎÜŽä°Id¸¯rœÍ·£0Ú]PÍ°¯kUA’áëÄ‹ %kMÑsdv¥À¯¤ôÕ²ÿ2*¡×g¸_Þõ“÷û^Øv†€þõ½Š¥S¦™º:¤$åwdÞÀŽèÜ›¥Ý Ý<Ðç)³[Ä¸?Æ5·Ï`ÊÎlÛ'ÛÂRÒµ>Q½éÒvþúÐYy6kGç®Ô¡ hó:©zé>A¼Õn”Á7ŸÐ¶'§Žg²}Ü;Ë{³ò/øÐû§DÞŒ3w2êbÜƒ)£3iÄ3ž-áQ-h°‰Q!pÀ„™À¶tÄÿ¼ð26[~sþ\·»iñGíMKÑw÷ƒÞ^fÁˆ	{šq²¨jÊUº{4¿Y÷Ý°Yü©;qU2h…4ÌQÂm’M Ïœ?£r`Z9zîX®€(còS·ÌIÄïÕ=1ÐXÑ,“¨µmšïcáîùûóXwPuáž$x¬¿QgkÃgýeZ¦KIîµepr»­`7¿•·Ñ Ÿügn ‚öëFòC­œ{Ï=îuÿÍÙÚwp,0híb—ª®Eë¤†,ÐÌ\kûÎÚºOpçi12¼- ¯ÓœªsóÐ&ê¡fL8æZÖ3•+1±þªAr«Žpä¨ÿÝÁÇoqöKo>†á–!éœ§óh”CŸ"Xðº*÷Û  ìwbªÐâøWJÚeåèûÅ×tËEwô àGVL!p«.Å&çwqj}Þ&>[%”$oø/gh³‚Eÿºåà\–ç»ï6\kñÃ9vù¶q`áµù=ü_áÇŽ4’ù›H¢X4VÕ0aöˆÿÏ7¡`¶ÿ\ŠšÓ´á8D­©…OCl-2ðr”ì½=«==Š²*um¾ßÉ¨B<{ðrß-€óž\¦ú*Üu?¸Û"òˆO,RñÚÞÀÿkîT™é¾”ö‹}–?¶Â¢1ýû·È[léÍBËSÝÁÔGub,É\^Ñµò,ÈaÀ"»Ê—ß3ÂÅ‡”Ú'Àì‰¾™Û1ŒüwÁÑÜ6ÇÜ‹Œ´·_I-Ò;‰Çé\ä<m¼”|/½á& y•öûêâ¤æ¼Ãöóû`Áá ¡ÓçkQ>Êx2ï’¦]UAB¹>€¶@ÿêl×ÅMp&Ct‡"-3ôŠ®Ÿk*"õßÛ|mÏîÆ²¹Éò”|³nÏ™Á~ñÊ÷”$`j»z‹%d=œF÷eUÛ&ÓÓ<W/p;hcÚØÃ?â†&×u2¾§œ)"•‹Ç©£UìÕw»3›oŸŒúId¯™’'8v¼¬r{nQ»;>ÿŸ»ŸJúà¥mrIÓ%…\¯€ë) Öº¤·1ÄˆG†Ûû
+Gé¸Pøy¯!ÌÙÍÛÿ€îUÊ£T+­E?Yt.¡ÐovüÀ›q@äaÙ×S¨ÏÛDùÌ¼kÏ¿QÀ?ä¹=½}ZoQêû}©vÁØ×÷áè£iêl»3 ØðLQ•m¦ŠbÛrP<A¼{Úµí˜úÏ@ùO÷Ý*ôJÐèÓ¬ùƒ¤¼|Î÷ë4í¸â· à†~yzŠœ*	jÒ=9lú®l²÷ìÉ{»RàgÚ&Yæ“8g•¹fÄCŒjV™¯øj`€þ|;Üb
,Š/4ÍÆö1hM¾¾ñãC´µºõ3C;Ðoäâ!õÑÖ(ÎWï­?Òþ¹;ªë\Sf2x«WQç~@rî•
&
ìÕáS$ðŽFm*gY?Šy¸d:oùE!7¢õêî(ø=ÀàÇ	¶ŽKEÂÈt›À¹Øòª×\»cà—·~wÄ†?^j]Ÿ?æ€Ð]öÆÇ@ýÓCÐÀ[¬›óLp°ˆØ„Æn•~•¤óJÒTªz÷ëŽb—@õ¸²‘$2ú¨©ÌzSß‚Ø ¯yîÿ¡`?®™i»\5¸FWûÜíFXªð5BkM`ž±ÈouRå®`§·3¾“ûÓ¡Ã:òþí±ŸÅ5¼A3D5¯³‚¯¥…îètv)ú¨œ[o–Ð$ª%Jºp¾¸>e8ÓYl¬P:ü¹ÈÞé<Ò&Z®®¥ó°ÑsùN'‹®+ÙÙ|óÀ)¶Hfp6Rö ZÄÐm­-mØuwü ¬ÿÐ½Ö,oì²ö°«àüÓp;?¸S]ù•\‘Î#Õ0ô´±¦Ï÷ð^(‰GT@îÚcyð»„C[ó×;}Ó½@@ózñ@u!}T©NÀ«ÀŸ‹/¤e0p[^¦¾ÎMËÿÀACã\¼æÅè¡¶™O#»3 ¢`9ô$Ex‘¼Ó/•ª™³D7Úw< nÅ Áºr\‘§‡‡Va¥6¿ÆoŸY’ÕÁôCo¿uŸ¾ö£]­¤¼K=˜kYFÙs_Ü5)O•¥{„³B—.òåÜj5Ú“L]û3‚W^‰»žfíxØ~Y”î«:ðÿP$Â…´²‚¡ø6v›34ãFŽh¼ÏÏb®K/J©ÂM>äáxüÇFÀ½í¸JÔáiã2ó˜ÚBpQÁ}ÀÚ+â?¶ìÓ=z7Tà"·˜ýšw„ÕMüË}â›ÙYŽúî³©Öò±äBË+ž²žÉo_(èÏ”93˜ú#v}„¨_iBã
Lé¡`æ¾hÀš‡\@ì:‰B»ÛâÂå5	ò/[;`|ãvb€‚ã¡3O®q¬ø“*‡ò/Ô7Ç¼=#M€-ºéóô½Ã—Ž)u»,OEi“þ¾± èˆ¿<£d%’îÂš_ÊÂïøäTö×yg
	NàK}=ñŒ8ÒA_ó’3?9aå2£<Ö8(T}8G/å8Y%ŠªD,÷”…)¾µ4V\z®)GŽ”ê‰ˆ ’ñÏ&?|Á¨4¾ØPÉhG¾¿Ç|ë(ü]ÉÚ7ªr
é•”¹Í£Ê.¨ÐWQëgŽ®ÆÿH¨92ÓS{g¬I3u'}gš¯ª¢ùàç"ÑªåË-“ˆÎô¿&Ë‰ø÷ƒ,s£çpÆ}X–kž“MÔz8y!9aonóãrD±.3ˆ•/¤pÄšN"Æ^HÜÜkò8ß4¨I½Ò2®Ê{Õ¿È·ƒ´B¢a •ßN"™y?ZŠûÝ½âäÜ'èñž] P¯âA¬¸ÇõÇÒùc7ElæE‘¼r®»0€WèGmùÕ#ÌÜ*-\H-ž*HcóvÄŽ€£Íÿc8(ÑQ|Us:åpIÎ¼˜ä‘ÆnÄæ7:.å9€yùrúV2ÓÒ)~S±Ý °hœù·:ÚB>’0u˜¾'GŽ£%h;óÿ‡ÏYFg£kžµl©Ôb§Í™T_^}-*±§hfF?9d{ö…éoÕÖ_Çèß` ábÝ´UÕãÆ%¶rV¿ñûtC|ºú<',çÉÊÕ‡ŽM,O˜Ó©ÒB0g7§—Zª8ìZ/‡Ù#jh³[Ñbå0Ç§˜³fjÁ£ÇûŽqÓµ¨¶Z§RlO#MM­àˆO¦o¡dOÖ£ÉUŽ4w[g¨‘eˆì8™¶  ‹åÙóÉëÝ”uE¹&§­]%.íJ$LfìÒGøpyëS_¼·\pldCü£¦§0¸¤ë!1O59Vâž¤øËábö<èõ¢\Ÿ4ª!í~ñ¨!Ô„ªB
ßÄ;HQœz¥N¯ñ1ÐèðO–d¿ñy¶Þk¹Û‰Í×Â@ø	yKí(?Ü1{;ùð²Já”B¼wWdó<_i˜É£Å1pã“Q~ìxjCF‹Ä®`'Ú6‘ˆõµæ÷²a&[ûTÞ»;! ˆðÏ1»‚
ÈÿÁ]NÒ5¡Y0™qëCª~ñ. hv¤x8•ø8uÏÇÉî‹Í)Âñ¦¬Š»0€G#=5NÝo…€ÎµÄé*”•Û’þvä übð‰”ìÈÏždyBÌ´õÈHÿ+Üß»3 ®£òlH6ÏÓUa2Ö3Yìù]vÜT¶b€àWû',lí½ÂúýÆ¾’)Hµ°‘íH@ll6krß¡oô:õ¸%ä¿…êW#º85U¶ÊUý˜e«Z1ªVË€™^%`³°ìÚ¿HØ·Âæª×ç)j6{ÛþEÒà5FÆú¯ïR°ôº6=	 Õ+ÐpSŒ~Óº
þLî{\	K?wØœðRåu¥Sèœw„màHø)r´|€¥,O	Ò(­|¡°B;ö§ªYŸåÝõâgw×½?tÛRØÔÒìm¾éK÷bü$Ì"–.Ü:|•Ý×çíç=8pàX¨wH';ÌÔ˜lMù™‚/£Ó‡Ê²ùçþ¹@VüY(>%y‡N:‘ê	_iQS½ZŠÇÑ,uû\v…F©õÆ\æ¦Ý¤Q5üíÑ—Ó¹mÎwÏß³mšøûüÝPú(äõÔ½Òï8ŸãÇW\…èË«—vmnžÈâ¬Û¯ùð&¥¥JÝ•“ï"Êÿ^.7å×sÛËõ ›Û”v¨ßhòêë˜>`P
”¥lþñ>à#Éhs¿”s¥¼Q+!%°
…Á/†P‡ÿ*~‘¢xœ340031QHÎOÑKfØÖº×CÖ|Ý__½î<<$·æˆÁ+C„‚f³g¿¤ÊG<ª2KÞªÍË>û½>\A^Zf:Ð
ÙŠLÝUÿ•¸ßµìwŠ¿Û´šKUMÃ¾þ¦«7.»º—YâþrÖƒÒÍÍVP5)‰%‰º‰E©‰@£ŠŒ_|äÚéÞw‰7|êi÷WI¹ooÙb(Ë`àŒÛæóÐqªcØþsÛÎM7âå¼nU–‘š˜’Z2jÓÍ’m´ç¼ššj° zÚìØ2>¨j2˜ª¾†[=sÑÝÇuLbÅÒ*ÙI:û jrS‹óóô’J3sR‚W»ê(¾™þxÃªžýûwº]ýÝUV’š“š›ZRT©›“òç{¿£·?ŠG{Ù/Éþµ56Q}æf ¼á’#©1xœ31 …ÄÜª<ÓŠ~‡Š·¯‘Hÿ—aPùNzçÙwMÀÒ)©99–òŸû}ëžï—ºõQ6w¶o‡I%2ˆ¤+h­ýüÜòÊƒˆß“ÜŸýúõ$"–RÀ`¼ó #Óiÿä[+ïE¼n0w³S“…Èf”&–§f2t¦<ÉX·{…™³ú57»ešWüçü†(ÈÌËËO/Ê,aØþü¥ü¿#fnâ¯"&8ìïÿÝÏ&SR\PZÄÀqG`Á´#wôEO¿óbž_à‘QSP’šÃ°ÎRôt}Ns×­<n• Ë’t.|˜‘ÏMÍMÊI¬Je˜ÈyÐë@9ŸjCïÒ¬`†|‘¬¸É†f&&@5ÅùyzI¥™9)'µ:7æòënûÃ‘_!õê4›ÀÛ{P“2“‹òóú{Rv?ûwø'G¬×$ßøÆÒ®Sy©%‰ï.1–÷¾yœÉÐÊÒËñ±G¤Ê#ªª ,3%3‘áÕúï¬ÖBù[ë6&þÒ¹ûÖ"ýÌ=Kˆ‚üäþÜµ<'þoï|ö{›åÍâÓ,‚	÷{ ²ÅÉ‰9©i9¥Ç¼ooËŒÑL
5Ž°»ášl3yTMjbzbI*ÃÊ©u»SÓõc(Mä¯,|Ã~ÂgéL¨ŠŒD`°ç1<›«î·ks×fÆ–’s×üfºÝŸõGq~Ðé¹§mŽª.Ó9vBôBå4©Š×ŽÊ@ÓEI~qFfR"ƒQo°”@~Ï¦¾¿´W3+ÿŸšUQ”˜Wœœš—ÂpMÃiõé ^å,½Ç’Z;¢O­\P
QS–YT’YšËÐWmÖ°[ã“—YZîÚüŒž¥U<å)É“îÌþþ˜µgv–¨Âé”K\’ñIZÙÊÜ’d†ƒN3<ÃŠE«ŒŸH_òêåC¥_ö6éª¼b†œ%Ì[®0¶¨Z1GË±þbbó} € @¸§gxœmÓ4Tið7ùuòcÚÔ´"%ÇŒ©3cQf0‰"¥XËÌugæN3÷NsïZŽbm±©h¨DiÊùU‰èì)é$¡’_µÑ¶¶Ói)ÙÚ;æîî´íý÷ýœïó¼Ïû\“ül"„+À<ï©K˜]l´æ£í×œZîÜã+™LWkš "SÀ ;ÀðÎ³ÌÃgÛ4óS³õÅ>«Gô”‹UJaŸÈ¯hëðüaEi\DçÏƒ6¢˜ïÆà°PžÏ–0^°?Cî„âÁÅ¯æíMlWáÑüƒí²¦;ã`R£Ÿ@0äl·óXk$¹C·ÜŸVã½<3a‚ŠÜÀóåoæ‚Žó«„ÆWSßùn|Hªé]B‘ þXˆHa`Ñ†Í:¤¹Wó±<Ði§ñl†ÍÚ¾Ó”	åzs‚¸Úžº=v4²ÜÓ'+³,ù¨³NíÑõA|Ì7»RÚéRÊuÊ¤™x¿„öQ,–!›º†¢Û…7lO_=F¯¨¼›÷Ä´ç_-æ£±RXAÂ›XÐ73¤v®Â¡Ü‡+O,â„›ÿ1™CI#ù1ØâÓs¶ˆÚåÍæ9§[–Ÿð§šÁdr)¬B0»‹©p¼MêãKÙ’©ÁŸ¢ÒL¨¤Xòæ(­k­l¥zÉxØœxs?Å¦÷‚§Ç{Ð«Kƒ	deYkîï¦ù¥yFùÍÊÃ¯P)B¾@@85ër«í;FJò§–qiÛÞ›5¶žüƒ¶~ìV¢ÌÑû³¹=gªx9¬¡
Iª’Áô8_NÆ±ƒ÷îšôð¼m»(ò²U’+²;‘”_³Ù¶2ÇPº
Âé_ÄÀÅàÀp6/£»öŒs`Â	Õ!û––²¾*uÚ2JDh‹ìÌÝß™5]0¹¹¯Ú({T<¨Ï¢1ùôÔD<S×ûÙh¼/Î9v³ð×ròp…§ÛÔFˆö%ðÐY`Ôˆ™ê_ðÈ+Û4q£ Ò—äöÃRí„ÆÝ[=ž&ÝKC­^D-Ì?Ÿ`šÿ?PèÍó64/­´{mï½3Š\Š¯Ô‡r‚d`]ÚË5êðŠÈ-i3™³[Üy6ôs'ìó%ÉÍAý‘½œz÷ß,3†cròúN!—	È¸uOª+žå±«l—8~(á¥ÛÔ9,(×gÔË”&v9¸«ý
Þ2¢74l3TU™±#>cbÔ,©l;z 6jUpj®*Ýá/C‘AýsÝì[?©ØºŸ]â¤0}ãÿ‰ÀPBI
ˆ’¢èÜw¿lJ6åÏµw4éS1XàVVÃš©“·ˆ¶r²WãëKô.‡!mÒ?¥¦v¶ÕíË‘…Gd½
Hê_¡Ût’	é|%‘uQ"€Åóƒ–¼®Ö—J|O*9K~ÿjb)—*EäãC€Âê~^Ÿ)}ÕNüùâVÌpÒ§F0~‘½ŒÖ3…ÖÆÁ%õ“Æv]IÁÁ”uÖÀ¬O–7T¿nªzîœßndC-»)`L—·Òû3®ñšS}œi=—Ç:­Åÿ)ÌÇaíŸPUš|§1 ÈÚ*9®Y_
;©³±LW
‡ˆœÀÁ®O“åÎÈ«O]¼[½Ør)%”¹“7ÇA¹&™¹'òñ·3#œvfùîR[›ëãäùƒÝêäÓGRb®y®¿¢yç~+±¾\w®D¼uèšD·~iôrf‚ÏQƒ8u €:&)8f:Û}{W¿«W¨ñXÎuyöÖ¹´¿ XŽ;¨)xœ340031QÈM-ÎÏÓK*ÍÌIaÊß ?{á›ûï•"¢4×,œ&õÓÇ¢¬8?'3%3=W7=±()1=U79?''5¹$¨9™ÁBcç³:ÙòZoy²…º²ÝfL¿H„Æ†Å½µ»ÿ	ØÞ›2óEòV.¯	·£kÌI,IÍK®Ô-)JLÎÎÌKÚ·3ëØ³sRÏJ9ã¥•»«|—·Ø·ž ¶†YeVÒgx/68Ý1/gï37utmye¹©@¶º3Çüšk¾„ßýÍõ-+6©; ŒUiÃû#.-<k¿lŠ\QU—’yELÎaý2t¥Å¹‰E%@cÃz­ö_Öô-~;û2§SßEÅó'ïéaW›ÁðpÞ¾À9Át‰ÃŽïÒš4—ëJe¡«-IÍIÍM-)ªšÝ²äÑ‰î/Øñüˆ_áÈÌ"šé‡[}Ãt¹Gk6ˆ}^=µ“AâRB}‡}ó À¢œA¾PßóÁ³MS[\µÛšvwUrÇi¡^Z’™tcá’)ûºø%löÍû°ÚéèÄXq¬J3¬$ä÷ØfÙ¥¿ïµ]¤¨Üþì6 þÏÿƒFOÜJAOù€R-êÛçX²   070701015D695200008124000003E80000006400000001642C0FB4000009A8000000000000004A00000000000000000000004D00000000nvme-cli/.git/objects/pack/pack-464f7fdc8d4a41064ff98019522dea06dbe758b2.idx  ÿtOc                                                                                                        	   	   	   	   	   	   	   	   
   
   
   
   
   
   
   
   
   
                                                                                                                                                                                                                                                                                                                      !   !   "   "   "   "   "   "   "   "   "   "   "   "   "   "   "   "   "   #   #   #   #   #   $   $   $   %   %   %   %   %   &   '   '   '   '   '   '   '   '   '   '   (   (   (   (   (   )   )   )   )   )   *   *   *   *   *   *   *   *   +   +   +   ,   ,   ,   ,   ,   ,   ,   ,   ,   ,   ,   ,   ,   ,   ,   ,   -   -   -   -   .   .   .   .   /   /   /   /   /   /   /   /   0   0   1   1   1   1   2   2   2   2XÜ –ÄÜ/ËîJŸpHfXr
{žú»žæå˜ÏøØÀkô"îÃHRÖ<»åœ¿Àb~7D¡Åm­Èÿ·‰æû¶9ÙsË`ßŒšÞ/T§n<ÿG»å?»Eœç?¸¾®jCžuD$Ô‰ð÷)g *­óç9ÔàXû’Gärúúä]
·®ÚyŽ/®4é*—úAìc…q/Iàæ²•„E+†‚»Šy	s^*'w/Ð#/¿6»¬¿ähZð1ÁeîqËÆ,ysù½ ©q˜CE2SoŒ²ŽXNfê™yÿÈ˜3¹ÀËOcÚ©ÞXïS€7F>&5x NÂs·¬gþh0yî¹Í¨ÝCÈ‚gü5êïN…Úx¼ÁÛÖ¤Qo"­„ex„×°:’jüä«]‡Q™Õê¦vÛ¦±bñƒ&ú<7v˜'S–*ñ.“«/„ËÇÀÍ2‹³ù¼”WVœ*ïSÔçRöÝ­hêv”íl¤´×ð08z¨œ*AÑaƒ¸/nð#ÈTb]ÏÜ^¥?s±ù¡Hr¾x>o;	Ò“?ocŒ!©ˆKz`=',iÀ¸­( ºäËµ$€ÚØ´ÝN˜K®ˆÏŸPaLÝKÙ‰däh¤^»¨6C'ÖF>¦)ÔOœû‰ûÿ-¬•K&;,ˆ½5ŸÊŽ{6€»(þJ6|&m­ohŒ¥zŒd»æVþÃù]J’M_TuŠÊ§ËœÚFˆî=]FšsK½0¥ÎûÚÞMô~¯HZ<Ý´S·‘	ÁJÀw%f ¥jS oj^“’Ü›öWãŒ›j ËdÒ
_b*–Y#T:>jÉ-†šT¹A'Žy÷˜	9YÙá6?Rî–½p’Vâ©•~»eg/]ø"‘yqìÈL¥™®9ËlƒŠÚn$RÓÐb,Ðð—±§0~[×^Z*qŽMF¡z™¶‘}YÀMjî¾á=!nÑYÃ}·çé¬NÄ6FêX@¿ûÁB˜IVsz3çÀg¤êéá"ú?<ÆÀï‡†i\)bU3X>ÐXEc<“Ë<Å%¦,ÏVÈÐy–x°ÖÅ·Ó}™£”‚`º?éJ·§ù9Å|¾±Ö(B«°R#j.ã*¸[Ê© uæ'NºžŠ³„tÎÖN™FßšÊê¯÷;oµ~±aú,Ýí8gÌÞ9îÒwìãi …ñŒzHZö2sM	ÿ1;MÙÔC‡KûjÈx‰ø%Ùúi×ÐìyB•Ze„âŸüŸo¿0¾p¿µòÈ´ç,›Òz•añáØ;mãR£GB¦„=ä´tL:Èº2’®"Í”ª›óã»ÙÁâ‡»È†2ÄyÃw±Ëe›F›÷I–µÁ2ôŒÔ˜›Å¸¨^$Góêf8u°®AèQÔÎÒP†kw¼×ºŒ;%þã>xM;’Ëºûÿ%8ŽþàñW¦CŠ>ëIeoCQ°›¶ÍZ™÷!¯máÓ&‘9ã›ò‹ŒI'¬f»!æœÎÌ0Õ˜ÞÕ¨‡êSãHŽ:Wb5Kg×%û&ß¯È    Ù  ,  ´     g  É   Ó  U!  †  ¹  5    0    ç  &  E  å  Ž  D  y  Ô  À  [     Õ  	B  /  }  Ó  ö  n  -  
x  †  _  Y,  ©  $  
-  ^z  ¤  „  
æ  	Þ  	  .  ²  VYFOÜJAOù€R-êÛçX²ÔÏ þB†¹À—…gåÝÄøü'¥070701015D695800008180000003E80000006400000001642C0FB500010040000000000000004A00000000000000000000005200000000nvme-cli/.git/objects/pack/pack-2b87a653261b636d02b83ab03d1df82e2612beb2.promisor 00506340e357299b4ea498fa39c5e8e7c22b3941 00506340e357299b4ea498fa39c5e8e7c22b3941
007c3b191a352ef9b1cf6dab7f71041cbb9c2bac 007c3b191a352ef9b1cf6dab7f71041cbb9c2bac
00c3bf3928a7f3f9135dc280a0b747de50ad9361 00c3bf3928a7f3f9135dc280a0b747de50ad9361
0137d8d70492793981803c01a927dc2563de3730 0137d8d70492793981803c01a927dc2563de3730
0171a494be608a0f183c00be9ef0ab42c5915d17 0171a494be608a0f183c00be9ef0ab42c5915d17
01774ef390b12a9a66fc330d2236b024442f7c56 01774ef390b12a9a66fc330d2236b024442f7c56
0208ba0e7dde6b06e53976d5e020dd826e5d2566 0208ba0e7dde6b06e53976d5e020dd826e5d2566
020959905a1eddfe6e55ad6d848e1f18b9e45203 020959905a1eddfe6e55ad6d848e1f18b9e45203
023c4174384b704b5f72701fa33c9ba2870ebad3 023c4174384b704b5f72701fa33c9ba2870ebad3
024351f54228a9cfc21d8033109e792e26f71ec6 024351f54228a9cfc21d8033109e792e26f71ec6
027af5573ae6442dbe0ac618a8a57a1d922cbe30 027af5573ae6442dbe0ac618a8a57a1d922cbe30
032ccdcd51f4651f58e27a3663b52b0d079bef2f 032ccdcd51f4651f58e27a3663b52b0d079bef2f
034aa3b43baa6d73bdccda73a292fd7198f6e9cf 034aa3b43baa6d73bdccda73a292fd7198f6e9cf
03b477778fa5403eae326501521cbf283228cd19 03b477778fa5403eae326501521cbf283228cd19
03f04e9df519c20130351da69c7eadf13a6efdfc 03f04e9df519c20130351da69c7eadf13a6efdfc
04843ea5461aa741ad0c98c4a1ebb1024469d426 04843ea5461aa741ad0c98c4a1ebb1024469d426
0519b1dbe9d22eb65dca332f3f8a45bbef127591 0519b1dbe9d22eb65dca332f3f8a45bbef127591
054d67597c495e4d17cba87e51938e52334d076d 054d67597c495e4d17cba87e51938e52334d076d
055b5aa755c143cb04fede4f28c017a7c61781f5 055b5aa755c143cb04fede4f28c017a7c61781f5
059301c26f177ae38af0b6134e929c6e2102dbc6 059301c26f177ae38af0b6134e929c6e2102dbc6
06218812d901527a89ac163256687233d53a1cd1 06218812d901527a89ac163256687233d53a1cd1
076220a6a2e0db0e1950b0342bfb58ac89222963 076220a6a2e0db0e1950b0342bfb58ac89222963
0766c255e0ee684085e6da9fa3573ac97c6b55d2 0766c255e0ee684085e6da9fa3573ac97c6b55d2
07c118fae7c59700b73c82de3705ed55b1a878b0 07c118fae7c59700b73c82de3705ed55b1a878b0
07cd98e9c3e321c2b1022d4c61d03e4e43bbc45b 07cd98e9c3e321c2b1022d4c61d03e4e43bbc45b
07f975c8e5e858e6a2437ce633ccec04f21e97e7 07f975c8e5e858e6a2437ce633ccec04f21e97e7
086a3b7ef52b68e7ecd14cf9c65bfb27bf96c3f4 086a3b7ef52b68e7ecd14cf9c65bfb27bf96c3f4
08e9eb951a3dd32094bdc6d094ccfaa74794bb85 08e9eb951a3dd32094bdc6d094ccfaa74794bb85
09062da82fa6a25630839ca7bae98b85b82fd98a 09062da82fa6a25630839ca7bae98b85b82fd98a
090db55bb0aae0b60c6b6920f5c2631160791a5d 090db55bb0aae0b60c6b6920f5c2631160791a5d
095eb64ce141954156bfce88b6ce97320d09d73e 095eb64ce141954156bfce88b6ce97320d09d73e
098fba807f5a07b901635c1f23c5b3b8978bd81b 098fba807f5a07b901635c1f23c5b3b8978bd81b
09ac1c4c7987949d89cfc4d3fae9b548a4a1c390 09ac1c4c7987949d89cfc4d3fae9b548a4a1c390
09cf858dd3ef2ef3e802b52dcad289734578b472 09cf858dd3ef2ef3e802b52dcad289734578b472
0a04a35144b5155c0d9d5c81cb76aad4b6eb2c58 0a04a35144b5155c0d9d5c81cb76aad4b6eb2c58
0a077a85d9ec2ebac2b104eb790eba6dc5158daa 0a077a85d9ec2ebac2b104eb790eba6dc5158daa
0a101cf14422e31eeefc697e360a59b048c8198e 0a101cf14422e31eeefc697e360a59b048c8198e
0a8cc48ec42e086925abf0750c4b13f4f907ea8f 0a8cc48ec42e086925abf0750c4b13f4f907ea8f
0b4b96ab696b6f04d197af4a9053a120b7da6e10 0b4b96ab696b6f04d197af4a9053a120b7da6e10
0b6379838d79015ba711b5c84bbe67a67471b978 0b6379838d79015ba711b5c84bbe67a67471b978
0b95d92d69d3587a1a3444a8ef041f148f08d06b 0b95d92d69d3587a1a3444a8ef041f148f08d06b
0b9fe99cc62e1c0d87ed0ea729ac0175322163d4 0b9fe99cc62e1c0d87ed0ea729ac0175322163d4
0bbb25a6f153ff38b665923087072bb61e0ace9b 0bbb25a6f153ff38b665923087072bb61e0ace9b
0c0c4cd8bb7f04359cb0e6553f9dddbe80d80448 0c0c4cd8bb7f04359cb0e6553f9dddbe80d80448
0c4d611a56c30a279531e3d8ba59f4c6d2ac1e43 0c4d611a56c30a279531e3d8ba59f4c6d2ac1e43
0cfdd7a232bb949ae7f9d4fff619766e5bfa8404 0cfdd7a232bb949ae7f9d4fff619766e5bfa8404
0d5427f5c71a57e7a6a051027f17f85f23d335f6 0d5427f5c71a57e7a6a051027f17f85f23d335f6
0d888f7f6a2fb6107cfe9cdf74f08a66f89a6f76 0d888f7f6a2fb6107cfe9cdf74f08a66f89a6f76
0e5f3869798eaced1cfe5cc725d1f9747b5a34d5 0e5f3869798eaced1cfe5cc725d1f9747b5a34d5
0ece2a2dbbe858bb7f00413ca456909326976e5c 0ece2a2dbbe858bb7f00413ca456909326976e5c
0f2cb3551a56c88a6014f221a687ebf623df4db4 0f2cb3551a56c88a6014f221a687ebf623df4db4
102ee6bee38f60ab8f80942263f9442db278d460 102ee6bee38f60ab8f80942263f9442db278d460
1083d4623433afe758d2b5653dd68aeb74874540 1083d4623433afe758d2b5653dd68aeb74874540
109daca41338adcfa1f90211f75622159e500576 109daca41338adcfa1f90211f75622159e500576
10d16f0891a7cdb9ffb14b2a71060b2e1a3ee0a3 10d16f0891a7cdb9ffb14b2a71060b2e1a3ee0a3
10e212b15969f3883fd3f0c10a8cd5ac26297efb 10e212b15969f3883fd3f0c10a8cd5ac26297efb
11281d9c7ec95e1bf2c0bc804e8cedf8466d6e52 11281d9c7ec95e1bf2c0bc804e8cedf8466d6e52
119d52b619d9f146502afbe4e77867a88535e321 119d52b619d9f146502afbe4e77867a88535e321
11e7dd802b37c8483f3a0860658174600ed7f338 11e7dd802b37c8483f3a0860658174600ed7f338
1250ba3d7aacd52326973ef98e475b30da32e3a4 1250ba3d7aacd52326973ef98e475b30da32e3a4
125e3021df7dd19ae889165cba30567e4b9db7d4 125e3021df7dd19ae889165cba30567e4b9db7d4
12e9ee2b1e0315d69979abe3879bd2a6d1266b2e 12e9ee2b1e0315d69979abe3879bd2a6d1266b2e
1312cb81dbe37314e96046596a6eee4b26608b89 1312cb81dbe37314e96046596a6eee4b26608b89
1326e1e80248735237e7de000a81b6257b53f85c 1326e1e80248735237e7de000a81b6257b53f85c
135f733a2d95dcdac76bd116c0cee9d3a50abc16 135f733a2d95dcdac76bd116c0cee9d3a50abc16
136b2d52a03c47f45ed6a7d0e3fadecbdfef10b6 136b2d52a03c47f45ed6a7d0e3fadecbdfef10b6
13968918c8c2223a765bd28ccd927393b2e8ebdb 13968918c8c2223a765bd28ccd927393b2e8ebdb
13c26f07905de241a946f6e511081a6678d53e78 13c26f07905de241a946f6e511081a6678d53e78
14a5e7609e817e1ca99de7aebca363bb70d73e4f 14a5e7609e817e1ca99de7aebca363bb70d73e4f
14a5f306d159a66ef429c7a818642b8f9c5f2140 14a5f306d159a66ef429c7a818642b8f9c5f2140
14a6ff69984a771085d23874e5e3c97ec5ee4f95 14a6ff69984a771085d23874e5e3c97ec5ee4f95
157dc419b6d9385695b1253eecea2b0a9e887acc 157dc419b6d9385695b1253eecea2b0a9e887acc
157dca986284f35ca46f5601f3138321f7008e71 157dca986284f35ca46f5601f3138321f7008e71
15bde7a9091b12a02ac8eedc44d2a733a266224b 15bde7a9091b12a02ac8eedc44d2a733a266224b
1612c3b7ec7b7245080cce3123f368b8ccd96710 1612c3b7ec7b7245080cce3123f368b8ccd96710
1620b6307f1fce33d9d8a7254c74596b92520245 1620b6307f1fce33d9d8a7254c74596b92520245
165048a9b2064873dc61ca5306a413c7a6b9e2ad 165048a9b2064873dc61ca5306a413c7a6b9e2ad
1757fd303e55b921b26168b6017717aa74d7f86c 1757fd303e55b921b26168b6017717aa74d7f86c
17d8e51eb9cc057a41e5de51ac9c0a8fd5070f70 17d8e51eb9cc057a41e5de51ac9c0a8fd5070f70
18ced770dff16b93294bdee27b697a34d8022c66 18ced770dff16b93294bdee27b697a34d8022c66
1938afb934f7e951bc6a06ce675644923b734aaa 1938afb934f7e951bc6a06ce675644923b734aaa
19e3b198d8810db6322016ce6f9888f16c2101fd 19e3b198d8810db6322016ce6f9888f16c2101fd
19e9cb811f168c3d6ca5e456702d6361b27d7161 19e9cb811f168c3d6ca5e456702d6361b27d7161
19fc688785739e7a7d3ce89c130709c82ba783e4 19fc688785739e7a7d3ce89c130709c82ba783e4
19fda4a932f8ebdd1016fa4e9d8dbd4d5bc33595 19fda4a932f8ebdd1016fa4e9d8dbd4d5bc33595
1a09df98a2e530f83556130dbe9c4322b50d3566 1a09df98a2e530f83556130dbe9c4322b50d3566
1a4b83ffe42acc84f80544132a1faa0436538716 1a4b83ffe42acc84f80544132a1faa0436538716
1a6369c7aaf0db3c0bce5160320de4c04dadfd31 1a6369c7aaf0db3c0bce5160320de4c04dadfd31
1b6e110cfa1c1482ee8ce981e4f330115310eb67 1b6e110cfa1c1482ee8ce981e4f330115310eb67
1bd30a5471a154dda60b8b2397ed8b54b01f9965 1bd30a5471a154dda60b8b2397ed8b54b01f9965
1c063196d7bd4957f663ef8789464268bd0a9756 1c063196d7bd4957f663ef8789464268bd0a9756
1d000e30374f210a4ad67e03bdbbfafe390eda4d 1d000e30374f210a4ad67e03bdbbfafe390eda4d
1d1c220f39f90ac8ac07c485b505796fd5a5e84b 1d1c220f39f90ac8ac07c485b505796fd5a5e84b
1d2192def9e3678b1876f85895c91aa6ae28eb4d 1d2192def9e3678b1876f85895c91aa6ae28eb4d
1d522309b14b12a98166c02e1fda086537355715 1d522309b14b12a98166c02e1fda086537355715
1eadf1e4a9ec9fffe808e14ced5648654c9531ad 1eadf1e4a9ec9fffe808e14ced5648654c9531ad
1f0afcbadfa0899b7660835fc82823cda193411a 1f0afcbadfa0899b7660835fc82823cda193411a
1fad952d65588e992ebd12b636beda115d3bd740 1fad952d65588e992ebd12b636beda115d3bd740
1fd74bac92c02b89917b3d88b0280e8c5fe68ff1 1fd74bac92c02b89917b3d88b0280e8c5fe68ff1
1fe6e57f144c8729970d7904390cf9e34a9fa5df 1fe6e57f144c8729970d7904390cf9e34a9fa5df
2000a199261a50d2dd45629874e06f353ff1bdcc 2000a199261a50d2dd45629874e06f353ff1bdcc
20b4f09de190076adc0786a62cb46592afed3c80 20b4f09de190076adc0786a62cb46592afed3c80
210848084ab5cc78ab2213b9ffe027b84c7a638a 210848084ab5cc78ab2213b9ffe027b84c7a638a
216b3b40a6ffdc10ccbc44294aeef0a46d7d3946 216b3b40a6ffdc10ccbc44294aeef0a46d7d3946
21d49d81d057e333930c1e7877cd55b6d22dc101 21d49d81d057e333930c1e7877cd55b6d22dc101
224e77313d01bd5ac184f1a8bf9645aca25d877a 224e77313d01bd5ac184f1a8bf9645aca25d877a
2267acddb79a004bb4a2e2e75653096b16e73295 2267acddb79a004bb4a2e2e75653096b16e73295
2283a4d4c1b3c26808db8e4dd2c2ad02f7f15392 2283a4d4c1b3c26808db8e4dd2c2ad02f7f15392
2354d12945d3221df57d9a44c26a24770a133109 2354d12945d3221df57d9a44c26a24770a133109
23c4cb3b50919fe9d0ee76c19ecfdc907a84636a 23c4cb3b50919fe9d0ee76c19ecfdc907a84636a
23ddc9ff26acd287c5727234442009fa2b23dca9 23ddc9ff26acd287c5727234442009fa2b23dca9
242cf9a9e34f0272a18a617f27708eccf8beb59c 242cf9a9e34f0272a18a617f27708eccf8beb59c
24a757ad9d9a0b713bae66fd52ba22f4191abf5e 24a757ad9d9a0b713bae66fd52ba22f4191abf5e
24a9f40955b34d28eabf63ed595274772c56ccc2 24a9f40955b34d28eabf63ed595274772c56ccc2
24af08abb9872759f16385ce920251503b12f0d5 24af08abb9872759f16385ce920251503b12f0d5
255bb6b6c14b56b35e30ad9c7ea06bff75e2c719 255bb6b6c14b56b35e30ad9c7ea06bff75e2c719
256d09b5042d331df2df8bc3310da5906e9df1d3 256d09b5042d331df2df8bc3310da5906e9df1d3
25d01a1200ccfd4a89d9e3fea4f0c7726c7ef95d 25d01a1200ccfd4a89d9e3fea4f0c7726c7ef95d
25fb6b1f3a150e87f1a5d3716b58e9c4e08ce49d 25fb6b1f3a150e87f1a5d3716b58e9c4e08ce49d
263cb4c9155e3bd7c334327098946900549d52f8 263cb4c9155e3bd7c334327098946900549d52f8
2691e3059fd289b654fc6c55154189928e9e3970 2691e3059fd289b654fc6c55154189928e9e3970
2717fa3f17e5ac1e4cbf1d42f48e719ffd43e6a5 2717fa3f17e5ac1e4cbf1d42f48e719ffd43e6a5
2810d94acbe9b0a9343357a178f538e260ff7a5f 2810d94acbe9b0a9343357a178f538e260ff7a5f
2820fd5e55736a4a1a9807a9e71adeb24225d38e 2820fd5e55736a4a1a9807a9e71adeb24225d38e
284f0d6104818542666ea9282a79d7d437b303bf 284f0d6104818542666ea9282a79d7d437b303bf
2863c1238ab69bb155d70bde3f996232c448a645 2863c1238ab69bb155d70bde3f996232c448a645
28cfa63b97cbe9c975dfe8faf9b064ab105bc3c4 28cfa63b97cbe9c975dfe8faf9b064ab105bc3c4
293bdd1d12a8df81234ce82072f576ea52fbd726 293bdd1d12a8df81234ce82072f576ea52fbd726
29663d2cfdbec0bb61370a0b7a3f6dea0ed2633f 29663d2cfdbec0bb61370a0b7a3f6dea0ed2633f
296f763796e151212f533f90c644708cfc647feb 296f763796e151212f533f90c644708cfc647feb
297e2a1f3b9bab949769b6297fc9f662967163e2 297e2a1f3b9bab949769b6297fc9f662967163e2
29a99748c59bb18fc4ab2a3dcfe69cd0cae08614 29a99748c59bb18fc4ab2a3dcfe69cd0cae08614
2a102b6073f0056e046dbb10c4c7c10bce855bb1 2a102b6073f0056e046dbb10c4c7c10bce855bb1
2ad3605f7b305d509b9ed2a95a540b431e12e6d2 2ad3605f7b305d509b9ed2a95a540b431e12e6d2
2adaeb4f4276ee12c6ce6599ee9cb91ae3902296 2adaeb4f4276ee12c6ce6599ee9cb91ae3902296
2b1722226df3793e607fc185b3ca2ea8c6793fb7 2b1722226df3793e607fc185b3ca2ea8c6793fb7
2b2302427857ba3d4611689aaaffc7eae140580e 2b2302427857ba3d4611689aaaffc7eae140580e
2b807ffc63c7d996b2ce012ae9a50e8362b47fff 2b807ffc63c7d996b2ce012ae9a50e8362b47fff
2b91414ad5570a599063ebb37114408420f9eaa0 2b91414ad5570a599063ebb37114408420f9eaa0
2bc17410c58ce86637b8ee954750bbef396e38df 2bc17410c58ce86637b8ee954750bbef396e38df
2d21f33b11307fed5dea68f67c41869f2675e42e 2d21f33b11307fed5dea68f67c41869f2675e42e
2d5c7cefcf1ba074a32521d903379ecd58f3d217 2d5c7cefcf1ba074a32521d903379ecd58f3d217
2dcc164ccc24bb5b22f223418544e969b078f6b3 2dcc164ccc24bb5b22f223418544e969b078f6b3
2dd32a67b10d518f66f91a424ae3ab2a2d82e869 2dd32a67b10d518f66f91a424ae3ab2a2d82e869
2de0502a653ef019c3905713f8884cc69990772b 2de0502a653ef019c3905713f8884cc69990772b
2e8871758366c363166db7320234153af3fb9c00 2e8871758366c363166db7320234153af3fb9c00
2eee70b584b78a61299289de17200be3b334b9f9 2eee70b584b78a61299289de17200be3b334b9f9
2f00313ad3bf9f0513addb825ee6b94b15d8a463 2f00313ad3bf9f0513addb825ee6b94b15d8a463
2fc7c8554452cd4acdea3e57edb42c540cdfea33 2fc7c8554452cd4acdea3e57edb42c540cdfea33
302ff86ccf01ba49cc84422c041ddbb6eed81568 302ff86ccf01ba49cc84422c041ddbb6eed81568
3055004cceb29458c22fa16611c0b4aaeb5c4888 3055004cceb29458c22fa16611c0b4aaeb5c4888
305c745a9df7a1212f474b55797d84dd3e38da85 305c745a9df7a1212f474b55797d84dd3e38da85
306e58520024d058afe72496ca16b1d473370642 306e58520024d058afe72496ca16b1d473370642
30b80f336e385776e02595fd01067cf10f1b6489 30b80f336e385776e02595fd01067cf10f1b6489
30c6edeaffd2395708cb08a54340bdcea7e7a056 30c6edeaffd2395708cb08a54340bdcea7e7a056
30ce91845e8e1276915c52174162ceb35745f4eb 30ce91845e8e1276915c52174162ceb35745f4eb
313ac35a0c22ed8805075d670b12de14a5ff0573 313ac35a0c22ed8805075d670b12de14a5ff0573
313c8db1920c91af71a6bed1464ab48389c8ffed 313c8db1920c91af71a6bed1464ab48389c8ffed
31c363270f94bc4579488350c7f13b081c51d665 31c363270f94bc4579488350c7f13b081c51d665
32012fed430b7eb6f1fa5996c3e18ae46fef7616 32012fed430b7eb6f1fa5996c3e18ae46fef7616
3231e3dd9f90a465cc7cc9fb56c99f41afcfc381 3231e3dd9f90a465cc7cc9fb56c99f41afcfc381
3237714ea24da5aeb004efb49db2ffb8a5083aa2 3237714ea24da5aeb004efb49db2ffb8a5083aa2
32840204126625e4c3a4cfacc4a8484868c7563b 32840204126625e4c3a4cfacc4a8484868c7563b
32df2f616ddd2271fe162b8ae88a831445ea9ca7 32df2f616ddd2271fe162b8ae88a831445ea9ca7
32f95fec5378921af7fdf54a3d5807c769394521 32f95fec5378921af7fdf54a3d5807c769394521
33104415ea1c5f85719c600e69fcc2b1c3276a86 33104415ea1c5f85719c600e69fcc2b1c3276a86
337e783efbc95045cef929ac81620214207e01ff 337e783efbc95045cef929ac81620214207e01ff
33952d38f2ece56d51422aa821adc3573317f3f3 33952d38f2ece56d51422aa821adc3573317f3f3
33ab8c1f610fb8b7ddb220650a3664cc0d1e20da 33ab8c1f610fb8b7ddb220650a3664cc0d1e20da
342ca5cc5ac33f356f82177d90375a65f1f6c1f4 342ca5cc5ac33f356f82177d90375a65f1f6c1f4
3468f4bbf84247113e97023291e417e99885e312 3468f4bbf84247113e97023291e417e99885e312
34799fbc3fe4f398410653b2615f7efed5aae77d 34799fbc3fe4f398410653b2615f7efed5aae77d
34937468740a14649894864ea06013e218651690 34937468740a14649894864ea06013e218651690
34b212ba918d4093e0d6cd1e4ff8c835d8be6d0a 34b212ba918d4093e0d6cd1e4ff8c835d8be6d0a
354e7f7afa3a43fac723c7a25bb6128036697d7c 354e7f7afa3a43fac723c7a25bb6128036697d7c
35a9aa81cc4de15bdc44be39ed118ae660969a62 35a9aa81cc4de15bdc44be39ed118ae660969a62
35d5eda40449b557e5c2e71e712a250575a92b8b 35d5eda40449b557e5c2e71e712a250575a92b8b
363b1d272791559a49163a1d492144d0ccdbcd6c 363b1d272791559a49163a1d492144d0ccdbcd6c
3675edf69ca4ec00988f27f353f033182af373dc 3675edf69ca4ec00988f27f353f033182af373dc
368774a200133f5d65c9d6483dd14fb70eb865be 368774a200133f5d65c9d6483dd14fb70eb865be
369a4d25fb86620c4e922ff7ced2a2067bf13e05 369a4d25fb86620c4e922ff7ced2a2067bf13e05
36c6fb9e9f88528e42fc77696fe9888be499b800 36c6fb9e9f88528e42fc77696fe9888be499b800
36cd92e94aed4802cdd962bf469d5079c53fd3e0 36cd92e94aed4802cdd962bf469d5079c53fd3e0
3753f49003df8d5d31208ab5b154ebe375d7e696 3753f49003df8d5d31208ab5b154ebe375d7e696
377fbacc797cf6a087794986b138a28d7f56a1ff 377fbacc797cf6a087794986b138a28d7f56a1ff
37a50ad4d6b304adcbaf5a81766216b102073a75 37a50ad4d6b304adcbaf5a81766216b102073a75
3828b9e67e1de01f2a38ed0c6b128a6b469897d1 3828b9e67e1de01f2a38ed0c6b128a6b469897d1
38a013f9dc8889477d639b500be9840198fa2916 38a013f9dc8889477d639b500be9840198fa2916
38af31364c6c34ab7c2692b9c1212f779a2cb1dd 38af31364c6c34ab7c2692b9c1212f779a2cb1dd
38e61ed2cc3ef223610c3d78bb726c7e50330b90 38e61ed2cc3ef223610c3d78bb726c7e50330b90
39a21a24fabe603313ea1715fcd7a498f5942449 39a21a24fabe603313ea1715fcd7a498f5942449
39f0d39adc112900f4c95f820027d806f1f2c9f4 39f0d39adc112900f4c95f820027d806f1f2c9f4
39f79cb5a9b688afbd38076d752e07e0608a508b 39f79cb5a9b688afbd38076d752e07e0608a508b
3a17aeeb272a656a9f17946d94fc248685b8ae7a 3a17aeeb272a656a9f17946d94fc248685b8ae7a
3a18501f31bc3d6a3e67ef89153da2212387e6db 3a18501f31bc3d6a3e67ef89153da2212387e6db
3a2582274b618299d71097dac885d9ab43905374 3a2582274b618299d71097dac885d9ab43905374
3a85d5ce66239b77a8c4f87a8dde4a2e1c82f922 3a85d5ce66239b77a8c4f87a8dde4a2e1c82f922
3c0904c40aeae9dd1b350599bd6689d1c94b4dc1 3c0904c40aeae9dd1b350599bd6689d1c94b4dc1
3c2d43eaca4af791030210e6dc88e38499629093 3c2d43eaca4af791030210e6dc88e38499629093
3c334decd653bec3db558f28fa396510d5657ff8 3c334decd653bec3db558f28fa396510d5657ff8
3c6a589ae699f08a3b7e6a91091c7f749b652ee2 3c6a589ae699f08a3b7e6a91091c7f749b652ee2
3d27b2e13c4222b9dd0007599fc97e3b35d8867c 3d27b2e13c4222b9dd0007599fc97e3b35d8867c
3d870e14e9c1dd9c85c80ca9cdb4b03404dacfe6 3d870e14e9c1dd9c85c80ca9cdb4b03404dacfe6
3ddd1fa10998765d57a16f268f04a6a3fb471d45 3ddd1fa10998765d57a16f268f04a6a3fb471d45
3e56a581045c1cb716f09b3871931d4cd0a8d906 3e56a581045c1cb716f09b3871931d4cd0a8d906
3e8a4a9e06de3ad1c0053b9ddb83f014646ac441 3e8a4a9e06de3ad1c0053b9ddb83f014646ac441
3edf5c1a5d7d0e8985f22463fe292310cf2d39be 3edf5c1a5d7d0e8985f22463fe292310cf2d39be
3fed5cd5962ac2f7bce73cbdaca4b63a319bd65e 3fed5cd5962ac2f7bce73cbdaca4b63a319bd65e
40b4badc4eb80ee58749660ede8a270b8f586ad1 40b4badc4eb80ee58749660ede8a270b8f586ad1
40d1f22b38d71ea6e799940c49873d649339e763 40d1f22b38d71ea6e799940c49873d649339e763
40ddb5b2e39a35b4202128feaa49881abc2519b1 40ddb5b2e39a35b4202128feaa49881abc2519b1
416b2cdc8f12185a9e6aa40d7cb317d35f2af742 416b2cdc8f12185a9e6aa40d7cb317d35f2af742
41be17fed16aa48a44e7f2a4b29945387793d70f 41be17fed16aa48a44e7f2a4b29945387793d70f
41f1b444d051e9ece8941ef0cd8fe4eebb26f987 41f1b444d051e9ece8941ef0cd8fe4eebb26f987
424a32f50fb5a9cfa4aeecac86f553c05efe5c71 424a32f50fb5a9cfa4aeecac86f553c05efe5c71
424b3f73be30b4aee734f231a56ad32f8dc0a5fe 424b3f73be30b4aee734f231a56ad32f8dc0a5fe
427b77cf55d038da6122be70575b060d11e69a04 427b77cf55d038da6122be70575b060d11e69a04
440054bcefe7be8e66671fc85774fdeac560e680 440054bcefe7be8e66671fc85774fdeac560e680
4466ded5299ad6c65d4411f82d6a89b251b4e063 4466ded5299ad6c65d4411f82d6a89b251b4e063
44d0af4a6deb178c894db53c3eb432b7b0c70c7a 44d0af4a6deb178c894db53c3eb432b7b0c70c7a
477e40c512eba061adda2ed210d3e1d5946e0250 477e40c512eba061adda2ed210d3e1d5946e0250
4788f1fc084643783d46e7362128041c127cfd46 4788f1fc084643783d46e7362128041c127cfd46
47a34d853b4c73f0280e360fea413480e4df8229 47a34d853b4c73f0280e360fea413480e4df8229
481e230af794627b428bf1e303599d34b2c6732d 481e230af794627b428bf1e303599d34b2c6732d
487289b9ec29c30adbed57bae798ac78c5a95dbd 487289b9ec29c30adbed57bae798ac78c5a95dbd
48882843b9a78c9d724d4cefdaacb6cf14e1d9d9 48882843b9a78c9d724d4cefdaacb6cf14e1d9d9
4910b4eee8bd3b9f9b6a6e853a4888e45321c52f 4910b4eee8bd3b9f9b6a6e853a4888e45321c52f
499e5bcf666b769723c5f9b4729b640aa23db401 499e5bcf666b769723c5f9b4729b640aa23db401
4a7d52f10f4dceb098a306773651ed85326960e7 4a7d52f10f4dceb098a306773651ed85326960e7
4b67ad08d4cb7366b9856a7f81fdd8eadc8ec9bb 4b67ad08d4cb7366b9856a7f81fdd8eadc8ec9bb
4b70c247e17f845d6d77eed08cbcd72807df1564 4b70c247e17f845d6d77eed08cbcd72807df1564
4b735772a217bc9f3eafb381583af8c4debd6dc7 4b735772a217bc9f3eafb381583af8c4debd6dc7
4b8498e095c5b2a472c1762697bd0fd23f67d595 4b8498e095c5b2a472c1762697bd0fd23f67d595
4ba3b5fa55fa901582881031d1b42885d3486d8c 4ba3b5fa55fa901582881031d1b42885d3486d8c
4bcfbf6abd9ac39f4d55b85782909c565b34f9d1 4bcfbf6abd9ac39f4d55b85782909c565b34f9d1
4bd1d9ccd11a7308ef853417c26d2b17be8b2ea4 4bd1d9ccd11a7308ef853417c26d2b17be8b2ea4
4be0cb24f460be16a25d1c8dc3dbf22be5432b65 4be0cb24f460be16a25d1c8dc3dbf22be5432b65
4be35b4980c61811fb0fd4bcf2215a467273b7f6 4be35b4980c61811fb0fd4bcf2215a467273b7f6
4c4ec5f1d0629d618c8a3213739eda92856d0589 4c4ec5f1d0629d618c8a3213739eda92856d0589
4cec57a4e8939f2ccbfc8f2105d151bd0467e1eb 4cec57a4e8939f2ccbfc8f2105d151bd0467e1eb
4cf6a92a2ef08ee42874aa13fb98bc55a993a300 4cf6a92a2ef08ee42874aa13fb98bc55a993a300
4cfd065314295321f2d0cb21039405a672d2bcd3 4cfd065314295321f2d0cb21039405a672d2bcd3
4d6192f040fd581097ac9af67caa59c7c9ac0a10 4d6192f040fd581097ac9af67caa59c7c9ac0a10
4dcc6651b3d1958cbb5d324e8497768825a0498a 4dcc6651b3d1958cbb5d324e8497768825a0498a
4df0e8a29ea3d9e708acfdd39f871734a6ad5c31 4df0e8a29ea3d9e708acfdd39f871734a6ad5c31
4e191fccc3bc28d44a04c1100749c0593b0cd7b2 4e191fccc3bc28d44a04c1100749c0593b0cd7b2
4f291a012f917656563cd369caaee90bd5f1cde8 4f291a012f917656563cd369caaee90bd5f1cde8
4f3e72ca2fd69d47ab2971f740dcf68c71d1ed56 4f3e72ca2fd69d47ab2971f740dcf68c71d1ed56
4f7b8927028673117d57c0e5c59f79736cd55a64 4f7b8927028673117d57c0e5c59f79736cd55a64
4fbb9e3b06753d0cab3dfb1e3ae279ae8bf74a23 4fbb9e3b06753d0cab3dfb1e3ae279ae8bf74a23
4fbde38e12cc071a9bc1740089b38af2f8ae3e3f 4fbde38e12cc071a9bc1740089b38af2f8ae3e3f
5042ba9fb31592880f94dc1a569176ab64c398a3 5042ba9fb31592880f94dc1a569176ab64c398a3
5076c3805345e397d206614f0f64c4819fd9eb6e 5076c3805345e397d206614f0f64c4819fd9eb6e
50be1e935747654e3cdf279cf94ec484437e391c 50be1e935747654e3cdf279cf94ec484437e391c
50d9e55d932257bf59883bee2db2b3cb9add09db 50d9e55d932257bf59883bee2db2b3cb9add09db
512e584f22c3d2a5595d3cc1fc7209ca0fef826e 512e584f22c3d2a5595d3cc1fc7209ca0fef826e
51797111b45055291e5715c0257a93aa0f6b36ee 51797111b45055291e5715c0257a93aa0f6b36ee
51c5b4d2c0bd04e675a214ee1eb4035b135a8b08 51c5b4d2c0bd04e675a214ee1eb4035b135a8b08
526fb02f9bbc31ecdfef22585a29aca1961af94c 526fb02f9bbc31ecdfef22585a29aca1961af94c
52df256d1388832f588550fe74ea6254c12f2161 52df256d1388832f588550fe74ea6254c12f2161
53826d54b6812dfe3fb8a4346a85063be987cccd 53826d54b6812dfe3fb8a4346a85063be987cccd
539c493763a3bc8e2cd9a00cb1e968719ebb057c 539c493763a3bc8e2cd9a00cb1e968719ebb057c
53ab452c21ec97e3b0aa8cbfbfb946d055f95b84 53ab452c21ec97e3b0aa8cbfbfb946d055f95b84
5435b7f5d6375224a5fd756d2d604bc9b2738f04 5435b7f5d6375224a5fd756d2d604bc9b2738f04
54e98739b1fe660ea30a77d730afc4e67ea86acb 54e98739b1fe660ea30a77d730afc4e67ea86acb
55095a4d4e20e65e999f5cc4cc7f033af5911150 55095a4d4e20e65e999f5cc4cc7f033af5911150
5540fea75db3c43f92a6962557860903cd7f767a 5540fea75db3c43f92a6962557860903cd7f767a
5547f07ac81c31a62730cc77cf3cbdf56023a0f8 5547f07ac81c31a62730cc77cf3cbdf56023a0f8
5560efa787f1f33a30ad2ace3dd7db691eab3012 5560efa787f1f33a30ad2ace3dd7db691eab3012
568d3abfd3294d73ed9bd309428ed121cfc9de2e 568d3abfd3294d73ed9bd309428ed121cfc9de2e
56a3c4ac607999fc4cc36aaf732b9699f52d3196 56a3c4ac607999fc4cc36aaf732b9699f52d3196
572086ce8c336bc4962f870f2ff23b42c31e87b5 572086ce8c336bc4962f870f2ff23b42c31e87b5
575a25d7017bedd8b6773cbf5115852fc4ced257 575a25d7017bedd8b6773cbf5115852fc4ced257
5786b86ac202ad9a5d28940e9630cbae24a9e242 5786b86ac202ad9a5d28940e9630cbae24a9e242
57a5ccbe38455117e84f521ed174d521090e7a0c 57a5ccbe38455117e84f521ed174d521090e7a0c
57b95d63aef078b10822d5a52f61b1863af5b71a 57b95d63aef078b10822d5a52f61b1863af5b71a
57c1a5c224d3f66cec76888c0c4fff583eda9fa4 57c1a5c224d3f66cec76888c0c4fff583eda9fa4
57f016940008d4a9bb9c9260716aac02b24c9989 57f016940008d4a9bb9c9260716aac02b24c9989
580a1e67243e15e32d0097845d12448cf7a6ba19 580a1e67243e15e32d0097845d12448cf7a6ba19
58263d86092676396b812277374e690979156a2a 58263d86092676396b812277374e690979156a2a
587190007e866d5bb203dc697fdf676dcb4097d3 587190007e866d5bb203dc697fdf676dcb4097d3
588a9df5847e186004fa7e5cc0ee7cc20a42d7bd 588a9df5847e186004fa7e5cc0ee7cc20a42d7bd
591089863e0e8eb181345f04b468b55acef972ad 591089863e0e8eb181345f04b468b55acef972ad
59b27877a5864d84135804c16e2deebeaeb4b0f4 59b27877a5864d84135804c16e2deebeaeb4b0f4
59b27b530a0ff7ce4f303aaddbebe89061b4a247 59b27b530a0ff7ce4f303aaddbebe89061b4a247
59d08aefe5c62987bb7bbf11d23abab72f04e184 59d08aefe5c62987bb7bbf11d23abab72f04e184
59e18173a9f83571ee0f994c9b642d762abf4ae9 59e18173a9f83571ee0f994c9b642d762abf4ae9
5a0008e6d9500015444f3470bf515c8dc05a0881 5a0008e6d9500015444f3470bf515c8dc05a0881
5b769258eb6722a141f9b8b844a3c15ff0067684 5b769258eb6722a141f9b8b844a3c15ff0067684
5c4ae4f95b8039f611eeeabe7fa5588af47644c7 5c4ae4f95b8039f611eeeabe7fa5588af47644c7
5ce1933f3c65c5e505683d0890255f7610dcdb3b 5ce1933f3c65c5e505683d0890255f7610dcdb3b
5d12b18adb582a77d44eca639fec025f455cff70 5d12b18adb582a77d44eca639fec025f455cff70
5d21bf5a174fbda1d78bff84c5dc710f3070cb13 5d21bf5a174fbda1d78bff84c5dc710f3070cb13
5d2ae1e6bf0441e79ec17e4745111070abc0d0bc 5d2ae1e6bf0441e79ec17e4745111070abc0d0bc
5dbfb9bb504b3ee98f79fd6f19e20380c602289a 5dbfb9bb504b3ee98f79fd6f19e20380c602289a
5dcdc6d4f8edbbe435e75650c98702d6e328dd8b 5dcdc6d4f8edbbe435e75650c98702d6e328dd8b
5e18b57ad01e79616f088e5563cf345f1acfb5e7 5e18b57ad01e79616f088e5563cf345f1acfb5e7
5e4a759e1e73a4cad94b5f10369484a29891445b 5e4a759e1e73a4cad94b5f10369484a29891445b
5e9d9abde07d464ffad5c813aded1221fec2d6f0 5e9d9abde07d464ffad5c813aded1221fec2d6f0
5ea20e08ac5e5af2bc9d877bc2a99a7922c637f9 5ea20e08ac5e5af2bc9d877bc2a99a7922c637f9
5ea58f48ac8192ba7fcb0761273db4516d6ba993 5ea58f48ac8192ba7fcb0761273db4516d6ba993
5f6ac4a8966cca7e7c2cb1d09e039c7932a772c6 5f6ac4a8966cca7e7c2cb1d09e039c7932a772c6
5fb11d79a5640f51438be790cf584219af0bcac3 5fb11d79a5640f51438be790cf584219af0bcac3
5fe0dbfc4a3a1cddedae8e4c6d7057353cc40d91 5fe0dbfc4a3a1cddedae8e4c6d7057353cc40d91
603b20d7d0c3129278905ed2ad855fb1ddf3cac4 603b20d7d0c3129278905ed2ad855fb1ddf3cac4
606a1636de92a159fc3d7e135ceca771ceba7064 606a1636de92a159fc3d7e135ceca771ceba7064
612a2b203196ed7513eb0d9bc910fc178c13fd22 612a2b203196ed7513eb0d9bc910fc178c13fd22
61784d666a36b850caba90dd76cb6dabb28e6941 61784d666a36b850caba90dd76cb6dabb28e6941
6208f5df14a7779352fbd8991dd0121bf03992f3 6208f5df14a7779352fbd8991dd0121bf03992f3
62301b4e0d744bc851a73559d3d95bf492d65fb3 62301b4e0d744bc851a73559d3d95bf492d65fb3
624e228330220f8ecce5e318a33e9e90c5a1bee2 624e228330220f8ecce5e318a33e9e90c5a1bee2
6301a383155b9fb3aec68ec5885458c7c711399b 6301a383155b9fb3aec68ec5885458c7c711399b
630f35db3e4af86727c7ff976c284ec377d85afb 630f35db3e4af86727c7ff976c284ec377d85afb
63688c04f494801915d00d8868ba3a722156fc53 63688c04f494801915d00d8868ba3a722156fc53
638e2fbad79f667e838835bc3112d58066a9e246 638e2fbad79f667e838835bc3112d58066a9e246
64136b0217fc1aff220ad948a5efa955dced2289 64136b0217fc1aff220ad948a5efa955dced2289
64ab9d1a8e0a9f7ec08df2dcbcbe97d5b7a37bd4 64ab9d1a8e0a9f7ec08df2dcbcbe97d5b7a37bd4
656422f6c8ac5fe9664b71f3e0b3bf9633f824ad 656422f6c8ac5fe9664b71f3e0b3bf9633f824ad
65907387dc6f2f636c913cc029eb838db73bcb06 65907387dc6f2f636c913cc029eb838db73bcb06
65a6c21b26353f968ac6e11d4750113da97a26fd 65a6c21b26353f968ac6e11d4750113da97a26fd
65e0fb237d5ce081356a93e79f7b6a69da3a5eb5 65e0fb237d5ce081356a93e79f7b6a69da3a5eb5
6650bbe3ab89df678fcbb14f8c7dac2ac0624eba 6650bbe3ab89df678fcbb14f8c7dac2ac0624eba
66e2f93adc719fd70e88161f720ede36eb100114 66e2f93adc719fd70e88161f720ede36eb100114
66f760c5cf7324dadb9fbc656c63fe64543e24a6 66f760c5cf7324dadb9fbc656c63fe64543e24a6
6707f1ffcb88696a8d400e21b807d6d39ea1af3c 6707f1ffcb88696a8d400e21b807d6d39ea1af3c
674929981e125200191cc555fce9838c7b4699b7 674929981e125200191cc555fce9838c7b4699b7
676544cc7be631b9616ce471c5c9838bae96f193 676544cc7be631b9616ce471c5c9838bae96f193
677d83058666a4d78a5dca39efde45c08fedc4d9 677d83058666a4d78a5dca39efde45c08fedc4d9
67b8355fd2d618641577758fd74e3d56bef9890e 67b8355fd2d618641577758fd74e3d56bef9890e
689e0cbd8843d09bf93de7d43770a16896e7b869 689e0cbd8843d09bf93de7d43770a16896e7b869
68ae9e3e04c1f769a042131582703296061e4758 68ae9e3e04c1f769a042131582703296061e4758
68e211ef55e2828d2b366e2e7d5b515ed79041b6 68e211ef55e2828d2b366e2e7d5b515ed79041b6
68e5a2f8ce32199c35990ffb19b9a80d069aca2e 68e5a2f8ce32199c35990ffb19b9a80d069aca2e
69701e3d52e4f8e4ef061efe89c23d88530ecf76 69701e3d52e4f8e4ef061efe89c23d88530ecf76
69806a9e4a44456924bc24810067d4077df38ffe 69806a9e4a44456924bc24810067d4077df38ffe
69d3651a3479333825ede71e7ee4cf1ef983075a 69d3651a3479333825ede71e7ee4cf1ef983075a
6a904e101309a82069992ff4530ca3ce27a4e247 6a904e101309a82069992ff4530ca3ce27a4e247
6a990a71f9225c26137eab3a0cab63c07940580c 6a990a71f9225c26137eab3a0cab63c07940580c
6a9f105ca0b8daa9b6905d17e800ba1b9e4d60c0 6a9f105ca0b8daa9b6905d17e800ba1b9e4d60c0
6ab9d4795229c4391c381a7431ea66f082b49a28 6ab9d4795229c4391c381a7431ea66f082b49a28
6aced6098aedfc0d7031aee194e4865e457dd3fa 6aced6098aedfc0d7031aee194e4865e457dd3fa
6b621cdc82efff3d429e096b4e82df6256a537f0 6b621cdc82efff3d429e096b4e82df6256a537f0
6be7e414dea72c7c35e1b212f0f6e75568503ea6 6be7e414dea72c7c35e1b212f0f6e75568503ea6
6c82dd7ea286e81a63d701cff9730e0b9b02547c 6c82dd7ea286e81a63d701cff9730e0b9b02547c
6d169236e3e8db94225083cb1485414ccc2815f2 6d169236e3e8db94225083cb1485414ccc2815f2
6d1f2b115d75c28598762877a09ae4436eb84eea 6d1f2b115d75c28598762877a09ae4436eb84eea
6e5989dfeac441e63680c1791b2850276dffdc78 6e5989dfeac441e63680c1791b2850276dffdc78
6eb0b43c1a229f7869069ad99811804dc94394a8 6eb0b43c1a229f7869069ad99811804dc94394a8
6ef3b6a194ecb4748722942ec432b99944f26c86 6ef3b6a194ecb4748722942ec432b99944f26c86
6f61a2102daf1ddbfc6eb9a1770062b099ddc6d2 6f61a2102daf1ddbfc6eb9a1770062b099ddc6d2
6fd8b755f02f44fd4ddcfcf022593198a8efab60 6fd8b755f02f44fd4ddcfcf022593198a8efab60
71294aa84347944e7ca0ba2622f34e7c4e128fe0 71294aa84347944e7ca0ba2622f34e7c4e128fe0
71ccd326125612e52c7f29251e2769af8ed9f52a 71ccd326125612e52c7f29251e2769af8ed9f52a
71e0bc3305e9c1a68fddecb8dd73fedace7e5dfa 71e0bc3305e9c1a68fddecb8dd73fedace7e5dfa
71fc781272326de7aa17dafc5970ad8168b45c8a 71fc781272326de7aa17dafc5970ad8168b45c8a
7233e8f10ab9478ed20d5795cb47ea626dedda3d 7233e8f10ab9478ed20d5795cb47ea626dedda3d
72b2d974b6f02b9cea956530a07b969b5dc01c4c 72b2d974b6f02b9cea956530a07b969b5dc01c4c
73528a6d4b5de80a76c06162d53f92097c4f6263 73528a6d4b5de80a76c06162d53f92097c4f6263
73de4b42d4db17b86e78afa4e2d31de97ccf1b16 73de4b42d4db17b86e78afa4e2d31de97ccf1b16
74599bfb19facbf6a9d008d74c94dc6997bc7549 74599bfb19facbf6a9d008d74c94dc6997bc7549
74d36aa28a63a87bdf50810945e6165167d2d6c8 74d36aa28a63a87bdf50810945e6165167d2d6c8
74dd0de5fe5286f2336032cf944782ed2b931ec3 74dd0de5fe5286f2336032cf944782ed2b931ec3
75089f7cf10f6efb51ae3d0037d1276eeaae3954 75089f7cf10f6efb51ae3d0037d1276eeaae3954
753a9594214523ed60a4faa4ea17dad813176278 753a9594214523ed60a4faa4ea17dad813176278
75c1de09673f8b6cc9447ea9182a24189065ac9a 75c1de09673f8b6cc9447ea9182a24189065ac9a
75c340ca28f83a0916f4a019596690a7acfa4173 75c340ca28f83a0916f4a019596690a7acfa4173
767cf9216583c4eddbf797b4b9e72d34194bce71 767cf9216583c4eddbf797b4b9e72d34194bce71
76a7be17da5a4ccb46d38b90562351a6fca11529 76a7be17da5a4ccb46d38b90562351a6fca11529
7737a4ef83dd477903466af1b6097ac9d41ea834 7737a4ef83dd477903466af1b6097ac9d41ea834
77bfdd66abfc94d9f2bf7400df5d14bdf506fd39 77bfdd66abfc94d9f2bf7400df5d14bdf506fd39
77d00151336f1d17addb2ee38795e6799460131c 77d00151336f1d17addb2ee38795e6799460131c
781d78692daaff220bee84bf425c17dd82ab0a13 781d78692daaff220bee84bf425c17dd82ab0a13
784f2bee0cdbbc0a53eeaad900b445eb2f104110 784f2bee0cdbbc0a53eeaad900b445eb2f104110
796da3ed3fc7157239476b9f7966aef59a1d9eaa 796da3ed3fc7157239476b9f7966aef59a1d9eaa
799e3b67538fe91b62e0192917d352d46daa5f0f 799e3b67538fe91b62e0192917d352d46daa5f0f
79e8ed588b8b3e4a36318137a5cbc3a3e9493c3d 79e8ed588b8b3e4a36318137a5cbc3a3e9493c3d
7ac1f2fd9b559354ae25aaf0da38104203ef13c1 7ac1f2fd9b559354ae25aaf0da38104203ef13c1
7b229f169825e860f892719f3a316e9366d7f013 7b229f169825e860f892719f3a316e9366d7f013
7b5700cc19c1157d10be19c74cd653888d71b5ca 7b5700cc19c1157d10be19c74cd653888d71b5ca
7c30828f51bfb3c061f21ed8b3482bb8478b8c31 7c30828f51bfb3c061f21ed8b3482bb8478b8c31
7cc333be526fa2d7e2dbcb2386a98d865c8deb04 7cc333be526fa2d7e2dbcb2386a98d865c8deb04
7cc44ed56a20a0cd3ffcbb7d654abe49c1de5c8e 7cc44ed56a20a0cd3ffcbb7d654abe49c1de5c8e
7cfe79420f812b2083795acecb27a83047b0df20 7cfe79420f812b2083795acecb27a83047b0df20
7de1ac8ffbb3387d2e22d795d994473517dd8555 7de1ac8ffbb3387d2e22d795d994473517dd8555
7e29f9faf5b2970233ffddd45a27fbbd25882b19 7e29f9faf5b2970233ffddd45a27fbbd25882b19
7f96065a63b54cedb05ee340a513a2185171739e 7f96065a63b54cedb05ee340a513a2185171739e
8020600c2761efd22c1e26ecbca1d96411bd3741 8020600c2761efd22c1e26ecbca1d96411bd3741
805a96287c40b8b26b2b36a4e5b561601e474e69 805a96287c40b8b26b2b36a4e5b561601e474e69
80734010b1d33729d88aa0cf1b6b94ac1eb1add5 80734010b1d33729d88aa0cf1b6b94ac1eb1add5
822dd23dbc991f4dd0c339674fd41aa9df36ec38 822dd23dbc991f4dd0c339674fd41aa9df36ec38
82645dcf9945363243600a6fce96ee2100247c20 82645dcf9945363243600a6fce96ee2100247c20
82b63bd58df39f548820e895f2305828b1d1bad3 82b63bd58df39f548820e895f2305828b1d1bad3
82bedfd090602a3f2984482225c1eb32944083e6 82bedfd090602a3f2984482225c1eb32944083e6
82ce0fffe8ee0ffe89c5b839e27c3d60a76e1f65 82ce0fffe8ee0ffe89c5b839e27c3d60a76e1f65
8324afd37a7d5ce35db1d25d7184cb1fb5d4d8d4 8324afd37a7d5ce35db1d25d7184cb1fb5d4d8d4
833491f45a0332a2fb9d8d6863aa03c8b990579c 833491f45a0332a2fb9d8d6863aa03c8b990579c
835e169875fc55e6bd5ea1ad53662e6294c8f8a2 835e169875fc55e6bd5ea1ad53662e6294c8f8a2
837aef7b1a36a85e8a2ef775d9a2c92c6ac796c4 837aef7b1a36a85e8a2ef775d9a2c92c6ac796c4
839074b09255581679536fba57adfed493e522d4 839074b09255581679536fba57adfed493e522d4
83b208eec44851750771956eeae7e53f6ca7a78f 83b208eec44851750771956eeae7e53f6ca7a78f
83c460f874f6c21483ed58a92c0f1f203037768a 83c460f874f6c21483ed58a92c0f1f203037768a
83ee071fccf8240440534e1cf9028a1dcf67cf93 83ee071fccf8240440534e1cf9028a1dcf67cf93
842496b7d02fd244e5f59e9c1cb7a491644f6591 842496b7d02fd244e5f59e9c1cb7a491644f6591
84a4e2a018a047e807c60cf85fa841030415694e 84a4e2a018a047e807c60cf85fa841030415694e
84d43e52083b5a5cd56522fde8e82068563f6586 84d43e52083b5a5cd56522fde8e82068563f6586
84e407ed83fb8c09048726401d66dd591fa19a5a 84e407ed83fb8c09048726401d66dd591fa19a5a
8533315e351f91e437a3ba7c4c16dafca27f56d1 8533315e351f91e437a3ba7c4c16dafca27f56d1
859bb5f0ca23aa16452b042a6835971770e469f0 859bb5f0ca23aa16452b042a6835971770e469f0
85b1a3e2fba52b70788f5b55fe818bfc4992b07c 85b1a3e2fba52b70788f5b55fe818bfc4992b07c
85e8a5a6758e3361f938cb240ce4a2d5735606e5 85e8a5a6758e3361f938cb240ce4a2d5735606e5
864bba26184fdf6423586b04bf8662e0c700f46c 864bba26184fdf6423586b04bf8662e0c700f46c
86723f0a7f17f6dbf5f7d0ef3d1288d659b006ae 86723f0a7f17f6dbf5f7d0ef3d1288d659b006ae
869b3e46520c5e232f7fb7ab486d6891ff052315 869b3e46520c5e232f7fb7ab486d6891ff052315
86f85b9075a15935910d25585668d584c711faeb 86f85b9075a15935910d25585668d584c711faeb
874b250a88779632df5b10099cca23fd572e7e8a 874b250a88779632df5b10099cca23fd572e7e8a
87883c501159f5a7a09679cee78bc6fbecf21d14 87883c501159f5a7a09679cee78bc6fbecf21d14
87a73cc12b9bfbac90be65a30f4ae4daed5f6376 87a73cc12b9bfbac90be65a30f4ae4daed5f6376
87de7b837d9130237eef599287e9a6fcb59ee04d 87de7b837d9130237eef599287e9a6fcb59ee04d
8857a293fe5f105ef3f36fb712b84de544bd0d76 8857a293fe5f105ef3f36fb712b84de544bd0d76
888076c3e7b91cfec7169c6f93aa5f291f446be0 888076c3e7b91cfec7169c6f93aa5f291f446be0
892b3944386d7d04d3eb5bb6d6d406ffc88f227c 892b3944386d7d04d3eb5bb6d6d406ffc88f227c
8948e1114126cfd8551505f04a832a554075da0b 8948e1114126cfd8551505f04a832a554075da0b
89aa667f0cbf66b952505791f2f808fc5a10afa4 89aa667f0cbf66b952505791f2f808fc5a10afa4
89de354795ec7a7cdab07c091029653d3618540d 89de354795ec7a7cdab07c091029653d3618540d
89eae33dc288d185ceaefd268d8a1388d7e60af9 89eae33dc288d185ceaefd268d8a1388d7e60af9
8afeba580a92fc67e3029f85f3589c0f2567c71a 8afeba580a92fc67e3029f85f3589c0f2567c71a
8b013d9ba8c3aa1cb0aabfbedce154308db17dce 8b013d9ba8c3aa1cb0aabfbedce154308db17dce
8b3feb1d346f69f9d2e1a98c736518331097f2e3 8b3feb1d346f69f9d2e1a98c736518331097f2e3
8b845d5031a0e7f6e766cc4237ff29f2d1ea8e83 8b845d5031a0e7f6e766cc4237ff29f2d1ea8e83
8ba09f67540e84fc5a2b33f4ca1bab4ac5eded35 8ba09f67540e84fc5a2b33f4ca1bab4ac5eded35
8bb6538d7664944e33cfe9b9f60bdec613d686f7 8bb6538d7664944e33cfe9b9f60bdec613d686f7
8c1a7e728af8293775fe5329966c540447ace038 8c1a7e728af8293775fe5329966c540447ace038
8c519442d792a77c1339a8de2fc403920b074b12 8c519442d792a77c1339a8de2fc403920b074b12
8c5218c9bbac0423ddc178bf04460f59d381e406 8c5218c9bbac0423ddc178bf04460f59d381e406
8c62f9bfd2c29fea48a6e9c960490cb772d931c5 8c62f9bfd2c29fea48a6e9c960490cb772d931c5
8cae140aac902c443348f843959c44058b766376 8cae140aac902c443348f843959c44058b766376
8cbb5c0b5a8a299366620dfe4ea14a861e1d79c5 8cbb5c0b5a8a299366620dfe4ea14a861e1d79c5
8ce692498adabba42c4b799d769123ceceafe096 8ce692498adabba42c4b799d769123ceceafe096
8cfa1434d15377db1daa0ad0d7d7c6eec9af1d6e 8cfa1434d15377db1daa0ad0d7d7c6eec9af1d6e
8d3fc4b9b0f639e37aecc5857d626bd92827203e 8d3fc4b9b0f639e37aecc5857d626bd92827203e
8d41181696b8f344a970fea0c80be82f42b0490e 8d41181696b8f344a970fea0c80be82f42b0490e
8d46b677036915afaff078a61ef92c2f66801c37 8d46b677036915afaff078a61ef92c2f66801c37
8dfbcff1b616005e7e2d3f4ec0191ba9cfacd339 8dfbcff1b616005e7e2d3f4ec0191ba9cfacd339
8dfce04797860966535abcab82d4cbde74c6b1cc 8dfce04797860966535abcab82d4cbde74c6b1cc
8e2b732355aabaabaf4b63bb760cc101dc3f1111 8e2b732355aabaabaf4b63bb760cc101dc3f1111
8e3aed576e8dbc27c829a5416f57982cf7559694 8e3aed576e8dbc27c829a5416f57982cf7559694
8ea4d3e06d19aa871b855021825cba04c69b2f95 8ea4d3e06d19aa871b855021825cba04c69b2f95
8ed080d402ed953ce7a09d5bf944a6ee9bdaebc4 8ed080d402ed953ce7a09d5bf944a6ee9bdaebc4
8ed10e7fb5e6f35fab1077132d45288b27a84c0b 8ed10e7fb5e6f35fab1077132d45288b27a84c0b
8fa10191726ea24b2bcc3db9a8a51db434801544 8fa10191726ea24b2bcc3db9a8a51db434801544
8fae2c05088a65b755b09f03e8e05dcc66ae5b12 8fae2c05088a65b755b09f03e8e05dcc66ae5b12
8fb803bb6ced40f6205ebe916e01aabd493af039 8fb803bb6ced40f6205ebe916e01aabd493af039
90e6ff749d39315e8b08f887c26fbda0bb674c38 90e6ff749d39315e8b08f887c26fbda0bb674c38
90f774c55aec96dc9a5febd8ffe0758a7193607b 90f774c55aec96dc9a5febd8ffe0758a7193607b
91089aa8ffb598fa084e9eb32390f15cbffa509e 91089aa8ffb598fa084e9eb32390f15cbffa509e
916ef49a5a6e2d4b45858b7691f836915c96a658 916ef49a5a6e2d4b45858b7691f836915c96a658
92129a06d345787832334af9de12e6342fafc439 92129a06d345787832334af9de12e6342fafc439
921f7a3f41ee19163daa139cc32f976ac3c83a6f 921f7a3f41ee19163daa139cc32f976ac3c83a6f
92278a3aa1f2e14483883b0fc5f735b445b9f012 92278a3aa1f2e14483883b0fc5f735b445b9f012
927ed7e641489041a2557fcb263e64a068811999 927ed7e641489041a2557fcb263e64a068811999
92bfd86658f56f993af7d3ea2223024c6fce1e87 92bfd86658f56f993af7d3ea2223024c6fce1e87
92c10c41cc6150a6746f8764cb871c1b693a5d59 92c10c41cc6150a6746f8764cb871c1b693a5d59
92c8590a45fc15202950d3286f70582ac761d0d2 92c8590a45fc15202950d3286f70582ac761d0d2
92d74908d781707cf199126a31f84a7fe36d8396 92d74908d781707cf199126a31f84a7fe36d8396
9408e506d754df9c32e0327ba5818dcebf0f035d 9408e506d754df9c32e0327ba5818dcebf0f035d
9439eaa6806372facbc6ed170599f976e9bfae26 9439eaa6806372facbc6ed170599f976e9bfae26
948eec388fd5c97643a3ca9eabea32fb174ac31d 948eec388fd5c97643a3ca9eabea32fb174ac31d
950dd49bf44903f0212876bdeaa6c5f1dacfe0bc 950dd49bf44903f0212876bdeaa6c5f1dacfe0bc
95c2dd2c91124071059b85f1bfd6b951ba2fe681 95c2dd2c91124071059b85f1bfd6b951ba2fe681
95d1eca6d137326f8ff9db44b59280e9d1bb861b 95d1eca6d137326f8ff9db44b59280e9d1bb861b
9626c05ecf508e3db358668fc7b6b3dc6943a42d 9626c05ecf508e3db358668fc7b6b3dc6943a42d
96274cf0f2bd941ebc1aa04e53a6ae3fcde99e65 96274cf0f2bd941ebc1aa04e53a6ae3fcde99e65
962a109ea8eb953efdf9927f8ee0417cbd51037e 962a109ea8eb953efdf9927f8ee0417cbd51037e
96608cd6a1411015fe271b16c39780fc6c1f0536 96608cd6a1411015fe271b16c39780fc6c1f0536
971ee2acb016f3ab95890018d2607f7a083f8390 971ee2acb016f3ab95890018d2607f7a083f8390
972b8d6fdb3f2a1162a5134a8e806152fa2f269c 972b8d6fdb3f2a1162a5134a8e806152fa2f269c
9771ab02dc07b5d35a29a2d696397043381792a4 9771ab02dc07b5d35a29a2d696397043381792a4
97ebe6c966836753456f7d45fc45aef1dde94809 97ebe6c966836753456f7d45fc45aef1dde94809
99f63273f0be319da48a26ffff58f096d0b7ae99 99f63273f0be319da48a26ffff58f096d0b7ae99
9a763a9067984813a330c35b889e6ca04de64627 9a763a9067984813a330c35b889e6ca04de64627
9b2b48d7310a0d74dec73e8450ab1a4fe4fae004 9b2b48d7310a0d74dec73e8450ab1a4fe4fae004
9c8988380c2c934ea713d3a1880449608f1989fd 9c8988380c2c934ea713d3a1880449608f1989fd
9cd92f522be0eff3227dca936f784e4e733b480d 9cd92f522be0eff3227dca936f784e4e733b480d
9cfa1f73077e4d5be5018ed1d9e37e26256ad376 9cfa1f73077e4d5be5018ed1d9e37e26256ad376
9d7bb4dc57d5141f281b6fa0730a56a93ab45348 9d7bb4dc57d5141f281b6fa0730a56a93ab45348
9dce5f2f4228c2423069f2dfb330904352a46416 9dce5f2f4228c2423069f2dfb330904352a46416
9eeee421f6a526f34e28f1389060cafc20488656 9eeee421f6a526f34e28f1389060cafc20488656
9ef6679ba465ad35665cf458140c4c62352cc678 9ef6679ba465ad35665cf458140c4c62352cc678
9efefb5a451177113c8459f0810b1ca59b4a1c09 9efefb5a451177113c8459f0810b1ca59b4a1c09
9fd7a0bef622c8c19e4897ac41a35672f72c260b 9fd7a0bef622c8c19e4897ac41a35672f72c260b
9fef27108aac1cc0aec031c3852b017350ac3ff1 9fef27108aac1cc0aec031c3852b017350ac3ff1
a0c2e8a50d1a9bb23dadce665e86ba9f8eddb67f a0c2e8a50d1a9bb23dadce665e86ba9f8eddb67f
a1402a51833b5e81ffd00a97da7f432248ca2986 a1402a51833b5e81ffd00a97da7f432248ca2986
a15321c59095ef78b043c898e6f4908c131a7256 a15321c59095ef78b043c898e6f4908c131a7256
a2ac155484ce8ff8468f3b1c18936bd86a896616 a2ac155484ce8ff8468f3b1c18936bd86a896616
a2ac8fe371aa05651a1b8a7972cbdefdca89a9b2 a2ac8fe371aa05651a1b8a7972cbdefdca89a9b2
a3238a01bfb27cafa6fd5a7a9d7c191d14102534 a3238a01bfb27cafa6fd5a7a9d7c191d14102534
a35217e15ffc9760e63bb6f80fcaf82307211fed a35217e15ffc9760e63bb6f80fcaf82307211fed
a3522017dac1e137d83d3819fb2156f0fdfd34b8 a3522017dac1e137d83d3819fb2156f0fdfd34b8
a3e34b2b8bfe103dde9499e863ec050a4a90dba3 a3e34b2b8bfe103dde9499e863ec050a4a90dba3
a3f105e2e23518921b23122fa2e2ea9acbaf1977 a3f105e2e23518921b23122fa2e2ea9acbaf1977
a400cecfa70bb864968e18327b3929643f06d154 a400cecfa70bb864968e18327b3929643f06d154
a4e5d2051a905875daa26f529b306409a8ca633f a4e5d2051a905875daa26f529b306409a8ca633f
a526b992d6d4a66c622296c4001272c5b709fde6 a526b992d6d4a66c622296c4001272c5b709fde6
a5750896e1ad97699f395be0792a37b2025838d9 a5750896e1ad97699f395be0792a37b2025838d9
a5bb0ae478e03db04f5c56138f45ef010cc8ffe8 a5bb0ae478e03db04f5c56138f45ef010cc8ffe8
a5d1488f587a622e98df4a34a5ded6cb74fffbec a5d1488f587a622e98df4a34a5ded6cb74fffbec
a5fa7084fdf09e2146e0718ed29778be9abfa960 a5fa7084fdf09e2146e0718ed29778be9abfa960
a6bb20e102f2834e7bded77e47124dbdb159f08e a6bb20e102f2834e7bded77e47124dbdb159f08e
a6f57a7aee60b3f8622a5b3a0fda36817e5df363 a6f57a7aee60b3f8622a5b3a0fda36817e5df363
a71026605e8eb75f4291b541808630420acb7a34 a71026605e8eb75f4291b541808630420acb7a34
a7b56b644640308d19b4fa48b4e95810cfb96bc3 a7b56b644640308d19b4fa48b4e95810cfb96bc3
a9245c1742ec40654e50b7277610989116b5770a a9245c1742ec40654e50b7277610989116b5770a
a92ab6a334e44b0dd1eb8c34e1213126097d0045 a92ab6a334e44b0dd1eb8c34e1213126097d0045
a97a008a3c0b5bde1ca095bd881226bce31bafdb a97a008a3c0b5bde1ca095bd881226bce31bafdb
a9a61c52db22efe84cd45634a7f63c8bc200cb05 a9a61c52db22efe84cd45634a7f63c8bc200cb05
a9c5cddaba716c42bddbc18820e0d1426b5b7a21 a9c5cddaba716c42bddbc18820e0d1426b5b7a21
a9c6afe5ac9438e64e1875a30565749735b7f541 a9c6afe5ac9438e64e1875a30565749735b7f541
a9ee35155cb5e0116648efca07c98c896398417a a9ee35155cb5e0116648efca07c98c896398417a
aa26b4c460ca8d5e1f753d24fc81bb60f0f67eda aa26b4c460ca8d5e1f753d24fc81bb60f0f67eda
aa2bf15e656c7ca77a4877eb8f1517be810a8228 aa2bf15e656c7ca77a4877eb8f1517be810a8228
aaf0de102c4058112d04c6fdcc92c15e29fd71db aaf0de102c4058112d04c6fdcc92c15e29fd71db
acd66fc08c20781869bfbefee211c30f003efba7 acd66fc08c20781869bfbefee211c30f003efba7
ad54b1ff1d207d89e769654384cc93bec7631164 ad54b1ff1d207d89e769654384cc93bec7631164
ad9d1ebaab197f520de2f06ea07f048bee16dd49 ad9d1ebaab197f520de2f06ea07f048bee16dd49
ae226281a73b1563b930d62e8b42950cfc2085d4 ae226281a73b1563b930d62e8b42950cfc2085d4
ae7cd9253999469ff82e5f4cbf580476b40a355a ae7cd9253999469ff82e5f4cbf580476b40a355a
ae93a7ab58cd0f0db7db597ae7dd957a4ef3b0b1 ae93a7ab58cd0f0db7db597ae7dd957a4ef3b0b1
aec35d0c9bcfaa8dbde95f63642fefc43d046488 aec35d0c9bcfaa8dbde95f63642fefc43d046488
aefd9d49e8f072c9adce43d7387456f734ac44d5 aefd9d49e8f072c9adce43d7387456f734ac44d5
af319921f6546b7374f4cf821adcac3d3afb00dc af319921f6546b7374f4cf821adcac3d3afb00dc
af740c437de31eaab9c06abd0427061bf6b1cf48 af740c437de31eaab9c06abd0427061bf6b1cf48
afd432b33160cdf36891030c91838540e15ad1af afd432b33160cdf36891030c91838540e15ad1af
afe3aaf3c354fa69a85bdcd1f8eccb546b35438b afe3aaf3c354fa69a85bdcd1f8eccb546b35438b
b01c9bb0d6e9ff5062428abe576a1e03e8e563d1 b01c9bb0d6e9ff5062428abe576a1e03e8e563d1
b03a15db36bb10c925a416120f116b8af0f02581 b03a15db36bb10c925a416120f116b8af0f02581
b081ff37b07927b3331ca23a8970d7131b3ba2a2 b081ff37b07927b3331ca23a8970d7131b3ba2a2
b0a90e7ddb45a4e083a0ab6580dc1ac70f74c95a b0a90e7ddb45a4e083a0ab6580dc1ac70f74c95a
b1160522edd4fcfd52935d39227d3d19653149ec b1160522edd4fcfd52935d39227d3d19653149ec
b2b7d29024bd6837e715b23f2fea91fe83dbdc36 b2b7d29024bd6837e715b23f2fea91fe83dbdc36
b3119667217a4234054bf65de9f8618f0b647146 b3119667217a4234054bf65de9f8618f0b647146
b3edf14fd0316ebd681a603b4aa8fc4071fec69c b3edf14fd0316ebd681a603b4aa8fc4071fec69c
b412c0b9370c7da4f587a36940c8fab94f5ae54d b412c0b9370c7da4f587a36940c8fab94f5ae54d
b449955d52ce2c4a31da8545577170493e245f59 b449955d52ce2c4a31da8545577170493e245f59
b45819be0a4aa71e29f9ee0eb47ad477ea9ad332 b45819be0a4aa71e29f9ee0eb47ad477ea9ad332
b4ae81c9c648a215128177e126e0823580d8c6af b4ae81c9c648a215128177e126e0823580d8c6af
b547035cfa9d37a40f47ec9027b4a8b227c6c023 b547035cfa9d37a40f47ec9027b4a8b227c6c023
b55824b7fb3da05679c425418ca6e187fdbcc202 b55824b7fb3da05679c425418ca6e187fdbcc202
b579525faac18e1fa52096b2e9b6eff34a70b404 b579525faac18e1fa52096b2e9b6eff34a70b404
b5d40dd4f8dea1909e5f092a42b9c7fee5afde18 b5d40dd4f8dea1909e5f092a42b9c7fee5afde18
b5e897494a5f32210b38713917210c92394b04c1 b5e897494a5f32210b38713917210c92394b04c1
b5f18478f6e323bec3ea60095824327b1d339be7 b5f18478f6e323bec3ea60095824327b1d339be7
b63b67619ddc63c71cde038f5285eaa6c0bfd677 b63b67619ddc63c71cde038f5285eaa6c0bfd677
b66b98d1d97eeb26d881632fb2479c01345c24f8 b66b98d1d97eeb26d881632fb2479c01345c24f8
b67067170c0d9fa82221a7fcb17e2c4997411409 b67067170c0d9fa82221a7fcb17e2c4997411409
b6c243501ac7125dade9fca2eca3ca4027ad8159 b6c243501ac7125dade9fca2eca3ca4027ad8159
b6dc9c5861aaf1a50084d22ae880a46efca75af9 b6dc9c5861aaf1a50084d22ae880a46efca75af9
b6dee07d5cf05bbd06c4eefe5b2db9d0e5196d6e b6dee07d5cf05bbd06c4eefe5b2db9d0e5196d6e
b730031a7e33f8137b044cc63ce31b7d61eddd54 b730031a7e33f8137b044cc63ce31b7d61eddd54
b76557b8df39ce1e16d37860d6dec926d60609f4 b76557b8df39ce1e16d37860d6dec926d60609f4
b7951dabdc82e45d46d3cf1bd8c7ed8b3a6f7c0f b7951dabdc82e45d46d3cf1bd8c7ed8b3a6f7c0f
b86394c1517e30574916e5fcf8eca5d2b61475f6 b86394c1517e30574916e5fcf8eca5d2b61475f6
b8f7e46b40909bedc61701d3446c5c85c2d1de1c b8f7e46b40909bedc61701d3446c5c85c2d1de1c
b94097b523d6e8aa9bfc26451d58fb0aa2c6d09e b94097b523d6e8aa9bfc26451d58fb0aa2c6d09e
b96ac6e6ce1ae675095f1b238b7bc4f71f38beaf b96ac6e6ce1ae675095f1b238b7bc4f71f38beaf
b99e453a341f8893f5dd3fc79da3b7f7a7468aab b99e453a341f8893f5dd3fc79da3b7f7a7468aab
b9e4efad284f333f7df54868689fbb1f3adc93d1 b9e4efad284f333f7df54868689fbb1f3adc93d1
b9ecd84028e3fbebd1bf009c3c57e8a193e45646 b9ecd84028e3fbebd1bf009c3c57e8a193e45646
b9fcffc4ea47e42d7b5c8caa8cc6efa333ac5f3e b9fcffc4ea47e42d7b5c8caa8cc6efa333ac5f3e
ba0904cf6414e64325bdd00cbdd618614dab3bda ba0904cf6414e64325bdd00cbdd618614dab3bda
ba1032ae1bc11be52031bda2885c0fbba744cc66 ba1032ae1bc11be52031bda2885c0fbba744cc66
ba90fd3b0ed40e0aad8afe096a89b696bc2b7ca3 ba90fd3b0ed40e0aad8afe096a89b696bc2b7ca3
ba91c0256b5fc9b3ff70899fbfc57a778c2a4079 ba91c0256b5fc9b3ff70899fbfc57a778c2a4079
ba9611664af2354a76aa82664c87086ef93df75c ba9611664af2354a76aa82664c87086ef93df75c
badb86fa45631dc91a6184d9c82b6b42a4d83a7a badb86fa45631dc91a6184d9c82b6b42a4d83a7a
baf09d5f4f36ef6777e19a0b5a4b5f6e76d56f2a baf09d5f4f36ef6777e19a0b5a4b5f6e76d56f2a
baf7d1f39fe01c58eeb551ecc59d376572fce763 baf7d1f39fe01c58eeb551ecc59d376572fce763
bb3f25f3c80fed3133ef6c1f0cdbcbe6213168c8 bb3f25f3c80fed3133ef6c1f0cdbcbe6213168c8
bb81c98181a3bcb0c65b7189e582acc76ea191af bb81c98181a3bcb0c65b7189e582acc76ea191af
bc1c43a220732de74db20d7444ee9e95345aa556 bc1c43a220732de74db20d7444ee9e95345aa556
bc873c113c9957b25b558703307430da68d8a652 bc873c113c9957b25b558703307430da68d8a652
bc9245522687279c99cf7f2adf0660c0dd9d0e8e bc9245522687279c99cf7f2adf0660c0dd9d0e8e
bcdb57100a14939a871bd726ed0a4ba1e08e57c8 bcdb57100a14939a871bd726ed0a4ba1e08e57c8
be5685bd481d37aedcfaf54adce1c21eacc430ea be5685bd481d37aedcfaf54adce1c21eacc430ea
bea84fb0972781a6d5bd0318dfa705c11b83833a bea84fb0972781a6d5bd0318dfa705c11b83833a
bf30e0a4b02804753e56666d62d0a3fbec2eef75 bf30e0a4b02804753e56666d62d0a3fbec2eef75
bf7351df79e0034f63072f7872e1530844efefc2 bf7351df79e0034f63072f7872e1530844efefc2
c06e2678460969a2cc579efffbc238234e31204a c06e2678460969a2cc579efffbc238234e31204a
c0b819f2bdca2b8ef108cab34bb08f4f60aa92b8 c0b819f2bdca2b8ef108cab34bb08f4f60aa92b8
c0e65a975908fac9cb1780705c7ce5174173ccbe c0e65a975908fac9cb1780705c7ce5174173ccbe
c0f62e2bf9002f5e9825e71c4e30d9b7b2922d60 c0f62e2bf9002f5e9825e71c4e30d9b7b2922d60
c20646a2445664f4ccd2630660e6eeac652bb3e5 c20646a2445664f4ccd2630660e6eeac652bb3e5
c2339dce575524dfefb407ba1dadcaed84906fe8 c2339dce575524dfefb407ba1dadcaed84906fe8
c292758598fbd4c5e7a40f4063b477db6400a492 c292758598fbd4c5e7a40f4063b477db6400a492
c2e180b3eaf903edbc4c99e31d21a4ec1891244b c2e180b3eaf903edbc4c99e31d21a4ec1891244b
c30c83d897254b8d96164a241c9646d26fd69f5d c30c83d897254b8d96164a241c9646d26fd69f5d
c331410c92a4085356d0524ee93cf90eba77a9c8 c331410c92a4085356d0524ee93cf90eba77a9c8
c3b9af22c7d0a8655f807551dea47e40eadd2e8b c3b9af22c7d0a8655f807551dea47e40eadd2e8b
c4311fb3bd834be4c87beaa46ee13c268b3b2e5e c4311fb3bd834be4c87beaa46ee13c268b3b2e5e
c4b26f4d5c48016c223666e597d4319d1c44570f c4b26f4d5c48016c223666e597d4319d1c44570f
c4f3e2a0acf21b32097cf5b3a9194361831d0a4b c4f3e2a0acf21b32097cf5b3a9194361831d0a4b
c4f4059f38804f993eb9ea543470f6356f2b427d c4f4059f38804f993eb9ea543470f6356f2b427d
c5335d957fcb67b6ea47371759e7792231b704e3 c5335d957fcb67b6ea47371759e7792231b704e3
c57ff718cc47d0b5559257be5e2578ed6790ae45 c57ff718cc47d0b5559257be5e2578ed6790ae45
c5fbda0035991a49cb9821d7a3a8f9e473e32486 c5fbda0035991a49cb9821d7a3a8f9e473e32486
c64dfb3e8766290e2f069aea0c5eb53328479984 c64dfb3e8766290e2f069aea0c5eb53328479984
c7ecf31d93c7fb60c953ac656649052370e36bdb c7ecf31d93c7fb60c953ac656649052370e36bdb
c807955745959846d3eb11008b6804588df2a68a c807955745959846d3eb11008b6804588df2a68a
c8348e839c7fc6871b2d371dc8b328bb7347fccc c8348e839c7fc6871b2d371dc8b328bb7347fccc
c870983955e76b4d2fde3f073365dc2b97f2e6f2 c870983955e76b4d2fde3f073365dc2b97f2e6f2
c8815556b1f9d34ed1135bd55c7b28b8455dc748 c8815556b1f9d34ed1135bd55c7b28b8455dc748
c8b2bd8d860909d063f301f5c0b8f72302842c1c c8b2bd8d860909d063f301f5c0b8f72302842c1c
c8df12610eef8c99be38e931ecc05286fb7942a7 c8df12610eef8c99be38e931ecc05286fb7942a7
c914b25ca71b0dc67211be37b42c6a5a0c046d3e c914b25ca71b0dc67211be37b42c6a5a0c046d3e
c91d1e5690bf26114521ba3252e33f87c731dac0 c91d1e5690bf26114521ba3252e33f87c731dac0
c92b2089b16d0f2db6fc086f781aeacb0610edde c92b2089b16d0f2db6fc086f781aeacb0610edde
c980f6929c9153ca82a8f5a0c023b96fdfa45c75 c980f6929c9153ca82a8f5a0c023b96fdfa45c75
c9a4c8a05703c4812218c75808cdc50cf6603abf c9a4c8a05703c4812218c75808cdc50cf6603abf
c9ec69b293b29afb499577d125219a20ab11aa90 c9ec69b293b29afb499577d125219a20ab11aa90
c9f220227f4d25844d02397a64bfc7d2fedd60c6 c9f220227f4d25844d02397a64bfc7d2fedd60c6
ca5f09f481057e49c9e4608650f124a37d9040f8 ca5f09f481057e49c9e4608650f124a37d9040f8
cb2553790300ad9682bf07b7461c31cdace6f4ca cb2553790300ad9682bf07b7461c31cdace6f4ca
cb6c2a94cf3481a1fbbe69e9f50281893602e6f4 cb6c2a94cf3481a1fbbe69e9f50281893602e6f4
cb7451fa6864faef45b0205bde033fe4e138c606 cb7451fa6864faef45b0205bde033fe4e138c606
cbadd1d62dbe879ff4ace7b0eae37e9ade3d3fdc cbadd1d62dbe879ff4ace7b0eae37e9ade3d3fdc
cc13450c4514f180cdb8f23fe519450242d3c1dd cc13450c4514f180cdb8f23fe519450242d3c1dd
cc1f4228982ee7e6fc65c170f4eb7b36f9415a56 cc1f4228982ee7e6fc65c170f4eb7b36f9415a56
cc2d8f23de096fef35da14510c261bd43bab1a67 cc2d8f23de096fef35da14510c261bd43bab1a67
cc426734928192eb677e1a3129d8eb1dc696104b cc426734928192eb677e1a3129d8eb1dc696104b
cc5dc49fc9ad6779bbeb249d5fb39f03c2e7ce57 cc5dc49fc9ad6779bbeb249d5fb39f03c2e7ce57
cce63ab4d84d19c617f07c2d7287d19321bc582e cce63ab4d84d19c617f07c2d7287d19321bc582e
ccfff826a7cb594aaccadfdca95d54f6433c34a8 ccfff826a7cb594aaccadfdca95d54f6433c34a8
cd0266bc518cda2cb670a68106e92c0078a2f6b6 cd0266bc518cda2cb670a68106e92c0078a2f6b6
cd41870a108fb502aa155c96873aa6f045181bcf cd41870a108fb502aa155c96873aa6f045181bcf
cde852734ea5f0167f7cd276736a67178d8d221b cde852734ea5f0167f7cd276736a67178d8d221b
ce3ee03102fcdc725ee28592d59127ef1bad23c8 ce3ee03102fcdc725ee28592d59127ef1bad23c8
ce452fa2b157337b370e5846b6a7f91f2a2d5b0a ce452fa2b157337b370e5846b6a7f91f2a2d5b0a
ce54a3a7c5b4e9c7a2cb11382a79131113e296de ce54a3a7c5b4e9c7a2cb11382a79131113e296de
ce5d4f6be4f5b081bfac84d5016d3814569525d9 ce5d4f6be4f5b081bfac84d5016d3814569525d9
ce8d8d21aa4e6ae578da635a469024aa539bb202 ce8d8d21aa4e6ae578da635a469024aa539bb202
ce9ff51bf2f31d6d4efe3c3cfaf5d884a52ea9ce ce9ff51bf2f31d6d4efe3c3cfaf5d884a52ea9ce
cf126d9c513db682cae9317328e26f70e1cf04a2 cf126d9c513db682cae9317328e26f70e1cf04a2
cf185be5aafe264d5d5cc6d5f4db4fb0d391a260 cf185be5aafe264d5d5cc6d5f4db4fb0d391a260
cf293dc1ff57505bc76d7f665cce3650c484055b cf293dc1ff57505bc76d7f665cce3650c484055b
cf3eab06ae0ec8c29089b3ac0d0db4880904116f cf3eab06ae0ec8c29089b3ac0d0db4880904116f
cf8a48ff9cf5f379058600616a64f07f0c183d41 cf8a48ff9cf5f379058600616a64f07f0c183d41
cfa861470865f9dc31e4b9ad60f7ac3f186cab9d cfa861470865f9dc31e4b9ad60f7ac3f186cab9d
cfcac36fe8c15c343472a6043ba30e95ae1d4ceb cfcac36fe8c15c343472a6043ba30e95ae1d4ceb
cfdac1ea88cd2dcc122593ac1f7dcafe44a96f8e cfdac1ea88cd2dcc122593ac1f7dcafe44a96f8e
d0182fd23908a35da246ce4aca65987e91e0426a d0182fd23908a35da246ce4aca65987e91e0426a
d04481c8cef0550b014450caa5795e007dbfa9fd d04481c8cef0550b014450caa5795e007dbfa9fd
d09827775939440037811e43397735a6fd3f0b42 d09827775939440037811e43397735a6fd3f0b42
d0ea5b4780f957e30f53828eab7aa9fdee24e2da d0ea5b4780f957e30f53828eab7aa9fdee24e2da
d17abfa053e091b8a331a8b8c732a5455fe202b2 d17abfa053e091b8a331a8b8c732a5455fe202b2
d1a282bcb3d796f3accd0b00128b01d4874b4209 d1a282bcb3d796f3accd0b00128b01d4874b4209
d1dde80d4d7b3d75a0579075375c376fe8c6381d d1dde80d4d7b3d75a0579075375c376fe8c6381d
d1e16fc57c6d2841f5a697dba4b449969f34e551 d1e16fc57c6d2841f5a697dba4b449969f34e551
d307b6423a2eb9f5d5abcae72e1793b0a9bd5821 d307b6423a2eb9f5d5abcae72e1793b0a9bd5821
d3c01040a9ee0e2ffc5c63070a7c5e9914ba0731 d3c01040a9ee0e2ffc5c63070a7c5e9914ba0731
d411bf0f29da2b7670763e77aa17de74ed768825 d411bf0f29da2b7670763e77aa17de74ed768825
d4a34901aae5b35dd55c2634d48cc46b05d5628d d4a34901aae5b35dd55c2634d48cc46b05d5628d
d5a7af5f83a2e816aa6952a7bbb9a40c5d80d96b d5a7af5f83a2e816aa6952a7bbb9a40c5d80d96b
d5c193676ed01b5f0dd6ea8073ae18717790375a d5c193676ed01b5f0dd6ea8073ae18717790375a
d5cba926c2e02f7220e7bef0b6faaebb296ed449 d5cba926c2e02f7220e7bef0b6faaebb296ed449
d5eca180ddf70f72c4cf8092fa5d2b1e487432fa d5eca180ddf70f72c4cf8092fa5d2b1e487432fa
d6222874b3702833905ae84a2bc6dedd75583efc d6222874b3702833905ae84a2bc6dedd75583efc
d6a93266f748d606b884f9434ff662fe80b9dc21 d6a93266f748d606b884f9434ff662fe80b9dc21
d6ac7c67613c2c8f5347830385181600b92cf276 d6ac7c67613c2c8f5347830385181600b92cf276
d7f81d167bb33df7e41a7938a05aba4431262e62 d7f81d167bb33df7e41a7938a05aba4431262e62
d8082f3972e5132c992373570cf660e9bb020932 d8082f3972e5132c992373570cf660e9bb020932
d84a6d243a70af81f449c73a82ec00405cefe792 d84a6d243a70af81f449c73a82ec00405cefe792
d919b84d49be3cf3a7c7435ffd9822fc17632363 d919b84d49be3cf3a7c7435ffd9822fc17632363
d92bf58e590ae221c1591f2e0b30ea4db095f963 d92bf58e590ae221c1591f2e0b30ea4db095f963
d9c3dfb0b943851a88a79854a064387960db1d31 d9c3dfb0b943851a88a79854a064387960db1d31
da3a7de8c63438932dfa28b38f111c42998fa07e da3a7de8c63438932dfa28b38f111c42998fa07e
da4804c9e38e93a6d1a7d8632cde0a4aa5423be8 da4804c9e38e93a6d1a7d8632cde0a4aa5423be8
dac1dc0130d829676f7d5664054e712492206095 dac1dc0130d829676f7d5664054e712492206095
db2512178fb21fc5316eb6d07b24241891c2947c db2512178fb21fc5316eb6d07b24241891c2947c
db73c588882ee6a57d187facd5e0498996625d79 db73c588882ee6a57d187facd5e0498996625d79
db7ba5320af1c0e9c101e57fc42751b49a73ebde db7ba5320af1c0e9c101e57fc42751b49a73ebde
dba3d3e27ffe94b0a45f0aac2451fa45f528f2e6 dba3d3e27ffe94b0a45f0aac2451fa45f528f2e6
dc3d49d44825b9293653660675d46cc8614f6335 dc3d49d44825b9293653660675d46cc8614f6335
dc52e46a7fa77f898b3f09543f8990a2644f86a5 dc52e46a7fa77f898b3f09543f8990a2644f86a5
dc88509ae3dff0a3f46ee0137c037812cbcfd802 dc88509ae3dff0a3f46ee0137c037812cbcfd802
dcaf7bbccfd96cec873dd4b7a9fe7bc7e2681507 dcaf7bbccfd96cec873dd4b7a9fe7bc7e2681507
dd1855da544458c6a3170b56c2a4c8b9a4226a34 dd1855da544458c6a3170b56c2a4c8b9a4226a34
dd759a2123d6df335de162863aa76f13539390e8 dd759a2123d6df335de162863aa76f13539390e8
ddf042a0a1f98c21d6b5891a9741933771dad087 ddf042a0a1f98c21d6b5891a9741933771dad087
dec4ee05eb0c32d672d993051345f56be13bc797 dec4ee05eb0c32d672d993051345f56be13bc797
df4b05a5bf8edf4d52f743a411ef69a54e7c535c df4b05a5bf8edf4d52f743a411ef69a54e7c535c
df4c723011e3de0bc701887360ba472c721dd36b df4c723011e3de0bc701887360ba472c721dd36b
df5d598febaaab159d01e27b0e023b65aedc4e6f df5d598febaaab159d01e27b0e023b65aedc4e6f
df793f187bc614d408e0bbc481d8b1f00124551d df793f187bc614d408e0bbc481d8b1f00124551d
df8df2184d7b9bca1c5deb47a63929b85308622a df8df2184d7b9bca1c5deb47a63929b85308622a
dfa56565850e9e0a06e610fb9862285403bce3a8 dfa56565850e9e0a06e610fb9862285403bce3a8
dfbbfaa29ab4d6eeb09e7c5cb7299ea2d24da41f dfbbfaa29ab4d6eeb09e7c5cb7299ea2d24da41f
e04aa535f8c4ad1a8f9814c89ae02c71b65404fd e04aa535f8c4ad1a8f9814c89ae02c71b65404fd
e0553f42a90f3423ad68c31aff8885bf8b21651a e0553f42a90f3423ad68c31aff8885bf8b21651a
e10e3823d0ff94b2568645645fb5822a7209f447 e10e3823d0ff94b2568645645fb5822a7209f447
e130550e77e0989be531d6058659a8ad619e385b e130550e77e0989be531d6058659a8ad619e385b
e136ccf74e6b5eaa8ec2680111e3f912db39d2a7 e136ccf74e6b5eaa8ec2680111e3f912db39d2a7
e170548c49283eced137b46742b047a112ec5863 e170548c49283eced137b46742b047a112ec5863
e19ebe51701e116718c341ee668229a72d1a6b52 e19ebe51701e116718c341ee668229a72d1a6b52
e214ca65c50c4b1831c4b9cd3f2847b3cdf8d2d8 e214ca65c50c4b1831c4b9cd3f2847b3cdf8d2d8
e2920d809c4aff9d0e5015d2dc6dac530dac34de e2920d809c4aff9d0e5015d2dc6dac530dac34de
e2f63f5110addc7df83ba0f73826a1c742f4a57f e2f63f5110addc7df83ba0f73826a1c742f4a57f
e48c97da8e3ced552548d30d6cd5e0afd93a1e36 e48c97da8e3ced552548d30d6cd5e0afd93a1e36
e4b43ecc716edc37b221772d3576d48135aa0d14 e4b43ecc716edc37b221772d3576d48135aa0d14
e4ccb7092ec23b22b633f194c7354138018fc186 e4ccb7092ec23b22b633f194c7354138018fc186
e4f127dac1e1b4f324c8f9034c78cc6996205825 e4f127dac1e1b4f324c8f9034c78cc6996205825
e5895eec1f23d746bc336fab708af59fc3c7b528 e5895eec1f23d746bc336fab708af59fc3c7b528
e58a6a65e81e93e2f04eeef0f25f80b87bea7795 e58a6a65e81e93e2f04eeef0f25f80b87bea7795
e611c15f3910ded179b0f877892db02a5d6fdbf2 e611c15f3910ded179b0f877892db02a5d6fdbf2
e68b85ecc75859719cf6c86fb747c38a1caf7a41 e68b85ecc75859719cf6c86fb747c38a1caf7a41
e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
e6b030d2eb2ef972f73ea89179e8ec9ed7a444f7 e6b030d2eb2ef972f73ea89179e8ec9ed7a444f7
e751ee09d3b5a6bc7b92be0772fa05bd93447a7c e751ee09d3b5a6bc7b92be0772fa05bd93447a7c
e7bd5baab252521b309595a0a4d426c9b787cd06 e7bd5baab252521b309595a0a4d426c9b787cd06
e7f1d50560c771ad504bb223fa8ea205a27faa4d e7f1d50560c771ad504bb223fa8ea205a27faa4d
e81de14cc9632c569dc5e6704a206278a8b348c5 e81de14cc9632c569dc5e6704a206278a8b348c5
e8826e951218d49b26b3bf5f6df8d0d8cd5bf0f2 e8826e951218d49b26b3bf5f6df8d0d8cd5bf0f2
eb0c15c4c2b2f516ed7b8119cbee3c1b4fc8441b eb0c15c4c2b2f516ed7b8119cbee3c1b4fc8441b
eb5dad0da0d9861d6c2d28eed1fe94986ba8b82d eb5dad0da0d9861d6c2d28eed1fe94986ba8b82d
eb60777302d8a19e4f3efa8a3d526964c5b60080 eb60777302d8a19e4f3efa8a3d526964c5b60080
ec341649194e707f775b41b80f5ebd37c2c7d07a ec341649194e707f775b41b80f5ebd37c2c7d07a
ec35b0e07e20052df70c9949a2f9735bd4ee8ee4 ec35b0e07e20052df70c9949a2f9735bd4ee8ee4
ed055aa8f0ab7e408b05350ee130ebc555e4d723 ed055aa8f0ab7e408b05350ee130ebc555e4d723
ed0e6c29fb18e658b23fcc07094d283c7564aa33 ed0e6c29fb18e658b23fcc07094d283c7564aa33
ed23c15c9bc7d955453d4f5d7f856580c1544a10 ed23c15c9bc7d955453d4f5d7f856580c1544a10
ed6734541baf6abe9b3c3ea56dd1572df7885a18 ed6734541baf6abe9b3c3ea56dd1572df7885a18
ed707d920c7c473559f7e717c131a240e79c0947 ed707d920c7c473559f7e717c131a240e79c0947
ed8b4ff3e5874eac2f8ffe3486abe9d9668b27ce ed8b4ff3e5874eac2f8ffe3486abe9d9668b27ce
ee5e0f548ff063cbcc0865cd76f2132bd8b63933 ee5e0f548ff063cbcc0865cd76f2132bd8b63933
eebaca7d3ab44ed881867ff7afa6d915cb1cf6f9 eebaca7d3ab44ed881867ff7afa6d915cb1cf6f9
ef4ec5da61f1175b4a3fa46bfab6055d612799b3 ef4ec5da61f1175b4a3fa46bfab6055d612799b3
ef736b130a14948d7c3a6e4294a9c6a842c30fac ef736b130a14948d7c3a6e4294a9c6a842c30fac
efc444840cadf4b259a87a7e6469d4161e40afa6 efc444840cadf4b259a87a7e6469d4161e40afa6
efc7c482d687efcd35d280c330fca773f9d1e381 efc7c482d687efcd35d280c330fca773f9d1e381
efdabb33ed93087549ebe659c36c10688a920a4c efdabb33ed93087549ebe659c36c10688a920a4c
efe5a8bbde753164ea206d0b4d82c9bc4a9f1763 efe5a8bbde753164ea206d0b4d82c9bc4a9f1763
f028665d5029ccec29d596cfb6091ff70b508632 f028665d5029ccec29d596cfb6091ff70b508632
f0583fbc3694839bab5479f0e58a9d7f1294225a f0583fbc3694839bab5479f0e58a9d7f1294225a
f1121bbba0f29ffbcbf4e0cd000263b5b4b74c91 f1121bbba0f29ffbcbf4e0cd000263b5b4b74c91
f162b3211620ca2de7da0d22e6b4aae59faab536 f162b3211620ca2de7da0d22e6b4aae59faab536
f168dd3ec776e519cb16b18dd8031ad0501624d3 f168dd3ec776e519cb16b18dd8031ad0501624d3
f1bb52d916685efb9364ff2946968973a91d3e20 f1bb52d916685efb9364ff2946968973a91d3e20
f2a6e099c665ab3c14680746c636554c2c73b20f f2a6e099c665ab3c14680746c636554c2c73b20f
f2dbcb5c26056f085ea8326ae53ab15c3a64e5e7 f2dbcb5c26056f085ea8326ae53ab15c3a64e5e7
f31d7a60c5fe81cb23a912372cd0681e52af49c0 f31d7a60c5fe81cb23a912372cd0681e52af49c0
f327eba6511a5a7c1db0d5d9ddc162296ebf5d73 f327eba6511a5a7c1db0d5d9ddc162296ebf5d73
f35d6fa482f42bf5fbb7638806093d98104fd495 f35d6fa482f42bf5fbb7638806093d98104fd495
f36af34c8febf7fcfdf7eb1546e332b5dc3a7551 f36af34c8febf7fcfdf7eb1546e332b5dc3a7551
f3bd35a7ac025f9afbe9d7fd159b95c381cec454 f3bd35a7ac025f9afbe9d7fd159b95c381cec454
f4818a81342cbe8ed15b27e766bfc2eedf3b278c f4818a81342cbe8ed15b27e766bfc2eedf3b278c
f49e6fd94053d3ab651523b8d46a85ba196ed033 f49e6fd94053d3ab651523b8d46a85ba196ed033
f4d2f80c5f2373489b447f2c105eaeaef0b10bfd f4d2f80c5f2373489b447f2c105eaeaef0b10bfd
f50f3def44a3796cf5bcca8424f6a1991aeaa7b9 f50f3def44a3796cf5bcca8424f6a1991aeaa7b9
f57b34dd68a19b2de0efffab9d7785ef5da27ed9 f57b34dd68a19b2de0efffab9d7785ef5da27ed9
f58257ae57edbaad80d34c8c3afd47a8891af241 f58257ae57edbaad80d34c8c3afd47a8891af241
f5cb073308b8b2776a84c36b021599604f580051 f5cb073308b8b2776a84c36b021599604f580051
f5e93c00eb8521f914578a3c41a45895ee43a6a3 f5e93c00eb8521f914578a3c41a45895ee43a6a3
f5f6bc4cb9699dcfdbe4141813f398e15226ac0b f5f6bc4cb9699dcfdbe4141813f398e15226ac0b
f602015eb705804e855165c72283789940296365 f602015eb705804e855165c72283789940296365
f60edabb09aba28dbfc7decab1211c57f1a78b12 f60edabb09aba28dbfc7decab1211c57f1a78b12
f638e4d03d02de80cd876e12ea5d1b9ba979099b f638e4d03d02de80cd876e12ea5d1b9ba979099b
f64a11515644f4585cad5cca73e5d631086e95b2 f64a11515644f4585cad5cca73e5d631086e95b2
f64a37c208980bc4dfc0abb6d47b7c89f6bf7a64 f64a37c208980bc4dfc0abb6d47b7c89f6bf7a64
f657eb12f876a8f8faea61589fcc0ea9ddc00ddf f657eb12f876a8f8faea61589fcc0ea9ddc00ddf
f658c043e0d79a22e977b00c1aefaec18bc3405e f658c043e0d79a22e977b00c1aefaec18bc3405e
f660b84409bddfb16e7f07e2086f65dbde13fd17 f660b84409bddfb16e7f07e2086f65dbde13fd17
f6c4f8bbba35a40bd01077e128c9ab3b21f59892 f6c4f8bbba35a40bd01077e128c9ab3b21f59892
f71eeb827ed975ff8023d312304b1e3716cadf7d f71eeb827ed975ff8023d312304b1e3716cadf7d
f7676039326fbcdbf8eecf82d521efbd549397f4 f7676039326fbcdbf8eecf82d521efbd549397f4
f7d0092dd4f58db1a63314c71a8938c459c4e78c f7d0092dd4f58db1a63314c71a8938c459c4e78c
f834047fd1f034a0edbeccdb03e30e31ce81a5f9 f834047fd1f034a0edbeccdb03e30e31ce81a5f9
f8809ba474b7e139c7155f0a29555bbaf46e4899 f8809ba474b7e139c7155f0a29555bbaf46e4899
f8a5f287f881a95df8d7d4a8f8a1ae75fb98106c f8a5f287f881a95df8d7d4a8f8a1ae75fb98106c
f8a6e93176382a02079cda20363ac17a27c61dbd f8a6e93176382a02079cda20363ac17a27c61dbd
f90e068fa2be8cedec6bf925276cd5b10d9f34a8 f90e068fa2be8cedec6bf925276cd5b10d9f34a8
f92c66ad5b5a0c0ac3823fb76518ba5a308cf316 f92c66ad5b5a0c0ac3823fb76518ba5a308cf316
f9a92af90a513cb05defb894c8e7548311c9f6d2 f9a92af90a513cb05defb894c8e7548311c9f6d2
f9eb5edc32c4bc70b85e680262406d17ce262673 f9eb5edc32c4bc70b85e680262406d17ce262673
f9fa3fc9362d6f3e124a0148f685475b7cc145bd f9fa3fc9362d6f3e124a0148f685475b7cc145bd
fa107d36e41c3729b84fd2279dbd3a450f26dabc fa107d36e41c3729b84fd2279dbd3a450f26dabc
fa55c8335bb30a81de4ef76b036d8e8dccc2bdd3 fa55c8335bb30a81de4ef76b036d8e8dccc2bdd3
fb46841920e7dc588c09398eaa92ceba70dbc5b3 fb46841920e7dc588c09398eaa92ceba70dbc5b3
fb4a23724bd487b2eb467f6f1a89f7c16c93e796 fb4a23724bd487b2eb467f6f1a89f7c16c93e796
fb88210fcda58492ee79363de19e94ffaf6acac9 fb88210fcda58492ee79363de19e94ffaf6acac9
fbfea25acfeb75bfcf92c632305e5b9294d2e160 fbfea25acfeb75bfcf92c632305e5b9294d2e160
fc01efc2d49bbcc1f573ee336c3dd5ff5c97ed3f fc01efc2d49bbcc1f573ee336c3dd5ff5c97ed3f
fd8e7a3209f4fcb8ebf406b3a5d0612b16f9665d fd8e7a3209f4fcb8ebf406b3a5d0612b16f9665d
fde30b7b4ecaf34cea8a571faab4e69a6dd8d298 fde30b7b4ecaf34cea8a571faab4e69a6dd8d298
fdf6a36f6991dfa1c107ec3afbba7c7c62b6546e fdf6a36f6991dfa1c107ec3afbba7c7c62b6546e
fe1d3de5b7611ac159b605eaddc0947318aa5523 fe1d3de5b7611ac159b605eaddc0947318aa5523
fe4675a7bb0b12c7b65ba194d38ff04880e05729 fe4675a7bb0b12c7b65ba194d38ff04880e05729
feb9b118e6b5a0f1143b4dc22a57bd7bf6420f90 feb9b118e6b5a0f1143b4dc22a57bd7bf6420f90
feee7d5249bba320bef72e4b86f0c2c39bf45edc feee7d5249bba320bef72e4b86f0c2c39bf45edc
fef09cff1a74c8228efe628a362b2fc1345b9dce fef09cff1a74c8228efe628a362b2fc1345b9dce
ff386400ee905be6986a07ac5cbc4f3cd1bc0c88 ff386400ee905be6986a07ac5cbc4f3cd1bc0c88
ff92bbd3b4ca3a5ad0cea82a8789026848946246 ff92bbd3b4ca3a5ad0cea82a8789026848946246
070701015D695500008124000003E80000006400000001642C0FB5000C793E000000000000004A00000000000000000000004E00000000nvme-cli/.git/objects/pack/pack-2b87a653261b636d02b83ab03d1df82e2612beb2.pack PACK      °3xœ•R]KÃ0}ï¯¸tH7-¾†:ôAPñÝÉÈ’»-43I‡2ößMºº®ÛD|h“{sî9çÂ±øQ‹QÇ„à†yc³Ä^èøéQ;a´Ë’D^K„—Â ­î«jO}@…6 “Ô9xºŠÈWk:g,”p×1òp &äQK¡ñ™2kø† v8ãN&m©©B„­¬	.Ú&Ç¬÷sÃ5µÁÍ<µK'õÞºQÙ rÞÏçÔáœ²
5¿…lå•Ìp€«aIaeqq“¶{Ò]AéäPÛFæíú}7*:™êN¥ûSTQ½¦K<ÖM/³§ÿâí¹1U·dÂcØ' íWpšÂôè9~½ð»-Ë¢ÿp>ÖØ©k59²\]ûT--‹S7Ý~š'ýÛþŒÿø%¿¤)·¸.7.šhÍTÌV]Bz‘%ä,©c a¦Ò1çQéÔ"µ/xœe’[kÂ0ÇŸ›OqŒÅªPËö¨¸§!cÃGÙÈÚÔ„µIiŽÌ?üNÒÅËF¡=—çöïxT|jS8ÅØnÍÓÎXm{P ìY2_à	a¾PØ6ÞWöm1D£s(Ket)šßü­™7Ù¼Z”®ˆ…KçXeY¢kâÂòxª8ÕSÒ°$YB¥+0¡X*–È&ÂÝDÃdBhú¼Ýl ?B¾ÍÞ_Ç®(+È.à}íŒ‰´à9_ÛÑ;¡É-<MéEÓ@ª`(Aù¾½éM~ûUéòÒ)F´2&g”-»ÐõÊ×šv6’9ìu÷ÑHQisX§ÓÐÖSÎàhì\BæÎzÙ,ƒQÂx<ì¯í/3·BÝ¢!øW²AO}”ïÔõ„ ­²¤ïÝô<ÛOóýŒÆLJáä°±6WÉó¡Å™‚•<…Ê3(­AmŽV+:¾¥ÿ¢²AÖÂîTð³°‹Þ	wmä®†ƒÆË}ŠkWÎ~ ¡wÔÏ°Kxœ­”Mo›@†ÏæWLiTlÕ,±z²c[UÏ=µ=äºÀ`£ìÝüñï;'mœ(RHhvfÞwžA,?¤)Xí½Á4×„ê@fAwQƒE­T>XÍ\»M÷zÎ&èJXB¼ME]—¾ø,Oîý¤é:ZvÝˆi‹Èp°ÆÑB‚«xËÜ,²l¿ß«ýåÃ&›Íçóìþç÷ìWÐŽ:Õ8v¨önÏÔm¼Ž¢eç˜·HÚPmÐä-‚o¹i¹·$jì/>Néà´ÅU,C¨>UýnkdsŒÐ`Á"g/T¬Ðq8*‹¬Õ¯öïÄ8?RB#‚âHÄ¡C8½ëq»E5ÀS¹.ÈhÚ‚våó£Òó0y_g[bÈeü¶iL-ëÈRäQ ¡	•àÙ[±(l/Lmc4£xâb»Š/ŒG§£6-¦¾zOf*4e'£“0Ü¼lyšTßÆÉô’GmNäûIuÅÆ_ërš¤ÉdšLž¦]o÷#™œv’=µ|m‚´©‰¯ró7Ñ®ýhèwà55Ÿ>ÎnïÎ‚Nµ0>¦gMz^õOÍ{ÿî¯b×å®¨‡IL$Ó7é¿àÝˆóð&®!pù¬£?¯‡û½xœ…PAnÃ <Ç¯Ør­I{¨Å~Aoí¡‡^6x¬ kÉïrÒª§"!ÁhfvvömýŒGj=‡V^¢Ý5POœIOh!RJ“?F9ÜÙù0v€QOÓÀú±Üóiq0è[¸è¯ÉÈ}‚Äp"š3^ƒ›®-ãa#_žäÚ¶oö5NL×âbˆ\œõqWÀN˜”æR9g™Ÿ%‡£Úl·[õñöªÞúXÒ:Ñ¬Vg
qbß‰\‹¾Y,'7sH`¸7pÀHu¡*­v“ET_°4g´_´´QÑÀãš}
lA¨Sù.Ž:áÏŽämWy@}Š£ýç^ýPÿ“œÄª—Íòûmªo¾÷¢8¸°xœ¥VÛnÜ6}^~Å }pÜXI6.PÀµ¸±Ñˆ/ðEÃ”4Ú%"‘*Iíz=äú‡ý’ÎPw{[£ÍÂÆŠÔçðÌ™™Õë£TÙÈb‚j¯æûâäùGˆ«ÓËsÑGè'.Áu
hÏ[Ý«Ä…ÔémøÊj²,s•È8gWåÞ	±øýêúfq±Ç‡÷k´ÄÇ‚Q¬=8Nq­ü ÷Q¤e®”	F*=9ÖN¥ †HCóü f³°a*½ŒrÔ'ÇÝS0ÌaXŒ)œß–HÆü,Ï ]LÍ\‰	™ñW0[@»˜š™-™ñW0»†v1˜Yüƒþ©l‚|•ÆÐBxÌVÑI†2’É§ÑrÅJK»åñƒgç‹·7w×W=¹Ìï¢Šå)®~½D8ëwÛ&N¦…Ò]ú€ÿ»úŽ²(Ú,¾»•rPÈ-ÄlÈ—Áxe4˜l¤æñ ÉZ:Ìs~ÐU£e'b¥Bç‘£7Ü€Ê€V™JÐˆ©åßqG±{‘”Ò’F<ÀiJ·!z8xµq "Y‘KB¢9^áã¼¥Å[ã»ý0–´ÞkâÜ$_`·µžï¤k®Jtî j¨¤[õ¤ì¹Tçm•F·¸ÞçKˆÞ™òc42M©^d¹u¤¤jTzIoC4SŠ²\.ÝO¼#† Lvt\¼Ö¥5K(*­Ò¾‰$¡]fl!½ hÊ3"	_´ÙèöÝË•¹Ü6®+|œ…›ËÄU–Ñ-þEÃ: 5•çó)º	iéÐÐÛ “Érî›…èËýèHìl	´?»Eo®ef(Ãå³Ô’@"ÛVÅô×FœbVç;7bØ ÁƒÊñqd»–yÅÈ†. <í#ŒãlR3òé[Fï3n*SŸNøì×÷ÞoÜe¦~}°cÛS‚Ûó®3uÜQ‰©´âµ¸õŽAQ/0'ïú]bU`QÔïê•µ¨=ˆzN¯2I=ƒžß×¹ÆTÔ‡õ¢*Kc9T"K«\y…NÔ?üõõÏë[thƒå®Ù4iäÏ>ßŒ{o m,ýªW@+É¾´š}Jm›ó7pI
³Fè/8
>&ØÔíþù”$(õáŽÒN€ã†þ¾a3¸®„¾Jº	ÚBÊƒê®m¯Å¨-‹™
µø)D˜Î‹i”“†Ô~S¤óßN/o>Ÿ¦÷÷p‘R®U¶}Òõ©vI>"Eã‘ô<õ£6
C5A·`QÃžÞqzêkAh~AÏˆ‘úÈ€§o·Žàƒ™ÿ;Øæ4§y!=ÂaÊ¹ódþŸÐèù?â9„i…‡—t¹_Î“èÝ7ämíýËH.Âp¡ÓkÙK')JV(—Å]'×ÍŠºxåxò…j,HÝ¤Ošêí×i=KuøK…KÓ¶RÅß"N“ƒá,‡`xœµRAKAF3i‚À´:ïdJ®u“2;è­ò&“ûª…uWfF#ˆºF7ÙŸÐúƒþKíÌª«ÒµÓ›÷æ½ïûÞ|óšùÎ¬»ýRËæT k66{é¬:…š=Á-¶¥ÝGÐ=×õ„ŽÃ¯Ó ØüäX‡
<E˜$-b@“RÉøJªå´¯êì¿Ç:‰«`ÀßŠ‹:y@Ç& œ˜£e[
@—Ý8X´l¡"ÉdO€wòÁë"gÒöÜââ?ãÑÊYü%äá•r™,*q….e®e4B¢¥4ÊÂÎB„2ó¥ìz¦jófauŸ4[þ0™_$WãÛçîd#Ž¬#",¿H²UmGÑÂ~Q™eº% Ú1ùØE0'‰‚um©S­JþçZj§:{¸¢1Mîd"°MÙé8^›I´f¤…×ãmÍ©?’ÿaäb‡j25{¡V…£¨-oä‰þ¨]lõ7òü*=ën°"xœuQKKÄ0¾Ï¯ð°>¨àUðPÜ…í#‹"{È¶Ó5Ø$¤ÅŸoRtÛºkŽ_æ›ï1zP”4ÒÕFkª}"ºîòî
Î>€"Í$á>%b‚ë#€­5
#úPƒOboeí"â­é:²î€¿eÅ3>îw¿á‡v°Š"¸Y¬|Îª—¬,ŽœH›Ä
Ý %er£	ú’ÎK}Àb›Øþç†ýGP5u¯H{á¥ÑØ;¢R‡ª]©¨GÚÞ†){Q¬éu6²×4¯6l–ïzÞÓÂÝxfènæ¸À3,G€3†é†—“à©ípÊíï)+a=šv
Ø»Pë¥'øÝ«;²,xœmRMK1=Û_‘›
ŽWQAt…]Eö§'Ði‡IguÁoÛÝ­˜KÛðò^ò»ì¨hÌ(íÞÉ¾:ÿJ•—wU„P6Ã €›tÖ®ëÐêC¥ªçr6¯¦U‚&øË’¡…ÚuêváLÓ’kº€—¢°Ø‘ôXSÁúüÌ
ëø„ÂÂú¾PêzR]ÝOçÓY™y#õCK¿ iÑ˜ôb=BÌväqýq5£'ïì[ð-)é©æ†C*7²'ûàXg—Î gCB3BT\Ž}o˜$àÔV2HI¼ô†¢B?°"OP_;agÁ5)óÇ¹È\;ëgÐá
ÐˆÛªiÍ>£ÉSò<X3¸N¡]}Ïþb–Ë_¡²¥§§ê_ÛC~§Jv¬R‹®ßhf,°†&NÕ²äÞášOfì4›8 ¶šë` }ÛÌk£]™PBŸ“§Ë»ùíäÇÎ”è£‘+òS>n×oŽƒßz˜Vq”à—ŒìI}LÉè¼» xœQKOÂ@¾Ï¯ø€fA®DMˆôÐÄ>B‰ÑK;ÀF»%»KÕï¶hC‰'ç¶›ï9£ë’Å–ÐV¨b8ÑíùÅó( á‡t%;£¸f·chY²ÝËœ.°©¤Fü1ÖïUþ†‚k•3Qö'if­f«ûR³±üJƒÆ Á 7GÎÑ"Èî—aº
“¸ã5Ô$cå¡¿ÒØK#KR¥Ô…t•ùò¬åÁ:¬ùOùs†‰LšÄ×z:%mº®Å•ömƒ§y”>'m/‘íªóÀ~ŸMàæs«jÖ=Ã]¶tþªzaúPòñî—JãPmŽÎÍ-–ìA9¦oìzœÚ³xœUAKÄ0…ïó+xXu­àUTX´`Ám‹Q–=Ôíth’Ò¤Ý¿o’º¥Î%‡¼oÞ{£FÉQÃmwywEË!J7Û˜"7¤Î*DxõPµîei…V·DÅwšåERq v#÷†÷´ò$<¹Âîá ¥,Uõ´'z‰‹ç÷$ÿH²t¦<˜÷z›À,mnp¶AÅ¶-WË/”?z°°ã(FVøó¨ÑMû*—2nsHJ5²Îó†(þÚló·xÑàE£OSç„PÄÈ²·hõñžÖËØ]`n:©"§ú/Y;G9XaÝ?ÏÎý^]‡áØƒáf–éÅ\|à¿#xœe’QKÃ0…ŸwÅy«>TñUt0´à`ë†QÆâv·EÚ¤$étâ÷&C0/I“s¿ž“³o8¯µgWçtûg•£iA¹2Q´ëÔë¤EŽIœT]ÃñÊnþâ5’åó”±æ½^±'ª^ËÙ¼W‰”h‹=;ÏKÊ"=›a‘[Ülš0Ä7òÜv¡íB¾±®Qá6í/‰î‹êîq<ÏÊ3b«•2;†?øGpÌÒhÅgëØû_WPf-ÆCçúŠKÙ‡±k¦XvÖóo˜S…ÇK\™½Û-» › mzƒÚ¨7ñ‘ÍÑ,y<§”-I‡××ô?ÞéhPq‚ˆÅÖÆßlÑ"Xd&.ëâ4{÷Öd˜™ú k=’Gy¼‘7Fç¥9ò©tÃâ¬xMç“âOOJþTM[KÔÑÈµ»?W.Àn’£ô„çà;˜~ .¸g»‚xœ•U]oã6|6Å}ÐåÎòõ^Ó$@Ð¦¨ËÎAÑ"Z¢,6©’”}òã;KÊ:ÛMœ 2½Ü™]™u«r]æfÝzÞ}:çÇ!n.¯¯DŽ0á”ÓB™’n~¿V4/•	ºÚò7ú¬}˜’S¡wÿ|ß’ˆöÁõ•‹?onïóEL<¬•óêQd\‰ÆJ•j­uA¹¦3]^Ð+åÃ¯Oº<Gb2™<ä–Îª6¤Û‡®ye]+Ãy<â—«ÅÏ_æw÷óÛ›±6—ÿÕ:
µJ¥Š´Òke¦äÑ©G µ×(³Ð Q*lÛrwø³kDù˜j¯óÄ…Ú£`&Ä=bÆæ:éd«‚r¤=q>¬ÛÆË­ÜÒR‘ÒHº²¨q¥À1À}§¾žÒG|ùÈþx2%ô$É ¯ï$–-^èíhóénù¾(”÷ÓXh„»16¢Y£ÈV ÊÉ†6rë‘¼[Ú¬„51ƒí‚ÆcÕÈ•ÿéíœhÝ#ãr…+PAIáä†–}U¡ó]¸Ó& >X¤*¡2ãŽ‚ŽnƒSNOÅ±Sp4¹¯Áq¥U=:Uh<&Å5Š¡±i¶ôŒh^íü0¨/&{á›ÚzHd4Cr`R=ºjJÚè¦áã•S2D%á)ëÄDýÝƒ?Ü	l-›žíÍÍ›ú8öóø|x “û:ë” Éù3ÃM6¥ì/oMÆ9ºž-µ‘n›ÍèÖ4Û¤q,¼KS 4šèY2|•tËp¯þ¸¼¾û|µ7Ñïé7é4eá\çF„ƒ—}Ùë¥ö]#“^ŒÝuòÌ¥¤ºÇdàž,å²Q¢Sña’sñ®=—~ãZ€öVDó}³+ $r¾§â¿QJAˆ~JÑ3”ùÿ–þãÖQ;óÀæC#KðƒåAKY²©%‹ol@o¥vªÃäÀ¶Ê@JvIô^kKÖò=]6PÊÈ Ç#ÑÖöqú6ÒDñFŒE_ã@"9/§‡°vì”8Û#—IèÙwÑ7öþ£žbÆ§‘†c
x©¦¢ßLëË¥…Ðê«l;Xgp±<@L¾¶›èXq ºäÝIhô‹š×¨lÓØ7Öñ¼;k~QUDLÇ>AÒémÀÅ%¶l—æ`˜¯P;Û¯jÆ¤;5¥çì5{ž
ŒÃ2oöW<ã”ÏY!CöŒž.wy‡é‚J«ò€.U6¼ßï¤»¥ßõp‡†tPâ®Z¸Kxœ•TMoÛ0=—¿‚ÀmÖ(]¯Y7 è²!Àò::9È6s$C’èe'ŽSä2_lÉä{ä“tµ#¡´§\äÒç¥w7÷ørù˜?Î& ø}!F¤SœÿšNSÒ^e5>í­És²C´äK«ùåÊÜ£äXçm™ð&D¿ç‹e4‚†äµ"ëh×6ìØ®ñ!¥J%ô_…Ø[å	ßPì×aiå^ÄJK[‡½xðm==O—«ébÞŽïÆ¢ßR+ºÄªH7j­¢ŠÜš7SŽv%*SIB:©1ÈQÎ«Ä…’ °¦R)gØ^©mñÔ«y°â˜®ŽBZ¹#O•ÃçHo¸‚¼“5Æ„¤´'8ÙrJÂp~CÇxÇ‹»Ð³Oƒ!²b‰šq]!9 ÎMò/GëûKZhte’sÃ†¨“{Ñ¢4Mh2tÜ&+sÜËÚ1xÁRzF7¦ðŠ?³\nÜçË˜\ºcÄ¸n~s7Ü
lg<MŒË,ãÊá6Œ$Eo*5¥º›ávöÇÐ·/¯–!±Ì	ô„‚Q'ŒG ?	ƒ«ƒª®¶üÓpÅ¶›ó{o„™mKž!wK¦2Î]p¬Tìegƒ¨ä±5ðÉJ#|æÄ3oÙ^ë¹Q)e’½Åx“—ÇÙòç¤wr>bÀlx†·}÷ø€—ÎVÏçá·Ðƒ~/ù¿±ù´žg ›úpÁ,¥õÁY¨¹lJÇ“r%SÂ?FÊ‹³èƒ;xœÛÁy‡C&¯,7U73¯$5G77±(;µD7/17UÃP“ËÖv¢„7’àDÿTQ$®º‚MJjYfrªÝÄk™2‰Ì¼tWN~ºBAbzªBb^ŠÂä0Fí`…ŒT…üÒ’‚Ò…Ìb®âÌÜ‚œJ…  ªV…ÒâÔ…’|…Ì”Ô¼’Ì´J…òŒÄ…ìL Aùi
+2A†ln`üÁ8ù³ª“ýYdÅ\ª Ô¥ò©ÁäfS îæXaº€xœUïoÛ6ý,þôƒšÖrç~L“ E›aÇ¨ƒbC¬”D%ìdÒ#){öÇ÷õÃ²at5lXïÞ½;™íZeÆg¥ò…9»×'!ïïnE†0ã`Êh¥LI‹ÏwŠæ¥2AW{ª¬#IµölE¹V~#‹!@2hkD’|†Ó›€x\S„Æ©	9…ƒ?ßÔ$à‡E!V.î—«ù*’‰„¾l•óêQ¤ÌŒzf)]•j«uC_²Ìô2]^_¯Ëú2Cíõ#¸$sr—åÚH·çÕ¼l›°iB†´Ö2\_Uëw[Š—B|¼]}ø4_>Ìï/¦ö+Ïª•§¥COz«Ì„<dóHŽôyÕÆB©FåÍ<v½f¥ø·qv‹M>}PQ´ºª‘œS!3(µ‘ÇåH{b<‰cöt-÷”+R £¤Šgl)°Cté½Tÿ^ÒÜ¼árür1¡˜Öåµ-þ¦óÑfv1ó*ÂÈ},(uÚñò×ô¸ªéW²›(öb ŽÓ™ïN{ì´ÓuM®NÑ%Ko~UW³È³ÏjoÀ+ˆ7%.ê8	?Á¼¤e…VÆtºDùÄ²Å(s:¢ÿÞo
@tCaz¹‡’iCÖ(fë`eM;¹÷` R¥6O‰3B§AUË'ÿî<&ŠÌ$ó}\†YžPtj³è Ê›ª‚ì}¸Ó& >X@•hæ­>ô éòRœm6<O>©à4ÈÇc×„ÿ	Ÿ‹¤¯Nt1ö”ža|ú§ÑTû Sy6£HººtÒ–’‘HW-.2Ìò˜Êa pK–¢íªƒL]h5H6Æ†ƒÔ"étfhžq”´rN—a)Y©î4µ±. ÊÔ.ò™©áË:PúÍ[“Æ>K[®éT$÷¦Þ·–‰ðýÎÎšÑ¦¸•ôšÇ€¸ýãýÝò÷ÛÑ\}EèÄÆó±gûçuJrÈ¡Ž/Þ^Š×ã1˜‰t4›GÏ3xöƒu3ãˆ·?D86Üìøè×‰ü&;Ûõnï^1})=‚>ëêýó90Çñ«ãAÅ )žþÏÆü4ü„ý<°™À;—9**)—%·Šd°Ç`x˜¾i÷ŒÆèËÆcÜ–\`Lëî¾”.c_æ0z¬ÑA‰ï-s­a¼xœmQÁJÄ0¼¿¯xàaw•ìêUTX´‡‚MK»ˆ"²Ý'ÛCZÍKŠû÷¦©–,ô]ò3“™IÛkìö|bKZb²Ë›ÜÏ€Üf	?ÐÎPQ`N{$ 8Ö Õ›Ì‹*­?h¼÷d˜>`qŽÅxw ¾©éà)©Ë´Ø¥¹œØƒ@IßŽØ2Ê—,À °Æ·ñ/‚_Ê(£VíAÙÎœÐ/¨[Ø“ßG‘úèqµ%ƒ#—ôs‹Ù.¯W>IœLA@v-$¯Û¬xN¢|—cúˆª¸ŠC¸À¹üÑ›çpð>ÿ>¡PÆb÷9õ-{ãìKðløÜå€xœ»Ã|‹Y(¯,7U7¯X·(µ891OÃP“k¢œ’:\@AW!Ì(V(ÉHU ©VÈKÌM-.HLN-ž˜¥Ì	W:qŽ‘br~^IQ~NNj‘B²6„Ž»í–¸LÓãÒæÒE\ÊP0&Ïat  ä?êrxœ»Ã¼–™%¯,7u"Ÿ¸—Ÿ£¯+—.pÄt‹R‹SKt‚ÀtIFªHX!9?¯¤(?''µhb–òÄéæ\H×§*!xz\Ú`Ó`€KbÀäéŒ® ˆæ'Š´-xœ•’_OÂ0Åßï§¸‰€RW¢&g²DÆÂ£1>tå*‹ÐbÛ-â§÷nN™þ¡Omzîýs[]nHxãVy&…Z“´b«rÊXKÊËlM‚¬5ÖuG=8?dD“Y ‚ècPà‚yô+Âx¶4Øh”)4+¾‘5€ä.šÇI˜Ô°x_’uô ŠŒ'wðlIe®è .ƒdºã4œG_]«ÆWÆÖÖ¢›á‡Ÿò’té¥«/Ó6ï§`é¥ çÙÊ5ŸlÜJ+7äÉbîp#õRzcwÈ>í0ãúœ!{ V\¢ªŠÆP—^Ç8äÃ°ŠÚë#»–¨¹¯ÛJdk£žÛjØ«õ¨7@ž@p;™Å×Ak¨Ç8­ýù4c8iMÀð{+ø½pÚæCÅÒz4µ•úsŽã»"÷ïræ÷¶fxœUKOÛ@>³¿b¤ %p ‰–PE"‘´j…8lìI²ÂÞ5ûHÈ¿ïŒ‰"õÉÞÇ7ß|3Ö›#oÜZ-d´q‘Ò­–i”šÕÙUGÜ|þ1¾DDÐŸ„‚žÐ[…	óÒÜ¨OlP'Æ‚Ë1VKCí
ì*u¨üÉ@’¿7°T)9$!Ën 6ä¡½ë	1û3žLgÃYª ö¼AëðEœ2B¨Â1ÂS¸.ñÜŠ““ç(2ÁçÁGœêæúaø8¸íBd |}3“{eÈ¹Sš3´„‘•k]‹ûÁìûÓp:NÆ{PŒë*`ðã_#¬¸€•".ºàˆW\Ö\í)©)“°øÐùc†JG‹.¤žÙ’-¾\“0¾v>¡Z‰¹9×@.­Ìr‚rQéÝ©2¹ƒÖë
D¼&—˜=*ˆgøÞ‡ú¸`â/;]† AS\—K2X¤&~mZ‹ƒµ¾êô ÄÄÝ!Ò9+é1-¥Þ—aMšRR++8RÊØ§aQÌ·†Ã8Àwå|·ôÖ2µÆø,·ÆÇ‡#”w«ÒŒNw°5ö•ÞŽôëÀ…<7Ö+½¢ ä±DéƒE
06ûPA%X„· <}J»Bš
¿ËU,S
~uyI“`–0úÖƒ"ql2&bªÈËW$U’I™ÒÁs›Ûä)µ‰¸º#ôfEmw`ƒÖeç”ŽÓ0ekÔ@M”|ºµÊSû÷£ÄY$µ|ÅŒâ¤é©tAM)“BBTØ¤ó~È„ûÙè÷ÅGÓCÇ'“âJKÒ_öà—’„ZTãñ|ŒÍ¤ç6—ã]+”säEpî‡üéÚ];¬‚vä£†7Æà÷Ýhú8h,Œ¯ðý?.Kk²â°,“V T1ê‹óæŒGâ´¶NkåÔm§sÑÀÐªî#õV”MbÿH»u<œ·ƒ
šüjýO¥õ,_Wü
‚ã}ÄjŒc3î#„hxœeQMKBAå™JB›6AØ‚žä„mDŠ"5ÒV1¾u@gäÍäÇÊß C e›¶ý¢Öý„FŸ¾”fuçÜÃ9÷Üû|K¦ÅxÈ°–ªÏ;VCâkL(ÅÙsó´H§¥T"ÄÞ%°©f‚2
ÍZå±–	#ÒcàIaZ-ÞÛÍ!8ƒ"ecî±2´ñ)ëOµrð VÕ3J$lG!S#â1ÌiHkŠ9tNd:ÎM|lý¥o¾œŸƒ)É:Ì|DNæYà&}îõÁ#Šî3¥í¬¾­5ó+à=!}F/jMä2Š²ñ¸ÒÙ RnZÍ&¤Ügž–þ,DÐR7˜(ØEÔÂs¼W7Z·záà!´É[( ­=Ø_â~íQ<­ÖJ\Êºäu`j¹‚2VEl©üß™…–P¼6è‹‰Ä*Ž2ÕNnß×LcçGáîd÷ïŠK{ó»Û¥;qw9ïª›_ý÷µ—½^xµT]OÛ0}žÅ{(l$-Ú !h§JôC´Ú‡šÜä¦±–Øží¤ôßsí”ÐnC“&–§ÄŽÏ9>çØ².1Z§I´B%†Û<J«Rž±óÆ&—ã‹èaòÏ Á-:#°Før})Ö"ÁŽ…Àž#flþm2ÍGó àîj4ïYÇã	ƒ}a8k .à.ŠTåtå¢Lx~6Ý.Ž!RÐ¼Þ3v=˜_ÝŽf‹ÑtÒRxÑCeÀå“ÏcÜJƒ•¨QƒE™Ú0éeÓPJÿVRü¬pG;3HÖ—)X^c³Ä ­
N—ÃHBRƒÒ(u%½q'{«ƒ ,K¸v•ÁD‚þµ 	Š~Ža*ÁVI‚Öú™µ(ŠÀzAÈ@FS.g\k£´Ü!-Ë2ñÃDÑ‡Ë9éÊ	9QeéU¨¤@ÞXÁk.
¾,ÔÌ¨²áÁIÞÊ Ød]ƒæ†—èÐxÙ™;e6µIN“‰ŸkBƒC|èC—>º>ßÞQ £uAŒ’ÅÖÊüðlÏ¥±Ä¬µ2NÈU³…¹·+f·ÁoeÄå…Úrqƒ\Š™˜Ñ4ô ík‹ÒïS9~¯¿™†‚ƒ?Ò2NñRÔêi?ÉëdU.‰8SE¡Öãr!áïÞÌƒmŒ¾^Žg7ƒVCÄÞÁ'ôˆäèN%~u§ež:ÈhR§ôŸ–
ƒIðþãUóÅ¸×ëœ?OŸÅÄK!úìýîyˆØ[xá¼í„µ¿âß„û(þ*ÜÑÁzmñþZð¸¯»	æ@s—K:Tno{×•ºû¿¶Ð‚ïïƒÑE¶½gÜ8PYhT¸›+ê(P8d›ìK°9xœ•SÁN1½ÏWŒÔ¤ÅP®ˆ"¡e‘"‘ÍŠ ÚªâàØ“`±komoÒü}ÇN ‹TUÁ'{üfÞ›7¶]µ$ÖZ	Õô¢S†„rÞ“ŠrÞ ïÇç#øvè¨®'%^`*‹t0>&@¸-5=ÅÞ[ÒhlF‡Vú(·RkNk[iõ)Àìg5­gãYÖ‘µüZ‘ôGI²(ü¯¨#¼Ô´2Š® nÊYq?®ÆÓê­^*yë|Q=N·h\šÙdõ¶ŸÄÄ!ÍØÞšß=mysŸð>÷=<pö«ì¤—-Eòh&€ŒÎo7|ÚàœóÓízæ•2vÒŽéÏžñá,Yðut‚¬I¢åº¡“˜7N½Ñ°GÛóQ–ÄìkÓ4èl³Áµó/¼Ãï7Å.-`è»Îùhì’¥0zA’GF§pO¡o"«Ý ËrwlÒÛ£iax¸L4Ín¿*g	 üq=©ïÊÁT?ŸN]Œ	‹¥e²”#½y?ðe8gŸð°G3p÷}þ¯Ÿ¢fFt‹LŸ?HØ‡Ð›HðT$):²Xxœ­TïoÚ0ý<ÿ'íCakBX'µc	AZ!•"¨]UUÈK.ÔZâD¶cý.†¦)k'­š¿$ÎïÝ{÷¹NÑÙD¡)±FµFiOt£ÝdçYŒMúcŸ9´˜|­80G£®n†ˆp-B<Ò`¡–ø]HˆE‚¸Œ@sŠš8®ìw—±àv2£ÀbZÜ»5*÷ì¨l ¨8làº;ÌÜ9N$”#yŠçÝáhîÓùmïœjû{`lèƒùh¶M'X‰Ç.2æar=Æ=X¢<†ç¦PÔ? ÷;›—‚ÏY°ÜÃF$t)ÏÖ³$É6B®èM¥Üt †óÑµ¿ôƒÀŸ,Fý«`ÙP•˜“"í-»74µÐ"“´rƒôXˆ{.¸«_À€º+÷ÏR}Ï»žúË¶÷ùlùÉkŸz§í“¥÷¥}zÒÞŸg¶áJåœ+Ø ¡!%¶Üdjûu§Xø@Ñ°îµkàÏ´hÓ*'è5Ý²´´3™la“©ôVs]äy¦L)ƒ)³cä¥ô.›£.£KqHè-d¤Y…ÅB!#Œ…Äˆ€¦v¾•›Øst:ìe¿PàÝ´0ya€ÂîèQYn¡iœa¡ÍÝ¶^öX¥¹d-ÿ[<»òk&þ —h^´]nøÞ8±ÊÒ]ÒžNÝHO†!£<âW¸4áÆÛÜì°õ[à°÷ðê}«žú¿4Ifc(bÑQ¨˜¶Lš·þî›y’q,ÜaF–ßÿg\ÈbKÁþ+M¾Ô…0dÚßË³º6êŒxœ{Ë}”K,¯,7U·<%Y7¥(³,U7'?]ÃP“k¢¢ÈD1¸˜‚®BPjIQfjYªB¸‹³BJjYfrªz±X…HEb^ŠBq"S’¯–™“:±Z®â†li %
e©y)ùE
¥y™…¥©Í“ÍÙÁÚ&1©KƒÌÊM¬THJUHÍ,ÉH-R 
~a¾©\“ã˜õu€†$*ä%æ¦$&§*$åä'gC]¥ ‘ZaÅ¥äèƒ<gg8¹ŽéŽØ²x eJ
Å¥ii™\“s˜å9nðcQœ¼Ù®pòGfE„&+°¨ ¨Ã©ò.‹ŠJíÉv¬š8U/`õ 9(ˆ·axœµTßOÛ0~žÿŠ{ 6’í‰´S%úCí‡Bnri­%¶g;)ýï9Û](´‡<%gß÷}wß]dSa²Ê³d.Ñe’×•Þ;Üg'¯>ŒÏF}–ÐÃäË À:#°Aøvq96"Ã]á
d†Û%ø‹)c³ãÉt6œÀ zÓ ±xËv=::<Eß…ãx
7I¢j§k—¢Ä“ãÁð²z ‰‚øzËØEv~5œ^'ã–Â³”·DáF ,Dƒò ,ÊÜ†C/žB9Ý­¥øUã³
˜A
[\æ`yƒ1Ñ ­KN–ÂPBVƒÒ¨t‰½q'”Üd¡wÂBÆµ«æ 
ÎG4RJ
	¶Î2´ÖŸ¬DYÖ@Óe ¶n	\k£´Ü!å…¸Oa¬œ¿ÏIÞÒ“©ªòâVV"}áéâó£ªÂ¨*’ÄV©VyxMñÖÍ¯Ð¡ñº=2wÊ¬cŸ³%fþl³‡÷=èÐGÇ›ÝÝ`”Ä(Y®a¥ÌOÏö8G–˜µVÆ	¹ˆ%È}¿RvÚN2ŒË5(RÜrqƒäbŽ…˜Ñ$E;x¬š^½4W~7	ÑÐáÏ„[ð@G6o8,R¯Ku5'âB•¥Z‘ó5ì£ï|3w6V0Öÿ~6š^ö·†ÿ|AgèÏQ{æÁÖÈ©ßb¢ùâqÜra0°=L)Ì®GÝn÷ðhðipt÷(*¹ßc·—$aïá•%Ü2íiÆ¿àù{ŽÖí¿áÿø-Š	›¨¹[JZˆEt\¥;oVI‹þ4ÑnþÜSn¨"þâ5.Í¥pÈ ƒ„úr²Gxœ}TÝOÛ0ÆÅI{luÙ^+¨„h'U¢jÐB<¸Î¥õ–Ø‘í´TâßÙ)i;(y‰“œï÷uŽ^—È7™ä…YòJ,‘gÊ¢ôÆnÏ\°ëO/Æ&7ã!ãt1}ºp˜£·
×èÀ¯
å<˜îÌF®®*c=f°ØÆ‚Ìª52–>N¦³t”F„ˆò´Fëð™%ÞÃ%p•áZIìÃç¦öUíynl)üõ•÷âõ3úu¡´°Û>p½fl0Loç£Ùýh:i9?<'¿ÆD6‚Á’(ëØc¥¤0°ƒ½›•’+F{¡ô±¬-?íJàžÖÿ	Sye4lTQÀîUØÒpÌU(U®0ë2´UÂŠ=ZPJ¡3iÒÊšx-p/U®¨X†Úès|éÁ%=\†@¾_ÄæÔ'ò0º ¹Æþ¥üÜî6µÊ”^RkªÎQøÚb—ÍÑÕ…wAØ‚!äKX„Zg˜+UL55’ÔÏòÁ÷Úê“®+Ý¸B&u ­% i2l6Êahƒn§…¹hvõ{=ön”öŸÎRlì¶ø¦ë-I3ZI’0]t'ì¤™±¤Ó`’ÑmTÍFv&…Ö×Žò§F¼*)üY È¦WÓ›¸nÆ³»áÁQù-ÿà4â‹(«‚Â4eˆzìÛápsö>9]iïb4!»ÁLØ8ÏÁ’ø_ –ÂRžlþyyÞµuxœµUÛNÛ@}f¿bD€ú¢!‚ E"èEY{Vuv­ÝuBþ¾3kã„’¤ðÐ<DöÎì9sæf=›b4O“hæ"´ÖØÈ¢tFG*EíÕX¡Ýÿz Îßõ¢wÑm‹ˆ~Bÿ"¸EoÎ~\]BŠ3•àžNÉ²€ÌL Ü†ò6¬Ü¦¿,bø«×;Ã@¨fh>Š=Ž(ØÃ4KÚ<DÑ‘í¼Ù»ï¶!RžÙ4Vž7¯;7m¶(…¸j/o;ƒ»N¿W‡ÀQ\SÐþ	¡÷½‹•4˜¨êCÒR©fûV±¥HÓ*ò.!ŸŒó0AVzLŒ"1Ú[“eä¡´ò*°pG7Öš_3çr‚`r¯ˆxZÁµeìi^Å,ÞD´J¿R)1ÁÜu‚si%ñq¦R§Ò"§‡š°NXòDÎ	ûV©ÛÇç38¢—#®êñAƒÁ	g®²ŒÎ07ö7=­´’Wä¹±^é	A“÷¥/,6Ä-º"ó.D.õLHnÅ%-B¡S+)õ5%„ç@yÎDaµƒãÃªZ‰I±˜+‡ìº¡îHÁ¤ÒÖÙ™X¶Xù¾3Ì1áFtkzkÆá|Ó¬Ô…Ó½sï8ópRäM§¼”§Q»žÖ®›:¨¼@à\KÊ‰¤¼qOŽ^ƒQOEj
Ÿ~unXo?œŸ~{As¬c·jph•Ì@ÓÚV¤Ç¥ôx)=fò¸I-„­¸éÕ[‘Ò»AŽØÙ låI|f·ól=!Ú?/ºƒ›öÊrú\ï<·®B[—]'i©•Y 1ü­€Ã¤¾,©?Á;âÊŒñ<á]·b³²µyù¸¾P ø?OYàVŽ%¾ ÕT}ÞÒú—éŸº‚ú‰¶„ò4\ —æz–´DxœuS]oÚ0}æþŠ+í!íFèöŠZ$LCjºvSÕ/¹¡ÞˆÙi?~×vJ¡e‘Pˆí{Î=÷«MEé¶ÈÓM•PEjpöìÓ9\ýï˜gHùu²SÌH8¿ÞGx¼{Ë{Úà7%ÿ4„#]U¼×EC®1Š_¶Y;€ìÇ|±Ì¦Y 
d÷2– ñ¬È¬Ç¸	^´‘9ð>MuãêÆ¥¥6•pW—Ê¿×Y­˜j<Zx O²Ñõty3]Ì÷„žó37ê)J‰ð¸’R]´^¢x¥æ­Ú<êCþAl*çcô'¤u2·=¼áÅWm£®Ô
·r½ÆvÉ×¶0Â‚­)—¥¤¢àö¨…92(-z~á´Ùù&øk‡?	I2Ô¸ü‘Kr®€Væ=õñ‚?.ü¼?ž
FÝhµÞáV›ßü/ˆŽEmS×Ú8©VÍ§Kl+õà:øj½nc‡:Ð·\Â6ª Rª e¡(g<‹ÒµÉ°§æÖE2†s]P„ÜJK!x¹OxÏãý>¼ÉÇËV'£8eCÏBžG¯1‰±Iº¨tŸž¤‡?­öÆ´çs¡ü Kì>Û…NVÜZgL¥àQxg"·;ù>œ-¿NÒþ¿ˆ(¹6zÅnòy{2a'ïöáÃa’Sx‡§ïÍÇÇÀ¹hïùRNcÚ	wžE¶H:ô_fd´pxœ½U]oÓ0}Æ¿âJ<ló
¯ Mk@•è‡ši€¦>˜ø6³HíÈvRúïwí˜Ðò€ªvÂ/‰}¿Î9÷:ÑíùV¼uÜc…ôvÇ£½5U…–›Ú+£/ßØ‡£c³ÛiÆ8-¦+ ÆÊ‰3àŸþ¸ÒÊ+áQB
0ëèÒç„Ê”P‹oË¿Ïæ‹|’GÆc‹ÖáŠ]<@xàßx.à½ÄVø9—´kàrö¨ÓWÀ€9/|ãèÌÑgùÝr²¸ŸÌg=ˆ€ƒ}26âž=LºPªõ58ÔÒEã×ñ<ÐŽ|óµVY=¬‘jØ Ëf#´o ‡Öa
)É³h¬Eí¡CÅ’X§êyO†^ZXA!‡ƒ CxCî‘PñDÆ"ØµKü5‚!m†Aø·ƒ˜Œâ¶ªªÀèj[cÒ[äÜ9pM]ë•.	y'Þ7l‰®©<M¡w`r_K2–¸V%šGùû!`\ŽF¬o&½¿J#çÎ‡cLÛé²v|fR“víI—H
è”ô ¹¤q,(Cï99€3[Î²o·ÓÅ—lï]ÁùzØ›ýûÀÙk8òFîMôM<1\b¸‚³[öR¼ºVžÓúŒþ?MÌKñOß«Ó¢Ý!FŸ¤ôZëƒ¤Æ=×(O³þC†XÝ»æxœ\msÛÈ‘þ>¿bJ_,UÑôÚwÉeWWWEI”ÅD¦’²£oÉ¡ˆx@ZV*ÿýúéî|ñîekwm‘ÀLO¿>ý2ú<~²Ÿ‡ãádpoŸ®îG×–þŽ§CcÿóÕ•>-rû©gÿ\çÎ~üùçÆØëb»+Ó—ueÏ¯/èÃ?ýÜã¯ìméœ«ê-)½-ê|™T´@ÏŽòE¿gÿ{]UÛ_>|XùU¿(_>ü±À[Iþ=Ks;­èýªgoÓUµ¶·YQ”={Uø
+|ØŸ>}üøÓûÿñÓGû4;|uå® ºRo·®Ü¤Uå–¶*ì‚´I¾´ËÔWe:¯+géÙ9³Á—©óÆ+[­éÍ,]¸Ü;»,õÆå´?=oë$Ió›VX>/*›dYñæ–}sŠ]üÏcé’Í<sxj¶vayoWEi7tëƒðßÒùô%²«ä;}ø–ìì®¨K³"n,‹¾ñk~žNÄtÑ‰«¾µW;:L^•‰'¢+Úë3$ìrW&™}¬ç´µ¹×ÓÑÒ¼rùR¶z©âzEâÂVöG[á;h~ÿžÙ€N_ÓcØ´9mgù Ä+¢ÑÛÚ“
õÁ‰Ô›.i6–l·I›3X0®«L¦U¦w>â`Î§Iò-èÒnËâ¥L6öm]`åºZ¥'.mH9èIS{‘)‘t>-6N_;¥¸Ã-
Ò!bß|g³ï§ÚKs_¹dÙ¿°ö¹¨í"Éù¬;+´0ç•`O,
V­ok—Û7âëÖ%ßÁfj ¤‡¯@PéV®,qb€Ê¯=5Û’ö§>Ô§(óª‹4© f¼Š€#åˆìIÌè€>{®ªS¾°&¶1bÒ+mmÓ–¶o©__ôš­è,—¾b‘º\`é%	¦d†½8²¿Ê„IgéÇèU<£ŠÚQFztÏ¡‹ä6woBoàû¥èPXî{^¼5ë.¬é±2ñÙ³tf^­Ü¢Ëa?èY*¹‹xY:pj%ò²<1cž.é*\˜ér¶tÝDVáÐhÿ]¾* •v[òå©¾™É;]È¢}–T¼øÂ•UB¦'¶ôe:O³´JÕaeá¨9*Ñ˜“=P¤ìßËtõeVÜÒî×d³Íè!}âèr¾^¬mXN¼Z;X¡Ÿª”OÌ.Ã®-ÄûÔä^RÕ?ÒŽ”–Ê‰9p+-˜¯0#]í‹•ñ»{êL¯ìØÀzªEêEßšHóh©DC‡_“JÐ3› ià‚xUQú[Zš Ø°;¦%¤÷×ª7’iå¶þ{þñ‚c•Ó.×I-Íù§âÙ¹ªI­ÞÖ)1<òüeæ^ÈÌ9
zŽÙ{±„iÍ…XŒñ~Lõ óÄ!ÈÂ%{Or·z¬
c¡‰Â³5…W…3Ìp"sÅõ½æQˆ7Íz¿DÚñ–|ºN¬!AŒV!†‰OÙÓç‡]\æ%lòÇDaúŒzk‘«"#bÞ‚r°…8Iš'Yö#!Æ#(²o8”–Å²^C ]ÒN,@®9ƒè!…h-£áè=°­+0¢.·ø:Ûõx“Ø=¤jMˆ‚"7íEÑ¼¬(„ðé56nñu…0KzßÊäµH—¼ÿÞ±”Sü
ê€ÀHÆ™Ó›À‰C¤ù2}M—5ˆ²Åœ‰lÒÀ²øÜ:ÒÍ[Ç¡u»ýIaÈUI¹ë«Ó$€º˜Yy˜ã›d	,c™K”BbHÌoÞ@¨¥¨¦ªÖ;Eðòô1øÞ<—0Xë¶…üËåøTÐ	ÅkbM
 ×º/Õu#Ú¶0°*€ Oà¿Ï?D×³áäËÔÆ7öúa|3šÆS{û0¡ŸGãÏ={3šÎ&£«'|Å~y¸ÝŽ®ø [þÔgu6©n2çé8‚iÞŠò»º	 D’¡7	ø„@¼ÍU^hHëƒÖE†Hã“bß¡QAëD–¦n‚‘04 éãX£/28{úÎ^;âbÏ0€iÈçÔ³$=ã£Ì1mÞ9¬f6Ž‚žu)9úk`]"5}%ñ‘²ñ*B|{à,yûE<eZèä´­<«lSÝî¬l·EÉ:ÁÈ¢g”€&ÉÀ	àìcýñÁÿ6z	G‚ó³ÄLF†Z'/`Ùù¹Iò
+bq¯y2_d5€<¶(j(>Á[ý:7A2ö,Þý0t¿®fÂþ.Y.KÇ>3ñöŒÉ©÷€|ý« …Bù
”uÊH:‡dd	Ú¢eÑU‡Kñ·ÑêÊ§lÿNiõ *	\çÊ”u~ÀzõÐö¸eOá¯FN•|B±‰_1p/r`ïoÙr@`ŸšVí¢™°ó9ùD·Ë9C!÷âæŽÀ:{1:çŠ/úæ› Û(YY{c-]Bj¹,œ„…}A4Éî÷d´¸é2ï|j ÞiC§9[È†BBM¨ŒŒ|¾kÁ°k¶é¢.jŸÉîäsØ±“îÒ'[:E:%2~Ê´–¦žG±È’tC\!¢¸´ßÛÂ$ 
õŒ¼æCøBªÜñ„’âðÉÜ»œvA`£³5K<Ãˆ²Í#TÐe)%86ÝÇ$YAÒ×>M¢j¤$i#Y5äj×;OÆ‘©^‹1‡ÜMv´·ÓUÅV=ÎÜ`¥Œ!ÿ²ô€ Ys>µš£`W”S•Ç&xLõlF<=QsÜ¹']qO«èiŒ:Ùµw¡:x{$”LõpM2'»=¢—¤„¾7Î‰’È)¼‹‚ú/¢“‹6#X$µ—t¢«4“ð¹ Þ2céŒ0oU9^ÃÃ¯²M‡„“ù->GVh‰ÔKOžR¨0? ƒuh–øEÌQËÒ<—|:–y£àÌß2+«&¬óg^BÎµçU°¼¿Ç¼X!#êÀ+ò‰î’€AŸ¢ØÓrÙ¬:…Bè—ã/.ŽoX}NzÅ “ îRê4œ* TU&CägôðähÉÁF	¢°:Ê_’¤J„Ôà…aP=~=Zcš+A¨7•KŠ´%¼g‰D]
'_B(” Ð¢Oy^Ôä]P%Ô ÌFÑñxö¨ÇKxýàt"t€KÉL/ °F?Ô
„Žæ…‹¶zÁ•6¶øã‹Æn³¸x…}ƒÑ0ê²,Ä/,g9ó-ìkêÞö|"¯Ò"¼óá¯ÇîêØNÈ®¼ËV¡þd@´ñˆuÒMæKÉ ï°¼'N¬ãÂiÂÿÖi)õYqo±þ…ij(üèF
\ŸÓ`Ò¨+oÙZ'¦& ïJ	­wZ„aþ µäW´Ì‡%Ô!æ #ñEN«qUÈ¨d€ØÂ<ìÔx…{bñ+r²
†› €‡-´‡š×²ÛsÙòÙ’öü×>¿·5êÏuÕ¼`ötÎ'›ˆ+ô6{Î7ÅÃHf’úNL1û1…ýjŒ75fÉ!AÔ·‚2]H-¸-HÎ' `aJ!~Eu\Eo ÚR·	³æ`!¥ú€Q9Vé^’rI±€åO/Ù7Di)”ÍèÅ^ÔF ¥\Š¯©|âX\Õ§úÊÄe$zL’»L¬è¹KKRZsÞÐnÅÙq¿ºRRáPD“:ÊÙQfGùSQšËPÙÙ”?ŠèÌ£™E*½Ÿ]òò.…e5å‘s€+Ç2ûP‹ý#ø rŸûZd5êû+Jz}U””W©KoÏ'Ð·uBó2¸¿ˆ:ñš¬ÓHRŽ¹ÿø1Rß?Â>õÈ %–ôóé!ª˜ÿõ•P'é-êŠý Ù‘ðk¦Áâ>2Ÿ,ƒ¨SŠœÊgjSRÞ ´ði° ¼Z!ým¤Ï2Ç¡®”ú2ÇÁY¨÷ˆå RðS›ƒôÔæƒÕF5… A	5Ýã°€UxZ­Ø$eJú_‡"Q[0DÌ0vI,ì5€ìðdIcOŒ¸{ö5ÉRYŽx–‘w®¸'çÚ¹¤ä¦M›U0>b‡°ë)W •£³%Åè\z{Œ‹´Ù?W¨­Œ‹õµÇAXxÏ+ìs<
ÑûÂéÈqŸÄßß'ƒÓü—“ü2XœÒ®4ÄSD)+ÃSÌ, 	ý{=©GDáâY’-¹ø3E1ÚÖ•êÀŠK‰9€(<%emÕŽPE@ÐÃû}1Ôúmãåó6ø4i´Y9ñ¥”êŽÖóæÂ}E.fÙªu*RZ¸E(âØ4‘¡1§UÛnbFüäæè-ç1ÑRkL_v7¼»lz3tÑç´IT)m“Jì²Úsb’x_,ÒP#H øn•æ©Ô]‘féóâ‡Ët+ÍelâˆKµLÆ°Õò,KbàÐžˆNyG‚ÓíŒß:–¸X¶wpžØ\¸Ý‡¨¡å8tö¸QØTzL¿vŽ¬]ª…º2ñhÎ	ˆœ.ZKØ$ÿ`°!ftz.'ÅßI]&ÐÄÃ_è	Å¨RrV¿óA7®1ÁñvÏD‰¸ZçŒ[˜æf+£¨=Qå:s—{äWh!Z+² tn´LÆŠNôZ·ÖFÇ‰¶¥Y¸J­¨6¼e×É5ƒÊ½´/Àm£¼}Q3Î÷æ¬ìxI4,€ë—uäÛSížKs³¥œ):‰Ù«EÌ`ÈðŸ-d€IHŠ5”ýq	]àkZ:PÂˆ¢ByÝ¯[”q9}ÒH¼y„TÐØDy‰”b[†8o‹“ÛŸÞî-&QAn%5¢@¥±A$…;-Ð#d™Æ ¹?ÔøV©X13BÇ¥‹  ZTlZqaˆ!-ÛAœ†0¶–²¸â@ ¥ƒèyÑ¿«:Ç’¥	¥Ž,º?ˆèBvçšÐÈmµ—‚ù%ÉÐ§fÍÑÉöµÍñ‰YÃÑÎ|A‚/EÛnWWzäÁOÕ Êïw>d
	o’²’ûuëtžVR¨Ï’·¦‘¯yâáydŠ-ÚÔóôÈ¸ZÑÁ×{¥ûs-/ž,±_Hi½ÇE£5²¢%ÝŽŒ+Æ¯èX£ÞŽþ?=>¡¸!ßì1q/ÃÑ©‡?ö¥‹R¥§øäGHÿ7N\Åó{¤Ê9Xcðh&ô”õ#îV£^ ‹¬›]Q…Î¶;ÑÓêžR
Z·\Õ%w«:³'š‚µ%õw¶É5Õ·ª`½&V¬¹ÁÕ7]KÒaI”ØÒÿSkÚPŠ¼1Ÿc/!û¯¾­$®s5…L´é PÒþzùÂ•<Á(Qr*ígC@Ç…‡V*ÏÐ=@¹ÆžKãy“êè¡¶®É\kç/z&ÒBÆÂÌGVèÎ¹ŽÂàPB?$”-‡[O}Â4†þÈL*úÍ{6Ò“f›Ø2ÂJŸØ·‰Œ§ß•é…ÂëqE¿P0î1ÀCêåÓM‘™:iIû‚bÈ‹ÂÊÖë›¸iÍí9’%ß£×4òÈ;(æ	ÛÓ	€Ã!¥$H·¤)êLpœŒÚ²ØQ–°{ÏÓ‘qG0!ìBÎOPoÁ9EÓ^ÓË’ÂÂÓ\´o~¢,’ACŽÈž‡ó
þ„2U½sb°³Ô¡â8ÇÍáÑO/´šjùä„‹Z>õ(úëÚe Ò’c¨.£tò$ôò0ÆE%äiÓrQo<{mñpó$k]¸‹—fRÔ$C7%<5%öfXu–22ñ¶èŸŽ:·m]²;Rr#ÉÔŸù'±úhÅ·C(ó“ªî´xÆÕº0³§¥:©¤ÕN{A†kÙòäewóu¢	NQz|:TƒC¿”ºb¥™m~Ý±`þ^S^5)TžDBüV†3‚öo¹ †Yû…åè
z¾Î1/˜ê ³¯£Û4™øø%w 1èw@’[š íìº4%áÁDõçE.õnÏŽ“§ZQÊ–Xâ—.µ†Zo›f/ÏS}X¹`IÑgÉC¦<ueýšu`Ã{§VÐÐèk‘)Ã'Í´„ºA„âˆ×EÊ˜p¶g5±šòtÅ.(îó¬Ó›æˆsbƒ{˜»Ãh%QÕWîQîOýÐYÛ¯R|Ðù×=‡•úhvÍƒ0&ÊiQ	Ÿ¥¹)T¥Uþù®mkÅYº¸èÁ)râå;tfìÐ“åRªÐ’ö‹ÃãÛ5·Ï;GŒ&^(¬I#ÎˆnŽÒ“!Í¤ê¾Ú¹, Åœœ1À†2Ó2B<Gíu·DDÌ¥3µH$¸F®˜0~AŒ‰g‘HfNJÊ‹Ú{œËƒ–êÏ}ƒ99“N…Ñ‹Ò½¦Üº‘c¼ùU.mx£²?1œ.  ÖDÒñ¦8[¼Ûô’|
ßN´ûmZò {(2yØ­¾!—'@!ÁNÌ-ÐKG*–±‡—i#Þ¢™¥”&)"C2¶ÖÅ *TWQm„IÆ5n1<‘×›¹+ÛIÑs-gÅ¹úÞ³y„xÊhšNí|7¦´Ê°ÂY¯Mâ8b‡¶t•O»x:Lˆ…þ` ª(ÃÈ@g« àvFê`Ž¨ÃÁÙÛv†0awŒ{-²]3ÀR˜^Ajzœšc—3dné§~ÀŽa5²†
Ã'<'î7žGõÚ½ëXð¦Mã1LÌuÃƒÑiz ÷6‘VdØ¦»¹ßàüÞv§ìõ’/s#ó†ÃASbôÍì³^Ø@c¾s	ƒ,T~ÙÒ‚áñ—"ÉØºÙöÊ× v‚
ÈåÔ2ØKï·5 þ(\õé\ ‘•ŠMÑ¤ì¸$ƒKr0FšW^ÄŸd»ß¸5~°ß“É`<{f¥øØ·WÃëÁÓthgwCû8yø<|±£i˜“½±·“áÐ>ÜÚë»Áäó°‡ç&C<¯…©Ùhzêþm6Ïìãpòe4›ÑjWÏvðøH‹®î‡ö~ðX<üÛõðqf¿ÝÇæË=ÓÙ /ŒÆöÛd4?ó‚ÍŒ>ßÍìÝÃýÍpÂó»hw~Ñ>&³ÑpjˆŽ¯£›î¡ÎS"ûÌ~Íîžfñ8Ü`ülÿ2ßôìpÄÿö8Néü†Ö}!Š‡ôåh|}ÿtÃ£ÁW´ÂøaF|¢“³fMx6¬NÄÐúæËpBüÏW£ûm‰YâÛÑlL[ðÄñ@(¿~ºÐ!ž&Ó!j:`!-BŸŒ¦±ƒ©QÆþõiÐ,DÜ¥5¾Æ×,¨=Aâ¸öùá	¡„Î}ƒLx ŒÚ›áíðz6úJâ¥'i›éÓ—¡ò{:cÝßÛñðšèLžít8ù:ºÌdø8û15=™`•‡±8œO}´dø:ð4¾Çi'Ã¿>ÑyŽhÖ|&m3#¹›o#ÚÚ~_¡/Zá?“=Ø/ƒgÕ~Võ 2›Yî®VR´Ú9¸z ®ˆž“E„€!ÑÍàËàópÚ3ðÖ:^Þ³ÓÇáõ¡ïIõHÖ÷Â²¢¿>AŠô.b$Nz¨"ƒB×ÆAGhï}»<o÷ÞÓ?èÅýÃÊF›Ì–)¦?¯†xz2¿Øœ××O2-<7ˆšéÛhÌB18/[óhrì‰ùlo£û§ÉŽÑÎÄB,ÉºÖ$(Ùô¢Ç:`G·´ÕõJÏv¬öÙÞ‘(®†ôØàæëžGö1dÓ‘òäAWP>žòvtZ~ûÈ€÷;¦pÖ*•ØúðžyL¨HÃ¡Ç«B—³bKQ\aS;m]‰ÓY>ª/|eÄW†r)§Õ¾	T’jfŽÔE®]¯‘Š:’ixVieºAC‚esÇóK"hty´é)‡2c¸DJ·U•hgªÅPÍÈo€˜R® ŽpÊä“ŽŠ›·7áažäV¾ÑVˆÍõR¹´"“…„$^ÝN[[„ò½â¹v$™'}°¯á×\pa†ìŸ5¸áŒ€®å-»-8Uâ‰ž÷ãƒÖÒœà‘  Ä$Õ®.47‰Žñ'Ý»ÖÿÄØÁ¿è9¬‘'÷/yóÏèÎPG^—Í…ÆŽ”æ¶÷ÁdN²:>Ôyìnq;í; ±™É;ˆÚër¿<lrß6½x•óî,ôÅ!Pîg@ÜqÕ|káiÍVº"³ Vöd*„2—°áXBÐ¾lîYhGË¸†ÁMBÔXb?ösGè:V^ál–ä|q	•×££€ëe;/Ñù‘üÐ“)[éV¶¼¼DâJºú;±®^ôçµþý›ý¸‚‚ñ$”âiTÌÄ‰ò\®2vJ+‹œÎ$· 	è“ïJ3)qv3:s¨½àáÂõ‘¬,›ÑÝ,ý.þÐðœ#=ÇþÅËÝ‰ÎD+‘ÓÁ©Ï9¡éWñAÅÿøsoÏ–aÊ6Ì`]r•ý·”6èµÑÁÕôážÅýsŒ†/Y+T!lµ#ÿ;_X}{×ocß#´ÑƒÝ¹Ë°øºç x½1ÕŠBîuo·xÒ—	•õn‹ŒŽûYílw ihÞV—m;wH:	ãÉ[f+n¡h×£Ý[ÄÕÌ*è­qç—2.%DWœŽ’¦7–¤"Ï`îÌ¦ %ß/ˆ‚ï\ÁØ¸¼&†¹ÿ¥=Îš}J·¹æ¯wEô°<ƒ‡Èüˆ#ŸRìèµópÙ½™:Ö·7®¼°r}»4¹z&=\æÖÑTÆu¹¶
×^´9kï£‘®LŽÛñ^.iÞé<z‚q‰mFaƒ‡¥ø¨©Üªx.vÅr—»ð+=Õæ»f#j	`ÆP'¬›ÓBôüa<HÖèå¯·:‚yÑTÏh³?ƒ{—,¾»’à?eb÷½IKf;²4ŠŸ=û‘ÐV™fü+J ;ä‹~G‡OÃM®¯¤AZÁ=á›‚ŠvˆÚbô'–/—1Ltùµù=M;­Œ]Q‚flY g3/é•¦cÂ8ßÃ„ã—hÅmF¡„|+qÅ;FtßŒŸ]<T‹Ä)¼…iÐp“{I,Ü“9üýæøï·8RÄü?Öfv}¼xœ•ÍMjÃ@†áýœBdïÎ	\hSºH)¤?‹`ÌX#ÇŽFß¾z‚‚vzÞÓ'ëÝ)ætµ$Ü>“…™ÐÀ´Œº©ÑEA^÷Íû÷¡ƒHkBR˜¤p„Xrâ3Œ"æöÂ1Ý¥`swKjÚú*x\‚ªŸ°ÞPêÿðgx^/4Ä¤(+åÍ¹Ó‘ò}èÝçv¥V˜t®nw#<ZÈÖú1±×„á,b„GøGdW+o¬–¥w?âóÖFšBYì¡FÎdî{g“¼xœ‹ÍË,‰årI-N.Ê,(ÉÌÏ³uÌÉQÈÌ+.IÌKN-VÈOSÈ+ËMÓM,-ÉOÎÏËKM.QHILÍÍÏã «á_´xœ¥Ž±Â Ew¿âWùl:8HÁÁ‘Ê3!^­Icúïv!ÑÉÁõÜ›{îÚd‡€iNŽg|‚eP8Éq„NÙƒM®‚–kÌËN6æÔ)!˜uŽ@_ú¦M{ÞHzFäeÊR&Œ[(¹¼"9ëM7”¦L!`®=O#_VÁ>N±ÿ…õú/Ñ+w[¾¹&xœ}‘ËNÃ@E÷ù
/A¢‘x¬*±@<V V¥?àÎ8É¨ó¨ì™Bùzœ	-‹"¼ŠdçúøLÜÊ$Y`½xZÀ«“ÜÜŸWÓ¼æÂ^'àâÃåvì»|¸œÏšÙ¿Õ€ÖuËÕ3`´°\¼¯AÈd—"¸°ã´§@Q)æÓìXØÂƒµÐ•XçÐë*È	|B[SJ¬Ÿ–Ýž¸=ý·iá·2âZê°øÉ'ÑmWà:ˆ)ƒa=Ž E‚u‰é”5bDÝª†´Õ»(-¬H—æá¯lq_§ &ÅÎõÐ9OÙÍt$S É˜U¤3¢“ÞMÄ¿¥®”Ÿ°Û'fú$Sê”u¥ª±ÄjªëXS’60WjÒt$4ÃñL.qÊ½› 3£q±?W?6¶ Åè}å4…YUªÒÔ«U©¬ÃIà/ö7Z»ÄRºxœ«æâTJÎÏ+)ÊÏÉI-RR°RPÒOI-ÓÏ+ËM5PÒáR€¥¼bC%É<C 4§RN~z|JfH$\’Z\R¬¯ÄUË sjNº€xœ½UQoÛ6~÷¯8 ÃÒ 7©Ó(¶4	¶=lº}4(êl±¦H•G&Îà¿£h%qÓîìEîîû¾#yüôdßëN.QÔQ›=xTºG DhCè©*Ë¯k
²	-6NQ¡,œ‡ƒÔ†&×èI;[ÁtBÊë>T€pe)z„ÐÊÀ„nE_¢¤vAœ3 	´¥ Á^Þ8¿’ÞEÛÜ	pÞ÷¿§.¼\Ö(‡^ÄØüúÛùO¬$à¦Õª}È¿Ùð"ÃHc\$]š[È‚VÎÒÀÐ­íAôIóRû2’/©•Ë¡¦dgœ/g'ëÙIÚœ.²ðþ Ò^w(”ÑEo—“IÆ¥Ýêeh«-rí\Û…K) ÝT`´k‘àÅÈ1ä¬ì°‚ÐÝqB¦P)°S†kT=×ÚÝÅçÒ/©‚~z	¹é÷(»fv’¿q7óheäÃ²A+–ãNƒ™ˆ\ô
)ƒÓnå ¯„;n°f-óêk,bmˆ…r]™_Kø,»î:©-Ï(¯K@´:­‘'*š_· +¼Go*8Ø²s€ÐsÑCþ~E¥qnûŸ]ÿv‰áGÂÔÆÛ£õ›ÓéÙ«£ËéÙÙôÝÅÙñÅÁm_Ä¾IñËø÷ZµT«Þùðÿ¨ªèuØÿ„´U&6x?F×ŸÉY¡^?µ‘ÄÔ:âèB›qˆvàJ.å‹ÅOåoûà
rÅñ£\SGÓoç²vÊ½ÞÎþŽÀý…î¤}c+,ËWç—\‡O¤U+í[>YñçÕ§¿žL~|ù~H¦›œÛZ°{)ŽÆ]Ì°ºsu5ºe‚@{]ÝA¶>I^ßÕ¢dËùóÚøäµ´‚-³6¸?ùìY4OÙÇ²3í¯ñ5òYÅfäHœîO?"ž¥Í£/Öhµ4ûsïÀžu‰7û…Hþï;+?X¶Â£AIHâoºµjsÿGØŒ¾¾É»³9\¿™Íg'ÅÈZˆädÙÃszòC¥»xœ…;ŽÃ0D{ž"+Ãeª=‰Š,Y„eJ ¨`}û8Î¯	’Ž¾á‡3±òõîðwÀ¾Ué7­·²t‰¸ýw7oÏC79‡`åÅ}`^„ªBå'¹Sež\æ@ÓÏ
ÙÝQ„4~Æû7žFŠäâE÷/%gýV!ÚjBc§”Ù!Ö°Tš‡:S1Õ2éj\ôn~.`ˆ¹ªY¬‹Äþu­ê—[Î~Á•f‚](­7qËÝ¥Ç|9"xÉòÝ¡š<Â™ôŽÁ´xœ±nÃ0Dw~E6N†—¢[¿ÄU¦mÂ2%Pÿ}míy|Ç;ß,^™ÊÂíë†}-ÚZŸÓiŸ‘ºÈRÝ,µ›C@ðúO¾¤šß+B1å|mB^çdâùB‘ƒíž0B/âˆ CÖ”I­ý«)Ùûr‹/nªŒ“¸¬,6ÓJPVÎ®xaÛ]X(¬–TÌm>,,t‡²£íLj‡B®nòÇýó™ÚÄsB ÙË7‹„ðóçºxœ%‹AÃ ï¼ÂânUê‘ß¸f• Ða“ŠßµÇ™eæp£[ig¢gW‡¥@Ät‰²¡Í¦9Þ‰âV|/õõ°¸:¢\:Ô[ŸË?þÈtGé·ˆÊéè·ÔU|€£Î¾4W%®0xœ    ¸>xœSËnÚ@ÝÏWÜ
©JPŒ«,Y† ‰RÔDU¤¨‹±}mOÏÐy@øûž±MBvÝ {|çÜóbBk‚SEÊ4,…–ióë{Æ´X¯„xdÇt²‘ŽJkª•©H\,ƒ²Æ“5ÔÚcºXžøfù¶wì=¾v4•ÐÊ0»Z–<âc‚Ã>’ªXâ»;ëY€¿1n~</ç´ª{V•¥ŠKL§ªÛkîØlÃIÙJÓð€yI®åîF`Rz Ë“£FÙ8îŸÜÇÐ¢R*Ò0PåA*-Í"šŠ]/ôõa»>Üf>œ4ÓZ•l =WT[w¶¢7ô÷UÂÞÏó¼Q¡Å²rxß2sè8O?Y©U^h[äô0*_¯ËÍÓòz&®ž¶÷/Ù¸![UÐªjÅnN`ÝÎ¾eÖeZâÒõt*Ä—4(LnJªán­4|ÑLEƒw£O7=éck!sïì.)OA6æ‘ÌåðšŸÎGx2™ dpîSÒBl‡jfô*ùŽG²4˜“Ü‹O¤ßõ^¦A´§¯ô7²?wPŒ™aKÁ˜K™
}©%í#ºë¸¿1#z¾„Îò°Ú§Ý"­@æSÀìzi»†§tÄ{­Ñõ>Øâ44óA…ÇXd-žq:‚ùQö]lè'ï­Ð‹Ù¥pÒÞ¤|‚“åŽÓŒ’¢×žVÞƒ;ÝË ˜öß-Rý=ç_SZ4°ñxœ­XKoÜ6>×¿‚Çä é1(
lvíØ¨í¸Ù4ZôÀ¥¸ZÂ©Ôn6¿¾3”H=H)vÑ‹a‘ó}$ç=[
ù$‹2šWBf55Ætó÷›Þ¾½øi…‹ä±]TMq kUUTæåÍTUSÍ;Øí”Ã…©×Zé¬TE'ù‘[-ø‘·A`ÃL!û²1‡N|Ûì*a‰[šÊå¦Km¨¥dË-¹§’¼âÒFÜJWÔv°k÷A$­¸©)ã¯ÌëHþ”QfÅ‘ZÿÔëË/dÕ-‘W ,UæäÈµJ’_É›ŸI‘€ºà†Šµ[p¿Íru’¥¢ù ¶é–Ò	ï/O¨á©pÁm¶çÔ6Á~ïAi×íJd”î¹ßsÉµ`w1µå%èÝêó òÉ¯‘elv+… ¼<…g*žgÒd¥06õ¨u+B¼ÙÈH¦ÈLEu’b‹)øMJ~õ°zµ2ç
_oïO^1Æy¢â2o4•Œ'ßo&‘û=gÖ$qíVò±¼ÜƒúÓ:Ûð£€Ã¶^&E€vµ‹|
ñAD!%ö‚ë)øÀËºÃ=|¾#ÝÝ’X›Ê‰<cV—>m´|gˆiµ*Ë˜X /LÅƒRÒÇÊp!>ß»Ì€®’ 	Å¢Cn/?øä‡ÐÈS5Äï/·vß„ÉO½Ê¢œ±0DmÜ7áßà^Bó@j-e‡¸rßKå7|Y^¨i)€œþŒ:à¢4œâ"‘–%Á½þ°(§€ŸåÜÄ:ï#«[ŒZL¬Ö¢¶*r¼@òt|*:Þ]zà‡ØËHÊÎ‹M³3gcy•$hw‡cPt,$×à™ñða³îŸ»ÀíƒÛ+Ì˜&Õ36ÏÌG@0íGX›“?iÊ] |ÁÅEDökÅMø—Û[Æ7’)†ÿ‰[rÝ•³· ý¡\mD(l«ökàX¨x}t^•Äk^€)¹vj?_ÄPrjx p_/Â×J÷~‚CYÓšîD	U4,ÃY
;	;úî¨[ÆÅ1
ý€1P–¦˜-õÜ7^Æ}×|ÛXŸGØ­¨jgÑú<‡1Q»²íÛ•Hø NhCï†[ønƒ¬¯1Ä5R_.SÇ`||¼ït œhþµÁH³Šl:Ù¥ê-Ái3HJ>w(‚e¥ÛF6L[xÍ7³kºƒFÃ,ä’ê‹Ï€H.ñÄ®†oíßt+ÛVn`VÖD<èYp^uÈ^«êÅ÷53:R¾P—ØùÔZÕ\Ûs;šg#t(“ ”òV<²š€Zai²1ó'{pe`/
hÖqëÄ©&jOA¦8â›3ôÌŒÖYKñÃ“°~!ïÖƒ]RaðëÑ%úº¼S
Ô6Óa¿ƒMˆm…£IuúÝYUTÁý%ž‘Hœ=eù†:{âÞnn<Á>¦®Éæ&»¹_­³õÍê‘`ü  ›æ²¥}¦¥ÈDŸî¶äqû{­rLOBæãNuÜ;B4å¼† Ãý¸‹íGP¥O/’½
CÄ{hÑjr…ÂdUþðæ	¥ïá’Ã,×·ïÎo®º±#9KÊÿÉ
È„{ò«œ¡qÈ‡?RÈ±õ¦Èë¹ÑvG]t6&`!ß¿[‘­[ô/14äª¢ÂßÕ•˜`ÚÛš›6p¸…SG¿EŒñ}³ B.bMÍN^¹»[÷Ë¸ÿõ¦áA)Ó^6Lñ	_q=.¸b¡ëä§î—z,¼ZFe¸~÷"`»ZŽÕdZ?(ç8Ü-LjSÎ9U?—æùÆ›0þcÖøÃ-Èm.H˜ô1Èt) aÌZCi»ç¬L—¢Ç^„ÜAìHv&5j×Ôs¤Žm1M¥xŸ‘ªj-*ªÏÎ°X¤­÷ØJ½a©=Ž&0ãïLû¢ëj×wâ%Å•…dèú"^)8û]©Ø“Ïq}¦ø{×÷äÏ@~/•XMÜ”lÝÄèÇ^Ö”î'„#-›t[<Î®¡3^È¬¡gšÓÜl£Ö·%ð6hŠ0†×#¾o@°Åvbºe¤Hh¾ÀâIû1—œÝk­ªœ}ž>—ø‹@+¯¹^xœ½TMo1=ã_1·‰I{‹ RD¶RøhˆÒVªŒw «»öÖön‚Ôß±³,öVÀ;ž7ož­Ê#Ás.¤ÛDÙ*sçWmÖ?¶ßŽbÑbê]D0C•ÀÖW|…*Bgô•€Ó´UK¹*v…Aî°›`Š[±J
Ã•@ølt‘[ÐÆO#*älºÂ(Kÿ¶H½`lö}<™Î†³€1à|.ÑXœ³3ö ŸA/ÁR
¼ç(Ò9î¤Vý^½½ßihæ¬Õj‘7aöE2é÷vûà/¡iÙPå(Õ/hú½zÜShšÞEžo½Ã6xÐ0Ì»‹gƒ‡áôq8×=û¶?Qnž,„·.a%KT°4$üsb'æ²þm,ð"Ý:xüU u˜°š?ðÉ+v~Èä&
l!Z§\†°Ií,-Bí]A¶òõ:0øÃàîë¥W–ãRmƒêB ú•K‰†LwÒ2ÒšÏ#¯‘sÃ3ê×xžî´ÙüßÀ©Ol°,Ö"(‚U|Ÿãë5me×kï²Ýñ°9(Êk‰z„EªÅO8î­®Úi&[Ë™í‹ñúšÐ-øë³£’.A¦Ï¥6Q³Øàž2£Ó”@³á†ä'd^¥âi`sD®ð5|Î2Xõá0‰þÔ³¼/øPåèÝ “Ö=rëÀÊ•ò8òãXHY•¾Ö°TÔ’Ãúà@¡Ä|@\‰¦¢ãMØ	aÚ»V5¦w7Ðcéÿ)þv;šÞÇ—l¬_y–§”27º$U'°AGœRŽêYžrã¶Ã]¼éŠI‡ Ü‡ðJµxœu‘ÍnÂ0„ÏÝ§Ø­*·ÐžˆJ¥|@â§ˆƒ“lH$•mBÛ§obUÝƒí•ÆŸgÖy¹'¥m™Ùi¶¥ïûÖtþ) á9°ª ÿsvë%n('%Å(fCÂ©  ‚¥ùA?°‹Y•¤4­¡Qóð†×À«÷Î[µ¼ã Çƒî¤ïOû#q!Ôû¬Æ,A“ÖV2]¹(å.»u€Yn%§£!¥2ß&…ÚKµ´RV Örš-g6ñB“‹¶;_æ‹ùkÔ~<òä¹7ñ~šãƒ‡Ë’§GÏ"i{êÃ€‘µwIl‹Ö¿ãÀUšª»T>Má96ÅO |á}_HÈ¿äþsGjƒçñûR,NíW4)Ô‡ÌüÔ†Šy²6xœe“Qo›0ÇŸñ§¸76©®´×*©4­¤ÊC
é¤©ÊƒÁñ63†®Ò>üÎ6M³•ÌÝñ»ÿýôÜ#oäÀqFíÆO_>³õ‡‹±üë.cœ.¦ÿ}8<¢ƒM‡¿UÕ!<' èD=¥!EŒ•?ò}QnËÀœçíˆ'–z "0…•ÄYÕxÏœ£–­¸’ëUþ´»‡?ÀÂñÄ’$ðEg3º79T]¥¬xá•ÒÂ¾úLu•1“&Çc{áÖ«ÍîèÂñÄØCV~;l‹ãvŸ_T{ácÁòï;„(ZEÝo`°fVAéˆUFƒ¨¨Ó2ˆ¦ÁÚ)ÝÂëN¨ž=iåãZBR	˜FÑz … Ór²BÿÑši¸elä\\dofÜÝ±^Q,9’N¼PZO¨jÒ†ú!¼œQƒÅ_ŽA›Ÿ®3-$…šò,à¯\öèC¬ÅµÑÎš®‹H‹ƒ±|ý2·‡Tò¾Ï(¬Ò‘@q¨&r'|dtdŠ°â¢èÙ¢è=‰Vícÿ·È÷TRâ‚üd1é[¤Ú»ôÒŸ£Ñt§µ¦QZz{Ý½‚ÑÈ’¥ýòfMk©Ð»&8Õ{ècXþBÐì¦ðŸÔbxÝì‚axœ]Ž½JA…‰`d¢V‘[i2…mESIJA,îÎ½c.ÌÎ3³AÁg‡}ŸÈJðlÅ$(ˆÝùáðáóÞ[µ¬¥½3r_öÊÉáðÇœÁè|«ºˆY¼+4ù­^NÇp«Ô²kÑ©ÈHØX†'Pó»ºª*(oãòy³‹Ž ÷ïƒã«X‹¦)XI¹ÎK†àS’ÍNÿ¥$0>Â¥å‡mwaaQsË.÷¯ƒÇëùlVÿg¯£j1ñB—aƒ&N:JÃ Žd%Ô¡…€1'ðÉë?–zÚùúuU_Šµ-xœm’ËnÛ0E×š¯¸;µ@ ÛÀP´Ië…e#J
”4JYH¤@R*ôãË‡ãôn4äpÎÜ¹¢^F}7	ç¥ŸÝ»ïiýß"ª>noH„Eúï|a;n©F<håñUên`ÔéQýXíöõ¦Nõ‰ñ´°u| 2Â`È°«ŽÕò5ž„Ðrd7É–…êÖ«êa{_)<PQ@¼gåOÑ(-í1æ›?2föÓìEoì(ýzu»½Oƒˆ>ßÔŸî6ûûÍ®:«‹o…ÿÎ¨¾mYžÕÂú“5‹êJg¬2²	ÞòÀŠô$-C¶-;§š`LsLp7q«zÅÎ“^í’š³Yô2ðÕ½eI8.ª—SaÚG¦$Ñ¤šW{âÝ½UÚ§öáÍÜ÷F5Y¢¥í}{ËrŒ¤àXž6ËøÇ××TQó	Î“±^égädlQêåÊÎèð.—YZy‰Ž0š©8µ?U¶R£aÌ.¶^Ñ¨ðoNOr/­‡é‘žf;(údÞãöâ‚xœeO±JAå@Å[ÁÂF°µp;Kµ1‘KarDSIÀ½»·ÉÂÝÞr»B~@‹à§Øûþ›]b¡S½™yïÍ¼ïÝ¯½#½hÀee¸…ãX@»õáñúôä|ÛZâÔ×¢¨AmG•²Þ÷rŠì—‹ý_åÛÕŠ|=snjQ¢ñ3>ºªqs=œ<ÜÒ+qCNYš¦Ëó/ø=þn6ÎÜ-l0¹.Ž"ž2Öë?ÞùÓ`4düã 9[áß»‚jeµ2>MÁŽd×6T@é›A£I/ssÐe-TC­e!uè KP±$kP*©¼,ßfÙÎ†üùždÉKq]í‰axœ{ÄÖÇÆ“W–›ª›–R [\’8‘W|¢ª(3ˆe§È\’X’Y\’™<1E,Öo8ñŽäÄo…6%©
n.
Éùyi™é¥E@uùy
ùe©E\ ©œÌ´T…ü4¬Ê&OeìŸœÉô Î.Z½#xœmRAjÃ0<{_±·´zI ¤)õ!Ž‰›B	9(Òº]°ea©†B_YNLC«ƒ‘w5³3#™®&Qj+>­–žnîoañgd›5ˆ°À\PàŽT%¹Æ½aÏÒèŠp› Å[¶Í‹´ˆØˆ?tÔ::Â¤'Â@„Ñçš:V´ÄƒFÖä¬T$X/æÙ~³ÄoãöI’ öç,kûÓxÀâ°?<®‹Õ.Í_Òm6ïç?5-úÂìuC8LÄwîÈLÏBb7V0¯‚‚šŒÇT‡/—´£o°¥’Z2Š@¢æ2þøë ¤RäŸB§¯Èé,©žBãèî`%ŽÁÅälÿÅÊIv©"²Óè>B%ÓcVM]KáÈÊ6xÔX±óØ”hG‹|mq#Ð† ÎWŸË6bâPÃøÎ±Iìxœ{Ä¶„/¯,7U7-¥@·´81=u"¿èDUQU0[AWÁ=µD!(59'13W!4/³DÁ#1/%'U!¬6U¢i¢þÄ;’¿&•d¤bS_Ì•X\œŸœ™X’š¢PžY’¡ R“˜œš›šW¥Ÿ–ÈKÌM-. J+dæEŠR“3Ó2SS¸&Ïaì˜œÉô õ+Dû´ZxœTaOÛ0ýŒÅIû`Œ¯ !Ö¤ÑV+š6!>8‰Óz8vd;-‘öã÷œ¤Y
Eš©jâÜ½»÷î]ôºqieÁm§Þª8å¥;<;bo]ŒM¯î&,ÆÅôÞtŠi!tF2ÚË¼¦yA×F{k”–®7"+|e5þ\¥<qä8o«‡‚±ÅÏél¾¸]4¥šrkaxdQ¨K¯êFtž‰µLÅ%=Ä†Îscî/é7Å±©|Yù¸=ºØ¾zdìÓdqýív~;›ö…B­ÏÆ’_	š~¿ÔÂÒR®…‘9‡nÿ,_l„HMQVø±Òš5\ƒ:`Üj ÔO»GLO¦ä–ÂT:
xÜÉ¯)$$@ý¦+¤¤È`]ç‡âyL§x8Ò}8èqÒÀu%G@¢LúDû£õÙZširUš
‡¹…B}»Û&z"R“Ñ‚L¥01®hÃkðÂI½dF7¦ô·¹âK÷q?&¨; &uó.!µ£a–o(©òÌ·áVjxo •aæ¡ïf¶½‹ØÀã1{ËxE;×Bønr¥±,¨µ"nU4¢è—3:
ê¾H©áè„fZÕ­>Má-L
?Aèâ‘“—EpB|Ót¹ª0øØ
žñD	Ü¯à†NÂTªÕªqE‰Œ:L!´HT’BeŽ@#C»€]ŠCÁÉ«»ù×É`íŽéÈ÷KŒukÖwÝ™SÏDÎƒ­[0ö~¸P1{Gû×và´Ý„cºángðaº¶´ý(:Ãu&Ô3éJÅ[»<i³Ñ¬eÚã-izAzüÒË‰ü[ÒÍn!ìj÷!së·z6UøÀbß¤ìýÿÙí„xœ[Â}‘C-¯,7U7-3E·¸´  ¿¨D75--5¹¤X7'?]ÃP“Ë&JiÙãP¤ «œš—¢àæ›ªàæé¢Q£t…¨S ª›XkïˆÃu›”Ô²ÌäT;…hÝ|›´Ü;…]ÝüÒ’‚ÒÝ´ü¢ÜÄ[ øÄ¿ŽÒxì˜œÆ¨Æ¤7w3Neœ¬Ål:9“y _¾BjEbnANj±Bej‰×äZV5 š‚W¨»ŒxœVÛnÛF}Ö|Å }ÝV’ô¡pí n¬BÉ‰Œ¢Eà‡¹”¶%wÙ½ˆVÐÏÌ.©e£å‹¨åÜÎ™3Cêm%GE3ÊM£K#ò‹7—p{~Ìï>LaDèžŽð¾»e‰Æ¢ÀÚX¯ŒFS ÐÈ.X([5ÂJT•XË1ÀòÏùâa9[Æ°1ôç­´N>Á09rñ&—[•ÉwøyDÉooºh£B•tú/Ž
ì>Á`€t‘Çs!íí·B;º9õ%ù<cïðÈÇ…“þö&ýFsƒÝ¿'€ûéòý§ÙÃãl1ß#`‰¿tXgŒõÀOfªJè•ÃàdŽÞ`þw@ÜùMŸ7,¢M| £PçÂKÃ–™ÑÞš²”vŒÇUÀ+UTb‡+‰.¬*å=•Ólˆ74ËvF©‹ü.¯”†%Û:Ç­ýd\ñl²Àþ¹C®Øï<Qzýÿ*ÊL­È—óiÙô¡_(M%š2f¥ûZX	çà!ö çÜ‚%3çmÈ.\…Ò«š"RÞ,f¢U½Uy ®ìö=bŠ”ß “”š‰¥ÏÐ‘7Æ©È6ÿ-•!gÒð¾16‡ETò³y¨VÔª5>J%¢«e¦Š]ç€$bš©ÈñÆ8Î>ftÖ•ÔŽå]÷¼´sƒÚxÜˆ­<æ ZÉRÔã†Vžî\>Ôn®“BPÁ©-pÖ–úJÓÀˆº.….v[ýŸ’}òÆ8ó¡ó.(™iHqÄ•Äâ÷¤Áwù¼¶ÞE~OFÌ•T‡"z7&”yÒKÕ¢#@”&¯Z%ÀIï£í¾«ÝK1ðFØµ{wI<,âÖØ/>8ß]××ðÒž£ãÁ'ùOP–y²ëPIí¹íG•¥ñ©é´´:‡{ Et;,ºó²JêhÉ…p[I¯v)–5k+*0*GO óE¼´vÂõò3ë¨‹%OMç×âK;³%ª‡ô¤\œJ<ï=R4›ˆbŠâÖìÀ³b`ËBÐð;NúÃßŒá°Ýcñ½ýÿZÝž¤ÊjKf¼–ò8§‡ª‰J^"F—;ì!$ê“àZè`¿”¸Kî§´åd‚ÝfŠ™	¹Ç/Òš¨e¼©„WYL(ò¿‚#‹•àWMZã0rS†‰¡µÚJMÐ§Ü}xømzô&þ;.ÅÑx°Ó›·?þª~æ¼½ªä5|wüþÁ7Ø}ã„Z5áÓ+Œ²ž°<'ÞÄ³qÑ`«•«ç·WtÆƒùïÝ·ÇÃÑ^ˆß!D'u;(/á+FãÇ±0xœmRïoÚ0ýÌý÷­ É¬Ð¨LBm´¢…’ª´«øà$-±‘í„nÚ?; †Ðü!±O÷Þ½{w¢©ˆmH0Sjö“~u=˜ü÷ Ó¹Ìg(dø)n9/sÂg?Â0ú½‹0šE-²E¿7¤4­áÂÑà	Í¾3–W<™Ü¹/+Ò¯øYŽÇç:lÍÔ”(2“»ý¿MÕx|­¼è~9Ÿg‹àXÝ	8ÑsM·×ŒD"SJÿIß*b:çÊÆ\]ÛJ&'×–½RIÎÅ†0“ªâÖBm:Œ/ã—¥Œ¦OñpõººJFŸv^öùaéÿ¾|ªý4~k¼|gÒÕ.ÈF¾ú1.R[ØRk,‰Ú¤²6}€EÛÄÑC8õd<†s×l¨QI‰±->Î§÷ÈËT…É+G[kêc(µ.â’°áeMm¯5°£Œ§lxs‹Ý”2^—¦á!|õåàÄå¶öÙöÅÝuOÝB`N<¥¤¨xÙsbr*Rç:O­k}œe(¤ ':[%›ÂÍ„£²ÆÈêÀVèiMñ^§óÐ÷N6+è}ðj[’7Ãº†\”Y[¨]]K P×…!øì^éu¸•xœ•V]â6}Æ¿âJ} v'³ U}˜ÂJt¡_Ð¶«Õhe“q›Ø‘í0ƒÔßëë$“0¼4Ç÷ãøÞsOPç\D©pQvä‘uÜ•v0²éÍ‹±Íl½`^L½w„þV¿Í`œŒÎaóu- gÆöß6ÛÝ~¹§ èûY+žXßG„nÄ>L‚ãgøEŠçÂ<‘L¦eeòþ…HA¸b½à…–èm(Îtbñ›Ì,„û–YÎ_£äe:	¿d•C½jÙñØI­¦“ð¹K!È˜CçQËÃp•Š(èÔÜ’K­-'s¡K7T7dìàmùÄàý…Ž¸Y”.:i“st¿ä­¡^=16_ì¿<.w‡åvÓ”ÞWÿwmÀ=‹v“ •g¡îÀ
• W@}¹j,Or© ÖyÎUÂð…Ñg™KÑŒ°eæì=c\5=,¸Á:a@ZðžÜisïžó‰î-Dñ3ºÄèÁ*lñú ŸpñÉÃï À¡¡3ÿ·­Õxˆ¶
lÇÂÚ»
¬+‰ç C aq°Î”1nˆZc†×J€>1+»<ƒ~±˜²À‚I•â.ÅÕ…§œ2žÚ_éI7&VÃb¸ã…ù=¬_ŠÕPK©\ÈÄ1/Oø1š	UÃcy:aµ@V{9‰ä…÷ÀxšJZÇÇ]JìAthF‘5“ôðÀnN>ïí=+<€+FT\ œtÖBÄò$w½‡Ã3ö<F:!Ò^iNõ3ÈòHÄ‰#kàÌ³’N[³¡!A­"½A©šøÃº"ÝÎ
6
´ø±Ü~9¬~,çžÐI¯Õ‚ŽéŸùfâ{üúnüòst”ÙŸ`x‹ Ä'i,2G§2F2•‰H0Ù›¦Pº+ÕñÙÖüUæ%-ó#ãÎ_´Iì`½™ÿ9ljé‡&ªÆ0!C_Ì@PÌw%K”ô–„ùÌ3ZÃ×ƒÙáÛnÑÎæ—,¿’6<8öÍú:$~ˆQ|¼Q‹sac#l?þ]½#$7¥ÑCyô+X	•ºçÁãêHFuÍÉÕ/b­œLK©…Ez¥R0œß8ÑÒQ‚ðNl}úmÍÅš‡Õfàã=,ä2Ë¤˜2¡Ã½),…½-Å¸Õí=NÐBŽU“=ì+›õï ÿ·ÕªïåíÊ½”Š›Kÿ¶*»)¢Äu˜0d@3†KNA¸‹¿fëÝjÑzõ~ !¾j`UàjŽJK¥Ì²º,ö}l¿A"öÜxswT·kÿ‘U‰ß'}“ñq˜\ß@UAþW£á]F¯ãÑhôñÀ•¶¡-c¿_h¿y1	vèÓ ÷‡°äß-Ò	öšïÿ®½ÃxœµX{oÛ8ÿßŸb.é^üˆÓîâri\ãm$±û]T‹€’(™·2©’”]ß>>ûÍ”,µNw›Dâçù›2ÇÑØÞ Ó³¶à 7kÞÏ¹í*¯iW•])}¿Ÿ~¸\ sß?ÂGÃ9¬¬-/†Ãív;HU+õÓ@é|hÓüÕËáÊ®‹aØàä½ã’kfIÞµJþŽüðaq»+¸YqnlŒd¥Y)—Az-ÙdÉíðMc5\3‹VÎ†ç£áx4>¯)·LV¬¸€»ÞòðQ“ªÒ	÷$¿vÃd^±×&2/„YÑro°|GÈ4‰úï&Ë¨3{wGgø³Wwä8xø9©ý?ú8)ßÀ5Ï„ä`ÔšC©´e±(„Ý±U–=£¦ßþèã¤„„ÅUn)“¯Fß}ûÝy›ÃlÍ —•£3¬Ä†{¸äZe†wô×þh<\›|4ˆö\–
‘<ä0H\}‚è„}êxáAU¯?k"·òŒU……Lé5³VÈüU¤Â°¸À’Ü•+.™JörÕ¡ý«2Vd"qT8a)-€åŸñ—‚‚gÖLçB‚’ÅîEoÀR(ž5·WÓ;x;»[Nî–°X^Ý/ð~r?ožKÍ‚êöêvrÔkw3ˆúpÏ­|Ã0 ¥‹2­ÖÀ¤o)ßˆ„{‹îfóÅtõlJŒdÖ‹²)‰‘Ì(»‡K¿å|Œú~±/Ò×—áåü‚Š4ß?ö óìw\†møæ÷°_8¸‘ÑV³3pï9%[sS²„{ó¤©m“à?îÒlõc!™Þ9æø°ù¥z}‰5‹÷2ÔŸ‡ùMùú2¼&_p‹÷âInÍ¸ãÒ©	ÉJÔzÍdú€ö=ˆ”K*®½ð<F>(OÙÚñ»+¹—1ƒÎÎ½LxD]Ooï§óåtvçAÕ¤¦ca5…ÚAñ)€âg
¥V4Ð€]qÐÜVZòç‚®|çÑŸNÇ©HK¦–kÈMÅ;'nÍvsàÅi'Ó)LV¸%¡Aõ	ÿ|CüR-Œ^œ‚ÒXOÀ .TòÓ#ÜòìEm×L‚©’„sÚõ€o¼¨Íj¨®5qP6Ô%
Ø²Au%—)6T¤:qªt-.+XnþæV¾’‰M±,ØÎ]ñÏï#6Ç0‘_Î0¶…‡-† l,µ·aË46U•kèDåBWoG*†ÛøDPúg.óÔOæó^·ºOá‘>ÐÜ/àeïªÀ âY‡:W°#ÐjñŽˆFüÛcCóOÇ	‹øDïÇ¡$ÿ%}hpÉ§ÜW ÚKÚî@ÓŒsé~iµ·–í.¼Xpk‚J§ÁÔvú¬+E­ÙF\û‘iˆ0êêýÎëlZaÐõVÉ—‚K¡ë.G8èÍ„‚™~RbfÐ|¡R4;™¬´’ª2€0“0¹ûÁ©¹A›š mEQ€B4j¬ÇÆÊC SXÛu î½ÞƒC-ú‘ÀE'É'ÄVTœ‚CäQÒ­ºÏYxÈtÆó6.„r!€‘!Äü#w ÖWåUw§SØ®D²r•nö#ÌLÉŠioµ‡nbïzkÎçTbMù‘¶ û¦æº‚ö#'@°5“‚ÈeËlð¤ÚÈÐD]Q¶‚ÜnŸœZ¦m¨f™kÎÄ©õ9¹Þ*"‘S‰¾}I¾YÓ5¸zÁÞýLüÂÜÚÄ4ÀëþfzÝ¶øR˜ø/„áò¢ÎÕ´x]ºÎqr1ájåª]+ª•îÖÇGª—ùÔLn¬G„zƒ»	Û³’'AH¨³çÂ˜Š§§ÔÚàmàÀzòEK8å§Þ×µzæSö÷L@¢QïpàÊœà’±Âp?Ú(ÄsBÑÌ3ß¨-Zì¥‘9‡xþQ–×è‡µñZ)–ˆêT#émuø®AØãÿö™âäÜ[‚÷:Ê…+ŽfâšzÖ<a(A´¾a¬[~7ZSé{$ï­X+l¿H«L+4y'®nç7“ú(ï2J—@	ÑÏQ/Z÷G/£“¸Â×¿ŒÎ£/#¿º!1à&èŸõÓ9ŒçŽþãòêlF«;§5Ž½*¡—á•’T¼Iü	:‰Ö	©3@ÇÝcêò‡É–Ô‰—z,Æ1„SŽ­K¼í9ˆ£Ž–Up²¸Å;žÚZÇ„½ê'fuÕ¤ÕºÜœH–«5<é7 ©{˜jÒñœñÏÐÙö‰Í›ÚÎm4ÓO—‹ÿ=+çäËoHói~£ãHzZ´€±»íyYñ¡ý§}êÊÅmÈ•J©)2ª/ZÒ<š&y8§nWx>¨/2ÄŠéT
ýÃËWÉœ¦òeG†F},+Ð–÷þƒ˜MK´œxœ¥VßoÛ6~6ÿŠöà¤µÒzë2 H
d­ƒ‹ã N‹mAhéls•HM¤ì¸Ð¿;Š’åÄyš^lÝïçw¥×F?´
ÌMá¢F£=‹‹W!n.'#Ñ#ô¡ÃÁºBáAêeóTnÁ­l{»D:	ÖeìÊ…˜ýu3½gÞ·÷ÿ°ÆÂâ£ès  @ÐÔ‡ó×*ÆðEZfhsc¤’‹ó›¯“PA¤Áÿ}=zØÌ:IçÓ¹¼8O+áeg— íÎOrÀÃ~ö\Ou‚	+q'Î)º’)Kó”Êœ‹,]ï¤¦tyé¢…)2é.Î¯&÷>”ÿ÷QˆÏ£Ù§»ñí=åÞöŒÛve
ßí›o„ºE°TkÔ°””õJžL¤–KÌP;MŒd±É2ÛF¹
oØh/c§Œ&7œ$,ö§J±GMí]Å@$˜“Xé%N¡ß4©&g¿'BÜ“¼+u‹¦ê(„²ÀYIgŠ­GUFˆšc“A[m¼¢#1¡î#|:ƒwôòŽ1ôþxÀ	JhÑóÔÄßá°µSJSª·Œc´vàíã– I?šª×®6*M9ÃcÃ½ ¤EXzS¸­fA­¤é"6rkO€¢ùy¶K Ÿ‰C 'qï+A‡#ç…Y+Žµ«N%°hƒ=ñ´q­µ/JôöÎP^|d¯7MA¥ÅÚIÇ)ÏGY[b"z„ê¯ÑQ÷tÝ¹½yøo©
ò%/ ­d]cgCƒ¬Ç ðbÏõï—M~LŒÃ9.U©šÈcÒéZg—oºÌæ”ùae¡r–eWœZ{þ8ÅYÇagù;é9?Ïš_õh³Ñ°–))I§e‚gâ­xxÕK²­¾±aõJ+^Q½¯®¹•4:ÖQ‚Y¦îXTÃj”ån3ÎFT?Wã,OU¬\º…)ma#¨~©FO¯¨>TŸRb£öý×êª¤`áí´ºC™ÀT§m˜ßªéb‘*šE¸4"ôk6žÛvD½*‚2GCÀ}nyÕo¡²\ÂrX2žSîãžå0cÞ17x±›õÞzñaz+éˆa\ì°ž­è2p<|ª%‚ØYûœËûœt\ E+]S<k‚Nª´ñPß ìH¿6ªøìjØ©`ï™1M·™ðòÔ–Üò¾æ¿i ý¬Ñ}&ÆgÇûs¥e±íŸÔÓö„å7nbêD` W	NeHéŽþ¼œÜ^:7ùø"mCRKb*‘x /ö2ô\5<­û9xñõðWG,¦	¯Å[•Ä>tX&ržbH‹·)êÞ‡?ÁÁï‡Ñó‡ÂoùáéþÑ·‚RŸ­Ì¦3Í-kºàoJÂe!ÃøìÿJ€oxv¿ïBÐõ¾ºn	ÛŒ:ÿõ§JüµÚ!ÿæ‡;xœe½JAÇ9½CÁ¬l¦‰ŠK’>FÁ*…65ÈånOÜÝcwvÁð	R×éc¤²×‡²s³ž ÜÀÀ|üføÏ|î-6w…åÈfB³<eBö¢Ú÷>c)\Ý\"ÜJ)\HÎcW#Á(EAyö"æ¨‹8ÁPHF‰š¦P›g7\¾ö¶ýþR´y‚C(¿Úg»c§!Ì1i¨0Ä2©xL§¾>‰Â0¬Që!‹j*5VÁùdæU&µJÔÑ7tFÀÊ%­C4Ð#þSYŸâ¶iR&q1.kßÁ×[ÁVÝšš,CU½o\ïÿ~¬ëê®^Ú& _í„ÍŽ„'-0[½…Ç?¿^€Oãxœm‘±JA†	(’EƒEà¯Ô"DCŒ©lšˆY³s:p·'·{g‚µ…E¸'ð],-}k+÷î’ÑeÙfþï‡}]ÿ\«é4$•§¢P²žÖ¶öx’Vè_žzŠ´e‚ã²wÂÆ6“Mb=}9,¶¶ÑQ”òˆº¸òrÍ¹uÜÍRß°êâ	žÂ’p-ð·¦ß;Ùa¥µ©Ásô(
Céå§$ÃÞfi—H(ieöQy{>»èúCá•%~#Ûmñ_4'WÏÉÆL)Îò9ÆÆÉÈ% øQ\ÌÞqJZTg“-VMô|×aƒT‰33Ð‘-çsGVxä À-awì»Ê6VÞ7ûh,Ã‡€&d›Ù×j½žCŠßJÅ0	[?Ú$—råS€ëxœ…SMnÓ@V@iåaƒ Xõ©`‡¸I%Ø$i$P)ŠTŠtU"kâ·#ÙckÆM)ò¢ì¹ Ë vÜ€-G€U×<OÜ&(#Yï{ßûO×?ß9Œ¸+˜+µ¨Ä*¢©½áÍéß¸mÎ4îÜyD#®ês@ÒC:á¾g°óô	l	’ñ£:0¡“ŽÆª™ëÐa|(|Þ…}×Í2kX›Ù½'àîA¼)Ò'–xÐg–â¹'"Þñfþñþ]”±öÝaAp‡\bÍû¿µT 1Œ¼Èå|}äòúÀ£ˆJÅ—¨x(×¦'Šë,LÑ½ jdûaÆ8ø4¡Št(2ˆe82ÞŠ§™’œfQÉË”=iµÈ?û…6ko¯·=“P˜ð§(Ç‰EþÚ#xI3—KâäìÊJnt…Lc£<×‚Ph,Žq™Š`$ä±þ \T+LW¡Š
øE½„¸C“N9’¢žžô§š›€zš¥ˆ%0žR"dLq–&YzúñêóŠ;¿¿ÐÀ=k«Ý”Å:4QvÈÃIµúª¹G±!©A‹ô¤^WôY3/þ|1þ“ ºRÑ“/ÕoÝÿÅqQ×-Cy/¡JsÏD=ýºdW*dòsùfÞ¨Á¶ykäÍ&¼îC­AÈÚùÆuB!³#rý°;‡ë”‰øw(“8QV`çÒ..TøuðóCª VÃ¿¡CÞ+“ZàÁ/ƒ,Ø×â˜Ç­S•ùé4K“ŸÓok…~›°H‡šƒjmB,€«Àì×o¶zù®·ÝÛy¶û²^«CïŽãàKž®lŽ‰ÂÄ{Uêc-¸·†Goåjpl]‰í
œö7uù¥m¶É‡ÉÙòã_oO¾·¹ƒxœXmoÛ6þlþŠC‹Aqj»Í>&M€¢MPkÔÁ°!Z¢m®2©Š”wÝßÝ‘Ö‹ãuÝ•¥ãÝsoÏjVK5ÔÙÐ¸ƒ£¾8m_B\¾ùp.†x	S‹Á&ÊdpùëãL¯g¸”Kå
™ª”ÊW¥Á\•{(ê|Y¥øP	1ùýòêz2ž°VÖ|»R¥Sw"!À&x©•NÕÜWð†Ãš´åÐ*Õ3Þá‹)¿(åz8ÕF–›;Ñë^·Ã¡Ù¢AÈ§¯ÓÙ	÷tz8³eªZgÕRša©d&§¹"ñ÷­·¶òEåéÐRúÓ×³¥gøöNˆwç“·Ç×7ã«ËÚ7rïÂ–à*„+xsîÀ¡O„NÇ(Ö¸!µË%…ÿDQÚŠ8ÖÓ
k´jÅw$ÄÊÔÑ+d‰½*A; }ÒÛrÃ‡—rSJ£ÒÂtGR<!"Öõx/ñÇKÊÏ«þ Ð!ÙB:ÍmúöK›£þHŒg¬¾Ö¼•EH1ôú!é¦-y [xm1:NÔÐÑ:á]k‡ç=¬užC…÷¤Á8<6XkðÍbçÖ«­P½Âà€2ÔvÂZêPy)æce±RKa²ÄÃÆRíD ü+®JQEÔQ'fî:eÚ€5ŠÐ:…jek¹qˆ AeÚÌ:Nbf¹œ»“ý:1Érºá×X,sL:¯¶L«ÙÃ¾/µñ(ï-ªÊ°®	7×mÝ”¢î”ãc±·›ðyï£ò¥FðlvO	7@·)àt)ÁÍóÚÃ(Õ—J—h+µ[(ŽK.?vAÈiB³ xÛJ³Æ—6ÏQƒ«ŠÂ–Þµ`a-É¹Z"\Ìk!§:×~#zÔ¯/âÕ-N³«6¤Ñu<½}®û…ôY±S[c:kÃôL¦¥u®uÜ5¡¨Mb’"e…Ð©”óO!ý{.0a†cÖíô×X¤ïeºÕ±€3Fr+™SØ­É7´‘A_<åÊ¨5sŠ¤)°ÒŽ*øhôóÞ6¢qß¼Ím}Â/˜«6@eZèWDQ›Ô–¥J}¾¡˜L¹B›!@Ñ¹¦
dÙTSî0©ƒ½®;HôbûDo»EfÐ6›)Ó(O¨§FhWGÈVŒlgn¼±™ešûQ‘qlxølì]«<cö ó¡ù™å²jYˆÞ>¥š“T$¾&ÓH1õLUÒ¥ZcÚ·!•‘°†ïewöÈ›]û#v9Ì@ê£ÍÖè¹8 gv†i8Âa¡‰É¿·ìÎÕút®I¬‚RQ;S¸"
´•ºÍ“$8k¢‹ãI(ŽdWTµÌ¼lx«&2<³=þ”àõ’¦©ç¿½ùpýËyka9„÷Òu¸¶[©5ÇÇÊ£˜eÚ¹Í‰!\”$¹[DÓ±xÑ^$†â94RgÆvÅ^DˆLXqUí¼’H‹²5J»ÔÑ?#úîkØ™({ñw{Ä-ìzëM·O2 m.P:[´š¥23œúñÀ>Ý;¿'»ÚõƒV19ÅH7ÌP?%+\qcuÄ.Åd¥¼ÒdV9“xvÐmtH4õ¥iZSîxÝbâ¼	Dbü/^7|
g(qŒ†¾wdÚÜ	ÄØÓ"Ö)Ö7®Ÿ0•M)IÙ"Æñ¯‰Ó#EÃšfî¶€iØL±ãorŒ„AöZ)TD[MŠµ4Ì´PspYdÝÒðºØNcA½Ø¬;"Fÿ3BßXìžUÞsöB°Ø0Õ¡å²À¾$$;p¹ö™nD'«’FŽ@®?+šWDy¥¶ãh!]ÐGF´"Xi‹Òuø˜ ãW×"X¤G¿(m5_&]à·ÝCò-yä?‚eöúÁë#•I*=îò7årbÔ".0ETÑp½<„CèITG)¾â9vJ^eø•“kS=rNF‹³Ös,"m»°ÿñ)=£fÂ¢Ñæ€nd9OLpxˆ?V}ñ§èU¸XÎ‰Áùb½uú«²³ƒ€Œ1õïNDïÉS8Ä¿Sx*‡}Ôv"x; Â?˜Ü¼_Þ_Œ9¿¼-ü.Æð¾ßïã'hlî#:ÇÛûìà™q_ÃOÏóüñ“y6 Ï•3zØ?i	ážùT’PÔúêDüÕM€ÀÁøÕ-K_QÑÿ à€¤¥Z{%þœcÃ¹²xœ­VmoÛ6þ®_qð‡5)"ÙIÚ’ ^â´b;°Ü¢CÔ´t’¸J¤"Rvûí;R/‘×­ëP±#òîžç^I¿ ¾Í³â:Ã›].Ý<Éµ[b¸iÆ•NeywÓ³É0»þ
R­‹‹áp»Ýz‘×R~öd™u”¼¢¦:Ï†Å{‹K¦Þ­%}øèßƒ¯wªQ+Ø(Á
•J—z‹¬bO ^w®Ã-Óäúètx>žÎÎ[ÉŒ‰Še0ÿ0ÃfÑŠ|Y•!Ö¢zïž‰¤b	íMD’q•šmÇ[½ƒ)MwºÜÙÛÙ*p—“›œÒç™t`õ°ù×Ð,¶û£Ey	·s dŽPÈR³5Ï¸ÞÒUéÏ},JS¶u•(/Â5gÂ6ÅëÑ›Ÿßœ÷5(ÙZy‰¨¬œ•aÊ7X7MRÊ8¦ôŽ~qGgÃ\%£ÑèôÜ3²CyÊqä%àE
ÆO±'ÇÃ¬n­v÷ÅA©PC„1«2±,s¦5É)"®Ø:£ÁÜ)
¦¹Ž'Ò=Ùï•Ò<æ¡•Â‹ÌhüB_2Œ5ä¬L¸ )²Ý±ã±²ƒ¦a6žÎáf1_Mæ+ðWãåÊ‡w“å^ŠÆ7Ó;žMÎW.L‡3¨4õ9
K‘ZB™çLDµ¹ÿÛ|ñàO}eUPc'ˆ§¸,\`ñ‚x	—nxˆ×ð¸+XŽª`!.®.çïg×ðÑ
°ïŸøÖc!r©z†êÿöìòï·‹˜fW—wÓûImA½ø^ÛÀÍPô¨³–Ú‹yÏÛ‰³œ>¬¦‹yÒ;Y‚N±>¥ëBBe'À•ªPYé·K[®S«Wâ™hŒ¨y;mY˜ëÆ¶y.Áü£Tš‘€‚•T<¥1PÇÁO¬R®È!K’˜û‹Ô¸ •˜*E)7<"VgóÙ²22ÎÜœÒLÀí3›V"°ÈXé”ÑÔJˆ›˜Dp>i`[£&c°šçvÉé’¤la&…qq¬@UazR#Ñë<mód‰"IIÒ¼P.vÆn<b!†2¢³ÈÆÑ¥Cï
² RSbJ±Í}ÔeeË³Ì$2÷’õÓª2ãCŠ_ ªòâsÍ+wdZwÃÂ6‚®‡§ø—ùq¼¥¯œ÷
-G—õNx]#mb6nNco«bå{FœÙ[g2üÜv¡kP)lQz¸`sL™ó’Ü¾}ÍòÜJ¤oº“—B™4Q·CV‡ÝÁ&Ü;NÇ5qlK®±KajAÙøV‰¦`&À}­6’¶µÏÆ=¥)Ó¬²ÒE¥i]"Ë÷ýËúUùÛ”7..÷èÖô{„&¥D§= ¼”Kè#ô†{Ñ$9IïæŠÜ÷Hí©«ÿDò¿íÑo~âÕÇÑ£¦n0G|à†wþ£’Vr°[xœ}TQkÛ0~¶~Å½¥…8c¯¥)”-Ã’”¦”ÒÅ:Ûb–äIr²À~üNrì8k¨I‚œûî»û>¤w
SiRU*ŸZÌwW_¯ÙüÂÃØê~¹`)=LÿŸ)d_Ö°äš—¨P{xÂå!7Jq-Û¼®Ö›l"ËÛ­Ãw6	t0¦›À­ÀÌñÞÒTs…®á9•óÛÕËòþBª!.ßY’$B*ãN wpŠ«qÁ=Ÿß>d?" [À¤5êSÝ3±ï‹Í·§ìñ9[¯Aêƒ±à+„ÕÏ%B'J²GOA:×¢‹ÑÏ-„½ôUÀ1‹¿)Å£ uB›-÷Òh¸RæBÂÅ¨k0—…Ì¡á–Œõh%¸ë<WÒQ;±•5ZIM€‚¼‡ÆšT³ -ôÝs+BkÑne-ý¸{6ÔrÀ-!ËWÜÓÑQI•©’žxàû€1Ä0‚—*¾Jï…µi‚€Ü;pm^M;úð¡ÉÞ XCrS›° ¡¼Íðšør#¤.£„Áh(ƒJ†Û™.Žvìe]ƒÑõ±]ÈãPá­j¦@Œ[©¹=Ì[Ç&õ³zsÃ.M3ý¼8ŒÔƒËdgyˆ…Î +¢Ä=c‘œå ²­Mþ«¹¨f‹Ð:ìHF¤]¥Y,ñdÐé8{Ú5ØOMÀ‡A”–¸ÎJ9:GAÝƒ¬Iž½•‹;iÂLì¥ÕÇ-	zÎ1Ç¾YÒûÊÄ~œ§ÞÃ(šÖ7­§w‹\…†ê‘éçg6´ôtV`ÛI"Dé+ÊU£\e†—dt:×Ã‰¢NhM{Ëº³T7ÿ<wóá4£kâxÓ>rš9ÚÊxãæµdÿ ¿Ô»ê„xœ5ŒAjÂPE	Átä´tp`,:ê°SE¥(Ï¼ýÿ~øùF²7ÐTÜF·Ðµ´ù‚£çÎ÷Ão6ÖÖJn\n·6ä(Ç³Ç¸È±x^â”¶bE>âû9Oã{9“4‚ëWò’¼ÖÞµ†¤]V8mEh!¨É“• ¾Apè-Þ÷4ì£ä»^è*G|]ž’7/Äw‚Ò;;Å¢Ä^›Z
Sá	˜á`ª
ÁÍ^,f£&2y†ÑÓO:®n¥Ó_zùÃlSl¶Oxœ•TËnÛ0<—_±@J+i®nÀm}0à¢ hø@É+[­Dª$åT@?¾CJvc×—êÂÇrwf‡C©]Åq™ÊØ:é—zsq{)îÏ~BÌG³±ˆñ	õo"Å”°ZÓôãˆ’°KSì.å†ÉðÏ†­Ãè£,FÛ”Ž$Ž#SˆäÛ|±L&I( žwl,¯Dä‘è)¢»5ïŠŒè9ŽdúM±Yù…n\Ý¸8×¦’îþ.¯Üƒj
Ó•ŸÇÉ§ÇÉòi²˜À<Þ#;SðŽ-¹-ÓüËŒÏ6’]vw #º¨Þk¶Âgw]òš¬3M†9_ñ„Àv-¬Ø±¡ÂR…ÒiÓ†J•l)eâ•Ì_2Ù)2DzÁ¿†tƒÅWèýå€´!I
um-q -uöƒÎŸV·— ´Pd›,cktÄû\ç‡^ö÷§E¡H+&“…€F–ô"[äv(ÔÑP^×®À4/åÆ~;G5D± OÛƒ¢ˆÔ«[(‡$påZ¦%î"\²o;—/”6y…z‚û,§´†3|êé ì¾>¢Øëlq0¡ˆÍp(‚Á0¾C¤' hd[•mVw¬’ƒÇ£‡uêÄCˆð%ìzÅkmœ×¨ol"å§e4 è»Õ*
¥…’¦®CúB•m§y Ù'gà†¾¯"–’\Qù¾Æ_G³åtüêu½£¥'p8¹ìÚ_vºãqª÷P\½~8±xKgžè+¯Ÿ¾ O¶ú¥³DÇp¾Õáüóöé¾6ÞJÿ‡ZJã¼'=Lø[A¿Žÿ Y\›y¿HxœuT[kÛ0~¶~ÅysqÚŒÁ $…Ðx%Ð\¨Ë.„<¨öI¢Í–<I6ìÇïHöÜ,Éôbù\¿óÏ–uQ.ŒPf{]Þ{lry[N1‹è0y–$tƒå—Â<CiÅî±Ì*ÍeŠð¨UUÂ%ôA£­´¤‡©rœ²ŒÕUJFd,ù¾\­“yâÛøV›µÁ-]O8éÂ8ÃZ¤x›¨µE"›Œ»ë=ü†HÀ‰aË‚ ØD
Æ»Âzw¤*[V6Ú)]p;ñö-ƒö°Yœ<<Ï×/óÕ²ƒäP}Vì›°5Ê>jgh.yHUQ¸9©`ÇÉÞsâbÎYjUS†ñeOÈièÂ–Œ½PL7}É5/Ð¢aÀ5âVé£O.ø^PPÑÀéRRÊ`-ô|Á-½Ü:–ïz} ¨$Õ5%§€×\¥?áz´öl*¯®Ôèj|èß}ütÓjEÐŽAH&dª‘!÷ k&êH•´\Hçä—ÝÞ+³ÈÝpö@qŽó_ÏG@Íó
Á”˜ºàŒºzóÃìëp8ˆ—³ÇùÈ‘gDóÊ/¾#ûWL£ûîÈ<£ÕkôÕ;)\[ÿûféÆµuîZ}yMy9žg
Ð+Ù+·As.æÎ$h[e•ªkANGK(Ý5Wá£d8€•Ì $BS’mxJ”’¢*CÔÑ++
§ÈøÛt±~ŠO>Ü¥|ãE™“¦h)†´×þ?Ö4¦“†Cäÿ%TOƒ©„Eö* ‚?±jxœ•UmOÛ0þ\ÿŠ“ö!°5¼ì#j‘ë¤NÐVM›P&½Ro‰ÙN¡Ó~üîì4ÄË—¦ö½<÷Üs½.1U‹T»Ã]1ì>BLNÎG"¥Gh6+”ód)d¨0ùzŽ0^ öj¹3º„‰,ÑU2G×‹¾¶š~\]xäà¼­s:D!²ï“é,g!zÈpµFëp.NMª\«á*Mõ6:´S‹cø©†ø>½^Ìr§†ƒÜ”%å¼vè¯UÄ¨ÐûüívAÊ9g5µ¯jŸ.-¥–¥Q„×¹ŸFÙéÅxv9žNÚr¸¢ÏÆ‚_aä)–wjºŽøsÄ	¨-}" 4ÐÖh|\Y³&[v($c‡Û=!.É¦å­’–Ây´ p
éÝçRnàí@ÍWä’“‡h@ïàÃìÓŸ}îÍÁn¤ìÀ¼-Lþ^¶Ö‡»{b¼á—Ö+}×qU:Üp¡ ‹{¹qéN‘Êî	@­t¡nq“<Õ@r¦òÊh.-0Þ€!!YâŠˆ˜jpuNj$9r–Ç´ÒZ*žÜ*«´ÇÈ;Ê|E€øèaQñ¹°–…Š5´º•®hxt$^)÷.Ð[…k8Ú®‡²ÛÖ=òjgËXU“øå†Ô¯	Ÿ1„.PÍTM-gaRÿM:gr%‰+Ñká¹
sŽ¿€ñþ´Õ0¥f´2€¢YzsýÜž½–C×èCô\}ë6ÎcÙ‡ûÁJï©a”›¼”&ÅR5œ—'3kdåùü¶W@O†¾©ÊDêã=)ÑüZ$AîÉgt²œ¦ºØ€Ñ1ôÖ%§y¦qªA¢¿¼*ÐèÛÉùìlÔÙuïaÆ²{ªIÖ"Òbñà—á©î0ÊL|É¦“&›øÐÝ5©xÝ½Ù™?Þwi—ñÆâžº½
-8m€dHdæ¡<KMq›¯ËŒd&îˆð¥!-®ò(þ ¯0E´xxœÅUßoÚ0~®ÿŠ{`Ó"¡O¨ ¡¤6Ð¥ª614r@¦ÄF¶aCÿûÎNÉÂMMk"Çw÷ÝwßŽXgè¥‰6ž^MôF¿öß°öñÅXØ½ë1.&BÀƒ[zž¦>Þ!äÛ3ÍXô9£~äB]øhJã˜U-”pª0ò$ÜÌ2ÓŸàyre–+ãÍ¤Ê¸i»ý1ÜÄ¸N¦ØaìC/zÿ±?|èÂÜâGS.À,ˆÆFÏ4…„a©AïÇR¡Ö%†ÀE
ÍJåAS)Œ’iJ™2©qÏ_Ãw¤JéWK*`‰Ê$…DäT)€Oˆ½Ìê¬?9mH4Ì“5Š,UB1ÖKŠtãr¯yºByÚ}*–e‰DŠ<NÄŒtž9x±“£›9=©N«ÅŽ%-LW:º$ÅRÚ‚æmŠª°Ë´
D¬úMKQ­ÃÀ’–!‡dWÏîVü	ÂJcôÊÁ$™eÖûÔ½ÞöNÌ’Ò¼#•Í+8œˆ|ÔòuƒÆ,¼Û´5ójÃ¾0xë¹˜¨8£TŠÇ±jûu{7kFéõ4‰Û××A£f|Ýsð‹pÿ’ð LÎ?$”Ø—ÁïÂ›—wŽ¾@óaûÉž@%*æ«-ÑÀ“{’1äÚíJ¹%•Za¾wÖ\€Š³lkû(Cn%ô²í8Ëoxg{P\h;œÎÁj²oïRõôßvÖ¿«Ràlkgóÿ± Dìy5>©ë©îøèNðÚ¼„
ç´§ùs³ßfW[úh>î>šC®è¤Ÿ¹3Ö5‰NHEGzbý=Œ%¶â£^xœ=ÁJÃ@†)ˆ}½Ì­ MÀko¢‹-^Ëv3ivwÂÎ&%§^=ú<âSø$¾€›œÓÏ|ðóß_—Ÿ7Ãíõ°É†á³ŸSÚ-—"M;ô{bŒ9Éò(!ÔÚUä­š\ÌÓ‹ÚÐ´a\ÓQ»¸Î"p»çžZ^ˆD‘žŒAÏ ]	NZäF*d`l¤—M?‘úDÇ±´Ÿ{&’JU‹„"ñ™«â={-^VÅ6Ný?±¾ÏwùÃf·¾Û>A
­1ÐÈPUÐ(é’¡Òf´ 5MSµ&n¢™»*A‡‰“µÑÑšd9çßÙó2Ti	¼]xœ}TmkÛ0þlýŠûÖê±}-I¡kSfHS7c£”¡ÈçXÌ‘Œ,'íØßI¶œ¤íjˆsò½<žÓIí¶WZüÎõ^¾ŒÙôÕÃØâênÆbz˜:†2T9p‹ïwóð]èí–“Ãj¨.åZZÐxUé=ØŸQ´VjºÑŒe?Ë4K2åáwh|bg'¸g0Éq'^ÂcëBN'ôº„¿kðæ‹¢ˆ|²Ó	½¼¯ o_mÊµNüŸ÷×Ð/BD#êé„^ÞÛ€7ƒ¯me>¬VÉÍ¯DåøìcVpüå‰±›Yv}Ÿ¤Ér1lÊíë¡|G-Ù@Û WMhe®¼V×½Ûýn‘ÛÖr™à5_ËJÚØ—R”.³Ši|rßKÝw€+N÷“&P0kj²D!P¢”m€måfƒVªpè³DˆbIŽÊº:æcK¿ù¡¥ì¨_,ô‹ÌhY£ƒ»<-o“q@ê·6pòˆ*‹®o«€fë_$ºF /UNdŒ#×G.QMÁI¸Q²¸w‡z#‚àEÂ9(çANNžNžƒJÃÄŒÒûo_ÆàìÃÖ÷%–ùÿl…qŠN„t94þ=ºÃ8ªý8¢v£ì:z¼né¡lÓ/ø¨ÁG-x3Yöt²º[‚_Ò5”í¾-4´cRˆƒÒ*þƒFÃŽW-ž;"Ê³ñk¢Æ¢ÓÌ®‘®,Ñæàad—âí¹l¨tÉí0¯ýQ$‹Þ°rÓMöçòÜSP:”vPŽqè‰0ûqu—ÎgGáBÓ¸òm]‘¶/h)†nÜþNN¹±AcO+êi+-þÏ»êß¼3xœ’AOã0…ïó+Fâ ]HY¤å²b‘ªÒC¥m„ŠÐgºµˆí¬í¤Û¿ã¤t“Â—ÄÖø{oÞØ´š­¤³&‘	—ÔRQBÎYç/n&ðããÎVHxùˆ…	Îã™Gi#DQfó%ŽÅv‹¿UKWKj•$€ü%]gù2ï;Ñ×–œ§_pÕ±WÇú ~trŽw=îàa‘Ï—ÙÓrž‘ú´SÑ¨ÖÂ”=mì;¢ß½n­Ã°#ô5IµUTŽMOitÒÄZ8¡)C–ˆ|¬;`Òâ€sãzfú¼";¾"ãžô÷;^óæ:6ýur…lA a®¯••oÃjø_mn&S„¾Ã½ª*´¦:àÞº7þ[÷§/ÏCÛ’*4.8p¼ý¶ÙL1oêÚºÐE`hïåÇFDYr¾)<ýiÈ„êÀa¬»´O„Ôìb3[e?ƒÁ~ÁG
NQË)ÌÒôAåƒ’•aAÍ[kàr8·ÎðÓï` Œ!À±ßt&¸=î>£{ßç9øF‚ú
·Lxœ}T]oÛ0|×¯ °‡&[œ¶Ãö° -Plé ù@SŠbPl¦jKž(;Mý(Yq’^bGGy<Z×&…J­Ñ‰Ò­–y’›§ÎyW\¾{„˜\‡"á#ô; ;tVa0×a­R<!Øá€qRg@’aÎÀ“ªQÃ«*a¥rì1ÿ=™Îæ£y „5ZÂGqâ™¡a†šŽÈOà¢!»‚‡$)eú,Ÿðòâft;¼êARBóø(ÄáüûÝhv?šNZ
Ïrc,¸5Æ‚&¿ÆËï¡Î(\Æ¾‘1œJLÕJ¥©)
 l”BÔÒ*SQÓyGiX*-íVÆÒuƒXZ$ÂÀR´áÌŽ³î×H¸+¤Òêo…E*™9…Ì·¯²Qn½«ûÓµV)Ïª²4ÖCYøR¿mˆ¶-ET!	Ïµ—·”VÈÊó5øv¥3ÜŽ/¹[OÌˆ˜^F‘®9$õQ§¾à”_NýDÏº=ð€æ¼Ä£CXæ&}>D‹=ZŸwûàkbúÊs0:ßÂÆØg~:6µ¿f…É0]Kv|û|vjþúe±èÃ¼‘Cx%4nÚ¸Ø‘Ì2V’ª%!ë¬]¾í³×©Êµâ™Ðt¬YZä¡d¸R36õ4ø­õ´HòhÈÁ@¼µ+ÿñxE|í^J?vè„iö½ðÅ¡&et×Û­Y§õÎ³Á
B×ãÙíð`—>ÂOt—ƒ[VÖ‡q{çqÒfÕþx`ç<ñépkñþ³•C†}›oÒŠã„l™ø¡™I6hì>|t*b…©RÅ?Ý“~°xxœÅUÛnÓ@}ß¯•‡¶§—7BZ©€‘"å¦¦ P©ÐÆ'«Ú»f×ŽÉß3»ëØî…V¨ø%vv.çœ9cËM†A&"­d`0Å¨bUÉTñøàä=w16½˜„, ‹É'ËA sÔ‰Ò™æ¡³Šk„&¬XóxšªÊ@iP³BÕñP­E´nS–Br½:/ó˜TLix{z|1nD„¦Wka@ãÏRh4«
5DÛ(E¦d„Ôw¹‘ÊòJblñm:›/FGËQ»Þ 6xÃö-Gðá!Ç}úÖçpIu6ü4‡ç=ð·7öÀ'ž“”¯ì¡{ÃØÇpñár4¿Í¦MwÀ!Œ—±•Åì@lPÆDÛä‰DDà ÖÆjÓ»"¤²UOd|…6€D`u:Æ]ý:ÊzÄtL­h6¤¤.„’Tr¯bÅVˆœkž‘°ˆEÅES³<2¾…%
‚ Ý0¦_&È¢5¥D6£Æq€¿pDG–ÝñaÏÁ IuMÎ)`™ªè¶ÍÚhyrè1QûJv%Ó-TJßÒL¼Šµaš_¢•©Se¶Dïª>,ÊÜw>“Xí¢YÍƒÇ1)dÊ¥!Ã¡,Òm.Ñ”ia\
—[PŽjÔŠVÊ!1&ßÍÜÜÛ±Æ5ƒëØ‰ž ¾¬¬ÕîÞdA.o¬å*Üñ]§Š}ö{·æª]>!W°áiIôva0›½üNy_×˜þ®Ç)Z}—{mbÎKDÌµÊžÉ½ÿœÛ³Í{+ì½c,üz1™ÃÎ¿†ÏÞÎ"foº°Wðô²w	n:»B?èÅÚÔëïJµåÈÃwàý24È—‘!6¶ÆãL:3ýgŒÈ^/fdkÜÁÆè=Vçœ^õ†º¤ý¦ÑKBÈ~ô¯mv»axäùnvme-micron-smart-add-log(1)
============================

NAME
----
nvme-micron-smart-add-log - Retrieves NAND statistics (2200 model drives)
or Extended SMART information (OCP complaint models) of given micron device

SYNOPSIS
--------
[verse]
'nvme micron vs-smart-add-log' <device>  -f <json|normal>

DESCRIPTION
-----------
This command prints NAND information (Total bytes written, Bad block count and 
Erase failures etc) for the given micron device if its of 2200 model controller.
For OCP complaint controllers this command print extended SMART health data
along with NAND information (if available)

The <device> parameter is mandatory and may be either the NVMe
character device (ex: /dev/nvme0), or a namespace block device (ex:
/dev/nvme0n1). 

The '-f' option controls the displayed output data format based on the option
value. If the option value is 'json' (which is enabled by default), output data
is printed in JSON format. If option value is 'normal' the output is displayed
in non-JSON format.

This will only work on Micron devices devices of model numbers 54XX and OCP
complaint controllers. Support for new devices may be added subsequently.

OPTIONS
-------
-f <json|normal> controls the format of displayed output.


EXAMPLES
--------
* Retrieve NAND/extended SMART data and display in json format
+
------------
# nvme micron vs-nand-stats /dev/nvme0

* Retrieve NAND/extended SMART data and display in non-json format
+
------------
# nvme micron vs-nand-stats /dev/nvme0 -f normal

------------

NVME
----
Part of the nvme-user suite
~Èþï˜sxœu;Â0D•)BIIŠ-( )H”Ä0Î\xÙ·œ!Ê	8”\…KPRÂ¯}3sŽ.QB^cª•´†RF] \ZL®’~5ë->e)¬­BZWP”«+C`rØ*º:L»Þ}Ó¯“}añÆ@]§ß,‚2 RoÐ>R„ä&'n’3Ö¡AïðÕä92ôJâ8Ž×Ç<˜Ög}
G¿ºÖ·pyscåäAxœ;"ü™C$¯,7UHèf¦è&—åhjrM”SqFRÐUNÍKQðóMUðLIÍ+ÉL«TpÎÏ+)ÊÏÉI-ÒQ(J-)-Ê)PHÎÏÍM*.N-™X¯c†dŒº‚MJjYfrªB´n¾‚MZn‰B‚®n~iIAi‰nZ~Qnb‰-H|òFÇ4ÓÔ‹2av'Ãíæ‚© á‚¢ü2 šb…’ŒT ›ŠKsJÀâç¥))*M²S7÷212
rqù„xúûséBÀä¥ìOx¡j“JÓÒR‹&ÏæC} ôAf0YÓP—K¦¸”@r
8tLâ4 zü~/íÙDxœÛ/6Ÿ#¯,7UHLdÑ¨+Êb9jx†ù*8ççæ&æ¥(§–(¤&g¦e&sù%æ¦$&§*¤$–$*—•&—”¥*¤åÁT¥¦(ø89‚DrK&N1š©›™¢›W¬›“”¨?gÍÈ9™—qr½gJj^IfZ¥‚KðZZ’‘Š°˜a±Bf^Jj\	ÃSS
Á*œƒ=€9)›Ã˜–3nþÇlÇÄrùd>¥Éql±0Ž´¶‚n¦‚‚n¾BRf^bQ¥‚P*>3%>¯X¯(±œKÄOU€ªW¬À.Î‹¢b2·) ~¦á5ÛBxœRO/AŠtœ8ˆyáàï —¦DÂ¥¤i/‚¬·L´³53[$’|‚fÝ}ˆžœœ|_À§ð¦«K…Hl6›7¿oæ=M>ŒO¨f9}¸\™…Ü"kÃìAZ eTJÕ}„¢@eepãV°Öëí”Ñ‚i /éCÉ«£ix>‚ð¬ÆêÈ·‘ÆöýFÆi¶Ÿ·!{È¹êáÈe³PªìoÁ-pî7Þ¨¶þoA¨Ážc‰‚•ÊÅÝ´ü‹ 
ªØ)a˜
5Ñ©ž´’T[ù<û)7•³ƒ]fC‡M)H)…©±Ÿ˜®B1 Ú½âvY¶]Êi-ô[ °)©~%k58Eˆ&*_TAzMDÝfm9(îè=öJ’ÐÓdcQ;¼ÆËHjÒbŒW EtãR	¼NzýXÇ/C«ÇÌD:k¤¹æ&g]åùù°eÆ–\´ÈHu–<'OßY~´AÇ6Qk)äkÛy¢÷©Í3ÄØïwvã’ëG|ö'¾Ýh.>9šüY,~™ùmkzô-ž›ÜÍ¤¸XxœT[oÚ0~žÅ‘öPØ0-ÓžÐV	Qª!µ€FÛmªú`œ°ìÌ(Ò~üŽM’Òjmç—$Îñw³õfÜÈ’Ë…åù–éÕFxä+å¼±»V¯Í¾þÏ`l2¸1Nƒé7aÃ0þ¿B˜gp®ìz+,Âu™Q|«ê.Ì’±ù¯Ét6Ïzb¸Ý uxÇŽ"¼Hu_2Ü(‰§pË¹6<•ÁàúôŽ±³Ñ|ø}<»O'z$87{m“›K„ýzXªêN%üÑ]Æ®hyC]
+ÖèÑ‚r°šêc%½Ð×¨ˆï€T®h‰¤¬¢oáCŽéã8š>iI\FÞÃ¿t¯T¡4ëÈ	[â mÀ”^"Ë0ëÐlQ€'5Þ€Þ¬…WRÅŽ€=J5±Æ€“'•hEÙ{.H‰Îå!"Æ\¨–ä÷S¹©-9ª-Kc½ÒK¸¾ŸÅpƒ:£Ç¼D©r%a¬i6j"Å­M¯û9”¹í°¸Ÿº'`ñwP–@ëšE»qk2¿2CøšêÅÑâcJdå™ê]«äüñUA’ÿÒš¢8)òÈq{„[s·H.°ÑÖ~¨²A@?V¨_åêP±…w)·šêSÚt|Ê©¶mÐæJ'ÉS]o(O¨>Xíà¤h-AK“Q—Åó¹Uc}ê˜¦!×ý>k¤Òû»³}Î¯«´ãŠT<$ýþð¤¶êT#–˜"k’­¬´ý\Î.F×Ã‡}“º§]:Øß1ÄƒN­¸ë.ï³‡gïáí;æ ëž.f´Õ¥8”{Õ:é‚ŽÚÝå±ûB÷ÏÊ¸xœV]oêF}ß_1R½Ø7¨÷¾¤I¤è†JHù@õCWQµ¶¼½Æëî®!Týñ÷ÌÚ“U*`{gÎÌœ93¦RÖiçUé#µáïÂ¬ÎÆCquú#ÄÃÍýDDøˆr³VQuÂŸ"š«2£‡_ï(Tr¥Èª¿kåüHXåk[:<puáIÂFBÌÿxxœÍ§ó.„üºšzŽM§bè2SªkúE2õÚ”W—Íï5ýK‘¤ýÝ³ ÞÖp
óö"ØÔÝ¾q°r%º”vÇ–É›sSûªöÑÒØµôW—Ëµ†Âå³·“ù—§él1}|èŠä:Ÿ”·59ò¹ú/—Ö¬AZcÖ/˜ÃÊšÎZŒ†c•‘ó¶Nq­b!8èèª¤•kå•%íh é
c¤µÜQ¢Hi ÙCJi—¢Á 3õrAqó‘ûs>‘±$©®«$’Â¤ßè´u9"¥Ç’\¦Ê¹ÑqÞ'ëïŠÙ§¸7º$S*2Kr0·² ­Ü9„® L]®pðMÅZ e!WîçðäS€‡èÉ.œÒX¢†^]z!’D\™É¤@3B¯¹î½ÜRR/— ¨Mpïåe{ Ïj÷ø8™ ŽnDOÀâÄñŒÅ÷[®‘ŒGÿ e[5!%´–ykŒCŠ©)½5Eè.—EA^~S#«-…œ¸|ü{è$˜š5+&¦EÞO€YjUd#J$óØÝÈ¢VÐ™«™@º÷
éˆ·ÒËMœ¡Úåä²T/Ín82d¦ŸT¡€Þ¥“¦µéßÛ¤¼Ô…ƒ"‚€iòRaå8ÇŸh^©4ÆÚjˆù?ÅãxüÍºjÄ$HƒŸñ×4Ã­F…–Îoó¡ýuÚóf§´º)0
Òc:e«Öêaó$;>sújnw¥-  y×ZõtÏjl»ÚèXµkø¨C ÌûÑ¬Ç4í§°Ò(–ÎC
­fø~ Ð·­†`Xû!èÂxÌór§Ê•ÏÏwwC.+Œt9GI å°9[>f<ÝÌœö–¦nrWi˜¸†í×·;âsÕP•±žõÜ+%_ƒþr¦„Í5h2ÄÁý±,vÍN	AöÎ,64 fuãV’×k.tòûÍýìnÒ{yýØ+òýmÖI^£)¯—Ê…øÐIDâz÷5ØÛ«Ç>ÄQï’N$F·Pÿ3*½¯{æÂ0ÆÙë¼¦žµ…m“ æd…÷—ä\°AG¦-t¿8·9äYÓÚdL<äÞþA™Ië÷òVÐ$l¹Z{%¾Û3ðî6†sxœ’ÍjAÇ‰Ñý5
’“ÔméÁ&Ä=ÆxØŒxPDz¦k7³3“îž	Bnæ¼ô3ø}O¾go<XÝ‹‰›`Ö:õÔÇ~ÿ®þ¹ö¥w§h&(*Š2+ÓE.g=˜=¼ûd!gE^ŽAÀ
öÏKÀ%,²)T¨aïõÎªazy¶Û
Êp o…à¿´‚ÔÓíùñ=©| AðWâ]Ôív¹[Ëc‘R!õÔ·¤!íÞ¬¼¸w5ˆû¼òcpu‹oËX]g¶ÖMäRüU ÷íÚf/:«ƒ¯;XÝ¼ÙCn“ÇÖ£Ë9Z}~² ¿µýÃ'W€ã%ZMØ x©ÿÁ•:ôŽ©Áæz@*j¯éÄ€Ôãz‚§³JÚ’/@Ö€©³	.V~•e$ç«é› e¬´d,el	•.Rž’5=ÆcKí‡¬¤œe§ûu}íYP8ÀÌK?Ž“8‰“G1óù‘¬s{Žîõkƒž69³X\ÞZÝ}MìåÏU/Ùö§ÖNB¸ï­õ¢?@ýØ=hï-{8Ûƒ›OØ}m'Ë†nwî_ÚíÀàÕuN6ú).ç0‚Nxœ…RÁjSA%y!ƒT7­„ž®bm&¦Úvb BÁE-AÅ…RÃä½›Éƒ¼yqÞ¼`Dpçþ1øî~€?àFü?Á™´]´%u6Ãœ{îÜsî½?n}»½¡f	ñ©¦ˆO„á4#e¸’ORyog‹›ëE»Zì¯÷¯ÆÁñ‚T„¾ËŽC#†Â‘0¤Â9=Rj’ÂQ*Y_H‚¦w9e¦‰âK÷íÕ?èF4‹Cêá÷ wASö¸ëƒ³GÁ	 V«Õ\Žä£ú¶^Ò{×ÂBÐH§	„bÇ¯žNkÃ~/ýÞþ¯•Ìè<4¹öü•G%fÿ®¬•`ƒòƒ:‹„ó*¢EWF©N„AªaËÛŽù¡Ül^Òßé°å†íÏòæu‚0uƒˆ•Ä9ÿî¯ŸvZx9&$â}œä	TžI#ÁÏîŒˆ,ŸNSm(Bœáa{w—Á'f|Þc\/ô¹æº»öœŒð²¹
Ç:Uiž
óä¡'Û ²ug‰fû¤rh‹J{a¬„ž7Z¾®ýUy]_jÓ>z«WÆAwi?ÁýËôµêÆM¿ì<Ð©~þ}.Úîxœû!¸–‹?¯,7U·(µ¸L7/¿$3m¢€ÜD}Ac„€nN~º‚®Bpj^Š‚_˜oªBPjqjQYbIf~ž‚HEf2˜3±PXF+(J-)-Ê›Øm(j¬º‚MJjYfrªÝäHFwY¼¦OÞÉ(Ëª˜—Â5ù6ã9s\Ê@®-.)*MZ™ª›X©”Êq@jŠÂäLÎ¬\ ÑÉ
Ì“&ïgÓaƒ8qòs6	.Tg«'eæ%UªëMÖdw1tO-Q(ÉÀí@°Í@÷)eæ•(d–LžÀnÌ…ððäËì:¢ù¥%¥@É<…¬b –´ü¢ÜÄ’ÉŠzh®}PÔ(èæƒsé"É84 “Ò¼8xœSËnÛ0¼ïW,Ðƒã“æjØ‚D-Ä²¹E‹ ZZÙD(R )¹úû®VS Ì¹;3û¤iJžäAÅIÈ,¨¦{•Öµxu;‡Õe ¹_G ø€¹@Zà3§¨!L$6drëÐW”©Beð`MpVkr"6*(Æä¸#M%3[T÷ÊH×¤¿“Í6Ó>|ŸÂKCÎÓ+Ìº\ÐŸ#|œË2§Fet‡/›í.Þ$éëà1Jžãþ=ÉvÊ;fafËRšOJk´F·x²îoS1ƒ¤G_W•uA™†ŽYµ£kÄÄLµü !3g½ÇÎQ9›×YÀB–J+ò×ÀÁ	gçtgXÊ÷„¤Â‘JƒÉÏ5av”ŽkdË Ä+ú³À~ÜtÝø:GÛû1á^Ûìí ¹sÌ±'ç&€0¸L~¬ï6Y’¯dFBå«³ÇóH^9žÙ.¿ÅOÑÀÎë²…Ò´šŒ—]Ø¹ ¢_÷ëíSônºß)p7?ÝüpsÂ´9Ú°`|'1rØ?ô€ïÇý/Ù =ûŸ<ñSl¥h‹>hÿAjÏòµ
²3 éä‚AxœUŽ±jBAEÑÀZD»©,kz1¤PX$í¸Îó¬oÃî¸!•?`óðSò)ý¢¨Ï(Þj†Ë½÷ìÕF×¤á
…´±„>¯òA%Ÿµ+—·5Ò0: )AÂ~ý…ž pDa—AÊAœÿ†Äy@Xq¤æE',)²¡nþûtíû©•žKÛ ´©×SpQø$Ã	S8.¡œçŒËÄ;kÉCHÑZ8EÎŠx^l„ºJ?†Ó·Éx~¬,¤nÀ/ï0¼¡¾þ£6]aßÑîË+æ~Zîÿx®`Öå€_xœ»Äv“M/¯,7U·851=±$U79'5±H· 9ÈÌ/*JM.ILÊIÕM-*Ê/*Ö0Ôäšh¨6Ñ}b¸¼-E
º
Î C‚!F*8{¦*€åŠKK2‹K2“‹'ž5PÆe@´MJjYfrª]¬ÂdIFÕÉ¶Œ½R‰E‰¹©%©E
™Å
¹‰y)‰%ùE•
@Æä“ŒŒ:“™D­¬¸tu‹ËR(žÂdjÃÅåáèàãT\`W+”dàp¢BZQ~.Pzò%&]qn,Äì  ëøm®´!xœ•‘ÁŠÂ0†ïó{¨{È‚àA´,…5	FDY<”:Õ€&¥IëëkR[ÜÃBÓÀüóÿ0¦½s”ŸrO¬¸ØæÈ”Z²êÒœ´a-ÕN[ƒ“é'ÌÆ Ÿ¯R`3Êž¡:Û›C±¨:1v’Äa/Ò¦´õ5÷¡P{.¤ÊTÄDÔoÒ’ÀÄ'ÿc& ËT-Ö™Üd‚.Áèí,"zQ€[U˜9€t7_ÉŸô%ç7yôgŠ€Îx°µeœ¸Š
]êã%GjuA_ðš‘ÁŽ:óïðmÿ™×¾çÅ'5ŽjtöwÇ›£ºFxœ}TMoÛ0½ëWØ!ÉÁisÚÅl'¨³aCQŠMÇBeÉè¤ù÷£dç£ÛZ]lIäÓãã“Ì®ÆÄ£ÜJÂd‹”TÖSB¨q8‰Û†éýb&Â¼	<"9…;„¬€¯asn)ž°æ°šc Œ@E:¨ð5)Úºa¥l5À:Ø(#9¬´®–$Dö+]®²y9DO;tŸÅ ‚ž¼%tSàNåxOËÕz¾L³ç³ìóã<ÎOhp]){¥5X£°·î…ÿN•tP|Û4Ö‘2[ Q¢¤Öá µRk‘Ûº–¦ð„Ìõ>l@ãlÑæ¥¬•VèÇ‚Ei ‘N²>¬
#I–Uàž`ƒÐ‹&¤?yÅyHè0`ˆ¯S¸âÉUÐå:j)Mìl´Í_Þ	4“Óée:ê"7é÷ÅÝtÊK†©ùFæ˜¨âö¸ý(Ð+Ç>	‘¨‹dm·¿}ƒ¹*UþOò„­“[CÎjÍ¥ø*¨•Ë&’$8lz4½îÈþá¢Ôà)tÇ–qõDR\!Å…w[±+AXîwÒc1>1¸þÃm›"à„³yƒ«áìêÀÅK6±R'÷IçÞ‹
mKMKÌxûäêÙÏûÅêÛìÂÕ_°£<ÌÑÇèt4ëPøÒÄ;ó÷M	ŸÐkÍ¹]¿¿K·‚îÍÙo“{®VÒÑQõø$´>èÖ*BñÈÕkÙå	ƒ3xœ{ÅÑË.—W–›ª[œš˜žX’ª›žZ¢›\R”£[’š“ªa¨É5QQj¢…HlbŒ$—s~^IQ~NNjÑÄÊˆè[öäüÜÜÄ¼”É*Œ¬\‰99
“3­&/aÜ%è’ZœY”š¢—˜›Z\˜œ:9žYŽÑr³>W2Ü¬É™!†MVeq MÆ4°]xœ•”ÁŠÛ0†ïzŠÒTèui!vÇÄ¡´,=(öÄÈ’do÷í+É‰×‰m:ø`ÐÌ73ý#Û©EV1‡ô€Büò‰|›0BÒùjI¨7"/ƒ€B~P/Ü!ï@‹¦ârf!zp¹W¦fŽ+IHþ+]gy’G\D>·h,þ&³À†#;FÎ¹_æ‹M’m“uÚG„ Ì¨–—Ø¥½Ìþo¢žÏ„¬#©ONRkB,!ËŸóUö´Tö€nšm5|Ï‹¾ZÛìh¡êšÉÒú4§¼-ÊrèŽJÒÝÝ²õî•ê…Ë
˜A`B ¯µÀ¥Ãòëàh­¥k†¹Æøq8æ,lƒÎplßúxCðæÖñÂyBUT³ÊÃ—6âåÖÊ„
ŸŽq’Á”`[3ã(+ËâŸàxA%–4_Í7ÛkL]ð‰®¯1³EâÁÆ„AŒ{/2ÓeŽíÒèð‹p~#«BGÊ:?·”öœÉgá2·&ïÌë±pFÜL\(éŒShÞåúKäþ…ÉÄÔ\þ—ë;.™ÿëÖ'ê”GƒÄƒxFÖíŽÑÞ8ùó©pu†ò×FU†Õ§ˆž5ýŽÝs«{õÞ­° h„ñ‚‚¯Gu~ŸÅ½P+/°á²ð{“ÿÑ™7%`Ä=w éÓúÍ¼˜@ícwq7ýSl¸Cò;¦Æ‘ìŠHxœ›Âr—Y>¯,7U·851=±$U· §4=3O·,µ¨83?OÃP“k¢¡ÜÄ`I1T	]…àŒüòâ‰T'nÓšøJÓ4 (¿,3%µX¡$#U!#5§@!3/-¿(7±¤ÈKC¬Q€˜¦7Ù‰Ñbr£çä‹ŒÎ $ø3b´xœ•QM‹Â0½¿_1°õÁàAÖ²4FEöPÖÑ´‘$Ö¿oS©VèvÈaàÍû˜IYYxÎy`Q±óÆ–ÃÉÓþäl™@Ô…²‡J‚taožBÁ¤µ˜)Öóûº£Fà÷d ½•™Ò©n„ñ]$ñqˆü»Ò ˜'ús•ªušÉ')ò”³•Ùó#ÀÑ„?ÍûvCi]Oõk§[„‚µ§15îÏÌ–²KÔ÷@²™-Õ"é,ôÅá_G©Dw±ê»Äûäwû9*wìáüêÙ‘¿šÀ¸¹Û›ñí”/xœëaobWÈ+ËMÕ-NMLO,IÕ-+ÖÍÌ+I-ÊKÌÑÍÉO×0Ôäšh(7ÑO–Yxb]%
2ã.©‚Ä¢ÄÜT  Bf±Bnb^JbI~Q¥±ù0c#ªf ï€-µJxœ}”ÝNã0…ïý#íEá"Pv	U€Ôm]6Ró£8Û!™tZ,;Šo4…vµø*>3ž3ŠÜ”èiäknÐÛh¯Pk¯âkkª£³crõõ"$”xvù…x ©nX‡ÀåRÕ +ÌÅJäÀšªRµÁ%™oojðåJÕ%7BIBØ]ÅÌgmº6åýkdàrƒî…r_.q#r¼†û(Ný(dB¦”M¿Ýïôœdú$4äª,¹\Â‹(
P²xƒU?Û¯]ñ¤Ý-äŒ»¹BnšO Be·×·Zº“ày­´wPÕjÙäV¼…@}Blr„A_î Jþ(ÌÖÀ%„‹ !â5Ït áëNíæÔµaxÊÁ¤…•?ÿ”gÇ6ç¶'}ˆ§àr¤×£‘©ÆTñ:®ú8lWÔž‚ð($¯ß ã¡·ã žÓONÝ ±ú×tk8£¬ÈÎi'Ü†m_ó¦àýCm±Þg«¾Á—¶<”t…ŽHïÞnÔàcÔrÕH£7}±Óð—Ý+û}ÈK$døz{‹&I”d~8‹’`ÜŽÓðõû>Â‚q’ ?ö‘ÙßŒÍ£Cè|šDA0§,câ8JR:Íì6£³¤Ìò“‹=~Á²„Nh˜fÓÄ_Ðì·ÏÒ(¹sàÏCÞ¦4œZÅbw~ÈÍ­Æ§üóè&‹Ç7Ô±¿ÙxâÓ¬ëÏŽÛsÐÍèöï[·A­Ú!iÿ$¶®a¼M'`8ä™[xœëa?Æ¦šW–›ª[œš˜žX’ª[V¬[’š[Z”XRZ.I,)Ö0Ôäšh(7Ñm¢¿Œ †ôÄ:1$A`fqIfrñÄSº˜Ê's1î”-H,JÌM-I-RÈ,VÈMÌKI,É/ªT 22K&f,¯ÏW°qó±³²âÒÕÍ/-)(-ÑMË/ÊM,±…‰+@?XV!3O!)3/h
D—k„£o€k0ÐàrO-Q(KÍKÉ/R(.HMÎLËLVÀîôÉÿ˜¬±¸Ý‡Ù È0m3í€Xxœ;Æ¶ŒM8¯,7U·851=±$U·¬X· 9s¢”ÆDOf+_‹G!ÀÙ3U!µ¨(¿ˆkâ2s°ðóŒ
“—3¾•+ÉHU(KÍKÉ/R(.HMÎLËLFR?y=“HýäÿLî ZP'«²XxœTÛj1}×Wô!6X¹@ŸB0‰SñÚxÝÒò kgm‘]i+iíäï;Ò^ì¤$…êiWs9gFgFïJäÅFxä;Ç])¬ç"Ëxa6ƒ‹!»þÇa,Ï&ŒÓaú³dÀa‰Þ*Ü!¤ìPgÆ‚«Pª\IÀO7˜ñt6^®ØTçÆ–Â+£K%óE:M#T„{Ü¡uøÄN.¸.ç{Ü«wJâ<Î«é<IŸN»›¤·Ëiüï†œ÷DÇo’3„&6ŠxŽ@g.ßÑ'fñwÎƒÐ "'ªJì°ñ·èêÂƒ7  WeuY5Vi4UÍÎg¦ö§Œ­è¾ç]	+Jô”R9(	Axc_#T)^abGœÉ-…ÈÑ–0À—K8£Ÿ³Ð«óá(P )¯«9¬#Ÿ½ÙÁ[_[J¡-]×açŒTÔŽöD£/Éš¢@;¥a¿UrR8ŒÖê›ÊÔF‹Y€Ú› åHÊù¹mÎ_n¿Â`Ò*¢B"¡`Ænt~÷0¸[ŽgÖZ)ª÷Î¡”¦Ý$ÚEF¯°7ö™¾únúáÀÕUe¬WzCPdŽÂ×Oã™ ð6—kRis•5Y-=ä¢T…BGåµ2ìtÇxWÉ÷ÙÍå%]ÉëîÚó@Äu]®C;ÿ³}®{Âõþ¸Êþâ“ôØ°¢XW÷Ó‡IL®jÏƒÔ¯ûë.xAk¥é¸™ñS¸Ã\Ð˜¸0ž6oAXaXóÁØäçx¶x˜í‚oè£¶>Ú(m¹ê°Qni}L|nz!~¼¾Àçûå0(oãb»ä&oÔ–díÂ‚¨•Gö¦oÅëµmxœUÛnÛ0}®¾‚èÜ®qzyÌÚÝš–š`ØPôA±éD›-y’œ6@?~¤ì¸I–ÛüÝÈC2zY`ì0ÏbÎÇ¹™‹«}ŸÃ›A_Äô	ý›ÄpÞ*\"ø)[H¯Œ¦µòJzLa¶‚—*Ùp R§*WærÊ1ù6'w“€–h>Šˆ¡¡µŒöeíðbÞÇ¨9wuÙ,®áb„vû(`ÏGÆ¦òeåã:ì«Ëƒi05– Ämòáþn<½Ûà8¾uò®Í¾”sÚeÖ”¿°Éc-ºÒèTé9xL„ÅŸeD½òB\ñ]åÐŽJk–*%·gqaèÅ„’¢Wåž}øÊjvám•Ð»BLÉCËP)­,Ð“?å  ŸÒ»
Î"†€Š mÀA'2IÈB4áásNisÊµ8;î€¡è@“_WJz0ËMòö¿ÖçÇÒHƒ«’ë 6n&®}Q{«4`2áˆj+sx’+GH%Ö\’ÐØ)ƒæ²\ÎÝ»p²í“HpA‰‚ïˆÔ9‘Ò¬´¯‘$áÊTÎr„ZœfV>Á¬Ê2"©9ßÃ…W”Ý{Vx&¹"m+¸Ö5iŒÝóf‹|‡ùÙ˜ØÔn¯'þ rº9˜”˜¨Œv°0O\ßÜN¦!„æl¦ì¦ÊSh¤Ä*øA]¼.L,“Š¥ˆ@ä(iMEèºj{yÀç)9²gk°.ÜÖD8–9ïC©rsÕy×©í´àëÕv³NÐ7Ê)õ\û¦H„Õ¼Fˆ¸0tÇ<š)-í*êÂHç«ZUxí&¡ž…ÎK9o	^ÜL¢ÿõf0þÜßMoáSÌöDlõD#­Ô¢¢Šì–»'N6'I,ÞÀöŒÎ^;hûñ‰ üq@Yk³I„ˆ©ÿ€çÝaÍÏá°¿Mv£'þ+¶ßÁ4š ±´¤Ã¬n#þ7
3ÒUÊ£ørƒ1Z¶3xœ…’ÁnÛ0†ÏæSðæ¨ìZ4Š5‡‹ÌE±aØA±éÚ›,’œ"o?JŠÓPŸ$Räÿó3Ía¤Âõü\xžXóÓñâÓ%¬þ÷”wÛ5òyW†ÖrÇó;TZcù¸%tóÞ§ÑÔ?ËjWoêØ(6ûu ëè7ä¡+¾éšÜ¯ë/ß7»‡MUžKBURëé#Åk€*VŸ¡`¼íØŽÊ¾¹‘(Ï~š}‘B«W©¬&5,Mlý`ž0%EsŽ:G¶˜ÿqlòk¬Œ†0µ„ìô¼Q÷„³£åªÐ#‰³â€=;
ŠÓXRŽ¢ì`RýÀFÎ1”_ELÁObvžö
²†·¬µ@EeZ4j$7©†:š”UžÄdÈœs&Ô’hÃ`¤š2–Œ-Þ²mÉ&VV™¿¢»z‰½@J)áA6Z”s¼h©S³ö—‘Vã­Zýà§0d½’³‰ÎºŽXŸæ]°/ÌC-á×º*—ƒƒLégutot£KjeŽõ»íîÛúÕÞ½_7YñÇeÅwÊú°Ra²¸îòó¬<Á?9¨@¸?xœ}SÍnÛ0>‡OÁ[[ j·kÐ(¶ Ð8AŠ›‰5È’'ÉYìáGÉŽ·nét¢Mòû!%s¨Iø¶i¬T
m÷¢‘{ò—¯àîýÝ/f ø€yædJÌ¾,óSí»¼£ï-ù0æ ´ÎÄ¾Õ%71
@þ5[®òyžx×Ëœ§\DR<Cz·%TAS|Â¶¡iƒØYWËpw»«Ã¢°˜Âà·Wm-p$K¹Õ;6 Ÿgù§§ùj=_fƒ°¨í‰‚St`c¡¢Îõ 0úé]—¤ÒwÎÖlµ+ì4'ç³U’‡ˆÒM†û}pmÁ1]¬91¸l¤“5r¨<²ÜRëŽ	ÉW¶Õ%né· ¢âò‚«¡g¼¤×	ÞðÇMœè‡+†_Ö]äýßj8ã&Fƒ6ü¡´Ž|S†ë€$‹
[GmŒ'C:@E¾4ÊaÉ i?ieÓÉþÝâ­+Æ²MPÖtÜžB¯9Â+³Ç®ƒE#=ÆoÞš1²²­2Ò¯a´4úˆÖvL§ž‚·ÃfZÏŽùSbPuœ¿xH²ÞÞŽ³rx9¾ÛjÉÌ´K·Š™éÒ#OË¢„Ñ_®kbÆÙóýbõ8ûã!déUÖæô7¦Ä#Åb^tÿ2WÒ…[z¥lÅñìU _÷ûLº°¯xœ½VMo7=‹¿b€µÔˆÉm5dF­¶
bÙˆœ¶AÅåZ„wI…äJVÐßî‡V®øPTºì’Ã™7oÞ×lÅ·Ú]Ü‹­â¾.ð`ù6lµÚñÜÞõÇvþÂc‹‹«ãøcæ%ÎÃrÚ¦ZŠ<ßÙA´‚Ó«2(ÚÈ>Ó¹‚¾ô[È¬+D$Œ-?.®o–óeŒcÚ*çÕgvB  Ï8Iª¶Zª)|âÜ•†]¨óÉâÃÕþî >~f½^2§¾6³ãM[†M8Á<Ÿü:7‹FªçÆ
“
Üˆ	‹6ªçhÃ.gË_ÞÏonç×‹6-Êìv­=H[Â¤ Ê`‘d(¬lœ•Ê{°ä¹’A›;X^]¼¿…T›.Óxž!!dB‡£6È²S"ÝAÂˆ|ÿUÕD'0rÊ·Ä@d¦Àv:¬èòAòJ^õIàƒÇZ€J¯@=H••³öÞOØÒ´nr³ {)<¾§žÉ	£@P¦&BIVká„˜éW´5CÖ9O`ld@–9‡é¤¥Fª! £§C ­àIL’¡Y½`(ÁlŒ¡P‰·˜L«¥")B!º¨^"X‰Ç·=¬0:’‡ÛDÁâ«xVù€¾z8ƒ×øòš„<D”H9~#Ð`•[yO[›15Çµ_JÆ0j´s§á&rÛÆÂn­±ÈÒš ´Á-SœhÖ)>ël_‡c}Y:‡K©È½‡ïÁ«@ôùAL³\t¢«¢ˆM€Ë;ÏWEœ¤)ð%u¦Qh«}\µb&M“N‡1P]8ßñÎDˆ'¨[Keäþygd2M`žU«±ƒ«ACDSõŒ‡ãCº¨w:Ï[6‘ÌÃÁ°FÚÈ¼L6EáûPi	Ïa[h”)‹jÀVÁ+j±l5˜vP4`©óZ  Cµä”´.U±ýèd;,)îc3áÀð¤JqvlCH+qÞ´s”5“ïìŒ=ž‹¸ÔëW˜D>€E›ÅÚ–ØîØdä<öO?U™(ó çp:ªöŒ5ƒ3ú>ŒÔG~·;t”½-a'PmµëN¥{ýQrúÝßœÀF	=ÿ8¢ç1­Æ˜C8% Uü!¨ “A—-´qihÇuÄöï‰ŽË€¿nú±BHíßi¼Ì°D¢#%|ÕM”¦âT¡"u¬·[×’¥¢c¡ÞG4¢É™+Q¹ZåÂÜã9[5óAk!¦¬‡ÅžtU7å“#Íá{ŒDç§Ix”zsÅÔ_SßN<:£´hZ§#&ðgÄ†i´_i°9ež .a=üÏþº¸ºy7ë\ë?Àí7Fý{Õ½*9û^týW#»ËjŽv´>è5öoGÉyÔ[—ŸUé×†‹Àûü§ÑàÈ+†ÐgÍU‰B&þG¼ã#°-’jííìrö?ÿÌwÖÝçV¤O [bq1øoÛ¦^ ©„¢®›s‡Ð*üÛwÚë¿IúØ	Ãë³þì¼éj‹>AQ¯@ûû–‘Ÿº`xœ½TÛn1}÷WŒÔ‡@Ë yhQ)JH….
Iz‰På¬°ºkS_¸ôë;önÑB©T©RWÂxÇs9çÌxÕ*Çd-ÒUšÌÑ%™ž×Úuvqüalx5è±„¦Ž„BT†O„7×P={¢màQÉïáZç9W¢7Šþ¬Ï\“±Éçáh<éOb•Xéy…Æâ”„’@%«iOà\àJ¦x	ÏI0$R\œ—H2ˆ»i8ÒÞ-½Kf2Ã‹óÛþ]/8h(¶ÑÃ®ìMbåò™ô¿DÅvÊØMor}ß?ôGÃ¼€Ý1·À‚xær…ª6ÂØj“j ýX4¦ë©4ÓÖr²$Îw|—ÜðB8wÚlCzÛÂJÊRA–.($¥Vb¬á¦§ôr´mÕËòïK¶6¢Ýk'®oãzVìDwÚœÅj”h-³´Ê¶°Öæí¢>DÖ/—Ú8©æD„¼gÈib°ÉîãÈtåj:V.™qÍ+3©PP¡‘¢D)å³ ]9t6*ƒU‘ñ 1”4Õ‹¬ki1$‰­ß&ÛÍO·ËŽM™žQÑÑp@
º…"ÛV>¾ v}Cˆ`#qÅ3øåÁ±A²odîó}3Ø…ö™ýhm:­VjS™Sø»öûN±Þ§«Áø®W¹e¯áºcŠÌŒÎ£¹Tö…[¡IÁ¤¨…v×©n±¤V”¯Ç–[¾¢v:eW
A¤‚ÔƒÊÓ0P]ö¦z¿ö
ŽÝýÊä† Â•í¯tØ|¡Ì¤q`?Ý¿rí”\‰§üsûrîpÞÏÂèâ—_ì17ô,r‰_ood/ÍöOAévìÝtxœ;Â±–S'¯,7U·<%Y7=µD7µ¨(¿H·(59¿,µ¨R7'?]ÃP“Ë&JéÕcW¦ «œš—¢àæ›ªîâ¬€CYANizfž'(($ççæ&æ¥è(¥–”å)$§¦(€ç—–”–pqGúù{séêêN\&!†Ýì‰§µ¹&~õYµ‡+ v*pˆ-
%©
`¥
0¥`7¤$–$Nî`Ôàç)€ªM,V˜¼Ÿq;ØG‰é“Ó™¼t îÆbPE*Ø¨,×äLïäñ‡PòäËÌÊ8|:™™Å ›x›éê€wxœ[ËyS6¯,7U·<%Y7=µD·4¯¸´  ¿¨$5E·(µ°x¢´ÖDgiáIUt1Ýœüt.N(È)MÏÌ›¸ÒCódfÆnLÁ9Œ²H‚
@ÁÒÌ¢ÔÜÔ¼’âÉÇÕx¹Ê3srÒò‹rK6ÿdä`Ä­žŸYt²*ógL[ÔXL03X\¨¼a³í€xœ»Ày”S&¯,7U·<%Y7=µD7%µL79± 1)3'³$3u¢Œ?ºP¡†Ð¬$t¡ÉÜŒ=vhbÅº9ùé
Éù¹¹‰y)\@¬_ZRPZ¢P’‘ª T›™œª€lÄmFu¶òÌœ®ÍLüŒB˜J6ë1s2bXíÆbŠ!ÖÅâ _”UF¶VxœTÑN1|÷W¬Ò M ¥o¨©„ÈEE‚$"PZU<˜»½ÄÂ±¯¶/!R>¾cçBƒÐ“¢œÏ»3³;^›Åœ»Ë"ïN9t§ÜõA†Úï>½7!†§—™èâæ5êÒ„MAaÆ4üqÉtÛ?£A¹Ï¥):ä8ÔÎàÏ×:1ù5'ç“D’ˆ~/Øy¾{‘‘Àøl¾¼P9¢ŸMÎ®ÎÇ×ç£áDDX÷OÑ&š¦€0ò[µµQê·õ~¢rv¡
N9²(TPÖHM)žšxeJëæ2n
qÈ­Fª¤“sìHyŠ 2X·ŠÈX­èž‰ wôæ3¤äÈò}~<¡#,ŽbS>$
 -•Öd^ÑÒº¼¥b6Iž|]UÖe¦€FtÉêøP\¥æãš$ÍŠl¢o¸¤‹)¸T†€rà¡ÈÐØçéS‡Ø9äçI Kå9Æ×¡ªe•–&5d×˜'—s«}¯uÜnu¨Œýéµ‚­îmÀZj55½VÎ-ÀÚVÑ3–¾Ü‰u<œëb]ÐºÏ>w*Å±nÙÅLºP%ÓGm±Ž†T›9…Þ²q¯¬M©ö©Øu;]Ð~o!h’n@¾Pe½W÷zã<ºûuB4Œöë]A#`	t;ÚJè§Þ³Ô¯çÕsÜã×pÇ˜”XÀ†6l—	y‘“®gÎ† £Ïÿ§uT–hL
oŒ\H¥%¢è c:³ÎÕUˆåxkÞ/þ)ƒ1ãÛäÓ,niSw"Ün–‰üÁØ¥iX"ºuDöóôr|‘íÜ
mú.}šLãÃäßÞññÙÙèÕKeg¼žçŒdsŽ%¼ƒQFºqj¦Côî/RÅ7èç%xœ}±JÄ@†Irpz Èyþ]´Ø X_!ˆÝYZÏíŽÉBvs$›;î1Â¾Ž……`mãÓ¸J°2N9ß??ó½î}Œ3»1,¶JŠœ(É±•;a*«]U‹²ÊÏ.Ï'óßéŽ³Ç nt³.i‡ž¢§ø¦kÊŠA[­!‹šIÑªd<Uµ¡î9=¨îÞïýi4=ù·×¿EéÁÝÃ‚!ªI:®áãÅ¸Où<¾.üK¼!Üúy2›MöeøcÅhV ‚Ó†3,‹PêÛ$½ê¸°
ÿý)~¸â–ì?“éŠOF×_8yƒ7¸ZxœµTmoÚ0þ<ÿŠ“¦	Øš¨¦N*!^$¤A¢±Mª¼ä ÖÀŽì`¿~g‡†ÀÖjý0K‰âÜÝãçî¹³ÌÖèmãÈ“|&ázø…ÕFu^XŒMºãóh1ùxpç>¤1f"ÂŠÂï#cá÷‰„£ÐA9¸ûµÁ9«X\ \8Ç­@;Çº…{Ï“FÄ6Ñ	ƒno £þíxNþÌ­£JT’
%;m? ?˜Žü‰õUPÚÏ±þ ìÝÜ¾ e™±¡Ò.“Élü”,E†òÊ8Oók¿3Ú‘o˜`$"‚žZ¯¹ŒÉÎSX«˜~ŠRä®b¥SŒØ}©jT©)mŠ¼®)0EÂ€…æ©ÒûœXôHÆÈÚ«¸kÁ%m.mIë5Fq[±Z’«=l•þI_Ž{dÀlËEÈ%ñ ïòt£‰	iºY¥ôƒ2ärŠhgq°‘1.„Ä˜ÊËZÈËÎ•iµÈt¸,åCn~3)J4êßÐjqVºTAÞŒªéÐUâý©;Y€–OÍ–h•	Cv›ªï<o(wYv}7tÎî5ã+Û÷MŽQß5¨Ó¯ßY^¾K!ù
¦$E¯ÍlÄÁ¿IþÍÏ¯¸¢€OõW)àŸü¡ªž"%bYs]ÛNWçeŽ*Œ:Ã˜±Á·î8ø2(ÍìûbÐ¢4lé¤­\êe"-ö¡<l{Ï^ ¥f¶£Þ°3|uý7FMËèú¿:mgÒºÔSHF'nÑ€ë´èl{£n¨Ü4„"¥‘ûÀ2Àeî írxœmQMKÃ@¥“›(oC,â¶õ B©…b{³E¨¨ài»™$‹ÉnÈ¦IBþÙƒÇƒ‡‚'ÿ‘›Ôjç²3ófæÍÛyßyµk"‘d#©"~FbLI ½—ÚYã7ŒoGwƒKø[«ÆöVôÑ=´,ëACTeH¸sÑŠ;=x" ðuµt~csLQ5ã]‡4Qø¨û¥½}?3”+.ä[DÔC½*±:È¦dàœ!4pÞ–	Z¹œ¶8ÕÇåçR[¿•WËa¯Ó±ÿ]Êä­	®yÉ04»)È1Hi0CHdy<EQä›0@—Î‚¼IÚV{î~p„LÖ¥M¸ñùRŒ’\BHF]™yÄ"ñ¹ðlËÁÈü®qÁTåD±'ùœùE§‘¼0EP2îrVÐSøQÕ´íá}t}5œ±¹é×J}wë”Q0ó¸ÐŸ•ÆÖÑt¥Úÿ ²é
pxœ›ÎµŒK2¯,7U·<%Y·¬X79'¿4E7'?]ÃP“k¢´+X`b ”‘eŸPœš—¢¨¤ò‹Bó2KSÂ]œÍQHÎÏÍM)ÌKá*(Ê/ËLIU(ÉHU(ÎM,*ÑÏHMÌ)ÉP *ÔSØ¼˜ñÌ©ÉkX œÉ—X\Ó¢<¨â%ñrxœmR½NÃ0Vâ¥ó©B¢ Ò–!Um¥ªt+R; 1¹Î%±Hì(vÓ"!uà	ªð<C%&Þ'¡¡·œï¾;ßýyôN"	Ñ^9ÌN”í`Â™‰¨»m\ÑÿlÓ€-ªQö
V1×4ŒîrF5—\Ê´Œ
‡D1ZÁBjæÓq–ƒ™ñ1ªe ÕöíŒ”(¿ú'–e=Ø¶ !ªˆš4w}¡¸3„g°äç´^¹°ƒrÊ…4rH[º«°&‹@²Ç}s×=è˜ “­¤+.ÓóêK¥›~Tw›=÷°×#õ™¼5C]¨a2ŒS	–Zæ˜Çy¾7èÒl#Vwíþp„ÔEiæ>ß(Q>@HŸrŒº.2ãÄ“ö¹ðˆå`„Â1G0UQ =ˆ¨‡°ò9óóN3òþ‚‚Še«Éé)üMÕ&dr?º½›NffØÌÒ×Zó¸ô¢`éq‘~×Z¥÷KkõÑ³Ì;´~xœUQoÛ8~®~Ñ=dËê¬·Ç`)P$)Z`M‚¥·»CÑU¦m¶äIrÜ ùñGZvšv×7¿Ø–¨É”Ù˜Ô©J6>ÉêDª 72`²Ö>X·}ûÇ;1úå#Äìüz*z„y˜> ªÂìë5Â_“1¼`ùMjüiô
al‹Bšô†Êzù*B,ÿ™ÍË«eã½ap»AçñNô˜
•ôàSŠ­ðn“ÄV¡¬B’YWÈ0údøï¾ykÎ ±ðdáNˆÉt9þrµ¸¹šÏöžÙù1ë6¸+½AÃÄe
òYXnWPÊÒAÚø|ƒ’iWÔÒ!´Üµ5¢e? !nÈdC),0 íS%›,Ò•pÄÔšŒÛ¶ßâÃ>ÐÏNÚé»ƒN­ó¬É·P[÷¾Âñ_•¥uA›A“u†’¸ã@|iŠC¨4[°äyï‹ã©LŠ™6˜’£¹! Exôcø§'€ÎÑyeSŒ µöÈöMÖ÷\X¶³áPüTÉÇ­£%†&;Úq‚…^,pï¬G=®so sÝ"Ð€vöJÎgå‘*¨¨ADíh‚™¤À¹ŽèŠ‹®ˆç­ á²Uøg*ü‚?‘AÂ<º˜>”¹4±ÖÉï?âVÙÜŽ?öO ciŒŽƒ-ïm ™ë•+4¤ú·%»#ë5i”VîÄŽÛzw¡1Oa7A¯œnl„Øõ§&ùYUÜ£ë‹«Ð4?`3ÈêN¬È† ¶(¬çâ²KøxÚlilF©Lµ§°· vý…­ÍÀ¥­:œbðÚ¨¨ã²3ÑÖdå‡…64VüÐ£²&õ@ã­Êy‚T&´`ñ´jÖ¯ÇÞ{¡çÀ*U9×’ó'èêÚBîÏå¸ÁT´"ù¸ÊÖá0þr9¡€IH1Ž/ÁÚï@YPØø™aýÜ‡¡¥g~þ]fÜÙ¯ƒ/sž–ÐóÊÏY )ß#;èªš’šl3A3™Z–uMn¶eÇSÅ7m€ôÞ*Ýœ¯uX¿˜j
Ê3¤ŒÓžõõê¹Vkm³úµŒâÒ17±y‡bA\¨ËáBêœè¼?4Q÷bú÷ùõâóôàRéÃ¥Œ3¹tvEíD‰ñÕÿ¿¿`(Þ?ikñ~qOÌå§'ÍòöÖ]H·ÏNsÓhr4Vu rÿy~£À°1xœm’Ok1ÅÏÖ§˜[ˆ
½;êµé¦m‚ÉA«Ø¢ZÉèÏ¦†|øŒÆñbÊêâYôÓ›yÏã†evÚ‡/ß®ÅâòQß¯–BÒ®`oÁ¤O$4è:Pêß+¾¾
¨“j-‚ö}¯\wSŽ~b¶)
Ñ<×ëMS5,ÍòÛCÄqõŸ+˜w8w°•2&’l­×óh[uï #œê1›Íˆâ{©}vi1w¶eH—gÆ©ãAi”¦#(šŽ)§úŒ½ú i,ñ°l¾ÿ¬6Õº‡.s?îþ°õ_SÖÁDÈ;HŒ”5"VAPn‡à_ÁúÑÊ
ž9~bÍMÆhÄ”éÛ[1š¦zÖ˜ …‰ Ê]È:÷-†‹Æ§W±8ñ²ÚDTEïËž¨Ša2i?ÆÀ2%Á@§Ú9Få’“ÎÔÖ%{„6Ç#”ôèU_ò#1OŸ*ïX,=|ÞíI~ùt¿ÚüX^lTíÿ©þ`1Â1´§ŸË¼)qQE•ŽF3ù"m÷É¾KxœTMsÓ0=W¿bg8¸¥QK®™$3™˜Ì©drPìM"°%#É.îðãYÉÆMÊ]lK»ûÞÛ}²ªräÊòä ÔSþ òLZwÞ¿`£-Æ“ù”qZL½X8Ü¢3+„›æ¾Ò!dz;mÀö²B)V2AÆâ/‹å*žÅ¡t(¿®ÐXÜ°Èã áÀ	NÃ&k®a¸ËÝ~çºtEé8AåÂÂþ†Ñ‚°Öœ+‘£-D‚\¦£áâã<$*¯Ïb@h6Œ½Æ7·³ÕÝl¹è˜z²ïZQ‹Osl55{`ðG‰ÖÙpÞÁFðrR}£þ0¡R(Œ®dŠMŽA[fü¾AWm)zÇ+Æî(¦ëC!A84 -ä”#œ6uHÎE[”Tôˆ-Ñ0"¡Öò>ÇŸ¸¦kßù7= qâ‘:l3|‡¿G«þQZ*°e’ µ½VBË;¨l‰¤˜è”ö<·TÚ"5}IÞ)z–ìcDÆîEm}ÍÐõÎ ,<x<°Ó™wGðdÅèZJ…6Nª`HŠ§!Rþ5‹z}³ZE^ù³ôh+•0utK•ÕÕ ü§L"”WZ¯Œ¦Næ~JÜ–ä%zžÑõ¤”b'¶VÉÁh¥KSrŒ£àéçÉ|õazt^Ãû–ø±m:×„[õ8¡>»<¶'g¯àå[t4=úO3/aÇ}À[­DÝ7¨Õüß`º©r
ÊÈ™í_f%Œón›$“ì7*Ex8µRxœmTMo1=ã_1J	-&áŠ RÚR	)|(Kª¶ãÀê®Mm/)Q|ÇÞeY|aí™yÌ¼y3zŸ#ÓŽ[tèù›ÑxÓk³áÅÃØôa2bœÓïÃS¸8cAdƒc,ù9Í“qƒ#ÀË­Ã%»H@HpBº†AŠ{%ñ^8×"G·¹J‡ƒéóäþ×?—¬Eè§óÂzž­Äpðøù!º9ˆŸçn˜¡ô<¤GâÌæUŽ¦ðÃAõA<Ô×%c_GÉ—§ñ|1žMërBEß¨d¿E˜~Ÿ ”ùÃFíQw@9W ‹Ö_œ‰Ðbƒ9j	ê¤ÉsA¿¯Êoƒ»ŠLFç+Ò+£»°Ø*G.”¶·B;^#fdß›øùÎ€˜ðØÂðJoX0¼ZåvFiÖ”,
¹-cWBþ>¬p£´¦(j#¸BJt®ËØ‚LuWvÂRSe2ÞØ„rq @ª|È-…HŠ`37ø··t¹¸kw¢b n6¬2CI]öÖ½6¥4‹=¨5ÅŽšè÷Ù%ÕÐsëÙaÌigÍ^¥˜6þO¥‘”`­ÚÑ…ñ´ñµw'ö¦ucÖ%kÍlcˆ„Âa	Ò ŒE9¤¬EŒSÅFóft§L°É°Å?…²„ÅX4	¼¬±¡÷ê­ÚŸCIùÇüŽ‰CÖ%D=!:‰·ÓàVŒP
¥)¬1àÝÀœ·%Æ¨¤µ(2•ö"+(ÑGÊ¡4:òýx˜ÌGñ±Ü&1ûµ²Î—5(Oü÷úìSs9û öIC9aqôÂZ¸;c¤ÒjµÍ‰½@[\q2Sì?~¢7·]xœuTMoÛ0=G¿‚èm·:]¯ER [S @ó¦ÝWÑƒjÓ‰0Yò$9]Šþø‘²ã¸[çK‰|$i6&ÏÆ'Còl&úôèìXÿ÷	1MÇ"¡O˜7Ý!%ÀßM†ðSe°2$ätÀæB,¿Ïæ‹ådñ"æýÇqÈà@àð
ünTŠpŸ$FèK™b¢²á`v7½€HÄãƒèÑÇf>Hý(‡ƒÉœŸN ñÐœ÷fÏîIJpí'<\M®Çì“A}Ü»U ­ÂpÐbü íß!.ÇËÏ7“Å-Ek«äB¯ˆ†°F˜}™"Ô5ÁJmÐœ€ò¾B_Pá0•F®°@ˆY“Aj‹BÒï“
k¶Ìw´¼Üs=fþ½²Ä Lýöá– •)«@žZSÐ\V:@°àC¦L_Œt@gd 4ôö$&[VÈ-EÈ-¨y¹ÒH¯2@*<"øS•+Ìê ì$4šåCÉ*Ø‚pS©õ–èVZÒGÄäPÜl•Q•*ßBÛÚ¾óÈ^+±ëðù¹xKtÝ»ó1Kg7ŠUØšQˆ(A~mˆìÃ$cCkK½W>6.Ú¦?wýŠµQ5•Ç¤J]¬™‰1,)€IºÞ5¿¥t…hg{‡¿*åK()¶®±#àæ®Ç4ÇkeVpýi´Ë'…;ZDÍÐð˜ˆæ"NT8{4%Bì×ª¹¡t©_¢›‘CÉ ÄžèÙ¿32/YVR×rÈwó}´ÓUÕ1At"¦ñÏÔD4|GäïeY?ÂFê
‰]Ñ­<¦ÖdžRM×ãÎòxßÔp°F*ž¬ÓÙIžÊi¹é¬#Nyßã³CO•8êÝpÔ´ÃïÚí«²´.Ð@–ŽØEc«ÕºÆÝï;"áÄ‡î´'â`º¶eöoo98¥ˆ§üö‘×Ù¯«¯ñíf/HÜþ¸ŽS­ÄÒ˜ß6´‹xœVÛnÛ8}6¿bÐ}H·¥	Ð§ .Ýx±c¬ÓË¢è-Žl"©’TùøÎPW_"±¤93CÎœ9”y.0ÙŸì¬ÁD–%õþêO1>}	1¿MDB—0'\!%ÿHó¯3„§Bj‹Bu¥³ÏZ!8ôU¼Ëÿç‹åt#Æ¨?žÑyü)ÎN…?ƒ…Ï:ÅÏð#IŒ,Ð—2ÅD«ñÍüËì3¼Bb Þþ#ºµóùJŽo¦-ÀCóÐA”2ñz‡CØîV`'¡Û“Ç7ÿNï'  ¾?
5ÀÌ1¹.¨x*qÜ–ygÊ¬£]WF‡D¦)zÏæ¬3;Ì’ ×}MÜAM¨šH
éŸzTqÕä tÚd¶·—­]ÜM–ÿü7]<RYºÖrw7ÜOhèÒ0£æ‰‡@æÜ®u*sXå6}òàKLu¦QÁjí­K°‚Tº* s¶ˆf®jýoUeº–sê¾é<‡Ê#ø ´áx
3ID:ƒ­­@Ys:’JÈtŽB<ðU,óyLA€µ“¼p<‡¥u!¾¿ÿû–~e€éAz¯×yýº¨oqÑÍîm‰Nm'‰ÅêA´<¾¾§˜N¯G_h+Ízâ¡ƒVœkX¯˜f`l·=÷"F{>6‹.±ôPOZ½Ëráê Ã&hO¾B%F´OI	L2ôn
&©\¨„wø«ÒŽb	ÑbÜåÞ¤ÒÑÏ`´ÍaIÏ¼n6žCl+1‰ƒo÷œOï0@Ø‹Ñn—Ü=îbG‰"MIµY÷¦jDN7e78¨{jM@ˆ#Žàé¶¦ïòñn:ç¬³aÖ©àÌ³v©œ6Mé)Ý–Ýóè·'q£š	«-PK–Ë5{eÑëHYÏèØ¡‘ÖÙÈº§>ìþP2Ç%ÏJFxÙ ‰t"n…&`Ê`9qE;­ Å¨Ç’µšÌ9ÉFŒÂ9ööDò8Ñr¼9|9?ÔLŽ¾è½¦½usÅú¤©Úu˜É÷ÛÙâ~28+?Àm-$íÞm0Ï‰zÖåê-ƒhøé‰i}ÄñFSãûÐJ±Ò"¯  íª§÷2ÊG¯W×â¯¡'âÀtc¾ŸÚ@§6?
>’|dË%ÏW|_òûéi?¦ o†æãbAkjå(~	PÉ0WüÁ²¸YêQ€ØBxœ½SÑjA%ÖMu„R¡TH‹^[l…ºÛÔæIÒ@[¢-4mh*H™—Éîl»f3v7AcÃ>ë“0_ác)þ‡ÿ!‚þwfwk
_Ä—Ý™¹çÞsÏ¹3_æ?-~.ÝŠÈ‚_.ÎfN[Ô<=:¬S³ñªqU+|*å ³{ÖÍÛ &œâ‰¼,.ÈÇ¨  r× ò›Q”³Ec!ŠYSÓo³­êÁÎv.0/µ–?ÈpwçÂÅVuÿèðu£ö1>àFþ0–óR3Ãkäá¡ün<ÉC³ŠÜ?A6œÃ Rö¸MM—³X\ùËx”ý¸×Ç&Ý ì²x«ú²q¢Ë –²SÜ½	]TÎ½fÇ^ €	˜ãxjÃ|<•3Ó
‘\›>¸ŸB"`!;Dæ«Ó…[	ŠG74¶5f:%Öq*ääœƒyâÐ*\ˆñLÙq ]&ØÏ›¡+æÕ‰õˆ*ê°˜e~*GR3õê˜Û²IJI³‰À!\†›ÜÜ¬%XÁµØm­dŒƒA^YgæÞÃ„,h¡óžëÙàzÜwˆ…Ü	z}M;>›Œ¼.XÛç©†ð~È£´+-(W&hÒP³òG‰ŽAzBýý‹·Q .Úž`áû´hk–êo¶ÍƒzkI+Oó-ƒ úz¾j–+«ôi»Ëµòæ*µ‰EGÄâ¾`˜ÄÚo‚ÁskãÉˆìñwàô»=5Y†ƒìaÌ÷õˆ£”Ìs3šŒVÕ.Y1èâ]ÈžÕO’¦orÝáƒu.£	6ôcSë¡þ2ýõ¨tˆåz7(ê)A6ã¤tDv´¡7µ&ÿQl ¯¥éd¡†€r_Þ‘É6È©{+¿Õûà¼uxœ½UßoÓ0~®ÿŠ“x°º‰§©T ˆIt›è@À´7¾´†Ä¶ÛÒj<wNRRÑ‰7"UuìÏßÝ}÷#v]¢ÜÙ wÎ¢,e”³õÓ—ÏÄèÑGˆ«ñt"$=Â' 	ßh¦Êª–h#|ÄÍ!se©¬böõêúfv9KD‰ìn>à½8aV V8d=¡ÆµÉðî¤´ªÄP©¥Ñ£áÕ§é<€´–÷¢G CT>Êb®FÃ¯Ç	 -»(­¢’ÚÑðòšú hÖ]ÜÎ«Úv£ãïê(@†
3™£ŠÉ»‡n«U”¹ó¥Š£á»é-³8H«{!ÞNfo>^ÞÜ’[{ÙX¹wÎC\"\}ž"ÔÁ‚Ô¶}0!¬0¤Ó¤6&.(<þ¤;5ø¢²hœF)­¿¨¢ÝåpLn2¨”§¤DÊâ n—&ñÄ·@‹žÎ¥³œR•wk£É …Ê¿òšý¨T4sS˜¸Àâ¦±@yrÔ“f¨E\ªHÄÄN<²I†ìIµa”Ë!#DS¦W«‚…«8ðŒ„U¶ì'A<
Z[1’íH:ëxA±o»±kÌœ6v‘"hq[Ñ2ÉåÔª§56¦(ÀÙbK•óµ	¨Øƒ%þ½*«>8/æÆ*¿€×)Ýû6m‰ŸŸ‹cM@Û½O÷^å=L-9Ÿ6‘à2O1¶è~ÊYïàEÄWæ…Ë~´–Â™#¬Ö$RHÉ§ÊÓ¢I;2`e÷v¿v°-ÆsÕO\BpƒRÃÖ1vú·ÙëÝÒÝ´Í	 Nnýãyd¯LEÞêÏ„þf•7wZôš.Ðu&æ«<'w¸ˆKº·ëˆ½o}v!5SÛAãT¤o^‚£`˜µ]“,hÊ¼5òg>°¡‰Uó¢iÞG)»òˆ¥‰ëÈ8aÆë´õö9¥†þ‹‡ïÁÙ‡ºì„˜|Oo>L:Ãù9¼oê35X[ÂŠj€Uâ´;‘¤xLqxAð‚Ïx\¿äi|Æ³ôŒçåÝW?¹N™\û/¸Ú	¨Õ€‹ÆÔ€ô<4!hà6_ÂªFö+}³Âˆß0¤N[åœKxœM1J1…‰ÅNac!Úø@ÐU‰:Å ,îÂZXY‰ hw3N`6Y’¬ƒ7°ÒÛy ñ"^ÁsØ˜Ä•¿zï‘ÿ}ùßÓ¯Þ¦|žqÚHC]3ZTS¶»mg¸
h£$ÅU0¸¾0cÔD0Ë§¨…-Áps7†U^…×m±ŸvÛ|y ´zdÃ_5Âh…(Ih—%åz\soÉöyT°%½^0a æ\z83iŒ5“S5C­…å`š³Ïƒµ×äÌ{Ðh0H—Ä¥ëÝú>þ,æ^Ÿ¸S"³±ÚX„; Šp…Ò1ž<õ³üÐ}ãÎµî›l‘
Yî~ÈÑ/ƒ*tê³jxœ}UKoÛ8¾óWziDv{5²A]ÇÁ[ÛíX9PÒH”&räÄ—ýíR~¥[”0‹ÔÌ|Úî¶xõùZýÕ/¥ãùTe²”•#È€„Å÷9B`çuP¸íVÛY²Œ¾ÒBÇdˆ÷pã²ÂÐµRëËÇõl¦¤yG†3²Ðš®&;RÏ;ô_ÔÇönÙïà¶ÄxÏ·Ú×áîE)|c´Ü1:ü?¼?¸ûsžûéz²š=nfËÅ	Y'4³é[ë1  *øB¡ÎBã}ËÞƒþ‚|‰j‹%°Sº,S†(œE,TÎƒuÎš=<Nfp,’ë 1Á’oÖ,‰<í0Ü@Þ±Ò&¸$}æ®œ<¹§"\”Ú4‚ðÀºõ®özÛcî‚¼ÚKKØÅWvTFEí”ÔÒ–;`ëóR‚Ë f¯:ÀVÇøªH*1àÙîtPÄàÑ¡™¸Ï–“Í7É‚Eeò}ÚÝj²©s~ ·hú"^Iå)L–óùxq¿¾´EŒÙ4g2@	]žîÕ8 Ë­ôUìLrp:=–§Jðsl£ør/)´Fï£öz¬)ˆÃ" ð˜ôžh«\›ˆ²‚eKÜË‰Œ"‹ö9±×~B1€‡RFFÈU§}¥wšRoÝ€ï,|H3× i?ˆ"éAéÝ÷ÊœRsÑõœ÷¿Ë¥ÙÂt%ŽFÅ¶Y´`Àoü,£ðØÒð;ÚR ž'ì÷©~·Þ§Ï£y,°šnžV‹“¡j,NÌy%yÊ±Ñ;LÍôV”_ûþÈ#wÞÂ§ØR¡+ŠØ•Ñ³Ï²¡*‘®ó(B=<­6OWp¿œ<Í§‹Íø×É¾j}©Êcòêh€ÔªÄc[œ¸anGÃa´¡Ÿˆóõó²’ö!mÞÝkb|$ãŽçO&õS*ŸWO,Ê&ðQ~ÖÇ™'Ãnô#ïBÑ|é‡"Õù‰ø·cæ¶ÎsìÐ¯]ýk¨GÍEƒ½8B‡q\÷"í¡=9]M‰•;àÂ­$—º¨À*’Â¶–ª]>‹†&Žvéw:HÄ$ýÔ§¿…H ÂŠ½­lÎ‘_âv­¼\ºLÔÎÇ/ýÜ«	Ÿ¦#]œ±÷C'²ªŸkMDÁ²xœÓÓÓ×ÓÓÏÉLNÍ+N-Öwv6  /PR¶Txœ]TMO1=³¿bM¢@¥^ø¨Ji+UBUô„r¼³Y+»öÖ@„øï}³^RÒK´¶ç½™÷f&ûÆê&•L#íleVózTì¿Þ†X7¯?í\ycWrW,¦Ó‚¦´L¦)ïUì#w)Ë*çóÛA4-S0Î€wS›@Ú´óîÁ”€l±µÑ5=š¦!­R`Äµi”à):ª”i(Ô.5%×²ðmÐ’)ÙèSHà‘èäA«¼$ãŠ½Z6,D>ÙÿË›eQ‘ZÁ¶˜Æ´&2RÁÀjÞ ,KÎ6*¹c[†"9ÂÏ•a¾ÕËámž¾šÖ…HX¥¢âuÊGV’);Ô&„AÖš»HÆ
]ØX}LÇ€—Ù‹õàL™Uk ÙTÔ¹ôÎzUQY)˜Ðc£¶’#k¡~Pt­ìJ‹¹…$’^…|GcùIµP*Â@èõ†:ÃðEç‚ÍªŽäÁE¢•±Ä·lE¦ôÂ'*a¦gŒK:¢cs¢Gl¾ñ‚jª$÷ÛúJgßƒÌ³ZÃŠ¾s—è±­"lÈ^ñ¨ ï>×Ø˜5r¹ãAÖ·,IŽ{;+Pr%ó¾s­ÑÿÅÛÉß9äpAd)ØGÏrÞC%žòÝ~¼;éïyê?_N¶8Ìº¦>z
ô}†ŒßðÉõDb3ñb‘7ªoœÿ“ŒŒ|ïÚ`ªXŽ!ªŒ—ÖÛ]¯{’/¿\~½?¿¾þvu3vU8ºêMÒÙ@3¡³3:œäò=oiœ‹ ,k|½4Ä.^\ÒøWZ6Vºã åÓyŠµóÇt…ßÈo`¬ý©—ãgùÕÎwsìÖ\%±uQˆ_Ë‡ò+=ŒÂ÷ÃíÝ¤x.ö0÷cy¢wgôaRl«<:)ò#„è¶÷£»†EÚ YLé§‹µüßIÚ-Ç¡püã{)þ2i¼-¼LxœÕTMoÓ@=Û¿bhØ&SŽ)E”‰JU‹’r Š¬w¯´Ù¼ë¶¡êgÆ±‹‘ÂÇ•¢Ì×{³óž’gpv6…äC³2ºéÖBÛÁ#ÂÅùÙür9¥‚r5HBY´²MŸ^o?ž_¼+N—Ëùâºx¨ -î­Åy–ÅÁ0MtÂ{¬X5ÚÈÃ ×Hl$[n'<ñ¦tVÎ T¥[oh§]§uÐÎÂ]¥Ë
Ö°Buƒ<È³Ÿ\S÷Sp§E­:¸A{û<´“c ÷–‚CÂÂ[aP2Øj;\¢ž \WÚs38k¶Üßx”Ä*méMª±%Ã÷ÛÌïÅzcpF¿£‘¶¥i$Â+$ÝmR½æôdÂÍ‘",e%jÈ”sEp‰§Ë@¢¸6ŸróEyÞ­ãÔ"JÔ¬í7ŽWbA·vŠÇ[šh¨Fâ”òœŒ;ŒNN`š·C5†¦¶ì¶K©­Í?Æ­?:ü‚Ì‡Ná&Ž¤ƒHn¦ÐëïHd-Ê—#òÂËìÙ®ókz¬ªÁdšîµNqµ(>ÏWµÐ˜ê@
áý¦Fï;5þSõ~b/0<0Lö¬bèvLÄŸ›VHHzVú¼Ø{ï0Iú[<<ù!ù“	(:"õG¤$Ý6Ïöý¯0ÕÂ“y¹4xœURQkÛ0~ŽÅ5y˜²$ÝcÒ”•Ð±‡AË(ƒ±• Hgû¨-ä•þ÷œde`ËòÝ}ß}÷I²º‰a¬-©š×ãlr‰Ýp0äæõí!O¶J±l1f0]£~Ù…c‡ð¼‹,2”ÎƒvmGB V–T0Ô
^p	º…ZI©"ßá€ê%UIzdC…T®U´j¤FDöèg+žSeÑ$:‰E{ú=xªÑ#(yÙ‰­X´†`¨‰Až=²´é™SöDU##´J{ÇÐy×KZµ3§Ù°wi8(oåËKp©1€Þ;ÏEjc—ÔÄgˆí‡ ‘ÑÌÏ6<Ø‹U>‰#]ƒq©ˆc×9œ+óâ,ëŸÉi®™Ëu g‰å´Ò|x{|ÓŸË©…VœSq *×âE8 Ú¡!ƒ+›!!÷hÃ@pÑü4ZÆl·KÈã¾!-ª[E¶Hù»(^ù|Žiel¸ñé÷sZµóÝ\Æž«x+€E&G	ž§ò•žÉuQ¦²ï=Ùk6¢ò”‚«|*²ÑÈcˆÞÂõ:;%åzê¶ËÈõóÆ;´†Çl6°,àUîr	W_ï~Üïž~>Þ?|–Nît(ó±OÃ!î”öá·ël"T¾w[®³Ñ›4|oþ–ýâ@e°”xœÝVßoÓ0~nÿŠÛ&¡¤êÚmB< 61JÑ&¦mÚ„¹É¥±Hì`;”ò×sg'ýÁ&I<Ñ—$¶ï»»ïî;w<€Éä ¢ëfVÊ2]	©bØ‹ç“éåírY"äÚ@†NÈÒÂ`Üß“¹Ê0'ëÓËdr6¼Oî>_O“³þ-K…íH•–M†°›j•Ëù¨Øí÷ÇƒA˜~KÜ²Fr.­m,„QRÍ\ÏYf“ûÆ ÈüQiAi©6S7b ×ø³6/Áü†ÖJ­`Qh‹Áf`Ýš÷	#àQ6Âa>ÙˆÔ­,	ùsÝi˜!²í]AQU"5šÃkl#ÊrIOÌ`!]!h27áˆe[g–ü@e97WG¹ûmÆfÞT¨£é¼sMQ ‡5¸Ô!ÀÚèJ;Žh}°‹QZË´¢¼„‚FY9W!2“ÀVTÄ¼å#´³Óæ´®Nƒ(biW”ùºìÏsXêÆPIªšÚ†zFc@·M]k¨Ôù½)ïr†Ö1·)ùÌ<i\f#àÇWœÃ“¿pE#Q¤ÄY£ð;ñ‘€’òõV%:Ç]pÓŸ‚×_Ò{o<¦Já²ë…6©Zµ€Ï÷gÒgˆEbÑ%VW˜ø%¦¥×õùöVÄ”Ç½^ï+ŸéýaEL†£ChˆèÏG¯a)Žû,±ûÒ°I%\Z<A!O?v-ÃÐÜ¹4ÄýF—<(Þ?
IºÙ#ÿJ›Ý¡ÂËŒ¾dJÅöùý]÷ÛÕþmþ'¼ÕÔÌsí,›£•HKm¹»ØÅÌQ¹¾‘û1B­‰+J2¨v‡šð­áZ…ÕÍhS8ÔIt(4‰Î£jf’Ú™¡÷š‡´¶VRt¿	ç©©3„A|ïŸ°õ°5†íížÿµ[À¢†–Wx$0ç$]
ìx:qÒýg§§þn»z·ºõ6ôÍí7ô4„,zQªTÎaÂÎ1D«˜û t¹zÑ}KÅ÷Ñ·áÚÕ£8àîaiq}ý¾J©ÉÆ~^$4ïÐ¸­QqB£>‘Lu³îÔ¶7µ";nÖU'Ž<!àƒ~óáüâmrz{;½¹K®n’/Ó›«ˆAV¬CûíŸBÊ_y8Üt,™ •QA)ëšú¼Þ¹÷†÷(¨}ºVxœ…SÁnÛ0=Ç_Á¥Ø`©îØ6Å†b‡;Co]¨2mµ%C’ÓAÿ}¤e§vW`Ù¢øÈ÷¥3¥eÝåKit¡Ê´ZFgcìÚù\™´º™…¬Ò%Ç¢lµŠ`ôBi´;SÀ9XÓyÚAa,t­Žv%åqêwÊ)<j†íQ+Ô¼iQx¤ õx®Ð"øŠ¶¢®Ñ‚ÅR9Ö€Ö(M¿\`J¤ÎJñê¤ï(tNq†>
ù”Ü•x*+OÚ<Sá¹×Ê†¯ãÒÏÊWJS¥ZØ’NNÖ}‡™êRí‘ÈnŒ²8­ÊÖð‡Ï(Hœ8$‰Jir†[±T$ƒãÀ©Q:¸vW‘iŠ&Ñ°{‚8ÕDUO]ÞZ³§c‚
Ø•OäðpöÐS-ê~û#š¶ÆKú_¼3óYTJ¡³©æÙ&¤3"¯ê~äÈ"Pj°y¤	^qèåjž­ta†d¢Íaç|W}î¼b¿¾­AFÈ œ}Æn”ÏÐ«þ“0ê8­Ý÷_õëv6Ø¸¬a’·µ’@®¥Çà‹x9Ræ}ì~ëåºO>¿BþË;œÇË˜ÿ‡pÌäÕ…!ðîp˜eišNûöî’¸€zß‡Á†#¤'Q[¸€“ß‹7„?1 š’e0ô]„k›©zø¡$j‡—p{»øg÷X“¹abÌ	¾v¾2ö~uÎxuX×pmyû…Wil›JÓ¤¢ã{—E']üCÏU®AV‚ü£ÿýýC£…* æ#ø°…ÏItâvq…C2A6mÜC.Ö°Ì±E»eÛ-lº¡¯ï¡Bù´ã·M'ñS½¤6š´x‰þ¹÷¶‹xœíXÛnÛ8}¶¾bÐ [I«Ø}vºÝ÷NÑP  AK”M¬L"•Ô-úï¡n´*'^´/A×/’È™3Còœ&³..ž@øºZ2…Lo¹Tœ‚._],–oËB@®KÈ„å²0Ï‚™«Läè}¾dWËwç¯–‹7ìê9{œà„Tb|Nª´¨2OÍÐnºyôƒR­r¹žny†iÊÕ,Ýˆô_fw×Â{uÎ³8 ôÄä”(™Î1ÿµ°p­¥²¢«A ˜6R­ÁØ²JmU
rúg+¶+t¹¶åÜ7·ÑBmäì›(ä˜;KzÃiKÀ·[‰Ê‹Q›*¾€	úÖµé~Ì)z’óy#p?7Þú!ï=’“§¥Æs¦õ!S­lÉS+µ"ˆR Gq°è~ŸÜþ6Y,>óíu!æø>©"4|¥ï	ú#CD‘ñ¤~®ÎÜølÓ)!L¾yŽRå¾§Ñ[Á4†.™s®}½ ÛÃÇY‡SCq‹lõc4bV3ú=wÈ§Ù¬Ü'Kˆ‰•41£:hàèÞPzÏ±'Ob$Í!E“É§`a8˜‡gèG³4½á%Žyþ<òÙœÑºhQëñ'ô*1lËmº	c=ÍéItú¬…
F¥ÅtÉTUGI,,Ë÷——ÿkí^­%P©BÒ
Â¯]>´}	òn72Ý@Ê@à…i±³y Ze¼(ô-1±ê¿)·åâQ
nòªp:vzcá–Ä¾¸ü"˜EäFØ(ø´ÙôFð7´"öO˜»3:¾V’n!GUøÝõd|Yvc8¡ÒB¿c‹ÿ’Ê2RXÚ¦ÝlØ=ûÕr§ÌÜ–ÑJ¸ÊPxk´5 +ëö+þ:p¯%øk@¼ƒ
nåÖH3êú%á;Ý×«³šH]Ÿ€>l4Þ
oxyT„Ê}s@ÉWÅO]=Ñaæ‘ƒ†(í$ÀÏëÇ¦Ïø÷Çq%fá]ôíå€†´»uC‘ã$”>Õd/Ï?,Ø»¯WÏÇ‹;Žöú ;Šòðàí’6 ‡â=×¨§ç‰(Œø™èuSÊkï:zÚ4A»pÆA#JLe2/øž~šèXäŠ]xî©ÿ?
Á²›ýKoŸùüxÚ‡\í¢ýH½J©ªs¼•u2¢ µáGA¿mC½9ÍøA—;(øÛG“âq<¬OjïÐ'ÎåaK´cé5Ú]PŒmîYÑdÒÝ ðÐ÷§ÝlO–ú	³xì?´ÜïÑ‰Ð»Xxœ…TïkÛ0ýìü·”1'äW[%mÊFÙ‡Âe[?m%(ò%>*KF:§	¥ÿûNŽ“4éÆüÁ>K÷Þ=étBV›*Chkgç´äíÖÉvì*pFn_y²‹8Öv»-èÚŒ”…þ6¢%ú@ÎB¡´wæÎC ¢4¼.1*ïœg5“ÁÒ;vÚ™ i¨t*€³ýŒÂc„ŠC„Â"?9ÿ¸OïDåÜœÑB†s²˜;˜!((•gÒ•Q¾‘6CÌûÒÔ 
I-,ÍI+Ë0[3Šfò;±ìŒ;@á¿MŽ›üA³´TÔ5ëW ÜÜÝ0j®bX*SI’ýÁÂùuŒ„Eç3ôMAíŠÂÙHvkÍ‡ £‹ l&kö´TLKÞ¡ÚW,ÊÔ<(¾¬E@p§õgN
—U'–”‰¸W&zÑ,û*%yÙáÙ8Gm«<¢·h"Ü2(ÜžÆ Y>?›rO,iB@Öuˆ_Bú”S´\\TÖ:V,üâz¤‹5‚¸tŽZ
m5Y©ØNc‰“¿´ëÁ(zÿfL‹yÃÍ65ŸMJÌ!~D­ô/Ù4Ê/tODH+u%^þzˆ½—<ÇWRmV{ÙÐ$4—¼›ÀYž$¢e•žö }ÔÇð>ÀUºn÷ &=tvõL@±£´ž=ÝÌ&I)§çiÛÖÞ¡yÞ.V¿­pÕÐ£ÜƒïsuYMÙMžŸ¥ÜpßSãƒ"pöo œŽ¾m0{UqžT9=FáŠ8m~^£¿’Fd»àæfé]53¤!sÑ¡úø\qîü¾W×ñÐ¸òñ÷S|kçËœ¤ª¢ÓÃÖ~n{˜$¹òN/[›I¹uQnÍc3,e«B»“	Œ"dØ…oŽs¹5cÕÅ(Rìé^Z Wë¾ý¸ÛxœÕZmoÛ6þlÿ
ÖÅ:;hý×h›®XìM° 	wE±‚dÓ1QEò$*iÖõ¿ïN/$%Q/Žýaó‡Ä¡ŽÇçî><Iéé´OÚ—e³Yº·&s:äñ)%g§ÓÙùõŒ¬˜MÉÊõÈ’r“Ù>9è5Ÿ²•³¤+˜}|nÌÎßŸÂ¯“æSbÍŽ2gaKJÞú|ÉÞ]¿“c­…ë¬ØMwÝj6{Mr@&×ŸŽ/Á`xôŽz>%Ö§>a1	ØûÜt8	ÀÕ`lprgÚíâÌ_áëi^ ÷kWxà.ñïÍ£ý{ê³‡.qÜ¢$ðMB…e/<úWÀ<æÜÀ(ãÌ´Ùß (™?ûfÞnlú¾7|îNnâ/ßq°±X›±‚ÕIPíþ·ÁðpÔùó¯ÿÀŸ=‘7aÈ;ø|i6ÚðIBí„È3ÒÿÖï¯Vòö-yÕA+òÑÛ­Vý~‡¼{vL†‡52|8üeøpØŽ‚ÆOY–Á0É²šfŒ7•füÄ©Ž:t²5ÖQÂ£ÂTG0ãê”‹ˆÐpdk9Õ¨åxTRËÿ^)Ç#¥”ÉçãÙYYUaŽ¨ªZV=WÖä³Z¡W¬ÙËqf7•ÌCdÉ¼Q¿î¼(žd2ªÎ¼$É¼ì¦×N“©§E,«š¦æ;™V2]¥d^UVtµÅyPà71ääø÷™1ù<Ÿ…ÅU’¢ÈN<L¨íÓd?X8Zxz•ôWéÛë‘‹€oŽÜ‡3ÑñIkÐŽóÉˆ˜0÷Þ½Ä–-œ·ÍÁWmaûS 7þâ´ž‹@ÚhÝéDl‡Æá fŽœÑ[5¾Nó{³áQxNúd9jþh¦ÓUtž {K×p<ŒÂœ­ÜÀ«Ÿ4µ’5÷ò¬…A	[5Ì|Öâ“³ö”:K eï€<ÉP—	)_ˆÕ(æ"•.ç½¥y0¾|õúõëþøÕR&œ²›5¯•qÛŠ&`ÒCñnN|>Ø.œ ø£“D]QŒ0ta«&#_ŒXàe1ÉäœÒ%¬ŒMê›Yb³¯”àu‡ú>Y¬éâ«rX4ãìt>?›ÅMj[2åâäôCret8„K\›p¦=Ä®øš’ÈÚïò	þpŸ9Y›ÎÎÄ{Ê¼e¸ºéàúÝ¸cŽ¹‘Zš<{–PF,
‘y„Òúè|uÜ{'vÕB¡KD1ç¤ÈÇÔDd÷v“´ñ–Ë×Äb7ÐB¢8·i¼B·x	Ññ!é‹«÷³+qøªƒÙäÆ.Uòä’·Šð¦ìLÛ£æò!Îõ¶7°Ûq9NÃ´q3dÜ´V(q¨IÙ"ˆT.õhÒ½5|éCÁáFh§'³éo³+Ã@&úõÃÎ£zì¸À—GoÝ;Ð	Æï\79÷,E÷Ü[²X˜NÏ_»7øÃ†újïßªM¯ç°˜˜hí6ú§pgLçŸ/gYÓxa4dw.ÂÂp… ¨kÙ4=*·³ôv¡ºçüáh…¥·ÏØœ?­°³¤ìpÒ;!>2¦—ù…q6Ot\^ÜÒ#¢Íü"ÚÌá)â€ÖÞQåŽ¬bW©îYY¬Íé@Ó¦òB “È{1;ì#
 Ê>bOPá\.Ý@C;Ä¨²CÜTh¼J F·ì9¨Xœ^RPSx$0!B›a‘¶­Â«¬ØŽ<dñÊ.>¾®Â…”×‚2a/pÅŠ%p#"hàBÚkÁÙ°¸bÅ¸$ÜPK±ãìv»Ùóì±;X´R‚sÙ\¢;.öRƒ÷âÎ$çEÇF\ÏÊØ¬”!¶ž)yùª	Ìúê	ânAS7åþVvi‘šl!ýÐÏí P“bÖXÕº?ÙB÷wÅYÈK«Zô'[ˆþ®8™o•(þ¤@ñ%˜
¹W«NvÑúIÖg€ýV@wPùIÊg€KüV@÷£ïé[»GnÖJ‰¯µ•*%¾Ñ‹%^GÂ-%^G-%^W¸ÇI<–N­œàábÜ5lšQômzxa¢’/ý4Eñê‚ò‰Jœå¡Š¦kPŸ
/ß¦Ÿ¯;¹ |*W[RS;£÷ÛôöuaGÒ!”`K`Ë½ ÂÆb¡ðV§á–ô£5"¾”¥Û’D	Ëešž,¬N’=»GúR–nK>é"ÈéE:¬]$‘v ô¥,Ý–ÔÒE“+ù­j©Ág€ñƒ¿m©oe…Æª'4“r¡±ª…fWÐªÌXõdfR.3VµÌì
Z«žÈL
DÆ*])ÙmåÛ¡mäEY´-©cå¨­öVžÚV¼èÚÎ}`Þ)Â"¤Ã.…E‹]/,ºNtØ£÷‚Š¤H"é°KIIc'ŸÖl±Æ—=øÒã$/`WÌóùóhì†rüâÇïDgÐ)'/=Ä	]Ÿ\\ÍÃ‡ ×Æ‰ÊÆf¸ï"øþ€¯ãjÔÝx°‚ƒqºá.ê‰­*£Æ££ô¸¨af\äç(uþöðéÙ0ia/Ã£ *õXRñ¨bxR¯°·Lý?®ô/´¦¶xœÓÓÓ×ÓÓÏÉLNÍ+N-Öw
vÑõõ GÖŒ¿^xœTMoÛ0=Ç¿‚sÑÂNR÷ã˜´Å6l‡ÛeëN[¨’µeC’×vAÿûHKvì¶ÀvqìGòññ‰ÊÒ¼l…„˜×:WÛ¬ˆ£ƒ»°N¨:+®&QzKXt2ŸG0‡RYÇ êö®”ø¥ï¥ð ©[§´´˜E‰7…ôx!™°£cJÛ!òÚ@Å´jÚ’!²}ƒÔfDuí@È¼«q5¸§FÚ ¶–».mC= µXE¤Ló¢&ážc‰€ žq…®q¾‡Bñ”ÅÒ–•åÈêN
4JƒÃ|EkF©MÉ¸ìèBÑeaèÏ¬jJ¹Â÷ÙÞEiY8Á³_¢¥º{sÎô	õé>La †©ìš¡Ïh:/˜¹f•\wè+³x¡Je>Üj«¶º›Ûn«Í$ü¼žöë‚ÿÝ®sšÞ¦\Ô©Â…Hè…™-_|ÿýó6¥œÝ˜,LÙL:x)sîA¢R}ƒ™Ê!!b¸€óŽn6Ã“xLÎ–ÿ°l+Wph{Ú~à,Ëâ%tNoÓ«Éh8¸ô‘³[ßo°s£´rÉQ“õ4éº/™‰å§§-M~Ÿ¯A¡>’‰o‹ElqV¸“5O¬ú#ë<™ó4°ÎøñÕXŽ
r¼&ÄXÉŽ0"}õTÔbááçaT¼9.Obô¦`ÛÁ›:ãè~G$éÈœm#/¦"ðx;AÂ¾r†qzÏBì—Žb$^A¼:á‹âR[<Ãß?½¾!ìCëðâ¯à[kÝ=­,K¸0ôùžž¼6(ª®2ÖÒ:‰þ¹…»h¿Gï.i‘=gëÈqyÕ$a5p»„l¤6NáœÎt?Vw—±Â÷’Òlêüí„Bòûýöá½9hM4ÒöýzaÎ^¸>xœ…RËnÂ0<Ç_±¤¢JBxœ›–C)$Ê…öV©
ŽÓXìÈvP¥Š¯_D‚È!ZïŽwgf=M`M1a’Ð²‚xÞ¾Œ_Wo0I¬W‹åf»„’ÖJ.  *§µ„dŠî(Ãu[x”ª |RÍÏS5ÝåÂšJ5©B„¤ÊÅ°ç´€s!ÚFE˜3© W¹€$ßq¡¤)
0Ÿ+êL‹˜>ŸŒë–IEòâ&Èü;PË$ýbZ.ezo™ŠÑ/
h	Ñqj:”Ð2ÒJˆ°L‚p( dž´nvÆ°hØÆÀK~°ÐÂ;“ºi)Îq†|=2á‚¨V0Ø¼¯×:ú2lˆ+‚¿m"º%×¾dªÕ{ír“êšQç<Á,C(0Ë}rZ˜ÆsF~T¦Ï—ÈÀ‚<Â•¡¶Ýhd”·uÍZ©ï5±¡ë8¾‡¾{Ìèýš&°0^¸}pfmµÐ‰yœn„%x6åÖûŸÅF±‡FÿMŠ­Ðþ–,“-]XƒTéõ½Úƒþ¦ï+íc
ðDˆ{/¹ºaqeˆþhÖ=Ø³ïxœí\ësÛ6¶ÿlÿˆwêPª$÷ñÍÞdó¨ÓzÆ×ÙÛ¤w§3™Q)	²0¡@-IYöíôßó H€iÊq»ÙG	À9?œsppÀ“¡¸Ts©s¹[½™xõî»ñÿ\¼c‘K)./^Ÿ_½;K•H±L3±E¬’\Oÿ¤–Ðb)^¿~y5½¼x÷~úÃáŸ @ié•œ4K¿;õÓ÷âk ¡çÉv!ÅŸób1KÓd²zîÆy.³Â/›Ïc}’þx3O5ŒPËlš.½¡º+9ÿ8-î6ÒyÄz‡'Ãá¡
èb;/D¢òbªSh7±RÙPZÄb‘ngÉÝ8Qú#pëa³ZÞ§ÿ4•£\&K¡–B®7ÅÝ€*m2ys*ðO•nóÖŠX÷ýJåþÛ¢œâ¼6§÷	Ö>¿×›DžÂó™Á|¥’…øK€)9–Ä™êx-Ï¨ôäPÒéRÄIrÓLê	UkpŸˆÂoøçÉa½Âá¯‡ÍFCdÍHqòg‡Ð2Äð•ŒÀðb%=âÚ¾:¥zU»Èˆ^ék–C¬Äk±I•.d–·ñÖï¯o71p§èdncZ–©üz«su­¡™ÐÛõÔ{`,Ò2V{Ü¤rB6ð‘ÿvgÅ%C†g©çwA^Ra<K³º3ïÒy\¨T‹"¦â¨á™ª ¿Gˆ^ýty91~%ç1p·f.Vñ™\€Î‰¡µÒ05‘¹ãáA£g²ØI©‘`Ã\P¤Ðng’`ÆLH´œW²ËmBëô×l{}‰4ÉôbYÍëëTqü#è*.ÄNÁB ª4QÒQñµNóBÍq±Z~!5ìS—s ”ã0±Âr«çÄ4"HZý(‹m¦ó’‹É!ŒT]š8<|¯ÓBDŠúÅ¹ky*<#jeon¹,¶×w àã$OO |"»6|´Ç8Û›T-Äb»ÞL÷‘¿
†l{ð«{V>ÃùS=8 N.££/r}±-Ãàôƒ>‰Íø9®~pÃ€K5ÖèjØ·#q4³‹æsäÖ˜Le<_ÕšÌGT•†\KŒŸ‹/rËœÇÂ¤~®C1tFÄË¿YeÅ°¶šÁJdZ«ÖÒð‚¥ÝV;–Tî§.Ø×Ô³»SŠ4"B9BO¬·PË~Â²ëW?\‘x|NZ9ØªCöD…e­8¨@×G²l¦ê4ÅkÌÙèðs Z…l= r~.ß¾Óé›‹ËóéTˆ£Ó#¤rPË»h
þÑ”Ð½ò½+ò™JJÔ;i³Àò¸ŒŽV.Ôç©èF#.tÙR&¹ìê/ŠPhx‰Õý=¹Õ5’×µ,ñÏÎâùËï¦Wä~‚í.Tœ¨ÿ†¨GŸ}¢šaB!2ÆñÉê¤Û&QsUtSlàqQjTõ:E2]Hn¬þõÝ”Î³Ú$#óbÀÞÃHU‰P*~…ùy-Åoâ·&}†ŸjÞgâû•30±ŽçYjºÈjâ¹úý’(PåØn­¢ã|QXk^Ù° –uv'Ž˜‰GØÊNAÆ–½tËŠØ¶ÀÊ–(ë$ÅI§\ŒH>øþMŸØ×3Õ÷5}90é.+Ã~-°L8þ…å•,³›L&M/uhþ~2L`)F9t›.#S>X#]cß1¿¯Œ'+N[êÚi ý•uY‰¿J'È?Òð5²K9@Çv$'ä·?ôL®û3qŒ?ÀÇõ™‰j¦™¥I¬ÛIä"úø·*pãeõsºE'ò);)‰éè¿+r3äÜÝ!^mÄw"‹\ÜA£ø’è…¦^/er7édE9ô(`UˆfÌŒ€'Ã†&âÅb/a_ƒ[ÔÅ¢Ú!r!þ¼…z´"û]Û8¶¢‰‘b0‹8
`¼h³“åve‡=4WZîÕÓ þ	Ð'ç#N2ìê’X¬åz®©0jï÷µHeNþ³1ù0<‹3­uýSp«w™*
Þwn²ç_ƒsñüÿí™§–À${k%†±”èìéñüëI©r‚ï¿½'vzðé›I@{ÕÚ@“šáZùÔ¾•®Ê »N«Çk\¢€»´éxWºRa_Ê_~:£2³66ðË”»ëÅ–™_ÆñœÇak®®Æº*`À›¬‡
ú,§V½Ô±Âíøò_AÅ•} ŸìCCÝ£uœÝ(}äÁ³i4Ü®sÈ„|ùe¼(%³ô»/T[A*Dée+«‡L«OÓ™M*ë°2¥Ÿ‹¾æáüÛ)ìºs³j×»ÒËÌ6¯ÆýŠÙ4jjf~±·j¶Íºts§rîÔÎ½Ô³¯˜ù‰U1>y
yã)ë½Õ3‰¤EGÃæâ_]C×÷Øz•ÉÖ”+–í§a¹EÞöœx*ÖY}t,ïÆ©2±3*ùKPðFx~Ä•ŒL<50xÒ&|JU½vKâÙ3…wK°]„t“Zœ_4ù6Yàñ™W·W0r(<nß³ðLlÙÙŸµmÊx(e Ó”ƒˆ0TÀ›¬Ì0þÏfŠãžùàÅ' µ\Ê,Ë,]»œ Q¥¿j„ÙL¨\phVèÕÛ÷ÁNÄ[ÜUÄ2ÌTqWøãùËËËŸ‘ÌGîÄ;„ò§j0Ž½eùøpd5káD¿+yÑÊ»Ag·bPÖ‰¢Z`Ð#n³yQ €²vák
X9Â¦°!r‚ã#‘cüÀ†³æà6ƒ®ß©b•n	>àEÌ¡ÇxŽ¾¾¨4“X¶NaÆJ.&å™UJ}akFàF²_ˆ‡KY&­™Ì·IÁ'V½Êó­Qº)ÔÍ6Ÿ¡]„ˆMýâø%m
L4ÅyÏ¹Æýâôä¸	Å&YÈÊNÓÊ„_ÑVã!#T³Ô!lÈPëº¾JÉ‹›e"ã°Ä/49Òšr÷Š-Ê3G~`jÈT#•|ìÀÍ¶qšû?ã:V:‹´sâØ¢Á¨œ|{,²õ³äãqÀb`skÁ±³¨—å¦š!ËÜßJ”~×Tèú&¼ôÿtÝÿ³Ûø–3ƒ“¡xójÙ1mµÆ0ê	2 ÃÃ¬3«Hš´±B‹Còõø Ö©}M7$dUÓ¢Â	
£;0A£# Zgc‡#²=+ó6ã0'ÙÐ$O×¨jr™ïÀNì™ÝÐ'i¸(Ä‚= ÈÕïÁcÈG´ˆw1X¶·Ã
i$bR«Z"³­ûìì¦ÎF¦¶HýKs`•`~ÏBÍAAåd3â²¨	†ÀÙY8×3Y °é|»†)ñ	0¢á4§µÆh¬à&ŒzB† öà‰EQ ¨‡ Û2oÓ" Ô$ïWi–n¯WlYOÅ:þëm|ÀÍXLÛHò	©—ƒf'
€u€–4Röx‚Ô—Pâ	n_+VKÜÞwŽ^“]DhZGG r«yŸÐ1)½ÿÝ*p:@üÛ2’¸Áx7™Ê)>´µ’#ÚôøÄsàÊÁv¢±ò]¼Á¼?ü=†~ö™R)Vƒi7û4 ûLn’xÀ}x•(3@Yp3J“…í¦ÃÌ§hæO›^æ¾åÑ	®Þ~=·ßÔn›'Ññ-nsoÑ'LdË±F{L‰ª¦ÕžO© *æÚMð§UT´;fº¯÷úš{ˆçˆÃ4äG„<ˆ‡ùiI íå;ðrãÔnÎ	#§¤)mBBÌT*N"¢jÁ;bî)—ã“Å;õHï9NZ_)~ô[ xr"Þ¨,/ÌŽ‰3GÌNÖ^vR4˜½ž”±~`MÅƒ¨®ð'Leäeì˜ìª3gÍ¼ôÖL‘nJç¤LÑB!Ô'à'82“7½·ñÖ—ôr»–\7¼Ú–úï!šî©›ˆÕ~HC3 µÀsyVN3dŒ[„r Ö'zB8ÎæH—yO>è£rÁŽV5Žc ïà¬ïˆØ4ØšS“„?ÓåryÍ *_±æ ]4¬ht„³ðŒjŠÇpKR08-ßòVr²"«8Väº”ƒj;FZ¹!erÞÈ-%$ÀßC›`3ÿöDÐ¦7‚6€ Í~
X¶³Ã^ÀÒžKXs¸Â°Ó-p3GVi%ñ¿8ÖpìÉÄŽÆj9Ðè„Ø[c™#ß„4Õa|ª¾""Â"¿%Œ kS1b
ŽOLÎ2o~â®­l´‹3ôXN…¼‰“mŒ[Ìõ6)Vj-ó'|’¬NÛ½¦‹Ós%)wGLá^òO´Âìµ]†.yÆ‰[<¯ŠÐ,ÊUf6˜iø4'/Ÿ£·iº¡ˆ-Ææi/É˜ïàØ•ÞJ¼)Ài^­gÇN>y¹.d=Œ^Q–¥Í?®ò'Bh-; °¨†~ôª DMµ±7q6ªvƒ0,¦Œœ04ÈÄ»y$ÿ•¿áàïŽê¤ Ú§aaŠQÇ€ (Ó:¾Ãxç3×y¯¬RýXHÑxîóFVm} Ê1aReŠ,F: -Ï@Í2Ê›i0 ?8/&rMwœŽLhñ…BJÁ c»uf%p‚EÊyãGX7·àz¡ÝÜºh…<wË`ÖØCþ ô±ºƒmµÏ"è\ £ÿxÌ¢6u ^âüðÓ€~?Ê›ÞÊ¥ÿÞhwD´;±ÝŽë&°?Ôf#k·ÎmäÛ€nl¯ÊÚ¶­¼}ñÆ¥¢X{sccéì»»È% nAÌçG»ÃÀ‰‡DN›÷ÆÖ‚ÛÖŒ6^º ’Ôºm‡A5í4ohy_ ûˆt©Á 
kMAÔz›$Q"ÔÊ¦Ú•—ÅZîŠÁ^Å©äÇÏy “óhùàºÞ¾Æ‹v°whñS»¨þ™a¨‰é"/|¶iqçXú}"g¯cÌ ¹NË(*Ó'Ri…„¼&ppHZ½à;oc“í•š¹Âƒ½»d²2ùì…qP8G„¢DQuzÊÞ¯AÔ½ÓÓ"þ(s×p¡!‚Ç{{aŽ²`;›Þ”×Óªá˜Q€¥zYÉs#{2ïõPGÕ.:^¤ âŸíT¼‰ŽM…‘h¹]Õ'±°Ï=,?ÝÓ¬å Q<¥òÑ µç…ºt›±"­2Š¡ä¼S¡5 ¯Ã–A3k›¬šlüä,D¢HŠ4ØœÎ™ÞÉ*Ÿò"¤ç9áyS‘:wÙÊBçåsy uLuÏ°MíÖåWæÉ45Í`®ÒUÓI@åÍ˜¶å™p•oš‡Ãæ–fËªvÎ½ì}˜®umˆý!›F„D°Ö—vƒÿ¤µëÁY¼n¹Y½=ŽxýV÷¬Íûç¿:iÝ«“wµû¬Î{—™»2‘XyrÜ½ MíÇ\‚\+'|!;‰EJ©˜Œ¼P˜$šÜµïCÐ˜C­©q=àç[ÙH™áR2}
s x¸çqTHC&Qe7"ŒpÎÜ­"ö©ˆÃæ W¦$™h…ÄÎ¨UÇî£5~ŽÃa‡1ÊåƒÃŽ­Y/´çr˜ó¨¬ÖèÛ¢÷4kÓ3$V·ñº…Ç–Éšö
<¢¶P¼l5‚®ç2g>“×
ôÊý1hw£á7¶9”LÉ¹¾ž±ÉXZ.OQÈ¹,¢L& 0o(é…à5"'û®lˆ¹¢jQ%`V±•$Ýy#“=B+#ý@R
-=è#\é
íeê­ÔõŠI0þ2¦ÃÒ»¨óI#‰ÔövÿíåWWß?¯dx*'Ä_~à[³™´U3O›BibHKãçjbL\ŸaF™{ùBM(”âí	°–[0’(¬uÌ¹Ô0‹äJ!'’ì|µÕ|Pµ¸à„Ø,AÜõ¹"U²§ë&Ka°ÐíRQ®þ/uëòÔæPÂNOÝÊæöãaFNf4¦œ¿}ü‡6E‚iz <œò.¾ÎìôDü“ÿ¹8¦ä¶µÒ„b°¼Û¥×0tÞÄî²d`º=áéÁp¶t‡œg ƒdV •Ðˆ`ØØJÞsOÄ»óïß¼üéò=ôtƒŽÒˆ>ÝC	p»4[«çñŒùrEšY`\PêÀœ -H\'BI`Áj8Çt+JP&0ò—´%„pðÚ6¸ Päøß&þû–Á‘ó	N»53FM) Û"0ÁK 7ƒ¹;Ó™ùä˜¢”îøh1Wåó$Í¥GÖ$÷Ç1×>¤HÀÁ¶ë3ìG8ª¢¨_EB'†láðœ·ò¤ªGœ°Ú~<´ŸÊ®H>Ý©iMóä|ðòž£ŠßO&è[vVì)s†´ö=Æø4!í{ºñB}ã|¯?fúKƒáOIgÿÒä*© 5ÏY¥¼ßÉBõÀ'¿³Št³õà¡†I ÕW[ÐYj„&NsêCõ?§F¿±jùü ¼zG¦ŸfÛŽpÛqû Ì–ÚT¼%‡gŒø¤£H]ðÕ‰fÞ1¨Ì.F2ÅúN¿¢ÞkÒVÞÌ±“dY‘’ÑÂÄ(Ñ¬1'­-L	oØBº…é–ßx?¡Jë?s¼ÌcxÙ&ÔNäÔmEgÎn¸¼L´ê3tÄ;Ÿ+™àÞÆ^ìÎqCµ3¼“È±M“›´\f6÷ÑSº…XK´y&´E6i”?ŠÕ0ä÷Ùò%ËÚ|™ä¦ÈZ;mÒ© íÄ—eÿÈ®ïÍI¡ñÙÍ¹;è|­Æ½jõ4w¯O4×^3ñ²<sóþ—~ñ¥©$ª/zGåRøª<àj^k ª<ë‚?jÉ'þ°–W	Q¼¾§kµ?¼ü¿óéûŸÿzþöMm™óñç9ô‰N·*Ø¹P_~hØŽÄ|ø¿U€Û=>’+#¢­@öÏÛó\à°¸÷Û©ôO 1V—×É;²b™Ô¡Ëu?à¤þØÀÊ»Txœ…SmOÛ@þÜü
S$ÔVi}äMcŒíËÆ&`Ÿ6„®'9q¹»ÝP!þûìKiA0Q¥‰cûûyìl*#uª†ÒšZ5³vXl>ùB¬”µG/\^™†}ÅödRÀÈSèýÐ¢vèÁÛ•Á@qN¹lU º4^Ìa.°5ÔÉÈ¨¬	P[ÿ`é¸ÈÞ*ª1XA´€¦F"£Å)[˜Jø
žú™-KÙˆ”!"¨6HMÀÉÉñÙõÅåùõçÓO¿¾–9t§´†#à}ô¤íœÒ¹„lQÞ°†=:RÀÀmsùÚjmï¸ß5‰=¦±wŒ2G ¦¶žjj¡„`ù°Ç^
ŸLT‚C#t\lŒ—D‰®’©É¶²±Ç±Á9Æä¹-"µ)<Õ!¦µ¢3 |“:4‘ô£FJ¢¡+t„6©+×Šl©s-ÌÒD¯Ù¨T£"49×–Œ ôSø£ç€£äÇR°œÈFr®Ï¹Ï0=ƒ‹Hó•@ó[Iå^NÍ¸”û?ýñh-„I2ýäþLº€íd½	#BëµŽpz/:§1W}c§_x¥f›„æÌZ‘”PfÄ‰+Ë¥ädßþ¾sÎCnŠF0â8‚]ØÚâ™áßQNÛ½*a8Þ¢ŸÛ€Ãq>5dÙêÑpé‡€ñŽ÷ÿG<}/ _a]XÓ:ÞÇwñÐTÏÑ¤½›:ix…ú]44¯·`}¿Œ;ùíq)û7%ÑÜ£OnF?Ó\ÓéÊ²ŽÇ)¶ÖïÁy
qÁ÷€ôÉx~ýÈwi½›Ñw7‰±]¼;†‡bÍpã>Œ‹Uo»ûEä¯©sÏWèXƒáag²¢œ×až”®®õç—œŸ3&¾Å³"Å?Íkª_²dxœ”ßkÛ0ÇŸë¿âH $¡mºA÷²®da+a4Û^ƒ"Ÿã£Šlô·”þï“l±Únö €ýp§û~î{¶¤é‹ký´;AÒâÀHŽá4"¬îËõf		„¬P¢a$4L¦É$6EðBf´¿Êo¹[Î™œj£ü»MqgÝú]kiÊtsÜ<—ØM95ÉZê’YŠ™3;[o7¿¶_—óßß’éæÈ™ÕÂÁîÁä
™€B¢†ŠLÆU¡/|…DL¡°
ŠJB¥XY¢ÒW~’¼YÒLH{ù˜ÆÉKrÖxÜ}Ëp~·ðñæÓøsr¦ÐX%áŸÊå^“¬ÌÙ	°Zõ¦9Q<¬Q50÷áûìÏr{¿™¯fë-úN0ùMªš>D™RÖvÌ¥Q"šTýñSÚ“‰†U¶w??†U&Š
U4,¨ú°Òíùø1ƒêÌJ~¬Qõaºd£aAÕ‡Yö¢aAÕ‡=¶7ž:›ch¥¿bÑ=­ˆçí¨ž3ß¼)¹[PhÒ9{Ö†ñÇhgýÝ#°vé[y(©Ýt:¸žÿéàGæ=¨¯ny8Â‹%†Óþòï»xœMNMKÄ@=7¿â‰—i»Ú½wë¥ìA(‹ žeœfipLafŠ¨ìwVë$ä%¼4ú~s·<yqç+Zâ
‘Ãm¿?ÜïqÏ8Î#'+>¢jèRÔùedìœ³ÚÄÎ}=ÝEyçÇ„¼ºyÑdÜ¬1ÁM6 šì[LÖ=oðÿªÌ£ç’>¨XÅ‚ÛÔ³f”­20+­%*^§óOÆüø}“r™¿„•^â¢ÃáaJdÿBêºÍãWXw_)ùv¢"pZ‚BZ:Ñ'ŸüY_¶ôxœXmsÛ6þ,ýŠ2iHU–“Ü´wg÷MV”ÚSÇöXÊõzM‡‘„1	²|±åkûß»» ER¦Ô¨™q¤Åb,ì ã>ŒÇ¯À¹)æ¡ò!ˆ#¡´GI	—ãÉÕtJXÄ)2*Ì Ü}®:´]yÓÙ­wÞ}Ž²Ò²1¤´„žë…ZW½jì«,O•Æ±ocÁ<ŽÃæ`¨"•gÍ1?L$uûý.ôÑä¯èù(•?Ä`Ð3¿"ü–f|'Np/i–[ÍŸŒÑðl¥2ˆ„ŸÆ€_Dº,Ä<|„(FðTŠ %\e%4ôž¡¡%ŽÀÜí-Àd-¢$”'ø½£à°wNGÒ¬3€^ÏuIÛIPÎNoÊ
ZOFIþøì£î¹§]&Û2k@Ä`î2 ­êwàÌ]¾þ^¹u2²\¤y†„¼e†¾"®YX*_™á$Eøµ¡§œ”óòrt—ÇÍœ;—TaßqTˆÜ"Æ²ÜM€ñ¨IÂ"Žwðð"ƒ¹\*O_âÌ—ÄÉ *€§ü”käéÀ¸j¨ÒÌ~A¶ìø ¥PêRlaPê •?¯³gù_Óg&”³·	$È¿¢Ü9€¼—û˜CºrÌ{¥Câ2¯Ü¸ƒ‹Yá¯D
}¢êvn÷·néqIÃWP2k'¹ÝN'•y‘jXˆ0“§Ýn)Û´ÈSøêGÛƒ’9tüú!á^Ôâf„'×xœY¦b{BŽEy¡Êe*B>štB?Â¸fÐB|W7·W3o|}õÖ»xç½]N'DOàÂG&ß±Òï¿Cyx ¼ÝgD|é¨™É‡Öˆ[«%wÜNg3à½6C¸aŒC,ÒòHé@¥ÒÏiH^B@áTqBÓ–²ÖEJÌÎsú¨séÇ…Î‘Ê1ê"šË”ÂÒÑ±>ŠïeŠ$¡àØ÷‹ãÄÇÔÀ	Hs1·åœ)^‰G-ÿiF’kåVK »u‹§ÄÿY&ÓÜ)ýrzBÀ?¤³'zœ¯_rÂôyÏæ÷'Î·øoÊ4Qÿ—^¾¡¨‘åV›	bö‰æ%½ÔßþëÏG·Säø½X«¨ˆ(¬3EÝ„Ö .‘v™bNÚÀ¥Áu†ûsHß¼8õl#ÆTJA/—ø•¦\…wÙ˜f¦âÇ÷*T$âb¹‚,¾iñ×-RZäYÖ‡•òWo'uNQ\ˆ½KJµ{Òz-÷øqç3œ£èØ#Ó"Àª+×y*¬[Y+¹6Ài¹Ä©÷¼¾}Paˆ}<G.‡hg²p8BïEÒs‡à¶¤7ŸîïçÆÙ8hêþrjæwJ(®€½
£ãŸ[]§i]?ÌäNçcën¼h*Ñ2ñÎ.fXýþåÂ1üÇþÂ²ÂÏ´7ŸOÆ?xMìXxƒóÑ&Þì§›Éõ;ª×o+H skNÁÇËÊJÜKxE¡¯–ZÔ¸GÑU&îÜTûÊfkvgÎo¼Ê“=®³îÖ§ð‡ëö±¿>—XY^¡Ö¼Å&•|•‰Ó³È~s\ ¹¸Ãh&	-0Àî­_æ |_&9 ?.'‘b§	£ÝFÇ´Hñ¼3øðqÀŒ©­‘`ï›µíZÜif}Âˆ
ä“‰&{“˜Ö¸08G¯]
`´)´9va&-ïEª„æC¹¼l†<g í»îêã%Ksás«¶]·Ô8/\Ÿ{ë.¨d%v@‘æ¨ÌWªŠ5­P›¿˜ž]Ž®~Ø=…¾kÅ6švl^íˆ¾Æ‹H+¢Ñ°ñ@-UÞ
e4@-S‘¬Z¡Œæ ¨0~i+”Ñ Åµ²Êh*´¿Š5@qi…2š Š$ÙÁ•Ñ µÞë=áPcE?Æ¾D^ çÅÒ>‡©«fXðWÒ¿Ë¨ûT‹ø1üL#OØU5k$¶
|×ø OáíäìÃ÷CûÄo¼ðY³½þ¼Paà™»TChúBø~E1õ¥éÊdpb–¦JG¯m]ì—›î›ÎõÓ¸Sð¶vÕE¬?5‘jH%rÚW"çl%2Ñ•È¹S‰ÿ•È1\)+‘c©9*Ñ)òS\p/.ˆ³I¬mæ3Ûô…òLÑ;ûpq9»¸â?Å‡Èû›ÑìâìrâÝÀgŸ5zí¶ïq xxAóÅW{Q.^-ò­7šN'·3ïúÖûßäöÚyæyt†¹Òµ»ÌÃ3K0zñbç%Žmð
cˆcÿ‰ÎŽ¡‹5¾‚8¬Ý7_|ßà{»é?ñðoÓäËYe“B5”âc·aA½¨fAâ~n9•‹mÛý§‚0eaÄ6³ÁÊÐ4¡÷zk
ÃÆÂˆ{-L;ØXq¯…©ú#îµ0Å}caÄý\Ã+÷Z˜R½±0â^S‘7FÜk±Þ¢w½“ß¶+÷ô[Ë÷W Kåã…Ð\¹#*oü2<ÂPBwóœ¹V–¯<b€^ìõRÇ?g¥5É_Õ%iåÏñJ¥ƒžœæ§€@ú‚jzŠÿóÏ ö…8|òcYêTÏWûd­ê„Í÷Í*˜ÍÄ‡5®Tp¬}Rãrm	ÿ“ÑÉ®îoÿmä]Ð6;ùŽû[}˜kSž“âO?¢¶0xœ}’_OÂ0Åß÷)nÂ,èôÙ'ÀEˆ„Q_—ÒÝÑºvéŸL¿½­$Ê ˜´Iû;çÜÞ´-rX,î`üâw’8Ôºe¤&pÖ«E¹Ù–ÐDh´#i!/²5ªÆ&¤g›jûöZ=–ó÷§j™%…—BVäá>VŒ%/+ÆÔ9ó¡Ghýœ@0È$h…zrZÆ¶ÓèPˆ5ho@÷
zÃº½r`©È2©|;Ž{š<x'XŠ[NôËCŸ°œ}”Õj;_Ï6Ï'ÆdêðgDUSs"såŒLÔ¯iO.Á÷¡}‘àR÷h¼3aâ^ñ·ã˜à>^Z‚Í¸`ò¨…Æ˜ke±`_Ö1~˜Â)Ï#1„Y.†Ùð”ñ~îûÏx¼m(òóßõó·®ˆÕ2Êßæþˆ¿ŽxœíXËnä6Ýû+oÆ”êéL '«ÀIL‚`z€¬Y«ŠmITH±Êõ÷9ç^R%»mÇ²Œ7.ñußçòÓlg7¸q6ag~Éq
É]]ýÿàLoO‰ƒCH³ùœ£OogÆdæCyyÆOgN!ö±yƒ}kûþlÚ0î\4î¡ísòGgîÂtŽ~˜;ó?×C.þs$™›Îíüˆï­ëÃéÖä)ŒrtC”=)o“û-‹®§ÑÅ›tknœm2©~˜k™»¾¥êøéGÛSÉ{Ëó!Ätð·½ãÙ¦³³ÝÚäô8c®ÅòëÛÍÕÕ‹³õ£ŠLæäÓÁÌÁL.v„.°5ºÞ¿e™9À&ªUXf2;ˆ¡9“:˜zÀAsôÛ<ûq¯+Û0ô.'i6¼Ö˜6÷sŽÐ_<ÐzHô;ßŠ9ðÛõn‚½óÁÎEÈ¶ÇŠÖS3»…ŠÜ}ò³„lçl¤F š¶·~¡~ÜE(£Ù°Í1ed@çwçÚ ý#özÂ¢*Ò@R†]]ç“š†dvÑ9jLO~ÛËf;žé•Áœ v
îè4È;	ö¹z*‰Ô>wôR5 ÷ƒGÚ"Åg.¶ª;6ÙKkÀ{¾øÚÑÓôQq›D2†!pÃ¾s8‰Y"jï«]œßå(FcO—¥þD´Ã,fÏtŠnÊÅŒîyÎ]<Çñ’4>jaÓdã\‹Oô©>w;,ž%Š•„Äý¨Ûuó\ãUÝ$û`¸?Š©y”#{˜\[u„KºÎó7¬ƒ?\ý†ÉI¾MB(9›R@t$Éïîþ)ç×¢¸áºëïw;VlSƒãf¦ $4>q~bl’Ô3£Ju^Å¯èA19†>³Yèz˜¤•9Mø¦NEªèÄ³´~0¹ÊãeAa·ñ< ¯‰E÷c8õ®ÛKe )t¦³ßªä’`ƒ³#}Åo?ÂÖ÷n§#ÆÐ]L‡Ò‚¬A¼ßo^·1ß«¨ÁvH‰£õ½e-ªA<’•²uÌí‚Æ¬œõ‰±œëF‡Ñm `T¸#½,`úGî`£ˆ¶Ì?ÝJ©cÍ4­v¡Gƒ€Ð_]üqLODQSR—8Ãvvš›Uf$G§ÞÏyDÃâ´D Ú1Q©’¢ß‰Œ!°¢‹‘Ñ±¨sfIÎÒ_´¯°'•r+ò¤OéAšX~V8ž"J¯=×ƒ'í3K7Ðúü2Ø½AïïÝèR2›¼ˆ8ºR´ž¤”4"Ö }çqg})ÓYªØímìV}ªaýÌ,+5qAÚTðÇî£æ›‹z•ný’ìRÉÑ¶Š
p{r|¥Ÿ—v‘µ!²	?µhiÌ5ÅRf»O%÷QÓ‰¢4‡ð‘¢Á5>|ûîÃ»ïx*µø1Ç0¡°Ì/6¢J£è2}òØzý÷ïÍO6BÄû¾5…ƒhùUË«b6U‚¦š‡õ~˜zi¥
’Ä^vëvÆåT¦ÓŠ‚i-¢‹_è…©È{»jØíw”&žQ0OˆOoccÀ‹M½p#Æ9F—Ð»»Uy>KÚhCGC	‡¨"ˆŸt*ö¤³Ú÷Še©šúzc~µÐ3¢kicCL'mò³‚‹V:«ÜÚ¢í‘S,ožhÔ˜Ú(¬Õ ì«ASîùoÅÈàe8àÚ…û Âô†Z€±Õdð¶˜]º_ÊØÆP&ÒIú¿
E¾
^â¤Òë0ZHG[›ÙmÙ@K!œN‚‡ž!C:hõçÍ%?ÜÐK´ÓA’©,|ä•óo›GåÆßJQa;Vô ÓË%ú'O¸½ñXR	ê`üÓåÒÜ‘öGß)Þ½”#k¥‹‚³Jg&§[STA.µâhÉÕ²a k„Ü5ó°Õ^.äk©ÝøãíS–¸"‘oæ‹ìÌ EÔ_H’rMjv°%	{ï’ºY&nÑ;/}Zî&ƒ«V¬¸9ˆÊv_ˆ¥–JçÐªêMl•wd€©¤gAˆT’¾PE[œ)hQôIÆœÕ…ž¾‚u­ÍD€DT–ß¸.´H²JáX§ª‹³r1DÈ™%4ñx80>æIÓu?~çjÕ’•¥yVo$)\±…w¬ììzŸž¹©sþµÁ‡ó_ß"ÝœùÃ·¶½ß˜O¯è%Ô¹ªp‰§Ã¤ªpÓç
Wø–xêœÑò…~±»°O8x\Ÿ®þ>n	t­±/ q¶÷%‚Š†Ü¶hKó›aþ3.ýK"½hjšBµó)¢¢µJŽõV-c]åò&†³íçóW¼5È­Q.úôƒŽ$	/ËÐò°Æe÷%.›¾D<°Lñû­ü7èýÅ WÊ‰¨Çç Z]K^wIØ™K]ØT¬#…–ëÆÄ«z}åz±J«À¿¶L")†Oe'ùãÍB³/ZÖÙrŒn ­î.¨^TmÊµM…´v•½µÄ¬|§§wÛ“/’˜¹Kêè>ºOªd¹L¿µ°S’ìWÒù&¢¢7[òÈÕ…@o	8ßyéb¤r·xæ¢·÷7øír½ 
?ø$
éiîÏÓÁl5e²‚h…Ò\ÿ8¯xmj×-ÔŽ?^Ç2’/ÒÒNâë
vÒšàñ.´™JoDEBÀº˜V÷ô•/o)ÂF½†ò~9'‰­¾ø1 Òwt\ëâXoKêÜâ¶Fx¶õqR†©üEÿX$.}DcÂÀ£vë{Or¦"¹.E¦uÑfP“

àë—A}Å‚¶v[W_Ø”#tŽÎ$vµ =\r—MÅ3B).ûÑBj*3æûŠl¢%Ë×N"hþÊ­¢¼->WöObØ•4KFoIØ(î/´½³ëWú¤Vº`)]¾•èÒúõ¨ /´ÏÜ÷ž	’`^½è¿µ¤7æ£>C6o4)lëË‚tGÉrå3Ü—šÅ%]ÕàåÅL•³ q¹¯/ê<v®ø;våVÔ.cÅwwå¹ty„õIÂ­ùW<ºª@9æ`¥¶º¬X@2öö˜Â^y"‹_ªú;ÑÕy½
xœÓ×Rp‰ÐõÉLNÍ+NÕõLIÍ+ÉLËL-²RpðÑ5Ò3ÐÍ/ÒÍI,I-RÐÒçRÎLËKIMSˆwöu‰÷àR²3óRa\.åR°l€O¨»§\ÂÕÈÓQHÖ„«qö÷õuôs‰÷ñ«DÔH,J/ÖÓÓiIÍKÉLã ¶÷3·xœM‹Aƒ0ïy…¥œù@Õrã	}€;4Èvü¾$Tˆ“gg×ÞÊ1ðf‚ÁÒ2qÄïdPPpfcÑ¶ ¤!¯,»óÎÃ°á\&~ØuÇë¢%‹½ž&¶îOI$ÕÔ{]C¢ªT÷Éj×ô®.Eü¯÷î&@,µ&xœU‘A‹Û0…ïþ¯Þe½¡(fs),d—ÒB)ä°ÐC¥Y["ªdF²SÓô¿w”ÐBO–õFï›ysóª·-…N¶ºÁ§—÷_ÔÁ
‰ÔÇžBvƒ#~ÄáÃËAí¶*²ò:WU¢Eóõ1¹‰í|UõŽ÷õí¯‡Ççßu5hï;mŽåfw¹ÌÛiÒ,æ~Åè2zJ†]G°:A£›Gœ,1A4íOzM01$×'dK8E>ªÌDâ%´¼–ú –x¤'—-”k%*îi1Û8M¦¬óœ¸$ÈiZ7[|KqÓçÐK±H.¥™Ð­0½raDŽxŠ3*\29òº­LúVþk1xgÉ¥NgœÊ@¤bl…Üâ^#Dþ¡=Œ6ˆ,#ƒóTôÓmJC—n®n}MÆ(yKÃœdT7Èë¬¹“˜Ë8ô3³6¹(AëFA+/	x1+¦)&wmü«,ðÊþ†»»ÿw¡”î:¦eÿFŽ—÷¯±{j{ZÚ0íŒÒ@“ÚïKÛ68ŸAÆFIâïÊëêÕuÊÙ´xœUË±
Â0 Ðý¾â ‹bÅQ×-¤ZÄ-„Ü…Øk‰Ñï·«ëƒWWxš§uYßl;b-’„óÏƒ³‡ÝÞÎÙ¾BáŒUF’'¼>úÖ÷·¦uþfQþGˆcX‹~'öKžé‹×0ñF´ Ðö`XIü ±:)‡¿xœ%Á‚0DïýŠý=1Uá@$b¸—²BmÉ¶ý{6“Ìî¾É”R²CömÕH^;ËAÔé£Êî…`ª°ZôÈJÒŽtørpÓbË‘Hõ:Ä«™"Fšv¿c	Nh[9IZ¦ER	–KmC$WÔ¡‡óìU‡¡YTHÇ­£îß½"=ýs‹:ß¤Ÿ‰Ð{¸8c¤má9Ù€ô’
<{\@ÜÆ6m€àÜÈ~˜CMo¼xœËÌ+.IÌÉ‰Ï,IÍ-Ö¶URpuq
õqvñrÐ77ÐÍ+ËMÓM,-ÉOÎÏËKM.Ñ+*ÍI-VPâ r^0´xœËjÃ@E÷óÓpüi^EÒP÷A	^ŒÇr¢Ö–ÌHvcèÇwBiºíN {¸‡{|&ÔÒ¬@BÄ^‘É-™‚ÚýË2ÞX*™D¡ëåÎ+ß¶“­‡ˆt²³šÕxÅ^ÏëŠŠûº›oÅòa¿Ymç9ä©ÁÓì]˜þÍÔ(GˆÓìJ›ûF!:ýäø‘1µH0SO fGp:VÈÉúxû™cqÄ ¥yšzpL ç¤¾¾@(RF‰Ì¥BÊ;®ûÈØkÖø*b¿ ›‹íþ&hÃÏbYZ%µlI4]¥yõ¤P/&WCã‡VE¾n•‡s°xœmAOÂ@…ïó+&­†Ó¶Þ<mBc8XE/„HY¦°Év·îNã·4˜pðü¾ùÞ›b|³š±Ò†°tÄCÂvu%Ê–rÖ’âÄ·†B1Àör°ƒåuÃÚY™¿¿Tx¡ÅÇ J‹mã,&Â£Êuä{ öÎò˜ud9À¬bò2ôÁ¸SÂ¥?ÃkéyUÉqÅß‚k´¦ÏV{
ÿ†°-ÈwZÑ6}C2èº1™í´w¶úd4_åy6ß|ÌÖÏ…¼×d_¤ŠAÀ2=h›†3
…Ñ´xZæ‹åzšŽ\‹Di
1L ÆýÈ“:;„“»ï[õÏdÁ/ªFyœ»xœUPAnÂ0<Ç¯Ø†K‚0T=¶§(q©¥Ø PÛ‹…b§µ”8È	¨E<¾6PÔ^VÚÑÌìÌÎÆP.³WœëJ™^a*•t­•}„ù2ÇÓ{ÜYÜlea<C£½‘ª†”e‚òT<Óœ ‘C´Qÿ@Ø5ûmúÙ¶=šóÀæÐ*„Fº†»‹@F	{ç‚o‰át‚_Ôû¼$#…`ë|EEá–øvæ&òf¦jöRAXµrú"´Ì×sÊ#ž0…þl80i·ÇÎÀAÙYèwªr+P_ƒë¬;Ó;’7R”tÁã	
Òc	ÏDNËU„‚€ðUñ…Zâj°w-—)¸>íÒÎ¶keAKá©1
b?¹°Ž¯ë¿¡/…Ä5ûÁÂy€³VxœTíjÛ0ým?ÅÅ¥gqb‡QB»u„6ŒBJ¶ÁFW„+)‰Š-I6ËJh¯±'Û•“&v:Ûåèž{ÎýPz=øtwý5Ê¥áÑãÒŠ™àú>Þ£~7Ž”Ž²Ôrí÷zp¥–+-æ¿A?î÷ášgÜHÚ¥AX¦x4‚‰Tnº0ÄÛ©#˜rÃuÉY×?’fãðnF¥Íº‹ËÄµ–ª	ËÄk(M¬á&&¤µ«%:AtTå¹’ÝEPÃd™ó&‚
¯ÁeVÌEEõOŸ	Éáj:~‘«ÛëZÃÆD/ô]èp:~#“áíˆŒGÄ¾o¬.¨JÊ‚F¨ÕÁ!dž}"9ó<—äOúâ ‘‡Žjƒ<Oo{ß'q2x¸ð×N0µ‚B©ƒŠ±•l9´KÓ­§'£$QOÏm­”}4tÔp“¾‡Öñ˜°4h‘.R©ÖéŠ”\ß'gÈ|†ÖÍK™æüþ qo ©¢cWgäRã¤g­]6,Aüäª†„â§ñÛÝ'èøžOÎˆU„.‹–`ÑåKŸÃ#·òØ-ö?«œçt¹jí‹è@iÐù_œ5««Øb­ªån¼Ú$HÊ)Ó¬à»,ä¼
ÃêöBA5ÁŒËšx—À‡ZOá‚É—ñ8@½Q@Ë(°·ïØšÛBK<­ÑúvACêÔ|—ÿá«™å`Ÿ«na½ÛkŒ‡—vçTÏiª}j·ñG¹[o÷/JÜGš37Ï-¼yáÐÞ|W+¿)Èî©l’n²9ö–Ôi<¨ÊÖ¿Ä†º$xœm‘Áo‚0ÆÏö¯xÃ«ËŽÛ‰sM @³B6b ºüãWPØ\vk¿ï½ß{ýºœA¼õÞq 3¡Z	JË\ŠæÖÛ ?-qÝà2Õ¢ÙMOŠ‹V¡Ç]±Wøhj©ÄÇòTHÕ.¥RuÑH=°:W¡©ÌááÚÈmBéf‘„Ñ}è;p¹ÀàtÌ7ßõüˆ…» !,2gy×ØAUVž¸ +«øâ`!´vkBmê†¾m+XsÏpŠ×´G‘™wg ¾´IBÖª5e–íý(&êÌÑdµ	C—z, qb£ÉÄ§Iôa[m•6—uSÎ;z$t#ÅYÀ8&Ý( .æÐêOè·\Ö˜0ÚLOKç‡_MiSaÚ  àªŒ s›1cÅ?UÇ 7F/ Ouú¤7ÁAÎ‹ÉÖä$óß_ÿ€Ý¢þ5ý»Áëdxœ;ÅÒÉ<!Q1%5'GDèæ•å¦rq)g¦) Ó2óRS4\\}|&ö²€éãj< uJ:
J þdFFW£ÌÝä’"°Xpj^Š‚_˜oª‚gJj^IfZ¥‚s~^IQ~NNjPAfJ<HédE&M •h'Š·ÉxœíZmOÛÈþìüŠiV[šèÕV+¶t•Ó"…€H¨¶÷ne{œXrÆ^¿P¸wûßï9gfü’ °Õª|™33çmæ<gâ6<?ú½Ó\.RÞ9ñ¸È?àÉ>{Þï¼îîv¢¤:Oá†¹ÇÙ[ßYØ¼«ˆx’ˆ¨.J3/˜…ÁU]–‹ ÄuY ²ì6æi]"¿Ùñg¤émº“fN†ÒRÜt£é4ÝI³"×S^—€7óB”tâœ@yãûàìðÂê,ûðô¨2Ö÷b„.ƒ9D¶	?§&¶dì¶™;q¶½ë6K³$w3†>:ÂcÛîÔk7C‰ã0‚mËÿ­ÆÿèK3¥Ãã©ËXó=ÏØqÈo‚«³#'sØyè¸|
kÈÉ~ž€S0³ùK]j°„C„ËÙ8‰ò˜ÅúÏÎ˜äà¨pÇsÐÌM'ÑFc™r?J¦N6;9q¾àŒ<åì*NrË¢<‹s×0¸È§3nSÆm?tÆ)£OP£2Bý¿Æà¯gÄeºmtgâ%0à:‚·±}À—ý>ˆp)`—¢Í"ý8‹AzÛÎ÷Þ˜i ÛÆ¶tÒ–1¡ø*ŠB£ž‰B1Ú28}7âúè
šê¢Ã8`»¸äÝš6~›ÔYj…ß	SÞVÚÏÎGvïâýÐŒâ,m)Õ(¼<ŒÌ&Þ8‰;×l3úÛâ[mö¼ óJHØnµÕìãS˜,]ê¨ÅÄ±[‘ž]sºjíRM¿÷Þl‚÷é½òbëJ«)“=Ðž™Lyîè<ƒ‚­zr}	Ú¬Þ.ôXƒ#³¥Ò9Š$å6TœÅ\˜/a3µUyÊºÄÒj3J)îŸ™0t	ÏòDèý#µÉzÀ®0ð "íZ.Ì¹li•rÞ[¶‹ŠÇQaQ-vÖ“ƒ#´™ßN½‹OÕq3qcÿ:`­‹ßÎ†–ýB/|‹ö‰O¥æ›€»J›ávYPÛæAÂ½?DP±w¬“ÁÇ–U%ãk‘ªÌ1Ï°$+ªÉ„ÌwÞy ×Íº>lÇrcRUið_ù&sÿUÖƒb B6BožšÄ@­I€š
#5vQ¹Ö÷z¥BØàìÔ:ÝX`Ú~±ó	A•#«t:Û¬4AÛf7`Þ~Ã ßl7ŒRŽ^¢R?áÜ”~4j[üë¡å©3æ«Ð[™]p7t‚)»AÆ>€r‰þ<×6OMI>É+Ä„cg,äb£,µ"I&xVJZJH÷óÑR6ZŒ–RQ•‰þ±² ËYd6<Žgö„ŠLýRHC<Û…BV/Dj.À­Š>ö
*eïE¶çÞ
ªÅ¶õ¨…å†‹€úkÈÊ×úOxðpØ¿ô¥Q‚|Ò¼F´ÇæJ‡—5¢ý]IÁ›5[6ï”)ÂwúöÁ¿#ø³ ø”OSž™/i×ÁÃåM	Ä$jµ–à|YÞw=ªÖuAžå—õ —4¯]¿¶îƒ*~Åÿwa•EÆ×p½¥™ŠD›DãõoÕ¤]‚5ùu5\“%eLÅºzî4ž}[(o4ÀÑŽZQ¹e÷e¨¡ÒüŽ¢Ïƒ¢:ùUU+pŽ*ì¹ó¹onç,@þÕ·õÀ«òªê‰ «Lo`ï‡dtø„3åiàkK€èöß}ÂWIZ~Æ¿Êý¹3><ö–Âé¿^Õp×¡›ÆÂY‰[BãJ5
@–jó;¼mþ¢øÅìT¾¢‰4ð`C,,X;)9EzŒšQb6AK§¶h|© ªfÏÔT>ÎÓ
sªi,­o§uß=,ºmH½»ï”ââÖAÖú‚[èXùÖáÉ¢«´¼r)ã5Aéâ›ºhP&We›<Æ
yf¶¹$£ë`;<z„?D;)$Õùà¥>;”JR	ÏµKy'‡"Ð‹‘@¼`é?¯zóºèñWY0G<œnØ"ºtJ%wSŠŽºù8²XÎ‹é¢2%h´YyäÞŠµì©þÄI«òp/TpªüEZj¦ýjÃf°$qnmZ@³ôT~ö..zŸìáÉ¿-“üÕ¦¤Öq5àºQzLD™tŸ”<à':ÆÓY©÷à@+žûUPDK¶+<3?ôçÀo“‚€g™YÔH€çÉ_àß[U7,xõJêÇ²
>C?rr­H[Gl…lµçw¼{á)€­–±)î³aîº<MåŠ=öÀ³Íß´X‚^"µñ‚”¾/¹y8s¡_^‘–v´217…6½†t Ó0FÃf5ÄœXÞI¶¹âëP=‹øü:CÄÿ© xšàý³‚~ìyøqB’cñ¤@{ø«Æ­Ot¡!Ôû.÷ÜÏè?áì@`¾„òÁðÃòNtGV!JJ˜T	!žÌ¤ÛU6©^íùž‰ºÙµ·L$QÒ:rè7n²b~™Qè«´žƒ’`s­BH5_qÃÕx	%/ê{Y©Z+‘ú}'5U4?˜êúß1(™%²(‚Gxq[3cNšó-±Ÿ’@F^08RŒFŸTÏ|T³¹Ï~D^hK? ¨å*Ê·N${Öè“‚š?eàÕÆÇSËOŽìÝq<ŒiÀð¬‰Ö"´>«LVÉÈç@	OaÃ¡—>áwOkFñS2Š¨Öº>½y7sjêúò…<ŠáØê(@À=¶õÑŒ†4ÍAvºÞ—½=ì•Eñ–í½i±¿˜=âµž¯@òW¶{³ÇöéÖÇ ];ðt!JÇñ1 èÂÙxæÂvL9¬‰vúÈ:î]öGöÉÙá¨oNN­³Ë‘¼ÏáifÝe¿ß®aÌ\2Í—”©§>x€JuÏý¸‡ÿ*ð¼0xœ}RMo£0=Ç¿b–\ *Íjí)
´‹å£jO–ÉHÄDØt{è_B>ªUHžç÷æ½13»U½†)•¨4†‰De¨"lïá©HÃ_w?Ã¦ka°…››vJb‹,âI¾àI³©EHá‡ºÛ’Ò³JÜÇØ”*ø10¥ÿ<Éâ >?aþw<â%Ï6é:áK[§ö£ÆµReÝI¯ÜË»ÇX‘nž’ÜÏçYì{ÖÎ»/Jl­¬ÆúS#DÂ(jQâÞÎ¨„E¥u·³k«pÍùK¼\%ÏypË&‹ç,›çO“ÕÚg“Iœ¯—o¾W6ª¢­x)iCÝµÂP£lýù‘œe¶iœhµkþB‹e-h";¡¤82œ¾?_¨µFŸÔ®²ÖTŽvýõßíˆçˆC	¢ª°4¤¶WöWö(I\ED_2túÛN”1Twõi÷È5Øô'ÿk2¾@O¹´GžçŠ¿¯iA’vg8]öæhÎ,x°kƒJRu¹>ÃfñãýA.ø§»ŸxœíZëSÛHÿlÿsÞ‚HÆ?€d—„*œµKÉnK©„4²U‘%$›d·ò¿_÷¼4zÙ8›ýtG…XjõüÔÓÓosp@n¯/~ïO}‡†)í_º4Ì|Ï§ÉOäÝõ´?Úô£¤ØMÚ?ø¡,]J^§™ëGûóÓ)ñÃY™æþc‘F“$,-]†>p––~IÒÌÎŠÔÌ_P¤ä¤Ž-Q¸?ïh´p…l:Ä¨‘ÒAì¬HÏ¾ÄÔ¥Û?À…Rr~39»›Xçï/4F?£Yâg}‰ÝF‘}‡ $‘­ta'™D3Ëv]?ó£Ðä°“™Ó#ÎÜNH·7«^»…?t¹t2‚[³C—tÅEéq,g~HºüÓlÿÕn‰'(NþZ’_½!‘ùz¢8W©£1vcu¬F=©®÷“tåŽÆ#€s¢0ÍÄV\š:°¼sCÁ$èŠ’|ÛäöýÙÍA/JH6§dæ¯hH\º$Th/hÛððŒ(æ(&°§~B]¢žwNŠ›<ddÔ4]øðÏ]úù¤­˜áež?# º–e-Ç£Ñò]XüµÊëxL°b_gÚÕÇ÷ëêöòÂ:›N{bñ¯×wÖÙÍ»[”>5ÅJ$~¸¼º3:
¢ï»y¾è‘]xE»GH.˜Ù “«Ãotl')µÀR¬(¦¡±
è	+cæ…zƒk&	jÆ#,ŒVB³e¢ž©pF¹Ñ²ã6 Êò\ü0{¤*Ÿg)É•m >7Ãyô”›‘sÔÁ |ÿI=rõëÍû³©‰â0õŒÎÅoƒûAø@Èõ(œÈ9mÍÏOdgùGÚÌÍ¹ê²%–f(š9êò6pÈmüØ€Y™p?V1‡bbÞEØýÄ©7bf¸Ä¢Nx¤¿·?×Â®^ØŸkaÇ:,„”maý°öPƒ=[Í¶…µW³ZØ#±°Y³°Íš=ËšµÚÚ¤Õ—²Q£Í}%5k³²I›?J)—Ü$ä]¹5¸õR&®•$Ö–ÔøÀ@ˆº=®½W8×uBSº]ˆÙ’HáVW¯ÈMl-$qM°Â­¦Ñ¹~J¶‰,ÄÌø)©Á>õ›]·ëµ˜Ov	JøÑu:&“0K¾Ô
X¯ÈtlQ\R#àñý ¢)™û³9M3+£‹˜S6¢––Tp‡Üáö¸Ã*î¨‚;ÚwTÅWpÇÛãŽË¸"ª<QàÊÀ£·0 ¹¤„(‚
†\ÇŽ­Åã³ó%%Èû#tÿK‘ØžQë	
aŠÖR„‚—ª.*%Aâêk{aAÑ%%ìÆPZRB€&6ÔQõ¸È¥%%Ü1w/°Ó¹…íÅ³Uœ/)AŠ@0O-'qðÅ5’6ØWaI	V×MÀPšpë¬âV`²r
ÓÑ1ÜaÅoøp78!>yý…ÿ'<CÁPš¬¨;6M`ÛÛ3YÁŒ¥j-ß½ÿ@þXÄjûØé_º¹œ\¢¼:
+¤ÝÛÃ²ªNQNÚ_}]Aý
mM˜auì…oXVô ]»GôÛGÖ•qŠè"ÔJìŠ˜zºèÄ>ÙÌ‡%þ£èh+cTK ‰8%§$ÁO®­û¯!îƒP¨ËIÎöºÂÖ×ø¤¦Wãç×LÃù’®P¤aQi(]®5¦‹‚ÚŒÒ&¡W³3{xü)M ?Y†©?¡½cm´-Áš´î¶ª™X’€r4=€4ETVÙþ8²fdºpâ/ÆnÎ€¶&—ŽÝÃ-Éc2+*-ÞW>àý5aèl=!J°Ú(´^eë37íLÛWiÕ}6ï+?L¥WÖ¡CáãùËÍ€Ùà];R°‰³{%îîãÒóhÂçH
‡Ä¢ì´ß^N'€ccýa:­Ø}ÎNÞˆ  ¬Ä§op©Ç:aM¢Ž½×Áƒbfë±# zdØÓ„€¦6FFÏ	¢”ü_+!âèÒª7³6ø¤]¤>XÅ¸Z:—Í€<·¬¤(v"—–¼ÀqŸ†#ÔÀ•gãþÃ5üGrî„6Ñcd¼²@M•ARl§i6O–ÈLà L
ŽÞØ…Û(Ë[æð¹Ï÷Jæ‚Ê6Dö©ÑÆ‚6Öh‡‚v¨ÑŽíHÐ`c.3|~–ŒQÒ°¬åñ¡)?–°¿8K¬ÌÄM
V¹_`——ùÉñÑÅòqágà}ØŽI-xb|ßh–fù|ÕØSÍŒf*ä­™ø±òkÝÌOc¨™úáTÔÊ~Äù,[@f‰fH¾#£Œyœ„¸~"çª…r–Iâº~r?½‚ˆ §U;êíþpðã1pŠàr{ùï‰5<þHÒ$z¼WÃq7væÔù$£©¹ëùŒÁJ³(^ÙÁ)4t+<ÞB8œ²Á¦˜@=âØ*¤Ÿ3>î¡@E´ bf°„ŠjvÒ… ÈÙŒe/µãM‡7Ù	?¦éÔ­(ÎJ3Í![Îžææš`­"7O4ùû¼`¶qœ©8Ñ¡ž9¿Tk:8¤|áÈñ¥¢#Ym¹vvÉ7ñ³KX¨Å^ø 4þŒÀyrÜœ!¶^™˜(˜Óæ«¸îÐIŒ]æ@.Ü¤ç°ƒÒÓT”™Ò7 §ì¤*'ïF.þöåþîS<ÌÑ%oéŸfk…{CTNèÚ_ŠlóhY^è‡EBÊú;Psls¿…Ó².×Ì3fÇ#Ê"ˆÀxšƒ k—ë‚s‡žŸÙ#U¢ÿ‘üfû3ù‹å"&Tzr‡ü~>œ]YÓË«	«¨ZóHðQ7ZfœTD/sÕ{êÞºßiBüÚ– Ø ð¢Ijˆi Ããäæª¥ñÂhœ}ðñöÜz7+ÿ8¹º³¦¿¾cËÛ›Ÿ­ÛËwWgwn&äôµ[ÿl—>¿?Š…‡“K¦Ä»îy­®ûè@Å\xÅxlîªPNú„GìV9£“*ŒûáCå:/3¾ÑåæGàóJM‡<ð³Dˆ¼Žãì­ƒ.yë‡~:'hÝF,EwYn,@æè*"o—A@!×¶óÉžQ	È+gH-¢xÆ«×<	1EÒÞ›ÆÚX¼…ííEÌí{\(“`siÍ›W	R.ÕïsÇ•mˆÄ]×ƒ0yr—o–^0m«ÿµN°Õ*U÷yÀU#«~¹þÛÅ¥xzµG5<ïöOÑm0Rvò“à(hû&ÙÝ%ŠC*›˜ ËÐ4¹äiŸ'x‰\>ûúãe‘îð—ÿ­³e<)°‡t<‘&ÞC%i±U¯öê¦Ìd¯òr½~2EÈjµMâþ†5v¿Ö(yM«^&×Tò_®°!)~‹‹S“NÂÍWÙÁ¬•F.ç©2ï}ßï0¶>
±ù¼(d{Òa¥ •¥€Çã‘”ñäX‹9_D®öÊÁññ±)g…
”G¦Kùâó¼Ê†Ý 6“ncNç¢Öeu(r›Ózõa1¯«”Žµ) šbR„BðáÊq¢×0¥¯o;TÙÐs®é5ÿ^“ùŒnÙ5>ªô~ìëYlþ–Éš^3;Û¤zQ~Um—)]±ŽMVÅwÆžd_Œ×â/Dø^¼§MlÑÂ®m™ LÈæ.ð™\cÇõ5MÿxÏoPº­v …úEyNqÝ#xñöŠÚçÞ_ÌçÁ z5xäÆ[®®ÖÙZ*“¹2<™ÂÇƒ—£<…«Ç¦*ÒiÌ—ÊGöÑã‘säŠ€Ÿ›¬_´Z¹™²ù—DÈÉy%­qjå÷-•ì
9L=ËÙ"Ýç÷°ŽœÍy*çÇ=DŸrŠL×BO’mÓ_¼«U«-úl¶¨¾Ã¶và_
°q§¡µn}ŸîZ@åR÷D˜(Ë\ì¤¥îß“‰LÏZY _„,epûQÖ¥¾ËþÒªà9hHÌ?^
ñË«†?Ésw¡£T_¯•Ê‚M²¯„¤SÈ@®ºJôˆCºÅ‰6ž%©c»t¶Ïž“l\ò”¤Ó(“µEiÉ@–ù—‰@ŒN´ øZËDÒj¹Ÿ¸"¡ H2þÆ…)€ ¡ Â]–·L°uÑ2áÕk‘šÅ-ô<²ðÑ(§nÌ¼o{þèD6k‚<{¼f–ò¬iJó<E}¿¹…ƒ	È–ægeO#%'«zYÙÍ6¤¸a¸–—%;îÎN¡Ü†LÈzfGuü M5û+„&öïÙ`¾Yø«`™»ïbUÊãnZ,ûÑÿôT>ÛÆN¿¥Œx^ñ·Šˆï\C|¿B« Zz±u¥ÐVó¤SnKÝã³ü²ˆxœÍ[koã¸ýž_Áf‘ÂÎÚ™ØÉn3;d&ÙtÐ™&ÈÛi@Èe3¡¥('é"ÿ½—z™¤(Ë/ªqDñžsîåã’z¼yƒ¾]Ÿÿsø…º$LÈð³GBA}Jø[tyýe8>:F|ÈAøÞ4tYêôk"<Í>hEœ†S³Ìct¢—ÑPˆ—˜$z)á<4 ¨0ªùn(˜^”†hô2rpÃÐò’¼I„“•.Š÷Ý(¢ðh¶¯”…ó€è%àE½0fé”ZL‡1DBèå© ìM’ú>}–ö~ðˆOC‚>Ý\œÝ^àO_Ï•Ê4Lâ”ëŒÅ	–d0óˆz(™EO˜ðœ„^Ä1‹¦=8sUJ°@‡ùœô÷þØCp€JDÑ{tün/?÷Q¯ª4üà‘9ô
,ƒFÐ{¨ÖG¹<2ýÞ¾VI;Þ¢»q˜˜½Üÿ;Üï¿ËL_a	YçÉá!t.'W\ZËV¤àŒ§š$P€òj˜zJi¸)òá @þï«(ÇÏÏ#'c,"ìÆ©%¨¥­D5`ãè‰pLC?2P¥¸ÿX†»06açÎ”X€sØß—ÁªÆ&°›r9nÏ–«Æ&ð†hÄ_Pà<ãÌ/úÒhT–&´G“G,¯
Ä&pí¡OË€>¢ñ_Nl,Ñœð¼v£T(TÒVÃ¼|ÁÙVŽ vG²J›;b37	ÐÛÊÀîHVisGlæÒ‘ŒÃ8êå#Ì¿¢SøùñGÛì—[;"åäîÀ»_â+m8ëŽÞëîóÜ§³ktK‚|èd<G"‚Úó‚8HÉÒtb,¸&`Žª3,OGfSêtÀ#éFÇ;¢×† \ÎSFžjsqKç4ÌMø"‹ 	fCåðrª?8þeétïáP†¬»Ñ}°§€¬fu|oj?Ìèt†¡ëŽÀ>Ô^xýlæ1ƒCG¦uŸÁ*¡¿*¾a]‡/º1J`	ãgMø„0F@’£êðrÀ"9Dt‚àÇuøIäpþFðæT%ƒËÖ]©?µÀËq#Š/j­ÖŽK…Âú«²¯“pâxW!{ÁŽ›ÌÉ$¥Ì[•Än]gñ)ÀŽÀ¢5I´±¿
‹fmSÌµÁ¥u&i³—:vK^øQ,gš5š¸nmÁÔ'²™Uü5F°a]Ç—g‰F°"~Íº@Î$9`Z×ñ³µ8Mœ	ÓrÇŠøŠuCæ(×±‹²IÒ€ %›%ŽÌrÇÉ ;O %G‡I¤¤è0‘Ø)všLì;M(vŠ&•’¢óÄRuŸ\J¦ÎŒ³N’LÕìÝ&šj¤w˜lJŽNŽFÒQÒ)9ôÄ³æTî;³Ýìä:~âT*=o]ß|N>Eûèòãb/úóiÓ¶X’;R}/ºž4a'Ž…3Å„kzÚ²-C° ú#¢cá™¦0íj4kóTKh8ñ·ug±”Çñ²3»9±!
±„K66ÑÉÖå2 –ySv÷2Šë’-d¾#¶h°MÈ*ˆ*FÃG/z
¶M¨Tˆ69ÃB¬·‰¢ÑDÆ&Nft|”c-²DÉh{’Q+Éx{’q+ÉÉö$'­$§Û“œ¶’ü´=ÉOfQï b1ã‘0–cb™THj–õÇ/\cŸq’aÅ¬B/²bÁaÍ‡DzN û˜*0;Û,Øä[“Mƒhð)]“f}ŸÜ6šj&Rb·&
a'É)lç‹Q»«‹™w~Á¹ÖVèaº¥÷£ãÝ²xÜ…eî9«¯ˆ[ZZÛ
ùØCG^)Šeòm´Qˆ+Kî_YtEÜÂÒM\'D^ñ	aÉÔ©wï¥¸Ò{9§Ù°+X8…*i,‚Ö§„f*´±ÕX¡íÇâùêëtÕ¶‡âÀk‡i¿![d{X=Ë‰V€út[fõ–—<šžR/^\°®`2$2¡h,aã2³¬–pþÄ$zohã7òˆ"¨1‘/pÉÔ.ŠOªE{‡¢Š[2U‹ª˜OMM¨Z°´È!ÜIjzv.Gaio4½KzŒ”ifM¢í­·JƒÕ$u§(£[¥ÑLMÝIÊéš5}¼ÀYêèvrÔXšÅ”ƒ‘“ÿ4­0v Æ`i#ø‹EÊ®Å(,Ë¥$©«‡ÄÜ0ìXŠÂÒ$Gvó‰ãMØ#Ó «Èè,MZ²þm³K-Ks;9^÷bä ªk1¶¯RN¶Íö Ù+«Íã{éNV¨/,užDD±9¹­Å“ÔiÔÅÞûÿ[cú“‰%÷mÖòOÄálÎÔ—d3hÙöOãxøNBH›ö„°6!S7¿Ýl]šìPˆÆ³DL~?Ú¶*Ù­…§UÍµ+©Yð4I‚ë<5#;—¤ó4©qæS[k×jTž&-Ù›ÆßA‹ÊÓØJœ\$ Q‡Z4žUÄŒ¿“˜qCÚU{lÏSÚÔ=†¨Ïˆû˜ßi‘´#«/Mâ 0·ekÍx;šÚû²4'ÛÑœ¬HsºÍ©¤y5>a	ˆG³ë~Å2@k?9?ÿzà!™K²{tlâ¼­­=2°‡ìÀFòWG3#8–}æCã-ìÊeõqÉƒöLæµ-ùb3u3ŸåçAxJ„úÝ,wøÔ wæptx'óJO]äç/òí§C7ðªÂü+&t˜ÿ–AÅ8ý±Èu´Ip÷ñ_·øê7|ú·û\Vï‘Ä…àì_ÄŒ ÏÙ÷IÅ`>ÝÏkT™bÌ¥áü]ÕxàpÑvW×·øìæò[/ŠEÒä?²¢‹¿Ÿ÷úèµ¨$ë=‚5dBpöLÂÞŸqP¸žû,µPTPù¨'ŸrVa…XÊC…<MˆèUnÐñ -\/prþ*ú²[&4ˆéì{ò§?@¿ƒê«üíëÙÍ-þru‰¯Ï./ êô¿$òm]l*fEòŸ¤f¥¿Y¾ö²”¾‰¦ZëmE€ÚÇ[Y2HÙ/Ó$‹¯6aË¸,J²à—Ô¸¿îýšÞ»0¿xœUÍnÂ0„ÏñSlÃ%AªÛ".µä˜(Ôž¬*ÙKÁAù¡=ððujŠèÁ²w´3ão1…,‰Þ©Ð9š)/ÐôºÔØ>Ã:ôiþH›–ÖŸ=¶0]É`
,aGŠË•zå‚‘‰U´Á"œê¡Ò¦[ØsÚëEÍùˆ„Lt	ÎT\fÉ.Ur³.øÓÇ´7¶ŒXªâØr•Ú!¼•ÝÙÆ@“×CàçÇb~ð	IÄnÍe —1|WîÏÀç¿/8£)šºæ–5üî-½nLg—ÆHµgiÆ72œoµ‰ã¥Œ”àÙ6 žÇä6ýü…º Z7Õ˜žbßj<ÛÏ¹š½«M5ƒîÐ|îíÚhTöÊ™•5‡ÄIøbA¬¤Ë{ ‡«®\?¨ˆ¿¬xœ˜mOã8€¿÷WXB'-h9šô…î¢û°–­àÄËéN²\Çi-'ç8ír'þû“´$±ã•®RQ™gìÇ3NNŽÐÃÝÅŸÇ7œ2™³ãyÄ¤æ1gê3ºº»9§êXÍ::ðXF,FÏ¿?Ü=Ýã§ÇùÍþ†ñà ä\2Ú³ó¿/ñíW<_£éd2š>ÝXl^£Qx:9X0½FÁt4;L9~rÍ8	B_	'S_—¥p†àdpr„æ2Ï
…òŒQE7·WøîËÕ%ž_˜¨è×Œ™¨0Y$èß‚Ï—ß/nïñÃï_îñNý††?èðãàm˜ŒR…s–Q,ÒÎÈŠaavÑÊY%e„¾|ÈŠ|ý‡{#¹VÕH˜$˜’kEd®yÂjÓ£í	6(@Ÿ!pg½<¬ù›™·5)ÖàQÇvíü–(Éå
/¹n™^óÕÇ©JˆÆ1áÂÌÝ4-Ò­+¶,¸ˆJø`èƒ#ûàÄ§]˜3cÍríö·-ÛØò¹-¯¹„c)‰ÀL)ËrZv›Ð²Ú„^›V¤šÐŠTžúàÌ?yƒ0ôRoŒoo”ÿÖxãX‚óG(×DRö¾ù]¥ù-VŒD}l«¸f=Ç‹D·R¼bƒ¸Nî®VÌUç›AqÊs‡ƒ¸y‘eâÕJÙÌŒ‚¿à|] ¬óÏcV––®Y’á²ˆøLéá	-pÄs²ÌZ}¾Q89{¯Á»2ÅÍ.uPk5S¥%…’›ír'‰Œ°Š "S©Ï(Wª¥±Æ£iÄúTšõÇ©“©U?dŠä6Ž÷Ó»ÄfF—¼œ¬cåüç”H×úwž+öwAÎ+¦Õk?ÈJYnÙ2~-I´/zm“”ž¹‘q¬IÞº»
+£Z˜•ÚÕï@}ËˆÑVª·2!^.+iË1—P¸„+Zi¨Îs?©6¸‹¡ËÂ1%‹Ü9&ä‡S+ÆpÁ „ulû‚å¹K$,âÄ”Ã÷€BÎ‰e)[ÃçÆÝëöìUÃ,OÛsšÚ›âUA”ÉeuÖ–“,Ódå ŠÅn%._¢t+{p]ˆz¨©ƒPPzhLtÕ$:¬½çÚò–Dn¸‹çôÙ>U¨~Ò¼Í2_Ò-kyK~Á†˜Bí@é†©
YR­DÏÐ9‡ÚwVÔú¿Û»ÖŒ½†‚5-çØžƒšrwˆPõc1~®´
ÉSY‡Å|ìÆSk³!+óÙ^}g¼©±ë¹ßþ¯‰5ÏnÆhuMÕz‘2ÃËw7©ì¿z­R­!±›Ûg6K•â¸IàaòW±œén;©ÔÖ©öáØ”nß='-Æ9ºìeËW¸\•GI3¹ßËºÏ˜”Æ\ÆiSºI….ŸÓ:rZ(Kí•›xu”¸ó¼Dž#RÞn 0Àãâ^<C4MØ.-‚iË´Q|O7—öÄs=Š¬‡\7º‡{Ÿq°=¦.òMXâòÞ-«$k#Â-Ù"3sƒûz¹˜ìémåÈ…¤îìE™Îe²nbØñäç:ÍloàR¸ƒ†?ýíõ¡¦Gå¤[‘,Ì{‹c”óXðÎ{ˆŽÐýbÞr´VÆBhåkF_vq¼4ôÒ‘—Ž+j·h´ÿm-R¼$‹àtßŒ¨àÍµA˜ÛoBÒìp08 £“×‹¦ÿ oZö\¸xœ+Î/-JN-VÐ¶UˆæRPP/È)MÏÌ+ÖÏO. aÝÒ’Ìœb½dul’ye¹©¸ä’sR‹tÓÊuKRKRu32‹Kò‹*ÁÊc¹¸ c-'œµixœTkâ6ýœüŠ«T(„Ç¨RÅNGE<f‘XñØ¶R%ËM°6Ø©í0K»óß{í„ì~) _ß{î=Çîvaó<ù½³à	šuæ)†gœ©!<=/:ƒ¸×‘ª“SÃ”ßmûÐ†±,ÎŠïÂ¤ƒÞ` ™ó”ï1îÛQiRé!¨’qA…Ôg*~Õ—°DmXóÉ™T¥2Niœ”â@¿íúþ\$y™2x(×&oX “¢Sžëø\ÁâtdBqa,îkCO ‘B ¤üVãg2›OÈx1­Éì72oçŸFÛùjI>Ì7ÛÕúøz_Æý÷¾i ‘$gT‘ì…”EŠƒ!ä#Õ9´ûTí“lÚm\œ"ÐF•‰ÁªÇ#)´“cÚ€E^î¹€võÛòÿõ½Š]•!e:ÁúÒ„±­
3®Ž/T1Ø¹Úð¡ª¼÷=lè~ Šé27–t5|k¢¸Ù‡‡¸Ç¦¼šˆIÙÉÖ<!l{)Kž.Rö¥N÷—”9IìBÍ5«c™R8!oõ¼%£õÓ&”…Ñ-ŒÁ†8[ŒžÂ@ÈŽ=DðN¼‹à®ÎaÁæ3/`·›O *ª‘vr€ð
Ò`‡—\±2©¬€Ð{­ Õ•¦ËIØò½WKY!‡‚*ÍÎžÈ‚‰ð;Œj¡*…ì˜#p”m;„xsxŠ™R‰ª9‡7Í×Ý·\ƒÝ®ã—åBNßôQ…T+>ÖC{fÈÛ|CGéî°<.Dàë×)P‹ª¬—9kg!^Œ‹ ˜®×«õ–Òñ¹¢ÉR¤ŠÀåõöÒHt…ÔNr½âÀü[3hd˜1Š`šàœ4¸¯JÒ¸±Ù]õÏN¯¯¡-w‹…[ÛDó‚öGf¡…œTqf-„åI–Úö+Ðð#“¥Í»üôqJ&ÓÙh·Ø’ùj¼]íüãtµÛº@¡{n‘¤/ý>®¾5z³9¸	½¿YýÔ¬,}’3Ñ šžX³°Ø‹ð&EÕ†ãñ?Þ‘èÆ“ß8¼s£±ÝÒX£V9Ø”IÂ´†!ü¨QËÊ·VQ†N„Ë©ÇêPUà _ˆ}õJí,]Ç^åœQž—°±ÆÐ÷ºmX³ÝCñ–»°hŸ#ýÌ yPñ±¥‚ægÍ5>úEq¶o¶W…cžÎcŠ—"1(ºå`Uoö,p}Ï^ýÿ ÄjºxœmAkÂ@…ÏæW<ìEƒ‰’cz±hA¨­-”^Â’$ÉNØÝhûï»+xèeg™y¼yß,cœŽÛÏä JÒ–’½$íT¥ÈäØI–®6I+ÄËhGˆ±áþÇ¨ºq˜•sd«,Ã‰[%UÝ¥~$OƒkØ›´ÄZÉ©i9èF¬íMYrÏèAé²$aªÏ¥Í4ò{F.û¢&Wƒ’…Ò’¾gs$Ø‘ÃËæˆýc;ˆ×’Îù$XÀÿ<ÐØÇùDiGµgèYÇhÈP¨Vœ}mèÎÈZ—OÞ}×§ì„–¡ö-9Å×1*Ã6¯Ï6rõþFn0:Ç†ªp—°×Ì­²-×èEM°¹yrÏ‹À{±Of.ÊR:ÞÊcüwëÌPºqWáw!öÏA‚ùcôKŸ*¹‘xœí=kwâF²Ÿ™_ÑÃÁ3{2{ñs¹ñëÚž$s&9:	¬H¬$üÈ&þí·ª_ê–Ô`&Î¹çÎÙ¬Q«ªºººººªú¡ÍMr}yøsõÔë»~äV»ŽëÇÞÀsÃ]rryZmÖêÕ ¬ŽìØ_ýÃóû£©ã’÷ƒ¾j·”"7ý@/ŠbÇË¼ž^6õ=(ÖËFž?}ØDz©çÇñãÄM•ÚÑx³÷»Aè¸aªºÇhþóüAš|Û±‰“¤°ØÆãÀ¯Ý•2ÿnìê%Ðªlád4z~[Æ›‘¦Y„ÐF,õÇx¾K®Ž:7GÖÁÙ¡ª¢:	y}ü³uÙ99²®ÿÕ=¾)ÐfòúèàæâJ}ùNÇ=9º±Ž¯ŽŽ®/;GðÚê^ütUZ?_¯úC³U¯(§ý˜@íÖ tÝhb÷]«?”%óÏŽ ïàæÔ:8½²:W‡Œ’ Óz[Njíu è²ä>L¬“ý2À–J%Ëš¶[eVDªd»þñô´L6HãÝöÖv½Oä;òîmû]{«½ƒï²›'û”fäöã ,§È²R ­!›z¬Ú„Ù;ç‡ë¬óß ÄîáÏ…B=ýª{ž¼’ïÎ>]Ýœ%x„ÿke º€h¼zåúÓ1ùÏ«vÏéÅ‰u
ªp~ðÉ8´®o:7×…ïA¨ýF%¹>ë\aÓÍJù§«.(”‚½¥ ýÏÇÎ©@n)åg] {sð¯Óý»­¾=:ìvZ[y±¿/Yy«C?ßt?ñW}þêTÝêÜ\œu8V½¡¾úxi]bï²w¶†–¨¾sàÝŸ{\€¨¯8Z,Û{¾Lú"«Røï©>Z}{b¡±`4P.
HÿÖö‡.Âð:Zú{¬&rckàÚñ4t#´f€ÚŒ[Óøz¼Rí%XlÑò=Q4¹¥|ï
›øy}{D Äî{ñc…x>»“`@¸Þolª¸Œš†L‹H?ð#LªçÉÅålBÓÈJøHB÷ßS/tF.?A¿½· Åam¸½ç`bµ~Pj²'ë>ôâØõiUðL;¶	/Ì ÓØ
BhŠ˜i¯9Ñn'RÎ£žVÂŠ~×äœ*BS½¡vR±,;ŽC¯7]Ë*• à‹ë”Ë„«†ãÅ^àÛ#+Ûal‚¡åÅî˜3´£á‹û¸'¬/“ÏÍ_“g?ÇÊ[ ëÀ7Ö„9xhßn#­çÕ„Bî];´Fî;¢è€?rí¨õžúh?¨öÝÿT°ŸQW|ë†cG|q<rE…Àð¤súÓ­f¡Lý˜UÆÒ?‰"•¤‚Zÿç‰+›C»§@&a0í±5°½‘Õ§œ<ÓíÈ]/#ŒË«lº¸i‹!õÃþâH±7†‘q„_FíXðàÙr¾4‰Û Š­Ðµhiø¸)u²Ð_œ.P}èÆ0¥ô¦ƒØÆàÎ£à~19NF#xêÿ‹¢ÅP}Ûw,t‹#i.ŸK…½$nh{tTL9&›› ìaFäþÖëßÂÔä“žK8˜øÞ#¹êtt´7Ñ´/1è–BEÝû
L·ß§X››T-ü~&týÀçƒh‰áˆ ˆ™€·Á{kbÇ·ËÐP'Rk0²‡‹ ßæyœ¨ÐÈEð‡apï[½ªýMz6h:ÏBØÄ¨HG®„E§BèDAÐ—¿Ñ_ êWÈ]à9dŸËèdÄ	ûœ2`Ž¨ÜMì(S0µúc‡àßÃ4!\õ÷)å¿ï‰Ñ·¬$XÈ!r™ €HB€G1¥)p:‰C+.ÓÖ(8¢q	Žl®B‰XC½ J(§LX¡˜e”(í4ô)È†üþÛeMŒ¦½±ó–
!Qzo@JrŽQL¼I%~´©‹À~í–¹ýPàP(è’Oª/œŠ›AP)j}ç¾Q§%%Qyþø€ÿ+ F
èÃ²ÕÄ·T\8‹‰#‘G:n˜¡¸ƒäç=šº_'tÅsd4H
˜<(+Âpa!l ätS1 X5>v¿J(ÃE…B%À*_D o@J¯ïÍÂ›B=]Þ. à5ö€îl"g@¢D§Äë3;Ý‚A;UšÏß"¿4×ÝÝ ?¡3DÞÐ§QWÌeŽQ`L` A¸ç¸w¾=Ö´î·f” ÷tÐAWÈ†ë£ãƒœEŠ$¡Õ€„ÖQì>Làþ3"%‹B9¶¨¢EK¬’b×!¹FÎ	4¢ÆŠs‡ôe¥ÆJ ¿6eÄSÒZYÄÌy¿»pBåYýj´QÍŠ7Ç­+ ¯ ù&Ú [6Óæ-Rú¢¨SÀ0
êRêÿkd¤‡A«”PŠòÂòQñ_J:™`O
ˆŽ¤e*¥ˆPX&¨Ct\2-ëLJj€5CŠ}ûaúöÃ3éÛwÃ%èÖ|-ÈS1ZíBú£ññ"C+	÷W:®²‹*Jþ¡1¡å¸1À`XòbƒL	©V)'•ìÂrâÈ  ‹1‡3GH ÏS©Dß•sÅe®Ž
WgêÍÖBB4’üˆ3Ég­RçÌ•,¬FRáÑLÞ7”£ÿµ"£T^DZù™ËÕù“~<¿¶ty°žG¾ï/CžÊ¿hn70õmÌ2/7>
$„˜«Yx˜H½Ô<—É±¯VpYò‹Gj:‰—TvEaµ’Ê¡¿°¨²4^BRÙõ“ÕJ*‡þÂ’ÊÒxë•Z-Z±ÑJS_ÜV¥(¼ˆJ-w­Ø>¥©/•HR)¼\é›	)K~ÉtÒ‹)½ˆ¹j!E}	×@§ðb2âËµß@>‚òr²áØ/2ýç­A¯2Ë¯`q Ì‹ä•kî+M2™êX<ãd ô’Ëì4X¥È²Ä–U†Ä‹¸9;*VºÂ”Gqç ‡ÊKHKìY¥„$Í…¥"0s$1“_û<tï¼¾K([øL çt,±æL_JÅM¿(y¦»Vèò3Ö–¿Ñº²`¯#)òEÞS 8BrÚä¦ØnÃîZD›ŽÆªçì®=ü±nåt+´Jµí_ÜG2û_¢Cz÷&+ž]:Õ‘wÉÚ–³¶ÆŸÖŠ—WÝi»UlÍZ¦ ‹­ø
®Ò–é&=«œY3O†5VÁ‘¶–#d£±çCÁ´BÆöûaßñGŠÃüEQ
±ÌrærˆöÃrˆbRvÚœ±gvZj©oFå¬Þ	^R‹NsºËÄKÚ;4ó’çæ	^Œk7ù¼Ô¶kk)Ff/`QÈ­H˜NÖLfpç©µ"³@ç/ÿ8¥KÏèj£³yM–fžÍ¦¾Ú"9ÌO±›8œ®­UpSmŽ½˜µò¸¼…Œ¥ðä
…hãŒLønö
€¹æ§ôå|—M@/aòí3&<cæ\ð•ÍöÎ2XìÐQ´kdÐà6s8#c-XÌ¦Y¿ŠECfÙÌâŒT±ÔÂTŽs9³Ÿ›É¡|¦Ôl26’tGš£EÆF*™3k8ädgTOML-ÇMn&w¶Ç—›OÓ=>3[‹x|ÏgËœÕúî«¥•›¬œÓ³¸ÊMÍàŠ0¶çKÑyÙ°t‰,—tÅÙ˜¥x™ˆšÃîÜ“à8“™Óç39ÎO ÍaÕœØ‘£˜•e>éáMšXŽGcþe›3ó*‚S‘ 0xâ‹qªå>ž™Ëx¥$ 0hÇ-ñyA>Ý§o‡Ã~…Çòðp'¯
ÀË`’$tÛ;/d×"ö7s†!7— DÒ Âó+Å7VrwI!‰&nß ï	1F÷Š“R0ae£Ç
ˆM
!EL.€Ï&p!ò—i…2Ä¢>K‚/®‘	%!áI¼L€Ez Z¾O#‚°Å™Ž'x¼j2ñørÏóíð“c;N£`¾Pu,UTq:îÍ°$Å@nàÅ`<]!ø³<À
½ Ì{XŒ•¤ëÙ£çÄyL9étûƒ!;aQ¨©„ñ`†<Y#ÎL\\ÞX«“kZTæhXø±{~ƒ^’×)VÈº¿Ž'(CpEí'Ž~|Ú9AÏæ¾ÊZ€‹2ë=´¬‚ïShØH@ Œßa	þ•ÐGç‡¥2kˆ8ý1±C˜Ñ-&®_zr¯ðáÁÆjm…ÐÖòó€D´sÚYy˜¿¢£S}ÿ€JìQäâ¥}»B2RA­.DÞïn0(ÉÑX%væ­ü&)TN¢°ó'ø$š]¦SrþÑ’„†‰aŠ€cô—éñŒBÁÆ	­RïC]Ï¬'[M‚‰½/•d
’£²J2#¥2=l“°‰ÝñÔ‘=v¾‡²HÃ<Ú{ìÄI"—vÎ^ÎA¼ï–ÅŽ¼[V¹Lï}Ù1ËåZw E6¿  ÑFŽíßöÔGzîžƒ'½)‰­Æç­æ¯ô^„úSc¡Éu'd«	3¿An~Þj0àÆÓVSB^ð–FÐ§FB;¼õYŽžšË2Ú\š7Ízëm.ò¶@nFO­42`í r«þn;¹-[Ñw)TÀi£ïI¹›áù]2~ù]‹õI»Åûd=µ·¦RÐ†^àúÔh¾ƒ°%(ìSs{[bäw|KbPØ§íF]b´r1¶%…}jÔêØïc'£pEaŸšµzK 4Ú*
Žc½¥X„ kþ©U«ï4]´Á?íÔmÖnÐÞ%hþ©Ñ®mÉ†5š;ÄFabë Z[¶¯¹mj`£!19ÆS{»Ö”MÜn˜ÚØhJLŽñÔØª×¶e3QÎ­±y+a˜#=5ÛZC6Å½cÂnIlô´ÝlÖš²Á uZùØÛ[ ¡þ´„úÔïš&ÔvÂ6b ½“:TÛÚ1¶÷mÂ1¢€5v¤ÕÞ¶MÝ‘ˆi«-ôh»¶½elå;‰HQž8—[Àø[¥}à¤Ã?û¢è¡KÁùo‚—¬ùýGº¬çEàxGÂP-j©¦0{¸ab§T#E-Tê²!iá…ÝóŸäŽ–Êül¼J#DÌ\„þ1q[Êþ0—’q•ZsL‘-Í¨qƒ/¯¢gŠÉ.WžöÐ§±U,t/ÈZDxŒrÊå-åÁ£DþIŠ?á"„^Å+×v´Áêsþ¥Ïìß à¸rï<®‰H\³UÝêè3ÚógBC¥¶ñÿ$¦ ~»ä
À/"õjâÀ#SÎF>%žœ&y¯àïwß¡»#îS-'kMGVíÉÚåDçýšËESá¢QU\|¹h,ÅEÓÄÅ–ÂòPmhÒG»«edËÄHKGTmÊŠgP¯§©·>×ó©o+Ô›Qµµõmõ¶B¬eh·í¼ió?Ú¹éøÿá>{¸gœMƒz·[ßn´ç¹°«eãYÃ=×1^-Ïí¹îöjùh™øPíBÆ‰_-Û&TëaVËIÛÄÉ[µWò#ÕròÖÄÉŽjQóƒ—Õr²câäÂ‰1Z-/ïL¼4êªªc¬›´º‘†æ<˜·³c4±ÍÆÎŠWÌ‘ÑÚ64s;3Ä\1KFÃÛÐ,ïÌ¸uÅ,mpC3Âæ`xÅüíq#eó#ìsc´É”QÎÛWÌÑ.7tÃlÈ¬˜£mnèÆ9'Á°bNr,sÇœ¨0­@Ò{êÚ-+.sò<ÙÁüÿôcââ¯|eQOsÐÿŸ³’˜èÚá¬uÀ%–óX¸Á+gŠXK¸©8îÀÆ«ÁZÙ£ëu9Kx´Žg/áÍ^¤cËe”"=õDÖïÅ‚-Ä3™™×åò—å´U9eíÛ.³á²Vä'#W_h“Â‹ú[ñK×éÂ“X>¢[ðÕ6¾'?gq×`0Ô òÃKS×Ë—ñJ8
)WÅó‹œyKiìM!7‰ö†Æ¥ytÝ¬ð'¡ë^Ý¸z¦0¥æÊœò+I=_éËòRHß˜¿¸xz7ƒ=} …Y’`0YQPú‹g+H×¿³G i?º!Mœ×r2ZsÄ^*jˆUýMç5¸á½ =Ò,åUéµ¬…¢Ý‘—òógºðq‡Ðk`çßÝ:ÿÆGåÊÇÔ­bðO`jªÐ©ô*Vv¨éV Ì´[W©­åÍšRfJò’ÖH³Lª¤!ô2Åš^7Úú{$ÊÄ¥hÀðzHz%¼dr"ÿpQú¨Á)L—¿¯sscãÙ ÿÕ=wP ±‘^ÄvoäÜæ<Þ
@S°ØöúWyèMÊŽÌy«6-!{¤N¢i¿ïFÑ+\Iy½žE9ÈÕ Ôx…:Å³X!Ë‚Rp•êä?Èk Á¿øš¼þÃÌ\7ÞàC[#ÈÏ€Þ(v@Åéå”lh^Ò¦ýrßLý¨{þcçtO»Ð33°%¬ÊÇ4˜…Iæ`6§cˆãE“‘ý(;Gï…žÃÝü]gÓ©?¶Ñ]Šn´scâ„wž*4(ˆ…Ì"T`¥ýO7G×0	‚U˜ŽtG®ÞÎ­n+¡‘é)®ñ ÙÝ†öMßð¦v3m©`™Z›´/EÏ&¼•ù—3@Ô
Ù±¬<µÓN}±=Êºc{b3^³ï€·(uGî8)À'<ÿ#MtkI4‰|§¶F"Ñ÷&jsŽ ï\²“/è7©&á’$3eu øI}0$¸Ò3“—øOX½.Ðú}¼’·,ˆ!»é*pj#“z¶še:Ef„oÀ„çìœþ1àoÍÀÎGoå¢óN6uévI´öÁåßÇƒä†Â§ŽÁXÏov•¡<SzEE:¹ºøé<‹Ç‘ô^Rñn.n:§F<½T¼«£³Î¥uvœÂäxéÞÉbž¤«Ô0‡
bn7ýÓ#ò™ÊÍããïþÖa–D×¼'rà‰‘r†+jÛu˜téFõ‡v«ˆwÊÀvC„ ›yˆ¶Ùö1‰ú+ëÂ¼F~§ÃoÆhf¢/ÞÁ—ˆ~¹gð€“nµg;Uzû~QŸ[0Óï”Gð&”'¥ë“~z‚×qC}­oEiƒ³Á	f”Ù»y³ýÞ«Bjê¡~à›#sO½–</ã ¿cÀ§].dVÄŽ8c¢aFþíâcÑ< 9¶GÀQIÈJ†µÄà	14êÇUýF '!Ìô‘jb&`(H{I¬]š»§…èÊÖb"Xª4·Hü<>`èY×RQWgºõSvÀä(¦€G‰ätO%Ÿ•œho˜Õ„]áôò	 Å€õ%ÑY¡V=]|„BPµOÁÀÁïùýG1VàŒåŸ8B±»¶=MOöKŠÅ)‹ÀSûÐ¬~H¾VVÍRú2LÂ€-€»ÎWÕ,?s–­8y¥Ô‹!jåKÖ›|,[±òN©™~òl5'Í‚Ør6cô´ä-…ØimëZ7ýó&«OÛêú‰ÿéƒ`íÏL—rBúÓ0t	ùµdkÉTíbéV=ßúg°?fg„9ÙÕ¿M®_¤¾°c´À|öDS‚üÂÝäâ÷K)™*a¡1cVÚûlÊ4?±§[5ZÕ^*µfÊÜ¬Æ©Ìu=g3¿Ô~þ‰™ÈöñPYÿÖå.Ê@~Ê&‡ÀÕúÂ¶*mD·0Ø¿ÌÖrý)ÑwÀ¾iK"ÚlŽÁMô]×Ñ"N¬z­”Ù41Tzò-UÎ‡˜Å£uC¿cÛrº[ÿ&,t¼^@{­xznßÜ€òe¼ŽFî¿a‰ÂÄW›h ³üjäk‰ÍúðáO|–ôoâ‚5S¿‚+Ô]vøÙzþøƒq@} âc²YèÒÊO
!KÅŸ:WçÝó“]ráazŸL‚0Æ…WÜ|B”Ú¥4^‹ÜÑ\NùˆÈ©W©øæÖï"Dw#‘wDFàf`ÈGf$#^>'êàZ®6,
Y}­gÔ—ñSÂ˜Ñ!†î 	“q>“q0FSÉ»ŒÚ¢–’û[ï{À!H\Ÿ&BG6’(*±:uåMüLùÎW[9DK	Í÷ß':*-9…KŒ(7¥7Ìr”o89zLf6³Ó&QkƒN¼†&ÚCŠñQº¦šØü„óŽÐdV¥€¡ ðÞ éWIåÑAž¥ÝÇè¸‰ ¤]è1ïŒ×¤È@/1Kæ'&ÐÛÐw$…Á4‰>
½ œªäŒA —x£U”`¯Ð^UÈmW<-ÑRÕ3L59WÐð?>…€¤_3Ö•„~='£b<áyVÐrúu^ê’„Ø³àûè1<L2Ã>º”JÌ×+øÇþÈuöHCPr¼Ø¿ä_b+©.¦“ >1sh¬yÄ®E5Þ-Å‘K0¸l0v>W«ôÇ¯„Â…AL­lÈÌôÈ½úÐ ßMÒ´L¦¦.œO›à^]àÀŽh‹Ý‘Øð,ÄÊ®ç á>Rb‹gô$%‡…8rýq“8jÉ§uƒ:`"®¥ìOYÀø5è^³^=Sî“Z­&’‡·að^Ä·øVWÑrçÑ·ÇP«Fš×´3Þ§Ù,D@«CS1@öd?3ÛiH,KÃ2… @œƒ~)vÉ?¸3mÇ¤»>&N ²ú¥Hðž hÏo":…É®çÐD\¨¼ù3BùÙÂg‹—Fn_ñ²ä–n—ô€'µJØà½Wâø¶òkãžŒF¨öx0`ØàQS("/V¤Ð¥B õgžÝFÏ¾Ct½¿^)Ð˜E§[)°n—¡ËõÇããîÏ±J{´RXÿ]ÁlQ¡©}%”E¬t} ðh²Q ¿þ‚8Iëlz—² fDÑ¿/)Œ‡Þx¬OCÒ_Óã¦’PXsN’Yh_¹É«õŸ“rzFÍU¤d¯¾l”E˜éi
<Ò“×IB,qCXþCó>ŒùBÚI )5 .pðëuÎÌT<À¿8ÖÀ²Œm˜¿ÃÐ½úv\uÇ¹±Ë¦–“]hž±È`ä¨®%0Ó@5FÐªpµÔe*ŠNÄD%“Í[ÎÈZJ/þÒ×S‘öÕXûýÓ®®.;W7,W¹HÝqç†Þ •&äá3){á‰ïX€_šÙ`	Û² ¤^æ¦})F1¥<~Ä¯¯­îõÁ¿®J’`-Š­qà¸3"¼#$¾®#øÎQL§ð8}èÏÐ!0¯ø_Å•ö0€ 7$ fg”Ž0ŽÎ/n@šŒ“¼|®t®´…¤U™áOÀâ>!È&%Þ#t
^+ö‹âp”ä«Àç?žYÝ‹ƒ›Sëàô
LÙÕa
]´‹8ä†iMêb¾r%ÑÔê•Æ	4—û‰˜a_cÅ[køg@iƒY)Ó”{/îß’’(£=ÔG_ƒ©ã£LV7gÝƒ]Å©.²"œÖS°/­K´ÛôÇËÃÎÍ‘uyuñc÷º{qŽ ƒîÍ'º>Sàû4uý¿H;3ÛƒÊçw¿‰–¨»!½Ç•‚‹DpCŠ¼„x"cbIÞÒKˆI}—z]¤²ã ý:º©,+ ê‘ŸH»fŒpç»÷ì#Â¸è%8(áØÁksÊ—Ž+½K¦xë>H¼ôcbêšâÜ{yþjçQ-öË‡Ð5ÊfŠŸ{}ÿL²”VRF…ë >ûºëµ¦uE‰^eO‹z‹úM?àÁùÂƒÓîzÉLy”Þ£Á™âT'PråÉC
6€aÞ	Lö‰k(bŸÛ6¸›…õ(ãoþUîfâç$íÊ'ñ1RøçzUÚ~5á”ª*ð}b8å$A™ØÜø‰Üt/Rbø1–ã¢å:f'8Ú0’gèšûU‘¡ôtL7ê"šæˆ1…3´=_øg9S=4-§©ìÈSfXÅÙáYÉgÉƒ™Rô}R”²6È^«7eqö÷Ñs\?ÆÉÜ²ÛÔÍ70½ñ#Öl¡J|csÊ¹,$º¨¨šØIFAÞ­dö-ó%®»é,oHó¨L‘ò9#Psã0«ßòkQ«|Ä=`Î¦hPÉjƒQÏŽØöØ2
±!š(\žüãÎ-£Ê’ ]­*˜IòeÚo~3ŽŽ;OodKô}Ò3tB8º0Ýx/ucÎ¶RÉ¡Y³å¸¥ŠšŒ,'Ý:!½Gr²¿È˜”Á’¸Í0I/:Íš™ *å9=kˆ}ðÊ\ •3?3bÎ¨N\å„æ¤,¦H#YÖÌºÆ
áÝµÔ›¤´†gJ(w»l[^3ò}äÔ´PÑºØžþ…ã¹áßÙ³ýk=KsÆnŽ fÈ¤¿Öá[Ä¥«ç»t{·íÿS•2nÃ¯7näÓ¬™[ß‹6üVm¨Z´•´¤«´f`Îþ# HÈ·Ûxœµ\ks£È’ý¼ú÷~i;¬n^’ÐÕÞEÙÚÑkÙÝëí °(ÙÜA d÷Fÿ÷Í*@¢€’š%ÂmW‘u*3OfÖCšùv‰¬åè{{ê¯q˜àöÄÃaêo|ÿ]/§mé«ÐŽâvà¦8F—ßZß.[è"4_ØhyþæE1Šñ6zÆ(}ò´Žv¯±ÿø”"7ôPÃ(2P?¼û²¾@’ öÚðŠ,ì>ÂÈÆë§0
¢ÇW4êà ûi‚´ÍÆ|I®È$(	2q‚ãgìåø—ÿoA'?61qG±»Eðç&Æ%Ñ&}qc<@¯Ñ­ÝâùIû{°ÊOsK@î4èÛ‡85}¿áx› hC×óºÆ!ŽÝ -÷à@4=8¹0;éLž°‡^éˆ1ÑÁÊu@ã€ÝÔÂÂ>¼Ñ3Žh#‰ äÓä˜W„¾/nJ4Q´#ã.@ÝW”qžýš;¸jþÑJù!~Šv$ l|ñ«Œö	Þìƒ+Âènbß,V6Òæ?ÐfšÚÜþ1 áô)‚·øgPþvø€vÅn˜B¨mÂÌ0õ¢'Ó‰ýƒX0žØsÃ²Ðxa"-5Óžè«©f¢åÊ\.,ã+‚#jQ'ò]Œ6 ¶ÀN]?H
ÃÿÂˆÎâ´íùîã×'Úÿûx“ù…Šxxã‡8¡úoöáš84¡©°u×q/"øëw~ðÏ‘‹Âç-n¯¿ÀG»`ÿØö©×iÔ!¤íÁ7”#üà>Änê¢¡{Ojÿê]_²®Ïa¾®£í¿µHÚ¶Zõ7ndÚµfÎüvf87­¿fêV»kýËéêz2wnÓš,æÎLûp´ø¦Ødbªã-ôå{1›D)®PÂ]’7–íŒ'SÃ±&ÿe€ËÐ©×UTA¸8ˆ-æ†3"öù"
ŠÚéu/úvIZ’.'¿.ˆïªSè7«ùo‡±ÝNG&#™±]väx±2ßjÓ*B¿{TÍ²¿;óÕÌ™×šþÃ™·T5I¾ öÖC)Z?¹ñ%JÒ?œ¸ÎÎmx_÷ýýó/–-
‚ðÛþ‘þr…Jm1oKå÷-ôá§Q@*Ì”ß—bWnñŒ9J"*Wg‘s‰OÎÒ—„éAÓr‡ÈtÈçÙR` ²TvP¹ã[dUam9tÓ*e~n¥ìóR[ª´å3¦PK/µÅJ[:
9‡T+t¨ç³¡V¢U­8N-;î¼)
+ú]–ÿ¢}†B®@–¬(ÚgXQ@VHn6…È¶%ñÓSôº„oõhÆ±CÎ³Êy©ç“	(ô$ÚB[Ô$Xi˜²|ÞØ;·%”tä ÇYT¨;Ÿ®ñ$Žnf¹ÛKm¹Òî~––#D¯©m)kgLÑ­h­– KmñóSHB	¢Ô.¦TÎö“Âº©ÃÓ)M÷9üNIÃc³2úy|•ÅW+¬wÏ¦€@ÐýG	’îOŠ6¬¿ëŸœ˜ò¶È’üéEÊ(¬°`g  0ð*¯ž­¾Êª¯²êC?3‘¡ŒŸ7ó5b,*ŠO“:d+þÙÊZ‚9×R_'_ôŠ®áŸ3Û°a¶am¶áŸcÛ°Á¶aÝ¶áŸcÛ°Á¶áÑ¶CÚœQ»ò<‘Ø´‘Ù´9£´ä‰"±y#³ys†þ*«¿ÊêŸçÍúç‰"±y“áŸÁ-Šç°]‚9°]ê+bëÐ¥
ÊlªPEì`úr¥Î™m¨Õ¡‡ööž7ÛÁEL_ÅÞaaÛ¯AµZßNÝc^ZûÝ.ŠÉ…Ý4zl/ÝGLn1£-ß¡Ö‰‘ßZ­ôu‡É%R’ÆûuŠÇMóÛ?ÇùòÅqvîúwì9ÎÅ
"rCñˆ­»sp˜Æ¯èŸÄŽ³—%23™x2Ôú,ÿ1tÓ}Œë¯n³»ÈAëWüàx4Ó¾;Öj¹\˜¶1r¦‹kg©]Ž1·Í‰a¡/ôæµQâÿ/Ž6_è ò·¢£~qñiãËfÏ÷ÛÜ”„Z×à¤ü½A÷oYò³êŠpŒÅ"™ÞžŽdü‘âÐÃ^Ûši¦&á&Š·ôRùtˆÌW³¡a:ÆwÛ˜@u
ãh6è=\Ù :}éèVî·¨: ¸ðkQ'"ÎÛùbn\¸6æ'ßßBçÂ¯À›ÍƒÑïX[7NoÁQlíðÚßøëV*BZ1âáÇƒ÷…|¼ØEÞJ!K’wŽ-‡ùçÑÖÝàÖöø} Ç±SƒS‹ï¢8Iß…pÓ}ù*ŸÐ°nüÇ§{ùçGñ€ä~>Èp%L&óñÂ±GE­:ÃØ“FÀOƒè™6GnêÞ¿•‚¬ãŽžÍ œ$‡tâü#¶ûî‡]}Ò‚_µtÌ¼ø1&
m‰/Jbxà])WŠ¨äÙk§Ò:d^¢Ø;%2ãŠü:¥+ýcÉçDNŠ·‡Ôý'/ÎKcfCö7¾7¨õÇ`¡x¯ü¬¿ñ1Æ0„˜Ÿ¿01}Rd::nŒ]ñ-é-™£˜r/wÕÝJ£ŸÝàÔûG:°Š4àc7‰B0°øpû^”ÈT¿>˜õ+vôwW€ ¿¥®YÑõñÎ‡ÈaM×Ç	ÝreVwëîNßÇ1˜dã-´³MS%"Yù™û‡¿ÝoOÈg.+äO¬1Œ|ñ)|'zœŠLä‰?hƒÔ§Uè§‰‰]ÏŽF±»»[œ€'
šåïb?…IÃÖ "oõ|³NÝ‡ qÅz´ÓZÞåWáúÔˆcúV¹9›áŒ\z6;ùK§7=ÙjàËSs”NåÄÀ±ÓmwD‘ì›ÌúènÇþNV™¼ˆ6©º§ÊÆüÙ=½Î°çŒ¦}§Í¬¦–2íø<¸Þ*‰çnèƒhý{28!h½&ïü#ŠM¼ŽžqüªAÐ(¸_›ž±f#¾Q|GÄX¯ÙFAœFXc½­uÄ×„&F»|ô7„ÔG0ÆXÄŸh<ƒ`§ËÜ'të`Än‚‹ùÁ¢˜Ó‡|«dëöS¥ià‡%D†B/I<°‚œ"±$¸Œü0-3Ãœùa—ySÏÜ°‚ŒÕ»µIµ(SSÂŠ~||(Û]€Sl=íS/z	“A£ YÏQìÂOPAdt$ß:Fâ	ÁQá§wßûÉgfíîn°¤OaÆ ’½DFÉía?tbj¦–;÷Ÿü,ÜÃ™ïØ›,˜e¥¸”Ø‰½•
i”ºÁ|eUÁZ¥ÈZ§å¤i„Z·ÝpN1nŠy©@‚bê‡¿›8=] vÑY&±þä†yÖðý(	ª£ôå{I¥»éF
ƒÃmG%(ªÆä‚×«Éèhõ/Ä­ÇƒVq=À?Þ¿u9ÐºDK}b Ã4&";vs¦ÙpD>q/ðí#Ë	q¼ƒÉú{X’Z¥+t8Y•û†®7
‚‘•ÍÊ»ñ…¹~Ž›ºñ.p_í÷„­YdÆúJb´Ž‚†—DÅ¯u¨-iØ<5(ûŸ˜rD/ïW!þJ]Š=}4Û›½X™ÜWºÖhóÿðú¡Œu¼nèž¹‰0Ìá"S ê>ìÒ±×4oM¯AäWS¸K0äÍqJ¯¿NÝ~±Á>¾CÚ:õŸir ?I£ì–î±_I„m¬È7½6/ŽKæwžüÄ“Nå¸G/óbZ1Åá€)11~$GÙÞÍ5±pú¡Ä‘{¨mÛÛ ¢âH"ÛuP]¸ŒB5Ù¼í“ñÝ}õxâ—†Þ$ˆÒš=°ònýT£_§´Á‡U»’}P™¦íNW¾zOÚäÍît«$êUªy{bÇëîfÂŽìÇðê¶âðÀ!÷ÖZoLˆƒ˜4rŸ7™HlŽ‚÷’ðóM5`¡uJèõî¥^ÿ(Ï,SeËŠõê-ËÕ½Ømä„qh¶\½+³;íòUrÆÆ­E/¼k1¶ÓÐF­Ž©ÙÆUU?˜L ¿ã±eØ°Q$Ôeúîá5Å	™¥
xÓéB×ÈÕ¼eè6àê‹ÕÜ¾ª€Š¨¨ ¶Ôá‚.w†é,æÎÍbeZ5 *uQ[î½:Ö&SÇ¸5ævƒžTf@eµ•>tdÜNt#ÇÖèS£Ù|…í¨Ý¹ ×C`H³ŒÇò´Ã€v¨Ÿ¨édlØ“™AT¶¦†±„íÑ¤ê í2 = Jåu æd»,K©z @{¨
DõùD5Ê *Ú¢D¡Ï5Ò„B°þÖH}Úg@E˜‚/¤ÌÅµ©ÍhPÁN –¿À€J4¥d(¥>‹SŽš9¨È€ÊÀ”¨t8 ÚíuÌÇ¤ ª Sb§Ç]ÍïKÈypk– Ó…e5EËÇ´C˜êö9 w†FJÓüšDêÔÖ¸æ+h¥òˆ²4[s&$œÆ¤ëhq7·n&c6ü	h‡U	Q}.Qó‘c/è/ÝÔó¢Zu/í2 }RûQäÃN’ ŽmÌ–À˜qÕT¤Å^T€(Iä¥/L˜Ò†P Lmq@Õµ*šª(4Û’Ä#jdNnLWÈÐÉ§ˆ–*[å‚"öPˆ’Q¦1Ó&s’ó–5¢àü“ÊÏd”¤Hd=áu((wæÄ6,BÚxªY7Õ"-1%uQ]QUÐ±¹˜Áze1¹E@™Œ’º„¨¨(Y¦©¢UÄ”É(©GˆRyDMÃp¬%þ‰õ„€2%õ(Yàe›“YìÎÔžX¢™Œ’ÉnByD•@g'A™Œ’ÉnB–xD-–$’‹‰vÍõ e2J¦»	™GTžCºî”3‹)ÿB0™„’ÉfBVx<±YJ°³EÕˆbJ&›	¹Ëã©¦Bcð“]“PrW‚­Ý^½Tä‚2	%÷”¶œm&Þ¥iSFP&¡dµÛ–³ÍÄ»4å2	%÷Õ¶ÂßK0YÚ¬gÊ$”"
m…–˜·A›õÌ@™„R$©­På›7(púw–7?ŽTs9•™„Rd¥­(\¢†³r¬,Vi&¡¥ÛV:\¢ª +Ë¨ëJ@™ŒR:@T—K”}cÀÙh
¿a²§tYa×§”É(¥D©\¢ò½þbn­fK²æ5Õ²åg2JQ¨>—(ú§…~zé' LF)}¥Ýšˆ"x8ûœ2q~ÛYýä=¡'Lú5
tèD“;qšœŒ”èïH¼ªÈñÎˆ„;Uaöìýf‰êAŽL\›™w<#ÂRMMí®É¹*wmÂö±° ©UI²5”²bVÙÉé ^Óv6™SâJ[àƒp][Öuëæ(QÓ³)¥ˆ ò–`–ÐD´Æ7£ˆt·*´g%ˆ³H’A=î ÊzÈS«Ã& =[Nö:7+›lñÒµ:±Éî…°,ÔÈ;ŠÌr‘a'Ž¿t@´G[: Æá©S;Q#³á K{5û¯T´fgõHJ¥jÆUÎ˜T¨fÐ‰3#P³§z¤Rµ 9}À#cÔš*üó•¯iR9E*…EÅkÙt’#’ý:eom&é°Z.òOuT¾¦Ð©Œ€“Y=–ª§1Dù‰P9aåÙ%ÉüÀ®Ž˜å#j^â¸ŠIê•?$Ÿ¥^V›O`‡)øv°ò~ÍŠãaŒ¾¯Xæ\Ed:5ZØc•©™Îœz¨HÍTÞžƒJËä{ÀÕ­‚ã{Ié+æ¶15f†mþÈŠµž¸!ß®¨­Ösä{ôÿç€SÇsb÷åË>LèÇãô¿ãG—ûÍòÃ8ÌþØxƒÖqŽÑÒÑ!.,ê»ÕtŠxÓú?*,Ï®¼xœ=Œ½
1„û<Å–Ì\©¢ ‚…`cw,IÌ-äçØÛ|{#¢Õ03ßLÛÂíz¼›YŸ'oÎÎg¡yÞÀéz1]³6…MDñ¬Z­@Ã¡Œ/¦0,ìºu×Á­DrRSû²Ÿe(õ!ú’‘]i6vÎî¦iKªd«e_Ú/=:GBuû)!KKX|(ä`W`dÐºšç
&áÙ
Ô³„Ù¶ÉýÃ1Î2è¯.·êê€NDì€:xœ{ÃøŽqÂd¡ôÄ¢¤ÄôÔøäüœœÔä’Ìü¼‰‹=¬oãî€bxœ{ÃøqÂdœÄ’Ô¼äÊø’¢ÄäìÌ¼ô‰‹”¹8@ŠKŠJ“K
rJÓ3ó´ ´¦5 ½mÊµxœ=ŒMÂ0Dïù{´Á´Ò£^zzñVB²¦|”íVðß›"zfÞcšúûå¡:o0Í¨nû§GÚÃõÞ©¶Þ©L*hF áœ§7y72lLí®m¡ÏÁ[ïb]øªœsy˜“&›k«k³¤QçŸir,f#„O¿upÈcÀˆLï!d·Y±&g¶`FM e)¯-ÌL‹a(/Q'ÒDû§°8Ÿ@~³:ˆ¶ßK€·xœ+Î/-JN-VÐ¶UˆæRPP/È)MÏÌ+Ö/ÎÏÉLÉLÏ…3tKRsRsSKŠ*õ“óSô’ÕuˆUž‘š˜’ZDŠŽäü¼´ÌtRt¤$–$ê&¥&‚5År FàL^½xœUÁJÄ0†ÏÍS+È¶˜¶Ö‹(EA„=,ìÅ[(Él;&%MŠ"¾»‰X©‡	C¾ÿÿ¦ªàt|~ã’hfä¯
§3¡»ƒ—ã7eÍ­ãºóèXU0(àÉNŽúÁÃ^æÐÔÍœ¬&EýXFž"Á64ZÓ9eKÕ•2˜¡{˜×¤´cLVŒ]‘:(„Ý¤COf®¬œÒðàIÏå°ÛDÖúKˆ	naý=z±)AFáû~ö.HfQ(\ ˆOÎ>YFÆC¼²ÉBõ=‹äûD’lcŠÅ+¸ü_É¡¥œe¥­®…&¡Ì¡ÎÀu’ÿîñÐû”{#èç~xœ{Å|žq‚;£ñD ‘øøR…âüœÌ”ÌôÜøôÔ’ø²ÒÉ»˜5­¹ '\²³Éxœ}VKoã6>G¿‚u.1°LÚÛ“k)‰ ÛkØyìž†¤c¥%%¹)öÇwHê-u:hßÌp¾òî÷á7¼‘L(#pÌ…*äI
ý'zÜoðýíï8Ó8¡…ÐÁu©¸8¡õ6$ñnMâM\ƒD*1¢<)?¤2wÎì‡U•Š ¸–'ô›7ç7oášì^·Ñýü‰¡yŠVat Û—ÍsLð³lc4>Á@²ß¼<Æ;òŽñ×BhqûÇíýâ)–”\ KùíyÞôf·ÚF7Hlñ-Þ„Ú
å‡,h‚*¡x¦‘Éƒs`HüSÀÉÈL°žÆ[~	®Ö_·ÛÕ.$›øø|\]E»çÃ÷›£9æ’~¸(á­i^”Zàd*3…dÒ `I¬å²sæZV'YëZÚ8õqzN¢ÀLSsÆ¼Ló6®• ÐK¬+˜gF¬ÙÈ??Q™ü÷V2öwfcÉ1+tÒ8JO¦OÄ2Uè,I„®$'Ö°çš—úC´ëkêcCœfJ™8 m+lImØ¨–Ê¶œ&ýókz:½PÝ?ëÊÆ…œ.£C<EÇ¦ …iÐvÀt‰ì÷p¬)q¦C“R]`Êy?§ç² êAVG«¦ä\¸Œb‰ çL
Ì2­+è{"°Ð:Óm‚kk„öëF·3B‘5I©Š†›ÖX4ÒC#mBXaŒí9MÌ·Q_ÞÑ·3±Ð£Ùs*[¤GQÔhÇFÞ!yÓÉ)P ç:WùÊ)ú¬ö…z‡1±}:Zù¯vhd]*ÞlØÞÓSVÈ
ö(>'2ýÙ/ëá­j5zjÕuŸq/©}'uþß×ûÿ|Ý¿"Ã¶-=nÚ´#X°™)³¦nAL†¤‰HE¡?q·p–[~7˜‘²Üº¥qd\·v00GÏÌpZtÒ¡>LÃZIM¦°l¯»&…þàLPÜ7±Á¼+é\{øP4Î)ì'.í¤Œº	£=há®é´Üˆu#­[SÑT˜œ²1ÿv|†ˆ­Ï,=›¥:eÓÑŠ½´>UOhk9îešMÝu6Ø{è¹SºI5ý.µªÉ„K¾Ëú,ºå!*x˜Ø›³¯ª¯ÌV4˜†¬äøx±ƒàJhÓcØÚêèÑÞéÑk«÷³ jb'ÞÔîÃêÝj”ýz´«4šÝønuŽ‹uÃ|Vì³¹ËÆÃµñêæVkÙÓ»„k„æ’›y4lgTò9™_·íµv.‚ó'ÿL .*ÜïÅ8ÄLçâ Ì ¥3‘JeÊ<Ï4,(èÇ$ÒK§‡’~”0J)Œèl¸±X“Ô²è=Ë
G¥‡l°â,j.ýVŽPsL²”ó<òaFetÈ£¼Jt²YÏ8jè‰jîÞ2hƒM`ô|#¨¦¨Üu_è©{À&¬´œkºú¦%ü¬Ò<‘ŒÚU‹(ë^`v8C  ¾–ÁÛØòôžçþ1OêWúËª*£»§xœí=ûSGÒ?‹¿b¢”Ap†|.—±«ˆ-®xà$—Gm-«YØó>t»+l8ûÿº{Þ³+‰§Sç*Í«§g¦§_Ó3zú”¾ùm°›D<¯ø`gÄó:‰^n°Ÿwß­®Šr†5/¾Mò(Œ8û!Žò:]=eeñ²Ì7«ªGI3+MNÝ¼Iž@¶›—äu}9æ•››&ùäÃÓØË­.«§UÖ˜k²»Q‘eE¾zÞµòò‹Œ»9€M3sãÀü…oG<NrÎ^·N†Áë½7VÝ«¼¢JˆA±¨È«šEçaÉVò0ãÕ8ŒxŒØKÖÝWi–èifuÁ&ïn¶ …ÕùëkkAãÿ²?ÖØêê*ûþ{L.–Ø§MÝ+`ÊF¼æQ >=Ä?È« fyÕ§Â•bRÕd<.Êš–þ»ÐÁlX4 ¶¶¹Ð_9ØŽ[_ÔYèP1$þ¯ƒ°®KÝfÀZÄU0J ·Zî³î&|ÂŸR»î2t“Ä¬÷%—àÐÚO§SòzRæˆ¤>µ¡SÕe”{Ýó¢ªY˜‡gÐAŸIÈ/œ¸ä¼'²{ê'gêh©qæ‚H1ðfPÏ–F`Ó›½…Žøj/Lü¢™p9t¨&Æ=†oEÙën‡I
"àù$ã%ì3¦É†f¬9È@&p„nu^¼HjžáÈ×¸uY5Ž[}o!*Ã©‡zç*]MNaõ¡gÈ¬TfT—)¤#•SªRqQ<ŒÎ	–é½ÏÎ—:z\º–î¡wÞg°,ªã÷®«Ã*À"äXOT”«Ô²Ú4Ñ½D”p'¾C39½3(vYÝ™°qŠN²Ö\¬<´|¼ 1ùñiÞrÓ"ã—°<4Äž_ÄEwÔ$‚•®æ#¶e£>À”Ùãtr–älEüF>éàÎ qÅ½î“ÁwëƒÏ5ü|FŸßSÆsü\§ÏÕŸ9lãî~1âø÷x¿H0ñ¯»¹)ë‰·l~ü²]”YXÓ·_Ù¿ ícº_ý¯
V«ß‹<ê}U ±*±@ö+?5V^ã“˜Œ»b“Uæ½ý·»»Š˜E[·mõ­:›z 3jähNá'ÆÓŠ¤XŽ„) ÅiÐÌ‘ t˜&]#AH~ÏeÉHPúˆˆM'![XŽx¡<æÐ°ý}ÿ˜Uc”Œ˜TK.Ùë"¯Ë"MApªN`xÝ?aÝúœ³³ä‚çÀ‡/@ŸaXZrä“€{LÔ‘9OAš0¬-áÃ	‘˜^„eRL*&ZV«]bôÀ¦ÅÂŠ%‹Óðªà'Lž*•ãbÊébøáŽ8èG–Ö±=‹yœœÑÒŠ)´Ç >¸TÍÊQ|†Ê4YujãÌæø-ÅEO‚­£ŸŽ{Å¸®–e+ÌÜÞ;éuEëA¬öÔR±À»pûÌI.÷%Œáþ›Þ²ìHRxXV<€%	Š1Ï{‹0ô¾$!A;H  ‘±¤¥# ‘@<1ñ/a•Òdb3pé50U@E»Ø‚>+€z¢´ Ìâ‘m­Ÿ ;Aô€2TÃ?Ë8¥U‰ª‘ÃÖê÷¨j_`Œ-hÇÊ²WÓwÛ¤¢ÁËº–¾ `•òxÉ¹âNVÃØXè ¢”$\7çlh5_j;øvsnÔm¹™½ì ýŒ@FkóÑ$³Ó$ËK&Š OG•ßö|˜%GáiÊ±)®£Y&è]Êýt+NKŸûE"›>ïŸ¿t‚`òß1ÛŒÁÜÓ¢H™;híÍãÃ1©·;ûÀ¥4jƒÕÿ¥\1)ç>s† yÔöîÖO½®Àx 0F(
Š7š¾?<êX¦@‡æu æ¡ü¬ ¸SÞ÷–à³°Þ‡`ºT¡e¶±ªh÷ñ%ûåØªèÜ©7<úñàx¸)Í¤o|Z°u.mÅæU2ò™»ß)\±lÁÑl Zª»?R¥¡[ýk	\ØA¡IÅ‹´Í¦ä4ÉÑèýÓùvÞM×S¥@Y$Ã—¾?€ÄsLãÛ	<D5;Ëê r»»àë7Å^ŸÖŽ½aGA‘´ºªÂ†¨¼ªÒÓÄF–u’Ÿ±Ý·X“PC÷JH$•BÈ—@OÑï¦)A‘kÉSÌF0ÁU'Gá	mÔWØØŽ.#–%)˜"ê‰7[¶ôÙUŽ#Ç™$Q€´#%¯&iÝ.€ Æógš	-x:m‚§cÆj*JìgJ›'Ço··w~ë‰UÀ@ [ª[Ÿ©”ôx¿Ú ††MÙR¨Úš1 “Ô þrº²›¥Zª{™|‘A\¶ŸVÒ0]”¦é“jð¤<Å&¼Â…=˜ÄWf‹Ô Ê{<-s‹¹ûš›f6Ì\ÅèCj?ø=¨’+ÞyÉðO÷0‹Öe5u:èR4Xc.óT‰…HSªPÐæÏÁLø#*iê‘5-ê’Õ«¬QÄ|¤<w2°}”!©IBS¤†%bÇcåEñU¨u¾2ìx‘†o‹š(LZè×Ýÿeo€1ü~¼‡'äSÜGtÃÙÚRuÿ§Ú`Ç“(âÈ%ÁŒ7žŒˆ/n<éí|xþ¬‹¬’rÚÆ“	ÃÙ†ta/š~q.Yo Ÿ?êek£DYnÎª@°)W…‹öò÷!ä"nH·ÄRKH 	[tc–œÄ}sÐƒÓËš1†‘K“ æ…äØ­Ì€ñ‚ÁlÅF~lN×Š°Wì¯E¢©š­É¢á£|e]®6y»šáÁ˜­Ddm…éþQ®5Ñ5+ 6æiXuàìI>r ’U*)ÆK‚Ìáàç_«Hì‡Øó†Vûè>Õª©þ„ßQÚ£Ÿ†ÏÐ¿àë5·P¨þ”¾õn‹âtRK.Ñgi"òz,Ynv,ScG.-¡ï+‡ÂÁÓ÷¤¸/d]
5¨úÕëÆº§“8æ%ƒÔY}Žt……À.ÿ3IJÞ˜A*„Va¦,N„óB4‡Ègñ„7oLÇMôJÁâõŽOÞììÛ;»Ãýƒ¾å±˜¦{^	ŒŒ	itWÕ’–qº¢ù+š 3ÖQÓ»©(Œ­à<ýíôRš—®®cüT`·…äýé´?þëdH›®À•Õ¹•O–•«ãú`}dó¥TµT×Wg:"i0
Í­ž—Fª9®±Õ3Ö{„z¸ïºy,Ú²¥Âk•Yã†‹Ø~–åó:–M€ßœZ^_ï<k¸³ÿËÖ®çÝª.eµ”ÊàÍðøu0üíD) ?M*b¼va˜¬§2yª;þËÞ2›ò˜×@{©gµ1˜6o`ýËd\k~¨9¬0b ÎòÂŠXP“Ó¶¶²¡û7‹ªb,n×…4dk’¼FŸ$ÉŒ‹*ùd<ÓäHøw§n" žt?é¹–x4H‚Î4aÀ3Š'búŒ|^¦EhÆÜJwÀ âuº_óº¤Q$‚û]á@rŠ¶¢áÁÑ›ƒýÝ‰ÎÈÝ	Õ¬	”ÛBÃ²¦PÙŽòü^“/:7BÊ-ž’³ö BhqC?¤98¶Ê>~d-”ÞF‚Ä!ûfyz)<Ãì}JÌ.ãH“#>">%èT/Kc£NgÕ¦VrèFvµ‘œž}íÈ&ÛÔÆµ¿®¥-ÍòšÙ–¥Œœv€uX÷:Vs—¨AÚÎ¾É¬$õ¬å6ysG²;,$Á½%6ÜÍŽ
™ÊPæ×°së6µh†˜< …ô;vÃŸy×
|siÀV"¨éÏ–…#_ï—ýÑÄIžTç=œmêå~Ç³½³¿süsc@È×z8Ð‡5˜{>¸*ß‡aKÉDRŽ j‘±_Ër¶@2 u‰ ßAÂm8œ;|†Óç{0Ëp¨¶…RêÆXb™(”þ;6|MFÎcÕaÎxp8Ü¿…6Côv§w×aòj€´4 ME©0‚‡âø-åÅÓWZÕ”iêÈtä–
LÚ+‚Ž°“û¨â ¦!Oã8MòWxD7÷;¢ƒííÝý¦Ò£Ö'À67W³©þcT¦»Œ©{2ÉqóY=È7q;îœké!®ÆÑ®•ü½=Ã®
2UñÿùW?¯êq=e»_’Æ¥|üÈš.BÏ9DÞ Ås0¬sTðŠ<uã²¸HFÜr¾`¹os<K3n!ë ¨Ý—+6qD~ÀÞºñHií vçø4*&éÈ8YÆ³¢¼4Ü
t½Éû{Ã½¹Þdã*œï)l:
[ý„öè[ãMf:ý©h=L6®Â†§ð«Q\mŸ}S]»¦Îúå½o _Ò:@´œožËí.ZëœhvVæ»ÐœHX·€ŽáÜóDQ Ãã4‰ÐÆŽ~ÝBuè¬é5‘ºª\*F€MÆðý9JfºI¡"UæÓ:êcŽþñ?Eà+öAÌbä¸Í@»|{üó\6~ŸŠww9 _ÐÖw}vÃçõ6˜ ­’GŸ1hëˆG<¹hðÑ¹FlÓf5x	S^µÔ¬â)uMÖ6ÞïêÑ%3ì^mUótŒè…é|xâ@ºêÊ4ÀëLÔ’!Z…Ñ‚é%Uý†wÆ–®´Ï-S÷¶WÂž?“Æ –&¬qGŒB<ÑîÝT+»Òr-0V¼Àç¼Ü:ýªÖ”»Z­²oºð»ù=ÝþöpU:ÑQvxTéOœüfÛ*¶-ðc«m;çöL¹xºýÒXµ–%º½LÏŽÎšžÕŒÏúšn¸=²»
Ó¢¯äª»¡PGèØ=<8:	~?Ø³ÅEÖÕˆË!46÷Bž–€ñÏ9 }-Àh„)áß$tK£ëb!Ù›q´†Ê#Ã›®y¾ `^ON+7|E{n¨v¡Ìýbti2KUÅVfëì «d‰ÚÜžæ55t…b„\%Œ(àÍp{ëíîI°sðúd78ÙÙ¼=¹™NFJË5CY°îuBYÚ¢WÊiÑ+¥‚S”Š0š‰pïp®„zÌyÙÿˆ×eÂa› Â&t:E¨3À@!º³âjÀT$ú'Ù)/IaÒ~ÅŠ‰[huÚ°A!nÖÐêp¾¸Ä¾@5š/„„²øÕù‡ZIÔò/ÂV¼É§
Zã%pµ´Uj¥hÚ|¢ <ÅÈõ¾€Ý…I}y5‘T¼ÈÓ5ÂìÕíM"!äI'ß 8CtâèØkN¦…ÄpEüíÓiKŒøM`›áSbˆJ^
º¢óIþ±Z_ûî
ÿ§+ô•É ëX±ª')Ãöe_BõçÏÞQ.«Ë0¯ð–ÃÊSÜ¼°¢z_¬oQ¢ˆcXúšgRýDÌê¢Ó@Õ•w[Ûo<ÁçÕœ[OÈA^µºø@Gt–teÍÝ¿«"ŠÓƒÉ+c£ç€˜|dì†Jº§£û*º¸Å w’É"ò7jº¤;“¡HÜäEþÖZ;ˆ1kOÖo÷ ÄçUÁ¥"‹8·déÉBö Ð„·*âTbõOéÙ¯NÜØ–QÏ`Ð*uÞzƒJ42íµWD¡Õy®Ú« Òw2%¾^3ÀzéBLáÂ×ðrE»± VU€“âä†‡‹òb/Ý)Ôˆ‰bælD¦Ü}¸74ÌißŒûŸ×èþ*o¹á¢îƒr@ˆW†X\×<A+
ÔÀ6¤„ØB‹'š¤â-$’{·ºî)˜ÛŠsKØ&Oz]÷
(Ô²o-ß|ú¤eÚÀ™¢8 Ô³N6¶vc{kÌ;©õÖÎQŒç,žPhª,ÞLÚú£+H4ûxx›ì¦³ß¼Þ…a}Åªq“¼õÚ°ò@(¦Óà,tÊMXoðJê8Gè¡/a°.ú÷
<ÍJöhõåÔ—s¢‹ðUF²±Z¤~’cÿ`½^[ ºjJ¨ß;¶ñ»_!¶,¬2­8ã,*S(jnU†Ý‰
¶¦t…¡½žÔè&
’iXþ Gp-²ìã|ÚÊ'i¥QÉQ†e^ölëUÚÚj6YÓ €véMc9ÛäÀ2QÐûsŒëµ¨ífÅÍ{-Õ^™E§G!Nåwú*WKƒ4ŒW^O3è
¹qä¦eE|j³/‘Ý†Ë-è{Š–YÔ`zŽ^çÖÐ*›fÒü3Õ®Ã›lp:T-o{‚¼7ªœ‰Pf©7›ê~%N©5
Ú "ƒö…¸#ØFT/}ˆˆ™Þxö.¬ø•4pÿðÚÖÿ{]Š8}Jó·,mSñV¬¹™#Þ“u·›?
ý¾¬žÉx´P°b7îpÿ‰ºÇã‡}"âD…¼Šž4¬¤BOÝdyOá¬x¥EÔ¤÷ëN*t>Ñc’è‘²<P}zS¢íû$Mñú±èƒK}Ë,Qo\À@…wjê)æM½_*Ô–"lñÐÖšQ¾ß(ãuè4¤;š:šŠ±Á®öÛ¦IGDä—tF‰Ðx”„,±õ!4ÌÀ°òÛÆÑeQFœMrh&4|b%¾ê‰UÇeÏ¨£Bë<ô)²p¢sÛ#E¹')yŽg åôÐþÆ [g‡;g`Éã ÑsÑ…¯¼ä9 ØV|P$®ÃÆd
ßpŽôVv
"úÒI
IBàÚ`²ùp²°z7˜Zf¥…té/˜^ë˜¹y2í·šÙ+"ˆL„‰ÌTq‚
˜	ÛVÞG0Í[¸³FÞ¦ç<„Y’ÊŽDy'ýØî>Ì€é“õç,§)ÅGÛÅCº->×úü™~ÄN?bfÕˆ0Íðœã–‹6s€)|pDß,ç˜å Ì«Î=±›&©VÌøùG¦õšYyÏs¶¶•ÛÖ¸ÛŽ÷¨Ü$2f'¤ö’™Lc€ØäV7r·Ú	b™éKüli4³îûõÂã :åÆ)7Î­+çœ[¯>æÆdˆZ;héRqÖµï.óì€{ÏY).óëNÔ½h¯`;Ï±ìùˆÈB•ô\}’ÜDn‡Ybì»´é"y2@y2òÖ8ÖW&Nð$“
´; Úm½?)éZÉ¤ñópb0@¬½ž™»Xg6%Û¸äÚ ¬Lzñb3¹+j¹N©ÔxN)é;^Åîs18ÔD©*”IAÅvuAè0LYª
eòó†ašíÐ®°%´D’mÖ%…Ñô	S¯ <V§í-}¥wv”ÎqEº~H!H˜êxˆ¯ÍIäºÒ_«#årVŒ¡žn<`ëËÓï§¼¡i¨·ñä[súOA B»ÀSßS]åC{¼¦ÅyU¿7¡­³àê4™©Ašz‚c%_¾d/0¯gv<½}ùF¾¸Hø~Óê‰7ó‰Ñ fLÛžÒçL]æÕ›2-ÒëÆ“¨¨@ÿ_x„5÷÷wüN.^©¡Ð{RžE[…'3ànƒˆ‰1¹—€„xl\M»$c>æÇÜèA¥éë‹¿ºc?YË§VyÎ&h0}…hÚ[Kª•u‡i„w˜ÜÇŽT­™˜&4Ëø³¥¢l¯ŽVLBæ®Qb«”M[%pÓ_ù×µ"þ)š«®iß¦¿¢YÛ’úÛuÞzz[RÇ8uÜ]×2±š™z:jA¿•ÙêŽÅ¸¤iU3\ÕL/k³îì‡¬Z÷\ö&¬‰•&tëI†§†A£d6+}_:üäÍúš¢¶†RJ÷šLCòdî»GVÔ6Û«m¿Ý²ê)…ª½.F`n‚Šî÷¶}ëšÂýôða„Wíq„yzŠ™ÊÆ,9¬*¾Qn’ž‚5Œw“¥acª¶ÖÍZgfvn65ädÇB§yaOS™ià
»TÈš7ý®«è<p½Ð½J@âQxÙ[´}ÊÁí¹è¥WT‡3º ”Á=%´4l;êQ©Ù¶tƒ=IÓ	›TjÛó4W@Ö„ÛkóV,›û¿^\¥zOC;?•—Ž´°ŽÄÝWŒ¤èº«Ô¸ŒÊIÙ73çn¢fÖê~b¦ï'“n½¤è€p›âymÏzì¯Ž,GýgˆÍ|-:Ï;¤Å™|Âýµ¥†;4äÂŠ¾fü=§°ºÌ£ó²ÈñÒ l.~ÔÈçOî¡3ø¿yË{,ñ3F6ÓÕ´ð¥¤èÞ~YFêxnŒ·#´CÌpF¾Ê+ñnËŸö«?Ø?ž,ú[äú§³L¯Ü" òàÝSOÙCkÞßòH¨â>8H[o*^ãGyþf
+ú±»xœ•VmoÛ6þ®_qUØj"+Þ·:ð‚b	°CZdí€ÂrJ<ÛdJ )'®áþö©KN\,ú`‹âÝsoÏñxö.ŒSÆL­§Tl‰CvÐƒÉ*÷›ù6‰2…#µ‚YÀçðÏíýßŸ>ß¹Éîû×‚JdZhà9*`YTŠÉ-(…C"‘iF{O­‰S˜ð	€È	1)×(4Ói. ,8aô	r2$Kq
í.×–ñsƒR Q®c”ä
rë\Œ€Ï,ÑÙ¶nŸÁÃfñùùÈþÍ_DÿLf—Á‡ù¹íNY&Ðu‘á¤ÚIðæ·Ñ˜.­¥3»l¶!a‚§&`¸ü¥>4O_ßuöŽ—iÆ)‹S-Kt(Q”¨é‚e
çi•fKÔy¡¸\¸_QÎ­µÄøàz»|ïB*œÆ÷ÛWóT˜Ý½««v)úZÖ©*ïû*–°¯É¢b‰ÃsŽZ¥ÞpøùË×Ow7ÁØ÷§fïÔÛ'e$]À‚YÃk˜ÃèV1ìàsªaì,RÇ9£E‰FÞRHâŸ‰SâÇ°bB4ªþ‡Í‹í÷ybJJ«îpQi™Š%2ß¤œ,d¾¶I¾^ KÂ"'ºnÖ$Yjc˜u#˜þo'qóy'”Š/Ö6,K4Úµ®ãT’¸Î7•‹Ä#n|lv“T§ÄˆZñl³wlŠ~l,}su˜­öÞ}-ÉZRÖééªÙ¤dilð!ÞRÍW#'qAš”%NV©Ñ“dÅÈ©W$6õ†ŠD®
%nRk`
‘-~Ì£óÈ£qX¸ Ê˜*ò/Õ\…]D¿El‰5\RÁ¯©_æhŒm#u\Ù»~[ÄÝàþ×å¬¥_TóÌêÚ¨Öõ=Bz­Î­'Ëü"ªãrWñS5ª*:ãKò_‹ZKDHðTêm=6ÚÖ§‰IØS¨Ð±k^Évcž”­m"CP0IŠAÀâØ,©HðçíÇß…wSp×Œ™<:**×’RJšPÙ–æ•JA%±d"Y€Å¹Ô£WØ^M3;/éüTt†%ß”&HuHqpoºóÌw¬·â}ªT«M"'tÌÎqMëY[Z’""ç²Šj‘—‚Ÿa*#;
Ûb)DùË‹p‘ž×Ü˜@¨Bj¶Þ§È½§–‹}Š¡{
Íèr,PpÉv8¨	6¸€lðû4òÉBDCõCÓÍ^‡ÝGèÿ—A†#ŒóžnóÝœÒ¦ÿ‰ºkpíÞ¾Uyiš‚níYÝ%_;<]3{ÅjÓÛ»Ù­QèÕ¥+™À0ˆ.onŒ&´¯·Ñ$&pOcO ì×Î&¯wKìôØGª8{-n(ui5ŒUÍ–Éûú*t˜t‡¡ge‹’.AA@øáC.Ó%€ƒÐÃn?©ûÑÀv´it3âVîGŠc™çüš‚c|kªea“K´÷Csvj¼†Ù÷íÜÜ9atLÛÔ1z÷·_þúnî#ã½ä…|ƒ”ÿ _ëƒË¸xœSVÔOÊÌÓ/ÎàRVp‰ÐõÉLNÍ+NÕõLIÍ+ÉLËL-²RpðÑ5Ò3ÐÍ/ÒÍI,I-ââÊ+ËMUHOÍÓÍÈ/.É+Ìã )t´åxœ­VMsÛ6½óWìØ‡ŠS‰‘œ¦»îTñW4ud$×õ‰“K	`PŽòë» ©Z²“ÚåÁ¦ÀÝ·»oß8„ÉèüïÎ5OPìR”–gõ1\®;GQ·£tG0‹:8áLKÍgs­$„£nïC‡þü
whÈDÂ9ŸqËÙéBif¹’ 4pk€eœLä¡¦sn Ðj¦YôšiD0*³Lã	,U		“ 1åÆjþPZ$`2}§(ÈUÊ³¥[*eŠìrÈ¨Ìÿ¸ÞÂJÔ”Ï¨|<ºNòfÛ­™9¦ð°ô—.ƒI\*Âõœ rú®aÚ¸ŠŽ R#¶]•-f]ÚTáÜBÊu	ž»•çþÊ7¦À¥‡«‚ª™ Õ÷È…€„Ò`VŠ6!-Ü¦Ÿnn§ÐÞÃ]<î§÷'dkçŠ¾â+$ž‚0Õ¤™´KJœ >_ŒÏ>‘Gÿãàz0½wÙ_¦Ã‹É.oÆÐ‡Q<œÝ^÷Ç0ºn&À]RŽ¾ç¹…Œ°rE¦hu·ï©†2)ÌÙ©­	òåÅ !MýXÏ„’3_!Ùn(<žT¶š“H¬Úí&yoúÙ†L¢6|è‘“_‘>±dN—<#øK¡”nÃGe,™;¾ú Ý£^¯Ûé½ïöÚp;éWuôKbœæålÎHúrÉàÏR|aZrø-Y­E_êµ?æ3c£Då¿“ûÁÁA0üë3Âåh
– |f’Í0§1„)ÍTÂw‚€â@/‚3$'2úÊó2Yæ$.ân`Ü€À‚	Nµbä"è[Ë’91(¶M‰©DI«•¨+Û÷ŒK	ƒ#¹•W=c”Re÷Kçè1_L&Ó*ß‰ñÁù
¤BšùDž€«´Ës 9Æ.6Ôß5Ž¸ ÁŒY/TQJÃIkµWü9p÷Œ…FC›š–öª¹.×ÖÜG•«{:ÎºSs¼^]}KÇ@œ3'K‹‰ßú¸¤iÈ½è¢—L<0çtý±•ÙËöÒ|C2ß$iø7Üc–°¢aF¿YÂír×4±ZÄ<%ëM‹€§Ñš.ÿ’bímÑ2(²pS;YÀˆ}RWë&EzÅlÅëpr–§kúÝcÊu+Œ*Øp³N"Gå)t›‹Y;Ëž“SâÍúä¢ÚØÐ
áÝ“r7ÏÚ²"ÛÙnÖrö5–¦>IÊ³zº	ÚüJu”E,Ô,N¹®2‰c¯Ì8¦7×‹8~‚XZan‡nÚ­š´eX/íç‡*¦¡jÂ¸IŠŒ@,Z½pÓS‹LŸ«G¹§­ë÷í€?Öß AwgµUšçL/7rŒžØŸ=:çölG[xn¯ðºOìOtnR.ºL¬Ú2n¨Ì‘B¦¨íÅ?%UcŸXLÛd¼Ú&]5ƒ+IÈð´ý¬~^|Ö
y“?©í-þ~ZÞ@3¶¡ûD`Ì·jÍV-Ã6ìp6'=ZK­!?cã1Åmà'[Ìê„œÑA½Ý`'HÎÝšè Ÿa«×Þ®°¹O“iŸ88tO¥ON÷‰øHG-ŸwØp@­Wc÷Œj^#”W+äÕÒx½&ÖbvV·‹ˆj¨Å=¶«íâ;tïŸ×çDç^ŽJ7ébºÛŒ“ÎwBëRR˜˜«ª­ú‘ZµK¾ªøæ`ü‡â«Ö+cVÇÈ©ïÙüÝÌÝ§ªc‰&ü_„ï‰xœ»"Ó(¹a³¾_bnjqAbrªBb^ŠBYbNfJbIª—é)8–”$&g(ÀUMþËìÆ‰àÅ³( ñzYœ'G²	N¾Í²˜)1is«;£ºA…¡‰€MâÔœ4½¼äÄ[¸ìdKv§Í‹Ù31ihNNãŠ˜,Ç­4™‹Óv²ëäJn0=B¿æ6ÒB“ÍxXp2?ëäÅ<“Ý¸„Øt4¹¸&ñŠ‹ƒíIIMK,Í)‰Ï+ÎLHMÖã‘ê`Ÿ¼ˆW¤ƒ,•Ú)8YŸO kkPº¿èxœÅV]oÛ6}÷¯¸pjc–j§ëœu˜—&­±Ô1l§Y†#Q6IÔHÊ©ûëwHÉ²å¸›1 ˜82uîá½ç~/h>}÷‡w-Bžiî#ž®†ô~zíù}O*/a†«Ö‹ÖºùF‰åÊP'ìÒYðÆÃ×OtÇ5 ½KaXœÊ¥bFÈŒ¤"a4±8‰ “öÕb%4åJ.K	±âœ´ŒÍSüœ6² e¤x$´Qâ¡0<Ä²è•„3”ÊHÄ»TdWdVœàCªIÆîÇûÉ-½çWðgZ<$"¤*NX3ìm×ôŠGô°qWÖƒyå]IðºÎ‰¼W´æJÛˆÎ@PmR1öl”f¬ÛŠdnÍºðuCN»­åñÈwF$2G»’9¢Yñ=‰$¡N…æq‘ôÀ ,Ýnn4šÜÓÝh6M÷çÀš•Ä[¾æ%“HóD€1)–™ÁÇËÙÅXŒ~_÷Öû«ñbr9ŸÓÕÍŒF4Íã‹ÛëÑŒ¦·³éÍüÒ'šsë”•ïÛÚR®TBÀˆ&’*Û÷H§†gID+¶æHkÈÅ~1
QS§å,‘ÙÒEìNÂs1eÒôèI	‰‘Ï³	ë]>{4ÎB¿Go ±ì1ès8(®Dú«DJÕ£ß¤6€[½FDý³Á ï^÷=ºÊ¸ˆFG¿\¬J?Û0ú½H™Êýn×üÇjí×ÕR?”é/0o·Û­É§œîœãr%õÐkµÀJŸÆZ•aÁ&EñÛð>ZÉóüÌ§gºH¦¤YÊ+Ð¨=Û(K93¶OK›×Û-Ê¾Úí·êÙâÇã[ô¶yE…2ª¥±=î¢k¡ü¤2„Öçaš·ZÎ8[§<À 0T!øiµß´Z­0aZ×KN'Ng‡êKì.öÿŒçŠkŒ/M’:žiî—öãÑÈT=§‡õêö!°.ÓÐy^ÖœîåçþK+’‘Û!a¥²è=™ö‰ìj ÅWKäôwÏ°Ï¹BŸ¤4¾yn¤S&(0,	Ô}‘1w¸ Dµ›!MŠôãVnÙ¥cÄŽ™c¶.'‰\‘PÖe65Rm\Sc]÷ Is'ŠökýÝCÄcÒÜÜæÍ“¸»SšB«9¸ìô´\ÏS['Ò~t;]¿äëîÖÁìïëó–ý³×Í÷{à}ÿÀ˜›"ß†è<õƒÀ•[à)CYÁÁ†®=Êzx[®4túÚ¯Úø>À69:çDŠÚdØå?1´k˜o¾˜v“"5¼sUi!—{%¬®ÚµoÚÝSHêmŸsØžÙqà`Ë:Í8a/»~˜HÍ‘ìºšgê|ÊŽFó©¨šsoŸR€rnÛëN±Ön;ºJÏ4ZSE-ŸÍ»>‘Ù!t†JTÙQ´r¯0d"~°éöð÷¬Ÿ÷	Â4B¥´†,ÛBËô ŸŸ9°÷i“ç¹~ó\W½u¶¦jœ½FìžBäžkÌ&Ñ^Çî
¥ÁøÚ€:‡îeqÍÙÊ,1¶ºŽ%óSs£»î+®p+±'·Îíg_ãþñ]²Ü'”®.ÂkÌÕýãÂT(~4¹•}{Û©ŽSßèáº¹ºö†¹P8åy‚Á?8"Ø7+¿~nˆæ²R4P;ãˆìs-X£Òþ/ÕN—ípj š›º»2<:0Ê§”áœmL!»	Î®Ìå_KJ/ÜuÈQvº=êwO»ò>}¬-N±kÅïèVc‡¿†saöî!‰Nxœm‘ËJ1…Á^g¤A+…Ÿ¢hÅŽÔÛ¢"­Ä
+BMg2´8Ó”$£¸råF.~w>DÝê³øŠøN3õRh ›äœ/'çï¦_¦ŸB·eæv§pB…4	-ätü•7à˜3/Ù`I@x¦I…°=Ç¹1”nÍ€Š…kÞ’¼¶É8§¦$‡‚dÃþÀ²nÀ®”ÔíH_°¼ÿŒÍ™‚¸40lƒhÇ›´œÀ´O¡¹=»Å…ÅÜÄUÙ¤#X"„¡ë™LYx+Rë'Å^8?Sd&ReV=jàGx#EœˆžÍ–Y[Hî™’qÕTõô„ûè~F_ñ=VB¿pßâ«ÕNjË‰¡Z°¤5R~øö•;ª5ìiiuP7]v ó'ÌÈ/mAß÷w]½2ÿ«Î³³¨­¾QW¦úOŽ©X0cç	’Ùñÿ÷ÝDj¬Ê°˜,à]¢øz@·æCqxœSÝŠÓ@w›´AÔU•ÅÝCPkÝMØÄBµîBo,ø‡,ºWÆÙdbÃæ§d¦®xSÁà<„wâ•à;ú&zá8™$m
+873Ì9ßw¾ó™omì|ù¸2¦ñ„dÄ“Ä‡Ê¸GíšbY&3J8>á‚0¢`ÁIÈÇ0!œÓ,Ë±à)œd!§¦ÄÙ§âìeœíÌl	ôJy´Àß6áEÎ&àGQêC<vÊÂäõ‚Ú*`»&Tåb8MJ¸(R“Ñe%Ï0¹lL¢F‡ó?Öœ"Á«´1Œ}ü¹zÃ¨*;M%c*Ø˜¼züü=/"Œ™vÝvÎì²ð…~Q%?ãËà^cïNi+å÷k­MSF!L yÓ¹‘^1NŒÇ+O3Š3µ]—ø»qëÂ¢à ¬{Ï*Gj‰Ç¯Š~Q¯5ù[®ã+åþQöñ—²®Q<§^Y±Ôýå
mü¬^~˜«rK¢›ŒFÁ6xñDRöúÒî|éº.ÆM&šAf§ö"|R›ºcÌñK>ü¹ vó:6×Îó1­§àûææ½ªM/ö…úƒ[«6f‰£†Á8É¸!_Ä@ÇÍu<Óê¬åygxé4áE¤Ëx&›6eÈ•¡^É“k7rÿ‹Ü­yî|0õÌA®¤êÝÖF·&»WüUŸÀÅërë¦ã§ÖgÚ&Þ×.mÔaÖÇÛÛ†~o]»º”"?ô"AûVScÁïQ~xœ¥S[kAF”ÒLñR±X/‡õ’]Û,‰}‘Ðˆ¥¬ÒRéÅ+éº3ÛŒìÎ,s±
BÞ}Q™?â³/þ…¿À™M²IjÁ}š=ó}ç|ç;g>ßøqåÛó³½ÍwµÔ¸±vÂg°’EBùöñ1ŽÃ˜gÐm XÕªËEžpvO9¬`{»|…<ÏC[ûL˜¢ÉØŠ2"ó(&°K¤Š#IZu„l:è5CXOb­P\g8ƒØP€œ†IÓJ5Ír.Hý&ÜF%B‰à°wé([§bk“  8¤,#CÉ¥bxc¾Ÿ[¸>Ù)ZRƒ–L{jíÒüÐ|šZ4¿¦–¯1ÙI©ÕÐIÒ$<"ª3™¯Ó5ss¶r¸Ííý‰µ&\ü]Vß½áW‡5ç‡Ô9P4T“€-WèXqÁæçt0ç
SlkûNÇ0I±¹0{µñRD¹Kà
“Âoj‡ìÌ;u4¡Y­Ôî:6´FQÅÁÊn ¡I+÷ÍÇ™ó="„MsL\²$¢©¤”nŠÃ³…Z«å!¹gØF½1Q,ö•HíÙcED	ßIJ¾[‰[Îür;Âmžæ—‰—yæÍ!šž•]’¦í]¡É(8/æZµÇll¯ =ÂlgÖ³vM«¤þ°œoÙ¹vàøîµdšÑ8RÄ^5^)¥LùÛÖó‚æiŽ#ªüâæ^q%ˆÒ‚9DG0I yÇ®‰¹X¹ì¶mùŸæ=ñÌÜÈ÷þw®ÜØº°þôO¡5±×}jù\[kGÛ,#SNëÜ=Î‚gV«g¤9¨3£TMó¥zgnÂ?X‚F€~ÉfFà7„xœu’ÏnÓ@Æ…šD‘8µ„H#ƒ –R“"$¤ÐT ˆ^ZŠ(¨þY›õ8^e½Žv×(åÂ™ó>®œàxx„×vâÔ9îÎÌ÷û¾ÝïÛ_¶¿nœLbÂ4g3>'R0Ø£«3^=ŠgJû4Mö›ŽëºÎñéS„	‘ŽÒœ¢d£D³T˜o×OTBôÏoR4Z¦œ£ôÈëžO–H3 ì†UyO'SŽ H‚jA(úŽ•4wZ»—Å\p’„†µny5F¥)±½PÕ<ÖZ²i®£FæskÒ˜þÓznÎÚ³Ÿmz¥ 
r¢€jÉÍÖ–ù½yµ× ­™O~û882Ïºô•DI
yäÏPëe}w¸<¨ÊõJÆ#h4Bõíè „b¡7Z;±îmöºkó¡óðî¨NX:…)B¦0&Î›?ZBDè[ÀñÅ€…äE`„ónÆV#ŒütŒæZ÷Á¥"ó¦}ãã
=JeáÆ2I"fØ€£ÈõÎ”öÎÙ´õ?™M¥j~m7½õÖ•›amí”³ñ‘s?j¾jßÀ°^£¾€q)­²Å" 1ÒyÀÂ²ÙåâÖÝ,*nÃp¹ã1¼”–&Ì;Çíý›Z%ö×ú`ç	‚txœ[#º”oÃNfñÔ¢¢ü"Ýœüt…ü<…äü¼’¢üœœÔ¢É¬,æ¬® ¹ÉŽ,Ó ¬;,s¡¬:ÖLV°ÎÉoX¡¬½Ì“mØf)ƒyñ@54¹¸€ %5M¡$µ¸$>=µ$¢ö §(\]|rIQŽ†¦Ž‚& J‘5…°†xœ­WmSÛ8þž_±“~H2MBKKárs)š9HsI(Ç´7cË‰¦¶äJ2\fúãï‘_ò^ ½šdkßwŸ])Ïh4x÷·sÁ}&4sz†‡œ©#:\8ûnË‘Ê‰<ÃTåYåÈd®øtf¨î7h¿Õ>pðï]3Aïø”/ŸJ¤ò—‚¤"n4yaÈ#MÚÍTg\S¢äTy1á5TŒ‘–¡¹÷;¦¹LÉ÷)pm¿MƒòD°'áÅ2àáÜn¥"`ŠÌŒ|ˆ5É0û8ï_Ñ9LÁŸAzqŸŠ8!íÁ¶ÝÓ3Ðí<8³Œ
èLBoÁ11º¢;¦´h

#…Æ¦²îë¶"™X±|S–»RrwäË â"S;“	¢™A!â»çQD·ŒRÍÂ4jBxéº7~ÿájLÝþ]w‡Ãn|s^3“ ²;–kâqq(FLÊfÇ¡àòtxòÝ·½‹ÞøÆzÖ÷OG#:û0¤.ºÃqïäê¢;¤ÁÕpðatê˜uÊ¦ïû¹¥ºb‰Ìx<*ª}ƒrjx4óîÊê3~¿<ò©§Õ,’bšEÞe
‰‡$¤iÒ½â ‰‘ÛÕ„ô²žMê	ßmÒALžø!é#v¨8ã!ÔŸERª&½•Ú€Ýæ«KÔÚo·[NûE«Ý¤«Q7‹¨›"ãè—“™è‹¹G¦ÑO	N¿ùåžû¥Øûc6ÕÆõeü;Ä«Õjåœ:cžIÓ4FùžfGN¥bß³@.=ë·Ts
K¾,SH.v 1áµ]jµgtI]uËMÞ‡nFÙeßRò¸„noÊbt}N~òKK³8A¬ràf2
rž—à9°<§J¡ÖCæKÀ{ž@|m‰ý4¾…Ôõ¯”¥¶é-ùÈ‡–Üh•&£Â‹˜ö¹˜æ,¯Áòfå#ó?8EÈ§éj8‡`îZæë¬ô]#cîs ¼/UìE9Ó0½Í²¡çÂŸ))dªéb6uÚŠTÐ2RÒé-æ3­+•PÉ˜Ä]Ì&Æ–¥à°%ê¼d•JÅ<­(ê¢jeqë%±qTÉÜ²¶ì:d	ÈpFÓL7g·ƒ‹Q¡»%­ Ã„6CG”-EkÅ[0r·4 R“»,Ù™†‰Ð’ïäÊ|Eø´SÐ6:*µ­eUC„1tD"s,diQ×œ±ð#K½}	XHš™«¤®Y6–q‚ƒÀãhÅ‡2¾È°}t
<×n®¹±Ü‡»™&“HN'W™Yw2ÉJ:™àMx(üdCf3ÛúTmýÛjW›d×ýb}Y¬ÅúºÚÜHØöcùþ7ÅÚ-Ö·Õò»Ãp„åÌ!ß¨ÈÕ˜ö¦^Û«5>9í%ç®Âv¨:U,¡*=/5=§êWÚ³¨ß[TIÓ·*}~Äç*ù8t‹'¤6}#£ìgÙ{í³°ïµeA¬ëú¢ËÜ=QßáêãÃ1E±JÙxM€²³j¸78}\Ž	W1íÔR:‡µ<l¢¾Cø_·&ÜÜ¢«˜X¢ƒ»f¥ªRµÑXß0O½“÷b'öq=ü•µxN<\!² Ö5Ü: ¬Rë³»je«a­xik´˜'“ržd>7WÆÐ†ÿ×ÊK¬ÖuëöÎlÍmÌ;5Ýštë³+>8üó›R°uH–ÜC4¿;­ô¥`;“ƒ²W_	•:¢_×Ù`‹Šk®SVß…—Æ¶}›ek¡ìV{þØM§Èvî¢õñþX—BÀ)…t2ù0ž¨ÅîÛí…‚<+Úûê–‚‡z½Œðñ,Ÿiö…ÌO6}ù|¿ùË§L"Ì$©=²Ö·˜K÷ñ+ ÞøÔúgGj0iëëÂÛÊ³*£o™2§_S/ÊçÊ=n—õF“ZKáö¸&þkQô$mƒà×àG‹ÿ
ÿpÑ¢àûÑB¯œâá[þ´À=shu–Ù	µ2NAÝu¿9Úvó;ÆW°Pùc;¬^â‹xœMÁJÄ0†²‹FÜ"ˆ—ea"[tƒ{]P‘¢ ¨ ˆGKM§l1M%IÅ›àA<Â£OãMðM4MqÛ¹$ÌL¾ÿÿóoƒÏç¥³‹ës„Qé9DeQ$2…+Ô†'gBÀÕ”Áñ#òÊ È‡!óÛ¥^J£J!P1B(¥v»7]ö¬¨Hí]oë°ÿœÊ9ªÜhßòÒ\$Z³F¨®	£ò[§¦gö¥µÀïþ¥}]9hµ£Ø;k™½!ÃŽKÞdbÄ¾jG«ý%#wŸü<æE
û@;/(ì@MbÜ(áî&²iå%XŠYR	K§áÂø½Ê¥/¨í@¡©”l˜èþ±žŽ3Ú.úMÙQìWÀìÇÚú¦Ú	îÂ^Hþ ÉX‘¦ãÇµ3xœÍVMoEm>ZÛ	jéH@^m¶©í8!‘B¨AIÓV…–¯SÝ®&»³ÎÐÙÍŒI­‰3§'nðú#8!qà¢=!q@¼³k¯½¶cR©V–÷cæ}æ™çyçùýÕ?ÞþùÛã1ñ©ŒˆCáZ(|¢@Q©")lÖÀk¥W%ŠÖ€(Eœ½¸´çTQˆó‰8€ Ã"›ÄâE(AÄÝ£ »Q
E]ðÒÁX§O,À¡ér5ÀB0¸êp“I¡7¯1¹ë‡H×%ŠÀ§ì+dKE¿;l“Xb4®ö˜„}
áN—ãl‡¡ ’ðH„Š:	×ˆ$¨Š¤SSÌ§f¬Œ÷!\nnoÁÎ—Xä¸¯6àsÔÞ :!ç8ÒcÁ@$TŽ‹±—»= hÆ@‹þ¸iÌ¨|©•šïðÜJ,>tŸt¸qK¦Š!Œ†™Wne­;4œÝI³å£´eY…óoä¿‹ú:TJ­gZ'Ól¼â»úÏ™‹sé›>?Û9Fvõ7³?ÄÃÀ|—ØélmndÞ¼±§æGêË¡Ä ?M#¹’ÓaÝ±pão’,Óã1Ü,4›‡ÛeðÝqa àwYÃ.~ãT¦á‰^I:ê7æÖúªtæÖb½.@ Ç²VR¥XÐ‘I¹×ðp"ZÐœ‘²G®†ÃÕ»<tî@µûXÄY#Ôƒ•µ¦¹rXF’üÐC¢C»cq˜:ÐßÏoÄ£·àÎÝ<VßÊñ–!£Æs6´z½×K`-[ø/éYüjÛ'RÚ6>™·mýÎü¶þuž÷œx|ýÄÒ±Z¥Š˜Dì„ûA¥Ú³‹z½Úi§¥Óî•Lý]áüå«½
9¡:Ö}W¢ÚãÕñño'ìôåRQ¿¸8«*½¬¯NÇ5hV-qÉ»&[½aÄ¬¹v`ì·‚/±„1·Žoé¤qÎŽŸÛ#Ù‹©õ`BGÐî%àìß‡ò×Ñ‚
.®>*ã7% .¡mµÛAÛ‚ägehfÅÑ³µß¸F4¨$œj ÷(ç­ÏD÷©Ü°«ZÃ]oÜ¾ªŸ­˜Nè¢<­rWyõruÌþ‘Ô1°aÄAË¤,2÷ˆ3U±À€0/Ø'ØR…æëæ°IìÊ‰Ygý´xö­iÚ¦Ò®?*[ýî±…­NWAÝƒU¨»PÞüOÝŸ‹öµNÿU\šbÁäUøl¥±ßßËs2—®ç©óÚÿLç ³ÿL"ë'oêÎ™ºqë¾¿«'OªYÑë‹Kg²:–ÔËTz¬^+¯_˜zÂÓ÷fÏéj¡çëÎ¼_SoG4„ó1¬¬»Ù & th¥YŽzNZëÕjo¥ê_—Û6÷‹k’JL»ÃîVášþæˆÉÛ¬èåczù<èN-<Qdväºûƒ¾yÓúm''†¬˜‚3bŠNy£”ãá°©O—Ñ£-¥Y}P§Çéc]l.äÑØ%}½tFÿƒf÷6ŠÄð¿K¯½Ÿ×Û\ÐæÖF×¬á£m¼É)*ëGL¢ëqÂKê fxœÛ/úK`Ãf{ßT·Ì¢ÜòÄ¢TŸüt…Ôâ’äÄâT+].. 0ÔSp­HM.-IUH+×Í*ÉÏSHTHI-ËLNÕ›,ÀâÁáVÔéœ›29“EEÜ/ÝÈ ‘z“W²8#þe	š\Éê&œ™[“
²3$ÈJ,šx5™-­<hÓä,"“?rH³A,žÜÉ¦1Ù›³B,Ÿœ›¢`« ”W–w™’‚¶BqjNš^rIQÎävEž4¸Z®É‚ò“O³×ÃL÷çÐãUŠÉi‚Š4q¸qƒ\d¿—	/„«¡©£` É ªhÄî¢_xœÛ/ú–gÃæzßTÏ”Ô¼’Ì´J…ä’¢…Ôâ’äÄâT+]..C=×ŠÔäÒ’T…Ì]°‚ü<°B ¤¦dYj^J~‘BqAjrfZf2\1—’’WZQ~®B^Ynj|	Ð…ÌÜ‚ÉÖ,òì Î¹)“3YÔXÁÊ'/`ñƒ‹þe	š\Éªb Ôœš\’	45hÈ©~a¾©ž)Pµ ÃÁäû¬< {â3SâÁ¦`™ìÃ%Åu¤­BHQiêäX.5.´†¦Ž‚&ˆ+æBT¹ Ì˜bEç%¶Bxœu’1KÃ@†QÛ¦ T—"|V‹5Z+Qqë(¢B‡z$_èAs)ÉµŽ‡Ïÿ¡þ]ün‚£ÿ@ðîRP‹Þîî{Ÿ÷}Ü.=—®gFÇÈüÍ³˜K„L¤Ç°¹aÛ VÝ…£™ºð™dðÂ%—]Húèñ€{ÐgRb, È„ûQ ²«ÆqÈ=„ð1© ®ám»ú|ã"12
ÁBLúìQÃ0å]…ÿj€Ïƒ cÒ˜¤œU&
û,ÆÔ™X©YV.µ3-Gû˜€úè>³î¨ö~.MhIï™-ºËîïz)§c8Ím”õ 1h1Æsú2áÓgöjÂã&×¢]Ë±ö Á^àÒÈZ Œ5Oo¹'ú°(Î_L(^óU“ª3d=®œ‘æ
¥òéxóã•t=H‡…öTBÅò´kÓK±^6r}_K]M=sP¥egÑÖÙ;æP³çÇ?E!SÅ R©Pmv•nœóÒ¯ kÕlUí/žëÊ
äGxœ{ ð‡wC#³ŠBpfnANªBH*J,IU(I-.QH­H‹Zér)))MVc5t‚¨ÊÂ”j€8~a¾©šV\\
@ Tª”ZP”ZœšWR3¤lêä.6{aLcô&ße‹TWVpLIQ(ÉÈ,†¸ ¸ 593-3Y¡,±(31)'µX!#µ(ur;§½¦“oq:já4"9'51¯´@!9?%bŠ—ªd1Ø”ø¨ñ =Å©9i“ã¸¤e°“Vš—\’™ŸW<y—údynÞÉÿ¸¬X
‹‹'oägL|’ßZd€V£5¹ ™Mƒß¿ðxœí\{sÛ6ÿßŸbGž9K‰$KnÓ¹:UçÇN=qå4É9>MBÎ©¤muúáo  H½ìtrm5“Dw‹Ýß.fg¯?¶N¸ËÉZÇ">âLìÃ›³“Ö^»Ó
EËw"&¶¶·¶á œÎ¿GPw°×é¾há_ßÁ&‘$€×ü†GŽtb
'âa ¡ IpF#îs”$ÛJÔÅ˜K˜ŠðF8À¯#ÁÈpÝ;‚½„Yƒë ˜Çe$øu1”Nàí†¨LBfÔ 	áHýxsúÞ°€	Ôç,¾ö¹fœÈí`ßÔ&ÇÌƒë™b8"F8
Q®ÁK`Ÿ¸cBÒˆöP€éÄHlÒ(ëNDj§ÄÖ@]g l—p–< <PbÇáG3F8¾{îûpÍ –lûM”€´ðáøâ§wï/ ú	>ôÏÏû§Ÿ^"m4ñ)»cZŸL}Ž‚qLÂ	¢*Ž~><?ø	9ú¯ŽOŽ/>‘öGÇ§‡ƒ½;‡>œõÏ/ŽÞŸôÏáìýùÙ»Áa`ÀH)2_µma„²&!Ðc‘Ã}ãíOèN‰šùŒ;†nu¿C½pS«ùÌƒ5B¤ÍLøø‚0jÂ½à’(œ÷&rgþlÂqà¶›ð¢‹DNpë£Ñ’£ˆ#>BñG~Š&¼
e„äd¯>@g¯Ûí´ºßtºMx?èëqôc´8ÆËÁØAè3ÞÆþ­#?¸I[ûÖ´ýk|#£¶N~DöZ­¯´™ë;R*Ë9èjd¹øHÑÖz1üW†Aò}2q¦É÷P&ßp¨æ›Ç÷Ó_‘¥ßãk4ËdÊ%gé×ˆORqÀ#Rdkk$Â	w6¤ßC?¼¹AT²l:ýågv¢Z·¶¶ôp’æz"¦M-8¨ÆþÖZhhôï9›
&1õ`–HGÞæ¸ãô''ô)@01(ŠYwF¦›â¨¦‚RQ·ß9
á$ØsäW@Ãßêq[ëqN&Öd/Ž2Š—p")âTHÞ9‚‡±Ì¼béÓ‚~dÂWî§­ú‰	ö¬€‘}Ÿ‰v*]$òØÈ‰ýgÂäÔqY‘ÌÉ½2zà^‘Åƒ¿bâeÈ¡Å&-Sã½ÏAÞz\äúÀÌR³Q(fíÔwêÒ€dÑûi]2ÔÈL@è>Ã<0`®î}”`¢úž>Û¨šò€zl‘Ñê©­ŒÛƒÚÇkö2héƒ¼jx¥–‘{Ðyè:ÍY´;$PîêÆ6EçÎ–Mï‡Ž7ÔÏëûÑãsLHl8uùÐcw˜ç$µi„®xÞ¥fÅÄ´‚]ùÈ(m¹Á!bfcUg‹¶˜P¬Õ}øM€ù|È„…ìoNÍ²Q”hü‹!Ó“µïÌ8¦rMŽSv%)o£
]LG›ÁÙ7… Óí§aÀ
¤ç,ŠE°œ:o¬Lë{MR
=›"¬-qþŒê;»;™ûÜ	aCÿ]ñÀƒ]TyWGB‹B>~VƒçJÜs¨Áïp#ØZœ™õŠF¥ÞÒŒÜvq¨£è&º„ù¾1·L\LD‡¿ÆŽ_Gþ&tšP;<?Ç‰{ÞþL'œ³ƒãÌ˜äuO)_3¯–ó_ %~;ÁÇ4GáDLX·sÈì!5óca¤C"Šªç^ŽúeÕdhd
Oõ”²aÇ@.«h®Ë7ÍÚ;WóÄ:Ñ$´ø«Œ(Ë7	¡i)#¶CµGŽµE·FT+±›Dv®/¬¬°¾hOhÜfXªJKHc¾G¤ž8·X·‹©5aÄÓDwEÔTøRè 8`X‰LUUdÍCº^J§K2$¶²0NÔ?¦êLDØx®€è€–Í10ìRRHÉ§ê*Cç¬=gi‹6Ók&Û2òh]Ð+Tkól©’5ÍBÊ×ædé¼µ–,d1²R°æ1Ùà·‚ï?¬ê°Ò$W1BçGçFU5àzÖ„Xø’·”;±–Ä)Üž
)½Ú‰öLe’B¦ÅïjÐ½<áñÙasäÅ°xAåz;q4jý37[ÍH\û×ùI^•ÔTûFCJ<e8o"EžŒ}\¬N7ÉÁy…õü—Ó‰<&Ñ%Sœ-h™}sZF¹‘ÿª½·|ÆÍ`„^5½&Ü´šjKŸ±iýEÒu‚Ä€Ì‡Ð…uqË]¬v5Ír g²–ctu+njGÅ‡zÊø)·áœ_rñeû‡ŠJm¥Ì?i Þ˜ÈroYð±‡H8®J@”e²Ê dáõ4•PEùxÌéŸ£sGKÕ1åY¥œ¬¯KÕ˜Ð9%ŸRÓ¾V‹×ÌFs1ëó€%ÂÍ(˜ãQs®ŸÌèôÀ¬jûµÆe÷ªMûyÓúÜ`xlôrHÊ¬„¾|Ù¢Ÿx¿úNPrR!¥ýÉršA 5.¯ŠÖD¡ìÈ5‘™“ôµ#sõ¼”Ú#çÍ90’ë yG¤í/cž6¡%ðê9@î<ì4.[Ý«\Yo°hxl,NœÄã‰ø$ž@O®ñ)¢Ç¢’-7¿<K»fÕ}[Õ ©ãŠZƒ6c§hõzí?Ap	WÏ÷á²ÓúþªÖ¤‡ÇoNßô‡™O´•¹Õ-´YPçÞ&I8ôµ#ý19˜ª…Ÿ4Ü0¢ÂDMŸ•WQÆµ¸.ŠÜ±
…’jêÁrwò¹FosîãAdœ5—çóì\ï:¥Û¤Ñ…ÔŽË£ÙÿM E|Tz¥("[Ø1D-OA‰˜¿Bü ™R”|é 1{dÈ”Ò€Ñ¬pAõQ£5F3|ÙpÑ}XáR#ÛÉñ‰*ÚBøöm~m‡ý¶óýw%OŠ‘P,šÔ®r+è._"Ú2ÿ‹•Ã¢†ÏcÉjDGô%1‘wä<{¦ \‘o®Ì¯ÆeçªQˆTDyXä§Áá1ŸElèøþ
åš"VÛfæl¹¬˜§ÏßÀ7jê$ÝZ…oè<™O­	ª!ÝM´ú¡ª;¿¸“QQÒ5‰î¾E6ûî]hùË-'ük27UÛÁÅen½1—Îç¬­™›°ÓÙÉŸ…³’%MŠ^ûQî1Û¾ü5ÕôÒ„‘íÈ&xS¹ ÑJ€Þ®<-¯‚2uF‹/vŸÓQòß
1MyEâòªL3(õç8Ê¦%Mãœ£¦Ó)rKdÎwy ùKÜa²å@'êÉ"žÀ®oÜ…ä|Ä¦®²F·V…Y¸G>WâV'²FÂ‚6U,êÙ‰EY:åQ¿ihÔô©˜Vídaq¥hšazÆƒ,÷ÜÀKNÎ7Æ±ºbC§¸™þ¥ ß” c—òdÔÙ¦	½‹Š‚ÍT(8§)ªÂÇ)–	Š¯[§Ü¶õž]s¯d« júK£ým‹)?WI…/ŸÖ›ƒ6Ÿ…V8Ã±d‘‡‹ÇgÁ–ìIÓž_tB¨çöHW©dKwßÞx§Ú]_#Ë ‹M×ÌôWÜàÒÂVŠÏ…pÞÇ©ý,ŒéÖ2œ-N´©ö-îe9Zyb)ofG‘“ð„¦Â–þ_ïÉ`ù¹Te>ØFQñ„	5ûZ¨¸öC÷Ö\†²Xô“Âq£*Ë¼húCh¢\ºYPÙè‹%y¥£î™D˜ÃÃãÁ«“·õþÍrœn¾P¡8œ  À|É »0¨é6pEP/ŒiÍ÷—éÔ|…¥Ó“ÆôS„tRcbÚÒé”±Æ¼´á¤4Ös‹ëÊÂo¥µ¶]à©«ü9ÌHÓËÊg#O½îRÄmí¸{ÜZ¾¼˜)Ÿ¬¾ÞY`ù¦”1ã‚C¾²|IûŸrâu—j5ð)(ž]”[ó†P‚°º(%¢Z¦º|Gïüé.¹…®llk Kï²YóËwr,ò¯}/çÑ—!rþÝ|¯T]ª¥W=äö‘lš(Q÷ò)Gm£
6õõZ³†jãŸncQ×ô
PÄ‚Õz7ÄW`b)Dcš “˜'~"ÔëO+k`S¯¯B!ÀŠþWÑXh+e‰ãŠl¦yŽ³ÄˆÄ9ß\ÎY|Êj·/ÏÐ¸ÚNïm6áŽ^(zêÎö²<œm®‘¥×Ù‡Dî5W‘õ`
q®‡»Æ!-­V—Ñº«<ë%ßåX—§ðñŸ>ãT[Þ¬\_(P¤õÅ2Ä*êM*‹õN6ÆmÅ8DÃÌ>_^ÂÕ3u%áùç«še{mÙX×»{`IûÓÃN;Çª	«]¢DÊXŒ\4ÔWzsG¨Pk\¾HoØwr²,µ˜•î@ä;yÞƒîÜµºŽÙ šVÏb6;&i8Š8 ¥­ÿÚñªÎ°6G&à¡¤ÈÈÊvó6<[ýZ¨ê}zòª¯i'žÎ²@Êpá½¾"´WqÇb“ã`µ5TõÔëÌí³þ›ÃÁñ¿Éˆ
jüð|¯–°«©$´½6“oAùŠ€‡I¬{8¸‘ÚÆH$ÐR"õè]¾Ý ö}õò
\Ëª-’žCŸ@)÷ººÒŸÈ½ÿa]ÕPóYhOe–NfŠòiÞTY¸¯4ê7h(“ªß”M'X¹N„Ñ‹QW(,MåûjÃ+ëüÆDH&/záo›?Êæif¡8ª­àBµzËf¦|þzyÕL‚"1HæwL?ÖÈwŽëÿ<‚„ökLÿ¥HÅ±´ÈÊUáÿY¥Ãºrýø§ŸÄÍÿù2ËWj¨Þ¦Œ]tå¦Ö1½“—+¨ô°·|õ«K8N›FÈImÉøýÆ¢w2H2¡Üï[ÿ©‡^%é\Øxœ•SÍnÔ0ôw­ª¡ÒB);
ýIÚnh‘¸­B•è¡íõR¡(›8¬!±·±·.+®p@à#G^ OÁS ž€‡`ìÝd³U¥BIìùæ›ï{¾,ýX<ÿ8Öƒ=Þ¦9Sð’Jup´O÷!9ðÓŒBNÃøáF)ˆÍCÅ—à8!,ëˆ\„$¹È,>PÈƒHÁG‰ÒPÊJ·øõvv	|¥ù…9[)…Ç°OU[ÄUœtYNcPPªË.ÈÓÆ×u0Ñ»ú÷ÄvÏ*†<;‡*ûé]Iñ~vßW$²‹ù¶üðiXò+9h”èÝÉ'×÷õ§É•Ö?15©±É=E›¢+Áô+
%•Ãò’¦‰oê’} Ð„ÇÛFƒR…¹
Z©ˆÞbxKÿœÜXª8n‚3\ùêrôñÔÝNé§¿§§Ÿ¿¦=añ¶¨¸¦Ì&tBÕæaF7¡”c7Í¹·SjBÃðÜ2ÈJŸÎ˜jƒìÐˆ%,*²ô³ÚZ½ i«Ù³ëë“™[x”3óJ¨0Û‘€jS·ñÕ_AQ,ñpú^,©¯ÓÚrï@pZÕZþ’‚”rì¾ÝÂ[	);‚ ¼ÿ1h‰sæqf^˜9×<ä¯©»UéX¯Ò©JßRQó˜ÁJUÑ«KDøIÚ•mwÒOä{¹¾¸p½´ZÉR!)æÛXL“þÌZúfmgJC”Åæ2UfÅþär6tÌé1rÛ“*w/ÞL¡4vÑˆD—«¦óÜY+Á6ØH6R¦kZ/¡e7«À¦~1uO'‹ó(ô¢)sÙÑÓÊ¬Ðª¯7ã6v^»¿l'¢êÒ‚/59÷?&þÝäÂ•&?O-ÎvrÆ•[ÈÕ_Iü½Öé-¡xœ}’ÁNÜ0†…
*²Ä	©‚Û	iWÝ¦‡ÞVâ†8‡jÅ5òn&±ÕØžYBN+^ Dó"}¥¾ ž ;ÛÝÕ+ž¾ÿŸØ÷[O{¿î>,Ä¹+KôP8—W$†3/MÓ8ÿcüEˆ$I„6µóÔ’bVI¢^;–€Áp, ¬ †ïX{$´Lð½pŒðà4ÂûÆÈ2m5gÙ€°*FP¹2+t…Y-Y½òß<^Á„<¯&ÇÇZC¿±bçXa¤u¿>u—{Þh++8‰¥Ä¹›óŠ½Ó UW£lG4ÉðOâÆkÆµ¸‰d‰ÿ	Ývr4Z“CL¯m÷DÐö-3Dïîúó°{Þ=\Ÿ.­×Mÿá=Í*zQÍIõÑÿJ;Qš–U0ÈÊå¾-bŽy¼ÈÔm8µðfÎ„Ÿ¢§ºÒÜ¦+H\!JÚ¼BêGYC‡	‡0m!wqbë‚Ò–›Í­›ƒÑ¥bh¤åþkœé¢rfoÙK˜¢’7:¼,…Ýã×ƒ:¼Jñ´é5¶½xœ•VmoÚHþî_1º~°‰°óRõÔ#ÊI4…‰ â¥½¨Š¬Å^Ã*ö®µ»NŠªþ÷›±æ%½öø€ñÎÌ33Ï¼,o`6ùø?—†ûƒ˜K+Áu†w“¡\úJû)³\;Î¸U¹à1$Ze°¶67óó•°ëbD*;Ï7v­¤oâea^*Ó«µï¶WWmú¾±R½{ÿçáÏ×Â@"RøÌ™¶ Ï÷£TìR±ÔLoH'ÑœƒQ‰}aš_ÃF1	šÇÂX-–…E(LÆçJ£}¦b‘lè¨1×`×0·Ì#z¹-`ÈAÙ—\³&Å2×4ÃØèÌ¬‘‹å¦´ëS ³:è+„gV(yùáäû™kƒ'€¤n½ÕˆmP<f)~*'Ã½’ù­eðM¢1Y¢®UŽY­ó|i
K…áI‘¶uáË`þi¼˜Cwô _ºÓiw4¸F],Jù3¯D–§TpLJ3i77Ü÷¦·ŸÐ¢ûa0Ì(øþ`>êÍfÐO¡“ît>¸]»S˜,¦“ñ¬ Ì8ß2L\¾ÆñŽá!3…DÆÜ2‘š2ó,®ÁøÒÖì™c‘#.ž1:6×ÿª`ªäªLM>¯A`»)Û†-°s¬:­-¢4ÕmÃ@FAÞ]¢“O)V`fQ!ú"Aø~ª”nÃe,©ßw°é//üË·—°˜ur˜Â0)l¡yçJSËb ¥ãT:L¯p$ßjtõªÈp`'t¨+e¶R.Ÿ…V²:Î™]cŽ[Ù_+)–¹VÒµ•é¢¶±›\ IõñÛÌqögÄC­”…›Æ«ý|uï{³ñ(œÓÛ^8çîcËY"ÃXèŸ¨X†wÚŽåÆšZ}ß×9¸¥Èu–¦aµZBæ"åu¿:€ŸuÛytœl“oÂˆEk^6± \ÐˆÔ‰yB™‡tê[2ÜøÃHIÞ)äZHë%L)‰ÒœèïdñãV©„0^ùƒ>X3sÓ¼ÒÇ%+·®ïÓäFÖmÊ}¿ËÇHQí0ÕzËÖ‚`ßïO%Ë¸ÉYÄ}üzb+nNuÄJâÈù™0“ó«ÂëQ¦ÍI«ù‰FO7}–â:Ûbµo¾»÷“‡IwþÉí fìíÊ°¥Q)n.¯ÕjÃÙYÝ?*ûV]œ)ÜaÆ„ôŽêñKª“”=ñc:ÎN[è÷2ÂˆèAËéíÚSœÎÎx×Lß¶y¬¸÷,è–3UB4[_©Ýë6ÛÓèìI©Ñ›\ÿ*\l¢@”%ðZn—…Õ,-°¯˜Ôè•U`Š$ßàæGÛüTõ8Á€å9—±WÙ·šÖAÚ­_³:ˆ°®æ¸Iåz]Ì.c?k¦ãÚ Û¯—ÌùYï¹¬°xõæï«éÒÏS9|;;Fù6ûesƒóy2Æ9ÿÜ£¸;ñš¾ŒîÂÁèco4?y«ñz¥iÇ¿oûA)£þí1)Ù~äò£e|xyy­=iÀâ8dµ¼ÉÙÅ"swß¯ÂÛœh§AYWåu[4sè¯†.¾«#¡¢œŽú]bCWìã¾iÅƒ}äT­º¯^GÑu]m²ßÝX¼Ö?³´à=­•öÜ…|’êEB•sù ZÑOÒ.Çÿ	ä+,1Ã°öV;ø„>”®²hxœ…TéNÛ@þm?Å4ÅŽã#-¥i	©4‰–F–Y¯Éª‰­×$4Ê»wv;–míœúö›£^‡îÕ×ÛÚ%#4Íi­ÓT°„Q~ß¯.kžíÔ2^D‚r]ÏR2(b
sÁYú`÷Ï6t1ËvTv/u+eÅ¶ë…`ƒºxÑÜîWÐÓ„¥Î;ó_a·ý»eD&9ûG³Dë°8ß9=ÓÔõz§ˆ
"(X*\/$<B’\é|/¹cX¢Oa˜å=¤xA¥£AA-ª0ö”Ç€FèR­/Ý`bcìX0vñóðóM˜‚=ÎxœÃ'<na3]ÏE$Ä ‚æ"äät©|ÌX¤OÉßI4ÒÇ!W7@D„aá{pÿ„±áˆò°H™°€d)b#ýˆC•NF–®i žu§¹©Ou%`¼Ãüd82PgF ošÆ©(xŠp´VP$F¥Õéüèœ€±¦0Ýs‚‰½ù›¡à Â	ö
Ó‚‡LÀþ^¾¯ÒS"h¬Ä?iÑ•àäJ¶îüžµ&y’»!9½Uü6ËÛÈ;ÌÙÅB¸§º"žIÇBóP¹Ø¥øT×žãÕ[$cÒUåv“¯Žù]Ovƒ®MË–Á¦˜¿HvGÅ±¾T`fíú¸s÷5ŸE"÷™L|¼U&ß=´]èl%›$óS¾yV©d*~ÃñÏ?Äœü| 3‰¨O†9ˆ°
MUšvÐ€ëƒ’cÒln¶¼Ô ^5Ûa‡Í†í½Ø¼w\?¦ÁvàQàÚGþ"PÖ\éª¾Ænñ«ò¯†­l4`áaÙm¡ÈÂœ…åº4dDíLÍxyÜì?S6àr3¼á¼ÐÊU [ÓT WÎ0b©!ñ+pE*7N¦4±Í¡q¤˜d¦$`ðq}	¯õ·‰Æƒ¹AÖHù°> ¬§F²\0‹½Ÿ¡uÛ¾¿·/o:-8)ÅîÍÅE«Û•ÿGeäÁ¿Rxœ…Tmo›0þ¿âÆ´RÂ{i»NU—M‘*­JV©[!¦±–@dLÓ-ÊßÙ¤IX4u/¾óùyî°m˜Ü~¸ïÞÐ”éŽ2RpšSÂÎàÓíM×³œnÉºó„¦ª¯i‘ÎëŒÀEÅ-­ÙeË–ÑòÈ4§?„moÔ,Ë®9Ûü×’TÖLC_FrZ¸¯¾Æ“Ñ·¡ž Wô7)s!Úð"?8SÃPU»)#X$PÓ‚»^sÈY¹€¼¬™´ù^Ì+VÐ
øŒÀ¢¬8&z,ð‚iRpxJæ51UèÀÊ“;æ$Á-{WÑ&ÖWŽ	+??ß€5X«’e¼C±í„lTµâ	§)`ÀIÅc–žïŒO%Í ‘ôgŒ êÅÓ‚Äû`E&¤eU¤³„A‡</ÛF*C]«
ÍA…ÒÅRG›	¸‘QFxÍ
<PY"G<×µáxüy|REÖ`ýÆ‰ž­ö²1á±äpò¦:‘©HÊI&Õï…fª
4Ö×ÜýÁŸšš×ÒÜ–æL÷ñ»JE}[lF÷\•°±:EÈ&'à=:W•¿Âè=ÀÇYöbõ0¤©Êºa¹Û¾†	š£ÁÆ<ö¹ÂçþÃ'Ývd`‚o‚·ôÝpàzaÏq]Ïô{‘:~4üÓzÛ@ä­IüœoLÿ_ÙÀPEóÇ‹<?ž3ð£ ôñõûAèôßí‡‘çºA¯§©
%€’-¸E?F¬#VÙfÆè@ÔqEôv\Ä¼Œ›ÿ€.¶w/‘C³kîÙ„F”ÝŒCò-æc‘ÐBÉÓêBŒ'6žpÑv8BÍK:•P¸8üc°l óôTÃÁ-ß¶ÊlfåeHá=ïG_âW£›»ñÎurw}=œLDÉ ñ¥ŒC¹xœÓ×Wp‰ÐõÉLNÍ+NÕõLIÍ+ÉLËL-²RpðÑ5Ò3ÐÍ/ÒÍI,I-âRÎÌKÎ)MIU°).IÉÉLÒË°Cˆ)%ç¤&æ•èe(qq¹¸ºyú¹Æ;û¸:ú…Ä»…ú9k@åã“3‹
t@”‚–ŽBZQjª¦5 Ú+Ÿ·¦xœµW]o\Ç}×¯¤@k;¶Äùž‰âªk'Çe¤F‘ÃáŒv‘õ®°{×®Z¤¿½¼¼c'iÐ¢­^tïî<<<$gÏÎÔ«—üÓ£çëÚ¶‡öè’ÚvZ÷uÛ¦¾|ùü‘9…G»ý£M™Úþääìz²»½Û¯oV“º÷ä¾2 F]5R_•é¡ºÜÖÓ¥Ôõj}P}½iŠÿß–ý¤v]µM?NëÍáôäWGú¾5uØõé}Ù·su·;ªZ¶jßh}˜ök<N|lReKg»½z»£u¿›ðgÇ-µ½šVM1À·	´æ×½DQê|÷å‹×êy;øè—mÛöe£^q³®jä­
?9¬8¼«gkñ¢Ô«N=ÛqÈ2­wÛóI½kû¿+;GŸ‡Ó‡ŠÑÞ+Óœ×^íngÛûœÌV?˜àÝ¯qÿ›ÿ`…»i¥ÖÛ¹Ðe³i›‡36Ó–J¨û\èŸêI³Åzµ»åÚ­Ê4Wóýz³QØÔñÐú‘ñÉÙÅ·—×_}óúZ]¼x£¾½¸ººxqýæœO«ÝqRí][\­ßÞnÖì™ÓÞ—ítÇÙÍÖ_?½zò›\üáòùåõ›ò³ËëO_½RÏ¾¹RêåÅÕõå“×Ï/®ÔË×W/¿yõô”ùkíC	f'ÿ¦
]ôÈ,S›ÊGq¿aÛ†Ôª¼k,äÚÖïYÝÝ®Ûáëÿ©º[šý—ÚÝì¶7BÌ·ßÝìË[NâRØî¸7œÏç«iºýìììýû÷§7Ûãéns¶YœÎ¾àóÎ¤Ççc>wàú×6«HŽÞ¬§³ßß>þØÈü~^ãf‡çýñfgu_­9­ç+|ì£×9U“‹3Ñf“Œ­5uã |ÌÅX‚PRôò7ëmÝ©©O«OÆuAžu÷öV#	~]ö?¨Ú´ýïêmù¡±ÅiU3 õt·¤p˜Xî•·ëídÍ÷“×ßO³Ï?¾SOþÎìÀ_aü=äç!ZÈa~nZÐ¦ÎÏ9CöËü1Pu:?ëÈyt—ºXä`‹·^,ZpÙ+0%k$B¦Š©¸Åºù–u‹H†rJb‘1¸jP,êX‘$BÄdâb»¦¬ço4aÔÜü
‚.ñºÅµ¯ÉasšÚb­rQü"j®I¼îÈ¡÷â5Y²É×(l¨9ù°X°¤*¬u
¦ç(ì¤|ÍMXÓ´¯N¸	B¨4Xëº¥ ì$‚Ô…5‹¡¨‚ÖÕ5xá†| §Û`­˜£Ž’Ÿ­`›#Aë»´d€’ï’]ñPÐ\¬­G_R´Î É)ZBÄšIj_*Öždgñ‰fkçj‚–* *ù$mÉçùÙÊŠxõÌ7€-‹uMÄ‘Ä/vî­%žÑè:³.muF¸©Köy°†	‰s‘x&Á”…ßÁ§ÂZÀ,£pƒ°e3X3=ôX“°ãSH®ja­jFAEj!CVX2‡Å†ÀD©‰Œ”üZ'¯Á›Q£N>	0 ×}(µco®H~-a"g%¿˜ VbÑz¶¢à —”†R›†–“–üb¸Tb‘c5‚6kVdÍ’]Áú
z(u"~u5è ñXÊÞ²HDÁ&ðUÆ	›¡BÈ¾Ñè]|”xÉ@êL›Xpªó/xÊU¸ÑcË~°–¦&ìôŠÜÝQXc’II%µ§bÈ	k©’µ­ud5× ¬9B´´¶ÌýYm±X¢dÇ}‹šJ-Ô‹w‚Ö¥ìIÐî–ê‚°Æô…îºdçlÈ<Á†R­r´…BLÉI~TpýDÁÎ3¥’Ö‚e©ûÑ¡Š«^ò#ŠµJ~~ÿÚŠWÁ8]„lÀbÕƒµš¡2ÕÏÇÐáÀ@èÉ£ÄÃ9¯•çtsyhK×zaÇd®KÎÂ×r2Rû)–„ÂšÏh-é1SMCÇ¢Ö0"ùj…
XB-Ë^Æ¹pvä±5ºd0QªCM¼ Å¢w¼Å‚ÈÄX„e»Ä7c’üšå‰‰ZÐfœÅ$h…b%»XBñ¥¤Ñ%Zí hyüäÞ³ …Pš‘ÚGÞ™÷‰èqi·1R„T¸™D‘4w„°2„jºÄë1^ìâ5Að×Òè’ªQü†B“x½‘Ó¥’)“5\h‰ T"c‰\©ÂZÏ˜‰'•X4lÓ‹ÈÕhN¸aBj4X„Ú¢Ig­MÄ*¬¹N½/Ù‘F±éPVÖ˜ µ=ð*‹„Æ'lï'Ã£W"t(<¬ëè’ Ö•.ù9Ž+"ùqÐz´%q~Ý/ûM‡–8§Ñ¡!dlqÑ06	X«@K<¾ªt2E¼z®IcT£K*Ô³øEt$f£.ýæŒ°Y=ò°À1S‘4ÂšAt¾daÇW´<a…µÊÍÝ{nÐð`¬Þ1™¹X µÒô2…—k‹ m5ØnŒp}(ÅæÁŒ)XaEÐ6„Yö‚6¾gÅ$ÙÁc—xì®$AÛxÆ¢mDn,R{tJC&µ<”Ú<yá²á*ÕÖQò$¤n–[Ï²VÄ+_°\3nÌÔˆÐvñ«;•dƒÄK›æëX0÷†W‚(µ#ÄØk:at1J¼y_ûÒ„Þ·ZÖB€À#]¸ÑóHD?XK=øÌí )6ÖxŸaï$µ×|ÇªÝ	k£íÇt <wš u\²^ò³™g–­ÂfaÆMÂßM@ó…a(5‡ì¢“ülãæŽ$ù•F:'h‰ïN¾(˜G(O¢0”j#%‹]ò+™“k^ÐRCä«â²ß"šÚ£dÇƒÏ÷Þ>Üz–ÂˆßZ°T“$žgÜ™×Ž(Ø¡+¶›X¸/Çt¨Ä™‡,ñ¼ãÍrG³”CD‰ÇŠ±á†7£vkž—„SB7˜…5ÞÜIV*Y-_X[Ö|¾ê¡5¾©›Öüx~ròË"êÞÏßªãö°¾ÙÎ?We¯à‘Öküý¦mïËO•åï_N¶-Ÿ|ü’}©ÇêüïüãgóoÔ{|Œ¿`·êÓÙá¹<~®fkõé§ürÿãù_úúùÏ¦{óGt÷ÕoE¸ßñ»|üÅ*Ýÿ)è¾MÇýv ùñäŸ£Ä±xœU=Â@Dûûi4ä‰Š• BŠ€ÄÛ½d!¬p¿ÞA´|3ó˜¦„K¸ÚŽI${F’Äž)làØw¶­Wöì<$
P6ÆìÉƒnÝÞN¦P`¡/ë@Üœ‘`²¤zÚÿg*¼3“µT%}ÔÅ/V%ò(„à¦AïÙWùIÚÏ$Ë­þ {óþG=Q°®oxì}mW[G–îgü+N˜e0Ø·ÛI<— v¸Ápº3I––ŽŒ&BÒÕ‘lÓÎÜß~ŸgïÚUuÞÂL:Éê6:çÔë®]û½v=|˜œ¼ÙýÇúA¯²t}¿“&½n/?O^½9X´±¹>¯÷[“t|ïáê½d5¼¿H7ÚÉúzrøÝëõ½£qšeI{xqÑt’~o&ÓI¯ß›\n 8kìG—ãÞ»óIÒh¯$6·ž¬ãŸ_Kö“´ÏãÑpÜšô†«ñ÷qo2IÉÙeò·´79O¾™fíóä«ŸÏø÷ýœŽic8~÷ÂuqzÞË’ÑxønÜºHð³;NÓ$v'ZãôËär8MÚ­A2N;½l2îM'iÒ›$ñÃá˜c¼vzÝK¾›:é8™œ§	æ|‘%Ã®<¼:|›¼Jé¸ÕOÞLÏú½vâ€Æê-ôÎ—ÙyÚá¨Yý%ÇpâÆ¼¢a™ä—	§„>Þ§ã“N±×ks-Ž“FkÂ‘“áˆÀYÁp/Y
«jð*N?Ì²“ô2šóá3:G“˜ã‡^¿Ÿœa¡²´;í¯±€$ùûþé·GoO“íÃï“¿oož~ÿ%
OÎ‡øš¾ÇŠpb½‹Q¿‡y¶ãÖ`r‰±³…×{Ç;ß¢Êö7ûû§ßs/÷O÷NN’—GÇÉvòfûøtçíÁöqòæíñ›£“½$9Ð(¨qÒEcÃqštÒI«×Ïlâßca3Œ®ßIÎ[ïS,p;í½ÇØZÀÈG&#®o™ý¶úÃÁ;™&
<ú2éu“Áp²–| :b”Ci+·¬¬V–ÝÞXKþ}‹ßüŒÍœL€hãe¯<~ÙÇkÉ7Ãl2¬%¯·“dóÑÖÖæúÖãÍ­µäíÉ6göðöšlÜÂbµ2nº4Ù?Ú9=È8¢ñt€V˜;7¦íCùÖ´Þcck“ÿÖ´ûÓNš,¶‡ƒnïÝÆùâ½ðŽ•r¨U¯/Gi–{ÿU:†ç/B_½K'ÀÓü»n{0éç_õ“‰¶WîÛ­>úŽße“N¯Ð^õ{gÅbãÞ ³‰«NØæü»‹Öä<ÿ¦ÓƒÚåß¡ùwé ÿ.ë½´d˜n·“v“£Ã—û¯šûß|ûöÕÞéÁ7/O"HœO‹þY0Ã Ò(Ë½è3°búñ¡~^g—ÙCÒÐBßx[/Î&-<•|»ýÝ^óäû“&6íîÑë{~i¿bY`cgxQ9 ÃÅHo	òo ¡ü¥bë#À‰±iÔŸ¾ëš$SxxÖÊÒ§Oò…åC{Ü~ü(ÿžÝ­·F| µ(å[ãwUh,ß²i·Ûû˜o¬Û:÷Ú‚Å÷þKH6µs¼·}º×Üy½µ.½žM{ý‰NàøÅ´=IºikÒlwß%Ÿî-¤ƒé…l·&ßNÁ ›½Ž”ÀoüüòÞB³9}ü;ó"ÍF­¶{êABÝLÿ÷µÚ[[¹§Gúô,I¦Ó^§Ù‹úè€«´šýt€gÃa?IÆ­Í³Þ 5¾ô¯Î§À¬æ8muZgýôË{ÿýå=Lt£Š1È&Iû¼5Ö)9®Ô$Ÿ¼ûá§äkÒœ½æw{Ç'ûG‡¡¢Œ®5ø‡€¥?Ý[Øpâ@†Gû¹†×„Û{{pÀÇNšµ£ÇAúq=’ÐãqÉµ¼ÚúvŸ‹†¢ìÙu±ÈW‹ìÄ¸ì×UÓciÖzÇÚ‹_¹¡¾H~øJ)ç‹Ÿð¨–½øIÚr^<\¶2ËÉEë’ÜÔ±uÈB¤	ÒVBD²øã½……Em2i¤Ÿ'ñðCÜ\Y[WÚ}*ø³£Ù®N¡ð`ÅÁ
[ÉE{2JZŽ_ŽÅƒI^¸züüü«A:y±öUÚë¼øáy{2î¯÷:: âd
.PÀ:¬‚ë¦@T´¹:’äÆxñÌû¿üW6ü¢·øeZåÛi†;g·ˆ¦ªÚjFÍIëëâgÂŸ@e×'ÃuüIÞìWÂÕl^´²Ÿãêò|Í6d‰šmÈrÐ3¬/¤ù%¦ã!¸4é\g%pçV¬ºÕnCR®[{üszÉAµ§c2%2Y:~/òb‚OÕµÎ¦]n|ÖÃÏ.FÂ§F¯»’(PÎØàc‚QuCà­Þ 4-íÊï$huUFèåÉEÛ"€@ÂT1¾¦ÆXfqíƒ§ÙD‰ÄH; 85u³QÚn~hvÈó½ò4–¶Âª•eÃvê
ÄS*at¬YÓx¹ÑúÂ@s“¦.(G#/£¥&!˜-‹p–â«Ì8óQ?¤5ˆ'ÔÍ0|ô"o°ë »Y=½B“=UñÂZø7mpÐ2¼nØP(ÛZÚáïë6ÓKÝæœFP§!ý•¸‰6êw5©A[à „Nt+¾Îˆ&Ú5‹Ô?k9¢¨¬˜³'K¾Œ¦pðÍ6”¡Ð'BšÚ•©¨P»5jQsî‚ˆªå•B>xË8…œ1H;ÕKÜïÝÒüD7™¼H. î¶ÝIZÐ¨/F“º)e#Î‚`·•ÀÐ¯éðbHÎ±¡¼óBhŒm~_¿z¨‚+U«Ë
Ì¤Fh”ýô¯ª¡Éê`Øn`å á±ó4¦9LhÍÿöÖ­6MX<0ÔÉxØï§ãšAfY—ÍˆÌp’‚Àt’œ8ª½±v(xëÖ{³OS„¸ÄŒe·„xS‰PîØÎ.íóñp0œfÉüIõ )RÊƒÑ–i‘
 3)‘´2½Lëð¯ÛwË5kÛî!À”Þ5»~dæš½»árÍUºf§i×D–q
.ªƒm}}Á…`ƒîÏ9ó¬¡f¹Œ£ÅbD=OËÒ¶¬	þ*öÁ’6¶¡K4ÚÝXwÖŸ¬T÷””pXUhƒZuÝ“‘«Û˜´Æ“¦J¿˜ãÓ'ëg`ž$ŒØÝÞ¤S?^!DÁ¦292X»Çy =é]¤€+!m?ß·úÓt¼èF³æ9tjˆhPÎØÂÛ·û»ÊªAJ7VÊ’eã_Š¢7«6Ôš³¡"ŒNðÛa¥~©ì·ÓÊÎø÷-êuŸ~ØL666’'åÓò×ËkÉò›ËPËº¡¨±Õõ’PÏ*¾B˜\…9cžôÌ¦Îõæx8œ4!ß®ËŠb-o!%'«øg%ýÚD³)ß[}èF¬÷O¬.…ÜµDTÝUšZVè}Zz„ê°†4¾³ÞÇæE
ýRAci´–@ç=ØHjZY‘ªÒ
 Ðmõ3èÆ¨–¥“êlj9¾Tœ ‹…ÿ¾gOÔd¡MÃ<ál
´5_ï&›Ÿmâ?.jMF2h™íÕ777™Ú=Lóñó”§Ñ
Æ³À:M~à¬ÌÃAcr|)¦‚BÒ.ßaˆÚüÕàdŸpR­ø*±¹±wÜòÈºÈH¹¤(4sG(¥^}{ÜÜÝ{¹ýöà”Ö%»^»¶ZÀ.VX–ÿ†­³¾To
™«&ÎQ¨Å/Ö¤ê@xØM‡ã$Ä„ÔéÅŠ-°>&/¾NöÄÚãáÞÎióxïäèà»½4Ò”Ø_›“¡³Ò4\k¾/ÿÀ~¹%Á¡7¾Oû2GIÚýßi/è°PÚ—äŠÂÿ³ {÷ÁÑ«æá,ù{T0§ƒlJAçåYp¨1lñb€/xŽL>“å÷Ë¢¨%(›KKôgtÓ´sÖ‚ØvùFrÊ–²Ÿ{ÐíiŒ—q²ôC`¥Ò¼8šú|B÷R¶r›Tpó9ðÓXÈÃq¸ø
 Z8±ü?¤ðVUa]©ì£ª²û‡/â’ ­iRUtwï›·¹`ŸóÈËƒÞ;>æLÊù)Énv:s4`UoóìÊ¥£%°
€Î*ÕÄo’< \¥½ØuâÛiH]­´–¼:>ÜÅ¢~sp´ó7ìXÝiÖ;ÄÌ` †u;kÄn ~“£ïRb‡i`ÐX«×TÇ¹¸–5w¾7
€’_%›ªwiIÕ¶Ñ•ÝFfU]!W]{'æÑ@»>‰Š,+ïÐþJÓTª¨&ÊèÝÆÅFqÀÓËš´ä95*9w°ÞIsÿdçÛãÊ®¿PqyƒMáŸ&Œ)FPnü¬ÿóuÛþæào×k›Ë@CéyïäöòàÉoÁâÄòËß˜å,`¿õ.P5aÀ…‚÷Pà„ó†ü,"Û°Û^n‹ó
E«ºÛ¶T\áÄT¡x»{ß5w÷AôÐj¬¿ >…ÆiKãONrËˆ‚TúrÍšƒÃŽÂà•(,@1%ÑµÞADåšd¨‚}(º%ŒuócK¸Šl¡ÙíðÄ‡¥¸?ÛlYƒxxUß‚–Ú¹°¿ÏØC²´”|w=øJ›ìŠ¿¥‹õ„Ÿ+¶x?#†£fa•“aïÆgÔ„ðÇØœ§ƒ!÷¦¶¾wxÐc ,ÑÐIPõPÄá9÷5j7¥(î01ð üNðâ³°Z|%„\øï"Ô¨5ÎÒæE8ÛðH¹F	,†…VaÒÆ+ü|Ap¦m™U¾MÝžƒÛÄ¶‡«Idþ•³†¿uUxË˜žˆ,C”@—+¸Šýþtíþùùôùý)–tÎ>éÓáÊ±æ×ÉãÃ…îå»”Ž°½è:oC»q@Ÿ›Òý*_ð‰0š9”h†r:‚GÅ8Xs¿²C(zÒ hs–×¢Ñ ·º¼jˆ…¯"k
èl„.ŒÌ5·ô >ZÂ“æ—ÜK®—0áš½Ð@_ƒêF€ôfŠ‚D²|?[æàÛ >HÀmÓ²×ûh½y:¦=;lœ;Ãçã%.¦©XÑ(åH‹Þ5%`„È{X(êxÕŸüÞ$‰íúWQ v¡ý”ºµ.(!¸×(_j>%$×¸èvž¶c§­xàB¾pƒÉSòE R|Ÿ¿P™f:bW“%é±®=…rÝ¢7#P2ê¨(©•¼ó£äBDª)Zy—‰5®‰¥ŠF”§ÓÚî*À?)¡<ˆÿ,£Èh,ÝÛ?ünZ¦çd¬ùÃæO„˜ÑÓu_(è¦ %ùmOm¯ÞíÊúK#,Jž0“#c ²“Sˆ~BÚ1Úü¬µ=ØÖ›.¢Sxrã˜½ÌM¡ñ¿kÄ†´/F\3ÚŒÝŒ/jJ«WV\ÓG‰Æ¡²ì~¶ÀÁ8#ˆK« Àw§‘›£JŒ6€ËÙ+ñ‚ùµ)òFÄpA<4¬Uë€‹LZˆÍÂY›,Í¿ví¶ç£DÚ1Ð=20,KVñC%¶Òz„Š2ÐŸárÆŠèB].%yYÕê(ˆ{d:q+E1žÅ uÎ ‘æyÚç*F½z‰ µ<HeíÒWÊØ4¾*ìõ5};^$åÄ¢ÛÀ=ž•kÀ‚Ba8ù…¥÷þ±ƒmèG\C Hˆø©­©­	"1Wƒó%5b<€Ï.vO¾°çŠo[„;D‹aƒ¨k;ð h‰´‡GÇ¯…ŽTV ?WüŸ0ØÃoÀ\ëj‚Îÿfÿpûø{Tp½yŠ(ˆEx£cy=ñIfj*=žU7B(zzAE ®”:Ú½¯õzŸ5fpƒð±–þ‡¶Ac#™¶Ld³´¡¯‹}E÷ŠN¡úÞôé¶r²Ú¾€Lévº‹§YÕ¿
—ˆ¦ø¶ÿ@Q‡ûØ½x“@Vžääõöñ)M9b€¡‘æ¶•Mè”…Å´¥'Pæ.¡KPŠÕw¢··t`ÿî@WDÓhÔuVD<ŒbÆçÜ°|s[ÃzB¤‚sëùï¬X½od÷àk‰Æaðš›Lí«ŠéŠ)ÝuL¢²|O*·.piòA*hM‚©r±Tú*ïOGISÙ˜\g“x$H²°Kux²¿ÛÜ– ¨…@	Û»d¡|µ¼Î!úÄ±Ü[8zsÚÜ>~uB0g+n$|ùvÿð´±è€€ 0Ñ$YÀ„¿„AKø”–_|ÑöË&^¾F:æuÅmbhMäæƒ6rÏ¡™ƒíWELÎ†ªI#É™5fÎqhT›6UhC`±NëcÛÐÎò·ÖFLkIþÎûîÐ7¶w¸Û µ”ÅT,*pvjüÂ9gðOT$Å±X8š˜œ° Jø¿NêH?@Ÿ‡ñYë9v*Íª,¦1à¢P±sëÊSd+–Ÿ}(
æ†à¾oMDÖ¹©l÷{Mr9Z…Ú¨\TÆ˜\–<]2¡âi“^[mLd(Á¸ˆ˜ŒHBTÚTŠì<”ß¡-Æžj7Œz€Efšñ[$ë•L'2TRÆçÉýLÔCmÁõ¨>® :¸Æâø~á–o×C…*©aó²Ì½ž!Ì$÷Û‡ÛõÄ”|1a8"%LoåÉ¹§ãk	åÔüÝx8IØ¥öê^ýK!ÿêEr“B;K´{ábVcbŽ0ÑùÊÏæá+ñS…/ºŸAA4ÐÉjb™Ä·Èu%‡ ÉwAçò5¬a6Á÷ ñ»"¿µA"/mÕÒë—B%µER¶wFÙôœš²žˆUçå:Òœ§8Fà„°D´z.*Ä[ÈÝhO (É¨1 Áå‚³*m¥¯:ßÌ
øo¯ŸvŒVpÕÇŒj W‰Þœ¥<FW`%y€¶ûéãGôðµGÓÇÖŒ`«ñ¨‡¸ÒÕºÚ‚Pò³¶Mõ­Œº/K–’ÆVòÕWÉSU•ã=ø¾¶B—è3ê­‰-ûøZösÁ<àa§í?jÊwíÞysJÓÜüzï5÷V‘›DØ½(DF ˆü‡ŸÓÐ
Ó<8yÓ<~uÔ|u|ôöÍI“Þ£„’½úÅB‡Û¯÷NÞlïìÌàk£r5t½–Ð©,^ÿh:ÐòíçE®"ò¤.?9š+b`KCŽeùVHöØÒ'·ÁÁÐïºã_ uè(ÚJ˜…áå¹í!æ‘†"P§OÇ•Js)«å’äE¹Ž¸ÕˆÒ^ç‘qçš…Ý„n>_'ûP¬ƒN­PÄq—UþujStÀAd|d´Â‰.§{{¯›âÕlžìÿ' ë}ÆÉª<ŠËrñU¹*¬¡Æ¹‘c;ø%ƒÃ `›²£ÍØwÆÁyÃGJhN®ðÛQè#-„—¡*8òAO±§å„ßp°/C?Å±j|Wîg$"¤ˆ.<QüuâŸ¯‘T¿Y8pÊ`Ä˜¢ÃëO¼UÌÖœJ]ÓÎ°z8Çé8·'µI³ÕÕµPUus-É 7ÒÁñá¶àBH}À3àj9 ‹N>­¿ À[ïAþêÄM_Þ/*ûCýç [ü{k<@¨ÃóäÔ6Îº´×÷a×@õ]ÆêÂØ¿Í¨Äl@%,mù.ÂA¼¤%ã–Áã½Óãï›»ÛMÆ4Ô|bCÍ§Ç¤£@§N«ö˜–hþxd?¶;ýtë©q'#©Þ•l‘e0rÑB¦sc}Â^AOM!T9òlâ¸·Û^[FÙ æÞµ ÞËu®•B/^å ,®kk£?j!n~|âœµ~!1»À£Ù=)Í.Bö…’v!ëŠîVòDÂdF8æŒ(mPE8 Ÿ2¸ñ à¢·’í‰;•¬Ž\liÃ oNÃ>Šp—³
v©(ö¤4˜}óŒÙdPPoaááù¤õä~Gc-°®GÔeÜ#Ù4W€LÇ§Ò[Y‹R§”¦žµq”Ú±w&‚'l†ÖÛáÑÞá)‘¾Øˆ(ÐpA›„Uˆ<
s$_ €îËÐT,cè6'¤P-	Qû<®êqÐÔ^?ð*º'£¨"|„.7HèT¡_Ñš¬yjã8‚’N;Hø;&ÇÕ+h¢ËBÄq„	¡ü<öI,ŒèŒ3ì”3ÕRß±p†«ûcÕ~éz3ˆ›éÒ …5[|‰bbL}&g½[œ­‘î9Ûœ%ç0I¤}®•sœée#ß²Ù!áO¤ì+sôT™£,Ï1iÁqÊM[UÛµ÷
gŠ±´¯è3 ÞZ²†v\oz}ûpÞC$[ œ’=ŠáhãÉ®–1Öã1‡ÙMþÆRY²µþx#ùN<ßjXÍø!A<Î£µäñZòDúUße¸dÿp3yõX©Ê!Þ:¹j2œ´úM>à¤©gPªyòt4‰Ja¥yËµeˆ:…YnŒX\x€qìE£âÑÝË_€©þ«}¶hÐ½¯]à*Â@Å“¯jš%é‡U¯W¤ÁdAz&Œðš¶	w®qèÌ'”Ýð­ÓD«ÇS6¬}¼Û¢œ)mi?²¸â+§ÇNðö1Ê]¡Òïì*Q^í›AK÷cµ‹öÚ½Zo9ªuCR©Ì6b4Iœ÷5ÕŽðq@¢A¡m:ØáâšÚ'§¸Î)ºÁÂPÛ±š~úXè¸æ]Ù„äSEôpR
^â>o ýÂFhQ¨8î¢83ýô‹"ûñ^va?ª"/‰8 ÈìÏ€œùâ‹øÊ¸–]PZnttüû±¨ª¿à§œ:Oøëôøíá´Í§OŸ’ps^®?VšÓK1ApÿÓIOLZ&8/Õ‰
ƒÀ~[B þU£¦	^~§+ç-Nãb[C(ÌCPÜ:€JžzÖþ-³ ÖšÓ¢Zòu*£^œœSbQâ3†~)b ZÔœ–¾¢¥3U¾G:FaãR Y„¯W·YÌÖr¾¹¨Æ³ãÙE4[7ÑX‰š=mËÍè&s¹ÅUQ\ènÐ7»":%¤z,äÖ=‡2û†!v‘#Æ^ÒV!øÚˆø"rž‚²v\«HmžÈôOÞy¿#[ŽžGž#òF
"ˆ±E`¤¼Šùb@XûªÜµ¡üvEØô½È†ùêJ½ˆˆå¨ŠãÃh±È‘eÜÜæ¹Ú~yÊãŒËa¤A1í¿ÜõÉX
Ðá›^wÅœ¤m©G8ÀBYì8Ö¿@’Þ"…ÎOñô÷±u2{EëêuEºŽçq¥üÊ†&Öƒ§óñþGÇhQñÒÐ±¶¹	çÈýQê&¦Wuy$Ó-ÙÊŒ=b–j’ýçˆPF-üun¬f³;´›M±°•È¾•˜d„ÝFêƒót)æÒX Áóúˆ1{Þ€O Ès;Âp4†ñÿ8ATžGû˜¡uÄ‚dh_-áÜ álŸœbPŒ•ÈBióf±	ž°’¶bÚÑƒ.x_’êµSÍ£p
5Ãw­%Î²ÑS%Ø4ãà ë9Ðlå&^’”uµ\T·¨ÇÖSõjiÈÃlV®>dÚÈ[µ vy´‚÷›WËºU±AÐÍud‡·]O¾=FÀ@ÖÂ }æa
Ñ
g<úêw%…’Ý¾[_Î’;‹‚Ð­éÑ©)àP™ˆÒŒá]^Z
åQ›‡d¹ìÏkäk©W¾Ð>F™óm°i/]07tÇûÐDàiY¿ÿR„£Í}°‰fŠ¤)íI&Ä(&#˜ ¸ŒqÉ§zjg½ÿÓwŽÿ\&w€˜Š4&«üY™•ñG=!N‡ÇXWù—‹¢Z7w4ß «œKº6ÎÒÔÔgX‚.(kQŽ5²n.6mÆkŒ~†¬Ç.o¥Í8¼h‡V˜*bðÑôú7xëM8Ö§†ôŽ¡X÷øŠ'Û¤(j(P\[V<˜±ÀÜy+³QEÀº%™±<B|œ…á¹nÅ>•§øb%šˆe¾d
à.òu	¸gÙP†5«è± 
ý¸^êM:ƒG|ì4t›&á‡u5›Ø‡|Z¯Šƒ£iEðéŠØ·/r’|OøªúzŒšr¯Ñå^¬Ós…‘¥Šñ$µœgfŒšŒ3Š/»vx‰.É…DÍU†»ÍŽv‹ëKÜæïí/B€"ó·kôŠú¾‡,P9Û­†¶yB-6¼•nÝŸ lØUfçÀŽöºl[ËYÀÝ Yêéx„_OÜ•R„Ç4’H.èv-¤? Ú¥‡à”Pên2åfƒŠ#jq ¨é4#†k€\ô†0¶:OŸð¼kâC;Þ{ÕÜÙ~#-\L8ÕÍÏ…$ò9V‘b"C¡¦1øî'—<¥B“1þQ{(ö ŸÄÜ‹ç8_	VÑ`ÚáVÄ„ìÌŸÊÃnÞ+~‹ê>"úqšòÛfçÞ¹DVÁehJŠÓæéþë=d¤•¢´ßš™H`Ï ±$ƒ“"„#y‹ÇF–ß©ñ¬e€€bsçä¤áÌ¥Ú½k¢€4¢<³Jh@“k®ÎÉ>Ëë¤è)	Ø‚]ÇÁè]n\9‚“}	áwlûê!üçáÉì!˜†þ	c¹b^Ü #üF	SñújNžTE&âßº¿¢­µp‘Ñå],²jú{sÊ©3‘ˆtœ–?Žr©aÉ£¡@eÇmc‡¨C”W­¿Ð-(ÃNœD«â?³©óýŠ/"Á<‚çágfJ6¾_Ê4ØàpºÉ
ä™˜,ø*a¨‰{G1&ÈÃóë¬X‡ºÀüY!øî$:ÿµÕ5*#RÆ¯)?¸®=çF&†#bs¹/žq»çß3ã¾çÙ¨MtF#Ò¯f^±S„Èš±Ùp‘¼­ZÍapcÉ*÷½µÕwè5ñÄ¨F¥ƒ’ï%G¬nBR@i†cQ\©€ùáTwçð ®ä6µ)7W1šMG4Ìª!ã©&µ•aÈ¼‘;Ç˜zxÓCå#F‹µ§ˆ qJÒ”YÇ‡È‚¬š¤|æU{)®r=ñTÔÑ D‚ö,JÊ9ÂÂäˆ]¤¸)?0¸
çBŠä1@ßÀ¶˜JZÔ}bwG!k>~$©lÜ$ÑUMHz…–6›ZFðQ|ú„RC>N¯s–¿ ŠEÙj˜:Ñó
v.§Fÿ¢1FžÞF@»:¿1üø¨Q­ê…r¾÷]ÍÉOr¡ìÉ'’kaíQ†‘Áp°ÎÄÆ\![IÆ¡ŒSqˆA¨`(YÁ¡NËDYú¦…-…í(»­.ÜûÊ(<‹{}Ì@‹ŒâW5æ/r¿¬by 3\gˆŒÎ¸B‚9T*¾öÄ
ÐÄ$/zñG0™Æä65-±’¢£1(ïé1WS`L‚PI€ª`téD	;•º®·ÞÒ,‘ÂxKcqœØúÁø«ù° •1ÒPµ%Ç  †hPzºÖlØ!]['Ä½†û9†cÂ§ûá×b»ŒTCþË^b#<ç-EtWÞë2l‚+|Lw27ƒñÉ:jf}l$qÓÀçøiÕðbH!œ+gD?s3°\·À«~NÃ¼®nƒíÓ|£3@3¢[.ºgIqÏÈÎ¾ §GÝtåîN®ï~à¦»K?Á ¡}ð¹»pCÑc‚.ç±˜œ?¯i`G»M`(¾‘jžn£0eñ}¡^~·5b|LeÜ,©ªgý'±™ïœæÜb­K7òG¦7´Sº#‘x"ŠX áR¡7e==ª(Ü¨jÁfÕKsKOIVwƒIˆä$¦`œb9âse"\ØiâB…&$0fl†`!‹¤Éete”™Æ‰7¼Õ¯-ÞYƒ†ACÎÆ‘¬9
•÷ê"o"'Rå^Yr‡æyÓòòxƒÅÚÇä(4"Öþä‡õöý%‹Eãƒ+Nhº	P9ƒQDÚ)–ˆÛ—É4BÈ–òézYQfÛ|›Ñ4ˆþ¶7Ò~$Bh!Yî™‰Áw¯FVÿè‰à¯+öÀÐŒò—úŠø­«¢Ä˜ê¦_¥àÊ"Ñ\ò{ žšæ/MBxÛFÒt¾³;K3ªŠB™„9ƒ>¶¹˜CZÂ[<–óÀkMÄ«m·L pd€Wìè]#š‰dqûÝ;ÜÀÃÁ–=DTå¨´Ñâ+´Þ@¤­ÂÄ ‰MÌ‡ÞÄŒ“¼šŠŽ^pkå“=gõ&¯%5¿>i.˜c!³Œ%b&·“W4J%#:t±@Õª¶+Èæƒã·Hä#ÈÌ?Ú|¢ædtBgˆë¹mÒöe—c§°D8[ûÀ¼wŸðø1ŽëÄ9Ä¤X0=ÖØnodöùRoßD]É+LÊ× ùUÛ\ÊxeÚÔ¤Zùƒ,eC8¬qˆÖY¨ãóïb­ÆÝà“^ç¢õQìÌFŽPÝ¦…Ððt|±Ÿ©F$LòmGºP×»­µ5$ ACôÎ®PÎˆma­U€ÁÔj,Lïü/ˆ²ÁÈ.ÿÉîã±QØ¨ÐãÈ‹´‘g°®‰jÓwèé®´Áh€^ò& ÏÅ(ä€qr¦ÏZÏ‰ |¾PÂÐq7…†Rcûºm‘Ä÷¬’ˆØ¾ä65HNYKûjaQ´ªWH¸–¿ÃÁê~ÑÒ%×2±dçÈu€‹«~Æ…ç¸‘·bJÊ¶Ežeå%¢Fôªò0[F´#2[ép
±¹‡ØkðžËm!<NŠ &ÉZTI¡I—Ö(YÉz!uþ@Rb	¨O™Ü}¶dò‹ˆ¡¡ŽZ5òä
âBÜƒ!PÞ‹§Þ« úòlA¡‰¢î€¸›2_Ü’:«=PªÙüØ•üDâ?\ùŠtäÖèß|ŠãÚq"j™ˆ¢¼”¢^Jñ—~qªqß*:ààÈ—LKÅñ×æø¬žÎIu¡ªˆçY^÷?ŒV¬{&0@ÇCÝ^ÂÝ"1ä>¹6XØÆ:üÁÊó¿ÒXt°Æ˜Éd½/¾$èZ‘(“Š]_Ò‘xhí¶Êm/Œ„ôž*ÃêC$ (AD§Èd5pûfï;dši2ÿ×1òmŸàøÓ(]` ‡0y éì9Ç*À/w@«q‰¶Eˆ¬UÝ¿$
p[1¿Ñx¾(gïä”cA®»]Œm{WeB•Rï~úô‰¥^Rp!Yv_Â%" Íè·Õý0ö î3h¸çŸ	w–EÓ´àÂ/†¶_‚ùàð”Ü×L&ÈkàSë××
¯ÜüHë!K¹ge‘ŒØÀí¸ø†wšâä¥Ùô,Cp
öŽ© 5­Œ{»q©¼p[wÑ¶u(á,’0BÒ·ô²·Ì¼s½IÇ2¾ÍÈ¨2Dã¸-‡2c¹07³Oxâ±O†ˆÆ¿ —º04#M‹ÄÐ¯Åt9à…ˆ^î~³«ñµ´Näl†W øö.mŠ(´ùÃñ‘Í¤)•"üBdª»ÁÏñ£žE‰Šø_+‘û¥R_)Êª0~£Gâ– ¥:ñÿš•Ÿ£‡pìO ’#€åH©«(`ÿ”×Óvmdô¨PôŽù+ÔE}./–a½´	K®¿@—¦A¡ô{üÖÆˆÃŽ‰~Õ”ò¢uÉÚÓôc¸™@$ÙX9Rå·ANfTµ8-Ì+p€ éHw(ÌQµ®ˆÁåPªJçÊÃý¦çXÃØæâƒ÷¸ƒp–@&ÉßÒ|ÜÞŒ¶ÊGE§ŸëÊó‡p\USñ±ÝYð&¸À³›Ýu$)	Fã²W¯`0¶”×Hw=3N*XŒ}+9ÒSFŸ¡W•MÆ{–ð yÅLÍ¾]éÿ^Á‚¬
RX”Á^Õ£‚åx¶¾WœeW¾J¹zúäO;2ÂÛkã”ÿ´#ÿJ7 ‰±LT¢M\ãùi™+^} å¼(ìvª2°’öòÇ¶#—À1OHtáIÏ‚°Pø6¶(ee\tœSVc¤w·duÎÑÓ z“~Såuî\ÑYoqš5"hhÙÛÁT]´#â¬ÏÞ¿Gûÿ‰c(±ç„Ýœ7îRàØá+ù­,Ð~.Žª­Ïü*å•ÎL© ãt ùl§ÖÂ5Ú´'üz.ñW:øf;9‘~“}Ø@Å÷m"Ž?©É¥¢4S’b¬Vþ6 ÍT1*e Ù´›:vêçÈYãéò,íÕžçÙ±DØ.×ö'Ï>˜d±“¿Û÷wx¬¨Ö¿vêñ>)|ðâÊGØx*^QÅhZNŸ.ñ 4ŽøfnMo*¹¾=1Gž?Ûs¶JÄ=t.1óÅnsa›c®oå0áû­l -Î‡ö„Ò…*ÈamSq¹“8·µ”¢Û†bnŸMïqÝû{ä`šôº3é½w1]+
BÎ¬CÇi–Žßã:
xýé¿×íµõAI÷"t)É\™ð»Â%ú_G÷¶¹XAÿcµ0 ÄŠpÝ4£ }#®0“T{âfSþœ‹	ž¶è`ê„¾*Ðœž¬%rU5DTzmçê¹Üõ”# ˆì™%>ßÝÁ¶ÎÃ˜Ø&¤û× ùs…Š‹‘!› zývïíœI¾áõÞoÐ!®Uø­A<FŸlŸÀà¡^76&2Í¥šfVòb € Î‡ tË'«g#¢Í•ÔÄ‘0X¤ø²áVGÅ˜^þåÃ#ÏFÙ?Q	å|ALËÒÇKd€^ç¢ |âp4\0›¡5	 X3Ûßï»Ñryåg,õö£ïêGPÒræö¼¥*ü‡rÁá^•X~¹k5ýH´~>³ümDÁÿ.É$íHbòà©±Í•L¾þì»Ù­°pð.l=zVÓó—ð:CnÄÖˆà”ú±FØaÙ‰»jq$€ê,ÉÉ¼ØÊ7±7änrÊ~ž¿÷´ô5Ö–<Êñ81Caÿ˜ÈÌmä´ÖBàÅ’üd¹L³U–ŒHäõØT.tQ×åNŠÁÑUðõEa¡¬´£Žkãl$±l¼Üè/Ýn—÷1Õøïæ£'èQéqPdb( ˆ“mÅJÏ)4EÏåö—Æ/]îÊ9N[Ø·rŸÕ7f·–e]ÈWPF‹—E‡, â¼A³’bt#D2u<Ÿß½¡V, ˆð
èÍu5k÷®¼zi`!ñ}·?ÍpÕBE@©ˆÝ áÐ÷ÖÆ|Â»¤’€«kKNž#C’Å*Ê•Ï/Ÿ“ì¿àì
géÑ?ßÛy“v­æ·¡ˆ!LbÈ5*	>’ŒÀìÑ=èOß!%¾»=–¯ŠÙÆ5E$dE1PîEâ¥}¸LÆ†›Ãz“8uîmÈby¨bÉÅô³µI,÷Bg(ú0ä³Fˆš;§ƒ5yg±”î6y”M<ÜeãæBà~ñªJ“¬O)«[LfnvÇ\*¢šKÏÿŽ{(#U³Õl?]Ë( ¶²s¶gËžT7¢V&ó…”Ø£Æç¥¡,ÑÊ°U#{åíë­p¦QèµITå:7æžk"w)"°©ðüôKN™ƒZXæ¾d§5jµ{“KFIbLFÚvq+ñ¸7šÇY‘‚ùz¹©ô4“ír^ 3ŸcŒ­²VCÄý†RÿšôLuF›ãM©ÚÌDÙ Xq†µ²ÆüIÚàvÖýRÄø
§BoÈM¡Û¡žæUï&­aÖeî¤Ï#~ˆnã5b‹¾nPÝðJ„lÃ[þ‰Rr^pæJ¡‹Øï. ¡Á÷[s>È$°ÏIw¹ÿð(y[²ßávk×ôFB•“à(ØÂü¬·,¶ú"Ëéd‘Œ±x’È£ÁáÔÎKj‘åJEu½G˜†!t›¿Üc§ÛAw'§»û‡Í—°ïEM*´“OÀ‘È’‹!…>µ¹áÁý~üHîÍ”$?zý‹ˆkI²J)>âxJof[¿ÐÅÃ.³MY*lÑV(};yky`)ÿÅ]ß?ó{ÜµîqÑÆÐul‹cøÆOäÔ¦v1ÌUM–/l Ã\UÔõU	ôÆ"AW—„qe–ô•´‰Wë€«5NàÄ­`ƒÜO¥“ÇpnÓ¢T€*˜‰á+†z¬â‹‚	ªY¯Cªä½kòâ\=bQÉf‚(d¥heÝ'vål!hž¯¢k°DÈs©ÃÒ½âÂ>œ+aø¥´¸ï=2I´;Ôª‹áøR6mo˜°À×ÕN{¸VÖY§©¿wý:Ã%.hßºms67šÛŽwy¤´O`±”?LcÃå¬¤¡ "*Ättd<2Áp›ô´[Fi1l-X¯”)³K%Ž‘Z±ZSÝÒ3¯¨¾`ƒˆD³9§èÑ{+¿ýjß¸•õUx#/l¿¸6ìÑcqBƒ•¯y­€P0…¨ |<ép§ ¡iº…Ù8zÃuâÎ:™ÒsH¿mÌÄ‘aöüþø/gü\ïÖÆ˜$Ž“è!AÔ¸MÉÖ6RÄt»ØM8[ŒÚQ€@è“fqäÜ?³Í*3rÝô°ŸÞÿzŒúXwïgðj(ë+·È¬qcÅŸÜ—¶×é‰úÜX²T%‘ñì¹æŸÜ:¾KëOn}ËÜºŠÅ‘^ýáXœimŽgq¢O™ËÞ"“ÿÉñ#és¡Fj*ÞÍ³Ÿ<)JZÉ‹QÕrTþ(™ˆ:æ=UJ½$U%ØZ'‹RÙ‰³±V*‘gÍ»÷‰@§Ñ˜B&x7€[„aP	üTEéŽ·§Îù&òp.rQN¤	´ê„±7Æ‰ß&pe¬ôÔQ|Ë’ÁU×àÀôp‡R?;æTÇè®
Ír!Gs÷S`D	‚oeêo¸€*’Ï¥­ÕÎÓër„éøÑeÔ%DÎX€Æ!ÝÒ\à2 õ•–RvZÈ¸ÛXMOz/â~jœ!àååWkÌ¨ÔÒÄˆœšö'ì„Ç‹ñr-A®A¹.÷±Œ1é*Xq¬£!Ê¡Éq:½ÆËƒÅ®¼uQ‹<
?WËGåê­p,Z:ƒ‘zL­j2xŠZôªbzq"{tÀ‡UÛgÆ´w˜u§ºÃûÉyIú£»˜®¥žøö´=es(NFGNQ3<(ÎÕ+‡[¯XÔŒIH~¡Ø®‚ª9¹DB¶/ %|dÉ˜ÝDæŸÀ˜QÖ€jM<¸$Ö›PCl=r0¯'~8ØÜ!jÈáw¼ "¸Â<Æ72ËÐ³„—¸0€÷yC¨OÄn–¡gÓ)NöôcôÙÜ9®ú3w¤ºü$ôk¶)žÔ6IÌpx²¿ÛÜ>8 Áî¡JW›iÓ’ïZ~4äƒ4ÄÔoŽš‡G‡{úQ¶ÂÇ“7ñÇ^¾&¯r³š¥3ÖÛÛ·vTÁ@ƒï!õPÊw‚[Ýì®¸¡Ü•gån`P«³§ Mi.Äwy€˜í)¤LUÀÛ{}òÂ¹š´ð²Ú¢ÅÒÀ<WÙ=*cÕ|¯þ—C&_‘:ŠùŠ'o_¾ÜÿGc¨ª†(^¼¶á¢"ž|Å¹¢éâ`:M*‹úÃPOÌbˆqÑe›æá½ÖÉ Wa¨Ä®uÙkÒñò[ë1 ;O¾¾uœóÁÔåÛéóFÀÏÜT/­c¹"ÿáÉWÔ‡“¸^²|d‡8¸þ‹¨¤oà6í›Žc¶MÚ:ˆBÉ'4>8d‰~²ù×§$[öVx´&Š}°¼§¼
’dÅháØŠ¿µU3»äŽ’sÇìI‚÷,£šÖ¯H>h¢q!FÐº+…Þ¬õ€Bq b±–¯í×0ÄùúÌowu?ÀU`ŠyXµ»šÈäQ¶ØûáÑë½×\Ê(*NMÉEc&ÙÄ Þ_t:ÛŽÙKVv¦Ê™vLPÒy™,ÈÆ¶uô¯4ü¯„H)–rŒ†¯ðS^ø­jX/ùæø	‹s‡²e%|ƒ­'+”^a–×Ãwl3’R*3òMP®ÉÝ¢ÎÉÑozwÝ™lÙ}!,LDëç÷å4˜L£Á5%ÏÿöKÌQAW
‘l
Ý¸½õhÂd…g¤76©R¢GI¹&XVÄŠ•Ùh>2ó¦é@Ð²Õân®9ßŠÒèzÎ@÷(0$k!f§šçŠÑ¬þÞÀyCÙ¬O¿ÅÆœ¤8¼*ic!Ø
Êv]#~ NGµèŒËþ6Ñ¤úô‘Š­ùÉYÚÕ4|&J”» z‚Ê}BqÛÄ&Î]q8 ß_N\{(z=[:4 'y$µ¹Œ¯Nf\Ü63äÄ}éw%Z(·<¸ÏºÝ6u7«¸h?%òñ@’G­GŸ¥Ä³Œï‡µg1ëë›ýÃíãï]C¤ˆyì	E¯wÏª#JÑÙ™N²ïER@!ê˜4›LN1ÉÕ)GP³•ø´J!v6²ùìüø·ÀQæ
;¡ÌÐ…êk‘:ÑµÖó˜±¼`^’úr×¢êäêæ=ˆBmÄ“ŸÌ¢°Ñ˜‘ô?5¢UÂlÐ
W™¾”‰É·©Ø&ÿâkL·#ãE>PÅ‹âQæ¢²³Ijn#FG?
{àú¤r¾XÞ»'w¿grõYt(ÂÈ€«J”<¥4(ŠäRTšâC=ŠF QlAEM6‰›‚ý·E¶0»?=q#á6YdÕÑÕ’8ø¹¤ë¢×l_„ýƒøÚ'˜—zÁÖ–®¿ÞG° ?ÑxÇ¹(Y~
A¸ø¸[57¿?éÙt2šNÖE¶—` ËÑP|É={sŒ
·"¾ýaéY)ÆV´…¥|áÙ­P6ÞÍíºÂyW¤í¢ßºÍýëQ87™%lQÌ¢„¯IËN¨ÂBª±´üÐÌ“•ôöñÐ>ÍRt´1Ýð%.2¸'uæoÈÄCÇÎµÃ	8bu„#^FÍÃ.5™´ÚçðÃÑç]’í`")¥ôÆ&î*?R4Ðée£~ë²èƒ"Èä¢Q\º7˜pFŸ)–õáO`jzD=Ä~©Øfƒ^ktñÙâ 4Ic•&Û›ÄËàFòþ˜­ËË³õiuHÁÂ½Ü6ó¶|î°žžVÆ?×¹kÂ*ÃÌØ4ñmý¡è†Yïcq»P·ßvÌu	K@^ãI(Z’xJ·cÜH¾¹¹¹¢–å’"Ù†CÉExžuvîâÙá£ÖeØêÌgl6å=FHŸq^›ÄHªÑjBeºÝïaµqØ ×½b&;3èäÇÜ<M$ÑMÓUÅ£2Þ þrÕ?£äÖýVÅdHÉaÉÍ¥×ïiFÀ žÏ™e†ƒìÙÉKã>Ö$š2îCîð(˜MÉS”‹ø…ÓÛ\]zûV–Û=àn‡/â?à.µHÃ/$s}+QŽD)1ßÐ‘A¸wÇ²¨‹â@O²70¼ix0”†üÓ@ih‚3‚ð,ÍõÂ'x¬dÞüí‡‚Ô‡!™¿p×µ&€>ŒS¤½3|¿/E[ØUÓîï]±¹Š ¨W¹pLë¦ìÎCæ¥7¨:ß’ä€l uòC¯.çÒ¶
,}úUfs¼›3,Ï§ö÷‹ñŽ	t¹Æ™œ  ¯©Ú&W‚úýÀl€/8ûÏ¼­yàÌUe­ý^UµÜ!¥Ãÿ>9:äM#þÅáÑñëíå†×÷@Ï<¹°KüÕüÓB=ÄýNÒ±qÓ’Õ»è©õüp>Wí5Ï{,l0ûeÉÑÙC+_Òo¹d=ÙÚm#–p~&ó§v8Æ6îÚÖªÀÊä?TÝßÅ3û/¿oîž0¦éhgûtaB'Íƒý“Óæè…‘VsYvçtÿ»=)¢…s^³/]»?‰D*ö¹ =	!w3æHîÁZŒ¤!îæXtQÅÜÂuNc°ðŠ¡&Õ$<ØÁuDÞÉ ÊoVÀ+£]äKöÄÌ|ÂŸ#-@Ì"þ u°jƒw(6ð*ƒ ÷ ˜Ú‰JÏa¡îQdP¯‚”~„±®9ö+jpF÷¬×ç±ün/ÇUrö˜ §½…‹†Xm‚	Š!³@×u àÇÉûÖ¸7D>Vv&’Äõ6ÈÀ§ûTµ ¡‰øR­ˆÐ×³a6Ãý;[å,v:¡ÊgÉ íÝœtÏ`Ïü4'Æpœ‘ÏŠEÁ{#,ÈìZxãÙ¦Æ}q¾×ª:ã×0eßŽ2n7Õó~oº²û1p÷&4Ré‘¡ì0´FrŠ¼4•{ã›ú2p%™¤µR¸~±JµÞ\Ï'A‡À“x{Þ¸)G"EðGvÉmÜì¥ˆäö¿‡U^S´>ñÝk8ˆ3’­Èîn TpˆS@¾µDóCŽîèCÔŒz†-ö8LNò¥ à¡‡k{å;ÂrxË¸Î`HÞƒ¤	­~–¢©|°&œ¸÷«Éÿäsó°O
ç±Jú.]Z}QÎªL“ÊBqgœ”ËhÊÇ |9™‰ê‚{6;w…ÍþnÑ¦X o"ñ¬¢9ƒ(þõÙP×2|^íkV~àºRscµûy6•÷xòž#/óÐiµjƒ>Æ:Ðhß“ÒC<FØƒh6ÓDþ 6¿(Rfnm¦,ê½cÎãåèÁL]„bhÁÑ­‘{¶Ñ‘r,³ØëËq>IÚòlQ´öT\Ô“€=Žhó²Ûe«x•G5?/'L	îûp‡ID¢hÔ›)“;“^4°yh7À^$Ï\ä‰ ­;5ìíJ‘8ÒÙ¥3ä1M€\(\<ÚeÉfÌVI^)4åyˆèïzð Ìo$ÛÐ/ƒÍ0£±Ö8Ü¯×IëHŽ·…&ÂHßCûã0ê_`GŽÞ"êHëŸ¥Ô3°ÑúF‹ôÐ,bÝ}ß¼òØWÕ;Š©Í]/ü´&a¯äu™ºHW›%C·tp	Ô‹¼¨Ì:jT–;ð¼u¶ì¥Ù,ÃGsªCÄÖ#x!n˜&§ÎMwé…Úí\Ç&/OLpvœôíž|å»—…Q˜Ì9ùª¥ÔQ-ÆØÑø’§sK¥z$¤l‘U½õ¥l@s¹L3±¡.Î‚oÉ(%'oËˆÚ’ˆJQ/øirS,`;J}?‹P;„„$Öq7o8Â^è~±”Ú}ØÅ¦ºÈôëKÏXÖYö3È°„$‰UšCäOÀáµ¶J7*¹
X­Ü*ÅF„àÙv!.0¤5žm‚6ÖýÃ£Í'Ï~Â×¸vD7D LØ\T8ïåˆ\,ìÞ$Â¤s-9FGÀ¢æ QãÒÇŒ"’Žc¦2DTöÃ4¢TöDK¥Ý0é-W™Bî-»	bHyšC(Ü>²BÒ„ä\ë*b‰=‚Å|Íß€Z•dîd?-È÷z2ŠFnXÛþï”iËü)ìaÛÖ”Íé‹Ìç%ÒCéA¹_K„žfõ„=K‘â‘tH‚7Â)¦qëRÂÌÝÂ)b¯%Àì¿x­Ô¸À?´ä\öó$½Á ‚³!èá2„¨áN“Ãì7 V·'S$¼²Þñ>ß ‡ðLšç$kÎÔZæA9¸f„dèÜŸççà¯¢îþÙD#IƒÉÍ/Úí1"üxð€ŽxÛá½Ÿð½!»~E¶|Ä‹ðþ"…™¡=eAE9@C TJ# q¯îü
'?‡£€¬’Usg…¤ÇMY®+.'i¾GÍïhTE/à¼êˆ‹Y­r\ŠŒÙ¥¯Š¸SÉIb#œÓ‚ïì8
¸MÝ/¿µ“ç	®ì¥`-Êk’}ƒ¨~·wªl#«TÀ‚w_3Ñ ¶Ê.¶ ©Â÷l#tî²;¨˜íœúžÿ˜Ð®>ñd:bzŽ$µ${rzh6/ÿ#;ò„*…Ö²h´PÚkØ[i²ïýüÜ´r×w°ÍØ™k¬-ˆ·Àe",ˆð9Ïã_Ü+„ä~ÊöÉæË
b†$á¸z,+xâš&¶]EºàSñ8©‰.êWðKŒ|]`èÍšQX¡åkHˆëú…–¯„ûYj×ªn†·wmëá®<ˆ–c>\šš»~Á¤§¼ìQGh)ðÇÇˆàØÔZzûÀ³¬ÅøýôI²Š†KRl‹$™BjA	Q’ùL˜‚hˆ‚'ögõ.i0
tîÑ&“Q'°^Ê†=÷Ã(4ê*Ðý-|õFúJ¯ 8(‡â-ÚÝ{¹ýöà´¹´szÐ<Ý½‡ÔqYµ—Žfïhšá6–Ì£- ò^lGô± dRn'Ê­d×² ¢¡d”]XÜw¦43°k,ˆÑÙpr»ŽDöó®‚“}dJz³†+Ò2Ðh¥K¨ûˆyR€"d6Qf¹š5èWñ‚•^¨2F¬$rØ…™ø\<±ÔcêË×k‰Ž	»vW§šcº<Ž¥ÁQn[íLR
à¾$xLè;$D°Ì'˜èwŸðªî•Îö…üìíItd™Nýüå!žËÜ˜ bE*€‡õh›h?}üˆ•öhÚp›
)AØü‰kX°‰ÆÑ$õ²àXÎÍ»è~ÒÑ|…k 9äµÆ¿ƒáŠ åV+&4‹í¶ùŽ(D}ý}ï¸ùzûäo˜-ÉJ6¶’¯ ’fôÇuèý´ÑÉVpÓMôâTI<C"ÁÂÑ'„¸!4tI	ÜZÒ˜‚š=}Òœ¬®ˆVŠÛD‡Å½>$oî¨â	µÓwŒ«sûV<iË÷³õ¬·Œ”ª¸k ³x^æ¥/BÓIÛ ÐÖ|]`çVS6¢Ð_,1¯šYþqs™xO*“<Dþ¡¹>g¨ :ÅÞ†©ð®-·[¤Ë*“¬3gªÜb$€’ÌG
¹Ê#—F\ñA›ð±PãNaÞ¤…ü¾ÕÃý¦}<z2T 8t;²AÚp=1pC¨ï/Åh’ÕoëˆEê!yˆµ5ˆ¡EaCäÀ ÓÁ/‹©ÄÇ&Lx¢Ù6Ma‚.GŒfÿ”tWŒ¹¦DŠJÃ“ÿÜ[)Ú=ˆ<®/ú$ñVxgûM©°î”~)q'DTºq¥“†l$„w³ÀZÒ1ÍéÈC–9I
È8…búÑŽiòãò¢»þþ3ýqYC^Š#ëŒ¸	%¹7Mílê@¶¯	šÆ|vßœ”F8¸Àí¨u<k½QœOâ",ÃñQ6«i¾Þß)5@›ÿx$òËâöá¶9UC†³Þ¾:~³¿[ª
B…ÁiUPd¨ŸXTP›·w'{§³Æ%pGñòùÌ’¼û¥¾úgÙ„F¦„Ãµ°ýDà‰Àßá>‹dÒÂ¼VösÒ8øæäôu©ú™€QÂ°ÈZU,q	~v‚ VòÇeYV¬‘¢¨®"±WÖ8-eª ñ@9´îÑ,
2è´ÆŠ!rwRqÙ‰®Jœ¬kÄä„_D²fÑÙ1PÈÕ=PÅ »ÖZ÷žóCa–æ†èžž!"DÅT~{¶ ôõ_ˆ•îBC1÷©ÝsÜ4|f•sþmè

"ðQÍŒüÑ'^\awÄ¼(½ºs;¨ždbòˆœK*ÿŽDÔu…1»PØfÚrÛÂ¿8ÓºÅù§÷™†q†&eŽáÑÍí¹Œ8iÂ+™,£·_4ÀÁº5	_ZÂ2¶d™è²¾Vwyã¦¯à„ZþÄÇàjá—¯¥q\B_)‰îý$ÒH5)R¨$
•mnÂi%s3Û¢Zá"~p#Ä/ß•ú§tÝ$b!Îúæè!”÷«POq×êõÌ«e(Û¾[_ÏàX FR¡ÙÌ’³0³kûÐŠþ³k§OÆ•F(ˆg CÈk¤ü
ÕN‹Dð5«e¥ãP6Tt¿
5¹Š;–øâ*ê/_ñ.íítò	NR:d¶5F­ó%˜‡¼Á®j£ÂS„3C1 9ÞS¯‹ª¸¯A3³³‰‚¥cÔ±©Ž§ƒ^JÿÏÿA²)³ˆË•QJäA¯VÎGƒµcµ”¬÷ßïƒ,®l$:ázÞX”Œ†Àûiü04á|Áë+®Òë²ó¡ÚñY§yzE,§²zÌtO…‹=]CÛH)«×Ãƒ†<K»ïB¬ï,í,…•*j ¸‘÷ Úx¶1 ²öeòàA/šh¥&÷µ­>ñ:§Ôñ` Ãmuòê6øZÄŒæªÏÏ²ducü%¦q5]YÝ2õD·@{8†F`	>Ôá–G-QºÃéÀû­*ñ§`J ØÝµÈÒ.À­Ë9göt,jî_ª“Õ¡.‚g‹\y‚Y d~“€CPBÂÅS?$ÚˆÜbˆ.©ƒ½nv´¡®PEëÅHe©|¸²—XT4	ò‘“døûÍ$ýôéYoÎKè±!UØ³HM†Fal˜ë†ê9|‡_jwfCY6K÷;xüHF`ŸÜ(‚â‡ºõT‡sbX5T…ð¥Ü„<OJ‘ <NujIˆ…ª³jøADñ#!3´ÿpÐ>¢…ä«nugz³´Eœ©öjñ5Ûû›C•›žEqzº×èÍÀxëñÌO§â”¼"j”@Öª>ôã† Õç&hNY}5¬’xiMaãqOXt†P/W»’'SlñÔb`'†û=cœQCìpý €—ZÚÑ1gäÑºf¶úÂ>üòKò°éQ¹¦,»ÂèLÐŒ
g<¢‰,Ãí®•[Ã	`ÇýÎà~›p)x¡kÆåbUðÛG­ò3ÄóOÚ_è  ‰EÂÀPÖõ¹®Àc¿¨ë’ÉÄ‰)BPdÄpEÆËÒv"Ç’Ÿ¢'ä:jÉa=8 ¿\6úø4bþ	L®dûbVÈÈƒ¥e}K³÷ö>‰¦/Úüh‰v ˜/„~ÁQÖ
ŸŒmÌûÁÉ€·»mov4zì®¢OõÓÉ¸—âš°bœ½_3¹ØT±
ì¶!ºÕýúÎí`’3¸_Äj–ýîõÎjJôj‹ªä¹8uÁKœ?vIð8[-ÏU†zFZ°Ó(N±ž­ò~F´zÅ)ÜýÃ¨:n¦ê,×(²S3Ü¥ÕçÁ…%å¹j>ç³¹›Õç)*<W@¥“[ERÀ&ç-ó8Ä²¨‡üÈ(Î&¹áC)(Þ))]ŸÞÿ < ¿Ãä=ãó5éŸ™HR†(ƒ÷ç~opX[‰„Mƒ,æUu)x¨ÔXÏmÇpLW¡ém£dÞ§}‘\kv”†DTÈIäÆ1æ€«Õ¥p-=¹„PÏ(ÿ%öû™×ƒ¬5î
óæÄXØšEU %¿¢EV½¬Š‰ñF&'A¸tÖ™’IðM¥Ê'Q…SÍÚB'îˆ
ùH	oH²à<²è˜®aÀ:yøñ•Çr¨e9[å_=9Ò‚'PB¼*d	´dñ@á&ÃÑâË–[Û€/Jeˆ•hnOé<®‚¿µiBg =V¸èÂö”ñi9qKZJ&=ÅP’UH9ºŽ=Ü8NÄ¡†l§¼¯‰nS¼P7š0¢´ŠqÍÃ±æÌDul¬$EnÿžG9¨xîÓŠ|HÂ‰f³8•ñEL.²WÏÅm$G²ÛÙD“reHéàgŸ°ùÜõìÆ’Yüš,§òëoÁrb,»UF7<«(mX£;*;U¹N‚Vÿ[q“Ò°wú™Qš„»àZäÆ&gl sÃO w5I÷œÆêXÚŸ_˜1BáD6¾xh®§
R(C(¬Å*PH‘µ{HZ—	õæicŽ²¢™á#©hâÐ‹FãðIå)•kW)îø;s:2fß¿Ì‹éÛ„i4Vßg+ŒÄ}–à—/ý_ÙpÐžý´É*×
ª¨I•Œ^J–°ãƒÌ½SŒÞùô}ÎÇAéÊ§£!.¯ŠeüÖ0]<äÁý¯-`–®Ç|êL&úÓRz‚Û'¸cüùk²!õj²“÷ˆâŽ×]ÛmW)j~ùqQð)³»‰¬Šñæ)vJþym´é…d/×—¹±èçàŸÍ*
f«8 /þ(Ží–y¹€ãœµ 0¯&`Eþštý³YO"`>ÆeŠl©È—BBvúC­|æãøÛ|ë`û•›Ü²CÉ‰™M8°ËHa-ïŸ©Ôºn9#mBNãÉ˜0ÓuÅ¯s™“(@A]|¼?4 nzd¯+´“ß	lkù[k'5|Ê¿(7yW>(¥Ü·§‚ùÀeŠ‘4N Q5´¾J¹ü‹ËëË2ýÃIÔ^V¡ÍÚ4¹H:n\gRƒ'ÍlªLŒÒ³‘v‰±t22PÄmHm¢ØvcruÎC÷1ÿ6ÏæTÂwÙP™Ÿr=árÊÞ;ãíÁxj>®Pöðc@>ü$Ï;oÄ	¡+„¼Ü°›3ÓLÝà!tí:œ1pÓÀ#öžõÙYƒˆ®M@NâÀù{b6ëPÆó÷¾dÇèªÍf³¹GŽjæÄÄ¾*³ÍÜäùwHs¢±"½ò
Ãá²šœ\K’XÇ°:õýVü6hÛ.ú¬Š¿Ò¤€™ó8‹Gê›Ò‚CX%³QF£_Ð.¥}6%ðÐÂ2f" ï`ç)¼.‹¥3hƒéU_³²"¡ƒ™Âêu­!2` )íºÁ+1Vå“ŠÍ D±ÅÞÄÔÙÔi¾”Ÿ,²µ$ƒá¼‡Ã®^ö«Ì(6#›X˜©o¢Rž›ZÎgÊAR;MçGñ»¤¶&rÚdr2äÞñ7G'{d‡,63·'öY}V^KÑ…VBp#øHÞËÑrQzÁ¼œ“[í%êÅJn,â¼˜eÌ'\< SŒú(š´M*eaJ5JÊE•úæLø?LG1_ËÎyÓ„6ÙPËÜÍ¶Æ’”t!-Ñn“¹Jb5ÝÙŸ•=ÓÝ†ç!Ëeº¶¸­Ð¾~¾4?Ó_7{f‘ÏyÃÈ¾¥‘;4`'‹XZ,_!_;«¦4DY:ÈÅUI5ó%ü2ÐØc‚³´¤Fÿ[Ê¹é×RM™—ÎË4yx!Ù÷ºDª‡ÝÁWA#-»ªbžÕÜÓQÇØX3Ûüsþ‰áü™’S¬B9áäÁO#û%Ï>`a5ËE•B,•Ò/÷¶O› ÍãíÃW{84øæ¡æÞaüé”¨(Šs``±ÿÁó¯Þ°X¤_7/¨‘k18¥7ÂÊ$W(hqC»D¡˜2ÿ»Û¾íÉX€(ˆ±rÀÎóg%²wË™¸#kßå]â	Í19ä’#n»è}Üá,W8êçøœØr$ÒmQ¨(°<2«ˆE¹sk®aNËŽZbtzà‚ÑFdqißÆÎ“¼ÛdËŽO" Ë*6Þw‹sYïúÞˆíiÃ “¥B#´Õa³W›”ªÕÆjCS…Cc6·óàŽÕÄ¥¯Ën³3¾|†&˜Ôå¡(P¥Vjqõ>‰ÜT<ÓP%3Éy$Â1ž0Gá<xôU‡úÛ5=¿ŽþVrL¹«Œõ Ù%e‹ÌŠJÐB‚U°Ùe×Jªºwxôzï56d¹‹Ù:¤#ºØâUÚ•B=½ÌµáÇ[Ò
?K-+Á½Ì°®„<# _Aà9'¤-ï©ßaTSÉY–EÄ\©†!ÍºÈÀSNçâ¸>»Iv\{éÕÉ‘sŸ—}è'øêK.yH0¸‚R«ß_Î®ûšk	Â$<ÜŽîãø{ckã£ùà‡‹=e¥È¾CvPçégTØ<ÜPà:Õy˜¢èîáºX yH<‹Îâ¦y¿(JÏÁQ½ò(ƒé
,“Õœ'>÷-/_'ÇÏø)Ç›óCk^GÕôø"b™Y©–E_a­Uþ*s6g?›Ã8¯.§ä›0W}OÙ¸Ž+›•õ6Ân+ú ÊÙ†ÁßÐ‚,KµÎ”ÅÌÐñgCk|B¾Nî:Œá×0U—Xîm‹:”tß€„ÕÀ+wQÒ©%(Ëÿdß•eÈK¦Ïhô*«¹“%1&.*´rwÁ¨êUsOq éß–ý¹õùk¨+i êD®ÈÀÃ/M5³®È¸Çupá&™Ìˆg¼:&·#îØ½èˆ¿ØÇÜ8,¡‹å?ôViëx¦Aº,©ÜÐ~9%–pŠôžÀ1bÑ	8øÅ¨K‹Yœ_nÀ™›’‚ö:bd—º˜jûW”Ì=1ýXNÈóüÙ,?Ôû-8>&Ó¨Áçñû“Ë~öy-O¾ «’Ï‘ÈÔšÉeód(š¼’yÙ
6Ÿð€J×oÌ˜›£õ„û›ÜH¦AçãÛÌöZä©sø1hµ‹$Rç´Ñ(‹#ÌYÞËþ×zŽPÃ?Ç$]â~¥Ûrñ¬°Y_eð¨u³HIøÞá6«i¿5Æm5ñV¹aÙû* 9À™à8vŸ–dejÕj—¸wÆOC³škµë„íÅa†jŠÚu]ß`;ÜÈæ<ÓÆ\­ÿÎVtg°¥Ù¼§Ò„[«Fåºù=›a+Í“v¢q©¸Ì%{¥¸ï|jÞÝíÓíæÉ>’"Öœ|”¬ñUôQŠ±7º‹>Ò2<ù,ìjX”<ÕŒ÷‰àóU6Ðh”zº²øâ–Ã2mÁéù*r¨—Ä‡x¦QIvò«ÒG—óq^Šf‰Ärg«Ä{2o¤ƒi/…ðÞ¶ÓJÈ&: &€£EHûè´MN´ˆÝ¿omm Ý%ádÉºšóÀ±±H™(Ú/!tˆ.&ÏÓKËáíOŽ+é°Vã)6Ê-hâNˆ.ôŸ?‚åœ›Ða?IolÌ‘Ì¼p6eÖÛ}ƒj»·új¸óž*ÿa){%YXTîg˜IáQ~Ï¦ŒR†ùë|L¡‰[•IDp_¸ÅU”ðúA}6ˆ>Œãú5éãžçÿ„  à ›Žx.”ïÄ„ŸœHæYœžg³–4x.Y°6þ€€¡9%GöŠt.¯¶ÑMCk›Ü¨Ìºfe¶ ”È¥„ÂM4
8%¢Ž3½šWMà*ÂôU~bÑEÒ…HÎyZò]DŸf“ÊJR7Ë#ÊbV{'êÍ&Pä•eÞÐš]2?WßÎ¿nLƒ·fV«&ó†*2.”)'Ó.ù-2“fûRPá®¤W!gÜ´WÑé¹øâñBÐ	†ÿýšt:6eï¶&­y´õ²Á:™ÑÂhî9jš!%íò/s§"Z‚'Y¢ã¨¤ÞÍŸ`MøOáðîZÇÞU”Äµ^"FÎ&’RŠ²"ÒâJJìÙ„NeÂ0IuçnÔ£ó& Í®>[–¦ÁD6„&®4–0CI–5;e-‘!, !3†‰+Šš¹JCÌB›Û®É'´i7hB7À}S¦Ðf!ÞsKÔ$ÌÒüX²|³ÿÜ ~´d¬›=—}ªî¨ $C¢Ëa–RÞÄdqšv:w¦¸Zîê/Z½Á-ìh‚8àc($ÄÍP
ÄÙ•ç–½fmfDISÄm¸ëïê‡¿äÄ§RøŒ60sûj‘Š­ëêŠl©ØÆ·o¤ÓMŽ0Ptp#eQk32Äoÿâ…œƒé:´múˆñ*G©Þe°!ÎC¡Sˆ[’£~‡"L5s":•µF]=R3C´ë’4óð"\ Ùv ®8É¦m€eÝißºj²Õó%s$1{b$óÜ•ŒGu…œKú)äVPßP÷ˆe]Š¡WÐ¶ƒAïclI|»f¿YçeíE*„×&%L‘ŠîÝ âÍýLKBá,ÿ Ær[íÍw»‡S*€°€DÉvÉÚ½›¯Ä!Ñ@BWÉ»ƒV£äŠŠ]Çsá™Ãûâ5¼vS) íîÑØbó9»G·s‡ØûÞ˜÷ÞÊ½ßw…TdÁ§ðj}§}õþ©§4^3ïv*×veJ`v³K\[Ô»@PV$Ø™aCî„r6AÎBã{˜yÛÒ:Î€´F­³^î>ÞL…N¢þì*R“ÁÐ“d9¬†dýá•G/ûéÇï¯:N³á”®.˜‰w)‘’Ñ_Wghí.ÃÌ¸!*[S«u–BlÁ­>¹™†&oÐhÌ[›¤·£A¿7À8Íë¨Û•ß¼W,•áT6ÅÍFr÷®è	;!Ã—=a2oìžTÜ³„¼aXJˆÓËQÚ8>]yžü°¹¶õ“wóüyòÝÿñðb¶Rìßï‡÷ÅAáZQ6¿-×T5¶w¤á­µ¿¬=[û«oœ¼qXaKcüßN<$hìã³ÜG]ûö×Ü7oqt¦Á[<œ^œéuà YãðXÂ—cÅ*¢‹ãCX†»µIŒaX"Ëáâ•)$ÎEY=h:f5ý	`¹ß4ßóÐ+.´D‘‹jÑÆxâ¢%ÿ{0v?g‹\šUA‘ˆ¶…¾‚"Æk¤ƒ¦‰Æµå'ËcË•5Fâuþ77 kYÊþ[V¯¤0þzÕÎù
ÆÖðÀ
•ÿÆ¾ì]q–x±cj*9æ™8IÐ?èükhpOrÀãÏ°ËÌÉzGÏF·CØâý–R‹ƒ×T"9·tî Ç
l+æ–€°š®$ÀÁ×¾žUq”µ—ô'ª%b•7žjcIæ•>§aceNºCÂ¨™ÛG©n‚ƒŒ…Eì§×+ÏïÿÛGlTžÐãÆ¡°Y!Â	„ƒ Hz8ÍìêR-”X9g±Î®âáó+¶Ž'H6 &8Ð]˜¬t±I˜"r´¿[¤]µz°QÒ¨öŽñJzT•p·¬ˆÌ&äRJ’Æi%aô·»¸; Ê¸eÑÙþ(Ý×rM§à¢ª—¤Ê"ÉÊiŸº+ÅVŠjÛyÂUâ›³ÂcÍ:>1_,¥öä¨!éß•¤ù–T_=+qc/ ¢ßºÃ;§Ô”êOf‚ÅßÏÏIï59GøH¥ç¶ñçÕÇèNÍ[¬ºªÐ¸‰ü9exh^\™iÄP>Ò|oÃ:h–Î
‘7ˆÙ WÑS»è,´K ¾ÒEæ[JÒ[ÔN/¦ï-RE4‚©•eÃvÒw'ÜŠëV".«”ÔûJv@LËrî‚4ôqý™Äú—n ¦3x¥ÓËFýÖe‘âãîš¦…ÅÀx¾k/Q6Y¹ïuó¾ ?Yå]bU\ÍÚâš½[Úëe]ÜÚémÎÒ(ÒóB4±z*}¥(It×Ý¾i'ÐOxà‡wÛÇÇÛßK¤[Ãaý~–švVÞ÷Ù¢´ólÐiÈvŽjÓ±aÿÜðÄr¾g1Páü`¶ÜqMá×ÖôbÝ¡	‡´œz¡: …CŠ–Â·PÉNþ¥Ã*ÁT¸B8z RMTä`8Xÿg:€h^ˆÍd×â¥ƒ{ªu‘—¤Þ‰Ü!Ý||*\ú®;tî£:Ê–‚9
b;‰]’‘KQœçâ#Vf,Ü+Ç+ˆOà„1úiíYäds³­g“UÜÃƒˆEx}ëÌ³ž‘\Å0ïiœg˜ž³úŽs²PIü{,’“§ýni×'bù£jz!|l0é6ìó&òñtDþ„÷°°Ö:k%þ¢ö¶:w3Ôa6Ôê7\{\	41BæÂÝ£§ÇE~ÖOS\ÏêÇ’3+:d2*kE,ÈR«aŸmJ:jÃq]^ð«{ºù$ Z=
ˆX›7ÓtNÁUÀ}s/f£Þà‡Ÿ0«OËë ‘Ë?þÈá?—ªËqc¾‹&.”IðÿÂwxS˜õU ã“³—ã^:t€Ë¼c 
ò‡+ðar®ùZà'û¯ _^e¯-àŸSÜs»]êö’œ³¶k µb`òß:k^…³~Ð†Ìô2fÐO·žòHÜØ`Ki'›LV’Õäéfò0ÙÚÜLà'‡n¸øw,- ´¹˜‰  tS\{K>¶±±áhæ‡sÜš4xé^Þñãø‡û«Ùý6ÿý)¹ÿ¸sÿ>XÜ=>ZK:­ìœ¸cU{ÉýäÉOkÉ“¿"3•û,)^Q˜0Z€Ùušó*((sòSÄ¼Š¸¼%ßÈRR¬ØŽg­æÉ }À¤áàV‹ðR”%|Ê5(ÛCÈX†0#6Lûô•ÜÐ’/N½@Š]"o?ÉZol•N< B¾H¸ª
ê²‰~sÄ`gjë¾ßqDP.ÀŽî@,,†³¦À'0¾#>w¤K|#,ºÜ4Ë»	Gr—eºÜn¡¥ýÇÒuŠ	(Ãe´u]|…5/4ìxsy²~¦gãáÏéÀƒØÈ‘Í&Djæƒœ|oÜ'¹Ù
`	p@yð ï9ø*'Ä|Œg¹€fj³ä'Jqâ6ä;H½T Dd¯yrÚÜ9ÚÝknst|º†*[C£jäÄ«ƒÛ7¶â|{q`¼=³ßn“]EÈ ]Gÿ	h4A¾|>ÄÐÒduîbª•O@zqŸä>2sþ” ÔMaê§ª`& }ísn¸÷ Ô™¸‹)]ët.›DgLÁÓ/èB¢ÉŽKå‚m<hë‹X¬ˆÑ­Æb—
×-##šÖ÷Áw\÷l¶8N7¾ó…kšSXÆP?;	h±?ÁLš´²KqÛu{iÔCÝì`§'nÒÂv£RÕ7¸¶¦þ÷N¾Íóä„z}{Šû£±zÅaHèÜXÉÉ¤WX+Aþ^]åzsUÒÈŸ%LYGi¨¥YZlæíktÙ=OdcUÃÃnEÈ“Üd¶Þ»)Œ‹ÖízÙ9«Ä‚¦oŽÿˆ\¸À¢È£U­Õ?Csm4ª¶UŽ ³Uxsª³=ò9(ÑÒZ¤†Ÿ#TÇ{'{ÇßííŠ+„Ý°Äç$«MMÏ«ÆêØ"áy˜Ž·œ™z1M¿°|+jhåè©›ûÿ–?X+ü¾ðÉ×½+é:'a5@WãM•@óÊ©ÿCÅ¡:I!ºöÞ¤VH?AèOŒ0©Àñ³O@Xá„¡,_8Pð9â4Øl*µx™Í:ò’Ç}µèa­ ;H5šÄö´Æ­Þ/Þ†oÅ‹ÉÐn6Ñ®#s›ìD·UÉ«ø)å*:!1å¦Rç¥œ…¾"Üˆmp¾¾¸²¹ÖmŽ½œbOîíæ:Ø3±[RÈ¤xàÇÐÇ›óëš?ù’Y®mð<0¬ÙE"D>
×ÖÝ.šý¤•ýª‘õ·ÛrÂ8)&’°ˆ‚/JÆæÈžßÝ›#gwIÎ|lW¥ŠìfÜDD;‹FŠÝâ ÕÂÆE†gJ´™û¸®/Ä³­PŒs9kn[«kÞÛO§äÄ€6û HFÊ\HÉs™ìžœÊ˜¡ÙÉ„Ð`Ä%“·ëëŽqW"Í<ÚL¬Ö‡ÞA–ôõ œä‰YnYØ#Þ8Ÿ-DsF'3È×½@%jÒ¤™ƒ£WT½4»	æíÁé‰Ì™>eK
]qGEtnæiÊÁŠ’FôèEÛðXþ½ñN˜´ß!(LÖ±kAê;ÒoóÔÇÝ:‘m.˜Ê'Ä®/$‘ü•óÂä¶Gƒö%u9GkÊœhþ7µÈSE
Ï„HZ_¨½©ÎŒäd–’ƒ!Hèÿ*UüsÇ'ºÌê‚Ð#ZŒ¿”•åš`|É*þ à!W­®žM»k¸vúø®kÕ $S„QxýE‡Äp-ü€F€wŒ÷ï&ç˜×_„ÁØ×_´;¶¶¸™…(j‹”íá*,iûgQÍ¼ ðí&é}=8Ôƒ[xõ¡¦Ðme¢Iþý—û»Ío@Iá¯ã‘î“%œËØÂ´ añ n=å(œx¿ÜöËÝ7Í½ïöOOTô/6Å£0÷:'”„;Šˆ*åt8)¥¾úJ:AÕ÷¤a§«†)vc_Ò¯F‚E’ÁÒ3Ëzb‰FGæxˆKÊ×yÆÌÀÆnr§ÏÂnN'Åšçcxq:EÙ:B„l^ÑÚËÐ1à‰+‘|­TlÕ@qù
H9áö»´/ïÀþ­Ç:¹èç£/§G™éî£T2@ª$PÓdEu!>kè¬™9Ó¸Û/šC21a-oëöú0o5Á›B¥Ô·%ñ€bfsíÒâ3Í€ëÙ¯öNõÇÉ™ëÉßÖüZI~ÁTtÛDE|‰,rè^èC´ÄX¦èFj<Q¢ˆŸ†÷–øÙ³G%5ÀL³Õ­$Oh!:MžüòKòKŽ{ Æ²î`†0ÊÍÕIã>âMá«cøÓ4Õ—ÔešjN`Ë0%ÿ‘<IžÓ?’×5²*ðê€°BÍ›€½uÑÀšñ±’3íãÊkº¢
ÀPPa¾·6Ñù³¸3Gq¹mÄÄ ‰Â{ö UqMÏ·8«rÐ–kÄF/ç-Åú˜feC•bD	WAç»Uä·N?¶—Ö@Úð©)Ja);Mœ¶/×Ó
 0Á“`Ø“¹/Ê‚èMIw“5J»ƒXåï¬eÛ§oOš§ß¿ÙkòEîÛNsÿð»mh¾Üß;ØE éžÊGÝÊhJ,?FLó»ÑŽ1¢á˜†Ü^ ¡a‡ÑÂXØ`0¹Þ¥×åæXnQ’0¹&ö¬­»£[té™pÃÙM4ÊîƒP ~d)¼ò;|’Öˆø•kH_;j—UÖ³QšÈÏÒ|´$K‚D.0 Òö(Û‰®îÚ¸¹eoèõ:(âF2»uB?:[>è2Ìø3GAZäàÊßÖ+~j‹	ì¡m¹'dHÎàŒ?¿ ah_ŒýÝ{Ä©`ëç'à¨,W)ª6¿æ6ã=@œˆÜ `qÜŽ#`œ11/£Zfd\0ÒpÄˆaÄø„Å4‡}Ý³]Ò•æEë#?}„'2~W#FP¼SµÁÙ¯ì×É3tÙQŒnï¸”Ñ0P`À-ê™M„ð·ËuÂ4"4tÿü%¾òãÆÓƒŽá40Þ¼Œ·øuÂù:{\aÁl×ŠBñC\V!‡#&æ$bÎ$>‹–åŠT’´3d«ù¡øÆ±ØD)qnqTsJoK<9­$­îcÕ@´MòW=^eç±Bè,N+ºæÕ»ÇHo>2øp%tîE\æ —"©ÓÌ|vq
Šä	TU“¯×§ÈØ6œŽà$ÓÊ<èæâNè0„Iè¥ú<#¥'û2I[ð|Ú­)EZC–^2oç8¹¢Ÿp›,K­	LS°…u»\×géyë}Æ2ÎÖd/îLœšç¸˜$f‘ÉiA7m=µ‡hhQžx€zÙzŸ2Û>N`ZÎÿ¸‘ìwa„³Á#ÐÕ÷…aˆåà`ëºàÑD(&ßmÀ¬+]¨dg-šê=·y°c^Â¡;ŽƒÙHÞfìò­Ñ§CÐB~Ø6F½¥1vCLÕÐ¤OL4%æ’,bOÅu\9ÈÉ¬êkyU¶X^yÙâ›ë×žýôÜÀ÷ÐA÷!ÛyèSc=t4¥ØŒª—Q=áXý0w’­­b¼„X5Ïr~«¢S¥ÞKÊ‰‹­4mÂfŒè(”ª‘Ê 	Õ.-aR¥R.ã•ù:qdŒf†P-èy¾b~ÂQåÙáÌj9té2,w—yz!ÇoÔnÀ›+šk]­W\â®f?"ù\¡;º' ÍÂ@ÒuØl¬å¾ÍÅ€mP¤ Ñ‡ò%-j¿Ä
äÒ‘_/«–;aÉe²Ž1¾(.\ìDaä² ¾g5Wu]´wm¢þ¦ê°þMÝ	Õ&!Ø¥÷ú“ÝË«Â9—»ì Ê³R~_;Ë·FàÉ…ÜŠÛ¹NO¿wjv9þRNîFè«¬™Ô
Ë7‰AîÀ{î—xZ˜H5è@A)ºsŒÅI_@  ””®Þ@Î<!ä@ÔâeåÖ–WÀÕ§„ìD¶ê sHl(b’kôAç[®êžÅÁ`UrHîOÅao+ˆÜJpât•óÂ¥3¡9´‘óbì¹äDÕÙ‰`e=Ejí¬+bÄ…öùtð3E€no|ñ,ì1)+Wg-Jz2ƒ¿¼'†ˆ‹(7pð¢õ-È )AXú+úõKØA‘ @3ˆ$ÂÖ'nŒ3šö;lü_\–igã¨´îäýù0è[¸ü2U?­QWTQEq,Ñ…•ŒäÂ®ñ¤l-™B[yü¨‰PïnâA\Ü¾H9QU,jUkÌ2Vsø¯`iÊ÷s½@‚mF“÷Â”´’Š|u©2*ã-U&@‘—¦^šjc)®›wþ¥-â¹‡"MRÐ¶îo>ûøPÿ@’„O[t“À?â9PßÑT7ßÄ AYz¥Á¸äUëGg¤ÈûñÉ†0§W{&s0ß0^ƒ·„7Æ)¯X
=¹…¼‰É5ÄM@1¦êƒÐl~IXCã‹–H^=Uý“*²}>BnÊÄPÖ‘P×‰$÷i~œ>¼?]1‹ã‚-­Å}Éæçþv\!:»"¸:›ˆ=—™‡ËtzñÐmÒ–'Ø™2†Îíbš®OÃB÷ I’8©3$'J!§bõ6ˆt©°MÅK è‹†(¨2û¥%|\hÄ:!	›[˜wŽÀ¨’•UÅ8«u—”èŸì4w‘]‚mAæ%ZÊ®Â¸ÇÀÍ!Õ J}ºÓg¤a£û—¨üÕ›kdap!Ÿß¥:Iì8Lï6''L‹ÆsÙÂbU7Oí;¯w›'oövö_îïx€ë¬î4¾Û;>Ø~ófÿð•^!­P!FrôPÏÃ¤hó(!J~H—"!„QÀ/]FLÁ à‘~ô* ÷YJÝvÂ@y£é]MaÍ/£¬„˜#KdC—¢3L3âIo­þ#¤DÑÿä¨:¶^Š®]Kv7é \÷89kÞí7£yTq(AvPIè~X7ÚôÜá>’Û¤9
iûÔ¶©#x‚„†ò$•	@®#w>Èí’’•×,Ùà9¾X¯e+€(Ù!GQ’ÃÀãtºÞ0D`ù1¦áø¹.-–Y&8‚¸Ûq[¼;d+\BðQ¬ÝÇˆ±‡ˆ²ÇK9"¤øÂ"õãu×Ï:»Ái¯¥=¨ë!õ0¼¿>ý×.Z2ïÉ$½À±Kt'¿‘y³k#©JxŒSÅÀÇ~ïçq:h\fM‰Îmë±N1;a#€Èñ¡…,Gn.1ÅræCLžÒ¥`—ð_F¶JlùÂ,reŠÓ¸PäÅ1æóÄ¾C9ßŽ`ÁäÁ–°÷(ƒ`=½†ÌPïDS;³²ú3ÒädÝ)-5Ét„ÍÇ‘;ìÚ£qJNÂh$­-1Ië}Ã>È|/ôLƒhˆœRÌ!Å€y
Dº:ÎX£!Þ“dS¶vk:AŽ;€SÀ<:Š­„»í#H²8¿Ý ¦ƒ¾ùÀ“ 8ÒÍµlaMJ.`6êá Æ„"HM¥f lzvÔFkÚ»zJcÀÈ€`.è=#fð°‚ä1îí"ÿe€ûG®ê	›‚Ý
%þÏ4²“mDÕ¿g„¿
ôãaò7š»ªØáÀgQ%hè‚¹¾	ö›GÅÖh0È;'¥FM–âÇºbKò=rê	üwz@ve¤ 6#	01~¥D`§+P*–wk‡ –;|"†£sÎž”lk	‹\tGï\|÷VªX;°%Ö¯!¬”“’±Û8¼v¦Y!¡€lÁ {ü$BÓ à
sÛ&ÙjÇr?EÔ>Ÿ¾g+ Z¸>Lgã…Õî”To×¡žT|fCð8ë/ÿ"Ì¯fGóc±í?€E¤ðYR}ûuòdó¯OEæuÇ÷fò²ŽåU°p…îQÒ^Ï¶]½Ü?Øk,v?Ä—`¸ú`fž`ö–µÓp°¾ÖòG3ñµÕâïB-Œ«‘WMKæ®E|=µ(ÙŒ¥æòÈz³×ìÑ~j*PÈ¾P7\©`…˜/úºwulÀ°Ur0S÷ïÆGÍãÝ£Ãƒï© ð[ñ¯¾ú:y„WäXZ¯>=ãË¨E‡4‡-‡í)D„YUnkÝÿEn  áÜÎ×4‚P†q›éÈ`éÌÎ8ü’€d×ÅIa=ÝÙ4dZÜ+ðñ[¨”žáX…í¶ÈNä£´#@åˆÇ¦¨;Å¿ïŒ?,“Du‚ÝRÎ#õàG}æÜãrD„¡lWHõ›C´Ø¹”+ü+ÝÌ¦Äû×_%ß¾}µ×|½ÈÒè*-ÀÚl
­“Œ‹6qÀ—T‹Ã´€B+>«°®ÇÚ´Šºtë0é½Þ{ÍY×¬'Ió¾­¯¶ F»`£úÏ´	#>ÝJ¸^±ØIIgÓÉs„äàÿ²„
÷BRÊéÁFSÄeû²¶UüB&Ÿòã÷‹F/Â¼ÃâÈháLH`3R”ëñ@VV»ñõÅ$šƒ¶O¶¬êbÄ(.‘ÂÄm•XuCw“z þh¢™›8«ˆ¶/³„ U]ÄëÎ´3…Oí£ôTT ìùeÑˆdé‰U²'Ü¹H» 'ñ†5]rWòc“'Å íM#XÉ‘“Uí(&ŠC›ÌÔ 1”r’qª§w3jp‰ÂèBÝ6?þ¥«!bmÈ¡Þ°ðòïÍÃ½½Ýœç=üŽQå{§ÏMg^„H ÿ¡&Š¡hR]óäí7'ßŸëBFÍ.3h<õ]o¾;ž‚<ë9Yì9Õ6§‘,Â;€ÉÏÅè ,ßžæ´¸Íä;(Œ]L(²JNE¼V±\ÇBfä}Œ^ªÍúÃ	Ý¶""Cì§O6¯5h*Nw‡¸Dû{ß€½™ü ÙvR·óCžŸ‚	:Ý€;TÄå´}>D Ã‹ä!Öåa»äU‰PòÏ?*2ð/o¸öu)ý”H´¿NQmL€ƒ^ÍÒZI²ç¤AÙéÃý<¸~.òžz›ƒ›Ê
c<–rcUßFõg–>©cYÒÓ>§Uz"š$ò@×ñ!Ò@¨ @Ycª_XÅ•þì”8æ¤cÙz‘Ü¡”³R“ž–Åi”Å9WÌ}WŒÂ?r¬x˜-)³˜|ÕÙ«°ðlÀ=Ì–sOM© â¥Göâ¥?-íVRcœã‡Ö'U(ÏÁhëþîe¾bëüëKß•liô^°êEòeø%Ök1ËùÁ.‰öÈ‘ˆ Là‚©`A–çÝ™äÞ@0zR~õïWJ+ÇÃr ž{`9]sWtXÚqß²l×íÙï ãVºMçô„¶¥	[þPa@ÇG ¹|à í5ËË¡/n1RGöb…ûA§’w>(Y\Ê•¦ÁP¢Mý°²’ÞáÃ†ÙÜÿoïÝŸâ:’uÑŸ™¿b™6F`!ÉmÏØ;0B61z@žãíqtðh¤AÃ¦A­9÷o¿ß÷efU­GC7ÍøÞq„E¯µê‘•U••¯Êgéæ#60€ø	«Î ÐÒÍœ Ò!™5Ú“I"ip­`º´]wP³õ2|;§ÔLØúËØ€3¡Pc˜\Ìø~ONí[–+B„Š§Ö‰x<¢|ã[Ú<ÛÃªW,™´ª´ÏÍŸinxÐÞ²ß˜A1Co u¬›öH.áºÚà(]…5¦¾ÎG2üä}wŒ§Ñbï€}Y‰PÒòJ–TjÂ–EË[¸Ë5¤ü5§ñ¬5±]r¹àù¶˜§A¾,ãÖpÅùêƒTgZ9ñÄ$´Ç÷Ì§‡dQ}Ÿ6RzzÕ—Òƒ£E<SïéËG‹ÕÏº®	F¼öè¥ˆÅh45Â³°+‚«(è×M+%¶é¨Cak<2Œ¡ï@á\íŸK…
á…‘\Ø^ÎA&ãÓ´Â)™ÂúhÿäDÀ4D¯ß|¨¾×`×»þ ¹6zëS;]jð;ä¬«ÊJ¤Iú0!ioXŠÞç0¯Ní!Ì¸b•sÏXˆ ÈØÇ‚_¤§Õêæ[=ÜÉÃÖYqkÞü-VÛû!¤9šÀÖDz®w®Ÿ8Ø–¿`<¿äÅÅÔ8òøjn¦“ á<}K™³J/eaG.°åÉg3‚¸…r§Ù.²y5Û¼Ä²H5	eR8~aX$!—»8‰á5ÿíg\1Yæú=,Fì»|µ`4Ö„r‡p\<c³O²¿cÆ¨ôf§»<ùæQk÷/¿Í3Š.Øà]Sö,¶p·$Í³Ï]¾ã”Ú;ë™&dQWV·ÈÛè
5È6ü›@ ñ?èÁ¦îHtxhDŽ“7‚Tyž6ï¥èû oPG®ò×·xÈ¯±u´(—’­ÕgÛÿ…èu«Ïa¦¿þ6à¨»ºñäåæ:‡5¡pcÈ¡üWˆ(
RgJýéÒÎàþ³¹ÝÿáÉóµ¿ö×7W·.ï1¹|Bô–ùÛæÆöå½í~89;þä®mþòbûy}„6ÃI'·,§¾TÑÉìØ·5B§¼Þ¼­[ÍõÑ$Ñ(=nkó½=ŸåÄÝë)´–NktŒk2Rà¯¥œ|†ÐìöŠVô\‰Ií´êOvORÕçÉ§ê‰üNè5GŒÝÁÙ»ö	Ôv0Ò“æ”º±ãwüÐÑ_öóÑY«ÎÒ_¥«T0Vç#RødŠNCçNkÕ¶IJõ·OÆÊcÿaÛ­Ó-Å·(ï®ÀOà.^oÉYÂ2ÊiGÝ®î¥×iÙ#kzi«î=Ü~Í¡¿=’ ƒŽ:AŽA‘§ÓØ°ž£Eêè8I ½jz[ bdíÎŽjf ×òIš>›‹ô‘hæƒÕ­/‹˜x°ÇN<_¬üËBù&m$Îäâ‘#èâ¸Jëa½ók
Ñ}½„Àwî ŠvETºX…h†èÑñ’¯qìÓœo3Ãy¬&%ïŒ¤÷³:êê¿lÖk«ßšØT×4’6F¯¼?Ùk«l¿ë•­cÎGô[-œ‡	¯½_(â}g¤~·¶7ºd0'm¨!Ô*Ûïz¿æ(`8 “éÞ^;Ðy)§žo\Kª5oÚòúˆA»sŠáÛ@d3Œñ}e?@Me‚âÒ‰tèE!ø„*·_hŒ.8Ši3Ëª¥FÁÖ1:EétNQ¶<¿P<éN
]K‹¯ÝpëúVÀUiÅ]1•Ù˜CoövmŒ½äWl¾È±H·‚õ
«¼ë\ƒ×‚×ØšrDŸé2AÒÒ@³Ûº­ü¦ö›â¸r›µ4uàm§’w{0	âç{±ºµE£.}ôà’ç?ØV05àl g­V ÏûwßÑœÀ¥íÍIPe<RˆMçÎÌ ‡åñ\Š·¡ûÃ¬Jsí5’q›$f|¥qJðµN¬÷|¢è=•#rv´’—˜µ•ÕÑ“>€—€žµòMƒ¦R½m]¯^Ó> ´Ö:Žª—‰”³Ä©ú$¥“¸êä¡¬ƒ¿ÏR!‰A=€íËðnìîØ2®á2:
^ì,ˆ/ªçPD ´à(Ü·k½”QÔ Š!¯øáñÒ,˜ÏŽDk\ŒJWV>a
ëÖ"m„BDþƒÜ×ßˆ #B6Üoº-âî.]m®ÿØ_[}ñçpŽ…Ó–¤.½úÃÖýÙöQ¹Ô\}h-õ‹s&â’¬,>À-ÖÖ­<ç¸Ö«zÙá\‹ÿ+ý²¢ÓÚ…Ä•ëµ7Õ:5mšéí=ÚŠfÕÏÎ»ÿ®·­  šFïœ!"ææ4L½G 2BÆ‰ç1lÅ[Óˆ—|1~ˆÉg[®ùïX!Ã–’ºMÖØ†:÷ÜßExÚÓÁ«ža<eÝêñâØƒû¸8vk±gö>+TojjÚü{Bné™6ÏY#º}6u#÷ÕˆJÝÚ=Û„~B¸‡ðN9ÛxNá €¹;$é'4ni¿p{ã°€.†I(X \¤—à`è¯Æþõ¯ß¬Üý€y×ƒ£]ð6xæþgþgE5[>P°XB3€!ÅÂyq»é¨òí3rs·‰T¢|À­’ù/Ç¸O—ºs(cñ31eà¹ˆ¡–=€°8<íí™YIŸéËdýï±Ób:8²bÒ}‘^g å£IKñåHîp†A(ñýÐÖ[ä¨%‡17žrÀŒ³Sõ¨9ê–ÆŒùµüRÅ¥W*'ß“ÿ)Ÿ¹š»w&ß{'ñl‘V'Æë|´þÃËÅ&7v§ö!fw´,$ƒð²SìiÔìÝv7Vój-|WÞ´`'ÑrÇ£Ss®<L$—Orý°¹]½Ø|¾7®ÕG·«§«/ú[?­n"b:–)È,Cœ
ÖÎw*Cõb‹üLŒ	Ä
¨ ® V8, 	¤Æ>è`ypC:­Þ@K‚Ð[fðf{¼ñcã9â¥nn@Ù÷hñ¬žþg0g\Yi(±•‰'w×Ûçxˆx¹–ŠÆÖLFnNÅ0+¼P»6º,¬`
§®(çË/	ž0$ÎÍç8p°ª_æ§#0®©Ìc¬¥2©ÿKÆ{ð® aqîìk/[m¾’ÀÖ\.g8^æív\ßKÀX„ëÀàAÐÓCðRõ‚å±ÝxjlQ¥ Þx62Ž¿9#ØìÒ‰z¡Ê1mLLT1uN}üx}±n¦ÖëHéÚC·*.
èö¡ãÊƒIw`
úœÏßþ—	à@eC:VD’¸ë0eœàz¦Ö9¬" ÒàìhjøÙy‘3ƒZ£)ØDJ  ÕaS…û:+p¡‘Xª6–e.¯té%IÛpE²ãF¸`aÐ(mü êBËH¾ÊÞ¿{Ïx¨>ÀÎ’ª_d~·}'†<ä Ç1ZBcÒÍxq+hùpƒzûY¨e°ÆN·À‘ÏS²Q¥ºz,œ.W/L ûÂÍ‘_éT<©f–á4²>D ïî¼ðóþ>¼]­­áïÊ}üØÚæ«$úx¶µµ‰Ÿw[WÌœ#ñ_~%‘®CPÌƒàÈSÒì(ÞA·E‹»¸],ÏšÔy1!ÅÔúM~.kiÈg¥ŸIt[RøãFHNPÔPx_¬˜v5«ZK
Þ’f—«(|¹ØB¡ðwíFú‚JÂ¥I>¾vâÊ$ºÓå©Â$’*×E¹q[Rú2¬ocÝyÁ<Qi„¯t¹Œ^R@ »Õó€¤0ê×§k¥q¹¨N¢KBø÷K^Íc¬-ÙÏ¨¶°\Ä_Í·Q2‘¶[4¡úPÜÓ:ˆŠ	s†«ïÒí¢]B›¢lMKÓ Éß&ì"b}aæ%’ 7H˜ÿÆPÓò±Ï%”¹I3ýä-…:&›uB¯2Ï*öàT7jP±Û÷¬[n¬ì–)1•(¸Í:‘ä“:âÜµÙSl
ð‹Â½^lœ‰¬£“Áù3ê)°H<‹\¶T5‰µ¼i³TÌäM’9Ó«@ÿíKà‚¾¬ÄuQÔrÇ}&ŠJJ«AhM«]¾L…_Ž$«D/§³¨÷‰t6¼n-Ý¹qÎ5Z(=ÿ‚>A3bkËŠ8phÌHä±9d5QKÿÂlÒó’äÍÁ’KèÈgè™¡‹JN_6Â.’•™…–«5F¡;†¢t(æô ¹jV§S£ÞóúªÂ‹Œç±tŒ.Á89pq¦ã¯d½(:S‚#îŸ±'x7ˆ£Qi‡ ½Óøä‡ÕÇ$ÎþHž  ý	2^‘g~ýaŒÛ]‡•¹œØ[-‡»;¼v<F]/Â¦-tÅäðpÆa%X#ïâFüÓhJíôS9Ò%WPg]ÎuzXsphÀ½¼³¯q3×ÞZ2œcÕÑàJ—³æáuÂhÍŠ‰ÚÑ&ñ×ÛŒqµbîÚŸ{ÍFŽb,%©ô•ÁFÚwñ@å]¯Ö"ØkÎC¡“r(»¹qp5N§ÖiWPÀ5<˜ÏùÉ&°¨¯xô¼^þ>¿Q½ÁmPD¾B¤‹…#ÜË„‹üßç%C7úfxBPxÓÐÐë÷Ü‹¾ô¼Ê Í;)Ïuän€·çhÜ~MÉ;òt—5
N@®D'§û}IÑ~C	XËO¼²¿ w‡ë‡mà#èZéN™‰·N¾ÑŠy±Ÿô€™~Ÿ q/ƒå—~©„d5Í?èIÈõbîÏí²ÜÅJÚoˆã	À|ŽòñòàÿÓ™C iŸ“%"`¥,Êöõd¨o*	PóÃQQHÀòS„°r9Ô_í¦ÓpHi ±6{¥Ì¥’é
ózÀÑoxŠÄ„–¢£ñN>ê=ÎÂµÈ?˜OåO©²¹4;Q²iŽ4Ë^ïùÔ¨	4Ëœ¢„„Kÿ¡X£âÉ°¬WÄ9õª“a«ÞaY±ˆB2,êbj€VG £Ðê(j
LM{îrá4êéC‚UO©K«ªå‘«VX Œ˜ë&UU±TuëåãÇÿ§7o>¿"BðqÛ^wkÐîfhÛ<1]SÿVJÆPÿà_V ·(í;¸ô]æ,õtÒBh“®\ÊPZ£úƒ÷{È;?|;è}b£VR[äîlESÕG4æíú^nEüÚ–èK? ;]:åË1ocp…§%ä?hÿáæàhÞþÊL‚£ýßüzZ£UÔ†1àYb(àsäQÏÐì|ü!Ýø0…h‡jv¶ö<O·úu‰,ÌÞà7b’ç'Îl0B;g©ýÂšÉtæ1+þvÖ=8<š¶œ™óDH'BT@îA]Îd+ä;^_|ç·5; žßˆ,ÆeùYƒ}÷×óÅÇÐÀóØ€7ÕŽ½Û¸4 {ñÊŽG@ôaÁ2…óÅaz“€ƒEšVƒÆ x¿ªzÿƒŽô°Þã¾©=w›pm.c &õÅQŸó/67à°2ctèHaÑ<~^Bõ»c_SiU%gÅè+¸ãîu‡ŽÜýÏÒ0H¨ßìÿ`–lí”¯xh—›L¸hLbrYèùK,Þ•?m€¨7ãé±þòÁh(†Šš:WÔ}}CCÀ¾ÇÏVŸ±âÈDaÁ®|+.:8ãjyyÖ>8ùPñ`‹Œå>BÎa¹põ±§¬µ"—¢ä‰½‚¦‹C\NÉ–‚G¼DÚH½ÑÚ?-D!£mmz,	RÉqŽIÉ•’ÞéàÈäÉR¨.ÔX_4‹wM˜Ê¬a.iÕãêpš–Õxmß0êñx8Ù/ŸÎö|’Äœ6áà¬N±ÝÕé2ÌÇ†.ò®rÊO+9ÕÂÒHŒÒþ[ðª¹X}Z,¾‰k²'Â7°uÛ#BmN[“VÛoð¡Ðnk6ƒw¤#.æÍÉK9‹˜ÔÛ~Ú	SL£®Ðóä» Að<ë‚”†;T×íi:
t/³IR@²9ŠT!ðlèG˜ÂÞh¼¬×@„|ýKA•ÍŽ’B/3ÕªŽØÒŸ«?þqèè2Ò²‚äRr"¢ü:ümyŸ—Fƒt{PaÙEJxiÁb@ìõÑ¥$¼J~^#T úÌewxôSŸ£ôüËð4åäØd,¬ZÓ˜øM~ªJ….€à~
gƒÜþËg‚cIGBs“{‡/ì˜T—¸»‘û o…k7:o?Ø	‡'ˆÜ‡ò¼·6G×\NÌ,&3Ä)˜ 2m%JÓtî‚ïè¬ªSÏ§‚r"	Z[Çéé^)?ÔŠ?‘Lð¢ßgP	¸(w‡ˆúAa_£VŸ"òI¡­`¼Ñ?.ã~Pf î[hj¬±M¢oæûêâÓ}DÝÆ2Á1ë¬Ë•ñyöÞ€¢Ëz2,;‚@3ó ¨¼¹<ˆ
JÕ;×1ú°U/ïè¨6M˜¦M“Žc¬¢½Á„9úFÜâ$çcçKˆ>‰Cµú>K	¼f‚¹mS1ŠÏ±AÊ—¤Hµã·)ç{« o©Ôxq79çÍÅ?[¿N‡XöoÍ·¢p@l-µ¿­n>C ðo«ÇÆ1>Ö¤é-”m»`§]yöG'À‡ßä~@ÍÆÓ“0Ï
Þ\”à¢@Ñàuíö®Ï[Zã3<7÷ÌPŽ†èú-]‰f.—Yx^ªlï6c:ÄÇ‡ƒÁ	2hž[ÃäUE*³0£Ðre ÄE:±ku­ìîùf[s¬3åœÚ˜L#=†ý³-äÄùau«ÿÓÆ?­o*‰*|$¿¯îsq¨"ë¥Ã¦YíÉó¿y-•gêÝ(í›0€þÂ^Dî[¼±Ô· hQ?U*ëªX5T5¬ol1ËË[Rš°ÒÆ¬”B9ÑhÌO¤¥^G<*kÍ™áÿR~¦å`‘bÂœXŸ°DÀëL[ÒÞúöËlI/±WµÄHËµŸk!‚àCÙ´±¹¾¶b¯h=ØÄtâ-’äkðð§ZaKánŸŽq
ómö‹!Øx¾¶ý„q×VŸ-Ü}ú’²³„ÝWÐŒ|ºáÅñ5:&…Ä­“ïÄã5˜!ÊáÒÔ‚CZ)®X ä»ÄÌ1#ƒš†`·y^¼xf†Ûå]3O(y+.°M£Žk «œrÝ)„€·¤/äk¢âY
]ï~®»‡o€@Ò 3„ ‡˜„ ÑÊ°[ãÁè±´;Øã¥ U
2®¢¼7ˆT{hspˆ|	:á`9q‰ª!‘¥Æ 4Ëä>ãíiýáÉ_qó1%éù–p:õÜ’ë)Š|Y°‰å4iÕçT.ŸñK ÞÜ|ûúS
Ì(’+<mÎ,Àà=d¯º×ä´»[ ˆbê‹Æžã M1‚“ŠQ2¯¼ØvDÎ…™}GþnCÂû¸‚kõöó—Oú«/qå´}½®)ìÝYüCÕþVîùí§ë¸øôEÿÑêöjªª‡@Áe’ Ú÷ôp7hþÄGn/S§XfFÊ¶]åál–OWYÆÁŠ“VUµT—…ä]¤¶´úEi2U‘à’Úq©-­ÚFJ…ˆ ü=ë%0#6,uCŠ\ij[ŽƒÑZÑ…Ã´ò§Î Ñ Ž÷†KP˜yÁÓaÔØ\R1B4ˆÌé\èAÆ,ª&-T9êG])(qòÔss]9)Éšñ%†I.—mä¨Îñõ@@÷‰zD4FÎ”×ÃœøÎEh=Eb²Pk‚˜É 2XÒ3lzªHÎxË*œ“â$èÈRyAf¸QÉÓ0?+91CQ	ìHËÝ‰´/ÃÑâ<6%`MQOMÑŠf&»'E“ÓÌ
x·„Y/í´_Ï²â‚¥ÃüÎkà%˜3•¤ÊòKR=è	ÖP>AŽQ@MW6âÑ]õëÛ/ª°ìîßlm?Úx†DãO {FûèCå9†¶Ìº1_ÖäoåvU!Ã¿>œËIìül¬œæAã22È‡ Ÿd)%ðpãh^Qà,Íø©9&£iœô* I/kxÊ‚ÃÇ0ŒÞˆå³iö4Ë¥'~NÊ÷™‡Ý²³iøa¤k;žÙ©¢B©ªY\5‹Q±™"ón²î©XªjPÇE‚ÌIù1óT´²cœ˜"Eh¶ÛÆŒ¡^Ïª|,“Á/Âhpvø’Høf×ä|—5s_|È5Y,Õl›'q0!ÒÎ¡>ùº»bÝ(F~[™ê®l+4
é¸ !å±cbA@ÂáSqU¿wýyópbœRë•ã¬)-HÀ«…À4+vV',´…?+€-rhym®â¤M¤PÉ‹”ª£Ï›ƒ“0hÐ±Þ¹:Œç„1Ž“´ôÕÙë»‚8ÞÑ³‚#Ðæ¦8Žÿ´Ý…c1ˆÛ7û?=ßÚîƒÇ\ÛÞ|R–RZáÔ1Ï‰@Iz©eÈ·ÈÎ=|ßÇ]¾CØ‡{_1obó$AI5m·%wI›àTÀNÑg†hgÍNv>0gbúmñ)&:„O²ù€‰Œ¹ ‚{B1>,|7ÂŒJ¥…¥·Î¹àÁL5tG'	8  .goÁoÂD8F¯LF¦ÌØPFá®Ç*Èšà1‚V1}Ê‚÷—”,Ór_y8µê.¤â…ú|ÈÐ@Oµ×Ç`l-—–&>e{È©G–bè]ÛbÈæDÎP–o<ê'9!ŒyÍ„öÁŽÍ0‘¸wòÁ¨eaKÊ6ë$ÁCRc)øð1€Î–)ÈpÒ\c"BÉ)2]^ÆÚe}–CðƒÈŒÙ¡¼hxZ°%Ü‡]íë a)Õƒ5 ¯X^)<9Þ‰,óZÉR(6°~¢4…Tx»êûµ¨U×\r6vnJDˆ—”)mºVhe×„[	^Z
U;!e¢«P­ŠŽAóÚ}Ç m Ö ¸cœà–g!1Ž¯Å¥ú GÏ+OÃ5 ä5”]8MdMI×ï’Aãkñ#j*Ø6¾åo½$9e3m×7Vý†ßŒSbåÇ£Šò%9ÃÀY¨6ñÆˆëúãÕ—O¶qEšJ7î¶ç/·U0ë=¿²Ÿx~²T}–ØžÕíÛ±™fÞ´™íé÷}É-•o×„f „@ø-<¼oÕ¾ù†ž(ïá‰‚JIÈJÁ#XÆoé>×Xÿy–aˆ¸»Èú{bÇ+è¨»/–"Ôb³MœWÑƒÃÿ¬`Kø¶ÂÕÀº3-–¢†@8Q#¯&öŽ»‚HªÃš¬+¢}$¨Ð¾ã2üVãÙöúæÏ«Oü|3ôÓôen„çUom4ÒûÀZòjÓö¸¹úìÇuò¥Úš=)Š2'á6Òk¥ÏEô_º¬Ìð‘ôR1EŸ__Et£ø{Zü$u.7Ä	E-P
$h¥JXj*t×…Öà*ksè·Kq”Õ=JÀµå$·(Í?ofV¨O¯	#SŸÎÉ×¤örô²KXÊüäî)óoG’Kù	Ñ–Lïôã=Ü¸'R©q1=J¥{¹Ú¢ù˜¥7{šãdœ&ûAç¤Ü†ó	ÐìX+°Ñ AFD¡1S;´cAÕµÍ¢íÉÁpp9m’*jœPeœÞ^q‰H„Ò
:¶Ô~‚ÓàÈeáðv±­úá¹ôäÔŽÆàQÙQ¢ñL~ý©”±6Ü@Ñ‹µ¥û‹¬àj Lp‡Šc’úÄŽiVÂÚB;µì|MSÃ,’º.ƒ¾ês£ñ¸tß;áÖÁ—•sã“q<Ñïœ.äWQy “<Š\YÁþò†A(„¥hì0;KŽàŸE¡áY m)[ç<øek2gI¶6¥VÖ|.Ãükò©Q“H(k¦ðükò)ÕÜúisA)°²fÖàCQO©¦û«×Ü¸«Â_½tã®Î²÷MjHÂ¹“çÜâ.—–ðë?]T‚°ó?ƒSº”ŠØ·â‚{„ÕƒK×ˆºŽJ´õUPw­î’ó€ú¥nz_yb%?öÿPü§_Óñì[8Ð©vƒËº®	Å81§aŽdH4®Ñ6_Ž‘•ê]$’ðó‚™•oµ!4eqZûF›Koá½SÎI±‚–.Ó€‚YÐòeê°å÷eGÆÌ²ak€”ŠrY8ésþL°P¾¾pG«ÌªÂuS;ÀÖÉ}ti°!Œ	jáŸ!‡Ÿ~ÐIˆ6ì|ä$–~Ah€pÞºRP¦Ñ@W$˜\IÀfª¯¿†ÍG	Ú¸(SRöì¶v€_FhÈz”hØq¤F1‚ÆUS›ÌÞy^A²ƒŠmÈ‡f	$—&úÍ3ŽLHeÎË‰ë«”i‰’cŒÖÅ2Í(ö](ÆÅÅU#âùZ&©½ÃÃ‰où 
’o3á9	~úç–‡¨ ¥Î4U#=gcv´ÙªÔ‹à_½ý3óXá[vÉéá<©*´;°ÇãíÔ’\ö`‰Utt5Ò<ŒM‰ô)«¯tÝš÷¨,vëR‘nfot‡šY9r{Õš]ÞCN‘=æÆqz[òãŽ5Åxr>Y9í1}ÅØÁÈÓ@nü=~áÛeáàUz{ÉYƒ¾ó¾9¯‚Íî0>‹Ÿ•hšìwÐ¾ÈÛ•èÄÓânÀ!ã!•9½bYÎb§µØ[óŒUQD €³·ªû_#/:Í¨-ó¢4?ìí£@|MæÜÌ¡ÖÏrƒc
"ÀBÃ|hnä¤çìöÄàÆgá›Õ_Í*ˆ7çö‰Rs=Oàž÷É«¤û8¨iuÖZÀÇî˜9öútù‡£Ó,YãÝgâÃ-|DAb\Dxv»þ(ðóWÁŸ?/	ÚGº4”%®n‚ä³¾¤‚+ð÷Õ¤»šÈ¤7Î`ƒ™p[“¸(wÅËÀR0Ï<KÁ¼%îÙx}l›%¢+xï…GÁìkIDe(sôÜ¨m{i	Xý…í¨­%TÔÖsªm<?ûæÒJ}oEmMYQ[Ï}¤v&¨©•<.ÉÔÊóÔ
_—­ð9Õ64ýQ£\Dm})jë9Õþ´˜tZjÔªÑ ÖØ’mGhº®™WŸÁÄçŽVd™Z«¢Â9/ßÝ‰U™ÔûM‰D>Ÿ‚Mí90¾ùanü¼Þ´ýË‹õþÆ£õgÛÁ–Bï«®¦Žu;+oþT·ÿèù8ÙâÕÆ&Û(ãž-BµÒÁäÅ<Áœ™yÝÂXÑ’ÎÜ^á$]œW-½/V–Y^K‰”0_W)"ó·Ù“¸kæ;|¸à`#Ý}¬>Tb]9.œé]Ï0·A¦5"nÎLž8Ê­¯>ÝºÊÜxUŸšÍõ'ëð³‹ÛX×<uu¬‰í®Ûç/7×Ö5Å<ØžœM²Åæ]ŠÇ-†;¸ºph, ™®Y ÎÓjkàa×º¦ÌÓ”%çÉqæYW†ÇJI’\)¨‚…áŠåJ™ÕÒ+é½¡9ð.ieD¬sºmp,"OUÝÉÚ,V#[Í‚Û2ž¬)ÿ_j‹ŒñçÒ°Drðüß
Nk…l‰¡±%ÑŒ;t·Æs0³	2BQwê6ŠïH£)…&êr1ÔÂØSè8ÐåW,9³ù±dfLRäÙOÎI«˜öš¤>½æƒ½æI¯ù ×2-ñ5é­ôýûcúÆÂŸ ‚N4&ÖÑ7‹95§<Ëýhóˆiäòj[s›:|`*Tn»ÒÃ+OÐ™ ãÌ»lOœ*ûe*þ®@’ˆ7ór†P³¥i)&N?k3ì’<í Ê}Ï`¶’Y£.µ‚¥tšsû0»½k›ÌÔö•me7g“ÀØ‡J4¢0x¨0<2«[·ð u…Œq“âÖÞüå”Y\isR€Âê%{")ðh÷ºàç¢ØS0=ÃsÆDîyËEƒ{òˆ ŸCLéŽ˜Ÿ™¼é\
‘6ùÆ&­¤ÿƒá+H&p–Kƒ+o˜ö¼Ó³¾®FøKH›vÁB¹Þðr&ñÐm/¹Ulu{W4êï®SRË£kú–FÔ²/‚±_ÈÖ+8õ‰371Eðã¦,àI0XØ1¥Z(žR7ÅÛ§}œ‡í“­ƒlÌµED(—óðxF½ë¼1<â+¦Z'Óèp7>s¨Oùjßô¤ÎkhË4((C÷1…ÚB¼*ÃXT•›W”vÑ²ºšôSœœ´õÏh¼'Š„x|ºójÀWJìŠ¤E§ƒƒôˆÜŠg¸gB%nµãÆüGœ¿ æ~d‚Ú„¶å`BuÜg*e:ÞŠ?@‘I˜-£ˆ¤}%ý!áÏè-é=Í1!2x¸òLˆ!uDaIVw((qÏú€JPz÷îVKÛ¢2ÀÎ¥ñ°Åºd¸Íp„ÌvÆv5ùðÎ´MÞ­7ygR‹Àæå@^$wmøý3æèŽ$pg’N×6ØÀ;TŽ¦Í¹¡#í;œ­¸®“ÚOä¡ÍÜ¶!iñò[ŸÎ`ibJpþžÂïER:]†\CDý?ÌF.a/R#…ÝQ‹¿,ÊBí$ãâ—bü@— 3)ÿ¥‘ZE/d*¿Y¹â®e@ºN9ÑÞðh}uQŠnc*ø<¯}:z¹­jInÉá¢³ß`„æ±Ê¡;×ƒvýï6¯Í3 R´BOa\/ô½¼½lÞ?9"«Òh>Eà‡Ø
¢%¦1†yj\9!Q_ˆÀ`ð$¢•Ã P7Àp™Âž(ÔÖG¾’¹Ãá¬`ºg¦ÀÏAÁÑ"{ÖŽW,OÊ([×n*‹¨‚šˆ‚úw°x¸íG’Ú?Ú¿i½õb1æK»°”	´a_fàCXœ¿<wÛ\bzIT@8)Uþ5„Ô?Á%loPb¥V‘VÀƒcµf=:j2%jZoó‹bv¾4Ü}_…Ý¥çdã>fÆo:¾WNà}ù”)	‰}íf€ÕÔ&XM\TjÊ”öœÐBã¯Ò9õ/¿š†]ø_5Úð€ëÒØÞX¾4U[ÖXíU£1­™%î¤%ÛI²»VsE!5JóUjÐL"¶Ìêc,â[jÖÆhR+!µ`u.aŸ•A+-Jh
. 7#Ï.¬h6²ÄÍ-å˜™åzwÊWÝmE3êz!%0öŠåÈüUnÆcbúþ)F·ŒOÅÞŠ¦ŠW©)¿ÁfôH#ÔI ØÖB8+êÙŽäá›ˆš½JÞ¤œFu‹M2]‡ß»*¦¥ð,ô„¦ï%7ÌÄ?<Š·{†Er!ÇÄöëK»¨(ÉiÌžl‚^G…ö2î®ôøåjQK»±» û¢dÕÝÕ¶¶£–¬D™ªý¾ÄY›MIz³E´ã|°rrZk	¸o…ù2ps©ìWê*}-ÕÔr¦´Ìç.ûº˜‰)ì¨•XŒ0 ÇÙßËxfÜH‚;Eâ?Sc‚`h%®mmôñ.BÆ´RsH,d=ª ›**^b¬¥~4ÞÚZ]àÛÁ¯©Àop´R÷ø§¿ÎsºÉðtuë¯²qãLä‰AMQRFŽ?ô'´ÀÍÊQÔäZîÌb#rœí( 1ÀÑéBÉþÿëMœü€	ò_Ò¦`èd=©~4ËCà3°ŒãÉQmqžø`õ/b`Õ*¦µðG˜J>âM4ß(g„Í_³Ž‡bÑxFÝÎ’É¡—nìOö~3¥ŽË~×§ÍÙÝ°fýD1ªÍŸ"?ù«ÁHbKt…ðO™ïõ1_¤û&»¡TÇÛhÂ¬öÒº#ÜQSíÎ»#%q‘oq¥¨fW>ppÂ/£N0íœ:¡x`d"h§$1Ê•×FLooBH¿£½¸-aMI®ð€ÝAØZ¦x99Ã½ÁC.g#F¾„YN%yÙ– ˜ÝpÇB8¶äqŒ"²\áÊP2Þr8ž0~âlt~´8ðäåqeŒ÷ëJhjKà ›õ@9.j\‚EµÍÛÀ“›&µ@úˆ>Ñ~iÃ^¸œ£Ç}RàaMwÏ±$âvs„Ãýwõ¢ ëÕ)ìu±¹´™ÚUå™{é¬º‰[´Íš4§®¨[8`sVB7óèoÏ7Uø–ãrõw¦‡ˆñ‚†8o¦÷ø@4sÉã–ö9 ÍÐnþ@;´ò€y¦áš5‚¨5ÚÅÿÌÐ eÔ{gïó¿ÞýæÁo åãÛ^ý+Ôäãö(©[o~)Ï)P»«Wá—Z@›µÙE³Ð_y	ÌòÅö,siL°£m÷r´µœŸ'¥ÍØÑe`ýÄt§×Ãýp°Äm%M	>Í å}F‚§Ž_Z2xx8EÈ"®xÞ±|ôHUcvÀÅ¯ÙßÀÕ_@¾"“u=Ã$CÉÁµ¼ŸlláÖ¸Äõå²(˜F.	®¶£“¼eMBæáW¤FpJj¢­•hTÃ<¢STÊê"2FÓddú”j›Ôˆg^x&Áî‡¼¸V5ÿ·“SsX5Ìê¡ÓwQoŠxjt„É²)ÙÞÔjd‡ÈŒf%ØÙÐ¨iNUõ”:»)ÑuD=.•âEö‰¾H|TN`±;Ý±„„Å|‹	¸µX¼YÝÜ\ýE!ÚÓÞ©‹=Œv§lÞ– ®:“4ÜZ$º]Íò…µÈã€‘fÝïX‹ð5œ/^16¿Ø?·ýcÑ‹ÞX7Jé»ó¾GzÄ¿"¢ú&9ftZýã ±öAFMÖjIu¸çc†ØL†Ð>¹zYÑ5Â>2D >É2—{Öz-d6†Q¡›I]XS˜‹Z=ÒA¶ÈªI&m[$¯Ïl²á·eMê˜Oi7pÄAãqw.œzÆ^ãäDH/ -Áå)gâ#uãéàéá¤¯X€8ô´Š|šGÊ§\;pba%1þñLŠü­Q ·4 N‘¦ôB,OÒî4^	,£S;,Çø‚sø@œÐ#–ã øèK«+Ýá)åy´;½¼BSgXúÁ‰ß´ØNmë)nÝÕîè|Šñyïq^HNH-nÆh]$.Œk	…`˜Ä [m˜Ïy]xSJh„Á9f€Áãs5ê&1£ò‚VÊç-W,åmÞ¨Òm0àÓIºÑBª%"D©¡ndÛï÷q¦béÏ?@ìÖvö÷% X^¹‰-7™Z4Ä³ybC¢î”hœötÂ`•bÊb»Un`6Ú’\.iê¶îûÆK 
D_3#dˆƒP)¯°ýþ¡¸xW«BÂ¢©¡Uèà\‚,€)¢Á¼vIÓÛªM†#p{b)ñQ3s¦*á* ²,œu@gÍIF™¶9“E'´7<Ü…ñèÔQÁsåLanï]ØÀ@-hFïaÈ•€ÙlcLÿv-Ï—O4 d„J¡CJóJÒ“î%0±j¤F#Wêˆøê‚Šºªi@³œ‰5t5`¿¹€ò%€É3VWø.KW}êµÜž¾wIMÓ\°ª,cn ¦±›ÌˆVMÑ”@Å8á0>¥cè“¸á¤ð¥à.ÿáè$‹"Ù…Ñ†M$&•3™µvœwÊ—Ø°°éý4é÷àŽš@|¹ö`å×•;+¿á¼ZmsVšúe œzuèŠÍo=z,¡ã1àòqBw‰þÁJ,Ö%L^Úxõ<¦¹’·K›mç£‰ÎB_~$Òù$ÑøPÒ°~‚Úyáf ©#Žçœ¡ßºr›	}Â-Üˆ½â³¶ª·î_Ÿ-ã¤zÓêÎ¥µlý¡[¥DÃã„v!&ÄiÜÖX¥|NÌð«‹ï‡aâ×,®;™Æ;ó8ðS =I¹;GRÑT|’Êþ¹ß‘ë2Á'4åïBS~4<Åóìº2Ôµe×R„…[ÈÎÒn°³Ù@ s;3’$^S`rêÉ Sµ€àL6íCÔK³2‚. ø#U7…€ó575Qø"œªòa–ó­ª††ÓUÍžç;ª‹5•ú- ŒHðú¦—Á;5àk°³‘to37µð"Ô¾X‹Fò0b
Á"füÔJöTÐ
Wú• °)Œ³8T;i>6
ßjÂ§FÌ;gfXœÉ9G-ðGªÞ€ÁÛÉ0¬&´ñýLMÔ ¨yYÙÕ‚ÕŽG©nÔYxZƒç#³=©‘|—÷MZ#_¶[$lB¿R6][ïÖn ¹gˆ„ýJFQZÕ1cVD-ØÏÔÄ©±¦Ð3õa?=“jA;ÞÕ…úGûŸFføZÎ®dÒ9RSZéUFþƒ Ã‡EõÁéK¦èò®sì‘P‘ùóòÜL‹1ä×ÒU%[b½óÞš®ó¬LËtpg·SÏ+Ý !u(P+€>¢÷–²Ìêô½#9›zLlå´ˆÔ6êºFßhu ­Œ &¯:KÓ–ñXN‘Sa%ã®ëQVºF±Êú•Ùe8ŽMå#øf*"µDòâZ¡‡·”“àm'ùÀÂÅÅÏ†ïß¹:rò~|{„t Ô*f~ÊŠ“ÚfF6ü"Cè±”«T*­'ýÀ”šæñÂØÑ-„ ïûiŠžQª»ç$7HeªqÝ¸Ö“½éÔIË‰í&)2®¯Gâ¯]šyg
æ„ÅœÃa›éË;Ó›vß[MŒ0ËÛ‘Ævl6¼·'5c|>š>Ö}¾ÁO•{Sx¶ãÃfE/¢U=X£àÊ·zym®(Äîô:]øD
éäÃÍkr­—ëSå ¡ùëÔå®AK½žü:¨¢Clò{ÈipˆÌ|8,CV’º¥£!Bú1Ó"(B–w–«U*²à]7¦Ô‘*KÝ„¡ñkz•°
=U9ÇY½ƒ&u|¾ˆ `C3ûû²Aa'˜è0ã±Â)¹·
«±%ó~€wSpùŽÌ§ÇGp)ü
™P7øå×ÍH.,/k0ÅM-²ÿÐàzv>–ïI©¶(n­ÌnÖŸYzŸ]‚$¾fOË®Ø?7Å¨þîÎÂÚh»óŸ"´.©Ç†FÊß§fnž&=æ&iØ—>Å¼„goq/GY9n4=ß=Û¿õH¨ðÖÔâØ·;ž§Ï6l¢EËÕó–Ò¸TV€m*nÏAÑŽHÍˆÈdà~?}¾AÑnÃ3éøüÕëêW÷†' i™LŒÁ¢~@ã¯àY–¼Ú<ÑÚ. yÁµj (‹ òÅÂQT#.ˆ¹—YÂÜ×0ò2›S«C+ƒd6-3'§oÀÂÏ#ýäÒàèD×I2ñ­Yáó*£O‰CŸkXhš`•k#ƒ¦ŠžÛ#œh×¶?>œ;%›“Ÿ!ŸÌµi`g&§sËê“,J(/ÑR~T§Å#{ÍCvËÇP†~.êš)ªˆÂ‘†xLš3Jˆ¨*ä¦ª)Œ²^§ªzJUMÿ!”DEh=ÎBë¡©ªžšU‰¾¢jR]i½åª,–ªºcQ]TF¯šƒTUO©ê¿1°^‰Æs·((ORÆØ6¿<-¸Ê•yõ‚g[Ê±¿:/ø”„$%7ï~’60Å[¡€a|#ë5L¾‰ý…îéØÚbùD%X^*?âF#àkÛ:,}mN‰«é¢}ÓìÅzíäZ5®à}Y„ˆ8soÛØôcBôõvÆ+í§µ§ƒ“Ã:¤R¡—/x“‚°ê¼IfH
.…­”RKëL×Òã™Ît—eÿ¤“Ø™`X’£Âô¼jç6:×”Ïô²ÞÞÉÙ‰r6À‚:z%—ü1¹ºäŸ½>‡t‚§ð»AšwøKÑaþ3p<É¥^zÐ|ºfÎ íucÔifÔëï”ÐÈâl]x'«^§“UOéduV€ë**‚H.ÀBNªª§FUá«¨š}HUõ”ªþ›€y»š¿f¿TiÚêß3ÑÃGì–ºrMHÉ
Øq¿™d¼t	+@€]Ñ¤)x–+;´Õ4}‡-ÞÃßàô30„=ØÛÀÓ²P¯õðéÌ‡mV¶~½ÌG ëjÜGÔþ¼ìÇõó‡øQÞ(Û¡êŒÄkæq*t‰›=§)²fb¹Ú8¨Äã2YK$c/xcB(G3Xº„ªYEB)Tç¬f»¸lxµ-rÊ”•€OWë’ª7ÆÀÆ0Lí=˜¤ ¨ÝÛ§²–5.×SkýËÔÈÒ–$ È–¸w–`.Fi>€„n¯UëïqÑqÌÐý ÏúÏ¯Vu]7[°0ÂäÙ³sBwâX¬Ãñ—ÍjÑ~˜XƒWˆŸÏpØÁ‡ÙDd¬¤XŸ¤]îP«´ô(‰ÄTœ”<}º%É]‰[:ìRœðë(M&…‹¹‚ÆäÓÕÄqÁëdµ?$^G«ãß¼bÇœ Ý!(Âñ:¶§b=›¬ÇáÎ§¨=0ß<I>çQÚ„µ\pBÃ•8ëf1„”«rªüyŒM?;¯ÏÀ‹ãë-¢ŸÐAëæ®ìlÎÎOáÛµYX¶dÕô:ÇA0oÇÏ92Ñ=Ü"çGeÄà=„>‡­ŽIšŒyvÛÉè¦\×Mâ\–«lé Âê›y6Ÿ¿éÖ~ætÈ(™nV_XÑ;´(V=wÖTƒàîÆçÛ4JT'ud¥lÖa6n(Y<´P íSƒË0…ZukˆæÓqËþâX g1ôéÍŒï‡ˆZé_|½øØG$ÜÆ+ú6.¾1Ž—»9èt¾c4ümñÈŒ…,Ó}sák)LrÈl¼ºÀþHaìÜG‡|ûÈÜr­S|™ÑÛ	Ñ®»¨sö`¢É»(‡Ð;M&Áî'sù´†Z#]žæ—t\Ã÷•Ï.ë–Ù^öá
Uü‡’¹îS\57Ô,Ù|°‘…ãPÅÔ°†/µçÜÊ“Õ{ˆ´=S‚—ó£œîò¦ì%¦°Õþo£±}ýÚ(¤¨½	Û¹Õã½W¬‘–y!éRî$‹¾~Øx¶ºùK8 þ®ƒoq 6 ¬:º<R‹Â¨0»wÞ¯Ü¹s§B*½»
°›>ârqùñm‡6°¦úÖ8+ªÜa¿›¬rä]d^Q|6Ò€ô,³Ø­Å¯Œâµ’B’‚MrÆ¬§„$ýçyºU&™
=SJ"ÒZ°rE*HnŒÎ%ò‰%U§³¢ÓÖÏÍ3eN‰güÅCº,ÒGŽÍ( †¬W9Æ{íq‘ºÐjSyDólR°´1àÅéødÄFßÎ-nÒäÙÉ™¹8oxdXhéÑ_rHðy|#:0q8¢u¤6À¿£cy+‘¸Á(’™¡žé’£gÆÀ7\lÅ[üî§BŠ’ÜáÃæø÷eû¸W|4ˆŒëüÍè	©øÄ™Â~^ÇwðúªÝ]9ØMQlùì-"Lì)Þt4ìï«[|¨ÿª?¢¯ZÄIjWâKÎDcˆDN¤K—?]x,öòødïxJ »ìª^VÍ6#ò~¨N¬N–Tm ¡@C!€+¥Ä]ÛÛÕ­#¤êÀ/ ƒé6ñísñ€mð§ýœ´Gd]ø1è¹Ž(w+ÈTY|ªoñóo›ÏŸ=ù¡ž÷×DjÛ+aœhv«¿±ùrkŸñëoúÅW?n¾ðWø¥o›Ï·BUðN]A®=a^ñ®n@ê	-,LTä!æÇŽ5`ãN…0ÂÆT#V½>E_—’%¿ÂØdàÊ×ØÍèØTå”Ñ¸u—P~ü£rgUSÝzhsª{d}Ý×Öy]Þn¹ÓÛSµ&+M–9†Ž{ü8\ "ˆ†×î¨øš5ÂµU+>0ÌVgM58õWiê€¶ry§P(ýî*X‹9ÚÇ9ˆ©Ÿ×K²Ëæë!Ïì‚îU­¤²žþ†fÓý^™âÓ­¦%€º»Dæ¼oWÒ9˜a$ ¥tœU|ôqé>oíô¼ÕÌ^s½|ÏùÒº'ÑW‚QÛªzGŠœsˆœÐŽ.P ´0´eöæó•„R€Ü×`ÞîçÒÞ¦
a^›wŒÆkA2¨þ>¿Q½ajÞQ|ÜX8ªö1Ÿ½À±Ù†¬C-è]‹ìîKùo¹lºÌ4®¾å$h`	û«X±×h’åLÄcÕüµ¼¸ÏìŸ5½¶MØ¢„Iá­ŒUž¾´VGJ?Ã¤›ù£¨onû*=ìŸâ‚ùù(=ÃñÓ³€ÁÓB-X3“c˜…[#‰J™“_¦ÙÊ¯ïš­üÚg+¿`UðXœ&G½â•ÝQ!÷9S ûÜ’¿Í/
tç—µ9ãë,¦·&®öµh­q|L÷˜pçQŠgž ÅHõ˜û÷¹¬åZ)Hkµ¯¢0 —3áš·‰ìI«Ôå,>•Z%)“ÚÌ·´sàùP‹Jkä¯1 }€ÆµµÄC7i'þ'´iÉ`H4'ÃäqÍcQæÆ>DCñMÝ«½j5Ö¾Y]øDV› þë;&5óX¹h	k•Î:~ÍãÒg¾j´`–íäkÉñµh'^¥vÌJdû³lëê$ðc_‹V*$Û`xœÔÊä«Öù–u¹å½­òUw[5òq¯X‚ä¯r3“Ú¿Š!š*^¥¦&‡(¢	”©@¬±"ÖhP$ hàŠÙB‡ý:BîÛ²à¥sRÅršÖ}åÚŸ÷—<ù{Î.`wýêÍ‘ñK8Lã£•/rsë ÉÔGH>©	Ç7RÆ!ÂÑ(iLÞ¦E¯µ}¯m€Ò/áÔ®’£Oú9P6ƒW&ü\¨7‘ÜÒýkÙ„¿j4£eTDÍ„ ¤Èz_V¯,=Fª^ªM©Xs!>vãôhßxxs­29L,í€‘™N¶÷„/x (PþÅoÉßÈ[ÎšÛEM*iL
QŸ¼ŒE¼ÿˆ×Ö.›(BYöfoÒ"XýÄñv H=PSƒ¯"(-œ5¾û®ZÿáåÖ/6öÇ²F^Ý/ÇË¸‰íF/ãÁËQ¼ý•‘¡Gû¿I÷ƒ>*$vãU¶/ÁÄ=Nph÷|üVƒOºT€ÕínˆiÛRÉê×%êç÷¿qf ë¸B`M»¿¸s–»(&fn®˜Ù}àÙsÕ,y‚éš_›ZóÕ7UíïZqU.èrðoM³µýhãYŸ‡ø³çÐáàñùËmÆÚµ‘³gIš®T{@«ØJ\ö/’k¤8&=Y–A£²9 ­IÎ ¢Ñð0±-XÒ‰Q"©¹AªùON—õlævõåû´årã@UÐ”Â¥³mÑº- N-ÐRpŸ­ø<ápïî¢M$8}€R‘Yª-èÄe›fƒ´%$J©ºâé¤„
¾D‚X0tE”DªŒ£Šm~£“—Ž© ÄóP±¢ÜøŠ;Ç4ë6 cáNÀ¢Ú4ÀIÚ¢Ä“8îÅ¹@wƒŒ¹Lú6zå!’âÔáwMÿ˜ÐaÆ»mg=Þ.ñ]ÊKNÍ¿j×Ãü·ÌzêjP©ˆ5.ÐtM¸X«§½+™¥nEèÏB‹e•vGà-ÛD¶0¶‰,¸ºNÔÊ8Ã;ì¸!o*N‰üUïËC8hJý¸˜6PÙ8—u>Ÿ‹/P¬IÐ×¿•ÀGaZQû™‚šr¨¾¢Z˜…ÃúÂ>ÙbQwÙÄê³ÈŽcÍÙªÑ‘m¿r8„kéx ræÜšÕ§6§HlSãLdø±Ó_­Õk¦Ü1êA»Mß€ÇPEÈ›¤5-T¾c{©ÛŸ¨Í.ÿ€~¥”êðÃ §Ñ?;îãïÂŸÀœÒC‚½ˆ·–ØR{TÚt|eÙ"óÎ2#÷¡Ù‘/ØÎ „p%`0EÞ#Wjã?ðÚEÎ ›j4jóÕ?ýQ ;"ƒÏÖö–2øÑŸžþGTz®a³èuŸ´G-º!§XD„žÖbÄô—Íû [+!mÐXÉ³mÒÚ4©Å>­}ôÝÄnÕ¡—­Xp`A<ÿ^rb\ÛÔßúPly,ãyºþT³"ëukÎ…Û«kµ4;Êì—3¨ë´+¸
Ûº®9‘èòtLuh¢—k`|«%sâåóžìuî °h›ÛzÎ§S`¤¾Ë!ø3RBÏöùEçthþAWW4Ùz°èÃÜ˜êü?¨4në9&A†Á«e4.	‚£“pé^¬ÑÕr˜k´¤¸;,‚i™s1ÍWs²´>qì\‡KM¤¡ŸŽ nJªÜÇÄep6™q¸çÎ;#oZá;wÅD:ƒ¯=EÞÊáß¢(û)”Z%3øzµ¢ƒßƒ’9ÁwªKÝ7(ü}­ìHg÷Øš,ËŒ‚¨Õ‰}íÏ¿ØÜxÿàþ¼VW‰fÜïŸ-ê×ÉÙ)~ú¬×Z‘ÑÔ‡B\ÞŠíåPK/Ú¸ M^V5×àpF<cà¡aËÞ×Š‚^€˜x“Afo¡”-…±V=ÍÊ‡~±Q^ñ¤Õacn¼¼2¡Õ`t"‡Ž,¢x£^A]²*{Ì•:&L‹a4¥W«À„zåÁ7>ÕŠòà.ÿ+Šâ‹‚ñÀ`±å°ÔóñÈUÝàw—Ë&Ó´Œæ2À·øCqa¹‘ßÎmHQ¢£JÙ2-’Å9Ç&lFW¾ŒT¿/Nµ—fÛá,Ö’Ð¡Fß­ïJi"}bŸ~ "}«Á§WÉó+Þ j!¬Kï"xEâ­XÅGëW_>Ùîo<_Û~ÒßÞxº•‰£‚åÙ3}jð
f°9Hkjà`Ylè•L*ÄEgÇ¯ñÂÇæ‚O¥Ýƒø¹Þ ,îæ •ªÇ‚*@Ú\ù;,ô1þ?<<Gîõ“’ËQÓå*C¥¨qv¢CháÂ–†ÇìMÔÙ„6P:«Q›jåÚÂJŠÓ)&®ÉÈíb¦ç"yFz2cÞÎß€ç1—Xê<¹ž5o¸<
Å†3µh-B°:ÀÆÜœl
–æŠ#ã:¯±0×1FBÞZ\v9ù#½Ûd¨0Rûñ¸¾ÓàÈÇ`àQ¢à€ñQkD%|WË?ÅÌéÈB!¢¹Ð^Å~6o\ÄG@óû©øeÔq'Åòýà-ÞCä¾ÜÛ9¼û04nò†êšõàø†àÇ]›¹q[2®o¼ÂYF·5Ýß(îKöþ>^ž˜\ô¼fÌùz·xDYo¼›î¡à¢%Ì‚‡;§p´	'GÛòôhÔôìÁÊâhÀyÿÀÔìÙ‚€@SàŽ,|µoðÞÃA^ˆ9ìÖm‡Ø¬ “9Ø¹¼ÁÖs ‹ºsêøíÀôðÏ4¸1øÈQ˜ÆPMšS /‰4TÃŒ¿µG‹3ŽÚk²³—`IÃšôw<½œ"wõ5"j‚ÿiÍ­“%ý“˜˜?°5JÇÐéýEËZÙ	4œr©Õ‚<•‚ÉpC¡»ùŸ5æ)‘fAZ¢eK+ýÃú†I¶o7«ÈYÆ–fŒÒ=$lMôÄ"‡z¦XÞLãt{°XpÒŒr 3weÇD_Œˆøz°÷ð~‰Ž˜²ÿ43€ãÒK[S:ÊÁ®æq^àvG¯`1gÒ³ÈZz@­kjÉÍ9›Üz!ñËß
ÀÄ"§^[xÅ—›õµ«ž¬ov k­¬ÚWò¨Ç`Â¿Ïñ_8Z/„‡ü¶sçË–{Ü;§asÂI8_J÷/±þWòLK^×è”v~@	.kLóýI>@NzR»×äÐåÞSX`ü3yºÕüÂp"åÿfóåúi±¶åÚD8Úº‚{Ùd¿°”I£Øsñ*¡úÚ½®J“pgô·!3Š¥€‘·MÖÏý(­íÖË%±\-Yý}lð¿kG›#“f²qújÈoKÖSß,¦ÉöµE3ÇÚ“1u’z¢íˆA3M1Â€¨ÓøHé¿T½ÓºDšÆÇšI²4E®/¸)2`W0Ÿ×ŠaÍnÀ4>—âÞtu_l<–ñs‘×bÿDn(â(®Û^–îz%Cý»SÏâ¤Gxý:Õ‹Ô»Å¡ –Œ«³x#õæ§éA‹}aÒÁôÁF¬üLjEFßÒeõI›—ºEl·Ð”rÇU.5d…³_j-ô¸Šˆ"{ooP¯á±Ùqwºì8PÜuÜJSR_“‘rüíðø|'Ì”Ó‘Báš9<û€Ä¨H±Ì€$l°PýDòºW†œuön0U[^?XÿoöëE5s:DÌ®hßë3{ìñ®UZÒYÈj‘DB!N‡ò›§ŽHSƒ !ÌD‘!ðŽ ‚ñ’MàÙNþ, vp÷´ˆñNátwÖ4|:c	°–`,w-Áú¼†2DKFKLßÃ{šÅ¦œ‹;ËhA®	5æ‡Wg¯iaZ®¶^¬-ÝW•’XÒ¿™³ºê ¡úMÝâý4"-âp$%†ŽÆãƒô€>NüwÐÆ'ãxB­C~¹–À$ Ëh„ ?„â	 ä§Ãü;G)ÄÉ+ˆt“®å3¹)ÈYhŽ!8vÕï“¯=>‡7{<%æÚäŽ·¬ù,jòC®É§FMâ¦¬™n³ðC®É§TÓÄNeY3ß…Â‡¢&žRM'Âd§ˆ1¿sX¾ß9LõL„hÄ>É).óÄ±>Ÿö?Gà2:Í8!b›ø¦6ã+ Ž›¬.#Õ´ªmG=fšQÕô{Ô1udìR[ÜOÎ'¶¼J>&\bJò=ð\!Ù1dA¸—K^éÃ}ð±!õ‘kp.sÝ‰*|ÀÍÿ;ïòÇ•ÚG°y­žïgšË”ÙFæ+¬"¾(¬¸*È=ïÙnÌß}ÿQcÌ÷ z4i>–’Ã˜Tò,îÛ7¢>,)šˆëgO´XkÊV,¯8ú`âÅŸÂÆ–¥¸[‘÷œ¯ßý^`ÔX<Ñ¬•·áOÆŠ…¹2¦ƒò÷Ü>ÒF¿+¼-hÅb«-6B_†:ÿú©L”ÜáþI¾ê|<+È}ëœž¿Bœ‚[öWQ3JutèÓ7xË‰Éö =Ì9\µqùlˆüCu>ÂTƒÝÙ…Û“V-UÙ<„pâoÑÌOe8Jõ¶ðÏ"Ã$ˆÕž‚ìÈÁðt|&G>æëV½ŠžK(ü¯Ôøm/àºìûh´¯ OwÞ#áY
ÚöèÝñéþ¸÷ôÙ£¿-&csè¨`Ù5.öí"œ  ËaÙÌ’ÕâlxoÌÍªRÑTÛxì­nÿòb½ì‚ã;`µ ÏØQî¨š×È½'	ƒ[¢ËEû3{z„´dnH êjÕ€X,‚ê‘¢âœŸŠ3[Ü©¸¯MÅÍ"Æ«·ù¤	žsd>ÊC=Îrøêì³¦©Ò°’âpj`nrX¹zœ3tCÁô•„½Å÷¡ŠxX–™=šà¬†údöÀÄqqøÓÃ¹Î?Ý;ƒgåœÆò£…/0ß‡¡nkB(ö		i¹Ý–'$ùI äÇÓ‚ÑËäÞ*Ö AsEØºkdÿ²ö¨š®®ÈÇ È -dŽ
o
Îˆ£N¬‘±TØpKû9ŸvÖ÷'EU>¦ªÆ;zdâ(ThœíþPpjÂgªk< ÖôVœ1tùžïi“«N3+gðú˜Óù‡€ÆS·»BéMŒ¤W›×ÔÆµ«q–k£*ÄQÄ2ºÖ8xÆ3H=kÓ ¼Å8ØTZ„ìÞÒ’=.V¯)+¡¢¼àh¤ÙÔ&…GQ[e	òã$ôX¼.PÜÉáý/|Æ§=s‘Ç­/Î¤QÄ³ñÑ[rïì­$[õÓyFnô@¼((_ÊÞº³|!ÄDì	wkMáKí%¾4ZÂWXç|‘hßéA¯Ñˆôb@‚ž3Ý¹Š»ŸaPZ§:jêê.)qTVOŒ`qIÌ‘_eãT•nsºêS«ïìú²øÜZ|€‰a©àªÂsôRž5®ÐdL:|£Ð)ÞºËšþ={;';{Ð5õudŽ×Î‘~oJþí§ch‚ÆÇgï¨WOAdÍ»¯žîŒv^ŽÀÑÅ-§ãîJt /Ôúhÿ4T?"¿Î	Ò‚ÃÆZ€j	60);#=B—6þ€T<GÔ\†è	í-TÒÑ‰Á‰aDpÀ80ãóÆþ;ŠÝ7xÊfÌæC°?ZÀïLJ@Vuðœ‚ìÁ¹]4y¶äA¾íyøfx÷à>³L·Ølƒ#qCý¼sx}üq­ç ¬xë ç¾¤ýk1jX¸ÑÈ@Vhï	Âscq¥›í!@…oo­ÅjJ‘ÇâƒaëªØ!˜â©VÒç€a"èœP²Äp¡âÏ lRK;‘|8—æUÜŸ$O—¿?¸ÿn…:wˆ'½ÄS$µLV. ¹mëŠ¶ŸÙ:¶OójÆí¤®ÄzœC¬Yq©TbŒßq˜–†
ˆ±ÒfXY=?¥êÆõ`,i1Zç‡¡¥ãnƒ-ŽµÚQMËÇªÕî£TáöE–j_;£Ó°“',•¦òÖ¹àæ8¸»Ç–ééq@œË•›GfúÆ&ôWZE—r	v> ®…I8–z¸–Nï<­Xüœ_èû^¬L~Ó”b,Ë|«êoï^•øÊ6(ªc—¶à:xñŠ¡ìY‚_X¡ê f 2mOŒø0Á1²dàZ³#¡Z7Ú]mØíâ!ÈtÍ3iUÒÔÛˆ4çõPZìÐ³VMÛaX:þj–øiø:1§ûË{k‘Ç@ó|ÀeÐ…lvÚ…l‚<„šö™žM8Ã=º©3f×—ì[Ð¢¤ó2ÔlYvJãÏ(@¶NäÑXgqR“ìáüùïóxòj=pl={¾ùt•¡eKy¡PsÔO4?à¸Q—ž´)b-Ûª©xþádK ƒ=A#qÂ1ø€)]:LY,ôpîâ¨‡\ìÞt&ÀÏŸ«¯oAMp¹LVØØD”þæÚÏÏ_àÇêöË­êÖ× BÖ³×çXwX;ûT ¢­™t)+"I…¾Ü´"YÃz—}/= `(]ÒÝ-«´ÏÁÄL«x¨CY4zñÁmggB~¾£8ÓLÃò¹¥i±Æ8Ö¬¶€ª%Å>›q®†<K=ø5W‰Â;(ÌÆ‹`£Ôâ†ñ¹êª—J8Oµamnº¤CI~yÍazîÃ(ÆVS+NYjåy U3h Zõœj»þgðßÈ£:>>GÐ$¶½1ñE]LÊø4Õ5j5 ¶­ÙùÛ?EÏõur×qÊÕÝOô%5xÓŒN š-LËO¿Ÿ×7x¾µŽ-ÖÀ¼mrÁïªœª`Ÿ=ÙéÁ%hFxœîí UìôõµíŸ×û¨óîo<Z¶½ñøœsµºœ6;Š»*o®¯­³‘¨ÞôüÅúfÿÅêæêS6eê1%¾ä	®™ƒ€:Þ¿óà:ƒ™zÃ_~9Em´ÎÁ`öÒe¶©P@Ìœ9øP=ŠMÁ}b‚ïËn–m78Ú-(]Ã6œmm#HøÓ­+¢Ìk_c÷(ïd ;g6&§Þ“‘õ&gåîC“¿«HL	/3t¹¹¾õüåæÚº:õ’k‚‡PmŸ6ë[:âa\ùôI/ ™bõqÅú2ýÙeúÎØÆ±l‡ñmÓ°/]´^'PüÐ'£·XÄÄ Càa4Ò²NšÏ	ËÚ“Z¨YÜû©mMLŸ5v'p)?°k‘|.T¦ƒ^€ñä1¶!|½æƒ½&æÉè5ô:IC\kVÐ©Oó«O&|¶A”ðù
úÓ‰RS¢PB_‡Ø„¥BÍ6Ã.ðk<64Ø~N,­^²"LÊI‹ô¯õéåà¬’ÎRÃY5²—J(Û©ü	ÜÈ¬’‹”³R
X×Ó“£]^—CôK¼!XbÛÊ:Nbu‰E–÷ÈÂ2éwP'Õ¨GÉˆz½sZÝº¥x/TØººÊoB…h©|öœÑØ5ÉG®‚ŽV}hµœ1®ëÉ  `¿Ð ‚Ð›ýãw£k¼E-oëÚÞ6ô£O¼«„) ŸŽÔŸÒä|
WIêQM§Â?5Ñ¡Û¥š:· mÁîðúuÑ‚k	Í2Lê¹	ø9¾F9M5ŽxÚ‚ÞIÉíà=Kì‹ù$d91&Òà@E(Á„äŠPÁÝ4–Zk(ºC€fUCKÌ<>’ù×eÆçŠx@ev»bïùãEÇEÀfƒø<NÀvSÞÊ0ôÉïtkTÂÔ^-8‡{	Î_ï,Ýû­ÚaCìÀHÐÛxöxÑÝZS«%æ±A¬(,	Ê˜:öìËÑêðäôõîYÙåÊo/|{/6úa{‘*ñÀ53ó¾`®#³.QÌ7ªÉv—sº]6ÛyâRGŽ­ ïÔàþæ7!¶·µö"°ÔœAà‡É~}‰Ù
¼h5L˜¤ósÜ…ˆÕôòåÆ#LÒþà=Òûl°MÀl¾ÇøAcp´ƒÜ£¥ÿœ†HV%A¶œÊ…£¬Î]…8¸h›g§R_ ™|­ß6’'Cì|eED]ím÷pö5»Ük‰4qu Ýy}ÛZA£ ÆÇÑ	;å B‘#=Lã¼­nAË‚ã‰ÔÚù)¨icbäAêAé=°	ÉFê7zú­5˜ž0¯é71‡‹õh\)Ðlú­fÓšM¿Ù¬?\¬lp+ÁÁ¡¢ç
óÀÁÐÅÙ +Iø´ C5BˆÅ¯_Z;uÊ òØ™ª”÷h£Æ¤n²kHòÒÝÑ¨Á‘³——_düU‡ì¦iðÅ‰" 2Y?—¹T×|¥Ë
ÖƒRÖµ¾™üDû¸åx@Œ#—9/´3øR[B’Ú…qôêÊí‰½&Ú×Õ©™©[L;ýÆ¤Œ‰½Žu€tu‰fêsÎïþé’.ò(tõËv¦é8‘ñÒ‰ÂìãÈâ?ß‰Z,ó·â/b—R˜:> ke94—»90ô0ðS‚& ^êA¯±â%~êIºâRÁO½âÞÇK>èídŽ"D“ÑÈÚØë¢Lòl]fI˜YXÀ¾{Pbõ‚Ä	àF ƒóCg—
Æ÷~Î^ŸžObÃ©¿†'*3‰î&OÛæúÁd·œlå€…ßõhL€|¼¿ˆC¬Öè^øg1ˆÔŠH0ÌxÎÍb§ã·ò@°SšTÂRâÕIß,Ú,gËJ¶ñõó
: ÝÈ± ÂÍ*Bˆ¶V‹gl·WËSÖ­Õ3º
PÍí€šBþ¦$^¾¸Õ]ó©è(|¯]øÞÄÂ+wÚ¥ñN8ìh{e¥£øÊäâ€ÃB2±õÐW.€ý~0÷'·þMGñoº‹Û¼ÄÂ˜f–Ÿ´I“wqF9ˆm¨R­ø:¼±æšxœƒësÙ¿9ïdŒ›\WøšupékKÐñº²†¬ _%%]³Ì}KšÞß³€FwÐ”1ÚuØ›d$¯˜ÅÑŒxÜy¹h.rOÞº‘`(ÔÄQºð~WÛ0Š41(7Ú—ý«IK á †Ç»ÏíòÌÀÈé
—Bòž/3ußâ–%¦¢c˜E|¢/5H’›Ê©Á Îð,ÙBioýPËÍ‘.Ôž#8œÔÙÑhJ8Ð3>Ö«®4êJ9ë~Ã¦Ì\{¡O:•ßÀ|Ó¾h¯}Üéw*çQ5Ó3-KéA±žø8'G8}õX†x¾DîÐ‘E0ÙC3”½Ùô™3–¿–ºÀT$¦&½ˆá{4Ië'ó öÌÙÊãé^íiE—ªRÑÒ]J³U/Ü¨{¿þõ›ü˜gÐ6“Ø¥7Ùü…RÙj\NYíƒO[í§Žýæêš¿ú+Ÿ´¢ØT’¦0¬ev}p‘-bd’%¡Õ×d<ã¢HU$¡²”î)o,FCóµ—BŸÖ¢·êÅRe7³b!EMt²°²WX‚§âSªÙi5¿êÍT.ÓÂ^>É\«¹D¬io¡¸œP'dÔ(ž-øLº.àÅ•¹[¢&±w7°Ç{|j×¼WÖ¼WÔ¼W«y¯]såN®ºp¿¨¹‚³(–
IkGÕ•¢ê7eUxØUW:ªC]xPVÍCè¨ZŒuáOeÕ<VVíëýà‡eÕû5€ïwôúMQõ?ÊªßÔª~“ªZ^@Q£%ñ¸,—}13™â{=5ªÆBóŽ'eŒb¹v—ïÇÔ·=lHERµâŽƒÔú™©O~A(ËTjEDËŒêØB±FERÓŒãÂGƒŽÁ 6êE|D_p9m›>¤ŠïšŽN˜£Ëœ	Ï?xMJÞ”î)´J.òŠñú:Pö×PÀ¿á. x°£~¥»,|7
_eÕ†kSx Hä.'‡Á¤E‘ «Ì‰En£è‘7éÈzÞl®–S+Ú{¡R¦Ê¼ÜmàÀÑüÞÙˆÅsÒXw#åRÑ0G™¬ÜÏ~–gž‡ÖJæC*ò0ù±Á˜‡¡ 9^;ÀàØ¿p|í—…;ÁjÒY]l+S	,3›§5<?H«GÌõô…
ZÔs§3€	'Zi%«Kï¸Nkç%[3$Çè¸Œ€èÓæù7æ|
çsLj-ëhÁRŽ{D’H¨''l^ØéG1M9}qÌ—–ÀÝ
¨œ™é Õc­m‰o¨>¢%>aÆ¥4³{eedì‰<I†]¿¹-ÈÙwÀ›‘X7”f‘@UX­º‰WÎLKs«Adœ¹¹j—ïbfšÎN‚••Ùoá¨ÌÞË¹°´$ÕæA$¸‹m}« oc9¨+_•§ ™›¿(ñŠ9µÔÀç~oîùR¨®’‚„ˆ0ê¬­zLñæ~R5Óè[­49å•²tdá“‹&ö£éV†O¬AHJ¡®V‰Üdt xŠJâ4ËðâÞ…ïÕZŽV¨†ï-Ç·Z…Ø³R46*”ßj•fÏjÂ¾kMDÛè„ez•Vä7ïj°ë[­G¾©Mk}k•NsÔÑöÝVé4I¥ë“ÄÞî_ ÷ýVÛß\Pú›Zi—rúH²ewŠQ†„Õ…ÍÜŒËØäc2)'®ÉòÀ»Bµ&f‘°v¤¢g¦Ouf°½ï'-?ÌÃFïmÚom@ÊÒø•|“Õ^”É*…òKuð‚k»Ro”ßp…*}„¬åîÕºÑ¼´Þ@Ò`ñØ=P7µR±–¹‡Ò‡â¨s¼ãpÊwZ<\/D,•®&«÷	óeQGZñrâbü>ü¢B¼ÆÛØ({ß°Ðx{"‹’mdúÇ‹Ú\ª¡QEž=\áà¡ËñÜŸ‘÷¼%ÌÃ=32¸f•Ø"!tÿËqF1üôØùõ\'jµúOD+¡kþ[$b}nŽÑíÞÑI/€BÄù—£7#ø€Í/¢|¼F…Ÿ1˜m¶Ü»ÉjO—:ÅÀ%6Éˆ€_cê1j-&¢Ž±lIÔ5gÛßBüŠ#Ka2þ¨¥ÿÎå˜f9ø·BÚ(äç"¹$ÄÿÔ3Àˆ&ÔèDÊo
^S€„-Wm+Õ™éXpå&h&¢#™5ÙÁà»ŸRÐe@Ê6
`&BåkL¦ØÚ¬À-ð¡qxJÇ@b ÇÞŽß”ä/‘Íª3T³e}BP¨v£ÜÂÿ×³½¸ú®ìäB{"&øžXR|Ð©¥¯Ö”K.¤v%z)—fE%¹.Ð°ÕÂÜ áæ¬NiS¨—ÚÀ¡‰6ðïLiaÊÓ„f4øKÀåÈÝeñ€ƒë¼æ2¢“^†×¬;¬þácÝPÞnŒ“Nf§KáÄ»ñ<%aY¤oZrsW;Œ…ibÞw*%³ÂÝA¹Ÿ¿zMGheˆ±j¡®üUP«š_­™`DdJuxƒWøˆ†ä£õó"Ctÿ³âƒÊ*ÚT'¡ãÕ`Ô(£ÿžÍÝØ".\ òÅö¶É<úO;pR¯€€—½q%ÂØ/¼ ‘”ÖÁñwŠ–óðE„ßiD±X†%ævæÃán%¿%ºkœvÏ‡‡ûË¼;N2é*Ó¥ïyð³;Ð}­.Æ?ÜÞzùB"	s~8ø(rP<{uX<ë‹L’«—›É‹ûúÐÊ<:2—¶ñŠq;l˜êNº'Ã(Õ%³á çŒì¼E&'¦[Z"f¦Â/yÁ¸`ã˜ÞqcMhv]Š¶€¶à.€íÅf Üç\Øû¯AáNúo&yµˆÞÐáJÿ£¯axá>úié§§«kKk?­¾¨8è
ÝBŠùÒúEÝíÒ\§«çt¯Åeaiya#‚!Ð…¹B´ºÇÓ[À^aXÕëÁ{DÞBµ(‚ŽHNð®7uÐÜ]Å ‘;/"Ú1Š |æD‰¼V Y tùÄ“<„Š‘azØsT6œÞ=ˆP÷"Yà)bzôV“¯vä_OäTç#‹×ð¸Jˆ6x†€7c<xðCoŸ®Bð£ÐÖO«Kw¿A¬HúøðáÞCŽèÁÃ‡oVîZæ«Ò;ÄŸçâl<ûßÏèâ2¹WBþ‡¹+ÏÎH2:†s¬Õú7Àýëƒ‡¿á½ŠFÌ˜¸ÏE÷+îÜñ}*¯Ìõ{§Äþ½w·wç‰	$ˆº/ê—<¥±ž»\?ØÃÜÜ­InçØºä¬¡Gó™˜»…ó)ÀRœ¼¼Ø{Áz Ýç–½u¼2o´]ûÎvù‚_/¶®ã&cÞG\Ôô6ÎþÉzu{Î>%cY§Ñ=mÂp’ctÛ¡ºƒOµÔ	`”t¾ÿýß#øjãu*g­x¶{FE¾@IþIEÛV'²Q
Ø†âyýŒ­2~ÊÎ\ÜjRJW2}àûÉ±:éÃ'9¸Aöt'óÆNBpÇÕöI÷;NËÀ(‚•ÓíäÛ‹…zÇ»¹c‡kyGXÕ%«é®ì
¸L“+Äé;žÅqËæ/°”ýkº…FõC|Eüû{w]6(é;úƒBépbüN“”oZía“/ÆÉm¸ ‚ƒì¦ÈÍÛ´w§Çý‡jwÒ8î?¼â8@Ÿ®a÷¦Ç»á;iî_q$­Ÿ4ÅuÜ|ÿk³)UÆ4c–Ëµd+-ï˜Ú±¸xyÿaÇË}ÁkL^‹9èP€4i{åó¢0òõ¸Ñ¿Èå
J£o«Çì$PÛ‘/¡xÅÑ¸–NÂ½ÜŽ©#£ŸPí$€ÁÉšç8þœRä±öýŒ‡É+‰
g^q/ö†Ó?WC4^(CD¼ÿãw±Å	êxŒhi½¯ò0~þFfù°açÿjo‘Y1"0Ðd¢`íW_Žê«.:x“‰@FÐ¯y¬üãoJ/“Çé¢nÑú$àu	/ ²X}¾g¦Y6=Ð0sãNpg$u¤ÙÉ=n?DoyD1ÆjÀà®1êuö^°×ëµ»v|~¸/.]Z1à† d¨àÉK{œ´!žšèh¶y|ÔÖ¢)}ó<Ü&‡—4OqFùúóT°Eø­Òµö$Zøµ˜›OÖ´`ð“JôX„!á§,¸ò`Ú’wAM£ó?„¸à™O).©¯•Ê?î÷íuc«÷vU–çn#ã£Ÿ~Z[Zù–ê[¤6æ*ÓRµ)¨×Š¥ÖQuÇêóIHkÌŽ9Q<"™¡ˆd×‡¯&%Ø$ó5ù‹ï¦•‘Ä_1^e—  k"WOzßý>ïãÝ½»}\@/VuƒÙÏ… e±zÙvé-BÙ`Gá]QS¾PI·P_/fãQ&³ðS0å(µ´ð&¸`<Û¶åf¦së±ÀÁdÑk‘Ù¿b"¥ñ‰§Aµ‚Ž$JTÔ!§8Ê]skÌ“È8Þ|µz-ùÓ×ð¥ÁÅæ8Žâléì "…ß±N>‚À1jÏrq'óÙ:z²#Ð®Cò›ÿ˜áØi°Íšž\­xÒÕ ƒ<€‡NïBÔ˜X–øvçw§@œí Vî\çT§ àI'Ž±%sí‹äjf±ƒÄfy+!˜‹Ñö³Óz£ò¶Ã$386‡ÆÌ/U°O£]%bÊÂ5Îˆ'¶˜ü¶ZPÿ SÅ(5æ­ƒÓ„V§êKÁÎÆñ,ùâÅ#É	MFê0« Cöš½–ïÿ’¤º)»¯z_"§/kBbMR„oNGCÑA	XFk¸%DœrŒUÉ\"R/ìO—&4^Î$Ø´-L³$ûøM|:?ò0Ì0³$ÿ@6Lcqr,5~ß¨ðÛbõÌÞ%‰Õßª¿ü…\ÏôUîª
ùŸéë º'ä³"}
vÿ# n­“µÍµêé8vàŒ›¦^02À¥Eâ­éËD„kôW´U´éJzÚ¸_ÂŒåŠ?ÙoÑ¾{p/×&&uçÛ£Å?‘>;^åòö“-éI¡öEü·Aõbë¯,ÁwÏp ¡-Ý«‹RŸª@æ	CžCÑê†H$6QÅËÊÀçŽ¢ûpÊ]Á;I­+Mn¡?%ãSÝÊ"Ö›^,oè\ÉIqå“Š*‰}7¬†% ÙÅœ™MI§•´
^ÍZ˜^J°þ*Îº†ó/Ðá»+§–ËäØÁ|µNß¬•a“H‚•<aÔBË7?¯	ªû`?JŠ}¬\WÜD™?V‰¤ÝˆâÆûI2qb$pèþÿRiC6cX}ÿ]ì\ç~›‡¹—¹¹ù­7Ã“r8ƒ÷{LdåTNª—2¯ëÊá<ßŸ JÇ“­	]§ZûStBÆà_Œð/\"Òš•pFÇ]_ÿê vèG&êR‘\V¶¦%¹¬ðõ)JrOiø“u%<&q^!×¤1ù<g~¨KâÀçÑ{Ñ‰õÎÃ°0McÄ<‹£jAº¹…º¥øßZÞ<P÷ÿY-H{?üÓt!²0Nûx”£©ˆë—ÿsž”5£aC°«Ù¤1¢Ð›$véd.T‰Ì¢“)!«™¯ Ù?]S—‹Øˆi·ò§ëÖT˜ª ,´I,t ŸKÆÏ´ý@(/
é¹šYg0Azæ”T6	—Ò
½•Ö´­=*¡¹šÊðîßê ù÷¥àÙñÉñáñ+ÌßÑþ{ má¸„óè³ÍÀ€ü†ì2¸‚Mÿ‰„¬ƒÓos„ìAINââD¢2žŸÁÂA­a.Í[>„ ‰z­3þE	7lPâ1?ã†=£–€UXginwÇEÈoß/–¯k­ÁR¤éœ[öV“+“7ªbð#KR\&…_G~Égkð…rxÀtè¿…·añqÞ“C’ pà£rygßæ j{ÁTûFl9 ÄX`vÃò;ÓÃÁ¦Ö¯M‡Ôßµ7¤sä¬ž_O©)¦ù•G@  ëÃ
—y¬‘/°ÂtÅ}Ì0ÿ¤»Oó‹r½ n (Ø¡õþÚ“þöóÏûÏVŸ®o½X]cŠ†ä>ÓÝœ6Êä–Ö¶7™rF|$¬Ùµ*\Ÿ@:ä+Äe\½A9¿Ä¤¡±6çBóÑ­ýhÙöúÜ–=xÐª›#e	{	ñíà°ÄnÄïŽ2Cµ_xvˆœáÏk¡`­}øNM«ØQ	­€ êÑ1n·àßÑ±šO`ëÆ‘"Vî"¢¤”=àÆÂsÅ=-B‡š<2ˆô<I –°†º€ºöÈ½N®âs(£nÄð	¨]U„8>zÃÜÑTòOÆš>âûCDêÄrþ‡.U?Â…øÉñ«êR@«Jô„}äp|À¶H„-Õ®ï?ë yTXXx“ ôs´…ÔDÑRAõá“ÿcŒ|ü<'¦eÍt`8Z¨ xÀM98^ŸÀÜbÉWHbl7ªcFˆENÁ­YsTk‚ZÐk*mrn~ š=–.EnÂ@ÈHäBW]^‰™òbSs¼iâqlN"„¶XÚFV_`HûöÖ—²ÍêÞ£ˆ_:Œ5.Âþðè3À¯gšÒ0…™w$&$ÙÅýŒrWõ­-67F0a˜
&y:x5DºÓ>sR ìÃñ§î¤,Á¶Ì–¾‡—8³þ~W}ÅÃÂÏŒåÔÂxé{Çq?	¯PÊªM*V }âÆ8‚e­[ÎPÜ‚	g÷µ~[ñÜ%™ÇÁëÞ°xâ¢Öaÿõàð¤÷oV!’6¾ ¦°‘R—‚ ¡ˆF¼s8è=Yë¯>Á‡yz‚oKåþá oc³. F€;Ýæ]«h8v\ Ì8º«µý™¸I%òÎÿ'Ü$&ÿXaZÍí„¢Oxœ{Ê8‘‰I_k"“³‚–þDÍb+…ŒÄ¢|½‚Ä¼üâÊÄ<‡âüœÌ”Ìô\½äü\.-˜«)Ÿ\Ÿœ“šXŸV_Z’X’Ÿ‘Y\’_T9q+ #ÅŠ¿xœ½UK“â6¾ëWtAmjHa˜ÝlvÀ˜cN»•ª}\*%ì6V%G’a¦ÿ}[¶ÅÌ°Éi/Ð/}Ýýu[ê÷A
µQÛ'PòÔhÖg}øjùšGWªË’«lA?y"‹©Z-›àOÚá5ìo ,¸¡‹‚.êv…{ÇÍÝ1¬6 Ÿ½ƒ?„kr·ˆ;rw@É`
"°&Ã\(Ì®¥Eø»¶,ÞI¶hZ³Kv5·õ`q¿œ_ÍÿŒ/1	M&ÞÔÖ˜Üþu>¸_xwÎHa]2ô¦åŒÐ¼I¬j‡„È­C#ìföKÿÝí”U²¶^|;e)7èH¾{7e–p]ym<e¨²V¦¨O7Vr[x œ’<¾}?e¼ÒÖ]Þòö®v"õÙîÈ/…Ë2Ÿî·ióÃ˜È‰“ÉÄÇQ–(ÓéJëÍbÉ¡ÏH(±adÉö7oÂ\¤ôãTP?˜£ræ1iMAuÂILBx<:µÇÄõVKU—	íB<zR[”Ñ2•'^­ôr"Wg-\Äm*¹"¥#£óœÜ}èÕjeozÐŠ¬„íxøþäÚ„Í´ÃÆv;m6vÂ@^ÿ¯kG»#,m¥ùýÀ.È{`…)¯iÝhYV’§H‹¨¥¾òüS£u„³ðË#Ôz%uºY²xYy¾þøjUKO—’?úZRZ;ë•Zi[Qª¬—°Y<:‰JX‹Ò'˜ ø½ÀU ù‚»ó’Ñ=Vu¼5¡/+×Rê5n§Á–THÃ%7º¦Ý&,¬ðÅ@Å_^ÀsªljÕO¡&ö%Pú$é5¶Øb‹Æb¨„–…šòÑ{‘ÍAd³	‡ÞáBmñsà7‡ÓJÏ!žòŸMñ‡ƒíšxªìYºWzìÆÿr‚?Þ‹ÿü*_^¾r
äš%sH$s‡“IgŠ2¤éîïqºC7LÒˆ%:ž°ók‡ÎO=ìùÍsOn VP»*×aq¬®MŠ½äÓ·Ø`†€×Ãý~P¹½dïoÑ¿:õð?NR5—m"øØ(ç§F'mûw)Û„µéÌmÂÆÔ¹«ÚÐ3ÑFtrìx¤½8â‹+s>â‡Â•r<ö#~þú•2Hƒ[Œ|HTQ^ñ0»ôøÄ
Š ãÒÑCxm†ÞØ;>>û›ù½2j”¿èè©¼ïˆ)1³^xœTAnÛ0<›¯X %M”´W71¤>Hl#ŠA”´²UH¤JRvôñR¶juZTQ"wfgv—j]qœ®¤Zr+—…uq©—'OÅõñGˆéÍýXÄx„:A1-Xe4ýrÏtÛîÓTVlk™2Ýáùcµ\² ãá[wŽ…kŒ²xÛ¦t$ø!ß¦³ùb²ù„œžÖl,?‹È'GH.¢«Œ×EÊ#zŠc#7qR(i¶ô‹âäYüÖ«çÚTÒ]_å•ù}Maù,Äçñâöa2œÌ¦·§`g
^³%·â2€r£+Hj·©y…¢6z]d;¤Ö Xgšk†úGltbji@àØPa©€tª¼WU¾¨-L12õ'ÛXqÂ?‡t‰KoÚ‡S@ÏÙ&MÙÚó>ÿjºÔ@¿Ÿè‚
EZ1éœ,¼1²¤ÜZÐ×h“B-±Xtí
,óR.í'ÿGô1¡Ñ.Ù†Ó0h	ÍAbm
åZ&‰de&“Ö†ú‘6"hJš<‡ð6Á.Êi$Ÿ¡è>xÇM‡Ý@ìm	ïÚMÄÉp(»Ÿƒ¹G¥=ã†í’éØAZ,d=
È¯±ÛêOÊ‚w„\kã¼£;éÀŽ”_–Ñ9Eß­VxÃ~xÔ&]ÐL•Û¶Vx“¢?áWãÝÇ§$WTÞñ×›ûùÝø`þÞÓoùG¤ßí;?kÕ Y_—l(ÎÇ*ïèØ<4n?äLô’ùK-`”¤¼(ùÿ¨©w•ŒÂõ„¯3š8?h¬b1œ”HôlÆÒó£íàCVNÝ¾7+V°ÝWÔ­ü`ëÌûŽ9ÞÝÁsiœ,/1ÜÇ¨‘ÁìŽÅÛµáâ·-xœmRÝjÂ0¾^žâÜ©`uÞŠ
²9f•UÆ†Ææ¨a6é’´(ìáwRk­`nÚ´çûMTž` E l³×bÃúb,Ï&, Å”xD‡4
D¨„Ÿ3„'hS#Ì¸â{LP9¸Œ‚ªþÅ:I¸m0è2£èa³£ë0}‡óE4
Bk•£±¸f/
•hsãVAP1“ùá@Y)Fð‚Ëûš±×Iôò1],§ó°âöôoÚ€;àÅü…ö2GÕK¡,p…òÍ|rVæ`N_3z.ƒ¿Z‡¢¢)HÎ¥@[•‘—´©²¤ÜÄ¡i½àN›sNø¶(	]ó‚•î›xêC—6]ïû¹ÕŠÈkV¶GÿÀãiÕku
G›Æ}«èÔI­îŒ‘ýyÑiu`¬*½ßg†¾?y…›!êD9¹“>ÖµHbž|g‹÷Ií.„ðÄ“ôHžÑ—G”wrÁ½+Š)îgf‰ÏfÒ!û!_ë‡²NxœTKÚ0>w~ÅH=ìÒ%»Ý+mWB-¤ò ªÕjµš$°šØ©í@‘úã;6¢—æ’‡ÇßcæsôºâDiÏeâ¹ªçÉ»ÛÇ|úÇ0îÈúÚfLpÎ:Çñ·ã|ÔŸ-°4K¬iÉhùWÃÎwåÁ7V;¹»¦ôHR/E óãÉt>œGüÈñ¼fëønF2<’ÝàÇœ×*ã'|NK›$Ušìÿ`’¾ |Ì?Ï†ÓÅp2n!êŒ½U¼f‡~Å;©ÃÝÏså•ÑT^j/¬©bõŽ0h†ÚšµÊ÷(;Oœ£ó¶Éä™ï²ÐJ¬ÉRÅž-*‡• 7¢5¸¯h‹)#+A²GQÙJ¶d²ö¬·ü»‡òòúñ¾ÓEc‘P®«I
ÒÒd?ñzµ~ìˆ¤‰F×d;×½Ð]‘õÑpëà «­Qf48iŸ•6mhë„¯–™+½”ÕjêÐE,JZºñË9¦´Â	\º…°&}\Jkb'j†™Hx)§´”î[‘f£dÚ`Ú…´j'»¼¢Ü4>ì<ûyÀ—ÕHºCÑ’´×ƒÓÉë›i@mCìÄrô°‹zèÕ^GK,ØƒïýÑôëà$Åïðu&f,z^5Kç=¸;poñê8™öyýœ‰~Žñ„…*ù?hðìÜ=Å¢×Xô*Ð÷²v)dèCþe&©”øcJ2îœ)è‰‰÷\YÎüa”›kl\ˆ—_…£cò0B9!ûÑ4×ÑYü)5NFâåþ¸Ì™¤àƒRxœ{Ä¹™M(¯,7U7%µ(Q·¸$±DÃP“k¢‚’\@AW!85/EÁ/Ì7UÁ(
$Ê2“S@’¥Å
‰y)“ù¥'æ9Š€ô€…ÕlRÀŠì&ÞÕÃ©ëŸ"œ§Pœ›XT¢“ŸTRTš\RZ”ªX”:y"“¬Ÿ—@ˆ§¿_0—.pååç¥rqq¹F8úø¸ÂÅu¹´Š2óJJ2ð9wr³'Ü½“/0KNÞÍ¢ ÔÕX¼1xœu’ËjÃ0E×ž¯è"-XMÓeH¡u!Ð<¨Ch	Y[I¶$ÙtÑïÈ®_!ÕFöxtuæúÊ"ã,²6ŠÏLšûÑL¯Àj¾€ÑÙkG†!—	®vKŽUe”qs‰bî£æ6×’6“§ö üZ­7á",¥J¹}Áµá8]lt8Ix!b>Ã=c"Ét"HføƒLbõ| Ïó¨-VÒj•¦¤8ÄV§,ÆúeoŒÝÊà5_>›íb½jhÐ›ÒhÏ¼š¨bÀ“(¸ôÑÐ¤¦üXÂ6Tõà±Ê²ˆÌ8*®ë¢U!žt:éUZq\û§„<¡UØëw¨ŽÐÔ9hÈÇuÉÝØã1Ü´‹êÞöÌo’¸ë+R¾2Êéýgk­YŽMæ\"Ù–oÓ··g{DV)>çËÍ{Ð‰ˆ7¿ÊUíW{Á(wØÏé÷]m„.,OßÏ.´(Ð»:Ð›H—¸õe¹!b“Ëá«ëæ}xœ›Ãv“•=¯,7U7%u"»®DJjIbr†n^±‚®Bpj^Š‚_˜oªPÎÇ	Hö¥MüêdLve< ¢Ø™rì!Z¸8K2RòsS‹“SÒŠòsõ¸¸\#}|\ƒ¹t¡€Ë/_!µ"1· 'µX¡2µDoò& °©+¶KxœTÝkÛ0öý{h»!Óv•ÐÂê¡ù`e£äÁ¶.‹À–2KN[è?YNbÙÍÃ˜b|¹û}œÎ'w%1.t®¤¤Üœ_]ÀäÝ˜Og0{@öá}÷¢$¡ª°Tá·4«D®Ñþg*UTë‹ ù5_,“8qpòiG•¦œ5ØØaŸA<1&ÿÈÉ­®3û¼Ãî¼!“xˆ¯ÚTN;‘Óä¶}Þy©ÁÀ}”|ý/Ä‹ùQE#¤s¢1•+*ÕŽtÏ½m„üóÇ™Zé'œêâ5š¡“jk„’(4ê-åb-ˆcZ~î™h£\mRgúU*Ap’¦-Ë^±õŒÏÂ"d´WÉCÄ#gkõ-4	­§ÇŸ*² ,\ãŽ÷Þ5ŒÇÐöA,¹ÈScûh6©yç{m;Û»~êƒe_r 7ª.x_…w£Žu¯Ú‹‰ÎŸ…Ù¸X×™Úù;’AÐ±E?§³åCäíGîOyJ;3˜ƒmHx}y5b—7a®Ê^Òr[Ð¸ûæ‡˜–Œ¹}¾Ã'D|ÀÁWÒŽØäÀûÈ}Kƒn50£Ñ²ÿÛü>~E8}H]Ý2ñV]4‡E³L+»PÚ‰vyµnæµ†à/N”§´xœ…V]oâ8}Æ¿â¾µ•€¯ŒTM»Ò–VCwvG£Jcâµ6qXÛ"íßsÂÐUQK°s¿|Î¹7q»‚G&—“+5;~”ZÜ>Ü«>Ê5&4¢%;C‹oLw:j,#=h§7\°‹Cò+ïp	UƒRËï‹Ç§å|™â¤X?vì¿¨	JzASÃ;›ñg¢49]pØêŒGÖÌ¦.Xó™þ¥‘£æ÷‹b˜Å·‘ŽÑ‡ÙT.vUEå6ÄarÐt¾Ýù®ò2ûŽ._õ\VÔßèŒC¾‚)¾uÏ6ÐÉNg¬Ü5ô’cÍ^–ûnéeé{‡0ûÉd6M—7£vñ¢”º»_~ù:zž?.:ÅßJOñ•k&jøhcwì†ÀP íÞ#ˆ²²(4Ä¿Úúrg‡¨fLöÙPˆ¾Êð›ÇJ=Ã¦ãi«=HŠìÉ’x:–þœ} [í•˜½Â%ƒ‡jŠ½ä·ºÆâZtðéjH8‘¦Ž|JÑûÖnr5Vóu
ßEnmQRƒ„Üþyqª¨‹ŸTn£-ìTW:²K½{àioóœ*ü–.ÀÊ:Û±¾uÃ@ª³=Õ¡¬žÞ˜„¢þ!Â°Áe 	X•èoa§ö€-Yäi
øß¶¨B¤°åÌ®t¤œ56JÇmi;W SêòÚm˜D™cj`J[J¶5Ä2%¹2&ÃcVW+ ‰¨œ'Ñ4…^kHDõòÔÂ)´uÖmÈºc¦B.@±¤O„Zý™}éM&­^º’t]Ik—[Ç5”Yé@ªe—ñP%“Ê{‘4ê².y6ÍèÒØio†¨)òÆëejs½÷6òU*]+0¯GR^qlW½³¹Þ„\jDT»e#P`N×ðÆJ»ƒœ3àâË"!…IçKQÛˆÇÔÏÝLTÝl»¹QïÎ?ì–©­ûØtbñü‰À@¬Çô,%âOö­ÇvÃ•üÚ,!µ]{ptŠDv]·j~oœ¦rÿw
§ª¿H­ G&†˜¤ÖŒF~‹}â !ÖÙk£Vu:SºóÁýQš£žkß³$§“<e9›ø%	Q{á¿Aï×Ff§Îqžu
rO÷·-t×Ýè÷4MÊ­ñH™×=§y«uü"l¡ýO1” ž¦Òm?ë–…ø
;‰Ð=™jÞû®-Ñ—çY«yÓ®ü–åU°Òqè5h†[=JŒE·T¨äè¥Ôý_·O¿ß÷Þ&%Âèb›C<ŽxiùÖ¾´<‘Nòƒ™ë)TÀCýpÞ÷Ä½[xœ•TïkÛ0ýœû+ö¡í§Û×ÐJh`ùASÆF)C¶/±†-y’œ,Ð?~'Éu“´¬Ì_,¡»{ïÞ=Im*Jhµ¢ÌÙ¤ÔëÓÏgpõú˜]OÇðê(\’ÊqömJx£«JðfÏÑŸ×bMhèwCÖõyá£,ÿmS:ôÁ°ü1›/–“e 	@2–áÄ#ââ	^æ´‘ð!ItãêÆ%+m*á®.W•á&Ãòð§N‰\¤%ùÌÛwsŒØ&©TÂì||úðe¼¼¹›,î'óY×€ïáŽœ‘´!‹® w$Z]±1*6ä©ÞÈœ,øQ>ÊÑ:Ód¼¦À=t’ÔÂˆŠ”=’pš‰úJ¶ÐM™cJ/l²‚Ã3Ž†ñ”þñ‚7^öOg\~®Ð6YFÖöñ€CÖ¶B{­t¼p+ËÒcÕF*G9ð„DVti®Î“´M]kÃ!+hØ¹  2Ìv4ÂëqwG½û‚kéÚI­"¶%×òõå¥ZcŒF§QùUÙÇ_V«>2³8ÏôæªÜ¡V„é9'ãÉp3å¾y+ÐÉÊkŸÜZ‡6z“ÆÆ‰¶%9ƒ‘Vc*IR™[dµ4
è93&yÄ4 ¾˜ðm4¯zl_l1mxDÆ7n]ÎpÙÍ‰•vÐüØ;ï¸5›h€ËòE4Þ¡Ü­ˆÉ´Æß¯§‹¯ã½ü	:v»T¬a¨…G-á|ÿ%ð_€=ƒ†ž£ÞŠMtxÛGkØNŒ‹2‰VÂÿÂÄƒ'`ôõ“£|ð^rúFÊ8ðÕl_Û…0îÙ#áåe¾1ÒüÝKÕ‚æ1¡cxœmRÝnÓ0Uÿ@1â†ÒÇ„¶VZÚõ¶l•€Ý4.¶‰Èq¾´©ÙNX¢W{€ÉOÀ‹p³Wàï‡vB‹¢Äù|òs¾ãß÷~Ý ªÆzA•‰s9ëäj{ëp]€NQ¤ðöÝ1Âéñ‹“3ðÕ‚Îž—¨Í®[˜R	íÞºÌP‡w «ë­çë>;°ŸbÅNá}º@]P†1Oö…æé¾A, ¬?(Šl§•õjF»j=mýÑz“Ñ%$ÈÍ¸GÐÅæTQfP‘À}¼˜ÀÈ}Œ¼½½Á.HÖ´ä’}†ÛÑbl·ŸkéµYmTÉœC„Eà~1.@
™[µGþCTiJ–ÄþlÖzýI™eN~hFl·órõÏùdBnŽ«G'hÇ
ë>›(2&1ã
ðè!œÍ¹wËÂp)hN"Ÿ	7tÉj]“§Xøh¥€•o¦±£Ñ‚&<ç†£#IT(YñÔ»žžÓýB¡@ß˜(Õn³¯7¹¥(Ï–$z%…Q2Ïí —ß Y^{É^AFýò&1”í]dÍµvÛD7ËeBóÍ4†Ävž5Çæ{çÏÝfÇ~íNº>Q{Ý7Û¤·JÓÜ©Óþd?ö.ÿ¤L
mì6‚vxœ}SÏkA&±vA=y{zðÙm"é¥$Á‚©Š6‘¦"5Lv_6Sº3ËüXzòàIÂþž¼ù_xû÷è›MÚbœËÎ›ùÞ{ß÷í›ß7¾ÝEžb€"¶Š‰ˆv9
°$	Žeò°ùÈï\Zó[÷Ö!€!]AÿíBo‰™^Ek@;ÆœGØ…÷; ÊFqÔ6£ó !@¸ttè{žG9Š¡»U‡0?›ÜYõ„žk;I¢0a‹§•»¿W~¶WT ¤Dwm”ŒU)›ÁA!EcŸAN øP}¶ágP|­Ö+õâ¬Ú;­ƒT„Í¤2a´0‘*e&ôýÁ›ƒ—ƒþÐË¿*d{ÛÿrºZûèÂÁL/Ï•´»ÙU­ðšÔd$“‹Î…e™ƒ)×ÀTbS—@û”‰˜©HÐ—kOK6Ìpmx¤ÁHÈ”ÌyìÜÙ´Kj÷$¹£aüXƒFt?z'™B­¡¶`˜a´h9ÄÈpòc+l¶ÂfØÜ
‰…³ø„§6aÓ1*g-Õ~·dÚfK?5<i´Ze-ò´4`12äm J÷hèëí;B˜€=ÑTI!­.Ý)¾oüòV¾ŸkíÛÿ˜ÈâG­qõ§vÿÅºAß$›îÝ4 ¤5™51ŒœìÂ*iT&\éþõO‘E)Òåƒxœ[Ãˆ[,¯,7U75/¥´(1/9U7'?]ÃP“k¢¢èD{é‰)yz@u›”Ô²ÌäT;…h]Ýô¢üÒÝÌ[0ËN¡FA7]Ê™lË7±ŽsòFqF…ÉgoL^Ç$Ë­™§Ÿ—ªŸÆ5ù“‹BR%×d9æEp}VV\˜&9C2Rà®S ‹+d¦¤æ•d¦e¦mŽ`•gœÜÈ–1ù3›ödöF. ¯oFÇçˆ>xœuPÁJÃ@¥Ú²(xçd¡š¢T=”ZŒ^l*"Š‡m3i’lÜlZ‚7ï5àxð<	žý^½™MBéÅ=ÍÌ{ûÞ¼ùšÿ™#þÀC…àbL*+ia¸¼tÐ· }Ù2ÁLá³å1Û¾ž0ÊÐ°pÀzØ¸1ÔÄ@_
†á~#/šð Â¤½%º®+² C£Ë|*FŠÑÍæãïc’ØafªóÂ»–ZÆ»3¿SZõ:ùÇ4AôN€=f'8|õG BåB x_PB‡G®ï"%Ø‚{DW„,].‚%ØFJp‘&÷qhr¢LÀ/KÀû¢¥Ô‰¿Í.®Vám¹2±ä°·3½D,‹ëy´—âG˜W‡­óS³“ÄÊ©À	Êt×”–~V†`¾&ãg­–+|j[<’A$•›¹¿jK9\)­åU»ôôÆê©)â‹%xœ»Â{‰‹?¯,7U7­\7'?]ÃP“k¢¨¼4„§ «œš—¢àæ›ªà–Y”[žX”:Ñß["­®`“’Z–™œj§0ñjLÁdF-F®ÉÙŒG™ÓôË'›2ýœ\Á¢Ä”V>y>ËñÉ©¬òi0•¬6 ñS¬:b ë`â
%ù
‰@^Nêäµ¬ Zlò Ê­ Õ;âµxœeOKÃ@Åïó)æV=lÈ¦ECÀCÑ »ME<l»“vÁìÖýSüø&AK©ï8ð~oÞ3ÇŽØŽÛ[Ì—¹â×p÷_ b¾(õsaA†dÈÉ@(q8¢X/WQ~êV“B!;hÞÄ²nªf¤Œ¤÷#9O0x†œ <”ÍýsU¿TKq2ž³('²ÝoâJ 6ö„­u]=%ÉR>cižX·K†ˆïƒ#ï‹µ*øfFY¾‘,k%gœ«Œåù´eiÊoÔt»•³ìú <8m‚G0XôAÙ€åøÙ©‹ö´5‘"P¾ÎõSyÖ÷²f¿êúoÕZº€¶ŒGO}Ôàc~§¼IxœTKOÛ@>3¿b¤x4Æ	Em… RšˆÔ<„)j…8lìq¼ÂÙE»ë„Hýñ]'zé^ö9ßcfl5ŸQ4%=ýDÆ-Z‡pñÎ v=ˆx€ÚÂoHd…ÊÐzaÑ„åRQ†Ã»aª•3º,Éà:rmêK=çãK112H~Gã¤Ÿ²@xÏ×–`ß3ãkæ}<Ïh.Sjã}é<·ä.Îë¹0Ò¸Þ=À~UT3¡"Ã‚Å¤$ÿè à{/éÞôÇ·ýÑpCíÙÿÇ¾gí˜IFã"}vkå¼ÄÕ¸e’ú§@¹†>Æ‘òwØíŒ/šÏÍÞ%<m`·Ësë”É­?j¥&É/Oš Ñu Ú¶{	»
¹¤’>‰ô‘­IµEËÚ{¿:ƒñÞ«Â9{×©¦¸e‰¦ª#·:$Õ³™OáBºbm¬	_':‚ø¦Às}cÜÄMÙ5îÙFøöóª
ÝÊR®\Uœ5œ‹²"”\JÖš
ÇnÆO'8‘ÎbÆw¼XÊ™tÂI­8àƒ¥N]ÉG&)qAûŠJ™ IéjZà#Ee#°}>õ˜/„¾ƒ<Úê`Ë8Gx)õ¡)ësœxÍ¶ÊÞÛ|QZhlac»´qÊ›TÓØCpMbš³6R×è;©
ETXjýøÒ¶uÇn˜ñ ùü%?Dáji»JþM_?ßfd†Õ¯d,Ì¦ÁÃo¥²ü¹ØJ:‚¿Ytmj½™xœVÛnã6}6¿b€>h³k9ÍkšXlSÄ@cë`Ñ"º”DÅìÊ”JRvôã{†”äÜ"X‰erxæÌ™m6k•æëÂ)ŸjS¤ºH{wu!nÿãböññ^¤x„9w˜RZ*SÐìË£¢éåœ>ÕëµÄÂRyššB5ØUïü_—;šÉµrÌÕ˜¬ò­5øpmå‰O9oÛ‹j"Äò÷Ù|±œ.ƒ÷Àày£¬S/"a*tJ%¡›Bmt®îè9MMï›·7ÆéâŽþ¡ÔP|£Ñè9Íx-µr›fÚH»ãeÂ€U‹8R«d!³J±ÝÃÁnÝú¦õiYÛµô·7åÚøšÂë‹?ß/?}ž.ž¦óÙ ÇðKmÉ¯T,ò¥W½QfLR9Èð¿:
Ý9DHygË­70qÁÉ²Qku,ñlÑiè•%íˆñ¤¯í.^ËeŠ”èý|…#9Nˆ.wêïkºÄ—KÎÐcB´ò€iVÕù7:om®.&bZø¹·¥N%Þþš'8ùJuãum`'êðÎ|·Úá¼§­®*jñÎÆáÕÑÛž_Ùe'ðì£ÚÕ-àÄ›§ï07>€xA9­jÔªÕ’%¶-X9øéˆBü¹!×æ€è0†Äôr)Ó†j£˜­S€•måÎQ,
m^g„Nƒ²’¯î§ó˜H2“ÌvaÅòŠ¤SŒZ (kË²÷æV{_ª@Ñ3ïPÔC[Š¡§®¯ÅÙ¾Ãúè³òVƒ|p{¦„÷Dû„tLèi…¼ŽPVýÕjB½Õi¡¸Prø]Ä|10ÊŒ8Ò,Þ7?ó\pÀ±wöbì£§åÀlLí÷‚ŠQ§f¤{Â.sÊu©óÐUaÂÐ0abö3{ÌŽ'³‹À1Ë¡œƒ÷ '÷í®/ëE_jU¬A'#-	yn…o1‰§ÓmØ¢£‡gS3Mm=
±g_‰á×*Sò§«MÂy99žDÙ“	ÍMµ‹%÷0]+…¶ÂWI^¯yl‰ûß>>.~½?¸ÞÓƒtG5Í…k;Pìz©K)KVh×T2vÂ7Soˆjq¿ÉÓìDJ×âÃá4OÅtö.:kÇ'>Å˜kvvØí+˜MöM¢‹ïðÏwÞÕ›x¾Õ’Nºü\€²ëõ>Ý]ßwÖ¾ß!v×~ß£íÑíMwè´–Þx:;:sÇÔs—#‚%€›2Yðð’\àÜü˜D˜F¹ïÆmWY}bù­®W\–Ýo¨…´~¸uø÷jS¡Õ^‰ù'âá$†Yxœe’=KÄ@†9D!‹"(X)Š_àúÑŠ^£M
?@±‹uwr7˜ìÆÍ&*þ-Ž´ÚÙYÚheëÿð¸Iî5°fßyæ}™}š|›ÒE‚œ´Ã˜“âÒÙxic™õ¦~Ãjû'{¡Bí(º£5qŒ¶÷0Ó{™Ý¨{ ß³[
’Ø†S^À-p^x†±<KQRDòÊñÖÔLpÊlE‰k×"“»4w<26n»”­]OìO”?ýo’oÉV~µ>Êû¡÷»0‚®(HwÀuRk:V$ P…u©ƒ‡ƒE¡Ä9ÅänVüeP ÍÈhvEq<h
ëHqÈ5]æžk¬óºLTC3gsér‹«Œ‡ûGŒ7_9:üxWln²é}-5¥¨¢3
oÀ›¿ÐæJCD«¬ïÍ¤µ¨±–')ªÉ}_¤ÏÔ©T|Í!†.^ûv×‘I"TË²©E'*òëóð\«üéÍÿZ"¬ù®U¯d}¨‰•Kß¢Èóá‚xœÛÁ»Š;¯,7U7£4±<5s"—âD-!6(Ç1ÊÚ¸¶™13$#³X¡<3'G!?/§R¡<¿(ÈRð «PHI-ËLN-V(.-(È/*ÉÌKW(iHKM,)-JÕã
J-.Í)
ä)$æU*ä—d¤Aµ)$¥*”æ¥¤¦eæ¥¦lÖeâedƒ˜»ÙžY‡êŠÉl Ð?q¹ºxœVmoÛ6þlþŠCƒA¶k9Í×¤´)j M‚96dABK´ÅU&5‘²ã­ûï{Ž’eË3ŠmKäñî¹çÞhVKë4N|™÷Ïâ]÷âæêËµˆñ³'J1M•Iéæ§/Š&©2^Ï7ôÞ_Ú<WåˆJå«ÒàÇU¹'	YçË*Á¢búËÍíÝt2Šƒò‡•*z[¡ÆJDoSµÒ‰º¤‡xEß(ŽW°jËØ*Ñs<bc6J¹ŽgÚÈró(z½ÞCléí|é/Ã¦­|QùxnË¥ôïÂú£®§ïœÜÝOnoZ Œå£-Égªv®@Ë#r0ïà6>'­Ïx].ÙQü‰¢´+È¸ h„šµÇÆXˆ{È´ž²”Kå¡O;b}ÒÛr/å†fŠ”†Ò=ˆI†#	Nˆl_½œÓ)>N™Í7ƒÁ#Iz]!!0Ëmò•ŽK›³ ÝrU’(çFÁPw¢uD²F‘ƒQæ´–å¸Òf!¬	lá5^ç¹\¸‹ã:áºƒÆÙ&lƒÂ¨ :¦Y5ŸÃó­x©‡¼·P•"ÆŒ;„³M,ÏÎÏÅ~và³wÇëÈì”î´Ð´†ëwÀD¯A5¦û›—mœëä¤mr†˜eb¶d*gù–¤ñ* ;Hh†71$ÓTº€ŠƒGújìüi•§!(l¾æt­óœÒjYˆÞ1¥Z°"Ôe‘ËÔNûŒ¤K´=&´,[ÉŠå§€2xo½`÷‡öGÁåºÌ8w7[£3íäÁ†¥®ÂæH …ë6|]Ë‡¥ÛnQç™ª& ª°¥gº°~Í£E¿9k".‡ƒãQÑ˜nM¾©:ÞªID¤\Åi€OI^/¹t¯¾úr÷ùz¯“é“tnIm6…Óä3–jWä²NûfQ“Å!’‡)T#:¯÷›V,Nh¿uîtWìµ Âƒs™]3e­ù6Ë²W Ü`{™Vý{¥êCÿ×?»ù÷dW‡npÓ”3à.ýÔhå¢-·M†£|Ðç‚©UÎD>8Ipþˆ]t47tî;ÝŒ²m¿èPÓTþ‹Ó»^D—xb‰1¿whv zÀÅÄs§Þ2³‚f2å%9`ÜÀJ•êR%¾iq´Î”A2×Aç9cSœ¿ÊÁ†Aõ¯mlšíZšPI<þJA·„ržEm~dÒ®•ºt[ìø²ô-ˆ=•OÇ²¡¶¹«º`¾Nõ"—j§)cÙò?ä¹èÄVò$äú«âŽÏÅ—çu±´vOÊŒ/”î5E]Ï~6.1S‹º4Æg¥­cÒ…Ñsô-z	Ã2Gý±Êç(‘>z†‡ÌM·zwcóºC×é>j´ñ#¼Žž
q‚ŠÉ«×’\›ê%Deœ]î­#‘´í.¡`•×¸¨8ÚôùE–‹dn)4âc5Š^eœ^p@ûàôÊÎûujlªÁã…èY§aøÿŽŽ¢á Z/&ÎœúÜ>ûÓû“›§“Ï×7·#¶‰]mïƒÁ 7Ç¦ØÏø\¸`Ìû¯p“ÃŒ8§N^~5¯à
´Ç—X\ì„œc±C¡°ÊbÞ7â¯n0îpÍûN–~;1Ãmãs¼Ò^‰¿ÄÖµqxœ­UMOã0=×¿b¤=”.M—îÞº€„ ¬*ÑRQöKˆƒ›L¨…cg§Ð¿3N“¦°ˆËæÐ:ž¯7ož³Î0RÆ£¿ÎHiûp0ì‰“7!fgÓ±ˆèæß	 ‚ôNáaÂVHp­bìP»»I“@!ÉÉ[H•Æ‹ß³ëùb²ùC»5ºïE—‹…x{Åºp\¥?…»ˆwNŽgß§§}ˆ4„Õ½ètÈâðAYSÝžÍP˜)³Ú˜íe†E.cj5ir›=[ú¼ô7qr|9¹³‹…jy/ÄÅxq~3™ßN®gMgÜÜ¥uàW³SÜ’j¦š¤ÆŠBÚLÈ»4êOÙølá6
ß°Y9,Jí™YYs{KÛU¹tÔÑª€Œb¥·n’drKT”gOÄ+
‰9b[ü ŸGð‰^>ñhŽz} |º`©müØö;o3ì`’BY(óŠ¼Ìß»»l*ÙmÐ¡5ÚxRZƒ5zOÖ=ÒjO|ež[ç«zäŸ¢ô¥CxZ©x%”‰u™ÛÁ²ô`¬­2å1!{ )õnç0ÿòüü©ÌÕ³©ˆ­ñÎjMbú™|ªÀ„²&·DH*YšSe0!ì×AâE-ÛÑH´äLo+R»ßä8‚£>ÝŸC–oè¸aÉc”E®z’CŽ±'iiæ«–o¨ñZß\lÖO*P£èöZóvvƒä¾RÇ©DPŠm÷\rg×*Á„Rºö	å\Ô„¹šÄÖ±ªÙƒÓ¹ú‚á©ð5:› V¤k-:r-•–KMJRi=}šçr‚*@ÜVÖ&£}0ˆŸ+4ÜBúò+è²C·_)ˆ9U©"ÑTÙV“	c-˜wˆñ¯³éüjÜºö>Â7ôÕQ6u{­ öi·5Ïõ‘8l_1‘ø oÝœ»Ó/T0„JzGû©EW£·wÁ±Òÿ?8þo‹pº9{ÂÂf8f`tXöK	ºÅ¶ß­¹¤ƒaÓŠ]þ†Ñ|Í‡Ž»øAû±nxœUQOÛ0~®ÅI{€ìµ¤
úPi-­¦MMN|iÍ;³B¥ýøÝ9MhŒi~©kŸï¾ûî»‹Y—˜h°H|)]H
»L¤R‡Ÿúââí%Ät8‰„–0o¸€æhL¿NÆ|C¥tÐÖÈæ“áíÈ*¹Dpø«FŽijg<ýúº É	1ÿ>½™ÍÇó3Æ½[£óx/ D °à Î®u†—p—$F–è+™Vuqn¼V—ðÍþ^ôz=2sò1Iµ‘nÃ·i{üà­áƒ‡{!®Gó«Ûñl1¾™vhÐ-§qÂ
ÿ-íÜÙ2Z7@9]Q9»Öjë¥¡øàêŒöx"Ä‚.ºÔ*é(³€´‡’È`	<WÊ¤¨É“{•­èIF/Ä6ê!>à”þœ2•gýc°$tŒAZØì'¼nm>õ	Ò_gzü7W$&ÜeÐâêl´kl.<Ñçˆ¦G¹ñ¯"ýh³¤ÛèÔVÌ"ä…\úÏñdß'QáÉ]º|G<.‰šÈDåX1’¤¸RÉ´ ö­+eàd#dùiçDUP´¯‚¥@ÊÖ_?ùlýÓmÌ,DQtºñªé¼×Ê&‚xU*ùáR¯Ñ ?<ÅŠÊ­½è5¤=ç©ƒoë“h(lùk
xà!“•LuA‘<pæÈŠ¼rHËDUè’HO—‡±“’èš ó\Yœ-
"¦«wÂlú˜ä’»šS ÞD¯öÈ²={Ê·«Ëu+¶eaÓ].ˆä$l>7*“8ãRueüKÛm+Ü•”>D‡Üâ´½u]—YEÅ'ñÄ1ÐÈ†Ž¾'³/£™ôž¼×ûQ‹«šZö¥"âhw°$â¼5ãvqÿÉ‘Øó+D‡„\ø¡aon^6v?¸\tü×8pÉIq)¥LƒŠ„EÂU(õ±¡´Ã,´M÷¸"Õ×žA”Ui7	pûšñˆ±yL4~HVŽú@ Îê?m´/xœ’QkÂ0ÇßïSì!º5…½Êˆö¡0Û²ÊØ¢½ÎŒ6)i*ûðKÛ)v(ì^’\r¿»ÿ]Ô¡$®ÈŠªâZ¹%£ƒÜQ=zÃô¶D³e Ü¨ä¸uUˆ#J•kS
+µB±ÕÅ8ZÍü}	~Dq’†iGì¨ë™š6ÀZ<öx¼Ä3\sOyiŸñ9wÔª±¼O4íü€EÎ_ÃdÆÑ™ÝâÿY™ËˆvO¸×µõqåvÃkadFÊÊ\R†M-ÕgöÎ#Î]ÍFÌ„>@ÜUs–
'“	\Uáü8°”l—ÃP¥m3öÏÑjdªÝGå¢)ìØC¶ÓES*æ¡6Pì«ÖŠù«âè´öùOÀP¸%'ËisGV–ä$ï³eò\ŒëþÚ¬=wpA}z¾-¦¿ôÚuØK.'Äáo]Ëzè0¢·Ó§L„±¨ó®OÝuÖ´?¸³ë2éoxœ•=JA…ÙÌÌ,42=€?¨°&+æmwSÐ]Õt÷Lddb6ì=6ÙKy `Í
™˜Uð¾÷¾úÞûÚ?ä>`ÃXLŒMãÑÙxu|ŸƒÃž,fhà†rôf âVR0…„A/@c;xz™#DS:(†á¶Y`"åzñË€ãÇy¥¥›ù{ì$59¢¥–ì?ÛØÌÑX¬í2%äâ°ÂŒ¶ ›Â¥Cè$—€g=wàT–Á¤GrÊé¶m’0!õvÅi’.õix «+ñÛdððp-\’xig³Ó­ïªõNuõYèó«uu÷8µ€È³”xœ•VÝ‹Û8¶þŠyëêÀÁ=-»…¥›‡@7	ë\¹RöA‘Çk-IN6åþø›‘?âì:¥gH°¤ùþýfds¨1õ¨Z§Ã)u¨üùQÜÍ=B¬ï—"¥G˜wjBÖ¯á‰×ÊÖµ4¹Ù÷õf›­²¨µÐy|Ø\˜ù ·9´ÂÏð#M½þ‰w·üÿþ…ôº÷g‘$@K jHb0Ñ8¬²Uo`æ`ªÛxÒNh‰JZE]3]ã}qwÛ•aª·†7›YÝÝÊª²JmMZ¡y	eÔ
0s0õ&kôT˜êœ¼zG5ÝûDÒÉcº×FºìŸ…xXf_žVÛÝj³`v%^ †ú€hœ4¾ ” ˜2´ø —A‚CßVl!¬A°jë&Æ2$ÁÞŽH#dmë«øv_ë<YÁ.”5ÁÙªB·14é½U:öŽˆäõ€ù7Ø¥Äe$ÚCŽm¡¡àMLm4¸íÑ^ {/¬«%gÈB"&,Å1ÆQè¿iï	IžóÌ¶_Ò¿Øô{)2¤®<%¿”ª¼ž§ÃÐ:ÓÁ"¢hã¨HØá¢,Ååkrm^,çA¡â’ÃBJbŠ¶\[¡ïó=×ï²(WƒŠÎkycÉq2l\G{•JBe}tÁj­ÑêÜKD@KëÃ'æÙ‘brHY"•\Q<\²Md÷8`ÄØ77b¶yh?ÙI÷BF$­
£`Ä(”ô0?†TÉYlqêþÞx7úu²þö8m„Ár¡±Ê°* õÍÙì0c`y_Š„8¯_¸nì?šj=~Š•‰«QÍ_M€S5Ñ‹äXj¢Ã†š¬FêËìÛ"0æË	c4&0±œ@F/ŒÑ Dê.`CÍî[¥`ÔÔÓºªmb ¡N		g»‡Íß;v2;|;WFvtÿ¶1nˆy„C—gŸ6öSém¹€#¯µØou'Üñ%eu[O¹ŽÃG•9ÈJç°•ŽÈH|¨m$s}è´"¹ß5L264“§7²ÆÏÔã|Kt…‰÷Ñ¯¥’l;Òê&¦6	d,ÔÙ¹b¯„8W-Štö2ŠÎ_`Õý¸_ãîÿ‰mök±ícçKŽ}o™Ý“Ç	q}Èmð€…¤ëÊó^ä*[,ñ•gí?÷Û¯ËÉ§ÉÚÂòUÖMCúÞù6|ï†Û âýNITju@ñä&µŠxœ•VßkÛ0~¶þŠ{ës`°§J—‡@›š¦ŒÒÅ>Ç[ò$9]`üN²¥¸3¨¡Å’ïÇwß}'ELæöH/²øôõ3[N=ŒmnîW,¥‡É37Ha;¬é…Ö¹j.Æ¶¿6Ùv½õžÞûù€Úà»raàM˜+Xx9^Ãsš–¢ÆåÂý¿†¿–Ð¿¿°$zÈ‚œÛå"†hµ²*Wµ7oaâÃØ·5ä¾ÐsQŠÜû˜ø0òµõra5—¦DÖ(÷¶ò~Î¶G^Ò˜r¹èÉgÛÀ»Í±oÐ´<ÇTäkDá]$ôï/Œ}_mo×ÙÓúa9v4?U8Ý:ƒXml„º¡à–3gBqr%­Vuz.®ûÆê.·ÆEAßx0n åÚ‚*éå0œ	ÒLäL[ã€ìZÔ¥Ò¥Ù?
¬áGÆk£BÞÞViŽH¶$JàÆ¨\pKæ¯ÂV>Å:@Í`k¹íÈªñÑlÅ­£·G«‘@È'•2¿[°ó¢CX0Ý®ÖöUòMä%Ðc´Ñøsö3æ
JBûŠ(/g ?‚bðw‡ÒF#ö.²«7ÈB1¥ÀšHÁ–":oA¥plõÛì6ýF¼lãÙÀ¢®çs6©}ÚOž¸Þ#E<©$ìŠ‘¦Nõû9£‚÷Ã8¬“Íûñ¸„È¾Œ¬Kš!÷R]ÝT,!ZÅÞÕæòûP4`_|Cü*º™7‰ŠBä$7Ã’×JäI¦­Ð`£ôv]éFÓúz]áôŒNGW@Æ¸~¼‰òIý^¹y<ÖŠSaÔ\AÓA%è}×P§\žÉ£Ó'½tà:g"˜ÓHR+úR‡Êñ(Çá¹BüLŸfLÅkÒõ0ý½úY²–^‹²0Ï‘^ŠX’^4ÔnZÈ®Ãþ<:5(=uúàzá˜	>N§uOŒ¿Mþo•l³¨¬¹/m$uJž‡ƒcâô<Å(Ü>[¼­F»ÉS8ùïüÞGðL´úžÕÏ›ûìn5ºü7
VxÓÖ¤yF³1ü¢ÈâàïBR0µ»Ù?løôÊ»sxœµUmkÛ0þÜûûàv«Óíkh¥Mh`y¡	c£ôƒb_m¶d$9] ?~'ÙIíàÂ^˜ D–îô<÷Ü¤¶9Å2•=ýtWÍ0¹ æÊ›Ù~Ž­-Æø@"µ(TŠ~Õ¢Û¦´’ŠRœ|&Z9£³Œ²‹´ŽŒÅ•6võ–×g·#ž™àÛ0/Œ.È8IÁ_í‡bidb{ óo“él>šrà#Xz‚È3ÅÓ/SÚÊ„®OãxSæBñºHÅ2#|Áøþ	Nxðž.]Qº˜sá®.‡ãÅµ7Ð¦O wƒùíÃh¶M'X<¬#8Š«‚ÅµÜ’:GK*È…2%åäj‡Jäd‘øÐóÜÉ?àØ·lRéiÈ–™"r¥ñÚZgÊ„çÔë ®êÆÆUØmÂá~l³Wa8 N*J‹þ<á´Ùç¼´—¸…lˆ4—
“»$ì5½SúÙÇþ¸ðVÏz8l¥ÛËxNašk†ÃÒ²2?”~Î(]³ÕÊï‚ÝÙ•ÅLì8…è4³)êr0¼ÎH¤P—†×,“åèxÝPÅ™‚èSîa¯5±IBÖîÏ8ò1ÕZø[o_]›îK½
0~ó¨…z0UÙ.Ø²(´q”6‡‘J[°”rª¦¡Líñ}¿ÇõÏKX»ÊµÑ¨]'ç1‚‡&ª†1}«T×ì¨¡^·°5æµ†<šTëúD/S¤ü4‹Î1únµâ¾?ÚîÑR*avQƒBZqFðþ˜„Ér1répÉsBÑÉÜWóàëÍxöyÐ¸BÞãœ¯®^î¼ËÞè¾†1´…Xq­™õáCó‰á¶ï®Foø{¨rn»üÊÙþ3ê÷ÿÊÙ›ÅzØýF@ éËã/uõ®mÿDÕïÞL·oÍðrùÖŽà›u`À·/xœuRÁjÂ@½ÏWô ¶¦Ö«´iSjTJKéa“Œ54Ù•ÝMZÿ¾“ÆºÈìÌ¼yoÞÊª Ïj!MB2õb‘Æ¹J~úã<\< ÁtîƒÇäy ôpAVgT®YÞæ„)UYB=ƒ\‹®ØÜ,?‚0ZÎ–Õ!V¤}A¯í<Œèá}õˆ Ïþòi1‹V³0hj¥Ñn¨;¿³Šäƒ—<äDÊ‰*
Áaýi²¥–®®%Œjí.@f¿â e³ZdIcf°ÆVé+ÄcBÊ¸»C,ÙpKÂ°§Ø§¿	Ž8ÕâïCdV%ãš­à‚†Æùj90¥P¢)“„ŒºAb"/	U™§¸Õ™´.-
Uò/;±%t+m]©$€ÿ>G¯~Ç­kŒZ¬ã>Ïx™d%›’ÃœD*âœp­t!ìnºæyp…¼ï¨=í ÞçþeFBÛƒQî•–†wnÊÌü ñm³6xœ}SKoÛ0>‡¿‚Ài¶:mÐ[±V4ÔA±¢ØA‘éY›-¢œ5ÿ~´œÉÖV>Ø²ÉïA}¶Ûš’­ñÁ´uÂ¥û“˜œl0Åîb2‚/ï-€ÅtžB"ì›0˜`&{T¨]ÝTs
ÊTè
<å´5šÐØÂùZã¬<ã/–{ÿf=-–«l–EÆÈú¼%Ïô†=îéñŒ~ˆŸ{ì¯0à.Í¾=ÌVëÙrq„éÖ¥áN`­lŽ76ðkzCIïiãº$èËY>èªÍ	™B0ö'c‡košèP IéR¡õ»O¤ÃlSŽR¾xœcúÒxbÆáæc2¾ÑÈiSÝ‹ èp¶±Q^ÕbÃ£Xìü©àü.Š©Õ7„dÄ—æ„ƒP—Ò¢¥ö/èå¯dsÕúzt‰ÎËZÁåFIÁ¦rú7¾^m'#‘´´È­Ö¢ý2ý3ëÿ‡Še+èIåjSÑ!(PñøŽ1 ë,Á@®ôût¾ºOOò±ÏÞì€~ÑoáÓéá'ðßÐ™“ó6iíó¿R>ÿ…–e¢Üš@ð1qD»yxœÍUmOÛ0þ<ÿŠû@»‘–
¨FH´S%ú"Ú±„I.­Ebg¶ÓÒýú&+Ò¤ÒüÉñïyž{qä"Å`…AÈ³ |VkÕÙñ#‹±á‡A—´˜üýpV\ |>;…"ÄmÎ(•±"„DÍ€Ë''« 	6›|ŽÆ“þÄGöÑ¯¨^³m%Ì6‘Oà*Tn³Ü.ÎñQ¯Þ=Ù@A±½vVsibÔ?ÈgÒÿæ}ÛkÆÎº“Ó‹þxÚ+Žë)vŽ0¼àZÌÄå”‘ñF'õ’¾È÷“ßs„SžÙ\cpVé6L#YŒ­Äw5š<±.¼LÅ”Ž+×<E‹„”îr«ôªàÎÉ:ÛšYï;Ð¤¦ËÙnÝ£{K‘$ d²‚¥Òw´Û¨Ž“g™ÒVÈ1"ï¹#ß`ž0.W ˆp…Å5B.#Œ…Äˆ€F>{UýXU‚N‡=V$:~5ò§^÷{ŠsG¹XcÔ‚' óô–€c•$j‰Ü®`‹záÆõÂÑcqÏXUOøXÍÉ ´¦k8ÓCÜÝûÖ.-¨µöÚd
EÊ“:!Z4Œu¿|ŒÏ»Mú>¢-*5ßèuã›=Ö*õeâ~Õ_•à> $„¹Ö(-ÑúJ×°1kÀd: ^­ÃÞ^ï°”Þ¸²Þao7;6`¯áyÙh‰‡¾ÏÀÞUÿ¯ì)yö¹¸Ùvñ^PÉRØ9žK½µ„¦M³æsë¨‚>YLÙîº˜b:ç–»’´÷ïèÈåyzã	IoäÉM¼¼!ÿ¦Ú”Cörš[íÿNs«½÷nÿá%FoøúG:æÚ‚Š½ÿSÍ{žraéþ	{jN¾,xœ’]OÂ0†ïÏ¯8‰€:Ð[¢&fB"ƒAñ¢nhÜÚÙv|ü{Ïºƒ±Wýxû¼o{ŽZgl’8ˆS&Ö’qARdyóº·€¨7
!àê$ì—{ÝŠ°:@Ð”ÌYR®Õ˜¾DãÉt8õ@}]“±ô’ŽLÇ_ôÞ$´–1ÝÂiÿq8™ÇÑQbîµñÞÑ|DX©q)×¤.‘½“*XIç­„µ…’ŸU^u`ðceB%œuÆ7öÆ˜#2rdPZ,Âi³Cž`VX‡ïôm¯X³ê MÚv±Ã‹NùÈ«–‡3g#ÓµJw¸Ñæƒgø4è×é-Ú"ÏµqR-Íê	Wjû`uÌ
¡´@[ŠGI	ÚCÜJp%´j¸=¥cÿ±ÿÂC ÒŠ ÂçÞhò•çü?…íÂÅq18ÃÓÕ<úˆŸ—¸ÕæûV›öÑïêÛ®àûüé¾ ]ãkµ/xœ•RMOÂ@½ï¯˜Ä VôJÔ„ &$RJPc<,í6¶»¸­ü{gE<tOÛí›÷ÞÌYTi$9rdUÀ+Jn1Xc•Þ¶o:ìî/‡±°?±€“'i!€ÿgÀ®2¡‹Šk„ÌòeŽWŒÅ/á4ŠÇqÍ_k¼–¨¾±–ƒ_ÅZp›b)¼gl8Š³q4OÃ—§{Pº¶.&;4¬D‰òÊtçÓ«ÐSJX'Å‡Ã&dÕÁ9kœ'ª(¸LÉûœ*°ášhQƒ0à¼FÓ
g,,ñÛF²&pâ±{CmüìA—>º¾éëNMN<•ÈsP2ßB¥ô;Ýài8Ø0n³QÚ
¹"jBgÈ­Ó4Õ—[z ~¸Ü‚"åƒ–ÃÉ3!Ñw1­gv€…J"c£çþ$zårþ`{ìâ8„€Áé4ð³˜6pÑl`Äµ•Õ&êmt†Z3NPB_ÜóÂ½Üxœ­WmsÓ8þî_±Ó›¡j'má˜Ëq1C3Ó&™Ø”2ø>(¶l)HrÓÇýö[Iv[hÌÑÌ$¶µ«çÙ7í:Ûéh/À_óI˜®è øEMýužùÊ/Ö>É4» šú%SZÈM§6ºr ïGãóÓh Ä>ÿï¥Pj½ôzëõ:ÈE¶âc ä²§óåóå½R×U¯Ý`ñ^SN%Ño(²W¨çñ	ÄzSQURª\(NVª^¶è²*NuïðÊ¢½èïõú½ýþþA'9%¼!Õ &g§´}èD±hdFÈ­¾lÈ×"¾¬˜*Í²$Ç°…JQê¿¥þYœú£·©nÁÖ~¯I·¬m/-Ý–ÅöõcQžÀŒSP¢¦°R“«˜Þ€ÒMQ< Ó¿¿ú±(mÚÍR9]0ÂmQ<ï¿øýÅÁM¶VÁ’7VNdV²êŠf)EQ`xûøýý^­–ý~ï 0²‡²”QHùN°„ W~‚t‡|òZ¹ÒêV·4‘ŠjÈiAšJC!dM´f|ù€9SdQáÁÜ¬JÊ‰f‚{/¿’}h”fË¬vHn@ÓKüPÑBCMä’q¼Ú<ö’Cõ a8Ç8šN’h’@œ„ó$†ãhÁ“‡¢‰ÍéO£-ïmR¢Kš5šºv§{PŠºé•rz¥}Fy.$¼áìSCáHÔ5áù.HªÉñ¢0³Ž=~7™ÎâqŒ@­0…—cc 1÷3¤Å^æô‚eôÞ§~ê‹F¯ê¶^þzÉÍµúçƒü­ðÕ
öÙ‚9†Q|4Ï’ñtâŒ¡åºlýt°Ä#Ç˜dò{&•XÂ
»#n$ºõSY”‚ÉzM$…ÖSLK˜ Ú•3+"IM5•À˜°Q¼Úà‚^—•¨œÝÖÌz9€>ôLû¯lÍªÊÖ*¬…üˆwÖr·SjV¦gâ9C|Ô.(A'("ÀÜæK™£ˆvl@ W”Æµ†ç¶õæß”#^†°
Øu8ú»@¥DLäÔ¡¬™¢v“ÉÄÔ&Á”ÂlæÙ”¹dîÂ]n…^0á™cÏ0‘´sÃÉñ°Ú’²ÉÇ²Ù!Í‚)|4þMMLNÇÐmÌ7ÑnÅœkL»fµÇ°mM¥Öx0œ£ñüômˆ§4<JÆgaÁñ8N¦ówp2}³ðuÃ0	aú&™½I :Ÿ„“°-¿$öHU-Ä%àôÚ<þÓ«ô+Àoà%Ÿ½£Uî%_x?¤*“le[Wòw>BUÔüù_i²•¯"®±È&M½ £ÒrtÅÉí:ˆŠuWÇ¨ÙcâaTj¡L¢3\„ý¾•1ÚÖ›êª"W!hî5óL¬4‡c|å¸MmbŠñÌ•ýªÓÆ¶[â5¨Ç¦¤Šf‚çêü£MV™FÔp}›ÃfV%3*îßwzE–5RÞáÊ‘YÆÝ£vÓm¦+¸Š^àÍÜ¬>Ùpnjám1jX‡ÎëäÚ¼b(3z‹~B×ß¡æ(ý†þRR˜nòóœq…o ÷•2ÂÛ¡Äc³ †·«¤
)êÛáÄ±Ý#Ì¬Éfu‡W™Ó!NG£¥DÆ,ìšéòÞ4b¸þšÑ5ºÛ,n`™úÿ.XwÚ6¢JâŠŸ¹øº¶2€ZˆMF„UhäÓMÑäÈÃžk'Ñyx:;‰ºi{y)ã~N½´ÜöûÏ¶ÓEƒ·OûÛi†/_ìšQ0H>Bg`”`?8°òcâÆÓJŠ%LŠjþ×T‡3Œ­I­‰Æœæ¿Á‡ù‰åÆò¬È!uÍÕüÕp‘˜y•³5õ±QK;LÛ2ýá‘X`èŠxœ•ÍJÃ@…)b…Ò¢.Ü(Ê%ˆ(š&)*"”P° mmuåt1¹Õ`2‰“ëShÉCèÆ•ÏáÂ·pá#¸pÒvQ.fqÏ™{¿Ãy[ùZx\›g.R©ÌAùR÷^æÌ}c×´†—Ëöi­Ú&zËÖ@³Ô3-câ¾vsÏ3ýÛ@t°3)„è!Ó!Ó‘E´ç" ”¾òúº$F±ÈÁ£ß¡GeDt×¿":å\-zœl”S1»¾:B‘‹Œ`¤ß†#Ž‰Ãð8ýœ­TC|¾ã5ùbáÜÆ*E¶ýg 	*òV‘ÞCOŽº#Ó§ü¶±êA=Êz®Ïn`L†M‚¡C$šÂJßóÉRç´fë¼Þlt´B9
_`úPì^LÕÓ²ëöTšZ–F)±ˆþ×QZ)m-þ*(”Îr…oÔ)¨w¶¦	xœ½<kWÛH²ßsNþC9;ØÁ–`ö 	{á€3wö0Üœ¶Õ¶ûF–4RËÀÎ°¿ýVõCjÉ-‡d²7KÕU]ï®êngÿïw‹€,Y’ò(6ú^¯AX8‰|Î†O£·W¿<}²ÿÓñÇ£Ñ?/NÈ\ ÂÅ§7g§G¤Ñévÿ{û¨Û=“_ß>œ‘¾×ïvOÎOŸøÓ˜ïv»···Þí¶%³îè²{‡4ú}Ä2Ÿ=_øœG’žÂtè@î¿~ýZ¡4pÐn@‘M*TF}ü½`‚Äí°ß3¾6Ž¢P°PtF÷1k‰z6h|BH®hnÉ=2™Ó$eb¨„'ÝœdHlØ˜±%TD‰Eé0p~MH¿çP…Ip°ƒp¹`8‰b–ˆûf¿µßU0”Šû€œ‚Ý‰î$MQšî3rŒ0Ÿ]]‘i”|­2BC_Zã9ÓÉú)yÖ}úDâ³)Íˆ¡ðäëqäß“?Ð,ø®3¥Üï’wôÊi;e	Ÿî=}ò 	ŒA}Þo“ù ~¶ág~žÃÏ‹öÓ'>_zRš6™Ð•©Ÿ>h‘6‰=AÇóð‰%ð~CD3fƒfb%m²‘°e˜-ÆLö©`êSÂ4ù‚c§Q$Xââ0á4h¿gÁ’	0i;¥aÚ)‰TˆÄf<Ü%}¶ Ïÿ¦™aT™DA”ì’q±=|FËt|6‰é.»$A”€‡L!ÒÝ%O¹ kÙèÓl2O95´a¢‚si÷]ÂÜ³Bº¼7©H¢pfaÝ2>›`,
|i£÷j»ÿzÇà¹Uâmãùàåx¬ˆ(tDƒV¼[ØoÇ‘Ñb—ô¼ç€bwæš“¾·½:«ši% ¤œÀ ¾#ipŸ¤ì”(´ù@Ž©9G1aæB¸&6"
Ól*rÀy¦e
MJÀç¶ªù¿2Ú34•Ó¦l‚¶¬:F© ¹T‰-ÐqŠñôI\"R£V—1Ú$‚Ÿ€“â¢¢f€aþù#·"¥tXÐTIá¾$øéo…QÓ	ƒˆ„ü±'ÌJ-³„C”³ÛF›è§6Éñ÷*ŠåáM8|8·ª¢=-RÎÀíb§#©ï"[Û„ÆF?:CÔz¯;0J–ïmo@*á’Â‡¯d=Ì•wátAƒ`Ïrui/‡Ÿ×¸wÙÎ;…ƒê	;˜v\î_Ðsx”ASÆÒz‚Jú>P Ð¤ìUgì×¹t¿ €ÁÅtÆÆA4ùÒ&øÌîè"ì7Xsèg…ò{l[ð‰„¥7© ¦­7)÷Ù˜&6êƒ§rÙøÖ%BïQ"|•Ð ŽÐ
 Ñ¹²÷·RÒ~ÑÃ¿vNÒ„0,Áoä´,`|¥Aj5®D–Y´Ër‰MBÝ*ýQ%×AX±f¡å‹Rn¯¬\5yžÀùÊŸäCw§<IEg2çïJ´=›¸Ñâ_ÃÞ*ð×âèÕÄòDÈÂ%cÊ©x–DP7€ž§ð‡1+sØËÊ†/ÿØyE-I;ÅiÿVR¬ÂÕpq²ôø©Ÿ;§.Ëô
ÿ~…¥jŒI \¨YWœ©æu%¼Á¹qøW¯^¹ÙÓú¢B$|œa¼¬)SÊqa’lNÕò W·²J‹¯½–:—ØÉÇ0úÒÅiQ/aÇprqyrt8:9Þ%°0ëž¼‚Žæ¥|bD5+:19‘^,ž¶Ü<¹çvg[OÆ¢>0¨ RÝ¿6oÕÕïÎügô§}«·~m~Ù¨e?.ü¤äšÛŽ¸Ëõa/˜õÁ»†RùÅ]¦^Å“$Ôf¡Â |‰™_·1aš\5j]- ’UŠ^É(^ÖºPõW¶}U·ª¼ÊÍ"¾¥ ·ÈH@5çnÄ|ëê¯-"ýjI¯a¿”êi:q”rå€Q&pÉPQàÑ„ŽùD¡X¸1°KÀs¹âN¢[ŒÀxNkä€Ž‘#eq¼I¨ IBI´ áÚ™äˆòLëÔL’YyÐ‚ê³Ÿ¡;*ˆËð¸†Ïåð¹Þb§²L)°š®ïÀd™rP,fî†Æ–rî£>¾ÓÉ|‘”SM^ÅÂŠg"Bí{j#¡yªüê+’™ÑIÄ+q´’B|+–O4X7QIþÜ¶FvoéèoŒoá¬ÊîY ÎœC»‡v„ùÇ„MWz@Ë8:Kˆ¥Ç¹*\šÅÅ.Â†ž–¥ô Å÷ô¯r‘õRBz…ˆÔ—yª¨	þ>×ÄªXÕ-™Ý«m®c„|WHúàú~¡Øgxá¾˜£”ª‚[ X¿ê÷zÆŸM+÷÷Ëî_Y§]î¶†¬õ®‚¼\çVƒt»0÷-˜Ï)Ä77þTí½Á iÐ{³B>e‹hR"^´ŽvnöI×wi+Ù¥õËEp°%z*¡šÇ~ùqP~Ü.?î¸{<ç¢üPžvàØ™Øbš |]j.ìGcï8°_¬ÅÖ	€þžÑ¢¶Á§¢„’[r®:Í˜ÌXÓ›ÉØì.ç#f	½/ÀødÃm <Ð€/¬yñ©€üQd¡ªçŽY¼€ÊœžÃ ––aùX@ã,‰¬žxb—ˆðP@TÆ)€:åpÁ =É¡øTÀäÒì*=%T-X/
¤lÝN±n`)l-"k×vXÝ`‡7ÔwzGýp‡·¬¼â=õƒ]ÞT?Úå]õ£ÞV?Øé}õÃÞX?Øáõƒ]ÞZ?Úá½õƒÞ\?|Õ»Ç›;+½a¶-$Ãï2¼ç½Ð#ô˜¼³†qkÚîÂjËúáfûZMÄøŸÍ]6Ü4”Ó³pœ0ú…Ê=m(f C|Ñá!va·Ëˆû·C É?ËZÓú¯)ŸàK	PÇ¬r±@’q£Ù¢q@Í÷ÝMùeu÷ùÒÿPsºú˜³B›ˆÆ®Ý…ÅMe6¡460ŸænšPX/Ìö#<•–J¸ïÃ"3¾—GÖ<$‹*©qÝ¦ÐYûÐ+ò^KŠÃ¡qSÚà°7ÖhÌP˜£9Ó
\»+„r˜¬¿u–¥kP[Ý$Êð«³X¾¦òk<MYø¯úZÙaÔîÝ_òš^´ë¸™ÖÑÕý¶îŒ±¡£SÇ•÷Jq2ì÷ŽŠ¸€4NÉ|2:°8’ýðzM#“w[;ßÉÙƒËŽžô'ÔÚ8ZÝ×3Äç2®j6;t®'îZç¬«äËîúúèÑ®¨µQ+º÷æ²û’‚Vì`ƒÖm;éM ·Ç]'E\¥©Þ¯¡*^CTÂVi–ŽÊD—
lP%Y@¾²â$¸ uã	Ÿ“¦ºÉ*ØÊÊ#j(+ ›²Þý­f»q®Ëwx'Ã3cæýµG/u'Ù8”Ô•2/ƒõ‹Sið×/™¬ÝK¨ÒR{u;
OŸìw%;òRÙ$á±°o•ý/]RõV].Ûÿéúèøptx
_Ò„P¼]æÃC˜ƒt»ä[n`zÒn?â’!#YB|œ}+/%ùº6¬[åµ‘]òÏ)'oè¿¢°M®X,^ù ƒ^o W^yË0™ìx<œFœ¦ÜK¢î¿<GQîžUæmÞü‹:3C'ÜÉqÞ2@ÉÄ zŠˆ*¤ `Ò&’±*­X²€:j*Þ"ï$é€\dã@E9ã©Rˆpš’ woá÷}”?oÐ…, #X3’,L .¨co,"¢Úk¨ÕFItOŽ=òž†éŠ†^xfÎ]òîâLÝ=¨¸M¹„¾bN!G šüÿk²t³Ã’‚³õ=o˜ƒWØ³†2ZH3ÑÂXÅ‰Í˜G7YÐ2,è¿òªÌ4{êÞ˜l"€Ã[xòðæÏnöàÕOCfA°'¡ÜùŠƒšÃYN”>%M€E>Ã‹£d8$Û(û9¼ðF'¿Ž>Ÿ<>©Z.§'`–†›“ý‚÷5RAÑ¡=µ>-œÑ§‚î ÈÉôl›†ÇÖ*ºQoiêWÂD–„r˜<TT7Š&'¡HîAwm9ª›"}Æ37HPs{Ö{­ä|óZAþèœ_¨ù9K%#C&,Å‹« <»%‡	îKØ@¸d³“»¸¹y=Ó¼îw6·
ŸÙê·¶6oZ›F;`·9s
š€¯Ë8;þøMt]káSðB5b“A_8*àÉáÅ)¹2°Ôš!øŸ1Ç&óÿž1­‘ŒÊ4‹ã(*X Î©™Î¨åÊ£uRÁ`Yç‡øµË³û¹gŸœ|89·œÛÂS<." ž0Ý±	t†kEkÏ‡3À¸ŸÆ‰À_M³ØlLš¦ùóOâ!±F«…²4ä½µF…¢}äZýòÎÄüF{Fîä¼m
Þ_¼îßtúe6J<+ÝaUñP
53l³W
>Å“íþ2;É…–×]¥>Q^öæþÔo6 ÜPtPo?Ác.²"kÓÏ9'awê†}<"LEöÝ
ùä–mB´$4ˆõ‘twçY,é`E—já’ë›=çz£Ü©‡>µXž<G_Iµê´µU
bdæ^¥kø5¿ÑÊB1åé„hqH"gx”|¼7[è’›Póljíƒ©áNWzÔ (¥ÄdÞìþÉÝVžZWuáÅY:W,¶ŒòÚ¨â¹4‚ZPk³Ôæ*h¦U±ñ%g¸X¶Ímgl=´Sj­wé›–rëšd¢e2sA¶¶¸Ó´zœË¦:ƒzPIqIÎõ¼
&ÏÀÓçÙÒ§&¡v´L¡¦Ej6hÃ„õæxª
D6@•z>ŠÆ1}¥û
ULè›šs\ÙZ-‹¼9PÏ
@sfäµ k"jòÄ†Ì#<—VMå/%žùÒrB£çÂH¨å^«Àid6¯¸’yhëVìÇÔÚ¸ºæ'Çÿ¡Rþ$ŸÀZ˜Ÿeë‰p}ÄËìP_Cg—óø¥¡qBC·¿@„µÖCÑ¥	$¤%ëBú¼Û{Ùâ…ñÙPöp#./–ó3q»8ÕáàÈÃ9{IÆj°o…5Ï“/™G–#k–œ;{ñ(PkÖR
YÍýÕWÐû–ÄïÄúŽüÿ•¤.ó‹QC9Ï|s2¯"¹D´Ä²#‹=:›W=$·=&éu¶Î“xî#èØ¸ Äž¾¹©Š¬ÙÀ!$KDøã¡ð3)~¡!êb_RvÊv“PÑNj%+ÕZ¸µ•—RÆ­aÆœBÙ¦Øu‰+wéR
ýQuý[úÛÕYÐ	ÃæÙ#iDPñŽ<T’‹>âm”|ñJÌ±Æ?è’^©f|N±]&Pùû‘€J½›±;2èÌB®JÁCÈEøåGSbü–>ûíº©¸{ÖºÇnŠO«ª\Å%C»m\ïSÂýáægëú\%Cøil\ø†›9ØÀJD6ÕW †›¿p(ŒÍÐM"7ÜÌ_ä„÷»ôà¦áb4­1U[ª£0X^/[¡R¹eIÙØÇÅµÊKYjKddÒF¦+:¨¨HË~©›âH¶­2¹Ð‘˜hYùX;h”|«•Çå~ÅcyÑ½Ë »†e‹û²E±[ö|=í%ÜÒ\ÍJnåxINn ü‘7–I4aiJ,Å˜]ˆÇ…ù£¨–;3Ô’.ÈlE9ò”p×½ªç’ å{šþ2‘µáa(õnöJ!|zbº¯)¨œ|º<³£U6«`¤óÍ1øÿgeŸPÇý£ (*fuÃD¶q|Á’S¬uK[-	ÓèÍÜDf‡7¿˜6[Ör¼ºc¡ °Yé
vÝ†¾ZGÈaÁ†ü®æ)ž·,iÐÔìMtÎ¶½€êQèXLä¸ùà6yÞë%P¾†Rß?YÂ‡3(Ï°^ÔñUo6Ž?~Ð;»gP©1Ò[@m2¥uEü)Ú·<ô£[/
±Ò“žçÄ6»þx)ÞèØ–¼ûìææ KÐý®Ú(Æ]ý®ù‚»<MPÎÕÐòð˜O!}6ÔF–úN|þïú
:ù@Ãw—YÒîËáƒƒóÃ'ð80õ<ÖA†$¯~±t¤.aöT~9=G·jŸÍgSX}rþË&–$
(nsTÌKˆ	È[:NpË{¿KÁ1[¿œ¦&r°ÚWÒä¸Ïé}Å)OWÿ<ÿxquzõ	-PñÕ%;Ôò’³°ÏR#ÄÖÈ~Þ’Ÿ±ç³%Ÿ°Ÿgb\w:ÑtŠÿÂ ÔG	ø“t"R~wSÞ÷rýró¼ ­©/'€Î{rºKXEë9\¡+êµÕ\«R(ç¥cJRÇ'WG—§£Óçß¦XXßè,¡ñü0ÏñÐq¾O®HŠžòQŠóŽ"¯¦ƒ,~ Â¼××èqx'’¬ˆúÚ=¬a¾Š¸ÂFs¬vq”912úðÈÇPVÂG‡ÃÞ]¯M~¹‚ß¯Úäè~÷wàÃÕ_õ'mr~uu	=+ÖüzÎÞ»xªúßnÁæ˜Qõºœ`Úÿ
v›åêÜ]ÐÞ÷Oi
¬wòëá‡‹³“o4_¦Í—IóÜˆ8’í:Þ•Ãæý–C‘‘dJˆRÄï ûÞr17ö)TkMd5³Ê„Õ0„÷qƒã`ƒ¬dÒ…¬ÒÅ×=’ç09©Zd¿+Iä¡öJÎnö½Zg3Ðø›Oï¾QÛåà?Ê¬uƒ{©Vð^(oð:4‡< ÊžP<A*~{@Æ\¤ÄÏä*Å¦\¨­ Ê[N„GÀ
S<Á.¥ƒZNC –0¼í¹¼aø…%¡<ª¢/vpâ‚+ÌQ8¥\ÂTií\u¾õp`>™º<(’g·ÚŸ~”±É<"}"›nzŸvçàF`Â.Î»K¢TúUW±õ(ÿ)EKH‚(úRäf•–sH³w÷rÚ"T(‰Œ€õ"ÉIþÃQ€új€´©žj}ðÒuJ—ô7	I3.ØÚ5­Z[ƒûó„tœ#t‘X~%ÿÕ	|FÁ1³ÿYpA2è¶;½~g»Gú;»øßrt2r1ƒrªŠU,ÐÝÿÐÎãaïM¨|xœmSÏOAM-©‚ †â§QÄÈlÛmijA°´„­
B*!êiº;íNÝ]v§ühL¸xòèzƒ„?ÀÄÄ4&þ=yÃÿÀ»3Û6mI{éÌ›ï›yï}oÿ~‰œ}Ž|Ÿ}¹ŸU2JöÄ—bÑEN¹E–ØžMP0d˜º‰]ôž´¼ÈÈ¥ÖéåoW[õÑ³ë­M8¹3Òwü[^OõíÅ¢ °Fñ0'€Át|Eiëù*hùMeÁÉ³Ÿ¹þ¾Å8±—àB¦õ§3_D™_€€Lèƒãü4Å>Ñ=ÂÃòö²[íÃ9,8ÍO>â)dVãfØ%–ÝúY/_`»¬ÍF¨›n5ƒóhð;ÿã¨Owû$“F„éŽAŒABO¤[”7	TÏÎÅ¢EM+ d.‘ÈQœi®9Æ+/]^]K¼mâýÔ“¬ç¾IìïRw{§ž®ïÔ·Í´¶³ÝÌà-•‰fÌ˜p=Ê¸”wÀç†ÓàJðµ4ü*]`e2+TÆ¬©óÂÝ‰aÆÇ…©£2±ˆÎ…"É°Us<ÊM[¾Ðð‰›ŽïÓŠE`[âöH.AøK ‚ç\oï8)ŽËZ©ó™¨vÀT6‹ŽwÑTOªÁ•âÌèùK7‡&¢#CnÛ$aVo’lÚØz$ÅTˆÔcÈa„CóQ Tæ0"Eõø¹ž³GåP1xÂvÇîÜJýðE|PqW~VqÃ=˜*ÞˆdLò½5<’ðòË§²ñˆß°8eµ6¯!¦CJƒtvÿLZ‘õbÚM©xt¼?Ô]\Z¤É8olmsƒ¥¾Ì)æÔa
¼6…Z{Ø&œxRºÃ¬ÃžG‚5€V…GÂ@Ô$^'ÕÓå`b_¼Bø®˜B•’†|,~
ŽV®ˆÈ¬`Ûµˆ?ßç¥?·AM¨I”LŠÐ@2Kª¹T^”ƒüóÿ×«ÃìÎ„gxœ•YklWVÒ<ÇMÒ$~{í½»{×ö¾fm'öîzÇiš´M›¶¡¨
)Œw®w§ÙÌÌÚ1­	ýE-$~TH@á¢RK@¥ˆ— ñúT@‚¶HH¨¿ ´Eœsgfwv½FàÈ™™{¾{îyßs¯ÿòÉ_xzG¼xòZMgkÜ²5ÓXŒÊél”q£lªšQYŒ¾çÒÙÔ|ôdIº!ßÌÍÞ¬ä÷JÅ*WÔÒÍ¼ùnú¼ŒèLI*:š£ó’±Vã©uµœ*ë\±Rõ²ÆSeÓ²òd1ãB¤¢ílèœ9u¾uø5'S¶íh	®îXIRfŠá«JCwØªi8i6•‘VLuƒ=?Ù1Ö'm
È%bÕÀŽƒðÙýC±¤älIVO;ÊŠÎÓôÅ­¤sÌ²X>	ìœ–¤Øªi:ÜB¦7vN/Sw‰±šbU4#Ïd^csãÞ£@EÐË¦nZy¶¢7xÞÝ9ö’”üšfkWƒˆÕF¹jkŠ˜ŠLˆB§„úy¦9Š®•-¼¡¬m°íX¦QAÙ>|[__‹ËÎÏÈ³A…&ƒkÅær'VVÔBSþ”cÖQ‡tŽ×
ðæmƒÇ¢kOU¹V©:Dš‹Uå$«æðw„‰Ø^¬æð}i¢ÿ:½Ï¸’ë¦‚³t¾êÜÑi6åJ@žPæšjä´R… µTm-mst„it˜;EÓó,ëŠd	ÊŠ	»w„h¤„
Í²é9O³3hèIfâ¯®±ë‚&¾i Ÿ'š†S¥À6áùÝc;$øîî!øÝîÜ ÿ±NÇ0VWTÊ	Á®'‚wÝâbÑõ*FAÊ®+eTSë–RJÅ”†S5­nN#?Cý`ïÄÅxMÑtDmÂW÷Ä"b¦«ífµkŠ®àí=Œ\5×¡ñ¬otovŠm‹'áj_|®¸¢¨n¡EŒÀ&<¬CÝ”fØSË®c¾²op'ê íËAäö>xpŸÜ/Ü¯¨5ÓÐDèfùqŒ³§úm"Û®€þ9W±æàŠé8fmë¸å…yv<b±ãYú'Rhiÿôá§âèSûCXIFŽlã¥ÈÁ^!0ÆÝ’'°(+ÍlØu’£²&,¿ªY¶“*W5KüQê##}D:F¯!a}ÌY¶Øìm$àÛRF{àVÏ(<ÔíkS!íù>ÞˆŸ÷DáÍžmP‘Û#§[/åCv˜—	Úk~~^påöEæ ’(øRXî*†Mè?ôczU©iúVE£Ê-£Sl£ˆÁ³Èðôùí'á]ÂOaÂÁ¤z({„°wsÝÏŠhüëÁÜ84 µCQ1ûžCz§1ñýâ¡,¼zhb÷BG++º/²ß4ª{îˆîÁb†Y
ò½pêè.á>gûBuôÑBÇ`˜æp—@U±RMµË¶²—ŠnéCYÞº#zL=­XÊŠVÆ¡äáÐwH7×¹¥èõ*nbpå0ó†õzkøÃÃƒâ½˜c™5Ås†Å{!0Ó'¾s˜-ù¾lÖ°ü9Œä
~cyn£×ÛÉõ$¬‰õuUS˜øÖ‘]="Ÿ¨N¹›ã	üvÈVÄˆ˜îE¸¹÷TU]³v·ñ²Î£9Ô\í?ºWž«_Ã‰Ð8§¥‰¥<”ŒŒº{·õ§ŸQ^–dÓónòtø¹É0ç2Œ·ÉÒ4cµ5&Y*Å½­S£b!6L¥üxÅ2†šg\G÷¹2˜µ=Éš¯_íÜO<!1^ïRYèÌ»/4w$bc·	–ËÖ¯±¬÷(À}ý"«j}ÃóAññßœ@t°jnû¶ldM¬ô±C8ØìZÐ)”üwuéÐñšêTIQókHôFälVxÓP×ÕT‚±2 5‡Èú‹Íúë“µZ¥KâÍx‰wªÆUMÁ ÓÈþðZÿ±e¡¶šÁY­ª¹yúÍh×fÀ/eî6#â^˜ñk÷Þ²ÁP]‰üÈÄ^lë¹­•hoöNt@g¶Bg·În…÷ ‹®µ®iåjCi5Wô…Ó%­è
mç­þ?ÄÒ°·ÆB[ŠÀ†FàÉ¡Qø4>¿>žwñ”A-¼È'Ÿzo-ÀK|³;†Ã‚»ñùØðÈ¢‹µ¢…ŸMVnµ¨^R!~8<ÝÐ~9<¼ÏW	ØÈ4Ü;"Ã‡ðùÂH
~ƒÏ]¡ŒÔ’ð{=±á¡|<”—C“ð>G§¥–tð§‘‘Þnró-‘<i4Ù`Z“çýy¢el'gÓÇ] ¼6šÙçYpþ>:Ücb #‰xflÛã'ÇÒ³¿$ìv®Uš.ËÌ®ó²¶ª•qŒ†ñ¸æ†¿:z<Úƒo±…¶<ŸÁZ`£—ÔÖ!f³û1Î-úr—S6à.²kßgáp×f{MM^ANYÖïŠÇSšÊmmŠ%¼U×©Ý`!wÂ$ü–?Ô‚º	Þ¦|ðÌDVšëf$W³nf
o1€ ´YáÑÿf…î³(¸[Wm)âËª±£Ñøþ^ˆA%:Jš?oSA6—³4Ù›(ÊÖžƒxlÍ7°¿ª©*§*±ðb‹Šç›Ï‡lcÝ‡ÅÆFZ¨N²»Žð›ÆKÇÐ{Ç„»_8¶°}?zq¼úÆÃ´ö"¶¶ÏŒ»¯ýðÊøø]vE¯-x[¢ºRáÝ|N§Þ´O¯Êî)›V»D“Hg9<‚÷"³vd®°¯O„':ëð6;’Ÿ: ä*f„}JP‹³ƒ(e1ryùÌÒ¥¥ËSøLœaf¿?{azâW=‡çñYOòK"³î_eËÞÉ¤ÂìÓ"êÃîÅ•š ÿLÜË“'wK¤1|tòüt²ØÆÉ0+±Ù"(Ò³i`S!\ïäÔÐQ‰ŽåkŠ%|ƒôh´ µ©SðÒÔýðï©A˜‡ÅéPHà6Åÿw–!&PÀ ?8=uQœªf§¹ÎEo´È¸èÊ¼aoš?êÉFïÕcú¯éx¨)ÅmºšZd_gK–¥làdr®%ÏÂw’Ž ªºb™ë6ZfuLáiƒ10¦NŠç—Q›Ï§Bðr*¯¥.ÃéôÝe1ÍýÙ¼cÑG;ó„6Y:é›Kø8®{@Ï4®´žo¥“a|ÓVY"‚*º÷G>ÔÃüj¶ÞŸIÂ3™ð~ÉÕX+ÀÍãGáÇ™Qx=ƒžlÞŸ=†¿óð\vbÍ€_g#ðV6¹Ûe”’‡áœ||JNµŒ‡Î°6ÈøÔ¸}Y»R€?Èì“¹	ˆç&áÜ8¬çæáV.¯æá9yÌuYN+xÞ0Ôe:%pznÂù™à3ã»¥Í¤$¢x€âìl³§lFªÙ…Ùi¨ÌžÁ)5{Oº¬3Ä½K ]ÐêOÎ-Œû†#xÕÔ±æt±|l.$lñ­9<ÑÏMAÏñ÷AõxÌ7’ß;žõôöñ0ŒœáÂ	¡¤[«”Ol¼¿°ÇûÜ‰Šþb!~(ê/Ê˜1=]€wNÌõ¾›Ò‘ügçOÁGæ‹ðýùÓð±â(Œ/œÇî„[¹}~øÀßÆ '_„sù³ð‰|¾‘Ÿ†?çƒÍ¸Úô”F1PŽIHf&qó—{b ­/Zf™Û6œ,ì4…ùó'¢ðBA†ßî‡dñÎÁf “V„º\Åÿ1HÀ/$à£[b{SxV3l[—–›ÍRâZD­Æ­ó¸Ò¹Æw§Å½¹Â¯×‡û$ßZApk1ÜX^]ŒçÄ·¸Þ<uÏZSô„·F3ËšÌ½ü)–&aµ§KíõL.¥è"•®‰í²¦©Ìi™©+WJŒX£Ë–VwJø&î×¥¢¸#-ëŠm/F½­ ŠÃýLS£n;@#U¹$ý—›wvaL1ŠÎ."b/Óœ\é¾¥wâW®¿¼køºT¬o{}ÏR¤ï2ÚX.9#
#
/»}Ý mUãºê¥Ç”!ÐØwZNJ7+)lYCM£$uÒõÁGÒ{úÚy·`¾ÂžèöXŽ–àâ©	Ïž‚/ž
“Ì¬Cæb†×JlËŸÊ×´2Ÿ¨8\ÑÂmðKÃoaùöG—S§ãbÅúé‘ÊYÓzÝ÷ðÎ\î¬‚Ç#Él,R®‰H$RÛ0´«x¾
ÓI]Lç›…¬âÊAk]¿„¬Ú•ÀfËRjœ®„5›º•
ÜÃüÚ`+ÈRC	Z2Jå*N)ÓOÚ¿–güÈË³“I†b*xªqqoÂÜæPåÑ&\jÁyr«˜(Ëº†ÇÓÐ7Øºi=Žoì½g–½%mº?¨›Ø<±ã²U®`˜ð´ô Ø¥¨„ Æ3…ðž¤ŠÅÑ~*_Å“HÐ8í.ëíê³û–Ã¾Ï²÷a_¾Ýì®“_º+âåE€Ø «h©ØÐq’®•(i¤@^\\>Ï±Mj9÷Nr.Ž4°ù?’#ï%‡ª]o®MK£ñ„g:Ò",àÅ²©òRŒ‘³X—Ôx¾˜X71:s‚L3¨ìÿlµ¥sC¾Éáæ¹ñ¾Î)nÄüâ\Äh¥ºû‡‡`iüÍ‡ïUl‡5êæ\•X.+Ï§²rJžgòL~n6?;Ã–º´e!ªž¢˜â¬$ýè$ÿÖ·8xœ…S]O1|®ÅH} is¼F€DCÚFj>”Ú
ñ`î6Áâb§¶/× þø®}§è@©ê'{µ;3»³Ö»%Už%¹U;J,9õBAW\üã1»šŽEÂGècÅH’Î1»›¾_°¬Ãw4·Zý*	#³ÙH÷„%_Z®-*Dús6_¤“42D–ûYGâ$ÐéÐ¦;ÁyN;•Ñ%î“$D.ÎÝË%þ q·!®Çéh9YÜLæ³l@þÌzüÕRk¬Z÷àX­ƒ|£ºÕNV7ÀŠoá a+­Ü'å¤7v¾ðkG)¦lñfO\’q…htè÷gü8÷»=° 	Í¸n+9á±0Ù3ŽgëA7JböJŒ.ö¨Œ}æ[”_—9¸r»5Ö+½f)œ½"ÉFÐ©XF'8Xõ&ÊmØ¤%”:§•ÒzŸkÊÏAyÔ^:ô{ k¹>39Õ •rò£	sEãÑp(ZÞñë]ª¦
qÖ¥ñåSÞ Ù±0½¸cØñ«éâÛ¸µ4ðUº˜¶µfÍž°®üÿBb(>¶w$ïqtï^ÍúA¿ÿºX°ÅÍgYHëaVQSü8¥ã¹ºRyÌ_øH-ä€œwxœ[Å·#¯,7U·<%y"·üD]AfË%LmtñP¨QÐÕÍ(ÍMÌÓ-JMLILÊIÝø>†‘9ÜÅys S$„±Y‡¤cò#6 ¯Ñ¼LxœT]oÚ@|ß_±¢	)&$íj*¥@U¤ò¡8M[Ey8ìN1wÎÝ°ÄïÞÙ¤ÐR©–9ïîÌxv×j½¢h“&Q^˜E+­¤Óæüª	7ÿº Æ·£D|:YŽÆ¤R?Œ¿÷{8ÑQ}àß¾)ùRöôj%TÚBC®0Šo¶È@üs<™ÆÃ8²Ç5KOpæY‘Yñˆõ?¤´–	}èâÞÝpz?œŒ_ë=ÄgæuKª”UÙ¸kR-´^±øCÜßâ“J.òr£×2¥€hp…E=§ lŸÛlsJ¥û4’MŒÌÔ
»Àc¢3{Ó¸¾h´P‡Ç|Z’HÉ4ž`çßÅUyO3ë®ÿ `×Ùv:°bÑ§ÓŒÚUäê8Ò×j¹>Ž|*lYGÞGÆðëw+;X ¤WýâW“
Éç´0×b§Ê$#¿ÒPZƒ¾ÿ?P©c¹Ç•G€œÏ”äÚ•% ÷ì÷¾ó˜#VÄÅ(-zó7­~¯D‰3B’Ü ƒ)H–\Â½1PÏÃ9m»xÉ‡K?gfËS
TŒksÁ	³L'Ïx:[]5Û^³od–¡VY‰mžù_˜¦ªÌ¢-ò\'Õ‚¥pöœ¸³†»rüäžU•¨ƒÜšMÂB¥4—*X:Q”0žEéê²ØiUàä9	 i}Ç'a%^w
Æz?jXzKaðãv4ý:8Øºü"l5ÔF/Ø]vÖž\“{]x{¸‚¼ÁÓû{àâqpŸêïÍT·ß±ðí),›céøí~â’±¹xœµVÛnã6}6¿b>8I-¯f_Œ8À"IÑ ›ÖÙ´Å"ŒDÛÜ•IU¤œðÇ÷)ÉvÖÛ{X–Ä¹ž93¤Y.Tò”¥ÉÒ%n!KŸÈ,Kr;Ûˆñ\B\¿»º	.a¾e„š(“Ñõý•¢ŸÏÏè+{,Û’>ý[¥èÌ.Òd=*•¯Jƒ?Wå^ˆÉ¯×7·“ËIp\~ZªÒ©Ñeßß_™îÒI¦–:U§ô)I´ñª\Ê||rýñê´G‰¦ðô@¢Óé@ÀV¾¨|2µåBúñ‰áÿ|õÙYsJ‰¥­µ¼$…œ©„ƒÑÖ´ÆóWÆ[Á…t_Æ'ï/'w,VP|låŒ\(WÈT%:CNg§´¢ÄP|~âübröáòöîòæºƒñø ú¹ŠHÇ¼i¦—ÊôÈqä+¤w#ð~¢(íRg*ÅºöÈOæÂ}âk-È…,=P&íˆÍHoË¶…·zT¤4Œm„™Î¡’BCÔï«ç½ÁË®êà€ïcnÓ/´[Àú>é<'kòz²å<…£š#W…-½63x‡ôTIðKõÅ‡@0|€'i^È†ko²TT™LMµQÝJaÏ‘ö5Ez¤Êú©\ÁÀ“vŠåC™ZÒŠ†s£‘xMH|ê|ˆœgxœ—^;¯SDVÚ¹B¥zªSj´zˆq*CèÞÒð¸O`Ø*B€Â:ù±áÁóÙ«GÌFÑáâè¨­¢ˆdŒCLÿØ1ôW­²^êL”nJÕÀ9Ènì nU.7R·O7£5 .mäSi˜1•C`x•äõvÎcÖœ]4Çáå°înI,®÷Hê‹è…°8¢i£GC<ƒ4ÊAí@2¸ÜfÓõÛñnL†:Ú	H¯2¶%Ú˜#ò°Ÿƒd§ €Óì¯µÎ0gÚ¹|éÜ …uN?æŠÃ¯ Ã¬<§ -îÃp—|ÏÈ<h][¯F||ˆ–Y«î"xD{ñRVbÂ¸Feëú¬c	²kå5Píppì€5¯\ ½žP]”k1%öÄkaÜ…ï}:_w‡èž§õEz
Þø(Úu¶¶0£xIN§*õ<0)ÌLt2U€ Ìe›³‰¿GOsÎƒ&*Þ mÛveï’Ú¤PýûÀ¡ËºÛš€=¨fZêÌ(âSjs7Þ;:ÜëaÀÄxÏÛâÑz¼ÃÈÌŒ÷RÅvðs€ô\É_ÄŠ·èÕ}Àgu¾6-Äêpx(VWÖñc4´ÿö€ÚT\NÓjQåkNù>ë%Ã#¨Ý–¶r¦ã‚Òð¨0-6W½õHôe14Ÿ—¶šÍix„Gn}k¼Ôê¢q7·U	±å¦’ÑÙqí¬ýÎÛÒ–Ž6)·Ä“*“ªˆzoÿ‚^V•qóÀ.f<ºM8U<”8?oöÜ~^ˆ‹_Þ]Ý¾¿Ø8±ÒOÒÕYÙ
Š&qßÚ‰w‹°ÉùùºÅíh$¾ß<$â;úæÉhcÝÖùBäÙ÷¹r¾‘ïÖ#ò†ÈÇ$6ô¿„†8¿l…êþm¬=¶»m@àÈS—oùUÓ&±Í•Úƒ?¿ù`ÀbëˆLxœ›(>ŸM(¯,7U·<%Y· ´(=UÃP“k¢†š4˜£ «œš—¢àæ›ªîâ¬ XïÍ–VW°II-ËLNµ›¼ŽÑÒ¦X!Q!¨<¿H!4/³°I‹Br~nn"Ð$ æ*(Ê/ËLI-V(ÉHU(J-.Í)Ñ›lÍ”$ £ Ôš¨—˜›Z\˜œ:yÓ~¿|…ü‚’Ìü¼b…ÊT Â0NV¨3Ä&gqÉ
A\ªt‰>È+y†“£¹Í ‹ŠJ=°¥xœÝ[[sÛ6~×¯Àd§ÝÕÕqzq³™Q,¥ñ4¶5–Òd§êD‚"TÐ²Úíþö=ç ¤(Y’eÇi73¶d87|ç0OÇO˜­5á7þI«Ä	Ó×‰hÌÃ ažÙÃ†J§Å¬nnã4;a?¿>ûpÞ?aœþþ…ýl„`±µ³“Vk>Ÿ7Ã4˜¤éÇfšM[6œ>o	ÝŠm¢Z~ÑûAh‘q‹ôzið
æ³Ã·lhJ˜XkØµÑ|fâÔ²žzAÙDM-lëe)?ëqò·;­ö·­£vç»bäœëœ«vñÓ¹ðCÃ4Ïá†Ü³·\Os>…g}=UÒÄø¸Ö½aO`RÜxß;7†çÝ«Ñ¸Ñí=aO:ð³dú„æ	ÿáÙ=!ÚÏýGT¾b=I-˜IÁfifùD*iÌØ<Š‘Ó?÷QñÛ6É§¦Š‰äš@ñ¼ýÍ×ß<«Î c[ÓœêœÆyÄòZ8ÐL³4ŠÀ¼íïí£Vb¦ív»ó¬‰c%©l¬šSÖë~bãþ©ÖÊA«xúôQ7ÒËBñ\Y¥YÂ­•zúˆ,BiøDc.f±ÐÜÊT×š:^û57VF2 QvÀC|À¬¸_)S"²ÁTj–jµ8¬5yÈÔ£šá¼{vÁN//Fý‹ŽÀ³†ìMÿªÏ¾z,6CôÞîyÿImstcã
ºÎhxŒãcšðŒ¦{§å§\°Ó4I¸ë,6Ï4|ØCÇgøï‹ËÁðl>of`í¨6ŽÎ-¶ëtÇÑ{Škˆ—ìçqcÜÚŠìš«½¸xwþ²’IF_qãing9Ppxù×Ÿê?¿šT¿„É)[yq6’N®^xzu6]^8Ñ^ƒ>6Ng'›‚Ëé: lÁ×”Þd–À‚áÏ,K¯e(ˆ&Lˆ'®Ü†º~Ùd#«jÉÒÁn.•*Œ9)§Ac–€ÏÀ°(K¢mf" ÀŠ`ø—a=àAº!ŸÒ®3žñDÀ&Cq1å,Hæ„/ØD0!pÅAK\áír nNXþháN¶—|€$	ÎÁæiö¾‘©ÜJÃL>+¤´8;Ôh+‚Aßi,%)<Kž	–ëb}Xð»Ô@/ ²†IëfX»ÎD–‘ û•¹4‚áÖ_Ò®#"ƒZ	¨:»·ZójÈŽkWn'ÈÚk;à­”&¯!Ì`¼è‰¾g`t0õ¼Ö±ë=Ó!DCä¸ÜU7dÉ…Öà0u–fø ¢!/Ñø)äDÇ¡Xp»›À
üÉ™•	¾çƒ.l‡'‹¦B¹ÁÆ?q%CvV ~rØFDK(LI‡Ø“1Ä•Ñ°Æ•š¤7’ðÁÉá÷5e_1øiÖF¿#¡\ÔFœÀ÷Þr)<•_ÂT˜¹í7@iÆÑ«héÉà“óÔàÖBƒ¢à¯ìàù!K¤Î-€&ò$WP…˜]P-à¶$u4ntŽVÉ2À[š›»h™[Ä:ÏV)¡ÓUÙÔ¢‡G´šu`s³4ŸÆ¬s_q{Rm¹t0›RÄP‘ášî%oËp|[†r:F Õ
)‰ae–ÎE6nä³Ûôžß^˜gÎ³!ˆh+Ág•Œâ•ÀÇÎ=£æˆ0Æ:Î1O»ìíålÐý¡ÏzÝQ—]¾ÞXÿÃàm÷¢ëcõn”½–B…DÙcý®¢u/™ê¢{Ñc“…ç™gÒZ¡Á·­«ód"hËWæb0A
è®¯ý¤éX¶Tººg›8f‚‡wóÂY.¬íÉêÌ'.¯T|„: ×v•ÍŸS¬pqEþ	pV‡¥NZ¤cœ?Äp"Ö%Z‘õi)ÌÀ;){åd&:3; 8…5(“çñ8HæèbžbG^£¥DuVh™´$Þªšïtfb,UˆWh¥>%˜
ÈËKI+´«W
”NÑÛ—'gzÐ3“ÂÔàJÍk¡ÒèŸžbg.¯  …Ø;›)Ø`XI
}ë„_y˜B¡
ÿdAt$3IŒÄEŽÛEö ‰Ä8H=(AÊ„ë®¢$¤¹€ ÊëåÀÇHQ8ŠøQ$}’—Ê¨X1dæ@å«Xïª{^gCú]ya øþ–	%L! AëôêË·B¾D@¤¥IØ„,ÓÈøÇ{hzº”ènU½ø]ÆŠ8û‚½ƒÚb]½ªë»D™uK70¸(¥¯ó\Ÿ§”à×EzA·Ç²5òe»qr¼~ï*Ya9¶üGŽÒ-ÞŸ6Í Š™ÁP k·áIˆ}Ÿð@Iò\B™ŒžgT„Çà‚– a›<qÕèj¼0 8Yäœß€¢J›<$üF&yRèMFáA–BE‹A }i@¡oëvTXÃüÝ¬¥~TÖW"‚Æ/Þã•¼³%ÞCO¥`È×Qq":ô Ð%á9ÀÕPŸ±5â²t
½{Í¥ºwr¢ð8ó"  ]
Aåb}¶)‘…(B‚&NçÆr"£Ê(Ú ¼Cü¢ns
¨UºILån»~¸¢…8Å†çH¿p ¿Þ>ètA²?IsNþ‚ºƒëâ\6‚öÁZ…´!´ÙÜÜöð ‡ôà„…qï}´Ø.b…˜&ü!XX-”îä~ßÀêƒ72œž‰"ƒ’ù¶4Ã<IÜ©1w1’‰jã3ë–¯£·ƒ:Ã/½·øí
Ir™›ƒÏ_P§Í´)d)ì'Ì3ë%ØzKÓùÿhi>§zƒ:UÍþ pª%<b×Ëó°8I3ÔÙÃ†¬´–Ë#p5™ÞNÀKŽÔ˜lå÷ºÿn]‘ˆ2ñ)‡œOv] ÖUÄq^¼æÕaÃxÐZà›æÜ®Ýºm·Ãšžò d}#íC¬L	‚=öæ¡oÝÕbyÈ˜j°SÊ³Ð¯#^»M1ðl²7%bE)5B",ÞæÜ™»;wŠ–¡Ð!]ngù,$#É¨zªP´"RìRZ'žã±—Å.bÃ&­•Ï·ØÍàQ¾®2ß‹ë=±	Ï°¢ÝÐç™F	 ,î‚Ã]ûµÃøsicZWºI…ç68Q¹S;whÅ_–zlw,ò)Ê¶Ÿ»7ÅZÈ¨J­·2w{SÙ­-êVÎž@x†îWÙÓØ×íØvPñšõ£€v”+UgPUxkÎÐ´õÕ'5&Œ:6 í)e•ªò²Ï×F†"sŒ¤÷9‚hk µíV(0¢ûÍ¹,N§Ýa4Å“æ™?‰R‹ÊÑÒj$@QÎ*'ÏÔßÞÌ S»ë‡G|ø)‡ÑßD–âBŒ ÔJW•¹zíöèö½ÝÓéïØe’ß™)’S(ë(¶£)ZDŒå4®ã]šØU)P0æ*D;Ñ5*ifÈ®ÀYÒwdÐ7[9S„—-Z¾Ï¤ûÿ9M}„ëxÞ3GšI±ŽáöPàÆ) lÉ°U‘[·%ÇºI—aèdg—eq9–ÛBƒÆÄ
…ÿƒé›[iñÎ@½y”‹uDˆNvJ ÿø=ÕÝ<T8¯*nÊV‹ó»ä<þ‘­‹ZˆƒQÌ'r¼0)Fè'ÄÿÛÐJS1°¢òmi¼ÉSaªk6O¿ßFÝ'É?lßÊX€×še0p”ø¨Ï°aü¢N-c
]Õç6ÈÉO×l¸œ+“VcHÙ–ûð!õ5RMç®ù„h!ý0 NEFX[žšIUô¶(-ÞyŸKŒ0x\ü^ê{XKëK^xs_XOš3¼òökßiy¾ÍñFÑÊ £êzgƒ‹æbHksš,ªáÅ´•îXÇ_UB«…µM®Š;·Ý¹>Ð;…ÿ¾¹.åfÏÜÛJŸëwmŸ|µWÉµ‰ùã×\Å>&ÈRÉXµñ/+GÃNÊÑs:Fe&¸qwU. Eª7üš®‚77DËjtBª¨HÖ¿NUžl¨GW&é>®Ešµð!Ãþ“PH`l.î	Ö¥X-0ñ]e&^Aìª4÷+í&ÂÁæaÅÝfí	é» õ×(ï–9â®¸¶ŠiL¾†¶â5œ}zA¯1½ÏSF,Ð'Éƒ˜ô. ŽT6´Dn=¤:³ÔW:‘\{†)‹3µBñ:’3[a*#°ÔSUØz¥vØíÁÇ@åmø*«{ÙpP5 ‡Àè‚ˆáàÕÞ>Ký½nýæ:x©ÚÝmqyµ»½r¢)û5k.ó9+«”N¹#Zå¼g"ì\ørGïL^€¢žZ{¡`M§z?°‰¹Êÿlˆ8ýW0²µ]ªè·'Nn•Ø+‚ú ¦Ñ)´ÁÆ•y®sôíÞÛ¥q¹ryÁILqŠ²X_Ó;ˆ~x=»|¹R'¯ßy,ùêÕ˜8q‹œ •ûÃeÄ/ÊË­½Ê&ðÝ±ÇC!Øî¦a»«~ÅsÔÍBE	:äø–D&±ÄÄ[­(ÂD›:J)dª•wI÷x«ÿ¡{>xÛ/ÞÝ¥×ñÍpÍÆ¿kãøi£}üt|0Éáë?ÛÏžŽƒZsü½&ŽRHNbGÍg4þÆ£¹¸\%ìÿš±;,^/_=è²'©Œ¼Œ^fJGµ°m/W^fu¯W(ôÝzüúÿöà2À,®¸`é¸á³	ý ãô´¥xœí=ksÛ¶²ß=ãÿ€*ÓÚª%JrœGýšëÚN›ÛÄñØNÛ3®o"!	'©ò!GíÉýíww EÊv+¹sn:‰MXì.öÝÿâäÝñÕ?ÎOÙ(ûìüý·o^³F»Óùééq§sruÂ~þþêíÖszÎéYc}ÁŸÆ(I&»Îíí­sûÔ	£açê¢ó	aôz8Êüîx‰×8\_Û'ðŸÆ~Tî}óÍ7jH;íú<4D †
îáÏ±H8Ã±mñk*§ã0HD´¯fÑ`®z:hðÉÄ—.Od(˜[ r¹#Å"9xõªý²Á:È€ÅAc(ñ$Œ,HG±+åIè²—Îsç=&‘‰/ƒéX´o=·y”´¹çµýp¸ÙkîwTè'3_°°;h$âSÒqã)ê|Í.á±ãËK6#–M¤ÙÆxàÑŠ<c}î~³¯;ëk4öDxê'00HzÝ½û—ßµ|,ýÙ.ûN o%oÅ"’ƒ½õµÏÀ"hõZl´ŸÂßøûþ>o­¯yrê5-æò	2T?®¯%¸*-6qÞ÷…ƒO"‚÷O’Ð5}žð4…Q‹=‰Ä4HÇ}¡÷x"Ôo‘ ö}Ä¾ƒ0LDTAÅQ$¹ßú^øS‘À²¶bÄíI9ù l(ƒ]ÖcöìKýÃtãªúa´Ëú~*öðW¦í	7ŒHdvY )¾„Èw§2–	¬–=|º£Xr&Ê1§uße2á ‡{Ö €OgfDœDa0´FÝ
9%€Xè{ö 'Ý—O{ßì˜qÕ‹UÀíÉ³íý¾¢8ÒNÂ	pÅÙcûm?L’p¼ËºÎ3Ý€d·G“žót~V5S?Œ€I€íÉ'‡¾ôX,a"5l´­:O@;d0TH˜¹°]ø!‡é|1H²†-öµ¦É<*4>³Y-ˆh×ÀTB×²,m„(dTE65 §’ŒõµIHŒZ^ÒÀÔo±þú’²*(ªcêC3ôÁ?¿g«È9ßcVë!²$_°Ô¼¾æŒÃ Œ'Ü ‘nènM"Q¡J`1ÓH‚–‰ÛF‹é§ËÆï•+ƒ(ZR!ÃÙª*"rÕÓ$eÜŽ@wÚ}ÑjßF|bø£-D­ôV+Faå{†ÛOÀ”HAáÃGw«²;
0˜ußß³DÖ«BÎkÄ»¸Î;¹€ê	ÛhvªÄ?‡W!QfpŸ{C†GÈ¤»ÆX>“=/Œ½:‘îå P¹ä˜EßÝ-†ÏâO|ûp&ÖÏjÈ¯) muðA&"îÞÄ	 m½‰¥'ú<²Áp$U’fãÛ*º÷"áN@Ûu€æ"m+»_Œöó.þgÛ$U€
ƒþ–¦¾ã+Ý¤¼qI³ŒÓ.Ž «u^úZE~<Ö0°dñ^Ìí™«&Ïx…½ƒðÁcY×ÝŒâ¤íŽ¤ïUÚ®ÜpñÏÞÊÇ/£½‰%‰`…‹ILñ0
!n >à–å°ÝÊþØvE¹¤¼Ë ‹ÿ•L¬­Âeu©DéþS?«œºHÓKüï”Ê:žb f¦š×%õºæFà_¾|YžæO’HöSÔ—aJQ/Œ‘Í ZD¢w+®BÁùÚ¾´ÒÅ~® yD_TašÇK˜1œž_œ]žì²spÌ8B{él;/èI0•¬hÃÌhþÜ¼X8mUãT=wµµu¤k†`ê}3HªsñíV]ü^iÿÿ´luû†Ä+.jQŽs9)ˆæÓ
½Ëøa;Ìzå] ©‰l†ÜE¡—ÇQ 	±Y F09†ŒÄÌ¯Ó˜ NÎ/r]9 Â„<W2Œ§øOªž_em_Öy•—Ù²$	À-2DÍU'bž‡qõ]N¤WéU'Ì—b=M{ÆR	`˜&è2ÔˆÐwxÄûÒUC¬XØe ¹Ra§:ûá-jàdÄkP‡6õÈ¥“ÉâAÔ¡4ˆ Eá˜g¢Å™R3YƒŒçC
0dŸýÙQ±Ã¤Ø>)5ÃïÅð{ýŠU•µ”	FÓõøg
SsgVÐØTŽ<äÇò||MMÅ‚Ç3¡ûöUHh¡*¾ºƒ2Óû>†xNæL¨¡oNÁ²‰¶MT ?[[Ã;·¬ÈoÌ
à¸qeT6>sÖ×=1#Ì~Ä`.´G[É|`á1\&.N'yá‰é©Úî‚‰ïêÅ ëµts-È/óTbü÷L+*—<Èº—ÓÜŠ:cYUˆdpq¾×Y@_¤—ŒJÁ¡Y¿êu»Fž’+ñ÷Šâ_òÓUîSÝ²Pºrðäçæ•ôi¾Üÿ5žä ßÒÈS9÷†ˆ'>ŸùÙ0;	Ýð<u´ópS']œ¥Ý/ºg–Ö+	€/¦Âï*ƒj{ÅÇíâãÓâãNuŽWé”?§Ý®¨ÌmÛd%ü¦\<*FïÜ{ôNÅèçGkÀMyÛàSBQI®ªB§[Sa7¦"oÓÅä¼ÙT—³ÃˆÏòf|²Û„ìFxÌ[}9¶æÅ§¼èCk¨zÎÛÑŠç­dÓ³6Ð¥©˜óÖIM|«Y=çí‘"ÂCÞ¢,NÞ¨-PÖžHO²V|ÊÛÈ5W…žÔªœ@Þ¬+®n;÷
[N¤bµë;W¬þ¢ÎÒPß½R:ê»WHË¢ÎsÒSß¹Jšê{WIW}ï
i«ï\)}õÝ+¤±¾s…tÖw®’ÖúÞÒ[ß¹Ršë»ÏKw_brg™7´¶9eXð.¶wçº‡î“eÖÐoAÚ¯Ú´¾»i³e-€$bøGU#ìv“P‚MOƒ~$øGN5m†ÀC|Ñ–fa ·ÓPzz –CÀÈm´ÆÈ¿ÒÅ—Ô ¶YÉY È?Yh¶`²„guw~YÙ}æú?×ì®Þg¯Ð¢G×Va±¨,\žBbóiìaÊ;‚É˜V*’žN¦?£-k°q‘T?
ocÈŒ¬:ô½×ñ ‹Ð¸)8ìÃŽ#\Î¸}w	PÖFqãCg™VÍl«›D-üü,–¬©üIS+üge­(0ªz÷§¤¦-:ÕHkŽèèþ©ÎÌbCF§
Ç¥÷Šq¤öûŠˆ8oñù$†Aæ7Ã#Ê‡#h™,ÛÚùƒ˜}®ZG‡ä	¹ÖçëzøˆôªVh³æ
žë	H\ë„u|Q\ï%ºJkí¡%Þ;#Ê¾ˆÐÒ:ØM‹
Ç•ð\ÈíqC·¢jœ‡©Þ/€J¯Jmó0Û E S5Ö 2o¹£R	pìÆ¾J˜ª±¬j[ YIDdÕXYWËÖnÌtÂuöÏd8¦Ï¨·pë¥n'û›ò÷: RÄe{±s*t¾ûÉÂZB–ªÔUÖ×ö;„*s#9IìSeÿäS®ÞªÃeû_\Ÿ]]#Ã§<bO—y0ÃÌÁ:vŠML‡Öm»¢âÝ€é“y1ËNÕ-mŠ[ŽèØÈ.{+G\²oùoaÐb—b’<òÁ¶»Ýmíyé¤aœ¤¢ãÈ`JK'
;ÿ;–ñ(3ñ,#oãÍ?ª=3ÂlÌ+!|™DO!SLz‰( V¡•ˆÆGèá»³÷ì;í³ó´ï+ao$Xª4œÇÌÇê-üœ…)óB†²1Äa,„ÕôAƒ¤EÔº…'Æ¡Zé5ÄjWQ8c'ûžñ‡ž;fÎ]öÝùuö à2Iy”°È+Fl£¿©L"`*,1[Ïqv 9x…9k@ÚÂ6³MÔ
NLÛP$W Ñ›Âoš”_:*sÀ=õOLnbƒ„·Âwhóæ÷nöàÕ,H}Z¥ÀàK	l†PÆä€mB[è	<<ÊØS¤ý^8W§?_}8{wr
T5Q]^ŸÂ*ˆ8ØHÐ¨ñx^#N8
”§üÛÂ=žð=Ó t
=[Ž¦Á±9?Ü°@65ˆÏêG$’4
¨5|.±î*tOƒ$šïZÔ«•-EF6ÊŒcN çö¬÷šÉÙæµ‚Mú×Êù5¿±Â °Èf!#ãÁU ^Ü²£ëv£n¸ÃÓO“ÍëÑ÷7›×½öÆV.3[½æÖÆMsÃpVçU†ÂˆÃ¹ ë¤g'ïÞ²UÅEÇÂšø¤PõØÎÀ ,¼N”Â³£ó×ì6La¥úÁ?	éœpGü5R#ÒÊ8LÂ(QÊùsÍdFM''¶Ö¤2Wku–"×U’ÝË$ûôÍéÛÓ3K¸­q
ÇqÀ#áˆOÂ0	¢¯hîÙýpè÷ÕW8Èë‘I7®Ïã¸Ñdÿú«lB`fiiÐ¹µF	¦eäZýp|“Ñ–ŒLÈeËR<¿xÝ»i÷Šh~.à¬xŸ«U¡Çç‚ª™¾°6{åS8ÙâOÖ‰+¸×E©>URöíìµ·Ù€æ†‚ƒ|û3’XHÎ	È(‰ø¤Nø°«wÇL(ÍÂ¼Ûå`OnÅhK$€ƒ‘¸C?ÇBI+ãUx¡Ç»¾Ù3íRºAÜP˜º(Sû8Ê¡p”•X³š¶¶
JŒÈÌ”9°º_ËÍ,$“úâŠƒyƒ[ÉÇ€ûfErbžÍ}#Õ½R”îÕ	B©ÄmvþÇØ‰N33­ó¼p&i<R(6ó+¹QWÅä‚òÍ¤¨›óÃ€3ÍÒ_ˆ~ŠnÀZÛlíÌZØ&µVºôÉŽFÓ6¹ùêc¢i2sB¶¶dåÒê~Ukª-¨‘ôºäŒÏóÍ¬ñpúÐ`[ZàÔ$ÜÖ7 jš¤Ío•ãÎwUÈP†žõâ“‰<ÅûT4(›sôlÍ¦…ž¨GZ3dèX5·2Ã†ÈšEÈq.xM%/œåÔBÃç|‘ËÝf>vÂ#è@Ö¼$væsK§bË‰µÑ»f;Ç+
å¿£à1ð…Ù^¶žý#f‡ø28;œÇ‡ú<,¾üaÒá¤©è@€ú¬Ó}Ñà…äƒì`!.–³=q;8ÕêPa‡3ôîcŒUgÏRk™_2
}G¸;ÛyäCk|HÁ„ÌÛþ²Ëá=ÄðWŽúöÿ£NöÅ°¡hglÌËƒªH´È²5KÜÛš—%$[{4Ò‹Ö:3â™Œ `£À«{üíìJEd›ìb c‰~ÿœË‘Ÿsã y±O+éÇu£V Ñ6j…UÈ£µ`k+¥ŒXÃŒ„âšbNÔV ²Q™Hb@`è{Ðªë_â_.oPÉ&>w&Ï‹C6†L¶iS‰œ>(âm}t
 Ì¶Æó)¿TÉøˆcºÌ ò÷Â"õ&pl(>±Ï‡Öà22 [„@šã—øë_®7v_7oà±Ó„àÓŠ*çÇ²;m\ïs&½ƒÖñ!ò’üml0t|O²fÓV ²¡>8ØøQB`lºn0Z¸ƒìÅax¿ÃoUˆÆ5KÕ"vä–ÅË–ªäDnYT6öÑ¹–q)Rm‘ŒHÚƒùJ,Ò´_è¤8¤´µ&#Úa4W–Þ j‡‚ìb´R#¸Ò+I¬Ì³wRºkP¶¤G)Š²gþ<°]¸Å¹OnÙxG„ß³Äò<
]ÇÌbŒ©BÜOÍï¥è µ˜™!—t@f3ªÂ.AwÝ-sqD -ÙÓ°ð‡Ñ¬'ªR÷f¯ Â¯OMö5 –³÷olm¥dÖ á<XGÏ>eBEhëG¾ŸG›å‚	¥qr,¢×ëJ-‘ÐÃ7³%2Þì@`¼Ù´Üñ|5Æ›¥Ü!G·zâ£ÀSÞð
1ÌÑ o5_ã~Ë”û›ý<‰ÎÐ¶¨î…‚%’llÖ¹Åžu»y”ùPîy§Søå„g/jýªmßlœ¼{«+»o R˜·‚ZlÀAërýS°oeà…·N`¤G’W9ÚTýñP¼á±Myçë››CA÷;ªPŒUýŽùÈv”p5ô}öÌgC²Ôwñ=ø·ö;tö–)–˜MÐ£1Û‡gGoOáqÛ@Õ“Y»}Ró‰;k7.!ƒag?¾ì§“cVìñ#´-z¯jeÇáñZÅ*
¢4!ÊÑ[?¡&(ª@³§Èß¦~âYNb7/ÿqöîüòõå=¨³šòo[ÝÌë–…}1&n0àF‘Öý4±¯üdÏSéŠ¯†É»n·¥äl:{ÿß·X[2ëù;†i2I“¶ÊT¨·:eý¯Æa@ÐÚ!«x}ì‹D‰ë«œFÆÓ9Ûœ®å*„ô$œêäôòøâõùÕëwgã-ø8>Œød<œ¾
Õv‰âB¾´@÷AœxIræ%ËU²„×#à'ÆáTzêð
n" ð4‚Ao‡]AK¾,$r@Á‘haœˆˆX¸?É‡¬²=7¦œ“ ë]LHQ#¥^Ìð@E¸ŠE²‹’„`‡±Àš²ŒqÃÔÃ¼zF·>Œù‹ÎBÂì»ðö
îÂˆõ5Í¹Mñi—uà¡ƒ¢ÙmÞ˜’X †lFÁ3fßÈk86Um•ÌBïàÀ,Ügº Ý)ÔàÁŒ…„¤FâÚó@pîÝ›wÌæRD#½(1ë¶~d©üŸ&¹•±(Â|8«¥ñŽ¤ø&‚¾J |=Ÿó^AÝ‹ªMh%õ+íƒ5ÈS8DL¤‹Y’R³Ïž‰e„n‰12îíX¦Ö«GIYe‡îEÂ¼åª<GÊ¥HˆŽ\ŸÔ8D–-:2¬-F›¯ú6¢ù£&‡½CñÅÃ)
ÅåêOŠU%xä`X1£¹=…¶Oq&§ÌŸ,óÝ’û#ÇÓ&`xÍOAuPƒ-ÓÉvÛuzŸµ iS§ï¢ÔhÇ}¿æhgÃ>UÀÓ$Ü+~K¯ 7j:hôºÝ/á©xdn}Í¾¯O`4º†ÏútÅAc‡0pCŸi Ï †ºì¦òeb‚•$RŒN„4Ç›ê§$œ4M`É÷;ÉèÎ®'9ßLÿŽš¡“ÏˆêiMí-€·?)ð^¨ï¢{xœ‚~S‹“x‡õÏ?FO±ž„ß|ÖÄo[ðÌ$w!M}Žû‚Ô:ö,š¢?ƒþv»·½
Î#0Ûaß…~¼lü{O—€=:UÑ«:X%BŒY™sÄ½mµ/Œ±—Ê‚Nå£0`ê6É™}]:á;K"<CÃ0§ô%Ä2lBŸn¦“¥“ðìHðÒÈÒA½d„Ÿ¥Úqs†FEUÄu2Ñ¡Ùª"…{E.ÿ 1äLÀ>`Iìƒr3Ä§‰Ï®ãã#öÂRÌ±Ø	tbï”/:Í;=,Òøñ
¯¤ð½¿™W8ÍbÇ³£³ÖŸáž×m$H%	½º‘…¸ #œÔa¬÷\7µÙHvüpÉê[EcL\}Z©CÞ·0Q¦.Ë9Ó Yiü–;/ÊßÀD¹ÚX£œlÅVœ<VngÄÁ·ö…Ö× ¹‘øÙ$:±ó"ð¼”ÿ¥Èí´Õ1žO’ŽpØ0
oúªGÅãDÛš…96-fØ¦®¢z©Œ}¸aÑŽ²G¸¬§” -‹ÅWä¾3®Qz4Á™	:pe£ÑŸ)Æâv[KÀÒ§Èéñ1&ìçwl“Cl®î…„¡MÅ—ŠeKfÔe8Hpâ¿#{0—R÷\¨}€æêøpyÂNËèÇ‰H”Ï[GŽŠ*èÑ ]T7ˆ‘x|h…þ0Eb•‚FÒa9ÞõSüŒâäâèm‹]Ò¿ÐS•7â$ŒÐÁ›““À·ÎñÅ1„‘¡¡j,Üd<f¸³¾FýPÐvƒÁÇ9M+â°æÚ‹gq"Æ*®û7¥—á&
^D…¼˜Õ8áwæBˆÅJåT¶ŽO³#'àA°†8ÐEÖXa¿ùê'UV	Ç0¶‰e:î°Ë„GàgÀxtU5 Fj3ÏÁ‹˜<¼DWhCÁ8ÄëcŠÐa¥Ó‹¦´¯ŽþÎD§ã¬ð·<×Õ´où'0«È¥™Õž"ø$ÇéØpš–»QÇèO
]§ä¶W&u½0ß
è•ÁßŠÞ1ˆD<Z•Ù²BÒª°¼cÈ]xâ‡ëkÖGÕáDŸE‹©^¾2‡y…CÈÎØ+¼ÃôQW
)&zÚL›Fx£äY©/m‹hSváÅ£ðV²îP	 âÅª [øå
~y®¾&6`ÿ¢°5Ó%¥GÌ\¥b†FRDŠŒ08±òØ‡òz}­‚ÙŒýÌÖîò(û;±[ûÁC†ƒ5ÇÉØÕ¢¤?A¯ž¤ñ’<…›FxB‰Ju©ù|fLò7E€#<Œå<ÓïV–ºz’Wî7*ˆS'±ÕPy~üZ˜ˆžm¹Éäe:›ãÕ)}4T¢ï§yíRGú›XW¹zsÞbðËúÚÉüõB¸BâM=Ô	ŸñÓUÚmÃû³Qú2¥O¡ùÎåÕm{÷©Ûöþ¿nûïR·ýwâ¨$¥O-Ãþeê?R}Ü3‡ObÚöÑ/lTä»Ùà5d¸ô4(§’j›Ë¥ñYo»ŠibäHüšB²÷¸‘@}$"/Á….Ã¨Û0ñR#Üöw¹ïê¦4&Vfng^¦š«[Ðcî{¿—É£	°úRVD¸‰æé=6–zÂ[¼By4Ì!¸H kÀ<<Æƒ‡±ñÐæ‘@iÄÆbŒ…‰[®‹à Ð9$år¥Ê­X:ñhUäÀÞû3g¾p|†s†ªÂMMñKt®bBªelÁgÀj*ÆMR:}V$ø1(};¯ÐEÏçäxØ	‰†¨§µõ5£(‹…rˆÝJp^8JaB»3ùœu*Cuö½Y¥ ÌX¾BK6’d)×ù‹EÐL}‰g¦—Ru½Ûª¥Uê:ãŒnô$–ÄaáÙHÐ…[Tú^ €lÓ2‚ÆŠcàø-Cï×ÖbC÷À¤¶Œ¹Õ¯è²ÄË;Dâ:CgÜáÙžÝs©£+„¿6 $ñ@kL_WF
iO`TŽÆô–KsüNÕùHC<=7ÑûÄþÌÚÃ-šu‡½¶Ñá-Bl·6çj‡/ÅSè¿‰(Äc¦#¬X£&Reá*=_úQ›ziZ¥¿C®€ejar˜F*ÁÅÃ/`ÊR õ¿V²UU‰Z<2—QÐyiäkŒÿ#ŸìƒSZ;]Æ¥OäðöUÏÕ0ö§ïY]]´rKðÿúx[ÑùŽÐùÂmEã’]‰J¥&Ú¶YÛ©ªÕÄÛjŽwž§ö¿O„UÄsªÝ9^ñ¥.RÃËcp«CŒ¬Ö_êªx&wÒ»˜a‡6N3ƒædç‡=*^	0ðaÊ8;a_,qÝæÎ¬Œ)ðÊê˜"K01„@‚
Ah§&úƒE›ÞyæÃ:¼eÉSÝÿQ%cåÿíIdŒ':Œ/QžØþ<<ÂŠö—-ªig®[%¹$šd:¸ŽÃ¹‡”mVhï#ƒ)î ñ#*ƒ³‘}ðãÉ©	ƒX$I¶-}S|wØ+Œ>ÞJôOx@æ'ú’.6Î¿•O…§÷ñ³Ïœ h(~ô©ÝWE¨ý8˜Ä&l2Ñç¸ß=‚ì›ú3üø&‘jKO,@Ÿ˜ëÎyŽºZ1S§6ÓüˆÀ»‡ñÁµÀth™ÆG‹ê}ŒO	É*Óóxëò—(ÿËôÝê¯*z–y)ñ¼#óRÒJWTûò#¦èêcrifQ¨PÜ|KgXÈñf¡æ€Çê˜&¹&LgTüó)}mP]ä2>P„@‘Œ?¿†~:®HhVãîèð>ï<aû3²‹>"E@pO7ÒêÓT*P¨Í2ô¹&zŠÙæúšâ±º¯/HPÿ’¯ZpW©·w‰ð½’<ZXÈôÿ¦I^*¬ÄCu@ÆqZR)ó!ê"×dÍeú 5s>ÀÂqêŽˆ×F‰HEñG§[W‹××!<…’ª~a@¹‹_Â|°«–Ê,O,¦tÁ«¥›š¨Õ­Õ£ne§ú‹Ô=dÉHÚí5ãàã”qŽéB—M#¡Æ¯(ÎÙ¹¢êjvv{eùÍ°ÂMÉþ	ýÍÂvdˆ¯ŽøÊöEr+t,"ôü:Íå-~QdÄ
yýˆe¢ùðcÅê§X^Ð¿UÕ£,Ž®RK%f³F;â m8¹cºRû‘ÞöËÐ]è‚ŠT\2§ˆi›"LË§tÍƒQn«È
•ã/å<XNkPtä}5“"Ú:.›GF&£¶J; ¦VnS¥ÖÃûK!XUÙÆÚD{° µsêê!¸#¹¾Æñã’Hb†‹‡Œ€Ce™Bòò¾}È#~¢ªÿ?Âqãðôç£·çoNx­Eª¯µHéZ_â¿xÂ÷ZõÍá`ÞûÞó£¶V=sË‚¹a³·Ód»ëæªûe^ÆÐ¾¯»ÙÇAŸ°êËx¬ÛPö;Ô3»$§tŽ¢µ“Z=<ˆó8êïu“RíçXh4çñ²%UmKA_uR¾+)¿,ôp±Îae}mTñUoÎÃ÷o á5Ûãëkl»Û{ÙîöÚ½ðëîÎ‹Ýn—ýpyU…L&Íx½*üòôÃƒ¨µÿxœ¥WMÛ6=/ÅÄ[Äë­¥mƒöâ`HÐK´9tS (
‡–h‹5-ª$µ†}èoïR^ÉÞ$¨/»–8Ã™7oÞŒß)cvôNÚ¶Ô~Jkþš×ù:= H×A™¼°›)ýÒÖŠ^}÷ýBü®BÐõŠ>4ôÛ¿*º•zÓ‹sQAÛš–ÖÑBúŠðwï+qýÕ!~^ÒÎ¶Ž¶Ö­ù:_!@B`ì8Ïs‘}æ#B¥‰1vËö+’-Éã`ƒ¥…ªä¢ÆÙF9³çª¨,º.iìUÀåv›Ic2½Ìäf¡W­m=Ùz<¢›ú÷*gÇ®xÞ°­7¶ÔK­Ê/±ì#Ìôª¶Ne…ôê+-7²yÊLÈ²L<ÁÃN7a‰øÞ*O¥vªÖ£¢¡OÍ¶ütÅ³únƒï½äÀùJ…"¾œž—W|Rˆ\+ò­Sª®¨´®íÖÓ¶Rxªî”Ûá*§½8÷¥PÏ¹¤—/©;5H)pZS¢È$FqbÃœh«CEÌ•è¥Úè°#„".JÛ²Åí›·ž<^’Mcv“vaC”•dt<(éT9·>ÊÖ½KÔ¨‹-§[K^á-[x6Çmr{ ’ã±Fx°1ú4ìE£èÑÐ(:­tà0s!>"ãÜ‘4ÞR­@6$ÜÖì@Õ!&:RuD"‚>¨¼®cË;Y}§Dì8?¢FºÙ=ø]S”JUèNaGÆÚ5²•*gôZÍ„ÐKú“28h½»òàIœé¯>­)ýõš#­ÅYþVB™û«!Ê‘ÓGÞ‹¥\ózhaqÒõÜ ‡ÐŒÄ4µÅ[Æõìx£WU eÐïmÓXÒù	ÊÏ-­x«f½2²)Ý\Óù«)¡x‰7>©Q¼2öm¨d(\›Ýóõò²¶@º^©$Ž>¿¼d>²Mt]ª;Ö=T‚›ˆ)ØÈPT±Ñ¦"¸±Vp}À¾ðØ?»‚¥r¶]¥ü#	}»èx†Á£òÉob¼ˆ{ÙYæ±ä«÷þ‹Ä[NÉpØ‘t A”.¡T±¨à:ˆóH”çXî~¶YÃœÒó“¯W&œ3z…›Çv{p,=OJÊOuB>wV„ƒô’Í­n¬,)û°ï@Çÿ${ß+v’‘#Åö÷Z}ìþü ‡L:hÉ©Ù±÷Îh	®T×r¥oâ›É£F½î>ÐI'Ê¿ÿ"áÂõ±èw|üšO7'ÍÇ> ¼+ì±°r¨˜ÑO©ÒÈŒ¥È2ò²4»i×‹Vy&B§âè,[ƒƒ’Lò“É¢CeJÇ#EÌû™²O#åDJ=ÂVpóYWb&«ã2»m†ä¹`EdòºP` iJÇ;ŠÈé-´‘çðóê€´-
œHV¢oOLð(	®žØýç×D!¸mYÄôBÌ®VÛÃtä2sQçÅ¦ÄëÆ ð=Þ ÄSiÜYÍ?–rœîÛ^‹ø»§8P¹¹N6(`©Ä ðâ‰ëéÛ†œ¹ð	"ºXH7gÆÒÐœ‚¹]Î®ÎNŸ\_ˆ³+ˆ}\Æ3¦f°dý×E¹E¤NýÓB2ËÉXœeHÓŽg¥éÂZÃ¯–ã™4q!ütNœM®•nÕrªžÆ—³Í²€æ	1ôYî—”n=A6d›Nj¦óú5ÆPØ?\É­6!Ó5o]¼|Ä6›O#Õ±Õt”“uÒ	—–˜=º³æ4È€=ô1c§èïÊÅ-*uš"fe ƒïŠK¨ënÿ9´n]¾ÝGë6FîÐqÝZQTs;Mb,eúE…%lºÎ'âRH¾½wXp,h)	\[îwé½-4¨YFÌ[šãê1Î«£ôIÔÈvsú¤ƒ.xµœ$ªƒ[ïCw¢ò” ÇRõóM°÷«0<òbUU2nŸ,µ5`{ß6ü€½‚Ž6ÉcÇ;0î)šÑ„‹ç¿½Eò_ó™e¹Ç‹‘`¶óî—H·NOÒŽdõGÙß¾§ŸÞ§eH°"æG¯TE·!{0ã âéägõa O~$4Ö{½À/ÙXŽ5ºC™Ò¹ø‰Ð}•·TxœÍSMkã0½ûW4Ðª¸iÙ‹¡‡lÂ²{H)%ôº(ÒÄV+k„4NØ¿²Ó§_ô–èôæéIóæ!	!²˜8bƒ%YKÏÆ•À9¦M¸V¶ÑZ²„•fi”dCn«¹ &‚˜Ž%5$½[Õ˜_Ž.÷ËÑ~yµ_^gS–Š¬¥kCæ÷Ëì‘qË$TÀÂ>mm¦«€MÔð73®It?:ÞÙ¢C NÖX€M‚µh;wtºÚÇB@TÁx.àßÓ®cwp6.ÑñpŽµŸš€Š)lÎóEc¬î‰qÄä{zm¢·rsÛ9ûÙnu™eÍ—–JÃ ,9!4z®`sš$ÏÓ^Õ,†Šêœ¢tšVù.ªa{î3cý8ßy›tÍÞh>ö¦ô·[¤øžOBÁéÝxþûæ«ØŠA+éúË7oXyæªBõbýúúzxÔÃW=|ÝÓÇ½O¿aç6}‹ ·3ÒEOa>¹;ž‚®å!B¸ŸÎÆÇ“ÂR"ƒ_“ì?3˜â´ƒxœíVMo7½ëWÚ NÔÆµáÃ&Œ¢Í©Eí-.9«eÌ%Y~HÐßár%¯+qœ:)š,gçãÍ¼§eŒÍï±†&)-g3kê€K¡ËÿÏè0Ôðz"zx78h½ôøgÂ?àH7ëoZm7K©‚ãQPÜÙ{Û„üÔ“ÑEô¶DñÉF5@j’‰‰i)Ãl¸£˜.7 ¥leBäZƒD‡F¢
Ãè2D«!$i»ÈV÷îZ5ïƒ5L0‰ë|ê]ë¦;ƒlR`çù´Ï˜Bn‹¨¬	5+nlŠ×ë‹crÌmcgÍõúr_ÖFÅ®ÞŸÌÁƒ­Ñ•{?»˜ßžÅüñ÷7*tÛªÇ\ö Üõú|þr~q2lIoÝPLŒmÐ{ë'¥Ðv—yoC`Ü÷]ûÁ¡œœ	%†ä€"ÐGt*¢ˆÉãáXþšÔ·Îú5ò€‹gÏuh–ã	˜ ^LûÊ•îfE-q)Ù4e;”À0„³PIl ‹Ñ_Þæ‡¼—W—ïŠuuFQÑÆTÁ&/0ÌµÛ Á¶‹{]ç²ÊðúõÏ¿½™<=I›JÚºª2a^ žÛWðlAÏ•dTÞ$˜ˆ/JD”ß}VX–œÌ“|PøÃvœ‚â'‡B€r:¥ÑßÏÊ½óJˆ¼sL+“nÙÊ$ä¢ÇiÎLXÓªÕ‰,ÄUÏýIÚïýRR2Ó¹.e(ÀíŽöõt•NþGõ{*Ö9Â=ŒR ­õ`ìæÄw¶¹¤HÞ£‰z<„Ô#Áit'>})Ôni‹ùŠªHM5˜ª‘ÙemãmöaÖtI¿h¹Ó$“ð´7=¸Ü	KùQ¹Âä´å™½Qµd»C@µ5´\i"ôó'a+kðKÞ—å¯íå´ºÚ®&>ô‹ÓeŒ¡ûPÅâ˜;=Ö=çÄÕ¥ÆÏR¾1Æ—W¿!1ê¯¯c!SÀÑíŸ×À‡~rt–è7.Ä'háä±;M|5‘:ÒÃ‰u¢ˆ‡ëõhâHæoU©CÝpqó8A|äë9ÛæÍs¼ß½î˜YýßÆi¥,A‚®‹¡¬™3ïŽllã	‡ÞJ\îfó©¸ŸYù+]ì~9¿:Ÿÿp·4’¨Äÿóÿ÷ÎŸn$’Ž¬èÿvQ†ö$‹ñ7g†ì†xœÛ¢°‰MHWW—+/17ÕJÁ± À371=u"€aj^™—‚‚‹kpˆ‹g•‚žž>PÚ%³ˆ‹++?©$—Tš™“¢›XP	Ò4YžÉ`²«Òä(Û‰?ÙR’J‹u'32ŠNVaŸË8­^AW¬§¤² Õ¶(5'5±8(VP”š–Ya«_Z\4“K2óó¬2óŠKsr 2º
§‚Í;®­´8µáç¢Ä´’Ô¢b}ˆK¹aNu(3œ|QZ¹(59³ h˜^zfIFi’>LŸHyj‘^enÎdEVñÉÕlÒ“£xtQC	É­‰%V
êZz09-u. ³tjÐ½
xœUKÂ0D÷s¶–0GŠR7‚VùXqBgo¨ºa5¿'M~¦ âWŠð\z¾€¾ClSä±^‰›¯|ÿ Ö'­eÒìF¸üEÞªW@LŠ&HIºÄà†&ŸgãÕJZ°A;§oñòÎÍïépg&ÀS_â>`ì‚Ë:§½öxœ¥XKoÜ6>7¿‚·¶@ˆ¢×Ü\ÛEÄŽ±v A\j´Ë†"U’Òfýë;CJZiE­ô²‰Éá7ï—´2ßL[Á;úáÊÐ\\§¿þþ÷»wo~º£3ÆÙÃ§{`w˜ Ê#»¶&8«5¸7otšk»ë€6œ‚A"b­’ð³g=)CR&LÁ¼@¢`Y©4äÑµÜü9ô’o™ƒÐ8ƒÿøF‡Ä&¸FâáJ¸o¸L,Ñ‚)¬c¾©J%Y¢SfÇˆ4*Q‹Ý¨Gê@6á¢(:Ø$sÄ¾*
”%c<Ý_mž_APÕ;¬b%JO/Y|yŽ¼oÄÔYDÜt³&:­|è Þã™Ðí/íÎ¨(Ø_	/b§`˜	S€QÁ±7xˆ?ô ªÐøèÎe…üÛ€çà•’Î.5Çk©€ƒsÖõ¶¼¦sÏ¤u(s[ìñú&é³%Û)Œv!;mø]ÊŒÉû³Ôð“ÜHü^TÍ’Ž•ÁÙ<ñìáêá&Z£äH…j…
ÑXy\ºJf£SÈ­‡÷ ÑÀHÎ{0ÚŠ>SÁ!RåÙ@Ú»ê FPGº„“.cö™50(i0ö¨d,h?¢@ß‘¬‚Br¥uQ×ÓJÔ]Btn”¯µ8N0ÅÖ6}xx¾z\JŸÐW¯£‘‡@È}JÇZ„=E™0ì–?jçYkuSÍdÖïÕVŒ³h” ÓŒÚ€‡ÀÂ~9‘¤mL Æ/àì«Ö_Ì!Ážá)ÎKö8­.p¹3kØÀ÷€'Xé.×òà„ñ)ùV[må·s^Ï=Å¸X"C¤gñÁÌó'Ì=ö­ÐMßÆ>ú®O&±’¢³…>¾@tPzÅâ3ŠÞ“ùÐm•ª©¸ßÛöŽÔ!:~Ox†æ’¶ª5?¥	µ'ì@'©ûÇ§ÀÄ“E~X;?ËÛÐ*8Œ¼…CÙBIì<ÇT:#--»mÄ‹ªGçä*é¡\ŠšJÌBàóÍõÉD`,•UsL‡+¶Jc×š¥&A×ºÙ¡Ðn¡©³h1…÷€Æ(šªžö1òjºdtÉ~Q%«qBüºW¸ B+vu,ŽÖç°CîIYGšbk}(sÌØG2¢T g5>ƒ˜-@+ðÓ˜ˆ9‹–'ºÉÀÖû"Ïß6zºáÉo¼ç1—{M/¾`éàSz‘C/µCðä.%ôlî†"³1Û"8a6nt¦Âe0×FvÂÄèÂA¯¯Cù"ÜM¼BcÅühNh8P.ZŒä;#1§x£ûõ ô@:á÷ãtÉ«Ébâ,%•Ó<:‘‚hóœðR@Eu0™Œ<òÊ…	5R¿§Ž‚u§¡·APïd€a-ŠæùrÚó«K¬Ì¯[#’½b“éqòÖÿ]Î›Ò‘”ÄªLù{*J£IÍNûµ™÷h“»œ›º¶.`ro‘ º"Ç€69_yÃ)jø`Œ6T7Åìœ“ÜÇHqß¹ouìFàeÀõ@¹!g
ØµL,?”]8@¥P§®¾˜ªKé€„±D£G„§5*Å‘w1Tq†
oŽQø´˜$vBXî*Èu¹Þ~‰3ÄD™õ™ìÒd;Ql˜a‡î»¶8#—Ùb8õø„â‡ÄÌM¸Oonë0i„Tˆ~»5iîÜSîIQ+œo¥hzDéK$S7æ¦èA€üŽÖ×Ëñ½Y-/~/Æs¹f±ÆŸ4·\'ö	ÒIXPè´òåæˆ¬­‡ˆ;Ì'x€»8â }.¡Ë¬T%Z
×èñŸñdåó¥êL:½Ù®k+>÷t€fLà–Ê&¡Ù²ÄÃ‰m>¤£uêÙÌä1þ½î¥jñílÈ"Š>ŽÐ¿›H•ô©ß.v­ëïXª¸¯«Éðr0s8­˜tîTM=$JB1("^.B‰­RŒ}†ƒBtÛÁ© }1~‹k‚m±Xví9+_¬vU@-eÛaÆ„¸Çµr‡¹‹{ý$Ð¹På§8þ$Û9N”õˆ;^êæ,?è€½ÿãÊÓde*3…k®`_6Ÿ¯âœ5™2û-O›g¬†£òÜ}s%Šþ«dW1g ÿZðPð¸êxœYÛnÜ6}÷W¨èÃÚèÒhúh €¤(ô4-P \‘Z±¦H…¤Öv¾¾3”´âM»NýàXg†·Ã™3#åûêã‡wÿ_EÍ•åä=ãÊ‰FpsWýòáWòÓíD"©ãæêŠ2]ï¬LÍmõºútUUuìøf;ÿE(ë„"=µÖµfŠ©!â­[¢l€íµv0Ú¸Ä·¦=­…{&Ý¡s!ÞRuà&!RØlTÇ,wD(F‹ªuËðQŠ×.G•2BûçðÑp 'žœqÉsÌPbu–3Àøî‚X.â¸ÜE=bxÍÅ‘'¨åŠEÍÏ¶€Éñ¼áÈMÙp]Þ40Ê&TÃ’ƒ¡
vÎB„«	nFX„5p]vè{P^¯x»œÖã%6â`t°ôÀ/'õó‡IAt²{qzBôåSÈÁ¶á³6]Í#†g'ŒéG%5e1ŸøÀiµuê‹ŠPGÓ!
xDåžæÇñ†dZ‡)&X‚õF÷Ü¸0Z.ûðq \`úÕÎÈÜ€Y ¹ LwT¨º¶1¢Òçcô‡˜r\–Vqøm•ÉÉG#è_£¥£æÉ¡‘
Ž6ÛMBªÈ2«ã]sB{…ÃÄ>à$³.(ír§ÉY®½`&\x9˜>E#~=b‡½}ŽP]?`”FyZ­H-95¤¯Å”ï6wY¹€Éª(ˆxÊÖdóÓ®Ø@GA@#Ké3ûø{‚;*/âÙ“­¢@ÁûžhÿŒÊ]°Ú®`² ô¶N éƒ_…ˆÕuïK²ª¡ j%\& è±v,´÷òA‘,`-Ü¨6a&Ã¡-€¨æ£¦ÇÓôê.&Æšà£ƒ¨ÝKîýR«€ý=û£ay™€’Ê¢Ç8‘áùÿ2ˆHÏ<¬4´/ÉRÞ`øcr¨°Ù<†c]	Ñ¾Û–íâ+/@Éê–Ó¤@­$øÈL–³?ê«'Ä‚¯ØQê×ì‰Ïp/‡thG¼\­
g,v-I”»Š+–æ²G1]ûZÜ.çRrá[Œ|üøîG¶R!¾ÃK¾õ`°UM4ü„'"~êô²ã–Š¶-W]ÛêÇBá÷0D¾M1§{ËEStyÛ=*<°åàÔxqvºðpÉŽ;Hïx>§m+ <½4fÿõÈ<ÖâÆA×iáõ†‘=e{¬QEcË©tí‘Ê!ä‚F4!MGaœ:ÈöãÌ™ÓäèŽ‚§ÍØÉã›U8Õ#«Qù å¦‡¦{!AO"^½ÉseB€°¡ë‹öó1ºø]¾ƒÑsÉ¿œaBå™´8M8tc«1‡ýT¦Kæ˜È‡0ŒEMP=+Z¼†jÛQh„Âq½2Ç¸xÖ(Ïæñ(Ä§4æg§ó{öê*äÚnµ¤á_J»Í›DO¢¯‡pÑy0`ÿjá{…á~0‡"6Ÿ&±A6ŽÑoðhçWÜGÚlži¡Ûfš©Åvñô¥"w¼üàÔ¢2Ë;\›ÉZìE'ÛšMæEá½Ô-%7D÷.O“UîJ	OŸ!@êø.<ú•ÉÈWh5ç/'_µÊÞ¼]jË½514B	H¨‚%½	Uéâºi¤PÅé¡´©>6dÞ’ÎækSiÌûV;±yºó¸Ÿ,¥·°Ø˜¾‹)A¦¢¡Ø)Ã?OßÍ„ªåÀ–gøùbJ{ëž&úñ‹Á·Ý	‚ÁT¹L€Avc´\oÚÜ,æÝ~’œˆ7€«hªe²ï^W›ä—o`Ý"Zû¯j×S×ÚëpšÑ¾¹ÙVøç+˜«ªZ×É³ƒ&?
iQ0ŒÚZØ$%…`b;èg†v×›Ù¶ÙV oØÞ³»ÕãàÂMç‡†kÜ6zPì«êûê­÷ÓÐ|PœµÚóF^Á=8*!,WÞAZ·°EÉ«»*ºCïPUã·%HÏ:]O(lKõƒ»ó#·'P®€â×Ä»Ê™[„È™¾š¶„W¾¿òÏÑ¾†;Ä¯wp£0h3­ñÔI§3ª=ñìƒáfËxˆ¾¤cfeú"|ò™€5½×ÕÆGs`Ç¾ík$FSl#™Ñ“KççM¼æ5üeßKÛ›ÀŠ[ Nt;G¡ª¹x'8ÿ-Ð íÈ+ôp×7¸Ü&kM{ök”÷º¹ûæãÏ¿¿ùíçûÛ|<~öƒ ¾«>!»,?õÓ‡“]Rç)·:^b+Ì#hæ6ënl3æz?'-»amîÿøû¯ÿu¿îwÿþwïð9ôïà°ßMJ–Ÿ‰} õ2÷¯V™÷q¿~âná|¢‡(ü€+oŸ¬<Gü‰ªwïÿ<C!öAôÞC£§¾ èš3‹”W³Ê’S4í@³ï¦Š°\Q K'@4WË_“Z¡è‹P¡ÿ¬/Ñ–óÊrYW.©J¦)m¦)e5”×ÙS°Í÷˜©H)Ž³Áß !ß. “|<áª¯ÒZœ^ /“Žr¯ÆpÁSûq³ÄkÀ§ åPõ¦Ø[¥]åkßvžµê¡IÀÿ6¾æbì žâ†a=|¿½xûÖÌo¼¤SPŽXrhêè5xoÏ%ò’µÿ+CÇ®/ß÷YÙÚ¶—®f‘’ ûññ÷´Qpµäxœ½XÿoÛ¸ÿÝÅC¸$·ø[œôp™S k|«&1bïÐ¡*Z¢l®©’”]ï¶ûÛï=’’¥4.°]° ±%ò}ãç}¥£#°~ÒßBØŒ_Üä¼Ë’\ÈnÁŒ±k]V$7¥]+}~ž¾¿›\sïáƒáÖÖWýþv»í%*^*õ©§ôªo“ÕeŸËþÚæY?08yå’kfIÞ­Šÿ‚ôð~þæv—q³æÜØÉ
³VÆAz%Ù¤=Émÿum<Ü2‹Æ†ýÑ >8U;wL–,»‚û_îxx©¶æªÔ1÷[~í“«’­pm"W™0kZîôoá‰&Q÷æönzug7óùâíãñ¯ôÈÑñðÔ9ÙÝ?úç¤ü ·<’ƒQ9‡BiË–"vÆ–iú‚š~û£NJpÛ²\™^Â—‚I—ƒ_ý8jR ØÖôV²tûLÇk±á>hVZ¥)Â;ø©;8ïçf5†£í½”¥‚C$Oz+è%n>CtÂ>wz<ó¡U­¿¨#·ð”•™…TéœY+äêU$Â°e†‰¹+Ö\2+”ìôäºµ÷ÏÒX‘ŠØíÂ	Kh,ÿ‚
2žZÈ™^		Jf»ÓN%½(w7Ó{xóp¿˜Ü/`¾¸y\Ìáíäq?¼”š9eïÍÝä¨óLiƒ¨ór™LÓKa5Ó;pT«<g29Ím©%~t—ñ2ç¿˜Í§sÌoS ²i'J§¤"ò:¢ZI”>Â8áó×ð!êF]UÄ*á×cÿýþv(¨^?vàÉŸcJ3¶2×c÷åYRo‰B›Mr=¦O¿‹JÝËq’åÜ,F{òI#/'êÆÉöüzLŸ•‘[‡{Ã#\Ã¡_6×¼ðáù·dyuÃQ“ïÂ¯]4×.ýÚå!Y	³,êf\^ëGO•Ü9·¬!¡æÍaü.!‹Ò¢{D†>¦OÏ$À¿àÒ³‹è4„ómµ°Ü-mðX‘sUÚë±U^öJ|<@½t‹¨ù¨väæjz‡v”Ò%‡f(m)$%Ñ-Ð›V–]Ãƒ·´€úý _†=]Æ^ö§†TøÌ»Ìß<Ng‹éÃ½O>ŸÁ¦Â®·òèß§²»ÆÝ¢È°øQ%©}ßƒÅZ,{;XrGeD^d;÷™@îËliÎ@iÇÄ2£@È8+T KlË\ƒH›üµJòZcµ—(n@’Ë5"d}qV^‚/†´©‚6ÈdÂwë*S0émI3E&4iíœ½ád\ 8íd:¤â5²ÄÄáeÀ	ÿr}|éSQœº2¨Ë,3:@-‡§•]LÇÜ F¤ÍŸpºŒñ™ž½/N+kJ×8A`ø§Æ¶lgPuÁe‚]w8*Wÿì}Wë ™…&PXzoZ­&`9°æ_ )ó¢vdÓ Gá^¹³„MÒØZ8¢«¦•\ÜE?î À}p1Kc6ë4+þ<Ó:½Ç9\8¿:ùe§Mßtˆ€¿Í CÖIPR÷¯£ÕDžj¨BÐíþ·Šªvãõ4šQCË†e%wXùH0\oÆTð,y"ÙV—à”þ\ë:¨3©¾)Ýu’çQwt6DÝáåG×T*™ó‚Ç8%qÓÊád«tÒÒÅ,˜@š —î Z:À„5Ÿž¶þÕü õo†	‡ð=(šÇ>ÄÃz»²}.‘À3Õ•Êøé#'J'«Î­’ÑIüÙBi0™1tÁu åžÇå¢ÔhÚ UÝÌ[þuËÇ˜¶+Ÿ Lò§¡´9qšN÷“Ùb©’
=jNBH=<m‡$µHåyw…—y†YkÊÜg)‰/nñòÖ:Ckðyv^h-âd,WˆWå…`Z¹÷Ø¾ž·æ_+|2b<«´¢ùß¯,L y„Ï¨y¢é$«!Ý’ˆÂpdÜ*Ä{!ÖY–a£ôE£•käŸ-óŽ#W´F_µŸØVi¦ÎñN‚#tÇ™DÁ•Ù­x^l)b–œXÅJ*Ìänd²o?À´ðpÅ	«}]ÿÎûr Ÿ³}Ãi+,¼Â0ðÔÊøÓèÞbWF)H—P÷ÆáÅµ+ŠšK[itõyðt^ApÓ2«Ìs!³S%NEÜå4¥?#ÊÚºæÏd¨Ä¡tx3Î\ FÉ}þXðŽÌû$ÕVî-šÚýäÓ²¡)!V2:§eV÷œc°ŸW–ÕÓ’k¦¡JìÇ·6¢h˜Ÿçj~¤çéÃ›Å;´C}ÂiC¢§µ8êÌ“÷7w³w“ê2ç„ÑÏ¢_£N´>î.Ž£“e‰ŒŽ£¯§ÿq¿2AwØéMg@DpÞ¹}ÊÝTe™ÚÒù\`R ºÙ³5™:`CÿåÐ÷÷©ál×"^#¡ÆvY(*éˆ&úM$˜Ÿ"Ý²V£®›ç¢‚a8»Öþ5^‚•ÄO‰ä²‹ÁO¯*MÂ„©÷_¼:¿Ù¼î.+!íÏÕ¡%å8†K£ØïÏêÆ0ðØ¬	L¼Bç~„'èÆ`Ù”¯žTl:ì/£C2Ï_ê&^}¿¤«tñU¡3lÃÃTPO¡ä:×¦®þÏ0Ðõ^cÐüÃÝ°º}˜yøÅÓ§ÃŒi[…‚ÿý‹¸¤aåwÖ7â9â¹€xœVMoEÕŠÁ&	Æ°Á(¥Y±ØY0á#àØØB2(!Â‡ž™žÝVz¦‡î^Û+!ùÂ‰ëp? ¤ÀÿàÊàÊ‰;U=ÓóáÝ5øàmUW½W]Ýõjþú©÷÷“Þ¯ãÞ3‘ÊŸêÞÉZÿ|üùmüA°º ‡<‹epÿ«{EšK{´©4eY<€\«#sÐÜL¥5ÅÏŸü~! ¤oGýk&–!ûhKÚ]·ÚÛ]ø‚jSñxtuøM„REŒsÍdHaìÀ»‡Ð1SÈ†–¸`¦ö6ÐØÈõ%t•"–ÇæVÏÈI¿Œ^íãN¢tÄƒi&lÀ¢ˆC»	í¾»¹Y¢ŽKµö49´ŒÄÓøë–¿öþZþšü·Ñ_ó$°lìüqKï®¡±‘÷»èÍOr•Çpa¦WÿËVàÀó°<¯ypÝâaÐØæxª0ÓŠ«yF­@Ç3¨xRfù Zû€ZF
¸u–Š6L;´&»×Ž­@,t`g9w!´ðîÁ[Ú®©Ê÷‚ïzÞâSÂëI™uŽ<ÃçR|À§°h§øsôÛéÃI·9@˜C8‹{e,X®¿bf$Z¥ 2JCª4£¦øWW¤‹ˆIpmšecn(”Ù›0R™áÑÔŠ#17Vd¬o…Ê`Aä°xrðZñÇÁ…îö‹K{áz° 1»/´:ÓÙïmß{'…ÇT‰ÐxŒŠsž²xv«¿´‰äÅ3ýì‰>Ü£²á9ÓßÐ.1Rí²irÇ_BƒÈ€³hRžH×	ñ]l+‚'ûà<2c™ÆÓ—r­u…Xz’`7¹5£r€RrÉÆCŠ¼<¯8.:¡è«í‚¨T©xe™(Ì¥Ž*Õ7ø@+‹mFwu•–Ö‰à2†cyâ}&éÐÜa™“2ÇÒÑ2ÏœË¢9‹Ï’¼¼DÿÜ¥µÐS\qÑøÒð*1ášg[•æÚ+¤K¿#‘û¦7pÃutÐ}-ÛÕ!‹«;D[]=Ñs„&B>“õ2½uYw×ƒ:YW¨Ëò-[s™F;’ŽH{’ç	qÁ)7‚\ÿ?ºMx—»Â]?•NÖù¼´7‹=q¬5jïñO¿Èé‘áCÁ(z’(’´?’èì(åA$
¯œÏ\³•M{Ää”»÷rj}Úp/—º™€Ú³´vÐhSÓñì)îÑSƒDF$¨’®%nìo²í
Ô”yÐ¨ñðÖÎdàx\{¶€,vR
øÅ•YäÚWWn¿™ß¡ÿqL?±-®ì¯o,žy®bÍÐ›¯XÙ®ÄÜœÎgo†ðõ„gåP;vÒäUªH™¡JàìsÕ¤!è«‡KJ•k»Èi‰ÒëÌU)!S–0ŽN^é´+†æßMqñ¸II)¿êöpXZ­¤äzëõ[oï¼¿k b9…D9áTÁbeÿúæy£Ÿê¶±döcýúåà®Þ‡ó€Ò£øaÿÇâôîÚÅû
ø	£/h3n;Cùég›½_õû”å€ˆxœµWÍnEÖ‚‚¢€Pˆ*<ë]Û!!v	!à$ŽQ¼ ¡(‚Þ™Þu+3ÝÃtÏn,!íCÌ…Rœ¸€’3ˆG@¼'$”7 ªgz~Ö>!,Ùî©©þªú«®ŸùûÇÖ_OZ?[³By1ÓÚì%éã­ñf]ýùÁÍKµgðæf `7íGÂ “À’¾0	KöA(ðU1,AÂMšÈ,øð—Ok›7–y´	ó¡YøHø|~hÖážç©ØW¿B/ò¥}ñ-x
*YöõÕWo£ò dCmuíÊ© !º¸‰V‘Nï.8	z(YÄuÌ|î‰\]jQªÓœvlâ?¯XMZ8k$]uÒÕº´Ûqân‡ ®ân)î6ÔKìn¼[¢wW	æB¼VŠ×êJùRo£8`†y!—ö{pG¡.¥-¸%â†5¶ÕvDPHù*'œô"ëÅ8†Óó8ûùê+„&dœo Â<Ú´p`œ„Ðæk¦¨n7TÏ¡ªW©±šF9=ù3iB-½§Æ^qGé½&·^"^’}/I%É’¤³°±×’n6Šû$Î~½vdž£ÝÐŠ»vÖb¨	É$!‡Ìpé[ˆ^öÃÇO&yæèfêÜùb›ÃÖŽË ß<…4˜=,ŽCá³~Èçf®ÓÐè6ôö„†ˆíCŸ[%-¢8Ü·ËgþÍK+Ý‹ëò=;m˜Iõ¨„6ÏÍ°P+ÒÓ A?xbP*Q’†Ý›@qRÍÍix‚§Gx¡$¨ Ï]MÖTŒ/ŽKÝÞXŽ77–1Ê6nœ›L•ƒ˜%˜†\ ÓI¼ 
"SÅY¹@àÄ¢[Þü=ÜâãŽ¹™øÃË°ŒËrñÎ¢=,ƒ2Ñ¡*ÿXí³Ôew±áâ“	:õ}®‘62›³Áä2I}\#VEiÑùZj
97ƒä-šxÂB³}>Ä\B‘Ú‚0KŸ-dëy\'¥°8!ªèç±Ž5DÊ€á‚=þ‚4Š]x>X¼ÖEŒ+$£ð$æˆ(©,ÁØUý}ãûãŠüûÎ['ïì«Xë¹èä2kJÿÉé"PBÖoYöhk~¶VÇ	ÿåézOèë%º»…öÕ3É6·_xž: 8Ñl¿Lð#¦Üò‘G\ód„TƒiÈßnžŸ‘U—@ÔÓ‡wBß<ˆ.5*M¶á:0Êt:Î6ÎŽmŸhlá4õ{+ÞêR·ãu/ÜwužÐïîÆÜè¥näo0VIÐ°ÊèB5 .5pi{»ý™b¬•d>#¶ÀÓª5¦¿Gó
Ÿuo™|®‰â@¶a"á~~™q³¼}“¢‚ÝS™-4´#fÅ2Bp1¢ü L$EÉ¢ªH5f2ÞUÄboç¨ÖŸ
i3cÔ"l¤j#uê°žDLN¶š%PPöØƒQ¢,XK‹ÕÄCÎ*Œ´¿Æ£"Ah‘ŠÒŠG3Í+Ú´%­&';C1âr²„	«ÓÈægHvv{×·îØM‡;ˆ7i"UsÏE¥*ËÂ QQ=_ÆäoŸÏ"mtã±ä¼m7x;y°=ÿ?¬93ÏFß¤äo©vJÿ}\éÑ!¾ÖàpŠÂS#–-‡ÎdeµvP0ÄkîÒ¨ "­2®êÇÖLtÀÌëç¸º©K½:ÑÿÒ\KS-x±˜®¢ ËÁÙ³ØX€"^gé'J0~v›-$ÇÜìe‹Èu…qÄ9»q–É«y½(bÐÆ,¿ ÊjtËûf-è^éë©TD£T›ü3ÄºbÚ°CÍn,¬;…æÂX„J……ËUãó­>d¶60_¶u`Ã-/JÁeÕpŸ³*ƒ6 vz)g²™Á­cGòAÓÖ°bêlL ”ŸòZÇ8>!j4fEÂúµoŠ¦Ôì;våJ}ÞDîiè¼·Nî«'ZnK0ÕkTÖ“=•ØÁ¬j+Lµ(ÿ¹WK¶z„äy¢Æø%_˜…·¤×ºSáé–±þØ	¶á”Ú&$_ÉH"’³¢bTHè¥ÂqÌ9]V~Uê—½—ßÚb®§H¿[¿ënÞ§õÖÎG½Ûèz€ã¡D÷ÛÙÓÝï&4eBý›º>{Bù9¼Sß¦ô®LáµÎûïAñÅå¾2;à>,ÝjåJçáÅþ@õAó^Ð§7.?þ£w¦õ_£mìì:Œxœ­SAkAf-E(z-úŒ%§¦› ¦Ô&Û˜JQTŒZ-"E&»³ÙÁÉÌ:;›µ^¢þ ÎÙÿPØþŠÅ“'Á“xÐ‹¿@ßl¶zRð2|óÞ›÷Í÷½™ŸGÎë#çpàÌ’`ÈDÎœgÞš[wJÔé¬”(ì|,QóÒgßltWÍçîâB½]åzÓ²F½:Ð›ûæe·næmwÁ|ï¾7_··Ìá¶›?¸ü¦¤2Ë;½|´óaÖÐ½jþüú·SæwoÙ¼ºVÍó[ïfÌ‹»çLãÆ™Ó±¢!ãÜ|ºº”/Þ[wfB©òÛ{œqÊY¢+^+åÞü\‹3»Æ¸ìFBÉ¹Ì˜@†‡A¥4†fðåpHD€)Œ}Ðvl¤PÐn¬B1?šŸÃR¥hK$ %Ö ¨Ð,<€±/…VÈCÕqÇ5ØXô	Æœ‚¢S†Ç-5ö
ˆ&5NÄD‘!ô)œ¯o4K.`E$ì)XQ*AH´J}ÄÔP¨)ì&Ç±fRØsi‚5}êÀ´‘	ÛT,zãZsZÏI’´+Ö?´¨Ï¥ÿ¨r"gÅ¡Ð"Œ#ðZÖ%ï,ˆÑ°´q\‹±RG*7 #×fêP«•†Ö›ˆ%·­RÜ—þ¢‚–[4ÄKas{9äö&«ÝM¦9éM,„™BF„¶£HÆdDÑ&¢§ö#|.ôâÿ×{RîàŸôB­ökàûy(’5E²¿rÀM¹ùue=ïÝ_rþ ª´=„½êxœµWßoÛ6~6ÿŠöÐfÒ¸i,³K´IP{Ã†"h‰Ž‰J¤FRv3ìßÝ‘”¬ÄÛÃÄ–ÈûÅwßÍ¶Q…¬mŠVz6®{9=óƒB\ü|)
üæ¹"°èV H·ÒÁI÷,¥miªcp*tÎà—ïêà…Xüq}s»¸Z°Y6ýu«œWwâÅ/`V©­.ÕøZ¶-m¥æ³øýþ†ÂB~»“	Ê¬kùàç3þb‰5¤—;4áü¶šÏè“÷¾@|NºF6Ê·²T…F)ãuÅJEYíÞÌgôÙ¿ŸñûYÖÄçé)/MO{™é4®L‡•hfúf_/ššžRoãÊÛaå]\y—õ*dQ+3Ÿå'>OÃ{’lTƒtl`¶'£MÛ…b­kÄ–>YDC|N2NÉŠ–pP;§ƒ¢÷]ÚºQ¶óY°¬€žÒ¦ßØ]‘R‚6}>†{,\gh©Ê~ä®XiC™„««´Ú:…ÁÔóYz`-ô¯I¬–A™’5—wB\\.~ùru»¼º¹îÓ2.¦­çíõoŸÕ8yþcþzÜmÛZ—rU+‘òù–í¡‘°R,ãuÓÖü˜Ìø”ülÎ:Ö‘’µ· MYwš‡U·^+z½¯ß‡`JþòNe•c…6A9ÄkkÀFýXž|Ù–6ü‰KÜèkª•S>K:„ÁD±TÂh:Ii´äØTnP¥DmÀKõý^ãËk*ßÓ#>š„¾”`UÛò–6Ó#éÆ€ïÊRyÄ…Åó*Ëu%>£B2 ”£ë%µˆÜ+¤YÃN>zôÚ*Sió€Ø%H &„Ÿã}õ>è>ZGPV°Š7Ø:û€Ä\úU×´ùòF°ænºÂÞP°è¡ÂÂ€5áb,Ã™íâ.^W§iO‹bÙÎÏÅ3îÃµÉ2_J\c_x\ú¦àäÚì'“!²Ý_Ž¬æ$ã­k<3*ÛÞcÛly+ëN1ñ¦½r[„i­U]=±† "³¹ô|Ø¬ñ(qÀQé×7ÅÙñô´˜¾»cNe‹V•cð£º«vÖU#Ó2€O¢(°V0ó&c\<;ò%=ìøé’<ýêé´)NæåJ;UÆ¬LËcúù³CÖ“žQ|Lë×¨ªô–œlÀ…5/tË3˜´ÉûŒŸs"l%ó<Çù¬PÌWc:Ò”ê:¥õK6}44|rˆ¤H±±ôP³…Do|çÑ	 Ã’Šì?è­2Ç¯÷]«ˆÌ.–W×ó~Ÿã¸ôÃœ´ ¸ð€xd„S Ýp©’ýæ©ýq}æ#oÿW?žÇîØPºLn‰7€€Ý‡ÏdC¸‘V{')]Xûò˜¬±ùÄBÝË}‚w'#êäÐy#!"ÔC™$ï›Î‡ûè8œÀ1×NÐ†]ð
/û^?‹ÙzOa®bôý|8—>reÏž	§,w@Lˆ¯ÉEË.Òí«§Ù¶Ã†	‹Bu:ìïÌï!‘ÖŒZKêåäþô„.tèèÖº«s8|Å¶Ã©AqIQá¡0"ç¨%"H“ˆ-•mâ˜‹4ŠéÜbaâäœ‚ûfìy$tØ=Ï£ö”Ö¬µkhY¦*ŒÅbûË¡õ÷žX³ÃxC .À46=Ï¿<OÑóÕÍ/ËOèÙ~Ãnl0*jÝ—¿ü|ûérošÿ¨ Ö¶®íŽbàÜ \áj4^ñáS_{ÏÅ1zz».7%¶ˆÖåá™\]aèõ#?8ô‚§ë³œoN}—8õWÀ”. —lyÖ·§?½OŽèãìö—ÊÃÓó!ä„OV8‘Óµ¸²Wª”TUxŸ7ç¯ö‡ÏBü 4ûÀ“SÃP}³?}{ÔFCþ©1¥@Ff_	ÄþÆå<ÉåîåV¥ÎÕO:%síùÿŽîðoë‡N,õ±óEú]y+]Èóï?;DGíê®¤ËâåzµSxœ}UÍn#EV„ˆX{ ™ÚÕÖ[Êdm±B¬dG„M°"œÅ´ê™îqz™é¶º{œXZdñHsá„öÂ}ï< ÏQý3Ží¬¸ÌtÕ|UõuýÍ«—~ýðî„™(OH¤1¥þ³ÕØº;8ÇÑðËý8÷Ç}±õòî:âÌ ‚`ä5™’œ|sÌ€²OYõù›žšÅÖ.†qv=Øƒâ(Ž)˜ž’”Å§ýžÐœîÁ À	Õ/ÛïWÿnß¹”wÖïi|z”'Ô((ÈUÑË~/<ª€Z®m’.E¿çßqdæSæÁÖ”KEÄYæ­nÎÞ&‡Umñ‰á“¥é÷ÂÁcÜÈ?6  úg»ùÅi‰÷Ë¤*šø··P‹ÕoÝ‹¿’
Ì[Í6LøŒ‰ÐLP Ä¬`›"´àRYÄ(L•œqÊ´ó¦˜.sS½ºó÷X5À¤%†€6ªLM©Xõ[ãû¢4£Ì	ÚO)‚/.~Â}J’œ§°"—”YÆÖi	«ž¼=¨~§½YÞ²Á¹f›zÊRžqŒc{#~¸ãŽ0¼rÂ ´ÜŒ9cJáÅœ	eÁ‹ÁŒä¥#Œ£^AzAOtá“Ø*Å2@»&ä2ý©NsËgiÙí‡ÏŽNŸŽ‡ÏŽÚH¦±{~ØØ=;k,ûrol“ßê]DŽàqcdõ\LöÎ­>Ú6Ÿ=Ž£„¬Åxdæ˜d\i,Œœð”äW€0ºû¦ÛCø[CÂ“+^”x‘EY$˜Œsp)Õ­ã“ƒoÛËlk;V)–@ê€6ÛŠawˆ•øH¼và‘Å¾SÂu­ýñwg‡«ÁíÝ†å\€yÁ:k›'Ê°zØÔ˜AZiœ¦SÅ§F*½^˜µIÔÔâõ£Ø[™˜˜‹Öùp“Zî>ÔEræVH¥0|RJ$ƒ¼4öç„GÂ–z…Ôbe'xJ·VGàrZ·vÝÖá»oo;G
žç\3d@7n³I|˜°u›k§îOœF¿¦Ò5j=ÐF6âìHX!Ç¾c¥çËŠg+&\5G…%u*ò9H‰qk7õÜ¾keâ®S]¿G?„Ð+5£Xj—Ë<¯S¡«ÍïoþqàâÙ}ØÝêºy¯Új¿ÞX3Áóò_]?á¶LÐí,×ŽA˜kÒ¹êv:êçæGãÿ‰
·ÿrÝÍ¥Ðí¬Íip|Ýüè˜­á%†GxœuAKAÇ	E*ƒlÅK°ú¶Ìl<ô"¨4Ú@‰»©'È$ûÖ¬ìÎ¤3³+…Ò~…ÂÒRÄCÀÏ%ôÖ™Mz¨ÄÓ¼yüßïýßÿnç~ógÃKÇœjÃM®i*¯~¿%5¯wÒf4¶‡ŸCF{·ïkwÏºÿË€QQD`¥VmèÙö€_!(ü’£6ö5¹Ú¾:Op+·£å›5øail‰cŽÇâ #,’	Ã£Œ*ŽðÍ®Q£Å_æf–Fc©2nŽãÌW	U="~œ?ü»:áiÐ»ŸÎv‰¯g$@£,Pƒ™"œ÷û¸Òx¬dfm:ÂÂMåz¦d‘DËñÅU6*ŸØËïÏç/VðÊÓõ?T5ayñƒÞ93<nM[“©’BÚ¡NÂÜÎ76k•Síz9“n„K!µ^xÄÇ©u^¥RÖ¼×ÇÑBË^ÒE†eVY^z½íp*o*þ"T‡¼ÖRü£<x¯šOSö«Ìžìb£ê”¢¾UþªÃ_rÁÉï*‚xœR=KA%H‚n¡Xˆ¢cñAm$Dƒ
4A]‹½»Inñ²o÷Œk«Àvþ±¬üCv‚?š¨Ámöƒ7ï½y³OcñÎäˆUGßQÚ	¥6÷³Ã)¶¹³QÞ.mq§üPH=x='ŒêÀ¨¢ò¡|¼°ù	€²h n
apÐÅ5E!Æ‹µY¤ƒIb¥i×Ih@ø\ÎÓPùÒá$Ä?”xWŠ×*PðñRzX„Sîp'-î¸R‰¸×äÄ=cðû²·é£é~îìK:Lèæ"{ž™·Ï™™É¿+ìkæíÐ]„,W©Â
;ˆ¥2`êX´ú¥â&µÆ`"ÐÆ’‡©AH-üßûNQ*$¡ìÉÐêè´ìÝÐÕò¿-¶€šqÍ.±Ùõß³‡<ŸW—\êmŠ_££7{Ã&Nt“íšqä
7l¿+|>Š®šŠÍÝ—1zæ³m­ $Z*òPi#ò‘()ÎËUw Kß«”µw,ûá]æÃê'‚xœmROKA'´ãö`¡¶ú,¥F0‰ROÒJü‰H+2»û73Û™ÉÖ€c/-ˆsñøÄ¶¡Wï~‰~ƒÒ7;iè¡Ë0ðæÍûý›=ôóñù“ûºÏÔu}¦vvÞµ÷£ÆöÞæÍFåû½§®a™ìAÔ€ŠvvÊkv5X²‡”Óök0¿ XuÎŒ<}óZhž¾…3àû#xf¯‚QàÖ«ê!BŒ€Ü£Úì·êbk¤<ˆ3™œ@Š§¢Ž§ëÐ¢¢%Š>®ˆU{W}îUÌNýý%[&b¢þ¦°ÙîÀZØF£8èh½%pN»²=^  7½lÂþ1×@Kæ†KÁ2`7ô IPkè““sÑ¹%‚×Õ“–³˜gÜpÔ`$äJ<uÜêhi†AŽêÉ3MÝºF¯±Ì~+Eaxwï¥0Jfåæ%ó’åƒ§.yÕNE—2S:qÌÎÈÊiwüMóíe2&ƒ“DˆÛ°µZÓ?ÜÍvm­25îÛËéMþ¯éÏã‡ý¾òG·á‹™ò:ò8Š}ºçíÜƒ³?ºoÖ"êE‚CxœmSAkA¦HÕl…ö Ê;ˆ¶­­MñRÅ®HKHB=¸=Lv_’¡Óuf¶6RÈÑ«°WÁß E‚xóê¿ðîA}/›&mÒ…ÝÙ÷æ{ß¼÷¾7ßïÿ|ðñÞbŠÆJë0q>ž`òåaiîn=h4«ÍV°ß
ýà`¸ÔÎŸÏ}½ñl
í|¥»úÐÄ$†ýƒ=„	†ˆüö|u0q†E\Èa§[1žÈ·áMè‡¾ˆœÔÉ‹­bÝ†3âpazpé0‹¯B.þŠ Ç¡—š_ËÍ·–f’[¿ùgqÊ™?½õw09´×$æ­6šPñ^÷¤Bp¦NƒAg$€ëIÜ—L6B¤g´RhÀö„RàÄBœ™t!5:Bkùw›â`œó¤¢ËÇÇ"‰ÃÇ«ÐbÂi:»#QÅeh‹1ŒÎ;*CÖfä“ŽÐ}h ˆ¡F|»Â‰2Ö‰¶’¶/)9<u@Œ#Ð`„mÈ£¨Ç¨H$ £(3œÊ+ìiC¥ RY°ˆ<œ¦†j‚uBU ™bÄð&-Ù$c½Â~7 >‘ `]Ã<—ùSÉ–T£µÝÞ
u>ðVëuïªÆ…J×LÃH©¥t$ZÐÎ:bÓKñÐîó¦•ï‘Û0 5ßfh-¡f÷G6²Ò™I¸±cq­3Yäpt¦µJ…ÇpY4Þª^I +©pÆ¬Q;ñÅð°£Ì
¾“45†Õá#[Ú	5lR“®ë-·jµ.‰7y^ò³ÒæÌ¸Ÿ+Uæf/Áo¯º4}Có­…³È³ÈJcgþäÎçÿÏ‚fç,ƒkxœ…RÛJAFd5…¨ ˆâ¿ÐŠ
A	¢¢ÒÕFm;¿:°în;³BÑEû =APxÕUà«tD³+¤V°sõ3ÿwšé/<Ï?ÎNneËFB5®^è(ëêk&™:>9*+rµVÞÛßmlï–{¥È[tcÈeÝl"CÕáÄ­Ú ”€¡·,¤‡EÐ½i®(ürE¦dks0ŸQR‚+!Kaäæ4#ÇûrÞLì|1Äô6öy˜øºsZÖŠü®D¶V‡|¢†Ü¦è"ð6†¼›ƒßQÓ´l‹ºhÀ@(Q–²ÐhSÂ@µ[NqÉ £Då¦Ý1 å˜£iÈüMZ~Û¦t©†ÊŠv)P\å”qª1à&X¶éRâG’"ƒ÷¯äsGŸ×T£ø‡¡ï¿þ7P÷*ÉbH‰½ûd!VtòÏXMÝ…±ÞS…ß¬h:#¹½\úév÷Êã|xœ[+=Ux‚sb^âFM>FG?Ç]÷Í®Œ[™%€¢º9ùé
1º
Á©y)
~a¾©
@%“MY=’1 Ù˜´ ›”Ô²ÌäT;…èÝ|›´Ü;…šÉ\b“-ÙŒ¤‹+ssSKŠ2“üsS‹“Æ$'§OîbËÌË®69™]‘dòbö¿þé:@ctÓ‹òKŠ¹ô‚‚L¸‚RKJ‹òJ2Rr2‹KòÓ@Q€¨Q(Ï,ÉÈ/-KçÁ­ )ÌÌKßœÎ%Ï6|)·:SëäSÜ* OþÇ­1¹‰W à½T©ç{ª<xœuUOoE—/=X¸…Ñ¢^ÞŒ#²±(jâ6¸ùcR‡&ª2»;ÞìÎX3³N,ò:.H(8!µ_‰OÀwà
ðff×Ý¸­ÖÌ›ßûÿ~o|Zûé¼ö[R»œP¤!	”&:WOòÚÉú‚ÌüýÑ½/Š hÔ`‹jØùxF^8–"ƒ½»b:emÔ×ÚóÇÑóËí®À‚Õ½æûí7/Ãwph¦úW,6·7¯¿‹¦á‹À¥SéÙW…‡f¢oY¼‚RbñË>#§A|âÀþXÂ3x&³
«…‰4Ü)øc gZjXx°ªÝBUžÐ ¥^{~+uS˜‹ÍÚæÍÇý×eTäºhÐ¡ùkóÚª7Ž¢I®ƒ±ÑÎ?–Ê.ÊÌ?ý§ï
	ú˜V 	›R¾Šò>ÍèbÓHœ1‘È2ÂãFÿ`"Å”ÅT9s’ª<Õæ×»ÿ½‡,9ÄDPZæ‘Î%…ŒÌ ´@¼qšœ‚7êæÏ­Þ>LˆT(gºµˆæI2ð®×^‡ “0¥à3ƒ"!IN ÌÇc*W†~ò»ùj;>Ù¼,d!§"kÇ=«	Ø˜¡;b+ppÌ„	©›c÷ËmŒZ€˜R)1}§Ó1ÁôaJÒÜÅ”¡\BtLägå°—†Z9Ÿ;\*“S}S¶¥å‹:'ÌGƒáæÁÎ£AÉ´÷ß©WÆ{}ðöÕçy`‚{0Y1ã‰Í¼5Â¿%[ÆÕ‚ilkŒNvÁ¹3©°y"aI‹`
Mg¿iþ^ºT0}¾ö—¬Ëí]rÊ²cÎ³3Gãý!cÕÚÝë.Íë¬°QÈçÀØmý X§¯.RÌôÍ7^ÌJëÿËw‡¼·6>ÿôNÕ§Í3£ØÎTXì¨²%‰)¶	§ÜÖÊ‚*“Ò§*’l¢…T¶òW*¼µt¶¥¸öª›³á[‡÷í	v(OôqëþÎb(©{(àÔì%\³$èãP8‚	ã.4œxÛE[˜Æ…õà¢(Î½ªKÒ–ãZŽjñèGv2–¦LQô»,_©î4Þ¼þ’}cœù¡!Ãü:˜?uI±¡k4[çö–®µñ¸ì_+Á‹«ÏÈá2NäÌAV`ÈÓ™ß.”Ò8rôªÝ-Ž›x'.;óð³Ÿßß*ª4³(uA²\¹¢¦iYõøhïæÂw¬à¶]‹Þ5ç‡íí…MR˜ä$£jBÐj×“Ö6
ºù†Áy/¨`U:§ÝN§cjG»ƒ—úƒ ˜[XÜëBõƒ×µï½µ'çGßÖþÚ£î3†rxœ}’ÏkÔ@Ç‰ÇHÔSñPäI¡^Ñ«[[q»ek»VðÇE‹L’Éîàdf˜™ì6Ô³—‡=x(A¼
û§xóâ_áA¼ø&YµÛ…B’—÷}ïó¾oÎ>ß§Á×apCiV]Ç™Õ<ÎˆšÙàhs)ê~mí½½4G! <§"–SaYQÃ³6ºRX-9§º˜{4µ•ø0·@Pc¬®2Ò(ÜH”Sƒ›núècg©ÏFBËMXç¶“Ó1ËèúÐvàu,›P!uIlzî÷ã[.î~;4Øà?“Zfjø3Y–ï(TZŽQaÀŽèyÊ–›žÃu[Û?Ý“ÞZ NöV®D¡ûÐ»³RPDLLë¦jR‚Ôþ3
5™@Zv/I>_3aQ`%Ïee]¼s:{³5p'{+AßýØ½}mT!c¬)ÉIÊ©{¸»zøbÄHe™0aœ·ÚÖl jEÃ‘2£<7ÍºšûJX¬<—÷jðåþ¿-âšýý-Ön õøVïQ+s×«Ë'$ÁüDŒKzÏMŸ&Ã>1ÖøñµB‡ç¦Ïž»äçÉ™Qœ´†¾r"¢°Å#v¸0Âóò2ˆãÅá£pü¸\ÕŸ}>8þ ö×*xàO‚fxœ…SÏkA&Ò‹ÑÜ)¶òŠÐzH²"x±ih
M›b½Tz)&;³Ù¡³;Û™Ù¤BŽž¼tðæ ˆPÏ^Ä¿@ðààÝ“WßÌæGsÙ™·yß÷½ï{ûó]éÛûÒ§~é&§µthf.NKÃæüz¾¹Ì.P«”à€¥^î3èP–ÜËžsmì›ÍïÇ³žFÀ’&¬
³NÙ€‡lµoÖá¨Æ}‰S=ƒÚäß]N7.½xåù®ýÕ¤‡ˆû¶µ\JìÇÖ¯ÛN†Ó)PÆÅ‡­“·/óØf{åÎu<6i¯Œ#Î±ãQƒ‰ðb>ÎÈÈW&ƒÖ:ôù€¥U˜°Îµ^jÆR3À«GP	=„MA1”C.Ô±ÞWŒl21IAª9 ;É‰pÍ&F¹½Û~t±´}«dÿ´Ïíáîçydvi·ñdÀ¼ÜLÉ¾"	Ò™\¥¾¤È´Qyˆ/¥ÇS¢FÏì—ýñ<ê ã
ðÌc827Ynj‘T	1Eø„8íuÄ­”‚këa$ü³³„’²¦:÷ìï­ÅNÇ8·P}ôÄôu¶gB*D¹b¡ÁQ(ªCŸY
¹æi¿ð(A¸z#Èìúîý×-®¦Ä`\6’9$dC’§Ý:;g|X HcSó07ÄL2¢4›¹ØË£ˆ©º3îé&>ó¾t}w6¹ívà¸ËãwÊÇ‹ HObŠì”$™`àèqEÈU c9ô«Z)_É—Š“
~Ìêðñ")„:‡fDtÆ0Fì	O¥ìqýJª¸AC¨ç'aÈ2ãÅG%ó~ìdñŒU¡ác\;[›Z­”‰ö*ÓkÇªâšÃè u:üIwHÌ´50:å+,w!qãâm6ÊÍJ¹î¹(jöëNk¿Ìí‰É‹vaïÇ_L+´&çV„NxœTÏkA&‘•-zQ‘W‹­‡lb{*4Æ¶ÖhªbK/"2»;I“™ufvCPþÂàAèàAPèU^EA¼yéAÞ|³Ùü*ñÇ’°;û¾yïû¾÷fßíå^ïå^5rG¹òBªµå:åáÊ|¿¼Ù,Às Ø¦<„Úî…jH¹fõ.Ô…-¦4ˆ:ÔH›ªˆC ˆf‚Ãák³JiÜ­´ŒKšIñÎñ¦â–ÂÍÃÕ·C¥"m—a¾¥WBš°€Î7ô
Üñ<>¨é±ð’sÅÂ4ø<ãoî¦*¦^˜H’Žç3Nd×îô3ðÉ©hóríô`Þ¬“6)¹›ô!œ¢[A Úm‚ÖÚ$E‚›è&9ºŽù²þ±ç:Õz	šD’@S	}7€)h°„ò|."¤å…IwJÅô5ˆ(%Ã”ëØºétó p£ì0…¹4tX«1>ÛlØZa½t5l²Umßø-ÜwŒIWÄXr ‚ˆ4šÑTù±„˜>„€pð)ˆ„JÉBtËu:L7S˜ÂJÙB©•Kæçúìþ§+;8´YcMáê…Ó&À<¯@ï6Õ’Ñ¤¯‚fv$à?º3™ÚÔf°5
°ÓDßñ'éƒ˜I”3 ¥ýYk*r”,Ó›õ¹o‘M	¬Þ/`–+9ßˆÊ¬3Ló¢ræÆ-É¸îé€×ëXD¤ŠX`{@ÝãBCD¤uÚïŽÊã”5$ic‘'æ}¥|
Jx¸ú5ÒsVBMþÚ‡eºX1Þ˜>z(9“c!#wç–Ì|µÖ~DŠˆ/ò¤M/Úƒ¹è:s`W0À-déo8tôÍAõ¬I6›×È9~ÈÓoW÷R\ÿ"äOn1_«OÍ·›®y¶áµ såÚ®™Y=o~m3ÑúŒ[Ÿ>øÕìª„Jxœ}VÏoE–!bä"„€†VðšÒ&Žü#éP’¦MZâ¤NC‘8„(ïŽíQ×3ËÎì:)EæÀqc$N@âÄ	”k%®Ü Áµü\¸óÞŽíµ‹UœŒgÞï{ï›·yôMîóÓÜ­Ü3Â/ËS™;^OWöÉº[Ü¸yá¹=Öá:džýþæŸn··q¾˜ÀC(—.}•uÈ=ÑÞ!”éAÄºå†,:±ÿl¼š;°O¶.ØŸ6^šA‹rSE§ýWðK;î0YŽ8óY#àä¼MG§ÏožËÙ•ZþŠ§:há~
ù0R‰ð¹Óæq†àôá­_žžÑ&Š=GÜ†µÙ™BÜc¿¨-ÚGµÙÞpDZÑW`§™Æò”4‘
ŽÃPEFƒì3ç€ X‹w¸4à±5D ÌI,oõÚ/Qd™…ï¹øGˆÒQ@.ÒˆæH¬,éZ2ý"#wªˆ’Úc^¤´žF–Ûa˜r´ÕæŸí÷ayûâìûüã˜k3Z‡Ò–jç{Ž¬ÆŠHq3ÄH\*lˆ1ÌksŒš¨möÛh„?	„Ÿ…R28If¶ÈÉ îÈïrbÀ$‚J„È}¹r­·2Û‘^˜Ì*PCOCy;ì„4<
‘]š—žŠ"î™à¤RÈ¯UÃuúíûôÇþ]ûaÝW	¢¡þœúñR¤r†¡œUhˆ¦zçûëö¥&®•¿·#ù¾ SªYÈ"-dîKÕ•€-|]r\<èŠ  ?î„ïi€"Þ"kåú”µQHhócŒbÚÀ´7+ÄHSõa˜É>®-ä¶	÷¹ñ{J°÷'pž–[ÙÁN ËÉ }C˜>—±d
&&€sMKfÞvnç6dîYãu7^Öª¸¬ØÏv~kn3×œ­ˆu&:íôŒ¢lÄÍ&ª‚PúB‡j‚ÎÓbò!UˆMöÒ³ßÖ÷^¤1¨¡êó¤*“_’öz}ÉÞ»óÖSÂ'7'ßyíÍ3–ËPFùò—¾Cjx©¾{8¡ÝV]ÒÀÚPm–ð1žhÝ'RÈ¨ –/µs#L›Ó LNð1\“Æ‰]¯¿nÿØœ=ØÇ4¬·!Sb
i>Ñóƒ÷E†J¦É`ÀW\Ë«—ß¹¶üöªI9rDô…|Ö)aìï»/[¯þ¥+á¿õKËÂ?’º‚o”ÿ×€«-³
dlïí~ÝÝ]ºÇF—(ç„ã9Qq:º‡9b÷™a´Áp„µÿ°¼8|y•àäŠ‰uû4+ö»úÝkSK›½ñ­FÛGi€£”Ï ”=*¥œé6ÍáêËY'DñQþnŽÁJU’Š¾»Ýé9ª¸Ïiê’|ƒÀij˜HƒîÅÎ 9ÈC
Â¸#·Y¸,ågžÇCw›TlÂ˜–‘Š[m‚%B^‚5Où|}þáüZ5]•
y¼”„RN¥U‚T*á¤ø}o™?Ö(wÏÕA*§”9ûÕë½ê"l‰€¯œ)rÅƒÅj!ºA±Ïáj`V!ãã´O•6ifâX_¨©'x£ðpp”Ê¥$zrV,jy%ðÚ,‚ÅEü’ùO²ÁK-Z4R$r Å®š®q{Šºx¸š¹9…Eü\‡·Þð¤ˆaSd#oèš_ìßÞÙ;ÚÚÙ}wï½e/A?=®‹Åâä€…þ¼„å±xa„L›sR?à°W.ÁñGÊ¹H]¦²ÐAquŠþ³2tµÇýQû~Ö%Üú¯È6Ø,ÂÝ‹¹ÿ >Ì˜2ä5‰OxœSÍjAfÀ\FsQ+(1‹N6ˆÈ†èî²¢a³		†O=3µ“†ù³»gã‚èÅ'H©àÁG„}/"øâÅkž Öì¨!°.ž¦§êû¾úªºúõØùúÎù9ƒ™Fz©ñbe¬gÑ8v7¦%èçýÍö”8xÂ€=LCèío!´+ôd‚&—B—¡PBs!7/µæ–˜£ñYÆÞæƒ-tjøkŠØ‚d)†/w½ž“lÍÓ›ï×¦Ô^¯c²‹±m„8T.F¶O=OËCÏW©Ô#xžOŸ›—Zçh®õ½¿‹V+¢{€ÿe:KØS®
•…›ël¨ÂJŠšmµR0ÍçdeÃZõo’p—ðùÔù¯ž\©ÑùÎê½ªy®?Ã‡±º†È—.íujÐËÎü¶pÏ¦s©Ëø£I‹l2Ò2™5×*µœR){Ô(CéÇÜ_¦i!ÓÂ-	ô¥s}¡2%ã€þ+a³J{¹¼–ã­UºñÐ'±¹k†s¿X‚©Æ†YaéÕ£›ãÝNm§43±øz÷ÏÆ|ë©«Ó6ït’t¥F;îœŠòÌš(’0P1ÒÇíÞÝÙêpf£&KV>ˆ“Ý·tòDŒýÇÎ/x-¡ä4‚jxœuSÑjAeÁVäQ©¢p¥˜¦â6­/Uƒš¤6BÚÒQdv÷îftwf™™úä”ÁO}P>ø‚ô+ú*‚_ ³³K7‚Ë23çÞsÏ=—ùöÖ9}ç|Šœs2!b–9‡÷íNÿ~ð¤™o”óÜz v‘ðx„°;êîìAŽ¤$Bý±ú¤ó¥È<î^]c$A™]ÜkÄªÍ$‘jÃ!¸æož×kú¸³4ûÐ½æ¬üÍ¡à	VÔpB}4Ç ôB/‹È<¤jŒÌ¯ˆòÇD_¡¨×Ê„&Ü…–9´Ø$ÁõÕ›À8“^ÌýWðïh¶¡ß÷º¥%½‹@ ÊÃ (Îxhôßè·.ƒT"óˆi)ÒDySË~kÉ*ä5xYÁ‰•oÀ¯ýïµÊ}gëú¥ÿº§?®í 'h+ÃB^¸Ñ	2È3Ö`oL%˜§ŠrFb;E»r©’ 3ßG)­œ Ó|ÀœYžÂÆòí[›m	>I‰GcªŽ(JP¼¢JŸÐ —c*åJ…;g1‘lJÄjRÃ ™¢á´bêq¦ccOÑ«;]ÍûAx`H²XÙÈ$š+–õƒ°\gž”³bî‘¸òL/n­è7ƒý{3û58uÎ— þñ0-¦þr{TàúdûYqµ9\^´oãÅìéð§ó¸-èƒxœ{<“qã$ÆéŒÌ‰y‰›s«í@ŒÉoìýÀ´½ƒ(³£ŸãäH‡û`¾­£´@¾‚ZN‰uZn‰Zz‰µBÂä³ŽÒ“:·r,®ÌÍM-)ÊLVðKÌM-.HLNUpLNN-.VÈÉOW(HLOUH+ÊÏUHÌSðóMUHI-ËLNååšüØ©„,’œ‘X”˜\’Z¤0¹ÖYœEÏF¿`²€·òä×Î’ ‡lætiedLŸ<ÇU‘-½(¿´ xr¯»Œ£¥–”å)”d¤*äd—(ä§) µ(@Ô)”g–dä—–€¥óàÎ)ÌÌKß|Ñý#Ø§K<õ¸ôs2íx¹lôKs€v‹Nî÷²{^ÚKo²®“ÎæãÞ2Œ ö(kºà‚Û9xœ»ÂûC ¯,7U71/Q7'?]ÃP“k¢ˆ‚8”« «œš—¢àæ›ªàèç8ÑßÛ*¥®`“’Z–™œj§­›¯`“–[b§P£ «›_ZRPZ¢›–_”›XbU˜ÌÇ¨+íX\™››ZR”™¬à—˜›Z\˜4599µ¸x²£,#×ä8F/~°]É‰E‰É%©E
“Ï2ŠËëqqùç)—‚Õê(”d¤*¥–”å¥¦€œ5Ù”égDº•—®nzQ~iA1©€‚ÀªÁs2‹KòÓ@ú ªÊ3K2€ÎKçÁ]R˜™—>yËf%¬j“7²Š0`ò)VÙÉkÙÔTáhë.Çzxœ…ÑJ1…YŠ®LuÕ-ŠøW»z¡³*x§HËZº‚ÕavÄˆfv2n0“IFY(í+ò"ñ¾¯àµ>‡×ÍÌX·lE¯&“üçœÿ|7³·?§ÆIc,»n[Kæ¶qòkñm©âù;_?ù‡È­·ü]tý±tóæ Pr¡Ix4$\Ó¨^1uÁµŒ	u;¸’èTrûQ)Ó€­Fi™¶í¥©¼_}´F¹7ÊÍQäÃfH.h›lÁrlFBÆXoÁ70wƒÓf ¼QUÖ«ŸüŸY™ã2Læ¡Å¤—NÌ÷ò•Ù
Þ,•}º ;öOŠ3‰cs?´4ŽjN­Ù€¹}¯µ³¿×œ3¿‡¯xžƒÜÆ²Å€ÜNcŽ\IpˆFœšß„u§Õ¡
D¢©àpI+"òUŠ2`U]QžP%,T@¹Ðçù(Qù2þgÇÈ‘Óµ'â\Îú¯YÎÙS„3ê…Ü<T>Ì<ÃV¬b…_ÄÄÄ£3æ¤²KXýK"[ŠÈÄ2ÌoŸXiYÒY©ª„á‚ß9—¼×pÑúê˜R¥Š^ÜgõYÀó½Á«Ê†á£_þ –œ"êJ‚Bxœ…SAkA&hµY=ŠH¡ðÀRD“T‹P‘¶P´‡P­Ðº^vf³ƒ»3Û™ÙÄ”BîzöæÙ?PŠèÁƒÁ¿áðê›Ùnj¡Å’Ù7û¾ï{ß÷òëöÇùOsMÁÚr˜n û<lo¿~¹»¹wò¬ñõJkzav¹d@·ºŒK+â±{¢²…ÂØryfí`áiGïÀ*ãCñuØÛV[‡#Bª_é	¶æ‹o¸äC
Vã¬ü<3×ÈÊï3[7§S”çÉÜµ/IÝº 9èììÂã`/bÁS&ç‘ £›pÕ ‚kP±¯œN.v Ã@¹lAMùÏë£Dô¨Ç[@èVAŸð$hnŠÔC‹0iêÊÍÑR“MP‚ÒÀ
L]‹uÂ†˜œIìfùíúIù{v¿\>gf–ÇÍbyÈ½Â\«ÆŒˆl¡¥/i±ºˆ¨âEô…D=~Z6&g(°Dy,Ñ™?ô^©Âæ…Û±ÒÚµª	ÖiÌÞi†‹‚î‚ëË€\ÚÙ‰Eù³yë•Éƒ®u6‘ø>öÓ1 ô‘9CÑù •¥y˜Ð<²4	#eä0—P!•M™bS—þÌn÷6R²T¢¥ˆo¬
Èp#”Ö!·¬Î8Ê ¶²°Q9jÃ§6ö‹8æšxœw+ÿùÈ[Óó½éôåæ	Í¼çâòð5«¨Ã¾¢4ù{Ìò”{´%x^›IÔ¨ÚÒsÑÒVa5n*Þ9CÀ±Ä*MÕÈyUcLÈ2SD	>%ò¸~)+UÂÒ-óüE<·ž®Z:jU'Kä¼„÷ïmùï ñúä…µÜŽ?q	¹ê‹Ðúß Áà³š¤²Ûå#lîasþ*ýã6‹å£ðƒt™ªàL„,xœ•TMkA&hJ;‚'E_Z,"Ù­-‚Ò ØˆE%+ìŠÌîÌ&ƒÉÌvf6!(äæÅ‹º g/"ÅŸàÑ‹?Æ³ïîvÓ­¦ŠC&ï3Ï×ÌäÝÕOWÞ_^”ÆaÜ„æË©-u<ßÙi{¼£;µ¯çž—3ðð¸dÐyö„Ã.ãÒŠh‘Ò@a ŒA‡¹‰i8ˆZ¡$ì …±E´±:	m¢yºRßnIãü~Ô…&ã#òìûŽïÈ’ÌwÛnJ#XÞ 	ÅâI?Ô/¥‡õó+ùMÇ¾Iõ$Ç'€Ú~z¸¸L†¶`P~«wš§ÍÏô@œ6Ïæ˜7éµ…SØÀö9„}ªih¹†"=1â²‘ý›7îü)ÿTœkà†!•Œ¢È¤
wé±0Hda,Hð{F•õ%XfWÓŠç,K*|UÚ˜¨¸äÌ_wá!BªcÓ¨R¢ƒJ8¨×Z0¬Õm?‡”:v‹dÄ51I.|Ÿ–§Ñ€³¸]n“.·ZðQ‘C”è¿ZŸ¥ÌË…Œ}š%{ÚÇþð£ùA"4æ(q¿FÆÉq<n*e\ ¢‚9Ømwoà=*¢U®×q¢=-ä=›“à‚$ŠPÉ*4ÌTb3gÞÌ:Ú“ÊBLuVt0X«ž¦Ã£·‹Ëµ»x‘#doþu:ñœAN*[ÛúH®Ogo6¿!GC~+&›d²ÌCÈÍ³õ7Ìœ#Ý$n$ˆ‹MIð_ûØDú˜|fg*œ~–-”yY¼÷uÿ4T¶¤ê‚ZòÁ*þµWSqqõ5ä¢Pì#ƒlxœuQÍJÃ@¦JÅ&¼ùC£B/MR-¥ ØBÁ‹¥Øâ)—%™Ú`²[v·ÅƒÐ³7aßÂ›>Ã›nÒÖÔROÃÎ|óýì¼”¾¶Ÿ÷7‰”ÄØôõÀÌÜ^Ï½¸òìö[=÷¾~:Ÿ	ðlè" }{0m%1Š!ñÑŽrÄ©.bI¯ì(’‡ÂæÙT=å»–Ï¨ä,Š‹æ¹/yäÙQ(¤Õ‚GÍîÃbOU6Z9@ ã3¹°Ïâ˜h3}Æ!A9‡Hý¤2ì‡È­ÙVHï@²¿øDX2oÙâªQp'½®äMÈf	ËŽáÜ\N§c,'iYI¸ÿ¢ëµ.ÔD"Í‡„¹`­¶Ê™zš(3(SM³¤>Í#wéNóüå™ŠŠ»êÃ<,ÿK@5Àq5ùùÐæ)?ÔÒéªî‹{ê{«òãbÇÕïÒ‚€xœ­WÍo[EW$(R@ ”idÔ
Dl‡
„”Ú¡­ÝòÑRZ„„ÌfßøyÛ}»Ý}v,!½âxÜ8!õ†„àÆ¥wÄ•€gîÌî¾×¸mì·»³3ó›ù½™ñ_ß®üvoå§tåÌ,áí©mgmÆ˜2‡í‰°N›ŸÍÊþÖòãêŸwÞ/—žÎ¡½¶
 Wö‘áÚ­n°DúªDøD‰/„Î2¦’u0è
£èÇÒ­­öºù–ÿNÄ4üV?^¼ç=<\kõù¥Þ.\^¸öX›Œ¹þ9é.(ÿ(¿ºcµ:—ºÐÖpÈvõç¥_îl“GnR;ŸàTp„TLQyÇXì·=>©SÈYŠt‘¹Ú´Œ…ÉfÌ Ôn
­ÖVküÕGïž©ÊËO}q“½;ÑZp0g†eèÐ€°àÃÂBÄè²Â:ØÃ'ù„„¹—­Ý}÷7¡K‹®šf¸ñZc(½I–a&¤­äfÚÜ¥§ !^µ`‹<×Æ	•’’##4ØY[ý8äƒv;SsÐäÀ“b¡…Ic¯s]‘>Nj-ˆƒ¸l¬CZ¸N0ª™	‹ê‡«/W\}¢‚Ëgªgüé”˜Å7h½øXjÎ¿¼Tî¢‘1ØÀˆà4ô0ÛŠ)ïuéq´	|è‰Ž:pÝH+ò/Xl´p¦|ì‹ÄGdp"óÁi´<;Ä1£0ù´ESêëá{eÃƒQC×QM‚qgä¹3¢³Q´6Âý\2èÒÚÚn8t©¾;õôñî†çÝîÂõèé•ƒ»½îä¼g’ê³ËgKÇö$îIÍï¶üfX‚)$Ú~‹IÙZ[µn.±ßÊ˜I…jK»MV8}ê#ÒI½EÒ3‘¸I¿õÆÆÆYZ=aû­‰	ZZs”ÒæŒS
ú­ð’6r–$aãÍà×j-o‘è.Ý¤”²$<˜¸&Eªú-ïd¦õÊéÜÇe½®›<$Z&;DËÈc°â…n4Ñ=0¹§“ù‚íäÛ½¸d–"ÂKÖ­Ò­+ªt”±kE¶‡¦×­w}m#KÉñõúš¡‚2ÐcÏšƒ€Šu ¼D¦­ï8íAy~#œ	¬k ñ8–È2Ç¤³èI“À½¡gÞ3;º¨á–'Æëß5°BñXüòÆ†P0!3v3ŠúŽÝ´ÈµJìÃ ÊÓB5˜séÛU¡ÜqY,BáA1÷Šc'YÒA@s^sÌ¬•ÿàÀ«%ëMÉ9%¢¥!qŠx4CÖJù"M <ØÝÝ!Ñ’jmÌðd§õ] ®rü¿T-—¾†³Ó¬HåƒÄEÌ¦|*û®}êHZ¦[»R»Ó-AÖk|œ«ÔýöÐƒmªRãÒèì´ËŒŸi²ð‘"wsž‘ÀòXÀxÔÌ¢fGšD4ÌLP[YövRº}exhy"¤qú:IÖÊtq¶öãHu©G ;a±kˆÈà8m®­Þ ý4KÁ6’‚óúÂx·àçóµi¨ÝàRõýÅçªûWŸ|0ûý>ütg‡Å:7:¥É‚e‹ãÿ™€Íê›íõWÀÂ°ôOÃ|aZ®þÞ¹¿âgÑ_ÿÜÖ‚^ï¼ˆCxœµVÝ‹[E'  qóP)b‘–Óµ]we7õ£²Í†n7»5¥Ýn»"urgn2ôÞ;éÌÜ¤!õë èƒo¾‰ ˆà«øà£ƒ}_üôÌÌMnâÆê‹yHnæžÏß9çwæ‡Ïß}QøªSx:¬"Ž¹þæýÂ ‘ÿ5Ï^¾vyòÖJE ¸­- Ï$‡@
Ù{!—ñ€H<&V.ë•žyxpÒ|yð”ùíòÇ£‰±z…ÅXŠô%Êú<`K}	Þ^[S‘ÐöØ>¸Ã÷`MÁôÉ;.ŒcT&æ"qêþql€€?»5>ügí§ÎB[½Ö#Rs:6Ó†y/Ì¯›?5CHI?f°3†a+†Æ<q(!Z¥¢…¬'EŸS¦@wH¦ÒH+óÁÖÊè¸v¦\A:‹½î‹zŸDœN°/øÐ%
ÚŒ%@Å ‰¡Œºb¡zV/§.~…¨ØsjÔcyP*Njiq/Ã-Œ³+”†˜A±ˆÚÅ>[ò)ëÖd£IØ}›C¢¥ˆ"&m²LÃòÖVy{´$‰â¶*
B)b=zðIíÑƒO­!|¬âã*Æµ¿ÕÂˆÒÄU"Ög‘7´jsª	I„lâÏvnÀaÚVC¥Y7­ü
Â¯ÀVDˆ"¨¾>ÅQJÉÝgAªyÒÉsœ€… ”Šm”i&±¸ˆ­ß"2©ßÍ±tÈYD½?-ŠæmõòXKEJ4‚¯eZtŠª#O(ˆFË<™µ{ˆV
‡è`J†ôÒhW@˜J‡†Û8$ÕÂ
$ÂÌ4¹Ë\Á}-¬q?…«0èò ‹¥bªR',Ù½”K6nœ^„);k½ïÀn˜Reh…#ŠTÂ]&¬‘ëw*yßFã 0{`‰H;ÝU+
Iò†œê§öÃP©ÅŸ”ŠãH¥U„ë<IïÖ5T«€8`­ˆl½^1·ž3|ÿB^tÔÀMi¥+AD”ªØu_ÕŠO»â¬›÷Ï˜—›§î´Â™¾Dèy¡xAÂ<6’Å¢ÏÜˆŠYç¨‚H
¾AdhzÍÏÆŒdá3§¶ÏŸ8Æ]æhFlº“uìPÆw“òƒš1HVi7Ñ(â
œSœÅlB§è`Àuw¶µZN¤™‰Àö„³&¦¤µF°â˜šH6Èßø¥‘À6íÔøe§öÂ€SÝÝX¬U«çq”%‰ÙÆb[HÊ¤y÷êÁmA‡æÖO‘(eæÏëëÅ&yâÈÁ|íj¡jÃfîÍç#™ó¨¦RÌG§=<>:–ÚÁ²G3Óð5ÎZšQósëÍBÍ:ýo'Î€øÖwLéZ±Œ¨5êM%ó{k£p#i\û/¾²î˜c>cbßê6½W¬Ñ¶7:î¦3jÉ€)í;¾6s/<Žåøˆ-aK¤ÓÎ^·X=Ë+¸Xaß.V×ÌÇbš}_*¶š>0çà¢spƒÈ»·•‘é•ý±¶åZ—…ŸÝ´‡\Œ‰¡ÀîÎ^yÓ
¢ƒ“&Ú;sëQ¬S\g–G6»4âJ×ñ4¿£˜ç·—¦¯1æööÙÑžëp83½3«Ö±ê"ù"Â~å#Åå#h5fxax¤×‹°/Ú³,ì„úv’|ê#Ÿ»‚jwuÆ’Gcj={ÇHœB±9Á-»ïîfW¦L	©ãb«$zLºÕà ñšý¡oî½‰ñÜ‰c—.$Æ³£ü\±{“bÏpnyø3 Â2e!ÁÙ:TW|üyøádšÓ;¯šo÷ÞZžÚ\˜”ž&Ãp`Qñx•ÍíýËùUÚ.¿‚ »óÖ`r½€›èÎ^êˆZll^omr¥þj§ÍÜk®›¥‚¿§Í‡{æëƒþòvMëÏŠxœXÍG×"Œì±F€‘"œ8¤¢Èë]if¼› %Ú5†õ®³v½Ÿ“\YÕt×Ì”Ò]ÕîªÞõDHm	Nœ}Äq)²ð‰ÿ€€3¾E9äÂ…(ï½ªþ˜Y¯cËötWÕûþ½ê¿ÿuá?ÿ\x2Yø¦NcþT/LïÒSñåwñÁ²n»Å{ß½pÅö>z X(Ne Ú­;·“âÉö÷‹ßþä[tâÎmße‹‘]wGÇvý¬ÛU<&áèÊðG¸­Œió¬«X¹R|¶ñƒ7¢!Ñ|(ÏD¬\3ot"|Ò5òSA‡øÊðÙì2½a„¡£ð[²4Ì/ÐDFt ~Ë	óxàz"ý~¹-ý6íÆŽ}\q™{ÇÝ«©0ÂâjÊ
½ñê·F:=.YY¢öÏ%Ë‹Å7ž}ÛEa¯tfñù½ã|ÎÙ	OaÛŠ”IÃb®Bnu:…È…ð6eCÁ„´Ø†ÿ\0ƒ	@Ñn9>lI<Zc·áå¶:ÅÊr‡é”qV‘9çÒéüÜqµºÜk·ú#’P1÷˜A­ÆòT¨©DG´²©Ž"<£…aJ[f²$Ñ©m·Fd²•jÌô³2È"žVÊä@±Ôß:ÙíöÞßÛ`CiÙ
Š#‚ê B1EíV¥¿ag2ŠÐž½{FrÐ/”†ˆ=-êX‘¶[2ÊÊ‘uãÌØÙ˜D¸c;!Š;MÔ»ÌÐ‰•Z­{K»uÊ£L q+Fþ³šáÝãTÄ%0¢VÄÆv’ûhTÁ«<£8kèMÖ‡bÄ³ˆÏYØßBup±gQrf–PÀl}*Ò×RçÚpŒ¼Åw7oå{Ú
¯K‹TÜÑH>bZ=!´˜‰G<N"Q¹rÅùOªv«FZÇfo ¡¸EŒ ÓxË#r	òô€xk·ÀN®¦lM;œª=6˜q%òÄâ[ï½½úîºqvq ˜O°@Çˆ×Qªcfsd•ÍÔX7‚ÐagLP7Ð]$nTÎ9¾Ýª•¬ÄÔ´=¶¥)M¸1 ›Lh¤†·>·òD+3‘I»5äðéœ.}þ†¦:?vè-i*Nu )0e`—rÏ-GJÞÏ”T•œâáý¥|_¸Ï¸H'©Cr@ã™Õ€`O%¨,Ø½Ý££ƒ#œl ¤T'­ K¡g`Yâ´IˆTÞR ÏÄÏ•ÎÆ“Ž‹=Êl·f…fIè°ªM¦WYÝ ˆ3TéjOÉÕ1m·ŠhûÆU§ú(-~³ýÊ”"¥ÄYƒ¦@àT	%¤Ã¤Ó™¶Î¸A´«q]'@$ Ët¯øßàõ"‡ÿÞ^.[bñäpñ•çwÏâä€åÇsUÂ3+µk&$A£DÊ^êëô'C`€Þ˜ÎÍÎOeypå‰RÒõf¾î¸1 d´”©Jà2ó*ÌÔ%ð#r¥Ü€îsÿ¤¿¿9Ø=éo-§‡·Z6¿ÿÁÍöÌ(@ïÞÛðÃÈš3dEae§Kt<Ô(›IðedÖúÆ"”¼tŠØ›D«Ð”gk6¦¬/9xJ*ø’Kßåå´îËULÙ¦V£HÖ×•nwXM.Œ§cH^e{5«-çtÒ`¥GóÕ]ü?ñ'´¬øõá÷¾snÀW]^4‘ÛîÑë1¼Î¸Êà—	· Ì+3¨®•¬<ÛcPÛÁvÈ&ÃJÝ\)‘;W¹i¤Ï„±5'(œC‘R6x
	€V_/K'Pˆ°£Ì{´æÕí’
§6œWüêðú•zÞ]m„>“‚,ì>¼cA#‡¹ cgA©ÀAa¤ªµpõÒLt`è& •è²³ŽÊÚyÆæÓ‡€še¯ÓÉ1mø »‘[DlêÝt ÁL©ZwjF©óÚ•1(BJL`hë{r" š´ÜD# öõzÍ'àÁDT¡ yÈË@Ý6XîÍ"øiÐÿËÂ[{úC@µ‡€`Qüo»øÇÎzþ!°…í†±Æ6šVc¹
q‚Û$DÛ”nÅ£0	áY>²~Êub}£…EèÎØ¼J2”órHþT¤Ø’ —(F+ˆ˜vvfW¤ò±Té4±Øhñí–“Fs(›³Ðµ1ïö*´‹™8â¶PÈ¯HvvŠ¿í®ç›Mæ/å&˜&š4Ø}Ñƒ¿<€b 2?œB`#aËîëDS¬>ÓfTñýÍKï<{\¼[Ä{k—àf“žBÿµ¿{¥¾0a†5nT”a)T‹€˜õ•Ã?>ïzD®aÆk çÙãß­>{ü{J¤"«±(ôä¡æ¼^ÌœËq
L¹2#èrè”’wMc$S]_Ž'Pù¦V¦à&ÅÑ¥4"‘à©«– àŠW°ft`¯`þu6Ì›Ñ´T0â/Òï¥ZÇåêÎ
ºRÝh1<×Î‡§øìƒ×ò²ÖÁ Ñµº+šØšÆT¡¨›«k_Åõ÷ÿ´póàBÏâÀæe–EdùâÓP¨Ö*Q@N½4ÅÛDñË/OñR\úásóårõ £Q}A dyàûüVs™âçÌ/ÂRÙ†8–ür”GQPÇ}]å^L£üŸÿœÌ‰ªù_( üáj…W™A“Ý?T³P\&ÖÖ¼Ò°ÊËÒAÙymc8o.¤ÅêÁ›—èóLñÅáút;áÌ}°q-ÄßlFYä»v=€‹?ÖÛÙl#1Ü´ë¦i@ÔÒ%ºÞ û?Eêê~_Žì2¦qÔ
V±Éj¸gŸñTùOxTb¡vÕyÞjÏ~!];ÿ9©øøàÍ•ýr´¯nýîœÙ º)C“Ð¨qîþ|Óôs·2(3¨¯¿˜µbýxïš;ØüT<9¾ùq$1…1=«ú
½êâFÏjŽÆƒþ\hà€$¯ÌKfsßWaG=ü…z‡z<ýãàÆÂWóHûî&cxœuR1K1å¦Òƒ‚8ù´R{­vP°ÖZ
µºXTÜB.mrIIÒÓA¨ÎÁÑ ô¸98	þ§ºˆwWÛ«³„/ùÞ÷ÞËËû³ñumÜ78R
á–ÅdÏ5N·¢R¿•ª¥QVÂ€ÂlØ?Ü#0¸†\"Û“¢:‚ù›ìP•M˜›¹¶~¬&µÜ¾›:]>Ñýrls¦§”YLSUÀJP‹:ReÒMU€s°0ü=×»•×®Õ"À<—DôC=˜».ò56¸H˜A[[pÏ±‰=Öê—L9‡ˆÌÌaMP~õœÀ	3R:@š!TfóöºîWŸŒº¾ÛIÆýƒyú¢¶45©_?Ôgþ·­/Õ}¡¤R‘˜Ô1#Ò0 p…Ï3²«8×/è*FE¢ú/§ÊéÝGúÏMÛŽ˜")‹<ŸŠ¾EÎ&^.ˆbÀb°r–‚ó7ýAw+™Þ±=k|û(á)áJ€¸4xœS]kÔ@¥ˆ_+µ(‚—"Å‡d[mDº‹/ëv¡Ý.»KAÈ4¹Ù$3éÌd—‚²AÈïðAÄ€‚ÁS¼“d·­_ÂdæÎ9çž{æ›ûãÞ‡·&˜¢Q'^"ÇŸž8KË£ö^{¿=¼ö½½ƒÎç—K_®/TïÁ€~8NPƒÑüv¥6¾×Üpf0[œ±1B¤d
L@ïp!Ä	°x~õÑX ûÙ°S·àïùžÌM–fÄlîØoÞ‘ Y_¿_ü¼vâ’sŒq6whU•Œ¡\o<ìŸ“+þS/ý†)9á!êâØY-¾ßü:³7´Qy`r…0åIG\€bS8â‚K$UÊøQWŠäÄö8å&†ßÛ™.LcÄÀ5¤ÄÈŒ$oÖNc¸kýQ÷ 7\sý¾C·áNe‰;+zË«³WL°ÁÈíœ‚d¡šM¨m#K†A»Æ­«P/ó—j‡°ít#Ðh,ËS)Œ’I‚3:f„°¬tÅÄøÏK=
3……áb\ÖsaP	–¹T2*w
ÈP»cxZ0­eP"Î C¢öh0};Ê@¦ÖHk(M/@­1¤vÄ	–¨M÷<x©ß¡	ih^Nž…V…‰	Äê½hWH™eµ[t:c¾Ç²¦Ý­:ËŸÕª3xÄƒªw[Kç¨M%í%œŠ†¶Çdï3wËÝ®e—2ê°ÐŠ4Î1tÁ4cÙˆå‰	Kr´E[.h.(Åg”Û°“ò¶BžeRqz7lÍåþkldÜâ¿µïw½A)+Þ¯<n]|Ø°AhCLRÜü#÷ÍË NW:¿ £¨›øá „xœeQ=K1¦È)ÍÐIñEÅ¡ö:‰“U¬P(\½v’¹¶¹¹KÂ]*GW!Ð?á$ÅÙÙÁÍàŸpßÜÕ*v	yò¼Ïo^Þç–óm!”-ýX=mr…ªã´<»qèâYwF¹ç™íÉ„Šx6¸TÅŒÞÐ|¨"	$™b‚ë¢U!fÞKZZ‹+a"+{£awnQžÀ]ýh-é{kW¿XÖšè+ÙGa âÈW(‰T&`îúÃ*¦ÒVGG³ç¹Ó‰g	ç=ûO$)»MØ!­+
¦}"i‡!Ó…”@½vìm•qîDçäIKŒ½¦jeäØ·I(ôŽ©ØŠ÷ ãA	â5n@ènÉ ëDpsØfÜø€ñàðp ‚ÓMÈ|:>‡6…~‚•ú XDõW>ú·yèú
Ifû—éò‡¤ü÷/ÞÈzþ—ü$gß "¯ºè¡¦exœVAoE–O4¦­¨”J´ÒT¢i#l§AƒÒ*MMc;‰“ŠD5Þ}¶‡îÎnwfí¸B²ÿ€9!qâ†ªˆ^ú¸sàÌ™€Š÷fwãµJø²Þ™÷¾÷æ½ï}³¿ýRøýeá´_¸ôBªJaéÊ‹@‚zF[«æŸÏ¾ØŸ_d•R‘1v:0Æ¥Ë\¡B™ n-{bm]®9S:ŠGP*n®…æt÷ªùþóšÌòÀ›kào±O×]
VúºÎ¾¬T$÷A…ÜŠpïÒvë¸i÷¾aÉÒórûƒ–ÿ¡§ÒÁ½.·nvÎQ±³%r­Î»º 5ÍÍG[pÁhæ]:y—ëó.p¢Aºà’%˜`{ùÚ¼Eˆ'Ü#ƒð\ƒ!DÝ@É 6oÄ:Œu¥D>×6½Í£,½€åÌ›í?&Ê6‘ºÇš\ò>ø 56ÕÍvß§†„a©h-³ímG‹@2šé€A4Kˆ b;Ù¡óåRÑ…ä‡®}†”Å&"+QÂŽ ¤ æòý&sDÁB!O4ÆŠQŽ\ÑØ²ÓGfv!K‡€[›x–º8èA¡	‡Ý†“[Ã—59ôáÎj™ÒåìŒ€¬ëÎ3f­¯,˜ËõULìÖ¤ˆ”*Û`³3€”Ç‡Äãw“yIc„çQ–.8Ç¼’¹ÂW!:èaq±åÈˆ«*ÎÓÖæš+†[4[öi.Íäèºùk·»4öÃ›WÎ›$ótŸMŽ‘@”KCAÑ§G.CêØÝ´ùUÖè1è3ërÂ„Œs3¾˜0¹æ
7=j¬ kçÐ©}B©Ü)"r	»ÈJ&)îLÛ#x‹\3<¸µ”L8?ýò¬Ð*žûÎ"Ø"ÝÞ½í,]Ò#ŠÚ…¾H¨˜•¬,¹ùš–f„‚@?&Pû]Ì	áh?!’Q"¥J³YXÊ·3;#&{/ÍU[$Jü6¼*{$ƒ‘dCîá&î9^ìBí•Ûø¹puO 9Ç$·]èñØÓ«æMk×¼~TwÇõ˜u(”]ûu¯¾ÜðCO8B{cÖÆ)E†L÷¿kÖ—wNÞº_øÄø­ÚÅûªT~ùSZ.>ˆ1“)–×ª¿wÜeméMsø¶Ôîõ<=IVþlïÀ¬ïß¸©ƒùûàÚ“Ã´X–8%ô¹Z“ªH•QIÏ$ØŽ©P9#ÅÓi¤BŠøN*ÈpÒ iÔå…1NFÜ.O‰¶lÀ5
’v¬|&†Œx*Qü|ï3í°í¾çOahÓK¯J¯ÒN<­„É@úì‚æÂË8“\„q1¹C¢áòâåaÿš¯öoL’”;¤õgÌ£9JŒ©¤ß’Þ<«Þe»ðµ
dúDÓ£'?2è
É£±5©&<°Êg3ÉÀ.ßÏ$„á;gZøP5Ïš<ä*³>Šå!Œfò´š¶¾‘”µ¼ðóŒÆ§Tì	ð\šÄÄ¨NèÍ]Þõ Í£f¿hH{Qz™ãq¥îšV§¶2ÿm“»&è£e¾%Ö7ÌiçfÝäO A0Êu„âR±²3Û;éñ´ÊÔ;ÍêÿEW=aÈ§æÇ£Ö2¨8ž0ÿ½þŒnPãˆSxœ¥UÍk\UgÀZ0Ñ4%(˜rÒÖØb&“i…J§j“¦É´II
R\Ü÷Þ™™§ïËwï›éH!âÂ¥ wåÚ‚àB-ŠÁ…;ñÐÒµ[
Šç¼ï4ñx÷ÜsÎï|üÎ¹ßVùíóÊýÊ„e‡õM´‡øå¨2z¹,Ð¼rýFéõZ ºèY €.ÐT,Î®Mßu…g-@E¡'Ac›ÂpXGFŽ’Z_þzÄëËgg<i[ó}Õ‚;P÷`ÞQ-–è¥•¹Å[õº%”¨;è½ÄÙ!Sw ,e“3lB j`bÂ_™þ*ä¢²²ÐL”ù+SîB.*+û†‰2eÊÛ‹2åß¦Ÿô£ÐLBñd®¦yÆÊ3¤<ˆ¨v¤.¬¸^¤ÒÖ÷Vf±1ª¶'Â1‹=¸òÕ^72\[Q‰=¸qsa5ïF'í†°\ÛËzüËÚ¢XjM­šöfv¶WŒÁÀX‰ŒWÙ¾~¯Ôqu‹
¸;å„c:ÊZu„ŽCàE®![Q"”
?©Ø=à¢Ú=Û,ìÁC´$ØJÿ¸úË^+å ó§^<×¼Ð’ˆP¸¨È»Tad’ÂrY¤tlÉi¥.¨¾‡‹Ä!¡90c	ÄdÛëÓmœ®ÄqôÑß“-Õª×… %94Æ±~ú}
%.CÚžJ°ä]ìù¡+T­JÑÙŠ‚¢»·<ä‘/P‚2pÄ8±àíðC¸Êþ©ï`D½eš4¥VÍ`”O.,?RAø¤æÑm©^\ûø‘x–î·ŸÕ¿®M%Ñ†7;¨B‡IŸ{(âÙŸûTnêé¦œ ÿ¤8T;Ê6^ñŸëK•™SE} H ’ì–l†Â‰P÷Úså¹»ßžŸ:0 ÔdAâXt¯=?QžÁÔpÿ°²á±Â0ãUl\žÉÔxÿð²ñtaœs‘­/F”ªwü°afó“«¥=x€é¦yJßéÎêO¯>]y^ÿ´ú”¾tý‡G»è‘nn^<ºŠÒí@ol¼ôJ†HÛëzi³Ew=A£Ÿ¿ÝléŠ!Zú‰­÷fºQø!c™"†íØÊFÉŠG^xð®¾À®ë Ä-l7ôæÚ„þdíôäC+“êrü°K¹ÞãÐ¡¯99RFæÓ•È©Û)a‹HQP$!üßs„i†€·MLFä›+ËµéÜIGx}„”CØ™«{QO­?Óy•g²ÁÉ¥4Üb`hÓÝæ––b¯(†“©[i3ÖäþõÌx»ž…¦oÅmÿß˜úîÝS×,"Ý—7.¥2oúEýÆîÖrùmnX8lxC— x !;0³¡	?3ú÷ÆÜ:*†GZ^¾då¿Æjþ3ÖÉeÇñM¡Î§2æGX240MÛ9Ìkþ%ÜyØÿÜÆ‚ƒø'Š\e)Y©ˆœÿ1Ñs‡àq¿v-^ù´”©É† %o¡`fð„˜ÄÑd4 µI~’âÙp‰U‹—þy÷£i&‡R§Ñ¡§/²êÆÚ¬¾{ùIýÍÍþÁ[}&êtˆxœ½UÝnE–j%ÓqÑ6ýqÉëÄEUHLIš¤nÒ”8‰…„J4»3öŽ4ûÓYÿHH}¤¢ážG ÈÀ n/Á7ˆ›rfv7vZ¸ÂÞ™3ç|ß7ß™ýë‡ÒŸãÒI¯Tî1åtQi2~VÞŸë?>Ý©N†œJ ¶™’@BØë<f/éø³_¦wî®Ñf¾äpz¯*T³Ëiµ§šð58]˜šx
_:ŽG†³oúåúÍFšrêð²¡]˜‹4GPÌÛy³KŸ¬=¹.™°[ðÉ<U„K˜ÌÙÐÎÆ¬NÖ?Ð76ÞÕÝŸÊH¶2ü+6ÃõÆÇwËM	}"RVƒ(€Œ€=‘R¤Ð¡R–*I=«ï‚òO‚„=KyÂ$pól¸
»ëkÐ&aÁá(fúds^_ÝüõÒ+eõÌÖÜSÐeã…­ïÞ¸˜‹§Þ¾ýÎëë—¡}8U–SPHRpå[H^$¤uèJ'QŸSFAúQ*¨=dûsq{>ÖµÓªÎœðÛG·Þ>«³)ýüÀ¾ÂüÁæîÂ*ú\B—3¹cæq|•0ð¹çgjB”iD”J¸›*&'ÅuÂBh0˜ S˜”(²Z)²ßÇÊûà	"å½ëŠŒŸî”ÞÔGû×f'æÈLc _9×Rûå££Öh™a+ws­u{üÍ“›¥Ù×}úêFíŒM½‘kt%šñ‰cÁ=â
f•Ô?~Þ¹ç®ì_½X4Q}ÿÅWV²(V<
ñÀ„€˜$Â”˜> 
ÝŽ
€.šÉê;%Q:?Å0'a„šªùVY×3;×ôÊ¶£Û_4ÛUg}<’iŸ{ià²ÄÙOYÊ¤uý”£–õoí½¹é«a‘²þbØØ’iïeí,>·6Œ„ˆ<ì™Ã<§šŸm†Zf’J™F8®ÄhÒ?Ü´ÛExÄz%r96³^7é¤—°÷˜µŽU¢R~EŠ!ð‘%p¾@¶FàÁccá8w·w„Øð.Èg‰Èñ3©Œ§8®EQEZÓ/YŠÜÍE(8R.cAF–©ÄH‘Q°M¦Al˜Ý:ŸÙÒÐÃ§€»;Èñ}½°seÎ\|E´½$l'dñ¢ó¡nm¿¥o¯ÔþSVs//6¹Ùø}ûòÿêIú™Bx)sao°K¿X	TÊ“ÃoþÃáƒã`´ãò$#°ßá’ãÄ ªãJ!ÜøQç¤ô7éd‰ñíL†4xœTMkAe/F¼(…àzÙÙ&‡`6ÑE‰‰˜DBŒÒ™©™ièé»{vYl®^ð¦ÀƒJÄÿàÅÿàðàI¬îì§Fî©»¦ê½W¯ª÷ÇqåËëÊ‡¤R³(0C«ûPÉ±®ôVgCå÷;ŸÌD ¨U`‡î»h€Áîè;¬+cƒÉ-g#pé9Kb­2`¶ö6"ìòË£»Ÿãêt.×UaóÂ1¸RvÙê‰]†CŒ"åQçJð,RÇ— DM|>Ÿ.£ô¦eëÞ§dJ´ü?Õt ×ªË#4µªM4ÚBKª3V!±üxÿgìPÆèq!à KÐ¬\2"Ž•Î˜…6f«JŠ~»EJµi­SN€Ê-Wz)Sà2’Á¬ÒýòÛÚ›ê”/‡ë×/žfaÙÞ†Å5%Y†`ÕkJ²±NÃºÔ‘UÍòëV}nèä«íNq¼¼½}m°ƒAë€o6 TÒj%j0)#ÄåÞç×_}wünùŸÆ\£Ai¹L|—µd‚\¥tP±©Ž‹¬t!Ë3Ï4ÁbÆ¨ð„ä‰|D£yìªÌ9é¥™†hFÍIõ
ôeÔ×ü)}¹ÉIeÛ­KnrE9e6%<×Œ7ïläÍ‹˜›Í9˜F¶2Ò\“µtòMŽ!yx2—K^¼(ÐŽ&ì1ÁI°¤	÷‘ì¾ÕXh,6IíD¹—0\:‘Ä,FÏaÌ
a¡ËÄR.i¡†KZñ1ïo‘6®ïaÜny®4©)Ïì¼[ø÷<qãGþœÞD“¶­|ùtsiöO¥EÏ«%»ÎÃÌæ¯üY|~ÿjùvw®lïÕŽßïoT~àÀ¯Pí"„xœ]QOKAe…(£[—Šß%#h¬»f­)¶ ý9EÈèŽÛÔ:³ìŽ‚tè#LÔ1ºw„.
ú}ŠÎÑì¬šÛaï=Þ7ï}Þo·Æ³c$ëœäa_ô<ã²ðå÷ænv„Ë@é áSÒ!`(*ö•NåLö‹ò~ë¥³å×H« WälÒ¡’qDNro#d›”¸¶&¯ £NÓ)ùhÎIß4W”…·…×¨Éý‘¹%†VB~™ï3ñd½~q;1=v\Ö*KéXi–añèŒ@øÓÀ#ªh´¼	U«$×+Ëò§ôªÞä„Îž‘¨<5;–(Ìòüõ! ÔEŸx\aD"yU
‘«ûYÕÄyÀÙ r_—­é:eØïj!{Ìíg¢2†'˜A@;P™Ä h¢EäÅÎÓ¿‘ÀÆ‡	Â‘jziÓ:ÛýÁZLŽ´Þ‡ucü&2Å}³\xœTQOÛ0~ŽÅI{ ¶¦Àà	Q$´u[%(EhB•q.5ÇÎl§i?~wn›µ¢ÛÃò9ÎÝ÷}¾û|vQcÑ`Ñ¿äÆÍ÷Ä`×#Äøòz(rz„}•9ÜÒZãH¸[ÿƒ/.Ä|duÔ2bÚÈ9Bé]ÒÂøþ¡À…V(ÄôÛøf2MKbzX ø(ö˜¶(÷à|™wyîÚØ´1/µÁÁ9¿/àä–ëG‘e
­XÒ-z’48§UŠCZ>
ñq8ýp;šÜnÆ³qBûG¤ÏïºÀ b…à1¶ÞRZˆ¾U´Æ¾wô£;\#½$"ô Ô £#VFªå<! &$—¸TE)Š2ÄŠužÁ!}rzà<uÉnh$<§¾Ãîh{|@’n,„V)¡[ºù¸vxÖÆ°$mÁËgxÒV’ÖÒùZF˜9k^f+±Õ1pMÔÎÂs¥UµuLfNè<!º¦ž‰]}§íìƒòñ ºê†‚–Ò tŠèˆim¼Ã%Œ<*!`dØã(g£wÆPñC%	OÉ&•+ôWƒ0½È<6Ú¨í<ÅkK³ÒP5)\™v7(¨‚¼uD&Cpj‰ù™4]Q'&l<åj. ’¼Æ=Ã¢Ÿ¤+ƒ)œäí?³.Î m
+Êg­\™‚ü(—…á­\z”ƒÕVöç^°¾Ð Ò¥VË2s ™åG‹ˆûp/&e–šø'•ñ}ï¤wÚ‡Q)²Ä¹2­HÎ‹¥ï
,ek",¤i‘cNz´%Ûvt";M7ƒ³¹ÁmÓ8ÏäB¿^^O®†æm7·þÝ0.Y7~fdú>™I¼Ûœ¹x¯ÇÔÆM‚m»¾†Ût—Wóv"}\"ÍÞ6pÏZQüûIç¨æ „;xœmQÁJ1¤Å¶ÂÄƒun‹bz„Ò­ zPE½U)i÷mì&a7-oÞË~J@ð/Ä_ðL¶²ÒÒ\’ÉäÍL˜ÏÍ/Ï—“”Ø@)Ã4ÏÌÌoV€%j†;2™ 	åà8³n-'ŒPr¦O¯–^èD4Cê¢ÇX’ë°J¢.^Árü§&Ö¬^ñQßž}ûÇkIÆÔØè±a±ÊRn¬njJUw,¶jþj¸Ý¹®]ÔÂÊ·Ýn.…²Ø{x&¸oæš†Â^G(9¨×—ç­f1¯?¾9Òv!±š¤¢\Ò{20V4#­l9Â‚‡Q¤;&Á‚—\I»«¬
Bòl´p#“)”$,LÊá;=äÂ8·	-ä0"¥âg+• â†;/×KßõRœ4ö½ª¥¢ßØóþ¹÷Fø{§3æO€³xxœ¥R]kA¥h-‚>UQÐK©MEû˜DJŒµ`>lJE\ÉÎM:°»³ÎÌ¦Ä}õQØgü	"úî?óÎf³Ù¢ /Ù;7sæœ{îùq÷ëöç[UEÌfæ“À|Û­lTÛƒƒöÑÉk×év¿?Ùøy)Y¹®C9,º°M0ÀÐ€':q0’Êp,&±Â=O!3¸ÇÑGƒÐ	y¬Xè!*G¤‚Þi—Þ4º
M¬BM_ûF»÷ë•zº»yçÙ‚ÍÍD¸ãchpœ
[ðÆu\GF¨˜2l6Š²H­„e'ýµy#½~åj´XÁ®#x³Q:Ì!Ê½èip_ž£j6–õâC©µŠˆ£¨@dõC©•^Þj$Ø¿ºjÎþì,œs–ÝRø.FmCá
ØÇÑO2¶·‚“ëÐAÇž‡š–"Æ²_ÜÚ}‰sb9K”5h¿ì@ûé«‡V´a"\€,×|0ÁéWŒ*jém\BDTSäéÇ­/Éð9ìô'GýÞp§R*«{mÕ`m*õã!ìW–êÉÆÇR¤f4ËÆ³*•ô}T„èä$y’E<æ<kÓ“s2?FÐz4œg	-Á4ëÊ‹fÒø>Ï‚^°®„Ér&Dº&}9ådÚ€“ÐR22÷ñ#	Ú|NXK„4±Áâ±)­0wŠ’–Øµ•®d77eMÖs}]ù?òîýEŸ•—Õ›·{ð="Ÿˆ”œRÂ8ÌÐ¿é§kÎoœè²µìR€Õzxœ½TMoÓ@UNHAi9 JÃAœòq@P•Ò–5¥-©UÄmí‰»’½kv×)‘=rEZ	ñ¸ƒZ®ˆÞ¹ð8räŠÄØÄÎ¸áƒí™õ›73ïÉ?ßß>ø…’Ë"ærÓuB?4ª°ww8e.4÷‡2à”Š ð…Ù„L0C\Rä‘ô*ÚÜÎº
™ÁY4Ç^uáÅŠ	¡¡di
Ö·Öˆè´ÑUPhb%4=u]³¯î}š€á^ÏUQ1Ã¥˜¯fNF½¨â›9x	Ž„¡´ý¶4u'ãê8Ô]2‚Ã½Þ3<‡Á¼½¸4}{ NÍ8ÜC•¢ó(0”NÈçGÐq Ó(CÇðWÚnÔ÷ÐšÌ.&«Bð°Ãi>ï ¨‚&‰4°¨T*Ž“));^£a›ýÝô3…ÏcÔ½R1ß.$õ{»zÆ½lÐ±ë¢&9y;ÅmäsË){Ÿ²TôÎÊ*,oÖaùþöµÄ[†qq+ƒåTÀ=ºó6GE)}×¥"ÙU={Ô˜±WïíçÖ){råõ‰Ì›ÍKgò†\d—¯ö&ï PØ–*$ún:QÒ—’A@C³21â˜/«3gÇ¹Ì.®–¯o± FÐº4›$E;iVŽîŒfì›ÕË“£Ö¢!¦Æ¸Ñ~]öCdÚ€æ¾HX-íæØá$i#·4˜Áü`Ä¤Mú7Èêmåì…æÌäˆoóÖŽ±zÚÚšüyö×ö»éu	ø‚…Q@E"%;dºhjöc«L¦(<j/üÍÌ`íG€ô xœmRÏkAFÄ )ˆXQ¡jÙ4»ÙÆ4´…Ò†lQÓ´i-êz˜ì¾d§ÝÌ¤;“þBð?0äæÙ‹OþÞ=‹‹8³›Æ´tawöï½ï{ßû~f¿Ì~~r¯Ìð/ ]ã/†Ùû>÷šœçD+ÇP.á[)3÷¢”3‡ßÓ¦¹d-/YyËþy3W­Ô\cËÙt6ê®ñ2S¿“”»·¾Þ¶¯B€k@FD"¸°å¸†ózcÓ5t'PY£Ò¹P•î¸ÔÕµnkÞ»†kâ­­ê¯kP>ª®L.FŸR³£ß©™ç½åÚjr&y&á‡4ÄÏèWêá¼îo„ÈÚ2X[Ug’Bò?ša'L¡+æ®¡~“DÓ7£ïwŸ¦ÆlEÛ5yÜGÿúÄ±
ZÊ@-uÊ*ÉQ	f9Ÿ/SRìW¹¿ÙJ5ÿ®OÎ
+¥¨û6vB»‡GöÑáÑA`;‡ý"ÙµXøÐ(“¨ÉAHŸ÷¤;ŸKçdvêûÛ;µF&«×ÓWä[ÏÂ"§s{°ÓÑ“j$MHØæ•AGôªîPçBÐfˆ8%aË×‹¯ñëe¦¾n8®a-ÁšD…’…I´lZ
¾2¦úƒ	Ñk[¾$:ˆÃ„,(e<'>z´CÂEÍ·‰š²¯ÕŽU×Pü·[À8CM[	ÈO©^ˆ0ŸwÆí¨ˆKc1'¼Æ^IHãàšŸÆ¼^ÅWÀ[1f„¢JÊÚ—è—êM‰+v)Š§2ÑÌ±í´éÜ‰7Ùàd‚éÄÎ¬íÖn[ªÉ„v‘”3Ía?PóuID:(1ÒÃr^hFÔÚRb(\£ÑxŸ­ót1D¨þÈ@t1åÑEô÷ÁÓµøÊ9étC£ÇŒ4 kÀí„?xœ›%¼w‚krFjröFYF>gWgï]gÇ€˜ÍÆŒ[™UÁ²º)É‰ºÙ©•
1º
Î 1…D…ôÔ¼Ô¢Ä’Ô”É,¬s&Û³Šq •ÙÚ ‰ÉšlrÒ`ÅÅ
™i
%©
 2‹zËs2''°I1å§M®a+×ÉV é°Óš£3ÀŽK/(XÁ„Ë¨«$_!)Ub‰+g( î+;ç‚Âxœ{:‰ñHã;FÖäŒÔäìÍŽŒNvæä6ûP0K7%#9#±@7;µRA——KAAÁ$¬¨žš—Z”X’š2ù—ýtÅ6ú©¹v
Ñº ¶­ZN‰5ž|Éq§)X{±BfšBIFªÈØÌb ie‰9™)
.º¾ŽÎºÎŽ
ùÅ%`ùi“÷:ýåÌV€™sÁUƒnèY7~o ª’|…¤TˆO²ÝÏ1²[˜O¶õÔ  Å6Pˆ²FxœmT]O"1}žþŠû¦&–ð%a‰lB8$
¸£ëºÆ‡Ê\˜º3íØT²?~o`íÃ´·¹çœ{§jY Ÿ£âi6ÍDÉÿàÇqí„u¿\Œz×Æi1õ p¸D…F8™¶.b_÷ú¼÷&@.Œ%£ñ$&!KÈô¸Dcñ‰ù”°Ÿò9Ï
1ížû/—éwø<ƒ­ùÄ¢Â"O‹Sƒ®{¾Þƒ«…­µçJÉyŽjî²î9íÁ7‡õqÏQ½**Ndü)¸)Ø±Ÿ»$ýÃÉíp<Ú²òÄvÄx[MŽjªSL÷e	Byù¤—!Ì´):ì"Žû¼Ö©V;R´V—:›f2¸¬þ^‰·Æ·¶)ªo¯²¼»i¾Ü¿ÜeÍøþnÕ7uÕaB¥P©œéÀi°.ÕWalPnÅg»Jv:ìPkºŠÌqêˆƒG"Ÿk#]Vø´‹˜hkåsŽ°ù-ƒU¥aéƒÕè:‰{¼~ÖbQ}c4ÚM56ÆY­ÎØN×ªƒ¾®aùãº(“t¾‹§²ù‰÷Œ_êå²’ÂÎ@i…$‹J£—Ò·C€!Ét±É&mˆ$¹>'"€8œâ*Ø g¡„A»ÈTóu±/”FýšíS P­¦¯°&?K¡ÊvÜ67QìGmt3úŠ“#ÜÖÏ‹pR«
Üf„½FèÐx"Zå," 29#¦DŸ¯ÐlZ3[¨©…LXÊŽ
lIÎd ?øÕ»ž\vþUjéà]eŽ–ƒŸŸÁD÷)Bx¥»Ù?;Ušæƒ`xœ{Äñ‘™+¯,7U79#59{"‡êDma0[7%#9#±@7;µRAWÁ$¤¨žš—Z”X’š21ÒB]ºB´.ˆ¶µ“íeMÁÚŠ2ÓJ2R@FeM)KÌÉLQpñÐõðutÖuöpPÈÈ/.+ÈO›ÜÇX¤‘­ 2ÄÎÊŠa$ˆÇéTS’¯”ª ¶~²‹ äÓ@è¢ùsxœ}VKoEVBœ°cû‚8D(Hå˜Àî²ë²"dKQbcK–‰_PÆ²zgzwZžéw÷Ìz“ ½æ‘æ .\ádYâÎÏ€À_ ÕÝ³ï.Ùž™êz|UõU½÷ÛÚÛn±°É/—æoÌí?õ›‡W7~ÏÊŠnÝ}ÿ$T¥$(žÌmï±Ðorå·àQHsÐmxá7sx~ï”‡BúM•Ò€µYpb[å¡$]|aœÈÞ‰Wü1÷añãÜg‹FÃo¶…¨“Þ³‚(KGJBÒŠ©u±WšÝ¹Í+¼E¯.oÿ}³¸¬¨>ì·AGÁµqL%¨,M…Ô
†ê€nI‡&”kHJZ,fº„‡°v±[^Àt&Ó0ù¤WIu&¹²b¢'Öî/¾¯TúJË,ÀSŠ‡DCYªÐ<I…42H¡Æ°)À2Ló?]ñVŽv¼•gÏ¼a¡Pò6¼#zžQ¥Ç´ï”ØŠ~åîŠ© sÕU“äBÑšA‹éØp¡þä$f!÷,È‘¦¡%œv©O8bÈ™bßbºëèâãæÉu}§
±Zi)!=`\S™b"%œ$1Ýa<RÒ@Ç½bÉã}‡LäTJìk†£ß êíª%y$RqÕõ²æ™ì-Ë¼Ï„!3v¦F)‘Šñ~Î¸èrÀîÆ¡j8øÎ;tYC˜%éLT’vŒ’pýu‰qˆèëˆ
U‚·×0÷›{ôÄ ”˜'ÑÔÔÛ—`Ðª7ÀÐbºÌÃ„09|ÎäZÑ®~ò*7èq…O¥èH’L´Îq™ÕÊÚml³‰2•ÆØds>^@“=™l–‹[ü9ÿà·w`—Î*ÏºÆ‹³Vü2ÿð&ÆÎ”–è-ƒyƒië3Šƒ…7þDÃU$ºŒw¦ 7 "9½–?j'Xv>ãÕY¨_ÏÆ2ƒ€ïÄžñNyŠÍÆÎ¶p&ˆç×«Ïseoƒ”$C› !Tq¿œk›`®&‹Q#™¶C9v­0Ü#à¿ò=¿øyáíœ+ÝÆâÒ:Oípá®7ølƒQ.~XL‹7§cŒÈ‘è9ÅÓ™Ý]‚{Úô +cs
‰&F@puE˜Ï°òfÝHGtK?Ò-³F@Å_óŸ<ü¿º}™ðCcNN­›S›Îx™÷Ým W{zA’Ik@´Pxš!‘šx‚ºlcvFÝÂ5¼cÇ¹>Ž³Ê\|Èúnì¦™0ŸMÝŠL§™y”"ëDKiÃ³¤xmÿ6pÛX||fB³Ý¿4Ñ³³ˆ¶w€ÂAJŽþXƒuÿ¸¿Z‡]ÓÍ©Ò¢R õUÏ[F>ÆYHáQÌxva»ƒ‡ÑöØ‰Ò!“Bœ-”;©‡¬EÖ0^5Dv‚‘}¨×ñ-¯y¯<(¯Œ+Ö1»É(à/{IE»êÚãZŒµ“­¡ÕÔ!Ôñ÷+˜¶‚znyÆ´omñû[5›­úüøéþáéîþÁÎá7ºel|®ÕjÃhƒËíQXwÞì•JL±]½ÏÕK
›ð`9Ž/|Êï7 ‹ÚÜ6âÚöæHÿÿ˜¥Žâ‘ú ÞÚ–÷á~ñïâçÿ«œvåˆ\xœ[m°Aa‚WrnJqj‰nf^ÊFIF>g_—`×]O? ±YŸq+³%B‰nfŠn^±BŒ®Bpj^Š‚_˜oª‚§¾¿‚s~nn"P 8µDÁ3/%µ (›šW2ù‹sŒšÞd5Vyˆ)1 c€çÇ¤)Ø¤¤–e&§ÚM^ÈªÁÊ¥ “ûXÅ'W²êM~Ï:Aé›ëØr˜'¿æÞ¾9”W‰ÅüÉiü7ÐDìäÑD&ˆˆIä)r)+ä•å¦* JÖ	ôN^$¡Ee²œ°(¦A“=…+&Ih ÷zqOì€¥&xœkÙÌøzã†tF®äÜ”âÔÝÌ¼”ÍiŒµvHüÉì¹†Rúþ
Îù¹¹‰y)
Á©%
žy)©©@"¯d²»ƒ›/—~ÁäD'‰ÉSfr#4ëNÖu”™Üí¨;ù£Ø$'–É	Ž:›o;ê3Êzâ6’—k2—³£Âf-çD–Éj“y½~nöQdF1ÙÄÿ8
ÿ·¿
?1Pd²n Š˜e@Àdõ Fu±!<“O‰cˆZ8ù(ïfëOF ]go±˜xœ­XÛnÛ8}÷Wò°MYvš^°S ›¸m€Æ1"c·EÕZ¢$n%R!©¤ûí;¼È±l§ö¢Y¼Ì™Ñs•gñè^ˆwsÍ˜.é	ð»ŠöQ/Ú³FBžÀ×÷—Ÿ¯Æ'@lû|U”B¡u}2Üßß‡©HæB|…Ì:Í_(º*ÞÀâ} œJ¢Þ…HþÀùð9ú‘^”T”jwŠ“ZBÃÈ£·È*9ÕƒwËá‚hyx48^_·#W„7¤<ÉŸWÔ7Ú¡H42¡nÈõ}"<oHŽ}cž—L¦»Î>ÂNÇýóëé—88Â¿Wv”úïäÀ"öõ²(/à‚fŒSP¢¢P©Éœ•L/@é&ËžÐÓ¿¿zY¿Xó&WaJçŒp»^ß¾y{¼:S¬U˜óÆŽ™ìŽº­’K‘e˜ÞáïýáËA¥òápxtš±§Š”Qˆùa˜C˜*8»…øÜöBZºÕö>{Ò…TTCJ3Ò”2!+¢5ãùºH™"óËqQ”Íï…¼èŒýÝ(Í2–ØQ8$©é MàM@I3‘9ã x¹xÞI
å“¦áêìrç×“Ùx2ƒhvv3‹àãøf/žÊMdjöìj|Ð[ÒÄ}ˆ(OpG«jLÇ¹KDUžPKqÇR
’*\$å¢/“ëitaU«ó™õâìÒ Ç9În`”Ò;–Ðwð5îÇ}•–sr:²?ïàt‚o}ëÁ#—µœ—"ù®NG¼œÇ}S ³ŸÃj×UÎïDysms‡iÉ*¦i÷%ÕramË&¸‘ÌDÃ™Žû$I¨RÖ.ÛaWKÆ3q:ò.Ò–í½ìek/ý–íö’fq_“üt„Oøëì%´ÍæôGMŸ*¤Z$ŸôX¶w`‘ºö¡àÓ2msïPZ Õ"ùPÎ`ÙÞ'”Š¨ïÁ<8„
–íÿ1QK0Ï<tì€K™ÄWZÔôtdîÎ~®±­Âp°ðîl#pÝÛùùtD9BÛtïa­Ï4s\q1ŽÎo.§³Ëë‰£‹YÑå`
ES˜/@ãX!”%^ËQ)Ñ2)*ä^
BB%¤~sTRäÈÚ%XŽ ‰§ªŒ%…*‚T–®hÒh”Q”dy§ ÛãßBïµÕPÛtÚÛà®`•ºzáM¯zo^!1$M%ˆ2&•~ÜZ—à[è-Ø`7ïçÜä%³&xPÄ|™AãÏ$7ÕœZïP­(I
÷r—2:\¸‡#¥‰4½ÛO—9£ÒãGæ4kÀüpÜš•$·Ë°²…KRö€dV¦gÜmht	Ö£N¥ÐX±få.¹ÛÑæ9c´Lá^bÈæÐÂÐvo÷±ÂÂA—„÷ñ!)1w±AÔA‡§½kŒ›—3*)ÇšÑ›Yù)q]ÞöØ­É&¸‚C[×¸­:ûçùº×Š:ï|ì1ÈÄ¼…áƒ.Áo‹Ùc>íf¨]	º
°-¢‚éûY¸ë¬)À¶ˆ[ÜýB^‰`E#<úumönœkv"r¤ÆuCÑþ8W2{êÊm¹º½#eCaNMõ›¶Ýª¦Ž	˜bt½Ü ûD“vÈž7è¬œ»Ðó1yîÁ”skX‰àmX|W…Jc¥T€çSnNðTªõ]¶.xÁŠÞ­çÁÕžAˆ¼Ñ Ã_ø	á¤êžé¢ƒ2¯‡Bæ2ƒmJPŽ0Oæ	y3ß÷¬,ãg>‚1@ê‰×JzÛ ²P+›&¿(uZŠ²DÀÃäVABj÷UÌèFR¶+y°MÈ}Ž¼àºõµ3üçšÃ5º9þ|v5ý4ößô1ß
T/ÕÕüßÀÍ˜¢Ž,ÕË¾;fV‚j0K½ÿ á¡?låuŠ0xœT]oGBv¨ÊC‘nA D]›¤A(um 1®°JË»J+±HÝÛ£¬g·3cBZªUÿbÿïU¥þ£ªÿ¡/í™µ½.Šêï|Ü{æÌ=gî¯·ÿºùæÆÊK*Øà·›«VŽ:ýî7¿qá‹5³x
A<Êc Žö)Ùå(	]TM/®­lä6#ô¡Ó—,¢áyPjœŒ©ÌHDƒ‹[M.Yü^#2;yá@ågr¤"Bµ0I£ãVS&!±)ìdI
˜à ¥®ð˜$´)˜ñ§ø{e»øê’{Ç„g‚ñAÚjÚ¯Í`:Åè?/=*^_¾R|òQ¿ÛyÉ+dˆ7QdØ¬N,€‹‹Ko6ßGr#7—¬Y¼öoµ²Y<þøó|Q	0ÕgT‚Q`\Ñ¡`êÒYÐ(4}71&Š¥ÂSÄŒ!&Š€SEô$¸[wêÞS¸uØó»‡Þ-§Þë9bæ5ÝŠ˜N½ïÁ}ç`Ý'0‘š’!RÒ5ô;3Ø%z»¹KPOGYáÇ‚Jyé}¸sLÉMÆ!º6I:dI,&Ö.-Ž¨ÅÎê»Ïfþp«ö(ž¯ÝÉc:`œéR
¾ç$	ÓW H¸ÞØøÚI$êÃÿuÇÿÙÙcÊñiàè	•‘`™ÆÄ½·]îôú»m¿=‘*ù
gm-ßÊóá»å ©ÒWØr¡×&QuDËh|qI…B`¢ýÞ	šƒÂ‰NÒªØ’ZoëÑræì'ª±vÎž²éBm…‘’9,õ/›3òí§ß6 øgõzÞÖþmLCÊ ¯ä”“0A—kgjrÃ	1VuXfm+‹dY‚ÒšZÍsož+YÐ”£{ËÔº“lo×¶÷DhŒÃ [G4y'L ›«TypgŠÍƒ/®]½Ûž!ž¡c"Ï‡_øWäÿ‰ó¿(VûRk±³¹KºSÏÍó:"‚é¢‚‡Þ‰¡ó*Ã£pð¬|l{ÆmžMŸ×;Ïö<ãCÇ—¯µ´WºÓV™¿¿W>y„™‰dæ²Bp1‰AŽðCH­!5ÑÖÆ¶ƒÝ¢l¹iFÅb½t«ì|¿»_ì|ÚýÏájµæ'…gxœUQÏkA&–Ý$k6'ZZxí¡è†Š¬ØÖjØ&ì†â™ì¾l7;qv¶ =êÿ/¥xÿÿïâÑÁÙ´‡íÀ03ï}ï½ïûæïÊ»ÕKµç"’h½@Á1ýFÉì;­®íYÛiÛîéféûB£ˆÏ“ XG½C„yÎ’tIÛ^œ¼s¸7vàv€'‘»ôVÛ¢¯Úõ=²ôú¨ßW{‘þèë(¬GžåY2^©qÁc£˜¤ßÚu*é7/c‡ÚÚ/¯Ðrùš:ûµ%ý*}.ƒÛŸ3œÉðùdÂ”Œ(…,Å $‡%0,	øbF>‹asÿiš6½õ¦ÑtÀZ»ÓmµÜ5šUnÑJ§VtáôKõ×­Ví^®a#—`4¶¥jtŒp`ïßƒQ$7@à³S%¡¢”HÁã¨ÂXeªg¿H…zÕ!¹ÚºS9 ¦A/Ímúi.iïºÝ=1—iX.ª¿~£þÉ³$÷¬üÃ&L—èËˆ'ùÕÇ4U“ç²Ûhv:Fný˜Ï)·Â„„„M02sÃüLLd<ƒQ–Î ·qŠBUMr#_®žLFu5O0Q1ž…Çô¾>ø¡É=æŸ‚ixœuVAk$Efp“è@²A5äqÉbOv£"‚ÉŠšÉ&$A/s©î®ž)¦»j¶«zÆB_¼
Bÿo’›ˆñ®?@ñâÙ» ø^UõÌd2Ðé®zõ½ï½÷½WóÕÖo»ùýÃû­ëýÖ/ÔÿÝ{åA¤²ŒÉ8€a®F"æõ[Këpé›˜ÖíhqÅ÷÷èù¾€nç
ìGýÛ2leÜ°ÅVåÔªþ{éÃ7ÈjÏÙ&"õV1Ì,‘íãqoŠ=µ?¹e‹¿³üsýêÊàõXäÝŽ)‡H„žîÈ%Ø4ÜzöõGHŸnÿìí¯ë)êÌm ½“ƒuÝWãnÇçÉnŽê_—6×â¼ìvòBÚ¥1-­¦Ìp•vÅÐJýËÊf«WÿµòcÕ Œsa¸ÓçªžˆX
aª¢b"ÁcK»ß1Ê~f<EI®2ûM‰p°Hž7%Œ»wà3‘¦PhÚÄBB¸]BÌV¤D¥* V²»=7Í1``“úû‹½*À ¢öÎù¼Û¾DW²ÈBt ’†+QÊ™Ôè–¼]ö…ücpÅs…á…Lc#–œlY*zÆÂô-óÏ%OÉ»¶×Ÿû
¶'Ü'4z™ø‚]Gàn"½ÃöÎÙY»ÛA-Íë0˜Šõ©äßÉÙ@I)±óH$±j!\¹®Ñäˆ·ÔÌ‹¿< \¨lðG	H%ù¤¬
B¢Àæ9ÇÂâ›ÃÅåÁÑ³Eq,ì¥`Q+5NìêËŽH+’G\k–—×_¾ôà^ýÏêqåÛÊBa(sç¡N‡F(‰òÆ}1B%à¶“Jj”qY*@É´.•G¾1œnBN)µJç‰¨'TACR©Ü-ß pM=§°gŸžð¦¡"FD`{]¿Ãy4íüR‚'8<Ùí€L\›bóäœe€Ù—†Z3·Å­¦yöd633f>Vß~J½!©m×ö¹¤Žˆ]¯Ì’ÐëÌM…ÉÁ·&+Ø_˜*ŠúÒ·S>¦é •!4*pÇýÁœ?/¸6ˆŒNˆ‡¯©/WiÊ«ÜµnÄ†,©0b^ôn|6Yi&ëÌ@Qqä57€“ŽõxF¢fÆä",hL&¶ÔÈÃÏBJ… ,ïÖxb!üPåLÐ8oléÑâ}öŒ2.N|0,æSæÑ?psVÍì¾w!©ìq<Ãg†ñ­‚:/¶…¨¢“1™±’êe«Œ¥£ØoÌáøãpŠr!{–"¶} ©`àQTa?¢g*Þ6W¿¿|`™ÂS
Qlfd¥Ã°’kŽÿKtè$3ž·ò;£äÙBkº(îh$Û1
œxW¡f±KJ^•„M3ýÆ@Ÿ‘ÆÈ‰ÂßªYìEq–Ì´*ÌüÍºI7Rá}ë¥åïàf~*+j™‚¥ØÜx0žÅóSuLEõ4gQ¼*çúÕv79Ê
mºÉyÕ¶¤ˆœRšÇb1’ë³ÓYÔ“ÊQÉùÍ|çÎWoa6šŸô~túÉåê1²W¼$iXÔ­ûõwkëø;ã§µ7—?Çb™úÏµÖáõ¿k_·þñÞe_àfˆ2xœuTÝjGÆ$µak[N×câC.LK%á¤¦Ðxepœ†,[Èj®t3ÚµïîlgfSä¶ú¡¹ÉE^!‰¡Ï7H.B¡ÐÛ@ g~V]9É•4ß™ó}ç|çÌþ}ûÅÖ£ÕÙ€'Ïo|:3»wÔîìvÏ3]ºaa
ýÓ4’Âáƒ6…=ƒï.o»ÌÂÿäÍjB‘ìŒîÀo˜1ÿÎ­û³m¨mC>_Û¾tuÏ	![BPHPC¯9ŽO@)$4dy:èª’‰"æ:(ÄÅ˜ä©ò(¢” ©Ä?‚bðŠ'ÙßhÂ~t2—òO•àqŒ\º—ø!)Ýý9gILS¿05„”CÂdYw]§§UqÃS…=É<¨”QÇ£þÆ¸,
I™DéQ…¨þ
#‰£Âv¹Ðm–îÞ',Îu­ê˜Â‘8ü!ièJ›ø8ÖÝiáXrÈ¨ˆ¸ÀA þ¸¡X
dôšÇ?ÂÍ£Noÿèðø¦×ìt¼~C‚/ãÙ©ãÐñ¤Ðö~cóà´e^³{[Þw[3$ÑYŽ&bc!˜3^cëþà$ðÓxàÌMÄxžª–ÁÀaž¨ñÂ\‘šm@!6ôÕó	¾®¬¡Â6¡—ØJ˜vh›ó×“I,…Á§0]eõ1Xž‰u–Ë„‹[óW[“±Xâêæ~˜[€/h¤È	2ÿÔ–¿t=w)¦Ñ4 Ð#'zdÅLmåz%1ßV±X—U<›_.^ÍN*wÊ§:]´-·4·]V¬y¦kËÀÏK#îì¡U<]ØX3K;¤8ÚˆÑ8œ$ÊÌû¦x½à¯ÿÝeÊëý~§÷«ÁïQ–)ÆSD=‡~[¹Ñéîîõþ¬]+,>¹¢Ûw6ÿoë5ƒV°§µõâ ¶dð[ð?j_|s
ßþÌ4—€O²,!òT›w°´¶âÙÍ2ãyC¥ñ;WˆI´Ó®à¡ßÀc«„/ð8Šq…"¶™1K˜¢!.UbôÞ²»0¥h’)³öúCJ¦§Y2”	h¿‘§_©}ŽñþO»À³¦ö]Sœä·RQÜÎ!QP~D¤âzKKó—WÏýÈ¨Ùå£¥Hxœ­VAoE–U…Á§–
	µ},)ÎÚ-ˆàØ.±H°Wu$ªÍîŒ×CÖ»«™qÒ $óæŽÄ	‰R®‰W~NÀ ñfvíÚ©ÛXUrˆfÞì÷½7ï½ùžÿú!÷ç÷¹ƒÜ¥#&xïô‹ÜãzºÔÜm•ìêŠ…< tYDD°w°Ëà =ñãÁ€DtSCiúáÏ£TuÙ K¡Z§ìˆûl)Pëð XŒÈ€É„ø¬ÈiÍG’S{ø#˜¶<´n'–ŠUôÂØ?´XzdŒ•Zš©éi°…ýx©Ôqè±>L©/5Jz£±ì",<êÅ‘.Ç fm÷oc;’$EEýñæú»fõŽ=$`ÆlãœÚf|]˜>ÐnóÚö,®è÷™x3Ž&Ì=Ößnýôp¶d`ËÄ™ÕgÀ#ÅÁÕ	Ä=k0Œ‚¹›Åã¼“B^0By %Š€a0EÌFÿýÑ7¯Î­­þ½óVþIaõç¸¹7þv6a(ë5‹MÿòÉòÕyµ6\ºº“7$Wºæ° ¡T0)ðÊœ:ÜK“"´³7xL˜ë†qÀ}¦L˜Ž8knCvúÛÎ­ÜËSÅ·@ëÃ¡w[×uÒº:¢üüHYsñBf™œz!_µ[Ãá	C§?æTõkN¹Tzw=©¨9^,(¸÷YšÌ`’kNÉ³Oðvvÿ®åôã2’÷ÜÑ\«uïÅôÄ.„ýï7äATsBÖSe;'N½šÌÜÁ©7¸ªºI½ê*ú|ðhz“I_ðÄtÎ4‹›EòñÜyV4ËçcïÝßhîWt»õÚhÃ71­Â§}dÊ¼¼÷v€Kl{Œ9aÔå‘dB1ZÈcç›®wñy086(Óªiß¥¯céÍµÛå÷×åä5€ä_2Ã·6ë§´Rå'áy‚A2¹zAº])[±›ÏÉQs»•æ¨iD£rQQ-ÖESÐÑÛÍê,2	VÎŒ™C"( Ê]P¤åŒg´x¨FŠ!D‘±:z~¼£Ež_îŠ·‚’ÅzL°z~¸îDZ\KhW¨ƒúë–£?k{åŽ}ú(«È„éÃA©§¨Rª‰ˆ³/q<côj{åòxp^ïxw'g’"ãÓ¿îz•gò,DñúÔ0­®vÜ¸9?eÂ¹°v@·ÂßE °õ8A^\´³IÓ°ÚÑMQ°O‚å­v£»ÿŽ™8·žÞg½f#}_›?îõ£Îû}”+èüÉ Ÿr
h)È>Î%ðXÚ %1²„“Gcö“!N˜°i[=ý§û_îPnhî'‡xœ]QMOAÍ$’Å³†hR!4ap&f†ýðÄ%%z{ŠaÜ™îµ»²O^õT¿À“Æ 1Ù‹/7õGx‘?¡Ý‹]*ét÷ëzU¯^ÿùà½þä}I¼±=•ô÷QIÔ½ÜÛ«!t²xf ÿêe h¢ˆ	Xyú¡ÿÿ	ëK?`0ó
Le¦ãnÊq*1eêô1¨Q;lP)¬Óûp•NÂÆ4Ä¦ïÇÈ8€oõ›žýJ4Þ½2ˆÍ’Ñ8-Ee»?›¦\¨¼-G:Ž¾F}ñÏO‡ã2Ï™,ÕPhŒÁHÐh€b"AÛÉ$å,ƒV&y[»„Ò,}nÞ¤’]×ªœ&k9ýªß¢£ÚÁØ1ì½iÌR»þö’›ŒÞ5À‹é¨z£ÖDckí ,WƒZ©™…/Ô&‰U%Œ’Y†
,/³™-ëÒ‡ÕØßh¿zHß¿¢kã#Ãæúí¾Z;öí—ùFºíÜš˜%r“JáŽµNý¬ÏZi×Wï%B*ÁrÔÆÑyÃ¥P˜¬­BwÁ9ÖAe=ÍgV—´Wæ
žvÂ]—E²Ó{ñä¯÷EùÛ|á¦‚NxœuV_oE—AB­Û¨„Š?ji4$QHÄ©¡@«”?Nh¤¤1NÔ>¯ïöìUîvÃíž£HV¯H÷àÞ@Ÿ xå#ð	x€xà¥3{w>Ûi£(ÞìÎüæ·3¿™õ—?V¾þ½òSX9×•³µôßOÒ½õ/{*Š˜ô8‰UOø<=[ÿ5ÝÙøaÑg†¹Zœò—B³J‹¥ŽY…3pO¡ØIÿÞœ_Ž¸aÏ7L§m<X!ckg½ŽŒ}˜Ø&
xë1Š5îµŽl¬;›¦÷¶ü_Ä®œdÜhQ8A±ƒöóh¦O¸—]…Ù!;dvSGyÈ7(ì¬îª¾›§•N{épkîªÜ8‘´Ñ·!3\zÚ0´‘®6®¤ÿl½þBðãúù­ÆƒÊ°€éÇÂp¦Ë!Tá±Ú¡òŽ5-îC{`Ï£fªôÄ}‘DÄ*²ç”£ìO;	…÷kðX„!$šƒ6¾øø<`Ihfª"€JÀWriáî{õVMá(åçßm¯UÒ½&T¼”Î9È$j#¾

®F‰™ÔµG]¡œòXáåÚLã-z,L¸%ùEGB_˜®åÌcÉÃœ„¶t1‚!4LCˆ×X¼ó·ñæk±¬g|VRh®Ì^núíg‹Õ1‰?ÙyëUü¤ ”5lf°è¾üÚ³Åo1oä…Ã8Œe1Ù„pmºžìÀ½ùÒ5Ø@*ÉGt°öEe0©1WYÙ»‰îç7¼þ¬NÂ 7÷Ò´ƒÀÀÜãZ³x@°ç_}úÛ¥ô¿fZë(Ä{Å½Ðz7<81BIÔ0sÏˆÏH¨š^Ä]/ d8 .{¹ô­6Ê:¶9%ÑjšB¢x°Ôè‘íN ;¸§’Š(Ä³‡öÇò&òñ‚åzí}¶’ƒêŒåy„çÀíz×±qlcŽ™˜³°ÒPWÆTÞ·«cd”–‰Q3™«c_^¡ ¨±M»\’î}ÛepË%§ ¬%²vÂE‘"ìAÌ¥gÜœ@†JÉ}ª}šRÂ¨†%¿qÌ?O¸6Ü/é`Pâ——ˆ¤«0äñ¨u=vÂÚ"Fp]›©¦ÍÅËå(ÅD]uýrØÚ!5R)Rs8ïX‡G¤wfL,Ú	ËLÈ"ŸˆÙuXÜIÈ²ä9²ù€åLÐ8t¬$ô.´6•
†Ö q¸Ÿ—ïÆ¦%G[µ¦‘š‚ªX`Ùó]øØ€.j~QŸÃÌÁv 	 Ÿ¢PQ­$°¾”’É<”H`os§-²c¹ãÄp Ç˜š™P1ñmròÆÉŸ*gfXåH¡»B8›<ÙAÁ1,8Gàç )dJé‘P»MÊîD¶¤Æ÷Åò¢žœjEÛ8|pìà¯pvì«¾¤ôá+;ñLÐCP¾Ôv•=G—ÝìAŽ||–Þ„f,°*1S%q¥‰iûäxÉÍßlò6”Õ>óLÂBhëCØqÜ§#qq÷\°NIÕQÊÏà>Ö¢D›ûïâ"£bjp@éí«O¡eÝØË$A ÐTÌ}‹b/b²‹ä¤‹8“	(¾…Ðz÷`ëhé«c|BiÂÐ¹œþßº’®·îÐ÷’Ö\úÍÎlú}ëÚKÛ_`¥LúsëVeûüÖ//>;‡ëL‰xœmSMLAN$Ph°ÑØ…¼¦0P!^øÑZ¥PŒ´%AƒaÚm'ìOÙ™¢.&<¾‹ÞŒñjBÂIO\ôÌÁ‹M<yåæÉèÌì.TÃigç½÷ý¼÷æÅ§È¯Ï‘ƒZ¤½êÚânEžÎgüyg)é)¤cQ (RÇ âÀÊZBÖÏº÷8,HeþôÙTÎöè@MLÁ3HïÂ€%¦‚[LfSøðÞ»x-„Q$™Ôá\¶½ír6`”˜6‘t%n,¤÷cQÓsmu
65XÓr}oAtHcÜuüH¥išÔ‹E…G.O•n8È®©Ö›°hþ‡¸Ê^uá¹–¥ ”„ î*PFèv“í‹:ž0QÇ›ñP÷ˆ”S§N+¹³¨¦x³Z¥œ›MËÚßEILÆ¥ùÝæM)G&Ýºžröwž0«éQªÆ£e3‹6<w‡Ô-,lã 6§ˆ-îBƒz¦ëÉ9€ü3ñ1pŒLád®‚Ç¹^Ü\¿‚¯r)<)Æ‡oO¤+L 1i›‡7™ÇT,·º¥‡¦ýbry°³ªwÃ±*ø`ý:¦»:fÂ‹EYiÚªéb®ª+4 º†ö¨ç¦+Džo(<ÜÉ+=	ÌäAéÁ7ùîž (h¢ïócÑ³Å“ü~Ë_jÓ?ýK“q?½eTö¯j§_W“
9¾Je:U
%RSÂB·‹øa©_kx¾¤5tÎ©¦›Ì¢Ja´pÆ¬,ÏwtÎœÞHÏøq9¦­Ü*ø„¿—}+‰N=ö:­náÑ£¾ÞŒaz¡7:<=Ú˜5ØÎáËÂØ¬çFñKñš?˜â ª¾˜i4´Ðá[ÿ¨}[òi¬’öÕ&¶äD,Ì”ÇË½8")ÖÚRgƒ±˜Í„zcBP»!ôˆÔÓ%ÊDÄÔ•Gå¾°rb¾œ·!˜Ü3™YkÙgAe¿ëD@°ŸÀ…«Þm+Ôaim¼û/Ö‚µ(¸˜xœ…X[oã¸~6ß&ƒZÙI·X,ÒxL’Eƒæ†qºm1h‰vˆH¤JRözàßïJ²äxvý`SâáwîÚ®+å®ª•×'gïÅlüâáòþFdø; •™œk[HeåÃo÷Z^µ¯±])[LeíÝÚZzš2!æÿ}x|šßÎ‹ñ>¯µú‹x7~'/
½6¹þE~Î²•Ù¢tùëì"”õ‹ÜÉ,È´þ"&“	¨x ³[.˜(—¼ìh
UÌ7|3É7™ÖM¥£ÐÑcO»•ûçŽÞëeÕjv~™ÎËîiÈyvÁ¸KS&´B^²Oœ™î>qíIjoìÒÍ.Ò/“Ô²{êˆT]“XY¥¬†'Z0m%ûÇb¦ëtP²{ê¨JS™¨hý–HÊngé|®³Æš˜©<×!Ðî²×Ýø,nk“¾üY¦õ$Ô:‡_ðÍ$s™Ö=I¨`ÀPñæµäe·^Ü&k£Ž¶×ý!¿Í|céÝ¦WCEmsV ö ÑyµÒd„‹Ášy­äèÕ‘#Yþ¢ó×‹7oøø•<²12Ü!®oæWŸnŸžoúÔ ìx~y“UH&U±Sº•ÉU)9ôƒ$s™¥Ñ…\ly¿=!–ÞUü¢Ò…i*I(m¦% 
8Æ•ÑIÕî™àlÚY4Ë¥ö"zeT ‰Ò-‡œNåíò °ç;½+K ÿöÔ>’”ÕÿkÌZ•ÚF¹1ñEZ'+:¡§Çí3c•:B¡Ðp.›²ÜvÑè½ 0È‘óÌ%Š:O
vøU™²ñš1»4¬h«êK5²q-ƒ“µöð5ì/ñÓú"!œ
ñÈŽï‹¢èkÛù¹8VþðzòÓß²…‰R…§|ký°4>ÄìJ¶8t…ßTJÂ{hª…fuÛhÂñ…n öÉ7í]¶PX¿'À®l2âa]%À9ÇVJ`­ái,B¶& aMe°ïà!hoþ<ŒÌ!ö¾3òa©&ÄOçP´|V+vÎ“wQçÑÀ{·–œ¦h´Q½îõž_N®I,z"ºÒ=RlÖ¿›Üwztö…œ”z:r\¼”ÓT[ ¥ËXŸ¿ˆÝìð#vMÜ]ë{S³f»wOŸ.¯žÏ¿£º¼äW§òßÞAG²úÙT>ÝRx‡œZ?´G8A©ÿÃÆ£]ÈM—©)*ê»°w!9—€~3ø0ƒ$CµAÂ©»¿ž€¸WÿøçwÅ½"3œƒr7oe•ÚªE‰Üf»bVò(Dj%vgBŠNX¢Ô2<øð'|VLþÖbØ‡Ù×Ç;6¹ü²®9:ïñâCtß´‡³ÁËìqJ>>jøã"ÑnI£®êÈå‚º•³lÉ§ß„ðë¿.¥«“{@Ù¨a¥eçkê—ºAvCJ»ñ@A¸Œ‰^ˆ=ÒhHìJê i´,t¶ÜÂ_,Yê|è1Ô“¢´ÐKcÁr­t_¬Ç¨Tè]³zá-š|Å¤í½mˆœœþ¨Þ·X!±uv 3•Î^¦ÏY€ˆœ©$úˆÔÄ=°nêÕI#µ9éo/j'Sh«¡:NÝMLRj&žÔÕÙdþÎmm…ŽCr1ÙËx`Þ)KtêHPÎL‡[Í<ZºT&&5YcT…\ÕjaJMªàí —ôï&@Òœ»Þé\Ghå´*™Þ,êèÉ‹àÚ)tZùUC”bÒï›v®Ò
]4˜•e—ìg‰fÛwÙëù}kpCí¾õ`þ÷ÔÝÝÂÙO#ˆtGô~Bê=·§D7•fÉÞ#Á!c¥¶äö'œDŠµÂ»ûx@G%‰DÄÔ;EÞ¾vMŒÉ%…§mT·“ñTLTåpÊÑäD–±+	F¾†ƒñ»Mµo±O@œ=‘éØ–n|}‚Èq~pœ¢¸£éaXEx¼ncÉ6ä,&Ð-¹¤ífÙ:ÍB<èWEj„vuMÍI¬ ¿RølRà¤[ wgÇªòØ(Ì‡DXÏóp·!‡ˆ„Øß!R´Á8{1ºRöµjBüšÇSùHvÛ˜#§SŠ,`¡¯ˆªr_IÌ˜Êm2ÿ[Ýº­o¯žï œ{•'†rš§±ámd6º®òÁ†ü†ù”Ú–¤‰ª7¿Ã?TÏïÚ+ÅGnÖótŠúÅÉÍÝÇùófé>3;rÅ!ÆGï>){áZš_»;KJ¼¿6CÂ‹bƒ¥î:¾xÀuYt~Ä„+@½ogXRŒ#rYb®ø`,ñ¹eÃK«*j•sÉËÌŽ6" MØò0µŸØ#—íSs$½æ™†z àoþsyÿtw3øSãÁIý»¢ç
hí(OƒkWND™Ç¥…jÈÿcÑà·õxœ½XÝsÛ6þ
ÌôÁvÏ”“4×f|¶'>ÙIÔ©-E²›ëdü ‘„š ´ìÿñ·€$$Qi27wz‘DîþöûùPð$Ur.û/Èéú‡ëó«K’À‡È–’&ôú÷+ž¨®“wl¦Ej¨Uif…’}B¦\ÆÓáÔq;„Ï@nøÙC¨@¿Gz½ÏIbR&éöç™&“;OQ¨LÌŸº(®EUfÌò.ŠÛ@‘UEÙ-e(¼R§'é|qÖ¼ü•úÿÆj&M©´==±Ú>•ü¬&´´~Håyzbª|Ÿ­”´~Þ¢f™FHü>‹H­6¤æ!Òº­¦†6ÏíRÛ´«MXG*æ,å§'î«±kNÃƒˆÒ™~´
|¡Í³ˆuõß±]CZ?¬Ã³L—¬LO5çúï3$Òúß:ijuÞE?Ø¤—:*ùRñŠ›Ó“ÎZ-…¿-ÕJË7êÓ:U©ò|¨Æ•{›ñoÉsT#ª{ÎË„åâ'¶P1Ö}D¥9ä¥ä©M2ž³§H¯4¢rÎÈ•1kPH•GTYUæ"…ƒ’Ì†ê¢¦†ÍrÐýË<W«Xó¬Ži¦jÁÝ<G‹ƒYÖAïï¹¸œ&ÃñÍptÝT,Î2*$µKî
ÅC;kU8BSòTÌÏè¯SÀÛ 9§Lf”åh‹U4T	¥i¨(ˆL–Kkúäþ!Î¦4Ä™+]0K…¡™J«8ªK–Ö–æøèh!ì²šõSUåBV	Ö9ø9sßÀsäA¡Ú-yÁú%	9?4e’$“ãcâ+"üèg™@À€'ªÑANáJkßåódæ`I®Ž·2 Ef·ÜÔî^š1¦)ÿêåçœÔô,E®S9Š»uâ¼{QÜ'<IÁÝÙ¾	»ÛÕˆ7rxX²m¬‡ªÊ‚L•[!;ãØÆf@‹0¡x;°¸º#è­á)Ô)¤±è{5GÒËøœôíôé`týîb8y{äÂì™]l=+¸|O*É÷P/©¬"¤MZÆÙÒíƒ¶¡8ý·;Zq³„Œíó¬1Ä8³$·+¥ïéÜ :ã(¨ÂÈB&ƒøŽ&Xú”B†H`I dšW?&#ŸïÈóéæ‡<ÿŽ„Ï|.¤Ë[ò¬³‚=ßlëZƒðmóf¢—‡T|:ŸŒéP"Èrì3Xør›çy
õd,}'fšÓÁ’A‰Ë«È³MËÝL7ƒñÑpQçJ•ÏƒP&!z¬£*Y¦ÜÖg%W)Ë)¶µ.ç¨í»€ÂøÁWBÉ
WÚÒ\pÒ-/P±´Ñ³¦ê¬‰»ÿ7¥RrcB¾SðÕÐó¸î“Þ;T£ÎD	…ù~<øoŸ÷}­àYf©*6ÃbLzÃqâ+L-fŸ?öâáõêM1Á€yç«&4ªQÃõƒHáðfÏ;´†cðµ=¾ðÀSVÅ¼@ÿùDC8t/)"hb5¹¸:T¨×¯_½@+WëQêÔ¾+TUT²,ÊÒå6Š£sdüa·Ö¨JƒÏšáizÏ]=mfÁVëµ™ñ›t†ZÎ5’§Ö!BlÜ._B%å+ó¿yÃÉ^röúçŒô©WA)p|ƒCP¬® ‰X°Œ£dVë˜FjEõ>ç+´G	G.†ÌUèhàm²6£?FP040x'Ô½ãš{ýñâT‘Aµm=åÎ8RÀÎ}ŒTé›§qm¤iZ‡k¨ðÖ5×®{Ûý)èáÑ N6ˆÏ÷°®#yHVYµà’kìà¤‡ªº6ÐÎ^–ôžk¬´0\TØ.C:Jþˆ`Ám¬­¤€Ù†™Ý“h7h¼-®wß/öo¥ÀÒÍF·—kT}ólŠ%ôY-Eºl‹éù‘ÌC¡í–áGÎue;U‡2™¹É²íAdê[·'û˜Î34€ë|:ë	’AN¶3¼u€¯ú/Û¡¼é¿ü©ÿ÷þº7uxÓÎ#ÈqRöþYqÏŸvåü5»ì%=làÁ¢^tz±kSû+W¦í¹÷®ªÎ,Úû‰åP¿×˜þ?ŽGÇ„ÇúlÚÂ²æ!·rúþ¿±–î.¡­@=¨ç   î23¿Äd
øØÜhÃ*`°Ä‡Í¢Æs‘_‰<GßÕƒ"u (¡Ç1ôÆüÝÈÈ}7+dúAiiëëô·ø‰çW´fÃÙò”´-ÏÝ7·7óÝB‘–:ZjEÁqKÙ®(™7Ó¤pÇ2¿Ù‘¬Áuœ604>€pæÐÃ ©ÕoñB È¶î	v‹N 24Ö•\•myV¶—¸Ãâ\¿Ë¢†lÀ&»âÀpÌm§%7`ah†]?d¡¬ÌËZ»«@Aþ‰¡ÓÔÝ_°"¨B (ÖÁL)=ãŽá: ³„A,j!QVKTŠË³4ÜZ%L¨5j±ðí©¹AÞ‡–iŽÀ§¾¿¡Lða¸Ù‡±Ëùë½·¡½+ÙÁŽ›Ì—ÿ:¿ÿv]¯þH'›×a\Y_.Ñ¡þLÇWèŸ#[”ñ‹k^_Ðü@£«[Z/Ô[|4\èÖ×ë dzyIÏ›ŽZÕÝÝrÝ§ñº¾lÆÁÿÿÝ9¿½ù0š´w,n:\1ãü æc	-˜È­:^2Íß(Q(äó\ 8V€&÷üŽèáB|Ì EÃ‚äô&Ì"ð,ùö’âµ–xœ½ksÛ6ò»~ÅŽ;×È­õ´Û¤n’9WVu[±”¦7a>@$(¢&	… -ëz½ß~» (’z9½äÎ3% û^ì‹¼#Ð6~ÒßTè˜ŸCz—ð–/Ó”ûë½‹\G2;‡÷ŠsÐ‡£‹·Ó—×7“#PxLÈôƒ9ú3OyÆ4½”þORÞÂo“W0Ñ«˜«ˆs­àN¥l¡"©ái¤õâ¼Ó	¤?Ã“m¶S®;Ï×Á%ÓÈP·×9ívúÝþi±óš¥9‹Ïáê××Üý(¶&2Ï|n·ìÚ+–Îs6Çµa:…Šh¹Ñž¾„#<4ôZƒë««á`zG=ü/©™Ü=#ƒ´õ¹Ë7pÉC‘rP2á°™f3½¥ó0ü‚”þý¹‹³×,Ÿ«vÀg‚¥m™Í;ßuÿø´zµ¬U{žæfŸe~$îx'ÒIÜ™g2Q½ÝZÝ~'Qón·Û;mÓÞ—âTpðÒf{í@ÁÅGðšìc£ÍcëSÅê£/jHÅ5<dy¬!”YÂ´éü’„b³˜C´ZD<etåí4ªíýž+-Bá›]h²€@ó{üóPCÂ²¹HA¦ñê¸ÑfÄ_T¯/FW€÷i:¼šÂdzq3ÀËáÍ¾ùRd&tm/^Õ8^î+ŠÊà›eÂW€û:“qÌ3ïë¶…žüãêz<Mð&«ê0lxáˆCæ…7Øø{ïµ¼–ÎXªèš>{ª3½Zðçfï_H£™[ú°6ý˜>{ªò>ŸWö6…bc,Ò‚ŒˆÒóy–A±ºVÝù" `óåy	«`½¸8’Jï"OÐË‡([`2Ÿ?{j¥ºBp+`ÆÜ—
×a½x ˜$¶ÏšºFP¬îEÅ1rí‡ó
å_À.ì"?bT+÷3Ž.bŸÏèŠŸ û:‹w£<„"ÍPÛ”óœ«gO¿*$'høû à2šoÂà» x¹¶hàø  9ŽbŠò
ŸîÍ¸[ÎQG,Æl‚n™ÈÁÛ€/îv+à1[U%ôÀYsÄR©:= òEL˜{ëµ†»ÜcÃ8êåcËeM+Á>_2œs¥k›3ßG‡i¶ˆ`~Þ+O²(nÇ&Ìõ™ëEŽ·ùðÙÓ0Ñk¥K0?±j…Ë—ÃÉàf4žŽ®¯lddõ‡±|v‹ MÙÍDùŒ'¨•Ò<¦Zpó`¶‚2pK¨ÄÂc³àèMq'ïx¶#iP.7õ®9„QÚ‘ªQ¢}âA.ˆ»u®¹6òPªÕ,q»J£}3³Æ4
¬I)Cä¥Ìn!4¬ÂŒc•¹BFˆS+j¥ñZ…8™‚Aže<ÕX_fxÇb¼¶ R?Î~ŽEñ¤Áâx&ïKÑæùñ¬gb½ï³Ý˜þÑø•4¦žãwSÏ
SœLÿ¤Í,H˜Û›n³B²èÌz§y#Ãï.nÆ'0J	ßíu3¦„Ÿ ×þ±£ú¿þôn4¦ä½‡¼³ŒÃ bèEqE-“ö‡Y…é`Ü·!c)ÐZ²íZë/,É‘F,}e$BÔžÉñ¡‡N0tSÖ'k+Vô†5ÍFöü5§Æ]×$Ë’âvTŸê¡t˜+24Ëƒj!/ˆ«Âù:0y#jÖÑ¯&Çƒs:L&?F$HûÆ)Î8ù»…N¾_Ðjò{ïÎŽëBUjØY=$W…Ïî„ÏAŸ#Š¥!,rƒ7Í“™UÏO«¢™81Ûˆ®rbmÓ›Ë×¾×ÙY¿[|¹aÍ%Ý_µ©	8Î‡	aÝöØ/Ï‰³"Íè2Ízé*©[õo¹®‹±.«RÔjËO•A¤šgñ×¤¨­ÁuÔÃ(”.úªKÏûÇOøã ÇÙÙ÷#×Ë‡Dñ,ùzêBNXÀ‰:+øô+¬‰o)vgxybnZI«{y<ðº‚*eq©¢Z	ítá(CpËVÑ³¾$ù¯Þ\á"CO
0I”ª3±ƒNéCkD›éÈéR©Ë„xRC‹»Éf2N®²Ž	yŒßj¹:Ž9´XVA,’[Ìü^(wX®åÜN˜ÐrÄ­I`{Q¸åÅøD96ÆÂ¹lŠ­°5/%ÎSõh¼:$uEÑeQê¹Òm8-¿};ºl¾M±PÍfÔ¼5T`TÐÈŽ`ÕçSŠ@ö–‘ð£JŒsƒÔ9p}ˆ%¿Ý°(;©+K•_&×W`Ïç™TÕÙª¶Ûe.Gíëöïª€–™éŸeÊ)õ¢Ld4ct‘R”6ö#Þ¦\˜bcV~²^ ý<AÍqÂÚð’÷3´ûÌø4pRçÎ\è(Ÿ!B_&X¤ù=æJâ83óD÷-åG<aN
äñ}¨è·lÖ¬Š÷4vNÏÆMF)¥"¬*ÑE#²°›ÁØ£?¢ãñ@9ƒ£Z.&ƒÑ¨©ŠpÓ ì#wÝb¶
OðWï?¾Ãÿ'¤ï‰AŒz^`äD‚†‰ò?¹¡·|µÿnâ7d{·üT5¡'‹-'ìQòÎøST])Ú-”I“3ANfõˆµVèÿoÒšÛy€·Ân{ôgzWn5þC½+"ð¶:×`ŠnÈu3AF«Nð]àÖÀÀÑ¼PŸ˜Ð…Êá7~³qLŠ^÷+	±Q'5®“Ú1ü7”¡¥Lý0Ux·ƒú›’úÆœâÕÊcN±Šú*[½mª98¤çÛ’ü®qÇA ÌyÐ"áØ€CS˜($Ó@m”Ä~Ih×xä !sª†µzæ°FU»ûÀB,m°Ö)6ÍH¥ÆN\²³cêr›ÊÕ' µìž	PÁ¥‹=[ÃšÂÅâX.1ûûA¥ŒS(±^rŽ¸©Ï*ËpSJR€*»-Z¯SåúÈÇ‘½´«
&oÀL‚œ€§d"Eì@ÊlÆÑÏóE@w—ÜI&›Îã–qÈÓ€¼ßM¹“•$B§¹+hÊ‘’ãÇ½Õãªƒê·q€êvC¤&ÖöªýÙ	X™5íÇF§àº.ÌTÎ ®q†53­1¦¢+ûª	TžÒž­#§I”‰÷Îù¶¦VvÓœ`l'×ÃøŽ6%r.YhiË üS!dË¢¢ÀÀàbˆUXœ%R¨(çç¥óïÈpy|+‡›>”)ì˜„qÏ%–A›íF¤+“FàJ"bäQºUÀž-…*Û
š_»x=~5,Þ•Ðûµ¼?¼†=juÏyÍYŽ_¿íž>òüFÛûÓ¼l£4Íhõmì˜èôÛ§f¿6$)¯	,°HÿHó³~·wæµºOlI‡Ÿüž‘ßž“ÓÞ™¿bQ<~rvÚ/ºÑølÝWö~ ¬ÝûÞdkü§„cº«Ô/¯»ƒÙºë>·âŠÐ	ê'ÉÒ°ñTßmòÌ0«26Ù¢o/„>OT;;­09´,Æ›‡pñjrmGÈLÀ1ÝF³wveù±MÁUZ¼Ý7¦•]2š‹Ú¼)ÔLXË2üÌ/2¾Â¬Ê¹«¨½¯=Õê{ùûÞ/ðÔ·};‡-Q†å£\DðÃØ+óÀ¾toý~¥·~ÄÐ˜¡é\·b…@ûQðÃjÂ½ž§EÇ;‚^û­WcÑYÔû[ÂD¬åùïèyª½h‡Å¿Ó­ˆÉVŸQß Úb{V²•nÜÀþ™‹aÙãò•xœµWÍoI—ÉfãŒE`óAbãØ…W¬ì0vâÄD»Âø#ÚµHÇ³»íˆ¨¦»z¦6Ý]í®jO,!ÍÂ	H»*.ü\‘,´$$NœÚ+â€´ÚÛJpÄß«ênÏ	'i¦»«_½zï÷¾~óÙÖßZÎL†RêHä}í³ÉÝÖö£wïœ|qâ×gÖª7¬½ÌZ"Ù›Â°ªËöyW°\BfÛ)Ù¶ýô¥æTµ±ØÎNŸÜ>û—‰¯ç¼¿±ÉX¤<÷Xõù!´ç¬za?xyz!G2ëþzoX2dnÕ^ž¹DÝö2íÛXÇí¨Æm{óÜœýÕäÅW´î•‹OÙ:žì'“?}©æOìïÏß™xbÿu~ÅþáÜ§³™ÈµÔF¤†hcfùäôŒ£oê×-¼¾jo4¾o‹sWÎF*„ýQcvÉa¦RÁTÎ•‹±øi hÿ8uµ;¢JM®â ¾¶ÒXÑYc7b©bÏŒC[W‰´ÉLO¤¬í¦G‰`CÈ³¾ŒcÆIæ¢I˜Ãí—¾r¥U‰ã€@¥#I¦Ðî¢‹,‹g1a*Šp ’„§!™Íò"…æ¬#½ƒñzÅ3hÑÎÒj»7î°w¦ÇxÊDž«ÚáGÍûR‹&ŒÐ™d$6"¦{ªˆCÖL¼ á‡L»îÀör{Ùä<Õ™ÊM³zÃša‡„í"Zsh=•×GYó®&7‡Ž®òÞyàÀ§£)mÌw”S¡k3^ÓÖ[laksû»o<zgogÁùüvOØO¦®*w¹‘*e¡@Ü„.ÁK‘¹€ðñ`˜7æÞ»{KÁÌ O0bPÆYÄ;9L…é«ü)±®r·GƒŽ>F$šŽ3‡¥RãÛ<ï
¤l¿'ƒ“^;Ä ¡K1Av–Ú	985ÞR_.L‘§C¨Ž+í]Éru$Cá´žúäR¦Î
™¢äÖ¢.`×µƒiD×ÅºH%€‹¥‡lïñÞÒ¨ø ­ª@jñ
ÍÊÍ*ƒ!P-I£EÑ
’Õ¨Ü—·V:Á(ŠÎ©èÊŠ´
à®Ê`Oá÷D‡ëRìÅ)—Ø¢“y\ðØgáºÆó •¡«œB‡Ê”Dî.úfÛdšW†5™0ÁK
À!hªOvt¡Ô SJ÷¡Ë¿ÊBŒxºþRë22(bŽ²3ö—¾ü~LåÀQÁ¾ Í‹2ÆNOp¢‚Ñgd¶ïŒÆá‚4_  Ãµë"ô*¨7ÇÚC.IÓ^5SýÔáëñ.ã9¦fÑe¢­ôTß¾µºÖ^¾õ:nUÞÅ/uég¥$NÛetàÚJbœÚÁ¥eOjgî[´‚k…#,äElè–l/±t®»í‰2ŸO¾7uéÌùútûþ…\^Ï\üöÖ–ªJ:ùó…•3=;uñs»tégs§³[ÜóíuxÐÛ§.|§äO}lUa²Âõ0<5Æ®FUaô‹$£FãjšYG¦ÔªI?Ù¶U;;Výe¯äôlûùìµë%“*«GH™ýYŒ|bþ5™b7ºã—¤.s *.8E&Ü@éP°ÝÃ­¦»¬6Vî7Vö÷`''_z2a>½>02°Š-BÈ‰Âdu¥Êž
‘!‘1ãë(«Ì•»ƒE#»)HEXÇµÎ¦r²²O¥˜ã2Éb‘`D•Ò  :âè_§_™°fàB3³Ü/³?™·¿¹½÷;Ï]ëMÊ†Dƒ¤C8xÃÂžçú&Aw³‡Ê½é'•MïˆÈ`Œa®%ÔÁÊ|~œÒC¼k±µÆþ)_‡ØÑH_©•´¼Qíocåâ«4›â\ð°Þ‹Òö³¿›iR^¿¯¡0:h‚IÒ£¯+®ß2LÔ³TJæØ—\§±i/#Å²ç²„.Žðl«¤ãzœµ£þ;ZDã>?n‚%ÀxC3¿?Nû0$öò\¸ðØq‘á&?Ê
LÏþinîß¨E¨;{ÝÕéÝiKwã‡Rd½Gu´;4ßj¬ì<Ü¬Ø€ýûÜýúÿŽÝ™}š¶Axã¹íö·ó³¶9÷à»žü×FåÙ¦£ÖWÆR`{mžò LëæÜ¾±¸y8ª“Vj†Mq`5\WÇ³IÚ‚ÑßÇß\¤1„MXJùÆàU*Ù•”Ž’å¸§½Kî@G9PŒ*Â8“<Æ¹„æ"A½ä±ã	Ê¬#HÐ@’T°â§:£â Ífy˜pdg«oÜÆÚê]”wßÀÏ;X×lmíö-Ü2ûÁü·W^¸eß5ü{nËkMÏ@$Ýß ãL°…Ð°Ñ^;W&ªýçü7íö-ûKöã¼õ;†éD2xœ¥SKkQfRbk©ŠšT{’>H´I,U•’¶ZLØ"ÕŽâ<n’!3÷¦÷ÞI,êFÐ…P¹ ›nìBAp5ŠˆnüîDÔ­ÿA½Ó¤m¢Kg1—9óó}ç|çþžxy=rÓ #ƒ§4Û¥Õ8ÈgÌå%B³°49µ8=‘mûû,1„ Äy%›ÉÔjµ´IršÐb†›Åó„3%îØ™zÂãü»pnvff"· ¦Æòy¯KyÝ–mâ5ã3HQÐ°	¹ú?à&5Z	ç”Ø6¢L(Á¾®Fºêç«…köó&‚±€Ølï?‚ÇÅ×öÃá¾Q¿X•e±¶?*º;x@M‰G#òð>v<QÄ«Ð™øù
P´ì"Æ™O­ÁÌõiÛªÄV¨çâÐ¶8ƒ"£fAP x	ÉlîRŒL0›
„šLD;‡ÃÍšÅBçÖÀûÎ{b4¼(ž†ã=>ÿÈ‚š%ßÂ#³¬š—&ø¤rú®ƒ0×¸Eð®\ušÚÑ‘NJÁŽã×õ—J]3ÊEJ\ïç¡Õ¶#šiRÄ$Ð]u0SsÕsIM·)WÄf÷¯ ,ˆÈÁ·býÄ÷Vå+‘\kàSä¬·ÝPzËU@³­ª”j9ˆ¸&‡‚M–Ïbý—vg5º[ot19IÙ’´Âïˆ¹:óÇ€94ÈÀdÞÆÉ¨â›úæT¾~€è}þßeƒPRÄ‹ÞÿÖ'¶bƒsã«	c™K#Rmø¶ëîÞ*Vàò-÷ˆZ¨jáâ_H›%q‰ñøéˆRi¥#ó#÷ãEqµ)Ötwü«ÕØ¿½ÕÔÅËþ/­v=øÜðnÞ´B>$.ô4/S}½8™úç„ˆ1ï˜€õxœ­X[sG.A*EëX1R•¢ÚrÅYQšYIV,ÅV++_V²¥•eÅPI½3½»ÍLº{´RŠb“@1Où¤Ì;ïüŠg^xãÀ9=÷½8àÂU¶{{Îýœþúœþ÷_çþñ·¹?õç^wD0ç…7wÑL×ñ?±+YjbÕæ	!­ô—„’´+¹£h)<I»6¿Ýã¿ìý4V÷¾y’òn7˜ß4ì•?ŸY––4P¡úã›ž¾«¥¾ÙÍ¾¾k¾ÿŽXšûñÑÎ;à	ÎC­¢.,sj’ñ¤øšñ€×•©\–Ù€‡’âòØ†G;ÜM™ÌºàEò/ñáÎ»¨f ”ž©X†SÔÞ£3,fUAäÛÈ²š²dQH×ËÎHé2Y)SêM²A;gBoÖ€²×ã}«Ç½Ä4§×¯¨Ù#åÝøè“kwàhh)æH–¤5Y"à:&ÅÚ¶Qð8Zz³[cŒ?ÇZÖYÄ"¦Ë’WÀÃÏùPrÍ¦r ùó	òÊzº| ïTÉ™¥ø—lÂC~T%?e,´¨ÇÏ™¥}1)ý´J.Yzš,—yôrÂv§Jnbé	¥¦Gr¯ ÿf 
=îPMvÞ3Â]L¬!áŠv=pð¬ç‰aÙ17#¸ÈúLéÊA’~.…j:…Hæ$‘¦Å7Frˆ$xD¤ÃH[=!}šÔJÏ×¥`RÚ‹÷[µ$ï ´rÈ!©§\	œIæ Q—J3ŸÔUÈÞãÌ%ÝK’A¡[›ÏÁa'“}ðéFÄ9“Ð¸{`-Ñ–P>%ŠjóEH`0ŽˆM³O¯»›ñ¿öº8üöñû×¦àgL®Ço=y×	˜
yJzÆÒe<è“H0¤@ãÄj­¶2«SVð>’’š(-‘ýœzp/rÙƒ_s¯I×§ñï?»Óy¶iå
"D"ÿR*Z÷W¾ó´³BÚæ€w!Œ+¤K° ñ
aÚYŽ~¯ç ìÖ6X ‚~óy»³ÝH×d†Bò€w%#­…{¹7(îûÚ	QÞ³XŸµ:v§Âóš'„aÚ¬Ü~“ÉÖTö™&XO ÝõˆÔÅãkñ“O?Z¨\M¿+˜çÒÖ×”`ê–ê³å‚ºÜŒø«Ç,T./º8qe‚G™Ç¸É”"¢gT´ÊxVPV_
* B“òâ¯:³û¶IØ2Èø©ˆ<¨c8A!©Ý± µPx‹™Þ:»°aû|#=®×J7)wÓºž¸{sŠ¬˜<ç#Üµgš[*ô—Ø§Ì†FÃÈ"¿á Ÿ\—õhäéó±ýaId‰2O×ÓÝ';%™ë«&QÃ±Dýdz¿03[æð¦Õ…¬¥Z(l‚½±”šÐ@]¯¤9b:ñS‰HBôòZÒ]ç”iläâóÃo–ÛÌÌ”v%CœÜ^h&‘ä-NóµÆô`° ×Õ*þ±¹Å6Ý5F7n»tÙ Àä	pCÕæóÛ¥UÁ
Ò§.CS(IñÖ)ÙÉ8[ÔÅóà1­¡FJæò;ÁF—a.kÕ+‹ÌXW™¬’`§EDaŽ`“Bu¸ ®ˆýª8êHQ:†í^’¶ä:Àz
„&ù±R‘_%úÑ“ÂOEŒào#R²að¨¸ÚÎ}ÖHM„Ò— /Q¹‚%ØWiÍÓH‹>˜„[Î-,C/Ì…`ÔU §L"öú¢íFCÃL-ì¢ì¢p‘(àÐBy—³¢ŸÖŠ65ŠÅ‰¾Ïó““öný$€æJ*êÌ#œ´3Ñr9­hkDq0n8àÎ À°ÂÌ¤Ï ç1õ?Ìû^“ö)]2Z0:Q,)üvß;>< 	y¡Äl"W¹ø€¡Ðš%uZö1ö*G|¦¬@ÌŒ[#tóhê—Ðîc“[ÂIkl““¦ŽGÓê
'ò!¨¬ªe´MÉ@²ÞÇK­Cu§Ñès=ˆº¶#ü†ÇƒèÂ2Žx¼kþ1©S–rÌ§Æ·¥æ«rÿ Ù·´ýøæBeè€¬½3cJ‰¿¢×G¦ÞÚ…M	Öþ KÆI¢0Ü…:f®J+ˆdç¸ÕngA¡ªC‘} 2‚×íU”b¤mÙk·ìí-“ºc#šÈA§Ñh’ù„ƒ— Á)»DØ°¦…¤‹ý?LÊBk,êï½lÎûÎÐ¯iÌ•Ûå0MÈ$žÔ+Uy…ù¿LØèÕ2ö]	Ã(¦$cöŽ™¹˜å³ÇXüòõ¹À·'ç]¼b6«WLÚ œ´‡$!Îf”tÂp%"#
#›yAü§ÎÇˆf·w\ˆt
<µ;•j*eÈ=ÃšÍÄÈ@åFA§Pð£i5ÊßûŸä£D/<
œKHN €ñ¼ÐyTè¼:>–cÄŽfEŒyÁGœ¤Ý`éþ›ŒåiÉÕiã=ª^©ªF2bÈˆæ>ƒÁ–Ô¹Á¸
Ûã7œR†¦¾ ØÏ«bÍ×²¤eˆ ÄŽ‘\Bå¼–Nš"è’2*|C ç¬¤¯MyW@õ[Uõ¥³Š´¹k!“\¸ãÎíÆ¿Ý¿¾8ñïÿú½g;ž'†pÍdÝRk§À)=d¤áÄTtÝ¦×D)Ù™ƒ@€Äœ‹J¯T_5P£¿›l)r|DÌSGê¢‡ð9HGLu…]•….ž,,LÐæs1Ê¨˜VÏp€V²ÀÅÂEÈ©~è±ø*]™ë£)óÅë	šñþÃ´ãR(¯¤BÅÒôù¤=½	ßCd³ô²‚ü7¦ð#É÷aÂ]<º ÷Fæ}e#„7)E³g50¥]™-}z1Èj®Ú)o5¸4xð‰u
iC)$ƒÈ¤_žÔ¬ÃIîuÄXr@cITd¼NyöÌpaÞ”¡Mžc*Ì%:*nÑ‰ÔL–TÁ8ÄMÕ¡©¥#ƒ¨£Æ`=  ÜÉé&‡\±ä‘¼‰Ößé7£Ê£B1çã ôËg½¾º¶a­naïc³ŠUs+ÿ±rK–»¹µqk½6ŸN\íÎF>Ý­}´n¯Ý†ëË¾e“žKÁ¾«I|ºùœéŒòWÿÒ½yÅÉßÒKÉçø$†³Ï«˜»›ËšÉ0(—ŸÇ5wÿmÅØo¨§ÄRóøþ}²óøøðûvü÷JÅYYã^_[®Í›¡á‡Íôáì-¼b…TKÍ“gŸÆßÞk ‘™‡ßèÌ­w	F!ï[}Ê=-î|yPvh÷$»„{†±{˜NÝ[jîÈ>È>`·Y›GÔ—mÏ=¦,—-5[	ý”¯È#€!ï#ûâº{<÷b¿Žä‡“	xœµWÏoW×F)ë¶¡8ˆ"ñ’`ÇŽvÆÙÄ4)qÜ8v’ºm§¶c„9ogÞî¾xfÞø½7ÞXBl¢$Ðû"qè•`þ€žzê!Ü8¡"õXq@âŠø~ß›Ù™u7"Øƒ=?Þ÷×çûë3_þµöü«Ú»µo†\bŸÉÃ¤Ö_Þ™¯ÞyïrqC¼F²Á’Üfš| ºdv‘l/cJ-ÈJ~ö€,›Ÿ]ÿ´T{zéýc¾¤ýkÓ‘¾ÚáKhÌ¦»ú*)~?'ž$Õ·æ£ßo†lŸÌJ¹Ëªˆ„¤|…Ç‚ŽÙ[þÞ	÷vÙüvù¬¹yó;“Š¹$<ÞµBð%ÌÇ7y¼Ê“ÜjÕvÌÓ[MóÏ“f{åo¦L*®4K4©þ@Ejž-M¾¹—q6úªx¿ïÍç·vÌ¯o|÷•ŽàÞùÛþ©EO$ŒIb!ÙX$BIÉÚý;ÌCô¼[´-y Jxõe‘h)¢ˆIa.]4¯=~Ã<¿=1XíD”J@Pƒû„‚‘.ßgI“èKÈ‹“ý˜‘"7sð„ôyª5‹SÌd£Þáà)%s™’s‘h4Çt0‡’s…äˆ¤C0aèq¦À•¥it ²`GD§Q/Ë"qL“ÐF(³Ä'Ä9ü’fuö”*K¡Ìù¹Ð¤ÿ:×=BÂ¤G¹"²Ïk‚k*eïð Z±CD‰ê‰,
I›çXÑñ¤‹fuÏÓ’&*R7‰½	C	ZÁÑ°€)EA#úˆ¯Õ~ÀÃ-Ò‰hWùd©šÆ¢wl6?h BùÒqžúfb÷'“mìv¥È’ðÌâ¥å÷oxwkmÅ|zÝ·o‚š¯×R Õ\$$do¦rX“€¥˜9B«¹« ¤{T#Ì¨–¼+ € î 8Ú(éX+zÂô /ä.†3$VJemu ½+4¨)˜ør•›Tv™Vz¿ÇƒáN?œp-4`]õ¨Êƒçj£>°ØJ¦3™TŽM§\0©û<dVë0*°õ4,ž@'Ç±•gT>,H¼-ƒ,á F£ŽAl”díÞÚì¨v6ÄÃ•Êˆ6êöuiQáp¢xÄµbQÇM¥…tsC‰FL£>¥lmjí¹
Ì£m²&4s’x¬MU~öÅõ‘‘{æ^F#[¬ÌŸYâà".‹E½ÀL‡Ÿqs»Yz×$ÛÐþ³$ÎüdPô1Ôn-Ñ Ê±%¸"à:´ÕXø¨,*C¿Q_Mpjd…ÞÔæµûÞÀöh£Ól3€zÜµ©~AùäÈãDp–¸a÷:ÜÝ”¥0ÍÂ¢wËLàù«yÀQÌ—ÆÛîAuq=}öÊÅÖå«Šˆ~b±vØçÓÚPvÕ\5É‚Iw1ÙKü‹ZóÞ…+¾]§ì“T²RþpØ.Ìå§¡©– qÆîe3äŠ·Ç•uâCæ·ð¯ ¦Y¤áØô‚ˆ[HÐ}ØG§GwQ^õv¸>÷ä‰o0¿ËOÎ°'>Y]ßŸŸ-šÎÐÍs‡¿Zÿèx­gŽo=;e™ŠýÑL‹.K˜ÄÄ˜Ï·®špóG&¼ÿÅÄ¶ñû‡S¯!(fi£é¦‡¦»®FD¦ÓÌŽÆÜ÷q»4÷¿â´p˜Å)2Û¸`ˆ´y‚KmùäF‰Ò¨Òé‘]ª´êJÌ3ÖúöÂxŽ°'s}ÃÛÄP ^‰{‡Œ' À'+îWEaåÍ±¢;ç›¥qÖõí³Mû¯ež>˜>¶LÌ/¶'ÍÓ‡“‡rûo5ó¯ýæ1É¨¾%`óÛ¡@vK¡a€—ø¥Z[;"µÆÂMÊ»	Ð¤pX.Ã:Í÷­F‡E”jxœF,†ÊN:9È<WTÊ³G‡5óF8tïyøc#ÂGö*6Ÿ=xºûóæÎüæáÊ±A>"q#´ùÉ—&¡„¤r|¨“dÎ-Vå÷þ§¸~)Wk©¹·}º^²bó—Íüp½$Éa…ç“Î
n à+–.£Ìé ˆnYF’Ñpx[ææ¹Æ&jæf§µÓ´MñX‰Ä¶BØs½ûá×QöˆOîBlŽi»–Í«9GØŽ&ä0JÔ<Úœù†çH:x7€iCÛ‘køvÆ#íAù¦_³%Ùˆ©JN–EÜ¶SÚ2Ï«ˆ#„,D}z Üâ×Hdú•ˆÆØôî÷,Ùªî­êê°VW×ç‡¬¤õöE¿õÖ¿å_rÛ‡Iew¾,—Ý²Xx-OŠnÆ<Ø!–BœÃ®ÜYR°FÝlõ—ŸŽŸõš§P®Q`Îó©ˆ/6ê)üYuÜç¿LÓœ€¿ì‰yý½Ióqo~p‡=HÄp¼ž1qnøEëni£~vìF>„§_W@ü@—Ô6"=Èê,Vð3€°,%F÷á…gÁ˜åYPŒ¢‹šÓÅÜÄ}Ö?fÓáaÐÄm†¸`A£
{ž²'›×Ÿ‚ÏMdSâÑa¼õ¶éñ™Ÿ¿xx{æßÝËgÇœkùóPŽ£ç@ã’#‡À™í×âAÊÈ™XÏøã?ÈKÖ|É?1¿{¼z8±{¿ö3ã¬ÙïNŽIxœ…“OhAÆÙZ·ëŸVK[|E¨­4«‰ñOm­¶5-mR5Š`¥n&“tI²gf£¥¢xŠÁƒàÅƒ¨°žÄ‹èYÄ«—<‰x<ëìÚ&›ƒv³ûö{¿ùæ{Ÿ¾k¿¾h¯òn‘Í®ÔøPa¶M‰›Å"þ821ØC8¤@Ü„U(ÓÎÂèßÏ Œ™nêÉY±H¹0Búàî2.ˆmøàè£æ€ÖànZÂÅ‘÷Äð|6ÇÃ˜iÅt|3~‹ëW \ÀÙ1À‡ñ›Z;E´°›:öBÃsÇ?,¬Ì§*¤ðú›<3EÁG[a©V†ôÑ*VŸON85%ÒBŽqsT©J‡Û4Ù@#ÂxVê8C˜KLÖùô&‘éúDX©¤ZøTÜ±<0~»Iñ‰2%VÎ"ØœjÅ¯ã1l›€µ‹‰Ãm8;1€OÆÛ&OQêcdqJÔ–¦´˜]…³+%^ë‰ô®tórW5<¤gLRÈsæ¸]ÓïÖm2³YN…€zÙ€ñéJ¬—ÈN·ýìµF-á>žY£­‡å'Ñd dÎC†‚#”™y¯±÷þ£6þ	î%Û·*cs8¡L^«Á·É0Þ*t»ïÏ­Î«¡Ù©º=Î¦Ý®7èJË`­
ÅiÙ`@zÎ5Á»ùŽDõ:ú ãH¸d)¯dÙ¦òH²:JNFx	±%,÷¢šºKä·¦bµDïûë¾§ÏsÚªêiö?ußÚÖ¹xƒfàUÒõÝšZ5]ì*$fâÌîÞq090 •ý%¥ý7.Õ°Ö2fNªUš[´bÙùúÊD‘åHžúM^&C”s•§’J÷v‘ôà¡âülßë
Œ¼öåÉ¨MçØ®Öé‘ýˆ±×Ï¦WŒÏXgH÷ NÆ§†Á¦òã¦—‹E÷àRj3n,'ëB’/ßîÝŸåÓu)ñº-0!ÝŸ’å
Ü.»1§Cû\ê¹r¼ýxœ½XYsÛ8~~EWÍƒí¬IñL2ÞØ¯l'JM,ÅŠ';åõEBÆ$À  eoùÇO7RÐ•M¶jW¢6¾>ÑäCÁ£TIÉS»}°ÃN?Œ]}¼`~˜H!‚®ÿe$p™Œ´Hàk«Užs36üãª?ö†n»ƒ¸}àÚð;¶EXà±¶X§sEV'Ò”JÛ“7VÛ§’Ÿ}ž!²Ð¬ÜÕ¤ò«<ycª>k"hH%4ëw-j–i‚¤çi@š@³Ø’š‡TdDë~œ¶¤Ú5O;UÆ®ÁFÚÙ2¬#ã$å'oÜ£Õk~! tªùs¾B»Ð’¬õ3Ô«Í¢'E3Å$‹%HÇ“9ì¨ÿ{ÂlšN“22<Õ½P?O‰pÍ¿EÒÔê|}w™^êH¨èkÅ+nNÞüt:W þSÍ´°|‰©¾,R•bËhH5¨ÜÛÈˆó€Ÿ£úPÝs^FI.xdbÝTšûP2ž'O\i@åŒ‘+c ˆ*¨²ªÌEšØùQj¨Î
a’QŽ²çjJž5ÎÏ4RM¸±~bÒ`$6YC‚ïZ9ŠÒ‡ÆEßS¨Ê–•ÆJ	ºw\ØFkîßcçÃîuoð¹×¿jO9ô®æ¨"&†öT7§](Y§Í…$æÉX^À¶)y*Æ‚g0z‚æÜB"3ÖžÌúi}õûG
3Êšì(5Ø)¯‰0%ÔlØzï’	¨’äÂ”Õwª´‹¹çø˜­KR¸Üù<5Ï a`ºäv¦ô=Œ€0âBN 2ÈåcZ‡ˆtˆü– [iÍ¥c5m{Hrw2Í«Œ³¿±Û;ö|²üaÏ¿áó9)H-ö¬³"yþ¼*JH ·í›íkÕ½Øñåìz°=I #4û.Œƒ[ˆx¸MwØó8Åhxñ¥7xÀáRŒ4‡î4Aßç­nìÙ¦%l’>w{½A@+U>/Ô›UßÛDO¸Š.„ÍUšä@yp‰XP'œ[)‚…o84Áºµ>¶H°´•c)¨0Mì„åâ»‡(¹1 Æn¹”×Î%‰ÑÄ£Á°¢(A»ù=ôo›Ç“Øùl÷#/3U2áù‘¬ÓDèUŒÆ†Í6Œâáh‡äÊžW`©@~S…ùÉ7\?ˆ”ƒÈ0ª7H‡áb×ø¢v˜²*FhøÇd|œT¹Ýu/	) h}u}þñ,	¡ŽŽ÷IËÙ¢—ÖUör•;Þ>	,ˆÖÁßK~tÁˆßõâ¶†5ªÒh³6 ¤_Mï¹%±Ûæa.õB“ñ]2i¹&ò”Ú{ƒÛéæYš}z>¾zÍ_e<9ú%Kvb¨EP¨ŠAœ)_*ˆE’qâœ42¦XBâÑJ2Šÿœ[‹ÁQ£ø#—á†Œ“9‚©5ÈB/EöècÂÐ¸¡6‚xOê^}ºÂÅ##Ãœ;·”;ãD®7®}TWŠ!©lkÙlwßj’|¬UÁ:o‡»ý«ËóÞõÛ=j~÷¼\èàà°‘}¦xË…ñ1TVM¸äë^Æ:$ª+{QJ¸çš2m¡²*ç$„s¬ä¤ %ÜVÛJ
ì‘ò§ohÌ‚f²µjÐu’MonzçÛ7RPgŸäwãp¡× êïhìkRJÙ(Ïl*Òé<±NÝd zÄÔ·¥ŽãJóêx^Ÿ†¶šö¯ ¦­ÐLäÚÆn`Æ;«þ¨7Çšf+Ë-©$ß"ñÉ#ÎÓ&ÖLçJU«<cW7ÔhJžÉTZh$^£N­-ÍñÞÞDØi5ŠSUìåBV‘/#÷ÄM^ÔÈ¤S^$Nb4Ú¼Ewv[ßË“ñœ{2¢ªN¡5%?¥µˆ5Ùß1^xf¼Û„„³a·×/y‚ynx|ë ã}ÚíP^Ç/ãŸã×°5txh¹“òq\¶þGéž?m:DøÅ\§/ëP¿aW”>ôºk­¸nÌùO¦zÑz‡+E#]¹®í”äJ›þ?†'Ãøå%y–uðnY°›×ê¦ii¦Ûœa}-ÆCØÛëC½£éã}žiÊ ÄàKÈ`y$gšë¢ðB{<çù™Ès²]Ócƒ ¶=¡—fÈF¦ý”rÔB¦OèipãCËíSËmqý;ñœSj v¿nk–í†u`År÷-ÃÕ±v3S¢GV§>Ø.(™×¦-ðšIx3²#Y C¢é8´0@<c,üØ	4oiš&òV€•!{3ûàÒ†V»’k¡²%Ïë¿<ž»¸ÈqÇ„Ý¼Ë‚.Æ NvÆ9‚Ñl0o1]E‰a>}ºÎ”xe5¯…AŸ×+†ŸÀÿ^ÊªJy0SJ8†cUft„(‘I!°{¦¤æe6%¡¸Ì(Jý…[QbER““º¦·—	$Á;ßg˜=´iÝO´¡¿MØÆ^ÕÙë]­Ãü¢aÃv¢XÙÜ÷Ænï hó ç\œà*Ê[=Hro*ìhc3¤%4ºp9²Ž‘å‹‹öUgˆ9‘Bó"z‚ð}nE8,öø3ßr…ŸŠêV}‰ö PC6Ô)OM. Ììb+†/dñ¥º¶RÓÜ(”ìä…¥Öû•Ö¸É6%™/\)ÄEyÑ¯®p=†úß‹ž}üv\µ¾X¼ ©4ÂbGøUÆ‡ûGÑþkj5bþ˜PlSœÐWÔnˆŒŒ²W¯^2?ôGí\rðëa|ðžøeŠ{š«ÚÆsÔŽgta…WD?Ax	áÝŠ»‘hæ€ü«ÖOþ+ñØ³áÅœý6ìÏMæ.¸›.•.ÃÃoL§9­1vvóù}ÿz~GäFœYB×O®^a9 ½‹DäVÿ‰æ6q5Â
Áù[ò^NRß~ÀôxÙ¬ß1J~öoslÁ3~ÛjlbT9…÷xægbrÇV~)?HÐäþvÀ‰‹f§l€UýèÉZµ¥xœ…VÁnã6=›_1·$@d4hÑÃÂ^ È¦@€Æ1ÖAÛÅ"ZÙÄR¤JÒÎèÇw†eÉNv}9ä›Ç!9óH³o°(m{¸¼¹óÁOˆÅíã½(è'LA+4H‹¿Vªi5Â•¶i¤©®¡uv¯*‡~§ƒbõeñ´\=¬"Y$üºGçñE\ôÌ0«p¯Jü_‹ÂWz-ç³ø÷þƒ¢‚Îx“É„kmËo~>3z]håÃu„­aÐ‘¡^¯	H_éÊC¶2D«F¬
‡Á¢óHm]‰ÅÎ¨PÈ²Dïy´Î£­S¦¶¯óY×ˆô-ôæç2ÎEÜz3ãÖE›ùŒôa²•Qø½Å2…á>ãÓò>CofÙ¶‰—™WB¶Îx;¸ÏøÄ{½9äm¤ÿÜˆÀzóMjñ½K"„£*åŠphq>ão„=Cj!ž¨é|é!+HíÁ	62Ìghèl;+ÿ€qß‹ŸîWwŸ–ÏO‹>Y9_Ÿ·ã$åaç±‚õm­,Ä©dP;Û€5ÖAc‚·;Ê$¡íF•RCÌ_pÒlÐ³§¯Ì†j©´Æc¹jP¡ÊÈ ¬7§B<ÅXûÊ'¥óáƒ8–“ß+Ö*€¬*¶†Z9
üÝi„x«Ð˜tThL|Ç[é$3ðÏÀ»cvÍã|‰””å6­‚'•(óKôgä>HGÑoÞåÕ6sk¦\aðÑ¿†Túµ–›){Õ={Ögt<" S†ÞùLØy L³t6PIðž?˜”Ü®ê
^ÅDçR+¢§îë@D˜u "?eu(«SÒSÅaÎ£â0eDSFÐqCM‰º¥þ@‹˜j EÌ•Ñçd.cmãS¾Š“œÊ3å‹‰™LfEu®dì;P²³¨:–÷âÉáŒUIª—#"àŽ³Ný‡
xUfúQX'rÉœY.™ï©åC§ƒ$§éMÅ-ÝÃZ‘dé ‰É
d/õÅd\ZÜ3ˆ+†+ŒË õŽX¯©Ïî6Û8ÄO1aQV5‰KÌÈË›é¯òªãòiZ–Ëžæ~¹Ù^GúXD( §…	DD/ˆi^öà
àeç+`´ìTÌw5Çä§ð÷MÒôW¶b’J0Íéy9$ùq+XûópÓ¾ð‡pª™>Æ“í}UZƒ±©]ØiX\™Ãw$ÅXat;NwBpVktJÙÊµÒT”è³T_p¼§oGº†º³‹£F…¸ÿçöqùçýà™¶°€ß%?ñ<0Ðlt”Ý›pI²Û</öÎßñQýëÃ`\²¢xœµXkoÛ6ýî_q‘KÒÅ²œ¤-b8\Çm$ŽC·ª((‰’¹J¤*RI½×oß%)Y²—Ô]›ˆÄ×}òÜC*ûþ¨ŽƒOý[0•ÒðÛŒvÃ‚E»\Ö³£R-E1€w¯¦o¯& ¦ÿÞIJa©T>èõîîîœH„Q$=%O{”÷–*K{•€Ñ÷šrZ¥õ]ˆð%®‡·Þ%xj•R¹¤TI¸•œär)+íµf;œªÞ‹µßp®Àí÷NÜÞ±{|RÏ\^’t ³Ÿ¯hÕ©§<Q!µSvì’ð¤$	ŽMx’2¹ÔÃgñöpÑÄïŽo&£¾gÞìõñ¯1¸gÖÐêU™Ú3z»ßû3ZžÀ§ EF!…"K™ZTe?¢¥¿¿÷g´T[”‰t"0Â žºÏŸ=?i¯ÀD+é$¼4ó¤—ì–ZÀ$…ˆcL¯{Öu{™L\×íŸ8zî±<e|~à$àDFŸÀ? Ÿ:M-¬êÑýGÝHID4&eª EF”b<yD“$H±(Wù’r¢˜à‡/7æ~+¥b1Í,H€¢Ÿñ! ¥±‚Œ	ã xº:ì8$‚ôQÓp5šÎ`|=[Lfð£›…o&7xòXf<]¹£«É^g“ÑÀï‚GydiaF2*sR˜cùg”+E†½HçÂŠ¯—AAUY š‚JÜCéÿèX[Þ/³ë¹7õ°îeŽ;~<Õ¦+>ÚöãFô–…ô¼ó»zìwz>ÔÏð'º&ÁvÞwàŸIŽbø´b!ØÎ±8ˆ<š—Œ¡êíŒr”Ã‡•ŠÀ´w9™±Ä§•ÊÀvvˆé}(r¿Ë¢ó¡m³È* Ðì²}›a¥Y%¶]+aÐìPJv>¬Àð%>°á…C«kMïÐœReçCó²ªR¨z;$ƒT„'Lã¦Õ±ZØÛ¡K±ŒŠR«†ÕGnÝß•dDª¶d¬[VƒÍÀW ¹RQµ¬Š14xiˆ™-²‹‰7¾™ÎÓë™­³W¢ µ¤¶˜meA‚g?B¦åHà¤©Ý/—¸ÖÒ,½cji†
ú©¤RÑH3·¦j]ñpÍA–aH¥<Úl0 DJ–p”VfQ(¸*Dšâ“ÐÈF²ÀknÈI•]©Õ·¥h3²‚€Ei+öp‰"¡–¨²p@? ‡ž&!÷ð0Uíl <°š÷×ÄvmÒ­ym>ïà†A½÷çÆƒSãy£VÏÈÞL*‰°’Àý¼WÇIˆ—™M©ØJvºW¬:=1¿©Hð,K«ˆ´õfé½§,ÄK¥ÙÔ­"<çJ‰Më‘µŽ,×²»@ /„¢¡98[ˆh‰fU¸Hu•lëÁ#ƒåÝÐ[)qÏPÞ$ÀÜçÝÒE¬®†+£Ù^¢ÌaºÆ›Žu#"2·$-©ÆŽ»™ÓP/8EÔ6#²ï–ÒÌXA¬ŠRÒ–mÒ¬Â»`×¹BËh16Œo‡ˆkìâi¼•ü‡iÕÚþ/ÿ7jÆ`1püä`R– W+ÐIÄOšêÚ“4ET¥»özÍàÖÉŠ¯¼º¬€úÒ ÕÃšF>‚Ið›A~Ôˆ$-¤`áwõ¥ÁÚ¦©àhÆuØˆft´U†è]»@—¢Ä´í
"†Õæh“ƒ¾º|9ò,ä:ì­®	×ìfh­¤â‰x™´Àñíl™ðúÖ÷!¹þ´ñÝW¨¦ú(Q¯!"ƒÉfÞ¯“CÀÛ¬TšJÜÍ)”œ™Û,Ö°ÇQ‰ŸSì3:‹ð‰Ø-¢eMßVLN•\aîóè¢6±.ÀZŸÆR£Pãª^.QWsÆè0ÿÞçqÃœ†X³'†9Íÿï0ÑÄ·‡‰®n‡©˜ÉÛÑÕürRßœMŒúÛŒƒÿ‡ßñ—û]÷tß?JlþäžìûÈ«þ_æCM/@!èö;Îtz;'f~lÏõÖ‘7°t•[IkJëÂëú°u[o‡k¤A¿vöô¹{vzê®÷¦t[¨uë¤jéÜ¯3£wža–ú§‹o3c®L­H'6Î:çú6ßsR¨šµ~©¿ÀeŠvþn-vÙàÄ|xœ½VÍoE—QZKR…J´¼–’äµ)P¢†¶Ž*‰clAïÎÚ£î‡»3›‚”öÂ?08sBâÐª wNHüH=õÀ…ïÍzv×ýˆ„ðÅ3o~ïÍûø½7û×o•‡?Wî+'Ü„3ÅH>+û—‹­~xe›å;pjU ðÈƒÞ§»z,ärÊ\!‹Ø˜‡<RàÆ!î<P1dšYX®Ò-%\¦’Zu£9Õ¿nŸÖòêWó›6š<¼Kºäñ=áò¥±º_8xr›¿GbZáwàH°ýQûUý¨ýük‘Ë¦ç‚•XÜy?1i€fe‘>ä"]ô¦ÿ-Ìƒ™ ¸7nv/.,,+±¸·([ÉÔžg;áY…T÷ÛgŒJ´J®¬J¶+TR«²éJaÀ³ŠÜÀ³ÂÃ	_ðÄªÀ³1y¢‚‘T¡1fVV7€\d¡ú—ö‹g)ŠúŒhÄîM#Ï‘g;uýIû%Z¯Pùœ™¿³µÕ@Ih•ëTÇ\![[…<&Ô;?%°‚‰G¶VU“ka_¨	(á·R.÷ Ó¤D4–èG S×åRÖaN­V-òL^b¡æèÀÀÜ8RIx&ä¬-¸§áÚ²þþý¨+Îyõ£íQEê¯wÎ/½w¾Z<9œsÍäóNw¹âqA§æA(e®Pè#ðÜs·º1õã$dŠ"â±pY ¦nætÃLúé{»+:í_¨xdt:M.’I)Ó$VÜU"Žò„Bã,5Âë¥)‚3ALf›ê!',AãþHB	ž©3ºíDÞCd$h÷Úp-‰Ó)låYoÀ–ÉÆüî± å”èÖä”»t,ó0ÃÔãUñ¸âI(".ÍIf)’J®ïv—tüÙ±ã¶õýî§žÞ ú.ýÂîË§Kdˆ}cG(ÎR}«¿²xd¢ñ³G·²½d0‰%6‚‹šð!Š&C¦Ü«/:3à€+${€E§bX:¤änsúû~w¹67èÖw»3šlšTœ`[Áa—É›Ä'ÀçÂQ±C¯FASÈ²ZšXÉ/‡,£%Þ™¶âûeÚOâ4ðÈÍ‚°›ñ:šÇ ?v7Û
ÚNÚ°ôŸ½¥&Di8â	êÌ¤„³ñ—òGðJÿ•ãà8YÏˆ~«2 þ›$ôùðÉ¦„•ÞàóÞÔW˜[–`z· „yõl1†9µðP¦¾/¾A¨žØÃbæã¢0ŽqÍ²Sa1lèÑU%£[~‰²TëÂ0ÕÝªI´YÌ6š¯OóÚtLŒÙ}JŒv¦`œöõÿ!Î)P¼ê?Ç‰žÛ8g?ìdß(¥·Aßv{‡ÅGO?AšØÎ¼Ù¬®®¯¿}±µ¾¶fDd0µ,Q€V8Í?=þÐªU_2GÇlÃ;ÕæÚð_™~ð·ûmå`»_+·¯xœµVÛn7}¿b€>ÄnµŽ¸-lHÕ)Ø²P	EÛÀ(.W"²uÉ•£¢ßÃáÞd;AS zX‘Ë3÷3ÃÍ÷™ŽT©¥ÓQnO.NÅøéOˆùäîFDø‰üN-uÓü×;Ms™i»“JS&s¹Ñ™Î©"Ã.&WP¢¼©Ô®*¡¥Ô¶J=bùûü~±œ-Ù|¿×¥Õâ•·L­åW4ŠõÞ(ý†ÞGØÿ¥Ç#ÿ|CSd)¬Ä`0ðÇJîpŒ'+
ëæ8I×ÒŽGüÇ€„êMƒˆw8ÇƒOcâe«<3
ÊñäÓŒÂº9ö©(w‘‰Ç£°41ã$uûVÕ>³Ú16,k¬¡nß`•5ãQÝ8ú`bäÛ$F—,s Ï6ÒµuÙxÄ,’R½ië´P#k|r»5c×ÔÓ8“é¢rãQ½`¨£vÛŠêD>€zÁ¸%µÛ~á.,7¥vû ÄO7Ëé/³Åjv?oIãyó®(Ému f 
mÌ^çC² ¬%Ù1ñ‹„^K}4nËŠKýg¥­Ó1ô9gò=£ûœl¥”¶vHGb¢Ë?IkÍ&‡ÜúÀ Uä®,ÒGÆÖ=¡c4Ã
‡-Ëw²„2@ÞCéŠò@ÞÕLh­IÃ3ÝZm!¢ !êðOô§kzÍkßKç§CBŽúiàŠÒËèüâ.Ýs¢Ûö‘½¾¡žXVG©òÔ€L¤5{ŽÁK©Œ;x\Â8î¼çÀ¤(3é|ºÓbc”Lko½‘¦gb0-ò$5ÊÙP¨>‡I–›Ê×ØÛŠÙú¸±„|JÚ•…ÓÊ™"ïŠ
p@[{toÎaj™„_‹|C‚CZ›Ô8£YZ²t;¼ŠÉ|B?—Eµ£YË‹3š%(ª»—i¥}™Ï·dwZùc+n+ÝSÂÄž™Éµå“ 	êVVÃrn„^0!°+iÜd…=ÚIC-Ì|ÎáçGûÒ„ú
£MCZot`Ê‡äØJÇCöfZàŠž¦¾¬NQGî¢n¬±WGSÏ»q[Óé-Ói‰®Â( •ÜÐ´=ïó"rEäoºŽ!^õšUvã°@3xÒc'OýØïŒmQ!ìuŸÖócåÞ¼»};Y

µm\O¶VÉÜOX°’I”WÙZ—x_ã §IÇÃ$jïðb§KÉÑ³îáf<jœeÛðˆøåž§“ùò›S2è"ç'U‰âÌ¨Ê¿ãY /m•$æüb³GéÛ¹Ø)E.êLžHyÐ5Kz¼÷Äèôy’4hUÝäöÎ#ê¦ˆÓv<½Q3¡Õt²øŸ£‚…ÿí¢ºùmr·¸½é}H}KÓðÖ›ø×â»þ¥‰oèø3«wP¨:]\\]}ÿãùÕå%¿òVÛWç-eü
Ó•ÿýà¤ó¡ù§Î..W_§ø(‘P«.déš±Åß­˜Š%rip©ÿÃ†ŠîòIxœ[%³‚KfŠnÞFEnFVO—]¿Í&ŒÛ˜ÃRRsRKRuóŠbt‚SóRüÂ|SüsS‹“S|óÓSsSóJ jòàrÉù¹¹‰y):
E©%¥Ey@ª¸4§$FMor"«'DyŒnÞäNV³ÉzlvÑye¹ÈÚsFCMR(É‡ÙR’‘
4¯°4µ¸$5IHUAQ~YfJj1TÈÒÉ/Øæ0†L^În4ÙŒÓQ1$Ù" Ú¼’Ì´ÌÔ"¸“m¸e„üòR+sr€FU¦‚þ—W )Ýkå‚™kxœÛ3‡ñz/ã†tF–ÌÝ¼ÍyŒv`Öä·öÞ1)©9©%©ºyÅ
º¼\


Á©y)
~a¾©
~‰¹©Å‰É©
¾‰y‰é©¹©y%
å
yp¹äüÜÜÄ¼…¢Ô’Ò¢< U\šS¢ÇËe£_0ù½Ääû39`–L®wtlétÝ%¯,Ù\„Póx¹Jòa–•d¤-,M-.IMAèšç,1¹Ïù cÈä"-n!)‰%ùE•z“}e'W;ÉNŽs;¦’lSf
Ð’Ì´ÌÔ"˜“×xöL¾çÄ'à—¯Z‘˜[“Z¬P™Z7f³‚¯# IZwOï-‚Èxœu’ÝjAÇ)RZVšÜô¢¤ÇâÇ…ÝÔÁ©ˆ5Ó%¼qDfwÏš‘ÍL˜™Ý%Pì+ó"ŠèÓøÞyí™ÝhÒ€WgÎùÿçãûÑ¯ýÏ‡!-aÁmh,·_ÞÞÚŒ&ý!‡/&,Œ¿=ßúqkx3Ë !F™ÁèÍk„A†ÒŠ|/•´ZêÐhK-é1eaS®±ºL)èîoßí7‚@‚¬UdùžeX‰Ïà-YXka®Èª~×F4¯Y˜Éõ¢‰'n{ç)'#-°B­fE\Jƒ™c*r‘z”é¼0V¤¦¡™kU‰Œªì×)[n\á¢û´óÅï&	ÂœkCÉ¢)#šÏÜÏÝG×ìA/èÅ¯àø2š.GñqÐ‹¢€ O`ƒ=ècxDšx[w^CRæ9j°Š|3UZ’ƒø/RÙ5÷¥³ÏšLéW]W¨õ¿~6gà›–3î÷Á3žjn…’¦Á÷—°uÛŒ~‰yÚU¬èmÇ$´: ZÄjx„˜aÎi¨îã^ÑÕ7“ÝïÎ½ÃÍ€SZÿ©¬fèfÝ;î}'Ú÷­lzûÚ£ÿ×>ö÷âd÷â£Éðè'‚Jxœm‘Ák1Æ)º»vnJE<ÏŠ{PgZ/zh»J…VÊnñ(o6ov#3É˜d¶¬Rz÷TâÿàMzìÅÿ¨ÿ‚o2¢R<%$ß÷¾_¾\o|¹·=Uõ'ÖÇã#‘N/GkW·Þ¶§©óèˆ¦¤%¼{?&˜ŽG“c(ÍjœXúØó/xã«¯®)= ëYÞô†1 ”½‡á[/}=!o-É_P7òP{*a$¥òÊh,ofÖTQ-i©fîö7Âvÿç½.’$¸
­q×ýÙ«­ãÃ|=µ5s‹Uª­â(	J2(JÌKol…>|<ÔîYiØhÿ8½82|ì=mßB9˜ k§ÅÌ›¢`+—¦	ßïÐþQþï‰O‹$‹¦B}“g'×ŸuÕM×?mþfñôŸ‚8¡P%Eýy«¿¿m‹ëÚÒËŠ¶ùEÊ>‘æJ£]Ánd:‰º#†_'Y¡’L A|I69H2q–d®N=(×6’3âŠ#sä%aÀ}1½T–Ï|×€‡ÓihœÒÌ¸`oe$qLØM^þð&Üå‚6xœë½'0AŠ3%µ(Q·¸$±d£#—‹kcŒnpˆcÈf'Æ­ÌºpY…]…àÔ¼¿0ßT 0(ËLNU É–+$æ¥L>Í*=Y…Õ^¤,“¤`“Vg7y«žv›O³r0rÀ¸“/°‰1'¥Ng—•ŠQÓãÒöPPòñô÷VâÒ+.àÊËÏK¬Á‘ŽÃ<°CVqØsÂ2ù‡úäx.m …$P¥ä+‚µIxœ}‘±nÔ@†å’“N×‚ @¢Â1	—œ ……œ ä”6ßÎùV²wÍîØ—H4<Ã*‚@:ž†ç AŒíH'DåÕxæÿ¿ùçÓçh¢¯E4Ñ†©Œ™ª:öŒ¼áèjº[?ßÌwjâñ ÎÉ(8¹ÈÎ³ÙÙJ[@£wy~*nœñòõMÉ€Ò/MãÑAR‡:»nŽ>†°5ÜŸÝ›8\Ç¹6è®á=Äyˆ_}+Îˆ¦–<ðŠÛ´)¥Y[ƒå.ÇÒÙªïVÔêuþãQíl«Õ­Ì H
<»f!o
‡¯Ýñ:ît6éñ‡(ÊÃôáh^¦ž¿uB>ˆàºç'‡uy³\’¶RS¶áp‘}9Úþ{¨G×VM…FQa^Ê:ÖUÈ/Âä4»¿“š‡DvLL[Ñ³ps’<ú›n›‹  ,uI½Ìü?2ÇœáIÁû}ßeßw)Z{òû YXES¹§£iwW¥Û?NSíA²ÎýZ<sT ±cG`,ËVJ;Zðm2°^‘Æk#Œ+­DwOt7ßO‹è7@"÷êî‚2xœÛ<™q]ã†tFÎ”Ô¢DÝâ’Ä’ÍåŒåvîäö^pž‚./—‚‚Bpj^Š‚_˜oª‚PH”e&§*€”+$æ¥Lp’ž\ápU¤,n£Ÿšk§ –SbV¬–^b=¹Õñ˜v68ù1:Á¹
Å¹‰E%
9ùé@5E¥É%¥E©
‰@\P”™W’š¢™§¨P”š˜’˜”“ª–_”›X¢g£_09ÁÃ|òQ»Éç=øØóòóRabï\“pXv{¶['Üí“»lŽõc ûýmQáÿxœû!pƒ‚SJêFAF&×ÍúŒ{™%SRK“3tóŠbt‚SóRüÂ|SRR'³²: OvgmŸ|žÕÄT`;	¢^³UCµ)”d¤*ä%æ¦$&§*¤åçN®c—òËWH­HÌ-ÈI-V¨L-‰QÓ›ìÍ¡ ©|*Éé×xœû×Ï¸¡qC:#SJêæLÆ:; =ù¥} ˆ²q QaW@”Žã¼É§ŸƒÔmqê©Ÿìèr^)%µ$19ƒ—K
J2RòsS‹“SÒŠòs'ºvO.pâñËWH­HÌ-ÈI-V¨L-Ñ³Ñ/°›ìï.»ù¤›)# dÉ0næTƒŽ@xœTßkA¦ˆEŠ(‘>E±—&ZJ–6Ö@mCõÁóa³7—[LvÏÝ½¤…Bð?îïñÍWýükŠ³{MêSŽÙo¾ùfæ›üœÿqëÓíkÇÀ`/,ûõ^iêêZýucµ­úÆó0øölêû…ð8Â š¨c¥û`‰azÜ««@uêúç´€2É˜ŒŠÓ¬uþä"¬BQ!ô%B_#Œ·a¹×àm„¤“2ÑÓåÍW/k°GR$¸ïüãôü÷ô•Å	Š€«'Æ#kï  2a}|˜¾4û¨!…Œ½@2¡1ò-A‡úTÒ?eÔ™f6ÿuùËˆ+­I˜’‘Ý.½lQx·\*·^ÀÜV³ÝØÚlÍ•ÊÍfi,»6gôV*o·`±Ô ZN<Å Ç0¢‡a"xvDñbNpØ:$Ì¯¡ƒÀ™ÖÂ‰Ï,QÖª›Éê§ì@@;¡nb½LŠ\Ðg1!Æ­ ‰Œ,{:»>xR	Wý¾ÛúT’%h%j<£‰IÆºÆT|J–"Ó0Ï_uY–iL¢è÷(ztþpŽ;eD½ŸÇ	‚+=î“Ÿ›SÞJGé‘=£ñCèÆ,ëy[Tï‡¿{pV<˜÷çJº—ã¬…³h§4Ð´G§CË%Ž¨M²Y¯}ª*ÊH&9Ñí¨ÕXol¶Áˆ®d=r] ÎÒÃ‚þ&‘J½tçä®TîD\¬Ý‘M¸	Î2cüØ"Q¾=z|ÞÞ¼6yÔÖÎýPÍ÷fîÜ?ù [ƒ>VüÕWýEWóý™Ù|jfcyÅû×.Î.ùàKVvb*ºþX™Ó’ìU‚í/xœTÍOAOCB"	‰\”ƒ‡	pZÛª‰	(BÄ–ÐH !1$Ngßv'¶3ËÌlÑ¤‚‰sáâ¼˜ÀÁ?ƒÆ‹^|³ËGikì^vòæýÞÇïýÞ|9-ü<*ühn†ØƒÍ(°hìIZè,XÝï§Uì7B09 ¯QGJ·ÀÆ9Ãô!xVªÔmÌ®“Ü•IŽÀd˜Û˜f-´¨ÍäÄãbâÎv§Ý·å£)¨¡¶2=+É×$Œì"|2×´‹µíõ¹†]„H87¸åg·ŸÃù÷6¸
pb?Ì@a/t˜°þªãþ¬ž>¨Ha#|V¯ÆýTh³¡Î•Ì®Rê„LRë¾¿ø5Ã•ÖT¬’¡Ü]ºÏ£…÷|·ûÛÜÙ«º{·6>æ+_ªÌºOkSÙ9¨BµB`NÞ9»ÍSèÄ‚Ç™9'
®æ³Œù:gZ_ •TÚ˜»qÙ«Otk8/”÷n—
6C0	rAÇ¼yÆ­ðÍ²÷(¡~8<=W­–ŸîB&ü+Å°«ð”H‘Œõ]©h®H%]æóôàËo™¶ÀÀÄŠþCqý°û=0<°(C"cd { m*}Á-wDVê¾Ô¡,¬bÄÒ¦WÉæŠón|}fŒÄèÊÕ;Ý¯JÚŸþx¹´hàD|Ò¤U¢É“RÇ$5Ù¸J°5¬5óe34ÑÍÊËJmŒhHÖ$Ñbê4ñyßä‰ýn\¨’L^Û©üjˆ(WKÖ}¯0ÂKï]…noûëÃÿŒVÈëú§å‡òçÝÚìÀ“T$KQ¶[XòïAÙowÙïF™Ä?óÌ’§tï~(üéÔ-·hxœ­UËnÛ0<›_±@Iš¨±{4’ AcjÇ¨Ý‚hje±I•¤ü úñÝ¥ÙIUÔ‡êb™äìcf–2«%&®´ÂÄã"OúpÚ;×y„Ý"¡G˜60$0F—[·„P Tè½t[àMÁ‚yt+ŒÛe}T… MV¯I'—Ðy!&?F÷ãI:‰	cÒ‡mà£8áìð:û	\ÕK7ð$†âøRÒ]_¾oà$âë£èt:t¨Á&Êf¸?æwÇ€#­¥¼¸~ân0ùð9OÓûQSW–´¤H±‡?+í0‹}ÃLzzµ&nUÔ?hSVáSZhjnZíXÉd°D3³”[˜! ¦.†}"¨‚ Š¢Ž§¸éÃ%ý¹d‚ºg`Hh¨€ÙÂª'h?mzgTÒ½_)Öí"&RÖ9[“i3¯û¡òô®ÝŒ‘F%ñÌq¿/ÚT åNJÑÁk—4ÕiëB«".ïŠÜ{«ÑAÄƒ’Îi¦´
B<kÓµéI°{¦Õžk\dàKTš^kÁˆEÍÉ'40Û¶ ì’e}<è}˜vª"šL ¸-›ÿ‰¶dwÉYöè£ƒt4ò…¥ßcPïP¸	h2¢â  W#oìXPGásÂßÎ¸ÌVzöˆÎæ²ZD§t²H²Žêð ±üßx hô_Ç©íEÓå‚FÄ¦cdüÙÍÌEgÚ–˜²H.‹h é&éÇt4¯çF.ÈR4®*÷ù¸ˆ:-£èlç¹±<®:¯Ý›<>kN?û†?ø~;\Poÿ¥§6/=Oc½¾8?¼LñZ/¸ƒaå›¬Ç÷Tï%ò\PÇˆôÿ+énò—XA—Ôîk1fRlÍnürÄkÐW: øºY»ìxœ­VmoÚHþÎ¯qÒ…ôŠÐ\S”D¢à^á0ªzªûa±×ØW{×Ù]‡¢{ùí7³¶¶é]{	ƒwçõ™™g÷Äo‚i8ø¤Ï21)€xÈx;L²z}X˜Xª¼}5y3uÀìû;x«9‡Ø˜|Ðél6'”ÁJÊ÷ŽTëŽ	×ç.:±ÉÒN¥`íýÂWÌ½±^¢<¼ñnÁ3Û”ë˜s£áA–ëX¸¬¬×–uän:×»ˆaÌFÜíuúÝÎY÷¬_ïL™(X:€Ùë)¯^ê-O*àåV¹vËÄº`k\sÅ:MtLËgyMrýöx2mB³‡ß½§¦ÝäÕOå£i¶¿÷c­<1ÁAËŒC.•a«$MÌ´)¢èˆžþþÞµRÕjU¬µòUÂ„í„óîóŸŸ÷%a£µ(ì>SAœ<ð²SÖJFÂÛ}Ñîžu2½îv»½¾C{ÇŠ4áà‹–³'Ô0¼¿ÅîOË~ªWOŽZHÍ„<bEj ’*cÆ$b}Da¢Ù*ÅiÜæ1Ì$R4´÷{¡M%Ý…iÿ€	)dL­R¤ÛÓ†ÃBH
Ãt8™Áèn¶tgKð–ÃÅÒƒwáÂ“c¹ñhd‡S·Ù¨Iü6x\„0Nt ¸ÚÂD”5 plqð3.2Ë
"§N*È¤âz#)Œ’iÊ•ötJgÞo³»¹7ñpðuŽG?šo„=ó£E>ù¼õÛ~Û0ýþê’ž×vñOŒÙÎ.¼{\EÜ‹«K|\W‹¤"À®|A#äIÀ¯.Ëßk«BýŠl%ec×-&óåänV¦ñuxµO¿5XÆ¸9™îôXšÊ†œ+r‚Sf#Áls®AF@è(¾FÒàŠì‡¼~³UÀx?µ™h(4·1ñyšx®m÷66‰‰s>®s$Ù¶”aºŠ¥_Ò¡¥†¿G(¿À dÈØLs´úò”’A‹`0Ö‰©‡!â	^±Ò[.Ó`Uñ”ÛHõ¾l:Áq˜Aˆ¥¶3L¶1¿Ük¿¬µ÷€}¦¯x†	Õ&"%³GŒXŒÇ…¢â°ƒRätSSŠ5°I0CMÝCu S~‹ùì»GALï@(Ì~Y0&ã§´¹áhä3!²/Î•m6Üº+ÝcLžE®Ãêè2$f 1”«*„ 1)*@°=q™¥ñC²Ë)4¬.ùB[ÙJbÇÀŒ|Y+
­ö5@àlSÔ8ízmÖH*D¢¤ÇrìÀºÑ…2¡¨< ×Øü
gRÅñFsà‚¸ç¶ê¼Vo?q…¶Ó‚24í9%Žñá`–í(êÎN61Ô|ÞØóÌS¨™¨Zh8žÙa²«p5•hÖÙ7i›ûŽjZ7·2ŽŒ¤‹‘Riÿ•u`üpRmÃ Hšâ®:ø±)³ƒ‰Með®`“NlÛPA‡@÷	/kÔokž3eAD	]—Oû:PI¶Ö×{YÚÂ‚ËcUaw‰í‰³L¬|Ù-~gz%ñ`Ók‰¼sPJ“n—•;Œ.Lùdý‘ìò§rß§ó[·>æl²t“àÿá7üø¤Ý}vâ·Vþý©Û?ñ<Ñÿ²×*@%h÷Îd$gNßî/>¢d;QÿBµ%Ó±@ØTaïÅÅ…ßîõð/¦‚ÏÉcà½ò¼Ao€·ô³n¯wÑ;;ï÷ùÅ >‰ª°«4(N<·€úØÞÆÕŽëêøx-ÏÙ§né’~‰åxÏò–Ç¿ÉOû xöÍ /×ŽÊÖ—s··'×…á­wW¶ÕgTWÝç^Ó}ŽæLÙ–ßó"žc
[;1¼ñVMèìxúxœ•UMoU•©ÒH#AS>•+'u)ãtÜVuì¶ÐØ‚š6i‚«.º ^f^ìQgÞæ½‰±„ä?ÀžÄ	©â ºb6là'ÐÄO î}ãñ¤¡¢ÂRâäÍ}çžsîÇüúGí§¯kßFµZòHÖ¦×k‰ùó­Û½<×€!!ô#È#žMa e–0I;L°O¸ÐÈ$a¨%HÁAfÈÌü}kéÕt«›©™©WÌ—oõ|ru“'×ÍoÛgV4S®5bÝ¥?#Ýú|
ž†òÔìm¿¶,>6¿Q6NØ8óÃ7ÍÏ½¥—ð$´'!?ŠN±æþ»ßÏžÉ~­?ØYº^iwž:“qÌ3Õ„»c|6ØY\cq,'
RžQŽHŒ@O$èiºÂÈC 9ªEJóñ]'äóÍçƒµ‹'#¹â–ÿ$£ Òñ´˜DzüÅí3 o}Ãu¸Jy!©}=Ô–±cfÓÃ &ào	‹„Æ`2Í˜âˆ±½î:ÈïƒF&7¥Ò
ˆÇPË­‚a~ ¦˜:Q`ï
Ž
³…Z¤³¤î:È…!ºcÄ#)„,+í–¥« ¿] ,¼x‚®d<Á
”‡™Lø_0†Ý<?ëçYÏŽùŒ)*NW,Â$BŠ›|f(oŠŠªÖPy0¦è‚ë‹,»û»Ö’Aƒ&Š@ëWcVRÁn£éñ‚rZKH×ÁÞR=¦!Ò$<Ë… P)¬7Ø…xÈb…f
D$Yl3"Zr ±7`³¹«ŽE	0ì ª	ºhbî™5êî!ËN£x)°oðK±ÕÊ®ÃëÄ£ßÃP!x@™±Ç30™+¼dœi*ô"8J¸Î‡fÍ¯æ*Wv(0ÄóÒÓ$¹áôzÌgïuÍ{Ñ)šú‡÷Ï¹¶	{àq›Ô%ö©ÍÇ¬õRd&¶^uQÝ<Î›¥{[§poÐý•“óeÛ +bQt¦9}giFã„¡ƒqA8RvÚ6@n@Œ)h¨-”§xÊ2²«Ò}•WN’©S«½Ú2¨Ý3X8aÏsX!¢þû‡Wj`–?ÚX~mó×­³³b`3*‰;À–¤„Ÿ—ë½{o‡¶#`º0æÿ%æ‰@+«Â<©oõ)OèBY?Šo^}ÿøþ*Z²ØSäý–]S@“ƒ°pM«Ýö|¿‰°ÍÇ­3|g8ìøÖ…Vë‚ï·ýÖeÿòEÞ6/¦{}|iyö­²˜~Ï£·ÇÿÚWçÌ/©s¶_-$Z9Çi¾^Ð¬Ì.ÄPë_2÷_6´[_9¶Ù<¯0õZº¯¾3£škVuûÑ¥üÚ?£ŽôµŠxœV]oÛ6}6ÅEúf­Œ:[ÌH
¤¶‡¨í¬*ŠEh‰‰…J¤GRñìÇï\Rv‘µÙÄ±¤ûuî=÷Ðú¡RI^TÏGgâª¿„X^/f"Á%tcB	¥Jç4-\f”ÝÓ\ß[I_M©å½ª”ö”™ª’0ô†ŒVd,UÆª¿‰ÑÞš²TÖ…H?/W7é<ÙBÆ/°rêVœrjBêS1|I/Ý×«Kþ|C|ýM‰§x-ôŸúêñ}°Ð4¹z(2uuÿ¿aƒœÚ»[!¦³tò~~óa¾ZvõpIOCþ|:_œý¿8ÄO6x5_t^²,ÍÎÑVYNQè{ò;C~¿UŽÌ1Z7&«îç•Et‘«öÝü6\á¨v*£þÚ–EVørß»ï
¿y|2 39{)”Ûª¬@Qûh;N+Ëó™ÀiHøtTÉB{ü‘¤\z¹–N!æÛ3ˆG•þnœwÄu¦ÞX´‘Òzíö(­r\µ|û5ö©+›»ÐB€&s4Ž6ˆÆ@92J8u4}û¹²±Up´ÞwÖTâÈœ¨-A4Ó‰ÃgÓà¸+ É1K¸íhö Ð³ÄÕÙ†¤cÁ¨|ùÇ2@ŸO_ò›B„hAGÖ;è„ç«˜Õ¤¡I§Nð®ÄJ¤§Â34[kÍ6FôàÊÒ¡Oµs=˜ ç@˜jmÀ
Z"12­û^£KaðMSÅ®å[vÀEnA°–kpæ¦˜j­2Î
Z[¬š©2«¤ÇøºèÐD^Aºµk “$Ù2\Ô…m‹HPÐ*ìk' ¢S…ñXDÕèïL‡ðU6K6¦“í	¯ëIO—„g	qõšU$Ä—¨)m¸Ã}<@/WØpñ±]	ë®ølÁNÀˆ!]S‰Ô¼ë!fâÔVZîÆµãqußlîû>dê¥G‚è`¢:¨P˜ÜÖ$ñûá³ÿ'êøëä‚ç:h²,?.xC2”—ê{0`1xbzðìÓõâæÝìàlù‰Þi_ õw4-JñæCŽ~½¸HF£!s¬ì8ý-MÇ£ñù«óóW£ÑÅèüõèõÏêb,^ž ‰xFíqFÍQÖéI<¸þKôãÐ@5íŽ5ì)˜úYÅVpy¿ü¸ê-íÎÓèz\S:›Ñõ»tÕ÷þÛÇ¯Œí¯Œi:!€>[Ì¼ðJü¬+Ó²ä‡ƒ¸4xœ¥UÝnEV@a[AQ0ª€¢CÕ–DØnÜD •$´‰ÚBd›Þt¹˜Ý=XÏngfX´X¼Ò> €B¨À=ÜpÏð Hˆ33kg7T–½«™ùÎßw¾9þµþäêwož¸lH‘ñç%oî\{·ã7:Û[Û»÷·¹9÷äÅ­
ütQDÀ€v1Ôfor¦ƒQ6t.…–e	Y`±ræ½‰?ñäÇXpÈCÜ„~Ão6@•±ý6Ö…âÑ&<¢ˆì¢øv~±øc~‡~ç/Oz”áÆzd^Ø·*‘¥2	e^Õ·:†J3”„2/‡úÜªD½úŽÄ‡&y•æ2D“^	”&»)ìÝ~N ‹Lá²ó¥ÓOñÛ|­¸¹°Xü´p¥öÙý{í)“ËMñçÂ'c"3à‚iž
Hã
Û¦À:Ï`Ò³ Z*8À$1o‘”Æ†2ÎQiŒ`’6ðLé<æá‘9ÄH×þÕ¦×T™×ëcñûË?^˜õ—Â‡
2&©Eš8ùÆ{ë®Šï½î˜IE‚è>B&Ó}ÂØì2É…‰Í‰eJGœÊÓ&NO’|%ÒJË<$ÕPiWYÂFÎ´‡uH¥õ.ÙySu6‚ÀÄ+ÖÏ¶‹Î-;¨%GÃ!cdÆ—‰f×ûT•I"¢¡×§ÀôM3S=KlºƒTé‰‚(‘jÈ•ñGÐ!Kr´ôt¶½æÞžw$¶Í:uØ7¢“’$lÖ¼ö±ÎULtè8ûªXgì'«ø˜¨ts\qRÕòŒ“i×+^œ„Ë<ž¢ó'³ÊÓíÏ…vNIBï{Í^×cI¤‡ Y°tcù#/Ñèÿ~6½Þ×ÖA
æõß(7Ú¨BÉmËhw[)c³ØÊ¥D¡+Ç­cb–'ÕÓë•Ó.bT9[­žåY–JSnÈ2ð„kŽª^ó//¡ø°bÒA…²ôØìYN UüýÊÜGòåÄIâ*Ug¤yÏ¨ÐÝˆgj‘tŒ€‡!ZNŒ ïÞ¾&özf
þu~íŒµÅòk·?Øqí=1ŸÊÖî™Ëj¯J„aÙÆNL7Š—\ÚˆYNL"PSnŠGµ+wª#®Ñ|¿&†\9§5Z9.Vh=-µâŸÚÛÅ\í.|ŠÚÌ¤Ár|:ŒÔón=OàK·’$™FX-ã+Û´éuôqí2;%´h=#øêì}+÷NIèâªB…Ò¤”ÿEÃõS¢^¸CRÞµƒšF{@»#šØ£Ñ!í”)ÑåB‰Di®á OÃ6W\ì;ÁHP¤×âõ7Zÿ2›Ûøí(†oxœ¥R¿N1ÔÀ€`¢`"ùÔ€99ÔM$0°D—‹Iå>ñ’ãÛÂduÕÔG ÄÁÁwÑ7ð¼?&NMûµ¿_Û·ìhç)bh¨£L,jÖN«ã£À{0mo"A±>U£ØæÚ Á>káºÃwÂJ`ÝZhô¸ìL¸³xn%¾Â[œÐrEr@|Ši]ˆÏ…×PÓÖ|\¼?q¡3nÄŠ¡qh+‹ªÆì'¼ÏÀ¼~ƒ`ö®™Fa¼¹ô,»Ê´R°\iÎÞ`´Ùk4á0Òúíå¨‰çèê¹¢0×ß_l7a®”“‚—3'çýtãïèv0Y3&P$]æ9±w®½¨â hº(%qË¤f:€’ŸJb˜HŠØYª:½—ÿ«Êžj¶:f=‚®ÛÃlŽêÔƒ"3û´íX8ŸA\Ä}½â±]<Ô«pàC/—å¨e¦H¬‡më`˜xù¯Þ$ç(ø%xœQËJÃ@e "‹/(v#· ¡CÅÅW‰`[tÑ]ÉØcRf¦nÿ@æ3\XÉ·âÂ_pãÊE5¶©uçb˜Ãå¼îÌ×z{F½K”aÄ³Šnvc$>÷N
 %+@±.–C‰Ék1ËÞO„Ç÷¨‡îÈ.¯ÆHnó*Ü‚B`8ýÚÚ*Ç´M¸2¤ò1¦ƒIÐ¯m¡ŒElkwµD2ŽÃbg@<|î’²å°èÆ1ï2ð/€Ûü¡˜;¾·ž•‚-˜šù‹‡†¼8QÄcT|AÎ˜‹íÄYC•Æ6	æ&öÔ›ÔIÅ¢ZŸÂ°h±RJë³ÍÇéåCo°%øŠ¥âµ¥'_òaäE]_È¥½AE‰³A¶^Îk£‡øŸK%r‘[Ä%˜…¯ìºÑñMÌ‰5ò¤„ù]jþ²”ÑF¤\*.Ô5ØLióFQ
CÖ!f8·õQjæƒÆiý “KéïDƒÆxœ¥SMkA&ˆEæàAØR´Ø—P%…ìÒÖ@Ci‚¥¨IÌO{Ù‰ØIv&iK•àÝƒ0ÿ„‚gÿQpö+»ÝæævfßwßçkvÿÔ¿kßž"p—QŠ]ñ³†*è¼kžõ{½ÎÙå¯×•ßZy,Îó'F1°bxc;!q9¨ž™ïã°Æ÷¬—†l>Üy9„5Ê¿›»tJ['|æ¨µùõIQPHòËÆÖÏ‰‹['ÉÚ.¾èAV•?m/relêAˆ6ÇüŽL|M¸ ô#ô>¼SÕ9×(çJ7tG ÆX±(AS
l"£@8ð	vÉˆ`lß/L-bˆˆ>Â,7g¿á@<LE2çÜ@b®ˆ‚pp*Õ+ñ&æÖRG¯äÔqc±_?Ÿæ[¨ö—Ý~Ï¬"c0@…ôÛõ•ù¬‚Œ¡	Ô¥qm¡¢c[d1,²ô`¤ÒŽ4Äó,¢|>f3ß+«vRùÁÖ‹F²âzÍR&WDŒc9-µ|Ÿ[.Ÿx…§t¬‰;÷£(¬)U¢÷–¾ßT[—êŽ¯í`âãc:â›¥¯Õ–*/GÍÆ«Ãcdð	2È(X·’_5íý-N¾õ,r©mËŠv±SpWJ)BhÈÏÚî³{úß%ý¥ÏÍNN/Ì~5–Õ-=¨ìÉ­Mýî¶zÞêƒxœ›!z†o‚
‹nbNÎFF–]GŸÍŒû™UAB
1º
.™ÅÉùyy©É%
iEù¹
 a¨@jÊdAVaÆâÉê¬zì õ1iA“Ï³3™“yÙ´"¸ôŠ¸‚SSJ2RRò“KsSóJK2óóÒò‹À¢ye¹©1º)pK45Æçæ&æ¥€Õ¤••)$%&g§å—æ¥Ä¨éMVåÈ‘L­È,.ÉÌKrRIQ~NNjQñäú¬1 ÷LÖå2aš=9‘Ë BO-å€Ixœûz›ñM7ã†tFæ”ÌâÍéŒMv Æä—ö¡`ÚÎA\"//5¹D!­(?W!1'G!9,š29Ýá´0PT@(i£Ÿšk7y—Ûf'¸x±Bb^ŠBQjn~Yj1Ø„ÔŠÌâ’Ì¼t¿0ßT p‘‚[bRQfr1Èð’¢üœœÔ¢âÉ²^þ¬`&ç{ÅMNKÐ@ŠjN^Yn*ŠV~ÑÉs3,ùP]7ùbööÍÓsâ/^‰éF‚³wxœSËnÓ@•—R«²@ºB"4»¯H”&„F4´´¡¸bÓEäÇM2’=“z&n*!åØ1lØ²EˆHEˆßàø¾ ÄØNýYaÉ#{îœ{3óý“öí½6ík×\ÂF):—L7³_ùëÉó§éŸ ½\€Ýl‚Q€Ï„g–‡ƒª‰€y+¼j”KÕ¡œî-Ëw;:Y¯Æ*úÍ¸]á9ÕuzFW<Qç#[}Vú¢ž«¿BZ•Ÿ[Ë›
âbHŒQÉg¥ .KòOëë$³ÁÁ¢.è³yÁŽ	„öáèõ¡š1X`“+“=„X=°¡ ŒáÀ‡èA,ÏËCÀ™$ÜQsÁb°9²ùè—KÄE* }IpNTgB] eM¬-".—¢sZ©Æ­Áçyäï“»r¢ÞŸ{öõ|úGû•¥HX¶[²ûN¨KK¨(ÅÀÿ8ï©p#Ú8R~å¹ ùjëø€<7§E†ÇnäwSvöïßšÉÏÍ*Çs2æb8'bÏe[D-3ÊLEšÃÙ«ýÜá_dÌÊÅý”‹±±¶^Ó×¶‡ùŽ-èá6ýxÐS„Î©î>ÜªmnlËºy¸›¿yñµøVò‹Y©zD]µÆP9ùsD=jííìj%Õ©Ù½Í»–ÇÙ½¦ÙnCë…Ù‘?vù¶½t3Z¤Ï +ëÕèÜ\NNi¢h‰™ãj‚É'xœTÝjA¦„º"^DDá U’h êMRZ¬B/ZJëÒôâdç$Ü3³IÂ¾‚ŸÁ»R| ï¼Ô<3»ùkRìÍ.sæœïûÎß|¿÷çþ×»%aâóÁRiçhïâùÒÒ Y#Rößïì E>ZØC…ŠIÙ2h²©Vü3idÍ—a›íC¨êÉ6Žaømùa	N‚áÏåÛÛÎÐ¬4+¡=kVÐZmu÷“­ÔR³IcË›ð…}\ä(µJ+JÂOŒ ¢ÖLlfL—¢LÔâþâLY[õr…Â{	8)Rô½¥?eÑÞ¢‹Øõq¶¢_«5êþ—“…0:Ë+[kÊ{q¾ò{)û˜¤§Æ‚éR(Û@!E´Ážô0JÉ@;Ñ Qu\ÍGUØÍï'F]ô¤ "•XoõNc•Æ-Ò—"§"³¦ìoµ‘›<Må‘)F©¤ê€TST}EÐbLÎÈ&ðŒµUÓÞ²G˜Ä1òX‰~¢ÔjãÀùŽ…a®ÇûeìIE.™7Ì&ªGJ’
)×¦Zs±œ>vsÁÅÈx,¤	Q‹2k³ÔÑ±\OûZZzâS@\xn=ëŒÇ•‡Sì´#ì˜ã¢Š¾W MÑIÂÑóÙgšôHkÖ¨.gËáé$ö=’OÓ¾XÝ^wf&ùrº}iO‹Ú~æR[vüµÚÉ­Cù«´T`#xå°YY52`Þôbx¸¤–Îìtå¸—„áiÞL†xT³ƒƒàò^•¯ÚÁk°N-_Äé)‹­ÌfIçWøœÆ¢v­É)¯dîõÂˆ}¡àÃL4¦­Ûö¨f°3¾ó³>ëCÝÏ[ÃoF£0ÌAìŽ¦Ô=n"Ý„~p¾™Maj¨»ACêF~¾â!»Îj¿EåùÇj„ÉÙÍLéÜOÆÇ­Ì;C@ga”éVÉmBñ€åo…¼)+›„·nÜ¹µŸpÆÝˆ§p@vø÷fåÀ¿7Úîo‚ôixœ…TOoE—ÕZäÒªDT"UŸÔ6¥àM±¸š Iª¤A¤ Ti¼ól˜13³ÞDT¤\9pÙ—^zDH¹öÌ…/À©ý@?ïÍzã˜8©%kgÞ¼÷û½ÿOm=yÜú}Ð:#}~`[å‡|¨þùè“úBÚN às4î}¹ƒpGA× ;ÂˆæhB†ÂúøBßNVnŽª?½X=ÿø—öhmáÜ‡êïÍ7/ÀCH,épÛx%—á6T/Ö×!M³°›Šœ_åg>©^0ÕÊ‡NÔ$['=2Ì{ÓÓ6û¶Æ0º7kÝƒãâÆÎë^mE1kæaŽœín¬"á…˜¦J–|-¯Ž¯.j¿ÍAÊ²Û4ñÔ0d0+ªn­ÿõþœdCfó\P5èßNFÎŽ•Daˆ“ôó<ÜxÑÚÿÚ>€a¦ú{ h$°Áö£ÕXè‚ úÖf€À.ÃvýEí„e&l¤cCÔŒZ^ä¦È{èutuÓwâ«Ä¾ ÇÚÉªÚß\(£Ì ”™’A©´†RÜÁÂ»ÕÏïì7QËÒ:	Ý.äb•]µ'žV—a“˜2kÆhš;í$êÎq&É/ÒbÓI/yxK*Ÿ	';äRÀš¼òæ~éTÀÑuÑN$Õ%eÿòi]†bŒÐ×bàcòb%AùIîJNÝcxvŒÎ‘ßíD˜=Ž4P(3Îæ1ŒˆcŒ°£W&a.W?î\ª¾_¿T}³ùÇUžJ?v©Âp’Ûï(ÕeõÃÖåËq†ã/
'²@u’8VR‰¬«žnm/Ì«êÏ»×à´±ä^­ºwW6ØŠdDøD[÷Æ¤Å¨wÃÑDSÅQdÃºäÕó­ëgg“‰/ž4ÈLøÁi„ÓV¬!ŽÑ-ûÿD3á'l æ»uŸÂqkº9l2²IšÈœÙ„\•6\¯¯5‰‚;S“g[×_-#NlF†8OËfõPÒ˜_šo7]Ì›„–ø«hNp‰‹pÜáŒvŽvÕj#hÀ®¼ì36f×Ž,0»0gÏ1žZ£ö?Ú²Ç&{Ú%Ëð…GÀÝL^ñtÑxL[y²Ôêý!ÍGA¾M­«ß¶ªž­Ÿ}íž%‘4õÝ†f„`g±õõ6sMï/ƒ-xœe’ÏnÓ@ÆU‹m ‡‚Tþh”
DEœ‚€¸TnUGœ\¡M¼®ì]³»N‰„Ä Â^8qã !ž‚/ÀpãÊØŽ#”ìÉëýæ7óÍÌIç]çdãc:VòóÖÚÊ9ww×Ý¡ód°÷Å]ùvêæìÕÉø„”E°ÿì)…žç/n#ÐwŒ-}h@‹ÓoŽþetOýÝ¸z9)Q:‚’ˆŒ2
¯‘çÚí»þd\ÐþÚ÷áêËó2áeÁˆ‚J¨þºê‘ñL5ËUyR‰r¬JAá8Í²J]ˆ”)AÌP2N S	QJeQp’ðFßîtþðñ`?èêÄ¼¿>LPÃ•rÖ0¥þhn\ÆEN²¼œõ á£”1Õ¿Ío|ßF_=4:–íþA ÷ì%jA„¤PÕW`5Wn­ NiI@3,6²	ª¸Ú4áÚr†ª5Ncí›}æÝB-ãª©›<E5?$G"4¤	"¨¬	‹é›<zÝbÖ|úƒµ7ß„?Ö«»™ÔÃkÙ (æfmIÿÍ.em7X×çŒŸö¦7û~Ž³ÆÒ0ÊÞ6Éi»a½¤ÛlW¿oãFð–ÂÞÛW4={ë³„Œç2‚ù~xœ…’ÏkAÇ	èÁ”´A
¥•ô’Í/=¤F“P‰!)5b©–ÙìËîèîÎ:3›Dè ><Šÿ@!âàÕ^{ôäÅ«7o:›Ô«â^ffçó¾ïûÞ¼½qîàUnßÏÍa¿=­ìPøã07¬Îþ /×[÷fÎ`[y ¸ƒ±›Û„†ˆ"fS2&a>‚ÄÇ)*]2ÊX™U¥¡†6•_wbõ‹ôòÆëå™ëFU(†ºâá€÷°èë
ª;ô¡VxQ?M‡µU³,÷m[²¡íò˜É<Û¥«õw·»¨%Ç*ÐþÇd_ŠÈ8šRÓ|ƒ‰î¡²òFƒjàŒ
Dzà"½o”hncíÁ´.ô w¤Ž3êJË´gî†<M˜‘ä±FÏÊ÷…d½à8NLW Ò$Ò0å¬5_;ktå¦KŸÛœvÛç®)Ô“‚$f}0B‘‰Ôâl–à¡q	Œþ´'åÉ[eíwªô¼Y í½"#Øñ%©ñaKdsC<Ò¥§Í²ZM“ü<m·œ¥_|Â¤2u»£¬O¾dQèMk~á„ŽH41}ê¼]ÜÊŠŸØÇO@7yavÀóN<ˆp•–v–i´u–VºÏýßF •Ÿ	vX6wVþ2d(üKÀý#Œ¾w/Ñ·»óãÊÎ­Ü’H„à(ƒ™gxœ[+}Jf‚ŸnNb‰njYj^‰nbzúFM!F®]Ç]×0×Í®Œ;™]P•èæä§+Äè*§æ¥(¥¦d&—$&å¤*ø$–¤æ%W*¸‚T*8¦§¥¦…|€ê&[³ºÆ€LŠ2kr«¸Ð< X^IQfj±­åØ)Ô -JU@‹åš|‘ULPA!:F7F·(1¬¨(vò3Ö‰²x°x#~G&¦§N^ÎþSÍJU89ù‡¢6>s€!•™—® S/Á¹ÑÂ0FMO!$#U!7±"3·4W!¯47)µH!?M¾P¥
Å¥ùE%©)
™Å
F&&“ßsÊêA\ô<—^P°‚	WPjIbfžBbž‚cqe^rFQ~^~i1Ä1“ÿq:ŠãpÞæ .FIœnŸ¼œÛK¤ýãž„ËÀÉ‹yÌ±èxÆ£ÌS L*ñ@‰x ?ï< ¯~à³ärxœ;%3Mz‚gj^JiQb^rêF%	FNW?—Ð G?g×ÍÎŒ»˜Mà’º©e©y%º‰ééº9ùé
1º
Á@9¿0ßTW˜"TÁdWVg„©“'²þ—G¨p£à˜ž^”šžXÓ±“í‹8\‡Ø* U ÙÉ7Ùg2êL.åp•ÑQÈ/R(J-È/*IMQÈÌSÈ*ÎÏSHË/ÊM,™¼‹#ša{Q~iÁäì¢“m90šNþÇÙ¿ù— #7’['ð¸#¹³Wfòž2˜ŠÉ&¼&(ÒŠrù¥%¥%¶I™y‰E•
v
pÙx“'/ç] MÂz{ä7‚ô>xœRÁjAe^Æ“K„(ÈLŒ§èÆ„Ý,Y\W‚ ½Ó5“ÆÙî¡»fta1Ñ ˆW„¹zó¨ý{ô"øöÌ†Ä,ÂæØUï½z¯ªgï¼ï½O©w>×ÈELl”a±ê¥7m/Ôì¯­GíÓ%
2•Bà· `ˆ’Ãã“6¸6Êx9jx¸? ƒdŸÝÿ¹¨zw{õf9vÍ@ð{kmÊæõBðµ”6a
€ÊÕ›í¯½dÔ¶r–"$ZÉºÀ±1ú­j¶sÕÛ;‹†!]ÄThG³	Œ4º§DB‚’*{»³¾â·Ž±PCs¦C&`§õ‹~‹™½‚Q‘$nÊ‘œýÒùêŸ
hßvo\øßBì÷îêá$-°D¨åÎ’ QºÁ¦¢D	s)<lnO„¦ÓbŒÒ•³%9#¥'ni.#0E£1anì^>œS1†Dl€äZ•‚×¶œH=w×Í(]/˜Èœbc¬ûÚ} §…0Ì1>r2Ä˜„’p'Œ6Â(Œn…Î\ÍNX‘Ñ‰q K

ƒµÙè8Ýü²öGïºe½ý+KS}îÍ¼e ûaO/þÕ•þ`)-ë?_¤}ë_;×¨þô{	Í9ë/‚bxœ}RÏkAf¼‹+xéðÅº‰?B&.ÙÚMcS¥/%N²/ÓÅìÌ2;ŒüÌàÉ^z÷ Û“ˆ øWôâAþâl´—•d3ó}ï}óÞ7¼÷ïÈïòá9ï¨rpˆ\9”±É¼vsÜ¸ÞÎ1z·^¸¼MòÞüŒ1‰ÌP°-ìèqý$/zå*ÁƒeˆÉýâ@UîüÃE¦ª°B. ¿z×Îb’»“ï^‰¬Í-MB_Š(·­ÇO!8{“õ¹9Gk[Sq¢dÚS©DÐã»K¶¥öD¬BÁ¡? ,©BÆè“òÛÒ¶¿H@ýÕ´ýþ7°Ð¸~iŽsý¥YÐ¼±¼:ÏWŒ<9ƒSÍQã¸z»OL'}Fi<º(AôÁ<~šIÇB* LàÎ­JÅ¶ @¿Ù\#R_l\¹')ÚV­(×Aí±;Mš®6*ró›à%#ÞÛ“‚‹4™ö¨wš+úÛfwqFãºÖ<Ô?›îÔ0r»!§rT+›kéoþÃË3=ëú–ÊÐç­g3kÝh=Ï§¿m]=K:†îdÓý©õ‹üø)äà$‚FxœUQ;KAfD#ÁÆÂ€`!9#ˆ•Qã#Š‰ZEör“5âí“½Hl´±±ÝN±²°òüvêŸ	Øˆ¸9ór«™ý^»3?·ìú†=	6€Ò‰ËÖ»\ê´æ{y¯«ÛOïæw2­+8Qs—~íò¸Xy`©%SA©aEBÁuSÂB‘”\Bdéa¥dÉ\zñXÍ_›`smCÀÈiËšÂ‚	ÁçUpm'Ñ
ÍËú$óµ>}¹UÐG)A¼äÙº$5zP’À­Œ{Ü=±ïPäsˆØÄOÁ‹E¤¦{<Öie£=ê†ÀÚ)Ë§¶½ENeL€	GEÍ¤ã²’ÍŒÚMfŒuF³I*ÌGvÔ¼o<³ys¿Y7Ù-ìƒè˜Ç­UˆÇàßI¡¿ä–$§j*iËÓ›}ìÚ‡éÉ]+;Ëåû[¨ùÌl´!'šªc§ê4¦š´HÊŠ³à8ö“A¨ÿr`JèhëºÚÕvýœÎÐä‹-xœ›&Ý.>Ae£ž#³¿ûfOÆýÌ“…XóLròÓcÒ‚lRRË2“Sí¢ctctÓ‹òKbt3SlmÀL;… ¨”7™Ÿ­b².+çäl¿6/act…Ké(`ÕÏ¥¬`Â’‘ªš—RZ”˜—œª –RÈLIÍ+ÉLËL-ÚœÌUÃ8ù5÷éÉ‡xt'ÿä™ É˜=öèƒ%xœ›5›qß4Æ…Œ›«[ì&s:„oÎr`cœ\å(­“^”_Z ›™b«–Sbæ¨¥—X+Ô(è¦+ ÅòrM¾è(>YÑéÿdm/ÎÉ–ÎâŒ
›ƒœÕ5sòÓŠKŠJ“KJ‹Rr+’RŠR¼¼Ô…Ì<…ü¼T…ü4 k\\X’*y¹6uÑaäF²br›‡ªvÇL–ö‘ÉHUHÍK)-JÌKNU Ë)d¦¤æ•d¦e¦M>ï®¾¹ÊC‡iò¯]“K¼õ6¯ñ~Ç {ŸWÂìƒ´(xœuP=KÃP¥HªM‹«`½(H‘¦ÕÒ:µÅÁàâ¤âbbrÓ’¼ôåÅ(¸9«owt/€“»¿Àÿ ‚`¾,]Üî;çsî¹oKŸ‹÷ËRJèhu>'ÈŠr¬Œ¹×™VJéƒ*A=ŽNecbØ×ú!¬,¤_êr¢Tc©j*Ð6ðÒÖ±p¦J)*¡Ç¨A§]F)“÷¹È„þ,4ø‡p FÉ˜&óíüwº/ßšý¹’Tá{±¦ô )ö|Ôm3À"WàjÞMR$ûÌBð)éSÍ…À"¡cüÕ“7áÓ2êFN,;¨Fì‚ÆÀA-š‰‡UÐ¢k¥žZÑðZG4øhn¥k÷ÐÔB‡E‘všÓKða¡•ö¿6så}dI.NÎ{ûÔöØŒ‰»Ù5:Å»<	™2þ^¬§àci=c+¥§_'ž¬	ë ƒ„HxœuQ=KÃP%‚‚…‚[‹^ëÒQ¡TMiíR)§ØÜ&$/¾¼ø‚.þ‚·ÔÅ ]];‰ƒ£³kÁ¥î&iZêà›Î»çœ{ï×£ðÓ^a)%´c7;È{»Õí‰61@L§  †®Õúq*Q¢Œ§ÏôY>, .÷÷º	MQž]…S1"ÑeÔB¿˜³Y!Á9ƒàD„± ¿—ø“,ñ7¹—
åp Ç»%i"êôK3C¿Óå!ý··]YÎü#Æå¸«yØ´ZáLr	Žæ^Çc$%ÀLƒjø&	l}8´(qâ5Ä/*ÔñÂj¢'¦åƒ„5gµó …ð¸¹¥íõµÌV^5õˆbÄÇûÙ¬eliÍB67Æñe…kJ=™üUùæd±]#’ó¨å2°>´’+Ì©GS$`^À¸§6’à»º˜õÕoá:R¹á:Ûlxœ}“ÁnÓ@†UACå^(RU8•àûÄ1Í¥ÅmI¬º !ö²öŽEö®»»N©@
WnH~„ÄsÀpä=Øµ‘€ÄmÇÿhþ¿Yzòëàó‘—±ÊO¥ÈxþåéþÎ~xÿt>'ç_G;ßî¬þèˆçh ,ðO
„3j(DM±Daà´m«5\
íñÇ¯gó(žÄÇ^ +/™G²‰X–v0ôƒIv	#†KžâÞŸø(X®*âóìd4{9ÃëŽàÎÍÁ£w›÷v.ê’
â+¤ŒºH®í¢ù¾{´î8Pô†ø	TÝ¶j²©‚¬MUâgR•ÔœŒÂéUç%¡=7ï÷¯B©À,f¯¦]NÈùÅ¨`­dÛ‹'(YWÀ™%Â3Ž
t…©;±!\›¶½’Z·Ó-f`cü‹wÐñm~î®:ã!lQê!yÁeÏ½«ÿç1jp³@
¯kÔ†‹¼UÈ*š#yØY/¼ Š<Ë³ss¨W¬{·ˆ*C¨·OÀá`¨SÅ._rVÓÂUFƒÌ áÆ†(˜Þ¶H:‹]­§·c]6«A²ª³¬»‚û¤õ£Šõ[´µÍVnO¶{ìvÛ3û{á½ØÛÅØ›a%U‹¥Ó­cûp‰«
û^‡®|«¥pgÊ•]pûÁ&€¹(nA
\gëç¤T€EcÀÀ–/×¸rÿÐsÿñÓ‚{¿6;ï]ƒéWxœ}TËjAe\L2(º0ˆ	7‚‰Bf$`\˜wL$äa&D‚¸¨î¾=SfºjRU=qDœoÚè_(‰àÖ¥…þ†¸t#¸ðV÷<:Ã`-š®[§Î=÷U¿Îrçïs+¹!…ºQTX—ÊœªÜÉBÖ`/n,eöP,ä Œ"€íƒ-„=Ô¨Ìp)èßA¦ Î”F0Uº×Œ}»ôy²¬‹Ë#öÏò˜½¹¡½ž‹"Ž‚ù‰š™¥Ÿbp"U '*fÞ@1€‹vûcåÆXæ*ÚÁðE¢/YöÛêÌL"cSM1”*b&qF¦Ã/!c°;kg­ýê èÀ—QÄ(z…&VB» *fb3´Q±O ,ä„ªÔ"Œ¤jRj˜ µ¯¸‡º©
§)‹ã¿­2´:¡-äeHþ‹P×™öë“ÉD¦æ¯èÌôI¨¸ÆÂO0éµBžRë¡r[_
£d­†J	)•Ê±§›Ú`”ÊgÄÄ´nIŸ3ƒœpS-ä]”ºèD%ÈØÖ×Uwy	KSÎØµ—Àiò»*úõS™_ûÕBFî½’ýt8j‡Ö[öËfÐÚC£86ºØMK»•/2:P…7P€Ð<(Á~•ë^/‘<…Ç1'i]´_eŠùÆ	Ä÷QOÈ*Å©¸ã	È«Iÿ(¡Ì…©'ûnsòJ_cÛÝ‰ëæÀž¯–ëèó°™æ±[¯ÕðŸúg±#Ò•E‡¨J°Š!£1ÕÎúàÈ©Ê¡Þ¿DCe¿¯ß¢LÇHí‹¯>¥`ÕU¤Ü¡}ëÎ7åÈãÆ¥J£q\æ0Z˜ž»Oß¤Î"mµŽˆ^åºÓä"Xë÷r9uã„ÙŸûó^’nçA›€¦ºÔ“â¼iÒ'( ¯ÙóVW²¢XäX†ÛÓž¼öéÆ‘oCzHio¥÷Ë.¨¤“\÷pQât¸8…ÛÕÚÁ:ÃK-E{+UOGºÀã‚©f)ÁŽ¨5A
šãDJ‡Ügâx±ÇM¡ýûìÃÕmIaQ½FOHM§ùGOwoåþk°
™ë'…xœ}RÍjAfNšh"BºR#ì€žD¢Iv÷/ì0zñ ½Ó5³½Ý“îž‰¯`¨‹|„€ ˆàÍ³ y_Áƒ`Ï`¢`Ÿºª¾ª¯¾¯ûÛÛèÇ›èC]Je'F§”¹6Ú_;›à_ë½gbˆg¦ Z
_ÒP!l	/`G‰Ç¨=lVÈÂ
OF;>ØøT„Óëk7QËÌæ1É‡ËÊ¯žô—3¿
¯ F8IðAc¡ˆàYŠ±Ð±E!EI`þÞ¸Á—›wù~óú\«¿{Úoªþà´ùùuËXð#„ÁÓ>‚Ä	%MP×AhY•Â&aS]¬)r $PJhÁå˜”7YEÎÏL—øÜ8W‰NÎ©„4PýmÈ…GøçÖû©?Êžw—®þc ?‚Æîÿò
‡°?B÷
tžtVÉP&ƒ\d¼×Y‰:|Ô^œ=o·çïíë°¹¥ðJ¥]biˆ@ZÒ„d!T˜b½“Â|`UÒñaë¿ë¼¨•DÎ‡Fa%˜Âç…q WÇ]â¯Ý5¾Ò«MUŸ¤<|»gøÎöà¢žŒ1Nñáö—ßòáxå+ƒÕyxœ‘Ïk1Ç)º]ìª‡"ŠtÅ{0[·^¶¥¥–® ÛeG/m@ÒÉÛÝ)3É6ÉŒlÿ!gþ	¥ôàMÿ)Ï&m,x$yß÷áûÞ÷¬ùeñÓ½Åc¡I2abŒœK$Kµ9iEs½~LÉVo³¿³ý‚’Ó¹³+ÿT%0D£R,¶ª*ì¹*dr#©ÀLÆi‰Â6k{¿ 4PhÀÐÑºË4ÁuØ§DBw”›uøàøîU˜ia(q¸œ™5_²ßkwì­ù«Ïµú’`9ê)K8åkÝþÛ×E€¿_Öv]12ekõçLáQÚè`þ‚ØJŽÎÝƒ7Ï!ìÀÊ‡©’eÊ±jS¨‹Ì„…¦P^­*wGû±þµzs6ƒŽ‰äNáå<ÕÓŒÍìþµ»·é£vÔŽ{°¼;xór·/Ûo7NWƒÈY}–ãœGíaÏ"—K…CÀ¦ž‰d¢¤…†m·{c²‡Z¿pîC:Ÿ:öGãAë’˜`Åe´"ÊŸ†•v¬¸yß¾k¼ZŠ'ò}»Ê
œC-T‘yfç¿˜²jû_|’$K£Ÿ­é—é%‚AxœmÁjÛ@†1%.ìÁC.=!íÉ«äP(7§(µ•…åB·‡•4›,H+±Z;¦‡Üz‚<By‡¼JÞ"c­símfÿù¿ýgî÷nwï>T^óÇ%×<²Þàô$<	ç‚‡çaôø³÷ôaý~‡ÐÈ´@¨,äºéJò×YŒa?¹ˆ¦q2IöYÐÔ,0Š	51Ëh@4±Å	5ƒQŽKá1ü\p#Klj™¡à:ÿ1ŠÚ—£ú;Ÿë‚K2	~%M^ ‰g¿Žá†"ÕÐÕXÛëÐçÛèŸ|8ÁÝªÆ¦ó½ÑoÚ ÿmÿì%¡ÐƒJy t~P¶*!Em.áZé0E6w…0Ã¬º„3£Œ» `Q¡E“!¤«n¨©1ÓJ“-~Û
ÆënX|	ü§ñ|26'ŒcFwñ+áG"³¾²èMuó‰í³pJ=ÂÊkªµ‘vµµ~­ÞìHùH„t¡(5¸Ê'v”NÚª…«Žz‹²Ü’Ûçí_¯JËÄ<æ‚xœ]ÍJÃ@…)’Ù‰?„ö¢ ¶]¶"hÚ-%m]Ea’Ü¤éLœLZÅ•{!O"]õ1|"Iª‚»™9ósÏ}ÛXn¼×>ö¶+¦}k÷GÃÅee¹vˆ3d2·]”Ð‰ñ‘z1Â5‘1ñqªt°óšq”ßÕdA$·Aƒv«?î]À³b11öóºilMx*Õ½4Õ’}gåŸÆ®7™»2"ž
ÍûÓê<“I¦Ð‹)‘íV§7*½9ès~ežÝ'‚Ïh€@Yù‹rÄS$¬I¢/)‹ÀA?&t
cFõ;`Š%¥$Òê	ld‚0¡+x–ä_fõ¡hu¬‚U]­¦3„Sk4AÀ_6Ò,¨±˜¤!E’«„ù|È0-&’ŠŠy‰À=h*/Ûj–ZQ™¦Wwþ³»U”Sòìs&ã2B`Â…­Ú/œõ“Ê7&¡õê,ƒÄ2xœ…QÁjAeÐƒ¬.^L.‰R!š[»Y/*k“¨›sP/íLíìÈL÷¦»g–ùÁC*WAO"$äœoðò$Õ3º\ðÐÐ]õÞëzõ¾|NŽ‚ã8˜ÚWV„}©bŒÄ¾V(ÒÄºÓ<.OnÑ¯•çí‰õ ¼Bg,Ú Þ0 RCOp}„8)PÑÞÓ³Ötž40[†…Ôµ",’b×‚·B—¥^æÊ÷¡s7È`ÙLº¥?ÝÃµ:^»zù@Û«S·¶^wþRU©Å…	è:ðgÂHô@C¢ýîåh-§W2C;<×ü£Í‡­±ð"(WÁvë5©"]$VTƒ6OøºA—·Îä!ß‘VÖ?.É™Á{„C1ÂÃ£ÄR9âW¢ÀïS÷Àò’Lëµ¡YŸOß½¼ÐÇÓ¡óÍ¹+ì–6gg9É4©`ÕŽTØ7ZéÜÂ3NÁÑnçû½ËÆó—qÍB“nv;w'ª¡ŠýjéhkñÎN_KÏUH~ìV+¨ÂòZâÿZºâ°f“¾u\óe¦	Ýß¸MçÝôiûð5þ¼ä&‚JxœeRÍJÄ0¤'¥PqÁƒÁO½Å¿‹».«¸Eu<©‡´ýºÚ´¤Y—Â‚¾‡xÔð¦¾Oâ™´WÍ)™ÌLf’<ßYo·ÖS×ƒ”d(	^!—ÙËÀê7ÿ`j´u°òâØ ÐæÔ‹ËŠ©»ÛoÕ}ëuV«àGÕXÆ¸	ó‘¬xÅ|œïÊºúÜ>^;#$¨±f‘KÊƒ·íèôÐp` $…!àÂ±ÕóötMë°Œ øƒšóˆÌSÌ*£ÅÊIÂ0¢Vw>®ñ_
Ë$$aÙ
+Eƒ‡Œw»‹•@¨uòáýˆ²N9“°W´ !
ä>‚—¤,EŸ…LË:UcgÄ.Ùêa÷ÁáÃEÕ¹;3ÉiŒYªÉ„Ã×¢nÜ©‰£jX ½ŒµPëî‚åiíÜhŸxŒS‘îjG0SE§´^/ÔÙ@&e.©#P@Ò“iOêµ@'µÙfê±Ýœƒ†~¾Ò®xÉ%8æQ	Çâ3˜¡ÆÝõîn¾À~Íú¥`Ñyå ‚xœe½NÃ0…Æ 0t@]–H†T	øj'„ß¦‰\§‰¥/ Hž‘x¤> ,Hìl01³ò 8Mø‘X<œ{¾sîõÓµ3ºqîO‘t†žù\o.`…î©¸ Ð@;1žóvŒàSMá ¦!&ÖI7–ûê&Ôb]gØç!Ö"]‡#BP°H¥„³µ|¶×Ú. yÜ\¨ZGWö4);­W\3Üœ›Vt@Ú\Pu‘ËíR®ÉL§™&©ªÇ¡;»ÍïP	¥`[/'©’}Î¸(Ü\
 m eít0Ô\DpˆaLyRq[‚çÁ AÆ)d=å	V‚@°LQ"4”ÌRs·}ë ñ|âþ^iÖýª¹ò§ö›]ü¢ »ŒÐ¼ÃQ–6aÐE
Ï2ì÷Ð–Še©m]¬¸«K©—¿Œ™wÆ	Ì›??ùçÃÌs0»rXàc6”B+ÇEƒÂT*9Pžü/sôêL|ùµÄí-€  xœuRÁjÜ0%„¥ S…ÐÒÃB/}*ä’¤’M÷µY»”Rõ ÛcGÅ;reyÛ@a!Å?Ñk	=ö›úÙÛ@«Ó¼™Ñ›7Oúóø÷ÞíÓÝ²h~>ßÛÓóXIz–&wg;¿vßq>hr-È .ÑÁ´Æ¯:«Î•S×*Ç%’ƒ„›tëtÞŠ0yÉûy'³ä@„m#B*…,g´Z"0%ô4Ù?B**ÛÈ@'Çó·W§ð‡ ñGÛNÿ}òäõÖ*|LçšÎÉ 4v©ÜÉñô*éqÿcr´n¬YéAÓØ¦Êø*¸kvrC¥®:;ÖÌ
íPªu‰`Ê-mšY.¨àå—Öt|Ž¾Dq:‹æÞ–u‹û}ÁË~èˆ	¼)ÏÁ{¾Êó'§Kí%èZ„/×H`ñs‡üTJMªp¿¸á03¦õw^®}¿/Ê0ºÆØ¢Zþ…}MÚ(}hð¦¸œàè¡ÅÆØAÌXg©Ã7ð –åâ0òðSkÈ0ÖÃL“²7œ`Q}†ðŸ¶OÎgè×.€¡§—~ÉþT<þ—É ¯µøiXèiï0ƒýxœuROkÔ@'<‚Þ\Š•wžLV¼x©ÿ¨t­°[·.H“äew ;ßL²
ýsñâA=x„öøzóƒH/zq&Ùn¶æ2äÍû½ßŸ7ŸÎ½ŸÆû1ñnq¡1s¦C¥™Vg¥7º^4ž½­Õ | 8D‘ÂþÑa/E¡yVÃŽšdž#= B]’°‡*sÌö*Meb‹øÛýÂ\Œ{æÛó·¡åþ‹Þ½9qpáüÞ‡!±ysÁ¨vµØü}y~º+	ô[	)V<A˜ð
EÃM+T‹Ù¶˜ÚnU`Â3ž8.IŽ+Íå~A²â©…¹¹+Ê[/¸b!Ú6ßwo.ÿaÆjˆ±ëäÌ¯ÁæÀ7—ƒ­=wW0Rö&®›ñ–kBl­‹À·!.³éjVAN}
ZZÞT–:r±}=6¯bCG§‹þ®—‚¸!uGÚì¬ùÌ¼Ú&Y!ÑÒôzRÎý´œ1·H–²8G…æR¨È:{ôæ¾¹9Üy2@íÆºD#8°ˆkÓJ>6…3f6Ç£¯wÜ„6ôkã‡kïúvÙ}QÍð¡ùò®ß»‚®pØ»ÿÇBxöy|âýK/ðè1‚XxœuRÁj1fD¼¢~/õbº°ëêÊtZ‘Ö…Ö“ˆf&ÿL#™$Íd¦”õ.š“à]èèˆïâÁ‹L2Ûº¢;—Ìÿý_¾ÿË—|q½ïo{ŸÊÞ¹‚éÝ{5	?îÇÙÈ¯¤¶ÔÖ@} ØB©À<	µf‚æX¡´°çy¼¶<¯ýñP»ÏÓ+îäî‡¹×€¨1b5uaG[žãziGð˜”¬4špv;ôvíÄÆK KÀ“h`ÅçU="—Ô‡­Ù}º‚¯«K
e*jãätgÿt²‚%À½›~›k£ZÎ¸ìvp%f^ìBšÌ W²àecºžjÑú¡'x Š<îe$lJæ™#lÕèŸßd<d¼„,ýêtòfðWîWrãò£s×Òµ{û~ž©–A¼iyÁÑ€UÐÔG(Áàaƒþâd=
U‚¦%º¯›7ÝÏäÙÕ ú”Œ]l¾6H«@¹ÔeÕ¥rjlíßt—Þß|»äjeâìŽœý;‘¡ñÉÜŠÀóZÉE©LDºÛŽØ<”â”Ä?¯dát!›û”3‡fàËó,¯ÐÙôû¸½{A¶’\p÷4¹î^o_tÃûïÃ©¿ºxœ­VßoÛ6~÷_qðÃš±ì$íŠi€,ÖZ‰mXFÑ!ê%$6é”=ÃþöIÙŽÓty¨…D	yÇï¾ûI½Š»`:½í3ç¦ÂsË{
õ’^©¶ò«Æ”RÃÝ£/·á90·þ
wJcçýþjµ
2™&RÞR}“ïú(ú¥©«~{Àá}DŠ‹7”éï¤_¢ˆÌºB]"K-ØB—ÒÀE‹¾AÖy Ðô/·ÌaÈ1œôÏýÓÁéÙFrËDÃªs¾Åv±E²Q)z‘ß»a¢hXA{¡(*®K»Ý	æŸ KJaÜ›…ÑgûžNfó.tOèwg²ë´°ýÓë:äÞÏ>å1çAËÁf†%¼âfÚ4y~@KÿþìãPÚ¤%M¡ƒÎ„+‰wƒ÷¿¾?{¬A¡6:(DãäL¥%_¢/™BÉ<§ð~ëNûµ.ƒÁÉY`e‡bÊbqd® >b +_X›ÝWM¤Fæ¬©äRÕÌ.ŠšÈ¸fIEm¹^”(˜áRtQîÉ¾5Úðœ§N
G,³`ð/zI¨07P3UpRTë×€eP4·W£1\OÆóp<‡h~5›Gð)œ…ðæPf"Û»W·a·ótªAÜƒEæGÃ5ª¥ÄÌÉaÁ”F0%£Ly´èÏñd"êl½ ˜æ8Yp«µŒ[ô8ŸÁE†Kžâ%ÜÅ½¸'XzÁRŒ{<ûp!4Ï.áb!À/¾và?ßÔöXSÇ½l%U¦ýéöö^ A*f{
_ÐSl÷.˜Z;ýä}Ù˜Ecâž¯åym<=	îšù9÷ñ†Ñõl4&cÂyù\ø!•uÍ(=
M£„¶§f3Œ¦ŸjRRB[¶¥¤®±–ÄÜ”Ì¶™NOP·™,hØ(âáw ÚƒÊœŒíÒõK°¥©ùßhÅæ	åçÙpK:oDêtÚc”¬•]¥R%«
•ê1+¤R„¨IôZ¬=}F@Lk™rºá2XqS:õN¼ñI½µ²aGœ°N[Á†ÕÌ¡e×[OùS2YZ‚nèµ£ûÚ…ÄærâÒh[a:íì*ù~Tð`ÁÛÎâ¸Ü6×6mkîs°JÝ,‡yI^ÐÂ‡†['6jiÉKõÅõž>’È%*Å³¶’J¦÷
xîC³°uãIKµÞ|×~­/ÑSž¯Ÿ$wètþ§VöŠÖ&Oç¨¬oC-h»ÿö~Ÿz.ÔÅÛ@>4HO3›FbhSm°Ïad	P¤nlÀì½C¸ÌÎ¬šQ®(|ííò»m9»>¼Ï+ñ¼M–ßTqa|–Ù
úJ!x" MF#Ãº=nAßznêf¬a¡d¡X½oÊ7dÚ¼|7y¼p“l­»º¢+¶½m‰ƒÛvQÙ8ØÕ7-…‹‰Tvé¡KsB7 ]ƒÔýÎÞ&e„Æ2¶Ý†×»ØØ	¿\ÝNoÂöºKJ«ôk4ÛF²Ÿ—^cÊ¨þ7]L·JÜ#pE-ÈvþXšáˆ!xœmÏJÃ@‡)ÒÖC{³øÆ‚žš\ô"Öª µ‚MC“
B/Ûì¤.4›°»‚@Ø7ðDÄ»à#¹M©^¼Íð›ùæ›·çúË&IXî*Mõ\½ï‘Êz÷"»atÂãÊçZë/‡±W¨aˆñŒòF‚kèQÁfa9aÜ*,€°\0wÕÝš?êwàÑî
hÛÚ|W·LÝ90gN£ÖíGË,ƒ¶­ÍÔÙyêfô=‚ÛG`XðaÊ-ÈeVp†ÀE’É”jž	 “lþ¯’²ªJÇ¨ŸXÏÉC	W9Æ<áÈ@ÐUNcï{Ä{7ÐÑõÀ›Ä²òî´¬¦m~Ç]ÎNÊ€xÃ‰¿JÀ*
½ KsDNå=m¨d`esë«´DóJ¾¶í——öÊI@¥†,Q¤Ï8ùÆ‰ä²pxœm¿JA‡9l4DH!6Nc$à™Ô&$&˜˜?ä
clus7îvÝÍ‰ ñ„°¾ƒ ˆ¢•µï"Öî-œjføÍ·ûvm=]Ywc+ã{‘-Qy/¬³êŸYÔºÅßìl öQÁº¡!UÐ&Ìß7ÓÝ‡?ˆZ½s†ýüX•álù@•ÍBOëë:Û(éÆj®Õ?œx0í7/[\€:EpŽúÆÔEÓÙD‚ÇÔC Ìç"$ŠrdÄ'ÿÊIC!*›!¸.JIGFytžÒe„.õ)zÀHˆ2".nWŠQµ¢?÷nÙãÎ†~i®¤ý{rÎ<F©äXèYkSß´OÖR¤2ïáŠŒ“TI˜Fª_;U½Ü][J?4)]èr]ê9‹,Ñvªg½ç/V§“ôäU…Êrxœ•TOOAHA7ñàÍ š†˜þÙ-„ÄÚbc‚´ 	Ëaº;ÛŽlg–íQÓ¯ Ù¡'/M<ø	¸x6Þý^|3Û®hÔ&é{ï÷çÍëž»ç³ïîŽÆòôÎ§‰y³T6Ëó§ßö&wëv¡¾±¼Ý˜¿¦UêGÏ#®aAòsÆbi’©ÜËt#snpõ'ù˜[ì‰Áž]°¾hÙ…€´¨]ˆi(™àµêæÎÆR0z»?ýB‡ÈƒZuýi½¡ëPûåÆß8éP˜[«rÉÜ%xƒ ô!ùž{žz-?N¾ŽÓ!4}á€KcæP˜£Ç(á¡Äã5¹uöpbzdß¾_„F›IHˆ$‚û'Ÿ¹à!PÔ¦`¯X€N@Â]`-.Bšfßia–"9Ù¹þ¹·µedRž‡wÔ(n×aÁXG„-E²›+`BbÊ]æÁÂý‹Õ•ÖÝCáæÿ
G%kFQ+O¯¨qYúWÙ^ïòpD§C@R¥­!“ÏdÂÃ»L1g\	p™|r’:¢)YÓ§ÊG3H¨šï˜yµZz%juMU±)"ZQ«v’bª
‰ZDˆÜ=lŠŽ¹!‹µ9ÍâRtýH5í·—UëHæú¹j4ý ‘„žºÝîÚsÎ¡•’šSÔ*ÜBe\ÿ®ä­¦Ò´0óØë€yÀÑ¦ÎÍn_NtP»
Ï£>øIÔf¼….ƒ'87j‹YŠjà)Gmæ´u%ŽÁ  ‰¨Ã<æ(z™½3ãÆÑhrË:¼\f“÷ÖZzøa-&Ó–—E¦ôh½êâ¥÷ÿ:ËqòÅz0¨š¼§ß*n=f•G°_Ûi·í·ê™LZíyZ#ë‘V“|Y^€¾™AçqIråg¿ ë!©ôæG„BxœmSÝNA1¡dM‰J¢O@nƒ‰7’BR¤híV#²^Lw§t’îÎ23-pÅ+˜Ì˜ø Æø
^xåkxé…÷ž™Ù.MC¯¦çç;çû¾³¿—ÿÍ~PR\öX‡|[x8u«Ýöê/k¡ÿ>ýàûîÔ—yÞJ_&D(ŸÄ±ßç'úÐ¢J0:¤@ íÊ ¦CÑpm¥v*aHÓ˜X—E@ÏFhÁA­Õƒ’‘
O1¡$4ÊTbA\Åw¡Ëú%$`ª¨ŸV¼J°‹ÁÑa£ÔƒE¯"3¯’v=;?&Áî¥kwîÍÛ(TÝŠ[pú¡a¢_L/é¯Ów·ßl•‘W
UóüäÁÄÏvðÊ*ôÍ^›ÕÝúþŽmâ`ßú×t•J»çH’\ÃVÐÓ•j’§«Tú
7F9ÇIËqÖ&-UŒKèãRo¶lŠ¤$¡2#Õ?Kk—ÔÎ*DMÈtÐ#)yÄˆBùÏpt*x¿OEX
g=õ "’ÚlŠ.	|+\—I`')4¶ò£Þí3næIt—IU†lÓXº~þjV
‡c&h¤¸¸XµÜ³¼¤+cê˜èªþSzTÊ¥Ó33K}çq£Ù®7ÅÍ¦‡¶9‹ŒðÖÃMû×«´xîíçXnDw£bÚ%¨°4šÈ*Öïä€Îsý÷æýËpîh>äÛóq›K‰¸°Î¡4°=6Láác'	QFwÊ##Ý†äÎ‡ÚAS¼ÝÚxM•3h „qÝÈÓ<±AwÀVHwlü,žÍ-—®®þ±nÍöÞp£›àÝ«¯ÏŠtxþ	â}q›À_|2!Â"}l(¬A|ývvA™[›òþUØx1î„xœ]POKAÇ"É:&EàÃC¹{ˆLˆ44Ð–Õíâ\Æ™·5´»;“~…`}Šˆ:ô½º·»™bïðàñÞïßû®|î¼ì_(ëI	fðí”Ê×-‡ZžÓº¶ßo
›Ç«=P\ä“!x‘4Ða‘¼|›¼níUýn4Rüb¨ïBCàTrlÂ(©–*0KêÅƒ#XÕˆZÔRRè‹FßëÕ›0K¥äCòX<Ÿ/ôÍÂ½œbNÀ8†èŠ´K_b¬ÁL FcŒ8!ý|0ë®ç¨µ§ÎÇÏ9§VÈ3
Q«”›ÚÄt vë»É×v9Ù-ÁœØî ÎHÿï
äR=¸mb;YšoÖá_´ÃÕ$µ4*§ÉR˜ø –Áäz°ì'—2™·þ]¯]#¶VÄaqÏ¾O-Hò´Æ™~àšƒ¢xœ­VÏoE–\R™ŠrhQ@z9Ð¦’íØPT‘¤(
Uâ4„$EjSPÇ»Ïö(»³ËÌØn$„Ó"îHs¡ÿ(\7\‘¸Ó#§øx3kï×©ªª–líÎÌ{ï{ß÷Þÿ÷géô§ÒÏRY¢êW%v¸Ò(OÂÒ`¥¸dþýhóƒÂ
TË3 °;~eD?D C(ûLóH”g–bóûæ%£>~<áïÂê]sºúªý^8¨V=yˆG7.zÉ=]îè%øª¤Kæ³ÕÙ¢HmDÞæÒ¥§m$A`ÎÆ=m$¤KOÛx±Žƒ›}ÛÄ.åmÎ;ŽÞžâ¦¹ö«·ßEâ*¥&ãÍ‹Â	¸‚žBtc’*ÐÙs$Ë3ã€y,O3P šezÎ¿nN7ÿ`ŸöQJî#h
*÷¡Í1ðk°Ñ¦\tÜóC.Àë2É<ÄÇ>÷°âTuÝ%L1m‡h÷éEâW=.Ñ7Ç[WÎå•ùeëÝóš‡†k=bTèBæM<Z´HôYŒ¬zî«J½ÞhÁ<¯a­·SN&Ý^%Ž Þ¨§G‡»	_™£I‹Š…!’TI¤‡ÐŒåðy#ü…¢û²ú2¥"3MÂ¸î:£n¤t>!,CÑšœšiæj”rŸ=T•<Çº5EÒÏ‘Å'£ °ŠtDD›yÅ0ñ‘å—7Ç^I’ÎÖ [ÄÌo¬7×ï\ÍÜ´¸¶qj[OŽh<9~ì4Ïw–Õ|¢æÛ8x	zg"î>¯Ú‰ØÃW[òT:zí%(í¸ÎO×_Å!”ôW—‰ÂJEq¨>dÔëta'’­H)ØÓy‘vÒ85¸„3TÏp ¬ƒ©ÙÖQÅ…þ¢zi!„‘Ï)ÅR4ª”EØn£§m]Æ2òPÆ¡À“ÎK·#;‘lNäigg+‰oÞØ{d~ûbÖw¯™ù{K÷÷¨6³íQ™Ö©LkyÑ)º´7R€ÌŽV;f“Ù!™ÐTnv×£Mi@¢0ˆ]Þ‘¨QÀ›æ¯{K·§jL	TôñˆQæIb‘B|ôf½¿in}þá¹ü­c5ž¸œ¬Æ³ÏèS¾5{cµX²,©3Ýe®—	N;’!åÙ:J&[ŽõKgµáüö­3Ç­ùçàÑÅÑ„byó•÷«×Í7‹$Ü~‰›ûÍ¹×Ü¥hš_¾=œ2ˆFS‚ÐƒeWËô›vp®æÎ¸d`~m×Î5*(ô­?Ÿ+Ö
\!lûy2_ªk;Yõ<Ñ	Ê¤Pµ&Á¹5’ëáZò'ç¡ÿÎ{ÂçÓ4¢Ø‚¨Ð•Úf½€ª²°9Ô]ö®^Y^ðyßüÍ¾3ßû¯_ ²Ç,Œ)¡¦'sþ^é¿óSTåV‡xœ…TÍkAgsh±Hñú”66š”D[Åk·%©K©iDŠ N6¯ÍÒÍîvfR,Ú«^Dæbþ	j%7…^Rü<Ø“ÍÇ&mq/;ïÍï÷>~ï1Þi¿>h»¶ÖMÌµªE±ÆµÍÉ†!þÞÏ«Ÿ!Ñß zýæéÔA5®›bG7®<I$<ºŠ÷¢6O«St…§a(—ø¤Kå*”:5Pš.±§ùH™ƒHÿÔ@h¸ÄÃéa±?ým«^˜n¥BœXªKÀ]ht@€"CºN¸å:à:ý=RAæãàQÄŠÇ;`e´KmP?)ºT‚û{úÒÉðÚ-2V(#,[þ-óÐ´ä‘—>³J):\‰«¾PrñóÁà–±¬pFf.³E‹ËÎZ`†ÜïðpûMêp{,'ˆh÷À3“÷ÙfÍU`UÓD,±pÊBK62nmØUTáN•¥’ªpñzöšØ2º4O¬eb½¡QKûŒøjt-(	ÅA&Úœ‡n*]dYk+¥,:™LaÄÅÑ8D—B2•ìô+Áu_ðXÐT(P³¾6a§°mŠ²T?e¡êÈn-Æ‘ÊåX¦n%
[SûÙËƒM(UX¼Éº1ÙÞÚ—ÆðéŽå{ˆ¥l_´ 	(_.‚•ê‹WÙó}A¥&EÂ±ö%·¦ieñqþE$åÿ&.<¦GÈ<7í*³ÖòA£â÷Â\ä¦‚\l]êrØr®aÌ-…¹Þ&!A¾2”8œAÎ±7ÚXcŠuãHäÿÐÆ-v4™nÛmÌ0évPá1¹NfÍwÝ)'²YŸùH<[¼ÛÛz$H0˜ö·¤1˜îÆ“¶š»z–ƒæeÒÚÕÚûÜg­‰ÚÏÏŠÝùtw}3•íæÓG6µ¶Ÿÿ®ÕÞ#ÿ ·×äXâ„CxœUÏJÃ@Æ	"h°¡àuŒ Ås­Úªi(BêÁÓvwRW’Í’]‹‚àxÛƒO!
Š/| Doz7Ikÿ\–ý¾™of~_ÖýõÔ³æ&ÝKÉˆ~N¬«í±4¿;Çë#…àl 8A/¸†&,Dðó#v_³4Òå½µ¢ç·œž®À¸œPWRÃXµeçÌu%gª:ôJÿ]&óQ{¹=ˆÐç^§…À°Ï)B÷Q”`xXVÍh‡„b„BÃK_pLè0AA±``<È•ž†!”¢R¼›u¯ó¡J"Í†0³Ôx˜ÉŽ/®˜ïÆbþ¿hCÑ#*™n>ÚhÞ›«ö˜$Í8“°Y°Z£ˆ¸
%IR!Wâ äO#`7
öVYšß|v¼9ÑÐ¥!7›§o»Ý¢ëî,€•cxœmRÁjÛ@%”&T‡RÈ­:øÒb‰RÚžC¡¶“ƒmaY½t/kíHÞ"í*«•“@À¿PÐ—„Òï(´?ÔÑJI¡ä6³óæÍ›7{ûêÏ³ïÏŸ¤¢ôëŠgx;ð¼éçùqôi6ùñáàç£7÷U`>ÌÐÂ
“œËb%-œq%r„¸4oÃG‚ƒƒ³t#;™à¾2Ÿù¨DfJæKq:ZÄó1Ü%B7¿MvtÜü>|	º¶em™ŸjSp{:šÎ×Vƒ‹›«£û©6`·‹/s„ndr‡j¥Ñ;)¤ê¤VÀ7Äê_¯*HnQÀ¥´[sž`êJ§® xûª¤jE3ÜSUb"SIí%jÃ©™]—ì$ð‚èËp}¾\D/Cïníñ2ÆV¼÷ÖDŒ÷tYK´—²4é5ÒúšœF¸Ü¢ƒ5VVªÌéÉue{„“ ¹zún¿©Ó´ëpj--Äè¦Ü /œÔÕ¤H^wîõÿ?J_ì¥FØ™k°ÔÆ©èê4Ñcéy¬Ú,§/1lÓo•VmÚ´éF*n®éÀRå× Þiëy®`ƒí¾(å`eÑÜƒ§v2?É¥÷}'ó+ä(ƒ™<xœmR=oAÕ!
dÉJè‚4D‰•"g;m>ìDà( Hœ€RlöÆç·{ÖÍœ-¾”@…VâÐ#"—¤H™"=â±{Ç ¥Ú™73oç=ÍÙ·àÓ—à»nrø.58\eöÏÃµIaµ »è ¤ˆ$_$kLç^¶ÐþhÍÎ>m·j1¯Á	j	¯9À6ÛKwÑë0$LPrèI\‡°Çí…zYa¥1Íù¾Ÿ¹Œ'Dÿ€6Úøy¤ˆr$à>Â+¿×3aDŒCM2ÕZ¸w¤¸ï»ª•ùBEÑ=B²JMöúŠ\[†3aHy´ -ÔsZÄ¨üˆã28Vf#®V|i”)F¤Ê0fÐsî ýrúPÈ7ŠCŒ•1ÊÄÎD \J$²¿6ÏÇëñÆÍÌmfOw–a?ïÞ«L-²·ŸÌ9=>Ú^|Ã~ñR…=îÔªÿ;ô»³8sVt ñ|ˆY¦"„{"O.‹0IŽuØ2 !ŠP¦&"û¾ûu¡´Îé©Œ¸Ôç”¡‘B"¬¬ÚƒýîÝ«ÃiD8l˜¡Æ&„Vü-4íÅÞâøb;ø>üæÅå‚ExœëžÆødã†lF–ü‚Ô¼ÍŒv`Öä¯öÁ" †nU~^ª‚./—‚‚‚?H"ÎáD…¾cúä9Ž^¼ÑººUEå‰‰
5
ºE“ÿ9*N~ãh¼YÕÉ‘¬!ÚÙ„¤!5E¡¸$±$uóSgCfˆnêŒE“º+²‚M˜œç.£î˜““ŸT¦²8(1/%?W!¼((âX”š¨P’¯ rÒäB7µÍNîG¡–ðx@|ÐèÙÅ «L‘è.€>xœ]R±nAÕQPX:‰"0$Šqä\Ph‚dB8”[‚¤ „ÚÜÍùövÝ9¤TiiVBôü ’;>>‚’YƒjW3óæ½y3¿>G_¿DßÞF±CJÎÆ$G—M)úp5ä÷V"Ä- xŠøžPç˜Cˆ[Y“±PðG@€xõàû•Ž·ÓSÿ)][ž?ÒQomE½á‰—i‡“×ý´»Á,¯’Ðo?$ûÃÇG«sX¼J7Cýôàa]M/™ÿë9
4ÚÈˆßxV"H]7gR)_ˆFG¹Ô;q+U„V’cT“m ÌæªÄ2S!ÖT<a!rVdBÃëSWc&‰ùœ& â–B=¢rÎ&2wÎ„R`²F	bg]Ù9«•9j’Å´¨ÐÕ"Ã©9t×Z•ÐbÄD¨}¯ßññ£7þ^ÿVkÉ“ºñŠm¾ÜÜ¬ÃðBÍ5‹MuÓÏFßòûýö´;Ø‹.^XIë%*eàÌX•¯³iìÑL_0yié¡Ý?™°ÛÞ¸{gw¯ç˜Ë:šU‡›éX|×H‹Ž¡cÉ…®©kc‰7JX
µiFe ÜÀ¥ëb¡[þr8èbVš+š>‚WsÇVoùçð2ú¿0à8‚pxœRMoÓ@•H(U*>	¡A@TÒ,‰{ ˆðQÒ4‘Ú"*.å´ØëÔÂ^»ÙMÛ$N\z {á‚„âLë€Äàg~ìlšâ†Koö›yoÞ¼ÙOï­­¯/¬É4æŒDÝHÁ¸—m[/ïa»óË·Ž"@Š XÓ ,QN»,b\Â*–Ü8Š(÷Š…»ÕDýêL©/óÆÕc‡©Ìy2	ðŒTPW€Äêsí¼™+	CSÄ§F­÷J¡¬/?]*ue]SõÆ©•LÑ£’’qÓÑ^ù×ÂQo™“Øªæ­ìUcÖzÝc}&$óÀ¬E]Äü&´}ëlˆaKÐc¨çX¦!à¨
â>Dt "anàŠä`	´‹®\7:æ?#¯b”žô%l©Ÿ×²GŸOX¡*7É™#+èÔ·¸`R52Ïû¾ÏzêêÁbÉŠÕÎÂ•S&A7//bŽYV·À…•ÿ‘4‘‹WÓÁ¢H½˜?ÈtðlÂJÑßD.´vÖŒË'‡½§ó®6§Ïýd^näWà §QH(£¾·ÊÙïÖžågÔ˜Ñy¾¶‘×­@+çk/½Û0í†±`†sN#&ê2|¸véêíY{®.ÀzBš®;j¦³hóÍH“¸€±÷^õØf‹5 \Ëú+[eëj·ý§|LBmÛÎö;Ö_X1øã3ƒ"xœmRMo1Õ¦¡•Â—h€ÛH ´EÙmCJ	’†$Ê‰rpâÙÄbm/¶“(¨R•¿€ÅŸ€	‰ÿ‚\ù±·I@¥+ï®íyÏïÍŒ¿
~}>÷‚“SL¹¿ý½µ_b2â=n"‚BT ¹Þ¶O¯ÙÉã/µµýöêë(âR?,§¦úüÕ^¹gªp‘¶“'•R;â>dÏÔ®àÐ^¯mÜt(J‰R'±)Ì6ìûÚÏ¥cõèˆAzÈQ*b˜°ÊåçôÔ¨Î°ËÖ…Œ(ÂÑ *†Ž¡×bØï3n˜>B*‡bÂ!ÒEÈ”2Š©ü;"êˆBWòÌÜa)3c ŽŠáBNQ„zžéã>NÀÕsâNK”oÜ»s{³j€Œ<R&ƒãù’])1•™O%†mzÐíWÀ¤3Ãda×Ùá>õ\‹Jt~¤™[wEÃ®C…Ïi^—´ô0:p»^¾ÃQc§’ÐøÁzfÏ·7§v¾öÇnh—[ì·fÉžkE´ÎRô|…„Î(Éch&0³’#­€o/ŒXšBñçó[•?Ú¸ˆ¢®öÙÀ¸¥Ãq{q7²wë—sÑ[³/rû¦q¿ÀÁ®×K>²Ä¥Ÿ¯ÀÞßÖ·­÷)ºfJÅcû®Q.èyÚÆõÕ•Sy/ÿ»2vùYkºÓ¾üöâ+ƒ!xœmRMkAe.÷’ƒò`BÀÎêÉC61ØìF¿’“^z¦kf[fª;==.!^Åƒ‡Æ‹‡ø„€wÿâüžíé^7S¿WU¯ê=æç‡äíûäs™\)„fmÃK¼h’Ùî%t¿ï?`¬—À-<Å¼â²†c’&œD…p&hïK7qþÎpu	I”F»'Ãk	º_ÃÍ•çŒ>c™$nNá5°Ì×6=­Z«[Ë
ejnwÖ+»}ððh½´Û]—‚9áÞìÿ8ÓF½’ARì–Š€g^ ìÿw_ÓKyÓ¨\r‹fÒNCçãŠçX#-Ú@¡@¼ÆFûbãw¦Ñ˜ËB¢è¥£­á”#ŒjõÖ ¯Ý§Ã{®?Ê¼Ëoc–FÛLŠ÷}|ÝÝ˜,ïy\–Ý xd;UVùÔfS$0xÒbc%•au¥JÐ] _6’Ìn¦—ºåÉÚ†‘­{²¶(¢`¸ÛzgÜðé¸óñÝ«1É˜›û8ºµúoîóbogÏp.ŒZ™pQ,vò¬w©CÕ ïŸ·ñ²Q4‡Ê&Þ¸-xDÕ)(Âð3…/®ÿ+›s‚»(x¸ÄÁÊ/Þ¾Hþ _ó ïƒðxœ»(v\x‚”Tn¦nrnŠnqiAA~Q‰njZZjrI±nN~úFm.F>_Ï]g_—ÝàÐ€ ÿÍÎŒ[™£qkQˆÑUNÍKQðóMUðõTpÎÏÍMòƒ!j@lWˆz z…¢Ô’Ò¢¼b ]\šSR<Ù‘U×4F773dEÌŽ˜%1 [bÒ‚lRRË2“Sí¢ctólÒr'Ïb•2Î-±‹åR  uz(ÔL.ä™¼‹ÕA›°k42S34'+±©16»³me2Ê+ËMUÀïb} sõA
€Aä1Y…[ Oyôî	€sxœ;.¼_h‚SZæFyyF>7O—ÝàÐ€ ÿ ÝÍ>Œ[™RåE'K³òie‚K
ò‹JóR\ÓÒR“KŠròÓuŠRKJ‹ò€TqiNÉäV]f…´ÌÉY}&+²ÙIãÑº¹‹í“_¾BjEbnANj±BejIŒšÞäYœº ˆø3Æâ„™!xœ»5•ñÿ$ÆéŒR¹™ºÉ¹)ºÅ¥ùE%º©ii©É%Åº9ùé›+ËíðÈOrðªÇ-« ËË¥  œš—¢àæ›ªàë©àœŸ››äC”+€Ø®-
@-:
„AQjIiQ^1..Í)a,ž<Íá°´.ngLÎv”cÌÜë(ëž[¢–^bvQ Z×C¡FAW7£èjÝ¢ÔÄ”Ä¤œÔÉ›oöŒ‚FfŠ‚¡q†&/HfòN'EfP ÞtZÁ4¹ÛÕeóM×Œ“ÿ8ñéæ•å¦*à	Hý”Ô2}"]É.V›÷yÊ0 ÊÔí€xxœû?‰ñÖDÆéŒLi™“D772–ÛAÙ“…¼ L5f7O—É¤x‹RKJ‹òŠR‹KsJ&ßq8Ì¬ U¼ËÑy²Óu¨J	6…Ä¼^®ÍnÎÛXøüòR+srR‹*S'ó»ÚlNöa ë+UîÉkxœ]P;KC1¦È©ƒ£èP‚¢`«‹.N‚-:Y„.1ï‘¼¸'U;õ/wõ?ˆˆÿÏ$m¯L'_Î÷ÊûöÛÖën¡ô”Êýv«ŒnÇÃÏ‹Ö×ÚNaÒ…A¸3†Y19èÕÝ”ú®8«×;ó?+@%Ó:ß0€`ABlq!rYž1”J	ä%G…²ÌHòŒËC:‚àÀ:ûä4¨e”Èb¸‰”E>æ½Æ¹¤´ºrn”¯e2ñº*½g£é½A"tœÊÈÿzYœ;*§µ¬À°YT&·2C¤3ÝT;éDý¦žªœ‰èì§I}¾q9ç†³léüR¡Y RÊéw–+©ØT‡\ïôE-Ï1 Èã§Ø‡e¬DNýEŠôvïºßî‡°×¯ùæè†¦®ªç€é`xœUP;NÃ@•K> Ý@$H4((háƒw7iòl©rh"qŽH.¸§¡¤d×vŒ²Õ›ÑÛ÷™íGöùžmçÙÒ®Ÿ-'ÜüÜ<¶Î‹ Z\:cÐŠß~õ¼Ëéló=mÖÏ•Üç W¨u;Q !mØÌ®$RÀ’B¡’EÎ^–¤(î,ÉKyÂ§Xg_Æ@ZFA8‚dÙED¿öš$Gb‘ï\£'àµL&¾&W'¥h¼x1ÄLÎ‚Síf/û¨È“xél¨Ö²ƒ+@Íng(…øußìØŠq”Ú©Ú™Å®þ‹4GwY¶~j®ZOç{$@¥˜ñfRáB‡®ôïâMõïÈ
*ãmì¼Ï—4ÒaŽ•®Ç~Ò\ÝÿfÛÍ³¹¹ÊxœµY{sã¶ÿ_ŸbÇéÙ©^¶/½©bßŒÏÖ5jýÐHjæ:ÇÌD‚"r$@ m%½~öî EÚ²’k-“Àb_øíð«`L§ßôY“òÈ»Œ÷bUd¬ž:+M¢Š||?ùp5³ï?ÂGÍ9$Æä£Áàþþ¾©p©Ôç¾*V­¾p9HL–üËïï\ò‚âw¡ÂwHæ—07ë”ë„s£áNK–ëD8ñÜ+Î:îKnok¥á‚Tzx88Ž†GÇÕÌ“%KGpýÃ÷/ÕÔ\•EÈÝ”»drU²Žå*:¡áNñ=ì!Ñ8è½¿™]-ö`ï7Âöì<÷¼˜=Ë³÷{?–Ë7pÁc!9h•qÈUaØR¤Â¬A›2Ž_PÒïÇrñÛµ,Wºñ¥`Ò‚áÛá›¿¾9nR “î¯diçY&âŽ;°¬
ÇèÞáßzÃ£A¦WÃáðð¸Os/¥©àÈýþ
ú‘†³[öÙm§ÏS©jôÕ‹n¤æ"³25àÂË¹zA‘Ðl™b@®ó„Kf„’¾LZs?•ÚˆX„vöYD`ø~)Hyl cÅJHP2]tú,‚ôEÝpu6¹†ó›ëÅøzóÅÙl1‡ïÇ³1|óRbæµgWã½N#•AÐƒ÷î‰I—"~'Bîèçÿ¾¾™Î'sŒ]£×âNOh¹ßª žÁ‰[ð>½ 'YÆuÎBôDtz"µˆÞÂPŒ÷òc¶|ìÚtÉâÓúvKRp/;–,S~zZüÌOOìÐ³]¾„ÆÈ.&šëÓürR5Øçô¹HOOðËÑç`ŸwÒ¹£D½‹8C]2¯Jô¸ƒ¸à>DZÀ2Ü¬ï"0"ãª4§'þÁ‰Ç:S¿c‘Š…ÅÅx~>›L“›k‡˜„7á+Ì[²‹Ñ-#B–ÅŒÚu`Q†!ª,c–,‚¼Pw"âÚòCë0+èàÏ}+fC5ØrV Ãh9•Îµå‘±5,9p<Š…	.	i…WqŸ?Œ`€/ÒnxÐ´ƒA`pèÙN-P/˜ÄVÀÞ¨”÷ idI”4…JS¢Qh Ä2®ËœjW#ïŠÉ4#Â2eÅFû“‹Oç‹Ù%J}}Ka`˜Ï0}E¨:ŠÀÒ´¹ä^àû²ŠUÃ#¯1­G}ò‹übRrc;n‚¤”ˆêf”‘ÎyH#26‰¥§lÐxÊ*§$ú'Ç-;––œ,>ÄþCiÕbƒ¸øT„CmnmÅÆ¹ÏêlM¯Ê
2nN.H›'|=Óei DÌ¢ÉêŽ…ˆïÆfl¼‘2¯•á^™2ã…qgãX<`µØ
.™üe9ïÈ!9Ãaƒ±®CÊõÍÇ#ªNDL;çôM[©u±@Ø ùMœ¡L®Ûˆhá”$//Zîq|ƒýðV;ƒXZÆ*¡4.Tæø”K½Ö†gçwá>aBz¡Ú<Çm&Å¼Ç7ú9›u¤È…²Á´F¹VûF4x³žÚ:­‘Ã’i¤ó³ðãq³V%:°kÿ’ú¢(ø
ók@›4æ*f­ÅÍ.¥†4¼˜joo$¢ó´ÛaÌP+L=aØÀ+„.nMŠLjÍáÝå?g³)p*4)¡Ïå_Lg+IþkÁ±‰ó¨@ÚœVð¼Æ¥*WI×íû™e9X fÉZÓ(lªžçŒ¹B¸Œóˆ+¹Æ2•GMž!æmÒrêIíyÛm+›VïÑ¡±Ïû’ß7dDÊÐ³K„³ÌNÝ3MÁ W›$‚Šù`=NæÆÖj:¦ÓÎ¦sèÂsF§?›ÃëÎüQB©
K¥ç&Ñ*‡{ïb½ÔÎ>æO«âR˜ZWVžV“RÖüÀKlWWÏ\ðÐùéÓäæ|qùirq`MŸ½ÁUßãntEÞÎËwg¾–Žœ(3jó\: ¢FbÍs‹O„(2	¶qÂØÐ¹’Øá{¢Íz]gŸˆòMN\Ð®µ|³‰p®dœŠÐø|ó¨Ol¤1¸¥±ñîük¥Û^h·oÝÇlší^å˜wvdŽ#-ÇàCµ¹UQ"#*‚ÝS¹µËH»)æu´CŠÜï@°)«6šyTWøTÝs¬”˜1—¼° ÷t<å!9¯Â¡—¡r:ð»2²ÍgVfÃYßøÕ9¥n_ë0Ë‚ÃØ¦¸9·}…~)÷	·pf¨¥]å£NT‰t¨<êHê’™Úæâ*ÇÕ©ÁoÖ9¯¦Z¬ZVRqÃHUWôq
›Ž»˜wV¬Àú£5ñÃÍñ‡2Jf+üíZ	›µùC®hg¬›aè0áõ{ÄQ€rðE:LãÜ„ÛÁ·˜wx©ËýÑÁwŒ×Ô<÷Ýï,~éü@¨è,¾ŒðÙÞJ{Ä\|¡É¡Ÿ¸VÏxÍ½EP¡r~Å¡_ñ/òÈ(»‘#8kº	wˆ9tY~ØÃQ]Eœèj6¤,6¾v²}]ÆA¬åT<®m¯ôEÿg^`` šIŽ’¼~®¹h÷·´Ìã†v£Xç†jfŽ]WáÞv«ðÈFWö¼;¨n´A³\Zn¶“õþ:òþ:o‰ù->kkFÕ´Î‡øÃBÌh9]z!år0J¹©j·×ƒöï3_o”9ö¹|ã5šáá¬¸sÛ_Œ©›€ÃFûƒ£âúLéƒxZ`î	­„‰t±FÏ—>FTÖéì‡ÐöÕí!5SÕ	ªZ(­óšíþót¦`RÇX]ÐÛ`f6.V	æËµáexübäWßd„)g…Ë²¤ÑðÕ(e»ÚQXÜ¼r»=šïtú¯¤Nl:ð¨¬‚ugMCj#ŸdÊíæ¾H^úÚì4}ÖóÔ3zå§ç×Ô»º KÅéo]wT…ÔW®;öë^M(º‹	ã!qå1µ½âÃ“ ôýnÆ-ø­Ê¨-`Õ¡ƒH±<Õ)¨°5®¾BjH—%˜ç—xÞsÇ¬Es­=É0-#þ(»­c<“›ö§“§ö¯`ám/¯¼›'öèÄÀ]h¹Šå]q™V·ÈöŠ.#0¥o¿vq–ÐmyþÌ‹úq¨ïª3‚ÈlGl8¶ÉÔ8¨Òài¥þN†H•—~	h\”9ÓžÜ§yÙ7ÕÙ¢¾špó®µ´‰TB†ÕU`·@Ýx-‡ÎEãgWÓËquk9Ò½„à— $¯zÃ×¯‚ýe‰¿
ÂN?øb/ð‰€@ßCÔO¦@DpÔ?¶óþZÎw¬KMf³ÍŠ9‘;'Ì'î2îü	wÂ­K2wkØX6v‹fã?Ä†ÍÆ¡ë£Å¿Õßú`ÞQŸþ?‹·Që&ý°*9;Ý2÷ÿ]s»<m´Ü$!èY“t)ïü‘TCÇ¼Ïxœ¥XÝnã6¾6Ÿâ {‘¤µÝ¤]`lR “¤€·ùC’»´DÇD%J+RÉ¸ðÅ¼ÃÞ´¯7OÒï”L9I`‡–xÏÏÇïÒ<–j²¨šRºÝƒ=q<øqury.&ø³™Hú!¤¡«Ÿ/åêQgJˆ»ÿ\]ßÜÍî¼ˆ{ÿ¨«>ˆ–§ ¿CGAà{z?™Y*[ËLMt~|d¬Î¿§5M…ñ1>˜YÌåâøˆ¿ýŒ‚Â8™1/ªì—‰Õ¿ªã#?&óä9%R«ìñ¾¼JK~˜¼®uq|„/ÿº&?¼æ·þ¥æ—é»ŠË ·$%ïe•ã7%OžL¥œ.UÕºã£8ðÊm~~âìüîôvvs?»¾êÃÎ‘GŠÈ-Uš zÐÊŒÉ*“sî|Nb*¯º4ÌKm(«ÊRš\à?ÕMõ¨se½>˜ÞÎN…¸Ç¯>“µl Á©†´%–”®jVÄâ¥\Ñ\‘ÒOlÊ–É !¢u»êÓ!}ƒß°aû{c‚’z€PÈàË³ÍÁÞTÌ^}¯¹›“¢ëlŸR×TEÁs*xf*G¶­ëªq" Ôió@Õ‚s:kÙl,±´;;ûxz{1ýáê„æÚÑ>)#ç…Êa60$‹B$Oº(8
Q¹Ê§kYÆåÚzÙ(Êö¢‘7N/4L-[ëX‰­UÆOr¨uK?'ÝG;TÕNWæŸq&ò eÑ*vhÿÓ"~ÈU¬ îm<‚å‰«ÞNžà£/žEt`,%Æzsµ€«z5;c[z½[·Ž2 ¾V`FçÐ»qÖBMt8¼ªœŠv´¥jt†L.úUæE8ŒÙWRŸdY*o‡´4*®®ïñ<×™t<‘3Ì\G…‹"ð:Á”€kÒ¬hÿÔö`à”îÁZwlðC"îìEã¢©Ê ¢Û•uªLÂ=¦§¥Î–l,V5ÒÊ6…‹iÐ¾šÒYå¡/­Å’ÞæïÑÙF’Cm—ºsi»Y·„‡Èªj´±ÿËvë¦QU\¯ÎXt’%¥­ÑÆ±‰y\i¼6p,C¬lH&Xçœp$[WžÈD}æ*zwñãííÍÉ-rTe® ÆD`PPÀc8fÐm°œ7À™§ªFe'eªöa9IæÅpÅ¶Î`×reù)m
Š×ÐH†:GÄ;aüÅNhT	T{.
¦rÐúpÛŠÁí¹ò	q\F=%+² ãQ[â“~ùWOÒ2æÍÃ†`X$t´/}‘}­=</Öc<ÝmñDT×™—P‹0²yM¿…Å¨µÁñ¸—C;jÄä·d¨ÛûUŒv[Óëß£¸â°„²öÊËùÇÙõéýÅÇÙÊ‚è{ïaÒG°gïNb<Vc•"ï
[œ'%Y×ÀDä4¬&F¥Êµì¼® }[W&·Ýœ¸í	%ÇÈgv4r•á.[tZ™E¡3$íqH6ØµÆMÅè,Ó/¸Ïï÷ËÝ‘Á;ÿó?1À K]WHØ‡…Ñ¾Ð(F}x¦tF†GØ#åáM	ô›Så}-.ª'eõæªñ U¡2T²¸DUƒP<ùo…GŒBv“Èˆ®©ó!è»½ é¬m{rºS¾âÛW0ð´T›F±”N³ËªÅD›Ø<öËzíêÛ¢ë•ƒ·nUs#¿k‚	AWâ×…ð¡æAê2ÒÑx"‹Q£dƒ‚a-/…dxa4FÓ‡éØÇC3Ù¢ÒÕg Ü<£LfKÕ?ÈÔW—˜V.ÛCëkñþƒXoÄúgÎñ³µÑl†Xï¯¯ªWíýˆÀZb}°þ‰}:ãâàSqH'©£±pðJÐ#q1Cnm`ž*üT¹p±ÃÆbˆ‡( Ìß16TX VÙ_Uƒèñ•Aââ8â~Ø5²PL9@‘5«Úq¹ªQ„EXüÉw´å]¨9Ñ{¦íAVù­2^:D±þv}šj~S€ÄÀ®^‘—ðOf  Ê.±ø|…¬Êuu2.ÌùùE­°úw_>ÿïë[œUšGNÕó´“èE~{õ§%Þ^7X óêf&l_DœrÍäS€õåóo_>ÿNñ°ÅÄH'r>2i—¼™H[ó\#] ÔÀè‘¾Ðzg¥– ®•S=8°H¡¯ßY¡dÈöìG{ÄèõuÞbœDÑžBþ™9Ïè<œ.cãø•ÿ…¡O\5Qì›ÇOjxïÔ6_½–—ÿ!n^-÷QÑæˆ×'öI¸gCxÏ¼uò·€ø›''ÖÿËý âQß'*^ p¢.cf_.3lm„ØÎu€x	D]‰ñßõÒ¼Ø{:Ô®Ží­%èOV#«ø|ãàÂç†ûTÔ·û&+Ú\½²P­Òƒ½Â»7³½`õ[ ñAõ7'Ò™?H
W)ùãùaÑ±êNé’ÌàÊáIÈ}cè,4_gÄûÖý/êOÆ]««Kßå9…Þ«f…Cê“lL¼(à©šÉ5ð›W™ÜÕxëŸ]èðj×]WÜ–ÃËÐ7›•(Eµ”{Jè=ÿ÷ÉåÍÅyrÏöUw:kï[kÙ2¹9…ÛCìÎIzIô7Jîå·)Ãy_‹Í
›óêAèI“J”V{¡¾Íê	,ÞlmK(ôrü|¸e­à@¸¶¼I1…éµ­vJü9²&'¾•xœµWkoã¶ýî_1ÈÓÚ²´]Ô7»€›8­Ø1bw»Åªh‰²xW&’²×èã·w†¤üÈ¦íö6W@KCÎãÌÌê4>ÛˆðN×\Ø‚÷A®W¼mÚ‰Z­ÄN:¨l®tÞÝŒÞŽ‡}`îùgxg8‡ÜÚ²ßél6›(UÉB©÷‘ÒËŽM—_u¸ìävUtÂ§ï;.¹f–ô]«ä[\og·0³Û‚›œsk`m$+M®,\íµf“E’ÛÎëßpÍ,úÝíu.ºóîùE-3Y±¢“7cjÑLU:á^äßÝ2¹¬Øßå²&§×hþ=œà¢aÜ¾ù1n_ÝÇ£ù	œôðooðÄ­áá_0uâô¶ÿíå´|×<’ƒQ+¥Ò–-D!ìŒ­²ì-ýþo/§%¤lQ-M”ò…`ÒÄWÝ—_¿¼8\@[-eåäL'¹Xs_0K­²áí~ÓîžwVfÙív{ÉžËSÁ!–Íh	Qj`ð q“=4"^ø²ªßž>k"·òŒU……Lé³VÈå3šH…a‹›r[æ\2+”lD2?’ý·2Vd"qRh²”^€åð¦ à™…ÓK!AÉb{ÖˆX
Å³Â0Œ&pu7™'s˜Í÷ó|?¼ÂçÏefF;OÇŒq~0<¥H×\‹lL¦„2¡W¦9ˆÒAüYäUÍ~šÜMg£¶µ)Ð¬g#ÒÙ&ªãì.S¾	ïâvÜ6…²¯.éþ~EËüÃÏxâr[XBIyuéÿûmêÇ¿Ø¸(Eúê9ÒÆí’i+R¿y^"	gÂGu=œ]Ý¦óÑÝÄv£4Øœ{Îô¡À{R¶°r&&Ý€€›¥«€[ºÂj!˜[•B©ÕZ¤Ü8uš,xãÐD+óücõ^a :NÍ%fÍ
‘>JäÌÀ‚s	©ÚÈB±”{ë¸;dÔíÖ‰¡ZÇ÷LÉ*ÿ½2J
:äX®•?r+/xbÿ¬îµ“J”KjDI«UQpMñbŸ7¯®PépV3i%Ð@¦Õ
™F=ôâfò@ªè¡K-ômz5‚¬’.ÛØ‰kd#§¬Eau0;
íimgßa¶`V-ÌÖX¾‚{ZˆeT†."ªà:Ì¤ÒšK[làIE,´s‡á° J°\c†]ç¿=Là}½8¼H½=£µSú\M™Eô­®[áFôPÈ”hõ
y¬u†)‘ôéÀPK(´$ÑD!PÚ¡á›ƒJŠÖ'¬ÀÈ,{Ï]Î}>H¿¯élr‘ä¾Ø*·Vó‡Jh^—NY`Èn)_{°¦n¨Œa”Áðžk‰9¢šK56
:ãðK0zàRUË¼E+!ar_’µØ¢¦"øÙÎOMûàVÈê`V3Ó¢a™bäXßsÈ@BüKÜˆîgð%òæoŽ—àð$WÐƒ×ÐÁÍ¤`Æt¨mÝ­Ûñtœ1Ïª†^x"b%•}*´(
læ+µæ–¦˜ûÃ‹/ßÛî˜õÎÑëtÚ8äº<Á‡!Ø@÷²ÞùòÍˆ'T†#\â"4­ïåâØ›áÈ-¹KvEm(1]%õ‰ª–Ï#þ)–PQïfÈ|ÖÀ2[¨èÃ¢Ù?ûO …ý”{Ô˜ÿÒxÃŠŠ7æ¿õñ·;::Á$ìÖ‚½>8Í#æ Þ}Ç-¶OtœÑsâ¶øÌ‡Fà$†{ÿwÃ;£Àìžj]éîÝ8nÌÿ‘±OVñ‘úºÈþN=‘
7ÖwÆ‚˜«OþÄÚ¡ºSÕGf¿þ$pñóÉÂ”F»«ô<{$]ïf^3c¦ßÿµÆ@ÑßNk%Äà.$ßïU‰ïä“›;40 •ÁP4©@ÏSŒkõú4äýà¬šüÔ>ÌŽ:ûhvû79¶ÁìY8ÊQEêXYXxLNËÖÔ`‡Áè"¿¡ÈG}0Ý½äXeø¾4Ý½‡s·¾<£Ô£C;TI¿è‹ã…OàZOœß8Çh¸œ•»œýp@3|šàçô™÷zøv0žÞë³¯Ÿ6øñäGFœŸ¶»_žÆÍE…?¿è^œÆ‰Ÿ!84ÜLÁ´·1ï£)Ð"8.œü`â„²‡šm5c=ïÿlÞ½€GÇp çGÝ¾°z‡ÃäüÏ¦^ñàv4á’ÞºmÃWÅúª Ùtw¾âÎ‰¸Pc}T×þWÊ·³xœµVÁnã6=›_1À6im'Ù] Hd“,``ãq´r ¥QDD"]’²cÀ‡ý‡½´¿·_ÒR–¥8èöRE>Î¼7óH½(q-‰)Kå÷ŽöÅéëãóë+1 ÐpÀoSðhU¶©S¨“)[.¥EP¥|Â¡Ó?Æ7“éh°Þ­sø(Þ304Àïá$Å…JðWzÂßg°†ƒøü(z= EÈÄ+£OOâß%aó_+n6WééÉÌ?˜KëUBgÐ}õ(ÄåÕôâv4¹ÝŒ›d9ßÏÆ‚ÏÆ÷×1ExRÔ}pHµK¡’Ï›Ò/j2ÒRéÀ1$˜¥¹5•¢p]UxGÝå»‹ëe T]º}.™è…,TÚÐ-ÝK3D©YêÂÈÓ ­®
«-áˆ&~/ÁÍ1Q™JD£S=N+7ÎC)WTi‰‰w%na3`ŽBãç¯½5E–E{Ã«1x+µS¬‘ƒÌš¾ýëèû×¿†é±O9M.F"«t
\`aú\Î	bh'Kd5»Ð;¦ÕÌ­œÇn9~_#¬1˜Œ’#6kbcyIe-j_¬ _0©¼ÒOÛò–¨~1cé=Z’”8™û¶l·›àLa‘ÆÝF)¡³hÛDE*=qîm•øŠR~J§*‘žp•î¢NIéÌØRF*Ì•kl «l !6=÷Š¬¼áÐDT”—ÏDŽ0tìß>,s•ä´BT®
±ÿ¬”ÅM¯Ìª6¬`ðEÜú7Aç†0Ê`e*Ïh5IÃýZ	J%—PÙ€ÚTOyŸ#!‘zÛ­š­(W1ïRl²´¼¾(]½ ‰™¹>$‘ä´ŽE{:Þ&¹#8ƒ
?H
éÜdø:<ˆ5øîZñªbPÿVKU 1òc±4“%ÓTlygÈbo.åŠTº	~Ò¸ŸhyÔñ±Øq1z×«à<¼9¦>¥¬bWÕ“ZH­z˜h
	b‹^Âz6[6°T>ï6×(„\Ö!Qõxº4ÍàœÀTŽšã•Ì™p·F‹ÿY<<Šõî²¾—E…ëKÌ”/Ö‡ëË-RLÑb@s­¬·ó0[íÎƒ\#/õ‚([Ý©˜ÅúèÛ©Ùdlæàw¡¹hßë»ÿˆ^kú¢è þÒBÜ4Ày˜ÑùØ­3ÛTYbªè‘Tå–0Õv§_ÀÙ':0aÂfh¼dº¿‹ÑeLˆ?®¯¥}þwÚû>M6ëØCâqÒª99'
ú}üùfxÎqÃ·ÚN4—…0`­‹W‡°c˜v&ªs ÆÁr9¹#QOa²!ÑãÈÎŒöAe çó‚Ôžì‘ƒÜÿí
æý km’qò1ãð\öÂ÷‘ßàã>AN(Ø"›9Ú`ÑC6ÇÝ3ñêÆÃdt«ÊÌeÞ.v«½Nù°—b&éjs‡ûB\ý~~=ùrÕºÿýÔ>	È«}Û^²%·l¬–­¥c×ï {e¶öhòP+}§~xåõç_FçuBÆf(è(½ßÜu'ÍUÃ^ª›Ä©…ý'ÂÑN»æxœ­WmoÛ6þ®_qÈ€&íjIIÚuËÒnâ®Æ;‹µCÕ´DI\%Ò©(î^~ûîHIqœ,-ÐH,“Ççîž{áy;ÚãùøŸž¹0? yYòAÚÕÈB±¤ÛÖ&WÕ|x3~:: f¿„šsÈYAÓ4~¢â…RŸ|UeI²ç—AnÊ"hX¼_¸ä3„w¬â×(ïg'03«‚ëœs£áRK¶Ô¹2pØ¢wÈ:õ%7Á«Þr8f-wƒý0Ø÷ö»S&kVÀä÷SÞ~é¶fª®bî¶ÜÚ	“YÍ2\É¬:§eÏŸ¿…-Eƒ7ï¢ÁñôÝäd:<Þ‚­]ü»V¹e¥xûÑ*Û²Èƒo},Ê8æ©´*9,UeØBÂ¬@›:MPÓ¿ßúX”6h‹:Ó~Â‚I›ÏÃ?¼Ø_—@ªö3YÛ}VÅ¹¸ä.e²J¥)Òþ4÷‚Rgaîîû´÷P–
‘Üñ3ðÃˆvØ…çóÂ%V·ºý ÔÜ@ÂSVRU•Ì!³T‘Í–åj™sÉŒPÒóe~cïÏZ‘ŠØîÂKh¿Â

ž(Y•		J«ÇžÏ(”†ÓáxGÓÉ|4™Ãl><ŸÏàíè|OJÍŒjwx:Úò6»Dì<í;+
P0[UÄ†JIÛ	!UÙ°Šƒ(±7D|‡:ûc2=›gXáz‰Ü¦^”ŽÝ&êµDé9&üRÄü|ˆšðò°ƒÄo¢À¿Ñ˜6—?zpÇcA®R^½<4“ß¢Ÿ[˜+Ø\¾k3ñå¡ût 
º¯Ø¨Sáœ=ÍŽÎÇgóñtâüçÞtÄŒ‰˜k2cU–L& 4Ôš'”LÉ}D›|“dª	”IkSãR½L°»IÆJšJú÷È‡¯±£d+X`×¬¥0jr¤¢UÆ·ðÃ¤Ä„Ÿ‘¬Ödào5¯9Ù<¦·Ö5^UmKøkmŠÕRàiÒ(y³éþšÐäª°zñ}É*óøNú`l ´>£¬6U“×Èt‰ýF,•ÇV=3ÖÆ_Š/¬bÕ‹˜&Çf…ú)_pJ“ó#ç_ÎuBìÁq£ª¦6ã€ö&u¹À¸ µv«5R/y,ÒU SÜÖ¢%;WØ·´JÕ©sJ2.5åŽ=ÜsÓº(8Uäì’¯ÃµªÔ%¯
¶$ðÞ6[õí\ÂØ“­‚Fß¡;âŒB†°å²ˆÅ´tW_`‘ÂèÎ§¨S5˜…HSÅ‘Ð§˜EÜ²ÐiDIze©¾Qxº@Kò˜«ºH\ò”­“x
Õ¸ˆ.-n˜xdeû ïôÐÀ!^$úÕã¾{Nm/¡æyvæÝÕüžÂÿ4KÏ?ŸÁ3ïœ_Ô¢"Òª¬.¹4.ÖÌtÕµddª‹‹ëÃÑN|¡¯ýNm/°ÂqôJ^º<h¦ÒPqä|±rh•Ê*VZö4*Ý@&ïÎG­O·;±óéÎÞÝzu‡´Mj4ÆØ §òêÏv.»N›ÖˆtÍÌp*±’]õG\åÈ#Úl«í)v)ÕN&šÔ>ûtÓ«ëëÁy³q…Üã‡ÁÔ¦Üt’ÔÖ[àë^ ×ÔhÞXóÈ†æºttË"ô¢¨v=½Ú¥|«ÉjF"|æ•²±Ã_"
‡.œ}H›|4,]Wî" Ûœ"…¸g9Ëp&•=”Ã£÷ÃÓ³“Q7XÇiš”ýyQ¾=ŸmG;‹_¿÷·£§šìhIx»ž?>‚=ßîÏ»P±µâ$v÷~üU¼&?Qò§	r[HN#ßÁ­aÌ‹€–Ã®ºªÀ(»ŠÞ¥ÍuŽ†W8w‡¡›Ö´ŒœŽŽúiä(8[k^o€1Ä”«…áÞz š}î”„± xœ•VÝnE–Ë„%„ÄOA‚£þ„¤xmoHJš¨ÁI«¨MpIê"ª
Mvgí¡»3ËÎ¬“H€á û
½­Ê-â	€ Hˆ@åšsfý·‘“_Œ½3ç|ç|ç|gÖ¿<,ýû¨ôƒ,UtÄã0ßwBÕ9ü¶ôõJq+{ùê­ùÂ8•2 lséÃV{“Ãµ&ô´St{xõO¯°s¥Î£˜	Í’Ï{Âã3³wGHÃ“—éhëö&íWÁ0ñ|ÏFœöÉ­.÷=%|íÄ¬ÃO´PòHœðéâ"¦ï[˜›Û;3O,PãÓ$‹¸Ž™Çá[ ©…oò%8†;Ù_«¿ßÑTgmüR	Ü–â‹tzÉÁSQÄÈXú•rœ¨žð9˜.4©³¬Pƒ¾oÎe¦ó);€]\ ab­mO½.K˜‡©”óvÁ,ß_„:>Ôe/â9ÀlvCåÝ‡éÒ=ü®ùMé…Q#³³ë_:Úí¬½ý¹IiƒkÃŒÐFx‚DE cî‰@x0t¬b¸€¥¡Ñ`¸5€®Ðc¾GÀ%Ã@cáC rVý¦K¼:8nÕ«*:R%<·eaÊÖbh¬k•ò•z¼B«ïþ³v¡ô¶oÀ™ÖËçº~ˆùºçðx¬%¢Ú?IxË¤ïÓJè”ÎMŒÙBl·õY„,CÏö¾
.þÆÎ?å¾åÜÑ°T0ÍƒžD×¦8•lQï„ÖY}ýÅþq#s|¶Ó8F&,W3hN,¦L‘AØ~-ˆÂ(_Ò/t²ƒZŽ±ƒýŽ•Ö¢¿r*JŠV,¡‚x*­®]­~càµ¥_¤Õj ‡&'©„RPÒù‰èÙ2cImçB¦ëÎÿ·¾× ªé•©WNÏù¾¶úÿÌùæÝ÷—4ÐqNr"‹f-í~ÖÆ34ž…Æ~0ø€@b!¬K-W›Šé
™Ñîá—ôLWÈÎÆç1ê·¨^xÈ¼
{]áu-êoˆ„·ÏhÊ'Óa0âœ=í­ìÒÚÙÙ¶øÆà.µ•²ð‘ç¸èdš¯gO®ýý\›,²Ç×”Ün4ßÝT¨¢„{\Ì^žƒHÈÔà€x^¥¡U›æ&{¼ÑzvÞqçÉq¶•à-§R}ª×·Î¸ï¡ÏõÏ&Œ2˜0êm4N²é&*ítÁÇŸ ¤a"/X<ŒÕUi‚>•r!ÈðŠÌC-P¨K£Mºã¹)f%¤G±Ç'‰Ö÷2y}x’—Ÿ&ÔCÊ‹…#‡p#"N,Œ•}Od?Þx5?úùÈŸ†åÖkoìá+e<Ã–ÍºsÙv«}Äá§V#{¦õÎºª>O±kƒ[|u¤'‚â+püú¡2Yg¿µ.NG~“íIú) k‚¾pt—Ã_[_•þnCšâÑ‡IxœÅXKoEÖ
É&NDÄC
éâõ*û²¥ ŠíÈ	NBœ—gBÐ;Ó³;ÊìÌfºÇiÄHÜü @‘¸qÈ9qá/ð8DU?fzvÇŽ%Xq´3[]õÕW®ò_?T~{VyÚ¯¼†½Ÿ¾ªl_’ŸÒC«ëmü@š3UBÈ&]roãöâDÃ!]NDDhHî<¸ÍˆË¶|‡¥?®þ¼Šg–Ûlx‰ÌbI}1×Kä³fÓº+øV«¯Ÿ¦C¬—éÓËo·AvÈûž0)ïRA›ødNx¤ðÏ4áÌC¶›Ï…#}b¿ÅgÔ	#mA”9«d(Œ›@©:HQ×çR2ò<Î„‘Hþ¥—@ºDÎC%|aa‘ôv#œ9"Š¹9Ö“Çì—ŸÏTÓ×®¼U4î3!«M?ãRÈSú9ýóÊçCn‘±ÔüÅÑ–ï2"ð%ãI xúËZ=½°ÖË :SG°X‡—Ì³‹¤mÔØ©ÏT‡	¤ÐGÌñ=Ÿ¹-rÃ“ûþÍAžŒFQ,¸J …™724Rv¦ºí‹‘I2&QŒi„…„hH3,˜vhÀ‰BGAÀbiSÙ³’q¦êFŒ‡sï~¸¸ðÁ’0& P2„ Ñ>#~èú~Ø'âèçHË,b?Ì©Ò 		5G üõ}ŽLmÑ až
âÒXúíÕoŽÙ)žþ½>wb¢ÒßoÌÞ€2+”º:áµò<Äâƒo£~ç€‰¶Áƒ´Ò}ó€Cƒt¶{~ì‡^D²Ÿ¦r†àÛxH%Ã€ŸÆ.ú®iÒØQ˜0²~¨ã yD!4 ÜÌx‹Ü‰ˆ—Ä€(&p<99@,Æ<{”ø1sÓÇÝwÒçkG_ü&$d?¦C¬IS>“¼¨å)¦È‡2ÕÙ©‚'bF]âÅÑp'üÔyÓ,Œ1VgrÓz,Ft¾iUú&­Ðú€†ËœŒX<­-4À–Ï	üÃø	rí4ÔÙøÎ £[“¥•„.ˆ´JCŸ›N”„˜zÀØ=ä ¶ƒÑ¯k˜¹ï–-rÀ¦Ñu2“«€Rç? …DÜ¼¿v·{¹>éÎî…)ôü>É0™Çn
J&‰UÊ†H°¡‚H9gS˜¼·ª¾5F¯”D2­	œA‚D\ñÃQ"öH}É°–@RqnAßB¾Ëcpù åó\.IYHäIX½ÝIP&×tw@5«{§ì”ƒ¥i»w¢IR‰ê¦iè4»¡ÀÎ	z3Ú±“HXMó¥`ê„ªBC•Ëës¿ÄÐNé{X*Š´¢I8B‚’ßOƒ²:C¬ÛÌX´¹¶á‹i5™1¸4¢$p±vU“€àÈ2ÂT¥C,/™¥qW_U]˜•Ía•+{GåŸ‰ÎþÁAYyÅE%Uå@¡	Éøÿ[hô½ÐÐ˜Þ‘GçÛ7:× ª¤^Ä4ätÖyo[F­žMÓâ{ÅûGÞ¦Ø®ÂH¨ál¢D~×Z·54ªCÖÐ#Ý#˜DÄ5x8ƒÄ±­)ATAçƒÙB«/'3]Ø¥ÙA	”«&ã2Â´h ÷DŠ(ÌÊ“M5vvöÖcÒ…)Í<›Ó žÏ¤]Ÿ=¦†]e;ýgýÜkS“1ÎUcŒží’ïâÝ‡*³t°¦¨½& ž§DÌrÖ—aÕÁQJí<:œr$Èíû`I¦[ƒ—ÁTÆG®–äô×õÚ‘|÷ŽZÛ
<¿w|b§‘×ËV Œ„ËyC@RqlRY-ãã ÉS3ËÌ"Wºe=¥@<µkæµaÎ‹5ÑüH[ºõ0rÓn z¶ÍkÐš£2»Ø½ [(Âó­ÈÝ‚:u\vœPq@Ýg@ýý\2”>_Ÿ?1¹†B Þ(Ý[³ÜÁ­ÂŒë¨|‚ÿb§ÈVmÙ2ˆê­Í54#+û°Çv`!ÉœÄøÎê«}ÛW‹ ÀDÙVµ¶Zpå˜½ø¢+hÆ+Î²ÁÃ^"ÕðêíÌ
–/8<´~qýÐ!½	ƒ…“ÓKsÆŽq¦Ì[w¡^“õ@ ¦ŒN½ŒÇœ¤*ÏP“Ç‹µÀ+½´róìIkm×‹y¯êØSXùÁ¢œãÝÝÄ?S]NWoJ¿ï6ÓÍ{Ÿv6är'%ÌÊkoz‘7ùG›J÷ö)y'ä›½ÚÂWðôÚs×ÿ˜Áz'ÃêÞdNÌ”›*mZ8LAèºí. ©•rSöî'ÿ(SË´×²ëeeÑ\ÈÑÈÝÂIâë·°ö Ÿ…[m7Êm¶¨ÌVºÛûxÒTa~—QTC<V´2´lC´•d«É ë¬_Ü×º\2ã‹8Üç:Ðík9µ_,v:Ä=™ÏV¬ºª	¹ÙH rg³y¸:…Ä!ÖÙÄKìçš=iº¬5ž è˜Gœuwvàö
W‹š–Û¨q¹­´ç6t‡w`vAp/!9àÑR‰GùÎÒÄ°à¶4áN$C Ÿ¥ß]=n<8œ~ùàëìßêê‰ŽxœVMoEÕ^8,Ú@ åU€1»¶…ClcÉ È‡Qàzgºw›ÌLOúcÇFâ€¸Ïÿd‰; ñ+øTõÌìÌ®m–§»«úÕ{¯ªý×Ÿ½Ÿ~íý6é½,ò Ry+=ëå{Ý…òŸ>=ê|C0èÀaóÉâ”™ÒVª” –B:K8©“œi2a>,Ÿ~üÇÃNªÝOö`-¶;ŸÉ¯Mì|"ÿ›è@È¸Úûç¶Êû×7O×>Êj–üŒ|±ˆ:…s[õ’Âp[þ¸ÿv¹}pV<šr8j0æ¶ÎP%	K#œáXÑeúH‚® ÂÎ:\rYÄ,§<t2T©-´Šc®‡ÐÅ1è_$ass0nœHkQ>E2@a6Ý2€‚Pú»Q"Ö	6†dzà¸ã„úxtªõ¢Ý0@¨•³Æb™Nþ'¨PeƒéÊ”ç«õ¯ËQªØß‹gLÛ[ƒ~CÁä ¦`w”í•ÏÞ(ï¾V¬d©GÆŒÕ.¤Ò‘îÄÅVf˜„³ƒ¾Âf2r¨Ò|¡ñ%íG¤Ã%ºúaQs9„OX8ýoƒ¤aì"bs¥1Ã=ï2 Í/\2Fy¯ß«`‚Éx(Å¼‰ ô)¶‹g|ªLu%¬¿ÔLÉl<5d!¼`§.<R*S6ãÝty¦ãjÆuÌ²a[GmZsÞQ¨?B½ŽjEº’		¹D¦Çf!,,Ëb‰ù˜ñ’CÝËLú«TáØRŠ&\à¥*G3"Qš#¥ï¡›¸ç¯*üV¡èx~îé^êA#‰lO•‹£ÊBI])Ö†U:ÈÚDXä?¼y½špyP%µWqÂ0=14sn3å··Ë«Gã+Ë3«üýKäëäÚ++c×oùs'5Q¥'.á©%tU­•1tnÝ5õè|k{kóöŽñ³Ùÿ,Ê~*¤0WNƒ™Ë“Ê8¹D'!š#åã9e[‡L«‰fI›‡j5dù¾òêÉ;¯_4UïžÜ¼vñ,.ÿþêÍâ\)´C©JlSƒ5QuéÕÀ.)ZX-t:õZÂN‘UV]qI,úÉ‹ŒÜð”¯ÚLg‡!ï?£ÂÊû7›§áçÇÁ -º˜|X¢Qùvn!#©4nTÏÛ«uTb´Íbêú1ÑbŽ‘nfçyÏ¥áËÅ×W{(X¿…\+¯sV%ÌÊÐ#`ÑwÎà‰1£W«zÚL»ø“\ÕSìi›ÈO‡ƒ>õ6ýŽÊ;O~y÷QC-ë4ßÜÚþLî V&üNÙûúóºÿ0ŒP§uËø·}DöYå×†"ÇUï˜Ó­³OèýXÌÐá
…œdxœ;&9]l‚SZùFy>F&·ðÍFŒ»˜eÒÊusòÓbt‚SóRüÂ|SÜ2‹rË‹R's°z
§•Ç€TÄ¤)Ø¤¤–e&§ÚM^ÎÚÊWdÈö‹9M¿|²ûßÉ]œê@6oã4aäHƒ)xÏå	œlËÝÄ²
.~†[(>‰G$«Á3 Ù6»æ	„ë2xœ{<“qÛTÆéŒLiå›s«í€ôä7ö~ ÊÞA”Ã-³(·<±(ur¤Ã}˜­£ÌæEŽrŒ‰£NZL¼\›?8‰02§é—oætieœœè2pûcFŽ4˜Ê%žE #¤½<xròÓàâ^ ñ³^J =_¼Þ3 ' 7¨í'‡â1xœ…’¿JAÆ	"õÚšfH!’4j§¢E0JôBNü×¬ws¹àf÷ÜÝ®Ê+©}[ßÀç°ñ!œl.1VV7Ì7óío>î³ô±ñ¼µj5¬Y•*¡º¯»+…u¿éÝµ+¯íµ¼Ó»·Vá}iq(ƒ >5`ÞP1p!àòúÁîMf,öÍX.Ãæd3˜¯qgü½\ªL×ü×bX”6þ*X½Ó`õv›µ§*!Ðõ½2H‚{ìL†¹AgÛ“±Ò}n{JRíZj`Ó­Â¨'» Ÿú‹/U!TÒj%j\F yMÊC4`0qÍ-ŠÌI9}TÂG QÑ1€<L@‘¦ƒíú²†¥#ÔGStÍåAæÍü­CÍUP5™² >“£EÈ*Æ| ìLÔÐjA}z®’ž•ºËN¥tÌ€qŒ¡Š%O¦	9óIõk€pî{—³1²ãbÈ›™q£‹£ù¥~ÊÛ“‹v«á—YÝ¤lòŸ_`ü²V-°ÔOÜ:î‚xœeÁJÃ@†)R"¡^¼:ôÐ"˜äDPln)ê!—uwÒ,lvcvÓâ©¯ äIŠ7‚Ïä¸¥i¼Îüóÿß?_£ï“÷s¯ÔÆªWµ™ŽÞ,Éæ$%WƒÏ£°_@À*l¨E °y¼GH[*E!¡vÃÉÞ«{N×;aJ€iUˆEÛ8a¡°%‚y3«|B\@Ôš&’šQ¡e‘ZVí³…¥-ÔT¨âý-Z×R0j…Vy`jdŽ…AEY)B¼¾1@G¼¤BÒ‰—.ÙÙ­„”`J½úÂó`Ñ7äpàþë‡ÙÆÉÃ<NH6öCSûDƒ®·Ž‘#ßinŸ¯»ïìðÓãàÊÚ~ðäxœ;Èû…g‚szjÞF9!FfwW¿Í&Œû˜A“¿±øƒiOVõz÷Ô¼Ô¢Ä’T…D…¢Ä¼”ü\…Œüâ¿@?…Ì<…’ŒT…´ü¢\+…¼Â¼5=#C“] 3¿(Hæ•å¦V¥[•–f¦X&™¤Y$%Æè¥%Æè¦ÅèZX§µš¥'''š™+ íR((ÊÈ+)VÈ,Q(ÉW(.IÉ/-™ìÎæ v\7› ‚Ê?ä/„Ú3xœ…R]kAeü(­Ðâ‹`ñZih¡i‰/›„ˆ]E‹¡RÁ·éÎÝìâìÌzg’ºOõø1ø|U”à/ðÙ?Ò!ÎÎÖl
Bçe†s/çœ{îüúüy|ó:QÇM£r%Ôpò.xÛ=‡ØÅÞ^g( ¹0 ƒ)¦b`BÀþás=:Ò…6˜é…¹öVn?nØ¯ƒ«ö´÷yéS{³®=}8Y«È¼ˆp’ï¶‚K È~o_ó>Êc‡°ê¤º¥ çåÅD‚iÝYI¸Hµi­8´9¶Ëá+c¤#¥Ñ¾
o<•!ÓèÕS+Ê˜I•to©‘ÉGfJã©‚g³†6¦ RÒI“$ËPç,BsFÌ (|ålØ¢q÷þË{­íB ®ÎÝü€,JjVåiÓyátavq${3\]$&_;Ï=×O*ÐeˆTÊµÝ¦VýF`cÌFÂ¬»&_	_Ú„IªAåeDµÉ„9Lúé ã#.È³ì Ê´Rô$c5Â³ƒþþ¿ÆT×”L³BÿÏŸ¹½üxÏþì÷,<º¾TmeöoÙ7»lcÀÜ½l?ôçíÁ§¿j"ÿœî‚QxœU½JÄ@…I%""*çŒé,ÄßE²ladûqæf30™‰™É.‚½Í)ì|†•}À—ð)¬Ä³A»{¹|ç~ç{á}<{KåmdÆ:ý WÎ{<_/õ×Åíq7#| CÒT2G`hHînãŠ)™JHXNõ[¼S¿\¾öQgWïO¿Ä87:•“ªlˆÔ”pÁÎ­£ü¥ˆ*[FÊp¦"r<ÒÓœ¢µ†´¯CQ’%íÀ´èXVJræ¤Ñ¡-ˆ7N9ã™Ô„ÑubÁÊÆ|Ê¤b÷ŠßeÒb&•‚ÍÌìˆ']S^û¿k½?˜×»ÃÍíÄÀíSM$H´ý·âEßý`p²úŒ÷¼†d„TäxœŽ=
Â0@	."x‡ï)IZ´tð‡
n‚ 6i-ÒD“TÜœuíE/à¼‡8èê¨vzo{ï~FŸº¨SHuÝ ãè/Ík¼j9›<Z’éí8—Jî$p0\	]ÁZ[‹åJn-!×¦Šú=µS#4À$ô´)<µ¯äak¤µQ]—"¢i Y˜rÌrN1¥‚á0ôsL?ËxÀ†ýÞ/[S*g¡tàt¬ºv^“ÄQƒâg{üŽô0BÚêz¸,xœ½UÏoEV@N¨Ó¤		¥T}jJå@ìÚIQ$ã”šD‘B•:v/,ªfwÞÆ#Ö»ÛYÿà‡|ãŒ4Ü8å/ ¨		n\àÈÀ¿Áñfv×qA)œ¸Ø3oÞ¼÷¾ï}oö»¿­¹Z>AUõ‘©4ùöúâÜâþnÇ©îíÞítÛO›sß¿¸vvŽàTa•Âý‡ äv}µÔZ$?'wÔ~©[ÏÏœªà;-_ðÛðÝ÷Á®?‚ªSõø°ÑØiÙ?ý{éÚ[i*8Ý9ŽvZ3›ìr¬í‘5‘ÿšþ±´¿*1ØiÑz*s“oõéüšn.¬èÓÒ«úI©¤ÿœ].¼Y&°—•úÅÂÞÇE©ï±„RÜ€(>d"ô‚”#°0H•¤ž]	ToÊ$ø8	J
*8jÂá{w¡ÍÂ„Î8Æu}ç¥.ÎæÓ¯\¸<o2¹ø´váÉÜ$ghAÿ ±\kÃ­rg&¥à "r
Õ³åxQ¿ÏBîÜ¨ÁCƒâ$Žd/JNÙôpD.s·\;:*ê&•Y³äæ¹í*Ç»‡ëMèô„_ Å”1z‚–†=áõ2&!ÊbJ%ÂMRµ	Ré¡)ÁœM‹ãL½ÀšúÅÖ$ËRî|Þì|Z¾‡ÒKD¬D’¥L–z~ò~š$ªÜÚ˜úû,
ëfn=fä¹m«°¥q%Šr{,f®„" åÎÄzÝr*nç®m”˜äjbLÆÐ˜á.Wg¡ØŒ¿s“ÙíÜƒc)ˆÊÚZBY_\úeïÙ1™U@F°ORÍû|%£KÇð˜ 5Yÿº´9Ÿç'Ë«Åè~½|EßY¾Öµ}Œ,Å$£ €˜%’ÚFA)AŸ)‡p\é’¼mÓIè!õ³—Ò©SMq“/¿"õ7Ëü6Rçq`?£ZSõý´ïbbb>H1Ei§nFÖÛº±òÆ•™‡á&ÇÁÍpÐÇº}L¶õéÊkú§KG;QDCž}“ÓìŸÉ\®¢oè*ŸM17õ}ª‘Ùé"Z\#WÂŒvêL4’&âª³¥þÆÂ¿‚Øš‚8Ÿ*›(êSÏiÎiŸÏš7u2FäP*ÃÆOg‘ÇTÕohØ²<0¹qÀÆg@SÒ¿AÉ/ôt Oû±AWyºúÈ3‹ ÞnlÐËWÍã[øÚËÎ€
«ùÚË×ëÿ5 ý(ÔGXÿ|éàÿ”4Ï‰á†>"°ï©X¢cÂ†3÷¹·o]pª®Y2†Û¸ìQbª¢¡¥BöÕ_XQœw½Íxœ½WÛnÛF}Ö~Å }ˆÝ˜Ž•´àÚÒÄmÄŽk9A‹À–äHZ„ä²»KÉôÐèöK:3äŠ”ì HjØÖ^fçrfæìªZ”˜Ì0$SÔ¡q¸7ÞW§÷”º|yq¦úQÕÎHàWt—.ºåpHŸmÔua2HK¾)‚WjòÇå»«ÉùDTŠÚtoÕ#Öýà$Ç…Éð|L’J—èkabòÓ“Ê›ü¬!© ßªÑh,Ø±i'5Þò~–/ÇãÓùk“'¦Êñîô¤Ëé÷ +ŸÚ•þH®ƒN
¬NOâHÄèç½°Çâô„þaDÊCœõ2N/“ÔTÚ­X"í7æM©«Ä¡ÎMÚ|s«Ôë³É«ëó«›ów—8ÑI“–fÊüÒåLç¥© ³%)Ìÿb¶ÂS]Æáfn<”z)ŠLÌŽ‡….J·u²­oÁTYÑä¤(Š)\“‰i3ž'»6†¬€	°‡wÇðöç—p­«ÂÍªÆýC¥nH|SµvTˆ?al	(¡óéwbDâÎæt$£ªÕÑšyB“'\kGûâ»†MiAZØì3<,]Ù¥wø&ËÐû1Ô¢‡ù –>â=
¹‡t¿óSmÎP&l…`§à‘º@°Ô+Oök¬rSÍhWŒØ:N=ó?ñÊ UÖIÐxR—®DºvvFP	2µ3Uh-iØÔÏÔºREÞö„¦†Ï•]V½ç_zÕã@%ë%¤ÍtŠ.†mK
rÛÖOÖ­d#zC»â&c(%»¡ µiâãcõ`£Óúèƒ3„ÒVM;§ff°lW¯ôÛ‚F˜jTZâ1BØ¹gu¦«dò,…8²K$ìÅÍÀ¸iC¦TÁ’*Oéë>°F~arÂÆÏmST¥-žl¬§ ±7d¶5‘!ìMÎÞî·aM¤¬ÆÌÐÐÃrn²yë=W‘´p œÒ& W#r¯­56Ú•FëÔ±z¬>Þªõ¬¿nm¯_£Ïœ Õúhýªq« j=¦­©&‚ ñÓõD/0WëgëIS×Öq1dºÖ©)L 7Õú‡þúûùú=:‘|è¢‰4Û¯@òRftÞ¿?ç<‘GÆQ[,z`ê˜M^ Z˜Qc9uõÝ÷¶¬3þ­‰C¸ rR£¶kþ£ª€­à]†mÓ:Õó†éÈáíK)ºÖæ•G¾Î—Öå0À³p1¥hƒ°’+îÌM×Æºí¢ëÛõ1Ë… Fº'¶ðF,l_E­«›n£F(Š¶Ï…~Z¢a¶^Å,¥D9RÆd€¼³°s·µG<<ûýåÅÕÛ³ÁSá{ˆ,àïÑÀeS¦Yù­Á½Ö UŸs¹'Ãkò;Ø}qØžßÏ·å+r@À…]2?»/ºÃóíí íVeJN›	Åª¿uLŠ2!S„¯²6êDDédALí öõá={ ¼/ã+.XRHL›Ó¼#¡l#Ä4uÑE‡>0N›ø(,Ú³™x¯«"@1þþ
ê Ærr“1`Ä¡7eýõqÝeGüJûqüt~)ÅCÂéÂ2B:ßn„Gwãmÿo)y&h†‘Þe¦;ˆˆÄ
ê›«¶Þ«/ Hõ'Ç.²Ú`ÏåA×OJ%»b'5½,rÔì“¦ÃœÜ§ë®ã¤åœj½ñŒŒÔHis&!z×ußF®´‘Sä›‰T‡oL@õ/ª1-â¾„¯hxœ}VÝSEO!ÑÐP‰‰ˆÊ‡‡]éJ²Ý…úD
‹»$°Å]B6Ó{§Ý	·3×™Û.BñM|q^õ/0	>ùæ?`âŸà«o&>ø`6ž3s¿Z`ûÐÞÎ=ó›ß9çwÎ™ŸV¶ªü|·²;R½§ºòà=Ø>Ymâ/4jU Xã‰|È0 Õ˜õ8tµê“°zã*‡EÀíãó¿ºí­Ö³øÛáÇõ(9ãë½ä<„†€lÍ>j˜»ÝhÐsÄen‹Ï™q”Ûñ…7£-KíXaÃœ³_^8P¹mX>hukÖþuaöaÇÊÙ«n×ð$Û¢ X³[ûgÈÒÄÎ²+x”“5-Ùqëuo&ž5[Ÿ0ch¦§úŽ‹`éƒï‚"Pý>“á’Ø!—‰@aŽàÅ6Ä¹‰H*)9·‘ŒbžínÃs^ØÅ‹¿Ü)eSÓ‘h¦G>;eÿ†k5D¦VM69hž´ä!˜D|æöÉÒö~BÉW ÏFÐá`ÿ¼ôÖ®ZÕþwiîî³oCaâˆJÈZu“ßƒÎè<°§Y”v5Û‚Î Ûå:Ûk!Ü—(DÕ .Ú2©Ð\ãy|úãžBEÛ«Ç÷MÉÍžn¿3nE‘
Xâ$žâ«.L²3"#îû`hþÅ€›Ä 3aŠ<c¾F©i§#!’Þ{\rÑ¥×n®OÀÄŒü†ðB–(=Z°¿¯Ö«¥ú¹¿2·oªÎì“•™¥uîHylÜm2ªx¦·§pM–æ,ñ.D´SÁ	wÖËii}ÛžÛ“žý¨=3¾¨äKÁ%êÂU‚‹:¿‡Z
!{NIBâbŸ%BIè0ƒ‡ã“…‹ÌŒd°©•T(I™ æøMš$ä["Š@¹ÖH˜g~ w^š«y]@Ý;ì£åp<úìéæÉSgHƒC8yM=<ÜúDDŠCNÜë¦:ùú-)K;æ$NzÅPJAÒCš#‰ì0!¹)TÊ#«½yØÚÁ¦ƒP:GB)™˜œ	:$ës³€{¿»vÃU`*ã¼.ÜÛ½ïáÊ±W&¤=‹Åw¿–ËMÊ3ÍÎ– —Ê3ÁÅtR°óê'/QÂÌµ•¸œäñ_ÚR:l°Hô¨D¨¨>|ÿ¥ö$ãÅ^ê¿Vê{Ë=Úþ¶|ôíëià2ŠaªF,Þ+——<Æú4†˜Àxo'\^Ï¢~9o¿·‚]xåènlôö|ûÐal«Œ¢!¡UVõ%Rµ³?´cCÇTÙy.`jfî¢Â<¹ÉœVÄ:ÝïJ HE*VaÌ€‡óÔ{àbjˆåáË‹DÆ#NÍÉûØ&w©]<2~Áá©JhÈ`n]å‘º,2(f´(8P<¯‘RÚ~Ïµ…”=(!¸i›Ïã˜9ÀØc”)øA½6cÃ@M”Q)µáR@
ªØ=Ó	ŽK”g¨>‡ !N´‚š0	ò-õª|&šlTL¹0~Ž¤ÝÐw)¥H¸T¸ôøŽ„osûv}r2wÀÙÅø}‡¡ÿ‰Îµ‡Ö¾9¼Œn~p²™Î7wMÈi6í×7?›£¿‹xeX”Ã>?þz‡ª	ÅMì«·N‰>ë`SÇÑÁúqÄ½{xH
ï®_m­]?>_ºD¢Vu, -Á‚€ã³˜Ï\É„ú±Ãt½ (9£°UÑõAÇ¸_N^:0–­l®0dX¾øòIÎÁ;BâuÊ~us­>‰âï›¯-«Þl4¯VÚBqhLƒ^‹)¸kI”ï¶µ[­=nî@O©§·o}_ù=Aîˆdxœ;+ÝÊ7AŠ¿¸4©¸²¸$5W·(µ8µd£	#_p¨Spdpˆ«oŒnkðfÆ­Ìzhêbt‚ÀŒ’ŒT…¼²ÜT¸Š5½Éy¬
2ˆž˜´ ›”Ô²ÌäT»ÉoX¥ƒRKS‹KŠüÂ|‘ô+@T«é)„ Í†éP(H,JÌÜÇ&Å”˜7y5›Žh°‡‚’@ˆ§¿_°—^q—_~^êä~žXq°ËŠÁNCq•9¯Š º«&Wð2r U]ç€HxœkåÛÊ7AŠ3=µD7¯X73e£&#·»kHŒ®_pŒ®§ËfGÆ­Ìpi…]… Ô’¢ÌÔ²Ôb…’ŒT…¼ÄÜÔâ‚ÄäTO…´ü"…Ä<¿0ßT…¤œüäl…”Ô²ÌäÔÉ*¬
Ü@Cb€¦Ä ™ÂªiHº)3X-ä4R+¬ôý¼²ÜTƒ<ÃÉX+Œ‚3òËÑ:d,H0=³,5Å`«Éõl*HîC5s›; ÈàdYé*…vxœmRMkAf=xä àÁÛC‹ÁB§M¼(††–¤^ŠÚ¢¦  LgßÝÜÙîL6-ˆâIÚËzñÞ oÞüþÁK…³cVÈ{Þç}Ÿça~\WŸƒ¯:hÉ)Ë©`‰‰/?ï¼¼¹}°¾HÁÚ- ÏH‡x2~L8QXÖ \lÿjâ¿ìŒjÌÒxÅ˜æ)ÙŒb*Üê$®¯­
;±ëã-˜Æ¼RþÞù9p¹¢‚,¸?™<åÎÂIÂØó19^hu<™q’SxÊ*£QñÎxLåùp­ìÙK~Š#)Ík|-EHžsá(o·B„»tò›>ÙÔEJÝ5øG‰o°|@÷.Ï†Ÿ®!t	·vkE†‰²®·2h·šZnïÞ¹µTw9Þ]}?Ó$LšzÕ÷z÷ûUO¼@gê‰X¤ëúFñIRÙanwO¢¿A7ƒlà¹T&s•;©w£jñ("á-NT:^¬	)óþúüxuxnè:¦R	Y¯ðÖÌ7yomFBEJüG‡ãŸæòú£½òÛÓÉÆ×Ê’I¬t¹·ÿºù¿ïþ RÀâ¶à‚;xœ{5…ñçÆyŒ¬É9ù¥)›K›ì ÌÉìCÕÀ,Ýœüt]^.…àÔ¼¿0ßT…pg…²b]ˆÒJ‡gPý©Ž9ŒþÅ U‰
a@*¿H!4/³°UØÄäüÜÜDÂ¼^®‚¢ü²Ì”T…’ŒT…âÜÄ¢ýŒÔÄœ’ ÊÍ‚Î‘¬â(æN®öˆƒÚ}ß£› ~›Kâ€ xœû9…ñ`ã†lFÖ‚Ò¢ôÔÍåŒÕvæäö~ò`–‚./—‚‚Bpj^Š‚_˜oªB¸‹³B XM¥Ã}I°ýÔ\;µœë”Ô²ÌäTµôëÉÿ/1O¾à$Ê
QýÑI”§X¡$#U¡(µ¸4§dògÍÉ.Î©:
ùE
‰
y‰¹©Å‰É©›×8W3Ê$%¦%d(ÙÙØùå+ä”dæç+T¦–L^çb=ù¿{ÔäZL!ˆ[õöëç•å¦änþëQÃ ­^Sáá€Vxœ;ØÇ¸¿›qC:#gzj‰n^±nfÊæÆr;wò{/8OA——KAA!(µ¤(3µ,µX¡$#U!/17µ¸ 19UÁÓE!-¿H!1OÁ/Ì7U!)'?9[!%µ,39•—ËF¿`2¯‹Ääù3‘Œwt<žG†qz
!@¥j9%Ö¾Zz‰µBAbQb./Wf±Bnb^JbI~Q%PsŠBniq‰BR*Ô IÎú“Ûu'Û¹ø±æ¥‚\Uëh>ù²K„apF~9º€~¹$˜žY–š‡âŠÉ‰®~H~Ùáz–bžÔä~GžÉëÝ& Æ'|Z³sxœ­U[o›0~çWåaÍªqi³®Z”VÊºFjhkUúàÀ¼›b“4Ò´ß>HºËÃK`|.ßw|Ž9Šz K½õ©,pl½BS 4ËŠ—XÉíÎ`\ËœWCx¸žÞÍÜ!fýr)Ë¡mo6+áñ’óï¯2[&Ù™ÌÎåª°;‡ï32¬ˆÔxRöpÜB ·ŠQ
XFJ‘s	£}‡,R‹¡´/÷¡Ã„HºsbûÔ9ì43ÂjRaþe†Ýb§
x]ÅØªZÙ-aYM2%sYVP‘k±a…7ÐSFndn™ž¿ð\?¼ïAïD=/œ½Æ»©cë5ÐækGƒrL)C|…PòJ’%-¨Ü‚ušéçkGƒÒUmYgÂJpI	kÎÄ™sþá|ð»…ÊµVÆêFOª8§klÏLVñ4Uéu>šÎ©½™ã8'Kë)EˆXßÊÀJŒŸ ê“'ÃÂ¢=Y;éÑA©úLI]HHyµ"RR–"¡‚,Õ—Û2GF$åÌ°Xþ‡î[-$MiÜh¡O- ‰ÏêÅ¡ÀTÂŠTeÀY±}kX$â i˜§s¸ZÌCwBŽý0€×wáøP4nÞñÌíÿÜk™ðµ¢–€ºi6dŽº0ªË’öÒˆ9“/
¬`ï¨*Ö*ùZ‰¯É²¢qKÜÏ^0TÛ‹R%<5¢tª™uÅ£=u”ú0JpMc¼„‡ÈŒLuÊ•ÅÅ¨/á‡ŠŽÃnùhÀF²&E#5µ kh¾Õ›Ò6¾‰\ùS/œ.æmˆ‡K@ôÆj9¼Nçjïàeƒ†åðÞI+PSC¹ÏŒFñÝÎwÝÙï77íÚ|þí©Ïì²ÍóCGãÞgÞ­ÛUdÎŸÉªT?èoQ¾ÝG­oøÖÆ#Õ>,]ºÈ¬…Ú¥¨U¦Œ_{ÜéH„Rxœ¥RÍnÓ@V„ZÐ¸@/p‰ÿ$Z„R	i©M£8TÌÁqÖö*›ÝÈ^' ùRžõ	8óRÌÚm#Ô"qòxwö›ïg.þÚúþ¤þxºU©]Ö+?ï=©2¦±œÒX-À5 O½ÑòÁf{y²•p9Ùð÷¢tâ	×ˆñÆr
_°ï>3`ÄtŽaû}Ûiõ;½Aç¬»MÌdJJoœ	
2€ÖAï}a×àÜÁï«´Zø­7±pú¨î× ë8},61ûmbözç`í@+×XãñœHÎAEFù(©çé˜ÈQU–Ë*à4ÑöÇƒÓÞIÛ)XÈ&£ Àýì7ªv³êîS,_Ú»U×'¦û•˜”çøŒ:1;=ÐMÐ0wóû¦ 9—s&B˜3Î!N5‰Œúë^ìË	jaŠÐ— ¡
ì‚J%-=WäˆÙdÆÑ™¥ÏmÐÆ@Ú`¸éS–Uu¿] ¯\y÷á¨t¤•Æ1Š/r14˜y<¥ÀP¨È÷Ú«$ì6`ÈT#¼Ã_8›0å)&ÅÊ}&}Å3üS4<ŸºÏÍ|DG`{L}TÈ4Œ`LcAy-¶×ÔÈWcŒ8Ç,šb%+°»Ìþ9ÂC'šP¾àÅjCÚ1Q?’P‡·`%‹Ä*èfÔ0-ˆ«aÑÊNòä¬bÖmÙüÿŠf7vT —rŒ›C÷ü”Â¡7Œ™ÿGìØûÁðTaÀ­z¯‰\ÓX¾Íe=ú‹®åæ}ã78arå@ˆ£9xœ­SMÒP13‰dˆºqcbnˆAÆX(œAC€´Ä‰±¦yÓ¾âËô__AÝ°ðhÒ­÷®&®üþ…—7Â ƒ7mßë¹çÜ{Î{ßoÝüxûºÃÙ˜*4Šh ñ¢³òµÔÕ–Þ~¦™Šf|í¤¾]9YÇ€©€NgtLá¸Õ‡Ž™MÍ{ùÆë$–Ð', —y48ü+B  —ûf®[wŽd¡¹¤cº:ÔÎ¹ëðÂTLÅaÜTâÓÇµV[×šƒžþ¼~ûqàb#ù±UÚd$bŽšâ]oiCGçÖ;ƒÖÏ×0aVSÄI^7ô¼pÂ‚!~qŸˆ}ÎYš15´î ÝèVÍ |¦ÙýºU;<FçÆ,ba€«_æÓ:j¡>‡ï`&<œ‰ÏélU=lU›«¤–«ÖµTQ+¥=K}Tªì•–(’h;Ÿ:H¾lšGíõí^×È¦ý~zÕ-ißoœMtÊé^,F± „P[„üíî’ØÑ,H;æ}…IÈOgV,`Ø¤´äÃÎËé*6fç…ò+—‡þ9H†¾šÎE
èþ\t!ù?š–û'×v“‡™Ý—Îaò&s7ù¼Óù¯C sÑˆÚÌeÔÙ8FQø£âÊ,Ù¿ž 9@îÒ PÄ^ŠÁØ§ª¼+’:yŸyúB¿S¤æƒxœÛ(v’w‚KFjNÁF=.FWŸ€ÍnŒ[™%@B
1º
 :3/-¿(7±$3?or«² H2&-H!Ú&9?771/eòYVÙ°€¢ü²Ì”Ôb…4=:
å™%
)©%‰™9©)ÈR
‰Iù¥%
%©
é™e©y
P2Ó
ÀæM>È.Ê[\Àå—¯à_ ÒR<Ùƒ#V&8#¿bÐ,…¼²ÜT…âÜÄ¢…œüôÉ^œªü`9°PŒ.H¬ŸSBlL‰Bnir†BI¾BfÉä¿\Œ\ SV\0æ!…š3xœu‘¿JAÆÙJ9¸T‚Âh!<c+„¤(&Að_µ¹Û$«w»Ëî^b@É‚.–‚­ ÑÞÞÎG°ñ¬ÝKB$A·>æ›ï7;oèþ=¢TÈ[žÀ-âTpú¹Í¤òõú´¤¹ìç: P'ZRÒ!
t›@H•Þ„mÞ‚JIŠ…àR“ ½aC i‡¸N6#ÌumÁ<ÖæÍWþn6ñ¶°5wÞ Ëžy/,NêÏÂG*ÎÆ$6ø¥ê¶©ßŸ3)›‚rIûÿh {¶ö<kk¯Ée„­[hÊti¸ÂXK<£.ÀÊu” >mR˜«bz°YL£Õ)M°G¥
ZÊ’(w¢8Ëfl±\B¢Œw~)/¯zø|Ì A V–Û2`Ð4²Ð	s`¾ËÇæy÷ öKEøã`äG"$à›êáìá_«—è6>¿ à`\xœTÍn1ÖJPDî†J-6é-E¡¡Q»(´•€Š‚Õ&;I­:vj;‘ }|âÀ¡Þ+…'àÊ#ð, ÆÎOš¬
–v%ÏÏ7ß|ûËÇà×§àâ4¸=Ð!*%U¨0ÑR„,EaX›¡~ÞÕrü¶°}ØYî†°X €ghÃÂËÝHqÀZxOƒAŽ]ò¼.;à`„ 3ôãi±ð°Ü³¿ë+öûöç<:gõ•ˆÐÈ´µÎMõðø`½cª÷!d0³¯Â°Í8ú ½ÇO£q”„‰Áþ¨ÿÌÀœ`>Í=h“E+Ÿr"µ
T‰Á¤*ZR%9§&˜aÞA€%€”±Ðýf¾t/é ÈžaT¹Û§
MI“S¨‘Äi,21(®ð”ŽZb.‘ØðÑÎó Ø°ßv‡7Gò°Ôêh­8# Y.¢»Y[N_½@Â–mo_v‚3ÜJ~ü:Öèr+cfWD›ðt)§ó9›ÓœeªN3ÇËIœb;ésLC¥<_ÌWÍýÓÔDpÃO€ŽÂ[³3BJ@vÔ7½¾7<Õ	¤v-®º°ÑlƒFÅ¢ßm¢r£{mâ‘6ñ¥6±ãûLâá#ÝÆ°®ß”šL¬ºf§dË¤"AþAËpu}wèËÞò½¯ÙäºëEdsï9$"Ð3:(áeö 1üÝ‚ãVš]ÊÐâ‰Ö[v¿QÛÏy“Ê¤QYº¸áž…Š»õy%ìyc-ãÌÕp…æ›[¨Ã¿·èÁ,éÑ>h=¹vK›®¥\Èáyã}ðé[çƒVxœû;“ñSã†tF–ŒÔœ‚Í­Œåv`Öd)/CA——KAAÁÄÌÌKË/ÊM,ÉÌÏÓ›|Êa›H~j®B´ZN‰ur~nnb^ÊäßŽ;"ŠòË2SR‹2Ðtê(”g–d(¤¤–$fæ¤¦ K)$&å—–(”d¤*¤g–¥æ)@TÈLS(€˜—2ÙÑGn²µkôä³Î|\~ù
þ Å“å\­&?ñˆÎÈ/‡Ø	4V!¯,7U¡87±¨D!'?Ýjò
O_>°$XL(6¹Ñ[n²§‹¤ _~‰Bnir†BI¾Bf‰~Áä©Þk€ÆÊNŽ÷™ ímá„°1xœUAJÃ@…)%Õ¶7"ºp£Óö ¥›*¨­˜ÐÕlbæO;0‰“I´ xuö^À•\¸ñžÀxc@Ôí{ï{¼÷Ô{mÝílHƒ‚pF"£Åó^³âŽƒã%Þ%Ãà|Õ­¼TÉßP>Jãé)‚ÇP/a¨¤ÑJÔ¶îÜo8£%bGÎÔ>:kuýxapc?ÜmÛ¯Ñ/v_{·týí6M^ó0çrfŽh5ÓáFŠa)©Ì$™XiÐ²ð‚n–‡…ÇSÈQ§\I¸âBü@^9(/vH&ùeVô*mŠ\
*.KS£³Èleé~§ÑñO =9¼ÉØo¯>›×ÕÖ¿SÐe˜we¾Àž]nî>´¾ »mu>ä(xœÛ%±Ir‚[FibyjæFy!F>PÇpWÏ]O—]çÍöŒ[™¡Ò“²¤A™›SX71f‡dd+”gæä(äçåT*”çeY
`%
)©e™É©Å
Å¥ùE%™yé
% i©‰%¥E©1jz
A©Å¥9%@¡ü"…Ä¼J…ü’ŒÔ"¨F…Ä¢T…Ò¼”Ô´Ì¼Ô”Í|ìâŒl“7kql€»é>w4 xšEŽë…ÎlxœUÏ¿JApLs$•…‘háš`cÿ%!Â)±5hu¹KövãÞÜi@°ñ	ÜFßB¸Wñ!m¬ÄÎã$Ûoæû1ó9OÏÎËÈ)+BÉg™Içvï_bßö³°Š §¨8œœ÷<ŽŠD8ŽVd´”hìåÁk¡ÀTÙj]<¶çV®˜†š¤fQmHM¸ÆtBã„X¨MäÓ®]k¸ÁŸ´Øù²åî»­v«÷^#?j4B=4~Í±ˆ~)È)0ès ¤ ÉF>1¤hb¡UÅ½RN[^qeš?“w%®“Ö†òÅtX¨1™$ Ä”ps§>¶Ÿ½m»z8È*Gë¥…Ù'¡Î1­«4Â†]ê/Ûï³ù¬Ù÷œÎR‚Ìã,xœ›1“qý,ÆéŒl¥‰å©™›sëí ìÉìƒ`Lw‡ÿ0ÞŽ3˜²B22‹Ê3sròór*Êó‹²,°…”Ô²ÌäÔb…âÒ‚‚ü¢’Ì¼t…†´ÔÄ’Ò¢T=^® ÔâÒœ H~‘Bb^¥B~IFjTŸBbQªBi^JjZf^jÊäNê›;2²Aß,éú†æ.ï>F I¯¹ÚxœÅWoÛ6ý_Ÿâ amÖÚ²,§+f$ÁœF[Ä?jyC
Ëh‹’ÕJ”KRN,ûì;’²c/ÙPÀ"À²Èw|÷tw<Ú/C¤åà]]ãTf´l•Óz–
YåL¬Åï”rQð6L~éÞôü6=žÂDP
)—íFãööÖ‰Šù¬(>;O2JÞ4(k,dž5ªšïWÊ('Rñ]óK´‡›à¹Î¨XP*¬#K±($œUìf;ŒÊÆÅV9\‰ÊÝf£å6<×kma%ÉÚÐÿ½G«Á
Š’Ï©ÌÜ5aIIœóY‚X¨iË¿ü°~ÝÆa=øí2øØ`7ñóàÒÖV´úªœÙš¹~è¥Y^ÁSFA9…eÁ%™¥Y*× dÇGôô×¡—f©’6+áDt–¦KâûöÇ·­]UkÂIX©qÂç‹tEMÉ$¼ˆc¯ûSÝõ¹H\×m¶…KiJ!d'NN$ óÂòÅrhf
k3ûò¨‰TBDcRfâ‚çDÊ”%Gt¥‚Ì2Ü–ëå‚2"Ó‚Y[ìaŸJ!Ó8kNH¤&@Ò¯x+ £±„œð$eP°lýƒå²£†¡×éöáÝ ?öûcÆÑ8€÷þÈ‡WÇr¨½Ûéù¶õÏ®a®q$ËL{0ó’æÂ¬>öÃ àKŒ^l…qWÑ€¢	+ž0Á$¬pçòþD^•rY¢‰Éí¹†¦pÑU:§Ø¶âÔ¸¸òƒw£îpÜô—`NÈŠY‹X€äØZ‘D	ÿë’S!vtap*KnÍ&y‘e”½
Û­ {ön)¾/~›&B9eRf´ªR 3Ô¯óð…Ýå
Hpo²,yŠ«”*í}E²’nï‹Q:wdd”DXïªÌ”¥!G_&(öáÐ2‘ÕÒ.jOÇÖ€–3
àÔ
¨VŽQQR918úÒéSƒsf\?‰‚áH½ç@½GíÕ8Ø¬S	™Q( ‡dš­#ßèõo:½áµ¿©“4á]X	rÂ{S;ùd†ñ™†ñ%/
ù3¦F*Ïùd¾EÝËIsF¡xí}ÊL×ïfàªâíèŸãdÖ%Ò
©¯qZÙ¹À£•rEü¼‰j7ŸVMr±š§Ñùé©çÖ”ˆ?ž0k>p5åòö¤7K÷ö´{‡ûÛrµƒÞª;)õMBÿ¿DƒªxU–ÖØ„¶»Æüée©#éÎ2G“Ý'9UÓö^qØµ-þ¡¿«XÛº¯íó‰\ìðïbý<ðklÌ	j¯iï}¼ƒ1Å®¥Ñao9ïkß ²ù"½‘ÕÓôÉx?™·æåÍ;Bâ¼çŽÉ·$®õÜÕµŸ8K=Ýÿ[ª¦ó	ÇÓ0ÖÇI,Ï½TÒÊv0ÖÇDw64»Æ¶ET]$ü>'i&‹ö.à[´ùä™å‡\xœ[)=›o‚ÜFU>ÆÍÖŒ[™M3JËS3us2‹Kbt|@tbNŽBQjr~z^fUjŠ‚X‰‚_˜oªBJjYfrêd1VEnˆNÎÉÎ¬Z“ËXí- ÒÅ
‰y)@JJ‹òJ2Rôâ
yù)©
iùE@‘üâT˜©Pß±šNîg;"ä—¯Z‘˜[4¤2µ$FMo²-¯. *¡?&îoÙ]xœ½UÁnÓ@•%NAæÈ‰ÃÈ ^°“Øí©MBÒŠ"XT .¥ª¶ñ:1²w£ÝIJ)‘9øÂg …¯à¸ñpAìÚ¤qR‚š¨B–µ³;ófžçíÈ¿>ß>Ÿ{ÆÍ8’èÈá‰<“4N[åƒìÇƒ'·K{pÌ
 <U'YØþê—\MZpèpØˆq'Lp£‡;ð‡q0D'ä"!Ø,yòÐ€Ž¢.Õûl·ó%íØ§ R†PP

	þ«gððí@P)¡(ˆ4‘@X ‚âP .g(xS!ÍŠ†aŸK:pJãX¯’'T`Ä(Cˆ˜f˜Œ8r¢Xë”IÕ¬<@A"	½hD™)”ã,>ËËH<¤ŠÂl4Ó˜’ b=@ž‡Ù«Úv?Ù­ýwÙÎ½”@_Ð°i%$Š‘oÎ±­¾­Ö…Ù¨‘Ö]`#õ-%5ÌŠ>ù³©ƒþßTG¡ƒT¢Yy­t¼ïä°:ˆ !ªÓ$DÓ­êgÓF!GÝ4
š[[^ÝÖ…Žç"ÜYwy‚åxoŽ¡»ÈÐË)¦ÓÞš%¦øÍuðn#Ûë¸ÙÏvm}@ÍÃÉ™Y9×“c½¸¸lÃa>Mp^,Êí“„j‡UVÏ²ÓYÀ?õ²
×Ø^Lõœ`¿\dÎ{¹˜ª2ç|)“.PG¤–nßBDGuJMcžaÅÆZ³Dcû
ôRuÉþÅïzéyez¹™ª÷hY£ÿ¦Y‰íeÉ¼•5K—ˆæý§¦¤‹]¹Šhjê®‹Þ£ïÔÔœj¦eÕæxò}ÿŽñ†þªîƒ]xœ»=ƒqFã†lÆÍEŒÕv“¿Ø{Ùe”&–§fêæd—(èòr)((ø€˜‰99
E©Éùéy™U©)
`U
~a¾©
)©e™É©Å¼\6ú“7zËLît˜Ê1FdÌdMG“É¼â'Ÿv¬°„*VHÌKšWRZ”§P’‘ª WÈËOIååJË/
å§Â,h™\ëd<y·ìäuŽ²›ÃœO2N.÷æðËWH­HÌ-ÈY™Z¢Waï-Ã UÎPúã„Èxœ[mðXu‚,KrIQÎFy>Fç ŸÍúŒ;˜UAB
1º
Á©y)
~a¾©
ž)©y%™i•
Îùy%Eù99©E“9YÁš'û°†MžÇÊÎ™¯`“–[b§P3ù¯Ød6®d„ê‰l—&Çp\Úü»„™l~Jj™~^YnªÁäJþÌÉ<‚ZŒÅ“-#0dç*bˆ4ãâŠIó,+ŽIâš,,ô:M	Ð1ºE‰å1ºI™y‰E•
v
™)ñ E1jz@q.e: `Œ.¦Ö$„òÍAÂNŒX,¢öýæc"MŒpð[a¼“V«×“¶
Å%E¥É%`ã¡ÆNVOó.ËLQPP°RPU®ˆIÍSÒQ »O×(®iÍ¥ E™y%iJÅÅ õ˜ªÁâ“/‰G ?oœ\è"…å+xœkÙÌ8s9ã†,F–ä’¢œÍ9ŒUv`Öäö¾ †‚./—‚‚Bpj^Š‚_˜oª‚gJj^IfZ¥‚s~^IQ~NNjÑä(‡k]FŽá“œX”¢uóÔrJ¬ÓrKÔÒK¬jtuóKK
JKtÓò‹rKl'«;½áJF˜ ãü}3kãf^/-V~°Åú)©eúye¹©“e#ä'WX3OÞÐˆ!ë('„&¦ [Ô$7yfˆìä"Ü6©¹veÅ6ú@jòÉÀGÊu‹Ëu“2ó‹*ÀNÎL‰)ÒŠór)+€”Åt14&¡(ßü?È—ÃÑ!rà:ióÌ/F6…’|…Ì’ÉõÁ¢“ÿ‡&B$“Â6;‚š±Öà ƒâ’¢Òä°õñP;´À¤­‚ÉÉ~áÙ~e™)@­V
ªÊ1yJ:
 	]3šH†eæ•¤i(ƒt`Q–ØÌQÏ et»Ïâ!…Ñxœu‘¿KÃ@Ç)Ú_qÖ¡Ó³ƒ‚6UÄ1-H›Á¦4¢C#xÍ½ØƒäÉ%UÅM¸ÍÀÕ"‚þþŽŽN^cûà†{ïû¾ßwo+Ëwµ£:ÝéÆR¡bî;ºiuì§NáyAÿÄàè`#§Ð;>D0)rÁ¼K0·,è„A@ÔÄF!wŠ­3FlÅñ`PL™‹m:º£»!Qèû)m®2¡m¸Ræ.ä·Sæ”²Áðy_¬ùRlíáÀ~XÜœcv"IÄAŒç³%‚ÈƒÒÃµÝ…ºÕ?2­ž]×šý¾ö§óÁµæÀ†]m€"b˜b–ÆþK‹ó4ˆE”¸ŠÁ£LÎR9d†ÎZLOµY)ñåÅL„¼ñ-‚	ó}!l_xª$©ÜÊ×òT¾W†‹]’¢\×nÊùÈÇªXÇá$‹òú4Æaœ(,õF„’‘2®nþn|j'_@¯¡ïlxœû$ºUp‚,[J~nbfÞFE>F6_GO¿ÍÆŒ;˜¡Â“ß³ˆs¹€™
>™Å“EX¬ 21iA
6)©e™É©v
Ñ1º1º@ñÝÌ[ #31/>3ÅN¡F(® ™ÜËº¢]!hš+Ûe„,P½Ž6ƒ&«³+ ke—g‡r'—³+ÁÙsØå'[sìòËWH­HÌ-ÈI-V¨L-‰QÓ›|”K «©P ê#…û;xœ}RMKÃ@%P<TŠžziÓK½Û{µÚª±AüÀŠ ÅCš´É.$›´‚Ð£ ˆàÒ‹?B”<ûQoþ
š¦	Z†}oæ½™Ý·¡ò8Tî:Ê%*åæ¨§ô«q.?W·Ë“Ô5“€&2»G;:A&¨u
ziÖ¹ã!ÒD!Ï×žqÑr	*mQ!P‹Q–ªšœ	—Û6º*%+cÜ{‘>Õ„©«“HùÏh©<âZŽHŠUîyS›Wy[{©ƒÁ€&VÍØæø¸(|—èN’Iÿ˜ˆ!ùZ–—Ws¿lÉªVÈý3‰t´üà …K1ÀH‡þµ2/–O¸¾zB°¸ñ;4@ö=|Ôy	t+©aûaOêâ„=jÛÐF(÷SV2«½Ë-;ÊoÎ*òC»N5Œ åqã>yç\£Rðº¼©ZmâeÐõC‡á¢b´m”[‡É'Ù×/”/PÁ@éxxœ;8•ñüÆYŒl)ù¹‰™y›ó«ì ìÉoì}aL[).0SÁ'³xrªÃu˜Œƒ£„&©›™b«–Sbdf&æÅg¦¨¥—X+Ô(è¦( 	onpteä…èTÈÉ,.áåÚ|ß)(„¬jr ‹º¦™“{],¸z'_vÑ`‡r'ÿsQ€³]-6kºµ2N¾ëÉÇï—¯Z‘˜[“Z¬P™Z2yµ³õæ¥ž2Œ ÌŒYp»Sxœ”]oÚ0†¯ñ¯8Ò.RVLÛ[ÔVª:¦FZ•jÚ„zá$'ÅkbG¶Eêß± 0*Í"±ÏÇëÇ¯£V%r™q©S{vÕg7‡ƒ±ÉÝã˜qLuBÃU“Ÿq†ÊÉ|ñÅîuY
Z™£€AWE¶.øiëLÒ$26ÿ=™Îæñ<T+4_Xä[AÛ*‚ëW2Å[XpžjåŒ.
4$åæ:¥ÆÙ-| O¡}yaðÉXp×yéB<×µ«jÇsmJánÂücßÆóû§xöO';]^ÚwmÀ-±Ùp£^å
Õ ¬!ém1¤-ÿk	øÔ.&ÖÁ™pbfÈØ3Eï6]	#Jth@Zð9Âi³	ÅK±%•ïÈK—”’Rk…žáû.èåÂƒ½ì€v#@Q][	
H
¾ÁéhuÕ'IÓ€dwVlÏ{4bŸ­ôžÐ‰+êä)£Ø@ÞÂ€Y/TBœÓ$1X‰¢FCi·=ƒkYÈå{NcÈøC·¬©7(2‘èU=û:ºrR«&‰ [L?xÐÐy‘H¹Ä"³¬'•ÓpX°M±D),¼5XŽ=¶[:4¦7od°ÒÆIõºUA½"å‹h Ñ«UäÏî(=J¤faª
R­šÆÛ2)¹“°ÔÉ”tÁÉÒûlüëîqöcÜ¹_áA´‡UýJÎÚ1šÊì$z?S¤Îs2G–I[dE¿þ¦ôZ±†¥R¯ Ž`Øy÷zqöºw¾c¿Ã°sRh—zzí»œìñß-€?FÒ-j¿y3aÜÖáûGØZ:dkÝ¥´¢xœ­XmoÛFþÎ_1Ppµ¤Š”ìôš«íPkù"À–K9¤cE.Åm¨]†»”­6½ß~3»$MÇJpE%@"wgö™÷™µÂ/À_ú,„Éø1ÈÍšû"ö¥ö³%óU¬YÃ4.MªŠcx1}w59f×à½æRcòãá0VÑR©NÉÍgÃŠË‚ü›K^0C ç*úáÝüæf›qrn4lƒWÿ
át7àY£1œ3ƒ‡£WÃ£ÑÑQM¹b²dÙ1ÌþsÅ«EMš«²ˆ¸#¹½K&W%[áÞD®2¡SÚö‚Åè Ó$ô§ç¡?›‡þåÏãÐ¿è@ç¿B;–WJ\Çbû÷cQúpÎ!9hµæ«Â°¥È„Ù‚6e’ìQÒÿîÇ¢Ta[–+Ä|)˜T±þsôêÇW/Ûèl£ƒ•,-Q*6|˜šu6\*IÐ½£ŸüÑÑp­W£Ñèðe@´}i*8„²¬ ˆ5Œ?AØeŸ¼€g.µêÝƒ½Rs1OX™p•e„\íQD,4[fX‹Û<å’¡¤Èô	í·R‘ˆÈR¡ËbÚ ÃðGAÆkV¬„%³mÏXÙ^Ýp5žÎà—ëÙb2[À|1¾]ÌáÍävý}‰™SõŽ¯&og?ƒÐ‡9—±ëÓ˜KôÈflÍuÎ"NÁ“bÉå<B_ñ°úáÂ2æògž1ªÂ¢ŒLYp'vþëìúf>cÐ9:?ñÂdJZ€ˆCT#Lná4æñ3xú¡_–D±¨¯O[‹3øŒŠ¾»wç¶>x°ãcaÐ¼°²¯AÃ½;·u×‚ðœ°¸ßØcøäÅRiþMÞÐW¥ÉKSëòú4Y'W}ÇIç¬óÉü—ÛéÍbz=sþº¨oã¼+lr€Å#±&™D?Vñ’!^©õšaÈé›jƒ(Úž)¸¦z4)±jäŽ²2æ±¼î³˜Å¶ìé‚c´%Êh"~Xí×Ä6gêgxA¨$šÆžCXcÚ,9pò[öF)‰èDey—?ÃCJ Qo h'kÙ½ÌTôñ+Üò°Wëu-A—QÄµ87ÕŠ×š4&Ùªç t7F›epÏ¶%äè}ìUHµ*·Ý#ÉØJŸìÆDû5".·–Œ._¡? 
TÁîa‰Óm­Ù!òcÒ&Æ²ÊS’\Ûü ‚º¹ñš‚¨‹d ß¬!/¸ÃÞÛ·Ós˜ÚD@ÛHƒ„3W´·“
xWY8ôÿ«´*I‹Ãí2¦ÎF—g.ÑHe—­¥AØd59ùz“Š
wºqZ‘kÙ±´‹µRk*£‚3Í+UœæÂ˜&2
¼««]r}ƒGekÙ+o<«oG¬Í¹©ÊŠ®*dMÕs²6Á­~ÓJÒ;¦-—B²b‹¨ \S½Ùd´òj˜; Ú]Rn‘'Àˆ5o¦|™¼_Ý\Nêlµ¢q/!ü#ôÂôÀýpv—%¾~?zyF8vþ´³Ÿðø‡^0½b‚£à¥¥¿aúI&SºyÑ˜[UP•ÕTæõ„ úG©î¥Ëê1¨wZbSÀs,¶cÙ™wìtI¥m¥=©‡“ä´I;-ŸÔ½mñ#×e[H‡CÏýúeÃŸ8Æ¹¢)óÇÆ€f»ïÑJ;V*œá™;<ò]€rÿ2Ì³ÄÞ‰ú§¢9S;>Ð	KŒ'öyXâÅ	«šQ¥JeÐ/±(xdªþ÷xEÃ<vO3BÅ‰¼Ï3ÌTºn8*¶U¥í¹÷LÚÍU,PVW†ÊÒ\ªãi;•íè_´ïzÄì+˜¡Ø¡_ùþ³=}gßÙ0|# 4}Š%jµeK…)ÊØ:ÏxÝ@ØSûtªîõƒÌ–)Î?ë²L|¤è IIT–©{
\#IÓ„MézRË±°÷"Ë*¥„±MÄ3œÅ¹i5\|-T¹JI+‘sìýîøÓgû; l<¤žÜi½‚ìŽáÍÞ>=k3®eT	#,Ì“<ûJè†}¸õÿÚ1¸{œ}ˆAèy/ê{Ói&dù`ãŠÄô¬EÁ¼êËÍRâô‹Ý®‡=sSÈ.½à!ÑÀ^Š ßÇÅ¦çýÑÜ<K©ÅŠú­¥£iïµø«¤ëÂçt¶Úö>œ4§ž¡ß×ðüô{zâ5GÑI]jÖÝùâ|:»»˜^Nf×’ŒWS'ß{½Þ³ËqÕ[`ö²“t;RÿÎáþñ"ËB.; "9“èà¤wòœo;Ø×Q‹·’6:ñþüZ­Ì«ÿm¸yÃ
S_ŠlÔ|œ­¦³0Üû>tŸ
í½ˆÝxœ•VÏoEV$~u¥…"*ÑÚ>R¥±#{„
Z'8Á%JË¥P3»;¶§]Ï¬vfí¸™âÊa¹Q	qCBBEü\¹päÂ‚7³»þ‘XUÉÒìÌ¼ï½÷½ï½É_ßÎýûãÜ/…å¹åKÎ[Î¥E¨lÙÖ¦b* [¼×¥eæ—¹,.)·DÔ%ê‘œ³ž}ôð¹ŸO<ºsòËÊÉ£çÉ?ïì±£›P¶- 8 Ü‡ý?¤Ðð)W¬5€}Ò¥2$¼	ªCA†Ôc-F}¸¶]ƒÝÔžqŸ–Àg2È ¤ŠbOÅM¾{÷·g·ävíôZãÚÜ½r!PãÏmµ÷¡|òý¦ÙOÔvo•'B0ÇÍfºÙœa0ë¡Î½t«ÜÓ7Ê=¹BÒäam¡Œð"Va¬2»ÕU9œ€‰äÚ¯ÃÝŒ
C•O{éi³å%H¡ÂåòImëñ‚'º]‚UÐ¿0=„‘ÆWDe(mO.ãe‰÷½ ö)x$$.˜ B>Œ}D±½ŒËñÑûóÉpûÅáDÔY¥Á›LCa¤ŠF\Ç@”ˆR .–Ô¥@2‘¹×A-l+#¡@«PÁŠÖæj±È™ À„wüÓ3¯óµâ(ÀëdìyTÊRªº<…<˜QrŒcÆD¹Ç²’ úd ±,!–‚ñ¶m	n D¨.[iËÙ ÈDHwpÙœcÚH
¤å¶­ˆôÁ[-$!7ˆWh¡‚ù(#'ù©q&ù½ñLÛóÉËWÝScI¥ž¨«oœyl3$®¾>ófcF˜žŽ¨E‰©ã;^›-ó¾øÄ-ƒ®Î±æ©zrm¦ªKE‰9
ó9!×€I5¹¡²¿#GúL1q‡ á8QD;9±³4×Óq?Ÿ·&à4¸Q"iK¹.¢Oa®½©¬i_G³r2ëVs3ãbqáx{ÏÑÏ0ü€ª¬ÕB)Ì	²éˆÁnÒî×_Áf—%³qG
ž}êÖ†©?}ÁeœDsÅëº/TM89¸Gø+š‹X+O³Šu©“|µóÃ°Nä”µØ¢0Å™µ@¦IÝªùÖçw¹èsÛ2uÕó¡;1v6Ÿ¸ÍB¨â‹R	õ»â³x‘òÊ¢®oò}Ý)žÝœpìÉ˜ì[=sW“¿ëKÉ^ÝºX'=:vh3¶Ð¸í0¦”¢jòu}wøÄ®ôPNÁÌ.|.¸tÛ¶žãÈØwOÍBÄ¬Î&j{¾Ñ0SSr‘:œ‹à_7 ÑòàBa–>‹¨§²I ýåXU­#ÕÑ3UøÔA¢“Ëõ…Ûµ +ÉQÌ=Š`›‰Ò'Ü¨M¿"†.ÂŸ ={sFuÙJ'Y#jS%8šÍÆÓ0¶åŒÐûÆ¬ip›††œój¤þÆ‚4®‰+°äôtÃ@¿H\šLE²#ú2£S z^v—: ´Dˆ¾fnäH‚Æ^G?­™ó"Í,²¨˜2= ý|;B51p‰¸ÝÑa±b{X­åûË›³*Ùv›Ž’ÏL«[øè85~fí•Û#°Dáû¹¿´¤À¸LÝÿC¿©oW`—´zŒçæx:;¬Tlåœ?ófz3šÒ9­Ò#Ç¨;&fžÄ»ÙÏŽ†‹ƒÇxA/HÔöJæ5‡•üèmëóñ8‹¹dm=fÌLë–d÷¨hÒ2¦i˜ŠŸnŒÍŽÂ
þ®@a8ã¤ˆ°:ßÜšµ  ÇTáàÆNc¿¹Û¸öÞþõ’öŽÿc¥îq],Ž]È§ÍÚžy¨[…E.ï}F¡
Kçƒàð¾XlMGò[Åø€Í2èz“·3§«¸õöË¹ÄÞ.%{?_…õÕõõòêZyõmX{³zñRum>8Hj{Kÿ
ô	áãýJxœ{*qH`‚”@f^qAi‘n^YnªnYj^ÊFYF>O¿à€Ð ]¿0_×ÝÍæŒ[™#Ñæéæä§+Äè*y
@¥©
ž`5
.©e™É©
a`U
 U‰é©
E©…¥©Å%:@FIiQ^1..Í)™lÀª 1]dzÔøù1iA
6)`óì&³²©ê•d¤cWZQ~®BIÆdO¶þe¹â’¢Òd å©
‰@\P”™W’š¢™§tLbJbRPk~QnbIŒš—^°‡‚’@ˆ§¿_°—^qW^~^êdy®Xõ Vcðºcò,.A¿M¾Ë¥7ÙŠG »‡Mãürxœû:ƒqZã†tFÌ¼â‚Ò"Ý¼²ÜTÝ²Ô¼”ÍYŒµv¢“_ÙÄ æéæä§+èòr)((üÂ|S<ÁÊ\RË2“SÂÀ
@
ÓSŠRKS‹Kt€Œ’Ò¢¼b ]\šS2¹ÑaÔV„­VŽR“öê•d¤cvZQ~®BIÆä»N’Œ
›813J”!”—•&íLUH,JÜï"Ë¨7y—·ìäõ²“\í&o÷âcÎËÏ›¼Ó[(V:ù'—,^û&;yfbºy§Ùfyï0F  Ö‚êè‰Ú#xœ»Â;‡M'¯,7U73¯¸ ´HÌ.KÍKÉ/ÒÍÉO×0Ôä²E…”Ì±+UÐUrüÂ|S<ÁJ\RË2“SÂÀŠ&ú+N¬PR„èV@Ó­®`“Vl§0™QW›
 [
ÓSÒŠòsJ2&‡2žó-CÈ—•&—”¥*$qAQf^IjŠBfžB¢BQjbJbRPk~Qnb‰—@ˆ§¿_0—.pååç¥rMNaUÁf÷äNV!L§O>Å*;y-›: iÄpÔ´›xœÕYmoÛÈþ®_1pÚIM‰²ürvº˜¾°%ATÓ\Ã@X‘Kj/ÔRÙ]Jv×ßÞ™]R’{NÜ"ºkÎ@,qw8/Ï<3;ëìG{`MüM?car~r9çÞ*‰½¥ö„4\I–{y‘ÕrÝÒÌ
uïozïî‚`öù¼×œÃÌ˜ÅE«µZ­šIO‹âc³PYË$ÙI‹ËÖÌÌóVõ‚Õ÷—\1Cú®‹ø{”‡wá-„æ!çzÆ¹Ñ°Ô’-ô¬0pYi¯5ë´)¹i]­#€kf0¿Ýêø­#ÿ¨SïÜ1Y²üúoïxõPo…E©bî¶ÜÚ-“YÉ2\d–=£åFsüöP(ˆ¼¿_¿Ž¼·aäõúã`´{mü·1ºgåxõQ™Û³º½¯ý±Z^Â5O…ä ‹9‡E¡›Š\˜Ð¦LÓZú××þX-UÚ¦e¦›	Ÿ
&-)Nü³Ó³Î¶‚mt3“¥Ýg*ž‰%w¤ÉT‘¦¯îùG­¹Î|ßowš´·+O‡H43h&ºŸ :`ŸMž;jÕ«û;M¤æž²27jÎŒ2Û¡‰Dh6Í±03.™…l4åìÑÞO¥6"±Ý…–Ð~¿
Èyj`ÎT&$2xÑh²òÂp×íõáõ Ë©?†pÜCxŒx¹+3!Uo÷.Øk|®¿AäÁˆ%ø’–8æe)b½<è~ÒPKB*Ô|Åz…É4CyÄ)9þÜt¦ÂûƒaØ±ìõOQÚ#Ë€–±¥EkÓÙŽÒ\:{Wð>ò"¯(Í¢4‘GZ_]Þônƒ«Cô° ÷ýƒ“2ŠIryZüåÂÞ?œœ÷ýCƒ¨kefXä¡çìÕåuwÜ…î(èZáìÂÄ.Tšm4•V²kÕ)l-TÒX›ÈäW—ƒ››0[1õÓ–æaúÆ?*lé´RkYr5-4§%©pX^áëQo8îúÎ›B™q×Íja§‡XOË”6)ƒoñ	eÃ‰ßÐ«“x‹¹SüSÉ‘çuÝkŠkªEÌ'ÛdmŽqo¡SlÎQ¥!:Áœ?ñ7cÚ«<;à÷ÐÂ‡åß±Ñˆ/¯DžÛª‚U¡>â·-æiÐå‚º;vô¥SÎL©È'd*ù©©i`P ók“DÏR&öHÖœX‰’ÃacC%‚ûI¾5š£Ž»cÁøkÝ«4TÓ\	„T–ó)zy^¬xÓØCÎ×4Ÿ¤«‰#ú%¢Å¯&—FÌù:7r#MSqƒÊ»šÀÎ»'y^ù7®ö€¶{èß·ñ˜ðáàôä¤sŠ[±˜³üúf¸Þ2VÀ¦">W-•Éë¿õ€hF†TÕ7(3Ä”G˜$UÌ¡M‚[º\î§|ýrâÞÆ<?âW\*Å¥AŠXžTœ@„‘,ÄØ°ß9öñãÔ}œuðƒHö¿;ök.Y¬~TÃ.à§¾
¸ª ªF®…BHŠÔ­Q´¤gæ(ËŒÝY0­Q˜NÛ%ÖQ2bŠÓX"‰¶qÜ¨Ä×4.(d˜ÆÜåD1´¢k»íäÍW X·ûG8mšXU%ûÜÓèÛN XÍD<£Ø,.u„®¤ðÓN—UXq1Ç
qGóJ˜™}ÍMðoÞùŸàÛ5PØÉ×]ýQ›"ÃsŽF±e’$¼ýA?8„7ƒp|ØÑhnoƒÑÀÁ€3Ä˜ÛúHï¬À~ž¹+y­=iTaãRa×7æé_à¨OVz)H¼dèÊSûº,pÊF{ëÅCksB]ßU0‚^*Y†›ä‚S«ùóÉ}h,æçŠx	—oƒÑ÷ƒ°†½:?_­—+ð‡ªX
,Z`I"ˆHÈœÃËæ\kß#1Ç‹&Qx–nlÑÑ¼ëÞoƒzœ±Zi^–ý5¢Ù¾çïGÓ¿þÅïìG1Îm¿Øá™ð%ðÚfo$GÍŽÝÿîwïÓÓ•m›Ww¬mNêb35S)P8Hq¨U<¶Çñ¥5£„ã;º.œßtnÎ'ÿq"MŽüöY»}t6ñÏOÎücw"½¸p‘Š´Š±Š™‚ÂaîOðùYnë¬w3Ì–ŽÀi ÏoGšþ+ñÔ4»ÄÇ´¥8¸l?^03“XÚ[8µÌ|Ñ¢¸vÓZç7ŠR=¢©í£uzü‡âR~Ô¿uã°wv²Ó¶7©jŠü£áÞ>ýq??ñwŽ{û´óÝñ7‚z¹°Ð­gþÎ¯ò€Hv6£iÅ¼{Ø»Æ®@IÐMïõ4zù÷þú©jZâ¤6IJ1!Ÿ'íªÁ~½¥ö3–ŽvféèKÿÓ¡a‡Ì_ÏñÃÖ –òCb‹­?R†á’6÷‡ ¼xVí‚3m‹¥õ˜`ü‚5—ˆßÌ­ù|WÆ&W¿9¤[~°_°ù<°aõn¸Ò-±ºÜ’½È³—c]
cï\ÿõ‹ï+æMAxœ}TMoÓ@U„ÜHªTQè'b.@[%QÒ"¨¨ •"µ¡´Tp{Ü¬Xïºk;­OÎˆ=pá?ˆ_ÁáÄ»¶›¦šÃfíy3ï½Y]û1ÿnÞ¢<FöfJ“íÎ‹Ö¶S5{Í/­Ò·kùé{kÞj›ºmÍ¨«>XYÚ<æý !;ÏVÉ	sªLcNaÝÃ>u±	¯œjö~c½s°Ó¬€~€l{hÃØ/•xD?–ÿŠƒ¹æIp\‰ÌI€QH\tªÔ»h‡_™$’8Lb§êS†ë[ííV³¢Î¬ëêãÄãÅLè#÷„„„Óã!çLýž8¸I¸I¡‹€4î¡½¨Nùþ­
èÃž Ë„ûZ–gvxcÙ¹Wƒ¶IDù‘I·G$qµÌ~%{{‘M=uD€&„Fº(÷H,dª’òÂ½ex'=êö´c.K<Œ`©›ÄÀEŒ4Fb±„±>§÷ô	ì®žž‚OÊR>¸‚ÇR0†2RßË[ƒÂQ£æˆ×vmoØÛz&â4ÄGP¯@#ã½
¾^y@-Ÿ.o¶F-E(‹g©É¡Ó>²T+¢ñZvmw×z–äõ¿-jw†ÅB«‰ŠúU~60âA(EŸzè`ËQìÑi,0÷‘é¦
!]!ò SBb,©f”Ég.ƒ/E`ÌtªŒ³‘–ô	edÐeÚEêC”„¡Fûnšåå_&\"<:õEW/{ÈCNô ÙŽß6QŽ¿g&E„Q’úT[ž7Îšö²–‰7ÖáUm©ÅÉ ÄÕ§ÓêlrNýœ½;‘Ô›é……ñKÖND]MÍ[™Ùjjª6–Øüb¾»twÒÍŒD€-§çKc/ª·s+%û9v‡#èAývxœ¥RÏkA& 
Ñ
¡1ÙüX[PÒÆj~4ES¡¡‘ÉÎK2¸;“îÎÆV„\<	ö2‚'/½zzò$ø/ø_(úˆ8³I`cD^Þî¼ùÞûÞ÷Íûò:õêMêý“Ô)ä®ÝGy,Sãêì ~ÜÜ¾:ý·=Ñ;“€r
[»m„ûõÌ°ëÖÉB&½Zªòí‹êãúÛq¢tµˆ~²ž¬P1³}Y‡¶¹²]3[;m“ÍƒíAâüÈÀD$‡‘´{ÌÃÛÜ¼Û˜‚$1Z„‡=„ÀÙ³IAgóÁ¬ „YBý¼õùNhÔØÕÀg{Ñœ°X¸+|Ÿ§™ôd„w=F‚F…êlíP}ªYWþ¥L5k…¥Ò>-çAG'Ž×â¸l":†Êü,ë¦–úZ;º`ø0É”H¢ëNõªÝ°Ï$ýQ/—ÎÝ›ÌjŒƒ!‘N|T•f6p¡ÝX:?µ,á˜RwèÔ5	(†#âÁ˜Ÿì3?òçÓDäQè¢Và”J%ÈQt™¯Ë¯—o8–z·q4Þ@Â¢¦^ ü8=Ùè’)ç€ÑœñÍ‚§Læys6+ö.$#ÔB7ê1®{Ä0nÈOK ,@WŠà@½hm¯$Ÿ»¨É‹|äcÉ<™¡3{FËõe¡«{è%Š¹Ô·Vvì±ªÞû¡ÿ§É™jÒ“È“ÚÊÖvyQÜoÚòÕæÌk;þÞzžúâbèÛƒ9xœ­VAoGVn4`J%Z
è)ˆ@ÔØ±ãÄIHB1‰Ù†ªän¼³öˆõ®Ù™µIUÉçzšC¥žzïJTê¡R¥þ‚ªê±•¸ô?À±ïÍîÚNb»E";ž™÷¾÷¾÷½yóÍ·Sÿü4õãÓ©ÓçŽdžcØ/½©Þ­áõæ“ryèwÜvM@™I³ƒOw¶Ád^g×DÁâ^«kxÈÂpLž•.nØL}wû—#0³—ÔTþõsöNO{‡ÏãqÓF][s¶ÜØÉV³-ç²s¹± q¢ÕZ´ú„¬È\ð/™¶Êïîç ²û(ZYpbU[¹–%˜$“G¥|¾’«†L–žôÃ“‡í £úÙýÈ½Ô§i§ï¹Ã¼W0Üì¨7Ù?‹d3 í!sL×ƒJ›Õ¹Åë°q·”yì™Ï„ìS'bÓdç1áÛ’x4&¿ßþXmmÏ->¼Ç Þ4<£Ž^@}½}[5v„zµwNmÜ¹¬Ú¹ßzxÉ—m_jÛ,›e ;Aþ‚‚`Ç¿u€n,×¶Ý.3áàf7YëVT±šÕ­ae7qRÆZé”k:ÞÒ?Ü™á[›ÞT…¼©^eO©Ãüiõk>¶VõGXCå:Mòy*‰p#³²’ÎàV·{ãL¨\~îì þZêïÜµc£^ä/÷ìmm‚ê7PEbw†÷XžÛ‚;¡=èrÛ†Ö÷`j\@Ùo1$(Ð®Ô}ÏcŽ´aËuðSøí¶ëI$Ôu´*Åôrr¿2Á×j¿¨æ•âÚr2,ŠHPÆ§‡´«žåçgF(×gˆÚ^(*¨Íd‚{J‡Áµ‚5J–\€†'¹ƒm*õNÛs‚®ˆÒ3HCe‚äyF<ÜòžƒBBå£’ÖÍ&)!”ˆÀÒ	þŽRGÌH£éYJ ÄÛ·èÓT÷ón]”ÇÜ¹~G‹/ò—tSc‹RR'JºM^o’4OQ¶ÄWtxdü~˜`Ýma’»Nýu¹ljs«§+@uX©sˆÓ1”N&/€œ ½S{$±÷‚û/4õWn.vä†C–d6CXïè4Ä¡X*æ PªT o·íR±Z.íïçÊãYÂ|È5CR({ôÚt…°Õ`æ‘÷ÈcÝu¤çj¸Ã%§¡0hÞ´‰j×Ç• Â€M²v\‡pqAb•ZØv¦np¬€ï9aûè‹	r3ÚýØšÕì(Æ±Íí ÷ø™Ž.ÀÃ\ùN©B5˜	ÇÇÖ`YWâ&YÞ÷ÜÇÞÃ49	µa²¿-&r€÷Æ<i |LwçÊÝÎ›Óêüî…÷û£&:g•,\\ƒ,ÑH@¥z¯äÔz>_¯µ¥dj5•ZZ­%×WV“ËtõÏ«½BùÃã¯‡EÌwÑé´˜ú£°>*u©8Bâe/û®fÇºJBÜÕgUlo^½.ÌŒñ{ñŠn¼¶!›V-Y”­ö"Yk”ë“Qú‡Õù½kã Öd8Ù¼ák‚Z8³ü§´ï<ðnèÆ1¹º²üÿ8z¬ªßot*óîƒ^_Iöƒ¾:9èT&½¶Ñý`ôÓoë€ú>Lð {õÃóH†Pø¾ÀFð¢À(z“¢0Ñ8>l†O½äódô#Ô…pðF­™>¯Q$µe›¾
äºf&AôFc¤&c,½Æhˆ%ýÿÅ±é¨­êt/¸kÿ‹{­éâã¸¤Jèw9‹kg'>÷Ó”•";6‡E¬£ÀXG;ÐYFréM‹ww]ÚÞIØ›ýç‡É;P·ñ…³5k«/
›w'g3!æ4Ú¹Îéåù½¯¦þ—“•|áYŠxœTAkA&`ÅFV/UD,<m*d“´^´­ÕÚMÐSŠNvß&ƒ³3ëìlÚ€Qï‚sôä?PôäADÁ»ž<zðàÍ£Wgv›4©Šæ0™yyß÷Þ|ï›|{ûþ,÷¢•£\!{æ/e[ýóüÆÙtçÚUrÂ\&Zà:y XC%)v®Øð±C=,ÄÐOÕO.|èx'Ä4Ä`„£ ÓL-d é–Z€[®Ÿ³ÑúÍšÁe0t¾–ùÄ|'û°ÞßqÜTãI8
ÿ]“ãˆxèRO·ü7´3‚Ö—KúÍÅ/s™bä¾pz/ÁýÀtåä%šH¬€pbÒÁôÇ<a!éB©j£³@½QC'¯+Õ“½">ƒ¡É„w·O=ƒÛóN¾lNe;•
Ÿ=U‚+$1å­”ÊkI<3¥H1îÒQ"“¢Iqò46ÝpŸ(!»¥År´¤Õ³½a7Ä'Q$¤Ê
@€D%a«M½¶¡àK|“7ÓLp¡€Ñ*ôA‰S@KÈ(«+pýôöö6$¤¬"pòžàJ
ÆPÆ%cÈ8aúMõýøÀ6úê¥©ƒC¶ÒŸ.ŸX·£¸f,¨ºÎC¥³©ns˜ÕÚ¢ÆÖ\Aºµ¢“8F™w=!(è)ÚAÖÕËµÂ8®:ñ'ŸØò[Hª„Ñ-^ß_}äXDRt¨¾¾syz\³u»åëY¾ud¦•LUð„8K´ô²ÿN­”öéR„%pgÓûw¯D:„2Òdfð4èÏÎ£ÙMÁÙPKNÞÛ®¾¿äèëµcãáp“‡÷<­A—mäö¶>lûÂ"†K6u±l6ÅÌVRPãˆì.ö÷ìÄ·=ïöºÓüvªúó×ïê®~¹VßŸý!éhãèñ
ìyÓ³ýUôƒÆ™±Ô	úÞúý£1¦'oLìÁÏÿo¿E¢¢D¹ex®Ö]ÞÂX„¸j)ÿ”v6Ÿé¯ÕIývó€®Ô÷éÏ›OšÐ­áƒ¦Xxœ{/2Gx‚wnbQvj‰n^bnêFMAFv_Ç o×˜ÍŽŒ»™‘%'³²¦H@ø1`˜´ ›”Ô²ÌäT»ÉYóÄ!’™yé
 i…œüt…‚ÄôÔÉ‚lFÁ
!©
ù¥%¥%
™Å
Å™¹9•
%@A4]¥Å©)
%ù
™)©y%™i•
å‰%
Ù™y)
ùi
ë2A†lv`aš¼…#™ÕˆÉjœZ<ÈÅ©>Ù…K •®S í†¿9xœmÐ=KÃ@p²‚à"â3UPbD‡Ö*‘*­ƒUŠN×æßôhr.—ÔŠàâ.z~2û\ü.Nîn¦¾€V×žßÿå2³®­ûž5)4NÈTŸ´#XHY`Vþ¤æecou<„c ðÐ8ªj	Í»CT¥ÐJ)s¼ù´6*âG±ìRXA1Ð%RÞ¡¢¯K8qÅN›¦†8‡Ó6+[ëŠ´â”RþÁ¤ù4©GÔá]Þùb¹ð1’íB }DÌ'°|+³P]l¡Ù#ÈDG‰íBÌÃ(Bçéï2’˜<h	þ}Ç Ç4ú<—dŸ»‚”¥²™«æ¼¹¨ÞfÛg–±wŸÍkýfz‡ô?´¹ÛoÌŒ¿nNº"iÙÌ¶æÌÛáTVjÕ¬w®Ü•Æâ†å{xœ;&yNr‚”pf^IjŽnqnbQ‰nN~ºnbJÊFe.F>O¿WŸÝ`_Ç ÝÍæŒ[™±¨UˆÑUNÍKQðóMUð)PpLIÉ,ÉÌÏKÌ™ÌÄê/
Ö¥ ÖÒÒ79šµ‰+«8?O¡hDÖä¿¬úêèºÀ–+ µ($¦§*¤åç*”dlvc“eâB(ÛœÄáÏ(€aõNM, á@ãöpé+˜p¹”æ(ä—–”–(dæ)€]–_”›X2¹†+Ó”—\¸<àÄÝˆ©ü·%å¬<Cÿë†µ!xœ{<“ñðLÆéŒÂ™y%©9ºÅ¹‰E%º9ùéº‰))›Ëí°ILþ`ïe‚E\A——KAA!85/EÁ/Ì7UÁ¤FÁ1%%³$3?/1gr°ÃSˆ
¨::öqfçç)Ô(èfMþéx\ Cë~'Q’ŒT…”Ô²ÌäT…Ä¼^®ÍÏ$˜¹ýsU»ò Âfnv<á’üÉnHê<SRóJ2Ó*'Ÿr3@—§*dOæw_éšmîNŒY“ç¸*²€œ=¹×]ªÉ¥4·@!¿´¤ ´D!3Oì©´ü¢ÜÄ’ÉŸ<Öb4Ï³kˆÈ{y`*NóJÂ¦xóE/!& žÔžìq†ÜXxœUÝnG–•^€Á­€HQÚÑF¢ò:	BP5¤Å\§q!ÁÕxwÖž²;³™µë(Rž ½ÈˆnªŠª½«„Ô'è3ôxŒª½ê9ûã$(–,ïœ=ç;ß|çÇ¿<¯ìÿ\y1¨œß‘ÆÛQ’{ñ ¶žæþèÏ´2þôv÷ßg_¬7ƒW«À#4B—I6à1—¾á>#¾Šc&ƒZõörâ’î‚{zçÃøíæµùÛÝ¥]ƒ]ð$,Evû­ËîEë­é×5çç7[ÍÒÏd~h˜ñû)=ö¼€YæE\®“×F¯HP/‚©e&r1ÜÑl½ P„ì¼†ÒÕi€	gBØkB.NC<“pß9³èº¿šÜöŸÖÂ…vw«€SžÝµ»ï	cRnÀùIâÃXØ!9ÖªšA– æ[¡$A•Vb'BáCÂ4‹¹åÚ4`k(ˆ=“#¸ä=„Ä·!ó9$ZD€)B¥é;f: *	³¢/"a'ÀH>.²`¹jc£Ø!³9h€iA¹tõãë«·Ö,°19«ö2/VÄÙYXñH%¤AšLêëV­ŠxJ²¥0Y®@¡ŒRÑÊ09,CÀ}9È®RŠ'	ß4”•¬”2(¤‹(%£	¾H”ÎifŽŒ8ù¤qR¥kÕ¾LOœ×þuûÄ­v>tÿ¶ÏeÏo{Û†gáSM%–Á$$³È¦·Åu°f)½ëy‰ ø‰EòÚ”ÿ„„hÎ˜÷9¤†ç`½Cè@U§ž-*†¥w¦ž3.;†â¨í„æÁ~ÇsÎÍ¹¨ÏèzÞ:Ë´%qŠKV´<ÎzºØmwßwgî_úrf®‹y«U‹©žžK–Å8yúi"+ŒØ¡»soÁýÞþàôtº©gM?ñ¼X9UÍ¬kÝÃîbÓ;˜ò‚ÅñUp@å@ðm9d¡àQP2ª„îåÆbíÈŽpëïÖïKÖø	Hèœjn\¥³tú`mPwý¸y~ŽžñZ‹½Ô&©¥6Š™ý‰¿ÑîwFÉÝ¢/vŸ¿×)–ŠÃÊžfØ)T%ãÞéuo_è°ŒÍ°,G1_¡m¾J«z…–è
­ÅÚÀ7ž¸§–[Y¦2|ýTžò«@ö—‘c7TjÝo½?NQ´çGÂ5ÚWÜËÞY÷ÓWûÿÄPe­è+†xœm‘¿nAÆµNƒNºÂMŒ `@Á²…Ï¦ ‰ßÆ$)T‹w|^q{{ì­
$ä†`$JÄ#Y¢€G â@¼¢bÏ²0Y­´~ßÌì~óæûü–'¬"õL³é–[é×íƒu©•(Bà{ Ðïì“¼óµTìl?«=	¥‹[õÔv÷íÖÛ…—4Ýn­ÏÙ*R%ºâà–ÏaÔ.©€å=ßÙØXÈ‚³Õ<),.(¾û}­|U³wý±âOPafAçh¸•:ƒ†ÒMà™€3i‘ãPŽärn¸B‹Æ÷\DÑlÃÁXà¦#Ðû^·æ{'qpƒÀ…@ô³·Yñ=º^`@qxã¼ï	j!³FÚœÖ 
7«¾ÇaŒ/@LTÞ‡gßÂßÌûëï?â«þ?þPg ¯"™"XGFZ×”‡®z)™YÝ†þ&Ù¢ŠÖŠæH¦)<Åyçcù'piË_ÖùÄ =±ùÄº³A®Ú¾w³“ÓÇø2Kiç–M¡OQƒ¾Ü»Hâ:S%ª(í–mª—vOíÞ?±Ûr{gŠ¢ã8 ×QcÍ™]&jœ©ø_{Ú”îÏØ^•ýØëzº’xœ­WmsÓFþ®_±“Î4	e;0u3)QŠ§qì±CA|8K'û@>	ÝÉŽ¡ô·w÷îäÈÒ0Ø3qtÚ½}ßg×ûÑhÏÇoúL„ÎxärÁ[¥j•¼ÈKÝú˜K®j¦óJÏó²o.û¯A˜9¿…7Šs˜k]ôÚíÕjå'y<Íó÷~^ÎÚ:™=jsÙžëEÖvŒ¼?¸ä%Ó$ï"G~x^A¨×WsÎµ‚¥’¬Pó\Ã™“^KV©/¹n?Ý˜L£ùnû¤Ó>îŸÔ”“ËzpýrÀÝ¡&…yUÆÜ’ì»+&g›á»@Î2¡æôÚó'Ïa™‚¨õú:ŒZã`4Oð°{]ü»Uºgø¸ûçÔíÙ­ý)à‚§BrPù‚eˆME&ô”®Òt‡šþùÑ‘âÒ6­fÊOøT0iŠâQçñéã“&[+&+Cge<Kn‹fVæiŠáíüÚê·jÖétº'>Ñve©àÉ~¢àüDìƒçóÌ–Výv§‰T\CÂSVeÒ¼\0­…œíPE"›fØ˜ëbÎ%Ó"—ž/ç[´w•Ò"±¡ÂKèh~ƒ_9d<Õ°`åLHÈe¶>ô|–@¶Ó0Îû×ðlx=	®'NÎÇ“žã ìJMHÝ{>ö¼¯‚D-s]
¾äÀdB±)2¶=çH Fxm¦öYYÅº*¹þu=…ý›\ÞÔ‹Ò>éÔVOdEéÎ¾1
o¢VÔ’lÁUÁbµDòäìúÅà)üöH0Ïo=ø¿£4#%Ù”=9ë7R¸Ó}å$\ÅªaFòÝfhÞ¸~ßu¬9.ž˜»ü¾·
t]°Ì\*î{iÉËi®¸¹´¼ï¥¼ÒE…a¶½úäìr0±~æ`žqª¥ÂÅE>÷G¿­‹Ë¼4åd¦‚-˜!ÀÉ#„‰èBD*28\j¬½˜#ÄùbAu¹z~ËXSÏcÓº„&Ø±yx¹]¶¨;¨cÛ$¡%¾FÔÁî6’±vë4PµæÉŽ~ödØÔ/Æ‹W£.¡€Ì£I¾6ý³ÀÞ™òÚ”Ûñ¯ÄtÃà€ßô ‡6õKçðˆ,e°i
˜fyüþÜ²{XÛ5Dï«8æ
="mÛmŠ=ˆÿ$ú>µ-íä­D–‘™	sŠL£óñd Cžb`±Z°ÀVl­ŒFJðÐä–š~4ò6ýzßhjÏ‡ðÐ{%Ge¾¤óÖU‘Ð0T—nÔý$.?5¿uoëHï¶"U{V)^KiÈ¥|	¥*Tõ‚áÆ·š÷­–­ü–üC%J#]	œ×ˆ/9Îë&Ñ[ç2ÕŒ!Q‘]ý~^L€Hú§œf½±PÙŸ4ƒÚ€¦†dY-¦h!Ê$z)
¬AEbÉ`ŽƒlKö¶õaS|º¶×¦ìœ¸C.ü)ó•„%ËŒÔ8«ÞÃÅ1ôX–MóÀ=í wø›‡Ã>Óßûí{“OÞKîM>÷ðÙ,ÂLôÉg"vá
×(@•Îä·`:¶®c®Œ!ùç(ÇŽÒ_™ˆñ·À†X%M®“úþÍ]\×³Av›ôÈ‘.+´±I8u„1Çcˆ»Æõ±£Ó4£íwCó'a t™å6§5¹„Ž]ê0‹•ëÃ¯¢â-èÕÀf*TÁ^ †t˜±]P…Uë’ÓÚ' ÑG_ %ÛÏ›"ve6g´téØ‚½-Bü¡dÁ”}ýÒäî¨ø¥5Ð¿Ú@—œ¹€i‡”„k&²Zž~[òpîYv×DÿŽè…4 6–X:&Ä¬LtÈpèÑéÂà3N:N…då_PVLqp6új11FÆà‘¾1˜@;xu>]õªf¬¢Í_Bô)ò¢ù~«óp?:˜VøøKçd?Šqýl~•Yë¬?b‚cÿÄÐŸ3U£ú1#†¨Y”[îpïžÚd}±e¾7è‘
ž%„hü¼B¬ÆË,1kºõ±g©3Ù¹@6âÞù|}ílM³ZvÍf×=µëJCX`EƒÝÆ'œç«F‘”Þ:of«Á.+™+9µS/Í~Fúîr7t¿ïmeŒ°ƒ©³HXÔŠ3áýÔø(8ê(‹OxœeRÁJAe‘‰ë\ö[ÅnÝUC ÔÅƒ£¸{’½´=µ»Mfz–©šCÀ_ôYH®ÞÄcÈä;ü€|‚V÷d³œ¦ª_Õë÷ÞôMë÷³¯P'äÎçÜâí«fm±wÐtÎŽïöj?Ú38Eé|— Ò<Bî]´²$È ºIÔw?ŸÔÝ¯èiãÃÞû]ø"»ÛR»oÑ5	SÔ²à9<¬Ü÷¨í`“a^òÎöŸ¢Zg˜õîãâÖ•!*‘€Çg^Í‘²j„Z†ÚtžeJ¾†Çaª¤‡á(Í&·ƒ•.ôÇ†dHDp¡,æƒcÎCÙ„/X1®°°Ù·£€\†&¹±Œ%Tz\-Ÿ+ýiÆpŽ#c­‘-¡§Rk$r/ë×wo—ŽjW…—&jâîéAÜ=9‰%Ž5ñ,¡ÍS°oâ^8™G.eï¢2õÇ<²ÝŠí¿d+Î×ññ‹Â$	U™òìÀT¥%úœ-d’’!Ô¹MÈÝ/'í*Qooh
âÊµø³*Cš(°én«ð÷aÀz‚Óu;ÍpCôXØÏbÃ=4ž»¸	°Ýõí‚?xœ{/Ú(6AŽ%¿ 5o£²#§€«_Œn”¿ßfÆÌ‚ qÝªü¼T…] g2«XõdwÖðÉKX¢ctct«ŠÊj€ªŠ&3²)L~Íj6Y­Ÿ¬e7›HKjŠBqIbIêf7öWŒ> ‘5=.½ W.½€ . V¸Y@á`.Çœœüd …(‚óRòsÂ‹2"ŽE©‰
%ù
 ×m¶àäe„XæÅåqß4®H ‰ÑF±ä-€Fxœ]RÁjAeÑ]ÝQÉA0AË ºÁÌ‚àÁCŒŽ¸ Ù$Â\Úžš†žîIwÏÆàDæüƒ€ää'ä/ü«{ÜDsêšé÷^½zÕßî/Ÿ<¸cÑÅ‡Zaœ¡å?Ÿ.uú“d7÷Æ›ÉÙëÎ¯k/ÿ@ÃàW‡*ÃüO#*§dÌ1È©`àñÍýîã%"§z3ên7½›Íîí»£ñæ§k$ia½ýhõ Üÿî>£³·ì5_­¿}H0ƒ¶þ‹û~ì½ì‘<¼½ô‘xoVheqGgúd»‚PUíà@HI¶sVKNƒu™7Ò¡QÌ‰Êù8b„‘J6®K„Üè’†Ë…Dºe8g
¾ Ø
¹Èf‹N'QM]ÑöcµÓ%Is&åÜS¨àµdŽ"²¾Û!9*'ò9(V¢­Ç³Ó;[%SlJ(õæzÿý6uŠ†;I4ÜÚŠ.r	]&F€	¼ˆÆ•ÉÖx¾ØÔ`‘A`µ9éŸ6Â!¬(¥†md¶B©QHÁžÏùŸ}{¥—ð<ð}K=Œu-t`p¿-‘f‚ ¶®*m­$34*]O‹í_TÔ>)r·ÚEcä…¾âæÔ¬l£ºú¶N£Éúµöùä>‚jxœ}RÝjA¦”TXKo¤*"xˆ -fãM/“B©©ÌMôÆ½™dÎ&;3Û™IB@È+{ásˆxéxïÐ‡ðÄ3»Iº*
»ËÎ|ßùÎw~¾ÞûvøþÁ¾Ð¡œHZTüãÓ`ç Ý‹ÂÎ‹Î0
­îóOç;Ÿwï”I…Ð~ÖË®÷îg'8:ÊÁ(G³I¥÷mÒ¶ÍF÷uçÞQˆ…Fö½òøp•Y s„3Çš‹ö«VrÈÙum	Q˜ *)$àÿ³{ç»…±êÊàÕ­C’)6A‰ÊNÑ0'´‚#©© 6Å±ˆÅRf˜D‡ÆØãèI†Sa7E˜ BC4¡ˆ³1Bjô\pä+ˆµñï‚c-SR‰D¸%0
7é,0ƒÀ8…‘*sô!}RšPrJ¥¢£ñ•¶ð4CÎ@pBæGá,pœc¢S_†÷xfW`gãi­¢‡m½’éÏ3qdF»ojÉ’jŽJ òõl@kÏâ3ºõéGB1³$Â2ÑŒSÖ >x	Õ^ØîuÙ[?WëÙÖàÉõËœ"A/kñÄFK_C;†™Zy|8,D’À‹ÏÌ­XGù>•Î	&Yºlõ~?Ø¬HÉJi‡Övúky¦Ñ,ŽiìÄ™¸iIG–u¤†²@çf—z4ÜU±L¾o´ÚÈ¼I[%û»’mþGªPüµ–[Eßúî›N«ÔmJ•ZçìËíý_5ìJuì+‡Ó$xœR]KÛP¦U:E§^ØÒ½z±)kJª¢’á@Á
bm7D<ŽÉ$'5‰­Â†ìlpno½Ù…Äý‚áì¨ž$­zí¹8ïÇó~<ÏáÜ”ÿø5µ½«·o2ùú6QŸZ­ÏÍ/ÑjæÏ€ øíàLl`¨›¯C×£ðˆÂÛ-¾ù\s…qØ'
Q³[Uu-1*rÌ•žA‹)´˜@W¹KþSZâ{Òò¤‹!5iHuÍ²ü˜,ÙâGR)ú+A&[ßæÿ†wÉœqÕ^ÝLÀZôØ	=™Xu•XÍè.Ÿ9ƒºá!‚á¹.e&ØPˆGÅf0ç#5çû`9©ŒAð1<öš`ùž›¦±c]Ûqà ! ¢ä]E®4×åJ£!–R.C,Ò•zBøîÈîp_ÿ=²ùbýö—“s@K78½]ÏJÉ8Ïç;c…ÐÚ>
îN{/zJG§câí=ÆÏÇ¿K¬ã"ˆ?p11yÆªIƒ×6<õ…$`ÔÅ MrL=-èïfú’Z[NR±Lxú)ê£_}æ/èêÉŠ*NÚB»D9°õOåJkfyiêýSàâ/‡¬xœ•RÏkÔ@&YÐdÄ_h½”Â+«â”d·X]’=UÊÚ
[¼H³É¬HfÂd²[AÙ£àÉ’»=yÊßáPðâ_Ñ“3I³ž;‡ÇûÞ÷~|ox¿¶þlÝä‹Œb&ÎœãûÛLàœ…Jd	¦å,c
"gLI"?‚NMF¶¶?¿À'À¼`1ÆŽO‘ë¾Ç8Š—ƒ00v|
-6x¸Æ¾×|¯©©>X7:¦Mõ‡-óÃZV#ªGööfF‰‰"a0g)›á‡ÐúÕÔþmOŽ«'½c«_«Þ—Þ=Ø§sR¦ª % ïõëËµµ½\™ÑX‘[¦'û“£˜ÌA%"‘e„ÇÀ
 `faÆá©¤$~Öq/šDÃ!WRUJ®»Í¥ÈÚ8]°ˆÂ’¥)Ì(d¡Ù„JºƒVû •;!Œ»uªçÎ‰³ŸƒÕuÕ ·+‡k*J!hú¦”·¢ª/œ¿Ö«¦zr¡dé¶MEA.©Þ"m®Àÿh}6-[ðêòVâ s]údªo·®¸‹<1Úå$£EN"}~qh¸NJ¸ë½~©±Ùº{ñ®<íBïlÏÓÏ¤’%ž1®¡£w‡o´2ŒÑ["ˆö3yõýÎÝ.åðšï+†÷LxœuROkÔP'öÔ@Äc¥­Œ« 1zÊên‰nÝM©.zSxifw#É{ñ½—,«í'ð0 ô^<~„Å‹'QðèWp’jÁPO3¿ùý™÷>¾v¾’ónâœÌbá+liüLMÞ+gÖiõèçõÛwþmï¹ 0B™À°×…Q3!OvÅAããåjK-WSfÃyÛs7ƒ‚~WèûWm±çÝ•e-öÁ×Èíýˆî¢Õ)VhÀNvîGx¬æX«œ	Vé6‚…VUš ñÜzö·>Ó‹­ÊÂS«‡öð¸ô$\=á¹ô2èC¸ñÌs¡ƒãyc„y'Zä4Riy”JV$"ÎØ‘Ò¹° tƒ×bq9£öÜ\Ì!Æ£5«ÀØD•¶^aBÅx}$ÀSV^2x™¢uzÚ[§‡7cGÓ¢v‰OEWûkk|$Q«Kèš¹Ü›j%§	+”–¾Ý:OŸúH¶ïÑÁöâÚn­Û˜j/êC6!dí=kg¡7ƒÓ­¯ð­Yåx…:ƒàÌhªf5Ç)8³=2Jþ%x;ˆ.ý— |Õ€=÷¢çz.¿dÈœç–ƒ2ëlIZÑ‚Ã£/¿ùWë;†Õexœ…’ÏkAÇ)6)Ý("‚h©ð,ÒK³I‘žÄbW4	®xqK™î¾dGvgÃ¼Ù!gÁƒ0ÿ/Þ¤ xô_ðèá_ 3»IL‹ÖÃÂòÞ›ïçû~|Ú<¾ö~c•G®ø|£±Róö·{¼·òå\=á¤\¡®^½øØüB—¥H#"éýZgÍ¦“[ó;!ñÎ0KS&¢CBuÈ#Š8Ê»ðwÿJ8ú[íÊ%€¸,IÊzv ëõlcö™1Çƒ%ë¯õï·I1©¸.å¸ W%À’1›á‚1W1ìB.$Ò×v¦C^ )Ï +PJã)Øn9-9=”‡¦Qj–jä™”lœ`$¹PX9CÆá+°fñ*Î `	¯¥´ÿ¶zýg^¯ëo9-í­ïOK£¤dª\",:*ÝZver!ñôÓê÷³&Ú;É³Vbd|Øs¼LUlš16s´]•°&HT’c¥Ù»	œ²Êˆ²3;„…YahxíÌ·gè'½³Ê¢Y¶­_ïŸ.Ggî`1ušo•ò#šÂ´	ãMÄ*e¦o€æ,T¦ýÎÁ†	8ÁÀ{I™ÐNãÃ½¾]ØÉmÚ-"™îJäëL™%Ï–úÈïum6eJÿhÜÜž=A;Â¢-ŠwËë¾eoÖ|”Àä|ü`÷ù¸?ÃùNXR²¼ü QßÔ¿.ìüÐ"Ocâ-ƒ)xœ]ROkA'Ø$Í ¥ˆ‘V%ÊfÛèMbAÒ +µ	É
‚+dÙ}ÛØÙÎL¢Á[ÏÂ€ßCzóæÙ“Â“ßÀƒ8³’4éixïÍûý›¹ØýÕü|»‘Q©Ú‘Ù×{¤BŽ½±´{þèøb¿òíÚ†èßwI3%x–¡ÐÛÕ#×öƒdÝg4ÂCx´ƒvÄŸuËã>‚é€­ôyuO§Õ½-{C7É•ë­ÚÎî;rÔ÷FÞÐ÷'ÄM(qeA\–èWµ§ÛÑ’¬P¢¿Ô:¯ÁO©„©D	HUjf9‘t§Àtž¤c,¦ì8sžMQ*Œ…9Ê"ŒhŒFhBQ\¢Ô¼
ÑÍúËâ›©B¡,Â¥=¯;·È$xÔz~¶´[Vý½wÈ€œFJé”¬+«ë÷û—%Yç&ƒÒýø¿ýá,‚31:°ž¬æ›/n®ÄbwÔ×ÞæÁ'/Bð™xO³láüŠ	¡Ra”š@/g²ÀÈ
ZIÈ ƒd|54	§t†Ì±QKTvý`á6ßÏC/(åÎò!1{¶oýý³Ñl™ã¥À9„×”-‰[ò¡þÓˆÍMÈ›'ðC˜™ùsTF¨>¿Þþçµô>ï<‡ƒ.xœ…“ÍkAÀYÁ@¨à%)<ƒý ›¦öÚ˜æÃšÄ4©P(xÐ0Ù}IFvgÃÌì¦ÑJñð4'Á‹ïB®Bÿ zñè¡àÿàÌn’†Š6‡e˜yïý~ïÍäËëì½õ¹g]¥N–™uXˆVê÷vãšK…ÔËíbjaW/¡E<b£PŸŠ§ÓããR§lúpÙ•[¶ïy„9m²Md’v)òåžÜ‚#ÈŽàß1ê¤”¹N\×Ä‘çãDyÁJO"¡ës`S6l2¡Ú•”ê¨ò½($á’²Þ\e ûq(wHF:Ø£LÀÊ>l@À\ÂéRÁ£•›Ð£!ê,ü9§ŽzWYUîÎóª„s2*`À)“‹!±ûšçà!W&h´ŸL‰Kãuõ¶¹¨^—Õ‹Ç?îGZBòÀ–G˜ùGnÆ;v1‰êgu%ýß¹}­-e.¿zPK×»ººÖ×^š>"Îp”œbˆ{’7‚–Dß¦D·LÀä7´Ëzn¦÷¦5Ö“‰|nP0_GUSQßjw¯è‹6Fê^õÎ³3Sófc“Û<ÇŠ #FB¢·Ã>ê#!¥¾Í×Ù”[êÎÌìÔIÕj={[ïçÑ+¼>ËçôB‹©7õÓÒSs•QsÀG¡§¹¼ò™.;×’Ñy²¿×2§‘êc£™‰ÿ
r†9z¸a^û¦~ÊõÁ@U¡‘»Ö:hBe‚ÚQÌPÜ9Ø­¿aºøÒø×îõŸq]_ä2ƒFxœ]RÏkA& B·n{ð`ÁÚ>67I[AˆIjóckR¡Qð b×Ý—ìÊîÌº3i½ŠèéyÑ“GB¯‚ž½÷R/Dü#œÝ¶IÌœÞ¼yïû¾÷Íûó>õõ]ês/5ã{Bælù‡~j°1¾ÒïÛísIPÜ\ÖêœÉˆû>FdmäËÕ…´Í¤çTV|YJ¢•ž,ÁKÈÙ0JÑÏjš:Uã"<Êñ$Ýäi]¨]ž{¬ks·þ u¯ÓjïP±¶N·¶+ô·VÔì1k¾~ó!t\O@_  ô¤‹ÜA][[wG°vÃCdŽÇzÀ¨ˆðy…D˜ -ÁsP)ëzåuM×èuýÃ¥ŽªÒŠdÜ;Á[iäg÷2¹\2Kf^5®,ÅMm¢oÛ(„‘ðL´üj\M¯º6E×NæÜ¥ÛKôÖ,ÌŒ¼¢ïff~ÊPúÖ\¤ã;Y2·fÇ @O¶²ôÅtZ]#¾¯8žïŸM<¥J€%¥e»ÊÉã7]ƒÓ#B´cyåAá2>é™€ž·Ìˆ(c”UþC²yXÌ9“ ¦4@¼\ÐU q>6%R¦÷ŸŠ¡ú Àã\L¾WU2žL2KÕNŽp"í¼ÒvMdé~ó5×ã–2Ïgå‚
òÐfþPmïË°/G,´ÚúDÇµ¹ùøÂ
B_íÕ%-›¥ÃwSÿ çrÜ¿[xœmT]OÛ0}ŽÅ}•šB·7HˆuR%h+Š¦M¨!¹¥Þ;³B¥ýø;„Š¾4qŽï=çø\«}ÉI!­K2gŠ“éH\ÿ„X\ßÍD‚ŸPà”ÐšUN‹wLóœ•“ÛÝâ3ÝhåŒ.
6vL†]mþl]8J±Ã:SgXd!Ö¿ËÕz¾B“Ç=vñFÄ¾õÝbºÈy/3¾¢Ç$ÉÐ,¿¼Wô’ŒÚ—ˆ¢•–l«4ãÄ•mqŠšçªhºØ–.,'ºvUí’­6eê.ÃúF|›­oîç«‡ùrÑóó¿kCnÇò†½È=«1Y8b!’dgH¦ËÒ‹Fi<w¾aÂ¯WFï¶¡âÀ¤Æ6¸5¡‡´T[€Yn¨Ô9‹é—¡øôëd*ê…´jþ­Ù:”éé¨I6! ê­R”Caôñ¬S§Í!Ð)Ó=s×·WŸí°%ÃÑúpÂoçtŠ—S~g£±§–º?:ûCŸ£Õt4	Œ¬Kó2ŽÉF‘7ŽÒâ5=Xz‘ÊÒ+HÑÕª`|Oq›‘ø‰tå$Ü€¢pFä4idÌÀè_*²u–aã8”4Lhì«ŒTÞB„œf;PÉù-Øòl]†Ôô±ï=?GùÅJtÏÎHÞsàÐg'híÏÿÝ• Ø#EC“r4ïSz}2	¾ã|ÛE/£`QtY9²iv¢¡Îys#[qæ…B5!ÔSz˜2ÛÍ\³ìüî³qS ›‰¶£=v>èÞ¶Sæ½ðâëg{@’Ë±ˆ^wb„Ò0B
ÌiÏäÄŽ¼'~ÚÃt7®|ÿ)Z³kG§ÒÝÍG_4Vþ—:Ç¿­Vñ„–ª8`Ü˜š’"jánLÆ51Ì€“¥OÜìçõÝêv6¸òšø--+Ä—ì€Álµwî
GNz…ûõàg-‹ÿ!Îð¶ê'†ñYxœ}RMK1E´~l¥—zR„¡‚^Üb¥Ð‹
jK­h‘VêÁõ6³md›Ôl¶(Þ¼xQž½xò$âŸðW™”Zk!afÞ¼÷&¹[|LßÏ'C)9mÊÎë’36{P©{n©Z,×ŽÞ
cïã¹¡ð\¨›ªC„
E®Xp%NcI¸P–"îètbgß¢¼>Ìj°A±Ë|Ü‚SÏä]F77¾ã-¸6†SgŽ~HÌé§Ä„~NpðE»MŒ€@HÀmÓÒ‚¥Ô+“7°ÍG5Á)‚À„JÀúêZ¾ð«§oˆ¡Œ€qs|‰$b¼	BR”À"¨bÉ‘!\Æm‘Œ°5~Œ2â(s«–i´²/bZª…Ð%aŒuÐ·ÍÔÒÚônñ$—ó–³ö*E0¥ê—©…›¡Í¬Â?›t²µ:ä*É°‹½¡ìë½þZDJÆ¾1gÔ("•5f—lMÖEÞC¥†aŒêÛišt„t¼ r	®'fª‹UxIÚ#¸Be\8ÙúdÌŸ)e4Ke>[<Û—é+‡šNxœuR1kAf+eÃ^kû!x"qO#…œg÷îˆ˜“ÂjØy·ÙYggWÁRq:±³I)ä7¤µùv¶vÎ¬g8sºÕ¼÷}ï}ß{o?Ÿ>_³`%•‰IòL—Geðr°˜°?î=X_ˆG!€'.Âdo—°ÃI1a(y­™L	c­êÒòÍÓ§…ýTÐÍÍ§F¤ÔÍÌžÅs4ü®ÇÎ¢~X`)}ôvëZÐMUQ0gbª4èL:óÒð²QèQ{¼ýýMnÉóöðÐq ¦pO£pëúÍõÛKœùl‚t!£PÈT«„Ì 4'QA“©µ$ŽTIÃ„ô ûKnÿ\/g’˜!…æÀ1½ÿ5Ë½s@hX^ª’RÏæN¸MßOö×ÖzÃI2ÞIà€œÛ÷É—óÍØÞðê¥ÿ¬ÒŽ>&£5Ôönö¯Å¡2ºNÝPÎ„aÚøü’}a&’í°TêtîŒ>Øo£ÕU?Rß]ûy¥d{öÉ|%	ª6em~·pŸím¹ÝéLè+Êœ*ÌÈ¾KúeSÐåÁdÏv6¯ØŸÉŠçYµ{òyXöŽæ€¶Wxœ±JÄ@†›‹Eñ,†+D$—ÊZ\
c¸Vco31›Ý¸³9¹ê"àØù¾„…ïà$Õóñÿ÷~òqúù3~ggÃq×ÁÛðüò<,»Êt[KÆ«®ÂÔH‡‚|ƒ Lm]+¼²†÷éd{ßõ>jì«2Ï`v-õ[Ú“Ç–"ÖxgµFG LF´HH@Ø	'<êÃ~Bübü¹//ä‹Cp¨Và- Xf®<¹YÆÅæIö”®³‡$[ÏÃ˜º0¿M7é]±ÉoÖK–û^kè„çpTœVA­ô(rãÆ—È5{Íå¬gÈU”Ÿ¸m[VÕVNÎÄñáë¨ø‡'q@ì€²sxœEOKÃ@ÅÉI(ô\Á1bOm±^*TCÿŠ[‹oR¶›i³°Ù;›HOÞEð‹C¨_À~ïžM‚àœ†ù÷Þû«óóæ|œö²Nï0{ìí¶õ~×Ù†ƒS,pÉˆ.Ý0‚lÛõª•fšM†G{)š¥&Ì^†Ï¾â!ØA¨•6³B«|/O:±qb@¡~j*(YÒ†,FÔ¨Vào¸VÖh)Ñ0€bRÌ8ÆÌ0‹rS’\ªÐÞÔÏOÎÚ®A0(s€Õ€Œ‡ÿª:4Ùþè¦¦Ra´ŠPY×Oü»Ûéd<gßƒ–(ä×†Å¡ë]ÄÞlè/üÑýbÖŸ_C®)!f6½‚˜‹–VByÙËP\'2w­mÎr“Â–XGQ^†Ô¼l…²¯QwŒ>_>-ƒÏ·´xœ­VmoÛ6þ®_qð‡Õ)lÙiÖœ nì4ÂüËÙ2DÅ@K'‰«Lª"ÇÃ°ß>¾HrÜ´†Z€iŠÇ»{ôÜ=”^-Ž«F}­¨ÌðØÃ»?E|Ëjã°”)/ÎáþÚ»›ŽÏ˜ûp/!•2?ïõ¶Û­ñpÍù'—IOFÉÛ²^*7Y¯r0ñ> Ã‚HoÄÃ÷j?Üùðå.C‘"J‚‘\¤\Â Š^G±ËPö.Ø0"RÁîŸöÎú½7ý7gµeJXI²s˜ý:Åê¦6ù¼,B´&»6!,)I¢ÖÆ,É¨Hõ²ã®n ¥6ƒîd~õËhþÛ¬­SõÛ§k™XýU‰Z&j÷{/å5Œ0¦AðBÎIÖ4£rB–q|ÄLÿ|ïe¢T[—‰p#\SÂL;¼í¿ûéÝÙÓŠf)Ü„•ÆNŠ0¥hÛ%)x+zû?wûoz‘ôûýÓ3WÛŽ…”"¬í&àF†Ÿ!h“ÏŽ‹™mªzõÕQ)PB„1)3	1/6DJÊ’#¦ˆ¨ ëLIr—§Èˆ¤\I˜¥¶?K!iLCc…6‰ôH|T‡c	R$”gÙîÄqIÙQi˜½\Íg«ñlþj¸\ùp3^Žáõ±ÒøZ·Ãé¸ågtÁGaöX˜Ô†o6DyÁSº¦x$ËødŠ€–†1×»mÿ÷Ù|á{¾Ò¼ÈÛ±ÄžN4yƒx	ƒhˆ—ptƒ.éÅ@—ð·ÅÁÌ?:ðËøÐ8¼¨ÁúÄ`æ/øäEº–ógýr¨î^ða~1Pƒõ`æ/ø”%.··ÞèEøh}oáé’zÄÔ27ûWKo±òæ3KÞ*ýJI¨€R )MÈ™,xf
rU™õï‰,‹§¾$¯ÉmJÃT{Æ4Q{„q®klêY•™°uq*­7‹C%¡†¤\|%å*­ØwÒjI©½Âœ!ÓÂÃ"øÁµÌÍ³ëÎY,œƒ¶èì»Âq—>üèÌóG¨S?Øž_{'NûˆÖÆï òó @ëië‰á‡<GP+Yd0/ÇÒ¦;û^¬zLbÅfÛ›]ŸXÿ}tÖ›8ÆPÖYiCç—)z¹ó´•«Ä‹Z¹íÅòæýêô|ÏÊ6E•¹ø¶Æÿ?eûÖx{£¦Î^LjKrÛ¿ZÔT}YHESEU;þW#|½VÏdÙy¦Ê
‹^³¢J/¶ÏTP˜÷—b ã,èþ…‡’•ØÑÀ˜Agî-Ô§ž¶ä:®20y¨õ0ó	Õï ”ÈFîUîù|'Ìödè§ñ:¶Î¥!×jHÑÂß§‹É¸:³g\‰žlrõù	;”<õ—ŸÝ± …¬ù·G»Â¨Ê_R‰Î¿£ûh`èZ‡øJxœ}TAoÓ0VÅeë¨„„¸qxBcJaÜ7lP-c¬ÕB9Àa¸Ž“XMí(qÖ!Mü†¸!8sAšÄ‰?;g®À@Ø®´V©²ýü½÷>ï½üøÐøö¦ñ1j,$>fgÃÆx³:•ßïî>³p[M ð	 1Øú˜Àž½Ã|4BòBpH3ÓÀ3@IÂÇ bä˜àBPÎ€‡]&÷>mØð·ÈhV±#ŠÉJ$Öá¹ëòÞQV¹jÓ+p9Cùâþµ«4Ä WÁÊw[Ë„¤™ÜYH
•IGÉqªArµŒAn4¢ß÷z, ÇØ‡Y{ùþáçÓ9ihEN´D˜3‘ñD³m®Õ¿C(²ZÖV£hBÅ	ŒcŠcåÒH‚rímÅÖÂ½Ã")óŒæÝjæ)Á4¤’…e%|"læ¼.$Ê""(‹ ñÂÕjzaBÊÊŸ·KS5*¿v—ëvá´›b•É¾¯vwº¯m˜7UÔ*?ÉP÷žþUTç£µÛ ':˜yJ@š’ ü²ë,Mµ‹æZ÷Šäºã1A²Io¿ÓžøÕa'©å€Â`aÓÑJ?™êÆÅéÆ+_û×Kx´pA5œR¥gÇÄéìl=iƒÚ×BŒc"Seÿ(“¨ÖeF®sURY®L©4CÛYš­P=’÷•žŽ¿Ý³êü]=©¹é98¯úuY.ÿc¼TòKs³¥´SGÐGpÁ'O0¥Ê!—Ï—²!`œ¹/IÆá%YUt˜æ¤Ï’`-Þl„I‘Uxù:¸ªýöh.sÄHTSmÚÍè¸VGž£‡‚²Éwàv¼ª91ns¨œê	vN×Î~ù¿  ;ùÇê,€®Exœ…‘Ak1Ç)â¬æV…R\"*vfuA
R(ÝZ
n]v¥—‡L“ÝM™I¦IfÛ‚àÁƒW—[è¥ßÀáÉ¯à—ðêËL•=H…	óH~ïÿùçêÑç{_ÜÏ—,)•t‰uÌ%™žÌŸ/mÌ/ÖI»ý¿Î‹N{þã ÙÛéîmÑäí»Ý5Xk‡õ÷øÛ›¥«[ôR@
Åaÿ '    ´‚M„#ŽKa]Œ…+
¶Ì0lFÊ÷oC§2 A—&Uà53y(6aDÑÿ:§‰äˆ_ŽV<D‘FOþÔ+£€vB“T*fÎª¦ÔŸFGáŒ3œÇMÅÿ‡æÂ1™Yã¤uC=O5xaôLòZÍ¿jlßµS]fRá¿4ÖýÏÆêv}]Áoô	•u¦<DVÀ‰Ì2”@u©vúË;«þ)iußO¥]8©UYáª‹Qhã¤šÀX›œá¦ª,†#«UÚ@†?'Ÿú}‚!Æ‹Y’Ö`/É¢V¨3¹ö@ŽI{]ú¸…ðiU*i­²÷JÈAJêgáÌ1ÿ4›ûÄ)Ë‹£¸Ž”Ã™pèä-Ç¿ºoïàM‰ÒrxœSÝj1foñ¦‚"´+ì›­ýK»;Ú„¢¶`KoJÑì$Ý‰d’19³µ ì­ ^Hž@Á+…Þø>‚à&3Óµ¥]i.’LrÎ—ïûÎ™o?Þ6¾?oLdœ	J
%X¤H¤îÛ™<þ0¥§.ºu·»w/8À6W6wŸpØ.ò\äûËœö¹Ã_ÜbËo°0*ØB"PŸ v¿NØ“¼ JÊ<÷>¾ööÑæ’m2ŠÝ¦Äåƒ›}\†×@4œ:ØdÆŽ=ÒÄÐCÒŠš£}÷)þÌŸr4‚<SLy%£¦Sò«U0ŽTHFgžzÇø@$¼T’=ŒÛ(€TJ½M‘ø=w_îïLÚT’Aÿ{)I©¡	r¹[®û¨æpKù÷“„[Û‚³`çY…Ýè8RôÜå½Œ¼eÀi’B¢³,Ä”"#»Û™<îÌ01ˆ£zqïÖ®¸?«7Ü•ÎIaq:î0éïB"©µÝé´<ŸŽ£“”Å	508.ø¢ZžÏd~ÊãPËaY¸ÔSÖ9
­*‰–cíLP!T*@*ìd^X­Zà¨JÝµÆ–’G ‡ŠËIjâkê­+¬7ÚR@‘ña;
flŒ& ÒóSÅÝ¯cbNuÝ™hV.•Úzœ’;¬ôök½Œ"¡ÀcÕ²jöí³Dù?UvªLgD”‘Û—äzÊ{?â©3êin¬Ÿç5ÃÜ¯Õ÷m%vÖ®Nnjà¯h–KßËõÄàˆcÙ—n¸vÓwâï‰¹Yrw‘ÌÎÃÜÜÒü½¥…EØpuøùÞŽªãŠú0xœu½JA…ÙUQF;m4EŽ6a+‹`ÁB„ˆVçšìî„ÝÉ¶ÚÃàcøV¶¾„oâ¬‹
ou8ß¹‡{_WW6ÒqB<!©¥ÊðÜc×*¶ºÙ˜sy¬ûàèR*Ñ¹lÚGÁQðQŽ–OEŸr0«ªAdvæ»‹–$Õâšs©®$îÀ%ìÇ¶};rûAc÷o{üÓ.Éç¸ÍtælP	à^»õÿ’k…U÷6áÇ½‡§¥X_Ø»—õ:û>ÃËÂ¿Ðè“¼/TŠ³“ˆñÞW2ÞS©Èf¿é| 'ð %€FDŒ5¯ŽÛç­f×o•Ã:4É0öo3=Vr™$fd"÷¼Tû¬»U³MxœTMoÛ0=W¿‚7'@Ô.Ø-k]†X>0Å† Ù¦m¶dHr2ûñ¥dÇk±¢™.¶$òñññÙêX"/%OËŒÛºª´qóSgy¡÷ƒñÝ]\Œ­î—3Æi1õ> pˆQe°z\",ð ËRÐ>nCÁ¿ÏÚp ðƒ‹Ë «²ô´uAiÂ:S§tŒŒÅ?VëM¼ˆ½@qwDcñ‰E¸Fp›áQ¦8…×p›—n
€s]»ªv<×¦î.œ?±+¿v|"5uÅŠL$•bŸgñÃ·Åf»X¯z"žËmÀ°Õ£­{yD5K:ùnþC&ÈÆCæ/*£2C€[UBB+f!£Wèš±-Åõ­VÂˆ|Qá´i@)HPðÚéRRÊ`]ü=ÚÜx…?G@]
P„k+AI¡Ó_ðv´‰ÒZ­Ó­…B=Ý3‰¾©@+“`4XQÀI4–À+ÒOª=Ó* èÊIzÍ±·ŸÞÆ¤Ö-!&M¸&÷$´bFœ ©IsÓ‡©Å;MP™Âó#îÍÆ‚o‚O¦“	û×:ý•wrŒ®›™2q‡öÞWˆ”-¢D?­V‘×4$E‰TÂ4Ñ5¬UÑ´Z„"çä”,Dlkßm8Yú©óy`ôÚªttµ=Ðä;¹N²(Z]‚:HÊh¼âžl"©’Ä"³ìŠôÐð°K±Tpöý~¹ù:{ñ%úÃ;?‹¿® >§¿Ìãù/³ôtÂWLÝrŒtÈžÄ^é(Šœ#xœ}‘½JA…	‹!Ul.E11†€…ˆ•Š5’ÄØ¬àdö®;º;»ÌÌÆ¤²°´PØ‡°ñ1|Â›Í¨ÁjþîýÎ™s?–Ÿó¹®PFD~I»Á]IØ(p^«s©…v­ÑªŸX¥æQýÂz;N½Ï\M+îƒU‚&] ø¡‡ÁFÃ„“*»‚#éÊgF’öp£iÞX«›±LCa$k¢b9Ø2öâÏôÒ}Ëz è3iC¨„4zš¾qñ?$
-wÜ é‰{‘ Ñ!¯5è6j®D˜x&$2îBÃAf"…ß€I5)„Óhuœ¶Oà *Ôd@0ê«rÐ!rážx‰ÃÙJ–õ¡ƒ€‚|«øevã¾¢h%óQ‡ŒÜw¼€ßŽ¿²†½(Ó¡,»>nÉÊ:3›:ÌÔ%èˆsR-&!üŠêo&àFT 
™Í:Ž¦’OxÍ#(ÔÏZµúi³Ðe 1~Ê^æ’É×Æ°ýoÏ¯,Oã¯ñÃüa*óiålá‚xœÍJÃ@…)R+Qwâê.Š®ÒŠÔ­PRµ¥uÑÅ&“[;8™‰3“Ô®ÜŠnÄ¼€¯ ‚oäcNc-V\ÝÎ9ßåÞ¯½­>l¬GŒ*)ÊÑWNL:¨”Tú¹V.,wÚn÷Ø#Ž{´ßè¾^ÎþÒqÀ,5P©RãáÄmãÜbª–¸`)
èäybÊ(f¤[ŸÈ	$Gç[™³Çb}þ&N_”T`†:FÊÃ¸»Å§›Ó!Ó0bœƒ|#©.m7/Ô³jïŽdˆDh»õ~ŸlV¡—Ä±T&G
Í‘?† ÁCK×I ñ*AaøØšÊÕ^+».­¼ì¶t^é¢QS¯á5Aß0mÕÀ„Mì(Eö^ªìüóCP³GÔDávÖ\:ü $L³¥ç$‡“xœ•‘¿JA‡9°Ã³°±
ŒMPð¼¤MBˆžæŠØnvÇxän/Ù»‹Š ø Fq-ìlEìì,$Oá^’"…Dlfö›³ŸOFÿÆxiî#Sv‡{hóP)ä1kúh£R¡ŠÞ®Œóòt„*ÕË©Ø–	 nÊD#¤ L€0<ô(Œ%Q€'‡t0Û~Ø²™z-˜k–Yr:å´
î=7fiPyÈOu)9”!ëÇE=c¶i°þ½¡#¹Á¡§»PA"½n¢MÓÄ¡´eþb=6¢¾»B9×^dgÐÔžSÃÄêÁŽÞ¤À]Ê­‚Že Y€Q‡q„¦ò6Œd`O–éèÎ‘½ s2O×î#]l¶	Üù™j(‘º›z¯îMœ³în#¸b[©˜ž$2þÏMi¿¾ûÇgÔ¿´A†nksôÚ¸û×.Ô¼é^xœeÏ»JA`¶
"(6‘SØnlL'asqA$A¢EJggÎ&;3ëÌl$•6¶±˜ÎÊG¢OàK¢àîÆšTÃù9|ÿ™éµ÷8õî†ÞªàT+éÓ‰öSÊg—ÞEc)u›A¿¾¢Z+mÀ¯” ]ä¨Ò©%Q‚pÔ>p·Áú†ŠaÈÇ(¡;'€á˜St¯Á}é'ƒª{h>žŒxaA$ºL½ðÝ+v„`R¤<æÈüçÖþKÌï›_$Ãd&"Ì­úî`Pƒã,M•¶sYây¥ü³/È"ÂXÞb²ÈàY†Ò&“ÚÞNÚp/aÕ½·Jî4\s¬ó¶ÝG«9ŽzÍ^Œ%–Ë©.sZä£’îf¿ûçû[³•ðÊû´Ê—í/€›RxœeROkA§ØFIª'µZ}ŠHK»¥Hzj/m…€‰	¸ “Ý·ÉèîÌvÞìÖô`ÎÞ„¹ø%<ˆø1¼{òæWð(ÎìnÑÓÎÎ¼ß¿÷Þ·öûëÚ„JŠÏwÖ–®õºGƒg}ßëö‡'ƒþ—ã¥¯—ªgó{¹Ýè•Ç•ö!Ë´„	ÏQÀOÍÑÊÝã¨+ò¡BN¾Ç…F%Xì{±œøÑ BÌy€‡ðÂ÷|/eÁ6ÁÇOºOOwÀÞ˜¨±=/iûÏ{eýŠ@Oz½½
(Å€G<¨
!IÂŠR	
µâhæLq™X›\À˜¦fI•0½UD²ÀT!Ì­LRç$°)äBC"£ÿ`†S$\xÉ?Ë°T	˜UAKÂâÙ…s=]Xb0<`1P–¦RiÐÈçÆÖÏ ¼QF©£q¢Éüj|4ß/¯Ï+–20Õ_A"CŒAdÉÁ£‡{{EŠýÎhäÌžVjNHàyLØ¬ð†Ö(ecBCèxæ@¤,ÖT»“f~¥óªØ¿ClîN¡ÓÌ.‚uäæz›E,¡ë¾Õ(ˆK±åÆT.Ót1ë¢ægóõrq­Þ¾YnÔK÷_18Nó®u¿õ×²™O«·nþƒ˜­usïêöJ¤â/€ŠPxœ]R?kAgAD®Ô€ ¼Æx¹3ø§$gˆÆÃKNCˆÊÜî»»Á™Í¼Ù›&@2ZÙØÛïX[iocé°wf÷öD‹eßî¼÷~ÿæ×‡àóqp2Ni%§Ið¦;«íï;Oëòñú¥ƒ²„sáU.jÉHÔ˜€ÉˆåFÁ˜ç(á§öýúôÑ*Š®ÌBµrj×£m7ºzÍÃbbVªÍ‹c³ÏÚí”E¯Ø×üÉýÛ›þÿ´SK_*„‡»œñYB˜	ÂŒ¨ëˆ•J1â#Í!RB°²UF£9æØs¦¹Ê¨ÒÒä†\2]ÀHiÁL«”ç&SDHGGÌ5—^¨	c/F<ÁN#Ü™ aÍ%“|?Ã
$bÝ–‡næ€›IM}£‰ä‘ó–²4UÚ€A&<×_@|¡”ÒçÚ8Q†d?Þýâž¦ý~ï<ÿ'.š¿Õ„Š1™‰!j‚Û×——K%·nîíuàIØ=˜Äƒù `EÉ7ŽYÊ†„NŠ4IaŸo~³ïz­3ubömoÁþìíJæRw€>o4K‘o¾6(‰+ÙòAT7gR§Y:dƒþ§SeqÒ¿|®º</ýw§¶×þèÂ¿·Êv¶..Ô$þë·/¶®L·wƒ?EÖ½æŽHxœ{*Ð(8AQ $5· µ(±¤´(U·¸$±d£¡0#[ˆ«o€kÐf/Æ=ÌŽè
Šbt‚RKŠ2SËR‹¤2óÒò‹rK2óóòÓÒ3ËRór'°‹–Çè")5y«i}AQf^	ns4’ósò‹3KRQ”$æ¥(ä•æ&¥lJL.Ú…¢ 85¯8¿¨XSh”BIF*Ì5™ÉE@SSRË2“ScÔô¸6K²MaäFÒ9y»9ç
q æžríá€Lxœk¼.0A‘%/1/e£Ž#›Ÿ£ŸKŒîf/Æ=Ì`ÁÉ‚¬"ü A…â’Ä’Ìâ’ÌäâÉ6¬NÉNV'_°df^Z~Q.PA~ž‚FH~IbŽBReIj±ByQfIIjžŽ‚SbŠBRN~r¶Br~i^‰P»‚kQbqªBZbfNiPmjIòf%¶­Œö=b·†Ø§Á	 4¡;çãŒxœÛÙÇx£qC£@IjnAjQbIiQªnqIbÉæ:Æz;ÑÉ¼A.è‚Å
º¼\


A©%E™©e©Å
H*2óÒò‹rK2óóòÓÒ3ËRór'¯q8)\V¬‹aÁDÇ«õE™y%¸MÑHÎÏ-È/Î,IEQ’˜—¢Wš›”Z²'1¹h/²ŠâÔ¼âü¢bM Y
%©0Çd&MI-ËLNÕ³Ñß¼Ü©‰Iãd3×lŽÝ¼Éµ ”N{çâ€Kxœ»ÑÇ¸¼qC#K^b^ÊæJÆ;0k2‡C¸ˆ¡[\’XR¬ ËË¥  ”ZR”™Z–Z¬àçèç¢ ’Ê,.ÉL.ž<Ãá:D_•ãC?°df^Z~Q.PA~ž‚FH~IbŽBRe	PkyQfIIjžŽ‚SbŠBRN~r¶Br~i^‰P;/—kQbqªBZbfNiPqjIòæÍNÁŒl¼\y©å
›y\ÜùÑ-sM†8ÿŒk# Ê¸Js»2xœuRMOÛ@¼¿_ñ¤H
Ej/Bñ!RãD8ª‚‡µýBVxwÝÝµSÿ{ÞÚÁ¸*ìÅš™7ót£(R2·FGZè"r^x7¹˜Âõg ™/cˆø€þŽÞ“·’r˜Ì“;¿¥ó2whvø,ÒØÓ° Fæ>$«uºH;áNü±!ëè	NÂ-oðÆ.:Á«ž~p§?ïëÍb•Ae³—s£³°²Rû£'©wÆ*öÅª“ñ¢Ä¬õìø`¥÷¤ÏðV˜•&a~­=ˆ­p„;!ËÚ2˜|>EB¿§›; Á'VÂ
Ež,²­àIxcÛNZ‰3B’,Õë%¿—ùž)y`ô8¡¿—xÎç!˜oÓ3äëjÖu•`@ïy„†w´¾˜ÎúT²,Ñè²Åƒ±/ü†Ë±u7<¹3e
*Q×*ãRðÇ÷ív†i]UÆú0>h:ðã ¢(¨@WgŽþÔ¤}Ùr«®¡¡eHŒæòãí|¹þÊÿ:¬Ð4*NÇ]Gð?Ý•Qbð/	8æã>¯ÃÓ†ð»Ý®çîjé	^'%é	ˆxœkÜ/0A‘¹ 9s£¶$#[€³§kŒîf/Æ=Ì ±É¬¢’@:U!µ¨(¿H¡¸$±$³¸$3¹X!-¿h²=«=XU«³	XUr~QQjrIbRNªBb^ŠBi²ÄŒÌ< Ö\ 9ùy›•Ù¶0rí„ÊM~Än6P#
 gC4Þë„oxœ[ÞÇØßÇ¸!‘¥ 93usc‹˜5ù—}¸	ˆ¡[\’XR¬ ËË¥  ”ZR”™Z–Z¬ ’RH-*Ê/R )È,.ÉL.VHË/š\çpbB˜ãC;°²äü¢¢Ôä’Ä¤œT…Ä¼…Ò<dˆ!™y@½¹@ƒòó@¦(”d¤òrmîwšÆÄàì	U5ÙÄ5âÎÙ®=Œ wE^ï
„Qxœ[Í6‰M ¯,7U773¹(?O· 93u¢€µˆÖ-.I,)VÐUJ-)ÊL-K-V 	+¤å)€$3‹K2“‹Òò‹&–8°€õî°³+JÎ/*JM.ILÊIUHÌKQ(ÍC‘™Ô™4&?d†BIF*×f?Æ0F® gO¨¢É›™tÁ&O~Âä Í@à[›xœµ“ÑŠÓ@†Y¤íÒ+Y½s‘cl»eñÂÅîÂ*q])¶´„M‘19i’™:“4ô*¯ ä	|o} ŸÂ;ßÁKg2IÚ®«^èÞÎù¿ùÏN¾_ýpãý­‰>:!]`Ëå1ó9q?íïlUGVÏz:þübëË•ä×°[0@áqH(ËàQÄD ”}áŒ„@|ŸÇ"‰Bž÷C<£Îl%yKK]æ.	Œ8ØïtàØÅuPÚwÛ0žQ	ßET „9ÒY:>gªç°;<˜ûf²Ô®Ü;+mÚå¶7„®¡Á™Ý²[^|Ø}vÚ³ŽšjDÌ÷ÄÔà°ëùdšÕ%˜ïIú±r?QãI¨#8ƒ2WÙ—st¨G`‹ sæJ=cÐTb«h@¦¨ô$¹]“ƒ1º–1¤Êê)²ëû*RÎ$po™^¯~«d”ôGõQC”‘Ê,cÂ–ÀÕs¢x@‹"æ¢Gº*½z{ôýÁø´ÿrÔ¨·ƒú*ÃZlõöpëŒ¨y•	=Å¹Ù<ê'¨Ú¬T„h@ç0ýmiF´e}M”MaAüe‰ê÷Ÿä‚ìHLF2³ JjLBuÖ‰1d#k”jËüN8<X\ ?îõþ¬ojÍŒrmÓx¬!éIm²ûÊìõœ]Ó–~­=H.¸aØSkÛÓÖ)VQHÞ¨j=UÐms‹ùþ•·º#ÛÎŽ^aÒ›Û»éëZï²ë­ü“ãº¡žïäž×Ör)ÞõEüï
¤¼ŸüM²ï‰ïa€Ÿ{xœµSËjA¥u£ƒ¸D/Ñ‘L&¸“ÄgFã„|l4†š®Û3ÝUmW÷4Â|‚bí"ˆø"dãÖ¥«èÚKBðVwÏ#‰#>È¦«©:uêÜsîýþÊù±ã¼o;çáFJV4úèÆ¢‹®Ré+Æw{Nº4ùØ[^ëO<…J¹ ›y*
4à‰(HY„0„Æó}•jH4F«iG¸Ñ•–,êÙó$ä,Æ:;\¿6?»ÂE=÷;BC„O¡†P¥Dèö\AIé1,.ƒ«‚ÐÇµÙY~×_Ä`Iv„¼&8\Ób• 0ãÇùc3íxU*^zÃnÖï4kvk*ŒolYPN—=Ÿµ †Á†y¶ò¡Ÿi'Y“ÜZ¡bº(9UªCt…'\È„@mýšÙ&Årä˜X-€ê.—ŠûÈÇ=Ùyµ(šÎé1J„ì‹b¡¤åíç4¯W?š7«WÌç[g¶×s‘EÃ•îŠ£2	Z˜ç4÷’Ð²fÉILèr)`=h!0Îé}´4eˆ2ö{f«öÉñÌóÆÜq²Ú¼hœ5ß§/JFÐ6ÑõzÂG³WŸ)ù[­OŸ:‚ùÒ€ö'oÁÓ¤Êö¡mè2?¡ÖØ«O/ol¬”K‹U/ÑÂ¹ý†ôÉÒÊÓ™
ÂM.`bÁc9eIVkµÍ?"A#Lä¹}³ÙüžY+jö0ÛÔ‚qÖÞžOÂ/…›¯këý‰Ã U
®jûp²\Û¦!…a¿gÖ]‚ßÖ>®Q£Ó	ig„HÌ“»Õ£W›eôïjOfT@,VîåBîXG$;k‰ÿ–M,${z÷eó¡ó™)½â7“pxœRMNAÊÌ ÆÝ`‚’ç†L‹-„›		 0˜Á¸êMÍÔkºHuU§«¦„0;Ö&µsã4n½ðÂUÕm˜5qÙõ½÷ý¼¯¿/\/~xö@¥$×!¡4äòäËê£™æñáVÿ]ôugæÛÝ:jî5–ß´76Ö×!•9Ðœ¨9ìžk)øm`"–yJ4“ÚG;oa(ÓŒ&t¹ª³ÒØ=}äø#'Å}èP,Ø7¢0†Î©’âR8.n®ÇÀb`ZŒaÂÈP
KÎ1V^B×ú©kÞâ
tÂ”ƒR"(d¹ƒ±n>AÂu”h„KqgÌ~÷¶z¯—êÉ¬RÆÉ€c`–šŸÆQ¼g»(2óS•¸SF LYOVKŽt6Ò¥JI	¢ üdµ]>B—j/þãl+çnäôÚgÉ˜÷ŠÂY¢0¸ Š1q¼¨)ÚŸÝÎ0ûÇG½ÊD%õ™²'ä}”dºÄÄCÖK8Ág>7–ÁÝúŸ•˜ŸÍƒÎtÛ›õ»U²µO_Ð6û­Óµµ©Ëú¬nµàr:þß¾nZÝîüsè£Îèëýp‚h~Õ,Ì=¹£2ó£Ü÷mõ¿Þ´žÎöÞîZü±y5¿ ;‰3¹äT‚ˆxœ•TOkA' "ëMªÔ?„’h7	Áz°%Ú6Q’–¦9:ÙÍŽîÎÄÙ¤!^¼yôª_@)¼éðƒøÄ£ov·mRâ)›÷~ÿÞ›ýý¥ðöCáhP¸17ü8*¼«çÏúÏÃÞ4{tdDbåÏsB1 Ç¶ `ª˜Ñ•ÐÞl7@*¢˜TÌ•P¬ÕªUˆ„GCðb†%%14åõ ÓÚÜÛÆ}GØ$8w¶wÁÑ0$Œ«¬Õ4]ña€ý2àÑs©þúèÛ‰ÈÁæÊ8>¬„jý…ü7 áÊ@­ë_[ÇÓý€IƒîÁ0Fô\ïý¾P$„þD¡›qÌ
]…-âA?îKìOP"ØV3&’‚OX˜ÄXL•[ÐER§À|`È)|˜IÅ\Å"i\¶­ÇØ>ïÿìX"ðy@çƒ(	U QÄ¶H(ø Æ_›Ëó>Q¡vÒiIÿhõZcë‰m¹‰‰«hœË†"=| üSá£ˆVK«f€8‰¨,È‚™©¶-}Ô¸?¥°A£ºãoTðÄ0åÍýÈ4%I´9Aù"QÃD¥Â!	}LxZ™uÛÖˆ„	-ÃSæ-¤/³1|fò)ãŠã€¹9 ÜØÄNP§O’Pgœ¶…Ei¢XÄ8<ëì´s)Ù"¢l»2s©˜O3[Kèq9p¼53€ú{£>mÍn†<ýÅÕÈ¶‚'QßŒ|í^¯g¶ÍlÎfÑZ”¡“‡"Véòq:>E‹Èúð®¢+™ô%}•P®ÂIYnê÷Û—ë‹¯Ëü”òy ¶óóÒŸšëº³×Û8ù ¤‹V9·”éP‡¼ÝlOò(´‚ü¦Œ¤Ã±Ò1_9³t¶e[wà¿YLò3L¶uW¿>¨éŸkÕÛ`€á¼æs’Å‚7äª¾Þ©]hw[MD¹iPô­î2FyCïv/éçÝ>¡ÝpëŠÏ	xœ;+=_x‚"W^b^ŠnqIbIñFaFV?G?—˜Í>Œ{˜µ2
1º
Á©y)
~a¾©
á.Î
eÅ1º ùˆ‚Éò¼b“ãYÍ¹‘ÅV³–×ƒt%*„©ü"…Ð¼ÌÂR¬($ççæ&‚Ôq~iIAi‰BIFªÈ9
 ™Å%™ÉÅ1jz
!@áÝ]ˆªÝ´ü¢ÜÄ…ü‚’Ìü<…òÌœ¨PI†h*Ì°Äb…â‚ÔäÌ´ÌÔ”Él†<‰•
I©
©™@[Š&/gÛ)ŒÅºÉ‰ìO'Oå)åFõª
¿‚7 ]ütùï€lxœ›/<K`‚”P^jIbAn~JI-ËLNÝ¨ÅÍÈççâ£ëï¤]6;3ne¶ÃTZ¬£«à’Y\“X©™—–_”›X’™Ÿ§˜”_Z¢ Ö¬ U:ÙŸUAb„²1iA
Ñ1ºù
6i¹%v
5“Ï³‹1å–L>È*[O¤Ñ@óJ2R2ò‹KbÔôB€lT‰E©
™)©y%™i™©)
¥Å™yé`-žÁJg ›ŠòsrR‹RKÆpéMÞÈ.Î˜;ù»$|Én(Ê¥‘’š–XšS¢©Ã“æ™œŸSš›7YœÃur!G¢×ê 9
‰
…1ºI‰Å@Û!²: Õ™@K'sªÈa	%PAíåtcä òô›8ç‡úXxœ»5•qNã†tF¡¼Ô’Ä‚Ýü< •’Z–™œº¹œ±Â‹øäÿöÞn˜ÂÅ
º¼\


.™Å9‰•
™yiùE¹‰%™ùy
‰Iù¥%
þ~!Ž
PÕ¼\6ú“¼d&u˜ª1NÙ8ýÔ\;…hÝ|µœë´ÜÉ½Ž²Œ¹“×9î¬'Ò
 q
%©
ùÅ%z
!@ªtbQ*/WfJj^IfZfjŠBiqf^:X‡'D°RÁè¢¢üœœÔ"…”Ä’D= ›íl&·ºÌcË-QK/±žlç¦8Ù×UÆÍu“™Üêj(ª ‘’š–XšS¢©£`ôGr~Niîäý®r,YÅùy“»ºLþî6É‹Gt€…D°†<Ý¤Äb Ã ’: Õz“÷¹ûÊb	<`°AŒØïYÍ `[°ìèƒlxœ±JA†9å.­›TŽ…$­X{…El„kÖÝ9o!;sìnRù"6¾…¤µñÍœ»&]°†ùþÿ›¯³ÏáÇåIpßãQ’-æùêqŸ'?§²j³ôâ¦d¨tO«9B­b‘AäÅdÞb€†7[‡í]zÝA&]¾5H†}1	5j[Z–$Ç©h™à‰¤†Zi½õ)nv ™uDÓ]Ç
¡â‹ñ–2Ð.ï>€òÖ)õ‚”ž]õÄF.-ÁÌ`/;âkéU$Úav¾¿ÍÖÉU¯xÜ®}L»—Ïâoæîƒ5xœ…¿JA‡Ù”÷A›Ä.¥&Ê	Ä?ˆÝº7ç-ÜÎ»›ƒ«¬ìÄˆÛúBj_Á—	Ø	îFH%Xý¦˜ï7óö,^—âÄÀ™•1Ã÷áMŠÛéÎ^ÅPªÎ®ç­ô5xIPŒ.ÐjtÐq³0–ÓÄœÏ¾:¤’íÈµ¨t¥hŠ-FzÍÿ÷‘4èZ©0ÏÔÂZ$ßô ˜•Ç2mû¡fçÇ —qÜ’©Íœ[]F.@eÙ$$Ï6'‰Ë¸ª	öKìà®m5Ý'‡Ó_ª‡c&o¹iÐŽƒ<†ÏÙpµ>šv7êXçÙV;LŠ«ôÌ—âIü ÖÝ}”âÊsxœkåkå› Å™W¬[”Zœœ˜·Q“‹‘Ë/8F7È5ØÙÑo³#ãVf¸¬BŒ®B˜U¬P’‘ªW–$sS‹“S‹'+²*såÇ@UOa5ULÎÏ+)ÊÏÉI-R(BÖ‰Ð4ƒõ²NkØÔ‘MÜÌ 
§>ªì·Yxœëëg¼ØË¸¡‘;±¸8µ¨D7¥4·`sc£²Àd‡S$¾‚./—‚‚‚sNjbQ±BIFªDR,©‘™¦PP”ZœšW¢9ùÃA£w8²0ò@x¹Àf_qŠ3*-.QHJ›äæ›ªœ‘X”˜\’ZT“Z–™œª ‘Za¥ äèç•å¦hN¾ã¤9ùˆ³µOPOr~nnb^ŠByfNŽB^>Ø¬ÔŠÔäÒ’Ô…ü<ˆ —&Ý˜Ÿ§¦ladhn]¢P\ZPtwf‰ž~Ýäûn²“ß9±ONpšœâòV§·fºF x‹Ã­ ÙOwÙä€}xœ»ØËØ×Í¸!‘3¯X·(µ891osc¹‚;™ÃÁKÎSÐååRPPsŠJ2RòÊrDbnjqAbrjñä‰Û‘tÇ:7J-,M-.)VðóMUHÎÏ+)ÊÏÉI-R(B6n‚žÂä9Nº
™Å
¹‰y)‰%ùE•
@†Bniq	/WR*5*#±(1¹hÒägNª“;\u'?v~$ƒÇuz“_ºø"ùÕÛµ ün_›â€¤pxœmÏJÃ@‡‰¡Ô?‡z2ˆ‡
ÆêÁ[-¨½T°‚ºÓd‚³›înV*}a_À³7ÉÉ£/ãÙ7Ð‰ô°ììü>f¿yZk<4g’ÈãÏ›‹Îl¿Ç¼_:/ÓÇeSóÀGÁàüáBpŒàH¤i@-5ô#ä:‰ÇÀƒU„¸u.9]*¿Õ@¤Ýs·W’ˆÑ<ŸA'B“„Ø;q{—ÌÐ‰SÝ…	ýF¯\g¹f^,dèý2².,h*Ä 
…ötîàêþË)¬œjÖ
G
’?b?Ly2)!
ô5þ2­Üi Ò2©Æ¢5¿:U¼×îœZó8FiÇõ ñ½´i£67)î‡]ûQmþ—	¸Q‚SaY³Kð	çè…çè	.xœ{&>Gd‚"KrIQÎFeaFç ŸÍŒ{˜ÁB“¿±hr9çç•åçä¤MÖ`u ‰Ç¤)Ø¤¤–e&§ÚMÞÏª1Y‚-ž+®ns[$ãfyÎ™Œü Õ
ú@¥úye¹©“OsµMîáÒ‘@WˆÑÍWÈ*ÎÏ*™|Œ[ X4bï€	xœ›#2Ad‚s^YîFY!Ff¿0ßÍFŒû™%€º™)ºÉ%E9
1º
Á©y)
@ÉÔÉÒ¬²ü@†Br~nn"P°8µd²«+PCŒîäÖj°Xù™¡BÌœ{¡¬#œ ~’"ÿã‡¢xœe½JA…ÙhX164©’Ø(D¢ùiDâ_b
S%»wÍjf&ÌÌ(y±œÂÚÈ¾‚…¯`c'ø'ëŠEŠ‡s—ïÞ÷çëÉ™Þ:Ë¡OX¬I5QfvpZŸ	ÄÍ@™'ÝÂgèCƒSÚ·VùÈTÜëS”ã¾‡Û PE‚™çÚZV ŒF
lÛ<¾­'[÷‹H«P©Š:ô°p­*`h­µÚ#<ñªsfz‘ËPeJõ­•ÑÖ!D£p‰fØøðï /’¨
›{;åÝŠ„pÌÍþõæ3\ÛŽ5DøÇLáíR©DäYñg³¹Ÿw3n¢ @aÎ:¹ß?í%E¦)–€0(›Yçuc1áp#9¢mžg—ÇÎ>ŠIï
7xœ{:ñÍ$ÆyŒ,É%E9›ëìÀ¬Éì!g!çü¼’¢üœœÔ"…¢Ô’Ò¢¼ÉE&Oq¸(Rc£Ÿšk§ –Sb’Z–™œª–^b=ù„£þd5§ß\Ép½›µœU™6Û»G0ñƒt)èUëç•å¦L^éé;™Ó+DM\A7_!«8?(¯ºy–—7# ÔD@²à€xœ{3‰ñÔ$ÆéŒÌye¹›³ëí@ŒÉoìƒÀ´£ƒää~¿0_…äüÜÜÄ¼…âÔ’ÉK° åu7g:*12e7OpšÇšlä¾"÷È½‹ Æí#Gåˆ8xœ[¢²Lz‚s^YîFI>F>¿0ß]O—]¿à]ŸÍ¦Œ[™Ar“_²hz†ù*8ççæ&æ¥(§–(¤&g¦e&+ø%æ¦$&§*¤$–$*—•&—”¥*¤åÁT¥¦(ø89‚DrK&Û²K MÑÍL‰ÑÍ+ŽÑÍIJŒÑ…J–±†LV`c™|ŠõT½gJj^IfZ¥‚Y–—d¤bu€Bf^Jj\	ÃSS
Á*œƒ=€9)›½ØóYXÁnŸ<ŸGmò}îpžœÐG
 2_!)3/±¨RÁN(Ÿ™ô¥š^Qb9—2H$U¦Is2?¯HÑdM^e¦ ×Éßu
PŠ’å€ýxœû»„±u6ã;Fæ¼²ÜÍ¶Œžv ÆäVûh0}ß^Ç3ÌWÁ9?771/E!8µD¡¸ 593-3YÁ/17µ¸ 19U!%±$Q¡¸¤¨4¹¤´(U!-¿¦*5EÁÇÉ$’›X2ÙÌá¤ÐTÝÌÝ¼bÝœ¤D]¨‹cÊäŽ,›3ë=SRóJ2Ó*üÈ²¹$#a;/Âz…Ì¼”Ô
¸¦§
¥ ‚U8{* rR6OpþÆÆrùä9ÞJ“Wxm€q¤õt3tó’2ó‹*ÔÒK¬€²ñ™)ñyÅzE‰å¼\Ê T¨{æøÉ·½Õ'¿ô™låª;99ð5»¥••±áäÐ  7B|å8ŒixœRÏkA&µIí69DPŠ >Ôö ­A­—6‡Ò.Ôñ°Ýyk³3ëìnDòˆ2ÿ‚ïÁ³ÿ†7éÝ»'Á·›f‰Ðˆ{ØùÞ÷¾ïýútëýõWWÕ(fR0•~¼ýk­÷ø€3oŸ³ž?¹_ûrá°Šgà£@O Êdô¦xÁžŽã€">f&ÊH†ÐbL“ DA@š™<Ìrƒv·~·NªœÙ¤þÔBcyógœ©Ÿ“ßîNopðÞ‘©‚òÿ¹cÛ+v£¡Çÿï‘6àŒ‰ÔïíWðA¢IUö|êÅäÑJ\Ÿ·:pÜ#î9ƒËôÄè‘$WQAŠÊ=œ:óM¼”Î*þVÿ#IG„Ž‡:|	G’ð×r8„c„<Å™Ìœ0È”¾4'ÿLC@Š³ùü©M2ÊÐ|ƒ¯riJ5ê¥ë¸ý¾ÃÙ vò\
n¿^<œ|[=­­—%¤8”mRÛ& ï¨Ž=m¯ÛŸkýTJžJõbZÐ	y„…ÅYá4=Bc¤((óÚ·Íñùêåqtœ›P¼`QÿÂ:g}Ç¤ãJZØí5ñùÚ_<4Xh]¶ß›+g1i¶žÔ–éÆºÅT–ŽºvéÒß#/Jï7ƒxœ•’ÏjÔPÆI”"êBÁ‡"Ó©Øé8í0V;mªÃ¸q•æž´3÷Ž77AA¼àBÄ•.\(Bö.…®|@W}Ñ›ùG™RÙœ“ïü¾ó…óó­ñêñ©nÌ²¤kSb³(uëõ?¥z¹º9Q®^X¼ç@“w»#ÐF	Q}P\¯‹QÏóˆ'=ˆ¤ˆ}T×Ö
BýZ£ê°Q˜¿oÛl,ÖàÅP®¸§¸'Wà	ØFôcãŠÑod’Áý_g¸ ¹c%ËtÛ­›yÿ" l h¶['@7B’>o.ÏÌæ«©ÆÆå3ÓB¨§ÐïD8ï	žP¢q¹(ÉÝý¡óUhÀ¸ÌÕÙWË„Ñó×,£»!÷ Á„êö#†°‹G8„íLÐFúâ,û˜(9xÚ‘Ù“˜…áÆžÐvE6'ðaL…†ª[Eu°þ!}}ûÇÌ¹ü ¤GKºÄEVV¡sQ}Ù<½¬ˆ#Êö†÷5ÐÏx£euvž ”d’ÉlUõmÛéOƒg'Q¶ÌKU0ÝþxüsuåZÉçëµRO`Ý2k%BõÌ1uŠçrá ¾n;f›ôó}^ëƒßòÝSÖö)õþÎ»“•êÒRµRQ»ó¿[»3êAŠòlxœ…SÝjA¦H*†ÆQ97•³i#¥PïjÚ`!m¥5é…{3™™M†ÎÎ¬³³IÂ¾‚eÂ¯D|Áð-<;»±„öj™³g¾¿sæ×óßO¾<{ iäQÉ‰ù/ÖžöÞû^op¸æ{ý‹ƒµŸ÷n:®á±¾½ü vÊÛ¡/L8'†Ã0bÄrx'b«Íz’©ä×Á]ÏHãiö­ö¨¡´ï%‰`ðÑ²?µ½Íñ.´h½»A0æÀ²›ìëú«´±ÔôŸ	Ê¡É¯ÞÀ¶Ô,äÛªÛò_vê8ª˜Š¨C¢Ì”Y¡Æ8kcUJ°Èg5ÄêXA‰”D·œZç:"†„x41è4p¥™À±8œ¹6—'”ò8’µDH˜ByQ
°V(±7Š´±BM`8<:pÿF\1üœGœŠ@P8RXÍe¡èæÉ(=æÐEÚ[bb¦ír|µm0üS""ŸŒ–}ã<èWXí”X`Ã°KˆŠ»ÂÕªtÑ†DItè:}Ï÷þ·ŒãˆŒž	x9‰œ>§è:Š¥æ˜£7^ÛºÔ™KC…‹)Ww±·ñJœH¯„þ©[!,ÉW2QŒBÝØ8Uß›ªö
u½sv;õƒ"ÒÛ¶ÉMY ì•“d«Ú,‡ÇÜ/-Y%±RU™ëìzããž{BñêÚ§VÌŠU©¼£’Š—	d»Í•G*ÿß dÏåD‡è3xœ…SÍkA''5Ò‚B…ç¡@6RJ	IƒmSl«ô6™™$CwgÖÙÙ¤!xñ¦(£Á£W¡P<zò_ðOðä?¡o¿R#Z÷2ÌÛ·¿¯}ïëÇÜÉÛÜÉ(wIQß¡.'Ú¾n­œ>ÏM›Ë%{µu©²ºáò Ð‰î`Æv:}è	íM‰æ°ï3b8ÜQzÔ¨oT}ûfwÅ~Ú½h´ÞEppFð¾}í²TN
ÏÀ±ßÛßÖðÿ ÛW’­uœC2ƒ.PL¢hûà!:&šPÃu!ÏøDPE~|ªx©Ê‰Çk%P®¢Gð÷Y·/;Îœ*Ï#’Á	@*P¾JaŒ³2V]*2
Hh”GŒ Äugj85‘ BÞG-Þu jkLQ+°7A‚2Uú‚RÃ0‚@Ã9.ŒÐ
OjCµp`·ï+m„ÁþþV7z	\2<ùœŠ¡ °%±ÉBÑÅ8šze#‚v1P].ä£œoUj ùÓPhDÍš¥
ôæØ™Ñ™11À¦`2jÈ¾Ž}že…~†ËÊËJ­Åö'ûçiœ‚¯ÕD`¨˜f£ÊÄ¤‰Ãc?t®Ï{*‡:ebŠŽÆøBméŸÀ©1V)ä¹<—¼ŒÝAèš Î2åZ‡?¸âaP¡IÂK£°Wº?sÒÞØ¼y!Å·‡›kón’×y3ÿ;!?ŽYM4Y”ÅL}¼vñõ(—-IùKñªE™UK·Ù°k½ÛöóÎ“;ñRË[Õ¦FL’Ñøm³R<µo÷úÛKK»zú¥ÿ"÷_wá¬xœ›/üMx‚œXzj‰njQQ~‘nQjr~YjQ¥nN~úFm~FNw×]×  ÿÍÎŒ;™3±«TˆÑUNÍKQðóMUwqV ª‹(Œ«Œ+-È)MÏÌSHÎÏÍMÌKÑQ(J-)-ÊS(H,*NMQ ©È/-)(ìÇª*‰Ó”ÉM¬zŒ\“7²ú«€lƒš‰[¹"›„8XB&¶)%±$q²Ûv°ÃÓ'›±*C]‚E9PE*XÏæiìaŒJ„ý8™›Ó '¼8C3‰†î€Txœû&|@h‚”p~rnNbIj^r¥nn~^fI~ÑF>F>ç€]ÇW?çÈÝÍ>Œ[™#°¨ÕÍÉOWˆÑUpÉ,.ÈI¬T€J+@¥@Ò‰é©
)‰%‰
™y
¥¹‰y
E©‰)‰I9©
iùE¹‰“óXE€†ÃtÇÀLŸ¼œU?-·ÄN¡hI¾‚=ù5«…,^k&bËPR Š&åä'g+¤¤–e&§*h¤VX)è9úye¹©y†“5ÙxÞTHÎÏ-ÈÉLÌ+™ìÃžËh0ù{#×ä4GÖ ‰“Wp”CýW¬PJO-ÁêQ gÀò'Çsªb÷ÕÎ( äÏ†âèîxœ}±JÄ@†	v‚…h+üZ¤öËõ¸S¯:-ì¬ö’½ÍÂf7d'Â¡¥•®­…o ¤°ð1| ÁÒÆq/ÆF‚SÎü3ßÿÏû]t=ÊhÍ&Óœ„Iæ,·F‘-kŠ.v»þsorÖÑgÚJ°•e #å
ÍçhhX(
.RNÊ «rnP
žò©˜Ù2çþaÿiÁÅ_®ôÖg9Å’ú¸³ˆ5õCÃ^6þEùÕá;ž ±y¡7„Tœ«D8¸ª(lIÊHP¦Üï^½5ª£%êÛA7¡šJ‚Ý©@åD
Nà •‹N³ òÛ‡›þùèv§ïÂE)¨ó!k3ÿ1â¯Æ“®Ðõëø:ú-‹›Y¶?xœ}S]k1|Ž~Å@.i#'y5‰!$.êâPZBä»µ­æN:$Ýƒþø®ä³q©±žV¬vfvge6I›×²TLÞÊÊ¬“¥]]Þ]‰‡óGˆÉãx($aÎ@AâYûºT-º,º,b¶V+B¡‚‚6X7•2Â‘*Ô¢$,­«Tbþs2ÍGóD–ß6ä<½‹,2ƒ™q‚9Ã}AÓ oRÚ&ÔM;Ì‡ûeøi‘Âw!ž‡ó§—Ñìu4ˆ"—øÊRÃš0ù>f©	+½!s}¾£ž¯\vQ+§*
ä =¸Q~c]øÖbA Í<GdùšKr®í%ýîã†/7±ñÛ+0ç¢´ùN?0wWInuYÂš²ÅÖºŽ0}š!·U]jeBàá›º¶.h³b\·o©'^È7eðÑÝÂ&±±r„Æ´Ô†
æœFÊÐC8
3·× ç¸>·í ¶ÚS|Ÿ°X$c’Wƒ~_üoß!u1§&æh¯{—D°ÈLË,Î)ûå­Éz˜ÆXÃô	r¿e¹2ÑƒÆS®Vº¢¢…Ü–âÖ£o;@<üñ8ž}-åçý¢û¤gÅºNíÇ²[§ÝàúâËñ¶Iñ	çvúÈÛË/L÷gÊØe"I?“[rì†<è¿CÛJxéƒÌdxœ» úVh‚s~rÁF	F>ç€Ý`_Ç ]G—ÍnŒ[™ÃrºÅ¹‰E%º‰))º9ùé
1º
A©%E™©e©Å
®%©y)©)
`m
™yiùE¹‰%™ùy
ùi
é™e©y
@c’ósr2óJRRË2“S'G²*° ÍV˜ÜÈª(Ÿ_ZRPZ£Ñlk“–[b§P´)_Äž|ŠÍ~²<û3^“&spÌžœÉÆÈ5ù §£LHF*Ðì´ÄÒœ…Ìb…<Q91jz\zA®“ýù‹™€fH(”ä+A¯PÔcPál  òWAbz*PýdˆËâ„¤&	ÈL^$¤ ‡àbVá‚ÇxœU±JÄ@„YÏJH#b)ca
!Çõ‡§1Š)JrAAÖd“Ý¬áŠk} ]{_@EØúgiéCˆ•˜;mü›ù†á›ÏGòzCžSÒ‘QÑääz0}ô×æñI«V•ÓRY4Ž­L¦°Œ >S%g5«°;RLÄ,FàÙþ\$²Ì©âR@&HyÍœCD2/2N…BÌj1ý´õ2ßÖC_ÚkúÍ^\Jre¦ª1,	3SýÖÐÛïÍÄY'Æ¿Žæ{g@ôÙÞ]²¼uMs5»ˆ
œ3\U-U P<g]/bíº«ÚÛ7ôChéÀszâ,¯(‰òoTìœ¦cš²®&¡÷Kzl4÷áùä$iðëŠ¨xœM1KÃP…iÈÐ¤8¸è ÊAQ„új×R-Hq,J-ÝŸÉM|¼’›ÐÁaxàêâè_ñ'8û3ôE¼ÓîýÎ=§Ý}î÷u““0QÑ†íd{í”¨rY²q,2“B`I\*j¨Âõ†IÇãnqµ\AéÄ”¹de4L‚T5¤q3¿#“™’šS£"j_}GFû¾·oj.j?——IÎ3<BtÒ¾õfö«7µSïeË‘ðG²Þ“=ö>L	»ñÎÃ ’÷„ºrI†«œFX=óMd1TÝ9e#»Î<	Gß™°Aù
ì¶Ç›ù]ØB¦4
‡¡ø7áº’Ð°ŸÁ‰UƒÓoJRi"çOˆ–IxœmTÏkA&±¡AE("þx¢Öš­¡õÔ66š˜6¤ZlQD=Ìî¾$C';qf¶m¤?b/zAB¯ÞÄ“½xõâ¡G/‚þ¾ÙMjš5‡0óåýúÞ÷e_gÞ¿É|t3§:¨4×“Çmö·2;ÅQ0úyûA
+.Oœþ‡ÅLôdùG*p±t±Ç<Ãe°4)ÌBrœlšØƒ<ƒãØó\†>Oóy!›yInÿ<H0¦³ÛÉ»<úP:”þÌŽ”ÖDh(ÙÀýGk>nssÙýÃ;W†W'E'Ë—ÇsY€d¢¹ò¦4úàv!Ú+ÇrÙ6ë‚‹}.æ½ª\?“ÚHTZ¹Ð{ÜâÁ¨.	
âÔL‹ëxÒ$’îžŒ’B ÝbB€a[˜Ð÷CÅ¢¥¤‡ZÛc\`ˆÆkO¶Û,ðØ´í™‘ª›jpþ¸Ìòê÷Ýf"DàZ‡„q–äCd>Ô©f™6m˜+¸n%UîÒ¤¸kh¹þñHŠ T¾Ô3à‘ÒóBåÀ=ú}Mª+4ŒÑŠ•ÝŽ"zPpæa£ƒž˜¬ç–S˜w
NaÖ('5*±æ¶ÿ”ýZõéÊ‰¥‚›åÖt.-U¯åŽ¹Êjuö?ŒÕ*	!=fP7l4¨ÙaÔ¨n×Fhþã(|¢6:%‹$èöÃÈ/${¨»Ý#¥µQ¡gŠÝ9­«–” ó±6X:°šž¥Éi6ìf<KßOö>“Ô!Ew8¹IY¡l÷Mi˜ˆWVÇ iZS›õú´¥iZ'06Qô­z#bÕò¥u²‰“è_©·áSõmÔ\)NÀ"¶‹.˜ê.ÎÒÑ‰;G_V¾§ß“w«*õžœ¯­¥EíY*ð vuìÛÿ]û•ùD1´Õæ	†ìLxœ»g´Òp‚KQjbÊFy.F– WG—ÍzŒ[™%AB
1º
Á©y)
‰y
~a¾©
A@ÁÉÿX¬À6Û²J°
‚„’óssê@Â“3¸ôdÓŠòsJ2RrSS2Ks@’Éù™©Å
%ù“Wpé1ç—–l¾ÁeÎÄY’¯ââ²Y’wóæ.Á+ì `æ1ãê
†Ò	xœk?Ê¸íã†tF–¢ÔÄ”Í9Œåv`Öäö^2 †‚./—‚‚Bpj^ŠBbž‚_˜oªBHA€ÃyˆG56ABr~nn"PØ€Xw=¹´¢ü\^®’ŒT…ÜÔ”ÌÒ\lr~Afj±BIþäyî:ù¥%¼\I•
)©i‰¥9%
›oºÛ±p–ä+‡¸ø‡†lVôñæØ|0ô jå:{ìB†Ã+xœRÍjAfu1l#‚àAs‚’@z5×8PôÃîŠ»êÁSÏLM¶ÍL÷0Ý“°AØ«àÅ°wI@Ÿ`ßÀ7|_Á£U=fÍæd3ÌÔTõÕÏW7¾Ã3s\ ¬P¥[»Û¢wå1xÚ!$±„š”Á›>Â+òž´ùîìó§ÛNŸâ>| 9…hþ¨õþaª¼’™Îo¢½Z:ßZ¿[m&™½¹7ƒ¬²…ð„S]”&…Ä–x|Á¡Í+®³+(+{¬SL»ðVç9ÔÁùÔÖ^ÄSH1SuîAg0µ5¤ÖlúËPÀ%t…¾#1“Í¡žW•—qn“£^äòXíïí	é`iwFŒ€€ 
Ù`ebkãš0fL›ºˆ©L›5Ø¦‘JGÅwa<ÑèQpŠÕÌRŸ±r˜Â±Êk$¨è¨\8Ñ~ú?ÂÊ`¾éB£Dê™ Ó˜Ó ¶4vá1ÍŽØ—9Dg·É¼Ê£g•¨-ÖŠk=…K›û"‹‰¸Ú@<õèBìRºkñ¬õù­õ0{Ñ?ù˜Â¼·ö`kp©Ý‰l<Oƒ¨H?²xL£ñóáëñJêÞêþÖëKäéÿõwx&èœª¦ë±¬´Él/j¾¨„ùùÚÆÝ0M^m´×Öt?×.Zïhÿ3éÕa/"ƒ¾!¤‚+aÉx•Cãƒ“	*mô£v=&ÎY*Ð1ÿÑº?cº"U–…rG«|äÌuàÀÄŒøov)é/AYS;R%<Î•µÑ‡µÊì½K4Èru¸ø"ÚíÅÅ_7þ õù`¶í‚ŠNxœkå»Ê;Aj£
?#kk°kÈfGÆ­Ì“X%¸’óóJŠòsrR‹&+²*OögµBšÄú™[Ã¦>y[8 ÒÐµàˆ‹xœ;¼„qB7ã†tFþâÒ¤âÊâ’Ô\Ý¢ÔâÔ’ÍŒåvè‚“…¼LÐÄty¹‚Àì’ŒT…¼²ÜT¸"=^.ý‚ÉE&¯ä˜üÊaª2š6ú©¹v
j9%Ö)©e™É©jé%Ö“_9n–J-,M-.)VðóE2Q¬KOa²ž³„¬Bf±Bnb^JbI~Q¥¡[Z\ÂË•”
äLNw6\ç’=YÁ™Å/?/ur¡‹Õä­þ¢`×ƒ‹péäÐ _ï	8Ô%;y‚?Ïä“ ¶Úq*ç€cxœ›ÐÍø°‹qC:ãæBÆ»Éßíý'8H$çç•åçä¤éñrÙèLp–˜<ÉaædSÇ[\ÉÍN=ŒHüÉký6³ºt3 «Ù ¸·‚xœÅWQoÛ6~×¯8äauŠX¶“uÅ¼´@–¨­ÑÄ1l-hQí–N™THÊN°u¿}GŠvì,	‚5ÛX2yw¼ã}çÉ˜ ¤§ýÄÜ”Ø±˜c[¡^ÐcÆµAµÒ8ªM!U¾¼|:‹úÀÜøWø¢¡0¦êw:Ëå2Ìd:•ò2”jÖ1ÙìUE§0ó²ãÜzïQ bÆ®w"ÓŸI>MNabnJÔ¢Ñ°Ð‚Uºýê«•u
4·ëØá„Š½Ûët;ûÝýƒ•äŒ‰š•}^œ¡¬DY«Q3wÊÄ¬f3š‹Ä¬äº°ÓA€RŠ’ö8š\ØçûÁ$ŽÆ;°Ó£ï­Ó§‡þåÝí¸µÛßúq«¼„Ì¹@ÐrŽPIeØ”—ÜÜ€6už?£§?¿õãVñ°Më™3œr&)^u_ÿðú`Sƒ’mt8µ“3•|ifJæ9¥·ûc»»ß™ëY·Ûí„Vö\‘r„D´Â„™†£+HZì*±l¨µš}ñ¬@j4aÎêÒ@.ÕœÃÅì]d\³iIó¦*P0Ã¥BQlÉ~«µá9OZ,³`ðšJÌÌ™šqR”7»AÈ2(Ÿ5gGƒ!ŸãhÃ$>Çø#xù\n&öôE;Áß+$m¯~3ájª…O˜µž|ž&ƒ	d]Qó É+ÕE²^-ÉÇp˜á‚§ø¾$í¤-ØuÅRLÚ<{s(4ÏÞÂäU@3ø5€G?n•T]âÍ›C÷jÌSð£'Ù‹Æ^ÜÚ_‚=É^ÑÙ›C÷jìøÑÓâ¯LURüöÕØWàGO²çH¡:;NwGÎTN¢Éñx0ŠçÃ˜¸@sÝ-°©œÏ™È€k¨5f–Ú+Èö ·¿¥"AU^À6i ä?ù.lüž;—–£Qp‹ä<xŽ'ð}p¾@¥x†`(N+€œc™Ñº0È)0:ýNÄ²9·´`Š¥6ú†P{$£ø+š£¦Â«š+Ì\hãÈ´æFÑy|(Ç5¡'ÌV¶>âMßbÊâQêÆä—êïZœÜ"}÷à—u
ï®¸kSÚíu·ÔÇ>ÅwuíQ4ût©!à„a\hTêƒ¾ƒ0­eÊéúÏ`ÉMát©Mì;rÏÊ$MªG·µ`ezoÓ»Ë°µpK/’eió?’ÄÎ3™oZ/›½ œ"D×äÏbL[…Ö ú}Þ…)7Ö½ˆ”IK^õ’Vzµèú°zŠmžfè—ÿÌ»èüûP

÷‚q#¯ë"äÊf•Z”‚:B„*MnˆJÖ³FrI.O¥ÖÔ¯ºÆ3¾õGÊe³ÏGì´µ»wÓëb)1E˜ËŒ®hÒ`šª’¶óSc	W)™¢öµƒBð¥Îm4žËT^u‰­þîOµ¥yèñïÁ…Í_íÓo×jrwÆ_­°ëCiË“ME8ŠG§Ín¼VÏk}Òýô¾Ÿž×omV´ïzÚo‚KÛUöŠ-‘Ùªm+xSg¦¦$£HÝ	¥¦rÙ•Ân¾ñyð¨ÏÞý>ï¸©<†,U·•›’ÞQGöþÞ·ÖdÃ­­ÔsëoñIW˜Z4”Z…æÌXCzS0WF(TÛIR>¦7MÉü/ØðPÁ¸C‡‡/‰;y ¦¬ MÚ¯ï!Ø}ð&÷®{ð9¿§û:IéÛ.ÆÌ6y=jéÖµá{ZÇcWÎÓÓK»†ï¯Òn º°uL×iŠèxÆTFÿwusy»ÞÕ2‡57‘Ù6
¡¬¬ß½ÕŸ¢…´¡v)Ôu}³}Jôéèltù®•Î,^³yEÎào‹/l[lÅ#¦Ì*ÛÙ&mê”Êé\ÿ™læSŠxœTAkA&HL\“(¡1‘ªÄÔÆ
!i	%…à¡q1—ÉæÅ,Ýì®3›ÐP%*xWæè­—^¼HožÄ£ÿÁ£ÿ„8»³Ólš¶
»Ì¼7ßûÞ¼ï½ÝCx—ýMãåÐ¤øåöÕX¢¶ùøIC¯mÄ¾^X ‡šÜòt¼¬ð|;®óƒøFöy;ßÎ»tÇÕJ°¬Ã+ã‚´øÛ8HõÆ.V+Á"1H+‚ìD`üEbHËÇðƒ‹•Ix0œÁ€Ø]0vÁs@Ý˜ E†tD<Ó±A<l2@æsàRÄë@õÑêÎA}~Òqh¼xšç¿Z}„žé2Slùa²œjôÀ'ú£ú3þæÒâL;ð„Eä|Cz6u£Æ.°¡a v™Èý‚Ð®…Œ#©FÄ¢d)ÛË­ ×µB³©Mõ_ÏÁ\ƒ´TAß’Ö”àËE¥jÍêœ=_Óbq¥wLAŽâÍŒñ8I^[j*%…L5_¦»ªþ)½´:W$õ¹:C[Ôb2©hY:ƒ š©ˆ?“7jÚ~h¥‰‘°Œ™Òdz¤‹-á/CëX“ã6° æ+m¼¼—A‘x(5líhÄ²:Îž¨ã÷å[üJ&%Þ{“¾Öz]ní‡	±+LM˜+Êÿ”šB}Ï°†Ì!D.Bï+èT-mÇ®ž¤¨ñAêˆ”ØƒmÛŸ_:3×ÿÅ?8/Í²f8æÃ×ÎKÿïðâÃ~;¿µ•œÏ\_S¿5ÑÿÅ)ó Fécú&ÿ–~_mÕ¹=œcÕ¤Yïtº>göcÌiÇ¹xœ•VÛnÛ8}6¿bÞœ`-ÃÞ[ )`¤`tkIÐÝ"ÈM#¢º-I»5 ‡~ÆîïõKv†TdÉv¬^$’s=gf¨|›adÐn#©þÞhƒgãsquâb>ù0="?T‚&õ—ÌŽÑl¥ÓE.ÄÝ§ùby7»óêÞÄÃÅGÑnlõá2Æ­Vø¢(—ÚR*Œt|u™[¿…
¢Â÷£èõzÀÉ*ówW—þå¥Ô‹ŽXÄÊF¬„zÑ3nWâÕ¥y1õ¢+FaKã—“P/:bÉëG!ÞMï®ogËûÙbÞ Â Ü'·{ÜLU‘e2A[ØXŒÁð¼l„µ„²”1+ÝT‚iL¢ÐeûrU¯…Xøà>ECÈÅ…8Ií÷Ä¹Ñ1‚£<yÖš¬a¶¦¼tþädœéT"	E‡B1DÏ%”IÛò>-zb
hÏµ S
ìûzcæ®ï{Ü] cîÃ [¢Òôi}*(ˆ^æPZ[(-ñðE»Ä'…u>^Ì¦ï§Ÿ`¥…(zóõýÛ?ãïßþJÍ[Œxv®oYK%¨>ƒÝ(…[vþ$Mœ¢µPë[™n0˜!€”~SÃ>ýN‰súËºŽÒ¯c>Uuå—ä…r øÆ+8ÓC ¶x…Ñxt¸ïëiÂõt’¬ù;õ!Âäi…°É)ym‰jBzmŠŒ-`«
á†\Ë4…‚öÍK)xÌì ‚/ÖåÓ4·Ç¯ÓûŒ_Ûø=mrÝü Öa²Ú°RR¹n†â'ñð(ªã[}äH«w¸Ö¹öšÕ(©në8ATã¤úÓh‡0ýªRê™m‡:QýœTû“	UNGà—cI0ÐFæÎÂ"Ow]•_OØ|Mç·Sn&ÄU[­£ñûI//ªŒÞ$ÑÍÍŸSˆŠý<Ì¶Çõ!³Ý²ycêÊ%’ƒ§šua2¢hµk÷÷ÿcºªýÍUÝFÄhuÔQÄbôæ•¬µÏÖß:œåì)/³AHò Ý÷>EFÔ“JBÜß¦ŽN8ó#ë¼žYd ÖV®R#m¡@C0á>­Çµ0üÒ¡[¹Yk%uyQ²×Ýk¹I©(Îþ¨O;ýkòaùÇ´õg1/ ¿Ê¬$û°£Á%æŸÿ[–’®·Ú¥ÿ‡¡ÛÔPXT¨â?3ˆþ1å„º}xœ{*±^t‚WQjq™n^~IfÚFy>F¾ ×à°]?ÿO·]ŸÍæŒ[™MJtsòÓbt‚SóRüÂ|S‚R‹S‹ÊK2óóü@J2“ÁœÉ¬r 11 ­1iA
6)©e™É©v
Ñ“9E'eµ’Ài†	Û/Ü’Æì7—rò3âVÑÉÈä„É÷¹šøòKK
JK2ó²ŠJÖqé¨ »RAèDý¼²ÜT _ó!
/rKL6ãÑ {„o|ë„¹dxœû:ƒñÿdÆéŒ\E©Åeºyù%™i›s«íø“ßØûy"¸º9ùé
º¼\


Á©y)
~a¾©
A©Å©Ee‰%™ùy
~ U™ÉHqAbzªBQjaijq‰Îä‰Ž"L

“³Î Ûaã(9ù²ã	\M>á¤ÈÏËUP”_–™’Z¬P’‘ª°ù‡“ £^«‹KŠJ“KJ‹Rr+’Ryv¹y©)
™y
ùy©
ùi
“Í],x¹@*
‹ŠrI•
“\ì8!‚I©
“»œÞÜî¾”·=«=´ÁÓƒ/¿´¤ ´dSV1PE˜g¨"Z8ê§¤–éç•å¦(èæCTí÷TÝ,ïÆ M–ï³žxœÅVÁnã6=‹_17'¨mØÝC Y Èº€±YÇ°ÓEA45¶‰È¤JÒöÐa?£ý½ý’ÎP²,%ÎZÕÁÅáÌð½™GšÝ{ýŽ~VÚtgÃsquêbrýi$zôójô`vx•Ø È ÝNmó/“»é|<¢“‡:¢s0>zëÀeŠ;­ð=<ôzFnÐçRaO§W—Æëô=Ð3P¾?Š$I >d¬Ü>_]Æ¿h¦ ´íLigj»'¨m;G9É«ËøíTƒqóg—ÿ¢]Õ m§‘bð¼~âÃh~3OïÇw“†æ~gÞZe7iRÐ¶S˜uakŽïÖ	‡yF l½/Ä]ŒY“!j0/.ÄIÀé{rG„9"J¿ÂRc–öa¼¤l´YÅ	™n´µ–N*N¹$²+’°¦¬sú¼AþN‡lµÃ”:Ò3h±È±o¶º	-T>âóÇo¡u­âX{‘Ãœé>ö»ð[ÓKwç„†ƒÚtVb(’—†]Žj î)¢@Ô˜ µñ1U¥Ûl„‰—Þ[¥e îö:¬£ñÚúÐ‡_)´Ì2°ôÉÜHªíd¶EßmFhòB¸|8g³Œ‘^K“Ì –kÁ.›‹÷åVÆÑF_)óI;…³ñèãèË¹H:pËîû·?‡ß¿ýÅÔÕSO³±˜º	îÿmM.þcÒ%ú¿FÖjQ–SLbù¯¥Y!LI1É3ììvµ†©ÝSè[ë=ÌåxA3uÊÍîãÎDòƒ…žžÜf-T9›jòM®=©Šg)ÀåUàzÊUè+ $*©ê‹ŸÄÃ£(^Ÿ'ÅgF¥ø€Kmt¼ËÒÁ{¥Óûém™Ÿ(†Å¬‚K?s*ÂãlU®Ç&”¥ã“%CÉbÉÂYv¾“&xÁ“ŠæH€H’GT¬é‹âÝéÃ!Ú^!¯ –Ê¼âà5£Aÿâx¢Dî[sÿƒiñísTLOYÌ‡”ÊJ–e†µŒ=L9.­ÛÐ¾Ï¥^ý#²ÞêHfëm‘eþª}=õ®÷KƒèShéˆR<F’U©í³-Y:ÃN­øæ¡g73–<ªDTOì Õ^.²ª„x‰Ä¯YüV)ÄXÒ¥µA©°ÑSEPT†xlR­d ý°9íÒ!¹”ÛŒª‡Òì:¤£ß¯?MoGûµ~•›œÜÃ3º}>ÜÇ¦Ò…CÄx7£Ë£¬4uÎß22Jðë!–Mxœ]PÝJAÆBÓ©LðTZ*m—¦‘Õ^H]ÄfA°ëz´¡u7gG+*¢ž ¨Ûz„ð²gz‰Þ£Ùu…èbæüÌ7ßwÎ÷˜þJ=¥#-4ÜÅD(¢©{jå _
}Ž&m=šŸŠhx= ‹jøU¤#›)YåóÂÜJ¬AuBÄCxV¼D6V´€ÉtÚmÃn u¡ëb¸C‡)3&Rcóâ|ìGœÆ&Ë¶¨Ë‘AÅäÔ±½««J2T_* <98´Ù¤¡‹¬gøÈ]¼ï±iEÃË0ñÿ[6ümyIÊ&E«!g³¹AmQÅIF‡Úb‹dï¡v†>‚9–%¥hËvº	ô«+çoþ%»#T} ¨W’‹Ú-O2UuW=ÎBro#¹g„žq:Šž1;r-RÐTRØß'zžK;yÿ†ôFf|WsÒb=ÏþØ.žÉTbèðÀ¨"ÔÄw,I¼˜¿´Ø‰‰·øòB $µ;R»!ŠŒE·=ëƒÞZbÜýiK³(î(ƒó7xœU’;KAÇ9ŸÐF±°qDÔILÆøhŽó±[/c\8÷toã~„mTí-®³²²Á/ Ö¶öîæîŒÙâ˜Ûÿì~³³ßÆçƒñä$žÏóÙ0–?9³7’]1 °¡4÷åŒÏ?Éx~uPý’™Gd¹ŽF*"g$ð·%ü¨|Î¿e­ÐÑv÷÷	+õ êa„Q1—ƒ­"DmyÈˆ .ëŠùÝ‹½-ò¶Ø³ma…z9ÌÛZR&u¾úJ§3;§)L%`“ñ(Ój8ÁžŽé*éLú/ÕÂ‡Ø(kf_Në	{ÈÔGîRtÊŠ˜	B™§°«ª-&šC¹µ4 –û/"Ì\È{Dœ*z‰ÿî*¼°œ‚]A•ã®ã(vZa®6š îîî“ã aEŸ˜D(œ( Ê*ºeˆ¯Ö
¥±†Íº®‡B_ÿWí*óU»ö_–yg[}fãÅánÞ4ZIÍdGønÍ¡Áàzysÿ@‚.Åþ‡ùjD'î¬Ëö=Yyo['’Sòp}ÚŸÛ(þÍ¦ÕòÚçÝGê$˜xœ]Q1O1Šâu"2Ìg\ á‰’d@“‹ŽåøÄ&GÏ´åÔ„DVFì¢¿ÃÁÅÿàp1ü ƒ-w(ºôÚ××wï{oº=Ífy4DW ŒÌ •³ì~6Þ!¸àÅØÙáfr;ëébª”7'zt(ì§	cp),ú2uÒð’×~8RÞ&a$±*„¥p(À7;Ô@ED9Ñ»kŸéÜƒ‡&
8ö-nˆS«Õ{PbU¬Và‚‹%Ãû}]¼/[éZ½öCõð& >ç?±ê¹YŒ½+†AßøåŠ2.¡`nÀ™¸úãÏÑÕõý–.–‰“XŒh0BYý•Î?À¹0r"c’xhtˆc…L¯V}[Aè,˜Ð¾3êŒ¬S(uÚÝöe™8=¦l˜•Ír>yªÏ'ÏUB\eÒW÷7Øl4ˆëŠ—üÆ{Ê]t«mäOq[:—Ù+Æ¡ŠdV¦®©ÝÊœæ’^É¸>nÙòÈø@¿f>´ÞŠ¾´ÎÈ‡ºcxœ}TMoÛ0=G¿‚7·@ ÀNE[ hr°&A\Šd›N´ÆR*ÑÉ2ìÇ”c§Í‚ù`èƒz|$i·5¦Ã–çéâúRÝýû)5}x«”?eOž@
Ú¦ßžÐo5gy-×W°Ñ> Ð
_5kR*û1Í³I#èËÙèU%‚Ð¸-qk
¼‡—4µºÆ°Ñ¦¦¼»µÁ”÷ðRíúU1kj¹nê´Ü9_†hTÂÇ“ÎË —Øí½Þ¥¹±Úïå8ïŽ]C›†ÒÊùZÓÝmUSÄt—¯JÆÙãb2žÌ¦}TØóê\R pu­9i©ñ6€þd”‘¦&@©IC ßl„Š¬\ ¨±vLVš ÄPx“c8äwiØ¾iá !‚*W±³>Cóoè„íY"`„oÕØ"Ú´Ïç6G/»ÂYòn½æŠ‚±“µY“‡} ¬[æšt®0š°„¡•’ðÂñºÇòá\O.Ì‡WrØ1ZDsÞ–ê±§pÊ+¨‹„†Gª—œ‰Y,_¯JÕëêæFÕŸHÞà¶xŸ»Cw|v-FK³E0„ç•	jÀô=¾7†©÷VÅJ{]Dõ®€o÷‰7å¡ÞùÚo‰1ª˜ã8‘zËþ´%„{¶ÁÂTû6³}ýFÑà?r8JrÀš”…
ýFXiîoææàË›Áè›{¬ÍÔ{ƒ¬_üE</8Ô‘”&ëÀn`"9¹!©h@$Éuµ¤Ç¢õí#DÇça…Fi[[ØÌ½±ÔMï o*AÜ*¹Ù‡G ¡bµc¬„|¯ï–^×- …6Í§s¢¿‚O_†×Q#Æ.¡µ‰•åšCN~g©ûÉó¤#ÂÌ®÷à,7otÜÁÚBŽÐai& SK&ÔøûÃÓüëøÃä:.ˆ®7kÖÔ‰¸Y£~®YÀ]çÉØg@ÏcÕ_0Z¶ïxœåYYs¹~ç¯èÒVE”ÃKÒ:[QÉ®Ò®é¬j­£D%qÊ³à†œhPŒŽl’ßžî0‡(ÒŽÅø%*Kä€>¿¾àÝhlg€éç:³¹<u·ýb¹˜†…“ÒÎuqŸÞŸ~<àç_á“‘æÖ.†ÃûûûA¢ã©Ö7]Ì†6™½J5œÛE>ô˜ÞŸ¤’…°DïŽÄýðqò&ö1—f.¥5pg”Xš¹¶pì©Ê&(i‡o+‘á°(òhx8ŒÃÊ™P¥Èàü/gÒ?„¥‰.‹Xº%÷îƒP³RÌðÝXÍòÌÌéugpý3ìà¦qÔ¿º<ûqvöñ·fµÃ«Òx&;L±ÿÒ¦ò
ÞÉ4SŒ^HXêÂŠi–göŒ-Ót‹œþýÒ¦â5-gfÈi&Cáõè‡?üpØÜ&¶f0S%¯‹"žgwÒAeVè4EóŽþØf6ö´¶-I3	‘êf0HœÜBÔ·Ì ÂÛÝ­:ÒH‰LE™[Hu±Öfj¶EIfÄ4Çp|\Î¥6Óª3PóÖÚßKc³4‹yº"¡`åþÑËÔÂB³LVùã^g È·j†³“Ósøéâüz|~“ë“«ë	ü<¾Ã«m±™PÌžœw:Uƒ¨© (†X/B¡Qe¡\~Hä]Kwxò·ó‹ËÉéÙ,Ñ„i'JO‰­(½‚c·ý-|ŠúQ?^$oŽ=Ñ·ðOdCõükžùásí4Ëå›ãDXõé»;žBóÕ
7òÑQÀ/M3h¼Ù|žÏºS7|ê3;iÝÄÉ¹é„H’Bóæc#ÀÓ7œœæ:¾Áƒ¯÷`úh1Êk†q$¦p\=o bÌÒ¾9vŸQ?óÂºB_±¥™sú»ñä§«ÓËëÓ‹sç÷÷º ;—MxÀ“”ê¡$%DN…‰ ) ße¡ï²DòaÔãÝD¿0Ík|Uag)
±V ÓT™óŒç¸!¦uÏ½+Ž`ˆCb<Úƒï-³”1FµLœ¦Ì™E'M¹¤Úaþ1L¯’Úí½Ïì<ž•'ë%'
3yÎœ¤âLAb­l¡ó\ž­#Ó´W¢¥QQ7¾µA„'X :°îB¦NKjÆÄš¦f»,2e%š7×¸Î‚ÖÜÑÈ3¬&øåNä¥4øœÚM¬Øòäßv-Åôåe§¡=X	âÎàjßwšÙ‚´~b §$+o!F<àºÆZ­R”NßsŽ§4’¥  ú-ò´Ñ¿8µd*Õ5h1O±®@¯©FõQ?Q$doD¯[0#Af%D£eÁInE&û‡$ Â¹†´,PÂð|¹@p_A`½-³B&.(òŽ´´@ÌÏÍœQ‚ü¢WÝ“[JFôY#5 í&@Gg‰'-ôbE!Êe«ç«èxßTWè4,÷øþ-cßz‚l²KY¬"&=d‡ñ‹ÿÈõ6CØbÐ’$÷ó,ž.XuÔR%¸‹1ù_›˜,ƒ0Õ¥"¨“‰¯ÈVLü¾È,$¯9K#kc5t&u0­ès97 N!ð0Ø4Vëw¾~è*ÍfP‹2»!a}Æp›ÊÂ!Ÿk PÁ-ÏšE¿}4äUvtH–J¨)™ÐJÆO¦–¥]‹7_µJV…r¨!³SjµQë¿²›œÚ_¤õj`d<•lúøŒ\½>6FÁ3J®‹„¯v>Ûœó'¡ÑPˆÙ‡ò>2¯ÜC™Žý² î®xDq×nl@P¥¹oX%í)õ 4$æš4ÜžVN*)Ž3IÝÙàâ
­š#Ö>]æ	%§ú‘ƒ’°-¬ŒŸç@â*•aUE™ƒÕW:Ñc9xñ3N¤Ý\Èõ“]õÿÌ…¾ËùB†œ´-/RKË²…P&Ålß%”Ù»{Õ\Ôƒ,mQn(K*m;dg”ˆ6ÔE£5Á|$¼c{¾	¾Å¶ÌÒùT MÌ"7™5é–zj²}ÆíU¸›‘>"¥¡FÐpVó´_G±Wä¤n÷È£‡µ¤xÈ„Ö€‰W{ë<AŸÜlâ´ádò½f{*iu›A“Ä-âS¡¨Ñ[®k©ù­Ü@c+õ‘8±v¼o}§Ž™³±Mi‚úH¿ešvçÐÐÉ‹=hÍ‘½§ÃgÖÌ©^é“:{]©tØg°†¡@ŸÚf.î00$FŠÈiûcè>•šjÃÌÁGgÕý‚Bøv¾Ž .œÉéB®•)žÉˆÈnSr'9¹„þ{c_[°M›5¸rBû¢ ën¼±Ïi¨
Ó	Ñ~bêvn¨®I8I.Ovï½cÂ&N¨­|ÀI¬R¯%Ù÷™›çÄr‰áÎ±ØÐ&\'Tzø»/=¶pFV}MsÊv¢òSiÃI™52OÛ\êË‡<wCQs«rA·™€Ýµƒ/G®OÁQü«,É[ÅÚ>½!ô´Í;‘põÑÕeè9ÍÿP2«ÇOÎ.?ŒÃ]™+7™ô©0šïöGßïFÝi‰_?:Üb—eîr¥YB¿38½ÚƒC^¿ä!˜™†‹ƒæD¬Ó•‹»eï»ÆEM}}RMýDxS
ß®^œ†(#Md\Hû‹KG¢ÕG…LHNðaÿ%¶¦s—­yH¬Eà‘±Qšö¿•AxŒË¢ ,ØcÉÉ­âÿ´‡ç†¢£o«hkÎãPtÃ%e§æCÖíÄP›bLS2Ý†ö<ˆ6”?àI±Éê[YÃMÂ£„N:…nu°çÒ*ÏáÞ|ñ2$ÄÐœb¨+±þM6t±LRQ1&D¾)X>c€—H¾öñ•?C-õµ[—Í[t¶í•å¾Ö%ÛòˆC¤~ÆÚ)·ÉÿŸµ®]Š¢ºróÖÀË	b ó hD±ºxœÕXYoÛF~ÖþŠú ;Ù@_;€Û¸€‘ú@ä^ò°"—ŠTv—²]ôÇwföà’¶sô­B›ÔœßÜiö[•éÝvupt(N!®Î.ÏE†Ñ2È`©šÞß\þy»ÝÊ¦0`[\ý~© Pû*WB,ÿºº¾Y^,™Ÿe|Ø+mÔG1%a@Â¦pâÈßÀ‡,Ë·Åé‰ùþ,‡øøQL&€$ÛšuYÕêô¤Vfô'—¼HÈ?©GŽôÔkèŸ‡ÄLÈ4Ÿ˜f¤Ú©åï§1%E¡•1§'mYe™¬…ð”®ê6ÿ„t?ÃêÁ*0*·­6Ì±‚“ø˜ðX©×Êžž¸ßYå@²pB}âíùòç÷7·×WtÂý—VƒÝ¨4<°®öª™¡V%F.F$„èg§Û}U(fF·ºÚš¹·øÃ¶“Zn•U*Ä(Ñìæfuù	rúÞ+>P÷¯á>¼"‹C±íŒ…°SyUVª˜ÃEÉ*ÙÆÀgºÝ®ÕÖ¸Äs˜Y4—iÅ]e7À‰è3æO»³UÛ€ÙÈºf%ª±”¬$>o«ÛºVš5:mi
­2ÍÔÕ#Í¶i¹VP5E•K[5k–k^ãNWU…u‹ß³½bDu]Bg/ëN|®%R³*„úšƒKH¤ñúµ•¾™¤eIŽŽ|vž¡¿r;~Û6øãð.Ñ¦öÝbR5eñ“97€Þê­dLÑt©rÚããÍQ`îNdž#Nàì±²Sý­Ì®Z(;z5 C·E+‘JS¦}î*‰	&àó‹ÊÒ[ÁÏ0ÅÓ>c¬X¯>Ü{âÐJPêvKfP¥?âÍ!0z”"1&>ùñ¼þ%šõÐ­3;t‰8IÌbeà?ÚV˜X¤ënSåŠÂ”Ó¿k
¤À˜OÈì,o»†ò~OnLïte)gùõ”BÖ;“˜8,ORpb9(ÐŸhºº¼}{ýÛm¯±)«5D¡3Òå‹ÐÑtÚe ÷0 ˆ$ÁáG…ìJ*‹tŒ¤šXÑ6òÐ*BÕì:O‡Ì·Æµ:èçbÂE?2øƒ!s~|“œ'˜/cÍ«‡±ÞoŸ1ã<ydô“¹g \™-C—“Šm,õ”¡¢rcŸMÑƒ'•‚ÙëfÑ0\ÞJ?½˜³õœ3èiÅJò¸×I	é¾±ÂˆÃ÷Äåagl»º ”wö ‚œ”#rKYË‘òáp-Ì¥osÒÅŒtA~A¢å.ÝŽŠ‡5ýñóèyüBi=!íŒÕ²1%6üC{—¼Tå°=r+§¶Ò´€
ˆ¢oôÉpÀ*’>Kg~¥øŒ3Ï’€R"˜ËýšIÒZl´¡PÏ°Ð?ÒŒ_€Î i\1ª”¸¬4{Tgrºr,îŸÂŠršžŒ2ñFi3ìþ‚ö2§ÓMêáòÖÏê`cAM‘¤Äð&“ù¹	k¨ƒôðNi>OCÀx«A77Ÿ	+_ð
EG—ÅD+ÌŠ°ý²ñq-¦§tußŽ6lòî¬¯?ˆ²KFÆ÷è“,æØ„ÜcV
3WÖDý6€­w8Y¢ß,Û×†Ÿ‰ï¨øüÂÓg/ZXêªQiEŽ«Ð¨FœjÓ¥8..á°Ç|aÏÐtzˆI?†wãùÄC€^Ñ^V56‚sXÂñ4ãZ&Å®œç®Þù¥§áÂFpÔ=î¢Ñ™aFcùÝUn£•»Ö$N `÷i|œàˆ7*ÎÉô”pCã—ð$ •5ª.ç ’›‰%Ï*/?VæAÚØÜéäû´›–‹Ã'Á“¯ÂÅÄò™]Kd+6/sáhæ¹öøÈ4óm‘“ï²Eœÿyvyóëyrp¿€^Û™.\1éß–ã³ýåàrü!9û›Í]X§$h@ý’ú}©r­ì;ªK9Æ¡3¾ùÕ~EozpgJuÅF{4”H¶ñZ›wZS‰öib0R¾Ë ÁÂX<gÀ`ùäÐ»”JÛ©?Æ aŠ8Êù
3ˆ*ò¿ØÄ«p4é˜6×^êcÝÆ|¼X@X>J8ˆ‡À¡+&^ÎÙ*¾"¾²’•-£ñFõ2³ëÇæ›„õ(¿bh@sFË›o‹û#d¢Žcp¸ðœ:ƒ‡7äÛÝéwøŒBGÇÁÈ—Ö©
Xvþ?×n¤Žgo@Ø4,Â$Ä¿×Xáæa…ŽYxœ­T=oAUNœC¢Š(†‚@¢óC@ÂA‘LbÀ!ÊYáÚ»Û³wO»{NÌ‡®§]ÿÑ!J
zZþ =?€ÙóGœÄ@
,ÙëÝÙy3ïÍì¼[øzñíbYÎ4{A?^:?SvëÛÍVs¯ñéÖÌç3#S%mð*àRÂöã‡F¯0mŠn—ðÐIu*9.*u^/Áò‘‹^´wBÚcÝ€'^Å«HBáBË§y¿´•)ÝÎ•î•Ý¡WÞœ½¶¨4Ñ©£B0˜¿™µóo³NÖ8Hh iÃ»hƒª@²D3Á¡æU,§åZ$Ž}q šøWkËëV¬ï~«õÒrž›"¤VëuO¶ðý—ÐïŸüÍKã¨ÄZ=XÅÏÆ f R_õ•¦]èœö¨ŸR>fzKŽ	4	R iu(t…Ò(o@¹>TCd	•¤ ŠÂ$1-”Hƒ€*¥qÜŸ|}¸>5Fb
‚TJ÷qH¤hc]Õ¬Ù©²CG„ÅSØVHv?>‰a‹hIRò™†&vÕ TAwP=.¸—Uz"FìSIÚÔdŒf˜"¼ÐÙ÷%ÓW-j@–A1P´0Þì­4"ö2F5½ô¨Q³‰"®ƒÀ³ž>®Æ¸*S„AE¿ ¦ÄFŽ«ö!É¿pÌŽgö¿	þƒ_vJ‚æŸˆ4ì§Õ0u‡jQýÑ €aÛ™ñƒ0&†¡>êóâò#›âÓÃ!¤ŒxTJÌ6À7Ë}¦hþlîÂš´a8~,g×…5k—j‚zuÕçAG
.p4zÐdèì6òdîfÃ5Í‡$M„ÔFËHÈ.1iyQ“›MŒsÎ6»ç
ë†ÿQ2³õ'²ùÏ¹÷«€)P«:ÀQù‡ò•™ü{yoc‡˜¾ÂÙÆ"…*¼`ì$Šñ¤òÍùÐ~€3©/•tñ«”‚;mRCþcþòxòçeËÎ£s+gÑß(ìårˆä7xœ½U=E–é
_ETHéÅÒœ¸ul¢PÜ—rñ9w&„œp(³;³ÞA³3«™Y;F‘¬(Eº¤˜&=ü Ä‡hèèø¤  FÔä;û,¥`[Ïû¼Ïó~<ûË7µ§_×¾ÖÎ"¹å_±H¨á÷jã½…÷Úµ6Î@Ô¨À€I
}r‹ÁÂíï®ý6={°s™å{°.ì6e#ž°õ¡Ý†Ï£H÷!ÒwýUÚ¢´QªtNì®¿œæ¶º‰Wœ9¸[å~ñƒ`ÙA™iF(‰E•åè%Â4G1—DO|DìþÜÿ}Ì¬ælÄØŒ±ƒmà+Q!ƒT«ˆ‘ø“B¡ÕˆÓÛ¨Kli@¥³rA¢r$JÝãî†kwßqY÷V³w¯`‰eNî{ ÄH4/,W¶"÷¤ûºûûFó1§6ÛmvÚíµf£žj’³Ýf¬4eÚ}qxuºŠ2÷ìðÑJû^÷Ï‡[ëHL›‰±,‡Œ¨RCÌ˜œñ£îYÿ(Du0jïj®ŒÍ&í\„*˜&5”SVq/“„“–BLæ ïùÔ›ûËB¹¤ÔÅ¸ô¥jfÜïý~ˆ½â	¬ý”p1gÝ	Z§‡BÅDÀ±zšäsÛ¨÷±Ì‚UÐñ’ •ŒFJ ±Jûæ"™“Ö/¬Q—Ê†z5·¿­Ú
SF6Àp‰S3.§CÀ&—)Il©1·oèRÄ¥-Ø¥h|
êƒ
1+ö’š´S/4Œøä(¶½ù
j_FètNÿ¡~±þE½µs¹pô/:qû’Û¼¾ê {áíÙ‡!3¢ø¾§SŒk¶îº¿Ö´{³÷Ö9´+÷YïÒ:Á*áºï›‰L2­¤Â%ë0¼Õ¨cÂ=ÿI©ûëà¡+zWÞÝAÿûÒ(YáæLæüñ‚ñ¸Ÿzï¯Í!üµØ<bÌn3£‚Ûiâitä9]È|ÎÓ›ÞÉp•T°Š1J›`GÁ\}“&§ÅÂ=€”3AÍœ—8$‹È'¡fAßRr+»Ø³«Ïý´bv¬¹ÊŠ@\¦)Î ¦2–¢û·``uYŽ7¿[sÜÕÉœ[e$oA‰S¤O°Ti0hŸ<åI%¹’•ŒU¯#Æ¸•7Ý·åùÁÙ×ÍãOß„??ª=×pYµ‚xœÍUMoÛ8=›¿bÜt#7éÞÜ&@› ›Ø¨ƒ¢‹ÀJÅ,$RRv\øÇï%+qêÃ¢§åE¦É™yo>íªÂÄkk‚ù‰IéžÞŸ«óK©ûË»‰Jx)ûÖ˜£ÍáþÛÂÞÁ•«*mó Yþø¦JÍÿ¹ŸÎæ·óè0:}\!y\¨¡xßs2„/9®L†ð˜$¤¶ÐB6®	u’ÂQ¥Ãù—¢
rè þ\¨Á` ²øê²a 	¡ÎuZF7{ç¤×Ij¬¦œ¥¥®'ó«¯·³‡Ûé}S~Å@Wè!,±å<ïà‚p®õBA®mÛã>os¨É­LÞÚ*th<¸¢çY›°‘Rì¼'^kÒ$0ä‚Ž‘FïÙ’39ëâ¼Çç1|äÍGÉåé1;›<×ÈWrèB
F‘‘©ƒqÆ‰R™+ýùÑ§G'àâß¼[rÂŽj+M°·æW.ç^¿8Pj{ú|ÊKmø&õ°‚¥ö`9Y)¢íy
ÁÖâLm…iå|àîÈÐ†—d¸IG|œ–ºÄH É2ô¾hÊrÓ;ù¤¶—‡Ì8YYCÄNË+Ùâô½áŸÿ)z¡MÙC>’•.Õ%\ë aBÚ3°ÔuË•Ä ÁÁ™Ø‚u6Y¹’ÝpÏy®™ôé:g?QÊºÐ¦iM&þ7VÒŸú¼±\Ú}’h
.yCWJyÐÝÁ¼GÑeºsÞòï| #¡˜•¨%2Ó<=ùžÿsŽ2¿µ úIŸu­ÄÚÇ†âU(ïúT©©ÝE:ùó’/$rÄy‚‡¡µñÈ­5BÓ¢Jh<VQîø;`ÍÑœN”K¿±Ù’œu<‡“Çeã¨xQ/¢Õ[]ì`oÍ¥W™)aí(HÖÛ›RÙ¡•Ÿåð†?¼³üí’ú²†­^G0µ<_Î2£xç&c¼)B#ãÁ[ÁTÂ5¹‰(÷%Yh>,yb[íµ)KÑ=ß
gç’-6»ñÄAa°Ì½Ë˜ßh|k"Ãž¤]2w/ÁfÄF-½†´)
î$öâCÎ4F0ÔÄþ‘ÑŒ`xÐ7j…DW#hsÒNÕk’s…=+®)LÑGdÐ#ëäU„ùûåÝìïÉ«‡ðÜèÖQ„Ãûæåyý®ÂXýñúmJÔ;øåý|õìßUÜáÝ“>ÓviÏ;×Œ)4&p½þÐ—°d¶¦xœ½XmoÛ6þ®_qÈ€%ébYŽû‚yi·QWcÄ^Ñ­êZ¢$®2©’”¯í~ûŽ¤ä—Ä24¨È÷~÷ð˜Ãè ´çãÓ|&L´|>£-E8ÓìÚû•Î…ìÁ‡×ƒ÷aˆ}ÿ¥k]öÚíÅbá'"ž
ñÉ2kë${Ò¦¼ëYÑ®¬¼ß)§’h#ï\Ä/q?¼¿…±^Tå”jsÅI©r¡á¬–ÞHV©Ï©n¿X™çD£ÙA§ÝÚ§Ái·¡\^‘¢Ãw´~iHcQÉ˜:’[{KxV‘×BžLåfÙó'oà 7…QkÜ&ƒ¿Â8èàßZÝÝAë¯ZÑ•ÚúÞ•òÎiÊ8%fJ!5™²‚é%(]¥éjú÷{?VJ°i•)?¡SF¸-‡'Á³§Ïº›;0ÌZù¯,È8gsêÊ%“"M1¼Á¯­à´=SY®ohe)£ñ#??QÐÿÑùìù´pEÕ¬>h"ÕÐ”T…†TÈÑšñìU$L‘i-¹,sÊ‰f‚{>Ï·hWJ³”Å–
G$1 é5>4Õ0#2c/–ÇžO(4ýÁ^]'ápãIÿj2†7áUJÍØômÿ"<ð¶à¢Œ)O&Œ›ÕWb6#<9Iu%9~)Ì“2þsx9ÆØÑªÄX¦^”ŒPh„Féœ%tÎbú>D­¨ÅEÔJ()
ÃWÔ™|ô`ëcw	VNKKg»é‹’(õüLÌ©\H¦iÔ2Q+×/,'‡}ä"I¥¨å«v’Ñ#ëçgøÀÒp4¯»œË’èFjMeÍ^Â.ÒNQØ1Å"e.òçáøÕÕ`4\]ð_	:§.y.à!dðl,ŽýJÖ)]JÁü•RÌYB•ev¹~ö­È	®¬rWIf¦Àp›3jéÔÅ9cC«Ñë´ñ¥mŠ!8n$^rPUS¥€éº '@¥Dûc‘Phˆ\0E-“ñõÒºiŠl4ò°`NàFyþÕ{C‡]ÀCú©1¨ñ¹ƒÔ Ì‰ñ“[gcÁµE»TŽlÀ… • Â—Pˆ± €)®}Âš0º H_Òª(–&¨eAdYé«®¥9Ï±FÐcD\P"i²ÏQÉ¦mÁ$ÇüM1úÎç)–qK-ÛªJú¶²!e-B&ƒÏˆxÖLáˆ¡,“¡¯QØkÂŠJâtÙ¾
ët1—.ÛÐu¢.›¢*5Œ\éÃKª£2Â^¥jGÎÖœËÚ+
ý˜ÖBJ+doÔWå–(Sw‹ÛÂŠ¦¶ïÆÎvWžÝß~«ãz7ÞŠ¸	-b:ÒzÎg˜*iŒç^¼šM±±À6£düß49ƒKÐlV3ÎhÂˆñ=œ®c¬)?†J5•‰ØA •b¶'§Î$aêEÕhe"ß‡9)*jHÁ†É§·ì\å©vïdªr	1ÇHõ>6ñþàØ¯Z²ØTÓJ™i›~»i%øÛLD¦I9š¾!¯éyÜ7ÃÞÛ®öÿ%ön¡?6ÖG«ëã·Žð­=¼”Œ=4p*®oG½ãß<DJœWî|úÞä‹÷Î”–7ùÖÃßöRÁì„8ùfˆÁuÔ´+ª¨œÓdMéÀW3øPt	Ojç>õþ[ž®O£ÒD"§…ø¨…	RìcCDÐi¨âŽt®ev·d®aá¦@¾ÑxwÉ{¼%/–ËR‹½F¾²ä;­ô'¡™ ³‘ìÝƒPpû‡¨àf	[È†?îßô¼wá|!dà¾@°L	tO1±X Í!£s¢LD‰Ä\sn@àÎC{#Rõ$X{>°ŽÇÉL•/—•””kœ¦•ZºoÕçöà[A [xU–¯´˜+|ß¿½›±Þª2WBÑ—È‹òÃVðø0:šVøó— {á}³÷C³Ád·…éŒÀl‚S¿kéoˆ‹=Žœ“h¬ªn_4 ç´"®8}µ~£ /?ÁÖýbcÊ´ó¸iª»÷¬ Ä4î=·Þl&7‡oX:ûš šÿŠ¸àL_‘F,ÊÌy•)dŒùÊ$ÜLç¾ˆÍvxœ•VKoEÖB„,+D%‚(”aÇÂcÏ&!Û˜øìø±IŒsA9ôÎôî¶˜íu÷ì®i¯œÐœ¹qC ¤ ÜrãpEˆÿ¢ºç±³;,[ž™îúú«¯]¿ýXûþ‡ÚOíÚ”"œiö9}Þ¯õ7ò·øŸ~½€33 '”ûpüôˆÂI¶°-º]Âý%TG’ã?:Žïÿ2ÌŒ×Whwæ½æÓóè|[¯Á§ŽÃ…ãSÂƒ/ÁñŸÙ#
?¸E°°šUvîj?$J}hEÊ¾dš:æ“ã‰ˆßÖö 4æP±EÇîÖ»ˆD"EÍÎè¼cÐâi{þg‚g¸FßÒ†áÔ“!Ñ%NZS™Û…%>vÙ@L!DKHÆíßß%#½DgÀ¿™éPŠó©Ý¡™âì<ž·¡ñ:D"'*!‘îÐÁ*¬àË
ïu©»ˆ[œyU
˜Nƒ§À]*¥xœOA ¼ì3EãåßÖüø›'³Ó£ Å×>¾1<°“¼Ma³eŽÍ8¯&Zî·@Q½d¸rKØ\K¸UuÐ¸ÐàP?ƒ@´™G‚¡‰Ÿ) ø›z¢eé‘+
‚3£OPÍxÛž‘å^ B*‰‰Ò²aã”HêW1Qàè$)ŸI*Ã—
*‰}^H*ðI‡)h¢ü‰M
¬ÍRÖ²¼NÆ¼Ø´‰-F‘ Z¢ªs ¸n½	wØ2]^‚ÝÂ= ,ˆ$…#âbüâñBaìæ®˜b²Qkd©û5<J2¶¨îSåVUU™gv#,zÐL„ÐÂåâÇÕÏÂ18“ÍÔ÷IÜ²ZÃˆ&»óä¥´¹TÒêXé˜»hõ{ó‚òçÞ;o_ÜˆtLön‹¢!­m³
l}HØ¨z“ÒæQ·‰9‰	VÔÈ8žòLì;¢]S5šuSË.õ1¾¡_M#ñ0±×”/B¤²2ñ‰&	FKŠnEpfÂ¤$¦h6¡G‚ˆš7Mòœ|ýýIÆy¬R?'¢• ŒBVˆÖÿV-2êŠié6Ù7±ûpÊ±\µdžI¢Ü”KU–—KÖÏØŸ»¦F9ò&(Yíãæ.V¦ü0o8—@§¥RÄ/P.W&~Z0YY¿DÇK›Ç«c×¦ûµÒ…hüêDÄž/<k/\7®®N=¡ŠÊõãÆÁÞ[·Ž×à:NOtZÉ‰vLÀÍkW'hÄ/Ž÷fÝ{75RšHíØNì |*·\;1KØš·Ì"ìšÅ	±ãƒƒÃ[÷ÞVž«9ÒlŠÄõPš¸ïyò,Ôb‚ÕBÆjÛ®žKËªøWãðzÕl€ºß¼h¶(õûµÜ`ð¡Ü «ª-mßéŒ;}!}¨»UeäuX¬õÉÞ@àÞ]Ç$nÖíu‡h‰ë&ÿxªº?Mj¾’ÎJXæ}ëp‚-0$8ö˜^II¹Æ;¹©33;êË^=Zr
íÙQ»qòóu¥¢ò¨«ñ³Ó£|º-LVf"4y:3}Ì8wO6OâÎúÛYJRœÎâ—N!þûô«×í=û”Ç—7à¸v+þîþkñ¯O¿þƒˆ%²Éxœ¥WMoã6=—¿b€’´‘×Þ-z’¼‰5°qŒuºh‘æ@K”MT&’²ãÂ?¾3¤$Ë–•lQ‰%‘óøæÍ‡Æj½‘åJ:ù8\°›£c“áýˆEøaª¹"˜	•ÀäÛ½€YõðV¯V\%—`„+ŒÂ/[dŽ±ÙŸ“‡él<ó@ìi-ŒÏìŒP¡B=ƒëD¬e,>ÂS)%‚g™ŽaQòÌààƒ;´Ìç9-ÊS‹›œ[{s­ñ¨‘NDtÅºPî#)8½v‹VIqbÉóØÝ\ã?©•GæPÝâµ69w‡¼œ&˜æpbá™ýP›§ÚÄ(»Ín¿Ž§ã‡I-+)ûYpK"Ô„…\u	#fïã‡xþ±ÜèµL„õÆ!p=Æñ¦ŽIÎ_	dÒr§Í6œ/q1¦µòÌsñrïðæ…¸`
lÇÂZ®ÌýKÆ ëX'4o6Ò
Úï½«³†EÉÕkæÞ’*wáw†)±¨|;Æ):ï.É7åŒµrFgî´K4¥${®¶é…ŒyææøüoÔŽäâ€N+oÒ"Ë¶$fž	'ÕÂŸPå´7×¹0œ¢GTâLp#’.:ºÈ’Prùï<¼u]µð¸Ä(Î1A€¹ ¹PyL=©YÓƒ¡ÏgH¥@rhˆr‚ÓÐïæp.{¢w	£ûÌeV÷LŠy$}Ì|¥–áz¨òÆ
/LCšÃ'á6™b-
Û¹½ue¶çïáÐy ò ¹ëÐ½.5ÈÀ(æÁñcÐ°[¿Be”ã•úu¹ui8ØkX{çµëêPAÒ×ú[KjÒû3®…Ï>0±¹ˆ%^†ÒWÅjŽiˆYÕ‡\.9zó¥ÞPØ‚“«Òp%ÉÉ-ti¾—Ö	u…­Ê{÷©Ñ«Ž€Zš²áÊ&Õƒ!¬yVZè‡´®‰~m±í¸x"o¾ÓÿQácAï‡Rò!–í~WXÎÈ˜2§F§
éHëv‰Òñxý~E5©ïÓƒT•Ž{WXnÍ8TF¼A·Û™é¡@Òï“ðÍN±kzMÞ«¥¼GÇ\±ŸÙÓ3Û.7l÷’ew'RIZ±]ÿ¥ßßÁWa…Y#yºÀ_;8È'JŸ³]›žßúÞoµŽù6¡ž–öÏè6äOôFôô„ìäC¤ÎØ=„jTCÂ/„Øls§[<nýãWˆ´Õb§Ðh:–]Æ/´Z^´›cWÊ„¾]Î’p·Ñ&AÿíjlxÔ8|xQW]Þ-¹#@,ÛÒrbª¡ºÞ™¨R¿J¿ÇÞ%P8ÙœãÌCÝª0F(‡ïáya·4Y5êÌ¿rê0„Xû2ÕÅb‰ð£?†÷Ó/£ÆœüüÆƒX8Ÿ-püÂ3lÑ¹
!jÎ?ÂÁhÝÅh>¥|~uKU~T#ßµñ(§Ù!†Cbù;bJIªCÓð¿)08öhÔcÿägÛà(Œ TxœQÝjÔ@f‘­XñJ¡¥p¬¥þ`R¡ ÛÂ¢i]Øn—MÁñb69éÌ„™é¶{ÕW°ä| ¯D|ßDðÆðd“/½›óýÍùù¹ñûîçõÛù)wømóAçNŽqÈü÷ó¿:?nµüõæý10¦èŒÀBTã°@•j¶ÀDd"×Z9£¥DÃü¡N(…%æd]‚P0Š›e©ºÐ¦—×Ýõ{ÐOq!<€'“xx2Ž>±lZþênìÄsa!ÑyÎU
BJÐJ.áB›3zµ½”Ö¶ÙX;à$hÔ¶ñÄhkWDatzž8Èx.¤@Ëv/°…ÏX6l› ¯!çK˜! ps4ÀUùuíÑèê	j‘#Ì¤NÎ vÀc¼|»TìVÜsõâÉ*:z[Í<[^0™xÌWÐ¿;>xF¥‚çhž óEº¿"¼`ÁKïZahy7
ÂÃ«&#ƒþáp6!éy^&$î×pA8Tpe­{	?Ž'£°j†¦>B4ÝÿŸ3XÝÓÝÜSêSÈÈQ…4.âë•Ðüå^oûß+——½‡å—ÞÓŽ÷ïÁÔEì‚;xœ{/°D`‚krNjbÑFuFVgWÇ ÍŒ{™!‚“ùY%œA,…’ŒT…´Ì¢ÜòÄ¢T…Ää’Ì²Ä’Ìü<…ŒÌâ’ü¢J…´ü"…D…ôÌ²Ô<…àÔÄôÄ’T…”Ô²ÌäÔ5½É…¬7Ïff¬/.àŠÑ-VˆÑ’‰e©VV
Å©É™i™©Å@‹KÀ¶%çç•åçä¤)g$æä(€”‚eKJŠ2“JK@Fsé{((¹F8úø¸+qéÍF¸Ø-\ÁáV¨[EAŽI£8wò%v3¨·¹8Rù}`÷ç*‰—xœ•QMo1UNm#Â¡ª=•j*q¡M¢-IŠRA>hàR!pÖ³«^{Y»Isä@aÄ‘W$PÅ‘?€ÿÑ_7I£öÈÅö¼yïÍxæÏ·ÌÇ³Ì0³d…Ì"½ñnŸ¿ÏŒkWZõ®ÄwÚ/Ð&G‡3F¨¸NÀÄè‹@øP×Ê&ZJLJ-%¬p}”9å„‚P,™ä²•rLŸzkô½·LÞ—åy ·Þ­|AÚ]Ž#ác!´»pÔéö[öáëJ£]ìúCaÀ×QÄ‡±´’ëäØ½.û£¿õ» ÚÚæ²Ìqæ3ã1?ÑÆ@šˆÍO|‹„hèC½ø ¡âÊ]ïeÚDlvˆ	0EaýÞèô™ËªQ„0Ú?†™îãé”]PNsÕv‘âÆ×©wûåsZon®)¡‰™%Á«—‰WMØk ‰ã‚0^-=9O/nÁ—Ì˜êÆKaìö†CKÁÔ}¿õ¬™Ú¯ò“(.Bbu;ó•†ƒ!…iiÿ€~u<‚úÍ£§hÁ}íÿÖlk–:„ÀñS‹¹ÆågÃp“]'Ñ}|máô»[¤ü“-*ô½käé¬sƒ~ö>ÿ“í!â‚[xœUŽ±JA†YÁ&xvXˆSÙ]RÙ	‰Á‹•,l7s¹‘õ6·;žØ[«°vôvBzŸÂÒ;Á‹SÍÏÏÌ÷½¼ªå³ú°j[B·.ÔÛàw…ê„ƒáÅ_jOâ¨ ã*ƒd)»»t¨…K¶9dìÅºGH­„9—”Ã%á…`F%kê†¯ágóuý>ºÝ
Ñxwû¨ÇKê÷kR=~AšS&ÿƒD©¹Úæâ¬1äÀghT7uƒ"Žoî…ºÇ½Å \OöÃÎÉ^x:=?j´“+5ÂgÂUûO9&¸¡ºJ
õX&hßì$Š¬IxœÍJ1…©"ê€ E*ÈµhuZÁ…¨¥hQÚâÌÎ¸ˆÓÛ6˜™IZq!¾‚çPÁ7ð%|13ÓŠ]åÂ¹çä»çs÷eñ¹°©ö¨F7àH¥ÌŽBJ4½åè¢”Bª·-'·àÕ«gU¿NÜÚe½ú~’û˜¾˜ÈÄ…Z² ^¶íZ!Aiª™Ò,03p
£@HIšHþF’qæõa‡,Àã€ëVÛo´šÞé^™×¹Õ'¿Ï"iÔ{Æ9ˆˆ?À½wvúÅÈ¨A©YÔ8»Hõ@")•¡)4Pë…©,ƒR(•
±A ¡KCÆ*kr–Ë*vü>é6Æ˜	Ú×üöÌ¬ãÎDCsä”Ö¼s(Žø‹N¹Ývˆ«vmeö¡C4ëùmª-—íDDZ
ÎÑ¶ÖOþNR…j-Ùí@£ÉåWöÓ®U*üW´½OŠ0•36‹l—6ö'î¾b}Ë{æ{iÅ–w~ xXÌøà&‹HxœuQÍJ#AfNj ÄEüeÑuWð¢Æatt ÂF!âEÛéNÒØ3ºÛDO^=ÅC½…‡EìSì#âÍ“`·g&.Ö>TwÕ÷ÕÏ×Õ½sÞºÎCÃÒŒ4ˆay…Þ­ÓqÞþ€¿X€ZæÀ¡_aÀ”’
´!†kÃCÏÞ¯á>0ö
pRf“²6Y©a6ON*ÕÚiy…E.þÞî•Žš\C(£ˆÄ:\±¸†ŽTöõÞý¹5€ª4ù±œ~‚Îx$TRkH€–’ô24P'œi|Üù6Q¶Í>Î’õÿâ/“ªÇ?ìÄ~*ÎçâvÄà\Èð2:,°«À®?/Á8¾îáY0†t×½¡ÂJ/ºe*Ü|®L„‚h½Ul¦ÀjÑF—µEV¨ùœ°¬I›hb[Ö@ÿÔZ,äu«L“k˜•%W…`vÍDwR$…ˆ1ŠŸ_š´dRÆ¦Ù%\|
fÿ)xÝõð>ýîF”N“ÿ»X¨+¥pö!öK'ñçÞú‡eãHðÿl/õT0ãü£Ï4ìPøQxœ…”Ï‹Ó@Ç)R…°RüÅúXDd%=yq©kÙ-ìnCSÄC.Óä5˜ÌŒ3“®{ê¿ äâÕ«·²þ[þ:“44n‹zh;ß÷yo¾yïýØÿõàëã$%ý2¹<ðZwÃ~ï¸7îGþIÿ4¸zßúyë°©È‡p&.4˜BX€dyJytð²÷YC)£|*TF¼8lCgÅ(£é¨î<YJÌi‚êzØoÛr¼èzÝðö‡Áx0<÷½®–Þ¹€¡tQº:ìê§ýÕé1šmø…-1¦SC]žÎ'‘‹,#<Ñe® ðê
æÈÑÂ/¹®²ŽBxím¹SÁ˜¸ <¢c@3É0Cn0ù‡ßÒÅ²³·˜ëÈ7˜ITÄä
#_b44žEq¾¶¢!§¦ÚÐX{ŽÄDù’¤Ž“K¸þl ÂE.¥P®¶Ó:TÃ`mTIÕQ&òI’”n¤–Î$hÕáYo4ÞàÉ˜Ö-–íû‹@p4°¥œÝëÆ‰ª£c¡Æ†L˜ýQJiGNr&E{—™ÐÆÏ ¸jï¾Ù¨á¤T85”8Æè^£Q— 6ŠU€íW8Ü(Û¨¶CœÔ6…â„muuÓÖÿ K¦mp˜PNì·Êoo54þ•kÔ«YÞ:Çum¾¼ê¿âwûÑÞzH%RE²:ÂsÃV|¿ýt÷Õ’‘K+¢Õ^(þtž!"DÓŸgÍ½ oW“ñÎnˆrþ3a;¼9µöCÖ¸’ßî=ßi‚l–‡¯Ü8ÿxÖ¯v@`Ä´,×%Žü\£íŠœôþ.…¿ëƒnxœÛ!ú˜w‚’DrN~iŠnp°‹nANizfžnYjQqf~ÞF5aFVgÿP—Í¶Œ{™Uq©SˆÑUÎÈ//Vðw˜ìÈ©5ÙˆU]¬:¤<ª>¦ar,«œ!\‡BpjbzbIªT•Fra±ÌèÌ¼´ü¢ÜÄ®M¬¦¦%©`=µpeùi
 ™â‚ÔäÌ´Ìd…¼²ÜT…”Ô²ÌäÔ5½ÉÕl²ZÊÁb¨eøœWÊå ƒcNí1ˆTxœmAkÔ@†É5¼"ˆ|^Š—¸­¶XZ-Édn2a&®zbv»™=­? ’‹wï"ì½ ¿Âÿáp’uÕ¤~·ù¾ç}yçýùAûñQû*´kõÒœ‹Ô,â”›ËªXŸk«“á²¹{J¦ƒ˜† „Ë2ã5Êã4–jžÏD	Ë‚'ÙY– ­ŠB”’Ï`ò[½/?å"–™È›o§·‡Ö;sy<ãu–ðT¯¿XïµÆ³^eç†LýæÜ¾0DGº~ÔbÍ3çÎMQÉ¢’æÆþñ¿×Â¹uwWÈrxåqù6\óÝùä¹ùær~Ú`Jõ't«ƒX­K™%Õ<.a“öÞ£QqÒì¹×›ÏÈZ5RÐ(¯|×Ð7IŽ}[ÛÿjJD•K8:4tµ[oÝlßA¼à†nè»o÷ 7ˆ&Ì\L|+òpÐB÷ûõ-™}Æ}Áè_¢ú”}ß
Êèó0Ä$B³VÃë";¢­Â>ì)¦”d£ bñ¦ˆ=õh„É«ŽÜ’èe„G™þMÜCp¢\¶ö?ÁcZcÔÑO†th{ˆ©¦TQ[p}ÕMµ_d‚ñ”èI‚Lxœ}”¿o1ÇÁ”¨CAŠdZ©,C… mtùQ¥€*ÉÂèø^.ŸíØNB‡*üÈê‚„ØRþÄÄ€ÄÎÄÊŽ}×¤ùÕZ§;Kïû>÷î=ï×»Ü?›û"r7zÀÎOsoK~co…­î)QPÈ#„Z=1ÒÈô µ ÇØ ’lS~_£TEí§ðÛM¿µïË_w•Ò²ŒLÀ»B%ØPÁ‘Û­@=´Å£¢ýX/ÚÏÕ’ýSYË?è…ôzúYk>ZÉÓíR‚ôT:I‚yd¿WîÚ¿Õ-{nŒá®=´ßß‰LÉ=¢Èß¥»µ]Y]Á˜Q#¬ aÆM$ƒ¸h–«Ÿz„L	tˆÃZl2j@aÖa‚¼Þ\ˆa?®‡:0H'36Øh4Y¶®ïÎ„‘Sm(q»L&â@âØ¥$š[>Óž…÷<_'X™ G‘×/©ž¤]ˆ 
ZÏÊÍ6j\v3}‡$t±¬™ìñqµ”ò}Ÿ)Ž0À*Ë%B) w©Ðƒª>>úLÐÚ¸1X|»[M0v®=>òš§†b?–6ø	u’ˆQl%Á×PÜ(7eP«	®Ô[qÌ–Ú—uàz‚;¨C9v»¬¯…|vÆƒ!(ö–?+3Ø’¹&z:7 xueæ-&•ˆN&œB>5Ï5«FµdøÄ%ÓÌÚ¶_Gö¬vÛþ®ÜyÙ@û”ø0©ÓRä63{¶ØŽÍÞþŽS¥ÆL„;Â³nu¾´ëÄ¢?*v|XN!çýzœûÆm‚þäƒ_xœû:™qE7ã†|FÉäœüÒÝà`Ý‚œÒôÌ<Ý²Ô¢âÌü<…ÍÅŒõv¸¥'³ÒÀ)«ËË¥  œ‘_^¬àï0ù—›úä‡=¸4LvpÜaW®œš˜žX’ª Q¤¦ladhn]¬ 3=3/-¿(7±ÈÞ¬ë$Ãh\’‘
ÖQW—Ÿ¦ ’).HMÎLËLVÈ+ËMUHI-ËLNÕ›lè‰Ó9›û<ÒÅŠižï•5xœ[+Ð%0A‰§¬X· 93U·¸$±d£#kXpŒnÀæpÆ½Ì†ÈrÅ
1º
A©%E™©e©
Á©‰é‰%©
e©y)ùE
Å©É™i™É“Xí$ÊŠcÀÚb úlRRË2“Sí&¯a½É”Y2¹…Íbò^6çú|7ß; Á1ºù¥%¥%1ºiùE¹‰%¶`.½ `.°”BfžBRf^bQ¥DPÖ•K/ØCAÉ5ÂÑ7ÀÇ5X‰K¯¸€Ë=µD¡$Ãi
Îž©
©EE 1 »2Å‹K2“‹A†•CÕ¥¦Lîd7ãCõÃä{ìþ bgáâ%€wxœmQËJÄ@D$.Ä¼5t³*ˆxPO.®ˆËâã6(cÒ»HfÂLÁ£'!¿àˆWÃ¿±“õ±Ëz›îê©îªzœþœ}Zœì!±q&ø²67æ4ÏDðz0ö>>3Þ|«Å•µ"%	#8c E²· 4 ¢-Äx#‚(O3¨GØ•yB+`,\)-y®kl*©8òêSL/*~Ñ_ðàmÞsÑ›¸»×°Ó>?Þ[ˆ@Ë]&CŠv+ÀoœœÂ¦¡S–ïøà~Óot:>R$¦wé2UW…CCh4Y“$|½‹e’À}(3Ê-Â¾$	3‹5)ÝÖÈb	­–	8bÀt«î ‹¤ªC*Åo(M¥Ž@9È¬	Ñ9ŒÄRÖÿÝ®ÍAžE%wùûÏåÒø³¿¼ŽiD_õåZyÍïÊño&§,§2&ÆŠ…Úòvé<×?\ô»„½*ç8Ç*Å‘ì°ÖÉî­ÖþÿÓËÑê{xœ»)ôW`‚KrIQÎF­{,`ÆdV).çü¼’¢üœœÔ¢ÉZ¬…ñù¬6ìÉù¹¹‰y)“o±Öji8Ú¤¤–e&§ÚÅ€8“SØö0ºLVd—ž¬Ï!Éè?Ù“Ã˜+aRG#Ä$VÎ 4$)ç8„†FxœmRAkAf/*õd•J¯—Ú·©¨m‚ÝÔ¤jZš¶ ":Ý}Iwg–™Ù¶"X½‚¼	žÅ‚Ð› ¿@€'/‚ÿÀ£8³‰­•ìa–™÷½ï}óÍ÷kßûüÊûÐõF4².3tÑ=©M`0Áƒ'ÞNux‰NÔ–÷†V ðK °†FqÜFh÷AÐp€¦à†Û]ëšZÌcà›*èánçiS1vXž˜i
¶¸`Ö‘*eÆ/UÊYÕ­1§µw—à¸†ÉÄÌÇ¸Í#œìšy¸·²ºÞ\iµïWÊ˜Véçúž;9F¿Ã‰+ -i€%‰_Šdš2kØ‘ê°HI­]2%ã<2Ða)O8júN"T,çñý1õpæ*ÐÚ¼ƒõ˜b‘±—ì£`
w¯CÙnÊb;Å¹â¦Lø%·£7á,í×_z‚ž5_°uÆ"x¼@Ïgé{Ó±[.Í•5óA_—'©²4ë'²û@gñ{ö\Ï% ’Â(™$VŽî¹›E,3¹B™a 0S¨Q.º`Æ¾.XÚ8«e§8ý‡„™âÄð¥ÂAàÚy¡ÖÏú¥&¾¹a„õ?Ïb7ÁqÄ%Ž’ã4Ò—åÞy·&JŠíýˆÐÓ¥±327Yn\¨laZ¸=Nï7j¯ÕèÅâé»7±/ØÆBÿ2›Ã‘Ö>GaYäñÿº_A0°ØööŸÕ&b”ÆÚ×F†Æ’x{†Î/^¤oŒÞÖÇiuó=Ü|ýÞCì
ƒMxœÛ7‰ño?ã†bF–ä’¢œÍåŒv`Ödf‡hmC·$5'UA——KAA!(µ¤(3µ,U!851=±$UÁ9?¯¤(?''µhs³ÄŒÉÝŽ·Ù“óssóR&§:9°ñr%æä(L^í" ®–Sb’Z–™œª–^b­¾YÜ¹–‘ÑeòT³ÉnŒþ“Ý6s%ÃM,á¾â°ãîåŒ l`<žé•rxœ{Ì»•w‚ÒFEFÖ ŸPwÏÍAŒ{™ÅrJÓ3ótËR‹Š3óóbt‚3òË‹'›°NžÈªkP”_–™’Z¬P’‘ª‘šS ™—–_”›XRd%‚SÓKR ¦Å¨éM~Ïj9Y‡-ròD¶  £*§àxœ[ÑÍø¶‹qC>#_ANizfžnYjQqf~ÞæÆz;4±É
A“k¤'Ïvx4¹Ýñ˜i@Q~YfJj±BIFªBFjNBf^Z~Qnb	Pµ–NMLO,IU€¦·¹ÑIqòRç–ÍÆ.¥Œ Ã1¬çœSxœÛ!z™w‚{YjQqf~ÞF5aFÖ0× `ÏÍ¶Œ{™aÂ“ÿ±ˆ)BÙ
™yiùE¹‰% 6¥W–›£›œ“9ÙU®#–U›;=³DÆïa•5‡™€¢+FMO!$#³Xˆ@%©I…’üüœÉëY-@ÂÁ©‰é‰%©
]4sr5›¬˜2XH¡UßäR.g £UXâxœ{ÛÅØÒÍ¸!Ÿqsc›Ýdf‡H‡²Ô¢âÌü<]^.…àŒüòb…’ŒT…àÔÄôÄ’T˜|f^Z~Qnb	ˆd)ä•å¦ê&çdNží°or‚ãîôÌ˜âÉN²0ÈŠõB22‹€$
²&£P’ŸŸ£g£_`7yŸ‹ìdÉÉ}NÏ4ˆvÅ<ç¨ÍÿóœUTè#‚ÆDxœuQMKAÅ|¶<¨HŠE’Cœ9‰'w¢CŒ»8C¤=tfjÖÖžî¡»ÝàEÿ‚Ð¿Ãƒ„\óò¹çäÒãîæX¯Þ«zUï{û×ÂU›dCf1™›K3óiÜÝíf1ß§4L¾ôf¾>¼Cqµ»é¸„ÊBi05æ¼ä9ì(iµµWJn¹'¡À
­>.á—LŸ»·W6ÊDŽ*3fhÈ¥E-™ ¡PCØ,pÄsÜ†ýA–ôÒ#Z:ùäY+;ærUULîg°L¹ßôéË”&Ä”cà³Ò§Àr­Œ¹mÔZg¹…’U\p4^D"S“ì–Étu³ð[°äž‹˜tëÁ+þb&Á{w'Áê<‰Ò=èLv\{6ºì¡áÚ.Y…¦f9’è0&Ñ`@hXÂæ›d?Þ^Ò°8«jq[cØ3SX'=C•Í†øC÷Ý`?N;·6wÑ‚õVïKbçÿQØQ4ÿ-½¢2ÉÏ÷ÇWû_¸‹¹ÕÖÝdÜukÙý˜[v§¯ÿ«@¾ì$‚´kxœ•Q±NAÕu‰‚¨,E²2i,:;)R€‰cáÃ–›DXAJÒúnÎ¬ØÛµvƒK$Ò¤	Ò”Hä""ùRÐÓ¦¤DiRÑg›È)éæÍ{oôfæúÔû|âýèzƒ¬Ë,ú}3ÞqyÓÍÛ­Iø¾’«lŽ ôQFJƒéaÈcBUI«•¨ý†ä–;Mm˜ Õà:\2= ÓÊ÷ò&eÙOÌÝ4ãsiQK&|¡º¶aŸ‡˜ïÚ|Úx×nl´6·—ŠÎIGËÃ|{—U’0Á”8PzÏU0ŽI¿x] h);•aN4v˜‘…Z)ÑÓ*Ú-Ä,á‚£¡oÕùlšóÿ(£ ¿ª/0	­Mz<÷Á‚É©ÌíR¡Â=y`¡è@1å^ÊWsò›9:_ÏÑÅJ‡nj™ ×î\’%hz,Dº¬å½˜¾Ö™h?éù1ø†NêYºªÏ<\Òy«_ègðäc-Ø]„{=Çþ{NzñØéÓcão ³êSú³ºðhâSTXËÒÎÚ3*5§‡çëÞ_pÄÕèì$•\xœmÍJÃ@…)¥-Å…ÛÙt#-­?…Ò…“IL2a&V…ÂÚ
mÒ¤º+¸!/Ñ­øîúZNR´Nð®fÎùÎár_ÞŽÞ›{³ÐoG®ïµiôÑ9®TŒO½òUôì°Ö4¢0N¼	0BTx€‚Ç0ž»É4²›ZköcŠÜKm“ùõËª54³u}Ýä6È]0Ýå —Ëq2§37Îžƒ•X:oÙ	–s¯+á4‰Òd QÏõÝÄû¯q˜	ô%®ÙEš€b~Ë{’Ô}>Â@B0a+di˜˜²ƒ°Å™3‘¡¦L&"ç"¢Ý1jà2Ô!›¦l©”Ñ[ÛÆÄ*ã_5m‡ò€ÒCÊT å0• !d×ˆ:˜<äàE„÷´T^¹Û6çzeÎà0°ÎlùD‡9|U†mA¶=ÑÔa¶i(ß>¨øä‰Ì<xœ;¼„ñÛDÆyŒ\y‰y)ºÅ%‰%Å›ëìø“…u\]^.…àÔ¼¿0ßT…pg…²b]$K!›7ÓQž±¾¤>Q!Hå)„æe–bÑªœŸ››R™—ÂË•_ZRPZ¢P’‘ªàçèç¢ R’Y\’™\¬§ÔÕ…¨ÐMË/ÊM,QÈ/(ÉÌÏS(ÏÌÉQ€
ô‚	 ÍI,æå*.HMÎLËLM™Üç¬9ÙÀYW1±R!)U!5¨²bÈSÉ‰E‰É%©E¼\“Ë	cqÃæ(—ïŒ“·ú—"‡•m@²×÷´3 ‡€}â$€~xœ‘ÏKAÇ	öH=†‚”W„€hLJBâU³BM–ôP
Nf_’‡»;ËÌd%ñÞƒPþ‚·öØ³7/þ½yõàÉ]£sêi†ïû|çûÞ¼û_¹ë³Üe?7mPô…ÅrbÊ±$¼Ò¹“Æ¤È«ÞÁ„V6VXåB ¾¡Õ„	ÂÞ‚#_i01Jê‘ÏÙA@­3-õ‘±$M!_¯ÄüÕã¿kŸÌ‹õÕû¥ÀÖ|LHb©okð½íuvÚ­½õ
†þ½~UêÈ€Ta("Ž)@EÁŽ•>Jo/ñ?çÃg€–²…¼H™gƒsBjed…X+(-ôDH¡á¢³X¬§a¯;ç{ÎÜ<YÅºé|d¨ADÐÚßE¡…´©ÂgNqTV*ä£$DèJeúìTôq¿¸ïùÐ}s¾ñŽo6SÛ»ÞØZy:O· ØÚxh"èR$ôzJ‡Âruû'W·^-¤Ñÿ÷ë™ù‰~ÆÐ‡ñXËé6õŠO	Ï6Ýé‰}05«|·¾Ä·MÁ5÷Ï#Ž¾Í›ë"…¡ixœ¥‘MJA„	’¿qã" *ÈŠF4Á?ð	’EbÈ\8‚íÌ›Ø8Ý=twbÜyAè¥gp!qé	¼{'NàîQï+ª ¾g¿s/ói…¤C4¾çi»Z9¯´«ƒ“ÄçÔøaRÉÅ;¾¡‡ÜTˆ.õ©Ø×‘‚žS´ë•VjÜ’M7¯É¹}¿Æ{AíÊ)*F¤vŠÄ‹LèÀ‘‡=êb®.šíÚEÃ¾vü–a©ãô(tð‘zJ”w¡P…Aœ54‡¤ƒk@¸÷{Áfÿä
§­JìnˆÒ%a››L.ï
Æ†è<x„!ï£FIæ9³´¡DÄW1E\)”ú}„Rx]WƒO(*ó–9¸ä]v‹rcÒã}'°±²`•Z6ìZÂP…ÄEˆÃ"¹j•šMËìg·f(‡[Ê‰|„x£³gésÔ ïÐ&a•þm3D†úxÈ¨c¼‚³R2eky²=µöÌ×ôúï¿ºÐêE„¢7xœmS;lA•%D"wˆ
[øìP¡Dlœ„$@GH)ÂúnÏ^¸»5»{NREH”ˆ‘ ¡ ¤ (T´:J$zJè@ìÞÙ—ãÓÝÍÌ¾™÷ÞÌ½Ì·§™ývfHqÙa-òúNæáÅÁ~¿´±Ûÿ¶zÒ’>Ê"Žcy¼V. +T	F{¬Å•àÐ³é„„.@v©Í\fÝV:BX]ª®¬é’6›:¡$ÀÊT‡êGDc*Ç]æQÐ(NèwA§’ê¾º¼75ô|S·þgÈ	÷ÔL<Ñx[ÍÀ†eâx¡VÆ7µ£#ËÍ%.‚à‹ê)üXÓ+æÕÕùÅÙ~’Ã €_kŸ]2àÛ§©asYAï…Tª¿™Ä•¡§+iZ2ÍË¤¥rx¨ðm½€çëµF.kwˆ ¶Òh1ÈÓíi(ëŸ²á?Y(,ñ©ì]Ðò¸}7]Ëâ~}Ê¥‘ì‰â>Ù–6OJn3¢´7[zêdÁ=Š"° ¶:Ìî€M$²ºz4ŸšÙ˜Ö¸ Ž=¿´ÅM/©mgRc«'·¯LB>qÞa‚ÚŠ‹B¤Ø ¤
ùQ£hßÕ+C}ÅñWý4>Ÿ}†»sç2¼?w¿ÌçJza±_?wÒäê-¾4òšP?,ñÁ\>—0±˜cÀÎâfãð¡ÈëŸgðQcøHz#ðÓühÕ´ºªn¨ Å"v"?KPOuQzÝ-—Ÿ(£k¼¿‰·•Å1|Ù´puåÖtƒªXñP³†´+¸ûyâ]a©yÜ\NŽõfsÕjùZ‚6ð˜»§©ò?ìÁ½‘4¡?áOž°xÄÙ2¹ŠÆ,éZˆª‚½æ{íÉÞXÆÛëO~q‹â&„+xœ•R=KAä*AP´·xi‚‚1"Z%Äx¹DH£•ˆ®w/çêíî±»ùúö‹ø+!X[‹XØYX[©`«^¼3baáV³ogÞÌ>ŸY×§Ö…o)$>ÑØãÖIáûb>wxo)5W1´{B‚
Ñ¥êvt4A/S¯.onA…7„dDSÁÍëÒùbY·‚úÖ«ŒbDêñ¼L |H:ça‹º˜öuvÖ7¶*ëµún>I_¹J¬{Õâ£U˜‡I;±„Ø²¿$$>NáÞ‚ÙN±“«›ËU¨7C”.	c²Ù³R®`¬OmÓ  Áƒ.´…<Ž$NæÜNÍÔ„&'¨˜G\)”‚þC(…×t54£Eení·}Þd(§Iþ™xd’ó;ú@ežJsãŒÕC!¶4Ï¥´é:Gc”ÃåDv!.Ã¼8—æª8ºí }øw‰‰ý)±¿áK’p#N\ÖL>òY¶Ì{¹<ø*k•œy°§{wkÖ'kÛˆâ\Œìxœ¥”ÍjA…	2qbÜ)è•lFH'H!º™H A1-q1›¢úÎtAOUSu{’ ÒøBëÖ¥+7âÖWð| Á‡°ªçÇêLŒ]vßSß¹÷ÔÏ·;ïn¿½“p˜¢f”i12ŸÝZª…ÝƒgÝ/ûK_¯ìÌ	 @G˜4a§à{Æ„FàTÂà¦µæÝŠ¦$ôúÏa'Â‘àø¤øYÛºqÆçù˜ty½ø´üa­{’"ŸZd˜Œ BÃµHI(	Û½ xS‡k‡Ó¥ÅÇú^ñ½¾Zü¨ßÈÃgZ£$àj˜*#}ËFøz;|ÕØ0icÜÝ™bcR<bZ
9€öâòšöM±F«$òpŽ“ƒêƒ¡ŽÑv'°­…m–%O—žOîŒçØ“‚rQîŽMA­>Œµ"JÜ&KS¥i’ªgòC&'eŒÖ¡eÌ>=›]eÈ6/I«$ñL˜dºÄM>^÷/øsp¡wRZÐÜƒ˜\Pn&|p6(RÖŸ˜1©ñ5“vkÜ9k«LjÏeHÑ€9Äc›€Ö³b–/æ¦Èm’…V\r%#ë“º%B.0O^µØ„æ.²ÑéÅ¡•™ÅÝå§Ø¬d–_2´ÿp»0³üwhµ8Œ3ŠÔ±t·äWoòF˜‰Öa6Â®“@«>•ö4sŽÆ€ (^^mï¯ÙkãÜ‹g ¯tYã‹­•`uþ	-NV^ü\Ã2ç'ƒ/xœ}R]kÔ@e+‹ø¼ ^ŠJ­&U„ÒµÒî.› BÇ‡ÙäÆM2qîÝÔ}ZüBüú*â_òw8ùXé“osæœ9÷Ü{çÛèû¯£[„ê£büy÷ÞàvŒÇQ ½w¡ô¢_o¿oœö¼W‘Ç˜—h/-zÄŠ	¤sd«±B;!TX$Æ•ëTÇpíUýâæã5mt$¯;ÊÞò ÁJÇxçÓYt2„d:~ª…¾íWAør~Ò2ÛÂ§RDš 6y®Š®t–)²\{éNÿRu®TŸoÖÃ œ´G\ÅÖµDiM²ŒR•ëL#É‡~_AîîŒ?mb¶ TVåÈhÁei»‚&‘fw±‚j¾p
UÀ¤[Ö`ZPT9Â"3ñeŸvðó>ì9°×pO‹gÚêM÷ýH\ç³™žƒ×gÑÑ·–\.Yz©±¹âÃ–þ<„çbÚR XèB¹dN£œÈÑAg¼ŸÍNƒ°›é1òÿÖÍ¦4±Ž©q××F‡Iß…‹\Þß|¯úÇp¿þ3Üˆ¿.Ôþà(…Ð6xœ}Q»NAÕ¶–œŠ€)N„I±,-0`;6+Š¢aöÚewg5swÁE”†*E"eªüE$R>€H›šŠŠ‚]oÈCrÒÍó¸G÷\:ïÇGïëÀ›µ$‚ÉÏ­Ï§dg†Æ©÷në˜»yqØ™ù–[øõ€#b£('W\ä”„ÚÀ¦$U_Iüº«ÖC÷mgÆ·¿¬Û{ú4ë¥ˆ7BÊ•¤¥oà¤{Ø{Ùí¿Þ(ÞrŸwÆï{Ce!u‹$Ä™Š"è$áL›·ÅëW˜ÊÄÂfiª«d .•}š¬[:šë5QèšÙÊCH£­E	¤F‡™dôE¬"Eve3HÝÅîâLoHXþ;ê²»m,ì+F,F8%â!ˆW9FH.~*	žÒù:‚b’<¦ÕgÐ%¹^+&÷f7pÑÞ§ºžœ£yÐ+¸Û½'tÆiÆ~_›Xðó?Ñ…æã¹î…JpªaF¨x.k~pßÛ-âÿ”D(+P–•´¥²¸Ýó(¬r»ËÆ¼»n­ÍN/Ñ]´VÇ£vÛ»¯˜ì2¶ïxœµWmoÛ6þî_qÈ‡¶+jÙmÚ3Ò^¢­Ç°Ü¢EÕ´t’¸É¤JRq<ûí;’¢ã$v0 ™ ÛïøÜÛsGæiz¦Ñ·}ÜÔ8qµÂ¾Æ¬UÜlú
³« 1nM%Õ¾þ6ù|€¹÷oðU#BeL3Öëu”Ël)åŸ‘TåÀäå›ŠAeVõ Ûàð~GŠ‹w&³_I>'ç˜MºB4®´`®¤“= ë"hï·¾Ã3äûðåàx8x5|u$L´¬ÁôÓv/A”ÈVeèE~íœ‰²e%­Å¢¬¹®ìr/Z|€#RŠÓ~Ÿ~œO_Òþ<>ýtG/éscôÈéa÷Ó™;rØý}Ês8Ã‚-WT†-yMumÚ¢xDKÿüèãPº²-ÛRG9.9Žo†o~{¼«AÉ6:*EëäLe¿BOšRÉ¢ ôé_Vº‡/#+{,O9B*žE%D¹†ñwHŸ±ï½kO­°úôQ©Ñ@Žkk…T+få#šÈ¹fËšsÓT(˜áRô"QÝ’ýÑjÃž9)<c¹] ƒ×ô%¡ÆÂÀŠ©’¢ÞüÔ‹Xõ£¦áb<™ÂéåtO,ÆóEâyÏËLb»w|õîO6Hût0·™\­˜Èý¶äËôr–LjaÝPòŠ^ZL,
”ÔÁ¤ÅNr¼â¾‡¯i?íkþ¾;±ßïáo²rþå[ö<~fmÙ7J™ÉÚ4°Oô\£	.hÚwÌl©=œ†}¢à„ÖÅ»û]¨)Ü]~ †ÕïNX]KÏ¸´_£(MåhÌï=ä[¡nXF¶yNÎiž{$þå½Š­Óþ’¦6nË’N¥‚û²ŸÅÉé|2[L.§¾ò‹
oÑi8¦€QLè•CjÚ0Ój°‚œ
µípYP!H+©vÀ$ÅÉ0k$…F›d«kšìírÅÁÜ¶¤5‘Ia”¬kTé“hëÓZfÜ7òÍQ ;ìµý#‡Üáš&TCK((áŒoUg>O"°öý³Z5;ù»Äm~EðŸçH;,@2;Mû¯-ú}EÂ2Œ×:¤!fYu8b…¦UÂW‰5ÄþFQº:W3IþéFŠœ†°µËö'…Òl§6Á9,7Kµta	qLÏA·œùÛ€ {¥KÙ˜,<wˆÄJƒZjgÄnkE˜Ø¡Ð·iáŠ[Im^XÂÛRœtôÈŒüñ™³”¿tl·ƒn6ëÝ4Ð8Ôg½hžÀëÞ‚NBcš¶Ê®f¦"ïÃà
1;«ó¸³eç—`ËÏ»Ð™pW©›b;ÇÚ"Á¤€VÛªmÍ„Éñ¸²}ÁK›OëŽÃj5¾psoÛ]ú2p¢e™J»®8ñJaCÍ¸Bêß,é²eùé¢¿N˜ô>œs '¡¿m!QÍ=´Á\Ú»]›eHÕæ4x][RUE7’ÅÙåÇÅm›û‡ÎƒCÇJðç.cGÄW*šÏB—ì†Û½ï´]|³ÊïpNW$Ô¬U=÷×ÜT@*«y3¦ˆ:†´CêsÏ]KXuEo¤×âÁN³}Ü½C1½/?;V—)wb>¨r6ÛòpäBÝñl›ºw²0¹ïû| ;¾ï?½ÇNÓÎËñVçNð¿ûºôníœ­+3Ë_?-Ùz‡úÚä²µdÿ¯±WamWÛ­
¯·ì”Š?/fçqw›Jˆ¯Ùª¡ñÛÝò>Ù[ž—¶G‘¿œPÓ[n°÷/çÒ»ûäŽŠéSxœ•UÁŽE•oh‚¹nˆ(„²´6B"JDÂ†]EÎ’‰—D\zÛ5vK=Ý£î{þ >qã@W¸Â…?8!8PÝž±ÂJ+íVW½ªzõªæ÷o[}ÕúzÔj[ä…nÖ1È'ç¦5½¹jòÞºûêŠ:í ¥×YÆÔÐúÎwÏÁ*À­ý‹/Zñ1¾½+ÝðÇîÈÝ€O s•Åÿr{ÇvðÌ5äùÂ­BÈvškYÅä°ñ¹Èí zèØ¹H¯ ,l| ×¨+ø°ÓQÖ¦DM2\8†µ§|³f2†2)5gNhÕ‘¨Fn\…;ØøøcÿŠ¿tü¯;¾x>?ã
Í(&X1Î0eS4¹YÇ\a!<™c`ÐÒNÛ‰VÚ@¦Mm€äYBæ`Šäœ]X9û|qš	çrév²p­œÑR¢ñ?Ü¹ëcÖj.b+pŠnŠ¨€m¯:üV9j¯v²ZŽ°0ÄœL¨¨¬ûåèºó§Úd,4¼ÚIlÞi*¥&ÈPO‰ø É?v;è¿Ûy3€¯»’cBÚ®ÿñÎîüññövºÂ¨ÅˆXNªËq…‹qMµÙ\«¡P#"X7‰k2B$SÒT(êätÁL!ÑR×ó•VÚÉ²—'Š'æÏØ”v+Z
ð"òhˆI¢ŒÔ6d‰q…|uÎäùVCq¸cmÝ^Ð!±vÒx¥^‘ÈçTq÷ÍãËþBoî¿?Â=fFôÂ Ú'P,#bã¥4TKµòþ£G¯'åÒžú÷ï^i/6X~îÁüøá½¦Ø+ÜT v¡—Ba‰óª{ ‡ûãxÝâi[Œ+¡ŠYXÜ‹ŒÇÿêp»’ Ä4Râ
ík:$ƒ9mV†´Œ38-Ò(·Ø¾ÿâèjÒ¸ˆÔ×³Í«éê½to@†0Ž*’³8$Ø…û´æ¶àib‚¶YH&K‚S´ÂËB(hprpÿƒ“qgÛ=¥ô—ìÖk9^[Œë¤9šÔ‚ƒ’,ÏÓ¿‰n’\k[(ˆ{·oC:vL}BJ[‹3TLb›
×WOM˜Cè3Cúq'Ê9D]Ç£ˆfBÿ‘_åÍh,OTozÐ]Ù‡ÿüè°›ÙZ~ˆ¶—mõz‚ñ—úµ0¯Ç†UÕ4.+àarÿQï.ã”·}t¨Ü‹Û>X¡F¹_[á½hý?•.\¿¡[*õ¿<|m©në†ºp]8À”ÑçÌ[tã™ÿûÑ—Ž5ž±,§ƒX^•ËçýÇ/´þ½+øæ8‘2xœ’ÍjQÇ	¶	Ib…µ­`&±»4±.\”tçlnfÎt.ÌÌÞ{¦‚oP¸K_Ád)¨/à¸sç¸öÜLgü*èf>Î×ÿwîý¿·º{¹³a0ÞíßnmÌŽOž®ŽZnl»>Ì0,µ¤ä‘½µùhà2A<…Q„2Ä1¼üÀeŠ‡#÷Ã+nŒÁýØbóý.¥‡#Ò"71êÀO1?£¤*"höM{×ÚÏìÇöŽíuö—NB•e‚ßÒ@i0RP7€©É
­H…*…HX—$È9i•¦,¹7„SŽ¬³†tR©±™£¯ÆþÖbi š@ÅœbùšÄÕ™›käM¡ŒeX×7wŽP Ž•ÎXg¾øo¶e—‰ˆÔ¨Zº*VÚñ‰	µaŒ
¥ .))Y«üXs9Õ	*¹‘WªŽ-äŽ¹BÖø„AòŸG“(CÀ[üc2˜ržI¢õ®¶¿ÕßÖni‰¿°Ù¯;öSç¡ÝÛêu™€»ž—˜gú÷£±Ý¤–ˆ%¦ÌŠûÂ¾îöWmï¤µ¬œ†ãüáCo8Áco"œ¨«\$ÌõkÂswí‹T‰ÈÒ”¡¤»¡ÏÊŒU9ÈS½ádâ~#ƒ«Ï7¿´ÖnjÌ]¡4¾oâWD§µç¿uCû¶÷üþìBåŒ„Ì.xœ•UÍjGFcÖžìCˆ@ˆ‚!+ã`;FR„d[-–Xôw°/iÍÔì´™™žt÷ìf‰a_À·ßûl#„\ò9äH®y…@n‚T÷lÏŒ¼³/ì_uõW_}õ3ÿ½]øó§…“Á‚§ÐÏ%×ã®Â4øùÇ…ÑúYSqa£wãŒº^ ö§6úA6_$	#ïw¿<<ã½v“uXŠõj€CîãÒ@¯Â“n7ä1~kÌæ‡5>ƒnÎRœl^_#7ÂÊ¬[šI¡…/bw'ƒÖã
 S%€; ú<ä¾PÐzl î€Žíu-YªB”ÝÓŽÜe-‡æêmºš*ÚËé0Á™¸»0sd.¿Þÿgra»ÀÀä
Ð\TpÉƒK¦™×1>ä‹TKÇ(—Á ›CPZæ¾Î%V0rŠJ“úŠ×a
2&5ˆÎ(¼cb|OUKx—óU–Ë1B†22¡HÇãs¸MZÉ%lLlb%\èÒ[HÃ%¨Q*`J	Ÿ3Mþ#®#d† ×qÄ–a_3Ó=ÊÈÂéˆé‰‘¹d,‘x¤µ4‘P(óÇëÌ¦î€AåÇ	×ºL•Í©&“B!$Çaƒñ§µûúÈ‡XØooL°Ê’‹”Hêb:?½‰ŒÂïsLuåäuÞƒ69W}—OÈ1&e0#Hsºáã Cn$¡
ì÷to¯¶^ÿö‚;L|êH©.*c>N5ãvq)ýÞû²3˜â´·t¹cøcû³	-Ø=ÚiN…a.ÃvHƒÁÓAK;nmFveÙIÇ†½!d!iž¾²µµÿªëªànl²¸O¥j¬QÄýˆZ$‹Ç`"äŽóÐŒ¤¶JØÔKí´÷…wfñ™Ü¤>3•`Œå€“Ð­½»´xïë[ß¬š¡Ç‚Qæ{TYNÒÈQò„ªeâ2oA™kó×k¥úLK¬Ð RËÆ˜Š„sÈ6e‡÷Û¦œøz€ŠXLÇx\î†É´1ÍXÔHÛéÅ< É¦C_U† Cj>‰
¥'òË±Ü[Øè{Tõ¸iÊiÁ²×Y»™­›Ï ø«wT»|õÎ&«§Ì9~$èS+h¿êÝ«@ƒf¥kMÉw›çœZÄ5¥¿Òx:¹G±½Ú|¤9»+÷{¨<²öaX›]#måo(˜¯bç‘W¼9ìû{Åó]Ú°õK²Uñzk¥øûÑ÷çEÿèbñÝÑ‹ÿH·à>Š×_xœRMkA%†„ìrËA	¤BÌ¬!¨Ù,"Éj ËîàA[¤³S³Ûa¶{ÒÝ“dAX‚0·üA$xóèÅß#x¶ºg“¬Á¹ôtWÕ«÷^Õ·¥Ÿw?Þ«ÌÒÈ¢±_Vg»;{-Å;Ý˜E{‡—Ïf¾Î²ëŒ(S}`tÐj§v€àÞ„L•r+”¤a·˜ÀÑ<=d‘ƒ`¸L &Ïø„-›s0¾‰²´Ã|—FUÙ„7,ò/,Béºš­Æä§	ï‰Âõým ·|@6/,‹*š[Ö~\•+h´îìÇåç¹c×7ç}4j5$¢pðj' §´F“+™Ù«¼x'Ñ&±S
I·‹µW›ku*‚ÝÜ`ÑPQ†Æ‘¦Ã™;l¡%–+óßg‰CùkþÓXiqlÈÑŠ4[«u“Ï«)w…×öê!¤£ABi>"]YFè<áGNÃt_BxØŽwÂ ÞnØ¸N¶ŒÿåyPïtáQÐÍ±'Rz€:ƒ!—#ØîÆžÌ$ÓS å}Í‡`ªÈ’+·*{]|²kuˆ$bX8÷¸%(ätQ×½‡‚d÷{'ð¼‡¤Õ!ln\5t(Û•1Æ‡"Qº\^Xšyø+ã¦–Îo\5)r‘¶ÒYÈaP°òuíqp“[^ÔÎWÚ>ÍÏŸŸAµ[®%‡Tdø´ÜV§KÞKá‘\ÂòC°Rþ¨í>ùS;pô|èðrÍÍ•vv',/‚ð71õRRãL‰Ùxœ…SM‹A%7	*"q?.Î&.‚bt¿\â*ìwv/²‡N¦&i™é»{ÂâÍ“—>yÐ“àM„Þ¼ù+D„Ç«{’ÙÍ‚:§žªêWïÕ«þö±ôîMéS·TÑGAm‚Xv¥ÁÂdÈþ^||0 R€4ŠcÁô\˜‹Hª„.¹áÌ`í!„Øç
`"„ë4fCàÆÚ¥ÏÛEò^“ßf&6üêL×4àIà¢
×VßwÙÑÙ§_@€p*hë+WlãÁÏÃ1O]MY—þ"%bûë8¢©êTŠ‹.é®TÊ
ŸeÄŒÄœH Y.Ó¨¼œTÉ>	v¾$’
vˆ	¨Ë¨³Ø8“)á0ŒÊ:tFû}õ×avÄŠ$4™6B‘å¤@Q¥¬I‹b1ØPïs²4tGH¦~þQÌººá#“ )SÚ»R)»äñî*–Œ4paòfŒZ³µc„ÜTÊ£)6€vE$;TÊOµkè«HÒìâŠs<b¤úd5t.3ã¸Œpwâ³ì\sù\uas«õhsÃ.ïÏÙÍ©Ê¤·?Ö¦/þe,[ƒÃÝ;<¢?èÉéCXÝmy*£2O`,^÷d‡0òÙo†_qÿ¹Â|=æ Õ#%IæüG ¡ÄÈèLÎÜðÌqÄLóúù›·ðyI³Óo¾>æ0«ùœ´[5ŠŸáh¿nÏ½Üy[ª>Ä|–“ï°ðÌ="Ñâ—&Ó5b]ýëö¸U»¶å+Ç’)9A}D<Æ»ö`o}êo H¨¶¹`jXu`·þO(ß¢S»á;TÿÙÁU;üi{¼÷ê‚_Êþ‘éŒ´µæUû~é¼ý²ÿúø}µ|ãY†æ*xœ•T]kA¥ØPÝR•Š 
ö’ÚÚb6mª¥$ÅJ[¬Ô›¤/®Èdg6;¸ÙMwfóBÞ|öøü@ŸôÅâ?ñÎì¦îV}IfïÌ½çœ;çÎçåï·ßÞ4“¦ÃˆŒÂwf§f{MËÜßÛi¶Ž?mM}¹°økŸeBƒIÄ‡£“§Òx¼P¨Îâ9+=;…Övºg™œÖª§ÛðóÐëðÜ2-³O¼ˆÕªú/ÙïCòÿ(ïE§˜ïS6¬U3ÉÑèØKÂó‹ñ×Âã"‘¤V¥ø‹XÜK«RÈ„TéK‚ô™Úñ“™’¢`?¡þffÿÕ„úŠ}*@Ó)AB—Œ€x" îÛ^DI@È0²õŠ; Ý³Î@ÈN#2\Â
nÁá£8&~‡AsÔc«ñÃ‹ï—4æKN§¬Ïm,&€rÑóÈˆÑxÍØžVÝ#ƒÓ>–@µñ·Våã<0š"œªÚˆAaÀ¥«Qì Û%>µ–Ëp¢)ôÂ Ï)£ Ü ò(´1Ï—ñÖÜ3Êõºa™Ä×çgDÔîr)ãÎÜ³1zAòâÐ&Ü@HGmÜá,ÌÊÝK*†ž¿ÁŒïCIhGŽÃB8ÇûöOT éª3‡DÚÔhîÞ±B:Ùn 6Z»Ñã=Fó&ŽMé÷É8ãé÷ä’ï´í@AH¡R)i%Éþ(ˆ`@#àDå¼$ƒ<²H••Sœ.a¬rˆ”!oG’)-Ò%R°ÇBÁ…ê†AÔqÑÍô‚6PH"S½èVtY*µÉü%ÀÏâp"»Õ:Ø…µAn,â—IY¿$*X×Š¬Ô«J{E/ãÝ¸2¿´‘yc¬á¬ùý.[×ïÊF&àWôS²>¬ÄïæoÄß®Ôïž¡¥.˜L6çj~¹ßAÍqùêBMßx‘´mtFÇ-â¢ªÂßÐ×‡›
ÓƒMD¼uÿ?Îë—L1¾Vù	©Ú"â8‰ÑExœ•RAOAÎ#SŠÍ³¡=´¥½@T
Fjl¶•­ÓîÛî˜ew³3[lB"œÔç`¼˜˜øŒý<ù¼/ž9xÃ™ZÄ“{ØLÞ¼ùÞ÷½ïûÝ7¾~0>uƒõ]c¯d0ñë^ã*Cžuð8BÈ&Æ À—ÊÛ¹ò»d—x1.¥=¾ Oé_€ÈvaP»å1²ò1cNt§:dêºmø«¬^\`¤‹òŠ‰üêÃê¬~6Rúx ÜE°±KÛ”MYè‘Úbéé-qøàÇˆ…\\n^ï®Uq`¾eqk‹r.öjEDê©®”µ"ý­¿ƒÐè…Ä·ÁjËaÔ¡åÄ73=~–éN%uå_]b±–™Rp‚HólÅŽƒœbð‚)ÖÿC ®Ò‰‰=ÎÔ¬Æý‡&° Ô,6R¯±íÐ&>´B¢KŒ-æÃ’úÛv)!¾›“OÛ$¥ŒŸqSê˜ÕútQI8Z~/ˆa› “¡ÄçžÄ„z[2"»•;ç”“b¹6ýÈ’½ÂyD[1GÅ»DÊäbÄ(SÂÜ(ˆ;.Ïƒ0ØVkã„#Ó²"”S™†kæ[qcýM^Í4n]w[ªîÖ­Œ"Y  þ€µ¡(^5MImãæµ"äe‚ò~wgý‚Šíìó‚˜Ø¼-Þ7&RÜc'NBGX›RI*¢~''^7+“zÙIÒjKw:nRfZA‚25:/=˜—°sç‡åKÇeÈ>QCûû›ÏŒ?!•0K¿Šxœ½VÛnÛF}æ~Å }ˆÝ˜Š•§À°¸µˆe!’ƒQ¬¸Cij—å.uòñ’å¸Hž*Ø9;—sæ¶r›5¦cš£Žu…gÃs5úþ£ÔäæþN¥ôQî™	¤0Ã@;˜|¾GhÅP!};:(ËÂfzQ ‰B]Ä Ôì¯ÉÃt6ž‰KqûeƒUÀ'õšýCÏÿk¸6¸±~€/iêôC©3L­]»`Íø©ƒæùI%I¬ØZ‹ZÞjå O|¾ÑE£kù’Ã´/GumMjÁÝèúø,Ú ’¿ÉÑÄè¨ÓÝèº{õŽï§Ê­bn‹†žà¨ôé4<)u{7ûýÓx:?LéãÎêÅÚö
AU?Úi³¶2¿^kg€ÿ»êÄö*¤Ú
`¾²Öz®$Kà+9ÖEð`]VÔ†uj*ÄªÎ$´Íûö÷ŸÚR°Îpw»OÚ-æûÏJÍIýPóRWTòˆGÉñÕ^(´èÐ’ÿJ‚ïlE&Y¨ÆGæ-½¼åÞº<ì­‹Âg_áem7dHBeÂ…’P—ºÑ‹¤µ&Æ†²Ð{4d&U:t¹:ôéÕ•z±—IžÈ4õS–û†ÝÒnÐëµå¡?_Fë.8!*Yû;3âÁùuà
Ú¶pD¦›ñ|NÁ¼ÜfHLl)Ñ¤í£|–4”•ßXƒÂÊ×Á ¢P·­pÇÁú­/_‘.(€K
Ô±^ÔyNåÒÝ‘¢4Ä§…8€{¢­’¯ÎoÝØ‡Á]†’7¢H¨’cJo­8“DÊE›[¬˜ÈÉd˜ŒN…G,ùŸHÐÁÏphšÆ`®yÄ¹¬³ùíx4À6¨„­0[yÈh‰PK[¢aî‡å(¼OvgGº	æÕ­³õ•á°?2{_ÃV7cCKžOTÒõZô+H^x2ôÝ,©+»¨#2Þ¸Ò‘7HI—†2/•¯—+ZG”~Ë¹Ž:bhw…
ƒ„œ·{»Ýäé?¶<|ßÂ˜_ÁŸ¬1¥îþ¼¹Ÿ~¼ëÝ`¿Âar§‚`Æàl:;g¶Cà¡èÕ»+õ¦¿ÀSõ<¿üz‹ˆ¯¯w'‹‰ï¬ËÝðÔÇÕÒ¶@·¤tÈ¬¥ÌTÖ-ßG—Ò¿Ò‹Œzd¹zE×Ñð\îÞùr{ÿÃÏÚñEÊmîö÷ÅTW±Ë¶üÖ æçÉ±Õ¿ ÀÉ6î¢gxœ{6…ñRã†tFÆâÍŒMvŒÅ“_Û‡J§–èå¤•T*èòr)((„e–¤Nžèä:yŽÃ6 ²`Ç"¥²ÄœÒT[µœk K-½ÄZ¡FA·LI`òMÇ-¬`­›':©2NÞî,=™ÃE±l²¾‹˜	X¿Øx0ÉHU ‹)ä§)” 9p7”ä+$¥* ¥7¹Å¥kr½Ÿ_¾BjEbnANj±‚Fej‰¦ÞäÕž²“/x²LVp’Üìå)Ã ëàL-àŽ‚Gxœ›Ã¹‹…-¯,7U·x"›‰Hqj‰nAQ~AjQI¥‚®BxQfIêD_F…‰µæŒÅ·Ú‹•%æ”¦ÚÚ );…Ý20s2£+LõäF‰É…Œê“g2JGsqé–YYqéê‚5Zqq†d¤*€Ù
ùi
%@Ü¾’|…¤T ô¸¸\#}|\ƒ!€Ë/_!µ"1· 'µXA£2µDSor	‹ 1…;¹·xœeQ_KÃ0¿OqoS°?€°±U)¸´[d8Ä‡Ø\×@›Ô$íðÛÛ†n–í“ûý=ÝÕ¹Òœ¢Ò8¯ôÝÓ=<ß [nbˆú}Á_I“žPàðˆl¿!Ü¶¢R…"‰LÔÀ,ÍxÂM úìÈ:ú‚ÙÀ‰SÎÀ:æ«]’½')» ï×Ð—4*mæFêØÚ^©06ü¹_ç©~DL
\ð_¥ìeìóAi~6®hã±±äH{ZŽ@‰¢i*•¯ŒŽ\Cy$ÇZä¥Ò„ÉÚ¡°}ÚN¨J|Wô ¾TOªªBŒ‰Çrä¿ã+› iÈy©˜AÓâ5‘$	,7Ù[<©ï¦µþLûó™2a=š"È„“µŽ,ºVy‚?í¡nîOŠ·'xœµSMkA%hbvãMôDŠ%ÑÌÆ›b@—,˜Ý‚döÎÔì¶nwÝ=V…ý^„>ø;$ˆýÞ¼zõæÕ“5=³ù2Q<Ø§¦êUõ{U¯¿Üø1ÿvþ2ùþÎÜÔLs#ZÃõ©—Æ¦¯=a ;ÈbLÆ‡Ø>BŒ	—CëÉB¤¤Õj0@TÃEm QºÈª!Å·×›tÓ¾ö<Õ*Em9žÆ_ÕÐ`]Í#.Ö]{<¡Ð3
“XqÈ#\ƒâì…Aô3Áda1ë^õÍý*üåøZ•Ù4³a@³V[»k¾ßwŸ¦oÏN„¸oÓµŠdMÊ"tó3+÷¡Qj;V\
€‚*ôøå”ù,!ñYªí_ÏŒ….új9,\ºw3µ1‰÷OqÉCir=Íd†f÷BªƒÆ=B%>kF&10`#RV`i¹6O†"¾GÄiaFešbÆ*M¥¸F¿l1¦ªbÛ…Ò£¼¬‡X¡1“&Gÿm9‚S„Í™„ÈŸ+›—ÐÜ,·E)È2gÏØ-²-£Bs–¦J[ÒpÂUŒÄÄÜ¤4
Œ	^­w6¡ÖÞÞm¶[šëÏ.47Šô	ë’ˆs›q	Þepd²Â0¾ïÎ#÷ñÊ¡û>»7îYÏ¸ÁûÿÜrq.ø%DA—KFë(_©ÖMZ­ó$„¯B"âÞT®Áñ‡eÚúrn­{ÞÑEµû\é?ýoD¨>¬Qp?«Kîkåñ³}/‡åÆŸ†ñÜ(9…{YY¸u±òJºoºÅ¹»¿ 'øº€íS‰ú<xœ­TMk1fÁ‹#ŠŠQ^)]ÒJ­¶®-ÒjK[ÒCvòÎ4í$’ÌÖañ’“‡Þ<‹RôÐ“Gþ‚ÿ `&3»®+zpa!$Ïû>Ïó~Ì·ãwIã£¡8ê5^Îû“=¹ÿd wåA¨0ÑM Ø@B5A¡xÑ`v(ÆL …µíU„H
£dš¢Æ´A¥!–ª|•=wÿlqÅ”­Á3%3T†aø€é*é–µ_fGŠîµ‘ÏÃtjæ(öX„Ó‰™ƒò÷"wsN„ÃJº)Â+—í§‡SvnñçàTE		ë¡˜Â›FQ÷AŽ:#Q!”óÂ¶ûM'µç0¥}…:O¯‰B“«¢Ú¨<rglÍNeuT€¡¡Éôû×:#	ƒæ_í¥í«¹6ÐEO+zPÎ„]y45hAç·fÌx ãHákgl_ÈƒiâPqñ4u_ÇRÒ—¹#“¬ê¾÷àn|’ˆòd®Ü6R9iî^¡WËù€dºÌÇ‘KÕ/ât^¢µfMÎ¸Úªpg»¢ü¡rUî
ë‡kÍy+!ªx›Z×°§"í{„Î³L*ƒ´>›Äy¡Lg®Hm«sØX¶o7n]8;pöÒãë–JXmœ™‰I™ £u+À‰ýº~ûèõÆaÃÎlÇ6hâ¦ÏZU±ØOo—@—	â:áÍ¬ÝÙZ½yºöm×ßv1Cw ”ÔžlÞ]ÿïj,ßÜ»6™x¹`|þŒ,”ÉŸ– é-ïi)ê†¯Lâµß·>_®PèÖ¢h3hÛöýÂE{¼ýæŸ£ä|í‚©(xœëäØÃ¡˜W–›ª[\ZP_T’š¢›œX ›œŸ—–™®›“Ÿ®a¨É5QQl¢ûD‘P\ªt‚SóRüÂ|S‚aŠœ“3K*¹œÁ*K‹K2óó|2‹K|€º
ÓS‹&¶:‰`3xâµxvN˜ÈhíšÒ–Ÿ†Å|Ló¹ràæ§¤–$fæ+¤åç*LÞÍ(ÍÈ5ù:ãD-¢ÌQ šÃ5¹Ž)‘sò#&7 ©Ãœ$ç2ç  Cnhé%ŠÂYxœ}M/1Ç#²^V"!!‚ÃÄ‰ûf/Œì,uèÎ<³Sé´£í,‰o ’žœ|".¾…àâæ;èìxI==iÿýýíóäëØõô¸Î³L*ƒ‘ÇeÇËhï—FúFƒý½=¿ÙÚX'Þ¶¿ù°Ö÷ØßúÕ@<PD°{°ƒ|`[v (<ÉQ›šL®D±¡sn€ºKcý
ÌIA&%šÄM¨GØe!6àÐÞV&6SÓ€W)¡»ù¨
ÿ¬Câ/ÉS*ˆ§F´Í±w{Ë>Ufƒ&Å°ëM‚¥þ—F!ö¡¡¡Œkˆ•Ls,­zOÈ”ì²¨¤ØÆÀÚ°NdÎ#h£½X¾$‹+ÕU}áèaˆZ×z}åg¸¦¿:‹I•‡.ƒpÊ8w8×ÄD‘‹¥¤a¡LÓBÁ$Ô Óß¨^i°s¾½¬·w(3Ã¤(aÚ¾NO*¥¼ÇZŠ8j›	ªÎíêÐÍ…Ÿ?ic_†ffv%àM3î\?ÞÁ9×kF¼w£tÍê&ŠëoxœuP»JAeÁHD-´ÐâÚXeÕÎ"1>|Fl|À${³»2»³Î#*ˆ©EaÈøB¬í¬µ?@ðAg³jãTÃ¹çž{ÎynXoWÖkEŒKtlÊ\;".6¬ã|\Ì¬îþ…Øé ”0t`c{¡ôÍ5æBÂáx¨PÈŒùHÅÃŠJ fÉ(¥S¹‰HO®ŒèûÙF½Ã‘Üy£2ë`Í¯à˜+³°cÛLÉHI»Êx@ät<¯²5<›Á/`¯åòßg´<ÐæØCR¦+,éæÜíÖ&JîcÍÄ&,Æî¿2:(‰OT9L°„˜ØmåŒ8«ùŠtÊÈèÇy¯[xLQÊ¨}½0µŸÔcd;ˆBrU1„#ŸR³jdýÐðÒ)S ©xPaA”‘à‹¶V³¾Øeéób¿%ôeax4Œk£8,Ì€Y/û!á'ã?Ué×ÂS}¤>õKñB¿Ï÷m0ÀcDÔøû
èÀ	ê³Å\ónyÄú:Ö•ä'‡¹xœ•‘ÍN1…Cˆ,cÂÎ¿Å•Dj0&:b$Q €c]ŒÓ6-¶3V¼‚É¼€À]ùpÞÐ°1ê®¹=·ç;§Ëï…ÇÕ‘ð™ gØÀ—È|mú¡w Cc´±/ÛNféòÈåÌ=­´8kº¯‡™·ìä×MàÜD`!¼CHT0§‚™ª+1`0ŒŒBR¥jÛ÷LÈY {œyBÐb¿ï)Á·JN©}Åv|½°R!Hx
Áç)øƒw[°'p(}Üó¹5~¬MjQ¿8C˜^@OQí‚E%¦´ÉË4¤”|ˆpêócŠ_|•{štî¤…‘Ð*ÃH›{:•8³³`£Á@›Pª¹‘º‹åGŠ-´QÒˆ¬=5M8æ‹Ó3H<»’ºú.£ÑìÔõvÑ)ÙSÏj…187çså7Ý‚;‡]M°i©ð??ç7ËéÊÄ\VÃ>VâL~=.,î|ÎxÝáuxœÛ&øš‚{I~qFfRâFYF¾ÿ`O'Ç]gWÇ ÍÁŒ[™aòeåŒbt‚R‹SKJ2Rœ=S’ó‹ŠR“K“rRR‹Šò‹ŠB¥y@ù
U©Eù“kYe´4óÊrS fMvæPb‰N>Îê©UHÎIM,ÂilQjaijqÉdw¶¹“³Ù”»a²4‡*;ÂÊb hèRÔà‚¨vxœëëg\ßÃ¸!‘½$¿8#3)qr®ƒÜæÆr;dÉ
^H|UÞ ÔâÔ…’ŒT… gÏÉDy“óKó€"ù
U©Eù“8¬ãSÏ+ËMU€êR˜œç Ç¨>y¯ãsÁ¨PrNjbÔ N^®¢ÔÂÒÔâ’ÉwœÎN~á&2ùûä7¡Éï\b9íbÛ5y¦«²é›9ÝZ"L#ãCƒÁbxœ]SÍnÓ@V$ª*8QªBGE¡ÔQ‘B¨ ¶*R{ $pÁHlíI²ª³ëî®“æPåöÈ+pAˆà¸Á•¯À‰bÖŽ#·¾XÞÙùþfü}ñÇÂ‡EÏHÝãGÌèÏË7fæÛ‡­½ýíÀÓ
üý/»3_/•®Ø—ß3hçá€‡¬Õ·O4PDRN0ä•`1Ä²LD€Üô.°‚‘Ðá15Di?ª@(©Cm÷®¬Ö'œ0Ð_ ¾ƒÊè`3ç~fWmB]&†KºrÏƒÏÛÀ|Çeíë@_ïJVT¶®†
&û­²°UÒ«3
u§S¯Ëò]Y›H¦Æþ©|{xm*;é\ÓZ†œŒ`HøÓN%ã˜ÈË8M	Êl‚õQ',DÜmäXCé°4à)×f=H•rÔEÒî,Q¬¤ÚÚŸÕåêÄ¤ý[…qv >‰>R§NRnè“©.RV`F	YàÁÆFPiÒ²/vúÈQ(û}G’dÃŽ4PÑÜû\¤ÆE'Ý$Fƒ®i›¤e—ÂÔ R!È.¡pÆiäRé¡€ˆæN‡Š
uº.Ž‡AÂº.´”—;¹ÈŒçágƒÉ\¶ö`å°ÙÞ?<h­xfÓ|i»³ñL2`§k;ŒÆ›é5xj¿#UŸ7ª|G‹ÁzWÏ'H‰Û'zQØÙzQ©½×º@žÿt·KD·r¦ã›þ¿½îì´j_Ö–®g"xyÁÎæV«“Å~ªÝ´¿æŽçKÃ'nÛœ[ªå›ÛµgµµRÏí;„“¤Î,Åð”BºyÞ/Ù•«÷ÿVsœã@ƒ±oxœ]SÍkA'§J0¢¡b+OÄ´•nh+ø´mZ­¤P¬zPÓÝI2:™YgÞ¦ÍIDÏ:Ñƒž¼‰Bý<x×‹ þâÝ»ov›°éÞfæýÞïã½ýó¶ðâuás«PDmÛb›]»//oäÎîßüýüqsaü!ƒ­ì"Þ!Ÿ°Ðå*ÒlÌCÑ!…Ü(&Aê0ØæTÀºPCSHˆ’Nô¡&„BëÞ,|™<àƒ®úßhÊ«i¹…UW«Í_…I£ÐT3U*Â¡ïAxÊÈÃ§!°rÕîyí×ñ¾“>“K§rbmªÎp›HôÂÙt›×îŸ-F:A÷né«{¿taÑ‹˜µ:y;Ôz 2ZJâ1,¥Ã6S”U¯TT¬ÃmÌBn©ÓäÅíc´Àw…Åéã)ûñú»ØP0:±þ’pSîÇòÉ‘îï2ÐÝÄ³ülQyÚ’Otd¦Å! ìÅ"dRö`vf¦|îÊÜìåªÝ„õZ…pä&ÔŽçI.²',ïrC³î• OLûšXrä•Rq‘„é%hÁ$¥È)5*”IäisCæowŒ@Šr°!ž†AÌZ>¯„üæ‘B¥¶³ÈÓqT\°>î>­»o7·Ý«•Ç—¶…b¦—6«À2o2c*ù.Mm:ýX²=Ìïû­r!v›·Ïñ¡úåqÕ•±ù»v8åÁÖê}h@ýª½ú‡ÒÐ£ûX=‘R‹üöü®oŒü.XuÕ¹cÃ&àØÑl3‡îgýNsúõ‰rHÆ¯“†
•AÜ4VÏïï­Ý+üh‹s âƒžxœ[¥´L`‚”PIQb^qrj^ŠnRbJRN~röF-.F¾ G¿`gW?—]'G—ÍNŒ[™=0•*Äè*¥–e¦–¥*„À¤üÂ|SRRË2“Sc´4‹€À:ŠcÔô&Û³*ÈÁS€“¤`Ñe79€ÝÁa`È/RHÎÏÍMrA¸(µ¤´(O¡$#a¸B~X bÈdŽFe©@#sJSÊóKsR
Š2óJÀ*sóKL >¸!“9EØ‹¸òòóR'¿â‹Õ€«F8ê9dd¿MžÊï(‹é/} jý¼²ÜTƒÉÿùe&s	Š‰‚L‰Äè–§)—f–¤r ºûîæ„„7xœ;8•ñ{/ã†tF¡’¢Ä¼âäÔ¼Ý¤Ä”¤œüäìÍyŒåvXÄ'¿±÷òÂVÐååRPPJ-)ÊL-KU©PðóMUHI-ËLNU/V ªW k(Öãå²Ñ/˜ü×Qbò‡™›à698ŠL>ïxI¬X¡$ÙÄ2 ‘_4y­“„Ü8…ü4°*°E“ß8üÛIÒÙ?O¡¸499µ¸X,[”ZRZ”—
4"1§4U¡<¿4'E¡ (3¯,˜›_
dB8sòjçÊÉw=ùXòòóR'¯q¶šœç¡ ×ƒpÄjÊF†æÖH>,è‘…Í{M›³=Ã>qÔïƒxœ[&pA`‚
wFjbNIFYbNiêFQFfWÇÍ.Œû™ƒ‘$btB‹SüÂ|S‚}ƒBJ“rRJòós*«€ÌŒTˆˆžü4…¢Ä¼âäÔ¼…”Ô²ÌäÔÉv¬ºÈN.fU¯J-)ÊL-K-¶Â¬jSN~ºBAbzªBZQ~.Xº±@7¤(¤‚LL,;¢¸$±¤´›+bÔô¸ôŠ¸B€FÙ¤LæaÛ+ÕSZTW²â¾‡lÝÂPÇ ûmr»Š?®° ûÖwCë‚ixœûÞË¸´qC!#wFjbNIFYbNiêæJÆF;dÉL!aH|]^.…ÐâT¿0ßT…`_Ç …’Ä¤œT…’|…Ä¼ÄœÊ* 3#U¢K¢-?M!¤(1¯895/E!%µ,39uò‡ƒ(VE:Ï
J-)ÊL-K-¶Â¬jSN~ºBAbzªBZQ~.Xº±@7¤(¤‚LL,;¢¸$±¤´Å›kÄÅ¡ò©E@±ÁpXãlÈ(µÙ#“¿¹£X¡k# ñ¸yçð.xœûÎºŠM.¯,7U·¤(1¯895/E7#51§$£,1§4UÃP“k¢¢ÈDÖ‰,M¥ƒätB‹SüÂ|S‚}ƒBJ“rRJòós*«€ÌŒTˆˆ–ü4…˜=
)©e™É©ÛtcLUW°ˆÛqq¹¸;y„xúûqé" WPjIQfjYj1Ø°\Àz îÈÉOW(HLOUH+ÊÏÀ$ªtQŠB*È‚Ä¸“ŠKKJ‹QÜ4Ù–ñ„8Tº µ(T2ì²É²LNÂP{=5¹ˆÉ–É“·39  fÊuÓ¾™xœÅX[oÛ6~÷¯8È€Æé,Yvš’ Ù¢¶.âÄˆÝ®EÕZ¢,.éŠ”w—ß¾sHÉvÚ¤+Ðl3à‹Èsùø“ÝhLËÇOzM„Éù!ÈEÁ½…(¨
O³÷tÁJãå-ÌBð¥—«Y£tZ™L•‡ðþùàí0<fŸ?À{Í9dÆÌ»Ýåré'*ž*uí«rÖ5Éì Ëe73EÞ­¬½\ò’²w¦âŸQÞŽÏalV9×çFÃBK6×™2pT[o,ëÔ—ÜtOÖÇ3fð8A¯»tûA¿Ù2Y±ü.ÞyýÐlUUÆÜm¹µs&g›áZ(g¹Ð-·üÉKØA¡0òÞ®&ƒ×ÃÈŸ¾	Qc§‡ïÓ+Çë¯ÚÝŽµí}ïËZyg<’ƒV‡¹*›Š\˜hS¥ézúë{_ÖJ¶i5Ó~Â§‚I›ÁÓŸžîoK ÙFû3YÙ}VÆ™Xp—4³R¥)Ò<ó‚~·Ð³ zû>í=RÁ!’m~¢áô#Dmö±åóÜ¥V³ºû ÔÜ@ÂSVåRUÌ!gè"šMs,ÌÕ<ã’¡dË—Ù­½ß*mD*b»m–Ð~ƒ
ržÀv0”ÌW{-Ÿ%?(ÃÓÁüry1	/&0žœ^MÆð2¼
áñC¹SõžÃÖ75;ˆ<ñR¨iÉs¬,+£RL+Ã5‰1 …T “íX/ê8îE|çvüîâr4Œ±è9’Ÿ¶¢t@( FaGF„8¢HDH¢ô
Ž¾1?÷‘ye%QJüøèâõðþ@°%ØßZpÏËj¦%ÿ¸¥”~“’ªÌ¼B\tÀã£çƒóÐi+pÿ Ž4¡²d.À)Kp8Ráh:Ç¿\F“Áå…cj’	±*
&š2
YEÎM†=¯T1×TŠyÎcª1q a†Á|;v¤“)[Lf%gÉÊ1Î$ËWŸx<Œ„,Î€KS® qPˆX
“Q¯+æÖ0Úô^k^"n&¡ÒøMŒ„²¤vÐ  Ñ1õo~ƒ¦pÚÑaH#fXÉï9zÂÚ,æ47+’ÊXÉbƒþd¸³­g5Ð;W9ò‡'Jª’É˜w Ýí%h5ñ $V/H:dÊúFW6Åm¤ø&Gç§àˆ‡h£ØÑxwA(Ø
¦YÄmbÂNÈõ	ÀÙ€6¿9„.>t©L‚=•%‘ž3˜æ*¾¾GZöö\—tS¦t¬·&™fîÖA4¯k·ËL`Äc%·d}"\$ø[¤«µÏ¸*K\‚”Û(hxD½œˆÔ{ö¬MZ#Â…wCñ†¹­ÇÂÖ.¼ˆ•²ôœÇØ™1ó¦+»ªæ¶G­{ÀIÇz«ã¨·£ÈŒU¡¢¯¸ŒW÷[#‘JÈAêÖmÉ»–F¤S$%^ÀÖˆÎ-àK‘çkR‘Ó¢É…q^%
•`-hã’‹Š9Â|’U1Åà+çÜ1ÜT#Út‘4ÕäŽ0fWÉcU&ÜV&©®›3yÄ}¬1l'šòÔ4>×2äaÝ¸/m3¢¾=µÖ=¶w4á–5†'­¶Çò=¸X*Ã¦¶“TÕÙnFþ1ô·Sõ*¬¥ÛŽ6=ûK/Õ.a¥*X2i7[iÐð@ýôÕ;ˆ·ñ
ÓZ¢•ý YéÑ¾…Ò>ár°:ÀMŒÂTRtë¬Q÷jÔ–ª5îf"8àwÌ;X²ý,í^û(¤l+‰8Ó®é¨xÊ’Ü2¼ÌêD·ÍJhõ
QÎ9s¦¦9“×¨§\'Ødh“6MúÚÜ8ÚNÕ“È;º•©´`‘ªscn3ÑŒ7ÇÄ#ðë<XÓtJš‰Bt¢_mæººkJèvË;¸\Ã¢|ßžGças±èÖ+!ú=jEÙ®<ÙÚÓ
þìïF1Þ¾þ´W`@%ðz-0‚¾¿o÷'_F‡Î•Hk'µS²Š÷ à›¯A®Á#+å™ëÀ·‹°nÅ¿«ÛôŽëìÿ,ÓªDUoÚ^;òž{î*²5t@éû!ù
›	l#üÿIê}ÎÏc³ú*<_D^¿÷,ò–ª¼ÎKþ+Â^ÑŸ#x¼qµîBõ<¢mM3µ­žøàŽüV·úw˜þãú®ìFÛ‹î"ËºÄ{Š0¼õ7ÿx&ì¡Š­ZxœµUKoE–´h¥( 	êØ»ÒÎ>9?ÈÃ6¶…-Lì „hÏôì¶2Ó½ééÙÍZH{áÀ		õ“oHÄ!âÆ…?Àñ8s¢ªç±c'Áâ€ö¸ººê«¯¾ªþå«¹OŽç¾îÏÁHh#ÒØKØˆ{IÌ´ñŒòFf$øØ‹TÿÛñÜxõL/û÷›ÛÓ³œÀ«× à®…
„Ï¢häÎ˜1Z¦†' ¤QÀ€î„"âÐð“„JÇÌ4ÛõÚrg¸J¿1ªüµ_Þøb/Ç OÂ°Üáñ*ÌGf)à#áóù¾Y‚<O§Ò3"æ+t´{°ãìƒ§íý[/¡C¨ùýÓ‡!Ú¥ÛÏ_FîpcëíõâTAa±Ý[¯.`,Íx’Ynî”¾
‹n7Ýˆ|ÇLÀR£°p¤Å8µòy’€
Ñ!Š¸o„ìÃ›ïîCÀƒa•^¼_¯!äC·‡È­æ,˜7L²hrÄszÛ°Îüé ¸4zˆ‚ˆÄca@%†ÅCŠKafmiÃAÂ5‚fÒ„àó¨‹yø";¶ïŽŠÉãDÜB|–à?Lã—š>®.Ì†ÇX3)¹˜f¾Áj˜J¶êµ
!î
¦Gü4Bö°¢ ÕLú¼éñÜ¡Y.ãU,´^CÇÜ$©Ê¥·¿­ý5-ºÓç’öR¯-„?À$Ò0!ñHæ„R"ÀoN S`½ÖðS­Ñ!w¥%0Ü,AÂLšŽî¢¯.’8Ÿ17Ãn_kN+ªAA'gH<5’!÷E(x ‡gUCâÍ)¯?é±åÒå%•õ3î"ÍBÊ¥?9sz2(¹QÀ6l…YÂÔS“4éK*3‹‚=4UéE•#Á³›f€X„ô£4à« Å–˜+®Utµ(°]2¹&¢œüßHÔÂ4Td›_‚a2‡ÇÅW:àNõt³\M”ÏQÂ8©	qã nÂ“N”¢M[+ßUöúÆçç4ØŸ¶.Ú?7/>›ÓoØj.52(,jÂn	 R.Ô3…tRm<did`»ÙyÓ~³9.,Ã>M°?n5¦•˜›jŒ—0Q)ŒÊ.[m4ä?n{ñ¦è][€tÛôýZ—¾{duy[°H 2-àÆo7Û°VÂëuŸÉÎìÏ{µÊVücóê‹™$¼°º@-Û|¥
y×5è¥¾À—;Ä*‚à,ÉfŒjÃ²49Q8+h<È5L­Çv#Ò÷Ñ—ÖVÄYñ0brzï«V&÷Ru…
I³ÀØ{Â_H‘”HÚ÷ÈxB¥Õ! °nFÌS}Ùì¯{/×*¯ruáÑçƒ˜úè	L¹ðÄíÔ@!ž6¼ç„
nÆ2Œ…f‹[òQ®íÑãKûÿ²y¯Ûv¦g½¼ÐÁùë  ½ææ*n¯Û¥ÝŒyåvYqâ«>›‡©–ž3^Ã{½Û\îøÈ7NÕPÛç®\X/v¼«Ëûß õNà*óf¶íõµõ·¼ÅÞÞXé{ÑSŠöá~gk;Å–`¾>!+'$7ÐîÁ¬N¾ÅD»íB ùˆãëÑËÍmªªû_«BWíÃƒO_p}ÅÜC-hHRa¸íl\²Ç7ÎÛïï~ö“)„øâ)„Í(xœ}‘¿JAÆ	AÄÃXE#V£ùc´IHb1…†ô›½¹ÜêÝÞ±»‰}ÙÊÒÂÚ@^@|k«<‰¸¹ñO°ºcf¾ß÷íÌc?ö~´bÉŠµýŒtƒ«³‘+æob×3;z¡pâÌjt!“° àÜÔ€ üÐC…`£"ÌƒÀ¯A;Œ"0îÂ'ŠÜüÃ…4ßI%›°ös¡þ(®ê×ÂÃ4üÈ—õ[qx[w™»ù„Û
Æ•œe®\ü/@ê.&¬É¼4êµm‰J1Þ’0†Û(©`a”×‘PœÕé¿O‰0À&‘hƒÔ§P¹J	gÆ^Ž)ùì"e£Q](5ÖIšÈLf7bêA¨B‘°ô ”ZIC Ì¢9ñQ†Ä<§éôR?—Rqžß2 M}S¶ŠéˆðkA7nÛ€@b“¦‡ÓCŒÏpw¸§ç*zTZšçÇI­—Œ.}<%•#’Þ­Ö6fÝ«9ã•ã·y^?U_âÎš•uï¨ÿ	ƒkð;çƒýzxœÛb¼Zv‚{rbnJfâFFNgÇ€]OG÷Í®Œ;™aR“yXå¹€tz^~qIfòdV TX®ƒ5fò\6/éÐ¼ÌÂÒTçÄ‚’Ò¢T )põÅ›ÿ°¥0‚tÄƒ™ÜÁQ=Y•/E8¢TarñdAAÕÉB¦Å¾""0»ÒôSRËôóÊrS&J	a5@2“ˆüd‘à_CK7c7Kd%±¨£›¯0y£`)wà4³»qèì#”ÉŸ™W’Z”—˜ŸVŸ“¦YT¸fÉÉw…ðÐ+b4¹MR ÒìŸ¾êƒçTxœ{²…ñÈlÆÙŒìÉ‰º)™‰›+kì`œÉÌþpv‚ƒNÏË/.ÉLžÜïp.•ëX<y—Óc½Ð¼ÌÂÒTçÄ‚’Ò¢T]¸êb^®¢T Tq‰Bb^ŠBqbYj±ÂæcÎ!L@3âAÆNöw»>YØo¶p2D·Â®âÉ…Á¢“ß‡±N–äždˆÐdwÅ,šE'ËÈ‹‡øZº»Y"$5(]A?%µL?¯,7Õ@A7_¡èìÉa7Âi0Ü…q¢7Ù!È‡?3¯$µ(/1'>­<>'U¯`°?½Uxõ„Xmæg ÄÀ³ë€‘pxœ›"õ’o‚wrbAbRfNfIfêFCFNgÇ G'OÏÍ^Œ;™Í¤‹bt\2‹r+Â]œ
rJÓ3ó’óssóR”NvdUE6yr5«RNfq‰B~L}±HSqiAA~Q‰BqIbIéä;¬Ñ“qÏBÑZÀc‰ÂßÇ NCèãVŠñxœ•”ÏkAÇÉAÐJE[AÑ¢cjkªMâ­¿¨njª´¶¡+ztÝ}ÉìÎ,3o["xêM‘¹z¯‚ Þ¼ˆwÿ½xíÝ³Î4Ùvëû~|Þw¾ûf¾¾+üx[øÀg¢¤‡‰„²BÕÇ…ç‹ù°Yj:¹()BêLÅ¡·C²y	¡‡[Ç2_ÍÏÄúuó¬~ß<®÷–ÞLäxó3-’ÉçØb>L¶qNïÝúv9èLPÙ´~éLéŠSÒÔù^\~ƒŸŽNñx@P¾d12ÁÉlY¿rÎë_wŠ·Y€t¡X­T&ŠÃC-éE°P|"d R?n<;±™NÐ?»úôýcc‰”À‘ø"Š…bYAú÷êìHGø‘ð—{k=Éoç Ñ]^ÛHO‚T‚¢",bÔöÑ"b$£€·-£äHf¤xá ±â§MÑjõŽÐ»Üä÷ÿ”KAF¦Ð¥R †V­JâXHì:i¹—*d$¼›€`šTMààÓ’¯¯…F#G)Â0^ó¸×†Èú×mXíAp3‹P%¥UÖ¦h-°ÒaêÐV½9Cx¤ÂboöÅºÒãÆg»5ŽH8šµ0à«ãYŠ¨m†>5'dÜŒÉ¸Ñ€@ë¸¡Yð•q¢À<0èØ3ÞƒÚÏ)­€·µóO7è‘ŠAÜ¨ýŸùýÜ¨àFžz!¥nÒ±ÍíþÞƒsé=èÞKÕ­2­£:\ÓÓ·OjâœÒNêOëÊõƒ—†BîµQ¤%ä~¦ƒÓîÆƒOèçÝÂ–CNéƒ]xœ»³ˆñh7ã†lFîäÄ‚Ä¤ÌœÌ’ÌÔÍuŒ5vÈ“yü-‘øÅ
º¼\


.™Å9‰•
á.Î
9¥é™y
Éù¹¹‰y)
Èºç8ìF1-ËñrNfq‰B~L}±HSqiAA~Q‰BqIbIiñäBgõÉ“Ê'7ùEÑïŸ„âÜ+þŒ  ýLÿ°$xœuQKkÂ@¾Ï¯èAmMµ×ÒDSjôAéa»u!Ù;›Xÿ}7‰J;·e¿ù^£«œ‚]*)
ñ£2åqÿn ÿ@4Y„ø}iœ).2±Ç÷Ù‹¬Ü(Òä¹Ð)v‘ Ég´Œ“yÒÐ5”_Y¦oèÕÜè¹Ï6zøR¥$=!À,L¦¯óx5_F§ýšžE·%ŒÞ„-7ª"=Ä´uÆ˜)vhÖG_Œµ9.‹ÂX‡ì„+ù`åYNŠ…°"'Gc½$œ±ûVEný§¬ÿz}ú½Ç‘Œê ã'[j/ %1£rhÉ•V3Ž‡HÖzÇÒ¤„Æû¶;ÅäñáÇd¿„r®Ír“ï¬õõ!t«7ÝN¸Â‹…v,žãÁÇ:\9¶©ªfo.^²ÏÉ¥rÞåmÑµ1ä‚¸)xœ›/ü—‚œ`rNjb‘nbqqjQ‰nJinÁFm~FNgWÇ ]ÇàÍÎŒ;™­1)Äè*8ƒ‹J2R 2
`Ì4…‚¢ÔâÔ¼Í5½Éþ¬*ò`ý1PbÀ&Ä¤)Ø¤¤–e&§ÚM>Ìje 1©<%Y¡,5/%¿H¡4/³°4U¬Å†äüÜÜÄ¼É=lFl¥Å%
I©“O±Æ… uCdRÊ3sròòAr
©©É¥%©)
ùy
û@6%ÍÊÏ‹ÑH.,Q(.-(ÈžYt/—^°‡‚’@ˆ§¿_°—^q—_~^êäRŽXe"|<YˆSS‹w'{q2r Ïõ€ýåŽŠ@xœ;+=[`‚krNjbÑFeFNgWÇ ]·ðÍ>Œ;™!D8btœAœÉþlbB©
™Å%ùE•
%‰I9©1jz“óXU ª''òŠO^ÍÊ3ù«™mqj^J±BIFªByJ²B—_¤Pš—YXšª V­V®˜\’Y–X‚049?771/erÛuÑ`%ÿ€O¿`%.½â.¿ü¼ÔÉý<±¬pçð£9g²¯&Ü-Œ\ Ê]KÐêŠýxœ;¼„ñc/ã†lFÖäœÔÄ¢ÉD672VÛ!¸“…üà<Q]^.g¿xò|/QÑT…ŒÌâ’ü¢J…’Ä¤œT=^.ý‚ÉE&¯ä˜üÊa&’Q3E&¿r<gWœš—R¬P’‘ªPž’¬Päå)”æe–¦*€U+¤•+$&—d–%–¤òrÁ,HÎÏÍMÌK™Üç¬9ÙÀù×ä:—ìÉ
Î|,~ùy©“]¬&oõ`C8Íi“C‚>™¼7àP“ìä	þ<“7N ficï[Ž]xœ•SOkA'H<,ÍE‚"¾‘"&ñPHÑmD4¥¦ekñà–u“}›lfÖÙI@DöàPØ»WÏÒ«_Á/â§ðÍl’nÒMj/Ë2ïÍïß{óçÎÏÛß7o¡”B6$ú‰à W,d(mß¬T»ŽsàœíW~_û°¢Ü8¨$Ã	Â»—/ À	 ûpëùÇF8¢ê'ˆÄäP€ Od¼º•“¸S·@ã†Ø9tÞ»·A€ºa×î¿é<"ÌïI^Y„»öÞ«ý®)
0ÿÙßê“t*Vâz}¹.éuKsåT$
†ÈQú
 â@p%EQãL1s®å=hÂ[º±Tò†EêØ"ˆX1b‰¡€ÜïGºS¦‚è2…Væ«s œÅ×ïURŠ„Æ!/:±šÎl[G1tºII„+Â2ºùÔ
²´ÓãDóB{*G•.$5SWhÞ™7¯Êp~C`è#,vkqä¨k5­ù¨Évª}‹±ŠÇja!¦öLtáé;Ñ¶êÓMƒ%ó#àãQeÇ3IxyÞyž–âÙéèx¶b#ìâ>ãi½Æ…,¨rU¢ŠdQ½<Ç‹Ë¨3Ê¾mœ¤³÷š”I[ûHÁç$>-"£1p“ð`Yv®Í'±Õd!pp?»V¶W»;\ùÒ¡E™´ød„Í£n›×»žÃj†¬@`vÁýbüþØè-ù-]µ«»6³Ð —ÚÎžÕî÷þÛïŽñ{	zöµöú-mDîOƒMxœµSÍKAG$D&ZzK/ÏŠ…ì&‡‚EÄ‹+$’`Ò·éÂf&ìŒñà¿P˜£o=ÁSÿ${ì½³;“¥˜&½,ûfÞïë½ýQz(}ßx«0ÆªäÊW‰ˆcL<1T‘à??¾YÉujõZã¾¹òkÕ{á*PŽ"Ùûc¥ÆÓ—.‘Ò–;!¨o“~ˆE†½>Òw¾Žs;Áä„NAS‡MÃì3EÀêQY¦²ae][B>®`—€y²ªT=u!ÓªÔr»]‰œÉLËç£C87_"öƒ(Œ¨ DÓ‘ b0èqJÀ„Ír€ié››ÁE’ W`9ŒÇÔ1Ìr¬_çËº‘¿­¶?ÁæY³srvÚÞ$~³IŒ—TèÄñ[mø@\ª2E?ù<M[Íá¡Å³²œN†v3š´hÖ®Ck¡	‹ÛDŸå±ciY—sÄÞ¹²!ëmòjv^»„­Mg°1«cO
å›7
*f*|4Àê“Ä· ­Á%`$©7#~?
Áü
×”èÇâº¾+ÔóSy/C¹›íâÂñ™p_ÿ.SåÕcTsvYÝÂ-nQþÃâÞ_„»¸—ì‚IxœÛ&u‹‚œhrN~iŠnp°‹nANizfžnYjQñFK!FNgÿP— ÔæÆÌîXfæç)Äè*¸dä$V*„»8+@dœAÊ€Ê aå“«XUÔÁfŒšQ3.&-HÁ&%µ,39Õn2›YxIFf±Br~nnb^ŠB
Ä¢b…’ŒT…äÒ¢¢Ô¼œV)hd¦)—ä•¤¦($U‚uAÌÖœ|™-ÊÀ?(ŸœœZ\¬Y¢P”ZRZ”W¬` £ZT”_´5%U!¨©¨<³85FMoò_Ž$€-..Ny$i@Íp»&?äÒRÃãc} 2ý¼²ÜTƒÉuÜ2“9xõ K/’ èO„ë
xœ­“=KA†¹*<°‰ˆZL!7±D%F’ Aü@	o'ñà²n×ˆ Š…¿`«4"ØXŠ©m,müþÑÛÜ™øIŒVÇÎÎ¼ïÌ3{¯uã¾nÜ1cL¢ƒ”î	±8“.wt	¯J›³Æ¥q–ê” FÓ3î˜a ÈÚ¢xà`2Çôä!‚Šf"Ñ ‰—š¡–8¼Õbê)ýÐÑÿji$A}õ) ´ {„ ŽXhºë˜Ey$¼˜PoKÏ–@FEÓt7›ïÄ]Øª¢e—lJ(¡Wà"X¼R)2
’CËÇ7 ¯¤ìeZG®‹L‚oa†ƒiô€Ðm@5Ÿ«—LLE²j}mHÍçÎCÔ/$©T×¹Ñ˜ªýåq3À(Zú¤+@-UM5©a[<ÒÚƒþjþ$->Kû4´ôì&z$™/ýÄü¨fLJãð+‚õ•›Ÿ`º¾¬9u»ºmwz¹IŠµ$«UpÈÇÌðèSj‚ôZOÕE~rØ±5-ì;ìÞÚ=ì¹]Ÿj¿Ý¢îv±Ýí2Êþ–÷ßc}üaý%ùSãTóÁÎê‚6xœu»JA†Ù6ÒÚbÉº±²H‘]“BeÁ-„8s’îÎ,sYMci•nª¼…˜NðìmÄ³Ä$íù/ßáš{/3ïñÆÛ"™0ÔãÈ/23fÜ/QªÅƒwß]/ÙíÞE­Â¿^€ˆ©"N!‰B¨~'À%à¼:\V	ûÞ{nnªë˜w¡‘é6Å’lŒuÛ~¿&zÂ‘çCNV4z‚@Œ”Èõ/¯^û„=6eŠBH®§ËXÕoßÂ};ÍáwBP)`$j#¹‚VPJ!™"—“·LáA'(ìÕàÈ¦'iëÏ'Ë”¢«	V\ÃÓÞõãsÎð2Ç–ý8Ý]¤ƒÄûñë¡‚¸+xœRKO1¾Ï¯˜Ä TðjÔ„°kB"ËÆ%¨1Öv€&l»i»‹ü{»Èr0ØÛt¾~™ª2#¶œñ.K’€å»b#+ÉX©Uÿn ÿ8 ÑdóÔ%RdH›ïÒ¾Slš8­ÐèÑ7«|D‹8™%5}-ñY1Ñô*-ôZø—V•’Óa2}ÅËÙ":qUtð¬º-a´š6xÜÈ’ÔÐ_K‹\gYªŠÆ¶­Á¼0†”ë‡sçØ—k´EžkãHà÷¡~ÖÐn–¾:¹ËS“fäÈ ×«ÄR§Í¡qÄ·¾É«^ë­O?÷8òÅ¨À¸"[(/Å9Y‹Ò¡!Weq<D2Æ§ãZj¯oöÒ’Ç‡ï“yüv†z}ÜJ¯Že­8.è¸½u;¬ÆË=ÜtgÉà
/.¥cýü-ø¸í/ŠSãP¯k¥úGÖç·…tÞý/p"Ü¨ä€³>xœ›"u™‚œXrN~iŠnR~~‰np°‹nYjQqf~ÞF#~FNgÿP—]'ÿÍ^Œ;™±«TˆÑUpÉ,.ÈI¬TwqV(È)MÏÌSp)Vp*V *Vƒ(žìÄª"	6'lPÈ¤˜Q“kXbJ22‹’óssóRR +”d¤*$—¥æ•@ö¨, êJNÌI…ØµAA#3M¡¸´  ¿¨$5E!©¬5%µ,39Usò]Ö¨ÉÇ¸gA<­ rBqqŠÌþB<®ÛÏ
 dnhç¡xœ»³ˆqKã†lF±äœüÒÝ¤üüÝà`Ý²Ô¢âÌü¼ÍõŒÕv8ä&ó9ø¹a—RÐååRPPpÉ,.ÈI¬TwqV(È)MÏÌSp©WpªW ªWƒ5×a.[²Å–dd+$ççæ&æ¥(¤@L-V(ÉHUH.-*JÍ+šëQY Ô•œ˜“ÊË¶j¾‚FfšBqiAA~QIjŠBR%XoJjYfrªæäBgõÉ“Ê'7ù…8Bä…ââ˜#üq…ÐUÿvF %¤x¨å…xœÛÁºžU<¯,7U·<%Y79'¿4E7)?¿D78Øe¢¤ÞDOi87O…Ã	ÈV ±ç˜ Äo
xT¤''æ¤*pÔLc<V P\œ2Y‡É®zr>“' R£(3æB‹•kxœ­SMkÔ@&‘BÑŠÞ^AÛŠf“µÂV·]º$YY”ÝínhË¸y7Í“I?pñ/Þ½
Bñæ­€…“´MmvÅ‹—yç™÷yÞç™9ü¨üx¯|ÞS.:Œ¦¨bcÀ)ñâƒ·Ê«ÆLU\Úê8å"¨‹ ÐGÎ(¦»¦¦t„+1ä`øüŒ0¦Æ@b"wy8ay½²¸°¡EâÝöeñiû¼øµõÁ.nhè7`Ùãõ#še—×á©ª:”©ñq3Û2Û}Ë°»ý'ÙîmP8S?›ß§#ñ„I)ü9–•Îšã| AY°-Ÿ,aB=y%,o;=/œÐÀ•Ì'ü>€ÙoïXCk0X»Ý|4fÒÈ2ÚNâgŠóRkWºšÒ˜†AQ3	ÇbaS?_T${Å}™ç Xq+GAÑÔõ–¹n4‡UýîúðŽ^­éKµêÚP¿W­­Uˆ}cUèÆŠR®q(Þ˜ûÊ¾]µn\™o´Ø± ÖMx”pñ½¨Ë«0&‰Çã,æQÂ˜´&!ÛË,)`â\ë¡øÒ}<}€|nò&NŽ³Ð?åùŸè4	™À	aA”Y´úw‡®•,šqè¦°{ýÙwñµ§O=Úw7’Ÿÿ9„t-ŽpDÇychÜ´l–[ÿŠût–|ˆë3ïX“J´ õQÏžKÞøà[ïµò‰áfä„¬xœÛbüRl‚kJQfYêFMaFN— Ï0×]ÿÍ®Œ;™!“9Y•X@¬ÉÖ¬¶P¡VóÉsØ$ËS’ÊRóRò‹Jó2KSÀò
9“±…Š&æ¥(ä&V*$¥*¤f–d¤) ‰É~ìêb:
@‰
y‰¹©Å‰É©
I9ùÉÙ“cÙÅ™ò'—°¿›Ÿ“Ÿ®¤P\š––Y1Yž/âŒ‡üj“„L9áJ&ûŠ@ÀßS,âk```héfìf‰M± °0S¾Âä‚¥0=“‰Ñ7y• úä6I-F. ukÆî„•Wxœ{²…ñÞÆÙŒ¬)E™e©›Ëëí ÌIAÆäXEkrŸÃE¨P–£Ûä]N7ôËS’ÊRóRò‹Jó2KSÀò
9ùé¼\E©@â…Ä¼…âÄ²Ôb…ÉÇœSe@ÜÜÄJ…¤T…ÔÌ’ŒÔ" ¡àæ›ÊË5ÙÀEÑ@Gh\¢B^bnjqAbrªBRN~r¶BJjY&£‘ZaÅË¥äéç•å¦änp9ÅÈ	¶8hñd7‰ÉÂ~³!n›ü>Œu²l ÷äè C$e¶áPßL÷wGW,:Y.@^48Ä×ÀÀÀÐÒÍØÍ›Æùâ“Â,Ð5Ô¸6Ðq2oäìÉ\d'ï‹ä˜làÇ2ùRä$ kŽà‚Ý
xœ›/|Np‚OJQfYªnQjqfUêFm~FN— Ï0×Ý ×ÍÎŒ;™Uåbt‚SóRüÂ|SÂ]œ‚Àâ“µXU™cÔô&û³ª5Ä@uÄ¤)Ø¤¤–e&§Ú)DÇèÆè‚DmmŠ«ìj€Æ+ ™“²Ú(+$*„ÍÎ/RÍË,,E6_!9?771or[¦˜ŽPE¢B^bnjqAbrªBRN~röä»lâLy†“¿°õ3LžÆ®ç6ÙNGÅN.½ `®ŒT…¼Ôr°Ù™y
îNš
%ù
P_– ¥Á¾ ŠMÎã¨cƒúò7‡ƒŠïô^ÓÏ+ËM5È3DØdh09„Ó ±uâ‹ 7xœ;¼„qæÆÙŒ<)E™e©ºE©Å™U©›«íPD&9ø©#(èòr)((§æ¥(ø…ù¦*„»8+AÔ.qPeÓãå²Ñ/˜<1PdòÚ@ŽÉ¯fÚ#k·ÑOÍµSPË)±NI-ËLNUK/±VˆÖÕÉÙ‚„‹«ÀB5
ºÅ
þä§Ž—5Šö+$*„éü"…Ð¼ÌÂRd»’óssóR&÷9kN6pÖMO¬THJUHÍ,ÉH-R Ç&g$%&—¤ñrAìWÐH­°RÐrôóÊrS4u€Æ'*ä%æ¦$$åä'g+`Wg¸¹×¹‘îTIWUn$¯LsUÐZž—Z® v¦Ffž‚»“¦BI¾4<An‡Pl2››÷ä­þElÐ µÈTF	|d« ¡fh°ùX@-# kÚ¡(á<…?xœ’ßjAÆ	!´ÁöJk9ÿÔÒM"zÑb-Š&°­4/\l'»³ÝÙ™éÌlª äÆ{…})^yãø$¾„g&1JZ¬w3gÎù}ß9sN¯|¿úyùòµ¡J	ãaRäê´¹P	žwö£ðU÷Iïk·ò­:“Q.Ô–ýbML>ø¶vç1æEãÄÈgFél&tÈbºo¢0
eaUI)ãôÑf·÷²³µ.ÔÖG†ŠÄ€Í(¼~ö†x“
ÁŽ
³ª )†"0dHÇ…šš‚[°œNt»	=q¡5X®8ÍñD,“ârÌ@L”-4M€¥À¬‹(dbcí
0EScÜÛ	ãÜK{eoŠ	¯‹O6¢”–J3b)–¥){ç;Òº‚&3§'óÜµ€°u4Ã)ÑG†hŽøœj™eüLAN ³¬Î­”ks_F“aúÁž;ñzs¯ê»þÅ[}ˆÄ”àÌŒÚ„n(ºæ Š|@5¤’sy‚#¼‡†ÚóÔ˜4…ÌN½Ùrgþðìz\«/ò·JùsþÖõþþv»Ý¾·Ñ½ßÝ8øÄNL”½`uqvÊÁ‡™ ‰#ß°¸ÒoÎÒ¡…}·Ä0§m¿‘ŽR~
ŽÏUÜž*þõÕŠØLœÂŠÛ¹#÷Ï-›«Öù¹{‘Ÿ)
M-•ÕK«•ú/>µHâ=ƒxœRájA¦h‰9)"UÐ2¿4‘»ärµ’ôOr–¢MKb+¤WÊåvÒ¬ÜíÅÝ»4ú§>‚°à3ˆ¿üãø¾ƒ¯àî¦…Ä€‚?2Ù›ùfæûfæûŸëŸ6®#‹œSÌœ8=ýbß\)úVàlû¯ƒ¯í•oWöæÂ8ÐCF s¸‹ð¦Ýt40áCK90ú.Gh¥I2bÇ,çLý‰<ÎäæêÃçiÁ°‚áÎÌéPÒltv·lÕ5ó<†#ù«°îiW
;¯|íÓ)™"A?`³ÑÛéû&U€~ËÏ«Ímÿ`¸¬ šqýKólœg|Å©È9‚I«àÜÖ€$|¤
Â5N>)Ôî#üE‚Ü(Ü}ºœëNIÍÖÖ3ö±±umÑ3\Ô£.¹/ÆÖ‘G
4»®04qž&0m@Î•à(%©îuFÊ…—ç0³´*]ßªìï[—Ãšny¦ZŠ÷ nµUmÝšSœ„1\"Am%nJ“<Ytƒ¥yL´jwê¹k®%‚MTþ³Ú¦W–ýko»‹†<MŒ²ÙyÀ ¨ÃŒO()éÙ•áLr±_IwqÝ²\³ª2±ÊÅMWUÉ*›$èšåè*æªHíDïîAe@™9SFžyÿ¿¸yÜCuþKkó½qô–8ÊÅ{òÖGWÕ§õË#?ÿé	‡6xœÛ'1]b‚krQbqÆFuIFç ÇàÍ.Œ{™!b“ÙX•'ë³šAyY¬]“±únöeûÍòå(ŸlÈ­=ù+‡)T$‘Ë
ÊÊçlÊ™NÖáÒÇ[ÀÕ”KÂ".6ùw  7¬3í<•;xœ’AkAÇÉEp!"è¡H¯…$Ì&ÒS‰JCš­Ð<–Éæm2¸;3ÎÌn”"ý G<é'Aé±={PðàÁàð83ic¥zÛ}óæ÷ÿÏÿ½o/Jï_–Þ=(]¡®‹„Ð´>Ì3q°WÚ»5W3çÖ7Û– ^ `µ¤X ÜßèÀcMoƒX5×–ƒñ<Z0_Ö_Ï³Ÿ´*<×"×õ„¦x³šêVÔ¿Ó­ŽtëÔ9ÌÇö×}…l¨@§Š…ýãrFæø—l9hëJaCP¤ÀéM‰*O5hN0„>ƒ8—™š‰3ûE4åì$±8ä>P1:—8š Õ®",Ò^
á•Ç1*åN&4M½®—õ±QæEËÁ„ê1!$’ö^’ÐG!lríú‰58vb<Ëœ}ÏŠWS$ÒÓHa­‘Cyp"y6•ñS >sb®l\5Ÿ:µƒŸ­Rp"ÏnåòiÉ›gÝZä*-KˆÍJ¹°ŽÀ
­ßXžPBÂÓ”OlƒÇ°ìãÚuv–žc~tß\œŸ‹y-žçÇló9Z\ZÁpÂöÎÝf³y}-ZÖvÃÂef¥·=¿9O{3Ø”áÐ±+S¶¶{ðþÒÜŠ7ì‹¬È°éÖÐÌ÷ÛsØ»tªlo&ëG~Â‚è1#ÂÔECg¢ñVªgZ™Q¬ŸæUÿð„EZáƒ"xœÛ8±cã†|FÖä¢ÄâŒÍ%Œ-væä¿öáPV¤ƒÒäF‡“P%þŽ†Œ“Ûœ|øÁ\…”ÒÜ…Ìb^®ÉÏœÙÊ3K2x¹6:/a‚ê¾åºcòíÉ‡Ýä$4RõÒõ‚C|-ÝŒÝ,!Š~»%@•'¸{ •›N~ì."U^’Z\‚OK•G PK+šøæ™ž3 ¹R[ä‚ÃNxœû&Ü'2AI %µL79± 1)3'³$3µx£#‹‹kXÌfÆ½Ì6èÒº9ùé
1º
Á©y)
~a¾©
á.Î
é©%1º@¥1(j';²†bŠ.gŒEÔ“MV(š™œª€,¾¹„-€«Ä%öLF,æ8²ŠLŽãÔÇ"3‡3
 UªWcà'‹²rxœR=KÃ@&.J ‹ˆƒ‹¯£ÐÓâ&ˆ´¤kk‹¢8^“·ihš‹o.–âPœÜ9º»
Bqsó'ø\ô/x¹Fph¼áàîyxŸ»×ë^YOk=@ÉH#ôÄ%Ò˜E"˜][W‡%˜Z­µ&‹!`Ž ÇûÐ:m"œ5\(¡&Q„1üoíý>xb8ä±_B™Q	§}ÈED&“L:öÁn¢î:kê±³¢>jÓ²dÓúþ’c«·úû$Í3p pZ’£Pwl½z û†
?TãÆç’ïÀ‰›3YOÐK‰E£0ŠÀ\mhÓù”b O!MÐ{!úêÖÝVU—mñ1tµN¨yd$Må^Ÿ÷$’2r/–M×<PŸî š“ŠvØÓ,4+sÔ±gÝÆ—¥žhóïGôT³}^ö•^Ú7Ö7ÍòÔíîKxœ›:™qÿdÆùŒ¥yÅ¥ùE%©)ºE©…Å›k›í0D'ó9„9¢êæä§+èòr)((§æ¥(ø…ù¦*„»8+¤§–èbS<y£ƒÕäül9¥é™y“_9<À´ÿ†£¦«&+8ËJ 	* K3‹RsSóJŠ'{;«òñr•gæä(¤åå&–(l®s®aÄ©a3‡k¦“Ü³0ÃåÑÍ £ rÔå€.xœÛ?™qëdÆùŒü)©eºÉ‰‰I™9™%™©›ë[ìÐ':„cˆ•;È‰ ‰ëæä§OÞèà8ù€ÇäOÏ0LîhaådCg9! Xfrª²pš³»ByfN/×æÉÎÍŒXÔlÖu­eÂ0o§{6†ÅÆ=Œ …m\ç6ŽÆaxœ’ßJAÆQ4D”"½)È¹

IjÿPh(k¢b"q£öf’973Û™Ù´"^õª°áµôªáø‚¯Ð3IÖÚ®^ìÅr¾ïûsæ\?ûþôÇÚJm‰k1À’±ÌÆæêõòÌânÍóKÕÖÇÃŸõ™_³•5à—à %{ŒÐ8ÜC8ªn©ü±ÌOuÝäÓÜÛµlÁZðŽã@tñ}r;÷¦cÒ´XŠÏñô<Õï3Rº/Òj 8Ž\Œsa…’,„‘&z!¥ûÌ•’hþEžBytr9“¨™Ü-ä‡û¨»(-ÔE€Ð6ÈýB™šÌyçï,W6QÎ#L4V±‚
&¤ –]—ñØE–ÜÄâjÍ:¬×¨[Ò»ì8Hð0{Há¯ RÆˆN8î0P†› ,B‡¦O‹ 4<ÈÌ@·ŒAm¡÷£ÇqD{ùmø·¯Ñ¸M£¡lú›aP†k¼c­¬…ìMEM¬EÈ3„¶d&BFªkgô†°­´Ž#ëa”üŽcâE^¼átfVÁÎl™‚[Øh¯i•î†z:‘ê‹L…rr‘ÿ¶úè™?_Ú|’-$_—Ú¿„d+òí2‹»Axœ}“½NA…µ­%K‘¤¤»D
’((Ž,Ð‚
Ø+~•
;wí³3›ù1 ªTéÒlG‰x€HN*èèÉ3Ðæ)2³ÆÄÂqŠ-æÎ9ß½gföö*¸¼¾Ï:hjT±Ö´!Æêþ—à¼1VÍ+Ë­úÓ"ÔÊ% ØAAÁtZû[«!Œ	ãüÇò¯7OËæ1mÀ7uŠ=ãLÇÔóß+wD‰V°ÏvS¦)q:÷•K™’=F±0J™aR…L$R¥ÄoåßÂÙ|!¬M“38B@æ|êo†¸K‰ªr©¾ž[“Ysˆ§'¢ ¼nô6¯ƒJ„*Fa`“%{é\×§³A™tdò0EbEì­`,¿ßˆ^®µ7áíš‹à40;ƒÃvˆ¥EÈ¤ÖìˆæGD!,´|^…m$Ú‚ŸUA*ÁxveEkTVmšPçßM¢F
µâP-i†KzµëÎÆu„Ý®’Æp&:#Ä…‰s¶“¤êæ+¦Û¤G'Nå‘SÍâ" ”JÙÌø(Ú]ŠÃþ'ö£iõÑJÝó0š0H\´n&Eëc!OÄ°ÇýÆ‹œ·¯+ÿx¢[Ñ§ñ¿á&úüwV%/å‚Ï*xœ; 4Wh‚{yJ²nzjÉdFV‘†\Œ|á.Î1ºî®!1º>Ž!®›=·2#©)ã²€ìÝÉÕ¬æ²yùE¹‰95YÅùyv
1ºù
6H"“²6NŽ`S›¼Mžhîæ³l¬LH\ãÈ õé+|å
‚Îxœ›;‘ñ÷ÆéŒìå)Éºé©%›³»í`œÉ?ìãà‘üŒ@Ž£;9ÇÑV)/¿(71§&«8?O-½ÄZA7_A-§ÄIxó^GGFU¿0ßT…äŒÄ¢Ää’Ô"…”Ô²ÌäTÔ
+} G?¯,7Õ`r¬³=s¸‹óæ•ÎaÌp{63»Ïb Yß:!î‚Óxœû&<Cd‚’@i^qiAA~QIjŠnQjañF	F–P¿àÐÍ>Œ{™mÐ¥usòÓbt‚SóRüÂ|SÂ]œÒSKbt‘”Æ€ÕNvdÄ]Î:‹¨'›¬’¨P°4³(575¯¤xs	[ #nÙKì™ŒXLtd™Ç©Efg Íð_*è…›&xœÛ$yYr‚syJòF!FÞpç]O—]ç ŸÍŒ[™AR“³¤étÖ4q……ÝÝŒÒÜÄ¼Ý¢ÔÄ”Ä¤œÔÍX™ú7›±§B96@´‡óD Õ1!rï…˜2xœ[?‹ñô,ÆéŒÌå)É›sëí@ŒÉŸìƒÀ´—Ã0íï˜*â¡P£ «›Qš›˜§[”š˜’˜”“ºyºc:s¸‹óf—¥Œ`Æz×7¬`Ãz÷1 œ´"«èŽÒlxœuÁJÃ@†)«bEèIDª‚ÑzD±R*¥EØË6Ù$+éî²Ù´
ž¼‹ÏàY<ùž|Oún’¢Déqvÿùæ›y_}«?¬/E<°ˆíQIÜçf½2ï\´‘}yÒ>{q*¯3çå„â2dC—(IÉÄ Bp@§CœÁ¥"ôÓ<àI:$šY›Ë‡r*€úÉÚ‡qŸ2,ÓcCæpÄ¸àh|s6ùÐÖá]i ”AàWjR7—3…)+ký¤§»¡­]¸2²B¢D¢íg å6F4Š`ò–õ1À)ˆK}J<-f?Sü(+zKãêýÊò;ÙŠÈïî —Y9Yö«z`e.žÞž[Ó‹½F¯u
—CÉ-ˆˆ€«÷jÍÿ·Uµëo ô¯ î?Âxœ•“OOÔ@ÆCŒœ<!ïÅd!né.ûG›e7nÛº»áB	)Ûé2I;S:¥AìÝ“É|cbâ×ðê‰oÁMgÚý%*Ú4íoæyžwž~{výôóê2uÌCg€‹æä#þR]š{Ô1ö›=Ëh4¿öç¾?ØÊ3`¡›>qˆO1¸8!l¯Œ3X$£éJ{¼ÔöºPÍø:ÚE»H9qkU©˜
B{¯þRîOáÖ«£Œeá1cÂh­jZ`Zý¶ÙIq7^!Í#Hë½±4ÿ®Þ`AàPW:ub˜K<2ö=uiª‡,Š±'f±ÄùŸ£œ¥(-Î²ÝLp,¤u{ð
u¦û·÷*òæåtcÙ\äŠ&Ò,å²¤R-\…Ï'Ë˜	ŽÂˆ%„Ëï„ÁLÉŠà9ç~Ì•Œ~Ñï¯ŒŸ¸ ïç˜ï"ý¢¤sû…²fFdH¨ãC¿s°ß0¬Ù@…K¸¬àòÎ=éMEoé·èÑŸñ–Âõûì6Œzd¸†ß&geW{ÉÉâ(ÁnVâ[|Z\¿ßLú;;‹’ÓØ®:%öWâ
­îÔ6di6h`=-q)íæ¦¸\<}}W±¬·ÿCÐø‡`¾”eÈþšiyJÒÉs±ðDûš”QÅîD…¯xœ•SÏkA&.”‚ôÐÃCHTtÍ¢‘¦Y6›%B²1-ñ Z6;“8¸ÙÙÎl×ú‹Þ½é€xñÐCï•þ½zôÿg6¿LRB=ÌÀ¼ùæ}ßûÞ›“¯©/ßRgoR7wˆyèzXg˜“÷øüSêCe)*´j«¼=­@'9pˆ^c@8&¾ÃaŠ}˜Ö¶s¡øc¬‹‹êåÄÆz/àídý¨Ü2š»mÃ´ QË¢òÐ¸$þ^è:÷i$/68í½†Ó¿£0¿Œß¯8ÐHæóš	]y¢vCì‘>ñÀ¤Ã¡ yïF0¤HÇEM5CR5Ã!eFi­÷îŸ¢EÕ|&NÌñ¹®‹kVïæ’tÁ­ÌÆÌ€…š÷%àÌ‚RkÊÖ¨•åÚ_PQ™—X[Q;B¢iÁõY½ÜÊÞ
õË’$¦c2.ïI0 'A–e-}÷Ð¸"ÉÕ§ˆÄàù.ç;·}aæú¢cß?îº>A ÷CÌ·ÒZþ¨ :”2J³ÃÈ€®{­nÓ4ÚSß Vp.JpñÉUÑ›ý(?‡>^¯Kxþ*¹á. <ôÉà^Z3|¨t \æ’–cc´ó(ÂéÃâ§½&ÞÖ¿“?0kRA98–«ÚGW‹íNféƒåähå‚xˆóê'ÔXoŠS;óÔ'ª)ª3ËÌEÅ\úâ­•ÄúÜÈÊžÉ±šLVáüÔþ˜ú°réì/ŽÝUxœ’ßJ#1Æ±Ö®uoÔÖs%‚Nÿ¨(”eYÔ"Âúmõf@¦3Gv’˜dj‘â¨äôzñÊ‡ðÂ÷XØWØd¦‚¥[Ø‹!$ç7ß÷åä¼~y˜ºÿšç‘8C'd”(&~­|Û¯lU]ggïùçÐË°Ó€ëÀ!Ò vvŽ77`ß–Öõl~ZŸŒ,Ïðô¸û›{z ßl¿ëß#«i5<82‹­SrýK|†žEÍÇk‘ A#Hå©H;Mv‰Ù;ëÎrÉsÕ6G_aðÎZ‰ ¥/W£„Q¨¸Ž¾ÍÂ§Ã´¾ÁÔÙ5ý';Ö)µK¥\í¦R»N´’T`A„í ‰Ö£v“ëV\ o2Ú/€×#§pç½<€®
aTI;Œ£ð”½–@5í½	´Ì"pv…¦—±ßDS¾ŒˆÀ /ÕÊŸãÿ1"Týˆ[¯FÜcbxU×¤P«ZY(k™)Œ{14˜—ú)³P\´¼ÔQrÏGh4™é¼À<¶+P4›"m…X¢eý–y™4!w™	c“Hˆ+}7~5Ñ7?&zgQ·óõ¿‹Ëä0‹Ò!xœ’?o1ÆuSª«b@‚áå$
H‰r¦„T¥—*h©¢0àœß&Vïl×çKs‚…©0xáô Ullì|ÄÊŽÄö… Žv`²ìçñïýûéØûñÎ{¿ïù2Wcl¤‚3-ÔÉ+ïÅjõÉ\X4+/Ððk °ƒœÂ`wáI/‚aéØúýçxíËÕÊŸ»MLWa%ÑŠSãÊXwÌ·{ŸŸfŽB`×–ü˜³ƒü Ä"M‰srê×¤SFô!ÓDçˆ½òVÆ\˜Í›èz°1“k¤£ƒPÌbÅ¤f‚C»aÞF—Ì÷ûÁåCFõ¤´ÂðZà×öI±Œ„¢¨ÌóþË¥9!Í×þÑ¹p†æç£öù2Up2Â&M¬ºùÀ©­SjOð?ê­Sêzžõ¶Sþ­n(eÑž7„DEÊ
fyâ*dÐyê Å!Úžq‚V>È™Bº ßqàþÿ€×–—KÇ¨õÛ°¨-ô¢I¶¯˜úú’¨;&ŒÙa¨r"å‚Ä¢ˆ‚òkóñÃœµ¡i/M>M1¼YwHÜö<“ÄF‰ˆ÷ál7o¼Žžy6àòò@ØŒ]º6Ùë˜ÛÊ¯®cwÈþÙóÃ#ï¡‰[í† xœ›(z]`‚òFmÆÍÎŒû˜Åbt‚SóRüÂ|SÂ]œJ‹ÒS'¿ã›lÏj9¹‘ÕÕ®X!Q!¨&¿H!4/³°IBr~nn"P;å—e¦¤+”d¤*¥—æ”Ä¨émæà¸Ë4Ï•WA?%µL?¯,7Õ Ïp²;— Êx/á#ƒ•xxœu‘¿JAÆ‰’h» ¶c#¢¹AÄÂˆ¨…‘¨)Üfs™»]¼Û=o/%`/
6>ƒØÚø ¾ƒànþSd›Ýùß÷1¯…—Å§e‹uíÛ—ÞÛz!“=j»þ~ù˜-Ž;@lh hÃÉy¡yx ‰"6ëC¤kÙêÂDá>»_)ç‚ØÄ4@R‰ÍÛ•¡x{nµ”€þ'ýÌnïEGT@µ¼+£€Æ
b†p®ýÈÎ¿ê<±.hu®¸`L‡ÔÃô!Çò ¹–/Ëô+·4#6ÒŸÜc¦œ>Ï}÷j5ëOp·Ó|Y¥z6­ÅÚYu®êk±ì·=ž è×ÉJ	Ñ¥ßLJ(_»ÃÜÑ“ñ 6Ü)ã
dÿ½¡›ÔuÑÑ—¸‰´1Ô¹ÍKCFj´]ÆÖÔqGó-¢Ã]îy
ãt+%«”ªù»ÂÿµAèw<.Ò|~krÇù³_÷À»Þë‚xœ›-ºBt‚"krN~iÊFuqFVgÿP—ÍÎŒ{˜UÀ‚º9ùé
1º
Á©y)
~a¾©
á.Î
eÅ1º`éÉj¬AÝ“ëY÷ƒT%*„©ü"…Ð¼ÌÂR41`“óssAJ¸ (¿,3%U¡$#U¡87±¨D?#51§$C¨ps5[³’F“'³p™A-wäŠ 4–E™éƒ!xœ›-ºTt‚"WJjYfrªnybÚFmaFV×0OçÍÎŒ{˜“2
1º
Î‰9É¥9‰%©Å
%©
I…ò¢Ì’T…ÄÜ‚œÌ´ÌäÄ’Ìü<…´Ää’ü"…Ä¼…‚¢Ì¼’b…¤ü’…g°X0.J-.Í))žÀªÁ1)dÏäÖí6ÉX-BÖÛÒÍÕleÌ(&þå´Eá»q… “JXWï…Ö#xœû9…ñ÷ÆyŒ\)©e™É©ºå‰i›Ëëìø“ÿÙ¦"¸
º¼\


Î‰9É¥9‰%©Å
%©
y…ò¢Ì’T…ÄÜ‚œÌ´ÌäÄ’Ìü<…´Ää’ü"…Ä¼…‚¢Ì¼’b…¤ü’…g°X0.J-.Í))ž<Ïa/²CR3m“±Z„¬l)/6['ŸqÖÜìâlÀ*ˆä‚œÒôÌ¼ÉÝqÈ–}òhg öc©ã¥xœe½JA…	²$Vé”Cì„üt‚Úh~\!þ«EšÍÎ]3Yf6´Ice%ì“ˆ•¯â3ˆ¾‚“šâÂå;‡s÷¹ú½ý²»et)n¨ÎE,_•ÒfàêÁyÐ}ë•Þ7þòŠS­=Z¡ÑŠ8GkìÉ	ÖØ§³Ÿï”Ë3aL9•¿:u‡R„ÐŽ&C*œ‚ñ8¶Ldˆ9M™†¢l¦1ÄJ&È&\#’I
F)	ÆÅ=¤°
¡8xè6lrg¹Â»Å€×\Š‚ö†}ÜžÁç*PÛ6’	)ø¤¸-p9KÆ¤
É{HIùQ8%œJ™! õ›4lŸ¡c£#ÂÕ\XaÂS·á{¨uïN.®ûÝZaÛƒ0	aÎ"üûÜ&#Ó\Ê­üÃmý 6ÀŠIî!‹à=xœmQM.AN[¶4aVä±˜ÌØ “¡Û°0þc'mê5•tUµêê,$.€¨+8€d8½…8€S¨î`D,Þâ}ï«ï}ß«—ëþÎzä–M$M±Dy º×ÖUõW¯‡k;s½JŽ MäÔ)ÂæA¡å¹Æ¥_¬¶~ª½÷€¥2²*CµH0¥m,ž¨Eý±üÚŠ¿…NÏ’¥c¾!™rìHŠ”Ì_ø„PE÷CÈéÑ%ó3Lß¸3ºâÖû»Ûqç­B¢¢Dáyú<gLTõs½¦ÁjJ£e*Æe&Fƒ %rÅÄ Q%’#@
fVÓøÇÁÈ üÄ±Ï]åVô­[òrWë-Ø5™ãÌ•AúÞìsª I/1CFÜ$V‚¡4W•ÔØLØ1Êl4º~¡l¶ýaE(¿„¦îxù1a«Ã~J#}æ-â¹Ï¢'ª«‡Ëí=[›Òï^¿‰:09	<eÒþså²ù—r6«dÝâÎ˜õ	…ÉÀ…µ9xœ}S]O1|ß_±R ‰úŠÚJ4	%ùP.…VUÌyX½³¯kûBøõ];IíIQkvfvÆgû–Šµ®ŠÞšMO…±µ;~ÿõ L¯&#(äûæ8X’ÕV„Ó»	áýp€¯•k[eõ)2…ÈV¾|l@ù}:›—ã2Óg‰=±§Ÿp”´P´^3áM½©èÀpTãùr<›þO×Ž^¶h|{Š~ï3Zó;þÇ)Ê:v½Ñ””Ö&gUƒ	Í­Jgg Kìa§XµˆÑxLl*8Þ$Jl£ø@ÕJÀUÂÂÎê1=]â¹ü9O\œdv!Z›¦Ag›®ÿ’_ÙývÈ£]ç8û(Ü‚®IIÒt‹µH*ÊnÐ‰4ïcQœ¢ÐTKZ„fVˆ*áóhÂ®,§HÌ2_9I#¬§„¡‹GO]£lÎâeûB$Þjy’zS„¦®åÌ¬5Úï¤HcÍ®Ýn°oBS'­Éb +§Ürþ—Òîáæ²ŒOÚp½¼Å¯V¬—æ™ ’¶keÝ’Øˆì4¶Ä 7›Ž¸¬TCøÙ¹€wrçòürð‡Ûhfk+§+ÓÀèÛÕd~;:ÜÒwøöõ|Ñ›ŒIÁ»g®8 «³ýüE/®|4ARü-ê-}¸xœ½XmS"GþìþŠ®Ë‡ÓÄUÅÓ UæÄ„*ˆÉåÊ¢ÆÝY˜ºe–ÌÌ‚æ×§»÷…õD­göìLO¿<ýLwƒžO¥¿n}¥4ZÄ~œŒ7ë[ÞÉóçuÏ®Úž§ŸQ>ô¥3JÎ%üqþB9W|o¡‚H™éB	$-tV ¬Kp#–;ž7øÔí]:¶Ã¶>Ï¥±òÖ{OFÂWFßC+³s
Ÿ}?IÝ,u>©;i]t.Û§Ûà'}½%	g„¶‘4¾Uÿ Ì óËXÈ¾Þz€Ê…Â	]'­ó³áœõÛg$¿ø5’±\™Be•w–L¢ÈJwÒê]\ÚC’‘P¼”†ÝÃ5?]³-ZÈÎ#w‰•¸<¿õ¼óöàc¿s=ìôº%^™w‘p	Ý›+™'Æj.õ6X©CË›” |CÙÁL*RtŠ<]bzŒü;•Ö•i²3Ò¦±£”‰"iC\.s0FL%ªeaŠg…KÌCæJ0ÁÍ€ör§6åý1ìâË.e·¶ÅÊðÜBÅ1$:~€Eb¾à·
,Øt6KŒSzŒ t$…KzÒgßpcút¸´E¬Ku(#¥eˆ†z\É4¯dÉñ±·ŠG¸¼ÑãUŽûgÔ	6‡Xä6¬4
ÑÓéôGI'ÂÝ¼œE‹ÒvÔBdäé¨åÔTžîÜ)ý‹"uïy%Ù•U„ÅbË0ßÚzìQí¾^Ã6›&nj*â-ôÅa&½‚Æ­ÙÎJÂç†Îï íŠ‚Ô›üžï ˜þGû˜ “L¡NrUYVïdy6äÃ˜À’3l‚Ô©æŸI'‘D&	ÝÆ~m?šÙÇa?ˆ§ƒî‡ýZALòã;Èa®¼­y˜ùEÙ	¥U’0$Q¶FA’
°NdŽwfÂZV²[^'ˆ™Âù °©„¥V<iqÁ ,¦*&¡![˜^ ‡ž`÷7¶³»"BhY2â?.QÄú¯P!_3)
}1QÁ„2Íxaew3^éiš‡$S¤¾p*ÑÞÆB¹	Ë &Ø—‡*¤{³—Ña`^`V,¿\‰³›¸¬ÌOqq2–h
k‰a+ìöºímø­7n¤½î°ß»¼l÷Ÿc#¬Rqá"­“Ä:oc,5ÆÈn„L;“p¬J+§x}i:ëLŒ‰ tâÀæ~òihIöÊÅm¶ƒy bÍÈð=E¬S£ó{ÀeÚMVþlN_¿µx]—×”mU®êZ7íþ/½AŽvÞìNª«×&™+¼˜ ÂPk0ó¡¼KÇ0•ÖbØYõ¤qÉl{¤½ýçÙÕõe»2Xü¿J—¥nõxÂE,‹?k EÌ
~†	3•xœÅ!VŒ€;Þ¦ÜïÀ`x…U¸~tÑ¸8zÒöjõÃz}ïpT;:8¬íSØ:ö~ª6sßûž›|*óñ‘µC£ùjhØGÜ.ÓXV¨x3÷¹¢Ì„›h¤iî÷®›ÎvÉòŽ—:Öô¼èí¦Z0	ôæþ—RýÅ¾%ïpD8<X‡w47ç“Æ[!QoþOHÔÖD¢Þl|Øÿ8¤3¦œ­OÁØËI G';žä¾ÕÙuúUmØéj÷µâ%g¸ÕØGaªFäà¨Îwu-õ—-ì­oaïeëµÛ½ôµ11‘s˜"å(aLJRæ³2rçk¶ýM«Slì†µZ/ãñl`•¡á{…¸Ø|Ïð*.b«µ¯ÒÃŸ–ùÿ×4æÓ2ÿGÁ·M•ÃYî_àh‹³lxœUMOã0½ûWŒà@a¾ŽhY	µ]Q‰–ŠVË®Ëž6Ö:vd;-•òãwœ¤ÝÛ%§Ä3óæÍËäÅ,3LVR$KŸÌrt<xð‹cvý‹±ñÍhÀº˜ùè+Ÿk¾†vÌ¡æ%Äåƒž±é¯ñýd:œV¨òÓÇgv[ µ€·ZÁW‰K%ð0ÖL{ÃÉlx?ÞâD(öÝ:)ÂøÇ¡Î‡…Z¢é‚¬	ú6Ã³SÆfT¸m’sÇ3è@yÈ¸‘<X·®EJAcM‹¾\Á=œÅÎ+0ª[)­Á½†•u¿éû½¦Èƒ/òÜº Ì‚8Sö+R§ì}¡IÕ9MÃÍ,´íÅ‰va$Î•AI/9ŠÊ…§I©^8•E¯H–'aµ¿>¸<9è‚­Žé)E.Ñ<³2¾êrº‘ÊþßrÆÊ(‹(œC@Ø,·^l«ÈÊ†ZûŒ•Ü™8[o[3Œ&åCêÐ§VKVÆ2°s°´D*
Bå=§ˆ×û×‹MÅ.P¿&74­Ö‘r¥ÍRgCÐ‘có*Yy×$rsŠ²t°}$Ð[ë13ÁY­[˜#nø³¨U“¾ØÅ³Ö’^@çN-ÒgŽ„ñ¸™9ØH˜hëð>ˆ3Çi¤gC»ÌÊC*‹{¹RA¤4”2ÔáØ6Du	+bzÖHBÍc¦2ÿx	[äËõûã§;á}÷ÿØÿ.à4-‚´+÷òõj7˜oRêO–ÝZ#AVâApHŒ‡ó. sdÂJ¬½c¥<F«øy3šÜZÞ{²ñm_Ùækk¬-(FjWìKÛovšvËwëùhóc™Ä7H#Æ.ÕO¦ðdv¾ þ”ýb_YÚäŠë\xœmŽÁJÃ@†©²"ˆ')‚8TÐS£‡zP´ˆ"ØC›’Ø
’Ëf3I“Ý²I*9ú ‚°à;xñäcøúnãAÎmþþ¾ÏÍµÇR
&ÕØ2œ»Þë~ãmqïNñÛµA|Pƒq¡ö ö²‚†)êrØ¬õà'ÄG8ã»úžtô39YßÑ}r Këúi‚ëºpô·˜Ì2jžòÊ#($p1£)¨¹¥ ¨Hd©L8£)„©d·y°ãØŽ	-wxÕs~KWÖ‘~·võ—µ½õyð.lg8´µKšúÔ:ÇR14²»—©Í0ŸR†s"Vš¼(Ò
Â2¯`Î9EeRÙœtb¸ÌJ.à…‘d™LôÃêÍ7÷L}fïŠÓ5xœm½JA…Ù"M$•‚‚/"ÁfU¬„ÄhÝ ãOa5™½ÙŒÎO˜MHžB˜—)DHc›ÊN|}	Ý¦ðÂÀ=sïá|3_oòì½Æ^!•Té™ð†õEk¿O.‡šôs~© m”	—w-„|ùX#5¤ÃÑÞœ~l-Ùjû(êPá¦á€Q¬Ä¦jGc;m„+ðW¶Ö¨¯-ixðý®ÒíûÙ[ë>º]ª„ †%&QÀä€p·K@#¨.p3Jx©ØáŠ>%{ö¥]¶î¬Ôî„Â~6wí<<²ó l·››«ÿ=+ÛÓÂ‚il\ÇRiI&}B1¡©sHÃGÐI“dx}ÔÎ#2ÀžÃq’¦dþ™€”î^¥qoöxýãý‡Ž»–xœ•VßoÛ6~ÿŠ{K‹Ei²½]ÀqÌXâ•Ñnò@Kg™¨Di$•4…ÿøÝ$ÿŠÚnzÉûxw<~÷Iö©ÀèÙ™€Ñ7t%ú7—oÕ°çQj6º›¨ˆe7A1Ú´…ÙÇ;±AkKÊ¢Ð6=‡¡v–^¾ÎƒW*þ{v?§±8ÇOè<>ªÓWNaâ“Ið=<D‘Ú…h™—É—áÀçKý6yhÆêää„Pb’²¶a8°ùR@	È°Ã8\EAgÃè-Ý¬CUÎØU94oUÐÍ:®*vÚSV4ã`ØNÀ‚ëâjèf*E°%írSPMRJ;¸¶äeUº£Úšé$AïÙºê¬Vè+M“R-¼I%¢…fÜÁ|(Î3ìÃÁRÏ–(YcòeðjE¶¡Çpü£R7“xüa:_Lïg[R0/k„OÂ©Ïœã¡ö˜B(Ác NÛ¡\A^f&Ñ9	<.Î•ºß[Æ©>*]]©-•h|3¢ñCzhÅZZ1~VKtý9ì7†8;b»Ú1‹½Í]0	¦´0¥5Wh¯æ)¤¸2tã´p®~Qjóºo7×&lnÐ'ÎTŒT›ß6ó£ñâ
¾ã{$KçðiVÊJ‰_žÁ|ÊåöüT˜¾3Ö£#.ª’[Z§ïš³=ó¦@÷%‡†Æë©‡ƒNuÐàÍ7dG¿¸8S[Y+í=—hóëÕ¥;þãÏï¦;f*]r·¹Z½Ì™&l26“„²Z;bŠÎÔæò'PjÃœnNÜË†‹Ÿl ½@‡6ÁÞ£ž¯¥†ïz'5|×÷rAD˜f­©¥ðûÙ„5T»ó›Ýù…FýÚÃö´ç ÄÑÿ?àV¿8ÔN¿~é¿9P;ŽK?bðRôÖ®rÉ.M§à›ÉhKø3ôO>ðÕ%¥®ÌsjWÚ•c5QX|´®ø}¥°dÕ‘M;´¼MªG€y{'À¢¦7\*‡xmµNÜìIèð@ŽÙÙ‘B³ÏÚ¦+ÄÔu)Ü¶§º–ÞŒ0,töæö:^¼=Ñ¨ô°G¸9\¯¢sÐÅš˜J¾ÂÄR57°®•/¿¦šÃ›^¢ü47>‰-i'ýND¡Œè¥NDöxBC®.Ýàîb(0Ð3Ílé¶åf-IjG½òXÖþø»Q¡cªñ—ƒ2+i*¬ø$
VÖÙšÜOþÝÍo'{?)³ð«.*„¡žöÏhÞfÏ^å†îÑ¯‰§ê_N¿¹xœ•XëoÛ6ÿlþ÷-)f¥ÉEfÈ˜±<ŒÚh7E@K´MD"=’²ëÂüîŽ’,9îºM‘÷â=~wŠY*Ù8ÔéÅ1l„x¼z¸	~„iÈ ‰2HÄÍÔ…4YVÎ®u¦À)_æÁ1ùëñi<MXËú¼VÎ«/âd/ô™ZëT½‡ÏIâƒt!™å6}|>“ïa‰‡¸þ"z½Rñy’ÚÒ„áÀä3&J—5M&ƒL¼þ¦P~3É7ˆëš¦PA£ÛÐ95O‚\¸À_¦qP?µ5,o®ó()ƒÖÆ¡Úá 1 ax€ƒÍšiå´™Ûá þ2í
ê§šH®VdhRHþÃ'Z0mÍã1ÓÕ·’P?ÕT¹.0Jú ¸-‘äõÉÜºT%¥Ñ!‘iª¼§Óyãí’°]¡[é›…O!®Û$~¥Rô<~3Éâº!ñºÔ|x¼¬ÏüÒn’*ûèxÝ0¹mâJC{›æ2(“òB# X'Šœ0h­Y×:[GX’t©Ò—Á«f¿#Ç}âönróa4žŽž›¡*™.|j×V¬4r»Ð©ÌkÀyKÏµÊ`¶åóš%XA…ÊtYÀÜÙ‚)±â×¬œÏ•««6;ƒO:Ï¡ô
|È´!y™šK,e¡ç°µ%dÖœ„¦Ì%P~ž	ñÄ7hª\«âËKÑT1®{¢ˆw@	Š&Ò”hÈ¦,fh¤×÷‚“Æ£ég0]jø'á›r4“=±–y©È=™ë…K¾ü‹rFå'žo‰2ñ£ór¼ý©VgpŽþBá
Ñ»ˆŠß°•‡XA¦Ö˜Â·ÂÉ%º>°1lÌzjˆ}{„½¦íJ8„âîÀ‰¸%6ŽŒæ`¬QM€û˜‹  ¿W1-&ÓÛÑcÇÈC`"U¯€‰Ô=Ô–ÒÞU*Bé¶,ð ´HÎ´HÀØÙ Ò ­î¹BòšcBé§]pãLü$>»ááGì®uØÝ*Ÿ:½"J±ûe7þpu3½„ïÈ¾â-L÷¥2è…@)uÑ‡ñˆ2É”³RÙ[m¼rˆ{9œ’ÙÛØì6ÄD©ÄYQ*&T2
&	z×UpÞû¨zXIï)¬»Ÿ/ÏÑÜ›ßÿø®¹7—H¹›T¶‚2r–c¶3ªh³`ƒ¥tXõr!v? E„ÏCX<3œÿ€rŸ*’¿Ž‚xÝ#)ÖûI±~â !tÅ½èË’
–tµ¿¿ÞßŸÓèx[#­¶ÖQqpE Šÿ¯°i¤jßÿUÓWÒé¬¤!gP¡úx±ñÎs¹`®W]—8ç'3î) êË5sÝ€‰å°Aw.…gdôŽg´Å4²¥¹kò-æ	«‰¦2àŠÞLbq—¡Ê%Û¥Y°Aq·#µ{¶\Dd¦yRôªfVyóôâìù¦’å£Z´FLÎ/–}ÏÕ‰Öjw&PWtõPÑ\»5tt®a‡äíM­mòUA7¡½	Q§ïÇn{.j`U¡_èŽmrÑÛÛxàÞµac‰Ò‘¹º™S—Ê.õP™Qyœ°ÝÙ<WÑ(•+9Ó9BgìÕàï_OTu‹µMÐ¿0‰p~ÀÁ¥ !â¬¤á#FµVF4[ºEI”¢×œë*•ôñpa8¤(ìÌ4&77^·“‡ÊáxYG°þ“ö@ÂÅ¯‘YTkÀ©#·O§HÇí‰¢WÍ…ÜRd8ž$ºx÷¶¢Gòî¯¯p®P…d"6Ð>–æ‹jj‹C‚£e¿ÊêjÒìãôQXä²(…=c˜$£¦0Àø»˜;Û—	À<“ëØ†Þ¤šn}pžbSÁÖ‹Ó¦ÇKf7†|ƒƒ1?4æ´fÌ„5ç@œœ‹,v`Žµe8˜É.šˆk3'ŽÕ<fXÎP™†RæX–ž^[ü<}l(b(ˆ¬Øå1ÝÐ;{3ª=x.Jž£âpOä¸>Âkd†.zÆä°NeÏd&Žõ¤ÿúnõ+ ­GO7Ó{4Î¾ààGE¼ÖÌ>ìÌÿ$ùà•€|”NS¿Ý2¸ûŠ"Ì¾¯†ôkž&‘¦rqzw=™¾R_†GÞHñÑ—‰X¾[,ˆæ- V^K_U"~)Ùa±­£’fœÀ1Y0tI°	þˆC@«eá’’Swß{P1àgÄŽ#åW2eÌKK‡cBÀ„˜•~”H+å¨ë©˜9yY„Zó0EM Åßýyõ0¾¿ký·àÑ‚ú*‹Í#X,HƒUPýWb\YjèÄ,sàK‘ áö’tç„Úzxœ{/zCt‚[Zf^fqÆFeFN7O?Ï`Ý¨ÍŒ;™Å 2ºUùy©
1º
n`nêdV3¨¦Éî¬±“'°òL^Âê¦_³Ú€iu¶~6ˆòÉ»ÙÌ¸ÒJsrŠKKR7[³e„é6åtgŽQÓ›\ÃyR ¢Z!¨d_ñäH.EˆºˆôSRËôóÊrS€ŽIâ<ÃÉ›¹l >=C"ï€(xœ»!zXt‚krN~qêFFNgÿ`×Ý(ÿÍŽŒ;™…ÀºUùy©
1º
Î@Þd~VsˆúÍ>¬“YAb©“Ÿ²™ñ€SŠKKR7°¿b„(›¬Àé>9‹ó$T¥%—T¼‘+ =*²ë‡È&xœëžÆøy*ã†lF¶´Ì¼ÌâŒÍŒvPöä¯öÁ’¦nU~^ª‚./—‚‚‚X$urœÃ˜B}ÇÜÉc&?ptÒü›5œôÙ ê&G;›ð§•æä(—$–¤*äçñrm¾çlÁÓ[à¦>ÙÉLo¾ànÎ( Ñ§Ô²µx²´g¢²3ôSRËôóÊrSttó7Ïö,` LHˆë€)xœû<•ñÞTÆÙŒ¬É9ùÅ©›ì ÌÉßíƒEÁ,Ýªü¼T]^.g Àä$‡³På¦ŽÞL¬Î`åmÎ&<`Á…â’Ä’ÔÍœ™¡FE»©OÖsÏ˜ã¦¶y¯»9#TË/l¨9ÙžŒ þs3·RxœmTMoÛ0=[¿‚èm·¸m®AR Û2 @ó¦ÝWÑƒj30[Ê$%]ƒýø‘´ã:k}±DñQäãí¶ÄtgCêÖhÓ³xÒ=Uƒ7?¥¦ÃÉH¥ô)û
)Ìh€×Îƒ.
`{Pjñc:›/Æ
ün‹>à½:æ8°cÔ>Î1ôsÜš/á.M­.1¬u†©ÉýéíäþBjA–÷*I\CÔ>¦Åƒô¯>Å/€,ývþIk>õÿá±À,¦œ7êÃÃhJt›8è×	¡ÙÞ+õy´øt=žßŒgÓ¦P®õ‘WÓ¯„ª4x4[´0!l0ÈéO¦m¢­~Äm„Ú2W–šþO&®ØK1Åâ{:‹ÆÙ3¸Y™@”vôÚÃV	)]‰NÖL/æ@E<Sê†LÍkí‰åˆžò¾OGçŸ/.õ3<  Ý­*²A2B¨ºžüÓƒsÚœsC/N;¢ hº…Ë~ÁÛÞ¶{J)Í„¹F#jßä^O½%2'·%§µw[“Sy/÷™–5ï5‰g0^‚u±ñî£ÉÆ-r­PK$lVAZA™1ib®bš*v6m£;U‚m†=þÞO±”b’`«[ú­m	·IÌÆ>)yŸß¾³ÜUã%€›aÃ‚2 FW¢º¦<]	ß¼!ËÐ£f$G  ®nn”Ïè…ì^ÞoM$e^)Ž`-áK€W¯ƒãÌè{"š˜XêM¡>„­.6HLZ(‰Z0s6TÇèûp2¿µæÄ{™)RóÒø«ÊIß/]ëöÔ‡ö{KÕ;x=UZrãñÑåÙpqS$ízºÍ‰ræZ¦\Võ®íœBçƒ~xœ[Îõ˜“?¯,7U·*¯X7-3/³8c"¯üDm1QG·*?/UAWÁÌKhÁUÕkÊÌÉÉ9ñ„’,ŠÖÕ-NÍIM.ÑMÌÉQ¨QÐMŒåâƒÉªŒÝlÝ“·0šˆ¦•—$–¤*äçq—&'§oþÂxŠ‘b°žÂä?ÌæŒz“Yò @†‚R<y‹¶²ËôSRËôA0 Ú© ›§`8ù/‹ Æ8Fýæ€7xœ{Ìyž“/¯,7U·*¯X79'¿8u"¿üD}QA0[·*?/UAWÁÈ™aÉ
Ü8‰‘$’:y>£	X,E¡¸$±$uóÆSŒU“w0[NþÄœU™Æb
_Èâ Ä“*hä"ø,xœm’ÍJ1ÇñR4'AAO2¡~4V=×‚ˆhv+‚zJ“,]É&%É¶lúeÁ›¾‚Oà]ð|“ÝµV4·ùüÿf&ÏkO+ër”p<‘ÇS«ÅÎÑ.šmmO\€!ä’A÷æŠÃ’œÁ™Jâ\!·Ða\Ú8ÊœSZ­„àºšÛTKŸæ&|µ±:¥.#Þvƒ^Ø	.ßìmõØ!@…P‡ã£˜ò6Üc­(±mxŒUj‡©Å‘Ò	±'9]:mØ‡IAI+JÃmÝ·ª8éœåŸKSH0)¥Ü˜øjF,ù«fqýúY.H`}oRÅ\Ô)!›¡ ™³b	ŽTäÔG\c’™@(è]w‚î|R”oÖ^ó÷Úìba^h:‘¦¿Íáw^™¼Ð„5.HÊé½ÖƒQÊ-ä/Ë—ÿ÷·;Ÿù»'r‡=/\¨G´õÌÅ¯ "F_EÃ±Lá	@xœ»!zUt‚{~ZZNf^êFFN77O?×ÝÍŽŒ;™Å RºUùy©
1º
þ`þd~Vs˜®Í>¬“Ù!â©“Ÿ²™ñA%RŠKKR7°¿b„)ž¬Àé>9‹ó$\½%—\®‘+  T1ïï	Œxœû<•ñÓTÆÙŒìùii9™y©›ì`œÉßíƒ%¡lÝªü¼T]^.°Ðä$‡³pm¦ŽÞLìþPmmÎ&|P‰…â’Ä’ÔÍœ™áÆF»©OÖsÏ˜ã¦¶y¯»9#\ã/l¸‰ÙžŒ ;7æ„>xœ;Ïù˜“?¯,7U·*¯X7?--'3o"¯ÂDmqQ(‘Ÿ—ª «à‘¶dƒHlœÀÌÈœ<Ñ*ºùã%F({ò2æ0A,f0Ñg Ñv*Tãc‹Œ3xœu”ÏkAÇ¤Œ­F±X£à3ŠÌn“6ÑªDŒíÐ(J]Iv6º™]g6-JþÂ¼yðîAÄ?Á“ÿâAÿgg6Én«°°;ó>óÞ¼÷¾o¿Ïÿ:û&w´Ï„Ñ÷1°ïf<‹öÙXmXÆÆÚjÕ2*õú'sßçý»¹ðçúm¹g©M+ÞµœuX²Ém‘›ðÔ2,ƒá.>nI„Ú7–V­Ü„— ÷A}‡2¹ð[fêt_¸M|c©¶6"Ä«!~=8y"ô÷ ‡²I`g70cã@¹[[®jÂ½‡8„ŽÍ+ióu…d'¢wŽÇ2ÜN$ÅÓI…ï2á³ÌDvt÷ hlÄiãŒÏ)s¼„{?Žªq+6Ð‡ðÑÑkµˆ:|îµ9îÂ6u]àÄ÷x ö—oWä°`!h›O£
ãqµÐþÁó	Çõ˜uÑDfãä×êeeydÖë(jæ@Ý¬ ÿi92×PFÞl‹Ú2èj¢¶¼nK-]4¡æ ó‚¯óJòµ7hº^k´ôtÆM=A†nŽ
ùˆžNËÌ2’çãòaY<ñœ<ïQ®¼É\ªqÞ#‰®¨ÌS".$%ª+Wž¢}CáâdáÂN’1ñ^ðõäÜ¡ZÇÎb-Çå½£zGÝa)k{*SÝæ4LVÎ¬¤jgáã©Ò´«-.íÒ@&mpððÉ±bÎÑÙ«¨¿=F)\%ºðý±r.ž ¥&$ÜŸ} Ý¤YªK™å°ØÔÐïì¹ðmöjÿ"ÁOš“sW"¼uädøejzµ*lõIe¥¾\+'EC&•Zë……¬Î¬Q,ÏZ—š=ùy¹¸0kµi½B&q QBf­óæ‚²Wô€ŒŠœï×•…ö¸kç²¬zy3ZHªJeR},ž65Å"À<ˆz%GRË°¨fa¬óÒ5}mêÄŽˆnÈtH«ãí
þØV÷¾Á$Ñ0'E>'m¤¨~Ã%õ«-*±–7‘éÐTœªŽ²^K§Œ¿œ!ö†êdŠ÷xœmTMOANƒ´¥A‰ñóµ(Æ„µ5Š”*µ‚``)‰š‡Ýi™0]w¦"ÜL<:½yñnâE=qñ¤‰^½˜x’£ÀÄ™Ù¶l›f'ó¾ÏûõÌ3óüsìëÛØ»j¬·Á¸Õp¶çaæ¼§±õ\Ô(wnÌì±]½¹SŒØ²\ËÁ c^#6¬Š1xhYÕ0÷-âŒk÷\yÖø6ÀbÐ4È­üi¹u+™npºŒlz>äÐ6èv¡G~™Hí 5" •OÊ÷u‚žîÍt
‰ äätñvç@ËÊÕ}|nv/.]°Ìz¯0bÖùž#¡üÈÐ'ÂÎZÄÙ×åE9ð|Â*nçAÈ _N~HêÃ‚æÎO}”ÖT¿=Ï€×ms>bƒç»UÕ`P
>ö\_{1?¡V$`q@œ“*Ã×8E T\?•Ð» ¸ö‘ .“ÃhL^¹³ß=í…ûçŽüOòW	6Ë·ZY#ŽªÒFqtãµÝZ1ç"LW€¹¢6c¤ÐüuÄººL]{•ƒ.c¨s$›eÂÕŸ×±³›QÍŒTEf…Ó4ÉCŠ:,°¯ã|ü¤N|ìÈ3ÅóòûûÍ©Ñ{#"W¶³É°xîö)J-N8SäÈ73ãÉ§ÐsòçLßþ0¢[ÎÜ½–	Xåë	k\ãÎÌ¡Ú"š°êîaª!×}"äŸ»gâíÑåáâÕÄl8­®ÝïÈ+?ó1*'Ê /•ûåÐã”|·´O>+çccÝ.Ÿl[{—nËÞÒ®Ö$?îõts\…R)^+F¾*nz_ÄQ‡‡.¶âFåïÅbÜëðþ-&»Zì<š‘s‹åëÇÍ:%\¤sÙ:Í¥YJô×SŸ‰@Àm2Ò+˜REˆëS'„)r.¯ê­XÑ’2:à]Ç˜kÆò…¢T“§nM •a£Þ–$71Œ\W%3ºfÖ!k`Su³ÆÓº-jbÒŸí2™0fÏÇ¹¬í:87 Ø^q#n [«©v‡Ð3¥ØŒöŒëxD?®Ãúñ¼¼šÍ˜lª#•Yw¦
ç‚¯ÞeêT~CÇÞÏ¡ÑØ?À³wâ8„ó~xœ•RMkQe(“Ò	Xë¦›¦½`Qk3ù€Ò…L
Z¢LSRgásæ%y0ó&æ½T“Mþ€BáíýJVý	.]‰¸påÿð¾—Iœ¨WÃÜsÏ¹çÜû>o~,\mß'œºq7–® <ü´¿n­]´Nê¾Û|Òœ[×+Ëà»ê[® ìÝ›ñäLuígêÚnl ¼ð]ß"’"2õÃ¾½™Vh€E#Y5ïä¼y¤‘1xê»}·b!‘Äw#Êk^£5ï‰ÔW{ß6ê0ç©~îj2 ¯‡TH‚1LÉîß)A£²GgUÝÄT 	C¦HzBFÉb2Ñ§ëŒE#€£»²—
™
s°húïUuõåôçjÏšD°È²d_ÒYœ¶öb´^;:H‡ ZwJ§§înF7»LI¸w0Ì‡&´U@«¯ÿSöDÓÿÞwvrÄ1Á¯L aÐ™Ùãl€Åm².–7œ¡böç¿Ïôë¥*²±¥‹o5#‚÷¸ñ´®Õ¦ÖV¬c€Ïx/Nº4¦\."½a¨7s†.¥ŽX…{A”j8{XQ_œ-ëºŸß9ä—1Ö¹€?5”CzYÖpGsÁ:TÌû¬ª÷ù­é¹sË*ÿ­ò¶ªÞåk¿ ã²|xœ•UMoÛ0=G¿‚Øm×ºk®E2 Û2 @ÓË¾‹T‹I„É’gÉiìÇ¢l×i»óÉÉ'òñ‘¶›³­õÙÖYÌŠU2VíÄø¯ç“ùTdôû< dðƒ`.­\a6À"ç®(¤UB,¾Ÿ_\.fFa¤«V¯Å^„‚„]È=)ÜèßÀU–YY /eŽ™VãÑùçùø™~½z ¢£²
™¹‘ãÑì" óÐ¼÷·^zGF·óIcÈ"¹§{É°}z­’AfmïVóÜ­Ño<ú0;›Féµït®ãQóÂ…è>¯…x?]¼û8»üDðŸ‘Ò®‚°F8ÿ2GHäÁJoÐö¾FÏÖ5
nuXG/Qá/
¨€û+ó =†Ù’1ø,ºèŠP¥R:š¥XßÜ»
y¾Ä\/ïE‰ †VaÍ0ü­}‹¢ŽXÛ²”…!(\ÊÚ|PÚ‹‰	XY¨$sŸü%^E ,+W€„¥6HV —n°ÉC£:â‚yë„(ZžŠçdFÇƒÏù²²r­ˆ’Î´‚eÃzC!g]è¼9Q1Ø‰q‰ÆãòŸm§¸hJ¶ö¨:¢Û¾QÜB%Ä‡¤lÖNl”²¢[ˆ¤>±Tsœ ‰TcoBš³Á§ØÒx¬í
ÎÞNÚüâDFþVw=¢™cÂoÙb=q_nêå’rIM§8Ç<xÑ‘…ÈÞV,R›r¸(ã·ýŒ±²Ãoy‰dm1QOþÛ^fÝÄvwõ•œÊHú¨îpð¶_ èF´-±ÑpÐŒvŒM5ÐH°£H8x¿•5kú€0z³Í8O £Ñ¶¬HMS‘Œ°‘¦F’‹…‚ô£=æÎ*OåM¿Mæ—gÓÞÆ}•È–©­ÅÃØþÄqÅ“7„ýÜ8Ÿ¤pO:€áž§ò*Ø|*ûë(/á/»^“j_GãI\âÃ¸¢Oâ^î
Júk¥Â‹5ãàÖUF½ 5A™t
UèóJ—8Ž<?LÚn~”ð~·³š¡óuYº*Ð#+Ò8ZW¯Ö	ï%‹IÍð´<Ì×îQf¿ÿ»æ“»áÉ.° Þüo/i(ã4ò77Zü%chéï:‰ìRxœmRÏkA¦HJ]/•Æ‹R|Æ(d“n´xiƒ-XÚZšF!ìeºûÒîÎ¤3³	!'ïÖýD<	þ%ž<xó/ðOðÍìSìaàÍ{ß|ï}ß›w~Uß__™íOÔ˜ùý$Ó"žÝþâ­fð°ÙZkg?^ÝìíwB¿wøz+ôwv»5¨öÌ ßž/|º´}„>ìØìnoi`ZËˆ3ƒ1Œ¹ Ë	FRdáù³
\#°4aÁ:¢ü´²²ÊRÔCaèóxsc¿»×†·ÔA€óï•9,.Ò¹RMŽÙæµ, 	ØxðaéÖäŸ—O¹Öj0„žx	v‚)
1D2M™(çµ¨š›ÊkÀ"Ã¥ï5àhÀ5’Šº…:Ì€ š¢ ÝLiE¤2o¬¸A`
Yþîò×i¡¥]§©IØÿ‚½Æay]®ÃPÉ‰vC_*W-g·ã½èƒf†¯»ú¹G²O¹)Âq"£7ãˆSÞ	:FÈ4þ¥™#¶²œq±BAVøóï‹6C¦¨‘Aeñ
O3®iyê5<·!ZY»>uºÝöì½T{D$´@Û¤07R|žÁÀ†á)ÊÌ”æ•·ÍYº${9B¥È±Ï²Ä@Y‡K²*:•RÎ5FRÄ:Ÿ,ÇOþmµÏ•60+f=+ov¥Övûq£“ûÁúbÎà ÿ½|×¿ðkC“ÌjŠQŠkî3îÇëùÏ«-Ï¦C?J¸÷-¡9íI…âxœmTíjA%`ÕÆD"¢½Zè4Ù–‚¦ŸimI¥‰­¦Xê™ìN’ÁÝ™¸3IJ´|…_@¡ˆ/!ø>€?_@ðÎ&mcÍÂÂìsÏsîÜýó)öå}llnq/ð¡ÉBÅ¥˜O:“™$0áJ‹ê|r»´Fî&ñÏ©ØhÒ¸šÓ\ûlA4FÚB‘vØ¢¤â7T´¥`GÅX| Y¼LÄZ5®Quê²,`”´BZŸMÄ÷vÎÞÀÂš»Ô'ÔçU‘Íö4)K­eptîò›ôÕ>Ì‡Å÷ûÄØ‚°f°±œS@•’.§šyÐâºv=É–¸Â“_úº‰Dp†h.Í‚HùzÖcMî²TUÏÂSBX¤„poÞn·ÑÞ+ ºs˜1¿sðÁ$¿L#,èëC7Ð‹Í Vó€É†ŽðÝõqŽ†³AsgùûWªÁèƒ]kA
Ze3á+ƒ€Š®|D%âÉHg„Nu5¶}J5®ãûÐÙµ|‘¥ºF5àž¬3.R•ˆGñIe ñVˆí2jÞ­|3ÙÕ·ƒ§Näò£Ãý<3¯óp°­XT¦Ê&÷û	ÜƒŠ£Ýîù'a½BêôDGtŸre%J-ûÒ}v´•4ëmö°[‘‘Þ)ctG„¤—f¢sbb9ÍB›²"©Ù\Kv:‹-·Ú/·Þ~£äk%LÆ®[îŽÍ:®£Ì¡Þþš¥|êÊÿwÁìço§âÄ„è ž¨B¾†.šÔo0”& @­\1W
O™ôúÇÜiO+<TÚ8ƒÖ¥î—í§õÛN[sfÆAŠK¬ù±Qï3(F_ÒöO±àØ«íÌ¿pËü,ãm ÆÝ*^Œ~®ÏY½iž-™_[¥ëhõTfÊ!Îq¦Á¹—Îd§XY5;FÿÒ?‘óµñxœ­[[sÛ8²~÷¯@¹êÌ:»¡å$»gjS©Ô*–«6¾IÎœ3£y€HPÂ†· åáüöín€/ -ïÄUq ý5Ð7tàŸV§LŸœÃoüYJ‰·,ÙÅ¢lz›æoÙoJ¦·‚šuÊ”ðµL“ßièG‘ˆœk:Iýiú…ýïâ[è}$ÔV­ØN%<SÛT³w[­³·£Qúky®ÂóDèÑûj"lÂ5LäâÕèÍÅèõÅë7eÏO
½e·Ÿo„ýOÙµH‹Ü¦Ë´}âÉ¦àh›&›Hª-6Ÿœ/¯Ù)šž²ÓWðçÀä”Ú…ýËÂŸ–÷GåÏl"B™¦ÒX°,Í5_ËHê=SºÃÈéÿÿè¡X5­‹:ÄZòä<Í7£¿]üüß?¿© áju¾I
êç¹¿•;1Úê8mò4A¼÷.^bµ¹¸¸xõæû~ÔL¥`«äì|ÃÎÅÆ_ÙêŒ=9‘1¥²õO?T‘Jhˆ‘fašÇ\k™l~ ‹@*¾ŽÛî³­H8zÚÉy²môý«PZ†Ò§^vÆl`Z|ƒ_)‹D¨YÌóLXšDû'ç<`ÑÃÍxvË.ïn—ÓÛ%[,Çóå‚]OçSöçÅfÞ:o=Á°ÄVE!rPáÜ›ùió–†®%-òû‚ÚøÖ®<?’/Üâÿnïî³¸¶ÊNÖ…ŒôÊ!eQ²zK­çIx²
gDÎÙ;Ëã={ˆôÅ{öÛ;­zá/”Db‰BM åF2ïŸ†Ä©N¦‹Ëùì~9»»5³……¯¼é·,J1©g!Wú%S>Œ½¤`~šè<"‘×ä%7‰Ð6xÊ2<Œ˜%›ÑRØýåŒ•LÖ\J#	¿5ÄeäàÝê%[šñH¥¤•—^¥;àòu.}õbõÓ9My¹…yÖ$åé&ç±™}¡€Beu}Áô`ÈN¨aÏaz ¬,‚ „–SI64á†4Ì´€+›iöÈØ>BdÂ'‰`]HóI&Å7ÝR³\DR(X3	bvw¹ü¤Ð­%Ši½§Ö˜Ë„,ë‹È*Ä&§Å-ìNps3¾X‹Zn‹Ù#U¬ÁüŒ¶ a2 ‚líV¦¬ê-™K3¥jöäá8ÉÁÿ³ˆïQ
5MçbaXä$˜C.HÄ¨  #.L'–ÚHThbáùZêœçûjq…eÚYfÈw\’©½dy‘°SrË­ˆ²Ó–L>ÍØâáÃÊ«	g±`§7 Ï
ÚîïÁ=> ŠG"ñ2®”ÞæØÊÙ+pÙù‚ýõdLÒº7]i±Ù²KýÓ®‹ç¢A=»ÃáØÜ.ò<Í½(Ý4æBçRì£nÝªCF…Ú6¨F²ÔÑ¨Ø52Î°›@ºÁ,‰îr¢¦A}EM,á± ï9S/ºd‡m>Û¤ýÂÆ¶ƒáîlšb×;ö
ôøÚ‰†Z“ºƒuIÍ„ô~€:H“(åA‡~b;\D½Š	G¨–ÍFh/\-ø"¾2í]U"Q›e´ÒgHøÉÁ<´¥ó}‡rYö°kÆ+o–H-AÖÇßBš*/QúZÿŠ/Í@v[êB™rÏMÁ¶?€´Àn'!Ø`?Ùøv|6Vû×‚9Ìcìû€_8E9O|1àcå7@B¡¡ÈÍ · D‚¦†Ä:¡Í\0
W4Ô	„’¤òCÛV‚I™È;$ä”Å`œ¼†žÎpx¾Î£f 3è{ð¹2î»èå¦ªTæ$ÚÅÕö~¾¡ …ç¢•©ßÃr6º+C5"tÍ?§í_R+l?‰x<·Sî`mâ	µ2ñ&‹{d?=díÜß¶éÇÔ:ÈÖE6OÉÔ½·ÁîtÌÆFÑ¡Å“" f´W¬»lò¿>%\Ù6•Çhr™A¢íœÎÀ\‰Iw2´’Žm}#sµi~±V{Hlb7Žéî"5i»“€} eísl›#J¿ßÁLº~ˆ-M™*U¸‚JŸVÁÐ ØÄzzÉsÙÚÕ+º_°k˜Ðû.òT¨!ú_iÄ0Eâ§ùÊÈ!<SmÒ/µƒTåk![›öØ´Õìu”ïl9ì‚)³à–fMãó€"¥O‡Úžƒç<-lª“²Kž™£ éð]%ü¤¹,×Ì!m`ùÊ’~R›¬›t!i'«Öª»¹ê@ží‰UPeû^RÕ“Â-)\—f›>¢î›6½€VãÎ‡ý’•ÆÐ4ÔU>–°-®°sÙ$âôF@¡õµ@—†Zjb)7d%	¸€±±¹aXbªëì *Î!†Ú’'ã]™‚z(˜YêæZCL†’ˆ»B8,v–˜’M·fåAr<N4$ñîÔ'U3ó4þOæ¯¥^Ç~¾´1Ìò4¹Þ·<›c…"@{TNÜÚWbtÄ"¢«„íMóäµdE‡€Ê¤ÒÕaÁ£à9ï„ÇÏ]ŠÃT >Ï<ƒq$Ãòl`QBPó1ª\6ærH#ºü×i
Ò¬W>Àp½\KBsVQ–±oâ–”S:&hm…ÿÅ¶P“eÞÑT®½â0‡é›\¯¼ë›ñåÊ»¼ß›ƒ7 éÕ‘ê ~æ‘jˆËOv¿øg!0&Ê$p%÷Í|3¸+®óˆÄÿPŸ¤p—Í€ö§U¥örÕŒM‘„7ˆ¼¸—fB˜²µ±§k¹«Ù¤´&2µ©­íÜ•~ò£U…Ø™|Mñàön .M·ú4MkN^_¨lAÆlA]e¬ucAŠg–ÝJ³²†	è-æð$æà8ujÂ² <”¬WâIÌÔžQÙŠoÝÜ½Ze¿5Ô–[ßq\VF¥ Øò&w”ØÕŒÛöë” ,27Ÿ'­Ia“*o¦ƒÅÖ.vVïÍÉÔR,¯‡ŠdØòü>mö\5·€ÿµgxÌ»*Doz•_´aÆ¥ö,‡ÍT^4´QÞ²Oàˆ‰¿gJž=z±	ôˆÀè‚?&8f¹Œy¾'SÁ=lHÁ÷flÝnË†žW•¹B_N–gñº]¯Dù§Ú\ù³§0“Qê©Îò»™ÇƒÏï'åg|W}YÖ‚ªô²«™’À¢‹ˆN}v<*zêWˆ¯J…¡ð^å„ÃÂíÏKÉ¬²žM«¯$ƒ0‡´
KÌðèIF]YCŠ	6ÒÀ2M½IB§Y
3Ù»EÁÊnCŒ·7÷æjsôb-xÿáÎÓ}£ƒ·‘û${ð:·/(vw&ƒ…÷™	úÊ ›CšÕ™ÿU±’ÍÌ˜G§,”‘ã˜Žø ããþÔ£Ÿ¾Y¿„5±†h¸é¼ðU«a^ý—y,"ÚI—7ÌŒ.Ï5iIh=ØÕM€ÇƒÀ\ˆÅ8(³	-nÆóåS `Ù™C8Ç š=èé.¹kÇÛ‚?
Ù¿{šþ£ìÅBõŸSæÂO7	„Ÿ€]Xba,Çq: ­º;«	t•g~&©!Å÷KÁ!t?éçiâùn^æK{?Ù:Ç^Ì 'k÷—3Ñh0dXœm$X»!`»¶>¶OûV¦ë\ªá]†ów™¹ýÌ2M€dÀÓ ˆßNHªxœï×Ö³&â<°×¼5&h¦Ïà¢D„[ãN¸o9!—Á4K±jˆ$yæÖwûYB“ƒ÷öj¥#¢>(ô;,C Š¤6Ô{H¼”|{T–yà™<³ÎÔ>¡„¢Í×i¡ÙÝíÊ³>´¸*>•(ðN†œ4ãzkÃ¦+o»#,u—FEÜ]‚NÕVBr\sÄšw¹œÒ\à¶Ýç‹~ZÐó†‡ï½wê7äli†7<±½SÔ=sˆßÓv$CÊ§Oì"j0åÃPoÍƒ5&‘n®Ër\=0Ö@Èˆ²k&ô­à‘ÞR"Ø`ð ìnæi´D–Á£ýw“|Z“E¢áæÒcõ;™kYÄ&¯²·ÀŽ¼ŠWol.‡àåp‹Ý0b(Ôÿ¥Œ1CK?[ºV“:õvz'E÷õÄ!™ö1…i¢`\ƒÄ×…ÎñôuçŒÚO…ä=¶òËä²¡*™¤˜ŽË¿,‡ª°qº921/éªSg¨"Prf®”^PÄ™kWEÝ›!‡°32|_
ê¾j9 ÖÞÚx[‰/÷}èUä/	˜%0†8À¤ŠC}Ð´—9BÔæ‘ã¯<àŽ`cRßÚë54®Y!†—ÞRÄL$-o±˜xF­ž}ô”ö/‘Ž3¥	ûlèœLèíž'jSò¨'·ï0R±[4]·™&½¡Ô~´gt0HÈ[»W4ÕÃœ0[¦=$òÍþË\À‰ï|Õ„…Q+FJ}:"û9WÛ®ßõ
†Æ“öBa8KiÖÕCaD¦IÓø•%4G…9Èñâ4‘ÚñH°´F;ŽÙq‡,?ÀûR°•m|Þô“·ôDò’mÂ®ð9Ñø§¤å*¨ªýÃ…,²(O4`kÀÀÐŽ€µô²vu„'³	Þ¶•göÙ-©ÊÉ§:xuy±{Ã£.¤þW9™9ÌÛêoÀüïqÜÊ»±Š>Þþ‰ÁSÀÏÀëOÙš¸v{‡Øû<…¬Ðøf"OxÖNUŽ…£Ý
pÍƒ[p…gõZî8[¯]ÒzLÕf jï¶;àÿÔN=ý&üB·Ö>®oiK²çÉóé¬¾½Ø*¯2†£w	à×SW7í×†MLTÏ[Ñáìá4Ù3ïÌÛqãÞhš˜D»qü«,_ÇÚ'êpHSÕÎ:¢šÇPY[FéÚ¨>î!–5ó÷DUos¿§‰ãÁ[çeî¯0ÌdÎöbÄTË=1ˆR%¾•kA3~— ¥‡ùZ ‡¸ç‚ a_í`\Qû±(Ãû.,hÞ2q gq“>@í¿¯FÐ4ñ‹ŒîšïLÇ‘kN3‘80 õH ó¶‹ zRI\XPàŸ‹ÑÕ6®\™ô O5ð¤3G{×pÔ$K zÿÙ¹G©Jö z¢aæEŸ©¬•y–uŸ•ÁŠísFËýàeõUÉ(Ü³%\|ÃÑ}ìFÞU{Äaß¼õî7M¸Î¸6Í|+äæ£‡³a3Þ~*,Sß´G©· Ä_ç¿ŒÍ›(§8e¢ =ðì5ÆßÎaOÖq\yÌl#µûD?Â™O—ó[ûIÒL¤ú‚çQÂÿÖbËí=“g{‰ÿÚ›.›ø]àwQª ·ýdÈ¯°“M¡å·>WóåõtÎ&w—7ÓÛåøð­ÚÂ~2æ‚¾2*?¡È!e>|zµŠ[G…ød>,A~Qóã®…yî
ã~_ý´RÞëUñÛ«ßWÁJýåu5—ñÃòún^}…%é94B°qZ>{Ð¼üº«ÆôŸUõ¡Pþ¶Íåu›Ë|z7_În?²-³{®}Œµô9>tÄ¯Ïö dûµ•6ŸÝáRÓr}=”¤D‚ëúdð£Zõv4ÚÀœŠ5ðÍ"ülmEV2Â_ôA£+³Ûù´ŒVJ_ÉQž]Ã®Á´úÆ.ôðW¹¶\—›2ÒÁ’@vÔÝrŠ"˜Ý³SöêüÔÄàJõY[^ý—ýh±L7~5l—p^NM%%®J§o¿¬±õæƒ¼ñ"¦eÒ*Û´‡ž˜¯–!gÍy µYôo½šuÑì´	ŠÜxœ<]oGrp€\^h9ûÎw±œ¶œ³¥XCž¤»ÈÑ­õ.I1)šKIwöBïLïn›³3ãé™¥¨'ÿ ÀyLäé€<ÈKžr÷‚ä-? yò’ªîù¨îé¡¤ ¡­ê®ª®®®®ªîžÿü×~õ_¿õÓ×þ)ym¹µúïO÷vX°¾Æ+æ‚<ÞLiÎg‚…ébÁ“ˆÅ2L&…È§<¬,d,‹3v9Y.DÆòÊúÚÍlõ·÷ßYýÅ½ÅêßvßxkRÊ¸dÂ²¸œÉäà·V¾~kõ?÷>Þ¸³)[ìÃ¸¸]qøpVÜÖ¿#±”¡Ð?¿Âß<Ÿ©Õ‡»7W?üú»H÷ûâY!%Óš°²(ßm)tCø%ýó· €`ûY–¥˜TŒ³)WÅU¦BóI,Ø<U(&)ò4ŽENÔ	%g‰ˆX‘®¯ñ(Ò$P§‰‘bÓ4gIZ°4‰ÏØápÕ\&\A'•Æþ^+x¤r¹ê*›”ŠUªç%Hw.§Kà9å“\†êÊF3vPÍ·Çs÷Œ§Å("ËÓYÎf ¥‚®*£3X¤Ød)#œsPÏAPPUKž ë"©’™–*ÆÈ·Áö
vÊ[p ð•‰PN%(
ˆ=È¤|Æ¸Z_“ËE,…‚Ñk•ì=? :b*Qc“3]p™h[;y"bÃ&ßX½q²õƒ§ÕªK[ É6>ÜßŒV¿¾·Y¾ÖdRå$¨»hi@,Æ£˜$š´LYƒ­¥Z¶õµf Ú¶Æþ‘TYÌÏPdús1“
,à[Ðˆ­kœ1ž¬¯¥™&jq²0º… ñ|"‹œçg lå„å&–N8˜À’Km~WY^&ìÎ0›‹8»¤MàÎf´zûäæå§°Ÿ'¢+ÝÀ–>V¿¹·q]‰°¸~i–îü“ÑÝKOQý¤ë>üld¸³9¿±úßû×ïÞálž‹é]-C d\©bž—óbžæòµ+w6ùÖêßßýá@OÂ¡Á¤ålÎ††Éêï~ùãM›>ê‹ç‚®@„âÚÞC$P$qÃ&!ò<Íƒ8Q"ùÞ‘(r)–‚i,¬BzÛô¦q©æ”–:¿;6s­áHà#›@¤´;ü$Tuñ‚³±(Ø>OÀ/DR ©À‘%Í¼°„Ñ:ªa	_½ø/«+Hé¦Cé4àa!—à},r-˜Ðüpgó	Tpvf3#KU;ft§ìÚÆõ+žÉ zhQ²p˜ añ²j¨f =uM´+{”ž&qÊ#‡l¦³ƒ„GÜ§ÒS×V„¸ÐÊtóÍÄ#ÓLÁTð¢´—€©L»0Ñ;¬<« {9BU BäÍ]‘Ø{`„ºmÓ¿–Täg.5Ah¾{\#Ø}Ø÷‚½Dæ<ªì:ËuÎ“™ˆ‚DèÄ\64aöA£Ö¡iÇj›…­D5ƒrLJ-xÞáÔ 	ýßkè[“stËÍ%V© !58\¨³*	tßJ<CØ)¯ôÌ„H¢2çI(:Ž‰"Çï·Î©nQ“v,OL§àÙU‡p&dßjÉ|¼JÄS°’î”ZBøbCx¤#-ðeUÃžiDƒ»‘kåè¥Ü¸4Ø¾À?Â–-r¤|Å¦Œû$%Š¿	½Õ_~õÛ¯ì±û ÷„Œ‚°ÈcJ¡Q/»g$8ŸUÇž½C¢í;”Em´¡ÓX’GWØk¹P¢pIi !÷vKîñ¾ÞNp!ù)ÓÐAÔ'7Ôö6Ö›6RõˆæàÎ„3ÚH{¨ö$â´RÉH`ääl€4Âi Ï`°¯G•çÕH½þ@_ ¢‡X¤ÄF¢KÌYÈ2õVLÕ1ÐË…TÚóÚV :ÕÚábÈ¬ÈFL½;]³	Â…ÔÇ6žFH^íš6«@u¨=‚.¹Ì ûô,cÒšNº-q¢+Ï<é»«ºªïkªVºW¥ÈåDAà¿ðLœ&dtè0õÀšƒMÓvBd`¯w „~p„ XGšVh¹¡k¦è’[ßm[«#ÞÛSªô8tbkW\¡í[îIÓ=¥ãþ4—v\ª–ù×”ž †’ú©à¹ÈS¡:+8ÝmÂ_ê”þMý2	Ó¼K^ƒ	õ?t¨?B|û°.5ôæ~	ù7¥´ÃK
§ƒYyh,ùR/;Ïv¯éÔ©m‡A ¦qTÁúYø†ƒ£æª;„
nïúÔOÿ¦—~–æîª©Á„úi%É†<ã¬'Hãõ:QXÂœ±piGDA]þ¸B —PÈ¥8¨‚(ÏK„èzCt,Œ¥¼J²ù~µ »¹æ9k:L³3;ÏÎ¨64Ç@&;;g±(–¤¼YÒwÇm–äËæé)š¦µª µÕ1 —lƒ5V°o‡‹¤
±ðfi²‚Â×pêôvã™`¹ø¦DY¤lTupCÄ›®z“@ ;™­åL8~RÕUªª2Ã}Ð”ì˜z¡³ÁtJ-º·‡)axeHx$ç±ðÙ¢´mQR[ÜÕÊk•´—˜R.Eb—uIù÷ªôgžéë®…)6F”Mótñƒ¼ÛÇÌBC˜þ¤Ãô%fÏq§˜)eyš‰¼°V'…–?ÃWi«Á%¢<ìHÐSðdüIûš„Ð¦àôÐƒ&RÜnR¹Z]ÎS9ƒ$·©¿ž
žcET“cHNëàÇ”zqÙÏC¥“¯ö´!Rý©_ªº*;®)è"Dß;´n£Xß¾1IS˜OÉÂBq~¿ç3hn%/¤æãÏÔÃJ¨`1[Ø‹™"(ýf~÷ïÄŽá\„'A4ç ¿aoŽfÙ¿Œ^¿¨­,Ýa£ûÁýýÁ0Þšhì‹¦WÄÊÏ¨BÐø1e„édÅéøÁ˜Ž?÷cá6#“¨›•»8ê œÔüT$2p]¨5òþ°¯ôsš€/˜uŒ´§	M¦£ØnÊA»ùel{°Ál»*¢²Gˆ)Œ«Z
}£ž&4zm„ØÙÕëB/šíª˜TÕFïº¾*é1 óÊæÓ©Á&¢“o—Iv8\¨9h¢_ôõX$;DßôØbG!°è'\»ÈR¹î»ÅÐ„G‡ŸØXcê}Ñ_,ŠR<ÚqŠ;hÂ¾ó½Ú‚GÛ”‹šXÃÁº'.ÎáðÓn O×ÐÃVçnX]†Uç°Å3ÎZ­¸†kc¼f¢8gøª:o‡%9Ë­2";C|·¢»6km:3ê‚´$äÖ5@{+@ˆªOê·ÂŒ#8üñU/	ØüR·ˆ©‡ç—ú*z¶m€‹÷»Óïá°×Ã¡Çä|x‡ïè…|_ÒÑ2<ô‚ ¼´ñÕŽ1úðÞböaÓ°ráþ–,‡ÈÔ‚¸oyÐ„ÛÇ-·¶{ ÛDž±g[WkÞû]ÞšjïÆåoACÝs%èÙ»†®rÁó3mÀÕ([éØÁGµš†ÔÔÝŒÿU+poë
œªcX’¸e±l1±ÁoBç£#7@Ä´€mTg@b‘‚°ŸÅixÒœÉ{Ò Åñ„îyçX‰Âm‰«é¨Ô[¶K·'½Pþôâã±®DÖ;µ•±®Ë/y\
7ÌÚ=;7…Ój“Ð;[÷§n~P%PÝ©tPö	Y3©VÞ·Û—|€!ŽŸÙåEš0¹ÜÌ²i3¬#è¶d¬<Ö³=S^BÈ¿a 4HpO¨Ù"ÍRî¬£òAªÚ"J]Ý›ýxµØ}ó±}«¤º§õÖv”æO›\ä¦É¡i²ùX7aí/÷ö‰#5Þ½Š½tA¤†Ý,0‚÷œÙm{™à5¯„ÇîÂêb½ù­á[]:ûà“ë×nÞV¬î…kÎ,Ž²©Œ…Ç~/t¯Þ¨®ŠÈ°ÕÈÐ7æ«°"‹2Oª…i$)ò2¬mCŸà<Oðt¶Ó® IOÍŒ!ÔÛlÈLãúœN+mÞ³Æñæl?àQÔåm¡mïÿ;‘ÿ ŠtŠïŽŽ-Žn «IÂŠÏútÞâ^WÏåe¢èËt_O€;/ù©>ë¶1ÎQö¶Ï¸oz™¸gkL÷¥æˆ-a:K`»ˆØ}ÃN—±oß[$r”ÛGMÐÂ'#@ÔÇL&’×FÙ¯ÌªÌê©	-d˜§IÆ‚çAÊêê—5‘}mˆXƒ!"1Íjg‡{Â˜^X#šI0r¶¯éVZñÕÎß>×âAÓzi³®-6^ç¢,ïb„{.³ÆÏ½r%Ð©kõ¤/ºSì`p0Òs‡Gð!QÊÂUŠŸ¹ž†>æ-’0¿Ù2G|u‰ˆ€+®G†±W%b¿–Â{½¬·­@TéˆbM3Pz¾8å9¬r	mÏ/€veàÆzLÃÂÓ3˜Þyè_!è‹`Ù¡ÏïÕ{§=Šhy’f`†mzÝoÎÂH ØÉ² Ï*Ÿb¥{]4õR#sQ×bÍ'iY°‡ÇƒCê¥^¾jÑÏ´ÁŽw|ÑÚ^ñÐž1ãÅ¼:3ÙÆš–i\.ôðOœkz©šKHd‰C"nÆãÀ^ªxÓ\ÀX³Ï‰…i™èS<÷k–KÕë¿zšxcÎŽMk×¹Áukc&<{O_"ØÞ«¦ƒÖ6ÄnLá”EÎBã`Â£	ft–t,=alä:®›Ñ·º2ÝW[ùç}üç‚ÇÅ\ga~H"Åè‘ª¢I3Vc8Úºy|öÜ$1¦«Iñpå··ËÞl)óB–“sTWúìÄÆ×€
¦“ÞÜ²¯²&d_·®¸[KU&ìke–,@P0Þ#ì •Íi°,–Rtn¿¨-÷:ì2ªz{Ö/`–'e!ô6Ž'hNõní^h‰B}–In	BáÞœäÉhèÚ¶MRÜ)zs’—{S7ñHÐà|N…0bs´:e˜Ï=µ£ãJ	PoT.²[·-W±Z©iÁ°»,§Ÿ·€¡è[æ_õñ%—âƒ¹ÄÇRg~þž†DŽ?"r4AAÝžUíÍâòì‘-—Æßû…hÐ´Þ@Xë`É³L¥ˆul¾qÿÎôÂÆD¨û/!”ÉT›·:ÌJöh}ã>¡Ó2
ÆãQ`.¨,tåõ·£õ-ù±ƒnÌ”3ØcÓÍÞ!ý¶)
ÍMò¸£5O¸ÿñ¹Kû±¶›€(¸x}‡Ñ-#Ç‹YˆWcý
ŽÃp€%™¤Ÿ»ÁÑE3nö<”àHãYU8z”HÈéáõ§]¦"	}*–l–¤Q?ßí._ìæ\Í½ËÆÒ·6çi\÷ÐÞ«ÇÊ¬Ñd÷lÑ‡ïhºyŠÜÝÖtÁ=ñ3Mi?X¤‰,ºï°ÎiFãÄz¹UÍXÕ¬- Dx…}^‚<¯™j¯Ñîè=’M!>èë=z÷LˆîáL‹{Aˆ{Š:L˜ÝjmïÿS¹Ûï²®ËÏ sõì]ÝD Ÿ’4\ŠÁBõÞï(Õ¥ëêI§6—ãl/{\€‹·¯ ÄáÌu§~Øe›•9®2!—§…ìÜíkVÂ¡n¶_™a¯¸ÑÃÝË•^³ópëçâcoòÓAö±ŠEa_=×Õy¸CfeÜFÙ.wICÂ®¿±šRgóg^žæQ',~…e³æIG€ž–Þòšg•7Ïå´fL¡É#/‘Ú ê‘WÚ—ˆ"ý­ˆ”w·Ÿ‰°,l•yºôÏž'ª<'¥÷ ‰4Ÿ§³&qoBÝ¾@ÁoPþjdÙoÎV³~…/÷öd{°˜×ÝqÎiMã]ØÕp—ÚÜNLmƒÂê·–Õ+rp³ØÄ6¾ºÆðEØçõúÚÐà£Þxi£\ÄZ,»ªèdiÏÕ<÷|ž&Ýç;Þô¢]ç5è—ÐÊ$ÂÕESLlË	w="Ä©š~‡wƒ¡÷‡Å¯V}2 [(O(‰4¦0G±ùÈ-Ìîhp‡›]ž@€ýA*ê)²ï(úÏ‚nxùÙ÷x š—âeÝtY¥Ó)~ëÁ«=Šk_|Ç€ýÚ»ía‘‰ÄO¿FâoÌOÙ#¼yA¢ItÔEq¾ÈI;½¨^Xs|È¢/N¢.•‰d­ ÎcÖú’‚wd-¦ó4Ì?¸a—zMA?ásXH{û.Ú"hÔÜ6ÒàÐL{–’&É³Ìy÷â ì+& Æêz>ÓÏ«êájóQ+OÐ^ÌEçOKiGD.KWïyh€r.7÷qOK¸½ërÓã{wpM,?åæ³^qÐT©;Å{o
Kcih6 SYÌaú¾<z20/ê‰tò™(ˆdSÕl÷º„¯…srþ¶©Ï«ºsÔ{o¬þåäõÕb÷â›&R—¶Ž¶Ôß„ÀÐ›¯¼œJø5s^Ý²QàŸ®âÿÎªJ¥~‚Ÿ¨Q¥~½¯Wê5 ¬¯a^‡¯”VoœÜº<-sè—?Ò°Ä9ÑeäK[;ŽŽïo±ÑÃá£ýíƒãÁêovï}=†ß4ú³/õ§\€áTäÎ¶_Åi´9/ŠìÖæ&ªÉ|qg#Íg—¶N§¦$^_£ãƒé£ú´lxYÌÓt10ÿÁo½ 2éÏÁ?\*°JõØðŽoÁëOð4ìé­“I©Âù=ó1#ÁçMá3„7,ß3O&³§“r†³Pÿ††3#ÀŸŸ\!n|úã;øD?tR}§ÐNÒjH«a2$¬¤`y±¾¶úûŸ´¦M'Œå¥­Õ?üü½Yý¥aU\`¾;¤ýŽÁàb}Í`Œµ1ÞÃjòŒœGøhU¶Å¯ÖNþê; )¨†|Q[Þ¿žüõÿ+•¹xœUŽMKÃ@„ïû+Æ¶VxëQÉEW$CñzÈe»û†¬îGØl  þw+X‚sš†Y^•GÊ±K¼îå«9ŒLµámg9ÝáyßÐíö†b"§2'!ÞëFÊú¥Z¬Öþ3³@f³9©Eò Ô«XàéP¿	áyŒa®AÒD=VÊ¹?KÇÉ:Så4±6|(ÐãÌ‹Î3ÇRF=ùóQ•íy–¼:rZ_µkPPžQ\ow(Î±ÏÞh7”øÄzÀ×7þí–hïÅ+·W’·HxœS]kÛ0}Ž~ÅÅÉÚ&oÍ£YFÒ¸ën¶6EºŽ5lÙ“ä”òß';©—µ”	¬«sŽÎµ®ºð}þ ‘ä¨Ò™@ee,Q]Ï#:ô/h®iÊ,jÒ%]¸O¤X¦n,˜¶Ç Öúnsš-W‰…>ÀðãðBLS˜)î×ìIi“\› nS*¸Ä”©jø´øO±p<ŸçÙgÇ»Ü\AÓ‚Q}ñÃ«/“‡è~q}7‰ªho[wäòa…4œ}{‚ûËR¦‚Þ¶ÙÚ¤“¡ÉôÆ¤3FžäàMsËU©™•n#Í¹ËZ€TyŠþ_óñç_ïnÑÃXŽÆHGIõ›¶Ã›§È©û€ÈXáè{½þ£K‘3-Z¬÷Þó/HµUö¨„ŒòE©WHêþÍò:ªã¶ßg²RË\)i,9]<Ïž·€³3h.ªQ+ÕA‚4³à*¥R¹V,=a6b¥ª{ÓE´|è"#î;Ó)ðéthX
\ë2E#¤õú&©„ã8S¸v†Îßm§˜ÝùàÀ4c1¯ñ”´-ŠÈ¹eÌe\Oi]ø#«Kt—Tdõè’µŒ~¨Ÿ¯);m±TÞ¢Æ:ñÔº>f/pY®HÝÿûÐ½»)p´¿PÜÒ½Ue»ÍxœµZmoÛ8þ¼ü\go›–Ü4Ý^›»..mÓ Iƒ$=`Q	-Ñ6YÔŠ’ýñ÷Ì”å&é-îvó!q$rÞç™Ò[²\Ìu’Füøñ…]èÚ4+y–©R>oM‘Ë³F5­û´=kšÊíF¯Ò,,Ä‡ù¨ªíg5nôðÑ“'{£±Ê§:u‹é(igK&´¦05Í¬óÖÂ”íuBŒ¢#•5Æ–n´´õÕ¤°K7š‘t5/6i¿6Í›v¼¦kæÓÔÍŒ.r—Ø€E¦K§ocµ#Äñ¿’ÃëªÖÎÉÖéZºJeZ6ÖbýTNl-ßÑÆTˆ¸‹Ö9É2Iåä˜­äV®ÑóT¾-¥­sÐilxÓ™·nKÐ+ Q†ösUæNˆ~
ÄRÞ@ÿ—¦ü¬dò">ZóÎu¥±KbùgìI2!Î­4¥kTQ%xìƒâV ž÷)Ït­¥qRÉ#u¥'¦ÐrY«ª‚Ì¤­ßHŸÆ*»ZªÌ k¥3.L±Bâ"c3Üâ‘•§'GÑ&mUÙº‘ÓãÕÌTÓ³`Ÿœ¬«¹o'²´6CÌ™]’!±|('¦Ì±›|S%…^èBæ6kçºD€"`äþÞ_Ó+ÙòB¼¯ýV%ÝŒ¤q-_¯6—ÓR9ÓE%ÄÖ–|i\S[yæå§G[ò ¨L©}0ôüC6®ÏÉ#ý5r/ÝK%âÁ{ÀÒð{à¸%Uu%Û*W–?ÿÌÿ©|,Ý‡:
a&re[ù¹ul;6C®ˆlz~–R“F×Cb³4`G¹#'…ZìT\^^Š-¯¤ƒòMRØ©§ÂqFå;ë9qÈï¯ÉRÁc”‰É÷'áGd€“©â¡RR`ßò³/dBPaïúÙ—žÊB-”)Ô¸Ð`wÇò}¹ûàÁßX1ïž:›ÝæœŽ”Ívù‘2¯-^Ÿ.e­+ëLcëR·‘„zã.–áÔ^lIèNa•œ­sšÒ‰L¥[Q$JÀ¢£`¼AiRÛ¹<øp:”:¦]à­ÔªO0hy…^ê±Qåw”ñäS	A$mÆÉM¡ØWié¯ÔTSfàOõ¯àk}­æU¡;y\›[DcÓAÇZU’ê•Îm­¾#•_ îýbååä.±j­ŸŸ½â2>¿¼Õùa<AZ;ù`¬¹Ø€ëD ÜjäØ” ˆN²»‚±—¡NÙB#·ª«éMÙºè|Ð°ö.³‘¥ˆ@N‚°ÝçÝ?I=×5„HÔâºÇæzûýÙŽCÕ4µ·£;%k.{æ &¤	Eßmêxn¥¹Nt¹ÉDÞû'þZî×{21·p·(EgÎ¿q‰|§U%=L¢<Ê¨W³Dçí+—Zç©ü	…ù2å—U§ôîÀðîˆã¶lÚMCeò§ÀøPÊ\-£Ó‚4C‘
„æJ* â5# s^Å…±Ð°xŠ!Tà’a^J²“”õ\å†Jj'äîdù*¤¿$»k\û*¯uiT1j£Dë7^¦¡Tóüñ#ü©çáÏläß{òxˆàYêºÊð¡Ê?ÒèÜÞÓ×·ñlÙ.à‘È3ñõÈ­yßÅÓÿüœw¿ÕvŒì3Ù×ö6Îÿ•¡Wu—Uõ£ªò/`øtSÃ‰ÍnsçcØ±ªËôúNžÑŸ»‘çMÿ\ž»zŠ~•f^7»Y©ÿ\ž“½åÏj>_Ýdùÿò¤Ì=ˆv¬p"âõG}$ÉÚº¸+0ƒNý_NSwäÉÉA*×-úz³Ç¶fFYa„Rh` &Š@H×à3gdê&1‡L²›Ê“°†.ÒN|e]·4ŒJ¼ÁCQWÜ“©nÂ¶ÞÛ‡)êTÓ	øã]oÀìz:ÞsMHÁ3›ëô[Ü‚’X½o=g¤¹¥æŸÐØß:n|¹§uº/íñ7ËrMàŒ:Ò[cA·^§7ˆ@2ÔØ¶Ôdü¹uu$2¡F„ÏW•÷(l‡ó±Îs~³Yƒê~PÊ{k™J¯‡ÓB­ÿ)Dö¥¶žúç˜OôõÈo=yòxow´#6{‡Dq;×J:b:¿”LVïz/(ÏÞµµÍÝÍhÇek‰»G$çNÌ xx¶îÚ6;Ëh²{˜¢0àž?éÇ*ß'ÃBP±Ÿ+šÂ€ñhøQ²ÔË8SŸ€@v˜:WåH2Sk|¦5UÑNS
ÊFgiª©`;U =h0ì“cáVgr?*ÑÛ”š$ˆ+èïï1†ªRú¹”&@9…QkÊ¨Åœôˆ Œæ-ä:æèØ³ñœJhîr<† %™ÃÌ|À«jP†(Ñ€Òp“ÕZ•ñ*ÌWº.uqÏÉ{^|»[bG0ïl­²ú†&,áî•ÌÂíàÄÔœ‰Œ2hž-‰”cÇ„ºiiP† !ÊÃCAIJ¾Æ&Þ—A	¯,Gó2e:KåŸ|TÑÉD =8<>?ým@f²‚ÈFrZòd92°À¶ƒ?Y9ì1åyÞí³(
­AyáÚq”x»	r-Éèô–Ïn8Ã›UE½p_p/éÜ â,ì•Œ“áÝÎ°;`ï#$0ÒVàÌúëaH+!HÄ(á¤-9ó eEA§'>&BÄLmðÄ’æž”¼hh5Ya(BóM¯
£|zƒžö<EM þD“!æ š  Qr@§,“·vçù|ÈPHÙÔ¾òÜêØ‹Í£0ûE—¾[ð1£j:]7ŒLo¹5˜8‹TlÂ`ÁFŠ„;³ÅîícSaž¢êâL< NmË¾-¬½rpé•æêÉ£ Íb‚º‘“múíÍfÈ¼û÷½¼žW'òýlžwIˆsßÿÝùGhü\R,8‘áœU9ÄÄ¡þF uö"£ŽÔPCàÇ¤SìÌ’Ûn€»\)'ÖÊ0Oqòl¬êÁ“‰%Â¢ÝµXÌÆQÜâ†A*º°Â®²Kþ 99Ä{²S'&žœD¬GÜÎóa•ôÇ¶>]b0­1KuØ1ª«–7ÐØúÁ¼ê‚†Ã¶æ‰Qv™®)l€&Ô¦< Qg$a8<[*ÊÌÇ„ÎHø¶ÈiFÃet-ÀzŸ¤±5ÓAnàØÂÃ «µ!×L+:í¥£M¢äexE×ºä“×®™b è/$%‘ëCÑC Ÿ0Ñ¬ØF¹]6»tãœ—ë^ÒÁÜîÏ§mOWù˜–^ä~ãÉDÐÃÉaüîíf³ÄD|3ìSÔ&ÒŒOIÄV‹g"_½¼x{üââÕÛw‡b+ðí?¸HŒÖdBpâÂ¶_½¿#¿~¶MÞ¼<<½8úðîüíÅ)þÙé`9(³¢E- íÓÙ@ˆ“w^¿=Þ>>8:Ü€×`(¯ožå`g(~xñþèèàøåÅ»·gçÛâ‡L·œˆ’öHÿ¿wú¯¿¬_á×_z¯o¯ãëß[zx½#€:b%ÔLúâz%.‚ÔJý;†™ZÄFó²b³}	‘òjÛ)ƒ±¼æ˜úºRÜ)}S_Î Ü1¥ýLÅ±>dp(ë„¤|aº2G—$Xp½iÒ8MŸk9}E/Žm!ÄÀAûï(ZpçàÜ{~x¯çw'²ß‰YˆÄÎ°„=] vt{«ú±Ì‹«j†ëSùÛ+jìüâ•ìI‡à€zXÝm²cnPù¶„«?È2ñ-˜¿Z„ó©Ãk¸´iLå8:x”òÏ¨[)ï5þ
¤0ãpÑÑ–“Ût=S]M)åÄ Ñ<
F¨Ilc<wâM_*ùl¦3cš¡"qh'zKC@Ð8Šnfjè˜L€dbxîïtB=™DèHá”n©¼UjiÜä£‚Íéì6x„p¶DS…A€ƒXCÑ#á»yÏ‡5¤‹&ô%&™¶¤«D_U˜ÌÐ@ßØ%Xˆ¢*æÙÒk?ôËq­JŽ`ë‡éœ¯º ã0uw5$aKÇ=nTY†œ†™‹ñ´qª'ZÚð</~„ïÙ––ïT8ÂlÝÏ³}ÙÝ„±£ú	“¿É(ìt™­„ˆFê]1ÁæÞšRçü½)(ùIØÏ@º.]Î)¥|†™/o³õÑjªçü	ÇâQºûK*ßh
ƒ®x˜^Ã˜ÂR%§IŠ¢Rø½Nþú,î£ÓWxF‰ï:»žb† Ý8-Ç<!ä>[ÞøÊEÍ¦?0Õ’z»f‰]­|ïF)É1ãƒÄÅˆ¦…’;hÂ7´+ö½}ëûçÑ0äRSNjä¡âs ßä:HM£¯ïA0vÈÐ¶ óýÞjf&Ã%:žŒ-úlÊy'Â’¯Ý=ówºr¨L[ôZÔi:ÊÉx‹Ê."ŽÿxìRo^>¨€Î 7‚ÿ‘­$UR©yæÒY3/¶ÈˆÈŸ(}Ý×½–’äC0êÚò”èòèv£·†JŠ£Üâ†È+)ON¹G•a‡›"Í]M€Ž¸°>>£Y²p¨ŽA:(ñˆÉß:@Ý1d´ûtô÷‘¯Q	Ù7	öM<_ß¹Æh!ÉÛ*TB¯ÀXC¬0Â“—NNÃ!Cl“|T9ûºá†QŸ!P_å!ó§MsP{Ícû0ä•_B Àôår®\ã+3‡£¢áÚŸ£1R5fî±¢­0àh5ïŽ=fp¸—ÃÏŒÓUŸ¯XãA”? h¡ú­T>÷ˆQJNNYÑHcíüZßIˆZkºó~e1àÈÞßÏßœð÷q9e	Rdý•
> å{9‡Q¾[òƒÑ`-/Ëµ]ž=“ìk))ÝÌþÄ ëÐû@5O5<›hz”$ôÿ„â¸ÁŒ yÇo6AúF„ÿ–5öyb‚¡F=O°OCJ:E×>ÐÅw°ý–¯lÉ×VúS	{ÓçÑ8nF(œ²©Cˆ¥»çÅNo^ýP…Tô™Ôe Â6î“øè]þ‰(Ÿ´.Ü÷ 3¤?Ôf:¥KCJ2Ï¨¢-I‹Âg¨ÇÝ–:µÿ ÞµQQ¿?xœ]QÍŽ›0¾ó£œZ	mï½9à«€‘q6Í‘€	®Ž°i´oß’ÝÕVBBž™ïo¦2óÕzoÝÖÃ`fs~ƒËÜLÁt1ô³1àzh‡f¾˜‚ƒfzƒ›™=Ü94v²ÓhÝí-ÂÉ0 w}¸7³Ááï]käƒÎµËÕL¡	¤×ÛÑxø›ú‰Ø|_E:ÓŒ‘€zï-¸Û0¸%Àl|˜mK1Ø©—Ž<¼·G{µO‚Ïö2!éâ1ùŒáê:ÛÓß¬±nËy´~ˆ¡³D}^=[3
süp3x3Ž2Xô½fýt·Îõ-4<Wä©rÜõkë£~™'”4+¦s¸²UñiUh¼wãèî­uSg)‘ÿE[ÍÙý5k–5L. Õ‡:ÀíóªÏ–šq„³y.uíQé=ÎLò>àám3ÂÍÍ«Þÿ1_P?ãPË>2ÅAÔP)ù*RžÂ†ÕøÞÄp:“8¡X©O wÀÊüeÿ])^× U$Š*k¢LòC*Ê=lWJ¹(„FR-ŸT‚×DVp•død[‘}Š£Ð%qî¤SZ$‡œ)¨ª’5GùiKQîªð‚—úU±üPg,ÏI*bt¯È$²:)±Ï4d2O9·±mÎR*É™(bHYÁö|EIdQ=ÜÁ1ãT"=†_¢…,)F"K­ðcJ¥? GQó˜5-d§dG´NDÈ•q%°ÐªáËEp„Þ‡šBÊYŽ\xžòËù^¢ÒÜFZ½xœ…ŽMk1†ïù=ÌJ¶=
{h]a)âZ(ˆ„˜Ì†Hš,ù8ôß»ì©±ï˜ç'èöÍ7o­"Ÿˆï4ùl{KqÛ}Ëß/<Dîd¦ÈX
%*Jð\Co¥êÄ`TJú¥³)Ok¡pþ‡§—š.ÅÜác&zž1f{0”E²¾ÂK±Nçßpu8)pº—Z‹!†+©,d4ågü9UÈ›õúýS´»î(šÍÇ×¶~Å9€“ÞiVpB…cÕÿŽîxx¬ ¯mÏn‘Øa¶vxœÍUß‹›@~Ö¿b p¨Ó^ûÔ#á’Á˜p¹ômY¶º&ÉÖ5\9ú¿w6ê^”¦„ÀA_tfœ™ýæóÛÝËÅøK?â	ë‡)ŠgœÉ0]DýÛàM?—ý-UL‚7°žX¢èšÁ[4µ7f²R$Šçö2W¹úµgE`ë»WŠ”ef»—VÙÚq„©×¤LâÇ‡¯&çèé¤™A¸ðÝ.U<.dŽ~R¹N|H6zè|(”,I¾ÛQ‘‚WæÃ~[®¹ ¯z»wÀý|6Åc…ËGƒã4èàÅ‰6LÝ"ZMÃØTT®#èŽ!²]Z¸Ç'¦s‘lË{ÎÆ$Œï£ÕxâÔ6ùFäâ”ãÛ6ÇÍ@Õ¥¼–bò™Œ¢p´lSÝD_(§®eïpšA¯§‚!<c–èiÑÁbË:6l»ÇÀÆ2nf\ºå´À­#¿ïº(ç‡9oãtíÎŒ¯¢¨;ýruZbädj_ÿžZphýSžÇ¤ º!ŸFdô0]â·©õ;#¸§¹î+Ãwµ§L0‰gly¡ Ï5åÔ†Õ;ë6þœMgeÜÅ·uUIT‹Ç·ºâ|-–ß·7»†'Ù™Æ³·âõBZád/)+4ñCp`²Ð'ô×x9emÆë3·~i®+Žu™eÕN`54ÚjøË¤5F½Â!ç)^\9Úrª”ä?KÅqœ$†\º.¶9WW7}~Y§¡Ÿ°'…÷#rçÜ4wF…ê¢¿ü's0¼)xœmRQoÚ0~Æ¿âT^ì´!]@<Ö	mÓ†TFU^ÚMS”Ù8)ØÈ6”níŸµ}‰ó}÷Ýù»;g	,®?Ý¦W$Q;L§
µ§ŠÐ^À—ë«4ï§Æ¦uéÑB’±.UZaÅÇùl6ÿV|eÝ Ic‹	"-ë­B;oI/{«Ëy"e©3ÔŠŽGouÂŽ…&77“»b1ýþ™—Ö
àŽ~£©þþ£þ8ÿ)Äsæš4ßŸÁCÈá{—ÀÃï‡æ{ÏÊrÿ¦rß(bQçKOH×1aKÚ÷óÂÃzM¦°Xª~Îw†$¥RV°?¬SãA”là=D~ÄXÇ¢ßZ5Æ)äfË“±'Æ²&R¢s0¤¿ÈƒÅ%¹0j¥ƒúydG°0k…»°$UIõA?›Mç½¸—×n‡ƒ¶Ûáà¥[i´ó°3aµT·lyïÉÚÜŸÁŠ–«ØP AòªŸNŒ¿ðœÂ;!Zƒàü`O4%a<
xŒ·4céÆWQ±¿Ê°¸¦xœí=ï“Û¶±Ÿïþ
Œû¦w×1Ÿ÷½§Äé¤iÒºuí¼y3oÞx(”XS$CP'+Mÿ÷î \@”î,éb79ðQ vì.vÀøMÖ,Ú\êu}µÐ
ÿ;ýzùüOÿ›<+3]<ÍuÝ—E©»‰úóógÉÃ$M—Ti¯»S(ü£™+ÄRé¾lj£Š¦SýœqaÆ"­ó¤*k­Ê@Š4Ó÷ìJwkU5ÑÕZMS£sÕÔjVö
Ê«4Ÿ:XÀþ¦+(ÿ·´Yæ¥Qoð×GõGoìï´§Jª æ¾úë*}øàòñé)wïüBýãô¤j²´RIª^g‹ÜœžÐŸ'ç§'gežd}WM U[¥kÀY¤XµJ§Í²§ŽeMÝwMUéîŒajsD.´i¡ã ©¦iÂEo
«²´M§eUökÜ¨r&µiuÜÉÔ³?~¡ÖR•¦Ç†•Ì½µJ«jÀun.€V}šÍuŽ¥‘ºOJàTØŸ§§¾´|x©{õ´Îu«kDzÃ¾–M¶‹<Xc44ÁX¨¼Y¤e½Ž(ì&u Ó ØrþR©ªõJoªƒ¶^@ó*× WÅ_ •k¦JØÃ‚ü%÷M$Œ‘Fe‹®YD¥‰O$t§†B1«@“›É)””¤À7XÕcxö–áMt{ˆ5Èß¬kwÔIƒJ-»´†Jg]³l½¨Ì4 Ã¾DÓÊ[×€t÷§ $Þ€0\•, T5³I§û®ÔW )5j¯T®ºt%ZØv:/³>Vud%2*Ð:[«VwØ`$”u(@ê>Ig³ë±PQE;=Cùw¨tg ßˆ†‘Åˆl®…·PÅ*,W¬\ŽY¤]„äå7_¼xµ‘Ÿ¤y.¨•ç%òônP\wš‰Ž’|¾ãá6RÄLÞB”TÓ§ýÒ„à®8Ý•Š\%u‘J*_2twÅRFùeÆ?, JHªgÙi/™©ÇÊf•DYäûX92ƒfÞ¬°æeÅšÑŽ¶´mÁ¢‚c9ådTEÖ6¦Y_B£õÄ}@]EÙ-V)Ô ÇÑ9H9 äÍª®š4Ÿ¸	 „ i¾(ë¤MéçÝrb–ÓpeSšål®ž~÷å«g¤4š›–4:[v üàÊ%}LÐ†´O7u¯ìtv5IÍÖ%c°#º˜xŸf?,Ë	F¾£‚	IL  k8Šº‰û¸P¥Áë™Ø¿7i›®ŸðŸk ²¦]T6%ºP
î%~WK3JÑO^´Àï‰ýËƒ:˜ñHvJÑ•Ñ«¹îlAh<*ü%kZýõM?e>·˜-ú‰²]ª‚béL£Ù–@8:øf‚_&rÎ”ã†ù>‰™à ¢Àªlžv0  Ì ÊÓ¦éA>­vÆ=¦+L/åh/Àše‹ŒHtQè¬4P¶ d[ÈëIÎB=º²…ÎQ§DCyä–”é ñ88jºI›˜ˆ4YÖeOŠ/êå*Ìêo³ª¡•À‰H[”³ÓÎ¦ƒú¦m w=am­^WÊ¥cÁ¹®ÚIÛï®¦€· $&ëÊ–g`–É{
Dqê|yý¶­àÇë´›-QHŒ:ûÝd¢&ÉçPú¶gê·¿Å6/»Z=€’e¡ÎÏÕ—ß¿xñÕ·¯Ô“'êR]\|ŠTŸžœ¼æÚ§Z%^ÞŒºGõ#B›rÏM Nóé	ø™áxþ¬š.7ÿg+I.ÿÿŸà,@î¹õÞ.àÛ¶ÿu™c
&ØOœŽœœ|âù1V{6A:WkrPÝ\B-çV²ó‹3HpF’iY§Ýúl’/-yGÝN<(==›¤U™…PÆ5_B?ÊèjœÑ(ð¹ô ã_ŒÆ
:£ï<0 P°­¶‰\‚kb « mŒ‹ 0œì’ ÊÞÁXËp IèîI¦|ú©å[mB®ÕÆò¬6{sÌ«mpIŸDFÛ5ø§ŸÕ¦Ì?g : ‡Äð«ƒƒ¥ Žf± 1í‰…á5d½æ,/"mojÄ)º~»)&èÈZ/J¨Ïb+9e@Â¸­o¹Ä‰»­	(‘û½Ã€õÊ²&`í²·hþ;úm[7ßþV?ýÝ4õORÌšm€Å‹L7mL(6­ZKM2Á"!‰XÏòba¤˜`’Õüy4½Ñƒ"§³D¬£¬gjUös0o¥Q¨En¨D2Sb9W/ýZ Y( üQHmÉ&(<P	¯WI
sÞkÈt”v§«ßEWÊÎ˜Y‚¯#¼òšC‹)V¯âçÞ\æ£lSˆÏ2wÇÈ,v‰äX»(×eO^÷éÂi–2ücoÚ ø(Qìz+˜‚€&y@>1l•’CO™ b1T’’…GííI”C»"):´1èM¨Î¨œUcöûÃR_wÎÂV–ºN0òzo
z”#éw^å/APÆ=Ë-b ¼KÞ‰=LNõ^&ÿÜ[PœuF¼àîÔ@(âýÁ¡Ö't[€3H‰Î´?ö×ŸæG4¥)ä@ÂÌ¥L¨0ÄAgi@»åÍ1÷[¸˜o ðkÜ
Ã9½ÊS!gÃ[,NK´m×ô:C²ýaÔ`·¦^” -–U_¶)Lxû!í`ö0jvÆýþ¦	žáÒ¡üf±ð{¼R,8ÑŠ…ûq,³ì3ò™ÒCéá{*è!;Êôð[Ù’œhéá~Ü
=ìþ¹ÝI
ö_n4%õ (âe14§¶¸Rß5W ~ù}å[KdJŒæ-`D-°ìvíÍQãI.#)îu„1œèõcƒ6·Å~±lñÆKÌ ÛX?¿p?Žê–‹Îúð5HQ±Ów#öàŒÍ¯áÀ#’‹B1Ã#Â#øñ,y4’´d’ûIrHÄY	Õ`¿ßÓ|Î7OtB´nèCÕÌ¢@Šë |îï¹73ÌÐà
å´ÿV/SÇÁÈ#' ]é `‘éº×ë#áCg9@ÍÕN@3.Ã3ŽfÂx 5Ï*h‡Añ@ïÎï#ê›®MoÑìâ€]„Á2šea,G
ÆOÙNH6“÷˜”\@à‹â¯x«½ªR}úFÛðÍrØf©#!TáðÝ¦<}ücœàó8ß,ÏGc¸®C	ŒÞÂ|Èö\ßH>HM –®Ôh•Õ·ž;Á‰»ßþÏ7Õù"–Û09€×Ë2Ï"(¡^àvÓõ…Y×Ù¼kêfiÔWWc	» B}@,¦!<Î,ÉéQ^œŽþb6ÛlÈ•\R÷w(tµ®gè³a;«y	žÏCìÒ;²Ä"òƒdTDëˆK¤f&qD£äK±r¼ ¯ àâPâp=|™>6S’%Ücy²èøxÏÃ}ÎcùV•žÄ‚’Â#0H6˜†çìßÂßc²`,úöfÜøpi,çÝ¹pÒ}ø±d$ºñÀŸÇdÅ¿É8ˆ}ë¼©Z}Ž±rØ‹ÀØí*ÊKÏ&ÁÇK–•ã‘âc]‘ØåË8¾Óõ•_9ÿ3­œ“‡¤¾˜Í~õî×ÞInoa]¢	¢ûƒušiÊŽÕ2á “å^C	z+R¢Î2qÂ’8˜CŽ82á=­­„­‹Ë‚¶eß0£žø½ÿÈ6¸}ªp:±Äù&¯Æmß¸=Ç²Â½£8žœCëy3“¢â£Ípß²<RHN@7AåˆlÃR–=”-gT~ÓFº0›vò†vÐ"`Œsý6ÍÑ"åó¨Á\€ rx65nXT2`´U]ázª®tÖóšù•¨lÙuÀû`"èx‘.+øñ~˜ô
¿ághÕC±Œ¶»¬2]ØøaWR0Ú\çt4îÕºÕêEZÃ¼²æ‘»o$]ÑZ”Ãn+;hk>ËW——¸áˆïêòR]¥ÕRßG~çCç~»eÛ«+ GXå4º=¼âöÙ? ÿQ}¸²W»cÏ]Ç¦±µ±?öM[«ê»6krbð×¶IÃÿü»¯Ÿ^l@6½4aYà.ïSw[?ýöëÖbê©8G¹u8>ÀbñµÝ|ŠáÏ»f^NËþüù‹¿üñÕ°«·XcLm€‰àÝ˜ÊP¿¾ÌšVŸ¿üò¹kI=‹‹V'†ãO¹YK¸	˜… C%ßÿôOt–ù­­Ä+€šáØ¢½jK4!¢9Ž1wGw„dç‹ã
Ø8lŽ¨€=MÍÏ£1\àuï¨fœõóû¤Iµs<õˆ?]DÚà¢·­;·–€×Ãû¼¬m?ó ŸCcR ¸ž®W¬L%Ñbj]	$Túp¥~ðì{T{š@{n½‰8·CÛ"¡¶³ì¦ÏíÛp«úÚ½'p´À:œL§Àj™<‚»8Úï ,Þ›0äMÐéTÝ¥Fÿü‰ºIšÖËÏûÐá.áó—X’ý‹¬[·}3ëÒv–2F¡Ÿ=¶%:0Hx¶Á…’'ê¹!0ÿâÊiyT‘—•Çˆw!kŠ‚‘Ñè¹„QË} Ÿéç#÷ó‘rÛLeT­m”Óo1Œ‡=Ôä«Qç˜¤­À…0\[<ÍãÒ’‡G–¢þ°[u.Ž³š±äÇõ‰cÛá‚5¤òàÀ¯Ã÷m%tmBY}&a§ÛŠî­X‘=Ä«P=cò¹"d/ŒÌÑ-™xMK4§#ÌVšÒ€ÔÁþ"ÌgÑÅð§Ðñ78K¤QA‡2ÇZT÷GçåÊºå…ç˜;.r,·üÚ9·XÉ®“ñÁ`w8·ŸV¬,–· ï8ÜK<0Üàèeý&¡èE(ØwimÈR•…kÏpøZ¨ ÛjÞÕ vï°ÀRjBî¥ÜÇHÚÃƒÕ.–.„úZÉ©ð„sÖ5Æ(ŽM¬˜
f‹£[8‰:ã}K$ãÅòqphýØŒÏ“çGìì¾±4´~¢ÒÀ{JÖ£qtU¸E³V¤‰6^¢òþþ*Q¨¯Gæ¦ƒi›TÍŠî™NÁ%2àRÓ}u¯=Ä¹qøþ8ÅÃ˜1Ké1Š€ŠTÃ7Í^,7* „G‘œ@,¶ÉÎÈ oÏÙìÞó÷Þ’ô!ž	é¾t‡Þ3µFn3Ô¢l·Ôç~ÜÞ¨È{>}HKë#„»Ò+Çð¦‡ –>mùóŽÂ$‡”»'	fC¯ƒÛrÂß…=ÀG_\‰fÝvÁ„&Ûõ¦ËÛ
,ìœ*ÛO¿G!#éÌ²–í¯WâE5è6äEÈ Ÿ¹XÞáÜ²X à•.œ°ë?fd¢)¿›8lâñS
‰+š)`‹¯/üç K6Kô† WXŽ!¼äú‹=§ô4À?Úÿˆ‹=Ú€$Vxì@pù€~²ÁåøEâ­(.¹àãM—Å.2\Úîþ~… Äå.J\Úÿç&
I‹Ov¡ø„þ—D1^„p=Þ…ë1üï¸»•ÝZì2m¬8}ª(ŸðåKç¤rP4×ºˆ|;îø€t›Þµ[W×(^Æ¶d@÷¹K‹&tIÕZñ5@®—emz¼K
F…±Q‹%Íþ>cUøy4ûãšÄV)të¤[Ö×•Ë¯E„~Ð]Û†C¼ Çt "6>uye	ÖE@XFÃ›};ð`w¹ì*D2l|0%0HA”ÌB³7·'Ïª lîìÕ½º³WwöêÎ^ÝÙ«Û´WÂÉkA1•7‡*˜@øékÿõXØ6]ãÊ`d[¸¿Bü 9­ÛÙÁE(Üi²¦R¸ºª‹wšA_>ÿ2±c¬ø©ýÖµiã·¡&¡¿ÍÆVô±Üµ>L©Çý ¿líÇV<}ˆ§¯Ž3—–Ü“ëAŽy“ñ–×€É˜ÀLÆ¯½™üoÄ6\šGôv)ßm9“Rrê÷m`Œše–icp™ÇÞF¨ýýIŠ‘V~ð:™HCLiu:øh†æ$GMÚ€ƒušìn@öÃ-ïM÷Ýš•3ù¢Û÷¨™J#NeÛ½ÑkÚ‰Õ‰^´á}Á5*·äØÖ¯ÛØ5—80{TtC°/û!¥ òÐÝ¬,7ùÒ˜ë æÍ)g5Þà¯ßÚ+íFûûzèOF}›Ø½qð,ò£<9Ž×ê:.æY,OBèìuÐaœ.Ÿ3‡¿G;ùóÉÉbÀs$)ÐôX
Ü½×£RÀJ
Á»Ê Çªé£òÐ5[F&W<Äá…­eáþ·ðìÏÂz¹ÈƒÓ¹v#¾$íMÐPÿ°¡.Á#"‹SÁü±?AVÌôÝ2³WÝŸˆs¼]˜çö2·±†/¸0¶Ý`,ß(²vfY{´ƒBïrE§Õò×h5¹×)T|m¡1ÎlòMX¿ ÍÚ¾Eÿ ›Sô›?
½´×ù·¸e«*Üº‡YCï/ŠlaÅlSQ Ñ» Pi÷ÀÇ§-ˆæÍ[#	˜}@ŠØl1¼?Øoƒß„?ö÷eójŠ$ýý'	å¦yN* (;¸Ðd †Ç¢ÄzéI‰±ÑO˜Öjj¶!å7)ðY“ŽdãÜßôBáW9qÓ¬¶BbÂ;(é:Ä÷Õºk´IøM)ZªpÁ"¡a|¶>ŠnÑy‚‡£×t…MYgÕ’®¬	.Jh–UNÞY¾´š§]Î~š=S=¼-ÁwìcH^€3`Ã›Ò«´¬h×ÊƒóÙÐ{Xó/…´Ò¦…@;¼)ù÷QãéÁRËtÇÃTóÛÔÄº©“«¦þWv«xt±Ô× lÎÃÄM×ÕÖh?ºB,›k| „CÁy%˜l	'„úîÐSÇöç#Ø]I§‹¤OgèWBÇJ{¼ìRuÇJ,´·­ãpñ-Ìå˜;”Ì‰œ¶‰ÜˆæÞW;FH¸ò¼Q‰›«µ­íÖ„±¨îyšñŽDávwÄ&ot$Bã®|1ÞWMØ•d‘š7[úƒY#ZŒuŠðléå]×=ªíÆ}üfg¹B·ÂWv	9É»ŽêôìU¸ôï <¸Ž ñøu…M\/7p°×&èrML³„Aoõ,ž;½±¯cár®5”jüßÎx*|µF\ñÇfÑÚ L|¹&ˆÀÃj}ýìžÙÁÑ‡Øj;æúã\z˜'ô­õûO2(l“-#¯ …^•¡W€0Î/²Fc¥ý›@£Ö|À%z’5Ëº,{àz˜ð¥!W;|rO‡sÙ¦9gä¶:¿­eÉâë‰àÃoŽ51pxee€É;Ù-¿-t+qaØá›[xF”o‘¸x_A„˜Fcžš8JÂVo‡ÍÆlévë<®¤Ç4zÑ¸ì‰Ç,áÏó§7ÕÓƒ5Û°dÛpî2hw¾Ý;ûvÑNßH¸u‡‹®„1¼.y×ÞÖ;"^íF|pà®eÒÖ,‚5€0¾Û¹ºÿŽR¨rÅŒ
eÐF1óÄ*P“6|Ø¡»å;`¿N×ŽiC§XƒfîV±Êv¨¤žÐ]¯§O?òî·©’]N¾UÑ¤—Ë ùn-;I¸Qûk–ÎÛ_Yÿj´ô“ŸYM'‡¨iû+Xnû+®¤â:SfÔªdÅÜ¸ûê«ªYñ”ápÝÜ!Ûj¬UIs©õí Nó‡Šß=~¼ù 6ž±)AÕf©¿`›}Hîì].Þ¥bSšæYÒ:¬:Â·êÞ“eÀõ.žë6Œƒ¸®ä@ë4õ("ÀømÈQa[8ˆðÎ‰ßÙ‹#ÚŽ'³"ó![
1Îö1ÞJ‰»3·d"xµm°llØ’{®8Yš7l'ðã=]ºå&bl»ìúÚøsÇÁŠ[™»£P\À_¯:’ñž:º¥rmK/Ý»ÅW.ÝqÓ'pg?Ø'Œp7½~Cšô‚¿TÓåº›I?áý‘ås‘:q<9tTe1 .3ßŒ–<àåÞù“sÿ”/¿Àå^rÏëÏÆ¦/tøG!­0oÿ»;ßí•»Ãµ¯ÃU•â)J^‹b¯÷È#çÑÑù*°ÉhÉ0²-ˆ7
wŸe‹Ç%# xíÙ-†ÓëÞko×BYŒÝŽŽO¶Ý§-ÂÛvçcx»!£‹.ÏW†—ÚmëŒqìø±¿ŠiäÌìæë¯þá.F8úŽ×¶£¡¡ [0xèõt;ìÑëvÜ²¼WÙwX@ÙØñÅžF uÝ´ÀPÔÏ­ß³ã‹‡Þï.¬f‡Ê§j“f§Ã[èE‰/²s‘žþ–,â™±xœuA‹Â0…ïù¡¹X!ÑÝãÞJÝBºˆ«°·Aš‰èFˆê¿7uÛâÞ†÷¾yÃ›ÅœoŠi¨FFYZô9ÂðÁ×#ßÕRž‚l>_0AÎ¢ãùVg;yU0qñ…1òÈÎ] $w…·Y¯”J¹è_Ùwsº‘ØåWnö…žÕ¿6­GA5ôv*±ü©³Bo¡Ú›]	±Jl!È×íÅŽÃî3¬J£Ó“ÄHhÞ¶T“°ç[þÉ~œü½%ÇnAz|¿xœ­Ž;1„ûüŠ…kô¸¨Xjåp…hcwœÉFâ’pøó§… …rv;³33Ìá°[eI
9 ÜjäH†ÐO`½+åx0’ÎK[GôEF†5¨V³ù~»8T‘%MŒ¯–À[Ê3Gàæj*MA¹}O9Ô¥N4Am¦öçt=Ü<‰¦€“sRšQÅþôøü|Ëû@h'ýRÕÖv ¥¦¡s§%×Ú"CÖdÄŠ­6³Lxœ­SMÚ0=“_1Ú½$Q­öÐm+U…®VÚrXÉr’I°jd;¬PÕÿÞq¾€=Võ%ž™÷žßŒÑÖËé6~)*ƒñ<CeE.P€ÇåS<ÞÅ¥Ž%·¨½QèA›0‰@ß×ÊÔqq*æky8iQì,øi “»É¦\	”ð“
uëïë!Gžw+T*«ác&óTwŸ/R¨µ*]ê"'EâŽk²æB!,W‹ÍÂçº0Ãá0 ·ék_Vë7¥¾öc1Ÿ²oÏ¾â{Œà K[F5$ÐzñŽ¥È€1n­Ie‘1ßEþ+ÀQüšÑbÚõâjžæ*h!]%Wð	2iN{µyš²çÙvÁ­Sk@„9øD=Ë«î —ùsn¡w¯íépÝD„ÑhƒšS×ÿ¥™†ø»!K•VpÕ”;§I7žçV]‹tã¬@ËŽ¨(UäÒRéŽk£ö ªöõcìpà¼„®_AÀñ›ÀóúÛw¡„e)=\¦¹*åcb5ªÆê*µîBF4Ôj|¡’‰!Ô‹r÷ï!42á&ê"2Ñ¶‰ßM(¦ªÝ_‘ú´ét•îhŽ«ÏV¹—ì´ c/¸^ŽœFŒL¢*ìnBªBÙ¾MÚÓuæÒìu<&µ~¤·œÙ\C&ô[Ç¤Ø›¬5Z¶ƒB[Œg³í|½¹ð”Z-™0ìà.ËX¬Í$e){Og]õyn—si0ðþPe#½ôxœÍY{oÛ6ÿÛþŒ‹%vb×8ë·†´Ým°¬Ã†,d‰Ž…ê=œu[¾ûîŽIIT’n° ­CÞñø»ïŽôô]]¾ùerx<ÎùäÜçqlž²ï//&‹ç³I’MB·à;œöŸ±–>g/óÂ’çÛ×õ©0X·æÖI6'³ ¾mÌ}Î§Åç”çíé¼p‹úìÆ‹‹†Ì2`¯úÏ²¸Žqï">‰Ÿ‡°Ñ ßGÙÇ¼­ú9›¨˜³Wl0Åm½ÐÍó). ÿ¾ò§>ß¦y¹zÁ#gÇc?É«¶˜Å—ˆ61Ç‹éÆ°||q÷Î'/&¬­-F^¿øæfÕœ]Xg­³Këì‰˜­cXœ"IWVBøvÂ&ˆÝ°A",²Ä|[”˜—’ú
Ù.	|¶É8wÜ0âhÔÿ³ßÃ™¡Æ;Zõ{zæ~ÿñâbUgƒ-6ÙÙÁHã«ÒùÔÀÊ$wU+“ÚÓ*Æû†—€ê;¾[¸Céø“lr·BÎ†4Áö^±ƒßf#„^°©¦_Ãôì€íï‹uì%Œ¿=O/ãE™Å§I?Žà¯û~E²ã	RšÄ›Ä@4f˜«X!æ™’Š„W0'YpºÊmM‘0Dà{BA@„ô,Õ!Îj™ ·QãPT)îˆ-+vdš²%+vË–ì [Îâ2Z£j¶I2–§®ÇsÌì™ðo AÎ9ÊdÂF[7gH^˜ý†$`„#=9ª&)Ë“l›è¹Þâ¾qr’,rÇ¥ ¢ÊÝGHMu¨ªp©<&›!®³ùl±³ÁW9£ßÁyzÌ} Çlã†9—£n^€ðd^‚6fEV*fô}Êð†Ü3Dðå†<eS¹HíˆŠ? îÿföÓÿnä¤®ƒEF‘±Lq¢/×Š¥0ÃÁX  ­Å µŽ<L#íå{Fy‚¡>˜ýG,û†Ö)?Ù¾_`^©[þ^ÿÿLýW¸¥OêÀª(´ïü1þ'w±dŒÌl	ÜX(ºð™·•q±Šƒœ»™·%ÏË4¼ñÈ‹Òá>²]/nÆLð@Q°‰§zâÈ„Y¾kúh¡ë¥—DkÜj>ƒöMë)§aûàž¨ñHg<¶/dHù÷ “‰ŠfÒcv#ú‡‚:šš«)£fÎ0–PH´I¾µ™Üê„|Ç»­-Ü$;Ý6èŠe ©ûaŽ*Šå`9² Õ¬ÕFM—!ƒî[’(âª€"ÉŒƒÊl¯ÀFÏ,êÂùèV7‰ó‚”>d(mîQ÷ŽU›ëYS§ý ¦íZ‘qf½ÍÕ§ M±SŸ³áÕåwgoGŒÍ~7;—ö‘1·³ú ²¡»~‚ùÁ4Ý"DJ1zÕ¦¤º!ÏØ™ðÂ ÆT5R7Ë¹¼ºÊ«§”+]ûîüâ-¶ì!™JüÔã[žôrm.˜ù‘bBæÛ¬B5NÊï•ðø;s#P÷å==YñÎTŸó;„‰‡C^†4ºHªBžÑ#`2­¢” …¤žê¯åy‘#ê} Ò‹ .ßžôjIxAUâ¯ª	ƒ,$î5J€Í³,	FÊÒÇ]v¤GÏnV¬7+ƒ,.pÐûeª@¯ššÝ÷ë½Ÿ\«(tÂßô	óxÕÍÐ†`q÷“Ø¾ÝÞ¤e¶ƒÿÐQÛj^È)îŒ ÒÑ„:Ä(41Ç5’èŠ&¡3eìV¨!îã–¡£êà!¶ØÑx…Sš9ZíL¦Ý‡tˆyë·yÃ´…Š¢zHÚ8€Â„Ô™à¡Pfû„ãzycC×­¦CDW3‘‰Tƒ3[&í+ëë›:¢¿˜¹ä;ùçÜ‰¿Ê°w[žéìI}^š0Èÿ0Þ`,b h½$äÌ‚còßaÐI
p)ñƒóã›ï/~­
0¼d3¡Ç¦ê+Ÿgp#¼s!}|@ØÑÞÅ–Ñs)Œ~‹E_+EƒÞ@I²!ÑÅÅIž¹xj":™³<awœynºlxø™•ÐnÃbøek&wTP?@GÛQ/iRã]¿„`ý ðÀÊ.™ÔAæk ›GŒ%<¿²€£êØ Ò4|RÉ­ÞãóU’sÀ‚¼R-ø0«¦H3h*'õ'ðsý¦G%ZeIvR·ØÂ¤ÌO)f
³_’l×5LË<›æ@ãÓí¾²Lå9°@g`Ýx{!iLVÅƒaÌÅÛ«6WäžÁJœ×e\”‚ÈÀò¡ç]Lî}Â«¸0c·`OÄÌ@D6ãñ.È’+%‰@MÕE&¶áàòìÜ9så\~÷Ó‘qCýf3Ü`6ÚP,›2ÀYkêÞR:súÑ¡o ªæ4KvAn‚Ý¹Yà®!a¯KÐ1)CŸÅI!Ù¢—ŠH7ˆƒ^{M”Çöþƒ¹Å¸2]¸Ï!w †4T¯løè6¨¡QaÜTZ®Xptô m€¹i™¦]XëÈŸ)mñå‘Éx º$ÏIó½Tf¡]Ä0¦_z…»RÄûF¢’eLš&¯^b½æõŠw6c÷AöÐm‚|Pì&vŠ9|~l¬ÕŸ¸é¤÷t!³ª:çt£|DL}›@Ú¤(™#M]fñ{1{ñÍ˜9âOñ†nÒš¾°Ñ5ýØF_júÒF?ÑôIïËZ¯E 6#¬“Àþ²ð.Æ†?áàO’¹Ô-íƒ|'ª‘™Wµxëž +½ÃÈÃÄ¢“u-Ázm/…‚ýTV=k­«íC§«£ëÛ¤åk\2*|?«ßñºo–vOlY™¼v;èì#m_Dõê_EÉ^G7:¶K£ÔW]•jdD1#„ŒÌŽ­Ë Í€¹£|hE|#«8Ú|Õï£uéG7õõœ‘ûD.\}Ú*Îü©b–&`ÞÏrš‡½°ª†xœì½ívÛF²(ú[y
Œf9C)T¬Çqä${Q•èŒ¾"ÊöÌx¼¸ ” €’•srŸé>Ã}²[UýÝh ÚÎÌÞg<› ª««»««ª«««Ÿ>F—GÛ:M¢8-â­“Iœ–É4‰óýà‡ËÓ­Ý/··²|k–qþÙŸ“4š-'qðmXq^~y÷½ö.Îó43_å$©¼Ê“ô¶6KnÌwe2-¨ÇâiQ†T«z½žÞ#àºöpU_â›­Ô]:ÞÏ³I<+ÌË2™=-–ÓiòÞñ¡|\ÄV(›Ï³ß}†d&QeiQK¨óÅ¸~‹ól¼\&“·;Ïßßÿ;Ø~é†MÒûp–Lð·ÛÁ—_~ì|…OÛï§ÓJéè.ÌƒIXÜ½ÝÙÞÖË|ó>ýeë/PŠäË¨°áã›0Gá"øßŸ­ÇËçkó_ãâ%=¼XçÅ8ú5eöR@Ý,àKQŒÓ¢È‹ñ0NÔ|QÌÃ÷cü'IÅË¼¸ŸŒ£|N% èü¦/æ9ÔÄ²Û°IÄ…i8Æoñ¸ÌÆŒozqºœæ×€þÞøÚP<$etôØlUqpþúl8œÆ£ëÁõp|qy}rvòáÑþgkky\.ó4XÏÀqÉoñdý¥»ÔùÅ¹³`š¥[­…OÎ‡‡ÃÑèäàt¨NÒ0Šâ¢Hnfq]ÙËáÕèdt=<¿Ÿ^ŒFzñEœIQÂ”ÝšeEQ‡áðÇÁùF½ÐËé-Õøûg1Ät¬?áÛïŸ}V“h>ÑF¸5'0Ðý Ç9ÈÌ$ŠdôèƒAïˆT6–8†9Ã`¿îK’ŽèUpòô"-oæ	ôT–?-ã%_Aåqh¡8¤Wþ(nãr<ËnÇ‹ð6VX~ˆËà4».Ã[w1N|ä&þ0›/àÁ‹øÈM¼Š„‰ïG…ôG'xx“å%Ž©‚à+'p3r–y\(øtÌ1[ÛŸÕb?´‹Ç4Ç÷@½F¾¼Ë³4[Á¿Wñ¯Ë¸pSœãùí\+ÎãbFqpâã6žgÉéÃÅy¢•=NòùC˜Ç8ð¡®Ø${HgY8q<™C•Á¨á¢{èçÙt\B›tNºýŒàËVÙÐÚ°,ÃèÎÕÞ}©mï/q¼Ãä¿×Xþ¯ð.à;7©IG%|‚S­¹Gâ=›Ö´R…ï]E¯â(®«ø>ÉËe8³†ö5{›üÒi_ú9O,ÒAlÆ[g'õ„‹b&Ù¢XÑ“››åt_	à£,ËoâÙ,8 #Î©Òirëfª,Ÿ‡%Ö­ñ½C9_3U£ež”VûFüu}eA³…²`S‹0MJP‚&¥#þ¶^ÖÞ0=¾´¤ÃéÁ Ñ{*
zê÷ Œ´ØC ’šÎ–ÅÖáÇølpÐ®Xƒ{ƒÏ8Äì*®Ì`‰m¼L£,ß7Q¯ð%òwÈu½UäÍ¤„VÇ!{S[”ºLeõüƒÞ:
MŠ¹Î€a	_Ëú‰Â]ÜÃ_·hchºŠÁú¿gíŠ­/½ …RWvQU6²dýºLòØ]tÀ>Ö×:‹ám]µôÑQö>ÎIy*©B/œ£µx4†jaCý–‰bÊš‡ÿÈR]¹¦£QÚœŒvi÷œÂÅ¢Z÷€^Êyõ™²_¥¿¤  ˜õç0ÌqÆÊ‰ŽfR@|£YØ£BÀ^TŒrPÛŸ3ët48?¹[z<B•ÕW£ñÙ`ôWËnwž_¯ä7Ã ‡RhéÁr±ŒçÁ]X)˜ypÇi hŸ|iËîZ/Î.O‡`A^‘ù®Ws–¬ïq 9V²Ât"Œµx”?]Îf^užœ/¯.~°j“5$ip™g·ÀåE§&'§fO56á8LfžÝt~´zOõÎ³­£8œÍ²-ÝÁd‰„ÚhêÈI<—³R¯Iq/0µbàûV5?Wà°®N‹ž¾¦7°Â)úÁM–ÍX³töHüKŒŸÞÂJ|:üín°@[6í¥ÅÖ÷ôa#ø"Øy×Jâeòü™Ž>0¸—ç&•……¹DÞ6	ÞID ÍI¥d7?ƒ	6ó,+k>Fâ"Wg	¬¯×¨èZØÙEç<âšÿ»`Ó‹l-–¬1ôeË ~ !Ä|aÂð÷è3.ïþ$»‰ô¯F¨w¦álÉª}þ¬‡èú°X.ÀèCÅÐ6½^x½±ñÒ	ÔëB‚¤û#YNJàuÀ¡Ú‚ËÀÁZ€lAÝ^‡H”ÄßXÐìR
¦P´àhè7¢i-5x‘yä?Yˆð«JhÃØH
‰¤ðìßy"*ÆŸ~…@.2îÀbìÁ¯àt‘ˆž\$~E&3ØƒgËÂ‡eJÌ·óÜ`>|ïË} »˜Ö YL½±DK'xïã¦p·ÞûãÈÜ(²TÔô~ðÅ’%Ù	¾o. L%¤ÈB¢z	X¿çR àƒgÁû9˜òÉÄE8ÿ´AR›¦®W`‹m¿ßÙfSØ£šÅÃ­«
xÍºÆEèFú£˜¸©˜t bâ¦bâOEöP8ùä¡`(Ð¨öÅE‘Ïxè}¿)ÎPìí(¢F¹T	ðÓ[‰-u-¶äj¬£i ár&_p6">y¶6·Î©À>ð‰0q^ôÈÊêÛ}aªI³‹Õ6Íò —à~ËË 	¾­tðú‹/PY3Ë/øâ»  ]¦©À½þd{÷=ï%zõ6ygÐ@ÖŸNƒ4[i`Æ§¢”·N½’4¸»“»÷E"ÕPZõMý@˜%©.¬W¶è%[n’‰j™—až‡½z“„}ç˜	2þKM±ºé;e\±þa~£s¹ÁÒmà8,IógMÿ5›áð3tô—ó¢u9¢‰°‘DÉI›©Äæ«`¾Ðh§ŽÓ
òÖQ×±ÃBàÄ:ˆu÷ù«ÓS„á\µþÏt]ŽÓ4czãeãÊ+*ó™½öÂwÁ&þMýH…z›÷ÅFv•àÌš5Ðó1t[!-ŠIáX•î•¶õ}©T¹UlÙTlY[lßÖ–bß\…Â÷“4¬)Dßhài}Y¤o¹¬`ßÁcëÔ`n}™§j;ÍÍoÓ\”*–7é¯6Nz'×µ0^{»AÇ1È ðáíî»àÛoƒçÁÿÑßîÐÛæËíw¤DÄÚµH9Ó©Ð”i[_nâ„Á]È»¡ý@þ|©!™+$ó$s…dn"™æ	tN#ú.êHXÇ©&±~ln–€1=ë­:ó¾¢0Y÷\ë¶"(Š:ô¥‰©0h!ÁÆÌ|Žàsoð)×lÚ’!®Xà·Wä_(„ÿxÁGl…Ë*‰ø·Ý\›”…,…~u¥å¬fˆØ§†1Òµû8·l4Î*qî‰!/'{nô¥–¸Kì‰%ãÂ‰?xâ€°TsbaŸü¦PžÏìo|ðC™Ï02I1•xã=E¸Å†AN}¤E{p9F6§=ù¤Üq³~ñG²[‹d×É^-’=?$¸–Îe×Ò“W¹û‡(‘ÅðÁošÇJ6Ào¯2Y¹y?ø52¤Å$+¿ýÊÄ¹V¼JMóùÃºÒŽó¯R³E(Áo¯2ñL›øà7Ü‹BÉY|ðë‹û"RGO~å`2«røäUî!*ãùÂ9èì“ç©Gu@3/§¶g…s0|ð”§wóEî–ìôÅË<Ik°`TZ3Í•WJ_ž¶ð*¹”%—>%¥"XÌoÜJ‰¾øD<)¸N²G‚¾ø!ÈL²$>øÍë‡å­š×ðàUê—Ð-¹à½±wQ9wó}ñäß´œ»»¾x"y_‹ä}3p§ZltÙŒÀ¿u™
7Kñož]<Ç%¦»é“§%4À“Û¤ŠK~÷duòë:»‹¯žê/%[ŽKa|ð-ÆÆJôžîÌ½©zÃ!ùÝs´SåJuâKj;¾E<s³~ð”#Ù<LÒšÕ‡øè/‘™sW~ÒKÒ¾@ý5VÊü´¢^*ò-cÍÝeŸ|GÒ­¿Ò&å¥ƒi1˜úƒÓe»qÐO$©²k¦©ŸUV²n1ûÍÁê¦*ŸAbWÕEeQâà›ˆí^€¨0l@þì'ª >xÚì•M\aÀó]Üvf‰¦5Ì|5Öm¤Àž8æ žœ8ðCA®PÂ'êS7LÎ4t×NŸ6äþ¬ˆgq*¼võÁ–w‹À×…'µÁ7§“•dQTüæ$‹}òìÚ$ËëñäÍxöždS÷$aŸ<¥BÄœ&\.D¾šv^Ln&jaŒO~>­“†S&?[Ã]Ù“ÂòPþãÞ‘RKÉ–-)@±ÚŽdŒ<^dè©³÷¥¸ê.&´1Õ/¥ðMgá­Òƒ¼0½lÛ¡fåã´ÌÇ3Œ•aôTL	†2N¦u×›ã|Ÿ”>(ß· T1Â{\.–¥&ÏÛB{4’*ÅÌ‹í®£ãÁ†¤†?B’É,öb# ôd$BYDá,f(is>±jØ÷¢uó”¡ÙzÔ“^éø!Ëqtg¸x((æë.(;uV±Ñ¾¡‹‚‡ÄØÎM¦½û•Ó}!¼ô À7i?åfoœçYŽááÆN¯|Kgë‚MxÆ§~€›}(#’¸Xe7—ð¯ûakþC$=Ã€!ôÃ%íEƒZ$=!è.ëy,+•ôŒ£l™Jy¨ÂZy7“4Tpm@ .~å+Ic>i8À¬}Z°„7mìÔÁ4‰g-4j€Á÷ßcÔ›o‹»° qÞúWðy'üa>—3#¢*59à=‚žEm³›°‘Aà{«þ¸ÒB¥Ò¾2ðí†{>›DÙû¶ÈQ°Ìù†—V˜½óï•¨hì”¨U™ÄŒ‹EÁûiÖ8’6°‡„gâ†‹!å?¡'±­ã2Ä9½ç‡z6Ù¿ÔÜµ€úÍc‹óñd%Á‹!ÕûÁÏ ¹âÛ¨œõ¥h¥sKø
(# c¾ñÅÛíwÁÿGŽäKo²±rÈ„¾œºí…ª¨¾xnùrÖ•d6ïÔê%©Aë¢K¼Ê,Ê­ÏEmôÌú"ª×†O7ƒè.Ž~	†ïË8Ä“ O#®e7	ŒÔSö‰Mºîé&ülð–³È;èúA™eA1g0”“,ýKÌ²l,Â¢Ê»†wdSVŸYIz~ŠGlØèÅ=â±`+Ø}¶<…¿_ògò­èäKÉ*ûø({V{ú‰­ê„¦ék¸¹IÏ7_¤ÅoÐÓ%ŠÉããIA"K…t´b†V•\ ®9‘@*q²±ÝeE©Ñ©ª5ƒn¤SGžÿ?ú¢FØ½okd*´G–H0S£ðíÞ…¥átX¥5n®eåçÄÊÏ?%+ÇïËÿ&ÌTnŽW`g?Ž‹M–[ã½ú3ëÕŸ}„y”öšˆÎf¼|›Án_„iLñœ~×ØÑÂí¨OHÎÉZÃ='Ä§51¦•uâ”'Ì3ÐÑ›¢oCžÄ÷i8W1*¦¬ÙäžÎË·»ê@&€¿ÝÛ}§V’kã1Ž:Ê‹öu%b^)
ÂHXî™/d„Íï…Ódƒx‚õÃÖ÷øâeu½ùµ6eQpp "1›eë¼Tq¬ócOeÕWñ=«þ‰˜¥	†ørÞ¦ÅsOôÍÆçfU/Z OUkÉÂe×/¯N–ÏŸ­½'Å†cvawoÐk
Cô*Í¬«Q&ÈØ»¬µüDÕï'\ç|Å‰ÅO3XR&<Š<ž%EY™ü}°‰Ó[Úðç#Í‹ÔœlXÓ‚…wãºN÷¶ ·Ñ˜¤ÚÝß}À â¡qÜÃLeìí“°£Úí“)]a.™»-‡¬;•ç{ï4cKyÑU.ßu?9ŸÆ§'£ëñÙàoÚìÂöS¾2ýEóÅ±vÎÁ '	ýhÄ/ô­i¾}òlùCˆålkœHf‡z¸Toì”Ôž¿×v£{¤…Š[ôæÿŽnÃt²ÌÃ4Š«®Cùå6Ï–ülZ/iJ°ìº¥yTNW(Œ1èÊ9&$øŽ…¨¨³V­ab"þ51O`Ñ4^¦IYP&´V‰fœèï‡åY7´¼ó<ž$ÝQ;J9p£B-Âô$…Z³@F¶ãÑ¥*QÛÔYð.¾¥¤Hqž{wCµ¨£–tI¾<rÿc\.Zk©+ººsC{š“(œÁHAzÀ¬`CùÅ*ÜÏÆ¥5râ”Ÿ»!—wy\ÜeÜ\VúùLâÓ–Œ—E\ƒY‡ðO¨Š¹.I¼0ZÒÔ‚C~tÅÄ'1S—N¹á¯U‘„²F^xá4…_Ý˜RÂ’‘):´²:íµ¦ºe‚öºéNØeÁ'4X‹y˜WÍTù6Ø¤Ÿþ\$·)˜bh2¢¹D«D®Œ6
'XPåPX¾Þ-ç!èö!ø<x=¼:¸ëÆÌ¼%«Öâlm÷ÙšQ?³Ç9ežÄULhÜú^{-ýÄÁÿA¬ú}›Yym*Þ<£Éñ¬¦ÖÛPy©[–q©¨Á&ÛT¬‚táµJ™g³Yœo–Åã³<× ÂkäÀÅ¶Ë£Çh×£ƒÔb þ¹Ë–y3äÀÜNíï–%&ÿ¬ÃcƒÕr{Ú…Ei0([Â‰Èéc:àÂ†ædý–v”7!hÐ¹QN¡ŸøŒÛœFF+Žð>Lf˜gQ˜uØh¯v{Ç)J ÝÎzHw7p§ÙuÏ’ð&™¡V˜€v'q{Ï¨‚]¿
²Vt/ÝžºûùÍr<¥qmx1½à}æ…w1ÏÇí¤î2”_5ñ“¡êöl±ˆ.æîo$­É&^«çRëRÓ)x¼H=y¿0 6ƒk/½èF±Â¢¿]ÁNhülcn]/Æv§Ž‹%¨žœùãyXB Båÿ#çªî&ŒÕ×+™»”æ{oœ.NH]¼±êªƒj-MÞ‡PÝ‹®Ë½ðØª›NôUµy‡e‚ ³õy§Å@Ý:ÀÔé±b‚1'ÆÏˆëáó­é{H^ÌeLsÜ\EtC9i£ï¶_Q Ö9ü#²ãq±·Kò“;Ï-ŒDl§E–¿4-+!<´È®IºŒÉëÊWE°ˆ0å4G3Æ}‘è‹6íÎOHèm£ÛUï®ònN]¼3.Afh_¥ÇœÐž#Êîvªi÷j*³†·‘	\ÀÝ[ä_Ï®UÏ']7ãÕ%öª™¿6ùúýN\ÄfÓ)&ïþNÛ°1m¨5²YÁÝNù£ˆ9Ï'q1bðWÍz?ÑžTížRÓ×Ä|‹©iP3o&ã3¼¦NÞ¼Á„ÅzùÆU>Fx=¨¬}#ª}«	Y¯¦˜ÏcxiNJYL‡ ôÂ‹pC%‰8Cª=¨–P.Dïn#W„/Œ(ˆMúè{´L&û8a¡lÈÁ­³·Ítl¼ïFmûŒ8«¶»×ËãœÙñ›@k÷MÁ³‘ø™ðœI–EY™–yL”Lð	õ…œQ’õD<õ(Â`8 <rkÊE[kCkH#>ÞVO„:ïÌ£jÔÌõ%»'ˆa¬½°I¡g—2±î[ÙuœU‰Ÿin
­aá|s¶Ž»šzŠ<“z\smÏc­ƒÓLÃªíÒþÞªÅ;÷|tr4¢Ý]B@E“Úb¯‘9‘q7·ˆš­#^lp>Ž†£Ã wÁƒuV^Òó)=ËâœªwYÿlÊG~Õ>´%¹§«Õ0½nÑ¢cê
«è¡YÐòÖ¢’WÐ(št>\æ9&Ë×¯ý¹†6d†Š#²í0uY‰q& >¬u×T¥"ùk Î¨›ÄŸ­i½@ó$íiÃÓgQ§?ŒY„Åøj8zuz=ri½•&Ñ²aÊ×wƒV¾—ÜÌ¦¶2Èãb9ã²Rk;{Íòr–ìÌK…Šk‰^ -4à_Dz›•Y ´¬F^yÓFœ‡ËÍFK·‰@OßˆtNôEÜæƒ5¿&9JÂÛ£à$e7É“.Îjî'MYØ¹]dÖt‰«û K¾Ü·Í$g=‹ìnCb%òÒ’ëñëÁéÉÑøèdðÃøäüøbŒrz£E±˜d*óP]¶éPôNZÔ‘šÉ=>=4æûvö,Þ‚ÞW(ì
†u‘1•G‰~_ÚÑáuCß:˜˜ÅeÂ	®él‹·uòqT~HGŽW¥¬™¨ns+N' )G‹86ŠæšÖæ¶f=Ø6Ù5Pí~‹]A´ô$fZøXŠ—M&ØEP¸ !dÛ¸°µø&7›Ná¡ CmGGEÀÔ•_©[x£’V,ØÔV	º£:$Éè“±uÍn;Ó7¸wv_¨¸LFËªö‡á­c>`ºò1Ñ„viö°rbHƒFåÍheœÿþ6Øýê¹x:œm-è´^Å$&Å[Væœ°¼Ÿž‡gGãáññððz4>½º¼¡Î†op8?Yò˜cN…¶x1o6Ý­gSz!ÆËSŒ*!ô<,×ùåŸsên ,ŒØN,rÀÖÉXÙGéå“‹.Ý¼íßÍHáõs’iŒØ¿9ŠMQÀ¤£ªî¡X…PhöxlÒB(¨™õôÀ½_,†UC˜B“Çèç¢ùÌéoZ¶FõÂ¨ã0ºëñE%ö-ý]¿Ï)¸ÿNö°.ù°4Øõü9ûÍ¿*MT#ÿ%Ñý@Vb,.ñ­AûÊpY¤n•¨]Dg.õêX²ý•’í+xŠÖ|¡ûñPdk©Ûò^j!öJ–Ëûóìí­˜Y»¤‡ÚÄ=ÐVÿ‘¬*
hiÿ8çñô„"LË‰X¢Ýh³ì&œa+".›ïüáôâ`p:>\ÆÃ«ÁhxD±/üjKQ$,fe<.)
¾&j<®*Õz—ƒÑh8~<9¾Þ>G®ò*@·Rr{É0íW+òKqØôCë½'“à‰:ÛÛ~Ç"­ê%âV7·è/Vd]œ!h‘»œC°áìÚì«ÄÑäag[Ÿ7E&cd›Ë›!Åqvy\è†×fÌq™u@{3Ë¢_Ï¶â½iÝÆÒGùãðøaŽô«]Êh<a70¶÷JÚš¼ÐÝ/]*¹‰;Õ¢wR—j"^M·c0ðãû>y<IØ5Á˜Á)N£Çñ‹]åÕ37ìØK»[›,f‹´àúŽiíq0æCW²¦ŠnP4øa2ÐÈ±Í„¥gt]"?.…?@'FÃ¨ ZSûq“ò,wŠ™Å‚´ÀkPÎ­Þ¶GgãgÁ´þ<t­€fÑ<|ŸÌ—óvôe{*Zí–Í‰ª I±‚ñ]r{×T/‚k¢»äC*šežõÌÚ„½{È³ÍcÞ•§ø˜û×ðÐµê*üåGŠ Ç¬õ»ìá‘zÎ˜
Ÿ³xœš@889\ý]d&ã<|èõ¤£†!ßÐÉX[›Êò-–Ž÷.Î5¬>šÀ¬BÉUÊeÉÇáR¡NŠà2¦P„`—24E%ìƒùÏÔ:Û—x>9|KŽ¯^ôÌE*ŠNa/`‡(¬ÉÅ[SE½`(Ž®ßœœW8“ÊVÀ%Ž¦K”í’ÜDø†fîŠ\¯ñŒÄÏñIY-0ž)ŒLL?‚<ÖÐÍx«Ò¹õiöàMpU»jÈV×‘r=©Q>¸PRëñ¾RÖ×(dŒÞÞ’ÿÃ
äº½Íã[4Ûl!I¥@LÆ¡’ÏŸzÌè
ö=u±qÎªÃ]èþÜxá½ƒnn,]‹°#âmC¨"cŠ£WAµ
‘Ç–7¶‹ïwk…ûFË=n#0÷¹©[>Î&·c÷‘rñVóÒÉ~ãÊÜŸjˆÜ™ÙTÅ/Š­ãSM"ŠGÙÛ¥p²Uí¿©²’uÂ	'òV5EÌ®S}œe*ë>_›l¦übp„Ý±þO¨zÝ²d=Í‡TUã€ÛCNÔ@«jãrÃ$ñSÌuiÞà$}ûdòNZC”Ä{ÖþŽÌ¯óc²xÆÇLmÀÐ‰X4Hæ?$etôèa &¹/‡§ãÑÙàêzüãppzýãxøzx~½/xd¾=ý1gåÈ(0éJ6Z=ÌˆºþÒÆxü£g'×6:™ˆè0›Ï…d×äúäl8ºœ]ÚHPƒ"/–
FbÙs`¹¼x3¼_œcÒ°B…–lei ãxcžÀõÌë|4ÿøf<¼ºº¸²1‘q¼¼)‹2ã+Ì'ÔÎ!åH¿r =üqpþÃSÒXyãTX‰ÀòÜÕãWgÌ|Uít
Ëaæ{æª_×#â¾íè¸zl*œL¢|á@©ÜÕ.êFÜ}gÑöM¢zê$6m¡%ðÄñppýêjXAÜp³åÅ‹O‡§Ã³áõÕßÇ‡WPÜ(ÏbŒà[ ÑD.4?¡çOÇÃ¿¾º9šv}CÏÏ‚áûh™zÃ&„nOÃå¬Ü_“$ bRƒ[žáA
4-ŠñÝ;®Ôc‹k‘RzbŠíµ$xÒv_é•õËÃìÿ<¹€§I [Œgh+à¯ÒH+p›†%6Ö.º×RôØ]ìY¥Øi’þˆðšj:üWnøs|,›ü\>äÇœ‚7ühëa–NŠŠÓŠ|­Šã‘ÁxF#ðCñBGñŠÎ­#~nM‡ûÆ NžÝã=Åz@ƒèàgxŒ-SžöDä¸¨;¨©×w´€Ê–%ònã!h_µr(‚ó{öùw{½„çMKßEŸò Èà"¾©¿Eœå g–$XAÄÊÄüñ=îÀåo¿Ú–éÐTÜ¦×1.ivüA§Óà‡žŽ¯Vc/@¿o/6xDÂKZ0nt‡°b-X+ÇO0˜‰‡‚)D\êîdÂçž™œ…¶ËÄb¼‰2¹Æc£å³ho‘•Zók«¿ýèçà5R)-k—žcä5¶XšWkª]ÜÈëÚ´ßEè‰s­ƒØõžòu™Çì`ÒB¾ ýM}‘ðÉWÝP;@€ç`E²˜8ÕŸX´
[e`ÞÍœÂìh3–#ðAÍsÕdçaðÒ‚â™vb)e½°ÀÉ[M¶Ï’(Š•…ñÂ*&Ïûæ19E#a 0ÆQBi8QƒýÆ*ÀkOïn0™CèºÅväªÝì½ö®¾ ß§VÉH½³JÊO£B×Ûº‚f…êum•%³=ÆñûHŽýÊ#Çl1&
ÆZµ•!¯†,ÅîbåÚ\I-þû ¥M˜X;Ó!³ï¿ã3Œ¯æLP@bM%,ü'}Ëñ[e¶¾/Ò\ú½#)5¯‡›ëpì~±zœìú1‚7SR©Ê1™RŠÉ­/7¹ðG=·Ñ@f?p½}©£Ÿ+ôóNèçNôs=k—jkf—Vˆu_Z®d‘Î-`~ˆ¬‚jÖ˜®Ó8ÉLG’ÑO€Ž2D#O5¨°†
þ2ï=®1ê  ÇXÞ<¢ûglì³Yë‘C­@ƒ$…<éQÁ–ßwÀ…E@œktêž»—ïZéÔ:Ax
|: õÈeC
N¶ÊÆTA/Ï£øÐ­eÅ¨»ý§ZAùà"JÆ÷®{*Hï=N¶jH‹Â-ÁyH¡"t·bê?Gø¹?|õþFŸßÆéX?UÕØbìÛŸy”x€b]žÈ½]=Ý?ª³êHÄ7o“w*Y†‘-cM_r¹„'f7õyJ,óªé™ÍÐsJ)x‚(Lƒ›8@ÇC<$å]PÞ%}„%üƒ÷+¬èø][ÿjg—]: TÿºLòx‚;Žh;(³€2óá5ü c¬³Òˆ–"…Ã)ºt±yñû2@±p&ã]<áÛ2ƒ56ÁÕ›íÂÙÊÔ.ŽõÚ6†2c6Ð´`‹#•t°jchççyuª¾Jñ­ïã»|Ø¾¨áT$¬‹0ß=«NÛVT»˜FAÓÙ@>g]åeXýZÏÕN;Ð•^ºà	T ¡ý*¨bì¶>tç`Hò& n³rÖ¶Ö´ª¡äŽ*@Ç®ßþÑáÌ"¹p¬Uæx´'T0«A?‚oK€ß|R@˜Ü/åRÝ«’û"i·Ð\]å[A<ãIT:‚zAÂ–Ü)\;·Øu;m›MŸ‰|{|iÙ$ë ´=ë+ÃÓûÕ¨Ï™vm•,°Ÿ#Ó\¾¦l°”Z¶¹
VÏ¬°«™ÖÍ#;¬Nåˆ­àóÎ+VsÅVp¶f‹¸ìLs5˜²¦¬±&®LË7WÁæ•=Vàse«`lÍ"+°Ù¹ç*˜|³É
„5ùçüÏ3»slš“Ð™jÓ¿
#ç&a·ònú£2pV	µRqúã5srVÛÙ9ý1WÒÙ[˜í„¾˜	S—ìV½MY<ÛVÚf+é<©2§ ]­žÛ³.»g7ä5i>ë}®€Ü‘ñ³6çg7ôµÉ?ëÓv«ÀÌJˆ«º;BÓ%³æÔ]V3„Z·¼î‚ØLJH«b»ÂºÜ¡µÙC;Ø‘5iD‰ÅÄw§í²¨É+ÚPg]~QÍ7±Õ¼g´-Ó¨n'ùFÅÖ¤™pÔr¢x&U÷°ùŠ}#ÿèÏîÐÃ©H:¹>%é
U;r“zT]ÍQºZ«­$¢~6“–®ÖæîÛYLuŸLsä±¿µ'Û²¾R÷˜=ñìÑë¢?«Æ­ï³ÙdÌö7¸­\ Øã!¬Ÿ7nêt§H•]ïó½íOÖÊ4~X½•ZáÎ­Te­Vz³§"'ŒT/›u¶¾·áºWƒ—6`ÇÏ‘ 0}¨ÃÉ¾vFÙˆ±+BfGß/Ça¾-J"$c)¥S©ñ>ä®²Í²À EP+®¢MtðË-€ûÆeá˜'V°ÁÝÃlYŒåþœÏMÑÕÃ2,ŽŠq‘àâ„bA|ªwkîHg1ùLµxt?µ{Ø‚­Êh×ùú‚-¹q ä‚Y+K,cPñTí6ˆPa’?@úozÊÀU¥SÒ¹vlÌ (m+lMöMCw°½uÆ““Ë#Æ\½\o»µ¹Ê-Ž8Á¨•÷cw² œbûÐ]¶€~Ë|0&Jõq¥ökK>—1¤w„ÞÞ+U	%ƒ\ ¨µ½U£ž¥")s§J‰n{·¢¶NZ‹J¬“MŽ3	äñ³ãÝVô¶©¡«|¥æ)`«jÌ«l¾k™ÁjšeŸŠ`múèm™ß1˜lÆ‘¨ST‡ôK¸®Š
+ù-vIûoí«	Ú(\´àˆ®ËLï)½íˆi²¨â™,ºbIç"ý¥†_vÄÃ.@XŒ¹ÜfÖµãÌÄ(öŒ”'ä;±jå*ƒlíÒ°zDˆ+N+Põ#Î/'ÑÕòýy5…‰îÀ_»âÓ"rkd‚³"«˜×(TN0iC¡…áþAC¡Õ¸ÚPóp6ÃäíÓEbŽ‰Z[}p´ÌAîj*°],<ZÅF˜«3GZ‰Î]ÇÒµM“xæ;Bz‘fns½#3ßCþ±˜k=\º’_;ª…öÀÛñ
ÊŠ•«™ªMUyiòºÊvºW¶ã9JN©à
ÏÿhCE$j¶½3Û£É|¢ÄJhÌ]ÏÊøî:‰›æ°»¶ÈžÄuŽ•š£šä`©œ”øXCE™ýÐ,ö·íš`5&@:;§õ[Ö¨ûÕµžù]FÎwJ&¡µ;M^z_l"³OH4Ÿ,…~<LKEá8õ2Î£„_J`h"ÂÃÐ]ž>À“•ÇÙ})!‹ûÉÎ7ènÂ2t	Åtúbþ°›i¿a/ e¬C=S /È‚8J =ôü¥H´…Pñ¤Õ7e*zŒÜö=o÷vöw¾yìOþüþŸ¥8ÔIù8¼ÞÓ%ËÏÏ¹Rtîð}‚—]ô®‡˜ñ¡÷d¹ÁOôa£þ86_ÆëPÃú4œaMllÖK<¨îf 4SXÇåÉ5Ö²Dw#{…rDðþÁ>°[ â£,.‚4+ƒp–ÓÑÖiRlðÇcò…L€9@wh¼uv"€´Ó°]Fm:Ú`ýŸÊ&M:1.›ƒÚ#V¡`PÎ¯/Ø8"ãàkÆ»·X°c,ùy{OÏÔLòõþn‹˜Mv\eÜÄ¨Ùc€4d9õ\<¡Í È¡“‚‰ÏÅböÈÇ{[Æ@xJ3ª¡(²(	‘ 
{ÓGl gÃ™îÆÿ*¶Wó‘R×¬|Þ½³SÊÖ‡&Q?˜<dùdÑÉA+‘Í<žã5XÀ@<‡Á¢ò•þÚÿÝQ±—§,)‡,Å_ý·9¸Šóàn9qËHäfz=¼:¸_®šöÉœöþéŸ\¢¤›×©Y-Å“ÄÍ3;¹sRŽŒ”’WìÂ"³'©=è:«+ªE•–Q+Mê¤§(wÁ–}
á-ƒ¥ïÁN!’s§· *ªé«<OsêM»âg6ëÆmê…~$”ÓÑÐ%ü@ŠlØÙíLyaÎ.ÿºHƒ)*»wyñ#™„•ŒiÖ¶=Îa:j8ÄM%°¨–iÙ•dyòRb<<	^³+œ@¥÷^3[LcŸ—:2•XJC;uB¬¹”™Yã<QŒÛ#6<R-®~4\Tq–MbUÃY·O‡Ë£…Fâ-ºŠ÷§%,÷`
O(y4ìÕÁùOÇOŒ#`ý¡qEÅqÊohäõûd¨ÀX5óµöÐÄ?Ùð–0ò”(ŠIR=¨è±lu¢2xˆ¥\¾fR/8 ó¢û8Vù¯<˜ŠÆc0GÅÿ„ƒ©–B=Vôä9?ö9äN´:O´š‰§Í©˜œÎ@xnjfº¬xÚ´Š±V7W0ÈC¥&’F5;NŽ:‹äÁP6ÍxøÙPo‘¢9šð	Â´bU›ÌcÌõã¥V‡w³MÌ!¨˜'†g¢}ú¡Qíµyï£!ñÍ¡õ¨@5›oñÈÿS¡Ra‘€',U’ðQ)$G¥'A»æã°ãêyGsƒ4îî~xøµhÈñ#Ij¥îb6	dZUMŒQz2Ú¥-Ulüð±ü¸ÖÕžfëN}ŽùF@k¸F³¬”³«9ÄÙ¼"AÝoK+_;Wî!;ÌÕLíla¿"3,”@^ÁÍ%Ö à	ïÝ@K-3pÿ{†;ë«WLqi¥®ƒ—< ¹Qµ¬-WRÉÌB‡Œ0t™e,î\Óÿ¥áÏ‡‚–ï¹2°~±ÒrÒûH·àƒC¤ÕÊ	7lè	Aýgkÿ>ÁÐ.[îÈmy8Cž+L¹wÃŠ®r–Jr!VçI\æÙ-°}Q‹¢Ôìh‡æ52ñtŒ_6ÙœkóÜ5·WWvß(¨þí¢“Ý¾W’u¦Cùt~²ìë©`W	Ræ¡§îLÙÿòHg9°ÎTñµêJÁ…ixÏ©ãŽÞìl[:Ú/ºŠvò M/9 «¨Cø')» S¡dR€¨D/ÕéÁ@Ç¤3ÊY]Ø0Ù*³­X$ÀÑQÆls‚ì´Q\¢‹Î%ŽxgGÏƒY”l-BX¥œ<½ -`­ÿ@úcšæhZ[§^¸If°8å* Zî œx2q÷âÔ7þÙ˜y±k©øE:W{ÀÐÿâf“Oì«<&’G/·„=;H”`Ü,ËØä¯Æhgšæ™ýïÒìj€u—ÃGºØgÍ¡@1Ë'HX`€M’(,³Ü58-aÏn~Ó®É«ÅUÛ¬T¼ì*Í@¬_zyÅ2[ÉcŒ;îÔ­ÿ¢€eI·ãŠ‘ZâÁËR6µ„,»+jžrž¡ÉN¬;«býÃc«äûNcYÂi©wQvñ=×V‰E^qÒ}XðqõÆ #Æ{hì+n*C"c´ e`V²õý,|ÄK=DxJ¬dbE±Úe€ÇóxŽyöXÁíí)%õ,¼#’ô¹rrûOþ¼½ûžÖÞý  @a|õâ=sÊ%Í®áDjõß7x”ëÚŒªP£5:eÁÁŸpÃ’/¬U[%bÇBÃóþS½½<ã‹7ƒFZƒ-zz(¯©}Af^VD#lÇûHVé_íìöƒç"·ï/}pîëŽêýà÷¸¬UÉu¤ o“WUò÷¦²uðÚu6†§ãZéŠ+ö¢»ÀÛ;¿¿ËÀP
äÒs´ÕÏWŸ+^¨Õ\‚øIï4Yý’ú¶+?õõ¢ÑFóšB¬ä¾ùúçnºêŸ?üšO«5ñÿàË>ÿXNÿ1Ó«…tš”yt6÷ŽÝÜêžšãÃ¸’ŒÉÞ?ênNÿ‰Úe*v½…³yR¹ïˆšÝ„ÜFÔ¢òÕËUç$.¢šOt»`ÚTPÄâ7”.,âd³ÁæÝ$¯B•Î°°’lz$®º!§](Þ±J81Ô¢Î9áHcQ,Ðg9k9Áí:¡))Ñ¨6¤4+fJ–mØ €
L=ö‰^§Ä²W	6à4nÖTROìºÙ<¿¢qQ.g7.bÙ—?4³â6²œx¼Å·›`›Ô©D5œMDüñ­9nøNÌFuô‘2ŒA°‚âä…)=šJän:Æ¿ÎuÖèfyëm? ÍYàö/æ,]oèõ³—vdŽ˜G
rƒ™¦\ÔŽ»Oo:®cè þášºÛŽE!cWQÍöúñe¤5oKJ&Öóð»ö®Ðcä‘KIàLqr	”Š	”)›fUª×Zc†É1Bõ)JÐu„Ú½‰UeŠÛW´ùs¥òdQbvðÞùéÕÑ®×1õÉŸßSÌ‡ÜN8bf=±ù²Ÿø"¥–Cã(Å‚Å:£œÑjuB¥hÜêyÒW±8Vl û¤æg‹‚7ìÅÏÖ\cÐvÆî¿•^Å¶Õ»Ë×°µú]3©
‡¾—‡XpÃ‰ÿHV¡KŒÓ–q“d¬îí*cõ£î¹­¡íîr„UZl3Bš¼E™ÌÑn´¯Ò<ŽÐB÷%fºjø`–E¿806YŽÞÒÎAÐYÚ!”;Ï×+Û…†¥ñiLˆêÖï=s‹Èjõ'0<e·EKÕfP¾%Œ‹ƒ5
Ì«Ú’6v‡W²þU¦€lØ:†/ÏôuatÑðÛùéŽLôkâ©ÛýTûGVÔ.=]á]S×ÞñžÇÅý8Í€Ï5ÿ6	'ŽÐ¯v—±ÙüFïý@^P>_”Rj·~ï*˜«øt/Ÿû— J¡»É›Ãîé°èe W1žª1 Ÿ¹!¤ÂÝ^—‡“Ñ:ƒb¾5Ý¨>ážn‚
Õ-¾nY³w¥J€nð6Tâqy.år"Z]†ÆÊ#/J?Ä]Ùm¡•NÃÙÂ³°È0fÌ(†„ïªB³lµ¡]ÕB[Åè¡ú” AÆò±{¬†Q9Ý¯¦OsëbåÓ†T5Š.%ß»]q&CjÜkUBÔDˆl©÷kü(+¢IçYË*B)*}†²ªbMj<“cGzÝ6ŽÉ±.)2M&ã‚zÇÓ)°eQá9&žèPÁ&~‚«x¡hÝÞ	~~<ã‚´)]o_õÎ,{Êv9&khv±`°ðÇ·ÁîWÏé§0´*-£‰÷ËÖ÷È[øýN%zÙÏÙîãñÉÑxôêòòâêzx4¯Gãc|%•dÒ´ñb]ÎU<Y²-bö½Að!j~‡FšV¬fí+{’ÊJ…×‰YCT®ku1B?Åª×$¨†õÇtþ¯Wa*âq]À²Uæú¤ëµ÷Ñ—oë[ë/EÊ©i±0óÑ˜~az‚WG‡‡˜
 o`LÕƒ¤ìP±‰ñ¼3Âóf|'ñ4á;ìLßa#}¯F£®ø
_Om¤0ÿ¼=ÇÀôý÷M¨F‡—ÃñèÇ“ãëæJäÙ`ôW“+ÎgÃÑåàpo
Ðáí|ÔÔÏç×W§§Ã«0^_UºG'£ý†×«üúãpÏ^]Î¡C~¸ºxu¹B€á‡«Ë†*Ž.Î'ç+`fÛ:F†÷¯2¢•!­ZŠG}¯j9*É°r\Ò¯Ï´š¹)èT‡¨¸ÝáctÖõ‘À¡OB€'(‚!î’êg2ORqüCÌ|Ê¹@†D¢›Œ0+"1m^ÐÛ„Ð[úÃÊ¶¾-Ö­Ü~ñ^¹TU*ˆL”_óÕª6t2-¨È½ì'ãhÞÎô&˜Í÷üëŠ–++]g¼ò¯Nû•}«5aM¢Û­X½ªfC–A2ä¿9²'ÁŠ&;ª^ÛúÞ|ËgZx8wžŒÏœj]cPÞ(3—×E–.ûÝjìò:¸½kÛnòêÝ.Jw6|±“šý«cîn¯`×Ï&Ã¶zhuK8²-áÃfK¸#ùÚÃÑzZÅ]±úÙÆ]§R•VfÌZ¨„=[‹ËeÒ¶ {Zµ‘²Z®`Øú#ïnÛv üCÌ[ÿjV°pý‘¯näv`;÷#ký3x9žOlójÔJ³W³[|,ß†^Ó0éÓõìDX¯…Ë*üÈf0±ÇéÅõ,r6ø›f(ïoœ$»Ä4š½Ì½‡Î:™Î&Ù-æs«Bv ënDß€Y0^ˆtA,ìãfaÛÃD•¥\ZVÌ†s‰…/0t/[LXŸ½¾Ÿ°ýu- »±Tx³à[8½Ê®?|Â“I¨ ÷vØÉ?¬7‹â7w$À‰È¾Æ­åOºCT?€uqÝzäw—˜÷ø¯"Ð}¾A2f9{:Ltâ2Ú¥¤´ÛÎ‘v~[ç³ÜâÌ}ð×ä ræ»Ž”xÄ¼qpp©UêÍ¤Î51]¶¾L:ù\VÕbõ;hÃÕ¸E$zý×G¡Û°YýÑÚùÒŠÃ†a¥çFs„	…
öÅMã]íé4¹u¡R_õ8¥	Íš²£®\1X‹âs‰"°JüEA ¿D˜_„“l&i;Rç8N'·íh”7R–µ¡­€óF…øôóx•yrÖ»‚ð~6.@ôa t£üè‹mçœYb`Š¡þÝŸµ(FÖÁNQáÝIæB¯Û#nÅ&ÂÕ!Ò+BïÊ:+ÊN
}:=½ªd–GšÖ‚ =€ƒ	[údHðÍ‘ü°ˆÄ•#œ$µa/ˆ£)R¬u-âè	Ä}´êK¯ „ˆÇ4#yd µÊQÓ¥@š3µ‹ìMÆ«ã×3Shû!	ìen€w£1å{E¼›’].%X“¶W+Òž§URç–÷ç	ëUñ™¢¾îÄÝŠÈußž¼Ç¥)ìeÒž˜)L~^%E)‡‘•¥yUØK›OÆúŒPtËáu¢1%¼LªÆÄ4F$½IÝŒ¢"Ó=&H¿p®§ç‚bZÿÁÅ”6#âbÝ½ UìB6“G`Ý`xn—'¾\qO‡ŠÖŸ.Œ8Ôš½“¦Ò˜¡ùs]µÐ×d±±¨Û‰"‘ÛPœ ê›ÄfðKs°©˜T‹H£(èMùSùÂ~î¿€¨V •E)hÛ[ö74¶ '”»°X½›/Û@zàPðçÌïQ:[1²µd‚N¯•±š….Jsc’s²:Ø§äŒ$KƒÓÅ,Új\ju*;¾KuÞV½V{·Z°«AÌªúƒ~k™;­¨±íÏll†±ÅðKùKæoÚ…l´pyymió™9§…ÒÉÛŸMè[¡TB¤¿V¬ØDÒJÀÎîƒ†ðh7ºkwØøTÎJw®´ø J¿JÍ±%q¶êØRa^!{èÆË:¶/ÎõLý„aœÿãü_ˆó±8üV\Ønî*‡X{”gG[w‹S)Ýš$Ê¿ýåqÄµf-(ZÝÇ=$OIƒ”†ú.èµ¨°~št­×BLü´É.ë‚UíqolZKšÎYQõÖ÷ #ßq§U•ñªˆfiJ´1ÇŒ1ÇŒ‰EÄ Š;¸É±*‡ðâ(¦àW¨6ÐO}f š¨ Çág½®¹¼§¹[Us™mêÇ±¾<+®¬±†àÑ:<P†€ÙGÁ\ CÔØÿ¡/XºÒý]:e¾4ÞÌõ5¥oÝ4ÁÇ©{23ë®‹Ú‘ýÆà7/ô{±¡Q|Ä–ßj•¾ÎQ©câÍ4ÈIˆ†/!ÕäUãétmò‹˜A†ÄÜ$Gª¸äbúÇCHÒö(aš¡c;ŽÍ]©,Cå"0"0·º …]O&?!íà”ë}³9Êë¬,vYTîDh—ÂŒÖèëß`SzÝÆxcWÚ¸¶í›ð(ÐUd%ÁÜ
R\Cñ[uQ„‘~`m»4ÎúÛg.GßMtäi#ÖQ\Lh¤-½jº‹/Féóò±û{]¥ÚÓ Eë
æË»†^hj«ªÏ½Lá:íÕÂóÖ÷øØ¶ª2Êß…Vž:•Nó[kÓR`‚/­Ë;ÕòÎòŠ*\Ë»ŽÈÒ¢¨#>µ!{þÌD—/ùÆž:õ'Ðá§n´Åù²œÕGßxòÉÁÚú²¶wôE§ÍÖðó4ü\Ÿ+Úï
°BYª–>mp§´6ŠSÞáN	üCµ–zÙ±,æH?à¿¸^h‘æšŒa%¹7Ý·‡§ÕEëQúzŽs]GZ¬›ÑeÓG“I8¯{Ø©°h’ËKçERÆ¾Æ]þ¯ù&ÿKíVzýûW°ý~O À‡û‡Hyf£¸M0a+}¦Ì®•kë¿–×Ö]š;Á“â5ÒÈ½ßzjE¼~
®ŸƒÞXÁHð†æ)†
žï%+GÚÙñV„}iólÿ™AÌëltÌâàMž”xwBtM—xÉæ%ªXôE_TèÒðïíok´D³0™Wv'x^tF"t^ËøvRÝ}ri5oåÕ©è–k¶M=¿R¤í‹—í9ûE+\k¯Sð+*wy–¸Å¸^àÏ,5rE»Ö]ïhÏX« V•}©¡qû†­Ž«{.ßUÒ£4*äzd´øc˜Nf±DéJPSÕËUœò€¹Œÿ¤¦v2¥zÖRº(êÎ³y‚q:îRiQÏvÒŸ‰ÙlºÜì4™'¥•ºžvÒÉz‘]A%¢(ÿ`…®I,–é…Å­ý¬©a¼H˜÷:º_½úñz|‚ùî§§ŸŒ.N×Ã#…'˜š=œÍƒ“…i<!á¨n×Õ¿(=íV·+™eÞÆa´.W^Å`asoü+T´a©Âº¿*¤˜µâµ`aV¯,á”jHo½`£Î‘ì€QŸDüÛä]ãò…—¨5ïÚ­»%3ïBfÞ-©ÞP+ÜlÞ-•}·ì°ì¦’ëªèa‰udM-ý‡)XF»¡^éÐÈÅŸŠ'›ç“‰¡ˆ·ß³ì$/´›á˜ûQ=Óéï·Qx½J)^VÏ	´ƒ@?fE)”qð.k7ÆE ª_Òì¸«!²ì#üRµûè­d¨Fù¶Ò.7îuñItw3`š]mpÑ(á‡–hUÍ¼Í¼#š¸K¼J–¤®³Ûg4>É”æ3ZÄÃùÉ±ØÈŽ~#~>x„É<$å]p—áïjÃ5hì ÷ãÁÙ›}u Ž±~a{kèÝÍ\ÙU­TÕ¼±ªaŽéÑ÷pÔñF]"#Ù±”$¾Êìµßå+ÂM4&ÙòªÝþ`Û|¥Ê<ý_©q¾ÜsM%îà7˜0Ïˆn3<D™U-~)ù:Ï-®!a	½KC#â©*®®2÷,¿¨…‹{GÛ£[¸“Q6DÜ=j_ŠÛcÀÀ5›Ÿ‹vúùn–…Î`ëj7¾¦ÕºÑXÐÍ5ã«!¬.kV%ìRÉÙ,½?ÏiógžÛ»æXÕ.¨x\ð5±—Q6qvÎí¨ZJ%ïE:j:¹—óq–©.ìöÇ§ƒ×-ÛÂÖøQ²mcä°&™{ÓËqÉ¦3kåÁž&1+»®þèF±#“¦5¢Jè*=©}E¶bíÒSl²72Ç¦=(¯Îßì¯©|–†7 Ž—¸.åºF¦Ë¬ ¹>Ö á§¨” /WŠã‰–|³Â'£áµÂ¦™ƒ§Ð–¿Cû,›eèt¯Ô¡Æ£\ñIÊœ¤—³0²³óÖÓF<¬0¥yÅ¦ZXÖ·êìâèäøïZíóÅ,‰\Û75e³¨(&là:CËO­ú˜ZE96ËùKžåf9ÆùÛ½ÝmL‡B×2ÈjI¹?Ô4ãM¶™ÒþõjûSªb²$ å32†fÎR¡N¾”êg#xìloo£Ð*çä@ŽÂ~î}ÎEŠò¥añ·O–ï'~;K¿ìZÀi2¿_JhšÝ]ãÒnm•ØÚÞ>WfSj#ã9èìqäë“(xò¼ülŽYØ{\óm­WÔgz9†ÙÍ´Šj‚kj=ªÏ\.XÓÌð¬þ|trdàº6è!äF“#ô¿ù µTÏ:]€LÃ+èzçðp¶Ñäíþ@+‚G[):NõÜòÁ`2¡{s{ ¬¹Ë§mØ,¹¶ïÈŸ¾¶²AÝÎUSWðjrJ\Å§{q4–bH_¬ë3?_Þñ„¢¿ëRE¿Ë¯~y†Np–1Ýå“ÉÔ7õ:ùŒ‹ŠÏ¸ð¸†OnöËãÆÈdN·bÒÁy\L¸û˜—jV ¬~;qŸ„ôÞaS>ôQÛ<œÊõi·¼œÊ…sm…¼–V:b2'"Æ~PÅa¾äuµÔÈ„‹}ò\òIÊBî9Ó’IsÊBæ:ós¢Ê‰^ts¢š½ø#œè+ÏÚOåN5uõ¨ÑQT„FûLÿ#ç¬<è2<¤äé'Î¹ŽøÌ¾UµeÞi¶œÜ–åë±êîìULÇ†ÒÛ 7ÀŠîÊ¶P8Ms³F_©S•l¹D‘" ”¯^˜ëÒºŠÑÊ _™´.UfÍ†vR±ý®Í?äÜÝ*“©—Ë+qhÆëxmï±ÛçõÃxò ^5HAF&2Ž×ˆ\RGZÅ!À–Ã|•cÀf Të±ìšríG”©~'û:×®Ãmãs¡k>>Wû¼w]ÿ©‘ÑÏâ5Åëv¢Ü«œ‡ëºïTó,¨ï:+ñ^p»ÿ8Ú‰Ç&	A­µ‘#N×™tÐ±ô?”ŽÂI‡¢@¨–OQ7JÓ¸(Eåu§ï¼OÞ9©ØÉ
á8ò|ó!<;ÛÁ“‰ƒãµ{ŸüÉ®ž®ûÀÓrÿš“rùxìò–£mõŒ©¿úYµ<AVÛd-UŠj½^ß|¨Ì;ÁÈG=+æ¨Ué
uGáG¬\û]ycŸ…aÐëvÏr:ž/ge²Ë»·ôÄ‡2(•Ap“e³€J†)‹ú&è´`ÛÈì	±Àóâ¥•'œY*|§Øªešä`E¦°~Ÿ?¥š™ÅŠQUÂE8†áÇat7fT÷ƒ¿rÁ¢2Ÿ‘¨‰hºKúÐ£Û‡Œd©ÐZ·àÙøõuéCTM…æë0&Rù¥·0Mîà‹-óúÿÅ +*¶ªm8¾” 6
´ÝŸCæ±sd$ñO’F3üÅæVIÒO[¢.¢XAt¼0mŒÅ€Ñ ¹nÚ©Vgý+zÊéêstët.@[ó~Ý¼¸Ë
¸“!» ¿ô àÆ³F™eTíw°°,Iè²­àü§óïxd­…Qv]Áš°?.¨_Ó^a™/ÿü§p°¬ñ¹Ù(AÐW"úÂNkó’–b¾FZi> ‹\™µf’dìá-DLÅ¿©Psy7‰¤°,stûŠ=œo²\ç4/Ü6Uð´-/™b*{ÂvDz-&sf}ÂwDÏ7:+qÑ5&=kê]ÔTuL‡&œŒª´ºœzI5£ÆKì'+ñUõ´N]h½Ó4WÐ%móä?ìÿïÄþÙÑ½çä=tK¶«i¿ÖæíÙT…¤u&;PX„(¯äÉÚ*Öc#Oß¥ëj;˜Æ-Hh¿pMµmUæ×{‡"{Áè¨Ž7Aáxã4)øÙ,FŠPOT2éÝI¡È^´‹Ä
5'G˜ìš•Fdjdê”x˜YtÏ ÅéµðXòCë@§é¶Zj|êñ£Oâ¯KK¤1ºU7‘ùR	03ÈÇ¦Ó¬H&Š-
²Aß¼)f“ÑTí­K,iô—ÀÕžÄ`Fyå ‘­rmp*TLì}ºd¾$¦¶rè²ûéÚ2©Ù¹¶x’ÒZ|™ µ«µœ®;ó·eïßM˜ã;Ú±"reï•ZüäUNƒ7ìºrÄµ½Ã«7g#=ÒŸ»ñü70ý¼ £¿€jç7Åx1Ï:¦¾ý‚¥½Çˆ­u¹Ù#v«7ÆpV	:I'ñ"NÑ¥
k¤t'mg{ƒ´_•´³xžåÁ‹DS[Y½Ã³$çú¯°®OŠŽ=¹KäîTÈEþl¤X$\“àÝŠâË³+Aq-¸A±ÁUR›{–×Fuãéâà,|ŸÌaÊ‰?½³ËÑÙàot_ÃBáÔìß~Ÿwvƒ/Þ—óE1ßñŸ$eÄxo´U›¤ÕjOÎ[ª­©u{j×g_@Á™ØøÓ;¸4ù™°ß, êl˜ß˜Üªcw{{›úúïq±¾}\aYy}vÜªñp„5â&¿ÌŽîqªŽyÛÛ»Û<ðÿs‘ÆA–0Rqpòô"0š„Û]¾T¾Øþ„Tz±#Æë"áî¤uÅR`Íîu«Á8(uÄš·x±0xsÄ{ç£ÑUæÚÞÞid®£,ËoâÙ,-6‰½Ò;]_ÕLŸžš<õT'†£dË–±é]_°Zç¢Jª§Ì‚Íà+ã ¿IJ¾Ë}ÓnO1·ûn@jæMœÜÞQþ‚l™âß70€tòîU~‹ró2O²œ‚faQ8&Q"3ú5—‚ºWÆS@'§ÀŽEƒþIn—Ù²~ZÆË¸€Qþu™äú„îþtUa£Ò¦1‚—*†üj£/zg?‰‹–ÿLõÎÿ
_Žûm\6Ê=êšLÜMy_Xv	psˆhbžÉfòå“	«2èÝ3M3…?Û4§PA>§óOø?Ò§ž†S4†®
z”w~YDÕ0Š¸j@ãêUqÆÉ6ÛûÚ€ÆE"QÅ¬!~yÉwtàŽ¼çDøµŽÐJƒb˜ÄÓV'½*ûOËÖÑ§Å]Êû~Y}:º[–“ì!ÅóDj¬ÍÉ<úñÜîSDäîÓó,H5T/á)`­µwñ9&Â §IGä,½«—ÜäËEéWú£u.Ÿ@QÔfØ;íèaJwdFgy)ŠýðpLz€eƒF1u”ìç†~ðùŸ%×W‹YLÃ¨¤È#3°z'‡Bz84TÄç.Íj6w)¬(¿ÉÔ”ZX-è¾yRuÕŽ¼ªÝž:ª™ÕÖ3¹Žh;²s,õH@THö^XH@¼($–¬C%ž]Öv€0ŸUÅÛ_¿0+†Ò¢ª}o˜0º8Jid™ZEÛ_CE,c¥Œ@;FÃÇ¡šÏ©Ä L©3+6b#‚¯‚Š–yFæ¡˜”–šäó¦ÙžóF;›íÐÃ>¾(xW”Bže@å×ÑTdéèº*L‹²Vš’DÌ1×{=§RÂÝ…EpÇiƒ!…“v!+	\äYÃŒMoƒ,Š–9:ôÚ¥¬«xÄDNü©¤,tº³ðÓêðKEÇeˆéNì.¿¼4™Ph|°Ûhc»¬úê,:@ýEr—ßÌV6†íˆÄÀn­+ä8ÄØG“Ùz‡Ç£&²¸á{/c ë8œ±Õn¦³êçÖÕÑßíÉeUQ^^C—™jøi+UÐ†×Í³“â:25éÕõéÒë¡}ºXzõæƒ0¿11{´4ü5ä…_¶¡+¢©È™.þ$ÌîÂÜãaXã|5PA\QÕñè'k]¡03k~*Pzåüf–Iûˆú|*~ãb•cõq:Íò(ž¼}|üo´zØózŸyäsð»ˆ½'|¤QÌŸŸá4†	“Ç¸B4Ö|ÿ”¦"ó3w¸BÈnijá”úysqLâûý“÷ â˜uÅ—ÅoKºgõ6Óå,ÄUÄ†Hê±¾“ë­©á]Ëú;<;àzôÁ~0KnS
¾ö¢íð§#<†ùdâª™‹3µœ³+>Â´72ÿÍYò$ïr§£MU{tvfú×$T(ØæfÑ×ïêH¸Ìà0šÂ¤ÐmïÓŒ­
Í‰}tyxrêMÂ3FÂóVX'T+t÷Âå™?	»Œ„¯\$0¸¼{,ð¨íì1€ÅB¤\õD \y“ œøõ$øó€NB^[6	h´À˜ãÚ/ËÉ‰Ž"Ék 'W|ŽJIX`Åši”*©A„(ÃìÖ"í™áøÛÒÈ‚Ïš(3J<þz°®Ì8ùþ¹ñaW}Ø	ÎÔû=íýsýÃ3õa÷+ãËWzÝ?¨÷ÏºÙaÞ©Ô"ÜX÷6ìPøõlðKôšõ2Âè†¢eD¹å°âÈ«ø^é¼ÝÄ%ZeLùJÑkVÆò:“Ø1§XïÍeí;JÂ¹ÐÎC»a©ßNÙšM‘0nGšûô¼Á}Š&¥‹P4&‘RõýcŠr¢¡—W—Áè‡SJ`«ÑÚ;=]#¡ðýéèú\|Uöþg3UUkPª/2Û˜iGÚÎáú Bw;Zµ.¡#¡6´¡õ¤Ú;ŸR=ä»6~|“LZÃËB§­DâXç2tÈUÅXj}¦ÖÞdŽ¨Õª_®ïÛ—÷.D	­Öo1Ä®}ïB ø°þYF¸Úžbæ)'®=×0ÏAóÒ¸Bw ÷pðdP]|l¹naö"‹µ¶(:9â88`™h”øgXˆÛ^pvcöÇNÝ²^ã#½ôöžVz÷Yó&µ¥pÚÐJ:^4Jp•æÉäyÏdáƒ‹Éµ®QGà)•B,u=T‹˜æ‘ZXÞ«‹cDüÞxUo$Tïv;bÕƒˆ˜uÞ{Ùy/Q»çßy`ªì„ôˆ½×@Œ)ÉÈF•	pÎ(Ž‘ ‡èC¼~žÉùÍ¼ˆIì¹~WÂ @ÙßœŒ€Ñ¬ë¢ð)ëGü©³‚ª2|D©–ä–ÇÙhØ^Õ¶ùGDâ˜5…‹ð&™A/Ó–,ï^Ñu…5ÁÂäôâÏú??g2Ö1bèìGixRÄ¬¬æÝª%‰iœ€¼ÕÁùÅuàëIÕ¥Üšôà9X"5Ö	çfÝDµýp~ô,æ9Æ­1zØC==ÆˆÖÄµp†:£½½Ç¯b˜ q‘ÇöìŠí¡b"ééæÚãñà±±ƒ/Pöu|7Ý¥ÝLj®êƒ0^‹7Há¤“³mzàüjc6úA˜ç	õ-ßÙ.¨²7gõµÄª…ms.OXÛp…‚£‚á‚%ž&5‚(¬êQ•±u	ö<v˜³¬®¯¶·ƒy2›%EëâIauüJ+t¾.¯íŠíí˜»E<—H•éË'¶É‚ƒô o{D¬‹|ÃJj×Eäik&¢nšgsOúør¨‘>OQÎ4QÚöƒõ´gÐôXÛtÇ˜««áàèï4uõ]n?àßáNŠål¹²UXâôB3ÅáÁàÛmÂðÖ\/æå(1Žl[Í£ 9ƒ;˜Ê&TŠÐ<ž%Ø,Ýƒ¬ìBÁ O©FØƒð²;Ç¤‹R‘ü£«”:…ÿcÎ@»×CÈ²?²åsûÃ1xvÕ0¿YÕßXNs¾«Û±ê³ý*ÔBkëí¡¶8×ùö&/syxß/¨«æ¬ -ŒÐšx Á—hjmOÎsôhŸÞÀÿr°¥+5ËÞý¦UU“t^)IT(%åëºÄQÁâU&{kL+þÊ5±(q½k6ax©áÉ4¾¾Lã‹éü ùßhóìýe\ÃYX”	¥´1ç¸ª Äµô?Ì<š­¬í›Ø’ÿàq‘Šñ]xŸÔë¾ÎsÌ½‰IfID‹j2 8ÄËÞ¥Û[°úŠ¡Ú`öFA	&Xl¢1í.­U¦ðÇÁé)°ëÙàï¶}UßuÌ ¡è÷&§¨“ÿ*„lOýÜâ¡Ô¬\|rŒ÷h	˜<tÍ€ë»<[ÞÞ-¤IH„¿¹~]‘”€¯uÜ[jÐºæÍ5ë›§ÌŒêÔE’”î}K¶¸¥”ÍüÅŠKÉ?ëÝƒxÚè¾KÇ?kye±èÝê¥Ýêå‡¶Z qc¦sª’ˆ»¹ð&Ì©Vµ”ÇTqañ+üÁ_äèóþK-·ö}A9ŸçüŸ`ð?2	0´»O1}8è³ý–¾Ø˜—Ž¤>wõùš´Ï×‚}nNô¥‘Áfa_Ì"ÕXƒ­~Ùt*å:^Ò8Ÿ'æ3ž<Öƒ¦_°˜·«áãÃÁ%rÆ}¡ƒííÚ`¯GE-o<9¿>“°Q;ì!ÂF-€‡ª([*?Dó…0ÍVD8a´ZpâZ 1N£pðÓ€àŠ_›{|0ú‰à¢6¸C‚ã›¢Í4’ß…Cã¦^ðèËÝšÀ—'çÇšüx-ÐW£á)ƒ²›Ûwp	TsšçEÔÂ¦gg#ÙÂV>€&2Nà+³FhÐ|p‹±úú”C·R‚FR‚µzx  I¹´"s-('ÙÜxªà—>ð¯6ÚóR7æ$W‡vw}}D%Ÿ¾ÇC¶÷…,‰¥u.˜½KD¼DäU"BðÈ¶ ›R(ÒÅÕ:Ó~øAh­3Mã¢kT’ïP['uè] ¢QC~iëB3ú–)~[ç:Õ«oë}±5åW…ÜºÐÐ¾Í'i·ÎÍïù@bo]XÞ½Àx‹y³}Ê0¸.¬ï2t‹<wpx–a´±¾e@(®KÇ»ëÒ,jîp­JÈõ¾4¶;[ÊbKYìSÝ¯3Vù±ýix“'æGn9¬Ï¼FZ+À:Æ¬–Cˆw¢—Aðt“›òè¡·7ÁæÓ?Ö,æÓmÛ±‹‡aœ4]F¾ZJiÑ•dæ¶¤E°Fÿ±Ëÿc—ÿÇ.ÿ]þQìrJ­„2ŽqR`'tìŸ¾Ó‚¬Ä’ø¹<ÍË€¸q°æ>>.zîŒ+Ÿ‹‚¿s@h5ÕÏÏEÒ™{_Ô×+QßF ™›	¯.¯‚Yî5M‹zü³ÄŽüÓˆ¿`[»
Q64‚NWIQIÃ¦Z@¯E¬ô`]×ñ)îBc§§Í'kk‹l.
ÛÆæ"€Ñ\¾ô¨i.ž0’ ¢–?qëÅÂÍt—†[®âôVž`´?=~cvúà,,~¡sŒ½“×,œ]‹$_[Hìš"»¦È¯¦ÃYsë:tÖe¡A¥dt_|¹ûÏ)1 (,×4åË2æš3Gä>Å3GfÜ“"á2jjjjj­ÍòZjìZ¹2ÕL®kXŒ|6¤XZ8Aåš8ÙÒ±eñ[Ï…‰+d…I­(Ý¨xd¤3‘‘¾Ö‘‰¥f2
"”`&2TçÕÑ’Ñ:”Z'€¬Ný³VQr‰ZÛw'Áìq(‹5c…%‹Ú’`:.n6¨ÎSkZ72r%ÁldåÌBV6tÇ`2Ò	:²Æfò¨mIãDŠ¶‰”/“k‘âV«³)DÓÅ /ŸëIÄ­<háCÓfMnÅèëZ„´ï¥ «—„Ë6„Ëžˆ™§ºå§Þ êb9-{Æi§øX)5&ˆŸRcYøÙ5Ö€Ÿ-ðJÞG=×ëÕÎZÓ[Ñ5ê&eã¥F¼ÔC±ßA ûj/ì%X½¦— ôlžâÊOý^sÙZ’ÞÎÐ‡ÇIÊÇ^B	h0Ø¾H_ùŸ?#¾fn)¹Í|hø}oW,êþd­ê¨¶¤?v“àå´·=VÃ†1;	t¶r{÷=ÝTÜg¸«±ïkk‚J3ÞA9ð:0oõ
Ø³®äµ}Æ±zUŠ;þ¢6EÂgÆaÃÏÖx÷áµ@pº±GPqäæ}ðÜã¦ˆA6·gÞ]ÉzY~Ç¦àõH' ªVXkk—Ke®¦¦ÃC£©‘%°XöÁ?º6ÚBêÊ¿4Œ<jÁÕ­^é5g-°\öiíÕõ…ÑZT‘þ­ÅÕ²³Ç1­eúKÊ3Ãt™ç¾Ó<pp©Sâåñ,Ä³]`§ëá<&¡öt3øÛßþ¶\á†‚—3£kÜö­ß,§L6âu¬ôã!™”wìç-^óÆå\ñ.”z™mf7LÎ’4O²4f·y¬Qa%ÉÛ=LµóŽ|ÂtbêÁÛÙ¥_ÅRgÛ÷1iÚuŒvk<a¤cv¼âýmò.øþ»à/úÆ¥òßÂ‹ÿç/ü²w|±üåË¿;ªµbjC;¨mWC­ªþòÏm*ïNFÍGš^÷YO0Í§·bG*9¦ƒä7VsKÅ]êUL5éÎú@3ÖÅðôÖQ—s…vâ‹ Ÿ¾bl ÍÌ'{ïÅ}›¹{Zõ)³¦YñÐÖ“ígï÷¥þÜÐQ8
(Ð$$ær©ì`½
òoÂÀªÿ\òåfñÏu “3Æ¹|è¿øŽ}ëÊÍ’ínŽ!ØÒFÂÕ!6¥Zwo±d¹ì›€úøï)¦/ 7å˜ýW°]¶BW°[¨r(|+YÎÚtÍùN\E¯6›8Û²,OoGü‹dcÃ™[žÝIsýÄ:Dd&¾…I/¯Mb·Fãm$
øÝÔ€W/P>.bG	|­
È XCŒ-0aürƒCóãèŒÒÆæ¥ñ-i&¦ÊŠ€®lB&/QiÞcßP¢ƒ*bè ŒyÞ›0ú%ÓÇ‡ðQƒyªÆÛ}Øé‹o7ÖŸ)±¢œÄycK'	DðµhfãÛüfZ‡ˆ?Â²Ï¿«v,vN€2IF×ƒëW£ñõß/‡c|±ßN$ËEKCR{°öaÉ‘ì’â>\ÊŒ€.ïc?13%-ãFE3Õg'ž4ot'{ž8)÷%YZe­¾âÆçâô'ndÉ æ:ZÜ&©á¼E2a±Ñ<‰ØñüE"€ž0=Šs|K!ÜÇ<»ÐK¦¡ñgþŸ‹<Éî€gìD¨ ˜³-Zõ‡Ëï¸k*?îˆu.Ò¥ëÑ xûõþ3Ô&ØA¥–Ì°Om05ôÛ½ý=	;8 hYiÐƒw`ÓþÄ,žxÃ“ë’Ýý]‰„OTj.ÿ‡N`\m\¼&—‡'6‚ý–\ƒàs
_¡\gx#
¡‘ãÀÆ¶½¿­c»„ÖMóþ×ŠAªŠfFÉÂåà…ö|!øÞá#]«.¼W`/Ô$aWñ4ËC Æ—Cà mKÏ)%©~¢ø…„ü-¡;¾àöðkåŽ	ùõñ±v*XB¦tÚÒ3kDî|eßÆálaUÿL"|&AE‰	¶+Áö$Øbø,tÚ±>	œiA‰t¸;fîôoÛôOÃ
MìŸê	<Þa‘ÃNÎõìŒ9>Ö³~álÛÙßSœNYÏîãü18Íné’ßÛ˜’\GxeÁHŸ‡hß «ôÃˆÉx.&£Û–(ØÛÞß}Q/¶í‰üõþî×ühjõ2
'œÄÂE#²`Ÿ1b-;»Ï÷wž×Ó¸cËŠ¯öw¾’àü8ìùhÈ´¯Ã{<4é Nqs_çì
¥zmÏöw”4µïMg5nos´šbGÌ°L'2×ÖÛÇTÌ›¾šAÔìíï(y}z0gYO0Ýœeâi6ûúb6Vµ»¿£¤úeO’¨¤ÃM§ÐÒ4zt6ž5X4¿>Áûr¦7ÒúAM›Añ8ŸÇ`wDÁ¹¸&4PÎ³ÃA‡U?“üŸz>Ýµøtg{g»žOw-¢¿ÙÿF'ùüo"¡Œ>mÃÂ¨O©©O^ì«y­uC	ý¶z,'kÝd@yÖgR­¶ö*†ECû÷VÐ¡Þ•PZ”½Òô({áÒ¤Ô”ó¤*yÔzÛêût²(Ì¯;ß¸´íÎsê9ƒR
4Æ	dUtâ$žA‹™sE|æ Œoó…¶gƒÝ³ˆ?f·¢Çª0ƒb>±I¯¨Cv]àÎîðsžèýúêÿ\_`|rDZp[©îbÑ\êüâ||q9¾]ê.”,â²h)úúl<^tË-Ÿ5—Ããêð×áëñéëÓ‘n˜“íÒ\xx~ôêjp~8ÿpuñêr¤›ýP<É&Íå/¯†G'‡×ƒƒÓáøtpÍòÈâåÍ/aK«¯þ:`µj†YÑçƒ³áèr@DÎ_®N®ÿÎòÒªþþ5lF2úi<.O×'ç#ËÜY.“	^P×ŒãÕ«“£1æ%ö”&`Mk­£Ý&k[+;ßìïh2v¿'GKp;É6w‹>”}&ê”ç¶ôÑl¥<o4S†ïKLî;	Pg“ªvI~’+}.^üÍ’£3ßÑý\ÒWÅ+EQ_“Jþ†Ço[?ÎzP’õ¥Hó·0^‡9å	0WÅ?ý|[7†÷t°D¢¿åpLé~ý*˜RÓÖ
£€Ö•ÁQ6Y<!ß&«bÜ'AÜ„[· p±tŸUdb"öÕ”ôµF?ƒ¢È¢„ç®"/ðÈ	JŠ&”_ïí0F~P©Â]Èm¥XÚçûjÆ]çát
–†GN‚¿Æñ“‡ß»¬j©}.Y›ðµÿU£…{–M\øAâ÷Iì7á~¶_»lpÎü[\4bÔ]5”—ã*ËÇø>ž¹°‚bì“vlÂ«{o¸q2BŒqv¤£'„æÊ9ÏÒ-™¨Vi—Ù&×À¯1½EÛ:Glˆ>M5én°D¶n’2Àõ,UÔÒ´ékVNm5¾vl
“ËyÅ£Ã}(>1Á¡é¤¯èæ3 ö(þ¢šØÐ®u-ï•DG]ó|YØr~U €bï”ÂþBáÉ Kr¶ }þlíwË¯ñµÆBmÇÃ;Ç"¥DsûDú[z~çÓñ¨ÊrÖéô³ÚáôšÝOÂÒzD¢³[l€˜¦2ƒ(øÝÜEÞâwíØ	;Æœ+4]±sº€Ã4šeÅ2µ´*qŸSî;7ðÊ,Ç¡Žâ{X‹j•“¾hý‡Îû‡(a#„¿Ô ÁSNq|M†©Õû ßé3\\á:¥u^_ñ45‡ÑŒ²l¢¦]­$žMXÖ,J ö¥0!€>§£YmûÔÃ¢U [µ“Ú{ió]øQebxédáE”€ý¢AØ\Ìo–A ÀÄÀx•ôI„º‰Jp·N°leA–ÂçËÃ“8Xÿ<køweþö®øÿì`Y<=Ù=TDð“?Úøßg£ b;ÏùBŒ1¼ÃGroì<·6
"±Q P‚št‡íé Yý"ª+{€¸ž‰ÇruÌä&2 ,O7@Ü'¹!®<‘ é<1 Ä…$ªÃî¶¾.€bZZDèën¬¢˜›4èËzø>}0[al·á÷¹Y±Ý†ÄùòEýõó—z;þ3ÇX1œÂˆ‘ÓZ\ƒÿó{"ªÖpŸ³ïÊáXêižb™ŠØe“ß²õçmëúS_CÈK~yò4°¦É­kuxƒû7Ží‹:¡žäåDöoüBÕÆa’÷‰/}bÿ{ó^s:v›£ÀÍ}bißÅÄQ’Ç”»ÝeHOÒI¥úòig¼6qºUÆÎ% Ì–>MßÄùHïNlþ ,Ãè®¦wa²õiÆù.$ŽßG'÷pø,ƒ%‹cý LsÕwQÁ¼'äìp`›C?àÌöU£8ZÒÕƒ@"ôI,|¨I4ÍçLÛã¯ªºÇ·$t±‰ê|© (°©î§áCn Ø±‚ÒéCa Í ƒb'Ç“óª|c˜Aƒ?¬ar“dËlà‘,g·¼ZLpQx—8oð*çjïCÛû¬|'Ž½ío’ò³f³Àe×ÖËCÞgÝØ<“4ëg9¿©µ¬n4ËJ¯ýÝÀ}F‰`‡R©Ê4“8}6"@ËÖ…¸pô)ÙŸ«ðÝl2¶ƒU®ƒ—eþ"()=}F^´Xêq±\h6S.â¼ˆïÓR¯ÃæK¨#žD˜Ñ3±A¡9Å³…þÙ
œ)æôYVÝÈÒ_{³´áœBòã’ïä“zÇaðÌµõYbŠìT_mrzr„!ý`e°°N‹ARã%d1$iÀ ¾ê|ÇZ¹ÛÇ¶îUö>ùxÉÞ“IËGÌög™KÉ¯‰áî«÷UJªÑ5ó4RXa•Iˆ	ü±Ö®Y+U‹¸/DÒçå«®¤že*±DfßÎwùë@ÅÍ’HWZÂºÒ5ãEfäæ>ãio%v6¸º~Ê³[KÔÐý¨y—$ÅhZ|¨&*¹Ï™HµýâIÐÛþKÜ ëvC$‡–tâ-Üx/Foxz9Ü0Æ’v§*]üZ$üåI•’ãš›R»‚ñür42©#äÝ©ï‹ˆ/öégUÓk¶È³ô3[´¨ï;/d™ÿšDg&––à5L¤Ñ"Žð†z±<)‚eAF-ßÄr˜]hWOY(Va¯pßyWáOGWákgWáì+	ð)újYfi6ÇK+ußö5^—Ôí¨ E}FÞ‡N¿‡¨Œçá\`O&»ãâ”Ñ;›üÿïaÐ{²þÏî“XþM˜“ç
sPdåxè¯ÇÕçõ]Cm3˜'o¯‡g—&÷ÿBXÈcÏŠdYôt§e£¸Þ®àa7Zumé!˜Lx×h{S;75r65Z¹©%¼â÷Ü¼6ù“ÑÖ·;»Bˆ13Olb0F©…d1ø†Q#°X·\gx37.¥ä¦hï1o”¸”²•Þ¥Aïò£Ð»tÓû*g3¼¬£ª_U©®!7_ÌoÌÀ]z£EÑ³+àˆÊ ˆR’õ8‹÷4®úQ1n@;ØVÈ4Î\b¥K<ä¤í½°Zð€(ˆ¯Ç9ÅY<{'DœÃŒ÷,6Ž»WÐ»{ø ,4b	\2àZ·X—âž.Uïp/ânŸÖl<poÉÎVÜ¶c)vuyvÀ²Ô³
¡+V˜‰wQ9×-½Ñ|·ôìrÞ2ÀŠ÷–Á³¡5G@
¦Åç¸’Ê¢R¹™7ÑSm£sIê3ú>TeÍÓr^Š>¥‡büÖóåÜE´.Î{gç×g×]d8#Äáüå
m|¯·ñ}Ç6†ïýÚø·®m|ïjãûÛX„iÂ¤¾¤ü&Jù—0Àñ'ÊÐ8¦?¶„Ë˜›K‡4|x]d\1üH3ÕÉoé$©7Ž]h'²	ØÆ…~¨ƒïm×ìáÏ³	F*ãy<IBµ›?˜L5A_ÈEb8Å«È°¶SÒª[XÅ-¨…qª¸pzOñ>¶¿Fhù—PVÐœ¦I×j,¼§¼3§z€G**|HúÕ½üý;[‡|³¿«6LÎ³­£XØÁ€è	z1Èc»Ä³pÂ8\æÜ4˜Ð¦	K”šëµê¨xaø4ŠtË}qqçìŽ'I˜Œ»q–¡“3köqZŒÚsæxÞÐ«˜}š„Íuèªé0\”Y—J"¬$jªÄw¡™†Ò„e¿ÕR3%ã½u:HoóúÒX&è3Ë/—­
ÄÜù¤êÇ;Æ`Ú>S\0§Üx–…¾m¹P<Ï8µ(NÖ·œªžÂâvQÚ€–{Pxl§>F0K·~‹óŒå>9ržÖù­}ï»Ÿ÷ƒ@5ÉÈCÁúP ÓÇ¨oŽØñCÍóÓðÈ¶\ºßOUòc)yMUcÞ×Çß×oŠUhîÙSd†Æºt¶éWÉ×kŠõžè,ÕX©Î|ý*;úºR±Räà¹dbÒ\+ãá¾ÎÏ¾nU¬éÂ¯YE#~_Óê×˜»/ñ—Ds|$3ãWqÀÐ	9‡P öæºâK°3ƒÑOä}}džõžL6ØAY,ßv‚o¿e¿+¼§…<£6t£É54¹Æ×ï#û"2û"â}Õö‡ˆ<ûâ°¦/"­/¢ö¾¨A“khrï‰ãÔ$JÍ@¢´&(u¥"hX‰ Š²Å£ãÊ§&H%¨œ³³!¢”ÇÅ½Q
ïc‹+èá7Ú±Öè°â€&Å¼0É°–idRa­Ë#:z¯Hh\•ã­$ôšCìp‡}¯ûl4¼cfâ<™ºpá€õÙ°yÇÜ'óXrî:ê£Ûgcì»É:¤ö¤rCŸñ„ïžäÙÍïQ<Ã<VŽ½.€è36òÕ¦,¼ó`ž8ÃwáúŒí|õ$»:9.›,È¨}Æ®¾º‘ú*²Žèð‚ƒb`ð>cs_Õ‡nòÐa…hþá[‡SÜI2Ä½Ñä=»¬H4_ÝbSøãZ$Ä§p­/ñhŠè:dK6>ÎN|è3¢>¸S¾A?‘DièTŽ7QZ$„µZ ³,Ö?WB.ÒBÿl­	¦sú,¾6î¼­–«D‹;È³p… ˆÎG`þ÷ŽùŸ»×²”ÞPY›×Ì`ciªaÂ"ñôJ3¹>-â>ëKïH½¦Áb1Ã­qxñ¤P§Ý{Å†¬ -úl4 ‚Álæ™…w_+~È>Îfüþ‡äY€*·ÂKÚl2ãt¶,ît€ç&»Áë;) æ¶Ã×FhÆ7ücåk[üö×±S%öÿ·÷®ËmM¢àoê)úã5 Ê¼È²†úä	ˆ%óf ’Æ–hý	7w7HJ3Š8±ûçÎ£œ'Ù¼Ô½«/ )Ï·±«°%twUVVUVVfVV&Ž")i/‹¦ÃˆŽ¡û=aöî#BYZ‡H%52Øs.ð¼Ú¢R’SKØÄrXe£P¼†‡JÑ˜‰ôÐÑ£kE3éëÝã[Ân$îJô×¸n.`w‡ÍO_À˜7xòîË£A¢½*ÄC–¾Ä‡Ï
³Äwð@võÏáY1½‹ÑÂ_†±kÖ»Ãt/
¾hc‡sôtèðú‹]ÊÙ°(aLCöýÓÍD]Õ’ôú_™¬s9ù…B‰Ió"ž¥~ÑÑÄ¿a÷f9ùL6ñv
KB:Š@ccŸ˜npÃðÊ—bfNÿ´8"ßè‹ºãµ ƒ†&ˆû.ÑÙ`äh¯ðÂÔ^áÑ«½b±¬öŠ¥Ešî#›€ºÔƒ%ÓÛQ=7£T)¢ ¬yW»e\Ì$5Oì½;×9
ãÞ0ûQ]l÷6µ]ØÔvÃŒ{¯®Æ¶w¾0OáÑ{ˆÅ¬³@ŠäBÅ¥+„>}Óç|iœ/‡VÑ]£ >ÑëÏFÃdlÜ1
ê &“ù ±>×ÞúØ¾ŽÓK«ÜS]N‡É¸ì&ÃË,‚\NGã¸¼L²È¹."É0U…Ð#.Ž¬Û±Î=<ý~±±vNNñòUÀâÃž˜»ŸòVÅ¶4§3Ìÿú¯ ö7þùø±˜¹ºoàí(oô£#y©óú„ÝªùÊJæs°&ÀIÞ>„˜B\„¶1(‰òÆè-sN‘s½­HC’[åÆ‰êœ¶9À‰4.†iŸ¼“/ð#ß³JÅÕÓuòú¦AÒ#yñ£v‚È+cÇÄî¢÷|ç¹D?	§WèÜ¯ðúu*ï„ya¹Ž*£ÂëÉE$²Ÿ%*¯¾¤áVsÌa{q”¢«'Áéa.³!×ju\.‘g†·ŽÉ«(Ýzµ|ö^7Y»Ä4¬¸òó9<n<FÀ{Ž•ã"ß]¦æùÕŽ{½·@dÚ)ê&pŒº{Xml†¿†_` %:,\¢ ±AŒ¨`¨1àõ‚l'/ÕA ”ºÈ’	åf:ÏƒËiëut¿˜b¬(¯ïpø„—Vpx;‹AÛG¢"ó]þ¹ˆâ/“7îÆ;\¾qæ–hß¦Gl¬°5yûŠˆ‚¶¬)jÀÁÜP›AÜsÔ€£DeÕ¯d€®oúûwP¾¬À²Ûe,ÄƒIƒ0À@µÔE¢ÉÃ/Óþd5õj6ÒG5øÛs•;(	6´c|Î¦‘T*LWCnuíÆdÌÒ\ª¡°2–ì²÷á§	ü7
û‚Jø·'f½çû‰ŽwD4¾F×1bÁ.½`û¥QÌ1*ãK·ˆ£˜rDgã»£á¦×ÊÖD¥ˆlWó8»xÿºÀßMüû~6¤Ð¿ï~;=TCŒWå[Á¯1Ì]Tz{üì)ÁdhSá±Ñ€¦Ú8¸*ø”ì†v4U„7°ÆJÍªÚÏjˆWAßNÑ‰)§x9ˆÜõy/¡hï¾œÂ†˜ÉÊA‰”Ú+.Råíc8LB¾ùþí3üsq$ºyðþ-çoÆ'úR°ÊºH$:³¡´æ9L»Æ¨¬DN÷Ð¿`uðæ¾`ÁøÓÃ‚én¿Ïi’\îöàëÈ,FñüÎ:½£“WÍNïÍñë7­vï´ÙùÕ^–“aH²©Õ€».ÇÉåSÙ€þÉù{þÁ.i÷ŽÑó“9%ì¡»èÍ— éþ`Çä9£¢ó‰E°MNÁJU:é- jÂþ¬éKQCÌtŸâ’ $9Aó4÷èRÎû1:œ°üºÀ+F,¿f×¯M"ì;}|ºDÕü,Mv¼Æ»fàu5Î¯cïÒ! ‚ak*ØbW3Ëdô)_”>Œ?¬~SÁÚ¾ÇBêj©œbßmRîoCuü~\`(m»Ã¹gB†ÂÊên­óhüÜüî.ßy4²¾;ûé<J÷ÌÏÎ^
ŸwÍÏÎŒÃg4[¨¶~fOt$5£e›kfíÐó UHZ5jF=Aê`¼<jU÷×j8aÊ•ÊHŒ‰Q1–<	—¹/NM¤{žÞª{lQ»þ&vL"U—ZQ;þ&vLf÷]\‰\\žíƒÊúÜõâñx)ùõ«ûZ}^ž3\Qâh ÊóRÑ)$®š,É•N–8c„Î‹B…™¨LckŠ.-ChCßUßw½ßwÔ÷ïw2qƒê#¿êôV_š&¦*iÌÔ›4fª’Æ8j/y–M¤.~â¨¤]»š?;K/åË"åAÏ¿õ0DágºŒÃï½ÂgØï»E\ßùÛ0SÄõ‡3§ˆ»‹Ý†™"n¬‘¾‹ˆ½“Ý†.ÎV–Îñ˜ÁÄ¡Àþøj:C¯‘»(IQ9ø5ülo^âÆ^9‰CÖ ´D‰ÃÚàÁ…¹Ûy²‡:Ô„Æ˜æqçÉî“|£2Ž²‚£éé×ºŒŒUÜÝ
šãqÐ¦T—À üÑªaÎ<sU] ùR·V¥œ÷Ï~å€»Ùî˜m`(oP¿%ZÎWÐìO…vnI&B¬ŸÄé{Ä}É£i×‡&"Y}Cæh’ž-®®Å97ÝEðìÆ°F¼Rî©ðÎEpQø¡<°{Ú<òrx×ûäçŸ3®áz}
U	v°+:ú9fÏ¯=›mpã^»6}!Ó:ýzü˜qMëÏ²~ZžÖk:ðèÆpc£®QˆvéM,é§©¦K¿}–9|ïÝÊèþæðNI§$»˜*ü]w¶ÄrlÐ§JŽ÷”ÇÚ”É¿=òà8×”yµèÇnw·Þ~uJ8›ç‹4¾ÊŽ«iN¯	Ñ#rˆCS…a´³ìt	Š“Â=MmRÔË†è,Œ÷Aû  —Û;Êã‡1ÏhèNüQ·5®e¾â{˜è®gùkË@KÞÃOÍi1ÛÕ4Ær0[?Šg“ Ÿßy²¢©EÛ È.+}Ý0µ#M–`±·,—®‰×;üz{Û~½-TÛ2˜·%³Ò úi×G´Vzuzl¢‹§Ns:…è"ûÈÈðŠ/Ç—xakÞ5‚ËÙl€pÓ›Á»Ît1a€„Bo4î_%ýM‚Š_/&”c?>ÞµÚ¯Î;­œˆø&1?uÄÛHñk´¾	‰7£i­ûë5 øY_—æB	âÕñY³ý{ý‘Lr/2¾º)_ëØu‘À†¡®µ ó?:çgJÐ¬G®F¾·bê…¿©7ä]*g22ýÓ÷j¸OkÇ›W¦É×¯È")šùÈƒqøì©t™&[¿`Áº]ÏJU)ÆŠUG¶RUwabBbípŸ;bŒXG‡È€R-çÙu¾Î‰&eZõ#úî¢m•ËÃO<¬Šj-ŸÀ)Y¡	Õ¡ÆTš>f‘ÍÖnÙÔ^ÞE¶Î[5T5Q¯›˜NÚÁnp2xªÆ<&Y]RBCóZZ	ËÀ¡IÑ)›3DhÄðµQe€Ð¶b–Vó…r&éÚ•s«¼+T4¬Ð^Ë•×©£H„Ë,Î(¦V jÍÒjlÇj‰iº¢G…Ñ«fÔQcÜ¿]LÍ5azbÒðaz¦Î|TRg>r+nÅA·ÎeR‚ÈÔ™%ufÙfJúƒœJ³hvYØpêPx+ª#%„µÒ XËˆ‹EÓ­ù¥ q5ê–æ·Wb~ì  ƒ3ëôËêô3u†eí³íËÚfÚ™Ý&Åu  ×ùfø$IâqQ5*`OÒd0œ¦´Ó*3W·F¬9&¶óÍØ¼Yåøe	wÅ„¼ 'YÀÝ›Q[³ÛcÏ!Kß	z)‹6ôp:¼Q3p:íÁº±«VBi– á^Cµ|ûEG·× úá‡º9ûÛ»w}¬þ!úda"|PÔÑ³§</lƒjûÛ€é|´¦eAÞÛ±Ï8‰ rÀf®wúFðXíø/µìü`ÐãEsosu‰†qŽ»±;„*ÅožÃTlíƒKR`¶ØAtmýÐü¼«?·Ã1gù¹c’ ¦ƒö-<Ðj-ÊN-â
#ôd’Ô¹]q7¿`ª3ó9žsAû2ý†Wq(öÞr¤@½žÍŠÊ6õ*L¥5ôU˜¤¢k‰$Bð’ž*Ò…N3Íð$Ù§Q…WCü	/ãù>Ñ}Ä‘;4ž¡h"øMè7d@Êa7É€©GCBâF«:ü¸ì<ƒÿh®­c0ö`Í“=Ç“lÐðª¹rýTâËsd«‡pæR÷Œ"?›¾°?-cù©ÈË0;%)šîiÍÍ¦A<KûfÈ.±j¸—Ù[izPWÿ[ü±òò…ïæ¹×f²…—XÈŠ¨&ÕD“º4³Ã“˜Š9t=#§ñðYSÃëh[hYtÓŠ»¦Å€'™ìHqØ~‘nb€AƒñS™™EïØhãAîØÔðÚªežÉAk˜(HPg—ÿ@'ÎÍx6Kü‰> ÷4%j´7Uzýá°wƒ$h)­aÅF ùŒþ^^emÕ¬´+NÍ«´hF¶Få¯±0ªHÉ¨Lhª0>(8e¤¨òzBx*“«J±8U(gUéEjLrJs,ª±OÐ?{{r’%q.>ŠÃÐ,íµ>Þ—èý&Ê2Ó#Íµ<þµ&Ãü˜&–qÊ¶Jƒ6†9ÖU,ˆUíq9öžÒýÞ†RÍDSh[ÊhªÚg
¡z­3•Œ3…`ÓÌjzY5µ¬xÐø´Î®±š·’§»€[q–ÊÒ•‰,U4Æ0r÷QaÕ‚ÉMjôiE1Z÷?nc¼…„S:ŒNg…wÇÉ°› ¶÷s}#X	å7»uÐÀ(,!êEÁæâÀZ„"žnR‡òeoŽ£±˜¢gJàìBBz#û6v{$½õNZgX_H2¤¾ê"$êÙEªÄÛÌ·A‘õ{Ïá.rÅß'zèÇq¥)äíc6õÐeu$Ž_æ³i`Jºª:‘,|düý¸[gÝã£ß{‡Ín³×9þ£ÅŸÀû¾SÖPL^³sˆ]6tî!Yú¬„=5ƒwL£aÚ›ö)—¥D˜¨*­DC>,#ù„žÏT`"×äd5‚mÅ¼å;6eèé”’<àxC½Plšd+Cr¥ƒkCÊ}`ìgöIQtó/5ìñ¢‘†ì14£0ÓŸ…íË5ZdËi+†Ù÷D¬Sý¶~aáÐõ¥‰cgÛŸìÉÆ°aeý…=ÜNÇ‰¦3'ÊÏï8}®Ðq.·zÇ-û‘§ã~¦ãô¾¤ão}ý^v{¡{MkŸC°Anâ?Þ‹r´:Ç&Ö	pš|¬á£@Ú?Þÿ¢†K*„x™’EÞZø®­ÃQ1N	GàðÏÑ¤ÂÏSÌŸ‰‰£âÙrLc°|“ŒC5&,æ>>)Ò’å©Rkb6§¡ZÏP'þÁ=,-XA…¼ªk¶R¹îØ­;.ª+ˆKTÇ!Äý[KÕšª†EœX™,Ùz³#½fm?æàÒ»7üí‘UÒh\LþÖ‘ºš^›Æ¿¦O%º1âk û(¯ûŒ§Ò¤¶HYÝçºËkSË¨S~ÙÇP’8ÌYýÈ¿Í‰ ´#ƒB©ÈúÜëtÛÇg¯?I ¼½<WÏÌuwž©$È”hbyªw™CeTÖÃÌ‘#y1£{iÕJha2ì¾¾xŸPf5Gñú‹ä¢*rÏŠ‚‰-“d…ÅüMé$ï¨¥è¬Å=l±¥ÇÈàlr†D¢˜z™àaË3¥¼ƒªÂ“ªÌ1’%f÷Ì9òzæJ‹²~í<Ë*¸²\È6†î³:¡vŠYx/JÑv%S¨ðbm#Åu=GœP¯¿ƒÌ·©8ú)3Úy2ìÝÎâÏ˜õX&°ãL¿riÂ³8¦À¥©Çë¢sØ{Þþõä¼yØ;»@Äï·eTYa›ã}b¼THÈËaÚb¢Rl€€îê"ôŽ’CF³a ¸\—¼o6q:œMØKÖ†¼s½
övƒöûF°·_c»¢±7aÿæK„.öÇ3±>ßþ5ØÙ}þ+€î¼w ÓfXƒ8Èbá°‹hiÐ“^2èC#äj"à|4Â2Ð·lü1®C{„œ8ªÉ‘<SwÑéw{íÖÅy»Û:ãþ›±ðßq&£D´ÉåË'Òlv¼ÞéñAû¼÷¾Ùí*W}·ŸÀ†¸óÞ†¹±½³x²±ýtñžäQlùÇ€‚LÉÇ~,mZ>99Îk9§Ý]·]«Õ{N~6 Áv]ñì¨ð·~´AÃ<’Ç"è}’$Æ1<ÓÉ¤×Ë¡¨Ëžzç¶¹Äm<¥3äù>×õ>nV”Ò‹ð£“æëNïô?.:Ž‚œÌ cÔ+œÔŒêWæ¬ºgÛzn<`2@–ÃùìÜÁ,ï•ý8D8÷ÓýaÞ‰q,þï“AòÃ1þÄ·\àObt÷ù ß1§0¦¦ê%eîTë= Õœ7cO±ÛL±Û±v#ñ1*«4tF¸Iñö®à+<Ol‡œ 	ÏÕh,Ñ.T¬Þ.laNÃ§æü˜X¨ÝÐAÇØ&³°mÐL<ßòs;æ¯÷BMˆúKk›7Z• ÖEFKrœÈ1¯ÖKÜYßöÕÎ¸JúH…·šŠ8UEñ¡Ab@fG‹NŸdÀ$éM¢<LX<´„²,?¼qŽ’DÖ+ªE¥ìzŠ®ÐséÉ&‹¤dè’×œÖå²ƒŸ€IE `bÅÕ Œb`dÉÄýK€ÏW¸|0ËEaªr CÈÿ…ÿ×ÁBv?Iô¸c?n[ñ™âxÎ’¡©ð ôˆŽ±à!]Cí0M¼=ÃÓt¬´ŠÜÙçRÖô£óJ–Ø\Î¥¬Zq:Ü‹KkQ©L½°R½Ðª7ë‡I9–Xª^aÀ±œYÅÇ4Æ8i%q©*MqI»š9ñØÓ/wÚ°TÝ™íxŒ*–KêCÔdÙš§®Z›BA7µÕ4»ê®X•JÃWˆÆÃtÇõôÍP%ÊTÛ­Rm7Sm¯Jµ=û¨øf’Äv5!¥â‡
#IåjNµÀnQàƒŽ* Çb5»†âá ð‚† C©šYÞ\nƒ
d‰¥ª-·AbV1zÐ~àþ¬ra<ö—ƒö^2¹õ3cüRY,V³k(wÕy?Ã*¹$|© JÕ¬òÊ¼7ž‡ÞÞá‡
€±XÍ®¡ï$þ?T!m(V³k¨9¡pþ¾á /€S¹šSGŸƒê_ª€Çr5§ŽKIä­ÉRø­Î4_Ò—´«™œ©JkƒÊ­ÌÖ™Ö&é¨ïLz¶5,d±ÁëÉ<ÝZîÎG…œj“hZ^
YÕRyOÇ¼¨SzO‡¡¥æU’¡eš"‹{ ²X‘……È"‹'•/•°T•ö¨ UÉä8Ã„¥œ"
¡BÖ¤Á‹™—›à‹ß.®¼ñƒYðs?q7€,"PÈ&9Jã^¶=qžø
#Å¹èÍJ–v“NJGJ§3/Ûr)E»YÉlê®JSwU›º3šºsš’Ù´‹iMæ¯ÐšÌYnWtÙÄ0±e3/›&.éßKF…9€è…¯‹ê©Bo½’ªªUµ?í»Kl@SGô}½%K0yãÌÊn-ÛoRôba7À¬á’^”Eó3õºZÎCC‰É«Š…l^2£ +yN‘‚¯ˆBVÍIx¥GnIŽÍuë¶äÏ¬r)èXd-#þ?•>éæbäÂTƒ=Ð°ÝÜ¦0ƒƒIÙÊàBöÊ06y;öÔÞ®)Eg¹F0­¨LµF0µ5Î#XÖ§)¬"ÎS*D³’ÙÖ4O ÇŒ€Oå¶!Ê:_`LÎVIç«YåÕšæ‹äÅS®.“µðêui-qýZ™ËDÆ®‡’YÀÊ;"“‡eê)Z¼œ	ú»-Àú	&Û²khÝ’îÂ—ôZÞ‡W„ŽùŠÊ	3'U!tÌÌdT1¹Î•Ïô“Ù‚¯Æ•¢Ü@FK‚ékšÉcÏX¨î0—áT^!_–ÉRÝºo0u¯¤g° B6s^\NÿœŠzEæi*§MÔühRól0H¾– À…ìU0‹«Ô‹3õCtp.&?.dÕãD^¦4"D[h“£ª£æ÷x}°VÂhàš<aT‘ã4ÇøVNÞÑ2þ” Í³ l<J™hŸ?u`s“ÞÙÕ5-*¹·›9îÁß¹¾ç³1üUr¥°Äo²Âå»›d,&›ÃnŒ«U¼ýêÔÄ«.Üª‹ªU‡“Ø®Š/*W¥f3Î$œd\pA!={ªa	P:ö’	Š!}ÇK{KÑP•ëx+ž{xëì“ˆÖZNUÏ?©3
„sôúŽ>Ñ³!sü™Œ-n›¡leÂûšŒý%!«’‹Ü’»$£¿¤$S£$ÍÝ\¢Ôõ$.lá–%Ä\Vy¢Ï©·Á&þœŠXkkkî…PyÔŠ;WvÚïÎÙáÕ"åúSÁÜ	±PeÝŽ/“tâŒ÷ã<À·:3ïò[ºs¾R-êÎ#>á~äúÎWðYgèyK?ê^7(™Äð‚ÊÖüÝÁŽ#H…{·Òº$)úŠ@„R¿¥‚Ð•$Uý °Ñ•®P{PTÓÕ1Nl]¸÷ir® ðè‰ÖyN’û}ÜÔÂéÍeØñ¹/êø<ò§ÓNÒAœ˜öÜTƒÞÎ³Ëy„jË¤lPÅÚ<2²o?H2jþ¸“ÎâþUtûWÁÁu8øÌ19E|O‚@r@˜ñŽÓ€™æ£7Û8í'Ÿ…6a†Þ±xo»…$KÙM¹*7õÇô,`¯9á>E¥%ƒ~‡E7£ørFÑ[²?9Ý(-Á’a1âL~ŸPŸbTÔÝ}z^R†Ðc/Á-”|i—ŠJû‘Y~<ÎìÖBa%+7^%z¦¢Òg6–&hoWBE":°õ.›‘¹›Üò²ä>T²­Pdl\Þ`ø/hƒCnÆŸh+½^¯FT×•W}&Wà2û2"×FRÛÖƒ-›? ‰µÓÎ«ºˆÓe‡à"ìE´,ÉEU$,ñ‘Bd={*˜’û•‚cííê¯Áºb`2H–\‹€¢Qé`f˜§^!tVhÄÎpè¤k„Î²cf-ß\îû•oP¡ˆj1Iã½áþÐz¯!¾}í+të|ø¾úZå~;Ì~2†JAÃ‡ôKàrYª‰³0ª8*Ùg*©8¼Lz­8Û©zK[c&D¾§VÑB–SB*]1vƒuÀÛj€f_éêª[_—*$„I?vtKŠ{Ù«ÖŸyëÏªÖc×àBQ_â2C‹
&å­?ª\ZÚñ#°SÂ®Ânu{~{ÕGÁ×‹Qõ^Œü½UïÅÈß‹Qõ^€Xú5¾í{€ˆ/Õ–]ù–}¨$ùšDXâ+Ñ!ÒÄ1É{@Èb^ž	€˜\5+@¡ WÇž
Uükò5”7wì`ó„(Þ
ùªbÝ—C†Éº·ÉÕ‡aR®Ô^«ôßI£—2°¼“þuÛ*ü=wéÝÀ¸¤OÎµ3Qä…£úcA‘[z`+÷_Có»£Òß|EøòcnÒL9½ZÒÍ ø:4ébfZÄ˜Ó*1Žï¾†DÔßÃ$¨½¡¬­¬0«¬çu‘½£(Q¼ëÇ¦9ã61çÙ J¿MAwÔçåûèñèŸPÜH¥}UO)>fç”
¹“JEý³÷¿^bºð¯Fºpžnä4‹¹U]MzÁô®–“'`»LscÚ'öW³ÅtšsŒè6iúœùôN›ï(sÒ—&°åò/ºÊê„ìw|®UMI|½8Ätè¤ÖõÆÑ$JiöövqöPÖdPAhÊQ•bÄ±”«Ð[2vª«¨"p©.ÿ-[úñã@]Ê!Ú¡ÐÍô04*B÷Ô‚²Yº‘E´Ú¨‰©¦ÈÎJ¨ðwïæ£ñ"¹fz5KÐêªé£à>óq!ø£ýtwl98—RMj5ðjXHúˆ+o|VÒ.5m<›^Ulé¹qH>Ï{dÕ“¶¶Hnç0»¿Œa.vÄíoÙ¸™Õínzk^¦žˆ*¢)3cãÚ—÷Gµ€eÃMO-Š”X"†à ºÐ¤aŒIIÆÍÀÔ·Öò·uYÌo ³0(já[~/ˆÇ«^œÏÅÝjìÎPa6ÏÕúrºA›™*èïˆ…Da#žžÈœLöù’7;úãäµÀï’ùIyÖÿlÂàÙ–t¥00ôÔÆqrªËùÍª³Á"2É7oÇ¨_)S'.êø¬¤ã3£ã@¢Óeº=3»mUÎéô¬¼Ó³ÒNÏt§«í·BsmbŸ%õ–£ïT0² Œ–€ú{ÃÄ`gy »€ÝåìY öî;Ëv!`Ù.d ì­[œ[håäcêíŠW’^Ä+µšnÖA¹Â:B+ÏÛ$„Lbly”ËhªÆÇiFk_ó”œ²¾MÂÄÀþ[5%^2œÂ´"t¶Á)‡É„Oýåì!Ûwò4
O>tŠ‘µu*¥#¥Pdâ‘‘xÄM,R¤ó{yÌ3òLTGŽIöÉuT˜2A€°[û‚ß7ûƒ°÷7öñD<zi½O*ÁUœj ¨Ózd½‰½~¼G6-HA‚É'ôeQú±ŠMû¦?*Ã8ÔIQ‰êVo*žgÜÊÐx°³½ûÔI™#zƒ÷gðÜwBÏ‡•";£b?FòÄÌQæÌ¶ 96'‚JB%pµåV2å!Ôäº ¢ìPßãœ©
Utxak¹€lRÒèjD`ò€OŸöå®¹Of}g…ƒ~3½
‡O¼'Á¹7ž]›ðWÃ°
8*ù­Ã†Lã¯öJYEÝÂ¶”¾ì)J s|„nâ“&èäí€»ÀœÿÆÃÒ¢0”U1s¯Í·º³Y {Ë— »Ÿ×}°Åˆ`4öåï…˜Á0x‚)ïEˆ4Qg—k$O$óã>v©DÄc?P;¢ìŠK<®2R£ÚQ¡Û{C××ÂÏôi¼¾rPGË4Â#OÓ*Œëét6Z é…Aîó³V¯ûûE«×iýö¾}ÜmõÚ­ßöõl¯›ïÑÃˆ•&‹ˆXëÎN` G!ç\üè¥… ¿q0<ëôþèôZ§ÝßÍFé6™)z|zqÒ;¿h™Åá%½kzë´þÃS^Õ989ïpÀ=Yßx·[ÍÃÞùÙ‰Õ|‰ï¼5Ž€iš…ñÙ[ðüèèäø¬e–¯Šç+èàp¯[œFó¿Q4’kÁL`%âœ={
4M¯`+òïºª|á¦~Ï~‰­<þYñøIá†Æ[…çƒî[ùGþÌj_A™_Q|È½]ŠZŽ¶9ašL{ÈLåGQ›_­:òX"GXÂö0<êÛ6H0“ÜÄ„üÛ-%â›œ"7Ð!÷ÑØ1©ÖË ³•14Ú=k¢y±•,Q°	ÕÄ,Ž/å¨±üƒÈ/>(«±2úú‚-”Èê`2fl83–):#´!ÞÎKàÝÎ«£sÚbìTÆíÂ¸ê²»Ä¢—oËSÆ¼ê`9Ð»‚êlVhZÖm	¤Õuóî6ËTëEÓÑÌ¨kÄÅTÄÃ‚;¾’¥d°Ib¸ÍÞ‡­w2²¼\8qå×†=üä	'ŽT®éš¨XÌ¦^ÿ¤d5ÙŽ YÄíDeu¤†`Zë*Í¡‡‡)ý"¨ô·G"dq‘Æ¡ø3_¯ÞhºË$%º\€/|ú"®.Î!2<ó`ŒgìCž~‚iúÏõõÆúü¿ÿï­3ø{IDØ¼ÊÎ÷®ùÈz\óS‡LÕw&SõE£lÉöm[†×£ñX)§º;™¿™¯É«MÙ^CÃÑãí»aý—_v?	¤î>G9ø‘(ƒø¸FŒÐ^!2x‘!,¸Ñí:†ƒÞG™(×¯7=àìQ©KìÊ÷Þ[KýÜI´/½-`¼q-6IÅJ;t]lÍXW~[U/”ClŒßòGqÖÔIˆrº,viM“)äý7#°þ¥;·}DÒ9yÕD[ôÖÎ¶²¾¿pßôçî+’ÞÉ¼¹›]ØRé÷Smãôk“¦Ð’§q*A¤ ”/ÄHKÂO¢T X«´	È­ÙÞÊy+ÊžCÝ{ÿeëédú-¶
ãîÅ‹ÿ–)PÕ¯”«æ”#ø ÇG¡ÈãP®Þ1Í·JV1¬(èŽŒÃµ%ð'Êó­Ü¾œñ?§»¢lT?‰‘£KÔ¢ìöù?…Á¹’ç)u”hÍB ­‰‹IÝËü&Ñ´ÁîöÓŸëŠ>ªj±®l°æˆ'CégéÅ2ioÂX¯—·]Ë4Ë šýë×ÕÈ³ZrÙè…täÃÂÙ” Æ¼ß'ð·X1ÖxÚHåae5û¹ºd!àI´ŒÃXÌâ€%’`Ž9¦©>i¤ÂU)·ÐÎ^‘êŠ£[L)‡©—€ßÊ£z^hèÁ‡©s_üž2½ä`@ˆÂ<Ö"øR5ÎR%3esFä¨¼h<W‡Í¶¡BÙm é&[«èMUUújÅ;ûü\Œ(Æ3Ï©™_¶lÐFq:{Wñl1¯Öˆ‘íºð¦·hƒ³Ûôž~îa>wz¢A¬Û±îšíÄñÓÏåÖÙÌlžF“þ¸GohC­ÐÄL&RÈo`g÷¹j#¥ý±$uetb‹“èÈi$åç”ÛÖbÚgƒ¥[[øZË»FÏG†Ðè»ÈD·á»nËð3Ÿ\7Õ·”•o8SËÆgä~•·Ý?Q3?/Þ#F?K<ÔW—eGÍQžFN 'ƒ÷šåž¸ÄôdxÁº³{B¬)U“ …$õacwø‰÷"Æ²V5ú²OýGvÇ•¢
X”¸Óáu÷égmÚÕé‘ëžËà”g†‹ÙÑÙJ ÎÜÄ0.Ç2ÆQiÈ¾ÀmÂ³¢S³ZÌò­jq‘×b1ˆ1PuÒ¿ˆ(š'•L¥&q‹€ŒÚŸ—Ý;]Q$1ÕNÃáÆSƒ¦­åpÐ\‡?U„3ˆ‘ÏÃCœVìÈÍŸ#®j?" ô©bû7Æ£~˜xTñ^!{Gƒ?U3—}Ê‚™öÉ™d’ƒ~ª
æ
PüT¯:SQþLEKÌT”?SQõ™Šòg*Zb¦¢ü™ŠªÏT”?SÑ3åÏTäÌÔw`ä²´8T*œdâ4{i^r £ûÖÛMd~uï2þ‰ù<Å·â DKÞe¤’ïŽµë|ÐCØUÄÅAQûO¢@ž<MåÉ“{‰¡ýVíOü?-+¤®¼£Ë}5çÞÑÊöl\›6úóe/e»Œ0ò…×.oFøS>ÛxOÑ‰+QšµÊÝUXÚÞÊ*› j1Nµx$£«»^^Sÿº²j*·bÜùÜëFùÛ£®úåÕb'komùQZÝýO×›ÇEÉœÏì\2)­¦ø¦®‡<°´žd”º^Te0£Ì`FU3ÊfTe0£ì`FU3ÊfTe0£ì`FUSí:Å'
IˆÎ’’¶=<Í. Tñd M¹ì‘Ã6ÀÁl1M…|0AZÎh[¿È—¶E{mXDc¨*GVQníŸÃÊ¸˜ü³[q¦ÖÕ$l‡ÞÒÖá¬†¬&´³dPÕêHm	–¹JKóÊ-þ.Þ]Hv/’Ša¡§‹þxk´˜R°±-˜åË2ÔoFÓª˜¸-ÙÆŸ‹pŽžE §7®Þ‡q¼˜§¥à£ïhNôMSbY¿÷Ù”ÃèÊyT†ÕL®ü
Æ2=JsÃç+ ‘à	órö
ÖÏG£q4Å°3ëçSú|Ãq5OÑLªX¬æWêÈI1×{ÙMåØ)T¼XòpÍ™:Õ$IJíÈJ¦4jÜ´0Ý­ÎÞž*ÁðŒÖ9×+†%ÓTÙWqÈçòs¹ùx¬¨AÐ9vÓ­=²ØrêN	‡ÎDxßßSz@—
ŸlÞå,ÞjìÂhÌ#âMK46÷7Ö9è…=#OYB4Ô6’ºjÑá÷â¥^/ÎwÖc?eQywt¦PyÇì48»¤MUû­¶«­3PTàñhÞÊk3‹k‰¶Ôžá´ul·uü0mEUÎ–“
¦‹q?ŽÒ/|áÂÇ-ýEƒÍ+åb(–T.%Ãû‹}ÚKñóUý®’Ýwê¡rÀå-úJqèžñiÉòeà‡õ}„Má±¯„ d¹ÿ–1•ÙPdMMKÉ×P)ƒË67ñ¨–lª9M>´¤Q40Û.:‰$”³ —\~ßû¸õÊ®–rúx¥Üc3¢‚×üZ×Ê“šÝn[3}UuFšû”¼ÓË"l1ä009³C´‡¾O)æ?næ Š’ lÿk\öz"×`óÇUxˆ&GBLŸ+Ë7g×ž1¦ðÍæ@«×Œà½s±›=ð5+ÜYM/ß¬É`Š7IJ¯ž¿2Õç`Sý\)i‡2’Tôä,Û~€Øº×a°^3oD"‹…áß¦­–”Éóöø°÷ö-üurÜéöN›ÿaP7`?PI.Ö:CÍhµK`HƒÈj*”¢ýàkÏlÅXº9œ&óšnc^ñ]ƒjöø§à[êM½NW¹É¯þpúŒØ#Àù—Úc®’W c8Õ´ÿ~’ÌÅ×‡ñè×aLAfã(¹¥\–Òl‘Fc&D}Àï ¹ÄöYe÷ÄiÉn–ßu¯\aV?ì‰}Þ£‘P{§æËìŸºßº¾ØLŠ×·ÿXgNî¤®®|ÀÝ6È]fPPQù´Å±g+[/þ"^auê>|Âôâ‘…ˆo3ÈØþ1…èÎýöÝ6g5p†öl˜ob“FÜ@YÙñ‘òZÝÅÁqðŽòúÇ‡y v+ƒê,.“/IN
€‘20UÚ·_ý4ä!æìI÷·v–s€3fiâNenðNQÃ}Q¡!¢>ZÌ +Ñi4å›ô$<S‹6754µc®IË£nwûãt9o.hŸÓ@3CrX°ñ‰"{Âóý$¡\©BKI|.¬<ÜtÙSÙ1N½˜ôïz jÎå›{KXUoË`{‘¾Ðw%\l|7s¾ÊR°Š¸O|5CûôI`bfPÙAŠ¥©¦3N!8µ’;ÀA¹ÕÊ¬JþÁò—»‚—;Ñ›á¼µoôq9grÃ7^Õ`¹Ã³ž¥dcÄÚJb,é¿NÒ[ŽÅ,q…i9N4¢„8Á×*ûî8ýÕ-·m ‚´™q$ñ…ØL–Q‘cHèæñ"M¡1Dn–‹Oº…Ìid…uä´ so;f˜ÁjþÈ%¼ËÆá-¯/?þZ|Ü•mãuÚ¿ƒf…'|ð=áÿbü2Ì¢Ìäá:îû–¡¯nÍClèÿ-Á«íÞ¢SBÕ6—ˆÑÝ’+¯…µ²W
ø.¬Ýƒü.ü•÷a†ÿ’±BÔpY63û®y!×àí¹â<7\U€êÀN‘|ß{®%ôä‹‘Í‰;øvø™•E$ò-°ŸvvU´CI¬Ãß7æñçVü|ø}‰VPáˆíZ&äâ˜¸N+–kŸé BýIc_¤D~k…"¯T,Âíý@†ÏCëG
“™P(,†vôŽ¦Ãˆw>4Æ1üZÿè¯‹2ºfŽ±ìÔoG·Ñ><m]U”àè‚»ºàQº8ÅÍœ†ãü{úzªKÃ.ØßºÆ5¾
Ò^ ‘6Œß¼këbhR‹ÆÔÛÞRnÂs¢‰â–ò2Y=ŒÙ†7xnX9èëj"§DEhùò	ÚTR¨(R]Õƒ :êóØiéœÌ®¤JÒ	t;„û‰¬³/œnäx°sßÚÚš¡!,{å1ë¨Ã‹ÕÂM$:AN#ô½|f<¤»âDÆ8„g`A°ÊõH<rÃZs¨ºMbF-[(LþŒ†kkÊsÉìËŸNZÜÁd(Ê
†k¦o6`c(¸ŽtÅ£HèòÊà¢š%‰Á¨ädã;¿†EÚKûWŒ áŸöæq õãIËl€Yˆhv5²/û<*E‡~<,QíIî¸frß$þÙºI¬bÌ¼©¨ºzégÿÁñíIO¼}&ÅœÜ«¨Üh2~ÐÛU·P¥eáÛÅã0¹A“,.KïÅ
Þ”$†Ì‘BãC¯(ßv8L*§ÚþFÛº¤cÅÀVvˆè*•©î–ê®¦}!ŽÊH¢—'}ßú…_|ØþüWPs^î|Â0ÿÏ-VüqJ7¼½±eškíœ:žWáTÛ›³W,dcPÌº»@“o¹/hd‰*Í²Ü³,¿2ÍÓù8ñ¤OòÜj@ÉíURiätˆj V\F)ßP†0NÚ~ÜÄ%°‰ó#èér1…qpÛO‚t6’	(âh­›þkŒg³y0ïÃÆMÈ{³×Çg®IÏ?>Z3ì¼5šÄ`+Ø}Z~„¿¥y^ù»ì5.n5Å!f¶5.dìjÎbrË5Ãp‚w²`4s\þ,2êâúŽ–	,`Îo˜ •t«£@&pqy®Åt½¹r¥ÏáA-ËÃÄÊÑÎØóã}hÄ \ÚxF´ñì/ ð.­Bî¤PHX‰DJ¨$, 9¥ËÏjèN«‡øªˆøFƒùÌ`Z„gð/«F
ÀíÝ;y÷ÄßƒþðOv›V8çmvûÝfô‹QOnû1ƒþµÉ%œTŠËªk˜¡ñÙS€¯¼ë	D”&ÁÏ•<D/%½µi‰^“
a©¦¾`îýQd^ eà[¿ÀkŸ’ð³“øB‡É„ÍU¬£™Îjr¼êí‚ÖTÃ«!¡°½óLÅ`T’s„™Á²Ô‹s Â$Òé.4 <»5Í¥<¤#ógˆT:R	G¤Fˆr ˆä·2Z7ù’ï“|£šåët†¦gíHPjúÛË Æe›ùXœuŽ{Í“$2ÏŸå¬ãófYÃ1pÒ“Êö"Á8¹ŠÈÿQ7½L
ÊØÄ”
¡¶&C®žÌ`}¤0 #AI™/DòHÒõ‚(!ìUƒ4!Ky˜ÔŽŽOZ(lžG˜KeBVcTç—Áúd‰1CY14ðúÖ:Üâ"ðãƒÎÛ‹‹XÏ~=yup@n5nVFõ<8=ìµŽŽZ]è”©ÿ û´—ë¬ÔYEHÇåŽ+A:(Çé No;2HäFÔi¸àx}¡Ðiít~åxÏû†f„Y4`at«FljA/×ÖN~[3²bÕ".ÚÖ| <òï×ðî2cê_»~ÒÔôßòˆÌoå‚¤£vZŒ›„ì¶?œDSþús‡K”ò.‹+²ö3×1®VZ§#Ja'va×/`	ScO£yÐÙØz6Ä›n»É§`cûù…Ø8>Ç?Ùèv¹Í•û É½³ìA°dg-r8>éÄtRÃê†ùCp2)|ëÔ~E,Q¶nT–¹ò2Óì·rØs‹“ðjãQsæ´/ìËAûfT6ÅCƒîfÀîŽgÎMN®æœ•YJaî¥‚È(ŠN ?bºôy8íMÂ	¿¨=v 4‚ÇFM9¹ãwâì‡,q Ýõ£1'¶B˜¢AOÊ*Þ‡‘À‘y/¾t$72¹ç­9)r|å‚ßà.-Üvå^ká®S¯5h<ÕÉÂ¦ŽÆ³$ 6†ò—Ó\Ú§fBþŸâˆbÎÕ2“a £I:œ-RÇkOåRÄÃOF1[’'5-'’(€ÿ«R,N,‹“Á–†ÊQYÀ’ÈI±uÐ9îÁ}£cÖÐ<ŸC%âpuíñ[Ožo¢Ÿ\Ó7éj7ðÇYÇlÀM ½J†Ãªö>áÔV÷­Rçs ˆmøïîr¤Öð¬&±yÑ<
Šr+€»Ä‘Q8ìvæá Ô¹rÛáçÛ&xã$vY`iûng{»ßœ*,uMš	®XÐ½äeØ€4ù“f^vîf@§#{uVÏ§Æçélˆl|ÿ…¡ æ“öÂþàº&"YÃ'þÛPm­¹_ŽÆö«ný¢†MæV5ßÖ«1SÅG¸2ñ<“©üfŽÆŒs.Ž–)óPŸmÖqrþt#‹AÌ8ow[‡ôæ¢ùºÕÙ7rÊÐbj-&v&;	¦ÕnŸ·÷×Œ|t
Š©PXÁ«;ÞzÓf»kÖ£ÁÁ›°?N¯Ë½ïuNÎ-Ê€ÒA³Q)„ƒ7Í³×-TM 2¡¥¾5‡÷'s h¹Í!ÖN G9[‹§Öê°õîø s:žõº­N×˜‹C2c¶Ò0—në¤uÚê¶ï½9·ªwÃq8	ÑúÍ,I·Ž§QJWÊÀtÛ'^0:„A°ÖÙáÛvóúõº}þöÂ€æúõ•NÖE»ux|Ðm¾:wÍ.î~tS¼ˆÃ!¨^ýË1L`4|	.@aÑ~«m¾~màèÙºÁ(NÍ««8¼©³`›gM$¨™|™àÐkÕTÕÂ$‡.ZíÎq§Û:ëöZïào©0N€ÆÖ§ÈÉ«f¯ÓmvßZ´‰É»;lß/ssú. “nÁV˜#‹ï¨•£ÖoØ§C,3ZÉKèÕùyY»{Ü=>?3p}…žŽý8òûzxÜ98ÙË«Ã(ÌnÂø‹¿J»Õiµß5Eck¶O:žÍ°ƒ">Ø<tÿhY¬°Ë
bž(ELó"9æ„5¹w&)¯éü³f’fN"XÇN&MJ!kÔâ½Èë&÷‘LEªÌ1–¡›•YÆ¼M~‚ÃyÜHò«‰‚Â?ÂµéŠÇç³šªÇn.õœúd9e£eáštãá´ä˜Xùcx—Á¶Qúig7xE`³îox9O!†"‚‹Û³<äü®ÇÆôXæo5¢Z>ƒÑ…Wv4.ú¦œ-[W¢9ÿ~ù°³û\Æ­æ“l^Š&Õ™‹l¿À&AuÞýéýTaBÄ@Û¶cP¶~ÁNˆà÷'e/q¤»ŠÙâA(Ðy¸±
]“Cgaí®ì“L *FÍ²Æçy[îÃë%‰Ç±ÕäR$}ŸCB¨\uÜ&V"±U}gtu@1cYV>
²¾Àd bÕr|p¦ýhÌÞ‰É¾{¸øß±Š$²Àhùþ(ž **OTìž#òƒ)ÎÛÍ•a[9×Šv4µ—©)­œþsí"?ùŒ¿¬ëN6!³¸öWeÇM™÷¡‘{\)œ[KÈzÚ^ÊqÖü²„û¬5.6xÕQÛ“Ö.å89ui‡Z¡:îâ0†Ç kÄL©
“^€Ž8¢Y32UXXa(d.ÚE­C÷›qDø˜½ÙcÌ©®ŠxëõÒë8Ša?Ó<¥-o±0€Ü[$!»b.66|˜˜åÌúº(”(¡éz™wiÊº3å´”…X·æ0qo‚mBHÖîÛž/·14ƒºô€Í	ˆv‹Ð¸IH»Mt¿át.ƒÉ0¹÷ˆÚà<Mq¦—‡kKÃó%8¼¯(öUÇ2žY°vãto-ŽÉ¥—¶‡PÝ(½Oãy`ëu¿4éûzùdüéx¢çï+É@¼ó¤á˜+â/jfëã¥ô·þË÷‘b½J+òO~àÐ0¢ßJlÂÇ%&=¬‡†LÙZ©	?çí;:ü]4t÷å¾âî:r+Y[³÷Åz6œGnà+ÀWÐ¼!ŽlSÜ&ÐËÇü£ˆýøµmGúàš]˜Î'AWî:8ß^ÀµBÈ"Õ†>ZäÜ¤Ž#Î«ðåÃî§êðŸrž|T¹·fÓñ—{6æKáÿœàïyà¿›Aÿ†qŸ„“'Áeð„îbºújðw¶ëœc9ß°ðbíó?}Zÿ]†ÿ“<ëT7ôZ]cJÿ÷ÿ: y{üŽo¢©Œ>û™žˆ›ÁÒŠIÍ¨²¹ùdI9‚,¥ŒdJ'šÞ©˜OF²j’’ŠYÈ#¶#$õRáH\ýtG ß	Æö¬c¬ÚÃkœX‡fT	û}¨;ÿè²ÿ·u¢U]b†þõí0Öî"šËAÙÊÑ2õ•#$þÙÙÞÞ6ÑzUÏAÿ½t¤JÄY½D•nÒŽ8®Y+•j|Í+8Óý @N: }ïr‘|éÔ®ÖE‰W0ìVæ³[h`ðe0“µÕÀ› |Àac¾ž-âû—@ì@|èP¦Z¤ÃÙítÅ)p¡øÄUróYµ&¿8jˆŒ«5ád·ô^0·®! v‰¤-Õ2÷0`Á{¸!ú1 HÞy0›Ìg	Pq¶bøjƒed4àú+?·.¿&{»´C9W_‰µ—„Ód³·²0Mqé­Œë+š.Bs‹6qï tD¶vç¼U”`—øÀ¿½Š}•wmÝèuO`OûSØÒÐ™#èîðoVq±¶`Óë	ÍÎN®²×j‹ZØ]¡…Ý¥Z€>`ÎÏ*D`tÒ„fè,§ËÂßuàg53€ŸÑËÄ»`SüÈ·Úè`¬ÔôR Ø©²IÏF#>B
§Õº>±‘¹âÙšxôbFBF“Áå‰:ì#á¹FC°‰ñ•-€â6DÜÃò*ún#øÇªÊ>‚ª:œUÙw·¦àÞÔòB©å‡sž{7Í³fprþ:xÓj¶ÚÁþ–s§tp}5À5³VxÝæ¸µY>È	V–·Q5ÿ¢*ô½žÁza±6YiB£%¡Ì“â%EÓVÅˆ,PÎ³côÇâ …>‘6cVõTöÙf¶+üEáDŠ–ZFCs<ÜÆ©€sEš,ª$0¶jåÎ›àÝæì1cú¬H!Q$´¦Ö'ïÐ;5C¡·Ä½™—?ÔêÂžl—F^u™=s=Õ±6^Ùó¹ÅÓáò€"÷€p<ê¡gÞí^Œí[ìêm°‹¨ •Ž.<ñ`ø·lˆ³¼õsÚ’ÑßE„q(ã¨Î"ø	†Q¯´ö/Ù­„Bàº.VòžCiE3%OxŽéšCZTm¸Ñ	¼Äádv»ÓlÊ¤ŒâÙ„nÒêWÑkfñ—
p±æ<ž!cCaŽ€‘›^¬~5ƒQ÷GŽyÿ-„/.x;,âôm^ë„@x)6)pÎÚº`£A¢t¦F·£ß‘šf©š=·›ö¬B‡„K+^K…éEõ}|ØÕ¥8zÌ@·éž™¨- &ª‰QcmOC¢ûÐž,M©R‡‹‹€…á£h:GÆt€v™Ì2ˆ{‰*‘®Cjt¹š
ôƒOºÓE¦·'ÝÞÙy·÷¶Ó:ÄµN_h¸Ð,Ô†³0³3M1öR.®ç:ÂúöBäÒÍQèÒí‰ŠÝPts¼-.¹èöðÒ‘å©£;ÕfVáìþåXøl.ÝsS²•¬—¯„šívó÷^çøVMòŒ:Þ1Pd6ÿTþgÌ|ªG/ˆ­€s,9¼1›Í•ßPvxµà‚ƒ„ƒeÓ/¿¨Šç‡ðï›ã£®5LÈž@{J0øÖ0ÌÚ5q”lÝ•¿ä@ñÙ½¼U <¡µs™nû¼ÝÝ77— s‡öùëZÜ,Wq¦³@[ÿÑm¶m¸*’Å}@¿ëØ@…G{"<Ú] fÜlUG-§°ï{Álÿzvþþ¬×i½î5OìDÒ‚¸)·:ÁA€&€½ÔmG¸wäþtõ¯¦xï~`:pºµo†‘íwFànI‚ÚÅù›ºÕ´nÀ¹`Ïg×u5²5c•¿k²Ceóuïøìèœ.Ûã Ep+åš3ù…š¢ã¹Ü*4~tòªi7Ž±p·BOXßé@&,RÁPŒdl¤ŠØtºE°+.­ç®Œ(“Gƒt©¦ÜS#³-oÇïtKÊ[ÇÃkfë‰EâgMâ ~®ËcCñÒ.K]Ï2éÞ¹ž’ÅÛ ¼ô.WBòØµçŒU‰­™sVó:±ŠGáè
ìZšÐXÌ®atíìž1* <GN½_x&±y1±ðhÔÀè­Å™™7%ÿii^ìŠ+§¦`hÐ»j4,.×Så|@XˆŒPúÂ˜PTº)¥GXä
5§TûýrÁÙ;>«£9WÙxŸzlX®Á€4f<šê±<¿¢[•êVP‘:&d@¾ýÊÀ•t×ÆßDoÃÙOŽÅÍ*ÿÄÀµ®SyPÛw¶·1jÝƒŸ¦è“Ö6FìC€¨\°QÃ253PaÖ}<EÖU˜zjJžeD8‹<?¦v÷·?}L	B1a)£ *n¸–ÿçý$‚€…2Á šq8°én¼@g1ëÖ(|øyšÚ‡¿²=ÚGE0%%Ý	ÿ^ïf€ôrzqÒÂÛÍN§Õa©ÄÔG2šEYºÁow<><l”T*PxìÅàõÉù«æIï°ÙmöZí¦SÅ0½Ï.AA¤#¿VLùÕ@½Ý} 8ëÀ*•ûL_hA×0^—aÇÇr¤¡LQÕ.NÛÕª†S<¦kÂ3³Á8ìƒ¦ºJ9W7äCc¸¨åW4Psn*3©åGþqš¦ÑÚ\3éï4”;Püá¼<´8tKû2:n‹S)¤9Nãƒçw#ñÃµ³Y€MáJfC•÷¦NÑüÑ™Ìugï‘æ‚ä0°ò•2ò¬¼zaçÅ5•Íƒpßë9Ïw¢„š·½æí«²‡ÚI¼)ðA¢-÷Xk0,cw´c¨}DjõÀc´Y{ÿÔ:íó×õ€H¥!ñ>gh7°P=–cû²hôŽÏzØV«Ó©ÛûXvï)i}Í‰ð#¬Lß…øšó§Fèqß•0x?êìS9îcEmù;$o¼ÞÎâ!l²–>Wë¾G/!§CÆÉ•nd0¼…¢$Ù”q™õ–x?¤c1´çrSóŒkA³a:[½ÍWã†±DÎ½\›—áêÄ_æÀç½­6:¸G£ztÿn†2ÙF½tt§Ã‡_·Ý’ñ½O³Ö;í–Œ07ë»ç>â{¡f`µ‡ˆoIv-ñÛº /ßÙ—àZ°Ôñ6j³ýê¸Ûw8Õ}Ýø2JcÏ¥MUíâü}«Ý;}}jÞ@&‹>Î©Š×rÛxmsßº“ÛÆ›dÈ©×m^ôºo@y³o\Ê6\)¤¯\€V»š]rý}ß¾­ß}÷\UÍwç'0B'­ÞûÝ´rƒ|O´}Ð\ç¡~öö´÷ÛÛÖÛ–q×Wà¿-Â…]@U=nÿ"oó¤Õ9h)¤§iÇ‹9ê}ýq˜€$
ëŸ¿ÖMëêïÂAŠD;›Ž¢«EáŒ¿ow[½f÷üôø@!Â]o¦³IDÙhÎ}s 4;¿ŸÈûÜÆÕðé@\ž®‚Fóm÷¼wÑ1!,€QÌ&3Ø™qŸÙwÃsßYAÂ(½ÓÖiïÕÛ#Õ!Œ€^§³øKðŠ"¹æQãñi¶ÊÓƒÀn7™çTùO—þ5çAsÝ°P^;oº§º¡§ŽÜ†AÖé#Ï/:ížÍ¦[êÌê›Ç³§m…D Ë½ríðù_¿89Í¡/¼À)Úæ
1@HïÏÏßW€ô>šg·Œ¨ÓEQ®‹×ØOl~¤b¤x™=¯_DD¯ZošïŽ1
ˆ5O¯ÂëþM4Ë›Y}ñÝ½öžÇ¿T4‚Ö;ÐƒŒ¡Ô÷Åx%ñÅ°*ë	C¸¡$‹ÑÂáä:±{¬.¯'Çgo/p~»ísc;óhÊh ½æöêEÚ€¥Øm¢nöêû44™OÃ´¯9Ðr UpÖÑÕU–m®/©ÝyOZìQ§ïÌF)Ee‘ÊK-:T¤ò–d«óŽÄõ}c]ú#0 ŸH>wü÷}€”[þ x‹€è¶­G·†ö G‡f˜”£qxá²>Œb¼b18|jócFÕÈƒÁ‹%áØ#>ØÞ‡"Â÷"áÓþuyX¶Nš!×o¦Â`2Ø€ýG£Jf ’%"‘±ÁýR’Æ$bwaxaá­VB0{Ï¨wv‹ED·¢$èÈë Ã“_£ã–Èm£°¤Ú?>òÄºð	™qx…ÓR&Z"àµ%Oâ³-K¶[¯{ÍïjÃ<ut¹%r%¬õÎ˜¥wH^.›ÂBÀžO;ÂÒt6Â¬yPVó fÙºþþä³TªÕ1	Ï¨çd‚Î:cÛ X=ÆÍ Ä×«æocãÈj$ARÀèr‘úFºÙùÍ­ÕÍdýWX£9fYA8È@0ª@88}urîVKâ
Nf¾€1Dç
:bÕ!_òâ½d–AŽ1„½à¥µðÙÌ³¥v
qcæÇRß3%V ·þ#†ÔžùEÅÿøÖÒs³qŽzSžèÊˆÝ‡/|\"Ü\ä=záÅÆaìe·xRA9Ìð	1êíæÖatË¥ëT~š[™ƒ`ëf²©IUz|Ùïyóªe²ª99ÕÖ|#*æÚÄZ­bc¶uÍ&§2s­ÉÙR!Ÿò-Z—:·ýy å0Ã…ƒ<÷ñìü´xoÿD>>øüw|þy$rJdÑV4¶Nšóˆ/Æ!·âê-l°9¾Ä¦t/7æv.‡îK]Ôsšø1Mµ‡ Ÿ{oÉèFØ˜‘öêJ“î©çÈ§}ÅWF9ëÂì:‘û™oYnoï¬5Ò:¨ïÁ¤ÿ%¸ÕYÈ\ëÁ¾[fb1f¿A§¬©TÚ´¼¢šE@À¸×ÑPí”yÞù±utüã«ãóN>NPï&JHæòVt8y1fÕÊ£hzœ8J2y¹>¦Óñe°(¨æBºZDCiÝëšl&QçR”3Ä¥
&³„d<=`}•²«Ûqïª%.»º½¶˜<úXÕÙ,x?‹?g}/·RhÇC˜±>ž¦¯èê	òktA˜JáW{öo¾€ öç–þØ(*yUîfTÖ}¾Zu/vVè Ø\hÉÛé°¨øÃtö\·?%‚†a3{™Ì×Ï}­ßìyÊíúö(O¹=ß–å)÷T•û©°ÜOªÜ³ÂrÏT¹ŸËýlKEåž/3³î¥¨LäÜIŒ“­¾›ý¹Hmm8;={Ê*¢q> óA›fpÑéÊDšÖåšiÕ¬˜{»vbh<·Ø ¢´õþÝ“¼ªn¥¿ü˜–å¿ÌÇÆ(BŒ…ÎH.€¹Ä¨>kûlP;î^tëè·LtH@’Aë5F[z4aPz Þ·ïa%å-âÿ*13˜è¶MËg@˜têÆM¹Jh§• ŽÂüˆ~K¥}Ù"2õ6ØL3 a:7*ò?§%û°·KJ°R/tÝ—(§=¥+³ã0#Œd¯¾¢ïz>!e¤””´1=Ö…lÊ8¬ÀG$:ý«¼Td^”/j·Áî.#jŠ{ ø±ÞÖ7ÁÆè2Áp‘"ÿÚ>& ±WŒƒI	 @‚ÙÚeÙ‡ò#+ó=ßM o§ˆÂûŽ¡Eµ!
]š)cAæ›>YK…f’ÈË&OXRªÔŠ äÿüÏÿkûÿüÏÿ»èšÍ“òî=4î­ „yªZ¤³ù•K¼°Š].p7
nlru±C˜Ã“ ?‚_$Ù¹CátÉè¼ µ‡é )DÓ`ÇQB‰a"÷g‹dü¦ÍÛÚ{bk€Î"¢`“pÒc:±–’ùMD´Ü¼ž\Z~GSóˆïÆÑIe–“ó…á öæôð¤uPÏ¹w€·~¹ž ;ÔíY,j@WØãh¾…dtÀ¼&ú‹{5qR¥‰qA†UÆã¸ò¯—S"Œ
$+šÝiÒ»÷#ó€|šˆ(s¶;ãg¶‘Ú’½±-›gÞû<iéŸµöµÃ0IÔùÆl]OÃªËÔçì¿œ´raoa™È3¼2Q
µÕ>mžá9ì#+°60+4ng04lÕå¢!YÛ£™åÙ]ÂRîÔsáKŽþ¥V¼+¤ÛŒ8_<å°BeÈ®çÁ&³Ò—Èû_°xEì¥ÁÙéämÝ€Ææð¸rü~u¿ÀÔi0*ÇG¿ï÷„C÷¢®ÿ¶ð_Yµwxã‹q¸›§Ö›é¡EUŠJF!”QèÈçK Ëæ…ìµÚ¦™ ]uìè}'–t|‡sûÀÀï.	Þè" ®ÚÃãð±F0èuétŠü0Jøa¥>fØ-kÀ{}J§€Q2l“ªY­íEÍag³ÁU=ùh\BítÛ­æig:5Èô´ð &°%L¢4Ë´ó>íœXòòÚ¦phß¬³„ãÎ}Æ!›ÑÁÜØgN3¸š¾Ýzµ&Îç*ÑµÕÄyyO+5¡»¾8M”7ñ,Ó„ ÊÌ˜¶ÎÈIç	Í1'¯øb·Ñyßñ4±·k5±“ÛÆkÐ‡ã>ÆƒÌ¶„°©×¾6ÜÉØÎ•:þU“-â†žé¨2ážÏ´á›mÙF…ß•Sî¹sY¶¤DÎ‰GAgAWJÜEá OÈJ"¢*:»=‘¦ª>µDÚ~ BJg§Ù¸k¸ñäÙB·ad©õŽF­F%êÁ&®6ÆàÛŠ£ÓnuÎß¶ZûÕ©$KÆ©:÷?8{–8sg£§™ÀÓJŠÎÙ¥üÝ­S[vÒ¦N!3‘È$e£†&µr0Oóð®¡b×,FòË8œV¸„“
ß“ðµæ\Á£DØ¿?tjïA·ö©7˜ôV<=aoèv…~p?öµ8wž»-N+_ä^‘/JM˜RâÄ^¾0®4ˆ^UOÀQá³@-™'½[òB^Xz<ÿ¬%ÓSÐ>AÏž€~K7žÙ¡-¨vßŸÕC®¥›L·†ÞZg‡²V‰Þsè'nœaßì±^Ìþ; ¡ŒÇÊ¡.¨tŽ/Žë«“‡½”µn­îRØmºÊcCo+®d9F®‰ §l@~–u@¿6á7h‘N¯[$9
<õgcûé]&ŽØú%µ™&–Âb&úÈ€˜ñx,®„4LÌâÔŽOb4¼ªànýàÈ«‘«Œ]š::¼£½û{Ø¹Ç=9ï"à³Ð­3!1Êž3Á‰·•<
;×œÆ”ª™`UìwøÅYó”vDQ\Z1sœ^–4; î˜¸VË[8lÃ6Ü®ÜÆaÝ¬“GUoø{•´pÑnqj«¢‘ºˆÃ­KLž³ü)øÅã¤ZXn|\èþQrWÎïä¿{Ð;=?lx@‹a¿à˜Hèö6²Ÿv	äƒ7Ç"þ.oL®£9†ËZnHLÀïÐãôü¬võŠDt{Í³ÃÞ«·Ç'‡U¨Q§Ë¹¯ŸñV÷Ã¼¡ÑÃ>Ä-¤âÐ·Oß7dòÇE%y\jDõ¡›÷’| }™¦Õ°?<î\œ4/¢˜Ã(™û_–¤pþÈ8°«y^EbÄÔ[<À)w¤Æ@)Á(*xxŒ×b“`ÑÊ¡3ý*%ï;‰’ß
vÓ3}‰ýÆ¨F+£SyÐ*Yî,™À£ËoBq¹%A3Þ¿½mžôv–Ç<ømª©½;Ë4µ{¯¦v—"	&"4ŒâÔêªªe§`,i•‰VDgÙc2®lâß¦¸e”T²¥N-SÇZ^ñˆ†ð”PÞA¸GÈiB!$úO·ÿí™.ÄÊ/p¦ä+Ã˜ ý‘75‚·mœs%*… c07×‹Â(¤Ý)DY@À¹„ÏA&…"¬Çd:˜A'ÐrÄUz.H¯0 ‹8Ö†g
°Æº4ªgº'zôackÏ
§’)ø1Ej¢÷t‚·½{§ŽÞn_:JŠº…q¤@=§õvˆn€“fh4‡795NÂéUzYì‘4Ë¾£Óß@ö‘LÌtV«@’u=ÕÄ|PsùÉ^Tz5I.Ó˜¿œ–?Ú’ÖB+XŒÇæ™Ö(“ÞÚ{³×r=y]]³Ú{ß‡ðˆújíÍÅ{­/×j–Æ¼M8åÈÓ:m–Óp-&°µÓ\ ÛÛ¶.õý,Ð“Ù­QÐí€2XúÜÓ¸Û,œùO­ùª.=ÑÜãB…??×1(ÄÏ–¿çÙ,ã‰´ìIjåÊH;üËÓ2_µFC£8êÌ‚j‰Œ'vw¥ßgðI®öþûY)¿i¦°FPæmÊ¶gg,ç)Ãu*2øíŒÊzªo†ÍÀÙÙHè‹ÔêyÔÎÞžjdÔ	ˆš]iÂôù´:µ×Éú§-ñÝ1/¬çÎÜž±°¶íŽiÆëÐ@þ©ußtZ'ÎlòdªŽ¹ÏšCSæêÌÅÌr£$kÝÓ‹fš½úèÍãë¥7¯?®1"§]¢ï’ÙÔ2Õ.é©“†‚9·bX¸ë8CŒ³ôv*ã.Ì®(?„Xñ„)±vøöä¹Æ™’m¬v,úïxi–¬÷Q2N¯QDóë*vüƒ ÷O­{Òjg|4}#$â¥•”RÁÂÎVAÇû=>nºS8èr˜Ëñyæ¾›}Fuð[3wû,Ýé¬vÜ›yÎY˜ÙNfx
d=¶KØ;¤Èaí­ðüŸ²“^Œ”ï¼š
r «õœ¬]Ð#»D(Æ€ÕªŽ‘zj‡•-©n¼˜Ž0ZgÆ³Ù½TŠNÄïò÷Á*LÄ
µa3?ÇÙ þpVa9dÑ/hÛÒá6-ã<ˆDÊß7¤æƒ070UË¾žobå#Û	§Ã OAAB<HÁE<£KN‰ûÅ™	7g.ŸÃH’	m?ÆEüuû©"†§÷D0çäªløÊÜUîÝA_j£XˆàŽBp÷ž%1)&ÆB·ŸKïKƒ]Ò*S±H*ÌlEŸJ·ï‰ 27ñ¼2–"¸+ü·{âgL«¼®ø øíèé^øuN›ínðcð¤¹ô:PÉ½Dî°$-ü¼[Ü
ˆ1r(É^AeÁ’”¨…wXÑsYyË¯h©«REw¥êÂû¢¨‡V 'g+ >˜.èµÖ›Ó{ˆŽþ®¸—	JoTé–Ž,•Û®¾	”w¨JCÊ7'&¦©a©º{CÃq«()båhÙle†r·ƒÊ\w§N¾!B‰}Žô:G™3}F|Yå,Ÿ—]c±KXì.…)å c	ƒ¥ª	…î²¹dAø.tãGåæB`Éõ`.Nó´!(¢ßs5QcYhyÂ5(å÷Â)µ{éa¥RŠpp«W-s3b…_ö¯/Ã(×¨Ê
3b•ÙF9F—&ûFÃ[L¬¬*63+ˆÙ#×¨eúlU\®VP3g”œ>2ÈY â”h0'·vÝ_’¼T|4‡ôˆšxn>›&‚ÔÆÛ§õÀGn¥Úc6ºZ¡vaøÒÖ êëãÃ"_³"H¢Ø#®T6CºÙÊª?¬Ûë¥h¾ì(p¶ØÄ‘àÄý?§4³^ïÉ<\å1âJ£À•íþâ•Îw|€<'­Â0Ìøq.Óã“sLîúâ¦áÅ«ÎÉ—þ”tYeÉše/òÅx¼ÐöÃÏŸ^àñSð÷¿¿Äd³øó¿èÎÕ‡g¹_~²¾H€âãÓÜj{¹_v‹ îäV£[Ïæe.bZÄÁÆzÀîŒû3˜‚‹9ž8|öÁ³âèÅ!ÈhË³BóÁNÙê\´‹­½¤¬²¹¤Ô2•i¸ÛM?É´K·Ù`_ØðS>¥¨Ú0F“‹»¿®Òc§fI–dÅ4´×3D+älÇ¡$AÌÌÕ½8yh³š1Gåµî]*|·[+
KÑVÿóC!
1ª´ê•ÕÒþx ~bÎg³Œ•!·+~^p<†wj·³ša]½’ hÄ||$nÆXçì†+7‚bX9GÃyOÝlì‘š-=V((Æ’=vôÖÜ:Äï?DŸ¸ªqIë§=T ±ûéIFXÁÈºõKx“Ö…“3?õõ-& ÔíÃ×Hß2)òæÏwŠ‹›› í™Þ	Ÿ®= *•ò9ïJÓ7ååoâ¶Ù÷C; ÛG½Â–jøõÔÎN:$‡1ßÛd3óJ9ÂÞúe:N†v¢v}ºT:$kHíàôÂØX¹æ`2ÔM'ãµ}‡Ã<ƒIvdšR´¸ŒÂ8yCƒþ„örèÅ—iDEüEóôìð=Ÿ¡ºw‰ôE‚fQX‡AwDtÈé<1Žèl
ð¸Ñi¦Õæ€ÏlðšO‹QÇÃOF­©š±8Ò¼Ä#Í$Ó	£G}^?Þn}SQâ†wb!Ã¿zé\Ð~bKÃß<æŠìu?™¬ë?ƒÃ;Kí<“×ÁÙÉ+~ùü®!OyT}SÌË¼ùbVKŒPfç^çK±žCÎ|¼(Hh5oz#@zó~z]“ ƒ±Tð}&sº„­NE¹<]_Zÿ ÿ¨µO Œ™¦ÐÙ·6UYý(¹×zœ¤ä³mgòÌ‡Ì‡Ÿ šw@ñå FœÂúB‹g$a?†…ˆd¥ ïá@¤ÿš“þçjÂÛ$Â¥@.ÞÿXÀÎÏA~‘rÊà>FwIP-eØ\o·
:ã›¾«pÆÑ`…)Dzö‡ ¸TP_®ª=³œúÓQÍƒ Žo7†Ó!ôà±?­VpRòçsz%èúnõ‡ šÏÃJMUjéŸ‰zªtÊ³WÇêh81‰‡SÅ!ý,’þUøag÷9å¶ƒo€­—/Dq‘lÉþÆ”ÔšýSÅ[?ýuÙÇŒö}“Ò­‘›¦È«7M¾†žrtI
Â˜Â£Qcmg‹/Òhl”v2ãØ5E¸'ðÀkÖcãˆ‹Yz‘_ÚvK3¥/£i?þÂ5©[L SÑÅ¥zödwlì&¯‚ý€üÚÄ@bÕ âÙZ„<•
<?ü½'ÛþðÏ0@Ð2u! IrnÁ\4JÈI£®ø¶•–K5-Ót!zyÜ­!‰HÕÏv¨­Ý$PoãßOéïâ‹gøs‡þ~.u…ŽjÁìè¹QÉ¥!- ²³xÝ‰8 Å“hH/Åä‰QvêŽÄqi>ƒçàÉÄhòg3âƒ˜©6G—C§òéÁËD¾¤ñžò™WzÅqKrÆ59P†!PÇúkž1üÙ9Ã¿ù2XÃˆÒoqPðÇýz:ýplcë	ã¡þ!Lž0BOþß2O§'z2ûÉ5úßWû[)ÌS/ì®i@k1°O–ûìjtk¸±
UÏwUx
*P# g–í\sÝ:ëpy pÚÄÀ ASi61(mBdÚÎ¥²)Š±i?'ßmhüÿ[Àr[€µ”qü ßÛì¾œ»Š·»ïŸ€»ïì#¢¿ŸßYœIgCFÄ½¼ÜÏœ‹80/Œpøð<;Ïó"žÌÌíß§#cÁºŠd=lýFŒW_L\¦*x¥ï»ðÄËÇDxâ%ˆÄˆÖ¼¼`ôLY"Õ )í"©«„§Aà-õç
Uæ¢Nüš„”.Æm^ûˆÌº3NOÂj Õ¬ÉîQ¶uzõÍ²ÈéÈ.FÖu7'î§ÎŽK/˜¬ŸjjWÓÏéÁ	M¹×ÒßGmü»{w1‹ic•ù2\ŠQr†>ž{6[~'(æ)ÿ³›G?•ößïºçf&ÛCˆ6Tÿ
TQPBÈ…eXœ,,¢¤ÆÂRdD»qq±>“‡·w-ŠeV$†ˆ1¯¶Â¬³ÿ
#³	ÚI ¹Bc*7~âµ¼Ôæ8êø¢FÔ¢˜°¢•ïÛ³Æð[Vaí~®\ža†TŽ¼â¬s|˜#ƒí»æšî½óö7øk×~JõKÁõèÃ”œÍàÛ#Eœeú@	g*D©rßó)8È%áœ®­BÄŽ@EIº¹/y’”0:RÉÙå?ðxoóX¦—ƒ8ÄT¹ü­V‘Sd@§F?Žû_jšôX\+$gŠ×I’ß'§’G-¯_k–†D|°h A~ß£¸ÖòÐhpø	–õØ 	à¯®™
¨ä§V)©¯•Ï¿ ¦Z±qbJ¢!ËÍr©`XýUp–ÝZÆ°ú+M3VÒïP¿My¬pÃ]œ1‘!(çYÑ8/=f¹upÉŽtÉØ ¦ÖæVÂÂ+Aë(ÇÆxJÎ["YÊr J¡pxò*F˜!>.¯+åÉ@SÒ\¢ÖLòDÒ%dÍr+$Q:ð*³7á¡ªÕÉ®TÑöT>pÓD(naI-9ý '	†å@]¤wK y›„ÃW_0Û –¨zÚ¿‹&‹ÉÉ«¦ƒ…9 KÀ»¸þ’ W åfdXÕ¡èÐÕJQQÚÞTEâ5F=ACÈËümJ~9MÉ*‚ðÕ› $tžUgr™d.­W!->F\¿€”·¸R—²æ%“á jž5éÂ@XÊ^b…¦ 
ÿ]~°±G4ÎÆÚ2ò$q jà¿Z -iŽ¶`Sƒ ’’íÖQ–åc–àc«°±U¸Øƒ1±{ó°ÕYØs°{1°Uù×ì«*ç±®Â¦XmòI"L¡¹J‰¨rm´ÔC! …­æšD"œžrÚa’Ke*¡V†;Šj±ï¡„ËeÏÞžœ˜¶¡óRùQ†VqëHÁ¯¬ÀC¾ÿEžfÈæ6ù^UâK³‰¥yÄÒ'FyÓHk€¤ˆ©hžPÌš$&±J<ªWweoïqU`ÅÀq=X˜Ooq=òÁI~¥Àù˜gÅª•¹gEx9ì³
Ýxù§ð ¥2gƒ·Ø1ãMYtAý;˜³*š¯Êû¡Œoc7e¼m2Iºü±ºí¢Lo|8|¤½~ù~§ÍFÓ(ÃU8'6¡ÊCŸeò592ÝñAê2K$.v?tQ[
©ÿÑ9?SeúÀ¸Ú#ãB^Ï‰¿Ù-¿_Vl¿uA„ÇA/ÇÙ|6ž]}éMã4ÒN»Ö‚5£Î6?Piìíz ×qÆHí¹©ò(Ã üºˆA;j ÏBM:›oEÉ|^'#Wäsh	CIúò¬Â¿¹Ã×B[¡tc‘ãç(ÙS­dçuMvþ‘Å[€ŸfN‰Í·ÒU‹ÌQ…;¸!äœu‹B
ì™ÕÁ¾|ØYc_õ”Á/¼eû[
¸°6äƒf£Ã
X+KFvžQ£dkÝŠÜE
÷c5H›†4i7§ŠEF‹Ñ?¼à0BØ‰Š¶—I	6–Ï¼²ëÛÏ¼J„’ò#ŠRó°o=SyÅÌJ¹].ÁJÙÝêü®ˆáI žãódEwve¤A<(²À~d5ðÐÈ¾*cl¼Ôà‹pÉ°ë¨K1Wâ¹ÇøBø±Ù@©þCZŠÀsS¯l¹Ì|UT)¬¢ñÌ)¼È¨DÀá²z—«Aj?®:•wÖ®;X°ÒŠÏÄ!Òçò¢úËNè]lìƒzà‹jzJä®býÑ¡…•Ù”'ŸW­zÖîi@ÏO>|óä½h!šÔî4ÅÈéPt&N^måŠ®v½#Jqñ–oW+òw`¤ü“"íÈÆÐYPËE"‹8-k±ÆRñˆUmÊ´[Jùr:yF%'G/Ñ()ÔýÊÕºr®’²ƒ/$?éx&…‹Wþ¤•´YÓÌ0GT£ŸÆ›’âß
:­#4²@‚yùRdà99îuÏ/Î)WLç¢yÐò2óœc89¹Á[°Ê\¹çLªøÇÒ[³º²¹V¢=jèˆÍFbþ§®†¯è‘ü NÂé&[¤@M’ž‚Yep<~Üt&ã)Ñ•×ÊKæì¹#U:PÕÆ©d˜ÊÈ¢ü¸2õõ{É'øÛKi5›ù…ETDâEy½šÅÅ™l*¨JÒo¶ìŽÚê'7¼ÃÉ×C‚Á¸DZîÓ´$Ê’[óøgäÿ_d	ËQ‚¹X½3è[¨KŒyéd¿º·êŠ+9³ºç©”9Þ0á[ê/­¨W÷¹kf 7Ù»âÆ–'eëŠ®+jHfý)¬ïÖúæÌ”3ƒE‡-NH¦ÂyÍ=“q	¨ðHE—2ûôíÑÿ)õ=k¾øxœÍ]{WG²ÿ[úåˆ'Þ,ØÞ«Ø`sb08Ù\oÎ!`Ž¥íÌÈ6›ø~ö[¯~ÍCÎî½ËÉÁL?ª««««~]ýÈî®º<ñ·þëx%yÔ?™DIOã(;P/Ï_÷÷wý4ëÏFE”µw·Ûj[=OwY|s[¨àyWíöê4gi¢®¢ñm:KoîÔI2ÞQÃÙLQÁ\eQe¢É@W·q®Yz“æ
þœfQ¤òtZ|eÑ¡ºK—j<J Ú$Î‹,¾^‘Š5J&»i†æé$žÞaÚ2™D™*n#,Îs•NéãåÙ[õ2J¢l4SçËëY<VÒG¬>‚Ö11¿&êúŽj#—Âƒ:Nð¨ˆÓäPE1ägêC”åð­ö‘‚4#4{*ÍT0*óL¥¬×vïINWmê¾íåDÅ	¾MÐ£[ 	}üƒ(¯#µÌ£érÖCPXý|rõêÍÛ+5<ûEý<¼¸ž]ýr…‹Ûr£“Šç‹Y”¡_Ù()î€w¤pztñüTþpòúäêìÁñÉÕÙÑå¥:~s¡†ê|xquòüíëá…:{qþæòhG©ËÙ"!6‹XMØ<1N¢bÏrÝñÿù—ý µäÃ<êg‹ùõÎXõÕ	t3šƒúÒ¨á ýt©‹óÓT¾\,Ò¬Pãt>%ÊQÊgP¨ì¶¿Ž“ñl9‰Ô“¼˜ÄéÎí3?i_WÒ&ÑÔO[&0†?-Ê²¤B.‹“›RÚ]¾[Ü-¢¼šœCgüÔé8)f5Óñû¨Tt'ËO»ñ4ÍnêrêëÌã‚±‰”(ïmÇICÙû) &Øþä'‘z~q4¼:
ŸŸ¾h#Á)ÌÕ©‡Ã×/MþT¾o%0«M¹Ë7¯½‚ò­öÿôg]Ôä½:>/_÷¿{ŒeÞ„gÃÓ£V«s;ƒüvéÝŽ)}úâ»ðÕðò•Wt>ù®SKJ^žü7z´_¥ádï=n·£O0áP°‚ô3ÌoÓa<	ÇE6QYó`™äñMBs½èŠY}[Ä³&çt™ŒI‹T³Ì‡ºå·êÃh¶ŒP«obœØ`›F*À¹.	ï£».Ð.¤ÆiTF?Í Üü&.ÚZÝ X“ªeI4ƒ–îÐ Zi˜Â9ÍÃæøv”©mf&DšÁ8MòBÒ‘~¯Ýjµ”¢^c0ÿéÄäÜ-ß³(i(ÝrÃ'”í¶k·ðfXšõ g:¼,¦õTõ÷Û­’ÄSuööõkÈ„Y¸
'Àh2Ép‚ 9þƒ+	óú­ÒÃéhÏî ‰õ´g2pÊBrIwlr2šcòoj >·[ŸÛíÖî6žÅ	Ee@Â­xª`º`fW=S(¹t8ìXºÝ.16]€)¦P
@÷;ò;ÌL=—3¥;=†8äaªÖjeQ±ÌX3à8œGóñâ®¾½Qí)—E Ò†ÁPØ+ðQ‰J¢ìÉ{Åæzš$‘Ñ`æêfnÄ‹>\]ÇðúOtpð@`\=)Ãdþcxyô×óáó®zj€Ü£¸¨øø&Q,H‚×îÔv‘Z¡rÐ6°¾%5PÛÝ-G½š¡èj.˜\…¤ÎLÜ¤Ð{ÐÈp<Kó(Ä‰Ò `‡+‹þ±Œ3šŠwÐfDg0Áú*š/À&@N®’ Ðx-%|¥µ²ÔW¬ØjkKæ¨1¦äÇô¨co ˆÄ¦öüq_…?ýÒcNdªagjzl%oHrÇzŽªöÙjN’~f@ÈŽAš Z%ôLæî
«ØEG¸Le¸Êê1(‰‚ˆõˆ™ž1H¶­†ÑÆªµ-9;Ü`8'=ð¼žŠ]
Jæª;Ífé8°¶Tíif¸
¹7Èš-®»Š1*®GC¹Ô‚À6zÖ’ûr u³9u %lÞd ¼'¾ÝDÏ$G%NÚ-úb¶ ²?˜&?Ð.ùS:Â?6þÁ´ŒB®ôðˆøž­N­Å(ÎvÔ‘Í	wßCÃr’4é'KÀæ¸ôˆpðÁh,_‚æ9k­Jqýð1Î£:ÇÚF^Bæ¥¬¬‘®›¬se×(bp=v-@ÒžµíèL×_—|µãœµX)uÀXVÐ×ËéBŸRi  (™àòD;¦U†Èþß"x„c!´¾VêMR­I-*<Ü@ždâäï‘åšÒÊi–ÎExÓx!‡©#j¬p^Õ›‚ì®!`i†½Á‰bMÀaBE­D.TUÛZÚqe•_# Sä0+ØK©m`Ñ‚/¤DÖQ "¶£“³Ÿ†¯q£™¡¾'‚’:? ç€à#`Þß„/Þœ½þð‘1ÒtQà	í!ÂÄLò¿' ˜êÙ/Z¶u](aŒ9³;ÅŽh'·òkÇ6V=•ô-±PBQ¡÷¹ÞÉ‹Pä†di
”f Ã øÆ • ™€{ê&*£›Ë](M˜ð,U@%Íîh1Ž#KV›§ßÄ›…³7§G§5Ìr>9ì5±Rò¶ïBŒ¤x¸z 2_³‘Ÿª«CCŒõCD¾8ª
¹E:Œ˜o9=Tð‰Èè)+’p9 —büy‘–«p<¤ùVKã–|1^6aÑÚùF÷+òŒ«512oÈ®»SrgbªÕM™ç74!é« °NÓˆùÝùðêUx:üÛ¯z)ý:>y}Df*òàA[Av¡Í\†Ë¡F+ŒÝ9Œ2fô&šåQc® eõÄÅÆ§4sýÒ£ëo: É_YXÃ¨sJXZ{=–”š.¨(š#£+tŒ :éc"5S ?õú} :À­ÃTW@kk*º±À”Ï
;­6´0¬ºe¯ó>ÔŠèÝO£,N—À:†bô§â ã„ãZY„ñÅ‰‰oúEÉÖèØpau¡…*0Œ5Â‹£¿†Ã·  ôÃó‹7//†§8>ƒ½žSèâhø"üùâÃ7gWJÚï•)½^¹¤)ô¨¾ÒT¦Ð·•æ.Ž.ß¾¾b|(…¾«RzþƒnMz\[HZÓ…þÔÆIàÉ'Ä XÒÐåy€‚fé=y¢¾ïöœê5¢šåZ©^#Ô Yâ+ªq×U—ÌzæýšG©¡uoˆÊ­;™ÍÕíàÕT×™T‡•`Nq&a²ÌÈ(½ÈF7óàùñû`¯ÛCz€uBª¦ø·
|YŒ&ïöþ¼÷kØ l÷h¿&£eà©IBÀÙ ÿLýmºœM N1¾e×vvyyÌ]^ÂJü‚"B%Jƒßí=öAà¤Ä·ŒÓe ¸š ÂÕŒ<iæe o¢Ã|9+ªé8=eÕF«Ù(B<{ê¸F‰¾üz(5ÀZq£Š¸UE<‡µ Ôƒ‘óü72àê¦ñMxËÙ÷µcs½£dt=«A…ÕªYþaòî»=dTGtIÍhjÃ¬>"Ì®,‰üg?aÞÑós½|:ªº2ç—N4¯m‹cð Ôv:`P\FáÅMÁËNmTÜm ã‚s>Gã%¨É]H­VæŠ~I€ÿ&ðÙzªƒ]˜Ô¥hætÒ‚d`
?€-úÈW>Å/äŸ‹|1À¿÷&oÏVŽ¥’ KÊ*f¶uü»0fÒ°„`â.t˜ë:Šƒ¢÷âèxö)<yóüêuxurzôæídG²ÐúìÄªò
¶H½EÔøƒ\¾0‡ÿÞo¸òWÃxA#ÀÍÿô!ÝwÈòÅ¿mÈDdî¨í9AÜk)Xm‘-•}0I8&J0’¸Œz§Q£Z!Â¯`ýÜ£]À°X‚õxÐmÜˆ0‘‡Jäoê›Ð3üÝuã~]%ázh°ÿŒXÓÁ:©a3º~ £Y´ÊÙ#½˜ËLÙþ
¦Äˆo(˜à¥gCQ¥XE°.ÛûY•Ø ¯ÏLtè»ÑÎ–N'f½õ‚³Lå%—ág‹Û¡˜¶^·¶¼•+-D­„ŠX3Ü§µ‹áµ2dsÖÊ.	óÜ-¯f´pÑïÄ¦dT]6Q¬Û¿Ÿ­Þs±—5«ÒÎ!i~îp³>·½)	E@žÙäs6í,b(e¸À¨6‹•ÙÏ±H¦6CL-9³ÍXaŽzšN§y…¦JùFaWÎùÒJ:à¤vBÇõôÔè‰§Þ•Uå)Gq¨"m˜ò:“ã:<ØƒOß~2ËK¿¿‚RFƒÀ<ÈÎ%á:Dƒ‰]%Y@$nÅÀ_:UäN›'K²ØðT'šG±b(®Òf¬2•P‚ßxCälÊè½ˆ¶×/žçYŠq_mÕ›bP”ä©F‹E–ÂŸ¸ŸÎÛ€AóÑMT
‘Žo#ÀšÞú0Xº8”°ÒÑs‘RÈÆ	ãèæÀÕ…|BD½ûU<~çÍ"ÊxÜ%¶=]Î:=…Yúô*,thð;Ãeq‹‡¸DY‚Óáó®_â9¯t"[Áhy7NÆ£¡x!é
iQSÏ¥Stv HéÇ,…JºD
RÃg4ô»²^ÙåÞ–#GµA¹RÑwaî@ƒåTÕ<špÑ“ÌøòI„¯(–"PZXp¹·Éû$ý˜°ntg´oÝ£FˆÎ ¢,suMñpnkŒh´Z ¶ÁšÐììÃÈ÷ŸqÐºÊ80Ê¢yA`§%-iÕLèããÁ Ûßz«¯°Õ¾6«ól
Ð:èXª5eê)ÓxO™†9Üå¸;—ydçû*þcSGŸqIè³/Ã¨¾Ò­—ÛqšYIVâÀÈ?ûêÊ”yWæøOÇ¿–[C³3_xè‰jÉß{ï!pªÓÔ-·!P	i†þz´F`ò65ÁÄ½( ˜Î=‚Ôš—µ²I˜ÆýtÚÏï’±?n¹ß8EÕõÅµO×@mŒig„‡ 44™øp»Héd"ÌÆ"Kg3³}Ó?æã¢¤Ë¸ÿ}Z€“AZÁ	E!¤AÿÚ'¿ðpGvŠluoqcIYûISw±DŸ¥æKMQÔ-o¶ï…™%s7Íâ`Æ:'¢Ì¯2¾*eH×¡“ÜÆùK¨†óÝÞ`ÿ[woÀ¦BïªúÆ·h4:¸#ƒãÈÈ>‘%5EÊ'¯í¹°¡S²g»®Ü`Ž4mï=È5."È«ÛB¾4,¢~P†Ý,¢ÏÐnuéã¨žbK®G`ÿÑ¦³L7w2FÎ©ª»çÍœçB¼þ$lâš|§p.y‘ÃÃ½=bØ{ÔÃaTÀ°A
w Xgº(jÅ«pÏ!ÙNÈ"-ÍÖw‡¼6‚µòdîKU3+¦Ûõ½º›uXçv«§íö•ì))™†˜ùT×0xÐæGŒ·bdÛÇ‡}–Y Eö}´uæÐ-ÂËWÚ¢7FÄ3ßÚ”ð¶Uyµc—U~&-¿µðÎLêc’®©Q&¢Ô¤áØåÍDZ&ZPèpˆ·Ü´F iç„»«Õ`¯§ôŸsNoQzê9;ÄæØöÓ-“¢dBÙq÷f²»éÞQ\Õ¹aÜ‡6¦	—M®N±µ«Ñ/±ÌN4G+X3¬åÃ!v{š§ÏŽ:µÐ,Oµ³D¿¸J[¹ŸÉ°Ëp_&;Õx”Ó±dîU\ Aíˆíºp’¯ænŒ¿!¾½­-§Fï§µ´´›Þ¬¨áï5è:Ú’Ñ”¿1”hÝÛ¨éjÓ)¡JîzÅÈ64]ã×Y ëŸ2µ!íÈ5ŠÅLRÞ-K§-–ì!î1½Ý8šq{ò›&æÀŸ„_QˆÔD$_2ÿ4ò±ó¯ÝúM‘Ùã6 ³Ñ¾ö§ˆ>p!'îGÚ&·XÒ+tÄú{­Ž¿§Ú+ýýÔœÐŽÄï¸™¯à5ëNIø‘•I4XÅ™3µL§7‡º¢MFjÌÖfvŠ)¡ªø´¬ÙYíéQÃ†—udy=·Q»J¶
pæØc·VÄd ŠÇ÷ðmŠ´¿Ð2Ý.“÷ºN ÙSOß]õÃµ:0ÉRýÓ4b¸£©T·@&‹¡kMl÷w{û5Û…À¤U‘³3ó°Š0x6pí•Óá¸2&ål}šµ ÞÚY¦øã-n
$gz¥PoÂ©õ–Æ=Íž>AÁ¶ÎE!:l‰hL20§è],‚U¯¡_ïuæ6†­ú5¾KKVZ‚¾í´ì ‘i™Ö6A~ÜÄ‘vx–È×¶Z,õOsX¯ ÃTÐÂÐuÜÉñÌNäVôÞ(o_„$(Lâò&‡ßk×‘i+bõ]k´¦ÏÖ°Uo!êˆ$®‰FÕÀ%h0oÏñ—ÕtÍš@È°Å¸µ´UsTœŒ£>.nà—™-gfmPã_mjýÄúèêý!Œs”«ç‰o §¯‘[°¿ÿ´Ìˆ®gÿ¬[klêöõÔ”.[½Ï¯£kºŽ‰›9¾<d#÷3(Õ€…úýwUe——>:xÒ_æÕU;2ý‚ÉÐâ{à7¨wn¿(,áðÃtV¯ûOs.W°ŒîäÜåj˜S9\?ãi&;S=’CÎz}EwK·1qÙTd£$iåÖ¤á­‡œCÚ(!JµÑƒ‡¸1÷Ð»¢’,ç×¸©?•Ú£q±]»£ö¼žölpS%H£©läÆé„â®²Ï¸	î´KÉb9A‰h\WaòPœÞÏ­(Þ|ÌÖdË\Sö¥–üK	Lý5OT"Þ¤Ðñ‚²ÀFãÊá	C×"Ò¬DŸR¿ÊGûAë#	Ék»âÇ‚R8Ú4¾[–Ñ†€­ÂSÛ«/øŒMi;÷"P\bÏ—Aßa7
#	óÖ0RKe¡ð.Aážr—‚dV(C©v?ÏpÚ ¶RÐ¶£Á7Ôl=uTÈ\E¦ËXtéË\Fl±&¹7Ñš6çÁv­ã w	Î-°ò9ÚCâzE—½>ßIÓÝõ"—Kb»ã¦7ÛhVi·éª8ª>Nï$kóéÊ&{ªN×ëvO¦4—M‰õ`"QrÅ'lôF
5m6.ê&A]ÿYB÷`0âIC#½ßô¥¼Á¬”8NÜäñ	”ºså‡ëÇ q{‚Æ ­Tåg;³2gûÄ“Ò’C·²“TÝ™ÆÉhæ«×jÔ°9³I¯»uýÃs.ô@Ò•~Ù~ðš‰®ân¸‡R¾gC²ìt×…‹èo˜ŸîYoµÑ\mŽ0ñ¥¡õ¤*,ñâC¥Bk1Ê= Šñ©	ø¬÷¨ò¢ÖÈt¸Qöüd=€#]°Ð‹ßhŠâõ“ühHúõ(•*;£¯­€Ñf]CNpL¼°ÖâŒÑA‰–ŽJØ`6ö.pŽ^ê¬¦$¼\ÖïnpX/{TM2Ä×z§¼Nwµ×^¿‚1^GªÐ•J÷Ç6@6
Xôm*oºeòE˜¹^@„W¥P¯„”Wcl>jÀ†Z¨ßTùÒ}Á &Ì 'z€ÕÆXÓTûã‘÷NÃ„*¿kÁÛ¤ö>ø¬ÙényÒnØ¤›Õî0:›*ÎÐ:#Ÿµ¢ƒœêÅF`¼ UöíäºÊ¼­ÞÿyðºüþEøJ~ZMhÛ½ƒ€î½‹Ê²
Ï¾ô´ÏÏrJFÔÅÖõ¸­ªµÌâØiÿÞs>µ@?ZæG «–¨pJ'üðß
´ù!º´è-£™c;ÿ’ãFÍ ' ÐðÑÕÍÑßÍÐ×ÂÝ’.l„xÅëz¡‹"‹#pïµ,Ü·jÀ° …ë4ï!ñ†ˆQHb„Èžå¥Ûõ"ÿ§ûhIp1õ„$
K$è‰NãM?€KP
êñ)Òmµ·ÿ=þìk¯½‚AžÑé.ôùòº/!	pƒfÆóIÈ`‡0Îc}Gh>>ôôaHSj˜ÄÅly'j›ÿ­–ŸDù˜ow.–‰Þ3g:)¿x)×á	M÷Ó9ôéà…{¡ãœÐ1R äÄ]LF†W¿#Y¡I·’,MúÔÛ—»–`ÏMš,°
É÷–¤¹£Eê€ÕnØOâ—B'eJ2ÛIpÎ^SÆQ4fö‘ÁÒyÜÃ—F´$.³7C:—|·W¸ö¶äüµÜ0Å0ò¶¹VÍDòg&œZ*ÚnZÑT¤’PVjV(Ì†'¶r]]—#ùü’QŸL{z?¯O/Ñ¶´øüžr¸£þn!tÌöuÏW$½}#ßK´~‚lçô’šé¡ý ]örPK¼\@Ø:hþ¶×Äù›å‹~»å,—ùBD™5>>‚î oZh(&~ÑŽ‚~ÙhÇÎ:7‰_ü±Iú~Ÿ“dG…¯›Zäo«1ümµ}ÐÓÜ¿9¿
‡// –w…uL¼¼º89{t à!ðçáøa_>…!ê0Ý!+…?PŸ`·[WºeN±.>·ÂÄ¨®dR¢'QÊµ¥ÇXû¦¦¶¹Êø¾©¶æû=Ö¶ßºvO/ÅëøÖu'X—B8ß=½Ø7ußžœ]*ü0}(B’ÔžÑ­R-(nááµ®¥½˜ÖÀR%M©TèJÚŒè‹…¦ÒÑÙ|LàóýwTd¯·quiÔ­%Ml¡DÛÝp—<÷Ú·<«ðW)k}@—÷Áîï˜ƒ5ËÍ’}Wà
[©Oá0ô!K*?xtXÉ¦¨Ð<*nÓI]¶~Äû`oPÍ,Òb4£þ|ï>ì~øP	^èà@ŽßÝÅ°5ø2ñwzeÆõpKœ`wÑ&O7ööaÀÒYŒ²<
aÚ†ôÐÐH¯'„Á"ˆž"ÐuÎ$ê‹ÇÀ‰\ðBJ"Œ¿ïÉm0hÍY×
ÜÈéÁoÇ¿åS2Îôºúv |…Ó	þÓE}†$üv}|Š@î&ß¡Ž+|ùèÑ~X¤áx±°"gØ¥?uÆZN´×®FÎRŸc|û\úcŸF§øUÓ¡+IÜÇÿ‚f‹çk˜ùµ"tæ²œØWâñ)(1Þ 2f—ÝJ×éKÓóÊVRµüÊ›»>qÇ©ë6ÚS!¿ó´ùÈˆ›×RuÑÁj²¥³í+©º‘öµ¬ÚÝÎõœÞ‡$2¼—k6 ªb›ô4]>k'€¾ Ê
Kv!^G=µ»­t´yhš|‚}ó.ÿ_GFãá*8qÙØu^–¡‹k.k_~úý÷5e-•ƒÒÖ¹•sÐÁƒ[îá&ýì×÷ž]X·¯µÌqCGt,;CW"öxÂ
Ä`Rž˜éÞ<t3©ðÐNâñØC€¢y*ñ"¬l4J²C»Á(	ëš2¢_ÿÍŠ–ä])ÈL¶,àXwxWWàÐœÙ§2 Î/'7I™‰òË`Ý2¤¶JMéX0`¦Î€­WùÎƒ|<—¥eiÄ'~’~éÛ¨ùÇïƒé‘ã¶éVJ“u=hÛ.7œlñ|³5…K^Õ•N½XyhÃÔjIÿå
¼¾xãÛ£K²+eún¥žE£lJwû!¼ózL-ßFÏ|õl
_úõ÷f‚û£EÓŠßûÆ4m#ñ¡_Ú4ë	, !—Q ¥Tn£xG¿
k´kí5éðê+ÒïCo¸~HÓB²‚]Äs‚…¼iœ»ú wýgæ2ºx¾×Uê/ªsD)“>ëø"Îù£Û]ÙÒ^s´mä÷ñ6@ç5¾xÏÄß&3þXC|°ñ½uÄ=»¡ºÉ•Oz‚É(†}r“†Ý8R‚;¤K³~²g_K&•öLið¡¶2×wÂ<•Cùë&œÆ:¢ÈÿË~ƒ>Ûã«w)@àœ“èƒY°6;¶Þ®yíizùÿ”ƒ¼îò˜°­]ku§©1gJµƒTvôKÆÜœýweVwug­mô¢ Æ{xÙÒ“Æ ÝYRÚ·ªx„akË:(ùQ×ÒRä÷ÁDÎ¿bì±ìgÉ}S…t*l®wèy¥ƒ/|	ã“AÊ
Õu?ÜWKh¦¶CöèV´Åy’¢ÊÄ“
ë&A³öÉ[Àk]³«VÃêULøtj›!÷÷èØPïÀÚ×ˆÈ0°#ÃÉ} AâÿˆäØóW|ôÚ¹âQÖZ|3x¢ßTRò¶¤üW	Lºî®&Ji—TR³ºk4Z‡ÆYxö®_Xt¡æ|Š7•I®¤µvV8«–2•+0 ´5<´$<qà&~Æ§x×ŽN9Ì"dS.£ÑÀÑ¦¶›xRñA[|7ZßÐÆZÈ.?&Vïü/»Äÿ±¿xœVmoÛ6þlÿŠkŠŽ!ÇMVEÝs§õà8†í¤0@%ÊfG‰I%ñ†þ÷=GÉŽ¤Ý¾HÔñ^>¼S·M³ÉÙï‘ŒEnEg˜ˆÜÉT
ó–>MF“£W«5µ»Ín»Im:©Ì¥“:·”jCn%h|}AƒûÂkIæN˜4Š+Ÿêbmärå¨ÒÉ«ãã¯BKaÛÚDììêl1_IK…ÑKe„ej„ «SwÑ£µ.)Žr2"‘Ö¹( é(Ê“.’Ét"Ó5ìªÌQå‡Œ2Ë:ë<©“×©ßû4¾¢O"&R4)JÆTƒ°“[a,Ôé$ ‰±‚]‰„ko}ÎéÍêôè\#æËyÈ:RÞÅJ¾„;©-•V¤¥
Jôe8ÿ|y5gOýñ}éO§ýñü¦e·ÒP·¢ò"³BI8E&ÊÝšË»LO?C¿ÿq8ÎoHvt>œ³_N©O“þt><½õ§4¹šN.gƒ#¢Šú16|ôì,Ó(;.’ÊrÍÝfó¥L|J!X1?7_&Ì±ý†B«2ô.‘t;Z}Ø‘Y—,´VO„òE©÷E‡åÔÖ¶ëd&žJ­‹¼Ë±’‹ü6Lîoª\Jx>Ø‘•NªîW«ŸGf	ª¥rÉ{M‘—±ã°0¨#LU´´ôO³1¾œ^ôG÷ô*h6®ÓÀ_ÇôîD®çßB[˜ˆXÃ¬qÒâžn#UŠê
®Ê,¡~ã·ÙåxãàØ; ã
­™mœ+d‘óÊ×³ê‰W]ÁmRf‚æ	üÚBÄè1ÓàQäãpÜŸÞllö¶™Gf]™›è÷Ã	¯ý­·[¬dèt¡CôO™/=Ì‹ÓÑ0œ_N.Ãqÿb0›ôOÁãÓùtxJÍnfžUtÐåUdm—ãìažˆÛÐ­qÉ6±Î×áÙp:8;’‹aå´ŒÝÖ”­žñÅ^³QæÜ Ò¨ÍxÙÀSšôxY‹™kþÁÂoÄÄýz×ÌG0Z»Ð¿z[a&CQ@*Š=YìŒ‚”_•ßLâÍE4À>‹Ud¨GrÝŽËH“VrHa¸YX§e‡!¯FÃñ 4´ôQlÈ•mM#ÕÆ# ÝÈì/ðFl}ØD™2¥ô:<Œ/ÞÓ£#9ôX¤þ¢¤n.ú ­-eÞÒOöíO	åm¿F’ød1KÜ‹?ò¯^…öa#\irê3@ÍÍ§O¤rqÄöíq½{èsÙ~ýlåÿQÝÅðTVÕt1Ü¯g·€ñÕhô´ô+¦Ò¿Õ2Át\bÎŠ{‡nŠn2®úµ«7×S½ˆŒ!&dˆi˜*f¦Y–zt5=yÏn&¾g¦A@….JÔp…Ì>ó}§OA«øÂšÜ.ƒš3m|<¢Q"ll8]»ÙvØý/áóB j¸·c¥¹:Ÿ¾­xþÜ¸A'`¹Óµ(Ñª}»ì}¯‡£KtGÞUoíÝ/B”êîÈÄ_ÛÖwÊ®3¬kBY‚ÊŸ=½€|u­ö­=l•ð÷ÅÇÖ	÷ûP/¾òisC9Ü©•ãÇ¥áJìû^VÛ×)¥ã–•øT±x(S{U.ù>yM¯Èÿg­Ê°¨•j½ÄªÈ
Œ×Æ—Ž å|Jt™ã×EiÈ?„Š
+’°äÁ½94^nî¢_þòl[èf³ËïVäöYvü‘ÅLÌ§i	€0•8ApØ§á}ZÛ+³E™ÖMáÅLÜªZ..‹D	æÜÝ³æU¾†||¿¼Öx¿~ÃÉ0§Ê˜âYT`w*üüU<ªjüÿ*¥`¾½äß¡”€AýëÅåÿ\-î4µyxœUmOãFþœýSÝåˆuÒõ EÔ@r§¨¼Õ	HUU¡ÍzïaïšÝuhŠøïµIÊÁÑ6œ]Ï³óÌ<;3>% ÓÑ‹Ù5Z§Œ¦}|=J&ã‹ó˜%X pÓï>üœ*çÙ¤.Ka—€Î‰±á0xc
ÇN•DÝÀ¿\žòÝh‡],Ùkê*ðq…©JÔ¾7mN\%§Á{_¹A¯7W>¯g‘4e¯Pºþ“ç½ðà²P=viÍB¥èmÈ	ÞÕÊ¢Û¨Œó›¨½*xsÜÒy,ÓÕ?¯S\°ãZibŒtº7¾¬*áóÇ^÷A“¼û°h5xä–@,NF¿^“Ñ$f¬K¬ÒªÊ“™_Ÿ!(2áü68)
1+pR
GzÞ™#Ñ{cÅœÀÚ£Í„Ä¦y«£ŒÀV%ÙœEá@9K¡é@¨îI(•V¥( Å
uŠZ*tEõt–•èŒ^yÎ)ZO±@÷aré<Òkw«*îêYeÍWŠÓ1oj™ƒŠ'¿MN.Î?ÇIÜ(ßËI\}§ÿ7V¥X¦
tAµŒ´°|;h›,žÏ×gX|vÔî(õ~ój+êo±xx4=jÞÏ„Ë9ÕDU`¿÷ÏÒ=yXCÿryÏ)<«µl7¤Ôx/{;Û7s{m ¾†JgI…«3Öäk²^°ªyô•®ŠÅWÃÑuru:š4öO;¡Ô3.jo¦ér"[	_û-P™ÊJ.¹F/ªj&G'WÓdüo~› CtÓÑÙp]ÆŸÌqäÐ.¨‘_A0“|F¸Buß¯ýE^Ø9úï žÇ´rÃº’&Žf¶n3xŸ\žÝ_O‡7ÉÅÅ”Ì¡Ó™ÊàwxßŽwÐ‡?~Ÿ£†w´P{QcVBÞ6mç`†JÏWA™à)K—äA§ñ÷p÷K{ª‡ëtPæÞo|[Å0GÍŸ°›pø¶#O¿L­—ÿÅ¯Ò5=¼øÕµJ‰úMF*Øg„¬ó¨ZŠ%„yB¯$È\è9:bî‘&YÊ:­Qz<K£¹¥ù-ÈŽ‹´¤‘¥½5aâ´ÞÔ!|ø +„·j>GË{·%)ÌœmÁ´F¢„þ'ØÝéïÃDLdn•¼EÎ­Ö±«F)R.ŽÒ4Þ·)´|Þ€C«¦h.ùýQUÑÄ…å1ž‘ÿšÎýqFKš¨ÇtoCA_8@ÚÏ0VE¤feø[?ú1ÚëGó½ý}Áw‡Óˆ„CyÜOóú™ûð†É}\Spp6Ñ,lâð1(ÿän¬•WU:¸
%û°i€i¿zxœíUßkâ@~÷¯˜Kû`ï‘{984i+X-š
…‚l7Ý3îÊîOJÿ÷›Ä¨Iµw÷tÙùõÍ÷ÍlÎg ³Eâ²•U\I‰Ü¶ô*Eó, wLÆô«3À¥5°ž	>!35GÈãÌ
ÎÒt†3	™`ÃU†zSd¡ÄV«4E”Ê:``Š‹"©`gxˆƒTM[3zü êúŸ<‡Ï˜œ¢s	·ƒhà9Ä”±Ó R7JÃãó5Ó±¡:‹%A{©°›Ü3ÂkVán0Š&Ý?AÊ,ÀÅÒRVI•Ãþøµ?¾'ß7Ïs¨úI‹#•ÄB¸%)ÑjKÔFK•Æd ¸Ä>º	«™4K¥mI3¥*ªøa+…Ý,Ú?¿B³?ˆºAxAœ%ŠN’64;ÝQ0‡Ã§Iop;	îüþ-9‡î’MÑ1ù};ò{ðÉ«$Ø«<z¼=¢ðžs|Õ®	ONDž.i·¿:—Ï8X£aôôP0õ¹ýNg¸;~1ÝÎQHÁn=îMv)‡ý/žsµED½+p]©Ü—Tñ9éÊˆÚbÔË¡¹r]jÁÑ;Ÿ£–˜>[×Ý«à£Ìj=•æ8Ö5[pk3qÍ¸m-·Î”±ÇáÕ&÷^"a9¨ºÓ¶Û–AC.&íxr¦(Q3‹ñnU›*]c7)BB³V[ˆß	Ÿð’ò›`ŽÃ~ôVNÃ~”ßII~'D«šÇà¯5Ë÷­.XÂO)t¨ZÕh}R•w}Ô8÷O.2üXM%NŒ/A£«‘ÅÇ×lé¦ëòR§"ÉÝèfZç/&7¥#$GÖÌ@Ê¨Ì¾Dë7w/¢ÞKHf?Š†¯œ:Ió&7¤ïÿåþgËÝó¯ÃÞ‰_Ü/¤=½ÌxœµXmOãFþœüŠ¹Tw±ƒ}„“î¾Ü¡ŠŠzjEO‘±7Éªö:ZÛ„SÉïÌ¾ØëÄîÚ¢ Ø»3ÏÌÎûfn®>ÿžó˜‰‚…g	%Ÿq&áç«óðÃûq˜Ë0J&û?q§UÂàˆI)ò÷‹g©(¾½”òûöZ%8.ÓZ³8X¦Õœ‹÷‹³V•<Ýä<ÎÅŒÏiÏAAXñ1S”QÉcà¢„&ž¯(e— aa¤¿ýþßýžÝ‘ù\FnáÊðdI<ÿ¤ßïñxvUDó¹{K‰bfÞàmø1âèÑ›ó¿ý?Å @ºájÆ \˜æÍ0ðóÙíôËéõÍÙå…?é÷ÖÀÒ‚mJÛ-
ô_K zÞ) _3>ƒNÛÓ9+§Ö´_~=µhÓ«ëË_N?Ýú/S¢>	—¬¬¤€ñ¤¿nynÁÒ¥Gäñ âE$a4Â—‡ v{S‘e‘¸?ŒÇ_'¯ö¯æ!5n’”»â&¸õ>iÇÇp ]?g‚É(*MÈâœ-ÛïÍr	GÔñ¤–ç*™wüëøÞž4ªšMÅYâhêò ¬Ò9âlI_h¡,1éS¼Ñöµ¥<*àé	<çõÝ;ØbV;¾fïa–•\T¬–ÕŠ}")LÐ V`H†ê3`w¨7:’¡(¬w m ´ùHöÈb4û yÖ|) O{Ò¿øíü\Ÿe‰Å)—žñª‰øVÜ=ä<ªˆæì©Næ*!‡ ËÅÛ‚’ê{éÅCjƒuamµXí[1û¯ÚÛ@`%öLuÜªða.X:ô…e”$\ÞÁGw=®¤œ¦LÌË…aiÊ]¸ó„¦¸ødxíÁ: äõ-Þt•Ëdº’ÑrÉOƒ$¬À3VlFyUú“Mî¶_‰£ÝŒŒN!Ó¶˜M„uKñÛƒYž¦ùŠl††‡(MgË”eè´[QÝ‡¶8Z]÷GÀ±Cc—†r!ój¾P|–Êc¡ÄŒyäY•1ûh_qÞ`§MA0Gº2¤Ã Ž°å3¨ÒRFæ¨† *Vª`CÆ
ò¾²2Vpªü=Sùlu1Aq„ùÛŠƒ°G2ðÝëÀ°OçyX„rœ‰§Wèbð65‰¥‘ƒ.VŽªhö:÷É2­pÜ>0±Líf‘¯
es›„vÓÌ]@$‘P>ób™Fß‡ÊAƒ—âz³^Ý0C]­”ƒÌÉN†@ÖÌrH.ð1ÃÎ~"(–,Æ‘1¶áöÒÔQÛ¬ÜÿR¨M•R\uáâÚÒ÷OËÇN8›ÁŠQŠÈK(:÷”*$iû=Õô$¹jB×eÃr|•P×ÅB¥D—½u;"kb*¸J÷†éñe¢!ÞÔëm€k‡À1+M©ëã7ø¦|ôVŽï5Z•®uƒÁz×YP•Rµ{ç`.ƒ>ÑÚUÜzÿHkx¢lÿœó5]§Ë±œªyRU±©&üÁÁÒÕp©V«‚m›ñ;›j=î˜;(cÒŽæÜ»Ïs,÷rú€S±Ï"L0›íoèìß5Å*®Í µƒZ@nT%Žö€WÇ¸»¼ºÅAÿæëFÛF¥|ï‚xJ{N2˜õåpJ}W$S= ¶M}l[¢ »+„¡Êg²[Úëª’7=’rÕd‚öü1Ã¡¯'õ½½Ú˜î ­K¯ßd¤¾ÈèXÓAÖy›».ò€½>9sÕ
#C{qIïÙ›êÓ“¹zv½¾tr¹7£…Ýš‰ÖahÕ=R­‰èT%°½œ<ækÝK,ÍKo;fqÑ¹îèd“óÁÐ÷õ?‘£êFV<³å0×®‰âX:’gã®¶ ±lX/–®íÖ:F?-Xü—Û3r‘~Ô^uqüÈJ*ènÏª+NWiUïÓëëËëC8ÚhÎôH%WYf*¼òâf¿¶§
O/.ooÿ˜ôÍÏ°Þìa–Q×ùîÖ²¿¥ŠíR®nå!ðÎÜðîW5eõ³™žp)ÐÌtÅ¬hÀ^qœDi³"¨v¨9Àò”9ŽÔÔï=óû•5ìÀÈiz6À0Žúa3‰]vªókË~&½Lï‚½ã]”*l±äMé«!T^=ãëñ–?Öß3¼®6@Ÿ’êˆ\÷ÿ’—°/xœ‘ÁjÃ0†ÏóSriMÓŽ×±Ó +„QƒÝŠg+‰Á‘ƒí„ÁØ»ÏiÓ†¦+íÉÒ¯ßÒgyÁá}óò™fZ"yL×
)è\£{„Õ&Kæ÷©u©ðKtN
sØd«õÛö•%1Ó„ƒ-$M£ž|P_ÖšyùÌ˜®‘jg'*øawÒ’ K“¨py*µè¼¶4R/Š±S¡—#©²®sõC¥­*A
8ï#?ÔjÓš€ãwˆˆcíw9ðîË×qÿ^pG¿^¿à"á¹„6'À‡ñ	ë.)ÑÔ1Ñ`ÂsšNºH¸BÎzf“vcà>8ã÷çôØ_-ú¶V+Ø}×äÒ¥¥@B'Ì¶C»èì0Ë`p»×®€Ÿ5`	’Ò9û¬Qü¥´Bxœ…SakÛ0ýlÿŠ#¥Ôvì4m¿¬M[mƒÊ¶ƒnG:'ê9H²ËVúßw’/&#3KOwïÝ½“áËÃí·â^rÔ‹µ“•Dsî‹ÓÉ´¨M¡J‡&>š«F \V\;5Y^oAhŒ®‡uBîBJÎ‡X£%ÁCLjç~­Ñzô/<âõjUëÉr´…év…C„vÁµj2¤Æ+©n>ß½ÿzÇn>ÝnÅ•«ßºØ¤ÇÖ™†;ð{Ö6L
ÆQŒR^âˆ±æ]EsíãÙéY´hZÓÇós¿Î<Yé$‡¶–žl­™×Úp&{¥2)ò8âËÒ@æÅhóˆêùÒ:3uíÒ˜êÚBY)kKÕ £©‰ÊaäyF9øOJë”æ{‚¬µ9ìÝ×ADzÿé2m-ùÔõ¹ñ”²^`
ÞÀˆ®(ÔMÉêç¥T‰.áì$õ‰d‰ÅuHé®àŽºóhn°üIÙÑkì_«×dŠ«’`«gŸ9‡–¬Ùð¤A›ˆC«fw~4!è8B”W0è£g^'ŽÞd‚íž8´ßõ¿Fàûìyi]šÏ¡F›¶Ÿ„ÿ#JMÖñ•èÁî®CÖ}ÃlºR€õåv”WÈí‚óÁäCQ îNXÜ¸›xœkSÛFð³ý+®î„±6!-ÅÐ“ajpj´C™Y:››Ê’{:ÙIÛü÷îž¾“N.4(Ú÷ënwµ¿On?]üº;ä."¶{å±@ògâ˜|ü4Ü=Øëî†b×w$õoyàú±ÇÈÉÌ¤¿÷ü£bB¡	Š¤ÇË ŸOMXp éæ&ÌãŒÑ€®ü²dXô%Ú¤#"*ù‰ëp#X!¨¡AÀÀ2péÇs	ƒøó>™dß]‚áõo=6ã#çãÁÙd@Ï¯/4Z	g7ÓWG³¹K€“¸ÏŽ8¤2¤ðÒ¤4>"mÏ‘N«þw½†xÞOž‚E±/É)éöëõÚ,¤ÉÕáä„ÂãíÛ¦ZN™þçä„õ7ð·§<¾#»„?âkP2AÊÐ¯EEìJ‚S´FGH0rR?œ£uÊØ?cîþA›ÆÜ÷(ÔK÷ñð©Oª°=;‹}¿ÄZëi8á¬«Ø
(Ëu–Ô™3¯_« T@6BóG}púˆ1{sF])|Ê‚~TàVŽÿx`ã\8Ÿ©|ˆ´ð.xPÄzl•™WÑx™éœÀ£¸ˆÁ_ÁÐC¯°KÎ…³°á=RÞ›r‰HÍr?°Â§ôÓ
z¥0hérV(DTÁã 
3ƒZömˆ¢øpÍõÙŠù›HÇïªpzUxx fÏîë˜ÙÊßAWLD<6È. ê	¾²£çKv3Suà{0s@‡g¥½d.r™Ã•ÃX¡ÅÒÈ=ÌtiÊÁk¡ÐÄ\Ó×•œœd8^Ð„BAiŠ…q2Tàsð_Tø‹µ	)ˆüPÚ",¢óßýð~…{’ñ‚¨ëÎô¾4<x{]î¯Îôvr6¹»¥pe_ü†×éçn·SDþrwuþ3|¸»^\Ý|Lèz%ºË»á°DvP"Ÿ=”¨Þ•¨ÎÏÆÊ,:º¦¦–UžMÎ†t0Æ	ÉûÉ‡»Û”ý;w7¹¥ÃÑîCz9_ŸMºïKt—ô|t}}5É>*ÑÐÑý`L'ƒëOcÐ;$t?tT"´†·i)s&Í¼4?ó:¤"o¤t¨¼9ÂÉ:¢Þ°–NAÅÆÔ]xOUcÜ—nÍs»‚ n" `çýî°ÕŒAêR
*[7ÌR`³„{#@6p½u¯k¼(‘=ÈÈDwk‰aÊ˜(ž.à´8^æ™eMôrLëTÔÂ&?#Íoog'mÄI;oçýÈ÷²];oÛÀ”öì<ÈZ-¦ÐLÜŽ5H»/«Iãå†‹œ9ÒV¶¤Àd
"íä©¢ýó _0ª*oøÀ¸W/ð&Öy,r°ñ‘I"Ÿ¹ a$Fa~Ñš²­úyI`FŸ&ôlüñ¶.eÔJ ƒ›‹fËÈÒÒÐ$ñâ	—,hî€¬N±$ThS‡(Aiž€±¥&ªMükFÒ1þñÅÒgMìÐ3­NZ|ÿ‹…³&hšleí<”!aŸy–m7¢d^lk-ÿñ)u®q£.ÓVeã¼È8i0b'ÐKªJÀ±³.ÁÎáÐñÈ(ð¿¤ÌØhÉ@ˆP$€q”¢†áš±³’K´A¦\,ÖŽ€jŒK™KÁÍM&Ð ·@Ö *ÿH[ëev¯ q°T§nÄŽý x
+.#1;ªLõ³ØB½ø’ð¤‹§3y¡[¡kj˜5fÉÛÿ“7yã½yƒ*C2ï÷ ÑÑó©¤?uðDíú=š†ãzùû_ºíÊ2¹ðƒ’-ÕÕ­©ÚL›¯P…þ¼Jm&5›Å+šRQTÎpzJzä'Ò˜ˆ*é˜@¡‚›ðdÐ¯i)‰OYNH¯Û-Ô1¢ŠÚ¶&ÂæJÊ Î š¬Ô®Y¦Pî>8"À…Ÿ8.Ð·Šv¤[Ë6;<²¸W¦›h¦5`.¯vÁv©eî²ðÂfòJánC¼±Øl	Jžsê=©ušücÁuŸJŠ^«è`‹¢ƒJEÓ×z4ÝâÑt‹GÓ×z4ÝâÑt‹GÙòS¡¦¬(cÐååKä˜+¨i°‰3.¬¨/T¤í´UÖ¢,ßz_êÕfM¶èÚ ª6;óÖD‡²‹qé›ö6I‹(s;7Í6q¦Õæòþ‚ ¶}SSiª*}°«Úk'—ýQ¢¯Ä¥‹´|CxHW' œ]ò4kC4´t Õ€-²ŸAõY¬¥Æ£ütIv—ëô1Îf†
f:u¼^É]ðG®ÐÔJGäR¹er*Ëí¾\nù§’Š’Ëñf-”¿‰”[—Qv–(¦F©²ø¡ek¯Tóäv…%´©Îöí¦¨ÒPgýØcª´’XÎ³å›U­}"°p·
çXÿ¤d+7û9Ö¹ðÀáÀ|œïq¸0àž˜|x†¥k®x<qvý0R"TØèÿÓ”ë²¶Bxœ}“MÚ0†ÏäWLáBVªÛ…t)	(aQ{²¼É Ö&²¶+íï$hÚK>Æïûx>ìÙ$ëåÈ•Aæg¨¬ÜIÔŸáq°OÓ¬Ô,5<ÌœQ¥2ÜÁ"\r?Zðo~à9#ŠH…7A8æÕ^*3“ÊbÞ>™:è8#¹ƒ­%ûÑÆx´=Þßá®Qß½ùÒ‹yøl|Óûg§««Æ©4¯2„aZdÓÃÐqÖÁÓ££yè‡ÍÎÃ	ýúN¨²Rƒ9bJU¦€¿,Õ-KeHSùÖ‹¹g°X…á<ZòÀO6cg0ð¢Mü“K­n 	áj¥Ô6î¥²ºÌsÔ$¯¥nÇLih%r–—ûš£ÕOhò»,ÃNêâUhÒMÀRHK†=Z~qZë iHÌXaM×_A@3Té$$‘ÆÊÔœÙ‡òõÊ&o wpƒ–=Wé½ìA#™òÌ´-°7h_lE^¡éænnøWL_Ìj‘¾HÕ4ÉSâ9GÔìLšæ»¿:rû)9°1t7;Ó:[B×Õ(Q`OÃÂf•‘ ¯S­ÿ¾Mµõl™È²lÎãÓH.-CšjÃ¸ãZ,Žÿî†Q[ÑqùÿtkÌÍx]ÇýBwˆŽ±ÜuïR{ÑøùJýá*^<ãƒxœ[Æ1—yB¢bJjQ¢>ˆÐÍ+ËMåâRÎLS 
¦eæ¥¦h¸¸9Nl5dÓ»Õx@ê”t”\€ôÄ÷®“˜¥X@ìÉùÌR|Å%‰%¥Å@YCiò_fM \& °µùxœ½ksÛÆñ3ù+6ìH(’¢4©“èÕÊzØj%J#ÊI]Åƒ‰‰Äqð-»úïÝÝ; ´ewZ&&½}ßîÞÞ¶·a|súþe0Q"úžˆÒÀD¼¯o.û»ƒa_ÆýÐMEÜÞî¶¡'rù³y
ÖÔ†ÝáÎO}üúÞdîàp¼”±›2C&àú~È" âq7XÆr»ÀG?é§ÜXìÃ£Ì`êF/HÒ8˜d©@NàFÞ¶Œ‰ÁBzÿH°,òDé\ ª¸H@úüòzô^‹HÄn7Ù$¦ m$r¥0™&LqN:Œµp.‘1[±"ÀñDœU»ÄA‹Ñ<{dªå¦¤yrIt6ªûì¹œtù¥•3žË%Z4G–hã‡ a" K„Ÿ…=bÈðÛÅÝ›ë·wp<z¿ßÞîÞí#r:—8*„b,–a€œÑ®ØÒGÔ8\Ýž¼A’ãW—wïÈ‚ó‹»ÑÙxç×·p7Ç·w'o/oáæííÍõøl 0¤;q½‹ÁGf‰nôDêa1ï Çj‡ÁÿÄ9¾
¢ÙÁ'™-ðw ÿ:ç8Låâˆ,máçÍà\à×ÁrŽ¡´<ºULDÜnÿ)ˆ¦aæ	8HR/ƒùQ“”ÌƒIDiú¸ÄP­@EG5†a°Àà®Âüi”†UPáäzU˜Ä˜f3•yL¶“Ô­;hÝ#gÞ1`ÑÃBT!hÆ*pf³€I`–áv’aJ~T#žðƒHÀÉíÙñÝ™sruj +÷sÖò›ßœñøÔ¹9¹p~=^ß:§0ü¸óËÙŸ
ÈwÎèøêÌ¹<ÁÏÃbd4.ÁøùqX2¾º95Â—•Q“‡Ú8¯Ù4¥©ƒ):A*ð¹ÝšÎÝjŸHzâ~g¸ûãûývKÓ’yNà9Ó4¾p(‹’`aÖ˜´Ià­RE	­¡™„rú¯ý5º$Nä.Ä½aÒû5¨”º
»ê"˜HÖ	´?<ñ€)¹ß~Úoô”Å#Ñ	±T|6À$`Oí×aJãð,cÏÔqWYâÎVÈKãrE±ðNyH+;©£üùÒ¢ßëÁº©ïÒw¦2JR`ovÉ»&-&ó¾zB»Ë	%±jVé‰E¡2­…X$"µÏ!J>	é[,Ä¶	ùÁa¼~>r,Y¤ä&áõèÝ&©>Xˆo·[­X¤Y)mÚ­ínN«5wX×˜•Äÿ­’Û`õ £VÝŽ‡‡0z{y	››í@(v^:©t¦ËÌ$z<~8lÌ`›b ¥+ñƒÖùn˜ÐÄåZñù	ÕnÆF‡²ážAÌÓ'ônï7û/J³D4¨¾èGÅÌ§)T²ª3jÐÂWéÑÉÑtù¨}FqÓõ­'¾°™Yñz¿Š }Øyê¼ø}ø¢Àå’€À±s1~uùw«ªà £xA´¤iš[=xHî‡ïiž‡4Q¨8eí!$ÑW¶´«R´gVYŒ“¤ƒß}ütHkæLôÚ¹úg£_/yr[§œCSÀpI.ÀP¬"Mñ7qÍ
WsÉSÅJ¢Ï²³,½ÚR³jí÷kJ©¨Xj½¶V¯˜n$ÓSQödàQµÀ VÅK½`©bÐÁê·HäSO·Tâ{1ÆoÉ'ªví–B4½W2Ë™t6úÝA=† W[³èÕÞøÝîb†ËæþRN"ù1Y‚@lö°Ë‚stà£H¨1ká{(ÀRu™Á9)t¹×z²ƒ°:½Àÿ67aý8zP±iÕq·Z“X¸´ú’¯µ/ú}v}Íßº€ý‘ÈÈaG•ËIb­]gJò~ X×0Üx½Ñ´ÌXNþøÜ¥L÷›‡TM¾8ê ¹q’7
¥ý;»?“ñŸaOz}psô#ÁCª'$Ÿ™é}“
ÍÛ¢iÕÂkÎ<N]½¥x!Ë^=!ØÚR3a*·Vâ9®ç9n˜Qý£öÜ2™hŸ¶ sÊÐ7w
`éûûàý Ê+¦Z+Ü=úÖ*
û6ŠØ¦’»áuhM!ñê¹Ã¥¡Y;ôe³jÐ¹ ¥ZÊåJÄµô•FÚœsêSÓVWÙr\Ó6¢ÙßíÚÑFÈ 4 Ôí¿¶Á(ž_1£ÄüNK˜uç˜ØTìaxÍ$æ­$–¬uˆêè)ÃVÅºY'•”X½<PiñÑŒˆÔ(*ZŠÂ¦vÆuaîüu
t:1±í•BW#£XÍ…ë5Õ*³É7ž¹<q	ñÜdÎÕ#¯ä¦z²ã¸JvJu"¸Òö©Ðj?•µ·´J-.ðõ4Ÿ&ÍÐP§ì*¤3ÂŸUì¼1iV"½‚A›—‘uFôÛ$g…@HÆÅé
ozªÔyK¿+f×±n»]u¸òé¾×ºš&rÿx¨ÙuTÅ@³3ViLãhô9!OäË³*T|¾-;'ûÂ‰ëpQÇ@/÷üŽð„6Xøë#B–ˆ²¨q[Ì¸ÄlsãJì“ø‹7¢sg‡6pPåCî&ï­ýžÌ&ØREÉ'¡ë!®Ç/Ì·|U„fC—Ä´¨òsh­ ÅŠaìªG$QÉNÂ{uk“îW±³õØ$‚™"GH^ÂqæL2ÿ~©¯ JKB±aÄœªË0ÚYæäf}Kt¾¨xìl¼ìú°±›¼‚m(_°’“r=È•§P"ãpÔÛ8$Ð	Qž¢í¦ê–µV±…>Ó
çÅic¸‹}4ci¶ŸS‚½ï.À¦P|S%®h\´Ï+É…?×å
o<»«Ÿo¯Ã´=-e}N@Y¾*Ç]Ó¹”‰ FV.C€½v7@=á»YXVªÊ ª²tøh«ÝÊŸ1è,Í
Ž*äð—\ì™zß\08ÊÄ¨ü\›”ÂŒ­ÆÜ_çóX/aO<gUÙ]ougè¯:eDÚÍ¤„b[Eú•dÆ´å@>‚$@©dÓv¯¢ï¾”s4µéœšOTý¯Üòõ†‘ßâ/¬÷ÏÛ¯îÄËh(w×ÏhøL±V i©~¹ß^­Y8Ð´B%µ%ªNJµI©Á¹&ËY*Äph5‘Lp<Ô.Mì¯r‚ªìÊlä¸rúÕn­Ù‘˜MÕ×#lM·YÙ/Vª±½&‘ˆÂR×³i~TÖÅ—‡âæ€îÖÜÈƒ®~ j®‡ÔÝtÕo¹WZºéü~÷¥y}¤nó÷ÊáÍ—"´^Ÿ\Üz€QÐL¢l¡Nq8ýEZë®<‘L¡s+p“,`óÉQ»_º¸&ÏÓÝ, «áÊ-C§T™úÁŒtg™¥Ë,u*óú˜Ü@žú3:yB’A›Šè)¤Ö‚	¯oî0x^-¹L[SðüêÎê(ê¾¢Æîæ…|4²¯òÅöçšßáœß÷@Iù7mž;|"A,ÏF§–­å¢gQÅ«ì,Ý;v*(Èƒ=`µôÚ‡4ÆÏ©"#ÜüŸm™zY+šæ¬ˆê‡CøÛøzÄ'›êut}{u|iÈ(Ž¤q¯A}ò£2ˆ->µ¢ãªâ|‚w"”µÉÒ
ÇB>œqÃåÜMd\Èàà°rÍÁ­C*ånÊ©•W[å°óùÁ€ñ”ùº»LROÄ(¹C°IL7â†ž¡ØHc†"æ¶Sç1”®§9ô„œ®¯Î®è}&S	’Gge.=5F˜çŽê6OvŠCnÊÒÂz±ó“¿ãp+IÿÈËÛ54‰Š°\bÉSô×Îíéõèò]qa‚êV¢Õà€7"û‰– ÉþÓu«¥ÕJc$±ÅTÀnQ*§¸‰ùaµòNãõ'ßjõ°,XÙØ\_Š_¥ì4ÄÕ)•°ª«+5‰…ó}I£€Aí¦O]õi!%ÞÖVÎÊœßõíÝYÜPb©±vÍgòæ¢Tòcóè&Ç ÿÒ§vƒSö0üb!j=N÷ÖÆ(Å‘—1Ç;Ad¶B\cšÛ Oæ£`ñ¹D—.¡Ö]/”ÖúÛ¨-uõyø¤w°tíenyšo¹8°XÄWŽiõ™(s„ˆÞòÑè
1vpb´!{Ð¡£ÑŽêTx.ólÉòÄúV–½BîØç¶‹ò¯=—NÁÖ\e˜V!÷V§–üÞcÒd°xœU‘MoÂ0†ÏäWxåÒ"
ÓŽÛ©¢Djjm§¨JÜ)MQ?Ø&ñã—®l°“cËïcûÍ|Ù&|õ#%Ð4è3‰¦U…Âú–›È˜ÝûUíë¼Å&s2îŒÄqÈY²àÏ,¢dl+Êà¿"u÷®L3?tùªKðÍ©DBÆª€»A$ÝÕ.x¡Œ'û˜zp>Ão½§­hÒ”Ç»hËxjïoØ¬¡;‰àˆRÎ!›h·d‰›1ua¸3gõó‚YÕÐQØ[àgk¯W•ilSä{šflxS2Z¬ã8HB±lë’Ñˆ&ÛôÍu´jÚÙ¹Öpa[9Ú#NÖÐr#Áä%6Ç¼O+e.v«¶â=Ç»b•ôE[ë›eÕð%_ *ÓÖ•ÖX_ÕJò¾Ý<â=Y'ìeª¸udð‹_Œù
œr¶nxœ•”[OÛ0€ŸÓ_ÁË@êè%¤žX	UEè…
-›,»I¶ÄŽŽ¦hÚŸ¬”æRiªTYç;÷œsÎNÍÅÃÍK×|ÊíÎe2ZE.ÍéƒÛ|îu9tc,)˜§gcBW£æböÍAÖaX½{_Ú·ïŒ¾=[wù|yï åb‚¦Îr–Îü	¹_§†ÑÛLu¥‰ë\Ï?¨õ67ãFW†öàìÂkñí¼2¹y¾Ð¸·3u–ÊZÌ¦…}>²í‰=Ú%ÿøEÃùõÓó£S¨œ[ÖÅùÀY·–£~Ï®û®ýRféÎæZ÷è{o8ôîŽ:!!ó¥I×q€Vq&B0wŒŒ‰(`”˜“¦~b™½ª€UŽÖ¼Á ßRj^šã*ŠyÐÊRà?©ÊçÒìÛU&ûùLVà™D>øU9PAaMI‘ÞŸ«Åª¡QYÔÊLD-8ñFÍö1B7ÿåh_J÷Ç)à ÁJ×ÿõ)Ußâd_Ô?Ùf°>	‰ªeˆƒ4ÕGW]¬öªd"V¶ékc#’\âQ¿'xsˆFì Åë …ŠÚ±=Z{¤@ç¤Ñð0NõLÕ«	['µÒ˜ç(Í¡	å¸D‘š0xÛª#?Ä`†QR!‘¤IêYµIÊ©âRUÝÔy§(yýHbÎ‚òaFPŠŠrˆdã†©µÔü"
À‹ €ÝÇeÒ««›¢×}'ÛîåÀÖª…Þdí©)! 
lÅ[ÇCÏ²Ê•Ý_)žž¼/±O²$EZ^ÛÞ(VÝ•ó²‚\_¸ñþ	(¬#¶âM§²¶ã:ŠÏ³"ázøâ©_Þðß¡úœöW©½–xœí}kWÜ¸²èçæWh˜Eè&MÓÝ“œÅ2‡{™ÈìÙ7“åeÚnpÒm÷µÝ<öìü÷SI–d»„æì»Y°õ(•ªJ¥RI%om‰³ŸÝ<‰aœ…›ÇAçÑ0
Ó=ñÓÏ'›ýNw3I7G~¦+ßFñ`4BñÃpç£ÎÕK#)LÓ8±“²<ˆÊI£èÂN›Æ$ÛiQœçw“0ÃÔ"yuŒÇIÜ¹Z5Òâëqh§@åÄÉhzÅnÁxz»%ranNRÀÓW¾Âa‡âÕ»£ƒó#ïÕ›C£,
G›ªÁ•,O§ƒ\Ïóó<.¦yèyÍæÄ|ƒVK`AÏ‚(’ØyÙØOso”\zQŽÅï+Ï›î6ÏáÝ¾~ñ>O>ô?ïq’ŽÜx/@Ç$®m Ëâ©óá9ÂjH\ëªˆ›ÐO½QxŽ¨:Ô…½çqï›¯þ­ùê__âë£ömåWa:räWi’ç£P5O¹„?Ýî7É4Î¹·¤~UR 
&(žÔ’›W†ØÓ˜¤Éeê½¡¼!²XÅ0õ³pùj£ør¹û¡cr©:ƒt°t<‡w“¤ŸG‰xðù¢}_WI–{ièÙ}!àëÍ;Räe¹ŸOo<óôÎ»˜‡aê%×a:%7K‘p2ÁËà3üÉ²¥jÆ~xwy˜y7i”ça¼pU"óWTä·Äfoš…Áâ]ò½(¢Ÿ'‹3*…ÌÐÉËÂA¾œfÉ0÷ÂKw
“ÙÂ5§qx;ñ&É0Ù³pEL`”æ…+ú×¨$†7^ÜÄ l‚ýâh±ë©ÀƒJFá(¿‹­ñêðxóî™ØØÒJ0Í®ƒÞ‡mcê >Èç«ÐåWú]#02
Ä££æÀŸ˜p€ÅëÅèÃ®ÛíØ6“nn°â9ŠHÅ‡ ~lb;Ž Ú1jaÒð†’˜~ÄuâS–ÄM¿ŠÍ™4Úˆ‚öJcpå§bƒ{Þüv1RO77ê‰q1ß†7mÍDj;¹ø¢(6Ò$É[+0‰©ÈaïÚMCD±‰EÚb5ËVÛ"
6_fYk¿®<4Ú^UaL¡?ˆúzF;ÀDÙ<-T8-kÀÓB5PToàq±:È?Mx^”
#¨u1Z´øvæfF?ìâÌk¨ÂËTÞÈjClí‹-¡¶p¢D‹ë¬-f
Ñ,Þ Ê‰bŽœ·®aKIWC¼÷êý.ºFçÀ@û¾”ƒ´WN•ãòYeŒN3Ž†¢‰–mw?¾xÑm­4È¤Ëb²«‡M5û= äŠ«õ»U¤ÿ—•F8ÊÂùµŠ†¸ÚJQ‡ï÷f9f­ÎÇÁÞ£Ýþ¯³~eu ÎwA4äËó:ýYñ¸S<n}³b¯Hï~´PRZç™‰v!•V9ÐGår$†Ì’(2¤+4%èB¡ˆ‰"-Tã
8@[lœiKòJ`,ù³'Ö‚ßbK³©BRiq¡Œ
ÌR…@GUA’ªK•½TUJª+¨¢*¬¤†*‡aZ…¼ÔIªÜÅÈè$ãÏœPnnJn,„˜¨V‚Ÿf¡áM©£S ¬Ðüƒg?½¨	j^®µfÁ…2Ø†bc0t"/Åÿ']ÃŒ…U™Ë ÕåÂm[••5]vF/—)ì™OYÜœgôˆzÄÁ1³è2Im
x†ÖIœå²‡AxûãÐÔ‘%ÚaŒö8âŠ+éçñt”G88°$(,ª= ãÖ¢¤¹¨æ?ÆžŠ3Ä\@'€]
;„¯­m”[æ²¨à|jõrÝþ(úG &DÏÍ—îRµƒ…–šúdÄùÎ®—'À+è~l(Ûª‡-{dðbÕ†€kzhËhÿÏ¡‘½*H
9—¦Yÿ±¨Sr>hÑHºO£T‘,'Tqè/BÂ&Ófm›EJjÍ ¢ß¿½|ÿvAøþõå=àC­ùRP%bÔìRòcáñ(C«ð?=è¸2À.?¨â áá?€‘¤^æP&ÂÎ?Ö 3|nI'ìÒt’•@F–Z·â"ÉôbVÒ©ÙD	.Ñª¤Z}«DC±%zÝþÎR´¬ù jáj}HÑ«odiA¬õ y™ÿ@º1ü¯%AyjU»ÕÎ„˜òù­¹é¨µøA|ð¤/ÿ¤)¾©Ç`víÈ=ÇG£r€Ô·²ô(©õX³]ièAéV†¾ürÍñXt*ïw=(¡*À/M©2ŒÇ TywïA	U~iB•a<¡¬½Ì‡'”þ~„²`<ŠŠ*ïÜ>¬’ª€¿¼š*yœéÐÝ©~ày°þ ã1UÚ—P:•¡/M¦ˆÇ ’{áA‰T¾4\A"÷´Åƒ’¨|i¹ƒDçJ”JUð—&T
ZÍ'whÃëh
ªÄÛ3. Ú{³k¾?9ÑøÓÐjmzñ–TDþÄÏáïíGoNÝDùà
·Ài÷uàg¡èÞü¸§wR+÷?ö‹¢¯Ì¢¥­ £à¡YÐñ=;eÜµ€²Uû@KÅ_}gw=‚E¹£¾Y®poy0€qþeh–Þ6Kþ£ÈŽY¤pgxèÏ0ËXåjÃEù×]³|± t—FÙŠ%P˜š¥-¼+–FÑg%*Ô}^*:H åÛÜ0â×ÐBM=»È¨´[f¡¡«Œ‚ß›i¬ú@k{¼å»Ïl’o’É:- ³£Bšº–@›³o"ç_CøÌ²4P€mLEû¸;ô§£Ü,{ƒÆˆq|¸Jgœ½lVîf6ÎËængó)îüKº Ïa|ƒo›/AM´Œ³ÅæÿÚ··¸ó¿¶¹ó,ƒÛ:Q ÖV~w<}¾³Š'ðøˆ„§”ê) EP±»nFÎ‘*yíû?vë~
¦0>©Ùq¾QSÓ13Šf0ß%Ã¹X·Äž(j,XœÀ·LvèRò À	Æ™8ýåÍN40ïì­e{œMüA¸{k·’…’m¢’yäøP˜?ÿuôw1ïçTOóôúÎ¿FWD‡Žˆ ‹µ»ÿ~(h¯OŸ‚t …Ÿ>E‘œ%ðXªtå2Ì+‰õ@§RlÑÉÐ‡ÕŸÂ\ð©‹ë0 {Œöhˆ°©ƒ2D3™pÚÆÊêoÐI&Ù*R&UH§ùÔjÄÇ§CªÆÀD—Ct4üp<‹RŽ[†V9œŽ'"™æ“)°%Qì§w‚tîVA¤\S‹
ó‡’ÐOûvaB”rz5ÀÃèRŒl÷‹Žycn\$ÉHè•Ç}(ÒAÔ¨ehƒá%„’¤á¨ñNÏŽ½ƒ““¶¬üöçsïàÝOgHæ¬%kbâûãÓóæª9´À¸[×Ûâ	4aÁn›œ•Õ_ŸüÔD3v“Q‡ÊB¬_¨êEŸ0U¥]ûGUøgý“ªˆE:¾éšG§‡Í–ìú2ñS0èÐ@H&aÜ|ŒhóàÊ|[P×÷y
ŠÅÜ¡øÅÐˆ¡8 qÌfÑx2
É¤ødº{;ðÛZ;j5Ø&-(¤†¥$ÙØ7ØQßT÷Zt³î˜W¥-JŒ – -À¬tJªAÇ;µg“¾¶¡E!ú—ÛÁÌ ˆ›fSOU<ÒZ&Ð‘Œ“¨BòA¼x˜µAt'4Ù´"íóá¯ÄL0™VV£ÐÔçðÏSžo¨9XˆS ©ÊY:Oª®`ŽêªÑ-šøð¬GÁk3uM…V™¥Gf«‰Šq^=ÊÍ1þ©A …Æ¨¨–UƒF›U¬+eï·X.•`çŽsTèñ v8{y¨ƒÅ1‘>ßW( ðùNc0Å¢êmäÃ—lXÖHŽ†aEòUtyB§0,ÌÄé.Å«|Ø‘q0Thìß"×aÑ«iÀ8Škór2fa^ŽX!úlÖu~ƒ]8œO…ÀçP
ž¦¡8CÐ@ÏØîÓ…7çü8Å_…a©.r¶qªÙ\„ì£>ó†Xn¾DµLx'>*XËÂRs$WÄpä_.Ïb±¸ü5€M!± ÿ'ËÉ})`Š™0IZ%Ø….ÕûÆ¿Zþè€-‹¶Tü×@/úì} ‚G‰¹ Y z1¼Z•Ë’b=àœZ7NéïB¶uÝ¬\=œx^þ÷,ëØÃÏ
S- ¬œÃNµ®&/êÏ·7Ù×m!ðÏ«#?7§Õiï¹ûŸöõ3ôób/ðsÿC¯ß{þÑŠ:uâö=#÷=¯ÕBÆøq¸p#Ïw¸‘ïeêv…7G‡ÇÞ›ƒÿóöw|ø+P°ëæŸê¼^©Þ¯ÞÉÑ)äôuˆÛÁé‘÷K¯Ûíz?¾õ_Gç\fw™"§§‡ÞÉÁ¹wv~p~Æ¹;»ÏwW´î©¡µÔv¡±®©iYV‘›ó«4ÖERàºd?Ô`ýQsÉáŒb†aR×"'\LÍ¹î„d%¹ˆaÍ¢$þ`ÑŸ»>Œ§cñšTÑû8Ê±ïÏ@	¼Á?g„ÁÖÆŠØ¯Þžx;><ÿOÔ>yšŒ2qùÌ2šŽã•ÛÕTõ&v}ÎRëuÀï_Ÿÿß#eä†Cóˆ¦-r>b™÷gÞñ©wFJ•ŸßÀ(]¬1Eü qÙ#hÿ*ŒÙS¶±UÜ¢±í‚¦0è«D*Â“þ†34\b¡þÊB@)È`…x	IÓ l2oÇÑ Md¦ö1›‰ :dë†Ž<Û7–±•¥ß˜Åß¨òEÒû3s¾Ž_MãZ‡!¢ë(KPG÷:]¤XxQ\&.Ø·uEöÁª¶¥0¢~±0”’}‰¢€{KÂ²9É)Vä‰xºµy|úZ$)Ö&‘AÑßÂOçÛoßŸ	Þ‹Ý±££xè]$SŒF¸›ÐU'§G??¿=ã‡Ó·ðß%GÁe(x4f WïÄ•ÂÄCò‡o3töA§¢¹	OmMÄa“%ãëã>ñàŽ”’42¸¡Ÿý,ÃÞAÆûÆÈà“-R%`Jf7*%OH©`Ü®"QVÕ§ø&@ˆ×<º)¬…È;ŽBf'Ãòé|f[”¥Š¼=h1ºØ™±‹Gö–PCÜªI£ô7/1‚"°X"&Ç½ŠÁ5*þ‡ì8˜´L2¬8ZµMŒ(ÅïÏöø¶$+˜x¼‡Ù¸ Å÷Yí}½qÊŒ+Ê8EìÆžXQÄ³ËØ‘ÔåïtúCêµ«¬Ñ¼BRÞuŠãÚá8G^NÿØ ç÷¨ØÛ(ö50¶4pð3€ÎC‘x*Ö»ëÕ›]z–S\³fç¥x[M¬#Ú[œfíJá‚²@|Ô¦“ÉŒ
¡|hsl/õÕéáúr¦Üi²ƒ’If2:Œ2^k›è,×´É{E¿zÂQ½E0îU-NÛœ¦3»i®=¯}E¼YíÆöAnÝ¤­9brÉIÖjô±f×Ô5èy*Ù{ÿ¨ÿoj4u%ŠCÐÌÝòV•ÍRW#°"ýtAuÅÔc‰šG±Gv
ö€^B–¼p‚SBqÿ#L>1Å¹¿Ü4[«Jƒk‰MÑÃ9¥zºh×,Ãš[¯µ­¦Ä“'Î/^ð²½!`œOñ&§FB§u¶ì
˜'Q›'s²Šä&Î½–Ê$!æC!…I¸Óénîtž#,ì5,N_ý].Ùñ~<8;ò~<>?k<ŸSè—ƒ“F³'~øa–åä2$°Ö	›ÅXßÚ"óéÝëï¶ä],ðÖ¬mïµÛ?b@¾«$õ.":’P^¾œ…¥d6V¼@Ì|Ý4 <U_ÖýL3÷Z=½èÆ”Úy*šÍÏð·ÛyÖBvR«E£ÒM(×št¤2Ck~zA×@€Á‹vì0ÞAKV™q˜îaéßñ«@r>GÖœLƒTÔ
dßÑb›]>Ü©‹ÐÁD]Í6y>ŽýÏ¡GG£æ¬Û-ªrXÜA/dhù"		¡Ú{2TÏëï¦Xä|¥¦I[‘²þ §T°²\[’®Íx¢©,)¸'	8÷ÈhIR¸-*T3œ€îB>¢¹c4Õ‘ó¤ˆ2’ ‡ƒÈS†c‹Bàû·ãI#bw½È %X•LÍ`FW¦}i—†ÐDR,h°Î“©üiëü¶E¸4t²Xs•ÌŽøÎÕÙ¦Š#Fiêß!›øeö1h.Ó&NãÙ;‚=×€•:Çrí›™ãG#ÁÒeYs™Z\´IdÛ:‹a‚âlá± 	YÖÛ$%“Úri]7—‘e^ü/-ÑfµËõ¿åz¹žÎìJÉ^ÚŒ_Pð-;_iç5C_]dgÍdãÛ&4Piö‹²Í…efiV>î°pÛëÎåß|slöedsø¯*JÉŒÃÖ¬DjML6ž,9b$µ¨Wj‰Òb§-zÛ=ú¿Ý‡å²?ÊŠ1¶„Öë?{Æ°ºý{Aé?{|÷½Ää»ç»÷³½ÛÅ?ÛºC@û¥A`ÕÝï¾
`¿ý}ÏñQKUR¼ó¯)ÅöüOÞb×jÅ*$’æ¯$4r:öo±@¿÷¼î@=^|_(5£©Ê%:m ðjüå‚:“4·l6XVÂ#¶¨R%ˆ0sHiDc%<þCmúì‰zñ¡DÑqÜÌU¨,~5þ0êtJšYi–šYq¦â™Y³V×Ì©U£^æÔªÖ(³™1W/ðÞ3z¤ìA†IÿjCl¦‡ÑU&h2>+FU´ˆÁG0ºó¶„­ž‰„5J÷/§¦‘[üFv÷öjN°¹©¶ü\ý§ÖŒúOEY‡[:|X&úhòofI”‹ˆƒ]´¢vIy–Õuº+ˆ$°ÊUwi¥¿…ëÈóU³ W{4®ÑA¨E˜Æÿú<SZ‚eUUfplå~á…üÁ×aê_†Å9“(à¨4„¥ å'ž¹žvœ»è¡§[ÍÌí~ü*‹xÎÔ÷uz÷!TÚœe¶Ê¡1Že	SÎëëÈAÒ«¨*÷vÁl&:&È¹å”,G¡p¾†¦Ö@[Œ¤–ÚyPŠÚÈÔ´¢˜MO3¦yÎèÝk£)CÚÏž³‰Ícs¦eÓt”ò$Tõ¹RyøcqFŠîe¨pÆ¨£ÕÊ¼pŽDÑ3ÛRç‹¹-yÑÀžzêé§¾~ÚÖO;ú‰n=pñÛ©ÄO#hÉÒ\yg`G&)KŒ£„^í?‹æÚ´³6mÉ r<Æ…'ùÆþ'©'é®l»…/.=PXîO·ƒJi>14ÿºj´VÕX]3µ­çã4<§ª¼E"ð³+/'~Š—nÜó¡%çªTeü};¥´&Ówšë›ët E½þ¯Ï[À¹cŒr	fi¤¼Q_æW€Â³®y€…ãÍŽßŠµL¼’2'R?œéS¤’^z+÷oz+÷ÚÊ-¢–>A‡ß)‚ƒN™þ¿!f;‰r¶6hWŸB/ÄU5ì²Àí·}°§×ÏÌ?ý.«¼Õy×žÎä&Åêí¬þB^ÿeš»§Â«p–Q'§éè‰®©qQÜ±Qüß¬ìj,Äe·ˆ¶+‡ÚY>“Š´£{´ÈŒ(‡Ý›©÷ˆ´cuVV`‹ÆÚ=ôõVVŸS~É
›hÊ	ÉÛ–yõ‡ÙWq)‡¼“ƒ_ôþ×ÇüñvcýF…ûQJ›ç×m4*uWm4œ+6Øêøb	·øÜšåÐ-+z"£¸¡ …8¤BP!w¯)ÃCEQ*NŽ1i2Â ³Òâü*LC`< º	Åÿ›R+¼}!¾Äðàbe‰²8AC|¥YNµ·lÔl€y¸{;èãq¢Ûö8È€C\ðHÿ±«¶&ìâÉù&G~Ä“t»-ñO‘o—î¥·ÒýÊ¿'	|™ä‰ E@Y‡ÿ”AªZ°x»/Š ´Úˆ6uÖÐQr^^©7)Ú6ó@•—™”îF_<$SCß&…I¼MÜH7)ÎÉ¥wo‡ßq^ìD)üš…#ãmÜôzøn3«G¼’e¦Ó(¸5ê 9Ñz(°*(Ò*Š`"ƒÓQ.A5ä5;‡G¯ÞŸœ{Ço_ŸxçÇoŽÞ¾?ç’L1„ñ„1™(êHŸ¢_ó	ÑF¹ÜuÄlc(gž, ,¤ÿ§ ¡"¸¯ñ‚Ñ!8,¦6Èµ$4Zµâè|?>«ˆ(4F+…l}ÃðÄá£¯±1¼2•¶wt.„F¥ÇB˜t‡wB³pV<DSr-_nÉ È›ä:ò^BÁç‘¬Â¤æ’ƒáæ*èÊù‡º ¡2Qƒj(_”²Eøx0¹slœz§X…â}¤Õº`Í-ßr\:ª1§™ÒÖÓìVœâ-åçp/2rÜ…pì¯Ì¼—ÈYb•ë©ã-µzy[nzE{teÌÖqæ%8aÔÈÚ[2 ÜÏ2ù¢û~Wûê˜áÔÍ'2‰ËQ„–´ídÖÄ#YN2ÝË¨ÓÐõ”^‡Í%F0:ã 3oì¢OÇ”Œ©Ù¾‰XC5¦T-
8õ…¿K,(ç8øQ‹ò»nh<cs=UÜ.ÂßágŒkÞ}3íýÚÞ\Á8‡aø»ƒ•D¾®û!u—æç*¼ø÷¼µQñ5~/p«ðÃˆ8‰Œ†•'êêä]’5Í¹înZ1ãÕ˜‰”>Çq	óh8(ø•'¹?B›ñð±ßýqh%Ðy4S0f‹1Œp<ïgåõý9› >tºÐöÓX@üiòü¥Ói*0t]ËI÷ƒ ù$Ü§C·œ„Ûä–°˜°ÀXóc»Šƒ@ÊHcKV\¡	ÌÄ/»ce{ßÍxíBF¿”qŠ°÷Ä®Ê 	áŒ·ÔÃwár{•Õ~Fâ8@UWúˆžÀÉ–>|œöŽš4<¼IÒ€%ó‹˜–¯c2ï½ŒOmÝ(
X72ý"å”ÝZä¶ZQ³R‘IË{'óxê¤›SHµ›#…»2¯÷ªH'QÿGe–#ð%4,¹wsµøWB.F›í†êl£:Û•]¦áPŸƒgB*z£Æ‹v>ÊÌ‚ó›/AuH›·ËÉÈäêZZqÙµ
>Ûé’ËÕ°¯ËU”R«¯ç0ÜÁÆbw5ÍôrëË«ë:ŒoWdj8³ Ì¯ 1¸žZ Ú¥~)ö·Ü¥ÐìöX—xƒq`]<‹Œñ)fH·V!Îz’dz±ŸGF°ãÕ[9`—7E€ñ%cu“A>Â7Y¿XëÍe^ˆá+	,@ýFà8Œ83Ä²Y´W †Æ¬ F¡h‰tß©{c½—M/ÆnÐã^ªÃM)!Zm¶Ï^Òšf•×}#TÕ[vôŽ‹ãmó¥/ÖnõKs9HKÃ±Å¸¨dõhO&”æ}HL®ñÜ7Šä¶ •ªM"¹øéu'öyVKÒ‹–MÅP`›lO¡ÂÕåN?èÚ	…*J—-Œau-×ÅäèmB@ï7_ùEßÅÓÚ¼®x!–›ºèú©-¡˜;¼ÈÀìÍº•º.mß¦–{Ã@ßáå¾™>aÑÔ´¦<"káÊë‹˜nåÈ–-ÎÕ>Ö0•Wf¡Dé›Ï	CXÍ‚’jÒøèê»¾­¼d6…ìî÷Ï1™¨›LI€¾àîmÐW‰eF«#‹yÝÛn×LìG{º®Á®î-."U¨Sdx±rDd«I¦ÑF+èç*Bî¶¬ÿmöÚq)%m
]žN¼!h yÛÇPí`ZÁnR£ê‚“9òëóÿì[:±M¾IfÌîd±J±Ü§Q€ÞñÇî±±'ò{ö3]ÁïÂ1:WòF')¼t8Ã4“#—,0ô™Hµa@‹DC³¬‹u¹©d$‹õßð~Ð››ÒS‘Iµ9¤Ke¼µÍÎFÖ¹ ÏeSðÆÅà>+šÇ«7zTr“pUxBY`ÛÐ¢_Q\›tRÃ¦Q[¡Y¹â·¶{pÖLñ~qô?'£À©¼Ñ¡Ù(÷•f­òÕŠr±Ê÷¾;ë{×ÁÖ²_äŒ}•Å¢N@ÂG/U4ÅrnÞØyÉ‹ö½5¹9‡¬)ð	é·§ç‚U¶M³P¥0ý*UêŠ;}	Y1PÑ,fs†1c|Yiáü`éŠJE£´
êu¢²‹pI§PI¢z©(w­Rw%ÛB6¤z_èÒöul¥˜çN-®à.¼MÉ–×mW®º·}`:,&ôø]ÊpÑ½¨->µÙQËªMP—-|X¾vÌÀ¯ë’+÷A`Ýñ_1˜Qôõ•f•Ã”‹¶Z Ü%pÕ@Š‘Ô¨õnøA©²•ßRR¡–øÕ./é#Û¯xúšQ¤UÐÙ@ž·mü:JÇ7¸íw¢6‹ñöµŠÍb¦iÔËÐ/`bLRÑ§«cºQ›°ôˆÀ˜
ünÝ“æBGIAðgì<`7~^¢§¾÷p•LGJqH“SfejX_úœ…t(¸àˆ™0ÔèKgF}ÊÈ\(8s#ˆ·¼Ë¯ûj§š¶ø{(<CNÒäfàÀÊò"¡CVÏã=•N(Eñ0©ý$JbõT¢Z†¡O~C¢DÍ¦yõ.´ÏqŸU<Põ<b\£èÿ¾Ú]—øî/ù>Ú‘¤Äå½˜;2W²~³·Ø2Ð:(>H!ÖGj„Lÿ¨A`EªÇÂTT]OUÅí_«|³kJyÒU×ÇºI\—ëš²œ®|¿/zÀ[q`àøä¨¹Êêu©ˆ8¬'
—êßœ£’m›1mýZÕ”²²|{øÃ|¤9éŸŒQkF³v°p(¼eòÏ
ÅxßQï$4/1˜Í\ÌoŸÒÍ9Å4JÇâØß(R™õ‹}Èç˜˜¥cê{Æ|]j©¡êc˜l™&®Î´cøk•+Ce±k·SxŸ_¨÷k
½â¡¢ÉóYÌ]°ˆUR]ÍÓQ	i×ä‘¿Ò'z^ârA•·ÞßÞ½==ù»ø'<¾zwtpNOçïÞŸ¾sîùóçŠëÂ¶Ë…Së˜dSrÝú„,)²m†”‰*Jî€ª5±Ôv,	¤lC-bYH[ri„³C¯Ó¯Aá'qàÂŒ¯HE.¬äŒwÝÈÏðt·Å“ ®š…¦kJãV¸ŒrjLo¸³£¯¢Ú‹ºz2C"ºa@®ÉÆAg‘Õ°dBåjˆh¤l<‹È§²mni@¦osG©›ãàà‚‹½+W,T,¯èì™¼õ‹ý¢á(c£äÓ¢H±šqü„³ü_%œ²šö­ÛÓ-[4UƒZ^,aÀ*ùå÷vU²·oÀRªEÂÒ&|¥Ó¼Áž@§¾Õ5»ýy„.Ój­,eÎ¦|B¹Ÿ¡.™Ÿð9§”Æ»(,ƒf±‚ŠÛ¥¥ñ‚øR<qž…¤z¨ÈëùéhLÇ8@Àh¬+yŒ³3ô…àÖ) £„éU“ÉÎzWº¼Ì†iÍ+}žÚMë.}Yc»Õ¬Ø åN“ì´²Ü³g:C®–6«í5s£ÀŠB'ˆŽ‡äÍÍ
½%&—”Ã]a{|cK7ÈòùRÆZ×ð[Î­ã²øt¦;Z7­ÕÎl3ÈQ`°à@âíß V©oû‹±tC( eñt„oQ™D[¿7Øš/˜uUÅ–Øù3„Ô”Ñ*-iS	×ÿ›/åÙ—O÷ÎFÎ,ÒT5ögÝoõ|áOÑ)×{¾Ì¯…êŽR:_)¹ÙK„+ V1Ë¿ÕUW
3äl:„Y6œŽFw0€’œ?$øÊÏ‹éµÚt¦ŒIÒ"´ÉªÜí%ÏßÍcúìp§þà3^àUíÝ[i4êü{Ë}H¯‰¼X=¢æ·£Œ¾DQXp.±êÐy¨xš rÓ1Ú½DËLÛÄÌ¬ßlXvUy¤¸iqrvîºBÆF—TØYE¥»ƒ7“ºfò.,Œ)ñ6ìÛé9»:ÇLå«rú•9Æ¨Ûî;yäO“›ÛÕ!lˆÃh‘>’}ãlõ^àó‚LM˜_˜8s5\^È[KÈ#«i_
÷¡„H°<)fx‹Ç_ŒÍ”zfâ‡²ÉßW¹MôC„ëm±Š÷G¿þ‰<Ò+¡:'ž’¦¶0ääK›àHDPPH–p ™‚Ä Ú_îãè¨ê)ïy Éø–¨×§IjW×y:¥Ëƒñù5ÒXðIø/nM†ˆâ Õ÷•d›\ëÉµöÊãDérÁ*¶fÑ„ÉÃdš¡Ö:lÀ–î¶Æ¦(å@ØÛŠóã0YIbMhi±÷°*:A'ùbLš@_è^)‚à;ut>P’Œ`Æ"èC+F ZP+KTÆ|qé“UÓ'›OŸìëè£	ÂÜÕi}E¤>“´ÑþWQK>{"ÊhGF¿(Å³·2'¶ƒ„K­¿1Vì<ŠÈLY1ï‰æëãC˜Ö~maD”œêÀdh®E­Ž>±ƒÄ—JœZ3C'ô€¥}³´‘x
˜º·GýŽüže£lD8žÔr\(j›=ùLÚÆ!KV&KfÅ²½êãXê¬/m~É‰]Å™)ƒFv«R£â±åy*>v€ZYšµ„´L7?RŸ]àw!`Žk2ËÐœ‹6I9r)YvºÆìÒ±§È¬/ù¢=Ó_–23+þ´Šù£-@Žo—6…‹s#®	H8cD¸F›¼?Èˆ^z¡BÍ¨â„îB"|UÔ>º'!•·á·ßNi»PG•žé¨Ò‹J”]±«Š8]Ü‚~·°I8ßì«¶ñÚBúâk=çÚ¨¡ó\ËO‘®0ü*yµÚ^*^VîŒ9A³Âš=9>;oÊkæ7‹æÐËUÅ2ìã-%?ØfÕìóQÿM!­cÿÙRìnWaÉŠÊ(Œ:7vÑ—äÉk”)D–üvúûf>û `ÒÀ37ì…'A4¼ë¼W7Ô™EAfñzN@Æ~ž‡érA³(ëDÈZ±[-ç¢‰òÆ]U¸ã}Iët°Bkg
#à‘€Ú)˜)Kgæ–‰“egs±Raq %ƒ·WÈ›ýêeMû/êÒË¡ªzÒ¤¶ÑÜ¯‹=z÷îí»=¥_éîÁ¿z7Âèù0ÐÓ½K¬¹M0ßvó+ÍÆ²Ý¸XœoÙ,[’åh`Û–ü+E—M%ÞúËÛIöÝb.ói4Èš:€$cÊÿ˜ƒÄê¾Fxœ“ËŽ›0†×ÃS¸dFñ¤ê²]¥	“AAfÔvc9Ø!–À Û$m5ßc.¹M«Î*Î¹|çç\¦÷(]/¾áPd\jŽÆ¥;ÁÕg´\‡øÓÃG\)\PÃºŸ:£F2¾CóhA‚xNƒÐwF`’_Q]4¹zZòr[ÐßüôÀòPrÇ‰úÐ%²qäG_ÃÙŸÄ/‘ï¡×W4x,óÉŸ-ü„DÏá& 	üñN%¯-TfEÃ8r³’=ì]ÇY‡ÏË Ç³È»ƒw‚Ü¨£—¬RH×<ƒïÎÿi ¢’Â,–¼øI¬boâÜÍWQ4‹$ÒÍØ¹»óãMò}ìê’*ƒ‹*Ç”1KO¸Q‚@àP&fÉ…U>Az_‘0WnIÎ$a "-HK"@òÎtÁu‰µ¡¦±¢Ü%7gðº:Âh"*i¿éÔ£kë-;'éd}KNßGÖï <3˜UGYT”ulkÐ”G¡Ê#U-Îî–Ú!íØêleú’nŽ¨dˆ	Ý¾CØP™ýje
mD¦tV0?KF«Tÿ‹k%¤¹^°úöf†'®i97Àþ¦½O"ßŸøau¡sµž›]èag±«ÆÔÍ©·Ä7"³‚S…¹RöØ;±skB­	u¦á~HMZW¯Ïs¼/ppKbwy‡Ý’þÿ HxS¿¸xœÕZkoÚÈþ~Ål*Î–”[n-Ë‘0­µ#Ûiº›F#Çˆ°}lC’­òß÷ßÁcp¶ý²V`fÞç}ÞË<c[m52}=MX9bùæÜ$îGôi&žtß·Ol÷d©ùÄEVå9·2GOøÉ•ÈýÉãkUüãÊ;˜1-ÂžLf•	'«X˜Ž%,‰#¬òˆ^g.kÍ”¿I×œ¶?œ§HBÆ:{õ’Ó	{EêIæn˜K.*•V	–O–hl»+ÍGÿAyBóàG¥Õ@²fz¦…8Ã0}Ó¶´%òVšë#òÉ¢?…Q²Ä“ Sp†¿ŒðL–>ÉÜ9AÄ°®àj?sWl ^æþy 0dÜðœ,ò_xQ˜~ÂCézª2 `TÀ Ëã?TáŸ M!ÚÏW—9
<ÊCˆEÞË`xÁP…	Hòï¢Ä éFÄµÓ~æ»¥ >KŠŠe¾mó €^) úSfæ€?- øÌËN„OYRU‘ÇŠÊ©×Ê. pl ™Wå?ðÕõxŒ¥/¼<¥V.ÛÏãvAD‹Òðwø£(Åe €¢H*p#*¿¯  AÚÚS€36€ò‡¢òÌAé°(Œy,òcF p¾/Fås U ÷3¾O‡<¾’äi”± •gÒO7ÁT¹$ºŸ˜ P°™¶Hêõ¬h;÷1š Ä)ÞÕŒ$ò‚¤ï  Ñ$íÆÝ½@·“A&ŽENùÉ hŠÄÚŠ!À¨²-à[úmZ[úí¿8„yÄZ¯*ß+lÃ¥šï»p",—ö“i-Ë%µ¡‹
õP»I1¨º3W§âk;ÍÐ#•ræê¼’ƒU·šŒØÚF½ˆÖÕ%;ˆœ`ƒÍid3¼h¢.rlÈŠ¡ùäÙP š!ó~í&b¡‚ðYÌwQ­­GË~²PPöà¸-—è9 Çh=&ZvºÔEuú(¶ÎÚeŒÆ1õL?D¦ãvÙ1ÄžvXÜŽã^éL§¢O:1À)0ay¨×˜ìöNŸÚvcÛ³2¶L­§0qïŽÏßCÔ¸Çƒc×{d9ƒ]ò3:Izú‚½ÁvOj“t.{Sæ…ŸÅ=Ê÷8Ú{j—t#[j§k“öë–kyº¨2ÅÝÆ³+œSqj7ÏÖ³ÌótÕDÁîk³ò/òL¼!–a»8( 6}²Â¤ÜâOÈê~©ýEÒ»|{iÄwùTóQ¬ùíFk»íÛÍh¦ÏÐüÄƒ]ÜIA<Õƒ©LÙd^áÕxî´ÑÊµA<w¶m–;ž<wÊÏ_4Zù“"ž¼l´Ò]~ÈG€‡©M2”dÜ„GÃL’Õ4'Æl'™…ìÈüÕµ †ý”ŒCjÒÓ/¥IÉœ ÉøEáv  S9n	ÚPª2ÝR¢Þ9®¶XiÈÑôÇš³öš¨S¯x¾»Ö}dmV¯"ó¨Ó–ö"è¶¨‰è…ñú™Æmï®ŸŒàÀÁ‘®IÖŸÖj£-o»™õáø’tÎ
fÓ©×bÔ ÑÕž(Úy-â4âjþÚ%[F›•öÜÏ™VnL_»n†L4çÐ±Ÿˆ›‹:ï®Èå·t>Âe\bÿÁµ}	Õºg%ÝÎùX÷ºH·×–¿ÚÚ¾„bçâ|ÝFbçZÍó°Tˆît3K»†9ø'¢¹K²!K¸ÅÅA
b)¨MQŒÚf‘%“ws¸~:ƒÄ©A ’wJ«¸¿†8™öQ¸gˆ·éSØÞÿ¶S¯Øü»2
Aÿx·ÛÊu·Câ–õòìyæ_Äž×Jx©£Ê¹ˆ”¯øeWØ9ÝLŸ‰„ Œäb|RÇ‚½®‹b‚õSŠ¾îIZd»Ú\ mAÞ!ZP,kAÐÜµW¨|nWÛï·°­ÕP´è]_
JáfÃ(]¿÷‹Â/Š°’¯_.Aå8×Í×.bÒ®ô‡ ”³N—ÆA_f¾§î‰®­=›Hwmë¿Z8¨üÿ×Äó›4´ÔÈžÃ¦²^@’VðixèAÛÝ àÈ84ü.Ã«5uÍ[ÓgWGsµ'_’ Á) ƒ4  <Ê­ìq_‚AÃtý—¾UÜŸÉ‹[fæ²¸¯3ï5$ü£}oû;r\xŸ×ŽñQ>@Uï¶jÜT½Zýã7ë¸	ŒÇÜÍ`úî†¢oóµ¥c\ï£×§sIjízê•§ôë%¼Á]ë/ðeË/˜ªÞAïMô­Âö²sQ:Y¦'úþaAÜ”´P3(—JLªÆÏ£\ÀºIY£|‚gB¡•ã7QŽt	®Uï§RM©0»ËmÂ¶p›ô˜«—'{gÞK©®™ƒvßüž·æ¯¿Ö¨j|¬Ç1Õ[ó®<lŒ™Ýí6Ð›L«kú´TõÔË“gn6L
—ã[²ËÊ|c—é»¹ÕôÔË4\†ÊÈ›w„7h?WÛ—_(I;“’bn—ä9G¼\žPýÇ¹Þ¥Ù)…#0%¯”Õz6ùÒJJø4³’$9G¸d3ÿÄ)K…-šÊ¿M4½Ÿ.š ¥½¤)‘i§5Ñ#«ÙhJ ™N?$êP¦Îoð‡25çµéµ(¢_€ºØÜšÎ]ý­‹RmÄQZö•Åt‚®²;CþTMÓ@oŽ!Hý˜cñ†#€•@Šð¯ÌaB1›Ä$‹ó™,LU<ãdnÒ©…nõ££Ðû÷#z¥L;úV9
Ò4Gµ¹aÖÃ‘£y5£‡Àzÿh;j,«oïd'1Î,‰îþ°ï'¶¯ì@ºB3|”Û‰‡#¢¢bÌ½‘
-)Ž0"±€!`þ'™¿€Õi»¾æ5xœí}ûWI®ðÏä¯¨x›°!†ìcfø–×2Kr|ŒÝ†žøuÝí@f’ÿý“TïG·ÂÌÎÞ{½³Áî®R©T*•J%©VWÙÅÙþ/ËGq7%Ñòa/¥q?Ž¦[ì‡³£åÆJmy<]tÒhúìñ¨;˜õ"ö}’öâñÊí[ëÑ4ÝØÏºéçIäëâkûY4Žhýî(Øf£*ÛÏÒxèÁ÷Ñ€o¢‘Sîs²š¤ÔzZêŽ‡Ã1”,ÏFŸ°ó	ÀóB#Ã8Mlpƒx4»_E"$>Ìå	`šâógÿèEýx±æyk÷²Õnïe‡qw:-ËŸ­.±‹Ùd2ž¦Qýzã)K&QF­ËúQ'M#÷¶´ª 6ÏOOÚ þÝ94pÔÚ=oŸ5ÛÍÓóóVórwï¨ÕnŸŸž_°Ú}s-¿âÁÏíÝæåáO»—‡ðîÇÃ‹ËÓó_V¬gU¼lµŽ[—ç¿B‹'—ç§GíÓ3¬Íð²*^ï½»0›ŸÚýþ«9ŒoØ¤s±$þ=²hÒ|Õ†—m|ÎÊåòú«{Éêl‰Õkõ
[eðÏ[¯½Ù¨èJ5]éU½¡Ÿ7ôs¬¡^ìgT8Ø?oÕõóÆ+ç¸s4¾iÞÎF5’ºyâ[z{5©á¡ŠãQù¾Ê>W ³÷ö–•áë?éß-Ot/@Œ§Íñl”²M"ïÙ`vØ§hšÄãv~OÛ£Ùð:š® \ýcÒI»·HdœZ@ýîx”¤¬{Û™²¥v[ÔoS}¶ÃJõÒöœ’KÖæ•ä-#Ìu(ŠH'Š'†ã^4HØ¸Ïø\bêÏ6Ewòer;žzì:b^êtR–ÞF¸éò:êaV½;ù×ÉéÏ'íãÓýÖÑ
ŒÉGà+œnÇ¯Öë5'¬O9 V€ÀbÏŸ!=P yÞlÈþåwX­
_ë»¿ÐŸ=þ§IÖk¯éO½^µ›e_Y´??EÇˆøö3wâüÔ:Ù?=oîÃì¨¯­¯?St#Šõ?Ñ‰{u$Ö*ŠÁî “$«(_èŸÅÞj/úëÁ*/jPÞ†Ðp ã¤[[þ'B\³QßŒ`ˆaÈ§)ã(¶ã^V^Ÿ
¨a„UfÖMY¦ä—£N/š¶SöÇ3K
 !#¾7žö’Ã‘Uüh¼(=0‹Œ§ÃNúgñœÒ‡½ÐË¬†ŒÒ°aáŸ:ƒ¸'kœu>Æ®()µ@W˜Føö³¯Ì¡Ç¶b¾Oã¸Ç~žÆi´ßI;åv{¶É–zðµÊàûZƒ¢QÕšÚ½xj?èÇƒÈ~2Ln*Ï8ÉéA'ã4}µYÓø ¼ñ«±¯¼‡G-€29¥ 
^ž¼;:âïZ‹ûe¡ÊJ‹ÉêbRª2Â[¯ðÂqD¨	§?žD#»nçúe©RaÏy#Á²vÿ)Qæý‡	Ng
$Õƒgf5ü$K(Ôcé˜¶˜0…“÷#@(S5È!ÇÏWõ­ßŒ“HwDñ2H"f4í7‹ýÅV‘(&Ô¶I!öÙWÅÈEçÀ"Ÿl¸ì²3—âžh¬;R”ÛzäAÝI§WkbÈ¿{_ûNŽ:–ï÷à1‡~Ú>ß?=9úPS
e¾g5“âPKÇÓ²1ðø¶gÓ€”Ýz&žBSè ªrtª¤rŒûeúU0Ñ{/aelÛm¹„ðJ¢ Š* ô€æ j:”EcÈgÀL²SQø³mÞX:ØQª•‘Pqï^ÒÙ,(þìØ‘A~X|o¯@‹ù Ú–Ó	ŸÃÔQKN•ZÐ=7™€—}¡ÄqÅ (~rÊQ T‹R,Õš0KµNÀR5±DþlgÇ[ç­ÖïbTƒÊ~úe·óºvÿªþfcË¸[=¬‡6ôCbÉ¤Êl[ï®‡?nû0öB­í…ZÛËim¯`kÍPkÍPkÍFèáZ6
Íb(¬×^ù€×k Å/³5xW¬µz-F½VF=F=¨HÙ ÝÊ+óÕàq!«¤Jk¯ÿOvG½óh8þíÇÓ2_'@æÁ“Îuùg>2ÂÔY- äÞ¬ß5ál÷òÇöñî/ôbÁFç(2	ãñx J};½ùWùˆ`¡.põ‘dÉµ±ŠÀø¯l ºÀJÚ™®Üü^ª°/_XF	|#
U(`ØòïÝ>{ªÉû’ø+®	Ì"¹ÀUÊ>ªSÐ‘ÈZ÷óQø=ž°å© {‹+þJzŸ²ÆÛõã#–P>L­Ã“ŸvÅÒ‚ËÜçÐhÈ¶xÝÛ¨û	»|RF`Ö>ƒ]_ŸÆ)W_-©l%	`G&‡ŒZ!ŽƒSÆµÇæEr]A©»\¯¸Z'bÅêaˆh
KÀÎ¨ÇnŒhj‚	ë ¹ Î ´«’1HÖ’?¸©`AÔ:Ÿ‚ êV×:'Q’”ÉI§ûHUµî9éuæ ãBj:dË}¶|žÇ!6dµ;N†šäé¥S¤Ž§égâ	B_s™hFà)‘“´—Òh:uEÑ¼™ìG×³ÜÅ@¢n
:H”h¡tqâÈ£3\Ü½Yü¨zÇxäK·Óùìàšét ÉmHÆ `Ü€žÜ»j¼ª}ÈºÔ(LªúÑ¸Ô¬Ý”~MjÑ
[š›ôV·I»ÉÃQ/ºwð@¤/aTì=šlÉ.à¯ó›þúÑn æ?MÝ½U˜F‡}·ú]p¯&»À•í@½÷ï¿3¥*î#T\!«ßY»µ0ð ®²Ìsìàp¢ÊÂt\µ×ù¹Ã”‰îã´4%ö’n4Ÿ»[¯&®W|è> 2¸ã
5!‘¡ª/^°ì×hŽý‚:yÞ÷	ûòenG“âŽ¨XÁ³Û¶l½’t6Å¬ìºÉ¿OªÙz.vÜö`O<!|*C÷ãnY@âU*Y\8Ÿ‚6õ ùQwòÙj¹Ê,ÆåÍV¶=n—å¯x	Ü¢#»lùËªðq.o¹ÅwvøœÌ`¯8N·"œóñ1Lc¶âŽï¶ˆñ4s>¿ŽY#ßÈy"Å4Š\Cå3ÏP³<«lN3Xœ«]¼8Ê+¿TáìYäL^€ù„³I¡˜ÝZQrz†Ñ08ù8¹3¨F) YHýµ›y‘¤´4ÖB.ÂD3yð¼ýI>p¹½äÚ¥£dôa+PæŠèß»ÜrqRç/_º
?½ºŠ¹T‚ÿÁêe=z?
<KÏ¦ž„²•¾+¹R}àjUoƒû›^VÔ2Î'œ¥h¾Zñ¹mÔÊoDÓ[®FÂ\^^ì¾ÿ›1zº[­«JFÑß¤Øýªõ·áG@Ó«]{ýúµg‹ã
î²±¢†ùå«¥*5;¤e]Ôê¸>*pÑ*^”QáoÔbŸéÐï¬3ÇüN†;º`rèª±1˜ÓY£d^w›ãQ:Ã¶sšÙmRfÇ3ÇÂ“/ŠDª¬C ÑPQé™A¼­9ÛÂ¢T|áá;YÒGûUç8nÖ…B‡ðß/á‘–ÎÜÙ•'—Ã	l‰¯œƒ~çˆË=Ž\šÀþKm¥Ôø|h²ß7ëhÿ°5üGëþôÂÃÖöM”
·…ád•yïEŸ-À‡¹.
UÙ%‡Oh`¹±zRö:Z‘àìÍ!H=Ž*aƒR#&µ‹²kùmÖ©(¹l{¼mÕÍ>ó’‚ÈA3“•KïFÚÏAùºô	†ò×Xì¡ïƒz»#¹øÚt²íŠYa<‹ºIŒšÿ:,“ôZ\ËU—`:¥ñè†ŽÏˆ³>·÷ÜÅ õ@×Ê0MÆÓ¨WyžÝ¥œîdt%džögþÉOÇ-=ûçÎ|ûñÒDÌ¨þÈ•Â BnÒI’ôv:kw‡ mØ³å€u^?‹O$o"ëšï*ªQ¶*O+­÷ApÇ{î‡´cÂÎj™Š&ZqJüPÈ¹¢o06 fƒÁÞç4JðØ,KF.MPË=K‘d‚´¡b³îé¤9îÑxß×¦D´×¨¹Ùr²µá	ÅÖkËºbÑ]°,ó:5£K¼5Î2`¨–²bÓÖãU£º6Ÿš%™…BÍnZÃ}©M4Jz³5€†mÔô´gØÁ$QZ~œZE§'Ákð³bLG‡ÜnÈ®ÄHwOØ-ãHíb°©pÕ %°^Oºœ…$7m[¯»½»z}Ù‘œ’ñ¶\¶ð€~TØäJøÀT£ïaü·m+ Å}¯ÝžYÔî7=™ö¤Ün¶X·­W9­½å=LkaápÚï't‚`¶³D³ÁK‰Hîñ	—_#©©*¼}ËÖ•Œz—tz=RWÚíÙLpíQ:IAÑ@u…Ë*›3 o$Þ ñ5Ì´a“Jk0Ž¥bjY2»‚Ûéã‘Z2¸vÆ§"©ÔÆ4ée^#¾¨e/´ÿjù¢d, çQBKh!ÅyÄ[#2S}Ñ¬1ÀT6WUKzÉØ:g°Ö]%?Ëº¨-—*]n)ªWMäk‘BÓ$ƒ¹—:/Î	…°+µ8JŽÂa)ÚbÂ†¥1OßöŽ(Ð
3±àB=Xp'D«Ú>w{À×QÔ··lÂ@=ÓýÝ1¾/›ÛK\îÆŒo;
*hÙú0ó”9Ú[¶j’ÁiøÀ(å¥°Gê†ôÚþ\Ö3G2ËÔÿŠåXV£%Ù\pw§ëUú‚1»´´›»¯^]B‡káqÞ‡äÏŸr¤÷ã‘6M¢öx‚¦Â¤lêÇ½èüË‡§3½éÊ“Ô%øñ‰ïJ-Ó(éšO4¬9õã›¶8\Ä#Õ$[‚/	¯e:Ì-‘SùÄÔäãžaÔÏ{ `ÛäŸHsd	KFX1lÅtVt&­ôD¦ÝEPvÙVâÈÃñ3m=I·3ê—±Õ+ìÝ¨÷-ñ€p§.Áša»°‰^B/OBUÊÿ5wzŠQìßmã´Ì5ù%Ñ ê¦’„óö>
)­™QY¾ô©ô:ÒÛtž¡zÀÛæ/¾ZB&wÓùx¢$nž6/Ú»ûÇ‡'µÃ—ÕJF?9T S»7¾¡wu9ƒ7óÄú’HŸ%ZÐÅCà 3þ*'i‡ÝÙŽj©ty'ÈHh:HX‡)d1¤ax‡N*ë*®[Ý[†é.¡H‡YÓäMIä DQã:¡_Mzèo‚[Š7ZM¸Ù'+Œ0™Fÿ=‹§QbBì°ÉøÚé~îÂª9u#Þ6t á”r“3´ó©:×PšßbïGïGÈÓÓ=Xk¨E†w#M‡ ¢ÄÝªØj…*FÑd:Î©»{t”]·ŠW}¥moûwü HKþOeA¸^%PA	T:ø™]ðåhåf¥Ê–—ùË@NVEæ¼çò[ïcÉ‘šn_K[›ž¬'ã*ƒ78;àOBk¹¥v°d¤†¬7¶gât”Ã¦C« Ã¶ó„c³-§o F·cKNKÃ|´¢‰õ¾VªZ°NÏ.Û»ç?\”I.[€ðÕÅåùáÉåRÿdæwýïÐÍêð¨…Ú…¦<•j°oë%X¯?èÜÈzB(IÁh×oì—+’ÁõåEþCÃ)Ö—l­UØæñ°LãE‡„k–óŒëkv8ú„&¢ûöÞZ¯ ¹6÷‡oþ:fúš	Ç±æY4–x·Òg6QW¶žW¼E’œ†“²I|”0 k321p¼éÙ|‚°@ˆÌ‡U+æí\XÛõ
‡!ç‰!©ÎË9GB‚£1³ÈÎOq/ê}+š|ÚôùI8—eèjÍŒH‘Õ²<8	…7ë‡¤˜g©K„o‚’ë•$¥Mè-
Î1(¾µØ£	Ò_½cñ¶?äÆ)`yXš´ÈD“öyã$¾oÃº‘Â×‚*ƒ]Zéx¹¢ÛÉEØ ÑSS *ÏGõäô¸u\ U£V$BSEyU.'øí1e…/"¼`Ü‚l »O«é¶$ÈÙ³‹Õ“Boi«¨{ôlÁ\á¹Ô®Ú —Ñ)ø&¡…eaa¿Sµ…i8ÅGÜw¬ô{ðù¼ß#&§§|ÁÅ7ü=”Ö#xJØÈgXLPaL=ôuÚû­ƒÝwG—BÕ½<<n¾»¤‚ žÍÔÅ=[ø4B}+¿ Äý¿À	°šTwË²ºë-*¶t^YÀwÜ,v;¾[Ð² ”Us1Ñ
íc÷}ó”P2Á²ûB¨?VKÜx!s<•wv€ÜÊR¯í¡ÕTýnÔö|«‘av¦ ·Õ(½ãêt2ë‚6žôgƒçìÌP»qž‚–5ºA­uÌRŽ`—ßMµä…¾Iúmi£'wü±ˆ…Ãù)j†äu¶yGî«†×³DlÉ¹£zø^ŠG­ò) )ÌŸJc¸tiö¶]°ôpO²º'ô6ÐŒ3$xRÎ±ƒ}^>DQ`F“Á õ8XüÊ¡êÁ:1Ãõ¦T‡ÍÈí8…m`2E@CtŠ¦”L¢ÊjP„^%çYÊ¤fÉ¨…AhT!ž‘ÈM¸[Y•»³éZÏX×`ª¬ºOçìm¢¤ßè…¶;PVvp‚GáI
íñÞŒÆ£eýL7bl}údŠÏIG!ìd†Ýg˜'™½åñíÍ¢¬»Ñá=5„'F+Ñ0:Ï°ãî#Óˆ4s&’‰ë˜;!É)5swÄik=âã¡>p·ÄQÀÏw>êçø¶"Ù†ÿuö>ïO.Ë%Â«‚ê¼=ªrë`/ä^‹jàƒ*Ñ¯àþ*hˆÌÛeACÄ%2ÇÅyë¹Ä£óI½n)¤Ò•‚Œbpá†Ciw‘¾Î“¿zÈÆÒž	?"‰ÆRF˜ƒ&“„ e¤':êd_ÌDó$+‚õ„ç¶I¤ÚZ$a¶R(=Á%RóÁÞGôyÁÅuQ#^¤WÂÁg!Æz(¢QöŒBdËñn1ƒ•
z¦ÿUJMÆBÎsíÕ67&ålÝ’9­iòß®ºé•‡šùqôP¿xÜ³‹ã ùÅèÔ,V¥È†¥'¼_˜3›Q¸(4›¡~N!u;¯…×½rBÓ6Êå(Ü^m¡{èÚ‚½uÑ°>n2D¦Bž7!8ÃÊå—§º!ÞÝÂœe.ün¨–éU=yîÿ”â¢Wb[j9êÍ­Ú ªžC@”êòˆY
½™Æ,v™½~ìŒ•+m1±Xû»‰ÅS,Êaz
¹(•×rÑ(I+ˆXùRà‘”‡Ür.«úºrOõÈ_s7URŽNÑýÎ"Ú®&»›àö%Ë“¹·ñ”ÕdØ™Òñ/Sß8Þ–„©øSZ«˜ÿ	»4Ë<ÓXreds<šC{§s9%y6/³íxÔ“bƒÓóøf$–Xè eHö}ÁÂÂiv„_~K@û´TwñÞ;~ê“¿´ÐÀÛä­”¬#F™n ›f¡|ø¢=¾þM²KÓñ8Í~+\Š“¼ÍGíüàÔdÞy˜Á1†°‘‚þôcˆÀì~?ÚçCŠêl˜¦ÇH:Ì›€2úW˜Î©%ga5×òOÏ`ôÄvˆÀaÜÚ}_|ª|Ñ~,'Žé³átÎž@å²ª³b¼¹ªÀõ`³B¸@íƒ!‡l˜æ¯Z¿–YãõzWf"'BÊÌ	[sòò ¦šwê"10ÊaV«úF;·»“™ÓEXË°œ>‰É„á<ø§û ÐÛQo Ë›G$v¡MzÈS$ˆweM•3Qm¬;rLq&ÌÚBàäv
w¦ÓÎg·¬q»Óëµi•E±A`óQ‰óšo³e{h31¥™*-ÎXSdù’ª]lÊËJg	
qã:ø«Ò¥(À'©kš}"®TÃÅYq»j¼ÚÈ2UÕúÜÁ5	¦ACo¾	œÙ?È£:C‘¥ÙpD£6áu'5‹ÐßÄN´àE‡z0‰¡‚q%çTIrˆjR_dyÎ‘Žç)~´|wýÈ&Œ¢še>ëoù­ÉŠ‹ËõZr	OçQ…¸6<)žs-ô{‚!F+¡2ö7¹¬óÕ–üßGä'Ý8ÊUXé¦0Æ“‰3VÚf•]C$ëÉ‹†çZ}ïÏF]aò„_Ýt:8ìÝQdBAZbzƒ+Œ½øP55ä3#ÿ9ÏÐË) ¨‘’ê'LáøxrçeÊ_^ì·(a•-Ä1&KŽb‘X)Ý2í¥¬;žbæÜö\mº
7ùÃŽòŠdúâqg;/éA©—¦RiuÔa©Š^tqêDÓ$¨(TÕs7gÍCØ$~Âé.Û*º…@Œ¿ÿ!›ÒE­-äzœPtÚVýÖÕÛíY}fe72Oy¹mçíu§×N“ÐãÞÀ>&õ£Ù°OãO‘QAÖ´-,Yn™NïSÒ ¡ü†ufÆnÿè¬uá>œŒ¡.ìCx4Ïšî3á ˆÉ 3Ð1Jt®ÇSïýlÝO€ë¡M]Ôï· 3¥?ß¹`ÔqœÃˆGÝi7Lƒ™äl£_”¤fÁ¯A&PóÌä—í•?$*¯ãÔy+ºÕŽ1ÿy›ÉÕ‹gÿ`Vèé9Ç˜µ(ÍÚ·’•ß·.*°þ4jhpâÇàã~9›««Ùd¨|­š·šçM§5|ÄÛ«¿)Üž§c9ŒìòèLµq|ÉØ,Ü€ÅNç‚—Ø©à%ÕÎù)oçuáv<¾tÚz§˜›ÔÎÜz¤š¼½T`²8mŠ† ƒ»8ßTkÍ]ÞÚ«Â­¹S7ÜöèRÕU[bÄÖÓ–$Nk8R"Õ;›ŽÓq¾ØÌJðâZá†Qª9M	!h1á™èR£0dS–:-`&;†jCVOH8c{Å)È«ˆvÄ*h)™‚eW,ìd<Z>ÀeÃAi÷äàÁÄÍZ‹¼)‰ËqÑÔã¥sNø‡P>´LºM¶ÎŽvmŸ¼;fçb±Õ-žS‹ÅÅM`åvšÛëô`€vÚÛ§6Š‹©5 ›lºÇ©U\¤%%KHÚ< ––â+‹­ )îk§ðÜñ¸sÛxâÞÿ}fÔÕ%6™<Sh”vâA#—€Œ§bÜ/ö1"Ïj¡à"±	3“ì«Ý‚`$K’ÙÖÚH L=…Î’†¸'ÿ”,#³,s;ŸØÎÙ&LïRÏ–,Tþlk²Ø©è‘ýN&öj/¥šj÷ûÛv”±dü"0B Œ°bqà¨X	Õ”ATNÁðcË\þBÁòLB!+9~åWï	õKw‚>ôòšÇPlÃ.EãÎ-WÄþ¯É	ð_&Gð`B£º} ld†P»ŽNjä£ðèFð£ÌÀ¼&¥€âwc(H¢/ÛáFDEíìs[a©QÎIÏóg¤‰¡a¥©Š›a®ãîÇÕÅDÞcb- Š€XÓÄƒG9µ*OÍ!6ã†q=ËðÓnÏ®U×i¦«‡Ó”9a!W„Ž$Í|zØÙÈ¬J++«ðŸÏÅ)˜CÈÂÄüF‚Î%j6aH\ŸÀšÈü_mÑKtF_m=•Ä:(* uï·è¿•Å{\¹¹¾@u#|‘æJ	Gà/Ö+tÿŠRÙl9ak5wÏÚ»­ó—õÚ
ÆHÑê¼½¦£à«|nŽ2	eÂÌñ!Ë÷|ÎÒ¡Wÿ&J“²!§uÒý\&bTõi0›ÈÛqæ`k–{ÄØÔî×ÿcÇZF«:Ôß|€‚k™4|ÌŠWêXý2.ÖÁêÊƒÀ!y7¡Ql)º'ÒZ:f8}Ì=>UD…®%qÍ=P~ü)8¿Ôk"ô3Ax’¡‡ªzŽ¯Ïš‡-Úù¡Î¡ûb4î°™Š¬?`ï,ËÜ‰ž¡#8n­¡-¥Šþ“-•ù‹¥JYQàe¦-5þ€Þ}fß’õ)8îíÛ<à×qŠ)Šœ|aB;Êcáˆ¯‡8»kà<â‡æ‹Kþ Yèé þCœör²ø–aÈ‚™;yçôzÚø'õOéÃ'ôy§óÆEïÛøÆ­ba=Dtá»'ôúÌ}½A.ËõÛ¹Ï™2…˜‹=Nzüû§â²ä±ð·&oVg¹
Œ.=i>ªÛ‘çÿFë=!‡•¿ˆü=­÷¤|Vþ6ŸÉp¾Ž«UÇõHVY£A&°éE)¸mÉ«6MM;…{&([mW¶N«û(G î êLÛ,6Ï7(×©}®;Øûó¬tng? uq]a? GÄ©qî™ëPð?Ò>>!œ&2w¿Ü4ø—k0%óX&„½ŽÞÍ»÷ž×sŽóï]]b uéÖIqoyUø)ñYq-4ç`ìuƒ9Û×˜ˆ2o½ê€)/V³¦\GôµzE:»+¢l³¼MJ§.
çÆe‹F£çÏ`¿ÓZÁð	Obj¡wò¨$#ë›JæÅkeÑNï¡LÃ×-žNÇÝH\*HsYÍÁb™¶L>'}¼£ÚíwºQa~ÜK°
ñy`äq4ïiÃÃ¢mÉåÆ(ÿßAÍßè †3}2
6ýÐx#†Oás \ÕXÑ£ÿ;ûyšAÉ˜9ÇEÁ1ò»Vx¨¾q¸æYö°=pèÂ}üO:YÂôC+G;:æMœdX]”M9-EÖ!Ow®Á—œj|óÎÿ°ýE8f[ÙÊ ¯Ä<ÉÞ:’±ÌØ‹mÕ`|C7Ùüáí~`õôŒ=’˜;"ä¬ÞØ„måWÖ«QÜ)Â0Ü&ÿ`¥“Ý“}öó4Æd²eJÂO¿Òh„Nr´oèT:ßL;C†£…û
Cò‹µ¦x¼(”øïÑßoE} Bê—ÓóÕóÝÃ}vuÑñ3»œÆ77èÏ‡Á¸'ÿÕbMÊ1Æ.¤çV ØlxPÆ}F`g*¿6P}†û41”º6šmQš)5 }%—@ýÚÕ~M¤Bÿ=ZÓw/Î¦—\±8ÓCñªøv‹oZóÀ{	0J¾šôJòÈãÄ0,˜ûxqTÖ_Q40ÞFñE`·®¬2|Ð`˜Ú‡MJséìüð~coÜX—A¹ÔTEŸ•r¼½¶×Þxm¯m~Ø6*Æ~¥×~¥Z¸¨Öž[þs¡¾ÔÃ})-Öê²_ž’âõÚªºÍHƒžuûÉ†š3 @yÚxø€†À¬9`îy80ŽÎ›8¦ï¥ªa5!ÝŠ†ì%/UÉ¦ËúÓÐåU€.$²[ÞÈ$eII×°Óæå÷þ)õt
®.w¨Eo|&FWÐ²!ÌKŸ’¶³€¸KÏõ†¹c¹µhÖÂCØ°u\}¥F…ðÆ!:ðÆ$e ’PÛ9Pj+¯M(µ×”¯ØÏŒïg?FAz‹7ñ™a·¬CÙæ‰Õ4j!„qwÒîf­vg·Ÿõvõâ{7BË‚Xï(ŠÅXëBEñ‚*ÇtÁóÎÃí¦²§•Ë^Û˜'äç]ïåÖhøÀ/>'i4|øì:F°ÊêV¾ßÔïßY‡ t¿·¯Ê^Œû)h·Íœû¬5"=ÿìÝ‰ÅÅw=³¬°åF=iÉµó¾Ò,Xdƒ¸-ÏZüë1£>è#·
±×úÕqç>Î†|H(²…+1²¨ÑÔ1h‹^ÞF8"ìòv:NÓZ£d©zn)«àb~¢>™lŠÖ-ÏÎÍ%MûÃ‘¼é€]ÜÎRÌëÑhÁxºÈ¦QÄ9(%ƒ–ÍÎ¤ÓSÀ‚Oa‡£ƒÝx7¢¤Ð0º‡«§ÏDÝÌÐÏL^mÉõ7»ÐÉ»‹–ýäŒ”LSMr£=à¨Ù´ƒ7A´’4Ñ94×jú(Ž0kÄÆîœzûÃ»Ã}	þ¡ÖºÓ£LW»ç—$³M±’+ªgH-—ºÑØSBæ+ÓÆØ‹ò—ÀàÙ|ÊóôžŽðö,²Ù¢a<¦MÅ~¡«H
BÎ¨hâMçILpÉg{ÔŒ*ÆÓË1å2Ñ7^ÁtÇ)œ’ìœ¥ñZoGB•Ã-žG"îã]SË›p-“&æ)Èw¼'|Ÿ¥“ðëð²dÒÔ¬øŽ¡ÉÉ?ÿìª'ÁÁ×³;§õ^´&‡‰‰HÁñ(›ÿŒr»Ÿn
•ó3ŸjB?ºúQ†&S®ýEï`9jR8ß†£Ì©v‘Q­¨^T2õKÀ†×ù.õyky`}Î-XûóŠ+ärjdë Y«ìž×
®ìjÔí^å*uvap‘È¯S³Û™ƒÛÅ#pÕ™‡ÛE 7ƒ}ƒÐçÛ`±,e6 À}B6À³nÒ”ÂÌm)=¬ŒÔ¨g¤•%¯ÎÀhÇ/8îŒ`Ì†”|?¢ûþ`¬¨[ðH,Û¢ÙÐ/Ïi¨øíÞÐMÚ2¿G…9‚ý÷:Ý7SŠÅ¯Ëg f'h ü¡3»‰@·Œ„³ÖØZüf/ÎÙ=tŸe1S†þè,ÊyŠý¼-€Ò¬‚žžlë¼¹{ÖLE¢ñúŒD¾Žk8oíî³æñ~Â¢{<±G|Ó[•ñ@Œª©(ž^¶ŠGKŠ·™)óE£žßÁZ®_“ªü6bøÝ ÚõKÆ{ÊÄ¢?]¨»çãJ²#sgiË0“”©]²"‡>ÜÈl~ ‡)p¬2üÈpé,«Ï’Ôrªa-‚éM)‰8dÇ	}ÈbÄý©«
bA/„ÎFÆŒÝÞêVw(ÐYrvz=SÙ–2©CV —:ãî„¿ˆaÏu0Œû76ÖÙàSg@vúr›na±ÊiÃ]ˆó7àÐ…ß¼¢ç³Æ¯°¬jævôü_9½È–ýÞ¤­xè\Ff¦$A?™ ¸¿BB×>€qWT™hÃ½~þÉ”
Lõ>¬P¡­àã†sÖMàÞ5»G#¬Z¡á2(äªo¸'æ¦OU¬ÂÎg¥wÁ7g7û¡iã—_2’‚ã‡¢àÑØ[1m¾Kê1:”¿€ùx%ïæa›*Ù~…°Üôz!g)üú.	;¹k;\‹Îe2j‰ù5q DíJ°»ù´×ç+yä'BÉ«þS}Öb~¬s—ÂØ•
Á72nY‚s7]v|øø|#Š¤^»Hh|Í®É¾pìsZÂ^	”Žh¶Íqg$Ö…*€Mó 0¡
hx?¾Ø3½äð#Ž"_8¬} ?ÕÁ* °*^æ·V^Xrt™?"¾|Á€0ÆÔ0Á0o˜œ<ÊÄžBë^-Íey¬E€Ô‰VlÇfý9Ý_‚î‡¢óªh­!±‰Ý`•†—F™‡æeµµuŽ‰‘,z>&u“.ÇÄh¼HÓlºëDØ…¤w ºG~ôýoúZGüÀ,î)ýW;§BÕ•×s4´|*Í¸br	çµ1†÷¹ï»ƒŸB9ƒE»~¾àÜô»‹Ëë<‹îò:w¬ÉóŒÿûõY@ÕæÙÂ»ƒñ¬×¾%K ªÅ¦û†™0Ô¹7ü[3ç£¡µZ&mCõÓ©tœƒÌÊjø9ÏÜþLŽV EyÁØï"‘ÚE“‹ˆÌÆ\~ÒÄ¡1Œ´[|P›£$¸éÈ#ÅCî&‹ÆÚ¡^ÕÞÒŽ­Í¡èã²Zÿy±²aÆa¾/B¢Ý¿öÜ•ðkÃp]²§xÛ„¿ÏŒ0¬õj6˜üÿÐ™ OÉïAÙpìýIóÀ [xÐÐëø!¾Ð6ˆ¶¼ý4ÖÇ{ë÷kÊàa!‹…VÏ—Žó¢ð‘±VŸŒ+B÷w¿ÎÌ|^`•¢ø#€dúåÄb·šó~^üà"÷0ü½%‘/ˆADŒžÉ/ÿSä]¯æÉ»q§›„—ú7V©üqò¤‰VŠ‰<1›%ŠŠË¢B’&W^í?bÝVå‹OŠ"ºô	Ï÷ÇVi§Û‰äŠ¦â#ð´"ÉWài¢â‚ÐÆ¦³QåÁ$ó7Oã{Ây4¾ãQÜë]­×^½ùÀp
D–k!ñ]1Qä"2:nâ ï
2Ë«<ºOiþÁô+è[î:¥ì]ì©Xô3<}"è†ÿmð"cç:¥™òŸÄ·DHjæ]ì€ï¸VÃ¬«2¯ƒ°ïVpí¹w>ü‰—7ÐßÿEI¿=®÷@+ûŸ‰õœ h|4¿üày±'ÃðìQß¢ÎD"Z„,:€X&þýk²ÏI|¬ûod³q!ùb§ºÁ0ÿÇ¤GFIJ¼`ðe,
\›È(€:G•°jŠFÑcKn”kØ1>drh’Ûñ0o£îGê@?žï0°]z­ÇxL'Üq31nÃ¦å'5·=KT¸Ÿ{Ufì*—áßYÐì¥AUZ2á-rÄÊ§äêÍæë4Íîëƒ=x1‘mÁ^†õ|”°80Z¢ß¾ek˜ØÀ¹Áo´ÆÒKäÅO%ÖéŒ²:F]'Xñ†µ3døÁˆZU• Ì`’ª0€(Û‡ØûÙ´¹X3‘7œ½Çü6²0)‡ÞÑ%³v<¤T»É ÉOÝ…²¸èV¦±99½¼üUr@nü¡§~‹"w'—¸ßµy†²1_Â‘ŠÆNPÕ×¿&í¨þ÷·¶Î×Ê¶d:dÿ‡Ú–¸…UíØÐºZ»oÕKÞ½ÆÅÓ>7f@Ñ7×ÜdòœÉÕØ]p¦GöÇ#†Çl0Ø“ï1"/ðà‘»ŒVý)7:×–¾GO/Ù›…ÿ,uÿüïÐæ%ÄoSæÿ´?ž«ìÞÎ×diV/ÃTXÆE7x×Ç|V—* êµêUfL·Jºå"kõê#Ž&2'eŸ¥Èö2”ƒ?B:‚¢ÃQ\6ç!°ÎéÅ~<=¡dC( Fû9ò2doXÂ'R0Êr§³3ŸÒâÉ}þ5¾2ßÞ¬ß‚wT‚8åj½¬MãÎàª|Ù¿›FŸ®Þ„^!%Î€<Ko6)›¤©8%÷ñþ¼Ö‹§¸y,‹ºn€rª¯fXLV)µ“¨Oˆé—18f%½O%c›të“T1€Ü½4óŽ<Weç$Y!UFZ%8c"ázktÁ7–²…FèKDÀ—ÉòÛ!¨ïëµÊ¶U„ƒ*“ŒðfA§‡*ÒŸrg$‹„Šlž,-> AI “¿…K”d}Ñ€""!Þ¢:ž…Éârƒ¬±†À|?’‘èê;þõ~:¶{™õ™ñ&c‰Ý“1¼,sv¬ðÑ°‹]ùírrHJ?/ŸGŸŒ74¢L!ÒdÂYóð	©è(ñd´µõ_hŒ_îðX¶C\÷>Ñ×6fP#C¹öÕ¬-ÈL}™GÎ\ñØž¾ðÆËíàÑp’+ÀëM\•×2oã5Û)³wxé-¥C‘ñSd$Í†É‚ø(
xÙÐñ&¹!w;zõ"5D½gÔž¼á6“ÙKâ>Õ–ŒÊ;¥R¯ðŸyçÍXùÝe³£Ý©¢™qñš-þÊ/Ùâï(‡2W6‰n_b,e“¢ö€¦ \}Öé~4B¶X}eÝ”ÌXÐ>³œ»²ˆr™ëŠ,CÀ8T–¤€ÆÌe%•½n«¥Å|ZÊ—ûÞ1/ð^ºý}ó Éj}@cL*ÑR…Þª!…«ØgwKVÛ‚µ±­À+×1Ý£÷–F)8qH÷Â¬ˆ …
ôªÌé…cá–Tæ˜úfŒ¯¥Mâû2‚]®ËÌªì…ªå'Iõ¢ë~ªz0D^Æ¤„²R•r†“Ìí.EhgÈ½K2É#Ž°D¦>é‹²däTÔãw (ãŽ¿¿´ÐµÇü7Ûñºš¦g—BïÊõªÄÍ4j`s¥7¨T‘UQEŒ¬Y``UY…\öhò²F¬4Ö“Ëó²Y«×Qhü`Ùï¡Yè!üúí/t¦9`þòGSîÛÉ ÷®wáRÝa¯ÁZØMÉJÅÄw¿àÅj’F¸¯Â´cTz¢¾ò
Ü›]?m{	º¹g5¾â×%J{¸6‚0Ã¼q;»‰œñê~ Î3ì<Ù3‹c„J (EÌóÂ"\!Q`VÐâÀ“ÍD´§Ð8(¹`öÀa!ÑÉþ£Á#*æõFR÷¤°ã#^¤{¼¤ê—¨˜Ý!‹³hˆÍi¡Œ2»%x,·G_R¯N~:nµ›‡mø¯ŠôNUÝ“U³û'æ¼Ps^£î›ž&ŒfÙI
ö¨XÝtg•îëYë§ÖÉeûèô‡öyë¨µ{Ý¿ü¥˜;Ž¼%BÍC<÷5~qÄE.XãÅwú•­¬‡£ßº¸DÔÛ»'ûm˜ÍîC1¼æº¾ÚhôÈvZiŠGÖÁá —™nzS…¶ãåøf4žF½Š“|9°×Ö‚Ë9Ñ(®¤y¸îKA"_èŠ8Ó~àT³¬|þÄ#Z´H0Ï€Íé‚ý¥E¹X'¿eœóÇÖü¨Þ»µMlsç¶S½ªgMíÐ*&çvˆvz’ã¿|]ÅåÝkÙFIQÙ?¹*{Æ¢/Œ}	ˆ	y¢A24Ìe]Xaëú£ª»
”ÒÐG\˜bÀz£€ü”­>ß/ëš°óI&XL{¦zK¸†vBRüŽ´äI¡ËôåQ’§Ÿ^4Ç£~|3ws­ì›¢‚oàt˜öÜõ#8Md­–ÄÛÏLB»ç)dæïý"%šnûïDæ	ÑEEwñìÎH²ƒŸ?”Ñ§tñëÅeë˜žœžï^žž&¡ÒŒÜb–;è_°˜”dêÆÑáÉ»_Ø¿Zç'­#v|ºÿˆ“pÇ½"Ð^Ç­ãÓó_³ u;)[ÅÛVaq!©—Yõõ²u~þîìr>Xºð`:›¤I>äæÙ»ùÀ@tÏÇñðTöùx÷¬ ‚cèy>ÄãÝÿwzìy¼×:gèð¸ßúé°Ùb?œŸ¾;Cåzìœ>‹ñÞ?n]ü`‚éÁÌ½É¯ºúÓîù*ÈðU¨{±ûCëÂCãSgº
ÒÆ5IèH^ÂãŒíüä”²ÍìÆ±Fiœ &«4µóÝ“s+–ïukÍrnŽ·Ûë¼48”‚(ðäKWõâ(´±P”ð×Òûÿ—öñš$%¤4ˆ?¬˜rÄ‰QÐöI‰¼ó>,öh`´`yÆXÃH ì¡l™Õë¦ƒgS¦\7Èî<¡ô1äJÚJ_Ó#I„g¬À3ïK<ØÑ1Öf8¤Ñ Féô³r8À…Žl®éçI$c½–péš¯¤`ý%eÀ_½Žs7V•]£_Ê«z£ªS[\'Žë@r;ž¦äÙ†-QçJ.<ª OUŽ¦²6†_ ÓâË=ÑÔÁ‹òêó»íêÊÞrkmÝP¢d…°™EÒRæh‰,Ð5É­	Œ^´kÀ¦¯Íq2òä‚º‹myˆÔŸ;ZJÿà&LA'õ÷–æ	–Úýâ/üÀhì°¬ VF|/i}nöô2yù¹+ÄôR³4âGDŽcS¨yƒGyxŠñ›ì‹|"sƒëò£|½þÁ)_¯yÖÌ
k^…†W¡†,ßÚíÿÓ~»e½mÍ†V³¡­ÙÐ°3Š#ôã^çƒ§Áz¼qý÷,JÐ¥Aó…ÌMn¬Ñp’~~JÖÀš°YB9ì
.%E.ìê’0žÄñ¼KËÙÒb	q!–2?aª”eÃî'âvöîÀ­ûÇPXÕÅ›Ð<™²ð‘¢°èÊKÑúN3®)_ò Ã¦³\'î¨}µìØŠÙB+Žšwrà†•g&ßÞd×9Ìú5Ï—;<é”9±qØ-0	h[Uå«¨æuóÖÈar£<QjöNWSVEe{Vu—pw)	;w³U»¯½®òs,EYi0õc(·9§ÜW­µšJ+ù–…z…((WZÂ§†9<\µÖºÑVghZ`EÐ¿ÈL÷BNÝŠ£k˜Ü)iüv³™/Âà¥¹”n‘¸,YÈ8"O $ŠÖ!‹ªÉ- ÐFp5Õ\ü„ÂÖã´¯óÿ€ßá(Ì‰sk|ÖŸ¬¹Z¯½qÝª¬I€6+øÖÙ·p®5X'M§?Q–¬ùÁAšSDÞ<iEšCk½¼™ÒÏ”º˜ò:K¼Úi«ÒuœNéT,4sYõ&ÃPñµ¬âƒëN{Š7Ù&¨zÂzt®j«¼‰¡ª¯²ªòS¼©Hªº‘UõÓx ´Dí;œín§{… ¼Î0šÛ ¸€ê’'˜¼jÊB›ëÎ Jºð0àÍ| Ÿ¢®Ü¡ ìfàî¤ceq¤Ú^&S%ŸG]ašÍlz³–U=¹kO0£n”$íagú1šfk–)­û¦´îgJkºcLÈ2¼(·kµ5/õàä÷dÕ$¤™ñ<Ob!‹
]!¸„êÊ¿g¦øÆ¼™¶3½Á[Košö+ø<mT@>ª`Ú‡•~o÷{üGÌ)ÐS4ãã:ýJ¢þ¨Ñ¼¾µN?ïùƒÙ,îÝë÷¤êB¿vHÊGX€ä(>@™ñ,…Gtø°ß:Ø}wtÙ><m^µ/[§ï.© ¿ë¾ù!•Q¤ü‚z^IóJB-‘š0™+¤4‘KÅùoe,ÏY2%Ž4ôºÝ(_“Ô!É\èóòwxš«¸*T®®âA•Þê	_tù²N¤Â6ƒ»œÐR1ˆ°`¾|éëèø¯X×ùä–k«N¡žæaã?ÁåÁÊ’ÕzÖçÁ¡, ·ü63øÛq^Ø9TÍ:1*rA¹T*®:\`Ë°Û;X6¦ |Ç!á2ñ(»L?´g˜ÄNøfºNæ7&ËèÆ¾ãóÙŒhœËÝ #º>+rv=éäïÓßéyXäŽá3£î›Ëóˆ0Qåß—ÿ×Ü	oÝ]î„€çìÐéÎ{¶Åü,£C	Ð~î\í…•¨I@ÁUÙ‘D<Ìï^Á«Ù›ÿ¼«ÙEÊNžÏw’NÛi…½ 	µ¨$uQq­Q"·gœ÷ÛUPOh@ùµàjý$×¼gþxƒkŒ¡ p¡”°öµéÄ¬!3jú×]`žÑá1´AWþÔ.REò6
è¤ÃßlH»µ_E¸U´îµ–«¬´Gç'ø
Iñ‰X-òc•Uú÷o„r’
ŒVkÅÄ<‹¤:ûRc844†ªnÉtv7b¤xBÖÅÛÛÙ
þƒ5¼sŸáÍÅQd§šˆ{¶zi¼õM	y&G-0ÐYš¹Ýö¯=Õ	»ºÍ¼…°>€‡`!«>€¶©±Ð©æÄ°_—»^EÇ„ï>s§pW÷oñ©•ÐØº›¢®¸®Ê&Îð×e÷R—YYo‹)º7&…§Á\¶µ@«A“³8.À¹<©XwŸ˜Í$4ìÖ¸Ï#Œ&ÎØÐ:VÉ¹¼–±7ãùŒ“¤×æû§¶È†ò×%Ãuz¹;ˆe23ÂŒáõ]¢Þ'EÆdeÑ‹2lKÌ%ÙŒÍæ£þ„íj‚]DïÍ“NÚ½‘cu‰íÅ£Îô³q¥‹rGïtÓøOWu'éJaÉgã–àvM/ñõÜ6šg&îÇ¨×nW*@¡!´„6‡ÀIy1‹þˆl-šóMz«Š×7ò‹O“O½º,¹ßó‘éä‰ –ÞXÏ-=Á«1ÛØõñlZ¸bÔx`ÝÏÝA$î)J¨É4úgI»§<%
T#
Cü°zøP¸0Î2Ü²ÐIm<¯-<DÜŒY¸%¤öÚUŒp'íÏ+¡W`BðûàŠM!pÂó‚*</dèØƒzZ¿Zû )¹ÖÈ­€§)"jÌ¶~äLkQþJmI
"Ö¸j¼~cÔ™7m*ðÖŸ«ú†edáá”Žñ’Ä°÷)ÝÅ½ôíûuPì¬¿ˆouùóú?f
µlHÙcÛmî°Òûgí'ÿ¼½7V‡/,ôýËœþ„z Ù«ë~Õwú&d	|=‰îØÁÏÆFbá—&ÍgørN³“ î*2ac?‚ˆä•H–Ñ75í¾h©ßGt!"|Ùå7¨Y¸ÒÕw+³ƒ<eW
\¢/¡CMå/íÐ÷/s
ø_Þ£ÚTFzq2€ú¯(sª¬L—s>T\äÆ*:a—è/Î+s?K\*¢ø7*L ^EJ¯¥nR!üâEtW.“É¶ƒŠpµ[kxeÈ/œÕ,‚Øój.u;üp¾T«Õ®1\¥V«ó¿uñ»¿¿zõ&é”Ü¤­žn;£À/‡£TœîÂ|²Ù0¬ˆezµüV¦„ÍCÝIüÇJž)žsoX—î¬.y©™aKå#úÜÐïÅEL~÷‚››ªEeÛL’(­T­Ã“Ÿv,óÜkOø>ÓK)#¼0
V™qAå6Øae3>Là`©P<9$fíÀø¼;ª°U€XG»ÄE"‘½ÊÖ6ä[Á4ä4¬
,R³!sˆq–
[ÔÅ¬>¡û•fë¥-Üðm	3ƒ¾ÆP«zŒëÐ¦±"è&¡Ûw7Y„2ôÀJÅñòF)We.Y1À"ºQz!éÀFá<¤ƒ 1é,&Ðê¤Žõ^I^ß0ØÁòQ’x×Þß„œ©´ºØ™ïŽ^#@V
@ÆM"WcWceb^´š(Ëo±¢ÿ™€òucöý[Ó–‘ ò 3ëKß	ëþ;Êýýýu)Œ¥T§uÝLdË[ã/Bár0]»ü“¢N†%Ê­'~`ñ4‚Õ´a¸'(ðÊw¼|šp™HnQŠõsD¾páåòþ{CØ»¾- ãŠJ‘ƒõwïkß9Ö*ã=ûŽ}g?àSy(oÅóMzÀh\Óÿ½Gí*k¤Òwýí’ðæÉ#Ñ˜X2Ö_= üö
ÄºW(ó®
éë&¥o6®š?+)ý;ÿß‘³<ræD/pæ¼\ßÎ9ÒUé!3‚]˜Ö“Æ£ÁgAXIK+ww6ÂÔ|¶mä;wÆÐÊØN¦ãœh"A-\N#–EæZ6ô)#x(ó¤§ÎÉ@Ù¿[–KÜ²D ˜‡òÛ2©7UfÌ¾*Ÿnþbü*ouÿ.dr!nò‰B÷IôÕàÜEì¶ð;é Âk©Æ£HhÏê:îàµØy–›%þÇËûS~ ˆ
mÛAXnPvWeQeÐ×e2!œ0”_¼3w¸ñ×E¼aAF6cR5÷ Á=‡ƒsÕÁhÞ`Ý6ÌTó›NÆ*áèË‘ÈOë[&§˜#ê>T´æ€d®¼ñ´¬4±¶}Ïü^‰w¶3­P‡Ý³JzG·CŽ{C¦}¡læ^ü¤¡*(ZÛG—{_ÚN9áÃ5‘÷Ó8ËMFëÄ.ü£õc˜ýÇ‡ÍóÓ“öÁá~ûh÷²uÒü“ÃËÓsº%Â-‡É;åê!Um ¤u?‹ÿé´Óýø×)j–Ç>à!B_×}®E÷TÙ~œt‚å½)ÑÙQt	šQüic¨w%×ð’àR4’pz$Ïþ‹úA¿ƒ(áªL°$]vTÂ¡¶À‚¼eÔø¿`ºš/äTÿØtX-å±d6Û…xÓ£®=‚‰e{¬ÒÛ)Ú«KPmUØ¿Qœ%ÜÅ-@¶x”Û0ba'°ˆ´Y«5Ê}ô©Ïác_õÍqÚD“ÞÈ,ûÝv’äéöz[àËS}‹ò5¶ˆÔl}‰Í^o!ÁÄú¤ ‰0Ü@Á©mÒÿjt#×ùÕZ}¹±þaëç«ÆÚV}ãÃÖåUýÕÖæ‡­šHp,d•tW;çé¸!IÞÒ5ær@å† ØJ¸àq` ÁºzÒ®<d1ßhFz<Dq¿¸<?<ù¡\âÍ¢î>þU\ùó|8‘Æëi5A ‡ ºBÿ&]™µ@|q ¼;<„êBI¿UÕÓ*ó#w;ñû‰¢.¬Övâ¹ØO˜Ô2ªdÝZ¤8Njûú^— !Ý2€Ô< !‚‘·'•K‡#:‡–—K‰!f‹	]>÷ãˆì¼L|ôŽ&?æ¦­aWÂax1cüEXŒ¹ƒ0ÞAÏŒÏ
6ãµ—©ÏŒ #fY3f¼Œú/Q	ÁßceÌPþÕÞwgFÊBØ|êî]ýÄçj;X?p±fæo^²3.öYLËŠÙj8\FÛgËºÇ¹™.|Ü¢—¨ì š¨% %ØˆÚl“mÒ[ÿÊB;Ak?ZøÑâ÷8‰ÉÙ+±-5ÉznÞ]ù5é•¯³œµhEÞ5–v›xÆü´@¾eÙþ_Ò„!qRõëy7ô²sXLÝê_³5rQøÒ ­çB»„…=˜*:—œR÷|¿°vOüšÉÇòy6;“Z‚«.	J¼5ÀÑÊÄDê£\|Æ†ø³zÝµøZpFãÕ«LÞ@ÕpØ¹‡³¡§"v;#ŒøºFËÍqíŒ:TÌ£†AÛ‰|Âµ/FÚtö	i4&hŽ­ƒÉÐ9¤Æx8E9ïÐ®šð·@=ì^/2¼d-Ï+2¤‹;ó°ÇÀñdqT¾¥ÇÐU·U~îåóÆ2tRði,î"¤ª=úæ¯Ô¡Ò”fªÙaOO6†ÀV}ú}ÿ=k¬ÛgÙíÞñIÛp£xÃõ¢§4ÿsÛ]/Þî¦ßl°UT˜çh@\¹6U’ëJ%"ãÓÂ‚÷‰õ¢$;<ØäT­ñßn´°U¶oé@,CWâE]}){èÔDUÊªYs
.eà²0Pªa–2YÃ)› ÕÕ,ëäNã
Û<œÖÌ³Š¾Êƒ¥B­ò
XèrMÑ*#”F£LŽîhÕ¡®éj“øÇäÊ
»Î
¹VwðÍºÝ(Iú³©\AûÎšEuÝª8$]ìôWS7hÈuöšö,3¶¸èQÿO´Z€òf¿ZÂ$ã°×W†Ç¿-ös=ò¥Õq®•p ÓÜÿéFBiØdRVPþé“ËóÃÖ,¦´“(ÒÅ†7~¤3|z¶&ßAOÒÎ¬ä Ž€ôþƒçªòÌ8^Mh¸µ	5ÔÃþ,‰¶Ö#rÝZ·žM’^êëÆ½­úÆ6oý«­oØöîjÛ”!A×D‰jþN0èRÞ³ÛøæÖèg`¤Dç­6Gƒk˜õ†|h·Þ„^õ¢Nw«zƒ“«?&zxïú³N¸Ò`ªžç‘cÌìæËd|>íÏ®6dÈ!½\XòÃƒÌ˜Ù¶Am—+{È¾ÏM˜ÜÏ¦r?‹Çp~69v»?9h;°¿eÚz'_}~¢úŒ³ëVužN+;Ë|Ð‡ŸœËŠ¥xçÞ"¥3î).¾/Äñu:ÙnØ(;ajÜR*¬ÅÄíR»¦
¨²æ°wÙ*ž’È©²ƒÞqB¤ÚÄ”'˜'¼Dó£t3ý¨Êèïðnp]eû­Ý&T8Ç´ÈPýÝnõè\w‹çÙÁÄS:×N`¨Ü:jï¬\«‹³‚ÿqÕXÐ§[üaE{ãŠÙqñ›‹hõ“K^LŸ¨"~ „Õõ‘Hâ;åTw«J‘Yµ ¼Ôõ€Žn5”rºÅ©ÊmÏ±é¨ïÃÏj=Vïy‹÷¿?ë‰8ìUÍ˜SŠ›á
®á´” øl¯•ô2¡?%ûT­äŠÝ¹—õñR‘³dï]ó_­ËvóôÝÉ%[kä•9¿øiŸÉ2¶—†5 ZžZŽ
AAÁÂ£Fag»†Ñ!°‰á§v›6«-0ÏBrDøeG²oÂAxH"ÝÚS€Bvø6HBÀêhú)ê]5^½ú@Dž’¯Æl‚\¹þ/IÞ¯<eHOUJºA­…¥iºí>ô ŒXBÓ˜TJ4Ä`ÿÌT€À:û
³®Í’Ò×*û¿×kÆúQ7‹Ð†.#!Ñ£5³.ýX7ŸÐW5«Aø±áC£G¯Í’ôcÓ|B?Þ˜Oè:Ù»à@À\€CÑ(Ò?ëÔ!ý»!‰2t‰2´`Ö!TEE‚¡G‚¡GšAQÒ ÁÐ#ÁÐ#Í$„ì% ‹GvSÀSý€oëêÇ:§”…ZuÓy¿O.ñ>ó…“¬Ò=Ñ¶Î®çÓâýÔ,€jîâB$¤Ýét+JPI\Ñ•£(¶]ëE4ß§9oþ·%=’…
ƒ]ZjYÄ\0hHg>ß`ýu[2d¹Û?z¼Á×mJËz·%:-zb¯>ä6”k« Î¼%÷Ì?	u¬ºO¹Oªý§î“d‹"Áá)Ò\Ü_¡6Âú<šâ»cÒÎ£O1¹”òh³cÊ™á<ÛÁ0U‘oYJú£¾}šT%ôFž	ãG…8	ŒwòÑ$RÙ;fÝé¨‰Z#e!—$ S¿ö#·w|×|ÇwmìøLÝÞX T…c¼•^2}à$®h‚>`Ø¤—U‰^ƒ¦|©¯£êÇ7#¯VCñ¹ÆMè¥ýõ$Í\ä k½ÇKJvväêfq¹l4"‘ ;cƒ{­ $¯l=z•‡œÚ47pt7fþ‘;é€Á˜¼Ê¨!%¡koù¨ä¸;wöÞFAzûZ‚‰7òâzèbôÙlÝƒèE=ñäGÂ”$r³ßÃï€K®S»jÖŠ„ë¸ö®öŠTÌÊîéo0ä¤¶ä)*Ãƒ
}¡†¡²¢‚¨‚ušdí¿‹hnÿƒ‚„²2?:Wå ¿Z¯×ÈBHéQšÄ‰TAHz$¸íÃ1$/í0×}œ™N’âÙñðOÊªèô„'N†/%¿K„e£å‡$>ti¡Ç©€fs°WÔÛß˜¤U>oç§\ÌT„ð“£©+Ãù¸H9Ð†ðc‡qàÇÈÅ†ÔÅÁ‰ßl¾æWæÜ×NxQqeþh÷§ãa{Üé&6ö&ŠïIÇáíu*Oæ6ÂãsnLì_ó¤×<8ˆÏÏ 	bUrq•8¨pR‡6@x<ÚQ1j5Ts¯Î‰D“Avó"Ðhl–;½Þ2ÂÆÕÊ>³Ïb2»P<ôocuááh5G˜ÏËÅòË“¤éEØ.3azÛÉ½=M€o#¹”š£ÁÀs‚[dûoqö,p§Ûñ]›{q–u”Ü\=¤;˜>(Æ¸¨Úñ€$q!]¤9ˆàçÁÏ`-±2†ã[hìì‰Öîå»óV»yÔÚ=oüÜÞm^þD×T¶<¼¸<=ÿõ‰Žr*Hƒè­ÑÿžÜÎ¹SþÒXáº/Á×£ü±¾iGêÎzËÙ*4õÑ[œÕÉ_§M<ü÷ÂÊ(`Ï~›´G3uMgÕ[í~Ò%FÊ<ý;n
àÇïŒ»¾Fx3'ø_7¿9zw2~¬ÉÃ˜vËºmð&ESó=?–>¨—@]Ò‚ù·Ur=ãÎ¿[Â‘mUâ³)'«TgËŒ@”õ¥×¸ÒÀãÑx´lÜ„´ÅMºÕóv·ŒðŠGî]–‘^UÖXÆV{ÆùYPŒ]¶ŽZÇ­Ëó_ÛÍÓ“ËóÓ£6Èe–aoCÐ¢Î|åîxÜ+ìãã’i´Ö/ãiìˆ¨«öþ²À)òÄ[Çú‰Œwâª¢SÃµÚ=<#:í'HQL:¤¡nroük©ëR±áJ_o%£ï´:‰÷®võ¬óÜºUÍž~žãð±B<(žëÎ»Ätpà¥òÅxyñÜÀ'UÌóÚ\?ì{îf²wkBžÇnY³»Ø½jÍsãUíçùçR¡y>ºª…¤ï§Kåí«Kµóýuñ¾.)Óo?y×%Éé•˜þ»xÏf7´”rž†Ý„Áš7H?¦»ã)ù¿qæeqþÿÍ¼'žyÚ”“±†O>ï¤þùÄsÏ~Ú›ì¬yd\i—w—ÃµkÎÕvs.¶«Y×Ú‰HÝÇ]k'yæ©oµ“ãÜà5v‹ù	ÜÕ§,³äˆq-ÈYÊÀô8ÖòmW±8WçðU\)ã)1ß›ò¶gO^`½º„F‹_~‘öMe ^¿:Q·4tÁnþÆ72?³è<ºÆl¢/šÌø®XÉ§ñi}½éÜS^ØÇÃÎ}è1wÜ˜ŒcL_ì¼E÷iÆ+¼e«ÂÎ³}ý9•©º®ýAçÆ}¦\ë^›ù°°…eýÙˆ'U¶@G—IÉ¨Ó•÷}ãVú»¼Ùè#É$0îî,í`2V× Ë¨Û1ÿ±Ö`ðZ~%@8o‰ø3)€áÆÀot;8(øku¯;¹ïGSq{–¬+¯È“<âãm_,"JžDð•·`Hf"d°ÌíXµD¨§£eê.P¹Î•_Úí‚Ñêœì§»ÒÉÅá~{W ×Mbù¼yqØ†/„~L‰ŒðÕéIK¼›ØïÎô;®[ˆ·ïÞACêÕ´É£4úM÷6ÉŸ¸8ãøO#a4¢˜ä^ü	6¤üÂKx;Ö¡ÀÄ<ì¸7¦‘+[ƒ±;(žU™·@ž›é!¶½€Cbí¶z(GS?±Èy/LÆQ«G
PÛB4M9|Á§/m`"•ªñè«Ì8**|¯zl8.L.îä4MŒyÊ…š<‘Ç#b’{Ê¼ˆxkÁ§æ¦”±ñ}	¯ä®R­%~Ï¦¥'SŠÞÒÕwÎåÝR$êÙÅÈh;Mˆ5dNdm[Tx.+×<%
|Â……$×D~!GFñxïY"LÕé-DN=Lç/V•Œs&¤ÒÇÂÿþÑÆd€¼,tLH‹÷Æ!üÖ"=‘ÚPY‘±9é¿±0b£ ¯U~¾åÙ—/ªu|®éÎ/6z¶€OåJd?µ"à>££s3J%æ5öÄ¿â{"¿‰›šfP	§J	pá?ï&ü/-\üú¤*ÑCI¬Àxw«V÷ø/Ù-þËêŽ®Jày	su5hì¥ö¼ÃŸyâÈßfÀ¯keZrùyÇx(Ž=“m¾˜#›ÝáÁ8<H‘ÛšÇ8õ–Øç™ï8ï±8MˆGmñ~ÕXs Í1CÍ²š2•!frè–Í(ŠùíÇT:|ÿ±7°æhXü}ÆD¯5óz|`E¸=Û4gÝé¼`ªv­“ÓãÖ1OÛ`gí6:€Ëškþy«Ežï- ýO1º°—'ý…d²ðùxª±,ZeÈ3TÊ‚ÂŒë`öÄ’Èj>{É\EÍÈ¼.XXwlÇHÈÈ·;ÞHÊ¾ð4oDB•*eìÀXÀÿq	ùïY4êF8cG‘ØiGt@„E‘æ&`·Ä¤Œ£×)îOï¦É2ªÔÉ
2Kƒ6NU’þC<ßÁcy\£bT”	¹…ø6hÌø½Ý¤­/u]	I³dwŒyÿð@€8g4¾Ã"«¹ìlÉôàøüEìFâ	ØY¯<Ba°Z[ö¾žJ¯ð×¸e³Ç¯Šr	5g6ùËŽœSHµ3“dÛŽ¡ú>¢²ºŒ`aÁ¶¾² vö(‰!°US¾Ìyó•åCCŽuDÀ’"$X8 S¤d‰øÅéïå1ÝžGÈ"DáÈkñEÿ¢nŠ^ØŠ·³$Ô\Ûàhïþ?±Ë¨3ø‹Ý~hx+9jÓétpØ»¯jëQ[ÌÊãîo>=½Ø§'atU¯5Ö?Ø/› 'çõ1HnùºñJ¦°<—&³øpoÖ¼œÅÇäcþ1¶Ùâ¯(³7(ôb˜ÜPûþÞ…uiPÚòâŸMÚYèDVâøžï0@dv~‚g<=Û
±9©JUç«YÀœ©ÛÞ[Ó×! ï#ñì3öT»PÜ§žwîõÓ¯&¦2&@•ÿSµb@›¼Ý¤—”Pˆ3’cå:ÆéõªÞ@Wˆ¯U«^³Žî·ÐYœÍº([•l˜%y%×Í’ëy%_™%_‰’ÍW†O W£vTýš¨³_Ë«ÓÚ0ê´6r0j½6K¾¶Jò¡àå;dÁ¤áð=@ƒ=d½öfƒ·Hú¹+¬‰öß.yfÑºÙ'çúî/æÕNÙýnQ®pª˜D8xmá(ŸNcÝmì`Ó¬µY´Ö³Ö«V£V“µ2*7ÍÊÍVÞ7+ï[•7½ºîàïf~s×äéÝÜñ90ËìZ(Ô_5Ö^“‘6ŠÒ¸eÖj­u`Ö:°‘ÛÈªUÃÉ"otõÚ#vt‰ÁqzØõ^éXÓv‹t—§XšSéAž-í$ôÛ ý¦nwäö2§mÞhl¬½Þx]az]7²˜5‡«ÂüÙÌêeË”ø­<‰ß2%~+Oâ·ÖÌ’ky%Íµ¡•·6´Ìµ¡õ*¯¤)xZ›y%MaÓz“WÒ¤wk7PR¹‰y!J;„¤Ç%¹äjk0nS¹V	»ÛëÙ8
ë~5"à/)Þ  \&¸mX8ÝPûþïY<z•P|¼ŠªÛÎôt™|Áð@PG ¡V“Ž†¡WmÖÜ°2c/l*¾¾à:yM?rMÈðµVÊõ¨ßxŽŒú*býLPÎñnT}qž0[…9Ævƒ^(—¤ªéýhŒ•ùØ$ß²á›"N5@¢½~”»$¢ “»—ä˜–D ~¯Ò“Œó’å Àµdeñ®*ù2èm©º… z2 M=­jRt»äþ–¸Œ'Ñ(×á²H†-i†BšgiØÌ”ÂU#öF3³aæ> 6’¦~N]ÓÝCS¾dÌ¨Š»;Çbjð7=''^N Ä©êƒR¾ðNËþÌ®ª§ˆW¢¶œî`ùFd!žÖ˜ã‡Xg?¥ˆª´5Í‡h»GÔ"¡ÏLé¶¬|bXË½zµQ]+†©üØ#ûw¸8B…,|u”…ðÀÀ\ìtnå:™”Æ€:Ž‘ù‹1&î1r¸PÎIÏç…b»ž†²@/ŽÔA®!Šò’)VˆÖ“àQ,€+¡æD?òïñ™Ôx’ÞüþE}ïLWn~/@"L"‡‡w´$‰ÛS¯;xˆ>·2ðK¹éOº¹|ºBZz`’­‚ÐYE€.¾|!¬,¦¶
Iþ!JµP–%iX,þÇ„æI{“ˆÌ£m¢ç4/ïnå–ÕpˆÞUx§9œø0OuoÎ<<xiŽçÜJ­à/Îñµ­öÄ”5e¥äº¥yQ@xXoÑWxØõ¿PvsÑ¸23[ò&Ã¥ãW%ÒoùOðóðYLÃ0LnªŽ®ÆÍ®%…œ#?)Í>à£,ýa„àµ”^ àê¶ÑÖ'îmgÓ™ÀS´²ÂHs¾‹a^§™ÝÉË™WVVŒlh[Á;ŽÄí±èÁ3îCÑiÜÈ‹éA„briÇdŽUö›Ö;yÆ¦ò;
ƒ7±q2ª¨ÜŽæ8ÅÉõ 3úX¦85Qò*þP±Å.Šûx43TQ(õÛË—¸QÓ•$eä{ºŽö}í;e‰ÄSQ¼Ê#Þ÷Ðy&û¸•ÀÑÛñ:Ý1^§[cg[u«–…¸ê˜„e ëTÖÍCL£hVãe°æáþ¾,a ²E=½h’f‰$«×RU›½%8cèDzÎ:Ÿ ìhÄÇMQ`£+ÇÑš³.Â±ÑyJ¨¼Ió#§–î@E‚5/tëË®üFäÄh\N
´&?KÑU›3ë:UC¯õäó—Ï&¥.%¸ý–¸pW]àJàù¹øëÈˆgÇì é¬Gvvq&ùÂ4‘›ç °”kk­:îÒÌ3xëüàåN ðª÷èªöÁ•ØFŠˆº“GG¢[æëJeÚ»>Ú»Ú:°ÝlyïÛZÞó[Þ+ØróÛZnú-7­–¿¦ºÔ<•¬©Û©°Uæ?Å±« YØš³lüaEòã-~†„ä.N»·¬œÇÊÞJ*è¶¼G¯üGo¶,¤yÓu{!¾mâ£qZ.ë6|pkþ£uÿÑ¦ÿh7„‡ã¼hÍû,Reè…¶d'{P¥P¯š>Ýš~G›ë!|AV	,°½¢ø²yŸ ú®Nw-5:?™ŠB®I´?zI“à wkÃg†×6qÕi0ùÂXÅ•ú¸W~ø1Zd½«z­þêƒO?YR˜2§_ÈZHg]§Q1/ÅgŒ×6Œºg}!RÙæKù	„˜åIj™½n¬9½–=ç5Y¹.Ï‚ˆhà°ŠeÙr„ß˜}u˜+‡ò\0qÙ²é–ƒ¯ô~âÜUÉÚ°àGäw4y²fK‰H\NAòðÉ…~òzö[S«èÊ^%¸ÝSô£8¸¬Þz–»+óRî|]˜ƒ±YèZlùTœ¾¯=1qðÆÔôíoùrÓÑoTÆ@’
ëy”ÐÀ>¡¼t*KßªtßÈ%èê}˜éít<»¹5ÏùEf	»ÿRVdà`·ô€éèKW³ræLÃÝ½â3¹`Æ¨9Šƒ&RËêÃ¤Œyí“S„{˜Ë¶„$L1ew}3P -“[¼zQ§wEýßÚÖš%™Z¼/ew;  ´ÝÆ[Óý=­×pP
ÙtŠ“” sEÌ¼±’ìˆÍâ"?Ä;‰ÃB?Àµ&[,ï„F?(çôËLk1ÄŠ÷Íœò­\ò'qˆC¿ãž3š3G>ã€X…eàþ¯x²;êGÃñ§p/»F-ó d;?9›©*/¥8><¡H»‹Ãÿj¡ÓEèz‘ñÆ°¶{€ÀÓù„õÍ¹é(N¸?¼¶üDÀ­ÌÉT0õÁ…º× ¡šùà»tú9ÅÅÎ³ÿmùã½.(r‘}Â¹FmSÄÇÎeôø\UtœàCƒ"±þ ÇõÑ©Ý×xJ´Ò…HÒƒçhg4^¦—
”ãÙÓJd_d‡Æ]WN¹†€w¼{~ÉVe2àœ
k¼ÂpdƒqšW~—or¿/v"ý¾rŸ[ø•(,/¼PŒ‰Ó¢Å}¿ÜJ¼Ò>OW|úì2òa¿æÅ”±’ý8NÒåÃQœÆ˜ÕÈ-¾é×ù²+½TõfÓÆ°ü 
Ü$<»¼ÆÙ4êÅÝ”ïe–ö3q ¬¢åÞ­µ—]«õ	Ý˜won¦Ñ<rk6yÍÝäó»’JÈ.%Ípkì‹¶tŠ4Þ°ž[´õh´Â„Ë¯U“ášë°w0(”Ù~æv¡^·&pS³ŽSÔ~|3ãùëB,YDØ«Ù!?-…¸³.æd´||ÈÄÚõuk>PI‰hé{ã;—¡êb
íaZžu¦iàºº˜2çã”:Þ0NÃlF}-h½']Œƒúì¼ßïÏ);'çÉ)ÕÛ”CÒÁ©êUpàš5S:51§«”P>÷5ŽdÚÕ9IFbl$óIMØr©Ñw±º+%CAý·ZìpŸm±}ãÓØÉÐ‘qh(å¼::P‚Â&ä¹{!ïK‰ØÜ¹jóSh\ËýóÌùìTª”üµÆ/·ø@&L	ac=ÃeÏ6ÝÛŠÖÿLÍ¶€xœ•Moã6†ÏÑ¯˜:{±Ü=¶§Ôv¶,%°’m{"r¥(ƒ¤Ø¿ü²-9qôdy>ž_’7Ÿ y˜ýE’£¶HJÚÉ•Dó+|}X_¾üL:CshàÓMq½ÕW0­f´¬§ô®\Ì‹ko‘FØ¨í‹Ôö¦•Üt:ÿ½k±(®å
~JIb\•Óå}MëoÕ|ß¿ÃÁhÌogó%­ž%]ú?“c±^Z j®¶aÄ[ñe=*Š‡ÅÓ×²×·Õ|<JÅGŸaTÅ/Ø¡»Aî×Êÿu~õ²ÓÖ$ý6_6å}=ù\\Mï«ê¶žÑEÙ<Ž‹««yý¸ü{<²¨;"ºW­:&½‰&¹C¸“¦}eavr§.¨=ÑCêäÝYâ°Ý ankXÇ\hi´Dg$zp^@/B´Nr§*!€Æô!}Ãå`¦%f“c2/ä½áq…Ì$$ïŒñËbÏ
IDþ4@Ï×«ÐƒGN*Ñ‹¥)lØ¿Ô^ˆš)¢º—÷VàÍ=ð!šóù˜¶>yï[×ÎtJ¡!ÝÆÉ$”¹-ÜÌ¤mŸbà˜jÁê°)ë8ûA¹ÏR4Q‡å5Óâ}¨½Ð Ž>„¾·•¶eÆ/Ý7³ˆr( ©n—g3‰iÔ‡„¡‰ÂxYú¯ºnÌÌ¦=[jÌ ÁÕ#¥£Ovhlž¦ãF±}¾ { W:H,:ivdÖmišùŸä ÖŠË5ü,È†½ 2è¯3ûÁÂV7ôÝ™î}ÁE½k8ÎÕ+aá¤û»“¬ý	ÍÐCËwBv‡ŽO»z¥'7Íî~Ç«ùž8Ãø?RG,’ÚNKî­°ÂtKd÷ÚN±IY4RÞ¡%z@÷d þb¢—ïÚÖÕ^*p¦‘?kóˆƒè˜Töˆ~ÞCÔÙ%ôÛÃŽâ££!˜c'lÇ7ùx¬‘)·>'§ûîÂ¶¦»îƒMåÊ|¸±±ÿç­½|5ÕïO„g`ç£‰©§+gRL~óï£_³\õßÉôŠÒü\þ UxÁ„ºÊxœíSÛÊñoûSlÜÛD6ÆšÆŽ$mJÎ T–\DB›ô³w÷ît:É2à¼¼×7&3XºÛÛÛÛß·wZ_‡ñéþ_:G¾ËBÎ:‡â³ø|8=êô»½Nw'aq}}­¾{Ñì!öoïh¹mè÷6^Ãˆ%ÃÙÌ‚ÃÐíÖ	æüÎç0‹£ÛØ™>NbÆ€G“ä³³<D)¸N1ó|žÄþMš0ðpBo=Šqü4òüÉ5¥¡ÇbHî SÑD¼|]À²Ø	à4½	|Ô
p´ƒsS¿cÜ<ˆï‰‚±¢ ÞGˆ×Iü( ó±?†{s|‡>"P“(ŒD1´œ„ÈŽ!šÑ°6Òú ‚+ÙÈê•çôÀÚ»h†«¹C„¸¾Ï~Àƒ”³IXˆaáÏ‡ç?\œÃpôþ<<;ŽÎ?6¹‹°—Ý3‰ÉŸÎãšb'LpDp|p¶÷Ž¾;<:<ÿHÔ¿?<ŒÇðþä†p:<;?Ü»8žÁéÅÙéÉø 0fD±o1oa‚¸¦2Ðc‰ã\¬y½^ÿºAê1Øá‰çGÝ»·F“çÇ¨SÅ6þÀ×yâ”[/ðoŠm7L‚bS"S½b‹ã0*c‹ýð–ÚòÆ†M§(«»†ÑÞOY±©ÈÖ4ñƒužN&þÙã±‰2Ø;;žØ{Çû&RäÐlÖÉÑ(àÌ©½×·N>Ø‡ûµZïË^¿ºw|ø×ƒÚVïÛ¥î£á»ƒ#ûè`T«õ·{¥ÎÑØ>žÿD½¯ú¯êu¦SøW½6œ,|úÓødD¿{'GÇøômƒ	¸8==9;?Ø·Æ§µ]è}éY%ÑøpôþDô€*t—ãƒ³Ëƒ3ûüèRAmh<—DÄÑÕ×]¸Ñ,Û7%fÒÔH7
yîÃšÇîí™“ÜÁ.4Öñe½!àâÔM€O±µ×öÃID¥!÷oCæÕjøàê5H‚²}Ïv“8¨ÑŸù®ãl¦Y‘*D|Õß~u=Pt	Ø(D±ÿø)3 çNSß»]"ß..÷I®ç‚èÖF'ç\Í)Õõ¢EdªD.ç£©g†š)åØG‘ÖÐ­ÆStkÊ}JûC'6H(b$·$Ž‚ ©|`I—†@}¶€ÿ#uø\ì;}ô”ID‡ã½ÃÃ.x(ê´;t¶Ó”žà4sHÐ•'ð6ÐÓ'ŒC…·8t=S”ûÈ÷@£“£³NlIYKiO,¥H<v-Ð\D"$öv…Ho>²¨æO õ‚(úú^àñ«àjµ˜%iÜ”M9KZ}ÏÊél#óÉ¶|Ô×Þ |Ø‘øøò%áÀ!Wþ5ö"ö+ÙÐ§q$´õ5ÁÙOUŒ¡ åÁásDv\—Í06Lgä9±AÐ‹ï‰–6ìâ¬°º
šdš®GÓ5¡‰jP¯â\x‹g'±NñŸ,°íô5¬‰Þ"—Ôê®~s³jÙÛzÍ/qÅ3$<™Èq•^ÿKÃ9Ò^DÝ-KÐRlîÿ“eÄá£!JR
ùg-¸q,9_ÑÎp\,A,	¡Ð|=ö©Îaì	¶sbþN £v+ä·¢Ý‚U=ŒVKSáZ7.ŽŽ`gŽ†]i ë®G¶íEdöÿ“!xÀ¶·hw–
ÔÔÜFh:Bkz>\³G¤+ây@Üh­Ša$ÍQÁ‘ÆJ·?Yáïˆ«œ2ó¼žÌœð¢äË³ÀPJPŠ]O˜ùM©ºd×ðÕóE“ôV5ì`Ã¿›¤:%{!;©!ÍŒºnbæü¾Õs¨æßzõœ4É\¸Zñ=)ËrŠ6¤E‹º¥<®æCÀ1+N‚{:P¹^ÂÉbôF¶Ä¼v)ê™z£œÅ•Ù„ïW%^^“4«{J
#×†xD¬Ä_Š•Rd|"©¡‹A&7ƒÔB¿»¨€-iííUY6¶¯Û°JyÁûô4ûbä$.œ€€Â(ÁüŸ2h’éÑ’¦3|¨AŒbq“ö	@«àÔ°Ämö¯Q$#ÊHF¤–iÑèEnlm]“n‘b™R#xÉVx[(`•õdZT”¼žž,âæ
²píÄ#Z;û2c.1Êd‚`ÕDûKÜ&‘Ë¼r&ÈÑ	KÜ;¹f=Žfü[Ø ™4—Ñ6K¸–Ím3¦ž~ÂFÛúƒ¢$„¦.!¿Z:ñ{¦>RÈ¥RŸˆêÅrPfdAÁè–DÎƒ¥ä ‡="Œ[sb¨h4ä¡}ÅÏ‰L¸—GÑ[}‡D”÷² ˆi9™ù°ŒXò‘%ÃC…J9ÿ¹ÝÅV.ÿcpÕ~–¢D-W¸ÆzCûê…éŒÞ³Pž×R™
=ÛÑÍ'\«Øñ`?·ò@sÉª<˜!)¯äêi¢cåVù@Ú…d]‘¦1Èü!O¤T•7ˆŒƒßb‚m'IbNŽÝ|G}°.Æê„©!-Âv<Ï¾w‚”eÙ»‰»/^‘»ŠËŽËìŽDšËb¹”E¡Q\_Œ¥QÆ€Ár_èfÔß7¹/Rò%ìe›³1*,ÍDÜ„pnIqˆBƒ–E2FMÃÁ¤pKqîèÝÐÞG_c+*_~>çµïQt-P00(=Õ¦hb[hÚfyà»­»2³ì´`ØUæÿ3Æ{)ó29þ=ãsÑŸ"/…è‰©¿–áR‡¦ßa²ÿËÆ’ÅAn‹Ø›ÙJ±¤—[‹Þ†ÊÇ‰(F-Tê8ÂüaF¸;TCˆ…=‡T{%$N¶-“‹©ÊU©rëyñ&ÛÂ‘–ÀåRÚ´,» qW››ºñÆáŒšh/‹9‡"tIèU†üVÐ/4(QQ¨;s—+¸•—„ý+Ó¡lf—††ùÜm+Ížþ»åÁÊfŸ"üÓÙÀç•?˜8Ö¤\¨Þ³›-e ˜Ïylâ¤AB¹Y#$˜ QšÌÒL”"¥+Wgd« 0‘UEív–%R‰A’­	÷Þ²·ªRRÚ,´,ƒ¾cæŒ\å‘Íš	”#ª¤°Š-ñØ×‚Á‘æ^¯‘K°¡ã¸~•Ž¥(;jßÃ ÝÐA² Û a‘íŸM^§ôp—ÛÊ•«Ñ<øQðAbÁßê¢ò% ­³˜Íè4CR•"ÈÒƒô
BZ­äL0áZmµ]xª²õDMQMÛ´nÈ»•ÕÅZEqS”œ
EÇ"¢Êòã#õÇâè¬‰hØRuH•†P˜ºÚè¿¾&Ã]¢4‰«¬àž×Ê7Ù”ÄvïùU¿w-ô§V«pÐbrèH~ÅØÞµ(qm,&Ãtê9EîÝsE@•Ó7—X(µë `•D©óû²ÿºN3Un&M. ÄGI_¥Å…(É%N“S(XøGtHxd#ÿFŸC•¡È2õ|\ÍÚfW©‰vÂs„›XÎñ8áy\•ÐŠðæ°‰„7ß5çÏÌú1¿âFÓYÀ–ŸÐ˜Ž¥:±’Nƒœ¥rÇŠNœÔ”Sîy#2‡$GQVRpõYõB {&¼\Ç“[“RÂ5w¦©s.R¿_%ë’¹¯,qS*:¿™ûU¹<“CUøMéÑÊJ6¤:û}ŽCŸqT'dj;"³/][¢­E1!£¼ÿÙYVÿý}%c·G±ûµØªVn¤PM™B5+R¨ÅiØ“ÙÔ/™:ÖÇ‹ë“fj$Lù†¯QdpªvcÙÖª±8'zÆ¼KeB‹=ýÏùt²µp¾†Q+ý'ByÔ3pe>°*âÄjÁwË8I¹SšÉ|W, DÝC›­Yç÷²BJVB1°è£<‘©,dcmQ]çé@[{dö<¼ÖÒ<¼ÊŽ¬»R}F•jð¼ Z¢GN2:‹ôü*Qøò_=6Šz©Z®6nßF½h‰8ç‰Ë›}Us‘tí&dÍøHÇF ÈfçÉ]œÚîÔ£B¨
‹cãØ\ êYžîXU£D/É š´ÍÐê«t£™y”ã8Ç›ú¡­úpÔ-3g ´(”÷•²V”¹q:ÚÞj·R¤z–ÄvÒF"0²ur$©'"³Ò)ámÍ¾}‹Y0t€²ì4%hvolº‚¬‹ró÷øÏ\©ë}ÞèÁnù²|…–»C—OÚƒòˆ¯O®iÄëü†"!¥©Qzgyz3õÅàL-Ò˜\v™n’áàPi,sÇU~ä&)zÑ•ÞŠHôfO	†‘ª×Þ ¬ÂåZ‘@YœVãê²šŸ°©ô@ÿJ÷íô¥´Æê}yƒøA\k“«&\·ÙÂcK{|uùÁ,NM?7V8´Vx[ð"s¦4ýô0‡ÇÅvµ:bŠ7ÂG¡ KRn„Áá‰ƒî±mò³gx4„Ýé¬Õœá 3f±/œP¾¤î4´`ãU›®=ôÚ&"0N)åé)Ú_@÷ãÜ|etÖäŸŒ„¾g².+*W±9ä24F=‹Ýù™h†Ó8¥ømp¼.C‚ÐÂËñš`öì¡%i“ˆ?ÊÅéfá%„_Ë- RåšEZ?¿·ÉÿQ¯Irq—ÿH€ç«ÿ/'Œjõ—‡å…CÂ’ô7s3˜S~Cç¥—}hÞçZÁ7øØ€¤rqÿ‹ÑÞ	p£J%4¡d¥¦EŽÜ¶¨$ÕëõÚV´ç„Ä~'"—Šù÷{æ<‘ã/;h:ª9lBæø¬ü™\&±?KÙ¿$Ã)ík—WŽ|Ï½ÜK(hxY•n!W0!&€vÉW‰ã<qÍ±8åœž’Ë2sås¶±æ¿X†íteQ©¾¥YýýªýÃý» bâ	‹[ÒY+¹ÈNÐkŸ-<¸¨	õ··®óª!„O%ßòâKˆV†{âÄŸ){ô,y¹’nIïB³Ûl——ò–T±ÕÐ–ü°¤¡T_ ’›=µjqÊ¬®É|ÆV›Á®ñ½jðê*	Â`±„á®NæhXñÂÑ¯ÊU¢Gnº¿4ŽY	þÑì7Ë7çPÒÔ§²T¹1´åN²eªdø¥«÷Ù»FÝ98]”¼@!PÐ’`–>Kl#Ô·0‹FÐö°OûÙEÐ²¨U„—e³A}ŽÄoô©Ü9¡'¢:_“˜«Ö¯spÞ4¾`¨ÊâEãÄ·nvÛc_îuVC_9QYnM=7ÞgAzë‡°&¥…2îRÕqßç³Ày Ê‰h¡ôiœsC_ŸeI°:à]Q},™^V!VÖ…»$‹NÍÉ¹!Kðaš–XÜyèE*ŒWaË9!JK9¸–‰+,NÝx6UŠ”pØÜ"Ò-@”öXjàÉé¹=<û0nE³HŽ¢Æ÷Çç­†Ý‘£ÑPšQ“¬er[ÄK%Y‘Ì¼9ËWR¼¯™>Y
óÁh¿ÕVÓ#ïpN’» }EÌYKêT ’Ÿ‚:¥°4f§°3ÁB†2 (Tiye’3d4=‡2 ºŽŸµH•7[ò"PEDŠ™Ý†è½b…ú¬…[PIÂ¼ÉSd¡oÍvÜª_+÷¡YíÐªˆÈ¯`vçð(Ök#4;”¼VÓ<Š`tyÌ²²})îvK)¢É"ž¡£®HÄZÂ”ïÏ½ÝÖÎE7=Êub‡	K?_¢Æ–):/(È¹ù¹ôrQª^("Ö„Ê<ÑŒ…
Ó‰}¶2:ú˜YzB+eõ‘uÔ	­ymR'&âÛO™s/Kü0e¢ø)êËgñr÷‘‚È$«¹ÖVuïUaüµœ_hÚÞÄ3K àv}îV¬MsÕ4‡Ç(rŸ…bÊRØœï:Å4j¢â=§dPŠ¼Å sÛ¼ ™ ÿÅH$÷£™Ò7?/
ÍWÌe>‹L¸ÿ‡£ÿ‡£ßh8*©iUD2Aò Thýq©ó‹¦ÿbdZ"4„’G§êÚe VÍî«2š<H=¥
2­Wcf±Êl²æüÝXªJAë? ž·Á·xœeÍnƒ0„ÏñSláQHªÛ
nj	;HÔž¬/­¥`¨‡<|‘ªœ,ÏîÌèÛÅ²$úb] é0`
M¯Kí+¬’8x™?uìw=¶0]÷`–°ä‘db)ßYL‰kmðŸÍþð­M·0ØïšæòæX!!®.ái0)OÐ<L)¶œúp:ÁU?§}Ð0¢©ä›8g2µÿV6²M±?(§¨ÔüÇ!$‰7+&<rê9C¹3G`6Ñ¨º…®ÁÂ²€¿½¥×µéìÒ9Rniš±µðgd²\sŠHÆ,Ë=2™P‘§_žÓU
öjÝ(7ãwm(•·5ÿn­=º×Â"=Œ—m†Oü7lt9Î"/üñ”³PxœSakÛ0ý,ÿŠÃ¥;µË¥Ù
£-cÐAÙöaÐáJr¢`KF–ÍÖ²ÿ¾“f±Ý.5Ëït§wïžNNàÛíÕøF2¡jæBY™KaÎáÓíM|:Obmâ"³ÂxGR±¢áÞçLÙb¾¾Øƒ„1J¡Úr9…
ù0Ä%bRYû»µCÿÁ>Óe©Õ|íïaª-ÅÁ¦`U4+Ù¥zG\äR	¸üzýñû5½ür5('¹Ìâç^mMÃ,¸Ú6TrÊ¬)(JTpxò¥Mº dSkEMÅè)Mh¹1ËW"êµ
ÜGÎ1¢¦<¹K“ôì~éýY:"™•Z-9t™=ÓgF³ÿ%<BØ:3Îm…‰`›ÛôÃFà:4ZÛÀÃ÷PšqNÛ¬hÅ©V3·+\Òw§îÇìgØÎ¨'„m}€×¡†á%hkÔ¼eLò.]Üc'HÀ‰OjUa¿6Ÿ½ ž|zP–ä×qòn÷v¢@!Òµš²ª™I_Œ¼a—zË.tT8î2‡nNó+yÉ;èŽ‰t9(úÑ6Fá
çF¶:LFçp\ÿTþ´Ò`à˜»cq™‹ 7fˆ?ínêî²g
ÇÄÊÎ¼[¸¿ÈößÎ	=? »~ú¢}5—½MŠFNëˆýyy¬Câó_xœ[Æ1•yB¢z^YfJf¢>„ÒÍ+ËMåâRÎLSPLIMËÌKMÑðótñtœØjÈeíV€¨VÒQP‚Š½¯šÄ¢ €uf³xœí]ysÚJ¶ÿÛþý˜rˆY¯qêaÀ	óØ
°“y—Jä€DIÂËÉwçtK ¥[âøÝ«Ja[tŸ>[Ÿ>ýë%¤×©~Í54EÕ-5W¨º­5Õ<#Ÿ:\ñ]>g˜¹‰l«æîÁ>©³gSm’V2¤˜/ISµeÒCÃœZYR×•w»dþ‘òÜ¦uFÊ¦=ž›¤7–çäƒLÿ°à÷ÿÞ½SŒéÇ,^<_TüïXÖGäÃãø3PlÝ¨úwÙ&]yªZcòáþiÊ£±ü ën(°û7MW&óJ>Xö@3Þ?ú^™š>
¾L´;ÿ;M·íç™jùßª¦©N´©fŠÝžø_Íušñ¿³µ©Šo–¯R ÄÔÐßSžwúó¾nÃ/g“ùHÓƒõùÓ#ˆ÷‹¹­Mxï‘ln*²ýïe–S&ªlæ†¹ùl î‘ƒD†ùŒwÿ6P‡š®’J·Vî×¤J³¨ìòK}*Oz•r›4ŒéÈ#•Í%—zÍr·/UíëªTî÷»R£Ö"Þ'ÿTÌç#k´;•vµæ­QñUøt]¯"ÙOýÏ„ûŽ¼ÅË•~ý¦&]^Wþ§Ö—úõf­+Õ[ k³Öêcñ÷œÒýÏÝZïs»Qõ–nÖ[õæuSúRoUÛ_Beu×²e[Sˆ$ÍOˆ¥È†4škƒo~In±ôù7Jû>Ÿå+ü,äñ³x‚Ÿµ2~^^AÇ
<ù§«"­sˆŸ§ü<¤õèç1}S9¥i™ªÓùqÎ¬Z"p]y&MC×À5ø.Ip‘VåŸR³Ý’íO ×+¿ö×ÚÖ5pITá¦ÖíÕÛ­`…|>_ðVIâ^3@ ” ¯:–(ù-ÁÌpJUz,ã§BÍp¢àç€ý~È3Ã-qJ?i¹Ã~ªG´&Uý{jÌ÷êòÍÉ{jWè…UÙÅ7_ºõ¾WyKô»õ¦·NÑC­WëÞÔK»»:à[¢êó)ù÷BìÖR§yý% Ö°Ý'éŒŸ-M‘'dª4™@T´-òhj68zIP7D¨p$&dªò DåòºuÙR))•K(?·T“è²> wCùTäG.‘VˆÈ‰˜ˆc£<ÑþP9õ8æ´¬gËV§ñ,õ8,E‘‰`êk·P5Rc~mwAµŠñ šÏD1æºª~Ý­ë_÷Œ™k]1L¨oËw•ÙÆQ|R½‡ÔÑ!%Õ3†6Q%’ Ô†‡rÌ^eØ¸í€8L©7‡N5ÌÈñQÎ@µ#Éôªë™fî³§2™©&¤d6ºRØ<Ý«^˜—“%ÒU‡&æDTáö›_¯«BUfÙ¦üD®Ñu)ª)[ªL‹Cæ”iµ©éIÉ´úý°qN™R[óé1†¤?VÑS‰=6Û†,fDTÈø8ô*ý	Ó;¦ô*s°0hÔCøœcê›+ˆ²„ ±MåºQMK3tr¥©“°…:\§‰Ž)U…f=DÂ]¾¥@Çàñ1Ê\
%‡‚|K¡Sát¾Bžõ¾N¥®o_Žê…õ
Ç0…s˜2ÓÙz±Æs{`<êa£t®.9ŠÎ@âôp}Õo!ßè„Fr$À\¿"Ïd…f)cUžØã°§Ön8µKy¦ÌÖMS:F((ÖÛ<
nT„H<Ò¡¯×Úá qÓâT=t¢ ªÌaÈ|^4ìtœ×½p_+¼g& _æHçS 	•à”@ûòŽ$Pô¡#±cŠFû•iãq¯®¼¤sSÖ¡}Õ‚ù$áÆ¡±	êcnE\§lhúwˆƒ0Ôtìæ.#Ç¢‡§L©˜«Î0W}X³ÑùÄ«}ä¯Y VýA‚“’úå5ÌŒÚWW½Z¿wŽ)½9WlÈ%eæ¤ws[•¤tZ’ÀßÕ$e2Ä²Ò„åÔ˜j¢·Jhi™pÑLž¡
qÍT%ßÎƒŒ.`3_â•Î¥aZƒ‚¸j€F!@c¢Ž‘[{P¥»9È`K8Á5¹bR„pâŒÉà<Hã+‹CcQM’ù‚1GÉhÜEÑ8NFC‰¢q’ŒÆ ŠÆi”N]gR}¨8dr‡ÔtéQÓ!vŸóhT„>VüSÈÒm¤§1UJÃ'L©ttTóÛá-ü#çA"Å<D9˜,áÀPÌÑaH(ô6èCÓ’óòHi1Z—Z%OUÙ‚¾¸èºARŒV…ÑªGÒrù¢<It–ã×¥Uå;*»„Ê>J ìj™¯l6åM¨ì+ˆ,(U¡xÅS¶C+™²a¨e´NB´PA­dÊ.œ:´ÊÇ´’)»P>)û0©²årHÙÈÈ@½›0ÄK0$ŒFøT3­ EF\ˆ#Ì’FP7<a*Ež¡–4|:		æÐ8ŒæcfóJ4Çñ\½ðBN¦}Ã,iíê¡QÍ‹Œû[MbÜjk\ª
È$'ÃQbDj\a4(ê„àŸ!FãŠ
óã|â$b?0 «•Æ(Áü~d‰2–!…´-èêÃÌî2Åpò{JÈhÚ‡¢u}hœ/¾vh,~ý<ŸÊz–ý>µ–å(yö@ßN€ñ]?Zr*üã ÏçL-çK²GØ×‹ïGSZÂL§A:Ëv™ÚÏ¼ñòôfÉÆSb±4ð•%–ö‡jñ÷L–¤öþ™Û›æödïóÙ^ól¯—
’YP¡¨ù0ÍˆU­w{ùÌ±>5ûP‹¾täð¶nª¸é¤ù±0Óƒ¡ˆ¡Ì$JSªä©û2ô&M¿ÜÇ™¶×JÔAö±ƒ_4¾ÙÏà_K&ç@®pš±¦¯SªàPÚ«LGM`IebÌ¤ìæ¨9Ë‘é©§‰†÷rÄYÊÁg/ÕéÖçG‡©åo@5ˆºOY?:”ìF(É6$e6Oï/^£­]é¿-`È·'·äŽK'³é†Íxü#FI#8zþZu•Šº«¨ˆ©æHW~ÜÙÙÙ–6(PÌ¸„è’_›ËÖe^ñLb‡Ìàág’öS.“­[1?Ôwëzë­¡7.ŸÛÕ\O¬¹0Â½³E…}íV|DCåÛãá{K<È}›ÊAø_ÀJx¿`¨TLÀP©HÂ^†ðï0C¸œÏP``«üT…¶,'ìÄw'Ì2KT;×·Üvü+ëxC:©;àÂÇm†Å–$#‡xEc‹&aK,£ˆG¶ÉQ+‚£ë,k9®íðF¸³ÙÎNþiïiåÆ*ý¿­¨UŠ-Æ-\9è›·Ú±³Eã×+='œU“õ‚CçêR`êÀºÊRÐÂQAWÒ+ÏÂÔ³º²³ÍñêºÞEcþ2Í6ÇÎQ‚µÚ³E†°Y‘+úW¨‰,nóÔþÅÉÆÙþ=>èÆA°'âˆ!°«Ml×¹ügÙ«{x£sÃïfÁåªP7óµM×¬hÉ?¥8%)Ù'pŽÅ/HugÀ´·ääv£3K ês0m˜öký#)f<fŸà­îŸ˜P¹„2k7W^[†9ámˆà$QP]0´t=g‰cŠ·ï`ÛLáNˆ®8{"¸Zßh¸¥"šÎN€cjT›­ÚMŒ£×¼·™à4ÓÖ¡HÁpÁ8óÞ2ôŸB1DéHÆÝ=äydß4;ºÄl:Œ-a®ˆ•b³ðŠ’Q`¾n«µ´7BËI
™ÂB‹R~%y0äÉ\•˜ÑÒØN–¤ÆÚ¯ÃQ=$amblœµus”‹Æ¢€ëT–ZpQÍ­XAÕ®ÈÚæ­ Ü]Û
ˆ‚1˜IåtÈ‰Qä—ÀÅÇð»DE·Œ$'Õ©c~	T9™VcÐæ-ãÌIôF ·
9'a)ŒÞ.þœ„?2½](:ÞÙ" êí‚Ò+± «·OÇs&‚­¯NâC~$û% ëxõˆ!ímƒØ	x‚ÛÛ†³ãyK sÿ$ÀÏƒøþ9´;‰kGáàÛE¾ãÕÂCÄ·
Ç³ÄÆOà¨|«Øx²ßƒšo%O4¾óñó­"æIøŠÂÒ·‹ž‹¹+OŽìÖ#8ŠÑWl:¯¯Ùº¥oIïA„æ "Lîm¤;2q[£ûzªN-ÕNS¬k?ƒßgI>Kóœmƒi¤áJåŸÂ û†!÷Ÿ‡Úù*tJ‚JÄ5Ð Ê‡Ö‡ÁúÉ-Äß,LŸ`	Ã÷›æ¥dAh|P|’´5ÑoƒO†±ùÍbò	¼BˆÕ'µÊ¦PzÊ+Câ}°[ëºÑà,û10ßWs#o]ØÎ?Â#"åÇ^ŸÆwÃ»·ï‹‘m/Þß›ªÍ@uïËá_æ
Ë·liÀ¿€%5:Îj´ÅÏçölnK¬Ù´Óº7ø4Öø@ò¼Â¡£Ë@æŒ1¦ÛmwÉiW:ð©é´Â!Œº_gîãlñ†¶¼fññ‘ö®w€U	LW M;»Ñ©C’}Ñí(™¹¸`v\]ÖüÂ–Áqe„ÎÒô²›ŒX¯u–^æz(í˜$Vÿ–xPÞ#¡CÑ£NÒèKâû^ÄýIÐh–N[½M£-@Êtæø¨]?•ÉÄë•F›ÞíYé½§LäÍ=;@ø,ÊKÍdQAî¨r.˜Ë†HìCWS•ïxN„»8àz’xJB@Ô†ÏìÄ*H
-^IÐIkùs¢}(ÁçÛ·</óipqCvKþë‚í6³#¦ Ô¯ßo¯õï:ÌÿšŽ·
-î›Áù}1Ä.„ûøb1¼ÔžfPCfÎð—$mSÍÞÓàGî©nï£uËÕÞvà…öïyCVðù±ºðÿÒýâ—{.O\á_Xü ³mO	¾C0¢‡3o¬=#Ã6p8—sùƒ(«Ä³ŽÀëÔÖ£žŽ<+ˆãµÚÝf¹q&äFt@É‰©¢jw¦*M›üG¯ÝZ¡Aº“`½æ–ªüAT¶«›×ôd&BêtiÂUöÐ4¦xØk¨šþ¦ã.¥Ãd*È¼3²Â`f…²³©¦™ <Í­ds¤¸ÙÕ>üñu76àEr¸Úµ¯Lá!È)Ä®Œ#ûì§71cÇèáj)àÂ)Ì_5õA%Î™Pâ\I@ä]ê|wÇ!M·ú€ÕüÛ"áÛ°ÃN¥óÜ‘òáKç<zR†#¼ˆ+DîŠÆ<×3V{‰¶;}©ÜýÔK3ÛÊp)b‘«f?b”sŒ2£¿Ï’7Àˆ¿Mp&'o¼¢Ÿ9W3ý‡åaƒaµV5árÈ4:“MK•Àè’1SõôP|ÖñæhÈ,¡Rø³`L3DYõÅ@KÁ4Z’†ü9KHØ$Åôµ+Y›ÌM¶‰ó'mžñ>ëð³çŠeSî_È´21,Ê~â>èÄŸ’7àñ\>»‹›ÀÈÂ%EWy,6;y{Ÿ;Ë.Ô;À;öÜ§
•Ü£˜ÁŠñºm“‰Š‡naPv’{à,÷Q—§jÆß'µ¬7Â73ÃòOË<xÙ×o…âÉ-÷è»ÄÉ…¹¶À=ÿ„k-W!¹þKM¸b–é5	ä’ÞN@ðX®¤·7 Sr|Ïˆ½Üq?\Ç‹8.™åÜZÂßƒÌc¹ïÞíñÒ,/o‰d~Éo9Ô2oÅòÎ»sUÆ=·»¼-$ä7t¥Ô‹ð{—˜ßÐ½K/Â¯’˜ßj¨‰—àwÃï"®jº6OÉzM"~…÷µ®ÊmøD,÷ðH>qkœGÅ|~1à¹Cp…ä@|á
Ÿƒ*ÞáA‡¾>»ÿƒÔXöMÖå@tÓJ†±ÁúO×9Ø/x¾˜š­†ÞVU
Êz@ài`”gˆ›8käÃ)	Q±çõÌ„öÜq§x<àü™Ti+|"sòó7$] >`ªq&ä×SI°ÇÝ}û3¦p”_a7ÛŒ±iSxöMˆ ÷n'íöÞuNgErôÒáÒÃ«Š‹±HÓ¹0Éí%>›PýÃÈþe}£DDçÐÅV‰Ì²"Á†Y‘â¶LãÆ-Ì—Ùè00¹Ñ80dÄ6‹±0#NR½ËmÂÐ±¼¿¿¿¥‹0¹Bxr+.ü´–uˆ*À¬‚ç²§µDÊ:s½êâ¸ Ë
R	ªòðLÙ˜æþº–W9)ÍË‡`þõzk‡`!¹5C°ÞÆû¹c‘ß"‹î\;G\3GPÜ–i~‹,¼Bòõ†à‘^ANr‡]i¹b³$ºH¹³Ä&½¯ñ§¸ôÕÙ7fªI·p~+Ñÿ¾#ÕeçÎRt††¿àL,õÃ³u/öjäéÐE©ø=D~<5jOe<vß Œhr8Òåv u-þ— ÕKÂÇWËäÁ]	’UK"…l]ƒùË—cþî§™¯¼óÊO3_}9æk2ßuX-È*(m1¢ÁÚd	A¨Ñ;ä×Foœº¢º+³”ÎgIó®ÌP"tw…\˜7Ô³°Î¬ØûØû¤ìŠ]Òn.ÁŽ°ã÷	¸	ÑýmüNå…=ÖÃYÝ'œ|&¸7€ªŽ±Í…ncCˆ×`êÕ@ÛûÛ¿	1¿
“¯ÿeôXðú×‘'¾¸žER­òë‚±×q# ËÿÓ´¿Š ·2þ'yñ8þ«0ùŠ˜û_F]!xE«¿ï8·¹µ‚W8Îù‘„UO²úk';ÊZZîqçnòÞòÁV÷Ï¤&ª£°ÂÿGþU†K‘è@¬ïäE€XÜ¡Øå#æb£'d…œlþä¬°jÌ‰Ú`qïU´Ñ½Ð½¤6D"|&—ó?ÌzùYF{7ø¸ÿcž¥Øê¦ÖíÕÛ­¨á2©ÜGÐ»ƒ§¾ž¢ÙÆŸ~ŸzäŸmüÎ7ƒ*ÐôÞ#Î£9ß&9Ñ0QÜIçÒosÒùEOúúÌð"g_V|ËýÙ<oø,³ïhMòûQÄŒnäP³g‹ÌúM®~°Y<,Gx.mýÀ3g˜M|ì™ýò×Ñgÿó}»Û«?]ò‰ÞÌQè¤½“{Dºô«H+U6¥á£4ŸÑyçX³ ›<¯tYÿàt¸£î8Íc„µçµ1uÈÐYþÿÊ­$c¼)xœUQakÛ0ýlýŠ£ƒa'±ã˜¶[—VÖRi)d…RŒ#c1[
²TFþûtÊ²d ž„î½wO§ñO·/é\rT=¦3ÊÊZ¢ù÷Oó´ÈòT›´­,60Àw½Þ¹j,Ä<"/
XèV
¹ê2_'Ê³ö-jU¡3QeÜ©¦úÖ˜\wž9fìƒT¼uáLóuê¬lû¬9cŒkÕ[pª—+…xSðŒÒ9)^>Ü•ÏÏ³Ûr~÷ø×ð›Eù†OFo®Î	ÅáÅ’óãýù§ã¹*'bDââ*~®ƒø’p‰„—5ì¦ŒIeCˆÚ¤”Jà&î­qÜ‚zï°ø# ò æó’¼2È[Io<œ¦,"ã_ô—¾cØ±w-ë°%#øøO–ø`Ñ¾‘×åäRCì]E­3Š<‰Uk1õé·¯fé'¹çlñ£|¸yñ¥á0¡±³;Þ­ãÃüO»g>¡Ù¾Ê·l_ùïk¸ö}ö>Çˆ†0™ÒÕÒ`õ‹N;Fë4ìŽý–ðË³6xœu’OÚ0ÅÏäSLáBVx©zlO”š°«íÉ2Î$X
Ò~ø„?¶íÑÏó~oÆžñ$«Ù”Dmù)j«2…ÕWX¬öåñ3++V‹<ŒA­SÌ`Î¸MùÜ<g@ŠÒx'Â¾¨s¥ÍØHQ`VÔÇ±ÉŽLvè8•Á§³)&ó=‡ž¯¯pÔwo2ób>kŸÇtpoIWOƒÒ²¨S„¾Ü¥Û¾ã¬‚§…£Ièû”ÙA?iš˜Sp@–˜=JšR-Í­Jm¨®Aòg/NüeäŽœÞt†“hÆ?Y^Ï‹ÖñO‚îDeYQæL¤iƒÑV
Ô×-'	'ñ‚2Ù–@Y*ÌÑr²(Ky¢à-‡Ç}gÓC3c…5ÿáúKè/´<ABeÊX%çˆ· tÇ6"e›¢”¿îBH…V+6B™]Ž)h;ºô¬¼	!ok:¿k¬NLŠ}ÿÑ@ÖUEk$
©ì	”ÎJºnK9©¼:¹:Ç+dvÒbGuVoº:+¡c64a†ÂÖ¶¼MïTÂ/Ê‡§éÿ0æwF×q¿Ñ
ÒJ©¬»Šç-å—|˜Ý½þ xœí}ùwÛ¶²ðÏö_ë{œÊ®åØÎÒ4NÓO–)G¯ÚEe9½=<´HÙl%R¤¼¼ïæ3 HÜµ8qn“Ó&"Ì`ƒÙ°ðéS2œ¬wì±åøV½mZN`OlË{M.úÉáQÝõêS#°¼í§ûÛdŸœ»¤××ÈÌ5íÉ=q=âY3÷Æ"Áµí“±;¿÷ì«ë€ŽI¦*´Â†Íè]m¼GNŽŽªÃ_¯ÈÐ2® >Ñ¬ñµãNÝ«{Òé4ÀS€n>iL&öÔ†:þiL§DE(>Q-ßòn,“Ãß°?†Î=÷Ê3f~N<Ë"¾;	nÏ:%÷î‚ŒøaÚ~àÙ— Ê8!€óÊŽiyÀ2`›åÍ|âNèÃEoD.,ÇòŒ),.¤ñ€ýkË$—÷´Eû0ä} - í:§Ä²á½Gn,Ï‡gr‚8ó G¯fØs¸sl·Ý½'t¼Ã¦‡9äÇTšÄv(àkwŽ‚  Æ[†êÒ"ßš,¦*“mí]¤‘FïùÐPÕFOût
•ƒkÞZ7eÏæS ]žá i„ÐUÔæ;hÒ8kwÚÚ'¤ ÕÖzÊpHZ}•4È ¡jíæ¨ÓPÉ`¤úCå€ˆa·(óYL& læM+0ì©þ/>h&¦uçffŽiù¥g[ÆZÅ´&¶cù´ÿ“…3F†út&ÌŒ±çÂ~ýeì©i;WÄ ®>žÚ!|2Ÿ.®êvÄuB`ÌÇsëÒ¸ôŒÀ g†g^ƒ¤½1Ã¢ÃKVôÿ8”Ã±;{ÍŸnooÿÓvÆÓ…i‘7“±L¯ß
E–ç9®\ä¦.šÚ—É2(ËÈ„)—ÙNÜÏ-?ÑúÞêF —Ž±¦T´„Ì@¯w„2:R	ô.]ˆœ´dEgq÷”w(	³>’©üM`Ïh¶ÿÉF—4U¥¡)z³{.°vG’	pøÆ´+|³z´²Ú¥9›¡ ¡lî€n¬Ï+Ë¯û‹ù|g»ªÊ{º¬I_Ù0:£#]ÓõÅ³‚Åíó½íÿ¿½åÃ”_“/"P46`–Ý¿ÞÞÚò¬`á9dGQÕ¾ª·{0ýº­ÝïíœÂÛKÏ2þ:›œˆM†]˜¤¥Mž‰MZôa§_Þè¹Ø5Å…r®÷]e8h4½Ój™í^HíúÝn£w>Ô‡£Á ¯j u¥ÕRšÚ0³ýK±ý¹ò¾È†J§¥kJÆŸÄšÒQºŠ¦~Òßõ‡He[kƒ”g¶|•Ý²Ùïij¿ÓQÔâöÍ#±ýû¡ÞUÎÛJ§‘Ùæ8Ñæ\9]`íãÌê'‰êC¥©3A&ú q¡d6{–hÖi·]kwý\m¿Wôw0|}õSfÛç‰¶ÊGMéÃÐÅÒ–ÙîE
'@<ð…ý}™h;è îwûÀþ2RJ4mª0dÍFGWÞ+=­¸í«D[Uib›rý¼Ú°4Ö–³$‹šm¥
Î–4¡ÔF—sËsB”4î}øYíÏ“CÓWº'ú‡¾ú mdÎ‹óäÐ&¨x”æF'“¾óäXÐF*(€aREý0Ó@¬?êýÖë«}Þþ¼êkPÌÄîtÛ×ÿ4Pi;5¦ÂMë¦Û£j«ÌÐÔú?ò9>%O÷Iøtt@7ˆ_RŸ`ÍI›ÚXåþyC†ÚG½7êêå¢ÑüCûÊü‘jþ-Ø~g<›×h7hyÿô™ó»ýySË©¥Þìí!­ö„Ô$ˆÐ	†'bðþÛY%Ô>E…ºqm“üé»Ž.[µZø¨Ï@bÐäà¡kÌ™m¼Å8`íÜË?-ø½ï¹npšýŠ·öá53“ŒkØ;h¿ií1ô<°x£Ò¶KÔ@öžV°è†iê7Æt¾GÐà> 1®>vLàÎ	!ïFƒäÔzv¢®>ž/j1áõ·½Å¬µ‹‡6“âKc’OWN¿ÑÀ†ÔS¡Ì·ÍÕ¼.ñþ(NàÝƒtògð7
ð0Ï3‰Ê1fG–åß¬ÐÊ\Ö:$B83Âa€ÎìÑÙËP¤a56”½Q§:ÆŽâë½ÓÄ´Oˆ3ÞÕø€ûpûðpC§ŽÝ˜{‰ûã™IY Hø’¹ÁdŸý)ðü™Ë2½%Mœ˜S¨ò š	H¨€ü14ØQ-Ú¢(~Ê+NÖ±1:£a)õc1<º²1Ðý±ÙI ‡@p¾@…­+À(óÒvïž°W;ñ|E¿[pT5ž2
'³ G0â‘3±¯¨Äg`Á¡KWO® =69LõÉÁ_S”8Ú°?Ðô†z1¬AíïñVXØêj5N@wû€üàþp@ž x.DäâãÞ‡ŽLm#bã67<4…cêr;µ'@õ&8@„vÙ
îÅ¶žNC`”yWV@UŒ‘·…ª]Ÿ˜øÏÞØ¹ñ&W UöÿZîD˜Cðþ‰ðÄ±ýÑQ&à°íEÁ;8vö¸ö§Óêïd‹08Ý×»æ¿6ásÔË¡¨ð¨>‰áïÖ_ød·þìÈG(d‡W¬·Mñ©‡J…é¦fA¦˜¢ÅoÈóô¨RÚ¾¶SßÑÕv -øL¬©oá›,“%sq{«¢b?ÌÑëK1>êêÑ²æ#g,ŒwÖÕCŒ˜C¬® ‹Ð0<Ÿc_K9yÞ”R±ö¯Ý[õêÂ§3€:b7úxêúTÈ±@œŸ1>'J¿Uz³ÌJå@ Þ–cZf9¯íX%n¯Ä3cÝº?3¼ ,-†ð¯ˆnqÛ”"x^Eðà¥64¢Dˆú-¼ÕÆ9wÉU¥HÝDi6‘7À:óÒn° `u:ý&Æžè7cÔìzšôÌ0Ijr9uÇU ÊÂª~‚ã‘:AÜ[Ë#}‡¼s^F Òj´Ã+Õ/¬eØS¢€u
@ÊzÆ#}»ù©ÙQÒ`Ï™‘cÐ›÷ã©U°ÚøP4.ªqKTø¨Ðq)‡w¡Bœ¡ŸÀ3žß60(`“ôúw³¯BŠ)™4Øáðœ(0‰—€üXÏ³h^”a(²n»§wõJYÐ»ÈàîÈ®š˜µ<l^¬ª´Teø.KµÀ-ó¯+Ÿ`¤>*jQ¯&(TËƒ~jJWâç½X3°ñÖ’ µwŠÚmtà_µ¯ivïBjm$M'íÚB§<4Ï‚)f¨™ê¤Iìr$0÷Y€ÏE¢qÖ	ƒýôlk¶q"Py0.aR(UL„dÔ«ŠfäŒW@ÔøÝAGÑ}øn¤ãJÁoht˜ÀWñ¯éÞ:ÅÒwq]m1µ4”’#ðˆ4­©"xqÆ†×¬«+Ãê.“:,§£¼ve +ÛZR¬§'+VÃ ÚWQQÃçÒÕ–ÿ¬øgÀ«ÐJUrõ'B¶‡ërUmšÚ¿P]jFj†bð•¶Šó›Ê3o)P
UÔ°•[ŠÆû,­Ì™ò¡zm×õŠ%jÔS>`z*¡ñíô‡ÃîXws˜›À¼9µ‘àšù(¬Â¹ÒÑ¤$å|$Ïp®pQn…€†­“¤¡…k8Ï‡ïÚ­,ÕÔl%+•ZJ­ÏL¥ÚÌSTÊ‰’|]Â]QûÅ¾ÂPæ­¨ø–òÐð²D¯Ò€@h ¥’Š1îÈÔžX¸@F@,æ càUâÖ´A°À¡¬b!°²Xë-Ï†±Œ3X«²“Ë²Þ”905îû¤ÍiQ½]Óm´{ÔF™b“UÍÌ°4Îè]áTÓ‹Ô¶¦Q[ø?Ùögp}ïÛcpjèî‘Ëû bî[Ï ‚YQ¶qÚ¢–Úï²…³2’°Òf0•Ñ´2&œÉ”w•Y+šxÇ2ÃSŠ\kp—p±UZ¾¥ÛTæÆ¸XT5µÝå®o6ášgÏª8»1œlâ*ÂétP}¸¸Ö¸èé.FAh\“„jtØoVW¥P9Wf-!9õßp:¡?âê‘®/^>',=`„«eú‰‚ã—¸½§ç!¾Á™ëÁÛh‰µi
¸)`ÉáZOOÂ¤Á>>3@˜½zº¿¿½E·YÀÜdL§„½'â‹¸Ø:Þ!ÖÊÒ8´säí/$±Œû^Qqaþí÷Õc–½ŠC7k…}Ü{‚%ÈÓ™5ÏïkO€¸ò¤Ã¨¿íÏo]ÏÜ;“P‡e›8×áÆa6—Š,wQú‘þLJíÓõ*–»aœºWÕÆã€-~ÐGGç©yqI==¾ì7K@Ž=ùàšËƒ°ZºˆŠj·¼Ù;×µ¥RVW557YS.ƒz8óšN\GxÆÙƒ¹­ËÅä÷çG`ýèsXèÞ”?{—#?®mÓB~„r(;”÷Ñòpo1»§ò—_rƒ0&D2ÿ2f:7PÔÇ§qr)ìÝûìËa/ò"V$EâëôHdÏWí‘äa$˜Ï„¯Ô¥4—¾t—R>‹È"A|Þ$¸ó¥z#»2?bu÷¥°‹ôo{6úÐOžZÔŠŽùòR¼ôü·/d,^dAe67n|üç2kŠÉÑÝîÑñËÚ¾{ù|‡®ïÕðîås=Ø+¡|O 54¶È\êj Ÿcaöè€ìì"AµŠòÍÍä§$iŒ/([üK’g?È›7äùw¾u;»}Iû,3Hü-±J0Jb±`)e¾ï²µÔË„•xUlžÖe]‘©ÉàdagÖb¬dÎÜ•Þ}'¬Û¦y,Yª
L–»³.ss˜Éeþî!¹œa7Æâ”­+âoº#ë27´¦iÖ†o€±IÓº.3ec™ÁÀÂµ˜ÆMp‚a¼´YŸ“a¤°Ñ,Ž%ó¶6$#iÜ­kd_¹LZ‚{rwGâþ6ŸÇ\¶cZwaÀõ÷ˆA··(ÖÙÈ)ï ©Û—ÙîAq/gÄ`Îë7¤7êž)jrS;
hûlJ“×\cO':<’,Ôß²LÊ¹¿Sèä¸}ˆ±Ò^ÍØëb»5³ÁeûÀ·•nIqã¦T²4še±ÐW¨„Òþf÷{vÎ®¼O"©y;RQ’¢í¨Û[+ŽkQ¶d›î¸+ËW¬Lãôºöº4Ëòõ{]èq†¬¯yÄ”ˆÃñMR";¨ò ¦^3)éQùVHI»µÂç{-‰ÑxìT$<äÿ…ù¦GÕk‘ßÕëhŸòÒÞYžƒYâ]­”•ÊÃ•ïJ­•™zÀÄÔr<ý5n-ãd±àà^¥4ÙZc¹éTÙÉ”ý­Æ<;o·ÑA_?w÷ERwaÏO$nfÌ7L|ð\âôHçd6×ÝU²›–ÜüB£W¼ßFo¶ÂMBÑa×f‹ìÏùÙ²fKØû4^xžåš5›™q‡? /ñÉ¾9áYÅâ[
Èk~
P8÷3A<†¿ÙÄsË{6½‡	#PB®O2ÏÍjÖ±*ï®´ƒ‘
dàéÑˆÒú[ÞlRMcÞŒ+òöB—³VV§Ž3Ûõ$`arËVŒ²kÜÙ³Å,e3V?EcÕ^òNí•ñ’}Y
t•C
-)
dáàeg¸ÃKQiBµáÓm“½X¶Gˆl„¸p?¸æž{Æ¬â9ì©ÜÓ£Çôðçê :T)É|ì¢úÃ¶!Âs •ÐŽTŠûÏÅçkÊöC8VE·ûÓÝþE}Y8Øi«½ÜŸ
+Z¨­óµ*èñ’=Žo_9ô» OÛ‹KBt1h{”Üi#Ýñ±JÆ`=¿’wSÁ­°€"•2/ yG‰·†}Z—AyFl…ölÓÌY—DÁ~®@U¹)}ôV3Ý3kæ[s¨¢}åèØÒé]ÝßÞ”mßa@þ‹_±òÅG°‚Ÿ²9'åÛÇ2—j3*(ß»zDl(öæ6Çˆ<ÇnYV$ïsã`p'zG5¼ Nù¨Å7UÒÛáàòQ—/+:gÖ;Ë˜×k…å)9Ayt€®k™¶AèD$|&®ØÕßÎ¯ï)h>ÅƒJ!LV»â`%“4›'B5W¢š“€—›Ð+9è'gxDÅ¸P_æÈ÷z†c2@8ùùah¥X?öU›±{cy÷ü÷ªï\/„ÔÌK˜¯Š{1VMeœ—¡	/%Ú&¼¿]s‘ñËkðŸf|yM“Ý2³*R+p­¦çå³•uNF>»`}`Ð§«SzïS‡ WG³±†÷ß¬IÇÀ%èd¤Ô±»)ÖÄ¸ðéR;…•ÏÔðv-¾Ýfßn“#FÏï8æã—Y˜3™—eÁ£úáyNv"ß: £Ü5Ãÿ(^—éû&‚€†]ãO×ï¾Ëî™XÛv\o¯rõáÕsªÀÌ~çØ‹ì‹}Ö›¦ó±m!ÌÜy*ÜÃ3ŒîáIa{Žf|RWÄbG@"9èèv¦‰éÜ´2æfÆâµŸ\g‚…àÖÛ°‹yKË#ÄÝ¬eN¿{ï»t@pêeà8Õi¼G5yO÷ÁfšcÊ²híþê³8Òîç©Ek¼ ê>ì:aÛzVW‰T˜HžÆpÐQÀDF=µÿ—Nß•q³7*yîVg€jÉÊgLõÙ3S +;XB“bç
LãÂ3`âö|íôÙ
Á†P«ö<Ý°Ä¿E}Õ±¿^fËoVY_[!D ˜oŽØ…€h@]^Ó»ŠÖÄêÞRhX>bhBèÅ¼™
 ‚’áÜ{¶ù¾ÃÅ¨}¾ià(ž$99DA 
V’ñfþªCõH´dñá!J^yeáËmF,‡6ÃV0¯-É¬ÙÃä‹Šƒû/;"‰è…Ðÿ›Ïbæ&*VHÚ-“¿x,´ç$L6K}*ò¨ÏIÜlòt>ç1Ð]!´AÄy¥Ç@{n"kƒKù­Ç@tiBmƒÄËy¶Ç@}Ybo“#/çûõ	ÆœÌ;>Š›Tkéüçc ¾jÂu%N,‘}¼(I /ãi9âJâeSÄËæˆK“Äß¼[^šÒÞà\–3ÝúÜÔúJT/•yä¤ú×ÙJ‘\x¤f.?lP;K«à¼å56¹bòHM-ÑlÒÿWn¹EKE›t²Å¤Ç@wÙ’Õi—V²íYKgŸÂÌY[[raí›÷‘r–œÿÅë„+-~ócQ²¤¹aoU^é|ô-­n’ú¬×ÇÀ€Ì%Þ:rò
ð£¢8Zr~pÍ“·&½äŠôÔ6ò'†o|áÞH»ú†>,,~×6õqàMñ«„ËÝf®iM{.[ßÊ_]'ÄºVîú‰¨˜}£%‘ïâ9¾Z1	Ò?ÓpWûiþ'Áóå4÷šÌÜÅûÜzHÔAX€Ûë9™%^Æ¯)·lov‹ŸØhŒû†e—ÞÙ>rôSÉÑÇ™i¸czöå?Ð7—-~¨"º ôû×—O·£¯/w¡<œÀ¿ê€”Ñ/Û“ð;Áüƒ"uñÞõò/ù
wÇ†^:JRŸÏ=lÇ_jygÝâwÝÅÔ$¶i9=¹'€…ŒÊ±}b€¢u‚k+øï¿Œ«…áJ Ëb_ü¼çÆ[Ó)¤’‰çÎ¨>¨Û&1.MüŽ±
 Ú˜V`yà¯„ø&ÆÌžÞóOÃH¬ûGµŒü½ê'Xr>þ5ÿä×6´‡3'²ü»ž~Ü…6ËûŽ°ü)íxœîtÛ×ÿ4PÙ8L¼zìˆß!_ù«ÛÍçQßäkzD¹à”ßà»ÚçŸ£Ó//
ÏÀ ò:UOü{Ùñó{jžh¶ro³}ußWËSÈøåìÔ§³óU¿W@%X>‰‘‡Ùº¦îs‹´Ü/¤VÖRÇ/!°kë¹ÚÚ’•Áå¼üÒ×d×“Æ#%qÓ’=cùwGÊo^‰»ÂÚ}¦ø©zÙÂéÝ…@@âIä¬ˆ·ØË§´nõ™Ñ:H|‰¾Ù>D§á¦Ärs"))xA<ž[	ã]8¢™CŠ8@ÒT-1 ”¤¼>Þ¨Ó	Iä”2°2Ç* §U0ñ-ÖÅEB+|É=WÜ¯.:q0{“(;Â9këÓô–ÒŽèƒ$–”ZHaýJ:aSBŽN%‘½†RƒK;@ª›]YJ–’±¹•MnÒâ¦î†ìíW5·âìª>¹V·µkO«Õ,-ÌÎ™Yne—1²Ìh
¶vÚ²ÈÐfèÉjfvu+»²‘-×p	SWÁÂnW€›m<s#~MôFO]ŸŽ;-©§ûJ¿Åõt‰òbWéÏ6~4¾ì¦Ž‰S\P A…jž¦Opà-:”<úqÓg'âµ:„Æ—ì^'ö8tÇâ#¿D'lÃä~k‹½ìw‰êã‰NSìÉ7Å‹£ÂÂ.…™{F­0ËT”µå
¥™qÕÒøTœûM@4Ï8ß–‚’üˆíAÈîJPÞÙW×–Ÿ¤H¡J€ðÃºé®Ä£Ùo6œL•B¯!"Ùœ—„N÷ê±ÃIh\Š¸+S¢ä¯0-6Ÿß´)‰~åæd«ed…|¬MdcÃó‹Ô8-I‰†Ù/A\HJÝÐÄ(f¦®lè1Y.n´¨t“œ0Šì;C|±.ìA˜°¨ÝLv$‚žºÎûKž¬Y,Ùrö5™©ýž”]6)»Ñ¬lZ.3³àÏ5eP?&¯É8s¡²Ó\*3Ëøáì,Ç§fÒ¯›ð?db€Ã lfp:¢‘¹V‹ª
o~?þƒÞ,¼GþM²+±/ ÈÐÄ§_¥§:9ùéPŽB¼Oq=RÆ£û–ã»^ˆ'nþú5ú%ÁŽçK9ìc;nþú5ú%Á^-<9òÀî‚4Y˜1ðiû^ švˆ`Ú« @S*ìhøq‹§û„Êí	—Û„I£úí“[\8þùy®ø>L”¾¡¯¬¥¿A’\K>AÒm|¤WªëšÒ(jC©J¥4|ÙçH*GÓ<NI!Hüš,¤»ª|Ë	þHºÌPºBoO–¬šhM÷Ò¾_˜]ÞÌ€dçƒdT7=pááWñáAØúÆEl—=å0ù&ÆâËdá˜#·lê!oŠ‹Ñz†Ÿtª¢ê‡U®¿M5—ŸM<K”ÏòøjÔlžŒh?bG0—„Ìj¥¦ñï_…ßKwe&Ùån|ûlèUKg$w)d‚õ(îNèRLFã‰8\ì\:Ý‘Èv€ÝÂlGqÌ°lÂƒnÄ£0Ö1PZ?ÛÁ"¿_Çw:…L³“ò#ªÁBzR¥Žÿ¤æ.ØA–¾ó@½‰.Ž”Þ%ËD°‡g†y>ÎzÊ’ü˜z©…ï`ÄoÕñ—ÝNµæSã^ëç¶¤ïA›«îtŠ'šYEå4	RËVsà¹;v§Ù˜‘¹F{Và„½Kõ¨úï>ôi2uoó@Œën´Ìæ|ªå±½S”×ú¾ÙÈcâÿ„¯²8ø?!Üd;eìóšu)J°e–ôyàÚ0»-3Ž5SÍT½Ä]2/˜Ê”Pá¬Y¦qrÂ9õ|P		*6rüÅ|îz0Ž8º@7†ãçkÀäážÉa~t¥©6à°(`<dEð¢Á#Û(OAvµ4¼ô0ÁU­±eƒÀ“Pê#Øj?ƒøôü(fq8S`€è	1ÔÃAmÔLÃÏžZE(¸š=³ÀbE43˜#Oÿ"À-äEÓuÏ’P«$FRÆ€&ÕT¡Dó9$ê kT3']hzp™î#Ïì}í¼“Õù´-–Ôå”ó^‚ÿ55ƒ
Ù6”CÖ!¨#¡ˆ «y€SF¥^YrÞØ~vž†+YÈ2hâžeP/ZÔJsR–¶Lm™áÂI2ŸÒÎå«¼P˜°*„ÙØ¸<åÐC+Wz4YJ¡VŸ%!–é¹`œ3AûtÃ¼^x÷¤ç:õ–G»¤	ØèµØˆîôÜ ¿&ÂFf§&ï&Èëe¤ë9²®L«æ¦ÐU—Á¾{®ß=×Çî¹–®ò-ëÂV¸¬/[
u3Nm)šU½Û
‹¾ë¹¹¥6âïV†9¾åËöëzÀ¥6ë
—ÏŒõ}âR›tŽ+ÈÜº^rE›p—KQ­æ7W»¬]}¶/ëI—ÏºM¹Ô•1­ç[WF³Ž“]a<Öö¶—ÚC“öt7³•¦Ì_ÎÝ½QqóKœzfßþ±<ó[^ø&ï[J¾ö–’¬ÑÎ:í·Ä"ûYb‘]
æ€¯Òsj‰}é½9!¥ˆ/<F[aK[¬½%6{˜­d¯êÐ¢¥VˆZ²íØµˆðHpgr«¸¥_3Ðô|bXÆhrK{ýŒìS~t{î¡ŒÜþþó8õŽ>‡åŽu›UŒ›¿b›ã Ä°Åì½1µÍAzä-;)žDˆ¿Þ•fp)Ü)%¤:èAŠ“cüû'zšâþMK_Äg,~ŽR!tªüÍŽ„£kìœÍYÙ Ù¤?@¸í‚Ý‡~Ð‰uþNÝ€§Ufv@{éò´¿˜lÖñ'|·	yCŠyuØq_ôn·þÜ„ ºÐ~·ûÝþã¿a¦Û@’T§ù­°ÒÒý”±\M3BŸ–x¸}êŽ)¶¨=á[Þ¡æ„Ðë„«€»Ÿê»³ú®Ivß½Þí¾ÞB÷Ÿ¾¼éˆ°egJ¿Ù@Ö0jÛ|ùœŽÓÕLüî€øSóùÔÍÝÛæýxjÅLá—Cp/ˆàE{¬üÈpT¯ ‘Ö‡T•Ê{IR_q.„ýúË&šØ]V"÷6¬•jTê'­—ÙEè!G}šRI³DF}˜3xgÖiB¾áÞÄqrÇ~ÂÓùÆ¦›v?·’À"@tªçÃñè4v°Å[["z¹²8w©¿6ÀÉºÁ	›­»wØNˆ¬¤é¦´òšYT›ú	“÷£Ãö@{¹`©Èfá‘1í-kBVT·±ÎKÝÑQtÆH²¯¨$GäsüŽÛGñUþi1áBnŸþ.ú¾ÊE8‘ŽVâ$òB.Ê)ä=4?èb±J¯LLèVè­)v Tæeø™ª®Œ<†UÒâ¥|äÞNEÕ^AÀQ‰ë‘Ó´¬º/EÀ°J ˜sæOÖIÑ¥J›µ¥Ù‰ÜÃÑrÚ¢ÀÖlê(P5‹µj#f’•y—Ñ÷ìÅÃd/ÀZ}Ff„·f
ã$ÃÅÅÔ…ð´ÄEÁT“%óU>P#7õÎhŠŒ¤á= ^ÉR
MÄ™Ó_9§Y¢|TÂ Ðgñ[>45ØUc¶85µ<â_Ó)¡uñM´Û?Sgäœ­“®À¯¿“ïºc93AiÝ‚Bvéºx‡ö¦TÑ.‡ðD`©âé4.j;ØŽ*,8 (¿¦zÉÐ.Ö7ýWÝ¦‚ˆÄóu R$ïœ5Q··$‘óA#N,ºÝGæÊ'ô/. ø[GrQ<8ÙXF‡ùpb
Â#r”¾´MA²îšÇ´Ôñ£b&o[‡cóöø8®øêˆý‰ÞÈÕ™‹Û¼K}!™F`èS˜órQý%ZðåRVú¾«èçJ«1êhz»ßÔ:ºÖî*ý‘Fë²™È!<aOl‰²'2¹ö„2PHÿcüÉ­›˜L gð5&æ§¦óW¡,e/~üŠf”Ùå/ÛôêÉÂëºx²Bž@´L_¼Ö›„`:.o\b’+^ã©ÇRëBÿ0Í¾©säùJ^ZÐ7¶,·ˆµ¶¢_R‘ç;¹²†íÇß@×¯îFþghú‘ã­*Ç4¯KWÞH<2Oâ¥ÐÕ¯¢òŸ}Wù§òIRßoXzØ€öƒ²k×ôÀ‚~> Á0æô˜ªnPÍ,ßæzÛ±ÛÀ5t— ³lü4Ù!ÿúv®­»º¹˜Í	P31Ax—m*A buÂOj€>BìÐÛQy²Kù¿°Á1©§mÏ˜Ó@»éYs.TvÎ¥ÊF‹çÓ°Û>½ÑÞ$í·l(õüãªí“¹çŽ-ß·ÌÃÈQV?P%/æ&‚O³“Èì<LRê·r¦²¯‹X´_›`È¿9årúWÓ	èaÏ³é_ìR(ó5÷Â
òc®èÐ2»`|ŸÔu¼‰ ¿& á|Kxt­?L lCÌŒ¶8ä§Q)v=3sÄêLrJmvB†„›8ð-¼„Eµ{Zm'Z·ñ^ÀœÐ²‹Ø$b"KÏ ˆ’ŠìëÑï’X-‚À¼
àAñ`kÿpBˆ™ƒåð´y'#aŸAU±‘Åû9´sÐòz«ÝQz}Úˆ&¼ÊDx
ï.9º;úé4•aB‹G·—H:—ß"ð	½ö­çi)7¼¡¸Có]Üß«=‰
3™p„uéjÏ2ž¡rùþñòâø$¾¹Tfâšæ‰½ÞõqTAp^ï
šŒ>ÿó.Dp¥H®¿Å
i‚ám’fy­‡ê6ú3rL:¨ú€(…W'ù¯žÉ¯Ä~åðåø ïÍIî›g|	À¬Õd}"QäC
%Ç/áÿD‚Ï‡8DÇÔa–È%Xðùªeþ¶8öÐ°c.Óñ,oÊ”+ÓƒÛ[·×68 5^ø†«\&&×M]ÞV¨†Qõ…J™Þ	ÄÅ´Îõ÷yûÑ”ŽÒU4õ“~Öé7êZ_W•Æùù5÷yMR°"PFvÚ-I8ëì–¸óØÝ4u{1ì}6‰¶¶wx#Ê¤®ˆûó+Ö‹”ïGý>jTi{\©œ€­ÅÐZEW¬æ÷^i÷Þ7:|û´¥^^²;¢YSâÉ@ $ˆBT †IŒÓ_2•ßátîÆí™¶â/ü¹ÁÒ2;UæV\´²û3‚ˆÄæÔóoÛ:ü`¯ÝÐÑgÚ›a¤/YË_‚D/Cã@ß.g$0T¡»Ò+qˆ‘¼X5Öö5æàì%¦fö¶Ö1ÍúO‚ª6p	Óª|Î‘É±ð;š\AfiH*™ï((Å­˜"èÁeoUaŽ.•!°Qð/1Œó,çY…-÷`¦áëÄ=ÍÈ¥ÑÏ1AÖ'd"ï¼jôéìƒÃ~ü2vØ«D™¡Dõa£!ÁC{ÿß’ï¾½9îà¤¿ZÒI™oÍ9_Â%ÿî÷¿¿¤ÿtµ±›ýè}êïþôwú»?Mýi*Y	ªèŽcôä@ÌØ ]e¤äÖ³«61cN«CÕ=ò†k­xækòë“–ªØä‹0­Q¯©µû=º“^Sò<	º!Ÿ;÷k»ñr‹	Z)¬‰ñ>,ç½Óñ™Tcöõj¿×ùDþ?›`o4^—NÑãÓÛêh¨Âkøõ!ú¥^¨^ýRûÚ»o.6à­‰k®ÐA‰ÕèNùÓàˆ×¨Ô©ÐU&!,;ˆú„O_5ÓÏwqÂÄ¯…½ã›6ã6wÜw*¦T#;VŽ–LCõ]"GõßJóÝ¿þ"ùí+œ	ðˆ}*›Éq,îéž÷·¿ûÛ•üí•Ú¯åÕ_ç˜4ûÌ0½,óŸî•ÆECSêƒÎè¢Ý#üRyŸõ§G|ØVI¹’ú«´©ëIäãõ«Â‘ÐûÁwÍp³*ˆï²Îº¬¿WÔ!zÑÝÆõÕ’*í^_ØpÄÎ(à…|>@…~sPP!qÊÏ¿£ W%Ì
Ù 5s¹UT'Ÿ]Åù?öhë¼«xœµUQ£6~ÞüŠiî¡ÉjIîö¥U·ªÊv‰È]Wª„0ÁªÁÈ6Ù‹t?¾c Ùd“½Þ=)Ø3ß7óÍØ3½†h9ûËòYJ+E-/£•f9£ò7xXúÖíä½%¤Å‰¦®§ƒéõ ®a& XÄPŠŒå;$-Å–‚.˜‚TÔ;É6…ReÀ;`ô2ŽÎao”Žáöý‡_,üû"J6H1M‹Jp±Ùï;`ŠèL+°óœq†6êlÎ!4(
Bª¨ÜÒ¬Ç¿þßžž 6ÖRl$)_sI)(‘ëg"éìD)©PŒ)-ÙºÁ¤˜î1 ½f¸ÖTjª”ÊRÈÛ‡`´¢’pX6kÔüƒ†@Ý,ª‚f°Þµ÷&†¨îÍDu”á¾„-•
¿áÖ ô4=æ©Þˆh¹Q¿1†»ƒ®ä½ëäô_²Ì€U-p!jÓ‰9>3,ÕšB£hÞðÆðÙ‹«ìà	>ÛahñÓëBà.ÝÒŠ•5gˆŒyIRiì´Ü ÌÝÐyDû£ç{ñ“ÉàÞ‹7Šà~‚K;Œ=gåÛ!,Wár¹À3aµ"¾-1äV
”1£š0®ö‰ÿÝ‡…îÚÔª¶%íúZ2šwº´&ÍYEUÞT©Tµ'¡$©¸!ðíŠ:0ž±jœ•r¶Ç‡š7‹µªƒùØjƒgrF×d-‰&ð‘È¬ÀVû=Û/MÖÝÒŸ=Ì$åsjïL³åàÌg‰8É½ç»ƒw]¨'‹-3«Ô´‡˜gŒ0,‡Ÿ:·l¹öƒ»IðiîŽáëWØoÀG×ž¹a2_ù±—„ø1>ðûÈ*åMFa˜–Ù¤Kõà£Àž»£aÏ?¼áþŽÀîÈ°Jª¦)^T)Ð/KgdF+š|rÃÈ[ã›Á•³˜Ïí`–ø^WWn‡O£áVYš–5v€n$µ”&Úx¿<Ãbcc'®¦#{0öØù,Upâ­UÒÂOØðJ³j²Aª¦~år‘-jêZHs¬üÞSWaw–íÑîi5i÷„­OUI¤¶H–î3ÊsÆVÆŒfV4Çãs¬}¶He€=å«SvIÈ7ù–Ž‡¤RšR¾)§á3ÀIkøŠ4å”ÈŽ7RÒT“5§VkÚ1tŒÅ0žQ¶¤)—ñ²	â¸¬ª­B(­Äé÷%ýhÌ½Ši3É2wœ–h³;œàW„©–üQi)8§ò[´†Ð ¿&Ä²²
Ç@EøÅ.úqBkV|ëÚË@¢Ü{–®Â{ô—(òg‹àUº5W^µZÈÝQ0/Q´ãÉ²„vça:øñÌÇ<JI<NöàI~C×kß£ïµï'ïŸør‡2t—²ÕÏâ8Ã¨ÏêPƒÎþguüìòaÞÏ›¤sHzóÉ‹ï…hf½IÏ¿p–?ƒ)€Hë3þ«ñ`|‡³/$–ˆn‚$ý¤øÒbQ°°êxœÍZmsÚHþ¿bŽ±H	Œ½Ü–½›*Öà„ZlR€“ÛÊn©ÆÒT’N#aû®üß¯{^ô†À8›Í«b£žéžžžžîç9>&óÃv'žÍÎºc‡‰çz,>#ï>Lº§½~7Œ»>MXÜ|á¶Ÿ:ŒüäÚAâ÷Vo"ÇAXñÄñ¶E¾w[–¥â²Ì’ä!b¥¹¸e‡ëuôV­‚,Ø¬YY+l#?]zAubÞ«…ª6»Q^ ¼ùÂa®0r1#ëâjX˜ËW4Â «—l¢=P ,H×ä?ÍÆ‡ÙôÝlpe]Æëâza6£Ù`>*
>³Éèãh2¾~g]Loä¬Ó‘5šÍÔ”‹ÙEái1¾YŸ¦³_'ÓÁÐºÇ˜êØûé|aãÃ¹I¶ñ	tˆy?š]&ÖâýlºXLF(ÆŸfc6ZÌ~³~¹¹¼Í¬éÇÑìr2ýd6@çÃdbM¦¿Â¯ù$4t=¸ZŸfãÅËë‡9Æ61ÕÛ‡Öüj0[X0ájn6©ã$^Pßâk'–—°5?‡3ˆbº\SQû‹¥|ežtš<‰S;!zKƒRóÃ¥PÅ°¬ôGp-æ›“Ï¯ÿ8ÏA¯Ï‹Ã§ðÙ¨¥ähÄÚPÿóÔl¨ï-Ÿm˜/¦Â\Ÿ¼i¬½à¼øHï‹t³ÄÇÇ¢vÁf²bñö¬â0I|¦-ƒ<QvÒ×§;LƒDªª€ô1ß‘3¾9o‚¤¼0ê4÷‡—> ¶âl>WÎÃDÐB6,p,1[zBÐX˜&žM6¡ç¾
ï¶û}{%>BòÀYqo0‡ÀE%ðÙ1‰<!öŠÆä•Ã6]³Nv#.³k´ŽãÉü"s4C&`ÑcrýñjD@
áY›Tä.Öõœ³öýïATM±Xç<7û…=ý?˜lÔ÷þÞB6¥,Dq¸ŒéÚr©ç[â„Ëêg¤ýÚi·ÕS»õa6NßüÐR~‰ˆtßÊó¨Ö›?z¸6Nƒ¥~øÑJBc QÞ¯¤¿St“Å”³N>ËÍr<ÈÉªJ­‹ùåò‚eÍA”]„‚Ô$pWå¸¥ø¡Îåí*»7½¶£ÔxR)÷±tþ”>½ÿSú°Ýò	Ã•3øZz[K˜WFžøsN8ï_‡oq~íÙÚ±­¼ªÍ¾ç¤_¡ä\i~­s‰·fŽuÆ_ü:<xÔÂH×;×{í¶Ûužíjí¹›†áÂIg»»ä¾“crÒ?ýaÏV!O vS‡ïð!ÉqÈAñÞ­|Hðñ1&…ŸŽãýÚu’¾Âk¥Wïp¥u[ØS¾Ãá‹4^,æ	ÅÊÔn›d±¸W±¶LU\îùÓª>õxò5Zân÷³$~°nS×e±nXé{W¸ÂÏ¸¶µPô £Ù¡Y{8‘ïƒûüâ¼¦Ö<§òa­¸¬Që`@¡>ß>$Œ[w±—$,ØW9ð0ægû=ÍaûAn§×ú(ŠÇ7ö1gùXœ^ë#GÌUè(ÆwÉÅ2*ûöØÌ02ÂÚ%K,šÖHÆA/mS¡ÝWð°1‰ÂÎÈ”!GÈ+{ídBÉÉ+ùWàâýP;û!Ó˜šÛägÒzÇ2—óÌ@ßsÁíÜ]i€ )#Œ¤Ì0IëwˆŒpÁ7”­ø8ÃÞ@cd	À5z-ô¢€ï³yèPf¿(ž{qÑNU1¦w¨â¤ëˆ„i¥	„šÜz¬i‚*ÅØ ò„"ƒA×[j¦øú4_Îò¤g·aèkYÒ²"gxnqÀ„*–lw	^¡½^ÑÈ›X×óñÐL&¦0ÓlL?,¬ÁìÝ7Î;J…7ãëVˆœÀ´Lr™ä%,Q²m’b°•þådðj6½ëJ¿A›£[­Ÿoå¸¿Lst=4:Ê=Ø"øÑø«0bñ"hª¬•éŠùd±ŒKPèiÈH)câ ð> ûw ÌY®ƒ U\ês fý{›šdk§ÈŸøWèYZƒÖËüA9ð7ô@DS<•÷Œ®5vÐÖÜÔ®õUÎ#Ïì¾Ü…ß8ìX°Žad¬V&k§hvkhà±)L=ò–ôÑMu§ÑU-Dda:Í†ÆÆDÜ@Põã¾âã2°³oTzÊT]–•`MÈ ™	²7HRÂbNBWT	Q9Zy­ #Iú>‹{dZ§GcF–q˜F0Y*£ož~ÏéÛr)÷Eò·Ÿüœ0j¯²©™‹u©€_#PÁÖ!Ì¢I{·)t<ð•&À)Ðû—nÙŠn<˜®v£Ú#£âb+Šú1c$øáÝúÙ¶Y‚Ûƒ&é0—¦~á¥Fa†¬”vÇàbŒ]B3{×úÙdO:wËÀq'‹Øïf.åòm…¶€Ñ”å¾›—{X8ÅIKa¿Gn ÖH*rRæ¶ö‘÷~G.¦6ÔóÅ`¡‘hCžs¦çõïû§gÝ„¢ðŽ.Ùb ³ê«¾ì&òÚ¢_Û`dnyùùÃ>Ùf”ÏJyÅî©![vƒªU-Î|œþ¹ß}ýÇ™8ÑÞ±:îc›sÌÓ(Új†M(Pú u%Ò&ødx.4DÃ,9U]Û¹;9”Cà36e¸åPÒR@`3Õ§ªÊ«‚.H¢8³­g#O6VñJð8-ïf2‘o2¡³B~Àî÷õÎÝ]X¼…+© s<ühÎÕ›^D þyfF„$ÔÑÝÑ×•¬ŠsÕ	íò'Ø#z…¤! ì!æDö£…òÔ*Â,ráW …Ýp¡ß¬ñK#ÊueŒ¸ÚH¾)1Pfâ—ß#ÀãÌ—ºêçˆk0RÀÓª,[ïÂÖµ#_ëê húy?äÙyJ G..£àú‘­uÅHÁuñ\YY$NW'NË<z¯µË)eVRì/G^r@Å€Å?$0râ‰Ó Ï{´	HÙ#˜ÅâHvà³¶ƒ¼‰(}v¶Ð‡^o4¾þ8˜H8“¯B¢Ô/œçT‰¥¢ ‹µÕûõÃ×+&Jÿ {÷Öšá»û%„ª“‰°(‚6ƒ`ÌèÈíešAñÅÍöÂvï%Æèzz5ºX¹¦¡QÂn¿bK8W.—ˆÈ²B‰ ~©Š‚Ÿ-t«ñ³†Š(êÈÊâ4@\„ÌBê	qå–ŠòÄó¡*”ÅãÔcx3³z¤…2ëQœ¦žsârRó²«©Çp&Ÿñ-ð³†b@ÃÑåàf²°ÆÓ‹ÅD¼\›Þ,ÄDÙ Põ¥ü(Ë^•7èÀ/ET*xÿ<ôÁš~7°ÌñËYÿ¾Ý?½'FbIÚ\‚¢3Ò~Ñÿñ>Kñrü ×Â$–—F%¯såå©L…Nµ@‘5:Y+¥ Y]Q@ +¾ÃjVQÂHgD~ßˆÖQ*ŸvR Èo™³åúzòþÉdÏh&6[Óå¼Gq^ ¨ô\85ò*£ÅÊ xÙPÛÙMhø÷&4W¯äyJeXYãb‰Ü÷rŸz®#õw0žÝ\§Êhx/Ò4ƒØ4@Š@£ÈGm ñèjdrŸÄZÔ÷	å<´=š¡17q×` |àD  î”lŠ°¤ zç%«­]×rÄª%²¶‹¤ ãA¢R`==iéÊ²LWðk¯xÿëãnååÆex‡q"#*M”]•ÁˆóC?.°£¿žêT‰Ëó©J‰¢C÷ÖÎa´c	gwSð­Z§‰Zú½q=I²¥ÅCq‚ÿ›(ØZ_dš	 £äÜma·ßx.‚«¨7	Š±WN‘¯0¡Å\Éø}Kq×ÅxÍÃñµu9ž@kÿËØ:'OðŠ\GJ·¸ÈDdöÑÜã“„EœPÎ8Z-³†ÆôwÓy>O3€òòÌoøÒóp³‹ÂÔ©/¶˜ó€£Ö™\<íç/»èË6yÄ“ÚEþádŽ{~¾®Ð®ŒuQ3§\0Ëñé;ñïý¿-ö˜iËQl£Øw –„64·¬<Eô¿­ÖþÖQí± Ïà%‡p©aØÐÑQ OV0qdy²L­Ùpz=ùMº€Ú8í'¸‡ní1¡~Çë;ìy¢LDq¸ä‘oNåI{øY†Ðh¸€ ž‡¸—5‰!+g§?j¤øSæÜv¢@“•ðÊ¶¢z•‡k †øz9»åkÉÕÇm^ÆÿOxY‰„Éš£Å§9	Ã»œÑ7¼å5DUþþ¿çm|'o+z$¾ÄÅHŠ“GY<¸Çý„¯ {V {’ëí¥z2½üPÀ5ÍxŠ$æ	Rõ,rÔÄMŸ}GR_lyŽeCÑøFäH­gef‹½AèÊÉ¦ Gê{ðæ´†kÅ¾+xœ…‘Mo‚@†Ïî¯˜âEŒ«Mí‰(UX iOÂ¸	.VÛƒ?¾‹¢bÒÄ½ìÇÌ<ïì¼“!D«ÙõeŠªFê	TZf«w˜¯|ú6~¥eE‹DcÃ	é”À¦ÁŒ{lÊ?=ß%}ó"><Â¾8äRÕ“z›(UªëNÕq‡„ôe/—21ˆcKÆÙ&pm8àh€×™¹!Ö~ìñÐ\ì›^·®Aª´8+Ý‰ñÖ"då¯ç0'pV«oÀŠ.G8¢eõSóãðW›ÈRÕ&«òFÞ’Ù#Ò›.ƒÀa3î{Q< ½žËâðÛ`wI¥iQæ4¢‡¨+‰GÓ]«Nƒ_æ#¨·åHmÒrÔÜHmÔ’‚Ÿ)ÜPì5mS’‚f˜èC…çöQÃ½ö¦sÏ¨ám ƒÎïhõÈž?cçÏØRÐTWÅ¿£h Ew­-\
ÞD4Ë&ö‡ñÔ8$³®·ëykñøÁâÒºxœ…Ë1Â0@Ñ=§È¤œ€“ †Ôµ,'A¶3ôö•XÈö‡÷­´x¹ÇGˆ1½e7»YÞ˜ê7òp–Òõ¿²ZÔçŒŠ®…0CApîmþHql°g×/n4?+ºîú6Öõ”~A:‡à5^7¹¯xœ­YmS9þlÿ
­SÛkÖ$\–Ô9`(ßCaHí^6¥3[ËXššÑsWü÷ëÖ¼i<váÜâ‘Ôê×§[-åà€Lo/~ëŽ…ÃeÄ»#—K-<ÁÃru;îö{‡]v}¦yX?h×I›œ«à%³¹&M§Eú‡ý>™*_¸b¶èÁ:’b=WÀÁçJ²ÐU=—õœXÎÙß¢ŒÒQ <¨×ß	éø±ËÉ¯ž#µß›¶¦xJUžŠ´+ªS¾x,ÏÅRÀ4Î“ºP²7oXsr¹àåàUüx&ä:¡ŒWú%àQ•g7…Ô8o-dæw£uyS¾ká›}‘cGB)Ó:±æ”6›sž¸ÛjC™ë
-ÀÏ>5L©¯fTh¾ ÿ®×(?Õj5ážæßô)øÖÿ^Œ¥
Ìÿâ6` .Tr«pàž’‡ìùÛ1r¬¥
oÛBž9©Ï—Ü7Ûa¿Ï9®-„<µ‡leÙr†ÃWk÷²ôœ£]TÏC¥µÏ3 pàè”|Ô¯9*–:°¾f_‰å•¼‚q—{$Uá0”‡dÕßÁn!9ùú@§×ƒ»{z;¸ÒéèŸCòñ—~uùzðÝ¯§›v¢§¼æº Öº¢Ë¸Ðý±¾àÏ·ªÔïh¶½Ùi¦…Cœ9I[¸T+*Ù‚7Ñ[D¸­:JxÚ™“&Q Ã"NW‡'àïë8”ˆ{OSî8’]…4„RÓ8-h?Ú´!÷•Ã4{ô9¸£ÞÄÏÚ0øboB5Ù‚zLøUÒs›”‡0»…°¤pC!gUÚ¡MK¾
@QîÒ@=sØ§¢È¢þò©¤BŸ§^p¹†]æç±É0sÚ:Ý°oÓ-¸+5j<„B¯ÙÌöñðÈ¦ž«HÓ3×ÖsøÁ&ÑXÒg>=ÌµéÖÂÅ\ŠE—I7¢BRÏÇƒ#Q—‡ö¾ã’‡C@âŽ%ÅÖ2˜"HcÛËÃ²‚:|¡±çAhÔ’‡ž¯ž7H¹,y(ð}°Ûy2ÁÜD]r–èã‹æE»4—6éÇŠë·’WH’W:	mq;—%¨@Ü=,ôÒÉ|^uä’*iþ©Š›D¥MøW›-!kLRzÏÔUÏrÎå%·6B,ð}AÝ¬@øòKeG‹­[Jù¼‚¼X ›ìblcÒ_×É„\*8]
J¨­,öu9áŸ$8 W_ë¯y•\*á®Ÿ¦A¨Tm¨¥ðkª§ðHó'u?§4c˜×k†×lì½[øÛë~øÁÏ‘K²¿Föd:ÄªÒ9ÛI>‹> Å½¨Ü¶øR9Ì¤Ãé}Böâs;ù€?þF|Oq”ëqÊ®¨ =ØÝÚŠ­v ¹­Ö©í¥R‘ÈÝïíu4›¶’	³õúÑƒ^!•{Ô/Ë­T¬É· ’KoÜÞâã”L`îÃ'dì+9K9C?eØ¼…h9èŸ‘’[ ÔÉŽ}¤¡êñO8PHÛåKS ¢ä|Þ@ÇÔDCCÎ’%r2/¡h|¼…M‹¥QtÉü˜S¼Å¿Õ1‡]ã¿Fâ®² k äM8šîÌ“­Þä	àý!ž€ã·xæP„Ð<­#}WAV79SüòIqDõ$c23¬„ÙU ¤Ë›‰´…Y
è<'¶UHK ð[ËÊRcÍ¡0IYî—I;`/Ø+uH,#1“ÜE•	|Ãœã‘N;iPÅoMÏ\Ù­ÉYíëM= úT°
Æ§›ù‡Jaw_ƒvrT°ñð~~Ýp!ùŸNÒ[uÚ7·
ñ½CŠÚ“	”µÝŒÍ1¡ínâV~öò@Œ^¤7ŒãÂ­<R!)¾'F³FYË”©Ýå]“‡ñ8à…¼Ätü¯ø0§RrÈ›Wt¡¥ã«9;B h"ù–Lq3Ã%A0ùzÍÑ)à£“½ˆ ð®Ù¼+Ü“½yx]ÀçêdÏMÏÒLÃTyK³ÓBÜè‚ØÿþNÞú›äç‚Þ±gØú`5éÄ2 æg/rÌ^eèŒë—|#—…3§“¨ƒe~ø¦—Òvn>™<&AÌÍ¯	X9Ä‘†4®¸ÎŸÖÈ’KÌŒà6)<€•Q Oš*H”ò_ ÍÔ3\4Ð-Pt³=à·<xPÔP+D"þži{%›KŸát ´kà-¾Sx	—ñ"yI²ÇóÙ,"æß¢ò˜uÀ‹5L£t¸Ñ¦o.tL#yTzb–½?õk¹QÔ¼sÕÐ‰µ¶ŠuƒX¾ï¼VY8ÞLBF=›Gí1?¤“éè‚ÆcÄt¯Ä(ÒÆo8ßÜÞÓÁÝÕƒµR¶8ù0šÜ7vÖ@!ä½|ß!û AI4®4òx¶ í"Úqk˜6ù^^ÛD«n¢UÂWe|KÃRiœ³N.š­Ôð¼©aÄ)^ZUÀ¡|Cd:)Àd#<;ÄØyš4‚°±UÜL !)MÀÏ”\ášÒn+Ð¬¨˜1K÷‘îp4ù:'ë¥…#Ò.ðœ¤aœšEäý^ôÞ4ÖÙci¢ÜÚ9žùV«žãO¥u })ÿöÅbÊ¢Œe¤Â< OEÄü“Ì¦ÁRÈ#èq`ˆ‡ˆ™Á4>#û•<2‹È†âª“<õá”	aÏÃ¬D³<×(d&ñ}Œ')/†—ƒ‡ñ=ÝœßéýèzxópŸÈ5I½-ß.¹yXèÉ¦¬q"‘ÍŸOG>žÅôøæŠŽqéf2L×‚òÚm±†ÎÇ AHüÉÐ5ó#žäª¶†²K!jî'¦ û	!l"U@pŸü}z3Ifk[º¼Í!ËfRMp\qÒö¤öJ8¨Il¡_F“ÁÝï©X—BÛlæ=Ar@´6ˆÝ"[Ðf[6™QU=3,·`ýlÇFÛ2þ™&–×¿%ÏO¦f¤	wÐ&wÜ¥Ë ü'éÙ"Z‘{JÚ2|fV.‡#‹ù/‘ˆÈœÁþ÷Q-ÏæîgJ¥£!#Zæ"±–évq¡ÿc1Õ±æbyxœ¥T[OA>ZT”[>KÀZä&ÂEBjJQ
DE2,»Ó2d»ÛÌîVªic|×Lâ‹êƒ‰¿ÁÿƒÏòà¯ðÅ83»m¡à%±iÒí7ç|sÎœoöÇ×]/¿7÷CÕÃ-bØv!‡­W‡/Ø³º–æŒBw•Žª¦®cÕ&¦ÁŠuÐ 0NKžé)eTDlœ…§~B:›d1Eskã²fÙJ6óÁ£ ;æ÷÷òFÄÀ°¹–ÑÊü}__ZIÁÈð°¿¼eSGµÁSƒTÓ°©©#©ª$e!ÝÌ”ŒL@SKT³Ê¾Ic'ËÄåŠ?[5¶%Ñ™Š-LóXÛœÝ–ªJvªR*J¤1îÖ&*äM¢AÞA|/±bí™Ñ¾e¡SÝi9¥ ›
{Þt½‡³1‡lÁ:R)VlŒJ•Bˆ}i¾;ª=dp0,N¤Æ$§»mµè¬4M„Mö³±“uŸí¨ó±Ã6wÞ7`%³`DˆÈ6‘šsB‚7TY‡EVòhnü’76z‚ç®J¢Oš‘.¢i(¯èFæî>?ŠPÕuÄCA0Š~¿KÊQ>®5Ðk›ÜH$TÂÒŸlÈ†›ÚWDòÏihàËuO¡0 á¼¡dq„ñ±/%)*
¦Lh$“…e·1,VB‚ÏjÚ¤Ü\YÞ¨xºÏ‚øí(Ñ¦û´G?ºjop?ŽC4DsåÖËAH#ˆ¿Öùù²ÏÍ=¥ÿŠÊ}Ñ‘± Ü]‹;ü"Á“÷‡‰¨Æ>÷»Ü‹~ž#o–wP(ƒmTM¡ò¾™mQ}Š¡qÔÂì]Kg·‚*pžÇ
<¨¡ sZãìkë8·M±OmïÙÃÖ.¶Óþ±~)žÜœO°s›÷þ¶;\¦›õ1Õ»Ì/ö¤µ[$êÝ*{ W+ 1C:68Ð"O°™y¨¹KßâÉùµa{ÓqeÝ­GŽÃÜ+R¬[HBi]ÉXÐwR«I7Ißiï–~o—\G`æPy]ÎXtVNYÍtñ€Ä—¥:?üµOÀ½üxœÅZësÛ6ÿ,ý3vHG’%ÙqS;ñb+9]e;c)i{m†C“ Å†"5éGÓüï·‹	RÔ#¹›;}°E`±Xìã·» ö÷Éäýù/íqàÒˆÑöÈ£QøMŽÉ»÷ãv¿ÓmÇI;tRš4÷÷šdœÅ‹Ç$¸¥Ät-Òïöûd‡ÜÎ;0$ƒ,ÅÀ!¤qä$^ÜñœŽ›E3çïLQºñ(÷›Í§Aä†™GÉ+š$QÜ™jC,õ‚å¡0¸)eQ Ãå± JÓÇe8Z°ï<Ž:3C‹îæ´<;,.Âì6ˆª„Qö°/7ªòl/¢<®ÐÎÒ Ä©æSúADÉ›g?§öx4™Ú“Ñ¿†ö¡Ý%½ýu=Òë÷Ž4ƒÉÐ¾\¾ÚoFÓ	gq°f¶G`1K“ÌM	Ú8rm–:)¨3pùÒlØvÖ;"w4aAÙsç89Y"5zÐ'ž“:¿ÕÉúIV:·Ô–[ž4¿žäb¸qä·¸õM‡„FÎMHOä“0ý1¡Ž§¾ß'AŠYÄ‚ÛˆzÄ9	AËÀ ÿ¾gé"Km?NæNZÚT=M÷3Mpw°ñ=!òK’eg‘G`¤,©ëßÂ²9A£ÛÜè¶:·Œhß‹u5ŠÆ¯Å´ßüAáûÞM"¥v¤¹Žµ1›R%æÃ¨8èö&à¹nf³+:·!ÆCO(a‚újlÿ<:ŸþO•&qÈÈ}à¥3û0fóˆ‘ "—W×ƒ1Šì`ü*ß*ô–=vðf8¶/¿pW ½ná°&öèÒžÀÿTÆ/ÄDS"ÏÐ»¥òèŒÌG8×%ü¸ä·§¬úŠÉâ9Åò¬DÓ´0>ëpðáã.¹‹Ü‚>Ó ì`šunhh
·áß[Dh~¸IÌ(hÉc­f£Ñ ðáJ¾!êYÍ/ÊÝÀ˜AtK^#cÆ‰ð(/¸XœÀ`ß|b>‘Ñé,â.ã›rÓZ¶ˆ±Ãøû|tùÖ°€u#¡i–Dðí«äªËIN•žå&¹`\®F!”$C>„†Œ’•¬.–xÍë™]L¤T[í°Ó÷ùùˆé‡±“Z%¥“}¥DT?ûƒ¾6Kæ¬D´-#fá$ŒšÀˆ¥dEìï…)zRJ6¦ã{`”1å
Ùb!Ÿ¹ýÅãMœ•Ýà&ó}šüV{ÚO¨7£Õ 0Òƒ¾Æ¶»ÈÌ0mŸrŒèpt¼O–rœÒ!çõk¥h_*ÝØiïy Ó<NáŒgÒ¨ó|!uK;3(‹rWÓ²2C±h3ÓBqemÏ]?ÔïQ•.×¢¥Džþ9¹º^øf„Œ’RFÉ… `Ef¹ïœ0£ÌÐÁ¹CÞr8!;rªcÎF1¯ÒŒŽ<miC`â„Ó	¯Ö§häÕOðqª›~ßöEx®H(àa|ÔåG–“¦P¯Fn;Iâ<ÚŽçqj‰Giš›­´Âól.$ÌÔD-~Þïö¹zöBÅB}ÿ?ÜnG´Jy¿-!,Vã¨ Œc¨>¢N²ÂJÐÅ5cÇ¾ÏP1²«‘íÍ#D€½@IœcpnºPTì¢8ú“&±(v8ØAb%&‡Mð,Sß;çi‘6f>àWš:Í		ž?q‰[ÚŠìî’*~ÂXîZÈ‹¨È±j¬Í ã[êh58Ñ?Å¬ç¤gÉ%û!'t³Ã†Œ,ô7ÂÂðá£å>úÇ<Gä°Ó…Â2”Î¢QVÇó­’:fýŒm›¸¸A¤5±"ÃŠƒ¼zE¸ö–ËDT4ZÄÌé¶gYyiAžp€;´iqÂ×¡¡rzZÇSWà”ÚßÔ–?¯](}†ÙÉ€ÛKQ8¿çÄ4?Ãßnç……âÜæ–(	¤‰rXgÙMÇ)‰ê~Ú aæNAÓ‹Ô_š¶A¿ÜÍp+¼ÅŽGÞpÜÞÀ>Äh5Kœ/Û_Ôñ‚;ÍeÛ"´É·}ê’ îÄÝ¤nRiiuŠ¨‡9Ik[šþZJíhÛµÀ*éZRÍ-î Ð`u¸²Éßr­K¥['Ev_Ùå,©ß8_;:Ô6®p@èÑár!V¡³*¬WL±‹tq@-©n.dE8°»ý„›wmAÀ8l‘ÞAÿ?è·ˆï@ÙgÙ¸°‡äý/‹nÿð[÷_Á~?ü(÷ýáèå·¬>xÙÅ?¹Ô
–·X‰+^þð=+AÄƒ{Õ•[™ëp[sñ,š_a¨tÚ…”à\ñÑùkÉÓ‡¬°X›Ix®à•.S•ÐvËx.äÕÎ696/çj¬*Àdiž…êNŠ	Åª-”DYï9lf3
{;iœ˜\ªOhóºŠ-Œ›PyÖfÝØ¨-ºK%£+²ÃÈY<‡Ôä‘±¼Ê˜"gLX“âN±’ìðF¹„™?ç˜yÍUŽª¸°Ôu}ø0:oÞÃ±dÇ)‹»¯íÞ’kYÉÀŠì÷èo+cR(Ú;ZÑÒ½¢…P»–
¹[Âi·Ãü\Ø QjÉòþz„—‘†8èÖ (ß¨w¹rÛë3ýO¿ËøNÆÑÂ·‰lXŒ!ï#Œ¼3(ØÔmðu‹v¶>*Ë´Ñ{ÑÕ™Ûµ1Kÿ#//äZUˆ¬ëE·(˜hTy!° TŽ\~?¡¥r¥d:û[6d›”RsÎ/w6‡Cý=ûæÅ<JPwì>HÝ1ËlÑ.VÐÇuêÍ!-JY]H‚0ÚçÉóðXgYæÓ×ä¥õEÓÊ …³aVUA¶Q¶åx'˜oTi-€}Í’“œºšp^×¾“Y)]žé+Šñ¨ïdaz¬ãlÄ ÷ÅI
I^õ‚ÄÜÉ:;™%S¦È’íZ¤jäb¼çZº¡,-Õûx0^žýjO¯g?.ßÙoGç¤û@ûk)ìóÁt`‡—P­n[!=Ù³Å«›5ñ¡.öä[OoHø»¼½ñ²„‚Ë$€'ø‡Á8hæFk5^üû¦"±PßkÀÚ×ç÷¹Lgj¬Èm‚8àÔuGçóP˜q~×Öa4,\ï¾×+ó]Ä#ÞTØ!V0ÏõšãR„,>€
q–âÐÇ‹¡}>|;ø0žÚ£«³éØžŽ.†W¦œÔž†k¥FaôëIÞ8/éÔÜÍ•¥;µÝhNíÖAÈq’_äï:LUznä¯¿òbD¾Û³xøJ»•\m¥¼ÒWâB_†K=Ø·eœA_	F.ÂJJRƒ·ÌAF'Í²ð±#A_í<]~ŒÕ«Í%Y½K²Í.Éþ.™{aY[ù\_ó^€à•þŠ´/þî»+¾
÷m6À” Ý%ýK÷eâ	O!pKúY|Ï_µB÷³VùÝÒ¿Rô~}dB5ÆD½=T ü£â`ÄPºïpä~ÿ‚.,Q^%wTWšZ¢È\—2ægaøHÐÃ¤C2Ã™$/×w<f8î>ìüiLv‚Ž*¼Ÿª÷¤Š¿¨:÷k<ˆµüq=œÛã«w6On/Ÿøùz4j3kòd(£0¾ÝXY–aD	‹W@:ðŽg¸Î‡ÿp€ƒè‘@ö-xP†2ÎL2!…UB±å´{ð¡ #\ÄyÌ‰ ZÁ¼äk•Ð†”Ð&Gš ©Å¤dcB{ªá‹j2Kf?ÖÝC,âØ!åË`&·½œ šäy]¨ñ³ÉÈ†/‚W1Œ;Œqêêr(çšpØß–ÎÍaÔ+qšß=ñç8Õ«à£Ü•ãŽ†9š±+nª‡ù.y3º\ÿŠÔÔ¥÷¦YþµÊžU6®,—Ô†;ç€Rß•ˆt9~1’ÔoÄqªyÏ‡TpD·%åÚƒ‡»Éø"oÏ{ú­Žœ¿“"{â¿xÎï¾/2ß{¿<C.ïQÞü'dk/:@´ŽqRŽ%Þ!Ï»ü-º¬|ÊÅÇ
|	ó¤]DÉs +gÁ+ôŸƒ~9Äò×­mzž ÜªÏ´ëZ¥’“^½ŸÚƒëw3^àË!7¾Þ™†PŠÑ"Ïè³BHG+ˆÊxUÝ<@.²tB6žÆFŸsY[mb$^˜g‰ÆÇZÂ-8¢?Ú©®ï `ù½¶œÊõ”ê¼ùu:4ÕË…g©¶žc1Æñ­¸Oƒ,
á¡m}15ámáÈ!Ö8”|¤EJ9›áå¹i•€Eô¾
]ÐÈÜ_nÉàQ‡ìézÄ)|tXoûž	ÿ,9\*5È¾’ä×,º€fÝ!Š·+J¹ÒùPÔ+K%Ñ(â›HÈß\‘g;ì™¼T¬ßª¢»að%¤_}5£a½÷ào$7+ñ¢x%Qò‹Ðï“ J'¦æÆ¢èhÅ@½t¹T`\¼Z‹ Ú»ŸÑâ Mz‡(X8³*L¶Ä(A[	ûï2»˜Ì=F¸åªþo7Ô‹m^l­”„{&£†§Vý}O$_§uíYï6;¥f“¬Ý¬»Züò%Ç.Þfìªky–'x­è¯Qq1úí7£u?5á7žóg5¹¶¸ ]sCZ½"Õ[©åóÉjGö4YŠùßÔeÑÚ"É)•=´ÌŸW¦Öó´ò¦Ç"#n–$4J!x´ö§äÿ«šŸ’L¥n­¦ÛË ùb/Á]Nv¢Â¶û0ìçý^³±¿G®©—EžUˆp.“ÊÜù,S“…”‡wNøÈ@þ™³X<òŸmå¾Ø>õ‚hæsá–ü´\Üý¬ßÜ¿Nxœµ“ÁKÃ0ÆÏæ¯xÌ‹–¥;êÅ±‰
â<x1yKƒi2ÒWeˆÿ»íÚ9‡VÝa…Ršïëû~yyÍ2˜ßÍùUèKä×=Ù…ÅxWw7|œŽxˆÜIÂÈ²„AÓ°\Ekr‚u
ãÑxóà¬¶¦Hk½±L*ÊC]Áað2êj™ªÊçò¢Ü8U(jgÆØ±õÊUaà_
LóA½¤qa=Âôþròp)¦·³/®M¾µ×ÊBFjÄ4#ã“4ÈUpÙà{ŒÍ¦½ZqŠR=[ozl„¤¸ÚÕ—®2Ö—YPËææÊ¡Œ|ñÊ«¥®óÜ–ÚXI’¬ë	’ZÛ†K:±ÞˆpÁœ4¢ŒFAå2B’Ô//C()VŠ ng!½†Dús±E€¤}ž²7v‘ªèa/zãÚ¨6c]³+rÎÞ¿ñvÛŽ˜¸'pæîpÅæpLücÜ>¼ŸSv`ÐÝœÿ®‡[,^E;Ü¢î}8ÙQwü\ÿP¢/ó7æ6Ê·¨¸=xœu’AÚ0…ÏäWL³²ZâTµ—"Hi¤$‹€]µ'ËkO‚ÕÄFŽa‹´?~'@(lÕœ’™7ßsÆo8„Õbö“¥Z¢i%
×…F÷æ‹”#f«„Gï¸‡©Ýœ.7ú2‚ñh<†•­´Òe= ~+™ìüÆ¡Bk„Sv Ä@îÌF|k:¥´5)‡Ap·3
˜f3žäSþ=IãàŽ*ÚàM¶Õ®Ô¦vˆË3û	¤øtTýÕcšÌ’yÆóç,ŽàíºNËüOfñ’gOé:áKúˆ.–7ƒ-ÔÈj§BY«Á&þ.Ò§y’óçx¹JsGƒÏ$;Uûù$‹ûawÒðÂnW°G£¬ƒf‹’.ÿxºmMC²ÿÐ£‡ 7}Ì²I>ãi²Z÷ƒ^/Î×Ë_äQçYeK&”j–èÆ=^nVÙd¹†Ô–Ô.ÑsjO†¢âÇiNÓÑ_b)Ü‹(‘I[U(ìîüÔ§@ûºbŸ‡¹¼4?ÐÛHy`Þ	ù[›²ÃÇF¼T8¼¸¤'tº+3‚w­[á(Ñ+¬	vèmÖ]¹åÁ‹¦œÎØËÄž¬P8V¼2Aÿ³'o¶Ñ·í‰àø„ÓV…võ«p»­"!œ…@@è;TÚÑNð¬Ü“Í´‰®8G/^¼ò€Ÿtš(ˆ¾R
)<º¸Îç)–üÓwü =´xœUÌ±
ƒ0…á=Oq±‹ÔâØ.-í"´P°C· É­¹s%Æ‚o_,tþþsJ	ÍãúÊo¤Ñ˜×}¤7a8À½~‚,E)H¸ð0êl„TgPí«
vd¨ë‹Å×ä<EËËÎ!û6.L[èÉÛö4n¥æ^¬ŸbG^»É $öÃœ;î
›ˆ“m¡~¬VšÚ0b:Æ0é2ºì(¾®eF…½xœUŒ±j1Dkë+§±…ï.\é4	NcH `éÄ"mîÒÊH«€ÿ>ºÂÁžfaÞÛ4œ¾Þ¿»o‰uGG,þÇSÞÃçñzPƒV á.×ì§Y`c·0>#œRðÎO±o|QÞªÌ©ýJŒÙ¥Þao+ÏøZn¦MQ-›Ožm¨Ž`Ýš˜¸Ÿ×wP H’¯]HÓ‚”gÛˆùÇ¦aãPÐ`&,æ‚¹ÐÆ&.Í–\­ÀƒZÂN­–@qÀ¿‘îBÀ"ín_ÔI^Œ½xœUŒ½
Â0€÷<Å¡K´•Žº(º„:¸•˜œM Í•ä:ôím‡
ÎßO)¡y\_ùÍi	óÚ``÷qp¯Ÿ KQJ.4LÑu–!Ó;¨öUyg\×3_”óÈ–æÎ#FzVÒjjêÅò[´Â†Ñc§ÜSWØxyX‹ö‡Û·•ÁØ*&Ì4…Ä8ŽšáÏÉ~w_?+Iù²üxœÕZ{sÚHÿ>Å,[v€€-ì/g¯]Exx©ÃÂ8¹­lJ%ëa”‰ÒÃvöÎßýº{FÒè…ñnöêŽJš™îééÇ¯{ftxÈ®ßÿÙÚºéfwb˜nh[¶éŸ²Ë÷ÓîÑÒõü®£…¦_ÿÑvu'2Lö³¥»¡s°ºšLßw½lSv±É±o³m‘kCsaœaZÙ6ÛÃo3(Œ¼õ<&mm¸÷kó`ÕZ`ÚbãÆ‰îl7?ÐÅLÏîÆ1°½þ#h»&,FýåH\¥±¡¬ì[­OYB-´u¦{n2UŽØü½z=Xª×Ëþòæš3åq¤œm8˜_]õgCu¹èÏ®Ç£Å$Ãþ²Ÿß;+fø±§HâÄ“Mù	E©\ÕÓô^<M¯z¥dšÞ	›Ì–£Å¬?U§óKµ?XNæ3 Žˆf<¿+NTƒ›Åb4[Ñøf–#S¥WJvÝÿ0Vˆ‡mÖg·v¸Ö‚¯¢Ë1˜åù,ˆ6ÏMƒæ=D`ÀÚ‡uô<p-fºÑšý«^»ê_ÿCU|ÎYýü3S:¢±'5ö ñ°]¯±6Gaä›	K]sY˜,\™Ì7×šíÚî;î¡<³|o]vÀÅ"šk°`åE %ÿ£ÿ>î03ÔpÜ¡cr9›/h¹õ'6¤Y¯`|ÙÃÕ!(Î(_&ª–IJvÄsûRÊx äÀ86Ä"ÃS=T½MŸ-£Ã„ïxœ®#žtã¡§È½»÷l£Í-Ôâü­:¦ËZu
ûk¯ÍPÃgv3žÕk²‹¯#´Ø|\ÞÜ«Þ«ÿSEû›’öÐ^›^–ôÄ« å»]mmM7UX³®Ì ËÑî‚B?¸7D3 2ª×D¿DN½¼‡¦kÛU7Z„+?j¢ÑbkÑ4â
~ Y°i›þw„Ii0(i—‰þŸø×>,^G]ÖIúÄÇ
MvØ>_A–à›\.®ñ¬þTôÃ;3$_Äö(HüQ¸¹°Š @Î%”uÆÝŒ»aêaý»©†L2Ø›`I-rûÎÌÐWšÏÚ|&T¶m±æÆìGuaîÀ æ>_$HµÑîLäØlu–­,S,h4›_®fØä”Š4:k@q¸ºL"ëT¥’NøÇ¦'ÂµÀd-D†šEI×jBª‡¶kì§ø0¾vfi¶ú8Ý3~s¨l+ruUí r‘YíÎ= ~ƒÍj‚ìœf“ñ¶OÊgö êŸðkd~í°ßÈ¼7ýÀö\0v<ñÊÔ@"BÂr!#×|Ü˜:"ü½æD&Ò¦‚Ãl§Í½ÇVNê¤“dç*ïöÄo×ƒ§Ñdö¡?-Y<X™úWK€Èž¦”W+y"®W‚q¾pî¯)îZð`‡ú*QVï3­k%8~ŸbàÈt™©öùL
-¬vë›f	™Ao'½<H$è©ÔZ«=Q.ÒÊyº.t¹Áto½ÆôA–È &§É9vÂh›õ¸Í2F+±šl6°üƒß§Â4à“—–ošüáyÔÁX’«¡¯¹eúªãÝ%øƒ2Ó#ß‡ê¾zX{7èáõ®9„@P9\ké¬ª¼b€J„€Ê|€´²üBàq³„¤¢ôú/¡!ôé›o¢o_“•‚Ì=«)µµrì5ÖTû9e
ºL+R>½ùÚ¸S]wª+ê2 ~©mìƒ‰ÿÉeVÎ¹’Ï²@Óä"]R¹ÆÓºs«."7$Dˆåc‡Ü1¹µ“11xÃ¨f±îå¤ÃSº·€6ÚW6 Z`‚™ÄäÚÔÜ˜LŠðU€iŽó9”<0@Ìïv“9 £Ì("_æ'-öo&ÃIc..pLªÝ
g¶rŒr
VËÚÆP}íA=Õ2š¼lË•·‘ÕIÛÈ&Üp	T<øv&E#¶¤;‰s¤@€*“5“n†”™´$š0w&`:
[Ñò,¢÷,‹ñ‘e¨ÏYN‰M7ÃGPÓH7i¶ö Ù“¼ÜÐÒ„I¢æR0?‘[­€Áž.™ëÂÄãÅšt‘…€ÅÐ6Žöm|ïÎGzÀqTé^ô@@.LI@TýÈu!À,Ç7[É^ÜÄ"¨n5ÿ£m„+Ðßß”ÙílD£IYJÝÆ§Úz$¡n'S $Àªš6ù³ÁXñ¨3öúµÍ5Žö°ÑÀ§•K¶|šó¯n8®ûõ?•Iø™íloï7¿ÑA€i5õµYOQ@k\–+AUˆ‰¤X·Åþ4“.¹
18Úâ·®Û­©a”Å©Ÿ£æµló(lAý¸ç‹d{|T:FJÇyš6á —Â²Ú¶Ò’F Üñ‘Âî\¹§"–©Ø{–ï;ÚÒw\ÚÇ@wj<+‡Inr3q4ñî}[sèˆÇ‡Æè‹€‹`íh>PÁo‘EÀ‘û•TAL Æ{Go­õœ±Ÿ¾²tî£«wâh"³ñÕIf¤RÈû)4ßôœLLá‚”’\Zp‘÷çØyÉ‚ù†&³-(ÛÇ”•8‰§êœT	í¬?µ¸x|yqå“›,®ƒ$öÊ6–Üæl$²©Ø)GJX9 Çá.Úé?`oø §õŽàû|ŸÀ÷ßÉ¢9ýg+T¼$\FuwcP¤æ,Áù1E®ùË’-LòIŒ´[,Õo‘A.Þ¶ôŽbŠã])Nb;,Aán´¾…yX!„DÝÇcd°§½ŽÖHz–ìÛùU]ÈñŽèžÿüø3‰ÍÑÙ•³9~!›lÕk¯_Kc0Ù	h)ó+æî(ÍÞÄsÔ{ >e{ª{ï÷ˆBY‰¸ä:F³Ú]{'ðŸò_Z ä3’ó‘™È:ÞÆt›iªš«óÙôW¨?ç*]SÐ¯åöJ ÎÉÉIRzƒ´îªØGŽá¾‚…›ˆçD¶äN/âéåpõÎWKÔjµ`w"qÉÏË«8¨ßEd{²øEˆ-nÍ)€fÞ”oÌ|ÌNI%Ôã•Owò
µ¨<§x/Bî~,.Î…‡ $YZî¤]LY‰ÚvÂB:Ê¬áUAFšbËÃì¸3õþ]Õ^DÐ8¹Uå´œÂ%OGl£\°fã^/yJ£hkTTÇ+·Ü^Ã~‰-Ç5ƒeì1¬2°ÏD¶Æû"w&¼¡¦ÊgÈê ç!ïM¶®òùª2yP9ÓþÙâ¾”5sÆÎ|…h"öú<£|*6$€MuVßªœ Aî¬:w*ñ!yîTÜBð§G·ÏÔféq+„µ@VÝñ³ëý©ž  YELG.i·Ã½ƒ¼•QÑr?#'‹³äìAò
V á¤'¶¸ÖPËY +lÃ<P*§sJ «C<ü{ß¿©µ7Z,æ:Ðe"øâõU±Tõ§Ë_D´Ž'‹«ýÅH½žÎ—êd6žóöøPl4ËkÞ8}˜`èh:V—£ë%oM¦N0v¾ø•·ó	ûËåbòî†óÖÙBå“åèŠ·=ÑíµéÂŠ†«kÍÉ„:-òÈ[Ø$Aùý©Àáó™è‡P¸ÿ[@ÈeƒžÒ[r:EÇåj°òÔ{pVÏ36eqÀê¬âû+Ø(ÑÜV‘ÛôDž$Â¨ñf`S(8>ÙÐö)±|cÊ#X	±xöáj°ïéUd×6N÷¦@÷‚;ŠBçbŠí%q†äCåÅ)IÔ½àJ”ä³Ì‚´Æ~15'\	N,J*Ãilûë¨;Ùµã…lâZ^§R'Ìðˆô9²,ÐY°eaEÇÍ0â÷çìÚt,¶Ä¦’Q‰³g8•Ø±‚Si€”(½†¾}…fðœÒ3Aõ¹úX'uêí-ß,×ãú‡/ôgDámðYz‹«üU
2“nRÊ÷î0¨°k„»ìÑÿ8^Ãp,à«U	ÜIvÌžä˜b\’Ö3,-J™Ž¤Ñ‚Þkb4h·„œ”#x¢€:Çk¹ìf¤.ã¤Å$©Å¹ez‚÷GöRßg3U—‹§ï°¡"·Jôûý7Q»ˆ/@…Ç ñÇ{À3n*†øû“Hª„`|=t‡Zº?KËdºÖÆr_yÔÚHmIw„Ù÷K„&GÓ9B™Î·æR‘‡$ié&l-Ú$|ÂGÍ¿Ó;â6¦÷x£L°oŸÚúÚHùk‹¬Í¿ù©?Ñf ƒ¶—æc“@ìsŒµ!ùkoã¼ ®8h$gÍœE¢äÓô6H 9-€” àÞH••'äA…gŽôÖv5H’Ë “<=‡M™[&C¼o‡b	ïVàGol¹=é¹”!üY¦M”éZö´=—-6—‘^ZÏ™€[ä¨[(;ò=(¼Ee‰ÈAVI˜#¨™¯Vìçï!×-.¯QAKðÆÆ›ÉlÙlÈõ Þ+÷U‡íƒYWNžZA>žLGÍ—¢‹R 5{åÅä’xÐ.=%øü /ÆŸWNÌ€B%ù`$Ä„£Ù°Ù«ã1½ÑüÀTñ°vŸb‘Gôf|-,žË„Vâ5 €âŒL¢5ìJ6kñ5£ñizS¬_ŠA¯k±ý}–kì·¶$%Û½‡dn¤Û˜” *¯SÞš¼ä¾œ;:óH¯ýT¾è“K»œ‹®§ÎOyrÆ–õ»S¾åV¤]i!)F¢ÄŒ ™[!‹úC¼§…5O X6÷{~®íþ
'‰_÷ÂÕnƒÎ?‹€P„A|»lËpÀæáÊôlh‡¾ Þ!SßÅÃ-ÈG'±lÏâ_ÂIk£jð9œ{	P•áÔxÚ¿l6pÖ.«W›˜6¥“,êÿ¤ä5´è”ï¥ÀeC,«d_‰ÏÂx-“)9X –â™R¦°Ï›B"ÿ1UÅ;á‹õ@ÑVPÊnHò"(ÑSóUÝóq3«Ý:¦JÓÁK`…Ö½+´pBö~0Á÷’’YÅu8½$$!KÅ«ÙcñÉ³LßýGú¹~þ*ÝW@EþÎÈM¾‰¯!éåRñ7§òêÅwØ	$íÞŒ¼‡r/…K°T‰ÿóqùWï¼3@V³`<UØ=PAì€ÑÇø[ÅÃ„ÚyòR"4âXFše¨Õ¦æÔ—¨wöØœßºÐ‹÷ØÃß¨‹›Ž°‰¿MèØ‚ßÔE¶ñˆ-JBò&}Œï(2Ø$ñr>6}¸©ÃÑ¸3]ª“ù`9U—“«ÑüfI¹£!­x¿CŽ”¹B“TØÜ'ý¼¤ ª#,ÞK>ô=«¢ÿ +¡C¶¸%xœ]‘Áo‚0ÆÏòW¼áŒÕeÇíÄi@h¶SƒðÐ&XL©fÿøµ [/m¿÷½__¾Î'nŸ$äŠ	-Q(^q”¯°Ü„äeöLIê\¡„ÉÜ_D‰øÑ‚ÑØg4¬±V¸À?"œëË‹v®šöÈ÷ùc'âzBËó
žú¶ÒÉÖéŠ¾{,ÞE·<
¸
¼E°hf”%úâþ¾7ì3HQÔ—Á.Nåìh„~£Y›p»¤±{QàØ÷™ì)ØYÃºÏ®esc» Ié:v§èå¯£È‹,¤iæX£Ñ(ˆ³äË±¯-iO¹T$/KR7¾ê¸JH#/É€‹ª‘§\ñÆ°¯ºÔH¦­î_:k‘×ÊÐ»a§=,ÿ»‹sIÎGR4Rb¡ò}¥ldkX¾1ÀÆ§t­\„Ò®ŽÂuÖÜ. ×rßtÚzz^Sï?…ÝÃÿKí¼ƒ±|xœÍT]OÛ@|ŽÅ6d#'8)íi€D´j
(­T*ëâ['Ví³uwN¿à¿wÏv\;€ÄCE²=77»;·{{{pu1ùÜ›E
…½w…ŽÂåœ^ÌzÃ¾×Ke/f¥µ‰ Î9Â›0:î/J)Ò6¤4Bq4oc¹ˆnc‘Ðúg†Ê á®X%Ø_v©=³8_DÂ`ÖÇ0'—Ó£ë©òaÒàiÉ„¢Âyo­a)Ít@
¥Á÷ó—C8¿ð&þñìüä=ŒÁûGñ&ŸÞsßóž¢7¨¯Ø¨ŽNÕÃõ[d±^Þ°8GÛ@L.‚%“°»K+”–y I;I˜à°$¼K`·|:Öo«S­˜j}•0©ý8]@ý6²:¥:GPVÝS,É°,R%Ù¥Ùû]"›¤Ö˜Ÿ+ä¦·"¯LÞcª¿•ãÊÈ¯ªÝUkª¼s~qí]ž^Ùi¦•CB”nNÏ&¶cuî©¤ÓbÆ¤BŸJöÓ…½CŠnåOiŒ©À…BË„
Á.÷:…n&)xhwoÅWÔú Raš“…·¢ëŒhÅÒ¹ÐÐÇ}#tQŽ1¬4Ñ¦è~ÈÍÃqé(ÃêçBÈb….ìÔ¯“yñX6×ëv„³›Sc#Y^Øx ]³³ÓöºVí7qÃ£ÚMôpàypw×:­7ùÚ1Ô)xÛÛ…„QÍ¤ô×”Æ©’F®›qkm^¹Mµh
CiAœ*,|YkÃ×-qoY°1ÇŒÏã4øöo¦áÉfŸ3Ey2GYôú3šžèbø¿:9*Zj ¢|Î4û2ø:þíÝoT™1¥ôRæ>ÙX ô$J‚‰BmïTˆë¹*ú…ihW€cÒ¬Þûi¤ÇÍ+´±ðïoÜ¾77–‡ãö]ÙXfœK2Ð¦+õõ¾cçdD¦¥¯SRƒg>ýEqÍF›£¬òyiŸñ$uÍí‘®k…³³Yyí6m0¯ºH¹pÕû:zzºkv@‡¥`››yY£Îè™3ò´ƒzÍµxœUPÁr‚0=›¯ØâÑNöD!Uf :€N{bÍƒÁéÁo"j5‡Löeß{»o:‚xå}ÙÏQ´hû
ÉKŽÍæ«À~›¼ÚucW™ÄFS2ìD%¸¡—úÌM?ý€’¡B¸À'ŽU·ã¢Ê&­Ò.þ_¶8!/á¥§f9,v)óR¶	©ç3Ü¾´ì‚:Òp$~©Âº»>3µ¬È«®@0òC1ÙYë¹ÏLæ„Ô4îsc0’['uÕ´GÌÕþ9à¯T‰ðZ´ªOK§Åþ’Ycê¸Ë0t”kàÇ‰IƒeIôm{Ì*¹?eU‡Ú@3¡Çàˆ²’ÙNÿìP..ðF·Z
Û¬ØVuþ£és”sP \PÝa‹M¯ðqmµÔ–z(‹Xï*µ
/£è³J¯‰üo=š@¹Àxœí=iw9ŽŸ_ÁÑ>Ç’Ûr$ùÈáNæ)¶œxÆ×XNÒ³Iž^¹DYÕ]ªR×aÇ=“ýí€G±NI–2;oß¸;’ŠE 	 ’Ïž±þåÑ/ÍSÇæ^È›'CîEÎÈáÁ+öîò´ÙÙn5ý éZžü—ãÙn<äìç‘íEîöø‘ÄƒÀóÓIa4tòI®s“N‹=’sù†|”Ns¼(z˜ò0—óÆ÷3ÄDÎ„§S\ß¶\JKk¶?™øÞö¸f¤ywXÔL‚ó‰S7¾u2EãÈqŸIk€jàxœ^õº×½ÁáÙ‘‘÷Î	"'ž4dûìä¼S·¶ØMƒÕY½n5ØÏ¬~Óhü™áïWô;ÉýþâÃÕàä|Ðï^œõþíì·Z¼î/ƒ÷½îQïjðöÃñ1å¨wZl“µ[ÝF*ßéÅ»$üí¶^îëG½ãî‡ÓëÁu¯=8ïžõ Cí2ŽX4æÌ³&œù#öàÇ‹x±18T+Œ¬È±™=¶v –»ÑÀõo#Çå,ø¹³·ÿõ ó±A¶;‡ßS–1·†<`ÿx²† ÖÖÖ¦V4–ÙUb3Á¬¹¾wË€Yà°Á (˜L!YBÇ8ÃîZ`ÝÓÌë‘Lî­ Êº~Ä0ÓèþàÉ÷‰áÄ
D]`ÔšN“JMM1^H¤xábtjü”ž
É´î8Qò(r¼Û	úñË×‚Øeã ‘ËTÌpÛ†ƒQÀ¹g?È¶ïAïb57×ü8šÆudæîEqÁï‘Ï‰Ëuþà²‡7ñhÄƒz)lN1Gã	>á¨Gšo°©·Xk‹… Í™ÉÆA6·&« ˆ~‡å¾çh†ÚÝqhí¡Y’ÜAä}ß ShÕº¨ì…Î­Ç‡‚å7!çel=Y[Ë¼– ¶˜xBŒ9áG,|¸%Ë‹&¦Š§Š:[lê§û†Ü·È‚îûÜÞÿÊ^c'¯m´6¶ØF?:ø±³¤lìâï=üØÇç"õþ~‰]üx+Rñ÷~ôðãS±OUÓ

©AëX!,û‰µ˜iä¬î 5­æ€(Ãðë§ŸDŸ3ª'un<Áî‡› 5Yþ9PÉ5î†<yKIïçàs°ººöuÑæŸ!ïWö”µ¾·ìÍ¶û5[©¬.Ú:n`©ïÈÏ6Ÿ@¡wÜã¨CÜÉóIömã«S3…Ý;®Ën8»•†ÌŠ#‚Le¹îsF,µ]Ã3æO#Ç÷Øky¿Í5öüã¥ÙGÐHM`RÞ$%}‹ È³,7«âc¨iy\§1ÌF4óH@D¤ì8@Ø%‚(š0)±Fl(þ">™*ÁN êOeYâQÚ~“4s6ÃZèMaPE£:ÂÑC[¬¶ý,WåZCÐd[Q}$†8å©#BPkýïÍõIs}XÛbOUª©‚Æ.'£\¤1N‚%J<±<¾ÖYr x¦^­x6)AÉŒØ™ú=Ê«Ï¨ï‘Ûk5 ‘dˆüÆÈqÀáu½NÀšo´NÙ62|†óóÏìEƒý“Uæk}mÀàí<ßÑZ…ÙÖÔ²èA1Ê&ô·°Ët
BÐIƒAü‚¹7è‹!ÿ	‰ºŒ =Äæ‚ïd€¡dÒí…Û”úT ¾Ó(QÈðHü®Ÿº§§[ìüÃé)v`Bf‹‚a<­ë’Fos³×¯Y’%˜äÚ¡åy`=L`°û6ã‹W£ÒyÌµCñFy²”ñ€­ ”´!´~º¢ØŸu-¿nI-È¶†R.ßßÅ–²§q¦‰¼ðÞ …‰*“»‘à‡“BëÖÃƒu7¦/ø¿¹½Àð1€£±²z:-1~tinh¯l©	”ª‰;û~4ò¨ QŽ»éCùKó}nÜ–ÖìPñçº;Âúè6|¶²ú3Æ÷£ñ)Á'+ðÀr8X3Í'†“­òÝ‹|+@}ŒP‰Õ³+€ß½³—äVji¹šY˜mb–Õ#\Ž}wX†ž"Ê¶ü—<€ÙsdÝòÁ‡—bŠlUÃ`=B}ñ,éppÊG"`¡`»óbáˆ—†©Ë)%'Y¤wb‚ƒJ§ÑX-mŸ€‰#î­‚¼{j%¾÷ÁÚÇvúP¸ÃðÑŽ6]¸:Ê°ÕøŠHÃfã«¡íÐsÃw]˜û¼Ã‡Á5ˆõG‡‚fR µÃJè»ôï´ÃÛåo´)±	È
©ºðïý8X–.ßŒÌJ(ûà…ÖÄæ8Ž†þ½÷xÚb(T€VBÝ:Ö þ­6! œ€¬„ªóx‚4`^6èÁpp–`5`iÚ’wVÄqÒ°ê^ŽURM.ßé”Ò$Â“#s…&ˆ4˜\£p{mÚ"²ýyˆË»^¾‡Á ÜéPv2’Ûû¥h©)Bî…~ðÙùŠÉþo)ã_À[Üô	æ`}xp~ˆ•wvyc“)‚ÙNÖ¾?Y'ü8
1Y#$¥è¿Ï=I¸s˜¶ºƒ3Ë³h‚fÏu{pX0u;ôc/š§·£ñ„¸°=ˆ¨ WÁEÔuK]ç_A´AÚ¼Åh:*·ªq\Òr¢­3/msKf°•Èp
‘µa®½Å*§kEópc.%G^#”÷âHv"ò…G¶Ü•-¾Kœ5Ðä¬ÙkiWMÚ‹“YÏIçrpù ~nïï¼ØM¿ÝÓ›Nk÷…zaºÆ$â-¶×2œblýý«õ³Wë}ìÔÄQWu0çõRoå;*C0 …þñ¥ò0t|ïKí< þÜšpxúR[¿Ô¶¾ÔÐ‘‰|¥Ó¾oÕÐi ñ'}Uƒ*GÀ“µ¹<ùõŒ¿‘TXyšÞŒ,7ŠTo E«À;º/ÆJé§èå9»²mÌï›CÛ¾ú½0ñ‡Ü5»`ê‘ùÜ?7Ÿp¹“žÏ?žqJqÄòƒ™K-¨õ]?õýëw£Fo¦|@*Q¬ðä² sI5pªÚ%ƒ=¸èOƒî°¦Sî˜‘\ßuc%eS7S0‹vˆŸœö ‰,K#@ÕUàp‹ÜÀÎH»GÂDÈø±ƒ¦@I¥á£8¨j5ÛRéŽdÁÍ¼6¢¶#ÛõC^'¦—…Zåu)4¯#¹¬æ”N¨ÉsÝ8‘+‹z·V®Q¡¢¾2r¦š®¬æ‚}æÍ•ÕW_U¿@Sä4ƒo ˜QO#gI=•š>âP+!¢TePnÄÕD>;Ê™M+nÀ©­†æ?ze,Æ©÷c\‰ªƒéû§×`­²§OY}ƒm`AÀ…Æ±`tñ@v7ËÍ¦ZDËôÎp(<ù¾Òøv4LwƒE˜_ÞÞ´G·¢’•Ì.Ì×Šz[.@CÈJhÑßC‘¦—@åü<³¤*ëÆC¥dfŸùüØÚ	Uj¾1Ü±›±@NYl ‘k§Fæ,,²„m¦õ9d#]¯–DDKÐ
Ì-­PÇ>zŠ¿ô’æúx¨HÚá §EÌpjÙ¼éÅjH^Ú¨”2|„‘NA¬XÅíD¨ç@Ë´zZ 9*QÙ1©úyPõªñ"KÚ$`Sk#^"ôlopÞ?9öªTûaôkÊúgÝ«k\€.£'/]ÒÍ zL&6Þ4¤õSaR
aBT£¤uÙS©7LÝ)‰§šèƒx:Ì,{§TÃ’<†Ž‘Æï|R‡Z®4Zæ©xT}(J]7iCQŠ¡+hù>­4ªþ§P>  wrþ±{šçe^ …(Ë­Œ’ Ik¤o!)j˜ï¹ð²†]2ND×/3WS#ŽG¸eT}),­°Â5NUYxZÊ(Ï$Í¿Pt«
ªH‘WE6¥¢»LÀÏ’|²üB¢OË<!iw£{Š½#ÔJÄÀŒg§f‹É¸L…M!—U"å²'å0ÊäœOO•í8¬S6áMì¸Ã¤3Ý»N=D†FùV&$-B‰Š`¥ß+-7)jJå–l=oX®•¡˜5h1Æ2d²à\ òQÐÐÁ~XSž\z#¼¹ÕðçJOn½ŽÕb`˜žŸ+•¢¿„kUÆaŒÚÁ4*àõKíÆ‰Øz,æ¨ñÃ‘T£±$Ý¤ðI‘b!Ö(‘ús5U€ÂÍ¨“Q:Ô±¢hç‘)ÍþùOö'Ùx†ÌÚÒ2YÀÉ2]J]Ð¤æ»,\Æb=	_q@¡8ÓÈÏÌ‘Ì(TPn8ðó}kö¤Žz4Ó?$µšx±$Æúˆ›iÜ!9‚ÒyE·œ_\ö…›Á÷šäËv|Ïrˆ­/µÂRg²Ð™õIŒÓSo½ÊYk»ÕfŸ¬(
X[¥´TZ£jïü´{Mp{48
<ûËO;€ù84á0,+~õé”
_q*qÇ¹,”ÒRW™R¸v=«Ð‰¬ÿÉ*n€ÖÍ+vNrý;ÆQ«Iª AZâQ<à»+òàŽK¦+Ñum¢ð_€ððú2‡±œ/8“xR·÷‹îâo Š{¸¼ƒ¯‹:øzøñíceKûøº g—;9:½Ìôsy}ÊwÑ'?øÍõ­Ò
]ŒB*ôöï×=v1µ«³fó–ì|‰õýp½Ý
×÷ÂõÝP=¨»Æÿòy_ÿÚÃËbâÖ(d­V³µƒ(/ðûL}QV¸ôãùË´;Íö¹!×plb2ô }]‰§«$ï~³ýN\lyõ®ÓjvwW¼ƒ¦¦/àQªöŠëýÿôóA~Wg’TëìËª¯¢ŒÕ/“L…+²;C…ïâçv«E±Ú…öÑŒC½d

UJm6Xý)ª¬æ›i8T·s9âŸBêçÖ×-¶ê;ˆÁúSÊ~ýe8®‰ÄÄð0Qm\ë6LÙo HÆÇß ²iÞi¤QìÌÈßn<¢>’úì™õ™äî\M´Ä+‡Øî¬ä€l—€ÜyÈÝÕƒÜY=ÈÎêAî/3Ìœ)2½Ö&n$Ší×cDE£&û5–*2=o¤œQß›ÇŒªðìq¸ÈÎR¢ÊšÞÿ;4b5å$Ìƒ½=O¦N	‰»ëçÎ|ò¶pJ—¶©¾ñ¾KÛ)?—Æ“)áFrŠ÷ ƒˆÑ-ÊÕÑß"¤ygçëAv‚œ¾ÿJ»vT¾®íl|imÆâçõÖ‹_¾2u‘Uô¯¡ïu{´:¿`AâàèI2««öðÁOŸêLìgHúŸ{B»@e[g‚:•MÍžK²mlohdðG{ÂðöEC¬†áÄ\'¿~m4_Æ½È¤/‘ i0;	†ò&™¥‡NÒ#J’W@–ü“‰I:X3›Úm-ß©’T[$ƒ^¥‰–t¨v0	5ºTÒ’oz•®2%QgÿJÞbã€ý*M¼_U—¯¥œ²Í$º_‹Ñåš˜Æˆ‘^Ô˜ß…Ûö{ÑR©„èòˆp‚òŽ-æ÷0Üy+UoÍTÖl²ï*íö?<;9Þ!±a³ÖB§ì˜ã"ã›ð!x´bd9^È|Ï}`dïÖÍfÂYµ°çé¯Ö.5±86ñY,àò¤ÐµUÉòÖbÔD÷>&"¢!«‡ˆã6íŠloïn·E´%E˜2+}Û¡í‘÷N4ê.OØqì	0€ÇbÇÖMàØ!–ôø"‚gÀõXÿªyrñ‘}t‚(¶\£ö=ÛÙÝ^_tv§%z[ù7¼ì?‰OD^ú<d¸ ÆSdd`oœ)¸O¯w#ÐÔ7qÄÑ'…ÑOŒß€’å4:úFÈ-|'…OèTÜ°;µnyŠä‰8œ3XK ¬¬ô±Zù ùLÓžM}ˆ<^_u¯¯—ï&"-GŸÅÚMôµãn–œ:bÒ“!hÎ2…ø²^cÓKuÉƒ‰†è;ó‡¼‚‚E ÿC9üÛ/*Z9¡Ïí8À}‡}\"°àŸN¹â6G¶ÜTÞË *¥ì˜ÂµHŠË‚ÕÌÈ_ŽG1î€‚GÒuÚÉÆ ;òï=tZÎÙKC,¥5¤IP4m½q\héj²)\JÁ‘Œãàî¨I‹ÜsõÍ\¥
q9'ÿqE›ë<‚÷ž	c=Œ/mž$¬¬SJ•TûÎB0š8O,V¼œ|?¸á®ËÞÒlxÜ9·s²AuÙœ;¾:û$åX+m´¶!^j§“sêô	=˜N¸ ÿŒ¶"æè™¯0Ù™ÿfÖž|Ê	>9Tì]ÈÇ“:,¡7yE?èV¢cÑ¾ôãHAÎwÄéeWôÃLuBñ]ÏØ{n¹`³:žºE$Ê¢€¶D ÚŒ@¹+tŒQÀ²Úpµ K©W{`Y_$r&=`UhÈ[D…dÀ¨†PHÌ.Ah@YŠ/Àž~=ŽA7—Õ$TÄÃðP04¶tÎóxrMæØÑ½ å(ªt	±lÃÝaØ˜³!¯¹¢¬Ñ~jžPT  “—É_#‹j¥0“)JÙ“³fuD(û´˜ZBCnÜt?öå¬»“`‚y±Ñ-‡Ýá¦¥tXÊm06í„•p¸Þ‰—¡|™às€‰Cnâg­¡+Œ¦Þ·)ŒþPc°Š§–ÝËþu7W¥¼ÕG¾çOü8dûÁ(öƒÑö5!WèÎ9ÊæÈ:ê__T•ú74ôCÈ˜­P›%¾²¸Iˆóq…#†°*”RîÃ,<ÐøÓÀ¿¥–Oäª÷þðúlŽVÇ=ø	ÙC$·Ð±‰Vöå­>»ì¶’i Ü@$sÚä‚Œ|g>*«F¸-È ¯Œy”'x*j®vkœ¯r¿{~rØ½4|VUŠç0x˜¤^`“‡ä?xÒÎFµ×
dö…K)xëúöo$`²¥ø/îx@6ÏÂØ+Kæ'—çzr¹;³Wü	Rd«ÎòÜ¥8DÄËÏö´ú-:ýi.|s—,7†AÉ"WÓE–ðœgÔú¿yà'#n®êV)7ëðØ¸Ôµ ×ü€±;Ë9
2á0$êNL,3¨ý1(Ù—™õÈ ·r:*Ccy¶r«D»‡IX8Îƒ rÊë¼·ÝioÃ»í“V0}úÐ×nàDiTTl?Á(#<;¨P„jŠÇnyù<yçÝÜ‚D2M‘öÑÜs´t&°bÆ–8¼Ð¦9&´Ï0ÑG!Æ·[Ê9*˜ÆR(ëü›2‘Cô`qÆQ.7ÈVóJ€bhu¼¤´4èJð­—6òV46±a¢8sqŠñÉYaIaN•£\˜ß±c×2ÛMÚuæÜP·ÝbØë¥šŽ\;äl¥|CØ¤Šok:ÓUÀrRìZT’Rº„Yb “Ô‘\F±È–cÓŸò¼Åî|Œ›…!§mÙcM(ÚÑ)SK·si1U$‡ýä°?çvéD%•ÌúïNûýøÆðÛcZ7ð^	JKz­Ÿv*£Î´Íð´ÙPçÖ›¨5`Çº¢¥…Þáäõ°°¾Â´Ôš‰ÇÓeŠ‘G!£JiÇOa“ÉöR“<û-­ —Rª«þÊ k³A5K"÷g(§…Jy¼þ“úŸÔyR•(DV{ëDìmlÿÆ#ƒÕ*”‡âÜ™åKÊ"îX©Ü›ç$
0bNºÉ1~ñ)y(+fžðÈ"ïÜlÒ–_A¹ªµË½[0‹´½2ÀEJëÄÜ…P	¢p2“Ek1 ½ ÑØŠtä…% að…"‰ :JJ@xÞ¢MŒÁ"‹Ó`tÊ™Âpé;^ ëg—×WAhû1k8$ÍEÑò[9'£\Â]jÙ‘ôç`KX„ Bkÿ-Ñ¨çíÝÿ{:g°IWâ•³1ÒïˆÃy„{¸¨²…»Ôô_^i¤Ñ8^FlÑs_ÔxK¬0CÂ©zR¦šã–îÆ($V(Ø¢(~¶Ù¨Ë§ùesEcBb63³gåðDX'GòxšñÚ{'ó/õ™úÌãêk·d)Ö¢¢}8 ÄÒ€qºæ½¡W°í	Ïó©*4)(¤WÆ¯ø#Oh‚’xÐ³*lÑ, ÑÁÌúçB­ö<WžÙÅQv‰µ‘npãDr²ó6ÂhÉ.{Žqò;ÈOz½»øpbøJ‹P>IGWÛÇÎJ6ØÌÒœæ¥âõäÙ…X‹ÖÃ>p>C
àpssä•Û¯lYAÕGtÝ”µbÁ&bäØ¢VÓ1ŒGcîC¶yÏgt¼Ú®G2çZjÖ¾[¶×_Ì©FW--^äôÓÈ>ò fG“ß“F×G;8©‰'zÃé²(óv
P¦6ÊVŽóä@1Ž|‹€½˜Ê ¬nøàÙãÀ÷ÐôêÑd²Ìû¨!ó2¿ahUCæ±œŽ5†LiõmuQ%{êÂÇ‰ˆ—ù8+P_#*ðQB¢Ý!õ°_ÁeÇWØ;×¿¡›U>xÎï1Ÿ!­Ñé»­Yø1ŠÈ\88A£qD’Üt½Ì`ýäZÅúv%ëÓÒ²t)¦à=-UÒpIx‰<˜ãùEè{1COtoÐK¢ÚâÔ™8Ëš½—³pæDÈVà<0~K	È	#°³Ê­¯tXÑãFug¿õ#5? Ö‘`òˆ–AŸnŠääÈXÓY¯'hîòzÞ˜UÝl²rX v§V®stÎ’R·³ßþ‘ý5Tbqû³Lr:—=‰I’G¡/;èöó›V3’VGFá×¡!ýf9ë.´ó†ye˜ŽŠŒ%ÄÓÝù¾«ŽI\S;[Ó0Ê3t7‰ì1Ú¯udÏòœžß.½âªëø§Gòzµöû¢ÎÓgúôzfœ¨Îô}3K3ÿÌ9‰<ÿþGò<¿wµxZ†+Þ´ŽR°Mdi"ªíð/tS
;ãæ2zù’ïqaySÄÎójË¸‚3Ç£–Yþ3íN:y–úÔåUËâ¤Ù@%Î]iF1™³0WLl‚éä²°¼«gêZÐ“~ÄmÄ¡Ú—¬–±rw
Ž‚XDåó&Êèêòì-£¤•¢”äÄñ·“>(=½×½^W»Ñwf¡ç?Ë-ì«½?ë²þûnl÷Ü™=Z²QbÚrwÆ¾1¨í¨2¤¥|—ðxœ‡ÕÞ77Jˆ´ñÀ¼jPÝ ÔQg‹qÃ,©ßSÑØ¹­2Æ‘ôU¦Æ0ŒüÔ01Ÿ{œnÝiWOŒ–×­:ˆ÷Qªu§=k•™ì°wÉbý’¢l§S=ÃøRû+çSÖui—Òöc~‚>¶£‰U¢“°]yk†é XÒ¦ÚéT/4,ßïItóã:¾³;Ë„Š² q›fi˜5Èµ%³0|1»¶5-XÃQÁ¼K;öw:ÕÆâ’°³ÅÌ`ï²)Eø;ó•Œoh/,èœ¿Å<æÒý+EüâUÝ+8vh9½­:½Hëdõu™âº‘DÃjÕ•Ò\°ÔÁ.™µ£¢fE›ßåÑ
›µz®ýÿ¢YiŽ™KVï"Æ{¢Åö#ˆ·¤œÚ+8«Ìï¡W	‘V¹“½Jw2Ùò+p&ïœ|´BÉô|‹éíE(ÙZcÌs‘ÝA¡Ðz;ÿ’5þÑÚ8	/“Ä#/ïÚ1¶ß/ioìu~¨û
´Š</«ßÝ}Þi÷QEîŠèöCŒÜ}dõ~´‹JE,?Ê˜Ú›iÅt#âØz÷ŒƒG^ 9³¬Xšad!NÄcË)DžéUÇÝ±1Ï+pÆîíüèµ3Düq]¾3+’H¶¼ÚäÑ2ú`AOLxë…ad×2Bqg¹ueqT{û¤žÓ~ÕÊD8¥ÛÕ‘íU½×¡ÞÓÁÝé•­ÒRè.ÛK{L(ŒðþîíëŠ×™ð1Zuþ {HXæò¼œ¡F‘aU/#îŒ3Û½ü)î™jò¼–;™PLZZ"Ò«ÕÙMCúž=ªÞ×µÐ+âÞ&h²ä6Œ>cVpk«k7áánKß&]Ù¦=êÄ©ß:Ûßtž›#.[Ùb<˜¸çIŸy˜\N™}3
øï…/ì8(LøÄr¼ÂWt›Aáº,I§jâ%+´XÏÌ›7±ã0…öç‰3D´±ù´m~DÛ[p«•Ü'¢ÂN¹>Ð>>0 `ZZ§–cCîâ66¶™²z8"*y÷¯ÛÄPOÖÖj×SZ—ˆCÜ ÿ*I7V'VËŽx ;yÅd¦/Ð­Aä ìî¦¸04ò›¢»›ˆøÙß={ðã@zÏšÍ öšØ<¯Û­>rÛ†MìšƒŒ^·¶;{Ž¶&îxz}^ÓñšVÔ¬7w[McÏ‚2ñ *fF£þÇRÖN‘¥±‹´¿ôŽzïšöËæ½<•]Óù—XœvK$>šÂÜ)„@¯b´ZÝ—³†qÝ7Î$+cÕå…5P¤ÓïÄŽæFPáÈ÷þ=À‹¸Ç€voÑ(#¨ÓÖ©ç^³öÞuº¿wZø£“Û„ä$¢˜aôFö6pê‘&ª-‰ÚÎeÜœ“­.î?”[Ñ4«×oÑ7ˆÇEÉ‹ƒpØÐ˜Á5/¬Ð»‰¨©îÇ–Ø¨Cn]'’þYlË¥k	@7®åý†m±{9”"ë7ÜuÐ{	7G¸¾_¨‚lB‹D!¬¡l²Í>q¹EŒN/Lm¸ó
jLxÍ30wP¾ÜÉËb+/¿²G·¸Ør[ñÔ`„Ä$Ä¾¹Åpèá s´EŽtÿàÕD”lÖ^&RÀøÅåõ {õ®6$rL<ºøðö´W¯©±ˆ!ÕÁÆ{
D¦¨ÛbæŸzÓØÊ Bzk2ïÆH*«Ðé¯­×DÝšX7€´á+ FÓÄ0óÎ(«}urþNÜfEayxçA÷¬W“0ë©ä_rA•‚Ô;?ª7dC‚ª½åJêÔÝhú.ªzÙ%Uuå*c<¤·ÓÈ^Ø…šùsû«qSWrÇaúÝã²ÉJoãw)âôd¡ÌÅ)¯`èvÖ§ÀÄ[Òd¶jÍ-Fœs ê Óç‹‚DÚtak]À_6ÈÄÂBH•$Ò‡8_Åloog¨C\°Iãè“ä±$òD[y©Zå\w…d®‡‚Ž,c›åN¥Ö0Ä,‚à`—>*cìFêŠªÒËô ƒÑ¿ê’KdKÕÎúÒ.Ñ’É­kXNÜh‹EV­ËVÆvMfÙZ³MVÚŒï/>\NÎýÞáÅùQÿ€nóþÝ,W*ŽÊaÐmKyH±	¹-D¥aÖ¥îÑ4Ì:#ÓO†¹I·dŒÜ8Ã‚ F—7¯Ê!cXš)èHž~£Qa£“”onýF6'—Œe/`­è¹t×%\,.\¼À†hÌÀ¼iM¡•§6§maÝMm<dÚóìä¼“4ù–iLüÐå|šd ´lóês¥y+?÷û÷ÉñÐ?lÂQtâ4~”*âŒÑIÒ)¹jOnÈû5ô=iíÏ´Òµ		5njH»òVª\Sü›HàÒS\þtÙûË¥V³­˜¯à†æÌ¥‚Õ7	f¯4î\+=Ò\ÕlÞÿ_¬&½2xœ…RÁŽ›0=—¯˜’KX­“ªÇö%t‹lDÔJ+Y^KŽÙ†mª=ìoô÷ú%B²Êª•êxx3ïÍãMo`µ\|c©¬P;dIÚËF¢ýwË”}œ|`Æ2%<Z¸™£V×ØÀ<[ð$Ÿó/I#ªHoŠpPíVj7í¤õ²Ý_žLw{‚‘làýÐVË¤X'›ŒçeGðü—ýÀ¯ñl<Û¤ë„t‰^ù®ûú‘ºRmVûz²¯
ƒ–¾,ÓÍ]’óYÃ³¦ðÂrx…um,¸VäBøÃ“/ÒhG¨žˆ—q±Jîóè6 :óû,›åž&«õøT¹œ8_ßÇ¡2·Ö3oXç;‰OL™mOºD+M-+¡Ôz œ€ ¼·ò±õè@jo@ 5@#NôÃ–¿Îz‡P/¨üNº×V¨„†G¡…:þÄZ'õ–¬P­<\Ï>ü~ùå ó%‰ý?e)ôôÙÓIeö@Ò"4­Rp0¾O–PDD{™†ÔJÉ‰Îó~}~ZŸ{ÃŸ8iþiêÎ<19DõØ;¹¢‚£Üx!4(|k‰DèªÖZÂ‘ïiAwf#<¿ˆ‚wQ}¦ÑÏ—Íu”†¤ñs¢þ À8 “µŠxœWmsâFþ¿¢íÔm„6•ä6^oEæÅK
…Ä9®\J%K#˜[i†šìÅ—ýïéI€¼ø.w¸Ê5êé~úuzz..À›õmyÄ„f­QÌ„á	gê'¸™[oÛ–T­44LÕ/Îêp=¹Þ*¾\p¢¼ítlá¿¿ÃÓÈ$ Ï—Ü„)ò©µT¡áR€TÀ†0IxÊK·‰Àü×°Vr©Âp™(Æ@ËÄ<…Š]ÂVn 
(smØ†HŠøB*ÈdÌ“-Ñ6"f
ÌŠš‘i‰ý¸™,à†	¦Ð¤Ùæ!åÎ’xˆÚ‰¨W,†‡­•’^a%[/.qÜWðÈ”&¯ÞB¡¦Àl’«NhÈrrMr4w6„¥èkîï½Œ¼’kôh…èãOSx`°Ñ,Ù¤M‚@f¸ù§ÜÉ=Ü¹ó¹;ñï/‘Ù¬$î²G–CñlrDF¿T(Ìm'„ÛÁ¼÷EÜëÑxäß“Ã‘?x§spaæÎýQo1vç0[ÌgSoÐð™eƒøzˆ!A°LbcfBžîò~‰Õh]Ã*|d˜àˆñG´-„ëë/&/•biÝDæ} /' ¤iÂ“âX/F~Vßg¶	#µ›ð}¹Bñ)ÅØ{ùcÈÄ¦Rª&\KmÝFÍè¼ív;­îwnž[:àn0ôx„~aI‚cüßÿ—m¿øù)ŽÚ‘Ì>ÌE½þQº‰¼gJ	Ù^}8 Q9ˆe•¶X%q•fxÆ*”SÔÒÚ
ùê´^ç‹'Ž‚Q<±FT“8Ñ*Tpö°I†Îm„æKa+Ï€æÏlš\[‘Ú@ÎŽ)ÍBL»ÝnÔÿ]¯·b® sY¯=†ž&®ZêËº%h*ãXJrñ²æBº´¦´£ªºTgÅ¹&b§ü&³QÔ#Pß—zýQòxïkŸ¥Ì°Z>T2ól8­ßtrrä ­=ÔÛÌ¤¾œ³L>²“¼p‘ÖÖŽÉ¿‘€s’£ÁÀI	Ö¨×
ãˆ»gŽ¼
©	ØÃKNg³H2Œˆ6J1‘‡:Œ¨c`]c-W,jZ ”°NÃ(ïˆh6ÀÏ¹eççÄrQ¯ÑùsrÃÁÁÅû§xóŠ˜ÿÆ‡“+øöŸo<>çç@§­cŽj\jµZ±[(ýíø1R_êÚ&6M•Š¼aÆÇ
vfö‹–#‘à±-6ô!b@xŒÛ&2`²‘˜óŒ8'{á2p×ïžïú/MþáŽGý {›{;ðs3Ïš‡ŠŒ„7%,QR…©µAí7šðæPµ-ÇRoëÃ–…
ctûÚ&hÎ¡û®Ó¹<”È¤0«ã"¸Eö8ÜN“;Æ>•xÂí¯ÙosÇ4¼äÇþüŠý´S5œ¼´ŽÃrQaÕ»I|”·ª¨HÐ¹Õ8qÝ÷üã¦qks‰0Á;'áØÏœ ¸®{A`kþdO^ôŽÓoÞ©‡Ÿ¥`Vaë¥Âef$vùømü†¥x7½ƒ\°‹‡Ö¡KÃÁkÐ›NúTŠÁíhÒ aÃÌ¾£”«·èõðBþúäôÃÁ¢ÏUÑÌ×¡Y´eã™ÐltÑµ´ýÀSxÙö1ld„ ÿÃ¡Ù)AÜìSŒ–B:Ÿß½{G'‡ºÈžé=töÍÅÞxpuƒÁ¯#Ï·-å˜‘ýÑ<pÇóÛ¿,'Ú[«Q¬¡
3™&¯ÃÌ\ÿc0™úÁpº˜ôKˆ×¸{¨ÏîAÏŸÎïƒ¡;ú¶¯ír¤‹øäåŽ¦_yÊŠ¤àÔË&aVÞ.ÇoÜœ8fb—¾Ýï?æ­6D«v¬VõFlñA	ñ°Å‘›Ì2xe—ñá:ÁñR8{OÃ‡óÓ2k'DÏ³uÌ„ÅÄ½LgƒI@vPL—'.,å"P/”'v(Û]ö89íÇËžôÊ+r'W‡ñùoæÜÍG˜8w<ú®ï¢·hÍOöV°
P>‰R©™Sêû:™gÅc'[‡4¨ÐmßÓ0g’VDä8,„zÿ ùÙq–_GžŠ`&1šÐÄGwz™pÒxŸƒÙ‡ÁpmG€
BÇ¨ÿÁ‚äixfJÒÙÛ8NE+t)@í~Ý’-·½`Æñ#eŸ9Þ}éVøì³o,|’åöU1Z#•Oˆ¶‚«ó©QEÜË¦Fhåá±RöŒ<­¨†ÇÈÍzÍ”“ó5¨ˆ;vòýý¤cÛÒÎÏ/íyíòË®$
™V¡·:a¢¡C;ž:‡£±)‡X<Ifý\šŽEfv{öK?“+x-#ônÞƒ• §kµÏô)Î5œê„iÍ_vAu}c¢â™Ó°I‘B~æÏQø£Ô`ñ…„K¬š‹æ÷}zgËo…-èæ##þah_ß§@[˜ÚKžý4Hs$^cŸhõ…§Ýoµl"0Þ) EÊ¿¶xœV]oâ8}.¿âJóÒé
t>—ÑjSb:Y…€’P¦}‰ÒÄ)ÞIld;Ttµÿ}¯ÍŒ6(¹¹çøÜã›ËçÎ7Ëc)åŠZnF¹f9£òw¸™{Ö°×·„´ŠDS	—Ë‹\ÀX¬·’=®4œ§oaØ|´ðï,©Â<{d:)0O®…L4„¦$yÎ
†tª‡L†,Z1k)eRÞæ’RP"×O‰¤#ØŠ
Ò„ƒ¤SZ²‡JSd‚„g—B‚Rd,ßšXÅ3”©WPF©@äõÃ¿€Ê©DIóê¡`)ìë5ðG7Aµ¢<lkÄÄh÷`"¸®b”á{	*•©jhöÃì9»¦ÔóDåÄÚàÞ¢Ü-ì\ÜCVþ±Ê¯‰Wb­k|bE*Eóªè
L†¥}-"°ý;XÚA`ûÑÝ“õJà[º¡;*V®†ÌX—L¸Þ¢vÃ0%Áø+Bìk×s£;SÁÄ|†0™`ÃÜ"w¼ðì æ‹`>I ¤FVmâÏ-†ÉJ6fT'¬ø1ïw8±
Õ¬’Å	N)Û ¶R\_ÿsò
Áë21ùhäX\è.<I†ëE‹×ÓjàÇ™í‚ËÓ^Þ0+áßô>Ô˜–#ÿ¤BváZ(éµk6@8ô­ÁUÐ…EhŠ°+´wÑ_4ÏQ1úÿåo¼í¡ýüÏ§,í¥¢üÃÐ\v:oO‹*£ðEéŒ‰Þê¡To×´Â¬D>6cÇ…“½Ê+ØÃIl«.£j†¥¨ÔÍ˜fåéÀÜU:©ÑÑ%ã?U‰G	Œ%Å-Ç…Ä£¢,qK£ç‰®”qåMFsÆ),qFv´ãp1›5yr™ßY¿2±]o:/óoÚ]?\L&îØ%~OÉtÜ5†8³†í°[Ûs7ˆ=%	ŽšæªU“ë‘8tïI|O‚Ù«bp¤m°…o_#0šÅËÀHl{^ìØ‘]Wf]½kÃ8n€y±»˜|sÃ(ü1ŠÁ|hÃÌíèkìÏ¢x2[øNC™Á´jã(	‡#ã­«}'Îó©UñÈ/0ŸíÁlNüÚÉ]þ™õ®uþO ÷î|jZn½k]G°ç£{KÐÃ1!qj’0öÜ©!5|ßj¥?«gh7ãö-ÖwBX>ü8è4Ðþí” &˜âINâ€ÜÆñ_þ|¸Á=”dž™ƒú˜¥¸2Z°’íÛuC	\Û3’šd‡kxô/$ã™ï˜ÅO]ÿ0õŽ	SûÛn™©êcCÇœ.˜¸ÿ«TC¼ÐxêGxj¸<:gWì‘×ý»$Mäè$V
®W§Á,ÙÎò%¥ß[_LÛ Ø]^s3Ž½õ4ªh*xö*Ãêe0]%ø£œ0¡÷}Ó'Ægc€Ô×³àÔ¼†{¼MRT
öÂoï¯jˆuÕïÔ¿Ð°¦óF`ÔéRl;C¾ÆUççµŒ‹‡*Ï)v¤f!ì™Îòëý+,Jéê\ e‚Ý¬×ë½u6‚eGf‡TÓ1æM¤(Ãúà®G1;*CnîC »£4‘h)6)Zo¨6eœ7+½¿9MÇ!±¬±-ï‹[§¡L÷ãàƒ£ô)d×<°w‰^½ÈYšÆ‰	+”øáIý¤<¨o÷oô(éª›Ôî¿´R°ñ;Ö—:VÏf-ðùÇ»úI=#aç?¡W„üº™xœí=kwÛ¶’Ÿå_è'’-)’ì¤‰ÝdW±åÄ§²åkËI{ÓZ$mn$R—¤üØÖÿ}g ÔÃ¯¦»gÕF"ñÌƒf ¿|ÉNŽv­÷ü¡Än}ßqƒÄ÷|7Úbzõv£Y£úÈNÜhå~0M—ýìƒdÔ¸x¯%¹Q„fRœ8~>iäŸeÒnâ—qb'fê4ð¡°™–øcSTR9¸Ä¤²–2Çã00Ó Í|ÁÉhzîç
Óë—ÉÍÄÍ¬^ŸD~`úÊ?×ó—íw;ƒ®µs°«•»ã³‘ýßn=ßfš5Mü5±âÓ1ûc…ÁçåKæ¹v2\æ;”rðÁÚƒ¬£þ—î±uðñ`ÀÞ±æu³]3²?íüdõ “Ãß¨@·U“Gá¹„ö±wdíïZŸO­Ý¨ïÊJ ádÐÿxÜ9 ê;¢ºYáËñ>Ð:£F»¨†Ž—ÕëäE7LäwzÝÎ±Õ=>îË"{?ÕVn·›!Ý:ê|ìZ'ûÿê²¥>•æu«ÙlVS»}ëèxÿp`íõ:—„ÑRÕûƒ»Ö¯h­ïSvZÈko¿×=ì,¤£=g[a|Y6á´ï§] gãp68œ•—k+l» ­«·˜ï±ÿô®ZìgüikyÍ4ëÝ»lžªö^f½\A]à5cybG®å]Y—nûaP†AvÄÖ b™	íê
KWþÈe,Ãž½c/~o¾¨Ša†hóÚˆæ±?ÿ$x€‡¢S	l·³Õ‘Ü™ÅëZy(º¾®¿¶åëíÊŠÄu¥ ÚŠöÞÜ^¹Å^¸÷»Á&Ód‹y~4¾>3Ád' éÎ±D8M°>â§µÅ÷
ûÆ1/ŒÆv"³š[,9Lj8-÷ž¾L…õ {ð¡×ùW×Úët)£õ#³ÛË`|¯€l7Z [&öÄ¾±U­Ð+Gß: ¹ªÕzïÃñ“k¬Œ•ËÕ*‡óáD¶ûç¸³²¸Îçí&Àù>ÿ{
lÒ ýrzðÏÓÎÀ„”ôvS j6^7Ð(ÌÂéõó`²p°2ÂIëŽ­Ï0ÕdmåÂ!yî& &ö9ŒJêagË
ãÐqGV`]9±JAy@Xï0>ô‘|NÇŽn,+•·qR“ÁŽ~z»ñzwÐ|½Ù<h6—Ó&0¯Þ¶›Ôiœ/
Çì˜ú—Q¹F:B›¨.€srP¬±"tkXrä•¢Ìj•pS#-	º=t»Z­ÔT
äC9wFf„)Mu»¢¾…æ)€@ºHèmËšn´™Ÿ¸cËw¬6¾!]ÓaÂÐ²¤‚°â±%N*X˜­á·Ë¹ ~}-ŽTNn*Ï1µFMÔßãÓFuÛ@ªZIh'Ó
­fÐ{½	Ã÷
Q{½)æH}Ò2õ€³>àBë:2P‡]Ú£<.}„±F×›(f qa0–;@¯
–ø,›l*f±5z¬ÑÈòÇ½®	ìƒ±EÈð7¤4te‚Ìv¢è+ÁùÖÆŸ1óð€†Õ TÀ›U²©îqç‹¬œ!6¾¯Š:è^ @2·§AìŸ®C´Ã³cÎþŽ{©«ž„®œÃäj¼-úž³JíÑ(Vw`^CI	½
©VõâÀU^r$_!U+Ï‚qÖ6¦QáE®K©ÛË`[¡iÐ¨"40«ýÐÊÆ«”Wã­Õ˜á÷õïA&ˆŽãø	˜ ú'ÄµpF>;ü#pŽPN°*àO<±‡nÝw {I4¶QßØŒWë­V¼óF¾»7ø B°bÈ(K&Í(|8ðé8m}ÞCV&Ö^g¿8ŒkLqNC£o±ÕguU0fµ>(…2Gk…ç‘=¶<ÛYCÐ´	¤®!4€°ù‡ö(Î©Wî‹i÷¸sÒ} žndÇî“bùVh½îçnoÿð£µÓ?=ÌÁ¶³ºñêTþã_¹vJõÒ…õö¹@7ÏòØ¶¦âHi½†ÁíÔ0el_gr¬õv•ríËó¢ÜÍûwN»kívwðÿ~ÿp	ÂçwSà`gàEad9nâqp=U·íìw­ã\\/Ä~£¡@û‰ìtAÒúÇ¿ôú]^ö;$xwÁ¹±á­®r„q³È±®Âèû(´@ÅñmO¢^©x“THxI[CÈ§þ	ßk¹ïgsÆ‰¹¶?y?àëº E=.D_£ÙXCãÿÞšð©l~ûƒA¯k:ƒÓ“»0]]MeJráâÜd%Q˜$#0NÀ²™ÆYÕµ&Õ0HHå\oÝ»cŽ»ƒãß¬§{{V–h{½þ—‡j°`í Ö«çFV«WO¦z=X“îü_''Å|2FÃïðÇO¦’ú%Úö¼¦Yá	lPùg7‰[W‘Ÿ$n Q-Ç0„Q\,+÷Æ›TÎƒÑ&%óW¢}òÛÉ {`u@YZ½ý½®Õëî=@Dâ›¡6èIkä{.Þ“	É}¼P/aÊúà×=8ÀóáN×úÐ?>¼›Hd7`è$±b?ºÖYaZÖxË™h©ñ–3ëtãm8¢ÇµÞ¸Ïd§xr
 îA”OÂ+mŸ žÀhû;“nöypzôˆ½&Ó‰$~ÑŠ)=ñä×zØŠ
Gâ“.¨rf
šYÐYó­¬ÇÇz¯×9ù$,sò×ÝcodÇÂ(§eÅblÍm?dÉ¦pä,Þh"ªï°Ù”õ?¡ŸJn@QOB[Å}5v××YëÛvn§jîö¨àmOn*:ìšh©fláf­E¡e£ã.§ms+h™Ü,Ò7|ä¶QÊ±ýc àdÇÐ¤p·ìãFš…D$Ì³Ñ²¸a‘»I©TÚ2Gí‘b¢íIÆ_5«ö%q4#ŸåOˆê!>b™±~pÎø’âkkëÓàÑ¢í'7Ž¿q$¦Fëf{mò­‘U0(dA’GÔõl>ÁšöX<¤K³Œ8°¯ýñtÌpŽq#ü°_ÜÑ%üÌî—6#·õZî¶›˜i“áq÷¤; ÔTc˜À²âqà?'?8á–n\ör³Ñ|Ûhn4›å*úŽ›úÖï]x<¯£—&…Û-ÖDçð]¹ü”X)ß½¿‰:¿¯R©•ûö3?9Õ {‹Ó-_ÙI’çÇ°ÈYÂßhžìÿ­«ÈòÞh½tG¦ÏlÐ`7ÍªïØó‚ª´AqzŒoü~S#Ñtk’Ç]ÂÍëîN5'àGDnP .{½Ly9Ð¡8ui“Ößóuír( œ’y„äwì—¡¢³[¤>ŽÜhbŸ»,ôn¡Ê­{F*áÂz&z7q’‚±6%ë}Éƒaäß`Ã›áh6³ò­èxr3^¸EÍÚ×Øl±þ+hÖ¾<¼f˜Rp³%Em-#!{¯òrÎM	Ü.Ò¬:_UÜRd¸[À8=£Qž¢Jjn£9E_Uå¤ç4rSª&Ý¨zbuþ°Î-·v–ÝÔæM&Þy³È5²s‹¶!tÚPYH…”ìôA+q×ÎQÿxÐ\ŠŽÝíØNúv˜Øg#—uq)HŒó£0JšXáGuZŽÔÖR¤vïGj‹•dµDïq÷Ãé~o],Eé^žÒnàÔ“°?‚Æ]écÔþh"•¿{)mÓ, ‘ôãží$I%6ãócHÔƒ–"²U ±<ôàïLfºÍ¶í<Ç¸üVÎ$OÑùä„ZP¨¾kReºm4'¸hQ`>+kàŽFªÊ²AF¥‚#Ij.Ê?‘Fø‘QC¥[2g”V5b25eÒÜÇ›¿£‹í3.›9û+0·Ý+Ìg	fGö<:w ZÿÅ1?:ZéXD´…=aHÐŒ˜ã~ôžœí*Þh¯=¨;gû„ˆÙŽã…DäHFÝj»ý¸1?c³¿‚yžSÑÈ³·ï—Ø^¢°R˜ê†I4bøµÝóÿÚJms@Æ"<L)üMÀ #w7©‚8?Ç'mû
çŽƒ@št¢óä– ˜ „/†Áê°±:_øŸ6{bK/úÚüVKŸ[Ús[{Þø–¯·©å¿Òž_Óã[gÀÂcX’cþ>)Ù£löœN™È$LaŸFÌ}V¼·e4°¾ÅçŽÀt¤óò”JÚ ž]¹SƒäN*hP:bÒ†Kz—ÝòS;ßö8g'è@ùš¦ã3ìÇF£!eî#@víè|¢Djêkr·6T™´·$ú ªÃ‰’
Ö¯‰d‰ƒR<‘½7w‡ŒÎ;$áwq`¤VÖÆ&YKC´ðO{½¬1 uÊaÈÜ œž_0Â$QÜ`6¬ ñ÷ œ1 [7p×BCB?‡u»b ãÇö©àð¯®¹ñ9¯Õ˜ù1B`+rËwcÈƒ5|Rªt°ÐNB¿¢ƒ$N@€¢_¨OµBkª”êKI*ë1	ƒ$Þ]Ã‹ˆw×‹Ú‹¶ª*\_ßÖ°UOœõº>vL¬h¤7·3Jy|fáld§ÄŒbÃšÙ5x¹¬I­Š‡wa
I;i"?¨ì _¥;}£Sêûe¹üÑMÔà¿‚`OÜ¡ïî
aÎÎVÂ	OÝ€üÿ¾"×aeô…&®¬«Ô
Z©@Õ‹§FÑÐ&Ÿ´b”Â¯‚‰ýH‡“­Èmþ²3OÄÉ<Ük;ó;ºÚ«èÜ­D³J€ž²S*‰ÙQ6s+…áˆÑ-wø'f1\R˜†Þ9`…ð:(HCW±ux²¿kuz½Y)õVçøã	WEML<Ý?T²^/pFôÎØ5¦3[ÔÇƒ¹<7Pçxc
{q&ë+‚j$¼m*jvw+UŸš¹‚Fk,œ¸Aå9p°&ä–,
T	Û|ADÓtÉÐöõ	œ)h <ËsðdÅ³a^ªÁ2yh×XŽT´©JbROj=W/ƒgˆ±“ÞL¢7Î,£IGj…{]¸¬ã$s¡|ý=ŸúLœJ8ßbQÇ<*j™Î¥¹ªJ§V‹ª_UKMÄ'& Eœ$ü¹»œ¸ŽŒFÜ‡£0v	ýíÜ¬+Ô“8§xf‰ƒöh‰òÓ®Üdä©©­wå'ÃV‘ÉBáq*4K*Ärªa¸TØ>c°óÊÛy ú!ù>ÌœxC0¼A…TÂ<B_ d8‚e£@†ãzöt”¨ò§Á÷ ¼
ÊÅ¶¶PëD')’½ð(ZÈ2lôå(€‹ƒßƒR…Ï¶MVgíW°8láCÚðÐzuU-§g´@éEn¤ë)R"Hså{7ª£T+Í¬©zÄ·%''W¥pˆÉÆŠànjGNè\óh3²¶:ÐðÅÎDÆhvÄŒ¾HcÙ¾Z8K¥wr@bj*à9%Ì2õÏñÌQ<”¨ñ0§)bwd¼«VËH™N}çÚHqì,`7È%bÚž2ãÞ`b¤dœ{v»{ÓÞÀÚïïzd×?ÈÂ\°ìsþX“=¢:$Ç¸ÊsâˆÁ|:o«;Ni UÊP¯.ê•uˆ®¬ÓJÂ,Õ*m5¯W›íkVY….``¯’„ÃòûÍ7<ÐJç·næ*8U¸j–æJÕ¹ÃD+Þ„69_$î|ýdjdU?§”ÅÜ`¨å¬æ4Lü#4ÌÉcßMÃèMÈ%@W´ü%ôÒk^*‘ûï)Ú|EUcû’jJ3sÖªhsB±$
G#@4¾ Ó”QYÌ±è½³iâ–)¬¼4UXÖ\”Ò’Õ–Û™±Z‘‰ÜšDü¶…WlCÊZM³B}¬D¸ÁÙ*>¤!Ò,âK.ëv9-ÍR‚N¶$}^\Jƒ’2ÒtzÓ–²HUŸ½ˆ% ÌPéø–©ÿC¦‰øé§	$~‰©"·µœ¶9­ ÷dQâëÌÉë¾ú;M/ñ=§—ø>Ó‹ViK›\øÌ¢&–l1íS8¹˜ª5Õg÷œ=–>äÍ%GíƒýCv§~¿TïüzÇê¯Œ¦Šìyës§wÚµN>íïŠ ´^Uæ?4ù-aò?Þ¦	6¸pòË®6@~ÏyÅ§\¢ûƒÔ¶›´j“öü*“–´bš¸ýæø1Fdà\
on€/ ´%€k4öÇÓ§Ü=+g°”eÅ>¬=nÑÄÀŸÛê†¿ræä3mCW•×æÓ‡Íº`jS$ç“ø »šµfyáäºäÚÛ?”ZÐfÐ‰œ )C¦ÓËš 1ÛÜ”Wèµ[.(òïØ)T­R³‚@ð-e¾)‡Wj¤j•Ó©z¹HÇi8v÷A‰dÕ{EJî;Öª²çÏYEˆïÏBþù§è÷\·-2© ?Lµ@r’~þ‘U‡ˆ,x éÜ€±‚’Ÿ^¨A«LõÎlá[€ÿo³,´YhIüëÿz«E›ôÏGsÆ'¨gvTÁ›ÙšçøÜ7Dì3¹Ç/£<êwZµÓ÷	GoOÝMàòÄœY£þ”Ÿ™­@öñ„ÍøðB2øüsvøú(ûý˜½^øp:æÏ‚àMlænFÞš5ÅÐÎÈ^ô“0ÀËyð4Ló0A`¢sÊí–^B6}Ã&a¤¶,ß@s—>žJ“Z¯Y_:Z‘p2WKˆÿíêÅ‡¾*-%ôw{šôz“ÅÀqB@} §$²?é ÒT˜	n‘’Ÿl3àZb°9¢àö˜íœ¹®'|çgS/½p'ÇÊZ’Ø:ê ç¬yíy"Ñõød™he
œ¹TÀ´?Uñv¦¸ídàmd
8nî¢?Óa|›¹ @ÝláIÍ;Üz»¹Y§[t•’²Žkx€é¤@ÓÌè*¶Ý ‰n´®V¿˜kA0Ðª‹5N`öÕe*•žˆ¯Ð@’äŒñdÌÖ0'8vìF~ìµ SRPFª£ùŒ&±a©I0ƒ\©WÂˆU|jˆù0Éq®áóú;-Ûå’ShîÌdgUˆ_Í¸úeíú{©JP´PîTŽT<â!­n,ŒŸ û-P5«5ÃÎÝ ®¹ü°f§WÅ6˜Æ&ñRÊËG¯›„>Þ‚{UIù”Æï°4áŒFS¬˜Ü«ÝžYC=ƒAºÑžUp½v/S<1 ¾dx­”YD]Upµ  ‚:c™Êó$©nß•Ï›ØMô¯^Çï­ô«±ÚÜpØé`'U~Zoa‰½Î tlÝ¸v„«uù>AgˆGÇ¾‘Ïá4JÓý´PZKi6º˜{zA1q¶'ƒÚPS‰°ÄÕúO×ðõ:ýz_›`Â¯x«;2
QrBõŸ
õ˜©¬Jbhz¥À.,Q¡9¬ªEœÙû÷ "U½„YÀ€Eód¦=1 «Fp4­E¹.–p3Zsy¶ôí²lbxT z>ÏØ²cEÜRr£¾•vË9•²jqð/ôZÏrâcÐú_în…0÷ŸÒI<7þýÐK \:—A®«ÛÞf.…HWøWÝ´Ø¹±?žŒ\3Äfþß% Q)×œh-ÔØsü1ã$[Ù›ZŸål,Â•ì*£[³øWÙYäÚß•0?)¥b:t´™ŒÂ„9\ùÉà*^*(‡xip¯~ñù^n`šäáetã±Ÿ¤ñÜóMžê\àÄŽãä"šZ0^þ1i\¡áž³˜däm¯4±Ä›ôµÍé|'Z“ÁkiÎ°é  eë"‚UÅº¸¢	Ã:¼
ðVÄGŠŠÌ«! ¦<¸ðcÜÁ­È˜Ù,m^Ýû/ñ¨¡”/*ºŠÉŸ<ÝVd¬Œ xUQ(­-â¡Ðtâ uˆFòÛ6ü0lÜ`„ƒðu#ÜÇN‡œYˆÇf±)jB€À+/FnÂëºŒÇHBÍKÛÑN·,`^ÃZýþ0ë¨€#ÉÈ¸±œ’øŠ*ÝîQQ×àýï³ju@ÊgÖªaƒµ|Ýl§GQœ)ÿ<R,z$€QZ0jì}a'ü¥â6Î5V¯óÌwÔ.PTc€ A@‰ºö\Ô(›Í·¯!….GÂ+Š@ˆ¼öaXƒT[øFµQƒ!Y=/vÅlA@)J7‹ÏL? ŠÃhÁæ·Õo~[­™A¥À.>ËdÚ5C~GOÅ‚¨RX†î~¬”½+Œ&õ^ÀŒƒ“OY¸ ¼+ØO#AeiÞÖ@o=^Wu.k… ÕÐÓÇŠ˜m¼ï_µO·½l˜Ærœ8Øu¬¼/¶ò§{¾I%#@å–|©tÂ¸§ÔÐVv}»?ëë¼ÕøWÿ.XÂéôJÅH¯
@úŸ3Ð¸†#µŒ7ö§¡ù`ª)­7X]í¹A 1Ÿ¡¹Œ‘9Ú¯„Çæ.3(@ò ¥¯oïö{¿Ià…~–˜åšBfªP=—¾ã:K"Á³=µ¼-Û=Ó$Pµ-wí©°œþÚ—›ÏîŠÌXì©œ5â„^q”…›d¥
n­’y/¯˜?¶Ï]öÆ¡Ì¥ÖÀˆ–Taì_cØ3 ?‡áÈ5aÎá~¬TìÈˆ ˆÇÛZÍYˆöºsÃ{ÈdOH¤$ å•JÌÿ(Eµ’"Ç±›ÕxhN4 ÌVÉ÷÷²kÅÜ ¦KuÔWJ†Â‡idýj Œ•W-çTCÕíä=jh’Ñä‚Yü‰§¦.­w4s©DrqÆPšti-ðhAIåÏ.1:É GåkÔ¥~¬R~$¨¡pU—åù€Èq½”ñ=K•Ì¬èõB (|D3M~ëœ'Û<•º>u•*ækUNõsÚXPHÝ'N‹Ò´yÝj~@?rúÞn~Ðå®¹]4@N¹O‡`ùÅÞtôŒ\ŒV×><`çh@…,±¿ƒåy€‡Ðb€¾dÇh<ÊÙ™é ‚±ÒÀÑÃs¶–>@‘
ßÑ'?Nè xŸÖ¤;åÆ_Zñy8¨üû+nàH‹}øIsÆZö£j´jæ=“k“‚xŸîZ
òûí¯ñ&,GNèµùµÕÖß[øž=-ªJ«ÝÂ4‰ïÌ®âýæ‚Z"O_ñƒ‹‚}ýÓÿ¨½ª|­|-­	â"qC®éñØÈ=À!°òúþážôÇ³pZ¼;ZoµF“Dû–‡Ò‰óÔýÓ:E½®:Rü‰é@ +’RTZôwƒ@û:s3›êÀ"õ!ž$õÃt³äB¶(¼bhäÜ<¬&ÿ.—ïHÙÒ÷”øn¯.¶g¤ø‘+ÈÑd{îkûÛ×±oe
´rLh×tð“Ž´I‰&lPÏ,óW*³–YÞðý>£kFvÄ
Z:ÆÓÎQ¾[í„ðtfüÌ;àó…®ÈZ!R/ü/ÐœÇ’©[2&G²ùk+´LE?˜_±)+’ê{£õ"ŽÐ÷¤UÔœN3Yð·z¸Óáw˜îèC1¢Þ|$?ŸõÈ56ÜC±£1¡¼•¤·’ïè¥ÑÇëËÓX¯¡g·òÙ¹uX›bbôÁŠl†k€NAcl´Ì›]þÈ)©ã8{› Îš E\
ŸÙ Hê,%8\0îkbb3›»5ÞŒY ˜„;á|!?[ÍåæsüÌ§Gó³æäb<_.ÆÅrÑº£\,Å)dÖú:Q#óÞˆ>@€ÿ_~„üÎß¹Ò»ù7ÞeTæï½ZU&Çü¹ó4ˆ§ŒýBP*07µ÷Ò¹X7ÒÉ½0ÜÍ“sËÌq™B#´HŸÄ_Ê×. ½ÐóÉ/Ñi}ÅMÆ‚?œ­j«Bí‚BË×åÀ•æÙ	ò&öÄÆ—¹Ü!ß‚*@ð—X ýyö÷êuLsgøñ9²-ýµùò¹# …»…ëóójTW†ë¿¸’Áú”,RéùGÅê/é'MqfÿW+´Áæ…ŸVÞ×K‚H*ÐƒÂá™qóRñJKkÄÃ&<ú»¿ 'ãîÕT±^g©Õ€]jQ¤­ž9F9ÝB¢‹Ä|Ü“IÆØÛ¡û
Òe“ð#ªä¨[v|›'væ¸;oÅv~¼µyíý4çÌÍõ«M§Ùl¶ëdëŒU	þ¾gKSÂÒeIš¹­¬X¨Vz¼œ±Í¬ŠùŽYlÖ!:Èa”ÔÓ¡Ž,q¸Ã(ÔžÁè0	UMËÐÉy(¼š•)7ÏgfMóÝð4_l¨kùsöÕÓZ|8iPÿ®gF–?çúˆ§D$B¨„ùéÐÔ2›¡|•ûF©_þp·ØV¡Û»t&óå.?¨Yd"{øøÔà1%ô‘&Sº<ú#¦?ó¥îRhÐ¿Þ$?ùiIýÏe½“A6BMK¦xéEÕaá¦ÐþÊ»Ç¯Ý¶™»£la€Á‡=–/Êiæ¤CñyâN‡9A<L7ádp_Éœ½f_Äõ‡¼¼‹s³&O×.Œ°àå™:†VjˆªZà´@({Ë6ò×’±:"ÍÒÉZÇ&ÿ(ó61ÂÂÅxØÙûÈM%noJ"‚Ð’ÒTcšœÜÖŽ@9Å€Ò3Æ$]8(äöí}"8Š(%gšLÇ¬O	Dõa Gëd„":ÿHÏ{Èc®´ÉC©Wä Q ¶ŒQÂ½XJIÿšŠàõ†¢jÙ«`/ƒ,ÙhýxtÃ‡cªÂ4Øþ™…b£Ji¢5çž!L–ò6ÃiŒEÈC\ì7N/âAÙéÁK¥-¯‚Ÿ4ŒŸÃÄJ2NVgù˜¦c)áq^Úá\t~ÒzsŒ +^ÌŸøaüIÂ;QÅ:J&µ9Å™TqFŽkÆaÔ¿’‰3"¤Jòš6N¹¨éz40[¦»?•	ôù«ôä ¢pÚòœYaX3Ì«¿Vñ
1ÑnÀàð«y¡„¢®S*éFj¼†Ó‘C7’Ò¼$æƒæu·Ýñ=yÿv†< v9'P×l‰gÒ5[+é}ûs-49="âýâ`†Œ5”¡³{zÀ\pRP—‹(¾2¼àÜuD 6ªfasÌäçIƒ ÝÃKhµ3?¡­Hì¸
ï¹$d«¾ê-4jb˜T³•×æišv•w[ºMGôú™(¥Û…A
ÿ_–Ûwä¥Á_xœµVÏoE–ª‚j—Ôvâ'iÜ‰KÛušxm'¡m’Ç©­Æqp¶­*P‡Ízl¯XïZ»³ªp¨„¸ –ÇõT!ÄqâPÁUBHåÇ¿Ä$fl¯c«ÛŠ°,ïø½Ýï½÷Í7oß{‡>‰ßºyûŽÛã>©h²j•	
iÍ:¹ýë»gwëTžáÎÔB=î–Ù¢Šjr»Û¤UdÔÔ•2ªŠ¹><8ÜZ|~4ø‚µˆ¢Z7%5†àÑÑ[E£È¬é;­{±Y—ŠU½†xÆŽ!Œ­„€4S)ÇÜ.—µ?&5,™"žO;ÆØÂu¸Ÿt[‹‘È97¿¾ŽŸ„uxí9|? ðëÊ–‹Zj?¬”‰F•Ê.–©¡†Ë¤‰+e~‰ÄÐ)nê€)fOÁÏAðC>ƒPËÐ8PÛ¾YøÌ7E¢´­$*”ýFgáÊuó¤äÌ²&ÕI¬UK–=Q­º†6˜':Û²5ÆH%z“ìÂ«©4Ý¨Kªò6)#CÚy]<;7‡¶òøÊ*Þ,/–Ò¼–Î¯£N—~É3ûÇ¢ƒC¯RW$EÅ²ni¤äx<ðÝÐXÔÆŒw0³¥ôVöÉˆïxÂ^bH&éÅ{#u¾ïæ' ˜ô¼Ž “Þ¹"X%M¢*Zö…É½º¢ESVÕ¥·Ú©YåVxŒ+'æîH EÃc*>)ŠF5±~K˜™N'k2ÒÃaÂ®WÈâÕÙŒÈ¾ùâÎ/oˆŽ™|¨>ô‘ç8'N°’öfdòYœ)eƒ¥§ üâ›óÈ†Œ™†t£ÃNMEB¨[k'÷„`×Ø“÷"‚þ	gnøS#´F¸p0­:erÄülZ&ÜM†ËSS1$k”Ú,å­VLX~ñ•¾€-²â=dÅmqˆE1½Ž¯–òbÖ™¢‘È &ie¼½K‰‰w…R¢1½÷›D¦ºaÚ¡ç“<ôý¡	[€q¡#WÜŸâáHx°¦›ôYB$ûÊ(eÓ«Ž!–FÃžž*"•ÙÅz%O!Ø÷–6œÏÝ¸þóRRoPl²¶Ið¶nhì¤÷ºïŠ^¶£+ö§«}FXH8+Þö<&zîèÙËÈ¼-ØâÕ,WêÆÖåÂ&×¾c)Æf}}‡p­j¦ÅêQtFwjâ¿Õñl§6¾`ï`¶ ¿{œÁþøÜ`?ó:µ\"ÿ7÷çÞO¾+¾Ø) ¼ÓÃŽÙ?à‡?|á6÷ªnš˜urÊ$Îùÿ4qŠË1bóòr–kúÉÍû‡ãÓ.®æVï†û‡F ‘ç8©Ž`¿YÄ\¶T`gDÌ•Š¢¸žÅb¾à|‰Äðc=‡*uÂrSÁ|Ý×pì†îrE{„ð¤Þ#Ø½gm=½•Ã…ìj>Í[l±ä˜N88;RQ%³Öi°uRV¤N›½›x‰‹àËà(4ÖNÀµó×W¦ŠƒiuWí|äšd h™˜2$B	E×xàÎÏ±E©¥$¬íy¡¹;Ü2Ü[à÷‹A¸RÎðQÀlH2Ÿ@Îu…Æª"þšÇÛŠ&»öpq$‚¿?8÷\°¹„¿rq€å$låá§å3ðñ&†K7Gá«÷<ÐXYl‡ûbÁ—Ë|v™”+Õ3¸‘nDþiCN3›ZàöÊÐ4:ÕµE²%ªIú€ za¡5¡µÆ,(¼/þLªv¹!xœeQkƒ0…ßó+îì‹–ZÇ·1u ¶¨+ëSm@“bÒn…þø%vëZvòqï97Ç›B±
?Ü„Õ”KêÆ„rÅF‡GX¬÷a~ïŠÁí*E˜zh²ç„6¤!Ž³ ¿ÆI„&š0No ìº}Ë¸ôŽ½ªÇÃå‡ž"4aÜˆ½IË gë4ràt‚_jtÞ"?Œrœ¾'eŒsýp.6—!#ÆënO(XuOæ[ëˆ¾Ü°?ø\«ãŽÎ·/WhÏ™Tä–É£ôL§ü¥ª”¡h•¼/âÌÎü4²-ó?kÖFßp œˆäŽÖ:Èè—ÒÑ2Á¥n1{ãu”ñ2sftË4õ³'qQÚ#1ee¾±-ÙWƒr;Ñº!Æ"§j`ô c0^Eêç%$¢ÜŠO`J÷´TaÝÍ”ö¬:<J`-áŒâržt&zIÖ\'xNÿ‰¾»§¼ì„Ã+xœëwŸ#>ÁJ6Ò7Ä9>4ÄÓ'8Þ#>žK9%5-3/U!>$11^~â²2õ’Ê‚T ¸Bi^qfz^jŠBrFb‘”ZXsqékMvbÔœ\ÄhÅìæïäì:ÙŸMiòFÞÉûØ%&ó0)MþÈ.5ÙŸIar“ÕäJùÉ×˜¤'ÿ ²-™­&Wñn þÄ¶,V“ë€x?‹Õ$V«ÉŽ@Ü¦E&_àf™|›h·ôdy6ùÉ®lV“Û€¸—G|ò= Ÿ…=|r»úä	@¼]h¥þduo ñ²“ë9E'q™MÎç2ü+hžØäln±ÉÜºP³¥€æNÖäQÊc4S×Û/(>Ø×1($Þ3ÄÕ7X‡«V¡83¾,5/%¿(¾87±¨$>³$57>ú
žy%©9
nùE¹‰%\Å%E¥É%
ye¹©ñ•¹%É“MD&§‰DM>$¢=ù½ˆª*HjHN~:W5(<1t™Šê	•Z(¥—ECâçæ?yŸ°4Xþ¡°†Œ2ÐA™i
@@â)R¹ ƒÍ {¿^xœ”MSÛ0†ÏøWlÍ%f0tzlOnb¨gÃ8@[.Õ^'š‘?FR 0üxVR’`:=dâ•ß÷YyW«óX\Ï~…)/±U&¶š×åW¸¼NÃ/gŸÃN†‚i”prî¯Û
k˜ÎgE’M‹‹$½cZá-î-B/ÖKÞªóg÷ó¼c^Ã'§¬&÷Ù¢Èîæq //0,ÿ8šÅy1¿Mo’"§ ØâAµ¥XW~ÙTg+ßó®ÓÛË$›dÑ<žø”Î?ÿ¾#(d¬AÕ³’¶×5k+X ¦×†TÜÅù"¹Ê‚Sïhz5ŸGÙ¬H“ÅÍÄ;:Š³›ü÷Ä\µŸÒ?0!ŒiÇT/\¯ày@­û¾“†`@Á—Wa©¥0è’Øb7ÅA¶ZvB <…Š«^°'PZ®K½–H^†¶ÏwUøúöéCx«vÐÍ'…ÏD±rƒ)Õ•œNKºv˜‹ôÎ^XùU¡ƒ:&E@tšN"é¬ÎºwÌ¥èèìæ©‰FÍVwh¦ÃÅÕjë¾°á¸ßI]íÖ~EÁ¨×¨Þ9ëZÐÑ~3»xÜïÞ"†ª…ªÒ0"­Y¹²60k’÷šXøWÓ€ó®…Šiæš³I;´0òô³|da-Ö»Å1¤ß£½NÛ1 ^ç?£7ðé¡°„w[±v‰•Ûú0d9jÉñASý7
÷!F¢[šºu·ãƒ©²´fÙèPbù°=þg14—l‰Í£9¥*Ý´šÍ 1Æ<JUh•S`i^"Yßox‘}r1WGƒšÙ`B—&É/ÙÁ^Û,Ü1ˆxÁ7º)àõîé.ÏbsQ¾¾ño»¸xœ­VmsÚ8þî_±u¸Nè`ôÚÞÀ‘ž“@êJLšË½LFØ2hbKœ$CiÊ¿•lHšô>Ü´Ïî>»Ú]ùàÅÑ”ñ£)Qsç ÂÑÙïÞ€E”+ê1åš%ŒÊ6œ^«Þð„ôR¢©t}*kÉfs­FóŒ>žz!¢%©AÀ£ºÅLæLÁBŠ™$à2‘”‚‰^I;°9D„ƒ¤1SZ²i®)0„ÇG½@&b–¬ÍQÎc*AÏ) ÿLHìæ|x	ç”SIRåÓ”EP€Ú}›35§1L×V¡o„%è´K4¼”¡\Â’J…{h¡ÒIi±BÂ!Ñ†¶±0jUäº›”­æ÷#¿0Æ­Ù¹X`4s4ˆñ­XšÂ”B®h’§5´€X¸
&..'à¯áÊýáäºƒX=(¥KZXbÙ"ehc’„ë5G{ãÓ¨áŸƒ`rmØ÷ƒÉ°†Ð¿ƒ#<	N/þF—ãÑEØ«„Ô2é{:· ­L`cª	KUó5^§Bfis²¤x­eKäE Âbùow–
>³"ö>…`	p¡k°’‹D‹Ç·‰Ú÷÷YaÞ4DømŠI5ÂÑDŸ%h¾Ÿ
!kp"”F¸É—Ðh5›¯ùºÑ¬Áeèqø9f!Ôt1Ç¤Ÿà…+øUÛúÔl[d‘ªG";.•Î¨Š$³eÒ¶ c:“TÙúBí©Üc²i¢~ú½Ïƒ€ÓA`œ;g½OÁi¯ë\ƒI¯›³4ÂI¹t°$ÎnNü°×Õ4[Ô1Ô¸8»êƒ^·r÷°©ÛÔÒñc©¤¤Tƒ?zÝŸoÉRÞ­êVÛT¤qµ\+¼öZU;÷iyåJoåj&UÇYÍYJaF56··W©kº©±p çÖW÷Ø&ŽÉY\µ˜Ï"•»‹ÑÄŸoÊãNÇ.V[æ\ì–a0<oÃ•­$('Ó”Æµ¢²2;»´ÄÙWtt,±X_¸¥™"áZætßOºõcoá±ü¯÷ûD¾$)‹ËyÑ¯RÐwáøek‹üŒ ¹o§½oæÂªÓÆÞú'gX)8€ÈYžá´®?o“*9±àX5ØL‚÷ÜJ‘Tþî˜,2^º”E±¶m_g¹Â+\ÐÈÌcbJÕ4ÿûGÃ–õâ2s¥ã„9N’óÈÒ^HÆõÍ‚(u“à¼€;­¼‚c8B+G<Çé×:~YðEv‡‡PyÕê.«-±ÊVÝÆíûXÂg/\Ü*½Ù‡¸}ô‚ƒGæœrØ•vFÜ}¸–ÆÎé}Ö¨é¯ŽmClÜ‘†\c¸›€Ññéð2ÒA0ìuÝ­#›Ä:ÿÉ{­Àü½ýEÒw|9ÄßÊQi·ß¾Ûìèìd°òÊøËÈ-…(¥X»™üúµÄkÆ•&xþÆ”CÅ”3ì¤û[|™QÀGT›+Ý?e±i‰dîŠ2Ú<–sž$+?3ˆ\?‰4ö-–CóIÄxØLÏ!R1»—xæ uº­r™âH{Ól=ÐLVûŠ?ƒ7}€P‘úYømd> žAú	%:Ç—uÇUïÒIsœZ÷fìÚ‰õÝ+Œñ›#éÚ»ÏÍ!2|‹·Óß>˜ªíÿl™œënó;µP¼À;ü<¬.Œ}šŠè¶ÛÀ½]y…³Ç'™xŠ}¡û.
ìñx\dæ]úÿ½‹¨=ûAË£õ2È’äê>m‹ÎöwûÍÆ•=0±+ÿ‚ðŒ¼¾xœÍVmsÚFþ®_±!LbZy™)§2‡S^âºM'9¤ÜXÒ‘;É„Øü÷>w¶Iâ´ëñÒÝÞ³»Ïî>§§Of"9˜1½pžÒxxü‡{*|žhîöž¤"\5édxê6ª5W*7b)WÎSXwär­Ä|‘R£VEÃ³Ž;†µbûÔOüªµ™,„¦¥’sÅbÂc¨8'-ÃtÅoÑZfä³„„N•˜e)'‘K‚	/Ë@„k³”%W”.8Á¬I†öåd0¥žpÅ"f³HøT$€Ó¾Íš^ð€fk{ g"PO—¥B&-âûŠ®¹Òx§ 
'â>IE{,5a+’Ks¬‚X×dIÙžü~æ÷	$»Kd³  ò[‰(¢§Ló0‹ö [ºèOÞžO'ä.éÂ¼Áä²Ût!±Ë¯yŽ$âe$ ŒœKÒ5ÀYwÔy‹ÞQÿ´?¹4Ñ÷ú“Aw<¦Þùˆ<z£I¿3=õF4œŽ†çãn•hÌMP†¾Ç¹¥X±O™ˆtžó%Ê©YÐ‚]s”Õçâq1òÑ,ÿ­f‘Læ6CØÞSØ"R"Ó}Z)&Iå·ÕÄéûzæM¸O¯ê0bÉUÒÇ)ÌÑ!à{‘”jŸŽ¤Nanøòˆjz½æÖ_Ôêû4{y^D^Æ1ã”/ ý×ô«Î_«3óúÛ2öuÕ—ñaqè˜k_	Û&M» ðÃQè|#/¾Ï¢HÛlïÎ8uNûgQ*–Ò1ü Ù93ÍY ˜vKü5!SVÅ&ZäÃ¾-¥)Kžk2æ¦3±
i«öûq»^À°„Ek-t•ÎC(SšçøŸñH®lP¡ˆ¸«×H56sI³HúWw¬®%YÇ3®M6@‰9Ó™â1Ä0èwßõ;Ý¶s1êOºíE(uç|:˜´ë5çØ›xÆý?»í—µ_^;gÝ‰w¿ôú¥ã ë?yãn1,«¨f¯]ôú§ÝvùæÎ`SµÝ‘ïŽ¾ÝUœæi8´« ÑqæhŒ¤]ÞK—«™Œ‚Jñ¬Ñß!5*$êñý:öuºÝ×sU«8ÎjæhÎS(…¦R3h&ÍUÉèF‹éPNUïÇÐTì:'ç«|s>œx£“M±ÜjÙ‡dk–SøˆÕjkÅý…¤ÔcÐœ4éÂÎ„•OØ,âÁ~^õØjyªpä
(ï“R“×.UßõóþÍ®£~rÍ"úØ$·œ‡W¢Ãg­åg(^}§¹snß†–|Ê„Â0àº`jžÙÞú1&×Ìw™pÇxüE¥²%¬Dí6•j%ú»e<§>wÚ|¤öF‚Ô5®åÙØ¡(Ü/ Ë‹´Sà(Ž†Òºi1Î0zÉ}s“±|È~ÅƒØˆ?pf‰o	PYò!5ƒucmÊ?Ñ-|I®¸ÓÃCBØ¶ÞPãðYÎ"ÝÛ£òªTF¸²|ƒ–Þ”z¦äøI	¯:Ýìš”zÐvÈ7bHL Ð6èJÐ¤Ò®•ldVïkd6Ž£brÃAÒ(8H2háímnïÖ˜]qò#ŽÐmD¢SÈæc6ŽQ:aîÙš¢:<ÛÒo>¶;z–²miúŠœ ÷sØ¶°™‘ãÞÚÊˆUœÍ4îDjcÄ3IÛõ;Œ»¢%×1/n,°³!×Eð*u­’¶kx·OnŽR£÷w8æÏu¡áÌH½«ÅÇ;
iàn>ØøÇ˜Ñn"®[ôÐ}èñW&(ÎgÁˆ÷÷5òú?ËsôïyŽ¾Ÿ'7×|é²ÈÏ á«F±9ßNž3žžµkºÍÇ}~ßå·ÄVWôüf©d¥übóKŸ¡^úã¶@yo¯Œ_ú™Ê¢RÉ½zïº#ïWÀ^>‰_	¼Ýh‘±<Ø
Ù-Í|r£Š“yEt§ytM*0š’óUË’½xœe‘[nÃ Eÿ½ŠlÀ0æ©+‰*kÆ±+¿N¢fõub·jÚ?ÄÌœ3N·sÞt=½g¡‹ä—)~ÞisŸs&t–¦KôT_b¿Úe™Ó±(RÉ`€û4Â-1?Å6QGê	¥âçðÅˆì|ÿ&>´#ôêûÓÔBj×Kªo§ÉãAS"¢Š“óRpŽˆÞ´7"ð’û
Á—Ö§1›añíeýPæeý,³{7ï¯i¯´Îà¥ëÃ3òU/âLËÚ!ûîšŒVjAšê …×¢2`´rV5¼ÆÊ)ï'•*×KtF¢.§²M__)¦nWâæË²Ó§kÖÏÛÙcÕ¾4g_™ŠšÄ¸öxœµWÍn7>WO15rp
‹j“ôR ±Ú("©\#'ƒÞIŒwÉ-Éµ¬žŠ>ƒ=äYò(y’Î—««is¨869óÍÿÇ‘½©1bˆað, ÏdnÎFml ã__!ˆ$L½®qáüµ")„¦õn
‘•úkÁ‰Zº´dŠÊ€¶¥ÀÀöÆµBÛ4ÎG,ÉZ]Óu™P e	Âs^ÄƒoL*ùxj¡h½GÁÔM…5ý¦£qvËö ˆCv!:Ñ66¢×E„…‰shm‰¾Z;“¨½«*ô#K¡Ñ½Å±‹”…9†œ¼m (JßZÐ3ÎVº‚¹öåB{”p¦ª®Êtâa•:jÖQ`#öðë/“¥£3ŸMàÍù&'Ç¯àô%¼=;ÏÇ?Ï.àâäùDŸ¿9¦‹ÓñOî[×’õ„+DäƒÅ’øFÁ!¥˜ÒóZ×z†p„RÜ¶0ÃO~2A¼^Æ¹³û?>ƒÇêñC9}¤ÀR<‚ýSŠ^WU*Â¬5%Â<Ææéh$Š£§ô•®Ê¸QR¬`ZéküöY8t³lŒjÄ’r~&’PÒy¢ ^6Ë-õî•dÄ×oè6º›më
Y¤SúN	Ô˜ŸÐ{ù”hºÔR'ÓÜ‘–!bi Ð–ŠÂýXrÕMJÔŽšFæ«2¢Ã
+LCYi4çíˆ”¯*u(Ôº£‡ðt(Ä\ÆOÕé’,yëó!1TÂ³ô7ƒ{UŸlNÓ”fÃ-hreèhªu074L¾˜/ëbžf|jø¾#r6MÎº—Æó…ö*¡9O¾ß;œÂ„ä™+.æ†€<6ž¦ÒÒHf…HåºIÓ`qÑ_ˆW£pÍRÐð–’ÎãOµj¨ƒöx/S”—ùôR¼o–{‰¥¢¦ÑeÉŠ„Ÿ(/ÛÄfj
˜¶¶à‘Ð•‰” —^‰””ŠŠl,\&†±^åÜ5ÓSâ©€¢Kc’ªÁÚµ#^Y×ÔW®‰“¶+"žŽf±Ã÷8EÏ’gúÈíŠ<Ÿihëj”gûPàN‰(nù.]þSñ¯y†“ØIo5Ãˆ7Ãè“xæd™($	qDäÌº®p~	ì¹&éJµwvjf­OsŸ©Ô¦+AËÃF™¢à":ro)©#Sç
â-­ ’yi¸¹û½a€/Ä’K‘`éMñb{3Vyl6C< T3Õ%Í0'MÞ-)ì¨¿Ùqôñî¯wÐ¿~FžÇHFŽ9¬Ë5Ù??¼ÿð~M'yªÈ£Bw+!ŠlKhÛêËªóÿËØÝ¶1éÿuk›Ní°´	´ÃJÿQÿñh@½¡«ëádî];›Ãñ­bäº3÷pgm²Ï¿¼µ;ß_6&/8±wÇ¼Âž=]	ÙN½«û¥¨o®ì¶l:º¡÷«ñ†ux¿9`ò¬hÇ½-®ÛK
}Û²t†2V"£|®à¼)2M¦zh,Ì”„
FNe:¹èè¸‡­éuè)ò€þ¼&êl™àˆÍ›_aZÎ$»”`ˆË¯Tf šG]Ö?&¹ßZŠ_^àLöÆÎ‘¬÷ýÃïLþýô,£
a©¼f$w%ÕôÄPt¥‘‘Be’&‚Žç‚W½ßKÚ¿xñ+Ò«œqiÓ¥©Oäœtòv²nƒW]V"jäö3õjy©yS~<63g?­zõ­R%"—ÔÄ>SiñÈ›,|O‹„-p×ƒì¼Ëµºv;J÷Ñ
ÞÐîœ¶“YOVû	óhÚÃººöÀ|35·ƒ/ºóaÄÛ.Åîê°ŸË½@"ï4A]µ¦*iá²q˜öÍ½ôpøÞ%6”ÐGÖ'~qIˆýIZéAá©¸7|ªWþ¤é-¿ïÄz&ÖÜèsòO~ðÙ_O$Ý6m:Ý»–æ|õÅí3ø(cúQ­Ug¿s!¸Ös;ÐKö0™IËèªt'Ã!- WüMr8”i’ÛÝ×,ÙÄdû½²„}¶>·aIú™r9“«´ä R…¼sk©ÌÑH7¢‘æ¾ºƒ¿¨œj²„xœU]kÛ0}÷¯ìAµÝÐÑ1Æ> ƒÀö0(Å(öu¢N–¼+¹]öëweÙi’*¬/±ïç¹çžë¾bß–~ä·²m!ÿRƒv²‘€öiy›_óÜ`®„L©ì†Ý%ŒñÊèF®‹k4Ï¼A?¶P:°®è¶G–RšˆQ™õðÐaeÛ)ï§jºWï>Iü‹úáÂ9QmÊ†m#ý+ÓvcÈ*ß¢¿ã™€hÐ£ŒøÕÛMÌn°.æx:Qi®lH!ë²r¨âž(lšª.ŸPºØÌ¶èN rz]ÑÐ'œ Mœãn1×¶XeW+QZGLØ3Tíh{=É£‘º.;4kmÊµ±pÅ3†ð«—5[°F(3ÒsÃZ ýÉJ£ÓÙô4©&åïnØ¼¸~Ãg„‚1£R²ì„ÛP§M­ råª—ª.Ñ—Î §SCu-›Í4DÑ˜^×©ïI‚Ò6¥€ ‡¼`CØP?Ü!©§ô!é`c×õn1de£Éôî…Í/nÁöà{±]²×ÙQÛçv®Ô¢Ä¶SÒ¥¼à³»ù}pRX"²Ý0S/ú¸¶vÇóœx^Ñbh/ôBûD—×é5ðSõˆô%)%O:ËÆÖ÷{õ@?úrË÷ß?ßpbå€ëÆ—½ÅË•ÔáÁÒßÏw²ã9¹žÏ—ÒmÝ†äÐšºW~jú<¤¡ƒT1Fë ´D(5¦èCæÅ5æ¼öIí¶Û+u€Å½‡ˆÇŠÍ’YÒ(ñÞÆSƒïL²’´,m…²sC6å´¨’î7x­¿¨ñ6Ê¤D&tÍBƒ=q2¿ä’¶G—™îhå¾R>2ôÌ6Të«ÐÆ‚/c€²8-hï„HV¬é¿zÚ²mÀl¶àH½fµ´b¥ æ»ëJDïLÝ	î&ïö¤¥ÍÇ³×™TÏæÔá€Ñ!ñß„†ÿ*ÿEiH=GêŽ"6Ìø’×P%Êì_Ÿé¯[´fxœ•TßoÓ0~Ï_qê^±X]…x(Q±	mÓÔŽÁRä&—ÖàØÁvûï9ÛKÚ¬¥~±}?¾»ûîìXÞ]|Ë®EÊbvU¢r¢hfðéî:›²I¦M&¹C“œ$'p¿*!ho¸q +P5f…Áâ£nžŒXoŒ‹¦“é–¼¶­ZÃ¥ÄÂ­DaÉŒÂµ+Ì¥„…w°°@‹æKæ­ÛhJdnZÕpU
®à3¼ãÍÆIôÁFXVèú}’ŒF£äöáCpÖÜâ,K uÆàÊÚ¡ðZò¨	´‹¡„•ÔÅÏ·`7œ²i¸µ,"&•Ñu(0w	¢n4íá}°$I
IÖ½Àw—tƒ{ ¿/°1T¡¢JC¦hDõî9WŒüÊ`îœ«–T³^Úé¬#Þó1ÌHî‚ø"ªÆixŒØºAÃÐŠíÁ®Ö âZ„{ÇuY¸XÞƒ°rewàÍël%ð²4¨†(‹YHŒ¸âËÏ¥^ç¥0Œ6mžB¤°§dS7aì,ë‡+ßÂ/ÍØ¢¬Ò-YdwaIX”{ÀÚmRß¿lKéS‘Ò­œ0Ù.Ýç0*#‰çpöÂÇ³'U¼FÛðâº¶éXµ°<£•çtòžyžnkvÈÍ…þ­–­‰õÿª»GÛ‰àÊ!ô¯†7¾™Ø¿‹`8h*M¯YïÍ­—ßj…/LT¸Q­MP~‰ÃhÝûe»‰õgo‘uI$¶.#x™¦HÒùû^@YÖ7)åyðrÏé5é1[Ê:îLÐQ×øð†¾aÀŽ¤Y;äÓÛ?óTøOÎ¸ci0SôÿÕöîC…š5"KƒŠÆ]þj¹Œ9œô&iò™Éæ„(xœ{Âsœ{Âe—`_…Ôâ’äÄâT+].. 0ÔSð,..MINüÍìRœ;9„ñÕäf¦"0û#³èd>f+FƒÉñÌ}PMæ }€YD,¼(±  µH!-¿H!¯,7U¡,µ(3m²K¶	P‰Br~nnb^ŠØ&PRR‚³
â“sSl”ÀZAf¾`QÌÇj?¹“Õtò~V1îâ’Ä¢’ø¤œüäìÉ·Xå¥ z4!nOIMS(ú'êœÉšl\@¶†¦Ž‚& Z3M?±xœUÛNÛ@}÷WŒÂ±ˆ­§*jª¦!ª´Š€^¤RY›õ8l»Þu÷BèßwÖ'¡d_lÍÌž9sÝ#¸^œOæ‚£²˜\æ¨œ(š1\,æÉ(&Ú$’94ÑQt7wÂB!$}+fèÔ}‰	—¢¶8ÓÕ_#Vwú<†Ñp4‚kVZ¯V0“ÈÑJpKfé æ.Oa*%\…®Ð¢¹Ç<­‘¦ÞÝi"25^ULå‚)øoYõ+e$zoØ”ëò]õz½èó×OóS¸vÌys½‚´Ž3‹0N¢èœ¦0{@îÂ
]"—,±¹VÀ Ç{JFZãE¢¬4Åhý²2š£µQT]ÖgŽáÑ"x	Þ£(â’YÛ
.ÐÍ—¬ásVæý'y<nØ7á{…•¡èe®lÜ¤­mý“cÝ—ªoQ‡,`a®)Ñ‚Â)´y‰IÚºÇú
M?NÔøYNø)¥Ç¸ŒvUK©ùïŒk¯Ü®R±mÅ8’ê´«*ÙC–¯wå¬áMò-…aj…™Dµ{‡8û*“z•åÂÔI³¬®B–Ñ_`‘eñsæ2s®×jOòÚÿ…¦Ú’Å¨½NgŒÚ¹Î&ÔŽ-ù´Îxî´I÷úzÊ}Ëkƒ+uhH|Ötè¾r3¬
ÞI¬ûZÐ¨…Ýjït‹éÔ¬ì¸#käŸµÂ-Ó+Ê°Q{­‡aj¬ça8€Æ®sâ‚	éîšL;Ó4ãeNêÞž8 'Mái™Hú¿Ý¡Õ9=H’¶‘Oêûî±SZM|R=M¦‘a¨ÿ“|ÝÅhfâ@€fPº ì@€z ¨.F;gÏ; ¬>ªÅóLºBÕß­ØàÿnéØ;”rrc<`ëríÝdÓïåböú=TÔ€4“cïŠäÍqüRzåÃÞ
øá)=½MôÖõãÃŸñåú½[µâ‚:ÞjîvÍ„ÛX¨¦¥`°¹¬Ë^Ÿôö%+™PÝRWßÒãéf<“M)·ããè=Ü/&í…xœûÈÿ†{Â?¾œ¤DÝâ’Ä’ÒbÝœüôÉ<Œ¡\>I‰Á@ 7—QÏÇÉQ!¬B$´ˆÑYÅwFýÉG™r…l™óYâA†­cÖG7ÿ5ó|S P<H¤&>97EÁVA)¯,7UU­‚’‚¶BqjNš^rIQÎdi6E!t:\“Ùä'ç³Õó KMþÃfŠ*`Ïî*0ƒ=€ÄÐÐÔQ0Ðä E#_[à7xœ{ÂsŒ{ÂeÕ°Ô¢Ì´J…Ôâ’äÄâT+].. 0ÔSð,..MU(ÉOüÃ
V89˜1òFs¾ úøœüôø”Ì"«É“˜’¡
>0‹Mæc6âOÊÉOÎŽOÎ/Í+Q°U0˜ÏÜW¡Å6µròf±ð¢Ä‚‚Ô"…´ü"…¼²\¨“ÝX²m ª’óssóRôÀ%%%8¢&>97h’ÏYÔ'ó°:MÞËÊÎU’XT¢vÑäpV#- 	
º¾.Ø…¶J
Ú
Å%EÅ©9izHNŸ|‹UÉ
MHà¤¤¦)€ áÉšl¼®†¦Ž‚& 0˜t/´LxœmSïOÛ@ýÜü^@Ò¦i×i”2U¬«ªUjÇÄÆP’µ.Õå‚`¨ÿûì¤?R RûùÎy~~i6avñùÊ™`(d&œq$¤Æ…:ÑÅÄñ®“*'	´P†±‡2LòHÀi¦Ê»Æül‹0}%x»‹	¥dql‹Õf®1ifyãcc^£¦Ÿ"ã’±‰¥€Át:øåÏÆ¿‡f`™á?‘Æ6a_»7–e™4†€Rƒ™öUØÛ€)FÎEø×—ù½¦2Ó”
Ž‚ÄßÏ»‹uH§,ãÙ¨a&ÁÐï—P­¦„Î•¤ÖµÉ£c³>œN¿OO HI0xÞÏ–6À]ªáp?IòC›;‹P‹hü‘uÛ¨Aù+˜¹ÌðNÒ‰$¥ü°è…o¨›ÅVcBZ=cÉÃª<¤éSºésh‚³öÖHNl»_37Y6úlU{Ýof×7ô^êÿõ–×îÔmà?\XÚ%út=WX»3b°Ý}ï~ð<Ïmu+ÚÆÇâŽkƒ3û9˜¬+Þw|‡™‹Ý²2_S>âg±ËR!£…V4ñF :ZÀàÓl¥Oý[”zòÊ„É½œ³bce#
Ø½Ò*|ó]Êc”X¬ÐK£þBm¬q€‰ˆØ°éÏw÷»u^m¹yÙ®!·¯ð,ÃÂÚ%Q2
Ïz 4Y¾B›Ë¸„»ær9S& œV¿ËŠ),*3«ÊNª®Ák%1‘^¨ð	†Wãþ—Áxr9ÂI™Î.ÏÏ‡³Sþèwxïƒfxœ;Ây‰{B€rf^rNiJª‚MN~rbNêÆŠWŒõ†––¦æ–&&J:
†žŽ‚B­gµ‚\E	HT‘±‰ž©™¹/PÈ²Pôëeƒt¡ˆšéš„(Õë(˜šÀ²6#c=a½ sQ%MLõÌÌ-,|áŠÀB·¬Ê™¡Ù¬ªÒõpõôsôIéCeP%Œõô°K€\	´Þwòq¦r¦âÌÉ.Ìÿ¥9‹SK A¬áãïêëäé¬£ ä¬¤9Ù‘¥ ’‘Zn¹ÙxœåksÚHò3þ®†œ\nË˜lÇN¨"†2°Ùq©„@!q’°Ãeýß¯{ÒHˆ‡}»Ù­Ú}¢Q¿»§3Ê‹Ðï½ûµÚ±-æ¬Úž07´§6óOá}¯S=y^«z~Õ1Cæ½(AÎ½åÚ·góNjõWÐûx^í#¼oV íZÏ„ s;€¥ïÍ|søsê37ïLŸ5`í­À2]ðÙÄBß¯Bv¦;yáùD`áMìéšÖVî„ùÎ ‹ ¼)x5„÷Ìe¾é@o5vl¤„n"wZælã5Ç¸$úR¸ô°ÚžÛ fã{n™à3œÉFÒ¬€çCÑIr¼%á•PÜ5pÛ(ÔmêÇZNÀv9á¹·DæHu¼³ÆV›®œ
‘@`øÔ|èÐºúŸZ××­«Áç‡sß²[&HÙ‹¥c#eÔË7Ýp²…×ç¥õ¶Ýi>“—íÁÕE¿—ÝkhA¯u=hŸ;­kè¯{ÝþÅs€>#±¸·›¦Hlá¡',4m'PŠFÇ(3¹yËÐÁ³oQ6,œçxîŒ«‰À±!`OÁõÂ
Üù6ÆKèmº•ÐcÏŠ¬À?ëeº_´}?Dx¤qiO‘þ¥ãy~ÞzAHà[ µ“z½V­¿¬Õ+0ì·¤f/ŽDü€Ö
]€{¤ãÍ0Šß¯\z\²èý;ŠSü×Âmò’ï”ø,ßæt*V .W®E7ìÒÄ`BXÞb;Pl&c.ˆÅù‡íZÎjÂ oú3Ës§öìù<¯-«éÔþFkñâîT×{>£-Ùn®—,H®ÎXˆ,“kŽ½°Ã\NlocÉ±Çk(fzÍG57àÆžçÐâQ¢-ˆÔ3æÌYS´”£ŸÁècëWãÃE§g\¯Îo 	ßájØéÀ}#"aÍM.®Þï..[ÃÎ`D`yÃ`îÄ˜°©¹rBÃÈkðhéP`•Íå’ÀV9cŠL˜zëÙM6¬¨ã#JéèûQ.ƒþ·qt/I-Ñ¡qçùãÎ'àI’L3&—R´øÂúÉíÎgÃÌç$ÐâÎž`7á_¯jYP³*Pq€\ö-4‚¥i1„¬Öåªc¡Á#¯)™¢Î¹»¹í0(rÎp&_” ™æ–«Ð* P)
ÊqÀãcü‰jæ(¸‹)Þ@àIj°ŽÜÝE\m6¡ðÅ-”p%7óp“»ìŽBüu üû·ßtéÏ &(å*ÕHÁ;ÄGŽ¡ŽüCÎž=“?‘^PVÎX£@ÒÓq.Ñ4%T¡
A	é;kB”àcÛU¥‰†û¢$ä&¶GJ·S¾¨ÛœsBkUcF\ig´PÂÐRA›ëväü­TÊöô‘æeZÃX	mwÅøÓý‘ø—ãSèÄè÷¾rÓð(Æägˆ\%ÃW˜ã"Óé)!(Ë’ÊÃ—"tŒÉ‹ù£Ú·z­V»iÈÕòå¯È)c8ÆXâgZW 0‚<ÉEÎ$«oTµ&ÃobT«Oƒ|RÀjj¥_-Ð:eJŠ>ñÂtõ†Ûxƒü¨yö4xs£1X`Á„Ÿ“§<‡ç÷sõÙV66M{¸r¦ä‰ôCC¹#‹z%/<¿m›©ŸZšP	ŒßËÞ0ú3ì³÷}VäÞðÀÅ)±b­Æ7<<EÌ§#›Š L¾›Å#_­VÑYðª†è˜ˆ	Ú¼D˜ëž¥“FÜWâßç>CÂ/.‰~¿Qy¢”¨d²ÃÂX²'ÀÃ3E UºÃð‚Lë~©½|9ª/†T•OáiÀŸk‹/.*EÂ¥«6÷Q†ÝJAÿ[m‹É„7Ÿ(±š©ßQ"B|®|7[zWÊßh§‘ø<ÐxI@í¬ºø„¥ŽÚ£U¾bÄ(Zn@ 
†žÉá_*Zš{±MeÆx&ûD©@ªªàØ3±vk:q®/£…—Ô
å"(>„‹¥h’B(ŠœÌ3ŠæÌÇ;Z²¿iBÎÎà' Þe5Aàˆ’2!…_þâÛ’Y!q¬P[·â…§AbØ‰ð‡'dOŽ*B¹ªí«_ZÙí’(?ŠE¢JÚ6CÕZEõþìvt“4ezëÐìðè½#œ£²pÐØð†¤)¤L>‰ ¶ñx»c©iP§ñ:•
þÚ‚DCR8UÉîç2çŠædâK‚hRêX•Ñr"ÎfìoÄzê	ž¢ß‹”E
Óq<«ØÿeEŽf•pÅ¤ÈÇpR¢ ˆ-»AB³z2¼D"¯Jq‚ˆ…¡¡#g„4ä§8‘c4cëÌ¹â,
†Óúš‡4!òL'bÄó|±“J* É´|…žy#î­B½‘O%–LÂLÂãgIï'>þú$[Þ¥Ë®9Ö|¤ÅÍñ1Ms)´†jÙƒCÊ:ÚU"€,øìæc§8…ÓÂNOò>¶“´Ú}è07^SsF9#Ý7Ï]sÁ„Ñ4smž›‰)àšìD›:&áð¶N¤ÉšÒMMŽ{ôÈS“Cù²ì–¤0';§ÅØ+ÃÚ‘ Fìv†ÂÏ…ÆˆùvˆÅ‚x»i|9Úóù\þBJ×YEa¢’¤R6­@¤‡H%Ïtm0ŸÐB¼µ-}3‹…&W†òšø=/¨	9³L¶Yªœ‰™UËQ"’DšJ×œF²
¥rRCåH@4·+©%VÊÓN8+eŠûw%R3•7pÚ 9Ê¶Ï2™H\éè@ÔËRQÔóîZuÈÅáq‘VYéüò½Ñ\·¯ÞK}ËEI¤\ŠY”DâGqé€9ƒÛÿ¾ˆÉQ	4°È• I·yNQÐM5zÒlQ§'€Ò­]fs§·wøŽÍ˜H‡'PwíøŠ”b[ðí5Kûj[…Ú™´‰ÿvyÛívTr@Y´öÿ@+ÆÔ¢a gÇÛ¦F&õcšm!Àg‡C,÷yp¡¥ÕÌm§|B…(3W(ÎOFJ¢Ò†ôû7ÿ‡îµŠó]ÓÝÁþÅ	¯ÈG¼úëÒÿá]ž¨œsÉœõ×YyïP÷ºýö ý‹r3|yb„1ã#MFç?Öb\ÁG[¬}u~}ññbwš=nBý j®^“¡œ™¹ÿ`opÆ­üM&2úÃËËö¯Z2×ÆØvM-Ï:6ÃÝýú•&óÍL!ØüåjÚ»îðmGk&ÞjŒmvfÄLÒvùý¢eêxæJwûKÂðm·7èKÉe{)ÏI2ÛÍ†ê|¶0m×FÙÔÝÑ£û_I3‚DãÈ–7º äø/9éˆ»?Î8:²ˆ›|)QS¿6–}‚x]˜!%Zµ*–‰be/ÎsbŠ£Ò_c–IªM8‰ISú:Ñ¨S÷Ÿ.þÁjL³œ¸l",žÙÒ,â ã‡§'{"ŒNŽ '¿Xè¯ÆÕ®<Š†çÁ‚>‘‘SËy*½4qÀlgØÎgÑC"‘nÎV|ø³êú ¨OAµz‡±<ìSOí$í x*ã‰¾TÀWâ©~"µU8äSP8Ä’×)TÿpÔO)Ô»ÃQ[½´ÄÇ9ì? ùSùŽiiŠO¸ÊÜh¿q˜xkM‰žr6~èšT((¤‘<`ŠY+qp›‹Žïi¨DltSÓƒºŸËNKë~èÍYÅW§ü’Ðg¬¨T7äRTYJÉK÷ô04……ÿÛz+•LzÑ=>¨ëu"L‰;LœK,ÌoêæB»%){ÚY·Z}¨Ä½¯s£{ÁK×Ë£Y¾"[šrÑ£#¥øptc!¶Oí¢Ë·ä-B‚"]8T ®î†Ÿ h|kÈËZËu_ðO7‰"‹æÃ
–® È7µ›I"¯ÈD¼‘¤Î¯º”øÂ&øß‘@•G\~¬U’%}€L¤–¹žM(äù‘`ôø¥|%‹‘)éØ.ZüÎOÉ»¸"kð•¿ä7¥{¡w.¡¹¬ÁJYÿ	]sÚæ²õÝÊ¿qZ‘Eì@ZÑŽý¾Ÿê¨’l;vÒsy z´É7ƒm¶!ù·XT£`úêJÛºøæDœVHEOÒ*÷Yêyÿ5­¸â4¶4èkÛu*·ðó¢LÐñµ7	‡ÌÂ9O+ñõ%i™œ&oSF^ý[yC%>Z|-*	åç;©‚ãÜjã+wã³¥[ùþ\ŠüI|/ˆ¯nÑÃöÕ€Úñ-÷’XÃè»eo
¾éÎ¿IO%”ªÈ(tž=Â%
ƒ[é¾…“)#¡ yP©'CD¦^gµ`à…C‚Þ4îÉ%¤ÁÇí6I%¡Æ³<Ì.IŠTË“¦ÉE¦¹?0b^^SqE 8ÓCøoÃõ×D+OÅ¹ Öíò§‡1ÅY2ŠUÀÒ_Ép§tzP'`vö	ã”“ÑJÜ…< ¨ÿÜ´¹OðÝ—ˆÔ—…>›ÙAÈüøOhwÚŸ€iäP»q´ñ‰tâOˆ/¥£VTûöMjZK½ƒx°Þ ŠH]´\:527ú·Ñ%ñ½Pø²ü$ìµìxœ­WYoã6~Ž~Å ûâäÄÉv_âbQÅñ!@> ÉMÒíBP$J&*‘.E9uƒýïê°­k­ÄœáÌ77I_œ³¸½ïZ4 ,#]3$LÒˆqã…Õ½:ïu¹è&¾$Î.´‹3Ôøz+h¼’pÕ»ü	ÓA×A-áë`²à¼’rW4ƒµà±ðSÀe$ŒGòÉ¤[žCà3$¤™ô1—¨Ÿ…\(€”‡4Ú*^ÎBtA® +i<*ˆñl	cÂˆðXä	 ŠE©ûh]1³	áq[hŒ”NåŒ8û’rÖBq_À†ˆi¸R•™
S. ãKå¹ ¾VzÑÝ-”ªTße”À+¾ÆˆV‰1>Ñ$GyF¢<Ñ
ÃéNæKŒÙÜ¶mÌÜ‡>
ËÇ]²!%M×	EdŒKøLnÑw…0Úƒ	ª7¦eº*‚‘éÎ†Ž£¹,Û5KË°a±´sgxàåV‘Ä÷S‚¥ÓéÓ$«ÀÂfè]ÂÊß,p@è}ó!ÀÆiY¼„³¸…÷‰ì€q©Ã“ Ø/’¿.«RßW¶lI>_¢”ÏþH0÷ŽDyÄÑñG	çB‡žI%>5 zW——½îå§Þ¥KÇ¨"»Ðö# `äXœ‹ÇØÅãœ)ëùs¢ñ/!I$ö9xú¥T©?/Tv·(ßó 'ëS1\û=’‚Mw]£Mˆ¯æ"¢IY_ÄgÏƒÇh„Ãí÷¼‰ö”‘Yä! ú”Åç«/¼˜Hìø&/“!"¼âQ®Xayz`An×$ƒgíd0{#ËëåÒqmsVæÌ­ÙæoÃjiÍwûjé9ËÑÈ¼¯8·óåUKÞÌçV½|pk®3™Û5,6¸éš¿wööp:Ü[]ÞÌ®SQ#ÓzÆ!qwHØ±EC®AÙH}ïk»´£	Ï°ÇNßµLP&“žcÙ÷	Ã¶Iñ,Ä~%^yØdÀ¾~kÂg·ð³¥eÁ÷æžJr'Ñ!Óa£CXØz.i%®Ã®jŸqmç)^(üªLù;`§æ|¶œž–x‡R’‚ü™S<â ¾Äª¿½ÞU®%j+PÕo-ñT`Ç‹^m‰X¶îqÌªÅ[¢ªÆ?ŽYŒGKDgb·He9e­‹3°ÛT§žÎãZœ"dú5­œ,›–^Ž¦Í¸_[:E‘Ój»©j¾¨ìª(ò¦®e:î]%ò¦.ŠQ-©²ÖêÜy®O©`åãS°d÷L¼ñ…ôÞÚ9Kñ}€¬7/„E6œ†p†ñøy"½ŸäŠKYá_Q¥ZòE’u¿qÂªZOûú<‡Ï½ÞnOñ'Cká–³Þ±š¦ ÕYXß;¨`½(gAçc_{±ç¯×„…^žù1éú‚é|-½ÆûTxÙêMã…xµã}qrð/î‚ª
š«T[óEF:5O¯Œázóõ›?r@½)þ7¼,D¯|MtvéA¢ö©(‚Gëý›xRÿ/ïÇÐ…7^FÖžzîn_€+3¼ö=d4fø UÀ	a±\µÃõŠ¦~¾C+6†þƒ%õÜmª1Õg‡[¼Š‹»™£¶·²Ù´˜ìfc –<œÆ×-HŒ?kˆ8–7Ÿ«ê–Êå0<qzOBÍQØ ²~”…Å™¬Ö™ô…z­ãY¸FüÑ>à ÒHû»¬¦[¼¸xœUksÚFý¿âN:“HAâeÇuŒí©â€MK0å‘ÄÉd<BZÐ6b—î®ìÆÿ½wW’ÚèƒîÞ{îëœU­£ÁÛn„IâvCÂQ"NàrÐs›ÕºË…ûŠˆríe^ÂÔ—äè°€ÃÎÅáÑá±ðÅ2¦>SÙ!ð²9úë¾\	:XÍz³W>cDÂPF‚¯ÄÑdÔÎÜÇ•°|.üàß™ $Ÿ©{_¬xÏ@J%è4Q¨Ÿ…5.4À“ÏVÚ–°Pl`!ÏÌËe—„áÇ0H¦1 ›€÷1»6Êˆ„0]™ˆŽ®a”Õ ŽÀ¾¢œµ€P<pG„Äwhj„,M†é `ùJW.€/uœå®ÀÌ5­îiÝe”àˆ/±£!±Ç{Ç0%H2KbÇì(Qð¡;¾ºžŒÁëßÀo8ôúã›:«ˆã)¹#)Õ«CdìKàWX»Fx×^\aˆ÷¦ÛëŽotî¸ß s=ÞpÜ½˜ô¼!&ÃÁõ¨]]–âþÃÁÇåÓXæßàb%V‡ùwz‡µù ƒ~ry1gsÓ&:¯Ù:Æ•÷‚"_ºV¾Þ¬]TxÕ@/Ÿ}qö#…þˆÑ¡3ÄïÄœÞp©ÐÝLÍ¨7ºÛ8¨7˜Œ<Ý\­\þ…² NB§R…1V£ó›@µlÚˆŒo¹­dM­–DjsY*¬3ÀÑ0© ˆ|‘©ïVùÓ˜|>zõÎÊ¥gÞ›‹·íÎåU÷÷?zïú×ƒ?‡£ñäý‡7Ÿüi’Ù<¢}Œ/ÿR%w÷ßVßëæÁá«£__WjÏZeT~Aú·FÝÄ²ñH-njA.
F©½“"81S6&=òÔ/?Œ	;–,¦¨Üí.¯Pª°°ËDÙ)V1cÙä ú\AÒsµÎ)C]…9­ÚÆU¦lg”¡`ô¯žœ`˜¾høÂ¸I¢à³ç~òÝïu÷uÅùRM…I`3¯–§àÉ<ŠWpX; EY"I¿“œ°Å¤yQC¢íãæH¥ÌsÝ0‡>ÞªùÜÓ…'LÒ9C_³ù—8N´o:W'3ãüìò?å’>¡L©’põV¹”Ü¢í y‹÷f™Ò`‰¯‡k/i¥ZÔ…ÓÿW*6 lÉÄZø{z
Ç6üÐŸé+™\•38Ö/!7î©Ñ=ƒ#m,a®J6x«ÑÎÏM©6<‡ú·ƒ™Á{€ûˆÆ,ƒqŽ6š°·YjK+Ú‹‰ZGš²Úu¹XâÓœB}öÅÙ‹bsMR.	³NÀÙ¹éì¶E’mÑ¤–ý¢ÙEt-4Î8ïSPÁå©‚ÒÃ0õÎùø–¬E²•9EÕ…!U.Â¬üúƒþüoSz]ÏF¦m6g)\_OI¼EòœÍ;¸»ƒà›±Ó5­!{þ‡Ý°õ+Õ`¸‘ V‘hNÆ»%4MÓS83<Ú•#Šº2<_S.•NNz-„c[[iŒ‚Û‹-(ÊòÔãag½K]*Þª=ø‘K[[êöÞ™Üv·ÿÞë=Í³Ù^ÖòQéí§A…ÖwU¹žÃLô'¦ƒ1·6¨c/¤]ƒËï t{þ,«¡{K/$¶^ÎãT¼K¯Ûo­/ŒiáÂø‹6Z!¿xœmÎ1Â0à=¿â ‹–ÆŠˆƒE…….n¥&/zP®Äÿo‹‚Eßãîãå)ÕÕáªK6 }±ÈŽá·tªJ½Z,uïu×FxJs•°GÍ~W7ëæ¬’!²`Ò(–H·6`HÓ[ÌL/!ÒSß–Ì£´àMFãmÉ>q^L‹	ðïï}*Xv”§ß]ãü¥K‚½xœ…MkÃ0†Ïö¯ôb‡¸;®§’¦BØ(ì0^"3Aç×-”±ÿ>'Ë>
ÓÅèz^áYÕòQÔ ;¢Ú¶èYBëªP·ÓuðjozHf|BÖµhAë¬Èå®Ò>‰€^±°Ù£q§NkaŒ½	ÁÓÓ)`$bö#)¿·–yV,îó/ájWfÂ™L!\:”Psv>P==‚DëîÊ°Ú–
R°QÇÔšÿ—ÅXÍ_ÙP1•,ˆ!jìÙ(ú€ó¾ñß¥Ÿ?Ñ<ß¥Ð?Èy<]K–¿÷lv"±xœUÈ±
Â0 Ð=_qàÐAS¥ŠƒÐM¡CÁE‡x^ÊIHÊ]ú÷‚ƒ7¾\ÆãÕŒ•ìùI1³g’œÆÁvíÆ&±Áec4ARXöp3 MÉÖN&LÑóÔb³úïÃ)íwUa Ë\Ÿà¶«æ¥)V¡Å{~W•?3éoîæd#:³¶xœ½VûSÚXþ™ü§ìŒyh»»E¡V)³¨,à¶¶Ûqb¸ÈmCÂ$7*Sýß÷;7À¶Ú:	æž{Ïë;{ªUôÞ¼¯t¥%_T:#á(9–Â{Eí^·ÒØªU\¯b›JxFµd?tàÎæž¼š(jÔê;Ô;>¨Àâ™eê8ÖVtj8‘>Í<÷Ê3§„Ï±'ùîXÝ˜žhÒÜÈ2òÄHúÊ“—$™Î¨êz,`êŽäxÎ´À	ÔDì˜úäŽõ¢}rFmáÏ´©\ÚÒ¢Èf7¡‰þDŒèr®9ŽØ†Ad¹l*é:Mû]ÏÇš,!RÉ,“ëQÁTl¹GîŒùŠ0wNž˜õ!÷^ŽH:ZðÄÁ£	DÂÇiÛt)(ðÅ8°Ë,‡é]gøöôlH­“sz×ê÷['Ãó&«‰‹]q-BQr:³%$Ã/ÏtÔ¶³„ãÃþÁ[°´^wºá9{pÔžttÚ§õZýaçà¬ÛêSï¬ß;n›¥A|bCØÔŒ#¡Liû±ãç¬ëìMÌk [B^Ã6“,$ÎÏv+í&/€l’“ãª2Ýxù¢ÜÕ°2û"²aJ–éE§Lç‹ì
ç!ãHŽ!ÿÈv]¯L¯]_ññãQ­Q¯×*õíZ½LgƒVäYÕX” Q+@P&]÷
YÜ^ÎD²ÿIñ
ÿO-”É¶®”Åžð-OêzRˆŽÇb‚¯	–F8Áô	æã±¼~bÍoÒ±ì`$(nmMò)šåN§HGÐÄ]_ly¹5ÙOÑ,5Ÿ‰,	Åì¸YÒÔT“,el»¦Ê’l9•Ê_¢¹–ikù†¯‹PPñåEh7}5r:Þ#‰ hj^9R¹iäÇ—WŽ®¤ûíÌuÐ¡@·€”"kbzT
¥4û…HáüD{,øk]l×ÊÄoþïü}YS¿—‰ß|?¡ì€‚7žP|~óbJý2ñ›?L(/@Á›ï%”(xóÃ˜òg™ðäÛñúe™ðäãõ6ŒÃú¯ï›†±êÙÜºªÁSº6í@%Ô4õU·X‹v3BÁPØˆY‹PŸ™q.¦2Ñ*ðJ6ŽÇBÒÌô|QÈ¨S(ªð³$œÑŒ—˜^î\(m v 	¯öDÿ ÛË¸,L‹íE‰Y™Jj:…Õòæ…-P¬úG²àb×”§Ðyì‚Ö«­™qLL¥=ÀnÐÝ‘ãÒ+4÷u»§'í‹ãÖû"ml®¦¢í¶‹E#Q9ìœüÓê²æj	i‡ö+¢:-£A¡~-9Eg›¹l0:V„×­6¥QüXûÄ*žÿ[{^ä|ÕøÃk.ôÕð}*CÐÈ“£¸f5±xÀþ°ì‘ëB±²ºÐ§b4ÄŒ=†!røÐ4lm8Þª±—Ü”
R¯HÒ.#ÍÍÐfíÑÂ%™réîŽ2Ï KÌðÅºWà„“¹8<›{Z‹‘Cä)‰Z¹¸UÈB ¯ÐuÈó5¼Š§K:7 nMnh%ër#dzr(á«ð–¿á85o	}LW|€Ñ˜U¾•ÏB0Yí‚^OèëUÇU²€Ž*¤‹h5š<Xœ_:©ZLEx¥g—|°o¤®üÄ¢×ZïWöÃcXë¸#/•t¸Ga M43Xa}Ñw ‹‰
wÌÆ$2!ýšýfClr%Ðg˜Ê¢¹–K{T¯%Ö¤ŽÑ~Ò=B¿¾'˜ÅMJt„9iÉåî‰†–uíþˆ®$L•¬;KºªKºByaf‡t#Ó;h3î¡Ë-ä¡ìZŸE™n´tÿ{Š¯”ôÅ”º¯Øwù+0ºÄöuê%óD†h³šÝl¦úQ’¯!²·h+Ÿ×ÞgG™Ké˜Þ<5ÎèÛq‚ùòÁQ%Ã’W^ð Ò“át°Ã‹a´Ð#L;Z4xq-ê¼øK~c‚ˆ´ñ±¸i˜%‹×'C e?SA²móÒBUäXêÝ.íêúÓà³ÛãoÝ”#ÂfÂQˆYPFõ"øª«Âà5 ŽR(>-·ÿwÇDâÜÿYxRã_dÞ“GÀ˜ÍŒXþÄD§¹Ÿxi¯
ÎLf¡k&³ïŒšòØ1p½²_™bÊÅ,¼Œ©E¶5ÞÈ\î@ÙˆŠ4MO0Ñvf`\{€Ö;h¤àKXc}ý!ë±ÁaÁpþìîî%åÑŒ«h“tP–Š$I¦{ã?ÇúÀ½UxœSÛnÚ@}ç+FÊAÜ“ö!T•KJx²ï¯jv­Ý5©ÿ¾³Æé%QU	;3çÌ™Û Ñêî¹7	Jƒ½€£´"¨o`¶š÷ÆýaOé^Î,jèZƒNÜ¦ª¨´ØgÆÃÑ5¬§½ˆPšu!I¿‰ZgÂ@¡Õ^³ÐßT#‚Q©}a'P©&A#Æj±+-‚°À$(íŠ‹´r¶Rr’`3’r0 Òú1[l`†5ËaUîr‘@S‹ƒ3ÊîŒ&C»ªFøNCÔh _1³BÉ	  ¿†#jCo;†&MÃÙ¥¡Í¬S®AwIr+8u¨¾Wþ¹JBÖÄ™*¨¢Œ(©Æ‘ç°C(¦eÞuOÁúa¹Yƒ·ØÂ“†Þb½P°Íyñˆ'*q(rAÌT—fÒV¤Ý1<Þ‡Ó‚x·Á<Xo]~°^ÜGøË<Xyá:˜næ^«M¸ZF÷}€¬º‰ï·R";(j#GËDn~¾¥ÁR—sÈØiÀ	Š#icÐâüãðr%÷u™|näD
RÙ.¼hAûbÕŸcuðódO+Ù…O#Šbò[N½,Å‡/Râ÷s¥tn•±.üÑŽG£aot5uayMeƒÖù ¼’F@—2W{ÚâY)Ý³ÀWÿ-Åý.:“«úRÎ>4‰õÝœ, ~)g0uc92RÚt@–‡-˜)ÓT|GóªæB¤t)Ä±Î¦Ë…ÌâhãûÁsüÇÎ/“¼ä_„´¶*Ðô³¯o¬ÆòR¹3¶Êl!Éú)QlD¼GÛæŠ¦ƒÐ9²¼ÄËI‹¸àQ0m°ýÚR7O;(yáž%>_Ç¶f!Žw³Å9o×£ÿ=ë_;!™®j5¤þúÀß >¨ª‰ú¿ÊZäiëq¾Û¶¥xœ­Vmo›Hþl~ÅÔU8`ìºyqrÒ©U)U×ä³%^	/ìæå®¹ß~3Á@ìª§Þ§õÎÌ>óìÌìƒG#øôñÝî˜(˜{3!yÂY~
>^¹þpìf¹›†’å†ñš‹(U1ƒ9R>nX1\]4¬…ŒyÖ5å\Ü¶mi…)#[ÃE¡1óziô«|ý†IIžŽ
•$ü†¸[³@!7Ï?$¤L¯Ym”êq(CÛøÛèuBÕÙ“\oÐ¸fëhóháfxó(Yá A8àÍlôªá}–ÇÅb¼„sL7ñŸ³Q|éš,›Þþ@¿èïôZ“ýc˜3©rA7|2Œ4·gê&eð|Ó,(Ý¡84Ïä¬P©ÄŒã3Ãè%Y×;à0Ç¢àztdžîU¡ƒsðßÌÎ¶†£s]Â…÷\àKô<Õ$ËÍ”1›bpj–ÄcÇ:úûÿ¿ïÓ‹VaƒzZˆ_9êVgŒîÂT3-d(yúF.fcÂÖüãd8CÂ=¼Ýl
1¿s0×eš‚m¨ÉúÙD™¸³l÷B®2U„".ôVH)GÑ¿PÜZ¸±á”ªñ\+£7 >ç5øª!ÄI_1À'ç ÂÁâijIž­µ+¬€Áˆ®/\éÒÈ™ŽM‹3]Mž€Eéá•eü/–%°©Šñƒ`Màˆ(ÚvÙ€ÝA_Ùr¶³á5ºØÝª5±´õ¤•Íä7>«-‹V—
ôØ0ŸÃÄ·‘ÏÃÓðML<‰'~Ùï {ÿò¤ƒìÿr·0i´û=61u9•Op¿â¨V«Zß¾µªÙÞû½–Åúaa&ÇLúmUO¥©;­‡VÉUç¡ý„nUãJ%=KVëNõ˜ú'Ó“Ù[ÿd‡ˆT—­däGu„ï—P"&>èoQ°ay —;fª¦Y}o½«˜$S8m\ L*Ò_Zzú½e2HcëPŸ³+‘Ñ"$6x©5À†8Ð?úW	¿ö¨>ª%¢	RslŽ­ë©+Öïo]çM<»Ô¶äxM‰ÚYYòÆ•èD ®DÁo‹Ër.®¿þö>øòåò]põþzù¢Ü€H´â‚OŸ¿¼þ ¥©ìd'núló9<ÛvÓMî ¥=zA	‘'Ë¦êw‡þ¸ÖZŠåT°ˆ,¯ùÊ$!×[l„ù‰½;sh–*Ê#e·ƒ­§ú_WC%ç¹6xœuSïoÚ0ý\ÿ'ñ¥e´uÕ˜&m-ÚÒcš†ebS¬¹gŸÃPÕÿ}¾U0±|IîùÝ»»wN·ã‡›YnƒÁd#mìÂšò|~È³^ç,óeæ™Ú]Ñ²Ôfòv4¾–_D+Ík,ºm ÍÊ@á±2e°aiÜ*}rzÊÇÂEmà} m‘:Ë;˜³w9?ðÁÞÉ«'³E›š?ïóÉ·¡ü9üz/¯‡ùx4CÖ{{!D E¶ ‹Ž™Îã#ü2®²(ÉËÂ¸`c8®a:Ïâ¨4K‚7‡eâ¥ž-¦žÏ{W’À@O ÜZm¨JY§æÎœBÓ%ø5vxìˆì xÐ<RÆ+€ù†L˜ž_Îâ(!=XûR‡i6€Twz6ãŠO>ûˆiE…BªI\áe ûÆ»9Pm7”¸û 8S¿“5«x\7ÔÖŠÔÉ@ÔiÓhð—îåØg²ÚeŸAê×,ÎÝçˆb©Ò=z-Ì¬@¥M¼:ª”KüCtûÿŒSØZW›)Ó¥“ÉbÉ¸F¬“1Z½S<"›jô–Â‡Ó»ï·C9™Œnd>¼›ÒX¬w¶xÁ3¶j»à­5/èÑÝù¶èxœµYmsã¶þ®_æ>LEYÎ¥ÉÄ©Ò“-O­,»’|íÇÃHHÂE2¨‹ÛéÏ. ¾éÝS…ss–¸o‹ÝÅê™<ôþí¹Ï"ÁÜAÀ"Éçœ¥Wäöaè~×j»qê†T²´ñæÌO#IãÏÌ—vƒÀcEësý[MòdùÖsS½^1GÞš¥‚ÇÑ±~évë/íVÛÒôP#J7
_±û®õÖ¼Øœf¡ôâDI\‘'õ øžAge?ýdxáå,ãa _Ö	Ø,[”„$esþ[ç"éEû4,I_iñhá…lÍÂÎ¥!<7œÆù}èû¤£ÔZ0éùñ*á!Kmð ˜Ó žàBº^µmÐK@%UtäøóÈK¨\
»lÖä»å8ŒàI’šÅŒG¯0iØ•ä‹ðãhŽÂR®íÏuþ‚	=lf!Úâ)«"h5H©ŸÉBÉInª‰è’­‚×x¬Aç:	pà¾ÈRŠF=Ü_Ûi¤ì×Œ§L Ý²sŽ<Iqd(.PÀÛ|Nª¬RÒÄ<h¨%˜´­ÛÁÔûØO÷#8ìÖ7ïÚï¾±Zó8]QiWÀªY(˜Ò€~O³#	â	cÞ]ûm·Ä²8~õG?KSÈlžˆ³Ôg¸Ôvñ›Ì”ç}Ìþ’ù_®l4s¯XcÚ‚LgÒvàCÊÛÁ¥B”ÏRÅäÓäæ~ô¾7ok(ƒ\…¹A$ˆg˜I	]SÒ¹|i˜—^Àð#üÆXä¿Ø–¡€…jŽ½ÄtILz…»] ž9Ã M+­ŠYëÙ)P¬ø~ îŠŸÓ²6…Æ7ôÃÇ¯»	ßyþpšyXÍiíÖåÛ=Q¸µPh•6%œ òE«¿ü“Êï4e¶6÷½…aWF†ËàÖûûä~tãµiPLøfR#’/^’Q!	êú›RV=ùcóù*çWÅôæÇòæ·VØþ_fGÂÙ\Ô¶€Ø:³ÐPùÂ÷[K*¼%£Ö´B¦µT`«jÌ®Äê…¤”¦/™[S{ò-†}‚-êd/éšy5Ð-ãp43HLEÎÚîéy.eÈ8jk;‡ƒë·ýéðúý¶tK~ÇþîòoÈp‡a&L¹d$o¸ò ®X}¼ë×Ò—EvOj
Ð2s]¶m«×ß}N½‡Þ×u¯‡ýžU¯nIà»,BX.oDuQÄöÓXW72Hv_%![AþV5JƒFEéb
e"ª tKù¡û±ï]?†ÓÁÈ›~zèO¼›û»‡ît €¼2¦mv"–eñH’å‘½Žyàÿn†OÊd–FÄó°G”PÍ±MúˆJÈ½ÄMXX´p~®Šÿ¯j§ŒËˆ®°“­k¬)ÔåÔÉ[Ùm?¥Ð‰îöúèþýÿé‚¢úòç-âŠç6uÈl›8ú
?ie‡]¢yNZüõ§iò¯îƒ÷áˆÞðÈ¡K$½H&¾Ò¤µüeÀ’|dÉGŒj÷Vô‡ïK¤!¾œ ³æô£;iB|†Â`Ín×ÃøÈþ(1ÀxxíF÷I[4L§prû£Þ ;2—±ÞŠúK±¦PŠI©ÓÁ&@ÊY»_ãµîh¦!Ÿ«eørñ‰–g|qÜ,0µ9˜\»£œ¶Í>ûÆ[¬eºð›ÐµÒ”|û-|YïÏj\ÌB}±‘ë©ýÿ^“ÁŒôáÏM8'm=tÃÞ¸;êÝß|:¡I¾Há²¯öœÏ*Ãa¬UNÊ˜þìl×FQ”¼9@ÓÈ ÕO2	š4±•_Vjw¯+õõ@;€¡±qwË'!¦UÒ÷·‚¢X`Áõ­F¯hèD6Rì»Bjªi'ºw}(ÿdóz…Û`;uÞ²ëØÓoÔÙ‡ƒ›þhÒßb7s!ÛÁÈ­I<öúÇÃþD_¬ª·ý:coÜ½yœŽkýV_g÷ÿù8÷'åAlhëN»Fž¡ÔÉwÚŠªç$uâäz`¨f²A®^+7ÃM¦iÿ®W0™ÑÂ.¦›éÐÚ5Šðe¨Zµíç‘ŠïâbkÙ	ó[<R±žŸ€-EÝ8QBÀ…_‰°-‹“þ2Å/-•:6LZuò1ƒj•mZ?¶]À;wi&cŒ ¾rUÏ¤r5€ Üª
*–ªé Ç¾©ôBËº(s·R	íu¾¤rQHÙ™Cò¥@*ÃsjÀ5òùS}a¸sßÅ±2Š°Á†XH×p~”Í-”;¨9EBµ`r›ð®"³í±´×ºÌŸÛ]˜ŽJz¹?^j2“rÏ‹1I“¤`Ù^viâµkFIW)>÷²Ï^yhxyJ†àÈð'ì'ËÇ+.Ýy
ÀMbhNXŠM·çÝŽ½Éýãø¦¿ÿÆn¹¦ð¢LQTŸáªE£EFè_56=³5ü8ú,qÊÂÀk¤{ázÒXDÏœÎRî‹–_Výì®â€…5²›¤à•Ú›4YÍj/¾¦ÐÓ›I˜-x”Ë§iÇ³ª×8øÔ‹vŠ¯ZPTÞd—º¨Ö ¥îRXzØ™³çït[P(‘<¬èìÅ~V\áqZÀ~cë°o²óõ(èÆqø±˜Àq+=‘Ê8±Iê¾fel¶+j¶†1êç%l¦1,A»å†þ	gG¤\GšmQ–“Ióù¯òúü‡tq…!l°,ì}C¦òõÅŒŠ¥«Ç9ÅÛ#ñ”™¾·pvå©-#ÿU²ŠV^ê½¨Vl(ïUVþ#–‚KæÎ³ÈÏ•©­5ÛõA¿úÙNÏù•ú<OnÅFÐFƒWMGŠÖÙ±T[´8jUäì êÍqFÍvX‡6ºò[WÙž6MBGù;šùÇ²¨xœšQsÛ¸€Ÿë_:/öM˜´÷xí‹"É‰¦’â“œ´é"!	’` R:ÝÜ¿] $”œ>Yv¿] ‹Å‚ôûŸÈöyöŸhÉV(-RVT|Ï™ü…||^F?¿û[$d”ÑŠIòÓû»7u‘²=™®fñb=ŸËùÝháóIqÊY´«yVñâîîß“¿±ôaýu5?|Y,_ëGòÇ¤é@À§ùd6ßÄ«/Ðoàá±å»zˆ,’¬N¹OòôÝñþînúyµš¬gñr±}y¸ûË|ý²ùïÃ}ÆUuÿ–Ü/á/¡Y†&O0bEh‘’‚æL•EAršÁ¨ æ£Ç‰T½SÕâpÄ´U,WV'6-*O£¤’ªmÔØ™¾©(*)²ŒIàiŒ¢žn¡F4×ãoIÊU™ÑQ•¬“ª–Ì°
¢ƒ¤EQÉ«Ë-*ùØÉï3±ÃMf;í…ÌiuÓ"ˆ‘êsZ²£0%Ëò¤•	‡Ðûíš`(6†‚eÁñQé…t§Oƒ^µŒ·¨þCE¯ì€Ç<Ç°Ý²#@Œ{qdÍÜŽ¥²áNPkáG<0ö@ëÏ`”’çT^ô$G	-Ç&áÙÈ¹3>¥%ÝñŒWœ¡–%éÉ‘&–ˆ"‰6Gl›‡
yG)‘pÈª)9óêHè€í64„`I!ï)VE0+ÝÊ.ÞöæsSVÂ@a€Ó UÌ;ÁÞÂª(e*	&­[ÃtJ^VâZäÃÊhˆŸN9ØÂõÌ£	´®y:‚üòe1»ÎCeÆE8ð–Ìõ(39åÅu¦;¯{i Aèê Ëê¼HkÈÐ:©‹º¼Žg0dõ2öÁD2ˆZmSý ÑÜ¡&œq—Rœx
^R	½P@ ŽÑ÷â+ek‘3ýà#÷Rä™¸{Ã¨y$ZUpz[ÒD?¨JÉ¾×LáÎëpêTŒzà›Cœ±¢vnœi óÀðDŠL”nX%9;1=¾Ž
q*öDÀŽæ.É7[²€èc¢s‘™8 ð#¨Hž˜õ‡víoÁAXÞBá¤Q"é™´yÐÞÑ*˜YX0H˜–Ù:ùôoòÒtjÖ|=«{ž5¾µê>uÂ-Ñ;ugÂ_ög_19ÒâÀÌÉ‚R¦¦ßÉH&º}ª¥è#³ªgBAêíƒ·«ÉæeÈC-îhA{ú“õdHD}]&%ÖØö[‡ôµx@ØïYR©þÔØô47ýƒ4ÓðšÐ÷*L$Ä6}xÌR²”'Ýeï=òs×O–#ŠäBJ¬ytŠ2„ÄP1ˆÙ“ oRÛ~QEôpx•Õ9J“Éá Ùš®šÖäÈeÈvehÕØ°k¬¹!#-ÄšY£ñÑ…«õŠ‘u«724¬îTE«ºnX«mu&¿p¸RXÁ*Í@|8ÌÊ)*œY=ø†)&O†¸F	žŒâkŒß	QEåÐ^ÿ =äzøuã²·ñ1õîáL3§'¤_(bÍ£¾\jævp©ÆËðœhV7¹ÒŠºfy¨#³}ç .Žž™ÄÉ4Gƒ{ªÂB{¦^±Ã‰1'HiDqýôáƒ°a1Š;	¯á÷&)Ûùò)z™o{É¯%é³.K!+Ülâ ó{ÐµrÀldI´Œ>y¦zéµE+±uŽ( ¬@4–öžàø´öˆ›þðÄj¥;o ä±Äál˜óÊä›VW‹®|µñœÇº¿jRê‚Wzã.Ô{~€«Ãíœ•XDhm‚Ú½‰Ö]1véÍ8¶¨pÏ‰Ð4§h¨[a¼4%øÖ`êyÕ]”³ÒxŠ>pÀßYx ¯Ý[jho!ªRØ#ÍË$6-¯A6²þöw™ˆydvwg{ñªë‚mMØJ†7^(¶ˆE½Ò÷_¡ Ü_L#Tk2?S©+7Ú\¶¢2H‚ K“ŠŸð€€ZQd)9áI+øOò÷w?cY5šAÞ‘¿÷<HÅ¹ÈÕuîÌþÖÎ7æ¨sŠ©4çä¥ª£¬õRÕ;ô›BhË¯$&@-¥G#kJ\;É`º?n(ÎLÜD/>_ár1 …Kz/¿ s©‹Å º‡èkÙ81*0%KNÃÌüÄn`Q?¸,´‡¸ÇÅèuñqª†;µºÝùQ~È+Ýf„T¿¸@2¥7”)Aq@“ï5·¡qÛ-&¦€ª‹«@¡ÂBKŽR7V`Û zÜŒQ5îìÆôSuwŠiö
»Ç‘ØëÔ*÷H3ZQýÚÅY¨ñ0 mgíEyñ£”çe†—òr…jNÚÈjuô(OØrE_k¸^ä%âcjÚ®:¡%Ü™¦þ6Æ†+ ìÆ“¼#è«±‡0—åq†î€D¿3)˜`™Ž›H#Rë"r ªÛ!e˜KÑ-¶–îÐ'}ÖxTÓtdü+
U	ÿÝŸÀ¦±aaz³M}Í^­ÒjgAQkÛ{7ój÷Úáû'-à–Kö3P4¤Ùö¢½æw 
…º	-¬2ü2ÚøåËùLe^§QÇ&2'ðúLš$¥ˆM‰Â™z)C'E¤#•p–ƒlû¶	±mzsßŒq•ˆ“I™3û[¿tOþ'±FÐ__p®2pkÍ2€EÊÔôaq2´ª1¨2õ›Éq„Cð´µŸ-`Ö>™7|”NaäÎágHÛÀÒñI&ÔÊv”Ny%øÈtaií!¬ˆŽBUÅ÷¢}gˆåžÕÇ.²þu­ú"¶’ÁÅpsqú:|èCz„ˆ+£oì2äÆìSôi5™FÓO“gÃ4‚è“ÑŒ¡Á}QÈ’oó+Íxú
¦Ö¤¢ŸU¦Æœ|YnÉóö_Ö-òÉÑêô=BÊ%€Xæù'5ÇÍõ›‘[E 0bËðÁ½jµ£Þ(Wé—«'—ã¦î3åÞì7ŽÇ¤3QKüÆ¾cÕ™±¢ýàe>Ÿô?’< YÓ,¬Ë|gR¤þzñ,E…>ÃX±\ äƒ¾Yßõé~ô¡^<¼Á/mc;loÔ Úh…ÞÔP8aM"»xoÀúÅ”¹yuÒÞg? jäþv«D)àº´û¼Ó¨7[óàÚƒÓØ^&ðó•ã×¦1¸ß `pkhÔ›ˆ	Ô·¦¹Ñ5‘ñø»»7ð‹ïÝÿ×0ÿÎÛÛø(Ë¼õ´1xœ]’]¯š@†¯åWLñŒè‰—§¦)AjI 	xìÇÍfl
‹Y­Íùñµí!evÞyfàÝå²dóÕ	yÎDÏœ `Bñ’3ùÛ$tV‹'§“NC“0[ËxÝñ"yU+°rVO«DLQHPTv²íçˆ|aÀopUw²WªzÕt€5½=¾,,ò®ý0×âÇõ…qø^SQÁúü[¯od-:0ñ“*HiËúÖ§k(iUÓ÷CO=DÁJð¢	b|
Bß˜âì¿M86CÅE¿ìò£~qj™aLy	ïFyaí¼„Ä‡È·áõî›òÙw7~J¢—pûÑã^£Q"o†‚™·Å¢6#	_¶AlÅnä[&ö4ç`¢ò¦
È²°_
½áè1§1äà§Y°‹í¹1ñvQäÆÙÞ2&?Þ§ß,³oñ;´(œ¦«42eJrvb#­`ˆŽÜtViÏ¨B<Ê°?¹–,%XjÿEê3 ò‹Óv‚+}&Fð–)ÇDc
Â®‚„VÌÄ'££š|#á?o•Nyvh®ø	¥NÍ{”]tO'¡ä²=SÉ`8(€› ®£<Z]A¤<“QEn*leö{ô ¿Ÿ—ÿz1ÚDn–ü0ëõ¶BxœÍ“ßKÃ0ÇŸ›¿â¬8ÒÑnuÈ·ù$ˆPd(‚oe[¯[FMFš(âüß½´ëóâ‹OÉ}s÷Íç.m··ã‹û(3”%FWJ#rú.ÇIÔëÄ‘ÒQ11¨Ù¡³ÂfÃÒdBuç;j-+é]ó—¥’…¿£˜ç–Nb¥ÑvfÀ¥¤jºDÚ·­Eº£¤ŸÒLÙi¼Prõ²€½0ï3ZÌ›-&Út>`Ì9ðI¹ÒBšœ·HÁ?Jr?$B0ÏÓh¬–p}—$®„\`û T*äœÓ¸¤\#n‚¦¾º½þ¢9KTý^/©ñçÎ|ß\ÙþIH^ÿ¢½ãÞ)—ØÔ%<NŠý–që”ÕhÎrŸ•P·“ýÀ7GÓŒÿŒ
qk@QÜ~×J”©û°9…aíâÂY Ùl^eF&õC¦di >™ÚÜY{´î5î@7M:(WX³h”-
N5!´È;„ã¸Jp„¼Ê"dhµ ú=á€¢ ÖkàÈ¨2p_H36jÏ£©5!9¸)¾TYè¸xœUPÁJ1½ç+æ ¬ÓE¼í©bEÐKÅƒˆ$é´›6›,™ÉöPúïf³«àeæ½™÷ÞH)…W6Ñ¡"$!‚o@Ÿ¨;€ŽÊ›©Oè1Fø* «=M 	ÕbQ‰CÐe¤“uÛ	‹É“Ì7!éä9I§‰dw«Èôa¹½Þç’ô2âîª\©ê¡º)ìcg‰lðª&xFÏÙÚ)ZÆ2Íû™ !Ñè[·êœÂCâÕpÿ÷ÆöÁ¹PÏOÓÂj¸›uNÙÙ¯fÎŽ˜ó\Ï@h"2-Ÿž7ë÷‡ïÍÛËã+\.â»lgŸ¸Öxœ•W[O+7~ŽÅH} Î!jû@	j#A„V­Žrv'‰Õ½µ½	©úã;c{7^nj÷%»ö\¾3ãèÕ‡sôÃÊÌw¿î‰Óþ#ÄíùÍ•Ò#t&
C¸Go®Ð^©åafÍ¤†ÛßnJ\©…˜üq;¾›Œ&ÁL0õm…Öá£Øa›lîÀIÔ8ƒoC^ªòô$þžÁ?0TÐ~=Š„'	V¨£$½Ñ
ºÏ\V²œL2Âk¾¯å]-®µKŽ5Ä÷\ÔÊõpª´´–˜öÕæôÄÌf}P7Ð~õ¤\}z2SXEÒG_Få2“·d¬DÞ³ùZÁz…Y.¥.ŸÈñ“*Q{EÊ6ÚÀ{»¹ãÛ0žü¦Æ 9†ÞÒ£—W“‹ûÑÝÃh|Û0ŸqÆÒN•·œ¬ÀŒøBŸ%ÔÖ¬•~`Ñ7Vc	ÎÛ¦ w<â6:¾ÔÒÒÉy´ pXÒòÅ––rSTdÉ›¾Š©¤!’×]|>†/ôñ…9y¸·Æ³;FÀ´2ÅŸð¶´þºGÆ\SèÜ>ôps¸öQ·«4`fà(]VVb-7Ž<Õ¨K¥ç´Ì™Ú+zUrî~
+¯l–ÊÕ•Ü£bÏ0ÝAJçœ2Ä!`rÓf6£„$ÅÚ*íIÍ2ZšÆÃŒÃ×†³&ZuÚ¥L;Nÿ8xWÒ"¯¸ãcñFYÒêà¼¢$JzF@ao+wºá=§þŽ,°øWƒÎ;­œÐÁn’È‹üqP…Ñ1´82ü ‚vàHFÖS:ÔY×aÌ :{®…–Ä8/­Æ\âL6ë8d©Ïû]bËF¯P+ÔD¨P×!éøì™™|ðÌ¥iq)ÃÑO¥#§ô"µH·ÑÅÂmDíŽ‹ª¸ˆÂÁˆÑÃZUb—¥ªjaS0br¿ŠùçpÛîâ7Zâ[YÙqÀ{°’Uƒ:ïÍÁ
ë½´ˆÁáó,=ì–`GÑ6©É[’xRÐÞô\^UFÛNöa½PÅ"hÛ ²¸NMðžU5‡;qnû9‡wÇõÐÕ
ÛOtí
„5·=’'ëûlä!ƒq½‚.O‡µV[>Iƒ#i½D¢s¸D[ZæŒ<eürml9”•šspÅüø=áƒëJÄ¶69´N™HÕx=ºdõÉuõ_ÕiyÒf{Ô6iS¢‘MÐx±†óœÈWLd~D+M¸ˆˆAõS¾•c´ÉBdþ qQ9×`¹Ï].’ ñ=“	+ä6Ã0ÇñúLgÏ“N.ÔŸïLVÃ¨NÛŸû8Ê^›5!ŒÆØ?›y)ók]Ssäc»çÙ:%›^‘°ç¬}RØ[DÔ?# W¾ÞÁC•ò¼Æ£tI³h‹D9Oð¨™ÏÝsm')ó®Œ„;ygÈk6%i·#§lA,õ?Úl\8¿«ßÏoî®¯²«é'ø™"ùáëQš4á†Ò!:ŸóKÎP|ù6»@7LŽ`;Én_ÿs¸ÈÈ)õfêürYWyF3·°;¹9¿ [I6¥(àÃ»GKÜ²YÖq`òÝ€-ÝO~[“mõï” Oð‹$hù%"šî5Ç ’Ì¦ú?’ôvŽ w¿>cOìãéè€Ö?²§(Wt	6¦¯5_ä~h†Ì)¹;H¦/Y,•åÉ“nDë³Æq#æûH eˆºDúƒtGíš›
g&üY"’Y:åQü3¥^B²Žxœ•VMoÛ8=—¿bniÑ(MÚKaØÇ@&ŽQÙ]9ÐâÈ&*QI'q¡¿3”lË–Ó]DRoÞ#‡o2O9FOhuº~{ñNö!&—·#Ñ#ÌÄhH“û[„ûz5)ò\u
ýÊz¹Uæñ“»i<ŽQ { "‡â¤Åz}…O:Á/ðEFæèJ™`¤Õ oœV_ ‚È@=~Ðzï¼´>šgEòcÐwÙ\¸ƒzÜ`”+ã‰=›taØg:×UDç²kfHZXÚêÊhÉ$Aç–v`¥Õ&-ýúDKØÌ:h‹iäåbÐ§½ÜÂfÖË²dx”KG9 BPÛékQ!`#"a3;’çÂÊrH¿5a1ì-ý*6J–˜üèwVÏŽ|xâz¿§³ñÝdk%vÓlyèA–ÒèÀÓ7m<.¬ök(Ò°Àì¨€³nséua`¾¥ÒfJz	L’£—<9â.¨n,Ž´×[ƒÒøÍdñ5¬o$È7›$Úc¾e–o™%fH¥¨ª\ˆìX˜õU>GËGÎŠ…NdVsPJŠ&[fÏÜL‘QôuîšÏP{?Íä"DuüÎ‘iwh*b|Pº«æ˜ÚÂcîeÜº#ºÐLÂT+-œ‰÷âáQTƒÃGTWÚW×è«KFŠêS5ý~9œõàîË°tÿ,Ñ€ã3pq
Ó1hG~!žÕmZJ‡(¸½Iõá™l…ðÌA|èú–jÖ·58ý™èó¾Àù©ØBèk)CºÜêcïœ¶;üúíÕí¹&z„¬âf¯€FÎ3r|(ö1oh±’VU‘¨.~¥ŠÏÈ&>œÿ&€úZ4dï ïÞ‚è¶0¾ë]ã»¾Dî¬×ê\R±(xÖ~	åîü­r6:ÞïX¡Õïö$ŽŒø{Ám«d©]«ü¥ÒŸ‹´:ß`¯²ÚA‡eÉ{i5_Ää1£—’ˆipÓýU°d\GÁL.ÞŽn®âÙ»C±ºÍŽt^>Ú’Y~¶$ãÎ©ÈéîZnK¯)[·”µ ¬=D”lxêlÔ šæ]”h7‰ý{y;½µþ&à‹ÌKöá=aèç£ù9™6D,~)(ÕÜŠŠSüœÇÚ:¼ºxœí=k“Ü6rŸwEßj«"YG$Ûyœ3UñÙ±ãœl)'_%)Gµ…!13¸åk	rvW>ÿ÷tãA †ÃY=öÏ~Ù!‰G£_èn4€ðúÕ×ÿ•¼)/%O¾ËxÙŠ•àÍïáÛW/’çOž&U“ä¬åÍéƒÓ°dr-[BZuÎ[Q•°ªh7ÊmÁé}ÁÊrQrèZ‘‹öë=ìJ,Öv%¶”ßþV·s]•×¶X‘ed\¦¨©U	mi‘ÉGXû<Ïoá¬ê2!á’žž”O.Í3kA”Øììû·ðe·~ÏŸ>ûüô” ºÈ…l/ªº•ððü|
ø—W)ËÞ-ÎÎNOô#ˆ5kõÊ¾+«K]¨×OOOh ‚X<ýü3œÿüàºj2ùÓ¿¼ù%y†ï?†G¾€¬:=9+øé',¢Kˆ7¿Ào|oÞ|AØ*±È	Ýéãñâ¾]‰Ó“¬*9BAmÀ¹S~ÏahBâwßþŽFû	àx°Sõáñâh0à"g°áG\)jI†HGØxLÒKªŸ,;‘·¢|²9=I™äpvþì?bOg„È³G¦ÏÇ‹ó^^¼|õãkÇ_Ø‰ì–òVöåC’T][wm‚,X‹h¨ðÝ–7Ë
»H¶gC"KÒ¶É~¨zÃ®“¥(YsÉŸ7òXÒp–±eŽ-üü5Am–ò«¬yŠ\œbÛ±ÎýþJôV"fdÍRžˆ‹—# Lgc(¢ ˜ÒØ}Š…Vs JÖ+»œ5(<pûëæKf>U‡‰(3~ƒµ¾î:¬g_üyÀ¤¥ÎžNÕçàå)aø?•ßÜÚŽtÛ»›Ž°C¤ñÕýNýfã “Zá
	Éû¦ÿT·(`Iœ¿gÔš¥OÉC	Ùwô±9¨nD˜UˆIRV‡#)îC¶‘<­Ê›%D!a°ìŠgÀFpRµsx	ÑE³Öêx­èQxlò¶@[E­873˜ß£ˆ03¹W½†ÈE%·nê eýr6l¢!)Ö6Užó&éit(ñS|Ýòˆ¸È·«Kú‰<fZ_!GËieCê¬¦ÇŒJ"µš«dýÈ˜&ƒCSs‰&Ãe"…ê†°ØŠ‚#ôøÔöJÏ4ã8û0ŽÓSŸµ-K7³ôÂ€W\êñYsš ÕÆÖ•Ê«u¨QªõÀ1ôóŸòÑL• :äue8"—µ!n®ýÚnòG3ÖQÃ4„,†Òør¨IÙÕ5°<SPÖlÍßUM¡ÅÊÞ¢â£Å¶%rn[ªPîÖ¼ä²7¾[[€]¡)E«ù:c-KöKÌìô¹ºŽtŠÿäÔ¹aåšëY‚4ÁnÐw*©¨÷cmÌ§ E¡Ý_a…b¨œðÕŠ§­<¬Þ4ä+íÅ/1™d3g™™ðìâº}Ìª»C‹ñ=¯ƒuSu¤‘½yœg"m©OòctõçˆJ]¨¶9ÚmÂÖë:ÅÅ/ôj ††}Æ	ê;ržJÛç¸?–’Ãju’£ÃîÐÝ@‰6B2êdËÚ.Æ^½þœj¡ár›”U+VsøÇ©¸¬ªuiT J×Ý×…«9lR #²¤Cu¨Fi=«
Í†Y”ÅgOhJ^‰™æt2ÑÍ˜+´fº†ï×¦ ~AN¦ä¹š­aC3Â0¹¦Ùõ³gúã©qž·ã™[À`—«¤ård¶ŽÁí‹"ö2e˜¹èí?FpªÌÏõ'¨0ÈwBê–åA»£•ž¹‡’8X¶åš—ãžãy`TœuS¡ú‡ V+üj£(¶Ÿ€qFuGu§Hõÿ¦Sí ®\Õ'•häµ vD‘®…Qþ}*ˆÝÈ§A-ãÛ)H! 2¯ZÓ §u—µhé7‘U×e^±ÐZ]jÞ¬xƒ?o<¼¸ÆÃ±Šö6)ÖE	a—¨-eÌ•ÎÜFš!¯®Uy/ëô•‡zÛ¹JwDjÂÖKü%Vä|C˜l6K‚ô•A²LkeñjîB¶r ¬%jX)ÛMÓ†`d¯Rž[K3œeW–\I#·4¤?Y’Fx Ð-hÔ2çUakú¬‚LO<ÿ\ÿü~jôÒSüý™+¤¨>‡ANþÞü¦Jÿ`~†¿ÿÑ­ô9¾ø'B\éÌ;¹©4ËQìZñW††yÓ•ZšIFô<xÝˆEåÚV¤Ðx™bS?ºîmuGœ‘~w¤Kžv0E¥S†"ÓíÖž Ø€$­õƒš—”4Õ=ˆuïY¶yà÷6<ÝÎ˜òthàÆíÅéÀz·¹!Õ”U0˜l3ºm•}µdf»I²k—E<MÚçð•Ë?3,/e
²ôªsæ×´¹ä·í²Öæwzœ¼jÞ##½bBÁuAvÛð5YêÍaý–æ÷eß/¶C}ã¥u[[™TýF»Í9“sG«;Æ6tš{ŒvDFçþ~Ê®°F'ÏÜ8æÀR‹ýnA&‹CjoÖ¶*$¤æašÇèaiå'_Z€„™`Ù5‰2ýh–ºqíŸ´ªC»'ÆÜ™fìÌëœ~­ÆhL ½ÞPÀEs¶ZÑNKS.¥ã\Ô(WÕµ¡¼~jœ9ÛA•­›ð›ÝsÕ¼}Ý«nV×æsK¯¿J¢„ÊKc…Åí·ï{ûS4‰á¥A?ÒÚ“1zÂ~ãFy'7{Pë‚ÖECöÖZE¡ÜWÇ?Óª+Û…„2Zï­¸Ÿ§Ì‡[‘ÙÑA5lKC™Ê¢Hß]’9€ÆV5• 5œnxz	ÉWóð2ƒ¿¾†pjÜ;¿ÿ÷³XëIúÈ^=âúáZ™GdDd'oySÍ6Z*xk,)8Kµú?¶]:íVÆ.îíô6`Ô`*†ãº2­f˜)ó°à´¾åXÍ™6ç¢÷Ã Õpï.?©’! (uáÀ+be"p¢^Öfmòšü³…»ªÔQ¤¨£ÎX‰±±Ú6µšAëHÅKáqy™\UÓé6-/’ýeKI…RVN·HŽ&ð».oeB¦Õvd·è`H²cµeYÖhd£¹Mö©V½ú2¤[Ô±Bv^8ö½-¯Èg¹2e(òv£~`Üjc³4¶ã%ç5º^b‹<VT®7 ’òJJóAYŽŒ`¨ð¿ÈÍë’¶’F…n²ÕèšKêÚNú$ßö®}CM]u¼S±2¡\íñoÿÓ)]Wy>|y…åÕƒwþ£·aû•-è“Q˜­_\æ«ÊODI˜ªr¤ßÿ!úMÓ.Ñ/õ—žŒ–Ž}òè¹ä;ˆŒÿð‘F¨GÓ‡eÂ]ã[—	îNÓ¬«s‘R‚ˆi\5¨«Ôª¥¼ZårifÇÝ³@”ö8Ð"t [œèzÌ›(žâb‘^iÎýfÖ
¤6–ŠQZ’îŸ
æ$kéÅ‘‚û p:Öè×k+Cò6øÍnU×(¥Ðìš™qÂ \2Ë_¬¡¨~Úa=GàÅ¾Uqµv›[–[d="-Û¼OšRN(™’:sýú¦.–a…m k'>zÉoÍÓzÙ[#§XÔ(aR!\YUxáM‹ ˆJ<ÖV¨*ªõÞ\W²
QŸ]ŠR™˜¾,E5Í±žùk‹óJ	µ_¹d©“AlˆDT_~õòûWú×W/þûñâ!œ?TYã(NpnÓÇI×ŸS]¾ïx°*ÚÐ]SÂÓÓ_NOë¼[‹òB¥­ÿÿJNÿôÐäô0Íü£g€#š’åñ4«¤øZ‡ÈI¨J|_v…ë²L¤{Ú.QZ5â¯ÚRZõCÃ»_ücá/²Â®þ,/»ôÿµ”ÆM•gŽŠÒÙÃDBJ²6JúÔøçÃ,êOKk¨BÐIcIa¤Pî˜6FºHu½»Àð4ÄX…%ñ~õ+Þ–Gup¯êà>È^ðb™³·üHzôï¢Âl˜b¼^±ww”¤#ù<~Æ’òTö$œèb¿î.½¿WµÊ™ân¡Ahµ|Pa<Ë!;±"ˆp™’£†Ç8KsÎš$–úºÇèúH²u¥G±òÄŠR2Áö§œ«pÁŠ7Ö_w™6kÈ[ß›¸ˆaÚ0¹A'¼÷ŽLW«•SPµ=mÔú6“Ì¯J$EUŠÖ‹ýKne2a”Î “õZí€>j/ò>ø¢ö!Ú¤7R1N¶E4q¡*Y™EUÕf°žVä¨Ä#ÃQ#Ýª¬—è¦!m†«‰qìÎBDÿÍ,"¸JL«¦:íinRÓ•®šž4w£/K»¡Y—üyš€¾>V1 UsÆ\£cØ¢&`í] ¡‘>^åˆ'¢|u­Òz¶êÚZ?9d#©nº1¼L“ø.Ÿy<ÛïÊý±eœ½.•Ú%>"Œ&ƒùSd„%=m¡” »€]Û½ïS{”"º¦çAäd²ÃP=2QêÆËÚ~,hšMhî0%çˆÒY)×ùPù¦$Ù%mó|ÇW]–¼~ýu¢§ædNœS|(T÷ajl:vÍÅÑÚ˜:5`Ý~î^[ÉX²#£xŒ²ÇN˜aëv¾r;È–ª¾MThîýX÷NiSãHA0á<ô3d¯\V~½“W´ÂÝùlšÏÛEèm•…^S&7á"²Oø «k°F&¸ÓwØ…¹¶L´Â&ÅìI/JŽýø®‘Ï³JwÕžR¢Lw¨±¯zZvrK„¡³€9îCEJÎÖ8Ò£Ž§àwñ¶rpÇe·+Vs‡ÁžªwræªÚ³h¼—Ü\Û„ên¿¥Bh±6é"²!*“Q~Ë¼–w¦	LÎ±4‡®¨û=QwS¬ Ÿõ­|¦DÑGöÍFá'%Km•lÛ­àÑ#?ºRíì2+Ú«†_Ù˜à8TC±M¸ËM Q™fzšž+îEÃoXY­à·¤f÷ÆÏjhØH?çp‚ÐÝï÷‡Å\ÿøÞþCÁZÌÚßïnðO
¿†ØE†ÆÁQ¦fÉÔßˆ\ÝéõÞt`4çêÐÄ­@‘.Y¦“%'yçªãäŠ³Ð¬v[V°¹6®:¬+Ri8 ƒ—·­ÞÉæR:/×ì}¥ÒwZØwhÜ7^ï%ºK+[)êò£Øyb·á,o7Šê“ŒŽâ°_îƒ°oKy$éý¦êÎ;w÷Ì‡îa{‹èSÉö±#>bí:³2<„ãmÃŒÆÅ_êð‘×*6ÛPºs†k~Fáš·‡aÔ½d²r’’MpœåæˆfünÀóì_(cÇ&ÕU$åÁ”Ø>èL]ki·úÈË×Q¤ï:žŒ2 nZDÏtÀ€]/DÉØéQÇÈJ”Bn>|?UÍËÔ‹âÕkæoµP›N?Â°V+ºOàÃwdG£øï®¬ˆâOÅ1sX9ípÓ}å; €gu=K-¼•ƒJ˜}¦3<ï ƒZñö‡ëª{¶Ü{ÛËíIÑð‚ÕzsaôØ{`­BL$aßAÝ{‚-÷)wH¹™8ºß¿¾·E{Ìbþ ‘Ìû ¦(eÝ5GzzôT·Ïaü›ÚGp¡n’Ý’¶ˆjzYê`yÊ…NHéßéÉÂ~á\ô×¿‚nOÝÄóUU¢ÕP¶t½‘(3µ½¿4iÃ$âž¸€n@:=1Óä _JY¥‚µbË5»…jš©$P}f
 ÉK ëV%U}©.úÑ÷ÿH}÷öõêÅŸ¿ýî‡‹—ø÷×tÐ÷ì’¡ä§'”0¢eý²IÔ(X<D<ÿ¤v®¾YXíîb#ô1­d£{a¼µP—v6‚'äàlá#h³Ü ze7Rák¿ª·¼}>F/=ÈB°ËÌÖ]ÍÛ'á^é:K»çú}àï‡ ŸƒnÝ"Wm o¼º‚—gáª:L®yëÂÌw“Úa”¸îVÔ9ÌO™&º	'¦úÑîH•qºŽ®f[ƒ—h±]ÑÍr†]Dà'#ùuN0r ™žàòj‰Æs]+NÕÇ9HÀa²Ú<¨2&Sh¥ÿtRƒ’•H½º7ž]ìäÊ)ZúLkk8T	¼ûZ"Ç”ßÁûxh„rgü±öÂŒ(B·É3ÒŒâ×Í˜éA‘Ú¡Â!ö²SÀË(‰S(Hò ÈMzqÊŽ”ð Ôpõ¢{Tý:³,ÔzrA+ŒaºñÕÍ¨áAM{+)Ð¯–¢õ!n×.XZÜlèûqÂÕÐ‡¤©ÐÛRºó…$Áê>ý¸11¢Nº¬‚>„CpÜ È0©ö‘
pÜ~{¼JÝ(ß1˜/É¯ˆâZ›¨ø)4ËNOí0EÐ¯i·ö]ßXáê
­|o¤}0ŒdÜÌXue£Ó2Üù?Ü:±=ÖÎÌlõ•öxcG –#ý¾š§dz!’È_$ß)¶HÊ‹+JáÒ½#MÁ"ñH
¢kZŽK#>§£.Ó…®­ÏwcW©g½«r¾å9®:¿ÅL²Î5”à‹)	Îè~E0BÛ Sn¸ðúëñ vQžªã\ð£KíÀ¿–NW0—ÇAá˜[ÛÀÜý}fªBiô—n5™¼û¤Ti}ÛDîl,k0÷$©
½é
Î…CàÝ¤ÊEnúøÕ<ºxä§U·¨ø7Ë¸
Û Ã¿w¼›C<]OÅÝ;5À½$ûk',úzóÈ¿HœþMËÎÙóàþíª¸{J:xg—ƒ{¤øPVÏÉè`lPqc ˜Þã«3œ“VÁ9oôé ^s‚%¸GYê	‚#%-£ê£#¡?ìà;¦
Û£Õ†ÉÀ?œœÈ48ÎAcà&ö˜.è½Ò8©‹%x—ÁŽÛ»tóã»ÛÀ^¸‘»‚‚Jþ?SÞ©UàÞ‰¨gG4MÌ<ø{¢ÑOädŸÿü›À¥¦XÍ™	Ñ(MFA’s]æ¬¼ØÖÜµGRÙ Ž‰û|òæHò–"2CH&ˆ…ØPˆ
€¨ýÈ	Ï%'	@È5Œ3 ¢KÏŽÅÎM}7Ä´äÏüR“PÿBb:Bxü¡c©GC†JÂb¨«l¡¦.sNoûa<GØÎ)Ê£>RìädˆÙW†D'ÁÓ..L#*æÆ—ŒAÄi!ã+Ö!"’oÀ;ÑÃéÿ3ü"¶ûxœÅZmoÜ6þ¼û+Ø¸Ø¯·N{Ea_‚‰¯·@ÜôÃ-Q»:è¤´NRä¿w†/õÎµsw¼/Ú™gžÎ#Š›yÿîõë7qÀ3É×ÛgeÅ\\’_Þ½Y?;ÿn‹uÂJ.–›Õ’¬ÈkÅY\Æy&I”Rî9ùõÃ¹þX.%‰3XÀ/Iße‡”oÌû:IÈ`
qî+
.ä9|Ù,—Oâ,Hª“p!²ü|ÿÂ½fðjï"À¶¥¿Õ¢ßv®¬Ñ"^6Žü‹'`_ù`HTeö¬Ü³’LJå_nxA$/˜€H$ŸÎÉížKNþSÉ¡jÁ ‚%Ù³,L8)su5Œñâæf[@§ÉÏyq©~ÏØÎ#õ¹KåŒÜÇå>¯J-	?Ñz…`BÀ£ø£‚
/MhéK"KQ%?©(?	qð€PNY˜ÆÍ‹“¼8#á9???%'.ðïßËŒ"¡TW‹E})"'áúEù©àäùsókúúú}½ýíúÕí©[ y®“'OØ 5ƒóLQúá%}ùÛ/ï)=½R:<`ŽáßlO‡ ÓØø m(]È„ I×„±°h|±Hëë_ß‚«úå3ùrê•$°ÆQyjbM™ØÉ§%”@f“$ã<D(H†‡”qÊqH%/ëÒjÊçLIÖ™ùÇ$Â°Œ€™*…B­u!³j½ÿGf‘ŸÑóK†µ,x H€$¥Î=p¿Ú|P«º@¨õˆõsâfÞUûw;5Ò?_þþæ–nß¾º}Co·7×o¿½MiE×"~!_=ƒ-þƒrƒ§LILc=§:éŒYÁËYk4­¨²R–.‚—•ÈúCgåÏˆ‚Òœ—_FPôÌ‹…’$+|´ï˜¦:\
DÉÏØ§I,Ë”V?*Ð9[bX]ÁZ¬ðÕ‹™’wè!0QÚ<3iB0CöûgE5S‚¨ëq£ÍÆø¢ìã‘ŸÝ<€Iv•ç`›b‹V6™…™û2ðeDz  †¨Hü´ÉK­:A”%I@¿þ·Ãç:"–‘ƒ
Ç±iÚ‰æÉØ¶Ù";—ƒ®—Ç0^<‚m×äQ„§LLN›Ñu]°¦TVÌ²vµÚåÊ|%ò,¬íâÁ™kÑvf ž¬d@½Fb@yp&3%oaûÞîxI#ÎÀ)Êe¹«ã»´º:ÓË+¤VºKK ð’ÏF|,Tm'8Ã&¡ÇeÁÞc5¯e}=¯fÝ6¸8vÇÌæ#‹!~œH¥Ž½^ö§‹šùÿ·,]{ž,á>"e%…ïÚûŽh£1=¤’áÆÂgîIÄ÷¥âêL“ÁLò#yLeƒø¼uÕxS¸Ëó„ÆMÊð¬J~Öœ’8„uÆ¦•“gæsÂá>ðƒÔ
ÄÇ²Êecx£a…l3BˆÑHR§E22AÙ´÷ñ‚Í½±nØ'¾”«¢È.àø­`»±I¿=Nl År_¯ýIê\ˆ\Œ­`Ìv‰ÒI¸‰oíKËX3!+øN=œPjvjLi|‹11ÐŠx´ÝjhÇ1úûq6ö(Øš>u@jýqÊÑ=•I>FºK´M5ŠEzÏWdP\A77Œâ8É`Ï²Ýl/ÜÎêñÞ?ÌóìØtù€	¾0ð(âA9VÎÔ!cÿ†tk!mPt>8_fÙ7ºö†laœ¾ÞBƒ64‰hÉÇâÝD¹Óù-ÍÙƒk×œö¦C, ßä Ÿð”—Ð*ïóI¢Ý2k}iZôâêCç‡ yI^6±}Èâ1ÈÐ û¬#þÄÍ\¿ØZ<’¸s7§*îö<+Á2H¨È«br÷dw£÷ú ï<éè7Œ©ò…àa”ì.á4Ñ](ø=“ÖÆ-ëÜv¦?õsÏ‚¯WÃÌìšcMé?À
ëÙ£ØZxL‚ÚÈ3³ÚydËØDØÌòF–&² ðß]Y_; nç"„?¶j›J×Ù–Ña×Ût®QÌ†£oc¸Õ-Î3Nî•%++¿&÷ñn~…™©€Ü;¢ùÉß3?æ†Íþé¾n°š–ºÙé—r»‹@òž—µýo<ÒXµJ÷¤ãÌž·?c þ.G˜æ¡óWç|Êù'5gôË¡…¤OVøqÎ«¶NËœ­T"+œ‰¦4–A~àbìÑ`ÿVåkMmõ5ŸÂ‚Ãh•Å¥š;&»‘0OG›‘ŽN§´}\2bßx¡-ÔŸÝNÀ­xäYï&n¾œzè9Ó÷¦Éî¸ökbß†\Û¿áG BpÉÅùIÿÞ”4ËñøQ  ¼Ü1ë_Óv'Ð?÷÷›ýŸM£åÏò3ÜÛÛæÏy6ºý4ø˜¯{.Bß;æ=bý½’™Æ•	éÝâTÏêðn:¿B)è^Ge!úÍ•Ö‘*Øzjj´f{Ú5»UkŽÍ(P“èÀ¶ú=óû,ÉY8ÑÑ¶îFÃ{s½Q™ÞRÁ OÓx"Ò].Zþ&Zaš‡VÂƒMå^TãùüÉ‹ íz%lWïPšQÈCx6°«„÷ÏœÏßw6ŽáÒÅwÎïîWóbHõWàïöKÈJ¸iz=“uxÙŠÀ8«ÅÌïöZÇŽ9œDSi•W0ËUÉh[ÐŽªÝ¡0Ô±3ár3é@©Ù¨˜x˜HèX·µÃF·ñDûØö®öËuÅhOTjlVxLO°ý­wN‚‡ÙS<Myàxî„L>­SVû8Û‘—ï¶xO ÙÇ—zK	’O’{nôÍÊFX}ðÎÝlõÑÓÁ‡©Æï°’>e¡œ3Cåæ¢1i²8±AuTŒÆO³še»ÓêòU…øvŠj§ÝÚš¹š²r³íZ¨O£õM9ÇÒŒŸ&WÕ¨yF\g¥=—6õèsdWîŸ @Ô*\L¾fªW	UFsÃmCm¬ H€¸ÈÞì»!“Êœ1„¨ØsÚ`¡ê7x´îúí{wt+^}è²í=áäA%âÏ#dSkBïäC£¥¦Û™Òé*Í<wµ¢P~<>Ì<¢áft»ô ¾_±Ú:uZ¶Ë’ì¹àäŽÌž¥Å’VõÆp—&ð”«¬¢(þ•:_5,¶Ž¢ps tyÔÙÏNô¢d¢¹€p>¬Ò\ÄC§Ðø`UýÅ4(k¼—xœµYßoä&~Îþèòrµ²ÙKîzŠ®O•îÔVºVÑUjû†`/ð¦½¿¾¶×?ÁÞ\)ãù¾fr8 ß?þµÿ,(W–ïa\9‘n> Ÿ?ïïoßìµÙKâ¸Ù²ÊÐGž%œÐÊ¢\äŽýöÇ¯èÓß•áÖ"¡@6'”@R<©SÉíß})ã' ò8Ï†T7ö‡ÝîZäŠñaÀú„ÿüòã#þywÍ<¿QEeÍ8zåQo¯v; E~€©X4“øçµu¦¦í@Œ2ø¸AÃ·(&¦°(óŸßý°Œ†©3rdD™ÿL‚a)¬‹ b\ß½GAJ°›ÝüÏê(óŸQe[sV¸ÞÞ#/Ú!ÿ³`@xÿ2+¶1O×",Sq‡(P–nG3û X<†W¤(‘RSØló\®&\ëÓ!Ô‰S0êR_Mæ´Á#Ãù\Bwu9UeDILrû¬,ÝSRÁÖ"U”Ïrª;Ë_2¹Å¨¿³ 2KñÒÀ•Eé€RrÇW­ˆ©SÃIT}1Æ‚åpæ×²8Qr]»0|@Ô
 œqç=n ;ËŽ³g0¬×%{5’iüãòZ3þÿðŒ‰ æ•ÄaoX¢^8Qa,ñõô+cîæa8ÐI-ÁÎ!|j¨Í[±‡:ì9¸ÔÅ†uh%×,å*Žø¤µD†ðÖf®ê²Õ/Ù™B
GçßÃÛgÉÕ:iÊ@|ê‹ÅŠ²’‘=×EÎ~tk]UÚø´ìG)bN/Å¤r. $Y¹1ÚDxjXºBq†‚¦Ádà¶›ÝÙŒ‘ðLŽ2ãÔ¬!»oÈÑS÷çì1<$ãî1Æ—?c+uŒqÊ2æÉ…)Ÿ‰áe • ¢G¢ŠÕ;ve¼ û‡„ ÏsN],dáj…Oþ-á(ÿõ(Íb1æ¦¥‡Â(sìxlšýä&å´ÕjèRUd%/¹ƒú{ÔI®i„ôŠkL[(|`¾‡tž[îúÉ]²Ù{šDk4ŽñE„\±Ú¾*Œ®«äÉd‹h9Z]P82Ay’Ë¦‚ñ+¾kidÍØdw„¯g—ZÄOØ6¦ÚÎË/qQ$QSúÚÊbi+¿Ó¬ôòð Ái«…e ;;~žQÚÃS‚P>l4Û*ÙÝ8ô‚tû-Í¡cén:Ï#i\ZV#¹!i¿Ü„‰1¼UC ö!”Þp7´%ºBh/äÎÝÒNã£Ì?FK’°TŸ¸‰]Íkü·„@	¹„àòéÉ¼ÊtM«œfÅËzv^˜t‹þHŒáPš‹"Ñfü=³dnJïþ	xcÔÂù»3
ÎÜœÈ–˜· |ÂJûH V£®;mwôâ)ªïU\_¡ëZº¯ZE{óÅ;´œx†Süõ*ÆŸ@éJ°]_`ª Ð”6Tóg(ÝÌÃÂút› ×š‹Ÿ1ÓÏJjÂn”ïzÔ¹Ä¨.K‘˜Ý¶‘OV
·ÖM÷ãÒÕ¬ËW¹$ÅùìÓî#cOìfáœIÙóýàùíä@¯îÞ¾¿»†šwKªï†ßwFômõ
ÛüëN:Nrk¿ïÞMxÚÛ"\ÚN9ƒZËùÈàÆÀãîxÿÚä£åðSì#0árƒ˜0çÚï9 `F`9­pþvO¥âkvW×k…pÈÐb8œ§\œVÎý’VwÂsÔ"G‡lôOÿ/5¿"¼
xœMŒQ
ƒ0Dÿs
/ ±1iTèIDJt×º`4Ä˜öøM‹…~Íc3ÝÓ—?(ôìðKvËæÜÞržªùŠq³|¡õxåk´˜pød‘,ói§mM£F\¡e-´l 6ÍEƒj%pÒ•¨ÆRIÆ:ç·H€=;¯Òú¤; ûµ¹¥?aéëÞ¸­:±>xœÍ’KkÃ0„ïþ=(†Èis*Þ
!C —B(Â–×° *F’üûn­¤Ø¢¯S[gfÑ|Ò^ÁÃîþQnI£õ(7-Ú@¡[Áz·•ËêZœ4u@W}P‘l¸YÞÂàuucpV ñæË³/æƒ¶Ÿˆ•sUµˆÌ"œzôSÉÇ®£#kOiœ¬6±EÕ’CŽÐ¯`Ï*ÃØ%Øb–Ëë”0ÔØ—gžÃžeª>ïÝ`Œr¶Uº\yR}í<~J˜rÒ“rSÒÌüU¼à‚™ÉnC¶v§Ÿ!§ìØãÀ_ a2ü±UNw™Ÿæ»uæýp£Yÿ'K=4„«,^¥	C]ìú˜ØxœµWMoÇI;ñ¶„@QdÉ€¢ B%YRÞi)B°R1MÊ6a‘¢EçÃH¥w¦w·­™éQwW˜C.90æ’[€Üs0„òò|É%€aÀ‡\|uU÷Ì~P+À‡d/»ÓSÝUõúUÕÛÏoþçç³ÓT±4‘:z­»Îv>½ ·›àDd1¼',<P8æZ<-„±`ì×vcØûô¸óZ³í³?þ~©Ô|´³Ý—‰Èx*îµ þ †éÊïX«õ› ˆÅ©ŒÄÎ¶ÿ¾õchkÓ¨?hûÎ6þšX’éø¥Úð‰ùžÈSØTílÝó–O€ªk+W—ZÕÖÊêeXÛ×7ÃX?®þ¹²ºô¸ú|åZ5XþËN.´‘ÆŠÌÂì7æõ¦§…ó/‹“ê¿+¼Q_éHTÛ¯\-ª* 4¤J‹…‚˜ÃÑ/E@°ïòž–‘™ÂÎöTfµJ¡CÆú)È¹Fx-F YìPdÐ¦Û¼¥ÒmoÃH&	pkEšÓ}²¾Ä°8¼}òñÉÞÃ£w÷½}“öÜlnvF*ëÝW÷eŠ<OÆ¸1A@õÙ”‘JSžÅ.]d! EYªoçƒ‰gx¢qá7Gù o‹¿ìxBkE <D3=’Ft0“‹Höe4KÒ­Rƒª"‰¡'Cc:2/VóÌäJÛ¸‡8Öx*º—¿ˆ„1O¤¸èµ9dý„L»3Ô‹Ú]y,‰IˆmŸº_(eõÎîÞï=zø‹£}«ù°pë‹Ìh’æVªb*L^‰œn8+¹B3n	N:ÞWu„O?šáiúÎË„)ý„˜4
·Ç=3Æ2I¹³#^õq=Ö°ÑPFå¤?íMº @ëÓ‘)”â¢@™S[èlÆ )ãÉµ:•±pgN2bŽ2¦l¸!3¬ÉÔ£µfŠédš€îïÙÝz‘I‚M2„£ÖçÏvùÔ!)ndîm“dÃ`‹üoÖ¤5"éûJ7Vi_ÿFØ*ØŠ.«yœÌf FÂ)+¼5½ëqSLÉQžefkÎèÃû&Ñ‘aYÐ­'äÀî•+‰^óº3©ÂFëv¯K(·A])³1!(7K )€±c^¢E|¸ŽCvQ'³2*Ž•g«¯Î¥«@–ò1UBõëkÐ¾„*ä;òO˜BƒŸGŠ50ûFÉ1V„Ï¬sz±ˆÆ©Ò]b‡ ï.ö7DþHÛ6 F™CÕ£\_à‚’es%ÛÙÓ,Ü¸ÕÝn½*=©7>Ë‰ˆa9i‘7°<v±MãÀ÷LJã¢ ¬C,¨ú¿ô0>^$2§¢Dº|)Øvã¯í©»œÅÏÏ¿ú·åÖÄmõ÷ï~|qM<áàøts½)™ço¼öåòÒ°zåÜ_/°/¬ˆLh‡nõüÜÝêÚùQ9+¶¶°·Í+\j¹€‘ŒIÝõ-âïZ6/\3sq6sm6X$J‹Š-.Òœº«0t=™Që.ÉSïL!8{¹d-·Æ'Í;ã’`F£¸Îˆ™3)PôÈ5ðo? V#3<2„}·B×RÓ¤®:ÌbºÑa-1Ýï[÷ÕEçµêA/Õ¿—~ðü³óo,UÿúþÒÊT`|°†‡¡ØQ8~]é"p²(¬S¹k}\,)9ÈPŒÄLøV>K!ª,³–LóD¤8ÇjsÄP"‰ecª_ü‚$NM}çÒ=TS÷/mTÝûÿsÌûó…­¥²nWÔ{fA²ÆB¬1um¼ÜbeßôÍ„Ãÿ) åaWr‡ÇTJ;Ž§Â2žÑL3}&8qÛœ¾¤'¨µüTJ´àñÄƒt2ˆ\U§—Fß›¢ÕW—~²Úö'FeíÊN6ÿ¾í«¢ºúúµrÒ\I ±‰âðê•BÀêç½Äb¯‰hù‹™Ì$‚Ú/ZkO¥=×Ý ž…Ã©'„5)G|Œ³³¤F¬µàì3(Ýÿõîáñƒû'…Änà$µBkÚÕl£vþŽ7'S¾{w#ìÞy+ìþ*¼í;>VÿÌˆ˜Œz7nŠ—ºVƒBØ¿›±ühÿpw¢gXuxysò©úÓå7KÚ†æ;g¶ÏÈ<LäMLåÀË‰—5ºZ¸~Ká¾…Gº£ËÚÃu8äÑoå¥°Qñ8u&¨â¶EGæ¤œJ*•Nå&>öÕr8Vòˆt´$.9}IYàoÚ»Ž®œŽÁV}’'¸‹À]#Ü×=ð¦ëŒõÙ„1Op–¸(žñuªÏtœrø„wî†·oC``ssãO«¯_¿s}]7ÜÄÚ™·û)ÛõÂ¨û[5Î¬ÎºŠdøòòÏ~TS˜þvûÙëŸñŸk‚kU÷ÊÕêá•êWÚß u‡I˜àK_xœ…TÏkA&éÜ)•þ ‰µ)}µH“Ø]H-ÕÖ&¶ÚŠ¢•ÒV)þ8ÌîNÒ%»;qf75 ø7”AÁ‹GÏJî¢O"xò*¤ z(Þ¼8»MÒHÃ.oæí÷¾÷½oöûåW³)·æÕ ®KOÅ¶ÉgQ¡PØœ˜ì‚
+7h0À®	WÀ£pëÌ28ÈlQÛ&Œï¹“}‘ß¼pcIh­' 2X,Y6q±#®ÄsÂ‰§ÎM[‡Xœ,>DŠr_UiÁ˜ÄÆõÂb&^Ç/ÄT±?S}]É˜¸ÓË¶èÕ‘G>áÈa¸}w@È»IT|F‰KÓa#Ø#QæP¢¼"A<Ÿ¹Ä3‚kPfrñ®;íNtßKG¥2¨ãHô°>ó]M”{Lñ±gKLôB:(‹ÛZÖQ“,ìZ‰ôæon0©á;Äõ°gQ·M+œV‹’U«X˜Pò™ÌaHÇF¥Ì¨ßXêëíÂ¦Éç!5¸±^›Í6¶OþˆÇ®‹•Áý¸²%ž+3	ppt>—-ëõ RÄ×þSâ·’­sê3ƒpÀ,8GšP‡>tÈðg¨Ø/Ÿm|®Ä¦*„TÛVM6f9„úd,x0[“g5ØÚ±¸Å#£Kmµ§A÷U	hU1ˆI!<Š”@îë<Îõ YŒ ê§ÄôÆûd1|Ž‰±Ô³ÿ‚JD
Ç€6~¦bqÄƒxúo0¤D)¦!¤VªV¥ß,îÉ*+Ôò¤Ð­5Ð6Þ‘?O•<ù’îd©Yn¹3)6-ËÆÊDüI÷Æ¤-9ý`gâôÆZÝ^^[¿µº)ë.”‹^æÀ¿MŸ]]|Í%P~~FËÏ]ÔòÚùÐnA®H¦ç‡QÀacem\âíRV‘RééÙ7¼LëÑ¸qbl Þ‘ ãÙÑˆ±Qô¿$cñv<óf˜a¸²xœí=ksÛÆµŸ©_±aÇi“²œ¦™{­(E¢µ2¥Šr\ßÄÃ PDM4 ZVkÝß~ÏcŸx c·Io4cKÜÇÙ³»gÏ{—ŠÑÅñßúg‘ÆYØ?Â8&Q˜>Ï.Îú_îîõ“xv'>ÞzüpK<GÉâ.n¦¹èuÅ—{O¾§qÎ "]$©—GI¼+g3A­2‘†Y˜¾ƒÝBo_öþáÙèª'<ñ2Ìò0ÅqtåÂ›/¼ø®®ÛÈ›gËøFf¡Ÿ§Iù4Ûí‰³œ†ÂnWÓ(‹4¹I½¹€?'iŠ,™ä·^î‹»d)|/ƒ(ËÓèz™‡"Ê…“Ì“ šÜaÙ2ÂTäÓP ’óL$úðløB<ã0„/–×³Èr)Å»0Í`-Ì—Â<°:›†¸¾£¾'ˆÍHb#N‚W¯{ƒd ¢˜@L“ 4õrDñ6‚E¿Å2'ËYA@cñòôê‡óWâpøJ¼<¼¼<^½Ú‡Æù4Úð]È ¢ùbd@&õâüfˆž.~€.‡ßŸž^½I*NN¯†ƒÑHœœ_ŠCqqxyuzôâìðR\¼¸¼8v……ˆVˆ V¬Ð€Í˜{æ^4ËÔÄÿ÷“ýØ+9‰f<Ëp4žÑ¤aIý6êNøIT4›Á&OB/_V°ÅÃŸÃoh€PN¼ë©,[„>Ÿ6Kd9‹—Í=ÞÚúCû³eŠoÂ4“Ýé·VÑM˜'‹Ü-›øq>s‹²<˜E×¥²()]'I¹o†XÆ@9[DiXló»E˜¹¥€ÊMF¹ËÃÄóÒØA8)µœ%7nYÍC,) ¬;^¾7¦¦í'ó9•iÛ*‹ß!\»p/bI‘Ò2µ&àÅ!òÕcØð“ññéè¨Õ½OŽO/Eû1öy¬©e¨eÒ®è‰NŸUtÅÑÍîß³$6ýžþÆ^>µZü²\s9¸º<ŒZOö¢Œã€ñ_=?oýj?CoNTK”ž'Î÷Ž8¬¿Xx7a&¹F”ŠÔ»ÅÓ7ÆD‹;	ÇÒŸz©xUûªÉK,kŽs·üí2
EÁr¾óT÷·4Ø$Îr	Öb2ÎALä­ÖhçÀi2ü$p‹Ûûõ]R/ÒB,
³lE·ømL}²å5XÎ”¬&{çGAa_À±DˆN¸{³+N/VtW@šZO¨ãÏÀÉ‘xùr¸“­„M<?4 €\Ã‹Dùfî/„Fq%è¬Ö$CÚg*
„¬XÓU®F©'.F4Î=ñ–³\ÄIŽr'X‡É›ð®/˜B«…€ºa‚èŸ­‚i±uKwõ‘ûùÈ¾A(yK8 ô0?_5XœŽ£düv.ÃŒ—ók '.Jã±<DGM"Îñ¾rŸ ømåa%|ª©boØÌ¿*V|Pê3Î¢„ÕË B-d`Ÿ|ù_« ¿	ÃÅØ›EïÂq>O8–*(6Pe†%¤e!@Vq€[Ä°×ã œywQ}@$¸ñ,É2… EaXüQ@ó$cž\×Qrœ=‚%1Zœvôf³äØ/¨p@ÆHmTôœF˜ß† äe(W#¦ª‹0ÌËWeÞõöýíFÃae‰}Ê²·kU‘Ùù‰7ËÂ•ì!HaS4£0&È_P„óÄˆÓÐCUœ›ŠÎÕÑE3FÊµ×h l¸9x{c”½þP½Týyt>ÜbÉ&iàF;q‡;xPäjÂ®¨?¿¸ÙÓR??oµ h<Í`ø¬cU»'øg'ßé‰6ÔCÉ¶®îµŒôíöD
È'¡x.¨V èCŸÌAÕ}*CAÂì;èìÜZPü]l0všÖaD°H*¤v&eXÔ@¢ÕPZZs{kA’Õ
ª†â,Ø9-@ÑÄÊ0\,FlÁàãlp©Äƒ¥c8S2ÝìŒ
x€¸äQlÙm ¯ •´%}– †ú¢ZZ[Zªº’íöZ€$ê˜;/5@[Böl€vE·W ‰rÎÅrçBƒ´¤cÏÁÑª(`I…}69ü•AÙhê
B³ E\ŸD\dŠÂðƒs%¢…¡[Q ©e\ŸÄž\GŸAd¢YÇB…»Ž(øú(á,$ÅÎŒA:R±gMÚ©( 	R¯@ÈñŠ!Be©NÉJ€£ œ"9+Á×— ¸;ÇH×)yÙ“€,j“ð˜÷YÒÉÕ$<G
ZâVA‚të³L1sÞ¹aFòHÆT”0U„·óLbh]ÏgUtˆ²t‰jP*…—øçVË–kš•ì»åZ¤”Ë
-n]UCì¶‡DÃþÖ½±"ß%`qdh<F/Øb<ãØDbî½ï)|ó´»sÀâº¶PÛïDâ ‰¾x²/"ñíØƒßý~§Û{£ý~Š^‹/ÄÎÏ{;b{[X%b§ÍZÀ'—).D+=Kdî÷[÷[ÚG:_ O/¿MÄ‹â›Œ”­)ürøâìÔ-²é2q“Â´&ËÙŒ§F`“¤ÊÉˆ`°'°sO0Bb{€ò0aõ<RÁ¢›-ìé3"ì›’+Å3T-p‘ ¨?_ìuœMÒs”›ìK^SX§/²'âÃñ©ÅÜR2¸B€&û¿Íõð@(~â5aÎºØ^“(ËX;™ˆwvÐ{4æ3$¦=A‰©.	Óaþ˜•Û =Ž'‡/Î®ÆÇGãÁððû³Áq×BÕ „®Ë8)UDÁïâY’íI/M{0©Ï½ÜŸvl{¢Äoà¤û“w
—p.·ZÈË¾PdkÚß„Äc˜+AÛž ÈýoêîvW»\lªÐËõcÇr{²~»®«ÅíîVq3ÄHKX›µö¶ \»¿x'kÕÅÆSþ¾Ãÿ’¶·rºYò!ÍkÒ$A^“Önr…)D+‡`ÉÛîÚ4RÕ¹KÔáð³}ùY»  0S…ŠÚp.T Ò|zþ”ºw Á)‹p·RÃBæ—q‹â(º1MM_¶câíðŒ:¾\é.-/ü S#Šqy[Z%@áÃýý»7b©nÝåªWñúµëOË(Çp÷/•øöjøqw:Ÿ‰Õã“¼my÷ÆË“Ž÷”nzdÍa +˜ zÑ1p-!$—ÇÅä?D] 0¡È£‘¹–ÿ*CÅ€¨Àª…ð‹Š‘(*Š­Ò€û%œþ¦	¡'q*¨m
¢J¡NÕÈßŠ½n=V{W …ªã	~¢½¤v¦’.\½„‡kv¯Ø®’ª
‡_í6ix8¦ÂmM‡ê,qR–†s9¼¿Š#—šZŽ¢"ÿß—2Ï·˜0~{2.­³NÓ#fÝÝ/¶«ÑÃ)ÂI*Úåá˜èF/¾½‡‡Ï]€I âÀá²#¦®f*ÁIð"OÆ°<:pSÀWµ®¦0¢*Z€`3ç4.YX$›gúuDù±$ÙŒ 7 G¦¿š3‚2‰ÖH	ŽU¤QÒxë´o«¯/¹ÛI¶FÐ¨‰eØ·2™yˆ½o'3Ä?Åž¸ß/¡Â9@wHŸÛ@ß¼‘Š˜O€A@*½V{âE`b /S¬q{w{ý·{Fç)•wˆÚˆ0¹‚pgß“E'‰ÇÒ8;Q°çaÕa(­&h^˜"
}ÐªÄè#®îm8›õßÄÉmL½+.Òp"SxÇ¨¿é‹[Pì™Ä`s¶h3ê§[1[8·…3»¦§¸o‰à¦ôxïzThS-’›%7–ž¸5â!ü×#É/çiè»ÞI íŸãcM‰gÐk¨ãƒ—¡Ÿ¤A&=Ñf…~ÚœDQ
“Bãí‹ËÓå×_µ%ùðx=0ë¿þjœ'c±ì 2ýooÂ¦Úí:îtðˆo$’ð÷£GLÃÅ™á¤ÀVÎÑ‡!ôÛ&X…ÙOÑkÚ*:H¸_]Ž~<:=Nÿg ´îƒº‡ÇÇ—vÒüiµrøã.Þ€°{PÕ®†ˆhÕ'O1jøTÈ£&¤Tˆ(th(üÔuºyA:ñæº›th!¶7ñ<¸(°¹ÈŸºOE»í ²ddl\d¡ê+?v“ß>EZp'¾5Sßº]P GN  .³ðÉ×Š2 WG¡=Òè¶Íš.³¢Œ4¨.0\#§•ÞRÓ*œÌ¼›Ì^fÛ!Ëµ4Çú\Óeºne·¨ÏÂÚK"g´q…$®«WƒñåñóÃ§¸gjø4˜{ãEjo
I<}áIæe»Ø~wa‘‹éí¢——!qy$žYûm AyVÁX¼	ïžŠ½÷ö¾z¯¡ÖÑš†¯Ê5ðÊ7ûUxutá¬_ºrÆ²ÂÁ5÷»²¼8Ð½tÛ¬sÁ~ç•Í	PrýwLixˆêÐ~u•äkûËÆÖÀ÷¨™” Üºƒ
0?ôŽê-è¤'¾óf ¿,ú×_u4pyæÏí•œ»$á¤,:ð 1VŸ‹ã·j×î®v¥>”þuhZ[\gc‘R½¤ì5ïÐlzBÊŽ¶6ËtŒ­V|4Ëâ¡¶Rˆ4+%Gî*	Ó 2IŸªE¨?õ4¯ñdÑc\!šn“Ê«(PÓeã”—¢Ž,Ó0\éÖ¨/‹°òº~6¡×+K"n,›À‚ocÙ| ‰ˆÍD«%ê'•£Í”eæ/¯<‰k$É¢%gÙq×%³‘;°ý#›±¨AÃ›s¦­eYgVë²A•yïÂ‚T×yÕ=±ZÀ“Pgñ9V‚dNIrJ@
òI€Â5Öþ±	ZöÉ„y>>º^}8‡ƒòò~]]¾õÄh|zùbtù~¿„ßÊU½¿{•&¿°L~„J‘­©	–|:G[0E?Tô0™Ôë;]ñH}h\W77Â¼«V”Ô¡5A	†S3ÃzœÚê‰q¦-üÑlr2@ÑŠ±ÝpO£ŒÈ!`pd% öŸÍ’Ñ¬³È•w`žÝ¸±7¢5\bš¨mnY1#ôV ÷¨4ë0+¨×,×éŒ+O¼Ôåí†Ã‰'e¬‰¬&žYé&Â‰ô²åfg–ª´¢Âm	Ó#BfØ<#s‚…µÚ5\ã	ìë*ÇÊ´+Ü°bôË¸””KT56Th±“éÆÊªSgl‡á9n—½~7ŽÙK1Óÿ; ž²‹<Ù»XJùp†!`Q—*çÞû1œXiïÃP“4Ì0±”ú¨¯¤ãOæ=œž]¯NŸÎ_\QÃY¶0¿¨ÅKL‹ï¢~‹Øt¶	'åÈ%Þ´†7Ë=ž6qƒJO•H^ÙH g¦‚
SYô•"Îûv$Ie½±…$Õ,&GKÅ:¿|~xf¬ádâ®¢2€	ÏFØ¨ë÷§ÃÃËWÔ9Ã:eœE7x©ƒ^èøLCY"o R
¸É<ö§%»^è…uÖUÛØëÔ²RÝÀÄŒ‘U¹8äƒ>P±§†P,˜F³€JMp•_U|µ"bBþeyÆáŒiuëÀØ¬àíêx\ë`…¹iË{TÚ‘5V´®e-ÆðZVŠw±‡óÔ8|õëÀ²±¨êž'üø¡8œÁ¶wŠá=~G} ÛR7¾­#@œU m¶·+%ÞL¦˜ì9àèM´P£!Qî›se.Aï`$žaFFf4b0dEúÌ–4ÊVØûUX!pcb‹ÉlÑmüY|ø ÎZM«£——*Ùb<^>ùZ°ÕG\®Êä\ŒÒ à‡â8ÁÛJS¾]Žw©øö4TèÞKóuÇ(‰¿“´X<!Æ`[èÛŸã¦ÙŽÆÇ/.@âœOÎK -q˜b¤GdËÅT: tgÉ¹^¬p±õR¼ð­(¨eÎ&¬ÄöK¦ÜTsœê"\ryÕ¢5Xµ ªŽtsšÐXø“§£¼,!ï}§ÚódòLýj.ŽFÇ*—Æ1'-Q¹Ê¯-61ÌŒ„#2¡r4›Ï7äÌÿT;¥iÿ¨\w3`ÇÄaï‘G*UAgÊ#»&Vò°'ŒºH?Û
Avj´ª™ªŠkfCÙ9I
Ãµ4Yjª‡ECMÉK@ÉÒI…:T.dKnµê"²„Ò¾ÕÂ
UZu÷ÖÒÓáâ5<Zÿ£óáppt5><«ôøåÖÐMb5ºJN\Õ‘|»*“œ	`­WÔrZ•t6žŠôq< \b¯ÈãµÛ¿eƒ²²½p:RÅ2é¿ÆðàùfÉ„I%¬J©·•aç&˜K“ù¸UŒŠÛqZ´sÑîšÄ÷dÞ8)ÇòÎñ T_ð„Çx®Š{dò,™Œg°õ0À°§Ó‹ñÅùå-ž},WŽ%A ;ˆ£˜U-:³ÔZÔ¢pËH4ÃaE* êX:R?I“9iQtw°ARÚ éaæLQ·Ùzã–hª@ˆÒììYgQ&ú5v©¹ÎÁ	
²¼&î|ÆKØ…~vjƒS±Èaþ‚ýõ~/À‰âð§¯öþûë×ÒõU>ù½$Ö†VÂÚ^ƒD–U'§gÀó'ÕªµÆõÐòm¼ÜŒÍÚû[«R‰`	¡môôC#JøÎ¾ïÐI9ØW¬![÷:aõq¿èjÏó«N›mè3x)Á[=üQ_çáFc.5ýaŽ6H ç‚aŠýÉ4?m´éùFh-H}m‹®ÉÁ—Ë'ËÒö µ„"LâöÖ%(¼x¸M…=?P@ðq‡2CæÄ¢Ì@=]vÚr·õÅ´wU*¸íÓV@À¯oàìJ‰ò»"’´ö2îñ&øÖ­¾ö	íuÝô•nE>2gÃãNWzØæ“’É©³­²ì˜²•~üÔ…€Ümöîw$”½œ’ù(·0B"·°ûÐ	²Â¶öþ’®Ž>¶j'Ç0/õæ™¸‰ðá ¼Âkç¦˜ø°Ò ÃóÁðÊòsôŸH‰Ç]Bx…Ýï8O¢ô”•.í~í…Á>Œ!¯kÝ$üæ‰ø§=¼ ÕVû‚ÇxÎAoì /éá®Ê!ð3p;Å‹Ù	HìL¶²›€ÕÅ{af‘J	‚„#ñ*ý@ìüa¯Ù%?Ç|«Ì1'›¶4ôPaü[bÔ~ˆž2`¿á¢³ü°-0!¨kðA4mõèÎ:íoY¥¯5—…RXqGôf4Hµæ˜÷N¡g›?Wûzp Î÷*ÉÂógfà,¦ˆ	îË5Â$QD™6.ßçªÂ¨6¤JÍ«ÐÔ´å€èéhJ4U)\–ø—y·[ë<Ž#Ã$ÚR•íÇpõ7Ëka¹"
e·è­pº…qTX~
ËIqoVƒx”Ôä|ã•($•Vù'ŒUnl¼Oª¬
W»0Ö…m¦;;)µä-FdE‚"a!drf¾·J[GY¦§†ó¸òÚ¦MJˆN†Þ Ku1~Ê'¹cºW:\÷Ò~ †¶¿Ì:MdpÈ²(ˆ‡¯ÒULG=AÑ,]¿‰Ùj®Fê+T,ÝÆhK¬}VCJù4ZgÏ½–¼þúldÜD{Ã5ÕšdñÆQÕ¥¢¦wŠlºÞ!·¿¥MÌªv|wÌ8ê9dÙ(ï¿â;#‚§nØUVv–ìEºœÆFi­µºÍÄoWz»®»l·oM˜ÛÒe[5„$‰¶ÿüŸõ¦Cò)Xâ®þö"á¥=UD¤ÉÉø7üG¦ùƒà7<JyÅ°¼¤Æf›¸å]i¶JœÕÈ³&m½D«iÊï^j-?n*ÖX®ÅÚ¯eKx…h«–m…Û÷ÆMHm"ß¤€‹«ÎÄz$kdÜÇ	¹XùùW‰9Î+	ºX»Z¶J’ŠRUíX\§,lŒ	Ï¥ÒÔ·eå™h¢‡þ2OÄÇû>,ÉUÅ÷ b.V6œÕ^	GšãúE‰g€®ð‡Hq÷Ë<j3éyD=j•„--e­‹Äy®H%ŒÈgXÚÇƒñ".ïÑÓ"|TŽF}u„ƒAþ»÷åÓy_Ôñ®ªÇ‹þŒ›„B¯l™ÃÑÓÁUòyÝ8ø iß ¶sŽà¬WJdû>W=Î–ã+#lÑ¯Ù9ÔÜä¶,n×3ô)½L¶·ÝÙ÷6ªŸ¬¦¹ÌR9#ŒÚË‚”ò”ãiî-('b¾gM8Òn¡´Æku¢Ss6üµH ÜÀA6ÉÎé›ô[`f¾PúÌáU²š½bë0DP?5±ú%‰åmÉÔF˜Yü½\ #p¢1¥=aŸEÜ—G+”º«gí •±S­*ëwïØ$%3TïMã¾7|°Ð•ý;ZŽO£Àî…!u®›Ôõ‹ò™>ù„­Âö&†çÏÏm"­®YG–%&Œ¦^‹#Cë­¢pl9A©Øéöþz|åON×GâOflõŸÚwR(NOú¡õ:ÕLï&Å²é¨'cí¿åþXãm`=—øT¡9†©UÖm;&NUì Ë#ˆZ«çû }JŽjÚé¯Ù˜­j4MPÍÂÏÅ©[½Í[%×âæ–åJ[¬Þ«·Ã*­°õ6Ø:¬ÒþºW„cÑe…ùçS¦Ž<j3}P>š†þAo;8ÊW
ñiäùÜ‹ƒ>½À‚Š¬5‰/ÊùÚRf]uTŸ.¹ËÑ€"É6=v… ÆÐ–Íà¤22XX…‰ÿ[³“vŸá©µV}2$«´‡
ÜècåµyÞ4Å…
Ž+ñÅMš¡_ü¿ŸVP¨é[5müŠù2ËU‡ëÐ1Sé¡ái²œ˜®vZ¹ˆa úÀ4A‰ÏwåçÇui}»‰[ch'¨…éÍÄµ$ht ¾’O}¾§‡¼ÜQÌ¼_ p¦!Û^UZÜO@Èø˜dôÅi}'ÚÖ¦÷­×`ÚB_±®Ù¯{#ÜýªCÚÄOÂgµ4†\k^§JÀË9ÊçkôR’L.±'âðÖ^TZºƒJ¡¶‘¨^}“¬oå[õzž”#JÍ+ËËÝ!ÄGÆ#~A8b³ç#âOeœa*oÿñ£ Y&‘Ä”±NY¡gÖ»}$~M½>u~žMÜ3VCÛIÓ[çrüFÆ-Íä·”ÚÕ»qºƒV8f6rõ8Žœµîš>&D/:ƒÚ¦°˜¦Gƒõ+Ó;GöÛÛ¼¶=ë¡`z`ºÎ¯ð)|
wÂG;*üìE¨xç½Ê‹°ÞÓÔ>gÏ~*Ø)÷¾?æßè*°­*[:•2ïtcé]tºðU“•Ýxâv'\ê}}O¢98þxxf05OKV˜ÝÈÞÛiøv¥pa–øâ§~Ï÷Ñ_“×ÏøËËfÅÁl{A¿E¹Ñx†³Á¨ù†£VÄÛ@ê;yžŽ‘W-<ëðBö
Hy¤(EÒ m‰V³Jž:X+ùù»£èWê(Zç#úÿã²r×Vûƒ6öÉ|¼w¿Eå?Ã½`Ù'e«„Œ’ºSÕOÒá×à”³÷Ý4Dyí ÎëS÷¶¤ó¨¤åêqŸŠ,®Nq5„õv‡mÎ4&4¥$mÙY‡BóùáUåükö¬ã¶µêRð—×Gë¤ šW®e×„5jcÝ¹UCÙ,Ò•"À¦hé<»1´Š ;¡"@]J÷Ú}™†ÿ¹­ ÂÝÝ•oìê¢b†–m(!•ÿf^K®¼k(ÏiÞLTW¾ªL.]’pS>ÂŒtÚJ÷;}ë£ò[ð·´›Z[k\]W°1ÍŸ}ýÍ²ç­9¡sü\eîKFé‚’\žŸîl<×ßÄ_„™m>ñ»ÄÐ„úÊü¢ ¢§ïvØû*_t=Ö†qÙæÂ›Ù]¶qóií9sõ¬ó®Î©RÙ‡òÛ'$ñÐs« Ë ¨§bø×¡k<,Òä]¬Öà7Ðf5dEàwv½F+E'oºu7_I y,+/t<·¬¤{+åK»gçÛ3T\o .JyŽ­"Ë-ðãF¹|«Û}Ä“3à¶}»ÖMVkÎÒí¨FÙÍ¨ ·¢G$dÊƒSÙpüO=ÎâéƒÌqõ‹¶gp&Ç¸æEQ·°eöÙ”,“¶'ÛehÕ†«7Œ¢¯‹ràµµPAWÇ‰nDwŠ+½¯Aù«£<Ç«M|´YGhâJ5—Þ‘Ë¼6!Ý¹\Qƒ”9vÖh÷Í#X‡^ýÑ»7ÖbOx¯Nš½Ùl#‰Þ\*Ey•£´^6Û_lõ%²ý” &}¢êžIKËÎˆ­ïmüMˆÙß…ÚçjÿR%ß!H™ëo'û»ËÌƒõÊšëÕß¨RòÿÖÐ©Úí…©d›"<p_+É*™£Jt¸£áŒ-3ót™cÙlÀ¥‰ù›
—­ƒ5§}ÊpÙá0JIæ£»£¢êÀ ’ šÜò”{b¹ä·H6I_þÿÃUD —@/)ÎÙŸ¿LSŒ(à“
É‰æ†E ¼îæ9‚q¶@=§Ïu_¥\°û‘:‚Å;Ð^ 4‡ Þú¼±o¸î?<ÈBö‘"<;›³‰@/Kôé+ÒJª|G¨Û2£AüÅ9–Ô·Ôäj=¹æÂz1XºA˜Ð
—†a •·Q>ý>£¨¼z×ìX ¼9Ý,FéÆN P…’Ú(žeG¥Ð¥4µ4
OmŸrT«ˆ”AQO±ó ÛqèT®'Xë1Rh
q®¦®VV˜›£‹ò)4„§'˜5ž †Wž¥´i>O¿€¯R‡«Ã>Íâ>¦¥¾±êpžº´¶ŠéV‡\V0žâüˆ	Ö±â?Å(SÃ0“vÙ8€uÅ.Õ,¬I¼EÞ‰'òãXi1j£œÚÙ$JC"Ñ|œ,ä×ŸV‰SèÄ 6êeþ¹!¡c6êÝ/»’?@§7?½–
âO2±ýùøêp4¾<;]._‘à·]Ü`"`JÛë¶<˜¶ø´Ih·Å/órÎ¥JŒH-‘ûÇË?~)øé\ú~) ÒÁ}+j†¡×„:ü÷º‹éªÐ=Lß…æ§êš}žú2SÌN!f¾ìm›ÇV»§ºÈ;t£óèh0ñ‘P®Ä™ Ì0©V&iÃÁ§Küð5¬=€'J4¯~IÐßTC.µòtšvÅˆà<å/š}[Aáq{ry5ŸÁø’¥|öZÕ÷†•ºÜKZ8‰G¯	Z¼Ô^Áq7ßÈ.­<-t«ÂhÆGW?“¦,Tëºû±³öîXqø0z¸g@ôøegÇG»LLm%ÌRs·<J¾3šãp ÿ¢ð¦Cˆxÿ¤ÎçÃC^¯xVëWåaüõò4F°Àõ(\ÁÆÖŠ¿YaÅ[xÏ QÂ=C<Knñ®<òf<‰N¸{³KR£M‰yF~è¯³ÅH}²Ž%\„Â—Æ£z *åR‘³j`¶üYÎH•5Lð4¦{¨‚WJÃ ny~w<ÿ¢©ÍÎßã¬nœÕÕ8•z¤"‚qÕ5qÑBD´fm?QHÔPë'ˆ6=n/]µÐ÷v0e…£þÿ \/îÉ·Fxœ•“ÁnÔ0†ï<ÅHÙ Ž½R© m¥Uá€„8LìÉÆ’ãYÇAy{l7TeÙö'“oþÏvâ×ðåpû­Ý;C!RûÙRP78’¸;ìÛ»÷-KëQI^ñI‡7ÍLóM«xlÞ.'‚h¢Š¥`)q•-uÎ¸8K #ÁÑ)¬í°6¼}ÊM–fIž¢uò¯à}ªïú®À]¥wö\šÈ(Ë*ƒË×Ó
š¤Ï¶>âë°3†í®ééˆKTšìsä+ºŽ×¬+}&uò×l×²?}½ßƒe“¦ü»`aÎVdÔÿWÑ¥(]ïB·Åÿ’žPGP†'rÊ²‘…y¢V)jÜØzfO6º}¤?ò3öÔVÀ#ºó'"ô0¢ØŸ(´ýKØlóO=çg3r>71—¾7ÕkuË8Õ	4è}óãleÅ–ß\ÜÃ"lûä¼}á²*Wú.FŸ¬i)`ïéwö¢#i.˜¼Â¡œãüa‚Â­‹¦œó>rPaïó;èiÄÙ±dù/Rä„,´Ðxœ½]Û6ìùò+„ö%gäÚ­+ŠbWìiÃV +Šmöf(–ì¨³%C’sM‡ý÷Q¢dË¹ÖwÁh¢PIQüîóŒüþáÇ¿nÞ‰‚KÃoÞ2.­(×ß“Ÿ?¼»yñì›¥ojj¹&ÙóÍSQJÆKòþÏ_Ê?üööýù/›§ ’€*‹ºcœ<‘Ç†?;< o„´öÔróìðC‚ø¦(¨|^cý‡ßthŽ¡±º+,q¤r^–¼°&¯U•KÿÙ\qÙ5¸[Aàßíæ*=S4,=GÂzÀr‘šû¸Ýü»Ì+··›ÍQ	FØ¶“FT’3R(hgß•;7#5—¸¸ÌpYiÕµ×·áh®éÝâñ4®#'/ˆ9¨»ÜXj;³uq)(õž´\ÈRmó¼ûîÑÜtµckO+ŽÜl%¢HÚðî‚åBf›ê5ÀHæ>çôa»°ºžq0’¹ÏäÊîV¨x·¹òT¶Ù‘K¦´§tí.òšdG³‹¶ðÑ(™«ýGx’i¥ìõ"9X‚¸ÒL8Ãšç«Ð)S€ÁÚ‘½R5)h›+YŸvd°·Vf^Ö´2ÄÎ¥pÆg¸õ¤Z¸øXll¤N™S”ó¢®à­Òv¤G{!~£ÁîO–›pmÎÌZ~NsšÊŠ¸õÐÜù5Éê½¶ÈNjÜX eºÖ‰Í™sÂ¹ÑNÞR8—@ œš4ãGgÕ+Žkö7eÛC=K’Áo÷/§7aoªíüÖ
wuËeëx<w*éŒw€‘,,vd‰Ï½¶þ+>ƒ„7½2¯Ë,oáÚé\=þÜlºÇ¨ç-K¸NåÝLšRèæŽj@¨„Äx€6FÌp7M9Þ¦·iŠ:pÊÀq„	Žs.äœ7¹ ’ûcSù(ØqÉ:ðà‚ÏÝ¥ßñIŸo„Žöí+Ì’÷.ñh†Ja¥Í)ÙAÑD«9…¥ûX@á$‹SÞr$IÈGàôê¨­[iFú	Ø—QÐ’œüè­*¯µ±¨ Õ¼Ä™´þÈËé í«—Äé7º$ù’G®Ì/ Pöë¤E™¼Äˆ _¡8¯	-¬PòB‚øÚcjØRÞ‚CŒUxŸËýü/þ„I¥:<Þ ñ»„_úRG*hof!aØuf‚èÀaUøxLæxÓ}{_ÊHu½.WAÕJ 4“L’Kj§´-ÊÜÖ¥RB#°òý‚4c´©@a÷b2ñÓ¼ƒpïÍl.Ì|dèV×¿Ãm\Ï r—¢º§~M‘D,q ˆ×†¿uý4V`Ó•ÚD{£:”ó%ÝkQ˜µùTÈªv˜
b¯=ù&T•%ä#(@áÇ«—PÓ¹]¬K]Cê;ßÓäŒ›"ÊÅ¨¥I	ëË×u’1cÖlÄÎë¥¡»V²òmúÚåÞFXÞ˜-Æç×–ØµªìöæoÓx‚SRþbî_Ÿø¿U,œž±Þ˜6¿XB`ñ‡?Rí÷ÆÚ|¬ô"'4=0Ü0OH™OQ¼?èê,ÒZ`5F—5…_ôÁµP\ûrh¾$Ê®¦ZØ¾à\‚eD’UA„µ\»Îæ³¼úm’õË©v6­IØ/òjµ1ÕP!ñ
á“-’áïµ²ÏzŒ6K8¾î©tûp…MÆK}_kiZÕ*ú§ñÅ‡ˆdþYOÅÍSþ†˜MÂ÷x WrŒº¯xÍÌv v¨”.&8LL€ý st&4¤qqD&8¿scŸÐ°»4â—Ð×˜–±ÞÃŽ-ã@G¤¸ãg¬ë‚.¯AœINÇ¢SäÏÒ,Î.øÙùåÙ)¨‹½K“PÞ«µ«…1gõA>?;ît_3&¡áÐcæ¡A‹‘{¨g?›Œ:¸ÿšæñ{˜„)È–LùÄñÈg%9[Xi}5e¥úó±AP4P_âÄÞ“‚¤åkùhwþ4‚x·¹QZˆ*£64”ôR˜CÞcl±“EÜ‘¯¤¸Pëlc`ý-¸JÉbé:~ÎªYÄIÇÎ–Ö57@Ó•tsNš¾äzÂ¾žSFðãHw†N&áª»C7Ð}¬^€ÚR<Þfük¸mFÿ9ä“´dVQÀ®|+@Y#dÚŒƒ³s!p	7¦¨ùL‚Âõ‰ØMØÝê)ä~Qnþ„D¹ÿ³5xœu’MKÄ0†ïýU4»âQð&ˆ°‡/‚x˜&Óv %Ýµ¿Þn·­Îæ}§yŸ)m’ñ±ý”;Rè"Êw.QMžÅÛ~'Ÿ6Òi a(ŠèsPÅý‹ø*„(;“rqvp“H×[Ü¨òá2ÕhÌ$WÒ “°i›á€4KKhÎz%w¾	”Öf¥Ä%fÑV\öe–Tðn6–p˜ ëfã‰ž4Ál,¬M>nc}ä	„f<’Åy¦…ñÝâ<ãÍø]–J>¶TÁâ<ÀÅñé¿Žåz
‰²]œeZJæD&^¹Á›Ô$l:œëÿ‰]³±ƒµîN5-1WšÂm¹lYy·.yÕO¿cíj¹¦xœ•XmSÛFþ,ÿŠÅ`É#ý	S&Æ­L igÒÌÍY:ÙYçêNNÜÿ½»w’,Ò›½}»çžÝ½ãà în/þÆI(2%‚Q$2Ä‰ÈOàêv†Ìƒ”k‘wúèÃ{¹XåÉt¦Á=8ÁL“(™Î¸N*ç…žIô
™ñ<’ƒˆÂ"›ñ_T¥Ê9jt:?%Y˜‘€·q˜ét0;kˆDžg²-R:Jž‹ÒdÒ–Y‚b’­…]:—Ù`ÖmÈ²å\´%èë¹p‘Ód‹i°È“L·åÕ&-R1:_½¶~PR9}U;”Ñ«:3Á#‘ÿ€«,N^qÍžNš¥¹NBÀŠ"'©8šq,r7œñú$aŸ¬ o—}PÉ?‚iè§"›ê™×ù·ã|/Ñ$‚wË…ÈÜ†u7Ÿt½ÓNÇIbp÷âÈë8N.t‘g`ÈAK±âÑ#†>Ü]^þÆ.¯/ÐÈ)cÙPl²ÒBQÜVŠêÞvÛ»Ë{³RfŒsž¦2t›nÈ»É¨Ôò ÷áÄa*•°®7ÓtžÐ¥uA9nnÊ¡ßJÒë¢å¯t7<í<Ñ	äE¨ÁžÅf¬8>‚™TšME†ê)Suž²$K4¥‹§tŽŒÎö`ÂxjÎ¯2I,
]
Ÿ
²¬8Þ5«yÁ­.-ó|ÖG¿,ñ «çsžEhÕB[MÐ·Ÿ†¸¥K‘P!‚Ô½å¹uwû*,`ØîiÛf†Û&›÷2Ó¹L|›¡@K@¹È±A&¾€€ IP!{2×¸1/RKžz‡½ÚJí6ó+õaB^(ÔÅ3Êb1ˆïØ‚’lJÙ6ÓËt¯¸ž!É¬Ç:j“à0í&ÅJÞô•n“ð7›„3¨ÏÅœ3Ð9›»L“<HKÁap<€Ï‘¹Ð	Æ¡"æ‘Ç>üü|DJà×»›ë’‰&¶@K›úªÒ7¹)Yä!öéH,qôœQN“‡ÅÊØš}sÜ¢Q1_ þJcÕ´¬ÇG¹qÍCN`QÐ’cÔJ‰NK*èRÞ"/èS¢ÚäRjüþ dÆBÄD&'"Ô®çÓ:i¿ƒëOã1þúÔpX!Råª*C ”ëºIóT	#®ë‘ÄÇV³,Hc\†s­²l¸0‰ÜÜÞ³óWw.òÊ,Høit}ïv) ¢V×GÇ½iÏ‡}ŒT§ŠRª ³U²ü0>¿r»kú”;ÚöÂÊ²ÞÖ}ÓÒÆ¬†‰GÿzQeYoÚ‡¨ç€‰‰p†BÖ¶÷PÇ,±Áô±‘­åTËRU–-ü°µÌq\¸^‰%u3lÙ"õ4“[Prm³Í:”îj8¡§©4§+ñ³àvTÐvÆ3ÊÊÛü¼]>Ó4q(“9e±ü2üj&L#˜Có¥lé¶X=Eí^–_l¼¯”YæÙôÞ4õ¡è}o/gXˆ§ýÂhºRO ‹&{ëÕÀÅ°é33Í÷±þ|Ø‰%þ
~u=Á¡…éîf<º]ýÎÆ7Wìó×£k$À([šÖ"|Õ¥ßD½.ñfíÎ`hS^ãlâ›¹ËâÈd·Î£¢ŸÍ¡lƒH† É¾uç°ÂÝp·9½_ùÂ¯åõè´¤
cù±}ç8zˆ¨©ä°£%Ãu‚ÿ÷ºD|Ü@+:Æµ£Xz5°03RËG‚ïú
¿W}³3œ™®)¹ÒÎcCÓrE|wÖl `Öƒ3roÃ‡*ÂP(å9/ DW	š&f‹ _ƒ\®qÐàíPÃ›È+sLSiÁÖ·r2q½‘¹×V7bb³‘,è-7xOÖ]ÜdëëG´á¢¢óÞ}©ÕÝ½uX3Qéþgë9êb}cpúð|À™X¡b÷	uãh÷þm:uOqLKÙ¬ÿm¹ Õ˜Yß‘O½çÀö4œ9l‰ø?¢AM˜Û÷ºÚá-_¬xÌ$h½‰¶-žš„›UÉu5Þû¬Žm}Ìä7Fo¾B™æpú#}ˆ‡	Þ uóÒŽµ„Íj'ÛØ‹?õc£uWcöI[NcD®z„µZ3µàíæõ¨µ‹R’ÇòÔw8Á§w+Ž-6óW€ê¾ˆgJ—IßÜÞÈ¥Q¡:ÜÐ 5c»Ý¿2óÎ­À8y¹LúðQDEq¼®ØW¢G¨Ïù£€òyŽ©
àOW
o×3¾X¬è/.Ø÷>68‹ðˆB=(_¬DåzÑvœÄ'Û7ÐêæµJÆò¹ñ^Å³¦ëáZÒŒ³ÙxœµWmsÚHþ¿¢C*W’ãÀ$ç5ëÔÙ;ÔaÈ¼Þ-WJ5HL"f¸‘d›»òßîÑ’ '÷aýÁÀô£~}¦»ut£/?úÂå2à=ËPL×§pÓWöª°—j¹Òb6ÁrmhÖ›M)_xb¶8D9AÎ£p®ð!Ÿ+É´§=vèFrÎþ¤HW-yT}+¤ëG‡ž,”<œ×
gT]%ƒÜ9Ó°§ø¢ÃBvÃ–¸_áþW­Ôn¸'Üræ¡‡‘kûptt'<¨?×ë(ÿ¬Pƒ»‰x-odÏßkòLÁÑL5ì# Ã1sp£<îó$h¡`Äµ`>¢Å„ëLò%WB/ž˜æèÙ£„’™ô#)Ôâ‘Ã(dad‚’³BŠE´€1_,¹F±æ™ü„äìy§ü”QO\C_|Ñ*änˆ¦Ë†ûbÊC±àp'6E_æQè©'™Ë1A'yh¬üråú¼ss®›RôYÈ¥»Ê ^Î÷­ Ž€óGiÆ·¦9q­JˆF=gc;¢‘3²At¸Ö”‡Ÿbö‚b Ã†ßFè¢«PÑª$&N`Þgš-àŠ	¿$&bt5xQ˜H1ø½‹@H0Úx”ÁD–±
‘|ÅGJ°„3Ð†Ó©/$_³5Áo.#­±'¼Š;GÜÃ[èJ6ñsìMÄÙ]#ÂÀ]À½µð…wÒUhÅÍã]­•.»ÛÉ¹rÏ±)Ü2‰µêp?dY»21*(d£•{0Y:˜¯xÁÜï3V< æ‚…›b:ç)¦I¤ù².üŽÉþ,‚PaQ²H·×xÇž3\óÜùã,ÃïÄ5v[¯árv?¼‚ËÛý¸³‰+ä,kM"Ú¹ïÃ˜:@Z¢”©OŸ?®[bódÝnMñø‚á•kë¿d¬(yP`nF‚&ñ,æ¨)XZª²æ¾rU×œÅ-TÀ$p"B-ëÙÍ­ãêK»Z¥m~ÎÀŒ‡ÃÂ¬ÑbIÚ,Ç‰Ž› <»ŠƒGLÁBu¿‚ˆÿr5µŠóÉ†#Ø*x¨µm›FWEslÐJrá}mW+/ÕT\‹äw‰-§Ö®¾T«o=>¥Û7ìÞŒz×ƒóñÝmcúPouZ-ªúv‰I[0X"³­eÌ÷1:o6«#7¤ŸÎëÈ5Å	7°_Ñ ºaß”no9²x>3i&LÌßÑÑ›+ñŒR<2?â`­Ý³aŠ·Z$ûÖ‹ŠÄðò!RxægÎfd„)ìÉ‹2 MbvPb©øáœÃ‚-Á#‚ÆÑ‘YdÀ„žÈ©êÊP¯L7i§ÎÆªdÆ$ôI‹¸«’^ú¹¯@¬æÄ¡5"àú‘{&Ö(æO–Rdé¢P*ê•à¾‡q ó’4Ó¨ßø<%1DRüó$²µ+N\N•N7àNòEðRãÕ’—…" R`EN¡‘?ŸˆYWâ5”eiëIS‹²(õ I‚ãö¶0óµÚÌYã¡õ59þØÊ?†ó$àá–'š'›YÆrS’7¨ñG» ¢’ ýMÅÛ¡–ærØÕê£ÂÓ%Õ	¹Ïëïøjæ¦%Ó·Õ1ì…¾i©d¬š¢:!¤Z¡kÞŒ»×ÝÛ}üzÕžéËh|Û\Ó·ñýÐ¹øsÜuÎG—½žïnGxv7ø÷`x?ÀÆU¾ºBSù(é¨É7lèEæT’3ÜõûeØå°ã(“ñ ìôÓ‘Êã^÷&‡J?°S:üÙ
ýƒOZ©pj™ŸØµÿQvÌ¶³Ö×þ±êÒÃh"vpýŽB62§7”¿ª={Õ®[~LHR»NVAoµ‚“àc²<æ-j$²•{6I!Xég õü0ý>ÎEŠyŸN¦ãðø”râ&bM£a¿×é]ß8ýáµs~;@~Yµ{¦iÂžºcZeB…Ôó&´ù‡5t±äK<‹öLÓ:«|n£ã4OðkâØC.Y¿X‡3˜p:RŽ»Œ,Ò}ð)öï0.vÂ‘ÜcoÎ
ÓÏþ‰èñ-&Z.•¦ý€2ŒLã»ç7Xî o3ŸRa
ŽgÔFiþÊŸ~X—Â]Åü§ìs‘Ë!O$–]¼Õéó¼üeÅÇkq¤Ñd¶°H à¬müøµj~†Š÷ïcÚý$gQf	ü×°qÁÚDQ&^£ÂôýLþ6s,4ÞyT[a2¹N%Uuë¤À|ÆAÇcCÐÌŠw=ü}XZÐÖãm÷“nT(dÄSë™ÒÜÔÝM'ã‚èúYÙÁú¶mw…4ä—Ûï|…
v¯¸EñâbR<‰Ð¯Î–Ž¸F.¾µZÉ ³Oéd_º†$ÁUv1Ó¬©èà~Œ*À$rÌæ`ùœÖ‡¸eìYÙ:±gcnp±6e®¼ ÷ñ5z‹=4ä˜íÊ‰][…×5'ŠÍÿ	^¶ïí,n3Õ“¨·ÛšúŠ…9S{–9¡ÆIÊÛÛ´Æ+Âµ»SVÎ¯ˆãsiYyPDû%¾ä»Øv‡Š›ÊßçXs‡ýÒ^ô7f¦µé¾v±Èc›?œ6æ…Ít¦xÃ§e¬wž]+§=wÅ*•øº¿à{Þ_:ú±õµQxœ•SÛnÓ@}Î~Å4ÈŽ\›%*d)‰N¥
„V¾ŒíMíÝjw]5 þ_b‡´jü²Ú™sfÎÌ;x_?ß\,Xˆ\á…!×,f(ßÀÒ]gD`ŸÄÝV²$Õ`„&Œ_Çà‰ŒE,Éí2_Aæ…NEIÊPp_FÂŽ|;,xêP-2y‰tÈ9ãaVDo•Ž!2;}ÿ/8,4ËœÜN‡},’8äþ\N!`
®XÂ1Æ5&(y”çt2y=!çÆŒ#,ç7ôrúÑ]ÓÕõ’Î=ê­¿¹«/Ôs¿_L	QÚ×,„J„‚Ç,¡	jlé=JÅ7Ê¨ÒP)£"Ø`¨aTžVÕvšû!-2(?è'/}öèÞÏ
4Éo2S_‚Ò’ÞâöÇSZÎöÀªž'Åïd)&6v,PìŠînZ0|­þæì€Ù´ë‘›ÐÿüjÚŠß›·®ZÝà¬®‹J‹Á8ÛCµGµ{|0êwª_vL³Ü±D]H±Ÿ)œÕ¥ž¬Õ‘-ØŸ¦y„#õv×:g­ä?„ÔimMûfÑâù³,Ó YÔ¸åÐ.µŽ8¨?f¤^¼i±¿ð“Œv‚qÚaÌÙ©OÚi|üIÿŽÑ:ÜÚÁ?wòÿ‚$´Y°xœUŒAKÃ@…ïû+†zi›HŽ*¢è¥  Ôƒ·%Ùf§ÝÎHv¶o‚õ4oÞ÷Þ«-ìß_>·¯ä‘3nwYé@8ÜÂÛîlmjkÀÂ³|õQaí7ÐÜ4ì%Q þ\M|Ž<2õ
·C*´•/ÛÇ¼$½œÍ¼yEìS	÷YC'’ªøðk®ŠRªY¸Š+cfË„óÂê]êºÑ©œÝ‡LÂë‰e…¹è¤;¢W°Ó½b…Ž?"—î¯^Þ-{iSÁÍùi¼`ù·‘xœ½ZëSÛHÿlÿ_A,cƒ!©TŠ×6ë:[ÛÍ^*¥[c,%—$'ñnøß¯{^š‘FØÎ±Ë‡æÑÝó›~vvÈÍ/g{áˆÅëçá8dé>¹Ü6w:MÒ!ï’Ù"ï&9i<²×ßÛ#7IáÝtæqÉÉ<Ÿ$°)bILÓ ÙèöhOè¿2µr”LaåN³ù0Eó€‘M“x{Ò2ÆšÓMµ‡GI<ï¬±ÃQ¾˜±íÉ1Ø8Œ¹¼¿:?óW·þ/Î|$­0Î[zþtp{³þéï·çäm±ïòä£ÿÛÉ‡«ÁÕ{ÿfðßs²Ûß{Ýlf9ÍÃ&IDr±)ËÓ…%wþËý/4š³6–å$ËÓù(·‘Nu›ø!ð3A^íù9IÆãvÃ¼[fáŒéõœi˜ùYx³ Kî³$ö“á=6ðÆ?¼æŸÍ†ƒ²?N“©?\äìÀ˜§Aæ!\Pä~¥yµ¿4¼šÍF8&m%&9:"} óÆhBSÂÒÔŸfwŸÊ8~Æ,ž¥@lÜ–Ëº¼ù±IëWD”|ó‰ä¨Oâð™ÏfIš³`»ål 92ñcöÕ‡«ã;ÅËã¤,Ÿ§1Ó(Ã£=6.,€XqÂÙõÈ?Ë;¶
í“>3pÅ-”V+ÍåÇ¤G½cT)dL\‚yÏµDZHBîÀÚr–’|Bc2Á€ÒÞ˜ƒ„Ì½í–¸"Cö.1%–[) 4UØÆ´gØ± öÆÅµm9ÍÂCäqM2n£¢¿yíç^™Ø_¥à£4É2@ƒ¼yM¸à'¡·t0üyÐE—´Ä[ýÃØ˜wGƒ	u[…[qƒð<w`sGãH:^»Ýæ°u<©#žq’3n;>>ªóZ–»9¨<àŽ{6ÁJwÿsqAõù<´N¹IûLq}8$X•léq‚ßH¯Lp	2ü¤HòH€Á™=±enïÜ$”9à¼:ÚÀºR°Áež2FÓlµÓ°†XìC¸SÓü¤9Šò}#(¹¶'ó|6wOoŠ1›‡"{ÓðÞ§iJ7Àêÿ°\ÐÕ…õ3þ”M‡,½³¼<;¥÷Iêárð˜åél>ô…à0£Â)‹çS–Rô°ÀS©1ŸÐL2ó#ÁM -4sØÑj•Æc:E
N~^?¥ñC1V`[Œz¦ãl™Mdþ,ÉÄ¼Pê¦:É_˜ƒ°omãjÁY€4­.ÙÄÜ@èÿÍõÅàlðþÒ¿¸~¯\R»õMc°í}r£t‹ðTˆ‡2…š¥ÉŒ¥ù‚¼Dº/÷ÉFÖ*2KÅóÄçJŸQåq/#uM*?,Y	žGnGñÕÑµ‚ñã”6È•ö¸ü‘Toh`ôJ #÷<J+B‹
 ¡ŽR!V8Áª—'å4ÌŸï[ÅmµŠÛÔŒžõJ ]…Eº¿måo E²yVHŠ|y@VÄ]˜©ˆ¯Vf…ÞÑXó*9ºÒŽZÎÂûsPZ…Sn™ã›¶Ã^ûªu¸0/@’µCÉ_¦šÍ³*BJh‹‰ˆÅwù¤í8¦LjÌýºôZùð®ÓYÇ’ø¥Î2É8bßÂaÄD4ûÿa(…(?7½?GäIõ8IeÂ–“@ëÀ¯C3À’pk«HGSt"ZßPwI(R\§táçzÖ«ø¡KY	l33”ÇÊ}c]‰§('˜ÀµA²°o@Æ)Wÿó¹u–²/bƒo¹ãþA-L:G‚tL@ñ]¸)+æÍwÔ§œACQ*•Ù*TG¼WÒæ8–="Ž1·-6zh|ÅF.UõÎ1,)óç¬0¯lÑá‘2)˜¸8É üUä%}``M`yeeè£ˆ÷5†Lì ‹‡òŽ`DÀ&P‚°Øžà’ð;ŽT¨Ä«’	0€`­Ø7ÝÅË®hEŸ˜†XÕÆÂ*«Ù8•E@ÍÛ	3g-“
ØS)T ¢tj»ØçÖ‚òµu‰KHðtáÅqD"…6vyE#ÈºÍrëÈmê«Åðá8H¿ê=Ê²­¬ŒVAß—ÊU„HÿQÔSØ‘ÑN£pge(|›µ÷o5ø‚óšºMàQ…&írïEpºÊ&î•MÈ…™¯}ÿN^”22i?vØ¼ å‹GÓYèV»Ý]"[Z•¯·+4Ñ²IÙ­ø!Û³þp—®qÞºÎ9Z“¶Ý¨2ZÞ›ªË-ñXªjBÑëm¥¸Ê.¹ïEžKª5£¶–4wÕ°m ¥©ÙFF~B‡^$fÙKÙñÓI™ð–Â%`³/s$³FræHÏŒzT‰j­§¸ï®“ÓIxÆ)crGÛ†¡iCQ	UW`tÉ$EA
CŠ´ŒL(åJ:°²
Ø	¶ZÜ>BŠXÕ†
-$bÈ¿,ó·ê¦†v„‡y cÂAt¤-õÅø‚¥éoÁ¯KäÝ:¼Às¸âªF{©¦2¸ÚÐš‘•«[³áŽ[`HúØ4‚ÝSýVlùøÉá­Øtå?èÝIüe
Hêu%µVé ÒQN°á/*Î·½(=d<97;‡4“S0#;î½ã€FÃÊ2¼Óìk˜&¤ˆžÚˆ‚­^ýzyîßž_œ_žß~øÝ?;ñw÷›†‹mãiv! ‡íÏº{.º6P¥%ŒöV`ôj)£½åŒ^­ÀèõRF¯–3zm2oKçQ¾_©¡›Ž6G›cG†ñ†çŸ^\¿û7|‚ÈŸ7þ[˜›=½‹ë!lã»{JQeK¢­$9¶1¡á|ê'­ÕÚ8g`ä°!½Š1˜w>	3r«LŒ £í”fÔÑ{¨˜¾0ãdä‡9›ÓÒ®Est‘³Ì4žwIœƒ÷Ã,[Î=hB…Ç˜0€ï•ßâó9øjˆO—˜|T‡ÃXï¾ñ[:ŒØõX²ËÞ%óØz%@,
Ä ÷e,ýÂ‚Oo?[’åH|˜?’Q´:©Å¯½@ãƒÿdŸJ”µo“Æ>:?ŒãìÖ¸qx~¸ÛäÅÆ©Þ%)®c¾’Â(/þ%	ƒZ7ŽçXçél/n^ä#j¿ú%,â)„ª_þlªç¤%°vôåØË+÷‹Rà*þ:5£‹(¡‰q@}mÇæ`ÆªéHÙñc6`A65=ñnêž6@¤ñO+j%v¿kÂhÏò HG®TÎE7u‡B4(€kïX€¶í4ªšþa‘œ=cý<Ù¨\8Ú†ÕƒÃÛÕO‹‚.Ï©¸û”ÇØär
1…5°HFùmˆ¬îl"xªJZÃ—êŠC%+Ê×eÜîÑçZËøçP”P.ázEµQÜ¾ì_˜`Ü3O¼mû[±|Ë}j·•xø]‡RÂ€Ãy^ñ~¸Ò©Q¥Ãßóå¹µµ»f™ãn_®¤¸áÊj]“ îµÕº®e,ÂázûXt¶Ô±ÖÛ+îS<³¼"•qˆ†Z¡Pv+RËøSRIáÊ‘\TjÒÍ¢YÉ{¤­|’!VD?rlÎ†‡IW°è›ÑsmZZ´pxZbÁ 0(ñ½‰)BzJã‹Šˆìzí~õ½¨/¾ø˜áÀÕ—§àßÌ‰ù¹è¢•êEü±äÕóâ„÷©y„ÌœßtEO;öâ4®6¸ŽÿOz…ú¶¦?t‰E¯Òâãï–ÿxº©aQãw'>Ÿh•¼}&žZÅÖ7uÖ@Ÿ	,>9p Ï+‚ëáýÏAjÄí">‹û-ÂÑ:ñÅ¦„ÎJ‡zÕœZöÔmëýˆÐ²Å·;{òÜ^¢{£*ÏøYù±'¾(Ó©½‚‚l¦–ÁêË®oPÇÇWN§„?,k½²<•õnÇ¼
{¥4%5~ÄÒÎ‚™£ö;5¹o¶nQS?ð
<p|.g[ví3‰»à¨[Þ¬17± Ýhš$9;C–¯_ÆV¥¢NzÍ—r2vÁ£³õÚò
m¶ÚŒ:À™Ã#þ)^¡—×|ªR1SªªPfà ý¸¹ŽxœíYmoÛ6þlýŠ›ûÅJÇRÛ`¨ç`ykj ‰‹8ØŠ…ÀH´Í–Šršùï;êÍ’ü¦$kÐbõ‡8 ïž{HÞsGÉ»»0üpüqçŒ¹4éNß£b#Få[8ï_»[lÁ‘˜ÞI6ž(h¹&ØÛ†¡àÌcc¿óÚä RNœŠ€HO´=Òv£`B~3KWøh¹k/XàòÈ£ÐÄ!_íI³06¡Ä£R/¦’Œ}Sâ~iM£p²’’Pr¢Û`™F¨däª%³ŽåtŒŒFÄeí9
fT†Lçä³Ý%ã,ÈÇ_ÙNy$<Úm4vw ¸P4„@ Ãˆ¶á€sjB%Ìp*1¤Ž_H…ðÔÔh¸"áX²*¢¢ðÚî|J¡ãQH†ñK²`­‘@¿Êé[h¾§„«É]sš[‡ÇÎÑàâêäã•ƒ‡Òiš)ú;&ý["éÉš®-#è Cæ3ŽJ@zÒwG"PRpŽ[þî2õ?Bq¡aa>•í„1ÑÔuH%.ö"òo¨,®ŒÎ0Ã Œg!ˆ§“Mþ÷ø’âÄŒz×oö2‡lôòG‘Š$…($cjÜwñ´‰b®CB´Q­ýMÅ¨åŠ T°6LèõŒÄŸó“óÃ“KgØÿë¤•:3Ÿ:ŠrêS%ï.Æ˜oaÀ4†¹96‡|úD¹“˜ßòhM³k¬MLëgb~Ç‰¹÷7y@ýc¢È9™F£ª$ÖQ*ác$=8	ƒ›ÏùLŒ!1œ'÷U–PñÉ¦¼ÓUOˆ'nAŒrÊ,€«ÁÑ2g}ütÎeõú›ÊÊzVYYeeÿŸdU=këÚ~ÁO‰×‰²£Üqi¾ˆÏ^
?O«mýòA
óèÁês×÷º‹ûi_¿Ù¬Üë8"üƒj®¼NZžJÎša¦HõÕÙÏª:[«®|Óe·1ÓH3Á<(p2sÏ™Rì‘ýªÊ‹-yÀ–âÈ5þÀgí+’4ÚÊ¡L­ö½]žo$9,(É ­&(¾³Ävö³½,cf_ÄóZ9EÔn¥ñ¡œ‹N½u’fåp´$ÛÙ¯8lCšKæLÓ¬Gb¡{n¦±àR"²0[›J±ÖlfQ´.(NÄ±ñ3¡õTÃ*ê)É]«Êi9qOç‹3Å6uš'ÿjw-‘¬×éƒßŠ„.sK`/_š€¹YN9Œ–1+¬áJî×ì“ŽUæª¦™Xmëî£íîûÉÎz6ÙYO—õSvß½ìVˆ*¹$”T¯È‚S}‘Ž;bôªÉ† %ø¥W‰8†¾ôÍc,µ{\ Âµcm ‚Ý3Vª¸Pa„µTÙÏVªìe¥Ê›:ójõ”*f¯¨b?eûcÉ¶n Ê“…–&ÂVF¿M°Wì'ûÁ•ÀhäõäåWŸ½p
ð56¢
°a?VnÈÂCàÚ})p\]$³wèÎÚj¹©LþOPúŸ:{PrœÈÚËÆ_k7²¬=tßÙ/¾´1µ&×;j³Z]×Èµ§Dñª/†/Â¤têÂÌßAÅ¥I¿—*­r>¿¦$%e‰ÌßBmj#qœ‚}¡‘T§’VÂFÐªœl¬D=á-ÓoZåýˆ§.	)tÞÆ-¼ÖÛÈóÜíÆŽ78ð¥›ÃYµà¬p‘ˆ«Zxö
¼ûTÐ7BðUJN~ôª%ãE¹.¾ê-üS½°0J1+"†¼ï2)áêDÂKIŸoªiG§Â¼vnàb&=œõû§çÎÙàÔùóàò¢qÚš÷cÐ¬•N°t¶›ñÎIª"Àˆð¦#!Tiiª/¾pÒÔ%>7¡
rvïc,TBªCj½¬vm¨‰¢éüwS­X]öø”Å²˜oúª·’s@ƒ"V
R ÞÐÛb:Úü>÷MšØÊ.V`SèbµvÏÃKãn‰uFBuÈ…û%ÛBðkCÙ\€±—ÂØ…yµæU]˜‰U?`ŠáI{úZ|J*±¡'·M§M¼qPÑÍ+áÌãä†ÓÖU’=øDàEÂ9!¬/­iÁX©Äõ])ž •2»T=kÞ|ªU×ÈjV%,÷Æ¿‹`q¸*xœ}RÝkÛ0žþŠ[üb›Ä.y\FY¶šÌ·#ûbp8Ò9V±¥ Éƒtì¯Ü¤^:Ø$t¿»ÓIiå§›¯³µä¤,ÍrAÊÉZ’yE¾…8eiÌ †úp4rß8yó«ùJÝJ!÷]âùA²ì]£½¯%­*#t"ª„÷ª©ÞÙg%×r²@ÖJPXÞ­ó›|Uà6[gE¶Ý|ÃõÝ
?²ÀÓRÑ>‰âm/&­Ü©Ÿ%ÍäìlÓ{«Õøme-—4×O]ÀëSˆüÐövXcqë*'9ž,¾•Ë¤„¬Ù(þ¼ÄåfU†I’DSÄ3‚8jÆËWø²ÜÜæ·«°Ö¦«Ü#Ô#•«Cë3…9ù¡&c‹ÄQô§~‘ï³–ù÷,tÇM¡£nG&+H×aøC]E³ë3Ç˜u¦çµÔ‘3Glõ~±Wg|˜+¾$c¿-¼ÀgE>Àáè‘aØ¨w÷ä}±ÑÚýq­j¹ï£Vö{ÁÎS„4þ÷Kûó=¼ÚŒ»ì¹xœì½kwGŽ0üYþïI"y$‡7Ér”dŠ›ïH$—¤äd¼9}(²)õ„bsÙMÙÞ‰ÿû îÕÕÉ²'3íŽ#uP(
 Pèï¾óÆÃöÏgá,XÅÁAo¬’p›ï½WÃ³ƒÚóÊA´9XN“`óä»gO¼g^+ZØ„×7‰·;Ûój•êáüsì½	bh´òÚáu˜L—Ðn³Ž6Ó$ŒV^´ñÂ$ö¦‹E¸Wü0!²ÉM{ëMt½™Þzðëb^-’wÓMpâ}ˆ¶Þlºò6Á<Œ“MxµMÀäMWóï¢"¸æáâ>Û®æÁÆKnÈ¸½hA¼ê_x¯‚U°’†Û«e8óø`|
½ãÃø&˜{W¢‹4Œ9^7Ä4Š/áýÆ»61Žª†x7ç>uwš å/Z#ÜûÁ#
Ð¬á«QÎ½pEˆo¢5ŒèPÂß…Ë¥wxÛ8Xl—ûˆ{oz“×ƒ‹‰×ìÿâ½iŽFÍþä—hœÜDð6¸ªðv½3Œk3]%€vÄpÞµ^Hó´wÖ›ü‚#èö&ýÎxìu#¯é›£I¯uqÖyÃ‹Ñp0î<÷¼q€d³Yì- ÙmlœÉ4\Êyÿ&6ê–sïfzÀÏ‚ðh›z3¯’“·ŒV×4Lh¬yâ…o%ûÞ»Mò’DéiEp5³û^o5{¾ïV¡ÕtõÛx?N =àè†Àß]FÑfß;âš×šžW©U«•ƒj½RÝ÷.ÆM18Ïknõ°„Z7SX«Sï¯ÛåoÓÍ*ô~˜‰gÏãÏþßÍuœ<ŸE·?í3pñÓÆñ½Ž¼æðËó›(³áÿ,À˜çþ¿>‡i^ý¿wóµeMw¨á)yÃévÓòÃ{ð|Íè@ß=ùp5[nçÐ,Næaôüæ'ãÑ&DªÌgóexe>WIòaKÞxl6+á2¼%a>[ÌVÉÒ|´]Á"™ã3õð)|£¸yª=[ÝÝæ -ýp½Ü^‡+»ájûþ;N¶þb›„K×sD{°†$øüÉÌƒE¸
¼Ö¨ÓœtüÖy[k,>H“O{l x3êü¸÷·ÎÎnþo-v}{¼SÚ¨¼<ÚÓZ¶[~ÿò_œBþøu¯;ÙŸcG›³Á+Bê·›“¦ÖéC»ÊûÊqNË×í‘Þ6¯´GñÄeEƒ;ýîYçgÿ¼ç·;—½VÇ?´;g;;Oë`Õ]ïŸ £ÎøâlFŒ¤êæ¸Â~\Mûƒ‰ß¼löÎš§gjý¢Ë~ˆ´vpzö Õ"¼¶É£]öÚ;¬›êìÐ1pxï×D‹«—GF÷Ûh ÍáÕ×lô«•
2Áa@uW»Zª]ÍÙî¨n¶«Õ,¥ÚùUÙ²êjyÜ°0ÖÝU;‰ñ0£oc£¨ÄØpÓ¨µ¬É–µ‚–uOÿ!FäoýC	ây6È‘›ò\ª{°‡S^d0åP1ÅFý"ƒ;
¤–q³é0›M/jE„5Ò „f²éEÍIØñQ6g_ÔÝ„åÀ”£F S+œV((¬Uä¡ñ Y¼]ÃÆ×>Ø(Ë ì…ÿüO§Â€9?ÌëÆ¡C ä(g.«Îñk é¹¬:U‚’žËjÃ¥–~ŸµÎLq¬¸eë°fŠía†þRíÄZ†–Žåf´¬É–‡Î–õTß/]í^¤itòä§i7tjöaÕIàMy¢eF˜VÑòEAËºhYsö^OQY™»ô[ý05Ç:ÒÛi£qÊõq5…Ñ½µÔ*š˜)±<¬Ô­Ý²=ê]‚¥ÔÒÿÚ½æ+¹]ê?Õ ^Òõ›gh°¸àjYUÉÄ6_u\`LsÁŽ3ÀÚ•<0kR40úm<iN.Æ¸Z\ë¬ÓùÍñ¸3š8àùpÃVÏEåqXfh§¦Aª•,~³ß¦q9†e›56;€‘–®³—9ºQsüÚo_œsÀ3Á‡]°:ÀaÄYàÝ7~³5é]¢_ðº7žF¿¤ÀkÙàljo‚7Òà—=ÎºÞf¿59ù“Îc£	~œÝ;¸3ãAßÞ pz¸} c”^Ëï¹Œe÷ÞÈïõ»/õc€ç€·ÔÚÍ §¡gO:çC&êY½×òÀ//ZÚ²t7òÁý.huƒ~œîZ¿UsPÁXPŠ
S†õÕ_ËEÒ:\€Ò·ýËÎhÜôÍÑÈ…Å‘»ôÍq.Ôë7 w—šæV|¼™´ÖÝú¾V FC<€›1ÎF.‚¥O«[;°eô'½æÙØša1ÞLÕ|ÑÓxk´&Yc§R¸Ù¾­€Å=!eÌqÌðb„‹W‡‘Ê‚´,#A@ÖJA6R‡Èã"HmyÓì:´Œkøø¼9šP¿çÍñ_wv³5àïÙv¼ûï'iE›ñ“iW¥ºÐŒ§½BÃ…À»°‡¡”à½(MSk)åOÆféè¬Qº´1Í—=a.[C'rGý”Røùl7º›"§ùRŽ¤œÍ#‹.Ý)pJ´Þ -o a\¤e¨<ŸVk{~ ÇÞ« ñÎ¢k¯5]O¯Âe˜„A¬¨ó^uØB[ƒ6Û=f5«!¶é^œ±ñuú¯&¯…jCMñÒÑü¯_­_f´nF´tÓ ÕZHççI§ßî´Ó ’7†ñÅ©6^®²ò†‘È"Gâ†¨çÄÓpÀ`ÃÖë‹þ_}å‘€ÓßÚÆItl¼^ûÛØ/µ.@ŠÏ;#ô»_õwäöTÍn%b×À ìV§2ÂmðÝnFïeËÃ‚–Ù²‘ßðX6<ÎkX—ëÆ^ÿ²y†K^`ËƒªIa„‡¼
Måë?•÷t,`PÉ…ð\ì¯– 1£°™ƒX†2„±Ó—ö&¼¼Q€ÇBÎ€%SQÌcÒÕH«UÐ¶uÞfÂåˆóÙQD"ª?½âõt&	sRÖožwÆÃfË¢ŽOÖ©6¼Þjå]:Xð¨åˆÀi @³ÅTW$Z`ã4fáˆˆ¼{´ó“i’ZÖ„Ey:ÛŒi°$xŠÖ§×«(NÂ™—Œù¯;Í6,‡É Åul’:ØËÁ¢‰DÇÁ0ÙOuñÉk«K„#Ä¨ãjÎVòË»uUF4ª™ÜdG€«0É#±sŽrÍ]yï<¯%3 a·™ÝN[z]rCÁÆçÍŸýql®;c­;[íüË‹Ü»ÄÝnZçG{ÙMIdš£N“MŒ;Þ¢^á «Œó“`Ü&ÁæƒG'ä”üq„+Ìš.–`ùàAýt5OéŒEw&`7âdúýA?åÉkÿz0žXí«yí[ƒþd48;ëŒdûZF{.Ì”‘ø«YíOÏ-fèôµ6ÓøÆ›oo×nyT’oÏßk‰[Xúmþu¨9»­X¾®#@»­¾ÚëùëX®™<ý’‹AªŒ"Ê4¢ØÑß°;—EœvïÅ|žQ
OûÍófÀÑ\Œ—–lÄ§ÁDrµ¹8Ò¶uô²wuÉdImî®Tˆæa‹ÈB’7‰VÓ<þXM-*§ùgN!È]?YÆNËg»¹0å’ÿvÁ–
ªÝ¹Š0Âf[ívVÃóA¿‡{‰ÞØ%~Fc#g©Ö-jŽÄ´Úoª-Pè°€M Iï¼3¸`3þâÐ•u F:îü—ßË21÷ú:•-\‹•š¢¹ í3áoæ7lÃ^)$(·áéÅø—lE¤5Áˆ†o€u¿´²ü ½9oÊžiz·µ¦Ò¸ö,…rL½„ÎZVK‡
r‘–jlhÈŒæn½%ÕJ÷×œ%áÝ4	¼×!xô`êdL‹Q™¶†’z$szë2£ÔÛ³xYôÌiÎç!fÃN—ÞøvºI\ZºÙf‘Ó‹._‚ÌXvˆ¨hª[Ë-SBEŒ‹\^<évFÝÁè¼Ùo‘ÕùƒbGmY ïx½n-Ÿ¥ ¶j4€áôÚí#"\ç¯Îû‚\ Ö±JrüÖ±ša+æQK³-uHÌ!Æ1Lçp8M:mõHegBc=¢²íf“×`éüw4˜LÎD"Ï&¿šBËòØB‚ƒÞ‘rª/íÆÐÖïÎt¤Ø°™Û°#Ûµìvã_Æ“Î¹£eÛnI’B‘½ÑÅp¢Î¦YssÑ(ì#Ø2k¶ÞúIä/ƒzmWíeb4pÐ%IË®fu Ý?û%Ô
®ë“€¹®|"JRí˜ÂÌ[4[ÒÒëÃ
îvKöëî?¼ã‹¾–â[†k\$a\,ÊÎ³%L¨(EÚLâ-ð‹þ_ûƒ7Y#ïv÷˜†j–ÒPx Ga(]›‚†1—X÷TžiJf“¨f§mw³fõÛ‚¹×ðÖSØV×ÞÕ‡\ù$ò6A-Áv¿Ú†KºC²Â×·Aý´ÁÓ˜*H=Ä¶qñð´bÎ±£X¥"u'@ÓQ&;oN&*y½&BòÚÀÞmç^3á7oÕYD§Q5,'†'ì§ÞÓ^(d‰uŒ¦pöSsÒÓmù´ê‘ú¼"vD&¼ÂôPªøVE„¥vJw[“0Çö‡1¨þÅ¹²P@kz#_¦–Ú1_]ÀîggŒŸ*·àêÞÌÃjöA:0Yƒ>ƒm§ßú7KY¼È"ß†Je	3VÕ3xš‡ˆ#Ì×K<†eÎ<¼2â½›Ïüå4ño£•½çoÓx~E°½@—/kûðï‹)þ;«à¿Ç3üwÎ~oà¿Gôäålÿ	¹Iô¦QÇƒ#jK­éß@=9>ô>ž°h@E35så¬U•œ ÔDÛ±ò¦†’À.eOípÌHø‚ØˆIÊ(ÁgL0‚:—ðozrLÃ„M½ßª¸'EˆAÅ	TÍª:j9@åW'ÚzÚ´s F>PÃ	t˜tè:Ê:rç •¶ñ˜›÷ÀìØÐ8OËâtn.”í<©,ZoN„ùÛvJl;îÚÎ¹k¿ÈzáÊ›p rÎe»“ädD7½wë½›Ï½®“{Ý¼õ@5'Pž|Ò)–Šr[=¼9·Aõ8½Z^g³‰6y!:äDÛWsÜ3Ðo!ÒÎ[ÝÇ³6€vFK¨’¤b’Nj‰º0=Gè2ý'ÖŒã ö°6-pÃ7›Wºk¦ícŽ[éöÅQ/½uöÁ ,n™Þ™àìôj0¤ãBm¬c
Þw`¸«$œ.SÃv¶;Ý&ÝÏ¼8?‡üåÎh4	[ngç¨aƒ¼êô;£^Í¬®:ƒµ¯@»³Á)ø‡ý±¸tÒ7>³hi=b·š›“×þ¸3lŽš :íÓïžÚ&9ë!õðþÙó«p•ÙÓ†Èâxú<™nž_ÿ¯³%Åï<…6ÞÁìOE:ÞˆÈI'P&øÊfŒ8Ím)Oµ…tyáÖ³h¸f„ƒ‚©´‘Ô„ˆ–|âô¶ŽåÔlŸ÷ú -ÜX'x{–5u\è²šŽZ—;ÜãµI –›‡÷;)£FƒnwŒ¾oTs6B‰‘Mê©6Ö€»ývsÔæ¸™·mçÖv:7“Q³?îêiÔÜnÞì_ta?¿a„2@$…;Oo§«íb:K¶xßW‹è)9ï«ð¶‡í°DÁ´]£¥»šÞÏ3M9q¤*jÉY´	|ŒÚ§D—`< L$>tšhwÆ“¾?övR9mÖ5ð¤ÅÚõúMžü Œ8 -4±;äB³0jW˜Œ¦ {M«m­bÝZ_fœB¢à©Ã<LéÓ¶Ê”Û*Aú=fì®üf†Ùù
ü²™:’¾Êç6Iµv<£Ÿ&ìJiÊÊÊ¨yB—¨s€zY€h¤ ŒÆ)¤“@^º› lI˜f@ ëÛ[Mß¸@éÁ–Öš<ù¥ïvÇ~ëb4J»oüçG¯²/òÝ#«aU67/;_4¬©†2”¦YÑ¢?zõ'=í'y¦ànÜS1H˜ƒæè´KjâŠ#8;â¾„ÞÀZíÊæ<“UlMÁž6}Ðn ¥0½¦D¿u‹7£:#6ªÉkÿëÁY_	¶¡`™q1ê´—ºHWÔï¡‚½œ£@±"­fëu&å{¤`•yó_3Få„}¡`éÌŠÂÄ­A¬Š¨ù\Øcì%ËÂjúÝÞ«×”ìKË†	vÎy¯…u~
in*Øæø—~ëõhÐàAm™=ì©{1¸s„d"ÆÎuh7ìYÀÛÚUy,£wÏoìƒðƒSÂ’ÇÆAâ×Á,\„3Ð–¢£ñ ;yÓ)Ž¯@ŽÆ Ì£¿vFžã;:®("1L[S…Ì9Ö°Œ.‰xô ZìG/ÁÖÜ°2ÔÔrË!ÁÚÚBW–Æ ½°#ŒNLzã-±qÂPŒväøc`»wz1é°›®Ø®fµ#9°®áb»†ÕNîóöXíÆýæÀÄ ¯b5¤Á«±ÝqÍn(Cc³a#Õ°5îÙ(…ˆ¤¢!ÂŽi5í–0ITé‘vK7RJÚ¨¨*]-ñ}Š“nœ°åžÛs]I5¶.R—©9¡.¬\çJfqJí¦Ý7Ì Ð™ÊIµ›žwÚ½&lz°EcA«{Fé¾MŠXÇt,´’Zg[ÇÈŽ³Ú:„…Ý¯³_¤%Pœâ/6D{ÙjÜÈnœžâcWc¢öö®vZ‘‘jm§ß#L-Ç³3»1µæîù>h,jn^-%ØëX£’}¬a•Õ·šþeUssµ¦vò/oë¢ÉL)Mh?@€áùÅËú öw0+îæCÎ¦Kï6˜‡So»Â‡Xp.	VÞä¬…f¼hl#ª#[ˆN/ú§©m¾^#D§Ó9Ü€¿{äÕ2šý{«hs;]†ÿÌSxF)<l<›é;ÁÏ£VzÊŒ5?FXÐ/ºÃTðY´]%(èC@	ôb5Ó› H	0úè@Óé¤¶É½CÆÓžD0Ÿsã8¢ØÂ‘
öþè5ló ÉAq‘Fñ¢f£Ø®r	·‡),ÇŒãqÜzói2õÖÁfÎ6Î9¡çý‹¶ÅV@ÀFr®¼œPB€Ó0~ÆÞ.Hêž‰èg¢—l<çÓ÷å5/ˆp›DLMM”'«ïšjåX°cÀÓÃrÁó%ˆã*€_Ï_k£)À1ì¶l¯pðÕ;äU@˜«Î¤=cíÛ>E4,4öÒí8Éàk—¡˜ˆŽ“ˆFÍÄ&aØrq“ë :ÐÕ@–vOÓ‹¦ÊUÀ¯ª(Ë•Ø.Š›9'ãË”£Œš™¯¼`¶EüÁ»ä_ûÛÛ«`ca{ˆà8›¶žM2Ú-‡:­r5Ò¦K€Å,îÅøË«•™³2éÛA4ÇŒ˜I„eyÕ½‹$„yey ž¦ë¤æ%cl"Ñý±,jNO‡¶c‹hŽù.3ûízƒ%Xé×ƒá&ˆ)0öjºey jŽ:i©Us°¢«×‚³¤dÔ; «l†GLM|ã ;;vÚZõXn‘1SËe6Û±c³­Õ*y¨R‹¶3¶2ˆCnwÛÍtsÄIx‹‚bHÅÄ15¾V'7í%7›(I–˜ÓåØ²{©Ê9ˆ¡Á÷lóõ
Ýûn`›=i%Q;¬eÛ=´ã³78f/¯¶7Ê`à–;NSÿÆ‰ƒ/®7T#¸ÉÄ„MÀdÞ–À1<KYM€ƒïÒ¤öÎÂÕo0¬d3)½®•Æ1N-NÀÁ7èaôÔX{xu80œ7/»)u¾1ŸFQâÇmïvú÷H•º^„ÁÒ28zN,5K¸ÊÅ2L!!,Ë:
aÙX:n,G&Phhd£éNÎ.RVzÛð’Ý%‹kÍJ4Z¯i¸*__­WÞàÝ
:½	õãa~6¼LSßxÉx€éJtˆ#È>àù`g)EK(ŽLèZ!ØGÏÎ`¤@?ÆBpËôÔ±à}âÇ˜§¥%ŽU2ÇŽUØ1¥~½ ›­}Ê¸ÐžTYâØ%‹5(á¬ÚÁ+Ý}™‚Ö~A©fí}Ê¢Ä1á®ÅÉf;K€Ä©ÈÝôýÝ]ß‡Ýí·`îû{{”ô†µ–}5„et>LÙúvû.y[=úõdg¹<.çã¹Å:¢êQ9ÏFtµ]]ÍÞK<õšË5ÓÔ 8jhÞofKÀJ–[fCÁ¬—qÉlA0$ŠÃ£Bw,?Wðð¦ÀKƒoø‹Z	7Ìf}<_o%†ãJ¾foâ»yõm]ÎÛqs§ƒÍjo{»ÚÎ5–7Ê9l)4ï4/kåÜ5ÍôNGþZy_-=0Ñqž›–Œ
(ÇCK@­5Šœ³Ôò]ˆ5G`Ñ9\*'d`BÂŠKùAN‚×3`Xp…þOšä+)­àþ¹>.y­)y­¾È—×øn%{;ªä:IJc{\ì¹h­k´½LÑj´ŸÏfš*‡ª„3e7YmO<Aôñq	?
0€Ì*‹ÙLaxyTÂ…JíWëkÉ¸—Çe¼'ëë^¦YgNs Äœ­lGËÜ,bX­8|¬Ôèbc§/Ëíå ÀóÑf<£,¯Èžœ$Q“NQ¾C”Ú,ÃHµÑp¸Bë`Ctzê°Và	PB{“H±ÖPdƒ¿ÓÁa=ù?6|bÀ¹>.)<|Ûó›k®®—ÊˆO©ÈKJÇ3[b®ƒdK¸@Ü£b×(®|­Ø)²á×‰Lp‰ŠÝ!ªêÿ¨„#dÏõ"Ync…âØå¥äcv)˜j-ÓrŠÆÑÛê©ê0[8Œ.×w¢'ð—
|%»»åúZSà,¹%·ÿ>gGÿ‡œ1<éIybeŽŒxƒ@â®æ	e!1¸ÏwrÎ‰x¼É@>h:ÎF`Æ¾Wì«Q&ôe H‘Ò8*ˆ“˜Ü‡VÇ9‡VÔyhÅCÍÅ’Dãeò'Ú`ƒÙ,Øyâ•>jry8Žvš€©S3‡›¥ÆðÀ³*‰À‘=®¦²f¿Î“)ÛÎqu®S2q¸•íté(ú“Izx¤…[¾ÑÂeDP–¬‰«5I%Ž®„«µ…Yîib©;Õtº"_/÷Ù¯tCº^Øæ]¡ë%gîåK…aH»M6g °ŠŸDãÎi»ËAàŠGV+u…€öÛœ!8O“*ZX5Ç›’Xz-ÇdTy¯KœÙç^|³MæÑ»•9Ãnê¶žV29¦®p"0m¬;£ûª7àº$7¦4v±Ãj½"y‡YH¶zÍÙ¯Ö…b³ÌY	æ>6ã9¡"übœ^FU~4@/4k«¹X×SŠD;½žqÉl§*u§T_ä§¨N]Qü*F+9ÏómTx×±V¥0’/1Ü/rlB>jÀ¸nŒãÙ4*+nQ¬¸IÑÞ*]®Qd¸ÓÄOéy—¢ÀÍ‹¿¤(rƒÞÑ¿/èIë%á ëÅmŽÕˆkv–¦Gíƒ#"ðNÉç4ØŽ°à§òCåˆòH“x3Jß¾“ÉÌÿj²ªtDÌa*Ÿ…,³zËL/Sã“ûÜHXÔÃv]¬á¢!ba¬¢^Š3NP‘óÁ¢anÈÑ(s«ò;F`’›K7%?¨¼ bÆòÄU‹ðÈ™ZæúXÞÕ¾ù î4VÞÏ­CˆBTïñ!7ïüMpgžRðg×óÍ‰ÆŸïð³žïÕ2ºKƒ—;}ý8uÆ,åé‘JŽej aXª^sÜk¥åO
ËújæßÎN,à^·Na·w“@µ¢yƒe²¤¡!,u¯9ÙhRXÐò·±4ØMº{`Yß†³ªBCX½á9ð¥š‰Ç‰¥fa9bXjå±è„,/¼}}…Ñ
 ‘µˆÒXji,Ç),µ",õ4–—),õ",–j%…¥Q„å0¥šÂrX„å(¥–ÂrT„åEK=…åE–ã4–F
Ëq–—i,‡),/°lâž\5Ž=‘XŽÔ~Ñ8æÅ€ŒŸôš†ÿÝÎCädXŽB=mú4Z•X–Ùe‡3ßÄr\aZÊž¹gWÂòòˆ´T6’-eÐnÓR÷ …´”‰¥vÌ´Ô}FDZJ¢¡#£é—j6š-e`9ª–Ú=°è„ð½82ôS™™Ö	áX^ÖýT
KÝÆR«ú©–F
K­aè§RXSXC?•Âr”Ârxdè§RX^¤°¼¨ú©–ã–ãcC?•ÂòÒÆ‚am]?•Á¯ÞÖk¿ê–G½†§›Oå˜§™úqëºÚÛj£&Vcý°¦t]µQw(;ƒæX¸k¥Y"M%†„ÿ[@9J’-žJ/Ì5¢.«ÑòÄÔå9ìá_¹GÖdžùbò£ºôo•òy);§A>ZõydÍSÊôy© N	Ç1=ïÔ”'WoÝ7{ÇW÷îéÂùygÒ¤»?Ü“£.@`0RðÖy‘ÿ×Ñf›öÚò	lKøÏ2NÄGgûÞ³aÖ;ÇxW]ÄÝ,,Þ-È}{šLOT3Çe/•7&Ðç‰ûZÍ8‹$ê—îT÷Ftwô*û³oÏ@b:XBàd‡¡–KXWIäÉÓóÛà‹g)qä\­×¼Ûé{XˆgCÄâ°Sa	Wëm"P”sxìƒÅåtÎ5LQsØóÞ…Ë¥mD”àÇï¦Ëm ¯ŽŒaïëÓi¼Éf]kÜÔ.\úg½±¸ZžuÓ[S4ô{óMVÙ3]\ÕO~Õ¤ÑÑqšÊdºAAöQŒ(zžãìfºQkËOP­Xî€~'\%Ç~â]m‹`Ó–ó`3œ&7©v„EoåÄF­€ˆnVwzƒ8ómëvn¼û‹³ál»Ù´ÃM
¦aÄ“ð6 ½#á¿À‹-ì3z6N°d†ü1ÅB¥F³'Â›]1Égaœ¼-ŠNû?ðÔ1­±S?ûÞÓööööƒ7\NgÁñ÷éGP«ÿ(y•47Wa²¡È¨-q“@)Äx~}»Jd‰{ü yv5aHÕ‚-q`'Áízrƒg<0^\â"? SügÄOép‰›ü |-OË€"n­éìF£½Ä}~ÀÐGô_Û`Ä
´Äu~ íáGP6ÛuÒŠ¦°@]2/õë.©la+Z-BI‰Ûý€„ÆÞL"°ÿÃDã`‰ûý(lñ‡U±ìÎK\ñGðm­¢Ûh“èQpqØqZOÖqlÓ=[Š«Q1']çjï:uO/fa¿nUØëš¸:ïÀ|’ÒüŽ–\íïd!ÁŠ2h²¡<á©;üîæ“³`Åušjêéí!)¤ŒîÑÉx•±{	n°ÍŽn­ëltãn{Æÿ£¶/¹%_ð·±Ø§]£ÉñJ©ÖŒ€^U}hŠéø‡còÉÐ„«•`n>­¼ê(Vîæ-²mñßÃ*k=«<ýH2È©ÂãN4¬¯L‚C·ÂÇ
J»œ©doÏƒ;ïü³ïÑžô÷Ž}¿x»ê2X¡m<‹VqÂßÇ°…†ï÷Nì>fØ@2ÏÅ®Ž,†gs¬¹Fp[B¼l*Ôsèî:¹IãžGþëÓQ-§ê©ˆjíó9žÍßUkNlùx ”#â¹>g…†Ùä{ñÌ™çVIÊë\Gˆp¸
\¬~4(*|<Ý\Ïø3øpñD^Ü3þò‚¿Z/·×áÊ{Æþëæ·˜âB‚àöÑ)TrýŒºZãWa¨¬0KPÀzç1™Y»lzÙã4˜AŸ"#E¡W’ƒ’.<<ün®¢h©p°&f¿ùñv½Ž6àÉÐÂÄ3Ô]z»‰¢ÃFëÏµ(œ;D—–ñzB?*“Ág¹9_@¥ß[ÃñòsnÄ¯¿²DTÃýùB=11ü|½°YšR1ÐÏ­h@úÄæç[@rþyGîÉF÷ê¨â°
Þe(ñ•Häø$§:ËÛ±Vq8WT´ö£5ºRiÄ°OÇ áÂ9
ë">ƒBÑÆ€›Œì±äv•¥<â)Í`>2fklb>Â}ÀÝ³Éä<cJ(D.ê®Å…•1sçÿÈÈv™¤QÜÅ:ŠÏF)t“€Cl(Œ@*ê3h(ëÖK°
d¦}†¼ŒfOÓ¸ç*œå*Úæ¦›4úÄ\HƒÑÃè¨÷,Ú:æ;Œ·W·!~È †€@¹dv;çëƒ™¢ø«ÖµìŠ5"BöjCýzhíý8n:ì¼¾Åú§³«˜QSf‹d\Lñî",üùLà0¦X#¦nñÎŸmãW]¹éRU›±¸(ÅÅ÷¢9„X›ô˜2Nð[5;âÑÉþ©†Î¡¸	¦s–Ê§ÁG„âf¾Q</ø€–€e´a®ï±ÄŠ@âöE/ó|2ê@eàI
G_=ÚáOü„Báâ)Íßt°èDF´5dõ{YÓº.ÊÔ±Èòïj¡ì¨QŽ²F>Sü»F^ïÀöTß[ª‹/îV¸EèÁ¾<á¾qª{9Ý[‚_ÿ’Í|ñœë_Õàá‰<+KQJÙ™'ÉãjmÇ%ÚïêLËúèñ¯ÚX…ý¶QùÕQÙ©¦!ÔJøm—µ_o¢9ô¨æ?ƒ ¥x€ä”aƒY{|NÔÿ59Q×9ó<å~´šoëGÏ¥Æ—à’¶fÔšÍåVã–ÏwâÃ°ÜÁFm²ŽV±½·ÐŽd¸â¾8¢bcòvèÂü‰ùwMû{nb¼Í6/S£¥4“ÃÇ0”h5ÏmB7‡µ¿×,“õÖÑ6/jÞ°þ>ÔþF7 €¸°~‚—‚sÞÏØuÅÒ~ÝMÛ	³>ÀiíÔdEó½áòxkgµ½EËhÍ³ò±¥äA†ˆTßÜà]]pdŽ®bŠói¬gqhRÊ!Yd2ÕCÏ}0yÌÜ’ ‹ýfãƒ¹³#ç×Qœ°¬_qG¯ú±ä	Ñújù[ª5¥5S[«ñìÆO‚¼×a¢õ“tu¤ E—&È¬«¿q‚§àóŒÞÞÙ0,?<‹ïlÊXsÅ³q»ÑæD×Fãdâµ±¬Á¤y`ŽGpÃ€[éb@	ryb°ÒÅ@µv‹Áê:—¿«w6îþ®6Wïx~‚FF°ˆ6cÍÓ‹ÝúR­¶Rf5×ŠJŸ¯.ñ·ÜA¬åÆ‘¤—súr„a?³ñ4Zá®¸‘qÃóíýöÏ«98ì@„UIà;è]SV¬TlÕ·j#U÷>}Ê‘m§ïØ,2@Ôˆ<~ü8‡< Õ>ì€§©â±*&;õTµÝš†‹xóÔKõà’}“Pîh÷k6Oá±K#qßøbI*¹ì{ÚW3a,àª ¦ýÑ›âG"ÿj$ƒÞ'*\+öqèb7L²9°lïOÝc`ÀGÀWyÀ/
€gyÀÇÀó<à—N†	i˜Ñùºž7=KQ
Wþ»p5Þ¸€[i!©½Å¿_sE…·	XùøæD“UlÀ»‡ÿ÷NlèZ…nävÕØ)òQZ@Üo×ˆF'Šp1§]'ÿnƒ)VA‘ËÊFÁp´Žö‹Ü9 |º_o2†p´Ól¬#J°±Ý´ØÈ‚=%ÙˆŸšCú«5‹‘K9FVëŒÕã®ÁŽ¤'«/9’æ’r¬¬6S¬l”eeµÙT¬Ä®çÁÕöšöP½×× x‚ž–Ù¨4ˆ‚N·¶Çï¢»U3Ø¯€q§ÆÀ=¯·¢5€[À\tÄØ]
 ÚêìVÀ™Ó¤·+©¹:Ä¹j—™«vÕœ+iÛXyÔnèŽI·¦¼f¼@ê&w‰î{Ø!¸9ƒ!âòS<ª5áS~¸ÿ÷ì\Â+¸FÈ"<¥Œò7¼âÇÒuÕÃ…ÿ&ÌÇìÆ–Á¿™Ñ_µè'»Ö">ýÕc~‹x'þ)üñ³¨¦èŸš·^3ñ³2xÆ5ç¡–<üH¿Y„û+F:þ`6c§÷¹Ø9~RÔ²ú»›C?í' ¼¬„G~?ÒuxýüO›€1Ð*{²ñóñó§ÞJãçŸÕ;0t¬yýë‡äáoXáL¢—¤/°ðˆ“?„ŸE‹n§ïä§QÅùÅÊ „]cn±Ê ü×ñ‡™jMà?¼~”Ÿ«’R =ÿKÀ/êª8ÇŸÇ(6–§×	ÿ!òÇq1<?VÒ¢uùòøÒÁŸt?†%DÒPÜ3)«J~š°ä3zÐå3aå]|^œ%Ó?cø‘~Qf¢Ê¹ðRX&ýø3&šáoºñçè™JÄ´P>ÿN?B¤?
œæ“ÿP–KñE¹çÿ‹:à×
¬Œ9„5 ?B5`A¶¸}c†ÿÊ'×	],ÁÂÂ7V[Û¬y[YË7jþcZ_üæ»5V­U«Æçïo~Ì+ªä˜'n<q,žë±¡ù ûC”)ÌôšÜ?òëk.ô%p;Ä›:|YÛµY¾ü¦@ o¨«=¬ ’^Æ1·¯5fˆûÑÊ¿‰¶›Ôä*»GöE ì'p¯qmq;ÎT¥ÂkÖúºÀx–©Ióúz‡jÁÊÆ2 é…§ì-Ù×;
8È¿vÇJà0à¬¾°ä* ÿf“×ëçkÂˆuZ}ñ \†HX}ië$KJñPßÒ½q'ÇGß’}±!©ÄìOÙ—²/6¤ Uù·D_óP;¼J1‘õe¬/ ð8@³ú‚ùþÍß`î9ªZàÎ<°×rÍX_à!€'ì>³úÂ„±UæFÀú2æ‹ d¡-Þˆ![ãË(Ž³×ò*¯7eOË¾8€VÖËì(=.~”G‰[E¶WçK–rS™^™PV_`úX•p3‡½!»CeÇc!<PÔa¶žÇ³ËyÆrV6½¦ç	 o9çì)X!¯ÔC¥òNtû^ßSæP*)^`ÏèÙy¤Þ2ãc}‘ÓÈôá«òp&Šµù¬X[®ß‚<LUwËùÉYÓùã:4eið ¾pœëë8Õ”—!)+v!W8Xö•˜UÒ%éˆÝ}qCm¨5(ª b¯©uböÕPv$ÚPÑÂ~×ñ'ãÒŒÊFå¸À¨d}!¡­mWæñð£UöjÐú­jé*Ê˜t'úô¢+JY±,h•ÝÜ®PPyßªæ4¿Ä/ÝúÒ>Æ"½ÅÍkZóZiK:š­±R	·ˆ
¯–IÁÈõ“XÑ IüwÓ[e¬'2©‡@”xo ÀÃËÇ©Ya]p·EëbJÑlu^©Y]4gIº–DªLH•ƒd}8 ©t¼xaq©VtSuuÁGE˜“1»hÈQ¸ŠX¸º ø	VÑ’“óâWÕšEKƒ)`Ô]¬ø­3úDGÐÅe°šƒšßVP6Œ£ù!Œª¢“Z×Šóe,w‹Qw”ÐáÓÍº¢@Ù©ö(Ä'µ[í7ÕZQõÂ.]Ô­.ä\`IfZïâ8§‹	¯?Ï’yõ.ëÂÉ0êâeöº¨!n{.²»p	» 4³5‡DÕÞ6ŽŠdŠºÀ°4-’)mºïy&ƒµnŠªÝ8ežÜ¸·*^–
á•Âá]|´JßhÊ?¯#„fÅo¬|(•²©W©)ýÛ¥²7uº8\§6ÍŽ^ü¦A§êÒ¿õ¶V‡n&W	ßaÓã‰?dTŽéD©|Â9™®Ú1ÔöxgG™³~²dŸ9q¼ŠµW”¡Ã^¢K,œMû‘F©½”.v’.ÙWg®wÑ ¨ú¿ÀÞÅÛÙ,ˆãÅvé¯b~iKC€ãa¦SC$ú œz†$¹rŸÊóÔ¿¬
[ñò†J)Q²‘æ{Ýü°H!(ò…ôc!\;n‘É¿±Ñ½ˆ¢íÌL4Üh²k'¼¡ò{wvÒ!A<{o@Ì¡¥.¥Zô;ÂµäHèBÀs±ÅLú+ªä•‹‚Eùe˜ë[ŸG‘Ñâ[;ÔçfeÍ¿’ú „Fï=Z$¾}(§^›Ç-ú”	™ÓŽmQJÚ¥¤i³<ÚaÆdò¶¦³w+Êpû½bÿ„Oß`§ön‘÷¶öâå½Ö¿—Fg´<žüÃ°ÿðg»’WGÁÿlaptÐb²[³ÍŒÞ³#ŒVÀLùæ“å:·!ÈZåøßb½Ëm¼]ï×ô-ƒHF²Êm,Î šW0´ü–„6jØ§s"­h•l¢e1ÖQG«bÌ±ºøp“ÌJàœÎïâÍ‡~ ¶.àìz9ý€æÇf•hÙßÞŽ¢åuÚ8Éh	Ë¤½,´);éî!0Ã‚µi¡õãÆ¯)Á^¼CÓÌ¿	c¼‚š¾¶K6umM N_Ñ0:´žc>~À«–¹!Ä‡:·(Yâ-¿í¢¿ õ2Ã!,ú=<…H²0³c
aXZO7Âè†El¿Þ€	mc¤Ã¼ß%Zà¥pý¥=]ñ2J¤®·_â×P¸ÊüF›¡ËØÞ¿¥K6÷°	²øéÏjÊB`O´êÄ|³´[nŽ;Z/†ˆ0u/óöRª¼fn»Ù“‡zöÌÀ†ÍCØÖK²5ô	áÏ\ó OM€¢µ®®¶<œ÷,Ü`>»1+ná‹y×¶»ºaë‹²³S4Õô9xªqî7[ÿuo<ñ;ýÉ¨×ÿšî¹†;mEÝzô±æ>+€Ò>P«fú?îx^£t<¯Ý¹ô[Í¡;šç5*/³›§,üönfsžÓ›Ûñ<N;rr8à±ù	…jíÅ½ây€Š‡ˆ<œs2^Ð>ÉÎ™gq<Ê“Ÿí¶z^ç=™‰Þ¡µö–ŸEWxó;5_r"ý,–7Pm|˜s¼.îQ9·Å<o,L©t/x~û¿Á&Šó»a½ 7Îî§üA(*BaÞAæXâ)Xt}°ÄXÐ!s xIõàèeßt õ‚QL÷ÁÈ§Æ5GŽQú^	ŽÑI;ã˜™¿—îÆêe>VñhX/8û]ú
Ö€Žã0Hâd˜ÝfòÏé¶\ÎÕÑÎþy¸
o··UMõÚ˜t§HÆîå^×DX/Gz®Ëí6N¼+v^‹çIä¡°:{áã€uÏ6o3tÂ¯'¬†¦¨o#d¸Æû­Žé²úËz#7BFW:ë»çXî#ÃøU…²ƒJÄÈÒcÉ“5¬0õr\)&óò#eÜ¾šEÊ^¾PŸlgEŸ+÷jS¼¬SUŸäyyÌ"e‡ô¾ÁbaT@ºA±³—UVZ+ýÂsî|‡¥w¾‹þøb8Œ&¶?êü×ØÜS;Ÿ³¹d ~¥¨¸¹ÜS;Š·"lD_;,_Œv¾C_ó½ýMð?±µýé¯sòC]Ûß…õÐ­7|¯jÇî³jþ2Ó·¿)k¨þ‹ApõWõQ®¯2†{X[Ò­AÊ¬Q9ú×Ô ‡ŸQƒæö…ÐLƒÔØÇ»Hƒ°zU(Êþ’4D"ç5z~zÊ4ÈQ]Ÿ¯\»Âô×3¬-.Ø´ušãAßïõÛŸÑ¦wËÒ"¤M‚õ‹e?3ˆÚqÕ–Æbª6ÈÓï¶ñæ;ÌYY~‡¥fËðéÉËy´Eó#ž.0ìÎ_¬wù#0jÑtˆ6û¢ø@øl‹Òn‚d»Yé½ÿT`ÞwÆ›ï½
8v¿@ÔL¤Ýïªºnªkù¬Lç0kÉÞî.ÉžN’x¦£óžáÃölõú›`ÝƒX®!P±|GBê5h‡ÃY@U—ÔÃ;:PÄúi8ªub\;<ú.ƒ_êše5“Í€g Òý‹³3ñx#ÓÔC¤|½m°D ‡7Ô.žMW„c'5¸;ø	K×í!ÄÂÛí¡Ï»¯Ö@°Ø½C‚16Ñï{ûÞÓ¯ãïØ`¾cä?¥Á*Ò¨€í‡xcÍ5@ˆ¨Â¹†pn#dÿ)…^SXžÆ2Ã‡½`S9©•1\Yœo×0ø«òÎ‚S'ó`¼yzA7øP¡ÂR›{_Çÿ½zj±lGˆàÆáv@nÊò.‹…0æxW÷g`šYXW ×ÄCÂbÜ‹ÖÁŠaàÚƒþÙ/BFàõ^…q-Å4J¡UŠ	þý:†ÀýXyl ôi JæÄMß_€Û¶R£óé€¿<ŸÚEIFZêX#xg¶Œâ ža©1"	[fÓôuü=»Æ,bAø*å(ÙÈz¨×@»á¯ß{õ*~½äÛÿ®|ËÙ@,k0+°«á{l°úvEÍñ–C?ÙQŠ B³$Zîâhq)ÃÖ‚$1^TNŒé™?Úô0‰ùcL§å4=RyçMR”¹wÈ	Î)gêÚip£€o8'­çá?HàmpÉî7ø7$õƒfO	LAÍLbxk1Çÿ€^!tBª ¤”H9îñyôž¢>zZyÿõ{šRDé’+c5ì
ÎìÑhŸßa)Éobâ¸,ŽÌê"óc„…_£â–`èVÃ.Öüÿæo×ûŠýJOª{{È#÷4ÞFó`ÉãÔ¹õ©¡>ƒûáÿ©9„ÑÌÖv‰û4q·«}*÷fjk2:óÏíÎ™ø~ñ€O lö6!)ƒä&ðÖÓ9æ”ÓîMîàNˆ6N.&¢âÝê2FÁÛ-vïÛ=/<8@‚ùó¿Tý±RZ ˜(UÓ\¼„Gºƒ'¬„­w–‰®é—ƒê>{¨¯‘˜rÛefLµ‰J<PúäÄ¡Œá1¥0{bÂi ²Þ+X?8#jËœoÉ$Â/|º\W?§‰!ìi…§§h!
4ûi1ËËŽr›Ïå&[~TŸ¸Çñ÷ßŸ ÍâžÙÌ¯•i8î·ÿŠ­‘F˜j$íÌ‚uô½F …Åxµ/Òbü>È×ï÷EJž|‚K™³cR¸oIËž&¸šp9Äë×2&¹wO.YRllÙä/?XSii54'‰S‘–P>±%Â);eÈø•ì%3,"ð-ñ^Ê†¼=þUrêÿÏõ…†~÷Ýõž6õZ†yÏûŠ¹V)0-`*m7 çH c^†àMþôš–X\Ùœõè¥F†Þ1³Twø÷7XéàÇW`OvþñiJÇÈõfº¤å*XFï<Z-øÑ	V/ÍcíD¨ÿÂ•©ÿ¼wx?˜x3½<Åµ8Â7«€…å¶ h£Õòƒ')Rh3‹¦‰Åï¯ð9¶Åî‚*ÛŒÅúNí{ü.Lf7¶š¥}b†÷
u-ú=®½½RJ#O÷«•
Þ2H›ú]õ1@<ÝÅÿµ{ÍWÞïžù‚>YÕoÒ××S/[Uù9tïwÒž;fö›tÔ¿öÛçÃÔ«a·Ù;ã¯\H‡£W
¸Füvâ|íþ¬ÓùÃVïŸ1ö'¬üà]°Aóm‰ÊûV“ŠIc×ŽÒ{d)ÈU›ÿ®XßPó<ÅØW‰PÑ½~w@³?¶@[ïÑ*7ýûöÀ›R^2†PýìCh¶Û÷&»ª‘­KÝ<XL·ËÄ%bœRSëÙ¯ÝwEÕu¡Þu›gg“×£Æžìæ~õñVA¶¨ã§à.Æë¤9wF7ø¨ƒÆCÎc‹ýßPÞÛ•/2„Ë|ÞMtúy¸w>´§Ê§]ÉX)ÉkÜOP¦ Þ æ G09`õïe«’À‡G:‘®}
ðýÉ>:26ÂÔú2È¤¯u6¸hûÍÉdÄOÞSBÈŽŠV•%†t‚ù£k·îL5ì]âç31ßp0úÅ„¿ìñî{ãæéü>9ù“Î™Û¦'’n"ÃðÈYæCÕÛ´†¼Þ¸«¶÷9åÃ¾Z\J©ò›]†DæŒh_ªî~ÖÑœÁTö[¿€óÚ¿ÏxZõ¢±4ØXW_?ëxÌDÑòsÓ(Ï!O:[ƒ’5>ë˜2R€Êî°hp%Ÿ`”ÜÛ
!ÍÏ¢šK®}=IsÃÙi»hÌÐöú—Í3Œg]€>ïŒPø&ä<43£öáêŽò/it`°6}rfXóí
i±‰Ñˆð±:T¥±çýþ{ŠæT³ã=Š¯âOaÛÃ2(ëÐ³{*¬]æ¿
Í6A¶£©ÍÌËi«»Í;ö†Ü8¶Y4Æã¶HÀc¬å!ÀâÝ¿†¿!ªl+÷ø~Vîñ}­Üã?„éÖœqÛçÞŠÆ´Ó
Æû·þa?3c(Ã4þ4‹bKNãÑ‰Ã–ù/bazÿ¾ª¥Íq'ÏE?Ô[ö[¦«rÞ×
Þ×Þ7Üïs¨;<ü#(Æ,ŸöÞªñŸâŒýËû_ÿ.×¿‰—õy«µ-ûŸÏùÓúÓz|7hçQŽ»DnÏ=O¼~ŸµÎrÎq]ëºK·?é5ÏÆùÐaí^Þ›j^Ò{Ó œ&Òa=Ï ;®æ_[ã¾èùíæ¤™?ÞãZå>¼ä83$ðt0˜èbÈeØÕT%dÛ@Nð×o@	^fÃ³â t¬0+sÑ0ÎØ!˜ñ¦ÙMN:çCšÏîµûO`.ö«1ßˆ
È¨Wš9t¤	¹j²xäÐ~­¼‰Á‡iîzÖOjŽ@q[ý¯DëÚ½Z;½žzã^2‘7³ë×ï¡¿ôæîd€’Y¼¶RËZpëá[¦Ã´ò[µ<ìå6ÏTÝªzx¦‡ÖÖÑô£Ê04Â²’3òËÌDÃ'ÒK½wÆ¡L;û„¼Â‚,ÀÌŒS“¹ùpî„¸/“Ùå²3œØõbc¥Âa÷Éüø¢‰[Šz+Wë^gåleäa=brÔ§y›.g3KdêŸ?œr/ž†UN?—Œ›;ÈCˆwl2ÿŽõ1ã×Å!ëg—ýÐø×h|Ñ˜DvœáS‚æ^	N¿ÂÃœ.éJ|îF¼
Ì.!‚m¶V¢¤ùÑ*Nx»x»X„ï¥Q‡×•qÇ~‹±6!§–€¢Mxý–ŠUœ7Æ{:ÿ¨|Ì½Iˆ¨@¼âÈØõH2¼\¯Ø]cÇs¼ÌËp¯ðF"v½ï±Á	
°	Ê	¿‚É^VöqÔÚcûf¦÷‡¼šYx7•ð(¸îùÉ.q»r±‰nI3£pæ—(C¼ŒÂªß¥$KX{,î[ï°K–yM	ÞÂ53üvEC¦M1»‘­f˜Ëº'YÍ
)*Ð¯Ÿ?‹¿Žl®5œûb0‡Ll9ûß?
Q-5³éj%«é±Uå±ûmâŽ$V¿³W5‘Ôëäf)ëb}æeòh…$`e*aÔ»úb¥š8Ï˜{†°\¶Ì_RÏYïrÉ.æúše±ã4•¨) v+Ü×©š@þPU-6„ÿf„Å@éÀƒé4'ôÛdtÑÇ²<GGG÷-sð=¡§b´*@¨¨Üö.ü»ŠöœTq±O1á'ïÍ¨&™ÁÔ3÷<±˜A°˜¯·§uaß¿¤{´³Ï@å¯—[°í Œ˜$yùQ#êÄxÏGy`µPµ²Ç™.×eã‚Ub¬ÆPíY#©ˆ?¬fØ t¯ñà^wÆº•woén&(þÛÕµ*÷ºËÖ¤bØ¾(¡Uçu`ñä-†B‹¿f|ó™·Õ¤³ZÇÛ+À{ölí¯ýE´]Í9{²Ø:ö/?*¥ömõRU¬…>©l´Ütw‹:ç›±Gdte>#†’rAÌz;QW˜¾6-±¨•RŽ!ks¢U±5”¥ÊÅ2Ôˆt˜ÂË—³ƒlQøÞëGÞz}]wï:
±Hës¦2EHÑ¼O>2úÜ´é#€¿³Â[Æ¤”I	€³µœnÀë
VÑöúw1ºñ2å\ùNŽ^S?dÏ´>ÍÀ“ÿfvvNa£F§'öp»MQæŠAùs Æ@å÷t•Þó^Ï7ìÏ¯ŸG½÷ÃÉè)Ý¯·èÚZ,9Ê³¼ÒÈç”Õ’Ú€íŒ3Á¦›3ºh!é³ÜRÏê¸ã{‡X.PïÙV€Ü?Û“zÅû‹«+N„­*ômD£E.[­¤gÏ›éò7šE´iAF‰ ­Ïñ«wh^ySV*ø¿”L¼þ-Q¤“¼œÍæ¬¥Õ|º™‹ªù¢Œˆ†u‚·Át#2Q0Ý0Íƒˆ~‹>"E*ñð›ï¤ÌÑ2J"þ5z(¿;Ì€¯˜èî²Ûáßß§`eM¼Up–˜áWÁlJwÃð®û†›”	RF[ÑÊˆ`×pÍð>9]$ip
žLÑK›‚hñÅ!¤/WNW|hæêævŽ9‰?ýèÐñbEk2MËÙ‹’Æ{ÐÒcSÚÝÉƒŸ˜¬hÎ€¼· åÁÐ$¯âqÆ«W×ø,k2Ÿ¹ZÒœ,f› ûE‘Ì©l«7Ñi¦‰M8Ù¾¿ÿn¨»ÑOæZØÓ9V` ªA®
ÛAÂÜùi{$ÏÙÇê´D…4p0¥£ôã>:ƒü’X‡óŒ&„ƒ²Æ½ù÷fU’‡>Ø·f{ßdÇ¾cî…™£'¸sèbÅ>ÝÑÅªM“K÷T”>æ• i2³;Î˜Ø€Ÿ¼Z¥bL­Yîö0É<`ß`&ÅL7 X4ÒIÌÉ @ñŽô©OO¶â~3ïY?x!ÀŸ¬GëfÂ·ú^1n&Œ±ûX½cºú ›ž&7SÔß1ç´j÷Ü¦(× ³4%Gc±O1•EõD¤fV§O:pÿF«8ImÀ^Zôè,`Åjô·¸DòWˆœ!‹ZNqŒ›÷îé’±*Å¦Ø=›´}|’3Õ?ZÂfÍ,ó>y„Ž1ôV3^s¥ÛRü“q®Ñ¸L¯¿ÐÃ»Â3{Ç?¶Ýlãm/×zSŒ6ãŒçV­æsY¥¥¤žºFæù³«˜:)]!—âÉµZÒ÷Uö½»ø™À¤ç
ˆrCØäív*dì6”½gh¾¬“³¡Í½x}#sDÐ‹BÖ4T¶ìU*¢z»Æ„ïá±üÓ’ÎˆLBÕäå8UáÈÎy(,‘TTi×¨"äL¹Á£™âV~•EOØxì“AÿüÕy¢RTØ	›ß:Æ‰â
Oxüðå>˜Dr—ó‹5~¬,ì]IÆ§X¹™N—jzÁý½=Ý?/1¼¥‚„ªR8`V¦v.CÖÉYäP³túÉcîújA@Y¯,|ø‡ïr8¤çô7ö¹#ýFÑd—×óÅ|^é‡øæã‡âæWÞwùkµŽè)û#^ã4o8š³ñÐïúþ2T-7Ó ÿ &Ñ†÷øˆK=œ1Â×÷P èy”˜À0|æ#{]Óøx”ûyÂ¾_+·;ÝæÅÙÄïZ“3Ò;ï.&ŒHúvQ€\a.ÍCÎõÝo$;ïyJ£*GãD“A%kÜ‹/è+k–L°›ëˆ;<°Éµ˜{0w ®¥þÂïQùIäÏÖÛ]ŽF8]²:¯
n§åU‰”äsŸ6‰"/ÆU³ïaùhKE‚>âþ/ßáðûªSáÃÑ‘>¶¥õBÃä‹{Æµ{¡E$ƒæ¬©¾¢cIÛkõÇŒ*Å‚õÉÇ”»@‰ÿV+TÄ°¿ÜªäBôÐuIQsa25~e	RÒb©-´
Mâ à¡èWDIaêµ¿¥¨³*0¼£–lÉà´X8eIvTä©ÃaÿdŸhä©š}iàñ7`¾ 5ò,‘³Ô­&©b Ò:U…†á>úbVF_h@gk¼Ìñ.3[÷d×ûžxôQÌžeÄúvÈ;YFŽ¿A(pe¢‘é¡+ ?©0µjZ\ùê+_qÕ•©»HAeè-[qei.Suåë.Sy¥µ—[}eê¯”Ó4XŽô²†¦b+¯Ùªt[¦rciE÷_ßŸ´À?ß
·—ø'®ñÜEþ(«ÜXæ´Îo¡ãÜ«¥ŽKUÛ"Ô²ç¥÷3úB	ÿ– ¾ãÐÚg¡?H µñõ\mnlÚö¤õÃþþ‰i¨	+	)s–—ÎOÐÌºà¾`4ÐbF†™Ó%7Å^
HÚg›NVðBÏ'åÖ0z¦c_Ý)îµµy—±
&‚”ñ$züÊÜ¢æRQYêÐûÁ¢¬s/üË_„T‹cXæ°«¶øïÛðWÑL®a^”zGO#ä’Ó÷áb,”+Þ:ÃZ×§¯ÄêúJ_­EB((2§P„¥0)SæÀÅp¨o‘
lñ÷"eˆ	±€ºlŠÂó…²3g¡/˜“;ûù\Þ÷ªGû,ûYó ýá‚æ
€œÚ¹lËXbö™öFàc‘(
0TÞ·jŠ¯láöÚŠÁ4=ÄÜ\!Õˆ,^±búÈ¹LìÉ^»EK—îûÙ&Hô<4c5³pØC×§Øo°-m.i”¸”zo0Ñ°ÅAsÅZã¾£1·ÆL3Ð7ÉÄO÷ùóíí:##—­gÑœeùaÎËü]µ–ó‰˜õ4Ž“›ÍÖŸÝÎ½é¿é
¿é‘3sZu´5JçŒÊÝÃ_ŒwDníø_Ó‡;„>éMmz+-V£‹¦LË$ûÊ•„&Xjµ6ÓøÆCŽzÁ“²å—„X)ûðU|½ã¿Ë}<÷g@Ëi¶ %OpØ_XcoÓÓS1æJüñLCaÍMóÕvñVjf\×˜…G÷1 “J–F¢ÈÂ£Ë²´,-CQáØCN¾€œLçóí5öèC? 1ýdõ¯ÒÁ|fs&%‚.‚•<á,!8Åå„r	ÛŠ`#wÅ´s‹"¥!	<‹%©åÑ Cl3…ÖZ™
)X¯1M\ÓÊ.ëâ”¢ôUÞW¿z?üàÕÞïâÉ!=©©'GôäX=xŸ(äœ…Vßƒ5.ÝsÅùÁÑ½&âÁ‘LibäáùØRƒf®Avùåñº=úƒ¬ŽÏ&þZÊ|¾Í·!3!L!ÂGg˜ÀeŠ§2ðlz$S€,¦å4Nü÷‹à 9æº¾èÉÃ3­1†`<=sAãa§¤q¦9åŠÛá‘ûO^mO\¯I‹c5—³;VÛW§\¹¤_¦8!êõÀö†cõ
²?“ûwµ1>j|F1ÞÑ; •º/~½	ÿÏË¸dŠ”nïüÊ4ÿÑ”<#dZ[ÑFÀìaìÃšéÄîìÉnSê©Fl–>ïŠûg.¸ËÚ'¯9Í7Ë÷Ê”	¢Ö Ï/KfˆuM^ ß™dæ¸T„#ðL—OuÑÁÌ·SO–$¨"@Vv#Í†¥¦p=Ù‘ˆ/;C÷jø4jà¹©ú•gûÔV\r.soKæc(]çHÊ°ýmeÏ†¸áªO	<“}Â.¨Òç&ÃÌS]¶\8Œ?ƒLTb¹N|Z«ØÃ?QçRœùAÊ•~mî!aÚ‘êÂ¡/²Ý¤2·í1?ov³]ýæ}Í¿³í‰¯4ªY¦?ùäÀK•­ä5Ü÷Ò3³ïXÂ»ËÔ×61Êè÷L	°¾.FWûùÍ~‹ÍÑ´
Þg•LÂ“¶³äR^·É_ÒóÍ—”€¿™®âK–|²“^IKä½ÄFÆß¦¥n§Ü
(»JHºlþå/šÃMB-Å0ÏYç§lö]^¶=hêËÒUÅ¹Œh‘í?[;X¦çüðmKX–"ÑôSv1¸çvÏJ,yÇù¹?)2ysÊÈ	Vô,Z³-ÇÞÕ‡$w†€)»h"ùÆ“Áð†‡Ôµ±‰k©Ùýî•ß	S	-Ð¦-r¾ÿÈ—?‰Õ(ÅÚÎ]MŒµ`Ôç×J†ÒMk$Eæ½µQ™]5Ëèþ£í¢_l•‚"~¬)rídFƒ¼-ÀÉ(Ï.Ý“éž¨47",âv1ê|_cžátC·7H¤o§Ø­“«  ‚2xÅQpÈ¨½×êÀ¿öTeê@Ÿ›#,móTs¼Jï‚ºâ~Àƒð“`Üx5³l
ëÞ<Ñ.'ÀŽuïÂäÃ:`¿MS œö=ŸÑm¸›±2:‹ír© &˜üÆ6Yo¹KÞDàœ_“Ò¨žhpÂU¨m°t[“‹NØÅïèdãÂnÁH¬:ŒæØè)Ö\HØÅ)Îhyg†w’S”'³@£qj¬Ç„J—Ða\¹W	 yô:ˆSÛÈáOm±Å*Ó,×SŠÛïet?á½†9=èÁ†xI˜’¦ÕËV´J6Ñrl´&"/N%VF‡JŒ‰¥%7Ùtµ+t|Æ£ó>Í†‰B/N‘°Büyg2úÅŸü2„}|0ž°A[Òºc‹ªv!3_kÐŸŒgg‘:Âß5ÿ&§âážÀšõú<ãêRÕ SL÷ÓkñÉï€¬D=:M(© è­-–¢3;R$B A—ªÐ~_TÚgã'½AßïvšÐå˜Y¤ÃJiì£™E×}p«8¢Fí×|ÿÁ6Æc°9c¶è”rÇœ0VBŽ¥í¨\µŒýCca(Y1Je¨%¢†1ãªa—–g•µd’’‡–.ÙÉ®9-|ºøR.’‹R›¥Xó5ÃÎèüDññ‰NIŠ•)F~,ÞÊÅ]^Zëéf
„›ö·L×SF>Ï^ÿ,ƒ7âì‡x£úÚDw 
±> Û~¨fÓWé¹qvÄAXÀ‰Cg×éA:»L/c¡¬â¤éáë¯ã¯¡^º.Û!“[­`—œ4Œ”XËœÞIi27 Ìý¥	Âm¤-Jë ÞÉ=‡ÓI	
±qô·
Þùô:£O­·‚®ÒÈkõ¸å~«&oÍXýú8è áSus‚J%ùŠ÷jK@T?eNÄ‚,é¿'hŸ9®iv’CÎï“pÁQ£…«m´—¼5œ™Æ[xºÔoß„Il×“Àp!¹ZF³ßžã¯ tm[ë„?Ò-Éañ’'ó°’ª4™ÍguÂŠu±ññi¥´lôD„pU ,E§ÞÎr©ÔŒšÈ~´;u¢>pà–ŒøKú¥•G}¡ÊëaQVM,#¥ö‚ïu s¯R(v1¹®ö¤%2L³qÊµÊ—±9+SÂW€UÀ,?"ÅÔ*¿‡ÞÞéËá{Q×ŒS¢¼,²€3½¬y8½.uùÛöµ¤§¥Åeò.ëJ8/›&ó{„•N|zÝi¶;`Z¢º]F‚ÿE-ùð|Y±fG´5ét$2i‘&¶@‰áóÅeöé¼ˆ«:áÉšií¼¥cÔALçk9Ìâ¬|´œÖ¼ýôSM6ÆÓuù‡ˆFëA­‘\åèÑYÂÂAÖ$ãÌr„*gímEåÆ¥_VešÜ­AMfÍ¥ßÕUÚ8EÊvÉH% ô	™úÊB6^€W°Û‡³˜z3·ëäƒpuí©Íž:/HÏœôgr'Ï¢\>ßMCŽ/N[çmdˆ*šLüñë^\ËßÝÁk‰“YzšÒÐvK.æØ¾VBÄ¬±É[3Z¹¡Bw™UÑ.éËØ¢nÈ<ˆÃMj·"ÏŠö:c*Ó‘/R¾)®15«TìIÞU]ŽË÷™ŽÊ“ˆö±ÛˆZ*r7ß†òè*÷8ÊØ%ØŸ°‡_Á6&R¢P]É&÷ÑeF„ù;ÊEO(¦ôf¢ë»‰»…W—àws×Áf|ÓQ!7í±p¼iœ¤Îáìè ;Äñ1DNÏb@“DÉ4©ùÿ~Â/`Éü!O]Âr„4ÅÑ’{¿4ø$7L›õß1qyð,¾yòXß÷ó/`+åG†—¹³î§ä"ç¬Oß``F©x¯-k*Úcv#ÐÚfeB+.Ž<ÑÜ§´ýK=îky€'¥r¯ÜG=˜{%è”¹W–ÏUUésÃ–±.âãµ©×l¾Å=Hb,ìG{.­3þš%ÝQô¹¤×ƒ+PÝÛù›Ç¼ ­žÿï>ñ+bÇ\®v¢¼m (ë€+¶{—UñÙŒNõV‹È“¿‡JS…šŒ­ ¨œ}ÎñKÎ!½‚‚ƒƒ{Òâ’¦ŽÆ„ûZ:ËµxðJátºzÀë™ !¼üA 2ö¶Tt.ÿ0\„ 1£ÂÕl¹Ã»`ùAûV‰ä® ¹q)ž7fUš£NSÞ«•òwïïÞi€q§…±ax«.‚êJ£öíß}.ûÇ{¢Âé&z¾ùÆ2óa¿ÒãÇê”—8só_å±¨ Uª4Ø\Z -ùÚkƒ¢ffè”ZÞg[’~”¬|mS]—!ŠÆIq™a¹`Ôª1j3`^žÈ¥§.“†[»íËéaásywUOœ°­|oìü*/‡b1÷H¶Qyhò¼"#Ý¦`g ë ,¯·Z¸§#g7iÑkú‰†£(ë§òèHèáñògÄüÓcæå¢æ‚2V*X‚½¬à|áŠ•…Íp/Î¶fÌd"¢M?c3c—âVn:£Èaê˜d_å›ì¹|Ô¹ m#ö	’Fª¹à<*Éæ\z…Ž„#ó¤L(O¡4£C¶*ï	ßxN”©òî@:mZ)cOéì)µ?Qët\LàtŸÝœÖÌmØj½¥Ó~´ZÖìŽ3­é“Ò—¨€üQãiVÓ×k}S2’˜(ì¨á+]0¡ÒKÙÍÖb°Ù9\V]ú±t•Þ•KU[¥¹ËÔ˜[±j3%feÆj¯IyíC,Hmâ¸J3¤‹°m=EÛT;–´àZa†˜È“§ÇµsÀR.IJ5®cÌh‡Ï'U‹ci—×°Šz]«¿Ã~‡ß‚Ñ÷þVŽÒ§Ô;™*©þ‰481Â‘éøSøC¨w‡cÄ€—®Ã7‚æo.ës’ÉK¢ñØŽRi×µ¾ÇÏR¼bR@2æ8`q32¾ûz–¢dÍù¢NPúyž'G³vog.oþ]\:ÿ²žéÕ)‘~cW^èÛ¹0|y÷Nlµ†——ròŠF›áçÑµ]‹àsxyú`=Ý×Ë"âSü<
¸zämðìòµhp®½l¬gö	
}p^ð¿\ë£7lªÿb)›0¸cAÄ'ÖÄ+žÈÄoùD£Óé·=Ø‰¥îñ<YÐ‹¥<YÇÈuh\t?²G+0ÿ_qk3#¸,mC,ÚkûI{ZÚ©WÓ˜>ßCOñf©&6U(™oúò^ŸìaÜ5MÎŸ˜Zœ¹g»ÚÊ>‡\û6V©*lxnIºL]÷e°¯Øxœ¥pS·Ÿ:ç;OAh€.­‘¡qÝf¾ª^¡¤ä±ýo¶Êl'\˜Û†'NïáŽ3ÔñÉ±òºå¼ª€MÁÒEWOïã©»%ãñ¼öTúóÉ_×÷—ÓnÈæôÜ]†aÚ/ØêÏŽb§¾„¯Ö§†÷ö¾³|è†–B€çþ;Ú›×»¡»Þ‚"—o›¾½hªÎ>^3Ž7N/¾¡¼x²É£M,> Á?¥þ¢^!ïi ÂŸâê7þ™'¡4Ú”ÿ{#Ãco¤<öÝÉ—ÏGÖHRóVêèÛöƒ4k‹Q~Ô¡ñ€¨ƒ["þ]â9Á†Æ§
ÀÍ`ƒSSìrÍ’ƒÒ€â˜§¤›¬‡7Ò½ŽH†X.û©WÒ¦¾KF<\!|žç6tqR_iii¤ü[ÇDÆDþ©1ÐÀ_àtÿÏ€ÈŸ‘?"Dþˆ<( ¢R=òg4äžÑ!ôü2%ß»X©¯zÜ˜¹ÛÅ™Ä"WÛJ
Ï’K]—¼ä”p]óë‰d¯ã‚eª°Íï!·fä5L|0Ý\ÏÄ­™gðÇ¼Ž9‹no1'ïÿe_Å•ÖËí5ì¿ÏØérŒUÏe‡aœñÿÔuê,º~þT¶¤µ-š‰²ž&7«ém 5ãJëi[³xaï“Åñ=5Ï,<CxoEù¡Ô×Œ[¨'â–a<±îIØY´Z„×$ÍjT<Z§#9¡/Ú`³.V~Î¹!>öÜpV±æ/G1NÀÝ5ÞÖI¼Çáña·wÖÙ}Ê„ç ñÐyÞ·Ñ·XgqýœÙxôÃ*2q¸‹^²ûT0ô ;Èoc§¥Ú‘Ì
¸N¿½»Ç‰bœ¡Ð‡’ã“‘û],còÆ¥cß#ÂOäÕ\qºüf«áEø@äÇ[˜Œ®°ÎÜbßSãÓ-Š0`ÅXÚLŸ˜‰ŒF‹ûËËq°	aå¢„òKsFU+±Ìžêƒ+¬>ô½pnèË°«`ƒßJ¥!b?"ÈdÞÔ58aøV!«ŸDe·Ð
ÖØpXâ›‡ß«žé¶ûb½“ß\Ê¹'K“0›&8OŸ_…+YÓë%†J”ø?å}ä«'Ž‹¤ÅÇ‚F)8r­F†Å%²É¨­¶?±OgS¤/¹	c¡Iç˜Æ&y&UŸ î&­·i™Êç/¼üHR¸ÂÈ*œeqw¼&ä=ƒ§>U’âí+ŸhvW0Ò;å· ËUÚdÞ— Ýèžíqù|ïó}€Ûºa'ì7Í9WDœ|JÍŒÒÊøsGÑJ„”Ÿ6ÇZ—ŽRõ¢¨¤ª&)ít±K9—©·Ù!öÓz}Ñÿ+>½ï¼Æ£”_ÿ‘+L!a€í™¤”,’Tiˆ’’,¥˜ÙÛdÕ™",üˆR2}ü¨"}ŒÍ?Iéâ¯ü%o|_1/óùI·˜Úç4ñuë Ñu-~ð%…ý+n•ðúµR…Zquœ/ô¦Þ&/.6T7
™Cì¹–/’{n£JDÔoT}d-U¹Ž™¿!oÎÚ±MXC¤ƒ‚+×ÉšÏ¢ö=gYIU‘â«FŽ‰MÖ\š¶ƒ©­XÙ‰EcÞ¾6?'ÜûJš\“JÂÜ","¦ôa]a}–2X-|}¼Ì'—Ö^EJ„ÍzNÊ†‡T4¡ªW-ƒó£^;Bv]jÛa“ˆÓ‰nJ2ÝXu$øïƒìX`l{‚¿‡ÉF_oT¦KpN.9ùú·àCÎÛY´	x…œÌ6Áû$XÍùtSMH1H–²œ˜|'p¼2{w40ºVïu(¾’)î$Ï<xBaõÅNõDìI)(K—ìÚö„N–¸>·&!}mPí´¼wm›uRÊÊPíbŒvÄÞ<ÜÐêVo …ð"	—ñ« ™„àE~Ãü„Çß4óÔx7N6T3Ì À~MC’ŒE9æ]”íg{N|˜@NâY§AÉJm+þçë°(bŠÜç‚)0>ýü6Z%7®óé‡ÁâœÞº1ÞD[7ÆpµM×›8˜E«9ñ¿xð,–Û– 2¸ÌÓ,ˆÙX9 ¦¸a1¤| Cfïæ)ô¨ÄÚáÆÄªYÑ¬Å.îGïpŠ<MÑ‹ÿÇ£¼»L9è!/¹Ã ÇasÔœFû^
Àæð‰Ë,8¬Z‚¨p£Íoôí>¹Ì/0¥›n!ž°•Ô2Å'•1ºÙ"µ‰ÛçÊ#ìðcªcƒ{{n÷éåxCŸ¼’3*¼û¬h‘ú*·?“_ÎØ Ù¸ú¾ Œ4Ý» ´ƒ½š¼NÅ¬ò­˜Z²Ú¤“ñ×Î/_’ŠÔv§ÓÒŒ:í‹óá—$ÈÞ^uz:?O:ýv§ýHô€ÁdÚ)šEÏý[SXlûñš¶Lƒ1Í..s'Æ1O.d»(+Íb*îùúýwï+}¼øwš||jÓñ…Ì“'z8$4Š*
åt;Qìôaî{…*b|qÊ¿üIâ§l-K«6û^y|Bq¾ù÷gË‘›û‘Cé|&Ú…T–%Ý–âý”ñŸÖNL:ËRû¢a5KInŒØ(ÃˆÃÿó¿Žé0‚›9¹V•Û>¢¸¿X<šíÍMoÁ$êâgKtrÙ0ÃŒýÂCæëìGœµŒÿã5–è#ŽºŒ6øcp@_êÈ€b"üæÉtÃª¥GºÓP  à—®ì2å«—{œ]÷áÒ¤9¢CuÔt}·gmwgïi®Z.l,îšEÚ¸˜¬ÖíÜI<g$yôÿOÜXO7-:¯3^Æ{*úˆ“à6Õ©°µx½ÀHB© S„b*?­ü4á!Z±ˆÐ ïYfÒèJW>L­PùFÓXòYÊÐ+:ÞÅ>ülVÓ¥¿x'O»î“†ã™?Ù99fNwëuÃÍí»é&øÌ8¼wy5DÀÐ°Û‹|uvæ¹×b‘‚å/ZÁ?ê8çýŽûõEè"P¿OEÃÆýãF…ºÇÖ€D&‡1*"Ñ+×!Ç«¡•ç"N’FöªäPÒ˜ù·\´¯AÑ“‹¨ï{XzKŸ¨âÏeº:¬§¸ÿaWÙ€ääßúõC'y2Ma¯—ÓÞ-ÂÁÕöÚ»â¿?¥ \éUì°jÊ-|_>ËÎ,ËNÈRu¬9'apê™.‰A:rÂƒ†ÆŠ‘Ä^ÿØùÃvÀéíú­¾ÿz’“zŸ$xHÖ˜ú*„·ÑËV«Gê+“J¸ð/*ËÌ'ôäòÐè¹ÁÛ})[ÒužHò)’¨•ŒQèý?Z~ƒÃà@Ÿ2ÜßÎœVW\]Àgƒþ«Ý§H‡è€:±©Ë&0c‡Dà@ ‹³Fø÷!§@&’ugâŒeØ%ÜYzä3"A¿½p²hº'$éŸ•ÈÂ4”ÕŠå}¦»DòØžqüÐ¬¿²ánQéžåü:Sõ2²Y®«F_d
à	e¬ß©/ÑY7_(-Õ6îÒx•u,P7ƒ[Ÿ`ÀÝÌu§ìv­qI­˜’·xŽ´ÄóCöuZ#OŽî!åÆ¸R¹„,'NëŒš•JóÔ‚îŽÃ6íŒM²	­n­‰‡ŒÀìC|Ïs4ëøÌ>5Ë:,³ÎÈRGc©1ë£¬l+6²VmëÔ7ÉícÂåÒaUwR|T"Ä§'ÄÚB“Zjä´X÷eìƒºø1ý%Ÿ…‘­ö9:ã1ŒðãÒæÃ¼j©±*£ýv' ^¼êÁa©áŠIØ{šV¬ò+äÇízWíEOÑÔ}º—Ó`­‚§{ü«')‹/ãDHmÿé_dqôƒÖ¶$ÄI	~(ï^” Ê£­N“1;Åô)' ŸÊ™üöæ½hUèïMqÑVi}æÀ;çr¥ÜÓËÑ>e›•æõyòÊïýéXJMqñŠ›Œ¬Ÿpöû±üŠÏbŠjm7QóÕQèû¾²Nlåv^Z~N;epkÏ §—”qÏ Ÿaí‹žƒOôT°g×–¾ßA*‘ú"Rñd<òlìÜë+Lå>Ã”š¿²Sg*c-µ/½=(†XÏ½*»Ö
Ãê¾;œ¾žy‹éD»C*¶…ÚáÑotéAU0ihuK¬-éG¯Áú4}Êú”'NþàgžŒ¯‘:¸CófºcÖé»˜~—ÕŠ;Rî]­ÜB R,îÕÀ^ý¹"þ +âá’–]~'SìÄÅ¢ûÈ…íNIz./ZÆnäxeï
é$Wsl¥SºîqËÉØ¬?>ê¥§ÙfßPˆ~×14?ò/„Z×Bø7—$&ãëiðFÞ@àñn‚ñWE´®G³%xt®Ïd’Ô»ÍÞ™O9F¸bå—ü0N¶žnncæô°åC½ÒìµÑ¡§E#¯bhHÁmoŽ_3¼ò:ÆŽ";»5&_ûýöD´¯‰ö»»yÅiDyÏÃ m™O)®dö÷)]A3Õ	›sl­³Nsôi=2f§44MãdMqñäÞcfï9­Ÿ8§÷˜ÐOàí½§òÑçÑN´TÊ#õ5T¶e²9Ô¨Ù²Öì‡ß¤”~Zª´¶”vyRXøÿ{oˆÁ/D¡$11uùŒBLL–³1=±¯±ñx†=d­Rßç¥]¾ïÃ³Phë<õÑ\²ap‚5©H˜=E ßä°ÝÒºi™3¸2Tßž%ßš&‘—wÔŠâá©‚rÞ³Ï
£Uœp8/?¼’øYBÊŒ¡kAáŒ€pÙ­ø	¯y&Îdý5Êóé‰¼n6Qœxzòä~Õ$"ë¤àÈ¡Dh”Sj
…š2AŠè»Ðüb!´Ç‹f;msá7f8¯í$¾£+KK¬ÜÝbU¬éäƒQ†"nQšØ{–5o6„Skµ›ÕLn0ª­{«Ñ¿YmáÀMFßl¾X°…þ·5©Ée¯¸f_V?6¢Ïz__^u2{uVÕsü(÷ Ó6—š¢œ»Íì»FÚç” ;¯Z;ä>}³¹°QÍ4}4™ÒEr'ËîÉ•ÆR×§õæºGWjIn^ÖžÉ.åÐ¸Qð*‰¶l¸á£¨•d´-¡Þ¤n{ÌÒHÆnfDÂU"–Ö²\:Ö=
)MìÈ¨q'¬$¨”ÎyH.‡Éa$qüSŠe§¨Üv+º‘oØµppQ*þ(òž¶´>KlGY»Ù©åëé„ô^%–äz}j*?)8Ó,g8ÉZŸ¦/U£‡«›Gmáx5Ãìsk ŒÊªxÃýÕO‘Ò(JãÓlùÇR3Êû? g|DZFÓ¨ÉT5º‘`º2j"]Q#rí4U¡—P-­1À,™³Ø1¹m²ðÿc*åm>®"H© 
±ÁçQÅë¼¼–øSÜÓÒø\9*pòG]ÿvhçQÖ?-ÐÏ¡¨¨76Â¹?K6Kî¼ßÅrÕÿ=ŽV~tõ÷ ~†ËE­î»xõ¶ÖPÞ ® ¬ŸŽÇ¸•5þZ¡'¶Ièñ1m¼ä¼‚åp¿UmÃ¯2!ÞÈJ,¬÷$¬ŒìßM—[mº#F€£0,ì™0ûy?yUï?ñ9~ñ
×·â“"@pB>†´bì,«QéªT¦.åÓçK´º XÖxßšMƒ4er=£fëíæ:ðo£÷“ñ3Hœ‡,PÆ§¬º8¡SÆø]˜Ìn0ÖA­P°g8÷j-\Œ^ÿ?iN:~¯}Öùžm¨æ‡Øµ7NÐîÍ—LÅË*ÚÙhÚƒ~šv´*æôbüKšÓmü¡,šQç¿üá›‘ßú¥•Â6X£¥%£7A¼]&,—zºò(.êgšˆ$—Ø{Š:áé:zl¼Ù‡Yy~ðÞÙ3†	fpo@ÛEÛØ£yÆdhNÐ»)ýH€íéºúàM=Ö9#„Høï	Äâ’ú¹7HnL&¹±w;ý€	9ràšœÛU.ÿ{ÅxÑyÌ¶À[Ð¸aoá5Ê<ï+º]/ 1‡Ì3>´!]¬~[EïVÔL,¦W9cí)£%eÏäÝos¸5ã €§$ÇAô•	'ßÛ¢a}ÃDø4è<ó%Ó$ù?oa¸ŽöRB–úXv†f[ðÙDa"ñÏ*Ë§, GfJ¯"Ž,ó€Ð*?­“ViÒÈ‡r7P‰ö.­E‘`ÐšÀ¹ï	©Æ ÓjMW˜âpÕAzŸéTCK§…TÇh½‰®AeÅÏÓ'ÔT}˜ÁEN¯?ñÛËäÈ­¼ô~µ¸«Mqe¡Pì».Á¢{˜øÒ~'Pam¾¬Ö<gÚ“,Pæ6½µ&ì|ÐïáWÕ(õ_œGÛ+ôùÜû ³`•”UÃÚw(YCì$êü•­—Ózü_C9ÿ©›óusvAo^kZ¿ËõsÀ
\È»Ê¿*q¨¾—å<,XR&œ8Ì B}Þj¿©VL(¼»Tø·q6è¤wÞ\L>ÓÆ¤}ró–>Û²[fïéßÞ ST1yôm•
ûþ‹.³ð÷(î9øY)I¨oöü•™Ab93¢p¯­½‡vw™–Ü[XY•}î(:ø	âK@^C½«`!ûBÑN!}Y†QoqnÈ›àÝ²Å×_[l:÷Ìñólw2ÚAôÑQ-ø8·Ó¥.q<G¢Ôs›üN[™”çµªxˆê1™|¯ÇjÆÈ}oæû+ö:‚­p„ñœ–ðò~¾®Uð#>[íCJú·Š‘®ƒŸn6(!ñ^VO§Ëhö[~?å{ºZþf÷Ô¼Ø@1í®¨§åBôO°†°°×»»9î{î·là™CoMa[ó^‡I»K3ù&ŸÏ²3È™’Ó[Øú6Öœ‰‘1dNÆ¾—Ç‘B†äHÅ=R$ª¿,Á€Îî!²ËLøÿÙ{×î¶‘aø³ó+ØÞ“´äØŽä[§Næ(’œèY[ö+Éé™ÍæðÈe3ÑmE)vv'ÿý- îd‘,R´ãÌ´w'm“, …B(
u“*\ÈTC„uË™#3‰FŠLh"aîµ #«PÐzw6ºÈŽ#·±ì ˜lt‘-¦Ù£ÈRuQÙ»M¼Û©£Äœ‡ ‹$UdÛóYÂf²ˆà­+u
ëð¤9M¶…Ö<ñ,x¢!3LÅxâ™yeJúlLPPQ®©IPO1¸,™’‰'ŠvÊ 'íZ»±–«E55zJÓNÉø,%h'‰0QC)Ú)E9McÜ¤p·#,†NÁ&`j4Øå‚MÀ4Ñ(“¸œÁLMÀ4UŒßÒ:9”¦õz¾¸º-—S–5°?jµ¨‰ÛâÅ ù/Y³á;–K?)A/Í[°„ ¾ÿu„6=”l0©$ÅA²‘
1²€)|m’…Q‘%‹å’$©îïs%’‹4>ºVËlc¬¯Jîií‘crp+l¹àXCÂÀºÜ°#Q7A6‹‹,pSé6‡I»Røâ!KÏ¢n¾å¢a=$ëO¶UCV:UÿÞr­°Š5‘i©g&iú$u°†0'îm}JdtÙ`±È 5´F°X Xk}]P¼ãŸÞËèzÀÆÍ·ãž2žæQÆ!O¿p_>‹pHé¥ºï2õØ™WM!ò,¾Š`Ûø9n{(_Å* m@H&4Ÿ7ƒq]¥ü(-/UI{Ü)””ZõÏ¬"a°}Þ9«BÆ„qs‰zN‡ûÝóv´	.|"dºXÅx¨|6%â´t—Vßt—XÌ’§?,,¶®¬––Ç¹žôdáfÖ
~ð×÷+2hILwÙ ‰þX_V>á…â[²Ì‚?^Ti=*Ö=už:ôù“ë	¾‚KÉ0±‚!Þ*?Sñ>“Ä•Y2ûÞ—ð–V}‚L“ì<ì<:Oß?=;~ÚÝ·ßxeÿ€^¢°ù4Ø}ZÙwg=ò9>d$—YîB,¯ÙP‘ÅätðMì¾F·âôƒÞl›7$Ð(Î–8€©îÙÒ/y¶É‹ú¾ÜÁÃ’“‘Íºº¨dHÆìØá‰À„2‡ÙÕtÐ'290L¦mçs(I„%á:ð.”—«{/Q(ÖvVGßhš¯¾ïÍ2zé\%mÊJÎ²ãtñüšÓ^M®¼¼³»E©†”ž2w€±L	8þÛ+ûªÃŒãã8ôD`/!I}µð¶OØý@¦¢ÈŸ,GD~âõñ|j÷z¡‘ÊÝÓ;áññÝy3¢ÍØq(4XÂY×·«Áoé€4/Â ‰ÌOü)z¸5öªG\SK}C†
À¸ ã‹pÈÉ€¨w³ð‚›Ùx¸"wÉÁ˜QJ,µh$‰ 8ÆR"JÅí?¯†XTo‹Aueª^ªªF1¨†±¨¸þ©ÓóDq¢„†+;z$)Í™?õ'«‰ó§?În#="Öd+>$Üb»DX™Ù¹$j P™fß  ¸+ êL—ZŒü˜¨É±ÀÔÀ+%Àôþõ5™ºÍir	KLx'Z¯%àz€Þê'åÿA×2þÇPnxXƒôÿéØ„[7Hy+ù˜dîøÎXjÑþ1h§Õê³d¿ó¿Ÿ"EO÷~£”é¿ðÈµ<“9Cqªn@aô?}ì4kOåÌÍþì´zÍOeæogjÚë´Î>•ËÌ efÏ™×VPd’‰ªÆ d™qÑ_4%Ì”	ÏYçQÆ†:—26¶çS¼Â ÓHçrHŽÈäòÑC@¸Ÿ)ÜÏ wü—Ã…/ÁíQWT±ºì'Îz þó§2«^ÃÀ$ÎËöiMé
~þ¶­r‘´Í\@BI¤È·7B_Ðì¸ðÊ0›è2åz/3›éÝ¬3;¶YúÌŽmšwf3öÜ×ÌfôfŸÙ	ÓgvBã\3;d ïuf‡lùc˜Ù)$;³Mkéð†¯a1mÚ N_.Ã‚–-ca­º!—¨ôï-qÞæã>úÝ÷„ó&ú!ðø›Ja ÃÎròÆ²EÌM_/¦¬	ÓC‰Ñ\Ža4r²ÖÊÐµ²`LÇZæBó6š«ÜhêYÐr£idA3ÌˆF_ æXÚ#ššÖˆÙV…Y{¥,áò.SQÆ¯ó®SQÆ-s.­o¢	!ZŸM]½áñB[Ÿ»Æ(µÏˆ ã*ë3u0XµŠ¢{™äª­ÝÏŒë¤ûíi²¿µv_s,bî£³©”{ÞØ…ÄýöòÁ…7a)p¿=ýÂ›â§ËÎfÝŒµÙùèXôÃ]xƒ˜Sg³ÁÜTågpÓÛ·ý³BCw:¬Áõdš²¯¥†"/úSB^ëzüÙ÷©+ª-”ŽSCÒs€ábm÷–À@Þ†b«*P`³ixAvlÜÕQa÷±]8f‹Çwy—9ìj\ØIŒ¥€«&Š[ÑÍ ò¦CstMÆ!“ìÑ^øá­F|]=æœÀ£ªÂÃŽ
€ŠñÒN—^3Œ:§GŒãøó5ì™ÍÉ@Y†ˆG÷,éþŠ¹_.–N¡Y¿Ÿü¾¨e_ønrIg0~´7;ÝN¯¶q?4;ÝÖy{/þˆ£¶G='q(\Ò;@S%z/‡DïÙ‚´Úƒf„WN(›”“1S&Q™DFC—S~mÓ»ËVƒÕ* rGC"Äóú…[¯ºð9g×{¯'Š¹Óú+h¸^ùCf{¾‡Õ¾¥r‡^lUû=LŒ:?‡vÏ„ˆÊZ¬n—í–Zf­o¥â-Én5ìÔ¹-±ª–Ï¦ÍS1¤(ù4Åž¾¦ïí5üZxö˜ªÏM6Óª	Z?¯ ïÙiþÜà¤'[T\aãÉ°l)ÔÇ.Ç­”@ùn•áVZ9¨¨9jìîhúv¼5â¬ÝÁéEþËæ¶ÌOV'û–xétq¦á%ÝhYDåSÂÜÐKXj¶°ÚKŸë¦–V+õõ£”eŠA#¾¨¤®Uh*›sQo5‹ÙbÍÛH÷/¦«‰;øžõ"g)†óó·ÎYJHÁG[°úõà[`˜Í®ÜÉõdé²"C!4Gã¿¼ÅL¤Ž;]ú¥}/nK÷D’.±PK8ëhÆ`‡$`@bp4ºgñàmqƒI"Ÿ.§ƒÙbaÆcÉ§€ˆAr²
¼ab/,Œ HWot»"´PT“Í‚ ÂíCÌÙ”Ø°ÉÑ=pÛ—gîE×m4»õŽÁÓu¢”<’…A°ðçÂ©“óYÓÿ”ŠŒ-„Wœäÿÿ¼p‡#ÝÛ?xHo_U&_ßJ1Þ£³QšY4£-ôX…Y(²ÍY(ž8åY(ƒö¼f™Õg¡ˆŒ*´Pq:4æ?¢
Cý®•Á“$žšþâTfWºšj ½£‹Tƒ¶òãÃpÓuöýzë9ë?ÒYWª[’õÚÿI^ûaäë×ýR)Ù¡õÊAåÿýÐÖpZÀÆOP	Å9³+dÛØèÅôÎ9õØ˜Ú€ žQˆ‡î˜|þ˜¤Ã‡tŒâhô”¬…ñþÝ%ƒŒfLÔøNÈD¼Ñ‰~—`xrˆxØ™ðÅÍm.ý)æHS&ø·õ¼ùËHýë©ÑY%Ô\%/ŠX^.U¼%A;¬YËUÏn¿ý¶ô~jÛ°ç+dy&gÓ®Tî¾øîíÂ½ñ%SôÆ3S	)JcÊQ µi\-h$Q±¶»¸6}ò?8õoê/¨@“|œRå‚,Ã†å¸N‰ŽHÜÏˆñ;!?6:ýÛr
ÛÞ¼qªG!Ï†.³ˆÜãq1Vrp¤KÂP`Ø
¶ûŠYQC|³ÑÒiÖëôîD|Ö8½Á€íL1’Å
Ô<YÎð?oI/w©Ó¾ÃÎJÇ¸¿'0¢þ‚=­ð4ÅM×0 Ò9Ã‹=r6„fìß‚¥7¡Ž-«oâ\1c5ì²x$Å„•×Y–Î:"tAÑ4P× »8gý»4D6ÝDä v'ý»²jß¬×@í‡}ØŽ7‚TéT!Î"Ë
SsÉU!ïO\8¸J¢oœ¼¯0E=åRP&±êÉZA%÷—ß‚H´ËaaHézŽ.'a0t½.8c;Ífyè\›nçèt2†H·3¢ÞDÂ9…Ùr9&®^Rÿå¦®¤–œ` 0æ¢
\6F/[¼hÓ£Þò¸¢G›ló¬ôÑÄ¢Åi¤Ö”ßDætoVËáìvšÔ»ŒÊÐÐÝ€A7šnjNˆgmQ-5Áìp‹ƒ>:ú`{n::çœ'¬Ëãýö5ëŠ¼ö÷¾±hÄÿÎÿtfŸ¹îYà£ß˜N<uÌsO§|‡Þ’š??I‡æ„*5^q¦sìl4{ìéÛMG~sÛÒ;O‡né´oFÎU'¸åY±Æ{ëIh£y:Þ?=ÕO—„XÇ<®g;7jƒ…ùÕ©X4wÛ(Êk;ÏéI–É>õZª Î›.ÐSÎ<’÷ÑÏ4ºP7Ùvî¥{Ïkõ9Ýƒ^CÝÇºÏ–ÎqŠLsˆÓßè'g¸ÉýM…ë{¡ì\77½7Qïî
Kðg‹/£ò‹¯†æ°µ^Ÿ¶Ú
çò	 ÃÒÄA&OàÃÐtÑïÊðÕ+~¿äÖ¢Kÿ¨9[·3â·‘'Õmùûžòû>ýtÏ!Tñ‡¯ØÕš„âúÑ'4yš‘´ófä{ã¡Kú÷çÝUøE‹ý[qÑàVù™øš<§ƒø÷S³kÃ¡ŸÈ}wÕ£!:›Zpw»€ñøià@!Å`Þx;þðøé_Àˆ"‹ÛôÈ¦ûîôümíÔmw[²Šè‹÷-iyD~¦B9„Z*ü‡¢š2*®:Œcçé>[É>}ÊW^áõæ†àŠDI™£OFGT€•Ê‰öC«°È‚$×3âKù´Î*ºË<þ*yàªùN ~JN°œ~1a?ªGf~T‘bJ¥|½¯}½Ÿòõ¡Æë[¯OÞWBôÇÄkâð3†Wˆj$n¦öwÿëµò·Å€<ÙU’š¥œðr/éå~¡ã·ŸS’§pæÂ…ÿÐ]Òø3f~BI>ÈÇ‰ÁB[DZÉY„äÙ£âÅa>^Ày³¡KõËxFÖìä¿ïÂDLâÅÎîþHF×’9Á¾Ð*ÇsŠ®ììV
eÍQ!¬¹™Kl6bbËž‡”ß
áÆ2\@ø§œ4/)/¸óÇò2É
ß‘}¼¿gþzOçžyÁdÁ=bµž>Ýv¨ 3Ø1éÒêËéüÊÉßóIÕÂ[.¾¹´f¾ÇêFãÙ­¢–J©ªåãÅ|<vaGþ[§#¦é§äÅÛ|¼Ð6‰H&^Ä›™-òjwdÇk£Ä‚3E2¦ž1h…~FÆ<¡O‡³©‡klñöXK?æ×hœ · ôˆ(›a$Æ³ @ U!É‹¸îçý¨ø„mb‹Œ_¤¨‘)NiFÊêd‡	!s“¯·y !µ{‘CÑü‹ ø‘Ü¬b©=Ô*ÿÖåyâ‡ó«·4gÊ¶[ûyº5éß‚ü0òþ×p	Î­{q#3Æ6Òe?%èQüdKCø#'_ÆxIjgÃ”¢™†ÿ#y—1¾’Ú·øÀK!\ÎVWc/™déO¡ÉÊ\%tS´ˆÆcJVõçÇÆx²ö’î™•KZwüM÷‘¡ôÆ
g¤Ï¦*geeG;`I\-ø”Ú“¤¨TÑƒ•„ëGÚ»ŒA¬ôUœ!ºUøJÑ€ãGò0cð+µ†¨Ø=8,9¼„2Ke§!–vì4`¹Wvê6G´åŽ³9,ÎVPrÑ‹xÝ°’p6–¼ †Ù÷J‰§Š’hƒÇ`SŽ¾žú#ï–íˆ«â†,»NÉ¦ÞÈzÌaÌÀ‚S`YF!¦kÏ;:hM”ÙÔy?[-ÙæE=H.‰€‡ïò¯Y'ã~òR°‚¼íÄÞÒZ=µÉ|õ#±â¹sÒ‡¸õÆÚØ¡\d1Bx!
z‹¾!`sŽ“y –´{³H¦ÊÃ.¾z&q[sr©‹äSÖ…h7ŽÊ€pfë€ö;Cßð)Z¸P©˜Q„}J \È”HÃ©?ýât Rcv;%|FhÉK‘È/Ä_‚b “i©½þ4|ŒÌª N‰«•d ;ù ˜TPÓFIP«©õÕb™¸=o‚W2€t¦(¸»$ÀÃÕûwXœv1$öHAžÃ LúwX½@™P)&péÃEj"Å"pe„‡Äh¯WÒ.ƒNn~…ŠKkYcâDPÈÒ4#Ð8bðpÚ‡ }Ü]
*ÐÓ¾EaiëÏû¼Pü=!ny£½a>Ü˜(WŒ{ƒ`b§œ¢(¶ox`ÄØ7+Œq±H1ü‡3túÀ£—²¢PëëÖH„X{óyVðHg#çâEÓ©#êN'Núþ4œùšyÈç¾;'úa–0Øå¤Ì~æq›Ž»ÆøÛù÷¨ÓYùãqGÂ,Ýn{*to<­Áå¶Ç%=ñT<!ÇÚG¼£›ŠÓàÊ¦ú±ô²ã§¸ÒÇýb<ì8„ÉŽs¹‰øÓé²cv”íqšýçT¼	^²=îˆóœŠÖìÛcŒu•S1'{Âö¤;È©¤Ä: ´F²{œ®Jâ½àT"Îq¾ˆ«›^û6ÆŽÃ`vs³œˆ÷kafÌNm&3—èëÚXºD—ÖžÅÓÍìÂ¦‹JÈ³•“ëša6H6³«šz°Y]S{IkªPÄ:¤¶'OüÔ8äéè}R½ÆÛ*'Ÿ_–ç^ùSÜ»uôÇËosoÛ¡9å—àÖ¿öÖ_nœR´EùÉñ{ÄF–*eH<%.ð`þ­$!@MÌJåŠ^¨~EFüË+Ö šÐ z¥žÃÔšíÅ7«VD3Õ~B›jL›ƒØ6UÞŸm‡	mª1mŽâÛTãðüFÚpæ˜[z5ôFýÕx‡­ÕþP;m5øÅòñ…€nA Ü¢Zgôž2¾)R…9ÄÛŽû™«‰K$á{Á¶C³|«`éB¡TúçW¼'	6U·Ë;ó…÷ÕŸ­‚òãïüŽygêÝê"âýQ\Hïà¬‡»ULJ ÉÇ³ñÐ–MBÙ·Öðªm;žòo¼5]Çy¶¹Ã~6_E*õrX¶Z-ó3ÓÀˆ•OüB)8Úì¾köÜ“?ÝZ½ç¾ou{ç¸õ=¼aªÕ—ž>ñ“ÛþBh8ÏyOyŽ›8L &ÆUŽ©~I Ÿ5;¦[¹#ÒzèüóŸ’×AÝvã?Ý¹‚]ühK=íj@ú7)ø½íÝÆ†/è']Á†ƒAßÞÜO&Ç^ÖJ+´%ú½;žÁ7ü2Q²È!ânÂ†#Éþ£þ$?r¿óGâÇ¦ìJš˜jú¹O¦öøÝ¶?7SŸPÝÅC1UDÏ¸ƒ=g+ôgxèÌB2€2NaœÏ3è¬öw¼èOg·ÙîuZÍ.Ÿ—Šä“.®	›/¶œ‘?:c"ÁòÅJ•“³õ¾Ý»¬*Yåæ¨^òŸWÓÿÍ©8Ç¤i4rWž‰;oð?ýO»ÊkNGÙyƒôãßIp>›áð¾D¹ÿ™Ò*lÛÞÔLÿùÎ¸n”Âh²0‡CÏu¨(–C2ŠuCËñ;P¡¯¨µKø býðÛ—Tjác0ô.^uýYâð.ÚU‹jé“2¡ÆÞ´”._ú*`‰ä8U	N9ïÀÍ|TÃ8˜¹—Ü·ò“¦›„ˆ6ƒX—m¥[RerÁÇT3ÎçCÈ 0Uœè—0á‰”ý—m>­ŸVöè?ÐSòe¹¤.âìz).R/¿Ø?ªTX)ˆ
o€OÞ‹£J9t˜ ¸qHå¼a¬Ó¸ÎxÎÌ¼?*Y¹Wq#'ja
ª@{Ó¬h5óÉyæ¬3÷*'%çE	†i‹H,áìÓ½ƒ²éx»¬þ‡$D~†0p„^­3>æÿÆê‰&a»x¬ô³H?x/tm¤µ6ßa©Ùq[CJÎÌIó\*Óm™Ôª\l{ìô.ïéKÒQ»ÎÄqu§xyKÃ ±42ÑŠ°S˜a"4~¤~½)ÍDv³³@§¯6®”5›÷ƒ`3dù;Ø…pþoyYÇæ1äz‡ø-!ÒµÂtWÚAám½±pÙ">ÛwL¢¥½É³ Ž¬ÖÂàð:ÍYcµfX¬éë_s…é|‹µ”µša¡zjø=f­–ºNcKš|k4Ö˜®ÏœçNàÿ¯7¥4º.Ê?éZŽÎzX6qÖbøè<ð£Ó<¯ªMâ[bi³Üúk½µÆz«ð…–vfíÕU<Äµ—Tû{Â²GxRHQ$7êFDüˆ|k›ˆ¯D†<ð³é0Ð×6–K›$xrm£Á\¤pœ“™ÃÊ5ã_È“´s!sy?ÆuÌâ;þ§Ñè->¤»˜e³ó×ÝêJ¸ãvÁ0}	vÁö÷âvÆlŒeŠ©´6”éhá/x”/wèl÷ùRoÍ¿÷×6Å_Û?ë6ÅÏ¹e Fÿ1ì¤æá¨ˆSØí!dÞDøk' q'Àæ²\-2¤¤µÍÇrwàa£Ñ4Ä¿&ã7BAÿ‡å©™xJƒHþç¢±ÿïv
D@*	¹Åí Xxò$£b#²–³1Ó0 um—~Y¬±†y6~Ð~€kh8—H‹	F‘»6ÄÐ˜ò&”Ñ—1fEºîÚÚéê¼›	t… ˜S™j	‰·¼ca±rø+pžauñÈçÿ*€ÃÎìîÆÎèãçj?¹/ý_&¦]€‡¾†§µvhü_ÏÅ*Ð·úIœªŸÊ›ú·p£lGaÀ®çyôî–ì,ÿ`<[Á]Ç×ÀNgD#÷/-%Ì¿ZAé°éÐ»ãa}qCzˆeá‘¾û¯Xû-p¢æË¡øÁÃÊ%ù˜ÕÒt&xJ±D½2ú´ìl)ñ‚³Z§çÖOÏ/n­×ë¸§ÍvE23bœ–CorÒìtÎ;Î1@!ÿRp/B€åÍÈ@bIáùwJ/¨fÅÈœp^€£Ä{ç‘ôçTîêŠ 	Î˜zÝ!ðzÕ_\þóiÚ…ß]èÖÆkîsÂ#´
»£!Ì×Àpøkìá/-Òí7Úñûi@¨AÍgð¼BÿæðB„Æ§Ý·}Þn²—¾ürÑ÷š>™„ø Æü)ƒÏ´‚¬w[@->Ÿ-7t ÄÝÑzdEúáì>drÀ^ÍVKŽ§Ñ<©]žöÜÖy½wêöZgÍóË%§'DD<úþ
«Ê‘P‡¦ôùÎe? …åÀ1?èÞÂ}sÞ]¶DV–ƒâµ£Ïv1¸XqáCèÀ»Þ{Õ‡ÄÙ,fÖ5áq³_^;[ÏX÷>vëµs÷CÕ=½xGV"þ§òUy)|9ý2…cåH¡?uˆ<Ššvª(—âp
NFƒOÛ¼›Óë¨î±CÃÀŽ¦ÿÓñÏrÉEô
Õ‡˜ñùSYYDÛü÷T'X«UÌ‰+ž¼¸aI§“«s&l;lÅ#<ß¥jÞb×†0\²ð!hLÔÐF}sëw§XÍî"Àmµ±Y9Mo¿ÿÓí4? â¹¨½kþ»¨m¥ÛçõóFó'UØ†áû9õ5íúQ’Ò–r­jmÖÅ7ì5{•Se¿ÿÓéå,½¥î~Åmä@ºzså~ÕwN"ƒt?
œå¿”Óy(ŸFa$;4ºx
³_’ô3§À¬‰éSj±÷ýÅÓ£U‘oÕ/ßgWdxû´*¤Ç¬0°ƒ!ù<ÄµTë¶êzûd ýPû‹ú[ç¬?]AE§Õâ³¡—d~5p'P£S;3AJ4„bKaHX%+$,††tqF˜SÍk>ñU3°½\Àö"ÀÎ¡:i>™Ï¦dmI‰ÙÀ3P¶g,²}{`û©Àì¤;´v˜
ìÈØQ*°ßìý–
ì¥=°—©À~·ö;¦Íqª®DÃ[öý1±…­éh°˜	ûÕ#ÅìËé=nEt}@þ7ú`îù–ŽNÈoe5®ÃQ}«	éÅÙü[‘ |ï‡ÆùàªQ­ß¨ü!-Æý‰v¥˜Á¦ÆèžÆMVqtîÝ#{ÅÐ©Ï{QFE1T5Ì÷CháÝ¿'B÷‹&ôàž=(šÐÃ{"ô°hBî‰Ð£¢	ýížý­hB_Þ¡/‹&ô÷{"ô÷bízŸ¬™Û¸Óëh7 ÄSº¿§PŠV³:œgÎ/ä×§ÎË²‘Ô^SÖ¥ÉZñs±]@Ó?Tš“ýož/ò*nà \³¡ZeA.œ<»;:¿ íþ-QÅvµ£ˆä¼üTŽÕ´iWù¤•\§üˆ=ð¤hL÷‚¯–I:õ„ûÛøÛ¼„;«òM_)	±!äPN:àpˆ'1²“ÎñIô¤Ã5€Ò?éÍ¡ô@/bD!Kà†€‘E (xB )-p”ø^:ðü”ï§ßÏü øAnà‡éÀs?J~”øoéÀËüe:ð—¹ÿž\®Ôƒ[e¡ðñ`çAðk)OÚ'›•»¨)Å{Ø­-"f1cš£%3§6)S±¡9B³èÖcà
žeç
o™+Ñ(àccÔeçk˜‘hãcãæ˜0¬e–		l>6vðÐcvvð–Ø¡>6vˆgŽ¹Â›f™-†pícdÉ^~–ìåaÉÞãfI^É,±áçGÇ‘œ’Y<bãÜŽ#û99²Ÿ›#ûœ#99r›#œ#‡99r˜›#‡œ#G99r”›#Gœ#¿åäÈo¹9òÛ#çÈËœy™›#/9G~ÏÉ‘ßssä÷58ò2GL<Ê¸{L¡¯™8LólSVÕ£ì˜öìGBÛ§Šp?=äÞ3âÌ”'îb7‹ƒÄ«H9÷l¸,¸[af.'m2f¸äŒ5œä‹&ÓÓ"“~ðÅœn,àÎ•ögäHèc‘}{š€‚ŸåïÖkp¤Öón·WëáÆPªTúnŽÈNæçÑ•ýV8;æÔ¡NmI˜µZzJ-ièæ[àˆÔŸyC¿ï\Nýe€w .½©Ó;­;¥·ßàŽ?qªä	­–SÝ{é.ABØà)‡'Tbhz„-;oä£ùduËÎ–ZÓ½_b‚01oûCzW!r^¹ØÒ)µQ`üÿõ†e§Ôš.‘ ¹#¬Lø-Qß’Œ|"W«éÕÀž„Nÿ–á†Ýè¤ë¾µé›N‚óÌ©Ü©5*X¾I£ëïç¼]”h¯oœ Î†$R±ß-ÂÝ¿œf‹™Õý«1»ì³	ç™
C¹"ÀgÌ\¬ñƒWÊÜê6œætè,gøF $à±ýÀ)Õé#” Ôó^YËn°¡„xÅ2ÌAˆH e¯Y(=«(=ß‚¥7qlðô©÷zî¬‚&©#o„Oç«P’ˆCç"&1àÏ¢gþÔŸ¬& /‹èÔdºz‘É‡»W(î»,¸Y¿»Eõ;s¯‹Â|g¹F”x/aîÍŒ¹ ‘î5Œtôêõû±vó‘fiäÒzjoäf¾	þ~ØàEØÅ{Lð’˜`o/ê-¨x#mt±æy>`ò©V5êœwŸ:C`ZÈdQÇÃV¿ÏGW«°Ýð+âk~),aqýŽ_§iý FKqé²ô$o8óp­@ ÿ5„]o	9DL¼éòE¯Ó:ƒäŒI:0KcLœU²¹më`'9ÊaôfKXmóÞÎåÒ'Ó‹Þß^‚¥SeZ%ë¾n³¬úý¹a9]…)Ðù„`ÉìdÖ'}"îÑ "Èoûƒ/×2S†øëÎÅÂâ:ïú«k¯ôô©	a²û~5¿Ž¸,”Éÿ÷‘wg£¥Ó¬×£³4m	‘,Ü^f'Z!
½úŽG–ðÁMaŠc1
(IßÃ«)æ>Ð’.0/éb‰¸UDXY¼épµèOÉDlK7_•è@Á
Õû)q¥¡xÃ¦£œ–ÉëqÆB©2R|ú€E2HÔãGþ»˜-—c‚çõ* =ç#Lµ9‘¹%ûx)?ö¾­¨ê7ó_.#sœËùå”ˆÖõâº/Î‹X·ú³¨xSdÆ
N2>X¼‹EÙ|²Zd2¦bñÖéÙj	ôA³ÖÚ÷sfkú…ø¶¿§ðMÖÙKÖËYdŒÌdüÙiõš÷FÇ­5º.˜Œ¥&EàØúÓ/Dt–‹>Yæ‘9R˜[7^DÐâe{»5f.ñ+oúÓk¯035›@ƒ¤oá„1ºso Ü?ivùÿgV
“þçrÆþ4c‹ù2co±éþÔÚ+	\¨àÎü¶™Ò;EÅät¡jÐ:<ZŽWAD„ëïœóÛ)ÅÎÍÀZódp=‹`‰ZÃ=Ï¿šÀËC¥÷ÞÀægœÄa)c5¢'àÕÎŽv@Š‡J!äú£¿Sý¤Ã¶"Ç¥2í±„Î	…vXŠÜYI8@”ÿ¬1„|ÿjÎ,¬;ë®ÀÂºW`[Ýåx°IwÏ2ÎÛeÂÖ™=î î 7G|Õº+²Ôv¯p½Ê¶ÌÀ]æH×Úò°¹!LÂ¢»™¸U¹Î^‡Aw³…»`» ´ho„«\+u+„`%¼ÀÒnA6”Ö64‰˜¾ëíy*9yö5lÙ~Æ:ø†ð­¦…tq•Š’#paˆ›á.l[€¼Ýù€ÕS¦5m·-lzHœPt^!Z9ç‘f¼·Å»,
¯c[aîßÖã»Œx‹êñ]¦÷¿^Õc±Ya‹· +[é“hN7\,AÈŠ±V|ËÂ¦ïÖ3W‰»é<¡œ/š#^ŽD(Xkm`XàÀQ•67—ò—;rKÞ`&óo`ÞXë}±aÓ·€mtðì³¼»ÙûD\–^)˜çn*™ÜåÂŸà21KŸx8H/ÉÇ%ÄJÜ)(êƒçÝHç#ë¿Ï3Ü¹Œ›6î>ßœ K:º/á^Ã¾„õÐ)›V"9‘I=Ði–ÇFXoCØƒö‚îJ(ÄäÛ°[]1ß'JAË« ëòJ£aÍõUò¶ƒÕ„öøŽ„ëKeŠeÝJXK(Ô)(7\ºaw‹À^»¬øÖëÏòïä.àLÐ´[¶=Âx„°ÊÙ‚–Ìq;\·Ä:zy‘ÝfD†ö*'®¥®OC¤—ÌmÕÏ¥ÚdøÞj€}—ÞoáBâUa`?n%ˆÅ€ÀƒÁÊ*áÊ·Êüe|½übS‰oç‰ñ;÷à·‡Ï£û6¹ø4>{Eþpƒ€èÿ¹7 §ps[0¶\ W}Ã 7·QòŠP0£åõÞc"ÑrpíÎøÞÎ‡Uæ9/w#Òñaû>™m_ùb"û¦N4<åA'YHà"aa ¯cŽ§Ä3IÝ¦àGˆŽª¤Â`§V¬$Qp:D$þC5ÑýZQ7SúËå¶|Ì•ñå]R˜@*nb[#Âu”l!‚AïÆÒ*öå9A‚nƒƒnƒsKm`¡;û£âp½`æâìòÏO±gDTtà¬«ÁÉ:°w .‡C×°N§KQ…·¢…ì•ÓOOQ¤o/Ûo;ŸÐKß4mC‰ÌYÒKŠB9vá` ¤ýÉ€“®î­ÿÝ,ý7ÐR ºÀ9¾ÃCÓ°7àJÑb:ÿ÷N=ŒO?ðBíàz˜ã.ïe§AŒ©dù­£+a·EÈÎ‹xò¼ˆÇú(h•Íz„²¬Ê-ñ8Š–`m& å›I…cmD¹K5òÜ[à¬/ììlH¡e÷A…×¸¸ü¤ƒâ™’ôL@ê•lÇ¨sÒ%dÓ‰xr’0Ïúw1ŠâàÙß/Q9ó§÷·mÂ+³{qYƒ)£Øîõš¡Q¬¯ˆÈO—*(ê
nÐÂ°Oïb¡Õ{Ý0ÌÕRõ†>‡™Âõ(gZDYÑÜh'¸Y-‡Ä­Õr­ÁhÕ»a|læ€ãÄôÿFÚº8yf}ÞøKÂ ¯?^Þ¨W6óúÅû¨:WÒ>7
Ó§—­óˆ†1](Lƒˆ˜FÈËWr÷W2w¿(¤€!"§0SKÍDåöù@çÅfA{,zM$Íf·Ç°„îìBvzñ!$Ï"OŒíåäYCÓš—¥¶­K}8éU‘|Õ–«ý'N,éŒ|ãì…3›‹˜	>N|o<T•.M
£ùáDO~#27#¿A…•†ª5tA‹B%öŒè µ žµ`ûŸcÀ&÷û¬……çatNZÁj7?Dx›O\˜…:åîôw
ËÈ~äðZL®qazš¨I’eê¤i¥J´Yç'ÔPO™0ì!˜×ük!ƒ…“¦N&Ç6.Àw`1|_‹ÿôà^Mm}óp½p€-o‹óõ¸“°ãŽ‘ªøÓÍÄŸhaí˜ÚähÂúáL…õãéƒŸ_X?ž	}(Î°~\!{\¼AMÞˆ‰4ØŒ©ƒ¸¯Cz7ãCE„,ðÇ†$ŠA¤ã·MÄ¸ˆJ¤ã‰VÄCçQ
qJŠ_¬¯Hïž)Ž±vØ"­!œÏOÇ°¬P|cíp†¥Qk‡5¬ìŠ9à±v€Ã7†>vÌÁõƒvn¯±pv»©óA‚¤c`qŽBÃv%ÕðÇæ¶	w„÷¯·¯³ì^¯Y#b[gq®ÔYäÖÆø‰]š„)¬bL±Ð†Ñ ‹mLÅÊP‡ƒ"Ö¡7$r±
´Xøh Æ&ìbmt•3ëD`â0VÔÅ„fòÓ¦†bî½Äèlìb4Ò"7áÍJâÜAÑyÚ¸rW¯˜ó0:ÄÞ7B­(Bxe¹#ØÕ<?u;o£ûµõ:YÍÓ`x¤}'ÊŠxNm2ÏôÏN-n“™Öñ&T²ó')R–“ô‹“(‹C•¿òr:
¹Ó¿U«g²qÌ%&åIªô´L‰KÚ8
†Ù‘}>XXH6OrLŒtàbÂdŸ!öë}ædŸ,˜"“(û´±ñUôé”}YUtbå˜JÅ$ð¥Ë1D*1Œ&KZêzä”~Á	‹ÆzÄPË!Y•W;óŽsi¶äßÖ”ð„ ºZFÄ`/g4Êˆ6êC®Þe$o,¼åj1uvªÔ·þrpã” - ÀXµÏ;gµÓcòµU¹nJ|(ßp]"¾¼b@ÿ_÷¼µU*@B8ëG%žÛD÷)Û7ÃëbŠ$Z06vï*À–‘`K~ênŸ-ÓTs™•O×r‰g&cÍD”qI÷™=Å§Cï+a ÷uÛÁÕð=Iˆº
 ­ÈÚÐõ§CïnÛ!6yÏ™òè†KV¼>!†nn°Q !ŸàOŸ½¢VžÙt
l°
–Û}ÄÐÙ¯½tau'{¾zÓál±q…n¼Á—~["]"¿á­ßêQ2phÑ-X-ç«%;*Y¢ÿ¡Ë^Cç§b%->“
Ï¡€B2Bà½¢à”3|PæŸô$`o;Ï”Þ>Ó»‹€Ë˜ø(d"úˆ,›n·}tPqÍn«qœôÒ­&¿ÞK~½oxý2	óËdÌ/’¨>´ziîÒar—»¤¼>0¾>Œ'ìð(‘0åµ‰0åµ‰°C•%lê(Â5ºuÙC>#@"A¼Å·ôL«ý¡vJÔ/»½ó³f‡@¤’ý§Á±c€9›uéÓ,;×­¦×E¤Ú<Äy€t„	Qp+wÕJå ìüóŸz#Ÿ½´ûìUv°K]-*X_RÚô¥‡3ÁeA	Îýµ6«8[ÊxÀI·~z~Ùpk½^ªl•Ë ½3ÊÏTeB±ˆ²º šq—£DþÒSšav2†R²UuŒÈ¶v—° ¦PAµ*|”i@d®$áØy™Hawœgš†g * "”$üè¸uÔ¬Ýw•Þ[Î;¶‹<a[éÙÖ|¯Ú% ìWq8øÏkŽwþÄY¯:>%xÄ»±;n7Ñþí¹…7bß5{†q<G$ˆ7VAµ¯Ü|¯*âï`#h€rÚ½pÛçí¦|ïkß/úü=ê?!½ƒ§Šåe¯´9‚¯w[Ðþj¶Œ Ã!›×Éò*¾]#ÇÀbØ¹SŽ¯Ñ<©]žöÜÖy½wêöZgÍóËžè‡¬ÆHˆ>}ú
@HðÀg{†cõJŠ0öÁdÎ,2™!àòlâÔƒ¦ÁÍì–‰)T#‚×T*i"e¼…?ú†ñm2Ãˆõ.c¬BÞk¨ƒ÷Gõˆüûü¹”h$gÐŸÑ»‹üOÎ/”+jÞÿTÞàß§MïËé—éìvJ)ñ§z°¸Üm È‰¯ôù•%äæÝœf ècG ”}üŒn—ó{ùYí¥IÏC@ÙóÏŸ$°ï±ý÷T§©6X®úcNQ14…¹oKÙ&!„\ynH7Z…ÂtTŒPTÍûbA{©JKõÙ£K<º4%‚®¸›ÉÒF\Nq÷›/KdHï(ëä
‚£ŽÄªèms‘¸œê²KUßƒÃGi\B\9¿¨Ÿ7šaÓ¢ÙÍŸÒ¶Dÿ_Ì²¤¨ cl"<õüœ§¨-MÈˆƒ2"‘i¸¾?¡ÿ“ ïKo¢6t­Aù”¢3¢"Fd™|gÇ~æ«ßÆNò@ÎÚ$iNf“,ÇŠ²$g“&K9‰Ö“ˆƒ¨1»^ÿW{?>Z ¾ÄEùý­öŠÓèÂ9YH³È¨“eåã¤,éLÎxÙ4ˆfœdÚ;Yªx$ªpâ˜è¢#–ÝöË½JýT‰Ù„‡²y·ôˆ†:]ˆ‡Ë*„FšI,ÈÛ«èÀ›örT	pž)6Öùjd7´âð!5ƒú¡š2®@=Ý•Žè1ÈCoÔ'N	Œ§¥)¥Ñ[‡ØÓy†W†tåhRJ&?}@þ¿!2î1|s'³)$x"ûŒ1~6³Ù;  µsÍåf<oÙ]ádÚa©ïK¡¦»-ën®ˆ;-adZl¹˜`áþ‹ˆÕ^­Z¸ðê ÀëÙ`îªò=-®³¾(¦W‹fºÖ+Îî,œÖ¬ÉcPsƒþÜÄáúúöX{P4kró0Vm¾&[WÓ`5ŸÏPä|áýO`äïaä³{`òaÑL6u-·pÖdûèŠ`˜× ¦ÉÓ¹·¡Å%\†ß†ÇëlzC{<Å¬ËdÑÎY$Í‚«²!²2ÒÌŠWÃC»Ý4s€|#©ìÍ:¬T]¼LÝÐŒ'Î‚™ 2ÓÔ2»CC]BâÍ°
ÜKõÒBuWL’Nž*··<zA§È*å¬Õ">ºuûƒ¥{ãÄYAß¡$S,(Ç Œ¨7%ë	/,ä‰l÷”ÿ)
K Ý:Xå²µ•£ÆÌó,Ú%Òy=ýKë¹èªš]‘®‡¢(”t°,lÒuúk¤ë¤çáh¹7é†å•’ƒi)	Y9áTžŸ1K‡,Q¿Ò=C¶6¯¡Ë§düÀVW®@Š¸jŠvQºbyŠri4?´êM·Õ>9WÂ‚GÂ »U×<±¦Î–’¾¸iEúwÍ'ª©Ø!ËT’,™$E%’„;’’N–Õ¤œ*ý[sbÕ^EÆŸsiI'l-c˜ñä­[¯¡P¼½<yà88;øF[eÛ±£†—×	’›§ƒþq¯ˆ<>`X…×NŠK^V¶\IûõÔ¡)$œ^³§+X¬"hRáÕåìÜvPGˆ›	Æ¸uBPô_ Yñ/Eð—"øÉAZ:æ»vjŽå»|‚X’>{Û(—sí¿m<î‰¥ïÕCÌƒÚ1ÂB-Ã-èˆ¸cl+Ùð¯ÈëúqÖNSÒýxqzÍ‡õ
á9YzPÕä×+«Ë'ú^Uòž®6«ÙV›Oèž!ühÇDX%¾$É¼ñç3®Désö•Ïþ|ñçî`
MØ#zçM°º’}Ë{âÞ!c·5ŽyÏš‹ï‚ùMt5]
ÿŒZ€ÎÇ„ ¨‚.¿qª‡–8Y¸wž¨¿ž¸ÿXÝ©~Š[jfTòµF#IÅ àCa=Í&ê•Xy¦©u©Î9U…;&èR}'+ïÕmÐÛã‡š â\õ†>«H«ñÎˆk‰'ÏC#½ZÏ½hvNˆ…ê5;díïž¶Nš´çì8¨”Ää„µs‡fþ0|JÃ%ä„g3ä`Ã×Ï_‹ï˜"34®/áÉ\væÒÎovÞóÁlèqÈ¦_ÔÞw¾ÛÀn@\±]ork'šÎe¨Pk<m/ÆÿÓœ?§Dºâè	zÊ.sÔóÓ2’¿sOmCÑƒjÚ;Öý±7½^Þ”!·EL ì’’Bæ‡k´˜MB;mßqîdµ2ûÓäö#KnÃÏ«Ú5ë„5¬¦ËNk½f»þ÷ì¼ýømqnObs’(lÉŠ7Â,¿ÓE%|ü4(=½+#O¨‚ÆÇJ	pÒmÜ…ØùR él¥øEºËª0à¢£èÊ€5«xE]uÀÄaï¼Ú“óËë‹>4;ÝÖyÛN}pÑe4:ŒFNƒ!ÓÊQ~®gDï©§ÆØ8ŽB{’t®'þPÖêÁ[Ø[~À'ëéžý¸µŠr´'÷¹žä4æÓ3‘ž‹ã3ßÍÄØéÉCNÇÓ©ÇyôtwU€XBú“ØUkrÂœ–-&l³²rÍ¸nÝ³¥„DBñq‚51§,eìGšT‹¬µ£Š¨ÜN³þøLª™´ŒU¢›S#‚ŸÂ˜&Ho&{jaPu&1“Z-;Ïž'óØ+3Ëd)û´`®¨0=âhDîN<)Ñé“Á¶1ÊdÖB§Îën½êÂ§ 4ïzïM¦šÓ½Zêêc´ÔjÇÿ2ÔÑôéâ¬shb”êdjæ6×	Öúà‡[ë¸è3¶õÚÅã3Ò&Â2šh„n Àó×‚×¹*kr­sÙQB_ÿÊûKŸ»ÇaV¬ÌêÁýšÕƒGkVþ2«æ3ÅUÓÜ(ÕîÇ²þxËštöåßÂ¼^¶»—ç^³AV*ÿ_÷ñÙÙD
3\#,Ýò&¡ûyL°I®¶ÃFFå2È
©¤»ÿ³òÞ.¸y$VùÐÊ*Þ¯U>|´Vùð/«œrà²8ó;SJõÃÂmôpê³ëg‰žû9qøLJ£r?gR>\²kHiT2HÉSƒE#ôÑ¸fÒì}Å}H’Èwa”k¦™œ„“£Ï;%:œ Ã}j90¹µZ#¦f‹¢‘3æG~X? ´?
/ú‹ëWR[ä¯Bf“	Ü"ºÅ~b¯æãÕ5±¿[ô¿¨Õ³i°dp†^0 4nv<8EøÕsBî
#¦˜cWm!}!1ØÝ|¥ƒ	z¯áº:ö;gŒšlK•ûÇê¶S=üqÔ^Ó{¢hÙúŒLtÐŠx˜Š@qÐ•‹4é_4(gäÁ6e—xD°ú ¼Æ„:<ÒF¦ù·ŠÿÖ¶Q§„a‡êÍn#6”åk¸)‚faÈcÍ½2Yµ ¢x¨ö¦‚ç>·E¦ªè-tãcõèµMGú*˜Ý¡,$f:ò¯QÖÃé³ ¹´¯šÍÇhòœð8ÉãYƒP¹v˜Q:£kVþpW§êò®Fðœ²ÅË,v#Bã8¬á®.ð|“¶Iª¼Íè;¿è¹µÎ»ni6_eF<¼lµ{¥MN%ÑáâçWÿ×mçéŠèƒ|)’ø¶˜“3…öl‡öŒƒúuÆÁhÇ·›çÔlŸà£c‡râŸT³rÐoÿÑk–6Iïw ÷;òò9ç×1fÛvdT¸ÓV·§€f2RGÀMp‚9ŠÀ‹2Oð‡ÌÞë)‡¥U9ÆwZi(ªÙn”Êl°èB;áõçÎæÞ´ôÝª4©¶e·íà€¾¶Fñ»hâÃÆ‚[Ì`ÐŸ–ø='xÜÊÀ9ÅVE¦®rÎ%®iÕÐ´joŒŽ5—:²)üÌ0,“ºR +EtylÃ©éR®b{—¨L·¿Xô¿•ƒ®é!¢›„EG€.ÉGbÝ] (àcù†	àÙÐ® ƒÒê€L*€Òe?™ã4÷¬ÖýOêb§é×2s˜®¡	0º`~¢Ôp×.Y0º»¶Æ‹à¬W4”l5— «š «šV?V-¬aB¦>~g÷í9%Å‚±º÷ÉbÍB°íwœ#òÂ'&5‹'V‚ÿ«çª/å‘r¶ÐZ>£=ê´>4q«F:¹Ð»²2åíç&‹Lç˜‘H_2DÀxby™g›Ç¼Åìe8žE$”%x°B¢Þ#]ôœù,|âþîªÅM7¾ð•^Ô”ÑHˆ^ÿ/¬ú‘+ŠŽNóÉá2­Õ‚^%÷E‚ç©ÔÝÛfnÂ±sßc¸[
1°&ˆüM|ÇâšÊbGa1’ªœ13ñµoÁ×BXVËÉ²Gª‰YMÈj"·ªÉÜªf‘BÕc+„…ÕBXØHœÓô9Ý¨$±P]´X8´™ÈEp«‘>GYø}2¼Zn	+i¼>wÇ³ ãVëjYÝóÁÖÔ´¦*ôk¬¾x—Ÿ;­)å"8ç9W™që¼¸å'[nn«qÌð’TkšÖ‹ñkÃ¬K½Ä…ÝZ‹´{\]ý¼K˜{shUfMY= {Ä"¸¬&q(àiY’XÜYà8&GD‹gd'_h31Â¯kµh²Æ…‚GqÃmY„ú·ÍŒL+™œÿäB|ÁäPPU­–¬Xµ7·î‚4zP£ñ¾¿ÞöpÝíWóÀ‘Gb3¤3/dGþ2™ŽtÓñþO·ÓüðÃlGÈZ(óÜl$þ2Oxn*Õ«ÕH˜‹P¹Îœõ:£jo,o¿MÊÙˆÔíîT,—èÈ•¸ò¼V’ÓÜX¿W©ý²†í3+þ”ÍE>ÇdYÍÂÛþèá,bƒNsqÑüØ !$ËÊÁr¶(b§Nn‹ßâ£– ’¾±§›O³	éÒµÂlíOw¾ãYAg+”w5õ—{Kø³ô¦|lc~ó-p'ÞÐ}à.Çƒôú‘ä‚rñ¼³– ò@±€\Àû{ŸÀ²:ç;b	ÌïþrþrlœV™ìÏÚÉCû	¬v-:¼8?>Ë0£³ðú(‡¥’)ù¾Ò‹è@*÷Ü9ÏÄ´çñ‹¨«bœô„Õ½—KuCI Ø~_–`÷AÞpÆÆû‰eT‚ÅÜ©O,uØ˜ÿ”2DYÝ?vÎ@aû	ò§: ¿Ôñ¾Pw0``,d ût-Lq*_HJÑß‘ñŽ`Ùy#Í'«[:ˆ)?;XvëaüõE¶8¦0ÌTfppøF4zl,Ðœ´w¶žkžÝÏ–’™Á×¼pCGMúÀJM"ƒzËÌkäÖkætSÄïfÔ}éœÓ;wøéÁîÞé0ãü*%ÉÿƒJ£Òm´›iTU¤Œ°z .AXG%t ÄÕiB?ªT~E¿ÙŠ	âHˆ<¬ÐàYáÆ÷–°Iñ1O‘ÈðÊg@Hg	«A'$(=Æñ+valœ®åØ Pˆ<ÕGHÈ®Ç¸hR½9…>‚¡*Ìƒ-°Â”ÆìÆ£Ý<aÃÄ‘½¿ŸÛ³ÿaŽûC'¦Ý×¦ÎþŽÊ™*ø%îD+|Ë±}Ê„ÿŒ	©¾_NÞ™.væG+Â<ÜÄ7ÔhùkÞÿ›Î{VçqÌýp¹±{œÿMœ­Kxú‹BÜ÷¡ Øx12«âŠJü¥þõÀÁcÒ¢Øª¢© ñ ÊÀx÷Á”Aâö¿4Â¿³F8|LáðA4‚z9G'rhýÁÔÂpF¾öú¸qä,ˆ¿¾„cºtP=Œ†êÁõÐ\œ÷ƒ`y³X¹ƒÉÐé'þ~ƒÁg‡ŒŸ‰‡ÚQcñÃ\â¯Ý«n/×O›µŽ{Qo‘_Ï;vnXk4ÞV÷ ð]ŠmÕ½|[?k8ü!ÓGn÷}ë¤WvðÂŸØæäÃðÙç`u5ñ!’Tp6”Fp;ŸÒe>â6>Ö÷ëjðxÇÈýpYŒLùC3Óè>ðÂVcù'†		ýUžýê+çÅ–óÖ_’_9¤ãÄÍ•ˆÈï+tëE¨óp¥G:B0ð#óÐõX6ž4k½ËNªñÀ¸ %4˜L·óàH E3³Ò§aÞæÔ9ãšN]a®˜‚"]Dý#|ÆWë@²¬Ul•i-„îáO¢ñ³Ì”PK:UFYY1e«5¼©’ˆ’è¯5Ð¢rŽAh¬¤Ý ” ¦6îoÎÃ1¡ bU¿vŠè¹NÑó$c¨æà[°ô&®7#ñž|³
¼…é9õßÅ«ù’,ƒú…ÌW°/ß”*w'ì§,rX«@>#æË[,Ùc ÄóWÞ®E\µ…G£ÌîGÑßàF¦ËnYÔ7yýPë„È=Ú{|MÖŸGvç[Q…ŒDˆ½GÑ={wÖVî|Ê{Õö^ze£nðt
8ÃÕdîÌ‰3âÁ5wTºy¯ÝæIVÜ— “×\kj›;äõ=·Öí6;¤û—gîE§Ùm´æ²‚zOÐ%’*\Žñnj}a³“üw1[.Ç°TËß}ª«}é½oB"ùoç¼×;åÂœ¡?=FhOšÔ·æùé‘ŠOíÄ%— V‰·< ç’Œe zcCâéÇjY—?q©%ï —§º¥ˆíc3ÃøhôÌƒÒEÓ%IÏAyØú©´wÿÑí5ÏrQ¯P–@?†1CêPCš£Fƒ¬ö/³ëázè’¹N³Ö=ogè¢á"íP‹¯÷‰çf8š{âï8L*Ñl‘oÊ ‰ü¾:)©eçð™%¬o1 }HÄax
ýéæE§E–”›OŸŠ¬ €Š¯˜“Õ´Pè‹?ç­ÌVšJå<{ò“b?-kDP&ú#Q¾•ÒÆ(%£C¸×Ä·Å=?Áá6ÏTŠ”ïSÉ‚D¥&ñVÏGø<uDÞºöé?¬h_[QÖ£çÓñ7…®tFó*&`ÅŸV^Þ½ ÿ1J”NpyÛQ_†{_1ÛcËŠÜDm°ÞKffàHr/¨Wf}*Šöy/š6ña¢¨,†ÙIëé*lÒ(•<
ûò´!ãÞj¿#²z¢w Ö|rÎG£0§ìµ3à™æFsÙ®}¨µNkoO›öø.§ý¯DåÂš6nx’›§’N½¥˜õí3- iÌ¼è2šB{"ÇÞ	÷E&kZ æ6íäO&ùVèyÈ$ôz¸Âã^'29_‡ Ëö¶Ïÿl¯C,²ø¨ÑOãÆ=nêÐ;V.t›„g˜"€µÎ½FU]ÅÔZ¦ ILŽÌa‹lüîÂ¿x¤‚FÙÌF*ô×©¸÷·í/~É]`dÁÚMAª³ìuYlv©xÄ–¤Íž¤ÚÐnW2¼-©Bà“é›lúy#ÉlÚ™êqIô¬iü[í“s1üí™I{±¥V¡	-£[·?Xºd‚,g‹oVõØŸ°ò\…Te×ñãôº\ý9y–µRû£,Õ®Å`é…¥Ï{Ú·û©ÜþP½ç¾ou{ç°ûH2F8Ÿãã›Vè^é#’§º»ðCÝ"cWã=Àõ
½Yª~Ùú>™õ¾Gç©£—›à¢üvqjÒÎ›éŠ¬­§ýÐó¯Ïž9©þAíÌYíïnûòLðˆxL½N«ÙÅŽG
ÏGÉä%“’±aùŽ
½ŠµB
•’³é¶À¤58œÑl5î†*q€ÆÚb£Ô¶ì!ñÊ[èÐá¢	B9ˆ;tR:­’H}—u
r$’´^½šµ¢ØÈÁ*XºþÐÆ>‚-äy/¬ó|ZíµÓVÃ­_’{Öìù,2d¶Ø§ìø1=Í^‰û “kHpsWîƒ2‡S‹é.¥¯3¸U~¦€.Ç¹ŸpÒ4iFð›Ój`Zí j!Òï¡Ù£‚'jŸÕ±Qé•CÄžÚ92„Š,¾Œ³–;£uª{Ã×Ú{'‡V5¡Ð–„l¡*ØÝêñ!½s2´²ÍV=ìÏŸÔeÒ3JçŸt'.ÑEò»è½Ì•Íí[Á}ôîEˆÆB=;ÑÉÐñÿ8?|æT?CÌ4õÆ}biA°„°ñb®Š
BTåàE0˜—?à«>uåU½g°+2fBQˆc-¿¸ÌB“óÙ§Ðd¨%fº¨ÔqƒÕ» Eèu5¤±âd·Ëù›¦ÔŽÅª<®…â,XøiQŸŒñpÛQ•Ä7E÷íz=´[Ã‡*Û}l_ÆQÄ'Â v¢…t–#wr³öŠN_}Œ§Xb°ü«œ^± SûÒú ùÜÈü¨Ë²J©óM—Cm\ÍfcgPyG^œÁ] ¼À;ÍyäW?Q®O¥ô{â–N–0§TK"´½¥·˜øSÏ¹½ñ	õÝ*Àÿ á!PQµ°7ºÎ84³Ö?â.×¬—ôÑë:hUêZ¯×1¹YEøYéWµò ¹`ªt4TÕÂý)2{ÿ¡3zcþp¡£¯™ÛV‚GÔÏÚ7Èó°ûµKl0<×|°(O¤¶;h¹£Ä Ígø˜ýÌá/‰þuaç¿Ýäo}åÛEßƒ¿d%³]Ý;x¦\ú/´!™w[@2}1[†@Œ½©Ö/Ó8³/g×È°Øø`éO<26O£yR»<í¹­ózïÔíµÎšç—=F9žÒ@Š.± h¾ƒ÷[z†#!¼5Ý½L¼¨W½©/ˆ•wòRwÐŸ©×ñB?>vëµs÷ôâóÜ‘×ðnÄL}µ)ó¨P&¼OqŒ:"–žpÃ°fæ©“-})]#kÉ²¥±€­HJ‚GÖq0É’L3¬ïO4[–ã$¡Áå2V)þÌ ÁùŠ9ÆÚ8”¦,3TÛå:<¨¸¯ãƒk•ùœ%ÊxŽf.œø‹	–¾œÃË€œâTN~¸tOîý8Ü½/+¶šø·ÈÊ…~¥Wn¢´üÄx.,NÕ†Î„±ýyK ÑCe…–ó^zcoB<÷o.Y‹.³ñØ[9‚Zz÷8™~ “æE“&êµsŽ¨bCÀlö8u">Aï¦À(ž#ûàÌ4@¢›b£ ò¦£'‘ªäÌÇýo¶¬žãq@
J¯¯^âYˆ.	YÝnÃ¸ dLLÊñ§8\—ÅC#œø]ÁeùHpŒ?J	qœÖÞ•6lqÿî¯Cã`oàûU^º‹M)	òæÞ_=Þ”¾Áô×PKJ©Ò2à-YV<di­ÿá“-v”¯Õ…$b—,—:n¯yŠ+@%‘.å»‡ÒãÄÅuû­3›Ž¿‘<>sûD‡9°ù.%EVÈ’J?ûCœ¡Wô¦;ü|g›b´5:’õÈr¬ÇÙjá¹·0Äßüoó8köˆQ%’Ø:o«E
´ÖÄC«òºãšg¶!-š¬ëRC:M@ðÞ°‰£®á2ôfÍî(ý©ú¯¿ã¿Ú½Ì|¨Ã$_?0É
¡Æ{†ßÐÆ‘ŒÚÐ¨ñ¤GÅŽf.Å¼Úà>Éº€©ý”p•xBUùïáñIÓéjƒMõ8µ…tAäš ™/f_}²íOˆmg‡,lvˆòX8;Aêå3Hôš‡üM™·ðûc4#¼r¦dL-`nY0å¿ÑÅ:ÑW—šßàÝÁr1vàÜ$u^‹¥;<Û¦e²V„³u> ©Ð5_·ÙiÕNÝö9Û æŸPìâ3\ž´:gÖˆÔã]OÚçÏ ‘40PXfã“ŒÖté¾áËP²,~¯˜M›1Ð2–›'Rµ‰R»*ëÞdËÓñ&³¯Ä;\†x näpC šŸÛÂpÏž9ŒÏìŠí__ÙÕEÊcç×ÿ®üŠ¡·Š,˜òþLƒ{³pG6ÂWJ>:±C£5-Ô¸E%.%fÒ¿#¢ÞŸ#²j—Æ,§,‰|ÝcŸzSC
L’ˆR:vºŸå¡ü,r•"P¤#æN–0žƒÃ3‚gŒé °`€ŽB)ù‹I#,‹ˆ”˜¸‘8¬#Ò©MPg<¯‘Ià7¼`9eßmÁò¦K€…Æ…˜žË<©µN‰…L
A²à£?*ýtüóŸÎ/¬C£t£¨<³á¢Ö©ƒÜì‡Ì›_iy2Ï šWÙfÛ-qD ìD‚™XH‹-í¶þ«)£˜ð%l³ÈïøD›ÐÓ½¨Õ›4M:÷aA„Lý¶ä‹ÐÒŒ«VqÊ+¡Ê'âBPEbd66¶8;_¯wåúqTÂûEãm÷²^ov-J|?\ÂIÚ.Š*›
ä›ä³„N2HÇÄ•^*g+°fY%«ô‘‡Ö´q;[ùéË-Ü‘y‹H„`SœÅÈ6¿åjv>BäÍ»¹7 G$ÛIÉ—¤àŸ*9L´nIb^0Ø±´©óöòä¤ÙYcòT`F„	Ê>¹ÄãCòX—¼æŠ¼íi&:jÊü?+2úóåÂ]–åè0pxÆµ²Âž&r13“ÒZøÜä;ÜCîKmJš¡[`µÚ«Éù¨Éãø´‚ƒ\ËÉEgü¹!óýoãÕ=2³•ÌeùCEâ:`sJ\jøXùštF¾%úFK!±Î43ŸãNd˜ÙêÀ0Oµº‰	˜àCù2Ø¿ù‹ “­ÎÕ·¥'OîEÅ	„¬¤®CnÂ¹ÿ‡Ûî[åg‘(—Y'ÒÎÇìH"d—@âct0ÑÃ*Ýáî*m™8r¶8SžlÄ&Ó8'-²¨O´QL`ÚçN)JÊ–öùùÉIr/Èç€Õ,^,«e@“Z c&¥Ì*ºìíb-
Æì6UMù†Œ™JeÐ*F þKa¹‡R˜g5«ÌÙßmˆt%ŽãI”ÀL»Pg¢˜–˜s'nìËÎ‹¸q Ÿ?ç\QçvÉÀÃ	Æé‹—«O°xYvžÓÍÕ¢Á“¯ªŸ^±¼_d_0 ûþ”æ‹”¶ÂJêùsj0‰Ä@]üö”Ü€#òÛl÷`ÛûÇESÞ˜ÀaU‘,¿Í=œF”ùdýñZ‹X¢m4•“ÞaN÷×åÒÝå¢>›Ìû¯T‚0ËV™£Úæëçd}‘‹àš°}L*I8¡Y·]»è¾?ï)¡Õ¬$4?4Y½¹ì$`[ÒtôgµöåI­Þ»ì@ñHq¦uï²ƒ±	î¡¼ç5@N´v&gcä-7ÜÝ Š$ÆÑ¸Ž'0­Ñê4ë°µ+5ætðŸd×ã¥úé–6ý¥+ý¨!”^¬ËAU”—;´ýÅ²5¼Kõ9zÞdcµ†	èÙ’¬ó"yéØ{-¡õˆ•·ñ,BØ˜b\T›•í¢U™sé]OÒíuÔá7º‘Že3ç¢ù#àSÛ~öPg#6#”ðu–€Ñ'KÙÁü[é™|aHœ™gñ&ü	™Uìªzð"ªì "AÇ.È'é1;o¨I<]7#§qsMƒˆódC›÷ÂÉï¿èy^*ô‹ë‚7¯„.¢cÀrO1D(¡µü`I]s…F“€ã8yì·¤7 ÉÛš^CÐˆß
Ö5Ðé~ÐY»DáÑ˜rçÛGÆÂOJ`ºdðQºe­¿Iv'Þ²ß 'Èa:ì&MÄ#%bUsµ^Â·‚»+\*uhÀ˜ÓÑÛ!þ¡²G!Ü…†7&žx8
'Ä¯ïÒ›;™ã1uþØ·qÇä•:<ö°[èà%¶;,1Žh¶Þ!õ/¶"k'©O‰/ä9.q›¡½¹-<]P£ý“[à»§ã;¾†s^kk(©gEÛ&£4žM¯aïÕ¿žzpl™aH©Î4LÀ"š9Ï>aK‹'êxMaíñÖ|ª¾åý|ÅÖ!x¢X›í¿°c!<Ó]{›ž='MhèÂ"–~¶?o7KŽÉ®pÔÙ&ÄöÖäÏà†Á=¾Š½híF­Ó`J81`•¦ëåMŒË(Àšê®,é±é‡^¹#ö.õð7gÙ:Áo¾ì1îmÒ³áÆ.—å9õ„a1y6 C8¿O üÑà‡„h½>³ß¼6sºW>SŽñðÈL®Gôæ±ýÃÕ¯*n#8Ô¼Š8Èh¨ÁçÑe@ý{Kù€óá•”ÅÐ3ÈÑØÖÏ…PBÞ—"J}lC²|'– š9B†øÔŸøKz9µ?mŽgp™G¹£È8$ÓÊ}²ó¡
Æ5^™-ý©ƒûè/dNJÂ€é©Z¨Æá]ˆeÅîBÐËÛŠò-¦™‚…¯Ô4&ó¾|ñOŒ	GÑu…±—|;ýÖ'bÉW!ãµŽ"¤ZyH~Lœ‡WOôóUô¤”šæ!–OrÚZc˜Ôqù¿´ä«û•œƒò=Óf1¦Å®&sÐï±Öš¦T!ýåÍ6³ÔWþô„yDD‡ñÏ”§Æ¸ÿÉ?â?[±9’ðù·4ý#ÉûÁòâË²“¡I$½$écà028!lÅ@˜¿Ø~¤|4SöÓbÙ:žÍ”ÐWõ¥ÏOïœ¿rNÞ	ˆÑ:xëú'¢I ‰K=£Ä±ãËbüP¹P³“ãÛô—g½lÏ7šÝ^«]ƒX(­£
Å½ê#$Ú¤b”UîB·óƒÜgý/„pž2ù(Ä}ˆr=èæyòøº>þpDw’¼ÄõúºMý|BÈ“%*¥í€ÆÎ¶£óRÝiSxª(wê7³«¤)µK˜!—JòçòÃ”™–ä_¢s	…[ˆµ»'<dô·˜vÇÉíxõƒúlÎèŽ#œæëyýÉ1.2¡´9’?%žÚŽs5ž¾È®p~RÛ)¡%XôÐ‘„>=ìC[ÁÇåÝË Žÿ¿¬T*>ñý¿xÞÜñ—œKpPV"¨ñÒ_|Û¥_Á´¾£ºžAi>»-ím;þë±}üõ¬Ñëþú©É•ßœÿp¾Ð¢Ha¢’,+šx›pS?C´ôÉ²X,§U…ÓÐPý-ôÁqèƒWÖëÑ¿}ú<íRè›§‘oþæT¡</™«˜¿’p¨Ýå‘r¢‚ió
Yºµ|€—1Ñ‚ÞÔOŽULBëÉžÉP„­ºSZS&0`(¼d°6]²lkÕ[°ixÖ<;ïüÃ0¿i­ºîò‰\ÐA¦58¡ÂÖ–Jþ–è"x¤tøp	š.Pº•‡É¸„œ^ðŒ½™%_=5%E)aPbò¶ãTËÊR"<¸¦ñd~»Õ*ÕœU¶ÕaxÎ<<Ï¡ |ÐõÜaqðÜ"®âÃN6ý(~qÃ²Öa Ã%ÕŒ=‘úçÂ_z½xC%Å+ÚvXHX²ÊdrÒ¹fÉ/…Œ§B5&y†›u}-À©9LNAÔ-‘~r.ðä<A"Ÿê;áñ•èq?˜2©äk|]óÅûfÈÓ‡ªŸ°.Y^`YMüÔø#vÀ _Ôzïá Á't°£Wî°ÈÉlŒ)9Ë›HÓxljS#Öø¦Ëþâ$ŽÖÔVA¶&õÉPkð<ÜwQzþÄkMG3½5{˜°®¡Ñ]ÛãÑ#GíÙÇÈ¡’äv#VH¢ã}õ6ý{¾$Ž?ìæ¤ÀžÜìy³c~-œg’GÎr7üE†ñÞR‚gðZÁ³M o<»n¯&M^]þ–ivá¯%Hí­égìz"HÌw_W§³ëð‡]¨ºˆé‡'€}¸Äùzœ'üj8Ó ô‹n‰ôÎ–äIèÃ`Ò_`Ž±#~}Á…ÔÆPVø–}r!DF$AÒR—qc
òÄxÅæyM¡kO	·•“HaU&óéÃoÊÊ¹¸°3·ÂH“ÒJQ`²òÐðmù0}UWÏ Ð¿Õ/žqu¤|ÄžÈ»âÏ4¢‹Ub~¼œÿê3œÙ–I¦rB‘EÄÒG·Dt©V’®qôÀU‚•—W!Ë1¦{4à³Ãê'¸a¼¼ˆÚWµ‹¼kr'¨Žq„(:™àBOò]vB˜9êÐ	 ¦È§8ˆ2½d™ÚZUtp@°²·âÿsÕ?h9)»ß¼>áŸøs2›B Uü=ì;áC­ÙÍl¥5ó§«¥§<¼ÁlJ1ÇRÏÙvôt$ûBŽ°AßìO¿Ñ“›X=ZXDíIÉµéd&MW‡eCvS¨ð»äáŠBJ8â)X Ä/¶ÿ'!¸ö|ÈDçKlÿ"ú0"”ËÿŸŠáf8©fSt<Ð•Œ‰ÖÈ,ªŒLE‘3€
ÃŠfºy¡þ)®ïÐïfv¿í6!LÌŒÔ‰ «0ê“«E´áàvÈéa~‹N†º¾‚FJ:DQ=]äèžý`x¹ÛÙâœÅVÎ¹h6@3|ÿH®Z±óT'ºãz¯öUì,Õ€ªú0eÛÊ~ˆÚk^é&ÔÖ†¬KÐlYŽÓ,Mˆ
rDåSJåþ¯;Þ¬–o	?ÉalcÆX¾Fg…L„7Nª•v	Ÿ¥
ŠÎ óœÀ	´É™,yœ Ì4EÉU£/£pè…NÚÐ¨ÇB§AÒhNƒØ±œúHVÉ`Nƒõ†’ÀLÈÇ1v€k‘C‘<
ÊTåuZ§T¹«Ö“÷ðßýmZ¢×Ê]s¿Œ³W_ß^ž½…cº'.RO__¹BžjËp X_èaÍ¹f~íÈ\xvYÃæ¼v€‚qUŽã¯´ Ež5/ËeEâ…˜\2,è{ÔÜ*‰ð(¸’o¦ÕnO’ìÕ‚ß\Äd»‹~Y›\³>" «´ÄaÅ%n:t±@O¶Ým5ÜÚé©.c.©­µT Ç‹•
u¤*B%E±üét!¦c~é‰{-,7þ¼Ö%€×£r5mú¨Çùä¶{:+z ù˜F9:ÊH¸ƒÐQ&/†ÞÎûúª0(CobqVSÿVžÒha½R\ôO9|¥œ¥0}J˜<ý’< ¶Vîzò)Ä•„½ð«•O¸ÞÄ½W-*+c´8	Xåwâ²/†ÿ0RÞäÔÏ‡Çl£4Æë ù‰~Ó×îÃ‡O"eö’n“‚Xw*©J.½ŽNE¯®uí®Ð
þ—Q¶„’ÁêLó–bE³Xk¨5òìÎÐX€'-¶yH&¯úXOƒll2:eûgÖÔ[jœt•£Ê¤Arõ›q18Ò?‘3°¬ø"x`ç„ŽŒøÚøï!þ{„ÿþ†ÿ¾ÄÇkøï[ü·^–µäFNõ•ØÕùÃ)	5rÂ÷±"
F{ú¥, Á£’êf˜’T_”ÙÉ%'øâÏçdqN¯úþôÚÃóQý rœü@ÖUìq>‰šÑð?í¾_%g.D/£ôÓ® òNˆóuú¶ævjíwôàx¤,AHÏˆržx¯eL5Õ’G´)3Fü{XN§IÂ&Ä»Óó·ÿíê%WU?x­(k>Æ ÂMq©ª+µ§ÉŠËV½ Å¨YWÕÝ„ºÆ–C•ö!¥]jŸÌj'4Œñé»ðs0‡¤á]­®yJf†ŒKÆ•SÉ¿ê>¬žLJÖWC{™ª¿cICOwù‘>ð°Lç[·ÌîUäì–¡+QlÑSÖá­hžøIZ'’ž³Ò¸«°×T@‚ß	ê¿âQÄ2—¦t1ãÀ"¤t—\¹HÝ§WÔ{¤Ã¦£Žº6çidòXlÜI‘œÒ¤Ÿ( Ôën€¡´éÉÓ ³d•d³x‰!@ÄýyÒp
,þW³sN¿Òª'ªCjT«.¶'„L¢A…êmy¸¦rD¥*+¸SE„âº½¶Û½he‡‚Î1Z=Gõ’XÞ&r5zM,É®ìžrv¦Î )Grë“kÊŠvN_¤)àÏzëÝl6$§&™‡îÍdý'Æy˜`w´µ—ð*KKç¹zœ8ï˜«;ÚqTN†>YmûÃYgVÒ»Ð"¤h·äYŒ9ñÞTn¹ÇQÕ¦JX›±5Ê†¸öMïlL¡³—¼A¦,šâ:˜êð%UÂ¾¥¤0ÆïIŽžÉ…Yc5™;=<Ì$¬ÁƒFÔœM‘Û¼¯7lKø…0ÊL*AY2Â¶`Ÿ¯{}z¯hB“™õjþšHXRÒ×Ø X0¾×5—Ðü{¯Í™j‘º!²âBèƒ²€pÎ†EÊ†)%æûýÝÔ °Åf~e'#fÈ APAùˆÚÁÿßÔ€ÕÏ2†£Ž¶þŒÞ«IEŒVâ•£VavÅÙÈ Š˜À—"ËÆ\ÀXhÁj0ð‚`´³ôÓM‹„bú‘¬ý{¼È®?Ç`@¸'ÚÍZV`†ß-§ïœÌ5¸Ï@~>üˆ"DT&”ú¿Êwþâ‹áÅº×Z1ÝùÒòúmÖ—W)WVÁU¼Óìú×äË¨º=(u×Q-v€pÛ6ÜDµ)Rƒ7ÅµTlÂ±_LDýŒ7Dñò"kwy9Tü'ió·Ðûýä èF€Ãêlé½¯b ¸Øâù2tc@Þ`ãDWÉü±VÌ´á,¿en;_ÊÅÞøJñ-è}æªPŸüè€L¦©w‹Ç†Õã=¯Š¹ü5±Z|Ò]°TL:Mý…Äk`µ&v7Àòm´=½ 6„*Æsfå(Ön¸&6u§<a(y,ÙU?÷ÌÙÝiTe¥þø‘e5þá?‘€’þ¢c4t&ùÓÑ,ùJ~'×ãá6h¬À›eaƒÜó[[_Ÿœ6<O´ËIäµgŒÛ¸ì?œ”:¦ªj4;WÒ‡Š¸WN‚s5›KGw±ºìq9ÄÆ¡Q‡Iù: ›ñ›Pw€(z€ŸÐæ¼{[¦§¡ñ	,§zòa^ÈEÃQ¿IÀ§/åªOÖ‹JªÃtÙj÷J›ð9¸JòþLq`ÿ‡]œ‰7Þxƒ/<6+½Ÿûñ˜¨,ó iôÅÿi›aË..ªxÖœÝIå¼>ÕweFOŠÍ6Úcçé¦sÑig¿I¤×R
}ñ×|àöDlåMn‘Ô›6Í%hâètý¡œê‘¦ÂêñvXo-„³*°óÎÞpÎSÀ~eÁ|¥¯ÄSÅh§(‘*wU¼XíåîÄRÅ`;þTÍ”«Ë¶F³P=Âl¾CñBóo.¨ÙVü¬û×YâÊZÉ_EebŸ@$*ún/áÝ~Â»›ø ®FÎ/¸’–.½W!‘™¹éî‘èãv7^%+ï"Z9¢{„fÖDMIîp4¦k9ü ‘Ô¯Ï#ú†x‰š¡•õfs>J¦‡PÈúÓòvä-¸¦O]øÞâÞMAÇƒMˆ¯á{á)!Ž$$¢Øa'ƒZØ¤n5¨`Àvœ›ùrÇù®¡UnŠßq^†¦,N‡Ýø˜‚>³èßÂ¯>Ôª”læPû‰6ÉÅE qn5ùw†/
)sÑŸÌÃÕŒv
zC¹þJ„:jšâ-“©ßÐ"áÞ·e„Ú€Ù!Ÿ
s›Ñ#ošo6K›€ï™—†ÁìÂ,NV7YÆÒO ”K@¨‡ ¥å×ïÏ»=¸áÖæÛz¯sjä—¬Ó	³ë´–ÎdEæÁ•GæIéý’Étyé”äQ¹rl€Õ
Y„†¢„8¼Zˆä†8]pÚŒŠM'¢pmËZZmm$æ (”C.%ûÊÁLb¬–à¶á¢ö$‡"7EÁ‚2‚rðÏÝ?;çíÓ8ÿ$¿Ö;ÍZëu.Ûõm§rtt$ò‘T8¢*u
s›#Î}’É@C‘§³²8.ëèw`+<Ä½fªªôØÇXGÔÞÐî„¬¦m.c½ÂAî€8èó{R
`ãGZß`#<×^'ÏÀ¨»ØTéJF“¾±#g+é–ã…«nJ>%üjøÜðÁšÅÂg]U	IÄ
"«8$ftÔvªVÂ=Rn¥™z8z-fjÂïañöiT*­Ž H¸"Ã‡vtõ Ë¸Ñxv›;Á<è/ambBì>%Ô"LS~CD¨îØ™~_qZ÷¼í¶ÆÐ†xñ£µ1îRü¬oúDÆ±Á'MØéù©ZP ZÑÎ¹ËÁ‡<ÐÙa]Ÿ3¸õ!‘±ÄÑ]Í>á‚¦°÷Ç¸¾`ˆé¹MtÊbBKÏS³¹ùÊ¡{VëôtxÆïÅ{¯?&VÌÐÉŸn÷ô<Š¡'õ¬aÕßCnƒ,ÀŽ™ÇÇÊ¥PýS œ4ë=‰‚j°ýÉ0pºBbÀr7G#o°’¡6šZõ¦ÛmžžmÜí¨ìÂö®79=/X&ÃÑ½¦c…ºžXT€wCG&]™Ö[Ý2˜á)Þ1•˜•8›—Z›tø]çüòâXµépµèOI‡ß-f«y2˜Z»v¬{ñy“Üô¢Ùé¶º=(XŠ÷J~_x‹À–Pô£ùþM·V·~þ¡Ù9ŽÐðƒhæoÉ :Ín³ó€†Ä‰,Ì½ÅW*ÚíX¿Íä«µ[½Ö5Có¯ÃM–ù]TE‡Ú@€€WŽ<…4˜ô<ä%=ÉV›õŠ¤E…SÍ
§j†³—ÎžÎ~V8ûf8Yá˜áf…sh†s”Î‘ÎË¬p^šáÔ²Â©™á¼Í
ç­N#«<7ÌòÜÈ*Ï³<7²ŽWÃ<^ß²ÂùÍ'ë¸7ÌãÞhf…Ó4Â9É:^'æñ:É:^'æñ:ÉªNÌúç$ë¼8©Q=ôFýÕx2uQ@—Ó/ÓÙ­j¾âšcVÄD9’Thv`R`ó”Ž‘'¦vBˆz•àp@1-õÃþ{îàŠžÑ$äóßx†ðpø<0(¢s²h)uù1¾†Å±iA ŒûÅ'	Î0ËÑ¥žiên•ö5°k
¿7S#‚'g°¹„­whk}ƒI…»-r/Oðïc‡bùçg²Lú'ìn>Ä–9BÃ q]ÆR„jõÄ¡>×¨z®®Ï¢{˜CE+ÙÇî(-Ø)Bü
Ì´Yú‚ÊÀ¯­NY¹ìõ^ÖªZ½?¥óO]¦>S&Ã3}6 L1}JâC¾pGõ¿Úû‡Xém·Ø¤åVËÎß ˆ!Þ¾köðÝÙ»3vA9²‰æ&†ÝÜ‘þí«HäµrWßsØjë¬?%jŠŽÏ7Y©ðÑpÆó@2è.£øB¨ZÁA¾ò†Û_¡æK\ '*Ñ¸ý&Ô§vØ=‘‘1S ˆ¦²Ò7@;
+™“k¸ÈDhKA10³¾'˜‡H..Î;=²’†Óƒ%Z»½üŒ7,³.aÀ‘+\-.7$£Ö@D°`hð3zMŽà¹¬¾Âpü‘¬É<ª:¶…å$Eo {û{/ÌW‚Ø7ôš™2½˜BìâDã@8;<&›á…*þ'yVË”‰4gÙèÑ,6ÓúÆ5¶ pXâG/uÛÉ½ÜvªGÛ,-Ù9Ø5³lðÔ]}&Cél¡fý‚_	Ïñ5­UÉ¾*‰£¡ëŒ‚Öí‰NêWk¹,âmÇväÀEß‰z"Q¢@ðžPTÜ(¨ò"Eš6ÃØžÒJãüóÂ¨:àÛW|H„ó	ÐšlêqPL[¤B!Â‚è-ßóå"j\%0+õFt¯ÐôJtb$p²²Á­F¡ž%ª¦2nÜ’s
Ëˆ—v]—“îú}K÷•ˆóJÄXdøúÛÎgééŠß¸ÍV*{Oñ Ûà?Š¸|ðEá(¢‘I»Ý`Z†2ÒþsøÕD¼â˜Â}¨l#ý¯~š’¬Î&Êó&¿³Æ\”U-\½\†°«ŠAá€^î…fhŠñÜ	«]M¯±ñ!©˜ñ•¨
0íP%‰®”Çâbsg‡m0Ÿ„ÉôãgöX@ø, HIÛi‘Ãµ’›²¤5'v›ãÜv4	â¼¸¼æÂh5Ä1¦“•«d?]M®¼…3\a.	ê6$DXVSïnNT!'ªÝ5õŸ$Ÿvƒü”Ô9Iã"`{‰Ûté>²¢¦¡(‹¥vÐói:ƒãrUdcØ¹×¾Å%ö¯è~1jsúGþá Ÿh{šaDO …GãÓv6±º¯¹d)â"õ(ªÞÃôîšûBóËõƒ±e§ý©ób,^Œg"¤#>>ó‚é¯K§?†UÄ7Ç»óIoùEÕÐû’Î>¢ !Cé
^)ý… ˆ|Yù­R)'¥*˜;Àà ©vÉ‚zÁ’Ž&.«!R(íŒˆgºL!5/ØÉÚ†'4Ç/2²lÃ6tçN³}~Ö<{·‡+FÒa!GA§Œ—!ÃÜ¯Ùh„ãŠŽæ£ûú®6Ú/¸„Š1'W@(…y¢LR}ª@]àðZóüF«0ÑÉF|0öú‹eR8š‘ÄõtÄO1¥­%7F¡qÎ!ÃúÊ<DybfVæŒæ>…©·Ë€ŠM€Šd€4RGÂ”·„Z0÷â&Ò9=è7±FÇy¥žV]à¶îÍpc%e^£~µ›l±L8%@¢–“¹iYF°7]lÔŠw2å ;Bår9öWOx6‘Žõ1Y½]â³V÷øºÏÁ	_>’çTço,;Ãi°É©qx‹7\Vâr”“çî‰˜»ýÁÿ¬ü…š|C¬&”±Y°j¿Ä_˜z4QO–IZÏÐ‰#%$á˜¢Y\DPýí²Ã^†Ú½€²h¨8ªârï'œªÙ"¢Lü,Ë¥bÎ.¡FªÇg¢^’J?,L·íÐq–zpŽã6ûÍÂŸóA—bzW´óâÑ)¯„ µI¤Hï9Ø’°,j0 ã1÷S&­.“FéÎâ [P¶Ö3<›Ñ°JÌÐ@o‡D,ÄÔ°çB§¼YA£áTãÊ˜§)ê#ÀKcMSØ~WKC›%¼j,%½kˆê/Œç`¾—Ü“Má™ø]Î˜ðGå?p?ì«€Ü¯û±°ðS	ŽnÛ-="‹þ-}@ú€ Wâ“-|¤VDl¬Çôtî³VàÖmssœv­ÝÀ\²°ðd*î8|eú‹…Nï´î”ÞÂåÀe~¶†üÈ• Z¨î½t—JÇØÃÇ4V){½ó¿èîr<(—wUäEaâ°^,f×‹þMÔ¤EãGÐnÂ¡Ëý½M±ú)~ˆÄ–Õ€lÝ|ó3"l.`ˆtk ó V¶·pi.Þ™^Ÿ­¦Ëu(s ¼‚Ûœ; pÆ¾ýý¼ó¢Sk5œŽÇÒ½zÿúš¨DÌD_$ê±`bz¸ðî’Âp=€ÆÛÜk:4%{éï
Í„×ÛãWˆ(ÄHWi§+
9í.=9²=•%ŽÜiÀÎ»™{+6ßØ¤WÄ§z¤"ª™‰t®3<¿–uÇ~²îø°oÔ 1.§>Q–0‹—#,÷Ü%:4UitÃ8‚‘J¡hßSÈåP;˜øH™#¢)èrÖ¶zT.Imþj‘+?¢ª$·	XOBÿþDù6eçÍ§zd˜ý8x¨:;œ§Æ’ØÐIA»Iµ˜€wú·BÉ¤M ÞÃ8E"uÈ€«/Û…r‡&(³ÊºlÖë´.4U OFD+o0 —Å+Z#"¬]¢ù§¸„ÿf‹ôb›,êqÁÐe0|ØI”­?Ÿ„vè-XUK`Öÿ	X_¦a%^¯è.¨ë"‘W÷¢Ø±²®?}êŒý‘·³
¼!ìJ 
'‹ÙlúÃç.|–€_ÁG8Š|@dTß™?Í,5n2#;„Éˆûw!®Ú#îÚãè &#.¬ÇûŸ¬•ûœ:‰èiýxÕ®º¬½¾áäÖëFÈ Ô7r¨t¾JÿõÇsUúåFžjndfÆ€K¶J<«­¼¨·`z Rì_=ÕÎââ`$œ$KFTê	Y°sÓ_‚ÙZÞ°S®˜s€R :vÖÜÞ`µ€³Ô=ežvf‹08ÜÍué¶kZO¨á(gï
­¥‚Ž
¬ë-Yúd”9ušwà§’Ï&d€àr'°‡ÁÿßÞ³6·m$ùYúˆ·œmQ!)É›•boÑmóBQ.‘¶k+—bÑ$$qÃ‡– %ë.¾ßt¿á~Ùu÷¼` ÐÞ$µªJL<f¦ÑÓ¯éééŽ™Çm0Øçx sytüÍds‚-/Ríª?‹InÀ(Œ&Æ ÚdF¬ÛÆÑÏ1ksüËõ
ƒ^ègõ-¬"XðV_o ±©½„÷aIÎÞ^oxLæ–Wë A“uòRô2D;0…q.C ™èF‘sŒk¯wî¹.úüÍ­M¸•ÖÃM+ÍKaIÝë“äôUJAÁ«Næ	6ÛÆÚ3½CÞkŒ«7!bþ]-×kŠÌQÒ>™ÉX«áZ¶‚‡Ã1¯ˆ—Ñ?;%Wp€º=À»Ìíõ„Cç»‹\°í‡‹˜:¼yˆ¦YqN¦#îÀÞææ–÷=œcßÃö›Rî&ÕC³+O¿¸¶%x*# ÷>¹­Å…ä=
çìó³—“ã5.ö”xÜÔXÜíûæ•s~7)P—S& }”à“WTäçl?-2^¿ÐxQöxÆ`¶÷=Õèa÷Ìô¼ûåð¯geùÝ3ÆqºÕ“yvd|R–Ã½„‹Ý†˜ó½˜kÝës=œî¥Üì»¡ìv»”¡ÂuþE9Ûéÿ²Ìít‰ÿ®<â~üšî)Ï6=}(8Åižiyæ–ã¼¸§ÜgP§½”ÏÜgÔozYÿy6Í¤ûÕËzÒsïö°—ö©{À¡ûÚ•«=‹Ý‹Ê2\Ñ¥Ýíå}*íz/Ä $&²çÜˆ˜ø¹ä³ù#ÃU¿Å’äµÿcxè³‘œê¹ßŠÝþûj[Î]Š¿¤Ë>{p—'¿€ßKc»]û%}ù¹?‘»ø¹ö½¬ì4¯¿‡©÷ê{Sh†»¿ŒƒßÍÇN¿¡ž¶oÀ‹f[e¶|Æ46	þø{~«3Ÿ½‚í­ÑR7Jˆ|MJÄ·<dƒkwÀ‡‰Nýb»…Ô	:çæ—Iªo+ÙEðš·Äéso øáÓÞW(¶PÊÃ¥í<ˆwð„Ø\`[B¹?ŸypX[»‰‰ ’w%nÇÓÐý×6î"íyðDý¦-
#t¢íŠ×÷ªT²•ËðŸL8škü¸Q³7²t
T ùÉŽy¿ÔmKJqm§±u)OW™çœ†p¼S¿¬[×Øç£_‡¯tßfŸcì¹èx0»Mþ2‡S¬ÊsÁs:§‚cøïXô›Â;u$¿%m–D0rQ€è¸Ý®É ´„)×ü“59@Öõ›9>~7æŒ_nRaÈ3>}8ô	]&ÿ
ç'ÕÍæƒÃãÄó~3Øàír
2Ê“ò€pË;Nå‚3Pˆ¿àFÙz9ÎFAŽÑ']èøíj=Îúþæäà\=€µµ€5ðz”
EF“»hõÐ£.¡Ç4Ip;=ý­‚ÁEÆ$ä’Ø1õ;XfŽÏ÷ .—³UK #÷øÐ¯è³¿vféY×‡úrŽ+³YõáÈ^d_`d?áï¥û
ÿ8ÁyYámo>Øõ4z3ì“’Vˆ—ß!É>)h}øŒ™f—6<ü†Î²IÊ~“žm’”³=| HµJJØ9ÆN¶HŠÛ>ÃgZ$åì/²ERØâð×Ã)esøÀài”²<ü$AšMRÂìÈ1xºARÂôðõ•9Œ’B‡ïxyéÝmeäôù‰+ÅÂÈtÀ˜þ—dïˆ3}É]¤ÇAF‹ïëµa#=	Ë‚i&/Á_Ws™šñòýpÍ=µGãÒÎ:~Z#¬sƒI%7”ý×JmÈò±ÖxÆ°áXAû>–2ÑŠâùf=¤de*OV|ÄI`7„xŽ'=ç†Viž’•[¥â&èð]¿BpDÏlÜŸÐ?]ÅÒcJ`ÌBÎRBÉBw"îÚé%..Ï›]tÝí(›Ö1CÂÆ¦Yõ[Íáûú‘8ìšƒ>NœgÝÿGÿ¢çÑ9YÎþ]³Œq,C¢š…óT­"º73£ÁÛc>{’úÀh=ûÓž|s7~R³Ô;25·BÁ‹áÊš{¼A¥RÉHÅc'ž¤d<©%S3ÏÄÒGES4¸LþuAÏj;0Žœo°ï£ÜRO*5ÏŒÑ“xÜ‹³±æ?%á1¨ŸO·#âÙtd¿š%¾·¤÷¢³8±µz+±M®ž~­Š’ÄØžAZ¹ï"ï
«¨¡UÀ”Vf]ÞBJ§?NÍ¯Rlãk–¬Ð´Úo¦`…I`îªV†¿La‡â˜¥ÖÜ¬B‘[F`d•’/!ý™!VY&¬šô’Â°ßû¾QkuymŒ%XSmaÄ38ÉätÖXÑ”¶é™Ò»*MŸÖ—–—Óg†áUHàº%},ôòzšÛÈíÎ¾O­hÜf“£	nPÚ~»^¥¤FÄúÎë›Õf8žO‚Ñd>]à/.ã4§«37blXú~‘‰]ö–˜Ž]œ¬"Ùä`y;^NÂ@+Ä‚ÛÅ\÷Ê’)ê}XDªx›
n·ë˜n:ŒûÊ²•[ßyjÚ`Ñæã|ŠËTl)@¶–RÚ·Ê‚â™
T›ß¯¦@iÓÝON‹Õ»²v?
Uv|QºÛù¸\Î‚›ÍuøoµœK-'éåTÛ<±4–a¥—1ÒÝZ Y”C°³E9€o¤œÙ.Ç‚N†ªDA¹¥—"µ¯IIþJÁjÖ>’’§ÿ)¦âˆ|­¥™C5Ÿ­­-Q'´u¬ò†.i_ÆÅÖq;i±Q±Òlkçî‡r©½|Væ4?öLêâŒ°»µ40}Œ§‹«e‚SŠ*¦Ã‚|¬Vr0
î¢*ZÅAE§¤ÅlÅœÉp‘\“1Aã‘vÃ3[XmŒOé]bÆÁÎd¹Ás+j“Uç.ÂØïŸVAŽùètèïŽ­3Á|P—§¼ ¤éïåI§¯Ö3
]”9§÷ƒõøšª¦-ï°Ú¿™ÞªN êˆ“è6iLÖD»‰#§êîØÞ¹‰>…	îu¸úé¨N_Ô­ðÈfxÀPvíQòš»Zw,º	Y×N¹6)“¶qigø·à½<ÿÒ
ÿqTº&3x}Jü‚ú#®#fÁC¸
¾šÎfXþƒÕj añ1ÄmcUÜÀ·ôSç(äò.õBô,y’ŸIÖ¥ÿ¦úŽŒy”î/b/x˜Þ«‹Š¨Œißþ]ú>b~ß<®gG5Íñ‘ütXÏxÞÈx~è|~œ:úqÆèÇ£ûŽ><r??NîøY:tÚs'tÚs'tÇ)¸Ñ‹¹¦?e°™öªfíšFó€Åõ³òŸRJ 51õ,Nðìo7¸UvÅoH‡s®àÏ>”ƒ£%°ÇLJbclˆp¤DÆÅY§²0¥ØÖ>#øæCpbÇxèè ~EL²wP°0Ì,*Z½té¬EÐ‡¯b•¿©â/Ù*ˆ×®Ð›´6Ñz‰‘ýž,þ¸zð„­›Ð^¬ðU½(ÈE.–¨«‰"—¬
©¬dÂ¿íeþe&…LÏ#Ä_¥ƒ¸E‚gæðËßíŽOà™ªD(Ž…IZRP×b62‹šx}„ÕñÔyBª I°¿^½Ò·ÆÖXt…ãPÞ1±(Ÿçù@mí++Ïüº\uGµvI…GÅjÆÚéÒü/‡µ¦ît†5õøöaÚâëï"úúÃU7·zê¸y‡Ï4Û[>;üY±µ“£Ü5EŽB<DérdÍÈç›Æ*¯ÔœA8Jæ¶Hâ
„=ðÒìQŠ¤ëG9ÀÈ bvp
§ÓnlÇìØ×ÜŽÕ¦ª|¶žQ!Z:{Æ¼VxÀÍ=NLfxÏN<¼gGY\Ê´£ÖYªgV3‰¯F÷œ/Tð)C˜Îk¢]õù/ÑkF	ü™‹ÝÝmTÀ¼¹Gr#†D ñ=f9rÃä¥•µÉéã3hÕT‚A6Ù†s«{ñîL–®¨Þš·ÍãcŠ…‡qâAYQÛwˆ¹IÈµ$ßKZ¿sÊ¡†€ñ>Ç¸TdHñë¶óCÏ¬´úBÝ‚†›¨å%ŠÈþm8–''ùHq¯‰®›SÇ‚ÂAó²øw2]8Àe2âBúyxP$‡ÙåòÆ4^Fn‹5Ëq"«< a' r+Ì’ÅÔ±ã´ÊÄTÎ–¬wØ»®^X'QZ½y¸WýñhÆIMP’œ2‹'¼+‹êb~:«÷AëupÆ$ƒMÐâccäÁ	¬´)‘¢Œ5[×aØèÏm/ÇQŸdÔ ŠýìcY¤MmÌØÉü²”©L™º/a¿Œ±=me°¹Ÿ¡Å¦Ž&UîC€5¾ÕÐØ×n”±â(„¹­ÌI® ßUúÿîØ!ÑÆ®²Ív}£Dß±PjXþJØÓàÿ&ožäØA¡Äw3nÆëùp=‘¾äû,Ñ/<««ŸµK³¯íTüÛÑ_>ï7¼ßùºQ?	.WLöÏW÷ˆÚçoÅú7¶_\˜-ÍŠí«›AÕ»Œ­´™XXv@åÒqžŸ2Ïn b_³H«	Š+|…‹ÙŸ±”5I9ßJY¤‘±c¤]þ½ÀÇw!|­™gw ,áIxò;
Z R¦ÜHÖQ‚y’äHÚ“Ÿê??ü|_	~Ü/Ô~®`ì÷_e-m^õ¦58—üµdÕ˜"Ñs²»ÎÿÚ§zâB¾r’£_ŠFú
ñ{¥[¹ü-õ)}–	6;m`§²•Ñ™ã®Ö‰¤‡…Ž±+ñNÊ¤Œ4kµÇ,ê¹)†sÇÉãˆ
®G·£qXNNXH[¬Â+˜1y²#gíáëîÅËf—¨Y@Êñ¶Zñüp·ËhŠÙÚ´¡ÕVþï[ÌŒV¯GŠÎ>´é“Ö
Fg¢ì“3×Áý{g85:om¡óqRçgÁ@HÓôÎkváI"x¯¦F	ÔÈœê²;½¾Y{ƒóA½’ãS%_@b/Á`5ZÀ£…ž”ÃàÄ¬‡§3ÿÍœ,º:Ø„ÐÏöc‰‡añTi&"RÇÀn†kèÆ™7áèî0Ó(‚™†uc;˜i¤a¦±Ì4LÌhCp‰Û¿Ù¬'°FÂ´g!˜ö³‰=Ä_9F¸ ýLÿOZü´˜LÌ ø¬Œ3W~©Bˆö„”G—=„ÌÞ™T²¶–œâÆ¯¿VZãüýé²z­ùµÒÅN,L²xÎALæX*¹â_‚Ä±f3K¾äKò—ÏŠ‹Šá§‘„Ÿ†?Ì.¹“	{£~yðÓ°ðã3D¢üÑþz¬!Ù?óßn²›Æ\ôÿset‡X}yˆ±ªJ8Ý°+ÄrNH°K’9Hq‚7ÍùÍ2n÷>±<xKÄ«˜{€îþ·üNµ¬Ç«Ï¼U‘Å=-Ö÷¢{c•7øZÐøN0´é]— $/£	åbÑ9$ÌúsŒÿ©5o$·1ðeiPŸµ‚·lê[ú¸ñÅ Ñ·´û9¬¢ «:™Ž®­Ö|W¿›¾£ÿuš¯aAô¨/¾áôô¨‡›IòŽ‹[F_Û–à`¿ºy«ŽW£è¦:Ù€¶ÞB.›ý7Ã³w°@ÉÉ-nm’·¯šnH¦“*¹9“ˆD6”¦£lz»Y]§Zµ¬ìÿ7¼»|ÝÎ	>ÁP/ÓõÒi½î¢ê•øb4sPyÉìôíË,Üqóü¼Ùÿ1?@xD”»À“’ u¦8?$dgTÁzˆã¦ $ýóæå (^ªÕV‚JÞŽ„›ŸXZ5Þ’úV!©—€äp«–€¤¹UHšÅ!9Û*œ¦“ñ,­ªxž©ªÜ¨r'vÕm7/Ù¸Ä4yEè-Í,ÙRX“·ûývoÐivóŠT£&nHm”tïòÂÂ¦j¸qÓê…§ª	¸¹š'Vf0F¿E`¹lSÚ—ÜÂÿê¾:¯§w£uX½™FkLžWŠW†ÍÖ ó¾9hßtúƒ‹Ë¿¡b6SI ž)]Àh{ÎÃõêø]¢©ÂÚ‡ây¼{ßáäÜé7_vá÷ {9´»EŒf ŠÄÓ–åU¾U6eÎÒB´Ôì_ô†³œ€€ùPÅ DXÓ  ÔH©  B&š.sÂ¢ö`\LVÄÂêæ1íX¨ýWÈö|uQ„líÀ‹20¨=äÜœ½ÜLªýþY•yLª"£•IÆÆVèoø¾}Ùï\ôòc†twº!žcu"®P”‚‹YµMÝÏÈE«ŒÍIj;¼«êC(x
BsT-0ôÏòÐ—f:i1~ËZmª¾¦=Î˜	Ã‰£V*ÎL//.å8ŠÁåt'ª † ˜›{ —;'4ùyó”ÀûÐð³›÷£«dhvvvÒMàöûN«=üÐ|å7¾æmT:†w8’îv¼m{ÜñwñÖœ.wŠãÇ‚²Lê‹ÂCI‡¦-…âI‰Åvci\î·1±züaÄvl¡r»'‡ä}¹ø¹·úW9©í˜S×ŽsÛŽw qHÞ®úëÐWŸ4û'Aý@Žxøú‡ÄIO<v¬R˜‡‚Á)ÿ*ÖaÇQ ƒ.ÆÑ›JË›%Èx]Ár`¢¢¢‚édëYQð—–CDÏâÊW²„,NXÿÞÌ0^9f¨aV(ï»No ¯l¦¸‡K^ˆx^} öP¿óBx"È6råPüE2(ŽßÕ>µjâ1Js½^M?nÖað¾NgòTº¦’yÐEVJcFi;¾È©6çù¸â'ÊŠ#3D;¢T²Œ°@tÈ#§æG]Ê'y9ÑN0ñc5â0Í®yz,#BüÝ‚*0SRéÑ$h‹“c4óßé»ˆ]çq:¿¢g+7³ýôOBÄ,uD¼tît–>r©˜Âi/8Œs¤2ýÂ²°Og-Î(Ðåíh}ƒü ½Æ`²rË<þy4(<ç*\Ñ©Míu¤©çXvU”Ídç,-	å«N·­NqˆÄ¤Ÿ`™ÿŠß›…þf3à	àŽ…°¯<•ÚEö§n!/y¨Ž-”´(?ÈèëˆÏ]ñ¿ìã$ðÕê<	A*H'Á[pÿ‘Ê†é-ÿjÄÈý9m$d<]‡Ù½ŠJÓÁX3ÑŽÁ¿q*6†íŠÊx~®Ö(‡Š`¦±æËIHG*Lx²áªíNï}³+AŸMˆ¿
øà!?á$†•BU^]’iÁ{zRû4©c0þ¤Aÿ?¤ÿáÿCº‘èSV2StòÔ:íïœŠ“¯ß(M~»¼‡§Ë«aÃì¯’x¶ÃÂ„ˆû$H$Ø{<©ó–Ã`P·XI¼a¥M29eÇ¼í¹p|´ÌKÊy¾sE„Ár1{ ‰Šg/ãã ²™2æÆ1´§ ºzr¢ò-´{-ò" CyØzó®÷#Ärþ
6zþy÷oµ`qx²'îW„îÆ×_HÕ-%V"R—üøèþ#×GØL{1íÀ¿>)ØÝtq}òXÛÒ” ØÞ•r4Ç\úXÿ€IfÃÚ±9ˆnˆÑ^§¥Eü`®¤~Ì·zðë¯A®‚2o«ÃÜã%ÕŒ ÉÕ ú¯“ÇŸýé 	?(SS“ƒ}p¬ëê{1S—Ê¸T½Ê[ÁâG¢U¯È‰¢qSMªmÏ=_ÂŠ Í(öi¤ñ£ÿ4%#!¶^ÑuJM|K«†f3zÙî¿ë†=˜Áæûf§‹[xI3Ù[¢pù®…Qm´é<ºMghLJ#QZ}B	¥™¦'”æJ;ãV$XL_"b§ÔÀÿ$ö$÷ÄíAÐy'Ò(„’ŒÂþÓjèP
rn‰20,LU›iTñW5
o'÷˜vHü<Ökib`4Jmúqj$óŒn—°Ø0óå*T&ÿu6ÂÌhµ¼ºŠdšqö7WhÀ?(èÙ½Êœ¥xæÙÐáP	ž†NÂ¥F©¹u™;·ò9+…—ÙY–KøL*-Âxãh9aa°¸Ë€å
îoFkÒc˜Xÿ9©ÔSxuÐ÷qE$žàÕ	Ýpçè§;¬O2@y¢|üÓ’å7ÏÎ;='ç¯ÏaiÝ£š@‹h*NÄó”ç‹[ñôù0½'ÓåÓ{¤Ÿêe’p*ñ0`½ò}§É¾G}"eÕÄØœ`éfCÞ”¤I÷MØ‰HÅ-F±âö±~ûXÜÀ~`:˜FÊÝku/Z?â>|wÐ9oƒ¹+ÎE`DOöðê`}7‚ã]F¹Ð%>]Î÷*§´¢~Ãnƒl€iZŽ§£uÈ¨bÅëÁÞO×7¯H'oÊ3 XŠ aÄ“œ‚7vÿ4½š„Wj:[ÝÎð¬ýòÝk`˜Ãk\®óÎ†qïIEÒMîi¬Í<½Ðòˆ;/Äº_£©ÖÅùy³wvÜü'`û#@¤ÜÇµÆ§ýàj6ºŽÔå*º›°«#¸BdWßÃ|wÃ¸:TW¼w’žz¿C¤d^ÖÍËF¬o¢(ó¥#óòX]®YÓá<R÷X&ÆD˜Q¨È›âI¼#ñÍ¸¯&€0¨]#
ëÚ5"Q»D,š—‡Ö:µ7·ÖuÝºnX½­wŽ¬ëcíZaRÿFB%²/*0ìµèŸ€¦W§°×¸®`Ý»F‡èD¸AuÁšÓ¦Æxs4‹öHK°„m7üým›QÜnÉØäJŠŽùÐ¼ìuz¯¥wŒ”­€NÐ¦Ð-Ò½Jõ(+”Œnªh‹ÅT­ÆÇ{}Dç×sG–åØé´…L™DŽûëlW$íE'(9éžC­™ÔJÚ“¥LÃßiÓd%PÉò>¸^ªSöÂÎày¯LÆFžÍ`)êñ²õÞl‘XM†kníU­ŒŒ¹^7yJ|S‡ñº>°Ÿ5¤fŒ?;„gÜ¢òæHhÎø£c¡=ÍG’þ“þcþà›ç50'Ó1(Âˆl@æ›—ôÎg-÷ò%ÄŽ‹‹ÕÂám¥MRðæ–ËñqKOM–Ä.Vz4>®®ouò?¿¸lÏšƒ&ëÙ0›mÿ'¹ñÕýjº&fÛ·íï:-Â8øœ&ž>7ßbø·ßâf…Ü°©¨Z¯H/S~ÌJæÅnIb§î‡`4#{D%rØÑ“vk0ñ/’©b?ƒ±nXúá‘×EPöK_¹»—W´Á)Ö­–×XÜP
U®°hÝÄ7Ga]:ä†{¼Y­èÎÍÎ¾vG¹³§"•¹^“!½x„~®Áþ|h½ò-Õx·þŒ.6ûôÏŒJ`¹ø+±äLGhU­yÑ¥X®•¯«#‡5JŽ%ÀY¢N™=qbñªÏž¥¦bKQL«Zãå/‚-ŸNÙ”ø&%má7gâ¦È¾rê,™Æê!Ñ}‘€·óŒ—i%ø<F§^5Õ”Õl:V/	mÈ½w¿‚A_öÃ<ù¹ùjòQÇÙ<†ý$q#™¥,žâHx`ö{@ßK¿g3m‘a®1Ì%†¹Â0®Í……„ì0sôk„A¿V"ÅB¡}£nßhØ7íGš…]¼àðîIul$lbj"é ¹—úÀÍÊñÍfñKðxÂø3`Uœö5×]r‚…‹™Ê¤¹t¦nÌÆÅðÞl¹¸ä
 ¬˜SÄ€×2îŠTÀ6m>Õ<TÁJÓÖtšÀ`gû/ÉŸÕ8û²MþÙ(Z«X0·vwâ"ëiœK=d“[8%J'i¢tÅSñÔ!–¼d—Ÿ0Ê#’ÅLøÓ§LûpLÓ>Š¸”ÆâÄ;ñ€€ÿŸt7º‚xœ­•aoÚ0†?“_a¦ÔÀZUÓ´M“c”	AÔ m“*Yi|¡î2'rlºJýñµã4’@JË—ß½ïs9_œAyî÷ßÎŒÀRp¦˜ !þMÜ™sÖÿàÄÜ‰|õV‡†Œ@ˆ0þé-æ_XuKl¬¨$D’ úz›Æ¬ó­\iKA£¸O íß´-kÐC¿¸Ÿ$ÀSäóX2‚´Æ	Þ§hèN5² è 8¨Zp|}èÆ¶Y5·˜Á]©Ôùœû÷]WöØV…êX‰Ü…dé•ýÜ<ù„àµIÀ’2åy‚þž µ®¬ÖfZ™§<-^Û‡oƒÈ§`´˜ÿ˜N²áÓóJ´Öéûx®¤Ho?®W¬@ì3Ø
[`„†ú¬ÒnCk²¡§gŸš“jÛ£]óH,¯#x%.79L£ØÅ05æ¤‚S¶:”ëƒÌ›Û˜S3¯¥ßÓÁq¬aVOµßŽY‘kÂûÊŽîVµeÔ´•‰ZõI»•ý”w
»íwi{ÛOÄfôŒ'†ÿZi4­ìS2ÂËö–—Óù»—ãåòzhÕ%ÌÞlè]Œ½ÑÐ«ò,e+±ID½}óÅl…ÌDì/Íõùi`.X úR±~·Ùú_q\(µMoæb•í;;«Xêªôù‘ú7©Ýþ+‡¦S&cm¸:°=ø.&¾²  070701015D695600008124000003E80000006400000001642C0FB500005BB0000000000000004A00000000000000000000004D00000000nvme-cli/.git/objects/pack/pack-2b87a653261b636d02b83ab03d1df82e2612beb2.idx  ÿtOc                                 "   &   +   .   0   2   3   8   ;   >   D   G   J   M   O   P   U   X   Z   [   _   `   d   f   i   l   o   s   w   y   z      „   ‡   Œ   Œ   ‘   “   •   œ   Ÿ   ¥   ©   ®   ±   ·   º   ¾   Á   Å   Å   É   Ì   Ï   Ð   Ó   Ö   Ù   Ù   Ü   Ü   Ü   ß   â   ä   å   î   ò   õ   ö   û   ÿ        	               !  #  (  -  0  2  4  7  ;  =  A  D  I  M  P  U  W  X  Z  ]  _  _  c  e  g  j  n  p  s  u  x  y  {    €    ‚  …  …  Š  ’  –  š  ž  ¢  ¤  ©  ª  ¯  ·  ¼  Á  Ä  Æ  È  Ð  Ð  Ó  Ö  Ú  Þ  Þ  ß  à  á  ä  æ  é  ë  ì  î  ð  õ  ÷  ü  þ          
  
                  "  (  .  1  3  9  A  C  G  G  I  K  O  O  S  V  Z  ]  ^  _  e  l  m  q  x  {    ‰    ‘  ‘  “  •  ™  œ    Ÿ  ¢  ¥  ©  ­  °  ±  ¸  º  ¿  Â  Â  Æ  È  Ì  Ï  Ñ  Ñ  Ñ  Ô  Ö  Ü  Þ  ä  æ  ê  ì  ñ  ô  ú      
                Pc@ãW)›N¤˜ú9ÅèçÂ+9A |;5.ù±Ïm«q»œ+¬ Ã¿9(§óù]Â€ ·GÞP­“a7Ø×’y9€<©'Ü%cÞ70q¤”¾`Š< ¾žð«BÅ‘]wNó±*šfü3"6°$D/|Vº}Þkå9vÕà Ý‚n]%f	YZÝþnU­m„Ž¹äR<At8KpK_rp£<›¢‡ºÓCQõB(©ÏÂ€3žy.&÷ÆzõW:æD-¾
Æ¨¥z’,¾0,ÍÍQôeXâz6cµ+›ï/J£´;ªms½ÌÚs¢’ýq˜öéÏ´ww¥@>®2eR¿(2(ÍðNõÂ05¦œ~­ñ:nýü„>¥F§A­˜Ä¡ë±DiÔ&±ÛéÒ.¶]Ê3/?ŠE»ïu‘MgY|I^MË¨~Q“ŽR3Mm[Z§UÁCËþÞO(À§Æõ“ÂozãŠð¶N’œn!ÛÆ!ˆÙRz‰¬2Vhr3Õ:Ñb ¦¢àÛP°4+ûX¬‰")cfÂUàîh@…æÚŸ£W:É|kUÒÁúçÅ— ·<‚Þ7íU±¨x°Í˜éÃã!Â±-LaÐ>NC»Ä[ùuÈåèXæ¢C|æ3Ììò—çj;~õ+hçìÑLùÆ[û'¿–Ãôéë•=Ó ”½ÆÐ”Ìú§G”»…	-¨/¦¢V0ƒœ§ºé‹…¸/ÙŠ	µ[°ªà¶ki õÂc`y]	^¶LáA•AV¿Îˆ¶Î—2	×>	º€Z¹c\#Å³¸—‹Ø	¬Ly‡”‰ÏÄÓúéµH¤¡Ã	Ï…Óï.óèµ-ÊÒ‰sEx´r
£QDµ\\ËvªÔ¶ë,X
z…Ùì.ºÂ±ëyºmÅª
ñD"ãîüi~6
Y°HÈŽ
ŒÄŽÄ.i%«ðuKôùêK–«ikoÑ—¯JS¡ ·Úncyƒy[§µÈK¾g¦tq¹x•Ù-iÓXz4D¨ïÐkŸéœÆ.‡í§)¬u2!cÔ»%¦ñSÿ8¶e’0‡+¶
Î›LØ»5œ°æU?Ý¾€ØHMaVÃ
'•1ãØºYôÆÒ¬Cý×¢2»”šçùÔÿövn[ú„T'õÇWç¦ Qø_#Ó5öˆj/¶|þœßtðŠføšov_8iyŽ¬íþ\Ç%Ñùt{Z4ÕÎ*-»èX» A<¤V“&—n\,³UVÈŠ`ò!¦‡ëö#ßM´.æ¾ã`«€”"cùD-²xÔ`ƒÔb43¯çXÒµe=ÖŠët‡E@¬¤8­Ï¡ù÷V"žPvÑo‘§Í¹ÿ±K*q.>à£â±Yióˆ?ÓðÁ
ŒÕ¬&)~û(œ~É^òÀ¼€NŒíøFmnRR¶ÙñFP*ûäçxg¨…5ã!çÝ€+7ÈH?:`et`×ó8Pº=z¬Õ#&—>ùŽG[0Ú2ã¤^0!ß}Ñšè‰\º0V~K·Ôéî+Ö™y«ã‡›Ò¦Ñ&k.ËÛãsé`FYjnîK&`‹‰&áèHsR7çÞ 
¶%{Sø\_s:-•ÜÚÇkÑÀÎéÓ¥
¼k-R <Gô^Ö§ÐãúÞËßï¶–‰ÈÂ":v[ÒŒÍ’s“²èëÛÂo]âA©FöåfxÕ>x¥ç`ž~©ç®¼£c»p×>O¥óÑY¦nô)Ç¨d+œ_!@¦ÿi˜Jw…Ò8tåãÉ~ÅîO•}Ä¶Ù8V•±%>ìê+
žˆzÌ}Ê˜b„ó\¤oVóƒ!÷ Žq½ç©	 *ÈîÜDÒ§3¢f"KÃ·ì{rEÎ1#óh¸ÌÙg ¶0Î3ÙØ§%LtYk’REPH©²HsÜaÊS¤Ç¦¹â­Wý0>U¹!²ah¶wªt×ølØå¹ÌzAåÞQ¬œ
ÕpÎ×pßñk“)KÞâ{iz4Ø,f8¯¹4÷éQ¼jÎgVD’;sJªã±˜Ø¶2 Îo˜ˆñl!ýéËŒ=l¥äVp-ca²}qaüh‡…sžz}<èœ	È+§ƒäý¤©2øëÝúN½M[Ã5•	ß˜¢å0ø5V¾œC"µ5fKƒÿä*Ì„øD*ª6S‡ciÇªðÛ<ÎQ`2äÀM­ý1nú‚îŒéäó0SëgÓ
Tq¡TÝ¦‹#—í‹T°™e1–×½IWöcï‡‰FBh½
—V 07O!
JÖ~½»úþ9ÚM"9ù
È¬Ä…µyoÕ¥èK!’Þùãg‹vøX•É¦®(ëMR#	±K©fÀ.Úe75W­ñä©ìŸÿèáLíVHeL•1­
üºß ‰›v`ƒ_È(#Í¡“A­•-eXŽ™.½¶6¾Ú];×@×K¬’À+‰‘{=ˆ°(Œ_æñæåL‡)—y9ùãJŸ¥ß  ¡™&PÒÝEb˜tào5?ñ½Ì ´ðájÜ†¦,´e’¯í<€!HJµÌx«"¹ÿà'¸LzcŠ!k;@¦ÿÜÌ¼D)Jîð¤m}9F!ÔÐWã3“xwÍU¶Ò-Á"Nw1=½ZÁ„ñ¨¿–E¬¢]‡z"g¬Ý·š K´¢âçVS	kç2•"ƒ¤ÔÁ³ÂhÛŽMÒÂ­÷ñS’#TÑ)EÓ"õ}šDÂj$w
1	#ÄË;P‘ŸéÐîvÁžÏÜz„cj#ÝÉÿ&¬Ò‡Årr4D 	ú+#Ü©$,ù©ãOr¡Ša'pŽÌø¾µœ$§W­šq;®fýRº"ô¿^$©ô	U³M(ê¿cíYRtw,VÌÂ$¯«¹‡'Yñc…Î’QP;ðÕ%[¶¶ÁKV³^0­œ~ kÿuâÇ%m	µ-3òß‹Ã1¥nñÓ%Ð ÌýJ‰Ùãþ¤ðÇrl~ù]%ûk:‡ñ¥ÓqkXéÄàŒä&<´É^;×Ã42p˜”i TRø&‘ãŸÒ‰¶TülUA‰’Žž9p'ú?å¬L¿BôŽqŸýCæ¥(ÙJËé°©43W¡xõ8â`ÿz_( ý^UsjJ˜©çÞ²B%ÓŽ(Oa…Bfn©(*y×Ô7³¿(cÁ#Š¶›±U×Þ?™b2ÄH¦E(Ï¦;—ËéÉußèúù°d«[ÃÄ);Ý¨ß#Lè rõvêRû×&)f=,ý¾À»a7
z?mêÒc?)ov7–áQ!/S?ÆDpŒüdë)~*;›«”—i¶)Éöb–qcâ)©—HÅ›±Ä«*=ÏæœÐÊà†*+`sðnm»ÄÇÁÎ…[±*Ó`_{0]P›žÒ©ZTCæÒ*ÚëOBvîÆÎe™îœ¹ã"–+""móy>`Á…³Ê.¨Æy?·+#BxWº=FhšªÿÇêá@X+€ücÇÙ–²Î*é¥ƒb´ÿ+‘AJÕW
Ycë³q@„ ùê +ÁtÅŒèf7¸î•GP»ï9n8ß-!ó;0í]êhö|A†Ÿ&uä.-\|ïÏ t£%!Ù7žÍXóÒ-ÌLÌ$»["ò#A…Déi°xö³-Ó*g±QfùBJã«*-‚èi-àP*e>ðÃWøˆLÆ™w+.ˆquƒfÃcm·24:óûœ .îpµ„·Ša)’‰Þ ã³4¹ù/ 1:Ó¿Ÿ­Û‚^æ¹KØ¤c/ÇÈUDRÍJÍê>Wí´,Tßê30/ølÏºIÌ„B,Û¶îØh0U LÎ²”XÂ/¡fÀ´ªë\Hˆ0\tZ÷¡!/GKUy}„Ý>8Ú…0nXR $ÐX¯ç$–Ê±Ôs7B0¸3n8Wvà%•ý|ñd‰0ÆíêÿÒ9WË¥C@½Î§ç V0Î‘„^Žv‘\RAbÎ³WEôë1:ÃZ"íˆ]gÞ¥ÿs1<±’‘¯q¦¾ÑFJ´ƒ‰Èÿí1Ãc'”¼EyHƒPÇñ;QÖe2/íC~¶ñúY–ÃáŠäoïv21ãÝŸ¤eÌ|ÉûVÉŸA¯ÏÃ27qN¢M¥®°ï´²ÿ¸¥:¢2„f%äÃ¤Ï¬Ä¨HHhÇV;2ß/amÝ"qþ+ŠèŠƒEêœ§2ù_ìSx’÷ýõJ=XÇi9E!3Dê_…qœ`iüÂ±Ã'j†3~x>ûÉPEÎù)¬b ~ÿ3•-8òìåmQB*¨!­ÃW3óó3«Œa¸·Ý² e
6dÌ Ú4,¥ÌZÃ?5o‚}7ZeñöÁô4hô»øBG>—2‘äé˜…ã4yŸ¼?äó˜AS²a_~þÕªç}4“tht
d˜”†N `âe4²º‘@“àÖÍOøÈ5Ø¾m
5Nzú:CúÇ#Ç¢[¶€6i}|5©ªÌMá[ÜD¾9íŠæ`–šb5Õí¤IµWåÂçq*%u©+‹6;''‘UšI:I!DÐÌÛÍl6uíöœ¤ì ˜'óSð3*ósÜ6‡t¢ ?]eÉÖH=ÑO·¸e¾6šM%û†bN’/÷ÎÒ¢{ñ>6ÆûžŸˆRŽBüwioéˆ‹ä™¸ 6Í’éJíHÍÙb¿FPyÅ?Óà7Sôß]1 Šµ±Tëãu×æ–7ºÌy|ö ‡yI†±8¢V¡ÿ7¥
ÔÖ³­Ë¯Zvb±:u8(¹æ~à*8íkŠkF˜—Ñ8 ùÜˆ‰G}c›Pé„˜ú)8¯16Ll4«|&’¹Á!/wš,±Ý8æÒÌ>ò#a=x»rl~P39¢$ú¾`3êü×¤˜õ”$I9ðÓšÜ) ôÉ_‚ 'ØñòÉô9÷œµ©¶ˆ¯½8mu.à`ŠP‹:®ë'*ejŸ”m”ü$†…¸®z:P1¼=j>gï‰=¢!#‡æÛ:%‚'Ka‚™×—ÚÈ…Ù«CSt:…ÕÎf#›w¨ÄøzÞJ.‚ù"<	Ä
êéÝ5™½f‰ÑÉKMÁ<-CêÊJ÷‘æÜˆã„™b“<3MìÖS¾ÃÛU(ú9eÕeø<jXšæ™ðŠ;~j‘	t›e.â='²á<B"¹Ý YŸÉ~;5Ø†|=‡éÁÝœ…È©Í´°4ÚÏæ=Ý¡	˜v]W¡o&¦£ûGE>V¥\·ð›8q“LÐ¨Ù>ŠJžÞ:ÑÀ;ÛƒðdjÄA>ß\]}‰…ò$cþ)#Ï-9¾?í\Õ–*Â÷¼ç<½¬¤¶:1›Ö^@´ºÜN¸å‡IfÞŠ'XjÑ@Ñò+8×¦ç™”I‡=d“9çc@Ýµ²ãš5´ !(þªIˆ¼%±Ak,ÜZžj¤|³Ó_*÷BA¾þÑj¤ŠDçò¤²™E8w“×Añ´DÐQéìè”ðÍäî»&ù‡BJ2õµ©Ï¤®ì¬†õSÀ^þ\qBK?s¾0´®ç4ò1¥jÓ/À¥þB{wÏUÐ8Úa"¾pW[æšD T¼ïç¾ŽfgÈWtýêÅ`æ€DfÞÕ)šÖÆ]Dø-j‰²Q´àcDÐ¯JmëŒ‰Mµ<>´2·°ÇzG~@Åë a­Ú.ÒÓáÕ”nPGˆñüFCx=Fç6!(|ýFG£M…;Lsð(6êA4€äß‚)H#
÷”b{B‹ñãY4²Æs-Hr‰¹ì)Ã
ÛíWºç˜¬xÅ©]½Hˆ(C¹§ŒrMLïÚ¬¶ÏáÙÙI´îè½;Ÿ›jn…:HˆäS!Å/Iž[Ïfkv—#Åù´r›d
¢=´J}RñMÎ°˜£w6Qí…2i`çKg­ÔËsf¹…jýØêÜŽÉ»KpÂGá„]mwîÐŒ¼×(ßdKsWr¢¼Ÿ>¯³X:øÄÞ½mÇK„˜à•Å²¤rÁv&—½Ò?gÕ•K£µúUú‚ˆ1Ñ´(…ÓHmŒKÏ¿j½šÃŸMU¸W‚œV[4ùÑKÑÙÌÑsï…4Âm+¾‹.¤KàË$ô`¾¢]ÃÛò+åC+eKã[I€ÆûÔ¼ò!ZFrs·öLNÅñÐbaŒŠ2sžÚ’…m‰LìW¤è“Ÿ,Ëü!ÑQ½gáëLö©*.ðŽä(tªû˜¼U©“£ LýS)S!òÐË!”¦rÒ¼ÓMa’ð@ýX—¬šö|ªYÇÉ¬
MÌfQ³Ñ•Œ»]2N„—vˆ% IŠMðè¢ž£Ùç¬ýÓŸ‡4¦­\1NÌÃ¼(ÔJÁIÀY;×²O)/‘vVV<ÓiÊ®éÕñÍèO>rÊ/ÖG«)q÷@ÜöŒqÑíVO{‰'†s}WÀåÅŸyslÕZdO»ž;u=«=û:ây®‹÷J#O½ãŽÌ›Át ‰³Šòø®>?PBºŸ³’ˆ”ÜV‘v«dÃ˜£PvÃ€SEã—ÒaOdÄŸÙënP¾“WGeN<ß'œùNÄ„C~9PÙå]“"W¿Yˆ;î-²³ËšÝ	ÛQ.XO"ÃÒ¥Y]<Áür	Êï‚nQyq´PU)WÀ%z“ªk6îQÅ´ÒÀ½æu¢î´[Z‹Ro°/›¼1ìßï"XZ)¬¡–ùLRß%mˆƒ/X…PþtêbTÁ/!aS‚mT¶-þ?¸¤4j…;é‡ÌÍSœI7c£¼Ž,Ù ±éhqž»|S«E,!ì—ã°ªŒ¿¿¹FÐUù[„T5·õÖ7R$¥ýum-`KÉ²sTé‡9±þf£
w×0¯Äæ~¨jËU	ZMN æ^™Ÿ\ÄÌ:õ‘PU@þ§]³Ä?’¦–%W†	ÍvzUGðzÈ1¦'0ÌwÏ<½õ`# øU`ï§‡ñó:0­*Î=×Ûi«0V:¿Ó)Msí›Ó	BŽÑ!ÏÉÞ.V£Ä¬`y™üLÃj¯s+–™õ-1–W †ÎŒ3kÄ–/‡/ò;BÃ‡µWZ%×{íØ¶w<¿Q…/ÄÎÒWW†¸jÂ­š](”–0Ë®$©âBW¥Ì¾8EQèORÑtÕ!	zW¹]c®ðx±"Õ¥/a±†:õ·WÁ¥Â$ÓölìvˆŒOÿX>ÚŸ¤Wð” Ô©»œ’`qj¬²L™‰X
g$>ã- —„]DŒ÷¦ºX&=†	&v9k"w7Ni	yj*Xq ~†m[²ÜißgmË@—ÓXŠõ„~`ú~\Àî|Â
B×½Y‰†>Ž±4_´hµZÎùr­Y²xw¥†M„XÁn-î¾®´°ôY²{S
÷ÎO0:­Ûëèa´¢GYÐŠïåÆ)‡»{¿Ò:º·/á„Yás©ø5qî™L›d-v*¿JéZ æÙP DO4p¿Q\ÀZ[v’Xëg"¡Aù¸¸D£Á_ðv„\Jäù[€9öîê¾¥XŠôvDÇ\á“?<eÅåh=%_vÜÛ;]±ŠÛX*wÔNÊcŸì_E\ÿp]!¿ZO½¡×‹ÿ„ÅÜq0pË]*áæ¿AçžÁ~GEp«ÀÐ¼]¿¹»PK>éyýoâ€Æ(š]ÍÆÔøí»ä5çVPÉ‡Öã(Ý‹^µzÐyaoŽUcÏ4_Ïµç^Južs¤ÊÙK_6”„¢˜‘D[^š½à}FOúÕÈ­í!þÂÖð^¢¬^Zò¼‡{Â©šy"Æ7ù^¥H¬’ºËa'=´Qmk©“_jÄ¨–lÊ~|,±Ðžœy2§rÆ_±y¥dQC‹çÏXB¯ÊÃ_àÛüJ:Ýí®ŽLmpW5<Ä‘`; ×ÐÃ’x^Ò­…_±ÝóÊÄ`j6Þ’¡Yü=~\ì§qÎºpda*+ 1–íuë›ÉüŒý"axMfj6¸PÊºÝvËm«²ŽiAbõß§w“RûØ™Ðð9’ób0NtKÈQ§5YÓÙ[ô’Ö_³bN"ƒ0"ŽÌåã£>žÅ¡¾âc£ƒ[Ÿ³®ÆŽÅˆTXÇÇ9›c5Û>Jøg'Çÿ—l(NÃwØZûchŒô”€Ðˆhº:r!VüScŽ/º×Ÿf~ƒˆ5¼1Õ€f©âFdküÿ"
ÙH¥ï©UÜí"‰d«Ž
Ÿ~ÀòÜ¼¾—Õ·£{Ôed"öÈ¬_éfKqóà³¿–3ø$­es‡Üo/cl‘<À)ëƒ·;Ëe¦Â&5?–ŠÆáGP=©z&ýeàû#}\à5j“çŸ{jiÚ:^µfP»ã«‰ßgË±OŒ}¬*ÀbNºfâù:ÜqŸ×ˆrÞ6ëf÷`ÅÏs$ÚÛŸ¼elcþdT>$¦gñÿËˆij@!¸ÖÓž¡¯<gI)˜R ÅUüéƒŒ{F™·geDÌ{æ1¹aläqÅÉƒ‹®–ñ“g}ƒ†f¤×Š]Ê9ïÞEÀíÄÙg¸5_ÒÖdwu×N=V¾ù‰hž½ˆCÐ›ù=çÔ7p¡h–ç¸ih®ž>Á÷i B‚p2–GXhâïUâ‚+6n.}[Q^×A¶hå¢øÎ2œ5™û¹¨šÊ.ip=Räøäïþ‰Â=ˆSÏvi€jžJDEi$¼$ gÔ}óþiÓe4y38%íç~äÏùƒZjN	¨ i™/ôS£Î'¤âGj™
qù"\&~«:«cÀy@XjŸ\ ¸Ú©¶]è ºžM`Àj¹ÔyR)Ä98t1êfð‚´š(jÎÖ	Šíüp1®á”ä†^E}ÓúkbÜ‚ïÿ=Bž	kN‚ßbV¥7ðkçäÞ§,|5á²ðöçUhP>¦l‚Ý~¢†èc×Ïùs›T|m’6ãèÛ”"PƒË…ALÌ(òm+]uÂ…˜v(w šäCn¸NênY‰ßêÄAæ6€Áy(P'mÿÜxn°´<"ŸxišÙ˜€MÉC”¨nó¶¡”ì´t‡"”.Ä2¹™Dòl†oa¢-¯Ûün¹¡w b°™ÝÆÒoØ·Uð/DýMÜüð"Y1˜¨ï«`q)J¨CG”N| º&"óN|NàqÌÓ&Vå,)%'i¯ŽÙõ*qà¼3éÁ¦Ýì¸ÝsþÚÎ~]úqüxr2mçªÚüYp­h´\Šr3èñ
¹GŽÒW•ËGêbmíÚ=r²Ùt¶ð+œê•e0 {–›]ÀLsRŠmK]è
vÀabÕ?’	|ObcsÞKBÔÛ¸nx¯¤âÓé|ÏtY›ûúËö©Ð×L”Üi—¼uItÓj¢Šc¨{ßP	EæQgÒÖÈtÝåþR†ò3`2Ï”G‚í+“ÃuŸ|ñnûQ®= 7Ñ'nê®9Tu:•”!E#í`¤ú¤êÚØbxuÁÞ	g?‹lÉD~©*$e¬šuÃ@Ê(ø:	ô Yf§¬úAsv|ù!eƒÄíÛ÷—´¹ç-4KÎqv§¾ÚZLËFÓ‹V#Q¦ü¡)w7¤ïƒÝGyFjñ¶	zÉÔ¨4w¿Ýf«ü”Ùò¿t ß]½õý9wÐQ3o­Û.ã‡•æy”`xxi-ªÿ"î„¿B\Ý‚«
xO+îÛ¼
SîªÙ ´Eë/Aym£í?Çr9GkŸyf®õšžªyž;gSébà)ÓRÔmª_yèíX‹‹>J617¥ËÃ£éI<=zÁòý›U“T®%ªðÚ8BïÁ{"Ÿ˜%è`ø’qŸ:1n“f×ð{W ÌÁ}¾ÇLÖSˆqµÊ|0‚Q¿³ÀaòØ³H+¸G‹Œ1|Ã3¾Ro¢×âÛË#†©†\ë|ÄNÕj  Í?ü»}eJ¾IÁÞ\Ž|þyB+ ƒyZÎË'¨0G°ß }á¬û³8}."×•Ù”G5Ý…U~)ùúõ²—3ÿÝÔZ'û½%ˆ+–ZcµLí°^ã@¥¢Qqsž€ `'aïÒ,&ì¼¡Ùd½7A€Z–(|@¸²k+6¤åµa`GNi€s@±Ó7)ØŠ Ïk”¬±­Õ‚-Ò=¼™MÐÃ9gOÔ©ß6ì8‚d]Ï™E62C`
oÎ–î! $| ‚¶;ÕóŸTˆ è•ò0X(±ÑºÓ‚¾ßÐ`*?)„H"%Áë2”@ƒæ‚Îÿèîþ‰Å¸9â|=`§neƒ$¯Óz}\ã]±Ò]q„ËµÔØÔƒ4‘ôZ2¢ûhcªÈ¹Wœƒ^˜uüUæ½^¡­Sf.b”Èø¢ƒzï{6¨^Š.÷uÙ¢É,jÇ–Äƒt°’UXySoºW­þÔ“å"Ôƒ²îÄHQuq•nêçå?l§§ƒÄ`øtöÂƒíX©, 07vŠƒîÌø$@SNùŠÏgÏ“„$–·Ð/ÒDåõžœ·¤‘dOe‘„¤â  GèÆø_¨AiN„Ô>R;Z\Õe"ýèè hV?e†„äíƒûŒ	‡&@fÝY¡šZ…31^5‘ä7£º|LÚü¢VÑ…›µðÊ#ªE+*h5—päið…±£âû¥+px[Uþ‹üI’°|…è¥¦uŽ3aù8Ë$ä¢ÕsVå†Kº&Oßd#Xk¿†bàÇ ôl†r?
öÛõ÷Ðï=ˆÖY°®†›>FR^#/·«Hmh‘ÿ#†ø[u¡Y5‘%XVhÕ„Çúë‡K%
ˆw–2ß[	œÊ#ýW.~Š‡ˆ<PYõ§ –yÎç‹Æûìò‡§<Á+›û¬¾e£JäÚí_cv‡Þ{ƒ}‘0#~ïY’‡é¦üµžàMˆW¢“þ_^óóo·¸MåD½vˆ€vÃç¹þÇœo“ª_)Dkà‰+9D8m}Óë[¶ÖÔÿÈ"|‰HáA&ÏØUðJƒ*U@uÚ‰ªf¿f¹RPW‘òøüZ¯¤‰Þ5G•ìz|Ú°|	)e=6T‰êã=ÂˆÑ…Î®ý&Šˆ×æ
ùŠþºX
’ügãŸ…óXœ%gÇ‹=›¨Ãª°ª¿¾ÜáT0±}Î‹?ë4oiùÒá©Œse3—òã‹„]P1 çöçfÌB7ÿ)òÑêŽƒ‹ ŸgT„üZ+3ôÊ«JÅíí5‹¶Svd”N3Ïé¹öÞÆÖ†÷Œ~rŠø)7uþS)–lTG¬à8ŒQ”B×’§|9¨Þ/Ä’KŒRÉ»¬#ÝÁx¿FYÓäŒbù¿ÒÂŸêH¦éÉ`I·rÙ1ÅŒ®
¬,D3HøC•œD‹vcvŒ»\ZŠ)“fbþN¡J†yÅŒæ’IŠÚ»¤,Kyv‘#ÎÎ¯à–Œú4ÑSwÛª
Ð××ÆîÉ¯n?Ä¹°ö9ãzìÅ…}bkÙ(' >A–¸óD©pþ Èè/B°IF¶wi¯¯ðx¦ù,/f€7ûÏñ¶ ^~-?NÀ©Ï¬Ó9üàG—†	fSZ¼«‚ÔËÞtÆ±ÌŽ+s#Uªº«¯Kc»vÁÜ?Ž:íWn¼'È)¥AoW˜,÷U–”Ž¤Óàmª‡…P!‚\ºÆ›/•ŽÐ€Ôí•<ç [ùD¦î›ÚëÄŽÑµæó_«w-E(‹'¨L¡‘rn¢K+Ì=¹¨¥´4€D®,Še·U°Ÿèà]Ìf®[¸»lí@ö ^¾‘nª½I:ð9æÿt91^‹ø‡Âo½ »gL8÷tÅZì–Üš_ëØÿàuŠq“`{‘š¨ÿµ˜úNž³#ñ\¿úPž‘nôšZn-KE…‹v‘ø6‘\–¦X’šÓExx23JùÞæ4/¯Ä9’z?Aî=ªœÃ/—jÃÈ:o’'Š:¡òáDƒˆ;Å÷5´E¹ð’~×æAHA¢UË&>d h™’¿ØfXõo™:÷Óê"#LoÎ‡’ÁAÌaP¦to‡dË‡i:]Y’ÈY
Eü )PÓ(opX*ÇaÐÒ’×I×p|ñ™j1øJãmƒ–”å×Tßœ2à2{¥Î¿]”9ê¦€crúËÆí™ùvé¿®&”Žì8ÕÉvC£Êž«ê2ûJÃ•Ô›ôIð!(v½ê¦ÅñÚÏà¼•ÂÝ,‘@q›…ñ¿Ö¹Qº/æ•Ñì¦Ñ72oùÛDµ’€éÑ»†–&À^ÏPŽ=³XfÇ¶³ÜiC¤-–'Lðò½”¼ NS¦®?Íéže–*ž¨ë•>ýù’ŽàA|½Q~–`ŒÖ¡Aþ'Ã—€ül6—â¬°ó«•‰ Ò`z?ƒ—+oÛ?*b¥JŽ€aRú/&œ—q«ÜµÓZ)¢Ö–9pC8’¤—ëæÉfƒgSEo}EüE®ñÝéH	™ö2sð¾1¤Š&ÿÿXð–Ð·®™šv:g˜H£0Ã[ˆžl MæF'›+H×1
tÞÇ>„P«Oäúàœ‰ˆ8,“N§Ó¡ˆI`‰ýœÙ/R+àïó"}Ê“oxNNs;Hœús~M[åŽÑÙã~&%jÓv{´ÜWÕ(o s
V©:´SHÎ_/B(ÂB0iòß³0CR¤džîä!ö¥&óN(ñ8`Êü H†Vžög›¤e­5f\ôXLb5,ÆxžþûZEw<„Yð¥›J	Ÿ× ¾ö"ÈÁžH—¬A£Vr÷,&Ÿï'Š¬À®À1Ã…+sP¬?ñ Âè¥›²=­Îf^†ºŸŽÝ¶¡@*Qƒ;^ÿÐ
—ÚC"HÊ)†¡S!Å•ïx°CÈ˜æôŒrV¢¬T„ÎøF;“kØj‰f¢¬ãqªeŠyrËÞýÊ‰©²£#Š¿²|¯¦ýZz|%4£Rá_ü—`æ;¶øÊø#!í£R ÚÁá7Ø=8û!Vðýý4¸£ãK+‹þ=Þ”™ècì
JÛ££ñââ5’#/¢âêšË¯w¤ ÎÏ§¸d–Ž2{9)d?ÑT¤åÒXuÚ¢oR›0d	¨Êc?¥&¹’ÖÔ¦lb"–Ä rÅ·	ýæ¥u–á­—iŸ9[ày*7²X8Ù¥»
äxà=°O\VEïÈÿè¥ÑHXzb.˜ßJ4¥ÞÖËtÿûì¥úp„ýðž!FàqŽÒ—x¾š¿©`¦» áòƒN{Þ×~GM½±YðŽ¦õzzî`³øb*[:Ú6~]óc§&`^Ž·_B‘µA€†0B
Ëz4§µkdF@0´úH´éXÏ¹kÃ©$\Bì@eNP·'v˜‘µw
©*¶£4äKÑëŒ4á!1&	} E©z Š<[Þ •½ˆ&¼ã¯Û©¦RÛ"ïèLÔV4§ö<‹Â Ë©ÅÍÚºqlB½ÛÁˆ àÑBk[z!©Æ¯å¬”8æNu£et—5·õA©î5\µàfHïÊÉŒ‰c˜Azª&´Ä`Ê^u=$ü»`ðö~Úª+ñ^el|§zHwë¾
‚(ªðÞ,@X-ÆýÌ’Á^)ýqÛ¬ÖoÀŒ xi¿¾þâÃ >û§­T±ÿ }‰çieC„Ì“¾Çcd­º«Râðn ‹îÝI®"b§;c¹0Ö.‹B•ü …Ô®|Ù%9™FŸø._L¿Xv´
5Z®“§«XÍ·ÛYzçÝ•zNó°±®Ã]›Ïª½é_cd/ïÄ=dˆ®ýIèðrÉ­ÎC×8tV÷4¬DÕ¯1™!öTkstôÏ‚Ü¬=:û Ü¯tC}ãª¹Àj½'ö±ÏH¯Ô2³1`Íóh‘‘ƒ…@áZÑ¯¯ãªóÃTúi¨[ÜÑøìËTk5C‹°›°ÖéÿPbBŠ¾WjèåcÑ°:Û6»É%¤kŠðð%°ÿ7°y'³3¢:‰p×;¢¢°©}ÛE¤àƒ «e€ÜÇtÉZ±"íÔüýR“]9"}=e1Iì²·Ò$½h7ç²?/ê‘þƒÛÜ6³–g!zB4Kö]éøadqF³íñOÐ1n½h`;J¨ü@qþÆœ´À¹7}¤õ‡£i@Èú¹OZåM´I•]RÎ,J1Ú…EWqpI>$_Y´X¾
J§)ùî´zÔwêšÓ2´®ÉÆH¢wá&à‚5€ØÆ¯µG\ú7¤Gì'´¨²'ÆÀ#µX$·û= VyÄ%AŒ¦á‡ý¼ÂµyR_ªÁŽ¥ –²é¶ïóJp´µÔÔøÞ¡ž_	*B¹Çþå¯Þµè—IJ_2!8q9!’9KÁµñ„xöã#¾Ãê`	X$2{3›ç¶;gaÜcÇÞR…ê¦À¿Öw¶k˜ÑÙ~ë&Øc/²Gœ4\$ø¶pgŸ¨"!§ü±~,I—A	¶ÂCPÇ]­éü¢ì£Ê@'­Y¶ÜœXaªñ¥ „Ò*è€¤nü§Zù¶Þà}\ð[½Äîþ[-¹Ðåmn·0~3ø{LÆ<ã}aíÝT·eW¸ß9ÎÓx`ÖÞÉ&Ö	ô·•«Ü‚ä]FÓÏØÇí‹:o|¸c”ÁQ~0WIåüøì¥Ò¶uö¸÷äk@›íÆÓDl\…ÂÑÞ¹@—µ#Öèª›ü&EXû
¢ÆÐž¹jÆæÎæu	_#‹{Ä÷8¾¯¹žE:4ˆ“õÝ?Ç£·÷§FŠ«¹äï­(O3?}õHhhŸ»:Ü“Ñ¹ìØ@(ãûëÑ¿ œ<Wè¡“äVF¹üÿÄêGä-{\ŒªŒÆï£3¬_>º	ÏdæC%½Ð½ÖaM«;Úº2®Áå 1½¢ˆ\»§DÌfºý;Ô
­Šþ	j‰¶–¼+|£º‘À%k_É³ÿp‰Ÿ¿ÅzwŒ*@yº–fJò5Jvª‚fL‡nù=÷\ºÛ†úEcÉa„ÙÈ+kB¤Ø:zºð_O6ïgwášZK_nvÕo*º÷ÑóŸàXîµQìÅ7erüçc»?%óÈí13ïlÛËæ!1hÈ»É£¼°Æ[q‰å‚¬Çn¡‘¯¼C¢ s-çM²tDîž•4Z¥V¼‡<<™W²[U‡0t0ÚhØ¦R¼’ER&‡'œ™Ï*ß`ÀÝŽ¼ÛW
“š‡×&í
K¡àŽWÈ¾V…½H7®ÜúõJÜáÂ¬Ä0ê¾¨O°—'¦Õ½ß§Áƒƒ:¿0à¤°(u>VfmbÐ£ûì.ïu¿sQßyàOc/xráSDïïÂÀn&xF	i¢ÌWžÿûÂ8#N1 JÀ¸ò½Ê+ŽñÊ³K°O`ª’¸ÀæZ—YúÉË€p\|åAsÌ¾Àö.+ù /^˜%çN0Ù·²’-`ÂF¢DVdôÌÒc`æî¬e+³åÂ3ÎWU$ßï´º­Êí„oèÂ’u…˜ûÔÅç¤@c´wÛd ¤’Âá€³êùí¼L™ã!¤ì‘$KÃƒØ—%K–J$–FÒoÖŸ]Ã1A’¤SVÐRNé<ùºw©ÈÃ¹¯"ÇÐ¨e_€uQÞ¤~@êÝ.‹Ä1³½ƒKäÈ{ê¤ná<&‹;.^Ä²oM\Hl"6få—Ô1DWÄóâ ¬ò2	|õ³©Caƒ
KÄôŸ8€O™>¹êT4pö5o+B}Å3]•Ëg¶êG7Yçy"1·ãÅ÷ÌGÐµU’W¾^%xíg®EÅûÚ 5™IË˜!×£¨ùäsã$†ÆMû>‡f)/šê^µ3(G™„Çìó“Çû`ÉS¬efI#pãkÛÈ•WE•˜FÓë ‹hXò¦ŠÈ4ŽƒœÆ‡-7È³(»sGüÌÈp˜9UçkM/Þ?3eÜ+—òæòÈUV±ùÓNÑ[Õ\{(¸E]ÇHÈ²½†		ÐcóõÀ¸÷#„,ÈßaïŒ™¾8é1ìÀR†ûyB§É²\§Ær¾7´,jZm>ÉV¿&E!º2Rã?‡Ç1ÚÀÉ+ ‰±m-¶üoxêËíÞÉ€ö’œ‘SÊ‚¨õ À#¹oß¤\uÉ¤È WÄ"ÇXÍÅö`:¿Éìi²“²šûI•wÑ%!š «ªÉò "M%„M9zd¿ÇÒþÝ`ÆÊ_	ô~IÉä`†Pñ$£}@øË%Sy ­–‚¿·F1Í¬æôÊËl*”Ï4¡û¾iéõ‰6æôËtQúhdúïE° [Þ?äá8ÆË­ÑÖ-¾‡Ÿô¬ç°êã~šÞ=?ÜÌEEñ€Í¸ò?åEBÓÁÝÌB(˜.çæüeÁpôë{6ùAZVÌ-#Þ	oï5ÚQ&Ô;«gÌBg4’’ëg~1)ØëÆ–KÌ]ÄŸÉ­gy»ë$_³ŸÂçÎWÌæ:´ØMÆð|-r‡Ñ“!¼X.Ìÿø&§ËYJ¬ÊßÜ©]TöC<4¨Íf¼QŒÚ,¶p¦é, x¢ö¶ÍA‡
µª\–‡:¦ðEÏÍèRsN¥ð|Òvsjg"Î>à1üÜr^â…’Õ‘'ï­#ÈÎE/¢±W3{7XF¶§ù*-[
ÎT£§Å´éÇ¢Ë8*yâ–ÞÎ]Okäõ°¿¬„Õm8V•%ÙÎ!ªNjåxÚcZF$ªS›²ÎŸõòómNþ<<úõØ„¥.©ÎÏmœQ=¶‚Êé1s(âopáÏ¢Ï[åªþ&M]\ÆÕôÛO°Ó‘¢`Ï)=ÁÿWP[Çmf\Î6PÄ„[Ï>«®ÈÂ‰³¬´ˆ	oÏŠHÿœõóy† ajdð=AÏ¨aGeùÜ1ä¹­`÷¬?l«ÏÊÃoèÁ\44r¦;£•®LëÏÚÁêˆÍ-Ì%“¬}ÊþD©oŽÐ/Ò9£]¢FÎJÊe˜~‘àBjÐDÈÎðUDPÊ¥y^ }¿©ýÐ˜'wY9D 7C9w5¦ý?BÐê[G€ùWãS‚Ž«z©ýî$âÚÑz¿ Sà‘¸£1¨¸Ç2¥E_â²Ñ¢‚¼³×–ó¬Í ‹Ô‡KB	ÑÝèM{=u Wu7\7oèÆ8ÑáoÅ|m(Aõ¦—Û¤´I–Ÿ4åQÓ¶B:.¹õÕ«Êç.“°©½X!ÓÀ@©î/ü\c
|^™º1Ô¿)Ú+vpv>wªÞtívˆ%Ô£Iªå³]Õ\&4ÔŒÄkÕbÕ§¯_ƒ¢èªiR§»¹¤]€ÙkÕÁ“gnÐ_Öê€s®qw7ZÕË©&Âà/r ç¾ð¶ú®»)nÔIÕì¡€Ý÷rÄÏ€’ú]+Ht2úÖ"(t³p(3ZèJ+ÆÞÝuX>üÖ©2f÷HÖ¸„ùCOöbþ€¹Ü!Ö¬|ga<,SGƒ… ¹,òv×ø{³=÷äy8 ZºD1&.bØ/9rå,™#sWö`é»	2ØJm$:p¯ôIÇ:‚ì @\ïç’Ù¸MI¾<ó§ÇC_ý˜"üc#cÙ+õŽY
â!ÁY.0êM°•ùcÙÃß°¹C…ˆ§˜T d8y`Û1Ú:}èÆ48“-ú(³B™ ~ÚHÉãŽ“¦Ñ§Øc,Þ
J¥B;èÚÁÜ0Ø)go}VdNq$’ `•Û%²Å1n¶Ð{$$‘Â”|ÛsÅˆˆ.æ¥}¬ÕàI‰–b]yÛ{¥2
ñÀéÁåÄ'Q´šsëÞÛ£Óâþ”°¤_
¬$QúEõ(òæÜ=IÔH%¹)6SfuÔlÈaOc5ÜRäj§‰‹?	T?‰¢dO†¥ÜˆPšãßð£ônà|xËÏØÜ¯{¼ÏÙlì‡=Ô·©þ{ÇâhÝUÚTDXÆ£VÂ¤È¹¤"j4Ýuš!#Öß3]áb†:§oS“èÝðB ¡ùŒ!Öµ‰—A“7qÚÐ‡ÞÄîë2ÖrÙ“Eõká;Ç—ßK¥¿ŽßMR÷C¤ïi¥N|S\ßLr0ãÞÇˆs`ºG,rÓkß]Yëª«â{;e®ÜNoßy?{ÆÔà»ÄØ±ð$UßòM{›Ê]ëG¦9)¸Sb*ß¥ee…ž
æû˜b(T¼ã¨ß»ú¢š´Öî°ž|\·)ž¢ÒM¤àJ¥5øÄ­˜Èšà,q¶TýàU?B©4#­hÃÿˆ…¿‹!eá8#Ðÿ”²V†Ed_µ‚*r	ôGá0Uwà˜›å1Ö†Y¨­až8[á6Ì÷Nk^ªŽÂhãùÛ9Ò§ápTŒI(>ÎÑ7´gB°G¡ìXcáž¾QpgÃAîf‚)§-kRâÊeÅK1Ä¹Í?(G³ÍøÒØâ’€œJÿPÒÜm¬S¬4Þâö?Q­Ü}ø; ÷8&¡ÇBô¥äŒ—ÚŽ<íU%HÓlÕà¯Ù:6ä´>ÌqnÜ7²!w-5vÔ5ªäÌ·	.Â;"¶3ñ”Ç5A8Á†äñ'ÚÁá´ó$ÈùLxÌi– X%å‰^ì#×F¼3o«pŠõŸÃÇµ(åŠjeè“âðNîðò_€¸{êw•æÁ_9ÞÑy°øw‰-°*]oÛòæ‹…ìÇXYqœöÈo·GÃŠ¯zAæâ›²ÑÖCK‹)®wZØÂäŒS‘æ°0Òë.ùr÷>¨‘yèìž×¤D÷çQî	Óµ¦¼{’¾rú½“Dz|ç½[ª²RR0•• ¤Ô&É·‡ÍçñÕ`Çq­PK²#úŽ¢¢ªMèáLÉc,VÅæpJ bx¨³HÅè‚n•Ô›&³¿_møÐØÍ[ðòëÄÂ²õí{Ëî<OÈDë]­ Ù†l-(îÑþ”˜k¨¸-ë`wsØ¡žO>úŠ=RidÅ¶ €ì4INpw[A¸^½7ÂÇÐzì5°à~ -÷™I¢ùs[ÔîŽäíZ¨ð«~@‹5á0ëÅUä×#íl)ûæX²?Ì	M(<udª3í#Á\›ÇÙUE=O]…e€ÁTJíg4T¯j¾›<>¥mÑW-÷ˆZíp}’|G5Y÷çÁ1¢@çœ	Gí‹Oóå‡N¬/þ4†«éÙf‹'Îî^TðcËÌeÍvò+Ø¶93îºÊ}:´NØ†÷¯¦ÙËöùïNÅÚañ[J?¤kú¶]a'™³ïsk
”|:nB”©Æ¨BÃ¬ïÄD„­ô²Y¨z~diÔ@¯¦ïÇÄ‚Ö‡ïÍ5Ò€Ã0ü§sùÑãïÚ»3í“uIëæYÃlhŠ’
Lïå¨»Þu1dê mM‚É¼JŸcð(f]P)Ìì)Õ–Ï¶	÷P†2ðX?¼6”ƒ›«TyðåŠ”"Zñ» òŸûËôàÍ cµ´·L‘ñb³! Ê-çÚ"æ´ªåŸªµ6ñhÝ>ÇvåË±ØÐP$Óñ»RÙh^û“dÿ)F–‰s©> ò¦à™Æe«<hFÆ6UL,s²òÛË\&o^¨2jå:±\:dåçóz`ÅþË#©7,ÐhR¯IÀó'ë¦QZ|°ÕÙÝÁb)n¿]só]o¤‚ô+õû·cˆ	=˜OÔ•ójóLë÷üý÷ëFã2µÜ:uQó½5§¬_šûé×ý›•ÃÎÄTôŠ4,¾ŽÑ['çf¿Âîß;'ŒôžoÙ@SÓ«e#¸Ôj…ºnÐ3ôÒø_#sH›D,^®®ð±ýõ=ïD£ylõ¼Ê„$ö¡™ê§¹õ{4Ýh¡›-àïÿ«w…ï]¢~Ùõ‚W®Wíº­€ÓLŒ:ýG¨‰òAõË3¸²wj„Ãk™`OX Qõé< ë…!ùWŠ<A¤X•îC¦£õö¼L¹iÏÛäó˜áR&¬ö^·€N…QeÇ"ƒx™@)ceöÚ»	«¢¿ÇÞÊ±!Wñ§‹ö8äÐ=Þ€Í‡nê]›©y	›öJQVDôX\­\ÊsåÖ1n•²öJ7Â˜ÄßÀ«¶Ô{|‰ö¿zdöWëøv¨øúêaXŸÌ©ÝÀßöXÀCà×š"éw°ï®Á‹Ã@^ö`¸D	½ß±nâoeÛÞýöÄø»º5¤Ðwá(É«;!õ˜’÷ë‚~Ùuÿ€#Ó0K7Êß}÷g`92o¼ÛøîÏ‚Õ!ï½T“—ô÷Ð	-Ôõ±¦3Ç‰8ÄYÄçŒø4Ñð4 í¾ÌÛã1Î¥ùø€›¤t·á9Ç_
)U[ºônH™ø¥ò‡ø©]ø×Ô¨ø¡®uû˜lø¦é1v8*œÚ 6:Áz'Æ½ù¢¾Œíìkù%'lÕ±Ÿ4¨ù,f­[Z
Ã‚?·eºZ0Œóù©*ù
Q<°]ï¸”ÈçTƒÉöÒùë^Ü2Ä¼p¸^hb@mÎ&&sùú?É6-o>JHö…G[|ÁE½ú}6ä7)¸OÒ'½:E&Ú¼úUÈ3[³
ÞN÷kmŽÌÂ½ÓûF„ çÜXŒ	9Žª’ÎºpÛÅ³ûJ#rKÔ‡²ëFo‰÷Ál“ç–ûˆ!Í¥„’îy6=áž”ÿ¯jÊÉûþ¢ZÏëu¿Ï’Æ20^[’”Òá`üïÂÔ›¼Áõsî3l=Õÿ\—í?ýŽz2	ôü¸ëô³¥Ða+ùf]ýã{NÊóLêŠWª´æšmØÒ˜ýö£oi‘ß¡Áì:ûº||b¶Tnþ=å·aÁY¶êÝÀ”sªU#þFu§»Ç¶[¡”ÓðH€àW)þ¹±æµ ñ;MÂ*W½{öBþî}RI»£ ¾÷.K†ðÂÃ›ô^ÜþðœÿtÈ"ŽþbŠ6+/Á4[Îÿ8d î[æ˜j¬\¼O<Ñ¼ˆÿ’»Ó´Ê:ZÐÎ¨*‡‰hH”bFfTOYEˆo±€VS…¢Î•I—q@×ch“!6ÓV'ÒÛG±´èéý\ùúqì*„Â:û–6çÍÞDÓÙHãSY˜8§ætÔû>öv®Ö»÷g ÌaÈ÷ÇÚ\4:ðÉ>	»ŒuñhaReD¸ëò{y>´¶ëNyÝ®<Î´/Pá°9TóEÝ<a’€´
 3„,ÒÇÿ'Æ=§cÄÈ¸§~è¸eI9G QØ|¨ÙC‘ùÐô;xi=¡/ÙD›kÝJrÃÿ3I› ˆ±ü\¸T!×éÊÆM…Ý}„Q¬¯‡K•>¦7 >±ìŒ
ïé:ØÃËÒ©kb=½Ñ‚Ö÷u ."ýbYˆæ
èÚrÜ3wÝÞ×·OK‹¾qÆKÿKHlÊGB%`w‡Ì6ÆU§¥[î ø^	¼å'ó ƒ~.Z˜—Â·ú]6Ä¿q¬HGšÉ
™ÃìXÄ˜Þãea5¶’s*þŒ~¢iÙŸþÂ]Üß·Ž/ü3Â^Ïëé¼ðjÈ:ÔB¥¿F²sí±–±.Ùy ¤‰,ƒŠ8¤[%C0ò¼MË¬É(øO¦ ÁzÔµ£lß÷)ó#8'“ÅéC“[ïdOÉª;yˆ`ùEj¡
EnÑèCoÚ-R\¾
s™Í›!Ã]µl’<.!jýˆq¸œ«·ýá2#„ÿnÂŸcŠÎ"¤èˆ6i³ô˜u `»Ôã»¦N%[9aK-YvñÊ÷+îäòZq—†¦€i:„!eVå|yLá‘±Ôù+ãw~1qAÐ{!ìþ¼q•5T«õ#¦^Èç§T*g+ŠPFLó-´Þü.âÕ÷• &1å”šØ•®Í¯1à´;Jô‹¨4¼ ³¯í#g‚3šX^Û³§ü©~/­xáb:-±a}}íKB™	°¤Ð‹†ÿ¶sz]´]"x–7tž~ÝcýZª—½ò¯RÄ¼AbøÎ¢ß-î«ìá³¦f†…¢›§~h&m°¤	Š^Ñyûó2½Îq“<¿2s_ö¦Ù2¤Óªfo¦•Æ½= Mˆ²¯V¾@ñxYJggw¦lohÀbÀ¦IÙ}ÓN—ñoU{¶]OÕŒ?©ÛeÙ°Øºf¹\b»®¾¼ãn©ßN°qb}‚|ºrŸõo¦oI±}u¢L‡y¢8avbmÈ‡t‡’.øuó±_âýá®fZlª{A\¶ºR½:	½ìh=Þ‰Š-ôLøéÊ¦-÷Š9`­ógAVf‘`îGÀsÈmdmÔ”ghJ9™&{X<:³®ý¶Hãñ&eqæ©lã¾Éž[×ý.õÍrrQ‚%VæÕz9u1;F‰ÝÖ¹x*Ÿ8S¤ý %7à™ßÁÒrÑŒæÂHÈvý¹Á¸>YCªjtã}è@Ñ9³œ.Cîú5›@\®´î%Ò<1uí°3?Ü¼<ˆZÓìýª¾ï`	06Aƒ—Ö¶\{£ã¶„<Wµù‚Ü’SQÙÕ¡¨*ü#•dË)p”,?¬{5˜/ÙÔ*HqÆËv~s¿”S1”¢]Æ+à?æß$=Í°¶ãûµ_&x<6¡ :°ì¬£ì[ÐX{¸ËÒpd‘sÐ­Yÿ{hWrò–EÒ'MôK²NÁ•'QÁ²‰Æï`¬$¶ß$m|­éPÓ02yÃ—ÏÞÝP¶š*’Ú)³<ç¶ð:O¦hd–‚ŽÏ†z('ÿáÛ)¹8#¼eMÅº½ÛÈÈ²üeDªRÍb1HŒBl ®0xí)Ûˆ¹lò½¤VÐ$Ÿ|·×K@b½_ãuGGÍÇeƒsp–TkáŠŸt?6¥±U–B ù4²µ”¦ê N¶vc©£žÊÐ(‰ÆÞÌþTâïWùÓ¿ÁÁšé»jnyÀà¢Õcó~—éA{Î¡É¡€KÞ€œ‰¡ªY××GšÂáößÃ•IL5dƒ¶èÍ°#ôÈ‡,üáCáfþ ¿eJ–9Çn»Ú1/?‚ÜërÃåEMÎÂ6}Ã‡™HªB¾×Ù=Ì œÅ¦Jî¡¥•2¸@FÇ
F!5ò
ù+ìYôþà;ÔmòÜÊ½+¹¥ö¶\Àªó%nn5ç'®•% ¤¶¡Ã:ÙÜeÃãÝåÖâi1+š|T.!§ÏØ¾1€këJ•„Ý‡Y%×0í®KI‘O¯_‹jñi ]Ø£w™¨üD*T(Æ…	î	{Ñ'Rìë˜Ž{=kž¨éw­ó›¨äCLÏ”f¤Ñüræ¬‰¤ãVHÊrªlùŽØï“‡'Ùwá g¤¶ø×Kó©ÕÞT°‘:ÙSèÔv-Êø°Éê*]µú_áïe¦±žæ\këiv^ª52ªÙHùÆæ3<äŽ!Kn¨h‰ÂÏ–3nè\!~XÐ_'j' >øx°(öpêë[²xks·ì‰,îˆqÖhXØõƒWU]Q›•/4Ú{"3=a%y´pÓ{µÇ3§7eÒjyr‡Œ9	Éƒˆüç‡ŸÒì¯3Òé-Oµ—(ÐK[á/ŸüîÝM„âDµ|®Áx_öîÃCµ{¿¢!¹—mh¼¹ñó{ulGýY>jÿíö6áhkx-.K-@„{·#£øåÂŸåÚçìÛºã&ú#Þ«P=Æ ½o¥{ÐNÑÁ¶oÔµ-¥vüRg	æ^½(ýçÿAÓÚíþ£ÖöÚù–?w$þ\ßíõ²à‚î7‰·ÓÔIù-‹ïh[³ÐÕXb¾HŠ0>¢ìbçÝ$¦î/ùúù%­4¶k)
ùÙaÜ=Š1(ìø9k“U-d–Ò§'ÎJìÍ•ÁØß<Ä@k\!¶ÙÐU½3“Ë`–ü./]^Úr˜6#Ö¼ter%­n ŒÛ“qb-óDžó+¬&êÁ•uÑUã7&È|gJ–fJëoÕ£ÇÞPƒ«êGj¨ã œöWç½hÎ@uf¯F×Xf‰Z•Ô7Ò;¤—,/£,ŸE“$z@ju¦=WûïïÑVC-ôV¶cõóÃä,Ò­9½0mŸ²JÑµüìòRÏ›¶&!dÍ#å])Ûò~kÖ;¨üàÄ…Ùq¿¦Ct¥äµiœkÚäÒ3QEoóy/øÕ×Ý)mÐRÔŒ8+ÐÑôƒòÅûr—ã­º7™$iõ<c•^Æì›"ë¯4x]¬–X»P X¶Ç°eL#»‰|½	W¬£¹ÒXûV!NÎŽ²ÿ¦t8*Qš›uXMW2—vÛDN	¥Ð¥yqÀÒóòxpÕï²wµ'6šì“„ÈwE|·Ö¦9¨éWBAÌB  ï†·úœÖ¹Þz5öuÇNáŸƒ^Y<Ÿ}H!;ë5_C’Œ’Ë- šbe¾ù
Qw”ÑZ¯^Óü5µ‰7Ÿ­µúøµS([¹böK‰|G«Hå&ƒÕØÛ \?x)’á^?%¢‰²äà#ÑÂò'W¸ºKAÁÂ	àÿ´æJo¸¿l„œæÓ¡^£‰VÝÊ¸¹—ž`Ó‘ßR$ï¦¦‚¥¶•±¾Õ“ŠûEý­‡Ü¯ÓM}W ”Bíò†.CD£¯b'b³=–‡ô›¬¡ HPŽËV„#³·³31zßM©^¶Z.ß}“daèõm	ŒM1JÈ}/—‹N‰p&†c\s‹’}c Áù:Ï…\š—ÝBå…V³ûàµ³gƒ4dQ]¯Àv±]ýÉ0nv )’ñˆÝïê²êJý+l½vÆH{ ÜæèÜöe_€^4šrHw#ùž\ÐZÒYƒºŸ–¨Í·wB00D¨ff?Å@òÿt8|(‹ºKÿKYYÔ®ü0
[üc€Ó$nYÈ¢´Kï¦Ñ,ÍN	"ý#)JÔLGRÏ[%!fžáLíB¥®V­ež#¤ï¯Ç&77ï¶¿'´Yt&#›¥‘Pp%4Šóf>#ÄÁï?]Åü ‚GGUxN;A0âo¥1>‘@cLn—ÐS0­ÿo.Þ›]³É8Hï{Ôía"âUÜb™ñ‘äð^ÉBwz²º¦-1.Ã¨–a£[g%Ì¯zÒÏ™W`éÿßÌË‘/¸
GOâ¯ˆÁË«äu!>°+J;ß¯$ðæÌ.±µW oFníÛYÜA#>t.‹OÑŠ ó¡ ñÜ ÷™ {ß ½2 C% Ýã 9  ø 
1Ú 
µ 
? D © 7+ Nœ   /Î   ;N  ã†  ‘ ™ åˆ  o 
Æ Ž» ÚÅ öS §• 
è  TA H=  
X¢  Ê Øÿ 
˜7  É ¬· 	Áí @æ •:  { xì M Âx  ˜Õ  z8 2 fg sÞ ë¾  #x £÷  ä /é H ì $î  ý× [ w) æ‡ 89 x' $ù à… § 	«#  [Ã  v+  ›= @¢ ú« 
æ ðw ^
 ª, 
× Ó8 øº 6‡  #  æ­ 5 É< 12 j 	ÃÌ d/ Td 
Ü¶ Z3 óe Ð a¦ ½Æ  ­2 u 2° ´À  ·Î kâ 5 o)  ù &Ñ #e  Y" u ¾c F- èi <Ò 	þK `Ã  ôä í  hb  ÐC &# M hå BŸ  ÇU  è !¯ ù»  æ øi Ñ¾ -  áü º  Ä© L! 8 À ïæ õ  Ì³ V¥ GI ]¯ 
ÚÜ  W 8[ $ 
’ù ¨ž &) Dö    í| çÉ  ÚÅ ‚ Áz x0 æp £(  Í—  ‡à  ØÅ ): iu  Åˆ  QL ÿ  V œ4 *] 	ÀL Öe P/  [ +K  T  [ W :Ø Øˆ Û úa  ¨ 
	3 zÚ  ñ 
Z… ”“ ©Â 
ŽÈ E ¾/ Xý :· 	5> ú /î  * FÉ 	ªÖ d ! r  mJ "® >« ¿B ´² <× « !í †’ 	ñB y ß€ î¶ ‰± Ùü  & : d ö5 =g Pœ … D 8ÿ  km )j #/ ·b Šö ƒå Ý ž Z 7  XY â  -¥ #  ¦g ÁÆ ;S ¯ 	’© Ò¯ O  @† Q× Sü F àu  	ÿÃ ëÐ !ï 
«Ç ¼Ô C D_  ëú 
 a N  Îó 
 :  Ô òÚ 
ÌA n9 æ Ùw `| ;á lZ íŽ  Ê #ƒ ¼  '² Z- -~ ®ù L° ‚õ ÷ô L  oÖ s8 XB (I  n 'K  Ì4 , 1  
ÔO 
°‰  ªu +u ½  e 6© ¯% 
0n r ›v [ 
¥H  +#  µ$ §  ô QÚ  z  úP   u ïn TÕ ôÞ ã  G7 j › A ù/ .9 û¨ %;  Rõ Ú‚ º– S¼ \Î SJ ‹^ Ø˜  Ú Ÿe ±­ 0m XÛ v£ 
Ám åç _ 'Q =z 	¨Ö  ç i u" 
åW 	§°  Ñ W" ?œ O  … 
ø² Ð   Ž Í Q 
s #E fW ôs s]  …– Qm (µ ¹ñ `² 
¯‚  ¢Ø ·¤ ;r „j g  jþ bÆ ¿~ Ûª Œ" KA M6 F? – ôh  ºQ è| 6 4° 
aÛ ïv Tp B WÊ 
ðÖ  pŽ  ¾ °Î Ô¬ ¬# G( Q ¸ó -õ  †° £ ¼ ù> J– GÏ    ]Q µ ±õ  ‹  ³Z @ š® ùø ú¤  4£ ?! ÚŒ { 2 u7 U âI )O º— eH 3f í/ ŠB È@  !ü 
Í­ [H ° öÄ 6™ ˆ Y# ¾j ò   „û /v P¬ ÉÐ I— iœ × é MÅ >È õþ ‰6 î  ò£  aï  Ñ… Å• ¼ 
³Ô VÒ @ 	ìÏ »Ý Þ; 
4ô · SÍ v© ã  ëj  dn * ¸+ _‰ ©Í Šu 'Ï  Š™ µÎ » ¿ö <o »µ %Æ î …Ú ÊÜ Pf òz  Íý 
Ÿ  ÿi 
 ¯á 5F @ï 
ói 	 š ÏV  ÁÐ · ¦Ã .  ¥Ù _ f MB  l­ D ’  ß\ Bg  R_ ÔÛ K. HN 4(  À ü$ O ÐÆ · + C à#  ÿ )N  iû Û“ 
¥ 3ú <t iÙ 8t ÒÂ ­! ?ë  T sÜ ~ ]e  Ö ¼% $ ¨q è ,& 
g Ö/ 
À  3^ þ¯ ·— ìß óô WÝ  Ä Hì -V 5û aú á… 
²ï Ôy ^£ hH ÿ lµ % ¾ FË 
Ë¢ 
îå i >| @¡ ƒÚ  Ú Ÿ¦  g~ ¸4 #… eñ  éú X# 
ü( Âÿ oò ñ" }¶ ßY nr Ñ 
6> r 
®Õ V® µ* Ñ® BÖ ‹ Ý &# Âp @r Z• `  2ˆ "Œ " –R ü ÿ, Ðè  ø  Y– 0ø è šÜ 1d  ˜ 
ž DŽ }    M¨  £Û  tU Y~ Tƒ ³ 
ˆ^ ßš ¼Ã ,Â  k  ¾D Õ­ û   €Ó ´ R® ®I JI ° ,³  6­ "	 =6 YL 
¨K A¼ 
ªó 3† ¥÷ Ä
 ½ ©‹ ·2 d×  n ¬ óo ¥ƒ çF  ÷f üî È °%  
l åá P Ìr  ¶" ç oŒ ,Œ µ· œ  Éˆ ºû 	*‹ ko ‡­ +õ ½Ê 
òv úv K{ ª  •f »­  Y  Âè ÜÍ j —è ð I’ $Å  
_ ô º8 
  ég ‚ Ëÿ Í  s »Š ( {k Í¯ 
* ‹ ¤   âó  × Oq h: b 
Ö êu „ D ˆq Æ F üæ ï ÿM 2À m¦ ´ð 1
 	•Ã Ž C 	 IX Ø¢ 	,  R ‹: 
Í' 	 Z& <? Ä‰  É „x Âé ù Q j´ .Õ  Æl ½ê q \ -Y 
fÿ  ´ x˜ O\ JÓ Öæ IY ý ‰ü ØÝ JÙ Wã †. >y tî+‡¦S&cm¸:°=ø.&¾²‰©Ó½†‹‡¥cãÏ2úäR0cÈ070701015D6CB300008180000003E80000006400000001642C0FB600000000000000000000004A00000000000000000000005200000000nvme-cli/.git/objects/pack/pack-012d5743c5e335beb8f539aba478271454908590.promisor 070701015D6CB100008124000003E80000006400000001642C0FB500006171000000000000004A00000000000000000000004E00000000nvme-cli/.git/objects/pack/pack-012d5743c5e335beb8f539aba478271454908590.pack PACK      2«
xœ340031QHÎIÌK×+©(aiYüüá‚wº?.­H‰¸¹î•=ÿ’tCˆ¢Ò¤Ò¼’RÝÄ¢ÜŒ4°ZÇFlÚÏ×üÞ·|e¯¼F@6ªÚ‚‚d3“œT°êìUï÷¨Ý>«#ýñ‹ž-Õ:Šz%§PU[T€Õ.”ß§Y¢Ñ•˜l3¡ìÿ–ö=	9 .òE—©xœ31 …ääÄ<†¢}vùÖ|œ—&Ûóä'÷(®ìhô6Kçd&§æ§3„‡ÍÑz|åùÜ ow×f¼*ãžò¶ÞÐÀÀÌÄD!7µ8?O/©43'…Á{ñÖ_¡¿&ˆ6u^Ü¢ÑzÙ#· 5*j®xœ342 OgW¿`W†íSeWßizëvù¼ôão»­òkøÌLLâ3óÒò¦¿~v2­9=Ø5¿Öõëºw_zpB$•fæ¤Ä'§•èe0ì|sÃAãñï×÷3Ì±	±pò“07 ˜•/Ò¬xœ342 OgW¿`W†íSeWßizëvù¼ôão»­òkøÌLLâ3óÒòÎ8¥›Ljœô:½NÊPóÆkÙcÓ¼¡
’3R“³ãK*Rõ2š«ÞWK™­ˆëÒû^zsÑI¬ãÓŽ  ·i+«®xœ342 OgW¿`W†íSeWßizëvù¼ôão»­òkøÌLLâ3óÒò6Š±*½½òçoÐäXK¥Z[ÉTCÏ7PÉùy%‰™y©Eñùizî‹}[­}Š?hð™ñ¿r4ixr¿I ç«)Ï¨xœ342 OgW¿`Wå‹š®—•d¿ÖÎr9”¥RÎ%lÈih``fb¢Ÿ™—–Ïpäó£k>IqÖ|Ý¼RÒ9±Y–Ëª '³¸D/™A]ü—½øÓ5r>ûe¾ôÎÿëül)²Š†…ÁŠG'L}_±ÁùÄŒg_&ôK… ê3h xœ342 OgW¿`W†íSeWßizëvù¼ôão»­òkøÌLLâ3óÒò¶VÅ¯:Ø'¿TaÚ¦—ÛÞö*ØÂU’šTš®—ÌÐ8Åéú¤å5Â–+îéažÄÍî-UR\RT°R%FÜéCª_Àvõ2Å¶–s!)È`¸)¹Ã×sŸÍçåÇãÿÎPú#ž¬œŒP±(ƒaÒAÇ3‰ËJòÛSN·ËHgZÅF GN¢xœ340031Qp
vÑõõaè¼gê>õMUÍ­5œš©¶f!¼†%ÎÎÿvn”x¶uÁGkßCZá{«¿9ñO  ËUÒ¦xœ340031QrutñueØ%`´Nú ôSÃ½‹:bøw/w9“fQŸW–›ÊPÎôçä‡3&íÿ¶Í1hhX¤8]ðTARbq†.H‘nr~nANjIf~ž^qÃ¯Ç«VpÔj…E´.u{ ól_ôç5 7/I­xœ340031QHÉ,NÎ/K-ªÔKÎÏKÓËÌc8ëà«Ž³ºg„T'¯‘¯=õÏee~ Gg§xœ340031Q07ÐÍ+ËMÓM,-ÉOÎÏËKM.ÑÒiz™y»¦	¦y}2õ*[Õ”æÓÎ‘÷Óö{ ûÛ ¤xœ340031Q07ÐÍ+ËMÓM,-ÉOÎÏËKM.Ñ+*ÍI-ÖËÌcxøŽóòÖe{ª'íc/úÅºw²KU!TŸ!D_f~A~Nfr¥n^jIbABïº¿s=_|(:¹öœóu‹’°ï&k\® ½0®xœ340031QHÌ­ÊÓÍ+ËMÕKfxàµÔôÇ‘µRý3DNÌz S¸-„å¯!º²†oG~ìÞeº„û‚@ùC“«­¿Î˜ «± þ®xœ340031QHIÍÉÑÍ+ËMÕKfè»ÈW¿õÙçøÕåÂº®Ýê+|¸Ñ•e0¬úpO@Ç!BP—åØß3“Æiþ-¼ #„w®xœ340031QHI-JÔÍ+ËMÕKf˜Âñ”ízÈý9FŒª—6öžÛÏÏkˆ®,ƒaén®'l7øÇ„	÷»¾gä9ñÿ UÌ…¢xœ340031QÈ(M,OÍÔÍ+ËMÕKfWh;×cœ}dš~;¿þ'k§Ãrí[1f0|™—Ó!øòêTQåW²ZwIæ]0 µà¨¢xœ340031QÈK-I,(ÐÍ+ËMÕKføzšÝ˜cÇ¦ò¬–ÃÙL¢3ü#1f0ßóvºr[|G^Åú%.Ë¾¬9/- Ÿo¢xœ340031QÈ+ËLÉLÔÍ+ËMÕKf(|°Ç˜õåÁeýwßì¸[üïÖ¹ºØ_†˜
3lÛùD^¼;§õÏÊ³[6˜°Ü:ÿ ’B$õ¬xœ340031Q(N«ÐÍ+ËMÕKfð>¿?kï¬Ãó}Cw„7M˜mòó¢!šªî©7u3/GTI™¸¬xÏ"/ÒÏq! Tß®xœ340031Q(NMLO,IÕMÉLL×Ë`°üpyÖAM†/'ã›Ôo°}ütò‹!ªÊ¼²ÜT½déË\!…Cî.ãîVžþ¶;dƒüÌTl*3f~3*þ°Ïpî’.µÿÿ#>L»°}ÝL ÷ì4|¤xœ340031Q(ÎHÌËËÏÓÍ+ËMÕKfpò¶/Þg°eÝs“O†K³.ë÷XúÏ‹ÊÕèmÛz‡mŽ3X;§nAöÿÒGÇ%MŽ"Û¢xœ340031QHÎOÑKf¨:sÔÂ'Eâ2ËfïânË,UÎ´?†Ì:gÏ~I•xTe–¼U›—}ö{}¸‚¼´Ìt !‚†ÊßÚdŽ­X*ÿW‘Á1ãñ{T5ÏäÏ9qì÷ÄkÇÊ²íåÅ]¾™+AÕ¤$–$ê&¥&Ò—x¥¦»©Cÿ°Ï‡­Ïž>ÃÏÔêŒ¡,ƒ3n›ÏCÇ©ŽaûÏul;7Ýˆ—óºTYFjbJjÐ¨­‡ÜôÅ,¾õ`÷¾»ÌWõƒožý‡ª&ƒ©êk¸Õ3Ý}\Ç$V,­’¤³Ï ª&7µ8?O/©43'…!xµ«Žâ›é7¬êÙ¿§Û…ÐŸÑ-Pe%©9©¹©%E•º9ù ¾|ÿÝ„—ÓsÕÓÏ_Í«ÚûT6  Å,¤xœ340031Q(É/ÎÈLJÔÍ+ËMÕKfuø·<vóûIË¦©†·q2Ÿ­/«2Ä¢2ƒ!‰ãë}‘åå“ƒ~ß˜){AHúƒå¤Ï [!N¨xœ340031Q()JÌ+NNÍKÑÍ+ËMÕKf`rüê¤±òü!Ùcy•zjßåŽbU›Á0§³Ã‚Gg²ßráË;X<ú%;ÿ BØô¤xœ340031Q(Ë,*É,ÍÕÍ+ËMÕKf8q_(‘ï}ÏÌ}/ßjû]é´Ü‹Ê.–Å.[EcxçÆ4ž.[ueÛk \!°ª	xÚ340031Q(OIÖÍ+ËMÕKfÐ·>òµ§\Ñà´è¯>wÕEž†hª2ÎÞLŒå=wlÏ–½.ožd~›øì+’ªÒ’Ìœb aÏä.±û¤œÈc[±»(§.À˜{†²†æMïŽx–²NÍ{õü©}Îòåý ‰=*¦xœ340031Q¨Ì-IÖÍ+ËMÕKf¸àÒxâÜ‡PnF—€SK+ãj÷¯ükˆ®,ƒá~ldÿëU«Eç2>ªæc²N]wÇ/YYiIfN1På÷9[WnëX¿×‚=·TýABW@7 k..x¢xœ340031Q¨Ê+ÖKføÑ0{IÉö‡–ÇEã¹4C£w}Éó˜iˆPÁP¾ÿnÚê?Sn~Ú_Âp?VdïW¶¿– \Tƒ­xœM ²ÿ100644 gen-hostnqn.sh ³íñOÐ1n½h`;J¨ü@qþÆœ100755 latency 
ŒÄŽÄ.i%«ðuKôùê‰4Œ¨xœ340031QÈM-ÎÏÓK*ÍÌIa¨ãkoéŸa;©`ÓlçÐi_ôv}lþgQV’Z\¢›X”žœŸ—–™®[XTœª—Ì |âÊ¿÷çfÞ}R.ß÷×£¯äîLedÅ¥ii™ºI™y‰E•p]ñYGVLË9UW£³ñÂ<æ9•FË‹ŽaÑUœ	×±g’kZ»úœ™çëµî³%¸;—¯YGif^‰¡‘PPñaWW‘gw|²*éÊätùà],Š*“7‹FÏß¼îXßÑŽˆãÇ-g ÷fp5 xœ340031QÈÌ+IÍÑÍ+ËMÕKfèÒ<?y¯Xš¶ê9ë3ÇJÏwecÖ1ÄP—Á à±r›GñÄSÁlK„/Ûùh- l!Y¢xœ340031QÈÍL.ÊÏÓÍ+ËMÕKfØ_[—ÙmÂ_VÇÕ:¿ò¿×šnbˆ©0ƒÁ¿ºS©­X°6üÀÓ£ó+‹s®F¥  ÷U ^¡xœ31 …¤ÒÌœ”øÄââÔ¢†¼Ê'XC’bûÏß‰[j/V¼ñçB°²äŒÔäìø’Ê‚TÃƒ©ï
OÓ©,þ¹wÁJ‘ÂÎr®PEùy%‰™y©Eñùi<ïz{]³ÙýtÎþIuæ.B”¥æ¥d&æ1OÓú¨7Ydµ~ËéãÎuoþ¹g
DANfq	Cçïÿºk¦z«1O°Ö‘íØk:_þDº¸¤ˆ!pæÕWËÊn/Û˜ô±Yí—˜yÙu ÛoVå¨xœ342 OgW¿`W†íSeWßizëvù¼ôão»­òkøÌLLâ3óÒòÞ?]±û^©aÊ+…\nß¦“{¼æ‹'C¤æ¥d&æée0˜™À|¿7ÖP¡këÆ×K¯?› O’+S«xœ340031QÈÌËËO/Ê,ÑÍ+ËMÕKf/î3¾óÕ{ÊŒ>ý¢ÒÐ8û0ClJ3th¥Ú}<<!\øG‡Ï±™Êµ¡JK*RSRÓ€ŠVV1tÙpGß“Y0uo‡ÚžÇÒëo |ˆ-Â¨Rxœ340031QrutñueXú« åï‡yŠn
û.M¯Ø7kÿÊCˆŠ†Ì†¬y^.®™*{TÒ¯°×~îÿ•OÎÏKËL×Ë*ÎÏcàìßÕPÅ¾“19F^ùèæÓ»oHC•å¦è%•fæ¤0$ó›Þ¶óú‘®~üÿô¿Ãå7¢~C•å•å¦Æ'–”$&gÄ§¤‚©¼âø’Ôâ½‚Jöƒ¿žÎ°Ý¦éž9ëÛÐ+*6 kLÎÏ-H,J…«ïýóÀ}zgZpÔžÕMWNß+9¶ñªú‚J¸â^¹*Vë¿x·jzÃàóþù$ÅE©‰%©ñ¹‰ÈN
¬,Üª).z@µjò*þl³wÈºRŠsájojí‹äz¤x0R^Ûà•ï†©?“‘Õ¦åÅçä§Ãuìšx@5;þäæÿó÷­*ïÑr¨DÖ‘–SZœWýä£ú­ƒ·|V9ñ“Ù§âLæ4…UÕùE¹‰%påOý8g$9Çt&ÿoÉ+xÙfÒCQ^Žâ–méâ<¼óW().ÿ³±NÇsº£'²òôÔ’ø4`•¥"‚§Â_ûÏí=\ÁïVÝdØâúZ_ÀQ ]SNRb|q	P#B[ðOóäÅ{útn.àÙø2£pÞnÖdm™)ñÉ%E9põ7½N¿Ü°ÒÄ8|aÅW‹G	ÿ«âÑÔ#ÅYÚ£ŸVw
ç_çë“/â»göZ€QY5’ƒà¤¬\Ø„ýj‚®Š»Œ‚Û·7¼u Y0}¤Ä—e– `Ï:®5t\Œ=~8OãÂÚ]–\†¬¥83· ¤H%"éÓºõÚß©ìÐ±s©3ßÍÙ)õx‚Ò4}¹‰E%(Ž›˜÷eVTž®·kkwÙÄfc¦-‹@ÖSwõÍÂ†»ßù‹Žœo˜ô+V[Î£ÄèººøÌ|Òý–lÐ`)µKËMº°ø÷½÷¥JnHO-)¿ ¡É’cqì"·s^§RgÔM|à”…¬¼,µ(3‘Ýjšú÷o>øIîÆfíîÝ=†ÈÊÁYš—Ì0-ÍW’LŒ×?¸´5ÕöZ×ë’vW-U©Eùˆ¨62||wþ„%©gjNþ;9ßqýùÃP-E¥yñÀìŸ“™W’ZTRÜ6ÛÎ-ˆ'NY¿~ûjÜŒ‰ÿY•E™‹¢xœ340031QÈMÍMÊI¬JÕÍ+ËMÕKf¨r3^¿díïÈÏb]§ßJT¶¾àK4Ä¦4ƒá‘È©Ô£<Þ†Gvžµ×pß|öÇ¥èJKK2sŠj¿y	†¹|‰ˆYsªøé5CŽ¼©› Êš4d©1xœ31 …ÄÜª<ÓŠ~‡Š·¯‘Hÿ—aPùNzçÙwMÀÒ)©99–òŸû}ëžï—ºõQ6w¶o‡I%2ˆ¤+h­ýüÜòÊƒˆß“ÜŸýúõ$"–RÀðu:WBïÉŸó®,=¶íñš¬%EÝd!²¥‰å©™)O2–Äí^aæ¬~ÍÍn™æÿ9¿!
2óòòÓ‹2KŒ?óV|=b0ùÑÞèÚ ¦#Ç`JŠJ‹–®ÈÜùj~Æ¢[¢Õ·~ð½Ðºr÷É˜‚’Ô†ÿ_ø¿Wß.ti¼P[\#¹ìmD>757)'±*•Avn¿Ò‡_‡¦üx?àcÞ›Âí_óÌLL€jŠóóô’J3sRt>yä?ú$iw17aJÊ~és­6½ &e&åç14ØåÞøåµDlEiÞó»'Õ³ÏV…(ÈK-I,(`xw‰±¼÷ÍãL†V–^Ž="UQýPe™)™‰¯ÖgµÊßZ·1ñ—ÎÝ·égîYBä'0lÛÂÔ‘Ÿò·dûŸ_—J[®nî»x"[œœ˜“š–SZÁpìÀûö¶ÌÍ¤Pã»®É6“'@Õ¤&¦'–¤2¬œZ·;5]?ö‡ÒDþÊÂ7ì'|–Î„ªÈH{Ã³¹ê~»æ1wmfl)9wÍo¦ÛýY§ *òs€îLÏeð—ØÔýê„ÄÙõ²—rª§„Îò~ïˆ’’üâŒÌ¤D£Þ`)üžM}~i¯fVþ>!5ª¢(1¯895/…áš†ÓêÒA¼ÊYz%µvDŸZ¹ ¢¦,³¨$³4—¡¯Ú¬a·Æ?&/³µÜµù=K«x *ÊS’›§èç˜g=1{òŸ7ÖÙ¿Äš@]Q™[’ÌpÐi†gX±h•ñóéK^½|¨ôËÞ"]•WÌ³„yËõÒU+æh9Ö_LlÞ¡ ”S	¨)xœ340031QÈM-ÎÏÓK*ÍÌIaÊß ?{á›ûï•"¢4×,œ&õÓÇ¢¬8?'3%3=W7=±()1=U79?''5¹$¨9™ÁBcç³:ÙòZoy²…º²ÝfL¿H„Æ†Å½µ»ÿ	ØÞ›2óEòV.¯	·£kÌI,IÍK®Ô-)JLÎÎÌKÚçðöü‚/8qËÿí}½zÞùóÎÿjË`˜Uf5!}†‡ðbƒÃÑórø>sSG×–W–›
´Ïio~ÐþKêÒ}áû=œîíã
àÆª4ƒAþNVºE°îä›VÙ?<;Ç}y-Ëut¥Å¹‰E%@cÃz­ö_Öô-~;û2§SßEÅó'ïéaW›ÁðpÞ¾À9Át‰ÃŽïÒš4—ëJe¡«-IÍIÍM-)ªš=Óm¦lI»Ã³¶RÇUÿn­É—P“Ã­>ƒaºÜ£5Ä>¯žÚÉ q)¡¾ŠÃ¾y‚‰`QÎP“úÁiu‰¶æ[Ñß&¼eÈª]¼ô/ºá¥%™9@w0.™²/¡‹_Â†aß¼«ŽNŒÇª4ƒÁJ"@Þpm–]úûNQÛEŠÊíÏn •„ª¯xœ340031QÈ*ÎÏÓMÖ+/J,`87ÿ«ô§Ï²¹~ÿll~}½Ñ²Toå9Cˆ²œÌ¤¼²ÜTˆºÍ3Þ.9¼mVÁ»k1«YüT %]"Ø¬xœ340031Qp,(ðÌMLOu*ÍÌII-Ò«ÌÍaHß$z¬q›÷7óI=s|5.ê33„(O¬*-JÕ-È,HÍÉÌK-+ÿù:îŽÑ‘=;â2˜’rÅÏ©©› BrQ~q1CU‹WÛÍ”ûóÓï­°|>É;‰5[áÔ¸”Ô‚Ô¼”Ä¤ü°IÊGN[LœÿòÂ»²ƒóÎß™PÕ’œ1©<¿(;-'¿¼˜!ì×9ŒvÃåsÝÞõnÚ0ÿÑ> Ç=T•¤xœ340031QH,(ÈÌMLOÕ«ÌÍahØà™pXòÏ#Ž¬Ç+Î|¶øºÓÈ¢.©43'¬è×S®P‹ãËûžtýsjÝ{ñ±|TQQjNjb1Ä¬Ý/_®Xfû}VØ”ÏA÷»5|¼ º€3ð¡Žxœ•w •ÝÇe4(3‘QvöJöŒ"+B(ëâââºÜkÏŒ²…ÌÈJ‘")Bd¯„¬(£$›Ÿç¹½ïîÅïŸ·÷ïç<ŸûŒsÎsÎy~~a!!Ê3G˜ñš!ì,p³&œE9q%÷2‹WºŸ©¡%°5èˆ@ò@]¡v(ÂÅ‹4Å	V"“ckîÖ¡$˜UöçÔ‘uê%ú™ÁÍyìm,a›IGWGœK1ADyßât³_ãÌ+í;ñ¿þ‹¢xà˜<žµKPv!½Ù*ê8:üÞûÝôåØÍ È¹s›e9Blmy\ ¦€7Ê
g*ôòÜh zßíu¡[&z,BÏ4ý)±³‡XByL!((¯+ÊWRÎQTÅ^ÅiúdRz qYÛ¶¬	‡Ø‚éçüx4Þg)<ðUk$‡i½ SýÚÿ¤¡(„¯©ÌÖ'“­4º³=ËÖ”)®‡ùîù‘µ±?1;g8”b‡ÙñØCP(G+¤¯ NdÁbMFk´ÔY­üde;²>=•®] +G¸-ï]‘HˆÁõœ<ÜÆ“ó7¿=]6°œÅ¦|é…ºg=Dˆõ.–d/æä¹N¸±ƒðØ",7…XÝªHûLõ–žˆž-´ºú÷«)S4©|ì÷zÈf²3ªõáY\\GQeÙ´\La@¡äS²$÷G&N@+ç×v«Ù×–¶d!fV<›÷‡ ÎÅ¨‚'¬>þ-Üêjv¸÷æN
œÁœ5¼äE]î&i-wÇÐ’*ªÌªòs1”BA˜êý&üç§òŠøŽç<ÚÿN›"Ž›géøçŒ¼6ðºøùEïó„O	T®wÂ4ìyPh=éå!ßn–§©o×ï…^ÌŠóHÃŽ R<mœ–…Ç4o[,ÑœW~ÄÉã÷ö7a±‡˜ÁÝxà–pÇM©Ñ9½‡"sÂKêeTõ¯ŠÅxgR¿`ÏƒR×8ïÖáe=¿$Bµ:?{‘Po4ž–;HÅQýù*æT9Í}u­¬Ç2&îA·V;K¨ùæ‰å±…¡þ9_#²í7îþð¾µñqú-g
<ç…mû^(8Û÷ÂõÉ¡ÎcºNÈþ)|vÿ˜¥c{€¦êÚA­ãZŒ??60âÅd![ËÛ¶rP3s«MÞžÇê¶é8þ“ZÍ#©žÎð›b–Ç­Ã¦œ»" `´w×˜œR¤\ºŽO›´ù}+ß“‰»R€]òòiÔ!oµë£"Zz†½ÙX­ÛœwBŽ¶¨‰,çYyÛˆ'q—f~…®›æ,™ˆ:fm!6+H¨#ÌÎœfŽ~`ˆðkíxŠ×²LÌK*û8æv|ÜOCÒü©l¥>ÿ3ê~Ÿh)÷?Ì·+Ø-ëÔ½^DèûY}ÁÞøöÕÖ³€oÞÙÐM©!Í¹ÓÃ—]—²ºânQ…|¦£pStù`n­o˜x[àÂ-áÊ–ÅÄ•Ö˜Â€99M¡ÚQ»äŸË{©nWdÏuŠoÍÚYÀÐ÷Æuçh½o–LirK/^(<¨4ž=è°-j5säÙlG6uz’^Žøa¥[CRå.KUîHH-ZÞI¥™baÊþªÏù¢ÿÅˆŽSL6 ÐQxy9†l:–ó+4±¨¾£¦.•”C~SEP¥úñ(Æ8¢1ôÛ÷Û÷ÆˆV1%A‘à¡Þ~!ŠðgSjæ2¯Ž¶NXb

ÄAWk~îz4&“$'vv¡œ6üÂÖ¬=ð„¤ÅµÄÎ[­~ˆõêŠ[L“µ‡,ßîì+ïç švbEúz¸¸›HØøŽ$päÓù±<P½ˆDÞWä%Â½d†]²[‚H(Äúç†¶ª¹úŠwT«Ø€â«º–‚}§+æ,èðfíÅ<Cú}ò‚¬³‡nŒù'–ÑÛxcŽ"™PèMâ{„ÇHWLÙµñÊ‡sþN›Cm¡ÿˆ0Üÿ4k¬Ti]‡§pã|1éO—B%ÌY´ˆeê>åB@º#þw¢ÙyÂ³0Ìq@Ä”ŸVý˜£Jfö9ý¶žë¿¢;‹¶¦‘žÍNpC¬Í“6~yýòäÈu³Í™i‡.­ˆbÎ‚"÷å¼Ÿ{üºJÑ!ØxÇ[Þr¢J(sÑäÕ»ÌTÕš©o(Y¹Š<RO2ãg·5ý_ã|ÉÎ‘2Àã.ÜÍç…'0Ý”vÕÂœE^Šžb¿sQúæk{XL*ásÆ°Ë˜ã€Ès¥ARmÎ©Ë†>7¡7*µ•I·¦afPÔÖ‚ÇŠNŒä6çbxFìó¶&cÚÎ§bµRvEÐOî¼è™—„²•	¿Yo4ÒJkÝíÙ•ì>&œqÑSÀñ=%/ær.kM†èüê=]±ëîlªYˆžî™4¾sÓ½O·§@‡[Î–‚z¤žÞ|9o|	>20¯±=öÊ +œ"ÈŸOï¦Æºã¤©v%#dkÉƒ„šAaÎ@µk•ÄÄwrÀ—þo‹ó[ã‹×fncKƒvâYóTëƒ­Ÿwã‹(ž8þ è“¿)9ê•1ø &[·\zùÚ¨Úö<
jg¾éâûŽ¦|è¼55½çXzñkO7¯+Æ((BÊÐlD&§%¤n*Ã2Ä¹áb~@c°øf˜ì~Ï-z[öé–õ˜›œ<[Ã¨­•ûõÜw±à:éåþæÙ)6ù—oÞî€FÒ±bnöÿ4·ñŸ ýr
IµxÙŒÿœÍíynè)ùìïq+é,ÌÈ¦S,ã-¼kÔ¥xËI>_áªÔŠÞa	£»HMdáv/rù‡[ã"¨µ:7é°ä—²¾[ËÌèßÓ@zê¸lÎgt‹»ïˆ;C‘›&ƒùM6ª:Ó²Ã7Þ¨_¬äšÇ=Œ%c¾;ü@‰_–m,`Ì1}mÎhŒ1X´8½uÿiêþÉåuÜUÁpó¸[Â(à©¹Ë".5¿ãtˆ<3_s€Ý‰ÍÉs{
<öp|ûñl¾ógOº?±
½M>Rú`{8ìWú!Õ÷fÜWSÞÙ+3˜ºæ)m9·P‹Íó„úÓkuÕ|ÒÄZHê’JÆ“}øwæ—¾ØÒ F¢ ¢rŒÄùƒ†_ ë7u,´p°àïÇ#<íóá…Yg×Ò‹VëW‡mÉÛ™;!!v›uÔj·y?YZþQ#Žétú}vâf9Ç±¬3é>fCùû!AMEü(ýsCGILm}=¿i“‘§žÞ(ÃìOI]Y™9xj=ø­Tq³3f-ªN_tTKq
áç&ÛÐs°¦ŸZ¼ž{Ôc’"úÈupÖ´PøÛÉI›hÇŽ RFÔÏÜ?žrƒ Gè˜5Ó4?ßB ‘ä¡•BþÀÒ¸+ã/óŠ|®~V	ÿ|s”éŒš÷;T¤ý ïŠÍ$Ò[êäò1Ç‘é²z/ñbõnß[>O²z(è~oy¡µ0·ÿÓZÍœýé&/¥]qJe´"‚t^ÝÅ–eú'ÍD £Ç$ÎÎ
}7ÔõÍÇ :Õ§‹^ù«ŒÔyLfØI²…JðmÏƒ—°A07^^JÿP´:|Å0–h:€ÁK”yP¤hmåý¥,Ï ø†ÔçXÙÊ,yÀÅÄú„ðçè4ýU)o
ƒïÙMeöæÛãÀ›Å¿>¯pr-%]ÙÓg„;®y|M¡«®9.¼ :ÅÅ=‚NS8hèæ'7[E­X\·?¿¶\z'+•³Oq,M»·»LÞmÜlö‰ ¥€´Ž4*jç«×ÚÄäï3I|
ÿµã‚¡³èËu‡H¾î²XS‡F>¬ÔÖÿúm
Ìq@Ä'îà5³gªSFÃ²™éÔš¨{˜ÒN€	ªáã~V¿é2YÊÕ†ï]ÆTw3?a	ƒ*Yaœ^Bm/’GL^ˆÒšSðu2uÆ`É.l’Åï)$ºª„íb`8Ú)W·ÇìÍ7ûÏÀÒ½;¤ÌóÂw
iéÅÍÎ+Am±„Ñ	éjp•-ÕTÍ¡¸¸:¨dí0¹Š#–<à¢bÿVqÈ'Àî2ý1¬¼‹ýÐ åŽÇ	±T¼N†_HQTª>}Ójc%Áv£P
s4A¾“3ð/-ýJEœsA‘îkµèeÌq@$?åTÙ£“>WŽ}™µ»ïƒ:}¢ÿÒ–ôæ1ÊÉÞtÜÖèÛêÌÂ³6ôµS?õ^!$'Ú	JÛ6Ç„§G½¯ƒM^9ãsÖ€¯gl?0 lH^Ò§ÇéÒ®^o–ú×ø‚Á†ýÖÖ	eµ)¸”Äöä‚h¦ƒÆ"{ícÉ“Ë?pº´væ@ÊÒéäó‹C_?úÐq^U°Ùèà–ÛÎÞœ%ß0ñÞiàëòRù#ÒëUÕ[’ÀP*Ðãaj…^¬–³Ïnq¦"jý¥+ôC<|8Nÿª¬Æ‡ÏŒXÇ}›[¦ScÈÇoÈoéä©Lý•7^09ì}÷³”ÌÖgÄA€Ã …Ã?×¢«(ˆ…”µØ…FN’hAÚ$1gAº47†l]Ëµ)çLpƒD0Ç‘³Þ®Ò+ï5.4-qäùšâgð>°±-mŽp±³E@€þ±ŽëÄ¬â5uÛ/%½1e®§ÙMòÄØÒ L»ÙM®o÷ìÃ,!á,$K­‹ÊØ @'`äÐ”ÿJØü@6Yz‹~ýÓiw¯mË£o[žeÚg´Y¿¹¥ãÉ—õë–§b‚k1ôkÝ•2gG„4ýp<gL×¥0dÁ¥‹L§*O•~Rä«'¾Xýù¼öï¨%ÔnëÈ\¾vá=ƒWð8*Ðx§¢ÖŒÌ| Ý‰Pw:ðêZeÀœ×qòÒÝwa /·¯Sz¡¡ÒÊÂ¾"™U&.IJmG¬(G;;`´µEâ£”üt@v o#$ë\r]¢ó©Ò QJBªÑÏN¯Ä«£©Åþ}
žú,Ø @çÞúÊµd.d’ú³¾Dt™IÊtG¶çÿ"¼‹7üH€ôR|Vÿ¯™”-eü‡‹[óŽ<ÐÍ*ˆ;>Ÿ™7Ý•`IAcÈì×Ì˜­šÚr [Ô7¯À)·~AÍT`òsIó3
~dó ŽXÎ»»O›-šr^'éöõ6œ3Ûž·5…ü×¤ùÏû”±´ˆÈrÍF$ÓÈxÐE*qí€Rƒô“iåiš^éq¨{žuØ…¼(½ªO–ôˆ^-d•þ>ÉEx/È½qÞþar&ù5‰o¢ßÿða%bÝk´RS4Q‚KTyò÷F^DÐ.Kã´ÓdÀwœž€L:yÃY•8}Õ  kî c¼ªçƒ·gíP<0 6xþ½¼Ýú9ŒYËôãÕô•_g½1gÑ²5ë_3;3WGM2DvhÊcŽƒÍÃ‡šöÅ©—#çÆ¯j¼ÄífïÝž¶G"ì¡HGà9´‡ÚÒÓ0P2}É±"£Pë\Åuœpo«+rvyüâ¡.½VRL“V0zú¼5’å••È8åS¾É¨uÿ¾O[ªw+¨­ý¦IÅ²=ýÙbeñè¼QSÒà;bèñì9É¶Vƒwb«¸:`?Õã(ÅíHG>zTµû¥þ¹ä‚1™”þŠÝø[õ¬œ .P0èmæˆÆÊèSOMë³†ÊXkZÙ˜´È˜»ï€6±Uv÷íquj¡æÃ†Õ<}çva ¯_­‹G™QJI
>Ü¤FÏ­a@€ÙM©¢ç49ä!®1c«\^wý¦§ÇÁ–NJú­[ÉžEŒeœ¬ùq°‹a hÖ[Z¶s2q!5CôŠdRÝÙ¶èüw~‚ïl»}°LñŽÞ9Ïâ3˜’ Æ’gF|°Ya•Úo÷¥~Ÿ““˜Â€BéêFõ¤â‡AXnXÍÌƒ³yÆÒÛ²æp²X çÌØk±+\x½©œõú’p·r`Î‚ôI$Ô¥c6÷øÅâ#{&«„*t¶kü‰"A’dúóÙ÷ãÜšÆCkV¾ÿ¤?¾-C˜uÞrÎGÞŸ<
·Ü0YC7ÖÚ7˜’ DÍý3Ðä»Æ²ç¯Ïò‡dÚ)Ôa

®P¯Æ›ŒI”,’Ô/2b<=µ-LmVÿö¶l9cš…|ÓV*`ó¸¾ÁÂ¸c¿vE@)ÿÎÆ€E
ÎÓ¹øÂZ'v¥ ;Á>¼ŸÉaýWÈ×ÿã&“³w@›J|:¦Ö•ŸøhŸ_Èíõ8Aäéµ3z¤Vñ'jV¦Pž*Vžk^)YÓ˜'ÛžžG©Ðt{ñâm	:ê;6ÝÖÁ;Œá›oƒ@Û¨÷î¹‹a»S6ÁÛK«ë²©ÛïÕ?YP¢Èžþ…nòí8
W÷~<¥ó[®žíþO©;qXëêÇ+ê’KÄe.·^O;”½’üÿÍ÷Ró‡*ÈŽO*×Õ×ix¥¤éÕ\,=WCß°TÔÎö§:3–mÁ—u+ÿ#üªŽSó£}°€ï\‹rÍ°^îû,ßƒÜ8®é¿K¶¢ŽPÛ¿ôFÆc‰ï–=®}üôåæ*ÁÙÊ*	{´/-Ö=buÿµ{FƒO˜ÈžV
;HÑ˜Ájsgû$‰š4M¼QË_À@lþi±ýs«ÓÉï?81ñ{¸&£þ hÒ´§Ìò¨—€okâÕjúYo¾G?Ï=LÏ¥'npäÃo{J@‘ßçg4VªBÙa¶³…8þ;  ~ýPÒ`JVãÉr|ó¡Gõ”¹›äw#@;…î°‰ÌÒc5QòêOÂñN_IÛÔœ=—¡þÕS}ñÅ¥ã<B'Ušv2pÒè @à@QÿÎMBºQ¤xDcjX7·_èOkzþÝP/äz¬äB¿–ƒ‘ÑÒÛ¡u£ŠÝ1@H%îÌßÿD9R+áy¯éN
ÿ³@‚bôŽV½8ýÉ,dlÔ»Í’¢ð<¤ê"{Q $¯‡ƒü™ï‘ÑÂå•9‰"js‰ï÷MÏu·ó$¾\þn×šÎäð+0ìä¡ðÿÜ«%­¾d«òNf=ìÆ!•eW„?Óó«fŒSŽÏ^*#Çez®(cW
lœÍ™~×åOX¨8Ì½Ž;»È²e|† r 37Î›fÒ	KÇU§¹˜Ñ}–ˆ)öÌ„åaƒV<§¿|^«Ž–!* ³491z†• ŒÆÈ*ÅH?·¸,ºóp"ú~bþÌ1À/Ë™7À£ðÙÆˆ^}pùk¹‹Ö8hôõ`³kÔ»öÐûÊ+÷®6õûë7a%ÀeOááŒ¹êÖ£®½f×.F²äj%=ÅÝüµKî"Q×ÛªhÙß}8›«ýXèÏÇ°¥AŸ3ÂOòó¬¹Œ#?ÜªDH§Ï=ˆÇ€Ó1Gð›ÍÉ³¾úxôU'5Dí‘DïßùÿÞ^þÔi_X¿¸å}<PcÉÝ9^Ø ¥2¿XNÞ[çIõeüfM=ÊBõ;âÔ.àu,è¶5_	©çzò€ãlˆÅâ]Ä–q~pµÍŸà\R†»ZZó»ð:·LŠ†›-ÌYôøßÃ¬ŸâsŠ\ŸH¥¦ÀŽ³2aŽ"?^^é9ae´rÇ|ƒãb\0ê!½4ÃŽôæÅµD/’“æg=mU¾|†Ñz”YTñ^À–FOtâ=oùÐS‘®ù|Ý‘I£ÓBG3°è×ÇúÓ€9ƒÄÕsþŒ8;ò`§ÆË#Ô•¢^þº—­öR¶\¬Å¥S2‡1%ÑSÏºÕx…wƒK]]s 7ª¥lÛø¥1…'ñØÆÌS&Ë“T½ÝT¦®;²('S” ¡ ÄÙh4÷LTQŠ_ü™nÅÒÓžliPÅÌ¢“åËÀp"ºPc¶;*Qs\w èXh¼~<`y»¡ðr˜WçSõ²íùM)ãCT‘YWFõÕNyH»NUßYq¬ÜCO°ŽÞHQ;0£FÝÝiùÌéDæÁˆ+”;’`e\u¶â
"½ëK_ó­‡á·Â¿áo	"Ìl€‘¯Í£ãxÈ ×}0Pafü¦•Ûf…c4ÈhZz›ÖM‡«À–± Ÿ¡U+sÛc°hQÚHžŸs#¸…±6Ÿõ9J-µ¥9†CÍa';º=þó3¶§ø~Ô>{çè)W—:%­<•ö¢Ðã¯çËR‹(£ƒHb>Ñ\r~d^•ð`/Ð<ïáÒ¬óQ´ÂTa¯{ýà1²±»[N¬íÂ2€Í Ä h&œ]w$'FXû÷ƒ°±oéû„Ai{RaÛÁêÄTa†«¿ä§¿Evï“Ü-_œ3ní¤6§tqºÝ¥.uµb)˜x+n†DØñ˜ÙB!H{3ØŸi9àöç¿SQ;Õt­èœ—¾Qã§sÅ¬Ô¾Pôêc9a§ƒ—
´^ãùŸÈ¥Žo‘–ôØX«Í~M¿÷ güpÞZ[j •PV¾ x[ŸµL
At!;ýÞZ„˜´×¯Å«9GìE®?fñµ‰îå¼¼‹ «Ñ’çÊ)îy·hŠd¶wáç7<¹æëlz¢÷¸ÎbgþoŸfrâag’Ô÷‰÷)OCçI#ð¥t_’ìÎ€ŠkD“îMu7Žàs¶þñø°¾ŒËî hõ…lFç‹_8—°¯×uM£®H¹xúÿœ_°¸½ P<”p-HHÓpÅd&~w$€ dÛE<p¯?Èp¼J7NW±;Îûé>Ö*Ë¿Ñ¦&¾¦˜LóS…‚ÚnÞÕ0gèß£ýJý–?>¾d5d§®,é«Yheá'Û
_$:#¨ªX<PXððyE35Îþp@Ü¸Þ-ÓœDS>t<²YïüÉ'DõU˜h°¼Ùþs‹Ñçh~Ò5%1ÏÄIþ.hvÒñIÿë=1PWêqdçÕçß´DôSp›õ¬ÄéoìI‚ë»Tò¢ßpGyH°‡ÝþúÃP$8ýï­0K—Î5ºrP "Ó´r‰BžòÁèyŸ}¡ ñ%öjÑÉÏ	îù^>,ØYÔú]<k_4`z@*)§*—® ÷uÅ§!mþðB¯-S;¨#ÄÞža·ùzq8ËÜ–ÎjÜ“ûº³HþíÛ¦q‡#ö¢@×ÇED§¯jÅÚ¸ÿÒjUÈ˜xÅòÁi/Ð|ít3a¥ýÝx‰¬Y±KŸ9NF4ÿÏñÝµœÂöC÷Žµ&F.dÐ3µ—¢¦wEÐ+!‰®5ÛkRI0QÅkeá÷u•îJ	Ø$´ôxcëö5ã{ª˜|@È€eË\´ŠÇŠ‡ÙhRŽ´~2÷ýyÃ“F¤‘«æá‘œ+£ ®­ê1Ú¨Â¼NN Å^·ÉŒiÀ"d½L0zÕr7õæœ^2	«e-Í¶0r3:´—¸Ù/ÐëU>]š¸­[œº„9‹îp%»!Ž$S¼ñ b¦öÖ;W0£‰9ŽÎÈ’Þ~†›Ki(ž5{š¶yKÚþ×ØLKÑç£Hw‰×8/ÒV•;Ò:sÑ`K£×\Ÿ|;ß„Kxé²ÁÓ<Ãì´R“ l  ³¢ÌŒTi|úí¢‚&x¡ÒöÎx†üöAÈ[HBªß}óg¤Èƒ:õ>ÞäÑ©ºÆ¤7W·-O<SÊH«ŠÜ“LÍ"øÊºR-¼ýƒÎ•wÜ°xøå"FXX;Lä¡^?§:¢{:·xì.¼»5stò37lN¼ ,(oBˆhŠ›fÄañdÀ—¿\N¿[Ü9]pÏÓà9Ç½ôVµŒ-+föz.< ÚÖ)[mözH`f(ØÎ€Ò^çœkéëxó ÿ“+´ûçÑâdÝ1…ÏÔž:ÇðEú}•	÷_ð#+V~Öèúˆ‰¢tcðÌUw³í%ØnBvfn<pÄfoôßQÍVAÙ@îÃlÆç\ñžù™¾Ú	Š‹JÚëhy4»â±ßN)¦4ü]º|QY0y×ŒbéíK-‡Úš­›kK³dmg·7uuKv—¨Sâ¢ržWÐ¤[rÙìÎ€šÌoÇ—‰=Æf2#+ºXÖ=JTñvÇ AqV¿3*¿Ä.ÒøÞº›=ä#µ¶,ŒÙlaP›— X’‡^˜‡vüD¦jžáÔKª9ÜÛTÁÛõøùJíž¨Yê|Ó?õÖÜÅ´Ã©<•g¯	å¦îI¦þBQ¿®á	¦¯¤„[™åâÕ•Fê&o‘PsprûºÅ¦ý+’Öoˆ¤î¼-íKZ±ãÞÚt©¾ã Ìr7Åóüu;wDiÌúç>XÀ·€.© sbCÃô|H…®õ)¼¯£f-ÛQ˜™#ÄÔ
–ðgýgTæqR\xiú8ñÅéx2©|öã{QèEÜ½2‹y$j'¿¢©%fóŒmùž³h¶ô=¦æ!åt_7ÒIÄ@ñµF”~+Û¼iÜÀÚø6¨ªîˆ~±xç¹tg4~èá’±cíRÔî¨˜‡|c³ºá4cœÒ[ý“©RYÛ°;JÐzßüÉb¶ÎÁLÚÌ#¶¥Œ„‚ZÂaþ_‹%ÓTQž4¿n!¤°tØîˆ¡5z
Â’ØêÞkS¸H;Ó(/ÜMýbG8²ätùl¾É¸þ®¥£ŠE¢I˜ÉÖ z&§ÕÙ•–ÖéÍZûLUïzqÒ…b9ðØo½ÚâgÞ|á§œLžéWfâÛA´3
^—t¿ò¢®¸¹¼D8ä¡ÚUÎÙ–tÞ¬&œ`àÚŠüâkkÄñD5/˜OÕÜ²“XÃU¦¨”w(‘|õ¬+>³ù‹ïÆœ*V0¢µ#;ºLwÜo:lÂwdŽŸL‹ô›åÀá³øs/_óêy®??-€sBáþ7Ü¼à[¬}™»  «RþGnñô¼Tˆ¯{1IÿÖé“màõðÝ‡Þ2Ûó¯ú*ƒ[ÎÛ\wgÜ ¡–@­,1gcVŒð~-`Õfâ—ÖØÚ}IÏ{]·Âº9»¿=œMç(¦N“ô_¿•Ü„¤udÎ?$bÎ·ª¢Ùºù:”JƒØlïPÀåû:©‰úÜâÍWëü°àXû¥E¬qPÉæüsƒõ#v¬·ßG:<üªìçcò+ÙKÒ0¥ºÂÞíI »¡ö^>& †l
YÀÎdÚÉ´k>¨*­ºy¡2åq\-¶4èó½G¢¥…9Æ „I»®?4­Æ÷Öil 8O{€oJžÈ»äÇ²~\ÕPÈbÆyËT)Ònºé¡)›×óì7¯t
îÝ½„úCaI;bèkTÓp$øBãp‡6²8™ëYM¥ÒŽ$87zÔ¿;žU%<î„2]ÜÅVDgªáßAd³‡¹ÿ³šüŒ!_ŸŸnÉÀõ¡é‹Ñnu×å3¿‡aƒ&+Þ•-íÌ/Ô­ß¨f¥”_«¹Px+V4<ò“õÊQx¸¤cŸ‚†M#ï`6mÔpsû"p¦¿øª¤›³kµ¥aŒ¢»ùó]L·µ‡¨>éÞ¥!òeà žÇ˜ÏKé¦Ú9PãNšŸ3¼e'ûy·ôsPPˆ%Ð%Û­Ÿxà¦þšZÖï2‰MÓ°CôùOBŽÿ_ wkNßGÝp«…oÌê.,AÂS®\Æÿ¯àqQ11ÁçÜ¤M|*oÕóæÔ¸É<Ç^
8Àb†@"¡ZÉÇó~è3³ë>ˆ|†,|Ñ·Q+y(æîÿ_zV$]%‘€É,ÞcJ–Eœ÷z‚bÃ½ÿ¿(pg,èÏï£pÍóœ9ŒùUºg©ææ0—„p2çÑÒRø³ï3ÐÁB ïŒÙÞÜa"ˆÿð—à;—1çKñ,2XŠ ’û…2¥¹š¹Ø†7Ì¶".Ñ8¾Þ¨ÿ«à×,=ä\"Ô”,0œyS7®íOöþw+¦B€Å[`÷Àq³fÛü	‹å¿/Ùºò•
±üj\n>š›—¶7z?”\ÿöíŽR“¬ŸUEGÎ–¾sœ{£€ì½vØ%vé¦‘bËóŠiäß·6 “ÀêÊdCkâ:4Ggk¸pdeÒ>ý)•1±7Ê†õ0«¥}»Í;a2ùÝ#ïÇð]Ê½QpE´Y%sHIR¡NÑg™DSÁj¥¬˜È?«Üì­,»{zŠœøoŽ,enž·ˆÆÕÞÙ$dç™up)÷\µ¡	ó0W³löÄJ F„‡Üoö|ç-{[ˆÿÍ¸þŽ2<°ã~?Ü¾26sÏ=Ž¤]SýTµwÏbJú>@ÐÒv9FÁ’ÍýX­×Ô½–l/$ û`Á/}”îBeÔ÷¨“
Ç¤'D)\Ç„þ'JÅXX%_÷áðÒ„ªg¼	ô»|74Dš·´^cúzŸóÓ½Ð³!åe‹»Aàvž3Í´÷°2öà‰Üû 7×J…‘Aa©¯åd¸åG
»É^d‡¹à¯B+ò Š¯yýrÁôô2~ø(ßí{Vë‡¨ÿ2À)ûþÖo¼KÈéœ(·¯ßïue(,`)bÛÔE‘¶ºb:‰­ÞY‰¤¬gBx~ó,û!Aó»—ÏÇyò¨ÌÛ¬d6ÒRhÉ…2¿rÝö_pñÉ-XGª2šóªs””¬j¯J`aÅàF.('à‹f¯^â]\U5¦Õžn©> ÐÐê°TNnÃm;XÈÊ6-»¸Q2¾n;Ï¥±¢Üƒk€[”në¹›ò&(e~îlpÜXùŽ…Ý2±qGýG¶•¢Á´vs˜bGdE©²ËÞzÕÍ•î·$_¡|UóÆ¥-â—Úî²ŽúI+'—~?üx¸K5æ,¾Üérû 
åM$÷7Š~?gÝü#"	ž®S~x±/}†)‰út™ÇºrÊ£{ãf'¥»öw`p«NÒ{9ßb¥×–¢}"å<_iâyc1Í$NúMÝ¼œ4ý%¶FÑÞµZ±o´/¿œ¢V~B.0Šâ@ô9j»¯ãáêû.ü+j˜ µ5¸D{ÕV‡R.8:âž˜ýÖÌœÀö,ôx¯ÿú0ÐÃp`m¢WØxt…{Ãù1ö<º¦s6’WÇ“TÂCˆ!-º´%Ÿ
cGÀ•Z©É5¼tÇ§ˆ³9ò8	2šµc$þ¬éñ7[-oõxàW6}ó³ÎŠ2¹›f=ö<(U9{K[;>‘g5õ-"íî¹ã°#€Ôc&Sßl	J³RþNÞÐó±GWnn“úóÍþŸÛ‘×¶v…œ°Øv¤÷Axû3ã6:5ìyô¦óp]œµz	vÕƒüÆŒÁÇ¹±#€ÔÕÕy&n‰«ªUÖOP\q‰ó<q[‰¿¿Èˆaè›Ó[]ê¡†Ð§3Èž½ùðl ¶4úö2°,	Ê`Š ³¼dþ4±àðˆ 6 ÐayøëˆN‘ûäk³)ý+Ž.ÜWßnÏÿµÚÿõ†•…—q-¾^ÃûÃ¿e K+É³­Xã P]¯u¿qOË7I³ ÍáØá"¬¸ø)rM‚¸˜0?dýˆupI\9—ç–¹n”Âå¯On~ÊÆª›Åž_q;ÝŠì}¯Á4kŒ51¾Ôw€É.·uŽÂ?_jðý;• ŒôØ¤nas³ñerQ‡q£´æÜ ¡àç»Áx¨P^?+»‘ñÆ”H¥pF=ÌYÐ%7ˆÍ8¡ûÑÅz_ñîYúæ¥‚XÌq@$˜KLAî…ßöízIgûÁºÛLž;ÒŽ{ÄæÍ\-Š%¥n"[ªÉ/ãi©÷Ã‹}"uØó>Y	^CÔÉ1f±Ô=<Á¤yÚ“Y;HÍêÉ”Çø'=Òv›Iñ!aÚòåØ¿ë%šDÎ€é&Ä1õg¾·G¨|î½ez#†9ÊÀüáOªG‚½>Ort=™]ÍKœsqùx@ó,‚ž*¿w80vÌ-Æ„bËžèåI›•ê¿ã‚N“S9í—Žä“½Íä¹2¤³:ù[v7”Ò3ËÁÛÄ	*I[þþœø$ñÉDîýÝ @É2¯ÿù]•âô/ãWµŽØœÜz™Ñk\ æÀ¨êŸ¯µÿý]8f²ÃºIê	Ëbï¾Ž¿å“ÃÿÓ¡ nÄÁ \þdV.èü!£þ_ƒìÇV÷¢Ð_]Èš¸ %#WýdÍ%žNøÖÃêõ»{€æ"aæâýÓb¶7‡¾eþ|AÕ¶e$xáC‘nî…ÜUbAy¾ ·ëŠ&i¹OÜ°–ìyP­L›÷xí”«…£vÚO¿²2‹×a‘Ã“5¥Jüê'Pì_öCÍø[ÞH(+˜)dÏ†÷ñ±‡nå¬F{‡0ç­4z¾ÂýÿËA¿ŽÕg~—VÒ£_Ï4ó‚Ä$7ô…$Ñÿ_X/9Dâxß‚_Š÷	æ3`	ooÃTÒÎNy¢ÚË%Š[qÍ4ŠF5Í>ù$ò¨÷C‚?`Þ‡3yN¿ìhl)]$ïµuTð~`@¹í©ìÃib¾U³C„žF‰ÇË	`a·w”:"ÎÎó™0wØiz½1-5¼µ/Ý{x:„_r²©¢‘fDîTêHÌu{_4`‘Ñ6?™H{SƒÑÏ ¿&‰oËãëˆ„Ø¡Ì6»<¦sS`! 0á_ó­F{úgí"ý†éÊºû= Ðô‘ÞÂé‚3ÔÉÕ½¸èýìîàtÃ¹j¼”n½öD2âN®1Çi›AÌ˜bëhå±uzÝË-I9ÆyÅid?û I®pK«½9ÐÔˆÒ.)ðžŠ9úŠ$é-	ÊÑˆÔÞ( «ìuå‰ZSAÂƒƒ.ÂšS7a&[öæØ|…†Y -Øå¬+½c÷ÌõÆˆ[H!Ï¯žÿŽóCÔIOBÆI¼K&"ôÎWñ¾Ê†7q•CÏ½!–e¢u;.èm aí9!¿Ô-pgÒæçAAœÿie<ÎŽÎ0è?ßA¿÷ý¥tDì%;{7UyÎ¢†/‹¨†óÿUz‰/Áª¬î‚å“Ì³Úôôª6µ;À›°kéþJ~€xÕµ£LSA‡-‰È?ÏÜ @aTÚn˜9ÔÎ}r“}_úˆÝÎÖc{JÑE%n¢·Æ3º7zû<Y«¹^”{¥l¨pPçdÀˆ¤Æ;ŒÞ[P@Ö`èŽŒ$ôÝ(•ÔáHVcgÒO}[^Ë]ÌÍÀFÐN3wn¶ídÓáýµC¤éé*”rXãèú5ž¬¦Ñ˜×ŽÚó¥Š@eTt
í	¬`#6™uÃ¹ÜP3EE¸ä<ñú1 b
³…9ÂÀÆµéO™£bƒböØÏ"Ëç‡ “†]ÐlÒ+ßÄáÉã÷•æìN~4‘’±Œv¥ »›IÏfë™sO\àÂç´:Oe?›ÝM…ÚìDó˜;ÁAä÷Ù¨OµÍŒ"~ˆ.- 4=¼7‡^‹ÿ$·1Î’$öûú—³¿üª¬"öFÁ§ÃqCùñ°T±ëƒnœ"OqõD{0“˜G»«CÏY+yøñ¹ÚåÛ'Ÿ3êØ?Ê_?
ïSµˆä&y;u[ÚÁó„™ÿñþ‹ ~„FÅ©;ºŠPuÉ3ÉKêÕòÞbt˜Kø·qÞT·Ó˜¬–¾QéFË®q¾ñÉu/
½²=DùÞÁÏâ-o$Rúüg›[Wï¼Ã÷èžå—¥¡ê¤ŽW?«þRï:dÍÅúãÿ+TÁõ•‹á1V	Ö#$ìÇ‡™=°óÙÜ³[¢ôcõðEyW©‹ãÂŒìøtäžkw–‚uÒã!ñ•¡'
D%Üµzñô££ÖqeûÆÑ5@²Óƒ7v…—X¿HW«'üÂ¿[¹ï€_ 3eÐÇùv¡|\òU^F‰¸@RçÎ, Ü (å?ÿË}2¶ü'Œ’Œä˜¯ÎQ8¨÷ÄkŸ0zÈFAI->w†KKkÌ¬Ò%
O{×#~üûƒàË—sÔÑ´Ìä|é_&ï6<9é²7G«~¡›ïf½±î §&
FÚŠùF³C¦>ñþ3.÷¾æí‰¾ö/Š_^`¦VÓT¨a$H“[†îI¦úO]]2o©PèáWÚñLW<..ø…D·¸Ïc³CBÎŠ^’qâIk¯Ï©–ù|{½©™ÏÐ!ºû *£¢9ï™Ç&¡ÖžG±#`ÏÀZïîXâlˆ„·uÔ:Ç$(ïÌÄæÛzÆW}xqœ`‘üõªÜL—y(m_ë®¨f¥‹×}àÍ‘bÚ"QƒçG¥²•½w¥À]RX~™TœH7¤¯êûÉ5*Ïµã\CíÌþÚ¯¢øÖƒCÔÖÞJ§Ö=zŒ¯§]›ÄÝÑ|üM ¿Ÿ³^˜ë˜ÔŸ”`w3]
-ŸFí¸ÿÿ†ÀÁ¶;Ùô>{Þ§ï>Þë®>WP¸gê”Õ?S].nÇ\>ÿõˆ='îijÕ= ô
wFávë$Ý9Öoj¸&o2åè÷à GÒ”¼
Ñüæ´%\²…«L”÷4œ1aæPç-ñŸsùŠ’«3~,²ÁÀ'â½GCOpß…·ûÆAov.ûgåm“œ®’éóâôD¢;êz¬% ¿à cyÏ+îÁy'¯Z!ÏvˆÓµ`, ¼sþÝFeÔšÓƒà¸š¾0EÎ²i™†1·ZÎžh\ã&ç29ìrÊþœ£»ûï*¹=$x®¿êÃæ‚dÚf+	Ã:òØ8¼W0è½ò6Û`ÈÆøÈ%½{róOÓ%rÚßÖ¨ž;7ä°O}ž/—ÄÙ^w¯÷ ÜÐ¼P/0T~Ÿ<àÎÙfbìÁo¨‘t¯õá5m"ùSäc;žhðÞÇ¸–õ¢î¢˜[Õ[¥z¾ã¯-¾Ýû\±_½¹Wv…DdTïg6g‹÷’ë	ëLû- Ð?¹–ñPpñ[?é‰eõ”ðWj×«ÎÅbâí- 0ÛÅN‚ßµ¹.–rŸYÒ™>.ØPûî²ÍF1DõÈ¶†XQî×s	Þ)­¸{\xm†ÿ+æÆIÊÇ‚¬ÊÄ‘ŒWWµ0aNvÿ7!¡ÿ<Š³‡´Cu’ýÇK²KdŽ>J’¿o=òúôæëÚ5ñÇçU;¹ikV÷]8îÉna¨ÁÑø£#®¹äÈé"[‚ÛøoÍ}aBFƒ‚Ø‰¬¿‚}úf†Ýv\Ó-kî¥t×ì‰[¬&DqŸâŽ‰Ë¾ÜÑ‰ù{ÍýÃš'£y1¢cêÔN ŽñçžÏï¨Zþp4‡7tŸ[åW<á(G]ôsÿ›W¬±°ú}€è¡t)›q¹±UëÎ+>E§ûCÛ~;íƒ?„ƒDÏÊ®é‘ÆçÝýí™«_û>t;
l€²‡˜ýÕØÊË¹s1ð§ç‰…÷—ÓN1%Ùþ*Ùñ²¶CïðŒ@:*‡s€ÍääÕKš¼“ß¾íè ï S‡UWr¤ |<—ªwUß>ß×ªØ d;hï„Üü…D`d¹{}þEt©ß”£ÄW$ä¡â þîú|RÄR_âÃiÖCÚDX”÷/IDßÜßÿ%Ã£F=qÈªh¹¨\ì\·1…‘Ú[®,ñ~u.“Âœ…œDÙÉ°ø2Ý:æ,(ô†âG7™´§úÔï”wÖEÏvt8Ðq@$öm?w¹¬AÒÍ¯;K5ËøÆvÔ!Û‡õÖé¥FŸCh*õK&ûßÄ ¨su˜wgÐ›…üè 0©uÈ×PyÊ¼‘Nî“«¶sFýé(£4N|¹XQÈ§!+ˆæT4ÕŽ¯Ý¹;®É<Ð	B_‹ç¦e”¢‡•NE¥Z²ÌR)ïxÙBÛ´M0þÎd›Sgÿ!iR¿Ê të*èÏÞá.‹M½zèñÏŸ<Ž¾ŽXÍœÈú¡­ë°£§¶•ýÈKP†¶t¶¯ò½A·6Úd£VLwÇ A#×ÔÔÆŒSª}ðÄç£È40Q`«³³@l
rŽôG%©•ßðd	KýÄý!aGu+
:²¾2Ö“\Øp	wöù1Ð—ì£¼;î¼µÖ•.ø2æîøRûÆï“Îv×—ð1Pÿ4àð+zœ	.".ÿ™x0<l²½×XÏ‰öã™ˆ–íÒ.€êIžníTþa…ŠG£ØgZ‹–v<ù»”ü5K}ÏKFjT9Þšw"®œU;ÇPæáK£0éÒr1‡¬¤„ŽÊ£ñWy;÷	£wB0É´÷’S¼êÅmÅa0s×ÙÑ½ÞeÑÍÔäF«˜îá†Ã™ò²¯š²Çïcº‹­€Jç?™êÅÎµ™E©Ë
B6¸åÁ=o(¿OdîÎ€¦S¤^=þ^QOÃÒáô¨‚£ÖÌ;ª¥­ øî¬a¬OƒeÉ¤¢•þ¸“ÀsüaÔ¶ÉØeÈo>õWöT:L4kžÊß÷¢ÐCKNfcÒ‘žLÓüªÓA¨ñ,Ý½@@óò«áòÆC4I•Ž8ÁE!?KË`à¶|LÍ¢asì!/çÆ/‘ßáæ«Jcöwg@Åª‡Õ¥—‹	³…½Ë‘‰Æ‹Š:»c€`ãéóì	¼ãc«ÐJû_ß<„—ä®aºÐÛ«n\o¶tÎÞK5Ë÷Õ°žËònß1Ô€y6æh£e<ƒÆ@ä¥™’’ÊÃY8H2LwÉÎ™¯¡¼Û+E¢^¼L]±=1Šç¨úobú}ÿMš!ì‘[[(’aïˆ¡)62’OÈ““y>Õ3ËT—)2önÇñ… Ö^éª·ŠœS\½øœýÉG68ÙÿYð›Âh¼‘!‹"NëZq¶ÚøŠyƒ¢‹Ù¹©W&bŽ·µZÕl^—FÚZ=;bd_(èÞ!è¡aØ•ñ#†î«™–eIÙÍçöEÖô8Äü"—	•;½ñ^½\^#îÝÚ #a›Õ‰“Ø²Éñ|th8DCj#'J%Ö¦þ
[tbð7ôïø ÝT•¦I³<ŸüÊªÿ'6 Ð}" ¬j+ôÈ“-º´’‘Ïå.waÿÎ¼;‰ ð‰ñ‡sq2!DÍð®YÙ;°ÈÐ¿ÁG¶âÛ’y¥Ñ†Bt<Ù^~_•£¸• §žë«_+„„YøˆcÓ«~ÛlªÀòÕ2;¯ŒfrªÏþ>Lx×ÊˆÝbgtÈ	ê?‘E™s*¥Å|æy“aêÀ—Qpk¯†®¼Óä.•ÆôÕå
Ðë¯ï÷l™¯v·Cýûg²ÜvÿnÈ¢!4Ã?¢Ý1ó¸$Byä~uÝmDôÞz¨¾ÔèY3^™³e¬w²Ù×ä±½1jÖˆ*Ò³¸][Rô	&ŸÁ³ƒ´E   ·i™ò@Ìà;[,ÇšZÿ‘¸ñ²Agýí] Pp­–ô¸×ùÚ.¸Ò!ž9(ÙHiàó]À+ºNŸðÂ*%‡F;Â^³ò±u;b³ƒ¡¬þ;S_M—8JMÝ‹O˜ÇOó6òÔÙ ÍˆËqºÅ"…#ŽrY²Ú—QÛ3¬é ¬•i=§ùüô<k[Ävæ¿—Ïë*Q,:ÑÙ^Ö³ú+‘º9žDØÒ Ò• òæ¢	nWQ}×Ïï^v!^òÄ :ã¯®ç>½r…–?6ö~F;ÛûçbÈƒŸQŸ¼¡î‡¨ÏêÀ%üñE(±ó—˜³èé‘;"ÃöÑ™Ñgæ­ehÛH0<ÀDÜîIXjÝž 5<ÉAÕv¥žkL²=°°°…Ùý{3ÅÌFÜÈ»¡+øTë(«<¯ö«]ô°‡ÒHÛõ+"±a4å§_
Œ-³Âwüâ-¸`ƒð”%‹4å0N|€!¹BØBVÙÉ=Ôîµ4øûÞúœùþüÁ±4¡®€·Øó WdÌÛIíëŠ‘ÝÃÄ¯ x­JØ@Š„»H‡æj]ˆÉñŸŒYß~3¨o'ÐŸ…p	e4:YlÔ;4uÞ‰.â“K–¼?'¶ã~Ú‚ '
âðD¾ŸÎÇãÌD:ñGìJvç:¦2ð/=Ó};~Ê“•Àé!WèNXDøçœÍ13—Úý¨XÏ=Î†KÂU+ÛÉd¿ š…Ê–f8ÿf¨ctO©©n«ºmÀt¨gðbýHCŽÓ¸¦Ü3¼ž1[‹´õ^2ÜŽü€;FlªY}û8w–yzáKªWwòºù»ÆÈÝô$†ÊC"±÷î­º†KÉóØ×ŒwÇ Á~§»ŒÌg‡Lo‰g#(´îD~ÝNÄÞ½&÷%‡µO³ñûÜ©'„ùw.-;šíF€rlÐþüægÏž š—•å§,ÛénÙî;®0{úž³¾3žêaë7z†‘ÿµ/aß9ã“ko×™¥\OÍGõ2ì¡¿W]Õy1÷ñ™ùX/Ó:_	ò£þã=8ÀñÐ‡„‰ªaÆ·…¸<ªÒêò/«¯cÇþ¬j¶‚><æ«©"yFO<=‰n±Q³ºFnt\æw8MlÁö1¿ã˜Mž0mÚEÇ=8°ãøÒ€èZÇÓcëêiÊ·NÑ»½Û!] è?¿ðÏ²ÄHò!3 zÚMXjè^ÌÆëú÷{QèmîS,}

Vô2KÒ š8°Ìqb/|ý‘FÖóu¦(>âpXýô;Ì¡eêï·‹M¥Ç…o'ägzI	%‰J‡%×´ÿý¹úŸ}¢Ò†ÜÕËIÒþùÓ¹Êø.ü¡÷ßkGÁC~öØ|‹ägöžÑœÈZ}vohJe)è?Âcl’Œ²Â	Ì–¬äJZÉ‹¬€> Qé26sþ‘ƒ
­xœ31 …”¢ÄäÒÝäü¼4®êy¿vÏ›ðìéŒó?ÄoÈîÿ¢ÄmVU\Y\’š›Âð¼ÖEÈoíÉ‡+›ý¬Ë¦ô—»õÝ¢¢4%µL·¨4'µ˜¡áÖ-wýfx¯cì8?¿? Ñç®÷M ùÝ0d«xœ340031QÈ+ËMMKÖMÊÏ/ÑMÎÏËKM.ÉÌÏ+Ö+N-*ËLNÕËÌc(0KŠ)ïHöh*Qè½À¸Jÿ§oš!\wšnbiI>T+²¶£õß%Î¸_Ø:)|_œjÅÛô	ë\‘µÁ´”$¥§–€t|ó2?Ä1ƒûÈý«·]©®éü¶¿*‹d[îªÄ={f¶?PpQhÂëÃ3f”ïû Ú>XU¢xœ340031QHK)ÐKfÓÔëùµ¢ñÙböxõì--Wçu:"d0|LÚ¬(¦pJ÷ù-^¥g[V=¿j« ÍF«xœ340031QÈM-ÎÏÓK*ÍÌIaH²\øgbhÄÙ/3l§5¯OXx‹ß¢,?¹@79'5±H7­\·´ %±$U7#³¸$¿¨R/™a§rtÓë—<Êò!;
×žÐÞ{ùÐ"4f0œåp9q¤ãïÜZ¾[WxÓKî™5ï?’Æ¼²ÜT ñ+RÌ¬ëg5¸?}òC„ã»•çøÐUe0Ü™'êïúÃóÖ£¡|i+œ®¬Qþ‡¤ª87±¨D7µ¢$5/%5E7'?h²ù6½I3½§›•ýžuu	û‹pv3üz2œþlÍÒšûê×D¶Ÿnþî•QÏLAÒSZ’™S4zqUÄ±{ŒAÁzŠLö‹¶ÚÄP–Á°2IlBìÓ¹Ò^ÿ¢W«¢tæ/ ¨Â¥¯!xœ340031QH,JOÎÏKËL×Kf°ÛÑúëÌ½s;¶ÉÑïü»b·ÛCte¯Ö;Ä_ïí*Úq[1É^õä·Ò¨²¤ÄâT3 Qì?KO<}ñl‘sÍ3ã3oX>ÉMŽª&ƒáÀ7=íŸúq3TŸËøÜÜ¾i’nTMrNjb^iÐ kkjÒmtúƒÝ›™[%Ävê|*CS”Á¥z±úímå6ûE[õœ»ST”ll4çŒn¿ò=Îü÷¦·DyÔ¤¯X¯–JGQ’Áð¤gú­>›·¡ª—ys®>XÓJÎª$«8?hˆîÓ–¦Žcn/Ø„®Jü9Ê|4=Fj"²Š†ÃIÝu•n;~t©1qªzë)ÜÆU‘›
R’Tš™“ÂðÑó‚áÔ´†’|“óC§Í«–ÝUV\š––Y´¬ïBÃ¦·Smž/˜ýÓeÙ»Ù·^AU“Á·´ßcMã¤]õ§ÙÕm·æf¯œUSRYZ4æÖ{ÍîËg[ë%ÿ]©×Þ×¯ø·ÀEIÃ÷óÏÕ_æxž˜ÛÜ¸òô&ë'« §&ÚŒ¬xœ340031QÈÌ+.(-ÒÍ+ËMÕKfè™4kAÜéÝÇª.„ñÝŸü1ña!¦Â‘¥Ïæ5ÖÉ¬œû|ÝžÅÉ»®Ûù£*,-ÉÌ)ª¼"¸Ÿ_ó–vYA™]ù*ñ{%oË:TE2 ¥qxœuÓ{8Tyð_­ÇýY·°ÕR©5cìã²e¥”	#—VR1—cæhæœiÎ·žÄŠOQl‘’.ä’{é±¢r[´ˆŠ„\JÚŠ¨ÕÎ˜iwÚvÏ¿¿Ïóý½ïû;¯IôÙ0Î2€Ê>ÿwƒ'{ÈÊqkï]2ñ)Ê$›“HV‹f#¨ }NrwŸK»Ð‘ßË4}¬¼ý<ÅfLFñP–a`4{ètIG·½óÑõ…Á»{ë‡=S¥ÌÞæåA¥ìô¢Ò¶y,Ð:æÑÎOë
ïÂÙºIIF+-+s@™B„àtF®˜óòÒëôŠk¨Õø`µ?IéBµw¤y:‚î‚ïfºå+ÏÙ»Í0¢ªJ‰+}? s! Þ*¦æ·V},vÞp@^…¸bóà9©ñp$;¸:ŠkÊÜåïšœ£&ì×¢<#!—×îq“ÔÄdÒ «\QØzÌ¬Ðb|ÃÉy=òsf¬4ƒÉc9`Çƒ‘½iFÞu>ñ6S„’ÒæS”úÿ~:ÂâBl(A]÷8-áYŒœ¼ožý­ƒ·Ú'ˆòx("2)4u-¥‹p¦ÙOÕsmëò†¶I‹Ay|.$žÞÛ|­ü-öý•]—ëµæln5=—&±D#Ÿ¤´"óLÃ¯ýþ¦=fÅÃ+¶›Þƒ‡’4g‚ädíüæ¬>½­ñS¶{·*žÂœo,•¦Ð˜‰™@1ì§6šþ»‚ ¹ˆ	i®¬Øœ!èx‚Þç™ß^8ÙŸWF=qÆbÄ]Š¸0	âA„`/Š³¤
›ßd?ß´º)×·\3Ê
ŽIkKK„¡!ˆ‰p:›ˆq@âèqjB_Mž©shvPêê¶¶¢ÁÒÔEKda.x„qék(µ«Ï3n+Zš¯=ë˜(ËüPþâÔˆxØ¡”Â‹Çë±£:ÝØî®˜HwÂ§vF .ª°a ¸kwò¦9•FmITNøKUVpÀ[Õe¡rÜÞa„õ[ìÇ¸¾^•§Ÿ„¸UqY8,~Íé5o®‘¼oÜÔ\Èï›ø`ú¢ÃLWVŠ6âŠ§<óÃðo¶KGµÆ!š{Wž.U:ý-:.-Æ5¾F¬&Ç:ŒÃ×BfJe!_ #8!P<&˜Œtrs.Ïz¡µ3xÕ¼?ÞW”üæ +ò}7Þë4
ª{—ß5êeWù…jàpZ^Y%²gÚäcnÕxœô¥ã€0—©	ws^pëÏ:.¸|s$EUÖ	ø<†(nË£ë%OOY–š,\¢Æ¯¨]³¼X–Iÿ›¶ñË®ßÉ]ŸR;-ÐªÅsàÝŒ†·»™lôÓS#UTÖ´¦LõMÉ0ñL’ævx²³H÷—}H¶(Í¨IÑùL .@¹DxW`nóâÁÑJŽ£:îìÎî;²”z}26G*ýœC9"2ÙhÓsO¡JV`|ˆ)NZØ*Ì¯QÑl*÷ÍIïJžvŠô^/ÙC Ð…8*º˜8¨.ò-'¤²°y«’ÂŒº,$äs…lXü®À«öå³›ÇØ«îxãNÜöúÜp JÏU'éõ@ªr‚ãZæ£ÆNÉ•‚Œëß"«ž9•’–û¹PÝÇ^…IWQ ±†’Ù;nû’jjËaŠ©œ^ùT¯6çoÂ…è$ÞÓ²Âè»N¹ÚšÑÁOÖÆXFõ6I®Â˜˜c ÌßVa)|«RýªÉÙêáæëúÆR!dðh ¨s@‡MûiIJYk4L:j®¾üE¢pwEdFŸKñ¯¶ß^‘?·ñvøÍbÉ¹qðŽÎ%5ïÛbX˜9ëûªä§l“ã0œ}ÉÿõFü™=~6S3v$µÉÔ…¿ ¢kß•-WCÅã5¾¸õ9«¤x'T…   070701015D6CB200008124000003E80000006400000001642C0FB5000009A8000000000000004A00000000000000000000004D00000000nvme-cli/.git/objects/pack/pack-012d5743c5e335beb8f539aba478271454908590.idx  ÿtOc                                                                                                                                                                         	   	   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
                                                                                                                                                                                                                                  !   !   !   !   !   !   !   !   "   "   "   "   "   #   #   #   #   $   $   $   $   $   $   $   $   $   $   $   $   $   %   %   %   %   &   &   &   &   &   &   &   '   '   '   '   '   (   (   (   (   (   (   (   (   (   (   (   (   (   )   )   )   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   +   ,   ,   ,   -   -   -   -   .   .   .   .   .   .   .   /   /   /   0   0   0   1   1   1   1   2
{žú»žæå˜ÏøØÀkô"^`ÙÉwë×A
‡R&Êª(Y¯™AîÃHRÖ<»åœ¿Àb~7D¡Åg *­óç9ÔàXû’Gärúúä]
·®ÚyŽ/®4é*—úAìc…"ðúÂ–ÎQñßPñnìq·õo1ÁeîqËÆ,ysù½ ©q˜CE2SoŒ²ŽXNfê™yÿÈ˜3óxõÄ0–â½[}PÄÇ `5x NÂs·¬gþh0yî¹Í¨ÝO²‹êÈÍ¯Òl{”U”ï½œQ™Õê¦vÛ¦±bñƒ&ú<7v˜'S–*ñ.“«/„ËÇÀÍ2‹³ù¼”VüJÎh‡<1˜wFî²°Ÿâ¾WVœ*ïSÔçRöÝ­hêv”íe„,ÛNê©	œ%(Ñ¼ ­ójžl¤´×ð08z¨œ*AÑaƒ¸/nð#ÈTb]ÏÜ^¥?s±ù¡Hr¾x>o;	Ò“?ocŒ!©ˆKuž®wn¦„ÌÕ…
k¨¤2ÅÉ«Îz`=',iÀ¸­( ºäËµ$z„J†ÙdßŸgÞ¨9ç’Kbk î|eðB«t+)í±öí j}£¥ý€>mØúJ¤¨unçÝÉ'kÇ›#€ÚØ´ÝN˜K®ˆÏŸPaLÝKÙƒ”/l7hÅÈ›“üì;kúƒ œ‰däh¤^»¨6C'ÖF>¦)ÔOœû‰ûÿ-¬•K&;,ˆ½5ŸÊŽ{6€»(þJ6|&m­ohŒ¥z§ËœÚFˆî=]FšsK½0¥ÎûÚÞMô~¯HZ<Ý´S·”Œ¡ïªóß”²BdâÍ${º`0˜å7–+!nçH³0_LIQèñz ïpÃ½ˆŸ\Ò_;îö?0 ë‘þ¥¨i¹êŸh¢Ú{Úøè*ÔÝä ©•~»eg/]ø"‘yqìÈL¥™¶´ˆoeTýt·üúÒu„Õ³ŽÑÏº¯[¶-©”4;Ù…c€«vÁB˜IVsz3çÀg¤êéá"ú?<ÆÀï‡†i\)bU3X>ÐXEc<“Ó}™£”‚`º?éJ·§ù9Å|¾±Ö(B«°R#j.ã*¸[Ê© uæ'NºžŠ³„tÎÖN™FßšÊç}DN­Éá©ƒN;v—ñOÚ÷Lê¯÷;oµ~±aú,Ýí8gÌÞ9îÒwìãi …ñŒzHZõ—
`ÉùžÔ¥Æ¶ã¬j¤rãFøalAvË^@!®™÷[ñ¿ §9zûC 
N…û¬qÓ«Âù;ÀÇìÿô÷S{ÛqDÐ}s|Y¦í€áØ;md£zfãR£G2’®"Í”ª›¨{H»È†2Ä@<Ì“Ãw±Ëx„’I–µÁ2ôŒ*`Ã–Ô˜›Åï
|¸¨^$Góêf8u°®ƒ¬¿AèQÔ´ÏÑÎò7†ŽzFâ¦ÎÒP†›OÄékw¼×ºŒ;%þã;’Ëºûÿ%8›3ê%°…¢›¸b”1¨CQ°›~‹ Ê¬€t›ò‹ŒI'¬fæœÎÌ0Õ˜ÞÕ¨‡ê4!SãHŽ:Wb„{Ïõ—G>+õ¯Üˆaw)õ  ¬  î  ù  õ      –  †  	m    \  Ú  ó  .  µ  ²  š  H    b  [¬  Ž     4    ì  
\  A  m  
  t  ©  '    Y…  [@  w  XP  Vñ  
Þ  ,    	¼  å  Wc  Ý    X
  è  ü  Ç-WCÅã5¾¸õ9«¤x'T…S}Ï±õJ„&«”µâehR¯‹â_070701015D6CB800008180000003E80000006400000001642C0FB600008F80000000000000004A00000000000000000000005200000000nvme-cli/.git/objects/pack/pack-ab19e15b14c2e81665ff52834179cef91f4b659b.promisor 007b40011d578bb784dfbe5ca15fc0d22c6bfb13 007b40011d578bb784dfbe5ca15fc0d22c6bfb13
01167ad3c8badf3d7677aeb8a9571d539b94ce3b 01167ad3c8badf3d7677aeb8a9571d539b94ce3b
023f7e0526a22ada49c6faa00dc62535a67ed477 023f7e0526a22ada49c6faa00dc62535a67ed477
028141942d5f4b89580a0add046de1640ee8013b 028141942d5f4b89580a0add046de1640ee8013b
02d2046c117da11b8b61557c28b0bbecfc41138f 02d2046c117da11b8b61557c28b0bbecfc41138f
03faa400d02ef22d61be7998028c405d7925c7c0 03faa400d02ef22d61be7998028c405d7925c7c0
05616f40d438f7cbcb7b025ba3a474561ce71cbe 05616f40d438f7cbcb7b025ba3a474561ce71cbe
087a56ce4e1eed3fa9df76f97ded8a934d6485a1 087a56ce4e1eed3fa9df76f97ded8a934d6485a1
08f2fd92c3130e344a532834e4160a0f5361d33c 08f2fd92c3130e344a532834e4160a0f5361d33c
0ae330f4f8b6ee17917c1af48672019d24d7df6c 0ae330f4f8b6ee17917c1af48672019d24d7df6c
0afdc710147d42c7d76d48072df36511e4b987b7 0afdc710147d42c7d76d48072df36511e4b987b7
0b035dc76e2d063ac724e9f5b43c4a7f74aad5d0 0b035dc76e2d063ac724e9f5b43c4a7f74aad5d0
0b68c656bd2ee553b45c13a34d254e534470d678 0b68c656bd2ee553b45c13a34d254e534470d678
0b9904e3aa0d2a226f3863035a687071243f1dc0 0b9904e3aa0d2a226f3863035a687071243f1dc0
0badbab3a173c83d14c4b5c4e2ca78e16a2b25f1 0badbab3a173c83d14c4b5c4e2ca78e16a2b25f1
0ccc67972050df9049efb6b6b61508a6007211a5 0ccc67972050df9049efb6b6b61508a6007211a5
0e42bd6f52bfd2271b8e57918f4842debe0a500b 0e42bd6f52bfd2271b8e57918f4842debe0a500b
0e8856c706ded7abe63f9b41398f6945bc1b8d45 0e8856c706ded7abe63f9b41398f6945bc1b8d45
0e94d675cd9233e985bc290da627a27f6331e1ad 0e94d675cd9233e985bc290da627a27f6331e1ad
0ebc00d83990e0368e0c295e67285d8770bc094d 0ebc00d83990e0368e0c295e67285d8770bc094d
0f92a621b1c343c8cd08f9e94c7c976065ec6e6d 0f92a621b1c343c8cd08f9e94c7c976065ec6e6d
1020cf5e114153344e638b3f24e12aff7764014b 1020cf5e114153344e638b3f24e12aff7764014b
105f4136750649b053bf038316aa1897d13e3c7b 105f4136750649b053bf038316aa1897d13e3c7b
1114ea4ac8cac8507d9da159e851f8b935c61dcb 1114ea4ac8cac8507d9da159e851f8b935c61dcb
11746993a4b4d1427ed7f028ffa2bb36e9873665 11746993a4b4d1427ed7f028ffa2bb36e9873665
12121ab14d0c6ed012dc0abcda178fbea7f3d63a 12121ab14d0c6ed012dc0abcda178fbea7f3d63a
12b66f6520d3a226e843dad68886ffd34091fb62 12b66f6520d3a226e843dad68886ffd34091fb62
13f948d80b6c17ead17d5fee3dc9dfe3f8db37c8 13f948d80b6c17ead17d5fee3dc9dfe3f8db37c8
1484a3e7e1a0ee2df8d2a86458d9aeea3f0fa467 1484a3e7e1a0ee2df8d2a86458d9aeea3f0fa467
14f5a5aceed79867131a5d2382cf21a74c9fd101 14f5a5aceed79867131a5d2382cf21a74c9fd101
1585722ceb13dd827657ad09370605b2fe15cdb8 1585722ceb13dd827657ad09370605b2fe15cdb8
160a8166b762ba153808481e919f6724f0174aba 160a8166b762ba153808481e919f6724f0174aba
172e7b714327eca4909236bcc1a899374df399c9 172e7b714327eca4909236bcc1a899374df399c9
1771538e33dcf54b9498740e2f7275555e3c3f56 1771538e33dcf54b9498740e2f7275555e3c3f56
19804e826fcaadb2712b36d0b88b0e3f172393bb 19804e826fcaadb2712b36d0b88b0e3f172393bb
1a9d09d2d0e16481f2807c1a37cc2bc6a909a852 1a9d09d2d0e16481f2807c1a37cc2bc6a909a852
1ca14b7bc05d26d766facbd6c79d356071028837 1ca14b7bc05d26d766facbd6c79d356071028837
1d9b0f18b9e66b9e3039973290d9eac334be55ea 1d9b0f18b9e66b9e3039973290d9eac334be55ea
1e292e8cfaa881e6a3075f276bb484d59e528940 1e292e8cfaa881e6a3075f276bb484d59e528940
1ee53c82fe6840336f84e6a6842761fd82292839 1ee53c82fe6840336f84e6a6842761fd82292839
1fdc6a6738532d93d93af107f0e6ce0bd3ad04d7 1fdc6a6738532d93d93af107f0e6ce0bd3ad04d7
204820476336a7c809a8943654f6a38ce6eba266 204820476336a7c809a8943654f6a38ce6eba266
206d4f4164cb6d910426e60bbd0ca34fe8bc7771 206d4f4164cb6d910426e60bbd0ca34fe8bc7771
20a0dcf05f48c16ac803448042b410f277b13148 20a0dcf05f48c16ac803448042b410f277b13148
21139518492f00cf58726b8e6adfbcddf93b9285 21139518492f00cf58726b8e6adfbcddf93b9285
21773d6be741e6fc556ad6527fb31fdd8bd3f675 21773d6be741e6fc556ad6527fb31fdd8bd3f675
21bb59716940fad3d55de56dde49d13181f6691f 21bb59716940fad3d55de56dde49d13181f6691f
223d0b34d02b06e969cef7b1f67f722a1b996c6d 223d0b34d02b06e969cef7b1f67f722a1b996c6d
22c8aa02d12229e66d43adbfe46b702a021f184c 22c8aa02d12229e66d43adbfe46b702a021f184c
22d26546c4e3416a8c3aa7d176170bd2f45734c9 22d26546c4e3416a8c3aa7d176170bd2f45734c9
2369d82ad8eba9f0a229b18918a13c83fe869cce 2369d82ad8eba9f0a229b18918a13c83fe869cce
23c2e7f9210e7be6efa58e0abed724fe7bb64c03 23c2e7f9210e7be6efa58e0abed724fe7bb64c03
23c6cb098945cce3d55472b49c2bb5c87f6bc148 23c6cb098945cce3d55472b49c2bb5c87f6bc148
23c8d4feef68ce99dde4771f8efd488e74dd9923 23c8d4feef68ce99dde4771f8efd488e74dd9923
24506b0dbd0a2e2afff437f68d61235648e67006 24506b0dbd0a2e2afff437f68d61235648e67006
2548add037552c3aa2ac9f614d2e7ab40fdd3ffa 2548add037552c3aa2ac9f614d2e7ab40fdd3ffa
2579c310db6258f9af3833b16856b5032ee86272 2579c310db6258f9af3833b16856b5032ee86272
25fc55b8f3f16fde230dda22fe2f8a0f72d059ae 25fc55b8f3f16fde230dda22fe2f8a0f72d059ae
260565ddadcfb5b5af6fcffa4a43ed67d41c866c 260565ddadcfb5b5af6fcffa4a43ed67d41c866c
2736afadac6a2b5f8e87cd86c16f3b89a2f3a397 2736afadac6a2b5f8e87cd86c16f3b89a2f3a397
275d2fdb8257b6df5be1ee469279c85b43a5ec8c 275d2fdb8257b6df5be1ee469279c85b43a5ec8c
27c497c41c99e51818da006d98f504a17e5e7c55 27c497c41c99e51818da006d98f504a17e5e7c55
27e6bf39522b03da9f292acaccae0c810f2cd229 27e6bf39522b03da9f292acaccae0c810f2cd229
282b70b5bcd3ea2a783ca2f53a1d873b0b383b41 282b70b5bcd3ea2a783ca2f53a1d873b0b383b41
284fb6966c5b3a7aca7b15ff5145ca9a03878b43 284fb6966c5b3a7aca7b15ff5145ca9a03878b43
288c234be08e7ebf3168d36082a1ccd2d8495863 288c234be08e7ebf3168d36082a1ccd2d8495863
292caaa76c0972ce08a459fd0710a2a2314b1541 292caaa76c0972ce08a459fd0710a2a2314b1541
2ae4dd919b4dbc807c248ca2df40dc2192cd987e 2ae4dd919b4dbc807c248ca2df40dc2192cd987e
2cf2486fe2f2193ed16d609464bf1bce853c8de0 2cf2486fe2f2193ed16d609464bf1bce853c8de0
2d5d173bc4f58c772130cb15dc4a8e4725a25849 2d5d173bc4f58c772130cb15dc4a8e4725a25849
2d841fe2defdc4923b848a0bb011676016ee73b5 2d841fe2defdc4923b848a0bb011676016ee73b5
2ddb9f92f1d5a6efa47da501e0ae0d6c21ca756b 2ddb9f92f1d5a6efa47da501e0ae0d6c21ca756b
2de5848288c646e80612d518fcc503c5675c1a91 2de5848288c646e80612d518fcc503c5675c1a91
2e9a379066615c5ba8ac02cc19f585ebb2fa64a3 2e9a379066615c5ba8ac02cc19f585ebb2fa64a3
2f123c7ed9aab1ad1f1c992a708f50c4f335e171 2f123c7ed9aab1ad1f1c992a708f50c4f335e171
2f18ea262db2882fc34cf0b5a1cdcbcc0f028543 2f18ea262db2882fc34cf0b5a1cdcbcc0f028543
2f5562b06a87c1dc2f1bb745aada7b278e0b7c7d 2f5562b06a87c1dc2f1bb745aada7b278e0b7c7d
3093bec7edce5ab3dc6d2e1dcc50072a76bef03d 3093bec7edce5ab3dc6d2e1dcc50072a76bef03d
30e61ffb9cc8c6fb91d6c6766b3f1f1744f63722 30e61ffb9cc8c6fb91d6c6766b3f1f1744f63722
324bc45a6f6fab945f8ecc8bebec8f9ee60bfb87 324bc45a6f6fab945f8ecc8bebec8f9ee60bfb87
336d84794ebf1840824f0f6bcee3719242dc3474 336d84794ebf1840824f0f6bcee3719242dc3474
359ba482284da1cfc58dffc879a513cbb06b9453 359ba482284da1cfc58dffc879a513cbb06b9453
3641c80b1e4f6df393426f178b740658e6543fb8 3641c80b1e4f6df393426f178b740658e6543fb8
37b62e92994a61973676fb9ad5a407e857073638 37b62e92994a61973676fb9ad5a407e857073638
383c7055537bcf0e7803288f9db415e05df6bc8b 383c7055537bcf0e7803288f9db415e05df6bc8b
3c8039a660538f9688eb1b875dc735346b829f4e 3c8039a660538f9688eb1b875dc735346b829f4e
3c932655b739035e28f56c60e654761e94e0539d 3c932655b739035e28f56c60e654761e94e0539d
3cea64337b72d3c3812f5d925815a6ab4c0d2e45 3cea64337b72d3c3812f5d925815a6ab4c0d2e45
3ceeba12ef69f5ce5fca9a67744b66994d0f8c60 3ceeba12ef69f5ce5fca9a67744b66994d0f8c60
3d57fd700ed1446af7e93802b202e63a40bf32c1 3d57fd700ed1446af7e93802b202e63a40bf32c1
3dae90d656ffb7ebcb5337599d02cf58683a1d80 3dae90d656ffb7ebcb5337599d02cf58683a1d80
3e9337e37092a59227f56a3f1bd3100184200fa3 3e9337e37092a59227f56a3f1bd3100184200fa3
3e95295c39cd85ddf232646b83e91338e21e7217 3e95295c39cd85ddf232646b83e91338e21e7217
3e98f9a4144cee2cf1631cde3b94b47cac3269ac 3e98f9a4144cee2cf1631cde3b94b47cac3269ac
3eb885faccdeceb8b61cc4142f89fda8ae4b46ff 3eb885faccdeceb8b61cc4142f89fda8ae4b46ff
3ee5809d4d01ef4d18d8d667b57516a5068e5215 3ee5809d4d01ef4d18d8d667b57516a5068e5215
3f50d6246b4ed55155c538f804123cb6c935390b 3f50d6246b4ed55155c538f804123cb6c935390b
40edcfa0d0f1d0420b1ffd8debab9ec41fcf43fe 40edcfa0d0f1d0420b1ffd8debab9ec41fcf43fe
413fcb2c43e4b1d89911b8a78dd08a45834b1b37 413fcb2c43e4b1d89911b8a78dd08a45834b1b37
41c56f99577e68b3fa837ae3a72bd40d8bf2aecd 41c56f99577e68b3fa837ae3a72bd40d8bf2aecd
41c8328906282be7e37cfbbea7a98d3c1f28506b 41c8328906282be7e37cfbbea7a98d3c1f28506b
427188a95d8c52e7095d7afca567ba9ba7cff735 427188a95d8c52e7095d7afca567ba9ba7cff735
42c1f9856a2a9deafa9106e8f2d9fb8d1c276964 42c1f9856a2a9deafa9106e8f2d9fb8d1c276964
434309934687f27c16f7c94fa11e229b6cf4b626 434309934687f27c16f7c94fa11e229b6cf4b626
4438882acc5ef3b538473d303ab557bef9b2d99d 4438882acc5ef3b538473d303ab557bef9b2d99d
44b5053e91a82adf26602761bdbb1aac19ebeb78 44b5053e91a82adf26602761bdbb1aac19ebeb78
44bb4f9411ee952ae8246599b3cad5c6c89f1029 44bb4f9411ee952ae8246599b3cad5c6c89f1029
44d88cef3ba5b90dc691434eaf8d031989529841 44d88cef3ba5b90dc691434eaf8d031989529841
4612e127324c929f47b4dfb1b0a9b7bea1231800 4612e127324c929f47b4dfb1b0a9b7bea1231800
462136d46a9b57f36b5025eb4d8e0260c0a5411d 462136d46a9b57f36b5025eb4d8e0260c0a5411d
466802f83983d3c3c248ca2f14bf66e2b39edebe 466802f83983d3c3c248ca2f14bf66e2b39edebe
4691b0af71257f83d12c4e4d6e02669ef3193127 4691b0af71257f83d12c4e4d6e02669ef3193127
4704915935e10c0f626c817ceb541112a108e93e 4704915935e10c0f626c817ceb541112a108e93e
474ba90b39c97ad25771beabe3b6e012ac28fd5f 474ba90b39c97ad25771beabe3b6e012ac28fd5f
477fe1071cff7088175eb3f37eefae608b6a7c0c 477fe1071cff7088175eb3f37eefae608b6a7c0c
486d3bc3e17c30da90466f1bfa3e00d41aa46d31 486d3bc3e17c30da90466f1bfa3e00d41aa46d31
486d89fd6fc84121a624c8a916224a901f7c233e 486d89fd6fc84121a624c8a916224a901f7c233e
48dd67f1d0bb255d2818c1b6dbc6f7d228943011 48dd67f1d0bb255d2818c1b6dbc6f7d228943011
496028b84d929cb7059e814f0832d6b3d2ec3aa6 496028b84d929cb7059e814f0832d6b3d2ec3aa6
496e741361df2d7a36d165ad2e6d9822853e7853 496e741361df2d7a36d165ad2e6d9822853e7853
4bf4d16d980c29c8b0650d23ddc0bd25d59569ca 4bf4d16d980c29c8b0650d23ddc0bd25d59569ca
4c46d6fdeff83d4f44346b02bc89d9c015ece9a5 4c46d6fdeff83d4f44346b02bc89d9c015ece9a5
4d02085ee32c816ff700eee2814ba2642853d3a1 4d02085ee32c816ff700eee2814ba2642853d3a1
4e1db30c5347ed6f827940cbd906c6dd183aca29 4e1db30c5347ed6f827940cbd906c6dd183aca29
4e5b079be09da6cc19bc0464e1cd0c584a2cce43 4e5b079be09da6cc19bc0464e1cd0c584a2cce43
4ee3f76f1405fa6f9ce85641efd753128b1bdbd2 4ee3f76f1405fa6f9ce85641efd753128b1bdbd2
4fa652dae69e6458e60ed11061e9b75642ec00de 4fa652dae69e6458e60ed11061e9b75642ec00de
4fdb3f6c30165e9b5e41235a1fa8441e8758af7d 4fdb3f6c30165e9b5e41235a1fa8441e8758af7d
5034ef30ee9d54d5efaeb68e4ae4a0c4c88f6f92 5034ef30ee9d54d5efaeb68e4ae4a0c4c88f6f92
50c1b9ee9c42f8e1e8d07f1c2a56446bffd52c41 50c1b9ee9c42f8e1e8d07f1c2a56446bffd52c41
5111703123f6861d30c6a8a51ffd21004168e3ef 5111703123f6861d30c6a8a51ffd21004168e3ef
519040acd9b51e2c2e3e9d029a16da0a59e18c9b 519040acd9b51e2c2e3e9d029a16da0a59e18c9b
51a3511fbe2974288a61633c9076ffb487bc606c 51a3511fbe2974288a61633c9076ffb487bc606c
5278864cdac4b336e8c2a424ceaf02a715f7458c 5278864cdac4b336e8c2a424ceaf02a715f7458c
528412cfb3e92c78385978deaea0324f770ef97c 528412cfb3e92c78385978deaea0324f770ef97c
54a7831727e6a7662fa686ada3216d565575cfab 54a7831727e6a7662fa686ada3216d565575cfab
5578e9f0475a6f18d3f44858e64a2bb2a7ce430e 5578e9f0475a6f18d3f44858e64a2bb2a7ce430e
576c4c0d1b91b1c603d62a50508847da4b79ea8e 576c4c0d1b91b1c603d62a50508847da4b79ea8e
579e931023f5a4362093b11b1d3a63424865876c 579e931023f5a4362093b11b1d3a63424865876c
57f27c12324f8ef16857c60fc37a4017bc740a18 57f27c12324f8ef16857c60fc37a4017bc740a18
5863a8006d6b9632483e67f6de99af99afe9aaa0 5863a8006d6b9632483e67f6de99af99afe9aaa0
596c55f06da6ff59549fdcdd8749370a11e5f50b 596c55f06da6ff59549fdcdd8749370a11e5f50b
5993850a1ce5723a8ecc9f8cd82c828bf26a1d30 5993850a1ce5723a8ecc9f8cd82c828bf26a1d30
5a2a9ac803a6b7493717fcf5f0460a58e5971b2f 5a2a9ac803a6b7493717fcf5f0460a58e5971b2f
5a7dd9b759f5ee31001644a0eb02ac898625dba5 5a7dd9b759f5ee31001644a0eb02ac898625dba5
5b0c6ddb4c66902c0fc2ed8f3e7b6f2daf2330ae 5b0c6ddb4c66902c0fc2ed8f3e7b6f2daf2330ae
5b4b91245592a77d6af0cdddc1327257a87cdf0b 5b4b91245592a77d6af0cdddc1327257a87cdf0b
5b7563e63e907c6622ee304cee8873a43f3aa657 5b7563e63e907c6622ee304cee8873a43f3aa657
5baac595f76189c873104fddcff0ed2643bbc0c2 5baac595f76189c873104fddcff0ed2643bbc0c2
5cd74cc5290ae0a67a62037cf48faae448e66af2 5cd74cc5290ae0a67a62037cf48faae448e66af2
5e155e6d3c31c9172392523c10863b15e5ff613d 5e155e6d3c31c9172392523c10863b15e5ff613d
5f3c94ec71f1733a4f40ccb021ade462bf64215f 5f3c94ec71f1733a4f40ccb021ade462bf64215f
615a941d05fdd8c13f33e4345182007cef62fe3d 615a941d05fdd8c13f33e4345182007cef62fe3d
6366d60f738120201692b150f0d8919951e757e4 6366d60f738120201692b150f0d8919951e757e4
639cb4796f099c13c07e310b23187e5835b0ef51 639cb4796f099c13c07e310b23187e5835b0ef51
63bef5d7a4228f54e117dc579a1a0b81202918f5 63bef5d7a4228f54e117dc579a1a0b81202918f5
641239a251fc915558cdf4983d9683af60a1da0f 641239a251fc915558cdf4983d9683af60a1da0f
64be00bc6ab81822b060f2f951de736d09ef8f31 64be00bc6ab81822b060f2f951de736d09ef8f31
666927a56e3fd45010a3c3b9c38545c19dae96c7 666927a56e3fd45010a3c3b9c38545c19dae96c7
675e8c50eeb9bc313971a69b98d5c10c97562ed6 675e8c50eeb9bc313971a69b98d5c10c97562ed6
677942aea892c273c422bf1785d6d3827e512da1 677942aea892c273c422bf1785d6d3827e512da1
67b215c681a6061e0bf637928c9dc0f533728e36 67b215c681a6061e0bf637928c9dc0f533728e36
685703d801c009b41bf70b385cb70cb13da74a7e 685703d801c009b41bf70b385cb70cb13da74a7e
6865a90d81514b3c27583aa29b1cf8cc51c4c641 6865a90d81514b3c27583aa29b1cf8cc51c4c641
68ebd0f30769a51ff7e29f7d8e2c9cfe64c5cc90 68ebd0f30769a51ff7e29f7d8e2c9cfe64c5cc90
6965507f7a3359ce4f119d56cbecd75f179aa5dc 6965507f7a3359ce4f119d56cbecd75f179aa5dc
69836dafc347e488abbf420f0cfe9c284d7d3a11 69836dafc347e488abbf420f0cfe9c284d7d3a11
69ad4da5d652e5a52b1ecaa7ece30a9a685e2866 69ad4da5d652e5a52b1ecaa7ece30a9a685e2866
6a919f88222f19df811d072ed176c25f465aef8f 6a919f88222f19df811d072ed176c25f465aef8f
6b42b75cfe096e258fc99071a9e84a827f6c8ac2 6b42b75cfe096e258fc99071a9e84a827f6c8ac2
6baaefbc26dfe79a8867e3e88cb47b2c212e74ca 6baaefbc26dfe79a8867e3e88cb47b2c212e74ca
6bace47cb58807e38a503dffa8a4651739d34ebd 6bace47cb58807e38a503dffa8a4651739d34ebd
6be7656c871d1a20152188e2a86811134dd6fd38 6be7656c871d1a20152188e2a86811134dd6fd38
6cfa944467267a0dc77ded9ea8248af126b83b61 6cfa944467267a0dc77ded9ea8248af126b83b61
6dab395882c421964a97a7f9ba120222b75907a4 6dab395882c421964a97a7f9ba120222b75907a4
6e040c4267a97c471ccf42c8098a3c5e1f340ca4 6e040c4267a97c471ccf42c8098a3c5e1f340ca4
6e3a4625ac4cca896ab7d802df31e337471614e8 6e3a4625ac4cca896ab7d802df31e337471614e8
6f23cc4ff9a2cdb3fce3525d950bee841d6f3035 6f23cc4ff9a2cdb3fce3525d950bee841d6f3035
6f3264d1d25a22e8a02adc9e8b33ae61bcba6146 6f3264d1d25a22e8a02adc9e8b33ae61bcba6146
6f7188365e434e033c48036f397266d7543cb236 6f7188365e434e033c48036f397266d7543cb236
6facd3fd52120ab46ce4daa38dd4b55fd31c244d 6facd3fd52120ab46ce4daa38dd4b55fd31c244d
70100f366ce0c499df7b9f362056f443eeeb90d8 70100f366ce0c499df7b9f362056f443eeeb90d8
7036625c778863488274208dd001aa2ff94d5226 7036625c778863488274208dd001aa2ff94d5226
72c53f395c83b9b9f18b170ea845471ce8c4384f 72c53f395c83b9b9f18b170ea845471ce8c4384f
72ecf091dcd054635e8ef138f9f9011562088889 72ecf091dcd054635e8ef138f9f9011562088889
7425bd5f583cf7ff718a8d767ff1ed84db9c7f4a 7425bd5f583cf7ff718a8d767ff1ed84db9c7f4a
74c48b356a487b81b32f786eade3709c355edae9 74c48b356a487b81b32f786eade3709c355edae9
753beaeda8d44909ad11c2a52d52e155fceaf640 753beaeda8d44909ad11c2a52d52e155fceaf640
75d8fef5b892db1082ed74838ee87261a947e059 75d8fef5b892db1082ed74838ee87261a947e059
768143827138a116fb3e5b8d3a6e3d26378c016d 768143827138a116fb3e5b8d3a6e3d26378c016d
76cbd7ac1f1277c1ff5f1dc4bc44655bbfa0d902 76cbd7ac1f1277c1ff5f1dc4bc44655bbfa0d902
7702fcc9f0cc3487feb69c308080a552219711ca 7702fcc9f0cc3487feb69c308080a552219711ca
7851afce258bb110779f112194a708f6a5e2cd81 7851afce258bb110779f112194a708f6a5e2cd81
7891a51410026da810a2e70e46ee97113dad2814 7891a51410026da810a2e70e46ee97113dad2814
7a45d51148f3c6f395cbc0236c37779200817e73 7a45d51148f3c6f395cbc0236c37779200817e73
7a4633afa4ade84b59f3168acbed187985e80e61 7a4633afa4ade84b59f3168acbed187985e80e61
7a4ceeea51316d77c46e691ef745fe4c1886900c 7a4ceeea51316d77c46e691ef745fe4c1886900c
7a5269574d146890f347fc46b72828afd0266d11 7a5269574d146890f347fc46b72828afd0266d11
7ac43c68e2a74c0a2f1fa28c3625087930459f24 7ac43c68e2a74c0a2f1fa28c3625087930459f24
7accc5384c6418d304b34b73580b396a250966fc 7accc5384c6418d304b34b73580b396a250966fc
7d198a055f459d4748c41f8568fffb986cffb13d 7d198a055f459d4748c41f8568fffb986cffb13d
7d4307914fd80fd2bc7a8d04a3d19f384a254bc2 7d4307914fd80fd2bc7a8d04a3d19f384a254bc2
7d7b8b7813ca435b7d6c54f9a7419566491e3f08 7d7b8b7813ca435b7d6c54f9a7419566491e3f08
7e0e87848f983d9270b29b435596f42ebaf183fe 7e0e87848f983d9270b29b435596f42ebaf183fe
7efef4cd98dfd92001fde9da365fe5fb2cff76ae 7efef4cd98dfd92001fde9da365fe5fb2cff76ae
7f2da46b4a1bb51ba6f62c3e9712fa59c8f9ae9f 7f2da46b4a1bb51ba6f62c3e9712fa59c8f9ae9f
7faffdc65bb3aa52bae1b1e055198480613c50c5 7faffdc65bb3aa52bae1b1e055198480613c50c5
80b0496250c319c80ce2086ae3a8ccf338f5b932 80b0496250c319c80ce2086ae3a8ccf338f5b932
81c51abce1427b18181d7ce6a2b4ef25d9d82e78 81c51abce1427b18181d7ce6a2b4ef25d9d82e78
81eaaf405e53d78d8a72b8db21623f25c9f6755c 81eaaf405e53d78d8a72b8db21623f25c9f6755c
8363fcbcd27ba382baeea785de55fb4a127951ca 8363fcbcd27ba382baeea785de55fb4a127951ca
838758c5b7775dd72875a705c249fcfe40ff9fef 838758c5b7775dd72875a705c249fcfe40ff9fef
83f57fba24d137402bf08e9ce31a3f7b1c90482b 83f57fba24d137402bf08e9ce31a3f7b1c90482b
84a1d5a1174b1876565ad33943a0223bdc8df49a 84a1d5a1174b1876565ad33943a0223bdc8df49a
84d3a2208b5fd9a695bfd6b343c2c2cee77109cd 84d3a2208b5fd9a695bfd6b343c2c2cee77109cd
867667325810a95eb285bbf55f496de4dfed9750 867667325810a95eb285bbf55f496de4dfed9750
86da3ff8ac130f4d19f6bd1ac70e267c95d1eca8 86da3ff8ac130f4d19f6bd1ac70e267c95d1eca8
86ffb08e0fc7042ca477d1d294f04849137c70f1 86ffb08e0fc7042ca477d1d294f04849137c70f1
8894ef086f80ac80500232b2530c25432e54e268 8894ef086f80ac80500232b2530c25432e54e268
8903738b2e82686ee4ffe7cc9d90488d21051a58 8903738b2e82686ee4ffe7cc9d90488d21051a58
896ccf965c8da291c9c869ea52277f335c2fd9e6 896ccf965c8da291c9c869ea52277f335c2fd9e6
8993ff341fe0e4398f06ba479358357ca33ad5ef 8993ff341fe0e4398f06ba479358357ca33ad5ef
89a7ce133b9091dade3126762d66c93cfe98fe22 89a7ce133b9091dade3126762d66c93cfe98fe22
8a29cf93bd16662b25ce3bccc675cf88c506032c 8a29cf93bd16662b25ce3bccc675cf88c506032c
8a5b953cf7dd5371550b5ef9c2ff5c34b04e5ebe 8a5b953cf7dd5371550b5ef9c2ff5c34b04e5ebe
8b40b9a476f620c8217a9dc6c4d3c38f5c2207d9 8b40b9a476f620c8217a9dc6c4d3c38f5c2207d9
8bc7df96d551e508a7507729a6a51bb2f23da4e9 8bc7df96d551e508a7507729a6a51bb2f23da4e9
8c714160adc699c092c914cdcdfb8efe7de5c14d 8c714160adc699c092c914cdcdfb8efe7de5c14d
8c929aa05e901bbbc7427ad0560edf93f161e17c 8c929aa05e901bbbc7427ad0560edf93f161e17c
8cd9234da1eb8f2ee960eaec7bacdc1a29e39a15 8cd9234da1eb8f2ee960eaec7bacdc1a29e39a15
8d00dde217a6cca9b55e25e781ceae6687a21836 8d00dde217a6cca9b55e25e781ceae6687a21836
8d08d4fbe6ef9e7a960fd4514e1ec47ed9f89da2 8d08d4fbe6ef9e7a960fd4514e1ec47ed9f89da2
9094c2ea6b545b4790d8e30ebd61452d72d2483b 9094c2ea6b545b4790d8e30ebd61452d72d2483b
90b0f8c6a4d2923d3353d1049c4a6e11db584bd7 90b0f8c6a4d2923d3353d1049c4a6e11db584bd7
9228c4f92ef932fc4c5f1b54eed1c40144cbd271 9228c4f92ef932fc4c5f1b54eed1c40144cbd271
9338e266b5967cf993e597e1a9f95f3f21c7f991 9338e266b5967cf993e597e1a9f95f3f21c7f991
934ef1c65468475cee54cf8c47d590beb94a3d24 934ef1c65468475cee54cf8c47d590beb94a3d24
9420dbf358fcf9d918611da1355ca7f085a93384 9420dbf358fcf9d918611da1355ca7f085a93384
952186035a18b93103fa9b7fe86d4c18a3b3cbc5 952186035a18b93103fa9b7fe86d4c18a3b3cbc5
95346f210b3fd4da1213bdda02d20020637a554c 95346f210b3fd4da1213bdda02d20020637a554c
95c36e5ca09970009955c76f8b64e35dc42ddb35 95c36e5ca09970009955c76f8b64e35dc42ddb35
95d14a61f62f4ebdb07017665522cc1afd7c4aec 95d14a61f62f4ebdb07017665522cc1afd7c4aec
9672785c56269f624d71b4b4c488b6fd08124b74 9672785c56269f624d71b4b4c488b6fd08124b74
9696ab65ee13715057ad9ccf6891fb665b701697 9696ab65ee13715057ad9ccf6891fb665b701697
96a9a6f77fcd3af3472bdc0fae5e9f9d69142522 96a9a6f77fcd3af3472bdc0fae5e9f9d69142522
96afaac76fe730190f95ecfee233f482c36adf8e 96afaac76fe730190f95ecfee233f482c36adf8e
9802fc0e32432f8479d16abece3e41dc2c69d1d1 9802fc0e32432f8479d16abece3e41dc2c69d1d1
98046c607dd262de58e01dd959ac7a8c5877d996 98046c607dd262de58e01dd959ac7a8c5877d996
9932474a946e3b42df065de261feb08555665300 9932474a946e3b42df065de261feb08555665300
9946991d748740e686751c41aafedaac6f18261e 9946991d748740e686751c41aafedaac6f18261e
994dbbf913869629cf1a475ec6cf7f462f3bac18 994dbbf913869629cf1a475ec6cf7f462f3bac18
9958604d8fa10f75db1342e72ee26eab27e65c4f 9958604d8fa10f75db1342e72ee26eab27e65c4f
99ea8334ed86324f9be492e295bc6913d4d7fcbe 99ea8334ed86324f9be492e295bc6913d4d7fcbe
9a03e3ab31104997a6a430f4efff736c1597cd46 9a03e3ab31104997a6a430f4efff736c1597cd46
9a243a4356add51f8a446da5ad51df287526757c 9a243a4356add51f8a446da5ad51df287526757c
9a4f42967c2d4bf56bfba5cc1b1353418b23bd78 9a4f42967c2d4bf56bfba5cc1b1353418b23bd78
9b7c79d417838cd6b1470c9128efd147b3f9848a 9b7c79d417838cd6b1470c9128efd147b3f9848a
9c150bdb5723e6d7a8bc5f92da96f0ea3e32d749 9c150bdb5723e6d7a8bc5f92da96f0ea3e32d749
9c81bb7f398fa75826b213d7173a6044acfd2de5 9c81bb7f398fa75826b213d7173a6044acfd2de5
9cd302d306b12526ee40f8ffb6e7fe6cf52b54d2 9cd302d306b12526ee40f8ffb6e7fe6cf52b54d2
9d88449f5e017cd67d9956e59fb483db447c5924 9d88449f5e017cd67d9956e59fb483db447c5924
9da3395cec269529fd4ddd0996e7bae076731d8f 9da3395cec269529fd4ddd0996e7bae076731d8f
9fc3309951c19d151eb44c89f3cffbb6fd50f511 9fc3309951c19d151eb44c89f3cffbb6fd50f511
a074417eb77bf45613d532cc937e4367e9c33490 a074417eb77bf45613d532cc937e4367e9c33490
a131c66dc9ef2ecaa8f5ddade0e6a134ffd784c2 a131c66dc9ef2ecaa8f5ddade0e6a134ffd784c2
a196d195f568fccd957dd796f8a140706131f814 a196d195f568fccd957dd796f8a140706131f814
a29b72963c05c59c0b0a7ead4b7e562603e95610 a29b72963c05c59c0b0a7ead4b7e562603e95610
a37a58c6de0152532e688821023f81a332b53ff1 a37a58c6de0152532e688821023f81a332b53ff1
a3b3476a687ee2baac5cb4803dde95409415dfd5 a3b3476a687ee2baac5cb4803dde95409415dfd5
a3fd6a16e8a5d599ae23c491e9102090d551410e a3fd6a16e8a5d599ae23c491e9102090d551410e
a4cef9c2a1d81c0244258ca4f759a453c73f8f78 a4cef9c2a1d81c0244258ca4f759a453c73f8f78
a51c435df04b96594c88889d6a2c880d2e4c4289 a51c435df04b96594c88889d6a2c880d2e4c4289
a5a24b99052263977bed40243a2e5b9847ba209e a5a24b99052263977bed40243a2e5b9847ba209e
a5e26610ea9efe2d9f8121eb6a18e52417f68e1e a5e26610ea9efe2d9f8121eb6a18e52417f68e1e
a676f0436c8eaf9649eff48bfe62a8f9603874a6 a676f0436c8eaf9649eff48bfe62a8f9603874a6
a68c2a7d34d3b89ce460b8381b64132fd622d694 a68c2a7d34d3b89ce460b8381b64132fd622d694
a77eaea393220597cdd00205ec2b5f2abb3ae49e a77eaea393220597cdd00205ec2b5f2abb3ae49e
a7992a84eece6f0d4eb5818fe4177f9ec222c039 a7992a84eece6f0d4eb5818fe4177f9ec222c039
a864363b32417f9a8047e5e4ffb05841eea9ce0e a864363b32417f9a8047e5e4ffb05841eea9ce0e
a888dd16a615a81e9dd164efc512ce6b0a9fdfe2 a888dd16a615a81e9dd164efc512ce6b0a9fdfe2
a8cddda260f7bb3e7800b93f7144538e8855bd9a a8cddda260f7bb3e7800b93f7144538e8855bd9a
a90b0e52e1af440bb62cc758971de5e5be6a96ba a90b0e52e1af440bb62cc758971de5e5be6a96ba
a96216905de598e10a66ebc7f42e7d206422ccfd a96216905de598e10a66ebc7f42e7d206422ccfd
aa88265f98d8ab46ca50813ad8f06b1dcff9b095 aa88265f98d8ab46ca50813ad8f06b1dcff9b095
aa8bb285f16af71bfd3a8aae424cd62cf81bc6fc aa8bb285f16af71bfd3a8aae424cd62cf81bc6fc
ab54facb2c28451d58c1b2f9ea848f4b69f8ed49 ab54facb2c28451d58c1b2f9ea848f4b69f8ed49
ab58f71fef7f0527184674124ef488b8467eb59a ab58f71fef7f0527184674124ef488b8467eb59a
abc6ebc654eeeb0b2ac7f81dff7510fb01c8d570 abc6ebc654eeeb0b2ac7f81dff7510fb01c8d570
ac72c06bfcff75ef6a899ddac4f222d761c1c7cb ac72c06bfcff75ef6a899ddac4f222d761c1c7cb
acd9b08c9b26c8c00dd344461befcc4336d818b8 acd9b08c9b26c8c00dd344461befcc4336d818b8
ad8a600e5afd0ed0033851aef764edc6866e3bfd ad8a600e5afd0ed0033851aef764edc6866e3bfd
ae3bb1068f9c063022bb15650f91a2699cc6d491 ae3bb1068f9c063022bb15650f91a2699cc6d491
aeb30b1f5b0a53956b7af453d244a4e9bd24cd75 aeb30b1f5b0a53956b7af453d244a4e9bd24cd75
b00548d58e33f52f6023d56e517dc23762b95d86 b00548d58e33f52f6023d56e517dc23762b95d86
b105fc4057f767e9223fb5c7a2a2b617d34d93b8 b105fc4057f767e9223fb5c7a2a2b617d34d93b8
b157c403b19a89b97878ae2972ffc43d6cd3303e b157c403b19a89b97878ae2972ffc43d6cd3303e
b1939f1aed2422a7e8592290b8ddb8e4557594a1 b1939f1aed2422a7e8592290b8ddb8e4557594a1
b198a4b320443916a6b8f4897fdbf044e37a5e22 b198a4b320443916a6b8f4897fdbf044e37a5e22
b1f53827bbbe0a40c198f6322580cc1b3e539ad9 b1f53827bbbe0a40c198f6322580cc1b3e539ad9
b260445e5447ad5ef05ce1627f9783ef779ee8ac b260445e5447ad5ef05ce1627f9783ef779ee8ac
b3111ae24bd8c20fe8652fc3f55fb9d13a49d306 b3111ae24bd8c20fe8652fc3f55fb9d13a49d306
b31da851dc57620f64a5009cec32631974afddbf b31da851dc57620f64a5009cec32631974afddbf
b3544e47a20f6c58333b9ba6b5b0340382f5245c b3544e47a20f6c58333b9ba6b5b0340382f5245c
b3701db8579c8f9673730257a0971576c22bd914 b3701db8579c8f9673730257a0971576c22bd914
b398eda4c3b69a70eeb9e3f930332a032638f924 b398eda4c3b69a70eeb9e3f930332a032638f924
b3b71aa8128aff7894e6fccccd77bfd7f61d1d00 b3b71aa8128aff7894e6fccccd77bfd7f61d1d00
b45e5e4398ac413fb28dedd9f022c8a537e6c516 b45e5e4398ac413fb28dedd9f022c8a537e6c516
b46930b54177e16108771e7035747a7af6c341cb b46930b54177e16108771e7035747a7af6c341cb
b486a307186a7e481efe7bd95f5ba15aea3202f0 b486a307186a7e481efe7bd95f5ba15aea3202f0
b4e7f299068d8cead4da7a0e58751bd0278ed195 b4e7f299068d8cead4da7a0e58751bd0278ed195
b5e03cfeebeb9348ce408268bed5a8e224db352a b5e03cfeebeb9348ce408268bed5a8e224db352a
b795a78a8b5c3338493f752da1d4caa8c43fde27 b795a78a8b5c3338493f752da1d4caa8c43fde27
b7ecbcd46665de8c235362d001fca2fbf427877e b7ecbcd46665de8c235362d001fca2fbf427877e
b9235b82ebe90c231f54b871adc82bb95dd3c2fc b9235b82ebe90c231f54b871adc82bb95dd3c2fc
b97685839f86f346a1089f457c4af05a34a8e09f b97685839f86f346a1089f457c4af05a34a8e09f
ba1d9f16e1ee59258b3f6a505d686b60d13f647a ba1d9f16e1ee59258b3f6a505d686b60d13f647a
ba3d6f0b45a7a29efd8e393e7df4f856a80c5ea3 ba3d6f0b45a7a29efd8e393e7df4f856a80c5ea3
bb296a6b2dcf5fc9aaedaf0a50ad9adf49fa7463 bb296a6b2dcf5fc9aaedaf0a50ad9adf49fa7463
bb391fe93d2893463e85bf7069949f0ab7218c4f bb391fe93d2893463e85bf7069949f0ab7218c4f
bbf56d5700fdca3b312855d54c06305f2189142c bbf56d5700fdca3b312855d54c06305f2189142c
bc5c67b688aa31228e1c67496c8db299b008e432 bc5c67b688aa31228e1c67496c8db299b008e432
bc93899d4dbc1641879113019235186ee8e78d4e bc93899d4dbc1641879113019235186ee8e78d4e
bd00aa673c7828a2ef36d55a7be89d1cc4c61436 bd00aa673c7828a2ef36d55a7be89d1cc4c61436
bd152bd697e690cb5c7f8ec97729cbd989db45c2 bd152bd697e690cb5c7f8ec97729cbd989db45c2
bd5f7d7e698fd690fd0541ab2cfdf50fef2a9734 bd5f7d7e698fd690fd0541ab2cfdf50fef2a9734
bf5c82843d46deb8dab798dc9817783b617a0aa1 bf5c82843d46deb8dab798dc9817783b617a0aa1
bfff68667d5fc70458cbc908f63f65f9fb9cf0d2 bfff68667d5fc70458cbc908f63f65f9fb9cf0d2
c067961a73a015f784a27404ec0bf0f50a80f069 c067961a73a015f784a27404ec0bf0f50a80f069
c0e00b5acf7051173b2217978953a6040edbd7b9 c0e00b5acf7051173b2217978953a6040edbd7b9
c0eac893e6835544de18d67c550d0437dd814a0a c0eac893e6835544de18d67c550d0437dd814a0a
c0fdb8f520a2a012b0a6330780e68399ba1d6b7e c0fdb8f520a2a012b0a6330780e68399ba1d6b7e
c1ae82bfe16bead691d2a933020274384a40a1aa c1ae82bfe16bead691d2a933020274384a40a1aa
c2997dd397f6a585b8824a9c12a582ba6081d50b c2997dd397f6a585b8824a9c12a582ba6081d50b
c362408b7e7946b8f88a260209254ace8c71b60b c362408b7e7946b8f88a260209254ace8c71b60b
c3a9c4b94fb40aa7367ebc728ecc995f7bf84755 c3a9c4b94fb40aa7367ebc728ecc995f7bf84755
c40311542e14c7e1652bd129c7f065dd1dfbfbf0 c40311542e14c7e1652bd129c7f065dd1dfbfbf0
c4a212a0a316e58ef6e3c6a4ca06389bee7c3ffa c4a212a0a316e58ef6e3c6a4ca06389bee7c3ffa
c4dfb1d35a8f3ad7040bbb62bcb280a17cf6640c c4dfb1d35a8f3ad7040bbb62bcb280a17cf6640c
c55aa8b1d445e19e0dd29990f7a41d22d4b973ee c55aa8b1d445e19e0dd29990f7a41d22d4b973ee
c56b98a7ac63d52b4ad9566b1a8c7b644d67cf7c c56b98a7ac63d52b4ad9566b1a8c7b644d67cf7c
c59711c6cc5f2e7a1c187cbb4b31c191929d1b16 c59711c6cc5f2e7a1c187cbb4b31c191929d1b16
c59c75a3c0506eb14925e2313ec44e98f4049ac1 c59c75a3c0506eb14925e2313ec44e98f4049ac1
c5caa5ec3e48581dfeadabefb80f60aa8bb83c0b c5caa5ec3e48581dfeadabefb80f60aa8bb83c0b
c6a027659472c5ef21bab7a4bf33308aa56e44c8 c6a027659472c5ef21bab7a4bf33308aa56e44c8
c882f31221af5ac2fe233d781fe088f31473da20 c882f31221af5ac2fe233d781fe088f31473da20
c88be9e9a8a63df79a5694f352dec34680f1dfcc c88be9e9a8a63df79a5694f352dec34680f1dfcc
c8da6add5fc67f8824f32c0fcf321a803695e3b3 c8da6add5fc67f8824f32c0fcf321a803695e3b3
c8f9f76e5049189d9691a8b7be1aa2672c5c886b c8f9f76e5049189d9691a8b7be1aa2672c5c886b
c981f4480939bb2828d817bca8f8508124385076 c981f4480939bb2828d817bca8f8508124385076
c99795078688a8fde0927e8a23acfbb0cc7cbd02 c99795078688a8fde0927e8a23acfbb0cc7cbd02
ca0672f086545497992dfc9fc26fa19a3514aecb ca0672f086545497992dfc9fc26fa19a3514aecb
ca6514dedc7b0cbf8efca5f031a6eb8e545771f0 ca6514dedc7b0cbf8efca5f031a6eb8e545771f0
cab2e104b619ceb1658a50a15e1275b9740e2b8f cab2e104b619ceb1658a50a15e1275b9740e2b8f
cb9bf51ea748db832745c8f616d494bc83082196 cb9bf51ea748db832745c8f616d494bc83082196
cbf33cd38ad25cc50195c32bd569f24e08004896 cbf33cd38ad25cc50195c32bd569f24e08004896
cc210d99c5fa7b5aebe0dce285f973987668689b cc210d99c5fa7b5aebe0dce285f973987668689b
cd0844c8c488fd9d7d0edad40d6774dec49a9eff cd0844c8c488fd9d7d0edad40d6774dec49a9eff
cd19c2f5ce020a494f4105b2ac5da7a1dfb96084 cd19c2f5ce020a494f4105b2ac5da7a1dfb96084
cd646a595d99062c31458636c1d1f899fb16cc6a cd646a595d99062c31458636c1d1f899fb16cc6a
cdd9615d0dc75ec6bcb4bd44ece469f69751e6f5 cdd9615d0dc75ec6bcb4bd44ece469f69751e6f5
cee9b235d3d5412d1759d130cf4e6a36cc53dff8 cee9b235d3d5412d1759d130cf4e6a36cc53dff8
cef12dba712147cb47a7e6f2b367b707656f60cb cef12dba712147cb47a7e6f2b367b707656f60cb
ceff5952663c3b6ac00b053d93c2b9db9bfb6e2c ceff5952663c3b6ac00b053d93c2b9db9bfb6e2c
cf48e4d35b5237958cd51abc1fbb31e6fa256d06 cf48e4d35b5237958cd51abc1fbb31e6fa256d06
cf5e940bca72d3cb8a95382cbff3987e9dd20295 cf5e940bca72d3cb8a95382cbff3987e9dd20295
d085c2462f17c4a3dae0bbbedd03d52f53d9cdfe d085c2462f17c4a3dae0bbbedd03d52f53d9cdfe
d1b3de0c727a603bbf00ae461bc3bc741b762b1a d1b3de0c727a603bbf00ae461bc3bc741b762b1a
d23240872c08e91326cc5f425c7803b58262bb88 d23240872c08e91326cc5f425c7803b58262bb88
d276781b1b755a1afdd4efc3942efeb49b45b431 d276781b1b755a1afdd4efc3942efeb49b45b431
d2a8dbd0578d68f7eb234e77248836ed6f2baa21 d2a8dbd0578d68f7eb234e77248836ed6f2baa21
d463852beb9e708c67618d240f6f6753cdf84ad5 d463852beb9e708c67618d240f6f6753cdf84ad5
d4df75c27af2608b7adc77bf9656328d0564a302 d4df75c27af2608b7adc77bf9656328d0564a302
d605f6c7aad677673141de24a22244d0f76b1881 d605f6c7aad677673141de24a22244d0f76b1881
d691f58207b354a3db526bf19b10864ed6124346 d691f58207b354a3db526bf19b10864ed6124346
d859983e7e08af89a142860678ebc63bd7ca07b9 d859983e7e08af89a142860678ebc63bd7ca07b9
d8fad19ba85f29acb4a111f2dd44659b786d6768 d8fad19ba85f29acb4a111f2dd44659b786d6768
da3f8ef32ed2c44c63f53f021a3e6a4ea22c8ee4 da3f8ef32ed2c44c63f53f021a3e6a4ea22c8ee4
daef298bd3cd857f19fed47f2a13be8f21fd703d daef298bd3cd857f19fed47f2a13be8f21fd703d
db13fa701d33b44a053a92ace562108afb558916 db13fa701d33b44a053a92ace562108afb558916
dc114c64a475da1051e3dacebe2ed7ae4912fbc7 dc114c64a475da1051e3dacebe2ed7ae4912fbc7
dc9e154f45f849dae29870550e66a842d4ac23fe dc9e154f45f849dae29870550e66a842d4ac23fe
dd245ee6e636bf5111a25560ebc318989877befa dd245ee6e636bf5111a25560ebc318989877befa
dd93280b43c84f39ced550ad69b96c835b8f3113 dd93280b43c84f39ced550ad69b96c835b8f3113
ddea633761ffe50d3b33f036880bec5d518b81ad ddea633761ffe50d3b33f036880bec5d518b81ad
df70bbcbb4bb4523184d5144c622e005a141fa65 df70bbcbb4bb4523184d5144c622e005a141fa65
df98960337ec1fad032b32ad8772745e30369284 df98960337ec1fad032b32ad8772745e30369284
e01dea061b431b84cebb5db3582b05b04e7c3371 e01dea061b431b84cebb5db3582b05b04e7c3371
e08802309c50252b655204e15eddf4e028a40dfc e08802309c50252b655204e15eddf4e028a40dfc
e0adce296b4c8755ee40e380c04e8946c12bed3a e0adce296b4c8755ee40e380c04e8946c12bed3a
e120835d83d5cd54cec3a1511afaf59cbd68ddf2 e120835d83d5cd54cec3a1511afaf59cbd68ddf2
e151f31fe34f78f9a6d7968618e18d06b5554407 e151f31fe34f78f9a6d7968618e18d06b5554407
e17b3f57395b7a264ca66fd9d8efa12f35eedab2 e17b3f57395b7a264ca66fd9d8efa12f35eedab2
e1896e5c15705535788a10e425e7cfe030af521b e1896e5c15705535788a10e425e7cfe030af521b
e225ec0186719492148750f97a7d0272e7c36d84 e225ec0186719492148750f97a7d0272e7c36d84
e397d414a72fd164b5afd8dc2534c29c088ab9a3 e397d414a72fd164b5afd8dc2534c29c088ab9a3
e440d4809af17e9e91ffd0eec22a9d6da8b86cd4 e440d4809af17e9e91ffd0eec22a9d6da8b86cd4
e44a4f28395f177a0f30b7b8c2ff3742eedaeee8 e44a4f28395f177a0f30b7b8c2ff3742eedaeee8
e489e1dadd34138db505ed4d643fbd0de5d2e967 e489e1dadd34138db505ed4d643fbd0de5d2e967
e56a2a7b05144d593613a8fa6b10ba505f2c4da8 e56a2a7b05144d593613a8fa6b10ba505f2c4da8
e5d13bd03d43ee84a7842ecc61a6359cc8997664 e5d13bd03d43ee84a7842ecc61a6359cc8997664
e5f358c671b3640a494eba17cabdb4392eef9fe2 e5f358c671b3640a494eba17cabdb4392eef9fe2
e70e4fb447347fcba6881a1e921701d5e8d8aa59 e70e4fb447347fcba6881a1e921701d5e8d8aa59
e7b9b45709684f04bf7aa4cb7f8c37fd03538a73 e7b9b45709684f04bf7aa4cb7f8c37fd03538a73
e806cf7891c5d48ba04afb9e56ced9e38358e7ce e806cf7891c5d48ba04afb9e56ced9e38358e7ce
e86af7f3d5ea59ea3b22e7795ee5f98bbcee735e e86af7f3d5ea59ea3b22e7795ee5f98bbcee735e
e8ea5173ded17e2fb49576a9b00dd4b8552048f8 e8ea5173ded17e2fb49576a9b00dd4b8552048f8
e9eff7340d094e09aad84c35f3f5377a878e24b0 e9eff7340d094e09aad84c35f3f5377a878e24b0
ea7dad6071afaec9c1642875821aff903c95015e ea7dad6071afaec9c1642875821aff903c95015e
eae9a9d69b3dece9c99db28bf5108e043d57bb0f eae9a9d69b3dece9c99db28bf5108e043d57bb0f
eb1a13c07bd8114d65d9c41ef69dc56ab3b73165 eb1a13c07bd8114d65d9c41ef69dc56ab3b73165
eb7e484f4bb69cf17d1355771ffa6074cf69b7b2 eb7e484f4bb69cf17d1355771ffa6074cf69b7b2
eb8df958df53679c30d414fc8f34b398bfe59016 eb8df958df53679c30d414fc8f34b398bfe59016
ecd93bd1d123945c8a2254c8dd8ba1c67a2e861f ecd93bd1d123945c8a2254c8dd8ba1c67a2e861f
ed107dd9837d91b28d44a26d1df773b00c6a23fe ed107dd9837d91b28d44a26d1df773b00c6a23fe
ed5f071790a652e5594d1e7b3e78edc493fb74c1 ed5f071790a652e5594d1e7b3e78edc493fb74c1
ee014bbc1471b63cab91b5d797a5cfe281fff34c ee014bbc1471b63cab91b5d797a5cfe281fff34c
f01ca22be5fb0631613fcefb49134315a3e5427f f01ca22be5fb0631613fcefb49134315a3e5427f
f025f4b03057bdbe116afea7daeafc2cedd12f17 f025f4b03057bdbe116afea7daeafc2cedd12f17
f066be07548b559c83e7b6a7b64006e7080c0fad f066be07548b559c83e7b6a7b64006e7080c0fad
f0ce118d6eb8aa30f85fe3d2968e1853d6ff991c f0ce118d6eb8aa30f85fe3d2968e1853d6ff991c
f0dbb878af07d60d577572dded0428058394f90d f0dbb878af07d60d577572dded0428058394f90d
f149d031956680746f34cfa155969e7f5b1f5dbf f149d031956680746f34cfa155969e7f5b1f5dbf
f1f004540b9ea8c9e09a6f1cc653432ba8b4d9c5 f1f004540b9ea8c9e09a6f1cc653432ba8b4d9c5
f24095874e639542fb790692d272dac95022f05f f24095874e639542fb790692d272dac95022f05f
f4df59232857a390b572b3e0b8dbffc73c07949a f4df59232857a390b572b3e0b8dbffc73c07949a
f50c147998046cd88a757d37f5733c87dad80be3 f50c147998046cd88a757d37f5733c87dad80be3
f5342323b96ef1befeaa1426020f2bc740d62270 f5342323b96ef1befeaa1426020f2bc740d62270
f57f2a9cf34d30ba0c95a8102f1c902e5afe7389 f57f2a9cf34d30ba0c95a8102f1c902e5afe7389
f5f7668ff7546f4c8707985a8834515dfb60ef97 f5f7668ff7546f4c8707985a8834515dfb60ef97
f7706867d8d9d9b3753086e7de90b923cff56692 f7706867d8d9d9b3753086e7de90b923cff56692
f7fe9fce7fd308e357616d8381a9cbec023be4aa f7fe9fce7fd308e357616d8381a9cbec023be4aa
f80aa5f8a01f396c8574e1eba489e5f2b817d3f2 f80aa5f8a01f396c8574e1eba489e5f2b817d3f2
f8bccbf676496c782fb93424f4ccfacf0caaaca1 f8bccbf676496c782fb93424f4ccfacf0caaaca1
f94007e9453d3f41c4affd77971c3686a9c4fe9a f94007e9453d3f41c4affd77971c3686a9c4fe9a
f9502aa4978963b1c34df67af9b882de9c5d6fea f9502aa4978963b1c34df67af9b882de9c5d6fea
f99b26af4538a57150f828c7ae3c19faf100d753 f99b26af4538a57150f828c7ae3c19faf100d753
fa30711f0e608e26d0add50d6bb003361ba14674 fa30711f0e608e26d0add50d6bb003361ba14674
fae3ab40a8087d2a565885a546e02ce6be5bf3ac fae3ab40a8087d2a565885a546e02ce6be5bf3ac
fae50a5538c7a78ee48afe405285bdd1e31f7c48 fae50a5538c7a78ee48afe405285bdd1e31f7c48
fb7ec1d1d423b84e6ac04ca6a25cbc5ac645b114 fb7ec1d1d423b84e6ac04ca6a25cbc5ac645b114
fb8a0a3087b99652e7bb142e37dec4b5c16dde1f fb8a0a3087b99652e7bb142e37dec4b5c16dde1f
fc09bfbbf7621ffa2b048de52f8f9e688efe0718 fc09bfbbf7621ffa2b048de52f8f9e688efe0718
fc7d2a8311663f6b4ed8639b91037b843d6f4e37 fc7d2a8311663f6b4ed8639b91037b843d6f4e37
fd0bf7ea7acec88009042c0ede6af1ae08593f77 fd0bf7ea7acec88009042c0ede6af1ae08593f77
fda1e3019a5439a89b54f2f276c35f9a6da97e39 fda1e3019a5439a89b54f2f276c35f9a6da97e39
fdf510cbb1e2bfbb19e45b63f1cfa5a10749fb38 fdf510cbb1e2bfbb19e45b63f1cfa5a10749fb38
fe36c1b67ebd35a5136424120f4a755db44f1cfe fe36c1b67ebd35a5136424120f4a755db44f1cfe
fe9bbb0781d824b29fc2fe9e8b46a588967b99e6 fe9bbb0781d824b29fc2fe9e8b46a588967b99e6
070701015D6CB500008124000003E80000006400000001642C0FB60007F867000000000000004A00000000000000000000004E00000000nvme-cli/.git/objects/pack/pack-ab19e15b14c2e81665ff52834179cef91f4b659b.pack PACK     À°xœ‹NÊÌK,ÊL-ŽåJV°UPOÎIÌKWçJ.(€ó´µÕ¹ŠKŠ2Á"`†:WAvzr~^Zf:HÈÑ…ðÔ¹ Ek¶Kxœ•”MoÔ0†ïý#õÈqì•J|hå€„8LìÉÆÈñDãqÐþ{ì4-¡ÛeÛKœ¼~ç}ü™K¸Ù]¯·ÎPˆT°ÔuŽä
Þí¶õ›Íëš¥ö¨$<ªãð¢šHb~©÷Õ+ÐÃHpUTq¡–¢7{‹ÎÙ.ÎhO°w
K9,/ïs“¥I’§h<<¡O³â]Ûs3»7öšÈ(Ë:(^˜½Ð¹ü\1­ Iúdê­}i6†C·±Í9ü­ûÄ â!*ö)ðÅº´ç¨‹ûØëàÏÑÎe¿ÿöi–MòqÁâ9š‘Qÿ_D“¢4­ÍÚþ :¢ö ÷È(‡,LÕJQãŠÖ2{Â°Âuè#ý“Ÿm_S€¹p.Ä¼E„zû…Ö§„Í:ßðÐrþ6=ç{³ô£š	Y›×·´Ã<€
½¯~Í¬ÐrÏÉ5,ÀºMÎÛgNkö•º“Ñ£55l=Ýe?#:’f©Ãävåç	
×.šrÏð–ƒ
{Ÿû ¥'Ç²‚ÿŠù¿aþr;BMBwÜ¬`R®îÔÇ›/Ÿ!¦qY4ÇýP ž£±xœ…Ž1kÃ0…wýŠaÉÁcº´¤PYº™CRl¬')Åÿ¾2%ºô-Ç»÷Á{½„ÛõýS]¼q1;u¶.÷Žðq½¨A±
XƒìE/H8QZÙOsÙÃp¸QðÖO‹nù†¼Õ2ç#ÌÈ¤FÊ+Æ×üÄ-ö«à("[Òµ©qÆ¿h/„È¤Ñ‡<Þ¿Æšl6Î>âu·åÈ“éÀ´V²™G'àåÂÕh5FÒ,¶{>S¨“ îþE|žÁ\¿ÚxœµW]SÛJ}F¿¢ãT¶$BÀ6N–‹/©lˆkÅf¹[TJ5–Æö$òŒw$Þ-þûvdY’e’}¸< ž>ÓŸgºÛGG0úÚùãC_x\†üCÏç2SÁõ)ÜôÆÖÑ¾ûp©–+-fólÏf½Ù„‘
„/f‹C”ä<Žæ
/\I¦}uè³C/–sö·pôÔ‘GÖ[!½ ö9Ôðd¡äá¼V8óéÀò”#ðæLÃ¾â‹‹Ø[vxè=|ƒ3ø¯µW»á¾`pË™Æ2ªÀÑÑð¡þ\¯£ü‹BFì¥â¼‘Ý¿×"â™‚¢¹Ö°pŒ€ÄÌÁòy`Ì“ …‚×‚0ˆ®3ÉG”\	½xbš£g"JfÒO¤P‹G£ˆEq˜	þJÎ
)ñÆ|±äÅšgò’³çòßPþU=q}†ðU«ˆ{š.bì‹)Ä‚ÃÙ}™Ç‘¯žd.Çä¡‰òË•ðÌË¹nJÑg—Þ*ø9ß+çÒŒW¦9I­JˆF=g£ÑÈ©F®5å¡Ã§˜½°hÃ°á#tÑS¨hU'0ï3ÍpÅDP1ºš…¼(L¥†|ŠÞ%Î… $m<Ë`"ËXEH¾â•,åt‡átÉ7lM1Ä›ËXkì	¯âÎ÷Çðº’M‚{SñEöÖˆ0pr#¼DáôZñ"s½«µÒew;9Wî96…[&±VD,ËbA†"F…l´r&+@3à/˜÷c¦ÑŠÔ\°pSLç|ii¾.„ÿÄda¤°¨Ù ¤[†k¼†cÏ®ù
îüq–áŽwâš»­×p9»_Áåí~Ú‰KØD‰r–5‹&í<`L`]¢”©OŸ?nZbódÓnMñø‚á‹•ë¿e¬(ù¡ÀÜŒMâYÂ=PS±´TeÍå1ª2:®9K:[¤€IàD„ZÖ³›8:ZÇÖKÛ²Bd)F›Ÿ30ãÑ°0k´X’6Ûuãã&ß±pðˆ)Ø¨îw°Cñ®¦vq>9p•‚‡ú7ÇqhtíiŽZBI.üomkïÅZ‹k±ü!±åÔÚÖ‹e½õù”^ß°{3ê]ÎÇw·]Œéc½Õiµ0(ëí“¶`°DfÛË8œ`tþ4VÇ^DÝ9Ö‘kŠ#2:nº`¿¢AtÃ¾+Ý®8²x>3i&LÌÏÑÑ›+ñŒ×xdAÌÁÞ¸çÀ_µH÷¬‰áãC¤ðÍÇœÌÈSØ“+d@›,$ì ÄRñ£9‡[‚OM¢#³È€	ÝÈ©êÊH¯L7i¯MTÉŒIè“IW%½ôq>DÍ‰KkDÈõ#÷M¬QÂŸ,¥ÈÒE!¡TÔ+Áã@æ¥i2¦Q¿ñyJbˆ¥ø7æIdkW’¸œ*nÀ)œä‹à¯mŒWK^ŠJ9…Fþ|"f]‰ÏP–¤­'M-Ê¢µM·«ÂÌ×j;g‡Ö·ôøS+çIÈ£ŠÍ‡“í,c¹)É[T†äO» ¢’ ý
RMÅ×¡–æq8–õ¨0äõ’êF<àŽõw5sIÓ’éÛ©ê‚ö£À4ŽT2VMQÝbíÑ3ïÆÝëîíþ{ÕžéŸÑø¶7¸¦ÿÆ÷C÷â_ã®{>ºìõhxw[8Â³»ÁßÃû6®úóÕ¢^6‘~•tÕä;vBt&ó-ÍËîúýèËaÇU&ÿ¯ã°¡ÒGÌÑ–4À79Ôú¶O—?ÛQðá³V*:€ZæÓã¶ò¿”Ýtœ¬¶®ºtM$n¾¸Ìé-å¯jÏ®¡ÚÍHXJj79+èµöp<|jA–Î¼Rì¶swÓ‚½¾pPÏÏ3’\¬1ï×#e‹þ8Q>¥œK DÓhØïuz×7nxíÞŸßtvíži»§€î˜þ™REÅ5Â	­Cáa],ù’ŒÉâk„}ÓÉÎÀ.Ÿ;è8ÍÌü7uŒ!—€¬‰lfÆL8)×[Æ6éþð9ñï0›8NÊ‘Üµ7g…‘èüBôøÕ&^.•¦¥2‘L‘Lã»ç7Xî0o3ŸRa
Ž×ViþÊŸ~Z—ª'‹eX“ÐCJG<•Øt½‚ýÌ÷óo¯×’æHu¢©mc­@ÀYÚøç÷bÄùù*Þ¿OØ÷‹ÔE™-ðWÃÁåkEý›è
·²ø+iÜN!°ÈLxçS‰…Iè&£TÜÊ)‚ùL‚NFŠ y–ìøù°4Ð0 ÊãªgJ+2ækë™ÒÜDÞ]OÍ}Ñ+´³ƒÍ£«v…4äß|…
v¯¿EÉRcR>‰È›oÎ’¤F~£µÓ!èœÒÉ&¾õŠ’··‹™f…ET&ù“k¶
;à´Z$cßÎV}sƒK·)óÞð ¿bWØCC®Ù¼ÜäêÆ*¼®9Ul~Oð±ýhgq›‰ŸF]mk(åLíÛæ„ú')oWiMÖ‡
µ»SVÎŸˆpiÛyPD%¾ä›YµCÅ-æÏs¬¹Ã~igú3ÓÚö ¿’±8ˆ›?:æËœéLÉöO‹"Øï|§VN{î‰íí%Ïý¿þ’˜½	·+xœ}R]kÛ0}ž~Å]üb›Ä.y\FY¶šÌ·#ûb é*V±¥ Éƒtì¿WjR/}è$î=çÜO)O¡þró}¶–•ÅYÉQ9)$šwP•[Hs’§Rø¤G#÷­ƒ˜%0¿šÏ¡Öärßgž’åàZíã:Ôª1\g¼ÉØ Úæƒ}V2Ý““DR(Žh}·.oÊUE·Åº¨Šíæ]ß­ègyZ*üÂ'Q¬8Â¤“;õ»Ç¬\€ƒ“]~oµz¿o¬Eã²öú©x{ªÃRvèÎXÜºÆIFO!¾•K—D¨¸d]ÒåfUÇY–%Sˆ"JÏ¥£f&Œðm¹¹-oW±Ð¦oÜB ˆƒ‘Ê‰Ø:ŽÆLáDN~©ÉXà"q’ü«_ÕÇbCëòg»ã§Ðc¿C“€•¨E?Á&WÉìúÌb˜‡öèÌ‘vzÈ›3öJ_’©¿^à³RÞ¡Á\Œ!açTïîÑÛ©ÑÚ½B1­„ÜÆ/U«ù» çBž¾þîáÿ<Ìà ²úxœÝWmsÚ8þŒÅÆ›š÷4w¥4!9æh’áå&½6Ã#MÍø…¶—æ¿ß®dË†4¡÷õ˜ÁH«gµ/Ò³¬ëu]ŸÝTÜa~Äªý9ócîrÃÅõ Úª5ªAXõì˜…šö‚ûŽ—Ì¼‰âû‹ÚÝÛÙœDŸmÊXú[0/pl‘,êµZ=‰¹W·Ã…ø.GkzaÙ_/Y=þ¾bÉµsærŸÁÉpxòq:êÿÝ3lŒˆÿÃ—†uÈÆŸ·¦©iQlÇÜîÇ³(ž†NGÓŸ>¬mîµÒ,<p={ÑÑJÓirtQâºü›œ¶[ 2NhüNQM!½À_¤‚yÌ<ò'ý³ï1“ãæDwa¾—âÐ¹³C¨ÈL«©»Œó1÷˜šx<Š‹Jí¡CA†‰ƒhvJaR\ƒyEü:às¨H§òàÙ·Uê%-†,Î6™ªÎs¾PPn¯ö¶äz·Ê†ˆ² ÛÔÔÐî‚!Î`oÉ–ÎreHÂ
œ	?~h%À±§ A+†´W1…R>Eu¹TB§“ÐG§KÑW;wòJ˜"vÄ qŒ ¦8v½7^AL1ép¿=X°b(ïGe‹ÒÂœ˜ÍÅô³¯[¨ò#"Þ°_œ¢¢‰Y,ÍBf¡+Á\;ñâ_µíyÉ¦uüÔ~âG|á#†îŸ|(g~º¶íÙf*¥t¡‰®.‘ã.þ7¬¸~;yùëd0÷FcÃ¶ÀÁ»h&04á³Vº” ¼†÷P£,­OÊƒwY…«&CµàaÛ^Œù0út‹;az•m½Z¥,ë–H¶¨Ì²gÃ´#»M…um/Ràj¯‰ØmyjÝ*É¡Eþ>±
nÀÍàVû°ˆÇé.•ÃÆë£‚
MwZù“4Z;´/Š*í£WßZ­V£¹ÓVû°özÃ\ã×rÜn]ðÿ¢F¹¦Ás™Îp)Ïžƒõ6ãàs`ÉJÏ	úœ‘VÀi°Øzu¤ ;Sˆ@Þ;<Ÿ'©pÂ]°4gÜi^š®ü!/ÄÀ]IR®=¦ä2îâ—Kt\OÇO¡±juéAü!…tö„•¶.=èLñ5ÒÙSè2"£!l¢©6Š¿ê¼.‹V…žâï»ø—?gÕB}LÕ³ÁÊ#¦;ˆ¼ýXËš:mXU:è“¼E	K¥«ëñôdx12‚U™²N
áùàäÂÐe™,»å´2Ë(Å”MÎÏû7†.9ˆ6ÊQ†Ïh™­)IÿG$$|’á%+¥\a4Eò©x©o`W—è6‘Ð^†Î™)×þìjò~Ð3tÉEÒ™g:EzfëJïýÇ1jÏHg–éHâIyžŸ?† ‘Œ°#•Á:)/Äz:¤`áÊý<Zb””çûŽ‡}ŠVñ¥#^—b=³²Å*¥}þ’Ì)Ÿ«óU|Êq}ÊOÊ˜ò@!LÊ³ß':¤\)Uö*zo¤<)‡åÜÛ”=
×»<3°Ý·o9^Qu§‚FË"¶DÄMîÈ˜öºé¥Ç‰èN·CÜlÍBÕ"m1¨959[D'·Ñ½å0vv™±Í¾8ïàÕ>§‹®ZÅ“CÑA‹ÎH½´¹oPÕ%A5™¢eC³t2Ø”u6úÊ.D,–ï}Æàtz9ùÐöO1­§:Eá"ÈY°b¾¡×çl]÷ÏÃXõ¯¢|Íñ-2Kßžk>N—Ô¥lIpš¯cØDÎðôP„†x5MòÏB0¸p8¼)¾K5_¾$“…*yPìäø­ØŽ|®¹ŽàpÍôv`â³WNl{7}¼¿'ýÁdØÃžQLG“ÓÓÞhD9þK!–a»WxœµTïkœ@ý¬ÅÔÒc=ôbB¥—ôS¡¤-…~ŒwöVY×+m“ÿ½3«w±É¥!”úAÝ·3oß›=9/«ßâT–¨;Œ¯+ÔVÖÍ;ø¸Jã³E7&V¹Eã¿–ºT}…pÙÙJ6‹Íû	„ÆhÝcÁM×èÅ&˜ öG‹C~gM_Zà¬)nÞç½•*› ™ÆïYÕô…B¡½†áªÐÿå{Çè¹ô½r“˜ÓþÒ÷=YƒÈ»ÖHmk1#0‚àMZÑÀ%$¡ïymo4|úš¦œB,p…PªÔkAƒjƒ8.öùîtÿîæzRuq.†GfAþ³³ VŸ¯û‹óˆ¸þŸ½ÜÊè\xäj Él“é~[ ÇÌÐ""]t_cˆsRô5ÌÛ"rì
w¨¦‘Ö*_wC:ù3Ó­ñ „6m9Sû²-nó¶E]	>êx¦ËŠ˜ÜåŽEH–/nðéÙ[¡w[Ü/H1ìrõ÷V?Ó¦WzÄ˜“ÛõG;Ø™+*•„FÏ÷,r£2Ü§Þ0r×GL\½q¦Ÿpæ\H2yLöÓ<¥’]Æ‹A²Ûàå¨5hÆÏÚH$ÃtÖèÎÂ°C­fj‡ê©á¸jÞ …@ÛôJ	Ê‰`FÜœ&.€
E’a6÷ÏƒW´
áö„r”òg7ïî¾ŠÄÀUüï!Ï¹™
xœåksÛÆñ3õ+®ÈX¾$;n"ÖîÐ²d³#Qª(%õ8EÔ$Àà@ÉjëÿÞÝ{ãERŒÓ/õx(â°·ïÛÝ{±Û%ãË·ÿhŸEmCgÑ$¢éywyÖ>ìôÚIÚžùMwºû;dŸÄ·“¬À7|8Nit7Íˆ4Éaïð ‡-ò–Îfd’¤$ÊaË[…‘ŸF”uÀë+ìÈÈe4½§aGâ¼žFŒ,Òä.õç¾NRJ	K&ÙƒŸÒ>yL–$ðc’Ò0bYÝ.3
ˆ‡Ý$Eó$Œ&Ø¶ŒCš’lJ	ð?g$™ð‡w£òŽÆ4õgäry;‹"€Ý} ŽlJCrûÈ{œ"cÉ9M ±ŸEIÜ'4‚÷)¹§)ƒgrˆ$‰³…*pý9OI²À~M`÷‘pµª®uâ)CÅñ4Y€DS@	2>D Ê[J–ŒN–³¢ `òËðúýÅÍ5Œ>_WWƒÑõ‡> gÓÞÒ{*PEóÅ,Ì WêÇÙ#ðŽÎO®ŽßC—Á›áÙðúJp:¼ŒÇäôâŠÈåàêzx|s6¸"—7W—ã0ê˜"[\‰õ*&@6O@!ÍühÆ”àÀ°¸›…dêßS0p@#ðâ“ ÜlCãÍ’øŽ‹	ÀF‘}MHœd-òFà/YR6+v7–mqïm‘ Ê?Ï@÷ãàÇi4ü§³$I[äMÂ2?þÐk<ï´ÈÍx€’uwv¾‹â`¶)ùMÓ8éL_[M,£BÓ$žûY0Í7.—QØÅl6íN|?§©cµÌ¢Ûr#¶´igØ¾ó]H'QLÉèÍéµ7þ0>{—ƒë÷†Óe¬;‰Ò9ª¤ë‹¨›ù·3ÊœªN§Ã³“Ñàü¤á`ã¾AlÞèçóSïøbt:|ˆit‘nÄ“è®óO–ÄÀ
Ë@ß˜8f	¦~Jöjâ	(oÍhãqnÀsØ‚œBò·ñÅˆˆeÊíEýt/Nbº‡†‘ƒœ;}Eã6If$\Îy¿‚xè³éÇƒ^ïyEþý±G:ùé'|Úkï}íÕ]½ñÉ»ó“ÑµËnÃI“¸ü/Ù%½/ø×ƒMòú59xÙÌõzs3.÷@hìÃ{ü˜ïðöäçêÐåGÞáy¾ÃéÍè¸®GïÏ¼G¯Y©úEyØÁËãN|çzÞòà%Q/š;ÿÞi¨ŽØ^„ôþãÁóO œ‹¹“M\ÑÜ",úMÔc³Eœg_ŽøÿÎ³/Nk§ÑÈ)RSÑoPYåVÔH¹•‹­››ýFJ³eKû;_Ì\Ú¹x~¦–´Ë˜Ew1¸X¢$6¾]>ü˜Ý¼Òâ›&®‚Þ!h æC(EÑýØû”>(<žŸž_žødéÅ°eëæ>‰BÂeÁqÓ óæìÎÅ±ëY:óÀY¸>¤¼è"ðyÆ~1€w4óbN¡8h–(àø_C x[™€Lnÿ	€d?M’ÕaT
,)…T*A\Ðê‚r{÷þlI•±+˜A°½‚a‰F¨B"}G7ggHFi äÖT±^±¡…ä ÇK'hõ]1è¤€a”BÝEö±úâ‚KûüI¦·"ä¶B·_‡œaHJ£sÃñ!	Š	=éæ)ê”¹’,Ô8™7¹øŸ[*øÙÔ¶b‘ó¢r(Ä†Ô?òp>ø„’ ¤RÀ’ô5N%Š'‰ ˆæ``G5Ðp‘n‹ì"•–­0£sÈä®èõˆbXlL¤ ™BŠÓžBac’ ”J18f‡{&
P(ý¶à4ÕÀšÄ€T
€—ã‡¯ß/è±­$Ö#[5ðqÍºÏ˜$#Ìó1ú¤,¤è.ZÆÝÅ¯-­Gƒòý	 ›ð½ÁM„Œ¥’kY‰÷l¿Ž“PôB¯s%É&—Ê4Y#¾W†Ü]ÙJ·°]¡ÂŠSÌ¾.gäÉÂf¸Ø¬‹¼7QLagd¿	ïUù,˜Òà³7Añ¿4_…àWüÞ¸KÀÈø¶¯ÅÊ…‹é$ÂèŽm®Í´ó—µq;bŠ§¾×Çn4Ö4†NËÝÜHQšÀ»\Õ\)‚™¤Mí×üç³µhd„³0eP½²E’f
›n!9‡^Á|áæ_cß`á4É«WjœmA^¤^åÊBÐÜ:&qëa0¹¸±+ª?0S‘økh	fžj¾û™k}+œØ¸ºhá%0ÍŽÊ8õ›—µ-¤NŠˆ…øÛ°sýéÜgŸ!yÂ0þRB_ÙZ€;Šþ£W#Hþõv¥0g¦Þœí DÀ~¹µ^æ~úè…1«¤²55F¡ü×Ð«Úšb8´|'­£W©S˜r‹œºe$ÐJLÔ[9
®9`jñàä/9ƒDþQ"T¹a®¼T—B¸­V­zÛlÊ¢G¦(“èÜQE«óš©#D^ûZs‡©Jº¸øÈ2:÷b†`µÉ—1ÉRmjÆõªGÄKN>c›äi	U‘¦ó˜hø‹|¶7°ÍB-R*)ƒjm9G›3QYV˜Yà3V¶`Hµlmx1}àÎ€ø7/9eÅÐÜ¸ô*±*Ä÷„Â#D	*ñ¨ÇU¨FÄQPõfbÉaoÙ•r•+„~>^)PÆŠxUûïÆÏî¡Š*aç­ÛXGC#Ñxó[idø•£U#L9ñã‹Þ§¾jÜW­ÞMÚ˜Ó9£™«Z[¤§çYªM„GÓOQxà(ØCfÂ‡CÁ¼éqAeñê3J"
a.#ïå‹£§$KJ‰$u ÑËŽ`©4àÔ£<Çï÷0×•“IÓ*…”ö¢PÎâ[ˆ=Ÿ¹dœÿøn…ß€sŽ§Žóƒ—ß”õï¢	d8"‚½³á›››á[-ó–ßF¤¥%~÷–ñÂOõfÉM•C´´»ä˜üŽÆa4™‹¬wœLoÇœc‘“³r>ß2ã-þ-®Jë±›þùŒ·¼Pëei2›añ¥Fq®m¤>ûýK"ãß›*{b¯Jp…ÌÃµ>º•2*QIÂÕd¶f.ù²¨#Œî(Ã5œß–QJ•¾ê¶!ú™_C¨ê•ÈŠ²žÑõS]I§J +º0bÖ•e~+ k«:|©×TôÃêbMƒm¸:Ô}¬rÛì‚F#‡Cƒee›Í&ŠToMC5ÔPãkNÛ‚ŽšFaYÈB¤Ÿ4+²)@_MñPËPµj¦¥ïYŽQç°Æê]¶Êç¸ƒV9­YÀl‰A6MäÅnUÛÚ×k½œcW^®ÖLI4Ü6k‡Rßè[­(;b½ýZ/1«ª¬rb…³_ÅzC?Õó.gB
»‡5ïÔyªiÌÚ…
ÈšD WmKƒ§¾eÍxQb­îçñ[UhõÌÜÂÉ¿2µ]Í£¸…®üþ©ÈA«±çV ¯P‰ZvòÃy{üÍdæßñmJøGðŸEO‚ã¢qœà(£ÀÇ³+&0MW9Z‹a3:Ewó´I_»§Õ8©<oähß©™†Úã	±ãDT{ºHGk%¢__MhbÜ`ªZ=ñWmrÝ#·#S\\Ó¡"ŽÚ5¹4R„/i¾¹SúÁÔ•ûP6qµáÃäÐ”Å9n÷å–ˆ˜P–Í¦'^²—^1q+Ôeã’lT”BP¿‚âW9ØÐS´&Mß^º¨q›2äZ÷ÁB¢ÖwŠ+FÖvVÞkÔ>˜ˆø›-Õ­mà'ØI¸Ï«–X{löžJiœÃÞaÛÜ3ŠÊÐXj}Â^ñü½!ê¶âV]øÈƒ­uSŽÔº‚©Ýsaš«Ü¢PÒsï¨B´ÆGªºlè)¦«ð|Î9L^ `¤<Iá³ã=ùOó¡j-0ÖúSîx•ÆèØ\làa•Àu~&+Q«¤­«ÏM[_Ÿã2½XA×]{æàªË…à­\¥¾âlC¡ßêM°UÍŸŒ.ÎOÎaÞÝ-qÅdÄ¸¸=yÈÍc`N1F'uè±˜›b”«ôj·/)Í`©s°œ'TyUÕ±ªMOXž;ê²ÖYK”•*OÃ©„É¤f2Y:(c'XÔ3·>/²ÇbNloA`#9žþ"ïO‡ìè×XêA½|Öþ‘gíŸðãàþ?_àÇsÑüÒ|‡O~ÊÊeçÚÚq.‡d ÷2œóÁ±ýøöýñ%ï{i·ŽùN>9÷Ùgò&ÊxÛ;±çÎ;Æ†;œãç§#xî¦;œëÎsùê¥ý¤8Çó¹OýDúW#`K¹áZå†EåîÈi	±ïÍ!óbó2V§Í²”X¨ÜÆÙÒ#e|¢'%a
ÇCj_—wÔ‚æÏgÔ‚Uœ~X5JM–{ÊX­¨zª‡l¾8Y=pßj¤Çz=}ÅH~)?ãTciß\ó£¿j†ØKõ§rèÔ‹¥WÅèÈ1l-³Z+‰öÊß*«ÉYÐSLVžõšÓ Õ¶+MUW›o¬À×ÚÌDÞzØ+Úð}Â2n­bÜµÃé}090ÄûÕfµÃ£x£HþŽ¸v"_m~[vûð@qkª°‡]³a^½ÓÄF§*4ä™Ú1)œŒè[‚H›~-úeœ¤sfjÕo¿z¬U‰®U^©í¯-Èîî—^.w!ÖBÙ*”•G	árØ¦Ô&1ÊÝ¥¸Ú¥ÍSñòìo#¿ÄQè Ë¯2´¥Ü|ŸB2P=×Züšðv\D)ÃóÒÔµr²ñœ¯…+Ô¹Á -Ó(ùõSg6çÀ0UªÄ¸k°Ú·ŠBŠ	ßûé] ®ìÃÃ½Ðšµ€}yÓ`‚\#EGðïè7·váeá>:"DqÁC8®]3">_‰ âž’*ZT™Æ(¤Ðb
mÄÆÅåµ7¸z7v“EÆšx”†§ç×®“,³Å2ky`Ðï%{-²+!ì_ð×D<I—üÎU^Âq<gƒwnn¡q!’œ	|â
!’qˆµ©½÷º7·¹ÕUd¡|'{éa/Ô]usÑ9M`a__G€“G4"â¼ÜÃDx}åÈkž¸Pá,MÛâZ@È/Yð»¤œŒ¼£¨ñžŒÞºàý_åž8=O\)ä§B\á‰è‚xUý“›K]yÿBÎ
¹w¨Ãƒâ¬¼6˜Ã£`Î¡xð«–¾›ë2º¸:œ­ì&ÌowÂ²‹µÄ0ý<8ÓáG„‘(\„ì¾ÒGõÍ ÝBhñÔ•}+EGÉŠ€Çšrµnb´*4˜“Ü—‘¶#cÝ}É«È,}qÓËà¦.«=9¾‰ç)Ô?hï›³3\‡„óJ.‘) ¨ó0ÐPæAqµRñÕêXÈÃ"ÏP’ÑL·rrÅFCMe*”•koÊ‹:ñ5
5#Öí]èU¼`Ý®æ3}42ã=<Ó úF&ÒÓÝ&Œòp§Áã:?Ú\=†ÉT=«…&Ò·pz “-ÂLüÛ4
˜Ü$%Áän³ÔQŸ›V¦´º<¿nfS·®T›qTxralýÆV¼CˆÁÕ²¿™»u­cépt|å:Róˆãc¾|æó\£Ì’»»(¾“FÂ31ÅÌ±œ/Ú†—ÄcÝÇÆY-<UÝîÎÂ²r§…òeS¥#9&ÉoV’ÍÅô£ +Ñðc{Ã<|XF‚‡«p´Å˜CDDr8Va#²×ÿ4ÁrÏQ—„ÝÜ]C&Ùü_%_Kn„9øÓU>>ª“>aEÌ›Úô¥Ö¹¿ð`„y3zOg®~<"7MŠ^{#Và†o‹Ð=$¢înóŽ ûÐ/I]þ“ÍÜ¥YÞÔ×wHÏxƒ×SX]ya7m¡7¹´‹¨4ƒñ&¢8f!ü7•I\$¬t¤[¦-b‡8e.kT¡u*Ÿœè(`y©L@â R>µ
?ªB“#‡ï¹@h9,O ‹HÌêÞ“…v*—WeäÆ¨˜AY2b'TWV…¡6mm+4£rÙ+,Lt7‡Óì®}1|ÉVÐX2çšvå.mž;iá†Ü°mðA aLñT% ¸ƒb_Ž”åøãˆ:WÔÍN¥)†µÜ6Ú"^-5`¬Ú–ÈZJ~ªBÀ,I>/+Ž4:%/–R¦š1>ˆÚykè­qåÀ}›V^¥jÌÚ~Q*u7ÐZŒA¹°É¯9·ÈófÓ²€ÁRµñ‘c©ÛUêÖ¦l²jQF3/œ‚ ¸S¡„h‚BÔÇ‚Õ·ÕÊ©Aì Øµ‚ˆÆuëªRCÁf1*¥{^¼ü.¨ §H¶/t¨ÈõVV&üp"×è-Àš•×‚Ä>ÿCöÉ/øƒO×Ç—]Ü£láÏbarþ;WPœãÏ=]Œ|r›ù”Õ>	£É„òŸ¶˜%?#ÃK"U‰ýød©N“(}˜ãïMý°C®h–>êÔ²TÝáðû]­U.V'dw—HAQ±?ŸŸà|htr|íýr5¼>ák¯Òx¶B·’ËÛ°ªØ¨òë¦p3»ûù{·äµJÒ;µr3*Dlç¶*¼p]éÂÄ«œ·è½Õî[å¿* p½j²Ò¼=4“šž¾~ET4)Ô9J:G®&ˆ+³,ûêW
‡Ÿ™ !"tG‚¿—Ì£,ÃI–ÕCUG…ØÕ,Nõ«"Åoè ì_Æ¡Z0n˜ÕüFýÒOC-¹Û?é£eÅ‚NCž!©ê÷uGYëH¡Ó±¾©ØZÌÃÈƒà
$ê¬qˆÒ¬pX8åxðä¥3gmªâÓjågUIZ»à$kkYZÝù/v5š¼·zxœ½UÑnÓ0}ïW\	Ä ÉIK»n4ÁØðÊTŽsÛxuìàkoêÇcÇM×Ž1x©’Ÿs®}¯O_ o[Ùð%²ÒKU¡‹B¶„µs-yþxMf‘W®ÆÊÊ¤…±P¡ãRÑà-I£HXÙºb ð>iòÁÕÜ…„fEß=§zAàŒQ 	¤&Ç•Â
^ß»âÖx]uÚ‘pÙ¶_cW–/\ðÈ»ZX_|þrù&81¸«¥¨÷õ7›°I×ËC³èK]q¾BÂhêšU%-°6z^K›{²9ÕÜbÞ­ÉƒQÆæÓÉz:‰‡“hÎø`|<)×·2¡dÖêå`xñ´Zîêb«^ÃÚ¹Ô?Èª %µ_³HÏzî›æp íÚ¡¸CrIBDà`®QÐÕ\JÝU¶ÃçÜ.©€—ºZ\*ƒ[jäM5¤w¥ÌÝÜkîC³´“"Ø…JõIˆŒ·)‘ãi% ì$T\aÙÍZµ +o1ó¥×ÎgÂ4yzÌá†7Í=4\ê0£ä¬Á¼–qa¢¼réqë°Âû¹·ª€“­z mX´¯ß®(WÆ¬|ûÞ´Kt¯cÃõùÙhönx=šÍF¯fã«“-Ÿù¶Šøƒmü½WÉÅª5Öý7Bá­tÇwHj¡|…#¡dyCF3qºÕ>´D•î£DjÞRõCõ”œ°÷­ËÈdã}´*=±Ñ/pòŽðévö	>\é†ë'Ð‡×,q! -gãa/Ñ%U±‹\ÑGY¤C}[ì([F8æà.R–‡<øæ“mh‹äš…<+/~@{Ö 6;…LŠã=3Ÿµ!)±³ãå{Æ³²i.ÙµäêxíÚoúÿ¡¨›.3‹álîºœ=YÖÌ¢BNHìÝk±yˆëMº›t:›·ëóé|:ÉzÕ¬cÄ˜I›>~åê†î´xœ…ÐÁnƒ0à»Ÿ¢·œÇö$¨ŠÜ`ÀœÌqÖòö´Û4©Zo‘óý±îÂ‚Ê”ÏNï'×–¬m­µ¨k³°”[3J!¼ð44cPÜóÈ:È¦œ^ÊC9Hó¢<¾¡ÊæN,ýsÞþò¥w@7òWÅ”HÿøZK³‡²¡qÝº¤±*;¾Cc´ÿæw0aöC‘`Å'e±¡LAž9ùŒÂ¶ù0Q˜¿/ ›b6¿b˜XèyËFëÞçxÞAHÅ¸ò²íÅÚ÷(=ÎŸouéåž0[ÈÁÕ^2±xœAnÄ E÷>ÅìXEÙTÝõ$ÑQâ$Vˆ¡Æh&·/af*Uªª,ù¼gü>‰æ+øËÇÅô%K_³>ÅJòïo»@\îÝÌ¥›½7àä‡ü“j¾Y…Ò	¶qÒ:ûÈÍ'©l÷€„ñ„FxG{—Ê/ã·:ñ©duJµ%Ib%µ}ŽÄ¨ÿ71°¸l§Â^)²MB¬SUT
B^)Ùì˜t·~A¿¾.`XbV»9¿ãòž·ã¥6Ø€OÅNn£°a[²…Ç©6â‘?pÕ€¾-» –à‚<xœ;Â¼‚y‚¤~±±¥A…nNf^i…nz^©nzr²:Wb‘‚­‚º~iqºüÄ q~t¡*%¡õ2B÷”XÁB“™UÐ%'[1¦ÊƒÅÔ¹’JA–«s¥æ¥d&æØI™éê\ Û8Y²5xœuRËNÃ0¼ç+|«„äTN‘J)H\)7„“lƒc¯Ò¿gíð(É%öÎìÎxlÎy¦E%ÖÊNì!ËŒ.3ÆlÀ6þ«œÐuX²§N ÷œ`¥^¼@?KÝGls»}ÜÜ?”,Ï‹kk7ÒeÙ«©0bUªá£ø0i0”Füûd+.häd…*h¸žäD‚‡vÆ8ˆÚK£± [õ›	~Õ/'Æ "5z¡kÀ‚n@×ð‹’äJ†¡1Žç{ð]Éêæ5o ;D5.›* ¿wm >Uí0fì!ø`¹=úÖèU9é¤oËiG™'ïÁ¡Œ),–ùÇâÏÌõöNb{,:ˆþR†«þ"?Ï—³cyc“™’q~ çŒ£Ej÷GWªY;ùqUt?fG™òü“ò?W¿ÁñX¾qbG¯‹ßO"ºŸ÷î ––ò=¡*Æaë8\~ìÔLèÁ*#HÆy¹£Ú÷Ó8qbŸ.D‘-Îò;[dŸ«™ ß°xœ]ÁJ1†ïyŠ9«Åto9AT½T<ˆH§ÝØl²d&ÛCé»›Í–"^&dþf¾)¥ºG	=jB!bP`ÈÔM/€I:ØIÁôš|Võ–f€„f±h„ø‰¦æLvþ{S$KSÈ&ÎÒkFâ*¹b˜Þw—Û²Y&Ü\CS"µÓˆvl®ª{ÀÔ;"Ãy¬1paÛ'ÇX³…pøÃ•iB×–§º¶,bw1ój¼ýçÖÑûØž!ç’Õxs2ìŸ:ÿÊâË^‡Ú„LË‡§õãÛÝ×úõùþŽGñh6½‡xœ•XëoÛ6ÿlþ÷-)f¥ÉEfÈ˜±<ŒÚh7E@K´CD"=’²ëÂüîŽzYI×Í,Š¼;Þówç˜M¡’­ÓAŸ½ãîGˆû‹»‘àG˜†˜)“4pÿñNAÜLmQH“aíìFg
œòe¼³¿î¦³ÉŒå°¬Ïå¼ú"ŽZ¡G0ÊÔF§ê=|N¤É"·éóxäó…|{H<Äõ1ŠÏ“Ô–&ŒG&_0Q
¼¬i2dâõ7…rð›I¾A\×4…
ò5º]Î©eäj<Â>™ÆAýÖ½q<byKGIt6ú×ŽGÃô6k¦µÓfiÇ£ødÚ5Ôo5‘\¯IÑ¤ý‡o´`Úš×1ÓÕVI¨ßjª\¥}ÜŽHòúdi]ª’ÒèÈ4UÞÓé²ñ†vIØ­Ñ­ôÍÂç×]¿V)z¿™dqÝø]ê>¼^ÖgþÉn“*ûèxÓ0¹]âJC{ÛÆ”IÙ€ÐÖÉ•"'Œ:k¾k[¯°$é“JŸ‰öêÀ#_„¸¾™]}˜Lç“‡û&÷)ýçO
>u‹&–‡€¹]éTæÀÉíÜ —Ze°ØñyÍ¬ ×Beº,`élÁÇ”1ñkQ.—ÊÕå˜À'çPz>dÚ¼L-%Ö¨ÐKØÙ2kŽBS¿(ñN„x`šò¯•çù¹hÊ×ƒQDPÂA©iJ4äSTÒ.k{ƒ…à¤ñ¨ú	ÌŸ´ü“ðM9‹ZHžØÈ¼Tä€ÌõÊÀV‡'6þY9£ò#ÏV¢Ì@üè¼­?ÖêNÑ_(¼¹BÎâÅoXË>ª5X°U¸ ¹D7ö!†Y_Ãbß½Â^ÓJèãqà‰¸&6ŽL–`¬QM€‡˜³; ¿W1-fóëÉý’}Ä¡«^ ]wWkJ;h1^©¨Ä¥Û±À‘œHÀÔÙ Ò ­	î¹BòšcBé§6pãDü$>ûqÿ#ö—:ì¯•O^¥Øÿ²Ÿ~¸¸šŸÃwd_ð¦û“2è…@)u6„é„2É”³VÙ[m¼rh9œ’ÙÛØÅ¶ÄD©ÄYQ*&T2
&	zwxÁéP´Qõ°–ÞSX÷?ŸŸ¢ºW¿ÿñ]u¯>Î‘r?«teä"ÇlgdÑfÅ
­Jé°êåJìÏ~@ŠÐ#†°xf8ýv0åU$ñ²ùQ¬ÛæG±~à !tÅ½èË’
–tÝÚ¯[û9^ïWtC§_\Ñ3ˆâÿ_Øô<ºªíyÿzÓ¿ä eÒ9ƒ€
ÐÇcˆu™Ës½h§Ä¹¬8™±¥€ªáÖÌug%–~ç=0
ÏHéÏhŠiKsÖä;Ì¾&ªÊ€+EˆÅ]†*—t—fÅ
ÅÝ©CÜ³å*"3ŠbP5³Ê›Çg'¿È7•,¯%@kÄáôìiÈâ¹:Q@ÀZ- áÎêŠŽ¡³ž³;ÓÄÙvH^«j­“¯
º	­DHˆwúaì&±÷à¢vVú…lì’‹A«cÏ½[jÃÆ¥0"se™S—Ê.ðR£ò8a»³y®¢Q*×r¡s„ÎØ;ª‰(Ú_Ju‹µMÐ¿0‰p~Àá¥ !â¢¤á#Fo­&Œ¨¶t«’(Å 9×Uþ*éâáÊpHQØ;XhLnn¼
®gw•ÃÑYG°þ“¶'áì×‘YTgÀ©#×¦S¤ãöDÑ«æ†Bî(2O~h­¼ÛËœ+A!©ˆtˆ¥ù¬šÚâàÌ8¬²º!‡8}¹,JaÏ˜&‰Ä¨)0>wsm¹ Ì³)¹Ž}aè'RS pXœ§ØT°õâô‡éñœÙ­!ßàÄËã93aÃ9Gâ"‹X£cmzÓ#éE3qmcæÄy™ÇË*ÓPÊËÒÓï½?O[Š
"-Úi;¦z§U£ÚƒÇ¢ôá1^Nà·Õ¯pÇY ‹19¬SÙ#©É£c=Â¿´­žíi=y¸šß¢rö?*jðzÓ|ôU»1îŸ>J§©_nÜ|Å fßVCú%O	³Ès¹:¾¹½œÍù²«¾øøK!–¥Ž Ý´ãŽˆ:ëë-iœÀaãŽQH‚Mð!\ÍîƒKÊWähÛÞø™°ÁÈBùµL¾ÒÒaÇÛEéw@9±VŽ˜Š‘¶øÊyÈ"Ô†ç"ÂsóçÅÝôö¦ó‹þÞ‚ú*‹5Ù‚y4˜ÐÕ¦•ö¡FAL¾$<øãq^åSŒCxœ}TAkÔ@fu[ºÁŠH)V¬<õÒbSŠBIª¥X¨°mµÕ‹x˜$/Ý±I&ÎL*[„õ"(x)¹÷æÍ‹ìðâÅŸâ|3IêVJ÷²3ïÍ÷½ï{ïíþo·¯f)º¡Hs&qîþ¼ãûG—oÎÖpa³X›/»k6|ôÄ¯}ü2•¢fŠâ
¼·ž¹—³­7—l [†_[¿ZSk5+SF´YT~¾èœXŠt!Åˆ)˜l­AÙxÄ4³ïA`uŽ+‘U™ ˆc”Ž–,StHšÐ"¶uÍEØˆÿ#Œå .ŠLK‘$ÄdÔ°3
qo~ÀÌ4¼ãº™€”«Fõ‚Cðl´´åJP“#U„!*IÒ'E+‰(¹"çýËr-HS!«B‹Mk×O
‰Ö¦i¼Í•“KqÀ#ŒÀÊ:ÕAþˆÊ&J@Ž2’F ôU£¢Xtœ­íÝ­ÍÇ­>Ž«ÀSIÀV–—Ë{íkƒÎƒ%7àX‘}Õô=æRiîÛÑYãDç†àeI@hb´iÚÂ"Ó~íli€ÖœM+°f s‡(…0:Ï/:3Ž{H‚Ì"ZJ£Ú5W¿¼56ý¸×m€gô©“FI½´ÿ°ë
_m4»>¨8F—l”F‚'1Öl¯"¡³K$ØyŽ„Ã,DØe{¶ÉÛRh5§1ld¦ùÌœ‰-ÏJˆyÒ8jÓÝ/ÇfžR¾þaìŸÄ:Ýfø†ÀÈËÁË%§¤:ûå³ñ;Óv·zHŠ9&½¾ë¼z]^™˜jM¦à±<O™Ú7Ãþ0qãag5Ï­‡.Ï7Â,¸ê@ù{bzp‚=–X•	O¹Æˆš©eÿôRÔ)`Zcšk»æßÃìª[4ñ…è×nµ5†aiýÅ*ˆÜ–$È^Áhži®=¦¡þ½€ÒÂÌ·áþè´ÛÃŸ“ß/üó˜Áœ¹âxœ•WmoÛ6þ,þŠö¡oqš]uI 	6IÔÙ°¡(Z¢m¢2©‘”_†ýøÝ)™Ê6}±DÞËsÇçîh³^©ÑB…Qm/ß½§ÃGˆë³«1ÂG˜LFðE§ÕZy@+\(˜;»iàú÷+•ZëR	1ýózr3OÙ›úºVÎ«oâÙ„dóœDOðuD#]žÄßOðŒ4t_ßDü$ÁZ™(‰/,ZCÿ™ËJ’“IF¿æûF®”od©ØµñÉ±øž‹:¹Í´‘nG³¢ÆžžØùÜ«Àêº¯”oNOæZÕÑ‡‡ô1”Ñ¹Ìô1'í¹|­$½Ò®VÒTwèøNWÊÊŽíà©ÝÜŠ]wa×(ÖœÀ`	Å‹$½+—B™EX²øº¯oBœ_L?ßÜŽ'×=ˆ“H7ÓÁQZ™CÏ1?+hœ]#~/ÂRS¡uFUàƒkK|W‡BÜâFÏ¬F:<ã h” ,ú"K+¹ƒ™¥Ñ’2Ç¾Ê%ª”¨!’×—jûÞâÇ[bïÑ«°k çÌj[~‡Ç¥Í»WibÀ·e©¼?€n
·ÇÞ!êwµkØ9xL—“µØÈGO2•6Ües¶	_çµ\øŸyåÍJû¦–;6*–j³b:˜!
‰ÉÌÚ9m§Ø8mª‹F+Û˜SøÆRÖD§Ž»˜iOéŸð÷Å/òÚüøQ<RÀ¸ZœÕ˜D¸»$ ö¾Æg;ÚóúïÈ§þj•Ak/
<Ø]¹—?
ª´&æ—âÇZ8„[ÖfŽøadÝ§Gõ'Â<U ·ç;Xñ`QŒòÒiÂ¹šË¶&Gä"u$¶ß·*²üÙšµ2Z$w NºÚb&<ñF\\I>ú™ôè_¤…ô;S.5¶õ€Ä1ð¸°ÞË(ì”G1zØèº‹ìrXUlF)÷ ‰ w‘?Ò<ËÊ´kY·ŠB§½…FX¼>H‹(Ž¶óô[„EØDt¢&mIäI‰?f‡40Q<¨Œ®Àf©Ë%kZ×@²øF•”öžU5…;ã8÷ŸÂ»¡zèk…ì'ºöBšûÉ“M2r›Aƒ¸ÞQ>O‡µÑ[>sÙ‘tA‘è.ÒVrË<„qÀŒŸo¬«F²Öªª˜ï1ˆà	\?z"¶ý\Ê¡upªD@¬ÆËñ9©Oï©ëÿªŽËÓ.Ûã~‘I—­ÈŽI8Ë‰|AD&á§‡[ynF„H¤j˜ò½¡M"ó‹ÄEí}«ªê"ð9	 ßc™T­¨ÍÌ	£±áYŸéìi¶âÉqÑùÎeí
QPÚnèÜ'QöÒna4FþÉÌ}™ßš›s‘{ŒížzdçylEBž³ö‰aïaÿŒ€øzVÊ}@ð6Î¢=íÂÃB&>÷CÌwüi¤Ä»*6êäYœœ×lJânONQìA¬,ö?Ül}<¿ýU†²»îìW±Õe‘8%+¼;´æ;O)jXˆ—EñŽ³hWÔ†Ñ¼Ú6L‘µœbÖMÍsþýÑO¢j<Ôã!.þ8»º¹¼ÈîÖ¯áLðïŽÓ ä‹SŸ¨cñ&¿{ÄßÁ³›
ô3îöCíõßðýJÎpd`,rEÀ™þh1s/§Wg_nñ²”kB)å!<{%êê©jWMœãte!KX…‚.$®AÜ^c0A¯áW‰Ðò»M4=èÙÍ¦¾þ?’ôxŽ`ðáù¸#wÇ‡¸þœ=¹Â+Û˜=Ô¼—û1sˆg,¬­¨iI¢-9UiG1]Ô6K¤këi>Ð5‰ŽÂæ•þáÝà!ÖQføßrßá±è Ä¿¢XœBí
>xœû«ðPž7¯,7U·(51EÃP“k"¿¬ˆ­ «œš—¢˜§àæ›ª›èfÍ’ÛØv„‰Qa²³Ž HX!9?77¨$7¹“YO6­(?—«$#U!75%³4W$™œ_™Z¬P’?ù$³~i	WR¥BJjZbiN‰Âff–›Œœ%ù
Á!.þ¡!›Ÿ±ò1oîçôgcäœüˆßHª
D  yÅ8‹¶ˆxœ•VMoÛ8=—¿bniÑ(M¶—…aH56qŒÊÈnä@‹#›¨D	$Ô…~üÎP²,[I?tI½÷†ä¼Û<å=¡ÕéöíÅ;1:x„˜]ÞNDD0{ D£Q ÌîoîëÕ¤ÈsiÔ)Xôkèå6™wBÄ_gwóx¡ ö@BÅIGõ†
Ÿt‚Ÿà!ŠŒÌÑ•2ÁH«ÑÐ8­>A‘zü( óÞyi}´ÌŠäÛhè²¥põ¸À()6Æ“z¶èÂ°Ît®=ªˆÎe·Ìz´°´ÕÑ>’I‚Î1,íÁJ«MZŒ†õ;-a7ë¡-¦‘—«Ñôp»Y.Ë’áQ.ÝÍxH9´Ó×X°"a7{áž+WÈ”agh1,ýŒ%kL¾1iü(Äõ$™ÎÓ»Yë¶Éb}l.^ÑèÀÓ7m<®¬ö[(Ò°ÀP_§Í¥×…åVX”J›(é%°HŽ^òäLˆ»µµ¦xÑyƒhGã7³¦×°q¼‘¾Ù$É¾dHVÙ’UbF@@€TŠÊÅfÏ›Ll¼¢oò%Z>rV¬t"³Zƒ®¤hn+È¸–%²}}wÍg¨MfrX=#33m˜¸G@cõ–|do¦îíÍs[xLB^¦QB3
SMª´p&Þ‹‡GQŽQ]i_]£K¬.)ªÕüËåx1€W´/ÃÒü»FŽÏPÀÅ)Ì§ ù…tJT´qhé:DÁ}KªÏd+„g&ñ¡ë,Õª'®58ýYèïÃ ç§¢…Ð×R:‡”Üê¯Á9mwüùŸW·;æº²Š›½¹ÌÈñ¡dØÇ¼¡ÕFZTI¢ºø”J9#›ù@8ÿZ4dï ïgAô{çzß›8×w!AäÎz­¾K*ÏÚ¯¡ÜŸ¿S®ÁF/72ŽÐid!ŽŽŒøó€mäPûøÓH¿ä¨9rˆnC}s/­æä@LS0ù^’0nš¢¿
–Œk,äêíäæ*^¼ã`ãcùºß²ìb­ëŠmsß‘h*±uƒdïR“¢^Óôá¢D»;Óä¿ËÛùÍ¤ó»>+ ¿Ë¼dÙ-zÂÐ„æÄ¼b‡…Ÿ}º5nCu&þ‚c¹$¶Íxœí=]“Ü¶‘Ï»¿å\E»)ÑÖJvr7¶œR;Ù‹-«$ùêê®®Tœá‰CÒgGã8ÿ=ý€gv53k)öêAËÑ »ÑÝh4ÀßdÍ¢Íu¡^×W­ð¿Óß¨—ÏÿüßÉ7e¦k£“Ë\×}Y”º›¨¿<ÿ&yøñƒ¤é’*íuw
•4s…X*Ý—MmTÑtªŸ3.|±Hë<©ÊZ«²"Íô} »ÒÝZUMctµVÓÔè\5µš•½‚ú*Í§V °¿é
êÿ-m–yiÔüõqýñû;í©‘êc€¹¯þs	>|pñÙé)ïì\ýýô¤j²´RIª^g‹ÜœžÐŸÇg§'÷Ê<Éú®š ª¶J×€³H±i•N›eOËšºïšªÒÝ=†©Í5uºÐ¦…{€¤š¦	W½)¬ÊÒ6–UÙ¯p£Ê™Ô¦Õp'Sßüé‰bØJUš;V2÷Ö*­ª×™9Zõi6×9ÖF
è>)Sáx.?ùN=µ|x©{uYçºÕ5"½áXË&ÛElÀ1º`,TÞ,Ò²ÞÇ“ÐiGì9?©TÕz%ˆ7Õ€AÛA/ û•k+‚â'€Ê5S%ƒaE~ˆû&ÆÀH£ºE×,¢ÚÄ'º€SC¥˜U ÈÉÍäjJÒ
à›¬jŠ1<{Ëð&º=ÄäoÖµ;Ú¤Éµ–]ZC£³®Y¶^Tf'aO¢keŽ½k@ºûSPo@®J ªšÙ¤Ó}Wê+”µ×W]º=l;—YŸN+:2„/*Ð:[«VwØa$Ôu(@ê>Ig³ë±PUU;=Cùw¨tg`Üˆ†‘Åˆì[o¡ŠUX¯X¹7f‘v’—ß>yñjã}’æ¹ Vž—ÈÐ»AuÝuhJ$:*òï·‘"fò2 ¤š>í—&‡rÅå®&Pä*©˜ˆTSùªðBwW,eô¾Ìø‡D	)@õ,;í%3óXÙ—D%Qù>VÌ ™7+lyY±f´³-m[0‚¨àXN¹UQ µ€iÖ—Ði=qÐVQv‹U
-@çqvR y³ª«&Í'îA@!@š/Ê:iScúy·œ˜åt\Ù’f9›«Ëïž¾ú†”FsÓšFgËBb€¿üO¹¢Oèúöé¦îõ€Î®&©yÃºdvDïÓì‡eÙ!ÁèoÀwT0!‰	dgQ7q7ª4x=û÷f mÓõþs@Ö´ëÊ¦DJa¡Ó½ÄïjiæC-úÉÀ‹ø=±™`Ð3ÉN%º2z5×í!G…¿dK+ ¿^ÓOù@†Œ[ÌýDÙŠ®TAµt¦ÑlK œH|3Á'9gÊqÃ|ÄLpQ`U6O;˜PgåiÓô ŸV»óË–—r¶`Í²EF$º(tÖGš*([f²­äõ$¿B=º²…ÁÑ¦DCïÈ-)+Ò8ãqrÔt%’60i²¬Ëž_4(z«ð­P›M½N$@Ú¢œE˜vv•Ô7mo×ÖfÐë5pe¡\9Vœëª´øîj
x@b²®lyEf™¼W± @ôç§Î—×oÛ
~¼N»Ù…Ä¨{¿›LÔ$ùZCßöžúío±ÏË®V fY¨³3õôû/¾zöJ=~¬.Ôùùç(@õéÉÉkn}ªUâåÍ¨¨}DhK>rˆÆ|z‚~f8Ÿÿíï«¦ËÍÿÚF’‹ÿû8ðöÌzoçðlûÿºÌ±ì#.GNN>ñü›½7A:WkrPÝ\B+gV²óó{$àŒ$Ó²N»õ½I¾\´ätS¸tðT öôÞ$­Ê”(€2®ùÆ™àTFWãÍ²Ÿ+0þ5À!`¬`¡s0úÎÁC 
ûj»È5¸%º
ÐÆ°

ÃÉ.	 ×;k¹ 	ÝG’)ŸnùV›kµ±<«ÍÞój\ÒÇ‘Ñvþéµ)ó/¨è!1üêÅà`)@…#d€Y,$@,{bax¯^ó+/¢loZÄ%º~»)&èÈZ/j¨/b+9e@Â¸’mo¹Ä…»m	(ñö{‡Û•u-0,ÀÚeoÑüwôÛön¾3ü­~úÓÔ?I1kB´/2Ý´1¡Ú²j=.!p4É‹„$b=Ë‹ÂH1Á"«5øñhz£E.g‰<ØFYÏÔªìç`ÞJ£P‹ÜP‰d¦Är­^úX WY( þQHmÉ&(<P	Ç«$…ùÝkx7(è¨ìNW¿‹®>”1³_Gxå5-C‹%V¯âãÞ\Ö£lKˆ/2wÇÈ,v‰äX‡(7dOŽ{†tá2Kþ±7m |”(6Þ
¦  IÐ„EÛ¤$Ç0R&ˆ†J’@±ð¨ý¯=‰rèPD'Å`‚>£	ÕÕ³jÌ>XêëÎYØÊò@×	F^ïMBåQr¤üÎ«ü%Ê¸g¹E„wÉ{!±‡É¥ÞËäŸ{
ƒ³ÎˆîN„à!nÑÆh}B·8ƒTè¼@ûcýi~Ô@ƒAQšòGÞ$Ì\Ë„
@t–¶´oŽ¹XÙÂÀ|€_ãV¶ÈåEPŸ*9Þbu
Ñ¶]ÓëÉöÇQƒÝ:˜zQf ´XV}Ù¦°Xàí‡´ƒÕWY„ý[Øw’`lÖ‰Ç“gOÔ_H0.£¥B€{×<m€1Žgÿõ-ï5GBóí„$H@k!ÜÜãÝ‘d¡ó<@X}¹Ð ! þ*­–š3¸Œkô|ðjïÅªKÓ/ ¶jf%
­íußté¤+©EjÞpå*R´ )d3¡>PâF«QgÏ^þÏWçèúÃò°ÎÓ.W//)îkùþrCXß/AÆèãðëÓ'Ïwa}º!ÊÉ‘–†~’ËE„˜ã¬
ü¾¾T\hUûq,W*È`ä7tŸºC‰éÉ$ˆ)©ÄÄô¹’˜\h‰é~Ü
1mÂ…Ýz6ìnÃð ¨ËbèÆBpk§k®`¦æ÷•ï-‘)1šsµÀ²{-hŽÂOrÁIq'å#ŒáB/å·È›Ý²¹ú‹e‹'x0_b¶øŒžØ)óR÷ã¨ë81XŸ/Ä³)*¶†oÄ\âû "N<"ùEŒÁçúE+gIK&¹Oé‘$‡B\ÆRöù= |÷Ä Dï†1€ JÜ àqÿ¥^3cQÁ|çœ6lëåb:î]1€€®t
€ °ÊtÝkƒí‘ð¡Ñ
Pz+Œf\†gœþ4ä}jC(Ðƒâ: ßßxÖ7f/ÊzqÀ¡Â`Í²0–µ%cxO¯lï-0)­€/ŠŸâÜ
XTø¦o¬Ã‚:Á¥ Dþ>4áðÝ¦<}ücœàó8ß,ÏG“þ®CL÷Ã÷ðÚs}£ø 5XºR£UVÏ<w0å·‘ÜÒì+®D,·y• ¯–džEPC½ÀüÖ—ê‰Y×Ù¼kêfiÔWWœ”» B}@,¦)<Î,ÉéQ^œŽ2Dc6Û×ðVr9(ÝßyKmµ¹ÖÆ<¯Õ¼ÏÎÍç!ÙéYbQ¼ÿ°Ñ:âÒ©™Iœ+ùR¬/èéÈÐ9”8<FA?D¦Oæ•d BG	÷ãXž,z>Aøp_€…óX¾€ÕFGe'±à‚¤pÄÌª–á9û·ð÷˜,K×¾7~œ@Ëuw.œtŸ¯.™ …n>ðã1Yñ/2bßÁ:oªV_br%Ž"ðv»
‡òÒ³Iðqà’eåøÑ‚€±®Jìr½8¾Óõ•ßjáˆ:yHêÉlö«w¿¶ðNr{ëlˆ&8Äi¦)¿p¬–˜üC(p%­¤Dƒeâ„'`$qð½pÄ‘ï)¶öV.î,.Èò—cÃ­ðlÄïýg¶Áý¾P…Ó7~oÂùjÜ~ŸÛ¤.+ÜÊŠ ðYÞý¦cåwÃîòH9\Ý•#²¡,{Š)
gÔ>ÓFºS›vò†vÐ"`Œsý6ÍÑ"å³¨Á\€ Þ.ð0sÜ±"hdÀh›0ºÂxª®tÖsÌüJT¶ì:àÇ}0‘	¼H—üx?Lz…ÁïGøZõPl £mÃ†U¦Ë¢ ?l$'èœÎR¾Z·Z½HkX×Á«ycäF%IWkarØmcårdùêâw¨ñ„„º¸P´óuùï–m¯®€\œ’W”3Ðèö´“KÌø€üG!ôad¯vÇÔ	,Ž-ckcì=;š÷kÕwmÖäÄà¯m—†þÙw__žo@6½4aY`ZÀ¥;¹¯Î.Ÿ}}ÎZL]Šƒ·[§á,_ÛÍ§¸Ùù¼kæå´ìÏž¿øëŸ^»z‹5ÆÔ˜ÞÍ©õëË¬iõÙË§Ï]·H‚ìajZ5žŽ?åf+aÖ`‚|ÿýåŸéðû[ÛˆW 5Ã¹E{#Ô—hBDscîÎz	3.$È®Ç°q
ØQ{ššŸGÿbfÅ;êÞQÍ8ëç÷I“jçxêº´Á7Do{wf-ÇÃû¼¬í8ó`œCgR O×+V¦’h1µ®î	$Tûp¥~ðê{T{š@{nfIŠÄÈs!#¡¶«ì¦/z°ùy1ômæxP6eÃ=”AÃ’¾7z§
¥…wE¹"tZw©Ñ$g¤n’¦õÂwÎN	P«Kø´/Ödç$ëÖmßÌº´Ãl§£ZÔ/=Û²¢'{dw|bš¼¿;‹7nœ¶ŸG­@YyÌ€x²¦(M½˜ò<úù~>r?)·GUFÍÙÖH9ýsYg@K¾u¶€Ñ
S£4øÅxàž'µ%'ZJ,Eåc&Ø-Ž
ÙH)³HÅ%a´JyfáÓá‰¶º¤#‹\&a§ÛŠnIY‘1Å‹<P=cò¹*dlŒÌÑ-/ñR hNæ­4EÉˆrsÃ8Qýø›fœ%Ò¨ CcEäýE2,oyá9æ.g9–[~í.Vrèd¹0ÓÇ]±ÛÉ+VË[wœî%Ooð¸ý²æDK¬ØwimÈÌ•…ëÏpøV¨"ÛfÞÍ vïíÀR—§B¾•ÜÇ	H«ÓƒÉ/–FQ}«ä¿Txž>ëcgÂVL³ÅK.œDñ¾'’ñ"ö\‘plÆƒÛÊ‹+L­wÏXz?Qià­8ëÑ$¼ˆ*Ü¢†%/ÒÄ¦*	Qyg‹(I”Xî‘¹µdÚ&U³"ûF§àOðÇév–ºWâÂÂ¸|+®1á`ÌRzŒ¢ "µðm³WËáQ$'‹m²3rÝD°0à×¼6àç½%éC<82|ée£gjÜ!©E¯]œÐý¸½w‘ë´ûâò#„û(¤W,Žá½"ÁÉ´u4æÇ;
’Rî#I0›·ÜÍî/ìqQz:Àh``%Z²Ûh­ÔëM—!¶XÙ9U:3âýu4†Ig®ò`]Å×"¡w>Ø!K d|Ù7`y‡Sò"ºÀa.\°ë?fd¢x[8lâñK
‰+Z)àc,8³|õ0€táxíC®ö0Œ Ð ÿhü#®öhþ‘?ØàâWütƒ{ã#Ì[Q\pÅÏ6Q\»Èpa‡ûûM‚»(qaGü‡M’ŸîBñ)Wüw‰b¼
áúl®Ï¸âìÀõ™×b‹j#\õ¹¢÷„€¯ú:#eƒ" µÖyäÛñÀ¤Ûô®Ý÷ºFñ2¶ºÊ]‘5¡+ÑÖŠ/r£,kÓãÍe0+ŒMy,iõ÷«Â/£Õ· ¶J¡['Ý²¾®^~-"ôƒîÑ%8ÅpL*bÇàQ—W–`]D„e4¼S¸—ë®B$ÃãÁ§Zƒ¤Ø,ä¡~qO`pÏAC”Í½º³WwöêÎ^ÝÙ«;{u›öJØ!y	M#Ö±òžÚ  ‚„ŸžöÇ²À¶é#ƒ‘máñ
ñƒî´ngƒP¸-ÒdM¥0ºª‹·©A_>šØ9ÖFüÔ~ßÛ´†q‰»w‡Ðß¹Çfc+úXîZŸãÔã~[û±Oâé«ã¬¥%÷d<È1/b2Þ)0˜Éø´7“ÿ…Øf¯Wp¡|·_MJÉ©SÜ·9j–Y¦Á0;Ž1¼P—/¤(iå÷¯“‰4Ä”V· ƒ&aH)aNrDÆ¥½o:ˆÓd?p²nyc»ïÖ¬œÉÝ¾ÁÍTq*Ûî^ÓN¬Nô¢o§†W£rK@Žmýº]s‰_*ƒnxìË~H)û| t÷xËM¾4æ:€9GAó@ÊYß‹ÐoíŠ£ã‰ý=Œ'£±Ml‚ß8xùQžGIŠuë,–'!töòñ0É—©Ãß£]póÅÉbÀk$)ÐõX
Ü-ë£RÀJ
Á»Ê 'ºé£òÐu[¦5W<ÄˆpÈÂÖ²pÿ;Ÿöga½\äÁÑ^»O’€öÞqhØÐCðˆÈâÔ@0¦ÄçO3}·Ìì‡NÄ!Þ.Ì‡Ã{™…Ûˆá®Œm7Ë÷×‡¬YÖí”Ñ»\kµü5ZMîu
_[hLR…|¶/@³¶oÑ?Èæ”:çÏQã(íÇ#ZÜ²UnÝÃª¡÷×VE6‡0Šb¶©(è]¨„´{àãËDsˆæˆ­Ç‘Ì~‹BŠØl1üD°ß¿	1>ìïËæÕIúûOÌèMóœT@Qv0q¡Ë@ÿÕ”á²«±ÙO˜Öjj¶!åÛ²ð#:ÉÆ™¿&†Ò¯r: 5žäXm„Ä„PÑuˆï«u×h“ðÌ(Tá’EFnsíQv‹Î<Y½¦ûoÊ:«–tßMpËB³¬ròÎ*ð¥Õ¯Ú"?ÍÈ¾dÂ_tÀ”¼=gÀ†×4¤WiYÑ®;Õç³¡¯¯-4¬¿dZ”2tÒ.H›íð¦äßG§ÏÃZ¦"¦š¿B]¬›:¹j*àe·ŠGƒ¥¾e[p&nº®¶fûÑ…uÙ\ãçp8œ#9x:eK&9!Ðwï€ž&°?ÁîrH:]$}:C¿V‚ÜãÕšPª;Vbél¤¿]h…‡³ˆoa-ÇÜ¡bNLä²MäFt÷¾Ú1CÂÈóF#n­Ö¶v8Øæ¢º!$J·cèx ¶xc úåÉøP\3áP¼boËxðÕÈ cƒJ†«ú6š¤w×Z»ñ¿Ý9FnÐEøÊ.!'ybãh >ð÷ÈÈ^…¡8àÁ8‚Äãã
›¸^nà"`¯MÐåš˜f	“ÞêY<´zc_Ç
Â½¹ÖPªñ;ó©ðIârA6‹Ð&`âw’‚<, ¾ÐÓÏî™œ}ˆ½–¹cn<ÎU Ï@…ÞÂ¢µÞÂbÿE¥m²eÄ³à±Ð7Œè›S˜çŽ·
Y£¹ÒþT£Ö|À%z’5Ëº,{àz˜ð»V®uxä‘‡,²MsÎÈms~[ËÉâ»àÁoŽ-1px5h€ÉM;Ù…ß†ºH\˜vøãæ^„Ñ&å[$.ßW!¦Ñ˜§&Î¡°ÕÛaD³1[ºÝ:+éq^4†=ñŒ&üy~yS==X³K¶ç.ƒvçÛ½³oítñu†[w¸èîÉAÃË¹wím½#âÕnÄ'îÚY&mÍ"ˆ„ùýøÛ®ýÓýw”B•+VT(ƒ6‹™VáuÄœ
>ìÐÝ†ò°_§kÇ´¡S¬A7w«ÀXe;TROè®×Óƒ§y÷ÛTÉ.'ßªhÒËe|1—„¤?Ü,ŒÏ6Kçí¯¬5ZúñÏ¬¦“CÔ´ýâ/Xnûé_Œ¤bœ)3jU²bnÜ×ªªYq Ê‰p7wÈ¶Z kUÒ\j}{€Óü¡âwŸÚÞü|;ž±)AÕf©¿Ì`›}Hîì]ïR±)Më,iVá[uïÉ2`‡z—ÏuÆAÜur uºz`|6‚&ä¨°=Dø‡ÌïìÅíç“Y‘ù-…˜gû˜
o%„ÄÝ™ˆ[2ml›¶ä>Ž¤,Í¶øðžnìò“	1¶_6¾6þqí âVæî(Wðw³Ž¼xOÝ2gÛ2
ÁA÷•ìˆ‹+Wî¸éx°ì³p7½~Sºô‚ŸTÓåº›I?áíþ‘ås™:q<9tTe1 .3¿P.yÀáÞùã3ÿáhþÞ›ûV•û˜ãðÁšák+Ãç=ü%E˜‡_pÆÛûz‡;c‡{.ÅíS•¼SÅ^!ïGÎ££"óU`“Ù’af[oî>Ë4Kf@pìÙCÈéeµFøAYŒ]­ŽO¶]Æ-?»¸íÂÈðjDFÝ(ž¯>KÞˆ·e®3Æ±ãÇþ§‘3³›ßöŸ‰c„£_Ûv44tËƒ&Î„‰öèõ»?.¬…ïãýFö#. lìübOH#ÐºnZ`(jô$,ÎB±ýð»s«ÙÁ¡ò¥Ú¤üáµèéIQžžº*ÿ8ý'½ožH»½xœí=k“Ü¶‘ŸwEgµU‘¬P‘dûrÝTcÇ>_dK‰œº»ò©¶0$fY¾– gv×ñ¿n<H ÄÌpVÍg¿ìÄ£Ñ/t7Àxóú«ÿJ^Š”—’'ßf¼lÅBðæ÷ðÍë—Éó'O“ªIrÖòæôÁé˜3¹‚–Í!­Š:ç­¨JXT´+åºàô¾`e¹(9t­ÈE{ƒõv%k»[Êo~£ÛÙTå¯[ÀV +²,ƒŒË´5µ*¡­ -2ùkÿ‰çùü‰U]&$\ÒÓ“òÉ¥yf-ˆ›}‚}ÿ¾è–OàùÓgŸŸž@¹íEU·>‚ŸNÿò*e9Ð»ÙÙÙé‰~¤±f©^ÙweUb©õúéé	ôáC³§/@À¿ÂùO6U“ÉÿííÏÉ3|÷ø1<zô²êôäD,àÇ±ˆ.!Þþ¿šAò	¼}û‚°Ub‘ºÓÇãÙ3|»§'YUr„‚Ú€s§$ü
žÃÐ„Äo3¾þ-öÀñ`§êÃãÙÐ`ÀKDÏ`ÅŽ¸RÔ’‘Ž°ñ˜¤—T?™w"oEùduz’2ÉáìüÙ~ÄžÎ‘gLŸgçß¿ºxõú‡74Ž/lDvsy#ûr3‚!Iª®­»6A¬E4TønÍ›y…]$ë³¡‘%iÛäN?T½a›d.JÖÜ@2ÇçU‡<–4œelžcÿÿCMP›e†ü*kž"§Øv¬s¿¿R½•ˆY³”'"Ãâå ÓÙŠ( ¦4vŸb¡Å€’eÃÊ.g
O Üþºùœ™ÏAÕáC"ÊŒ_cm¯»ëÙ0i©³§SEõ)8DyJþO¥À77¶#Ýöö¦#ìi<EµE¿S¿Ù8È¤V¸BBò¾é¿«[°$ÎßjMÒ§ä¡„ì;úØT7¢@Ì*Ä$)«Ã‘Æ”Ç÷!ÛHžVe†ÍŒ¢0XvE‚3`#8©Ú)¼„è¢Yku¼Vô(<¶
y] †­¢ŠVœ›ÌïÑD˜	ÈÜ«^Cä¢’[6uÐ²~96Q†k›*Ïy“ô4:”ø)¾nyD\ä-Çê’~"™ÖÈÑrFZÙ:«é1£R…HñgAš«dýÈ˜&ƒCSsŽ&Ãe"…ê†°ØŠ‚#ôøÔ:Z„H¶þÎmM-QŸßèôÓ—Î°2Ž¶ÂxX6sºuê³¶eéj’¨@¨H= ÞC#KNÓEâ1æØ– RyµõOµø‹r^*LF`0ÈeªQ-¯+Ã?¹¬+äí¦pÃ›š±FsÉW!5_â,»ºFs—g
Êš-ù»*5´oyÁ[T“c´Ø¶DÎmKJé’—¼AaÀwK°+b¥hµd¬e	Ã~‰õ>›Hg¡²Ø9Ñ®X¹äzN!½±ô­êÈE*Î±6¦Î×» Eß_ab¨œðÅ‚§­<¬Þ4äYíÅ/1™’fç¤‰ðlãº}ÌŠ¾Cûñ=­ƒeSu¤=‘½YŸg"m©Oò/ctõÔìˆJ]¨¶9šåmÂ–Ë-:ÅÅ/ôj ††}¦ê;rµJÛç¸?–’{ku’£ÃîÐÝ@‰6B2eËÚ.Æ^½þÜÕBÃå:)«V,¦ðSq^U-êÒ¨@•®5º¯SØ¤@FdI‡êP,ÒzVš³(‹OžhjG¼12MédG/4c.Ðöé¾_?š‚ú¹¤’çjJ´fÍÃäšf›gÏfôÆSã4ßÈ3#ÖÁ.IËåÈÈƒÛEìeÊŒsÑÛŒàT«ëï ^4!ß	©k–wí:ŽVz2äJâ`Ùšk^ŽûUDŒçQEpÖM…êg0X,ð«¹Ø~ÆÕ=ÕÝEÒ¨·¸Û8ÕîäÂU}RQ‰F^bGéZå_HcŒ7ä¡–ñí
;Š ™W­iÐÓºóZ4÷›ÈªM™W,t˜CÍëoðçµ‡×Øa8VÑÞ$Å²!!ì2µ¥Œ¹Ò™ÛH3äÕFõ÷²NoQy¨·«„ÑÕ pG¤&l½Â_bA¾Ë×„Éf5'H_$Ë´6Žq²•ke…(QÃJÙ®šn4#{•ò›ØRš±à,»°äJ¹¦!ý¥÷mÆ<è4j™óª°5÷)ÛÏ?×??ÅŸŸ½ôæÊ)ªÏa“2¿©ÒïÌïÏð÷?»•>ÇÿBˆ+Ùc«Ñ!W•f9Št+þÊÐ0oºRK3Éˆž7hQT6¶"ÒË›úÁu†«;âüˆô»#]ò´£ð**2ù˜n·ö¹ë’´Ö÷j^RÒT÷ Ö½gÙæÞwØðt=aÊÓ„k·§ëÝæ†T»¬‚Ád›Ðm«ì«93Ã(Øu’m\ñ4iCþÃW.ÿL°¼”)ÈÒ«NL™_Óæ’ßÌ´ËZ›ß=êqòªyŒôŠ×EØmÃ—d©7‡õ[šß—}¿ØõEŒ—ÖmmeRõí6çLN­îtÛÐiî0Úûû)»Â<s£žKÍö»™,&©½NXÛªš‡i£‡¹•Ÿ|n- f‚IdeúÑ,uãÚ?iU‡vOŒ¹3ÍØ™×78ýZ!Ð˜@{½¡€‹ælµ|£–¦\JÇ¹¨Q.ª¡¼~jœ9ÛA•-›ðëÝsÕ¼}Ý«nV×æsK¯¿J¢„ÊKc…Åí·ïzûS4‰á¥@?ÒJ•1zÂ~íFy'W{Pë‚VQCöÖZE¡ÜWGKÓª+Û™„2ZïÖÜÏSæÃ„Èìè †¶%†¡ÌeQ¤ˆï.à…@c«†JNW<½„äËiøF™Á__A8µî‚ßˆÿûY¬õ$}d¯qýp­ÌŠ#²?"²“[ÞT£ÈùV«e ƒ·$ãÑ‚³Tëÿ‘á¡Û%Ôvmì"ßÎoJªbH¡¡+Ój‚2NëkÞˆÅ”ys*z?Rûncòƒ‘*‚b¼"öÈqP&'êym–27ä ÍÜe¥ŽBEuÆJ4‰ŒÕº©ÕZGú;(`
wÌ«ÐÈÎe5Óò"Ù_¶”T(eåîIÂÑ~×õ­LÈ´ZÌñ=I†¬6íñ1Ël´#×©âÑž#Õ²W_†”‹z#ÈÎ3Ç`£·å9-W¦…B¾Õ~ÔÌŒ[u¬‚–Æx¼ä¼FßK¬‘ÇŠÊuTC^Ii>(Ó‘þ¹yÝCÒVÒèÐUÖ ]rIC]ÚyC¿ä›Þ·o¨©«Žw*X&”O¢]Þáí:¥ë*Ï‡/¯±¼z°ÏŸ{#¶_ºÐòˆNÅÙúµÑë|UY¢å‰(	3[Žôû?D¿Ý´K4ÆKý¥'£¥c@FŸ<z.ù"ã?|¤êÑôa™0CßøÆe‚»Ó4ëê\¤”Ob×Vê*µl)¯y…\šÙq÷,å€=´=è'ºó&Œ§¸Ø_¥Wš3F¿‰µ©åb”–¤û§‚)É\Dzq¤à~ã#ˆ\FCƒŽ9úUÄÅÇJÑ‡Ä~E³[Õ5J)4{g§fb 0 ×ƒÌòk(,‡Ÿ¶˜Ïx±oUœGí‚í&ÁZ åYHË6ïs¬”„
C¦¤Î\Ç¾©‹yØFa(äÒ	^òó´DöÆÈ)5J˜TWVU^<ÆCÓ,ˆ¢µªŠj¹75‚$DÔg—¢T&¦oKQíæØÏ‡t·ÙùeÚ¯\²ÔI¸NVD"*/¿|õÝë¿üñõËÿ~<{çU’9ŠœÛlsÒõgçT—F€ï»Á#¬Š6t×”ðôôçÓÓ:ï–¢¼PYîÿ¿rÙ?=4—=ÌJÿè	ãHƒ¦dy<ÏÂ*)¾Ô1rªß—]áº,;²Cm—¿*­ñ—m)¯…¢ú¡áÝ¯~Œ±ð7YaWÖç]z‰ÿÚJãªÊ³ŽŠÒÙÃDBJ²6ÊÕøçÃ,êOKk¨BÐ.’Æ²ÂH¡Ü13lŒt‘ê(z·áiˆ±
1JâýêVÜ–Gup¯êà>È^ðbž³[~$½GúwQa:L1^0Ø»[JR‡‘„?eIy*{2Nt±™_w›Þß«ZåLq·Ð ´Z>¨0žåXD¸LÉQÃcœ¥9gMË}Ýct}$ÙÚdéQ¬<±¢¤L°ý9ç*\°àõ×]¦ÍòÖ÷f®b˜6L®Ð	/Â­&»«ÕÊ©?¨ÚÇž6ê}›Ì¯J$EUŠÖ‹ýK®e²Ã(@'ëµÚ }Ô^ä}ðEm[´Yo¤bœt‹hæ$BU²2‹ªª]˜ÁzZ‘£Gt­Ò^¢{Œ´®v\$Æ±›9ý7³ˆà*1­šêTP´§i¸ÉMWºj÷D ¹}YÚ<Íòp¸äÏÓ4óõ±Š¨šæÃ.5koôñ*GD8å‹ÊëYS¨k%hýä}§¸ÝmŒäešÄ·ùLãÙ~3PîeØ)ãlv©Ô¦òaì4ÌŸš #,éi¥ÝìÚn•ßµI)¢kzD¾@&;Õƒ!¥nÌ±¬ÍàÇ‚¦Ù„ÖàPrŽ(Ÿ•’•oÊ’Ó© ‚ïãøªË’7o¾JôÔœL‰Ó pJ€…ê>LUÇ6\­]‡ì£Û/ÁÝk+¹svdQöØ	"l}ÀÎWnÙRuÃ×‰
Í½Kâ^Â	"mªc)&¼ƒ‡>a†ì•ËÂ¯·uòŠV¸;ŸíæsÇ¶GºD[e¦×”ÉM¸ˆl>Èê¬‘Üê;lÃÜV[&Zá “âNvÈN/JŽýø¶‘O³J·ÕÞ¥Dw0Ý¡Æ¾êiÞÉ	,†Îæ¸)9[âH:2œ‚ßÅXËÁ—Ý¶XÍb{ªÞÉA˜ªjÏ¢ñ^rsunª»ý–
¡ÅÚ¤³ÈŽ¨0LFù-ÓZÞš&°s>ˆ¥9tEÝoŠº›bù¬oåƒˆ0%Bˆ®8Š°oæ0
?)Yj«dÝ®žùÑ•jk—YÑ^4üÊÆÇ¡Ú‰mÂ]n‰ÊÜ0ÓÓî¹â^4üŠ•åÑ
þpKjvsü¤††ôSN'Ýý~ƒXÌõoî?¬Ù¤þîÿñ¤ðKˆ]dhej’LýƒèÁÅõ‘^ïMFs®MÜ
éœe:Yr'ï\uœ\qšÕnË
6×ÆU§uE*çåÑbðü¦Õ[Ù¼3M§åš½³TúnCûûÆë½Dwie+E]~;OìVœåíJQ}'££8ì—†û ìm)$½ßTÝi§æn?²ùÐ=l·ˆ>•l;ã#ÖØ¶C+ÃS8nf4.þR§¼Q±Ù†ÒœC0\ó3
×´=£î%“•“”l‚ã,7':ãwžgÿ:@#8~6©>©"!(>¡ÄöAGðZK»Õg^¾‰"}Ûùd”pÝ"zx¦s ìza JÆ&Hïhˆº8F¢rõáû©j^~ ^¯n˜¿ÕBm:ýÃZ,èúß‘â¿»²nT< Š?uÇÄaå´ÃM÷•o€žÕõ$µp+•0ùPgxÞ	ž´âí×U÷l¹÷¶—Û=’¢á«õæÂè¹öÄZ…˜H2Â¾s½gö[îSî>,r-2qt¿ynŠö˜ÅüA"™÷AMQÊºkŽôôè©.«1ÂøµàB]:$»9mÕô²ÔÁò”/
Ò¿Ó“:†ýÂ¹MéïÝžº¸çËªD«¡lé6$Qfj3zÇÒŠIÄ=q]˜tzb¦Éÿ ¾²JkÅškvÕ4SI úÌ@“— Ö­JªúJÝ¤¯’úª ìëõË¿~óí÷¯þðoèÂ ïØ%BÉOO(aDÊúE6’¨Q0{ˆxþQí\};³ÚÜÅFèbZÉF÷$Âxk¡.ílOÈÁÙÂG Ðf¹õÊn¤Â×~Uoxû|,Œ^z3„`—˜­1ºš·OÂ½0Ò&K»çú}àï‡ ŸƒnÝ"Wm o¼º‚—gáª:ì\óÖ-„™ï&µÃ(qÝ­¨s˜!žþ[3MtNþ8ìN@êG»%UÆé:ºJ˜m^¢Ä tE7Ë¶eŸŒ@ä×9ÁÈdz‚Ë«%Ïu­8Uç ‡Éjó Ê˜LQ,4¢e”þ»“”„¨Ü@ê5`øèÐ½ñLèb+Wî¢¥Ï´¶†C• É[±¯%rLù-Ü¸‡F(wÆk/Ìˆ"t›<#MÀ(~ÝŒ™¤©*Lb/;¼Œ’8…‚$‚Ü¤W§lI) ?@W/ºGÕ¯³0ÁB­'´Â6 _\Ô´·’ýj‰!Z¿âví‚¥ÅÍ†î±'\}Hš
Ý–Ò÷($	~œP÷éÇèÀ‰ÁuÒeðô!‚+à@†IµT€ãöÃØãUêFùŽÁ|I~E×ÚDÅO¡Yvzòh‹)‚nxM“¸µGè¶Ç
‡PWhåà{#íƒa$ãfÆ¢+ÓÀÈ–áÎÿáÖùÐˆí±vfæ`›¨¯´Ç;µÉè÷Õì8%;Ð‘„Ä@þ"ùN°ER^\Q
—îi
‰GR]ÓrÄ Xñ9mµp™.tm}¾»J=ëýPÕó5Ïa0pÕù-f’un­_LIpF×1‚¹ïúË	rÃýxÐß¦±{õTç>@Ýþ-vº‚¹kúûáÀ\òæB5è¯?Sú[Ã ¿u¬Éä](¥Jëëž riÓ`Yƒ¹(IUèMWpnïz U.rÕÄïæÑÅ#—è8­ºEýÛhÀ¿ZÆUØþÅ#à]âéz*î^ªî-`ˆØß;aÑ×›GþM
àœðoZvŸïdxðOlWÅÝcÒÁ;¼Ü3Å‡²zö€L@'cƒŠ›ð µÀô_q0µ*Á9oôé ^s‚%¸GYê	‚#%-£ê£#¡?ìà;¦
Û£Õ†ÉÀ?œœÈ48ÎAcà&ö˜.è½Ò8©‹9x·Á–ë»tóãËÛÀÞ¸‘Ë‚‚Jþ%?SÞ©Uà^¡¨gG4MÌ<ø{¢ÑOädŸÿô«À¥¦XÍ™	Ñ(MFA’s]æ¬¼ØÖÜµGRÙ Ž‰û|òögHò–"2CH&ˆ…ØPˆ
€¨ýÈ	Ï%'	@È5Œ ¢KÏŽÙÎM}7Ä´äÏüR;¡þ)„Ät„ðøC!ÇR†-”„ÙPWÙCM]æœÞöÃxŽ°S”G}¤8ØÉÉ²¯‰N‚ª]\˜FT Ì/ƒˆÓ:CÆ¬CD$_ƒv¢‡ÓÿÚ±èxœ½]Û6ìùò+„ö%gäÚ­+ŠbWìiÃV +Šmöf(¶ì¨³%C’sM‡ý÷‘¢lË¹ÖwÁÄ‘)Š¤(Š_yž°ß?üø×Í;™	eÅÍÛ\(')Ì÷ìçïn^<ûæF››Š;aXò|óT*{ÿç¯?¥~{ûþô—ÍS€H%Æ@@UYÕæ‚=QÇZ<;< o¤rîÔûìðC„ø&Ë¸z^IëüÃO"2´Î´™cH*E!2gÓJ—©Ò°ðŸÍ•PmM³™•¾·›«xMVçñ:Ær$jø¸Ýü»Ì+u·›ÍQËœåÛVYY*‘³ìÀA;û¶Ø1Ø«„¢ÁÌÝ†¥Ñms}–¦†ß-.ïa@ãºãä±}—ZÇ]k·H†Å¥Úó€–JUèmš¶ß½`FØ¶rsl#àhåQØm¦•uAÅk±À]æ©Ô™ÝÆz0–àsN¦3gªé„±ŸÑ–qW5¨x·¹òT¶ÉQ¨\Oé7òš%G»ëlá£Õ*Õûp>,1Z»ëEþj&°q•p†qœ¯F@T¦ƒÿ´c{­+–ñ&Õª:íØ`oÌ´¨xi™Î¥@ã³ÂyRì	îXll¤¨Ì)ÊyQW‰ p„G£©ÃÃÉ^XB¿d°û“6l[äv-?Ôœáª#n=4Å{Í’jo±S†&HÙ¶A±EŽ—pDn4“6–Ã&Ç&‹#ZõÊƒÆ€ýMÙöPÏ’%ðŽo´88#…½{[sãæ»î °W.[Çã¹sÅg¼Œ%a°cK|îµ¸¿ò3@pqÓ-‹ªHÁò¶ÏÀÖ»×óž!‡‰A÷äõÑ²„ë4QÜÍ¤)¤©ï¸„Jƒû!ŒhcÄŒfããmz‡¨ƒà9\iÃÅ9çrx›Ð¤~ÙTþ J öE®ŠÊ[¸Á™˜_—~ÆA:¾:Ø·¯(J‚ß»Ä¡Y®¤CK›R4npºˆ&#r™9¾¯€$N*;¥0)`@˜¸|N×ŽšªQv¤Ÿ€}-É)ŽxxYz­E¨% Î¤õ«@^Ái_½d¨ßîJ²/ÝÈ•ñjÁ~QZ’åõ8 Fð‰óšñÌI­.$ˆÏ=¦†ý(å-\ˆ±
ï»rÿÿ‹a”©‡7 Gü.q/}ª£4”73—0LÉŒ£™ÐDðEXCw¼æ´Ó}s_Èˆu½.VAÖR 8’L‚WåNqY”àÔ¥BB-)óý‚4c´©@aöb2ñó´wïÍl.Ì|dhWç¿Ãn°f ¹YÞ“¿ÆH²Kq HÛ†Ïºz
+°é¤±½qÒù‚ïÌìÚx*UY!¦ßëN¾ÕEñPxyõr:œ¥¼äÐÖ|!¿ó5Mš›uråÜñ(…õéë:ÉŸ1+6ºÊ†ò¥¡ºÖªôeúZ—…g#¨í–üÞkÇÜZU¶{{‚³©=Á))F]îOŸùÏ*¨gÊ7¦Å/¥”üÑK¬ý>ÁX„ZäD¦†ú	1ó)Š7ð€@=ïh-°#„ÍÚÌzçšéV­=92ße[q#Ý‰Np.Á2"KÊ ÂZ®m‹Žù,¯~š%ýðAªuk"öC ¼Zm¹®¹T´…‰ðÑKè}­ì³cÍŽÏ{JÓ<\a“öR_W…ÁZšN7œþi…ñ."êVÒSÁ~Êßà³Yø7ô
ŽÑô9ƒ¨r»h„YjcúãQ‡š‰°o`Žö“Ka\‰	õï°í
v#~umDÖå{ â¶e×¤)Íøë:§+*'%’Ó¶èù³²‹½Ë~¶y¶Š¾w©Šðp»`´Öb`´Ðæì¡ÞÉ§gÛøùšöèÐ	‹ÓZœˆÜC=ûYgáþgÇïaº [6åÓµG>k%(Ù¢Lë«)S+Õ¯ïuêSœ®öŸ hù\¾³;¿š@<‡ÝšÜ$-x•QRz%í!í1¶T¿)C"îØWR\Èu¶cý-\•"ïR×ñqðÍNÜþC[ZWÜ MLéæœ<4>Éõ„}!<§LàÇ‘n-ŸtÂjÚC;Ð}¬^€ÚR<žzük¸mFù %™Ó@°K_
ð¼–ªwíùÁÙºà„ÇK¸„Û…¨ùL€¢ñ‰®š0ðØ¡–L‹¶ª Fw‡ØÞwÂÏ6®K¡T«)Ð„¿‚#!½1…cáÙÍÐ<pió¨BKh¼{ä5Á/!çµE­/~CwÖnCœîþtœ1Ãÿ¦âÇÕÏöÒnžBâ%‹ÍSF]¸…xœÅZkoÜ¶ý¼û+Øhì…×®Ó
û&høö.7Aãýp‚–¨]z”ÖNŠü÷Îð!Qo®ÞkÀûÐÎœ93œ!GÏÎÈûw¯ÿX¿‰žI¾Þ„<+ã(æâ‚üòîÍúÙé·ë\¬Vr±<[-ÉŠ¼æQœÅeœg’D¹ åŽ“_?\“«ûBp)IœlÄ~A’ø6Û§üÌ¼¯Ó˜„|¦çN°¢àBžÂ—³åòIœIrò/.D–Ÿî^¸×^í]Ø¶ô×ZôëÎ•5ZÄËÆ‘ÿðì+‰ª,Ðž•;V’‚I©ü‹Â3^É& ÉÇSr³ã’“?+Y"T-äBð $;–…	'e®®†1^<»ÞÔÐiòs^\¨ß3¶óH}îR9!wq¹Ë«RKÂOôL½B0!àQ|¯ ÂZcú‚ÈRTÀDÉÂO*ÊOB< ”S¦qFóâ(/NHxBNOOÉÑ_üûïr£H(ÁåbQ_ŠÈQ¸~Q~,8yþÇüŠ¾¾ú@_o~»zuslÅ¨FžkÃäÉ6@MÇà4S”~xI_þöË{J/•O ˜cø×›ã!è46>hJ2!(EÒ5a,,_,Òúê×·`ã²þAùL>{%I¬qTžšXS&¶ò)dC	%Ù$É8J'á!eœrRÉËº†t€šò9Q’ufAþ1‰0,#`¦J¡Pk]È¬Zïÿ‘Yägôü†a-À IiD‡sœÄ¯6”€Äª.jýbýœ¸™wÙþÝBôï—¿¿¹¡›·¯nÞÐ›ÍõÕÛßo.GSZÑµˆŸÉÏ`‹ÿ ÜÅà)AÓXÏé:ãFVðrÒM+ªÆ†¬‡å_Ë…àe%²þÐYù¢ 4çåç=ób¡$É
_í;¦©—Qò3öiËr„¥Õù
tN–VW°V'+|õb¦äzL”öÏLšÌýîAQÍ”àß€êúcÜh³1¾(»‡xäçE7`’]eÃ9Ø¦Ø¢•Mfa&Á¾|‘^  ¨!ª ’?m²ÅR«NeI’Ðo„ÿtø\C’Á2²Wá84M;Ñ< Û6[dçrÐõòÆ‹G°íš<ˆp!â”‰Éis º® ‹@VÀ”ÊŠYÖ®V»ÜAy‚¯äAž…µ½CB<8s-ÚÎÀ“•¨×H(Îd¦ä-lßÛ-/iÄXâ#E¹ì1wu|—VWgzy…ÔJ·i	^òÙˆ…ªãgØ$ô¸,Øy¬æµ¬¯çµÂ¬ÛÇîÙ|d1Ä©Ô±×ËžátQ3ÿÿ–¥kÏ“%ÜG¤¬¤ðÝc@aßm4¦‡T2ÜXøÄ=‰¸â¾T\i2X€I¾õàa$©l÷²N¶.éûˆšðldÚñàÕPRÖ¯wŠ¡jÇƒt›ç	Œn<«R£Ÿ†5»$a%´‰ïT‚ù¬8ìsZø”–ñ +d»Ü"BŒG[Æi‘ŒÄÛ¦ä`îuÃ>ñ¥\E.°Å°86É´F£Ó+ øQîëµ¢?I‘‹²ŒÙ6ã!Qš‚Â2.b 7ñ­}iy¡ k&dß©‡JÍÎ”)o1&F š%F§[íø#¢AGc?ÎÆ[¼H­?N9º£2ÉÇHw‰¶©F±Hï˜à
¬ Êƒ«1èæ†Q'ìX¶íÖÛY=~wæyvlº|À_˜xñ «@gê1CºµÔ7(:œ/³ì]»å 6ˆ‹0N_oòA£œD´äcñn¢ÜéÍ–æìÁµkÎN{Ó!ÐsOxÊKhæwù$Ñn™5Š¾4-zqõ!‰óÃß“<Š$/›Ø>dñdh€}Ö‘Fâv³_l-IÜ¹ßTw {ž…•`$ÔVäU1¹¿²ÛÑÝˆwžtôŒÆÔùBð0Jv›pšè>üžIkãŒ–uî˜;ÓŸú¹gÁ×«afvÍ±¦tïa…õìQl-<&Áíä™Yí<²el¢Glfy#KYøï®¬¯ ·sÂZ5ÈM¥ëlËè°ëm‹×(fKÔ·1Üêç'·ŒÊ’••_“ûø7¿ÀÌT@îÐÇ|‰äï™sÃfÿtß7XMË?ÝìôK¹ÝE yÏKƒÚþ7i¬Z¥‡{ÒqfÏÛŸ1 —€#LóÐù«“>åü“š3zŽåÐBÒÆ'+ü8çU[§åÎV*‘ÎDSË ßs1öð²«ò%Š¦¶úÀšOaÁa´ÊâRÍ“ÝH˜§£ÍHG§SZÍnãtôŒÚAýÙí|X@ƒ<‹âíÄÍ—S=gúÞ4ÙÝ×~M<™˜!×öoø!……\r±g>EÒ¿7å=Ír< (ïwÌú×´Ý«ôÏýÁÝÑf?ÄgSÁhù³ü7Æö¶ùSžn?>$Ãëž‹ÐÅ÷ŽyX¯d¦qåBBzA·8Õ³:¼›Î¯P
º×Q‡mˆ~s¥u@¤
¶žš­Ùž¶CÍn&›ƒ=
Ô¤…:°ñGÃü.KrNt´­…»ÑðÞþoT¦7½A0ÈÓ4žˆt—‹–?€‰V˜æ¡•ðèU¹Õx>ÿDò"ÈC»žF	ÛÖ;”fFržìjáÝ3çówc¸tþ­óûù¹ûÅÕ<RýÞøÁ~	YÉœGÄd^¶"p#Îj1ó»½Ö±cŽOÑTZåÌrU2Ú´£jw(L uìL¸Üa:P*D6*&&:Ömí°Ñm<Ñ>¶½«ýr]1šÆ•g+<È‡gì¾éÒ“àaöÏ{î9žÌã÷P‚ÉÇuÊÊ`g[òòÝOéá9û€Uo)AòIrÇ¾YÙ«âÑ¾ë>;ø¸WÃø§Òç@”sf¨Ü\4&M2V#¨³ñýøy;@3£lwZ]^ J£ßŽq@í´[ÛB3—SV®7]õy¹¾)çàœñÓäªÚ 5O±ë¬´'ç¦îcŽlËÝ³#ˆZ…‹É×Lõ*¡ÊH`n¸m¨­“ é€yÀ›=8dR™3†{N,Tý
ÿ]ý±yï‚‚nÅ«ÝBÖ ½g°<¨D\â‰‰ljMèÍh´Ôt»"óÏb]¥™'ÃVÊÇû™Gt#ÜŒn—Ô÷+–A[§ÎóvY’œÜò€ÙÓ¾XÒªÞÃîÒžÃ•UÅ÷P©óUCÀbë€*
7GT—NíH/J&šçÃ*ÍEÜw
Í€VÕß‘`ð±¡xœµYÛnÜ6}ö~¿¤‚×;i`¤O´ÒÂh¶oMRZ)Ô:Í×wHI«+)­Ó.à]]fÎÎgHúp@<~ü{ÿYP®,ßÿÂ¸r"Ü|@?=~Þßß¾Ùk³—Äq³;d;”¡<J8¡•E¹6È9úíÏ_Ñ§/•áÖ"¡@6'”@R<©SÉíï¾ˆñPyœgCªŠ{7‡ÝîZäŠñaÀú„ÿúýÇGüóîšy2>~¢ŠÊšqôÊ£Þ_ív@Šü¦R`ÑâŸ×Ö™š¶/€eðuƒ†O;QLLaQæ¿¿ûaSgä&È ‰2ÿÃRXAÄ¸¾{‚”`7»+øÏê(óßQe[sV¸ÞÞ#/Ú!ÿY0 <™Û˜§~„ËT< Ê”¥[ÁÑÌ~  áU )JE¤Ô&Û<–«	×úpuâŒº4V“1mˆÈp<—Ð]]NUQ“œ>+®"`J*˜Z¤ŠòYNµbgùK·˜õWccàQf)^ò8¨,J”’;¾jELN¢ê‹9,o€³0¾–Å‰’ëÚ…ÛD­ Ê'qŽÐãº³ì¸zF ƒ¿.™«‘Jã/—}ÍøÿÃ3&‚žW‡á~ƒ‹záD‡±Ä÷Ó¯<Ž¹›§á@'åþ‚;œCúÔÐ›·bu&Øsp©‹~h%Nè$*RDR}‡¢Ÿ&¬_rn°ä*%¹jÔÜªÐCãÃ|ÒZ"CxëH®ê²Õ/Ù™B
«¡.éYØ^{«ÑIƒTâ1ßXQV2æ6·ð£ËXëªÒÆ÷Š.>±Ù5rÅ¤/ $Y¹1ÚDxjp]¡8CAÓ`¨üFpÛîlÆÈ€ x&GÜãÔ¨¡ålhÓðÇì1<tˆî2Æ—?c+uŒqÊ2æÉ…)Ÿ‰áe • ¢G¢ŠÕÆ?e|•á/\‚<Ï9u±”¤«¾#µ„£¢Ü£4ÎÜÄ˜›}tk™cÇcÃì7éñ­VC—`hÍ +yÉ,
Ž:É5Í^qi…OÌ÷ïÎsË]?¸K&{O“X¯Í“cD|!W¬6DA¬
£ë*¹Ù"ºð ­:v«LPGž$Ç²éÑ`üJìZCÙÁ
q2;ÂëÃ¥ñ¶¥¶‹òKB@Iô”~†¶²XÚ
Áß´*½<<hÚjcÀÎöÄg”vG— ”O[+œmì¿Éî
zA¹ý–ˆæ°bénºÏ3iÜZV3¹¡h¿Ü„‰1¼UC æ!´Þp`µ%»Bj/ÔÎÝÒLã£Ì_F[’°TŸ¸‰KÍ{ü·¤@	µ„àv	!Ó“u•é2ZV'8ÇË:º~ocä÷évÊ¹(ËŒA¼g–ÌMéÃ?oŒZ8èŒ‚7'²%æËP>a¥ý±(«Y×mÎ¶zqk×¯U\_aÖ-é¾j]›/¡åÂ3D˜â¯w1n,ÄZWªèúS…¦%Ð0¡šŸ¡t3þé&A¯5ß«?c¦Ÿ•Ô„%:Ü¨Þõ©}!ˆQ]–"1º)l#Ÿ%¬
"n­;š:Ç¤+ªYW¯rIŠóÞ§GÆžØÍÂ>“²çûÁõÛÉ†Ý½¼¿»Þ5ï–Tß¾ïnqwÔ+4aó;Xq’³Xû¾{6ái°pi;å&h-ç5ƒc[¸ãýk/Üá‡Øg`0Âå1aÎ½ßs ÀŒÀrZáü‘£Jå×ì ±×
é¡Åt8N¹8­ìû#$­î„ç¨EŽÙè?+þÿ0ÿòé´ÔxœíZ{oÛFÿ[ú{*ì’²dëa;iðÙJ`DqÛI‹s‚"—Q‰ä‘”œ4ðw¿™}p—/ÉJÒÃW#±Èáì³³ó–ÈíõÅoÝ±ïÐ ¡ÝK—©ïù4þ™¼½wû½nwçvJãæ~àÌ—.%¯’ÔõÃýÙiŽûÁ´Hsçþ$O£q–.8K?'Ij§yjê/(R©å„‹EìÏZ-X!›N1ÊD¤t#;ÍÓÓÏu©‡Äæpá”œßŒÎîFÖùûÑ‚pûiWb7Qdß! IäC+YØqjÍÃ©e»®Ÿúa`Ïä°ã©Ó!ÎÌŽI»7«N³?t¹tR‚[³—´ÅEáq4_Ný€´ù§ÙüÒlˆ'(Žz-QW¯ÉÒ#O'ç*q4Æv”Ý«QÍcf×ûq²rÃÀ9a¤b+.MXÞº¡`tE‰Ú6¹}vsGÇc’Î(™ú+—®ÀI« ØšD6<<#Œ8Š	ì‰S—dÏ['ùÍ
²2jŒ®C|øç.ýtÒÌ˜áež?% º†e-‡…hù.,~*ó:Ó#¬Ø×™võñýÈºº½¼°ÎÆãŽXüËõuvóö¥OL±‰.¯îŒVÑõÝV‡üüØ!»ðŠv‡%˜Ù £«ÃotdÇ	µÀR¬0¢±
è+cæ…zƒk&	jÆ#,ŒFLÓe ž©pJ¹Ñ²ã6 Êò\ü0;¤,ŸgÏ
’g¶øÜgá£2CqTÁ |÷IrõËÍû³±‰â0õŒÖÅ¯½û^·ÿ@Èõ(œÈ9mÅÏÏdgù{ ÚTæÜ=uÙË	RM‡t‡ y;wÈm4©Á¬„LæpMÊ˜}±
1ïÂì~ä”k1S\bQ§<Ð€ßÛŸ*a× /ìO•°CBÊ¶°~P	{¨Áž­¦ÛÂÚ«i%ì‘XX¯ÙZØzÍ‹eõZ­­Óê	Y«ÑzÈ¾‹êµYY§ÍŸ¤”±Knbò6Ý
Üj)c×Šck
K*| 'DÝ×^‹+œë:¦	Ý.DlI¤p«+ˆWä¦¶’…¸:XáVãð‘\?ÆÛD–9ÄÌè1®À>õ«]µëµ˜vJøÑu2$£ ?W
X­ÈdhQ\R!àñ}¢)™ùÓMR+¥‹ˆS6¢–”pû%Üþö¸ý2î „;ØwPÆ–p‡Ûã‹¸"ª<RàJÁ£·0 ¹¤€(‚
†\ÇŽ¬ÅäÙˆjIò§î Ý?ÀR$²§Ôz„B˜¢µä!çó
—*/*$A¢êk{aAÑÆìÚPXR@€Æ6ÔQÕ¸5È…%Ü!won'3Û‹g«X-)@Š@0K,'vðÅ’ÖØWnIV×ÁPêp«¬üV`²r
ÓÁ1ÜaÅoøp×;!>yý…ÿ'=CÁP¯¨;4M`ÛÛ3YÁŒ¥j%ß½ÿ@þXÄjûØé_¸JN.H^^…ÒîíaÙU§(‰{'Í§\_—„P¿B[¤X{Á–U=@ÛîývÂº2N]D¶»"¦žötbŸlæÃ":šØÁÊÕ2‡DœSã'×VŒýW÷A(ÔåD±½*±u5>©iàGÇøù5Ó°ZÒÀ©ŸWJ§´Æt‘S›QØ$ôjvj÷ÿHbèO–AâOhïXí„K°&­»-k&’$ Üõ M•U´?Ž¬Ù‚.œè³±›ƒó ­QÒ±{a¸yLfE…Åû™øBEÿFM:[GˆRœmZ¯¢õ™›v¦í«°‹ò>ë÷¥3Ó+ëÐ¡ðñü9ËMÙà];R°‰³;îödéy4æs$¹CâQvÚo.Ç#ÀŠ°±þ0—ì^±“×" ëñ)Æ\ê±NX“¨eïµð ˜Ùz,Å¨éw4! ©ÑsæaB~ƒ/†•qti³7³6ø¤™$>XÅ¸Z:—Í€<·¨¤0rB—¼ÀqûÔÀ¥gÃ
þÃ5üGrî„6Ñad¼²@M¥ARd'I:‹—ÈLà? ˜½±·ÒË,n™Àç>ß(™_*ÛÙ§F
ÚP£
Ú¡F;´#Aƒ¹Ìðù-X2FIÃ²–Ç‡¦üXÂþ¢4¶R7)Xå~]^ª“ã£‹ådá§à}ØŽI-xb|ßh–fñ|³±¦š)M³·fâÇÊ¯u3?¡bê‡SQ+%ø©9Xº€ÌN‘*|GF?ô<8=p=™‡~‚¸Xe rP<gÇ ¸ëÇ÷ýÁKˆÒ…Jñ•±£ï{?§3÷·—ÿYýãw@ú“Æáä~XÌíÈ™Qçq,ù˜ÍÐgV’†ÑÊž/‘B·$Àäã˜8Å,j‚¬€~JùàS…,¶Í!zÎ—P[ÍÀbÚ
9›QÃYNå ÓáƒNvÖÏŸn:sjV¥…éfŸ-gOä†	'Ø­ÈÌõ³Mþ>o>Ý8ØÌ8Ñµž9ÉÌÖ´p\ù£#™ÉÙ–+§˜|_1Å„…Z†@ãOÀœG×PæQ~ðÒÄ”ÁÜW­âºã"hA:7øì}z3Âß/ø»7d¿{ò·H&©èš|øÆn¿(eƒ?gî-&²OGg&ÁBLx¤¨®D¹¥Q{(/º·±Ë\_&ž‚[ÛóÂÓDÈÒ—!î$Y5±Ó¸ø¿+/ðÿ>Eãë]ƒâ-ÝÓta-Â`¯‡™#ºöç<Û,\úAž°ÎÂB’ê*V	‚È<"È°ä#©³€Ã”Å>ñ8@¡EÕfÎÒïõxeÁeÍÅïñ¯¶Ÿ2½X."2Bõaäi‘ßÎÇ£³+k|y5bµ`ÃcbŠ.SNÊ	¢èÙ{ªÞºßªC|jJPl]x¹'5Ä4 ‘ï.³0+fgÏ4ùã^ÞØÙïj‹W­ÁZdöuÉÇÛsëíÂÀÇÑÕ5þå-¹'¾ê2noþiÝ^¾½:»ûp3"§§xœÕÏvQRñ“±T‹WòÈ|à ¥gI	3B>a™»Y®#]ÂSZ£˜¤0Še÷ý†Ê¹ÈøZ—›Ÿ¹Ï‹Z¢÷À!TÉËÙmòÆüdFÐÛŒXH²2Í™œLšÐUHÞ,çsrøŽ\ÛÎö”J@Þd@î}^½âYš)Bö^×¶â-lØ“,"Þ“ÜãBY%Ôw!¼Ï— Å®æ^E
Ù±IÜuí“GÅ˜zéóS3û­5ÍF¡RVØ¬Qàúoæ—âéUjÕdðÂ¤{Š&hƒ‘²“}GAÛ7Éî.Éx0†+ß6¹¨ºˆW@¹xöÕÇËBëá»ÿ¯³e<±it<‘—^“ÃLÒüT£<Ö0e¢"{¥—ë¦)CVÃÐ$înXs°a÷k’—ÿÙËäšRÂUÊÐ²ð×¸ˆ05é$<³=Éf?g­ì4”œ§™é|ïãø~‡±õQˆÍ«ª#W^«=¨¬=<ÿÓì$lâ)_ÀºñÙ"tµWöŽM9FÉ•è¢*@]ÊŸ«6vØLº9‹Z•Õ¡¨Oëå‡ù¼žÕØX¼¢)†j(ŸÓ 'Ú$SúúÝqA•5íùš¶üÛúñg4ÙpË®ñQ©9fßdcwŒeµÖ¼×µåJ¶]?ðBuUî¦—	]±æVÖù·G¨ä0¯ÅŸÕð]y+Û¢Û_Û/3˜õó3{ÞÚæô/ë/¿ª½Ü¦]kš½†Ru¹Ò+ýÿ™.öK¹ÝN´—Ïè6ôï.òúÚ¢ÿè¼xsÅz‘ó‹ï¯Å;×õ!ëCÕºäiƒB›Y”ù¨¬{†½U÷dMyHeV…}49rŽ\~ Ê·ÅH¬¡Ü™WåzEÎšGQÕk<:ÚüÊ®æ^YóÃ>†½tÆ¥°iDôÙ2§ˆt*Ô#¹6á3¾y)r±ƒˆ[S=ý°và_¨Q«fìñ}I‰ÜQ´ pnn³“Æ2žLø¢xß“ˆóÁ<û®«zH ùë ße¸—s´æ /„™ÿô’×7¹®;û¶¶Ðtç¬…
é2Ùe7:À!Ýâ(k‘”°Y8Õg¯¶?*YàJWÉÜJÖ_A¨¥IY~©ï¦€˜giùá•–£78$XÔr>PqEBÑ§üŠw B„{*o+aë¢­Ä«W¢|·Ð—1axÌ¨•S7fÙÕL´þ‚,ÓPS­ï˜W¾)µÔdö€”º¯çûµD×Ü»èà¤àÛ¼Û+yxÑÅ7YQV¿TN[U±¸ãîìäÚ!Ð3²=nHmœÝp#3³!é×x Üo³µÙ˜eAZ¹+Ÿ2d–»0h±èÃ;ÇwqŽÿ’{Èg[{ÉßeÓW—Mo,›
Cžn‹Ã…Âlá?zéÈ´:xœ…“ËjÃ0E÷þ
ANh”.ÝJ!‹@7…R‚"œ)z¡‡“úë«8vÚ†.æÞ‘ïdû†½nVoÍØÍ‹›P!„Gö¼Y7‹ûÆ…Fó¡ªP±ÏèìVl%ø…rÙÊÙ¼b,ºDvûÄÞË’±ÚëÜ¢Knz;Hc;QßýÍ%h=™>‘+éOuì3? ŽF£µ®˜.ÉEŸÃh$“@Ÿ• ˜æ=\ŠCœ`,$îýhÓ¡D>ÁDÁ5(Ë¨Ž¼-¯rŠÚór‰vrŠrºì¦5—†à’‹{ÜñÉ)*pËw+:‚ì0$Ìfr‚:HqªÒœPÇëøË$11ÞŸk>NMÞI³zº‹zþë¡¾¬Ë‰PUß¶/Â°§xœ•XmSÛ8þìüŠ%7%6c‡ ÷	Zæ˜B™Üå€)´w3½ŽF±åÄàX9KNËÝðßoW’8$ÐëÐIXí›=»+±¿·7çF£,…Ñ0…ÎÒL”Çpy3ŠûƒH–QÎµ(;û{Øƒ÷rþXf“©?àppx·2Ï’l2ëã:©œUz*ÑC.dÁËDöÞ«bÊQµf,g¨¹ßéü”q^%Þ¦q¡óþôtE$Ê²m‘ÒIö\”gã¶¬*2“l)ìbÐ™,úÓîŠ¬XÌD[‚¾žçy5É6˜Fó2+t[^o2Ò"3¡ËÇ×Ö÷›oQ.'¯jÇ2yUg*x"ÊpU¤Ùë®yÄKÁI³£4×Y¸q@QÂÒ,‡ã*MEéÇS^ÂIXÁg"+Ø³Ë!¨ìÁ4ìå¢˜èiÐù·ã}Ž.Ð$wÊ¹(üën9î'Ž—¥àï¤IÐñ¼Rèª,Àƒ–R%ÄƒŸ&!B¸½¸ø]\£‘çbÙPlü¨…¢¸­ÕƒÍ¶·wfÅeŒ3žç2öWÝw“‘Ó
 ÷á¥q.•°®×ÓôžÐ¥uA9n~ÊAØJ2ë¢åÏ¹œtžèÊ*Ö`Ob3VÂT*Í&¢@õ±”9ÄºÌYVdšÒÅÓ:GFçˆ{0q:1çW›d
æ•vÂ'„‚,kN wÍ^0d«OË¼œÄÍQã/<è:ÅÙŒ	š%ÐVìÙOCÜŠÒÎC"TŒ uox©DÓ]à®¶{Ò¶™â¶Éæ½,t)sß¦(ÐP.Jì_Pˆo  @2”$ÈÞ¹,uÎEÊ«\Ã‚ç•€ÞA¯±RÛÍÂZ}Ðƒ˜W
uñŒÊL d
â;¶ ¬˜P¶ýõtc—î%×S$™õØDM`ü¸@L»É±’×=$ÎÃM?àf³x
Í¹˜s:gB`}—™‚#’§B£i)8ˆŽúð™#Ò ç:Ã8´@Ä<á(„ŸŸï€B	üz{}å˜Xaòh´´®¯j}“›’UcŸNÄGÏ)å4ÎpX<[³oŽ€[ô ©fsÄ_i¬‚vŒõø ²4®yŒÃ	¬#
ê8FÝ™¡”è´ ‚vòyAç˜Õn¿”Rã÷{%#&Z09¾±öƒÖIû\}ð×§‡®±jWu äÀX7•H¢”çJqS$>²š® ±çõ[e¹âÂ$r}sÇÎ>^Þúxt*pYðÓðêÎïR:QM­nˆŽ{“^»©I¥TAf«dùatvéw—ô‹(w´íÅµe³#¬ûUK³&ýë%µe³é’VLœ&&Â
YÛÞ}Óaƒ!éc-[Ë©–¥ª-[øaj™ã¸ð‡%u3lÙ"õ4“›Sòm³Í:Tîz8¡§‰4§kñ³àvTÐvÆSÊÊ=Ûü¼^}>Ñ4ñæ(“%e±ø2øj&ÌJ0æ‹ké¶X3Eí^_l¼¯”™ólz¯›†àú^°‹—3¬ÄÓ~a4])'ÈE“½õjàbØô™™æ»X!lE¿¦žNáÀÂt{=ž/g£ëKöÇÙÇ«á`X,Lk¾îÒo’^—x³tg0´)/q6ñÍÜeib²[æQÓÏæàÚ R„a'@'²oÝ9¬p;ÜmNïÖ¾ð«»8ª8–›wþ£‡„š:A[Z2¼QÇø§KÄÇ´¢c\Ë0ŠµB¯,Ç\×3}RËB¯ü÷
¿×íÓ‰ŽNßÔ‡‡”i§³¦i)#¾ûÆOK$Ö€0ëÑ)á¹³æCUq,”
¼p¢³S¯!>×8oð’¨áM8Ü<Ó[Zè­È[9™8Œø¾’yÐV7b"³‘,ö-7x]Ö]\'íæ“zÁEÍêÚS«ÉË°f°Ò5Ð,6ãÔÇ2Çàô„€$©Q±û„¦´GÀ&¦µx¦³¬·M¹ Õ˜Yß’OÝ…ó`sÞ–6DüÑ !Ìí{Yôð/>fµDÛOMÂ«Å]È­åÞû´‰m}Lå7FO¿J™qò#íˆÇW^$õêÝk	{4N6±š7GëÊÆìËÖeD®~‹µ:45ªÍæÍ¨¥‹5R’Gwê[œà¼•@Ç›ùc@}mÄ3¥;eh.qäÒ¨P®iÐš±Lýî_…yîÖ`¿\¦û{ðQ$U‘p¼µØÇb@¨Ïøƒ ÷JÇTð‚ç
/ÙS>Ÿ?Ò^°ý}$ltšàÅºï®DåfÑvÈÇ›7ÐêæÑJÆòyåÙŠgM×ÿ IÎÕQ¿Sxœ•S]oÓ0}®Å]'PRe+j( Ê‡P¥¶B´“&²òq“¸KìÉv¦´ÿ>'iBSÂ yqì{Î½çú».¬¿|¼¾X° ¹Â‹yˆ\³ˆ¡|Ëù†¸ø nw’Å‰+°aôb4‚µHYÈâlhâd–ëDRŠ‚{2ÃÐ9O¼wªF"3H—œ3¤yˆðZéÐ"&oösÍRw«&ý6–‰I\2ï.'à39W,æãc”Àó,óÍ:_ŽÉyˆãËÙ5½œ¼ŸoèêjIgkºÞ|¯>ÓõüÛ'€	!J{šPè@ðˆÅ4FMý½C©˜à–9U”–y ¡H…¿Eó?0«SÔ‡=”fÞVH‡ôÌí ã&Ð™dpç¥9Úäé‰'½ÁÝ÷§”ÿ˜€Uîÿžô¿•FSdí+9ì'Šfo;Ðöv7öôˆY•k‘«£?ùEÓ%¿£í2y±ƒ7°ºZ,
…,ëì U/Å@ðÞ*¯»ÿ¼É`ÛæÆ%ê\rˆ¼Tá´Lõd®†ìÀaSÕ,:òí·eÎjÉ„”Æ©½NÛÒâù)>ª,¬,tì¡Ò\¶ªÁÿpWW¸*x8…“Lx‚©êÖìé©sn4þ}ÎÝ·!:Çwxô,Ožú#X]Ä÷³xœmŒAK1…ÏæWõÒ†vWöhEZôRPêÁ[ØM¦»Ó¦ÙL
ûïM„¢ˆs™ÇûÞ{µ†ýÛóÇê…,†ˆ«Ã t ïáu÷ºVµV á‰?§‘úA`nÐÜ5ìÙ“£þ\e^"Û$çžGíè¸rmeSÚM¼&-ŸUÙ¼¥`}rQ\Çì«áñÇœ%!_#‡j˜)U8\'Œåp Þô(¦›Œð	ƒ¹à‰Ã<³(eLV ôwGÌZç¿T7å (œpZ~‹˜º¢³lýqÿ[Ô—Ö'\¬ÕIgˆ·›xœ½ZéoÛFÿ,ý-ìˆ²ä+AøÚµc7ÖG{Ûtƒ€ Ä‘E›"’J¢6þß÷½¹‡êÈºõ‡8&gÞñ›wwvÈí/ç{—Ñ&9íõCšÑ(¢Ù¹êß5w:MÒ!ïÒé<‹îÇi=²¿»¿OnÓ8
£ûÉ6¼Ç%§³bœÂ¦˜¦I…évlgÉ8øW.WÓ	¬Üi6ÿ%ÃxRÒ‚G“4Ù·ŒgaP½ £ýx˜&£èÞzv4,æSº=>’!E	%·ý÷×ç~ÿúÎÿåÃÅOý¤%EK½?ëßÝÂ[ÿì÷»òVï»:ýèÿvúáºýÞ¿íÿ÷‚ìíî¿n6ó"(¢!¤iL
Ó	-²¹§÷þ=-ü/A<£m,/H^d³aa/""î6ðCàg‚¼Ú÷’ŽF9ìDEW?Ì£?({¤Ö3¦QîçÑ}BÃ®äð§‰Ÿ(ü¿Óð¯ùg³á`à²tâæ=4ÞaœSìs¶¥÷ré1ð:l6Ñˆ´¥´äø˜ìz˜7†ã #4ËüI~ÿ©çgÜØÈ“iÄFm±¬[iOZ¿"°äkTŒ.Ç»$I¦Ùtšf·[ÈÖ c?¡_}À+Jî%/IÑb–%dÄ9ªöÔl¸° bZÃÙóÈ?ËvlK: »@ÎÀHèS(­– šËOH»ˆ{'hYÈ˜¸óžj4—„ÜƒÓ4#Å8HÈ ?ž3üI{cnü1ó¶[üˆÙ»Ä”üYNECiš°iÏ°cAìIŒõ±m9ÝÂCäqM:j£¡¿yí^™Ø_eàÃ,Ís@ƒ¼yMX4`š1sxðÿYó.iñ=¶ùkÇØ˜uªÁyZ:º¸Axž3°¹£p$¯Ýn3Ø:ž°Ï8Á·œ×E-+ÜTpÇ=›à¥{ÿ¹¼$GGJ?½SlR¡“>â¬J¾ŒôÁïÇ¤W&¸¦)’EEž0³[föÀM@	áô}RIÖ•rÏ ³ŒúÓ ËWË<gÞàÏ|H~j*\ €o¤¨TÒY1-\˜ÏY~r’<øA–ó[àŠÿÈ®ák×/]àOèd@³Ë(/jM‚‡4óÃh5„ØšUùlàsaÌÆ4™Mh`dA¤ù³·ã ¬ý˜óæÄ= KØÑj•ž'Á)ü~$ú™>ýÌ°O•Ÿc(d‚ŒÃéOÓœ¿çÎðÂ4CñKú­mØ¦Õ%›XSp¿¹½¹ìŸ÷ß_ù—7ïe(k·~²bÂ¹•6IX%ÅR™D<®M³tJ³bN^"Ý—d#oéÇr"õÙŸ"Öh¡<„€ƒ
§A‚%ïB}Äv_ª®l©SÚ VÚÏÅ/ÈÀj3@O¯9:bÏ“`°"´h 
Zà(bV=<n(gQñ|'ØÒ§ÕÒ§©=ë‘É½
‹›?úÊß Š`ó¬è:{@VÄC˜iˆ•¨Vf…Ñ‰âU
t¥µœyž` ´tˆn™Ï7íð½öQ«Tb€ k§™¿Ì›g5Jhó1Mî‹qÛ¡¦(†Ìýªe[Yy—v–úaš¼TÕ)Åô[4ˆ)Ïfÿ?£eÚ0çPIü“V‘ã£4…^A" m÷~™	–D[[WöW„€£ñEá7â]ñ
Ù)dô¹Þ•Õ*¦{©Fmf½òT9ÖlKQ™r=€• œÔª!ýdœrí~>4·N3ú…oð­¨Œ]îb´TÅÙ`‹øïqüM‘±úæ§€Öá·S#oÄ®2[	îu²üdÚÎr|DÜ1·ùFÝ‚½Ç‡|#“ªzôXˆÊ—”ù3VØT¶†!	™$,cœd€ÀNþ^ô*x¤à[à‡e›èâ˜MG”ï¡€&‘`E œ¦ÐÈÓÄ~Á$av…Q‰W¥Hâ` ÁZ?°Oº‹‡]±Š]bºeÕ(µÖ–èèjÞ®¢™¢Ò€=•vÚS§íó}nc(Ÿ^—(±¸‹»8èÔˆ;K!´A°ËzNÖí¤[ÇnÇïX=-æ‡: ýªÇ)º¾²MZÓ]‘½\‰ˆ&ºÉÂñŽŠ:¸UlBG:kïßê÷šóz¼MàIæ+€xÆzXäÒ5Ä´Ã,â¾'/Ješp#{¬l^€ñ%ÃÉ´t«ô.ó±Ê¯·'\ÌášbòC.hýánk\íº¡<:•r5ü2¦é›rr.`YjqÜÞë]FŸh—<t‰$Ï$URÛgš»¹…XŒÑÒÒ²m#'?ax×EÛFþRLUÁÆƒ&8@Ì…®Q¸9J7£W•¢Zk¹€Äõž€g”Q*v´mš6u)¡60¢œæ pá#9·Ë•Ì`e+°…ál•-¸£…±jZHÄYc`µU#?òXó±Æ„ƒ<ªÔë¢±uK«cÍ¶KÅ);âÁs„-—FÅa°"ÛÚ›©–^³áNdqÔúÔ4²ß¢i.Ž•|¼çdpqVé²÷$ù2$Õº0 a`­R¥#Ã¡~Âîkœ7‡q:|ÌYÑnÎƒ\¼‚7bžß;	ƒxPY†gšŠá˜´C>yàµ×¿^]øw—Ww~÷ÏOý½ƒf£ábÛXÌ®1 äpHZCwßE×¦¦´„Ñþ
Œ^-e´¿œÑ«½^ÊèÕrF¯MFwƒY\T:íf££ÜÑæØá‚aæaÂùg—7ïþÍ®¶`'òÅËSƒÿk‹w1;„mlwOª\´¥$'ö5#V8ŒOý‹£cIkµaÏ98$9lÈFHøDcî]Œ£œÜI#Àh»-[à˜PT\Ÿ»q:ô£‚Nˆéi7|„:/hn:Ï»4) úaÙ-Þ=*B:bŒiBìßâå<„lHSWXVG‰z¼÷žßƒ˜ÞŒ»ü]:K¬»Ä¡@ArhN³/4üôö³%Yä †ùCAèûžŠÔü—¾tQøà?ù§eÛD†±UgÊ8t·žÊ3åîÒGšZ½K3Ú]j¾ÂÈ(þ%ÂÚ0Žz¬s1·Fwå_dÇ{Â¥+iÌê
ÙÞüÙ”WPK@î¨£²—WN…ÁUìFkÌã4MÄÃÀW^m>Ì™y5¥¼3;bdÈ¦¢ÇÿÏßSîˆA öG­Äî»iE½[(‚tÄJjÔ€QÍ1ø¸öN8hÛN[<sÔ‹1nV×Î-Òy¬ñžµÂ[_Nòý¬Þb¡U(µÉ¤æÎa•k “*â«Ñ
Úæ Dðd/µFœU}	oKfrdÌYLÀxl-cN@óª)¡\<,óùkCÛ‚vhL0'šoÛ±˜cc,ßrkíö¿(‘&ùp8õå7+i%ø%Ð[E×úNÈ=ëÐñEŸpeµj[ÐöÚr]—‹Œ2êT¹Þ¾>¶¦-©Öz{ùyò‹ZÃW¤2ŠÐm+ÊÁaEj9»Œ*\9ËófN]Œ6+g´e„2dÃnéGÔflX
q9‹Þ‰™Y×¦…i×A¯A‹/è‡%–¿× 1¡aœÉ£E…g}½ŠŽ ¿ü`ÕçŸœò+Ð9¤wàê-Ø×züýŒÜJ½$þXòª÷â„wÑ{„Ì|¿éJž
ìZ›£sU,õ£P»¨è‹Eå++Œ,XÔØòï0Z¥`äTa¡>ÐU[&|Î¥°xÔ‹‚Ûá8Xûp3xø9ÌŒ|®6?pŸÖI86%Œ^*÷ËÖ²ÛsÛì+ˆ–-¾=Wëö5R•…ÇÏ2°-ø° LCL…„9s
b[kWŒhØPK«7¦Î X$Öº£Y•õIpÇ<
{e;%ƒ~Â>tÁÂR¢šÒ8_·Ý¨i6X»Ö¤g»zí]ËÂ&¥nWsá¥	FÙ,MÌ)v9-ºe[•ŠÔû†-edìîH•öµzpuŽuˆoŽŽ%˜ø'¿Ø^Þ.Ê¶Æ¬¸ªB™£…ÿ^$YØ¹•xœíYÛnÛ8}¶¾bÖ}±ÒÄ±Ô6XÔ›`s¯$.â`·Ø ‰¶ÙR¢AQN³‹üûu³$ß”4Z´~ˆræÌápÎ’··aðþèÃÖsiÒ­žGÅ†ŒÊ·pÞ»2¶7Ø€C1¹“l4VÐrM°;¶Á™ÇF~çµÉ~¤Æ8‘žh{¤íFÁ˜üf–®ðÑrÛ0^°Àå‘G¡‰C¾ÚãfalL‰G¥3^L$ù&ÄýÜšDáx$%¡äD7Á2PÉÈUfËéÿˆÊÚqL©™ÎÉ'!»ÆY¿²òPx´Ûhloÿ@p¡h †mÃ>ç Ô˜J˜áTbH¿
á©©ÑpÇDÂ‘dS:PDEáµÝù˜BÇ£ã—dÁZC!~!þ„Ó·Ð|G	Wã»æ&47öœÃþÅÕñ‡+7¥Ó4Sô&ý["é_Éš®-#è æ3ŽJ@ºÓw‡"PRpŽ)?¹Lý„P\èm˜C˜Meƒ0&šº¨ÄÅ^Dþ•Å•Ñ)V„ñ,ñt’äß1Ç—'¦Ô»~³“9dC —?ŒT$)D!Qã¾‹»Ms¢j…ì_*†-W¡‚•…`Âî®Ñ€øs~|~p|ézÿ·R§`êSGQN}ªäÃÅë-˜Æ073Çæ ãÏBŸ(wó[­iv•…iý*Ìï¸0w^c’ûÔ?"Šœ“I8©JbF¡>FÒs€“Ð¿ùDq›ÏÄÃYq_eïlÊ;]õ˜xâÄ0§Ì¸ê.rÖÛÿ@ç\V¯¿©¬¬g••µVVöÏ$«ê^[×öë~B<¸N”å^ˆKóE¼÷RøyÑXmëçUÈ{)<¬£‚Ýç®çuçói_¿Y¯Üë("ü½j¦¼NÚžJÎša¥Hõª³ŸUu¶V]ù:&&‹nc¦‘.¦‚yP"àdæž3!2¤xF:ô‹*/¶äŠ#×ø“|Ò"©¦ÑÔ¢¯q@†Û¼+Ù"l/É`ZkLP|kiníe™EèföE<¯•3E%WŽAwÑ) ·Nrt9œ-É¶ö*›–É‚9Ó4ë‘˜;K×Ó˜s)™›­M¥ØyÖ³(Z—'âØ¸™ìvTÃ*ê)É]«Êi9q?Oç‹3ý6uÑ'ÿjw-˜¶l·Ó	]æ–À^¾4KtaåaÐŒ`aÙˆZB¹fuÈ2eM4Ígbµ©$mwoÜ?H‹ÖskÑz2-Z¿´øÝkq‰Ò’{D‰AõF,8Õwá¸“(F¯š¬	P‚_xÛˆcè{á,ÆB»Ç*ÜLV*Ø=cûŠ»FøÁû—ýÜýË^Ñ¿¼‰3kaOÐáì%î—¤,I×Ty0Ñ²EØÊè·iöãz„ý4MÂ~p—0±}uªOp˜Œ||Tê¥ei^æž(W¦§@uyÍ^È;+êºNútcúŸd{ÜrœÈÚÉð_óY$ºoí_™óŽZ¨«µ…Ym¹+4\ˆeT¢ø€VP_„IéÔ…™½×Šû•~×UZål~EŸJÊ‚™½ÙZw¶Äq
ö…Ó¥:•œ/l­ÊÎî‚•jé–é7­r>â©†KB
·ña_ë„®çYívcÇøÜÍá¬ZpV8IÄU-<{	Þ}ªë!ø2A'?¤ÕRó¼\ç_ÁþYr™a”bqDé-½î¤ô—Ì'dµºô¦§Bwt}ÌÚë‚f²ûƒþYï¨wzîœõO¿÷//z§­ÙÉz)JÇØVÛÍ8’ªH0$<¤é¡’ªœ'iýÏuÂÅKS—øô…ÒÈÙ½‹±P	¨©YìfmMSI¼Mg?Ðjë^È',ÖÊl–‚K9ç4H?b¥ à5Ç_LG›?þ*C$çÜÒƒ®@ªpÐÕJ¢‡·Ì}ÌŒuFBuÀ…û9Ë¤Gøµ¦¥ÎÁØaì‡Â¼Zóª.ÌX„ª0ÅpÃ=}>¥•xæ'×S§M¼QPÑÍ~+áîO	ãä†ÓÖU’=ø•Àó„5rBXßrÓö±T«O¬<zT*ðRg­y9ªvd#k!XíØAîÿ8`i¸Œºxœì½ý{ÛFŽ8þ³óW°¹§­µS½ÙQâ¶÷‘õ’è»¶¤“d§Ý\>²DÙÜÊ¢N¤ìä¶ùß¿ æ}8¤hÇÉv÷ê»Mmr€Á`0 ƒøÁZ¿œ†Ó`ÝY°LÂy¬_y¯§•ç¥ƒh}°˜$ÁúÉÏžxÏ¼f´ú¸¯®owºçUJåÃø§î½bh´ôZáU˜LÐn½ŠÖ“$Œ–^´öÂ$ö&óy¸Wü0!²ñu{«utµžÜxðë|^Í“»É:8ö>Fo:Yzë`ÆÉ:¼Ü$`ò&ËÙÑÜD³pþŸm–³`í%×dÜÄ^4§?^÷Î½×Á2XIƒÍå"œz|°>Þña|Ì¼ËÑAFœ¯bÅ±„ð~íÝëGUA¼Žs‡º;Iòµ­nÈýèhÖðÕ(g^¸$Ä×Ñ
Ft(aŒwábá]Þ&æ›Å>¢€ÆÞÛîøMÿ|ì5z¿zoÃa£7þõ'×¼n†*¼Y-BÀãZO–ÉG 1œµ‡Í7 Ò8éžvÇ¿â:Ýq¯=yþÐkxƒÆpÜmžŸ6†Þà|8èÚÏ=o YÄÄl{s@vgA2	rÞ…‰ºÅÌ»žÜ0ÁÓ ¼Ú&Þä«àä-¢å+F{áÜ[FÉ¾w·A^’(=­®fvßë.§Ï÷½Ã2´š,[ ïG	´pø;‹(Zï{'Qœ@sâZÃóJ•r¹tP®–ÊûÞù¨!çy°–Pózkaùqâýu³øm²^†ÞSñìùoüÙÿ»¾Š“çÓèæç}.~Z8¾7‘÷ã~y~e6üÿ‚ù8óüãßá×ç0ÍËÿw7›R[Öt‡žÀð ™7˜lV8-?^²ÏWìôÃ“ÿ—ÓÅfÍâdFÏ¯6­C¤Ê|6[„—æ³p™$W°ä§Áz½´.ÂPæ³ùt™,ÌG›%,’>SŸÉ70Šë§Ú³åíM`>ÚÒW‹ÍU¸´.7~àdë/6I¸p=G´+`H‚ÏŸüÇ,˜‡ËÀkÛqÛožµ´¶Àâƒ4ø±Ç‚·Ã.ÀºkïìÆáÿÑ|×÷7õ=˜ÒZéåÑžÖ²Õô{gÐøüúóGoºñüÔmNû¯	©ßjŒþi»íJJõœ–oZC½!l^hâˆÊŠÙ´{Óö/þY×oµ/ºÍ¶ÖoµOwvžöWÁ²³><5 †íÑùéI;ÔM½Ä~\M{ý±ß¸htO'§mjý¢Ã~ˆ´Vpzö å<¼²É£]t[;¬›òôÐ1pxïWD‹Ë—GF÷Zh Íáå×lôÊ¥2Áa@UW»Jª]ÅÙî¨j¶«T,¥ÚùeÙ²ìjY¯Y«nŒªÄx˜Ñ·±¶­ÄXsÓ¨µ¬È–•--«žþC µ4Èßz‡Äól#7å¹ e÷`-¦¼È`Ê¡bŠúEwH%âfÓa6›^T¶VKƒdv˜É¦'aõ£lÎ¾¨º	Ë)G@¦V8û¬PPXËÈCã,²x³‚®}°QØÿùŸN…s~˜×C‡ ÈQÎ\–ã×@ÒsYvª$=—åšK-ý2:mžšâXrËÖaÅÛÃý¥Ú‰µ-ËÍhY‘--«©¾_ºÚ½HÓèä-ÈOÃnèÔì/j6Â²“ÀšóDË-aZEË[ZVEËŠ³÷jŠÊÒÌ¥ßª‡©Ñ8Ö‘ÞNS®ëåF÷ÖR)ib¦Äò°TµvËÖ°{–Rc@ÿku¯åv©ÿ”3€º½q{Økœ¢Áâ‚«duV&gÐxÝvÕ2iÌ«g€µJy`Ö¤h`ôÛhÜŸp•,¸æi»1ô£Q{8vÀÕòáÍ®‹ÊzXfh§¦AÊ¥,^£×¢q9†e›56;€‘–®³—9ºacôÆoŸrÀë™àƒX[ÀaÄYà·~£9î^ _ð¦;÷‡¿¦À+Ùàljo‚×Òà]Îºîf¿9>úãö)c£	^ÏîÜ™Q¿go€8=\È>1Ì ¯ä€÷F\Æ²{¯å€w{¾—ú1Àë9àMµv3ÀièYàãöÙ€‰zVï•<ð‹ó¦¶,]àµ|p¿ZÝÂ ƒ×óÀBë7+*
QaÊ°¾ú+¹Hš§ýsP£–ÑŽºýž¡9j¹°8r—¾©çB½yrw¡inÉÇ›IkÕ­ï+[Àhˆ'}ðq3ÆY+‚ÀE°ô©suk¶ŒÞ¸Û8Y3,Æ›©šÏ»šoÖ"kìD
7Û·Pm{OH™Sß38ââÕaä€²`úMËH•B5d­ä¡²¾’G[Þ6:-£Æš>:kÇÔïYcô×Ýlø{¶ïþûIZÑfüdÚU©.4ãio«áBà]ØÃPJð^”¦©µ”ògc³ttÖ(]Ú˜æËž0—­¡¹£~
)ü|¶›
ÝM‘Ó|)FRÎæ‘E—î8%Zo–7Ð0.Ò2T‡O«µ=?Ðcïux§Ñ•×œ¬&—á"LÂ ÖƒÔŠùN¯Ûl!öÍ~‹íÓŠÕÛtÎOÙøNÛ½×ã7Bµ¡¦xéhþ×ö¯ŽÖ/3Z7ûÃ6Zºir%¤ýË¸Ýkµ[iÉÃèüD/WYyÃHd‘…#qCTsâ†©9`°aóÍyï¯¾rƒÈÀéonâ$º	Ö^·õ}l‡—šç Ågí!úÝ¯{;r{*g·±k`Pv«á6øn7£÷‡²åá––5Ù²–ß°.ÖóV%Æª…±Û»hœâ’W Øò lRØ á!¯BSùúOé$”r!<ûË@Ì(lfÛA¬CÂØéKkÞÞ0Àc!gÀ’©(æ1éj¤ÙÜÒ¶yÖbÂåˆóÙQD"ª7¹	âÕd*	sRÖkœµGƒFÓ¢ŽOÖ‰6¼îrå]:Xð¨éˆÀi @³ÅTW$Z`ã4fáˆˆ¼y´ó’I’ZÖ„Ey:[Œi°$xŠÖ
'WË(NÂ©—ŒùoÚ,‡q¿Éul’:ØËÁ¢‰DÛÁ0ÙOuñÉk«K„#Ä¨ãjÎVüë »uUF4ª˜ÜdG€çË0É#±sŽrÍ]úà<¯%3 a§‘ÝN[º}]rCÁÆg_üQl®>;c­:[íü‹
‹Ü»ÄÝnZåG{ÙMIdÃvƒMŒ;Þ¢ì^á ËŒóã`Ü$Áú£G'ä”üq„KÌš,`ùàAýd9KéŒEµÇ`7âdú½~/åÉkÿ¦?[íËyí›ýÞxØ?=meûJF{.Ì”‘øËYíONûMfèô5×“øÚ›mnVnyT’oÏßk‰[Xz-þu¨9»­X¾®#@»­¾Ú«ùëX®™<ý’‹AªŒm”iD±£¿Ag.¶q~Ð¹óy:D!<yìw4Ï›Gs1^Z²Û 8&’{¨ÍÅ‘¶­£”½«K&Kjsw¥­h¶ˆ,$y“h5ÍãÕÔ² rš?pæ‚Üõ£‘eìà´|6ë« S.ùogl© Ú«#l¶ÅÐje5<ë÷º¸—è]âg46r–*mÍ‘˜fëm¹¤
°	4îžµûçlÆ_º²ÔHGíÿòÛÃ!cY&ænoLç ²å‘k±RS4 u*üÍü†-Ø+…å6<9ýš­ˆ´†CÑà-°î×f– 7çMÙ3Mï6ÁdM7Ãž¥PŽ©—ÐYËjéPA.ÒR™ÑÜ­·¤ÚbCé¼õÓ$¼$÷&Lìi1*ÓöÏ°¡S@RdRo]d”z{O#‹ž¹!Ù,ÄlØÉÂÝLÖ‰KK7Z,"rrÞáKËMuk¹iJ¨ˆq‘Ë‹'ƒö°Óž5zM’£ª#?aPì¨-à]` ¯Ûiã¢Åá³Àf…0˜\¹ÝcD„òìõYO#CÄ:VI.ß¬«¶b•4ÛR‡Ä¼bÁtýá¸ÝbQTv&4Ö)*›ñÐn6~Ó–žÂ‡ýñøT$ølòË)´,_€-„8èm)§¡üÒn|mývÿTGŠ¹Û²]Ón7úu4nŸ9Z¶ì–$)ÙžÆêlš57·Â‚"³¦«ŸDþ"¨VvÕ	Ù^ Fû’´,àr&0PÐ½Ó_³@­àº>	˜ëÊ'¢ ÕŽ)Ì°E³%-Ý¬àN§`¿.àÞÃ;>ïi)¾E¸ÆEÆÅ¢è<[Â„ŠR¤Í!Þ?ïýµ×›5òNgi¨F!…z†Òµ)hs‰uNÄá™¦dv0‰ÚhvÒr7k”Po±] ˜y5o5í`yå]~LÀ•O"oÄÑl÷ËM¸ ;$K|}Ä1ÐO<©äÔS@lož¶B¬Ñ9v«±T¤îh:ÊdáñX%¯WDH¾äQØÛ£ÍÌk$üæ¢:‹è4j †åÄá„ýÄ;pÚ[Yb£)Ü„ýÄœôt[>­z$¤:+‰Q§	¯0=”*¾Ua©ÒÝÖ$Ì±ýaªw~¦,ÐZÃnÛÈ—©¤vÌ×ç°ûYÁã§Ì-¸ªw
ó°œ~”LÖ OaÛé5EgÀÍR/²È·¡RYÂŒUÕL žæá ¢ÃsàÕBa†S¯Œxw³©¿˜$þM´ô¯6áì]Ï{ûÉûtù²²ÿ¾˜à¿Óþ[Ÿâ¿3ö{ÿ=¢'/§ûOÈM¢7µ*þQ[juX§õ¤~è}:fÑ€’fjæÊX«*9A©‰–cåM%]ÊžZá:˜’ð3±“”Q‚Î
˜$`µ/àßôä˜†	›z¿YrOŠƒ’¨œTvUr€Š®N´Õ´i9æ@µ| šè0èÐ	t”täªç ¶ñ˜÷ÀìØÐ8OŠâtn.”­<©Ü¶Þœó%¶å”ØVþÜµœs×z‘ôÂ	”7á äœËV;ÈÉˆNþzï8×{'Ÿ{'÷:yë€*N <ù¤S,å4»xsnêqr¹¼öz­óB8tÈ‰¶¯ç¸g ßB¤·ºgm íŒ–PIÅ$œÔ=tÚ`zÑ!eúO2¬Çìa-<Zà†o6¯t×LÛÇ·,Òí·G½ôÖÙ°¸e"xOd‚³Ó«þ€Žµ±zŒ=*xß†á.“p²HØÙjwt?óüì~ð—ÛÃa(l¹£šòºÝk»M4³:êÖ¾f íNû'àöFâÒIGÜøÌ¢A¦teˆÝj:hŒßø£ö 1l€êD´Oxj7cä¬{ŠÔÃûgÏ/ÃefL"‹ãéód²~~õ¿Î–<¿óÚxÓÿ?éx#"'@]˜à+›1â$·¥<Õ6ÐÅ¹×_M£YàšA
V¤ÒFR"Zò‰ÓÛ:–S£uÖí4qcãíYÖÔq¡Ëj:l^ìp×&XnÞï¤Œõ;ún¼QÅÙ%F6©¦ÚXîöZa‹ãfÞ¶[Ûf èÜŒ‡Þ¨£§Ps»ýY£wÞýü|ˆ12È ‘î<½™,7óÉ4Ùà|?\Î£§ä¼Ÿ/ÃÿÙ´ÃÓv…–îrr<wÌ4åÄ‘ªP¨A&§Ñ:ð1jŸ]2€Ið ,0‘øÐi
 Õ{þhÐÝIåp´X×À“&k×í5xòƒv2Bâ€¶ÐxxÊîÍÂx¨]a2š‚ì6¬¶•’uk}‘q
‰‚§ó0¥OÛ*Sn«éu˜±»ò›fçKðË¦êHú*H(?"œÙ$	ÔÚñŒrtÚ³+¥)++ â	u^ ÊªEj –0§,v yénN °%aš	 ¬on<6|ã¥[Zsüä”¾ÛùÍóá0í¾ñŸŸ¼Ò¾hÈw¬†eÙpÔ¸h;||Ñ°¢ÊP>˜BTdE‹jüäUŸ|ò\´ç˜‚74:]pOÅ aÃ“.,©±+Žà4ìˆûvÐk´(›³LVi°{zÒðA»–ÂôšýV,ÞŒjÙ¨Æo`üoú§Y|%Øš‚eÆÅ°Ýì_´é"Ý¶~ìEÿzŒÙh6šo2)'Ø#«Ì›ÿ:oŸ›1*'ìKgV&nö`U4AÍçÂÖ]°,«Ùïuº¯Ï]SN°/,&Ø9gÝ&ÖùÙJsCÁ6F¿öšo†ý^BhÈì™`O4Øó1À!$1v®C»a×&Øæ>¨Ê“`Ý!<¿±ÂN	K‰7ZÓpNA[ŠŽFýÎøm¤h0ì¿90ÿÚzŽì¨^RDb™¶¦¶2§®-<`^ðè4ÙŽ,^‚­¸ae¨©é–C‚µµ…®,zaG˜ôÆ[þjã„¡íÈñÇÀv÷ä|Üf7]±]ÅjGr`]ÃÅv5«Üçí±8Úz(€±A_ÉjH	 ý×#»ãŠÝP†0FfÃZªasÔµQ
I7DC„Ój4Ú-a’©Ò"í–4n¤”´PQTºZâû'Ý8aË=³çº”j:hž§.SsB]X¹Î•Ìâ”ÚM;o™A 3•“j7=k·ºØôÆ`ŠÆ‚V÷ŒÒ}›±Žh[h%µÎ¶Ž‘Õ³Ú:„…Ý¯³Ÿ§%Pœâ/6D{Ùj\Ënœžâº«1Ñ{{G»­ÈHµ¶Óo¦–ãé©Ý˜Zs÷|457¯–ì±u¬QÊ>Ö°ÊjŒšÿ¢¬¹¹ZS;ù—·uÑ‰d¦”&´ï#Ààìü­eýû;˜wý1§“…wÌÂ‰·YbC,8—Ko|ÚD3Þ@4²•¶#YˆNÎ{'©m¾Z!D'“\ƒ¿{äå"šþ{Ëh}3Y„ÿÌRx†)<µl<ëÉà—a3=å5Æš_úC,èÝb*ø4Ú,ô¡ u=_NµÀã: RŒ>:Ð´Û©mò'ïñ´„'ÌçÌãøŽ(¶p¤‚½?yG5Ç,HrPœ§Q¼¨Ø(6Ë\BF­Áy
K±sô1N‚o6I&Þ*XOÁÙÆù1'ô¬wÞ²Ø
ØHÎÂ¥wŽJ(p:ÆÏØÛIÝ3ýâ@ô’çlò¡8¢Æ…n“ˆ©²¡‰âdõBS.Õå Ûü(=,<_‚8®-ðàë9à+5c4[p:MÛ+|õxÐ9æª3iÏX»€Æ¶OM-½tÛN2øÚeCØNDÛID­âFb“0hº¸Éu ?èj K:'éESæ*`ÀW
U”åJlÅÍœ“ÑEÊQFÍÌW^0Ý€"þè]ðŠ¯½ÍÍe°¶‰°½?DPÏ&‚­g“ŒVÓ¡NË\´‚É`1‹„{@1þ²Âjeæ¬Œ{6CM3Ž°,¯º¡wž„0¯,Ä3ÐtœÔ¼dŒí @$º?–EÍÉÉÀvlMï2Óß®ÖX‚•~=¬ƒ˜c¯'– æ¨í–J‰1+ºzm 8KJ†‘ºÌfxÀÔÄ×°“‘c§­”ër‹Œ™Z.²ÙŽ›m¥RÊC•Z´í‘Ar»Û¬'K˜Ó NÂC*ÆŽé¬ðµ:¾h/¹^GI²Àœ.Ç–ÝMUÎA5¾gÃ˜¯–0èî}ÛìI+‰Êa%Ûî¡ß˜½qß1{|y±µ¸Q°Üqšú·N|q½¥ÁÛ‘ŒÝHØŒ×áMƒÓ”Õ8ø.Mjï4\þÃJÖ“Òëši£Ôâ|ƒDw žðø(ÀÚÃË«Àá¬qÑIa¨òù$Šo4jy7“¿GªÔõ<–ÁÑub©XXÂe.–A
	a©™XVQcÈÆÒvc92±€‚@C#Mg|zž²Ò«ÜÆ€—ì.éH\kV¢Ñ|ÝOÃ•ùúj¾öúwKèô:Ô‡øéà"M}í%ã¦+Ñ!Ž û€çƒœ¦-¡82Q k…`Ÿ<;ƒ‘=ükÁ-ÓSÇ‚‰cž––8VÊH;:Ti`uJýzAÿ6šû”q¡=)³Ä±#J«QÂY¹ÿ–:û2­õ‚RÍZû”?D‰cÂ]‹“õfš ‰‘»éû»»¾»ÛoÁÌ÷÷ö(ék-ûj‹è
}<˜6²ÕÍæ.yW>z¼³ƒ\óñ\ˆbQù¨˜g#ºÜ,/§ïêOµârÍ45Žj‚ë)Âp­”å–ÙP°k`õ".™"¦Dqx´ÕKÃÏ<¼ÙâŠ¥Á7
üE¥€f³>ž­6C½”ï‚ÙÀëøvV~W•óV/cît°¾Uíro–›™Æòz­˜Ã–BóÁ@ó²RÌ]³ÑLnu4à¯÷ÕÒÓÕóÜ´ô`4PX@9Zz h¥¶Í9K-ß¹Xs„ Ã¥rB&$¬¸”ä$x5Õ†·ÕÿI“|)¥ÜŸm®K^+J^Ë‡/òå5¾]ÊÞŽJ¹N’ƒÒXÁÖ·ûG.Z«­G/S´ígÓ©¦ŠÁ¡*àLÙãM–›cO]¯ð£ È¬Â0ŸN†—G\¨Ô^p¹º’Œ{Y/â=¹XWÓX÷2Í:sš%–àle;Z6àz+ÀrÉác¥F;xYn·(E ž6ÓàeyEöä$‰špŠò¢ÔfFr¨µšÃrXk¢ÓãP‡•-ž` %¤±7‰{amq‚lð;ÖÃ6ÿÇ†Oø£m®K
ßÕä<Áæš+…«…2bÀSÚæ%¥Àã©‡-1×A²%\ îÑv×(.|e»SdÃ¯)˜àmw‡lxX¨ªÿ£Ž=×ód±‰ŠºË	JÉÇô*R0åJ¦ä£wåRTa4¶p\¬nEOà/mñ•ìî«+Ma€³är”ÜþCúœýrÆð¤'å‰92ây‰#¸šs\$”…Äà>ßÉ9'âñ&Aú ©žÀŒ})<®ØW­HèË@‘"¥vT<'1¹­ê9‡VÔyhÅCÍÛ=$‰ÆÊäN´ÁÓi&°óÄ+}Ôäòp4­4/R§f7KágU3"[/§²f¿Î“)ÛÎqu®S2q¸•íté(zãqzx¤…[¾ÑÜeDP–¬‰«9N%Ž®„«¹Yîib©;Õtº"_/ëûìW:Š!]/lóŽÐõƒ3÷ò¥Â0 Ý&3XÆO¢qg´Ýå pÅ#Ë¥ªB@ûmÎœ§I%-¬šãMI,Ý¦c2Ê<Š×…%Îìs/¾Þ$³èniNÄ “º­…çƒ¥Ìc C©+œÌDkÅNé¾ê5¸.Éµ)mGì°\-IÞa’-†^sEöËU¡Ø,sV‚¹Íø@ŽG¨?¥—Q™ÐËÍÅÚh.–Áõ”"ÑNï§\2ëÄ©JÇ)åyÇ)ªSW¿ŒÑJÎó|U'Þu¬UÚÉ—î96!5`\µÆñtˆ7)VÜ ho™®W(2Ünà¿'ô¼CQàFÅŠ_R¹FoŽèßô¤ù’pÐõâÇjÄŠ5;ËOR‚£öÁ!x'äslGXðSù¡rDy¨I¼¦oßÉäæ5XU:"æ‚0•OÃ9–Y½á¦G©ñÉ}n(,êŒá:.ÖpÑ±0VQ/Å'¨Èù`Ñ07äp˜Î¹UùC°ÉÍ¥›ˆ’¿ŸT^Ð1ãyìªExäL-s}¬	ï¿jß|wK¦ŽÆÖÇ!D¡ ª÷øƒŠë;Üš§üÙÕl}¬ñçü¬gÉ{½ˆ.ÁÒàåNß¼NÝ†1Fyz¤’c™H–²×u›i`ù“Â²ºœú7Óc¸×ÍØ­ÅÝ$P`Íhä`™,ihKÕkaNc6š´üm,5v“îXV7á´¬Ð–Cop|)gâqb©XXŽ–Jq,:!Ë¯O_Æ@a´D@dÍ%¢4–JK=…¥²K5åe
Ku–Z
K¹”ÂRÛ†å0¥œÂr¸ËQK%…åh–i,Õ–Û°ÔÓXj),õmX^¦±¦°¼Ü‚e¯ñäªV,±©ý¢VçÅ€ŒŸôš†ÿÝÌBädXŽjB=-ú4Z•X–Ùe‡SßÄR/1-å Ï\ÓK	ayyDZ*I†–2h·€i©{ÐBZÊÄR©3-uŸ‘–’hèÈ¨Fú¥œ&CKXŽJ„¥r,:!|D/ŽýTd¦uB8–—C?ÂRµ±TJuC?ÂRKa©ÔýTËa
K­dè§BXŽRXýTË‹–C?ÂROa©×ýTËK†µuýTK¼|W­¼×-jO!×!žÊ1O3õãÖu•wåZE¬ÆêaEéºr­êPv*Í±p×J³<DšJ	ÿw-ä(I¶xZ4z ½0×ˆ>¹¬FËS/”?æ°‡ßs¬Á</òÅJäGuèß2åóRvN|´ò!óÈ'”éóRAœŽ:=oW”'WmÞ7{ÇW÷îéÂùY{Ü »?Ü“£ÎA`0RðÎy‘ÿý±h	³†M»-ù¶%|‚gÇâŽŠ£³}ïÙ ëc<Ž«.â†nïä¾5I&Çª™ã²ŒˆÊcèóØ}­f”EõKwª»Cº;ú«N•ýÙ·g 1m,!p¼Ã‚P‹¬«$òäéùMpƒÅ³”8r®V+ÞÍä,ÄS†!bqØ©°„ËÕ&(Ê™‰<öþüb²g&†¨1èzwábáE›%øqçÛÉbè«#cØûúto²Y×5´—þiw$®–gÝÅôæÁýîìX“UöLWGõ“÷š4::NS™LÖ(È>ŠE¯Ásœ^OÖjm`ù	ªuËÐï„Ë¤î'Þåf>Öh1ÖƒIrjGXôVNlÔ
ˆèdu§7ˆ3ß6ofÆ»¿8N7ëu+\§°`F<oÚ;þ¼Ø°Á>£g£KfØÀŸR,Tj4{"¼YÐ“|ÆÉ;Ð¢è´ÿOÓ;õ³ï=mmnn>zƒÅd\Ÿ~µú‚WùAc}&kŠŒ*Ð7ù”BŒgW7ËDA¸Ç§—“!†$Q)Ø÷øvÜ¬Æ×xÆãUÀ.ò0Å†ü”N¸ÉÀÑø´(âÖœL¯5ÚÜç=ÔHÿµ	6A¬@\çÐ.~e½Y%Íhk dÐ…!óR¿Žá‚Ê6£å<Ô¸ÝHhì$û?L4¸ßÂ\¶ñËî¼Àß$Ñ2º‰61‰·‡§õdÇÝ³¥¸sÒu®ö®]õôböëf‰½®ˆ«óÌÇ)ÍïhÉÕþN¬(ƒ&êÀcž±ÃŸá>`>9–\§©6 žÞ’BÊè‘ŒW»—àÛìèÖºÎF×0n7§Œ að?jû’[ò9‹}ÊÑ…0š¯”jÍèUÕ‡¦X‘Ž8&ŸMø·\zææÓÒ‡ ŠbånÞ$Ûÿ=,³ÖÓÒÓO$ƒœ*<îDÃú*À$8t+|¬ ´Ë™Jöö,¸õžÁ?ûíIÏpïØ÷ð‹g°«.‚%ÚÆÓh'ü}[høaïØîcº†$ óQìêØÈbx6ÃškÔ ·%ÄË¦B=‡î®’ë4îYäO±>ÕrÊ žúˆ¨Ø>Ÿãéì®\qbËÇ 'Èõ9+4Ì&ÇØ‹`^øÈ<÷ °JR^ç:B„ÃUàbõ£ A©ÐPáãÉúj*ÀŸÁ€‹÷ òâžñ_üÕj±¹
—Þ3ö_7¿Åo%Ø.aB%×Ï¨«~†Ê
³¬w“™µË¦—=NÓH€ô)2Rz9(éÂÃóÇïæ2ŠÊkbú›oV«hž-L<CÝ¥·ë(J@1¬µþ\Â™Cti¯¦!ô£2|–›óDPú±5/O0gáZüú[ð1KD5Ü_n ÔÃ/×›¥	ýÒÊ´¦Ol~¹$çŸwäžlt¯Žj Ëà.C‰/E"Ç× 9ÕYÞŽµŒÃ™Ú ¢•­Ð•J#†}:ÎPXçaðŠ6Üdd·«,åOhó‘1[cóî{îžM&çùÓPB!ú3Qwý+(.¬Œ™;ÿÏ@F6‹$â6ÖQ|1J¡›â`MaRQ_@C±X§°^‚¥P Sí3äE4{š~Ä…8—á4ÇPÑ67µØ¤Ñ'æBŒFG½gÑÆ1/Øa¼¹¼	ñC0Ê] Ó›_ÌÅ_µ®eW¬Ñr´Wkê×CkïÇqÓaçÕÖ?^ÆŒš"[$ã‚dŠwaáÏg‡1uÀ1uó;º‰\uÅ¦KUmÆâ¢ß‹æbmÒcÊ8ÁoÕìˆGÇOø§ÚG„â:˜ÌX*ŸŠëÙZað¼à#JX–Ñš¹¾u‰/€Ä­ón6æÙ&dÔÊÀ“Ž¾|´ÃŸø	…ÂÅSš¿	è&`Ñ±ŒhkÈê÷¢¢u½-SÇ"Ë¿­<„²£Z1ÊjùLñoky½ÛS}o¨.¾¸[áf¡ûò˜ûÆ©îåt3l	~ý7HÖñÅ;p®ß«ÁÃyV–¢”²3’ÇÕÚŽK´ßÕ™–õÑã÷ÚX…ý®VzoŒ¨èTÓ*ü¶‡ËÚ¯ÖÑzTóŸÁ‹B<@rŠ°Á¿¨<>'ªÿšœ¨êœˆyžr/ZNƒwÕ£ÇçRíkpI[3jÍær«öËçñaXî`£6YEËØÞ[hG2\q_Q±1y;taþØü»¢ý=×1Þf›Ä—©ÑRšÊácJ´œå6¡›ÃÚß+–Ézãh›5¯Yj£ @„\X?ÁKÁ9ï§ì:‡bé¿î¦í„Yà´vj²¢ùÞðy¼µ³ÜÜ e´bYùØRò CDªonð®.82GW1Åù´NVÓ8H4)å,2™ê!Žg>˜¼sfî
I€Å~½öÁ\‹Ù‘ó›(NXÖ¯¸#WýXò„h}¹ø-ÕšÒš©­ÕxzíÆŽ'AÞ›0ÑúIº:R€¢KdÖÕß(ÁSðYFow6ËÏbÁMk®x`6Žb7úþŒèZk<° ƒl@¼6–5˜4ÌñnpK](A.O–º¨Ön1XÞÙ¨sù»¼³qçðw¹¾¼ãù	Á<ZŒ5O/vëKµÚJ™V\+^(}¾ºÄßr±–G’^ÎxèË†ýÌÄÓh…»âFÆÏw÷Û?/gà4°V%ï ;tMY°R±•ß©TÝûô)D¶Ü±Xd€¨yüâ|ì;Í¿¶éC²êØºš×’Î\EËJ^Ëñ°«Êô–ó{Ç‚àüÃ%7¡gíÆè|Ønáç¹îî–œ\w÷FKNn©ð¬¡J_°Ï+Êm]Íüá¹/<kÜA0~`m°ü	•'®
™™0pY ÓVïMð{—¹’Á]o‚µ®lö‘¿pl×L²9°lïOÜc`ÀG[€/ó€_lžæ×· Ïò€_:&¤aJ©xÜpö,E)\úwárÝ»€›i!©¼ÃdÅ÷¹¢Â€[¬ÂæD“¬ßÕÞc¬"])QqÃŽûQ-E>JˆûÍ
ÑèDŽ#†ã¤ãäßM0Á‚.rYÙ(Ž&ÃÑz‘;DƒO¥LÆŽV=ÍÆ*²ñ¨ [‹,nåd£wlCãWóþrÅb$ÇRŒ‘å*ãB¹Þ1¸À‘ãdù%GÒxáBRŒ•åF=ÅÊZQV–ÅJìz\n®h+Õ{uŠ'XâÁŸŠAƒ(èt+`{ü.º›ƒý
Øwj¸–Ñó*q+Z¸™ÌEGŒÝ¥ ÊÍ¶Ánœ9Mp«”š«Cœ«V‘¹j•Í¹’fš•î†n›tK`JÑÆ»°np‡è¾‡I…›3ØT.—Ë£²>¥ºûw¸gç^Â5BÆí	%Ç¿åÅK®[+.ü×a>þºÿuXÿz¶þ²E?™èñ¹ø·Ð_®;ð[Ä;ñOàèSl1‹*Šþ‰y7?«xˆÇu35ÊÃô›åL¸ëeô¡ã¦S–ˆ‹ã'E-‰±Û¼9ôÓ~ÂËª‘äwÀð#ýXâˆ—2Áÿ´cÆ²'?ïvþT›iüüK©z†NÂØ;/…âc)”<ü5â«¡‚÷ä]ïs¬¡âäág¯›É‡-òS+ãüb‘ÂÎnd7Y‘“þëøÃLµ&ðÞ?ÊÏš|Ù"=ÿKÀ/JÄ8ÇŸÇù(Ì—§×	ÿ!òÇqÇ=?BÒùòøÒÁŸt?†%DÒ°½fR–•ü4`Égô ËgÂ*Õø¼ÎL¦Æð#ý¢¶ÍXU¦áU½Lú3ðgL4ÃßpãÏÑ?2+Ši¡|þ ~„Hß8Í&ÿ¡¬üâ‹Ê/Î!þUÀ¯ÕŠqk :„jÀÚ0lpûÆÿ”O®:XM†E¢¬¶¶Yó®ú²’oÔüuZ_ü» W®”ËÆ—ªïo~ÌJªzš'.oq,žëa®ù ûCÅÆ)bö†Å³Ü?òBëkÎô%p;ÄKG|YÛµY¾üÕØ@ o¨[J¬6”^‘2·¯&»ûÑÒ¿Ž6ëÔä*»GöE ì'p¯qmp;ÎT¥ÂkÖú:Çxš©IóúºÃb»`ecEƒôÂSö–ìëŽb§ ²À÷±j>8«/¬žƒ
À¿^çuÇúÂùs bÝ–­¾x<1C$¬¾´u’%…x¨ïNéÞ¸“cÈ†£qÁ¾ØÔFbö§ìKÙR*b\ ¯Y¨Ã¥˜Èú2Ö x ‹‰Y}Á|ÿæ¯1U-pgØk¹b¬/ðÀ“ vŸY}aîÛ2s#`}óE ²fïÄ­ñEÇÙky™×›²§e_@«Pfv”?•¤´m¶WçKV¥SIk™PV_`úX`q=ƒ½!»CeÇcM?°­Ãl=Ç°³Œå¬lzMÏ@ÞrÎÙS°ÀC4^ª†ªþëö½¾§Ì< 6TR¼V Ñ;²/òI½eÆ7jÆú"§‘éÃS:"ÞÊÃ©¨;ç³ºs¹~ò0U¨.ç'k\dMçëÐ”y4¦ÀƒúÂ9p\¬¯zª/(2.C6RV0ìB®p°ì+1H,¤KÒ»ûâ†$ÚP+PTAÄ0<^ìØì«¦ìH´¡¢¹7ø¡í1 O9Æ¥•µR}‹QÉúBB[Û®Ìãá'«‚W¿9ð›åÂß†”—IùÁZGTåb?X›+»¹]l¡ô¡YÎi~íí÷¤}Œõ†·7¯hÍ+…-éhºÂ¢+,Ü"ŠÕZ&5#WÌÇEƒ&ñï&!;¶ÊXOdR€&(ñÞ€‡÷¨S³Âºàn‹ÖÅ„¢Ùê¼T±ºhL“tYŒT˜[+ÉúpRèxñCâ~°è¦ìê‚;4Š0+&cvQ“£pÕãpuAñ,|¢åYçÅ¯Ê5Š¦³…Q·±âS´Ê8è]AÁrjZ|B[q¬O‰=Ž.ä7M
0ªŒNjU«3˜±Ü-FÝRnŠO—·jÈNµG!¾Þl½-W¶uQÝÚEmKU«9ØE’‡Ö»¨çt1æ¥ôY^²Þ…c]8F]¼Ì^ÄmÏEv®1adƒfv¡†á¨Ê»ÚÑ6™¢.0¬M·É”6Ý÷<“Á²=Û
÷8ežÜ¸·*^akúl«êÃ»ødUñÑ”^GÍêøÔX%TªÊS-SeUú·C|ªtºJmm½ŽO¾³Õ¡«-­š]².¾Ã†Çs˜È¨Ñ‰RñÜy2]µc¨M}gG™³~²`_lq¼ŠµW”lÄ^¢K,œMû‘ª½”.v¾1ÙWg®·Ñ ¨ú¿ÜÀÞÅ›é4ˆãùfá/c~ÿLC€ãa¦SMä,¡œz†$¹Ò¸ŠóÔ¿¨~[ñò†J)QÞ”æÝü°H!(ò…ôc!\;n‘yÌ±Ñ½ˆ¢íÌL4Üh²k'¼¦R•wvÒ!A<{o@Ì¡¥î×Zô;ÂµäHèBÀÓÊÅLúK*J–‹‚Eùe˜ëŸG‘ÑâW9ÔçfeÅ?øú „Fï=š'¾}(§^›Ç-ú”	™ÓŽmQÛU±i³<Úaògò®¢³w#*ŠûÝ¾bÿ¤…OŸ´`§ön‘ê÷®òâå½Ö¿bGg´<žüÃ°ÿðg³”·¶‡Áÿl`ptÐd²[Óõ”Þ³#ŒVÀÌ^fãÅ*·!ÈZå}øß|Ýå6Þ,ƒ+ú,C$#Yæ6gKZ~KB5ìÓ¹‘Àf´LÖÑb;VQGËí˜a¡ôÁ:™À9™ÝÆë½( l½…³«Åä#šëqT eos3ŒÔi£$£%,“ÖbËx MÑIw¬Èp­ÖkïS‚=¿CÓÌ¿c¼M›¾K6uO Nß61:´žãÕ‚€`sCˆëUnQ²b~qG! ªE†CXô+…
5dafÇ,Â°´žþ/·Ñe‘Ø~½6ÚÄH‡yUM´ÀûíúK{ºâE”H]o¿ÄËº¡p•ùå<!B—±»È~G÷…îadñÓŸV”…ÀžhÕ±ùfhöwIv´^aê^æí¥TyÅÜv³'7ôì™›‡°­—dkèÂŸ¹æAŸš EkUÝÒy8ïY6»Á|vùWó®mwUÃÖ5!'dggÛTÓ/ä0àÕ®Þù™ßhŽý7ÝÑØo÷ÆÃn{ô>ÝswÚ’ºÀé1bÍ}V ¥} fÅôÜñ¼Záx^«}á7w4Ï«•^f7O;YøáÌæ<<§7·ãyœvää`À#ókåÊ‹{Åó 9y8çd¼ }’3Ïâx”&¿@4hv½ö2½Bkí-?9Š.ñ{"Ê×äDúY,¯ß§2ÿ0çxóÝ£Êtó	x>ÞH˜Ré^ðüöƒuçwÃzAoœ]µù‚PT„Â"¼ƒÌ±Ä°é&d± C>â 2ð’êÁÑË,¾ÙÒÖFy0Ý#Ÿ×ý98Fé{8F'íŒcfþ^º«—9úXÛGÃzÁÙïÐ½út‡A'Ãì^0“Fÿr®~ˆ^pöÏÂex³¹ñ¨ ¬×Â¤;ý›8v/÷º&Âz9Òs]n6qâ]²óZ<ÿK"…ÕÙ¬Ûxº~—¡Þ³^0š¢¾…á
¯ê:8¦Èª/«µÜE\é¬ïžc¹WŒãW%Ê*#K%#LV³ÂdÔK½T,LæåGÊj¹}!4‹”½|¡¾>ÏêW—(îÕ¢xY»¬¾.ô²Î"e‡ô¾ÆbaT»F±³—eVåZ«„ýÂsî|‡…w¾óÞè|0èÇí–?lÿ×ÈÜS;Ÿ³¹d ~pi{s¹¦v>oDØˆ¾rX½ßÎwèk¾·¿þ'¶¶?ýuN~¨kû;W ºõášïU­Ø}¶QÎ_fúö÷ ¥aÕ_`]Ë-\}¯¾ÏÀõUÆ°bËdº5H‘ÕJGÿšäðjÃÜ¾ši
ûiö}²EÙ_’†¨Pä¼BÏON˜9ªª:úU‚k•˜¾àz†µÅ›Ö ÃvcÔïùÝ^«ýÚô®aYZD€´H°~µìgQ©g€P™l¬kƒ<ýa¯Àœ•ÅXåaºŸ>‘¼œE4?âÉ³Ánýùj—?£M‡h½/€Ïö°¾î:H6ë¥þØûOæý`¼yå•ÀÁ°û¢¦"í~W•¨S]ËgE:‡Y“HövwùHöt’Ä3÷?~¶g“¨—ë|ÀbuŠà;R­@;|N* ¥ÞÒ"–‚ÃÑP¬[ãÊáÑ{`¸ü~©Rh–•¯LÖ ž‚H÷ÎOOÅãeŒLS‘ò9ô¶Æj€ÞP»x:YŽ]œÔàöàg¬Â·‡sowº‡>ïN¼\­Á|÷	ÆØPD¿ïí{O¿`ƒù‘ÿ”«H£Z¼ãyŒåã !¢VgÂ™ý§BzMayË~ò‚EL•±v–ÆpeÁ]cÀ4âo–lÈ;sNaœÌ‚5ðæé9ÝàC…
Kmæ}ÿ÷ò©Å²!‚‡Û¹)Ê»,Â4šã]ÞŸi>faU\\‚\aóp/ZK6„¾?lõ{§¿
×?z%ÆµÓ(…V(&ø÷Ûþ÷cé±ÒW(y4˜7}nØHÎK¤þBð|j%i©b¹ãé"Šx†UÓˆ$l™MÓ·ñ+v7
ŒXÄ‚ðUŠQ²õP­€vÃ__yÕ2~ˆåûÿ.}ÏÙ@,€k0+°«á{l°ü~EÍñ–C?ÙQŠ B³$Zìâhq)ÃÖ‚$1^”Žé™=Úô0‰ùcL§å4=RyçMR”¹wÈ	Î©ÌêÚip£q8#­çá?HàMpÉîwø7$õƒfO	LAÍLbxk>Ãÿ€^!tBª ¤H9îñyôž¢>zZúðíšRDé’+c5ì
ÎìÑhŸßbUÉobâ¸¬óÌJ<óc„¹_¡:`èVÃ.~¾à»ï¼]ïö+=9(ïí!ÜÓxÍ‚Sç–²¤†úî‡ÿ§æF3]}Ü%6ìÓÄÝ,÷©r˜©ÍñðÔ?ë·Ú§âcø)Ä>°Ù[‡¤’ëÀ[Mf˜SN»7¹ƒ;!Ú8¹˜ˆŠ»kÔeŒ‚w![ìÞ÷{^xp€óç)¿ÿ©TX ˜(TÏÓ\¼„GºƒÇ¬­w–‰®é—ƒò>{¨¯‘˜rÛefLµ‰J<PúäØ¡Œáç1¥0{bÂi ²t-X?8#jËœmÈ$Â•÷;\W?§‰!ìi…§§h!
4ûi>ËËŽr›Ïå&[~R_´¸ Çñ÷ßŸ ÍâžÙÌ¯i8êµþŠ­‘F˜j$íÌ-ëè•F …Åxµ/ÒbüÔÉ·öEJž|‚K™³cR¸oIËž&¸šp9ÄKñ2&¹w×Þ"²¤ØØ²É_~°¦ÒÒjhN	¦"-¡|bK„SvŠñžì%3Ì#ð-ñ^Êš¼=þuêÿÏõ…í^çÝõ.ž6u›m†yÏû†¹V)0-`*mÖ gH c^†àMþôšµ¢X'Úœõè¥F†Þ1³Twø§DXäÇW`OvþñyJÇÈõfº¤å2XDw­ü~+ýæ…±Çv"ÔáÒÔÞÞO&^OnOq-ŽðÍ2`a¹(Úh¹øèIŠ„ÚÌFÆ¢ibñû|Î‡m±{KÁpÆb}§vŒ=¾“éµ­fiŸ˜â½B]‹¾ÂU ·WJÉcäé £^¹T¢Ã[iS¿«¾kˆ§»ø¿V·ñÚûÝ3_Ð×·zú|êe³,¿ìîýNÚsÇlÀ~s‚£7~ëülz5è4º§ü•éà|øºÍB—ÀˆßŽƒ¯|…ÁŸ¶CÐìþ3Æþ„UR¼Öh> -QúÐlP]lŒãÚQz,¹jó?ÈÂ5ë›jž§ûº=*ºÛëôiöûƒ&hë=Zå&£ÿÉxCÊKÆÊ_|VëÞd—5²u©›óÉf‘¸D¬Ä‚Sªqj=û•û®è£ª.ÔÀ»NãôtüfxÎØ“ÝÜ/?Þ*ÈuüªÝù(c4F£öpì¶ÑxÈY`l±ÿÊ{«ôU†pqîÎÃ±N?—ãÎ‡öT‘á´Jë %yµû	jÍÔû T â&¬úJ¶*|x¤ùpàÊç ßŸì£#c#L­¡¯#€Lúš§ýó–ß‡üä=%„ìX`Ûª²ÄŽ R0tíÖy‹©†Ýü(æö‡¿šð]Þ}wÔ89…ßÇ§CÜ>uÛòDÒM„`~Í9Ë|({»ýæ€×ûwÕö¾¤|ØW‹)U~³k‹!Qeƒ9eÁ×£ª»_t4¢^ðÌÃ=ÆÓ¬nKÅqõõ‹ŽÇL->7µmã9dãIgkP²ÆSF
PñÁnÜŸFÉg%÷¶BHó³h‡æ’k‚ÒÜpvÚ.3´ÝÞEããYç ÏÚC”¾	9ÍÌ¨}¸¼¥üKDÝ¬MŸœYÖ|»BZlb4"|¬Uªíy¿ÿž¢9Õ¬¾GñUüÙÚö°Ê*ôìž
kW…9Ä\³Míhj3órÚênóŽ½!wúŽmM‡Ñ¨%ðkypûî_„@ÃßU¶•[¿Ÿ•[¿¯•[ÿC˜níþ)·}î­hL;mËxÿÖ;Ìãg¦q¬e˜Æÿ‚Æá¶Ø’Óxtâ°eþ«X˜Þ¿o„ê_isÜÉsÑõÅ–ý–éªœ÷•-ï«[Þ×Üïs¨;<ü#(Æ,ŸöÞªñŸâŒýËû_ÿ.×¿‰—õe«µ-ûŸÏùÓúÓz|7hçQŽ»DnÏ=O¼~6OsÎq]ëºK·7î6NGùÐaå^Þ›j^Ð{Ó œ&Òa5Ï «—óÎ¯­qŸwýVcÜÈo½Rº/9Î	<é÷Çºrv5U	Ù6üÍ[P‚Ùðl8 +ÌÅÊ\´Œ2væ@¼mtR ãöÙ€æ³ûEåþ˜K§ýjÄ7¢-dTK:Ò„Ü‡5Y<rh¿fÞÄàÃ4w=ë'5HG`{[ý¯@ëÊ½Z;½žjí^2‘7³ëUï¡¿ôæîd€‚¹}m¥–µàÖÃ·L‡iå7+yØ‹mž©ºUõðL­­£é'•ah&„e%fä—™‰†O¤—zïŒC™vöy…[² 33NMäæÃ¹â¾Nf—ËÎxpb×Wˆ
‡Ý'óã«&n)ê­\­{Qœ•³•‘‡õˆÉQŸçmºœÍ,‘©~ùpÊ½x¾5¬rò¥dÜÜAB¼c“ùw\¨¿Þ²~pvÙŸÝ€ÆWIdÇ>'X°ÅÜ+`ÃéWcX€“]‰Ï½ÁˆWÙ%D°ÍÁR”4 _#ZÆ	ooæóðƒ4êðš£2îØo1Ö&äÔP´¯ÞQ±Š³Æ/xOç¥O¹×#	ˆ—»	B†—ã%»kìxŽ—yî%ÞHÄ®÷=68A6A9áW0ÙËÒ>ŽZ{lßÌôþW3·ÞÍD%<n¢Û@~²KÜ®œ¯£ÒÌ(¤ƒù%Ê/£p†êw)ÉÖ‹ûÖ;ì’å'^S‚·pÍ¿„]ÒiSÌnd«æ².äIÖD`3†BŠ
ôÛçÏâoc` ›kç¾Ì![Î~Ä÷ãOBTÍÄt²\F‰ÇjEzlUyì~›¸#‰Õ¯Å¬ÀÀUM`$õ*¹†YÊºXŸy™|
Z!	X™Jõ®¾X©&Î3æžaì—-ó—ÔsÖ»\²ó™¾fCìÆ8Mj
¨Ý
÷uª&?TUË€¡ï¿b1Pº}ð`Ú1ý6ž÷°,ÏÑÑÑ}Ë¼"ôTì€V•ÛÞ…—Ñž“*.ö)&üì½vÁ$#3˜zæž'ó£"óõö´.ìû·‚t/ƒvö¨\âõr¶€‘ “$ï/?iDïù(¬ªÖCö8SÂåºl¼eE«1T{ÖH*âË)6(Ü+A<¸Wã±nåÝ[º›	Šÿfy¥Ê½î²5©¶/JhUyX¼ùD‹¡Ðâ¯Øß|æ­D5é¬ÖñæRðž=[ù+m–3EÎž,¶ŽýËJ©}[½Tk¡O*-7ÝÝmóÍØ…Œ#2º2ŸCI¹ f½¨+L_ˆæóXÔJ)Æ•Š9ÑªX‹JRåbjDºÌáåËÙA¶(¼òz‘·ZFWmÂ»ŠB,Òúœ©LR4oEã“OŒ>7mú`Ão/ñ–1)eRàl-&kðº‚e´¹ºÆ]Œnüã‡L9W~£×TÃÙ3­Oó#ðä¿‚Ø¨Ñé‰=ÜnST£¹bPþÜˆPùŠ®Ò{Þ›ÙšýùíÓÁ°ûa0>¥ûõv ][‹GY`v€÷¯Aùœ²ZRk°q&ØtsFo[HzÇ¬·Ô³:îøÞ!Ö[¨÷l+@nêÏö¤^ñþâêŠa«
}Ñh‘ËV+éÀÙóv²øfmZQF"HësüêšWÞ„•
þÈ/eo&¿AKéä$/g³¹ ki9›¬g¢j¾(#¢a#ÄM0YÆˆ†Ì_DL¦×LóÂ ¢ßb†G‘J<üæã”9ZF@IÄ¿Aåw‡ð%Ý]v;ü{àû¬¬	ã€·®À²3ü2˜NènøÞuÞr“2AÊh+ÚCì¬£)Þ'§‹ä!nMÁ“	zi-¾8ôåÊÉ’Í\ÝÜÎ1'ñçŸ:^¬hM¦Ib9{QÒxZzlJ»Û"yð3“-Ãwç´<:‚„á•<Îxõê*Ÿe…Cfâ3SKš“Ål`¿(’9‘mõ&:Í2±	'Û÷÷ß•a7úÙ\{:Ç¶¨[Õ W…­ aîƒü4‹=’çìcõ}Z¢B8˜ÒQúqAþ	I¬ÃyJÂAYãîì•Y•dÇ¡ö­ÙÞ7Ù±ï˜{aæè	î\:X±ƒOw´B1ÆjÓäÒ=%¥y%@šÌìŽ3&6àg¯R*S+d–»=L2Ø7˜Iñ“5(ôG³G2 P¼#}êÓ“m ¸ßÌ{ÖÏ^ð'kãÑºóí¾WŒ›	cì>Vï˜,?Â&§€ÉõõwÌ9­Ú=·)Ê5È,MÉÑHìSLeQ=©Ù£eàé“ÁÂ¿Ñ2A’@°—=:X±ý-.‘ü"gÈ¢–SÜ ã&Á½{²`¬J1$‡)vÏ&mŸžäLõÁO–°Y3Ë¼Occc¡cÝå”×œFiã¶ÿdœk4.Óë/[èá]áÎ™½cŠŸÛn¶ñ¶—k½)F›¿qÆs«Vó¹¬ÒRRO]!óüéeL®KñdŠZ-èû*ûÞm„üL`ÒsD¹!lòŒv;2vÊÞ34_VÉÚÙÐæ^¼º–¹"èE!k*[öªQ½Ù cÂðX~†iAgD&¡jòò@œªpdç<l-‘´­:Ò®QEÈ™rƒG3Û[ùe=aã±Oý³×g½±JQa'l~³ŽÅ:žðøáË}0‰0ä.çküXXØ»"’ŒO±r3.Uô‚û{{º¾5Äð
ªJuâ`€Y™Ú¹@YÇOd‘CaÌÒé'8Œ¹ë«e e¼^°ðá¾ËážÓßØçŽôE“=\^Ïç³x¥:àS˜|Œ[þ‰›þ]úÐá?¬Õ*¢§ìx…Ð¼áhNG¿×ïµùËPµ\Oüƒ˜DP>à#.ôpÊ@_sÔE çQbÃHðAšìmtEããQîç	û~­@Üjwç§c¿ÛoŽOýq÷¬Ý?3"éÛQDVp…¹4m8×w¿“ì¼ç)ªM•¬q/B¼ ¯8¬Y0uÀNl®"fìðÀ&×bîMÀÜ¸Z”ú¿Gå'‘?]mv9átÉê¼*¸–WQ$R’Ï}Ú$Š¼WÍ¾‡å£=,	úˆû¿|‡Ãï«N„GGúØ–Ö“/î)[ÔVì…‘š³¦úŠ~Œ%m¯i\ÔŸ2V¨p·¬O>¦ÜJø·Z¡"†ýõV%¢‡®KŠŠ˜“©ñ{,K’&H]k¡UhÍ@¿z$J
S·õ=E­˜Uáµd†  ÀÂ)jH²£"Oæû'ûD#OÕìK¿ó¨‘gyˆœÍ n5IÅ †Ô©*4÷ÑÓ"úB“ :[ãeŽw™Ùº'»Þ÷Ä£ïˆbö,k Ö·@®ØÉ2rü.¡À•‰F¦‡®€þ¤ÄÔªiqå«¯|ýÅUW¦î"•¡·lÅ•¥¹LÕ•¯»Lå•Ö^nõ•©¿R
LÓ`9ÒËšŠ­¸fs¨6Òm™Ê¥Ý}Öÿr+Ü^âŸ¹Æsù£¬rc™Ó:¼…Žs¯–:.Um‹PËžg@ÞÏè%ü[‚úŽCkŸ…þX ÔÆ·3µ¹±iÛ“ÖûÕÓPVRæ,/Ÿ ™u9À}=Àh ÅŒ3§KnŠ½´Î6¬à…žOÊ­aôLG¾ºSÜmió.cL)ãIôø¹EkÌ¥¢²Ô¡÷£!&DYç^ø—¿©Ç°ÌaWmñßwá{ÑL®a^”zGO#ä’Ó÷á|Ì•+Þ<ÅZ×'ç¯ÅêúF_­Û„PPdN¡K`R¦Ì‹áPß"ØâW"eˆ	±€ºlŠÂó…²3c¡/˜“;ûù\Þ÷ÊGû,ûYó ýáœæ
€œÚc¹l‹Xbö™öFàc‘(¶`(}hV_ÙÂí¶ƒizˆ¹¹Bªß²xÅbˆé#ç2±'{ín[ºüsßÏÖA¢ç¡«™…Ãº>Å~ó€…hisI£Ä¥Ô{‰†-šó(Ö÷åˆ¹5fº˜é„¾H&~ºÏŸmnV¹Ä¸h5f,Ës^fwåJÎ'bV“8N®×z3ó&3ü¦+ü¦hD>ÌÌiÕqÐÖ(Až3b(w1Þi¸µãMìú¤7µè­´X.š2-“ìW"˜`©Ô\Oâk9êkLÊ–_bY¤ìÃWñutÇ%~—ûxîÏ€0–ÓlJžà°+¾°ÆÞ¦§§dÌ•øã™†Âš?šæËÍüÔÌ¸®1î?b@&•,D‘…G1–Ea)XX†¢Â±‡$9™ÌfkÛ=ªíÑ‡~@cúÉë_5¤ƒøÌæLJK\KyÂY@:qŠ‹	å¶ÁFîŠiçÛ”>†$ð,–¤–G±ÍZCje*¤`½Æ4qqL+»¬‹#PŠÒWúPª½÷~üÑ«Ô¼ßÅ“CzR>ROŽèI]=xŸ(äœ…Vßƒ5.ÝsÅùÁÑ½&âÁ‘LibäáùØRƒf®Avñåñ¦5üƒ¬Ž/&þZÊ|¾Í6!3!L!ÂG§˜ÀeŠ§2ðlz$S€,¦Å$Nüóà 9æº>ïÊÃ3­1†`<=sAãa§¤q¦9åŠÛâ‘ûÏ^eO\¯I‹c5—³;VÛW§\¹¤_¦8!êuûÀö†cõ
²¿û·•1>ª}A1ÞÑ; •º/~½ÿÏË¸dŠ”nï;üÊ4ÿÑ”<#dZ[ÑFÀìaìÃšéÄîìÉnSª©Fl–¾ìŠûg.¸‹Êg¯9Í7Ë÷Ê”	¢Ö Ï/KfˆuM^ ß™dæ¸”„#ðL—OuÑÁÌ·SO$¨"@Vt#Í†¥¦p=Ù‘ˆ/;C÷jø4jà¹©ú•gûÔV\r.roKæc(]çHÊ°ýmeÏ†¸áªO	<“}Ì.¨Òç&ÃÌS]¶\8Œ?ƒLTb¹N|Z«ØÃ?VçRœùQÊ•~mî!aÚ‘êÂ¡/²Ý¤"·í1?oz½Yþæ}Ë¿³í‰¯4ªY¦?ùäÀ•­ä5Ü÷Ò3³ïXÂ»‹Ô×61Êè÷L	°¾.FWûùÍ~‹ÍÑ´
Þg•LÂ“¶³äR^·É_ÒóÍ”€¿ž,ã9K–|²“^IKä½ÄFÆß¦¥n§Ø
(º
Hºlþå/šÃMB-Å0ÏYç§lö]^¶=hêËÒUŸÄ¹Œh‘í?[;X¦çüðmKX–"Ñôsv1¸çvÏJ,yÇù¹?)2ysÊÈ	Vô4Z±-uïòcˆ;CÀ”ˆ]4‘|ãÉ`xÃCêÚØÄµÔì~÷Šï„©À„hÓ9ßäËŸÅj”bíç®&ÆZ0êËk%Cé¦5’"óÞÚ¨È®šetÿÑvÑ¯¶JA?Ö¹v2£AÞàd”g—îÉtOTš€q;¶_Æ˜g0YÓíé›ÉGvëä2¨ ^Fq2joÀBàµ:ð¯=UY…º Ð§ƒÆKÛ<Õ¯Â» ®¸°Â ü$X7^ÍÀ,›­uožh—`ÇºŒ÷	aòq°ßˆ¦	PNûžŽÏè‰¶GÜÍXùf±ÐLþc“¬6‰Ü%¯#pÎ¯Hi”µ8á2Ô6Xº­ÉEÇìb„÷t²qá ·`$VFslôk.$ìâg´¼3Ã;É)Ê“Y Ñ85ÖcB…Kè0®Ü«„€<z	Ä©mäð§¶Ø¿a•i«	Åmê{Ý…Dxo`Nº0!^¦¤iõ²-“u´Xk­‰Èß‹S‰†Ñ¦cbiÉM`:Yî
ŸñÁè¼E³a¢Ð‹S$¬ÖõÇ¿`ïÆlÐ–´îØ¢ª]ÈÌÁ×ì÷ÆÃþéi{¨ŽðwÂ¿Ë©x¸'°f½þÏ¸ºP5èÓ=ÅôþJ|ò; +QNJ* zkƒ%ƒèLÁN†‰HÐÅ¹*´ß•öÙ¸ûƒq·ßó;íÆt9féÀ°RjûhfÑu\ç*Ž¨Qû5ß°ñlÃ˜-:¥Ü1'Œ•céB;*W-cÿÐXJFŒ…Rj‰¨aLÄ¸jØ¥åYe-™¤äß¡¥Kv²kNŸ.¾ÔŸ‹ä¢Ôf)Ö¼FÍ =<;d|z¢S’beŠ‘Ÿ¶oåâ./-Õd=Âƒõ1û[¦ë)£Ÿg¯–Á…qv¼Q
}­£[P…X€m?T³é›ôÜ8;â ,àÄ¡³ëô ¦—±ÐVqÒˆôðõ·ñ7ŽÐ/]—íÉ­V°KNFJ¬eNï¤4™æþÀÒá6Ò¥u ïäž¿ÇÃé¤…Ø8ú[w>½ÎèSëmgKWiä[kõ¸å~«&oÅXýú8è áSus‚J%ùŠ÷jK@T?gNÄ‚Ü" “)~O&Ð>s\Òì$‡œß';à‚£F—›h/>z+837ðt¡ß¾“Ø®'á0Br¹ˆ¦¿=Ç_AéÚ¶Ö1¤[’Ãâ%Oþæa2$Ui2š1Îê„ëbããÓJiÙè±'àª@YŠN½åR©5‘ýdwêD}àÀ-ñ—ôK+ú\•×Ã¢,¬šXF5Jì¯t s¯R(v1¹®ö¤%2L³qÊµÊ—±9+RÂW€UÀ,?"ÅÔ*¿‡ÞÞéËá•¨kÆ)Q^YÀ™^Ö,œ\ºümûZÒÓÒâ2y—u%œ—M“ù=ÂÇJ'>½i7Zm°¿úMQÝ.#Aˆÿ¢‚–|x¾¬X³#Úš‰t:‹´H[ Äðåâ2ûŒt^ÄUpÈdŒÍ4[í¼¥cÔALçk9Ìâ¬|´œÖ¼ýüsE6ÆÓuù‡ˆFëA­Ÿ\åèÑYÂÂAÖ$ãÌr„*gí]IåÆ¥_–ešÜ­AEfÍ¥ßUß+mœ"å'»d¤úÀ„L}e!¯ÀKØíÃiL
½™›UòQ¸ŽºöÔfO¤gNú3¹“gQ.Ÿï¦!Gç'Í³2DM¦GþèM·®åïŽîàµÄÉ,=Mih»%—ƒsl_«!âÖØä­­ÜÐVw™UÑ.èËØ¢nÈ,ˆÃuj·"ÏŠö:c*Ó‘/R¾)®15«TìqÞU]ŽË«LGåID{ŠØmÄ
-¹›mByt•{eììOØÃ/a)Q¨Î®d
“ûèŠ2#Âüå¼+Sz3Ñ€õÝÄÝÂ¿­ÊFð»¹ë`3¾é¨›öX8ÞÔŽSçpvtâø"§g1 I¢d’ŠT†ü¿?æ°dþ§.a9BšâhÉ½_|’¦Íú‡ï˜¸<ø	ß<y¬ï•ÇüØJù…aÁeî¬û)¹È9ëÓ7X˜Qj ÞkËƒƒŠö˜Ý´¶Y™ÐŠ‹#O4÷)mÇRûZàq¡Ü+÷Qæ^	:eî•ås@UøÃ°e¬‹øxmê›oq’X'ûÑžKëŒ¿fIw=D.éõàŠ ”÷vþAçæ1/h«çÿ»O¼ÅŠØ1—«(oÊ:àŠí^ÁEY|Aö£SÝå<ò¤Çï¡ÒT¡&c+ØÖÎ>çøç^AÁÁÁ=iqISGcÂ}-ŒåZ<x¥p²Ž]=àõLÐ^þ {*:ƒÎCÐŠQárºØÄám°ø¨}«DrW\Ž¸Ï¿°‹*a»!ïU‚Jù;‰‚÷wïÇ4À¨ÝÄØ0¼UAu%ÈƒQûîïïŸËþñž¨pº‰žï¾³ä|Øoôø±:$å%Î\àüWy,*H‚*6—hI¾v[ ¨™:¥–÷Ù–¤%+_ÛT×EF†¢qR\dX.µ*EŒÚ˜çE2Féi£Ë¤áÖnûrzXø\Þ]Õ'lëß;¿ÊË¡XÌ=’mTš<¯ÈH·Ù²3Ðu–×[Þº§#g7iÑkú‰†£(ëlOåÑ‘"ÐÃãå;ÎˆùçÇÌ‹EÍ;d¬T°zXÁùÂ+›á^œmÍ˜ÉDD›~ÆfÆ.Å­ÜtF‘ÃÔ1È¾É7Ùsù¨1rÚþZì$TsÁyT’Í¹ô¶:ŽÌ“0¡<…ÒŒzÙª¼'|ã9V¦ÊÏ¸é´iI¤Œ=…³§ÔþD­Ôq1Ó}vsZ0·a«õ–NûÑjY³;Î´¦ÏJ_¢òGµ§YYLß®ôMÉHb¢ü±£š¯tö–Ñ•^Èn¶³€ÍÎá²êBÐŒ¥«ô®\ªÚ*Í]¦Æ”ØŠU[˜)1+2V{MÊkbAjÇýPš!]„mëÁ˜(êØ¦Ú±¤×¶fˆ‰1yzüI;,ä’TxÐ¨Pã*ÆŒvø|Rµø8–vy«¨Wµ*ð;Üáwø-Mpßpàoå(}J½“©’ÚèŸHƒ#™Ž?…?„zw8Fxàú1|#xñhîñæ¢ú0'é‘¼$í(v]«{ü,ÅÛN
HÆg,nFÆßNS”¬X#_Ô	J?ÏóähÖîíÌåMÃ¿‹Kç_T3½:%Òrì¶‚oõí\¾¾{'¶ZÃËK9yÛF›áçm¢k»;Á—ðòôÁzº¯—EÄçøy.Þâê‘·Á³ËÒ¢Á¹ö²±žÙ'(ôÁyÁürI¬Þ°©–ü‹y`¤¬Ãà–ŸX¯x"¿åN§ßö`'–6¸ÇódA/òdk ×¡|pÑýÈ­ÀüÅ­ÍŒà²´q°dhW¬í'íii§^Nbú|=Å›¤šØ8T¡d¾éË{}²‡=p×49bjqæžíj+û@rík8ØX¥ª°á¸	$é2uÝC”Á¾6`ãq–rÀMÝ~êœï<¡ º´F†Æu›ùªz…’’Çö¿Ù*³panž8=¼‡;ÎP?Ä'ÇÊè–óª6H]=½§î–ŒÇóÚSéÏ$]ß;\N»!›_Ñsw†i~ËføPžplwêøj5yjxoï;Ë‡®i)xî¿£½Éq½kºë-(rùö±éÛ‹¦ºáìã…Ñ8ãx“ÑáôâkÊ‹'›<ZÇâüSê/ª%òžú"Üù9®~íŸyJ£Mùøá±×2<öZÊc/ÐÜpù|d$5oñ§Ž¾m?HÓ¸¶åGjˆ:¸%âß%Þl¨}^°a¸lpjŠ]®YrPpBó´ƒt“õðFº÷/ÉËe?õJúÁÔwÁˆ‡+ä‘ÏóÜ†.Nê+-Í#”ë˜HíÏ˜È?5&ø+œîÿù3 òg@äÏ€ÈŸ‘DTêÂ£‡CþŒ†Ü3"„þA¦ä»açKõUk3w{{&±ÈÕ¶’Â³¤ÇR×¯9Ã\WÃüz"Ùë¸`™*lóÄ{È­yLÖWSqkæüq+¯cN£›ÌÉ{ÆÙWq¥Õbsûï3ö_ºcÕsÙagA<…Á?uÝŸ:®ž?•-iíAË¾f¢¬&ÉõrrhÍ¸ÒzÚÒ,^ØûdqA|OÍ3Ïžù;Q~(õµãê±¸ecD­»@v-çáI³ÖéHŽéË…6ØtŽ‹ŸsnˆO=7œe¬ùËQôcp÷_v£Uïqx|Øéž¶wŸ2á9@| tž÷}ô=ÖÄ™_=g6ý°ŠLî¼Ûï>=ÀNòûXÀi©v$³®Ýkíîq¢g(ôáƒäødä~GË˜¼1ACéØ÷ˆðcyµWœ.¿ÅjxQ>ùñ&£K¬37ß÷Ô8Åt‹"ÌX1–6Ó'f"£ÑâØþòr¬CX¹(¡üÒœQÕJ,³§úà¶Vz%œú2ì2Xã·RiˆØ2™7uN¾UÈê'QÙ-´‚56øæá+Õ3ÝvŸ/¢;ùÍ¥œ{²4	ÓI‚sðôùe¸”5½Pb¨@‰qñÓQÞG¾zâ¸øHZP|,hn¤‘‚#WÒjdX\Â!›ŒÚhûût6Eú’ë0š”qŽil’gRõ	ênÒÚx›–©|>ð­—I
—ÙBå³,®Aâî‚×„¼gðÔ§ê@òQ¼¹då­Âî
Fz§ü`±J›Ìû »Ý³=#N Ÿï}¹p[7ì„ý¦9çŠˆãÏ©¡™QZ¿qî(ZÉ‚òÓæXëÒQª^•TÕ$¥³.v)ç2õ¶$;Ä~šoÎ{¥À§÷ƒW{”òë?q…)$°=“”’E’*QP’¥3{›¬:S„…QH¦ë*Òu”hþIJåç(yãûŠy‘ÏOºÅüó>§ ‰¯kX ‰®jñƒ¯)ìßp«„×¯•Ò(ÔŠ«ã|¡7õ6yq±¡ºQÈbÏµü6¹ç6ªDDøFÕGÖR•«á˜ùòæÌ Û„5Dj1Øq`!ø°r¬ù"jßs1‘ÅÔXe)¾jä˜hÑdÍ¥i;˜ÚŠ•X4æíkósÌÍ±o¤È5©$Ì-Â"b`JÖÖg)ƒÕÂ××ÈË¡qrùhÝéU¤DØÜ¨ç”¡lxHAEÊêpÕ28?éµ#d×…¶6‰8è¦$“µUG‚¯ñÀŽÆ¶'ø{¬õõFeºçä’“¯>æ¼Fë€WÈÉl|H‚åŒ@7Õ„ƒ¤a!Ë‰Éw‚ Ç+³wG£kõXGâ› ™àNòÌƒ'Q_ìTOÄž”‚²tÉ®Ý`Oèd‰ëKk²ÑÙ×ÕNË{×¶Y'¥¬ì Õ.ÆhGìÍÂ5¨~dõPÏ“p¿’q^äwñÁÏøápüM3Ow£dM5Ãì×4$ÙÉH”cÞEÙ~¶çÄ‡ä$ž¶{”,U6â¾þ‹"¦È}þ1˜ ãÓÏo¢eríz1›|ìÏÏè­ãu´qc—›$p½‰ƒi´œÿ·žÅr;ÑD—yš1+Ô7,TƒtÈôn–BJ¬®M¬šÀZìâ~ô&ÈÓ½ø<Ê»ËÔ˜ƒò’ÛpÔ4†q¸ï¥ lþŸ¸È‚Ãª%Øa€
7ZÿFßî“KÀüSz±éáâ	[I@ýV¦˜á¤"F7[¤6qû\Ùc„ÞáoLu¬qoÏí>= œ¯#è“WrF%‚wŸ-R_åögòË Wß„1€¦{$va¢×ã7©˜U~¡SK¡CÛƒt2þÚþõkR‘ÚîtZšýa»u~6øšÙÛ«NOû—q»×j·‰0˜L;E³è¹k
‹mß#^Ó–Ic0¦Ù…Àeî¤Ñ8æÉ…Ìa¥q¥Yì@Å=?ƒC¿ÿî}£ÿN“Om:¾’yòD¯‡¤“FQE¡œn'Š>Ì}o«ŠŸð¯–øiÄ[‹ÒªÍÀ¾·E‹<>¡8ßüû³ÅÈM	ˆýÈ¡t¾íB*‹’nKñ~ÊøOk§G&å©}Ñ°š¥$7Fl”aÄáÿùßÆtÁÍœ\«ÊmQÜ_¬Íöæ¦7`uð³%:9‚ì˜aÆ~å!óuöˆ#ÎZÆŒñKôG]Dü18 /õGdÀv"üæñdÍª¥GºÓ°EÀ/ÙeÊ1V/÷8»îÃ¥qcH‡ê¨éznÏÚî*Î$"ÞÓ\µ\ØX2Ü5‹´Ñv²š73'Qðœ‘äÑÿ?5pc=Ý´è¼Îxï©è{ü1N‚›T§ÂÖâAö-FJ˜j$ùélå§	ïÑŠíD„yÏ2“FWºòaj…Ê7šÆ’ÏR†ÞÖ ãmìÃ¯Áz9Yøó;yÚuŸ4ÏüÉÎÉ1spº¼[¯®oî&ëàgàðÞåÕCÀn/òÕÙ˜ç^“E
½h	ÿ¨ãtž÷;êUk¡?ª‰@ý>õêµ?t­‰LcTD¢W¬CŽWC+ÏEœ$ìUÁ¡¤1óo¹h_ƒ¢'Qß÷°6ô>–>QÅŸ‹tuXMqþÃþª—Ù€ääßzÕC'y2Ma¯“ÞÂÁåæÊ»	â¿?¥ \éUì°jÊ-üP<ËÎ,ËNÈRu¬9'apê™.‰A:rÌƒ†ÆŠ‘Äc^ÿØùÃvÀÉÍê¾¿?ÎI=O<$kL}•ÂÛèe«Õ#õ•I%\ø•eæzüyhôÜàí¾€”-é‰:O¤?ùIÔJÆ¨Nôþ-¿Áá@p OîïgN«+®.„
àÓ~ïõîS¤CtHÀsØÔå˜±C"p €ÅY#üˆ{Ó
 ÉŠº3qÆ2ìî´=ò‘ ßß
8Y4Ý’ôÏJdaÊjÅòÎ>Ó]"ylÏ8~hÖ_Ñp·¨tÏr~©zY‹,WU£Ç/2ð„2ÖoÕ—è¬›/”–‡jwi¼‡Êº¿æ¨›Á­O0ànæºSv»Ö‹¸¤VLÁ[H<GZâù1û:­‘'G÷rc\©\B–§uFÍ
¥yjAwÇa›vÆ&Ù„V7ŽÖÄCF`ö!¾ç9šu|fŸše–Ygd©£±Ô‰˜õQV¶Y«¶uêŠd„ö1ábé°ª;)>*âóbm¡I-µ?rZ¬û2öA]ü”þ’ÏÜÈ€VûñFxˆqióá^¹ÐX•Ñ~³‰P/^ùà°ÐpÅ$ìŠ½FÍ+Vùòãfµ«ö¢§hê>ÝËi°Œ–ÁÓ=þÕ“”Å—ñ"$È¶ÿô/²8úAk[â¤?”w/Jå±ÑV§É˜íô)' ŸÊ©üöæ½hUèïMñ¶­Òú&ÌwÆåJ¹9¦—£}Ê6+ÍëËä•ßûÓ±”šââ732Y=æ&ì÷#ùŸù?ÔÚj æ«¢Ð÷}eØÊí¼´üœvÊàÖž!N/)ãžA>ÃZç]Ÿè©`Ï®-}¾ƒT"õE¤í“ñÈ³±s¯¯0ûSjþvŠN©ŒµÔ¾ôö b=÷ÊìZ+«óìpúzæ¦s]ì©Ø*‡G¿Ñ¥UÁ¤¦Õ-±¶¤Ÿ¼ëÓô)kèS;ùƒŸy2¾FêàÍ›éŽY/¤ïbú]V+îH¹wµbJ±¸W{õçŠøƒ¬ˆ‡KZvùL±‹î#W¶;!é¹8o»‘ã•½+¤“\Í±NéºÇ-'c³þô¨—ž¦ëI|M!ú]WÄÐü\È¿j]áß\’˜Œ¯§Áy7Ä»	Æ_%Ð¸MàÑ¹>“IR3è4º§>åáŠ•_òÃ8Ùj²¾‰™ÓÃ–5öšH³×B‡ž¼Š¡!·½1zÃðÊë;ŠììÖ˜|í÷ZcÑ¾"ÚïîæAlÿH#Ê{hË|Jq$³¿Ïé
š©NØÜ˜ckž¶ÃÏë‘¡0;¥¡i'kŠ·Oî=föžÓú™sz	ýÞÞ{*}íDK¥<R_Ce[&›Cíš-ëaÅ~ø]JAé§¥úGki—'[ÿ¿òlañBJ3Q—_ÀØŠ‰Ér6¦'ö56Ï°‡¬Uêû£´Ë÷=`x
m§>šK6N°&©³§(ô›ü¶[R÷1-sW†êÛ³ä[Ó$òòŽZQ<<µ¥œÄƒ÷ãì³Âh'ŽÆË¯äþD–2cèZP8# \t+~Âkž‰3Y…2CÃ|z,¯…›M'ž?¹_µ ‰È:ÙräP 4Ê)5…BM™ Eô½Õüb!´Ç·ÍvÚæÂoÌ
p^ÛI|GW>––X±ºÛU±f¤“FŠ¸EibïYÖ¼ÙvN­ÕnV3¹Á¨¶î­Fÿfµ…7}°ùb]ÀúßÖ¤&—½í5û²ú±}Ñûúòª“Ù«³ªž‹àG¹¶¹ÔåÜmfß5Ò®8§ÝyÕÚ!÷é›Í[ULÓG“)]$w²ìž\i,t}ÚXo®{Ôy¥–äæeí™ìRÕ	¯’hË†K>‰ZIFÛêMê¶Ç,dìfvA$ìQ%bi-‹¥cÝ£‘ÒÄŽŒwÂÊ–•Â¹#Éå°39Œ$ŽJ±¡ì4•ÛnE7Òá»vÃ.
ÅÅBÞÓ–Ö‰í(k7;µ¡Øa=Þ«Ä’\¯OCå'[Î4‹N²Ö§iÅKÁèáêæB[8^Í0ûÒ£²*Þpõ³MilKãÓlùÇR3Êû? g|DZDÓ¨ÉWT5º‘`º2j"]Q#rí4U¡—P-¬1À,™±Ø1¹m²ðÿc*åm>®"H© 
±Á—QÛ×yq-ñ§¸§¥ñ¥r$TàäºþíÐÎ£¬Z _BPQnl„3š¬Üy¿åªÿ{-ýèòïüþ—‹ZÝ·ñò]¥¦¼\AX?qK/*ü	´BOlÐã:m¼ä¼‚åp¿SmÃ{™	od%ÖûÎŽFVFöo'‹È6Ý£FÀQöÌ‚˜}‡ˆ¼Ÿ½²÷Ÿø¿x…ë@[ñI F8!CZ±
vÕ¨tU*S—òéó%Z],k¼oÍ¦Aš2¹žQ³Õf}ø7Ñ’ûÉø$ÎC(cSV]œÐ)c|&ÓkŒuP+ì)Î½ZçÃ×àÿã¶ßm¶_±íÕü »öF	ÚÂÝÙ‚©xYE;M«ßËBÓŠ–…Ñœœ~Í@s²‰?E3lÿ—?x;ô›¿6SØú+´ô±dô:ˆ7‹„åRO–Å¥@ýL‘ä{OQ'<]EwÁÚ›~œçï=Óhc÷´]´‰=šgL†æÝM°èG„lVH×åGoâ±Î!DÂ/L —lÐÏ½~rd2É½›ÉGLÈaë ×$àÜ,“pñßKÆ‹ö‡`ºÞ‚Æãx¯Qæy_ÑÍj ˆ9džñ¡é|ùÛ2º[R3uN@²˜^}4äŒµ§Œ–”=“w¿ÍáÖŒ žxlÑW$œ|o‹†õáÓ óÌ—L“äÿ¼…±ÍÀÀu´—Š²4ÐÇ²34Û‚Ï&
‰~TY>eí¼82Sxqd9˜„VùiŒ°J“F8”»J´wi-ŠƒÖÎ½"¤L¨9YbŠWÀU-è}¦3Pm,R£Õ:º•?NSSõa9ÝÞØoµ/
#/´òÒûmÔâ®n4Å•…N@±ï¸‹îAp`âwVHûqœ@i„I´þºZóŒujhO²@™ÛôÎš°³~¯‹_U£Ô7~rm.Ñ[äsïƒLLƒeRTkß¡duf°“¨gðW¶^Nëñåü§nÎ×ÍÙ½y­iý.×CÎ(p!ï*ÿªÀi ú^–ópË’2áÄ±`êófëm¹dBáÝ- Â¿‰³AÇÝ³vÿ|ü…6&í“›7ôÙ–Ý"ë|OÿÖ˜ð™¢ŠÉ; o«”Ø÷_Ôp™…¿g@qÏq‹Ÿ•ÂÁ„úfÏ_™$–3#
÷ÚJÐû‰qhw—iÉ½E€•UÙçn¢ƒŸ¡¸ ¾ä5ñØ»\²/íl…£/Ë0ê-Îx¼[6ÿö[b‹Mçž¹!~™íNF;ˆ>:ªçf²Ðe#ŽgHÔœzŽa3ƒßi+ƒò¼fQ½&“à5âXN™²ïÍ¼:ð¸BQ`o"Ø
‡Ïi
ß)ïçÛJ	?â³Ñ>¤¤«é:øùzïeõt²ˆ¦¿å÷S¼§ËÅovO[0À€ÔÙÓî¶õ´˜‹>âÉöÑöjw7§Ã}Ïý–<sèÍ	lkÞ›0Écwa&_çóYvæ˜@#SþöÞµ»m$Gþìü
¶÷$-9¶#ùÖi§“9Š$'zÖ–ýJrzf³9<²DÙLt[QŠÝÉ¨;Y$‹í83íÝIÛ$@¡P 
…B% £Ó ÐÉ»™ fà€Oˆ˜.32¶$Ž¤2$A*20$M$¾8Á È2Hƒ@+7©2Á%LÕ1DX×aA°L‘‰02“h¤È„&æ^2²
­wg£‹ì8rËŠÉFÙbJ=Š,Ue‘½ÛDÁ»M:JÌùpB°HRE¶=Ÿ)l6 ‹ÞºR§±OšÓd[hÍÏ‚'2ÃT,€'ž™'Q¦¤ÏÆåŠ‘šõƒË’)™x¢h§rÒ®µk¹JQTS£§$1í”ŒÏQ‚v’5”¢R”Ó4ÆM
w;Âbál¦F€].ØLM€‚1‰ËLÀ4ÑLSÅø-­“CiZ¯ç‹«Ûr9eYû£V‹š¸-^‘ÿ’5¾cé±ô“ôÒ¼Kàû¯QGh3ÑCÉ“JRD!©#˜Â×&YY²X.Iráêþ>W"¹Hã£kµüÈ6ÆúªäžÖ9&·Â–Ž50$|¡Ë;ud³¸È7EnsH‘´+…/²ô,êæ[.ÖC²Žðd[5d¥Sõï-×
ë X“™–
yf’¦ORë`sâÞÖ©DF—‹PCk‹€µVÑ×Å;þé½Œ®lÜ|;îÙ(ãieòô÷å³‡tñ—^ªûN!SyÕ"ßÉâ«¶€Ÿã¶‡òµ1ñP¬Ò ô€ôhBó9q3×YÊÒâñ2Q•´Ç²@I©UO ñ,À*Ûç³Ú)dL7g¨Wát¸ÿ×=oG›àÂ'Ò@¦‹UŒ‡ÊgS"NKw`õMw‰Å,yúÃ2ÀbëÊji9qœëIOnf­à}¿"ó‡–Ät'€èõñeåÞQ(¾%Ë,øãE•Ö£bÙSç©CŸ?Ù¸žà+¸”+â­ò3ï3I\™%³à}	ï@`iµÐ'È4ùÇÎÓÉÎÓ¡óôýñÓ³ã§ÝÍpû€Wöè%
›OƒÝ§•ýñÐywÖ#ŸãCFr™å.ÄòšYLNßÄîkt+N?èÍ¶yCm€âl‰˜êžÝ)ý’g›¼¨ïË<,9Ù¬«‹J†dÌŽžLˆ!s˜]M}"“sÈdÚv>‡’DX®ÿèR@yù±º÷%Bam`guô¦ùêûÞ,£—ÎUÒ¦¬ä,;NÏ¯9íÕäÊ[ É;»[”jHé)³q»Á”€ã¿½²¯:Ì8î0ŽÓIOÔ ö’ÔWo›ñ„Ý d*Š€üÉrD$á'^Ï§vq¯×©Ü=½sß7#ÚŒm‡"Aƒ%œu}»|ñ–Hó"’ÈüÄŸR ‡[c¯zÄ5µDÑG0d¨ Œ2¾‡œˆz7/¸™‡k!r—Œ¥ÄR‹F’Ê€c,%¢XÜþój8€Aõ¶TW¨êÅ X jƒj‹ŠëŸ:=O'ÚIh¸²£G’’ÑœùS²š8úÓáì6Ò#bM¶báCÒÉ-¶KD•™K¢•iöý €» ¡Ît©ÅÈ‰šL¼R,Aoá__“©Ûœö!—Ð±Ä„wR õZR ®‡ è­~Qþt-ãÌå†‡å0Hÿ_ŽM¸uƒ”·’IæŽïü¥ýçÏÑƒfqZ­>[Aöë1ÿû)Rôtï7J™þ\ûÀ3™3§êöGÿÓÇÓZ¯Ù®ÓËôÞ^Öÿ³Ùs;ÍZãS™¹Òëû³Óê5ƒÖë´Î>•ËÌ˜	ÖK¡Þ(°xg'žµg^?XAJ&æs‘‘d¶FáÜÝßñSæÙ„!àÓ Ü³f­{Ù>k!>TçwQPíù¯¼ÀLS½’i2Ñ	gÑ_AÈŸ	ä½WÎgù3‡ß‚¦®ïb5XsÔAÐ¯ÏŸÊ¬–“¨%Ú/¤m§ë)øMxkØ>´‚ÉEÒ6sH
%‘"ßÞ}Asõ6ÂëTmPRõSõ÷¢g˜(FÏd–®g²@Ë«gkïOÏ°N«gò M×3y æÒ3!×åžõLÈÏyz&…¤bõŒ)ÎÞ7L›ãé¡Xì³%>¬ã7äòþ½%Î"}ÜÇÑ›àº‘ÞD~_lS)šdØuOÞt·ˆGêké”õrz˜5ººÍ±ZÎƒF®ÎÖZ5Û¢VÓéøBKæ\hÞfAs•M=šAn4,h†Ñè‹çëd{DSÓú9ÛŠ9k¯”åmÞ¥s*ÊøuÞ5t*Ê¸¥uÎ¥t’K™lBEøšÆ®SW¶xôÒß–GK?îíËæ(µ×ˆ"ãÒòóó*u3X5DO#GO“@ì+ºxkô6ãÂîó½ö6Ùó*¤¿9–W¦¯+È©K§{äØµË½	²ÅJæÞ9aåpO‚lµ„¸7ANñße‡³n`Ûì`‡|w,”â.¼AÌI½Ù`îªò3¸ï[ŒçþY!î;Öà…zšOÙTÃ·ý)!¯ƒµPþìûÔEÕPÇ©aü9Àp±žŠ{K` oCñh(´Ù4¼P;6î„©°ûØ.çÆ#Ï¼Ëv5.ì>
ÆRÀUÅ­èŠyÓ¡yÍÎ&ãIöh/üðv#¾®O`ŠQiáQ@Åxo§K¯HFÓcÙqüùHöÌæƒd ,«ÆãÒ{–tÅ|9Ë.§Ð¬‚ßÏ~_ÔØ2‹/ü·'¹¤³?ŽŒÄn§‰×¹šnë¼½ŒÄQÛ£Å“8.é½©©½—C¢÷lAZíA3Â¿«'”ÍÊÉ˜)“¨L"£¡ËÆ)¿êêÝe«Áê»P¹ô™z ŸzAÉyýÂ­W]øJ ¼ë½'ï¸W"B4wZ×+ø‘Úžïaµo©ÜÃ![Õ~£ÎÏ¡Ý3!¢²«Û%d»%˜Yë[©xK²[;unK¬ªå³ióT)J>M±g†¯é{{¿žý¦ês“Í´j‚ÖÏ+è{vš?7x#éÉV WØ8d² ,Ãõñ¤òâ4%P¾[exÕi*j^»o›¾Ýo8kwpâ“ÿ²¹-sºÕÉ¾%C
bœixI÷fÖQù”07ô²Ÿší#ìƒöRãßçz…©¥„ÕJý@ý(e™bÐˆ/ê©kšþç\Ô[Mçb¶XFóé6Òý‹éjâÎ¾çBÍ¤ÈyNŠáüü­sÖŸRð’ÖÄFýxçf³+wr=Yº¬0SÍkù/o1éöN—~iß‹ÛÅÒý_ ƒ¤K,ÔÎ‡š1Ø!	îY<x[Ã`’È§Ëé`¶X˜ñXòi bœ¬o˜Ø$# ƒ€ÇÛÝnƒ-"¥ÅX³ €0üóÜ%flrtÜöå™{ÑuÍn½cðt(%O‡da,ü9¤½êä|Öô?¥À…Âlá'ùÿÄ?/ÜáßH÷öÒÛWU£É×·RŒ÷èìG”fÍh=VaŠ,AsŠ'NyŠÄ =ïYfõY("£
-CœÍ€„ù¨ÂPkeð$‰§¦£8•Ù•®æ†@oÆèâUÆ €­üø0Üt}¿Þú_ÎútÖ•Š d½ö?A’×~ù:Åu¿TÊvhwPùÄ?´õßC œV#°ñTBqoÎì
Ù66úF1½sNý 6§6àÖƒgâ¡;&Ÿ?féð!$£8=%ka¼wÉ £Yu ¾2ot¢ß%ž"¶D&|qs›KŠ9ÒÔŸ	>Çm=oþ2RÿºFjtE–D	ujÉKcU'Á –¯KDo–Ð¸Ör±Åóîo¿-½€Ÿt7ìùÊYÒÊÙ´+oÅÎ¯ ¾{»po|c™ý£ñÌTv‹Ò˜r|jmCÉG”F¬‡/$®MŸü*%˜:Å‹PÐ„§ÔF¹ Ë°a9®S¢#÷3büNÈ†Nÿ¶œÂ6†7oœêQÈ³¡Ë,"÷xÄŽ•é iÃ’0¶‚-Â¾bVÔßl´tšõ:½¯!Ÿ5No0`;“FŒd±ub–3üOÃ[Òqê´ï°s RÁ1îï	Œ¨¿`G+ÖMqÓ5€´AÎpÆbÏœ¡û·`éM¨cËjÂ8—AL•]»,¸I1aµzV8Æ…¥³Žˆ ]P4ÍÔ‚À.ÎYÿ.‘M7¹€ÝIÿ®l‡Ú7ëÁ5Pûa¶ã …:Uˆ³Èò‚ÂÔ\²D……Ûûû‡RèçïxLQO¹”	C¬z²VPÉý%Â·`#írXRºž£ËI]/¤ËNãØN³Y^#:×¦Û9:Œ!ÒíÌ†¨wã‘p~a¶\Ž‰«—TzBÀ¹©+©%' Œ¹…—ÑKÅÅ/Úô¨·<®èÑÄ&Û<+ý€B4±hñB©5å··9Ý›Õr8»&õ.£2ôt7`Ðf‡›šâY[T˜M0;Üâ Ž>X`çž›Ž”Å9ç	ëòx¿}ÍZ¬¯ý½o,žñ¿óÂ?YÀg®{øè7¦Oó\ÀÓ)_Ã¡·¤&ÁÏOÒ¡9¡ƒJWœ©@ã{#Í{úv“Á‘ßÜ¶ôÎÓ¡[:í›‘CÝ	nyV¬ñÞzÚ¨CžŽ7ÆOOõÀÓ%!Ö1ë‚ÁÙÎÅŸÚ`a~u*ÍÝ6ŠòÚÎsz’e²O½–*ˆó¦ô”3ä}ô3Í….ÔM¶{éÞóZ}N÷ ×P÷±î³¥sœ¢ÓâtÁ7úÉÆnrSáÇzÅ^(;×ÆÍMïMÔû…ûÕüÙâK†üâ«¡9l­×t¤­¶Â¹ü FÀ°4qÉø0t_ô»2|õŠßÉ¹µèßÒ?ªGÎÖíŒømäIu[þ¾§ü¾O?ÝßsUüá+v)!¸~ô	Mžf$í¼ùÞxè’¾Àƒw~9eÿV\Î¸U~&¾&Ïé ~ÄýÁìÚpèƒÅ'rß@ÅmˆÎÃ¦Ü÷Ç.­<~8P|2˜÷ÞŽ?<~zÇ0¢0å6½5³é¾;=[;uÛÝV£¬"úâ}KZ‘Ÿ©ÐB¡–JÇ¡¨¦ŒŠ«ãØyºÏV²OŸò•Wx½¹!¸"QRæè“Æ`¥r¢ýÐú,²PÉõŒøR>­MKF„nÁ2$ÏŸ¿J¸j¾“ÀÄ‡Ÿ’,§_LÆê‘™Uä‡˜R)_ïk_ï§|}¨ñúÖë“E£÷ÕC£ý1ñš8|ÇŒáÕ#¢‰›©ýÝÿz­üm1 O6B…†¤f)'¼ÜKz¹_èøíç”ä)œ¹pá?tE—4þŒ¤ŸP’òqb°Ð‘Vráyö¨xq˜pÞlèAý2ž‘5;ùÃï»0“x±³»?’ÑµdN°/´ªíñb,{»•BYsTknfÁ˜Ø²çáå·B¸±]þ)'ÍKÊîü1†¼L2„Âwdïï™¿ÞÓ¹g^0YpX­§O·*èvLº´ú²D:¿…rò÷|Rµð–‹o.½gÀ…cu£ñìVQË?¥TÕòñb>»°Š#ÿÀMÝÓôSòâm>^h	†D$/âÍÌyµ;²c‡µQbÁ™"SÏÇ´B?#cžÐ§ÃÙÔÃ5¶x{¬¥ó«GN€[PzD\5a$Æ³ @ Õ"É‹¸îçý¨ø„mbËŒ_¤¨‘)NiFÊêd‡	!s“¯·y !µ{‘CÑü‹ ø‘Ü¬b©=Ô*ÿÖåyâ‡ó«·4gÊ¶[ûyº5éß‚ü0òþ×piÎ­{q#3Æ6Òe?%èQüdKCø#'_ÆxIjgÃ”¢™†ÿ#y—1¾’Ú·øÀK!\ÎVWc/™déO¡ÉÊ\%tS´ˆÆcJVõçÇÆx²ö’î™•KZüM÷‘¡ôÆ
g¤Ï¦*geeG;`I\-ø”Ú“¤¨TÑƒ•„ëGÚ»ŒA¬ôUœ!ºUøJÑ€ãGò0cð+µ†¨Ø=8,9¼„2Ke§!–vì4`¹Wvê6G´åŽ³9,ÎVPrÑ‹xÝ°’p6–¼ †Ù÷J‰§Š’hƒÇ`SŽ¾žú#ïãíˆëõ†,»NÉ¦ÞÈzÌaÌÀ‚S`YF!¦kÏ;:hM”ÙÔy?[-ÙæE=H.‰€‡ïò¯Y'ã~òR°‚¼íÄÞÒZ=µÉ|õ#±æ¹sÒ‡¸õÆÚØ¡\p1Bx!
z‹¾!`sŽ“y –´{³H¦ÊÃ.¾z&q[sr©‹äSÖ…h7ŽÊ€pfë€ö;Cßð)Z¸h©˜Q„}J \Ô”HÃ©?ýât Rcv;%|FhÉK‘È/Ä_‚b “i©½þ4|ŒÌª N‰«•d ;ù ˜TPÓFIP«©õÕb™¸=o‚—2€t¦(¸»$ÀÃÕûwXœv1$öHAžÃ LúwX½@™P)&péÃ]Ej"Å"pe„‡Äh¯WÒ.ƒNn~…ŠKkYcâDPÈÒ4#Ð8bðpÚ‡ }Ü]
*ÐÓ¾EaiëÏû¼„ý=!ny£½a>Ü˜(WŒ{ƒ`b§œ¢(¶ox`ÄØ7+Œq±H1ü‡3túÀ£—Ç¢PëëÖH„X{óyVðHg#çâEÓ©#êN'Núþ4œùšyÈç¾;'úa–0Øå¤Ì~æq›Ž»ÆøÛù÷¨ÓYùãqGÂ,Ýn{*to<­Áå¶Ç%=ñT<!ÇÚG¼£›ŠÓàÊ¦ú±ô²ã§¸ÒÇýb<ì8„ÉŽs¹‰øÓé²cv”íqšýçT¼	^²=îˆóœŠÖìÛcŒu•S1'{Âö¤;È©¤Ä: ´F²{œ®Jâ½àT"Îq¾ˆ«›^û6ÆŽÃ`vs³œˆ÷kafÌNm&3—èëÚXºD—ÖžÅÓÍìÂ¦‹JÈ³•“ëša6H6³«šz°Y]S{IkªPÄ:¤¶'OüÔ8äéè}R½Æ{+'Ÿ_–ç^ùSÜ»uôÇËosoÛ¡9å—àÖ¿öÖ_nœR´EùÉñ{ÄF–*eH<%.ð`þ­$!@MÌJåŠ^´~EFüË+Ö šÐ z¥žÃÔšíÅ7«VD3Õ~B›jL›ƒØ6UÞŸm‡	mª1mŽâÛTãðüFÚpæ˜[z5ôFýÕx‡­ÕþP;m5ø…óñ…€nA Ü¢Zgôž2¾)R…9ÄÛŽû™«‰K$á{Á¶C³|«`éB¡TúçW¼'	6U·Î;ó…÷ÕŸ­‚òãïüîygêÝê"âýQ\Tïà¬‡»ULJ ÉÇ³ñÐ–MBÙ·Öðªm;žòo¼5]Çy¶¹Ã~6_E*õrX¶Z-ó3ÓÀˆ•OüB)8Úì¾köÜ“?ÝZ½ç¾ou{ç¸õ=¼aªÕ—ž>ñ“ÛþBh8ÏyOyŽ›8L &ÆUŽ©~I Ÿ5;¦[¹#ÒzèüóŸ’×AÝvã?Ý¹‚]ühK=íj@ú7)ø½íÝÆ†/è']Á†ƒAßÞÜO&Ç^ÖJ+´%ú½;žÁ7ü2Q²È!ânÂ†#Éþ£þ$?r¿óGâÇ¦ìJš˜jú¹O¦öøÝ¶?7SŸPÝÅC1UDÏ¸ƒ=g+ôgxèÌB2€2NaœÏ3è¬öw¼èOg·ÙîuZÍ.Ÿ—Šä“.®	›/¶œ‘?:c"ÁòÅJ•“³õ¾Ý©­*Yårí¨^òŸWÓÿÍ©8Ç¤i4rWž‰;oð?ýO»ÊkNGÙyƒôãßIp>›áð¾D¹ÿ™Ò*lÛÞÔLÿùÎ¸n”Âh²0‡CÏu¨(–C2ŠuCËñ;P¡¯¨µKø býðÛ—Tjác0ô.^uýYâð.ÚU‹jé“2¡ÆÞ´”._ú*`‰ä8U	N9ïÀÍ|TÃ8˜¹—Ü·ò“¦›„ˆ6ƒX—m¥[RerÁÇT3ÎçCÈ 0Uœè—0á‰”ý—m>­ŸVöè?ÐSòe¹¤.âìz).R/¿Ø?ªTX)ˆ
o€OÞ‹£J9t˜ ¸qHå¼a¬Ó¸ÎxÎÌ¼?*Y¹Wq#'ja
ª@{Ó¬h5óÉyæ¬3÷*'%çE	†i‹H,áìÓ½ƒ²éx»¬þ‡$D~†0p„^­3>æÿÆê‰&a»x¬ô³H?x/tm¤µ6ßa©Ùq[CJÎÌIó\*Óm™Ôª\l{ìô.ïéKÒQ»ÎÄqu§xyKÃ ±42ÑŠ°S˜a"4~¤~½)ÍDv³³@§¯6®”5›÷ƒ`3dù;Ø…pþoyYÇæ1äz‡ø-!ÒµÂtWÚAám½±pÙ">ÛwL¢¥½É³ Ž¬ÖÂàð:ÍYcµfX¬éë_s…é|‹µ”µša¡zjø=f­–ºNcKš|k4Ö˜®ÏœçNàÿ¯7¥4º.Ê?éZŽÎzX6qÖbøè<ð£Ó<¯ªMâ[bi³Üúk½µÆz«ð…–vfíÕU<Äµ—Tû{Â²GxRHQ$7êFDüˆ|k›ˆ¯D†<ð³é0Ð×6–K›$xrm£Á\¤pœ“™ÃÊ5ã_È“´s!sy?ÆuÌâ;þ§Ñè->¤»˜e³ó×ÝêJ¸ãvÁ0}	vÁö÷âvÆlŒeŠ©´6”éhá/x”/wèl÷ùRoÍ¿÷×6Å_Û?ë6ÅÏ¹e Fÿ1ì¤æá¨ˆSØí!dÞDøk' q'Àæ²\-2¤¤µÍÇrwàa£Ñ4Ä¿&ã7BAÿ‡å©™xJƒHþç¢±ÿïv
D@*	¹Åí Xxò$£b#²–³1Ó0 um—~Y¬±†y6~Ð~€kh8—H‹	F‘»6ÄÐ˜ò&”Ñ—1fEºîÚÚéê¼›	t… ˜S™j	‰·¼ca±rø+pžauñÈçÿ*€ÃÎìîÆÎèãçj?¹/ý_&¦]€‡¾†§µvhü_ÏÅ*Ð·úIœªŸÊ›ú·p£lGaÀ®çyôî–ì,ÿ`<[Á]Ç×ÀNgD#÷/-%Ì¿ZAé°éÐ»ãa}qCzˆeá‘¾û¯Xû-p¢æË¡øÁÃÊ%ù˜ÕÒt&xJ±D½2ú´ìl)ñ‚³Z§çÖOÏ/n­×ë¸§ÍvE23bœ–CorÒìtÎ;Î1@!ÿRp/B€åÍÈ@bIáùwJ/¨fÅÈœp^€£Ä{ç‘ôçTîêŠ 	Î˜zÝ!ðzÕ_\þóiÚ…ß]èÖÆkîsÂ#´
»£!Ì×Àpøkìá/-Òí7Úñûi@¨AÍgð¼BÿæðB„Æ§Ý·}Þn²—¾ürÑ÷š>™„ø Æü)ƒÏ´‚¬w[@->Ÿ-7t ÄÝÑzdEúáì>drÀ^ÍVKŽ§Ñ<©]žöÜÖy½wêöZgÍóË%§'DD<úþ
«Ê‘P‡¦ôùÎe? …åÀ1?èÞÂ}sÞ]¶DV–ƒâµ£Ïv1¸XqáCèÀ»Þ{Õ‡ÄÙ,fÖ5áq³_^;[ÏX÷>vëµs÷CÕ=½xGV"þ§òUy)|9ý2…cåH¡?uˆ<Ššvª(—âp
NFƒOÛ¼›Óë¨î±CÃÀŽ¦ÿÓñÏrÉEô
Õ‡˜ñùSYYDÛü÷T'X«UÌ‰+ž¼¸aI§“«s&l;lÅ#<ß¥jÞb×†0\²ð!hLÔÐF}sëw§XÍî"Àmµ±Y9Mo¿ÿÓí4? â¹¨½kþ»¨m¥ÛçõóFó'UØ†áû9õ5íúQ’Ò–r­jmÖÅ7ì5{•Se¿ÿÓéå,½¥î~Åmä@ºzså~ÕwN"ƒt?
œå¿”Óy(ŸFa$;4ºx
³_’ô3§À¬‰éSj±÷ýÅÓ£U‘oÕ/ßgWdxû´*¤Ç¬0°ƒ!ù<ÄµTë¶êzûd ýPû‹ú[ç¬?]AE§Õâ³¡—d~5p'P£S;3AJ4„bKaHX%+$,††tqF˜SÍk>ñU3°½\Àö"ÀÎ¡:i>™Ï¦dmI‰ÙÀ3P¶g,²}{`û©Àì¤;´v˜
ìÈØQ*°ßìý–
ì¥=°—©À~·ö;¦Íqª®DÃ[öý1±…­éh°˜	ûÕ#ÅìËé=nEt}@þ7ú`îù–ŽNÈoe5®ÃQ}«	éÅÙü[‘ |ï‡ÆùàªQ­ß¨ü!-Æý‰v¥˜Á¦ÆèžÆMVqtîÝ#{ÅÐ©Ï{QFE1T5Ì÷CháÝ¿'B÷‹&ôàž=(šÐÃ{"ô°hBî‰Ð£¢	ýížý­hB_Þ¡/‹&ô÷{"ô÷bízŸ¬™Û¸Óëh7 ÄSº¿§PŠV³:œgÎ/ä×§ÎË²‘Ô^SÖ¥ÉZñs±]@Ó?Tš“ýož/ò*nà \³¡ZeA.œ<»;:¿ íþ-QÅvµ£ˆä¼üTŽÕ´iWù¤•\§üˆ=ð¤hL÷‚¯–I:õ„ûÛøÛ¼„;«òM_)	±!äPN:àpˆ'1²“ÎñIô¤Ã5€Ò?éÍ¡ô@/bD!Kà†€‘E (xB )-p”ø^:ðü”ï§ßÏü øAnà‡éÀs?J~”øoéÀËüe:ð—¹ÿž\®Ôƒ[e¡ðñ`çAðk)OÚ'›•»¨)Å{Ø­-"f1cš£%3§6)S±¡9B³èÖcà
žeç
o™+Ñ(àccÔeçk˜‘hãcãæ˜0¬e–		l>6vðÐcvvð–Ø¡>6vˆgŽ¹Â›f™-†pícdÉ^~–ìåaÉÞãfI^É,±áçGÇ‘œ’Y<bãÜŽ#û99²Ÿ›#ûœ#99r›#œ#‡99r˜›#‡œ#G99r”›#Gœ#¿åäÈo¹9òÛ#çÈËœy™›#/9G~ÏÉ‘ßssä÷58ò2GL<Ê¸{L¡¯™8LólSVÕ£ì˜öìGBÛ§Šp?=äÞ3âÌ”'îb7‹ƒÄ«H9÷l¸,¸[af.'m2f¸äŒ5œä‹&ÓÓ"“~ðÅœn,àÎ•ögäHèc‘}{š€‚ŸåïÖkp¤Öón·WëáÆPªTúnŽÈNæçÑ•ýV8;æÔ¡NmI˜µZzJ-ièæ[àˆÔŸyC¿ï\Nýe€w .½©Ó;­;¥·ßàŽ?qªä	­–SÝ{é.ABØà)‡'Tbhz„-;oä£ùduËÎ–ZÓ½_b‚01oûCzW!r^¹ØÒ)µQ`üÿõ†e§Ôš.‘ ¹#¬Lø-Qß’Œ|"W«éÕÀž„Nÿ–á†Ýè¤ë¾µé›N‚óÌ©Ü©5*X¾I£ëïç¼]”h¯oœ Î†$R±ß-ÂÝ¿œf‹™Õý«1»ì³	ç™
C¹"ÀgÌ\¬ñƒWÊÜê6œætè,gøF $à±ýÀ)Õé#” Ôó^YËn°¡„xÅ2ÌAˆH e¯Y(=«(=ß‚¥7qlðô©÷zî¬‚&©#o„Oç«P’ˆCç"&1àÏ¢gþÔŸ¬& /‹èÔdºz‘É‡»W(î»,¸Y¿»Eõ;s¯‹Â|g¹F”x/aîÍŒ¹ ‘î5Œtôêõû±vó‘fiäÒzjoäf¾	þ~ØàEØÅ{Lð’˜`o/ê-¨x#mt±æy>`ò©V5êœwŸ:C`ZÈdQÇÃV¿ÏGW«°Ýð+âk~),aqýŽ_§iý FKqé²ô$o8óp­@ ÿ5„]o	9DL¼éòE¯Ó:ƒäŒI:0KcLœU²¹më`'9ÊaôfKXmóÞÎåÒ'Ó‹Þß^‚¥SeZ%ë¾n³¬úý¹a9]…)Ðù„`ÉìdÖ'}"îÑ "Èoûƒ/×2S†øëÎÅÂâ:ïú«k¯ôô©	a²û~5¿Ž¸,”Éÿ÷‘wg£¥Ó¬×£³4m	‘,Ü^f'Z!
½úŽG–ðÁMaŠc1
(IßÃ«)æ>Ð’.0/éb‰¸UDXY¼épµèOÉDlK7_•è@Á
Õû)q¥¡xÃ¦£œ–ÉëqÆB©2R|ú€E2HÔãGþ»˜-—c‚çõ* =ç#Lµ9‘¹%ûx)?ö¾­¨ê7ó_.#sœËùå”ˆÖõâº/Î‹X·ú³¨xSdÆ
N2>X¼‹EÙ|²Zd2¦bñÖéÙj	ôA³ÖÚ÷sfkú…ø¶¿§ðMÖÙKÖËYdŒÌdüÙiõš÷FÇ­5º.˜Œ¥&EàØúÓ/Dt–‹>Yæ‘9R˜[7^DÐâe{»5f.ñ+oúÓk¯035›@ƒ¤oá„1ºso Ü?ivùÿgV
“þçrÆþ4c‹ù2co±éþÔÚ+	\¨àÎü¶™Ò;EÅät¡jÐ:<ZŽWAD„ëïœóÛ)ÅÎÍÀZódp=‹`‰ZÃ=Ï¿šÀËC¥÷ÞÀægœÄa)c5¢'àÕÎŽv@Š‡J!äú£¿Sý¤Ã¶"Ç¥2í±„Î	…vXŠÜYI8@”ÿ¬1„|ÿjÎ,¬;ë®ÀÂºW`[Ýåx°IwÏ2ÎÛeÂÖ™=î î 7G|Õº+²Ôv¯p½Ê¶ÌÀ]æH×Úò°¹!LÂ¢»™¸U¹Î^‡Aw³…»`» ´ho„«\+u+„`%¼ÀÒnA6”Ö64‰˜¾ëíy*9yö5lÙ~Æ:ø†ð­¦…tq•Š’#paˆ›á.l[€¼Ýù€ÕS¦5m·-lzHœPt^!Z9ç‘f¼·Å»,
¯c[aîßÖã»Œx‹êñ]¦÷¿^Õc±Ya‹· +[é“hN7\,AÈŠ±V|ËÂ¦ïÖ3W‰»é<¡œ/š#^ŽD(Xkm`XàÀQ•67—ò—;rKÞ`&óo`ÞXë}±aÓ·€mtðì³¼»ÙûD\–^)˜çn*™ÜåÂŸà21KŸx8H/ÉÇ%ÄJÜ)(êƒçÝHç#ë¿Ï3Ü¹Œ›6î>ßœ K:º/á^Ã¾„õÐ)›V"9‘I=Ði–ÇFXoCØƒö‚îJ(ÄäÛ°[]1ß'JAË« ëòJ£aÍõUò¶ƒÕ„öøŽ„ëKeŠeÝJXK(Ô)(7\ºaw‹À^»¬øÖëÏòïä.àLÐ´[¶=Âx„°ÊÙ‚–Ìq;\·Ä:zy‘ÝfD†ö*'®¥®OC¤—ÌmÕÏ¥ÚdøÞj€}—ÞoáBâUa`?n%ˆÅ€ÀƒÁÊ*áÊ·Êüe|½übS‰oç‰ñ;÷à·‡Ï£û6¹ø4>{Eþpƒ€èÿ¹7 §ps[0¶\ W}Ã 7·QòŠP0£åõÞc"ÑrpíÎøÞÎ‡Uæ9/w#Òñaû>™m_ùb"û¦N4<åA'YHà"aa ¯cŽ§Ä3IÝ¦àGˆŽª¤Â`§V¬$Qp:D$þC5ÑýZQ7SúËå¶|Ì•ñå]R˜@*nb[#Âu”l!‚AïÆÒ*öå9A‚nƒƒnƒsKm`¡;û£âp½`æâìòÏO±gDTtà¬«ÁÉ:°w .‡C×°N§KQ…·¢…ì•ÓOOQ¤o/Ûo;ŸÐKß4mC‰ÌYÒKŠB9vá` ¤ýÉ€“®î­ÿÝ,ý7ÐR ºÀ9¾ÃCÓ°7àJÑb:ÿ÷N=ŒO?ðBíàz˜ã.ïe§AŒ©dù­£+a·EÈÎ‹xò¼ˆÇú(h•Íz„²¬Ê-ñ8Š–`m& å›I…cmD¹K5òÜ[à¬/ììlH¡e÷A…×¸¸ü¤ƒâ™’ôL@ê•lÇ¨sÒ%dÓ‰xr’0Ïúw1ŠâàÙß/Q9ó§÷·mÂ+³{qYƒ)£Øîõš¡Q¬¯ˆÈO—*(ê
nÐÂ°Oïb¡Õ{Ý0ÌÕRõ†>‡™Âõ(gZDYÑÜh'¸Y-‡Ä­Õr­ÁhÕ»a|læ€ãÄôÿFÚº8yf}ÞøKÂ ¯?^Þ¨W6óúÅû¨:WÒ>7
Ó§—­óˆ†1](Lƒˆ˜FÈËWr÷W2w¿(¤€!"§0SKÍDåöù@çÅfA{,zM$Íf·Ç°„îìBvzñ!$Ï"OŒíåäYCÓš—¥¶­K}8éU‘|Õ–«ý'N,éŒ|ãì…3›‹˜	>N|o<T•.M
£ùáDO~#27#¿A…•†ª5tA‹B%öŒè µ žµ`ûŸcÀ&÷û¬……çatNZÁj7?Dx›O\˜…:åîôw
ËÈ~äðZL®qazš¨I’eê¤i¥J´Yç'ÔPO™0ì!˜×ük!ƒ…“¦N&Ç6.Àw`1|_‹ÿôà^Mm}óp½p€-o‹óõ¸“°ãŽ‘ªøÓÍÄŸhaí˜ÚähÂúáL…õãéƒŸ_X?ž	}(Î°~\!{\¼AMÞˆ‰4ØŒ©ƒ¸¯Cz7ãCE„,ðÇ†$ŠA¤ã·MÄ¸ˆJ¤ã‰VÄCçQ
qJŠ_¬¯Hïž)Ž±vØ"­!œÏOÇ°¬P|cíp†¥Qk‡5¬ìŠ9à±v€Ã7†>vÌÁõƒvn¯±pv»©óA‚¤c`qŽBÃv%ÕðÇæ¶	w„÷¯·¯³ì^¯Y#b[gq®ÔYäÖÆø‰]š„)¬bL±Ð†Ñ ‹mLÅÊP‡ƒ"Ö¡7$r±
´Xøh Æ&ìbmt•3ëD`â0VÔÅ„fòÓ¦†bî½Äèlìb4Ò"7áÍJâÜAÑyÚ¸rW¯˜ó0:ÄÞ7B­(Bxe¹#ØÕ<?u;o£ûµõ:YÍÓ`x¤}'ÊŠxNm2ÏôÏN-n“™Öñ&T²ó')R–“ô‹“(‹C•¿òr:
¹Ó¿U«g²qÌ%&åIªô´L‰KÚ8
†Ù‘}>XXH6OrLŒtàbÂdŸ!öë}ædŸ,˜"“(û´±ñUôé”}YUtbå˜JÅ$ð¥Ë1D*1Œ&KZêzä”~Á	‹ÆzÄPË!Y•W;óŽsi¶äßÖ”ð„ ºZFÄ`/g4Êˆ6êC®Þe$o,¼åj1uvªÔ·þrpã” - ÀXµÏ;gµÓcòµU¹nJ|(ßp]"¾¼b@ÿ_÷¼µU*@B8ëG%žÛD÷)Û7ÃëbŠ$Z06vï*À–‘`K~ênŸ-ÓTs™•O×r‰g&cÍD”qI÷™=Å§Cï+a ÷uÛÁÕð=Iˆº
 ­ÈÚÐõ§CïnÛ!6yÏ™òè†KV¼>!†nn°Q !ŸàOŸ½¢VžÙt
l°
–Û}ÄÐÙ¯½tau'{¾zÓál±q…n¼Á—~["]"¿á­ßêQ2phÑ-X-ç«%;*Y¢ÿ¡Ë^Cç§b%->“
Ï¡€B2Bà½¢à”3|PæŸô$`o;Ï”Þ>Ó»‹€Ë˜ø(d"úˆ,›n·}tPqÍn«qœôÒ­&¿ÞK~½oxý2	óËdÌ/’¨>´ziîÒar—»¤¼>0¾>Œ'ìð(‘0åµ‰0åµ‰°C•%lê(Â5ºuÙC>#@"A¼Å·ôL«ý¡vJÔ/»½ó³f‡@¤’ý§Á±c€9›uéÓ,;×­¦×E¤Ú<Äy€t„	Qp+wÕJå ìüóŸz#Ÿ½´ûìUv°K]-*X_RÚô¥‡3ÁeA	Îýµ6«8[ÊxÀI·~z~Ùpk½^ªl•Ë ½3ÊÏTeB±ˆ²º šq—£DþÒSšav2†R²UuŒÈ¶v—° ¦PAµ*|”i@d®$áØy™Hawœgš†g * "”$üè¸uÔ¬Ýw•Þ[Î;¶‹<a[éÙÖ|¯Ú% ìWq8øÏkŽwþÄY¯:>%xÄ»±;n7Ñþí¹…7bß5{†q<G$ˆ7VAµ¯Ü|¯*âï`#h€rÚ½pÛçí¦|ïkß/úü=ê?!½ƒ§Šåe¯´9‚¯w[Ðþj¶Œ Ã!›×Éò*¾]#ÇÀbØ¹SŽ¯Ñ<©]žöÜÖy½wêöZgÍóËžè‡¬ÆHˆ>}ú
@HðÀg{†cõJŠ0öÁdÎ,2™!àòlâÔƒ¦ÁÍì–‰)T#‚×T*i"e¼…?ú†ñm2Ãˆõ.c¬BÞk¨ƒ÷Gõˆüûü¹”h$gÐŸÑ»‹üOÎ/”+jÞÿTÞàß§MïËé—éìvJ)ñ§z°¸Üm È‰¯ôù•%äæÝœf ècG ”}üŒn—ó{ùYí¥IÏC@ÙóÏŸ$°ï±ý÷T§©6X®úcNQ14…¹oKÙ&!„\ynH7Z…ÂtTŒPTÍûbA{©JKõÙ£K<º4%‚®¸›ÉÒF\Nq÷›/KdHï(ëä
‚£ŽÄªèms‘¸œê²KUßƒÃGi\B\9¿¨Ÿ7šaÓ¢ÙÍŸÒ¶Dÿ_Ì²¤¨ cl"<õüœ§¨-MÈˆƒ2"‘i¸¾?¡ÿ“ ïKo¢6t­Aù”¢3¢"Fd™|gÇ~æ«ßÆNò@ÎÚ$iNf“,ÇŠ²$g“&K9‰Ö“ˆƒ¨1»^ÿW{?>Z ¾ÄEùý­öŠÓèÂ9YH³È¨“eåã¤,éLÎxÙ4ˆfœdÚ;Yªx$ªpâ˜è¢#–ÝöË½JýT‰Ù„‡²y·ôˆ†:]ˆ‡Ë*„FšI,ÈÛ«èÀ›örT	pž)6Öùjd7´âð!5ƒú¡š2®@=Ý•Žè1ÈCoÔ'N	Œ§¥)¥Ñ[‡ØÓy†W†tåhRJ&?}@þ¿!2î1|s'³)$x"ûŒ1~6³Ù;  µsÍåf<oÙ]ádÚa©ïK¡¦»-ën®ˆ;-adZl¹˜`áþ‹ˆÕ^­Z¸ðê ÀëÙ`îªò=-®³¾(¦W‹fºÖ+Îî,œÖ¬ÉcPsƒþÜÄáúúöX{P4kró0Vm¾&[WÓ`5ŸÏPä|áýO`äïaä³{`òaÑL6u-·pÖdûèŠ`˜× ¦ÉÓ¹·¡Å%\†ß†ÇëlzC{<Å¬ËdÑÎY$Í‚«²!²2ÒÌŠWÃC»Ý4s€|#©ìÍ:¬T]¼LÝÐŒ'Î‚™ 2ÓÔ2»CC]BâÍ°
ÜKõÒBuWL’Nž*··<zA§È*å¬Õ">ºuûƒ¥{ãÄYAß¡$S,(Ç Œ¨7%ë	/,ä‰l÷”ÿ)
K Ý:Xå²µ•£ÆÌó,Ú%Òy=ýKë¹èªš]‘®‡¢(”t°,lÒuúk¤ë¤çáh¹7é†å•’ƒi)	Y9áTžŸ1K‡,Q¿Ò=C¶6¯¡Ë§düÀVW®@Š¸jŠvQºbyŠri4?´êM·Õ>9WÂ‚GÂ »U×<±¦Î–’¾¸iEúwÍ'ª©Ø!ËT’,™$E%’„;’’N–Õ¤œ*ý[sbÕ^EÆŸsiI'l-c˜ñä­[¯¡P¼½<yà88;øF[eÛ±£†—×	’›§ƒþq¯ˆ<>`X…×NŠK^V¶\IûõÔ¡)$œ^³§+X¬"hRáÕåìÜvPGˆ›	Æ¸uBPô_ Yñ/Eð—"øÉAZ:æ»vjŽå»|‚X’>{Û(—sí¿m<î‰¥ïÕCÌƒÚ1ÂB-Ã-èˆ¸cl+Ùð¯ÈëúqÖNSÒýxqzÍ‡õ
á9YzPÕä×+«Ë'ú^Uòž®6«ÙV›Oèž!ühÇDX%¾$É¼ñç3®Désö•Ïþ|ñçî`
MØ#zçM°º’}Ë{âÞ!c·5ŽyÏš‹ï‚ùMt5]
ÿŒZ€ÎÇ„ ¨‚.¿qª‡–8Y¸wž¨¿ž¸ÿXÝ©~Š[jfTòµF#IÅ àCa=Í&ê•Xy¦©u©Î9U…;&èR}'+ïÕmÐÛã‡š â\õ†>«H«ñÎˆk‰'ÏC#½ZÏ½hvNˆ…ê5;díïž¶Nš´çì8¨”Ää„µs‡fþ0|JÃ%ä„g3ä`Ã×Ï_‹ï˜"34®/áÉ\væÒÎovÞóÁlèqÈ¦_ÔÞw¾ÛÀn@\±]ork'šÎe¨Pk<m/ÆÿÓœ?§Dºâè	zÊ.sÔóÓ2’¿sOmCÑƒjÚ;Öý±7½^Þ”!·EL ì’’Bæ‡k´˜MB;mßqîdµ2ûÓäö#KnÃÏ«Ú5ë„5¬¦ËNk½f»þ÷ì¼ýømqnObs’(lÉŠ7Â,¿ÓE%|ü4(=½+#O¨‚ÆÇJ	pÒmÜ…ØùR él¥øEºËª0à¢£èÊ€5«xE]uÀÄaï¼Ú“óËë‹>4;ÝÖyÛN}pÑe4:ŒFNƒ!ÓÊQ~®gDï©§ÆØ8ŽB{’t®'þPÖêÁ[Ø[~À'ëéžý¸µŠr´'÷¹žä4æÓ3‘ž‹ã3ßÍÄØéÉCNÇÓ©ÇyôtwU€XBú“ØUkrÂœ–-&l³²rÍ¸nÝ³¥„DBñq‚51§,eìGšT‹¬µ£Š¨ÜN³þøLª™´ŒU¢›S#‚ŸÂ˜&Ho&{jaPu&1“Z-;Ïž'óØ+3Ëd)û´`®¨0=âhDîN<)Ñé“Á¶1ÊdÖB§Îën½êÂ§ 4ïzïM¦šÓ½Zêêc´ÔjÇÿ2ÔÑôéâ¬shb”êdjæ6×	Öúà‡[ë¸è3¶õÚÅã3Ò&Â2šh„n Àó×‚×¹*kr­sÙQB_ÿÊûKŸ»ÇaV¬ÌêÁýšÕƒGkVþ2«æ3ÅUÓÜ(ÕîÇ²þxËštöåßÂ¼^¶»—ç^³AV*ÿ_÷ñÙÙD
3\#,Ýò&¡ûyL°I®¶ÃFFå2È
©¤»ÿ³òÞ.¸y$VùÐÊ*Þ¯U>|´Vùð/«œrà²8ó;SJõÃÂmôpê³ëg‰žû9qøLJ£r?gR>\²kHiT2HÉSƒE#ôÑ¸fÒì}Å}H’Èwa”k¦™œ„“£Ï;%:œ Ã}j90¹µZ#¦f‹¢‘3æG~X? ´?
/ú‹ëWR[ä¯Bf“	Ü"ºÅ~b¯æãÕ5±¿[ô¿¨Õ³i°dp†^0 4nv<8EøÕsBî
#¦˜cWm!}!1ØÝ|¥ƒ	z¯áº:ö;gŒšlK•ûÇê¶S=üqÔ^Ó{¢hÙúŒLtÐŠx˜Š@qÐ•‹4é_4(gäÁ6e—xD°ú ¼Æ„:<ÒF¦ù·ŠÿÖ¶Q§„a‡êÍn#6”åk¸)‚faÈcÍ½2Yµ ¢x¨ö¦‚ç>·E¦ªè-tãcõèµMGú*˜Ý¡,$f:ò¯QÖÃé³ ¹´¯šÍÇhòœð8ÉãYƒP¹v˜Q:£kVþpW§êò®Fðœ²ÅË,v#Bã8¬á®.ð|“¶Iª¼Íè;¿è¹µÎ»ni6_eF<¼lµ{¥MN%ÑáâçWÿ×mçéŠèƒ|)’ø¶˜“3…öl‡öŒƒúuÆÁhÇ·›çÔlŸà£c‡râŸT³rÐoÿÑk–6Iïw ÷;òò9ç×1fÛvdT¸ÓV·§€f2RGÀMp‚9ŠÀ‹2Oð‡ÌÞë)‡¥U9ÆwZi(ªÙn”Êl°èB;áõçÎæÞ´ôÝª4©¶e·íà€¾¶Fñ»hâÃÆ‚[Ì`ÐŸ–ø='xÜÊÀ9ÅVE¦®rÎ%®iÕÐ´joŒŽ5—:²)üÌ0,“ºR +EtylÃ©éR®b{—¨L·¿Xô¿•ƒ®é!¢›„EG€.ÉGbÝ] (àcù†	àÙÐ® ƒÒê€L*€Òe?™ã4÷¬ÖýOêb§é×2s˜®¡	0º`~¢Ôp×.Y0º»¶Æ‹à¬W4”l5— «š «šV?V-¬aB¦>~g÷í9%Å‚±º÷ÉbÍB°íwœ#òÂ'&5‹'V‚ÿ«çª/å‘r¶ÐZ>£=ê´>4q«F:¹Ð»²2åíç&‹Lç˜‘H_2DÀxby™g›Ç¼Åìe8žE$”%x°B¢Þ#]ôœù,|âþîªÅM7¾ð•^Ô”ÑHˆ^ÿ/¬ú‘+ŠŽNóÉá2­Õ‚^%÷E‚ç©ÔÝÛfnÂ±sßc¸[
1°&ˆüM|ÇâšÊbGa1’ªœ13ñµoÁ×BXVËÉ²Gª‰YMÈj"·ªÉÜªf‘BÕc+„…ÕBXØHœÓô9Ý¨$±P]´X8´™ÈEp«‘>GYø}2¼Zn	+i¼>wÇ³ ãVëjYÝóÁÖÔ´¦*ôk¬¾x—Ÿ;­)å"8ç9W™që¼¸å'[nn«qÌð’TkšÖ‹ñkÃ¬K½Ä…ÝZ‹´{\]ý¼K˜{shUfMY= {Ä"¸¬&q(àiY’XÜYà8&GD‹gd'_h31Â¯kµh²Æ…‚GqÃmY„ú·ÍŒL+™œÿäB|ÁäPPU­–¬Xµ7·î‚4zP£ñ¾¿ÞöpÝíWóÀ‘Gb3¤3/dGþ2™ŽtÓñþO·ÓüðÃlGÈZ(óÜl$þ2Oxn*Õ«ÕH˜‹P¹Îœõ:£jo,o¿MÊÙˆÔíîT,—èÈ•¸ò¼V’ÓÜX¿W©ý²†í3+þ”ÍE>ÇdYÍÂÛþèá,bƒNsqÑüØ !$ËÊÁr¶(b§Nn‹ßâ£– ’¾±§›O³	éÒµÂlíOw¾ãYAg+”w5õ—{Kø³ô¦|lc~ó-p'ÞÐ}à.Çƒôú‘ä‚rñ¼³– ò@±€\Àû{ŸÀ²:ç;b	ÌïþrþrlœV™ìÏÚÉCû	¬v-:¼8?>Ë0£³ðú(‡¥’)ù¾Ò‹è@*÷Ü9ÏÄ´çñ‹¨«bœô„Õ½—KuCI Ø~_–`÷AÞpÆÆû‰eT‚ÅÜ©O,uØ˜ÿ”2DYÝ?vÎ@aû	ò§: ¿Ôñ¾Pw0``,d ût-Lq*_HJÑß‘ñŽ`Ùy#Í'«[:ˆ)?;XvëaüõE¶8¦0ÌTfppøF4zl,Ðœ´w¶žkžÝÏ–’™Á×¼pCGMúÀJM"ƒzËÌkäÖkætSÄïfÔ}éœÓ;wøéÁîÞé0ãü*%ÉÿƒJ£Òm´›iTU¤Œ°z .AXG%t ÄÕiB?ªT~E¿ÙŠ	âHˆ<¬ÐàYáÆ÷–°Iñ1O‘ÈðÊg@Hg	«A'$(=Æñ+valœ®åØ Pˆ<ÕGHÈ®Ç¸hR½9…>‚¡*Ìƒ-°Â”ÆìÆ£Ý<aÃÄ‘½¿ŸÛ³ÿaŽûC'¦Ý×¦ÎþŽÊ™*ø%îD+|Ë±}Ê„ÿŒ	©¾_NÞ™.væG+Â<ÜÄ7ÔhùkÞÿ›Î{VçqÌýp¹±{œÿMœ­Kxú‹BÜ÷¡ Øx12«âŠJü¥þõÀÁcÒ¢Øª¢© ñ ÊÀx÷Á”Aâö¿4Â¿³F8|LáðA4‚z9G'rhýÁÔÂpF¾öú¸qä,ˆ¿¾„cºtP=Œ†êÁõÐ\œ÷ƒ`y³X¹ƒÉÐé'þ~ƒÁg‡ŒŸ‰‡ÚQcñÃ\â¯Ý«n/×O›µŽ{Qo‘_Ï;vnXk4ÞV÷ ð]ŠmÕ½|[?k8ü!ÓGn÷}ë¤WvðÂŸØæäÃðÙç`u5ñ!’Tp6”Fp;ŸÒe>â6>Ö÷ëjðxÇÈýpYŒLùC3Óè>ðÂVcù'†		ýUžýê+çÅ–óÖ_’_9¤ãÄÍ•ˆÈï+tëE¨óp¥G:B0ð#óÐõX6ž4k½ËNªñÀ¸ %4˜L·óàH E3³Ò§aÞæÔ9ãšN]a®˜‚"]Dý#|ÆWë@²¬Ul•i-„îáO¢ñ³Ì”PK:UFYY1e«5¼©’ˆ’è¯5Ð¢rŽAh¬¤Ý ” ¦6îoÎÃ1¡ bU¿vŠè¹NÑó$c¨æà[°ô&®7#ñž|³
¼…é9õßÅ«ù’,ƒú…ÌW°/ß”*w'ì§,rX«@>#æË[,Ùc ÄóWÞ®E\µ…G£ÌîGÑßàF¦ËnYÔ7yýPë„È=Ú{|MÖŸGvç[Q…ŒDˆ½GÑ={wÖVî|Ê{Õö^ze£nðt
8ÃÕdîÌ‰3âÁ5wTºy¯ÝæIVÜ— “×\kj›;äõ=·Öí6;¤û—gîE§Ùm´æ²‚zOÐ%’*\Žñnj}a³“üw1[.Ç°TËß}ª«}é½oB"ùoç¼×;åÂœ¡?=FhOšÔ·æùé‘ŠOíÄ%— V‰·< ç’Œe zcCâéÇjY—?q©%ï —§º¥ˆíc3ÃøhôÌƒÒEÓ%IÏAyØú©´wÿÑí5ÏrQ¯P–@?†1CêPCš£Fƒ¬ö/³ëázè’¹N³Ö=ogè¢á"íP‹¯÷‰çf8š{âï8L*Ñl‘oÊ ‰ü¾:)©eçð™%¬o1 }HÄax
ýéæE§E–”›OŸŠ¬ €Š¯˜“Õ´Pè‹?ç­ÌVšJå<{ò“b?-kDP&ú#Q¾•ÒÆ(%£C¸×Ä·Å=?Áá6ÏTŠ”ïSÉ‚D¥&ñVÏGø<uDÞºöé?¬h_[QÖ£çÓñ7…®tFó*&`ÅŸV^Þ½ ÿ1J”NpyÛQ_†{_1ÛcËŠÜDm°ÞKffàHr/¨Wf}*Šöy/š6ña¢¨,†ÙIëé*lÒ(•<
ûò´!ãÞj¿#²z¢w Ö|rÎG£0§ìµ3à™æFsÙ®}¨µNkoO›öø.§ý¯DåÂš6nx’›§’N½¥˜õí3- iÌ¼è2šB{"ÇÞ	÷E&kZ æ6íäO&ùVèyÈ$ôz¸Âã^'29_‡ Ëö¶Ïÿl¯C,²ø¨ÑOãÆ=nêÐ;V.t›„g˜"€µÎ½FU]ÅÔZ¦ ILŽÌa‹lüîÂ¿x¤‚FÙÌF*ô×©¸÷·í/~É]`dÁÚMAª³ìuYlv©xÄ–¤Íž¤ÚÐnW2¼-©Bà“é›lúy#ÉlÚ™êqIô¬iü[í“s1üí™I{±¥V¡	-£[·?Xºd‚,g‹oVõØŸ°ò\…Te×ñãôº\ý9y–µRû£,Õ®Å`é…¥Ï{Ú·û©ÜþP½ç¾ou{ç°ûH2F8Ÿãã›Vè^é#’§º»ðCÝ"cWã=Àõ
½Yª~Ùú>™õ¾Gç©£—›à¢üvqjÒÎ›éŠ¬­§ýÐó¯Ïž9©þAíÌYíïnûòLðˆxL½N«ÙÅŽG
ÏGÉä%“’±aùŽ
½ŠµB
•’³é¶À¤58œÑl5î†*q€ÆÚb£Ô¶ì!ñÊ[èÐá¢	B9ˆ;tR:­’H}—u
r$’´^½šµ¢ØÈÁ*XºþÐÆ>‚-äy/¬ó|ZíµÓVÃ­_’{Öìù,2d¶Ø§ìø1=Í^‰û “kHpsWîƒ2‡S‹é.¥¯3¸U~¦€.Ç¹ŸpÒ4iFð›Ój`Zí j!Òï¡Ù£‚'jŸÕ±Qé•CÄžÚ92„Š,¾Œ³–;£uª{Ã×Ú{'‡V5¡Ð–„l¡*ØÝêñ!½s2´²ÍV=ìÏŸÔeÒ3JçŸt'.ÑEò»è½Ì•Íí[Á}ôîEˆÆB=;ÑÉÐñÿ8?|æT?CÌ4õÆ}biA°„°ñb®Š
BTåàE0˜—?à«>uåU½g°+2fBQˆc-¿¸ÌB“óÙ§Ðd¨%fº¨ÔqƒÕ» Eèu5¤±âd·Ëù›¦ÔŽÅª<®…â,XøiQŸŒñpÛQ•Ä7E÷íz=´[Ã‡*Û}l_ÆQÄ'Â v¢…t–#wr³öŠN_}Œ§Xb°ü«œ^± SûÒú ùÜÈü¨Ë²J©óM—Cm\ÍfcgPyG^œÁ] ¼À;ÍyäW?Q®O¥ô{â–N–0§TK"´½¥·˜øSÏ¹½ñ	õÝ*Àÿ á!PQµ°7ºÎ84³Ö?â.×¬—ôÑë:hUêZ¯×1¹YEøYéWµò ¹`ªt4TÕÂý)2{ÿ¡3zcþp¡£¯™ÛV‚GÔÏÚ7Èó°ûµKl0<×|°(O¤¶;h¹£Ä Ígø˜ýÌá/‰þuaç¿Ýäo}åÛEßƒ¿d%³]Ý;x¦\ú/´!™w[@2}1[†@Œ½©Ö/Ó8³/g×È°Øø`éO<26O£yR»<í¹­ózïÔíµÎšç—=F9žÒ@Š.± h¾ƒ÷[z†#!¼5Ý½L¼¨W½©/ˆ•wòRwÐŸ©×ñB?>vëµs÷ôâóÜ‘×ðnÄL}µ)ó¨P&¼OqŒ:"–žpÃ°fæ©“-})]#kÉ²¥±€­HJ‚GÖq0É’L3¬ïO4[–ã$¡Áå2V)þÌ ÁùŠ9ÆÚ8”¦,3TÛå:<¨¸¯ãƒk•ùœ%ÊxŽf.œø‹	–¾œÃË€œâTN~¸tOîý8Ü½/+¶šø·ÈÊ…~¥Wn¢´üÄx.,NÕ†Î„±ýyK ÑCe…–ó^zcoB<÷o.Y‹.³ñØ[9‚Zz÷8™~ “æE“&êµsŽ¨bCÀlö8u">Aï¦À(ž#ûàÌ4@¢›b£ ò¦£'‘ªäÌÇýo¶¬žãq@
J¯¯^âYˆ.	YÝnÃ¸ dLLÊñ§8\—ÅC#œø]ÁeùHpŒ?J	qœÖÞ•6lqÿî¯Cã`oàûU^º‹M)	òæÞ_=Þ”¾Áô×PKJ©Ò2à-YV<di­ÿá“-v”¯Õ…$b—,—:n¯yŠ+@%‘.å»‡ÒãÄÅuû­3›Ž¿‘<>sûD‡9°ù.%EVÈ’J?ûCœ¡Wô¦;ü|g›b´5:’õÈr¬ÇÙjá¹·0Äßüoó8köˆQ%’Ø:o«E
´ÖÄC«òºãšg¶!-š¬ëRC:M@ðÞ°‰£®á2ôfÍî(ý©ú¯¿ã¿Ú½Ì|¨Ã$_?0É
¡Æ{†ßÐÆ‘ŒÚÐ¨ñ¤GÅŽf.Å¼Úà>Éº€©ý”p•xBUùïáñIÓéjƒMõ8µ…tAäš ™/f_}²íOˆmg‡,lvˆòX8;Aêå3Hôš‡üM™·ðûc4#¼r¦dL-`nY0å¿ÑÅ:ÑW—šßàÝÁr1vàÜ$u^‹¥;<Û¦e²V„³u> ©Ð5_·ÙiÕNÝö9Û æŸPìâ3\ž´:gÖˆÔã]OÚçÏ ‘40PXfã“ŒÖté¾áËP²,~¯˜M›1Ð2–›'Rµ‰R»*ëÞdËÓñ&³¯Ä;\†x näpC šŸÛÂpÏž9ŒÏìŠí__ÙÕEÊcç×ÿ®üŠ¡·Š,˜òþLƒ{³pG6ÂWJ>:±C£5-Ô¸E%.%fÒ¿#¢ÞŸ#²j—Æ,§,‰|ÝcŸzSC
L’ˆR:vºŸå¡ü,r•"P¤#æN–0žƒÃ3‚gŒé °`€ŽB)ù‹I#,‹ˆ”˜¸‘8¬#Ò©MPg<¯‘Ià7¼`9eßmÁò¦K€…Æ…˜žË<©µN‰…L
A²à£?*ýtüóŸÎ/¬C£t£¨<³á¢Ö©ƒÜì‡Ì›_iy2Ï šWÙfÛ-qD ìD‚™XH‹-í¶þ«)£˜ð%l³ÈïøD›ÐÓ½¨Õ›4M:÷aA„Lý¶ä‹ÐÒŒ«VqÊ+¡Ê'âBPEbd66¶8;_¯wåúqTÂûEãm÷²^ov-J|?\ÂIÚ.Š*›
ä›ä³„N2HÇÄ•^*g+°fY%«ô‘‡Ö´q;[ùéË-Ü‘y‹H„`SœÅÈ6¿åjv>BäÍ»¹7 G$ÛIÉ—¤àŸ*9L´nIb^0Ø±´©óöòä¤ÙYcòT`F„	Ê>¹ÄãCòX—¼æŠ¼íi&:jÊü?+2úóåÂ]–åè0pxÆµ²Âž&r13“ÒZøÜä;ÜCîKmJš¡[`µÚ«Éù¨Éãø´‚ƒ\ËÉEgü¹!óýoãÕ=2³•ÌeùCEâ:`sJ\jøXùštF¾%úFK!±Î43ŸãNd˜ÙêÀ0Oµº‰	˜àCù2Ø¿ù‹ “­ÎÕ·¥'OîEÅ	„¬¤®CnÂ¹ÿ‡Ûî[åg‘(—Y'ÒÎÇìH"d—@âct0ÑÃ*Ýáî*m™8r¶8SžlÄ&Ó8'-²¨O´QL`ÚçN)JÊ–öùùÉIr/Èç€Õ,^,«e@“Z c&¥Ì*ºìíb-
Æì6UMù†Œ™JeÐ*F þKa¹‡R˜g5«ÌÙßmˆt%ŽãI”ÀL»Pg¢˜–˜s'nìËÎ‹¸q Ÿ?ç\QçvÉÀÃ	Æé‹—«O°xYvžÓÍÕ¢Á“¯ªŸ^±¼_d_0 ûþ”æ‹”¶ÂJêùsj0‰Ä@]üö”Ü€#òÛl÷`ÛûÇESÞ˜ÀaU‘,¿Í=œF”ùdýñZ‹X¢m4•“ÞaN÷×åÒÝå¢>›Ìû¯T‚0ËV™£Úæëçd}‘‹àš°}L*I8¡Y·]»è¾?ï)¡Õ¬$4?4Y½¹ì$`[ÒtôgµöåI­Þ»ì@ñHq¦uï²ƒ±	î¡¼ç5@N´v&gcä-7ÜÝ Š$ÆÑ¸Ž'0­Ñê4ë°µ+5ætðŸd×ã¥úé–6ý¥+ý¨!”^¬ËAU”—;´ýÅ²5¼Kõ9zÞdcµ†	èÙ’¬ó"yéØ{-¡õˆ•·ñ,BØ˜b\T›•í¢U™sé]OÒíuÔá7º‘Že3ç¢ù#àSÛ~öPg#6#”ðu–€Ñ'KÙÁü[é™|aHœ™gñ&ü	™Uìªzð"ªì "AÇ.È'é1;o¨I<]7#§qsMƒˆódC›÷ÂÉï¿èy^*ô‹ë‚7¯„.¢cÀrO1D(¡µü`I]s…F“€ã8yì·¤7 ÉÛš^CÐˆß
Ö5Ðé~ÐY»DáÑ˜rçÛGÆÂOJ`ºdðQºe­¿Iv'Þ²ß 'Èa:ì&MÄ#%bUsµ^Â·‚»+\*uhÀ˜ÓÑÛ!þ¡²G!Ü…†7&žx8
'Ä¯ïÒ›;™ã1uþØ·qÇä•:<ö°[èà%¶;,1Žh¶Þ!õ/¶"k'©O‰/ä9.q›¡½¹-<]P£ý“[à»§ã;¾†s^kk(©gEÛ&£4žM¯aïÕ¿žzpl™aH©Î4LÀ"š9Ï>aK‹'êxMaíñÖ|ª¾åý|ÅÖ!x¢X›í¿°c!<Ó]{›ž='MhèÂ"–~¶?o7KŽÉ®pÔÙ&ÄöÖäÏà†Á=¾Š½híF­Ó`J81`•¦ëåMŒË(Àšê®,é±é‡^¹#ö.õð7gÙ:Áo¾ì1îmÒ³áÆ.—å9õ„a1y6 C8¿O üÑà‡„h½>³ß¼6sºW>SŽñðÈL®Gôæ±ýÃÕ¯*n#8Ô¼Š8Èh¨ÁçÑe@ý{Kù€óá•”ÅÐ3ÈÑØÖÏ…PBÞ—"J}lC²|'– š9B†øÔŸøKz9µ?mŽgp™G¹£È8$ÓÊ}²ó¡
Æ5^™-ý©ƒûè/dNJÂ€é©Z¨Æá]ˆeÅîBÐËÛŠò-¦™‚…¯Ô4&ó¾|ñOŒ	GÑu…±—|;ýÖ'bÉW!ãµŽ"¤ZyH~Lœ‡WOôóUô¤”šæ!–OrÚZc˜Ôqù¿´ä«û•œƒò=Óf1¦Å®&sÐï±Öš¦T!ýåÍ6³ÔWþô„yDD‡ñÏ”§Æ¸ÿÉ?â?[±9’ðù·4ý#ÉûÁòâË²“¡I$½$écà028!lÅ@˜¿Ø~¤|4SöÓbÙ:žÍ”ÐWõ¥ÏOïœ¿rNÞ	ˆÑ:xëú'¢I ‰K=£Ä±ãËbüP¹P³“ãÛô—g½lÏ7šÝ^«]ƒX(­£
Å½ê#$Ú¤b”UîB·óƒÜgý/„pž2ù(Ä}ˆr=èæyòøº>þpDw’¼ÄõúºMý|BÈ“%*¥í€ÆÎ¶£óRÝiSxª(wê7³«¤)µK˜!—JòçòÃ”™–ä_¢s	…[ˆµ»'<dô·˜vÇÉíxõƒúlÎèŽ#œæëyýÉ1.2¡´9’?%žÚŽs5ž¾È®p~RÛ)¡%XôÐ‘„>=ìC[ÁÇåÝË Žÿ¿¬T*>ñý¿xÞÜñ—œKpPV"¨ñÒ_|Û¥_Á´¾£ºžAi>»-ím;þë±}üõ¬Ñëþú©É•ßœÿp¾Ð¢Ha¢’,+šx›pS?C´ôÉ²X,§U…ÓÐPý-ôÁqèƒWÖëÑ¿}ú<íRè›§‘oþæT¡</™«˜¿’p¨Ýå‘r¢‚ió
Yºµ|€—1Ñ‚ÞÔOŽULBëÉžÉP„­ºSZS&0`(¼d°6]²lkÕ[°ixÖ<;ïüÃ0¿i­ºîò‰\ÐA¦58¡ÂÖ–Jþ–è"x¤tøp	š.Pº•‡É¸„œ^ðŒ½™%_=5%E)aPbò¶ãTËÊR"<¸¦ñd~»Õ*ÕœU¶ÕaxÎ<<Ï¡ |ÐõÜaqðÜ"®âÃN6ý(~qÃ²Öa Ã%ÕŒ=‘úçÂ_z½xC%Å+ÚvXHX²ÊdrÒ¹fÉ/…Œ§B5&y†›u}-À©9LNAÔ-‘~r.ðä<A"Ÿê;áñ•èq?˜2©äk|]óÅûfÈÓ‡ªŸ°.Y^`YMüÔø#vÀ _Ôzïá Á't°£Wî°ÈÉlŒ)9Ë›HÓxljS#Öø¦Ëþâ$ŽÖÔVA¶&õÉPkð<ÜwQzþÄkMG3½5{˜°®¡Ñ]ÛãÑ#GíÙÇÈ¡’äv#VH¢ã}õ6ý{¾$Ž?ìæ¤ÀžÜìy³c~-œg’GÎr7üE†ñÞR‚gðZÁ³M o<»n¯&M^]þ–ivá¯%Hí­égìz"HÌw_W§³ëð‡]¨ºˆé‡'€}¸Äùzœ'üj8Ó ô‹n‰ôÎ–äIèÃ`Ò_`Ž±#~}Á…ÔÆPVø–}r!DF$AÒR—qc
òÄxÅæyM¡kO	·•“HaU&óéÃoÊÊ¹¸°3·ÂH“ÒJQ`²òÐðmù0}UWÏ Ð¿Õ/žqu¤|ÄžÈ»âÏ4¢‹Ub~¼œÿê3œÙ–I¦rB‘EÄÒG·Dt©V’®qôÀU‚•—W!Ë1¦{4à³Ãê'¸a¼¼ˆÚWµ‹¼kr'¨Žq„(:™àBOò]vB˜9êÐ	 ¦È§8ˆ2½d™ÚZUtp@°²·âÿsÕ?h9)»ß¼>áŸøs2›B Uü=ì;áC­ÙÍl¥5ó§«¥§<¼ÁlJ1ÇRÏÙvôt$ûBŽ°AßìO¿Ñ“›X=ZXDíIÉµéd&MW‡eCvS¨ð»äáŠBJ8â)X Ä/¶ÿ'!¸ö|ÈDçKlÿ"ú0"”ËÿŸŠáf8©fSt<Ð•Œ‰ÖÈ,ªŒLE‘3€
ÃŠfºy¡þ)®ïÐïfv¿í6!LÌŒÔ‰ «0ê“«E´áàvÈéa~‹N†º¾‚FJ:DQ=]äèžý`x¹ÛÙâœÅVÎ¹h6@3|ÿH®Z±óT'ºãz¯öUì,Õ€ªú0eÛÊ~ˆÚk^é&ÔÖ†¬KÐlYŽÓ,Mˆ
rDåSJåþ¯;Þ¬–o	?ÉalcÆX¾Fg…L„7Nª•v	Ÿ¥
ŠÎ óœÀ	´É™,yœ Ì4EÉU£/£pè…NÚÐ¨ÇB§AÒhNƒØ±œúHVÉ`Nƒõ†’ÀLÈÇ1v€k‘C‘<
ÊTåuZ§T¹«Ö“÷ðßýmZ¢×Ê]s¿Œ³W_ß^ž½…cº'.RO__¹BžjËp X_èaÍ¹f~íÈ\xvYÃæ¼v€‚qUŽã¯´ Ež5/ËeEâ…˜\2,è{ÔÜ*‰ð(¸’o¦ÕnO’ìÕ‚ß\Äd»‹~Y›\³>" «´ÄaÅ%n:t±@O¶Ým5ÜÚé©.c.©­µT Ç‹•
u¤*B%E±üét!¦c~é‰{-,7þ¼Ö%€×£r5mú¨Çùä¶{:+z ù˜F9:ÊH¸ƒÐQ&/†ÞÎûúª0(CobqVSÿVžÒha½R\ôO9|¥œ¥0}J˜<ý’< ¶Vîzò)Ä•„½ð«•O¸ÞÄ½W-*+c´8	Xåwâ²/†ÿ0RÞäÔÏ‡Çl£4Æë ù‰~Ó×îÃ‡O"eö’n“‚Xw*©J.½ŽNE¯®uí®Ð
þ—Q¶„’ÁêLó–bE³Xk¨5òìÎÐX€'-¶yH&¯úXOƒll2:eûgÖÔ[jœt•£Ê¤Arõ›q18Ò?‘3°¬ø"x`ç„ŽŒøÚøï!þ{„ÿþ†ÿ¾ÄÇkøï[ü·^–µäFNõ•ØÕùÃ)	5rÂ÷±"
F{ú¥, Á£’êf˜’T_”ÙÉ%'øâÏçdqN¯úþôÚÃóQý rœü@ÖUìq>‰šÑð?í¾_%g.D/£ôÓ® òNˆóuú¶ævjíwôàx¤,AHÏˆržx¯eL5Õ’G´)3Fü{XN§IÂ&Ä»Óó·ÿíê%WU?x­(k>Æ ÂMq©ª+µ§ÉŠËV½ Å¨YWÕÝ„ºÆ–C•ö!¥]jŸÌj'4Œñé»ðs0‡¤á]­®yJf†ŒKÆ•SÉ¿ê>¬žLJÖWC{™ª¿cICOwù‘>ð°Lç[·ÌîUäì–¡+QlÑSÖá­hžøIZ'’ž³Ò¸«°×T@‚ß	ê¿âQÄ2—¦t1ãÀ"¤t—\¹HÝ§WÔ{¤Ã¦£Žº6çidòXlÜI‘œÒ¤Ÿ( Ôën€¡´éÉÓ ³d•d³x‰!@ÄýyÒp
,þW³sN¿Òª'ªCjT«.¶'„L¢A…êmy¸¦rD¥*+¸SE„âº½¶Û½he‡‚Î1Z=Gõ’XÞ&r5zM,É®ìžrv¦Î )Grë“kÊŠvN_¤)àÏzëÝl6$§&™‡îÍdý'Æy˜`w´µ—ð*KKç¹zœ8ï˜«;ÚqTN†>YmûÃYgVÒ»Ð"¤h·äYŒ9ñÞTn¹ÇQÕ¦JX›±5Ê†¸öMïlL¡³—¼A¦,šâ:˜êð%UÂ¾¥¤0ÆïIŽžÉ…Yc5™;=<Ì$¬ÁƒFÔœM‘Û¼¯7lKø…0ÊL*AY2Â¶`Ÿ¯{}z¯hB“™õjþšHXRÒ×Ø X0¾×5—Ðü{¯Í™j‘º!²âBèƒ²€pÎ†EÊ†)%æûýÝÔ °Åf~e'#fÈ APAùˆÚÁÿßÔ€ÕÏ2†£Ž¶þŒÞ«IEŒVâ•£VavÅÙÈ Š˜À—"ËÆ\ÀXhÁj0ð‚`´³ôÓM‹„bú‘¬ý{¼È®?Ç`@¸'ÚÍZV`†ß-§ïœÌ5¸Ï@~>üˆ"DT&”ú¿Êwþâ‹áÅº×Z1ÝùÒòúmÖ—W)WVÁU¼Óìú×äË¨º=(u×Q-v€pÛ6ÜDµ)Rƒ7ÅµTlÂ±_LDýŒ7Dñò"kwy9Tü'ió·Ðûýä èF€Ãêlé½¯b ¸Øâù2tc@Þ`ãDWÉü±VÌ´á,¿en;_ÊÅÞøJñ-è}æªPŸüè€L¦©w‹Ç†Õã=¯Š¹ü5±Z|Ò]°TL:Mý…Äk`µ&v7Àòm´=½ 6„*Æsfå(Ön¸&6u§<a(y,ÙU?÷ÌÙÝiTe¥þø‘e5þá?‘€’þ¢c4t&ùÓÑ,ùJ~'×ãá6h¬À›eaƒÜó[[_Ÿœ6<O´ËIäµgŒÛ¸ì?œ”:¦ªj4;WÒ‡Š¸WN‚s5›KGw±ºìq9ÄÆ¡Q‡Iù: ›ñ›Pw€(z€ŸÐæ¼{[¦§¡ñ	,§zòa^ÈEÃQ¿IÀ§/åªOÖ‹JªÃtÙj÷J›ð9¸JòþLq`ÿ‡]œ‰7Þxƒ/<6+½Ÿûñ˜¨,ó iôÅÿi›aË..ªxÖœÝIå¼>ÕweFOŠÍ6Úcçé¦sÑig¿I¤×R
}ñ×|àöDlåMn‘Ô›6Í%hâètý¡œê‘¦ÂêñvXo-„³*°óÎÞpÎSÀ~eÁ|¥¯ÄSÅh§(‘*wU¼XíåîÄRÅ`;þTÍ”«Ë¶F³P=Âl¾CñBóo.¨ÙVü¬û×YâÊZÉ_EebŸ@$*ún/áÝ~Â»›ø ®FÎ/¸’–.½W!‘™¹éî‘èãv7^%+ï"Z9¢{„fÖDMIîp4¦k9ü ‘Ô¯Ï#ú†x‰š¡•õfs>J¦‡PÈúÓòvä-¸¦O]øÞâÞMAÇƒMˆ¯á{á)!Ž$$¢Øa'ƒZØ¤n5¨`Àvœ›ùrÇù®¡UnŠßq^†¦,N‡Ýø˜‚>³èßÂ¯>Ôª”læPû‰6ÉÅE qn5ùw†/
)sÑŸÌÃÕŒv
zC¹þJ„:jšâ-“©ßÐ"áÞ·e„Ú€Ù!Ÿ
s›Ñ#ošo6K›€ï™—†ÁìÂ,NV7YÆÒO ”K@¨‡ ¥å×ïÏ»=¸áÖæÛz¯sjä—¬Ó	³ë´–ÎdEæÁ•GæIéý’Étyé”äQ¹rl€Õ
Y„†¢„8¼Zˆä†8]pÚŒŠM'¢pmËZZmm$æ (”C.%ûÊÁLb¬–à¶á¢ö$‡"7EÁ‚2‚rðÏÝ?;çíÓ8ÿ$¿Ö;ÍZëu.Ûõm§rtt$ò‘T8¢*u
s›#Î}’É@C‘§³²8.ëèw`+<Ä½fªªôØÇXGÔÞÐî„¬¦m.c½ÂAî€8èó{R
`ãGZß`#<×^'ÏÀ¨»ØTéJF“¾±#g+é–ã…«nJ>%üjøÜðÁšÅÂg]U	IÄ
"«8$ftÔvªVÂ=Rn¥™z8z-fjÂïañöiT*­Ž H¸"Ã‡vtõ Ë¸Ñxv›;Á<è/ambBì>%Ô"LS~CD¨îØ™~_qZ÷¼í¶ÆÐ†xñ£µ1îRü¬oúDÆ±Á'MØéù©ZP ZÑÎ¹ËÁ‡<ÐÙa]Ÿ3¸õ!‘±ÄÑ]Í>á‚¦°÷Ç¸¾`ˆé¹MtÊbBKÏS³¹ùÊ¡{VëôtxÆïÅ{¯?&VÌÐÉŸn÷ô<Š¡'õ¬aÕßCnƒ,ÀŽ™ÇÇÊ¥PýS œ4ë=‰‚j°ýÉ0pºBbÀr7G#o°’¡6šZõ¦ÛmžžmÜí¨ìÂö®79=/X&ÃÑ½¦c…ºžXT€wCG&]™Ö[Ý2˜á)Þ1•˜•8›—Z›tø]çüòâXµépµèOI‡ß-f«y2˜Z»v¬{ñy“Üô¢Ùé¶º=(XŠ÷J~_x‹À–Pô£ùþM·V·~þ¡Ù9ŽÐðƒhæoÉ :Ín³ó€†Ä‰,Ì½ÅW*ÚíX¿Íä«µ[½Ö5Có¯ÃM–ù]TE‡Ú@€€WŽ<…4˜ô<ä%=ÉV›õŠ¤E…SÍ
§j†³—ÎžÎ~V8ûf8Yá˜áf…sh†s”Î‘ÎË¬p^šáÔ²Â©™á¼Í
ç­N#«<7ÌòÜÈ*Ï³<7²ŽWÃ<^ß²ÂùÍ'ë¸7ÌãÞhf…Ó4Â9É:^'æñ:É:^'æñ:ÉªNÌúç$ë¼8©Q=ôFýÕx2uQ@—Ó/ÓÙ­j¾âšcVÄD9’Thv`R`ó”Ž‘'¦vBˆz•àp@1-õÃþ{îàŠžÑ$äóßx†ðpø<0(¢s²h)uù1¾†Å±iA ŒûÅ'	Î0ËÑ¥žiên•ö5°k
¿7S#‚'g°¹„­whk}ƒI…»-r/Oðïc‡bùçg²Lú'ìn>Ä–9BÃ q]ÆR„jõÄ¡>×¨z®®Ï¢{˜CE+ÙÇî(-Ø)Bü
Ì´Yú‚ÊÀ¯­NY¹ìõ^ÖªZ½?¥óO]¦>S&Ã3}6 L1}JâC¾pGõ¿Úû‡Xém·Ø¤åVËÎß ˆ!Þ¾köðÝÙ»3vA9²‰æ&†ÝÜ‘þí«HäµrWßsØjë¬?%jŠŽÏ7Y©ðÑpÆó@2è.£øB¨ZÁA¾ò†Û_¡æK\ '*Ñ¸ý&Ô§vØ=‘‘1S ˆ¦²Ò7@;
+™“k¸ÈDhKA10³¾'˜‡H..Î;=²’†Óƒ%Z»½üŒ7,³.aÀ‘+\-.7$£Ö@D°`hð3zMŽà¹¬¾Âpü‘¬É<ª:¶…å$Eo {û{/ÌW‚Ø7ôš™2½˜BìâDã@8;<&›á…*þ'yVË”‰4gÙèÑ,6ÓúÆ5¶ pXâG/uÛÉ½ÜvªGÛ,-Ù9Ø5³lðÔ]}&Cél¡fý‚_	Ïñ5­UÉ¾*‰£¡ëŒ‚Öí‰NêWk¹,âmÇväÀEß‰z"Q¢@ðžPTÜ(¨ò"Eš6ÃØžÒJãüóÂ¨:àÛW|H„ó	ÐšlêqPL[¤B!Â‚è-ßóå"j\%0+õFt¯ÐôJtb$p²²Á­F¡ž%ª¦2nÜ’s
Ëˆ—v]—“îú}K÷•ˆóJÄXdøúÛÎgééŠß¸ÍV*{Oñ Ûà?Š¸|ðEá(¢‘I»Ý`Z†2ÒþsøÕD¼â˜Â}¨l#ý¯~š’¬Î&Êó&¿³Æ\”U-\½\†°«ŠAá€^î…fhŠñÜ	«]M¯±ñ!©˜ñ•¨
0íP%‰®”Çâbsg‡m0Ÿ„ÉôãgöX@ø, HIÛi‘Ãµ’›²¤5'v›ãÜv4	â¼¸¼æÂh5Ä1¦“•«d?]M®¼…3\a.	ê6$DXVSïnNT!'ªÝ5õŸ$Ÿvƒü”Ô9Iã"`{‰Ûté>²¢¦¡(‹¥vÐói:ƒãrUdcØ¹×¾Å%ö¯è~1jsúGþá Ÿh{šaDO …GãÓv6±º¯¹d)â"õ(ªÞÃôîšûBóËõƒ±e§ý©ób,^Œg"¤#>>ó‚é¯K§?†UÄ7Ç»óIoùEÕÐû’Î>¢ !Cé
^)ý… ˆ|Yù­R)'¥*˜;Àà ©vÉ‚zÁ’Ž&.«!R(íŒˆgºL!5/ØÉÚ†'4Ç/2²lÃ6tçN³}~Ö<{·‡+FÒa!GA§Œ—!ÃÜ¯Ùh„ãŠŽæ£ûú®6Ú/¸„Š1'W@(…y¢LR}ª@]àðZóüF«0ÑÉF|0öú‹eR8š‘ÄõtÄO1¥­%7F¡qÎ!ÃúÊ<DybfVæŒæ>…©·Ë€ŠM€Šd€4RGÂ”·„Z0÷â&Ò9=è7±FÇy¥žV]à¶îÍpc%e^£~µ›l±L8%@¢–“¹iYF°7]lÔŠw2å ;Bår9öWOx6‘Žõ1Y½]â³V÷øºÏÁ	_>’çTço,;Ãi°É©qx‹7\Vâr”“çî‰˜»ýÁÿ¬ü…š|C¬&”±Y°j¿Ä_˜z4QO–IZÏÐ‰#%$á˜¢Y\DPýí²Ã^†Ú½€²h¨8ªârï'œªÙ"¢Lü,Ë¥bÎ.¡FªÇg¢^’J?,L·íÐq–zpŽã6ûÍÂŸóA—bzW´óâÑ)¯„ µI¤Hï9Ø’°,j0 ã1÷S&­.“FéÎâ [P¶Ö3<›Ñ°JÌÐ@o‡D,ÄÔ°çB§¼YA£áTãÊ˜§)ê#ÀKcMSØ~WKC›%¼j,%½kˆê/Œç`¾—Ü“Má™ø]Î˜ðGå?p?ì«€Ü¯û±°ðS	ŽnÛ-="‹þ-}@ú€ Wâ“-|¤VDl¬Çôtî³VàÖmssœv­ÝÀ\²°ðd*î8|eú‹…Nï´î”ÞÂåÀe~¶†üÈ• Z¨î½t—JÇØÃÇ4V){½ó¿èîr<(—wUäEaâ°^,f×‹þMÔ¤EãGÐnÂ¡Ëý½M±ú)~ˆÄ–Õ€lÝ|ó3"l.`ˆtk ó V¶·pi.Þ™^Ÿ­¦Ëu(s ¼‚Ûœ; pÆ¾ýý¼ó¢Sk5œŽÇÒ½zÿúš¨DÌD_$ê±`bz¸ðî’Âp=€ÆÛÜk:4%{éï
Í„×ÛãWˆ(ÄHWi§+
9í.=9²=•%ŽÜiÀÎ»™{+6ßØ¤WÄ§z¤"ª™‰t®3<¿–uÇ~²îø°oÔ 1.§>Q–0‹—#,÷Ü%:4UitÃ8‚‘J¡hßSÈåP;˜øH™#¢)èrÖ¶zT.Imþj‘+?¢ª$·	XOBÿþDù6eçÍ§zd˜ý8x¨:;œ§Æ’ØÐIA»Iµ˜€wú·BÉ¤M ÞÃ8E"uÈ€«/Û…r‡&(³ÊºlÖë´.4U OFD+o0 —Å+Z#"¬]¢ù§¸„ÿf‹ôb›,êqÁÐe0|ØI”­?Ÿ„vè-XUK`Öÿ	X_¦a%^¯è.¨ë"‘W÷¢Ø±²®?}êŒý‘·³
¼!ìJ 
'‹ÙlúÃç.|–€_ÁG8Š|@dTß™?Í,5n2#;„Éˆûw!®Ú#îÚãè &#.¬ÇûŸ¬•ûœ:‰èiýxÕ®º¬½¾áäÖëFÈ Ô7r¨t¾JÿõÇsUúåFžjnäÿßÞ³6·m$ùYúˆ·œmQ!)É›•boÑmóBI.‘–k+—bQ$$qÃ‡– %ë.¾ßt¿á~Ùu÷¼` ÐÞ$µªJL<f¦ÑÓ¯éééÎXGç
­Ê"Ï«+ß·:È$‡WÓP·„óX†4#ÕOš&‘úìBõï ·V¶ü„+Å¡Œ]Ú’;­—cvÉÌSniçÖÈïG˜¹¶íšõ%LqTò
Ë¥jõN¬®xøF”-wmÀN…×f0AXÜ	õa3Û`°Ïð@æâ:èÌù›!.Èf[^¤ÚþT“Ü€QMŒ ´É X·ƒŸcÖæè—›%½ÐÏê{X!E°à­¾]bS{¿‚÷aIÎÞÜ¬yLæ×« A“uòRô2@;0…q.B ™èV‘sŒ%k¯wî¹.úüÍ­M¸•v†›Vš—Â’º%Ö'Éè«”‚‚WÌl¶‰µg(z„¼×W÷oCÄü»\¬V™£¤}2“±Vƒ•l#^/£vJ®à u{€s˜Û›9‡Îwç¸`-Ú:ç1uxûM0²â4O†Ü9€¼ÌÍï{0Ã¾kì;6;¥Ü34Lª‡f[ž~qmKðTF@î=r[‹-
É{ÎÙçg/';Ækþ]ì)ñ¸©±¸›÷Í+çüvR .§LAû$Á'¯¨ÈÏÙ~\d¼^¡ñ¢ìñŒÁlï{ª ÑÃî9˜éy÷Êá_ÏËò»gŒãt«'òâÀø¤,‡{	»1ç{1×º×çz8ÝK¹Ù·=BÙí8v)C…ëü‹r¶Ó)þe™Ûéÿ]yÄýø5ÝSžmzúPpŠÓ<ÓòÌ#,ÇyqO¹Ï Nz)Ÿ¹Ï¨Þô²þólšI÷«—õ¤çßía/íS÷€C÷µ+W{»•e¸¢K»ÛË1üTÚõ^
ˆ~ILdÏ¹/%0ñ;sÉgóG†«~3Š%ÉkÿÇðÐg#9Õs¿»ý÷%Ô¶œ»~I—}öà.O~¾—Æv»öKúòs"wñrí{YÙi^S;îÕ÷¦Ðw¿šŽÿœþ~C=m ß€Í:¶ÊløŒilüñ÷üVg>{›[£¥n”ùš”ˆoxÈ×î€úÅv
¨tÎÍ/“TßV(²‹à5o‰ÓçÞ@ðÃ§½¯Pl¡”‡KÛyïà9±¹À¶„r?ó à°¶¶A$ïJÜ&¡ú¯mÜGÚóà™úM[FèDÛ¯ïU©d+á?×˜p49Öøi£fodé¨ Aò“ó~©Û–”âÚNcëB( ž®2%Î9áh9¢~Y·®±O‡S<¾_ßï¾Ï>ÇØ3Ñqz—<üE8
'X•çœçtN!ÇðKÞ±è7„êH~KÚ,‰`ä¢ Ñqº]Í“Ah	S®y“59@Öõ›9>~7æŒ_¬SaÈ3>}8ô	]&ÿç'ÕÍæƒÃãÄó~3Øàýb2Ê“ò€pÇ;Nå‚Pˆ¿àFÙj1ÊFAŽÑÇ]èøýr5Êúþæøà\>‚µ5‡5ðj˜
E†ãûhùxF]Bi’àn:|$ú[ýóŒIÈ%	°cê·¿ÈŸïA],¦Sª– Fîñ¡_ÑgoåÍÒ“®õåV'Ó4êÃ‘½È¾ÀÈ~ÂßK÷þq‚ó²8(ÂÛÞ(}°íiôfØ'%­/¿C’}RÐúð3Í.)lxøe“”3<ü&=Û$)g{ø@‘j•”°;rŒl‘·;|†Ï´HÊÙ^ÿd‹¤°Åá3®‡-RÊæðÁÓ)eyøI‚4›¤„Ù‘cðtƒ¤„éáë+s%…ßñòÒ»ÛÊÈ%èóWŠ…‘é€1ý/ÉÞgú’ûHƒŒæß×kƒFz–ÓL^‚¿®g25âåûÁŠzj1ŽÆ¥u&ü´DXç“J®)û¯•Úåc­ñŒ3`Ã±‚ö=,e¢ÅóÍzHÉÊTž¬øˆ“À"n!ñOzÎ­Ò,%+·JÅMÐá»~…àˆžÙ¸9>¡ºŠ¥+Æ”À˜…œ¥„’…îDÜ)´ÓK_œ6»èºÛR6­c†„;M&²êµšƒËú ‘8èõ›ýNœgÝÿGïüÌ£s²œý»fãX†D53æ©ZEtofFƒ%6Ç
|ö$õÑzö§ùæoü¬2b©wdjn…‚Ã•5÷xƒJ¥’‘ŠÇN<IÉxRK¦fž‰¥Š&hp™üë‚žÕv`8ß`ßG¹¥žUjž?£'ñ¸g+"bÍJÂcP?oFÄ³éÈ 5K|oHïEgqbkõV:c›\=ùZ;$‰±=ƒ´rÞ:DÞVQC«€)­Ìº¼…”Nœš_¥ØÆ×,Y¡iµßLÁ
“ÀÜU+¬™ÂÅ1K­¹^†"·&ŒÀÈ*%_Bú3;C¬&²LX5é%…aïìûF­Õåµ1Ž”`Mµ…Ìà$“ÓYcEPÚ¦gJïª4}Z_Z\NŸZ„T!!€;è–ô±ÐËëin"·;û>µ¢q›MJŒ&¸AiKøýj™’ë;¯n—ëÁh6†ãÙdŽ¿¸ŒÓœ®ÎÜˆ±aéûE&vÙ[b:v}p²Šd“½ÅÝh1­nsÝ+K¦¨÷a©âm*d¸Ý­–`ºéx0ZPì+ËVn}ç±iƒEë«Ù—©ØR€l-¥´o•Å3¨6¿_MÒ¦»Ÿ«weì~ªìø¢t·uµXLƒÛõMøoµœK-'éåTÛ<±4–a¥—1ÒÝZ Y”C°³E9€o¤œÙ.Ç‚N†ªDA¹¥—"µ¯IIþJÁjÖ>’’§ÿ)¦âˆ|­¥™C5Ÿ­­-Q'´u¬ò†.i_ÆÅÖq[i±Q±Òlkçî‡r©½|Væ4?vLêâŒ°½±40}Œ'óëE‚SŠ*¦Ã‚|¬Vr0î£*ZÅAE§¤ÅlÅœÉp‘\“1Aã‘vÃ3[XmŒOé]bÆÁÖx±ÆsKj“Uç>ÂØïŸöVAŽÙðtèïž­3Á|P—Ç¼ ¤éïåI§¯WS
]”9§wƒÕè†ª¦-æ°Ú¿Ü©N ê+ÄItŽ4&k¢ÝÄ‘Suwlï\DŸÂ÷*\þtP§¯jVxä3<`(»ö(yÍ]­;Ý¬k§\›”IÛ¸´³ üÛð^ži…ÿ4*]“™¼¾%þAý×³à¡F\_O¦S,ÿÁj5°¸
qÛX7ð-ý”Ç9J¹¼K½=ËG^ äg’uFé¿©¾#c¥û‹ØæBçìÍyETÆ´oÿ.}1¿o×Ç‹ƒšæøH~:¨g<od<ßw>?Lý0côÃŒÑ}G¸Ÿ¦@wø":í¹:í¹ºÃÜèÅ\ÓŸ2ØL{U³vM£yÀâúYùO)%€š˜z'xvFwkÜªF»b‡7¤Ã9×ðgÊÁÑØa¦F%±16Ä8R"ãâ†¬SY˜RlkŸ@|÷1¸1Šc<t°W¿&&ÙÙ«Xæ^­Þô»tÖ"èÁW±ÊßTñÇ×lÄkWèMZëhµÀÈŒÞ™,þ´º÷Œ­›Ð^¬ðU½(ÈE.–¨«‰"—¬
©¬dÂ¿íeþe&…LÏ#Ä_¥ƒ¸E‚gæðËßíŽOà™ªD(Ž…IZRP×b62‹šx}‚ÕñÔyBª I°·Z¾Ñ·ÆVXt…ãPÞ1±(Ÿçù@mŸì*+Ïüº\uGµvI…GÅjÆÚéÒü/ûµ¦ît†5õèîq‡Úâëï#úúýU7·zê¸y‡Ï4Û[>ÛÿY±µ“£Ü5AŽBí=DérdÍÈç›Æ*¯ÔœA8Jæ¶Hâ
„=ðÒìQŠ¤ë9ÀÈ bvp
§ÓnlÇìØ·ÜŽÕ¦ª|¶^P!Z:{Æ¼VxÀíNLfxÏV<¼gKY\Ê´¥ÖYªgV3‰¯Fwœ/Tð)C˜Îk¢]õù/ÑkF	ü™‹Ý-ÝmTÀ¼}@r#†D ñ=f9rÃä¥•µÉéá3hÕT‚A6Ù†s«{þáD–®¨Þ˜·ÍãcŠ…‡qâAYQÛuˆ¹IÈµ$ßIZ¿sÊ¡†€ñÇ¸TdHñë¶óCÏ¬´úJÝ‚†ë¨å5ŠÈÞ]8’''ùHq¯‰®›SÇ‚ÂAó²øw2™;Àe2â\úyxP$‡ÙåòÆ4^Dn‹5Ëq"«< a' r+Ì’ÅÔ±ã´ÊØTÎ–¬wØ»®^X'QZ½{¼—½ÑpÊIMP’œ2‹Ç{¼+‹êb~:«÷~ëmpÂ$ƒMÐâccäÁ	¬´)‘¢Œ5[×aØèÏm/ÇQŸdÔ ŠýìcY¤MmÌØÉü²”©L™º/a¿Œ±9me°¹Ÿ¡Å¦Ž&Uîc€5¾ÕÐWlH‚k7ÊØqÂÜÌÖæ¤—Ðï2}ûìhcWÙf»¾Q¢ïX(5,%ìið“7Orì¿ Pâ»·£Õl°š‰H_ò]–èžÕÕÏ†Ú¥ÙÕv*þíè/‡÷Þïˆ|Ý¨Ÿ— ‹+¦Gûç«{ÄûíÓ÷býÛ/®?Ì–fÅöÕÍ êmÆVÚÆˆÆL,,; ré8ÏO™g7„€
±¯Y¤ÕÅ¾ŽÂÅìÏXJˆÈ¤œ‚o¥,ÒÈØ1#ŒÅü>„¢ó/áô~2Ðò‡7 ½£ 
eÂMd!˜%IŽ³§=ù©þsðÃÁ÷•à×ÀýBíç
F~ÿe_VÒæÁUïZýS™¿_K?ÖW 9×!»ëð¯}ª×(*ä[!%9ò¥`¤¯¹ÿX:•+ÁßRŸÒ'`‘`³Óv*[9îjHºpØçY±$ï¤KZ¿H£V{Ìbn^8o=¨Üzt7…ÕÉøˆt°¥*¼‚ù’g!; qÒ¼íž¿nv‰Ö˜ý£ÜnË%Ïw·ˆ&˜«MZýaýààÿþ·ÅŒhõ
ñ£èìcY>i¥`t&ªÈ>9kí=Œ°w†S£óÖ:%u~Òé÷…,Mï¼f—$‚÷jj”`0!AÍI¡.»“›ÛU°Ó?í×+9>Uò…$öô—Ã9L1ÚçIŽÌjx:óßÎÈž«ƒEÝð\oñ1xÏ”f""uìf°‚n˜yï	3"˜iØP76ƒ™Ff›ÁLÃÄŒ6—¸½Ûõj+$Lz‚a?ÛCüõc„ÒÏôÿ¤¥o@KÉÄüÏº8sÝ—*„hGHùotÙCÈìI%kcÉ)nüúk¥õ7ÊßŸ.{ ×š_+]ì$ÀÂ$‹çÄdŽÕ©’+~ð%Hk6³äKž±$ùŒ¡¸¨~IøiøÃì’;™°7Šá§‘??>C$Êí¯‡’ýóþm';iLÁE?ð?WN@w€Õ—÷kª„³ÛB,çtÛ$™ƒˆ±lÓ\Ø,Ã-ávnàË¿·Ô9@¼Š9èîËïT‹z¼úÌ[YÚÓØbu/º7Öøxƒ¯ïC›Þuy ðAò"šP^ CÂ¬1ÇøŸZñFr_–õI+xÏ¦¾¥_}K»ŸÃ*º°ªãÉð&Ñê`Í·õ»éûyðßI§ùDOzâž@OOÎp+IÞ±à`QËèiÛìW÷</ 0cÕÑrÝVÇkÐÖ@ÈE³÷npò(ù!¹ÃÍ¢MAòþM³Ó-Éd\%'g‘È†Òt”MïÖË›T«–½óÿ†oÛ9Á'ª³Å|²Z8­÷¯ Ã}T Ÿ§*/0™³~ûâî¸u~Úìý˜ < ÊàIHÉ:Qœ²3ª`=ÄqS ’Þió¢_/Õj«F!%ï‡ÂÍO,­šnÈI}£ÔK@²¿QHöK@ÒÜ($Íâœl”NN
ÓÉh—U<ÍTÕÊmT¹»ˆÆê¶›ì \bš<Œ"ô•§–l)¬ÉÛ½^û¬ßivóŠT£&nHm”tòÂÂ¦j¸qÓê…§ª	¸¹èš'Vd0F¿E`¹hSÒ—ÜÂÿú¡:­&÷ÃUX½D+LWŠ7ÍV¿sÙì·ï:½þùÅß‹P1›©$Ð
Ïƒ®`´=gájùü.ŽÐTaíCÑ<Þ€]v89wzÍ×]øÝï^úín£€"qä4„ey•o”M˜³´-5{çgƒÎIN@À|¨bø!¬iPj¤T!“M9aQ{0.&+baõ
ó˜v(Ôþ+d{¾9/B¶vØEÔrnÎ^¬ÇÕ^ï¤Ê<&U‘ÏÊ€$cc +ô7¸l_ô:çgù1Cº;ÝÏ±:‘×(JÁÅ¬Ö¦nçä¼UÆæ$µÞWõ!<¡9(… úgyhË@34=Še­6U_ÓgÌ„A‚ÄQ+g¦×ççýrÅàrº“ŠUC ÌíÐË½šüÀ¼ûJà²4üäæÃð:š­­­t¸}Ùiµ›oüÆ×¼ªSÇðG’ÃÝŽ·m;Þã.ÞšÓåNQüXN–I}Qv()ìPÀ´¡àC<'Ñ¢Èn,ŒËý¶""V>,–ÁŽ,Tn÷ä€¼/=—àVÿ*ç´}ÂÒbêÚqjÛñ ÉÁÛU¿¥súê“fÿ(¨ï‰Àïð^ÿ€8#å‰ÇŽU
óP(8"å_Å:ì0
`ÐÅ8zSiy³ôO +XŒUTT0o<'
þÒ2ˆèyC\ÙJ6“®ƒE	ëß›Äk!Ç4Ì
äýÐ9ëë+›	îáÒßŸç"šW€=Ôï|… Þß‡²œD9‘‡ŠÃwµO­š8GŒÒ\­–“«õ*.ët"O%k*™]ä¤4f”¶ã‹œisžŽ+~ž¬ø!2C´#J…!ËD‡<pjpÔ¥|Â—#íü?T#ŽÒl›gÇ2âÃ?Ì©þ2¥”Žƒ¶87F3ÿ¾kØu&¡Ó+z®ró(Ûo@ÿ$DLÀRGDKçNié#—Ú‰)œöÃ8W@*Ó/,ûdŠ±Ñâ„]ÞW·ÈÚküø%+¶ÌãŸ‡Ó€Âs®Ã%ÙÔ^Gšz‰EWµAÙLvNÒRP¾étÛê‡HKú	FÙ¯ø½i8ç¿`6žþ=áPûÊc©]dêò’‡ªáØBI‹òcÏ€Œî°Ž(íÜ5ÿË>L_­N“À¤‚Ôi¼wð©l˜Þø¯FìxÜŸ#ÑFBÆ“u˜íÐ«¨4Œ5íü»ˆ§bcØ. Ø ¡Œæçj2¨f`k¶‡t¡Â„'®Úîœ]6»òñÙ˜ˆÈð«€^òÎaˆP)$QåÕ%™\Ò“Ú§qƒñÇúÿ>ýÿ ÿÒð€DŸ°’	˜¢“o¤^ÐiÇxçXœ{ýFiò»Å<]\f•Ä“å&DÜ'A"ÁÎÓq%˜­Á°¼
ƒa@Ýbñ†•4Éä˜ò¶çÂñÑ2+!(äùÎI‹ùô‘$*ž¼Œ‚PÈfÊ˜SÇÐŽ‚VèêÉ‘Ê¶Ð>k‘ÊƒÖ»g?"@,ã¯`£—/‘wÿV;‡';â~Eèn|ý•TÝRáQ%"uÉO®¸>ÂfÚ‹iÇýõIÁî&ó›£§Ú–¦œ Åö®„£9æÂÐÇúç L2Ö–ÍAÜpCŒžuZZÄfJêuÁ|«¿þäjÑ (ó¶ÚÏ=ÎARÅLQP¢ÿ:zú	ÙŸ’ ñóˆ2%159hÐÇº®¾ç“‘01u‰ ŒKÕ«¼e,~„ ZõŠœ(7Õ¤ÚôWñì×³¬ÐŒbŸFÏ0šñOS2bë]§ÔDÀ·´Úhh6£íÞ‡np3Ø¼lvº¸…—4“g.ßµ0ª6‡÷ÃÉIi$J«@¢O(¡4Óôˆ’\©R'#ÜŠK€éKD,â”XâŸÄžä¾£¸=:ïH…ÐC’QÃZJ@ÎÍ!Q†…©jS#*þªF¡âíÑø“‰Ÿ‡z%MŒF©M?ŽTžÑÝbv f¶X†Ê$ã¿nÁF˜­××‘L2Î¾âj}æ üƒ‚žÝ«ÌX‚gž•àY`è$œQj”šÙY—¹3+›³Rx	ye±„Ï¤Ò"Œ7Ž³ó›`¾Xv¡àáv¸"=†iõ_’A=…WG}WDâ	^1ÑÐ×x†~ºÃú$”§ÉÇ?-U~óä´sFâäôí),­Ï¨"ÐÞ<šˆ1Â<¥´ùâV<y>LïÉdùôiÅçz‘$œJ<X¯|gßÅi²ïQŸHY516'XºÙ7%iÒý}v"Rq‹Q¬¸}¨ß>7°˜N ¦‘rwZÝóÖ¸ßíwNÛ`îŠsEÑã¼Ú[Ý€ Gx—Q.t‰O³Ê1­¨ß±Û `š£Ép2ªXòj°“ÕmÀëÑÉ›ò("@ñ$§àí?M®ÇáµšÎV·38i¿þðØæð—ë|E‡³aÜ{V‘4B“{k3Ko´<äÎ±î×hªu~zÚ<;9n	þ°ý„ RîÓZãÓnp=ÞDêrÝÙÕ\!²«ïá
¾»a\í«+Þ» IO=Œß!R2/ëæe#Ö7Q”ùÒyy¨.W¬Êé`©{,c"Ì(TäMqƒ¤Þ‘øfÜU@Ô®…uí‘¨]"ÍË}k‰Ú›Ž[„Fëºn]7¬Þ	Ö;Öõ¡v­0©#¡ÙöZôOÀG“kSØk\W0î]¡Ct¢NÜ º`ÍiSc ¼9œF;¤%Xº6Š€ôÿþ¾MŒ(n·dlr%EÇ|l^œuÎÞJï)SZ¡M¡[(¤{•êQV(ÝTÑ‹©Zwy=D§73GŽåØé´…L™DŽûël[¤ìE'(9éžC­™ÔJÚã…LÂßiÓd%PÉâ!¸Y¨SöÂÎàY¯LÆFžÍ`)êñ¢ui¶H¬%Ã5·öªVDÆ\¯›<¥?¾‹©Ãx]ØÏR3ÆŸíÃ3nQùs 4güÑ¡Ðžæ#IÿIÿ1ðÍË˜ãÉaD6 óÍKzç³–‹{ùbËÅÅjáð¶Ò¦)xsËÅèž¸%ˆ'&Kb+9×F×·:ùŸž_´'Í~“õl˜ÍÎ¶ÿ“Üøúa9Y³íÚöwa|NÏ_šo±‡ˆ@üÛoq³BnØTT­W¤—)?f%ób·$	1}S÷c0œ’=¢9lé)»5˜øÉD±ŸÁØF7,}‚ðÈë"({¥¯ÜÝË+ÚàëVËk,n(…*WX´nâ›£°.pÃŠ½?Z/—tgÀfgW»£ÜÙ‘È\¯È^º‹ƒƒB?7`¾´^ù–êZ¼[Aë]úgJ……°\ü•ÀXr	¦#´ªÖ¼èR,×JŒWÕ‘ÃÇà,Q¥Ìž8±xÕgÏR±%(¦U­ñò«WAƒ–OÇì5Ê|“’¶ð›SqSd_9vLcÕè¾H¿ƒÛyÆË´|£Àc¯ŠjNÊÎzj6«—„6äÞ»_ÁÀ /ûážúÜ|µÎ?y¨ãlÃþ’¸‘ÌROq$<0û= ï¥ßÓ©¶È0×æÃ\aWûæÂBBv˜9ú5Â _+‘b¡Ð¾Q·o4ìûöÍÂ.^îNx÷¤:6Ò515‘tÐÜK}àfåèv=ÿ%x:fü°N»šëˆ.9ÁÂÅTåÒ\:7fãbxgº˜ßr…VÌ)bÀky·E"`›6Ÿkªà%†ik:M`°³ýŽ—äÏjœ}Ù&ÿt­ÔN,˜[Û[q‘õ<Î¥²É-œ¥“4Qºâ¹xêK^²ËOå‘FÉâ&üùs¦}¸¦iE\Êcqâx@Àÿ;±¡G³Éxœ}VKsÛ6>›¿‘/ÖL`·é­=©"msFR4’é	…d ’ª3ùñ] |“ÍîãÛ]ì·ÜÝ¡ã>ü†7’	eŽ¹P…<I¡ÿDûþrûÎ4Nh!tp]*.Nh½I¼[“ûx× ‘J„(OÊw©ÌÝ…3ûaU¥"®å	}òæüæ5\“ÝË6Z¢Ÿ?Q#´ Ñ*Œdû¼yŠÉ~–mŒÆ'Hö›ç‡xG^¢Ã1þºC-¾Üþqûûâ)–”\ KùíyÞôf·ÚF7Hlñ-^…Ú
å»,h‚*¡x¦‘Éƒs`Hü[ÀÉÈL°žÆ[~®Ö_·ÛÕ.$›øøt\]E»§Ã?7FsÌ%}wQÂ5ZÓ¼(µÀ!ÈTf
É,$¤AÀ’XËeçÌµ¬N²Ö;´´qëãôœÞE™¦æŒy™æm\+A¡—XW0#ÎŒX³‘~¢2øï­dìïÌÆþ’cVè¤q”žLˆeªÐY’]#HN¬aÏ5/õ»h#Ö?ÖÔ)Æ†8Í”,2=p@ÛVØ:’Ú°P,•m9Múç×2t/uz¡ºÖ•!9]F‡xŠ*ŽMAÓ í€èÙï3àXSâL‡&¥ºÀ”ó~N+ÎeÔƒ¬ŽV?LÉ¹p%ÄA5Î™˜eZVÐ·D`¡u¦Û×Öí×1Œng„"k’R7­!±h¤‡F<Ú„°ÂÛsš˜!o£¾¼£og>b¡G³çT¶H¢¨ÑŽ¼Cò¦“S  Îu0®ò•SôYíõcbût´0ò‡vhd]*ÞlØÞÓSVÈ
ö(>'2ýÑ/ëþ­j5zlÕuŸq/©}'uþß×ûÿ|Ý¿"Ã¶-=nÚ´#X°™)³¦nAL†¤‰HE¡?p·p–[~7˜‘²Üº¥qd\·v00GOÌpZtÒ¡>LÃZIM¦°l¯»&…þàLPÜ7±Á¼+é\{øP4Î)ì'.í¤Œº	£=há®é´Üˆu#­[SÑT˜œ²1ÿv|†ˆ­Ï,=›¥:eÓÑŠ½´>UOhk9îešMÝu6Ø{è©SºI5ý.µªÉ„K¾Éú,ºå!*x˜Ø›³¯ª¯ÌV4˜†¬äøx±ƒàJhÓcØÚêèÑÞéÑK«÷³ jb'ÞÔîÃêÝj”ýr´«4šÝønuŽ‹uÃ|Vì£¹ËÆÃµñêæVkÙÓ»„k„æ’›y4lgTò1™_·íµv.‚ó'ÿL .*ÜïÅ8ÄLçâ Ì ¥3‘JeÊ<Ï4,(èû$Òs§‡’¾—0J)Œèl¸±X“Ô²è-Ë
G¥‡l°â,j.ýVŽPsL²”ó<òaFetÈ£¼Jt²YÏ8jè‘jîÞ2hƒM`ô|#¨¦¨Üu_è©{À&¬´œkºúª%ü¬Ò<‘ŒÚU‹î)ë^`v8C  ¾–ÁÛØòôžçþ1OêWú×h*¤·NxœÍ’?kÃ0Åw
AÅ9m¦èV.…PŒ,ŸÃ*ý)É·¯jÅÆiÓ)­Æ÷Þ¡ûÝÝyÙ=¿²-
PØ¦e±AÐ+²ÞmÙ²¸g­f’[ÐYfÁØÒ¡²ËGòDàÂY^I˜eÄ?úå³³Oç½¶ÄBÐ9¡E±påÂž:0±d\ÓàÑko¡•®†²FÂ¶Á¬ÈÞ«^èË†`(ß¼	‰•úx÷uÐù@ZŸÑ±72E9Ûeø¼4Xv\ø–0ä˜AÖçbÒÄ¼)^0`&r‚[¡âúô;äý{øô)L‚?µòø–ýh®³_èÅ‹öú?9ê¾C’` \D«<\Ùó˜»´ãÄŒ!Gó¦ì	×0€DÎ³OYRš×³xœ]ÎË
Â0ÐýýŠ€‹*š*U\îº(¸¤”˜Ü”+!)y€þ½TˆÛÃÌ0#vlv'^“DÚHšÐoØ¾©yU.¸óÜˆˆ ¸ä%6Ý²30V¤Hf.|/ÕÔ—²˜ýô"®WIƒÂ¦!7/—U&!iM·Œâ}Àð–€4»g;Ù)Jí’UãÉ3ú÷íÛ}e?c- U¤áa9Iµ´xœ­V[oÛ6~¶Å©‹D’#Ù–ìºIãdÀÐ¢àÅÚ¼@P$*& S†Dæ²5ûí;$e™Rì CöDñ\¾s?Ôp_¿|üÃ›Ó˜°’x	aœ¦”àó—¹F^^xYÄIÑí¾¥,ÎDB`FçkR–çµä	ÍÛ¤‚²Û&-Ëã(#’fã8bCÂZM^e¯g§Ù°iJ$£ËîV$è›‡2¢Î<Œ×ÂCqý$â‘Óý»Ûi‰ŠÓg$¾Z#qEVñúÑÆËàæ‘“Ò	á‚?u+÷y‘”‹Ñ5œ¡¹q°±&å5k|m
úûƒ†`°_ÐoŽ÷Ž”`A¸(˜Œð©ÛÍrvI.n2›HóPÚ)B>P0u
RŠŒ£ÅÑi·ÛIólªn@a†IÁóèÈÔîT¢ý3ÞMO·„£3•Â…ÿ< ×ÈyªÔ"ÊSYˆéë€çDy)ýØçc-ý²ƒÿÅ¿—Ý+yÄifnêÖ1RÚê©Wä¶¤‘<µ%‚.¯Ã±oPwF8	N&'Ó÷ÁÉŽ@«f©B}!ÖxÐÃFœz¾ÛqÞE™7yžAæ˜ŠØA¥Åt$ª<$æ£î øt	½sÑþ
	ÚfIÖ(qy5ŸoT\ly¶IMÁVvTÔZXï˜8gw¶ãóe.Êˆ%eˆ\™­~à‡4§
~ØÜt+ÊpáA„K`I ·‘¨7‚f	ˆ5¤E¾R¬œ‘úC]±ð<ŒDN£õçÈ’~%¹rH¹‡öámW%CG6XòàÀØc8’9ŽŽáYõ‘§+™Mkè½.ž
 Ë·B" ^Ò•æÉ’9tZÚ¶<=™sè#ÇÙÆƒþl1|ob¢&j¼9h!ûÿò¸…ür·	06šõYhZ7ìÜ/)³ÝÈÖl6ïAë®^ŒzÑ‚£%5Šz~nÕØU(»§Vie%qö¡Ë¹zµ	^ˆýJúÒAÔq êé×¤£|ç>™¨}bîS¥„åÙµ—¥ïXã&®Ü79+yµéô…œ0õ!½%<ÌûPé9Õ2R›„­1®æÚcÆ]è‚y
å¯=ªèl–ƒNº£ÚPå²×Û²ÎÏL<§j¾æñÍµ³mr#$ùÃ
A£B‚•ô–‘D‹HæâòûoŸÂ««‹áüÓåõ³t+ éDC.üúí÷‹ËÏjÝèJ¶ìàÕ­uÍßÐv»›Þ š?s	‘'õƒ²ëý<®÷§”¥2a±<0½ÖK.guÅBXÿXð‹¾} k`é(­¢s¼}#Õù/]~tr½9xœ•SÛnÛ0}®¾‚@^Ú¬Î­AW,Ã€­¶ éÍ2A±åF˜Jå4(úï·H†ìa~±ytxHÊí&Lî®~&c“jô:eÉäFàëÝ8éµ:‰+«HÐl‹†É1Ó9ÈëÑäR~Ôo±h76+©ÃRÞ8„¥¶«øÉé1S2=e©µü´ƒYƒá©ÍùžöNX>ê-Z×üüer;ž~Ê_Ãû[y9OFÓ	$½÷gBxRdR0h™i>ÀomKƒ’œLµõ&øã
¦ñ,Ž
M¡@ xwXv ^ªÙBì¹Û»Æ:e×jãA•ÊXµ°úêî\(À­±Åcdx YÀ³€ú‘2\ ,6¤ý¬{>ˆ£ˆœõ`íŠÌÏúóÄº³Îœ+>:OàÍÆ¥
©"q…—ìïæ@µÝ@Räî`uõŽÖ¬ÂqÕP3S¤N¢ò(s!Ž¯t'·À>“ÕÎûìR¿bqî>G¤KïÑ[afy*LäýÕQ©lä Ûnÿ7Ç›gœÂÖîj2^Tý#ÖqÍ®ÕÈX‚ÉvÈ‹ÐÙ–Â‡³›×C9Ž®äxx3?¤‘¯w¶xÊ¾44f&çM×/õW2¶>xœ•SMÚ0½ó+ÞPÂWÕK9eY`#±€’ -§Ê$b5ØÈv üûŽ³¬¨T­Ô^"ÏxæyÞ{“áéöù{¸’9)Ka\r²”d¾a¹]…“Á(Ô&¬…#Óö;èCJ7¨øäƒ™>ßŒ<VÝ¼‡Éh2ù3	ðLuXåhé,ls°²ÂH² âëÄ7Z$dÉ\¨Ü1³JZœ>qKC«Kw†¦¸é¹P0THëŒ<4ŽøUµñ ']Èòæs*ÈÀUžÿd¡Ë6X®wX’"#jl›C-sÜðí‚_÷I[QÃ­íXøÒûXhNj5I¾7¸±câîÏÜ1/AW8?¹>û¾{C+ëGëgô,HÕWúÌŒ*†dŽWÉR¥²©ÁÅx‹³—Í.C´Þã-J’hí§\ì*Í·t¡w(y:×’‘™—ÊÝxvð:Of/Ü=Å«8Û{‹8[ÏÓ‹M‚Û(ÉâÙn%Øî’í&³©)ù±Z?—%ƒ4ËX²¶Ä÷l¬åéê•¸œ“ä½€@ÎköæÕZ[š\ür
YBiàj$ï‹ÓÛêÛÎíöø:æ*¡~Ö¬}ê¸ž1²düE­µ	ð¤­óå¯Àû?…ã/£q€]yfÃN‡~±ÍŠÍsLD)ÊÝÿu9°œª„A¿ ›m‰0G>½gû\zÓ?X¡ëÿ¶ÿ¯šE¾±xœšQsÛ¸€Ÿë_:/ñM˜´÷xí‹,É‰¦²¢“œ´é"!	’` R:ÝÜ¿] $”œ>Yv¿] ‹Å‚ô‡ŸÈv=ûO´ä	+‹)+*¾çLþB>®—ÑÏïÿ	e´b’üôáîM]¤lO¦Ï³x±šÆO‹åüî´ð‚y¤8å,ÚÕ<«xqw÷†ïÉ_Xúvõõy?~Y,_«òÇ¤é@À§ùd6ßÄÏ_ 7ÞÀÃCËwõY$Y2rŸäéûãýÝÝôóóód5‹—‹íËÛ»¿ÌW/›ÿ¾½Ï¸ªîß‘û%ü%4ËÃÀä	F¬-RRÐœ©’â£(HN“#XÔ|ð8‘ªwê¢Z’˜¶ŠåÊêÄ¦¥Såi”T2Cµ-ƒÚ;Ó2E%E–1	<QÔÓ-ÔˆæªqüI¹*3z!ª’uRÕ’V¡Rt´¨3*yu¹E%;Y‚ã½b&v¸¡ÉlG£½9­nZ1RaNK–`¦dù8!OZ™p½ß®ù †bc(X¶Ñ•^Hwú4èUËx‹ê/0ÄPôÚ ÁxÌsÛ-1Ä¸GÖÌíXú!îµ~dÁcÿw ´þA)yNåEOr”ÐrlÖFÎñ)-éŽg¼âµ,IOnŒ¤0A°D)H´9bÛ´8TÈ;J‰„CVMÉ™WGBl·é¤!K
yO±*‚YéVvñá³7Ÿ˜²
˜~Ð ¨bÞ	öVE)SI0iÝÎ Sò²×"VFCüäpÊÁöX@hà®gMð uÍÓä—/‹Ùu*{4.Â·´`®G™ˆð˜©È)/F¨3ÝyÝKBPYŽPçEZC†ÖI]Ôåu<k„!«—±&’AÔÚh›êˆæî5áŒ[¸”âÄSð’Jè…uŒ¾_)ËX‹œé¹—"×ÈÄÝFÍ#Ñª‚ÓÛ’&ú!@U‚Hö½f
w^‡{«@Å¨¾9Ä jçÆ™à1O¤ÈDé†U’³Óãë¨§bOìH`î2‘|³%è€>&:7P™‰?‚Šä‰Yh'Ðþ„å->@%’žI›¡‘í­‚™…ƒ„i™­“Oÿ&/M§fáÀ×³ºçYã[«îS÷ç!Ü½SGq&¼ñeö“#-Ìœ,è!ejúŒd¢Û§ZŠ>"0«z&¤Þ>xû<Ù¼y¨Å}-hO²šiƒ¨¯Ë¤Ä;Ðžcë¾û=K*ÕŸ›žæ¦fº^“ú^…‰d€Ø¦YJ–ò¤¢»Œá}¢G^wýd	9¢H.¤ÄšG§ø!CHŒƒ˜=	ú&µ-àUD‡WY£4™’ éªiMŽX†lQ†Ví»VÀš2ÒB¬™‘5]¸Z¯Y·z#CÃêNU´ªûá†µÚVwAáaò‡+Õ€¬ÒÄ‡Ã¬œ¢BÀ™Õƒo˜bòdˆ+”àÉ(1±ÆøøUTíõGè!kèácLÔËÞÆÇÔ»‡3Íœž~¡ˆ5úr©˜ÛÁ¥/Ãr¢YÝäJ+ê8˜å¡ŽÌöœƒº8Z3‰“iŽ÷T……"ö*L½b‡cNÒˆâúéÃa1Âbw^ÃïMR¶óåSô2ßö’_K
Òg]–BV¸ÙÄæ÷ kå€ÙÈ “h}8òLõÒk#ŠVb-ê#P@Yh,í=Áñií7ýá‰Õ.JwÞ@Éc‰ÃÙ0ç”É7­>/ºrðÕÆsëüª}HQ4ª^é7¸dPwìùv®_´sfTb¡µ	j÷&ZwÅØ¥7ãØ¢Â='2üAÓxœ¢¡n…ñÒ”à[ƒ©çUwQPÎJã5*6øÀgá]€¾vo©¡½…@¨Ja4/?Ø´¼ÙÈúÛße~ü!æaÙÝíÅ7¨®v¶5a+Þx¡ØJ õJß…‚po|1P­ÉüL¥®ÜhsÙNˆÊ 	¾]šTü„ÔŠ"KÉ	O"XÁ’¿¿ÿËZ¨Ñ
ðŽü½çA*ÎE&¨®sgö·v¾1o@˜SL¥9/ (Ue­—ªÞ¡ßB[îx%1j)="YSâÚIÆ ÓýqCqn`â&zñù
—‹(\Òk|ù™»H],¾ Ð=D_ËÆ±@ˆQy€)Yrfnà8à'v‹úÁe¡=Ä=.F¯sˆSý3Ü©ÕíÎòC^9è6#<Cõ{€ë”!ÓQzC‰‘4ù^s›·ÝÒ`bú¨º(°êÊ!,´ä(ucÆ° ÇÍUãÎnLÿ8Uw÷ ˜f¯0±{‰½N½¡r4£Õ¯]œ…ÐvÖ^”?Jy^fx	)/W¨æ¤¬VGò„-Wôµ†ëE^Ò >¦¦íªZÂiêocl¸Àn<É;‚¾{sYgèþHô;“‚©–é¸‰4b!µ.! ºR†¹Ýbké}ÒgG5MW@FÀ¸¢P•ðßý	l¦7ÛÔ×ìÕ*­vµ¶½w1¯&qoa¡¾Òn¹d?ECšm/Úk~Ç¢P¨›ÐÂ*Ã/£_¾œÏTæuªu€a"3q¡Ï¤IRŠÙ”(œ©÷2tR„@:R	g9È¶o›Û¦7÷ÍW‰8™”9³¿õK'ñäkýõ·à*·Ö,óX¤LM'C@«ƒê S¿™G8O[ûÙfí“yÃ7@éÆ@Þè~†´,Ÿ´ñaB­lGé”×P‚L–ÖâÀŠè(TU|/Úw†XîY}ì"«_Wú /b+lP7‡7 ¯Ãg€>¤Gˆ¸2úÆ.CnÌ>EŸž'Óhúi²6L#ˆ>ÍÜ…,ù0¿ÒŒ§¯`jÝA*úYejÌÉ—å–¬·ÿ²nàOŽ~èP§o\èR.± Ä2Ï?©9æh®ßŒÜ*[†îU«õF¹ŠH¿\=q¸7uŸ)àðf¿q<F ‰Zâ7ö«ÎŒí/óù¤ÿ‘ŒàÉ ÈšfaXæ;“"õ×‹µú[à™å úrd}×§3høÑ‡xñð¿´í°½Qƒh£nxSCá„5‰ìâ½ëSææÕI{Ÿý 8°Ù*Q
8¢.ínÃôî4ê­Ö<k}ò?÷Òƒ“Ø^%ðã•ãÕ¦0¸Ý `pghÔ›x	Ô·¦¹Ñõã¢I†Ånïåæ.KéW	á:7™®dõøôBtùáæ{Ô˜–«§$P×§8¨šééÿ¸»{~ò½û¿$æ_Mbû/%%MðÉ»¾xœVmoÛ6þlÿŠkŠŽ!ÇMVEÝs§õà8†í¤0@ %ÊfG‰)%ñ†þ÷=GÉŽ¤Ý¾HÔñ^>¼S·M³ÉÙï‘ŠdædgË¬P‰’ö-}šŒ:'G¯:&Ókjw›Ýv“Út&•©B™ÌQb,+IãëÜçV:G*+¤MD$YùÔäk«–«‚ZÑ!¼:>îàñ: !´4¶mn¬`gGPg‹ùJ9Ê­YZ‘–‰•’œIŠ;aeÖ¦¤Hdde¬\aÕ¢,$©‚Dw‘Ljb•¬!`WeË*?d”:Ö¡Èdq¼IüÞ§ñ}’™´BÓ¤\hQFÀNn¥uP§“€c·’1-ÖÞúœÓ›ÕéÑ¹AÌ–óu¤¼‹•É}	wJkZH*LJ”èËpþùòjÎžúãúÒŸNûãùMÊÅÊ@AÞÊÊ‹Js­àyX‘k.ïb0=ýýþÇáh8¿!cÙÑùp>Ìft~9¥>MúÓùðôjÔŸÒäj:¹œŽˆf(êÇØðÑ³³Ô ìXBiÇ5w›Í—*ð	…`Å üÜ|3cäö
Y¤ËXÒ»XYÐíhõaGæŠxaŒ~"TÏ(*³/’8\‘=R[»n¡RùTê
á]îˆµZd·©ì¤jã ×åRÁóÁŽ¬,”î~uæ9±°KP-QKÞkÊ¬L‰‡¹Ea¢ÅÒÑ?ÍÆørzÑ5ÞÓ« Ù¸L?|Ó»w5ºžã$n`,#ÿ‘ÁIË{ºº”Õ\•© ¡~ã·ÙåxãàØ; ãr-ÖÌ6Î•RQxåëÙFõÄ«®à6.ÓA³~].#ô‚ˆÀiA ¸¨‚|ŽûÓ›íÏÞv¡2a×•¹w¸…ôÚßz»õGZ……ÉM’þ©²¥yq:†óËÉe8î_f“þé x¼s:ŸŽïoC©ÙÍÌ³Šº| ‘Îu9Îæ±¼‹5.Ù&ÖÙà:<N§ó`Gr1¬œã‚–Q±5e«g|ñ£×l”7¨4j3^6pÆ”Ä=^Öbæš°ð1ñ#¿Þ5ó¬1EX¿z[aªB™C*ó=YTX)¿*¿©Â›‹h€};+a©‰¹îÇe$q+>¤0Ü¬¬“2‹ÂW£áx†‡Zúh6äÊ¶&‘jãÐndöx#¶>l¢L•PzÆïéÑ‘z,Q„@·}€Ö–2oé'÷ö§˜2ƒ¶_#Iøä0KŠd^½
íÃ26V¥Í¨sÌ 57Ÿ>‘ÊÅØ·Çõî¡Ïeûõ³•ÿGuÃÿQYUÓÅp¿žÝÆW£ÑÓÐ¯˜HÿÖ¨Óq‰9#m(ïtkPt“qÕÇ¨]½á¸žê¹°N†˜!¦`ª˜™vY¦èÑÕôä=·™øžE˜å&/5PÃuþ2?øÌ÷>­âkr»jÎ´ññˆF±tªl{kˆ^ˆÎóI!D5ÖÛ‘6\—‚OßN>bÜš€PÜ†¹š—hÒ¾Qö¾×½Ñú"ïª·öØïEˆRÝûÛúNÁu†uM¨#jÞ?·€|u­ö­;l•ð÷ìÄÇÖ	wúÐ,¾òÕhs+9Ü©•ãG¥åÑ*Œêû^VÛ×(´6QË©¿%|j‰X<Ž©½*—|“¼¦Wä?³Ve˜×JµÎ^ïaUd®ëKÇ
€r>%¨¹ÌðÓ¢¨ãR‹ÜÉ8,ydo×€›û§EoÄ—¿6Ûæ¹ÙÇÔò»­}–dGSòiZR Ì#NìõéAø@ŸÖ6ÅÊlQ&u;c`xq§âbU-—Ö”ù¢îîYó‡ª%_@>¾_^k¼_¿ádˆ‡SåÙË	q„TäØ]†¿}êßƒÿ¿J%™o/ùG(!`Pÿtqùÿ>Åëí·–xœí}kWÜ¸²èçæWh˜Eè&MÓÝ“œÅ2‡{™ÈìÙ7“åeÚnpÒm÷µÝ<öìü÷SI–d»„æì»Y°õ(•ªJ¥RI%om‰³ŸÝ<‰aœ…›ÇAçÑ0
Ó=ñÓÏ'›ýNw3I7G~¦+ßFñ`4BñÃpç£ÎÕK#)LÓ8±“²<ˆÊI£èÂN›Æ$ÛiQœçw“0ÃÔ"yuŒÇIÜ¹Z5Òâëqh§@åÄÉhzÅnÁxz»%ranNRÀÓW¾Âa‡âÕ»£ƒó#ïÕ›C£,
G›ªÁ•,O§ƒ\Ïóó<.¦yèyÍæÄ|ƒVK`AÏ‚(’ØyÙØOso”\zQŽÅï+Ï›î6ÏáÝ¾~ñ>O>ô?ïq’ŽÜx/@Ç$®m Ëâ©óá9ÂjH\ëªˆ›ÐO½QxŽ¨:Ô…½çqï›¯þ­ùê__âë£ömåWa:räWi’ç£P5O¹„?Ýî7É4Î¹·¤~UR 
&(žÔ’›W†ØÓ˜¤Éeê½¡¼!²XÅ0õ³pùj£ør¹û¡cr©:ƒt°t<‡w“¤ŸG‰xðù¢}_WI–{ièÙ}!àëÍ;Räe¹ŸOo<óôÎ»˜‡aê%×a:%7K‘p2ÁËà3üÉ²¥jÆ~xwy˜y7i”ça¼pU"óWTä·Äfoš…Áâ]ò½(¢Ÿ'‹3*…ÌÐÉËÂA¾œfÉ0÷ÂKw
“ÙÂ5§qx;ñ&É0Ù³pEL`”æ…+ú×¨$†7^ÜÄ l‚ýâh±ë©ÀƒJFá(¿‹­ñêðxóî™ØØÒJ0Í®ƒÞ‡mcê >Èç«ÐåWú]#02
Ä££æÀŸ˜p€ÅëÅèÃ®ÛíØ6“nn°â9ŠHÅ‡ ~lb;Ž Ú1jaÒð†’˜~ÄuâS–ÄM¿ŠÍ™4Úˆ‚öJcpå§bƒ{Þüv1RO77ê‰q1ß†7mÍDj;¹ø¢(6Ò$É[+0‰©ÈaïÚMCD±‰EÚb5ËVÛ"
6_fYk¿®<4Ú^UaL¡?ˆúzF;ÀDÙ<-T8-kÀÓB5PToàq±:È?Mx^”
#¨u1Z´øvæfF?ìâÌk¨ÂËTÞÈjClí‹-¡¶p¢D‹ë¬-f
Ñ,Þ Ê‰bŽœ·®aKIWC¼÷êý.ºFçÀ@û¾”ƒ´WN•ãòYeŒN3Ž†¢‰–mw?¾xÑm­4È¤Ëb²«‡M5û= äŠ«õ»U¤ÿ—•F8ÊÂùµŠ†¸ÚJQ‡ï÷f9f­ÎÇÁÞ£Ýþ¯³~eu ÎwA4äËó:ýYñ¸S<n}³b¯Hï~´PRZç™‰v!•V9ÐGår$†Ì’(2¤+4%èB¡ˆ‰"-Tã
8@[lœiKòJ`,ù³'Ö‚ßbK³©BRiq¡Œ
ÌR…@GUA’ªK•½TUJª+¨¢*¬¤†*‡aZ…¼ÔIªÜÅÈè$ãÏœPnnJn,„˜¨V‚Ÿf¡áM©£S ¬Ðüƒg?½¨	j^®µfÁ…2Ø†bc0t"/Åÿ']ÃŒ…U™Ë ÕåÂm[••5]vF/—)ì™OYÜœgôˆzÄÁ1³è2Im
x†ÖIœå²‡AxûãÐÔ‘%ÚaŒö8âŠ+éçñt”G88°$(,ª= ãÖ¢¤¹¨æ?ÆžŠ3Ä\@'€]
;„¯­m”[æ²¨à|jõrÝþ(úG &DÏÍ—îRµƒ…–šúdÄùÎ®—'À+è~l(Ûª‡-{dðbÕ†€kzhËhÿÏ¡‘½*H
9—¦Yÿ±¨Sr>hÑHºO£T‘,'Tqè/BÂ&Ófm›EJjÍ ¢ß¿½|ÿvAøþõå=àC­ùRP%bÔìRòcáñ(C«ð?=è¸2À.?¨â áá?€‘¤^æP&ÂÎ?Ö 3|nI'ìÒt’•@F–Z·â"ÉôbVÒ©ÙD	.Ñª¤Z}«DC±%zÝþÎR´¬ù jáj}HÑ«odiA¬õ y™ÿ@º1ü¯%AyjU»ÕÎ„˜òù­¹é¨µøA|ð¤/ÿ¤)¾©Ç`víÈ=ÇG£r€Ô·²ô(©õX³]ièAéV†¾ürÍñXt*ïw=(¡*À/M©2ŒÇ TywïA	U~iB•a<¡¬½Ì‡'”þ~„²`<ŠŠ*ïÜ>¬’ª€¿¼š*yœéÐÝ©~ày°þ ã1UÚ—P:•¡/M¦ˆÇ ’{áA‰T¾4\A"÷´Åƒ’¨|i¹ƒDçJ”JUð—&T
ZÍ'whÃëh
ªÄÛ3. Ú{³k¾?9ÑøÓÐjmzñ–TDþÄÏáïíGoNÝDùà
·Ài÷uàg¡èÞü¸§wR+÷?ö‹¢¯Ì¢¥­ £à¡YÐñ=;eÜµ€²Uû@KÅ_}gw=‚E¹£¾Y®poy0€qþeh–Þ6Kþ£ÈŽY¤pgxèÏ0ËXåjÃEù×]³|± t—FÙŠ%P˜š¥-¼+–FÑg%*Ô}^*:H åÛÜ0â×ÐBM=»È¨´[f¡¡«Œ‚ß›i¬ú@k{¼å»Ïl’o’É:- ³£Bšº–@›³o"ç_CøÌ²4P€mLEû¸;ô§£Ü,{ƒÆˆq|¸Jgœ½lVîf6ÎËængó)îüKº Ïa|ƒo›/AM´Œ³ÅæÿÚ··¸ó¿¶¹ó,ƒÛ:Q ÖV~w<}¾³Š'ðøˆ„§”ê) EP±»nFÎ‘*yíû?vë~
¦0>©Ùq¾QSÓ13Šf0ß%Ã¹X·Äž(j,XœÀ·LvèRò À	Æ™8ýåÍN40ïì­e{œMüA¸{k·’…’m¢’yäøP˜?ÿuôw1ïçTOóôúÎ¿FWD‡Žˆ ‹µ»ÿ~(h¯OŸ‚t …Ÿ>E‘œ%ðXªtå2Ì+‰õ@§RlÑÉÐ‡ÕŸÂ\ð©‹ë0 {Œöhˆ°©ƒ2D3™pÚÆÊêoÐI&Ù*R&UH§ùÔjÄÇ§CªÆÀD—Ct4üp<‹RŽ[†V9œŽ'"™æ“)°%Qì§w‚tîVA¤\S‹
ó‡’ÐOûvaB”rz5ÀÃèRŒl÷‹Žycn\$ÉHè•Ç}(ÒAÔ¨ehƒá%„’¤á¨ñNÏŽ½ƒ““¶¬üöçsïàÝOgHæ¬%kbâûãÓóæª9´À¸[×Ûâ	4aÁn›œ•Õ_ŸüÔD3v“Q‡ÊB¬_¨êEŸ0U¥]ûGUøgý“ªˆE:¾éšG§‡Í–ìú2ñS0èÐ@H&aÜ|ŒhóàÊ|[P×÷y
ŠÅÜ¡øÅÐˆ¡8 qÌfÑx2
É¤ødº{;ðÛZ;j5Ø&-(¤†¥$ÙØ7ØQßT÷Zt³î˜W¥-JŒ – -À¬tJªAÇ;µg“¾¶¡E!ú—ÛÁÌ ˆ›fSOU<ÒZ&Ð‘Œ“¨BòA¼x˜µAt'4Ù´"íóá¯ÄL0™VV£ÐÔçðÏSžo¨9XˆS ©ÊY:Oª®`ŽêªÑ-šøð¬GÁk3uM…V™¥Gf«‰Šq^=ÊÍ1þ©A …Æ¨¨–UƒF›U¬+eï·X.•`çŽsTèñ v8{y¨ƒÅ1‘>ßW( ðùNc0Å¢êmäÃ—lXÖHŽ†aEòUtyB§0,ÌÄé.Å«|Ø‘q0Thìß"×aÑ«iÀ8Škór2fa^ŽX!úlÖu~ƒ]8œO…ÀçP
ž¦¡8CÐ@ÏØîÓ…7çü8Å_…a©.r¶qªÙ\„ì£>ó†Xn¾DµLx'>*XËÂRs$WÄpä_.Ïb±¸ü5€M!± ÿ'ËÉ})`Š™0IZ%Ø….ÕûÆ¿Zþè€-‹¶Tü×@/úì} ‚G‰¹ Y z1¼Z•Ë’b=àœZ7NéïB¶uÝ¬\=œx^þ÷,ëØÃÏ
S- ¬œÃNµ®&/êÏ·7Ù×m!ðÏ«#?7§Õiï¹ûŸöõ3ôób/ðsÿC¯ß{þÑŠ:uâö=#÷=¯ÕBÆøq¸p#Ïw¸‘ïeêv…7G‡ÇÞ›ƒÿóöw|ø+P°ëæŸê¼^©Þ¯ÞÉÑ)äôuˆÛÁé‘÷K¯Ûíz?¾õ_Gç\fw™"§§‡ÞÉÁ¹wv~p~Æ¹;»ÏwW´î©¡µÔv¡±®©iYV‘›ó«4ÖERàºd?Ô`ýQsÉáŒb†aR×"'\LÍ¹î„d%¹ˆaÍ¢$þ`ÑŸ»>Œ§cñšTÑû8Ê±ïÏ@	¼Á?g„ÁÖÆŠØ¯Þžx;><ÿOÔ>yšŒ2qùÌ2šŽã•ÛÕTõ&v}ÎRëuÀï_Ÿÿß#eä†Cóˆ¦-r>b™÷gÞñ©wFJ•ŸßÀ(]¬1Eü qÙ#hÿ*ŒÙS¶±UÜ¢±í‚¦0è«D*Â“þ†34\b¡þÊB@)È`…x	IÓ l2oÇÑ Md¦ö1›‰ :dë†Ž<Û7–±•¥ß˜Åß¨òEÒû3s¾Ž_MãZ‡!¢ë(KPG÷:]¤XxQ\&.Ø·uEöÁª¶¥0¢~±0”’}‰¢€{KÂ²9É)Vä‰xºµy|úZ$)Ö&‘AÑßÂOçÛoßŸ	Þ‹Ý±££xè]$SŒF¸›ÐU'§G??¿=ã‡Ó·ðß%GÁe(x4f WïÄ•ÂÄCò‡o3töA§¢¹	OmMÄa“%ãëã>ñàŽ”’42¸¡Ÿý,ÃÞAÆûÆÈà“-R%`Jf7*%OH©`Ü®"QVÕ§ø&@ˆ×<º)¬…È;ŽBf'Ãòé|f[”¥Š¼=h1ºØ™±‹Gö–PCÜªI£ô7/1‚"°X"&Ç½ŠÁ5*þ‡ì8˜´L2¬8ZµMŒ(ÅïÏöø¶$+˜x¼‡Ù¸ Å÷Yí}½qÊŒ+Ê8EìÆžXQÄ³ËØ‘ÔåïtúCêµ«¬Ñ¼BRÞuŠãÚá8G^NÿØ ç÷¨ØÛ(ö50¶4pð3€ÎC‘x*Ö»ëÕ›]z–S\³fç¥x[M¬#Ú[œfíJá‚²@|Ô¦“ÉŒ
¡|hsl/õÕéáúr¦Üi²ƒ’If2:Œ2^k›è,×´É{E¿zÂQ½E0îU-NÛœ¦3»i®=¯}E¼YíÆöAnÝ¤­9brÉIÖjô±f×Ô5èy*Ù{ÿ¨ÿoj4u%ŠCÐÌÝòV•ÍRW#°"ýtAuÅÔc‰šG±Gv
ö€^B–¼p‚SBqÿ#L>1Å¹¿Ü4[«Jƒk‰MÑÃ9¥zºh×,Ãš[¯µ­¦Ä“'Î/^ð²½!`œOñ&§FB§u¶ì
˜'Q›'s²Šä&Î½–Ê$!æC!…I¸Óénîtž#,ì5,N_ý].Ùñ~<8;ò~<>?k<ŸSè—ƒ“F³'~øa–åä2$°Ö	›ÅXßÚ"óéÝëï¶ä],ðÖ¬mïµÛ?b@¾«$õ.":’P^¾œ…¥d6V¼@Ì|Ý4 <U_ÖýL3÷Z=½èÆ”Úy*šÍÏð·ÛyÖBvR«E£ÒM(×št¤2Ck~zA×@€Á‹vì0ÞAKV™q˜îaéßñ«@r>GÖœLƒTÔ
dßÑb›]>Ü©‹ÐÁD]Í6y>ŽýÏ¡GG£æ¬Û-ªrXÜA/dhù"		¡Ú{2TÏëï¦Xä|¥¦I[‘²þ §T°²\[’®Íx¢©,)¸'	8÷ÈhIR¸-*T3œ€îB>¢¹c4Õ‘ó¤ˆ2’ ‡ƒÈS†c‹Bàû·ãI#bw½È %X•LÍ`FW¦}i—†ÐDR,h°Î“©üiëü¶E¸4t²Xs•ÌŽøÎÕÙ¦Š#Fiêß!›øeö1h.Ó&NãÙ;‚=×€•:Çrí›™ãG#ÁÒeYs™Z\´IdÛ:‹a‚âlá± 	YÖÛ$%“Úri]7—‘e^ü/-ÑfµËõ¿åz¹žÎìJÉ^ÚŒ_Pð-;_iç5C_]dgÍdãÛ&4Piö‹²Í…efiV>î°pÛëÎåß|slöedsø¯*JÉŒÃÖ¬DjML6ž,9b$µ¨Wj‰Òb§-zÛ=ú¿Ý‡å²?ÊŠ1¶„Öë?{Æ°ºý{Aé?{|÷½Ää»ç»÷³½ÛÅ?ÛºC@û¥A`ÕÝï¾
`¿ý}ÏñQKUR¼ó¯)ÅöüOÞb×jÅ*$’æ¯$4r:öo±@¿÷¼î@=^|_(5£©Ê%:m ðjüå‚:“4·l6XVÂ#¶¨R%ˆ0sHiDc%<þCmúì‰zñ¡DÑqÜÌU¨,~5þ0êtJšYi–šYq¦â™Y³V×Ì©U£^æÔªÖ(³™1W/ðÞ3z¤ìA†IÿjCl¦‡ÑU&h2>+FU´ˆÁG0ºó¶„­ž‰„5J÷/§¦‘[üFv÷öjN°¹©¶ü\ý§ÖŒúOEY‡[:|X&úhòofI”‹ˆƒ]´¢vIy–Õuº+ˆ$°ÊUwi¥¿…ëÈóU³ W{4®ÑA¨E˜Æÿú<SZ‚eUUfplå~á…üÁ×aê_†Å9“(à¨4„¥ å'ž¹žvœ»è¡§[ÍÌí~ü*‹xÎÔ÷uz÷!TÚœe¶Ê¡1Že	SÎëëÈAÒ«¨*÷vÁl&:&È¹å”,G¡p¾†¦Ö@[Œ¤–ÚyPŠÚÈÔ´¢˜MO3¦yÎèÝk£)CÚÏž³‰Ícs¦eÓt”ò$Tõ¹RyøcqFŠîe¨pÆ¨£ÕÊ¼pŽDÑ3ÛRç‹¹-yÑÀžzêé§¾~ÚÖO;ú‰n=pñÛ©ÄO#hÉÒ\yg`G&)KŒ£„^í?‹æÚ´³6mÉ r<Æ…'ùÆþ'©'é®l»…/.=PXîO·ƒJi>14ÿºj´VÕX]3µ­çã4<§ª¼E"ð³+/'~Š—nÜó¡%çªTeü};¥´&Ówšë›ët E½þ¯Ï[À¹cŒr	fi¤¼Q_æW€Â³®y€…ãÍŽßŠµL¼’2'R?œéS¤’^z+÷oz+÷ÚÊ-¢–>A‡ß)‚ƒN™þ¿!f;‰r¶6hWŸB/ÄU5ì²Àí·}°§×ÏÌ?ý.«¼Õy×žÎä&Åêí¬þB^ÿeš»§Â«p–Q'§éè‰®©qQÜ±Qüß¬ìj,Äe·ˆ¶+‡ÚY>“Š´£{´ÈŒ(‡Ý›©÷ˆ´cuVV`‹ÆÚ=ôõVVŸS~É
›hÊ	ÉÛ–yõ‡ÙWq)‡¼“ƒ_ôþ×ÇüñvcýF…ûQJ›ç×m4*uWm4œ+6Øêøb	·øÜšåÐ-+z"£¸¡ …8¤BP!w¯)ÃCEQ*NŽ1i2Â ³Òâü*LC`< º	Åÿ›R+¼}!¾Äðàbe‰²8AC|¥YNµ·lÔl€y¸{;èãq¢Ûö8È€C\ðHÿ±«¶&ìâÉù&G~Ä“t»-ñO‘o—î¥·ÒýÊ¿'	|™ä‰ E@Y‡ÿ”AªZ°x»/Š ´Úˆ6uÖÐQr^^©7)Ú6ó@•—™”îF_<$SCß&…I¼MÜH7)ÎÉ¥wo‡ßq^ìD)üš…#ãmÜôzøn3«G¼’e¦Ó(¸5ê 9Ñz(°*(Ò*Š`"ƒÓQ.A5ä5;‡G¯ÞŸœ{Ço_ŸxçÇoŽÞ¾?ç’L1„ñ„1™(êHŸ¢_ó	ÑF¹ÜuÄlc(gž, ,¤ÿ§ ¡"¸¯ñ‚Ñ!8,¦6Èµ$4Zµâè|?>«ˆ(4F+…l}ÃðÄá£¯±1¼2•¶wt.„F¥ÇB˜t‡wB³pV<DSr-_nÉ È›ä:ò^BÁç‘¬Â¤æ’ƒáæ*èÊù‡º ¡2Qƒj(_”²Eøx0¹slœz§X…â}¤Õº`Í-ßr\:ª1§™ÒÖÓìVœâ-åçp/2rÜ…pì¯Ì¼—ÈYb•ë©ã-µzy[nzE{teÌÖqæ%8aÔÈÚ[2 ÜÏ2ù¢û~Wûê˜áÔÍ'2‰ËQ„–´ídÖÄ#YN2ÝË¨ÓÐõ”^‡Í%F0:ã 3oì¢OÇ”Œ©Ù¾‰XC5¦T-
8õ…¿K,(ç8øQ‹ò»nh<cs=UÜ.ÂßágŒkÞ}3íýÚÞ\Á8‡aø»ƒ•D¾®û!u—æç*¼ø÷¼µQñ5~/p«ðÃˆ8‰Œ†•'êêä]’5Í¹înZ1ãÕ˜‰”>Çq	óh8(ø•'¹?B›ñð±ßýqh%Ðy4S0f‹1Œp<ïgåõý9› >tºÐöÓX@üiòü¥Ói*0t]ËI÷ƒ ù$Ü§C·œ„Ûä–°˜°ÀXóc»Šƒ@ÊHcKV\¡	ÌÄ/»ce{ßÍxíBF¿”qŠ°÷Ä®Ê 	áŒ·ÔÃwár{•Õ~Fâ8@UWúˆžÀÉ–>|œöŽš4<¼IÒ€%ó‹˜–¯c2ï½ŒOmÝ(
X72ý"å”ÝZä¶ZQ³R‘IË{'óxê¤›SHµ›#…»2¯÷ªH'QÿGe–#ð%4,¹wsµøWB.F›í†êl£:Û•]¦áPŸƒgB*z£Æ‹v>ÊÌ‚ó›/AuH›·ËÉÈäêZZqÙµ
>Ûé’ËÕ°¯ËU”R«¯ç0ÜÁÆbw5ÍôrëË«ë:ŒoWdj8³ Ì¯ 1¸žZ Ú¥~)ö·Ü¥ÐìöX—xƒq`]<‹Œñ)fH·V!Îz’dz±ŸGF°ãÕ[9`—7E€ñ%cu“A>Â7Y¿XëÍe^ˆá+	,@ýFà8Œ83Ä²Y´W †Æ¬ F¡h‰tß©{c½—M/ÆnÐã^ªÃM)!Zm¶Ï^Òšf•×}#TÕ[vôŽ‹ãmó¥/ÖnõKs9HKÃ±Å¸¨dõhO&”æ}HL®ñÜ7Šä¶ •ªM"¹øéu'öyVKÒ‹–MÅP`›lO¡ÂÕåN?èÚ	…*J—-Œau-×ÅäèmB@ï7_ùEßÅÓÚ¼®x!–›ºèú©-¡˜;¼ÈÀìÍº•º.mß¦–{Ã@ßáå¾™>aÑÔ´¦<"káÊë‹˜nåÈ–-ÎÕ>Ö0•Wf¡Dé›Ï	CXÍ‚’jÒøèê»¾­¼d6…ìî÷Ï1™¨›LI€¾àîmÐW‰eF«#‹yÝÛn×LìG{º®Á®î-."U¨Sdx±rDd«I¦ÑF+èç*Bî¶¬ÿmöÚq)%m
]žN¼!h yÛÇPí`ZÁnR£ê‚“9òëóÿì[:±M¾IfÌîd±J±Ü§Q€ÞñÇî±±'ò{ö3]ÁïÂ1:WòF')¼t8Ã4“#—,0ô™Hµa@‹DC³¬‹u¹©d$‹õßð~Ð››ÒS‘Iµ9¤Ke¼µÍÎFÖ¹ ÏeSðÆÅà>+šÇ«7zTr“pUxBY`ÛÐ¢_Q\›tRÃ¦Q[¡Y¹â·¶{pÖLñ~qô?'£À©¼Ñ¡Ù(÷•f­òÕŠr±Ê÷¾;ë{×ÁÖ²_äŒ}•Å¢N@ÂG/U4ÅrnÞØyÉ‹ö½5¹9‡¬)ð	é·§ç‚U¶M³P¥0ý*UêŠ;}	Y1PÑ,fs†1c|Yiáü`éŠJE£´
êu¢²‹pI§PI¢z©(w­Rw%ÛB6¤z_èÒöul¥˜çN-®à.¼MÉ–×mW®º·}`:,&ôø]ÊpÑ½¨->µÙQËªMP—-|X¾vÌÀ¯ë’+÷A`Ýñ_1˜Qôõ•f•Ã”‹¶Z Ü%pÕ@Š‘Ô¨õnøA©²•ßRR¡–øÕ./é#Û¯xúšQ¤UÐÙ@ž·mü:JÇ7¸íw¢6‹ñöµŠÍb¦iÔËÐ/`bLRÑ§«cºQ›°ôˆÀ˜
ünÝ“æBGIAðgì<`7~^¢§¾÷p•LGJqH“SfejX_úœ…t(¸àˆ™0ÔèKgF}ÊÈ\(8s#ˆ·¼Ë¯ûj§š¶ø{(<CNÒäfàÀÊò"¡CVÏã=•N(Eñ0©ý$JbõT¢Z†¡O~C¢DÍ¦yõ.´ÏqŸU<Põ<b\£èÿ¾Ú]—øî/ù>Ú‘¤Äå½˜;2W²~³·Ø2Ð:(>H!ÖGj„Lÿ¨A`EªÇÂTT]OUÅí_«|³kJyÒU×ÇºI\—ëš²œ®|¿/zÀ[q`àøä¨¹Êêu©ˆ8¬'
—êßœ£’m›1mýZÕ”²²|{øÃ|¤9éŸŒQkF³v°p(¼eòÏ
ÅxßQï$4/1˜Í\ÌoŸÒÍ9Å4JÇâØß(R™õ‹}Èç˜˜¥cê{Æ|]j©¡êc˜l™&®Î´cøk•+Ce±k·SxŸ_¨÷k
½â¡¢ÉóYÌ]°ˆUR]ÍÓQ	i×ä‘¿Ò'z^ârA•·ÞßÞ½==ù»ø'<¾zwtpNOçïÞŸ¾sîùóçŠëÂ¶Ë…Së˜dSrÝú„,)²m†”‰*Jî€ª5±Ôv,	¤lC-bYH[ri„³C¯Ó¯Aá'qàÂŒ¯HE.¬äŒwÝÈÏðt·Å“ ®š…¦kJãV¸ŒrjLo¸³£¯¢Ú‹ºz2C"ºa@®ÉÆAg‘Õ°dBåjˆh¤l<‹È§²mni@¦osG©›ãàà‚‹½+W,T,¯èì™¼õ‹ý¢á(c£äÓ¢H±šqü„³ü_%œ²šö­ÛÓ-[4UƒZ^,aÀ*ùå÷vU²·oÀRªEÂÒ&|¥Ó¼Áž@§¾Õ5»ýy„.Ój­,eÎ¦|B¹Ÿ¡.™Ÿð9§”Æ»(,ƒf±‚ŠÛ¥¥ñ‚øR<qž…¤z¨ÈëùéhLÇ8@Àh¬+yŒ³3ô…àÖ) £„éU“ÉÎzWº¼Ì†iÍ+}žÚMë.}Yc»Õ¬Ø åN“ì´²Ü³g:C®–6«í5s£ÀŠB'ˆŽ‡äÍÍ
½%&—”Ã]a{|cK7ÈòùRÆZ×ð[Î­ã²øt¦;Z7­ÕÎl3ÈQ`°à@âíß V©oû‹±tC( eñt„oQ™D[¿7Øš/˜uUÅ–Øù3„Ô”Ñ*-iS	×ÿ›/åÙ—O÷ÎFÎ,ÒT5ögÝoõ|áOÑ)×{¾Ì¯…êŽR:_)¹ÙK„+ V1Ë¿ÕUW
3äl:„Y6œŽFw0€’œ?$øÊÏ‹éµÚt¦ŒIÒ"´ÉªÜí%ÏßÍcúìp§þà3^àUíÝ[i4êü{Ë}H¯‰¼X=¢æ·£Œ¾DQXp.±êÐy¨xš rÓ1Ú½DËLÛÄÌ¬ßlXvUy¤¸iqrvîºBÆF—TØYE¥»ƒ7“ºfò.,Œ)ñ6ìÛé9»:ÇLå«rú•9Æ¨Ûî;yäO“›ÛÕ!lˆÃh‘>’}ãlõ^àó‚LM˜_˜8s5\^È[KÈ#«i&”=‚âIÃ›X<þVl¦¤Ï3?|”ý¾Ê­¡"\o‹U¼9úõOä£þ…~œxJŽÚÂ/m‚#QD@A5 YÂdŠƒB:¹‹£ª§¼ÛÆâ[J ^Ÿ&q¨\çé”®Æç×H]Ágà¿¸5"
Tß7–R’ar•';Ô2T×+?Ž¥AÈùªšEc#?“i†®Wë(°[:ZØ›¢”ú`o(ÎHÀd%ƒ5A	X¤Å~Ãª¸–0ä+1uP}›{¥K€ì^Ôq	ø@Iv‚… W¬¡h;­,rPqðÅ¥OVMŸl>}²¯£&sW§õ‘úLFÐ[DGø_E5,ùìQˆ(ãý"”GÌÞÊœ¨.µrüÆX«ó("euÆŒ'š¯aXûµ…±Pr’c¡¹µ:ú¬_ªojÍšÐ–v4pÌÒ*Dâ)`.èÞõ;òK–²ùàøPË¡¨möä3i‡,Y™,™AËêª`©³»´á%§ta¦LÙ­R0ŠÄ–'©øÀjeihÔÒ2ÚpüH}v_„€õ7r¬É,CC.rØ$åÈ¥dEÀé³KG ³¾ä‹öIYÊøË¬ÈÓ"æ¶ý8²]Z{.Îˆ& áŒáškòæ #né…
2/ Šº‰ðUñúè˜„TÞX„ß~Wt:¥BOz¦ãI/*QvÅ®*ÖtqÛqøÝÂÆà|ƒ¯Úºké…¯1ñT„k£†Îsm>EºÂä«äÕj{©HY¹'æ„Ë
;\öäøì¼)/˜ß,šCC.WKÈ°w·”ü`ÛT³OFý7³ŽýOdK±£]pP+* 0êlÜÒE/’?&Q2¤àXòØé/›ùì}‚IO+Ü°ÿiœÑð®#ðF	ÜJgI˜Åë9ûy¦Ë…Ëbˆ¬kEmµœ+&Ê[vUŽwô	¬WÐÁ
v¬)ŒPG j`vŒ,–[&B–ÝÌÅJ…Å”Þ[!ïô«—5í¹¨K/©êI“ÚFs¿.VôèÝ»·ïö”~¥[#üÞÝãæÃ@O÷.±VäÁ|ÛQ<D´¯4Ëvãb¾eC²lI–ã€m[ò¯\6•xSè/o'Ù·Š¹0Ì«3¤Ñ kêÐIŒb'ÿØëÂ£µ™xœí=kwÛ¸ŽŸ_Áúž´vb»¶“vÚdÚ]7qÚœëÄ¹‰ÓÞ¹mŽbI‰¶¶ä+ÉyìLþû )’’üÈk:»g=SGâ@	~ù’íþ³Þó‡n»õ}ÇßóÝh‹}<êÕÛf=Œê#;q£•¿ùÁp4u\ö«7’Qãâ½–äFQšIqâøù¤‘–I»‰_Æ‰˜©ÓÀ‡ÂfZâ]LQIåà“ÊZÊ0ÃÀLƒ6ó'£é¹Ÿ+L¯_&7763°z}ùA‚é+s\Ï\¶sÜíºÖÎÁ®VvìŽÏFö»õ|›iÖ4ñGÔÄŠLÇì÷Ÿ—/™çÚÉ4r™ïPÊÁkZ°Žú_ºÇÖÁÇƒ{Çš×ÍvÍÈþ´ÿñ“ÕLw~£ÝVMB…çÚÇÞ‘µ¿k}>µ>v ¾++„“Aÿãqç€ªïˆêf…/Çû@ëŒí¢:^V¯ÿ‘Ý0‘ßéu;ÇV÷ø¸,‹ìýR[¹ÝVl†të¨ó±kìÿ«Ë–úTš×­f³YMaìö­£ãýÃµ×ë|\FKU?ìîZ¿¢µ¾LÙi!¬½ý^÷°s°Ž2ôœ5l5†ñeÙ„Ó¾œvœ{ÀÙàpV^®­°5vì‚´¬Þb¾ÇþÓ»j±_ñO[Ëk¦YïÞeóTµ÷2ëå
êÈ`¨1Ë;r-ïÊºt£ØƒÊ0bÈ¸°#¶kÌLhWWøXººðG.«`öì{ñ­ù¢*†~ ]Ìk#R˜Çþøƒà"ŠNy$°ÝÎVGrg¯kå¡èúºþÚ–¯·++>×•h+Ú{s{å{áÞì?˜L“-æùÑø
øÌ“Yœ€¦;Çá4Á"øˆŸÖÜ+ìwÄ¼0Û‰Ìjn±pä0©á´Ü{"ø2ÖƒîÁ‡^ç_]k¯|Ð¤ŒÖŒÌn/[€ñ1¼j°Ýhm€n™ØûÆVµN@¯u~ëT€äªVë¼ÇL®±2V.W«Î„Ù~ì:œãÎþÉþá"8oœ·› çÇtüï)°Iô÷Óƒœv&¤ ·›P³ñº	€FaN¯Ÿ“…ƒ•NZïdpl}†©&«h+¯ És7=0±ÏaTR[8[Vøø‡Ž;²{ìÊaˆU
ÊÂz‡ñ¡ ä³p8vtc) @Xù¨¼“š”vôËÛ×»ƒæëÍæA³¹˜6yõ¶Ýä NãŒðxQ8fÇÔ¿ŒÊ5ÒÚDuœƒ
d¡[Ã’#7¨eV«|„›iIÐíy ÛÕ*h¥¦R ¿Ê©¸32#LiªÛõ-4OÒEBo[Öt£ÍüÄ[¾cµñéš†ö%„í(±pRÁÂl¿¥ØXÖÈ(ð×wÐ"àAÕáä¦òSkÔDý=>mT·¡ª•„Öp2­`Ñj½×›0|¯µ×›b>Ô7 -S8ën ´n #uØ¥=Êã‰ÐGXkdðx½)ñ€b—!cI±ôª`‰x¡Á²É¦b[£Ç,?pÜëšÀ>[„C
±QAƒ@W–!À<`a'Š¾œï`ü3høWB¼YU!›êw¾ÈÊbã‹ðª¨óîò$s‹qÄþyà:D;<;æìï¸—ºêYÀAèÊ9L®ÆÛ¢ï9k¡ôØÂaEpæ5””Ð«`‘jU/ÌPå%GòRµò,gm a^äº”º±¶µJÀ°*B³êÑZÙx•òj¼µ3ü¾þ”a‚è8ŽŸ€I ¢B\ëw`ä³ÃÏ`1Çaáåë¡þ‰'öÐ­ûd`/‰¦Ó6ê›ñj½ÕŠWcÞÈ÷ÿ¨PFÀ#¬X2Ê’Is
|úN[ŸwÁP§•‰µ×ÙïãSœÓÐhÇ[luÃY]ŒY-ƒ…J¡ÌÑšDáyd-ÏöGÖ4m©k l¾Á¡=
ƒsê•ûbÚ=îœtˆ§Ù±û¤X~Z¯û¹ÛÛ?ühíôOs°mÅ,ƒn¼:•ÿ8ÆW®R½ta½}.ÐMÅ³<öƒ-†©8RZ¯a0B;5LÛ×™$k½]¥\ûò¼(wóþÓîZ»Ýü¿ß?\‚ðùÝ8ØøÇ¢0²7q‡8¸žªÛŽvö»ÖÎñ.®b¿@È†ÑP ýDÈöº iýã¿÷ú]^ö;$xwÁ¹±á­®r„q³È±®ÂèÇ(´@ÅñmO¢^©x“THxI[CÈ§þ	ßk¹ïgsÆ‰¹¶?y?àëº E=.D_£ÙXCãÿÞšð©lþ÷ƒ^×:t§'w!`ºº
šÊ”þäÂÅ¹ÉJ.¢0IF`œ€e3³ªkM*ªa*Ê¸ÞºwÇwÇ¿YN÷ö¬>,Ñözý/Ô`	ÀÚ¬WÏ¬Vÿ0"®žLõz°&Ýù;|œ<óÉhÀW?™Jê@”hÛó.˜f…'°AåŸÝ$nl]E~’¸DµÃFq±¬ÜoR9F›”ÌŸ‰öÉo'ƒîÕeiõö÷ºV¯»÷ ‰ob\„Ú '­‘ï¹`pxO&$÷UðB½„	(TèO€_÷àh Ï‡;]ëCÿøðn"‘1Ü€¡“ÄŠý`èZga„iYã-g¢¥Æ[Î¬Ó·á4Š×zã>“þáÉ)p ¸Q>	¯\´}‚x
, £í¯LºÙçýÁéÑ#öz˜L'’øYD+¦üùÄ“_ëa+*‰Oº Ê™)hf=@dÍ´²ë½^çä“°ÌÉ_wŒ½‘_£œ–‹±572´ý%7šÂ‘³x£‰¨¾ÃfSÖÿ„~*¹Ei<	m{ôÕØ]_g­ïÛ¹ª¹Û£‚´M<¹©è°k¢¥š±…/˜µf…–2Œ»œ¶Í­ ev~p³Hßð‘ÛF)sÄöx€“C“ÂÞ²i‘0ÏFËâ†Enì&¥RiËµGfˆ‰¶'Õ¬6Ú—Ä]ÐŒ|rp”?!¨‡tLøˆebÄúÁ9ãKŠ¯­­Oƒ#D‹¶ŸÜ8þÎ‘˜­›íe´É÷FV!4Â IP×S°ùKhÚcað8.Í2âÀ¾öÇÓ1Ã9ÆDðCÀ~¸£K?ˆçtL‘Ûz-·ÛMÔ´Ùð¸{Ò nªµÌ`Yù8ðƒŸ”H¤pS·À.‡{¹Ùh¾m47šÍr½ÇM}ó÷N\ž××KÓÂÍƒk¢óøÎ|~J´—oØ«Ä½_ŒX©T„Ë}»- œ~Æ‰‡¦¯ì$É3äXäÌáï4OþÿŒÖUd™o´^º#Óg6h°›¦ÖwìyAUÚ¥8eÆw¿«Áhú6Ém‰~áæuw§šñ#"w)P¡‹_¦\èUœº…´Iëïùâƒ¶:NÉ<BòÛöËPÑÙ-Ò Gn4„N±Ï]z÷Qåþ=#½Îpu=“½›8IÁX›—õ†¾äAƒŒ0rr°áÍp4›YùVt<¹-¯Ü¢fíëGl¶X4k_ž?^³ Li¸Ù’¢vŒ–‘½Wy9çöîi¦/-+n.2Ü2`œžÑ(OQ%µ¹Ñ¦¢¯ªòÔs¹=U“¾T=±:XçÖ\;Ë‡î‡jóvï¼YäÎÙ¹•Û:m¨Ì¤BJvúÇÇ •¸ç¨<h.EÇnvl'};Lì³‘Ëº¸ƒ¤ÆùQ%M¬ð³:-Gjk)R»÷#µÅJ²ÚO¢÷¸ûát¿Ç÷/–¢t/Oi7pêIX‡?‚Æ]éhÔþl"•Ó{)mÓ, ‘ôãží$I%6ãósHÔ#–"²U ±<þà¯Lfº×¶í<Ç¸WÎ$OÑùä„Zd¨¾uReºm4'ÂhQt>+kàŽQFªÊ²‘F¥‚0#Ij.Ô?áFø‘¡C¥[2l”V5Ž25eÒÜíÇ›Ä£‹m6.›9›‘+0·Ý+Ög	f‡÷<:wZÿÅ?:ZéXD´Å=a\ÐŒ˜ã
~ôžœí/Þh¯=¨;g;†ˆÙÞã…DäHFÝj[þ¸;?cÇ¿‚yžS!É³÷ð—Ø„®¢ØR˜ê†I4bøµÝøÿÚJms@Æ"AL)üMÀ sw7©‚8?Ç'm
çÎ„@šô¢óä® ˜ „C†Áê°±:_øŸ6{bK/úÚü^KŸ[Ús[{Þøž¯·©å¿Òž_×ƒ\gÀÂcX’c,þ>+Ù£löœŽšÈc$LdŸKÌW¼·eH°¾ÇçŽÀt¤Cò¨JÚ `¹SƒäS*hPzcÒ†Kz—Ýò£;ßö8(èT9œ¦ã3ìÇF£!eîÃ@víè|¢Djêkr·6T™´·$ú ªÃ‰’
Ö¯‰d‰ÓR<‘½77‘‡Œ=$áqj¤VÖÆ&YKC´ðO{½¬1 uÊaÈÜ œž_0Â$QÜ`6¬ ñ[PÎ˜€­8„k¡!¡Æº]1ñc{„TpøW×†Üøœ…×jÌü˜!°¹å;‚1äÆ>)U:Xh'¡_ÑA' ÀHÑ/Ô§Z¡5UJõ¥$•Îö˜„Aï®áEÄ»ëEíE[U®¯okØª'Îˆz];&V4Ò›Û¥<>³p6²S7bF1ŒaMˆì¼\Ö¤VÅ¼0‚$4‘ŸÖvÐ_¥;}£Sêûe¹üÑMÔà¿‚`OÜ¡ïî
aÐVÂ	OÝ€ü[‘ë°2:D“WV‡ÕGê­‹T ê€ÅS£Œhh“OZ1JáWAƒÄ~¤ÃÉVä6Ù™Ž'âxîµùÝí…Utî€V¢ÙN%@Ï?Ù)•Äì(›ƒ¹Š•ÎÂpÄèœ‡Œ–;ü³.)LHCï°Bx¤¡¿Ø:<Ùßµ:½^À¬”úG«süñ	«¢&&žî*ÙS/‚8#zçìÓ™-êãéÜ
¨s¼1R…½8“õA5^95»‡»•ª@OÍ\A£5NÜ ò8XrËªÆˆ„m¾ ¢iºdh{	z‡Î4 žå9ødÅ³a^ªÁ2yh×XŽT´©JbROj=W/ƒgˆ±“ÞL¢7Î,£IGj…{]¸¬ã$s¡|ý=ŸúLœJ8ßbQÇ<*j™Î¥¹ªJ§V‹ª_UKMÄ'& Eœ$ü¹Ïœ¸ŽŒFÜ‡£0v	ýíÜ¬+Ô“8¬xf‰Óöh‰ò#¯Üdä©©­wå'ÃV‘ÉBáq*>K*Ärªa¸TØ>c°óÊÛy úIù>ÌœxC0¼A…TÂ<G_ d8‚e£h†ãzöt”¨ò§Á ¼
ÊÅ¶¶PëD')’½ð(ZÈ2lôå(€‹ƒoA©ÂgÛ&«³ö+X¶ð¡	mxh½ºª–ÓƒZ ô"7Òõ)¤¹ò½›×Qª•fÖT=â[’““«R8ÄdcEp7µ#'t®y´Y[høbç	"c4;bF_¤€±l_-ˆ¥Ò;9 1µðœf™z‚çøæ(ÊÔx˜Ó”	±;2Þ‡ÎU«e¤L§¾sm¤8v°ä1mO™†Áo01R2Î=»Ý½Îio`í÷w=Š´ëŸda.Xö9¬ÉQ’c\å9qÄ`>ºÕ§4Ð*e¨WõÊÆ:DWÖi%a–j•¶š×«Íö5«¬B0°WIÂaùý·æm¥ó[7ó
œ*\5Ks¥êŽÜa¢oB›œ/w¾~25²ªŸSÊbn0ÔrVHs&þæd†±ï¦aô&ä Œ+Zþzé]/•Èý÷m¾¢ª±}I5¥ƒ¹	kU´9¡X…£ _€iÊ¨,æØ	ôÞÙ4qË‹V^š*,k.JiÉjËíLŽX­ÈDnM"~Û†Â+¶!e­†¦Y¡>V"ÜàlÒiñ%—u»œ–æ)A'[’>/.¥AIi:½iKY¤ˆƒªÏ^Ä f¨t|ËÔÿ)ÓDüôÓ¿ÄT‘NŠÛZNÛœV€{²(ñuæd‚u_ý•¦—øžÓK|ŸéE«´¥M.|fQK¶‡˜ö)œ\Ì
Õšê³{ÎËNòú’£öÁþ!»ÓG¿ä	ªwþyÇê¯Œ[¦Šìyës§wÚµN>íïŠ ´^Uæ?4ù-aò?Þ¦	6¸pòË®6@¾å<„âS.Ñ%Bj[MZµI{~•IKZ1MÜ~sü#2p.…77À— Ú@‹5û€ã‚éSîž•3XÊ²bÖ·hbàÏmuÍÇŸ9srŒ™¶¡«ÊkóéÃæN]0µ)’óI|€]ÍZ³¼pr]rííŸÀJ-h3èDN€”!ÓéågM€˜mnÊ+ôÚ€-ù€íªV©YA ø–2ß”Ã{5RµÊéT½\¤ã4»û‡ D²ê½"%÷kUÙóç¬"Ä÷W¡ÿøC
ô{®Û–F™T€¦Z ¹ I¿@ÿÈªCD<€‚tnÀX	AÉ¯¿.Ô U&‰ú?g¶ð-Àÿ·YÚ,´$þçÿz«E›ôÏGsÆ'¨gvTÁëÙšçøÜ7Dì3¹Ço¤<êwZµÓ÷	GoOÝMàòØœY£þ”Ÿ™­@öñ„ÍøðV2øücÿìð?èC ìôcö>txáÃé˜?‚6±™yghÖC8#{ÑOÂ oHäÁÓ0ÍSÀÝ‚‰Îq(#´[zÙô›„‘Ú²|Í]úx (Mj½fQ|éhEÂÉ0t\-!þ·«úª´”ÐßîiÒëMÇuõž’È>þ¤ƒJSa&¸EfX`H~²Í€k‰Áäˆ>\€wØc¶sæºžðŸM½ôÖAœ+kHbë¨ƒž³æµç‰8D×ã“eZ •)pæRÓþTÅÛ™â¶“·‘)à¸¹ÛþL‡ñm^pä‚u³…Ç5ïpõíæfužnÑUJÊ:®]à¦“M3£«Ødtƒ$ºÑ"¸Zýj`®Á@«.Ö8ÙW—©T6x"¾BI’3Æ“1[ÃTœàØ±?ù±;ÔlPLIA©jŒæ3šÄ†¥&Ár¥^	#Vñ©!æÃ$Ç¹†Ïëï´l—KN¡¹3“U!B~5ãê—µëï¥*AÑB¹S9Rðˆ‡´º °0~‚.¹T@Õ@®RÔ;w<ºæòÃ˜Þ[Ø`›ÄK)/½RlúxZìUu$åS¿ÃbÐ„3Ma°bZ¶g–VÏ`Œn´g\/„ÛËO€/Þ+eÑÄV\-(ˆ ÎÇX¦ò<IªÛwåñ¦6ý«×ñ{+ýj¬67v:ØÉDT§ŸÖ[X^¯³[7®áJ]¾CÐâÑ±oäóE8Òt?-”ÖRšîå^^PJÜyíÉ€6ÔR"$qµþË5|½N¿ÞÀ×&Ø‚ðW¼Õ(9¡z‰Oƒz
ÌƒTV¥1¬@½RP–¨ÐüUÕ†!Nìý{‘ª^Â,`À¢92ÓžÌU#0šÖ¡\ûK·©¹<[
úvY6±<* =ŸglY†±"n)¹QßJ³åJÙÍ4‹8ø'z¬g9ð±hü¯Æ÷×B˜{Oéž›ÿzÎgŽ¥GÐ
nÇÛ ×Õuo3—A¤Œ;ü«….ZìÜØOF®^3ÿ‡	hTŠÁ5'Z
5öÿ˜1’­ìU­ÏröáJ6•Ñ­Yü«ì,ríJ˜”R1:ÚLÆ	aÂç­üdp•/”C¼€4¸ÇW¾ø|/°Kòð6ºñØOÒXnŠ÷&/u.pbÇqrM-¯ÿ‰x4®Ðp?ƒŠÙÌG
2ò‹¶VšXâMúÚæt¾­ÉÀ54gØô €²u½*ƒbÝÛÑ¿„a^x-â#EDæÕPS\ø1î½à6dÌl–6¯.þ—xÔPÊ‡]ÅäKžÆn«1VFP¼ª(”Ö±‡Ph:qÐ2DùmŒ~6n0ÂAø¹î_§Î,Ä#³Ø5!@à#7áu]Æã#¡æ¥íèø¦Û•ß˜×°V¿ÿÕy+ G“‘qc8%ñUºÝ£¢*®;ÁàgÕê€”Ï¬UÃkùºÙN"8Sþy¤Xô( £´`:ÔØûÂNøKÅmœ7j¬^ç™ï¨] ¨Æ A‚€uí¹¨Q6›o_C
ÝŽ„w2xíÃ°© ·ðj£C²z^ìŠÅ×‚`R”nŸ	˜~>8‡!Ñ‚Ío«Þü¶Z3J]|(–É´k(†|C/Å‚ˆRX‚î~¬”½+Œ$õ^ÀŒƒ“OY¸¼+ÖO£@eiÞÖ@O=ÞWu.k… ÕÐÓÇŠxm¼ð_µO—½l˜Ærœ8Øu¬¼/¶ñ§{¾A%£?åv|©tÂ¸§ÔÐVvm»Ö×y3ªñ¯þw\°„Ó	è•Š‘^€ôß3Ð¸†#µŒWö§aù`ª)­7X]í·A 1Ÿ¡¹Œ‘9Ú¯„Çæ.3(@ò ¥¯oïö{¿Ià…~•˜åšBfªP=—¾ã:K"Á³=µ¼-Ù=Ó$Pµ-wì©°œ~îK‡ÍgwEf,öSÎqB/Š8ÊÂ²…Ò·VÉÆ¼—WÌÛç.yãPæRk`DKª0ö¯1ä€ŸÃpäš°†‡æp/Vª
öä@D DÈcí	-æ,ÄûÝƒ¹ˆáEd²'$RŽòJ%æ¿JQ­¤Èqìfu˜³Uòý½ìZ17€éRÁGõ•’¡ð!CÚYŸ(cåQË9ÔPu;yošd4¹`â©©;ëÍ\*‘œcœ1”&ÝY¼YPRù²„;ŒN1èùu©«”	j(\Õey> r\/eüEÏR%3+r½
ÑL“ß:çÉ6O¥®„O]¥ŠùZ•SC½Àœ6R÷‰“â„4m\·šÐ‡œ¾·›t¹knSnÀÅÓ!X~±7=cG##Õu£XÁ9P!Kì`Dyà!´ /Ù±O€rv@f:ˆ G¬4pôðœ­¥ÏAä‡ÂoôÉ:Þ§C5é.¹ñS+>•?ÀâŽ´Ø§Ÿ4gl e?ªF«f^4¹6IÑ(Ø…÷éž¥ ¿×þÏ`Ârä„^›_[mý½…ïÙ“¢ª´Ú-L“ø®ì*^p.¨%òô?Ø¸(Ø×¿ìñÚ«Ê7ÑÊ7ÑÒš .7äšŒÜ+¯ïîI_0'¡Å»£õVËaô£$Ú·<Nœ§î7˜¦Ð)êuÕ‘â7r¤ó€®GJQiÑöu4æf6ÿÔaEêB:=Eê‡éfÉ…lQxÄÐ8È¹xXMþ0—ïHÙÒ÷”øn¯.¶g¤ø‘ÈÑd{îkûû×±oe
´rJhWtðSŽ´I‰&lPÏ,ó3•YçÊ,Oø~ŸÑ#;b-âiç(¿­v:x:3~óø|¡ë±–FH‡ÔÆ‹ÿ4ç±dê–ŒÇ‘lþÚJ-SÑæWlÊŠäzÇÞh}£A§h#ô;i5‡ÓL<Ä¥^ îÃtø¦;úP<€(†·ÉÏg=jÍ÷PìhL(O%é­$ÂKzitàÑúò4ÖkèÙ­|vnÖ¦…˜}°"›á ÐØ-óV—ßsJ*‡Á8ÎÃ&ˆ³&H“ÂçE¶(’:K	NŒûš˜ØÌæn7c(&áN¸_È×Ïß–Cs¹ù?óéÑ|¬9¹Ï—‹q±\´î(Kq
™µþ€NÔÈ¼7¢àÿ—ßŸ!¿óÅw®ônþE…wÙ•ù{¯V•É1î<âéã¾”
ÊMí½t.Ö‡tòF/wóäÜ2s\¦Ð-Rã'ñ—òµ@/ô|òtZ_q“±à—³õBmU¨]PhÙ£º³¸Ò<;AÞÄÀž˜Bø2;d!ðPþ+ ´ß#Ï]ã^½Žiî¼ ?:G@¶¥¿6_>þ/Q¸[¨>?«Fue¨þ‹+¨OÉ"•žVœþ’~Ògöx­Bl^øÓÊûzIé2zP8<3n]*^iixØ„G?üp2î^Mëu–Z] Ø¥EÚêù‘ã“Ó-$ºD@üàãžJ2ÆÞÝU.›„Q]^ GÝ²ãÛ<­3wÀÝñh+¶óð£­Íkï—9çm®_ml:Íf³õX§ZŸ`¬Jð÷=Wš–î(KÒÌmeÅBµÒãåŒmfUÌwÌb³Ð!£¤~ˆ˜tdÁˆƒF¡ö,F‡Iü˜jZ†N}ÌCáÕ¬L¹y>3Óhšï†§ùbC]ËŸ³¯žÖâÃIƒúW=/²ü×G<!"zD%ÌO†¦–Ùå«Ü7Jýò‡»ÅŽ°
ÝäØ¥ó˜/wù!Í"‹hÙÃÀ§‘(¡0™ÒÅ	Ô1ýÎ—ºG¡A[üz“üÔ§%õ?o”õNÙhqX4-™â¥U„›Bû™w'^»m3=vGÙÂ ƒ{,_”Ó.ÌI‡â;
 6òÄ}s‚*x˜nÂÉà¾’9{Í¾„ëwyqçfMž¬]aÁË3u­ÔUµ4JA±„hüÀµd”ŽH³ôD²Ó±±ßË¼5Œ­p1¶vö>r#‰[šý ´¤Õ˜&!·5‚#PD@N1 ôd±I!
ù|{ŸØ"JÉæÓ1ëSQ}ÈË:™ŸƒˆN=Òór—«kòMê9@”¨-#AƒpV£GÒßP±¼ÔP”C û,e"; }nø@L•—û?²°SlT)M"æÜ.„ÉRÒf¸‹±ù†‹=ÆéÕB<;=n)ã³å…Bð'àã§/ñ’Œó”†¯Y>¦éXJøš—v5š4FÌóÇŠó'~R†ðNTQŽ’ImÎFqU\ž‘ãšqõÏdâŒØ¨’¼œ“EÎiºÌ–éèÏ_àDB'½ýêÞ<9ˆ(¶<g¾cÐúõŸU¼¸@Lq£05üjCD(a§¨K”Jzh‘¯átäÐ=¤´9 ¯‚™ yÝm7ddOÞ³á…ˆP]Î	Ô5[â™tÍÖJzËþ\ÛŒDN…x¿8Œ!cå£'Ä¼ž+œÔåb	¤—¯5w‚ªYX3ùy’F@wàðZíÌOh;®Â{.	Ùª¯zƒš&Õ,Gåeyš¦]åÝ–nÐ$½~&>évaxÂÿ qÛq¸æ5xœí}ûWI®ðÏä¯¨x›°!†ìcfø–×2Kr|ŒÝ†žøuÝí@f’ÿý“TïG·ÂÌÎÞ{½³Áî®R©T*•J%©VWÙÅÙþ/ËGq7%Ñòa/¥q?Ž¦[ì‡³£åÆJmy<]tÒhúìñ¨;˜õ"ö}’öâñÊí[ëÑ4ÝØÏºéçIäëâkûY4Žhýî(Øf£*ÛÏÒxèÁ÷Ñ€o¢‘Sîs²š¤ÔzZêŽ‡Ã1”,ÏFŸ°ó	ÀóB#Ã8Mlpƒx4»_E"$>Ìå	`šâógÿèEýx±æyk÷²Õnïe‡qw:-ËŸ­.±‹Ùd2ž¦Qýzã)K&QF­ËúQ'M#÷¶´ª 6ÏOOÚ þÝ94pÔÚ=oŸ5ÛÍÓóóVórwï¨ÕnŸŸž_°Ú}s-¿âÁÏíÝæåáO»—‡ðîÇÃ‹ËÓó_V¬gU¼lµŽ[—ç¿B‹'—ç§GíÓ3¬Íð²*^ï½»0›ŸÚýþ«9ŒoØ¤s±$þ=²hÒ|Õ†—m|ÎÊåòú«{Éêl‰Õkõ
[eðÏ[¯½Ù¨èJ5]éU½¡Ÿ7ôs¬¡^ìgT8Ø?oÕõóÆ+ç¸s4¾iÞÎF5’ºyâ[z{5©á¡ŠãQù¾Ê>W ³÷ö–•áë?éß-Ot/@Œ§Íñl”²M"ïÙ`vØ§hšÄãv~OÛ£Ùð:š® \ýcÒI»·HdœZ@ýîx”¤¬{Û™²¥v[ÔoS}¶ÃJõÒöœ’KÖæ•ä-#Ìu(ŠH'Š'†ã^4HØ¸Ïø\bêÏ6Ewòer;žzì:b^êtR–ÞF¸éò:êaV½;ù×ÉéÏ'íãÓýÖÑ
ŒÉGà+œnÇ¯Öë5'¬O9 V€ÀbÏŸ!=P yÞlÈþåwX­
_ë»¿ÐŸ=þ§IÖk¯éO½^µ›e_Y´??EÇˆøö3wâüÔ:Ù?=oîÃì¨¯­¯?St#Šõ?Ñ‰{u$Ö*ŠÁî “$«(_èŸÅÞj/úëÁ*/jPÞ†Ðp ã¤[[þ'B\³QßŒ`ˆaÈ§)ã(¶ã^V^Ÿ
¨a„UfÖMY¦ä—£N/š¶SöÇ3K
 !#¾7žö’Ã‘Uüh¼(=0‹Œ§ÃNúgñœÒ‡½ÐË¬†ŒÒ°aáŸ:ƒ¸'kœu>Æ®()µ@W˜Føö³¯Ì¡Ç¶b¾Oã¸Ç~žÆi´ßI;åv{¶É–zðµÊàûZƒ¢QÕšÚ½xj?èÇƒÈ~2Ln*Ï8ÉéA'ã4}µYÓø ¼ñ«±¯¼‡G-€29¥ 
^ž¼;:âïZ‹ûe¡ÊJ‹ÉêbRª2Â[¯ðÂqD¨	§?žD#»nçúe©RaÏy#Á²vÿ)Qæý‡	Ng
$Õƒgf5ü$K(Ôcé˜¶˜0…“÷#@(S5È!ÇÏWõ­ßŒ“HwDñ2H"f4í7‹ýÅV‘(&Ô¶I!öÙWÅÈEçÀ"Ÿl¸ì²3—âžh¬;R”ÛzäAÝI§WkbÈ¿{_ûNŽ:–ï÷à1‡~Ú>ß?=9úPS
e¾g5“âPKÇÓ²1ðø¶gÓ€”Ýz&žBSè ªrtª¤rŒûeúU0Ñ{/aelÛm¹„ðJ¢ Š* ô€æ j:”EcÈgÀL²SQø³mÞX:ØQª•‘Pqï^ÒÙ,(þìØ‘A~X|o¯@‹ù Ú–Ó	ŸÃÔQKN•ZÐ=7™€—}¡ÄqÅ (~rÊQ T‹R,Õš0KµNÀR5±DþlgÇ[ç­ÖïbTƒÊ~úe·óºvÿªþfcË¸[=¬‡6ôCbÉ¤Êl[ï®‡?nû0öB­í…ZÛËim¯`kÍPkÍPkÍFèáZ6
Íb(¬×^ù€×k Å/³5xW¬µz-F½VF=F=¨HÙ ÝÊ+óÕàq!«¤Jk¯ÿOvG½óh8þíÇÓ2_'@æÁ“Îuùg>2ÂÔY- äÞ¬ß5ál÷òÇöñî/ôbÁFç(2	ãñx J};½ùWùˆ`¡.põ‘dÉµ±ŠÀø¯l ºÀJÚ™®Üü^ª°/_XF	|#
U(`ØòïÝ>{ªÉû’ø+®	Ì"¹ÀUÊ>ªSÐ‘ÈZ÷óQø=ž°å© {‹+þJzŸ²ÆÛõã#–P>L­Ã“ŸvÅÒ‚ËÜçÐhÈ¶xÝÛ¨û	»|RF`Ö>ƒ]_ŸÆ)W_-©l%	`G&‡ŒZ!ŽƒSÆµÇæEr]A©»\¯¸Z'bÅêaˆh
KÀÎ¨ÇnŒhj‚	ë ¹ Î ´«’1HÖ’?¸©`AÔ:Ÿ‚ êV×:'Q’”ÉI§ûHUµî9éuæ ãBj:dË}¶|žÇ!6dµ;N†šäé¥S¤Ž§égâ	B_s™hFà)‘“´—Òh:uEÑ¼™ìG×³ÜÅ@¢n
:H”h¡tqâÈ£3\Ü½Yü¨zÇxäK·Óùìàšét ÉmHÆ `Ü€žÜ»j¼ª}ÈºÔ(LªúÑ¸Ô¬Ý”~MjÑ
[š›ôV·I»ÉÃQ/ºwð@¤/aTì=šlÉ.à¯ó›þúÑn æ?MÝ½U˜F‡}·ú]p¯&»À•í@½÷ï¿3¥*î#T\!«ßY»µ0ð ®²Ìsìàp¢ÊÂt\µ×ù¹Ã”‰îã´4%ö’n4Ÿ»[¯&®W|è> 2¸ã
5!‘¡ª/^°ì×hŽý‚:yÞ÷	ûòenG“âŽ¨XÁ³Û¶l½’t6Å¬ìºÉ¿OªÙz.vÜö`O<!|*C÷ãnY@âU*Y\8Ÿ‚6õ ùQwòÙj¹Ê,ÆåÍV¶=n—å¯x	Ü¢#»lùËªðq.o¹ÅwvøœÌ`¯8N·"œóñ1Lc¶âŽï¶ˆñ4s>¿ŽY#ßÈy"Å4Š\Cå3ÏP³<«lN3Xœ«]¼8Ê+¿TáìYäL^€ù„³I¡˜ÝZQrz†Ñ08ù8¹3¨F) YHýµ›y‘¤´4ÖB.ÂD3yð¼ýI>p¹½äÚ¥£dôa+PæŠèß»ÜrqRç/_º
?½ºŠ¹T‚ÿÁêe=z?
<KÏ¦ž„²•¾+¹R}àjUoƒû›^VÔ2Î'œ¥h¾Zñ¹mÔÊoDÓ[®FÂ\^^ì¾ÿ›1zº[­«JFÑß¤Øýªõ·áG@Ó«]{ýúµg‹ã
î²±¢†ùå«¥*5;¤e]Ôê¸>*pÑ*^”QáoÔbŸéÐï¬3ÇüN†;º`rèª±1˜ÓY£d^w›ãQ:Ã¶sšÙmRfÇ3ÇÂ“/ŠDª¬C ÑPQé™A¼­9ÛÂ¢T|áá;YÒGûUç8nÖ…B‡ðß/á‘–ÎÜÙ•'—Ã	l‰¯œƒ~çˆË=Ž\šÀþKm¥Ôø|h²ß7ëhÿ°5üGëþôÂÃÖöM”
·…ád•yïEŸ-À‡¹.
UÙ%‡Oh`¹±zRö:Z‘àìÍ!H=Ž*aƒR#&µ‹²kùmÖ©(¹l{¼mÕÍ>ó’‚ÈA3“•KïFÚÏAùºô	†ò×Xì¡ïƒz»#¹øÚt²íŠYa<‹ºIŒšÿ:,“ôZ\ËU—`:¥ñè†ŽÏˆ³>·÷ÜÅ õ@×Ê0MÆÓ¨WyžÝ¥œîdt%džögþÉOÇ-=ûçÎ|ûñÒDÌ¨þÈ•Â BnÒI’ôv:kw‡ mØ³å€u^?‹O$o"ëšï*ªQ¶*O+­÷ApÇ{î‡´cÂÎj™Š&ZqJüPÈ¹¢o06 fƒÁÞç4JðØ,KF.MPË=K‘d‚´¡b³îé¤9îÑxß×¦D´×¨¹Ùr²µá	ÅÖkËºbÑ]°,ó:5£K¼5Î2`¨–²bÓÖãU£º6Ÿš%™…BÍnZÃ}©M4Jz³5€†mÔô´gØÁ$QZ~œZE§'Ákð³bLG‡ÜnÈ®ÄHwOØ-ãHíb°©pÕ %°^Oºœ…$7m[¯»½»z}Ù‘œ’ñ¶\¶ð€~TØäJøÀT£ïaü·m+ Å}¯ÝžYÔî7=™ö¤Ün¶X·­W9­½å=LkaápÚï't‚`¶³D³ÁK‰Hîñ	—_#©©*¼}ËÖ•Œz—tz=RWÚíÙLpíQ:IAÑ@u…Ë*›3 o$Þ ñ5Ì´a“Jk0Ž¥bjY2»‚Ûéã‘Z2¸vÆ§"©ÔÆ4ée^#¾¨e/´ÿjù¢d, çQBKh!ÅyÄ[#2S}Ñ¬1ÀT6WUKzÉØ:g°Ö]%?Ëº¨-—*]n)ªWMäk‘BÓ$ƒ¹—:/Î	…°+µ8JŽÂa)ÚbÂ†¥1OßöŽ(Ð
3±àB=Xp'D«Ú>w{À×QÔ··lÂ@=ÓýÝ1¾/›ÛK\îÆŒo;
*hÙú0ó”9Ú[¶j’ÁiøÀ(å¥°Gê†ôÚþ\Ö3G2ËÔÿŠåXV£%Ù\pw§ëUú‚1»´´›»¯^]B‡káqÞ‡äÏŸr¤÷ã‘6M¢öx‚¦Â¤lêÇ½èüË‡§3½éÊ“Ô%øñ‰ïJ-Ó(éò§ÖúñM[«â‘jŒ-Á—„—7]å–È|bêðqÏ°<ê!ç¸Ø6y&ªMÂ>[1Ýé*=„iq4]¶Õ7²ÃpüL+OÒíŒúelõ
{7ê}@< $©K°ZØÎk¢—ÐÇ‡P•²Í˜büúwDÛ8-s7M>XI4ˆº©$á¼]BJëdT–/zª=·…v´Ã6g¨ð¶ù‹¯–x‰ÇÝt@Þ(ƒÛ‡§ÍË£öîþñá	Æëðµ’ÑOÈÔîïFèW]ÎàÊ<¤>‚$ÒÛc‰–rñ‡6ÀÜ£¿Ê=Úat¶£Z*]ÞÆ	2Öa
YfÞ¡{ŠÄºŠ+V÷–¡(ºK(Æa–ÀISÒ 9 QTÁ¸ŽGè‘Eg“zšàfâM£VöÉ
#L¦ÑÏâi”˜;l2¾ƒvºŸ»°^ŽGÝˆ·Í@,¥BÄäí|êÄƒÎ5T€æ·ØûÑû‘òôtVj‘ƒáÝÁÇHÓaˆ(q·*¶Zg¡ŠQ4™Ž‡sêîe×­bãUBiÛÂþ†=(Ò’çSY®W	TC•~füG9Z¹Y©²åeþr“U‘9ï¹äÖ;Xrá‡¦Û×ÒÊ¦'ëÉ¸ÊàÎø“Ðj@Fc©—l$£áëíS§8å°éÊ*È°í<áØlËé€ÑíßØRƒÓÒ0­hb½¯•ª¬Ó³Ëöîùe’Ë |uqy~xòC¹Ô¿™ù]ÿ;t°:<j¡ …v¡)$O¥¬Ã[Åz	Öë:7²žJR0Úõ['ûåŠ…dp}y‘¿ÀÐpŠõ%[_Vy<&ÓxÑñàšå6ãz™Ž>al‰è Ã¾½·Ö+@®Í=ãá›¿Ž™^¦)Â±@¬yv%ž½í€ô™M@Ô•­ço‘$w‡á¤l%ÈZàtLLÜþnzÖž ,"óaÕŠÁ‚y;VÃ¶BýÅC…‚AF`Èy`Ä`HªórÎa‡àhÌlÁ²óSÜ‹zßŠ&Ÿ6}~Îe:Zs##F¤Dµ,ßMFÍú!©äãYêR'áÛŸäz%Ié‡Ez‹æ†‚sŠo-öh‚ôWïX<„9p
X–&-2Ñ¤Þ8‰ïÛ°y€†n@¤ðµ Ê`€öy^®èvrÑ¶@côÑˆ
ÄóQ=9=n@•‡â¨‰Ð”@Q^•Ë	~GKLYá‹/X#· hã¾ÓjE:,‰rvëbõ¤ [Ú$ê=[0Ax.µ«6Èet¾IhaYXXÁïTmaGšLñQ÷+ýÞ<F>ï÷ˆÉé)_pñÿF¥Ýž6òÔÁGM}]àf†ö~ë`÷ÝÑ¥Pu/[§ï.© ¨g³5BQGÏ¾ÍOFßÊ/qÿ¬/pö«&ÕÝ²¬î:†…†F‹J„-ÝVð7ˆÝŽïÄæ³ìeAÕ\L´BËØ}ß<”L°ì¾êUÁ7ÞFÈO%Á ·¯Ôk{h/U¿µ=ß^dX)èm5Jï¸:Ìº 'ýÙà9;3Ônœ§ enPk³ƒŸ#ØßwS-y¡o’~[Ú\ÃÉEà,¢àp~Šš!ymØ‘ûªáõ,[òGî¨¾—âñª|
h
ó§Ò.™½m,ý#Ü“¬îÇ	ý…4ã‰G”í@ì``Ÿƒ ¤?…Q˜Ád0@=¿r¨z°NÌp½)Õa3r;NaB˜ŒGÐÝá£)¥‘¨²¡W	Fx–2©Y2jaøÅÿTˆg$rîPVcåîl:…–€Ás Ö5˜*k€îÓù{‚(éÅ7z¡í”•œà!x’B{¼7£ñhY?Ó[Ÿ>ásQ™a÷fGHfoy|K³(ëntxOá‰qJ4ŒÎ3ì¸ûÈ´þ!Í\£‰d"Á:æNHrJÍÜqÚZøx¨‡Ü-qpç3Æúù¾­H¶á½Ï»Ã“Ër‰°ÄêŸ :¯EªœDÁ:Ø¹×¢ø Jô+¸¿
š óvYÐqI@£ÌßqqÞz. ñÀ|R¯[
©t¢ #ƒ\ø†PÚQ¤¯3¤À¯²ñƒ´gÂH¢±”qæ 	Ád‡H©Æ‰9ÙóìÐ<ÃŠ`=áYmi¶I˜­DOp‰Ô|0…ß}^pq]Ô×Hé•pðYˆ±Šh”=£ÙrüZÌ0¥B žé•R¤±ó\{5…ÍI9[·dÎGkšü·«nzåa£f~=Ô/÷ìâ8h~1:þ4‹Õ…@)²aé	ïæÌf®
Ífh£ŸSH½Î+dáÆõc¯œÐ´r9
·W[èº¶`o]4¬›‘©çMÎ°rùåInˆw·0D™K‡¿ê@…eúe•EO^ ãÃ?¥¸è•Ø–ZŽzs«6¨ª§Ç¥º<b–Bo¦q‹]f¯;cåJ[L,ÖþnbñÂ‹r˜žB.Jåµ€\tJ`Ò
"V¾Å„” x@$åÁ¶œËª¾®äS=rÅ×GçÜM•”£Stƒ³ˆ¶«IÆî&¸}Éßòdîm<e5v¦tðËÔ7Ž·åÿ`*þ”Ð*æÂÎÌ²Ï1–\¹Æ_æÐÞé\NÉcžÇËl;õÇ¤Øàô¼¾‰ƒ%:@’}Dð¤°p—áŸÁ—ßÐ>-Õ]¼÷Ž†ú¤Á/í4ð6y+%ëˆQ&À¦Y(Ó ¾h¯C“ìÒt<N³ß
gâ$oóQD;?85™÷EfðCŒ!l¤àŸ?ý"0»ßöù¢:Û¦é1’ó& Œû¦sêB‰ÆYXÍµüSƒÀ3#=±]!pFØ·vßŸ*A´Ë‰czk8³'P¹¬ê¬o®êp=Ø¬À‚.Pû`È!¦ùëŸÖ¯eÖx½†~Õ†™È‰2³ÂÖÃœ¼<œ©æºHŒr˜Ïª¾ÑNÇíîdætÖ2,§Ob2a8þé>tÇöBÃˆ¾òæ‰]h“òäâ]ÙASåÃTëŽSœ	³¶89Âé´óÙ-k`ÜîôzmZåDQlØ<CTâ¼æÛlÙžÚL‰F	¦J‹3Öù½¤jW›„2²RÈY‚!BÜøƒ®=Âªt©
ðIêšfŸˆ+Õpq–CÜ®¯62†L•Fµ>wpM‚iÐÐ[£ogöò¨ÎPLi6Ñ¨MxÝÉ@Í"ô7±-xq¡Lb(¤`\É9UÒŸ\¢šÔYžs¤ãsŠ-ß]C?A#²	£¨f™Ïú[~k²ââr½–€AÂÓyT!®OŠ'ä\½Åž…`ˆÑJ¨Œ½ÄM@.ë|u„%ÿ÷QùI7ŽrÖBºéŒñdâŒ•¶Ye×ÂÉzcò¢áß¹Ö@ßû³QW˜<áW7{÷BC9P–˜Øà
£.>TÍGùLàÈÎ3ôr
 j¤¤ú©R8~#žÄy™ò—W'»Ç-JUeK qŒÉ’£XäþUJ·Lxi ëŽ§˜³·=W›®ÂMž°£¼"™¾xÜÙÎ‹CzPÁ¥©TZuXç¨¢]œ:Ñ4	*ÊUõÜÍÅYó6‰ŸpºË¶Šn!ã/BÃÈ¦€tQkK ¹'‡¶U¿uõv{Vß€YÙ€ÌS^nÛy{ÝéµÓÁ$ô¸7ðŸO£É dýh6lãÁÓøSäAEÐ†5mK–[¦Óûƒ´@(¿a„±Û?:k]¸'c¨»ÅÞÍ³¦ûL8 bètŒëñÔ{?E÷àzhSõû-èŒDéÆwnuç0âQwÚÓ`¦C8ÛèÄ%©Yðk	Ô<3¹Åe{e§Ç‰Êë8užÀŠnµcÌÞfrõÁâÙ?˜tzÎ1f-J°vÁ­dåwç­‹
¬?œø1ø¸_Îæêj6*_«fã­æyÓiñöêo
·§ÄiàX#»<:Sm_ò67`±ƒÓÆ¹à%v*xIµs~ÊÛy]¸/¶Þ)æ&õ…3·©&ooã˜,N›¢!èà.Î7ÕZs—·öªpkîÔ7„=ºFuÕ–±õÇ´%‰ÓÚŽ”HrÀÎ¦ãtÜ…/63‚„¼¸V¸a”jNSgBZLx&ºÔ(Ù”¥N˜ÃŽ¡ÚÕÎØ^q
ò*¢ñ‡
ZŠE¦`ÙË;–pÙpPÚ=9x0q³Ö"oJâ²F\4õxéœþ!”-“n“­³£Ý_Û'ïŽÙ¹Xlu‹çÔbqqX¹æö:= ƒöö©â¢FjÀ&›îqj)BIÉ’6ˆ¥¥øÊb+HŠ;ÅÚ)<w<îÜ6Þ†¸÷Ÿuu‰MfƒÏ¥xÀÈ% £Ä©÷K }ŒÈ°Z(¸HlÂÌôúj·`É’d¶µ6A'SO¡³$!îÉ?%ËÈ,ËÜÎ'¶s¶I Ó»Ô³%•?Ûš,v*zdDÿ„S‡‰½ÚKé€¦ÚýþÆv €_l„¿Ìƒ # Xø*VB5eU†ÓF0ðØ2—¿P°<“PÈJŽCùÕ{BýÒ †½ü„æ1Û°KÑ¸sËq‡Ækrü—ÉßÀ<ùW Ð¨n [F ™Ô®£“ƒÚAù(<ºü(30¯IÉŸø­
’èËv¸QÑB;ûÜVXj”sÒóüibhXiªâN˜ëÁ¸ûqu1‘wÀ˜X¨"Ö4ñàQN­Ê“rˆÍ¸a\AÏòü´Û³ëCÕ5CšéêáeN˜@È¡#I3Ÿvr«ÒÊÊ*üç3Eq
æ²01¿‘ s‰šMØ×'°&2ÿW[ôË×@[O%±Š
HÝÅû-úoeñ×@n®„/PDÝ_¤¹RÂø‹õ
Ý¿¢d6[N˜ÇZÍÝ³önëüe½¶‚±AR@´zç ïcDï„‡é(ø*“…£LB90s|gHÄrÁ=Ÿs§tèÕ¿‰Ò¤lÈi.F?C—‰U}Ì&ò^œ9Øšå16µûõÿØÁ±–ÑªÎõ7 àÚ_&³âe:V¿Œ+u°z†ò`pHcÞÊch[Š.Æ‰´–ŽNsCQ¡kI\s”
Î¯óšýLÐždè¡ª^ãë³æa‹v~¨sè¾»l¦"ëXEg:Ë2w¢'EèŽ[kGhK©¢ÿdKeþb©RVx™iK? w_…Ùw£d}ÊŽ{û6øuœbr"'õ^˜ÐÀŽòX8"Åë!Îî8ø¡ùâ’?hzº‚à§½„¬¾e²`æDÞ9½ž6þI}ÁSúð	}Þé¼±CÑû6¾q«ØGXEøîI'½>s_oKÀrývFGîs¦L!æb“ÿþ©8‡,y,üí„É›ÕY®Â£EOšêväù¿‘ÅzOÈaåÇ/"OFë=)Ÿ•¿MÀg2œ¯ãjUÆq=’„UÖh	lzQJn[ò’MSÓÎdáž	ÊVÛ•­SÅê>Ê¨;ˆ:Óv‹ÍóÊujŸë$öþ<«Á‚„›ÇßÙH]YWØèqªEœ{æ:ü´OÈ§‰LÃÝo7þåLÉ<–	ao†£wón¼çuçœãü{Ã@W—ØH]ºoRÜX^~J|Vc\Í9ØD#{Ý`¶ö5&"„Ìûî†zÁ`FÊ‹„Á¬)×Ñ}­^‘ÎîÅãŠ(Ï,o“©‹Â¹1GÙ¢ÑèùóØï´V0|Â“˜Zè<*Éäúæ£’yñZY´Ó{¨Ó0äu‹§ƒÓq7×	Ò\As°X&‚-“ÏIo'„vûnD˜÷¬B|yÅ{ZÃð°h[r¹1ÊÿwPó7:¨áLŸŒB§B?4žÂˆáSø\'(W5VôèÿÎ~žfP2fÎqQpŒü®ªo®¹C–=lºpÿ“N–0ýÐÊÑŽŽy'VeSNK‘u;ÈÓkð%çA‡ß|†ó'lÑŽÙV¶2è+1O²·Žd,ó#6Åb[5ßÐ6x»X==c$æŽ9«76a[ù•õjwŠ0·É?Xéd÷dŸý<1™l™ÒïÓ¯4¡“mÇ„Ã:•NÇ7ÓÎáhá¾€Âüb­)^/
%þ{ô÷ÛCQŸ€úåô|õ|÷pŸG]ôFüÌ.§ñÍúóapE îÉÅµX“rŒ±é¹(6^”qŸQØÙ‚
Â/Ô@Ÿá>MŒ¥®G fd†fJH_GIÆ5Pc¿vµ_IÐVÅtÁÝ‹³é%W,ÎôP¼*¾ÝÆâ›Ö<ðFGŒÒ£¯f =B£’<²Ä81æ>^•õWŒ÷P|Ø­+ëƒ4¦öaEG‚Ò\:;?¼ßXÇ»#7ÖeP.5UÑg¥o¯íµ7^Ûk›¶Jƒ±_éµ_iãƒ.ªµç–ÿ\¨/õp_J‹µú†ì—§¤xý„¶*îC3Ò gÝ¾þ D²¡æhÃÐFÞ€6> !0k˜{Œ£óÁf„ŽéÃ{©jXM`H·¢!{ÉKU²é²þ4ty I‡ì–72IYGRÒÅì´yFù½ŠF=‚«ËjÑ_„‰Ñe´lóÒ§¤í, îÒÁs½aîXn-Úƒµ0Æ6lDÝW_©Q!¼kˆ<„1Iˆ$”Æv”ÚÊkJíµå+öóãûÙQgÞâ|fØ-ëP¶y¢A5ZaÜ´»Y«ÝÙíçDý€G½¸ÃÞÐ² Ö;Šb1ÖºPQ¼š†Ê1]ð¼sÇpE{‡©ìiå²×6æ	ùùB×{¹5>ð‹ÏI>»ŽÑ ¬²z•ï7õûwÖ! ÝìÃí+²ã~
Úm3§ÄÅ>kHÏÃ?ûBwâEqñ]Ï,+l¹QOZríÂ¼¯4Ù îGË³„ÿºAÌ¨úÈ­Bìµ~uÜ¹‡³!ŠláJŒ,j4uš@Á¢—·Ž»¼ŽÓt€Ö(Yªž[ŠÇ*¸ØCƒŸ¨O&›¢uË³ssIgÓþp$o:`·³sã:D4Z0ž.²ƒiqÊFÉ e³3étã°àSØáè`7Þ()4Œîáê©Ã3Qw3ô3“—ZrýÍ.tòî¢e?9ã%ÓT“Üh8j6íàM­$A´DNÍµš>Š#ÌZ ±±;§Þþðîp_B„ÿ@¨µîAÆô(ÓÕîù%ÉlS¬äŠêRËÀ¥n4öÃ†ùÊ´1vgÀ¢ü%0x6Ÿò<½§#¼=K£l¶hiÓ@±_èê’‚3*šxÓy\òÙ5£ŠñôrÌC¹Lô×G0Ý1B
§$;çci¼ÖÛ‘Påp‹ç‘ˆûx×Ôò&\Ë¤‰¹A
òï	ßg©Å$ü:¼,™45+¾chrrÄ‡Fã»êIpðõìÎ)d½-…ÉabE"Rð_<Êæ?£Üî§›BåÂüÌ§šÐ.¤~”¡IÀ”ë_?BQÀ;XŽšÎ·áèsª]dT+ªUƒL½Ã°áuþK}ÞZXŸsËÖþ¼â
¹œÙ:@Öª»çµ‚+»u»W¹ŠCF]\$òëÔìvæàvñÜBuæávÀÍ`ß  ôù6Xl#K™pd ð¬‡4¥0s[J+#5*Å)GeÉk…3ðÚÁñÁŽ;#³!%$ßè¦?X+êþ;Ë¶h6´ÁËóÃcê ~»7t‡¶ŒÇïQaŽ Aÿ½N÷ãÍ”"Añëò¨Ù	èÌn¢Ð-cá¬5¶¿™Å‹sö@ÝgYÌ”¡?:‹ržb?o ´« §'Û:oîž5S‘h¼~#‘¯ãZÎ[»û¬y¼Ÿ°èOìßôGe<£j*Šç‡—­âÅ‘Ã’âÅmfÊ|Ñ¨çw°–«Ç×¤*¿M†~+¨vý’ñž2±èOêÖùÄ¸z’ìÈÜYÚ2Ì$ej—¬È¡72›Àa
«?2\:Ëê³$µœªAX‹`zSJbÙqB²qêª‚ƒXÐa…³‘1ãADw„·ºÕ
tÅ€œ^ÃT¶¥LêÈ¥Î¸;á/bØsÝ#ãþu6øÔ¾ÜÆ¦[X¬rÚpâÄü8tá7¯èù¬ñë,«šy…=$ÿWN/òå_¿7i+:—‘™©É_ÐO&(î¯Ðµ ÄFÜU&Úp¯Ÿ2¥S½+Th+ø¸áœu8ƒwÀîÑ«Vh¸€
¹€êî‰¹é“@«°óÅYé]íÍ™ÁÍ~hÚøå—Œ¤àø¡(x4öVL›ï’zŒå/`>^É»yØæ‡J¶_ÃCá,7½^ÈY
?‚…¾KÂNîÃÚ×¢s™ŒZ¢G~MQ»ìn>íõùJù	EƒP²ÁªÿTŸµ˜ëÜ¥0v¥BðL‡†[–àÜM—>>ßˆb ©×.R _³k²/ÜÅƒ»Æœ–°W¥#Z†msÜ‰u¡
`Ó< L¨Þ/öL/9üˆ£È$kÈODu°
l‡Š—ùm •–]æO§ˆ/_0 Œ15L° Ì&§2±§ÐºWK³CYk u¢Û±YN÷×Ÿ û!¤è¼*ZkHlb7˜ÆG¥á¥Qæ¡yD-†Gmcb$‹žIÝÅ¤Ë11/Òt›î:v!é¨îßQ€}ÿ›¾Ö?0‹{cJ¿ÃÕÎ©Puå5Æ-ŸJ3®Ø‚Ü_ÂymŒá}îûîà§PÎ`Ñ®Ÿ/87ýîâò:Ï¢»¼Îkrà<ãÿ~}Pµy¶ðî`<ëµoÉˆj±é¾a&uîÿÖÌùÁhh­–	EÛPýt*ç ³²~Î3·?“£HQ^0ö»H¤vÑäâ"³ñ —…4qh#íÔæ(	.F:òHñ»É¢±v¨Wµ·4‚cks(ú¸¬Ö^¬l˜ñG˜ï‹h÷¯=w%üÚ0\—ìi ^à6áï3#k½š¦ÿ?t&è“Aò{P¶œ{Ò<0èž4ô:~ˆ/4¤¢-¯ÁA?Í„õñÞúýš2x˜ÁBÈb¡•Ãó¥ã¼(|d¬Õ'ãÊ…ÐýÝ¯33ŸX¥(þˆ ™~9±Ø­æ¼Ÿ—?¸È=oIäbÑ£gòËÿy×«yònÜé&á¥>ÄU*?Gœ<i¢•bb'OÌf‰¢â²¨¤É•WûX·Uùâ“¢È„.‚}Âóý±ÕCÚéßv"¹¢©ø<­Hòxš¨¸ ´qiãlTy0ÉüÇÓøžpïøB÷zWëµWo>0\‡‘åZHüEWL¹ˆŒŽ›¸ È»‚Ìò*îSš0ý
ú–»Né{W{E*½‡ÁAŸH§º!Ã¼ÈØ¹NCi¦ü'1Äm'’šy;à;®Õ0ëj‡Ìë ì»C{îâåô÷QRàoÏ‡kCÇ=ÐJãþgb='Íï?x^ìÉ0$<{Ô·¨3Ñ€ˆ!K„ VÀ‚‰ÿšìÇsëþÙlœDÈ_¾Ø©n0Ìÿ1é‘QÒ†Ò#/Ø|™‹×æ2
 ÎQe†¬š¢QôØ’åvŒ™šäv<ÃÌÛ¨û‘:Ð§Ã;l—^ë1“Æ	wÜLŒÛ°iùIÍmÏÃîçÁ^•»Êe¸Áw–4{iP•–Lx‹±ò)¹z³ùúM³ûzÃ`^Ld[°—a=%,Œ–è·oÙ&¶pnð›­±ôyñSI‡€u:£¬ŽQWÁ	V<aí>dF0¢VU%3˜¤* Êö!ö¾D6m.ÖLäMgï1¿,LÊ¡wtÉ¬)Õn2hòSw¡,.º•ilNN//•(Ã©ß¢È]àÉ%nÇwmž„¡lÌ—p¤¢±Tõõ¯I;ªÿý­­†óµ²-™Ùÿ¡¶%naU;6´®Öî[õ’wo£qñ´ÏP4ÇÍ57¤ügr5vœé‘ýñˆá1öä{ŒÈ<xä.£UÊÍ‚Îµ¥ïÑÓEöfá?KÇ?ÿ;´y	ñÛ”ù?íÂçFÆ*»·ó5YšÕË0–qÑÞõ1_§Õ¥
¨z­z•Ó-¤Ò†n¹ÈZ}ƒúˆ£‰ÌIÙgi²½%ÁàŽ ‡èpÔ—Íy¬sz±OO(Ù
ˆÑÁ~Ž¼Ù–ðß‰Œ2‡Üé,ÅÌ'´x2GŸ¯Lã·7ë÷£ Ç• N¹Z¯kGÓ¸3¸j_öï¦Ñ§«7¡WH‰3 ÏßÒ›MÊ&i*NÉ}¼?o‡õâ)nË¢® œê«“UJí$êÂbúeŽYIïSÉØ&Ýú$U w/Í¼#ÏUÙ9IVH•‘ÖB	Î˜H¸Þ]°Å¥l@¡úÑ ð%d²üvêûz­²máã Ê$#¼YÐ)CÃ¡Šô§ÜÉ"¡b›'KKHP$ÈäïGá%Ù@_4 ˆHƒÄGˆ·è„Žga²¸Ü k¬!0ßäC$ºúŽ½ŸŽí^f=A¦d¼ÉXâB÷d/Ëœ+|4ìbD~»œ’ÒÁÏËçÑ'ãÄƒ(Sˆ4YƒpÖ<|ÂA*:J<mmýã—;<–í×½OôµÅÈÐc®½Ác5k2S_æÇ‘3W<¶g /¼ñr;x4œä
pÃßz×AåµÌ[ÁxÍvÊì^:dKéPdüIG³a@2D  >ŠB^6t|€InÈÝÎ€^½HÑE/Åµ'o¸Íd6ä’¸Oµ%£òN©Ô+ügFÞ9E3V~wÙ¬Àhwªhf\¼f‹¿²ÅK¶ø;ÊÃ¡ÌU„M¢Û—KÙ¤h„½Ä ) WŸuºP†-V_Y7%3´Ï,ç®,¢\æº"ËP0•%) 1sYIe¯Ûji1Ÿ–òå¾wÌ¼×D…nßã<@²Z@Ð“J´T¡·jEá*öÙÇÕ¶`mlF+ðÊuL÷¨Ç½e„Q
NÒ½0«"@¡½*száXD¸†%•9¦¾ãki“ø¾Œ`—ë2³*{¡jùIR=‚èÂ:Ÿª$‡—1)¡¬T¥œá$s»KÚrï’Lòˆ#,‘©Oú¢,9õø Ê¸ãï/ítí1ÿÍv¼®æ@†éÙ¥Ð»r½*q3Ø\iã*U¤AUT#«@XUV!—=š¼¬+õäÀò¼lÖÀêuCcš ?D#Xö»GhzÿGƒ~;Åi˜¿üÑ”†ûv2À½ë]¸TwØkG°vS²R1ñÝ/8A±š¤î«0í•ž¨¯¼÷f×OÛ^‚nîY¯øu‰Ò® Ì0oÜÎn"gc¼ºÄ€¨ó;Oö_ãÌÁâ¡(Jó¼°WH˜´8°Àd3í)4J.˜=pXHt²ÇhðˆŠyý„ÑÅ‚Ô=)ìøˆé/©ú%*fwÈâ,bsZ¨£Ìn	Ëí‘Á—Ô«“ŸŽ[íæÅa¾@çÄ«"½EU÷dÕìþ	Ã†9/Ôœ×¨‡û¦§	£Y`v’‚=*V7ÝY¥ûzÖú©urÙ>:ý¡}Þ:jí^@÷/)æŽ#o‰PóÏ}_q‘ÖxAñ~eë ëáè·..õöîÉ~f³ûPï€¹®¯6=òŸ€Všâ‘up8Èe¦›ÞÃT¡íx9¾§Q¯â$_ìµµà2CN4Š+é@®ûRHÇWFº‡"Î´8Õ,+_ ?ñˆ-’Ã3`3CFº`iQ.ÖÉoçü±5?ª÷ngmÛÜ¹íT¯jÀYS;´ŠÉ¹¢žäø/_Wqy÷Z6†QRÔ_öO.¤Êž±èc_bBžh…sYVØºþ(ê®¥4ô¦Ø °Þ( ?åF«Ï÷Ëº&ì|’IÓÅž©Þ®¡¿#-yGRè2}y”ä©Å§Íñ¨ßÌÝ\+û¦¨à8¦ýwýNY«%ñö3“Ðîy
™ù{?‚H‰¦Ûþ;‘yBt‘AÑ]<»3’ìàçeô)]üzqÙ:f‡'§çÇ»—‡§'†I¨4#·˜åú,&%™:Çqtxòîö¯ÖùIëˆŸî¿âd $Ãq¯4×qëøôü×,hÝNÊVñö‚UX\HêåBV}½lŸ¿;»œ–.<˜Î&i’¹yön>0Ýóq<<•}>Þ=+€àzžñx÷ÿž{ïµÎ:<î·~:l¶Øç§ïÎÂP¹;§Ïb¼÷[?˜`z0soò«®þ´{¾
2|ê^ìþÐºðÐøÔ™®‚´ƒqM:’—ð8cû?9¥l3»q¬Q'hE€É*Mí|÷äÜŠå{ÝZ³œ›ãíö:/Í¥ Ê<ùÒU½8
m,%üõ£ô~Äÿ‡äå‡}<ƒ&I	)â+¦qb´}R"ï¼‹=-ØGž1Ö0{([fõÀºéàÙ”)×²;O(}Œ¹¤¶Ò×ôÁHá+ðÌûvtŒµi4ˆ†Q:ý¬p¡#›kúyÉX¯%\ºæ+)XIYðW¯ãÜUe×è—òªÞ¨êÔ×‰ã:ÜŽ§)¹G¶aKÔ¹’*ÀS•£©¬áèô…ørO4uð¢¼†úünG»º²·\ÃZ[7”(Y!lfQ§´”9Zb K´@Mcr+E£×í°éksœŒü¹ nÇb["5ÁçŽ–’Ã?¸	SÐIý½¥9E‚¥v¿ø?p;,+ˆ•ßKZŸ…›=½Ìc^þFî
1½Ô,xÆ‘cÆØjÞ ÃQÞž†b@ü&û"ŸÈÜàº|Ã(_¯pÊ×k^…5³ÂšW¡áU¨aÁ·vûÿ´ßnYoç@[³¡Õlhk64ìŒâý¸×ùài°oœGÿ=‹tiÐ|!³DG k4œ¤ŸŸ’5ð£&l–P»‚KÉc‘»º¤Œ'q<ïÒr¶´˜FB\ˆe ÌO˜*eÙp…û‰¸½»Å#pëþ1Vuñ&4O¦,<B¤h,ºòR4‡¾ÓBÀÌ‡kÊ—<ˆÆ°él×‰;j_-;¶¢C6‡ÐŠ£æÜ¸áFEå™É·÷Ùu³~ÍóeÅÅO:%ENlvLÚVUù*ªyÝ¼5r˜Ü(O”š½ÓÕT£UQÙžUÝ%Ü]JB§ÃÎÄÝlÕîk¯«üKQVÚLýÊmÎ)÷Uk­¦ÒJþ€e¡^!
Ê•–ð©aW­µîA´ÕšXô/2Ó½S÷…âèšÃ&wJ¿Ç¬DfÁ‹0xFi.¥[$.K2ŽÈÓ ‰¢uÈ¢jr ´\M5?¡°õ8íë|Æ?àw8
sâÜÃŸõ'$k®Öko\·*k Í
¾uGö-œkÖIÓéO”…%k~pæ‘7OZ‘æÐZ/o¦ôÃ3¥.f€¼Î¯¶DZÀªt§S:ÍœFV½É0T|-«øàºÓžâM6†	ª‚°ž«Ú*ob¨ê«¬ªüo*Ò‡ªndUý4 mQûgD»ÛéÞF! ¯³ ŒfÃ6(. ºä	&¯š²Àæº3ˆ’.<x3À§¨+wè »Y x‡;édYœ©¶—ÉTÉçQW˜f3›Þ¬eUOîÚÌ¨%I{Ø™~Œ¦ÂšeJë¾)­û™Òšî²/ÊÅíZmÍK}FG8ù=Y5	if<Ï…XÈ¢BW®¡ºòïÙ‚i#¾1o¦íLoðÖÒ›„¦ýÂÂ
~'OÛ‚*˜öa¥ß[€Çýÿó_ŠôÍÁø¸N¿’h€?jô¯o­ÓÏ{þ`6‹{÷ú=©ºÐ¯…‡ò 9ŠÐcf<Ká>ì·vß]¶O›—GíËÃãÖé»K*ÈïÂÅº/„ …ÇF~HGe”)¿ Þ†WÒü…R€PK¤&Læ
)MäCEqþ[Ës–L‰#}Æ‚n7Ê×$uH2ú¼üžæ*®JF•««xP%ƒ·zÂW]¾¬©°MÆà.'´T",˜/_ú::þ+Öu>¹åÚªSè„§yØ¸ÄOðcypã‡²ä_µžõyp(($Â-ÿÇŸÍþv\†vU³NŒŠ\P.•ŠkƒØ2ìö–)ßßÆÆqH¸L<Ê.ÓOíæ#±¾Ù…®“ùÉ2º±¯Àøü@6#Z'çrw'èÆˆ®ÏŠÜƒ]gO:ùûô·Cz¹cøÌ¨;ÆæÄò<"ŒGTùwÄåÿ5wÂ[w—;!à9;tºóžm1?dFËèP´Ÿ;×E{a%jEPpUv$ó»Wðjvãæ?ïjv‘²“çó¤ÓvZa/hBm*ÉE]T\kT„ÈíçývÔP~-¸Z?É5ïY‡?Þàc(è#\F(%¬}mº1kˆÃÌ‡šþuØ‡gtxL'mÐ•?µ‹T‘| Í…:)Ãð7ÒníEn­{E­eÃ*+íÑù	¾BR|"V‹üXeE…þý¡œä…£ÕZñ1Ï"©Î¾Ô¡ª[2Ý)žuñöv¶‚ÿ`oàÜg8BsqÙ©&âžm^gÚ#¯A}@BžÉQt–fnwƒýkOuÂ®n3o!¬`Ã¡ XÈj† mj,tª…91ìWÄåîWÑÁ1á»ÏœÁ)ÜÕ=ä[¼Cj%46îæ…¨+®«²‰³üuÙ½ÔeÖAÖÛbŠ®ÁIái0—m-Ð*FÐä,Žp.O*äÝ'f3‰»5îó£‰ó 6´ŽUr®¯eìÍx>ã$éµùþ©-²¡üuI$Áp^îb™ÌŒ0cx}—¨÷I‘1YYô¢ÛsI6ãA³9ä(D„?a»šE„`×Ñ{óÁ¤“voCäX]b{ñ¨3ýl\é¢ÜÑ;Ý4þÄÓUÝÆI:†RFòÙ¸%¸ÝFÓK|=ƒ·æ™I§û1êµÛ•
Phm¡Í!pd^Ì¢?¢ÛEËƒæ|“ÞªâõüâÓäS¯.Kcî÷|d:y"€¥7ÖsKOðjÌ6v}<›®…5ØF÷sw‰û_Šj2>ÅãYÒîß)O‰ÕÄˆÂ?¬>.Œ³·,tERÏk7cn	©½vUG'#ÜIûóÁJè˜ü>¸bBœð¼à€
Ï:ö žÖ¯Ö>hJ®5r+àiŠˆ³­9ÓZ”¿R[’‚ˆ5®¯ßuæMÛ‡J¼õçª¾!FYx8¥c¼Æ„$1ìßÄ}Jwq/½Eû~” ;ë/â[]þ|£þ™B-RöØ¶E›;¬ôþYûÉ?ïGïÕá}ÿ2§€ÿ¡Hö‡Çêº_õ¾	Y_O¢;vð3‡q‘Xø¥Ió¾œÓì$¨»ŠLØØ "y%’eôMM»/ZêÀ÷]ˆ_vùj®tõÀÊì OÙU„—èKèP@SùK;ôýËœþ—÷h6•‘^œL þkŠÄœ*+Óåœ¹±ŠNØ%úÃ‹sÇÊÜÏ—Š(þŠ€W‘Òk©›ÔD¿øFÝU†Ëd²í "\íÖž@ò§A5‹`ö¼šKÝ?œ/ÕjµkW©Õêüo]ü®Ãï¯^½I:%7i«§ÛÎ(ðËá(§»0Ÿl6+b™^-¿•éaóPGwÿqƒ’gŠç\‡ÁÇÖ¥;«KžEjfØRùˆ>74Ç{qÁƒß½à&ÄÆ¦jcQÙ6“$J+Uëðä§Ý#Ë<$÷Ú¾ÏÆôCÊ/L@€‚Uf\P¹vXÙŒ8X*O	ƒY;0>ïŽ*l ÖÄÑ.q‘HäÀA¯²µùV09«‹T ÁlÈbœ¥ÂÅu1«Ï_è~¥ÙÆzi7|[ÂÌ ¯q#Ôªã:´il‡ú…IèöÝM¡=°’Aq¼¼QÊU™KV°ˆn”^H:°Q8é HLz#‹I´:©ãF½W†×7v°|”$Þu÷7!g*­.væ»‡£×•q“ÈÕXÆÕX™˜×­&Êò[¬hÃc&à…|Ý˜}¿ÃÖ´e$ˆ<ÈÂÌúÒwÂºÿÎ…r]
#G)Õi]7ÙòÖø‹P¸œL×.ÿÃ$ƒ¨“a‰rëã‰†X<`5íFî	
üƒò¯ Ÿ&\&’[”bý‘/\x¹¼ÿÞö®oÀ¸¢Rä`ýÝûÚwŽµÊxÏ¾cßÇøTÊ[Gñ|“0Z×ôïQ»Ê©ôÅ]»$¼ùEòH4&–ŒõW ?„½±nÄÊ¼«BúºIé›«fãÏJJÿÇÎÿwä,œ9Ñœ9/×·sŽtUzÈŒ`¦õ¤ñhðYVÒÒÊÄÝM§0µŸmùÃÎ1t…²€¶“é¸‡'šHP—“Àˆe‘¹–}ÊHÊ<é©€s2Pöï–å·,æ¡ü¶LêÍF•³¯Ê'¤› ˜¿Ê[Ý¿™\ÈŸ›|¢PÅ}@}58w»í üN:ˆðZªñ(Ú³ºŽ;x-vžåf‰ÿñòþ” ¢BDÛv–Û”ÝƒÀUYTôu™LgŒeãïÌn@üÇuoXÑÂ#ƒÍã˜TÍ=HpÏáà\u0š7˜F·3ÕüÀ¦“±Jøúr$òÓÂú–ÉiæˆºÏ­ù ™+o<-ëM¬mß3¿WâíL+ÔawÁ¬’ÞQÅíãÞi_(ƒùŸ?iè£ÊŠÖöÑåÞ—¶SNøpMäýtAÎÅr“Ñ:±ÿèEýfÿñaóüô¤}p¸ß>Ú½l4Eàäðòôœn‰pËaòŽ@¹zHU ©GÝÏ"Å:ít?þuŠšåñ†xˆ„Ð×u„D@ŸkÑ=U¶'$`9AoJtv]‚…fcÚê]É‡Æ5¼$¸$œžÉ³ÿ¢~Ðï J¸*Ó£ ,I—•p(A-° o5þ/˜®æ9Õ6VK9D,™Mãv!^Áôh„k`âCÙ^ «ôvŠ6ÄêT[6ÁoÔEg	wq-åã6ŒƒXØ	,"mÖjCÄFr}êsøØW}sœ6Ñd72Ë~·‡ä#yº½Þ¸ÁòTß¢¼@-"5[ßBb³×[H0±>)@@"7Ppj›ô¿ÝÈu~µV_n¬Øúùª±¶Ußø°uyUµµùa«æ\YA%ÝÕÎ9G:nH’·ôc¹P¹! ¶.x@°®ž´+ÏYÌ7šQ€QÜ/.ÏO~(—x³¨»¿CWþ|ßN¤qãzZBÈ!ˆ.‚Ð¿	FWf-_(ïO`¡ºPÒïDUõ´ÊÄüÈÝN|ã~¢¨«µx.ö&µ„Œ*Y·)Ž“Ú¾¾×%CH· 5H†`¤ÀíIåÒáˆÎ¡ååRbˆÙbB—ÏÄý8";/Ó ½£Éƒ¹i«@ÅÕp^Ìcî ŒwÐ3ã³ƒ‚Íx-ÃejÆ3#hÆˆ™Á_VÀŒ/£~ãKTBðwÁX3T†µ÷Ý™‘2‚6Ÿº{W?ñ¹ÚÖ\¬™ù›×…ìŒ‡}Ó²b6‡†—ÑöÙ²îqn¦ƒ÷#è%*;ˆæjE	(F	6¢6Ûd›ôÖ¿²ÐNÐÚ~´øã=NbröJlKM²ž›·FW~Mzåë,g-Z‘w¥Ý&ž1?-oY¶ÿ‚4aHœTýzÞ½ìS·ú×l`\`¾ô hë¹Ð.aaÏ¦ŠÎ%§Ô=ß/,„Ý¿fò±|žÍÎ¤–àªK‚op´²1‘ú(Ÿ±!>Ã¬^w-¾ÖBœÑxõ*“7P5vîãálè©ˆÝÎ#¾®Ñr3E\;#‚Å†ó¨aPÄv"_ ‚pí‹‘ö…}BM‡	šcë G2tŽÄ©1NQŽÄ;´«&ü-PcAÏ»×‹/YËóŠ)ÅâÎ<ì1ðB<D•oéñtÕÆm•Ÿ{ù¼±|Z‹{©j¾¹À+u¨4¥™jvØÓ“!°U_‡~ßÏëöYGv»w|Rç6Ü(Þp}£hÃ)ÍÿÜv×‹·»é7læ9W®MÕ‡äºR‰Èø´°`Á}b½(É69UkFü·-l•í[:ËÐ•xQW_ÊÞ:5Q•²jÖœ¤K™¸,”j˜¥LÖpÊ&hu5Ë:¹Ó¸Â6§5³€Ál¢¯ò`©P«¼º\S´Ê¥Ñ(“£;Z5ÅB¨kºÚ$þ1¹²Â®³B®Õ|³n7J’þl@*WÐ~ƒ³fQ]·*I{ ýÕÔr½¦=ËŒ-.zÔÿ­ ¼Ù¯–pÉ8ìõ•aÀño‹ý\|iuœk%È4÷º‘P6™””úäòü°u„)í$Št±€áÅéãÂŸž€-…I ÁwÐ“´s+9¨# ½ÿà¹ª<3ŽW“nmBÍõ°?K¢­†õˆ\`·Ö­g“¤—:Åºqo«¾±Í[ÿjë¶½»Ú6eHÐ5Q¢š¿LÅº”÷ì6¾¹5ú)Ñy«ÍÑàZ#f½!Ú­7¡W½¨ÓÝª‡Þàäê‰Þ»þ¬®4˜ªçy¤AÇ3{„ù2ŸOû³«rˆG/W–üð 3f¶mPÛÅåÊ2ïóC&÷³©ÜÏâ1œŸM`ŽÝîOÚlão™¶ÞÉWŸŸ¨>ãÂìºU§ÓÊÎ24Æá'ç²b)Þù…·HéŒ{Š‹ïñ_¼DNv…6ÊN˜·Ô‚
k1q»Ô®©‚ª¬9ì]v€Š§$rªì`†7Gœ©61åÆ	æ	/Ñü(]àL?ª2úû#¼\WÙ~k·	Î1-2T·[=:×Ýâyv0ñ”Îµ˜*·ŽÚ;+×Ãêâ¬à\54ÃéXÑÞ¸âÁ@v\üæ"Zýä’×Ó'ªˆ(au}$’øN9ÕÝªRdV­(/u= £[¥œnqªrÛsl:êû@çð3‡Z@Õ{ÞâýïÏz"{U3æ”âf¸B§k8-%(>ƒÇk%½LèOÉ>U+¹bwîe½E¼Ô_ä,Ù{×üWë²Ý<}wrÉÖyeÎ/~Úg²Œí¥a¨–g†–£BPP°ð¨QØÙ®atìGbø©Ý¦Íj@Ì³\~ÂQ‡ì›€pž’H·ö ¾’Pð„:š~ŠzWW¯>‘§ä«1› W®ÿK’÷+OgÒS•’®GPkaigšn»O#} (ã–Ð4&•1Ø?3à°Î¾Â¬k³¤ôµÊþÀïõšñ€~ÔÍ"ô£¡ËHHôhÍ¬K?ÖÍ'ôãUÍj~løÐèÑk³$ýØ4ŸÐ7æúNö.8Ð0àP4Š…ôÏ:uHÿnH¢]¢-˜5EUQ‘`è‘`è‘À‚fB”4H0ôH0ôH`A3	!{	Èâ‘ÇðT?àÛºú±Î)e¡VÝtžÀïÃ“K¼OÃ|á$«tO´­³ëÀù´x¿C5 š»¸	i·C:ÝŠTÒW´Eå(Šm—ÄzÍ÷iÎ›ÿmId¡ÂÆ`—–ZV#1Ò™Ï7XÝ–Yî6ÅO„oðu›Ò²Þm‰N‹žØÄ«¹¥ÄÚ*¨3oÉ=óOB«îSî“jÿ©û$Ù¢ÈFpxŠ4÷W¨°>Ï…¦ønç˜t óèSL.¥<Úì˜rf8Å¶C0LUäD–’þ¨oß‚&U	½‘gÂøQ!Nã‡|4‰TöŽY÷cDºÇ*D¢ÖHYÈ%	(ÂÔ¯ýˆÆíß5ßñ];>S·€7–(Uáï@¥—L8‰+š 6éeU¢× é_êëh :ÆñÍÈ«ÕP|®ñBzi?D=I39èZïñ’’¹ºY\.H$ÀÎØà^+(É+D^å!§6ÍÝÅÍ„™äN:`0æ¯2A jHÉEhÇÚ[>j'9îNÄ½·QgÞþ…–`â¼¸ºƒ}6[÷ zQO<ù‘0%	„ÜlÄ÷ð;àÅRà…ëÔ®šµ"á:nÅƒ½«ƒ½"³²{úÌÇE9©-y
A£JÁð ‚A_(ƒa¨¬¨ ª`&Yûï"šÛÿ  ¡¬ÌÎU¹ÀÂÇ¯Öë5²RúG”&q"U’	®C{ÁpÉK;Æug¦“¤xv<¼Æ“r§*:=á‰“áK@ÅGÉïaÙhù!‰]Zèq* Ùìõö7&i•ÏÛù)3!üä(CêÊp>.R´!üØaø1r±!uq0d"Ä7›¯ù•9÷õ†Ó^T\?ÚýéxØwº‰½„Éâ{ÒqxD{Ý€Ê“¹ðøœû×<é5âó3h‚X•\\%*…Ô¡vTŒFÕÜ+†s"ÑdÝ¼4›åN¯·Œ°qµòƒÏì³˜Ì.GýÛX]x8ZÍ&Áór±üò$iz6GËL˜Þ6Gro`OàÛH.¥&Ã(d0ðœàÙþ[œ=Üiàv|×æ^œe%7Wé¦Š1.ªv< I\Hi"øyðs XK¬Œáø;;B¢µ{ùî¼ÕnµvÏÛ?·w›—‡?Ñ5•í/.OÏ}¢£Æ‡œ
Ò zkô¿'·sî”¿4Dø†î‹Fp Æõ(¬oÚ‘º³Þr¶
M}ôgu²Å×iÿ½°2
Ø³ŸÃ&íÑLFÓYõV»Ÿt‰ƒÑ‚2OÿŽ›øñ»ã®¯ÞÆ	þ×MÁoŽÃÝ‚Œkòp…¦Ý²n¼‰FÑÔ<GÄå‡ê%ÐD—´`þm•\Ï¸óï–pd[U€ølÊ	Å*ÕÙ2#e}é5®4ðx4-7a#mqäA“nõ¼Ý-#¼â‘{—e¤W•5–±Õžq~c—­£Öqëòü×vóôäòüô¨²dÙ£eXÁÛ´¨3_¹;7ä
»Áø¸d­õÀËx;âê*‡½¿,pŠ‡<ñÖ±~"ãø£ªèÔßÀp­6EÏˆNû	RT“i¨›ÜÃÿZêºTl¸Ò×GÉè;­Nâ=‚«]=ëÅ<·n•Dó†§Ÿç8|g¬Šçz„ó.1Ýx©|q'^^<7ðIó¼v×ûž»Y…,ÇÝZ ç±[Öì.v/ZóÜxUûyþ¹Thž®*d!éûéR¹GûêRí|]ü„¯KÊôÛÅOÞuIrz%¦ÿ.Þ³Ù-¥œçƒa7a°æÒéîxŠAþoœyYœÿ3ï‰gÞÂŸ6åd¬á“Ï;©>ñÜ3ƒ‡Ÿö&;kWÚåÝeçpíšsµÝœ‹íjÖµv"R÷q×ÚIžyê[íä¸78BÝb~wõ)Ë,yb\r–20=Žµ|ÛU,ÎãÕ9|•WÊxJÌ÷&Âƒ¼íÙSE£ØC¯.¡Ñâ—_¤}Sè…×¯NÔ-]°F‡¿ñÌÏ,:®1›è‹&3¾«Vòi|Zß@ozã÷”¶Gçñ°szÌ7&ãÓ;ïFÑ}šñ
oYÅª°ól_Neªn…kÐ¹qŸ)×º×f>ìlaY6âI•-GÐÑeÒD2êtå}ß¸Õ…þÀ.o6úH2	Œ»;ËD;˜ŒÕ5ÀòêvÌ¬5¼–_	Î[âþL
`¸1ðÝŽŠþZÝëN`îûÑTÜž%ëÁÊÀ+ò$øxÛ‹ˆ’'$|å-Ò„‚ls;V-êé($B™ºT®‡så×€vû‚`ô€:'û©Ä®„trq¸ßÞÈu“X>o^¶á¡S"#|uzÒï&ö»3ýŽëâí»wÐz5íDò(~Ó½Mò'.Î8þÓH(&¹‚)¿ðÞŽu(0q;îi$ÃÊ–ÅÀ`ìŠgUæ-PçfEzˆm/àXc»­ÊÑÔO,rãcÞ“qÔjÁÔ¶MS_ðéK˜H¥j<ú*3ŽŠ
ß«ŽK“‹;9Mcžr¡&Oäñˆ˜äž2/"ÞZð©¹)%Dl|_Â+¹«Tk‰ßÀó‡iéÉ”¢·tõsy·‰zv@12ÚNb™YÛËÊ5OÉ…ŸpaD!É5‘_È‘Q<Þ{–Suz‘SÓù‹U%ãœ	é„ô±ð´ñ /ÝÒ"Ä½qˆ¿µˆFO¤6TVdlA:Ão,ŒØ(ÀÃk•Ÿï@yöå‹jŸkºó‹ž-àS¹ÙO­…¸ÏèèÜRI@Æ£y=1Â¯øÅžÈoâ¦¦TÂ©R\øÏ»	ÿK¿>©ÊFôP+0ÞÝªÕ=þKv‹ÿ²º£«x^Â\]{©=ï0Ãgž8ò·ðëZc™–\~Þ1ŠcÏd›/æÈfwxG0Rä¶ƒæ1N½%ö9BæÅ;Î{,NâQD[¼_µÖ@s@ŒÁPó£¬¦Leˆ™ºe³Šb~û1•ßì,„9Ÿ1ÑkÍ¼€XnÏã6ÍBw:/˜ª]ëäô¸uÌÓ6ØY»àÄ²æšÞj‘ç{‹hÿSŒ.ì¥ÅI!™,ü_>žj,‹Vò•² 0ã:˜=±$²šÏ^² WQ32¯ÖÛ± RòòíŽ7’²/<‡Í‘P¥JY ;0ð\Bþ{ºÎØQ$vÚÑaQ¤¹	Ø-1)ãèuŠûÓ»ig²Œ*u²‚‡ÌÒ S•¤ÿÏwðX×¨edcn!¾Í@3~o7iëËB]WBÄÇÇ,ÙcÞ?< Îï°Èj.;[2=8>;‡‘xvÖ+P¬Ö–}¯g€Ò+ü5nÙlÅñ«¢†\BÍ™Mþ²#çA#R-äÌ$Ù¶£F¨¾O£¨¬.#XXð†­¯¬ €=JblÕ”/sÞ|%dùÐcð¤	È)Yb~qúûDyL·ç²Q8òZ|Ñ¿¨›¢6âí,	5×68Ú»àOì2êþb·_#ÞÊDŽÚt:öî«ÚzÔV'³òøŸû›OO/öãéIg]ÕkõöË&ÀÉy}’[¾n¼’i ,Ïß¥É,>Üßß›õ/gñq'ù˜Œm¶8Â+Êì
½&7Ô¾¿wa]”¶¼øg“v:‘•8¾ç;™Ÿ`ÁOÄ¶ÂElNªRÕ9ÂjÖ0gê¶7ÂÖôuH§ÀûH<ûŒ}Õ.÷©§Ç{ýô«‰©Œ	PåÿÀT­Ð&o7iã%%âŒäX¹Žqz½ª7ÐâkÕª×¬£û-t'A³.ÊÖB%fÉF^Éu³äz^ÉWfÉW¢dó•áèÕÁ¨Ug¿&êì×òê´6Œ:­ŒZ¯Í’¯­’|(xùY0i8üÁ@Pä`O Y¯½Ùà-’~DîÊk¢ý·KžY´nöÉÅ¹¾û‹yµSvÿÃ£[”+œj&^[øCÊ§ÓXw;Ø4km­õÆ¬õÆªÕ¨Õd­ŒÊM³ró•÷ÍÊûVåM¯®;ø»YƒßÜ5yz7w|Ì²»
õWµ†WÁdäƒ¢4n™µZEk˜µlä6²jÕpòƒÈÝD½ö¤]âcpœžv½W:Ö´Á"Ýå)–æÔBzgK;‰ý6h¿©[Ã¹½Ìi›7k¯7BWX A×,fÍáª06³zÙ2%~+Oâ·L‰ßÊ“ø­5³äZ^Ismhå­-smh½Ê+i
žÖf^ISØ´Þä•4éÝÚ”Tnb^ˆRà!éqI.¹ÚŒÛT®UÂîözv#ŽÂºAøKŠ7—‰ $nÄCN7Ô¾ÿ{O£^%”¯"ƒê¶s'=]&_0<ÔÇ‘dè†Õ¤ãƒ!DèFÛ#¤57¬LÃØ›Š¯/¸N^Ó†\2|­•r=êÇ7ž#£¾ŠX?”s¼U_œçÌVaŽ±Ý Ê%©jz?ce>6É·lø¦ˆSh¯å.‰(Èäî%9¦%†ß«ô$#Ç¼d9 0A ‡G-YY¼«J¾z[ªn!ˆž@SO«šÔÝ.¹¿%®ãI4Êu¸,’aKÚ‡¡æY63¥pÕˆ½ÑÌl˜y€¤©ŸS×t÷Ð”/3ªâîÎ±˜üMÏ‰À‰— qªú ”/¼ÓÇ²?³+†ê©Ã â•h…-§;XþYˆ§5æxã!ÖÙO)¢*mMó!ÚîµH(Å³Sº-+ß†Öro§^mT×Ša*¿öÈþ.ÎP!_e!<00;[¹N&e 1 ŽãBdþbŒI{Œ.”sÒóy¡Øn§§¡¬Ð‹#u„kˆ¢¼dŠ¢õdxàJè„…9Ñß†ü{<A&5ž¤7¿Qß;Ó•›ß“Èáá-IâöÔë$¢ÏÄ­|£ÅRnú“ngDn Ÿ®V£Þ˜d« tVQ ‹/_+‹é€­B’ˆR­”eIË‡ÿ1¡yÒÞ$"óh›èyÍ‹Ä{€[¹%D5\¢wžÇi'>ÌSÝ›3^š#Ä9·R+¸Ç‹s|m«=1eMY)¹ni^Ö[ôvý/”Ý\4®ÌÌ–¼ÉpiÃøU‰ô[þS ü<|V Ó0“›ª£«q³kI!çÈOJC³ø(K¿D˜!x-¥ x§ºm´õÉŸ{CÛÙ4‚Å_&ð­¬0Òœïb˜×içcÄ@¦Dwòræ••#[ÚVðŽ#q{,zðŒûPtwòbz¡Ø‚\Ú1™c•ý¦õNžñƒ©üŽÂàMlœŒ**·£9Nqr=èŒ>–)NM”¼Š?Tl±‹â>ÍUJýöò%nÔt%Iùž®£}_ûNY"ñF¯2Äˆ÷ýtžÉ>n%pôöc¼NwŒ—ÀéÂÖØÙVÝªe!®:&aÙÈ:•uóÓ(š•ÄxC¬y¸¿/K€l‘EO/š¤Yg@"ÉêµTÕfo	Î:‘ž³NÃ'(;ñqS”ØèŠÅq´æ¬‹pltžj oÒüÈ©¥;ÐBg‘`ÂÝú²+ÿ€91—“­ÉÅÏRtÕæÌºNÕÐk=ù¼Ãå³I©K	®@¿%îÜU¸x~.þz2âÙ1;H:ë‘AœI¾0Mäæ9 ,åÚZ«Ž»ô#óÞ:?x¹(¼ê=ºª}p%¶‘"¢îäÑ‘è–ùºR™‡ö®ö®‡¶l7[Þû¶–÷ü–÷
¶Üü¶–›~ËM«å¯©.$5OG%kêv*l•ùOqì*À_¶æÇ,XQ‡<¤ÁxË€Ÿ!!¹‹Óî-+gÁ±²·’Jº-ïÑ+ÿÑ›-iÞtÝ^ˆ¯A›øhœ–ËºÜšÿhÝ´é?Úáá8/Zó>‹Bz¡­C ÙÉT)Ô«¦O·¦ßÑæz_Ul¯(¾lÞ'ˆ¾«Ó]KÎO¦¢k-EÃO†ž@Ò$øèÝÚð™áµM\uL¾0ÖAqå…>î•~@ŒÖYïª^«¿úàÓO–&†ÌéÅ²ÖÒY×iTLçKñ™ãµ£îY_ˆT¶ùR~‚!fy’Zf¯kN¯eÏyEV®Ëó… "8¬bFY¶á7f_æßJÆ¡<L\¶lºeÇà+½Ÿ8wU²6,øùMž¬…ÙR"R —S<|r¡Ÿ¼žýÖÔ*:²W	n÷ý(.«·ž¥ÅîÊ¼”;$_æ`lº[>Õ§¯EÄÄÁkOL¼ñ5ýGû[¾Ütô› •1¤‚Ãz%4°O(/ÊÒwÃƒ*Ý7r	ºzæEz;ÏnnÍs~‘YÂî¿”8Ø-=`:úÒÕ¬œ9SÅpgw¯øL.˜1jŽâ ‰”Ã²ú0)cÄ@@^ûäáæ²-!	SLÙ]ß@Ëä¯^Ôé]GQ?Ä·¶µf@I¦ïKÙÝm·ñÖtOëÀ5”B6âã$%È\3o¬$;b³¸ÈÏ#ñŽEâ°Ðp­ÉË;¡ÑÊ9ý2ÓZgÌ#±â}3§|+—üIâÁï¸çÇŒ&ÂÌ‘Ï8 Öca¸ÿ+žìŽzçÑpü)ÜË®QË<(ÙÎOÎæDªÊK)ŽO(Òîâð¿Zètº^d|ƒ1¬í ðt>¡E=BsîG:Šî¯-?p+s2L=Dp¡î5h¨&E>ø.þENq±óì[þx¯Š\dŸp®QÛ±Ã±s=>W'øÐ ÈÃF¬?€Áq}tj÷5ž­t!’ôà9Ú—é¥åxö´ÙÙ¡q×•S®!àïž_²U™8§Â¯p \ÙÅ`œæ•_çå›Üï‹H¿/†Üç~%
Ë‹ /câ´hqß/·Ò¯´ÏÓ_Dƒ>»Œ|Ø¯y1e¬d?Ž“tùp§1f5r‹oºÅu~€ìJoÕG½Ù´ƒ1,?€7É#Ï.¯q6zq7¥À{™¥ýd(«h¹wkíe×j}B7æÝ››itÜšM^s7ù<Än¤Ò#²KI3Üû¢-"7¬çm=­ƒ0áòkÕÅd8†æ:ì
e¶Ÿ¹]¨×­IÜÔì@‡ã”µßÌxþºKÖÅöjvÈOKc F!î¬‹ù-²±v}ÝšTR"ZúÇÞøÎe¨º˜B{c˜–gi¸®.¦Ìù8¥ŽwŒÓ0›Q_ZïÇIã >;ï7ÅûsÊNÀÉy2FJuCà6åtp*z¸fÍ”NMÌé*%”Ï}Í†#™vuŽÇE’Q§†É£ÇüFR¶\jô]¬îJÉPP¿Ç­;Üg[läø4v2tdJ9¯Ž”àÇƒƒ°	yî^HÁÀûÒDâ6÷c®Úü×rÿüs>û•*%­ñË->	SBØXÏpÙ³M÷¶¢õÿÇ~†²
xœuÊ9€ @ÑžSÐYèè	<‰± 0"	[˜ÁåöFk)~õ>¥Z4’ìg¹)»ì«u‘¦¤óTvžFÝ€-ÓUí„šb„Ý§r·v
ª0àÅðÉ~ç*Ä96½xœíXmoÛ6þî_AÒl ”,EõÐ­[±o°}kŠ€¢(‹	E²|q’bØoß‘’mÊ¶â¼4Iƒ:@èîxw¼»ç!%ŒñH’†Qá¹(G#%Ç#„´·uø‹Paˆ¤5³cô±!Ö1ó)ª…85ì³gÖšüB™óJ¨‹Ó’[MŸ£3UØ°fJ).Yá§­ƒ6	¢(Œ2ã¥Åò…—ÎcAŒ*¡m»!Ü­æÒ:"xÐL–LRÎlg‘õ¥BD;<ena‚êó)¦JV|Š/Î¬’8¤7OµkQT6!½»%Ôq%m{§çÊ»w³ãËœ×X_¹ZÉw³W‹¼.¸«Ç‹'¨m´À3f,{ß?Î.÷W|¶â¶¾Ê{7;Ê³ã…£´©C¡ÚÔV­ ¸1U¥câcôs¢‚ð3F™aôá®4›,û·ÐþU”3H¨]:©ˆ°,1i÷±Øòaöú(ûé®{^ÌÈu[îÝ,y#½Š”˜Ç+-;Ž¯Æ¨"\xÃ^æÐ¦)ÔU\$
½'`‰þí/î´Û5¬±ù™»t£A†	F,[ÅP'Þ¡èÙ¢(íàB¿ÃÑCàˆ
"§›O¥6ðM‹&L²‡á™dSÈÃyå±þq<z¶Á/˜(h´µb‡Ðeš÷G(TQ„žc[ÃJ}0Ä –R´ÎPk„F‰\ªI3G)%µ|+ýõïÏ¢JØ¨’M*e(›÷xÅª…®›‹«I;;ð~càuÄqº¼ÑhÞï¼qvàý&ÀÛ^‘ˆiêªw3bÅw(Lò:8€_ZsÇ¨ƒõ1šæÈ.µ2n~Ÿì½¶8íž¦Ûƒt˜ºK¸?Ãx‘2Ôq#É:1¶paÀa†öm^²ÕÎéøÏÇ°xBšòõ«O­tºræhô‘[åa²m&x¯×m%RÕd£iVæ1ø€Þ¾ýýÏÉê$l0jÃŽó<”Àfm‰3ªšíÍKÐ.‘—<Œƒ2Yg8u¬|q/·Øë2tòFîû{˜,j]tLALSjúí_xH¾0„I¢þO¥g¤à°<yOúÌJ÷Xd5lÿtŽØ{í§ƒsó³àòöà{Q‡îvt‡_ÚãlRrK
±vÛñôƒñ´Öôõ+ÁÖ™ºSÜ‡«;Ï×10OÏØ]"Û8»3ûú¬}sÇÎÛZz»¸{'Ë–,þhüÝ¤ïšÁ;0ßí×ŽæŸ˜æíñ›ÃËu’âûP|tðø¿Ì;1~|zil#÷hôõ©ý¦nœØÛ¸¥ÇO@æéÐ|×TÞŽíŽÈŸ‘Gn¸ä)•7^IÔÉoÉåÛAÌvˆÈYÒxCx—’SJô˜n©9/¹I,ÓÐr@S‹¨P’Å}ÚÕè(2ª]fMV»ü?Ø˜ã6yõ½FÉúÑóþýh].¹<#“¶ôaoéÒ,Éå…R(“èÓhÙzËÙÒh©Nô]oC#ìQÿçdÔŽh£ÞˆÌ®7'äŒ­X¯›–ŠÚu—M»FoO`µËZ"ü~@1×¦O]Çn:Êž0è·õ…6ên›§(™`Ãx@¶çOðœwW&«;)ÜP*¸«ÄË…D/lnØŒÞ@tòòã!~Cð—O'?žä'G¹~1_—…OÙ+ÙÀn;5šƒí%6Ánë…ê¯_þù2ÔåAžÀ)Ö·Œ÷‚M:ŠƒC¸¹½ƒÄi{ô^kºf2”ÀÚ±¹a²ð¦á«­?°ÿ×qÌ­µäxœ½XÿoÛ¸ÿÝÅC¸$·ø[œôp™S k|«&1bïÐ¡*Z¢l®©’”]ï¶ûÛï=’’¥4.°]° ±%ò}ãç}¥£#°~ÒßBØŒ_Üä¼Ë’\ÈnÁŒ±k]V$7¥]+}~ž¾¿›\sïáƒáÖÖWýþv»í%*^*õ©§ôªo“ÕeŸËþÚæY?08yå’kfIÞ­Šÿ‚ôð~þæv—q³æÜØÉ
³VÆAz%Ù¤=Émÿum<Ü2‹ÆFýÑ°>8U;wL–,»‚û_îxx©¶æªÔ1÷[~í“«’­pm"W™0kZîôoá‰&Q÷æönzug7óùâíãñ¯ôÈÑñðÔ9ÙÝ?úç¤ü ·<’ƒQ9‡BiË–"vÆ–iú‚š~û£NJpÛ²\™^Â—‚I—ƒ_ý8jR ØÖôV²tûLÇk±á>hVZ¥)Â;ø©;8ïçf5†£í½”¥‚C$Oz+è%n>CtÂ>wz<ó¡U­¿¨#·ð”•™…TéœY+äêU$Â°e†‰¹+Ö\2+”ìôäºµ÷ÏÒX‘ŠØíÂ	Kh,ÿ‚
2žZÈ™^		Jf»ÓN%½(w7Ó{xóp¿˜Ü/`¾¸y\Ìáíäq?¼”š9eïÍÝä¨óLiƒ¨ór™LÓKa5Ó;pT«<g29Ím©%~t—ñ2ç¿˜Í§sÌoS ²i'J§¤"ò:¢ZI”>Â8áó×ð!êF]UÄ*á×cÿýþv(¨^?vàÉŸcJ3¶2×c÷åYRo‰B›Mr=¦O¿‹JÝËq’åÜ,F{òI#/'êÆÉöüzLŸ•‘[‡{Ã#\Ã¡_6×¼ðáù·dyuÃQ“ïÂ¯]4×.ýÚå!Y	³,êf\^ëGO•Ü9·¬!¡æÍaü.!‹Ò¢{D†>¦OÏ$À¿àÒ³‹è4„ómµ°Ü-mðX‘sUÚë±U^öJ|<@½t‹¨ù¨väæjz‡v”Ò%‡f(m)$%Ñ-Ð›V–]Ãƒ·´€úý _†=]Æ^ö§†TøÌ»Ìß<Ng‹éÃ½O>ŸÁ¦Â®·òèß§²»ÆÝ¢È°øQ%©}ßƒÅZ,{;XrGeD^d;÷™@îËliÎ@iÇÄ2£@È8+T KlË\ƒH›üµJòZcµ—(n@’Ë5"d}qV^‚/†´©‚6ÈdÂwë*S0émI3E&4iíœ½ád\ 8íd:¤â5²ÄÄáeÀ	ÿr}|éSQœº2¨Ë,3:@-‡§•]LÇÜ F¤ÍŸpºŒñ™ž½/N+kJ×8A`ø§Æ¶lgPuÁe‚]w8*Wÿì}Wë ™…&PXzoZ­&`9°æ_ )ó¢vdÓ Gá^¹³„MÒØZ8¢«¦•\ÜE?î À}p1Kc6ë4+þ<Ó:½Ç9\8¿:ùe§Mßtˆ€¿Í CÖIPR÷¯£ÕDžj¨BÐíþ·Šªvãõ4šQCË†e%wXùH0\oÆTð,y"ÙV—à”þ\ë:¨3©¾)Ýu’çQwt6DÝáåG×T*™ó‚Ç8%qÓÊád«tÒÒÅ,˜@š —î Z:À„5Ÿž¶þÕü õo†	‡ð=(šÇ>ÄÃz»²}.‘À3Õ•Êøé#'J'«Î­’ÑIüÙBi0™1tÁu åžÇå¢ÔhÚ UÝÌ[þuËÇ˜¶+Ÿ Lò§¡´9qšN÷“Ùb©’
=jNBH=<m‡$µHåyw…—y†YkÊÜg)‰/nñòÖ:Ckðyv^h-âd,WˆWå…`Z¹÷Ø¾ž·æ_+|2b<«´¢ùß¯,L y„Ï¨y¢é$«!Ý’ˆÂpdÜ*Ä{!ÖY–a£ôE£•käŸ-óŽ#W´F_µŸØVi¦ÎñN‚#tÇ™DÁ•Ù­x^l)b–œXÅJ*Ìänd²o?À´ðpÅ	«}]ÿÎûr Ÿ³}Ãi+,¼Â0ðÔÊøÓèÞbWF)H—P÷ÆáÅµ+ŠšK[itõyðt^ApÓ2«Ìs!³S%NEÜå4¥?#ÊÚºæÏd¨Ä¡tx3Î\ FÉ}þXðŽÌû$ÕVî-šÚýäÓ²¡)!V2:§eV÷œc°ŸW–ÕÓ’k¦¡JìÇ·6¢h˜Ÿçj~¤çéÃ›Å;´C}ÂiC¢§µ8êÌ“÷7w³w“ê2ç„ÑÏ¢_£N´>î.Ž£“e‰ŒŽ£¯§ÿq¿2AwØéMg@DpÞ¹}ÊÝTe™ÚÒù\`R ºÙ³5™:`CÿåÐ÷÷©ál×"^#¡ÆvY(*éˆ&úM$˜Ÿ"Ý²V£®›ç¢‚a8»Öþ5^‚•ÄO‰ä²‹ÁO¯*MÂ„©÷_¼:¿Ù¼î.+!íÏÕ¡%å8†K£ØïÏêÆ0ðØ¬	L¼Bç~„'èÆ`Ù”¯žTl:ì/£C2Ï_ê&^}¿¤«tñU¡3lÃÃTPO¡ä:×¦®þÏ0Ðõ^cÐüÃÝ°º}˜yøÅÓ§ÃŒi[…‚ÿý‹¸¤aåwUâ?·¦	xœ½<kSI’ßáÿP#bÉH­ØÆ€ØÃÀŒÙÀ˜ yn6ÎQR—¤:·º{ú!`gØß~™õêêVµŒ=ÞÃa£î¬ÌÊweV•|ð÷ûE@–,Iy}¯× ,œD>gÃÆÇÑOÝÆßŸ?;øáäÃñèŸ—§džÂåÇ·çgÇ¤Ñévÿ{û¸Û=_ßÞŸ“¾×ïvO/ÏŸøiÌ³,Þëvïîî¼»m/JfÝÑU÷iôûˆ¥?{~æ7pAx
Ó¡¹ÿæÍ‰ÒÀA{E6Y(Qõñ÷‚e” n‡ýžóå°q…³Îè!f2‘OÃã€Oh’Kš[@rŸLæ4IY6”Â“®!Ò6f,d	Í¢Ä¢t”N8?‰&¤ßó¨B”ñ,`‡árÁ:3–uâ$ŠY’=4û­ƒ®„Á 4{É€³a#c÷Yw’¦(M÷¹F˜OŽ¯¯É4Jˆ™D©ŒÐÐÖxIÆtò™…~J^tŸ?¸'lJó Ä0óÄëqä??Ð,ø®3¥<ì‘Ÿè•ÓvÊ>ÝþìQ!ƒú¼ß&óüÝ†¿;ð÷%ü}Õ~þÌçKOHÓ&£2ÕãógZ¤Mb/£ã€yøÄx¿‘E=fƒæÙ<JÚd#aË0_Œ™úìÓŒÉO	[Ðä3ŽFQÆ‡G	§Aû–,“¶S¦’H…ø@lÆÃ=Ògòòoê—Få˜IDÉ9ÛÇg´LÇg“(î²GòD	xÈ$"Ý[ò”g`-}šOæ)§š6LTp.ì¾GxFÁ÷-¤.4Fš%Q8³°îŸÍ3`,
|i£·»Ý³£ñÜÆ*ñ¶ñrðz<–D¤F:YƒV¼[ØoÇQ–E‹=Òó^* ŠÝ™+NúÞöê¬r¦q”€’A|OÒ(à>I9Ø)‘hóSsŽdBÏ…pElD¦Ø43€-òBÉ0š”€/mUó1d´§iJ§MÙmYuŒRŒT‰-ÐqŠñüY\"R£V—1Ú$‚¿'‡ÄEEÌ ÃüùÃX‘RºO,è!ª¤p_Èüü™·ˆÂ(é„ADB~‡ØŠæ%È–yÂ!Ê.Ø]£MÔS›üýŠby8‡@Ë>l¬*…(BO‰d¸›Cìtõ=d«s—ÐXëGeˆZïuFÉò}­íH%<@Røð…Œ£†¹òŽ$œ.hì[®.ìåðó÷.Ûy§pP5aÓŽËýzÒÈcêÏXZBOPI_Â
`º€”½êŒý:—î0¸ø‚ÎØ8ˆ&ŸÛŸÙ=]Äýkõ,Q~Ïmk@ >‘Ð ô&Í€iëMÊ}6¦‰M†úà©\D6¾u‰Ð{’_$4¨#´HT®ìý­”´_õð“TE!Kð[1-Ø_)\+‘¥í2†XbS‰P·JeT‰uV¬Yhùâ“”Û++WNn¸#ßAùà3toÊ“4ëLæ<ð]‰¶g×ZükØ[þZµšXžY¸dL‘! Ï’êÐó~³2‡½¬løâÇÎ+rIÚ)†L{ø§’bí®†‹“¥§OýÒ9uY¦]üó–ª1^$r g]q¦š×•ðzçÚáwwwÝì)}Ñ,Kø8ÇxYS¦”ãB'YCÕòW·²J‹¯½–:—ØGÉ§0úÚÅiQ/aÇpzyuz|4:=Ù#—°0«žìBGóZ<1"›•˜‰˜¿H/O[nžÜs»³­Ç'cQhT©n‰_›·êêwgþÓúS¾Õ[¿6d~Ù¨e?.ü¤äšÛŽ¸3ú°Ìúà]C©Ž	3C±D—©WñD	µY(1_@G¢çWmL&W…Z—€ B%…¢WÒŠõŸ*TýÀ•mwëV•]c–ìk
pË´	TsîFÌ÷±®þÒ"Ò¯–ôröK©š¦G)—å.#
<šÐ1ŸH7öx.—ÜÉÁAt‡Ïi‚Ð#RÇë‘Ä€
’ ”D®IŒ(Ï´IÎd!é•w-@FP}ö3tGåqWÀð¹< >×[ÌáT–)3¬¦ë;ðGQ¦‹™»¡±¥œû¨otò?KÊ©ÆT±°âéˆPcûžÜHhcž*¿ú‚dzôSñJ­¤P-ßJ€™‰ë&*Éol«õ`÷–ŽþF[ ñÎªìàÌfÚ=Œ°#46]é-ã¨,Y –rU¸4‹]„=<-K5èAŠï©_å"ëµ€ô
-¨/ýTQüy©ˆU±ª["»WÛ\Ç>!fWHøàú~¡Øgxá~6G)e· °zÕïõ´?ë —îï—Ý¿²N»:ÜmYë]y±Î­évaîÿZ0ŸSˆo®ý©Ú{ƒÒ8 z…|ÔÊÎ¢I‰xÑ:Ú}¸Þ']ß¥=­zb—Ö/	ÀAÀ–,èÉ„ªûåÇAùq»ü¸ãîñœ‹òcyÚcgn`‹©ƒðM©¹Ô|8°wžŒ½ãÀ~µ[% ú{N‹ÚŸŠJlÉ¹vè4g60gLm&`½»lFÌúP€ñÉ†1Ú@x, _XóâSù£ÈB•Ï³x9ÝÀ ––añX@ã<‰,Ÿxb—ˆðP@dÆ)€*xÆ =1P|*`biv•ž*¬R¶n§X7°¶‡µë;¬¿n°Ãê‡;½£~¸Ã[Ö^ñžúÁ.oªíò®úÑo«ìô¾úáo¬ìðÎúÁ.o­íðÞúÁNo®¾êÝcŽÍ•Þ0Û’á†wÞó^©jŒé¬aÜš¶»°Ú²~¸†Ù¾B1þgs†×%äô<'Œ~¦bOJƒè_txˆ]Äí2â¾BÀíHò/ÌAkCÿ5å|) ò˜U,Hò/n4[4IFÍ¾».¿¬îÞ,ý5§«O9+´‰(ìÚ]XÜTfšCcó)î¦	…õBoï0ÂSa©„û>,2ãqdÍC²ˆ ’'Ñ]
‘µ½"ï 8l ·¥{ƒaÆ4…9š3­ÐÀµ»BÈÀDÝøµ³,]³€Úê&‘†_Åò5y_ãiÒÂÕ×Ê#wïþ’×Ôð¢\ÇÍ´Òˆªî·UŸ Ü8®¼—ŠA`¿wTÄ$ q
Hú“ÖÅ‘è‡×3¨Ómí|#g.;zÂŸPkãhu_OŸ‹¸ªuZvè\M ÜµÎYWÉ—Ýõ	ôÑ£]Qk£VtïÍE÷%­ØÁ­Û8vÒ›@oºNŠ¸JS¾_CU(¼†¨€­Ò,”‰.%"Ø J²€|a#ÄIpêÆ>'M	t“•°5”¥GÔP–@7eµû[Ívâ"\—ïðN†§ÇÌûk^êN²Ÿp(ÿ¤*e^ë§Òà/_2Y»—P¥%÷êvž?;è
vÄ¥²IÂãÌ¾Uö¿tIå[y¹ìà‡›ã“£ÑÑ*|IBñv™3aÒí’l±é	»}$CF¢„ø0%êV^JÌºï6¨[ŽÄµ‘=òžÏ)'oé¿¢°M®Yœ1¼òA½Þ@­¼â–ašå>²ãñpqšr/‰ºÿ^ðtEÆ=«ÌÛ¼øyf†N¸cp~b,€’‰AõYHAÁ¤L$
bYZ±duÔT<ü|ñ‘ü,Hä22BÈ9‡L•B„Ó”¸{¿¢œøxC]Èê05ƒL…‰ À…UláÍ‚EäCÔA{µÚ(‰È‰GÞÑ0]ÑÐ+OÏ¹G~¾<—w*®³œ&¹‚¾bN!G šø÷Y¸€ÞaIÁÙúž·ÌÁ+ìYC-¤iF´0Dq¢a3–À£›,héô_qUfH}ùoL6Àá-<qxsŒg7ûðê‡!	ó ØPî…€|ÍAÍáÌ%„OI`‘Ïðâ(É6Ê~/¼Ñé¯£ONNAª†ËÙ)X¥áf†I~ÆûiFÑ¡4=¹>-œÑ§Ý× “©Ù
65­Ut­ÞR$å¯„eyŠaðXQÝ(šœ†Yò ºk‹Qmc
#6úŒ§o æö­÷JÉfýZAúèœ?“ós–JJFÖ†LXŠWAxvGŽÜ—°
pÅf§÷qsófþî¶yÓïln>³ÕommÞ¶6µvÀ:?æ4_qvòá=É04Ñ]T-¬„OÁåˆ!ƒ¾p–É€'G—gä.ÊÁRch†àŸLÄ›ÌCþ{Î´F"*Ó<Ž£$“Áý³¡¦;£–W(ŽÖ3”²Ë:ßÅ¯]žÝ7ž}z~úþôÂrnOò¸ˆ€xÂ<vÏ&@&£3\+Zûö8œÆýø#Nþz¤›ÅfcÐ4m´ÈŸ'‰5Z-”¥!î­5*<å#7ò—°p–Ío•g'çm+PðþâMÿ¶Ó/³ùXâYê¾«ÒˆÇR¨é±`›ýRðIžl÷ÙI,¬°¼æèZ(õ©ô²·g~³à†¤ƒzûÈ’¬M<ç|œ„ÝË>dôá˜0YØwO(ä“;¶	Ñ’0Ð ÖGÂÝaœg±¤‚q]É…cHnn÷5œ«np7t¦úÔbyâ}%UªÐÖV)ˆ‘™™¬á7üV)Åc„¢Å!‰œãQò1ðÞl¡KnBÍ³©´~$‡;]éIƒ ”Ê&óf÷tžè¶Lj]Õ…çé\²ØÒÊwj£ŠçÒjA®Í"P›«h ™VÅÆWlœã2`ÙÖØNÛzh§ÔZïR7;-;åÖÕÉDÉ¤çÒ‚lmq§iÕ8—MUõ ’â’lô¼
&OÀÓ§ÙR''¡v´L¡¦Dj6hC‡õæxª
D6@•ºEã˜…¾Ô}…*¦ôMÅ9®l­–ÅÞ¨g †q-ÈšˆÚ “ØYm„‚çÒª)ý¥Ä3_ZN¨õ\	µÜk¸1M`€Èæ·C2mÕŠ}ŸZWWsrü*åßBRð	¬…æ,[M„ë#^f‡ú:8»œÇ/ú¸mü ¬°f]š@BZ².¨/»½×Ý)^XÈ>iÊnÄ™bÙœ‰ÛÅ©
G6ì=%ËÁ¾ÖÜ$_$2,GÖ,†;{ñ(PkÖR
YÍýÕWÐûšÄïÄú†üÿ…¤.ò‹VC9Ï|u2¯"¹D´Ä²#‹=9›W=ÄØ“ô:[›$n|— „XÃÓ·#Y‘58ÄÂ€d‰<~&Ä/´1D]ÊNùÑn
"ÚI­d…¢Z·¶L)¥Ýf4Ê6Åž¨#I,ãÒ¥ú¢êæ·ô·ë[²8 †Í³GÒˆ, ãq¨$}Ä»(ùì•ècÐ%½–Íøœb»L ò÷£*õhlÆîÉ4 3¹*!á—u‰ñ[úâ·›¦äîEë»-(>­ªr—íR´qs@	÷‡›Ÿ¬ëCb•áoc“àÂ7ÜÜ0`+Ù”_nþÂ¡0ÖC7‰0ÜpÓ¼84„ºôð¶áb4­1U[¨£0˜©—­P)„Ü²¤làâZå¥,µ%22i#ÓTT¤d¿RMq$ÚÖ
#´G&ZV¼Ö%ßÅj¥Æq¹_ñX^tï"èn @Ùâ¾hQì–Ý¬ç¡½„[š«YÉ­/È‰„?Lcy™D–¦ÄRŒÞ…xZ˜?)Ðj¹3C-©‚ÌV”#/A	wÓ«jq.Z¾§há/Y†Rïv¿Âg§ºûš‚ÊÉÇ«s;ZE³
6@:_ƒÿ?qöXö	Y¡qÜ?
‚¢òhV7LDÇ,9ÃZ·´Õ’0…Þ4&Ò;¼æB`ÚlYËñênŒ…Àf¥w(ØuO|úr5!‡â»šgxÞ²¤AS±_4Ñ†m{U£Ð±XfpÍà6yÙë%YC©ïŸ.áÃ9”gX/ªøª…7'Þ«Ýs¨Ô˜é­F 6™Rˆº"þ$í;úÑ…Xé	Ïsbë]¼¯ulKÞ}q{{ˆ%èAWnã®~WÁ]œ&Hçj¨ñxÌ§>r#K~'¾ÿº¾‚NÞÓ0ÇÝe@´ûbøàðâèý)<4A5u!Ç«_l'¡ƒ+˜=_NOçÑÜgóÙVcŸ\üòž‰‚%‰‚ Š[ƒŠyI ñ"ù‰ŽÜò>èÆBpÌÆÖo-§®‰¬ö¥ô1îSúFqÊÓÆáõ?/>\^Ÿ]?ABT|µEÊµ¼‚ØBh„Ø9èÂ[òcíûlÉ'ìÇY¶On:h:Åÿa ò£ üI:)¿»-ï{¹~€Ü</è@kê‹ã	 óŽÜ‚îV‘ÃúFNÃ(tE½¶škU
å¼pLAêäôúøêìrtöáâëë%4žƒãÃïæ9:Î·É	‘ÀS>q¾ÒQÄÕtÅ ÓïÕ5zÞ‰+Yý åÖ0_F\á£9V»8JŸi}xäC(*áã£Ëaï¾×&¿\ÃïÝ69>†ßýøp=ÂWýI›\\__ÁÇAÏŠ5¿ž³w.žªþ·W°yf”½.g˜6Æÿ§ÂÇ‚Ýf¹:w´÷mÆS_šëþzôþòüô+Í—+óåÂ|×"ŽD»Žwå°y¿ãPd$¹¢” ñ»è¾w<›kûªµ&²¿šYeÂÎjÂ¸Áq¸AV²éBVéâë19LNª9è
&#TÂ^ÊÙÍ¿Uëã|ûñç¯Ôv9øókÝàA¨¼Ê¼Í!€²'OP Šß1ÏRâçâ@•âSžÉ­ Š[N„G“,€'(¦x‚]Jµœ…@-axÚsqÃð3KBqTD_íàÄW˜£pJ5¸„©ÒÚ¹ê|ë'<ÀùDê–4ð HœÝ*ú^Ä&óˆô‰XlºéCÚ•œƒ	»87Pì2,‰RáW]ÉÖ“ü§-!	¢ès‘›eZ6‘fïþõ´Eh&%þ>Ö‹$&ùGê«qÒ>¥zªõÁK<JW)]XÐß$$ÍyÆÖ®iÕÒ¨Ø<<˜'¤{è¡ŠÄò+ñ¿Nàûs
Ž™Çøßb€’Ao°Ýémw¶û¤ÿj¯ÿzo°KŽO¯G.nPPY²fô÷ÿ¹Aã¿â¹¨xœVKoEÖŠÁ&	Æ°ÁQJ!²b±³`Â#àpl!”‡p”‡ž™žÝVz¦‡î^Û+!ùÂ‰ëp? ¤ÀÿàÊ/àÊ…;U=Óóðî|ð¶ª«¾¯ººë«ùë§ÞßÏz¿Žz/D*®{Ç·iQüóÙW·ðw
Áò ð,–Á½Gw9ˆ4—vi;RiÊ²x ¹V‡"æ ¹™HkŠŸ?ÿý\@Hßîô¯šX†ìÓi·Ýjcd·á{b¨MÅÓ+Ão‚ ”*zbœk&Ã@
cÞ=„Ž™B60ÄÈ°À3µ·ÆF®¯¡«©°<4·zJN²øeçÍ>î$JG<˜dÂ,Š¸1´›ÐîÛ¸›k‘%êÈ±TkO“CËH<¿nùkïÿ å¯Éý5OËFÎ×¸ôîy€Þü8çQyfZqõñ¿n<Ëóš×-m†§
3­¸šg§èxOÊÌ@kBËH7OSÑ†i‡ÖdwÛ±õˆ…ì4ç.„Þý!xKÛÕ Uù^pá]À[|Jx=)³Î‘gø\*ƒøæíîüvòpÜm&†ÇNÁâÞXVë¯˜Y‰V)¨ŒƒÒ*ÍÁ¨	¾Çå%©F"b\[€fÙˆ
e`D6Â&ŒTfx4±âCÌë[¡2˜9,ží_.þØ?WÀ~qa7\æ4fawá•Vg:ÛÓÝõá‡ï¡°ÀâXƒJ QqÎR/îmô¶3‘¼zªŸ=Ñ'»T60<gšá› Ú%Fª]6ICîøKhpËéê<A ¾ómEðdŸEf,ÓxºÑB®•®¢KOìú·ÆaTPJN"ÙhH‘gÇE'}£]pã•*Õ o,%‚¹ÐQ¥úhe±Íè®ö³òÑÒ:\Æp¤1O¼ÏD š;,3RæX:ZæY‚3Y4gñi’×èŸ»´¶ zŠK._^%"&\ó,â`«Ò\ýo…téw$Òcßð±³à®»Žº¯e³:Ä|qu‡h««'z‰ðÑDÈ§²^¤·.ëŽàz°A'ë
uQ¾ek.ÒhGÒiOò2a#.8åFkÿG·	ïbW¸ë§ÒÉÚ#Ÿ•öÚ|±'Ž•Fí=þÉýœ>Œ¢'‰"IûC ‰ÎSDR ðÊ)ðÌ5[Ù´‡LN¸ûðq!§Ö§÷r©›I¨=Kk}€65Ážà}15H4`D‚*éZâúÖðÛ¬@M™Mo ïnŽÇµgÈb'¥€_\™E@®ÍpyéÖ;ùmúÇôÛâÒÞêÚü™ç*Ö½ÙŠ•íJÌÍé|öfÇ<+‡Ú‘°ã&¯REÊìUgŸ«&A_=`XRª\Û@NJ”æX§®êHH	™²„)ptòJ§]14ÿn‚ãˆÇM:HJùU·‡ÃÒj%%×oÝ|oë£mËY($Ê	§
K{×ÖÏýT·µ³ë×/wõ>œ”Å{?'wVÎßSÀ}A˜rÛÊÏ¿Ü¿Üûwû—å€ˆxœµWÍnEÖ‚‚¢€PU86x×»¶CBìBÀI£xABQ½3½ë–gº‡éžÝXBÚ‡˜'¤8q%g€xnòTõLÏÏ®AK¶{jª¿ªþªëgþþ¡ñç“ÆƒÆ¬PÍˆimöâäñ~c´Y¤¼ëråšs3 °›ôBa€I`qO˜˜Å x*™ô— æ&‰eêðó'•ÍË<Ü„ùÀ¬û|(<>?0ëp¿ÙT‘§|~•^dKûâh*(eéW×^½ƒÊý€´Õµ+§Ú‡šèâÆzè[EZ8½{à$ØD@ÉB®#æñ¦ÈÔ¥…:­Á	iÇ&îðüÑŠÕ¤…³FÒU']­J;m'î´	âz.îâNM½ÀîÔÀ;zg•`ÞÎÅk…x­¦~±_$õŠ}fX3àÒ¾qî¨T¥´e·„Ü°Ú¶ÊŽr)ŸAå˜3Ÿ^Ä`½ÅÂpz¥?]{…Ð„ŒÓì‹ ‹6-˜ '!´ùŠé)ÕíšêyT5"ä*1VÓ(§g {&­S¨¥÷Ô¨™ßQz¯É­—ˆ—ø '’d>ÉNÒYØ¨Ù’n6Š{$N¹~dž£ÝÀŠb»vÖ"¨É$!ÌpéYˆnúýGOÆYæèzêÜý|›ÃÖŽË ß,…4˜=,Šá±^Àçfb®“Àèt÷„†@[%-Â(8°ËgþË+Kë²=;m˜Iô¨˜6ÏÍ°@+ÒA/é÷y¢_*œQ’ç†Ý_qRÍÍixŒ§Gx¡$¨ Ë]MÖT„/ŽKÝÚXŽ67–}1L7nžO”ƒˆÅ˜†\ ÓI¼ 
"SùY¹@àØ¢[Þ¼=ÜâáŽ¹™øÃ+°ŒËròö¢=,ƒ"Ñ¡(o¬ö¹)uÙY¬¹xv¼#A'žÇ5ÒFf36¸\Æ‰‡kÄ@ÂÊ(-:_M!çf<¢Eó!Y #v Ñ‡ˆK_ÈR›fé³…l=‹ë¸°bÅDµ½,ÖQ¬H0¼S°Ç‚Ÿ„‘oÍ«×:q‰džÄÇü>%•%Ø›£Š¢¢Ó¿n~w¼V‘ÛyóätñN¿Üµ®‹N&³&ð ôŸœÎ%dõ–¥¶æg+uœð_ž¬÷„¾^ »[h_=³‘tsû…ç© õ6AðË?dAÂ-YÄ5‡HU_ðÀŸ„üõÖ…Yv	D=}xW!ôÍit©Qi´7xŸQ¦Óq6°q¶mûDc§±¨ß_i®.uÚÍÎÅ®Îú½Ýˆ{½ÔµüõG*ökV™«úÀ¥¡.mo·?Œ5âôÑÇpÄxZ5Fô÷hVáÓÎí3ãÏ4±“È6_ÄÜË.s.®—·¯T°{J³¹†¶qÄ¬XF.†”„‰¤(™W5‰ÆLÆ»ŠXì­ÕúSÂá!ma,€Z„T¥Ñ`¤NÖ“ˆÉñV½
Ê{0J”ki±œxÈC…‘öWxT$,R^Zñh¦~E[€¶¤Õädg †\Ž—0auÚü,ÉÎn÷ÆÖ]»épñ&-P¤*î¹¨”@EYèÇ*¬æËˆüíñY¤n<–‚Œ·ío'§ÛóÿÃš3ólôþ–*× àñ?ÐWÂBák5'(<11bÙBqèLVÔPk¼æ.r"’2ãÊ~lÍ„Sf^Ÿžãª¦.w«DÿKsMµàÅ|º
},çÎacŠx•a¤Ÿ(ÁøÙm¶s³—-"7Æçìv,ÀY&«æÕ¢ˆA±ìP(ËÑ-ë›• 7‡\O¥"&ÚdŸ!ÖÓ‚jv#A`	4Æ” Ä@*,\®_hôè ³•‘ø‚°­nqQr.Ë†{øœU´±ÓK1kÍn;’š¶†åSgm¥lü4—Wâ8Âñ	áPË§1+Ö¯“7¥zßi·JWªó&rßOç½uò@%8Ñr[‚©^£²ï©Øfe[a2o¨yùÏ¼Z²Õ› $Ï5Â/	üÂÌ½Ý—jTéN¹§[Æúc'ØšSh›<%û"IÎòŠQ"¡—
Ç1çtQe0øe5¨^önvkó¹ž"ýNõ®»yŸÖ[;vï jÇC‰î-¶Ò§»ßŽiÊ„ê7uuö„âsx&¾Mé]‘Âkí÷Þ…ü‹Ë}e¶Á}XºÕÊÕöÃKmüòƒæ9¼ Oo^yü{÷lã¬mïì:Œxœ­SAkAf-E(z-(}¦’S·»AM©MÒ˜JQTŒZ-"E&»³ÉàdfÍZ/Q€çîo(lÅƒâÉ“àI<ˆ¾Ùl	ô¤àeøæ½7ï›ï{3?×‡ÎAß™%á‰œ9ÏZh~lÞ)Q»}¶DQûc‰ê—¾8{f½³b>wüf•ë Ìj~µ¯7öÌËŽoæmgÁ|ï¼7_·6ÍÁ–—?¸ü¦¤2KÛÝ|´ýaÖÐÝjþüú·æwwÉ¼ºVÍó[ïfÌ‹»çLíÆ™“±¢ãÜ|ºz*_¼·æÌDRå·w/8ã”³DWZ”·æçœÙ5Æeg@!’œËŒ‰>dxT*@c¸`†@‡D„˜Òq CÚ¬ƒ
šµÈ,ÌÏa©R4‰¥Ðk€…ThíÃ8B+ä¡ê¨ã*ìXô	Æœ‚¢S†Ç-5ö
‰&.§b¢ÈzÎûëõ’XQ	{JAFVT§JÐ­Ò 1µ\…Ýä8ÖL
{.M°¦G‚ ˜¶!2a›ŠEo<kN#d#8I’fÅú‡õ¸UŽå¬8Z„q­†u©µb4,m»1VêJÁéÈ³\·4Ô¯#>’Ü´Jq_ú‹
^Ñ/…Ííå»5Yín2ÍéLo*`ìË2"´E2&#Š6=µ§às¡ÿ¿Þãrûÿ¤ÜØ¯ïç¡HVÉþÊ/åæ×•µ¼{ÿ´ó²=‡åzÓTxœ}UÍn#EV„ˆX{ ™ÚÕÖ[Êdm±B¬dG„M°"œÅ´ê™îqz™é¶º{œXZdñHsá„öÂ}ï< ÏQý3Ží¬¸ÌtÕ|UõuýÍ«—~ýðî„™(OH¤1¥þ³ÕØº;8ÇÑðËý8÷Ç}±õòî:âÌ ‚`ä5™’œ|sÌ€²OYõù›žšÅÖ.†qv=Øƒâ(Ž)˜ž’”Å§ýžÐœîÁ À	Õ/ÛïWÿnß¹”wÖïi|z”'Ô((ÈUÑË~/<ª€Z®m’.E¿çßqdæSæÁÖ”KEÄYæ­nÎÞ&‡Umñ‰á“¥é÷ÂÁcÜÈ?6  úg»ùÅi‰÷Ë¤*šø··P‹ÕoÝ‹¿’
Ì[Í6LøŒ‰ÐLP Ä¬`›"´àRYÄ(L•œqÊ´ó¦˜.sS½ºó÷X5À¤%†€6ªLM©Xõ[ãû¢4£Ì	ÚO)‚/.~Â}J’œ§°"—”YÆÖi	«ž¼=¨~§½YÞ²Á¹f›zÊRžqŒc{#~¸ãŽ0¼rÂ ´ÜŒ9cJáÅœ	eÁ‹ÁŒä¥#Œ£^AzAOtá“Ø*Å2@»&ä2ý©NsËgiÙí‡ÏŽNŸŽ‡ÏŽÚH¦±{~ØØ=;k,ûrol“ßê]DŽàqcdõ\LöÎ­>Ú6Ÿ=Ž£„¬Åxdæ˜d\i,Œœð”äW€0ºû¦ÛCø[CÂ“+^”x‘EY$˜Œsp)Õ­ã“ƒoÛËlk;V)–@ê€6ÛŠawˆ•øH¼và‘Å¾SÂu­ýñwg‡«ÁíÝ†å\€yÁ:k›'Ê°zØÔ˜AZiœ¦SÅ§F*½^˜µIÔÔâõ£Ø[™˜˜‹Öùp“Zî>ÔEræVH¥0|RJ$ƒ¼4öç„GÂ–z…Ôbe'xJ·VGàrZ·vÝÖá»oo;G
žç\3d@7n³I|˜°u›k§îOœF¿¦Ò5j=ÐF6âìHX!Ç¾c¥çËŠg+&\5G…%u*ò9H‰qk7õÜ¾keâ®S]¿G?„Ð+5£Xj—Ë<¯S¡«ÍïoþqàâÙ}ØÝêºy¯Új¿ÞX3Áóò_]?á¶LÐí,×ŽA˜kÒ¹êv:êçæGãÿ‰
·ÿrÝÍ¥Ðí¬Íip|Ýüè˜­á%†GxœuAKAÇ	E*ƒlÅK°ú¶Ìl<ô"¨4Ú@‰»©'È$ûÖ¬ìÎ¤3³+…Ò~…ÂÒRÄCÀÏ%ôÖ™Mz¨ÄÓ¼yüßïýßÿnç~ógÃKÇœjÃM®i*¯~¿%5¯wÒf4¶‡ŸCF{·ïkwÏºÿË€QQD`¥VmèÙö€_!(ü’£6ö5¹Ú¾:Op+·£å›5øail‰cŽÇâ #,’	Ã£Œ*ŽðÍ®Q£Å_æf–Fc©2nŽãÌW	U="~œ?ü»:áiÐ»ŸÎv‰¯g$@£,Pƒ™"œ÷û¸Òx¬dfm:ÂÂMåz¦d‘DËñÅU6*ŸØËïÏç/VðÊÓõ?T5ayñƒÞ93<nM[“©’BÚ¡NÂÜÎ76k•Síz9“n„K!µ^xÄÇ©u^¥RÖ¼×ÇÑBË^ÒE†eVY^z½íp*o*þ"T‡¼ÖRü£<x¯šOSö«Ìžìb£ê”¢¾UþªÃ_rÁÉï*‚xœR=KA%H‚n¡Xˆ¢cñAm$Dƒ
4A]‹½»Inñ²o÷Œk«Àvþ±¬üCv‚?š¨Ámöƒ7ï½y³OcñÎäˆUGßQÚ	¥6÷³Ã)¶¹³QÞ.mq§üPH=x='ŒêÀ¨¢ò¡|¼°ù	€²h n
apÐÅ5E!Æ‹µY¤ƒIb¥i×Ih@ø\ÎÓPùÒá$Ä?”xWŠ×*PðñRzX„Sîp'-î¸R‰¸×äÄ=cðû²·é£é~îìK:Lèæ"{ž™·Ï™™É¿+ìkæíÐ]„,W©Â
;ˆ¥2`êX´ú¥â&µÆ`"ÐÆ’‡©AH-üßûNQ*$¡ìÉÐêè´ìÝÐÕò¿-¶€šqÍ.±Ùõß³‡<ŸW—\êmŠ_££7{Ã&Nt“íšqä
7l¿+|>Š®šŠÍÝ—1zæ³m­ $Z*òPi#ò‘()ÎËUw Kß«”µw,ûá]æÃê'‚xœmROKA'´ãö`¡¶ú,¥F0‰ROÒJü‰H+2»û73Û™ÉÖ€c/-ˆsñøÄ¶¡Wï~‰~ƒÒ7;iè¡Ë0ðæÍûý›=ôóñù“ûºÏÔu}¦vvÞµ÷£ÆöÞæÍFåû½§®a™ìAÔ€ŠvvÊkv5X²‡”Óök0¿ XuÎŒ<}óZhž¾…3àû#xf¯‚QàÖ«ê!BŒ€Ü£Úì·êbk¤<ˆ3™œ@Š§¢Ž§ëÐ¢¢%Š>®ˆU{W}îUÌNýý%[&b¢þ¦°ÙîÀZØF£8èh½%pN»²=^  7½lÂþ1×@Kæ†KÁ2`7ô IPkè““sÑ¹%‚×Õ“–³˜gÜpÔ`$äJ<uÜêhi†AŽêÉ3MÝºF¯±Ì~+Eaxwï¥0Jfåæ%ó’åƒ§.yÕNE—2S:qÌÎÈÊiwüMóíe2&ƒ“DˆÛ°µZÓ?ÜÍvm­25îÛËéMþ¯éÏã‡ý¾òG·á‹™ò:ò8Š}ºçíÜƒ³?ºoÖ"êE‚CxœmSAkA¦HÕl…ö Ê;ˆ¶­­MñRÅ®HKHB=¸=Lv_’¡Óuf¶6RÈÑ«°WÁß E‚xóê¿ðîA}/›&mÒ…ÝÙ÷æ{ß¼÷¾7ßïÿ|ðñÞbŠÆJë0q>ž`òåaiîn=h4«ÍV°ß
ýà`¸ÔÎŸÏ}½ñl
í|¥»úÐÄ$†ýƒ=„	†ˆüö|u0q†E\Èa§[1žÈ·áMè‡¾ˆœÔÉ‹­bÝ†3âpazpé0‹¯B.þŠ Ç¡—š_ËÍ·–f’[¿ùgqÊ™?½õw09´×$æ­6šPñ^÷¤Bp¦NƒAg$€ëIÜ—L6B¤g´RhÀö„RàÄBœ™t!5:Bkùw›â`œó¤¢ËÇÇ"‰ÃÇ«ÐbÂi:»#QÅeh‹1ŒÎ;*CÖfä“ŽÐ}h ˆ¡F|»Â‰2Ö‰¶’¶/)9<u@Œ#Ð`„mÈ£¨Ç¨H$ £(3œÊ+ìiC¥ RY°ˆ<œ¦†j‚uBU ™bÄð&-Ù$c½Â~7 >‘ `]Ã<—ùSÉ–T£µÝÞ
u>ðVëuïªÆ…J×LÃH©¥t$ZÐÎ:bÓKñÐîó¦•ï‘Û0 5ßfh-¡f÷G6²Ò™I¸±cq­3Yäpt¦µJ…ÇpY4Þª^I +©pÆ¬Q;ñÅð°£Ì
¾“45†Õá#[Ú	5lR“®ë-·jµ.‰7y^ò³ÒæÌ¸Ÿ+Uæf/Áo¯º4}Có­…³È³ÈJcgþäÎçÿÏ‚fç,ƒkxœ…RÛJAFd5…¨ ˆâ¿ÐŠ
A	¢¢ÒÕFm;¿:°în;³BÑEû =APxÕUà«tD³+¤V°sõ3ÿwšé/<Ï?ÎNneËFB5®^è(ëêk&™:>9*+rµVÞÛßmlï–{¥È[tcÈeÝl"CÕáÄ­Ú ”€¡·,¤‡EÐ½i®(ürE¦dks0ŸQR‚+!Kaäæ4#ÇûrÞLì|1Äô6öy˜øºsZÖŠü®D¶V‡|¢†Ü¦è"ð6†¼›ƒßQÓ´l‹ºhÀ@(Q–²ÐhSÂ@µ[NqÉ £Då¦Ý1 å˜£iÈüMZ~Û¦t©†ÊŠv)P\å”qª1à&X¶éRâG’"ƒ÷¯äsGŸ×T£ø‡¡ï¿þ7P÷*ÉbH‰½ûd!VtòÏXMÝ…±ÞS…ß¬h:#¹½\úév÷Êã|xœ[+=Ux‚sb^âFM>FG?Ç]÷Í®Œ[™%€¢º9ùé
1º
Á©y)
~a¾©
@%“MY=’1 Ù˜´ ›”Ô²ÌäT;…èÝ|›´Ü;…šÉ\b“-ÙŒ¤‹+ssSKŠ2“üsS‹“Æ$'§OîbËÌË®69™]‘dòbö¿þé:@ctÓ‹òKŠ¹ô‚‚L¸‚RKJ‹òJ2Rr2‹KòÓ@Q€¨Q(Ï,ÉÈ/-KçÁ­ )ÌÌKßœÎ%Ï6|)·:SëäSÜ* OþÇ­1¹‰W à½T©ç{ž?xœuUOoE—/=X¸…Ñ¢^ÞŒ#²±(jâ6¸ùcR‡&ª2»;ÞìÎX3³N,UÊG@ê\8!HœÚ¯Ä'à;p	x3³ënÜÖkæÍïý¿·?>«ýt^û-©]N¨ÒJ«§yíd}AfþþäÞÇE4ê °E5ì|º#/K‘ÁÞƒ]
1²ˆ6êkí‰ùãè†ùåöW`ÁêÞÆóýöÛ—á1š©¾Å‹ÍíÍëï£iø*°@éTzöUá¡™è[¯ ”XürÏÈiŸ8°?–ðžË¬Âj¡@"Íw
þèÙ„–Z¬j·P•„'4H©×žßJÝæb³¶yóIÿM`¹.ÚtEhþÚ¼¶ê£h’ë`,dF´sà¥²€‹2óOÿÙÃ»B‚>¦Õ@Â¦”/ƒ¢<ÂO3ºØ4gŒC$²Œð¸QÇ?˜H1e1UÎœ¤*Oµùõî`K1Ñ”–y¤sI!#3-oœÆ€æ§ Æºùs«·"ÊÃY£n-¢ùD’¼+Æµ×!hÄ$L)øÌ HH’óñ˜ÊÂ•¡Ÿýn¾ÙŽÏF6/YÈ©ÈÆÚqÏjB#6fèÇŽØ
3aABêæØýr£ ¦TJLßiÆtL0}˜’4wqe(—9ÂÙÀc9ì¥¡VÎç—Ê$ÂTDß•miù¢Î	sçÑ`¸y°óhÐ_2íý÷ê•ñ^¼{õE˜àFVÌxb3oðoÉ–qõ£ dÛ£…]pîÇL*lžHXDÒ"˜BcÓÙoš‡—.AŸo¼À%ër{—œ²,Ç˜ó,ÄÌÑxÿDÈXµv÷ú‡Kó:+l”ò90v@[`?(Öéë‹3½Aó­—³ÒúÿzÃÝá ï­ƒ/?¿SõióÌ(6†3•Ö ;ªlIbŠmÂ)·µ² Ê¤ô©Š$›h!•­ü•
o-m)®½„êæløÎá}{‚Ê}Üº¿³JêÊ85{‰×,É:Ç8Ž`Â¸'ÞvÑ¦qa=¸(Šs¯*Ç’´‡å¸–£Z<ú‘]‡Œ¥)S=Ç.Ë×ªû7¯¿bßXg~¨GÈ0¿&ÂO]ARlèÍÖ¹½¥km<.;Á·Jðâ*äsrøŸ„Œ9sòtæ·†¥4Ž½jw‹ã&Þ‰ËÎ<üâç·Š€*Í,J],W®¨iZVF=9Ú»¹ðk#¸m×b‡wÍùa{{a“&9É¨š´Úõ¤µ‚ng¾apÞ*X•Îi·Óé˜ÚÑîà•þ æV÷ºPýàuí{ÁAoíéùÑãÚÿé‡£“î3†qxœ}’=oÔ@†eJ#UD¡A‘Bƒeh¹ .]>Ž ñÑ@„ÖöúnÅzwµ»¾‹¥Ô4)WWP¤¢EºŸBIÁ¯ @4Œ×ärR,Y¶ÇóÎ<óÎž
¾Oƒ¯Ãà–Ò¬$ºŽ3«yœ5³ÁñæRÔýÚÚw9h ŽB xAE,§Â²¢†çmt¥°ZrN5t1÷>hj+-ða*n ÆX]e¤Q¸‘(§·ÝôÉÇÎRŸ„–›°Îm'§c–Ñõ¡íÀ›XúP!uI¬€ûýôŽ‹»ßŽ6øÏ¤–™<&Ë²Á;
•–cT°#z‘²å¦pÝÖöO·×[ÀÉÞÊµ(tz÷¶S
Šhƒ‰iík`Á¡&%HÝ|F¡&H«¢Àî%©¡É×LXX‰ÅsYYïœÍÞ\ÜéþJÐw?vïÞUÈkJr’rêï®½1RY&LçmcOÛÚD²ð)³P0Êsã×å/ì+a±ò\jÜëÁ—‡ÿ¶ˆ;ðûû[¬Ý êñ­ G­ÌÝ<¬.Ÿó1.é7}–ûÄ,XÓŒ¯:<7}îôÜ¥fžœÅIkè{!'"
ÛYÒŽ —FxÔÀ¼º
âxqø(\ƒæ\­êÏ>ž ýR*{àO‚fxœ…SÏkA&Ò‹ÑÜ)¶òŠÐzH²"x±ih
M›b½Tz)&;³Ù¡³;Û™Ù¤BŽž¼tðæ ˆPÏ^ÿ¼{÷äÕ7³ùÑBÅ\væmÞ÷}ïûÞþ|Wúö¾ô©_ºÉi-$š™‹ÓÒ°9¿žoî³Ô*e 8`)…‡û:”¥†G#wÃ²ç\ûfóûñ¬§°¤	«Â¬S6à![í›u8ªq_âÔ_Ï 6ùw—ÓK/^y¾kG5é!¢Ä¾m-—û±õë¶“át
”qñaëäÆíË<¶Ù^¹sMÚ+ãˆ3AAg,äxÔ`b¼˜32ò•É u€N}>`i&¬s­—Ú†±ÔðªFÀTBaSPLçÂ %†Àu¬÷#›LLRjÈNr"\³‰d@Dnï¶],mß*Ù?ís{¸ûy™]Úm<0/7S²¯H‚t&W©/)2mTbÅKéñ”¨Ñ3ûeg<:À¸<³ÇŽÌM–›Z$UBÌFÑ >!N»ECq+å‡àZàz	ÿìl¡¤¬i£Î=û{k±Ó1Î-Tß#=1=B­Ä™JƒQ®XhpŠêÐg–B®yÚ/<J®Þ2»¾{ÿuK «)1‚d	Á¤ÆÁi·ÎÎÄÃÔ<ŒÃ1“Œ(Íf.öò(bªîŒ{úŸ‰Ï¼/]ßßMn»8îò¸Àòñ"(Ò“˜";%I&8z\rEèXýªVÊW2Å¥"Å¤‚³:¼D¼H
!‡Î¡‘‡1Œ{ÂS){\¿’…*nÐêùI²ÌxqÅFàQÉ¼;Y<cUhø×ÎÖ&V+e¢½ÊôÚ±ª¸æ0:@Ò3íG`MŒNù
Ë]HÜ¸x›€òA³Rn‚ûG.ŠšýºÓZÀ/s{bò¢]ØûñV	´)çV„NxœTÏkA&‘•-zQ‘W‹­‡lb{*4Æ¶ÖhªbK/"2»;I“™ufvCPþÂàAèàAPèYÄ‹GQ<yéAÞ|³Ùü*ñÇ’°;û¾yïû¾÷fßíå^ïå^5rG¹òBªµå:åáÊ|¿¼Ù,Às Ø¦<„Úî…jH¹fõ.Ô…-¦4ˆ:ÔH›ªˆC ˆf‚Ãák³JiÜ­´ŒKšIñÎñ¦â–ÂÍÃÕ·C¥"m—a¾¥WBš°€Î7ô
Üñ<>¨é±ð’sÅÂ4ø<ãoî¦*¦^˜H’Žç3Nd×îô3ðÉ©hóríô`Þ¬“6)¹›ô!œ¢[A Úm‚ÖÚ$E‚›è&9ºŽù²þ±ç:Õz	šD’@S	}7€)h°„ò|."¤å…IwJÅô5ˆ(%Ã”ëØºétó p£ì0…¹4tX«1>ÛlØZa½t5l²Umßø-ÜwŒIWÄXr ‚ˆ4šÑTù±„˜>„€pð)ˆ„JÉBtËu:L7S˜ÂJÙB©•Kæçúìþ§+;8´YcMáê…Ó&À<¯@ï6Õ’Ñ¤¯‚fv$à?º3™ÚÔf°5
°ÓDßñ'éƒ˜I”3 ¥ýYk*r”,Ó›õ¹o‘M	¬Þ/`–+9ßˆÊ¬3Ló¢ræÆ-É¸îé€×ëXD¤ŠX`{@ÝãBCD¤uÚïŽÊã”5$ic‘'æ}¥|
Jx¸ú5ÒsVBMþÚ‡eºX1Þ˜>z(9“c!#wç–Ì|µÖ~DŠˆ/ò¤M/Úƒ¹è:s`W0À-déo8tôÍAõ¬I6›×È9~ÈÓoW÷R\ÿ"äOn1_«OÍ·›®y¶áµ såÚ®™Y=o~m3ÑúŒ[ŸIÄÕìª„Jxœ}VÍoE—!bä"„€†òñšÒ$Žü‘ô (IÓ&-qR§¡‚HBwÇö¨ë™egv—"sá€¸1' qâÊÄ• ¸–ÿ ‚wÞÛ±½¶±Š“ñÌûøýÞûÍÛüôUîÓÓÜ÷­ÜÂ/ËS™;ÙHWöáµº[\»~á©}Öá:džýöúŸn·¿y¾˜À}(—.}•uÈ=ÑÞ–éAÄºå†,êÙ6_ÌÚ‡Ûì›ÏÍ E¹©"Óþø¥w˜,Gœù¬prÞ¡£Ó§·Îåìj-ÙS´ð?…|©Dø\ƒisˆ¸ŽCpzÿÆ/ÏhÅž‰#nÃÚìL!î±ŸÕ–ìµÙþhDZÑW`·™Æò”4‘
ŽÃPEFƒ0ç€ X‹w¸4à±5D L/‹F–O¶í‚—(²ÌÂ÷]üˆ#Dé( iDs,V–tÄ-™A‘‘;UDÉ	í1/RZŸF–Ûa˜q´ÕžôaeçåÙwù‡1×f¼
¥-ÕÎ÷3 YM‘âfˆ‘¸TØc˜×æ>5UÛ
´Ñ?¥dÐKf¶ÈÉ îÈ>ïrbÀ$‚J„È}¥r¥72Û±^˜Ì*P#OCy;¬B…Èn Í‰KHOE÷LÐ«òëÕpƒ~û>ý±×¾ÛpÀUÂ£h¤?§þac¼T©œa$g¢©Þ¹Äþºsñ™©+CåïïJ`¾/È”j²HÙ‚»Ru%`Ë_—º"À;aÆû,@o‘µr}ÊÚ($´ù	F1m`Ú›b¬©Ãú0ÌdÔs;„ûÜä=%ØGÓˆ8OË€­ì`'Ð¥7LßfÀe"™‚©	à\Ó’ÙŸw„Û½	™‡{ÖygÃ—õ*.+ö“Ýßš;ÌµgD+b©N;=£(q³‰ª ”¾Ða€š ó´Ø…¼CHbÓ½tÀì×õýgij¨ú<©Ê¤Ã—¥½Z_¶wn½ñ˜ðÉÀÍÉ·^zýË(£|ùK@ß!5¼Xß;šÒ€n«.i`m¤ƒ6KøO´)äÇTK—Ú¹¦­³ LOð	\ÓÆ‰Ý¨¿jÿØš=<À4¬·!Sb
i!ÑÃD†J¦É`ÀW\ËùKo]YysÍ¤œ 9"úB>ë”0ö÷½ç­WÿÜ•ðßúÅáK]Á7Êÿ‚kÀ|Ë¬Û;{_¶Aw—îñf€Ñ%Ê9á8dz*Nç@—á0§BcRì>3Œ6Ž°6â•‡o!ï¡œ¼S1±î€fÅ~S¿}åÌÒfï@|«Ñöqà8å3,eŸJégºMs¸úòÖ	Q|”¿›°R•¤¢/ä'n7CzŽj îršº$ß pš%Ò û±‡3@ó‚0îØmîKù™çñÐÝ&›0¦e¤âV›`‰—`ÝS>ßX¸¿°^MW¥B/%¡”gÒ*Á**•pRü·ÇÌÐk”»?ÌçjŽ •SÊœýâÖÕ~u	¶EÀW)rÅƒ¥j!ºA±Ïa>0kñIÚ§J›43u¬/Ô™'x£ðpx”Ê¥$úr‘V,jy%ðÚ,‚¥%ü’ù²ÁK-Z4R$r¨Å=®š‹®q{Šºx´–¹=r
Kø¹
cnýÑIÃ¦ÈÆÞÐ‹4¿ß;¸¹»¼½»÷öþ;%Ê^‚Az\‹Åéƒy	+ñÂ™6ç¤¾Ça._
‚“Þ—s%ºLe¡ƒâÚøÏÊÈaÜ÷ÇíY—qëc¼"¯Ù`«t
·_ÉýT#˜5ä5‰OxœSÍjAfÀ\FsQK”˜E'DdCtwY‘e³		†O=3µ“†ù³»gã‚èÉH©àÁG„}/‚øâÅkž Öì¨!°.ž¦§êû¾úªºúõÄùúÎù9ƒ™Fz©ñbe¬gÑ$v7g%èçƒn{F<áÀ¦!ô÷·Úú2A“Ë ¡ÇP(¡¹ŒŽ›—ŽZËÌÑø¬@cïðÁ:5ü5ElA²ÃW„»QÏI¶éÍÃ÷ë3joÔ1Ù„¥Ø6B© —"Û€§ž§å¡ç«Tê1¼ Ï§ÏÍËG­s´Ðú>ØE«ŽÐ€=Àÿ2C%ì©W…J‹ÂÍu6Ra%EÍ¶Z-˜æs²‚²a-‹ú7I¸Ëø|êüWOG	®Öè|gí~Õ<×ŸãÃX]CHä˜K—ö:5èegq[¸gÓ¹Ô†eüñ´E6i™L‡šk•ZN©”=j”¡ôcî/Ó‰´iá–úÒ¹q½2%ã€þ+a³J{¥¼–ã­5ºùÈ'ÑÝ¿=Ç¹_‡,ÁTcÃ¬°ôêñ­ÉÞ§¶Sš™Zü½÷gc¾õÕÕY›w:Iº2¸FãwOEyæM”IªéãvÿÞ|u8³QÓ%+ÄÉî[:y"&A×ù~»-¤ä4‚jxœuSÑjAeÁVäQ©¢p¥˜¦â6­/Uƒš¤6BÚÒQdv÷îftwf™™úä”ÁO}P>ø"ý
}Ä/ÐÙÙ¥A‡e™™sï¹çžË|yí|ã|ˆœ32!b–9‡wíNÿ¾÷¨™o”óÜz v‘ðp„°;êîìAŽ¤$Bý¾ú¤ó©È<î^^c$A™]ÜiÄªÍ$‘jÃ!¸æožÖkú¸³4{×½â¬üÍ¡à	VÔpB}4Ç ôB/‹È<¤jŒÌ¯ˆòÇD_¡¨×Ê„&Ü†–9´Ø$ÁõÕëÀ8•^Ìýðïh¶¡ßöº¥%½óç@ ÊÃ (Îxhô_ë·.‚T"óˆi)ÒDySË~kÉ*ä%xYÁ‰•oÀÏý¯µÊ}këê…ÿº§?.í 'h+ÃB^¸Ñ	2È3Ö`oL%˜§ŠrFb;E»r©’ 3ßG)­œ Ó|ÀœYžÂÆòÍ›m	>I‰GcªŽ(JP¼¢JŸÐ —c*åJ…;g1‘lJÄjRÃ ™¢á´bêq¦ccOÑ«;]ÍûAx`H²XÙÈ$š+–õƒ°\§ž”³bî‘¸òL/n­èWƒý{3û5øæœ-Aýã~ZLýùö¨ÀõÉö“âjs¸¼hßÆ³ÙãáOç¾´èƒxœ{2“qÓ$ÆéŒÌ‰y‰›s«í@ŒÉoìýÀ´½ƒ(³£ŸãäH‡û`¾­£´@¾‚ZN‰uZn‰Zz‰µBÂä³ŽÒ“:·r,®ÌÍM-)ÊLVðKÌM-.HLNUpLNN-.VÈÉOW(HLOUH+ÊÏUHÌSðóMUHI-ËLNååšüØ©„,’œ‘X”˜\’Z¤0¹ÖYœEÏF¿`²€·òä×Î’ ‡lætiedLŸ<ÇU‘-½(¿´ xr¯»Œ£¥–”å)”d¤*äd—(ä§) µ(@Ô)”g–dä—–€¥óàÎ)ÌÌKß|Ñý#Ø§K<õ¸ôs2íx¹lôKs€v‹Nî÷²{^ÚKo²®“ÎæãÞ²Œ ø—k½ë.Åhxœ…ÑJ1…YŠ®LuÕ-ŠøW»z¡³*x§HËZº‚ÕavÄˆfv2n0“IFY(í+ò"ñ¾¯àµ>‡×ÍÌX·lE¯&“üçœÿ|7³·?§ÆIc,»n[Kæ¶qòkñm©âù;_?ù‡È­·ü]tý±tóæ Pr¡Ix4$\Ó¨^1uÁµŒ	u;¸’èTrûQ)Ó€­Fi™¶í¥©¼_}´F¹7ÊÍQäÃfH.h›lÁrlFBÆXoÁ70wƒÓf ¼QUÖ«ŸüŸY™ã2Læ¡Å¤—NÌ÷ò•Ù
Þ,•}º ;öOŠ3‰cs?´4ŽjN­Ù€¹}¯µ³¿×œ3¿‡¯xžƒÜÆ²Å€ÜNcŽ\IpˆFœšß„u§Õ¡
D¢©àpI+"òUŠ2`U]QžP%,T@¹Ðçù(Qù2þgÇÈ‘Óµ'â\Îú¯YÎÙS„3ê…Ü<T>Ì<ÃV¬b…_ÄÄÄ£3æ¤²KXýK"[ŠÈÄ2ÌoŸXiYÒY©ª„á‚ß9—¼×pÑúê˜R¥Š^ÜgõYÀó½Á«Ê†á£_þ –œ"êJ‚Bxœ…SAkA&hµY=ŠH¡ðÀRD“T‹P‘¶P´‡P­Ðº^vf³ƒ»3Û™ÙÄ”BîzöæÙ?PŠèÁƒÁ¿áðê›Ùnj¡Å’Ù7û¾ï{ß÷òëöÇùOsMÁÚr˜n û<lo¿~¹»¹wò¬ñõJkzav¹d@·ºŒK+â±{¢²…ÂØryfí`áiGïÀ*ãCñuØÛV[‡#Bª_é	¶æ‹o¸äC
Vã¬ü<3×ÈÊï3[7§S”çÉÜµ/IÝº 9èììÂã`/bÁS&ç‘ £›pÕ ‚kP±¯œN.v Ã@¹lAMùÏë£Dô¨Ç[@èVAŸð$hnŠÔC‹0iêÊÍÑR“MP‚ÒÀ
L]‹uÂ†˜œIìfùíúIù{v¿\>gf–ÇÍbyÈ½Â\«ÆŒˆl¡¥/i±ºˆ¨âEô…D=~Z6&g(°Dy,Ñ™?ô^©Âæ…Û±ÒÚµª	ÖiÌÞi†‹‚î‚ëË€\ÚÙ‰Eù³yë•Éƒ®u6‘ø>öÓ1 ô‘9CÑù •¥y˜Ð<²4	#eä0—P!•M™bS—þÌn÷6R²T¢¥ˆo¬
Èp#”Ö!·¬Î8Ê ¶²°Q9jÃ§6ö‹8æšxœw+ÿùÈ[Óó½éôåæ	Í¼çâòð5«¨Ã¾¢4ù{Ìò”{´%x^›IÔ¨ÚÒsÑÒVa5n*Þ9CÀ±Ä*MÕÈyUcLÈ2SD	>%ò¸~)+UÂÒ-óüE<·ž®Z:jU'Kä¼„÷ïmùï ñúä…µÜŽ?q	¹ê‹Ðúß Áà³š¤²Ûå#lîasþ*ýã6‹å£ðƒt™ªàL„,xœ•TMkA&hJ;‚'E_Z,"Ù­-‚Ò ØˆE%+ìŠÌîÌ&ƒÉÌvf6!(äæÅ‹º g/"ÅŸàÑ‹?Æ³ïîvÓ­¦ŠC&ï3Ï×ÌäÝÕOWÞ_^”ÆaÜ„æË©-u<ßÙi{¼£;µ¯çž—3ðð¸dÐyö„Ã.ãÒŠh‘Ò@a ŒA‡¹‰i8ˆZ¡$ì …±E´±:	m¢yºRßnIãü~Ô…&ã#òìûŽïÈ’ÌwÛnJ#XÞ 	ÅâI?Ô/¥‡õó+ùMÇ¾Iõ$Ç'€Ú~z¸¸L†¶`P~«wš§ÍÏô@œ6Ïæ˜7éµ…SØÀö9„}ªih¹†"=1â²‘ý›7îü)ÿTœkà†!•Œ¢È¤
wé±0Hda,Hð{F•õ%XfWÓŠç,K*|UÚ˜¨¸äÌ_wá!BªcÓ¨R¢ƒJ8¨×Z0¬Õm?‡”:v‹dÄ51I.|Ÿ–§Ñ€³¸]n“.·ZðQ‘C”è¿ZŸ¥ÌË…Œ}š%{ÚÇþð£ùA"4æ(q¿FÆÉq<n*e\ ¢‚9Ømwoà=*¢U®×q¢=-ä=›“à‚$ŠPÉ*4ÌTb3gÞÌ:Ú“ÊBLuVt0X«ž¦Ã£·‹Ëµ»x‘#doþu:ñœAN*[ÛúH®Ogo6¿!GC~+&›d²ÌCÈÍ³õ7Ìœ#Ý$n$ˆ‹MIð_ûØDú˜|fg*œ~–-”yY¼÷uÿ4T¶¤ê‚ZòÁ*þµWSqqõ5ä¢Pì#ƒlxœuQÍJÃ@¦JÅ&¼ùC£B/MR-¥ ØBÁ‹¥Øâ)—%™Ú`²[v·ÅƒÐ³7aßÂ›>Ã›nÒÖÔROÃÎ|óýì¼”¾¶Ÿ÷7‰”ÄØôõÀÌÜ^Ï½¸òìö[=÷¾~:Ÿ	ðlè" }{0m%1Š!ñÑŽrÄ©.bI¯ì(’‡ÂæÙT=å»–Ï¨ä,Š‹æ¹/yäÙQ(¤Õ‚GÍîÃbOU6Z9@ ã3¹°Ïâ˜h3}Æ!A9‡Hý¤2ì‡È­ÙVHï@²¿øDX2oÙâªQp'½®äMÈf	ËŽáÜ\N§c,'iYI¸ÿ¢ëµ.ÔD"Í‡„¹`­¶Ê™zš(3(SM³¤>Í#wéNóüå™ŠŠ»êÃ<,ÿK@5Àq5ùùÐæ)?ÔÒéªî‹{ê{«òãbÇÕïÒ€šhxœ­WÍo[EW$(R@ ”idÔ
Dl‡
„”Ú¡­ÝòÑRZ„„ÌfßøyÛ}»Ý}v,!½âxÜ8!õ†„àÈ¡Îˆ+ÎÜ™Ý}¯qÛ8"$>Øowggæ7ó{3ã¿¾]ùíÞÊOéÊ™YÂÛSÛÏÚŒ;1eÛa6?›•ý­åÇÕ?ï¼_.=C{m ®ì#/Âµ["Ü`‰ô-T‰6ð‰_eL%ë`ÐFÑ-¤[[íuó-ÿˆiø­~¼xÏ{x¸ÖêóK/¼]¸¼pí±6sýsÒ]PþQ~uÇju.u ­áíêÏK¿ÜÙ&Ü¤v>Á©à©˜¢òŽ±Ø#n{|R§³é"sµÿ6h“Í˜A¨ÝZ­­Öø«Þ=S•—Ÿúâ&	zw¢µà`ÎËÐ¡aÁ‡……ˆÑd…u°‡Nò		s/[»û*îoB—]5ÍpãµÆPz“,ÃLH	ZÉ9Ì´¹KOB¼jÁy®*%$=FFh°³¶úqÈív¦æ É&=ÄB%8
“Æ^çº"}œÔZqÙX4†´p`T3;ÕW_®þ¸úD—ÏTÏøÓ!(1‹!=nÐzñ±Ô.œ7x©ÜE"c°Àièa¶SÞëÒã:hø>þÐ!uàºVä_°ØháLùØ‰	ŽÈàDæƒÓhyvˆcFaòi‹¦:Õ×Ã÷Ê†£†®£š#âÎÈsgD)f£hm„û¹d*Ð¥µµÝpèR}vêèâÝÏ»!Ý…ëÑÓ+w{ÝÉyÿÎ$Õg—Ï–ŽíIÜ“šßmùÍ°SH´ý“²µ¶jÝ\b¿•1“
Õ–8v›¬púÔ;F¤“z‹¤g"q“~ë³´{Âö[+´´æ(¥Í§ô[-à%mä,IÂÆ›Á®%ÔZÞ"%Ð]ºI)eIx0q	LŠTõ[ÞÉLë•Ó¹Êz]7yH´<Lvˆ–‘Ç`ÅÝh¢{`rO'óÛÉ¶{9pÉ,E4„—6¬3Z¥[WTé(c×ŠlM¯[ïúÚF–’ãëõ5Ce Ç0ž5ê x‰L[ÿÞqÚƒòüF8X× âq",‘eŽIgÑ“:'{CÏ¼g
vtQÃ-OŒ×¿k`…â±øå¡`Bfìf&õ»i‘k•Ø‡A•§…j0çÒ·«B¹ã$²<Y„ÂƒbîÇN²¤ƒ€æ¼0æ˜Y+ÿÀWKÖ›’sJDJBâ%ðh†*¬)”òEš@y°»»C¢%ÕÚ˜áÈNë»@\åø©Z.}g§X‘Ê‰‹˜Mù8T6ö]ûÔ‘´L·v¥v§[‚¬×ø8W©ûí¡ÛT¥Æ¥ÑÙi—?3Òdá#Eîæ<?"å±€ñ¨™EÍŽ4‰h.˜™ ¶²ìí¤tûÊð(ÐòDHãôu’¬•èâlí;Ç‘ ê.R@vÂb×‘Áq$Ú\[½Aúi–‚m&$çõ…ñnÁÏç:kÓP»Á¥êû‹ÏU÷¯>ù`öû}øéÎ‹tntJ“1ÊÇÿ3›Õ7;Ûë¯€„aéŸ†ùÂ´\ý½sÅÏ¢¿þ÷2‚aï¼ˆCxœµVK‹\E¦AAÛéE$ˆANÆdœ‘™~ÄGdÒÓd2=;$óÈ$ƒ «oÕí[äÞ[ªºÝi:þ1‚.Ü¹A.Á¥¿Á,ÅM~žªºýrÚèÆ^tß®{žß9ç;õã…ï¿,|Ý)<ö×‘$\ûa¡ß˜ü5Ï_¾vyüÖJE ¸­- Ç$@R
ù{!—IŸH<!V.ë•®yxpÒ|uðŒùýò'Ã±±z…%XŠõ%Êz<`K}	Þ][S±ÐöØ>¸Ã`MÁôÉ{.ŒcT&æ"uêþqd€€?»5:ügí.§ÎB[½Ö%Rs:2Ó†y/Ìo›?7CH
i/a°3‚a+†&<u(!Z¥¢…¬+ES¦@G$SY¬•ùhkex\;×® ›Å^GÄ¢Þ#1§cìKE>DDA›±¨è§± ”QW,TÏëåÔ%Â¯{N@»,à!JÅq--îe¸…qFBiHÈ ‹Y ]ì³%Ÿ²nMFMÊîÛR-E3i“e–·¶ÊÛ» %I·UQJ‘ÀðÑƒOk|fácW1®ý­F”¥®ª³‹½¡U›SEHèL"dc?x¶{t³¶(Í¸iåW~¶z BAÍñõ)ƒLJ–êx ì>2ÍÓÎ$Ç1XB©Øf@™f‹‹Øºð-"ãúÝI‡œÅÔûcÐ¢hÞVok©H‰FðµÌêÎPcä)åÑh™§³v± ÐJC!âñL©Ã°^î
3éÐðC`‡dZXá€Ä˜™&w™+¸¯…5î§pú"Ô(3•9aÉîe\²QãtcLÙ©Xë= vsÀ”*C+Â@dî2™b\¿SÉ{6`€ÙKEÖ‰V­($4äT?µ†Ê,þ¤TE*­"\çiv°®¡ZÄkEldëõŠy¸õ‚áûjð2° P7¥”®1QªbgÔ}U+>íŠ³n~Ú?c^mžºÓ
gr@øR¡ç…Þçq)óØH–ˆs#F(f=A”@RðÚ'Óm~¾0b$Ÿ9µ}þÄ1î2GÛ0Ì)`Ó¬c‡b0¾›”ÔœAòJ»‰FWà	ÅùQÌ'tŠú\G³­Õr"Í\¶Çœ56%­5‚ÇÔD¦°AþÆ/Ý˜¶i§6À¯;µ—úœêhc±V­ž_ÄQ–$a‹m!)“æý«Oµ˜Ç­·ž>"qÆÌŸ××‹MòÔ‘ƒùáÚÕBÕ†Í‰7ŸdÎ£šJq2:íÁñÑ±Ô†–=š¹†¯qÞÒŒš_ZojÖáðs8vÄ·¾cJ×ŠeD­Q¯hÚ(™?Z…IãÚñ•wÇó9ûV·é½f¶½ÑQ7ý›QKLißñm´9ñÂ“„QŽØ¶±D6íìM‹åÑ“±¼‚‹öíbuÍ|,¦Ù÷¥b«és.:7ˆ¼ûd[9™^Ùi[®uYøÙÍºÈÅ˜
ìîì•7­ :8iâ½3ç°Å:Åufydc1¢1Wº¶ˆ§“;Šyq{iaúcnoŸÎà¹‡3Ó;³jý«Éö+)n2‚Vc†V‡@ºÝû¢3ËÂN¨g'É§>ô¹+¨F«3–<SëÙ;FâŠÍ	nÙ}×p7¸¸2eJØH[%ÑeÒ­Ï 7ì}|sï]HŒçN»t!1žÎàçŠÝ{>€sp›„? ,S¼‘­CuÅÇ?	¿BcœLszçuóÝÞ;ËS›“ÒÓdö-*¯²¹½cyr•¶‹Ç¯ Èï¼5ß_/à&º³€—:¢›×[›‡†\©?‡Ú£i3÷šëfé€àïióñÞ‚ùæÀü
!PëÏŠxœXÍG×"ÙcFŠpâŠ"¯w¥™ñn‚´kë]g3ìz?‡\YÕt×Ì”Ò]ÕîªÞõDHm	Nœ}Äq)²ð	ñðpÆ7Ä!§8å½WÕ3ëulÙžîªzß¿÷Qý÷¿.|ñÏ…'“…oê4æOõÂô.=Ÿÿhw,ë¶[Œ±ÜWlï£‚…âT¢Ýºs;)žl·øíÿ°E'îÜñ]¶Ùuwdql×ÙÏº]Åcaˆ®ˆÛÊÈ6ÁºŠ•+Ågß{+òÁ‡òLÄÊ8óV'ÒÁ']#?tpˆ¯_ñèÍ®!ÓF:
¿%KÃüHdDà·<0¿€®'Òï—ÛÒoÓnìØÇ÷˜¹wÜ½š
#,®¦¬Ð¯¿2Òi èqÉÊXèÌµ.YXÖX,þ·ñìU…½Ò™ÅîçsÎNx
ÛV¤Lsr«Ó)D.„·)
&¤À6üç‚L€$ ŠvËñaKâÑ»/·Õi,V–;L§Œ³*ˆÌ9—NççŽ«Õå^»Õ‘„Š¹Çj5–§BuH%:¢•Muá-SÚ2“%‰Nm»5"“­Tc¦Ghœ•Añ´R&Š¥þÖÉæàh·÷ÁÞJËV˜P|‰TŠñ(j·*ý;“Q„¾ðìEØc 0’ƒ~¡4DìiQÇŠ´Ý’¡PVŽ$¨gÆæÈÆ$"À¥Û	QÜDh¢Þe†N¬ÔjÝ@XÚ­Se[y4ò˜ÕÌï§".µ"†4¶“ÜG£
^íàÅYCo²>#žEÄxÎÂþªƒ‹8‹’ë0³,€B fëS‘¾‘Ê8×†`äí,¾½y+ßÓVx]²X¤2€àŽFòÓê¹é ÅL<âq‰Ê•+ÎRµ[5Ò:0{ûØeÀ-`Æ€X‘K \ÐÀ[»vr5e3ÈhÚáTí±ÁŒ+‘o$ßùÁ»«ï¯g€ùtŒx¥:f6GVÙÐLq#v6‘ÁuÝEáFåœãÛ­ZÉJLMÛc[šÒ„²É„FjxëSq+O´2™´[Cn ŸÎéÒçahª3ðc‡~Ñ™¦âTSv(÷Ür¤äàýLIeQÙÐÉ)Þ_Ê÷Ø€ûŒ‹t’ê1”!4žY†ðDÀQ‚Ê‚ÝÛÝ9::Ø8‚ÀéÀF BJuÒÚ º:p–%ÞA›€Hå-úLü\él<é¸Ø£ÌvkVh–„ Údjp•Õ‚8CÕ®ö”\Óv«ˆ¶o\uj¡Òâ7Û¯H)RJœ5xa:N¥‘PB:L:iëŒD»×uDZ°L÷ŠÿÞ,rø÷ïíáå²%O_{~÷,NX~<W%<³R»FaBÄ1J¤ì¥¾N2èéÙìüT–Wž(%]ßhæëŽJFK™ª.3¯ÂLY?"WÊè>÷Oúû›ƒÝ“þÖrqzx«ÕhóûÞlÏŒdðî½?Œ¬9c@VVvºDÇC²™$ _æ@f­o,BÉK§h€½I´
My¶fcÊú’ƒ§¤r/¹ô]^Në¾\Å”mj5Šd`}]év‡ÕäÂx:†äU¶W³ÚrN'Vz4_ÝÅÿÃBËŠ_~ç[çpÕõáE#¹í½ÃëŒÛà¡~Ù‘ÐpªÁ¼2ƒêZÉÊ³=v µl‡lÂ 9¬ÔÍ•¸s•;FúL[s‚Â9)eƒ§‘ hÕøõ²t…;Ê¼Gk^Ý.©ÐpjÃyÅ¯¯_©ç=ð×ÕÆ@è3)ÈRÁîSÁ;4r˜0v6”
FªZW/ÍDg@ Þh:ÁP‰.;ë¨¨gl>Mp¨9Qö:Ó†°¹EÄ6¡ÞMÌ”ªu§f”Š1O¡]ƒ²!¤Ä†¶Þ¸×!' ù@AËM4‚`_¯×|LDµ
‡¼Ô}aƒåÞ,‚Ÿý¿,¼³§/0T{xÅ—{ÛÅ?vÖóŸ¢[Øn(kl£i8–; 'Ð°MB´MéV<
“žå#ë§\'Ö7ZX„îŒÝÀ{ $C	9/‡äOEŠ-	p‰b´‚ˆùggç`vpE*k@EN‹0ßn9ùg4‡²9]ón`¯C»˜‰#n…üŠdg§øÛîz¾ÙdþRn‚i¢IƒÑ=øË(V "3ùÃ)6¶ì¾N4Åê1íaFßØß¼ôÞ³ÇÅûE¼·vùn6é)Dð_û»WêfXãFEvBµˆY_9üãó®Gäva¼&rž=þÝê³Ç¿§ôH*²‹²AOjÎë5ÁÌ¹§À”+3‚.‡N)™q×4F25Ðõåx•oja
nR]J#B	žºj	
®xkFö
æ_§aÃ¼MK#þ"ý^ªu\®î¬ +ÕÃsí|xŠÏ>|#/k]«»¢i0­iLŠº°¹ºöuQ¼Pÿ§qÿO7.ô,l^fYD–/>]e€j­äÔKS¼K¿|ðòï!Å¥ï?7_.Wß0ÕJ–>°ÏoEð0—)~Î,ñð",•mˆcÉ/GyuÜ×…QîÅ4ÊÿyðÏÉ|‘¨šø…Êï®Vx•4YÐýCÑ0ÅiÒhmÍ+» ¼,ô—×æ0†óæBZ¬¼}‰>Ïÿ=¼ñQŸn'œ¹6®…ø›Í(‹|×î±pñÇz;{m$†›vÝ#ˆZºD×rÿ'H]ÝïË‘]Æ4ŽZÃ*6Y÷ì3ž*ÿéJ,Ô®Z"Ï[íÙ/D€¢kç?'¼½²_ŽöÕ­ßs#T7Åbèo5NÀ½âáÑŸoú~î6@eµáõ×³V¬ï]s›Ÿ€Š'Ç7?Ž$¦0æ±gU_¡WÝ@ÜèYÍÁxÐŸk ä•yÉlî[ã*,à¨‡¿PïP¯“§¼¹ðHþï&cxœuR1K1å¦Òƒ‚ÔEåÓJ¼kµƒ‚µµ¥àP« ·KÛƒ\R’´:ÕÙÁ!àæà?Púœÿ…SA'½^m¯VÌ¾ä{ß{//ïÏÆ×ñP7¢H)„6“]Ï8Ë‡¥~Û.FØ1 	s`ÿhÀàòˆl"L,Dµó7Ù¢*3·ÒÍ¼> ÓšîÆÆÆ‹§ºWŒ¬cÎ”à”!sIª²X	jSW*+YWY¸ Ãßs½[zíHP¬í‘(sÏC¾È1³ßÖ¼í:ÄkõK¦ÜšK„õsY‡_ý}Nàµ˜* Í *S¾A½àlè^ùÉ¨êû™¨?b0O_V–§&õëÇÊÒìÿ¶õ‚ãª¯ ° ’4‘@*“:2`D$¬àyFvçú]G¨«ˆ@Tßâ•Dq"¾¡ûcSâù¸ã¶S$en1„gá¿H;¤îG±`3X=Ïôƒó7ýAwJV÷Ä™3¾òááJ€Ô#xœS]kÔ@¥ˆ_+µ(‚—"Å‡d[mDº‹/ëv¡Ý.»KAÈ4¹Ù$3éÌd—‚²AÈïðAÄ€‚ÁS¼“d·­_ÂdæÎ9çž{æ›ûãÞ‡·&˜¢Q'^"ÇŸž8KË£ö^{¿=¼ö½½ƒÎç—K_®/TïÁ€~8NPƒÑüv¥6¾×Üpf0[œ±1B¤d
L@ïp!Ä	°x~õÑX ûÙ°S·àïùžÌM–fÄlîØoÞ‘ Y_¿_ü¼vâ’sŒq6whU•Œ¡\o<ìŸ“+þS/ý†)9á!êâØY-¾ßü:³7´Qy`r…0åIG\€bS8â‚K$UÊøQWŠäÄö8å&†ßÛ™.LcÄÀ5¤ÄÈŒ$oÖNc¸kýQ÷ 7\sý¾C·áNe‰;+zË«³WL°ÁÈíœ‚d¡šM¨m#K†A»Æ­«P/ó—j‡°ít#Ðh,ËS)Œ’I‚3:f„°¬tÅÄøÏK=
3……áb\ÖsaP	–¹T2*w
ÈP»cxZ0­eP"Î C¢öh0};Ê@¦ÖHk(M/@­1¤vÄ	–¨M÷<x©ß¡	ih^Nž…V…‰	Äê½hWH™eµ[t:c¾Ç²¦Ý­:ËŸÕª3xÄƒªw[Kç¨M%í%œŠ†¶Çdï3wËÝ®e—2ê°ÐŠ4Î1tÁ4cÙˆå‰	Kr´E[.h.(Åg”Û°“ò¶BžeRqz7lÍåþkldÜâ¿µïw½A)+Þ¯<n]|Ø°AhCLRÜü#÷ÍË NW:¿ £¨›øá „xœeQ=K1¦È)ÍÐIñEÅ¡ö:‰“U¬P(\½v’¹¶¹¹KÂ]*GW!Ð?á$ÅÙÙÁÍàŸpßÜÕ*v	yò¼Ïo^Þç–óm!”-ýX=mr…ªã´<»qèâYwF¹ç™íÉ„Šx6¸TÅŒÞÐ|¨"	$™b‚ë¢U!fÞKZZ‹+a"+{£awnQžÀ]ýh-é{kW¿XÖšè+ÙGa âÈW(‰T&`îúÃ*¦ÒVGG³ç¹Ó‰g	ç=ûO$)»MØ!­+
¦}"i‡!Ó…”@½vìm•qîDçäIKŒ½¦jeäØ·I(ôŽ©ØŠ÷ ãA	â5n@ènÉ ëDpsØfÜø€ñàðp ‚ÓMÈ|:>‡6…~‚•ú XDõW>ú·yèú
Ifû—éò‡¤ü÷/ÞÈzþ—ü$gß "¯ºè¡¦exœVAoE–O$¦­¨”J´ÒT¢i#l§AƒÒ*MMc;‰“ŠD5Þ}¶‡îÎnwfí¸B²ÿ€9!qâ†ªŠžüÎ8sæÂ â½Ù]{í¤¾¬wæ½ï½yï{ßì/?~QxÙ/\|.U%‚0ˆtåy A½
£í3«æŸO>;X\d•R‘1v:0Æ¥Ë\¡B™ n-{lm]®9S:ŠGP*n­‡æåÞóí§ß5˜å·ÖÁßf«ž®»0¬öu}^©Hîƒ
¹áÞ¡íÖIÓî}Å*’¥æÅÎ{›,ÿCO¥9‚{]nÝíœ£bÓ%r­.ºº µÍÍG;ã‚Ñ4,ºtò.×]àTƒtÁ%K0ÁÎÊÕE‹O ¸Gá¹Cˆº2’AmÑ ˆuëJ/ˆ|®mz÷›ÇYzË-˜×;L”m"u5¹ä}ðAjlª›í¾O	= ÃRÑZfÛ;Žd
4Ó4‚hžAÄv³Cç7Ê¥¢!È÷]!û1(‹-$DV¢„AHÌ¥{Lˆ‚…BžhŒ'£¹¢±e§ÌìB–·5ñ,tqÐƒB»§5¶Ž/ërèÃíµ2¥ËÙ”€¬ëÎSf­/Ÿ1—k˜ØÍI;(U¶Áæg )‰Çï&ó’Æ	Ï£,]p*&Žy%s…¯B2*tÐÃâbË‘#>VUœ§í­uW·i¶ìÓ\<)šÉñ5ó×^wy6í7.Ÿ7IæÉ›œ (—0
†‚¢ÏŽ,\†Ô±»ió«¬Ñc2ÐSërÂ„Œss¾˜0¹æ
7;j¬ kçÐ©}B©Ü"r	»ÈJ&)î\Û#x‹\3<¼¹œL8?ýÒ¼Ð*žûö1"Ø"ÝþÝ,]Ò#ŠÚ…¾H¨˜•®.»ùš–æ„‚@?$Pû]Ì	áh?!’Q"¥J³yXÊ·3;'&{7ÍU[$Jü&¼*{(ƒ‘dCîá&î9^ìBí•Ûø±pe_ 9Ç$·\èñØÓkæukÏüú°þö®ê1ëP(»öó~}¥á‡žp„öÆ¬SŠ™íÓ¬¯ìž¾q¿ð‘ñ[µ÷<T©üòÇ´\¼c&3,¯Uç¸ËÚÒ›åðu©Ýëy{’¬üÙÞ/€Ù8¸¾”©ƒùûðêã£´X–8%ô¹Z“ªH•QI§lÇT¨‘âé4Rƒ
!E|+d
8iÐ4êò™1NFÜ.Ïˆ¶lÀ5
’v¬|&…Œx*Qü|ï©vØv/åùSÚôÒë€Ò«4¤O+!dr>» ¹ð2Î$a\H®ƒÄh¸röò°Í×'IÊÒú)óhŽcêé·¤7ÏªwÙ.|©™¾ÑìèÉºBòhlMª	¬òÙL2p‡Ëw3	aøÎ™>TÍ³£&¸ÊÄ¬â€ÇDy£¹<­¦ml&e-Ÿù†yJãS*öx.ÍâbT'ôæ.ïzæQ³_4¤½(½Ìñ¸RwL«S[]ü¶É]ôÑ²Aß›æeçFÝäO A0Êu„âR±²3Û;éñ´ÊÔ;ÍêÿEW=aÈ'æûãÖTO˜û BnSãˆSxœ¥UÍk\UgÀZ0Ñ4%(˜rÒÖØb&“i…J§j“¦É´II
R\Ü÷Þ™™§ïËwï›éH!âÂ­È]¹¶ ¸P‹âBpáRÿ-]»u!¢xÎûN?ÐwÏ=çüÎÇïœûýg•ß>¯|Ñ¯LXvXÑD{ˆ_Ž*£—ËýÇ+×o”ÎP¯U ‹žèMÅâìÚô]WxÖ	TzD8¶)‡udä(©õå¯÷A¼¾|vÆ“¶5ßW-¸uæÕb‰^Z™[¼U¯[B‰ºƒÞK|‘2uÊR69Ã& Æ&&ü•é¯B.*+Ë ÍD™¿2å.ä¢²²`˜(óW¦¼¹(SñmúI?
Í$Oæêašg¬<CÊƒˆjGêÂŠëE*m}oeöû£ºa{"³ØÐƒ+_íu#Ãµ•Øƒ7·VóntÒnËµ½¬'À¿¬-j€¥ÖÔªioag`KpÅŒ•È˜q•í{à÷JW·¨€±SN8Ö £¬UGè8ô^ä²U!B©ñ“Z€Ý.ªÝ³ÍÂ<DK‚­ô«¿ì%±’Q:êÅsÍ-	…‹Š¼KF&é!œ!—EJgÁ–œVê‚Êà{È±Hš#1–`a@L¶½>ÝÆéúAGÏý=ÙbQ­Z@p]Z’Ccë¡ß§Pâ2¡í©K@ÞÅžºBÕª­((º{ËóG^ù%(GŒÛÞ^ ?„«ìŸúFÔëQ¦ISjÕFùäÂò#Å€OúaÝÆ‘êÅµ‰gé~ûYýëÚTrmx³ƒ*´q˜ô¹‡"N‘}ñ¹Oå¦~nÊ	úOŠCµ£lã5ÿ¹¾T™9UÔŠ"ÉnÉf(œõw¯=7Qž»ûíù©ÊAM$ŽE÷ÚóåL÷++3^ÅÆå™L÷/OÆ9ÙúñbD©zÇf6?¹ZÚƒ˜nú‘§ôî¬þôêÓ•çõO«OéK×x´‹éææÅ£«(ÍÐôÆÆûG¯Daˆd°½±®—6[t×4šñùÛÍÖ‘®¢¥ŸØzo¦2–)aØŽ­l”¬xä…ïêìú±JÙâÁvCo®MèOÖNO>´2©.ÇÛ°”Ûé=> új“#ed>]‰œºÒ`¶ˆEÂÿ=G˜fxÛÄdI¾¹²\›Ît„×GØIYQ1ô‡¹j±õÔú3Wy6 œìQJÃ-†f1Ýmni)ñŠb8™º•6cMî_ÏŒ·[àYhúVÜöÿ©ßéÞ=uÍ"Ø½qyãRê ó¦_Ôoìn-—ßæ†…Ã†7tq	Š²3šðð3£ßiÌ­£bx¤ÅQàåKVþk¬æ?c\vß
á|
)cþx„%AÓd°ÃÁ¼æ_Â‡ýÏm,8ˆ¢ÈU–’•ŠÈù=wÐ	÷k×â•OKÙ ñ˜šlZò
fAˆIMFZ»‘ä')ž—Xµx©èŸw?šfq(uzú"[¡n¬Íê»—ŸÔßÜüàOÔÿ})êtˆxœ½UÝnE–j%ÓqÑ6ýqÉëÄEUHLIš¤nBJœÄBB%šÝ™õŽ4ÞÝîÌúGBê ÷<©ü¼ âñÜp…¸(gfwc§U€+|áÝ™9sÎ÷}óÙ¿~,ý9.tKå.SŽÏˆJ“ñÓÒðþÔXÿñéNu2dàTÊ °Í”Â^çsù’Ž?ûezçîmæK§÷ªB5}N«]Õ„oÀñajâ	|å846Ì¾é—ë7iÊ©ÃCÊ†va2,ÒA1lçÍ.}²öøºdÂnÁ'óT.a2gC;³:Yÿ@ßØxWû?•‘leøWl†9þêï4–›úD¤¬Q=2"d<ôDJB‡JYª$õ¬ZÜœ*	{šò„Ià
æÙpv×× MÂ.ƒÃQÌôÉæ¼¾ºùë¥WÊê™­¹¦ ËÆ[ß¿q1Oÿ¼}û×%Ö/Bûpª,§ ",¤0à*°¼¨×#!­CÇP‚8‰úœ2
2ˆRAí!ÛŸ‹ÛCØ°®VuæŒ€ß=ºõöYMégöæ6wVá0à|ÎæŽ™ÇñUÂ à^©	Q¦Q*ánª˜œGÔ	C
¡Á`‚NaR¢Èj¥üÉb|ÿ)ïƒ'ˆ”÷®+2~²SzSí_›˜#3|å\Kì—ŽZ e†®ÜÍµÖíñ·o–f_÷éC¨µ36>z#×è J(45ãÇ‚{ÄÌ*©_|Ñ¹ç®ì_½X4Q}ÿù×V²(V<
ñÀ„€˜$Â”˜¾Gº/ ]4“ÕwJ8¢tAŠaNÂ5Uó­²®gv®é•mG·¿l¶ªÎúx$Ó>5$öÒžËSd?e)“ÖõSŽZÖ¿µ÷æ¦¯†EÊú‹a¿Ç–L{/ëà`ñ™µa$D4àa×æ9ÕÌøl3Ô2“TÊ¼g„ãJŒ&ýCÀM}áëi”È5æ@ÚÌzÝ¤“^ÂÞcÖ:V‰Jù)þ…ÀG–ÀùÙQÇ¹»½Ó Ä†wA>KDŽŸIe¤8e€Àq-òˆ*Òš~ÉRÔàn.BÁ‘r2š°L%æ@ŠÄˆ‚m
4íÅ†Ù­ó™-=|
¸Û¸ƒß×;WæÌÅWDÛKÂvBÖÏ;êÖö[ú÷öJí?e5÷òÒ°a“›?´/ÿ¯N¤Ÿ)„—2ö»Äñ‹•A¥<9üæ?>8F;.I2ûý.9Nª:®Âu^”þ÷÷‰ôíL†5xœTMkAe/F¼(EÀõ²³MÁìFƒ“`	1<Hg¦f¦¡§{ìîÙe!\½:àMÿ€•ˆ?ÂƒÿÁÿàÅ‹XÝÙOÜSwMÕ{¯^Uï“Ê—×•I¥fQ`†V÷¡’]é-O‡Êïw7žLE ¨U`‡î»h€Áîð;¬)cƒuÉ-g#pé9Kb­2`¶ö6"ìòËã{ŸãZY¹ZW…ÍÄ\`§.ì’;Ô»‡(FÊã•kÁ³ H_‚5ñù|ºÓ˜”­ûŸ’	ÑòÿTÓ5‚\«.ÐÔª6EÐh-©ÎX]„tÆòãƒŸ±CE Ç…€.A³pÉˆ8V:cÚ˜-+)úí(Õ¦µjL8*·\Iè¥<LÈH³J÷Ëo«oª¾®Ý¸|–…e{V”d‚U¬	1ÈF:ëRGV5Ë¯[õ™“¯¶o^:ÃñòÎöìÑz­¾Õ€PI«•¨Á¤ŒC–{œ_õÝ	ð»ås¥å2ñu\ZÔ’	r•ÒAÅ>: :r\d¥Yžy¦13F…§$Iä#Íc7àPeÎIç(Í4Dc0jŽË¨§P /£¾æÎèËMN*Ûn]q“+òÈ)³)á¹f¼yç#o^ÄÜl.¸pÀ4²Î Hs9¯¥“oryÌÃÓ¸\òâE†t4a	N‚%MØ¸d÷íÆ|c¡IjÇÊ½„ÁÒÐ‰$a1jx–cV]&tIó0\ÒŠxÇx´q}ãv£Ès¥IMynçÝü¿çéŒ=òçô&š´måË§›‹Ó*-z^-ÙÍp¦6¿ógñÅýëåÛÝ™²½W;y¿¿QùêY¯Sí"„xœ]Q½JAä¢‰DìlT¾ÆˆàFûÄèÅ„xTü©DÂ&·9W/»ÇÝ&l|ƒ-ÅÞBØÁFÂ§°÷ö’˜³Øbf˜Ù™Ï;ãíÖxvŒds<ì‹žg\þ üÞÜÍŽr¹(€"|J:$ E¥Ã¾Ò© œÉ~qAÞo½Tc¶üi ãŠœM:´A2ŽÈÁ	Bnàm„l“×Öä  bÔi:%Í9é›æŠ²ð¶ðÚ5¹ßÂ"2·ÄÐÊa@È/ó}&ž¬×/n'¦ÇŽËZe)K Í2,x¤AmƒÖ€7¡j•äzeYþ”^Õ›œÐÂ3•§fÇE‚Yž¿>$„ºè« ÌHÁ!¯Ja!ru?«š88@îë²5]§û]-da¹]àŒ@TÆðd3¨h*³‚M´ˆ¼Øyú7ØXà0A8RM/mZÇc»?X‹É‘Öû°nŒ_*‹Å€æO€©gxœ¥R]kA¥h-‚>UQÐK©MEû˜DJŒµ`>lJE\ÉÎM:°»³ÎÌ¦Ä}õQØgü	"úî?óÎf³Ù¢ /Ù;7sæœ{îùq÷ëöç[UEÌfæ“À|Û­lTÛƒƒöÑÉk×év¿?Ùøy)Y¹®C9,º°M0ÀÐ€':q0’Êp,&±Â=O!3¸ÇÑGƒÐ	y¬Xè!*G¤‚Þi—Þ4º
M¬BM_ûF»÷ë•zº»yçÙ‚ÍÍD¸ãchpœ
[ðÆu\GF¨˜2l6Š²H­„e'ýµy#½~åj´XÁ®#x³Q:Ì!Ê½èip_ž£j6–õâC©µŠˆ£¨@dõC©•^Þj$Ø¿ºjÎþì,œs–ÝRø.FmCá
ØÇÑO2¶·‚“ëÐAÇž‡š–"Æ²_ÜÚ}‰sb9K”5h¿ì@ûé«‡V´a"\€,×|0ÁéWŒ*jém\BDTSäéÇ­/Éð9ìô'GýÞp§R*«{mÕ`m*õã!ìW–êÉÆÇR¤f4ËÆ³*•ô}T„èä$y’E<æ<kÓ“s2?FÐz4œg	-Á4ëÊ‹fÒø>Ï‚^°®„Ér&Dº&}9ådÚ€“ÐR22÷ñ#	Ú|NXK„4±Áâ±)­0wŠ’–Øµ•®d77eMÖs}]ù?òîýEŸ•—Õ›·{ð="Ÿˆ”œRÂ8ÌÐ¿é§kÎoœè²µìR€¿lxœ½TMoÓ@UNHAi9 J‘"†)‚8z@P•Ò–R5¥©UÄmí‰»’½kv×	‘=rEZ	ñ¸ƒZ®ˆÞ¹ð#8rãŠÄØÄÎ¸áƒí™õ›73ïÉ?Ž
ßß>ø…’Ë"ærÓuB?4‡ªÐ¹;œ²?ëCpJE x‚Âƒì B&˜!
®)òÀHz-îÇ
g]…Ìà¬‡„¯UáÅŠ	aMÉ8Ò lílÑY£« ÐÄJhzê80ºf_Ýû4Ã½..]¨¢b†K±P	Ì¼ŒzQÅ7óð	CiûmyêNÆÿÔq¨»d‡{)¼fxƒy{iyúö œšqÙA•¢ó(0”NÈFÐq Ó(CÇðWÚ6VÐšÌ>&«Bð°Íi>o£¨‚&‰4°¨T*Ž“));^£¡ÃÍÁ~ú™Âç1jƒ^©˜o’ú½]=ã^tìº¨INÞJqüc®a%eïS–Š~Â9@Y…•íUX¹¿{=ñ–a\ÜÊ`9pî¼ÅQQJcÂu©HöAÕFÏ¯ÍØ«kïíçæ{zýõ©ÌÛõËçò†\d—¯õ&ï!PØ’*$ú½n:QÒ—’A@C½21â˜/3çÇ¹Ì.m”oì° FÐº4›$EÛiVŽîŒfì›+“£Ö¢!¦Æ¸Ñ~]‡ÖCdÚ€æ¾HX-mî&ìq’´Ç‘[†Ì`~0âÒ&ýdõ¶òÇGöb}frÄ·yk'X=mmSþ‡Î<ûk÷Ýô–|ÁÂ( "‘’m2Ž]45û±Y&S”5Ë…ß×pÌc½}xœ­U[oÚ0~ŽÅy•š¨Ý¥šTª6´¢µ”ªÛTõÁ$b5±©mh+íÇïØ!¡<ìay _ŽÏ÷‹?ËM…ÉebK“<âkïôˆ~ŒM.®G,¡É½SÀW”¨¹Eà0¹»F¸½šÁtö±ÙïÉÍt6žù“þôýµÁ;7ÐrÃ}âþµËá@ò
Ïá$Æ~á}]ápà~ý!õøEQcW(cå“$çOÒ›IðÃŽ‘YÏÍ«é˜eÌŠŠgÃûMDî­
h¦]‡˜i´ÃAø÷¦šYÇTHƒÚ:AìËhöùÇxz;¾™4ùs)le{Îž}HPf*Ç|—ü•ÆÄ\Óš«PŠq”²ÛA£Y—–rì7„¶@M'„´d.$ÐÜUÜ‚Î
.—¥+nYì€Î&§ý“Óþ 0€-ƒœ[~ÞYˆ…V¸!ž1Ë…Ä<°Ò*cV˜‰…4]åAi˜+[¤ìg;.¦Pë2‡9Bã¸qR}Ã(ºµØñB«* úÄ{íòò¸Ìýæ.9;O¬Î“±Ê¥ó™ÒåmEŽÒ
ûrròãÄ—ÿœº€Ú&ß'4Íd±òó˜ÕÉ­	‡‚ì§æ9³nú:H»€¶\Rv#3ôKoñêÈºäüXi±’—ì È¸”Êº’Ð–H”SÆn|¿6ž5¸ßgû÷›–¢	@-:Ð¾²Ï…ÈŠ}Æ®·‰¦XØ§ðœŠçŠS'.1±i”`‹Þ
‡~KƒºkóVÔh)‹ÚÎWæÑ»®ÕÃ{îH‹s|éï®ã÷5/C|¨=ªÆP|”·µ¡U†‚;,z,Ae-¨=r`³]ñÿbKÍB€½ó XbféÒ]^_|^.©YlQ9ï„’ÂT#æ%Â†—k$ÐH§Néµ˜]^$ï>žA/Y=bÑ»zùý§¾ÓÇqWA¸ïGïzÔ¹¾ðœ.CÅËN¬® uqS/@*‰Ž
‹VZm„“,š®]µàJìNº
Ç¡Žƒ>w•bÛ’oäÈ)…ZÛ ¬n&,Úvq>¬±<úuq=½µ^Í‰‚Ñ¯V%zŠï¶Oñ”º}ý³LÌ5i°Èþ¹}èè…Wxœ]P=NÃ0VRI„ÄÀP!1|t	H˜¿ªíÒ©P@E,ˆÁ_“ÖicS©bâQÄÄ18 à
Ü;¤Cñâ÷=?ïùgëÍóÕ|B,Œ(Œ³z¶¿½WÔÌŒ5‹i†ŽÃà‘¢”Yÿøl…à¹;•jÔj*>¡6ð£¾çe_µs×4hšÅ´lÂ+ŽmÔLYñLY­ã)”ÀñòÍJý +›'¸á­¦-J‰ÀÈ?*»'ÅØrÜ*RÛ-æ|,z÷W„»Ë>nú]Hå(ùkµ–Ÿ®í<1Ra"HÀÙ·Á!¸Ð&II^‚R9·ïAJ†KE"ðU¡–iî/–áúy ÚÐ½ÛžCO)”Cùy½þ]9*§n4üKÙŽ×µ¦&Á€Pü8‰ü½zñ¾ÿ‰îè¢ìYxœ}VKoEVBœ°cû‚8D(Hå˜Àî²ë²"dKQbcK–‰_PÆ²zgzwZžéw÷Ìz“ ½æ‘æ .\ádYâÎÏ€À_ ÕÝ³ï.Ùž™êz|UõU½÷ÛÚÛn±°É/—æoÌí?õ›‡W7~ÏÊŠnÝ}ÿ$T¥$(žÌmï±Ðorå·àQHsÐmxá7sx~ï”‡BúM•Ò€µYpb[å¡$]|aœÈÞ‰Wü1÷añãÜg‹FÃo¶…¨“Þ³‚(KGJBÒŠ©u±WšÝ¹Í+¼E¯.oÿ}³¸¬¨>ì·AGÁµqL%¨,M…Ô
†ê€nI‡&”kHJZ,fº„‡°v±[^Àt&Ó0ù¤WIu&¹²b¢'Öî/¾¯TúJË,ÀSŠ‡DCYªÐ<I…42H¡Æ°)À2Ló?]ñVŽv¼•gÏ¼a¡Pò6¼#zžQ¥Ç´ï”ØŠ~åîŠ© sÕU“äBÑšA‹éØp¡þä$f!÷,È‘¦¡%œv©O8bÈ™bßbºëèâãæÉu}§
±Zi)!=`\S™b"%œ$1Ýa<RÒ@Ç½bÉã}‡LäTJìk†£ß êíª%y$RqÕõ²æ™ì-Ë¼Ï„!3v¦F)‘Šñ~Î¸èrÀîÆ¡j8øÎ;tYC˜%éLT’vŒ’pýu‰qˆèëˆ
U‚·×0÷›{ôÄ ”˜'ÑÔÔÛ—`Ðª7ÀÐbºÌÃ„09|ÎäZÑ®~ò*7èq…O¥èH’L´Îq™ÕÊÚml³‰2•ÆØds>^@“=™l–‹[ü9ÿà·w`—Î*ÏºÆ‹³Vü2ÿð&ÆÎ”–è-ƒyƒië3Šƒ…7þDÃU$ºŒw¦ 7 "9½–?j'Xv>ãÕY¨_ÏÆ2ƒ€ïÄžñNyŠÍÆÎ¶p&ˆç×«Ïseoƒ”$C› !Tq¿œk›`®&‹Q#™¶C9v­0Ü#à¿ò=¿øyáíœ+ÝÆâÒ:Oípá®7ølƒQ.~XL‹7§cŒÈ‘è9ÅÓ™Ý]‚{Úô +cs
‰&F@puE˜Ï°òfÝHGtK?Ò-³F@Å_óŸ<ü¿º}™ðCcNN­›S›Îx™÷Ým W{zA’Ik@´Pxš!‘šx‚ºlcvFÝÂ5¼cÇ¹>Ž³Ê\|Èúnì¦™0ŸMÝŠL§™y”"ëDKiÃ³¤xmÿ6pÛX||fB³Ý¿4Ñ³³ˆ¶w€ÂAJŽþXƒuÿ¸¿Z‡]ÓÍ©Ò¢R õUÏ[F>ÆYHáQÌxva»ƒ‡ÑöØ‰Ò!“Bœ-”;©‡¬EÖ0^5Dv‚‘}¨×ñ-¯y¯<(¯Œ+Ö1»É(à/{IE»êÚãZŒµ“­¡ÕÔ!Ôñ÷+˜¶‚znyÆ´omñû[5›­úüøéþáéîþÁÎá7ºel|®ÕjÃhƒËíQXwÞì•JL±]½ÏÕK
›ð`9Ž/|Êï7 ‹ÚÜ6âÚöæHÿÿ˜¥Žâ‘ú ÞÚ–÷á~ñïâçÿ«œvåˆ\xœ[m°Aa‚WrnJqj‰nf^ÊFIF>g_—`×]O? ±YŸq+³%B‰nfŠn^±BŒ®Bpj^Š‚_˜oª‚§¾¿‚s~nn"P 8µDÁ3/%µ (›šW2ù‹sŒšÞd5Vyˆ)1 c€çÇ¤)Ø¤¤–e&§ÚM^ÈªÁÊ¥ “ûXÅ'W²êM~Ï:Aé›ëØr˜'¿æÞ¾9”W‰ÅüÉiü7ÐDìäÑD&ˆˆIä)r)+ä•å¦* JÖ	ôN^$¡Ee²œ°(¦A“=…+&Ih ÷zqOì€•{xœkÝÌøfã†tF®äÜ”âÔÝÌ¼”ÍiŒµvHüÉì¹†Rúþ
Îù¹¹‰y)
Á©%
žy)©©@"¯d²»ƒ›/—~ÁäD'‰ÉSfr#4ëNÖu”™Üí¨;ù£Ø$'–É	Ž:›o;ê3Êzâ6’—k2—³£Âf-çD–Éj“y½~nöQdF1ÙÄÿ8
ÿ·¿
?1Pd²n Š˜e@Àdõ Fu±!<“O‰cˆZ8ù(ïfë/F _Þo!±˜xœ­XÛnÛ8}÷Wò°MYvš^°S ›¸m€Æ1"c·EÕZ¢$n%R!©¤ûí;¼È±l§ö¢Y¼Ì™Ñs•gñè^ˆwsÍ˜.é	ð»ŠöQ/Ú³FBžÀ×÷—Ÿ¯Æ'@lû|U”B¡u}2Üßß‡©HæB|…Ì:Í_(º*ÞÀâ} œJ¢Þ…HþÀùð9ú‘^”T”jwŠ“ZBÃÈ£·È*9ÕƒwËá‚hyx<8>¼¾<nG®oHy“?¯¨o´C‘hdBÝëûDxÞûÆ</™*Lw/œ}„œ4Žûç×Ó/pp„®ì(õ?ÞÉEìÿêeQ^ÀÍ§ DE¡R“9+™^€ÒM–=¡§õ²(~±æM®Â”Îáv+¼¾}óöxu¦X«0ç'2)Øu[%—"Ë0½ÃßûÃ—ƒJåÃáðè84cO)£óÃ0‡0Upvñ!¹í…´tªí}ö¤©¨†”f¤)5dBVDkÆó't‘2Eæ%–ã¢.('š	ÞyÑû»Qše,±£pHRÓšþÀ›€’f*"sÆAðrñ¼’Ê'MÃÕÙåÎ¯'³ñdÑììfÁÇñÍ^<•›ÈÔìÙÕø ·¤1ˆûQžáŽ"VÕ˜Žs3–ˆª"< –âŽ¥$U¸HÊ!E_&×Óè2ÂªV5æ3ëÅÙ¥Ž-rœÝÀ(¥w,¡ïàkÜû*-çätdÞÁ?è:ßúÖƒG.k9/Eò]Žx9û¦@g?‡Õ® ªœ#Þ‰òæ
ÚæÓ’ULÓ4îKªåÂÚ–;Lp#'˜‰†3÷I’P¥¬]¶Ã®–Œgâþtä\¤5,Û{ÙËÖ^:û),Û;ì%Íâ¾&ùéŸð×ÙKh›;Ìéš&>UHµH>é7°lïÀ"uíCÁ§e(ÚæÞ¡´@ªEò¡œÁ²½O(Qß-‚yp,Ûÿ/c¢–`>ž+xèØ—2‰¯´¨ééÈÜý\c[…á`5àÝÙFà»·5òóéˆr,„¶éÞÃZ/ži2æ¸âbß\Ng—×G³¢Ë1À4Š¦0_€Æ±B(K¼–£R¢	dRTÈ½„„JH#üæ¨¥È‘µK°O+TK
U©,\Ñ¤Ñ(£(3ÈòN¶Æ¿….Þkª¡¶é´·Á]Á*uõÂ›^õÞ¼B:bHšJdL*ý¸?´/Á·Ð[°ÁnÞÏ¹ÉJfMð ˆù2ƒÆŸIoª9µÞ" ZQ’îå:.;dt¸pGJi4z·Ÿ.sG¥ÇÌiÖ€ù)à¸5+In—ad—¤ìÉ­LÏ¸ÛÐ66è¬GJ¡±bÍÊ]r·£ÍsÆh™Â½ÄÍ¡…¡3ìÞîc……ƒ.	ïãCR<b<îbƒ¨ƒO{Ö7.-fTRŽ5£7³òSâº¼í±[“Mp‡¶®q[uöÏóu¯tÞ;2øØc‰yÃ]‚ß³Ç|4ÚÍP»t`%ZDÓ÷³p×% XS€m·¸û…¼.ÁŠFxôëÚì-Ü 8×ìDäH3Œë†¢ýq®döÔ”Ûsu{GÊ†Âœšê7m»UM0Åèz;¸ö‰&/ì=oÑY9w¡çcòÜƒ)çÖ°þ'€áQX|W…Jc¥T€çSnNðTªõ]¶.xÁŠÞ­çÁÕžAˆ¼Ñ Ã_ø	á¤êžé¢ƒ2¯‡Bæ2ƒmJPŽ0Oæ	y3ß÷¬,ãg>‚1@ê‰×JzÛ ²P+›&¿(uZŠ²DÀÃäVABj÷UÌèFR¶+y°MÈ}Ž¼àºõµ3üçšÃ5º9þ|v5ý4ößô1ß
T/ÕÕüßÀÍ˜¢Ž,ÕË¾;fV‚j0K½ÿ D¹?rãnŠ0xœT]kAE¤U·©b„Â¥Ri5I[+Rc¢¶i¥Å~„ìR\ÁÉî$º™]g&­õƒ þqÿƒï"øü¾èÙÍg«óÝ™½÷Ü3÷œ;o~šþ|cì
Vÿ6=qnl£ºõôûs?ÎçÌæ1¸9°)÷pØÝß¡°Ÿl{a«E¸ŸAU[ðxjl¾“d¸õ*}zÈ<ú^¸97ÇI‹ÊˆxÔÍ1¿Tä’ùà="sH/-ø™©ˆPn®„ÞA©(ƒIR$$‹SRÀ»9/ls…e‚Z’âyiÅ¿Æ–ããÙY	Æëa©˜<“ÐºKŒþ9þ8~a2¾r1ÏåW)¯PžD‘Fqp‘ Ø0¼yêÉúß‘\“z&µ¯^‚Îp{Á´”Q	ªIqE‚©cëfCCQ4aÑ"Š…jÇ¨ño€OÒ¢Šè…{+oåíM˜Ù«8[{»öŒ•¯T¬!…:e²òUîY»Ý8ØZ‡¶Ô”‘”®)PÝèÁž"bv@ÃÔÖQ‰xðŠø¾ RŽ"”6ÛW¶K®ÝªQ¡{„æ‘ ÁÄÞ…©k5^™øz­'zvPóøEf¶ãÓ:ãL·ÒPpl‹A-|ŠÔæ
ó­@A þýŸ·œwÖS–ó¡€oëTz‚Ewô·åôK¥ºZv
P¡¢ž‘/¶2™Îª—Ö‡çMÊAR¥°”…Ê0‰ª#ZDýÆ%
€‰Zô…#4…#¤UIZšxÃó^Ëž@²·Tc­ŒVYÌB®…‘’9êw‹=òåÍgˆO\ï”µ‹Ý4ÀNyå¤ ‡×µ35¹F›»ÚH³–Î”E¢(@iM¯ú¹OÏ”,h
ÊÑ½ijÞA‡É–â/™å=#Úã0 é#šÜ‡#¦šõU¸Q£"A3ÙñÔå[åâmhyp6üØ™¼ßù+ÎP½¡ô_J¥á +ß1ãµOÓM½ãÃÆ›KáËv:lkÆmv’
iÌml¯ÙÎüpùòÉzé%˜N±ÓD×Õ<\WC{¥	x~_V¢Š·}zs†ÝcÇ·¯>ÿ¾®Cè4…DxœuRÝjA&–lÒ5h±x,¥Ì†ŠTš”Ú†°IÈ†Òµ0™=Ù,ÙìÄ™I%"ñÊ»ê<…—R|_Á{ßÀpf0•º°ììùû~Î|\ùôà|9÷–‡wÈŠo`§òG­Z»ê9j«Qu/6Rß
ó5à9àbì‰¡~x€$ašT×ÒÏ–’€7+÷z-Øòñ4¤XQÒ›êkº¬N¬måXeõÙÚ×ï’úe­`î9öÏñ‘Px¯áü×ö|RýL?V)ëéõùØAú‰ÚÉ¬¨{™Gú»¶½%$ã$Ð4$	<‡ö‘*É´]¸2÷FÊº£pq©rÊ†C¢•‡Æ}J ÀI °D,)‰ 1:¦`Ã[/Ù%÷%¬6šíZ£î®ªzö¹:Ï6sóÆ]L,¨ßÙýC#»hTÛ¥–›¶‹Rê#ìUwv¡Ê"p|3F!Ã8Ð”bÉY!ÝiX¢gšòËTÔÃÅå¦o©ÛÙ½ûÕ—/yQ1¸.(Ì¯©/ùå›¯^¸íBÂ¿UµKÍ¦­ê™»gå+ý+þßÚ™v_û¦ùƒ!{!Ne¹Óh“ t0òAôµè"$íÚg"`D¸4c|æëáÌsÌô‰$0âL"•!‹Í‘¢Ú˜yÖæ2õ§8#RbÆb2D1"Í>é˜sŒe4îXLÀly„\wÍž5M¦‰Éžb¬clôUáFç~¸×í¦ƒ,xœuVÏkÜFÆ4þÑ…ØÐÚ?S‘˜”R¨’Ø>ìØx—ö²—‘4Ò+iÍh·2]zé¡PôÐÿ¢äÖké±Ðþ…^zî¡·Jß›í®åYšyó½_ß÷f¿Ý|³ûýÆOÖ^ï/üüNýß­õ;LS–…\ær$B^?Z|\û‹ßÝ™fým%®øþ=ŸÁ×Ðß¾óQÿ±›)×l¾U9µªÿYüü#²Úß³¶‘HœU3Kdû¸AÜß›bOíO¡µlðw–~©ß_~Š¼¿­ËK„žöHÌn~@ûê’(>í~ÌíßU)†¨R»qôNîª÷·]Ìæ¨þ}qc5ÌËþv^dfiLK·¦y”fEÓJýëòÆB\ÿ½ü|É,˜ÅÑÊ£ªÁçBszÀ!‘±X~"ƒ¡
LD‚‡à—f¿9¢¥ùLy(Š¢\¦æ›êb~E<o:öìÀ—"I P”EþV	!X‘h”²€Pfý­à•nŽSã?WâÊÃÐƒÎÎE>îôÐUV¤>:Q+…”³L¡[òÖøÇàŠçÓó™Â<F,)8Ù²DÄŒ…˜È‡<ÏxBÞ•‰q5!`ò	E_Á–à„û“F/_°kxˆ›ÞQgçü¼ÓßFjµiéM¹ûÌ%ÒÅwrE¶PQJìD‰WÍ…+çÃ5}+â1xm-4‡ƒ•Iþ8‚Lf|ÒV	‘!ß4Ö9ÇÆâ›%C·wxür^s¥åÍSVÁ©Y}Ï†Á=âJÆ®ËË×ß¼{çVýæöIåTf 0•–ÔÙ¥2Czã>´!pÛÒ)5J9’, ³¤žE2œ0,o|N%5Lç‘ÈOÈ‚˜CTÉÜ._öpM±eØË/Ny#¨€Q °µ‹®Ÿ²‡MY¿Tà	ŽOv`$V¦(žœ³°ú™&iæ¦¹Õ´ÎnžÌVbfä´+aømà§¡7A*£ÚÏH¡ÕÊlÊ³ÁÚTX|kª‚úÂRQÖo	úfÉÇ42©	M ìqw0ç¯
®4"£ŠÃuØ—Ë$áUn¥°Kæ‹DhÑ&½¦MUšA;3Pä„DyÅ5à¤c1O‰ÔLë\øÉÈ´ãp³Ð¤R! ËãÂO,„ªœ)
çi=Z|
¾@Í˜!Ãá°{êú€i1W2‡þ™³²°ûÉ5„¨2ÇñŸÆ7j½	QG'c2e%õËt[G¹ßH˜ÃÉ‹ç8E¹Èb"ÊÞƒD1ñ ¨Pè™Ú„—çØïî"X*ñ”DS™,Fê0ì$ÇžãÿZÊL„çýÎ©x¦ÑŠ.Š·Éè/ÄAï*äÌ0”ãŒÊƒ7'aÓL¿6Ðg¨1²¤p—l:Rœç+-Ý¾ù|;éfA*¼~µÜ•ÜÌOiHÍ]°ÅÃY<7UÇÔTæ,Šce+@·ÚéGÇi¡t?º¨:&(Š	Î¨Ìc1ÉêÌçtù$s¤Atq½ÚºsÝ›[æW½ŸôvN0z9ÄK’†Eë.Œq"i™£–›Å¨ÁúÇÕú·Õ{KG_auý×êýõ£“Ý^ëäš®­¬?È”˜°g3óäf×âB×¬„‚†È°ú‡µÿ RˆXæjˆkxœ”AkAÇµ…µ¶*‚PJûôP“ÐZÑP«biC=ÅÃdw6ÜÝYgf+©–|…ÂžýâA
üúü
¼
‚ofgã&*xÚ™ÿÌû½÷æ?³?6?o-Ïy<Jˆø°zæÄÜÎ^³µÝ>®žøxr5—)ôªÐ¡±$†ÝgM
;FÏ~žºg#3÷ô×åˆ*"Ù½o0bîDÈ¾Ï¯e¹£Å|©™/ùxyþÜÉ‹;6Ò"‚‰%~Vwjã@ðÔBD}–F mUÒè>QÄlÅØ5&yœ¯ôÓ  ” ±Ä Ø„Ü¢€`SöÖkÐfÁ¸HïñX	†ÈÒ%ØÀ¿¥ÒmÐ—)Û'!¼bj1‡ˆÉ¢îŠËÉ+¤
{’©çQ)ƒ4G½õqQB™ÄÔ£¨ò„I‰Va»\è6‹Ó}LX˜
j[Õ˜Âœ¾Ï|êÛÒ&çøDw§‡’CBEÀø±¦ä$:µÎ¸²×ê6öv;WœZ«åôª\öÉý
dßœKc§ÖîÀMçöÍ^µÏßÇÓ…RA?äÞã¥9Cn?²<Ü8ì#®WE„Þ‰OcU7ºåï¦QŸšÆÍ©i}ŠéË¿z@G ÁÉµéX±¾±y
Ó[Uõ\¶:8Ö|s|9ÝzâgÉÂ¥nùîç¤ÉIYÚdy†81%§–î­¸‚Š,'½*Në…lqmŠA4ö(tÉÀØÕ\QO1ô³k‰—:÷ÁÍXXî¿^’³wI)¦xÈÓ=æÝ¥4‹Ž4`ú°pÁ°È'õL]_1WzHñ.Œ†þ$P&ÎõìýYwK0åtïv_ý!•ž`‰é«{èXuë÷ŽlañÓy­Ý¸»QR¿,V–ŒZÒî,­­R"ð©“A‰¶9µç–‰Û˜ŽË²¥•¦¿\’$‘/ô¸|n¥xÛIbŒiâÒÿ¹Cê·ñ8±Æ[y†üwèx†æ°ELQ__'%F¼"»D)%Ê¼'ý;&Ón9y´WMc¦°Lóä,ññÓÛÀ?¡—ÄŠâ-Å¯H*®ÿÒEŽã·çŸÏÿ0‹àŠexœ­UÏoE–UÅ‚/´ úãi4ˆ8k·EÇv‰Ð;IUGAUhvçy=d½»š'B2ÿÃÜ‘8T¸ åÂ	‰WþîåÂÁÌ¬íØ­ÛXU|°fÞÌ÷Í·ïÍ|ïÉO¹~Ìýæ."gÝ“¯sjÙPýu§U´£c(ä è`LÄ°³¿°Ÿ­I¿Obºå€ÇŠ~òë0U<ì×`)’ëY€K¡\‡/…˜ôQ¤$À£U³Fíâ·Pˆa:òÐ;ùi°„Ë‚%ÁÅŠÈ'c¬€,ÒÈBÏ‚-¬$ƒXfGþÀT@#Õ…zQmÔ—=K9‹»‰EdÃ1(…Ù˜Áý[¿çhIÓ‚$¡º»ù±zÜ¨Ü²ÒNB4a«sj:âëÀô‚òo¾=‹+=ÌÖ†z¼õËÃÙ€Í;C²‡Àb‰!gò’®¤`Äò>‘,‰Á?Î;	eq”H†¥’˜‰zòé÷oÌ-–ús÷]ç´Rê«]¸¾3ÞÍMs¾=u¤MýöÙòåyÅ3\ªÒtÉ¥ŽÙ vJ9
a€—æÎà^™TÍ ÝAßGn>7JB(cÒéHF·ÕüÑ¼‘{uªšV´^3j»uU¥­ËCÊ!ˆˆUW?BËäÖòNÅN"Ôk$ŠÜ¼sÄ¨ìUÝR±øžžu¹NEÕõN‘ëy€Qd2£“\u‹.˜yª¿ÎÎo[Î ‰`Dò¡æ o87j÷zlÜþë±0®ºv¥‡£™LR·VIg¾Á­Õ™¬xi­âIúbðpzEÀYjnÎ4‹7Ròzn=OÍòÙØû6{eÕn½5ÜŒ¦Uø¼‡1”¦à¥¸ß&ôµ×šS¤‹r‰4ïè›on½w¤ŸÂ‘A™«šÝ»ìu,½³v³ôÑº˜¼ì4|k³çWòCg²I¯§Z$ŠÕsÊÐÍrñÌŠ]AŽ÷ZYŽÆ9Êç¥j±[4N°Q} c`=Í8©A8 œ‚¶ºsRZñ—º Ríð‘6ë£gë.zèÙå~)½emYØEŽ±vèùr½‰µx–ÐŽ´ªïZ®ú¢í—víÓ×¶ª™4Eöp´ÕSíR²)O$Ú—8î1jµ½rqÜ	¯îúw&O%úD,Æ§~ßöËÏåY„âuíÁEç´©ÿ¿2Ýe«OµgÓÖö	gÖù;Ú(l=J5±´G­¦nÍ£“¡`„Ë[ízgï}Ýrnäê‡»ðú³\•ZWš{=íÝH«×mŠt?èi%‰1Ý#u“5ÿ$En°zòwç¿Üÿa;Hôå7†nxœu’ÏkAÇ‰(”ÚE)_EÚ]›‚à!iìnšJ5Ñƒâdöe³dw'ÎLZ*/žëáÕ« 
¢PèÅ@¼ù7xè©—â¥gg’¢iµsØÙ}ó¾ó}ïóöh'õæKj7HM¬ËP£ó
¥@µ§Öó'"tpçÞüh œÉq ¨câKàÁãûƒs84–\ä0ÎÃl¤³>®…g…&§è;CŸÜu½
e¼2íxU:ð*s0²šŽã#ã°	Žÿl`ýgÑ¾›¡1ïÖÅÑXÎÍ“(LÑr!kvhZc¥…d:šï ïj07àÌãS^§JjÉ‘¶_½'ƒÞŸÙpÇÌ€	ôú (ÔÀ@²$@mˆDrA+¼«lB†Þ?ÊÒþ
§_Å˜+iÚ*mNŒ"Ý[¬<£Ûå­ó–½(BÊ'·:]ª£6WtVŠnZ¡ž‰/û¨t˜¦˜DKE(Áè"cÈÌ•6ýdÏoåm*?Ó÷ZšvK—èmè°WWS=›
õ!)h° ½êÕ7¬vî~Kÿ¥JJ×/ŸAœ~Öàu£c¸™.@õ‡í‡Í˜‚	F>¨ŽiZ­áÌô˜Ô°ù/-³ý Ï4ƒž¹Eb_9*e ÝœÏ-ôòöéÓReúÂp°nõJõn‰°Uq´Cå})1ÑÑ´újì¨{(&¶Ã6µ
óÉ¬ÇÐ×01qÑ:žûv‘/èªƒ=xœuVÝnE–+Z“¨¤?ji9M¢&»nMùi•’Ø	DJcGp=ÞµGÞÝ	;³6Ž"Y•ú HË Ü!"ñíu'àn@âŠsfw½¶ÓFQ<™9ç;ßœó3~òKé»g¥_ýÒ™*n$ÿ|z˜ìo^{Ý‘AÀB×‚ãHö…Ë“ÓÍ§ÉîÖÏË.ÓÌVâ„rÛ×ë´¸ÝÑëp
ö	ä;É_Û‹«×ìåÆÃ)ãäÏ­Ï×ÈØØ/Oøcc¦¶ÉãÃÞxŒcMzÀ¹#ëƒí?’5wÉ‘­‡Ç)7ZäŽGï ýÒ"š©cî¤WÀEnÖ‚|‡Ì®« %¯‚Ü Ù…]P]9°³´Òi?ÕnÎ¹ÑÐŽâ6fÃgš‡Î64m$ëõ×’¿ko]è ~\MnÔï¼B‡5søcýé(ÇDBsºËÁ—á0Ú¾tz
ˆ£ðw¡=4ç¹‹–óeú?à®ˆð"˜sJXú§{r¸øJø>ÄŠƒÒ®ð=p¹Çb_Ï—…Cƒ+ÃÛK÷ß¯~¼®sG`@ù?ûag£”ì7 ä$¬usÄ!Œƒ6âK/çª%èˆ…
£Và¨+à/ƒI¼\›)¼EŸù17ä!ûa¾è„0ºkø÷xr?#¡]Œ 	Óàã5V¯Àâ]¼9ÆG, «)ŸµkçTœ|ÿÅryBïwo½Ÿ„²fÉVÝWß|q'ŒáÆÛFî0	cXL·!\žíÇ»ð N¾ô_ö<eÈÇ´°ö!*LcR#,"®Ò²·Žê{ˆîµ—w¼ú¢¶Â ×rÒ´ƒÀÀÜáJ±hH°gO>{v1ù·‘”'Úñ®ØçúàF‡ÇZÈ5ŒÇÜÑ¢Ç3Òª¦pÛñÈÐ=9™ô6Š:¶9%Ñhš{"Dñ`©;Ð#ÝB·pOÆ‘g¾<˜@ÊšÈaÄV«•{l-U)ÊóÏ‚»Õ®eâ˜Æœ Òg`5BM]QyWÊãdœ–©¹3£c_\!§¨°M»<$Ý»¦)Šà†KFAYiK¤í„‹<EØƒ˜7JÏ¤9ŒR”‚ûL=4B©	S R”ìÆÿ:æJs· ƒA‰_V"’f$}ŸGãÖuØ1k_hÁUe¾œ,5–/s5g»Åä5)"Br¬R¤âpÞ±HïLëH´c–©E6Óë°¨“eÁsl'²Ë™Ò pèI è}hl*éŒA½u•ïÆf%E[7¦œª~”c™ó]øÄ€Îk~^Ÿ£ÔÁt 	 ›¢RQ$°¾”’é<H`{§-aÇpÇ‰a/z˜‡š™P1ñ¡²²ÆÉÞ-k~Tå@¢»D8“¼°ƒ‚cXpŽÁÏ!RH•6Ö"¡v”Ý©l…
ßÃ‹zr¦MàðÁ±ƒ\´ÆYÏ•ƒÒ‡OîÔ3AAñ
PÛ•úô]²Ó×9pñYz‘À2ÈXÏ<–Ä•&¦qãE;{ÀÉoT—FûÌÑ1óq  ­;	aÆñ€JŒXÄÅÎÝ3ÁZU{L);ƒ‡<Øb¥ÞÁEJEWàÒ;VAK»±=‘I‚@¡Éˆ»Å\D§É
H±¦%¡õÞaíhéË>¡4aè…\¡/'[Í{ÉÍ¹d³ùnòíîBòSóò«;ß`¥tò[óFi'yÞ´J5Š…fW0Ì­ÏgœÞ¬í£[ZFØ¡p„{™ä»Üé¡lÎ~o=¿ð?
È ÿçM‰>xœmSÍOAOU
U+ A§…‚bLP¤–(öhk¢:»;ÛNº»³îÌ¢.FOz¯Æ˜èÅx0éÕÄ˜ooÆ»€'O83»‹ÅpÚÙyïý>Þ{óüsìÑ—Øûzì Nlz­fìÁlxæ¿®RÁL" XAŽ «%rAÖÒÜVTÎnÙˆAŠ7ÐHÍ€‡ ³F,6ÞòT.Íï\Œ¢¥(Êa6ÝšÏ}ßß—¦‡ Á/ÜÌl&â¦GlÀØÈÀ¾d8HÕ½T€ Ã¦Ä	"šošÈKÄ™*Nn(9S!„¬“à–ùâæ»NæË’PRBX·FÐ=¯A9ÜÇ¬lL#ÝBN9íä
ÌBL˜¢¾®#JMß²6×#QSa~½'€ÙAQŠ‘	·Ä“.£þÞ€Øò=¤@åx”lLq×#kØ@ÆPÂ¢6Ž*s’Ø¢¸È3‰'æ Ä'œI€Á?Ôfø¾¿X8É·òýÜXæn59~i:£a aÛ4j¸‰=Ê€f½©†¦üòdy´KW»áXÿ”æz:¯F°
&}[CÊ‘*¦²ZC!€Ð5¶<’Ñ 8Ÿ—x<—ô,:x+?$5ñ#…Î^e<(›ið3…‹‰Ý›çøÛ|ï¡è¿VM‰êd2(lÛ(YË.ŸR\o–ÏJžä2Aäè”a]¶ŒÇ–xju„?.œU©Ì®y©ÆÄ’šã;ïª&ôIïüI1¡,mš¯Å”²3^èRão ½ÉŸÞ80eX³ü[­¿¬î¿2åª¿V½”êà?jÝ|NçÕÊ`0¨•1‰r4ëºJf	Òæ.­¤Ð].+­ÝQb{Îd¥‡¿»}œÇ*'øj>™þ7&Û˜ÉÇ²]¦&2TV>†uÏ*ƒ²núF%ˆË°Ø9‘W÷¡è0C¢ÓÈ@¸«€2"ßp;P+UýÝý®ù¶ƒ¹³xœ½ksÛ6ò»~ÅŽ;×È­õ´›¤n’©++ÚÄR,¥éM˜¹¡HPDMZÖõr¿ývP$õrzÉf¬€}ïbôçT£ïôšq±sHncÖòD’0o½w‘«PdçðN2*dptñföb|==‰Ç¸HÞë£?³„e®¢£—ÂûIˆø}ú¦j12¦$ÜÊÄMe(<	•JÏ;_xs<Ù–A;aªólÍ\º
êžvN{~·Zì¼r“ÜÎáê·WÌþ(¶¦"Ï<f¶ÌÚK7Yäî×†É"â2¤åF{öŽðÐÐiÆWWÃÁìŽzøWR;Ò˜ý°tŽ4ÒÖç¾4–oà’<a EÌ ™rç<âjRåAð)ýûs_‹µ×<_È¶ÏæÜMÚ"[t¾ë>zøè´zµ¬d{‘äzßÍ¼ß²N¨â¨³ÈD z»ß·ºýN,Ýn·wÚ¦½/Å)gà$ÍöÚ¾„‹à4Ý6‹ŒO«¾¨!%Sà³ÀÍ#ÈbW)ž,¾ 	ŸKw1WiÈ—B®ÑNÂÚÞ¹T<àžÞ…¦ëÓ(v‡o"(ˆÝlÁI´:n´]¢/ª†W£+Àxš¯f0]\Ï¦ðbx=„o¾™)…íÅ«áQ£zOÓ‚ýŠ¢ºðÜgÜ“€û*QÄ2çë¶žþýj<™Ž¦É2E'2°Èœàº¯wNËi©ÌM$…éÓ'*S«”=Ó{ÿBêx›Ù¥÷»a“ÉÓ'2Ÿãç³ÊÁ&PlìEº¾ŸQú|V…u¡XÝ+o=î°þò¬„•°^Ü
©v‘'èå}”0\=}¢?Ju`WÀjÙ/®?Àzñ 0Il>kêA±º] àdGÈµ,*”³°Ô½ÐMQ­ÌËºˆù|¦A§Pü¼ØSY´Åà>I†Ú¨ œåL>}òU!9AsÀß —Wl– ßÞ˜bpmÑ$ÀÉ@}Åäÿd>Üëp7Œ¡ŽÜ³	ºe,jo f¬ˆí–Ï"wU•Ð; gÌ	)ëô4`t P	Y“¬"àì €«óÆ.Pzí#É ä_„òó4¢\Áœõ-ºæñrŒÉ4hºA$–5¹ü}áèg¸`Rméb±Ž«Ü]@óó~-ì’þ â´ùM*ã=0"WiŽnd’üÓ'A¬Öž$@ÿÄR8à&×\§ƒëÑd6_™t3ÈjÔ:—Y‡R¶N]‹‘+©XM™2“:óa¾‚2€›øP¹àõ‚W ×«¸eÙŽLHŠ.âõ!L=–TíÛ¼"%îÖ	t¬å¡ü9™4ª©ïvgÉFûz
gYÈ% þÈ_“’šVýK‘Ý@ Y…9Ã€\"#Ä©µ‹Ò8­BƒLÁ Ï2–(,š)vàÖð.žxQî³s¬ô§7Šæâ°¾nžÿÐÀ"-RûÞÛÙŸßIcöñ¿ë"ëŠkö‘63?víÞl›}ÒM€Î¬wš×b0<þöâzr£„ðÍÑ^'0w%‚Ðá`Ê;¶Ïâw‚ŸÞŽ&T‘ì¡Ïù<c0]ô¢¨¢‹IyéaVa6˜tF“mÈHˆ´VZm»–Â¢ë_r`¤	Ï€Ò,!jÏ†äøÐC'Z)ž“µ+÷úŠ‹…ÚFö¼5§Ú]×$Ë:év”TŸê¡t˜I	"ÐËƒju	Ï‰«Âù%:0y#jÖÑ¯&Ãƒ:L&?F$H›á)Îù»…N¾_Ðj²;MnÏŽëBU
¸ØYìÝ'WyI–Ýr÷?GCƒäo’Çs£žŸVE‡t¢·]åÄÚ¦×—¯.*|!®³³~·.ørÃš;ëÔ¿jS}áX&„uwÚcožkEnÐ!©'¥«$vÕ»aª.Æº
®JQ+˜?Už(–Ä_“¢bD´Sao¡$íË.}Þ=zÌù=æž=ô]r=0|Ï¯§.tàØõQw>½
k<Á(Å–ƒ'bº?6š1ÁëãyŸÕT©õKÕú« 1^G‚¶ŠFüÉõú
]ô$“D©:}wÐ	-}`Œh29]"T™Ojhq7#9‚LÄÐÉeÖÑW^ïïõ‘ËZ,« G|ÁfvÇ¥7WbaÆfh9âV'0ƒ½Æ(Ü°ŒîøXø9vûÜºl‚ý½1+%ÎŽEv´:$uEÑe_Tê¹ÒBY-¿y3ºl¾I°úÎ$fÔ¼ÑT`TÐÈŽ­`èQŠ@ö–!÷ÂÊg§#Ì¯s`›+C~»+8füX–*¿LÇW`Îç™|TÕÙª¶Ûe.Kíëö²€™
ˆ„QêE™ÈhÚè<¡[ZÛx›raŠ}ŒùÉz¾ðò5ÇkÃ‰ßÍÑîï1ãÓMžw:®Â|Ž=w"žäw˜+‰ãˆÏõ'b(¸oI/d±k¥@®ßûŠ~ËÔ¨xO·jõ¬Ýd”P*Âª]4$ÛÁ’9ú:ó¥58ªåb:
ñ\Y±nj„}ä®[Œá1þêâÛwø÷˜ô=ÕˆQÏ)ÞœHP“#Qþ'ŠÓþØÄoÈönù©jBŽÓ-'ìQòÎ®þST])Ú”N“sN½QfôˆµVèÿoÒšÝ¹‡·Ân{ô§§¶&Üšf¼êmÑ>êŒÁ ÝífüŒ.®:Á·u‚[SKóÂG}bBçV(‹_ûÍ’G)zÝ¯h$ÄFÔ¤NjsnòßP"t	E(eâ­Ð€‰DÀÛÔ_—Ô7†/Ÿ¨V1º«¨¯2ÕÛ¦šýCz¾)Éïšáä @ŸÅc†84¹¾…DâË’Ø+	íšù$¤OÕp£¶QÏÖ¨j±n€¥Ö:Å¦žÕØ‰JvvŒ’rS	}ZËž²Œÿ€
f%M;…*ªHìÅÉ”E©_TÜ•*®‰õìqWm"eÑüjV4øìåí³BÅMžÖù¨Í¥
ìù}¤ë.í-º5¨*‚%ŠÄóh±ïWðI´Z2†Z¢Ž±l(tQLWmÙ7Òz²o)×Ç]–ì¥Y•0}z
fME7®ˆ9’ Üã‘ÍFlžút‘ÈH2æØ>¡¸6v–!qÈŸ4jBÄ)–Ç$B§…-ÍÊqšåÇ>te²ƒŽdJ=â ÇÐv¨ög+`eÎ¶:€KÚBý$ŠìŒWR¶J÷Ùv\Ø¶ÁYô.äê˜R0H3ûŠ)Ô¸T>ž­#§AœNw6¶†vfÓœbj#gÄô†Ž`]›r¥¦
ÄÕ¦*,ê+Ì}ã‹`,Á(à<¬‹{šR®Ž]:ÿ–¬½QÆl•0:6]‰#×>½Ä*p3XŠT’®t…+ˆ‘wDiWWX¶ä²ìªh|7üýâÕäå°xþ¥U@ÏLpþtNø Õ={à4ç9~ý¶{úÀñmç£~€Jh˜Óê5ÚØ0Ò!è·Oõ~mFTÆÍk°Gù@ãÃ~·wæ´ºME‹ïìÎ%g?'Ç§7´¿bMä?z|vÚ/úÙÑälÝV÷¾§¢¥÷P+øGõ
L(Ài\°nŽæë¡Ã¹—VP+8I–¯ úpcŽ©gy•©ÑmpX£xÈ÷y¢šÑq…É¡a±0Þt8„‹—Ó±1!Ó·”n¶š½c0+ëÄ‡]®Ðâ?64¤îä—.…MÙƒ„0—]È/˜Ÿgl…Ec¶¡p¾vd«ïäïzïß‘ßöÍº„VÏ"áÞ}KlL6 ûÐ>ÉýžäCMg›5#ÚnL,¦ìÙñL;-:ÞôÚGh½‹Ö¢Îßb—GJœÿž'Ûi;(üHQ‘=Œ>5¢¾F´Åö&2,äŒ¤jûLÃþ@“Ó ã€–xœ¥W]oW–R;KQÕ&)‰Õ:Ç[Qì²ëÄ‰	‰pR9vÚ®JìÄ›¶H, ³3gvO3;g<çŒ7VAƒ¸« ©å\qÇ B²¸à¤^ÒJýH¨½AÜqQñ¼çÌìG²-V²wfö=ïÇó>ïÇüñ•½õÞâB(u Eöþò§;­ööÞ›·÷¿6÷‡Õ/¬Ódm‘„ìUaØ÷TÝå=Á2qm˜Ql§<bÛöo_i|µ:Ø‰öíû'ÏÛï?ùÔñÖÉOæ¾‘ñáÍHÆ"áq“UŸŸÀBÆªìÏž8_Å¡ÄMÿ}sR2dî©-žX|>ˆz&»±‰ËiÛöâü’ýýÂ3OkÜ,>`›¸³Ÿ,¼k?šÿÔÚSo[Që?—ŠLKmDbØä‡N¤–/œ?):³üÔ™¹6î¿n?ªýÂæóg‹Heøam-’µµök¬¾s»½½ßº{¿µ·[¯­é´æ€S‰`*c•‰™ jB‘³Ý7ïˆNÓ!×|…w3èIlUb2ÇøõÅ5§»µX¢XÊ3Àiã0Ð“‡"i0Ó	ëD­äp ØDFØPÆ1ãÆˆAê²IxÈí?ÎœmWbG°¨$b-ÉäÚ}é<Mã#x,¦¢	ï5ð$t‘dy¬Á;Ò[ÌÖ+B‹vžVÇ½s¹4¸2}Æ&²L"Þƒl6”Z4à„NE #ÌÄˆé¾ÊãuÓ…!âIÏì4;M“ñD§*3ê63h†¾‹@hÍ¡u,¯²(æ=MnM˜®êÁEàÀ'ÓÄ(S(§BÜøÂ¤…nmm¿þêþÞ»;žA÷qt3ªð¹‘*a¡@….ÁL‘ºq²U<ŽŽésCè’böš‚ßîÄ ³ÈYf¨²”ÕQ;pgtÞÕG¨˜&s†Ã8P+ÞçYO€ÕÃ¾úL^;ä€©ãL£¥v‚’¢œ™G‡g&Lž%UiIš©C
§t’£`*<Md‚jx¸VtÏ¸H©Gº]òóD‰qˆl÷Þîê#º) ²*¤Ö®À¬¢¬¢z&qä‹]•ù UŽ&2£‹jè
´	„«²ØUFø#$Ðåº”*)RÌàBb+Nè^ÎcOË]´‘UæA*sWE….–*	2¯øŽÜûÕ`Â«l•9SC
°—£+%F öPêú 7tü«\4 ‰g¡k	õ2#ƒ<æ¨Cc?>Ý,|=øÕGIûŠ4_ÄXü‚¨`ô€Ðö­’Ã[`#\–¦óày 
—9 Wa½5Ûh\’¦³h¦†‰Ã×ã]æó¿(b´¡èVr@¦._Zßè4/]ë/®©¬‡'ÔÇ¦ÄQÜŒj´ïjd–[Ú§Åµ/µóŠ²à+®|€¯
WxÌóØÐ%Ùë4ƒåX:,\ŒZ“ƒ¤døqóÉÓ'N¬¿üÔoOÌõí_ŸùÌ~~úWÅx°‹›¾ÏNoµµý6Û¨9oÀÂ¸œ†?ð)V¹Is×ËpW›1ÐjU¥Ñ_˜RäÁ—±[]™P'{õ­Q3u9ÛNÉØ¶ýÓÒ¹¢Ü:‚*ˆG”Ç£  À2æ¨ÕÈÊÏOK—Šcbõ‰jHGK?‘Úbå@†C©r‰dÂÉ—¥Q!R/O§	¦×i©WÁÖÉ‘ÑzåëÖw†²þ	š—PÛÄ=–,âîRÃ=\w•°»¶v÷nkÖñ/ÏüxÎÊÅ½å)¥R×l’ˆPö¬=¡#Ñˆ¶å5Ä=•  9Hc1 ¥$"À ¾¸øôœ}ï\ôƒÿh€üÿüó\®(»5÷.!‘­˜;U¦/Røûhýx¤Rìjéÿ÷ëÙŽA½}ö¹wíïžÿM‘zî)SÒní	‡ÚÛ &¦ÍUÍ(Ã#¬‰4M3‰Ì—«ÐX2ÆTM1”¦3ŒÅ'ÖdÉî-56ÚÞìh¢2ßÆZè‡g†GÕD4n{Óv°ôçÅÜÛ®Fûp‘n}qÚë®SÝZ]'5ïÆ>¨n.c°u²lªÅ¤4KIÈòX¸m[º®	»RšFÏ-rÈF<äG]6‚á,íGêíß/„õ{nYšœBÓk‹éÛØÒ~’¸f4zFc‡~Ï7‰^ëh’ª—£ÿbTsçÎVµ®Ø¿°Û£77{nùÚ:á÷ï&´Ï²Î;rç§ôm?¿°û­–_^¾´±ú­Ù½"œ¹ÊÛÏ+îð ¤G3¤óÒÊÖÁ´Nz2zS ì°ˆµfoÅt}iˆ×,ê‹›ˆ	,i1 "ª/¸~ÐÒ.‰/n%ÏqMgWA·*¡¼U„©+y»„ñ
%`Õg`ÆØ~dÙFávaBsHr“Z€xÈ©r©~P5,œãlýúe<[¿zÿ¯^Ç¿+Wð\³Ë—pq`ûìå/9B-wï£ùf­¶åw>,Àîuî(¬>:5zûëåù’¾öãåoÛùúwí;õŸÿH‘ãí6Žxœ’¿oÓ@ÇåTÉITÄRµÊ#T¥PZ
S	@JR	
TÄEœíË5ö…»sS‘Ø¥OBll¬*!Öþˆ$˜;21õœ¤`‹­Þ|þ~ß÷ãï»?wß•·&îÙÌó¨-³¤ÝÖsfÔ³èË&ã¨•n¬V–
@úïkP”BSÊNÁ0ºÝnÎa¶ÅØzŽñ†!ÆEƒzFSºmc`xYÞI—«Õ¥âŠ™],—{£Ú‡‘B(Ì,\k	›mPÄs 8ø’A‰X¼ePrÉY»M¹@-~jth7¿Y¿‰[úX¯ßŒá¯øXïûÑW1|«_@¡Ïã7ýVs™ƒ„ÇÀéCŸ
)‚ùªw*úÑø&‘¾r®O`sJ$§BqMªÜÒçuÀ	´wî$òÉ0þN<ˆ¬%Ÿàä*^JeÒAÿ° ÛRÂÍÔü²èè·TÓA¨ªØw©'‰l1ï/Š·áR3{À1›?£€]7˜(ê>W"±×œù½§Ç?Ñ®ãÕñ½¬à§cñüÄÏ(ßød1rÐs&ó#–? ‹B‡¡~^Q¨öá[" ÷$`Î/S¯5|6•8œ{š.Àôá'<Ïìi)Ê¹jÂ¥BÅÓ¼=S;º_Áõ®ïßf-|?ó5ZÌöéÝh1öìýXT²{ör:¼‹Áv†u€æ²û&Ü=Éê®€Ë(xœ­ÛnÜÆj§Q$ÇŠÒ	‚v,#Îª¹’¬XŠ­¨VV¾¬%ëbIq‹M¹äìîD$‡šjµAÑMþ (ŸúÐh¢ÑOèC>ö-/}ï9Ãám/NkT€$îðÜÏ™sÛÿmê¯ÿ˜úsgêªËÃºßúS—[æ9ù×/v×ÒGE¬ÙiBHÃ|Rœ8ä¡ÓÌ•@”à¾O…=;½Y¶’#:Ÿðûzj7ë4ØÒø•ŸO-K	'”ê£[¾º§„êGôVGÝÓïK,EŠóähû­:à„ç¡†–qsh’á„¤x›á Ï†	>–Ñ Ç!Å+Ä±5Ž¼p™gôs8’äo’ƒí·‘M—K5‘ ôÆ°Ñ8¬í¸T£è§²	Ú$?F”eƒ’YÁ<W$;'¥7ˆd$£Mú8d‚fŽ„Ú¬ x¯Í:V›ù©hn»Saó„”O“£çÑ^×í:‘%©+hêÖôQÖ1)ÎP¶µÇUÂŸŒØBü9Æ‚°·ÎcS©Qn–´¦qn–À{‚):ÀŸ€G×ãéøa\ƒY’}IGDÑàGUð3J#ËñÙµTÀG©ŸUÁ5·Éò¨ïôGdw«àÚ–>—rq÷«àŠÚ¯,ûIþ¦–½/XØ)P’nÏOéÀ×Ê—ŸÈ¸×?EwÇ‘Ï\üe—ŒÍNÂ¤ÓòÁšçmŸ÷Ê’xH× Ö¡RÛÉ©8Ê äj**
—|·}¥,`™ðÂ;@¼ƒ<VQ¬¬6“Fk;P%wpR:Kv4•!oæIõÓŒ*hÀDö¥¢©Éˆº¬Í¨GZ}’%1â„Þìtžžñ3q3ÚûŸ<¥„_P1’7á¤%ªKS(È)£Ùé
#ÐY–ðE³!¥'7¼õä»'­™JBþfï½ù1<qöo$¯?}Û©êqqFÚZÒ¢2$–À)êA*µ…R[™ÔÕ†’ACE¤Âˆ#Žw‘°ÐõcÞý¶û«pêŠð'ùÝ§wO@ö!®L‚…BäojÏxãÁaÏ·Ÿ.‘&¸9d-0ãi9Px‰På.&sÇ~Ðv‘vc$àagëyóp³nžÉ†ä!k	J]ìçÚ ¹*7BzïOB=iÖ›‡œ+>çi½R€G­Ñ¡Š`<uŸ»ŽOtJŸ;žOž~òáL¥8‚ÿ®¡ŸKG_;]·:.ÈÛÍÅH¾Ú{¦R>êÜHÌ2ñJIx[³h”{ˆ,0"ÿ,¾$D ˜Æàâ§µ;¶vØ"ÐûÉ.}ˆc¸aA©yhk!ðæ2¾5ziÃñÅZ2Ø«Í–j9óL\Tÿ\‡âK*.˜K	óì‰â–ýrÃí±á­¡i‡qÐsûÄ£m'öÕ’~Ùü D²™»ëÙÎÓíR’škk«ËÚQ½!Gýd|Ç2Ñ[úòšèBÔR,2ÁÙKµi ®—Œ¨Jõ”<`½<BsêžQ…½drqpóµr„žÓ0e'——…Š
yI‰ Ö¨ê®@.£U¹Œÿ/×7èº·Bµ;ž³hC@çqPCÎNçÕ©U“;dàxEqˆÉ·nINÂÝr<¼>U
b¤$^7¯	 z}9[íò2Ëõ…àÉÚ 5¶	"ò­°´‡D‡És¿,®:B”®a³º--O!W$¯KêðV mÁCb ¿õXŠºÎGuÈ«õð" u#"„¾ ~)Èã4å@/™41ïÄŠwhHT9¯µÐA³«*@Î¨ÀÜð¦ûÓ±ÒË²r˜…s‹Ä!ƒ&ÎïO²Jr~P›)å4UÌtÖx}žŸž6wj§!´wB:>Ð<ÕÄI3#-M\@¯ãbáz]æv‹Vˆ™ö <ºþÕ¼óÖnÓ§£ƒSIÓÐÉ«û“ãƒ}’‚Ç`Jô&b•ƒ
®™SÇy/%c!3"pÅ7aÎyHõÀ7@õÐ:X)C=Ö¾ÅD8*­}2AÔa‹ [=îÆ•V¹6Ò´ýÑBW©HÞ­×;Luã–íò î³0¾´´">kéÿ@Æ(eI·KGë¶°õ²Ø?BôÍº³•|½wk¦2ö€×Þš0'%_97:Þš¡…M	Æ~CÆM­"Üƒ8¦ž4ÄB²}Üh63£8²0Cá}€Ò„Wíe¤¢©mØ+·íìíºcMšˆ OÍQ;óÿ˜^`fÀ<°3.Àh0Î$]ìŸà’‘¹(3!«¿û¢Ió{M_,:ŒtÉm11DjOÇ/Eyù¿tØàå<ö}C+!y‡ÄœËüY±cÂyuê&ðÑ‰KÌzµÄ˜†ÒI³~@RàlF1†'03"ñW²©Èÿxì„ŽÙìÎ¶ÖƒN¹U)=æûhÖl¶ š2×oŽ›é‘þ“ÿ‰>’ÀìåƒF¡Ûç„/
žGÏëÃ‹´ØÑ$‹QŸb2Ã'm÷†-Xª£¶<+©:nÁ€¬—ª¬Œh0¢X@a°%5¦ó=‰íñ+nÉCc÷Hö³*Yý¶Li,¶£$§P¹¯¥‹Ó†¦º¤
· œ•Fàü˜Í²ß¨²/ÝU„ÍU‹¨`ÜÑð¤ÐðÕ|‚qQ;Iý’µúY—]jïjÐÚ.b–¿V]Œ þ;»é‰Æ;Ù;s÷A"~Gè°kÕ]	bü,ƒšÀ	åÚI~³{cnd‘’ìþúÝ“mßç=(‹ÙK¯DA‚TRÐ'¼bJÐ½1æ¼ÒZ s `ç3å!ÓkÕÕrvÒ#IŽˆÞ×ëc¶ãêX<ÎE‹ÂMŠ#3êÜ#Q9‹›hïuQJzh=,@5ˆ|š\w–¦:(Êt±B1Þ{d:DY‡ëvoÈBÀì€ró=Bô×Jë!Ä¿9A†±¯è¥ ¼ó Dµµ[!ˆ~TuÒAÊ¥X&!ÒÚ!„Œè1¦m	¡ŠêMjÌÀ~Ry<Ö§Y)éŠ¡[ˆ1;(|ÔuìÊ”p¯	@,5@2mÓà“¯KEÖ¹¥ý
ÖrBÃ
IYd¸ny¦Îò!–/}½lò]¦›ƒAÑŒtú9Æ<¦£³UuØ)E|–z#´…1{ŸP(›3'Tô˜¤æûœÿîüqPY–ûÜmÀpÚ«Ë+kÖòöt6½t0ºîb¤á+G°dhyëk·Wg§Í$Ù<\Ë§Ö•Wí•;P–íÛ69Ä»„ã6Èw=µO+Ÿß“/ÝýAþ…JéË½Ê¿¥($Ÿáªgº—w:RnIE£Ô=v‘Ìz»oHJ?w|É¶Ž< Û{ÇØµ“ß{×jHÎÊ’ÚÊâì´>ÉR>2ph‚¯cëÀ…\ØÚ>=y|ð,ùæ~‰ôLÜsp÷¨«9ÔH´BÞó¿ûøAÚ‘Ý´õ“ÒûèNÕ[ØzÅãaö»èÙiÌNÃ4 »ïÃôèÑ…­FW@ŸÈ£ë]òÒLu„ýö†w2õÆüÙìŠ”xœ­WÍG×Xrc'±#Rí,Þõ¢éÞ]ÇŠ¼Y2»ë8Çëu6þß5Ý53åé®êíªÞñHH“ðuCH”D§H9pAˆ0qÌ•A8F
â„Ä…÷ªº§{œ	 Ávû£Þ×ï½÷{¯ÿ~í§¯ý¦WûTÈU X:µáæôÎ|øÕ—.7ÄkÔ	!L„äÓäeÙ#û´ÇHÊ3¦4Ñ’ìägGdÛ|íùwKµíëÇü”Ÿ[Šô•.˜ 1[êé+¤ø}—x)©¾5¯m}¾²#0+å.«2 ’ò
ºæpû©îí¶ùñö¢¹zõñÓŠ¹$<X!x„æGW¿7iï<R3×_ÐfáZçlÂRÅ•fB“êóvûôÙÃŒ³ÙWÅûxÆüàÚOÌ·ž<Þ•)8uêÅwîYÌ¤`D¦$–)›‹ŸB )Ù»sƒyˆ™÷í¤<P%¨ú¶:•QÄRc5Ù4‰ž0¿ˆNÞÜí!IBSÀMƒû„‚‘?b¢EtŸ	²ÁâMq3Rddcž!"Bµfq‚ùkÔ»<¥füõ'o'G~ E—`ZÐÃLÙ*K’hþF ‘ÝF½Ì} ã˜ŠÐ”fÂ'Äú‡Z¯ÎÑÚ¨³ DYWaç@­áJ÷	„¥©œ{|$Ò!W¬ž¨„¼ËƒjNñ"ª/³($Vœc!ÄÂE­6êž§S*T"SÝ"ö&SÐ
žppžL)
ÑE|­ŽÞ&Ýˆö”OÚÕ$ý`#°è£Q,'ÀåKæyê›â¯œîÐ`ÐKe&ÂææV{ûúµWnÞÞÛ1ï>ïÛÀ_5¯”ª¹$dM¦rTEÀL¡ÕTU Ò}ªfTK^”@ w
m”t­•F]0=Êt€áLÉÁJ©¬£FÐ9±Bƒš‚y€/Wù*M{L«F}ØçAŸp§Î¸0‚®‚zÔUƒAÎsµQ[lS¦³TTŽ-¥\0I*xÈ¬ÖiT`ëiZ,\@ŸÆ±ó*Ï¨*| Xx[™à F£ŽAŽm”dïÖÞÊ¬vSÞ"\©Œh£n_‘'ŠG\+u]ÿ+-SÇ
Jf@ ú”6°½s3hÈU`žm“=©™“Äcªò³Ÿ\/9oÏÜÊhd‹Â vY!.â²XÔ\"9”øyÇÅ­Ò»¹Ët°BâÁïBåCíe@WB3€(Ç– íÃuh«±ðQX4ýF}W Åid…ÞÔæw¼±íÑF=¦#l3€zÜµ©þ„òÉ‘Ç;ˆá,qÃîu¸;¥à-ÀÃÂ¢wËLàùçò€³˜·çÛîCuq½´xùÂú¥+ŠÈ¡°X;ìóÏim(»j®ZdCFÑÛ‡Â¿°¶~Ñ[»ìË´ç#É?HR6VÊŸríÆj~šª3w¢(›!W¼}®¬[˜ú0¿…Àà0Í"—@`Ó"n!A÷aÚœÙœ4yÕ[r›üa÷Ô‰OO˜üq¿y¼Ö7Þ~ûŒ]1ìfZö˜`)¢oÞ¹sÅ<±ÿ%óòÝ?7fÖó·ƒ¥G^,ÌëÁ‚yí¥œ&4¸b™N2Ë¹“óFbîhÅèÕ0‹d,Û¡`t¸Ài€}²UÂ1«tmfÐ–*­ºŠG8Ou7æ±ýåz¹Ó˜–ûØ
4ƒ2%î1ò Î'»Úå²ƒ½UYgÜÁJhJÉ€ÛòvCv~ÍB9q™)˜÷AÊìql±q¿¢ª`µfÞtN÷foÓ'­qŽá8V)õ!ˆ_nÖóíåZËþ[À.Ã¿¡ùâþÙÚöÄ»÷™cæ½ïüŒÛ:-5ÈÄ²š- ‚÷l^¡­Ñicä^ceKJi'‹´\âƒ€"ŒÌÒäçtR3¿þæ›ƒBÂvÉ¿1ŠQþ?§ßÚ96Îé§MÁËpmƒ§°ó¥j±ZíK­º¡­ü¾_šøß=]ø¯\5|¿»R«%æõÛõ²Íá½/|cGŠœ5L»¬ÍZ.HKva­ÅŸr¨·´•'ËÐ"Ø ŸÖü¯zÚZ>nWv4ºp {«é”r8*f0„`÷K‡ñÉþÉš9Í×½–íèûJ
ÛÇ-¨èÒ˜ûáGæ€/œšN!Ü¦ˆæ±õåÏ}€cè1Ú‰\°ŒGÚÖ¯vi±S•£Öèˆ©J
·eÜ±Ãö­çUÄq%…¤EC:Ry¿Â>3¬¸=ÇÖ¨bÌ<zÿ­æ-»÷UGh•Ðªùìà©»n
"·UæætfâËr`ÚéŽE¹î¥²—1fW±º¼²s£=Ýüu³4¸_~…¾1hA98ÿÜCòæŸƒs—#Ž„€¬°ëV®ÿÀíùÞo?sŸóAb¶»ã4èÂSf_žÑ·<ýÈ‘:ÅªQ_œË ËÀqCø>ƒK¦ŒËõ¦.åµh	;ÀO>Æ
±k7ú
×(¼Æì.m/»°p¡y1^q ÏÙ&Úõ ™;AÀREö(<e(6±>‰ -Ã˜’õg/øëÏ\öŸyÖúiâ)rñâ…5âš?Ý¿´8çÜºêlöhl»örû½9JiÎÀÚô!¡¿=‘×¢ù]ôKóíxwòA|·ö/ÍH½pé=Ž^xœ…’ÍkAÆÙ­ÜºÅÖRœ^ú¥Ù˜ŠÅjZ‰Í‡ÖøÑê¥~ìÎNÓ|ìN;3›=Š"x(ôÁƒPÿËŠg<¼HA¼‰Å“w·Iº¡{˜w~Ïó¼ónü”¶¾J¯K|ªG\!±Ù^Lm›`Ók5øq¡íQLUB™2Ç´NÒm¥wŽ‘ hN7XsäÝŒÖj„qMU’ñU8•€ç_DB¬dœX³p8Ûç^O}—áñ¥~w!óQ†ÛÙŒxßÓläÜû#m±&bdÍ!\pHÝ€_¹¾ó'˜]°(Z¦‰âÝ³‰‰ÌSfrX/ŽB<?Ñ•VÏÑpZL-ËSà~6æØ|É?ƒJaÞÐ/­wZÑT•–=Ô({¨ý—“ð²8xå&!“bÇ"¶ÐE™ÚvÝ"±¶·±Äx[1(Xv˜WÃTÅÐqµÄ¨ã~¸öà ”sÓwz¤¨µàóÕÉ(²ô&2r¸Öhúðà¥üÇ‹gŽy¹9u&é,t†‹1xµ4âVîr©«ßîÍ‡÷î¹û[ûfg'ž/µªs_ÌK#h‡¤âŽÁý^ØµûÈÍ¥QwŽ<”aÛìý?*Ä¡{¢N¬ddIƒÍÒð¿À]LØäžÀ©ê“žC„1¯÷á\/îÿ‡?ö:ÀÚÆphÒýéhMÒî0Î&úU%1=©%¦Îj	ítð~1”ÙôQUñ-ÜÈÌ§MDƒ²ª†à-«t5~Œ?êj¼Ëå®‚HýÍ`hfT%˜¢Vl×gÜß!é/\”êƒZxœÛø˜ñm7ã†tFæ”ÌâÍéŒMv Æä—ö¡`ÚÎA\"//5¹D!­(?W!1'G!9,š29Ýá´0PT@(i£Ÿšk7y¥ûf'¸x±Bb^ŠBQjn~Yj1Ø„ÔŠÌâ’Ì¼t¿0ßT p‘‚[bRQfr1Èð’¢üœœÔ¢âÉ<Þþ¬`&ÇyÇMVÌŽÐ@ŠjN^Yn*ŠÖô\Oa° ªó&ßÏQ¼1Òæ ‚xF ¡<`½˜xœµZ[sÛ6~&y°ZtœxÚ4gêµTmb+–Ól'›Ù¡IHBM, ÚÖŽü~”¥lº;ë‡H¢Îõ;¥ºYða!t.o¸ÚÞßIWþ’äìèýi2Ä_RÅÄlÈ&¼*Ø[nØ;9cãlÆ™â6\f$;ñtKv,+£dYr•&Éä÷³óñd4±-×Ï ÒüK²EìY`¿•Ÿ‡C£²J×R™ÃWF™eÍ_3ú»gCÃÂ“/Ž´ú³:|¥›+¼:"H+ži¹…"–ôú:"ÍXxØ’ê›\Dkß¼nI5kŸyÚ¹ÔfoÐÞ®²µ¤bšåüð•}iõš2ÿ ¢´ªù7 ²öYDK²º×X¯=©Ên_MEÉ«lÁ_,‘bÝOVðA2º×˜cÁÂCOšOgC:~ø
ï:€ô˜¹Gžðšóz˜•â†ÍBÂg<÷fºföC‘ç²ªxn E™-_=öræoÃ­F•ÃRjíx’2"©ÔPÈ!¡I`¢Ou«„á+„ úÔ§ªÊ«Ü@5Ž¨ì·C-þÅ£û,Õ‡ˆêš/•¨f=’è/`©ÿ	Êÿ@5/2sF¹ÿáÆYðdf²5$ xë)jä¡Ð†WxÔ­^‚÷¿“NÚuRF’Í¢Â±S1[áqî)dcêÆ§R-2äýta‚'$³Ÿ<ràFrr:9¾/Gçg-ª°Xx’gR±…T|-TiÂªŒýöž	w†o²+%rÝáWÒÃ¯Ñ”U’Õ™B’Œe`<C,W»ÌÌyÅV`ŒÝŠ²d™1|Q.&S©2öÓä÷ÉñùÙ›“ÑÅO{td/Y¦dF©D²5Ú¾è¦®Ë%–p“Ó¤Ã×\.YUXMTS¥Œ9!¿éŠ„ß¡¶ÂNNf8Ûà™³¬b\)IêŸƒLÝ
Íw!Š®y.¦"_‹õLÏeSìŠ:^@<]•DÐ¾Ë"ƒ)nžç\ëI¬…Ù´Ìf:eG‘wBÉ±2[ÐÄ0înßP’þvtüëÛ‹óg'Qø$—8ú0*‚Ê™²b‡7¹ö¶«r^“kX–¬5ˆ™g†lI\ÙÏ@c–ã¤˜elj/I*nn¥º&ùÛbkÏ ˆé%t¡é6“ánXË3¼ÌÔŒÜÎE>gÂ1÷ J¬p‰é™#HHÁur&Ö’Š›FUAHíô¨•¼·<[….mXˆÊå0™j[7+ÓA Fþ†­Ç›JÀI«;ûp¶ÓgmÕñ¹ ´n8&öÛ c^„GÂh^N]†k#•Ë{- GÒ3¡Õ©oä`±Èº–3i¸£¦ï®2í	6taÛ–æCƒªG‘˜œ=v˜³sÐª¥@øn»òºÛI´Ë¸ÉwØ¢¥§ð•¼%ÕfÀ¨2ñ†dTÁñ¾°A40N¦Š4U„_FäM™)—øÖÂ$¨c  o+CÂê¾lŠ&‹lIi Á]’šáäýAŸ i°²³gœá`4ƒJ0 /BêvÞ‡© ž÷+,O­¿nŽfK3y[Y•œ/¼—×ätÒsÝ.{‚†*}ötÿ`øôE*Õ,%è¼«)XÓ@Ÿ Ž&ëª„¶rÁ:Ú
AI‘rþ#^‚í ^Ö”o]—ÂjK²nueÄG7A°­tmDðË—Éº–öj¸ˆ QÇ€àÁ^%„¶ÂAŠd°®4vrÜ(EP«u2ì&+Å°t^6™|—|þ’Ü¯Ž‡ÉýoDxBždõä^‹ìþò¡<‚‚Ñ·í7Ûòøt—‰OGã]6ªˆÉl³Kéˆ#DìR%¹Ÿæhž|Ÿ°ÌÙq…Ø;žgˆ­²Õ-¹7yÍ6IÄ.Ç{£qD]JYßwpëìÆ,x»ôW(ÖKF]ù:%ÑÔbÝŠ7ñƒ¯8”’?DÐ
¤EØh$b)šwBìÄÃË7N r¾M&ƒ7$PˆLíXÐŸ¦OÛ<¥Ö{;.qºX?‡·E{á6¿KÁâæ`‡4‰Æ1¯ÊÊàöUeZÑÐ:(‚]  â{ƒÔH‹¯ˆíøÇØò¬šÅ¬ÀþÖ¦»ƒ]â´^»8y‰VÏž’–·}­›8ÿ’Ól¢û€$fQ„$Â‘­Aû»ÞAÜ8¶Å»P¨üÓüÚÍn¨í¤î¿ß$3Š"WDþ¥öB°q3ß2Tõ3ý”^ï~xÁ(öyvð}‘íx|¶c…Ÿ9
]@\dèyl³u9A,Q!É²‚2¡äÆ 8Ÿ|œÌMî­Az3>ÙãI¤pÀ!”‰y¨Ô¶ÙT¥‘p£©ó‘¬­øxWIÓ5Ã»=®øV‘äS%Éàáààå‚{˜3Ë×’;¶vˆ°,‘‘3^qe+9‰jË‚å½RÕ¯¹"Ì]È¢Á°ŠbÅïlÐt;‹ÖHÑrƒLôñãèdûc%hƒ„æaÉ>ºþgÌ¢v¼ßB!{×nµØ’\aéÒxb¯í/JVÕÙµkÜà€puôB“JS05é¶Rà
v%*wè¢'ÖŽ“ÉÀ®¤Ñø@*t›«ÀÊ
gEž
šû–tQ#|l\CèË¢Õ€#„é-¬Ý¸¾Cßt#d£áœ!fÚ†1„†ýQXóÀ…hXÔ}”¶ª0×ðº8wKd›'Hdd7½ENÓË>Áïœ¬Ü¶!ZNÙØÑ|e<üer~Æm£\o‡ð(­­ÜÁ5ÓÄNÿÐá(”ÙªdÅ·ÈC”(6ËDEAà’†*ÈÃ;SÛ­l(D,%L!óf·pÇunL­_îíÍà‘æ
Sþb¯Us7´â•âÊ­dîEê|Î™•F»¦í”5ÙêŽîñW ‰h™¥eF,8¢m£ÙÖ´¾+´‡ÕdàÈ¦‚JÌ*©\—Ù†÷Ò/ ¬j²*—É@,ê’{‰*á"‘Úqˆœ·"¯Yn–Ù’ôÄ„LSZµll£çö6œ²v
˜ïfF;G lx°ŠÜ|}Þ%hí†<²è›wˆöŽÕ]ææ+|K í3wÂ§`Ù
EÈ™z<øŠ,ñï£O±ø«KVÒà¨(45vÈÊ ­­1Až0’0Ë€”"Öã˜õÊfö/s¦ó”%lTåKÚ"i¼ioûÐÞÖßð~‹¸3‘sè¯ Æz~ñ…ŠöWyíÿRwuyÏÍ%:ÿÿ=ï¬Ié_ÝGK{ùn(X" åuS[êhwmËŽ§‚DÝÕ6šJê3WëÛu6{ë»	½©]·3Žr»ÏnO¿u¯[uo8N×öpWêèì‰¬¶µò†÷ç°ÃÅ1£Z¹gG™J9cu6ãÁ(Äù´Ê®P!È&6µ¬ûv˜ø0ÜÊ1iêÚ­ËJ*!Ë`;øÉ®f­wÎöÝ‚NŽ-“\p!Iâmªt½6‚–í¶Î¸ˆ_ÝÊ·_õ·üî6cŠÓèâcƒŠx£âm¹µË¶¨ààUª•ã[®ÚJÙ9Òmï]‹ãÙøt°9KëTÖ®¶o·>ÚšÖ.èQbÖ¨zLXªFñ§Ð€Â†ƒc¹¸²Û"ÛÓô~¡Ý32¦¼Í–-VüÜCÖËþªêôïGïÇïN£=Ÿ°vïOÌqÛd¯Ú‘jÿÇgéþ÷/Òýô¹[†¡Œ¶gíæŒ¾ël» Ø*9bQï';d¶Œ1š4e®ÙMÑ"gÿ²ò˜õºR/ìª¦Ý$Äbÿ#štVdê³ÿæ¹ï¦.Úâßø;ÊŠÿ}–ÏáçmvøM%e£pl]‹»Ä¿•Ìm¶µ\t;fÍhQj¡õ±m¤súYCPpº:”nG€6‰ÙÝ2â[N1WŠ¬$;Ã_ÛäÊçË5ËÌ•Õ3Ü×íðÀÁRâ!¿ËËSÚ:emP}ÿcúü9ý¢m ãi¼…)Rø%Y‰þ¶+¥¡®†Å/ž?[Çx?=@Rÿ¯Œ“#‡)5&HúmYsö¨ç°G"'“ÓSvônrÞ¥œÛ®º´¤ÿé¦Ñƒž%G/>¿è–«¶žÞb*¢®ÃÐKKø˜"_þè´N§Š/Ñ(pþmJRëó/pû›ðüKB?TøÿC1ÎT;!Z	à&Åtƒž&ù7ë‰ aã<—^xœ}“ÏkAÇÙ5î%5F«mÂkmb³ª%©D­mD©)¥­"zqvwR—fgtf·%—½)sôðGs.‚zSñ?ðäŸáìæ‡ÐìafÞû¾Ï÷ÍÛ½Åo•stÛ#%›QJl¿„[­érÕjµýÑÉjìJ°ä
›m˜:°Ø½ŸÁ]lq× ¢}ÎZ-ÂÅ>½˜Ž%_F†ñTþHùpðP;Ý%OèŽôô;:@ç½¾«ÉÕÄ”4ÕÇ9ù)Q,ôëµ“—¾«aXyÔ ô*Ë[©ì™Ëæû$ŽMÆÁN”ˆpJpbº6ãŽæH1Ã•ÏFžLÅ½ÛÌó”zTŸÔ„ûM L~Ì_’Z²"ç“òu&B <hSõ°aÇUš?“ååuB"‡ÙG¨}—Ñ`ô}8õ
ý²Q@3à*†#Û[›œ·©cIíž<ý­2f³àá6X¡LZíPråÔ˜´ÐDZ™,à6€yx±‡Lùæôç!ãnæf|ßy—ù¥_·‚®…Pû¡º¢ö2BjX"ôI}èe‚¦žuµÛƒVÏÀ?U”ƒ£TðØ¼¦› ¿Ÿ‡ÿˆ!#Ît¤Ø•¯´“„sÕN7‰ü:¾6‡ê«êë¨Ô[¨Ÿïpz“òwˆ,¹›+fQ¹:k–ç*fÙ¼=S+sÕ
AÖ–@‰¿Ãø–2aä¯u»ž·†»OëC_ 0ÿUÕ^’Éé?bHµáxœ!xœUÏoE–´ÑªjKÓV/ä˜fWmi«â¨‘hZ¥ŠiA…ÃzçÙ;t½³™ÛXBò_ÀÍ Jü¥9Á	qD8!qáÊŸÁ›]ÛY‡ !æbÏÌÛï}ï{?æóú÷7ö’^½P$	†zézÕ­M/×ÝÝØÙr=ZnÑ<¨þi¼4%„_àòK#›Šë8Íosg¾{þniH‡-ÞöZ<ÆÚZØj¯C¶>ïäû­½ç±(Œ‚ÔSJÔµµüwÝîÃx7mjŸd_/Ø›?ËOM¯<õÊúØïX»2F’8"í1ŒƒAmÍš™gåW¯MhÆs-Tn2½ÈªafÕX7yè#½Æ÷›cê\Í=uÐŠE¿ˆÀÌO3÷ÍÞlÛü<ûÊ°.‘`Ha-ƒD¥BjAr‘äÚKì2Q¥±K*Å·82h€¨Ê€1	AÂ\»Q½³ªÝB8†Þ}¸ƒ z(Ò(-Eãm	-!AG˜[©n3÷ãN¹±÷ž—$ RKìðÙÜ·åÃæßŸ)Ý5ÏO=}‚®mLP’Kæ:&8ýVÙi˜Y×3_”îþqæfix”áÕU÷ßJ®œŒÌvâ5m „a¢­àV”ÜìmH™²5xûõímM'Ð(×9Š€n3Àåþ5ûy³â_Ó¿å¯@e?$S‰Šen*æ÷Sáø°Ý"”	Tø)WšþðI]‡+4©˜’¾ë*µ÷Iu=üðŸÑOR'GBd	lrª8™GÄ®3ýÑÿÑ*“jøµò]‡D²ÒŒŽ:ÏuœÒˆÛþËäI¤Ç…wÐÅ®ùáÜýÃðüJ©ä›¹³šÏþUkLìF]j%kR*ñI"{<ÄIQzi©Qß«šå8ÜÌ“p¼‡-ÎFLÝª`rÇ
ŠÄÓ}DªÀ ƒ…†Uƒ-ƒ£îqì…Šå¾ŠÓ`Ø·ž6ó#û £ÄÚ$‰'T•œMŒcè¦Ì6³‹¼t¸RY¡Y‘£YV˜0ž´ÁÎqBë¤1f´-vF#b’¨˜o.#*æ×…^É1.¾æ ÁV>Q"1_^¼4tª’®¢àmu€æôá‘u¡#Ê\>l'U³œ‰Í0Ó>PJ„<¯Ïuä:ÇÑçyH%OlîaW.'D{vÇ~IG(û\!±ßú`cgï½­ýì™Êžª7¦_§‰îPf˜pû;=#4__:_öÁ8—o¾8¢`¶._¥QV3)Ü2¿Àë@Ù	íx´ïcñô‚8¶gf~qa&ž©.Ö*6Ï€ÇZ¬Rß‰•ö>®G’F‚H#¸KÙêó¶a‹Õ¿¯({h²¢xœµXkoÛ6ýî_q‘KÒÅ²œ¤-b8\Çm$ŽC·ª((‰’¹J¤*RI½×oß%)Y²—Ô]›ˆÄ×}òÜC*ûþ¨ŽƒOý[0•ÒðÛŒvÃ‚E»\Ö³£R-E1€w¯¦o¯& ¦ÿÞIJa©T>èõîîîœH„Q$=%O{”÷–*K{•€Ñ÷šrZ¥õ]ˆð%®‡·Þ%xj•R¹¤TI¸•œär)+íµf;œªÞ‹µßp®À=éô{ÇîñI=sExIÒÌ~¾¢U§žòDY„ÔNÙ±KÂ“’$86áIÊäRwœÅØÃE¿;¾™Œøžy{°×Ç¿ÆàžYC«WejÏèí~ïÏhy4fœ‚…\Š,ejR•qüˆ–þþÞŸÑRmYP&Ò‰hÀ7€xê>öü¤½­¤“ðÒÌ“"\²[j“"Ž1½îY×=îe2q]·âè¹Çò”Qðù“€I}ÿ€|ê84µ°ªG÷u#%UÑ˜”©‚XQŠñäMDL’ Å¢\åKÊ‰b‚w¾Ü˜û­”ŠÅ,4³p@"= Š~Æ‡€”Æ
2R$Œƒàéê°ãÒGMÃÕh:ƒñõl1™-À[Œn¼™ÜLàÉc™ñtåŽ®&{MF¿å‘¥…É¨ÌIH1`ŽåŸQ® ö"+¼^vUej
*q¥ÿ£cmy¿Ì®çÞÔÃº—9f<îøñT›®tøhÛo`Ñ[ÒðÎïê±ßéùP?_ÀŸèšÛyß~V,$9ŠáÓŠ…`;;Äâ4 ò|h^V0†ª·C2ÊQV*ÓÞådÆBtŸV*ÛÙ!¦÷¡Èý.‹Î‡¶Í"«€@3°Ëöm†•f•Øv­„A3°CI(Ùù°Ã”øÀ"„-¬®<4½CsH•ÍËªJ¡êíR~Dœ0›VÇj	`cl‡.Å2*Ju>¬V¹uW’©Ú’°nY4_äJEÕ²*ÆÐà¥!f¶È.&Þøf:_L¯g¶Î^‰Ô’Úb¶•	ž!ü™–#“¦v¿\âZK³ôŽ©¥*è§’JE#ÍÜšªuÅÃ5Y†!•òhK°Á )YÂQ2X™E¡àªiŠSLV<B#C ÉW¬¹!'jTv¥vTß–V =ÎÈ

¤­ØÃ%Š„Z¢ÊÂý<€vzš„ÜÃ#ÀTµ³a€òÀjÞ?\ÛµI·æµù¼ƒrõÞwœNçZ<#{3©$ÂJ÷ó^	'!^f6¥b+eØé^±êôÄü¦"Á³,­"ÒÔ›¥÷j,xœ²/•fS·Šðœ+5$6­GÖ:²\Ë6î¼Š†æàl!¢%šUá"ÕU²­C–tCo¥Ä=Cy“ sŸctK±ºJ¬4Žf#x]ˆ2‡éo:ÖiŒˆ@ÈÜ’´¤;îdNC½@âQÛHŒ4Ê2¼[J3c±*JI[~´I³
ï>‚]ç
-£Å4Ú0¾Q"®±‹§ñVò¦UkûK¼üß\¨i@€ÅÀñ“ƒIYRD€vn\­@'?iªkOÒP•îÚë5ƒ['7(¾òê²êKTkù$ÁoùQ#´‚…ßÕW”k›¦‚£m×a#šÑÑV!v¢wí]ŠÓ´+ˆV›£5L:øêòåÈ³`ë°·º2$\³›¡Q´’Š;$JàeÐÇ·³eÂ3è[ß‡@äúCÐÆw_¡šê D½†ˆt$#8˜y¿No³Ri*-p7§Prfno°XÃG%~N±Ïè,Â'b·ˆ–5}7Z19Ur…¹Ï£‹ÚÄº k}KB«z¹D]Í£CÀTü{ŸÇs>bÍžæx4ÿ¿ÃDß&ºº¦>`&oGWóËI}s61êo3þ~Ç_îwÝÓ}ÿ (±ù“{²ï#¯ú™5½ … Ûï8Ó9èEpìœ˜ù±=×[GÞÀÐUn%­)­¯ë?ÀÖm½u®‘ýþÙÙÓçîÙé©»Þ›fÐm¡Ö­Oª¥p¿ÎŒÞmx†YêŸ.¾ÍŒ¹2µ"Ø8ëœëÿiØ|ÏI¡j6ÖNø]¤þ7”)ÚùÔÌvßá¨xœ½VÍoE—QZKRAå+-¯¥$ymG
”¨!­c JãØ-6 ÌîÎÚ£î‡»3›ªRÚÿÀ\¸pâ„Ä¡UÿNHüHpé…7Þ›õìÚýˆ„ðÅ3o~ïÍûø½7û×/•?ªÜUNx)gŠ;±|Uö7Ë­þãÒU·ØS«À€Ç>ô>ÛåÐc—æqˆXÌF<â±/‰pçƒJ ×„ØÂêr•¥h)å2•lÔªÍÉ¦¾Î_ÔÉå.Wm4y´	K¡ºèó=áñ¥‘º_:xr›@bZáp$X‰¾Þ~]?j?ÿFì±IŽÃ…Åy`%w.]&Ð¬,2€Bd¡‹þ$â¿…ù0”÷FÂËïÅ……E`%÷¥+8Â7à|'|«À ”ê~û´Q‰÷"É•UÉw¥Š€RjU¶<)xZ’xvCøX$žZÕx6¦HTèJcfeuC(Dªn¿tÚ‘¢¬k@n˜x7¼@žéÔõ§í—i½Bås¦þN×V 3B«\§:
ùÚ*tà1¡Þéüv(•T<’±µªÏÐö…‰R~+ãRq0MJÄ#Ù€~2ó<.eæÔjÕ2Àäy)F1jºæ%±J“0Ä3!§}Á}W–õw~¿€m¡Ïúô£«nEêovÎ-½w¾^<9œsÍäónw¹âqA§æA(ežP ðìs9·º1’4bŠ"“‘ðX¦nætÃŒúéû»+:ëŸ¯ødt:M.’IŸ)“4QÜS"‰‹„"ã,5Âë3c‡‚˜0Ì6ÕCŽYŠ*Æ}W„B	ž«3ºíDÑCd$l÷Úp%M²	lYoÀv€ÉÆüî±0ã”èÖä„{t,‹0ÃÔãUñ¹âi$b.ÍIn)’I®ïu—tòù±ã¶õƒî[§žÞ úýÂî«¯Ì!	ŒIœ¡8Lõ­þÊâ‘=ˆÆÏÝÊö’Áü%–Ø.k"€8Q˜™q¿n¼èL®ì!Šbé’w»ÍêïÝåÚÜ [ßïNi²eh2PIŠmC6‚]&oŸ ßG%=%!L!]*duf2`%¿²t„~ÌðÎ´ßŸ¥ý8ÉBŸÜ,	Ë°¯¡yL úóqw«=  Má¤KÿÞ[jBœE.OQg*%œ×¸l¸P¼‚—ú¯ÇÉ{Fô[•ñ÷Øt ¡Ï‡O6%¬ô_|ô6¤¾ÂÜ²Ó»Y,Ì³g‹1,¨…‡2ñ-º€DõÅ³¥qŒkš•„
‹aC®š1ºÌP–j]¦º[5‰6ËÙFó’IQ›Ž‰1Ÿ¡O‰ÑÎŒ³Ó¾ö?Äù	ŠWýç8Ñsç¯ìÇ“ü#eæmÐ·½ÞaùÕÓÄO&¶3oAþ««ëëï^h­¯­,D-K NDóO?´jÕ7ÁÆ1Ûð^cµ¹6üW¦þíÝ©ü¾(_îÍxœ[%³‚KfŠnÞFEnFVO—]¿Í&ŒÛ˜ÃRRsRKRuóŠbt‚SóRüÂ|SüsS‹“S|óÓSsSóJ jòàrÉù¹¹‰y):
E©%¥Ey@ª¸4§$FMor"«'DyŒnÞäNV³ÉzlvÑye¹ÈÚsFCMR(É‡ÙR’‘
4¯°4µ¸$5IHUAQ~YfJj1TÈÒÉ/Øæ0†L^În4ÙŒÓQ1$Ù" Ú¼’Ì´ÌÔ"¸“m¸e„üòR+sr€FU¦‚þ—W )Ýkåò xœÛ;‡ñF/ã†tF–ÌÝ¼ÍyŒv`Öä·öÞ1)©9©%©ºyÅ
º¼\


Á©y)
~a¾©
~‰¹©Å‰É©
¾‰y‰é©¹©y%
å
yp¹äüÜÜÄ¼…¢Ô’Ò¢< U\šS¢ÇËe£_0ù½Ääû39`–L®wtlétÝ%¯,Ù\„Póx¹Jòa–•d¤-,M-.IMAèšç,1¹Ïù cÈä"-n!)‰%ùE•z“}e'W;ÉNŽs;¦’lSf
Ð’Ì´ÌÔ"˜“×xöL¾çÄ'à—¯Z‘˜[“Z¬P™Z7f³‚¯,# KãwRï-‚ Nxœu’ÝjAÇ)RZVšÜô¢¤ÇâÇ…ÝÔÁ©ˆ5Ó%¼qDfwÏš‘ÍL˜™Ý%Pì+ó"ŠèÓøÞyí™ÝhÒ€WgÎùÿçãûÑ¯ýÏ‡!-aÁmh,·_ÞÞÚŒ&ý!‡/&,Œ¿=ßúqkx3Ë !F™ÁèÍk„A†ÒŠ|/•´ZêÐhK-é1eaS®±ºL)èîoßí7‚@‚¬UdùžeX‰Ïà-YXka®Èª~×F4¯Y˜Éõ¢‰'n{ç)'#-°B­fE\Jƒ™c*r‘z”é¼0V¤¦¡™kU‰Œªì×)[n\á¢û´óÅï&	ÂœkCÉ¢)#šÏÜÏÝG×ìA/èÅ¯àø2š.GñqÐ‹¢€ O`ƒ=ècxDšx[w^CRæ9j°Š|3UZ’ƒø/RÙ5÷¥³ÏšLéW]W¨õ¿~6gà›–3î÷Á3žjn…’¦Á÷—°uÛŒ~‰yÚU¬èmÇ$´: ZÄjx„˜aÎi¨îã^ÑÕ7“ÝïÎ½ÃÍ€SZÿ©¬fèfÝ;î}'Ú÷­lzûÚ£ÿ×>ö÷âd÷â£Éðè'‚Jxœm‘Ák1Æ)º»vnJE<ÏŠ{PgZ/zh»J…VÊnñ(o6ov#3É˜d¶¬Rz÷TâÿàMzìÅÿ¨ÿ‚o2¢R<%$ß÷¾_¾\o|¹·=Uõ'ÖÇã#‘N/GkW·Þ¶§©óèˆ¦¤%¼{?&˜ŽG“c(ÍjœXúØó/xã«¯®)= ëYÞô†1 ”½‡á[/}=!o-É_P7òP{*a$¥òÊh,ofÖTQ-i©fîö7Âvÿç½.’$¸
­q×ýÙ«­ãÃ|=µ5s‹Uª­â(	J2(JÌKol…>|<ÔîYiØhÿ8½82|ì=mßB9˜ k§ÅÌ›¢`+—¦	ßïÐþQþï‰O‹$‹¦B}“g'×ŸuÕM×?mþfñôŸ‚8¡P%Eýy«¿¿m‹ëÚÒËŠ¶ùEÊ>‘æJ£]Ánd:‰º#†_'Y¡’L A|I69H2q–d®N=(×6’3âŠ#sä%aÀ}1½T–Ï|×€‡ÓihœÒÌ¸`oe$qLØM^þð&Üå‚6xœë½'0AŠ3%µ(Q·¸$±d£#—‹kcŒnpˆcÈf'Æ­ÌºpY…]…àÔ¼¿0ßT 0(ËLNU É–+$æ¥L>Í*=Y…Õ^¤,“¤`“Vg7y«žv›O³r0rÀ¸“/°‰1'¥Ng—•ŠQÓãÒöPPòñô÷VâÒ+.àÊËÏK¬Á‘ŽÃ<°CVqØsÂ2ù‡úäx.m …$P¥ä+‚}xœ}‘±NÜ@†å2'®MŠI"¥Š1ƒ¡°Á‰­oçì•ì]³;ö)Ï°¢H™ä"OÃsÐDÛH—œ¢T^gþÿ›¾}î}ð3FJ!aY…Ž-)ø<^/ú§ýãéZÍA8 Àj	'—	ÂE29ŸBa2¨D†`ñºFGøAµÕŽ¿®.÷sÓp°U¾J^ú»ƒ¯½!¬w'¯FV,ÂTiaoà„©ï³s$«°A”cow£))£E±Î1·¦ìº%6j†­ÿpPYÓ(ù,Ó¢G¶žñýþ§_/\),µ:Ëøè6Rÿ¿¬ üÇxcûÌ2y/"?ZÑ*@ŸQK‘Öó9Z Ã5ijò—ÉƒÕà¿‡:t¥A@^—B3£"-xcKA;~tš¼^KÍAÄ;Fº)qËßDoÿ¦[åÂ(æªÀNfúÃ?Îð>£Ý®ïªë»b­Mþ½ÍŒÄ1ßÓâ¸½«TŽÞÅ1rÀY§Œ~Ãž©À±‹–@â­¤²8£çd`‘£†Ú)ÍŒ9–¬»ÉºË‡Ó<øE‰÷íî‚3xœÛ2™q}ã†tFÎ”Ô¢DÝâ’Ä’ÍåŒåvîäö^pž‚./—‚‚Bpj^Š‚_˜oª‚PH”e&§*€”+$æ¥Lp’ž\ápU¤,n£Ÿšk§ –SbV¬–^b=¹Õñ˜v68ù1:Á¹
Å¹‰E%
9ùé@5E¥É%¥E©
‰@\P”™W’š¢™§¨P”š˜’˜”“ª–_”›X¢g£_09ÁÃ|òQ»Éç=øØóòóRabï\“pXv{¶['Üí“»lŽõg þXmTáÙUxœû!pƒ‚SJêFAF&×ÍúŒ{™%SRK“3tóŠbt‚SóRüÂ|SRR'³²: OvgmŸ|žÕÄT`;	¢^³UCµ)”d¤*ä%æ¦$&§*¤åçN®c—òËWH­HÌ-ÈI-V¨L-‰QÓ›ìÍ¡ ©|*Éé±OxœûßÏ¸±qC:#SJêæLÆ:; =ù¥} ˆ²q QaW@”Žã¼É§ŸƒÔmqê©Ÿìèr^)%µ$19ƒ—K
J2RòsS‹“SÒŠòs'ºvO.pâñËWH­HÌ-ÈI-V¨L-Ñ³Ñ/°›ìï.»ù¤›# eÚ0qæTƒ„vxœTßkA¦ˆEŠ(‘>E±—&ZJ–6Ö@mCõÁóa³7—[LvÏÝ½¤…Bð?îïñÍWýükŠ³{MêSŽÙo¾ùfæ›üœÿqëÓíkÇÀ`/,ûõ^iêêZýucµ­úÆó0øölêû…ð8Â š¨c¥û`‰azÜ««@uêúç´€2É˜ŒŠÓ¬uþä"¬BQ!ô%B_#Œ·a¹×àm„¤“2ÑÓåÍW/k°GR$¸ïüãôü÷ô•Å	Š€«'Æ#kï  2a}|˜¾4û¨!…Œ½@2¡1ò-A‡úTÒ?eÔ™f6ÿuùËˆ+­I˜’‘Ý.½lQx·\*·^ÀÜV³ÝØÚlÍ•ÊÍfi,»6gôV*o·`±Ô ZN<Å Ç0¢‡a"xvDñbNpØ:$Ì¯¡ƒÀ™ÖÂ‰Ï,QÖª›Éê§ì@@;¡nb½LŠ\Ðg1!Æ­ ‰Œ,{:»>xR	Wý¾ÛúT’%h%j<£‰IÆºÆT|J–"Ó0Ï_uY–iL¢è÷(ztþpŽ;eD½ŸÇ	‚+=î“Ÿ›SÞJGé‘=£ñCèÆ,ëy[Tï‡¿{pV<˜÷çJº—ã¬…³h§4Ð´G§CË%Ž¨M²Y¯}ª*ÊH&9Ñí¨ÕXol¶Áˆ®d=r] ÎÒÃ‚þ&‘J½tçä®TîD\¬Ý‘M¸	Î2cüØ"Q¾=z|ÞÞ¼6yÔÖÎýPÍ÷fîÜ?ù [ƒ>VüÕWýEWóý™Ù|jfcyÅû×.Î.ùàKVvb*ºþX™Ó’ìU‚¹gxœTÍKA'B¡^Z=<*êi›¤-´µJíG"†ŠZ…"t2û6;4™Ygf!B¡sñÔƒ=ôÐKA/ý/ügzi/}³ëGLRš½ìðæýÞÇïýÞ|9+ü<.ühn‡ØƒÍ(°hìiZè,XÝïçUì7B09 oQGJ·ÀÆ9Ãô!xVªÔmÌ®“Ü•IŽÀd˜Û˜f-´¨ÍäÄÓbâÎw§Ý·åã)¨¡¶2=+É×$Œì"|6×´‹µíõ¹†]„#$\Üò‹»/áâ{\‡¸
±f Ç°—:LXÕqVÏU¤°‚>«Wã~*4†Y‡Pg†ŽJfW)u
B&©uß_ýšáJk*VÉPÈFî.ÝçÑÂ¾Ûýí'îüMÝ}Xó•/UfÝ§µ©ìT¡Z!0'ïœÝËæ)tbÁãÌœ×s‰YÆ|3­…/J*mÌÝºêÕ'º3œÊ{¿K…F›!˜¹ cÞ<ãVøfÙG”P?žž«VËOw!“Gþ•âØŒUxJ¤HÆú®T4W¤’.óyzðe·L[``bEÿ¡¸~ØÃX”!‘1²€=Ð6•¾ä‚–;¢ +u_êP–†@V1biÓ«dŒsÅy7¾>3Fbtåê½îŽW%íO¼\Z4p">iÒ*ÑäÉ©c’šl\'ØVšù2‰šèfåu¥¶F4$k’Îh1ušø¼ïòÄ~7nFTI&
¯í†T~5D”«%ë¾Wá•÷¥®B··ýõñF+äMýÓòCùónmvàI*’¥(Û-,ù÷ ì·»ìNvŠ£LâŸyæGÉS:ˆNOv
óÉÔ0»ìxœ­VmoÚHþÎ¯qÒ…ôŠÐ\S”D¢à^á0ªzªûa±×x¯ö®ã]‡¢{ùí7³¶¶é]{	ƒwçõ™™g÷Äo‚i8ø¤ÏR˜„@>¤¼Š´^&Vù Þ¾š¼™º`öý¼ÕœClL6èt6›ª`¥Ô{GåëŽ	×ç.;±I“N¥`íýÂ%Ï™!{c¼DyxãÝ‚g¶	×1çFÃƒ–,Ó±2pYY¯-ëÈ‘Üt®wÃ˜Œ¸Ûïô{³îY¿Þ™2Y°d ³×S^½Ô[ž*ò€—[åÚ-“ë‚­qÍ•ëDè˜–Îòš(äúíñdÚ„f¿{OM»É«ŸÊGÓlïÇZyc	ÉA«”C¦rÃV"fÚQtDOïÇZ©jµ*ÖÚ	ùJ0i;á¼ûüççýC	DØhg-»Ïò ¼ì”u®¢áí¾hwÏ:©^w»Ý^ß¡½cE*8ø²å¬Á	5ïÁo±û†Ã“²ŸêÕ“£Rs!X‘ˆTž2c„\ÑE(4[%8Û,æ’¡dÃ‘ñG{¿ÚˆHvZ,¤0ü>$<2²|-$(™lO!9*Óád£»ÙÒ-Á[KnÜ…OŽåÆ£‘NÝf£&1ðÛàqÂXè@=ð|YÖ€`À±ÅÁO¹4¨4e(ˆ`(œ:•Cªr~ 7RÒä*Ix®ýÒ™÷ÛìnîM<|!äQÃ&äaOýhÑ€O>oý¶ß6L¿¿º¤çµ]ü£D¶³ïW‘÷òê×Õ"©H°+_ÐùƒøÕeù{m5B¨_‘#Qæ0v½Ñb2_Nîfe_‡WYñô[QƒeŒ›“éN%‰ÚhÈxNNp*Àl˜mÆ5¨=€œ¯‘4xNöC^¿Ù*`¼ŸÚ
ÍmLüC–ˆ ÏµíÞÆF˜øñ 1§ÑéSà:ãÀÈ¶¥ìÓÍYò%*Qjø«q„„4ø!CÆfš£Õ—§”Zƒ±Þ($@ H=<OðŠ•Þbp©«Š§ÜFåïkÀv¡‡é±„Xi;Ãdƒð[Á½†ñËZ{Øgú9O1¡ÚD”«ô#ãq‘SqØA)2:È©)HÅØÌPS÷Pè”ßb>ûîÑEÓ;J'³_gŒÉø)mn8ùLˆìK†se›·îJ÷“g‘+Å°:º‰†rÍ)ILÉ
lO\f‰Füì2
«K¾ÐVºRØ10#_ÖJ€B«}8Û5N»D›u’
‘(é±;°nF´@¡ŒG(*%È56Ž3©

AÎñFsà‚¸ç¶ê¼Vo?q…¶Ó‚24í%Žñá`–í(êÎN61Ô|ÞØóÌS¨™¨Zh8žÙa²«p5•hÖÙ7i›ûŽjZ7·2ŽŒ¤‹‘Riÿ•u`üpRmÃ Hšâ®:ø±)³ƒ‰Með®`“¶m¨ C û—5ê·5ÏXnAD	]—Oû:PI¶Ö×{YÚÂ‚KËcUaw‰í‰³L¬|Ù-~gz%ñ`Ók…¼sPJ“n—•;Œ.Lødý‘ìò§rß§ó[·>æl²t“’àÿá7üø¤Ý}vâ·Vþý©Û?ñ<Ñÿ²×*@%h÷Îd$gNßî/>¢d;QÿBµ%Ó±@ØTaïÅÅ…ßîõð/¦‚ÏÉcà½ò¼Ao€·ô³n¯wÑ;;ï÷ùÅ ^DUØU'žÛ?@}lïãjÇuõ	ü?¼–çìS·tI¿ÇÄr¼gyËã_ä§ýF <ûfŽ—ƒkGeëË¹ÛÛ“ëÂðÖ»+Ûê3ª«îs¯é>Gs–Û–ßó"žc9¶¶0¼ñ©îëwø!xœ•UMoEÖRÒŠ•@Ué^¹Åm¤®“u©â:M¡µD%ÅU9”C'»{•Ýgglc	É‚;‰B‚€Ô¤ž8ôpE´wÞwÖëuÂG…¥DÉî3Ï<Ïó~øë'Î¯ß9?ÅŽ“>Îøš“šßßz¿‚ï¹ Ðá"‚v¬B9äÙ6ÄžÌR¦c)`“	Öå)B™¦Z‚d©Ì¸éëÏ«šç^]ê›åõSæ›·¿}.½ºÄÓkæ¥÷NœÕLí¯U½JT»zèó	øŠ§æÓw^yí@X”83…	3¯/˜G­—ã“È>‰ø09a³þóÚSÕ_hol.þ›‡“Û5¸Ýã€¨ˆ%‰)èóŒcÑ=’ Ç}®@îIWMÈx7VšgHæ¹/þ5÷·Ï›‡7Ÿ]šgŒ·×óûIÆ:—£X÷(OP(·µxÑs¹êó0F!cûZh%c	&j!ªø[AÊb¡ñDL³]¦8’ÜXô\”Š ÑÝºTZ)éh™a4Ðìª1^ž*°gGÙ~ÆLY-Ä{.ªgQ„ù@ùÈq£ŠêÙF=XYUÐ¾‘”q¢ #O±^Ç^&S$þ¥8i2
ŸÍE5É+LG,Ã(FŠ™’fhoŒŽÊVPƒ°LÑÏ¥f·lÝÚ²‘l´/`Ä‘(Ú¼ª“H÷–r‹¦×Û¹ÔÖ±”ž‹¨ryLC¬Éx6‚ RØl2NY¢0L†H$KìÈ–îJìØÂÛ¼s®e	¶[ÖS´1ÍÌu»‡”E¯^
l<ÄúØlEßáqÒÑn!TÒÍØå”(<fœi*ôì1L¹MGìBPÎÑ@Ù±@ˆï÷_$Ó¨§-÷cíüxŒü««/PýË‰¿[ñyÞ¨i:aM¨î*4š•²}*æûÎ›_î\9†‚N/U[}4ªèr-ÍëÛg&4BØ:ìåce—ý`Íkp$§Q¶4¾â}–‘sz­ŠÀÕ r[»å")Ii•PÅ…Ý-Ï`QHô÷VÌý{gÌ—w?UôéI>ùØJâÜÛ*ôÓj`‰·îlÒlÑ¼.Jø™9´¶JÎ£þÎýƒÁ#¾ÐÖg?œþ`~iå]Xî¦f¾š€¦`ÍjÁ•FÃ‚òÖ"±fçÝN§4ëËõúr4‚úåàò%Þ0¨›ÔoÅøýäÛïÙàû>r­ý/¾}µt²]î!Ú4óR_J-Ï‘„7Ícµ¾xTÌÜRóý<Üµ½¯Þ0+ÃÏM×ñÌoÃÆƒ?GÎ_vwŠžä‡ƒ¢xœ¥UÝnEV@a[AQ0ª€¢CÕ–DØnÜD •$´‰ÚBd›Þt¹˜Ý=XÏngfX´X¼Ò> €B¨À=ÜpÏð Hˆ33kg7T–½«™ùÎßw¾9þµþäêwož¸lH‘ñç%oî\{·ã7:Û[Û»÷·¹9÷äÅ­
ütQDÀ€v1Ôfor¦ƒQ6t.…–e	Y`±ræ½‰?ñäÇXpÈCÜ„~Ão6@•±ý6Ö…âÑ&<¢ˆì¢øv~±øc~‡~ç/Oz”áÆzd^Ø·*‘¥2	e^Õ·:†J3”„2/‡úÜªD½úŽÄ‡&y•æ2D“^	”&»)ìÝ~N ‹Lá²ó¥ÓOñÛ|­¸¹°Xü´p¥öÙý{í)“ËMñçÂ'c"3à‚iž
Hã
Û¦À:Ï`Ò³ Z*8À$1o‘”Æ†2ÎQiŒ`’6ðLé<æá‘9ÄH×þÕ¦×T™×ëcñûË?^˜õ—Â‡
2&©Eš8ùÆ{ë®Šï½î˜IE‚è>B&Ó}ÂØì2É…‰Í‰eJGœÊÓ&NO’|%ÒJË<$ÕPiWYÂFÎ´‡uH¥õ.ÙySu6‚ÀÄ+ÖÏ¶‹Î-;¨%GÃ!cdÆ—‰f×ûT•I"¢¡×§ÀôM3S=KlºƒTé‰‚(‘jÈ•ñGÐ!Kr´ôt¶½æÞžw$¶Í:uØ7¢“’$lÖ¼ö±ÎULtè8ûªXgì'«ø˜¨ts\qRÕòŒ“i×+^œ„Ë<ž¢ó'³ÊÓíÏ…vNIBï{Í^×cI¤‡ Y°tcù#/Ñèÿ~6½Þ×ÖA
æõß(7Ú¨BÉmËhw[)c³ØÊ¥D¡+Ç­cb–'ÕÓë•Ó.bT9[­žåY–JSnÈ2ð„kŽª^ó//¡ø°bÒA…²ôØìYN UüýÊÜGòåÄIâ*Ug¤yÏ¨ÐÝˆgj‘tŒ€‡!ZNŒ ïÞ¾&özf
þu~íŒµÅòk·?Øqí=1ŸÊÖî™Ëj¯J„aÙÆNL7Š—\ÚˆYNL"PSnŠGµ+wª#®Ñ|¿&†\9§5Z9.Vh=-µâŸÚÛÅ\í.|ŠÚÌ¤Ár|:ŒÔón=OàK·’$™FX-ã+Û´éuôqí2;%´h=#øêì}+÷NIèâªB…Ò¤”ÿEÃõS¢^¸CRÞµƒšF{@»#šØ£Ñ!í”)ÑåB‰Di®á OÃ6W\ì;ÁHP¤×âõ7Zÿ2›Ûøí(†oxœ¥R¿N1ÔÀ€`¢`"ùÔ€99ÔM$0°D—‹Iå>ñ’ãÛÂduÕÔG ÄÁÁwÑ7ð¼?&NMûµ¿_Û·ìhç)bh¨£L,jÖN«ã£À{0mo"A±>U£ØæÚ Á>káºÃwÂJ`ÝZhô¸ìL¸³xn%¾Â[œÐrEr@|Ši]ˆÏ…×PÓÖ|\¼?q¡3nÄŠ¡qh+‹ªÆì'¼ÏÀ¼~ƒ`ö®™Fa¼¹ô,»Ê´R°\iÎÞ`´Ùk4á0Òúíå¨‰çèê¹¢0×ß_l7a®”“‚—3'çýtãïèv0Y3&P$]æ9±w®½¨â hº(%qË¤f:€’ŸJb˜HŠØYª:½—ÿ«Êžj¶:f=‚®ÛÃlŽêÔƒ"3û´íX8ŸA\Ä}½â±]<Ô«pàC/—å¨e¦H¬‡më`˜xù¯Þ$ç(ÆxœQËJÃ@e "‹/(v#· ¡CÅÅW‰`[tÑ]ÉØcRf¦nÿ@æ3\hÉ·‚à/¸q'Tóh›Zw.†9\ÎëÎ|=¡·z¾DF<+ èf7Fâsï¤P² ÔëÀ`9”˜Ü¹&³ìý÷Dx|p
!pèŽìòjŒä6¯Â-(†#Ñ¯­­rLÛ„+C*c0˜ýÚÊèQÄ¶vWK$cá8,æpÄÃç.)[‹n`ó.ÿ¸MÀïŠ¹ã{ëY)xÑ‚©™‘¿xhÈ‹E<FÅ÷äŒÉ°ØNœ5Til“Ð`nbßH½ùGT,ª%ð)‹+¥´^0Û|œ^>ô+P‚¯Xj ^[zò%F^Ôõ…\ÚTP”8Taëå¼6zˆÿ¹T"¹E\‚YøÊ®ßÄœX#OJ˜ß¥æ/KmDÊ¥¡2áB]ƒÍ”6o¥0Dab†s[_¥f>hœöÐ˜XéïDƒ¯_xœ¥SMkA&ˆEæàAØR´Ø—P%…ìÒÖ@Ci‚¥¨IÌO{Ù‰ØIv&iK•àÝƒ0ÿ„‚gÿQpö+»ÝæævfßwßçkvÿÔ¿kßž"p—QŠ]ñ³†*è¼kžõ{½ÎÙå¯×•ßZy,Îó'F1°bxc;!q9¨ž™ïã°Æ÷¬—†l>Üy9„5Ê¿›»tJ['|æ¨µùõIQPHòËÆÖÏ‰‹['ÉÚ.¾èAV•?m/relêAˆ6ÇüŽL|M¸ ô#ô>¼SÕ9×(çJ7tG ÆX±(AS
l"£@8ð	vÉˆ`lß/L-bˆˆ>Â,7g¿á@<LE2çÜ@b®ˆ‚pp*Õ+ñ&æÖRG¯äÔqc±_?Ÿæ[¨ö—Ý~Ï¬"c0@…ôÛõ•ù¬‚Œ¡	Ô¥qm¡¢c[d1,²ô`¤ÒŽ4Äó,¢|>f3ß+«vRùÁÖ‹F²âzÍR&WDŒc9-µ|Ÿ[.Ÿx…§t¬‰;÷£(¬)U¢÷–¾ßT[—êŽ¯í`âãc:â›¥¯Õ–*/GÍÆ«Ãcdð	2È(X·’_5íý-N¾õ,r©mËŠv±SpWJ)BhÈÏÚî³{úß%ý¥ÏÍNN/Ì~5–Õ-=¨ìÉ­Mýî¶zÞêƒxœ›!z†o‚
‹nbNÎFF–]GŸÍŒû™UAB
1º
.™ÅÉùyy©É%
iEù¹
 a¨@jÊdAVaÆâÉê¬zì õ1iA“Ï³3™“yÙ´"¸ôŠ¸‚SSJ2RRò“KsSóJK2óóÒò‹À¢ye¹©1º)pK45Æçæ&æ¥€Õ¤••)$%&g§å—æ¥Ä¨éMVåÈ‘L­È,.ÉÌKrRIQ~NNjQñäú¬1 ÷LÖå2aš=9‘Ë BO-éF‚€xœSËnÓ@•—R«²@ºBjhv_‘¨’ÑÐVÐ¦Å›."?n’‘ì™Ô3IS	)ÀŽaÃ–-BD*â3ø¾€/ ul§~„¬°ä‘=wÎ=™ùñYûþA›ö´[.á£+¦é¯üýìåóäO€^, Àn:Á(ÀgÂËˆÃAÕDÀ<ƒU^6Š…úÚ@N÷–åûí´W}ýFÔ.÷œé:=§OKž¨ñ¡­>K=QËÔß‚N!©Ê/Íå-qqDŒPñg¥ .äKòoóÛ$µÁÁ¢.è³òœ'.íÁÑ›C5;Â`M®LtAô"õÀ‚0
„ Cº]°</gs‡Í‹ÀæÐæ—\ _,©ˆö%ÄIÀQ=lœ	u€„5¶¶ˆ¸XW¤ÌI¥µ^Ÿç‘NÊ‰zíÙ·³éí—–BaénÉÎ1œP—8–PQŠ¾%þqÞUá†´Q¤üÆsNòÍÖñ>znF‹<¾“ÝMÙÞ_¹7“Ÿ™U2NædÌÅpAD?šK·ˆZ>¦”©Š$‡ó×Ÿz™Ã¿È˜•:Šú)3*cs}£¢¯oó[þÀÃ*ùÑ 'SÝ}²]ÙÚ¬Êšy¸›½yÑµøVò«Y*{D]µú@ùs„=*!íƒíìjÅÕ©Ù¹Ï;–ÇÙ£†ÙjAó•Ù–?wù®µt7\¤Ï «åðÜ\MN«Ú5«9‰œãj‚•LxœTÝjA¦„º"^DDá U’h êMRZ¬B/ZJëÒôâdç$Ü3³IÂ¾‚ŸÁ»R| ï¼Ô<3»ùkRìÍ.sæœïûÎß|¿÷çþ×»%aâóÁRiçhïâùÒÒ Y#Rößïì E>ZØC…ŠIÙ2h²©Vü3idÍ—a›íC¨êÉ6Žaømùa	N‚áÏåÛÛÎÐ¬4+¡=kVÐZmu÷“­ÔR³IcË›ð…}\ä(µJ+JÂOŒ ¢ÖLlfL—¢LÔâþâLY[õr…Â{	8)Rô½¥?eÑÞ¢‹Øõq¶¢_«5êþ—“…0:Ë+[kÊ{q¾ò{)û˜¤§Æ‚éR(Û@!E´Ážô0JÉ@;Ñ Qu\ÍGUØÍï'F]ô¤ "•XoõNc•Æ-Ò—"§"³¦ìoµ‘›<Må‘)F©¤ê€TST}EÐbLÎÈ&ðŒµUÓÞ²G˜Ä1òX‰~¢ÔjãÀùŽ…a®ÇûeìIE.™7Ì&ªGJ’
)×¦Zs±œ>vsÁÅÈx,¤	Q‹2k³ÔÑ±\OûZZzâS@\xn=ëŒÇ•‡Sì´#ì˜ã¢Š¾W MÑIÂÑóÙgšôHkÖ¨.gËáé$ö=’OÓ¾XÝ^wf&ùrº}iO‹Ú~æR[vüµÚÉ­Cù«´T`#xå°YY52`Þôbx¸¤–Îìtå¸—„áiÞL†xT³ƒƒàò^•¯ÚÁk°N-_Äé)‹­ÌfIçWøœÆ¢v­É)¯dîõÂˆ}¡àÃL4¦­Ûö¨f°3¾ó³>ëCÝÏ[ÃoF£0ÌAìŽ¦Ô=n"Ý„~p¾™Maj¨»ACêF~¾â!»Îj¿EåùÇj„ÉÙÍLéÜOÆÇ­Ì;C@ga”éVÉmBñ€åo…¼)+›„·nÜ¹µŸpÆÝˆ§p@vø÷fåÀ¿7Úîo‚¾}xœ…TOoE—ÕÚÊ¥¨DT¢QŸDI)xS,.…&Ð$UÒ ÒªZi¼ólØ13³ÞDT½rà2'$.=õ†r…+¾ §ö ý¼7ëcâKÖÎ¼yï÷{ÿû©õôIë—AëŒtÅiUò!üýÑÇ+ô…´ Àg¨%Üýbá¶ð‚®v„,PûXô¥Õôqeî];Y¹>
ÿ|r1<¿õcûnmáÜƒð×æëà!¤–rS;%—þ&„k—Ö!M3¿›
ï­[åg>©^é1Í•ó¨I¶Nzd˜÷¦—›ìëCç½Yë7v.ïÕVt³fæÈÙîÙ	É*îSˆiªdÅ×êðjùj£öÛ¤¬ºÝHOC³¢pcýÏ÷ç$2S‚ªAÿv2²f¬$:ðCœ¤ŸààáÆ‹ÖþW¦„¢tÜ3Õßá!GA£L?ZE^@ßX°B8ÀeØ®_£¨°ÌÁ„M‚4 šQË‰A—E-Ãb]Ýtø*±/È±vr„ªö·J+= ¥§dP©<‡RÜÞÀ»á‡wö›¨ee¬„n
±ÇJ‡.‰Ú“F/W—a“˜2£Ç¨ê;í$ê”Ör&É/ÒbÓI/9xK*—	+;ä’Ç9y)äõýÊ*×¢ë¢HªKÊþÓºÅ¡Ÿ‹‹É‹•å&¹W(9tá™1ZK~·¡÷8ROi ÌXSÄ0"NŒ1ÂŽ^š„¹ï,†o×ÃƒÍß¯ðTº™°+å‡“Ü~C©ö(Ã£­Ë—ãÇ_6Vdžê$q¬2¤~ÝÚ^˜;Wá;oÂicÉ½ºw.­l°Éˆð‰¶îI‹Q	<îú£‰¦Š£È†uÉÃó­«çf“‰/ž4ÈLøÁi„ÓV¬!ŽÑ-ÿïD3ák'l æ»qŸóÂrkº9l2²I9)9³-¹:+m¸^]k·§&Ï¶®ž­"NlF†x…–Íê¡¤1¿25ßnº˜7	7,7ð—Ñœàá¸Ãí<íªÕFÐ€½ñ?`Ÿ²1»vd1Ø…9{ŽñÔµÿÑ–=6ÙÓ.Y†ÏîfyéOÇ´•'K­ÞRÑ|”äÛÔ:ü¼ý}x¶~îå»†0D1Ê©ïöÐ7#t ;‹­@sPï/‚çAxœe’ÏnÓ@ÆU‹m ‡‚Tþh”
DEœ‚€¸TnUGœ\¡M¼®ì]³»N‰„Ä Â^8qã !ž‚/ÀpãÊØŽ#”ìÉëýæ7óÍÌIç]çdãc:VòóÖÚÊ9ww×Ý¡ód°÷Å]ùvêæìÕÉø„”E°ÿì)…žç/n#ÐwŒ-}h@‹ÓoŽþetOýÝ¸z9)Q:‚’ˆŒ2
¯‘çÚí»þd\ÐþÚ÷áêËó2áeÁˆ‚J¨þºê‘ñL5ËUyR‰r¬JAá8Í²J]ˆ”)AÌP2N S	QJeQp’ðFßîtþðñ`?èêÄ¼¿>LPÃ•rÖ0¥þhn\ÆEN²¼œõ á£”1Õ¿Ío|ßF_=4:–íþA ÷ì%jA„¤PÕW`5Wn­ NiI@3,6²	ª¸Ú4áÚr†ª5Ncí›}æÝB-ãª©›<E5?$G"4¤	"¨¬	‹é›<zÝbÖ|úƒµ7ß„?Ö«»™ÔÃkÙ (æfmIÿÍ.em7X×çŒŸö¦7û~Ž³ÆÒ0ÊÞ6Éi»a½¤ÛlW¿oãFð–ÂÞÛW4={ë³„Œç2‚Äxœ…’ÏkAÇ	èÁ”´A„Ò‡JzÉf‹—R£I¨„%)5b©–ÙìËîèîÎ:3›DÐ»øDð(þ…ˆ€WñèÑ“¯Þ¼élRk¬Š{™™Ïû¾ï{óžL
^öƒÂØ×ÊŽD0‰
£úüúrÅ½5wÛ*ÀL|ØÚé"´D3sØœ13)$ÞÏPéŠÙèL&Ê¬*‹4ä°¬â†“kž¥çW_®ÌeØp0®C9Ò5‡¼å@×èXÓ¡wÒ³æqúØX3Ë’1qÛ¶%ÙO˜Ã°=ºÔ|s½‡Zr¢âL¤ˆ£5Ë75˜J1ä>*«h4¨Ñ
O¨Pd‘ÒÛV…6×ïÌêBúê8§®´ÌúæaÄ£È„Ižhô­â@H@ÖãtÈ4p*KS!SÍ[óµ»N¯yô¹Ãi¯sê²B=-Hbñ$ #›H- ÉwQî*‘TÀèÏzR¾UþÑ~·NOÛ%:Óy\cD ;¼„03>l‰Ìg^„ºô°½J–Û6ÉOÓŽë,ÿâS&•©Ûç}
$‹«@¯ÜÅ¥#:"Õ\$ô©ûúÜv^üÔ>yz¿ÅKóæ˜gp’aŒk´¼»Bãí“´Ú{tïïü6ù¨üL°gÀª¹³Š Gá_Þaô½wž¾Ý\œÔvÝÂ˜•‡à(‚ãzxœ[+}Jf‚ŸnNb‰njYj^‰nbzúFM!F®]Ç]×0×Í®Œ;™]P•èæä§+Äè*§æ¥(¥¦d&—$&å¤*ø$–¤æ%W*¸‚T*8¦§¥¦…|€ê&[³ºÆ€LŠ2kr«¸Ð< X^IQfj±­åØ)Ô -JU@‹åš|‘ULPA!:F7F·(1¬¨(vò3Ö‰²x°x#~G&¦§N^ÎþSÍJU89ù‡¢6>s€!•™—® S/Á¹ÑÂ0FMO!$#U!7±"3·4W!¯47)µH!?M¾P¥
Å¥ùE%©)
™Å
F&&“ßsÊêA\ô<—^P°‚	WPjIbfžBbž‚cqe^rFQ~^~i1Ä1“ÿq:ŠãpÞæ .FIœnŸ¼œÛK¤ýãž„ËÀÉ‹yÌ±èxÆ£ÌS L*ñ@‰x ?ï< ¯~à³ärxœ;%3Mz‚gj^JiQb^rêF%	FNW?—Ð G?g×ÍÎŒ»˜Mà’º©e©y%º‰ééº9ùé
1º
Á@9¿0ßTW˜"TÁdWVg„©“'²þ—G¨p£à˜ž^”šžXÓ±“í‹8\‡Ø* U ÙÉ7Ùg2êL.åp•ÑQÈ/R(J-È/*IMQÈÌSÈ*ÎÏSHË/ÊM,™¼‹#ša{Q~iÁäì¢“m90šNþÇÙ¿ù— #7’['ð¸#¹³Wfòž2˜ŠÉ&¼&(ÒŠrù¥%¥%¶I™y‰E•
v
pÙx“'/ç] MÂz{ä7‚¾RxœRÁjAe^Æ“K„(ÈLŒ§èjÂn–,®JV‚ ½Ó5“ÆÙî¡»fta1Ñ ˆW¯‚0Woõ _C¼yÀžÙ˜EØ»ê½WïUõÏwÞÇ÷Þ§Ô;Ÿkä"&6Ê0ÈXõÒ›¶çjö×ýÇíÓ%
2•Bà· `ˆ’Ã““6¸6Êx9jx´; ƒdŸ=8˜W½»±|³»f ø½•ŒÖeóz!øJJë0…@À?åêÍÆ¦×^0j[9K­ÆÀdÝ@àXŠýVu¸yÕÛ>‹†!]ÄThG³	Œ4º§DB‚’*{»³ºä·Ž±PCs¦C&`§Õ‹~‹ö™½‚Q‘$nÊ‘œýÒùêŸ
hßvo\øßBì÷îòþ’X"ÔrgI(Ý`SQ¢„™67ƒ§{Â Ói1FéÊÆÙ’œ‘Ò·4—‘˜"ŽÑ˜Æ0··.ïÏ¨†	C"6@
r­JÁk[N¤ž»åæ”®—NLdN±1Ö}í>€Ó‹Â5æ9bLBI¸FkaF·Bg®f'¬ÈèÄ8Ð%…ÁÚltœnvYû£wÝ²Þî•‹©>÷½E ûa[ÏÿÕ¥þ`!-ë?Ÿ§}ë_;×¨þô{´9ë/‚bxœ}RÏkAf¼‹+xéðÅº‰?B&.ÙÚMcS¥/%N²/ÓÅìÌ2;ŒüÌàÉ^úB°=‰‚E/ôê ³Ñ^V’9ÌÌ÷½÷Í{ßðÞ¿#¿È‡ä¼3 ÊÁ!råPÆ&CòÚÍqãz;ÇèÝzáò6UÈ{#ð3<Æ$2CÁ¶`°£Çõ“¼è•W¨s–!&÷‹U5¸ó™ªÂ>8¹€þê];‹YHîN¾{%²6·4e})" Ü¶?}„à0ì!LÖ8äæ­mMÅ‰’iO¥A7î.Ù–ÚC±
‡þ€²¤
£O6ÊglKÛþ"]ôW3Ðö?^øßÀBãú¥9Îõ—fAóÆòê<_1ò äN5Gãêí<1Dôe¥ð4ê¢Ñóøi"$i©0€0;·*Û ýfsH}±qåž¤h[µr \sA¶Çî4iºÚ¨hÈÍo‚—ŒxoO
.ÒdÚ£Þi®èo›ÝÅëZóPÿlºPÃÈí†œÊQ­l®¥¿=ø,Ïô¬ë[*?BŸ·žÍ¬u£õ<Ÿþ¶uõ\,1èº“M÷§Ö/òþçà$‚FxœUQ;KAfD#ÁÆÂ€`!9#ˆ•ñmµŠìå&k$·{Lö"±ÑÆÆvËbea#ä7øìÔ?!¢Øº9ór«™ý^»3?×¬Vc‚ ôBâ2uÅ.—:­ù^ÞïêVÆ‡÷r»éÖ””€ÀÜ¬<wy\¬Þ±T‡’® Ô°*¡àº)á¡@Ê.!²ô°R´d.½x¬î¯O°¹¶!`äÀ…ˆ´eMa^‡„àó*¸„¶“h…æic’ùÚ˜>ÇÜ*èc„€” Þòl]”=(JàVÆ=î–ì;ù\'"6ñSpÃB©éµDZÙhO…º!°vÊò©moÑ€S`AÂ‘@Q3é¤¬d3£^K±¡Îh¶H…yËŒš×ÍG6on·>Lfû :æ~{â1øwRè/¹EÉ©šJÚrÆôf^»öaz²A×ÊÎ²¹þjÞ³‡›mÈ‰¦êØ©:©&í’²âã,8ŽýdêÅ¿˜zÚº£†®~µóÉ~"ÎÓä‹,xœ›&Ý.>Ae£ž#³¿ûfOÆýÌ“…XóLròÓcÒ‚lRRË2“Sí¢ctctÓ‹òKbt3SlmÀL;… ¨”7™Ÿ­b².+çäl¿6/act…Ké(`ÕÏ¥¬`Â’‘ªš—RZ”˜—œª –RÈLIÍ+ÉLËL-ÚœÌUÃ8ù5÷éÉ‡xt'ÿä™ É˜=öèƒ$xœ›=›qÿ4Æ…Œ›«[ì&s:„oÎr`cœ\å(­“^”_Z ›™b«–Sbæ¨¥—X+Ô(è¦+ ÅòrM¾è(>YÑéÿdm/ÎÉ–ÎâŒ
›ƒœÕ5sòÓŠKŠJ“KJ‹Rr+’RŠR¼¼Ô…Ì<…ü¼T…ü4 k\\X’*y¹6uÑaäF²br›‡ªvÇL–ö‘ÉHUHÍK)-JÌKNU Ë)d¦¤æ•d¦e¦M>ï®¾¹ÊC‡iò¯]“K¼õ6¯ñ~Ï }ŽWÅì‚þ:xœuP=KÃP¥HªM‹«`½(H‘¦ÕÒ:µÅÁàâ¤âbbrÓ’¼ôåÅ(¸9«owt/€“»¿Àÿ ‚`¾,]Üî;çsî¹oKŸ‹÷ËRJèhu>'ÈŠr¬Œ¹×™VJéƒ*A=ŽNecbØ×ú!¬,¤_êr¢Tc©j*Ð6ðÒÖ±p¦J)*¡Ç¨A§]F)“÷¹È„þ,4ø‡p FÉ˜&óíüwº/ßšý¹’Tá{±¦ô )ö|Ôm3À"WàjÞMR$ûÌBð)éSÍ…À"¡cüÕ“7áÓ2êFN,;¨Fì‚ÆÀA-š‰‡UÐ¢k¥žZÑðZG4øhn¥k÷ÐÔB‡E‘všÓKða¡•ö¿6så}dI.NÎ{ûÔöØŒ‰»Ù5:Å»<	™2þ^¬§àci=c+¥§_'ž¬	ë ‚Î[xœuQ=KÃP%‚‚…‚[‹^ëÒQ¡TMiíR)§ØÜ&$/¾¼ø‚.þ‚·ÔÅ ]];‰ƒ£»c‡âl’¦¥¾é¼ûqÎ¹÷~=
?máÅ&‘RB;¶p³3€¼·[ÝŽ‘hÄt
 jèêP­W e Êxš@ñ<@ŸåCÀêr¯›ÐåÙU8#]F-ô‹9›œ3XnADò{y?É“{©Pr¼[’&Ò©N¿43ô;]~Ò{Û•åÌ?b\>€»š‡M«þÀ$—àhîu<FRÌDð(1¨æ€o’ÀÖ‡ÃA‹'^Cü¢B/¬&JpbZ>8AXs† 1°Q1q1Z¸±›[Ú^_ËlàUQ(F|¼±ŸÍJPÆ–Ø,ôA`scÜÿPV¸¦Ô“É_•Oa^AûÀÑ5"9Z.‹ñçC+¹Âœz4EæŒ{j#	¾«‹	Y_ý~>g¹¿ºxœ­VßoÛ6~÷_qðÃš±ì$íŠi€,ÖZ‰mXFÑ!ê%$6é”=ÃþöIÙŽÓty¨…D	yÇï¾ûI½Š»`:½í3ç¦ÂsË{
õ’^©¶ò«Æ”RÃÝ£/·á90·þ
wJcçýþjµ
2™&RÞR}“ïú(ú¥©«~{Àá}DŠ‹7”éï¤_¢ˆÌºB]"K-ØB—ÒÀE‹¾AÖy Ðô/·ÌaÈ1œõÏNú§ƒÓ³ä–‰†Uç0þ|‹íb#Šd£Rô"¿wÃDÑ°‚öBQT\—v»Ì?A—”Â¸7£Ïö=Ìæ]èžÐïÎd×iaû§5ÖuÈ½Ÿ}ÊbÎ‚–5‚ÍKxÅÍ´iòü€–þýÙÇ¡´IKšB&œ	Wïï}öXƒBmtPˆÆÉ™JK¾D_2…’yNáüÖœök]ƒ“³ÀÊÅ”#Äâ(( È4\=@|Ä:V¾°6»¯šH2ÌYSÈ¥ª™1\4‘qÍ’ŠÚr½(Q0Ã¥è¢Ü“}k´á9OŽXf7Àà_ô’Pan fªà¤¨Ö¯;Ë :hn¯Fc¸žŒçáxÑüj6àS8áÍ¡ÌD¶w¯nÃnçéTƒ¸ŠÌ†jTK‰™“Ã‚)`J:F™òhÑŸãÉ4EÔÙzA1Í;q>²àVk·èq>ƒ‹—<ÅK¸‹{qO°õ‚¥÷xöáBhž]Â?ÄB€_|íÀ¾©í±¦Ž{ÙJªLûÓìí½ ‚TÌö¾ §Ø*î%\0µvúÉú²1‹ÆÄ=_Ë.òÚxzÜÿ4ósîã7£ëÙh:MÆ>„óò¹ðC*ëšQzšF	lO)2Ì42fM?Õ¤¤„¶lKI5\c-‰¹)™m3*ž n3YÐ°QÄÃï@µ•9Û¥ë—`KSó¿ÑŠÍÊÏ³á–tÞˆÔé´Ç(Y	*»J¥0JV*ÔcVH¥Q“èµ6X{úŒ€˜Ö2åtÃe°â¦t>êxã“0zkeÃŽ89`8¶‚«™;BË®·4žò§d²´ÝÐkG÷µ‰ÍåÄ¥Ñ¶ÂtÚÙUò1ü¨à;Á,‚·Åq¹m®m ÛÖÜç`•
ºX2ó’¼ …·NlÔÒ’)–ë‹ë=}$‘KTŠgm	$•LïðÜ;‡faëÆ“–j½ù®ýZ_¢¦<_?IîÐéüO­ì­MžÎQYß†þZÐvÿíý>3ô\¨‹·|h
žf62
ÄÐ¦0Ú`ŸÃÈ H%ÜØ€Ù{‡p™Y'4£\QøÚÛåwÛrv;|yŸWây=š-¿©âÂø,³$ô•BðD@›ŒF†u7zÜ.‚¾õÜÔÍ YÃBÉB±zß”(nÈ´yùnòxá&9ØZwuEWl{Û7¶í¢²q°«oZ
©ìÒ;B–æ„n@º©û½LÊ$el»¯w±±-~¹ºÞ„íu1–”*V/èÖh¶d?/½Æ”Qýoº˜n•¸GàŠZìüK3šáˆ!xœmÏJÃ@‡)ÒÖC{³øÆ‚žš\ô"Öª µ‚MC“
B/Ûì¤.4›°»‚@Ø7ðDÄ»à#¹M©^¼Íð›ùæ›·çúË&IXî*Mõ\½ï‘Êz÷"»atÂãÊçZë/‡±W¨aˆñŒòF‚kèQÁfa9aÜ*,€°\0wÕÝš?êwàÑî
hÛÚ|W·LÝ90gN£ÖíGË,ƒ¶­ÍÔÙyêfô=‚ÛG`XðaÊ-ÈeVp†ÀE’É”jž	 “lþ¯’²ªJÇ¨ŸXÏÉC	W9Æ<áÈ@ÐUNcï{Ä{7ÐÑõÀ›Ä²òî´¬¦m~Ç]ÎNÊ€xÃ‰¿JÀ*
½ KsDNå=m¨d`esë«´DóJ¾¶í——öÊI@¥†,Q¤Ï8ùÆ‰éJxœm±NÃ0†U!wÈT¤° “	’$J§†NTQhYƒ‰/©%×ŽS: Xx€Jy¦ªL¼o„“&¶Ó÷ÝÿÿoíåÁ9J³Úï´ˆëÆëóÖçÖq-æ¹0DWüA ¨¡ãÌîÁ¯®Ê]rà5÷QBáœÇØ‡»È\”,ÕYärvÙM®ûðlb©ÈQwªrcçÆ¨’ý{§\‘nùEH¹$ïƒÍŠ&	Æ†ËBŒå3˜H^é’Á§Pä4EàÒJàKVh*c„¡VEV¾´w^jïø/‘ã…7pæŒ§øÇ¦œÙ <á¨Á(ë‚ð4E	ÌëDÆRB¥Ù Ñ¡gùŽŽ-Ó¸U%/~[n¬Â†¯áXI£•…ÆLi²þnŸ¶~ ÆÀÙîBxœÛ)øTp‚[r~^ZfúFeF6g?7O÷ÍŒ»˜¡Â“¿³(ò:ƒ™¥E‰%™ùy“eYUa’î¬>²
Ñ1º1º¥¹‰y1ºE©‰)‰I9©
5
1º±\“²JNžÀÊ1ù«ÞäŸ¬±¬‰y)
%“?²Éé¤&g¦e¦¦è(äd—(”d¤*äg‚´'#ÛX¬–_4ù?‹Ää-l=Á:
X,äÒ
V0á
H,*NÕQ((ÊÌ+Q Ù•’Zœ\”™”ª™—’Y–™Rš˜£PXTR¬Ÿ¦”Yt@NÊæVvF u>^·ï]ƒ³^xœ}TËjAe\L2(º0ˆ	7‚‰Bf$`\˜wL$äa&D‚¸¨î¾=SfºjRU=qDœoÚè_(‰àÖ¥  ¿!¸s#¸ðV÷<:Ã`-š®[§Î=÷U¿ÎrßÞæÞWrC
u£¨°.•9U¹“…¬Áþ^ÜXÊì¡XÈ@E Û[{¨Q5˜áRÐ¿ƒLA)`ªt3®ûzéã0dY—GìŸå1{}îC{=-Eó53K?ÅàDª@OTÌ,¼‚b çíöÇÊµ±ÌU´ƒá³D_²ì—Õ™™DÆ¦›b(UÄLâ&ŒL‡_BÆ`wÖÎZûÕAÑ/£ˆQô
M¬„vT6ÌÄfh£bŸ@XÈ	U©DIÕ¤Ô0j_qu;SNRÇSehuB[ÈËü	¡®3íçG“‰LÍ_"Ð™é“<Pp':Œ…Ÿ`Òk…<¥ÖCå¶¾FÉZ•.R*5”cO7µÁ(•Ïˆ‰iÝ’>g8á¦ZÈ»(uÐ‰J±­¯«nó–¦œ±#j/Ó6(ävUôë§2¿
:ö«…ŒÜ;%ûápÔ­·ì§Í µ‡Fqlt;±›–v+Ÿgt 
o  ¡yP‚ý*×½^"y
cNÒºh¿Êóˆî£ž:‘TŠSqÇW“þQB™!SOöÍæä¥¾Æ¶»WÌýºX®£ÏÃfšÇn½VÀêŸiÄŽjHW¢*Á*†ŒÆT;ë½#§*‡vzkü•ý¾~ƒ2y#µ/¾04ø”‚UW‘r‡ö¬;ß”#—*Æq1˜Ãhazî.}“:‹´Õ:"z•ëN“‹`­ßËÅÔfîÌ{qHºmšêROŠó.¤IŸ  ¼fÏ[]ÉŠb‘cnO{òØÇ·F¼é!¥½•Þ/» ’NrÝÃERˆÓáânWkëÏµí­T=ér ¦š	¤;¢Ö)hŽ)rŸ‰+à!Ä.7U`x„öï“w—·%„Eõ=!M4æ=Ý=Íýwm
œä…xœm¿JA‡9l4DH!6Nc$à™Ô&$&˜˜?ä
clus7îvÝÍ‰ ñ„°¾ƒ ˆH*{ßE¬Ý;Z8ÕÌð›o?öíÖz¹±ÆVÆ÷"[*¢&òQXÕ?³þ¨u‹¿#ØÙ ¢‚#tBC2ª M˜ ¾o¦ûO	~µz!çûù±*ÃØò*›…žÖ7u¶QÒ{õ\«¼ð4`Úo<_·¸ uŽàœô<Œ©‹0¦1²ˆ©‡@™ÏEHåÈˆOþ•“†BT6Cq]”’ŽŒòè2¥Ë]êSô€‘eD\Ü­£jEÜ/%²§-=o®¥ý{rÎ"F©äXèYk[ßµÏ6R¤2ïáŠŒ“TI˜Fª_;U½ÚÝXI?4)]èr]ê9Ë,Ñvªg½ùYí“÷íNxœM1NÃ@Ee$(‚\Q!QM(`“¤„@ˆM  F©{â,¬×Îz(r *„´A
\€£PÐä¬í¥ý?ïÏŸÏWëãÍz´ÖqŠBÍkÖ*G½8ñjÅ”±+ ÐEçŸÙ#8TQ¸æÔÇÈ¬€[ §_G%Ò¬cÔ‚*W §ÌÇj¨pKŠ ”	aÁqîõW…1‚ú¾M¶ÆqªÈò¨Ý;»¢'ííùKûÂº\êt4B_1B}NYdW‚å† Â€QÈR"0a$pEI*|„®Œ³¤Ö¬'záj¯3´VZhÏÙÝ(ûéŸÎþÙÍÿá0‡¦1” bsáiŒ$N2L‹NÊP<!1ô·³g¹yîæÊcºéîôK¢X÷c¡dÌy*1‰¥‚€%`bæ=çwí_e™"îLxœUŽ±JAE!V‚"O°Ì
6–ºËLgÀ2XÌÎ{›<\ß3³VùˆÀô~ƒ°vù;{«|€`Vhwà^î=oKõ±T¯j×X©yÖ9µ¸úå´¾¾Ûâ(?”?ØzÙJ’|µÏ‹‡C˜fÙ¼}Ò’yÒ¨«†`Ù8½'iU\¤Ïâë^BœàfEÁÌÛÖ#IäšÉCpdzÂ!4â`¯ï;÷‹æ¯A€Úú4ÉºÛ’”§uyºÿ_!½ß_N´4çY"ô
HÁx®XŸ[Ý€Ó>°5T7÷v0:Øùr
jî“$xœe±JA†9ÌJ´2¨…•C‚"âö
jcNlS¨k±w÷_rpÙ;n—@ vŠ­°OÒYù:>…îí‘Êb`fþoþ™yÛyï|¶a8fPfÙëíðAðð)®.‚¯“µ¤Ip
•ŒrPQQ’iŸÞöGäu{ÀŽ·`DCÛvo¿Y«û,¸àe.cL][ð‰TIŽ«ËáãàšÎ³´ëÕè®GÑl¨¼lÛ%Ûs«ãˆ`æ}Ì¼„ö6g!_ØvÞÇ¿3%å™6T¤Í±äÇ)­Š)EÈÔ˜ÆP¨¤AB©3ØßÖþi…TŠæu“t‰8K3‡Ö?Ñ]ýÒêuó#øqJp îˆxœÛÕÇx¬ŸqC#Gj‰njYj^ÉæÆZ;8oòGû m§XA——KAAÁ5/1)'U!¿H!%³Ìts	P€¨ÏrØƒÐ¬å˜0¹Á‘E%ZW· '195(¨›‘˜—’“j«–Sbíê«–^b­P£ [09ÁQ¤X¨8bP85–—kr¡£$P†M$2W·¤² µf‚Ìˆ˜ÈäÇŽ—]S1\™¨“Y\¢Ÿq«Ø…´¢ü\…¤ÔÌ¼t^®ôÔ¼Ô¢Ä’Ô…4 ¾’ŒÔÉ¢E©i©E©yÉ©
I• A…â‚ÔäÌ´L ² ˜·x¹<ÀþÒ³Ñ/˜üÑÕ|³¿ókf Ûƒy¿ã”oxœÛ)¸W`‚sqIâF%AFæàÇÍæŒ»™A“¿±(q—$–d—d&O–eU‹º±úL>Îj4ùk™MIFª‚›K€Br~^ZfziPm~žB~Yj‘H*'3-U!?M«²ÉóØmžÂ®Ê ˆ-îéˆIxœÛ2ñsã†lFæâ’ÄÍùŒµv Æäö`ÚÅA•3¸$±$³¸$3yržÃn°¨®cìä=Žú›ß8Š1Ú–d¤*¸¹($çç¥e¦—çç)ä—¥ñrär2ÓRòÓ°ªÛlè\Í¸ÙÃõ â=2Êê™'xœkØÆ7AŽ­´ %±$u£
?#[h€‹cˆëfKÆÌœa…ÝÉÿYDÙBÁ¼ÉR¬*Põ“]XƒÅ2SŠmmüB}uìj€JÀœÉ/Y-| úK2RÒ3ËRór“SsSóJ<S€dfZfjQ±BI¾BQjZjQj^rªB¢BJf˜S¢”šœ“˜™«š—Y29‚­=j¸Ð" U«¹ô‚‚L¸œóssct‹S‹€6§(äd—(ä§)À-ÎDµìÄÉ·Øµ ñîZ<ë‚®dxœUËJÃ@†É6ø Á
âØ‚­Q)H-^ˆ .d:sä2dÆEð\9ŸB„.\»tíøîÅ$´µÙøÏå?ÿ÷ùê¼<9o±ãFR±[%¹ÁñÈùsÚþî®þK`ž g(N)„x&„°Z°Ï»ïÕ5L®/÷®—®S$õv+1~x¼ÖŠM€)˜v¬ì}=N˜„˜†˜ÁIÂ¦˜8e¥ˆ°Ð`r(0Â3žËART+ÓÅ…@­iPÜÕ¦Z¡¨<$d<E­Jóõn[ùÝ¶¤¡ïÙ­ýŸÅþt4{i?NWÜ¹¬ßÁ²×à±<€^ž¦œiT¼()$$¤ä¨5!j\{~4Þ¼Xpþ ó;ãšYxœÛ)xY`‚kiqbzêF~FÖÐ`Gw×Í–Œ;™ÕÀ‚
1º
î©%
A©É9‰™¹
¡y™%
‰y)9©
¡ “åXU ú'{°zM>Îj4ùkYbIF*6=Å
‰ÅÅùÉ™‰%©)
å™%
 …9‰É©¹©yUùi`‰¼ÄÜÔâ d±BfX¤¸ 593-35eò¶9›§°«2 Ž³D±ì ‚²-xœmQ±JAåìrÁ)Dal!§`c¢hAÑH´°Ú»»,Üíž»{9AlmD·öD±°S,ýý ÷NˆÛÍ¼73ï½}¿w®®‡È©„4õ2E"|Ê¼õWšïµÆ¨¯ê@5ô0ˆ	K Ï™†á4Fè[Ž¹]nÚ(V1iÁl¬›‡,ÀÙH7áÄóÓH¦£«¶×ß-sðÐœnÌ×,C’Üó'ò¬hûæqcÚ47¿.R)†Œ"0
™Íâ‹LƒàªTÕ%J‰€r¦%s?&&ÈG4a	p’ J-¨ì²£RXÈVÝ­qN3Ix€Ð–"KÍÂöÝ‚yíÖÍG§^ù2/ÝFGä¨ ƒÕÍu±I‚6 „|€$žf¨4ãQy.¤EôosŽonz3î_f¢=µ´/ÿõkð³0üÝXŠÕÖ‘l$©MEi‰$)v™Ë3Ÿ½–Y=œ¬”ÿX<s|(ž–jÎ‹œ»ï‚÷xœ»(v\x‚”Tn¦nrnŠnqiAA~Q‰njZZjrI±nN~úFm.F>_Ï]g_—ÝàÐ€ ÿÍÎŒ[™£qkQˆÑUNÍKQðóMUðõTpÎÏÍMòƒ!j@lWˆz z…¢Ô’Ò¢¼b ]\šSR<Ù‘U×4F773dEÌŽ˜%1 [bÒ‚lRRË2“Sí¢ctólÒr'Ïb•2Î-±‹åR  uz(ÔL.ä™¼‹ÕA›°k42S34'+±©16»³me2Ê+ËMUÀïb} sõA
€Aä1Y…[ Oyôî	€sxœ;.¼_h‚SZæFyyF>7O—ÝàÐ€ ÿ ÝÍ>Œ[™RåE'K³òie‚K
ò‹JóR\ÓÒR“KŠròÓuŠRKJ‹ò€TqiNÉäV]f…´ÌÉY}&+²ÙIãÑº¹‹í“_¾BjEbnANj±BejIŒšÞäYœº ˆø3Æâƒ|xœ»=•±a2ã†tF©ÜLÝäÜÝâÒ‚‚ü¢ÝÔ´´Ôä’bÝœüôÍŒåvxä'9xÕã–UÐååRPPNÍKQðóMUðõTpÎÏÍMòƒ!Ê@lWˆ Â (µ¤´(¯H—æ”0OžæpXZ·3&g;Ê1æNîu”uÏ-QK/±Ž;‹(­ë¡P£ «›Q
tµnQjbJbRNêäÍŽ7	{FA#3EÁÐ8C“—$3y§“"3(Po:­`šÜíê²ù¦ëÆÉœøtóÊrSð¤~Jj™>H‘‚®Çä«Íû<eD|Xí€wxœk˜Ìx{"ã†tF¦´ÌÉ‰¢›Ëí ìÉB^¦³›§Ëä‰R¼E©%¥Ey
E©Å¥9%“ï8fV€*Þåè<ÙÎé:T¥›Bb^
/×f7çm,|~ù
©‰¹9©Å
•©“ù]m6'{È2 ®…*Ùî°axœ]P;KC1¦È©ƒ£èP‚¢`«‹.N‚-:Y„.1ï‘¼¸'U;õ/wõ?ˆˆÿÏ$m¯L'_Î÷ÊûöÛÖën¡ô”Êýv«ŒnÇÃÏ‹Ö×ÚNaÒ…A¸3†Y19èÕÝ”ú®8«×;ó?+@%Ó:ß0€`ABlq!rYž1”J	ä%G…²ÌHòŒËC:‚àÀ:ûä4¨e”Èb¸‰”E>æ½Æ¹¤´ºrn”¯e2ñº*½g£é½A"tœÊÈÿzYœ;*§µ¬À°YT&·2C¤3ÝT;éDý¦žªœ‰èì§I}¾q9ç†³léüR¡Y RÊéw–+©ØT‡\ïôE-Ï1 Èã§Ø‡e¬DNýEŠôvïºßî‡°×¯ùæè†¦®ªç€–xœUP;NÃ@Õ4–| º
$Hh(P "PÐÂï:iòl©rhRpîÀihéØµ£lõfôö}æóM¼¿Š¹Ø+õ‚«Æ‹å¤ƒ›Ÿ«ûýÁižÀ]‹gZ¹áë¯žw>m¾§Íú±R»à
µn'
 1 ¤­Q»Ù„AIXR¨ T*ÏØ«‚JŠ;‹F±ÇBñ1ÖÙg§1VQCŽ YvÑ¯½&Å‘˜g[×èÆ	x­’‰¯ÉÕI)/ž1“³àÊv³“}”gI¼p6ÔNkUƒÁ f·5”’Büºovhå8ÊíÊÚ™Å®þ‹47B¬Ú†«ÖÓù^cà I(SÌŠx3UâB‡®ôïì¥ìß	•TÄÛØyŸ/i¤;Â+]Žý¤¹¸ýßº³¼¹ÊxœµY{sã¶ÿ_ŸbÇéÙ©^¶/½©bßŒÏÖ5jýÐHjæ:ÇÌD‚"r$@ m%½~öî EÚ²’k-“Àb_øíð«`L§ßôY“òÈ»Œ÷bUd¬ž:+M¢Š||?ùp5³ï?ÂGÍ9$Æä£Áàþþ¾©p©Ôç¾*V­¾p9HL–üËïï\ò‚âw¡ÂwHæ—07ë”ë„s£áNK–ëD8ñÜ+Î:îKnok¥á‚Tzx<8>Ž«™+&K–Žàú‡+î_ª©¹*‹»)7vÉäªd+ËU*tBÃþâ{ØC¢qÐ{3»:[ìÁÞ!þn„íÙyîÿx1{–gï÷~,—oà‚ÇBrÐ*ã«Â°¥H…Yƒ6e¿ ¤ÿþÞåâ·kY®t?âKÁ¤Ã·Ã7}sÜ¤@'Ý_ÉÒÎ³"LÄw`Y*ŽÑ½Ã¿õ†GƒL¯†ÃááqŸæ^JSÁ!ûýô#g·ì³ÛNŸ§RÕè«ÝHÍD<fejÀ…—rõ‚""¡Ù2Å€\ç	—Ì%;}™´æ~*µ±í,ì³ˆÀðüRòØ@ÆŠ• dº>èôYé‹ºáêlrç7×‹ñõæ‹³Ùbßgcøæ¥ÄÌ)jÏ®Æ{F*ƒ ïÝ“.)DüN„ÜÑÏÿ}}3Oæ»:G¯Å žÐr¿UA<ƒ·à-|zAO²Œëœ…<è‰èôDj½…ÿ 	îåÇlùØµé’Å§'ôí–¤à^v,Y¦*üô´ø™ŸžØ g»|	‘]L4×§'øå¤j°Ï;ès‘žžà—£ÏÁ>ï¤'rG-ˆzq†ºd^•èqqÁ)|ˆ´€d¸Y!ßE`DÆUiNOüƒu¦~Ç"Š‹ñü|6™.&7× 0	oÂV˜·d£[F„,‹´ë
"À¢C*TYÆ,Yy¡îDÄµå‡ÖaVÐÁŸûVÌ‡j°å¬@6† 4Ðr*kË#ckXrày4\Ò
¯â>Á _¤Ýð hƒÁàÐ³Z ^0‰­€'¼Q)ïÒÈ’(i
•¦D£Ð@‰e\—9Õ®FÞ“iF„eÊŠ.ö'ŸÎ³K”úþú–ÂÀ0ŸaúŠPu!¥isÉ½À÷e«†G^cZ
úäùÅ¤äÆvÜI)ÕÍ("óF"dlKOÙ ð”TNIô;OŽ[w,-9Y6|ˆý‡ÒªÅqñ©‡Ú4ÜÚŠsŸÕÙš^•dÜ&œ\6Oøz¦ËÒ@ˆ˜E“Õ/
!ßÍÙx#+d^+Ã½2eÆâÎÆ±xÀj±]2øËr,>Þ‘Cr†Ãc]‡”ë›ŽGTˆ˜vÎé› ¶Rëb°Aó›8C™\·Ñ4Â)I^^´Üãøûá­v±´
*ŒUBi\¨Ìñ)—z­ÏÎïÂ}"Â„ôBµyŽÛLŠyoôs6ëH‘eƒir­öhðf<µuZ'"‡%ÓHçgáÆãf­Jt`×þ%õEQð;"æ×€6iÌUÌ0Z‹›]J!iy1ÕÞÞH42Dçi·Ã˜¡V˜zÂ°W]Üš™
ÔšÃ»ËÎfS,à ThRBŸË¿˜ÎV’ü×‚cçQ´9­à!yKU®’®Û÷-2Ë<r°@Í’µ¦QØT=Ïs…pçWre*9Žš<CÌÛ¤åÔ%’Úó¶ÛV6­Þ£CcŸ÷%¿oÈ$6ˆ”;¡f—.g™ºgš‚A®6IóÀzœ
Ì­-ÔtL§MçÐ…çŒN6‡×ù£„R–JÏM£U÷$ÞÅz©|Ì;ŸV)Ä¥0µ®¬<­&¥¬ù€—Ø® ®ž¹à¡óÓ§ÉÍùâòÓäâÀš>{ƒ«¾ÇÜèŠ¼—ïÎ|-9PfÕæ¹t@DÄšçŸQ6d<lã…±¡s%±Ã÷D›õºÎ>å'šœ¸ ]7jùfá\É8¡ñùæQŸØHcpKcãÝù×J¶½ÐnßºÙ4Û½Ê1ïìÈGZŽÁ‡js«¢DFT»§6rk—‘vSÌëh'†¹ß`SVm4ó¨®ð©ºçX)1c.yaîéxÊCr^…C/Cåtàwed›Ï¬Ì†³¾ñ=ªsJÝ¾Öa–‡±Mqsnû
ýRînáÌPK»Ê%F¨éPyÔ‘Ô%3µÍÅU«Sƒ3Þ¬s^MµXµ¬¤:ã†	ª®èãþ6w1ï¬XõGkâ‡›ãe”ÌVøÛµ6kó‡\ÑÎ"X7ÃÐaÂë÷ˆ£ åà‹t˜Æ¹	¶ƒo1ï ñR= 8–û£ƒï:¯©yî»ßYüÒùPÑY|á³½•öˆ¹øB“C?q­žñ
š{‹ BåüŠC¿â_ä‘*Pv#GpÖtîsè²ü°‡£ºŠ8ÑÕ&lHYl|ìdûºŒƒXË©x4\Û^é‹þÏ¼ÀÀ@4“%yý\9rÑîoi™ÇíF±ÎÕÌ»¯Â½íVá‘®ìywPÝh!ƒf¹´Ül'ëýuäýuÞó[|ÖÖŒªiñ‡…˜ÑrºôBÊåa”rSÕn¯íßg¾Þ(sìsùÆk4ÃÃYqç6¶¿S7‡ öGÄõ™Òñ´ÀÜZ	ébž/}8Œ¨¬ÓÙ¡ì«ÛCj¦ªTµP4Zç5ÛýçéLÁ¤Ž±º ·Á.
Ìl\¬Ì—kÃ-ÊðøÅÈ¯¾ÉSÎ
—eI£á«QÊv+´£°¸#xåv{4ßéô_IØtàQY=ê>,Îš†ÔF>É”ÛÍ}‘¼ôµÙiú¬ç©gô<ÊOÏ¯©wuA–>ŠÓßºî¨
©¯\wì×½þšPt-þÆCâÊcj{!Å‡'AèûÝ
Œ[ð[•Q[ÀªC‘byªSP-`k\}…Ô.K0Ï/ñ¼çŽY‹æZ{6’aZFüPv[Ç,x&7íO'Ní_	ÀÂ9Ú^^y7OìÑ‰»ÐrË»â2­n‘í]F`Jß~íâ:,¡Ûòü˜õâPß=Tg‘ÙŽØpl“©qP¥ÁÓJ!ý‘
*.ý>Ð¸(s¦=¹Oó²oª³E}5áæ]ki©„««ÀnºñZ‹ÆÎ®¦—ãê6Ör¤;{	Á/A'H^õ†¯_ûËÿ2<~„~ðÅ^à¾‡¨ŸLˆà¨lçýµœ;îX7–šÌf›+=r"vN˜NÜeÜù4î„[—dîÖ°±lìÍÆˆ›;ŒC×G7Š«¿õÁ¼£>ýo9¢ÖMúaUrvºeîÿ»ævyÚh¹IBÐ³&éRÞù7JCÍ¾•xœµWkoã¶ýî_1ÈÓÚ²´]Ô7»€›8­Ø1bw»Åªh‰²xW&’²×èã·w†¤üÈ¦íö6W@KCÎãÌÌê4>ÛˆðN×\Ø‚÷A®W¼mÚ‰Z­ÄN:¨l®tÞÝŒÞŽ‡}`îùgxg8‡ÜÚ²ßél6›(UÉB©÷‘ÒËŽM—_u¸ìävUtÂ§ï;.¹f–ô]«ä[\og·0³Û‚›œsk`m$+M®,\íµf“E’ÛÎëßpÍ,úÝ½è\ô:çÝó‹Z2f²bE&oÆ<<Ô¢™ªtÂ½È¿»erY±%¾Êe!LN¯Ñü{8ÁEÃ¸}ócÜ¾ºGó8éáßÞà‰[ÃÃ¿`êÄémÿÛËiù®y&$£VJ¥-[ˆBØ-[eÙ3Zúýß^NKHÙ¢Zš(åÁ¤+ˆ¯º/¿~yq¸¶&ZÊÊÉ™Nr±æ¾`–ZeÂÛý¦Ý=ï¬Ì²Ûíö."’=—§‚C,›Ñ¢ÔÀàâ&{hD¼ðeU¿=}ÖDn!å«
™Ò+f­Ëg4‘
Ã6å¶Ì¹dV(Ùˆd~$ûoe¬ÈDâ¤Ðd)½ Ë?àMAÁ3+¦—B‚’Åö¬±Šg…a<Màên2Næ0›îç3ø~x?„ÏŸËÌŒ:w0ž4Žâ6ü`xJ‘®¹Ù˜L!dB¯6Ls+¤ƒø³È«šý4¹›ÎF3lkS" Y#ÎF¤²MTÇÙ=\¦|-þÞÅí¸m
e_]Òý5üŠ–ø‡ŸðÄå¶°„’òêÒÿ÷ÛÔ±qQŠôÕ%r¤Û%ÓV¤~ó½DÎ„êz8»ºMç£»‰ìFi°9÷œéC%ö¤laå"LLº75JW·t…ÕB00·*…R«µH¹qê47XðÆ¡‰VæùÇê½Â@uœ›3JÌš"}”È™çRµ‘…b)÷ÖqwÈ¨Û­1CµŽï˜’'Tþ{e”tÈ±\*äV^ðÄ:ÿYÝk'•(—Ô:‰’V«¢àšâÅ>o^]¡Òá¬fÒJ L«2zèÅÍäTÑC—ZèÛôjY%]¶±×ÈFNY‹Âê`vÚÓÚÎ¾ÃlÁ¬Z˜­±|÷´þÊ8¨]DTÀu˜I¥5—¶ØÿÀ“ŠXhæ/ÂaA•`¹Æ#ºÎ{˜Àûzq&x‘z{F)j§ô¸š2‹è[]%¶Âè¡)ÑêòXëS#é9Ò¡–PhI,¢‰B ´CÃ7•3­OX‘Yöž»œû|~_Ó-Øä"É}±Un­æ•Ð¼.²ÀÝR¾ö.`M'ÜPÃ(ƒ-"à=×sD5—jltÆá—`ôÀ¥ª–y‹VBÂä¾$*j±E/LEð³ŸšöÁ­ÕÀ¬f¦EÃ3ÅÈ±¾ç ‘„ø—¸ÝÏàKäÍß/ÁàI® ¯¡ƒ›;IÁŒéPÛº[·ã1è8cžT½"4ð(DÄJ*ûThQØ;ÍWjÍ ,M0÷‡_¾¶Ý1ë£"Öé´qÈu-x‚C°4îe½óåš;O¨G¸ÄDhZßËÄ±6?.Â‘[r–ì8ŠÚPbºJêU,ŸGüS,¡¢ÞÍù¬e¶PÐ‡E³öŸ 
û)÷¨1ÿ¥ñ†oÌëãowtt‚/HØ­{'|pš;GÌA¼ûŽ[lŸè8¢çÄ+lñ™ÀI÷þï†wFÙ=ÕºÒÝ»qÜ˜ÿ#cŸ¬þâ#õu‘ýz"n¬ïŒ?0'V+ž
ü‰µCu§ªÌ~ýIàâç“…)vWéyöH>ºÞ!Ì¼fÆL¿ÿk¢¿ÖJˆÁ]H¾ß«	ÞÉ'7wh`@+ƒ¡h>$Rž§×êõiÈ7úÁY)4ù¨}˜uöÑìönrl1‚Ù ²p”9¢Š Õ±²,°:ð$˜œ–­©Áƒ5ÐE~C‘ú`º{;È±Êð'|iº{ç:n}yF©G‡vþ¨’>~ÑÇ;0ž<Àµž8¿pŽÑp9+w9ûá€fø4ÁÏé3ï1ôðí`<½Ög_?mðãÉŒ8?mw¿<›‹
~Ñ½8?Cph¸™‚iocÞGS Ep]8ùÁ4Ä	e)4ÛjÇzÞÿÙ¼{Žá@Îº}aõ‡ÉùŸM½:âÁíhÂ%½uÛ†¯Š7ôUA²éî|Åq¡Æú¨®ý¹Ñ…»æxœ­WmoÛ6þ®_qÈ€&íjÉIÚuËÒnâ®ÆÛ‹µCÕ´DI\%Ò)+î^~ûîHIqœ,-ÐH,“Ççîž{áy7ÜãùøŸž¹09?¹*x/©{±ªe®XÜî*“©ò>¼½?³ß?ÂÍ9dÆ,‚ ®k?VÑB©O¾*ÓÀÄéó€Ë 3E4,Þ/\ò’Â;UÑk”‡÷³3˜™uÎuÆ¹Ñ°Ò’-u¦7è-²N|ÉMðª³N™AËû‡Áá~pÐ?8lwÎ™¬X~ãßÏyó¥Ýš©ªŒ¸ÛrkgL¦Kqm(Ó\èŒ–=þvPhöÞ¼{§“wã³ÉàtvöñïZåŽ•âÍG£lÇ"÷¾õ±(Oà”'BrÐªà°T¥a‘³mª$y@Mÿ~ëcQš -ªTû1_&mJ<ï¿øáÅá¦Rm´ŸÊÊî³2ÊÄŠ»”IK•$Hoÿ§^ÿ (tÚï÷÷}Ú{(K‡Pîù)ø±†Á%„{ìÒóyî«]Ý}Ð@jn æ	«r‰*fŒéªˆ…f‹Ër½Ì¸dF(éù2»±÷g¥HDdwaÅ´ †_á?9O¬L…%óõcÏg1äJÃù`4†“Éx>Ïa6\Ìgðvx1„'¥fFµ;8îxÛ]Âvžæå9¨˜­*bC%À¤í„ˆ²¨YÉAØÂG¾Cý1žLg£V¸^"·‰&#w ;-arÇ1_‰ˆ¿‚a/D^·øMä¸ñ7“ÀöòGîx,ÈUÂË—Ç¦dRã[ØÓâssÛË÷À`ma&¾<vŸ@Aûu"œ³§ÃÙÉÅh:MÆÎßyÆáMKÌˆˆ¹&3REÁdBC¥yLÉßG´É¶I¦š@™¤2.UË»;Ád¤¤)Už£|ø;
¶†vÍjQcÐ :CzA!ZÙ
iÌq?ˆLøÉjMþVñŠ“Í£`rk]éU•ÑA°„¿Ö¦H-ž&’×Ûîï¡	u¦r«ß—¬4ï$ ÆBã3ÊjSVyLØoÄaQydÕ3c=hüJÄxaåë.XÄ”06+ÔOø‚Sšœ²(ûrfÈ(¯bbNkUÆ0±´7®ŠÆ­µ[‘zÉ#‘¬»˜â¶-Ù™Â¾¥Ub¬NQ’q©)wìáŽ›ÆíXÄ©"c+¾	×¨R+^ælIàM¶êÛ¹„±'[¾7BwÄ+„aËe.‹ié¶&¾À"82„ÑžOP§ª1‘¦’#¡O1‹¸e¡Õˆ’ôÚR}£ðtŽ–ä1SU»ä)'ñªq1mZÜ0ñÄÊvÞë¡c¼Hô«Ç]÷œØ^BÍs:õîj~Oáš¥ç_Ìà™wÁ/+QieZ\—fºêZ22ÕÅÅõáp/ºÔ×~'¶HXã8z­/\ÔÓi(9r¾X;´R¥%+,{•n!“wÃÆ§ÛØùtgïn¼ºÃÚ&5cl€Syug[—]§MªD²af8•XÁ®º#®täm¶Õv»”j&MjŸ}ºéÕõõà¼ÙºBîñÃ`jSn:Ijk±-ðM/kê@4olxdCs]:ºáº†FQÔ?»ž^íR¾Ñd5#>óRÙØá/…CÎ>¤ÎM>Œ®+wÐmN‘ÂÜ³œ¥8“ÊŽÊááûÁùôlØN Öqš&%„…^˜íöúÏvÃ½E…¯ß÷wÃ§šìhIxzûž?š	Áh÷çm¨ØFq’û?þ*^“Œ(ø‘Ó‹9¤§‘ïàÖ0æE@Ëý¶ºªÀ(»ŠÞ%õuŽö¯pîî÷Ý°¡eèt´4ÐO#GÁt£yY¼ÆS®†{ÿÊCšƒî”ƒžxœ•VÝnE–[@ª%„ÄOA‚£þ§xcoHJš¨ÁI«¨MpIê"B“ÝY{èîÌ²3ë$ªá û
½­Ê-â
Áð	ñ õ–sfý·‘“_Œ½3ç|ç|ç|gÖ¿<*=}\úA–*:b‰q˜ï;¡ê~[z°RÜÊ^¾~g¾°N¥ Û\ú°ÕÞäpo­	=íÝ]ÿÓ+ì\«óhfB³äóžðøLÇ,ÁgŽ#¤áI…Ët´uw“ökà˜xþÜFœöÉ¯.÷=%|íÄ¬ÃO´PòHœðÙâ"¦ï[˜ÛÛ;3O,PãÓ$‹¸Ž™Çá[ ©…oò58†;Ù_«¿ßÓTgmüR	Ü•â«tzÉÁSQÄÈXú•rœ¨žð9˜.4©³¬Pƒ¾oÎf¦ó);€]\ ab­mO½.K˜‡©”óvA•ï/Bê²ñÆ,`6»¡òîÃté~×ü¦tnÔÈìüúå—Žv;k¯CÿcnÒDÚàÚ0#´ž† Qè˜{"k.`ih4îÂÀNWhˆ1ßˆ£àƒ’á ±ð!P9«Æ~Ó%Þ@7‡êU©žÛ²0ek14Ös•òµz¼B«ïþ³v©ô¶oÀ™ÖËº~ˆùºðx¬%¢Ú?IxË¤ïÓJè”ÎmŒÙBl·õY„,CÏö¾.þÆÎ?å¾åÜÑ°T0ÍƒžD×¦8•lQï„ÖY}ýÅþq#s|¶Ó8F&,W3hN,¦L‘AØ~-ˆÂ(_Ò/t²ƒ¹cû+­E7äT”­XBñ5Z]»2ZýÆÀkK¾H«Õ@MN3R	¥ ¤=òÑ³eÆ(’Ú0Î…L×'œÿo}'®TÓ+S¯œž‹}mõ=þ™‹Ì»ï/i ãœ:åDÌZÚý9XÏÐxûÁà" ‰…°.s¹ÚTLWDÈŒŽXp¿¤w`ºBvÆ0>Q¯¸Eõ¢ÀCæ5Øë
¯k!PC$¼}FS>™ƒçì…oeWÖÎWÛVàƒ»`ÔZT6ÊÂKDžã¢“=l¾žý{ãïçÛd‘=¹ù°äfp«ùî¦B%ÜãÒ@€ì zu"!Sƒâyi”†Vmš›ìÉFë¹yÇ'Çj+Á[N¥úT¯?6îœqßCŸ›_Le0aÔ/ÚhœdÓMTÚé‚;?*@IÃD^°x««Ò}*åBá™‡Z PWF›tÇsSÌJHb'N­3îUòúð$/?M¨‡”G'0àFDœX+ûžÈ~¼õj~ôó‘?Ë­×ÞØÃWÊx4†-«º³Ùv«}Äá§V#;Ûzg
]U_¦ØµÁ-¾:ÒÁ@ñ8~ýÐ™¬³ßZ—§#¿IÈöŠ$ý5A_:º†Ëá¯­¥ÿ €ÞâÑ‡IxœÅXKoEÖ
É&NDÄC
éâõ*û²¥ ŠíÈ	NBœ—gBÐ;Ó³;ÊìÌfºÇiÄ8!ø€"!qãsàÂ_à/p‰ª~ÌôìŽK°âhg¶ºê«¯]å¿~¨üö¬ò´_y9{?}UÙ¾$?¥‡V×Ûø4gª„MºäÞÆí+Ä‰†CºœˆˆÐÜyp›—mùK\ýyÏ,·Ùð™Ä’úb®/–ÈgÍ¦3tWð­V!_?!M‡X/Ó§—ßnƒì÷=?`RÞ¥‚6ñÉœðHá5žiÂ™‡l7;ŸGúÄ~‹'Î¨FÚ>4‚(sV!ÉP!7€Ru¢®3Î¥däyœ	#‘üJ/t/ˆœ‡JøÂÂ"éí
F8sDss¬'Ù/?Ÿ©¦¯]y«.hÜgBV›~Æ¥§ôsúç•?Î‡$Ü2"c©9&ø;Š£-ßeDàKÆ“@ðô—µzza­1–Au4¦Ž`±/™g;IÚ¨±SŸ©.H ˜ã{>s[ä†'5öý-šƒ<¢Xp•@
3odh¤ìLuÛ"“dL¢Ó"	?
	Ð fX(0íÐ€…"Ž‚€ÅÒ¦²g%ãLÕçÞýpqáƒ%a0L@ dA£}FüÐõ*ü°OÄ-ÐÏ)–YÅ~(˜;S¥AjŽ øëû™Ú¢AÂ8<Ä¥±ôÛ«ß³S<ý{}îÄD)¤¿ß˜½eV(1tuÂkåx,ˆÅßF!ü*Î= mƒi¥ûæ+ ‡él÷üØ½ˆd?MåÁ·ñJ†?]ô]Ó¤±¢0ad(üPÇòˆB*h@¸ÿ˜ñ¹/‰QLàxrr€XŒyö(ñcæ¦»ï¤Ï×Ž¾ø9LHÈ~L‡X“¦|&5xQËSL‘eª³ROÄŒºÄ‹£á4N,ø©ó¦Y5b¬Îä¦õXŒè|Óªô;LZ¡õ—9±xZZh€-Ÿø‡ñ>äÚi¨5²=ðF·&K+	]i•2†>7(	1õ€±{ÈAm;¢_×09rß-Zäþ€M£3êd&+V¥Î@‰¸yín÷þr;}ÒÝSèù}’a2=Ž#Ý”L«”‘`C‘rÎ¦<0yoU}kŒ^)=ˆdZ8ƒ	ˆ¸â‡£Dì‘ ú’a-¤âÜ‚¾…|—Çàò'2 Êç¹\’²È“°z»“ L®éî€jV÷NÙ)KÓvïD“¤ÔMÓÐivCôf´c'‘.°šæKÁÔ	U…6†*—×ç~‰¡Ò÷°TiE’p„%¿Ÿ%du†X·™±*hsmÃÓj2cpiDIàbíª&Á‘e„©J‡X^2%Jã®:¾ªº0+›Ã*WöŽÊ?ýƒƒ²òŠ‹&JªÊB’ñÿ?ÿ·Ðè{ÿ ¡1½#Î¶ot®TI½ˆiÈ=è¬óÞ¶ŒZ=›¦Ä÷Š÷¼M±]…‘PÃØD‰ü®µnkhT‡¬¡GºG0‰ˆ1jð(p%ˆc[S‚¨.‚Î³…,V_Nfº°K³ƒ
&(WMÆe…iÑ î‰Q˜•'›j*ììì­Ç¤(
#Rš%x6#¦<ŸI?º>{L»ÊvúÏú¹×¦&cœ«Æ=Û%ßÅ»Ufé`MQ{M@<O‰˜å¬/Ãªƒ£”Úyt8åH
Û÷Á’L·1.ƒ©Œ\--Èé¯ëµ#ù2îµ¶x~ïøÄN"¯—­@	—ó†€¤âØ¤²ZÆÆA’§f–™E®tËzJxj×ÌkÃœk¢ø‘¶t	êaä¦Ý ôl›× 5G?dv?°{¶P„ç-Z‘»uê¸ì$8¡â€ºÏ€úû¹:e(}¾>br… ¼Qº·f¸ƒ[…×QùÿÅN‘­Ú²e Õ5Z9šk:hFVö`íÀB’9‰ñ;ÕVû¶¯:A€‰²­jmµàÊ1{ñEVÐ ŒWœeƒ‡½Dªá-ÔÛ™,_pxh!ýâú¡Cz'§—æŒ)ãL+˜·îB½&ë@Mz9I/$Tž¡&ŽkWziåæÙ“ÖÚ®ó^Õ±§°òƒE9Ç»/º‰)~¦ºœ®Þ:•~ßm¦›÷>ílÈåNJ˜•×Þô"oò6•îíSòNÈ7{µ…¯à9èµç®þ%03‚ÿ6ôN†Õ½Éœ˜	(7UÚ´0p˜þ‚ÐuÛ]@S+å¦ìÝOþQ¦–i¯e×ËÊ¢¹£‘»…“Ä1ÖoaíA?·Ún”Û.lQ™­t·;÷ñ¤©Âü.£¨†x¬hehØ†h+ÉV’AÖ?X¿¸¯u¹<dÆq¸Ïu Û×r,j¿Xìtˆz<2Ÿ­XuUr³‘ äÎfópu
‰C¬!²‰—>ØÏ54{ÒtY+,j<AÐ0Ž8=êîì,À!ì®5,·Qãr[iÏmèîÀì‚à^BrÀ£¥ò¥‰aÁmiÂH‡@?K¿»z:Ýxp8ýòÁ×ÿêê‰ŽxœVMoEÕ^8,Ú@ åU€1»¶…ClcÉ È‡Qàzgºw›ÌLOúcÇ!Fâ÷9pâ?€,qçÀ¯àwPÕ3³3»¶>Xžî®êWï½ªö_ö~úµ÷Û¤÷²ÈƒHåi¬Xtö¬—ïuÊ>úô¨óÁ  ‡Í'‹cPdJ[©RPX
é,á ¤Nr¦9È„Mø°|úñ;©vG<ÙƒµØîD|&C¾6±;ðMˆüCZl¢!ãjï{œÛ*oì_ß<\û(«Yjð#0òÅ"êÎmQÔKJÃmùãþÛåöÁYñhÊá¨Á|L˜Û:C•$,@p†G`D—q0è#	vºJ H8ëpÉe³œòÐÉP¥¶Ð*Ž¹BÇ 	„ÍaÌÁ¸q"­EDùÉ …ÙtsÈ 
BéïF‰DX'tØ’éãŽêãÑ=¨Ö‹vÃ ¡VÎ‹id:ùŸ B•I¦+Sž¯Ö¿.SD©b/þ1moúWƒš‚ÝQ¶W>?x£¼øZ±’¥.3V»JGº[™ajzÌú>
˜ÉÈ¡Jó…fÄ—´S0A—è>è‡EÍå>aáô¿’†±‹ˆA8Ì•Æ÷¼Ë€6¿pÉåA¼~¯‚	&ã¡ó&Ð§Ø.žñ©2Öa”°þR3%³ñÔ…|ð‚ºðHAª,LÙŒwÓä™Ž«×1Ë†mµiÍyG¡þõ:ª!èJ&$ä™.›…°°,‹%æcÆKuw,39è¯R9„cK)šp—ªÍˆDiŽ”¾‡nâž¼ªð7Z…¢ãù¹§{©MŒP$²=U.Ž*%u¥X^Té koaþðBæõjÂåA•Ö^Å	ÃôÄÐÌ¹EÌ”ßÜ.¯¯,Ï¬ò÷/‘¯“k¯¬Œ9\¿Y<äÏÔD•ž¸„§–\ÐAVµVÆÐ¹u×Ô£ó­í­ÍÛ;ÆÏfÿ³([ø©Â\9fn,O*ãä„,hŽ”ç”m2­&š%mªÕ åûÊ«'ï¼~ÑT½{róÚÅ³¸üû«7‹s¥Ð¥6(±NÖDÕ¥WW¸¤haµPÐéÔk	;]DVYuÅ%±è'/2rÃSB¾j3E\0œ†P¼ÿŒ
+ï?Þlž†Ÿ€¶èbòauˆFYäÛ¹…Œ¤Ò¸Qi<o¯ZÔQ‰Ñ6‹©ëÇD‹9Fº™œçz<—†/__í¡`ý^p­¼ZÌY•0+C€Eß9ƒ'ÆŒ^­ê9h3íâLrUO±§m"g<úÔÛô;*ï<ùåÝGµ¬ÓPt|skû3¹O X™ð;eïëÏ?èþÃ0BFÔ-àßöÙwd•_ŠW½c6N·66Î<ý¡÷/iÿÓá
„‡Hxœ;&9]l‚SZùFy>F&·ðÍFŒ»˜eÒÊusòÓbt‚SóRüÂ|SÜ2‹rË‹R's°z
§•Ç€TÄ¤)Ø¤¤–e&§ÚM^ÎÚÊWdÈö‹9M¿|²ûßÉ]œê@6oã4aäHƒ)xÏå	œlËÝÄ²
.~†[(>‰G$«Á3 Ù6»æ	ƒÖxœ{2“qûTÆéŒLiå›s«í€ôä7ö~ ÊÞA”Ã-³(·<±(ur¤Ã}˜­£ÌæEŽrŒ‰£NZL¼\›?8‰02§é—oætieœœè2pûcFŽ4˜Ê%žE #¤½<xròÓàâ^ ñ³^J =_¼>0 (Ë7«½Üxœ­WmsÓ8þî_±Ó›¡j'má˜Ëq1C3Ó&™Ø”2ø>(¶l)HrÓÇýö[Iv[hÌÑÌ$¶µ«çÙ7í:Ûéh/À_óI˜®è øEMýužùÊ/Ö>É4» šú%SZÈM§6ºr ïGãóÓh Ä>ÿï¥Pj½ôzëõ:ÈE¶âc ä²§óåóå½R×U¯Ý`ñ^SN%Ño(²W¨çñ	ÄzSQURª\(NVª^¶è²*NuïðÊ¢½èôözûýýƒNrJxCªLÎNiûÐ‰bÑÈŒ:‘[;!|Ù%®E|Y1Uše/HŽa•¢Ô;<Jý³8õGoS?Ü‚­=ü^“nY=Ú^Zº-‹íÿêÇ¢<!-§ DMa%¤&V1½¥›¢x@¦õcQÚ´-š¥
rº`„Û¢xÞñû‹ƒ›l­‚%o¬œÈ¬dÔÍRŠ¢Àðöÿðûû½Z-ûýþÞA`de)£ò`	A® üéùä´r¥Õ­n?h"ÕÓ‚4•†BÈšhÍøò)r¦È¢Âƒ¹Y•”Í÷^~%ûÐ(Í
–Y)ìÜ,€¦—ø# ¢…†šÈ%ã xµyì$‡êAÃpŽ'p4$Ñ$8	çIÇÑ<‚'E›ÓžF[ÞÚ¤>D—4k4uíO;ö uÓ+åôJûŒò\HxÃÙ§†Â‘¨kÂó]T7’ãEaf{ün2Åã;Za
/-ÆÆ@cîgH‹9¼ÌéËè!¼OýÔ^5Õm½üõ’›kõÏ%ø!Z/à«ì³s£øh>ž%ãéÄ1BËuÙúé8`‰GŽ0Éä÷L(*±„vGÜHtë§²(“õšH
­¦˜:'–0Aµ+gVD’šj*)0a#6¢xµ)À½6.+Q93º­™;ôr =|è™ö_3 ØšU•­UXùï¬ån§Õ¬LÏÄs†ø¨]P‚NPD€¹Í—2GíØ€@®(kÏmëÍ;¾)G¼a°ëpôwJ‰ ™È©CY3Eí&“‰©M‚)…ÙÌ³)sÉ<Ü…»2Ü
½`Ã3/Æža#iç†“ãaµ%e“e³BšSøhü›š˜œŽ¡Û˜n¢Ý(Š9×˜vÍjaÛš0J-¬ñ`9/FãùéÛOix”ŒÏÂ$‚ãqœLçïàdúfáë†aÂôM2{“@t>;	'a[~Iì‘ªZˆKÀéµ3xü§WéW€ßÀK>{#F«ÜK¾ð~HU&ÙÊ¶®äî|„ª¨ùó¿Òd+-^E\c‘MšzA%F¥åèŠ“Ûuë®Ž)P³ÇÄÃ¨ÔB™Dg¸û}+c´­9"6ÕUE6®BÐÜkæ™XhÇøÊq›ÚÄã™+ûU§m·ÄjP3ŽMIÍÏÕ=øG›¬2¨áú6‡Í¬JfTÜ)¾ïôŠ,k¤¼Ã•#³Œ»Gí¦ÛLWp½Àš¹X}²áÜÔ,ÂÚ8bÔ°×7ÈµyÄPfôý„®¿CÍQúý¤¤0Ýäç9ã
ß@ï+e„·C‰ÇfAoWI9RÔ·Ã‰c»G˜Y#’Íê¯2§CœŽF J‰ŒYØ5Óå½iÄpý5£kt·YÜÀ2õÿ]°î,´mD•Ä?sñume 3´›Œ«ÐÈ§7š¢;É‘!†=×N¢óðtvuÒö:óRÆ!ýœzi¹í÷Ÿm§;‹oŸö¶Ó_¾Ø74£`|„ÏÀ(Á~p`åÇÄ§•K8˜Õü¯©g+Z“Z8ÍƒóËåX‘Cêš«ù«á"1#ò*#fkêc£–8v˜¶eú-ÏXfí'Šxœ…’¿JAÆ	"õÚšfH!’4j§¢E0JôBNü×¬ws¹àf÷ÜÝ®Ê+©}[ßÀç°ñ!œl.1VV7Ì7óío>î³ô±ñ¼µj5¬Y•*¡º¯»+…u¿éÝµ+¯íµ¼Ó»·Vá}iq(ƒ >5`ÞP1p!àòúÁîMf,öÍX.Ãæd3˜¯qgü½\ªL×ü×bX”6þ*X½Ó`õv›µ§*!Ðõ½2H‚{ìL†¹AgÛ“±Ò}n{JRíZj`Ó­Â¨'» Ÿú‹/U!TÒj%j\F yMÊC4`0qÍ-ŠÌI9}TÂG QÑ1€<L@‘¦ƒíú²†¥#ÔGStÍåAæÍü­CÍUP5™² >“£EÈ*Æ| ìLÔÐjA}z®’ž•ºËN¥tÌ€qŒ¡Š%O¦	9óIõk€pî{—³1²ãbÈ›™q£‹£ù¥~ÊÛ“‹v«á—YÝ¤lòŸ_`ü²V-°ÔOÜ:î‚xœeÁJÃ@†)R"¡^¼:ôÐ"˜äDPln)ê!—uwÒ,lvcvÓâ©¯ äIŠ7‚Ïä¸¥i¼Îüóÿß?_£ï“÷s¯ÔÆªWµ™ŽÞ,Éæ$%WƒÏ£°_@À*l¨E °y¼GH[*E!¡vÃÉÞ«{N×;aJ€iUˆEÛ8a¡°%‚y3«|B\@Ôš&’šQ¡e‘ZVí³…¥-ÔT¨âý-Z×R0j…Vy`jdŽ…AEY)B¼¾1@G¼¤BÒ‰—.ÙÙ­„”`J½úÂó`Ñ7äpàþë‡ÙÆÉÃ<NH6öCSûDƒ®·Ž‘#ßinŸ¯»ïìðÓãàÊÚ~ðäxœ;Èû…g‚szjÞF9!FfwW¿Í&Œû˜A“¿±øƒiOVõz÷Ô¼Ô¢Ä’T…D…¢Ä¼”ü\…Œüâ¿@?…Ì<…’ŒT…´ü¢\+…¼Â¼5=#C“] 3¿(Hæ•å¦V¥[•–f¦X&™¤Y$%Æè¥%Æè¦ÅèZX§µš¥'''š™+ íR((ÊÈ+)VÈ,Q(ÉW(.IÉ/-™ìÎæ v\7› ‚Ê?à„Ä"xœU±JÄ@EIŒ°öÂû ãt*«…®¬``1¬õ8ó’Nfbf²a±°·°±‚¿aã?X¯`²DLÚ{9¼sßæÍû|ñÞSoÇdº3m¬zTÍƒWOG‰û>»>> \¡Â’Z
]ÑòaQQ)"š£“ç{0dO	æS÷zÙ<ß¶)Ø{xÓ*iU¶p¢ËmgÖÆb~0O€T¦$R3*	ZFÔ*Gòg$Là+m¡(Ñ ²@ïY´(¤`Ô
­BS kõäw”eB!Ì/Ð²±¢BÒ{‰o3a RnÕ"<LûÑü_{ìê6³µ{Š'»ºè.Pˆ¹û™»“8štÚ£tMóï{¿Ê”­äxœŽ=
Â0@	."ôßR’X´tð‡
n=€Múƒ4Ñ$7g]{ÁxÏ!:»©ÞÛÞ»ŸÑç„.jeR]7è8øKýÎNF†d|;N¥’†;	WB—kë ™%P(p¹„T›2ò:j§|Fh€Ièk“ùj_ÊÃÖHk£ª*DDWdáŠc–rŠ)‡a7Å„Ðžè®×<`}¯óKÀÖÊY(8Ýë„®œ_/â¨Fñ³9~ÇKô·BÝêz€ßxœ½UÏoEV@N¨Ó¤		¥T}jJå@ìÚIQ$ã”šD‘B•:v/,ªfwÞÆ#Ö»ÛYÿà‡|ãŒ4Ü8å/ ¨		n\àÈÀ¿Áñfv×qA)œ¸Ø3oÞ¼÷¾ï}oö»¿­¹Z>AUõ‘©4ùöúâÜâþnÇ©îíÞítÛO›sß¿¸vvŽàTa•Âý‡ äv}µÔZ$?'wÔ~©[ÏÏœªà;-_ðÛðÝ÷Á®?‚ªSõø°ÑØiÙ?ý{éÚ[i*8Ý9ŽvZ3›ìr¬í‘5‘ÿšþ±´¿*1ØiÑz*s“oõéüšn.¬èÓÒ«úI©¤ÿœ].¼Y&°—•úÅÂÞÇE©ï±„RÜ€(>d"ô‚”#°0H•¤ž]	ToÊ$ø8	J
*8jÂá{w¡ÍÂ„Î8Æu}ç¥.ÎæÓ¯\¸<o2¹ø´váÉÜ$ghAÿ ±\kÃ­rg&¥à "r
Õ³åxQ¿ÏBîÜ¨ÁCƒâ$Žd/JNÙôpD.s·\;:*ê&•Y³äæ¹í*Ç»‡ëMèô„_ Å”1z‚–†=áõ2&!ÊbJ%ÂMRµ	Ré¡)ÁœM‹ãL½ÀšúÅÖ$ËRî|Þì|Z¾‡ÒKD¬D’¥L–z~ò~š$ªÜÚ˜úû,
ëfn=fä¹m«°¥q%Šr{,f®„" åÎÄzÝr*nç®m”˜äjbLÆÐ˜á.Wg¡ØŒ¿s“ÙíÜƒc)ˆÊÚZBY_\úeïÙ1™U@F°ORÍû|%£KÇð˜ 5Yÿº´9Ÿç'Ë«Åè~½|EßY¾Öµ}Œ,Å$£ €˜%’ÚFA)AŸ)‡p\é’¼mÓIè!õ³—Ò©SMq“/¿"õ7Ëü6Rçq`?£ZSõý´ïbbb>H1Ei§nFÖÛº±òÆ•™‡á&ÇÁÍpÐÇº}L¶õéÊkú§KG;QDCž}“ÓìŸÉ\®¢oè*ŸM17õ}ª‘Ùé"Z\#WÂŒvêL4’&âª³¥þÆÂ¿‚Øš‚8Ÿ*›(êSÏiÎiŸÏš7u2FäP*ÃÆOg‘ÇTÕohØ²<0¹qÀÆg@SÒ¿AÉ/ôt Oû±AWyºúÈ3‹ ÞnlÐËWÍã[øÚËÎ€
«ùÚË×ëÿ5 ý(ÔGXÿ|éàÿ”4Ï‰á†>"°ï©X¢cÂ†3÷¹·o]pª®Y2†Û¸ìQbª¢¡¥BöÕ_XQœwâ8ƒ™qxœ•RAOAÎ#SŠÍ³¡=´¥½@T
Fjl¶•­ÓîÛîÄew³3[lB"œÔç`¼˜˜øŒý^¼ø¼/ž¹xÂ™ZÄ“{ØLÞ¼ùÞ÷½ïûÝ7¾~0>uƒõ]c¯d0ñë^ã*Cžuð8BÈ&Æ À—ÊÛ¹ò»d—x1.¥=¾ Oé_€ÈvaP»å1²ò1cNt§:dêºmø«¬^\`¤‹òŠ‰üêÃê¬~6Rúx ÜE°±KÛ”MYè‘Úbéé-qøàÇˆ…\\n^ï®Uq`¾eqk‹r.öjEDê©®”µ"ý­¿ƒÐè…Ä·ÁjËaÔ¡åÄ73=~–éN%uå_]b±–™Rp‚HólÅŽƒœbð‚)ÖÿC ®Ò‰‰=ÎÔ¬Æý‡&° Ô,6R¯±íÐ&>´B¢KŒ-æÃ’úÛv)!¾›“OÛ$¥ŒŸqSê˜ÕútQI8Z~/ˆa› “¡ÄçžÄ„z[2"»•;ç”“b¹6ýÈ’½ÂyD[1GÅ»DÊäbÄ(SÂÜ(ˆ;.Ïƒ0ØVkã„#Ó²"”S™†kæ[qcýM^Í4n]w[ªîÖ­Œ"Y  þ€µ¡(^5MImãæµ"äe‚ò~wgý‚Šíìó‚˜Ø¼-Þ7&RÜc'NBGX›RI*¢~''^7+“zÙIÒjKw:nRfZA‚25:/=˜—°sç‡åKÇeÈ>QCûû›ÏŒ?(˜0Nê,„žexœ…QMkAeÐƒ¬.¹/‰RÍ­Ý¬•Í‡Éj êfƒÁŒ—v¦vvd¦{ÓÝ3ËÿàÁÊ5‡žDæìoð'ää¬ž‰KÀÝUï½®Wïèkðó 8Žƒé}eEØ—*ÆHìk…"M¬;Éƒáòä­¼hOì€¨× à5:“`Ð® ð–êzÚ€ë#ÄIŠöžþÚføGg±Ù2Ì§®a‘„8»ì
]–z™+ßA»AîËfÒ-]t¿¬ÍÐñÚÕË' ÚZ¾¹ù¦ó—ªJ-.L@×?F¢íßhp/Gël9½’Úä¹æ?l>j€wA¹
¶[¯IÁÀè"‰°¢´yêÀ×ºÜx¸u&ùŽ´òìüIIÎäÞ#Dêˆ%vÊ¿~Ÿº–—ldZ¯åÈ’X?<y÷êz@Ÿ^Þ
nÜ½Âhicv–‘L“
VíH…}£•Î-<çít¾ß¿l`<×Ø,4iªÛ¹710hpPUd¸àWK›w¶ûzXz®Bòc°ZA–×ÿ×Ò‡5›ô­ûãš/‹0MèÁúm:íÞ Ï[ô!Çþ¿³ÒxœµkoÛºõ»ÅA,é]üˆÓöâfi¬ñZy±7t¨.Z¢$®2©’”o÷î·ï’’¥ÔÉ°ÝL@‰çý>Ìat ¶7Àßô,„-øÈõŠ÷3nû…ÊjØEes¥ÏàËŸ§Ÿ¯'gÀÜ÷ÏðÅp¹µåÙp¸Ùl‰Š—J}(m’½r9ÌíªÇï#—\3Kü.Uü'Ä‡Ïó+˜ÛmÁMÎ¹5°6’•&WÎ÷š³I’ÛáûFk¸dµOO†ãÑø´†\3Y±ânþzÍÃGš«JÇÜƒüÙ“YÅ2<›È¬&§ãÞ`ñ	iõ?NQÿêöãœàÏNÜÃàáOtà¸öëã¸ü —<’ƒQ+¥Ò–-E!ìŒ­Òô%ýë·>ŽKØ²ÊÌ áKÁ¤K‡7£ßþxÚÆ@7[3ÈdåàLÇ¹XsŸ.™ViŠîýÔ‡+“F£“ÓÁ^JSÁ!’Gƒ‰‹o±o½/|RÕ§‡/HÃ-$<eUa!UzÅ¬2{A‰0lY`InËœKf…’½Ì;°¿WÆŠTÄ
G,¡°ü)(xjaÅt&$(Yl_õ,âEÝp}1½·7‹ÉÍæ‹‹»Å>Mî&ðÃK‰™SÝ^\OzínQî¸Õ‚¯¹tTbÑCªÕ
˜ô­"áksÏcþ·›ÛÙ|:Çz6%z2íEé”X²Œˆg”ÞÁ¹'y_¢¾?ì‹äÝyxy¿ `Í÷Ï=è<;ª‚Ë@†ož®€ÝÁ^BF4¬FgàÞ÷bJ¶â¦d1÷êISë&Áì¥Òlõ—B2½uÈËýê—êÝ9Ö,f¸ç© þÜoÊwç©àEPÁ@øz[t°çÏbkÆ–Þ‰W¬V+&“{Ôï^$\RApí™oá)ð^~ÊÖ†ßÛmÉ=[èœ=&l‘?¤\×ç2³¹gð õ'ÎÌTøl¼œÌ?ÜMg‹éíOÈV2K`z)¬¦0¹4~.¹ñ3R«5gÀæ4·•–<Á™¢«ßyôû“±@h“à%Ó˜D–kÈE4Æ·ŽÝŠmaÉd§O'0Î‘$&Š úˆ?œÁ?†TG£WÇ 4Öb“œ°,Tüõ	lyòªÖëV‚©â˜sÜµ€o¬¨Õj ®­qP)6ã5®!lØÖ ¸’Ë›1B;Uºö˜,3t'ßñÄ†Zlë™æü–[‡ˆŽÍÐMd—SŒm`‰ƒ]K-¤E2l·Æ&ªrÃ ¨œëjr„¢»…ÿÖEžzÑlÖëv†cx¢‡ôwsxÝ»(Ð©¸'Q×º Z­f¹% ÿð¹¡ù·ŠãtF| ·ã‘+É¾XIï<ò!÷ÕƒzÃ‚È]ÒtÆ™t7	†´ZcËŽvVÌ¹5A¤“`j=}Ô	•¼Ö‘—~ÜŒºrC¯ô2›6d}PrÍ¥à“Ðõ#’”Í”'”fBú)N™²dÕÀ*E³•q®•T•L3iƒ»ºšÔ©qÐF(ÌFõØXBq¨t‚Öv¨û¶·`_{ÂqÑQüÍ aÀš'ç8ÃLºóï\÷†‡4Ac<ncB(Jp2L±ÿÈ-&:ë»òª»Ó1lrçŽPé†ÓÌ”<&‘ôV{èz`éMoÍ¨`ñŒJ¬)?’Ò¾©¹.£Ý¸
)Øšgå¢¥6xP­dh¢®ÆÈAf·7'–iªÇù„Yæš39qj}L.7J'˜…È¨Ä(Þ¾&Û¬é*ÜÌ ïnž>R·V1	iŒu5½ì2›?f&þfx<¯c5m†eW€®ãÄCœ\L¸Z¹h×Ê„j¥Kúô8ö<Ÿ›çö˜¡^ánÀv¨dI`ê¬ÎsaLÅ“cjmð!``=ù¢¥<å§Þ×ÕúÖ+§ìR!$­	.\™Sº¤¬0Ü6rñŒ²èÖ#_©jì¹‘:ûpþR–Ž—è‡µñZ(–ˆêT#Émuø®BØãÿú™àäÜi‚wBŠ…+ŽfâšzÖ<£(¥h}·B_·ìf´¦:Âw™¼Ób¥°ý"¬2Ã¹[ÇB<;«[<•°	Þœâ¼’_Ý`­•ô¸¸®eÕŠ&
ä¥Ë¡`ƒZ!ÊÂí)¯G?½}l ÔH`^SÚ&Ÿ/®gW“úÂât¥«®„èŸQ/Êû£×‡ÑÑ²Â×?ŒN£¯\¿º{/! ôOzƒé	ÆƒSÿˆ|s2K€Û(›PŒ½(*ÏÃ%®x_út®K­]®3êÇÝeùµ·Åuây†•”-q`¢ãØŠÜäŠe´´‚£ù5Þ,q¿l-4;#È£Ï®u}'ÕªÜ­xÄËu\àt‰ê®}M8^ÒÿŸÛÞ-½ªçÌF5ý<ûß£òtL[xO’ïIòýGÐó¬ŒÝÖóZî£:ìSW+n½€L©„Ú7£’¡#Í¡içõ&Çº¬Z¿Ãbmw*…þ­ç«dFsYùAŠF}l SCXÞû7uº”èÒ„Ð_xœ}V[oEV*q©©[!„Ú ¦:4½bç¢¶\RÒ†¤—”´i›¶Š„ª0ÞÛ#Ö3ËÌ®#$‹‡¾#æ…§Jˆ*¨oðøüçÌìz×N?ØëÙ3ßùÎ™ïœ9OžO<ýuâ—ÖÄ+-žÔ"Õz–Nô–ò?öŸË7³g¨U+ p'Zð.7À€VcÖâÐÔªLÂí‡·8„¼+^­\ší_[ÇìW¾{rÀÛËÇNãoM„‰’Eÿx¦•,ÂWPP¬Ù++ožý´F›j—Ck|ÎÍ£ÜÜ^Z™œB[–Ù±Â†9f—VŽÚ—>>~˜Ö¤[“Æ;±W§O“£X¹ÍªÙ4<É÷+(ÖÈzš,Mì,›‚GCî†K…Øm·9jÇÐN3Noô#—àÒßF :&Ãm¤±-B.:íÃ‹mÈK‘TR
o;éÇ<ß½c/pËÑ…ŒÀN“ëâ ¸l%í|ßŒ®ÙWŸ?*éCÓ‘h¦û^ûéÿ†kÕEæ¦ZIÚ4OR-y&Ñi€ÏÜ>½öß<¡W ÃúÐ(Ù
	JrPM0ÈB³¨Z±_¿°DF¡0qÄúÎªZióhô<¡ß–fPÚýÕ¬´‰‘çð¶ucê "=¾ñSu(;J‹]Z;}dL£v°qj°E*`‰«“9«¸Ñ'#¾ôñkþEÊMb…0…ðTû™éX¨Ä6PÒ§—\BI§®÷G`bF1
Cx!K”îÛÙ»gT†óú®ú´µ›°²É/ &g‹n½$
F‹º«¼ÉÒˆv*˜#w³Šô©;8,YûõÆÉÁŠ’].—¨W"ÐÄ#á;¨¡ ²å$$.vX"”„3è˜,âd¦/ƒ¶VR¥P2©¨¿Isƒ”|v '¢*E‹ðÏ#Áø
¼ìÀf@¨lýî9ûÙ'á`<!g¦ß_˜oÑ uè²(å5Y´²pë#)\Ìí4³9A¶~KÆQÅŽ7i‘^1TS4‘du"[LÈc.CJ”òÚÈ+nzm´„ÒC$T“‰y@©¡Ã@²718™Õ÷¾AP™1*“„*¥Téx¤‡G)jçÔ`Xø~-wÊMF2;˜ž xÊ‹óÄtRPóê§QÂÌu’:¬%Ãä¯ö”k,-**ª‹ç_ªa2Ékå6d«#½œ¸¾åÚKÆ/ÌTˆ•»¾¶ê 6wˆQ€ú‹ py3OöZÑž)¿¬O`ÜÎß<>‰ý“Q$,—e|µkgî¾{|ßFtNì_ ¿“åIžBaEl³ý¨÷¤^$?Ó¦0&åáuXÉ±|-‘¦x„åöû;ç&6ìŸëoP	wbð×™*èêÁ³¤"Kèä›,2¨\´(Pï26üžuÕCÂ”hÜ¸Íƒ8æš £LÁ÷ê­9!³¢-‹°ÔvKé(¨bÿõL÷%8(1,PvQÝƒ !ÞV5aä[*|ª…á¥hò«a,„ö1ÜoÓìZ]¥L¸£pÇãÛ¾ÊºØ_°ë¨“QjÜÉ*(¼cƒb˜>,à6KAkÎBÚ©üÜÝuÇÕïÂÉ¢•v¨³£C¾swû¹(Ë]¬ƒQ‰8rãÀù©¹.ÖGâu÷.œÇ7öÑƒ¦®ã\˜_ÈîZ7¥S¸`'¶n]Î‡áYœZfe·ÃçÀÏ¨xa.@1®"Ê¥Ù 3²„c°æK4‡¢k¾vv…5ð¾AÖ¬CÔ\Ñ lÉœÛ¼µ|ïþ;3å¡€ˆU+ŽYì7×']WÍK.L;±	h¬¡mX¨Õ
*†kôOÙuêÈkÉqrÜ"A?þ;Æ¯)–G#/áx„¾x¶è²!$ÎxßnÝì•ž½³4÷öj~+¸aßnäöB_U+Ó@°¦À$áüïpÅî—ývûdë¤ýýÚäÕ5§wgBK©š#™Ð’æ¡Ð(—a÷j£0SCW_NÏ”¥g¿mµ'þ4qa#î¿[xœ;+ÝÊ7AŠ¿¸4©¸²¸$5W·(µ8µd£	#_p¨Spdpˆ«oŒnkðfÆ­Ìzhêbt‚ÀŒ’ŒT…¼²ÜT¸Š5½Éy¬
2ˆž˜´ ›”Ô²ÌäT»ÉoX¥ƒRKS‹KŠüÂ|‘ô+@T«é)„ Í†éP(H,JÌÜÇ&Å”˜7y5›Žh°‡‚’@ˆ§¿_°—^q—_~^êä~žXq°ËŠÁNCq•9¯Š º«&Wð2r U]ç€GxœkåÛÊ7AŠ3=µD7¯X73e£&#·»kHŒ®_pŒ®§ËfGÆ­Ìpi…]… Ô’¢ÌÔ²Ôb…’ŒT…¼ÄÜÔâ‚ÄäTO…´ü"…Ä<¿0ßT…¤œüäl…”Ô²ÌäÔÉ*¬
Ü@Cb€¦Ä ™ÂªiHº)3X-ä4R+¬ôý¼²ÜTƒ<ÃÉX+Œ‚3òËÑ:d,H0=³,5Å`«Éõl*HîC5s›; ÈàdYíŽxœ[½‘ñ@7ã†lFÖ¼bÝÌ”ÍyŒÕvæä7ö~`–‚./—‚‚BPjIQfjYj±BIFªB^bnjqAbrª‚§‹BZ~‘Bbž‚_˜oªBRN~röäT‡ƒ’`Í6ú©¹v
j9%Ö)©e™É©jé%Ö“_:ïÕ&lˆD‡žÂdW	M^®Ìb…ÜÄ¼”Ä’ü¢J Ê…ÜÒâ…¤T4]“\Å&oqœü'\`²¶‹ìdVw»É\ù˜ýòó&¿—‹ÝŽ0ÎÈ/G÷Ð· w€Ó3ËRóP\2ùCh$Hô"úye¹©y†“O‡Èmöc Ôpu¦³sxœ­U[o›0~çWåaÍªqi³®Z”VÊºFjhkUúàÀ¼›Ú&i¤i¿}æ’t—‡=4–Àø\¾ïøsõ@–~×#¤ªÀ!°õ
M‰Ê,/Q¨íÎ`\©œ‹!<\OïfîH³~„‰¹RåÐ¶7›•ðxÉùw‹‹ÌVIvf#³sµ*ìÎ¡ÁûŒQ5Þ„ÇŸ´=Ü·¨m2GTÖ’‘Ræ\Á¨Cß!ËÔb¨ìË}è0!J‡îìÁ‰}êœvša)†0ÿ2Ãn±S¼1¶ªVvKXV‘LË\–TæµØ°Âèi#727ŒLÏ_x®Þ÷ w¢ŸÎ^c†ÝÔ±õhóµ£A9†	¦”!H¾B(¹PdIª¶ U•¦dúùÚÑ tU[V™´\RÂš3qæœ8ün¡s­¤•±ªÑçtí™ÉOS^ç£éœÚ+™9Žs2°jÝ¡"¥ë[X‰„ñD}òdXX´'k'=:h!uA‚)©
)+¢eÙ)*É²Ð}¹-sdDQÎ‹åè¾URÑ”Æú$© ðY¿8˜*X‘QœÛ·†E(š†Ùx:‡«Å<tç!áØ¸q}ŽEÔÍ;ž¹=ãŸ{"¾
ªPa	è›f#AåXFwYÒ^1gJð¢@{G]±VÉ×Z|M–‚Æ-Up?_xÁ4Ðm/KðÔˆÒiÍ\W<ÚSG©£×4ÆKxˆÌÈÔ§\[\ŒÚù~èè8ì–üg4 kRTx1ÒS°†æ[ß¸)mã›¸Á•?õÂébÞ†x¸Do¬–cÑÀ×)ð<Cïâ¼lÐ°ü Þ¡&izj(÷™©Q|·ó]wöûÍ¡vm>ÿö¬Ïì²Íó£ŽÆ½Ï¼[·«Èœ>“U©2Ðß¢z»º¾á[ˆ}Xué"³’z—²Ò™2~ ÆéH„Sxœ¥RÍnÓ@V„ZÐ¸@/p‰ÿ$Z„R	i©M£8TÌÁqÖö*›ÝÈ^' ùRžõ	8óRÌÚm#Ô"qòxwö›ïg.þÚúþ¤þxºU©]Ö+?ï=©2¦±œÒX-À5 O½ÑòÁf{y²•p9Ùð÷¢tâ	×ˆñÆr
_°ï>3`ÄtŽaû}Ûiõ;½Aç¬»MÌdJJoœ	
2€ÖAï}a×àÜÁï«´Zø­7±pú¨î× ë8},61ûmbözç`í@+×XãñœHÎAEFù(©çé˜ÈQU–Ë*à4ÑöÇƒÓÞIÛ)XÈ&£ Àýì7ªv³êîS,_Ú»U×'¦û•˜”çøŒ:1;=ÐMÐ0wóû¦ 9—s&B˜3Î!N5‰Œúë^ìË	jaŠÐ— ¡
ì‚J%-=WäˆÙdÆÑ™¥ÏmÐÆ@Ú`¸éS–Uu¿] ¯\y÷á¨t¤•Æ1Š/r14˜y<¥ÀP¨È÷Ú«$ì6`ÈT#¼Ã_8›0å)&ÅÊ}&}Å3üS4<ŸºÏÍ|DG`{L}TÈ4Œ`LcAy-¶×ÔÈWcŒ8Ç,šb%+°»Ìþ9ÂC'šP¾àÅjCÚ1Q?’P‡·`%‹Ä*èfÔ0-ˆ«aÑÊNòä¬bÖmÙüÿŠf7vT —rŒ›C÷ü”Â¡7Œ™ÿGìØûÁðTaÀ­z¯‰\ÓX¾Íe=ú‹®åæ}ã78arî…¬%xœ{>…ñrã†tFÆâÍŒMvŒÅ“_Û‡J§–èå¤•T*èòr)((„e–¤Nžèä:yŽÃ6 ²`Ç"¥²ÄœÒT[µœk K-½ÄZ¡FA·LI`òMÇ-¬`­›':©2NÞî,=™ÃE±l²¾‹˜	X¿Øx0ÉHU ‹)ä§)” 9p7”ä+$¥* ¥7¹Å¥kr½Ÿ_¾BjEbnANj±‚Fej‰¦ÞäÕž²“/x²LVp’Üìå)Ë í›L0å@ÐUxœ­SMÒP13‰dˆºqcbnˆAÆX(œAC€´Ä‰±¦yÓ¾âËô__AÝ°ðhÒ­÷®&®üþ…—7Â ƒ7mßë¹çÜ{Î{ßoÝüxûºÃÙ˜*4Šh ñ¢³òµÔÕ–Þ~¦™Šf|í¤¾]9YÇ€©€NgtLá¸Õ‡Ž™MÍ{ùÆë$–Ð', —y48ü+B  —ûf®[wŽd¡¹¤cº:ÔÎ¹ëðÂTLÅaÜTâÓÇµV[×šƒžþ¼~ûqàb#ù±UÚd$bŽšâ]oiCGçÖ;ƒÖÏ×0aVSÄI^7ô¼pÂ‚!~qŸˆ}ÎYš15´î ÝèVÍ |¦ÙýºU;<FçÆ,ba€«_æÓ:j¡>‡ï`&<œ‰ÏélU=lU›«¤–«ÖµTQ+¥=K}Tªì•–(’h;Ÿ:H¾lšGíõí^×È¦ý~zÕ-ißoœMtÊé^,F± „P[„üíî’ØÑ,H;æ}…IÈOgV,`Ø¤´äÃÎËé*6fç…ò+—‡þ9H†¾šÎE
èþ\t!ù?š–û'×v“‡™Ý—Îaò&s7ù¼Óù¯C sÑˆÚÌeÔÙ8FQø£âÊ,Ù¿ž 9@îÒ PÄ^ŠÁØ§ª¼+’:yŸyúB¿S¤æƒxœÛ(v’w‚KFjNÁF=.FWŸ€ÍnŒ[™%@B
1º
 :3/-¿(7±$3?or«² H2&-H!Ú&9?771/eòYVÙ°€¢ü²Ì”Ôb…4=:
å™%
)©%‰™9©)ÈR
‰Iù¥%
%©
é™e©y
P2Ó
ÀæM>È.Ê[\Àå—¯à_ ÒR<Ùƒ#V&8#¿bÐ,…¼²ÜT…âÜÄ¢…œüôÉ^œªü`9°PŒ.H¬ŸSBlL‰Bnir†BI¾BfÉä¿\Œ\ SV\0æB„—uxœ­SMkÔ@&‘BÑŠÞ^AÛŠf“µÂV·]º$YY”ÝínhË¸y7Í“I]üEÆ‹w¯‚P¼ySðxñxñW8IÛÔfW¼x	™wžyŸç}ž™¯ï•o•{Êy‡ÑUŒc8%^|ðZyÑ˜©Š[§\uq úÈÅa×4ÀÁ”Žp%†€ŸÐ ÆÔÃHà@Lä. ',¯W6´H¼Ù¾(>lŸ¿¶ÞÙeÂý,{¼~H³ìò:<VU‡25 >nf[f»ov·ÿ(Û½	ª§ªâgóûtD"ž0)…?Å²Ò9Bsœ4(¶åñã%L¨'£„åmÇ¡ç…¸òù„ß0ûíkh¦«c·›ÃLÚ YFÛIüLq^jíJWSÓ0(j&áX,lêç‹Šd¯¸Ïó +n¥à((šºÞ2×æ°ªß^ÞÒ«5}©V]êwªµµêQ±o¬
ÝXQêÂ5¾ˆWæþ¹²o—­k—æ-v,¨u%$G<dÏêò*ŒIâñ8‹y”0&í…IÈö2K
˜8Óº/>uNï!Ÿ‡¼I„“£@Æ,ôAyþ§:IB&pLXe­þÝ¡+%‹fº.ì^ö]|îéS6äÝäç!]‹#Ñ1EgÞ÷#-›åÆ¿â>™%âêÌ;Ö¤-H}Ô³ç’7>øÖ{©ü’,fí<ƒ xœ’AkAÇÉEp!"è¡H¯…$Ì&ÒS‰JCš­Ð<–Éæm2¸;3ÎÌn”"ý G<é'AìQzö àEðøüÎLÚXc©Þvß¼ùýÿóïÛ³ÒÛç¥7÷JçF¨ë"!4­óLì•önÌÕÌ™õÍöŸ%¨— ØB-)w7:0Ä‚ÆXSàÛ –DÁ5‡åàZC<Ì—õ—óìGí…
ÏµÈu=¡)^¯¦ºõou«#ÝºuGó±ýu_!*Ðã©baÿ¸„œÑû9þ%[$ÚºÒ@Ø)pzS¢ÊSšƒ¡Ï Î¥D¦f"ÅÌ~M9;N,¹TAL„Î%&@µ«‹´—B¸Ã@åqŒJ¹“	MS¯ëe}l”yÑr0¡zDÉ…¤D£½—$ôA›\»~bŽÏ2gß³âÕ‰ô4RXkdàPœHžMeü€Ïœ˜K—Í§Níàgg«Ës§[¹xRòæI·¹JËÂb³R.¬C°Bë7–g”ð4å›Åà!,û¸våÃç˜ÝWçççb^G‹gùÛ|Ž—V0…°½s»Ùl^]‹V£µÝß°p@™YémÏoÎã^ç6e8tìÊ”­íüƒ¿4·âûâ+2lº5t óýfÅ¼ë]8Q¶7“õ#?aAô˜‘aê¢¡3Ñø+ÕS­Ì(ÖÏó¢ÿþ‹ÝZéƒ"xœÛ4ñsã†tFæŒÔœÍŒv ÆdFoi ]  ËË¥  àbfæ¥åå&–dæçMîvØ.’·ÑOÍµSˆVË)±NÎÏÍMÌK™<ÑqGX@Q~YfJj±BšF…òÌ’…”Ô’ÄÌœÔd)…Ä¤üÒ…’ŒT…ôÌ²Ô<¨
™i
`ó&Ïp©ž¼Î™×/_Á¿ ¤§ØF¿`ò>GóÉ†n2Áùåf*ä•å¦*ç&•(ää§O–÷ðãË…tABîr“¥\$ýòKrK“3Jò2K€&n>å™Á >Bfáƒ¼xœUAJÃ@…)%Õ¶7"ºp£Óö ¥›*¨­˜ÐÕlbæO;0‰“I´ xuö^À•\¸ñžÀxc@Ôí{ï{¼÷Ô{mÝílHƒ‚pF"£Åó^³âŽƒã%Þ%Ãà|Õ­¼TÉßP>Jãé)‚ÇP/a¨¤ÑJÔ¶îÜo8£%bGÎÔ>:kuýxapc?ÜmÛ¯Ñ/v_{·týí6M^ó0çrfŽh5ÓáFŠa)©Ì$™XiÐ²ð‚n–‡…ÇSÈQ§\I¸âBü@^9(/vH&ùeVô*mŠ\
*.KS£³Èleé~§ÑñO =9¼ÉØo¯>›×ÕÖ¿SÐe˜we¾Àž]nî>´¾ »mu>ä(xœÛ%±Ir‚[FibyjæFy!F>PÇpWÏ]O—]çÍöŒ[™¡Ò“²¤A™›SX71f‡dd+”gæä(äçåT*”çeY
`%
)©e™É©Å
Å¥ùE%™yé
% i©‰%¥E©1jz
A©Å¥9%@¡ü"…Ä¼J…ü’ŒÔ"¨F…Ä¢T…Ò¼”Ô´Ì¼Ô”Í|ìâŒl“7kql€»é>w4 xšEŽë„Ë xœUÏ¿JApL’ÊBŠƒH´p½`cqþMˆHlDZ]nç’…½Ý¸7w¬|·Ê[÷*>„ •ØyœcûÍ|?fž2g:u^FNEJ&8ÈÈL:÷ÿûvxÚ˜€UË pŽŠÃÙe¡ÃQ‘'ÐÒŠŒ–½>z-˜);ÇWÏÍ…µ¦¡.É#ªÉƒ`L'4Nˆ…ÚD>íÛæG9ø“–[_¶Ò~·µví±ÂÈO…ÆFÇ@s,¢_
r
úÜ)h²•ÏD)šXhU-ß	)g­Nqeš?“w%n“Ö†òÅtX¨1™$ Ä”p{ÏÛÏÞ®]?dÕîfiiþIp9¦®J#lØ•þªý¾XÌ¼~×ùÑ'‚Ïã,xœ›9“qÃ,ÆéŒl¥‰å©™›sëí ìÉìƒ`Lw‡ÿ0ÞŽ3˜²B22‹Ê3sròór*Êó‹²,°…”Ô²ÌäÔb…âÒ‚‚ü¢’Ì¼t…†´ÔÄ’Ò¢T=^® ÔâÒœ H~‘Bb^¥B~IFjTŸBbQªBi^JjZf^jÊäNê›;2²Aß,éú†æ.ï~F ‚–I²è"„ÎuxœkÝÌ8k9ã†,F–ä’¢œÍ9ŒUv`Öäö¾ †‚./—‚‚Bpj^Š‚_˜oª‚gJj^IfZ¥‚s~^IQ~NNjÑä(‡k]FŽá“œX”¢uóÔrJ¬ÓrKÔÒK¬jtuóKK
JKtÓò‹rKl'«;½áJF˜ ãü}3kãf^/-V~°Åú)©eúye¹©“e#ä'WX3OÞÐˆ!ë('„&¦ [Ô$7yfˆìä"Ü6©¹veÅ6ú@jòÉÀGÊu‹Ëu“2ó‹*ÀNÎL‰)ÒŠór)+€”Åt14&¡(ßü?È—ÃÑ!rà:ióÌ/F6…’|…Ì’ÉõÁ¢“ÿ‡&B$“Â6;‚š±Öà ƒâ’¢Òä°õñP;´À¤­‚ÉÉ~áÙ~e™)@­V
ªÊ1yJ:
 	]3šH†eæ•¤i(ƒt`Q–ØÌÑÀ iÃ»Ò¹ÚxœÅWmoÛ6þ®_qÐ°6kmù-]1#	æ4Új ~©å),c -JV+‘.I95²ì·ïHÊŽ½dC{ˆ Ë"ŸãsîŽGûeè‚r<¼ëkœªŒ¶­rZÍR©ª²˜ÉµÜàB-¸hÃä—îMÏo1ã)L$¥°PjÙ®Õnoo½ˆÏgœö¸Hj*JÞÔ(«-TžÕÊ†ïWÊ¨ Jó]ñù%ÚÃMpZgT.(UV’‘¥\pg%û†YÆ£ªv±UWD¡òz«ÖjÔšõfkƒô+HÖ†þï=Z6PÀ1§²s×„%IpÎg	`¡§oü\4òÃêu7‡Õà·Ëàcà‚ÛÀÏƒK×XÑò«tææê¡—ayW4NÉs
K.™¥YªÖ UÇGôô×¡—a)“6+éEt–fJâMýío[»ºÖ¤—°ÂàDÌéŠÚ’Icoý§j½YËeR¯×-OcÇRšRÙ‰—€Iè|ð„|q<šÙÂÚÌ¾<j"%UÑ˜™‚˜‹œ(•²äˆ.¢T’Y†Ûr½\PFTÊ™ã±Åö©*Ó¹Aá„DzýŠ7äD$)Î²õŽG"ÈŽ†^§Û‡wƒþØï!wFã Þû#^ËM ÷n§ç»Î?»„U¸Æ!,³íÁÎ+šK».øØƒn€{X.1z±Æ]Mš&,yÂx“°Êá,ÎÕü‰¼8*Ô²@›ÛsMá,¢«tN±mÅ©uqåïFÝá¸;è[/Áœ0P³–±%°µ"‰þ×¥ RîèÂ"TÂ.šs¦Ï2*¤Y…íVÒ={	·ß¿m¡2)³Zu)ê×„yøÂƒn¬rH%$¸7Y–"ÅUÚN‡ñ¾"YA7Ž÷Åh;22J"¬w]fÚÒ’£/”‰‡ûpèØÈi•§ckAÇpêÔ(Ç¨è©X}™ôéA†9s¸ÐãO’3é÷è÷àØ^­ƒÍ:…BÒpH@¥¹Õ:ò­^ÿ¦Ó^û›:Ic`Þ…¥ /¼·µ“OfŸi_
ÎÕÏ˜¥=ç“iø"”ÕfXLÓ0
åëæwð¨ÌLýnu]¼ýýsœŒÃª¢R9!uà5Nk»:ˆ(G¥‚D‘8o ÚÍ§UQB®æit~zÚ¬W´ˆ?ž0k<p5åjîIo<–ÞÜÓÞ<Üß–«uxÌVÝI©oúÿ%tÅë²tîÀ&´Ý5.àO/GIwŽ=šÜ>É©žv÷ŠÃ­lñý\ÆÚ5Ð}eŸgHÔb‡{ìçß`cA˜Ô{ÍèxïãŒ)v-ƒwËy_ù‘çÙÜY>MŸŒ÷“yküWÞšGH\ó¹cò-‰k=wuí'ÎÑO÷ÿÖ‚òŸíüC"ð4ŒÍñc‹‡†Às/U´´ŒÍ1Ñ‚ÏÅ®±me	¿ÏIš)ÞÞ|ço ¿äŸå‡[xœ[)=›o‚ÜFU>ÆÍÖŒ[™M3JËS3us2‹Kbt|@tbNŽBQjr~z^fUjŠ‚X‰‚_˜oªBJjYfrêd1VEnˆNÎÉÎ¬Z“ËXí- ÒÅ
‰y)@JJ‹òJ2Rôâ
yù)©
iùE@‘üâT˜©Pß±šNîg;"ä—¯Z‘˜[4¤2µ$FMo²-¯. *¡?&ä/„¶Ixœ…RÑjAe¬–VhñE°x[ih¡i‰/ŠMBÄ®¢Å†P©àÛtçnvqvf™¤îSý•‹à«¢ÿÀW¤?¡³³5›‚Ðy™áÜË9çž;¿¾>ß‡Á‚IÔIÓª\	5œ¼Þu/ ´ÔÛïÌ4çàÐa0ÅTL88z`FÇ¦03³8ßÞÉéÓà&}\£³ÞçåLíÌºtöh²Q‘%xá$ßkW@iúÞ¹î}”‡~‡°î¤º¥ çåÅ-D‚ÓYK¸Hm­9´9¦•punŒúX¤×áíÓg2ÒÈzõTÆJgÌ¦Jº·‡ÔÈæ#»¥ñTAŽ³YC[S)iµµ&9H–¡ÉY„æL3‹¢ð•óa‹ÆÝ¯îµîïjÂÕ¹›EIÍª\£ÞöA^:††°»JsÔt+\_ÒL¾qž;5znžV Ëu)×v;˜ZõŽ1	»éš|=²ZøÒ6¼LR*/#ªM&ÌaÒOÇYpAžgU¦•ÒO3Vs!<?ìükLMMÉÄ	+ÌÿÜùIÓÕ'ûô³ß#x|c¹ÚÊìß¢·{©1`î^¡ýú1 ¿pÿŸîo‚Oxœ½UÁnÓ@•%NAæÈidP/ØIìöÔ&!iE,*—RUÛxÙ»Ñî$¥”ÈGŽ|á3ÂWðœø
8Á®M'%¨‰*dY;»3oæyÞŽüë£ñí“ñ¹gÜŒ#‰ŽžÈ39Aã´U>È~<xr»´Ç¬ ÀSu’…í¯~ÉÕ¨Ñ¤‡‡wÂ7z¸ïÁqøCtB.‚Í’÷(è(êR½Ïv;_Ò.a€}
*e(¥ à¿zß•Š‚H	„ (Eêr†‚Ç1Ò¬hö¹¤s 	§4Žõ*yBa@FŒ2„ˆi†)Áˆ3 'ŠµN™TÍÊã4!’Ð‹F”Ù0‘Bé0Îâ³¼üˆÄC*¡(¼ÀF3-ñˆ)	"Öäyh‘½Ú¨M`÷ƒ‘ÝÚ—ÝèÜK	ô›VB¢ù¶àÛê‹Ðj]˜iÝ6RßRRÃ¬è“?›:8àøMu:H%š•×JÇûN«ƒ¢:M‚@4Ýª~6mrÔM£ ¹µåÕm]èx.Â%p—'XŽ÷æº‹½œb:-á­YbŠß\ï6²½Ž›ýl×Ö×Ô<¼‘œ™•s=9Ö‹‹`Á6æÓçÅ¢Ü>I¨vXeõ,;øSÑ(«píÅTÏ	öËEæ¼—‹©*sÎ—‚09àuDjéö-DtT§Ô4æVl¬5K4¶¯@/U—ì_ü®—žW¦—›©z–5úoš•Ø^–Ì[Y³t‰hÞjJºØ•«ˆ¦¦îºè=ZñNMÍ©fzQöXý`Ž'ß÷ï¿”þ­îƒ]xœ»3ƒqfã†lÆÍEŒÕv“¿Ø{Ùe”&–§fêæd—(èòr)((ø€˜‰99
E©Éùéy™U©)
`U
~a¾©
)©e™É©Å¼\6ú“7zËLît˜Ê1FdÌdMG“É¼â'Ÿv¬°„*VHÌKšWRZ”§P’‘ª WÈËOIååJË/
å§Â,h™\ëd<y·ìäuŽ²›ÃœO2N.÷æðËWH­HÌ-ÈY™Z¢Waï-Ë W‰PýãƒÚ%xœ[mðXu‚,KrIQÎFy>Fç ŸÍúŒ;˜UAB
1º
Á©y)
~a¾©
ž)©y%™i•
Îùy%Eù99©E“9YÁš'û°†MžÇÊÎ™¯`“–[b§P3ù¯Ød6®d„ê‰l—&Çp\Úü»„™l~Jj™~^YnªÁäJþÌÉ<‚ZŒÅ“-#0dç*bˆ4ãâŠIó,+ŽIâš,,ô:M	Ð1ºE‰å1ºI™y‰E•
v
™)ñ E1jz@q.e: `Œ.¦Ö$„òÍAÂNŒX,¢öýæc"MŒpð[a¼“V«×“¶
Å%E¥É%`ã¡ÆNVOó.ËLQPP°RPU®ˆIÍSÒQ »O×(®iÍ¥ E™y%iJÅÅ õ˜ªÁâ“/‰G ?oœ\â!„Ó1xœu‘¿KÃ@Ç)Ú_qÖ¡Ó³ƒ‚6UÄ1-H›Á¦4¢C#xÍ½ØƒäÉ%UÅM¸ÍÀÕ"‚þþŽŽN^cûà†{ïû¾ßwo+Ëwµ£:ÝéÆR¡bî;ºiuì§NáyAÿÄàè`#§Ð;>D0)rÁ¼K0·,è„A@ÔÄF!wŠ­3FlÅñ`PL™‹m:º£»!Qèû)m®2¡m¸Ræ.ä·Sæ”²Áðy_¬ùRlíáÀ~XÜœcv"IÄAŒç³%‚ÈƒÒÃµÝ…ºÕ?2­ž]×šý¾ö§óÁµæÀ†]m€"b˜b–ÆþK‹ó4ˆE”¸ŠÁ£LÎR9d†ÎZLOµY)ñåÅL„¼ñ-‚	ó}!l_xª$©ÜÊ×òT¾W†‹]’¢\×nÊùÈÇªXÇá$‹òú4Æaœ(,õF„’‘2®nþn|j'_@¯¡ïlxœû$ºUp‚,[J~nbfÞFE>F6_GO¿ÍÆŒ;˜¡Â“ß³ˆs¹€™
>™Å“EX¬ 21iA
6)©e™É©v
Ñ1º1º@ñÝÌ[ #31/>3ÅN¡F(® ™ÜËº¢]!hš+Ûe„,P½Ž6ƒ&«³+ ke—g‡r'—³+ÁÙsØå'[sìòËWH­HÌ-ÈI-V¨L-‰QÓ›|”K «©P ê#„û=xœ}RMKÃ@%P<TŠžziÓK½Û{µÚª±AüÀŠ ÅCš´É.$›´‚Ð£Á¥„(=x÷/¢xòWxÔ4MÐŠ8°0ì{3ïÍì¾•Ç¡r×Qf(Q)7G=¥_sù¹º]ž¤¨™4 4‘Ø=ÚAÐ	2A­SÐK{°ÎÇ‘&
y¾ö4ˆ‹–KèT¡h‹
Á€šXìˆ
´TÕäL¸Ü¶ÑU)YãfØ‹Dð¨&L]DÊFKå×rDR¬r_È›Ú¼âÈÛÚK4±jÆ6ÇÇEá»Dwz”LúÇ,@aÈ×ú³¼Ü¸šûeKVµBîŸI¤£å(\ŠF:ô¯•y±xÂõÍÐ‚ÅÝˆß¡²ïá£ÎK [!H=Û{zÀ¸˜P'èQÛ†6B¹Ÿ²ÂYí].hÙQ~sV‘Úuªa(÷É;ç•‚×å½HÕ¢h(ƒ®:e£m£|Ø:L>É¾~¡|UÁCéyxœ;4•ñÂÆYŒl)ù¹‰™y›ó«ì ìÉoì}aL[).0SÁ'³xrªÃu˜Œƒ£„&©›™b«–Sbdf&æÅg¦¨¥—X+Ô(è¦( 	onpteä…èTÈÉ,.áåÚ|ß)(„¬jr ‹º¦™“{],¸z'_vÑ`‡r'ÿsQ€³]-6kºµ2N¾ëÉÇï—¯Z‘˜[“Z¬P™Z2yµ³õæ¥ž²Œ Î}Yséúxœ»'pH`‚”Xf^qAi‘n^YnªnYj^J~‘nN~úFe.F>O¿à€Ð ]¿0_×ÝÍæŒ[™-°+WˆÑUò€JS<Áj\RË2“SÂÀª&k±*Zpé{((Gúù{+qépéå¥qÅ¤y‚T€® bÇ@M?¹†ÕJ«©wY_²AN~Ì¶»š]ìž8Mæá J]ê„ã_xœ{2“qzã†tF¡Ì¼â‚Ò"Ý¼²ÜTÝ²Ô¼”ü¢Í9ŒÕvXÄ'¿±÷Ã&lï *â	VpI-ËLNUƒHD:(²òrÙèL6ô™¬àÉ2y¾ÃL¨	
È&Ø:JLþåxL›)
9ùé
‰é©
iEù¹
%›o9É2J”!$‹KŠJ“KJ‹R‹R'w»ÈNþèR9y¾{^~^*Èú	Þæ“m=“°»r‰g67I{™lîõg 1Go€´›xœÕYmoÛÈþ®_1pÚIM‰²ürvº˜¾°%ATÓ\Ã@X‘Kj/ÔRÙ]Jv×ßÞ™]R’{NÜ"ºkÎ@,qw8/Ï<3;ëìG{`MüM?car~r9çÞ*‰½¥ö„4\I–{y‘ÕrÝÒÌ
uïozïî‚`öù¼×œÃÌ˜ÅE«µZ­šIO‹âc³PYË$ÙI‹ËÖÌÌóVõ‚Õ÷—\1Cú®‹ø{”‡wá-„æ!çzÆ¹Ñ°Ô’-ô¬0pYi¯5ë´)¹i]­#€kf0¿Óê´[GþQ§Þ¹c²dùôßÞñê¡Þ
‹RÅÜm¹µ[&³’e¸È,zFËæøì¡Py¿~yoÃÈëõÇÁhöÚøoctÏÊñê£2·gu{_ûcµ¼„kž
ÉAs‹B6¹0 M™¦;´ô¯¯ý±Zª´MËL7>LZRœøg§gm	Ûèf&K»ÏT<KîH“©"M^ÿÜóZsù¾ßî4ioWž
‘<hfÐL4t?AtÀ>5š<wÔªW÷wšHÍ$<een -Ôœ#d¶C‰Ðlšca>,f\2#
ÙhÊÙ£½ŸJmD*b»,¡0üóÔÀœ©LH(dþð¢Ñd	ä;…á®ÛëÃë–Sá¸;‡ð&ðrWfBªÞî]°×ø\ƒÈƒ7Jð%,qÌËRÄ<zyÐý¤¡–„T¨ùŠ)ô
“	h†òˆS*rý¹éL…?öÃ°bÙëž6¢´G–-cK‹Ö¦#²¥#¸tö®à}äE^QšEi"´¾º¼éÝW‡èaîû'e“:å*ò´ø'Ê…½89îû‡Q×Ê&Ì°ÈCÏÙ«Ëëî¸ÝQÐµÂ	Ø…‰]¨4Ûh*­dÖªSØZ¨¤±6‘É¯.77a0¶bê§-ÌÃõ:UØÒi¥Ö²äjZhN;K<Rá°¼Â×£ÞpÜôœ7…3ã®›;Ô ÃN!±ž$–)mRßâÊ†¿¡W'ñs§ø§’#Ïëº××T‹˜O¶É(ÚãÞ:C¦Øœ£.KC&t‚=8ânÆ´WyvÀï/ …-Ê¿ÿb£_^‰<·U«B}Äo[ÌÓ ËuwìèJ§œ™R‘OÈTòSSÓÀ @ç×&‰ž¥Lì!‘¬99°%‡ÃÆ†J÷“|k4G!7vÇ‚ñ×ºWi¨2¦¹©,çSô -ò¼Xñ¦°‡œ¯i>IWGôKD‹_M.˜ó+tn*äFš¦â-•w5wOò¼òo\ím=öÐ¿oã1áÃÁéÉIç·b1gùôÍp½e¬*€ME|®Z*“×ë	ÐŒ©ªoPfˆ)0Iª˜C›·t¹ÜOùúåÄ½y~Ä¯¸TŠKƒ±<©8#Yˆ±a¿sìâÇ©û8ëà‘:ìwì×\²,Xü¨†]ÀO|pUAU$\…0©[£hIÎ ÌQ–»³`Z£0¶K¬£dÄ§±Dmã¸Q‰¯i\PÈ0¹Ë‰bhE×v7ÚÉ›¯@°n÷pÚ4±ªJ÷¹§Ñ!· A°š‰xF±Y\ê]I;á§.«°âbŽâŽæ•03ûššàß¼ó?Á·k °“¯»ú£6ÿ$D†çbË$I:xûƒ~poáø°£Ñ(0ÜÞ£/€ƒgˆ1¶õ‘ÞYý<sW
òZ!zÒ¨ÂÆ-¤0Â®oÌÓ¾ÀQŸ¬ôRxÉÐ•§öuYà”öÖ‹‡Öæ„º¾«`½T²*7É§Vóç“û<ÐXÌÏñ.ß£ïa{u~¾Z/WàU±X´À’D‘8‡—Ì¹Ö¾;FbŽ	$L¢ð,ÝØ¢£#x×½Þõ8cµÒ¼,!ú9jD³}Ï?Þ¦%~ý‹ßÙbœÛ~±Ã3	àKàµÍÞHŽš»ÿÝï(Þ§§+Û6®îXÛœÔÅfj¦R :qâP«xlãJkF	Çwt]8¿éÜœOþãDšùí³vûèlâŸŸœùÇîDzqá"ic3…ÃÜŸàó³ÜÖYïf˜-Ó@ŸßŽ4%üW8â©iv‰h7JÿppÙ~¼`f&±´·pj™ù¢Eqí¦µÎo¥zDSÛGêôø#Å¥ü¨ëÆaïìd§loRÕùGÃ½}ú;â~~âï÷öiç»ãoõra¡[Ïü_å‘ìlFÓŠ3x÷°w]’ šÞ7êiôòïýõSÕ(´ÄIm’”bB>OÚUƒýzKíg,íÌÒÑ3–:ÿ§CÃ™¿!Ÿã‡­A,/ä‡0Ä[¤Ã%mîAxñ¬ÛgÚKë1Áøk.¿;˜[óù® M®~sH·ü&`¿`óy`Ãê?Üp=¤[bu¹%{‘g/ÇºÆÞ¹þ‰]ï1æMAxœ}TMoÓ@U„ÜHªTQè'b.@[%QÒ"¨¨ •"µ¡´Tp{Ü¬Xïºk;­OÎˆ=pá?ˆ_ÁáÄ»¶›¦šÃfíy3ï½Y]û1ÿnÞ¢<FöfJ“íÎ‹Ö¶S5{Í/­Ò·kùé{kÞj›ºmÍ¨«>XYÚ<æý !;ÏVÉ	sªLcNaÝÃ>u±	¯œjö~c½s°Ó¬€~€l{hÃØ/•xD?–ÿŠƒ¹æIp\‰ÌI€QH\tªÔ»h‡_™$’8Lb§êS†ë[ííV³¢Î¬ëêãÄãÅLè#÷„„„Óã!çLýž8¸I¸I¡‹€4î¡½¨Nùþ­
èÃž Ë„ûZ–gvxcÙ¹Wƒ¶IDù‘I·G$qµÌ~%{{‘M=uD€&„Fº(÷H,dª’òÂ½ex'=êö´c.K<Œ`©›ÄÀEŒ4Fb±„±>§÷ô	ì®žž‚OÊR>¸‚ÇR0†2RßË[ƒÂQ£æˆ×vmoØÛz&â4ÄGP¯@#ã½
¾^y@-Ÿ.o¶F-E(‹g©É¡Ó>²T+¢ñZvmw×z–äõ¿-jw†ÅB«‰ŠúU~60âA(EŸzè`ËQìÑi,0÷‘é¦
!]!ò SBb,©f”Ég.ƒ/E`ÌtªŒ³‘–ô	edÐeÚEêC”„¡Fûnšåå_&\"<:õEW/{ÈCNô ÙŽß6QŽ¿g&E„Q’úT[ž7Îšö²–‰7ÖáUm©ÅÉ ÄÕ§ÓêlrNýœ½;‘Ô›é……ñKÖND]MÍ[™Ùjjª6–Øüb¾»twÒÍŒD€-§çKc/ª·s+%û9v‡#í/„+xœeROkA§ØFIª'µZ}ŠHK»¥Hzj/m…€‰	¸ “Ý·ÉèîÌvÞìÖô`ÎÞ„¹ø%<ˆø1¼{òæWð(ÎìnÑÓÎÎ¼ß¿÷Þ·öûëÚ„JŠÏwÖ–®õºGƒg}ßëö‡'ƒþ—ã¥¯—ªgó{¹Ýè•Ç•ö!Ë´„	ÏQÀOÍÑÊÝã¨+ò¡BN¾Ç…F%Xì{±œøÑ BÌy€‡ðÂ÷|/eÁ6ÁÇOºOOwÀÞ˜¨±=/iûÏ{eýŠ@Oz½½
(Å€G<¨
!IÂŠR	
µâhæLq™X›\À˜¦fI•0½UD²ÀT!Ì­LRç$°)äBC"£ÿ`†S$\xÉ?Ë°T	˜UAKÂâÙ…s=]Xb0<`1P–¦RiÐÈçÆÖÏ ¼QF©£q¢Éüj|4ß/¯Ï+–20Õ_A"CŒAdÉÁ£‡{{EŠýÎhäÌžVjNHàyLØ¬ð†Ö(ecBCèxæ@¤,ÖT»“f~¥óªØ¿ClîN¡ÓÌ.‚uäæz›E,¡ë¾Õ(ˆK±åÆT.Ót1ë¢ægóõrq­Þ¾YnÔK÷_18Nó®u¿õ×²™O«·nþƒ˜­usïêöJ¤ç6€¤oxœ’ßJAÆQ4D”"½)È¹

IjÿPh(k¢b"q£öf’973Û™Ù´"^õª°áµôªáø‚¯Ð3IÖÚ®^ìÅr¾ïûsæ\?ûþôÇÚJm‰k1À’±ÌÆæêõòÌânÍóKÕÖÇÃŸõ™_³•5à—à %{ŒÐ8ÜC8ªn©ü±ÌOuÝäÓÜÛµlÁZðŽã@tñ}r;÷¦cÒ´XŠÏñô<Õï3Rº/Òj 8Ž\Œsa…’,„‘&z!¥ûÌ•’hþEžBytr9“¨™Ü-ä‡û¨»(-ÔE€Ð6ÈýB™šÌyçï,W6QÎ#L4V±‚
&¤ –]—ñØE–ÜÄâjÍ:¬×¨[Ò»ì8Hð0{Há¯ RÆˆN8î0P†› ,B‡¦O‹ 4<ÈÌ@·ŒAm¡÷£ÇqD{ùmø·¯Ñ¸M£¡lú›aP†k¼c­¬…ìMEM¬EÈ3„¶d&BFªkgô†°­´Ž#ëa”üŽcâE^¼átfVÁÎl™‚[Øh¯i•î†z:‘ê‹L…rr‘ÿ¶úè™?_Ú|’-$_—Ú¿„d+òî‚Txœ•?KÃ@Æ	ÒB3é  ˆ¾t
^¢«à ¡Ö‚4¡Ñ¡p×»WL.ñòGqqpsQÈ'Eðù1¼¤²¨8¾/¿‡çÇó´ö±ò²¹ÁCdŠ$<@Âc¥gl"A¥bõJ–ŽsÚ?Sâ9oÇÆçÒÃo|
”€S)d3„Š‚ê2ÀP€Â,W²¦Óˆ©Œ’0¾¢„	¡ƒQÄ¤ Û–iù'Ðõ'#×+'­õ­ÚÖ´iAçåckp87¸
”"VËà&×:UöG³EgÙkÏì]Ð)’E˜&Œ#LÃ˜_ƒÀ"ÐGïÀÖ‡-‹÷ä~ùÜ.V+O×;º#¿kZibŽb‰åWçâ¼1‹çœFy¿*×Ÿ\fÿÛ¦¼7wþ\ãÝæ7sá®2î.xœmOKÃ0Æ™²?ô zuò2Æ&j{ò(BéŠçVÖ„u‡Ø¥6Ø6#É6<éQð¢äsxÑ£ŸÁdÚ­àÁKò<Éó{Ÿ¯­·Í—*Çè	ü^?(m¸¶ynz¶¯[=Û~¸¥ÏõB­ï·Á×ÁŠ1bà./Á±º0c”H.HÀåcŠgÒª5¶G§<'>ŒŽ×ôÝ±åOy·åE„C@“¥X8šÆ÷° ìNŠ$Yª6/ûT R†•›/M(`”ó\˜2:™B”˜`î·ÍàSÍ‹0øa·ÀÈ¢G•Ã5”Ê§Š^N!'ò»Òzp/ ±âkh†ãh¾ÎÕÔjCs¬CN4wŠªßADH¨+ T0ÇXÕe ™=WŒÜÌDöØÖŒ,À¾6¯œž%(´¼Ož{ömBÈh’ëKz5“Ü«5ÿÜ‘Ïµ£_c˜¥êbxœ[+°\`‚’pY±nIjnAjQbIiQªnqIbÉF;FÖ°àÝÍáŒ{™]°()VˆÑUJ-)ÊL-KUNMLO,IU(KÍKÉ/R(.HMÎLËLV@Ò5Ù—ÕX¾¬8Ù¤¨Q6)©e™É©v“×°nÔÒp,„	Ä€8“³Ø¤™2K&·°YLÞËæ\Ÿ¯`ãæb§tAŒn~iIAiIŒnZ~Qnb‰-X†K/(XÁ„Ë,¥™§”™—XT© Q”uåÒöPPrpôðqVâÒ+.àrO-Áç~S3‹K2E’‹A&)”d¤Â¦¦Lîd7Åê»É÷ØýlÅ?âxœ[.Ð%0A•¹ 9s£¾#cÀf?ÆÌ îd	V® gÏT…Ô¢¢ü¢Éþ¬æ`á	¬ùÒ<mRRË2“SíbÒ‚&'±}–+ÉHU(KÍKÉ/R(.HMÎLËLV@Ò]ÀÖ}‘= Eà&™ånxœëx#0A•'3¯$µ(/1G7'?}£¾8#£çfwÆÌ(â“YU5óóJŠòsrR‹bt=ó2K2KRSBRsRsSKŠ*2ó’2ó‹*'{³êðÂ´Ç€õ7±>šœÎVUŸ§`ãêk§£££›—˜›Z\˜œ£›™b–àÒ
V0árI-Î,WwåÒàŠÑMS°qóôq…š‘Rš[ ËÌIµ…ÃL Š+€„!:ƒ=”\#'ë²O–c•PÆî—¸_@nNe÷AóÅv? ³¹fãC•`xœ]SÍnÓ@V$ª*8QªBGE¡ÔQ‘B¨ ¶*R{ $pÁHlíI²ª³ëî®“æPåöÈ+pAˆà¸Á•¯À‰bÖŽ#·¾XÞÙùþfü}ñÇÂ‡EÏHÝãGÌèÏË7fæÛ‡­½ýíÀÓ
üý/»3_/•®Ø—ß3hçá€‡¬Õ·O4PDRN0ä•`1Ä²LD€Üô.°‚‘Ðá15Di?ª@(©Cm÷®¬Ö'œ0Ð_ ¾ƒÊè`3ç~fWmB]&†KºrÏƒÏÛÀ|Çeíë@_ïJVT¶®†
&û­²°UÒ«3
u§S¯Ëò]Y›H¦Æþ©|{xm*;é\ÓZ†œŒ`HøÓN%ã˜ÈË8M	Êl‚õQ',DÜmäXCé°4à)×f=H•rÔEÒî,Q¬¤ÚÚŸÕåêÄ¤ý[…qv >‰>R§NRnè“©.RV`F	YàÁÆFPiÒ²/vúÈQ(û}G’dÃŽ4PÑÜû\¤ÆE'Ý$Fƒ®i›¤e—ÂÔ R!È.¡pÆiäRé¡€ˆæN‡Š
uº.Ž‡AÂº.´”—;¹ÈŒçágƒÉ\¶ö`å°ÙÞ?<h­xfÓ|i»³ñL2`§k;ŒÆ›é5xj¿#UŸ7ª|G‹ÁzWÏ'H‰Û'zQØÙzQ©½×º@žÿt·KD·r¦ã›þ¿½îì´j_Ö–®g"xyÁÎæV«“Å~ªÝ´¿æŽçKÃ'nÛœ[ªå›ÛµgµµRÏí;„“¤Î,Åð”BºyÞ/Ù•«÷ÿVsœé*„øfxœmRMkAf=xä àÁÛC‹ÁB§M¼(††–¤^ŠÚ¢¦  LgßÝÜÙîL6-ˆâM„ö²^¼÷Å›Gÿ‚@ðÔ?áìÆ˜ò^†÷ãyßçy˜ÁÕçà«ZrÊr*XbâËÁ»A#/on¬/R°vÀ3Ò!žŒGC–5 Û¿šø/;£³4^1¦yJ6ã‚˜
·:‰ëk«ÂNìúx¦1¯”¿w~\®¨ îÏG&O¹³p’0ö|LŽZOfœäž²ÊhT¼3Sy>\+»Cö’Ÿâˆ@ÊCó_K’ç\8ÊÛ­ÐCá.<Ä¦O6u‘RwþÆQbÄ,Ð½Ë³á§kDÂ­ÝZ‘a¢¬ë­Ú­¦–Û»wn-Õ]ŽwWßÏ4	“¦^ggõÁ½Þý¾EÕFÁ/Ð™z"Véº¾E|’Tv˜…ÛÝ“èo@EÐÆÍ x.•…É\åNêÝ¨Z<ŠHøG‹S'•ŽkBÊ¼¿¾?^žºŽ©TBÖ+¼5óMÞ[›‘P‘ÿÑáø§¹¼þh¯üötr£ñµ²d+]îí¿nþÇïûƒ?Xâ¹èA‚:xœ¥RM‹A% 
Ñ
…°1™|Œ+(Ù«ùØ,š6ì
ŠHgº’4;Ógzâ® ¹xòKž¼ìÕ‹°'O‚ÁŸ±è/±{’ÀÄˆ¼ÔLW¿ªWïu¼MMÞ¥>î§Î wí>Êc™WçõãÎÎõÙ¿í‰>Ø™4 tSØÞk#<ª×`Ž=Ü°N2éµâP•ï]VŸ7Þ¥kEô«õd…âˆ¹˜íË
<±Í•Íèº¹ØÞm›llç§&"9Œ¤ÝcÆØæÖƒÆ, ™ˆÑ2 <ì!vÈ^N:[ç!ÌêçÝ¯÷C£†Àžþˆ v9{-‹…»Â÷‰ÁqšIO‡9@hp×a hT¨Î×&êKÍº†ð/eªY+¬”h9::q¼ÇUÑ1TægU7µÔIíè’áÃ$P"‰šÔ?2êU»aŸKú£Þ4®\x8ÕC"œø¨*Íl:áB»±rqfYÂ13¤îÐ©kPGÄƒ90>9`~ä/¦!ˆÈ£ÐE­À)•J£è2_—ß*ßv,õaóh¼‰2„eM½@øqzº'Ð%!R<Î £9ã›/˜,òæ¦lVì]HF¨	„nÔc\÷ˆ=`Ü(Ÿ•@Y€®Á¡zÝÚ¹™|î¢&/ò‘%ód†Îì-?Ó—…®î¡—(æRßZÙ±Çªzï‡:üŸ&g¦IL"O.i+ÿYÛÕeq¿iËÿU›³¨íø{ëUêbèÛƒ8xœ­VAoGVn4`J%Z
è)ˆ@ÔØ±ãÄIHB1‰Ù†ªän¼³öˆõ®Ù™µI¥Êç^z™C¥žzïJTê¡R¥þ‚ªê±•8õ7À±ïÍîÚNb»E";ž™÷¾÷¾÷½yóÍ·Sÿü4õãÓ©ÓçŽdžcØ/½©Þ­áõæ“ryèwÜvM@™I³ƒOw¶Ád^g×DÁâ^«kxÈÂpLž•.nØL}wû—#0³—ÔTþõsöNO{‡ÏãqÓF][s¶ÜØÉV³-ç²s¹± q¢ÕZ´ú„¬È\ð/™¶Êïîç ²û(ZYpbU[¹–%˜$“G¥|¾’«†L–žôÃ“‡í £úÙýÈ½Ô§i§ï¹Ã¼W0Üì¨7Ù?‹d3 í!sL×ƒJ›Õ¹Åë°q·”yì™Ï„ìS'bÓdç1áÛ’x4&¿ßþXmmÏ->¼Ç Þ4<£Ž^@}½}[5v„zµwNmÜ¹¬Ú¹ßzxÉ—m_jÛ,›e ;Aþ‚‚`Ç¿u€n,×¶Ý.3áàf7YëVT±šÕ­ae7qRÆZé”k:ÞÒ?Ü™á[›ÞT…¼©^eO©Ãüiõk>¶VõGXCå:Mòy*‰p#³²’ÎàV·{ãL¨\~îì þZêïÜµc£^ä/÷ìmm‚ê7PEbw†÷XžÛ‚;¡=èrÛ†Ö÷`j\@Ùo1$(Ð®Ô}ÏcŽ´aËuðSøí¶ëI$Ôu´*Åôrr¿2Á×j¿¨æ•âÚr2,ŠHPÆ§‡´«žåçgF(×gˆÚ^(*¨Íd‚{J‡Áµ‚5J–\€†'¹ƒm*õNÛs‚®ˆÒ3HCe‚äyF<ÜòžƒBBå£’ÖÍ&)!”ˆÀÒ	þŽRGÌH£éYJ ÄÛ·èÓT÷ón]”ÇÜ¹~G‹/ò—tSc‹RR'JºM^o’4OQ¶ÄWtxdü~˜`Ýma’»Nýu¹ljs«§+@uX©sˆÓ1”N&/€œ ½S{$±÷‚û/4õWn.vä†C–d6CXïè4Ä¡X*æ PªT o·íR±Z.íïçÊãYÂ|È5CR({ôÚt…°Õ`æ‘÷ÈcÝu¤çj¸Ã%§¡0hÞ´‰j×Ç• Â€M²v\‡pqAb•ZØv¦np¬€ï9aûè‹	r3ÚýØšÕì(Æ±Íí ÷ø™Ž.ÀÃ\ùN©B5˜	ÇÇÖ`YWâ&YÞ÷ÜÇÞÃ49	µa²¿-&r€÷Æ<i |LwçÊÝÎ›Óêüî…÷û£&:g•,\\ƒ,ÑH@¥z¯äÔz>_¯µ¥dj5•ZZ­%×WV“ËtõÏ«½BùÃã¯‡EÌwÑé´˜ú£°>*u©8Bâe/û®fÇºJBÜÕgUlo^½.ÌŒñ{ñŠn¼¶!›V-Y”­ö"Yk”ë“Qú‡Õù½kã Öd8Ù¼ák‚Z8³ü§´ï<ðnèÆ1¹º²üÿ8z¬ªßot*óîƒ^_Iöƒ¾:9èT&½¶Ñý`ôÓoë€ú>Lð {õÃóH†Pø¾ÀFð¢À(z“¢0Ñ8>l†O½äódô#Ô…pðF­™>¯Q$µe›¾
äºf&AôFc¤&c,½Æhˆ%ýÿÅ±é¨­êt/¸kÿ‹{­éâã¸¤Jèw9‹kg'>÷Ó”•";6‡E¬£ÀXG;ÐYFréM‹ww]ÚÞIØ›ýç‡É;P·ñ…³5k«/
›w'g3!æ4Ú¹Îéåù½¯¦þ³•áYŠxœT¿o1V$ŠhÐÁRBEzý”KÓ²ÐJSÑ
•V´ªÎÝ»ÄÂg_}¾´‘‚€Ác'þLÄ##+ö]Ó&
28öËû¾÷ü½Ïùþ&÷c/÷²ž \!{æžÍg[ýëÚætºsí*9a.up< ¬¡’›+6|lRÇbè¤êç×?¶Çx3Ä4Ä ‡cF™šÍ@£u5÷\¿j£Õ»*€Ë ë|?-Ûó1 ‰u*x/Nv`í£qÜTãIØÿ]“ãˆxèR¿¯[þÚéAë'EýöÆ×©L±&r_HH8ÝNp_?0]9y‰&+ Ü‡˜41ýi‡í1$-¨! U”`¨nTÐÉëRùb» †ÀA‹PcÂ{Ø¡ÇÝ'?aNv*%>y©+$1åõ”ÊkI<3¥}H!ÒQ"“¢Iqò46ÝpŸ(![Å¹‰h^o”§ÛÝnˆ!N¢HH•0€ ‰J$ÂNƒzCÁ=–ø&o¼–(àB£!Uèƒ—€0–6Q–aõòîî.$¤¬"pòžàJ
ÆPÆEcÈ8aúmùÃàmô­›#'»l¥?/¯ÛQÜ6T­g T€ÉT·)ÌjmQ ck® ÝZÑI£ÌÎ‡žFôm"ké…ÊØ ï®:ô7ŸØòC[=T	£?Z¼~´ôÔ±(ˆ¤hR}ý`ytPv³žêu»åk[¾ud¦•LUð„8K´ô²óN­”öéR„Ep'Óû¯Dš„2Rcfð4èÌÎ£ÖJÁÙP‹NÞÛ®¾?ïèÕÊ¹Á°»ÉÓ}Oë ËÍr{[vŒ}aÃy›:7a6…ÌVRPãˆì.ö÷ìÄ·=öºßüvªê‹×ï«®~µV=žý!éhóìùô½éIÈþ‰JúñÆ•Ô	z{ýŒþ¹1 /ÜêÃÏ‰·ß"QQ¢Ü€2¼Zi-ì`,B\²”Æ€†D;[{ú[ù‚~·uB—ªÇô—-ýºÐ°ã@…xœ]SÍkA'§J0¢¡b+OÄ´•nh+ø´mZ­¤P¬ô ¦»“dt2³Î¼M›“={è\Dzò&
õðà]/‚øèÝ»ov›°éÞfæýÞïã½ýó¶°ÿºð¹U(¢¶m±Ã‚®=”…ý;¹³û7¿?n.Œ?f°•]@Ä»"äº\EÚ€y(š"¡Å$HÝ¦"àÛœ
X—jh
É QÒ‰^ Ô„PhÝ›…/“G|ÐµA¿QàM@Yb5#-·°êjµù›0©cšj¦JE8ö=
Oyø4öI®Ú½¬ý:ÝwÒçqréÜBN¬MÕn‰^8’nóÚý³ÅH'èÞ-}uï—®,zÑÂ³V‡‚!`—Z@FKI<†¥tØfŠ²ê•ŠŠu¸YÈ-uš¼º«}Œøž°8¡c<e?^
F'Ö_nÊýX>;räÏý]º›x±¡‘ß‚-*O[2Ãáy"ŽÌ´8€½X„LÊÌÎÌ”/Ý˜›½^µ ›°^«ŽÜ„ºÓñœ!ÉEöŒƒå]nhÖ¡ô‰i_KŽ¼R*.’0Ý¢-˜¤¡9¥&B…2‰| m® bÈüí®HQ6ÄÓ0ˆYËç•ß<R¨Ôvy:ŽŠÖÇÝ§µq÷íîŽ{µòôÚŽPÌôÒfXæMFcL"ßÃ ©M‡¡K¶‡ƒù}¿W.ÄnóþÅ>T¿<®º26ÿÐ§<ØÚc½¨_uPÿPztë£gRj‘ßžßõ‘£_À«£®±:wjxÂ;™­cæÐý¬?ÈaÎ_ >qBÉømÒP¡2‚›ÆêåÃƒµíÂps#â/Šxœ]ROkÔ@' "{Ô‚ ¼‹ušXüsÖµ¨uqÛUÄb¢2›¼ÝÌÌÄy“ÔôÒ‹@:zòâÝKa?€gOz÷âÕàÝ™d³¢‡—Ì{ï÷o~}fGÁñ$8)x¬•œ¥ÁÛÞ¼¶¿oï6åã×†U		<ÆË\Ô’¥ª	“	+Œ‚	/PÂÏì‡Ù£u=Y„z6£¡]¿âÎa95kõæå‰Yƒga˜±ø›à-rÿÁö¦ÿ¿aféÎ×ÃááÓ!Îù¬ ¡LÌaNÔu$Jeó1ç+!XÕª@£Ñl·
¦¹Ê©ÖÒáF\2]ÂXiÁL·’ç&3DH‡G,4W^¨	/Æ<Å¨ÝÚ™"aÃ%—üuŽ5HÌº,-ÜÌ>7Ó†úÆSÉcç-åY¦´ƒLx2®¿„ä\%¥ÝZhãD9’ýt÷‹{:öû½³üŸ¸hñVc*Ád.F¨	n^]]­”Ü¸¾·Á“°Ýò`÷ƒ‚•ß$qd):)Ò¤¥}¾ùÍ¾ïwO5‰Ùwý%û³º'™KÝúP¼Ð©DFÞ|cPW²ëƒ¨oÎ´I³rÈƒÏ'ªâxpñL}y^úï¨±×þ[o•¶Î/5$þë·/¶.ÍŽ¶wƒ?K¹Àì${xœ•Q±NAÕuÁ	AT–"YL‚ÎNŠ`âXø°eÀ&V´¾›3+öv­ÝÅà	¥H¤)‘ÈDDò¤HŸ6%-iRÑg›È)éæÍ{oôfæúÜûxæ}ëzƒ¬Ë,ú}3ÞiyÓÍëIø¶’«l ôQFJƒéaÈcBUI«•¨ý†ä–;Mm˜ Õà:\2= óÊ×ò
&eÙOÌÝ4ãsiQK&|¡º¶aŸ‡˜ïÚ|ØzÓnlµ¶wWŠÎI'«Ã|{ŸU’0Á”8RúÀU0ŽI¿xY h);aN4v˜‘…Z)ÑÓ*:-Ä,á‚£¡/ÕÅlšóÿ(£ ¿ªÏ0	­wMz<õÁ‚ÉéÌíR¡Ây`—¡è@1åžËò›9ºÜÌÑµÝÔ:³®Ý¹$KÐôXˆô³–÷bú\/d¢Ã¤çÇ\à+:«géª>;¸¤-òÖ?Ñ÷àñû:Z°û÷zŽý÷œôâ±Ó§#ÆÇß.@Õ'ôg}éáÄ§¨°‘¥½9*5g†—›ËÞ_u[Õëï0…ùnxœuROkÔ@'<‚Þ\ÄÊ;HO&+^¼ÔTºVØ‚­[¤‡Iò²;‰o&YJ?Ä\z*¨O‚Ð~?Ao~ñ¢g’íf»`.CÞ¼ßûýyszîý0Þ÷‰wƒy˜3*Í´:+½ù“õ¢ùóôÕh­aàÀŠö‡»)
Í³¶¥Ð$óé>ê’„=T™k`¶Wi*[ÄÀßêæbÜ3_ŸÜ„f<t”{Ï{wçÄ5ÂçGð.‰ÍÃ˜Fµ«Åæï‹óãI §ØJH±â	Â„W(nâX¡ZÌ¶ÅÔv«žñÄq¡Hjp|\iž('0ð’O-ÌÍ]QÞzÁÑ–ù¶ókcù3VCŒ]'`~6®¾ù=ØÜuw#eoâºo¹&ÄfÐº|kâ2Ë.gäÔ§ ¥åMe©#ÛûÑ#sñ26´x¼èïà`)ˆ+Rw¤ÍÎšoÁÁ›©m’-M¯'åÜOËs‹d)‹sYh.…Š¬³‡¯ï™ëÃíÇÔÐn¬K4‚}‹¸1­äcSH1c6as4úrËMhC¿‚1Þxx{í}@ß.»/ª>0Ÿßö{—Ðu{çÿXÏ>?zÿ QLóç$…¡xxœ•‘¿JA‡9°Ã³°±
ŒMPð¼¤MBˆn,,Ì±ÝÜŽñÈÝ^²wAñ4Â4ZØÙ
ŠØYÚ	>HžÂ½$E
‰ØÌì7?>f?ŸŒÁÀxé×G®ì®ë¡í†J¡ó–6*ªèíÚ¸(ÏFh©R»šI€m™ ÀR&‚ø!a
„	xì¡/@aœ(‰<9¢£€«ØöÃ¶Í…ÐkAÀ¥Ø°Ì’Ó-§Uxtß´è¹9OÃÊC~¦KÉÁ Y?.
ì{.fÛq‘†›ß[J1–;.ôu*H¤×K´iš8’¶Ì_¬'FtËÖ(Çìe~-ýèé05J¬îêM
ØJnt,ÉŒºÜEhù¡Û±¬âYÁ2Ý9²`Næé†=ÒeµCÀçj¡DêUô^?ÚŸ:gƒí °)±íTLOÿç¦tÐØûã³?_Ú CwõzmÒÛºÔ¿à&]xœuQÏKAfOÑ@<”JQ1<sH­?PÁ‹š.«kRh"D¼ˆà¸3IgwÂÌ˜Ø“×žôðþ‹DøWø'Jo=åÔ»ÎîF‰ sx3ï}ßûñÍ»¹qþ_;w-'§iÃ0òŠý_NÏ xßÇü¥"42ü*¦”T 1\jüëÝOŒè€±W„ã²0;”uyÈÊ-³sp\?8¬Ök“Ê‹\|Øí—Û\C(£ˆÄz\±ø	=©Îíë¹%ü…M€š4…<±œQ‚Îx$TRkH€Ž’ô"4Ð$œiì-ªØf¯gÉúOûK$†ÚÑ;qÕÿ<òq7bp&dxÙå6àµ?‡ÿ‚8ÜËáiðé¾{E…•^r+T¸…|…Ñúk©%]ÕY£æ}Âª&]6F¢‰íX£Óè°7­0mb¬aV~l”Ü‚Ù´ÝI‘"Æ(~vaÒ’I[˜f—pñO0ÿ¢`¸ïáï`jÝŒ(&¿¹Xh*¥pö!öKgðöÛÖ«eãdðwWú*˜wž bÏ7ä‚*xœûÒÇø¼qC>£pY±nIjnAjQbIiQªnqIbÉænÆ;l“Õ‚Ý±ˆ+èòr)((¥–e¦–¥*§&¦'–¤*”¥æ¥ä)¤&g¦e&+ iœ¼Íá¤2V³ÔrJ¬SRË2“SÕÒK¬7¯sÌ`PGTŸ¬ç,Í”Y2ÙÃÙbr£óIÞ|°.7ßìdoEÉüÒ’‚ÒÝ´ü¢ÜÄ[dÙq°¬BfžBRf^bQ¥DÝäC.3<ÜSKð9\äÊÌâ’Ìäb.…’ŒT˜ºÔˆõlôì&º‰L^ìêˆ-$7¹•0 Ð>‰á‚ßBxœ{/2Gx‚wnbQvj‰n^bnêFMAFv_Ç o×˜ÍŽŒ»™‘%'³²¦H@ø1`˜´ ›”Ô²ÌäT»ÉYóÄ!’™yé
 i…œüt…‚ÄôÔÉ‚lFÁ
!©
ù¥%¥%
™Å
Å™¹9•
%@A4]¥Å©)
%ù
™)©y%™i•
å‰%
Ù™y)
ùi
ë2A†lv`aš¼…#™ÕˆÉjœZ<ÈÅ©>Ù…K •®S í…ÐXxœmÐ=KÃ@p²‚à"â3UPbD‡Ö*+­ƒUŠN×æßôhr.—ÔŠàä,z~²û\ü.Nîn¦¾€V×žßÿå2³®­ûž5)4NÈTŸ´#XHY`Vþ¤æecou<„c ðÐ8ªv=šw‡¨J¡•RæxóimTÄbÙ¥°‚b K¥¼CE_—pâ8Šœ6Lq§mV¶×iÅ)¥üƒIóiR!Ž¨Ã»¼óÅrác$Û…@úˆ˜O`ùVf¡ºØB³G‰ŽÛ…˜‡Q0„ÎÓße$1yÐüûŽAiôy.É.>w)Ke72WÍysQ½Í&¶Ï,c×žÍkýfz‡ô?´¹ÛoÌŒ¿nNº"iÙÌ¶æÌÛáTVjÕ¬w²•Éâ…÷xœ;&yNr‚”pf^IjŽnqnbQ‰nN~ºnbJÊFe.F>O¿WŸÝ`_Ç ÝÍæŒ[™±¨UˆÑUNÍKQðóMUð)PpLIÉ,ÉÌÏKÌ™ÌÄê/
Ö¥ ÖÒÒ79šµ‰+«8?O¡hDÖä¿¬úêèºÀ–+ µ($¦§*¤åç*”dlvc“eâB(ÛœÄáÏ(€aõNM, á@ãöpé+˜p¹”æ(ä—–”–(dæ)€]–_”›X2¹†+Ó”—\¸<àÄÝˆ©ü·%å¬<Cÿë…Æ@xœ{2“ñÈLÆéŒÂ™y%©9ºÅ¹‰E%º9ùéº‰))›Ëí°ILþ`ïe‚E\A——KAA!85/EÁ/Ì7UÁ¤FÁ1%%³$3?/1gr°ÃSˆ
¨::öqfçç)Ô(èfMþéx\ Cë~'Q’ŒT…”Ô²ÌäT…Ä¼^®ÍÏ$˜¹ýsU»ò Âfnv<á’üÉnHê<SRóJ2Ó*'Ÿr3@—§*dOæw_éšmîNŒY“ç¸*²€œ=¹×]ªÉ¥4·@!¿´¤ ´D!3Oì©´ü¢ÜÄ’ÉŸ<Öb4Ï³kˆÈ{y`*NóJÂ¦xóE/a& ¢ižæOìZxœ…SÁnÓ@U¦RTˆC/ŒB­‡Z*)ŠDÚ*má€9lìq¼Â»ëîn"!rá*ù+8Vˆ;ÿÁðÌ®ãÄ‘*Ù–½óæÍ›ç™ï÷~<¸ÚÙâ*#aCñäúqkc»w…ý·ýó(t_¿ÿùbã×­NQ½§'Ðg’P ´0Àù!VB0™”;lsùœÈ'•o‚ãò*Ø¼+”9Ø?¾è¿„¯DdJ<rçÛB5ŽE}¼“0ËözïºU$êãS«¼î—¿ƒ€îÛ?F!Å…9ÊSî½ü<ŸscÆhÀfxƒ|˜r›yœÆKJ±˜€X¡UšY®$ì
µ.á¿QS`ÌSCÁ48·¨]†Ù‹žtà<ãx¥f„5á¸$HÊb„B«	O¨lª´»§L'N]AÌCžs;f@âtUÎ Ó,qY6c–DOD#*N•ä<Ú/-°©Ã©<Árá?¹5àsU¸>œÆWÌ8ÎÚ]l)µvÊWJÙ*•{!7fNw’XNŒ±J¸Q‘^9bg¥PU÷ËÈeo²ôeÊó”Ìg*”®„z(s"2üÉXm w†\2=+¿Ý9œ_ôÈ¥{’l7…3”WVºèBº+ÖK½ìßöñµ$’èÎ†¹Š?;{8{uC„±ÁšÅóÎžx¯hÔÈòƒ*È(lTeª¡p3Ax7g\{ºVgÐmuNO[«YoC=Ý‹M Ì<kñ]©æ–fµ»°±rŠ†I-ÔåÂx×¢^CÕ½Ô–bRnm¶çÕÖ4
7ÖjQ|°Æ3§)µB ‘Í-ˆ&‘PÐdh,àÉri¨?húYbÝ³Îdn¤:[ß?²ºü³¹÷yÊ­_ìq…óxœUÝnE–.¨‹A´‘…"y!ŠHµ¡Æ¸æ'Q%¸ïÎÚCwg–™YG‘òpÑQ/¸A¢î*ñ<ÐÇ@pÅ9³»Nâ´Š„%Ë;gÏùÎ7ßùñÏkî§Ú£QíÒ4Á’<HG©4'äµéûO°»?ødû¬‚F ¾B#ô™d#žriár1áª4e2jÔo®g.ë¯¸·~$pX ¿Ù¾¾|g¿¿6²[p„µÄn¡á~çe÷¨óÌüëÚËË»våg¼üÞDJ_AÄ,.·ÉkgP&hBÀÜ²¹ZDh¶]R(CžBéÚ<ÀÄ!ì)!Wæ!ÉxÄœYtÝŸí+§nûwgår·¿WÂ)‡gwýÃ¿Ž„197`Çü<ña*ì˜uÍ¿Å Ë#Ð¥­PÈE‘ K*+±±!cš¥ÜrmZ°7Ä‘)G\rBâÛ˜…2­&"Â±Òô2•ŒY1‰°3`$Ÿ–Y0\5ŠÀ±Qì˜Y„Æ4Â´ Œ\»öî[›7¶,°)9«Ž¼+RÖ@Ä'<QiÐ‚¶“‡ã¦ÇjÔAE¶ÆçŠÊ(= ³“2D<T‘#•J¤8Ëø®¡¬Ô`•”Q)ÍT$	(™ÌðE¦tAÓ;2â0æßA”§Y”nÔ‡B2=sA÷—%ì·Ù{ÃýÓ}Ñ??ÿ1íîÃçšJ,ƒÉHfQLoËë´`'ö©¼›E‰ üœŠEò:LTx„höÌ‡rÃ°Á	t ªSÏEÇˆÃŒ28	Ó,WCqÔvBóè~/p­Þ;KÉÑõ‚=t4–iKãW¬h9xê{ºØí÷_so¿ôéÂ\—óÖ¨—S=?W,ËqˆŠ"ó8FV=²cwë£÷[÷õóé¦\<1ýÄó²°jªÚ¾kÝÝþUb38žò’ÅÙUpLå	@ðe5d±àIT1ªÅîñÎjãÔŽpÛ;¯4oK6Lø9Hèœkn\­·váxmPw}¿{i‰žñZ«ƒÜf¹¥6J™}‰¿Éá7FÉÃ²/ïö¾Ú+–ŠÃªžfØ)T%ã^ôoœ]è°ŽÍ°.')ß m¾I«zƒ–è­ÅÚÀoßsî¬¯v|¦s2|þ?2¨"	Wÿ—Q`·TnÝ¯ƒßŸ¥è L„ku¯ºÇƒçÜŸ¹ÿ Ò†e°è+†xœm‘¿nAÆµNƒNº")b
–-|6Md$øî0&IAh Z¼ãóŠÛÛËÞ:¡@Bnx‘(d‰ñT< ˆW CTìYv&«•öÏï›™Ýoèûü–$¬"õT³É–[é×Ýƒu©•(Aà{ Ðkï“¼÷µTìl¿¨>¥‹;µÔvöžìÖÛW4Ùn®ÏØ2R%ºæà–Ï`Ô{.¨€ÅîllÌeAŠÙržæßÿ¾R¾ªÑ½ùTñŒ'¨0³ s4ÜJA]éðLÀ¹´Èq ‡r 97\¡Eã{.¢h´à`$pÓŽè}·Sõ½Ó¸¸AàB  úÙÝ¬øÝ/1 8¼uÑ÷´YCmÎj…›«¾Ça„/AŒUÞ‡§ßÂßÌûëï?âëþ?þP»¯#™"XÇFZ×”G®z)™YÝ‚ÞÆÙ¼Šæ’æX¦)<ÇYgcñ'piË_ÖùÄ =¶ùØº³A®Z¾w»ÓÇø*KiM¡OQ¾<¸LâS%ª(í–*mõW¯ìžÙ½j·+äöÎE'q@o¢úŠ3»LT?Wÿø¿ö´(ï?œ²½5ö“Gë}îxœ5Œ±JÃP†	¶¥t”V.?ÔBA;Ô¡ˆ­PÇ.§9'z!97ÜÜV>„§p”Ìn>‚¾7·Ÿïû?N~FïgB”?'Ã¨³¹[-ê›èëhÜ l/°œ®ñ@JÏ’‰zl®N»³6©×]M³¾{·Ñ<wö`X@Z"¶z5¢± 'G™xq¼E°x¨ìŒ’+ƒP¦–¸~ë_E÷Nˆÿ	g³íäË{-r‰Mb„ÏÁä	¯&M±´Ec¶Ÿ…'er£Õñàº÷Ø^UOƒß?¼'R…ä(…’'xœmR=oAÕEÈ’DÒ4D‰•"g;-áË"F
Jˆ“Åfo|^q»gÝÌÙ‚$âÐD+ñèQ"—IA)}Ä	b÷.ŽA¢Ú™73oç=Íù÷àË×àX·	9ü”‚Ã'7™ýýt«6I ¬V `@à4‘$à‹dí³³éÜ›ÚÓÖììF»U‹y $¨%¼ê Ûl/Í9¢waH˜ äÐ“¸aOÚõ²ÂJcšóc?sOˆþm´öó³"Ê‘€ûoý^¯„1j4]4ÈTkáÞ‘â¾ïªVæE÷<É*5uØé+r=nÎ„!åÑ‚´PÏi£ðG ŒËà8X™µ¸Zñ¥Q¦a*Ã˜AÏ¹ƒBöËé=!?L(ö0VÆ(;r)‘È^>¿?z3·2·™ýñz)öhûAej‘½³~ÏéñéÔöâö‹—*ìI§Vý×¡_Å»ÿ±ÓŠ46‡˜e*Bˆ°'ò„áºC‘äX‡—´3DÊÔDd÷»ßJë¼žÊˆK}N‰i $ÂÊCû~·{ÿæpf¨±	¡M{µ³8¾ÚÝþ DæÈå‚Exœë™Æøtã†lF–ü‚Ô¼ÍŒv`Öä¯öÁ" †nU~^ª‚./—‚‚‚?H"ÎáD…¾cúä9Ž^¼ÑººUEå‰‰
5
ºE“ÿ9*N~ãh¼YÕÉ‘¬!ÚÙ„¤!5E¡¸$±$uóSgCfˆnêŒE“º+²‚M˜œç.£î˜““ŸT¦²8(1/%?W!¼((âX”š¨P’¯ rÒäB7µÍNîG¡–ðx@|ÐèÙÍ TL”è.€>xœ]R±nAÕQPX:‰"0$Šqä\Ph‚dB8”[‚¤ „ÚÜÍÙ{»ÇîœƒR*(iVB| €äŽŠ döŒÁNµ«™yóÞ¼™_Ÿ£¯_¢o¯£Ø!%çFc’£Ëf½»»ò¿Ž{+Hâ <F|K¨sÌ!Ä­¬ÈXÈ	(ø# @¼º÷ýRÇ›é©ÿ”®­OŽŸ>j¨·‰ƒ¶¢ÞðÄË´ÃÉ«þGÚÝ`–Iè·’ýáÃ£¿Õ9,^¥›¡~vp?‰.‚¦çÌ‡ÿõNí@dÄï<#H]ÕgR)_ˆZG¹Ô;q+U„V’TÓm 4s•b
™)
kJž°
9+2¡áå)‚«0“…Ä|NPqK¡ÑxÎ&j2%wÎ„RS`²Z	b›®ìœÕÊ5Éb
Z”è*‘áÌº+­Rh1b"Ô¾×ïøøÁ+§£µäIÕ‡xÅ6_®oVax¡æš‹Å¦:‹é›Ñ·ü~¿=ëö¢‹gVÂú•2pf¬Ê×Ù4ö¨ÑL^Zzh÷O&ì¶7nßÚÝë9æ²Žšêp3‹ojiÑ1t"¹ÐÕUe,ñf@	ËC¡6õh ×péºXè–ÿ0t1›KšÞƒž”sÇVoùçðcô‡Ž3à8‚qxœRMoÓ@•H(U*>	¡A@TÒ,‰{ ˆðQÒ4‘Ú"*.å´ØëÔÂ^ï¦m'.H=Ð½pAâPqüø\áÌ€MSÜpáf¿™÷æÍ›Ýg}ÿ`}zfMg1g$êG’Æ½|ÇzqwÛ[\½qR.À†a…rÚgãÖ±äÆQD¹W.Ý®'êgoF}\|?!¨:LåÎ£i€'„d‚Š¸$Vo+g$XÈ\Ihjœ">3n½S	esõñJ¥/›º˜©×N£bŠ•”„Œ›ŽîÚßžFˆzãÌÇVµÐêä/[óÖ«”=0!™f-êÊ æ×¡ëƒÜd#[‚”	 ž`™†€£j0ŒÑ!ˆ„¹?,—ƒ%Ð.úrÓè˜ÿ@Œe¼šQx2°­~ÜßÈwì³BUm“SGVÐ¨¯KpÎ¤jdž|Ÿ¥êêÞrÅŠÕîÒ¥&A·/Œ.bŽYÖ·À…µÿ‘4UˆWÓÁ¢H=_<ÈtðlÂÊÐßT!´vÚŒ+&‡½'ó®·gÏü{d^lWà §qH(£¾uªù¯ÎgË7Î¨1£ó>|mc¯ÛVÍ×^$z·aÖcÁç"œFL$ÔeøpíÊå›óöBS€¤Bš®[j®·ló­H“¸€‰÷^÷ØV‹ \Ëú+[å½«j¯û»úŸ„ÆŽé¥Ö—W1ûã3ƒ!xœmRÁn1UR„P¤ ªh€ÛH ´EÙMCJ	’†$Ê	zpÖ³‹µ½ØN¢ JU‹;Ÿ€	‰ŸÁ	Î|GìmPéÊ»k{Þó{3ãïŸ
¿>>'…"“SY8~äþö÷Ö~…É€'Ü… \€N½gß<½fñ¨­í·W_—úa55ç¯öª‰iÀ!Ú?©UòØé÷!{®y¥‡özsã¦CQbH¢8Ma¶aß7.¨Gœ’ Ga@f¨ˆaRÀ—ë@œÓ3£:ÃˆÅ,‚Œ(ÂÑ *—C¯‡°?`Ü0„*‡bÂ!b!dJŽE
±TþuD!’<s÷YÊÌˆãri!§(B=Ïˆq'àŽJœ¸ÓÕ÷îÜÞl c”1ä Ãx¾dF—KG˜ÊÌ§Â¶=Œ50éÌ0YØuv¸O=×¢iæÖ]Q&åR$ÅCásš×À%-=ŒÝ®—ï3AÔÄ&©$4|PÏìÅÞæôÃÎ×‚ý±[²+ÝKö[§b/tÚb)z¾BBçˆ•ä!tbŠYÉ‘ÖÀ·Æ,M¡'xóŠù­Êm\DQWûlhÜÒá¸½¼Ø»­å\ôV{ãü‹\Ç´ï9Øz«â#K\úù*ìým}oÑzŸ¢k¦T<´ïÚÕ¢þ—§mØZ[=“÷ò¿+cWžu§;½åÂˆ[ì+‡€oxœR]KÛP¦U:E§^ØÒ½z±)kJª¢’á@Á
bm7D<ŽÉ$'5‰­Â†ìlpno½Ù…Äý‚áì¨ž$­zí¹8ïÇó~<ÏáÜ”ÿø5µ½«·o2ùú6QŸZ­ÏÍ/ÑjæÏ€ øíàLl`¨›¯C×£ðˆÂÛ-¾ù\s…qØ'
Q³[Uu-1*rÌ•žA‹)´˜@W¹KþSZâ{Òò¤‹!5iHuÍ²ü˜,ÙâGR)ú+A&[ßæÿ†wÉœqÕ^ÝLÀZôØ	=™Xu•XÍè.Ÿ9ƒºá!‚á¹.e&ØPˆGÅf0ç#5çû`9©ŒAð1<öš`ùž›¦±c]Ûqà ! ¢ä]E®4×åJ£!–R.C,Ò•zBøîÈîp_ÿ=²ùbýö—“s@K78½]ÏJÉ8Ïç;c…ÐÚ>
îN{/zJG§câí=ÆÏÇ¿K¬ã"ˆ?p11yÆªIƒ×6<õ…$`ÔÅ MrL=-èïfú’Z[NR±Lxú)ê£_}æ/èêÉŠ*NÚB»D9°õOåJkfyiêýSàï+†ƒ7xœuROkÔP'öÔ@Äc¥­Œ« 1zÊên‰nÝM©.zSxifw#É{ñ½—,«í'ð0 ô^¼ˆañäI?€~'©õ40ó›ßŸyïãkç+9ï&ÎÉ,¾±Â–ÆÏÔä½rfV~^¿}çßøž #”	{]5òdWL4>.ÑX®¶ÔÒp5efA0œ·=w3(è×p…¾ßxÕ{Þ]YÖa|ý€ÜÞè.Zb…ìaç~„ÇjŽµÊYá`•îa#XhU¥	Ï­×ië3½ØÚ ,<µzhË@OÂÕžK/Cp€>„Ï<·Ú08ž7F˜w¢EþG#•–G©ÁaE"âŒ)J7x-f—ã1jÏÍÅb<Z³
ŒMTië&TŒ×G<eå%ƒ—é Z§§½uzx3v4-úg—øTtµ¿¶ÆGµº„®™Ë½©VRqš°BiéÛ­óô©taûl/®íÖº©Vð¢>dBÖÞ³vz3Ø9Ýú
ß:UŽW¨3ÎŒ¦jÖPsœ‚1Û#£ä_‚·ƒèÒ	ÀWØs/z®çòK†Ìyn9(³Îf¤-8ü8úò}ùZë;…ã`xœ…’ÏkAÇ)6)Ý("‚h©ð,ÒK³I‘žÄbW4	®xqK™î¾dGvgÃ¼Ù!gÁƒ0ÿ/Þ¤ xô_ðèá_ 3»IL‹ÖÃÂòÞ›ïçû~|Ú<¾ö~c•G®ø|£±Róö·{¼·òå\=á¤\¡®^½øØüB—¥H#"éýZgÍ¦“[ó;!ñÎ0KS&¢CBuÈ#Š8Ê»ðwÿJ8ú[íÊ%€¸,IÊzv ëõlcö™1Çƒ%ë¯õï·I1©¸.å¸ W%À’1›á‚1W1ìB.$Ò×v¦C^ )Ï +PJã)Øn9-9=”‡¦Qj–jä™”lœ`$¹PX9CÆá+°fñ*Î `	¯¥´ÿ¶zýg^¯ëo9-í­ïOK£¤dª\",:*ÝZver!ñôÓê÷³&Ú;É³Vbd|Øs¼LUlš16s´]•°&HT’c¥Ù»	œ²Êˆ²3;„…YahxíÌ·gè'½³Ê¢Y¶­_ïŸ.Ggî`1ušo•ò#šÂ´	ãMÄ*e¦o€æ,T¦ýÎÁ†	8ÁÀ{I™ÐNãÃ½¾]ØÉmÚ-"™îJäëL™%Ï–úÈïum6eJÿhÜÜž=A;Â¢-ŠwËë¾eoÖ|”Àä|ü`÷ù¸?ÃùNXR²¼ü QßÔ¿.ìüÐ"Ocâ-ƒ)xœ]ROkA'Ø$Í ¥ˆ‘V%ÊfÛèMbAÒ +µ	É
‚+dÙ}ÛØÙÎL¢Á[ÏÂ€ßCzóæÙ“Â“ßÀƒ8³’4éixïÍûý›¹ØýÕü|»‘Q©Ú‘Ù×{¤BŽ½±´{þèøb¿òíÚ†èßwI3%x–¡ÐÛÕ#×öƒdÝg4ÂCx´ƒvÄŸuËã>‚é€­ôyuO§Õ½-{C7É•ë­ÚÎî;rÔ÷FÞÐ÷'ÄM(qeA\–èWµ§ÛÑ’¬P¢¿Ô:¯ÁO©„©D	HUjf9‘t§Àtž¤c,¦ì8sžMQ*Œ…9Ê"ŒhŒFhBQ\¢Ô¼
ÑÍúËâ›©B¡,Â¥=¯;·È$xÔz~¶´[Vý½wÈ€œFJé”¬+«ë÷û—%Yç&ƒÒýø¿ýá,‚31:°ž¬æ›/n®ÄbwÔ×ÞæÁ'/Bð™xO³láüŠ	¡Ra”š@/g²ÀÈ
ZIÈ ƒd|54	§t†Ì±QKTvý`á6ßÏC/(åÎò!1{¶oýý³Ñl™ã¥À9„×”-‰[ò¡þÓˆÍMÈ›'ðC˜™ùsTF¨>¿Þþçµô>ï<†xœ…“ÍkAÀYÁ@¨à%)<ƒý ›¦öÚ˜æÃšÄ4©PP<h˜ì¾$#»³afvÓh¥øxš“àÅƒw!géàÁCo"=(þÎì&i¨hsX†™÷Þï÷ÞL>½³~½µ>ö¬‹ÔÉ²1³
ÑJýÞn\r©z¹]L-ìê%´ˆ‡b@lêCñdz|Tê”mAï.»rËö=0§-P¶©ƒLÒ.E¾Ü“[pÙü;F—2—‰ëš8òtœ(/XéI$t}lÊƒM&T»’²@V¾…$\RÖ›‹¡d?âÉH@{”	RÙ‡˜‹B˜ ]*¸·rz4Dåƒ"çÔQo*«ÊÝ¹²sZ•pNF@8ec1$v_ó< ãÊö“	!qi¼³®^7ÕËò¢zvÿÛíHKHØ2à3ÿÈÍxÇ.&Q}¯®¤ÿ;·Ïµ¥ÌùãWwjé£zWW×úÚ+@ÓGÄYŽ’S1bOòFpÆ’áÛ”è¶“	˜üfÂb€¶a9PÏíÁôÞ´Æz2‘Ï
æë¨ŸÕ”EÔ—ÚÍú¢‘ºU½ñäÇÌÔ¼ƒÙØÅä6O±"èˆ‘è­Á°úHgH©ïAóu6eÄ–º33;u\CµZÏ^×ûyô
Ï…Ïò9½ÐbêUý¤ôÐ\eÔÃpÀQè)D./|¦ËÎµdtìïµÌ©G¤zßhfâ¿‚€œƒaŽ…n˜×¾©Ÿ2d}0PUhäÎ‡µ5¡2AíÇ(f(îìÚß0]|iüc÷±õ§]bä2ƒFxœ]RÏkA& B·n{ð`AÛ>67I[AˆIjóckR¡Qð b×Ý—ìÊîÌº3i½ŠèéyÑ“GB¯<{ï¥^<úG8»m“˜9½yóÞ÷}ï›÷ç}êë»Ôç^jÆ÷„ÌÙ2òýÔ`c|¥ß·Ûç’ ¸¹¬Õ9“÷}ŒÈÚ<:É—«i›IÏ©¬ø²”D+=Y‚—³a”¢ŸÕ4uªÆEx”ãIºÈÓ:ºP»<÷X×ænýAë^§ÕÞ¡bmnmWèo­¨ÙcÖ|ýæCè¸ž€¾@èI#¸ƒº¶¶î`í††Èõ€3P%áó>
‰0+@Z6‚ç RÖõ0Êëš®Ñëú‡KU+¤É¸w‚·ÒÈÏîer¹d–Ì½j,.ÅMm¢oÛ(„‘ðL´üj\M¯º6E×NæÜ¥ÛKôÖ,ÌŒ¼¢ïff~ÊPúÖ¼BÇw²dn-ÌŽAžleé‹é´ºF|_q8<ß?›xJ• KJËv•’Çoº§G„hÇò&,ÊƒÂe|Ò3=o™;-PÆ(«ü‡dó °˜s&ALi€x¹ « â|lJ¤Lï?CõA1Æ¸˜|¯ªd<™d–ªáDÚy¥íšÈÒýæ:j®Ç-e6ž	ÎÊä¡Íü¡ÚÞ—a_ŽXhµõ‰Žksó;ð…„¾Ú«!JZ6K‡?î.¦þí¹ßê'…ú xœ}RMK1E´~l¥—zR„¡‚^Üb¥Ð‹
jK­h‘VêÁõ6³md›Ôl¶(Þ¼xQž½xò$âŸðW™”Zk!afÞ¼÷&¹[|LßÏ'C)9mÊÎë’36{P©{n©Z,×ŽÞ
cïã¹¡ð\¨›ªC„
E®Xp%NcI¸P–"îètbgß¢¼>Ìj°A±Ë|Ü‚SÏä]F77¾ã-¸6†SgŽ~HÌé§Ä„~NpðE»MŒ€@HÀmÓÒ‚¥Ô+“7°ÍG5Á)‚À„JÀúêZ¾ð«§oˆ¡Œ€qs|‰$b¼	BR”À"¨bÉ‘!\Æm‘Œ°5~Œ2â(s«–i´²/bZª…Ð%aŒuÐ·ÍÔÒÚônñ$—ó–³ö*E0¥ê—©…›¡Í¬Â?›t²µ:ä*É°‹½¡ìë½þZDJÆ¾1gÔ("•5f—lMÖEÞC¥†aŒêÛišt„t¼ r	®'fª‹UxIÚ#¸Be\8ÙúdÌŸ)e4Ke>[<Û—é+† dxœuR±nÔ@•+#_Kû„Ä!|	¤G|w
"	DRP­¼sÎ"{×¬×†“(¡Al	MJ¤|”iáèhéØ5GtäÀÕÎ¼7óÞÌøË‡àý»àS¬ä¢21Ižéò¸žöÇ{ë1â(ðÐE˜ìïv8I#¦3%¯5“)a¬U]Z¾ùíÑBaÿts³Á©)u3³Çñ¿í±Ó¨…_ XJ¿ÚºtSUÌ™˜*:•Î¼4¼lzÔ~Þþþ2
·äY{¸ï8PS¸§Q¸qõúúÍ%Î|6Aº‚Q(dª‰UBfPš“†¨ ÉÔZGª¤aBzý%wp¦—3IÌŽBsè˜ÞÿÓšåÞ†9$4,¯	UI©gs'Ü¦ï&kk½á$ï$p@Îí›äã¹ùfloxùÂViFHÑ‚j{‰?7û×âP]§n(gÂ0mü@~É¾0ÉöX*u:·FoíÉhuÕÔw×~R)Ùž½‡=™Ï $AÕ¦¬Íïî³ýñ‘-·;‰=gE™S…Ù×Iÿ¼l
º8˜ìÛÎæ%û3Yñ<«v¿þ~Èö‘æ€½Exœ±JÄ@†›‹Eñ,†+D$—ÊZ\
c¸Vco31›Ý¸³9¹ê"àØù¾„…ïà$Õóñÿ÷~òqúù3~ggÃq×ÁÛðüò<,»Êt[KÆ«®ÂÔH‡‚|ƒ Lm]+¼²†÷éd{ßõ>jì«2Ï`v-õ[Ú“Ç–"ÖxgµFG LF´HH@Ø	'<êÃ~Bübü¹//ä‹Cp¨Và- Xf®<¹YÆÅæIö”®³‡$[ÏÃ˜º0¿M7é]±ÉoÖK–û^kè„çpTœVA­ô(rãÆ—È5{Íå¬gÈU”Ÿ¸m[VÕVNÎÄñáë¨ø‡'q@ì€¶xœEÏJÃ@ÆÉI(ô\Á1bOm±^*TCÿŠ[‹oR¶›i³°Ù;›HOÞEð“o!À¾ŽàÕ$Îi˜ßðñ}ßû«óóæ|œö²Nï0{ìí¶õ~×Ù†ƒS,pÉˆ.Ý0‚lÛõª•fšM†G{)š¥&Ì^†Ï¾â!ØA¨•6³B«|/O:±qb@¡~j*(YÒ†,FÔ¨Vào¸VÖh)Ñ0€bRÌ8ÆÌ0‹rS’\ªÐÞÔÏOÎÚ®A0(s€Õ€Œ‡ÿª:4Ùþè¦¦Ra´ŠPY×Oü»Ûéd<gßƒ–(ä×†Å¡ë]ÄÞlè/üÑýbÖŸ_C®)!f6½‚˜‹–VByÙËP\'2w­mÎr“Â–XGQ^†Ô¼l…²¯QwŒ>_A$ƒÒ·´xœ­VmoÛ6þ®_qð‡Õ)lÙiÖœ nì4ÂüËÙ2DÅ@K'‰«Lª"ÇÃ°ß>¾HrÜ´†Z€iŠÇ»{ôÜ=”^-Ž«F}­¨ÌðØÃ»?E|Ëjã°”)/ÎáþÚ»›ŽÏ˜ûp/!•2?ïõ¶Û­ñpÍù'—IOFÉÛ²^*7Y¯r0ñ> Ã‚HoÄÃ÷j?Üùðå.C‘"J‚‘\¤\Â Š^G±ËPö.Ø0"RÁîŸõÎN{oúoÎjË”°’dç0ûuŠÕMmòyY„hMvmBXR’D­Y’Q‘êeÇ]Ý@KmÝÉüê—Ñü·YZ§ê·O×2;°ú«µLÔî÷^&ÊkaL‚à„œ’¬iFå„,ãøˆ™þùÞËD©
¶.áF¸¦„™vxÛ÷Ó»³§;ÍR¸	+aJÐ¶KRð8Vôöîößô6"é÷û§g®¶)EXÛMÀ?CÐ&Ÿ3ÛTõê«£R „cRfb^lˆ””%GLQAÖ™’ä.O‘I¹’0Kl–BÒ˜†Æ
méø¨Æ6¤H(Î²Ý‰ã’²£Ò0z3¸šÏVãÙ
üÕp¹òáf¼Ãëc¥ñµn‡ÓqË98Î è‚,Âì±0©!ßlˆ2(ò‚§tM%ðH–ñ-È1,c<®wÛ<þï³ùÂ÷|¥y‘+¶c'ˆ=6hòñ>Ð/á>è]Ó‹.áoŠƒ™tà—ñ¡qx1Pƒõ‰ÁÌ_ðÉ‹t-/æÏúåPÝ½à)Âüb ë%ÀÌ_ð)K]no½Ñ‹ðÑúÞÂÓ%õˆ©en4ö¯–ÞbåÍg–¼Uú•’P¥@Sš3YðÌäª2ëß5YO}I^’Û”†©öŒi¢öã\×ØÔ³*3a!êâTZo9†J0
BI¹øJÊUZ±ï¥Ô’R{…8/B¦…‡Eðƒk	˜›g×³X8mÑÙw…ã.}øÑ™ç!P§~°=¿öNœö¬ßäçA€ÖÓÖ;ÃyŽ V²È`^Ž¤M3vö½X!õ˜Ä"&ŠÍ¶7»>±þûè­7	 qŒ¡¬³Ò†Î/Sôrçi+W‰µrÛ‹åÍûÕ	èùž•mŠ*sñmÿÊö­ñöFM½˜*Ô–ä¶µ¨©ú²Š*¦>Šªvü¯Føz­žÉ²óL•½fE•^lŸ©* 0ï/ÅÆYÐý$+±£1ƒÎÜ[¨O=mÉu\e"`òPëaæªßA)‘Ü«ÜóùN˜!)ìÉÐO;ãulKC®+Ô¢…7¾N“qufÏ¸=Ùäêóv(yê/?»cA
Yóov…Q•¿¤á„hfèZ†òcxœ}TAoÓ0VÅeë¨„„¸qxBcJaÜ7lP-c¬ÕB9Àa¸Ž“XMí(vÖ!Mü†¸!8sAšÄ‰?À•óø`»qÒRX¥Êöó÷Þûü½÷rþ©ñã]ãsÔXH8|ÌÎ†ñfu*~Þß}aà¶š à b°ÿü)={‡ùh„Ô…äf<¦*g€’„AÆÈ1Á¹¤œ-ºH|Ù°á7îÑ&¬$r= G“•H®ÃK×å!½§­j5¦7àr(Å«‡7®Ó€Z- „ÒP|ØZ†x  ÍÔÎBR¨L&ŠÀ©©ÕB”¸ç40ˆ~ß{tè±€[`fíÅÇÇ_Oç¤¡rAŒD˜3™ñÄ³]^ë‡ ™gµ¬­&F)Ð„ÊÇÇÚ5¤‘	ãmÅ6Â–z#†	DJæÍºÕ)Á4¤Š…e¥œ|"mfQe‘”E€ ôÂÕjzaRÊŠóÎû¥©ß»Ë‹u»pÚM1ˆÎdßW»;ÝŽ×¶	Ê7UÔ*?ÅÐôžùUTç£µÛ '&˜yJ@™’ ø¶ë,Mµ‹áZ÷Šâºã1I²)o¿ÓžøÕa'©	@aH°´éh¥ŸJuëòtãoý›<Y¸¤N«Ò³câôv¶žµAïk!Æ1Q©²ÿT™¨ÖeF®UÒY®M©4CÛYš£P=Š÷µžŽ¿Ý³êü]=¥“¢ì9¸¨úuY®þc¼tò+s³¥µÓG0GpÁ'O(K%@¨ç+Ù0ÎÜ×$ãp„’œ¬j:Ìp2gE°o6Â¤È:¼z“ŽN\õ~{T¨1’ÕT—íVê¸VGž£‡‚²Éwàn¼j81nsèœú	vN×Î~ù¿ «ŠùÊè€›*xœeÁJÃ@†)ÒÚ“T½‰‡Š·xQ/ÞJ-ÚTR=ä²ÙØ…ìnÜÙ¤ôæ#yŸ@D}"ßÃ%b°zægþïŸÿ}ûsð´7P’[£ž#³AÁåËñNgk2ãi”áÍÅ(N^g·‡õAw÷Œk‘;–æ·áá·€ÖK`2¸—j˜4XIŽõczßÌú¹{u}·äÝJ1- 	¡5˜Ol‰™±àT —™Dñ}Ùû`k
µÓ?£ŒÀt©Rô¬Ó“ù<9<‚YYÆº†­qÙ[AŠÀ„ð1T¦„%j—¯êéær£³+„h9æ$9É	¤ö åW_o¿?üiöéi@‡ éå;xœeÏ»JA`¶
"(6‘SØnlL'asqA$A¢EJggÎ&;3ëÌl$•V–¦˜ÎÊG"¾€/!ˆ>€o ¸/hRççðýg¦SïñÚ»z«‚S­¤O$ÚO)Ÿ]z¥Ômýúbˆ>j­´¿R€v‘ Jk¤–D	ÂQûÀÝë*†!£„îœ †cNÑ½÷¥/œªî¡ùtx2â…!‘è2YôÂwo¬4Ø‚I‘ò˜#[ðŸ[ø/1¿o~‘P™ˆ0·ê»ƒAŽ³4UÚÎe‰ç•òÏ¾ ˆcy‹É"ƒgJ›Lj{;iÃ½„U÷Þ*¹ÓpÍ±ÎÛv­æ8Fè5{0–Xn,§¸Ìi‘Jº›ýîŸïoÍVÂ+ï·û—‚æƒAxœ{*Ð(8AQ $5· µ(±¤´(U·¸$±d£¡0#[ˆ«o€kÐf/Æ=ÌŽè
Šbt‚RKŠ2SËR‹¤2óÒò‹rK2óóòÓÒ3ËRór'°‹–Çè")5y«i}AQf^	ns4’ósò‹3KRQ”$æ¥(ä•æ&¥lJL.Ú…¢ 85¯8¿¨XSh”BIF*Ì5™ÉE@SSRË2“ScÔô¸6K²MaäFÒ9y»9ç
q æžríá€Lxœk¼.0A‘%/1/e£Ž#›Ÿ£ŸKŒîf/Æ=Ì`ÁÉ‚¬"ü A…â’Ä’Ìâ’ÌäâÉ6¬NÉNV'_°df^Z~Q.PA~ž‚FH~IbŽBReIj±ByQfIIjžŽ‚SbŠBRN~r¶Br~i^‰P»‚kQbqªBZbfNiPmjIòf%¶­Œö=b·†Ø§Á	 4¡;çã„xœÛÕÇx³qC£@IjnAjQbIiQªnqIbÉæ:Æz;ÑÉ¼A.è‚Å
º¼\


A©%E™©e©Å
H*2óÒò‹rK2óóòÓÒ3ËRór'¯q8)\V¬‹aÁDÇ«õE™y%¸MÑHÎÏ-È/Î,IEQ’˜—¢Wš›”Z²'1¹h/²ŠâÔ¼âü¢bM Y
%©0Çd&MI-ËLNÕ³Ñß¼Ü©‰Iãd3×lŽÝ¼Éµƒ –Ó{êâ€Kxœ»ÙÇ¸¢qC#K^b^ÊæJÆ;0k2‡C¸ˆ¡[\’XR¬ ËË¥  ”ZR”™Z–Z¬àçèç¢ ’Ê,.ÉL.ž<Ãá:D_•ãC?°df^Z~Q.PA~ž‚FH~IbŽBRe	PkyQfIIjžŽ‚SbŠBRN~r¶Br~i^‰P;/—kQbqªBZbfNiPqjIòæÍNÁŒl¼\y©å
›y\ÜùÑ-sM†8ÿŒk/# Ì[Jvä†Oxœm½J1…I} ¥`ÄPv™iWÔìb&Ëf’1É¸Ø(vV‚¤²ß»-}’}‰m°‚)¶ºÜÃwÎýù™“õùÒ„j®+æ<÷nñJžÏ’>ì.þ[°Œ¸’ºB9>—¸-r<:–æƒUš÷9Ü'/.òã¾‹­º-VÓ4<’ºÊ¨é|Ûyø©D9,DD9¯„;Æu/2¶!ØÄØ†{˜Ö+£1Su?)z#´Óçp—Q×J¡&JVá=?'9;àO¸—ª'ífT<JL¹åÂK›Ñ0ËW{[vXÜk¾/ºôW§£:=}9z#¿‰Î€€ë‚8xœ[ÑÇ8¡qC#KArfêæ"Æ;0kò/ûpC·¸$±¤XA——KAA!(µ¤(3µ,µX$¥ZT”_¤ RY\’™\¬–_4¹Îá
Ä„0Ç‡v`eÉùEE©É%‰I9©
‰y)
¥yÈ"C2ó€zsåçLQ(ÉHååÚÜï4‰+ÀÙªj²‰k2Ä³]{x’Eaâ$‚xœ‘ÏKAÇ	öH=†‚”W„€hLJBâU³BM–ôP
Nf_’‡»;ËÌd%ñÞƒPþ‚·Ò[ïž¼øôæYðä®Ñƒ9õ4Ã÷}¾ó}oÞý¯ÜõYî²Ÿ›6(úÂb91åX^éÜIcRä‡Uï`B++¬r! ßÐjÂaoA‚‘¯4˜%õH‚çì  Ö™–úÈX’¦¯WbþêÎñßµ‹OæÅúêýR`k>&$±Ô·5øÞö:;íÖÞzÃÿ^¿*ud@ª0‘Ç ¢`ÇJ¥·—ŽøŸóá3@KÙB^¤Ì³ÁŒ9!µ2²B¬•?”z"¤€ÐpÑY,ÖÓ°×Œó=gnž,„bÝt>²Ô "híï"ÈÐBÚTá3§8*+òQ"t%2}v*ú¸À_Ü÷|è¾9ßxÇ7›ƒ©íÝol­<§[Plm<´@t)z=¥Ca¹ºý“«Î[¯‰ÒèÿûõÌüD?cèÃx¬åtzÅ§„g›îôÄ>˜šU¾[_âÛ¦àšûç“@Ížé	‹)xœkÜ/0A‘¹ 9s£¶$#[€³§kŒîf/Æ=Ì ±É¬¢’@:U!µ¨(¿H¡¸$±$³¸$3¹X!-¿h²=«=XU«³	XUr~QQjrIbRNªBb^ŠBi²ÄŒÌ< Ö\ 9ùy›•Ù¶0rí„ÊM~Än6P#
 gC4ÞåW€´ixœµ’AkAÇ)ššîIªx©Òg*$Iƒx“@•U„`C[qEÆÝ7Ù8³ÉRŠìÙ›°ŸÀ íÉàüÞufg³ihk¥§yïý÷ýþÿ÷éú—µÏ·WFè'lŠ­@¤q$Hðµµº´¼ëÜ'{ßÜ¥ÃKÙñðZ0DI…ä
ª2P&yJ$BÕ—„$E"U0Q(!e?¤!óÃùÈ{¹oê“q@-&$<¼ßé@?À)óQywÛ°2?L˜Dc‘jIßDì£þÎÆ}ÁÇ&¨òWµ{¯«½ŠÁ£;ÐµÒ}xãµ¼M{Ý§Ïn¿©ù(Ø÷[[³½.È¨¨+(ÞùaíÖµb+ýANâÀ`*àùßÚ,žrœý¯ZåËH¯Ïá'#4@Ñg”a`ñíŠGŒ±«è²6H[«]	±A/£¶,ÿ³ü«V(å¿¯\aCœóúÍlaÊ"tÚ;®ÓŠ³X°AwíÂÇ¼mÐ!Q:6“6‹G0%ÑU%µ½ý¸(ì²0Êg k`¼ã„Í]ñ0nTÓ®;<eÇRð3æ·ƒSç×¦Ù¢y\¦ñ(ÿ^'k/­ù'mš{+Íì„ƒMÝ¦9‚Névo&úNŸûQC9PÜg¾1œ©7Ûˆ5Š“,<¦Ìi3
ZÿÀ³üÞGó›ÿ¬¿¸`“Ò¹0îX5(âþÈF	‚óì.ÈœÍ¹€œHå?Vžý“Üìd†øxœµS]kÔ@eUDS_«ˆ^Z[7»[TªÕŠmÝ²µõ£X°*³ÉÍîÐdf›I6,ýó">øÐ|ÚÒ_âPï$ÙÚ.êS†Ì=çž{ÎÏû…_Ÿ
ßš…‹wB)l…>:ï íÊDø’¹{q!™}­<\ÞyvÑ€5=
úàñ0HXˆÐ/Z,æû2Q+!’y=$-î´,ìšû¸í²ë@ìpïVµ
.v¸ƒª¯Z\AˆÛ1QA[&DètA
©æ`pdÐö1"PÑº_iëƒqýåÑÇKMÇÌül~¼æ%¦ýhv±V_˜nF³%°=þñÞØ¹#i¡ç³f^¨`ø‡þùd'•KJ&\3½êuï pi8ÕF‡{ÜÑ	°W¨Œ}ÿš$QLâk¢) Q‹VŽGwØ¦ƒ7ó)éžšQäXq)Hï§þº¸5V´œ!B½ºtAß]š<Q´ôæÒíl”„‡~nÑ	V²yò€ú_¢¤‹>ˆ8h`–b^Æm# ÍU`Ò«.ZëB¹.IUqCQÂ("¿[†¨b?R×S]4yØÕÈ…‹è–MÎÛëwôÁÓ†þ^;}Ê„¦çjScC©j{®
Fv“F³/‡¬õ¸ºú|ÚÄi(ÎÊÜÐ\1‡lÁ[L‘@³å\4¡Ãü±L\]}¬g–ÏßHíËRQi[º ³ãƒx7ÅDŠZXX3¨Òb;”Áhà|½n€3#€%Ó¶t>1«ß­ï^^ÏžÎ±ÒtacegäÛ
R1[\Û&»{°÷ôª¡ÿbˆ¹hMfÛþg\ƒ5%¦3Â¼2céîëÊÿWK)üÚ³)˜,Iîµ\îPÿI6íÀ?M,{»
¿'9òâ7”UxœRMNAÊÌ ÆÝ`‚’ç†L‹-„›		 0˜Á¸êMÍÔkºHuU§«¦„0;Ö&µsã4n½ðÂUÕm˜5qÙõ½÷ý¼¯¿/\/~xö@¥$×!¡4äòäËê£™æñáVÿ]ôugæÛÝ:jî5–ß´76Ö×!•9Ðœ¨9ìžk)øm`"–yJ4“ÚG;oa(ÓŒ&t¹ª³ÒØ=}äø#'Å}èP,Ø7¢0†Î©’âR8.n®ÇÀb`ZŒaÂÈP
KÎ1V^B×ú©kÞâ
tÂ”ƒR"(d¹ƒ±n>AÂu”h„KqgÌ~÷¶z¯—êÉ¬RÆÉ€c`–šŸÆQ¼g»(2óS•¸SF LYOVKŽt6Ò¥JI	¢ üdµ]>B—j/þãl+çnäôÚgÉ˜÷ŠÂY¢0¸ Š1q¼¨)ÚŸÝÎ0ûÇG½ÊD%õ™²'ä}”dºÄÄCÖK8Ág>7–ÁÝúŸ•˜ŸÍƒÎtÛ›õ»U²µO_Ð6û­Óµµ©Ëú¬nµàr:þß¾nZÝîüsè£Îèëýp‚h~Õ,Ì=¹£2ó£Ü÷mõ¿Þ´žÎöÞîZü±y5¿ ;‰3¹äT‚†Xxœ•TOkA' "ëMªÔ?„’h7	Áz°%Ú6Q’–¦9:ÙÍŽîÎÄÙ¤!xðæmú”BÁ›~?ˆA¾ÙÝ¶I	ˆ§lvÞûý{oö÷—ÂÛ…£AábÄÜXðã¨ð®ž?ë?{ÓìÑ‘‰•C<Ï	Å Û€=ªbFGTB{³Ý ©ˆbR1WB±V«V!Á‹–”@ÄÐ<T”{ÔƒNkso÷Ea“àPÜÙÞWDÃ0®²VÓtÅ‡ösÈt€GGÌ¥úë£o'"›+Kàø°ªõRð7Ü€†+µ®mO÷&rD¸ÃÑs½sôûB‘ú…nÆ1S(t¶ˆýP¸/±?AUˆ`[Í˜H
>aac1Un	T@Ió!§ða&Wp‹0¤qÙ¶cû¼ÿ³c‰Àç 2 $TxDÛ"¡à3|al.ÏûD1d„ÚI?¤%ý£QÔk­'¶å$&®¢q.ŠôðTðO…"Z-­šà$¢rH° f¦Ú¶ôQãþ”ÂêŽ¿QÁÃ”7÷#Ó”<&Ñæå‹D•
‡L$ô1]<àieÖm[#&´Oý™·¾ÌÆð™É§ŒS(Žææ€rcg8A>IBelœqÚ¥‰bãð¬³ÓÎu¤d‹ˆ²íÊÌ¥b28<Íl-¡/ÄåÀñÖÌ êïú´5»òôW#Û
žD}3òµ{½žÙ6³8›EkQ†N2ŠX¥ËÇéø-"èSÀ»Š®dÒ—ôUB¹
'eý¹y¨ßo_®/¾.óSÊçÚÎÏKj®ëÎ^oãä.ZåÜR¦C5òv°!<É£pÐ
ò›2’ÇJÇ|AäÌÒÙ–mÝÿf1ÉÏ0ÙÖ]ýú ¦6®Uoƒ†ðšÏIÞ«úz§v¡Ým5å¦AÑ·ºËå½Û½¤Ÿw?þI'ÝsãV†«Nxœ•”ÏkAÇÉAÐHD[AÑ¢cjkªMâ­mJuS[¥µ	èÑu÷53°;³Ì¼m-ˆàIOŠÌÕ“xñæEðì? ¼öîYgšlš¸ÁÄã¾Ÿ÷ï¾™¯ï2?Þf>ðÌ)„0éb,¡¨ÐEõñYæéR:¬Ç–N*JŠ¹,!¤ÆT¸{¤7/!p|bë˜Bæ©\vq.Ò¯§õûÆQ½¿üf*Å[œƒp‰L¸àÃó`º…zÿÆ·‹~{‚êÑƒÖ/]r
š:ßó+#ð’Ñ±".÷‰Ê“,B&8™/êWÎYýëVþü.ó‘VóåRi*ŸËnK7„jþ‘>HýpõÉ±­d‚þ¹ú\Ÿ¼{d"–8O„‘P¡Wþ½>?ÖÞþrgõÊ}WrÆ[Äé66W6êÉIJPT¾EŒÛ^"¶‰ØIÁ(à-Ë(8’)n0
d"xIÓ_´J­-ô67ùƒ?Õ¤ CSØ¤R V­Š£HHì8i¹J¤JbÞI€?KÊ&Ðý´ä«kB¡ÑÈQŠ èo¸ÜmAhýë4ŒH, 4{¡L
ë¬EÑZ`¥ÃÌ¡(¬zs† ¯Âb¯Å6¥ËÏvks4kaÀ—'	²Q»=jNÈ¸“pmø ÖqC³àK“D'¸oÐ‘-f| u˜RXwgïŸnÐ¾ŠQÜ¨üŸéÃÜ¨ŒàFšz.¡nÑ}±ËíþÞƒ3É=èÜKÕ©2­ã:ØœÐ³7kâœÐNêO›ŠµîKC!õÚ(²-äA¦ÓÍú½Oèçú‹Ì¡Qëîyxœ;+=_x‚"W^b^ŠnqIbIñFaFV?G?—˜Í>Œ{˜µ2
1º
Á©y)
~a¾©
á.Î
eÅ1º ùˆ‚Éò¼b“ãYÍ¹‘ÅV³–×ƒt%*„©ü"…Ð¼ÌÂR¬($ççæ&‚Ôq~iIAi‰BIFªÈ9
 ™Å%™ÉÅ1jz
!@áÝ]ˆªÝ´ü¢ÜÄ…ü‚’Ìü<…òÌœ¨PI†h*Ì°Äb…â‚ÔäÌ´ÌÔ”Él†<‰•
I©
©™@[Š&/gÛ)ŒÅºÉ‰ìO'Oå)åFõª
¿‚7 ]ütùï€lxœ›/<K`‚”P^jIbAn~JI-ËLNÝ¨ÅÍÈççâ£ëï¤]6;3ne¶ÃTZ¬£«à’Y\“X©™—–_”›X’™Ÿ§˜”_Z¢ Ö¬ U:ÙŸUAb„²1iA
Ñ1ºù
6i¹%v
5“Ï³‹1å–L>È*[O¤Ñ@óJ2R2ò‹KbÔôB€lT‰E©
™)©y%™i™©)
¥Å™yé`-žÁJg ›ŠòsrR‹RKÆpéMÞÈ.Î˜;ù»$|Én(Ê¥‘’š–XšS¢©Ã“æ™œŸSš›7YœÃur!G¢×ê 9
‰
…1ºI‰Å@Û!²: Õ™@K'sªÈa	%PAíåtcä òô›8íS†ƒxœ­TMk1fÁ‹#ŠŠQ^)]ÒJ­¶®-ÒjK[ÒCvòÎ4í$’ÌÖañˆää¡7Ï¢=èÅ«7?ÁP0“™ÝN×=¸°’ç}Ÿçy?æÛ»Æ—7÷Iã£¡8ê5žÏû“=¾ûh wåA¨0ÑM Ø@B5A¡xÑ`v(ÆL …µíU„H
£dš¢Æ´A¥!–ª|•=wÿdqÅ”­Á3%3T†aø€é*é–µŸfGŠî´‘ÏÃtjæ(öX„Ó‰™ƒò÷,wsN„ÃJº)Â—í‡ûSvnñçàDE		ë¡˜Â›FQ÷AŽ:#Q!”óÂ¶ûM'µç0¥}…:O¯‰B“«¢Ú¨<rglÍNeuT€¡¡Éôû×:#	ƒæ_í¥íË¹6ÐEO+zPÎ„]y05hAç·fÌx ãHákgl_ÈƒiâPqñ4u_ÇRÒ—¹#“¬ê¾÷àn|’ˆòd®Ü6R9iî^¡WËù€dºÌÇ‘KÕ/ât^¢µfMÎ¸Úªp§»¢ü¡rUî
ë‡kÍy+!ªx›Z×°Ç"í{„Î³L*ƒ´>›Äy¡Lg®Hm«sØX¶¯7nœ;=pöÂÃ«÷–JXmœ™‰I™ £u+À‰ýº~óèåÆaÃÎlÇ6hâ¦ÏZU±ØOo—@—	â:áÍ¬ÝÙZ½~²öm×ßv1C· ”ÔoÞ^ÿïj,ßÜ»2™x¹`|úŒ,”ÉŸ– é-ïi)ê†/Mâµß·>^®PèÖ¢h3hÛköíÂyûyûÕ/ªäïƒxœÛ=“qnã†tF¡¼Ô’Ä‚Ýü< •’Z–™œº9›±Â‹øäçöÞŽ˜ÂÅ
º¼\


.™Å9‰•
™yiùE¹‰%™ùy
‰Iù¥%
þ~!Ž
PÕ“÷9ls‚˜¢€lŠ~j®B´n¾‚ZN‰uZn‰Zz‰µB‚®.Ðˆ‚Ò]ˆ©¶PÙÉ¿wÔi%Ð…’ŒT…Œüâ=… U:±(•—+3%5¯$3-35E¡´83/¬Ã"X©àtjQ~NNj‘BJbI¢ž~Íd‰ÉïÜe'opMâ€¹{òE7KÆÜÉ|îA¢
)©i‰¥9%š:
6@ß%çç”æNÎt—cÉ*ÎÏ›Üë~Í‹t€…D°â<Ý¤Äb ‹ ’: Õíz“¯yùÊ`	N`@‚Ølç]Ë š´èˆjxœ±JA†9å.­›TŽ…$­X{…El„kÖÝ9o!;sìnRù"6¾…¤µñÍœ»&]°†ùþÿ›¯³ÏáÇåIpßãQ’-æùêqŸ'?§²j³ôâ¦d¨tO«9B­b‘AäÅdÞb€†7[‡í]zÝA&]¾5H†}1	5j[Z–$Ç©h™à‰¤†Zi½õ)nv ™uDÓ]Ç
¡â‹ñ–2Ð.ï>€òÖ)õ‚”ž]õÄF.-ÁÌ`/;âkéU$Úav¾¿ÍÖÉU¯xÜ®}L»—Ïâoæîƒ4xœ…¿JA‡Ù”÷A›Ä.¥&Ê	Ä?»uoÎ[¸9v7WYYj„­}!u^Á—ìw#¤¬~SÌ÷›y{a%ÞIœY;ñt3|/RÜM÷*¶€RÕpq;Gh¥¯Á3H‚bt…V£ƒŽ›¥Á°šns9ûzìJ¶#×¢Ò•V )¶é5üßGÒ k¥Â<SKk‘|Óƒb"TË´ík„š\ÇqG¦6rnt¹x<•e“<Ûž$.ãª&8,±ƒû\´ÕôÎ©N™¼å¦A;òl>fÃõçÉd°¿UÿÃ:ÏvÚaRÜ¤g¾ÏâÙ˜}—â½ixœkåkå› Å™W¬[”Zœœ˜·Q“‹‘Ë/8F7È5ØÙÑo³#ãVf¸¬BŒ®B˜U¬P’‘ªW–$sS‹“S‹'+²*såÇ@UOa5ULÎÏ+)ÊÏÉI-R(BÖ‰Ð4ƒõ²NkØÔ‘MÜÌ 
§>ªì€|xœëïg¼ÔË¸¡‘;±¸8µ¨D7¥4·`sc£²Àd‡S$¾‚./—‚‚‚sNjbQ±BIFªDR,©‘™¦PP”ZœšW¢9ùÃA£w8²0ò@x¹Àf_qŠ3*-.QHJ›äæ›ªœ‘X”˜\’ZT“Z–™œª ‘Za¥ äèç•å¦hN¾ã¤9ùˆ³µOPOr~nnb^ŠByfNŽB^>Ø¬ÔŠÔäÒ’Ô…ü<ˆ —&Ý˜Ÿ§¦ladhn]¢P\ZPtwf‰ž~Ýäûn²“ß9±ONpšœâòV§·fºF x‹Ã­ ÛæwÜä€~xœ»ÔËØßÍ¸!‘3¯X·(µ891osc¹‚;™ÃÁKÎSÐååRPPsŠJ2RòÊrDbnjqAbrjñä‰Û‘tÇ:7J-,M-.)VðóMUHÎÏ+)ÊÏÉI-R(B6n‚žÂä9Nº
™Å
¹‰y)‰%ùE•
@†Bniq	/WR*5*#±(1¹hÒägNª“;\u'?v~$ƒÇuz“_ºø"ùÕÛµ þu_žº’xœ­WmsÓFþ®_±“Î4	e;†0u3.QŠ§Iì±CA|8K'û@>	ÝÉŽ¡ô·w÷îäÈÒ0Ä3qtÚ½}ßg×ûÑhÏÇoúL…ÎxäjÉ[¥j•¼ÈKÝú˜K®j¦A¥yÙ‡7çÃW—A˜9¿…7ŠsXh]ôÛíõzí'y<Ëó÷~^ÎÛ:™?jsÙ^èeÖvŒ¼?¸ä%Ó$ï,G~x^@¨7WÎµ‚•’¬P‹\Ã©“^KV©/¹n?ÝšgL£ù^»×mwŽ{5å’ÉŠe}¸zyÉÝ¡&…yUÆÜ’ì»&ç›ã»@Î3¡ôÚó§Ïa™‚¨õú*ŒZ“`<šLñ°{]ü»Qºgø¸ûçÔíÙ­ý)àŒ§BrPù’eˆÍD&ô”®Òô5ýó£#Å¥mVÍ•Ÿð™`ÒÅ£Îã“Ç½&[+.+Cge¼+n‹f^æiŠáíüÚê·—jÞétº=Ÿh÷e©àÉ~¢`ð¢öÁóyfK«~»¯‰T\CÂSVeÒ¼\2­…œß£ŠD(6Ë°17Å‚K¦E.=_.vhï*¥E*bC…–ÐÐü¿rÈxªaÉÊ¹Ëlsèù,ì^Ãp9^Á³ÑÕ4¸šB8L¦!<&<¸/5!uïà2Øó¾
nµ`Âu)øŠ“	Å¦ÈØô‚#áµaL˜fØgeëªäVpø×ÕhClrU`xS/J‡¤PX=‘U¥8MøJÄü)¼‰ZQK²%W‹yÔÉ“Ó«—Oáo´G‚y~ëÁÿ}Œ¥)ÉfìÉép´•¢Àî*'á*V3’ï6CóÆõðû®cÍq™ðÄÜåw½U ë‚eæRq×K+^ÎrÅÍ¥Õ]/å•.*³íÕ'§ç—Sëgæ§Z*lQœá³Ép<ÅðÛº8ÏKSNf*Ø€9œ<Bˆ.D¤"£‘ógÉ¥ÆÚ‹9ò@œ/—T—k¡7Œ5u›Ö%4ÁŽåÈÃËÝ²EÝAÛ&á-)ð5¢v·‘Œµ[§ª5/Hvô³oœ˜"Ã¶~1îX¼u	dMòéŸ%öÎŒ×¦lÝŽx%¦. üºm<´©_:‡Gd)ƒmSÀ,Ëã÷ßà–ÝÃÚ®z_Å1WèiÛmSìAü'Ñ÷™mi'o-²ŒÌLxœSd'xò‹Õ‚¶fe4R‚G&·Ôôã±·í×#øFS{þ$„‡Þ,9² (ó• 7®Š„f€¡ºt£.¦ qù©ù­{;—Ð@z·©Ú³JñZJC.åK(U¡z¬7&¸Õ¼oµìä·ä*QièJà¼F|AÈq^71ˆÞ:—©f‰Šìâ÷Am0"éŸqš-ôÆBeC|Òjš’eµœ¡…(“è¥(°‰%ƒ9²Ù»Ö‡MñèÚ5\›°sâ¹ð§Ì×V,C2Rã¬JxÇÐcY6Ë¯÷´ƒþáoûLï·ïM?y/I¸7ýÜÇg³
3Ñ§Ÿ‰Øq„\£ U:“Ü‚qèØºŽ-X¸2†äŸ£;ÊpYd"Æß!8`•4¹zõýëÛ¸:®g‚ì.é‘#Whc“pâŽÆwêcG¥iFÛï–æOÂ è62ËmNk s	¸Ôa+×‡_EÅÐªíT2¨‚½@é0c· 
«Ö$§uH ¢¾ J¶Ÿ·EìÊlÁhéÒ±{[„øCÉ‚)ûú¥-ÈÝRñ+k ~µ2.9sÒ7(	×Ldµ<7üväáÜ³ì®‰þ; Ñ)
i@m-#8°tLˆY™èáÐ9¢Ó;…Àgœtœ	ÉÊ¾ ¬˜â0àlôÕbbŒŒ=À#-–|k0vðjp9¾êUÍXE›¿„èSäE‹ýVçá~t0«ðñ—No?Šqýl~•Yël8b‚c¿gèÏ™ªQ}Ž˜‰CÔ,Êw¸wOl²Ž¾Ø2ßôHÏB4~Q!Vãe–˜5ÝúØ·†‹Ô™ì\ qïü	¾¾v6†¦Y-»f³ëžØu¥!,°¢&ÁýÆ'\äëF‘”Þ:of«Á.+™+9u¯^šýŒôÝænè~ßÛÊcSg‘°¨gÂû5 (>â‹OxœmÏJÃ@‡‰¡Ô?‡z2ˆ‡
ÆêÁ[-¨½T°‚ºÓd‚³›înV*}a_À³7ÉÉ£/ãÙ7Ð‰ô°ììü>f¿yZk<4g’ÈãÏ›‹Îl¿Ç¼_:/ÓÇeSóÀGÁàüáBpŒàH¤i@-5ô#ä:‰ÇÀƒU„¸u.9]*¿Õ@¤Ýs·W’ˆÑ<ŸA'B“„Ø;q{—ÌÐ‰SÝ…	ýF¯\g¹f^,dèý2².,h*Ä 
…ötîàêþË)¬œjÖ
G
’?b?Ly2)!
ô5þ2­Üi Ò2©Æ¢5¿:U¼×îœZó8FiÇõ ñ½´i£67)î‡]ûQmþ—	¸Q‚SaY³Kð	çè…çè	-xœ{&>Gd‚"KrIQÎFeaFç ŸÍŒ{˜ÁB“¿±hr9çç•åçä¤MÖ`u ‰Ç¤)Ø¤¤–e&§ÚMÞÏª1Y‚-ž+®ns[$ãfyÎ™Œü Õ
ú@¥úye¹©“OsµMîáÒ‘@WˆÑÍWÈ*ÎÏ*™|Œ[ X4bï€	xœ›#2Ad‚s^YîFY!Ff¿0ßÍFŒû™%€º™)ºÉ%E9
1º
Á©y)
@ÉÔÉÒ¬²ü@†Br~nn"P°8µd²«+PCŒîäÖj°Xù™¡BÌœ{¡¬#œ ~’"ÿã†£sxœe½JA…ÙhX164©’Ø(D¢ùiã_b
S%»wÍjf&ÌÌ(y±œÂÚÈ¾‚`c)¾DÀÉºb‘âÂáœÃå»÷ýÅùzr¦·ÎrèkgRM”™œÖçBq³ ÐFæÃI·…pÅúÐà”ö­ÕFG>2wÀúå¸ïá6T‘`æ¹¶–(£‘Û6‡oëÉÖý"Ò*Fªâ£=,\«
Zk­öOü€ªÄœ€™^ä2T™R}k¥G´uÑ(\¢6>üûÈK$ªÂæÞNy·"!\ s³½ùŒ×¶#Aþ1Sx»T*yVcüÙl.ÅßçÝŒ›Fƒ(P˜³Îcî÷OE{I‘iŠ% ÊfÖyÝXL8ÜHÎ€h›çãÙå±óCŠLï
7xœ{6ñí$ÆyŒ,É%E9›ëìÀ¬Éì!g!çü¼’¢üœœÔ"…¢Ô’Ò¢¼ÉE&Oq¸(Rc£Ÿšk§ –Sb’Z–™œª–^b=ù„£þd5§ß\Ép½›µœU™6Û»G0ñƒt)èUëç•å¦L^éé;™Ó+DM\A7_!«8?(¯ºy–—# Õ¡@µà€xœ{;‰ñô$ÆéŒÌye¹›³ëí@ŒÉoìƒÀ´£ƒää~¿0_…äüÜÜÄ¼…âÔ’ÉK° åu7g:*12e7OpšÇšlä¾"÷È½› Ç¬#JêA‚˜xœ…SÝjA¦H*†ÆQ97•³i#¥PïjÚ`!m¥5é…{3™™M†ÎÎ¬³³IÂ¾‚eÂ¯D|Áð-<;»±„öj™³g¾¿sæ×óßO¾<{ iäQÉ‰ù/ÖžöÞû^op¸æ{ý‹ƒµŸ÷n:®á±¾½ü vÊÛ¡/L8'†Ã0bÄrx'b«Íz’©ä×Á]ÏHãiö­ö¨¡´ï%‰`ðÑ²?µ½Íñ.´h½»A0æÀ²›ìëú«´±ÔôŸ	Ê¡É¯ÞÀ¶Ô,äÛªÛò_vê8ª˜Š¨C¢Ì”Y¡Æ8kcUJ°Èg5ÄêXA‰”D·œZç:"†„x41è4p¥™À±8œ¹6—'”ò8’µDH˜ByQ
°V(±7Š´±BM`8<:pÿF\1üœGœŠ@P8RXÍe¡èæÉ(=æÐEÚ[bb¦ír|µm0üS""ŸŒ–}ã<èWXí”X`Ã°KˆŠ»ÂÕªtÑ†DItè:}Ï÷þ·ŒãˆŒž	x9‰œ>§è:Š¥æ˜£7^ÛºÔ™KC…‹)Ww±·ñJœH¯„þ©[!,ÉW2QŒBÝØ8Uß›ªö
u½sv;õƒ"ÒÛ¶ÉMY ì•“d«Ú,‡ÇÜ/-Y%±RU™ëìzããž{BñêÚ§VÌŠU©¼£’Š—	d»Í•G*ÿß dÏåD†Þxœ…SOkA''5Ò‚B…ç¡@6I¥”’+Ú¦ØTém23I†îÎ¬³³IBðäIQF‚G¯‚R<zó#ø<ù%ôí¿ÔˆÖ½óöíïß¾÷õ}îÓëÜÇQî‚¢¾C]N´}Ù\9yš›6–KöróîReuÓ)ä ÝÁŒ9ì¶{ÐÚ›Í¡ï3b8ÜQz÷Ô¨¯W}ûjoÅ~Ø;o4ßDppJð¶uå¢TN
OÀ±ß[ßÖðÿ Ûí’­µC2ƒ.PL¢hçà>:&šPÃu!ÏøDPE~|ªx©Ê‰Çk%P®¢Gð÷¹aŸ·9UžG$ƒ)€T |#”Âge¬º.TdÐ(A‰ëÎÔpj"A…¼Z<¼ë Ô0Ö˜¢V`,‚eªô!¥<†a‡s"\¡žÔ†já(ÀnßWÚ9‚~»½„.|NÅPPØ–Xd¡èbÍFe3‚v1P].ä£œoTj ùãPhDÍš¥
tçØ™Ñ™11À¦`2jÈ¾Ž}žf…~†ËÊËJ­Åö'ûçiœ‚¯ÕD`¨˜F½ÊÄ¤Ãcßµ¯Î»*‡$ÊÄñ…ÚÒ?Sc¬RÈ?sy&y»ƒÐ5AœeÊµpÅÃ B“„—Fa/u~æ¤½¶uý\Šo·Öæ$¯³f$þwB2~³šh$²(‹™úxíâ'êQ.[$’ò—âU‹2«2–n£n×º7íçÝG·â¥
–·ªE˜$£ñÛf¥"xjßî÷v––võäKïYî
èwç*†âqxœ•Q=oA•«$¦ˆ"A
£!RF±L$Ûºpv#ð14‚õíœ½ÊÞîq»±ã’?€ŒF”t´H ˆ’Žžÿ‘_ÁžíXII³»óæ½7³3¾e¦ÓÌAfÅ 0‹ôÎ»{ñ13®]hÝ;ºßk½B›!ÏA¡â:c B€¯•M´”˜”šJXá8z(1rÊ	}¡X2Ée+å˜>w7è{w•.½/«‹2@ï½;ù‚´ûG"ÀÂÀîÃI»Ók¶[Ço+eŒjtypQè…@GSÆBJÐJN`¬“S÷ºêþú÷Ÿ ´´Íe™ã,fÎcA¢4'šŸB	)ÐÐ'¿ø¡âÊÝìeÖDl}vˆ	0EÿÁèô™ËªQ„Ð—:8…¹âù”]PNsÕn‘âú×5©wëõKÚllo(¡‰Y€%Á«W‰78¨£‰ã’0^-=9O/n!Ì˜êÖKaìî–CKáÌý°ù¢‘Ú¯ó³(.…Bbu	;óµºƒ!…iåðˆ~µ=ÿöÉs´à¾ök¶Ë5K=€ÐñS‹…ÆåçÃp“Ý$Ñyzcáô»S¤ü³*t}¨çiÚ¾E?»ô˜\í$ê†æJxœ;²„ñS/ã†lFÖäœÔÄ¢ÉD672VÛ!¸“…üà<Q]^.g¿xò|/QÑT…ŒÌâ’ü¢J…’Ä¤œT=^.ý‚ÉE&¯ä˜üÊa&’Q3E&¿r<gWœš—R¬P’‘ªPž’¬Päå)”æe–¦*€U+¤•+$&—d–%–¤òrÁ,HÎÏÍMÌK™Üç¬9ÙÀù×ä:—ìÉ
Î|,~ùy©“]¬&oõ`C8Íi“C‚>™¼7àP“ìä	þ<“7N h{câ„3xœUŽ±JA†YÁ&xv‚âTv+› !1x±R‚…­ã:—Yo“ÙñÄÞZk)övBzŸÂÒ;Á‹SÍÏÏÌ÷-æõÙ|x³n¡,çæ¥ÿ»Æ¹ÙŽ{ƒó¿´5N“ ŒêZä,w(h•+Tö%ÔË#ä^ aÊ•pA8E%¸¡Š-uã×à³ýº|Þ®Åd´9ICÒIÓ€õz©™0#Ë9SøA¢6\ëKï	„ƒú¦iPUøú^©{t0ëÇ«ñnÜ8Þ‰O'g‡­vv	ÃVøtE¸nÿ)ÇýWTß21ßZ‰hâá¸cxœ›/üMx‚œXzj‰njQQ~‘nQjr~YjQ¥nN~úFm~FNw×]×  ÿÍÎŒ;™3±«TˆÑUNÍKQðóMUwqV ª‹(Œ«Œ+-È)MÏÌSHÎÏÍMÌKÑQ(J-)-ÊS(H,*NMQ ©È/-)(ìÇª*‰Ó”ÉM¬zŒ\“7²ú«€lƒš‰[¹"›„8XB&¶)%±$q²Ûv°ÃÓ'›±*C]‚E9PE*XÏæiìaŒJ„ý8™›Ó '¼8C3‰†î€Txœû&|@h‚”p~rnNbIj^r¥nn~^fI~ÑF>F>ç€]ÇW?çÈÝÍ>Œ[™#°¨ÕÍÉOWˆÑUpÉ,.ÈI¬T€J+@¥@Ò‰é©
)‰%‰
™y
¥¹‰y
E©‰)‰I9©
iùE¹‰“óXE€†ÃtÇÀLŸ¼œU?-·ÄN¡hI¾‚=ù5«…,^k&bËPR Š&åä'g+¤¤–e&§*h¤VX)è9úye¹©y†“5ÙxÞTHÎÏ-ÈÉLÌ+™ìÃžËh0ù{#×ä4GÖ ‰“Wp”CýW¬PJO-ÁêQ gÀò'Çsªb÷ÕÎ( äÏ†âåxœ; 4Wh‚{yJ²nzjÉdFV‘†\Œ|á.Î1ºî®!1º>Ž!®›=·2#©)ã²€ìÝÉÕ¬æ²yùE¹‰95YÅùyv
1ºù
6H"“²6NŽ`S›¼Mžhîæ³l¬LH\ãÈ õé+|è€õ xœ}±JÄ@†	v‚…h+üZ¤öËõ¸S¯:-ì¬ö’½ÍÂf7d'Â¡¥¥®µà),|@°µðDÜ‹±‘à”3ÿÌ÷ÿó~ÝßD2Z³IÁ4'a’9Ë­QdËš¢‹Ý®ÿÜ›œuô™¶leÀH¹Bó9ZZŠ‚K”‡2Èªœ”‚§|ªf¶Ì¹ØZpñ—+½õYN±¤>.Á,bMýÐð_ƒ—Q~uøÁŽ‡'Hl^hÅ!ç*®*
[’2”)÷»Woêh	úvÇM¨¦’`w*P9‘‚8Hå¢‡Ó,€üöá¦>ºÝiã»pQ@
êüCÈÚÌŒø«ñ¤+tý:¾Ž¾0Ú›\å
xœ›7‘ñÏÆéŒìå)Éºé©%›³»í`œÉ?ìãà‘üŒ@Ž£;9ÇÑV)/¿(71§&«8?O-½ÄZA7_A-§ÄIxó^GGFU¿0ßT…äŒÄ¢Ää’Ô"…”Ô²ÌäTÔ
+} G?¯,7Õ`r¬³=s¸‹óæ•ÎaÌp{63»Ïf [(:$á#Àexœu‘¿JAÆ‰’h» ¶c#¢¹AÄÂˆ¨…‘¨)Üfs™»]¼Û=o/%`/
6>ƒØÚø ¾ƒànþSd›Ýùß÷1¯…—Å§e‹uíÛ—ÞÛz!“=j»þ~ù˜-Ž;@lh hÃÉy¡yx ‰"6ëC¤kÙêÂDá>»_)ç‚ØÄ4@R‰ÍÛ•¡x{nµ”€þ'ýÌnïEGT@µ¼+£€Æ
b†p®ýÈÎ¿ê<±.hu®¸`L‡ÔÃô!Çò ¹–/Ëô+·4#6ÒŸÜc¦œ>Ï}÷j5ëOp·Ó|Y¥z6­ÅÚYu®êk±ì·=ž è×ÉJ	Ñ¥ßLJ(_»ÃÜÑ“ñ 6Ü)ã
dÿ½¡›ÔuÑÑ—¸‰´1Ô¹ÍKCFj´]ÆÖÔqGó-¢Ã]îy
ãt+%«”ªù»ÂÿµAèw<.Ò|~krÇù³_÷À»Þë‚xœ›-ºBt‚"krN~iÊFuqFVgÿP—ÍÎŒ{˜UÀ‚º9ùé
1º
Á©y)
~a¾©
á.Î
eÅ1º`éÉj¬AÝ“ëY÷ƒT%*„©ü"…Ð¼ÌÂR41`“óssAJ¸ (¿,3%U¡$#U¡87±¨D?#51§$C¨ps5[³’F“'³p™A-wäŠ 4–E™â|ƒ xœUÍnÛF†Q¨­™^‹\z˜¦¨c¢"ºÎEƒ(Ž±UTÜekr)mJr™Ý%“ xrÀcŸ¢ð5@_¡oÐWéÌŠ¡$;MÜ
àj—œù¾o~8üýË¿¾}óõ¦N™2.‹¢?®_Ýèø£ádzv°ñö·}à&r>Ï"8>qøñÞ”:X˜dSou&ÎÊ±ê\Ý™áªdÉþ­ãG£Û]„`·¿:ðþ_ý¦ãWÈ¸9›ñÀ-¹ÒBfK€ä# ðKàî
BÊôoû·ŽøSëŸÃbÿ€úïNð³¦PœàŸTð(OŠ÷Em© ”iÊÈ¯\ÉRDÌœƒòYÖÐøìÅ§÷7ª&¤“²–&§7ñaÏ™pS¨ÌÂhÃŒÐF„b%SÐ9E,BxçØ…ˆÇ¬HŒ#ÁÛ¶z09S,åhxYòÐZDp'Æ ºÿìÀ#U@É²úÅ,“ŠG@,I@¢™jM4B£ÀÃúígVÉjÿV´&œ#ÇÉâá ú°¥Mo<Ücr?ª{Evªÿ¡ÛéÇÎ².H_é–F¸_ä9ò³E‘AsÒf(©°& cÌ½ÄÜrQ"¡ó„=_DÄ!—Z‹Ó„SZ0EA„ý.­ž]­QŸ<Ž¥áZm$LòÐ¨E*"—°Ûø,R¢´ÁY–¦(iK	céÙª<K?¿²QéÜ9±©}ÐôR«sŠ‘…JäÔÂ0\§7õD;•ÏÀ°ÓíÁÎ÷Nbî^=gú‚€
îL_poéŠwÐsMÑòÜZµ‹ÐC9A|×âIƒCwF­xÈ31ÆÛ7w Ya°ôaX¤Eb+¢¹¡2#Ýj7p½Ýu¸±â¥…&¬êC`úš÷Ý:%}ÕÉHƒÄž oìj3W²˜ÍÁÛÅ-3ØC™abñVç$£"sY(rZ£oßù‹"ö.ŠhÍiÔp³%²:ð)W[äkx•¼ùß £B‰lfƒÀ’`ïC"bnDÊ)
c±!o˜zÓC‚Ïéù÷áÚáOÃÑøèÐ¿F7ë×›ó;çÇéúÐ=h†ëSaæË×­ÛÞÞNý…Ó[ýônýjóñ%qi`<.°ÃšÁ2l_Âýæ<ÈŒíFV¦¼o¿&äPÿà|E„ÃËÚF‡5BMŒ×/ÁØÅ¥;ÿ„ ‡Þé…xœ» úVh‚s~rÁF	F>ç€Ý`_Ç ]G—ÍnŒ[™ÃrºÅ¹‰E%º‰))º9ùé
1º
A©%E™©e©Å
®%©y)©)
`m
™yiùE¹‰%™ùy
ùi
é™e©y
@c’ósr2óJRRË2“S'G²*° ÍV˜ÜÈª(Ÿ_ZRPZ£Ñlk“–[b§P´)_Äž|ŠÍ~²<û3^“&spÌžœÉÆÈ5ù §£LHF*Ðì´ÄÒœ…Ìb…<Q91jz\zA®“ýù‹™€fH(”ä+A¯PÔcPál  òWAbz*PýdˆËâ„¤&	ÈL^$¤ ‡àbVæGˆxœmSÝNA1¡dM‰J¢O@nƒ‰7’BR¤híV#²^Lw§t’îÎ23-pÅ+˜Ì˜ø Æø
^xåkxé…÷ž™Ù.MC¯¦çç;çû¾³¿—ÿÍ~PR\öX‡|[x8u«Ýöê/k¡ÿ>ýàûîÔ—yÞJ_&D(ŸÄ±ßç'úÐ¢J0:¤@ íÊ ¦CÑpm¥v*aHÓ˜X—E@ÏFhÁA­Õƒ’‘
O1¡$4ÊTbA\Åw¡Ëú%$`ª¨ŸV¼J°‹ÁÑa£ÔƒE¯"3¯’v=;?&Áî¥kwîÍÛ(TÝŠ[pú¡a¢_L/é¯Ów·ßl•‘W
UóüäÁÄÏvðÊ*ôÍ^›ÕÝúþŽmâ`ßú×t•J»çH’\ÃVÐÓ•j’§«Tú
7F9ÇIËqÖ&-UŒKèãRo¶lŠ¤$¡2#Õ?Kk—ÔÎ*DMÈtÐ#)yÄˆBùÏpt*x¿OEX
g=õ "’ÚlŠ.	|+\—I`')4¶ò£Þí3næIt—IU†lÓXº~þjV
‡c&h¤¸¸XµÜ³¼¤+cê˜èªþSzTÊ¥Ó33K}çq£Ù®7ÅÍ¦‡¶9‹ŒðÖÃMû×«´xîíçXnDw£bÚ%¨°4šÈ*Öïä€Îsý÷æýËpîh>äÛóq›K‰¸°Î¡4°=6Láác'	QFwÊ##Ý†äÎ‡ÚAS¼ÝÚxM•3h „qÝÈÓ<±AwÀVHwlü,žÍ-—®®þ±nÍöÞp£›àÝ«¯ÏŠtxþ	â}q›À_|2!Â"}l(¬A|ývvA™[›òþUØx1ë"„xœ¥‘MJA„	’¿qã" *ÈŠF4Á?ð	’EbÈ\8‚íÌ›Ø8Ý=twbÜyAè¥gp!qé	¼{'NàîQï+ª ¾g¿s/ói…¤C4¾çi»Z9¯´«ƒ“ÄçÔøaRÉÅ;¾¡‡ÜTˆ.õ©Ø×‘‚žS´ë•VjÜ’M7¯É¹}¿Æ{AíÊ)*F¤vŠÄ‹LèÀ‘‡=êb®.šíÚEÃ¾vü–a©ãô(tð‘zJ”w¡P…Aœ54‡¤ƒk@¸÷{Áfÿä
§­JìnˆÒ%a››L.ï
Æ†è<x„!ï£FIæ9³´¡DÄW1E\)”ú}„Rx]WƒO(*ó–9¸ä]v‹rcÒã}'°±²`•Z6ìZÂP…ÄEˆÃ"¹j•šMËìg·f(‡[Ê‰|„x£³gésÔ ïÐ&a•þm3D†úxÈ¨c¼‚³R2eky²=µöÌ×ôúï¿ºÐàkxœ{=…ñ×ÆyŒ¬É9ù¥)›K›ì ÌÉìCÕÀ,Ýœüt]^.…àÔ¼¿0ßT…pg…²b]ˆÒJ‡gPý©Ž9ŒþÅ U‰
a@*¿H!4/³°UØÄäüÜÜDÂ¼^®‚¢ü²Ì”T…’ŒT…âÜÄ¢ýŒÔÄœ’ ÊÍ‚Î‘¬â(æN®öˆƒÚ}ß£‡ €:K	á‚é[xœU±JÄ@„YÏJH#b)ca
!Çõ‡§1Š)JrCY“M\LvC²†+®õtí}!`í+œ¥¥/¡•˜;mü›ù†á›ÏGòzCžSÒ‘QÑääz0{ô×öè¤U«Êi©,ÇV&SXÆ Ÿ©’³šUØ+&b#ðl.YæTq) ¤¼fGÎ1"™§B!f5˜~ÚyYlë¡/íýf/¯$¹2SÕÇ–„™©~kèÝ÷fêlã_Gó½7 úìà®YÞº¦9‡š_DÎ®ª‰*P(ž³.†±vÝuíú!´tà‹
=uV×”Dù7ªöÆN³±MYW“Ðû%=¶šûpD~ æ…ióêE‚ëuxœmS=oA•%D"wˆ
[øìP¡Dlœ„$@GH)ÂúnÏ^¸»5»{NREH”ˆ)ÒPPR‰†*Z%?€QØ½³/ÇGw73ûfÞ{3?ö3ßö2íÌâ²ÃZäõ½ÌãËƒü~ec·ÿmõ¤%}"”EÇòx¬\ V¨Œö(X‹+Á¡=fÓ		=8\€ìR›¹Ìº­t„:°ºT]YÒ%m
6tBI ”©ÕˆÆTNºÌ£ QœÐï‚N%Õ%|uuj"èù¦0nýÏ0î©™x¢ñ¶šËÄñR­ŒojÇG–›K&\+ÀÕ3ø±:2¦VÌ«ëó‹³ý$‡A ¿Ö>»2dÀ·OSÃæ²‚>©T3‰*COVÒ´dš—IKåðPáÛz/Ök\ÖîAl¥Ñb*§ÛÓPÖ?eÃ²P4XâSÙ%º åqû~º:—Åƒú”K#ÙÅ}²-mž”ÜfDio¶ôÔÉ<‚{E`lu˜Ý›He;uõh>5³1	¬pA=z~i‹›^RÛÎ¤*ÆVOn_›„|â¼Ãµ;…H±AIò‡¢FÑ¾«W†úŠã¯úY|>ûwç.d*øpî~™Ï•ô6Âb¿~:î¤"8È;Ô%Z|iä5¡~X(â£¹|.ab1Ç€ÇÍÆÑ#‘×?Îá“Æð±ôFà§ùÑªiu3TÝPA‹DìD~– žê¢ôº[.>QF×xo+‹cø²iáêÊéU±â¡fiWp?
ö-4òÄ»ÂR+ò´¹œëíæ(ªÕòmà1wO-RåØƒ{#iBÂŸ>eñˆ³erYÒµT{Í÷Ú“1¼µ>Œw×÷~#‹ â&„,xœ•R=KAä*APô/MP0FD«„ø/—‰b´Ñõîå\½Ý=v7_ÿÀ~… k{ÅÂÎÂÚJ[Eðâ·š};óf`öåÌº>µ.|kH!ñ‰Æ·N
ßó±¸3À{K©¹zŒ¡…ÜTˆ.mP°££	z™zuys*¼!$#š
n^—ÎóÈ
¼ÅÔ·^e#RgˆçeáC:Ð9[ÔÅ´¯s°³¾±UY¯ÕwóÙHjøÊýPbÝ«­Â<LÚ‰%Ä–ý%!ñq
÷¾ÌvŠ%˜\Ý\®B½¢tI“Íž½rc}j›t¡-äq„ q2çvj &ôÈ0‰8‰@Å<âJ¡ôB)¼¦«¡A(*sk¿íó&;@9=HòÏÄ#ÃœßÑ*óTê˜g|¬Fª¸±¥y.¥M×9£('²qæÅ¹4WÅÑm5èÃ¿KLœèO‰ý_’„qâ²fòÙ°Ïz´eÞËåÁWY«äÌƒ=Ý»[›°>.Û‹çO‡ª0xœmTÏkA&±¡AE("þx¢Öš­¡õÔ66š˜6¤ZlQD=Ìî¾$C';qf¶m¤?b/z=
½zOöâÕ‹½yý|³›Ô4kaæËûõ½ïËüxÙ“yïfNuPi®&ÛlevŠ£`ôóöƒV\ž8ý‹™èÉò·Tàbéby†Ë`iR˜…ä8Ù4°yÇ±ç¹,}žæóB6ó“Üþy,`Lg+¶“wy´_:–þÌŽ”ÖDh(ÙÀýGk>nssÙƒïw®¯(NŠN–/ç²<  ÈDså%:LiôÁíB´W.Žå²mÖ!úXþ<>Ì3zU¹~&µ‘¨´r¡÷¸Å‚Q]0Å©#˜×ñ¤I$Ý<%…@ºÅ„ Ã¶0¡ï‡ŠDKIµ¶Ç¸À#Öžl·Yà;°i#Ú=:3#U7)Ôà(üp™åÕï»ÍDˆÀµ	ã,É‡È|¨SÍ23l*Ú0WpÝJªÜ¥Iq×Ðrýã‘ ©|?¨gÀ#¤ç…Ê{ôûšTVh4¢	*»Eô àÌÃF=60YÏ-§0ïœÂ¬QNjTbÍmÿ)ûµêÓ•K7Ë­é\6Zª^Ës•Õêì,«UBzÌ nØhP²Ã¨QÝ®Ðü%Æ+Pø"Dmt,J2IÐí‡‘_HöPv»GJk£BÏ»s Z/V-)Aæcm°$t`5=K“ÓlØÍx–¾Ÿì}&©CŠîpr“²BÙî›Ò0¯¬ŽAÓ´¦6ëõiKÓ´N`l¢èKõFÄªåKëd;'Ñ¿RoÃ‡êÛ¨¹Rœ€El]0Õ]œ¥£wŽ>­|M¿'ïVUê=9_[KŠÚ³TàaíêØvð»ö+óN´Øà
†>xœûexÌ`‚KQjbÊFy.F– WG—ÍzŒ[™%AB
1º
Á©y)
‰y
~a¾©
A@ÁÉÿX¬À6Û²®daT˜ü‘]e2—‚ HR!9?77¨¤`²-—žlZQ~®BIFªBnjJfi®H29¿ 3µX¡$r-—s~iÉæµ\æLœ%ù
Á!.þ¡!›ßñì`Þ/8› bØ50á…ôxœ›r„ñÌAÆéŒ,E©‰)›sËíÀ¬É/ì½d@]^.…àÔ¼…Ä<¿0ßT… ‚ ‡ó=*Ž¬Œ
“\å&G¹íI*$ççæ&u€Òr×“K+ÊÏåå*ÉHUÈMMÉ,ÍU É&çd¦+”äOÎv×È/-áåJªTHIMK,Í)QØ¼ÌÝŽ…³$_!8ÄÅ?4d²`ˆÆf1eŽÍ}¡æ\“Æ{lfMàg ÄW@xí‚™Yxœkå»Ê;Aj£
?#kk°kÈfGÆ­Ì“X%¸’óóJŠòsrR‹&+²*OögµBšÄú™[Ã¦>y[8 ÒÐµà‡œ.xœ;²„qb7ã†tFþâÒ¤âÊâ’Ô\Ý¢ÔâÔ’ÍŒåvè‚“…¼LÐÄty¹‚Àì’ŒT…¼²ÜT¸"=^.ý‚ÉE&¯ä˜üÊaª2š6ú©¹v
j9%Ö)©e™É©jé%Ö“_9n–J-,M-.)VðóE2Q¬KOa²ž³„¬Bf±Bnb^JbI~Q¥¡[Z\ÂË•”
äLNw6\ç’=YÁ™Å/?/ur¡‹Õä­þ¢`×ƒ‹péäÐ _ï	8Ô%;y‚?Ïä“¹8q-ç€cxœ›ØÍø¨‹qC:ãæBÆ»Éßíý'8H$çç•åçä¤éñrÙèLp–˜<ÉaædSÇ[\ÉÍN=ŒHüÉký6³ºô0 ¬† »·‚xœÅWQoÛ6~×¯8äauŠX¶“uÅ¼´@–¨­ÑÄ1l-hQí–N™THÊN°u¿}GŠvì,	‚5ÛX2yw¼ã}çÉ˜ ¤§ýÄÜ”Ø±˜c[¡^ÐcÆµAµÒ8ªM!U¾¼|:‹úÀÜøWø¢¡0¦êw:Ëå2Ìd:•ò2”jÖ1ÙìUE§0ó²ãÜzïQ bÆ®w"ÓŸI>MNabnJÔ¢Ñ°Ð‚Uºýê«•u
4·ëØá„Š½{Ð9èuö»û+É5+û0¼8C?X‰&²V)6¢fî”‰YÍf4‰YÉua§ƒ0þ ;¤%íq4¹°Ï÷ƒIw`§Gß[§;NýË»Ûqk·¿õãVy	'˜s å¡’Ê°)/¹¹mê<FO~ëÇ­âa›Ö3f8åL8R¼ê¾þáõÁ¦%Ûèp&j'g*-øÒÌ”ÌsJo÷Çvw¿3×³n·Û;­ì¹"å‰h…33GW´ØUbÙPk5ûâYÔh ÃœÕ¥\ª93†‹Ù3ºÈ¸fÓ’æMU `†K„¢Ø’ýVkÃsž:)´Xf'Àà5=$”˜˜35ã¤(ovƒeP>kÎŽC8>ÆÑ0†I|4Ž'ð!Gðò¹ÜLìé=:‹v‚¿W6HÚ0^ýfÂÕ> TŸ0k=ù<<M:Éº¢æA’Vª‹d½Z’á0ÃOñ-|IÚI[°9êŠ¥˜´yöæPhž½…?È«€fðk ~Ü*©ºÄ›7‡îÕ˜§àGO²½¸µ¿?z’½¢²7‡îÕØ+ð£§Å_™ª¤øí«±¯ÀždÏ‘BuvœîŽœ7¨œD“ãñ`Î‡0qæ»[`S9Ÿ3‘×PkÌ,µWíA-nKE‚ª$¼€mÒ Èò]Øø=w.-F£àÉ=xð Oàûà|JñÁPœV 9Ç2£uaS`túˆes:oiÁKmô¡öHFñW4;G;M…W5W˜¹ÐÆ‘hÍ&¢-òøPŽkBO˜­l}Ä›¾Ä<”Å£ÔÉ/Õß)´8¹EúîÁ/ëÞ]q×¦´Ûën©}ŠïêÚ-¢höéRCÀ	Ã¸Ð.¨Ô}`ZË”ÓõŸÁ’›ÂéR›Øwäž•%HšTnkÁÊõÞ¦w—aká2–^6 %ËÒæ&$‰;g2ß´^6{A8Eˆ®ÉŸÅ˜¶
­Aô1ú¼Sn¬{)“–¼ê%­ôjÐõaõÛ<ÍÐ!.ÿ9˜wÑù÷¡îÿãF^×EÈ”Í*µ:(u„#TšÜ”¬gŒä’\žJ­©_ug|ë•ËfŸØikwï¦×%ÄRbŠ0—]Ñ¤Á4U%m+æ9¦Æ®R2Eík…àKÛh<	(–©¼ê[ýÝŸj5JóÐ3âßƒ›¿ þÚ§ß®ÕäîŒ¿Za×†Ò–'›ŠpN›Ýx­ž×û¤ûé}?=!®ßÚ¬hßõ´ß—¶«ì["³UÛVð¦Î(&L#LIFºJMå²+…Ý|ãóàQŸ½û}ÞqSyYª,n+7%¼£0Žìý½n­/È†[[7¨çÖ#4Þâ“®0µh(µ
Í™±†ô¦`®ŒP¨¶“¤|Loš’ù_°á¡‚q‡_wò@MYAš´_ßC°û0àMî]÷às~O-öu’Ò·]Œ™mòzÔÒ­kÂ÷&´ŽÇ®œ§¦—vß_7¤Ý@taë˜®ÓÑñŒ©Œþïêæò v!¼«e;jn"³m:BYY¿{«?DiCíR¨ëúfû”èÓÑÙè4ò]+Y¼fóŠœÁß_Ø¶ØŠGL™U¶³MÚÔ))
”Ó¹þg2ræSŠxœTAkA&HL\“(¡1‘ªÄÔÆ
!i	%…à¡q1—ÉæÅ,Ýì®3›ÐP%*xWæè­—^¼HožÄ£ÿÁ£ÿ„8»³Ólš¶
»Ì¼7ßûÞ¼ï½ÝCx—ýMãåÐ¤øåöÕX¢¶ùøIC¯mÄ¾^X ‡šÜòt¼¬ð|;®óƒøFöy;ßÎ»tÇÕJ°¬Ã+ã‚´øÛ8HõÆ.V+Á"1H+‚ìD`üEbHËÇðƒ‹•Ix0œÁ€Ø]0vÁs@Ý˜ E†tD<Ó±A<l2@æsàRÄë@õÑêÎA}~Òqh¼xšç¿Z}„žé2Slùa²œjôÀ'ú£ú3þæÒâL;ð„Eä|Cz6u£Æ.°¡a v™Èý‚Ð®…Œ#©FÄ¢d)ÛË­ ×µB³©Mõ_ÏÁ\ƒ´TAß’Ö”àËE¥jÍêœ=_Óbq¥wLAŽâÍŒñ8I^[j*%…L5_¦»ªþ)½´:W$õ¹:C[Ôb2©hY:ƒ š©ˆ?“7jÚ~h¥‰‘°Œ™Òdz¤‹-á/CëX“ã6° æ+m¼¼—A‘x(5líhÄ²:Îž¨ã÷å[üJ&%Þ{“¾Öz]ní‡	±+LM˜+Êÿ”šB}Ï°†Ì!D.Bï+èT-mÇ®ž¤¨ñAêˆ”ØƒmÛŸ_:3×ÿÅ?8/Í²f8æÃ×ÎKÿïðâÃ~;¿µ•œÏ\_S¿5ÑÿÅ)ó Fécú&ÿ–~_mÕ¹=œcÕ¤Yïtº>göcÌiÇáš‡š#xœ­VAoE–\R™ŠöPP@z9Ð¦’íØ€Z‘¤(
Uê4¤NŠTRPÇ»Ïö(»3ËÌØn$„Ó"îHs 		®\9pEâNœÊ;ofmïÚuªªª%[»3óÞûÞ÷½÷ÆÿýQø÷§ÂÏíBQ¡î•¶¹6¨NâBmrÉþóÁ++P.Î@côÊˆ^Œ@‡Põ˜áRçV—’5{Ï[ùáSÏ­j¯¿ì¾— Êå@âÑµ‹‘YñOÛf¾„r ã%{k}~ÒFŒmDÞæÆKOÚ(‚À¼Ù(/=i$&‰Rlîid“Àx)osÖÛp¤ðî·õ_ƒýYcn2âÇL„À5t5†`$ŒH*AWdÏRç&Xžg @¢Ú.„Wíã¿³{¨š‡Ðâ…ØjQ.Ú~ƒ…1t˜bbXò²úé¦„¶ctûô¢ð‹.WÚãíKgòÊü²ýöÙ)íƒ.1*ÌDæu<ZvHÌiŒ¬þëJµZkÂ"¯`¥·ÇœL»½LAµV4R¾2GÓ%C¤©z’HaÚã†ø'ªzäËéË´–g†„ësÓñF©M>",E iMÍÌ4s5L¹Ç¢.êRŽgÝ™"éçŠÈáS2Šœ"m!i3¯¦>@:~y}ä¥Ÿ&‰°åM`ó>p…@ÀâÖf}óÎåÌM“W£qÕøèø»Ú£ãï½æùÎršO5 ×|û/@ïLÄÆ³ªŠ=x~µ!N¥3¡7^€Òžëütñý59„Òþê0ÑFØE¥)Õ‡’ÝvveŸlK­aÏäeÚÇ!¨²ïÎP=Åvff/X=FLôÕK!–!§`KÓ¨Òna«…qu™( Ž!B5€'í;?.ìH7‘\Näiww;o_Û{hûlÞïÙÅ»+÷ö¨6³ía™V©L+yÑ)ºrWR„ÌV7fÓÙ¡˜0Tnn7 Mi@¢0H|ÞRT(àuûçÝ•Û3ÕfšôÉQ(b‘B}Gôæ¼Ÿ·7?yÿLþÖqO]NNãù§ôŒ-Þœ¿6Š:Y²,­3Óa¾—	NKª˜òl¥“-Çúë§µáüúSÇ­ýûàá…á„ayý¥wËWíWË$Ü~Û{õ…Wü¥hëŸ¿9˜1ˆ†S‚ÐN «¯ÕV—èwÜÁ¹š;å’Å†›kTP:!×¬ùBØ	ó,d¾tÇu²î¢”©0¢jM*‚w9l$ßÃÿ/Ç>ßzgK„<`†¦Lˆ]©-Ö¨(—CÕçàîêµÕ¥÷ì_ìûmøê9*{¼Ïâ„BÁ:p²îþ5S>åV‡ xœ…TÍkAgsh±Hñú”66š”D[Åk·%©K©1"E'›×féfw;3)
íU/"s±ÿµ’›‡B.‚)þìÉ‹‚7ÎÎæc“VÜËÎ{óû½ß{Ìï·ÚÏ÷Úž­õs½jQ¬qmkºiˆ?wsggHö€Þ¸y2sÐBMê¦ØÕK	®áæ¨ÍÓê]åiØ‚„Ê%>êc£Eù¦‡
¥NM‡–Kìë##>Ræ Ò?5‘š.qvTÔg¿n7
Ó­TˆS‹A•a	¸ÍPdH7·\\g°€C*È<bb<ŠXñx¬ŒvIb¡ê' E—Jð`ŸB_ø7¼ö}N‹LÊ+–Ë<4-ydÀ¥Ï¬RŠWâª/”\ü¸7¼m¬(œ‘YÈ,CÑâ²³6˜!÷;<Üy:ÜÙË	bÄ}#ðÌå}¶YFsXÕ4K,œr•Ð’ŒdÛ vU¸e©¤*\¼š¿"¶Íë™XhÔÒ>%¾C=KJBq‰¶æ¡›JDÖÚN)‹N&SE³Æq<‘ÇÀ¥L%»ýJpÝ<4
Ôª¯CØì˜¢,ÕOYD¨:²[‹q¤r9V¨[	‡ÂöÔD={q¸«	¥
‹·B7¦ûÃ[ûÂ=ÙµÜbß ±œˆ¤1…ãËEð±R}ñ2{v ¨Ô¤H8Ö>çÖ5­,>,>¤üßÔ¹GÔâ™g¦]eÖB>hTüZZˆ\WóíK][Î5Œ¹¡0W»Ã$$ÈW†‡3È9öfkB±®‰üÚ¤¢ÅŽ&Óm»ƒ&Ý*<&×¿Y‹=·Ê‰lÖg>OÜîo?$Lç[ÒLoóI[Ë]>M‚Aó2iïjí]î“ÖBÕóóbo1ÝÛØLe»ùôÐ‘M­Õóß´Ú›B!òÂ ä[å„†Ixœ{*±^t‚WQjq™n^~IfÚFy>F¾ ×à°]?ÿO·]ŸÍæŒ[™MJtsòÓbt‚SóRüÂ|S‚R‹S‹ÊK2óóü@J2“ÁœÉ¬r 11 ­1iA
6)©e™É©v
Ñ“9E'eµ’Ài†	Û/Ü’Æì7—rò3âVÑÉÈä„É÷¹šøòKK
JK2ó²ŠJÖqé¨ »RAèDý¼²ÜT _ó!
/rKL6ãÑ {„o|ë„…0xœû6ƒ±a
ã†tF®¢Ôâ2Ý¼ü’Ì´Í9ŒÕvHüÉoìý<\Ýœüt]^.…àÔ¼¿0ßT… ÔâÔ¢²Ä’Ìü<?ªÌd¤¸ 1=U¡(µ°4µ¸DgòDG&…ÉÙgí°q”œ|Ùñƒ.ƒ&ŸpRäçå*(Ê/ËLI-V(ÉHUØüÃI€Ñ	¯ÕÅ%E¥É%¥E©
¹‰•
I©¼@;Ü¼Ô…Ì<…ü¼T…ü4…Éæ.–¼\ ‰EÅ@¹¤J…É.vœÁ¤T…ÉÇ]Nonw_ÊˆÛ†žUÈÚàéÁ—_ZRPZ²)«¨"Ì3T-õSRËôóÊrStó!ªö{ªn–÷g …Ü–së!•Cxœ]PÝJAÆBÓ©LðTZ*m—¦‘Õ^H]ÄfA°ëz´¡u7gG+*¢ž ¨Ûz„ð²gz‰Þ£Ùu…èbæüÌ7ßwÎ÷˜þJ=¥#-4ÜÅD(¢©{jå _
}Ž&m=šŸŠhx= ‹jøU¤#›)YåóÂÜJ¬AuBÄCxV¼D6V´€ÉtÚmÃn u¡ëb¸C‡)3&Rcóâ|ìGœÆ&Ë¶¨Ë‘AÅäÔ±½««J2T_* <98´Ù¤¡‹¬gøÈ]¼ï±iEÃË0ñÿ[6ümyIÊ&E«!g³¹AmQÅIF‡Úb‹dï¡v†>‚9–%¥hËvº	ô«+çoþ%»#T} ¨W’‹Ú-O2UuW=ÎBro#¹g„žq:Šž1;r-RÐTRØß'zžK;yÿ†ôFf|WsÒb=ÏþØ.žÉTbèðÀ¨"ÔÄw,I¼˜¿´Ø‰‰·øòB $µ;R»!ŠŒE·=ëƒÞZbÜýiK³(î(‹9xœU’;KAÇ9ŸÐF±°qDÔILÆøhŽó±[/c\8÷toã~„mTí-®³²²ÁO ½¥½»¹;c¶8æö?ûŸßìì÷£ñù`<9FG‰çsã|6ŒåOÎìB„dW ¬@(Í½G9ãóO2ž_T¿dfÄY®£‘ŠÈÂ$	ümI#?*ŸóoY+t´Ýý}ÂÊ@=¨zXáBTÌå`«ˆQ[ò#"¨Ëºb~÷bo‹¼-öl[X¡ž@ó¶–”I¯¾ÒéÌÄi
S	Ød<Ê´N°†§cºJ:“þKµðÀ!6ÊšÙ—ÓzÄ2õQ€»²"f‚Pæiìªj‹‰fÀ@n-Èƒåþ‹³ò§Š^â¿»
/,§`CWPå¸ë8ŠV˜«Ä†&¨{€»ûßä8@FXÑ'&
'
€²Šnâ+…µBi¬a³C…®ë¡Ð×ÿU»Ê|Õ®ý—eÞÙVŸÙxq¸›7VR3Ù>ƒ[sh0¸^ÞÜ? K±G„ÿa¾Ñ‰;ë²}AOVÞ[ÅÖ‰ä”<\Ÿöç6J†³¹ÞòàÝJ¶ïxœåYYs¹~ç¯èÒVE”ÃKÒ:[QÉ®Ò®é¬j­£D%qÊ³à†œhPŒŽl’ßžî0‡(ÒŽÅø%*Kä€>¿¾àÝhlg€éç:³¹<u·ýb¹˜†…“ÒÎuqŸÞŸ~<àç_á“‘æÖ.†ÃûûûA¢ã©Ö7]Ì†6™½J5œÛE>ô˜ÞŸ¤’…°DïŽÄýðqò&ö1—f.¥5pg”Xš¹¶pì©Ê&(i‡o+‘á°(òèpx¸?<†•3¡J‘Áù_Î¤K]±tKîÝ¡f¥˜á»±šå™™ÓëÎàúgØÁMã¨uyöãììãoÍj‡W¥ÿðLv˜bÿ¥?Lå¼“i¦$½°Ô…Ó,Ïì#[¦é9ýû¥?LÅ;kZÎÌ ‘ÓL(†ÂëÑøá°¹MlÍ`¦J^E<Ïî¤ƒÊ¬ÐiŠæý±?:.Ìl4íhm[’f"ÕÌ`8¹…¨+n;™;@…·»[u¤‘™Š2·êb!¬ÍÔl‹,’ÌˆiŽáø¸œK%l¦Ug æ­µ¿—Æfió*tEB/ÀÊü£!—©……(f™­òÇ½Î@$oÕg'§çðÓÅùõøü&×'W×øy|5†WÛb3¡˜=9ïtª4Q&R%@Q±^,„B£ÊB¹üÈ»,–îðäoç—“Ó	²Y¢	ÓN”ž- ZQzÇnû[øõ£~¼HÞ{¢oáŸÈ,†êù×<óÃçÚi–Ë7Ç‰°"êÓww<…æ«nä££€_šfÐx³ù<Ÿu§nøÔg$vÒº‰“sÓ	‘$…4æÍ1Æ4F€;§!<n89Íu|ƒ_ïÀôÑb
”1ÖãHLá¸zÞ@Ä"˜¥}sì>£~æ„u…¾b=J3çôwãÉOW§—×§çÎïïuv.›ð€&)ÕCIJˆœ
R@¿ËBße‰äÃ¨;Æ»‰~7`š×øªÂÎRb!­, 3@§©$>2	æÏqCLëž{W>Á†Äx´
Þ)Zf)cŒj™ 8M™3‹NšrIµÃ8ü;c˜^%µÛ{ŸÙ9x<*O0ÖKNf.òœ9IÅ™‚8ÄZÙBç¹,<[G¦i¯DK£¢n|kƒO$°@t`Ý…L%œ–ÔŒ‰4MÍvYdÊJ4o®q­¹£‘gXMðËÈKið9´›X±åÉ¿ìZŠéËËN+B{°ÄÁÕ¾ï4³iýÄ NIVÞBŒxÀuµZ;¤(¾çOi$KAAô[äi¢qjÉTªkÐbžb]^S ë£~¢HÈ2Þˆ^·`F‚ÌJˆ8FË‚“ÜŠLöI@„siY „àùrá¾‚Àz[f…L\P4ä;i7h˜Ÿ!š9£5øD¯º'·”Œè³Fj@ÛM€ŽÎ+NZèÅŠB”ËVÏW90Ðñ¾©6®ÐiXî)ðý[Æ¾õÙd'–²X!ELzÈãÿ‘ëm†°Å %IîçY<'\°ê¨¥Jpcò¿61YaªKEP'_‘­˜ø}‘Y
H^s–FÖÆjèLê`ZÑ%ærn@Bàa°i¬Öï.þ|ýÑUšÍ =dvCÂúŒá6•…C>×  ƒ[ž5ÿŠ~!úiÈ«ìè,+”PS2¡•ŒŸL-K»o¾j;”¬
åPC.f§Ôj£Öe79µ¿HëÕ ÀÈx*Ùôñ¹z}<lŒ‚g”\	_í|¶=8çOB5¢¡³å}d^¹‡2+úeAÜ]'ðˆâ®ÝØ€ Jsß°8JÚSêAiH*Ì5h¸=­œT4Rg’º³ÁÅZ5G¬}ºÌJNô#%a[,(X?ÏÄU*ÂªŠ2«¯t¢ÇrðâgœH»¹ë'1º*êÿ™}—ó….9i[^¤––d¡LŠÙ¾K(²w÷ª¹¨YÚ.¢Ü<P–TÚvÈÎ(m¨;‹Fk‚ùHxÇö||‹m™¥ó©@›&<˜En2#jÓ-õÔdûŒÛ«:q7#}D$JC á¬æi¿Žb¯ÉIÝî‘GkIð	5¬®öÖy‚>¹ÙÄiÃÉä{ÍöTÒê6ƒ&‰+ZÄ§BQ£·\×Ró[¹ÆVê#qbíxßúN2gc›0Òõ‘~Ë4íÎ¡¡“{Ðš#{O‡Ï¬™S½Ò'uö »Rè°Ï`5B+€>µÍ\Üa`HŒ‘ÓöÇÐ}.*;4Ô†=˜ƒÎª=ú…ðí|(\8“Ó…\+S<“%‘Ý¦äNrr	ý÷Æ¾¶`›6kpå„öEAÖÝ*xcŸÓP¦¢ýÄÔíÜP]“p’ 9\ž íÞ{Ç„Mœ2P[ù€“X¥^+J(²ï37Ï‰åÃc±¡M¸N¨ôðw^zláŒ¬úšæ”íDå§Ò†“2kdž¶¹Ô—=xî†¢æVå‚n3»k_Ž\Ÿ‚£øWY’·Šµ}zCèišw"áê£!«ËÐ+ršÿ¡d4V?žœ]~‡»2Wn2éSa4ßí¾ßºÓ¿þ~t¸Å.7ÊÜåJ³„þ~gpz	´	‡¼~ÉC03Í‰X§+wÊÞw‹šúú¤šú‰ð¦¾]½8QFšÈ¸ö—ŽD«
™œàÂþK4lMç.[óX‹À#c£4í+ƒð —EAY°5Æ’“[Åÿ%hÏEGßVÑÖœÇ¡è†=JÊNÍ:†¬Û‰¡6Å˜¦dºíym(À“b“Õ·²†›„F#t
Ýê>`Ï¥UžÃ½	øâeHˆ¡9ÅPW6bý›lèb™¤¢bþLˆ|S°|Æ:/=‘|5=ìã!*†Z"êk·.›/¶èlÛ+Ë}­K·ä‡HýŒ?´Sn“&þ?k]-ºEuäæ¬–Ä@ç?ÊçhJæa„¼:xœ­T=oAUNœC¢Š(†‚@¢óC@ÂA‘LbÀ!ÊYáÚ»Û³wO»{NÌ‡®§]ÿÑ!J
zZþ =?€ÙóGœÄ@
,ÙëÝÙy3ïÍì¼[øzñíbYÎ4{A?^:?SvëÛÍVs¯ñéÖÌç3#S%mð*àRÂöã‡F¯0mŠn—ðÐIu*9.*u^/Áò‘‹^´wBÚcÝ€'^Å«HBáBË§y¿´•)ÝÎ•î•Ý¡WÞœ½¶¨4Ñ©£B0˜¿™µóo³NÖ8Hh iÃ»hƒª@²D3Á¡æU,§åZ$Ž}q šøWkËëV¬ï~«õÒrž›"¤VëuO¶ðý—ÐïŸüÍKã¨ÄZ=XÅÏÆ f R_õ•¦]èœö¨ŸR>fzKŽ	4	R iu(t…Ò(o@¹>TCd	•¤ ŠÂ$1-”Hƒ€*¥qÜŸ|}¸>5Fb
‚TJ÷qH¤hc]Õ¬Ù©²CG„ÅSØVHv?>‰a‹hIRò™†&vÕ TAwP=.¸—Uz"FìSIÚÔdŒf˜"¼ÐÙ÷%ÓW-j@–A1P´0Þì­4"ö2F5½ô¨Q³‰"®ƒÀ³ž>®Æ¸*S„AE¿ ¦ÄFŽ«ö!É¿pÌŽgö¿	þƒ_vJ‚æŸˆ4ì§Õ0u‡jQýÑ €aÛ™ñƒ0&†¡>êóâò#›âÓÃ!¤ŒxTJÌ6À7Ë}¦hþlîÂš´a8~,g×…5k—j‚zuÕçAG
.p4zÐdèì6òdîfÃ5Í‡$M„ÔFËHÈ.1iyQ“›MŒsÎ6»ç
ë†ÿQ2³õ'²ùÏ¹÷«€)P«:ÀQù‡ò•™ü{yoc‡˜¾ÂÙÆ"…*¼`ì$Šñ¤òÍùÐ~€3©/•tñ«”‚;mRCþcþòxòçeËÎ£s+gÑß(ìår‡Þ>xœ½U=E–…t…/Ž¢THéÅÒ]râÖ±‰ ¸/åâsîL9Å$P$fwf½ƒfgV3³vE²¢PA15ü Ä‡h(©ø¤  FÔðÎÎ}V%JÁ¶<ž÷yŸçýxö×ok_SûnX;gˆä–?`‘PÃÕÆ{'îâõw7Î@Ô¨À€I
ïx›ÁÂíï¯ÿ>={°s•å{°.ì6e#ž°õ¡Ý†O¢H!Ò÷üUÚ¢´QªtNì®¿œæ¶º‰Wœ9¸Wå~öƒ`ÙA™iF(‰E•åèÂ4G1—DO|DìþÚÿ‘ÝeVs6blÆ‚ØÁ‰6ð•(ÈAªUD†¿ƒHüI¡ÐjÄiˆmÔ%¶4 ÒY¹ Q9¥îËî†kw¯¸¬{»Ù»_°Ä2
'÷=b$š–+	[‘ûªûªûçfóµ1§6ÛmvÚíµf£žj’³Ýf¬4eÚ}zøpuºŠ2÷äðó•öý6>îß÷¶Ö‘*˜26cY1 Q¥†˜19ãGÝ“þQˆê`ÔÞÛ¹24K˜´sª`šTÔPN!XÅ½LfLZ
1™ƒ¼åSoî/å’RkàÒ—n¨™qôû!öš'°ö)ábÎº´N…Š‰€b	ô41È/æ¶Qïc'˜« ã;$A*”@,c•öÍE2'­_,X£.•õkn-~[µ¦Œl€á§ f\N‡€M.S’ØRcnßÐ¥ˆK[°JÐøÔ/bVì%5i5¦^h"ñÉQl{ó%Ô¾ˆÐgèœþ?Býb=E½µsµpö/8qç’Û¼±ê {þòlÃˆ Q|
_‚Ó)Æ5[wÝƒßjÚ½Þ{ã´+÷qïÒ:Á*áºï›‰L2­¤Â%ë0¼Õ¨cÂ=ÿI©ûûà±+z×ÞÜAÿûÌ(YáæLæüñ‚ñ¸Ÿ{ï¬Í!üµØ<bÌn3£‚Ûiâitä9Ï|ÎÓ›~á*©`c.:”6ÁŽ‚¹ú&MN‹…{ )g‚š9'.qH‘OBÍ‚¾¥äV*v±gWŸûiÅìX#r•ÿ€¸LSœLe,E÷oÁÀê²o~·*æ¸«“9·ÊHÞ‚ §HŸ,`¨Ò`Ð>yÊ“Jr%*«^G(Œq+7o¹ŸîÈsƒ³/®[Ç-¾	9þ¢öåVp\¶¦xœ½XmoÛ6þ®_qÈ€%ébYŽû‚yi·QWcÄ^Ñ­êZ¢$®2©’”¯í~ûŽ¤ä—Ä24¨È÷~÷ð˜Ãè ´çãÓ|&L´|>£-E8ÓìÚû•Î…ìÁ‡×ƒ÷aˆ}ÿ¥k]öÚíÅbá'"ž
ñÉ2kë${Ò¦¼ëYÑ®¬¼ß)§’h#ï\Ä/q?¼¿…±^Tå”jsÅI©r¡á¬–ÞHV©Ï©n¿X™çD£ÙA·Ýí´OƒÓnC¹ ¼"E†ï.hýÒÆ¢’1u$·ö–ð¬"®…<+˜ÊÍ²çOÞÀn
£Ö¸?L…pÐÁ¿µº»ƒÖ_µ¢+µõ½+åœÓ”q
JÌ(”Bj2eÓKPºJÓÔôï÷~¬”:aÓ*S~B§Œp[O‚gOŸu7w`˜µò3^Y:‘qÎæÔ•K&Ešbxƒ_[Ái{¦² :]ßÐÊRF!âG~~¢ ÿ¢#òÙóiáŠªY=|ÐD*ª!¡)©
©3¢5ãÙªH˜"Ó[rYæ”Í÷|žoÑþ®”f)‹-ŽHb@Ók|(hªaFdÆ8^,=Ÿ$P<h.úƒ!¼ºNÂáÆ“þÕdoÂ«=”š±éÛþExàmÁD-Sž8L7«¯ÄlFxr’êJrüR˜!'eüçðr4Œ±£U‰±L½(¡ÐÒ+8KèœÅô|ˆZQ‹‹¨•PR"†¯¨3ùèÁÖÇî¬œ––ÎvÓ%Qêù™˜S¹LÓ¨e¢V,*®_XNûÈ;E’JQËWí$£G$ÖÏÏð¥á4h^w9—%Ñ7ŒÔšÊš½„]¤¢°!bŠ'DÊ\äÏÃñ««Áh2¸ºà¿tN]ò\À!CÈà'ØXû•¬S»”‚ù+¥˜³„*Ëìrýì[‘\Yå®$’Ì(Lá6gÔÒ©‹s$Æ†V+>¢×=hãKÛCpÜH¼ä ª8¦JÓuA)N€J‰öÇ"¡ Ð¹`ŠZ&ãë¥uÓÙhäaÁœÀ:òü«1<ö†»€‡ôScPãs©A˜ã'·ÎÆ‚k)Šw©Ù€@+„/¡bAS\û„14atA‘6¾¤UQ,MPË‚È²ÒW]%Jsžc ?Æˆ¸ DÒdŸ!¢*’M+Ú‚IŽù›bôÏS
,ã–Z¶U•ômeCÊ(Z„LŸñ¬™ÂCY&C'^£°×„•Ä3è²}Öéb.]¶¡ëD]6ETj¹Ò‡—T/(Fe„½JÕŽœ­9–µVú1­…”VÈÞ¨¯:Ê-Q¦
î·?„/Lmß+Œí0®<»¾ý VÇõn ¼qZÄt¤õœ#Î0UÒÏ½x5›b5bmFÉø¿ir.	– Ù¬fœÑ„ã%z8]ÇXS~•j*±ƒ@*ÅlONIÂÔ#ŠªÑÊD¾sRTÔ‚“;OoÙ¹ÊSíÞÈTåbŽ‘:ê}lâüÁ±_µd±©¦•2Ó6;
üvÓKð·™ˆL“r4}C^Óó¸o†½·]íÿKìÝB8l¬VÖÇoáZ{x){hàT\ÞŽzÇ¿yˆ”8¯Üùô½Éï)-oò­‡¿í¥‚Ù	qòÍƒë ¨iWTQ9§ÉšÒ¯fð¡èžÔÎ'|êý·<]3ž:F¥‰DNñQ¤6ØÇ†ˆ ÿÒP!4Äé\ËìnÉ\ÃÂM|£ñî’÷xK^,—¥{|eÉwZéOB3@g#Ù»¡àöQ;ÀÍ¶Ü¿éy3îÂùBÈ:Á}`7˜èžbb± šCFçD™ˆ‰¹æÜ€À‡öF¤êI°ö|`Ž“™*	^.+))×8L+µt3ÞªÏíÁ·‚ :·ð ª,_i1Wø¾1z6c½Ue®„¢/‘å‡­àñat4­ðç/A÷0Â	,úfï‡fƒÉnÓ;Ù§~×Òß{93&ÑXUÝ¾h@ÏiE\qújýF^0~‚­ûÅÆ”içqÓTwïYA‰iÜ{n½ÙLnß°0tö54ÿqÁ™¾"X<&”™ó*SÈóÿ 2vÜRç¾‡Àexœ•VKoEÖB„,+D%‚(”aÇÂcÏ&!Û˜øìø±IŒsA9ôÎôî¶˜íu÷ì®i¯Üš37Ž€‚8pË‘À!þˆêžÇÎîxl°lyfºëë¯¾ztýöcíûj?µkSŠp¦Ùçôy¿ÖßÈßâ>zøAöÎÌ4 œPîÃñÓ#
'ÙÂ¶èv	÷—@RIŽÿTè8¾ÿË03^_¡Ý˜ôšO{Ì£óm½Ÿ:ŽOI¾Çf(üàÁÂfhVÙ¹«ý(õ¡A=*û’iê˜OŽ'"~[ÛƒÐ˜CÅ»[oì"‰5;£óŽA?ˆ§í1øŸ	žá}3H†SO†D—8iMen–øØe1…-!=w¶—Œtöÿf¦C)zÌ§
t‡fŠÿ±óxÞ†Æë‰œ¨„Dn¸C«°‚/+¼×¥î"n]pTäyT)`:žw	¨”Bâq>ð²Ï—|[óãožÌN‚_ûøÆðXÀNòJ4…Í–96ã¼šh¹ßEõ’áÊ-aOp-EàVÕA[àBƒ?B!üÑf	„&.|¦€àoê-ˆ–¥?Dþ­(ÎŒ>a@5ãm{F–{	€©$&JË†P"©_ÅHD_ “ ¤|&©\*¨$öy!¨À'¦ ‰ò'24)°6HXËò:óbÓ&´E‚h‰ªÎàºõ&ÜaËty	v÷€° ’Ž0ˆ‹ñ‹Ç5†±›»bŠÉF­‘¥ìs|Ôð(É@Ø¢ºOQ”GX!TUpdžÙ°xèA3AJB—‹?W?/ÇàLZ4Sß'qsÈj#˜ìÎC—ÒæRYH«c}¤cî¢ÕïÍ:ÈŸ{ï¼}q#Ò1Ù»9,Š†´¶ÍB*°õ!a£Bê1|LJ›GÝ&æ$&XQ#ãxÊ3±ïˆ>tMÕhÖM-»ÔgÄø†~5ÄÃÄ^S¾‘ÊÊÄ'š$-)ºÁM˜	“’˜6¢eØ„	"jÜ4Ésòõ÷'ç±JýœˆV0
Y!Zÿ7XµÈ4ª+¦¥ÛdßÄBîÃ)ÇrÕ’y&‰rpS.UY^.Ys<>cîšåÈwš dµ›»X}˜òÃ¼á\–J¿@¹\™øiÁddý/m¯Ž]s˜î×J¢Ið«{¾ð0¬½<pÝ¸~¸:õ„**{Ô{oÜ:^ƒë8P<Ñi%'Ú17¯] ¿8Þ›uîÝÔHi"µc;±ƒò©ÜruîÄ,akÞ2‹°k'ÄŽoÜ{cXy®æH³)/ÔChvà¾7äÉ³P‹	V«m»z.-«â_ÃëU³ê~ó¢Ù¢Ôcì×rƒÁ‡rƒ¬ª¶´}§3ìô…ô¡îV•a×a±Ö'{{w“¸Y·×¢$¬˜üãm¨êþ4©ùJ:+a™7ö­WÀ	¶ÀàØczU$%åïäf¤ÎÌìT¨/{õdhÉ)´gTDíNüÅÉÏ×•ŠÊ£.¬ÆÏNòé¶0Y™‰ÐäéÌôm0àÜ=Ù<‰;ëÿmg)Iq:‹_:…øïÓ¯^·÷îwP>_"Ü€ãÚ­ø»û¯Å¿>ýú_›T(à(ƒº#xœQÝjÔ@f‘­XñJ¡¥p¬¥þ`R¡ ÛÂ¢i]Øn—MÁñb69éÌ„™é¶{ÕW°ä| ¯D|ßDðÆðd“/½›óýÍùù¹ñûîçõÛù)wømóAçNŽqÈü÷ó¿:?nµüõæý10¦èŒÀBTã°@•j¶ÀDd"×Z9£¥DÃü¡N(…%æd]‚P0Š›e©ºÐ¦—×Ýõ{ÐOq!<€'“xx2Ž>±lZþênìÄsa!ÑyÎU
BJÐJ.áB›3zµ½”Ö¶ÙX;à$hÔ¶ñÄhkWDatzž8Èx.¤@Ëv/°…ÏX6l› ¯!çK˜! ps4ÀUùuíÑèê	j‘#Ì¤NÎ vÀc¼|»TìVÜsõâÉ*:z[Í<[^0™xÌWÐ¿;>xF¥‚çhž óEº¿"¼`ÁKïZahy7
ÂÃ«&#ƒþáp6!éy^&$î×pA8Tpe­{	?Ž'£°j†¦>B4ÝÿŸ3XÝÓÝÜSêSÈÈQ…4.âë•Ðüå^oûß+——½‡å—ÞÓŽ÷ïÁÔEåƒ½^xœ;+=[`‚krNjbÑFeFNgWÇ ]·ðÍ>Œ;™!D8btœAœÉþlbB©
™Å%ùE•
%‰I9©1jz“óXU ª''òŠO^ÍÊ3ù«™mqj^J±BIFªByJ²B—_¤Pš—YXšª V­V®˜\’Y–X‚049?771/erÛuÑ`%ÿ€O¿`%.½â.¿ü¼ÔÉý<±¬pçð£9g²¯&Ü-Œ\ Ê]KÐìƒ~xœ{/°D`‚krNjbÑFuFVgWÇ ÍŒ{™!‚“ùY%œA,…’ŒT…´Ì¢ÜòÄ¢T…Ää’Ì²Ä’Ìü<…ŒÌâ’ü¢J…´ü"…D…ôÌ²Ô<…àÔÄôÄ’T…”Ô²ÌäÔ5½É…¬7Ïff¬/.àŠÑ-VˆÑ’‰e©VV
Å©É™i™©Å@‹KÀ¶%çç•åçä¤)g$æä(€”‚eKJŠ2“JK@Fsé{((¹F8úø¸+qéÍF¸Ø-\ÁáV¨[EAŽI£8wò%v3¨·¹8Rù}`÷á‚—HxœÛ&øš‚{I~qFfRâFYF¾ÿ`O'Ç]gWÇ ÍÁŒ[™aòeåŒbt‚R‹SKJ2Rœ=S’ó‹ŠR“K“rRR‹Šò‹ŠB¥y@ù
U©Eù“kYe´4óÊrS fMvæPb‰N>Îê©UHÎIM,ÂilQjaijqÉdw¶¹“³Ù”»a²4‡*;ÂÊb hèRÔààtxœëïgÜÐÃ¸!‘½$¿8#3)qr®ƒÜæÆr;dÉ
^H|UÞ ÔâÔ…’ŒT… gÏÉDy“óKó€"ù
U©Eù“8¬ãSÏ+ËMU€êR˜œç Ç¨>y¯ãsÁ¨PrNjbÔ N^®¢ÔÂÒÔâ’ÉwœÎN~á&2ùûä7¡Éï\b9íbÛ5y¦«²é›9ÝÚÁL&ìP€¿exœ…”Ï‹Ó@Ç)R…°RüÅúXDd%=yq©kÙ-ìnCSÄC.Óä5˜ÌŒ3“®{ê¿ äâÕ«·²þ[þ:“44n‹zh;ß÷yo¾yïýØÿõàëã$%ý2¹<ðZwÃ~ï¸7îGþIÿ4¸zßúyë°©È‡p&.4˜BX€dyJytð²÷YC)£|*TF¼8lCgÅ(£é¨î<YJÌi‚êzØoÛr¼èzÝðö‡Áx0<÷½®–Þ¹€¡tQº:ìê§ýÕé1šmø…-1¦SC]žÎ'‘‹,#<Ñe® ðê
æÈÑÂ/¹®²ŽBxím¹SÁ˜¸ <¢c@3É0Cn0ù‡ßÒÅ²³·˜ëÈ7˜ITÄä
#_b44žEq¾¶¢!§¦ÚÐX{ŽÄDù’¤Ž“K¸þl ÂE.¥P®¶Ó:TÃ`mTIÕQ&òI’”n¤–Î$hÕáYo4ÞàÉ˜Ö-–íû‹@p4°¥œÝëÆ‰ª£c¡Æ†L˜ýQJiGNr&E{—™ÐÆÏ ¸jï¾Ù¨á¤T85”8Æè^£Q— 6ŠU€íW8Ü(Û¨¶CœÔ6…â„muuÓÖÿ K¦mp˜PNì·Êoo54þ•kÔ«YÞ:Çum¾¼ê¿âwûÑÞzH%RE²:ÂsÃV|¿ýt÷Õ’‘K+¢Õ^(þtž!"DÓŸgÍ½ oW“ñÎnˆrþ3a;¼9µöCÖ¸’ßî=ßi‚l–‡¯Ü8ÿxÖ¯v@`Ä´,×%Žü\£íŠœôþ.…¿ëƒnxœÛ!ú˜w‚’DrN~iŠnp°‹nANizfžnYjQqf~ÞF5aFVgÿP—Í¶Œ{™Uq©SˆÑUÎÈ//Vðw˜ìÈ©5ÙˆU]¬:¤<ª>¦ar,«œ!\‡BpjbzbIªT•Fra±ÌèÌ¼´ü¢ÜÄ®M¬¦¦%©`=µpeùi
 ™â‚ÔäÌ´Ìd…¼²ÜT…”Ô²ÌäÔ5½ÉÕl²ZÊÁb¨eøœWÊå ƒcNé€<xœ{Ì»•w‚ÒFEFÖ ŸPwÏÍAŒ{™ÅrJÓ3ótËR‹Š3óóbt‚3òË‹'›°NžÈªkP”_–™’Z¬P’‘ª‘šS ™—–_”›XRd%‚SÓKR ¦Å¨éM~Ïj9Y‡-ròD¶  £*§íJã9xœ}”ÏkAÇ	x@z*z{ôÐžÖ€ U›.i“€µ%É¥ÇÉìËftvg˜™lí)‚ âeþï‚ "ØÁÁ“þ­3»édÓ>–Ýyï3oÞ{ßýó±ò×V>‹Êµ1rùåMeæ+{«Ù{àÔª Ð‹CfŒÐGƒ ù$fé††Ü‹¥#¡b˜Hí÷æqÁø´óíá¾‹°ˆ]t·Z½Û¨K{ÜÞ´?[¡ÝÛ]©=°'}€.vÞ7–’´DÊFŒ‚žáôdP‘$$´‡†zÄ2û¯uÏ~hÞžâ+ƒ©öØZÕí˜Ð}¢È¿¥{\^#Á¹8diD!Î%’c‚©ÁhÿØ#dN`PN´Þ^ãÌ "|È}¹¶°G…ýÑYµ¿:7¯ÃÌìëæê}ƒ‰tAfâÔÆ]NF]‚™¸ˆIbôDÂœùÈ°?‘R(ŸØÓ™£†îy‰r„Nˆ2‰"+!å‰0
úÏvzƒR´¤Ìî’Ò å¦û­.*å[q!sÊ‘¨"–
¥2ääŽÔòûg#p	$FŒ…6AŽ‹§;ë¡±o›+›O¼O7e†_‰únuT¨Q|)Áç¿Ý©Q®ã¨–\˜k¼J	/•¯¨ÀÕ7°0d)q«¢®µj1ðA†ÊÏaùZ…îJš;õgsÂ—Pæ`^oR‰X‘ä”S«æzºÂÚLKNŽ\0+oO:`¿¶oØß»wúˆÐÀ$L³ÏÄ—#×¹ÙšId=6[ºóÊµš7ßìr®àYŒ}×9(þL'qå?ú´Œ^äƒ_xœû6™qe7ã†|FÉäœüÒÝà`Ý‚œÒôÌ<Ý²Ô¢âÌü<…ÍÅŒõv¸¥'³ÒÀ)«ËË¥  œ‘_^¬àï0ù—›úä‡=¸4LvpÜaW®œš˜žX’ª Q¤¦ladhn]¬ 3=3/-¿(7±ÈÞ¬ë$Ãh\’‘
ÖQW—Ÿ¦ ’).HMÎLËLVÈ+ËMUHI-ËLNÕ›lè‰Ó9›û<2ÇÑi¡à€4xœ[ÙÍø®‹qC>#_ANizfžnYjQqf~ÞæÆz;4±É
A“k¤'Ïvx4¹Ýñ˜i@Q~YfJj±BIFªBFjNBf^Z~Qnb	Pµ–NMLO,IU€¦·¹ÑIqòRç–ÍÆ.eŒ Ä1¯ì"‚ Ixœm‘ÏJÃ@Æ)R+Qôà¡ C¢àâI=YlÖÒèAX5™¶+ÉnØh=õ„\}‘ž=úú>„›Xðïqç›™ý}ß¼/¿®Ü7‡Hl¤-1ÂŸš«•êqëŒ³i§ò<7ù!gÐG2oCAm§rÖQ’¤{Fpæ×tRJ¡Ž9‹²$…Í"‹i´+©„ëh“òü à¢{Ú:AÃómêùù¸ººäx	ÁKŠü¡º7}«¶*•(‡Z}"a¿{~r¸íè8‹õðÒ¦ÊÊºç÷Øõš|¨ÇÉŽDC(RÊÂ‘ SƒI5Çí%b°T8Õƒ²úm‰  ‰+‘Lp¦%‰PH©Ñ!Z‹ßðaçßß•&ÈÒ¨Ø]%Wd
_‘tn‹sÒòü^ÏãìêÓ­·¼Á>cœùÔ¥Ù;qm~]ƒù"@ùcm­îDw‘ò¿¯¿ÔÚ__è~  Ÿ¾^ê‚xœ»)ôW`‚KrIQÎF­{,`ÆdV).çü¼’¢üœœÔ¢ÉZ¬…ñù¬6ìÉù¹¹‰y)“o±Öji8Ú¤¤–e&§ÚÅ€8“SØö0ºLVd—ž¬Ï!Éè?Ù“Ã˜+aRG#Ä$VÎ 4$)ç8ƒø#xœmRAkAf/*õd•J¯—Ú·©¨m‚ÝÔ¤jZš¶ ":Ý}Iwg–™Ù¶"X½‚ïàIð,„ÞñèðäEð'xg6±µ’=Ì2ó¾÷½o¾ù~í{Ÿ_yºÞˆFÖeƒ.š 'µ	&xðÄÛ©/Ñ‰ÚòÞÐ
~	 ÖÐ(ŽÛí>ÐÜp»‹aÝBS‹y\ rÓC=Üâ<Í`*ÆË3RÁÌÂ:R¥Ìø¥J9«º5æô±öîò@×0™˜ù·y„“]3÷VV×›+­öýJÓ*ý¼q@?Âs'Òèw8q %°$ñK‘LS&b;R=)©µ«@¦dœG:,å	GMŸÂéQ„Šå<>°?¦Î\eZ›w¢S,2ö’}Láîu(ÛMYl§8WÜ”	¿ävô&œ¥ýúKOÐ³Fà–¢ÎX„èyã,}oú#ÖcË¥¹²f"èëò$U–fýDvè#ÞáÑaÏžë¹DR%“ÄÊÑ=w³ˆe&W!3f
5
ÃEìÃØ²ÂK@gµì§ÿ0Sœžâ T8\;Ï"ÔãY¿Ô„Á77Lƒ°þçYì&8Ž£€¸äÀQrœFú²|ÁÛ"ïÖDI± zº4vFæ&Ë•-BC·ÇéýF@íµ½X<}÷&ö»ÀXè_fs8ÒÚç(l ‹<þŸB÷+ÛÞþ³ÚDŒÒXûÚÈÐXoÏÐùÅ‹ômƒÑÛú8­nž¢‡›¯ÿ êCì
ƒNxœÛ?‰ñ_?ã†bF–ä’¢œÍåŒv`Ödf‡hmC·$5'UA——KAA!(µ¤(3µ,U!851=±$UÁ9?¯¤(?''µhs³ÄŒÉÝŽ·Ù“óssóR&§:9°ñr%æä(L^í" ®–Sb’Z–™œª–^b­¾YÜ¹–‘ÑeòT³ÉnŒþ“Ý6s%ÃM,á¾â°ãîŒ m·<¡ç—xœÛ!z™w‚{YjQqf~ÞF5aFÖ0× `ÏÍ¶Œ{™aÂ“ÿ±ˆ)BÙ
™yiùE¹‰% 6¥W–›£›œ“9ÙU®#–U›;=³DÆïa•5‡™€¢+FMO!$#³Xˆ@%©I…’üüœÉëY-@ÂÁ©‰é‰%©
]4sr5›¬˜2XH¡UßäR.g £UXâŠ~xœ{×ÅØÚÍ¸!Ÿqsc›Ýdf‡H‡²Ô¢âÌü<]^.…àŒüòb…’ŒT…àÔÄôÄ’T˜|f^Z~Qnb	ˆd)ä•å¦ê&çdNží°or‚ãîôÌ˜âÉN²0ÈŠõB22‹€$
²&£P’ŸŸ£g£_`7yŸ‹ìdÉÉ}NÏ4ˆvÅ<ç¨ÍÿóžT"î&‚¯axœmÍJÃ@…)¥-Á…KgÓXZ*µˆ“I$™0ë…!¤Óh“&Å]ž  Ä…oàZ\¹ÓwñAœ¶hMð®fÎýÎ¹—û²9Ûz¬®üa-°‡¬6‰ƒ×ãíBA{3
ÅŒžî”ª€ÄAà‡ëÍö½	P½ŽíÈõ½ô®´·1úiõ¾çÒûú@=í³©ë°³Þ §Iù¼htõô³ütÝ30e^ßÁ$`Ž;pÀÀÜÜU2à/`s9Œ\'Ùa:«´“ì(PçCêÞtÌŠ£ ŽÚaöÐŽØÿ›;~ìE Ý¸f.RÔ>XÔ¯`Øc&‡})ˆ1Â4Qa]´Tdpæ Ë]ÄÍ"‡YD¹¦DCy¨™…$¤ë¢!J®LaÊ”)T”Já©•1t	ÅP‚†Ee¬v!½T‰…ðí<ÊƒðÆ‚†Ì#WÛÎ¹fžÓxÆŸ4Ô¡¦¸Ûsø"›’
éòDK°Ó¯ŠôµÜè)ùgxœmÍJÃ@…É6˜­]:«âFZ
j‹$¦Óh2a&V]1™Ö`›„tR]ÝŠPò"BÁ…;Ã'ð1t-6Õ»š{æ»çÜ™'é}*='ÒÚ êoÅnŸmÒxö Ý”l]=-
wêæIã8J8óAççjŒ°%C—Q˜½ªoEßGíF*5Øð¨<àuŸ•û¼Þ¨)«êªluM.‘wÙzi6Õ_¤~ÅÀ˜…~”€QÌ¼ x@¸‚¹+~ã€8WÈ	¼tà&Ùú“å|P™•p<dUEF)S~¨È„¹}—3ðßk¼(98ÜWd¡ÙsÃy-zË2EVäêí6(Äa:1¬Â¦æÈšC;Eˆ˜vè
³[dZg”tÐªV¤tdššÕ$”œÚ6ÂlRÑÒ	lµ îù„¾_˜èŠ¡-‡6±Ñ…ôÄ Â9¹·JÂsZMaú»qÖVÁŽpYÚa»ƒÚÔÖÚ0§Wi[7 ýþ©8û„WÒpÄL¶ïxœµWmoÛ6þî_qÈ‡¶+jÙmÚ3Ò^¢­Ç°Ü¢EÕ´t’¸É¤JRq<ûí;’¢ã$v0 ™ ÛïøÜÛsGæiz¦Ñ·}ÜÔ8qµÂ¾Æ¬UÜlú
³« 1nM%Õ¾þ6ù|€¹÷oðU#BeL3Öëu”Ël)åŸ‘TåÀäå›ŠAeVõ Ûàð~GŠ‹w&³_I>'ç˜MºB4®´`®¤“= ë"hï·¾Ã3äûðxpürðjøê8H.˜hY=‚é§ì^‚(‘­ÊÐ‹üÚ9eËJZ‹EYs]Ùå^´ø G¤§ý$>ý8Ÿ,¾¤ýy|úéŽ^ÒçÆè‘ÓÃî§3wä°û?ú8”çp†Z®©[òšêÚ´Eñˆ–þùÑÇ¡te[¶¥Žr\r&)ÞßþüöxWƒ’mtTŠÖÉ™Ê*~…ž4¥’EAéþÒ¾¬t9_GVöXžr„T<‹Jˆrãï>cß{ÖžZaõé£R£ÖÖ
©VÌ.ÊG4‘sÍ–55æ¦©P0Ã¥èE¢º%û£Õ†<sRxÆr» ¯éKB…S% E½ù©±êGMÃÅx2…ÓËé"ž. YŒç‹>Äóž?–™Ävïø">êÝŸlö!é`n2¹Z1‘ûmÉ—éå,™$ÔÂº¡ä½´˜X(©ƒI‹9œäxÅ3|_Ó~Ú×ü/|wb¿ßÃßdåüË·ìyüÌÚ²n”42“µh`Ÿè!¸F\Ð´ï˜ÙR{8ûDÀ	­‹w'6ö»PS¸»ü «ß°º–žqi¿FQšÊÑ˜ß#zÈ'¶BÝ°ŒlóœœÓ<÷HüË{[§ý%LmÜ–%J÷e?‹“Óùd¶˜\N}åÞ¢	Òp
L£˜Ð*†Ô´a¦Õ`93jÛá² B
VRí€%HŠ’`ÖH
"6ÉV×4ÙÛåŠƒ¹mIk"“Â(Y×¨Ò'ÑÖ?¦µÌ¸oä%š5¢ vØkû	F¹Ã5M¨†–PPÂßªÎ}žD`íûfµj.vòw‰Ûü(Šà?#Î‘vX€dvšö_[ôûŠ„e¯uHCÌ²êpÄ
M«„¯kˆý¢tu®f’üÓ9ak—íO
¥ÙNm:‚sXn–jéÂâ>˜žƒn9ó+¶A÷J—²1Yxî‰”4µÔÎˆÝÖŠ0±C¡oÓÂ·’Ú¼°„#¶+¤8éè‘ùã3g)éØnÝlÖ»i p¨ÏzÑ<×½„Æ 4?l•]ÍLEÞ‡ÁbvVçqgËÎ.Á–Ÿ3v¡3á®R7Åv
ŽµE‚I­¶UÛš	“âqeû‚—6ŸÖ‡Õj|á2æÞ¶»ô-dàDÊ2•v]qâ•Â†šq…Ô¿XÒeËòÓE;œ0é}8;ç@NBÛB¢šzhƒ¹´w»6ËªÍiðº¶¤ ªŠn$‹³Ë‹Û6÷‡Ž•àÏ]ÆŽˆ¯T4Ÿ….)Ø·{Þiº$øf”ßáœ®(H(¨Y;ªzî¯¹©€TVófLui‡Ôçž»–°êŠÞH¯Åƒfû$¸{‡bz_~v¬.SîÄ|P1äl¶åáÈ…ºãÙ6u7îdarß÷ù@þv|ß*zœ¦—ã­Îà÷uéÝÚ9[;Wf–¿~Z²õõµÉekÈþ_c¯ÂÚ®:¶[^oØ)_ÌÎãî>6•_³UCã·»å}²·<+".m"9¡¦'¶Ü`ï_;T¼äŽ‰™ xœ•UAo[E–oÈåqMU15	!Qµ¢%%Qå†¦¦­*¸lÖóì•öí>íî³c„ðà Ú7~( q…+\8ð'¸ .H˜]¿÷üŒí‘"%³3ßÌ|óÍ¼ß¾iýùeë«Q+±È#Ü¬cO.LkzkÕäÿ¸}ï•t’6 J<6®³Œ©¡ÿäíoŸƒU€Û—_°â#|kOº›á½‘»	Cç*‹ÿùÎŽÿôð™ëÈó…[…í4×²ŠÉaãsÛ@õÐ±9r‘
^XØø ®SWðA§£¬M#ˆšd¸pkO!øVÌdeRjÎœÐª#QÜ¸
w°ñ96ðûÁUåø_w|ÿèb~:ÆšQL°bœaÊ¦h,8r³Ž¹ÂBx2ÇÀ -¤&m­´L›Ú É³„
ÌÁÉ!78º°röùâ,Î!åÒI;dáZ9£¥Dã¿¿{-ÖÇ¬Õ\ÄVàÝQÛ^uø­rÔ^I{µaaˆ9™PQ*6X#öËÑu!æOµÉXh4x%íØ¼ÓTJM¡þ#âC$ÿØí ÿNç ¾îFHŽ	i»þ‡»{ó#ÆÇÛÛ5è
£#b9©.7Ä.fÄ5Õfs­†Bˆ`Ý$®É‘LIS¡¨“³Y3…DK]ÏWZIÚË^ž*ž˜?c3PÚ®Lh)À‹È£!&‰2RÛ%ÆJðÕ9“ç›MÄáŽµuûAo„Ä’vã•zE"ŸSIÄÝ×Ový¥ÞÜwŒûÌŒè…AµO XFÄ0ÇKi¨–jåý‡_k—;H{êß»w5Y.l°üÔƒùÉ£ûM±W¸©@9ìB/…Âç5(T÷ ŽÆñºÅÒ¶VB²°¸ÿÕáv%ˆ×i¤ÄÚ%Öt,H(sÚ¬igpV¤Qn±}ÿùñµvã"R_Ï6¯¦ÿ±÷âýÂ8ªHRÌâ`ÐšÛ‚s¤‰	Úf!e˜,	NÑ
/¡ Áéáƒ÷OCÆm÷”Ò_±[¯qäxm1næhRJJ°<Oÿ$ºIr­m¡ îÝB¼éØ1õ	)m,ÎPP1‰m*\c\=5aR¡ÏéÇQœ(çu"š	ýG~–7£±<P½éAweþ³ã—Ánfkù! Ú^²Õ7è)~Ä_:è×Â¼nTUÓ¸¬€‡ÉýK½¸ŒSÞöÑ¡r/oû`…åAm…w£õÿTº,pý†n©ÔÿzúèÕ¥º­êÂuáSFŸ3lQÐ!hŒçþ¯Ç_\:ÑptÎ²œbyUv/úOv[$„+ûæ8‘2xœ’ÍjQÇ	¶	Ib…µ­`&±»4±.\”tçlnfÎt.ÌÌÞ{¦‚oP¸K_Ád)¨/à¸sç¸öÜLgü*èf>Î×ÿwîý¿·º{¹³a0ÞíßnmÌŽOž®ŽZnl»>Ì0,µ¤ä‘½µùhà2A<…Q„2Ä1¼üÀeŠ‡#÷Ã+nŒÁýØbóý.¥‡#Ò"71êÀO1?£¤*"höM{×ÚÏìÇöŽíuö—NB•e‚ßÒ@i0RP7€©É
­H…*…HX—$È9i•¦,¹7„SŽ¬³†tR©±™£¯ÆþÖbi š@ÅœbùšÄÕ™›käM¡ŒeX×7wŽP Ž•ÎXg¾øo¶e—‰ˆÔ¨Zº*VÚñ‰	µaŒ
¥ .))Y«üXs9Õ	*¹‘WªŽ-äŽ¹BÖø„AòŸG“(CÀ[üc2˜ržI¢õ®¶¿ÕßÖni‰¿°Ù¯;öSç¡ÝÛêu™€»ž—˜gú÷£±Ý¤–ˆ%¦ÌŠûÂ¾îöWmï¤µ¬œ†ãüáCo8Áco"œ¨«\$ÌõkÂswí‹T‰ÈÒ”¡¤»¡ÏÊŒU9ÈS½ádâ~#ƒ«Ï7¿´ÖnjÌ]¡4¾oâWD§µç¿uCû¶÷üþìBç‡‰—xxœ•UQ‹EfŸ„¹‡“˜(ˆ‚g¢7{œ‰w/ž÷b–½¬Cì­Ùi˜™žt÷Ü¹Øàc¿ä)â“¾ÉÉ“?Ã /VÏLÏìfg\XØíªúê«¯«ªŸ¿ìýõ¼÷ç¬ç+Éõ<P˜M_½óÛ«GæŸ/Nú+'ø Œë3úAg¡HS–M}ï³½Ü¼úáŠùýèÙ¬"ï\1¿_ò"ØIôaÄ4GÇ—äæŸ[C”K¡E(’™>„§äÐi^ÉUâŒt‚!xè@tš-ÈA¢“BK–©e`6Ó±ÐÐa´á·êðL©¨ÈÎR\Ë?„5“6½/aÛÚ³Ê®øÔF˜¿z¹ø.Ænµ+(NAp„ÍÁÕS¦™ïY
E¦¥H”}°ÀÖJË"Ô…ÄFÖ¨ä±hC|)È™Ô "²QzÇÄú0ž©Žô®Lç«J.„e$dJ™&ó¸-:É¥lNl%\êÊ[HË¥¨Q*`J‰3Mþç\Çe’5‚¾çˆõa¬™.(Ž**átÌôÂÊ\1–H<²VšX(Tƒýã{ë¥;`PÅ$åZW¥²·É$P
Éñl‰ñÛ­û‘Ÿ¡‹0|ýÑÂÕÈEFõ9b¶9}‰ŠÂ'fºqò½×€mÅÂÈUqLHÌ	Ò†S/Lq;âVÒ<:>éÛùòð¦yõÍÄütw™œ!¹¶]Ñå¨œ…XÇÛž1û÷ö¼z@hˆÌíÁû~;Mö$8ÅðûûËóàpKv}D4<›u4âÝ;q¹¹ÊÉÆg–¹eQBÒ$í–·ZþkÂÕJàûÙ”‡ÔRªÅ:ySsäÉRL…œÃ¤ˆì0j[¾éŸ^7Þ0ãá¶¹?xË†ÁxÄìí
°k°b’³³?w®Ýúxÿæ¡¼y"Õø€îÓ,U#gEjvO?¼¼iI’–ïl^±¥°k7~@SH×S^ë€X.+KmñZW”ãÜŽ7¨˜%ÔPŒ'õàÛ¶Ëªžo‘ÙKøFn¢	°Ÿ #j*‰
¥ò+°ZJ¸ÔÖ¨iaÛluæ·Ñ÷ºÅj73©v­yS.ð#ù¢ñ¨iÆƒ²Þ%RŠ-Ð-‘èvHiöN?Ø^zƒÜDLß\~¸Üypr•»§áÛòèÿk9­¯ƒ.r?>üÅ|úhkk(àîÏ,ÍTõBxÑ{ônï?:'ùMà>‰“xœRMkA%†„ìrËA	¤BÌ¬!¨Ù,"Éj ËîàA[¤³S³Ûa¶{ÒÝ“dAX‚0·üA$xóèÅß#x¶ºg“¬Á¹ôtWÕ«÷^Õ·¥Ÿw?Þ«ÌÒÈ¢±_Vg»;{-Å;Ý˜E{‡—Ïf¾Î²ëŒ(S}`tÐj§v€àÞ„L•r+”¤a·˜ÀÑ<=d‘ƒ`¸L &Ïø„-›s0¾‰²´Ã|—FUÙ„7,ò/,Béºš­Æä§	ï‰Âõým ·|@6/,‹*š[Ö~\•+h´îìÇåç¹c×7ç}4j5$¢pðj' §´F“+™Ù«¼x'Ñ&±S
I·‹µW›ku*‚ÝÜ`ÑPQ†Æ‘¦Ã™;l¡%–+óßg‰CùkþÓXiqlÈÑŠ4[«u“Ï«)w…×öê!¤£ABi>"]YFè<áGNÃt_BxØŽwÂ ÞnØ¸N¶ŒÿåyPïtáQÐÍ±'Rz€:ƒ!—#ØîÆžÌ$ÓS å}Í‡`ªÈ’+·*{]|²kuˆ$bX8÷¸%(ätQ×½‡‚d÷{'ð¼‡¤Õ!ln\5t(Û•1Æ‡"Qº\^Xšyø+ã¦–Îo\5)r‘¶ÒYÈaP°òuíqp“[^ÔÎWÚ>ÍÏŸŸAµ[®%‡Tdø´ÜV§KÞKá‘\ÂòC°Rþ¨í>ùS;pô|èðrÍÍ•vv',/‚ð71õRRãLˆ–fxœ…SM‹A%7	*"q?.Î&.‚bt¿\â*ìwv/²‡N¦&i™é»{ÂâÍ›‡>y/‚7<xóèŸýW¬îIf7êœzªª_½W¯úÛÇÒ»7¥OÝREcµ	bÙ=”“!û{ññÁD‚J vÐ(Ž}ÓCpa."©f¸tæ†3ƒ!´‡bŸw0(@€‰B®Ó˜k—>oÉ{5L|›™Ø4ò«3]Ó€'‹(\[}ßeGgŸ~Â© ­¯\±?Ç<uA4e]ú‹”Lˆ	lì¯ãˆ"t¤R¨S)B.º`¤»R)+|–3s"d9¸L£òrR%û<$ØùzH*PØ!& .£Îbã@L¦„Ã0*ëÐí÷Õ_‡EØ+RÐdÚE–AF•²&-ŠÅ0`CM¼SÌÉÒÐ!™úùG1ëê†L‚¦LiïJ¥ì’Ä»«X2ÒÀ…É›1jÍBÖŽrSA*¦Ø ÚY‘ì<R)?Õ®¡¯"I³‹+Îñˆ‘ê“ÕÐ¸ÌŒkà2ÂÝ‰Ïv²sÍåsÕ…Í­Ö£Í»¼?g?4§*“ÞþX›¾ø—e°lwSìðˆþ '¤[au·å©ŒÊ<±xÝ“YÂÈg¿~Åýç
óõ˜ƒV”$™ó†#£39sÃ0Ç3ÍëwæoÞnÀç$Í~Lc¼ùú˜Ã¬æsÒnÕ(~†£ýº={ôrçm©úóYN¾ÃÂ3÷ˆD‹_šL×ˆuMô¬ÛãVíÚ–¯{H6¤äõeñïÚƒ½õ©¿@ ¡Úæ‚©aÕÝú?¡|‹Ní†ïPýgWíð§íñÞ«~E(øG¦3nÐÖšWíû¥óöËþë?µãY…Öxœ•T]kA¥ØPÝR•Š 
ö’ÚÚb6mª¥$ÅJ[¬Ô›¤/®Èdg6;¸ÙMwfóBÞ|öøü@ŸôÅâ?ñÎì¦îV}IfïÌ½çœ;çÎçåï·ßÞ4“¦ÃˆŒÂwf§f{MËÜßÛi¶Ž?mM}¹°økŸeBƒIÄ‡£“§Òx¼P¨Îâ9+=;…Övºg™œÖª§ÛðóÐëðÜ2-³O¼ˆÕªú/ÙïCòÿ(ïE§˜ïS6¬U3ÉÑèØKÂó‹ñ×Âã"‘¤V¥ø‹XÜK«RÈ„TéK‚ô™Úñ“™’¢`?¡þffÿÕ„úŠ}*@Ó)AB—Œ€x" îÛ^DI@È0²õŠ; Ý³Î@ÈN#2\Â
nÁá£8&~‡AsÔc«ñÃ‹ï—4æKN§¬Ïm,&€rÑóÈˆÑxÍØžVÝ#ƒÓ>–@µñ·Våã<0š"œªÚˆAaÀ¥«Qì Û%>µ–Ëp¢)ôÂ Ï)£ Ü ò(´1Ï—ñÖÜ3Êõºa™Ä×çgDÔîr)ãÎÜ³1zAòâÐ&Ü@HGmÜá,ÌÊÝK*†ž¿ÁŒïCIhGŽÃB8ÇûöOT éª3‡DÚÔhîÞ±B:Ùn 6Z»Ñã=Fó&ŽMé÷É8ãé÷ä’ï´í@AH¡R)i%Éþ(ˆ`@#àDå¼$ƒ<²H••Sœ.a¬rˆ”!oG’)-Ò%R°ÇBÁ…ê†AÔqÑÍô‚6PH"S½èVtY*µÉü%ÀÏâp"»Õ:Ø…µAn,â—IY¿$*X×Š¬Ô«J{E/ãÝ¸2¿´‘yc¬á¬ùý.[×ïÊF&àWôS²>¬ÄïæoÄß®Ôïž¡¥.˜L6çj~¹ßAÍqùêBMßx‘´mtFÇ-â¢ªÂßÐ×‡›
ÓƒMD¼uÿ?Îë—L1¾Vù	©Ú"îOˆãOxœµSMkA%hbvãMôDŠ%ÑÌÆ›b@—,˜Ý‚döÎÔì¶nwÝ=V…ý^„>ø;$ˆýÞ¼zõæÕ“5=³ù2Q<Ø§¦êUõ{U¯¿Üø1ÿvþ2ùþÎÜÔLs#ZÃõ©—Æ¦¯=a ;ÈbLÆ‡Ø>BŒ	—CëÉB¤¤Õj0@TÃEm QºÈª!Å·×›tÓ¾ö<Õ*Em9žÆ_ÕÐ`]Í#.Ö]{<¡Ð3
“XqÈ#\ƒâì…Aô3Áda1ë^õÍý*üåøZ•Ù4³a@³V[»k¾ßwŸ¦oÏN„¸oÓµŠdMÊ"tó3+÷¡Qj;V\
€‚*ôøå”ù,!ñYªí_ÏŒ….új9,\ºw3µ1‰÷OqÉCir=Íd†f÷BªƒÆ=B%>kF&10`#RV`i¹6O†"¾GÄiaFešbÆ*M¥¸F¿l1¦ªbÛ…Ò£¼¬‡X¡1“&Gÿm9‚S„Í™„ÈŸ+›—ÐÜ,·E)È2gÏØ-²-£Bs–¦J[ÒpÂUŒÄÄÜ¤4
Œ	^­w6¡ÖÞÞm¶[šëÏ.47Šô	ë’ˆs›q	Þepd²Â0¾ïÎ#÷ñÊ¡û>»7îYÏ¸ÁûÿÜrq.ø%DA—KFë(_©ÖMZ­ó$„¯B"âÞT®Áñ‡eÚúrn­{ÞÑEµû\é?ýoD¨>¬Qp?«Kîkåñ³}/‡åÆŸ†ñÜ(9…{YY¸u±òJºoºÅ¹»¿ 'øº€å+‰¯#xœ‘Ïk1Ç)º]ìª‡"ŠtÅ{0[·^¶¥¥–® ÛeG/m@ÒÉÛÝ)3É6ÉŒlÿ!gþ	¥ôàMÿ)Ï&m,x$yß÷áûÞ÷¬ùeñÓ½Åc¡I2abŒœK$Kµ9iEs½~LÉVo³¿³ý‚’Ó¹³+ÿT%0D£R,¶ª*ì¹*dr#©ÀLÆi‰Â6k{¿ 4PhÀÐÑºË4ÁuØ§DBw”›uøàøîU˜ia(q¸œ™5_²ßkwì­ù«Ïµú’`9ê)K8åkÝþÛ×E€¿_Öv]12ekõçLáQÚè`þ‚ØJŽÎÝƒ7Ï!ìÀÊ‡©’eÊ±jS¨‹Ì„…¦P^­*wGû±þµzs6ƒŽ‰äNáå<ÕÓŒÍìþµ»·é£vÔŽ{°¼;xór·/Ûo7NWƒÈY}–ãœGíaÏ"—K…CÀ¦ž‰d¢¤…†m·{c²‡Z¿pîC:Ÿ:öGãAë’˜`Åe´"ÊŸ†•v¬¸yß¾k¼ZŠ'ò}»Ê
œC-T‘yfç¿˜²jû_|’$K£Ÿ­é—ì+‚AxœmRÝjÔ@¦”îÖ•Bi{qì…(nâ—u/lk¬›e³
â(d““ÍH2g&iÂ¾‚0Oà#”"âËø(âL²Ö^ôî0óÍ÷wæûÖï{ßv¨ºª„Ô˜z…XxU¼@uñŒ¬Ý‰ÞN&átv|D½Qxry²öc}y¨òÆïÞ Dÿ 0è ¿Ô¨ôÀº–Ü¨ºÐÛG–†øÑkØÞÃIDûÄWñyFhð¦D¸Ò¤ÞÐÂi'K³)¤Ø°‡ðzÔµ®jM½LÈ2Ö/²Rá«µ' ?s±±g ·q»A9
ÛÛÆø½½hŠZ2l¬[cåJ×™\EIQÇ¬PIQZÿ°sÑÆ©¤hXÚ±˜ËÞá-•‹ºHaŽf½ÿÔ|ê?œÝDë&¥eØ~NYQØ–Œq‡³ ã$‡D”¥SÑy¬©ÿÍÏþ«û³Ü‰J3Á;
eþôw¶»>Š|V‚ÀrÍå¹y¹9\6pÕ­ú þ4‚ç$ÊÅ)”Â:a¼+ÓQ2žuÊøFÁÑµ=?¹ò¤ðÏ Ì2…ú:$-`Õ}ä[ãvëæ×æÝÝ± <‹Ëª°E¬úKáµš%ÙÞrqzµBiC3ä/Œ;òDë(‰Šxœm‘ÁjA†™“¸°A"¨Q*§ÜQ¼ycv“¸ƒ»Ip%2;]3ÓÒÓ=v÷L6$ žê$ø
‚¯âÅ»o / ÄG°gg÷VTÿõýU~ïý|ë}L¼ySä¹Ò™/Tâça‚GÒßÑ§_+žþß6à7 0DÉ`óñ aøW}•@­Ñø¢@cÛ®°…–UÃÂBè†©Ù¸s3§ãþ%úqïÝ,ï—«4×¹N_W/ŸwfðÄ÷KÔ#eÁ/évçÓÎC´šcéÜlŠõ*'¤Êdº
Cra Ö*sþµaÉ#œ¬“kUr†¦Ù¨0tØMÎšT‚Áéw·MoºK$ÖÏ=«OqìY.Ue¬."§AØãB¸qÇæÒéšXiÀ0J!RYV¹Ú4´ÀÍ?Öz5hÑA§E»#úÒãóR÷®rË•¬†–ƒ+¥ÒY(ÚðÜ(ÙÇqê}*ƒß¿à•ô­·xfšÝê]Ý¦j2åöâ2®¦'H.#Q0.èk§>ñZ¸³½½<É&Ç°ÇíiI°åÓ`éCðš¾wæ6à8Ìráâ˜†Ê`íÉeG0hy ƒ•íHâMxœ[¥´L`‚”PIQb^qrj^ŠnRbJRN~röF-.F¾ G¿`gW?—]'G—ÍNŒ[™=0•*Äè*¥–e¦–¥*„À¤üÂ|SRRË2“Sc´4‹€À:ŠcÔô&Û³*ÈÁS€“¤`Ñe79€ÝÁa`È/RHÎÏÍMrA¸(µ¤´(O¡$#a¸B~X bÈdŽFe©@#sJSÊóKsR
Š2óJÀ*sóKL >¸!“9EØ‹¸òòóR'¿â‹Õ€«F8ê9dd¿MžÊï(‹é/} jý¼²ÜTƒÉÿùe&s	Š‰‚L‰Äè–§)—f–¤r ºûîæƒœsxœ;4•ñG/ã†tF¡’¢Ä¼âäÔ¼Ý¤Ä”¤œüäìÍyŒåvXÄ'¿±÷òÂVÐååRPPJ-)ÊL-KU©PðóMUHI-ËLNU/V ªW k(Öãå²Ñ/˜ü×Qbò‡™›à698ŠL>ïxI¬X¡$ÙÄ2 ‘_4y­“„Ü8…ü4°*°E“ß8üÛIÒÙ?O¡¸499µ¸X,[”ZRZ”—
4"1§4U¡<¿4'E¡ (3¯,˜›_
dB8sòjçÊÉw=ùXòòóR'¯q¶šœç¡ ×ƒpÄjÊF†æÖH>,è‘…Í{M›³=ÃA|×ïƒxœ[&pA`‚
wFjbNIFYbNiêFQFfWÇÍ.Œû™ƒ‘$btB‹SüÂ|S‚}ƒBJ“rRJòós*«€ÌŒTˆˆžü4…¢Ä¼âäÔ¼…”Ô²ÌäÔÉv¬ºÈN.fU¯J-)ÊL-K-¶Â¬jSN~ºBAbzªBZQ~.Xº±@7¤(¤‚LL,;¢¸$±¤´›+bÔô¸ôŠ¸B€FÙ¤LæaÛ+ÕSZTW²â¾‡lÝÂPÇ ûmr»Š?®° ûÖwCë‚ixœûÑË¸¬qC!#wFjbNIFYbNiêæJÆF;dÉL!aH|]^.…ÐâT¿0ßT…`_Ç …’Ä¤œT…’|…Ä¼ÄœÊ* 3#U¢K¢-?M!¤(1¯895/E!%µ,39uò‡ƒ(VE:Ï
J-)ÊL-K-¶Â¬jSN~ºBAbzªBZQ~.Xº±@7¤(¤‚LL,;¢¸$±¤´Å›kÄÅ¡ò©E@±ÁpXãlÈ(µÙ#“¿¹£X¡k;# ôMy“¾™xœÅX[oÛ6~÷¯8È€Æé,YNš’ Ù¢¶.bÇˆÝ®EÕZ¢,.éŠ”w—ß¾sHÉvÚ¤+Ðl3à‹Èsùø“ÝhLËÇOzM„ÉùÈEÁ½…(¨
O³÷tÁJãå-ÌBð¥—«Y£tV™L•Gðþyÿí <fŸ?À{Í9dÆÌºÝåré'*ž*uí«rÖ5Éì°Ëe73EÞ­¬½\ò’²w®âŸQÞŽ/`lV9×çFÃBK6×™2p\[o,ëÔ—ÜtO×Çsfð8ÁA÷ ×Ýöš“Ë`øfÀë‡fk¬ª2ænË­]09«Ø×B9Ë…Îh¹åO^Â
…‘÷¦5é¿DÞøìMˆ;=|oœîX9^Õîv¬mï{_ÖÊc8ç©´*8ÌUiØTäÂ¬@›*MÐÓ_ßû²Vê°M«™ö>LÚ¤8žþôô`[É6ÚŸÉÊî³2ÎÄ‚»¤™•*M‘Þà™ìw=‚ wàÓÞC!"Ùögà'Î>BÔf[>Ï]j5«»HÍ$<eUn UeÁŒrö€.¡Ù4ÇÂ\Í3.™J¶|™ÝÚû­ÒF¤"¶»Ðf	-€á7ø¡ ç©l3!AÉ|µ×òYùƒÒ08ëá—Ëá$N`<9»šŒáexÂã‡r3¦ê=„;­ojvy0â¥P	Ò’çXY(V0F¥˜V†k	b@
©@&Û±^ÔqÜ‹ùÎíøÝðr4î±è9’Ÿ¶¢´O( FaGF„8¢HDH¢ô
Ž¾1?…÷‘ye%QJüäxøzp
 Øìï-¸çe5Ó’ÜRJ¿IIUf^!.:àÉñóþEè´¸‡PGšPY2à”%¸œ©p4‡ã_®ú£Iÿrè˜šdBC¬Š‚É„¦ŒBV‘s“aÏ+UÌµ•¢@žó˜ªÆLH˜a0ßŽé#Å$BÊV “™AÉY²rŒ3ÉòÕ'^c!‹3àÒ”+@¢–Âd@ÔkÃŠ¹5Œ†6A'½×š—ˆ›I¨4~c¡,©4HtLý›ß )œvtÒˆ™ÆVò{Ž†ž°6‹9ÍÍŠ¤2V²Øà?ÙîlëYôŽDÄUŽüá‰’ªd2æ@Cw»@	ZAM<(‰Õ’™ƒ²¾Ñ•Mq)¾ÉÑ9Â)8â!Ú(v4Þ]
¶‚)B@q›˜°r}p6 ÍoŽ ‹]*“`ÏBe@I¤ç¦¹Š¯ï‘–½½×¥]Å”)ë­I¦™»uÍëÚíÀ2ñXIÃ„Ä-YGŸ	þéjí3®Ê— å6
Q/'"õž=k“ÖˆpáÝP¼an+Ç±°µ/b¥,=ç1vfÌ¼éÊ®ª¹íÑÇëpÚ±Þê8êí(2cU¨è+.ãÕýÖHä”²Ÿºu[ò®¥éI‰°µ¢søRäùšTät£h2D!dœW	‡B%XÚ¸ä¢¢DŽ0ŸdUL1øÊ9w7Õˆ6]¤M5¹#ŒÙUòX•	·•IªëæLqkÛ‰¦<5ÏµyX7îKÛŒ¨oF­uíÀM¸å_áI«íÀ±|†ëCexÃÔv’ªº ÛÍÈ?ýÀíãT½
kGé¶£MÏþÒÇKµD†KX©
–LšÆÍV´<Ðþ!úêFÛx…é -ÑÊAÐ¬ôhßBéÀ>ár°:ÀMŒÂTRtë¬Q÷jÔ–ª5îf"8àwÌ;X²ý,í^û(¤l+‰8Ó®é¨xÊ’Ü2¼ÌêD·ÍJhõ
QÎ9s¦¦9“×¨§\'Ødh“6MúÚÜ8ÞNÕÓÈ;¾•©´`‘ªscn3ÑŒ7ÇÄ#ðë<XÓtJš‰Bt¢_mæººkJèvË;¸\Ã¢|ßžFas±èÖ+!ú=jEÙ®<ÙÚÓ
þìF1Þ¾þ´W`@%ðz-¿?‚}ÿÀîO¾2ŒŽœ+‘ÖNj§dïA?À7_ƒ\ƒGVÊs×oa/ÜŠ-~W5¶éÔÙÿY¦U‰ªß8´½vä=	öÜUdjè€Ò÷Cò6ØFùÿ“ÔûœŸ5ÆfõUx¾ˆ¼ýÞ³È[ªò:W,ù¯{EŽàñfÄÕºÕ4ðˆ¶54ÍÔ¶zâƒ/8ð[ÝêßaúkTŒë¸²mW,º‹<,ëï)ÂðÖßbx,ì¡ˆÆ4xœµUKoE–´h¥( 	êØ»ÒÎ>9?ÈÃ6¶…-Lì „hÏôì¶2Ó½ééÙÍZH{Bâ†Pß9ù†„@\ Žøÿ€3‡ ªz;v,ø`«««¾úê«ê_¾šûäxîëþŒ„6"½„¸—ÄLÏ(odF‚½Hõ¿ÏWÏô²¿¹==Ë	¼z ÞáZ¨@ø,Š&@¾à|£ÅajxBèN("?A¨tÌL³]¯-w†«ô;£Ê_ûå/örð$Ë¯Â|d–>>Ÿï›%øÀót*=#b¾BG»;Îþ1xÚÞ¿µð:„šß?}Ò¡]ºýüeé7¶Þ^/NÛ½õêÆÀÒŒ'Y‘åæNé+¡°ØàöwÓýHÀWqÌd ,5
GZÌ€ÃP+Ÿ'	¨¢ˆûFÈ>ÜÙ¹ùî>Ì0VéÅûõrA>tÛy‰ÜjÎ‚	qÃ$‹&G<§·ëÌŸ€K£'€(ˆHŒ1f DPbX<¤¸fÖ–6$\#h&!M8ð>€º˜‡/²cûî¨˜0NÄ]!tÁg	þÃ4~©éãêÂ<`xŒå1“’Û€iæ¬öˆ¡d«^«â®`z¤ÁO#d+
RÍ¤Ï[€‘Ïzå2^ÅBë5tÌM’ªŒ@QzûÛÚ_Ó¢;}.	a/õÚ‚ñ@øL"dN(!üá2Ök?ÕmrWZóÈÍ$ÜÀ¤éè.úê"‰ós3ìö÷µæ´¢t’q†ÄSã r_„‚p8qV5$Þœò
ù“[.]NPRIQ¯1ã.Ò,¤\ú“S1§'ƒ’lÃV˜%LÍ05ÙHÓ¾¤2³(ØCS•þXDQÉ0<»iˆEH?J±
Pl‰¹âZEQ‹Û%Óøk"ÊÉÏñD-Ls@å@°Ið%&CpÈq\|¥îTO7ËÕDÙð%Œ“šÀ7ê&<éD)Ú´µò]e¯o|~Nƒýië¢ýsóâ³9ýö‡­æR#ƒÂ¢&ì–ð*ÅáB=SH'ÕFÀC–FV`±›7í7›óçÂ2ìÓÔ ûãVcZ‰¹©ÆÐp	•Â˜¡ìò°ÕFCþÓè¶¯aŠÞµhA·Mß¯ué»GV—·‹"ÃÐnüv³k%¼^÷™ìÌþ¼·P«lÅ?6¯¾˜IÂ«Ô²ÍWªw]ƒNQÚè|9°C¬"Î’lÆ¨6,Kó˜…³‚Æƒ\ÃÔzl7"}}imEœe#&§÷ð¾jer/UW¨¡d0Œ½'ü…I‰¤}Œ'ÔXZ
ëfÄ<0Õ—Íþº÷r­ò* W}>ˆ©žÀ”O<ÐNâiÃ{N¨àf,ÃXh¶¸%åÚÝ9¾´ÿ/›÷ºýð`gzÖËœ¿Òkn¡òèöº]ú×Í˜Wn—'¾ê³y˜jé	é1ã5¼×»ÍåŽ|ãTµ}îàÊ…õbÇ»ê±¼ÿZï®2ofÛ^_[Ë[ì½á•¾=¥X`îw¶¶Sl	æë²rBríÌêä[L´Û.8¾½ÜÜ¦ªºÿµ*„pÕ><øô×çQÌ=Ô‚†$†ÛÎÆ%{|ã¼ýþîgÿ §_„ûï$¦hxœ}QÍJÃ@¦H¦àèE/CéEð$=©4‡6’Öz‰àvwbV’MØÝD=ù ^„<‡ ˆã»¸iµ-žv™ùþfæsóiýyk#ãRó4j¨ ¾kp†Bsÿí¨ZZÙîÐ¾èyA×¹ôÞÒÇÒõ"ðx˜ q”„¨jÂCˆ}˜¡fœ"páÇ2"šÇÂüáV™wZñv›y¿µo(L¼™‹ç»p<Õèä¯åíÇaÀUaÁ ‘\hµÈ_ø_c
Ãà‡ L‹†)CP¨57

u†ŠJžL2I$4 ×G¢S‰sÆ$Â˜(d`ýQNï‰Jk¨B¦mx‡T‚”ûœN²äÕJ°V‡XšM
¡JÅ<«ìG€J)5
õÉ@¿Æþ;©€DÂÈ8Äù†­æ 5ç|h;ýAÍjªÄ±ÀüeùjurDûGë$ïXû;‹-ãÔY„¢çÖYÉúóÑïã&¥!xœ}QÏJAGè’Õ¡ÁG·@Ý¤S¢–©D*ÑuœýÖpg—™ÑôÒ½Ëtî"*ŒÎÝzˆÞ CÐ©qÍÈ’N3|¿ßŸ‡«Èëeä¾Yê0¡XÛKJ×?K2¹bÎà"ÒÍLEôJvŸLzŒE fj@€ú^ÐB…`£"¬¾ßD;Œ"0îøÂ#ŠùÜüáTšwTIé»ìÓ8&âû¹e}“œ×]&‡!á6‚q%§e*ÿËMAÝÅXtÄ—¡­¶ Q)Æ›†æ6J*X¶i‘Pœ
Õê2ŒDÃ‘hƒTŽ ÐJ	U/‡.éÔ& e£aúpg]¿äq1¾0ÛãÄCŠÚÚ)ê·B4ŸGù5ðßÉÀm$6i´p¼Ïm+Èè~yU”âºº—ÑGùùYîsœ n‹'áùÊcß]½Uª­M;D,jñŽ‡<­KÏ3_^qý^šÓ×eý	¶.âEçƒ·kxœÛb¼Zv‚{rbnJfâFFNgÇ€]OG÷Í®Œ;™aR“yXå¹€tz^~qIfòdV TX®ƒ5fò\6/éÐ¼ÌÂÒTçÄ‚’Ò¢T )põÅ›ÿ°¥0‚tÄƒ™ÜÁQ=Y•/E8¢TarñdAAÕÉB¦Å¾""0»ÒôSRËôóÊrS&J	a5@2“ˆüd‘à_CK7c7Kd%±¨£›¯0y£`)wà4³»qèì#”ÉŸ™W’Z”—˜ŸVŸ“¦YT¸fÉÉw…ðÐ+b4¹MR ÒìŸ¾êƒ‡Kxœ{º…ñèlÆÙŒìÉ‰º)™‰›+kì`œÉÌþpv‚ƒNÏË/.ÉLžÜïp.•ëX<y—Óc½Ð¼ÌÂÒTçÄ‚’Ò¢T]¸êb^®¢T Tq‰Bb^ŠBqbYj±ÂæcÎ!L@3âAÆNöw»>YØo¶p2D·Â®âÉ…Á¢“ß‡±N–äždˆÐdwÅ,šE'ËÈ‹‡øZº»Y"$5(]A?%µL?¯,7Õ@A7_¡èìÉa7Âi0Ü…q¢7Ù!È‡?3¯$µ(/1'>­<>'U¯`°?½Uxõ„XmæŒ` È“³
´Ñxœ­VmoÛ6þ®_qpÆé"Y‰Ûóº©­.âÄ°„6Cµ´DI\iR%);FÑýöõ’([·¶IX²xÇçáÏé €q<¼Û+b†Ó	ˆí†º»4q·Ú5tSREL¥¨«1ºs>­L!ÕÞ¿™_-‚	úýx¯)…Â˜r2ív;/•ÉZÊžTùÈ¤ù‹£Âlø¨PãýF…%±x3™¼F¸
Ï!4{NuA©Ñ°Õ‚”º^µè²Î<AÍè×›0`F†áGããÑ‰2î,"*Â'pñvAÛ—ÎÊJ%´15cçDäÉq,9gº°ÃŽÁ ‚Ø}7›ÆîÛ0v£`±08Æß-é ö£í£¥ÔØîC¯åÌhÆ-7J©Y3ÎÌ´©²ì™þzèU£´Û¶®rí¥tÍˆ¨‹â…ÿòÇ—ã¾&Ûh/Um'*)Ø–6E“+™e˜^ÿ'×?mtîûþñØ³¶ÇZ)£‹¡—ƒ—j8ýñ|t<Ê›ÒêFu#55ÒŒTÜ@&Õ†ÃDþˆ)ÓdÍñ`îË‚
b˜Ž'Š;¶?+mXÆ’Ú
C’Ú0ôo8ÍlˆÊ™ )øþÐñH
üQÓ°8_Àôò"
."£ÓUÂY°
àÙcÑ„öôž.‚ó¿"±3¦KNöÐ3Æ®¢µ%ë…UÊÝ`†¿_\.Ãyˆç[—˜ÙÌ‰³¹¥ ¤@íŠÝ;05Iœ­àUJ·,¡¨]kfA8]Í—Ñüò¢{#˜‚6¢Õ¸CŽBÙ³KÔý5ö–?õj„gwDPE6ÔPLã~ŠÔÊî¾AO
4&ÖÖòéõFø2²±ø‡·ˆ8yÇ8¯KvR}À€ŠØÎÔ «ÒJ–1®½3ÚÄþÔƒÕXèÚV:±‰áÝP¡i­liÇ\—4éò^iœ•¢¿N+ëbÄ¸·QèÎ×òP‡“ÃŸn^þ<'úä„]Zœèóßg·Óqg?Ewô~ø½¦ëòžTJQa ‘›Rjfh¯Ú¥Xß6ú»ÆèQÂ&rzb[N·á¦PØ$%O{pdrKU™·jr‹7UAø= “nê—‘gMs^õAÁ œq|*i·Q´•ÑîeÃ‡_pë[3Màn^{,g…i*…Q’ó	öXlØ›ïvÚ}Ð¿€õÎ×1ÏY^›&=ügšP-16ŒßñûŠHûbk{*+G²GòÛØ#¶c&)0~&¬@ßŸL»Cˆy‡DÓD
ìvº´SPöïËpÃ3J¶ûoÈXqÇï{(î‘±}cÆ¾Ê•IåNØóñŸg®ÕÝú6rX8®/r‚ª«PW)4øG@•BMdJ‘Ý1MkMµ&¸:],Ïƒ®g­Bx^ýˆ?ÅN\¸þóƒx¸®ðïþø N°®?…¬ƒ¥w‘¾ë'Þ¸¶ÏnšRAÿÕ˜Ñ·–&¨IÃÍ²–µ]…¥Áú¾ÒB{½©é =  ±Ï°ýfo"]ÚBÃ´ÚUØ©±[iì?ºB´ÉùAÓ&ëˆ)xœ›"õ’o‚wrbAbRfNfIfêFCFNgÇ G'OÏÍ^Œ;™Í¤‹bt\2‹r+Â]œ
rJÓ3ó’óssóR”NvdUE6yr5«RNfq‰B~L}±HSqiAA~Q‰BqIbIéä;¬Ñ“qÏBÑZÀc‰ÂßÇ NCèééxœ»»ˆñX7ã†lFîäÄ‚Ä¤ÌœÌ’ÌÔÍuŒ5vÈ“yü-‘øÅ
º¼\


.™Å9‰•
á.Î
9¥é™y
Éù¹¹‰y)
Èºç8ìF1-ËñrNfq‰B~L}±HSqiAA~Q‰BqIbIiñäBgõÉ“Ê'7ùEÑïŸ„âÜ+þŒ ¢ŽMìƒ¬ xœÛ&ø—‚
wbqqjQ‰nJinÁFk1F&ÇàÍÁŒû™ÄbtœsR‹ŠJ2R 2
`Ì4…‚¢ÔâÔ¼ÍÉµ¬z<É°¾ÉGXS¸‘TO¶g³d+-.QHJÜÂ¦=ù>››KÐÀäüÜÜÄ¼…òÌœ…¼|¼BjEjriIjŠB~žBJjYfr*ÈòD Aùy1É…%
Å¥ù@“3K&û³7Iàt•4‡ª«R8‚ UÙYÔï[„×xœ•SOkA'H<,ÍE‚"¾‘"&ñPHÑmD4¥¦ekñà–u“}›lfÖÙI@DöàPØ»WÏÒ«_Á/â§ðÍl’nÒMj/Ë2ïÍïß{óçÎÏÛß7o¡”B6$ú‰à W,d(mß¬T»ŽsàœíW~_û°¢Ü8¨$Ã	Â»—/ À	 ûpëùÇF8¢ê'ˆÄäP€ Od¼º•“¸S·@ã†Ø9tÞ»·A€ºa×î¿é<"ÌïI^Y„»öÞ«ý®)
0ÿÙßê“t*Vâz}¹.éuKsåT$
†ÈQú
 â@p%EQãL1s®å=hÂ[º±Tò†EêØ"ˆX1b‰¡€ÜïGºS¦‚è2…Væ«s œÅ×ïURŠ„Æ!/:±šÎl[G1tºII„+Â2ºùÔ
²´ÓãDóB{*G•.$5SWhÞ™7¯Êp~C`è#,vkqä¨k5­ù¨Évª}‹±ŠÇja!¦öLtáé;Ñ¶êÓMƒ%ó#àãQeÇ3IxyÞyž–âÙéèx¶b#ìâ>ãi½Æ…,¨rU¢ŠdQ½<Ç‹Ë¨3Ê¾mœ¤³÷š”I[ûHÁç$>-"£1p“ð`Yv®Í'±Õd!pp?»V¶W»;\ùÒ¡E™´ød„Í£n›×»žÃj†¬@`vÁýbüþØè-ù-]µ«»6³Ð —ÚÎžÕî÷þÛïŽñ{	zöµöú-mDîOƒMxœµSÍKAG$D&ZzK/ÏŠ…ì&‡‚EÄ‹+$’`Ò·éÂf&ìŒñà¿P˜£o=ÁSÿ${ì½³;“¥˜&½,ûfÞïë½ýQz(}ßx«0ÆªäÊW‰ˆcL<1T‘à??¾YÉujõZã¾¹òkÕ{á*PŽ"Ùûc¥ÆÓ—.‘Ò–;!¨o“~ˆE†½>Òw¾Žs;Áä„NAS‡MÃì3EÀêQY¦²ae][B>®`—€y²ªT=u!ÓªÔr»]‰œÉLËç£C87_"öƒ(Œ¨ DÓ‘ b0èqJÀ„Ír€ié››ÁE’ W`9ŒÇÔ1Ìr¬_çËº‘¿­¶?ÁæY³srvÚÞ$~³IŒ—TèÄñ[mø@\ª2E?ù<M[Íá¡Å³²œN†v3š´hÖ®Ck¡	‹ÛDŸå±ciY—sÄÞ¹²!ëmòjv^»„­Mg°1«cO
å›7
*f*|4Àê“Ä· ­Á%`$©7#~?
Áü
×”èÇâº¾+ÔóSy/C¹›íâÂñ™p_ÿ.SåÕcTsvYÝÂ-nQþÃâÞ_„»¸—ì‚IxœÛ&u‹‚œhrN~iŠnp°‹nANizfžnYjQñFK!FNgÿP— ÔæÆÌîXfæç)Äè*¸dä$V*„»8+@dœAÊ€Ê aå“«XUÔÁfŒšQ3.&-HÁ&%µ,39Õn2›YxIFf±Br~nnb^ŠB
Ä¢b…’ŒT…äÒ¢¢Ô¼œV)hd¦)—ä•¤¦($U‚uAÌÖœ|™-ÊÀ?(ŸœœZ\¬Y¢P”ZRZ”W¬` £ZT”_´5%U!¨©¨<³85FMoò_Ž$€-..Ny$i@Íp»&?äÒRÃãc} 2ý¼²ÜTƒÉuÜ2“9xõ K/’ æ`„…RxœTKkSA&"(¡ÁµáhQÌM²K¡mhh‚µbÅGA7wN’ÁÉL˜™Dª‹,ÜºTDðˆî\tãpïZÜûÄ37ïæõÂ½—9ï|ß9‡ùü:ñçMâÓÓDºgÔZé@ch”8Ciyƒ£þrœxQZáwçvW¹Ÿì^¹nQ`­>¡šGÂ &‘@ÁÜ«Ý¯—Ãmç±]‚a·öx„M»‚€p)jÇ;n{kSçÇætùw_Ž=Û¢w³#h9Eë8¥¥Œ…&JÔ¡EJ§’‘’V+!(‚Knyì ÀÀÊ˜q7GþÙÒ°‰ :–Såv—*ÔP†uá#L“N%çx*O-´$ÎÜZåš;Ù»z)”lŒHÙîçÞ7—®\îH0Ý(Bc€[_ «¥BvØ…H1"äU?ãÝÛÊû‹ƒ~t¹ºžšê8YžW¡¿ƒ‘’YÐY"©±}Ùô§DæRI>GÆkâPâ\÷G‚)¥*gsœ³l<£ÌQ¢ŸÃFØ¸b~¶X*¹ï”ü—1ÿc"³“i1Á+T_ö3“Õƒš‡d·]GíW°k¯´×&Úk¾N-Î¤:q¤?XÞŽ¹:—/fÂtI'T_Ãÿ1ˆ¬Ðgf0ß×Ã½w¿ªÅ½á8Í"º+/ð;kBZwÚL.É( 58­Á“Ë9Ø¿{°üÚ€<u$/{m,øk¡Z‰ç:7òýYþ—èì*âF{€…2Æ+ÆxÏe÷«·þYÒ¦—´œ4­»7ßÏQwRN»ïå5÷áÀýö'ßèOƒnxœ­“=KA†¹*<°QD-FD0àAŒh$	Q"ˆh!ãí$\vÛ5b¡’Â_°Ul,…Ô6–6þÿŠz›»$~@£Õ±³3ï;óÌÞ[Í¨×ŒfŒKt°ŒÒ;'gÒãŽƒá®´9«_—+ÔXr{¡Ã=3
 i[ŽŒg˜þ€<AP“©áÉ0‰¡–8¼n¡„sê9ùØÑÿfmtŽê³@h	A1ßp×1!òTø1¡Þ×^,ŒŠ†éA:ûþ‰{°ë¢emJ(¢_à!X¼\.0
’CË'0 ¿¤ägZ§ž‡LB`aFÃiô€Ðm@•HÇÔkjF§ŸÔÖæJd®"ÔŒ.Ç©T·™±šª£ì„b-}Ò –rW‚TF°-	IiíÁ`5’Ÿ¥Zzq}’,þ
f‚¨fNJcð+‚µõ»Ÿ`º¾¬%u¿±gwz¹qŠ•8«”qHsft
tÎ¨Az­§ªš›qlMK#û»·vOzn7 Úo·¨»]mw›EÙßòþ{¬æÖßX¢^Í]^âÁÑê‚4xœu»JA†Ù6ÒÚbÉºke‘"» &…†#,qæ$ÜYæ²šÆÒ*ÝT¾…ÎÂG°·_DpÌ/´ç¿|‡ñè½Ì½§o‹dÂP?Ib¿ÈÌ„q¿D©Þ}g½d·»ƒÞZ…	~½ 1SE6šÁ0Ž 2@ô —€óêpQ%ì{÷¹¹©®`ÞF¦[KF°1Ñ-ûyü:ÔS¦€ˆ<q
´¢)ÐSb¤D®yõÚ ì±1(SBj¤p=[Æª~ûíÛydÏ¸³‚JÓ QÉ„M@)…tdŠ \NÞ2…í °Wý#›ž¤áŸO–(EW¬6»†¦½ë%;çœ'àeŽ¡ý8Ý]¤ýKïõ^¡…ä ~xœ›"u™‚œXrN~iŠnR~~‰np°‹nYjQqf~ÞF#~FNgÿP—]'ÿÍ^Œ;™±«TˆÑUpÉ,.ÈI¬TwqV(È)MÏÌSp)Vp*V *Vƒ(žìÄª"	6'lPÈ¤˜Q“kXbJ22‹’óssóRR +”d¤*$—¥æ•@ö¨, êJNÌI…ØµAA#3M¡¸´  ¿¨$5E!©¬5%µ,39Usò]Ö¨ÉÇ¸gA<­ rBqqŠÌþB<®ÛÏ
 dnhç‚‚;xœ»»ˆqkã†lF±äœüÒÝ¤üüÝà`Ý²Ô¢âÌü¼ÍõŒÕv8ä&ó9ø¹a—RÐååRPPpÉ,.ÈI¬TwqV(È)MÏÌSp©WpªW ªWƒ5×a.[²Å–dd+$ççæ&æ¥(¤@L-V(ÉHUH.-*JÍ+šëQY Ô•œ˜“ÊË¶j¾‚FfšBqiAA~QIjŠBR%XoJjYfrªæäBgõÉ“Ê'7ù…8Bä…ââ˜#üq…ÐUÿF (1x«äƒá)xœÛbüRl‚kJQfYêFMaFN— Ï0×]ÿÍ®Œ;™!“9Y•X@¬ÉÖ¬¶P¡VóÉsØ$ËS’ÊRóRò‹Jó2KSÀò
9“±…Š&æ¥(ä&V*$¥*¤f–d¤) ‰É~ìêb:
@‰
y‰¹©Å‰É©
I9ùÉÙ“cÙÅ™ò'—°¿›Ÿ“Ÿ®¤P\š––Y1Yž/âŒ‡üj“„L9áJ&ûŠ@ÀßS,âk```héfìf‰M± °0S¾Âä‚¥0=“‰Ñ7y• úä6I-F. ukÆîƒ°{xœ{º…ñþÆÙŒ¬)E™e©›Ëëí ÌIAÆäXEkrŸÃE¨P–£Ûä]N7ôËS’ÊRóRò‹Jó2KSÀò
9ùé¼\E©@â…Ä¼…âÄ²Ôb…ÉÇœSe@ÜÜÄJ…¤T…ÔÌ’ŒÔ" ¡àæ›ÊË5ÙÀEÑ@Gh\¢B^bnjqAbrªBRN~r¶BJjY&£‘ZaÅË¥äéç•å¦änp9ÅÈ	¶8hñd7‰ÉÂ~³!n›ü>Œu²l ÷äè C$e¶áPßL÷wGW,:Y.@^48Ä×ÀÀÀÐÒÍØÍ›Æùâ“Â,Ð5Ô¸6Ðq2oäìÉ\d'ï‹ä˜làÇ2ùRäd …Žà‚ƒJxœ›/|Np‚OJQfYªnQjqfUêFm~FN— Ï0×Ý ×ÍÎŒ;™Uåbt‚SóRüÂ|SÂ]œ‚Àâ“µXU™cÔô&û³ª5Ä@uÄ¤)Ø¤¤–e&§Ú)DÇèÆè‚DmmŠ«ìj€Æ+ ™“²Ú(+$*„ÍÎ/RÍË,,E6_!9?771or[¦˜ŽPE¢B^bnjqAbrªBRN~röä»lâLy†“¿°õ3LžÆ®ç6ÙNGÅN.½ `®ŒT…¼Ôr°Ù™y
îNš
%ù
P_– ¥Á¾ ŠMÎã¨cƒúò7‡ƒŠïô^ÓÏ+ËM5È3DØdh09„Ó ±uâ‰·xœ;²„qÖÆÙŒ<)E™e©ºE©Å™U©›«íPD&9ø©#(èòr)((§æ¥(ø…ù¦*„»8+AÔ.qPeÓãå²Ñ/˜<1PdòÚ@ŽÉ¯fÚ#k·ÑOÍµSPË)±NI-ËLNUK/±VˆÖÕÉÙ‚„‹«ÀB5
ºÅ
þä§Ž—5Šö+$*„éü"…Ð¼ÌÂRd»’óssóR&÷9kN6pÖMO¬THJUHÍ,ÉH-R Ç&g$%&—¤ñrAìWÐH­°RÐrôóÊrS4u€Æ'*ä%æ¦$$åä'g+`Wg¸¹×¹‘îTIWUn$¯LsUÐZž—Z® v¦Ffž‚»“¦BI¾4<An‡Pl2››÷ä­þElÐ µÈTF	|d« ¡fh°ùX@# o}¡+á<„¦Sxœ’ßjAÆ	!´ÁöJk9ÿÔÒM"zÑb-Š&°­4/\l'»³ÝÙ™éÌlª äÆ{…})^yãø$¾„g&1JZ¬w3gÎù}ß9sN¯|¿úyùòµ¡J	ãaRäê´¹P	žwö£ðU÷Iïk·ò­:“Q.Ô–ýbML>ø¶vç1æEãÄÈgFél&tÈbºo¢0
eaUI)ãôÑf·÷²³µ.ÔÖG†ŠÄ€Í(¼~ö†x“
ÁŽ
³ª )†"0dHÇ…šš‚[°œNt»	=q¡5X®8ÍñD,“ârÌ@L”-4M€¥À¬‹(dbcí
0EScÜÛ	ãÜK{eoŠ	¯‹O6¢”–J3b)–¥){ç;Òº‚&3§'óÜµ€°u4Ã)ÑG†hŽøœj™eüLAN ³¬Î­”ks_F“aúÁž;ñzs¯ê»þÅ[}ˆÄ”àÌŒÚ„n(ºæ Š|@5¤’sy‚#¼‡†ÚóÔ˜4…ÌN½Ùrgþðìz\«/ò·JùsþÖõþþv»Ý¾·Ñ½ßÝ8øÄNL”½`uqvÊÁ‡™ ‰#ß°¸ÒoÎÒ¡…}·Ä0§m¿‘ŽR~
ŽÏUÜž*þõÕŠØLœÂŠÛ¹#÷Ï-›«Öù¹{‘Ÿ)
M-•ÕK«•ú/>µHâ=ƒxœRájA¦h‰9)"UÐ2¿4‘»ärµ’ôOr–¢MKb+¤WÊåvÒ¬ÜíÅÝ»4ú§>‚°à3ˆ¿üãø¾ƒ¯àî¦…Ä€‚?2Ù›ùfæûfæûŸëŸ6®#‹œSÌœ8=ýbß\)úVàlû¯ƒ¯í•oWöæÂ8ÐCF s¸‹ð¦Ýt40áCK90ú.Gh¥I2bÇ,çLý‰<ÎäæêÃçiÁ°‚áÎÌéPÒltv·lÕ5ó<†#ù«°îiW
;¯|íÓ)™"A?`³ÑÛéû&U€~ËÏ«Ímÿ`¸¬ šqýKólœg|Å©È9‚I«àÜÖ€$|¤
Â5N>)Ôî#üE‚Ü(Ü}ºœëNIÍÖÖ3ö±±umÑ3\Ô£.¹/ÆÖ‘G
4»®04qž&0m@Î•à(%©îuFÊ…—ç0³´*]ßªìï[—Ãšny¦ZŠ÷ nµUmÝšSœ„1\"Am%nJ“<Ytƒ¥yL´jwê¹k®%‚MTþ³Ú¦W–ýko»‹†<MŒ²ÙyÀ ¨ÃŒO()éÙ•áLr±_IwqÝ²\³ª2±ÊÅMWUÉ*›$èšåè*æªHíDïîAe@™9SFžyÿ¿¸yÜCuþKkó½qô–8ÊÅ{òÖGWÕ§õË#?ÿé	‡6xœÛ'1]b‚krQbqÆFuIFç ÇàÍ.Œ{™!b“ÙX•'ë³šAyY¬]“±únöeûÍòå(ŸlÈ­=ù+‡)T$‘Ë
ÊÊçlÊ™NÖáÒÇ[ÀÕ”KÂ".6ùw  7¬3á„¥hxœÛ4±sã†|FÖä¢ÄâŒÍ%Œ-væä¿öáPV¤ƒÒäF‡“P%þŽ†Œ“Ûœ|øÁ\…”ÒÜ…Ìb^®ÉÏœÙÊ3K2x¹6:/a‚ê¾åºcòíÉ‡Ýä$4RõÒõ‚C|-ÝŒÝ,!Š~»%@•'¸{ •›N~ì."U^’Z\‚OK•G PK+šøæ™ž3"zR^äÙxœû&Ü'2AI %µL79± 1)3'³$3µx£#‹‹kXÌfÆ½Ì6èÒº9ùé
1º
Á©y)
~a¾©
á.Î
é©%1º@¥1(j';²†bŠ.gŒEÔ“MV(š™œª€,¾¹„-€«Ä%öLF,æ8²ŠLŽãÔÇ"3‡3
 UªWcà'‰Å(xœR=KÃ@&.J ‹ˆƒ‹¯£ÐÓâ&ˆ´¤kk‹¢8^“·ihš‹o.–âPÜœ9º»
Bqsôø\ô/x¹Fph¼áàîyxŸ»×ë^YOk=@ÉH#ôÄ%Ò˜E"˜][W‡%˜Z­µ&‹!`Ž ÇûÐ:m"œ5\(¡&Q„1üoíý>xb8ä±_B™Q	§}ÈED&“L:öÁn¢î:kê±³¢>jÓ²dÓúþ’c«·úû$Í3p pZ’£Pwl½z û†
?TãÆç’ïÀ‰›3YOÐK‰E£0ŠÀ\mhÓù”b O!MÐ{!úêÖÝVU—mñ1tµN¨yd$Må^Ÿ÷$’2r/–M×<PŸî š“ŠvØÓ,4+sÔ±gÝÆ—¥žhóïGôT³}^ö•^Ú7Ö7ÒÑÔðîKxœ›6™ñÀdÆùŒ¥yÅ¥ùE%©)ºE©…Å›k›í0D'ó9„9¢êæä§+èòr)((§æ¥(ø…ù¦*„»8+¤§–èbS<y£ƒÕäül9¥é™y“_9<À´ÿ†£¦«&+8ËJ 	* K3‹RsSóJŠ'{;«òñr•gæä(¤åå&–(l®s®aÄ©a3‡k¦“Ü³0ÃåÑÃ ¥[r×å€.xœ;0™qÛdÆùŒü)©eºÉ‰‰I™9™%™©›ë[ìÐ':„cˆ•;È‰ ‰ëæä§OÞèà8ù€ÇäOÏ0LîhaådCg9! Xfrª²pš³»ByfN/×æÉÎÍŒXÔlÖu­eÂ0o§{6†ÅÆ½Œ ‡V\	í2‰Ê#xœ}“½NA…µ­%K‘¤¤»D
’((Ž,Ð‚
Ø+~•
;wí³3›ù1 ªt©ÒlGÉI%5yÚ<EfÖ˜X8N±ÅÜ9ç»÷ÌÌÞ^—Á÷ãàYM*ÖÃš6ÄXÝÿœ7Æªye¹UZ„Z¹ ;((˜.Bká`5„1aœÿXþõæiùÃ<¦˜á¦N±Çbœé˜zþ{åŽè!Ñ
öÙNbÊ4%Nç¾r)S²Ç(&B)3L
Â¡0Àƒ‰Dª”ø­ü[8›/„µirGÈœOýÍw‰"±AU.õOÂ÷Ásk2kñ4ãD€×þÏæuP‰PÅ(l²aO#Ëáãút6(“‚L¦H¬ˆ½¬“å÷ÑËµö&¼]sœÆfagpØ±´™ÔšñÁü¨(„%€–Á«°„B[ð³*H#Ï®¬hÊÀªM³êü»IÔH¡öAª%ÍpéQ¯vÝÙ¸Ž°ÛUÒÎDg„¸0qÎv’TÝ|Åt{‚ôãÄ©<rªY\„R)›E»Kq¸ÃÿÄ~Ô#­>Z©{FBó ‰‹vÃÍ¤h},ä‰ö¸ßx‘óöuåOt+ú4þ7ÜD_ƒ?}¯%2îâlxœû&<Cd‚’@i^qiAA~QIjŠnQjañF	F–P¿àÐÍ>Œ{™mÐ¥usòÓbt‚SóRüÂ|SÂ]œÒSKbt‘”Æ€ÕNvdÄ]Î:‹¨'›¬’¨P°4³(575¯¤xs	[ #nÙKì™ŒXLtd™Ç©Efg Íð_*è„©9xœÛ$yYr‚syJòF!FÞpç]O—]ç ŸÍŒ[™AR“³¤étÖ4q……ÝÝŒÒÜÄ¼Ý¢ÔÄ”Ä¤œÔÍX™ú7›±§B96@´‡óD Õ1!rï„¦ExœÛ0‹ñÌ,ÆéŒÌå)É›sëí@ŒÉŸìƒÀ´—Ã0íï˜*â¡P£ «›Qš›˜§[”š˜’˜”“ºyºc:s¸‹óf—¥Œ`Æz×7¬`Ãz÷3 q"®è…xœuÁJÃ@†)«bEèIDª‚ÑzD±R*¥EØË6Ù$+éî²Ù´
ž¼‹ÏàY<ùž|Oún’¢Déqvÿùæ›y_}«?¬/E<°ˆíQIÜçf½2ï\´‘}yÒ>{q*¯3çå„â2dC—(IÉÄ Bp@§CœÁ¥"ôÓ<àI:$šY›Ë‡r*€úÉÚ‡qŸ2,ÓcCæpÄ¸àh|s6ùÐÖá]i ”AàWjR7—3…)+ký¤§»¡­]¸2²B¢D¢íg å6F4Š`ò–õ1À)ˆK}J<-f?Sü(+zKãêýÊò;ÙŠÈïî —Y9Yö«z`e.žÞž[Ó‹½F¯u
—CÉ-ˆˆ€«÷jÍÿ·Uµëo ô¯ æ!‰Óxœu‘¿JAÆÙJ9¸T‚Âh!<c+„¤(&Að_µ¹Û$«w»Ëî^b@Éˆ ‹…­Ø
B} k;ÁÆ°v/	‘Ýjø˜o¾ßì¼= ûôtŠR!oy·ˆPIüÁêçf4“Ê×ëÓ’æ²žë @hII‡(Ðm!Ux¶y*%*‚KMhô†¤â:ÙŒ0×µóX›7_ù»ÙÄÛÂÖÜyƒ2,{æ½°8©?ý©8“Øà—ªÛ¦~|Î4¦l
Êu&íÿ£m ìÙÚóx¬E¬½&—¶n¡)gÐ¥áJc-ñŒº +×Q‚ø´II`®ŠéÁf1VÿA¤l4ÁN•*h)K¢Ü‰â,›±Å:p	‰2Þù¥¼¼6üéáó1ƒXYnË€AÓÈB'Ìù.›çÝØ/áƒ‘3‰€ovª‡³‡­^¢:i¿î?·kxœ•“OOÔ@ÆCŒœ<!ïÅd!né.ûG›e7nÛº»áB	)Ûé2I;S:¥AìÝ“É|cbâ×ðê‰oÁMgÚý%*Ú4íoæyžwž~{výôóê2uÌCg€‹æä#þR]š{Ô1ö›=Ëh4¿öç¾?ØÊ3`¡›>qˆO1¸8!l¯Œ3X$£éJ{¼ÔöºPÍø:ÚE»H9qkU©˜
B{¯þRîOáÖ«£Œeá1cÂh­jZ`Zý¶ÙIq7^!Í#Hë½±4ÿ®Þ`AàPW:ub˜K<2ö=uiª‡,Š±'f±ÄùŸ£œ¥(-Î²ÝLp,¤u{ð
u¦û·÷*òæåtcÙ\äŠ&Ò,å²¤R-\…Ï'Ë˜	ŽÂˆ%„Ëï„ÁLÉŠà9ç~Ì•Œ~Ñï¯ŒŸ¸ ïç˜ï"ý¢¤sû…²fFdH¨ãC¿s°ß0¬Ù@…K¸¬àòÎ=éMEoé·èÑŸñ–Âõûì6Œzd¸†ß&geW{ÉÉâ(ÁnVâ[|Z\¿ßLú;;‹’ÓØ®:%öWâ
­îÔ6di6h`=-q)íæ¦¸\<}}W±¬·ÿCÐø‡`¾”eÈþšiyJÒÉs±ðDûš”QÅáD„Àsxœ•SMkAf/‚Š¥ôð"¤5è’MªDš6dÙ¤MÝiˆ±e»3Iww–™íR-¥øGÄŸ¡ä¨Ï½ýžÅ?àl>M¶„z˜yç™y>æŸï•w”O/•[ãc:.Öæä5œ)g•TUÜ¨Z‹ eT h¢cÇÄÅë&Xñ¹ú5}Û¹qï(àm¯yQÙ2öö[†Y‡fm­•Àõð\ÓhxHÃˆÐ`xÒnÝê4mk|ŽÂ\U|3~p ‘¶g5ºrEì‡Ø%=â‚I}ß	Üw"ð)’Å±“©fZe8¤,Â(£½úÇ©X©åÄws}ðÇl+·SºE§ž]¹_0|(oëP²¦TÍZY ½	…Qru+V’!qP_¹¹hYÞ¥¡vUH’kÕ´cÌBFcÂå>	ú`‘eé§çœxO¸ôÓ)"1¸žÃùö}D˜9žxÓxxÑu<‚@Î'˜ofTý´ ”²‰t›‘>	:VwÏ4ZÓì Nà	¸(ÁÅ§×EoHô}}±¾#áúuî†tpiÐ#ý\F5<¨Ÿ \Þ%“Ç,Æh+ïR„+2†Å¯Æñ»þÑ˜4ÿì­
I‚c¹É+Òå"Dn·Mý¬¼l¯|ûXO~C!iíqÙÈŠ/»j5ÍYL8KÿC¹¹”R›ëYùZÚ¬§
ƒËÆ¹ò€­pÕì/…œYxœ’ßJ#1Æ±Ö®uoÔÖs%‚Nÿ¨(”eYÔ"Âúmõf@¦3Gv’˜dj‘â¨äôzñÊ‡ðÂ÷XØWØd¦‚¥[Ø‹!$ç7ß÷åä¼~y˜ºÿšç‘8C'd”(&~­|Û¯lU]ggïùçÐË°Ó€ëÀ!Ò vvŽ77`ß–Öõl~ZŸŒ,Ïðô¸û›{z ßl¿ëß#«i5<82‹­SrýK|†žEÍÇk‘ A#Hå©H;Mv‰Ù;ëÎrÉsÕ6G_aðÎZ‰ ¥/W£„Q¨¸Ž¾ÍÂ§Ã´¾ÁÔÙ5ý';Ö)µK¥\í¦R»N´’T`A„í ‰Ö£v“ëV\ o2Ú/€×#§pç½<€®
aTI;Œ£ð”½–@5í½	´Ì"pv…¦—±ßDS¾ŒˆÀ /ÕÊŸãÿ1"Týˆ[¯FÜcbxU×¤P«ZY(k™)Œ{14˜—ú)³P\´¼ÔQrÏGh4™é¼À<¶+P4›"m…X¢eý–y™4!w™	c“Hˆ+}7~5Ñ7?&zgQ·óõ¿‹Ëä0‰áLxœ’?o1ÆuSª«b@‚áå$
H‰r¦„T¥—*h©¢0àœß&Vïl×çKs‚…	`ðÂè@ªØ™ù
ˆ•	ìAíÀdÙÏãßû÷Ó‘÷ã÷~ßóe®ÆØHgZ¨ãÞ³Õê“9·6hV^ á× `9…ÁîÂ£^ÃÒ±õûÏÑÚ—Ë•?·›˜®ÂJ¢;§,Æ•±î˜ow>?Î…À®=,ù!gù)@ˆEšçäÔ¯I%¦Œ"è	B¦‰Î3{å­Œ¹0›7ÑÕ`c&1ÖHF¡˜ÅŠIÍ‡vÃ¼.˜ïwƒ‹‡ŒêI7h…á•À¯í)’b7	EQ™§ýçK;sB$(š¯ý—gÂYšŸÚgËTÁÉ›4±êæ=§¶N¨=Áÿ¨7N¨ëyV,Ô›N½ÿ·º¡”mD{Þ)+P˜å‰«q@ç©ƒ‡h{VÄ	Zù g
é|Ëûÿf\[^.{TT ÖoÃ¢¶Ðó&Ù¾dêëK¢î˜0B@f‡¡Ê‰”Oˆ"v
Ê¯ÍÇ×pÖ†¦½4ù4ÅðzÝ!	pÛóLk%"Þ‡ÓÝ¼uü:zâÙ€ËËa3véfPØ|d¯c>l+¿ºŽÝ!ûgÏ?_y¿ §^í†!xœ›(z]`‚òFmÆÍÎŒû˜Åbt‚SóRüÂ|SÂ]œJ‹ÒS'¿ã›lÏj9¹‘ÕÕ®X!Q!¨&¿H!4/³°IBr~nn"P;å—e¦¤+”d¤*¥—æ”Ä¨émæà¸Ë4Ï•WA?%µL?¯,7Õ Ïp²;— Êx/âÝhxœû5…ñPã†lFÖ‚Ò¢ôÔÍåŒÕvæäö~ò`–‚./—‚‚Bpj^Š‚_˜oªB¸‹³B XM¥Ã}I°ýÔ\;µœë”Ô²ÌäTµôëÉÿ/1O¾à$Ê
QýÑI”§X¡$#U¡(µ¸4§dògÍÉ.Î©:
ùE
‰
y‰¹©Å‰É©›×8W3Ê$%¦%d(ÙÙØùå+ä”dæç+T¦–L^çb=ù¿{ÔäZL!ˆ[õöëç•å¦änþëQË ¯!Säéôxœ›-ºTt‚"WJjYfrªnybÚFmaFV×0OçÍÎŒ{˜“2
1º
Î‰9É¥9‰%©Å
%©
I…ò¢Ì’T…ÄÜ‚œÌ´ÌäÄ’Ìü<…´Ää’ü"…Ä¼…‚¢Ì¼’b…¤ü’…g°X0.J-.Í))žÀªÁ1)dÏäÖí6ÉX-BÖÛÒÍÕleÌ(&þå´Eá»q… “JXWïàfxœû5…ñÏÆyŒ\)©e™É©ºå‰i›Ëëìø“ÿÙ¦"¸
º¼\


Î‰9É¥9‰%©Å
%©
y…ò¢Ì’T…ÄÜ‚œÌ´ÌäÄ’Ìü<…´Ää’ü"…Ä¼…‚¢Ì¼’b…¤ü’…g°X0.J-.Í))ž<Ïa/²CR3m“±Z„¬l)/6['ŸqÖÜìâlÀ*ˆä‚œÒôÌ¼ÉÝqÈ–}òè` ø3c¬ã„ƒLxœe½JA…	²$Vé”Cì„üt‚Úh~\!þ«EšÍÎ]3Yf6´Ice%ì“ˆ•¯â3ˆ¾‚“šâÂå;‡s÷¹ú½ý²»et)n¨ÎE,_•ÒfàêÁyÐ}ë•Þ7þòŠS­=Z¡ÑŠ8GkìÉ	ÖØ§³Ÿï”Ë3aL9•¿:u‡R„ÐŽ&C*œ‚ñ8¶Ldˆ9M™†¢l¦1ÄJ&È&\#’I
F)	ÆÅ=¤°
¡8xè6lrg¹Â»Å€×\Š‚ö†}ÜžÁç*PÛ6’	)ø¤¸-p9KÆ¤
É{HIùQ8%œJ™! õ›4lŸ¡c£#ÂÕ\XaÂS·á{¨uïN.®ûÝZaÛƒ0	aÎ"üûÜ&#Ó\Ê­üÃmý 6ÀŠIî!‰í!xœmQM.AN[¶4AÂN^‹É‰2ºYøÃŒ´©×TÒUÕª«{†…ÄÔ@2ÜÀÚÂÀ)Tw0"oñ¾÷Õ÷¾ïÕËƒ¥ï­GnÙDÒ‹”¢c]W~õz¼ÚX´Ptl h"' Îv[;mÏ…4.þbuôSõmz ¬•U ªU‚)í`áL­êõ×vü-”pz‘ü+%óÉ”cGR¤”`þÂ'„**¸BN‡Œ.™ŸaúÖ]Ðe·6äØý®»lM$*JÔ	ö¢Ðç9c¦¢ŸkUîXS-S1¦(31(‘+(†$‰*‘	R0³šÆ?¦F& ågŽ-xî*·²¢ïÜÂ˜—»ª·áÀdŽ3Wuj‡ÛpÄ©‚&½Â™t“X	†Ò\URc`7a§(³ÑTý2BÙìø!Â†
Z(¿„æ'Ü-ðòcÂ^—üœFúÂ[ÅžÏ¢g*›Çë;ûÛz±:§ß½audvxÊº¤óçÊ%ó/¥lVÎ4ú…Æ´õ	ŠÀˆäˆñXxœmŽÁJÃ@†©²"ˆ¥âPAñÐè¡”êAì¡IIlÉe³™¦K“Ý²I*=Š/PØ§ð(âÑ§ð…ÜÄƒœÛüÿüÿ|/{_[Ë]R
&ÕØ2to<ÿý´ñ±zò¤xíÚ‚°Š¨ wÔG¨=¨=…¬ QŠz…œ7k=ü	…cº1Î9Ã+ýL:ú•\nÀïè>9Óµ=]‡ð¡.þ-&³Œš§<‡2Ç
	\ÌiÊcjn)(*9†T&œÑ¢T²i:¶ÜAËÜ÷<7hi×ºÐKëHZûÿ×ÿÖv[{¤©·­ëÑX*†F c÷!‚ æ3Ê°"b¥É‹"]@Tæ¨8g¨L*«H'†Ë¬´àR ÎQI–ÉDo>~çH{ÇïˆØhxœm=KA†9!M$•")&M°9D+!!zhâjð»HµÙ›\÷#ìí]ÈŸaµµ±S	6þ
…•…b“Ú½Ka
§šwf^æ™™<yÏ·ÞKäI•~Þ°1MíçæÁúP3ƒ~®Á/àeDÂñåBÞ†¼­‘ÒåhÏ·Þ+3¶ú*ŠT¹©…˜2ŠÕÈÔ c¿›Ëö>¨ØqÐš‡¿°õ ±8£¡ãû=¥)Ú»í·Ã«|ÝÅì: JâXIŒ!L¦„³¸YšÈAõ€«ˆQÂKÅ.Wô:¶§5û±CíOSØµ½{ÓÚ°A»l¿Zå…ÿîÊfv›ãÂ'h/µ÷#©4‚$ã¡˜1ÐÄ9¤á#è&ñ2²jç[ß‘8IS2ÿ&`ŠÒÕUõ''s¿¨	ŽDê(‚¯txœeRÁJAe‘‰ë\ö[ÅnÝUC ÔÅƒ£¸{’½´=µ»Mfz–©šCÀ_ôYH®ÞÄcÈä;ü€|‚V÷d³œ¦ª_Õë÷ÞôMë÷³¯P'äÎçÜâí«fm±wÐtÎŽïöj?Ú38Eé|— Ò<Bî]´²$È ºIÔw?ŸÔÝ¯èiãÃÞû]ø"»ÛR»oÑ5	SÔ²à9<¬Ü÷¨í`“a^òÎöŸ¢Zg˜õîãâÖ•!*‘€Çg^Í‘²j„Z†ÚtžeJ¾†Çaª¤‡á(Í&·ƒ•.ôÇ†dHDp¡,æƒcÎCÙ„/X1®°°Ù·£€\†&¹±Œ%Tz\-Ÿ+ýiÆpŽ#c­‘-¡§Rk$r/ë×wo—ŽjW…—&jâîéAÜ=9‰%Ž5ñ,¡ÍS°oâ^8™G.eï¢2õÇ<²ÝŠí¿d+Î×ññ‹Â$	U™òìÀT¥%úœ-d’’!Ô¹MÈÝ/'í*Qooh
âÊµø³*Cš(°én«ð÷aÀz‚Óu;ÍpCôXØÏbÃ=4ž»¸	°Ýõç‚@xœ{/zCt‚[Zf^fqÆFeFN7O?Ï`Ý¨ÍŒ;™Å 2ºUùy©
1º
n`nêdV3¨¦Éî¬±“'°òL^Âê¦_³Ú€iu¶~6ˆòÉ»ÙÌ¸ÒJsrŠKKR7[³e„é6åtgŽQÓ›\ÃyR ¢Z!¨d_ñäH.EˆºˆôSRËôóÊrS€ŽIâ<ÃÉ›¹l >=C"ï€'xœ»!zXt‚krN~qêFFNgÿ`×Ý(ÿÍŽŒ;™…ÀºUùy©
1º
Î@Þd~VsˆúÍ>¬“YAb©“Ÿ²™ñ€SŠKKR7°¿b„(›¬Àé>9‹ó$T¥%—T¼‘+ =*²ëƒ¶*xœë™Æøe*ã†lF¶´Ì¼ÌâŒÍŒvPöä¯öÁ’¦nU~^ª‚./—‚‚‚X$urœÃ˜B}ÇÜÉc&?ptÒü›5œôÙ ê&G;›ð§•æä(—$–¤*äçñrm¾çlÁÓ[à¦>ÙÉLo¾ànÎ( Ñ§Ô²µx²´g¢²3ôSRËôóÊrSttó7Ïö,d áH‹ë€)xœû2•ñþTÆÙŒ¬É9ùÅ©›ì ÌÉßíƒEÁ,Ýªü¼T]^.g Àä$‡³På¦ŽÞL¬Î`åmÎ&<`Á…â’Ä’ÔÍœ™¡FE»©OÖsÏ˜ã¦¶y¯»9#TË/l¨9ÙžŒ ÿˆ3á	ƒ7xœ»!zUt‚{~ZZNf^êFFN77O?×ÝÍŽŒ;™Å RºUùy©
1º
þ`þd~Vs˜®Í>¬“Ù!â©“Ÿ²™ñA%RŠKKR7°¿b„)ž¬Àé>9‹ó$\½%—\®‘+  T1ïï	‚xœû2•ñóTÆÙŒìùii9™y©›ì`œÉßíƒ%¡lÝªü¼T]^.°Ðä$‡³pm¦ŽÞLìþPmmÎ&|P‰…â’Ä’ÔÍœ™áÆF»©OÖsÏ˜ã¦¶y¯»9#\ã/l¸‰ÙžŒ ‘J;:íˆbxœ{/Ú(6AŽ%¿ 5o£²#§€«_Œn”¿ßfÆÌ‚ qÝªü¼T…] g2«XõdwÖðÉKX¢ctct«ŠÊj€ªŠ&3²)L~Íj6Y­Ÿ¬e7›HKjŠBqIbIêf7öWŒ> ‘5=.½ W.½€ . V¸Y@á`.Çœœüd …(‚óRòsÂ‹2"ŽE©‰
%ù
 ×m¶àäe„XæÅåqß4®H ‰ÑF±ä-€Fxœ]RÁjAeÑ]ÝQÉA0AË ºÁÌ‚àÁCŒŽ¸ Ù$Â\Úžš†žîIwÏÆàDæüƒ€ää'ä/ü«{ÜDsêšé÷^½zÕßî/Ÿ<¸cÑÅ‡Zaœ¡å?Ÿ.uú“d7÷Æ›ÉÙëÎ¯k/ÿ@ÃàW‡*ÃüO#*§dÌ1È©`àñÍýîã%"§z3ên7½›Íîí»£ñæ§k$ia½ýhõ Üÿî>£³·ì5_­¿}H0ƒ¶þ‹û~ì½ì‘<¼½ô‘xoVheqGgúd»‚PUíà@HI¶sVKNƒu™7Ò¡QÌ‰Êù8b„‘J6®K„Üè’†Ë…Dºe8g
¾ Ø
¹Èf‹N'QM]ÑöcµÓ%Is&åÜS¨àµdŽ"²¾Û!9*'ò9(V¢­Ç³Ó;[%SlJ(õæzÿý6uŠ†;I4ÜÚŠ.r	]&F€	¼ˆÆ•ÉÖx¾ØÔ`‘A`µ9éŸ6Â!¬(¥†md¶B©QHÁžÏùŸ}{¥—ð<ð}K=Œu-t`p¿-‘f‚ ¶®*m­$34*]O‹í_TÔ>)r·ÚEcä…¾âæÔ¬l£ºú¶N£Éúµöùæ`ˆúixœuTMkA¦TÛ:¦6•*!
}[¥Ìn<h[hiÄÒ¯ÐZÐº Óìl2t³»ÎlšVò„¹{óèAÄ“?AþÁƒ¯žœÝ$»-ÂÂî¼ïó~=ï3û·ø{ömvªëp­ë:DÃžGóã,¹v¸³oh‡»;C[­V?é#ŸGÏãÄ¯KÕ5i3”Ñˆ¬†µK&iÓY—†fhnîáš„Psyiç`{Î@ÚA}‹?ãYñ}|òV—ÛGxyicw€àúñõrj&è^ LŒ¥ã€“ó€Œ‰}YäÉÆV%D˜†%ÆÐõ¡{;é~¬ é‰RðÎ2bšë±¡Xr(ñn|B¼ŸH Í 4tâ¤3ã1êXn,½‚«ë­">ô¸‡và­Zpž¿AÀcná&t¨m#žË|eßZ[•oìCsÀœÓºCLð]åËeêæ×#ûÔuŒéûOa~·úL2»?ôjËì©ÎrðŸ•#}oÊè€“~gmjÊ¢(PsPµæ6›XjiA‡×àÃ¹A®¥l½#Û­C(½pâ#-Núib‰rùðV84–C‹ÇGôaIñ	ðŒ¼nQ¦²ÉY*ÑÜ‰æªÉ"ÎÅ%2+£h—D R¹»'I¬‰/Ÿ§òë}µ“EZŽè]W»£vŸ`êÔ‡;•£võÅ—ÔêííD¢~Á0™ÈMoØ¡Ç¦MêË¡5F|v"´éBÖ
=rWÁ~[õ¥p•èDgºœn@JÜñcjóJ³ïsé™ÑÀº™~‘Åñ ©¹XÐfzNüL—2^»ât²,ÞgnöBt*åÆ©ŒÆ¢V(/÷ŽZòó~¡´hÔn¼A:±@çhE¤oT! Á½¤ü«¡æ¼Í7ˆmKî\f›ó@Écù88ú@|J7zÊ©‹É}Ìü€~yËBe”¼‡Ò->
:[QÃÑ A‡Ž…î ©5ÜsÅÏÀi7e‡Cü§y“”ÛùÀWPÖ¢ú{”þÊÇH·h¢N%¬²Wß2Ú?2¼éçeˆä5xœmTÏoS7WÖu¢I³¶!&*ö% ‚GZ	TXC Y`kšR‰&›Ä&÷='µúb¿ÙN«FH…·]ÌÓ.ÓHpØ¤McÒ.qFš4Îü`û%©óº(z–¿ßÏ÷×Çûñ?©×?§ž¶SS=*¼£ØCQ„ið,Lí”’Fõîzõ€máÆ»ZÂV,àN	Î„r1ÀÛÄÇgÚr¾÷<Š:XDÈÇ	®÷íÆªõÝBß ”¿P¾Êä{"Ü@¶¼æ Mú¢2©^-e€z	Î§¦Ë¹QÐîÁL'ŒKÞZ®ÝàXœ\‡ŽÀ­Äå+ž]ïTæíz·<yÄé€'†žu„3÷y’3”äìTÄ	m±$.Ç îÝú-cú8ûõïêßfF=i~ê¯Q]ßÇB\ ¹‰!â¬ÍQvHÇãÒÚkå%½"	;H ‚´)@2ë4‰Ðb<›6»¸
°s$	£êæ¢úè›‰ýÿ»zú³ÿ‡BßÂ^CàA/Û$Ðe†H ©c½>ët.Âr(“C´#›†þo$–µlèFÈü-ˆ¥Oº¡+pœlÍÉDè¿èâ`?£éŠÔsÓôÙCš;,17qÿØ%j¦~6ãŠXO?í%ÄnŒ™Þ(H­­ŒOy‚ô°ƒÓ©©•Cª[½œÙMà©wQ7ÒŽ’ã„éíFûOWì©‘p@4¡íýÓÔCîp"ÕŸ+''†£«·+éÕ‘”9OÏ‹÷Ùâjeu±1©~ýî¨J5Ž©ª9Uk,©¿ú¶Ÿ³Öö_£2Á]]L{·<‰ÚŽ$Î©™õõ‰ŽSÁznlà}³Ž«26ð]©gß´z^¯©÷µ}ÿËÚäØ€¥ó«óêDóá^7$BæKÅnXÊ¦‹!1ßH–b5‰Éoâ0Ôä0y TuiËlå¦‘—Õ„ˆí&ÆÞ;!—š^C¤¾B±næ¬’òÜÃ0ÿ¥.Y05‹Ù?Ô×ìZÞ´¥CmL>áó•˜JkŽ8.}àÒ)Àþ&K4zèvG·C8ï6´zÆsuÎ¼Èóæµ3¯é¥­bÁfÓéÌ¦3]¸Í.f¨ÐŸ½hÖS î‰ÂêQƒÞBxœ½SÑjA%ÖMu„R¡TH‹^[l…ºÛÔæIÒ@[¢-4mh*H™—Éîl»f3v7AcÃ>ë“0_ác)þ‡ÿ!‚þwfwk
_Ä—Ý™¹çÞsÏ¹3_æ?-~.ÝŠÈ‚_.ÎfN[Ô<=:¬S³ñªqU+|*å ³{ÖÍÛ &œâ‰¼,.ÈÇ¨  r× ò›Q”³Ec!ŠYSÓo³­êÁÎv.0/µ–?ÈpwçÂÅVuÿèðu£ö1>àFþ0–óR3Ãkäá¡ün<ÉC³ŠÜ?A6œÃ Rö¸MM—³X\ùËx”ý¸×Ç&Ý ì²x«ú²q¢Ë –²SÜ½	]TÎ½fÇ^ €	˜ãxjÃ|<•3Ó
‘\›>¸ŸB"`!;Dæ«Ó…[	ŠG74¶5f:%Öq*ääœƒyâÐ*\ˆñLÙq ]&ØÏ›¡+æÕ‰õˆ*ê°˜e~*GR3õê˜Û²IJI³‰À!\†›ÜÜ¬%XÁµØm­dŒƒA^YgæÞÃ„,h¡óžëÙàzÜwˆ…Ü	z}M;>›Œ¼.XÛç©†ð~È£´+-(W&hÒP³òG‰ŽAzBýý‹·Q .Úž`áû´hk–êo¶ÍƒzkI+Oó-ƒ úz¾j–+«ôi»Ëµòæ*µ‰EGÄâ¾`˜ÄÚo‚ÁskãÉˆìñwàô»=5Y†ƒìaÌ÷õˆ£”Ìs3šŒVÕ.Y1èâ]ÈžÕO’¦orÝáƒu.£	6ôcSë¡þ2ýõ¨tˆåz7(ê)A6ã¤tDv´¡7µ&ÿQl ¯¥éd¡†€r_Þ‘É6È©{+¿Õûàâ8”xxœ•RMkQe(“Ò	Xë¦›¦½`Qk3ù€Ò…L
Z¢LSRgásæ%y0ó&æ½T“Mþ€BáíýJVý	.]‰¸påÿð¾—Iœ¨WÃÜsÏ¹çÜû>o~,\mß'œºq7–® <ü´¿n­]´Nê¾Û|Òœ[×+Ëà»ê[® ìÝ›ñäLuígêÚnl ¼ð]ß"’"2õÃ¾½™Vh€E#Y5ïä¼y¤‘1xê»}·b!‘Äw#Êk^£5ï‰ÔW{ß6ê0ç©~îj2 ¯‡TH‚1LÉîß)A£²GgUÝÄT 	C¦HzBFÉb2Ñ§ëŒE#€£»²—
™
s°húïUuõåôçjÏšD°È²d_ÒYœ¶öb´^;:H‡ ZwJ§§înF7»LI¸w0Ì‡&´U@«¯ÿSöDÓÿÞwvrÄ1Á¯L aÐ™Ùãl€Åm².–7œ¡böç¿Ïôë¥*²±¥‹o5#‚÷¸ñ´®Õ¦ÖV¬c€Ïx/Nº4¦\."½a¨7s†.¥ŽX…{A”j8{XQ_œ-ëºŸß9ä—1Ö¹€?5”CzYÖpGsÁ:TÌû¬ª÷ù­é¹sË*ÿ­ò¶ªÞåk¿ ãµñxœ­[[sÛ8²~÷¯@¹êÌ:»¡å$»gjS©Ô*–«6¾IÎœ3£y€HPÂ†· åáüöín€/ -ïÄUq ý5Ð7tàŸV§LŸœÃoüYJ‰·,ÙÅ¢lz›æoÙoJ¦·‚šuÊ”ðµL“ßièG‘ˆœk:Iýiú…ýïâ[è}$ÔV­ØN%<SÛT³w[­³·£Qúky®ÂóDèÑûj"lÂ5LäâÍèÍ«Ñë‹×oÊžž<zËn?ßûŸ²k‘¹/L—iûÄ“MÁ7Ð6M6‘T[l>9_^³S4=e§¯àÏÉ)µû—…?%,ïþÊŸÙD„2L¥±`Yšk¾–‘Ô{¦t†?ÓÿÿÑB±jZuˆµäÉyšoF»øù¿~SÂÕê|“ÔÏs+wb´Õq4Úäi‚x/þî]¼ÅjsqqñêÍ9öý¨™JÁVÉÙù†Š¿²Õÿzr."cJeëŸ~¨"•Ð,!/"ÍÂ4¹Ö2Ùü@T|	¶Ýg[‘pô´“ódÛèûW¡´¥O½ìŒØÀ´ø¿R‰P³˜ç™°4‰ö/NÎyÀ¢*†›ñì–]ÞÝ.§·K¶XŽçË»žÎ§ìÏ?ŠÍ½uÞz‚a‰­<ŠBä 
Â¸7óÓ8æ	,]K&Zä!÷+´ñ­3$\y~$_¸ÅÿÝÞÝ/fpm•¬é•BÊ¢dõ–ZÏ“ðdÎˆ4œ³w–Ç{ö.;é‹÷ì·w ZõÂ_(‰Ä.…š0@Êd:ß?‰SL—óÙýrvwkf_yÓoY.”bR1ÎB®ôK¦|{IÁü4ÑyE"¯É#Jn mð  ”e"x1K 6£¥°ûË+™¬¹•F~kˆË,ÈÁ»ÕK¶.4ã‘JI+/½:KwÀ1äë\úêÅê§sšòró¬I ËÓMÎc3ûB…Êêú‚éÁPÃ  žÃô@XY-¦’lhÂi˜iW6Óì‘+°}„È„O>Áºæ“LŠoº¥f¹ˆ¤P°fÄìîrùI¡[KÓzO­1—	YÖ‘'TˆMN‹[Ø<àæf|;±µÜ³FªXƒùmAÃd@1ØÚ­LYÕ[2—fJÕìÉÃq0’ƒÿgß£jšÎÅÂ°ÈI0‡\ˆQA"@F \˜N,µ‘¨ÐÄÂóµÔ9Ï÷Õ<â
'Ê0´³4<Ìï¸$S{Éò"a§ä–[e§-™|š±ÅÃ‡•WÎbÁNo@ž´Ýßƒ{|@Dâe\)½Í°•³Wà²óûëÉ˜¤uoºÒb³e—ú§\ÏEƒzv‡Ã±¹3\äyš{QºiÌ…Î¥Ø	FÝºU‡2Œ
µmP-Œd©£3<P±k0d:œ-`7t‚Y,ÝåDLƒúŠšXÂcAÞs¦^tÉ=)Ú|¶I;ú…m;ÃÝ!
Ø4Å®wìèñµµ&uë’š	éý u>&QÊƒýÄv¸ˆzŽQ-šÐ^(¸.Z&ðD|eÚ»ªD¢6'Êh¥Ïð“ƒxhKçûå²ìa×ŒWÞ,‘Z‚¬'Ž¿…4U^¢<ôµþ_šì¶Ô9„2åž›‚m iÝNB°Á~²ñíøl¬ö1®s˜ÇØ÷! ¿p"Š$(ržøbÀÇÊ!n€0„BC›nAˆ(M‰uB›/¸`®h¨-4$7Hå‡¶­“2‘w00H6È)‹Á8y=á2ð|GÍ@fÐ÷àseÜwÑ%ÊMU©ÌI´‹!«í!ü|CA
-ÎE+S¿‡åltW†jDèšN)Ú3¾¤VØ~ñxn7¦
ÜÁÚÄjeâL÷È~zÈÚ¹¿mÓ©u­‹l"ž “©{oƒÝé˜¢C‹'E Ì&h®Xw#Ø.ä}J:¸²m*3Ž	Ðä2ƒDÛ9¹“îdh%Û&úFæjÓüb­öØÄnÓÝEjÒv'û@ËÚçØ6G”~¿ƒ™tý[š2Uªp•>­‚¡ °‰9ôô’=æ²µ«Wt¿`×0¡÷]ä©PCô¿Òˆ'`ŠÄOó!”Cx¦Ú¤_j©Ê×B¶6í±i«Ù'ê(ßÙrØSfÁ-ÍšÆçEJŸµ=ÏyZ(ØT'e—<3GAÒá»JøHsXþ®™CÚÀò”%ý¤
6Y7éB84ÒNV­UwsÕ4<Û; « Êö½¤ª'…[R¸.Í6}DÝ7mz­Æû%+¡+h¨«|,a[\aç²I Äé€Bëk.µÔÄRnÈJpbcsÃ°ÄT×ÙATœCµ%5NÆ»2õP0³ÔÍ=´†˜:$w…pXì,1%	šnÍÊƒäxœhHâÝ©OªfæiüŸÌ_J½Žý|ic2˜åi&r½oy6Ç
D€ö¨œ¸µ®Äè0ˆE 9DW	Û›æÉkÉŠ 9”H¥«Ã‚GÁs,Þ	!ž#º†#¨@|žyãH†åÙÀ¢„ 8æcT¹lÌåFtù¯Ó¤9X¯|€!àz¹–„æ¬¢,c/ÞÄ-7(§tLÐÚ
ÿ‹l¡&Ë¼/¢©\{ÅaÓ+6¹^y×7ãË•wy=¾7o@Óª#ÕAüÌ#Ô—Ÿì~ñÏ.B`L”IàJî›	6øf 2pW\ç‰ÿ¡>I'à.›íO«Jí#äª›"	o6yq.Í„0ekcO×rW³IiMdjS[Û¹+ýäG«
!±3ùšâÀíÿÜ:\šnôiš"Öœ¼¾P-Ø‚>ŒÙ‚ºÊXë*Æ‚Ï,»•feÐ[ÌáIÌÁqêÔ„9dAx(Y;®Ä“˜©=£³ßº¹{µÊ~k¨-·¾ã¸¬ŒJ°åMî(±«·í×)X>dn>OZ“Â&UÞ>L‹­]ì¬Þ›“©¥$X^É°åù}Ú8í¹jnÿ'jÏð˜vUˆ4&Þô*ÿ¾iÃŒKíY;›©.¼hh£¼?dŸÀÏ2”<zôbèÑLpÌró|O¦‚{Ø‚ïÍØºÝ–=®*s…¾œ,Ïâu»^‰8òOµ¹òg7"Na&¢ÔÿRåw3ŽŸßNþÊÎø®ú²¬UéeW3%EúìxTôÔ	®_•
Cá½Ê	‡…ÛŸ—’-X1d=›V^Iai–4˜áÑ“Œº²†l¤ešz7
’„N³f²w‹‚•Ý†ooîÍÕæè3ÄZðþÃ§ûFo#÷I&öàun_PìîLï3õ•A6‡4«3ÿ«b%š™1Ž"NY(#Ç1ñAÇÇý©G?}³~	jbÑpÓyá;«VÃ
¼ú/óX8D´3’.o™]žkÒ’Ð4z°«› #¸‹qPfZÜŒçË§@Á²3‡pŽA4{ÐÓ]r×Ž·²÷4ýGÙ‹…ê?§Ì…Ÿn?»6°ÄÂXŽãt 28ZuwVè*ÏüLRCŠï—‚=Bè~ÒÏÓÄó#(Ü¼Ì—ö~²u8Ž½˜NÖî/g¢Ñ`È°8ÛH° vCÀvm}lŸö­L×¹TÃ»çï2sû™eš É€§A=¾Tñ8ß¯­)>fM$Ä!x`¯ykLÐLŸÁE‰·ÆpßrB.ƒi–bÕ8I?òÌ­ïö³„&ïíÕJGD}PèwX†@(Im¨÷x)ùö¨,óÀ3yf©}C	Eš¯ÓB³»Û%”g}hqU|,(*Qà9iÆõÖ†MWÞvGXê.Š¸»ª­„ä¸æˆ5ïr9¥¹<Àm»Ïý´ ç+ß{9îÔnÈÙÒoxb{§¨{æ¿§-ìH†”NŸØE4Ô`Ê‡¡ÞškL"Ý\—å¸z`6¬e×Lè[Á#½¥D°ÁàAÙÜÌÓh‰,ƒGûï&ù2´&‹DÃ?Ì¥Çêw2×²ˆM^eoy¯ÞØ\ÁËá»aÄP¨ÿKc†–~¶t­&uêíôNŠîë	ˆC2ìc(
ÓDÁ¸‰¯-(œãé-êÎµŸ
É{lå—ÉeCU82I10—YUaãtsdb^ÒU§ÎþP1D äÌ\)(¼ ˆ3×®Šº7Cag2dø¾Ô}Õr@­½µñ¶_&îûÐ«È_0K`q€I‡ú i/s„¨Í#Ç^x ÀÁÆ¤¾µ×kh\+²B/½¥ˆ™HZÞb1ñŒZ=û é)í_":fJöÙÐ9™ÐÛ=O(Ô¦äQOnß1`¤b*¶6hºn33LzC©ýhÏ0è`·v¯h(ª!‡9`¶L{H$ä›ý—¹€+ßùª	£V8Œ”útDös®¶]¿ë''ì…4Âp–Ò¬«‡ÂˆL“¦ñ+K0hŽ$
sãÅi"µã‘`iv³ãY~€÷¥`+Ûø0¼é'oé‰ä%Û,„]ár¢ñOIËUPTû‡YdQžhÀÖ€¡kéeíêO6f¼m+Ï:ì³[R•“Ouðêòc÷†G]Hý¯r2+r˜·Õß€ùßã¸•wc}¼ýƒ§€Ÿ×Ÿ²5qíö±÷yþ
Y¡ñ-ÌDžð¬ªGºàš·à
+ÎêµÜq¶^=º¤õ˜ªÍ@ÕÞlwÀÿ©zúMø…n­/|\ÞÒ–dÏ“çÓY}{±Uþ^eGïÀ¯§®nÚ®š˜¨ž·¢ÃØÃi²gÞ™·ã$Æ½Ñ41‰vãøVY¾ŽµOÔ!*à¦ªuD5¡²¶ŒÒµQ+|ÜC,jæï‰ªÞæ~OÇƒ·ÎËÜ_a˜ÉœíÅˆ©–{
b¥J|+×‚fü.Jóµ qÏ1Â¾ÚÁ¸¢öcQ†÷\XÐ¼e>â Îâ&}8€Ú_ iâÝ5ß™Ž#×œf"q`@ë‘ æmAô¤’¸° 4À->£«m\¹2éAÿžj8à-HgŽö®á¨I– ôþ³sR•ìAõDÃÌ‹>S!X'*!ò,ë>+ƒÛç:Œ	–ûÁËê«“Q¸gK¸ø†£ûØ¼«öˆÃ¾yëÝošppm8šù VþÈÍGgÃf¼ýTX<¦¾	hRoAˆ¿Î›7QNqÊDAzàÙkŒ¿-Âž¬ã¸ò˜ÙFj÷‰2~„3Ÿ.æ·ö“¤1˜HõÏ£„ÿ­Å–Û{&Îöÿµ7]6ñ»Àï¢TAoûÉ_a&›BËo}®æËëéœMî.n¦·Ëñá[µ…ýd8Ì}eT~8B‘CÊ|øôjÿ¶Ž
ñ;È|X‚ü¢æÇ]óÜÆý¾úi¥¼×«â·W¿¯‚•úËëj.ã‡åõÝ¼ú
KÒrh„`ã´|ö yùuWé?ªêC¡üm›Ëë6—ùôþn¾œÝ~d>Zf÷\ûkés.|èˆ_ŸíAÈök+m>»Ã¥¦åú0z(I‰×õÉàGµêíh´9kàšEøÙÚŠ¬d„¿èƒF;Wf·ói¬”¾’£<»†]ƒi/ô]èá®rm¹.7e¤ƒ%2ì¨»åE0»g§ìÕù©‰Á•þê³¶¼ú/ûÑ0b™nüjØ.á¼&œšJ*J\•Nß~Ycë?Ìy-â7DLË¤U¶i=ÿ0_-CÎšó j³
èß3Gu×æ·	‰–xœ<MsÇq¥TÊXäXòG":#:’A‹ˆdÚ"	òñ=€€E| ÉDvŠ˜·;ï½	÷í.wv^X¹ä–ÓË=÷œR•íªü|uUî>¦*ÀÝ3ûÑ3;‘®b¡øºgº{zzzº{föß~ûÖüáÏþsòÖÅo-6—¸»»Í‚ÕÆX1lÿñž`ªHs>,LçsžD,–‰`2)D>á¡`e!cYœ³µd1AË+«+·7²åïü`ù/÷æË?}çýq)ã"	Ëâr*“/ ¿¹üÝéûËÿ¿÷éõÛb¾É>‰‹[‡O¦Å-ý;
ýó—ø›çS…¿–O·o,úm¤ý=ñ¢‰’iM\YÔ-uƒnˆ¿³ÿ~Š¶^d¹PŠIÅ8›pU\e*ä1Ç‚ÍRU€‚’"OãXäD=‘Pršˆˆéê
"Mu›)6Is–¤K“øœwYÍeÌtRi,áïµ‚@*—¡®²qY ©X¥z~‚t{-] Ï	ç2TWÖ›ñƒz^Ì@ÞÛ œ£Œ,O§9Ÿ›”
ºªŒÎd‘b“…ŒpîAE<AA]Y,y¬‹¤J¦Zvª#ß:Û-ØWlÎÀß«L„r"AQ0@ìñP&åÆÕêŠ,X.b)Œ^«d÷`xòèˆ‰DÏ5tÎe¢mî™È6ùò×§w¿ÿ´šDuyÙbÃƒ½½Áþhùjðí¨f ’*ÇAÝER1ÍÁ2Ñ²eÊl-„Ô¢­®4ã(ÐÔ°5ö¤Êb~ŽÚ ³Ÿ‹©T` ¯@ B.´ªqÂx²º’fšhÄ™ËÂ¨VÄó±,ržŸ7‚¬³m”VXX:ià`.µõ]ey™°Ë8Ál&âì²¶€ÛÑò·§7×žÂ’|
œˆ®tK [úX>?]_þßƒ?_¿~yVðì“ÑËOQû¤ëüld¸½1»±¼¶sýÎmÎf¹˜ÜÑ2Z¡AÆ•*fy¹>+æ±áé`Ö®]¹½Á7—_ýâÃô$LZNglh˜,?úÕÇ6}ÔÏ%\Å•Ý$P$qÃ&!ò<Íƒ8R"ùî‘(r)‚i,¬BzŸÚô&q©f”–´t.}ÛLµcÿŸØý#5§½á'éûCÓwÄÎŽEÁöxþx.’)Ž$i>ç…%Š†Ð1mkKø\è•¿¦® ¥›¥³€‡…\€ë±Èµ`Bó“í'lPÁÙÌeGÖ©öÌèOÙµõëW<SôÐždá01@ÂâÈb¨¡švÕ5Ñ®ìQz–Ä)²5˜~	*¸O¥g®¥!ñ^c&“34LSQÁ‹Ò6]¦2=€‰Þ6`åYØËª"ï>‰€=!±‡F¨[6ð:`IE~îR³„æ‡'5‚íÀ¦ì&²0çQÍà³Xg<™Š(HT€.ÌeãAf?nÔ:4íØ~m³°¨fPŽI©9Ï;œ ¡ÿýcÄÖä]Ãrs‰U B*hHöku>G%î[‰aÛä•ž™ITæ<	EÇ-Qáø½Ö5Õ-jÒŽå‰ÉD„…ênÁ„ìû-Yƒï‘W‰xVÒRA_jt¨¾¬jØ3hÐ`2r­\½”—›øGØ°!R ÊWlÊ¸KR¢ø›Ð[Õqïðá.Û„Ç"d„ESˆºÙ]#Â98­:4ðlß¡”(j¤Æ”<ÊÂ^‹¹…KJ	¹Zr÷ô~‚+É?H™†®h¢N¹¡¶»qPïÙHÕ#b˜ƒ?Îh µì¡BÔ“ˆ³vN=$#“C²Ò c¤L¼€Áb¸vU^<œ9T uûü=Ä %6]bÎJ–©7®"`ªF^/¢Ò®×–°Ñ©Ö#f?6bêíéšMV($>¶ñÔ0Bòj×´Yª#ítÉe9¨g£®ÐtÒm‰Û]yæIØ]ÕPýHSµ’½*Q.Çêâþ¹gâ4!Ó Cß€©Ölš¾¨B{½k !ôý#À:Ò´BË\3EŸÜ:oÛZmáð£]¥JG'¶vÅÚŽÉð·åž4A0Ý#@P:ÎàÏri¦`™Mé	b(©Ÿ{H/Ež
Õ¡XÁévãþZ7 ôoúè—I˜æ]òL¨ÿCýâsØˆu¡¡0÷ˆÌŸ—ÒŽ/)œb`@då¡±ä½ì<û½¦Sg¶5‚šÆQëgáBŽš«î*¸½íkP?ý›^úYš»«¦ê}¤!”$òŒ±œ ×ë„Da	svÄÂ…ÉìÞ­àÀ$r!.¢© ÊóÒD¡ùvMóX;yƒTóÃªåÜM5/XÑašÛÉxvN½°¡y,±Êd²ó–Šò'IÊ—$]Zis$_0KÏÐ.­%Ý 	™K 3²ÔXm¼¾Ý-’*Ä’›¥Ç
Fè~P§^°OËÅó½c‘²QÕÞoººMXûlb¶Š0ÑôÏj¢º>UµAf¸šZ! ƒmS(tö–N‘E÷ö0%¯	ä">C”¶!JZóØFÝµ:ÚML!±Éº$ì{5ú¹gò:ck¡dxë£Ê&y:1ÞécæÎ !L?ë0}És)&IYžf"/¬•Iá„åç¸Õ*m4¸>”‡	wjžd."ÉaG“Ô¼“zÐDŠ[MW¢Ë¿Ày"§ß6…×3Ás,…jrÉi|å,ÿ2Cÿ- /ãY`¨tRÕž6Dª_ø¥ªË±Ç5½7„èw‡–ÀmüêÛ1Æi
3â©VX"Î_5âÜ‡àUòBj>þ$=¬„
æÓ¹½–)‚Òo†áwýNÔÎDø,ˆfáô÷LØÛ€ƒ#\>Ö…)LñÐÒÒm6Ú	vöÃ`¸384‡)ÐÁ7M³ˆ•ŸY… ðcËˆp:yxÌ¿ôeá6#“¨›“»8ê$œÄ|U$2p_¨9ê~ÐWùyMÀL;†ÚÓ„¦Ral5Õ ÷el{°Át
Û*¢²Gˆ	Œ«Z}õ¢ž&4vm„ØÞÕkC/œ­ª–T•Fï¸þ*é1"ó'™P§›ˆNž'.£
Ls^—‹&¼ÿÕ~ae0µK—0±ËŽrÀ	Œ¹v™¥rÝy‹¡©Ž:îØ±ÆÔû¤¿l¥xÆã”yFq:@jìy¤ñMéhÐ¡Š]­{áâ/lmXGmèu«C8,6ÃàªcX”â…Go­f\C¶1Þz3Q=üõUÅÃæVU‘€	Ëö ÝÕZkÔ™'P¤)!·æ©ÚBT}~¿åjÑá¯šIÀ„öš-:‰–±”xqñ¯¢h»ÕH˜ü¤Ï<<v{xô˜žO·ú×äüšæè—áYlà½wŒÒ‡÷Ö¸›†•k÷¼d9„G¦jÄÝXÌƒ&Ü>m¹µíØCðWIxÎ2œq]W®yïuykª½š¿ƒ/” gOºbÈ9ÏÏµcÄ£l	$=Ì±-áÐ4¥ïVÞ´2÷®Ì©:Â%éŠ[.Ëæc‹ü¦«åHà1-`ƒÕù‘˜§ ìý8Ÿ5Gõž$Aq<º{Ù9o¢p[âjBêõfîÒíI>”7ù¸ôS] ¬v”Z+c]®_ð¸>f˜Ï{¶s
'Ì¾[§úÎV~×Íªäª;‘Ê>8k¦ÔÊ	ô%& ?ˆñ§vÑÑƒ¦.¸™dÓfXbÐm-ÈXyÎ±!Ÿk¦¼„Ç@hÀàÖ£P±Eš¥ ÝyGã5‚¨ü;Mu¥F.?8ýxùûÓwÛ7Mªë[OaiGiþ´¹×EnŸš&uÖ^ýro¤8Bãu¬Ø{jGD°é‚¬oÇCÍly™àÍ¯„Çîªêb½©¯á[ÝEûñÏ®_»yK±º.8³@8@Ê&2ó5¼Ð»b”£ºb4("Ãf#Cß˜¯Âz,Ê<©–¥‘¤ÈË°.À}b€ç|†g¶°›v!Hê~Œ!Ô»lÈLãúðN+MÞ³ÄñæÄ?àQÔåm¡icÆ¯ED‘N¯A÷Ç{ƒ£‹©ôjª°æ³>µ·8ÂîÆë°3!tgº»'Ú•üLHŸÛZáÖœºÏÆoz¹¸çnL÷¦æø-a:M`ËˆØŽa§Y3÷ÆEiMÙÇPð¸£	 SŸA™À^g¿:«B¬§l4—až&AžY(«kaÖlöµ!r†ˆÄÌ«=»9î
`zai*ÁØÙž¦[©ÅW^3|û\ŒM$zÐ¬o‹×É(ËËá^Ê¬ñ7C¯\	têš~éòÛìôÜáù|H”2w•âg®§¡y‹$Ìo¶Ì_]ð#"àšë‘áØ+ƒ1Æ`á½|ÖÛˆúî1/Q¬iJÏçg<‡åB®¨íúÐ.ÜYiXxšÜ÷ÎCÿ
Ao„ðý½zï´¡‡-OÒÌ°Í¶ûmÀY	Ä<Y€çâYåT¬¼¯‹¦njd.ñZ¬ù8-v°28¤njàå«æýLáxÛÇ­MàýíÑ2^ÌªS•­à‚2PÓ"Ë¹þ3ç_ªf2Zâˆ›ñ8°×ê@Þ0÷0äìsbaZ&úË=õÅšåBõú¯ž&Þ…³ÓÚucnÐ@ÝšÇ˜	ÏÞÅÓ×†¶ûæ‚éà5‚±X8e‘óD…Ð8óhŒi%]KäºÖÈuR7£[o#teº¯¶ò/ûøÏ‹™ÎÅü"DŠÑ#UE•f¬Æp´uóøü¥ÉeLW“èáÊon—½#ØBæ…,ç&õ¨.üÙù¯ÉM†˜›ðæ~•;!÷ºqÅÜZ©2aÿ¤ÌŠÊÅ{ä‚´2™"ÅBŠÎUâojKÔx6™FÕ[
½;ëŒ0Éã²zÇ³P´¦z³v/»D¡>íŠ$·¡pojòd4tÍÛ&)n½©ÉÀË½©x$hp>B˜D±9üRÌ—ŽÚÏq¥¨7*çY‡­Û€…«PÔ´`Ø‚­É	Ã‡/`(ú
ú/ûø’óÁLâsªs?OC"ÇO‰MLP·gU{³¶<[dË¥q÷~!4­:Ö:Vòl )bš„ßÈ¸cúÆÆD¨×Ê$¬Í3få|´Êñ>¡Ó2
ŽG1¸ zÍÐ•×ßŽ–S=æ;Änº1SÕ`M7Ot‡\ô«§@(47ÉãŽÖ\<áþw.aìÇÚ~l¢àâõW·Œ/f!ÞŒõ8Ã–d’~îG<ü•fÇCŽ4šUå£G‰„,žnßíòIè{lá Çu‹#iÓÏv«Ëû„9W3¯»²±ôÎEúÖ=´ïê±1$kôØ=kôá]=7OF‘¹Û˜®¶'~Þ±©îó4‘E÷}ÖÍhŒX¯µª«šµÉ„·ÛÀÊg%ÈÃðþ©vívÞ3Ù‚ƒÞùh±ÞSyÏ|èÎ¬¸7G¸§¤CÀd~ÞXÞŸR¼Ûër®Ð cõì[ÝdðK2<reKÕ»#¼ÁT¯«‡žÚZzL³9ÄìYþ.Þ¾”€#„3Ö]ûa—mVæ0¸Ê‚\žÒ½÷×¬ƒCÝj¯2Â^p£‡¹—)a¶ÖeÖÏÄ3ÂÞ¬§ƒìa„Â†z¡—ó0‡ŒÊ¸¯]æ’0ÿ¤ãj¬–ÔÏü£—¥yç	ë^aµ¬y'äáßÓÒ[Uó,ðæVŒ©/bäyR8=òJûÑ£¿­’n½aYØ*ótéŸ<O4yA&ïAiî_¤³&_oBÜ¾ ÁoOþ"dÙkÌV«~}/óöÑd{¦˜÷Þi.hMÃ\ØÏpÚØJLÚlƒ¾ê÷—Õ»rð°ØÄ¶½º²ðUØ”òúÚÐ¨£Þri£\ÄZ,»–è$g/Õ<}™&Ý=Þôö]ç…è×ÐÊä¿Õ-SBl‹w<"Ä©š~‡wƒ¡—·†ÅÏV}D [(O‰4&0GªùÈ-Çnkp‡›]ž€½Á)ª)²ï-úO€nxÙÙ÷x a¼+ëZä Ë)LðÓ^ÝQUÞû•wËÃ#‰ŸA 7ë è'íß<*Ñ4:ú¢8_Ð¤}^T/¬¾mÑ·)Q›ÊÄ°Vüæ1k}CÁ;´Óy-æÜ°K½¦ _õ¹,¤µymå3jîF›ñè/rhž=+ISäYæ<…qP„Ýòî½Ï—Wõ—[=´æÓyÑy­ÓÅÒCSí_Èåèêé;.äæ¾ãéb	·]nø¨‡²zàa•Ÿqóý	ïÔ;hZ¥ØF(ÞeSXèJC³¯œÉbÓòõÑ“yhQO“1ÈDAp˜ª¦Þ7»w |-h‰«:ÇfõynµwŽn?8–ÿûàãwLZ£.om<:Z¾·ó~úåh ÖÛ|ÌåLÂ¯±˜ñêÞŒ·sÿwnPUjô~ˆF•ú™¾^~× °º‚i.²_ŸÞº:)sè–?Ò°Ä	ÑáË›ÛŽNv¶ŽØè`øhokÿdp²{°¿|~z[Ãr’ý—ú£-Às"rHPÛÏß4êœEöÅÆêÉ|Zg=Í§—7Á±I˜“xu…~uçXBëÄ{—Å,ÍAóáDþá{CXyzdx{·àõgvÎ Ž‹ô‹gãR…³{æƒ;†ù—Íà>Âkn?2.L&Ó§ãrŠ3Pÿ†vSµ|‹o¾*BÜÆôÇuð~èf¢úôM¡¿‹¤ŸVƒcHTIòbuÅRŠ­LAŽr¼s»ã§„´9i]áÇ§.oZí^õ6ÄA°*B0Ÿ$Ò¶‡
À`˜A˜WziéÜÃjŽœGø¢U+©Å#yü
Öÿœþë·`°0GËßœ^ƒ}{ùÏ|ùGŸlg²Öxœí=isÇ•ŸÁ_ÑFJ$ $å8®]Ñ´‹æ!3¡@†€¢¨dj4Ó fÌ@3ÑL¤ýíûŽ>ç @YNì¬Y¶Hôñúu÷ëwwcï¡^ü½‡2Éeÿ<’IOb™=O¯.ú_îî÷Ódv'îmí=ÜÅqº¸Ëâ›i!:Ç]ñåþã¯ÅyRÈTd‹4Š8MvÅÑl&¨U.2™Ëì½ŒvK½CÕû‡§ÃQOâ…Ì™%â$¾‰‹ áÍAr×ÔmÌóer#Ng2,²4‰ÃšíöÄEACa·Ñ4ÎÅ"Ko²`.àÏI&¥ÈÓIqdò@Ü¥K	`Åy‘Åo–…q!‚$ÚK30O£xr‡eË$’™(¦R ’ó\¤úðtð\<•‰Ì á«å›Y
µ”â½ÌrXó¥ ¬Î§2oî¨ïb3TØˆ³†àÕkÀÞ"‰8!ÓtMƒQ¼aÑßH±Ìåd9ë!h,^œ~¸|>Gƒ—âÅÑõõÑ`ôò Ójå{É âùbd@&’âfˆž^ÿ ]Ž¾?¿8½i&ÎÎGƒÓáPœ]^‹#qut=:?~~qt-®ž__]Ow…JDK"€+4`óæÉ"ˆg¹žøÿ~¶w%'ñŒg)ç@ã9M–4La£îD˜&@E³lòDÅ°‚-üíü†å,x“!•åÂ	i³D^ ¹ÑÜÞÖÖâ$œ-#)¾‘Y–¤»Óo¢Y¤‹Â/›„I1ó‹ò"šÅo*eqZ)z“¦Õ¾qRb™ åD~Yg²Ü:w™û¥€ÊLJ£Üå{0ñ¢2v$'•–³ôÆ/+â¹Ä’ÀÚ±“åO¶ÂÖ´Ãt>‡£2m;eÉ{„ë– îÕB,é/2Z¦úòþÿä{ë0¡8‘@å£Æ@gã“óáq«5|9<¾œœ_‹övÜ3¤´¤4i×ôÄçOkºb‡øfµýžýÆ]?¶Zü²Zs}:º>?¶ï[DÇSÆs<zvÙú#Ôî=ƒ`N$MÇ HþœØ±nd®XJœ‰,¸Å£9®Ûg6œ™xUºiO,ÉßN
¿üÝ2–¥¢h9_Œyª[lšä…k1 CŠVëP´`C9~¸ÿíƒæ.YEY©É<_Ñ-y—PŸ|ù¨¯s%+‡Éß‡qTe°3G¢#wovÅù•ÀŠî
HSãi
uüY8;/^vò•âIJ hVfX$:ÈT‹p!Š+á@g½ 6²>SQ$TÅš®j5*=q1â	°õI°œ"IJÑ:LÞÊ»*¼h
­êîô‚Ù*˜Ï'ð¸toâ>²Æy;H¬`	g4"fö«K²qœŽß-åRæ8`²œ¿ÀpââTp1;ÀCtô$@*…(ÿBý+÷	€ßfq!káSMÓûkÀ.`þµP±â“€RŸqÿCÖ/ƒF—À>þò¿V~+åbÌâ÷r\ÌSŽ%‚JÊÔg€!Å)éG¹Ñ*a‹özÉYp‡MÑ'D‚ÏÒ<×:†ÅŸ´Hsæ9ÀqÇY¹P ,'7Ôë/ü7éZ£‹!ú,Mß.«†œåc}pt'Þ¬¢%±w\<ìÌfé-0}Ð*áð Sœ¢”ÔâV‚Þ™£L²¼”XhSÂ²d,_5fœof@mï&0«JÜ³¿X«‹,½M‚Y.W2¥(ƒ!@8ÒŒdB-¾ ›i§2@ë€›ŠÎèøj3öú~°Ñ Øðþàa[\ØÉU´K’yŒêöyS)ºÀ0ÿ<¼n±dõ ª$Mä’‡ZzÃ×F.¯FC0ÛZúçÇ­‡ ¼žv¬,m÷ÿì;=Ñ†z(Ù6Õ½–Uº=Q‚‚ÂJ÷WP
S4RPà¯*Ã.˜ÀÇª5ô¡i	ÜƒAÕ}ªBÁ“Ð÷ÐÙ¹u „»Ø`ì!4mÂˆ`‘¾ ‘Ú™TaQŠ>ÔCò×yçIUk ü©Š·@bç¼Å,¨Â`Þæ™I¦›a	ð,ÂU/,¤óÁˆ&ëÇiŸ…œ¥¾x‡–Åèº®"é»½V	 IcæÎÐâ= [Ñí•@¢(ö±Ü¹2 Þópt*JXRa%´»•eV|Ûº’\/C)Ü')Ü±§1|Ëà|¡í`èW”@1Ü'É¬Ö1d%±m×±Tá¯#Êæ>
aI±3cžàî9“ö*JH‚`.±„8bˆPY©Óâà”dtØ¾Z@ªìU ©Š2R,ºëa©Ê*,Uaa]á1ÓÒ»¯ÀîœðMú=ËÑ*ðXBôY\«]<O”;„âW”A‚ˆî³`´SÞ¹aV|—HÙVT0A[†·óTah¥uÏçTXÃð`a«4bw£DfyÐQ-QÍ”pÿÜj¹rÛµ¿ÜˆÌj9HˆR¡#IêjHTàØ:Øúx°e¼Âóz1‹ÛTôS&79érSø4…Áó‹ÐæÈPÍÅMP'ËÙŒÝ»ç!c0´2íVE0IØ¹'€Õ/³DìcP7fð	HÃ‹o4£°gÈˆ°7Né:q2CeÆF á|±ßñ–ñqÏS‡ò/»[°Ò`lv¾È‹ÄXÔji`9ÔŸ®ƒ 	,Èoq=£ŸyM¤·.®+(ÎÇÖq46ž3â¶t‰™*Å´'è#±aÀÅ a!¬(³Žu ÇÉéÙÑó‹Ñøêäx|:8úþâô¤ë jB×eƒ\+£Êf>d%T¦€=ŠRœçAN;¶=Q9ÁpvÂÉ?K	±½½ÕB®ð…&[ÛþFÒ©åsm{‚ ÷¿µ–ß]ïrüRT#×M<ÀïÉÚìº®Çq»;Å› ÖTÀº«³ß°rívþìl@Ô°hOSøûÿKvØÝÊñ˜½¯ÉÒyMÖ¸É=ŠpeZé<ÛØv×¥‘ºÎ]¢Ÿ¨ÏÆÃ…¹.ÔÔ†s¡‚IšeN©{œvQ(UXÈürnQÅ4¦iƒÞªvL¼žQ'T+Ý¥å…ô™Ä	./~RÒ§[ôÿG»ð(–šÖ]­z¯_»þ´Œjÿ2…o¯w× ó™‘X=>É[éÊ»·A‘vÔx¼§b4#]Á ‡‚Žo;!¹ì=CÿuJˆüVæ:î±¢§z{[|Q3EM1 Uð ‚Ó?d–IšôW "áô
¢J¡NÝÈßŠýn3VûW …jâ	a&Ñ’Ñ;SK¾^ÂÇCˆ5»WnWKU¥Ã¯w›4<œASá6Œ¦GuŽ8©JË¹<Þ_Ç‘+M·P™ÿ(™:L˜¿;ŸÖY§é³î”Û5èaˆá¤íêŒðN™è†Ï¿¾ŽGÏN»8 “@ÍÃeGL)@ÏT‚“àEžŒa1xtà¦€¯n]OaDU´ ÁeÎ™”V—,-’Ë3Ã&¢üT’ÜŒ ïAŽLge­‘«H£¢ñ6ißNßPq·³l' Q“¨XvmúòwbÞNŒÐŠŠ}ññ ‚
g=Ý!}n}óFN(`:RéµÚ“ y™îàŒÛÐ¸ÛƒüÇ¤Ý³"¸È¨¼CÔF„É„;{«:Ùx³G»pV†Êj‚æ…I1R˜ƒ„V%†TquoålÖ›¤·	-ô®¸ÊäD%?ñŽQÛ· Ü3MÀælÑf4O·f¶pnKgvÍLñÀÁ›Ò£=^ïS ÚT‡äfé#‚'~xÿôHr'Ëy&C#cDUHûÇäÄPâô˜ çµÓ,ÊÅƒ¨'Ú¬ðÂO›¢(ŽB±_hü }u}¾üú«¶"¯fý×_‹t.–@¦ÿíL`ª]Z+§˜x˜ˆÅ7
IøûÑ#¦áòÌpR`+€èC	ý¶	$Ä2¿F fZ‡øãÏì”º>ˆ¨êQ1Ñ¨îSd§|"Ô9P-*Ä³Ð‘(EðS×ëDÙ$˜›n[Ì¢f2ál2|§Nòhl®ò§îÑn{@fU¨ûªÝÒ$ä»'¸Qþ$ä;;ùÎï‚Ò6Žpu™ÉÇ_ëmƒ\]…¤©AOzÖP¾]QF­G®‘×J-›ÛJNfÁMî.³ëwäZšc	}®é2ÑµòÛt[áì%Ñ ¬Ž®G/¯NÇ×'ÏŽžàžéá³hŒ™»)$Žhô…O$yïbûÝ…C.>¤w‹zH\^…ÄåuÂyîì·…åU0PXcñVÞ=û?=Øÿê'¥´ŽÎ¬ÐÝÎPÞ #{{P·€£ã+oýÀÀ¯Ÿ±ªðp-ÂÅ®*/Df[‰/æÁ{Yb‹&ç«'VsHâŠKÀY•bBÀ\*¬KñP¥âN"<&‰Qs'( Óœyòr||}z4úp	tôâ~®ŸŽ{b8>¿~>¼þ ¿_Ào­q@ïoÀ¨“ÜÂ‘Ü–Ï]B=ÁŠœfQ£D.`Šêdü™NšFW<2¼ed}sË…»F÷¤`‡ÖE§g†õ8µÕã, øc³É¡•å0ËåqOA@rˆñ€Ãjð,ÍÍ&Áª…ü<¿ñ]hD#z¸Hb
‹Ë˜×*¨–mç±Yêç\­ÎÉ‰R{™Ó9DÍž?½*å3Ú¶“aó‰
æˆ8©ÕgcVÜªŽc×ùîBtåXýHë÷º±… ýdÜ4Ö¶nL±VtÐQ>§¸©îúÝxSaØÿ9¤“µ‹çšÌ²],¥p°=XÔ¥ÊyðÓèµ
¨.g¬R“Læ˜„º}Ô©Q‡J‹UNüóËãÑÅxtþìôòùˆÎò…ê„á§/1-¾ú-bÓÙ&œ´UB't‡ (Ža=žl¢Ó+µ”JÇØˆâù†£…RµÊ€‰Jç×-¢ƒ«¬à)YÌäèÈáËëgGVz” ±h”…æûP_ÌI¾_×ïÏG×/©s4†	t:Ë$o0í’^gÃ†U5¾c-á¦r¾žTä 0ë­«Ññ×ëØŸ dkJÒ,lÆÈêÀT‡Ú‘íÕŠU ÓxQ©õ2ã«sÖ˜ÿd,©3gÌ_­C«o²¾±kœK­ÃÚ½m¬2Bªj×SË"[vHµœì¤r3öMéq89ûÐÑ¢©ê#Oxï¡8šÁ¶Gwšá=~Gæ)Ðí©ïÑÝ6îv‘C›ííZA5S¾rë*WßÆ=r½¤ö\Di²Sò+dp0eÙ¯ˆm±Wq•yU‡·F8TÌvð×ñgñáƒ>k­ŽŸ__ëÈÁx¼|üµ`Ó€¸\ÉÀt9 à‡â$Å|â)_gª:o´³v*uÊ¾ ówªbÏD/ÛÂÜÏŸböÅp|òü
$Îùàì²ÎPh‰£Ý"_. Ø  ¬bïvÆÅA4Èð¾–¦ –=›°_¸·"šjSíqjr×¨åÕ‹¶ÁªEPtdšÓl€ÆäO˜£%Ï¿ÊÃýN·ç)¨HPójž^Ot`ÈŸ1Gà¨\)–•&–™‘pD&TuÍòùf¢QœùŸz§âµën‡à\/ì=òH­*˜D1d×ÄªÑÝ+{Âª‹ô³­dË·UÏTµ#Ø0Ê°(×Ñd©©Õl=6yâ—€’£“
}¨|ÈŽÜj5¹	¥§…ãwsê>:KO‡‹×ðPœÒú_§Ç£ñÑØf'/)PDw}ôèn¦qUOòíêD#j[RÂ7åÉ8|@™.A™i»·å¸7ÜX$N«£t&›œb-	FTEV	l ».…ÊÑTtü×wWÛ —ß*ûl]­-Ú`£·ÕwÉDAæ%Ò?Q	ët¨QÁ{‰{˜^Çru8l>NœÜ wÛò›ó«ñÕåõˆÏ=g+ÇŠÓAÏ?ˆ§iÕ-zEôZ4¢p«Hl†ÃŠ@5*MÆ<ÉÒ9©E”¿AÈJ‡t"™‡%ÛÒo¶ÞZ%š*¢²#{Îá2Ÿ‰~­¡iÓ÷Ø}®Ú©›YÞg¼ÙQêç:Þ½ŠEóøª÷ð{–IœÈW_íÿ÷×¯•GªBrç(¦k4¬„µ}"VU_ Ÿ aÓl^›¡ÕuD¼O„ÍÚ[«]°„Ð€¶ z†ÒÊÎÍÄ+•tQ€ÁÄ*¯sOV÷‹R8Ÿ:m¾'Ùg0ÿ5ÅlPþhÒ7¹Ñ˜Km˜c§,ÝKvÏ°?Yvö§Æ]¼T×2AAêk[X”NjE'½/–+–#ì=ö Ä~&±o'yé·©°çàÞ§¬2d{åêùàøºÓV»m­ß#TU¨á¶Ïâ M ¿¾Á[JÜ .îÊHÒ6ºË¸Ï›:Yêí3Úë¦éke‰âFÞ:œN:]åN`#NI&§Î¶Ž3ek…÷=ÈÿCPÞîwTwŠùho'B"o§·YaÛ85Iù†CØàµ¤bdÁ<71^äÇÓÄøì|ÀÄ‡µJt:¸<ŒÇEÿ±b‘x¼ÑÇƒ÷·ÂŽw¹§ÍneÈ·
öay…Xë&åkÆàWû¯_Ò¢}Ác<—sP;ÈKz¸«jüLÜNñ¢Qg;W­Ü& uÅî"UÂ×„#ñ*ýPìüaXÝ’“RÍ<û ¹`KsA—vÀ¿Fà‡èúö+mà‡m±®ÅAÒ´Ô£G8wèt°å”¾6\Ja-ÂÅÑ›U	õšcVvõøsq`öàl$ ’\v˜?3g1ELð@­¦0 Ê´q‰ü©ÐVµ!…Oi^¥¦¶-Ç°¶HGÓ¢©NárÄ¿Ê
ÙZçšð<6„ª\Ç„¯¿9nÇ·PrAÀ(»e÷ƒï}0-¬çÁq<8^‡v5ˆG)M.´n†RÊCÃÁšÙÖXÀ{ÚLðµk.¸v··“JKÞbDV„Ïy!›ÑQÚðµ¸Õ/ÚÔt85œÇ•IáÔW.“ªsŠ-Äø	Ÿ0ä6Œé~åp}Tö1´ƒ-`^Ði¢bŽEA<|•þH~SçJåfÉd›¨‘­ÍÕHÓa…ŠeÚXm‰µÏZcH+ŸVëìù×PÖ'·ÂF&›ho¸¦F“,çÃÖ¥¼nšñêjÔÍ¶ƒ-cbÖµãÌfkñ7sÈª_PÝÎÀ{³‚§nÙU^õVìEJf£´ÑŽZÝf¶kÝƒ–]7¥‚8æ¶tD¡H¢­Áÿg½‡é¼DŽ¸kÎ­'¼Œëi©GòòÑ,ÿQIh ø-Òn.,ß@Rc³ûøÙ}i¶Jœ5È³MÚz‰Ö Ò´#½"ÔZa²©Xc¹–G•+=’¢­^¶•rÓ?Z¿atù¦\Rw&Ö#Ù ã>MÈ%Úq¿JÌqêOEÐ%ÆÕ²U‘T”Âæ×:UacMx.U¦¾+ƒÏÄ&zèÏóD|ºïÃ‘¼PU~‚É"æcåÂYí•ð¤y9P_–xè
ˆw?Ïã¡7“^$2£ÖùA¸ÐÑRÖºH¼ë÷4» ðúnûäôoxïžË{ôÚŽ?•£Q_²`dƒÿî}ù|Þ½E¼«ú2þŸq“pAèÅ{8z&¢K~Y7¾Ö·¨í\"8ça0Ù>Ïux6‚-ú5;‡67¹‹Û÷}N/“ëm÷ö½ê'«i>³ÔÎ«ö² ¥"íxšJr˜É÷rÖ1ôÀ‘ ãÊ¼Vg&×†aÃ_‹ÀÝ	ä>é6}›oã
Ì<’±ŠBŸ9<ùdJ+¶CeðsQ«ÓûI,hKf.ÂÌâ?ªb1'ZSÖîYÄÝñy´Ö@©»~bZY;5ª²yƒ…MR2CÍÞlÜ÷†SÕK]Ù¿cäø4ŽÜ~qTÒ$¯)=ÑÜgTOÆ¨Wãì®7ñtpùìô™ëQ¤ÕµëÈ²Ä†Ñ4Áqdi½UŽ-/(•xÝöà¯=à+òº>:²cë‡eô¾“@‘mz¢_Õ@½N73{§€)c±j:šÉ8ûï¸?ÖxXÏ%~£ThŽa•uÛrS{”Àñ¢Ö„!HŸŠ£„ö_ºÖ+d7f«MTsðóqêÖoóVÅµxËr¥-Öl‰5ÛaµVØzlVk}Ô„ãÐc……çÓ¦Ž:z3CP>žÊð­ ç	% I|p>’¨OïC€ ¢×Ú¬Gâ‹ê5ùÐRÚ¬«êÓ,5ÚP¤1{¦Ç®ÔÚªœTFë°±ñgvÊî³<µñI…Ï†döPƒ}¬½ÔÅ›¦¹PÉÑàd²øY0ô‹_á×=J
5½rhãƒÐóe^èo¤g¦Ò+{Ót9‹0ÿìt’e¤ûÀ4A‰/vÕç½&‡ˆÚ‹©ÁÜwž0ÛSŸˆÄE@¾¯Ây].õ¾Ô®Žõ %ÑôRóNNDM°uo5¢3=ˆ:õ ,¼TÝ—e´}]Û¿út…¯äîò[Òð0D¼Ìtï[œwœ¼Oß­¨áúÁlÖ¦×¶aMÔÁè™Ä‰‰îlŒ¥u
j' Ñ#hº¯žàÀ‹l9“yW¡)“|™QæXÀ¯+êÑ]KÛ‚.58aÜøD6,»OÌ|f§sîüR ?\õhÄAX~ø¡•±_	T?#aƒ ^ÊË¯ÅÀ¥	}öá ÎÄ› ˜¥ÕVùj#õùž.¤…gB	’·wàT{Z«:ÖSæ<€0P‘\¥’”àw¢í°§¾s«¾-Ìm¸ÎòÑª¡a8ÙÄ£ÇR¥2†â
¼Iê%VsTÏ V¯u.µÄHä­»¨´t÷[iÓÏE¢~õmò?PßÊ;½Í‰Òx´ARÕbÇœ8Ÿ9û³û]ÃÕˆ?Q±©ºpÈ¬ªîïv[ÆÖOEÔì TømêŸlòHÞÇ‘è4tÝ‰½u®KÏÃi˜ÐL==]i×ìpÜÐq¹Â…x/§¤çr\ëX\áÕée·eûžÉV¥§=é¹Fó¾çÎ±ûb)¯mÏy¢‘Þ.lò€}ïWÉñõÉ.¯û»j^Ø­ów­÷‰¶/Ù‡ÉŸŸv /ø7:µ\»Ü Ê6¹GF•QÓXùÁ½.|Ëie7ž¸Û	—úÀÜ€Thžžþvta1µOtÕ8ˆ½·3ùngpa–ø ¹xÕïãùþ úÉk_ÅÅ´ ƒê`®ekÞôº×x–³Á¨Å=G­‰ƒÔ÷2’=wD½ðlÂÙ+ ”buÕ íˆV»ZžzXkùù»KóWêÒ\çÍüÿã·t²,W{.ïí=üt??vÿŸásì“ªUBFIÓe½ú§}ðÛ
ª÷Lü„Yuã¥É?ÙôF—÷8—ã”ôŸÜ*¯Ny5„ó0ˆkÎlLhZIÚrócK„òvÚM½ÙóXÛÎª+Á_YÜýL$Ð¼ò-»MX£1Ö½]”'Ä"]+lŠVÞ!`Ëß¨¦*ÔEûÏýy+¨tm|å[…¦¨œKèJHå¿™W'k¯¹ªsÚ£·§ômÃú‡'+×yü$—O0#½¶*PDß¦ýüzs{SkkÍ‚ë‹5®1føshÞüVÍ8ÃÒKòÀÏuáb”>(Ååù	´Ò<Ìw=ðWi`NO›Oü.14¡¿l ¿æ¡lÆé7A„ûj_r’7&°Í…=îgw¹ÆÍçµ_ÔÌõó˜»nà±Ne¨W¼ñÐ³u¯Œ”ã•ãLþ:ð‡E–¾£Õü=´YoYø]£]¯Ñ*ÑÉ›î<¡%:–‚•:ž[Îõçr–vÏ½ÂlPsA|çlQÉÈm•Yn‰oÄ‘«
øïÇ`úlÜva.vûi•›³t7þVu3jè­øÑ#™26uÞ&ÿ¯ß‚ñäAî¥Ä×38“cÜð¢¸[Ú2÷l*–IÛ©í²´nÃ¢ÕFy‹jŠ@k¡Ó<'ºÝ®ô®ŽGžÄ¬6MðñK ‰+(õt\yŽF-óÚ«Þ5 ¤ì±s.ßûNÁ:ôšÞGk-6ø„÷›¤ù8˜Íî%Ñ7—ÊeQ^ç(m–ÍîWnü‚Ùý®,JeT>Qü"iéØ‰óY¿	1û»Pûå…Ú¿TÉ÷RÝJq¯¥øËÌƒõÊ†‹9õ/ÓWü¿Í Ì¥‚ö"ŒuZXž¹Ò(Éj™£Jô¸£åŒ-3ûØgÙÜƒ;*ó7.[Û4žö9Ãe÷‡Qò<uüwUï©¯‹/eÔ÷Är©ïÉÚ$ÑþÿWxW\# ³¤8dá2Ã¯)§Ç?Ò3ÃË@xÝÌ3ãm€zFŸ›¾Ä².`÷"u‹w¡=Gh! ¼çôy=bÿÞpÝx…ì#MxnÞñ&½*Ñ?I¤¯H+©Wð=¡îÊŒâ/Þñp¤¾£&×ëÉO+”ƒ¥÷:áR)#¨T‰rŒ¢ö~˜]sczðRäô~1J?vº
u8!©{Å³Ü¨º”¦.ÂS÷‰OyªUDÊ øË˜wä;ÀÍë<ûA
M)Îµi «•—ææé¢|
-á™	æOÐ~Éte–NÐfóy†%|µ:\öÙ,îc[š»ÕçiJk«™n}Èeã)ÏÈÐ“`'þSŽ2mf2.°‰¡øÃe†…moQ¯7ùq¬´µÑÎíÜ'JCï^Gñ|œ.Ô×9”_¦Ö‰SèÄ 6äþ÷C6ÂÄlj¾š[}€No_½V
â+uãÙxt4_Ÿ>=ŽN¯_‘ÐØß`"`FÛë·<9µmñé¶Å/Eñ.”JŒH-‘ûÇË?~)øÕfúžLºÅ}+†¡·uøçuÓU¡»ÌÞËóSMÍO}™kf§³_„‹¶ÍcëÝÓ]Ôícº{|||:ò‘Ð®Ä¹ Ì0©V'–çKºÎÂ/ÃÚx¢Dû>ýM=äÊY«A§iW	ÎþN Ñw·§–×ðü€¨ò[v]kÝNêòæx\ÓÂ)<z› ÅKý	è•wó{Ù¥µ§eÝª0šõÑ5ÄÏ”)K5ºî~‰ØYûw	¬8|Â=Ü3 züÒ˜“cÝ?%¦¶f%Ž¹[%ßn.p8ÐÑxÓ!D¼_éóùÁò×+€ûUy}<ƒ,p3
#ØÒZñ7+¬x¿ïl”ðG/`ÏÒ[|0¯­ð$:r÷f—¤F›ó¬ü0_ˆ!‘úäG¸/#ŒGõPÔÊ¥2g5À\ù³œ•*k˜àyB7¦¯”ùŠ	=@Óòüîxþ7DS74;³úqV_ãÔê‘ŽÖÄU×ÄEKÑ†µýL!QK­Ÿ- ºyèñžñÒUýÑ¦¬pÔÿ—,èÂ¹¯XxœÌ½ívÛÆÎ(üÛ¹
nï•TJåD²Ý$uÚ>K¶åÄ§¶¬ZN²Û4K‹&)›;©’”?òœžk:×p®ì0ßÃ!E9í~ÞìÝD$1f`0˜çÏ½ñèð_['q%y´uFIOã(ÛóÞŒN¶¶Ÿu·ÒlkæQöèŸqÌ–aäýàçy”Ï®ÒÞEY–¤æ«¼ãÒ«,N®J`³øÒ|WÄóÈ‚ºÏŸç…Oµª×›Énjo Wù%¾ÙZ@ÝEÕû­çiâø8OÃh–›–E<{ž/§ÓøÎñ¡¸_DV ÏöGØ†8ð‚4Éo	¿šÞ—(K'Ëe~ì½øäýèý·×õþ|í†“‡øÇ®÷ìÙ3¯÷>uï¦ÓRéàÚÏ¼ÐÏ¯?öº]½Ì÷ßãÓ7[ß@	(’-ƒÂÃ†O.ýløï¿mL&ËÞ‹ùQþš^møó|ü‘‰Ç"}- .ð%Ï'Ižgù$Œ¡€š/ò¹7ÁâD¼Ìò›pds*Eç—ùd1Ï &$H#þ)Qå'þMŠtÂFS+J–sÏüêÑßíG@|~Áµ×bo°9ŸGÞðýé`Òö'ã‹þÅ`r6º8>=þmp¸÷hc#‹Še–x›éÆaü%
7_»KÏ†Î‚Išl­,|<ìÆããý“^8Nü ˆò<¾œEUeGƒóññøb0¼˜œœÇzñE”åq^ÀDÞš¥y^…áàmøÆ¨¸œ\Q>Òˆ¡ÑÆø	ßþtôI0µÞ€aêù!ôpÇÃöÒE Sˆº"žz-úDÝ {†CÐ;"•õ%N`òEÐÙù{’¤Czå??óÆËËyœJï—e´$âK(‚,ò-ôª9Š«¨˜ÌÒ«ÉÂ¿Š–7Qá¤WÞÈ¿rãÄnâÒù¸‰o„"fBý^aàbþÞ	î_¦Y}ªàûøÊ	œc¦@Î2‹r?Æñ·•ü,{³ª˜Ÿß'Á$ºê5âðåu–&é2÷øÍ;þXF¹›â$ŸÌ¯æZù¡?ò…DÞ)ˆ«hœ%§·”ã±Vö(Îæ·~aGÀ‡ªbaz›ÌR?t<žC•Þ!¨E7ÀçÙtR@›ô‘t«¶7†/[EMký¢ðƒkW{ûô¥²½Ÿ£h1É£ùŸá×ÇwnRã,

ø
'ZsÅ{ 7©h¥,
ÿÞ¸ŠžGATUñMœKfuí{ö6þâÓYÑ¿ôs[¤ƒØŒ¶N«	ÅL²E±:¢ÃËËåtO	àÃ4Í.£ÙÌÛÕ"Ê`P%ÓøÊ=¨ÒlîX·6¦èÊùŠ©,³¸¸·Ú7æ¯«(š-”ëš˜ûI\À"hR:æo«eí%[Ç—–t8Ùï{czOEaúÓí,j°œà"5-ókáGølp·Ð®Hƒû€Ï8Ä¡v•f°Ä6Y&Aší™(½wøÇ·Ï×z«(È›H	­Žö¦²Ô$u™ÊêùÞ:
…ù\€~_‹ê‰ÂßÀ_W¨ch:À&¸aíœ­.½€¥ªì¢¼ØÈ’~ðÇ2Î"wÑ>ûX]ë,‚·UÕÒGGÙ›(£ÅSIzáì­Å½ÑUêK’$Š)kþ–&ú
äšŽFis2Ú¥ÝsR ð‹rÝ}z)çÕ#¥¾K>'°@•µ?œªr†£~”ã¤å3õÁÙ{QÒÆa½~ÂÔÒqx|JôdŒÊ)i¨ïÆ“ÓþøgKawïçò›¡‰C)TñÀz,¢¹wíç^úCæ]FQâ	ÚÃg¦–ì®åàìtt2 ÕyüŽôv½šÓ4gLÇžãXI)ð“PhiQ”f?]Îf÷ê<NFçgo¬Údqâ²ô
†w¾V'Gýã“SµM8òãYC6Î©Ö0Ý:ŒüÙ,PÅíOAˆH¨v#Ãhê/g…^“¶0šaäÞ¤`ÇÐ<È¯ÓÛÉ"‹Â˜IÞ	:8’à~¶®T [0T5c˜½´Ëà˜÷ž.f˜Wð³Ãm`CÇaG·¾Ÿ‚"—€ò`Êb%ß,LþUîÑßÒPbïžxû`'žÿÚVqæß¶ZË$¯àCÞÖÉ€Å–N[Š¸vûµ‰÷Ï†Vt¬â‰Y…l%`~´A™¶6G
…wÂPx#èEšˆÜ`íÅI}Ýóç¿'›ˆsÉ\—x>>|KŽoõ^ Y,–-EªŽži¢ˆ'[·õX,3,.îQEZi2P&è2ª;¼øp<ôPIÈQø3Àµ9:?^¾ØÝ”(_ì:P†Å-¨FYá@H+üC1Þº0^Äs\Lîâùr¾&¾bîß‡‡
cœ Fïm|u­¡õêñ&!Ã]Ç«PŸ¤·	ÖÏÒÊŽäEZu´nO¹ºž÷ÔQÞºPRëñú‹6ŽlXûWWˆÀ’ðTBôTØ"’JŒ|%"_ìz¨-À‡,Žròíl{(²*0R š ‹¹[’¿àµ ŒzXå„y•¡&ë/ wHŒj{?zFß±R0pÈ*aÉ¤V_tŽ˜›¿CÕ›–ö” ÖæØr~	7zNTÿT¬¤<|[è¢F‚Û&‰¬UØ1Ð$˜o-ísÇ39°òœ|ˆ1º²_Ã??¨~õâo¿e†”ËPòþããð“ã±÷­×c¼ÕÅ³à¯êcü‰¦ÓŸNæ"šñ>3ýš$Óu5–^˜*êhp2ŸöÏ/&oý“‹·PN‡šñ‹ßž¿-§¸¦'þ&]Áz«Õ½ëµM=1}@­êôøÂFg¹ $’m’‹ãÓhi§#	ŠXóæï€œÀËŽËèìhÛgÃÉù`<(Ñ3Jo£l,*èG4°E»\ÃñxòöÃdp~~vnc2U÷·~R;Y¨ÒïH™kpÛyã”L`yáâøÙù)ÓjÏËL—®tGdª/«q¥øWMsè
”¯(•æí¢NªÕ&mß×!ª¦NWÒmÚ|JG0Î%TÊÁ+Q\ºÆéàdp:¸8ÿurp~¡YÔXþõy“ÞƒožD¸Ð¼ çO&ƒ¼;;švqçgÞà.Xf¹Þ°°­’„á»“!5ÊûkOÕšäùäúvá`åV0ýžÈÍ!B´×Rtïº=Ý”#ÿ¥«ˆMÙb ß.¾%o›ú6Ö.º³¢è‘»Øn©ØIœ|æî9.GtøïÜðC|}rðêÀ/tàÐ›P·õ>øY¢£aŒQ/òR/2HÂeæ'0ÅßdéÄZ#¯Ló1÷§0‡®—EÈÍH÷½A]
+J:›ÁêÆ8¥”¾oØ¿°Jû»èmóŽ“"ºbþW»Ø~E-¨˜Þ“æ—.»Q²]F‡Ì|\ì³>jm}OnòuWå,ˆaèÎ"ÐÍpA¼†zÁ„·Bå‚ðDzÊÎ¶ZiÐ×2¿	{ßpË<¡mêé«.üi{?ýäõ¾ç;Â€2Ò¡vÈ+²€¥NÚQ@/ÄV4A… ¥Õ7ej`‹ÓÖ	Ïû¸ÓÛë}ÿÉMâŸw¿‚s¤TpxMÝB ôTòÁTDwØÀÃÜkÚ¨Vµ/Û\7ÂFý—·	*s´	5lNýY!â Z…uÏžŠÌ #ë_`-ËÖã¼ÍˆD®"Æùƒ± È–ÿÂ½ÐÝ˜kþ,£ñ!­@ŠÞ#p\‹r¹ö’G¶º-@i§ƒiCnÝ†Q›ÛŒÿ‰lRÈ,”†õ;P¸¯}»0Tð—¯¯X?âÀÁ×lP4l¶ÅÐbK~îîèê0’—{Û5CÄl²»çJý&zÍî3 ¤.cîr0IPjÀÂLòBÙŸ‹ÅìžwNã^\Ñ‡h0ÓjÈó4ˆ}$ –¬k âž kÈqÛ”Ó"°¥Ð‰“iÚá}á(¡ÿ"û0¤Ó)(¤¤žêÙ–èO@4ŸNoÁŠ¿Aƒø0%_^xÛët›fá$HÖ²çÑ|r¹œÂ âŠ‚n#çsÐÆ˜Ëý¤F[@r“YÎÖã¤&¤¹OXø†(VäÆ«Ø•ôIŠ~
ò‹‰ÖCO 3\%”>#j°ßXxíIÎ¾n<¿ìËLlG¦ÚÍÞkïªâ6Ù,±JêÝbËÂ¨Ðõ¶ª Y¡z]]¥
x¥ø+w¿2ÍtÝ²GíWvŸ:¦—1³pQ^U†¤§,Åd)+ÇæÁõrî'0¼…äýà|ÿl<xýPßŠ9í›ûX\¢¤
Û£6ïlé7¹b:°%nî>q{¬=‡¿ºOòŠ€]X¤‹‚É5ÑP$ÊûéG.¸{Ã$H·Z÷ZS]@=rSø³M[?Íh)Uå.RTW5Âçš{ÃÔë,tEÝ´‘œ“(¹‚¥¢ì#2Ý‘%”³™‰qßÑ8«nXvS*ô–4PNGK®gf„#dmÊs“prƒxg‰÷6Óý³·¤2Tè(ëm¿šiÖë&ÂÉ4‹èuE%‹ôºíªæà>˜¡}¸LŠué^…ñàØ{%!ŒaX×[ï™B¦Ý§f!»á,2åÂÑÐŽÇk!Îóêq”Åjô¶ÆCÄ¶õì©ØNÚ@‡]›Oø2Â¤íybTqŠ¡¿²†Óõj˜;k˜›5˜..ÔÂ¼_0`	æqHn*hØ»ýá/k6ny™üÕ#`ÕGŠ7Qe,‚5¶q¿\EÉ$¡"fç”uýã„-ËX	èùÇíÆbHBŽ²’ÖŸ6ß}\e»:Qch¹àš5}Þ~\Ì}˜û@ºœÑ;Ûššˆ*ó8ºü"›hÝ ¥¸±Œç††“Kª¨»!îÙ" C:ÉÑ“¢óÜÑÀ²|yÈ„©éÅuœÓwPr=¿ð0¾¥ð6=ôýol~×Ûö.ïq;
 ²ˆgBôÙrD]¯H=´Oä|ãÝÛd¥-ÆÂz>íÐ¼“Qt^‚yM&QÎVmr>(Ã(1MÃ¤´XòÍ†=éê†ÕK“ÖMØK\	øÖV”’ÓÆU˜”lä%´þ3*%Àòrh~*€Õ©úJÅ·~Š®gðaÇû¶b†°°$ºÓö@ˆgæÔõÌ‘nl_3ý¥r£ÃEƒÜÌv`¬\ KÐ r ©]«-¶Uï‡Ì¡‹
›z<~¼žHÑ¼
uøaš·®¬˜5ès0.gö‚Ç¾ž‚bvAIG1ÜkÐÃfaÓÇW÷ñ"
 ]`H|³kTp“Ç3Wó­1Ò`êÐ„sñÇšÉH€Â)_9TTiÝfEà(¿V^lhëñøÖ ’„÷jAÒÆ¨t'´´š:Œ¬áøøpÒÇõC¸H¸/äµ!@ê·ÔvG4lÈÑc;²Ô
w6=¹©‰"|d´ŠêãÛ"lë§tN˜Ë†)>xß(ÁÖâfç“ºÂ&Ãèö¯"0‰nN V¸]Áif|êsÌî½­ŸÔe‚¸Æ³´³ËU< ³”Øðe™-¸ZÛ»Ò<À¯žº<( ‘Nìç¤F€†òÈK¸¹ÄêçÜ+aã=òå¬ –¸u©Sªç&	³‰O(5g^Æ­¬ª¹gïÌ#¨åÂk:÷($h\ÚÌ¯œƒ#T1ž©[ZŒ¡mËGAîHBaÒÓxjazb˜{ã÷å(6`íšæ3<ŽOrÄÁ¼—õŒu+iš7V/%ÞV©÷«V.oKj™jÖšµ¢·õGÃí=Wª©ðÂŠb¶WA‹¬(u,«±±¨n"ÝŒ@¤§¥˜S^1ÂÝ 8!¨'òÊ¾é¢×Ì¯É©šö25[ÅÄrÂà{ì=uò|cÃ­Ëº5Q7¡9L»Ü~IHohÅ2Ì‚³…°ÎµpïJé?Y Xu;4¯‘‰Ç0ª´VÙŒïXÈn"ÃÎµyîšÛ¦Šª*ûl~cq»üZAUUµAm—pôÖˆGli`öNHÃ‰¶:œ‰­¡|:?^vTl´ÍlQ êõ†…“°’1)M‘ÔJW;ÒŠñg=¾¸ƒ²*—+×qMïàðC¯k­Ñj$Š°‰ó+hWxÛëÚŠžD;y°j]Ò1~‰*QøðO\Ü¯ƒ.ðíÅ“…‡¡—ŠŽ¿1ò˜R§³K?7Ë’p«H·"j¢£ˆØéiã¨@)JÆp‘WrÔ¢xkáƒ•‚§qXãH@ËM›Ä…ËxÆy”;(Oæq`VÔöyØŽÛ8­è\<ü•-&R3/r™ºž9­$IÆqŒ•À=Òdé*s«_È—?kß³ñJîJl0‘p¹L•ÑD	ý´Ëe™ãË…hšø•hêg¶›¶/¬Môú^(…?j]¡íê> +ì¨É¿´?4Òœý1žû°b‚¦É	Ú(`aøEš¹:ÇÀšs“é"®ì%ó$M%.s¯ŸŸ°Ñ—xÉ*MA¬6½5ðyì›Ì<Š£Y¸[ùiÆ)¬KÎ¨\r¹šú„Á¼•c)8è¤lrU-‚·˜Ú¥í®¨~ÊÕ¡t¬«ÖÞC±ö2Þ9]áks¿ñ4–%œšº>~]tñ6“ú^×1×båsî«&}`ÏºªŽ*Å†S‘0»Æ&/u‰Ô”žYÉÖO3ÿÃgEŒJ,
5F¥U†âdÍ?v?µYÁnwJEiŒ6,ÜûdõzCŽ=oïñ?»Ûwd{w<ïÆŸ-#|õêŽ9åâPÓëEL‘²¾á{›‡ª1.ÐfT‰­ùÓ)‹€l{ÿÀKnX«P¶RØŽ…ºgþSÜ~êírãÍ ‘l£yK§ã5­6ÈÌcÔÃvÐ*ï»ÞvÇë½€ÿê=o‡ÈWŠÂjêƒs,¨öƒã‘ô‹hN–>ðJ
ð`àìLHK|_\ƒ°¹NÕâæ*[ ‹%Zà¸á©ÁàVF:ÅãŠ½hm?eµÛLßÄá8\Ç±#±:<¨þ_wÚP!ûûÎ>,äÍ¤¬qÀ[=wìæ–j6¡q.‚ËÿÔAÝæ5h65RÎ=Õª¯8
hÕ9ZcS¥£Ñb–ÕKc0=Úp&oU€²>¼Íê¼§×!žhµ r
­1ÿÇSõ»9É€ÚŒ¼èa”¯Y$g)&jQ‡5°;°(è°c´ýƒÏÑêìj:ê-¾«G!@0.¹ò¥R¢ò­½iÂ¬nj¿™FòÎ¶Éj¡:`=Íg F%4„tvYJÁ& œU«Yd¡yÅ8Â2-zu:Rq,Ñ¾K²(À•ƒN¯è0Ôþ,>;0–(ûo9»lWpK‹£D²[	eïÅfÉÍÂÙuÅvÄä4‡°‰Ž?~0‡¾³]õzçëpÙ¤æÜ3Mk«Õ%·+ƒ›¯Â°Ö§…Õ³FYfFÚšý{NÏCÀ‘Å°Áí0fŸW‡û‰ À`^õ•+Ïðª	" G0`ÁŠ³]AÊ@£qÿø‘˜Â?\'¬:š-
3JàT÷“Ö°10†Ën}Ñðb‡W_¡†Væ€ÛÞ+8žìëÈ_2Õo²„òË¤RUµ¨¼¦íµ†'ç‡m4H0Æîñ?ïH>mrwépì‰ñý8,†~”!§P)ÛU’Â8×ì:P³âüz÷,ty„r¾(îü–f[Á°D_|î²´ÒBKxÚ½ÛÑaKÙ¶tÈ]7¤T¨©žWy¼ÑZ¹5VP¤Œ¶2ªOè	‹q¹ÁÅ_?tÈºHõ©1O2õX£rº^¦ópˆ`ë,„bõ#iŽ£’O¤;·*‡•ƒH_ÆÜhUBVˆl©ÇÍ°â0÷…x,^¦m-œ8Ñ¤Î)«Ê7¤Pde¶0Jê¾|½îe#á.ÖÊãˆ`×NrU<‰¦Ó((r–ŠA†-¦[i04jô¡ÆT²Íoibhïƒê:›[›¯ÅáÖi¾0O&ßFß‘µž÷îðà x-­V‘uíèøp‚…ÎÎ1#Øàèhpp1ž`<ˆ¤ìyP±‰q¸6Âa=¾ãµñ×á;X›¾ƒZúÞÇë2ð¾œØHAÙÉèOÑ1ýôSªñÁÙh0¿=>ºh×WÊ 1cž9*†ýÓÁxÔ?xÁ›t4À6×ñùlxq~vr28 æƒ‹ó{t¢qKapñ’ßŸ¢“±÷`xøî¼?†¼9?{7z@€áÍù¨¦ŠÃ³Óþñð˜YÁUŒ‘1éÑR—–×Ì
f,žLêPÞSüÄÜZC•ŒdX¹¹wªÏ>látªH-ö¢Ñò[Å#CŸ„Ð!?i’{¼Î¡BÌŠ+3$Ž£Â8¡4ñíï^h
¸b e§p
·~Òš€¾ahk-7mSóÅ–>FßõÖO¢Åzƒ¡•ÝWwJWU)OµŠÆßhºªÚhP#7ÌÍsY“cSnÔU«·	öx`/àõ¸Y±èœÓãÉÁé×,ãk¢m¸˜¯‹µÙ’¾&VÇÂÂÖ`•X†+q¹VâÀã@‰î°7G¾þ’¼á_³*7¯æssä_›×éàËsµœ2VhÌ^¤ù×¯^§9ž¿y©Ö¨•«µz×hÁ®áš†IŸ®§ÇbÑÍ]‹Ù_¼zÓð89{S=DNûÿÒÖwƒñÖ¯´õ“Ùn}¡71¬”¥Žå9tºÖŠo’½bÕ_¹ ;­\û­Ét™¦Åd!R±Ëiî]A}ßpMYR›:™‚¾¦»(fYim…½Ð†ì>À{#Iéz~#-0’9úYÎ‰
Ü"˜Õû9Þ/SRùËE•P ÂKtEës‹Ý²?Ò*mUb€%~§ÇõÜ‚3³M–IÌ2Ø—%jù;Ò¥Jˆ½áy«]„( ¹ LæKÏÜAçØ0(vÙ~°´ä$)Q¹TÀÉ]½RX:8!¸7YV»wPBl
™Û|{‚Zå(Ž1à	æŒË•L	ð,Pn¦ðŽf0÷£ß•²ÌŒè%7š<šMo»$1éØ\®k`Å™k­ÈêC¶’:üž~ÕÏæKûía:÷a=y ¾J—[1D%á•º:òºJ‡m#Qõ^?ü÷2/h«äÈ¬`Ö•È1ñÃO¦Aae¯PÞä1Ý¾"º×‰Æ¿™Mr3PŒ¢o8@Ÿ÷»<
ëQ,ðd	Û†¥	R1^‚Üd+¦ñ?÷Îhc«Q§U±ÓpÁgþô[âZB|PyöØ¥qèë„×(z_rÉûZKÄ§ÿŽt÷nG À‡›Û@ÙµQ\ÅžFŸ)Ž­”©ï¥ÌÔwt82E,cï‘F>\ˆÞ'û¿¼MJdˆ©I7Å
‹[ù"_ì}W
Ð4>îîíÄ¼Og@1vAÏ\G@Ó4b´QÅxÐ¼(Ñ¥áßÙëj´3?ž—¦3g$óÜÞ?Ù¿¹éñSýNŸ\a&˜Z$ArW­}<×®y$ÎY-¯We£dI0—½äÁ±'H+Fg4Ð–¬Ææ-­ð£ÄZ°ÙbG	{UAK‰¶šT0”vÉŸ²1dYG„SF‹q˜âŸ,”oýDO(õ®döŒµ
jUÙ)Œ³F¢ØMžW)cÜ•‚tÅLàJ²«ö
d´~¾ãiI”®°…ry]…SîùI‹ŽDój2“ÜJaP7LÁÆÃÄ¿å“cÆÁY.[&:ªšÍ¦£Ü'1^9Ø€Ê(["á…“NÆEvà¶”áèßlÄþ›RëT°>Ë {(Ãw>Žáàz¢Z{ü÷'3æ$‹Ï`ÆÄ¿A -¯	–“2¿óáhrþîíÅä£ûû''¿NŽÇg'}0KQc º?›Ý{Ç9
Ó($á¨r	é_¸ˆœÁAÊ¯šun™Ã^’‚@äòÁ2ð?&¾í†ðR‚”uQYQ'WÉ1øX#Êˆ+r  aó„pâW®–CCÌuïØvü+ízLÃdIH}fr©gžÐ‡Æ»U)-'PÞâET\ÔÕo#°vúØ("/™jW"sÐŠ*/§ôV¤¿côðÁ#,Á¦Þ2“Ä–m÷ëö){¥;
Ÿ²¡2SÏk½Ý?ýÐÞS˜›%<¤s}9¿mF3¤jë;}x}óÚúÆ)aƒãÚfÌHéÆ ä´…Kí+Ûe9
Œèy	
O:È "txôA¿ôÐX¹ÀtÂ;Ô'ÍKt$'ƒ
$Ü£+#'½æâØså¶?¶Ìxv‹Ó4d‰]ª@jô©{ŽùåÕ£¬ùVüg5m°Òœ($l4œË[é*[uzvx|ô«Vû|1‹ÁPîÖ5……®UÜ¶è%ÔÛeaÂ^¯%M8Šbî=-æØ(‘—t÷ìÇí.ˆìJ˜  ûþZéÃ›*ÄN:T{¼Ärxs-\®\’ˆ5Tqqr„óa‹#@¬^Í(wi‚ÏRœ¥ü\MþL¥¾ñž{½n·‹°ÀŸáçÖ“"7Õ3:~ñññò“Ã}Äï6á¾®åPT ’¨P‚DAµÝ8ÒihkîÊöv¸:8¥6²ñ#;=¶;ÞæãÀ{üKšã{+èOü‚£B&3`ƒÃš`G0»ß·M5Ò5µ1Å>&—<s™"ñs.5¬ÓªÙ¸Žm{-„l×)íÖ™m“ ’óºlˆ¦
œõ{Æä”÷tžÑ†È]üna¡`ÛO´Š'97ÿlÝˆkÎA¦áá°ÖNÛu–ÙœŽ<\ús‘‰vŸ²J>óf¿õ{™èGÒaœ^À´t¢½ÀZŸ»ì/¬SE‹ÿ),‚&=òÞÚûò¼*/K+x5™t”:ðé:±6¤ÒW›úÌ%•§ôþS—*5§ì„¥Æ‚ñ]¦ˆÓªÖù{íQÓº&ŽÑ…eêä¡eì0hfïäaƒuƒàêqPIš@¸X<5ásÉ
rÊ.9x^7|˜=²jcL¾™C½g#Ç^¤‚«tegÄyD;É•×ôA)<·…Ü£Òù
ª/ò³¥íf·†¼òº3‹ß–Ù:×gº}m
Ñ,•ù×gƒ
ŽÀÍ åÝ´Ž›ºÁâœoÂË7è£$¤L5¸Ÿ%œâ§
¢øwÇû}×ñæ0	ƒ iÅþí8§'ÜëÀ4š/|.©—šH>Ôh—°’{,µ4ˆ†I ˜~1Hœ[*·Ü×1õjËQ¸6ìuyÇÎnõ¶]E¹Õ[XÔNúFõàí¼*ÜæŽŽKÔUDÐ
/iéî´
þ©ž‘È kZš#ßë>Ãõv1 ª?þÛÜ}\s§p­zä®!¡±êc÷_”ø§²€©|nÍ,hfMüÀ‰kC{—ÿybr'1Ší²â¿‡ ®`™
˜´l>+*d6AÛF`»ÚúøWà8>³)ð™¦ ~‚ßZÊJksüqèÊL¦Î*6'[ì—üüIÏo¨–Ëp¬Cmž¶m£Õ¼6L‡ò”Ýc‹E7·ŸržˆN ¥ÊîQ-è Šã¥íoY>c,Ÿ1©ƒßà¡Ìóò†¸ ÓIýÔÙ0I ïT¶OZƒ«ÛçF0°ª›¬EÖ¨Öë%±ñsÖø94žéÞ\5½y<ÊzíŸ/7s=\Å]«Z:	á¿¾òp&*ÿSÙwFÄ¿¡ßëj ÚÌ1±!æ5lqÅO|(¼\Péy—i:£›6&~ÂbvEÛ£fOˆž¯µKâ”YÁ·’­Z¦qJeæŒ°ƒþ‘hZ+FU	§Þ‚6‰üàzÂ¨îx~Lžî`£œ§^ j"š®¢‚>´XÝ‘UxsSz%TS¡ù:Œ‰T~i-LÜûv„½þÑéŠJD€­jmÇ—ÖŽÕD÷gŸù ÜIü“¤‘í˜û­é|kŽvªnBÔ¹c„¨¡ /;LëcÑaÔ¨½›j«Å¬ÿ	NIsi#2/-¼¬S5/®Ó®%3$ðK
^kcÖà(#³ŒªýLK±–myÃ_†?êwœ(Œ’u9k¾Çþ¸ þHZv¦´ßÿ]&©fs³V‚ ëDðÂm¶ÇR^£¬€Ñæ¬eºÖªu5Î+ö¨”Å" Ó&¤50LÊ‘”Qú€(ËÑ‚44“K?Ãwd\¹²ŠÒMÈØ– .3"½upþát¬oØqu#³&A6Çì99T;¿Ì'‹y–³tn¯X”0]‰*íRr¥Þè›…‚Ž“0Z`’J³S&íx}ÒzìrãÝ‡“vÍÓìÞÛg~weu·N÷‘œ‹ëÈ«ó59¹Íîb.‘‹ã³–bí*(Næ˜ÀPqEñèô\P\	nPÜ€à2©õœåµQVŒûñNý»xSNüiŽÆ§ýÑ=gì¦-NMÏûáøÜÛö¾õ8/ç‹|îßMðŸ8a±Œ¢¿Û«ªë¿TíñpEµµv§v}v¼>ÄÆŸÖþÈÏ„ýr<Î‰Ù0¿C˜Ü!Õ±Ýå·ÿå›{ÀãÒ•Ge´(-«Æƒ1ÖˆTÀÁqÃ¸ÜçUDt»ÛÝ5;Ükþç,‰ð&5è©ˆòcMB£¼)•¯º#•‰è‰þ:KfèH±Ž3yÖìÞ´ŒRE¬ybŽmú›=ÞŽÇçk®n·W;¸Ó4»Œf3o\dq9¸Ò:_œVLŸ–š<Õ”'zÎ1ÙfíŸÖÅ«u.ª¤zŠLëïº]c?»ŒEÚÓˆ,Ñ|nó®OËÌ‡(¾º¦ÈÂt™àß—1¿ ð]v…rs”ÅiFþÎ™ŸçŽIäƒÈþÈ¤`öJ×/0oýÎkÖŸøj‰·Ëü²Œ–^äÃ¯T?øå¼ÜÃF¥½º>‚—*Y^´NŒù“:sçD˜ª×LG¹‰(•'?~“[z	ÝÞ)öNyŒyøs8±ƒI79Ï¶:viNáù‚ZÌ?áküHŸ^5Tœ‚	°Êcéà—ETÅ@§f´qB\EˆHe…ÚÓÌm‰R‘E”€{:ðšcÏ‰ð¥ŽÐ
P¶hiLU¤¡ŒË_aÖ<Í¯ÎSøeñt|½,B¼fs¨%²&óøíÐæ)"rót˜zzª×ðä±C«Y<L)Ñl.hÒ9Koë¥û—ÙrQ4+ý—1—O  X¥Ø;õèAB{„¤F!y´gp0¡-ÀŽ2ƒA£˜:ŒsöÓˆdü½àë•È­¤È=S°ZÇgBz8V¨ˆÏ]šÕlî
RXQž5À”ZX-¬}ó8Ï«ª7ª¶;uT;6«­ä:¢n`#‚QÌ±T#Qa Ùye!ñ¢Ôh²Ž%ñtTÉ ¡>«Š»/_™CiÁƒ2ïF‡bQ[j‡VQ÷%TÄ¢)Ü˜_ó ð1E¨¢Ä*ÑD®™%±ÁK† ¤‡¥ ž‘z(Sâ™æó¦^y£Ív¬ÃM&|^äð./„<Í‹*ÊOV–déø¢,Ló¢Rš’DLå­Y-§RÂ]û¹wE	Ýy…a{µ•.²4ˆ`Æ&W^Ë÷¨VKYWqq£òß%eéBÎÂO‹á#EÇÈÇPy›å£‘9ø…6¶kul—VFÌ¢p1PèÏê»øúaecè<Ÿ}•+äÈÇmZs°µŽÆudqÅ÷"[F@×‘?Ë#«ÝlÍªž[ç‡¿Ú“Ëª¢<½uuV¤¢«á§½¨ÂjxQ?ëñØ Ð¹’ž_œÑZzÑ"´Ï·=‹¡ç¾
ósƒ–úø¼¡ðËVt…@4r¶–ö~ê?waîñ0´ñ6·JˆKK5G<þÅ²+f¦ÍOÊF]9¿œ¥R?¢‘[ÝU_x QéA„wQøñ“÷£÷ß¨õ°g0;È[ Ÿ½?E˜ác7ÔÛ5>C~Zˆ†Í§®p^ö^°Ç+FJõ¼9;"ñß½{|kA1V<Ë¿,)-ÅUæ'Ë™V„¼ˆ·Åx'í­©ìámKû;8Ýçzˆ×WxýY|•PœH#Ú~9Ä ÓÇ¡«f.Î”9gWL·²É³,§ñHÎr§£MU{xzjú7ä(QÐåjÑËOU$ŒÒ“vÓ=nB¥Ðuï“”Y¹æÄ>Ÿ4&a—‘ðb%	Œ	å
Ý\6'a›‘ð‹6F×÷9Ïî=0åº¨&Àè°1	Â‰_MBó1 “°ÆX[6	û¨´ÈKÁ¼s.’Í$bÿøœÏQ)	Ës´Ø¡„(œÀì¶sWÃ+ãÔ>k <?³ëý¼¿©Ô8ùþ…ña[}èy§êýŽöþ…þaW}ØþÎøò^÷õþ…Q7û Ô»ÊüÕ–ˆüKË^þÃ½Â^Ã0þÍXhQn9l#¤—2¾wúØ®%Zelñ•¢×¬Œe\ ±cN±ÖšËÚw”„s! ikvÃ’f;e6EB¹kîÓaûUJ¡¨L"¥êû_M(Ê‰5¼ñ›:Z®ÑÚ:9_ ¡ðýùø}Î¿†*{ÿ³žª²6(—/RÛ˜jG«Ã	ôU„n¯EhY»„Ž„ÚÐ­&ÕÞùtÚ@.±,[“Ë,gÒ~X:m%Òˆušù°†œ—üÐˆ¥ÒgjíMfˆZYýÒ¾_mÞ»Åd­Ó~«|aàƒý³ÐÚžâ9['®»š—FÝ¼Ó€}]ÇgÀº¯-<kšedñ„k&Exgu`Ÿ»SâŸa¡ÑöŠ7‘ˆ­Â¬×Æ‘^º»£•ÞÞ­ß¤¶V'ÜŸ6V%/*%,­\#ey4“Â× ×X£NëRJB,UªDLóHV€÷üìß9ïàÒˆ¥·»±â "fÌ»“Ì“x‰ÚæÌuÒEá©Ù=j•Ä˜’ŒtTyÜoÿtŸüÙS0¼Í<“óËy(’Øsõ®„A€Ò¿9£ÃÛÔE-àSÚøS¥•eø˜]^$¶<NÇƒÕUuÍ?"Ç¬I»’[*û9¯(ÄFcM`˜œœÐÂƒ×ÓðobÄÐožä#†4<Î#VVónU’ÄV¼ÕÞðìÂkêI†¥K¹5é¡ag‰D ØYÇ|4ë*ªí‡kFÏbžaÜ£‡=TÓcôhE\P§´÷ sü<‚	%ylOÏÙ*FOÒ:=ÃÌ<²32vðÊ£Žï¦›¢t½ “Ê€«ê Œ×bÁR8éätM\³Ú˜Ž¾ïgYL¼å;Û9Uöaÿ´º6XU¢°¶mNó„µ-ì<ÿîaÖL3ˆÂª—2f— çA±Ã|7 u}×ízóx6‹óìâ0·ÿ Ûå•¬èv#îih"ÕV¦›OÌIñRâM-G„]Ô4¬¤Ò.ª%O³™ˆºi–ÎÒÇÍ¡Zú
Œb¦	ŒÂÖ„¨§8ƒ.¯Å
Øª;Æ\ú‡¿ÒÔÕw¹›øY çäwR,gËµ­B§š*.oàâÛmgBñÖ\/ú-]Ã‘n«¹`4 TgpSéÄžJˆ’E³›eÜö`
}Êe„=/»³OÖYTäøÑ—”^Õ‚ÿ6òg ÈÝöÙ·Ì|®p8:Ï®æ7«ú{Ë	2äÆXÕŽUkÈö«ØM°«Cmq®óíM^ftpìîÄª9+@†j·$#¸‰¦Ìh›xrž£GË{ò¤füËÀLWj–½ûMVUtœ+Ié•(Eª©ë{‹—=˜ì­1­ø+×Ä¢üS®Ù„á¥†'Óøbø2/¦ò«æOt©Íx°÷—Apf~^ÄtúVÄœ£UA3ˆ¯Ò¿™<š®¬í›Ø’ÿ~‘ŠûÑµWtëž>æ˜{ŒÍâ€ŒjR 8Ä-K4 ë[`ý‹…¡Üì—Œ‚T°ÈDcê]Z«LàÛþÉ	×Óþ¯¶~UÍ:¦€Pô{SÔ9þJ„t§Í•Üü¶Ð´\|rô÷x	˜b<åÆ€‹ë,]^]/¤JH„¸x_’”€oe¿¯¨AcÍ‡Æ›çLZ‹E’”õy¦3n)Añ@SòŸ:{ÏjzSÓñŸšá£#/‹[½´[½üÚV4®htVM’ .lðÅ9¨©™ÅA¾úf&¾ƒ™€u‚G˜=
ìŠzÁkÏ{þ”ó—7z{é=}ÎÒË0—fÏðó?à¯ þ"çC‡;^kËnrÊ¤5çÿ ƒÿ‘ê!äŠÝè``C‡íëtd  sW!g¸Ï©Ãß7:;\oéHm†M÷Ž˜®T–wwGtÓëy—x9ö…`¥8ÅZwÎÌêQ(O[“¨ÿèÍçqŠiªÂ»øÅû–÷ÞLú#D“ë`;Û6Øûq›5t¾ðxxq*aƒÕ°¬ <`Py±¢òÔóÐ#
C¡ã§'—8ÑèHH©ìÿÒ'¸üzŽ÷Ç¿\°
î€àøîo=ä`âÐ¸{¹xüÂrÿm-ðþèxxtÆ Éa¹ú/ì$h »¾}û# šÓ<ÏƒÃôtÿt,[¸r@ÙHà&h-4,w|pÕx%ôÅ	‡^I	.¥’TVAö4­¢+‘¸”Ó"´
˜x¢à—Màßµ…cYÑiWœvÊ±®ûÍÅš…ß™iæ’cyŒƒ¼æ	V÷ÖöQðON ­ºúùAOjÇ7yu½âTÊMnT¸¯p—M„šÌ«‚š¦-þYbÇñS‹?g¾2…?/jAáªDÔBÒ°®ÐkÁ¬–úxT®“°pÔ3‚ocCb‘ÍEa[Û\0š‹ÕÍÅM	"jù×^,ÜlíÒpÓ»•Ç>E‡9ÞG˜™È;õóÏÞ:~Ïâƒ´ÐœÄ®)°k
šÕt0‹`b]Îº,4¸(ÃˆÎJ~aà'0pÀ‚åš¦ðÞ¦¹"ˆ“ôQâÜ77’é—QkPQkPQk)
×zPSk`×ÊSm€Ñ‹š!ÆBI…ÉB…J8aÉ5qP5ÊüKË…‰/È
ß=®DÅ·š%˜‰ŒÖkm´Ö £]Y	f"Ãå¼Ü[b—°%îU
 ‹i°þl”–¶uXÇ;Üj”`v?t_½ê†ZaÉ¶Á$˜Ž‹«Šy|[ªßÃ’`6²bf!+jØÆýÛÌBFk‚Ž¬¶™ÜM«™4N¤¨›HÑU‡}WÌ¦UƒBtvÔ’ˆ¾háCÕfC]Ù"ÜuÉ‘  Ë—%„ËU—-ÓŒx”á±Z!ZGrj4Mô§žÒDK©PAš) šE3½¢Bh¦|å"ßdy®^W×^5/tµkS“Å¦Ñ2ÒhyXCì¯!Ð›êF¸‘`m$0	Àf‚­¡¸j&„ªRÅÉÕ}qŸWÜÓÕ2)E/u<éK»ñgËèÅ.k_dõßº¿ïl£î–UGµÅùäÅîeŒ¹Í¯Z¬†¶1;	¬Ž×b¢ûÃ]&ÚØTšdå5æu0`Þâ„¸‰¶aÅŒ•¼6BæyÍ*EªàQÛS$<2¢·mpöaÈ8eëå[R¹y÷¸é†8ÌíY£3`]#Y/Ëm
ÞuÊË
kaeíÒTÖà*j:80š4¯Œå&øÇF[h¹j^*FjAëV¯…Ö5g-_a.7iíùÅ™ÑZ\"›·­eg-Ž¸×%»=Å[sž7æžc”:%^áýŽ7QÞ2vŠñÆdjÏŸzÿú×¿ö¼‹ýCÜPåCÛŸ~¹œ2yˆé÷éÇm×ìçfôU·
ño'Ñ$L“ˆå›d—»øyÇwðì|rÑûy\jRL¥ÍR¸˜0À¶Eñ•}ûG¯÷K¾­uÂã;‘VÛNÖíÐruÛD’ ½Ç¬•ì0‹&D1àñqw÷nOŠÊ¶^ˆøá(D7”ãê¿œŠÐ-éìm–A¯$1x´²Å>{?ýè}óo0(¿ 6|ó¾á÷šà‹=ï›gßÚZ@¨ÚÚ)»ê¨ê›ß»ß¼6[ñûæãgOóß7L>X?½Vï¶£oôNçnO®Îlñ”ßrØ]zƒ·¥õ„‹!6¥»Ÿæ±´Hm{Oõ·ðßsÞMß7eŸý—×–uñš^Àn¡:äñŒþrÎÐF”kÞÈwx+©r¿¯ndb[–âi=Åÿ6n·]{‘üê	œ{ì§œŠ $^³_x¡ŠPXüìŠç¬M—Ô€9-ç~1Ám°ÖO”·íÍ1h\rAKûó§6€¥>î«æ˜lq9ƒÎ‹ ùQð#°yItEBˆI­Ü£ü²8È”7˜Ë'<yœÁb cvéŸ=?¹¿õïñãsF=¿ä1p§¼;ò"Œ²:ŽBlDTgS‘Eø¶')K§ië$2.»>“oµªµì:œ¾Öy"ºéÈT_Æý‹wãÉÅ¯£Á_ì¹À8>lFô[y¢X¯[­
@hÇc=G+ƒ±*¸k?=®¬{ëô¸¶úyì¤ÀQµ¶.–jâ×‹ñšh€zC¾°Ižî”â«{y­sGÄ!ÛÌæqÀžð—ºZ\ùŒo)èàˆŸ‡}ÍüÄ7¾ó³ªâsžÅé°Ëb˜Àœí©ï<œA~Çm)ù±'æ¥ãfç—ÚmÍ«nvÞÙÛ‘°ýaºN;G‰örâÓ_òúæÄq}óöÞ¶DÂg5—ÿC1Cç[ÇgïÙ§Ç6‚Þ^OC ãChNñÄ!ÀuŠYj	Õ˜,3[W»M° 5DÓ|ÿ­Ä tý@IýÃÈð¶O¾ãÞá£uÓ›{- Â˜%¶'hvrF¿' °Óºä	%ÑÑcà_IÈ/1] ¡ »¯tÀ—Êž	ùòèH‹c—	ÅÇRB1ÈÞw6‘ÑUäÏVõ»á®ùæ´¶-Áv$Øbø,tZ ª„ƒ‘iA‰N=“ƒÛý]›þ©_¢‰ž*N`@’E‹õ2êÙ	rtd]ê¾ÓÛÛQ#ÎéƒYw—‚QÊü«ˆÒ²˜ds¬ÏCf8T:lÀTÞñÞµDÁNwoûUµ0èÚùåÞ¶ºvþ7T¾´´÷ŒÂ“˜»hÄ!Øa±’ÆžEãö‹½Þ‹j{¶¬øn¯§n®çÜ`Úy2Q»ÐAÍ}d×ÝLßÛÝë)ijßGÂjê_]e¨«DÔ˜Œbˆ76W÷©˜75ƒj©ÙÙë)y}²ßÑ×Ç	SÇÐ£PÓ=löuÄ,¬­j{¯§¤ú(‹Â8((ïZš÷ÎÆ³‹æ×PÂ'xGÎôZZ`}PÓ¦ŸßÏçhv}aŸN©šÏVýLjðªÇé¶5N{Ý½^·zœn[D¿÷½>Š³ù-æÎ¥3¨«º	„Q‡$RO^í©y­±AÜA-'kÕd@yÖaR­’;%Å¢¦ý;XCÌîY«({¥­£ì…k%å ¦œ§¥’—ÁU¯«¾OÃEn~í}ïZm{/,¨J- N ¨´&†ÑŒ]2cî: £«laíØ`7,¤J‡Ù.­ce˜’B1mÒKË!Î‹ÃÞö+ß+ypq~‚õ/.&x»Ññ!­‚]µtç‹úRÃ³áäl4Gº‚%ùUGuEßŸNÆƒ‹±®9c§e³úrxÀþ:x?9y2ÖsÒ]ê†‡ïÎûÃƒÁäÍùÙ»ÑXWû¡xœ†õåGçƒÃãƒ‹þþÉ`rÒ¿`'Ödñâò³¿¢Õû?÷Y­šb¶‚èaÿt0õ‰èþðÝIÿüøâW–IIñû¿Éø—I<>;8î_ŸÇ–º³\Æ!^©PãÝ»ãÃ	fÒú”&`Mmµ£í:kk+½ï÷zšŒEwä`)™äí”ù
r Ã¤Aµ’òÂ–þ¯êµ”µjÊà®ÀtT!^>ëÑRí’ü$W:\¼4WK#ÌÕ nörà•¢¨£I¥æŠÇok?ÎzP’u¤Hk®a¼÷3:%§.R<…õùªªo(rœDbsÍáˆT5«`JLWV`(dWzü^DµQÆ2¸C‚¸·®Aà4b	jÊÈÄDì¨)ÙTsÿâõó<bž±¬Œ<Ç˜~”u(_î½t(#oTr;—rÕA)V‡öÅžšq™?‚&ñg¡÷s-0ÝÝK«&‘Úá’µÿw{ßÕj¸§ièÂ¿Cb¿÷î^¥ÙàœùWhÔbÔ]5t’ì<æctÍ\XaaìÐêX‡W÷ÞˆË]®m¥5ºvBh®œašlÉ£µ`¥Ò[<F÷o¢ŒÂ=:D‡‰ºšt7h"[—xÏ0fÐo.¡–ªMGÓr*«iªÇ&ð7yt™çP<:Ü‡âs˜>@úŠn>j‡üÃå“›À’fB»6µ“JTuYÄOxcËùåŠ½S>ûÅ‚,É˜^ûühãOË¯ñRB«<Ž=Ã;ÇBQDs™ëö#=jÂx\Ê2ÆtúYf8½fuÙA´@0±Eˆ©*3º~›AÔû]×dBÏ˜s¹¶V,üŒ2Æƒ8H‚Yš/³H;u8åMçFþq‘f˜Âü0º[T«$;¢õ_;7nnƒ˜õþRO9Äñ5)¦÷ ¾Ógê¹¨4êÔªó~tÈVÜ3Ê#îúA0Ù9o:òþL¨H@‡ÓQ¿u›ÔÃÂ [™I«¹4ø®ü(bxéÂ‹ ýEƒ°Gp>¿\æ ÿ¡ŒÉG'¹çë*,‚Ì“ÊÎ×{iŸGÇ‘·þyÖñïƒÇwãêaüŸî/óçÇÛŠÎ1ùcÕøo²Q°‚ÞO¾}ïðÑ¾{U‚½Pb(4­¶§€fiðY•-{€¸ž‰ÇruLx–§ nâÌ€Iz%@2 ‘BWÕaaØîêv1 äÓÂ"B·»±Š|nÒ ›õð}zk¶ÂØnÃïs³c»	ˆòå‹ú«çšz½æ3Ç°N ÇÈi-RãG<³iY{Áî°nnj9¼SOóËäY.üŠÙŸW+íOÝ†×RñãþìÆu—ux‰û—Ží‹*¡gÅDö~P­Ag—M
±i=Ž8×AŽÜê(Œæé¦ÆÄaœE”mÐ¥H‡Hi¸‚RÝ|`«3^ô1Ý*"§	³¥CS¦©1ëìÄæ÷‹Â®+¸“­C3®©!qôFtÌpÂŸ¥`²8ìì[8W›Ì{BÎ¶9ðgvÓÅcK2P_«M³ù-[íñWy¹Ç·$t±‰ËùRPâ+s¹Ÿú·™ g)$ÓÛÜ ˜Ay/Ã£Éª|m˜A?¬fr“df6Œ‘4cù8ß-B4
£ç^>Væ>´½Ã8ÐtâØÛ.Ý¶ŠyÞXd¨këå6ë06ÖÏ$Mû‘—žËêÆ³´àDÀïšÑg”ðz”üG&FÁ¾è°Z¶ÎÄ9ÏIÿ|È¸›-|6ìàGyÔÁKÇbþÊ+èü9}Æ±h9P¨'ùr¡AØƒreyt“zö¸„:¢¹A„=Z‘3A4[èŸ­À™|NŸeÕµCúeã!m8§ü¨à;ùä€îg‘ïíº¶>ÌLmºšœbˆFÇ)ö0Òð.iyyhœxâ»ŽÇw<¡•ÛlëNiï“÷—üÑx2i´Øžâ,u-ò¢»;ªã›.JŠèšy(XXEìcÊI¬u6k©jž‘…†R‡¨¦Ë•ôÏ³Üz –HmâÛù.È¢¨^é‹–Ðît1^^‡Gs‡éÆ‹Øiÿüâ9ÏÇ&Qû=Xæ]’k iñµ+PÉ}^øËÈ£í‡^«ûMî]¢ë¶-Ò™I:Å¥—­ÁÉhÐ6ú’®OU²Èy"oüÕ*%Ç57¥viÈp4›Ôòõ©óoò€ûô³,‰é53ò¬õ™-ê{ïu,kn“èƒ‰û¶îªæIî-sRjù&–CíB½šÆ”…â!ÃË_ÀwÎ*üé`¾v²
¿ ¯$ÀßÁ«e‘&é¯YÑ}Ûx…A\µ£‚uy_;ýnƒ"š/„s=™ÃSFï,ôþßÿ=ðZ—ÞÏ0Ü?øy­ð€šSF2(Œ¾z´</®³j‚2­ƒÓ‘9ò?G³›8!oE4ËãeÞÒ½œŽvÇs½}€wÝhe°N+@UÂ[qV7ó`ífÎfnf¯xFæWÞSþd´óco[/¦^âQ8Â(°öY¯›ˆÈj _3’*ûbç/’£ëÅŽhë1+¸Ce%ÑKƒèå_GôÒMô»ÄŸÍð‚%ŒC4HW&½‚æl1¿4CwésDÏ®#(C |ÊúÔbà,âÓHO­¢<Ü€v¸­j:œib¥K<\¤í¼²BZð€(ˆ—†ëœ"-v?	!ÆBç0K#‹Žc'›ôö†>F.p¥clqG—«×¸‡ˆ»ŸÁjã¡{KvžÇÐãºcì|tºÏ2+²
˜“×A1÷ç-½Ñ¼·ôìrß2À’ÿ–Á³®5—,Ž€Ì
¯ãƒ-Ú#•Ûy!ÁˆbhkÝkHR‡Ñ÷µ‹Ö<)æ…à)=4æ§`à]é‚u¡Þ:^œ^¬#É– ç/Ð¾;½}wk´ß¿²}ÿZ·}w®öÝ=°}¹ŸÄLä+Êßi"”¿q	Q\{¢ü#úcK¶”9¸tHÃ€W›D%Ã#€4ˆQü–„q©¸qàB;† ç6ø¾Ó­Ø½Ÿ§!Æ(ä“9Þ®öñûaóx	úâ1@.
ý)¦ÍÇÚ
Ìö©n7öäÆ=âr´0šbîY¶³Ï®"ç_|Y@sšÂu«±ðþ…8e~çrÐ¦(…ð.éx{ùûOöÚñýÞ¶Ú*¦[‡‘Ð/¼>Ñ;ôbx	Fu‰gá~q8ËCÜ.i»€„$JËÍÊe¨xe„öÔŠrËqqve,¹$LFÜ8HKÑ½™Ö{7-×Å>í62<Ø¨˜š„õuèKÒAv¿(Òu*	°’ ®’¦&fâKý•ýVFfBJ{ët^eô¢±
LÐ]Ëu/VbîyRõ“€`0mo).˜;n2KóÜïZÎSá3Ýšñm¸åNEðÌÚEaZŽUt@Ñ}Á•Ñi²õ%ÊR~túøÐyNçKyßt'ï@¦ä›`<Èô>ê˜=ö_ü8cýü4|±«-ÝcŠç)ù”œüŽ¦ª>ïèýßÔcŠUhŽÙµuéÃ¦SHMý¥Xï±>¤j+Õ_§<›:Q±R?0æâ9ˆ°¾V6†;úxnêPÅšÎšÕ"«¨ÅßTµú#âŽKü¥ÑIÍøC-´DBÆ!€½­®Æ%è™Þøò»Þó«À‡mvDËw¼ž÷ÃìwiìiÁÎ¸ºÑdšÌFÓÔë#y˜¼8/‚J^pˆ !/*xh¼Vó¢M¦¡Él4MÏ'vQb†%!D‰3„(!DƒRìO.îGðO65AJÑ?Åœ
‘¥ðŸ,ÊoˆrüY„X@·_h¯Z£ÃŠ 
óyn’a… Ý.“À¤Â²Ç:t¯H¨µÆ¿o¼HèÑ3Èp‡~¯;¬7GËDY<uáÂë°nkmÏ#’s×!ìÝëã¦;˜Œ!•gp4tØ˜hº9Æáê÷8šE3$ :l5]MY`ço ž8wpÀuØ°kºN²k¾¢¢Þ¹‚µÃ†kÓµ‘ú.	ÒCèØ‚ƒbà6Ì›.}è(÷±gæOæ_¿i8Å=$CœÑMžÑ³K 1À’Dcðå] 6…o1¢EBü.µ£%J¬ÃaÉúÇÉÄÛ#ê«Ù˜ð­1øáˆ!J|çâx$yl@XÖ¨e‘þ¹l‘äúgË&˜Îé³øZ»çö°,%Zü×~–úaàƒ ŽAýoñ?×m—YJï”lóŠl˜¦VÏÏ=IOAdƒ‘öiu/Çè5õébLº˜ìq®Î¹·ò¶¬ É;¬7 ‚þlÖ0!
gßJüØ‘Öõø›§ Ê£^ò fs0NgËüZxa7x½`gÔÜvøÚÍä’_¹¥|mbs>ðÊ,Fì¼ Æ‡säþ²˜]b)|iÒ?EOxÓÜ‘,¼Cd’j·-²*läU¥y¡¼¢÷‰UN°ÆN%ñz‚"žñëèÑö¢éãë}Š©a5â§$üàçÍVwXüÔÑ‹E‡uÞ×JÁ8ÈU<(/þ¡&¦B‡ø"P\ýÿ#¦"¹]pná/ÍÙ•Nnð:_”3‡}‡Œq˜xðÅ„²Å-Œ$bQ
ÐZLä!- æÿƒ‡u¥$I’ØÐeiáVuú;fkÖÓÏDï˜"Dï<v©é&ƒ;6Ã‡I­ö)uD¼QGtÎk>:j@|íMƒ©e½ÂÝz…G§õŠ`eë¡ù•r¥›€¹4)3éI@Ç™(	…©B$¶š9jáÃFiG2ÉÌãkoïºÂàc´wôv4WÛUuk«êvtf|µóêjfFUà}GÛfìR!j÷MíóY^†è¶¨vôütæ3°§ªÔ%óE›_©(µí_gÅ¥·«àT‚ŒK?˜‡—eœÊÃqy™—‰³CCò°@tÃ$Ÿãz&ãìÍÓÏÑ½IµµsŠPþK C;²ulªš]áNg8ÿ÷ÿöZÿ`?Ÿ<á=×6ñm¾žŒ2Á:Ò—ÆoNX@5Û‡ÒÒ‘¹B«	qGgvAl„Øu1‰ŒŠd÷>žQ¦ZgJ+†¤#†[ãÊiÔYu³Ô&Â¹>Å%ð #;aUðC§›ïMLRœ‰ôQ=>ÈSÇ»MÞ«½Þ+AV~%W{ìgWxþüÚOÔ}³%BÊŽ˜GIaóÉ&4²—‚¼ux«?cir‘KñÕ3ïô°††³#æjsZ.s›Z”òd?.¶ö—ÁgçA“K¼ág~µ„Ç…GKÕaö±]d§VÃBß¿êÙ{kT¦^]3Ab´íÍjm1ü9ºF[S4¬¢€±C‚¨†Õ˜`úÎN>Ö«J>FeÝ
ca)%qÓÃæÁŽƒé´õÆÛ/£ì*2Þ;
Ÿ±©åÞ¦Xû8¨È}‡÷~ÇYÄŽ‘×Wng:\¿rPæÖ¨ßXYmmÈyópˆÄ¶®+*`iÜÐš
´ômš;*`ù¡ÊæW`È›úþ7_FJYÊê2Nâ`Þ!
0E-5‘Æäá}âÏf^¥SµUƒ¿5=Wj°Ó@j°‘ÉÌî™&˜‹TÕ+¦cÈ!«mÆâ•ÜÒª#©Ò¦ìº'á“þ?|>JØoG¶zÏN&ZÑqÊc4;0bÃ*½dþKÌr*…ËÙ¥b¦,—³öÝ²p‹kJb«“R7l?0}xÓñàï>þ}H¿û2è†gÆžÛOOŒêp~5>üLÑ¥wÇ/v™,G–ðˆTuŽÌ•i§8³;Šíèªˆn`Ž­t«ª8«¾K0ˆ©ˆ<Dûl-¡ì®ìÂïÉÆéˆ¤ÙË.Âäõ1&ßÿðnl†FGœÑýƒï=û¦}¢/5³ìÉSÕãÅ-¨­96Ó®1+§¯°¿`vMñÌ>ÁøÓ!‚éT¿+Œiž_nOàëT£L~Ãñäèd¿?ž¼=~óvp>9í6§å<ŒH75*°çå,¿Ü¸ñŸœ}àèÿ²ã™Ú‰cŒxÆË(ŽÖÐmŒæËÑu°Ì2Šœ‘yùøŽ¢JÕ&˜S3S¥†Nv¨š°>«ñÅYÔ‘¼‚žö)#	R@šTO}!ÑÂÏ0à„é¯K<\Äô×òüÕòHD¾ÕÆÝ5Ú(ûgía7ik\Ykg’«y¸Ð¾Z‚5º+B Ö4ðÅ>Ì-S²§\ùù0W|Øü¦Ä	c{Ä·…ä¡RÑÅ®s¤¬½Ùð¯“¡ðí†G‡„ÜËj/­‹xöJÿnOßE<5¾[ëé".vôÏÖZ
Ÿ·õÏVÃgt[Èºÿúu”»=1TÏ“­ÏUèµœ@¯<4!iÖÈu¤§~u×š®¯Íh8Â+N1%"¦õDð
"0]\é¤8UQìtX÷6]cëªØvW±ÝaC¤éT««¢ç®¢×aÃìk'W.&—cyÅt²®w5yQJ4üiôËsZõ~y»âÜ|`8Fžs´Ñ8%Nâ¬)¹•Å÷¡ñ¼‡Ð`¦QÆã Á–êPß·å÷mç÷žüÞs~'7˜>â‹'wo%øÚc"‘×Å$Îëby]ŒeöRdY¢]çò—ï8Jm—%\ËØNéŸf"JAÝˆòÓ"‹rAÏ~+6ÄÑg:ŒÃÞ;•ÏÈ÷m;vþ6*Ø±ó ‘Z ö*v•@ì,#¾Mˆ¹’ÝF6ÖRV,p›A§¡&þø*I1jä.Î4~Žî½-ï]Îf#?±ƒGN²ˆYJ£D¶vs¡ïzÏvÐ†šÒ˜Q?öžm?ëá+àÊ,.+Žz¤ßà.˜-)+?ºåõg3ïœnáÎS}Öa=×4í@ªÚšTƒýÞa½ß8Õn¹9z˜DÇÙ´oi­+¨·§A=·dGÓ@lž™Äj‹z¤}Í­i…×E&Ù|Af'Ð%.¯®ù>7Ep¬Æ0G:l¦|¥Á»àiEá‡8ðÀÂÓ±SÚÀ{<Þ'>¿,…†«ùÉM%XÁ®hëç˜Eþ8ýXm‡UîôkÓr­Ó¯'OˆÛµþ¢§å¨½¥RŽ>?n+âC»ö"–ûE!ÒèÒo—gß;—2:†×#dS’_Lÿ­+ÛãÜlP»I_©	Î”+“ývèƒ³JWæÕÒÏl{µ
o¿XÖbÅnÔ¾×êŽ³œÞ¡G‡®
ÍigøérT'yxš\¤¨•ÞXà÷Áù"Á(·÷t]f;£N ³ðGuÒV;–¹ÏÎab¸ž¯-R,97?›bi½ØUcŒéÁ”fý(Kçž_Ýxò¢«Eù È/+bÝðšEê,®Ábk™^ºÁ_÷Øën×|ÝAªç"·¡³Ýc×5h›«é÷C<Õµ¢	|ÄÙGÚªørv‰¶Âè®ã]¦éÌåf’Â«N²œ3„DÂd:ó¯rþ¦	AàtÓ99þðãïýà|ÿl<xÍoÍõOcþ6–ò½…¯ùÀOãdÂ¼û›-ð³½)Ü…Åþñ°þ«v)»aÕ¾bµMçÚRPs4ÿk|6´ï3UœkQì-gC[Þé.ßPt©èttŠœô÷zìU¸GsyŽÕËIþ%Â#²8Êg^5ÏBg’|ë'l›EQñlT”r«E‘³Š"ß-‚Iñ¹ÃÚ„Ô‘`D@ä»ðþÑ†~M¶±1d–ùÓ³v4é‚S1v}kÌ¸üø8üÄØ*G­˜šH¥ÂõYÓ‹Ìmm·‘¹ÚW7‘yç²jPoê”Î–ÚÁ¬p:ee—¬‚ØÐ½VÆ†^ÂUèÐ¥hÁV°®:š0}+:´ì/´K8ÉÖn0°Ð87àZn¢Yh¹õº17y­2r¨€rY¦ÕÔ´ZZòv&§˜·\õhÀÝ™œaZÉcÿv™èsBÄ$ö!@»Tf1]Qf1µ·ËúŠ À.s™¯  JeRoE™´\ÍŠö €U(ÓËÚzÀ*Ci­¨ŒÐ6šeÄ"„ZR,ês%4¥‰SRU·¸½â¬XºI †N/ã¯*ã—Ê„«ê	Ëõ„«ê	Kõ¤·y} `eþÔ¸>ÏólVWŒ Ìžš3ÏªJE®2	k—È³À(Á0g${þÔ¡%[…8ör…ˆÅS„˜Á ’&`/Ðhm˜õ1CÏ› ÄöŠñÌLìQ^¾Y=@›bUÙÕ¡JKØìí{/ä…ö²Ìãîö ‹Œ?”ð@´eüb·¦’WµuPiwt¼RÙOÓ:ôXÑÕrßñžÈeß¢àG¥€xßjã€ÑE}oŠvA†¶™ûx;„JëŸCWlí„Þ%Y1[,JtcóPÿ¼­>ŸG3vÉÏ(ÊHJ‚ˆ/ÜPbj#.w-Ò
z6ÏÛ†Î¹ë_ð¦3ý9[0@óôÿFW™
Ï½Ž¬¨7iZC&Õ~T—è~”¼1Lù\ûá*"ŽNò™z†qxžïWáUˆ?áe¶Øcl¢q³
êxd³ÆÁŠN-rcã†¼Hbâ&ÿHZ0µ($"n”½Ã–Þø!­txópsžTéngƒ™×,žë»]KoõWDtÉCÈK= ö»u"ßÕÅdi¾§¼@ÿ=Í¹4ñ²´ðõ¼]|Ö°VvDk…ÿAžü	Êªº.|»*Æ¶tYø
7YÝ¨)Ô )ì1ÓcXð>´Ã#“,¼'÷báˆº³£mkÝ‹ö­â¶ÑcLÎ¤,òÃ{+t¢+K½Xå†©dJ­Î™Hµ¯f•A+]0ÿYßI5’Ü°ÒM—‰ðìa…cU´Æ•ÒÔ1Qaø®”y&–f¶j­‘]²T›ªµXfj#+µ­e£>L7m¦šÖ3m[˜%¦Ë>H•UM@qTeÅƒY!ÇÃQáÒàQ‹¼EŸž²C9UY²ƒ&Âa‘æØÎ„tRËýŠÊ~¤HMvó`øI8cñÚ©æçÉøâüxøæ“@ÀTèWò™©í½òEÇ+ÅP•bMfæÖsàrÎ!‚²àQrEÜ$Ê“oªã79Ý¬`IRí›L¹Ç?°(×ãÃÁðâøè×Éaÿ¢?ÿ6`Ÿ¿ÅÓ	SÝô è*‘Dïi°ÄÐR2¾ÅBdÞ`Cá8d[d\ÂJõ™ òÛ¸®PÁ*	0µ¼=>¼˜VA*ô<š‹ûõVG«þ‚Pµ¥Ø'@Ë4·m­:cË¶¶KË6µP£ÆÑiÔýZkp©a¤8é£a×¤ahû,KµÖT-Ù‘ºº¢e¬òÚ–½³¶\Õ.v19<4gAšq÷+,&²Iá’µYú©,0ƒîåJ²ÆÇ:ÕO`Ö×SmàÖZo!ßJJäkIHMýå¬ ÚŸ?õÆŸãÉÏ	Þ¹‡—Í‚fõ\5HN*	]VMD¨Ëtb‚v‘‡“Û4ûŒ·ž‰,ØM_bjÂ3·Spj*~Æ‡“gç?Ÿœõ'Ãt¿ã$ÃÈC}s§
0´˜ˆlÚbƒJŠBÚãd42´Ž.‡Á¬–kïr‰Q§éÔË@ËJçl¯ÜÄÜ;÷½mïüCÇÛéæ„ÃUÙ6¯ìmäßÜ{yôÇ(˜D„37‘¾êþìõ¶_ý¨Ç,lZ·iªKµRËvž3Z2gi‰Ø§ŽÇÁGíp}+g!`ehG%ÙñhG×Æ“áÙÅä|0:;¿r~µË˜y¶0-X,½äêŽÔ«€orz|p~6ùÐ¿¸c„üwŸÁ‚Øû`â|Üí-Ÿ=îî.?`à%ÕüÜ££æâñ1{\Y5Ô|rr\UsE½Ûv½F­_Ùùåcx„ÛÞòÆ/°¢ÂßRù!å£ä“Ct?ç¹æ‡cãdîßM*Æ
iOžž…é†¤±Ç»äDZì¡§¨­Öq½ Ð^$ÃNúoÆ“ÓÆ–“Rt¦‡™*%M²GÕ+½Wmç–êš’õhžY4£ÏÂrÏ¦ÚåðQ2ó‹½Ç¡ÝñYÆÿ™í‘6þˆŽÄj²[p‹ $“¹{ÌÓggšSUí0wÆxDu<ëÍÌv[»)?²KPÐÐî'åê;¬'¬€x‘›yÏ§ÛG7Ö¨
6¯–0«âß½t*äjh‘£-“eÜ.ßþŸÕ7»TÏ÷ZKˆÚK[Oo(ÁamóKmÈsÊ“‘^þÎ>ÍÒ´h¯sé”#\ætaÍÚGÁ·«ä¹ó&†1‰!ÒZçzÇ¦…;Yº˜™zh(eeyxcÙ×y.ÊÕ•"(³œW¸uñì)SI[ð±-4?V2i‹i?5ó†æ
ÁÜ@0Íš!˜fÁÔpHdþ¥BÀœ>èpqElñw@²2ôqû“@A=ó±kdi¸oÊÐ¡	8XéŸbé˜ÑCe–¼‹ÜÙ2ü`‘3iUTö>ƒ2º½×åÁfKn€2JeE¸“­,EP¥rQ£r‘Q.õ£|5•ÕnÀp„Ó‹è|,2Ì–°¢"Õ¤*iÓù‘Íí²»¡ÚVog34±ìa!?4!MÀ¶eåÜäºn­ñÌ6wù¬”¾$4‹ž½Õ_•T*¶Ý¤Øv©ØN“b;¦Ÿôfžgf1®¥â‡œ$¸–UFN°Û ö\ØñCäÖ2KHéž5|h€ Z:¼>Ý‚Ã¡šM· ×‹èŽmR’oðÁ€‹²™>˜kÉüÖ-Œé>ðÕÄÒâf	¹_½ðK¢’Aâ¥Ï«QãÑ¼tïÍ‘³uâ’ÖˆéªX³„
ÊÝˆ¸auÕÐÆû^Í²O(©§‹ìîÕÕÈÙu­V‰žnu¢§ûJ §+N­2=»3Ó`Ly„kk®¨‹_jÓ%S“Ú‚ÆµzmA©¶y1õ­N/×†@†¼ž/2¹6—·™X)²Šá¥¶+‹Q¬Ñzz¸^³h=†Ò¸zs¿ÄýŸfIšå×R³\ƒš¥AÍ²L»\r¥–Df6¨]Ê©ÒeO˜3}§n¬Ñ}ð"uÊü`äÛå•?è€ŸýÜ^
Ê„ 9øè:ÇU»/²§Ø”z!ÃÎ)æ+9¥®6\µøÒUz!½ª»&UÝ5­êN«êÎªJÜ®W?ÖÄ½‚jwšmæF˜Û’Æ¿Wp…Yûà¸¯ëÊI Ç¦õŠ¢È(ê'¾=±øR”XF ¿áË	¹2­tì¦5»”>À[±4+`v‰`‚ºþIœ‹H3gªŠ")KR:tYÀå
2JÎ£+Å¹‡ˆm†À¼	™îyr*âº¥U3ài^Ú4•¸ƒf¸…Û¾ðº1˜¯šÈœºÿ¦²¿ÍÕ›îíYm $„D‰i °ËEVUÄî.i¢ÝÓý(z!½®¤J¿Çk@ OÄÚÁá5°1ÞØÐÈlðrb³Ó%õ].O˜h¥ð<ÆÊRüL†ôžñ4þ%1%®XÝq£@©œ‹·‹Àj·«ÎS1s3ð›%”©IdV´Z’‘“˜¯è˜N½É@ÇtíZ]ê\¹<A¥uøjÖ¨"J®1Ô_™ªéŽ@mK¸„‰8Rò IKÚ6Ò ±Ï©”H! SB//“?^®ÎeMpÊmÍõ!AþeÈœ
iÖ¤\V*„étºb2 £Káê”LW&VÉ¦@¹!eÙ”ÒÛ1ëèƒ1¦íNpÌ†iC±?Ub°0Õªífü)Pêû+€X{R2ïxÃw''Æ&ÎM^È¯JCÈÌ_uùÇÍÜµI†ïÙFþjTüÀ,Bolbá›‡mdQc$
k+ríaáui+ŸSD D®N»Û/ùÌˆ_Èe%äÒ„çY$~± iåL–¥ò™©¶Î-x¦{é:Ó­g¥+£+àŸ\ˆ´WWÖ«Eì¾Î)/‚,×vìTÁ¤÷ârçÅ\+¥”`ˆmk·?ý%—!©ô;ã"Íü«È»ð¯¼ƒë(øÌrBðü„e¡Ðóí ¥K¤Q‘M¯ãÔÏ?ó…Kg†…^?­°zn³÷­¤UÝoÈùÖ{Š?+sJàŸ&9(Tº	^hÍ¤ÖƒÜÙeJ‡Ê‰'Øu´ãAÐñ{òïI5Á¹"LÐóšBOñ^ [3Eq­•‡bv‰Óp¯6Ñ‚§×pÒêCiWÞ${ƒ•"A?I»ˆCßô,Ôž6æên
2³ÔCÎhF<¹±qäcøÑ>ÆÛ˜’,3xLLÕ­àä@iÆ>Qdèô5·ÒÚ ›.ã9K'A+ä ƒÙ‡AçxE±·eÊººøt¼ßæGDÍÓŸD=?¨)o¾‡0ùG:ùb—%û+ËÜÙV_½M)ÀÄùL1;„TçhÙ™°vƒS›‘vlÐax˜vjÓ<®¹~u.ëÚÇÅÔŽÚ{ŠdH»yFR¥Â‡¿0$ˆ£«”):Í\wµ”¨ß†ã&Á@_|‡µõ¾.«bŠ£_RhüˆP]zh±¹ðdE[r×–Þ€î«Á¾DúwKŸ¸ù‚øÅÇÊŒe¿Ìó~ƒFz}Š‡ÃÔ{Ë:æš™ú%ê ‘0;~r¯õ–R–ó;#Å•mžºª.Ÿç½÷³˜î¦:1ág÷ZUÐÜµyýÊ~wûtwhúE]„/ñQ¿óíKéÆrdw*º{5ó¿àýZBöè—ìÖ‡Åe§×tïÃÒyL)ìæ<$¶ï§Ë$„Žˆô>Fr;ŒhÆúŠþtsšÏ2žõ³È—‘.¼©L–‰v—ÐWªô\ÐiA¼„Ö”É,žÇ…¸Ì¿œ‰ÅAR¨J¿\µÀKŸ
V„zØo%¬ö*‰ÈÅZý2ô“'ž´ÎeØ2O¢çF#^¤¼.]ŠóØL¢CwÊ„6ãr\¦¿åeƒˆpjŽît«*¯:dÍX}hîD¤ÏbƒDð~;ÿÐç÷Íž‰8l}´jtu"]ƒ«Š?®µký¥CÏøžþÑ–ÈYš\5;Ìì´%ßß«	™BÑ¥§:q}Q¹;x^–¿ì¬ts¥_±ÑÐ/cÆåÙ8]R°÷DØ´rsº9.zrR$jä` ƒ×Ïü ˆ2ÌPäÎ±¸“
V½¬0·u`PPWÃŸÕ­ /[q¶àG
°9¡bf³ÛuÐÂSÓZÌ$ »!µ•8Z"r9Í1Óõl±£?V>'ü.„ŸÐ'`þ§ËŒ©[Â[¨Qè(|²Šç%Ç'¨V;÷§³áVÇž€@²ªáéŠ†§ZÃaˆ&ë4;Õ›m®htººÑéÊF§ªÑÍÖ[:¨K-_g=½e‡N›#˜¦ë#€:{‚Þú¶Ûë#Ø1ì|-ÖmB	ÁºM(!ØÙ4$w²œãJ_3|8„áÍÅÓ«:YI ¥2¸T[†oU-\'Ñ‰’>J†Æe<Sãw‘A¨C¯ßKYw²`]‹„NýŸ.¯_Æå«§69VX¾}òP{YÖ¬îÝcá
C·‹J­µ±IPÚýœ
‹H¸Õã	·ì„ZfvU$6ÂP_0¹«ÊÅÞ…`®ýðƒ÷‚G‰IžPÉ<é§¬v‹"lÖž‡è÷ôö î½ÇKÓ7ÒB
	l¯ ó‘žÇJÒÊ]*5$ªtVå/¯¿¯™ÅÊRDg º”Ö9½F%”~4t)¿n˜`BTÉ±»<Š^¯»½k¥xãàä…ÎB½Û>>Þ]~Ú‚"¶e…Q®Î?*ir…%œ¿']g2K¯¼§ðWG3ä,-œ¶ÔA†xIö%uÅú!2Ö%Udx`ÉUµå!€ÐLü 8rT°&°ÉŠ×›Š/Gö£Ç2›Cí"M=÷6?÷®}Ð‰8G0Ÿù”òÃÌ8<Ã+:øan^{—•ÈŸ‰ñÊÚÌG¸”úHÇž'…˜hŠ=<_EN	)¡»;¡½™Â=O‰__Xú	f¦1–S?ã!ípKÆ’&¡‘¤€^˜‡Ü;&¿Ž“ñà—çÇƒÉùà—=ÕÍ›ú{ô×kÇ¹Og°)«F‡·	£—eìEÚp<ùm<œŽ.~Õk£XW	ôøtt29†:8¼¤wƒCg™Á¿eàe]™ƒ°Põìø|Ð?œœOŒ6àK|ç,qôîäDÆg'àÙÑÑÉñp ÃòWõåáå¸‘ì®j§›L’`J¦ør	K÷Žø<÷ÂŸÝØ¡{‘Øï’2õq÷L‹ÿÞÜìlöà¿møogóOmö÷¡’œ/ÒÎå—R¸½÷c~S6´­õÅÇÕ‰-ýÉo‡ƒ÷mÇÅeÈóßÎMéÁcæÐSpWjË¯Á¾é¯ÉbQz@¹ÕPqü¤{¶úiûé$ÈJôUÐs'q~]Aÿ¸EŒ Zb~Ã«Ä¬Ò• m'á÷¤vGEN"Ï{E#ig›.GW’¸<r‚‰øÈK³WŽÅL¹ ŒƒÝlÄ¥›Ž¾Xâ.úŸftÕþ~mAñüRÞSü[,+w¤_ì‚ÜgM¥uOÉqÌIÃ¿hKýñ 
úùù·‡®È‚ÅÿÖ÷[]'0ŠîÚ ›/yÏÝ¤˜ïÒ›¨¼¦8›ôJc?)Q¼n-ÅÙö±÷Šñ7Ž/M"¿¶Üx5ý	cÐýÑpÛêu¥úüad¿ƒÈ~ER”líœ.,¤ß»Ê p¯ãH,ä9èÑíªµžÁÜ.Ú¡ÑÄ9m¯¶¢*JÂÊq¹ÔWðTY^ÆgÃ ÅÂÁ²QvÚ|5“ÿ¹µ{'˜L¿ùR¡=àö8ñ?Ò«üU°¢ÕœâÆ‚¨¸="ùêZÔ¬‘«–EÌ-š…ŽÜz8ƒÔœ¡ÒÑ$¬´ºògRùý³Æ+íSü3ÈäÏ†yMã×b?Ë	y„e´œ?Ø¯H2ÃID	ŸI3›Pî³s|‚,Í'„9”"÷˜ñ()”Ãƒ€Kq'-øÔñ¶»»/Ûšd¬±<ŠyªÃ(«³"Ñ¥By3K·	Ñ[aWÓƒžŒ’}mœ¯öÁ¶¤¨Yµ‚çõn÷aíã%«S£`@î¹ ±©b¨DCu5‰­¸eE‰æt¸gö>JÖ¡*îèpIX_H^o ÚÖýÇÇÛá'6Œ(¯ªZù¢MžùG4ç‘òœ“|bÉ–DÆTãÆ€e†Yæ'WYº\HÜ_’å®›ì~ž`ºf\®è†.é1|d%{²PfÙîçÂÄ˜.ŠxîÏ&ìê8’¶ÆFÕ
Œ©©H&&
?fU¨>¬ðˆ'–×®1«+Ø³ºD¦{ËJÿ5Õ.«ª­V5ö#ûÙ=?Cæ/òIñTáð£¼©/ÌßÄúW;ÖçLó˜+6Øp»<A¾?V[Kü¸\¿‹ˆÃÿª“‡‹ýz†í—UØþÀÿJØÊ‚Ûæm‹ÙÛº·A`9†>àÊú>É8U®Ö\±îæy¹Éþ¢.ÍøˆÁëçäžÆñX1o+“AmÎdFØ}«2(+sL¡D†8`ÃjÉêŽ×¸ç•QRºÝÿ˜f…!åÌ“T†€ÌüLdSu±ÌJæ@ojN¨b«Ü"«;yÎË-JTN³|¾²Yå®2?YYÌrqfÆ%fÆM˜—˜7af\ffÜ„™q‰™qfÆefÆM˜fVy„ži1¨[Â•¨‹3„k¦y Ìæ!
ÒeÒ`ÿgvB¡–åýSï	¯fë'ñúc÷9‰hÙÓÝžž@f8YÉßémžM§³8‰€=›g	ýòþDÙ¥›;²x|-O5@}1¹¤m@­lí>à”ÉüÅšVÕu+§ÛÐR6E!]:kÛ<ºÇqøîôøP
Êár~	°`WKGäð0•rnÙÚ6§Ë¥i{Þø€ëÖ[;âäB½vm+×DÃø@¼çn©"Ý£Mèg]Ía¡O9Þ@5Ë[G¦*FZeŽ%O«Ê[£²…»²ñÁØ«m9k¯Ìk=ÎÛ²F³I\Ñæ‹õéuŸÊ¤¼?JRÞÇY±ëàh™°s|”¨AÑ´Ý7ÓÄÑì!(nÚ ôàñhÝiÊ\?ç“kº’›?œu›uÿ5uÅµN€|‚z9óÁ8º§ìÐ(Ý€ÞÓÿ¯½oKn#Iü¦N­6ª)Ô£Ô¬’Æ@ $a…W!AqÔ’	U (q§e6ÇØ½ÅžaŽ2'wwdd"A²fÚlWÖÍBfF¸ÇÃÃÃÃÃ×Û©xîÇ®®mfu½«JéãµÒL'X”öi:ÓµÒxT¹×ëjbóWUç÷˜¦MÎÙ5gùZ¯šdUfR„`fòŠ$ûÓ€aNha‰²ÔYŒ`î4c	+ý%fWƒ†þ–òzcøï„1Žº‡«ŠÂZgÁîÍW[Á™gŒÉÇÉhµâM77~º×z[Ñ~½@âÿ*‰ÏA[ñ¡•ŽêíÑ‚€¤Ð¦,N
{™¾$Õg¶§~æ?åMöû §¡«zµÕ‚ÕýÖõõbÒùÒê†q¨VÆ“'bõŸ)ÕFŠ
N¤uioêA¯ß,ÿ«+>-yŽð/Äq4œp;ká×¨ÌÕµ.¶oSý2(â&Œ`a*/BÑ[š`èè*\‚HYë¯î`±bÖ8êš±X¹ïY8Î
ž'köùO«SÅDçÃÈ0â…iúÉ2Ïã7ÒÞÃ?&¢Ù9”¾•¸¯¡3´­ˆ™odq£ÉÈ¡ˆ|”Wè E±ÓÕ«i Žrƒ
ÖWñ]¼
g@ÍL&.LåŒéVúþÄN„+ùêK©þáp;m°‰˜³/þÒ;Eûæè[ ˆ
(~êÛ»V)yrÑéd”-Øñ5€.‹"á¢A´jh
u^“–GÑîöçy¦B3É„y(0ÎŽl|"‡xÞâ¾ë>,V Qü•?ç×§9ýÕ-Uš¨ Ñ÷~[âÀ:ò..ÁPÏ™@À¬óÜ)(I:^Ñ×¨h;ŠL”v5Bço{ãÔ&íÅcšÆn¡2ÏhFRo~ÁÕõÄþ%oük¾nqw‚L´^üO4ó’€ðµ°[é[ˆîE“o9úÊ°=¼cZ.ë2Ú€æ¿ŽN•k¼=0ÀùnUFu`qÅì=²Õ½Ü7É“h»“ï€)F–³ðÄ§—y}x¤,dq$±ÅÁŠ‡®ýtýEÛr“ƒßW(Á†DôiIàÙ¦ï–¢é#jêõ¨?«¥ÏÈ–¿µŒYÅ+eÍZ:fÒ e¹LfLFLNÂ3Oæ£	ç”O*dár	¿ž~†æ?etÍ%æøGÏ•Yè¡ÆÑ­6Ë¬§Š]ðH<€dA¶Öópš^ã¥ÑüJ'òëWºdØÅàà]Ñ}¤ô£mˆ<ß}Šbª‹æì©·ý½Øƒç>Y ãº>žÎÇ˜ÍQx;‡ƒ\nGûíÒ²)BfaJ•»§6nQ$ÿÎ­AuÔ§h­é4¢k¹o‡nO†áñn,ë]©Z(üä(anmÍÔ¯òE‹jíÆ ]}ïSNlºâ×¹	QUŒÝÇòiÏw£{÷œn4Ì¨eïžñß'£¥p6ûòw'ôÎp6eÃ5
Ó7°1¼ŽÔ ŠQ¤æò•Á‹j–$
°ñ ÈÉnïâi5¸Öíp%¬”ùàJXÚ`9ëóòC D"š&Ó«•,‰Íõlc–8u\ñncÿlÝÚ‰©8ó¦¢Ê ÂÏþ‚ãÛ“OüeVKm™2ŒFaJ7øG°wÐÄÉ+eè†®ù
ïM¼‡ý‰°›L wÙ“'˜nÿ6¤ð'¾®ºeòÛ”8ÜÆ·ÂÕâÿô^ð–=IüÈ¶É7o_$ó
Gqî@c¿¡óõp5U¬õÞ7l¢9Ô”íŒìî`ö±/Äëy#ñÚ¾cNp|ñ©ô…ýƒœ—‡_ÐÏð­µI|ž“‚Œo¼\Àkž;*îëp®ÏõÉ;l‰Š9™—î*»ÃÈ``˜nÉIú#ºc–å¯,[‹ÕbûÒ'©Rh?RcY@T³çj²"=…(Áá¤mêÅ®¡=œAOWëñÁ_1[E‹gp–‚Í2šÿeÅ¦Q´`‹ˆ$ª$y}|æ5éõqú·@“ÈØÑ«"{¥DùYöú	¹mˆ)61±áòBÆ~ë)a³tî†v[½Àh¦Ü!YdÔÅÄJ´Œ	l9ŒW"Â¾æ@%Ýê(*Š¶¸»µx!òÊÉ&ýÞ	jÙ&V.*ûgíÄüâ!4bG*m¼!Úxóß@á·Uòp'5ƒBÂ\$²JÂ2‘Sºý¬†î´zˆ šiÁãƒù›HþÛÞ´à\pöãã ?ý–’2ü» ñsJ¨Îñ×ÄÉg<YÎ¾–P`
'Ã=^Â‰å´íAgCD½yÐ–÷ÞõDCÔ‡?çºù½”Dë­MëTôš7Ö¡Æ<É˜{Æ`<1-ì8ðƒ÷ðÚw|ùÑqã–Åa@`21#_GcøVŽWñ™]ÐšjxµK‰-þ\:|£üZ”L?ÁÐ$IêÅ9®'¤EZô´±i.å!é.Ët¤ÜçåYIÉo›h‰Û-¡øýP%Ÿ+y>!Ê×éM!îƒ£Ôô§wÆ´˜ Ûx¶û ^í—áx“voØ
|·†;8N|4‰OÄ¡„7{Ñ¼í1)(¡­S‡µ5rõ,‚õ±‚ 	JJïwÉ#=.fÄFa¯®bÒ±ÐM^á´Þ¨¡°íœIßL^*áŒž²ïØÓHGdºOÑÝòéá‹†KˆÀ+ÁE§óW0$¿6N*º^*p´ÒSªÒ¬ök§§µJºe0Ö'¶à˜¾X­Í Z9!Õ7Cªç‚TÙÜ¦J¾6]Á&Ht]Ô.8¾>²šÔ€v‚_¸AþEÁ¾¡‰ØP(lád,ŒÌ´Ä¨ôv¸ÓqE d-F\´1¬y6—ÆC|´bDáÃë!• @ÿ5(Àù­\tOJ‹qIÈn£ÙdÎò¸ÛL~¤
N¼Z}7o®ãŸdØlnXì:Bm¯_À&dè°P®»oFh:ya»¥·ßÈ‡¡ÞÆ¯íIŒ¹Í©‰RTÈš`‚%;£h5p_Ž ÷Lœ™×Ðj˜0*µ¡?œÌ6^Ð
7?K”ØÊ2XObšýZ{nr^Ï`<
Îœ„~cß2Â¾•ÙžxØ'†»Ç¸YÉ¾3ç&'WsÎ•ÂÞãÜ_	"#×)œ@þˆñZá¼?güEá™`Ÿ=3jÊÉý'n¥HGÒÝ`2åaZ¦@è	ÀÂ÷a$p$A¾_9’™ÜˆÓVœ9¾rcLËƒ»´0’{­áØœ¦P«kÐxß”„MN£8 6†¨Ò\Ú÷yBþŸâ˜Ý
‰É0€íƒÜ	Ï£h½r¬#T0§ñ2LÀÈfKRåWÐrâ0ž0ø^ŠÅ‰åâ$û·¾H*´M<qÂÇT‚z3„C_Jóæh«{S°{ðümIœ(ñ}“F86‚¿µÁó>Ã mEÀÃ¶<´Š]˜Îm€"Jð¿oWcµ€g•‰Íô(P(ÊÍîÛ Ž-ˆÂ0*X„ÃÉ¤Î{c(‰¿-™à;âm¤Ò·ÃR)«½)r,uIN'\±pö’F›°iòwSóxoèdL ¬øý¨ñyïáa(=pÒ~8Þ„;|â#°}jãÜ/åÄö«¼WÃ&ƒ»™o‹ù˜©â#¼2ñ<&óð›¸´G0Î=j¦Ìëz|¶YG£}g#‹AÌhw{µ*½é”ÏjÁ±KúnªµÛQš$˜Z·Ûîïá¥è~ÖÈæà¯4ËÝžY^°ì<LW7›œ^öƒFÛ¡(ª6B¨œ—[g5<,š@dx6m†ñ)´Üfk‡éQDÎVãSëU­}¨W0PYã´ß«=c.ª¤Æ8¬Â´¶ôjZ³Öë~ìŸ·­ê½pÎB4&ÆàùõùdE&›ÀTzÝ†Œö‰Ù¬Öª^tË-è×Y·}Ñ1 ¹¦Y'«Ó­Uë•^ù¤ïÊ=Üý‚tSì,Ã½(›@Z4Þ±Ï£…[J> å³3£>µ[`¥¬|}½¯E˜±$Ør«Œä  •ã»°VMUåá0ŒSˆ¡Sëõ Wkõúµð×l^6Æ+lo¬O?ÆI¹ôÊ½‹61zhÀõûÇÜœ¾´¤—1¹æÔâ;jå¨õèËtÛb	´Û=`dÝ^½Wo·Œ¶žDÀ:ƒåj’Þ×j=¨´Aö2Çª:‰‡Ñm¸¼óWéÖ‚Z÷CY Û±­}ø¥c+Â~³ø`¹Íý[Íb…\V ó‰òWÄÐ9’ƒa C“{'BLšfI;&iºÑýz2áÉo
ù‰Z¼±òäÞãQ’©P )Ê24 3Ë˜nB¤$¿‚LÿÁ-7\M‘®Xof5UàSê“æ”+-3×¤ë`Y‹‘S`°:äá·,eÛx}xÄNè,ãþ†Nªa("¸m{“Ö8Ÿ\[Bým}áòÌˆžË‡Ü¨LÑ~=õì²cÑ)•ïkh`4W»óê—ùõæF¥‚	À¤6Ám´ÐÃªá
îÜÈl7>vobè´Nä‚zsüñ3;zý†~Ê»Ë°@7áà=:ˆŸà÷¥¢qhÝºçªäN’ÆiR<¢¡¾¯´Õ>;YK\-î©¡Ï4\N0ºÁt6‹kBnI'cìì§ÞÒkÃÇÏù™l—²d4¿laÏh‹^uÔ6mtöTyH¶,ÚÂQHLÕc~Ëlš8`X°™`€!ç@;FT «Ubƒí‹¢Ö]ãí´’Ë’sqC§º*â­×_Ý,C nø—ÒOiËH&\A6ÀgÜ6n½»ëk‰YÎ¬¯‹=Ù'4má2Íý-k]¬˜y4XúkØÔc
ù´ó(H ©QWòâcã`Ô 1ÿx=pmÄh‰ÀÃig£øqØ†éÁÇÃm=2BÔ7´4ð"¼&Oïp¹|¼áMÂ¶[€ÑhÿˆÖ’´O„ÊqêÁ-Hƒ]ôGV‰gƒeòº_½)¦ewõn.yîþa‡Z…3J:„ç”wŒÐ¼7^JsDößGŠ­"RÈ|ó‘=”E¿• „[ˆHzX92¥Š2ä$üœ¶?©;ÁƒÉÈÝ£Ôí¾»;É-ggÇ²¸cèÙ˜ÌRžHÎå[Ûèèàv‚Fæ?mcéG@WÉv8å5{0ÏYOîN8ß^À…LÈ"Ô›>*,båcÛ§‘«äÓÑ—üð_ñ8søx"9À´»Ÿ^Ú-ßªý"[¶þ‡h
GH÷Y8{Î®ÃßAXÓåFHÏÿ°Täa}“ðH1tÛŸ^Ù¶ýGþky¤,ÇõZÝá”8±ÿø¿VØ]³_d¤—ßÃéídNœ–ÕdŒzÅ}“GØ’ I)G™Œ¦u*æ“£¬Ú†4å…bòHPh·Î…(õ”ð×s…K ÝÆéñ¬a¬ÚGß;¬C³‡Ž¿W¾­hÍ|Û<Ñ©h]l†ÙIÝb¬íEàLÈH	ñd›úÊPÿ–J%¶‡§ûbJ.…ôx½PÂÏý;"Aäé‹!	öN>QÇ×,C–z$,ÍA3TjëþÕ:¾ëƒ > …jS€lT‹è+`Þ§a¼ó &Ø²o¢õòpHH6.c¹Ö«QôuþiqAù„[²”xPgL8~áÕ-€ÇÍFw)ØaÏ{DpÆÙ×RqÀ‚öq„e@­Hn[‰f‹(Æ„f	ÙðÕn+Í@à¾µ|ã—G´§9Ž†|ÛÃy-¹é§P]ñÒôWßd¾ÍÝl{@ ÐªÓÚË}Û¯øÊm‹™3»0ßß5Â›p9ƒákæ°â­8ër^Rá;™1z«›ÍÌaŸ¼•ÏÉ,G÷Àp´èFlÎC F(Ès‚ÆRz°-ü#~òð'8ñŽí‰ézÀŒÓ?þ`.]Øå¤¾:ù]„8y°â(xs3ÂK
ñè)ÄµnVÑ<íÀ&1†e;</F ³ 
³òeËÇòˆ¸Ï~»ï1PAÞÓŸœUÙç¤q—ižCy4n9<åV™5Úgì¼V®ÖºìøÀqÎÞ\qÍìdz4Ãü g£¢6Ïi3ÆÊÉl’T…¾í^`à8Õš${4!‰Ñ’Ð’_h¶ˆìOÎ³s!ÀscÌé{,âá¹rx=ådÏ_9ËþÃ;;†Éo¡“‘9.r*àx!Ê¬J¢ÅV­Ôy¼;™fÄ˜>ËY<D :ëŒZsþl0<Õ·t\œÒ‡Zy>I¼4òªËÜÄÑSk£ï“Ï¾Ð˜—dÝ³†ÓqM<ÐIv=µÝÕ[L,ç¿ñ„üà¿%"Çà=Õù´Q<˜†2ðW´ñ-h4Œbè8¸â÷ó³ÍµU‘ã+šÁrÃÛpÊS‘eU­C´¦°e8‹nawŠÆð ”Ol¼Œfä’¨_Mæh¥-ïrÀÅš‹e„Œ9.Ò®¢ŠÆêW™¸?ò°&ð¿µ0j¤!o‡Ãõr‰zƒÚ¯O$Ô€ð[8\¯|¤Ø(;Oe±ÐH5ï—Œ~3BjŠVjöÜnÚ³
¶èQ³JÖ÷MÄjá6ÙÀÑô ºM;¢¶€+ãÉƒ>z‰î>;f2§J/.ÂxQ‡¬éÓ‡OØèrU,m0Ôèòj*–>ñ‰AMA.½~«Ýë_µ*.¨§Óƒ†•(¬0ŠÂXÌÎ|…q¨rq=Ö÷ŸDÖ‡hBÏˆÌÐ£%n‹áüŽÎ¥Â[@ãCïËäAwªËY…£Úûó7`áÑÂuXJg+­÷­üÌÊÝnùc?¨ÿ­V<£ˆÆÚŠD‹/Eö/8cæ+@¨½ ~ìðNlY´PÉáÕ‚–5Lïß«Š•vþ{^?íYÃ„ì	NN1ÆW…I(Ž’Má(~¯¯2J“Rm¥£q·»½cssaÁ^è§¯ká¢«#&ÖþµWkUy’N#†Œ	ðÐ¨0Ž…i°Àô¨ê¨%âö¹gÌö/­öe«ÔÎú§åzÃNy"x€Û sehØKÑ¶(ú@¡«“Áõ˜‡¦%œ[ûv4±­Š:¨/îÆH_Â
öyÑBíømûƒsìEtSTc ±«üC™[¦•ÏúõÖi›<6íqÐ"¸Ý‡'ŽüB¨è"F.·ÈO'e9z´àn…&…¾{„Dä›Œ¡Ëð79[TzEp›FZÏ=š#"†«­P¹÷K&.oÇ¿iLÊ’ÇÃkfëzDâgA¶ üX”Œâ¥7"’òs1éÞ±óO¶Û >2è=,WBü‰Øµç6V‰­‰YóZŠGa1ìZªÏ¸˜-ÌÆÈçÎþ ž´tŒs£[lzxe^¢Ú£¡½µ’!3óMÉ¯š ‚båÜzWèá„ÅËõU9
â#”Ö5&U€\Nô‹,æ”jJîŠ-8{àÓ8šs•é¨Ç†Ë5ÙÃì‘q„zf4ž¿"÷4å^‘u2 w£ÃÀµ´{ÅßDo£hwÌâºŒf•ÿÄ
…ÿ\¤òpl?,•0ü	9àÀOSôYvÇ»»<j‚ QÌð\·›†e
f,º¤î
UX×áÊSSò(#âŠXäùyõéè¸ôå³È¹ŒŽnBSF!«U4]-ÿ/qeñLÙ6}¢ÀvÕtKóÔ…O?¿$TÇðg-ñÑ>*¢Ò(éNN÷4ré¥ÙiÔÐ¬¼S‚ZÀ¥>SŸÈ° ›*+´ÝqÆ>½…Ö(©T4á™·göI¹Ñ¯–{å~­[rª¦³itDº¬-)oá<ÀZì òpcßþ‹SÐŒ×UÂÀñ«;:¡Ìñ¨Ç:Ín¾ªáïŽÉþZxï¦·l8pR=†J¢q®Fäk:‡»MK¯h4Íqùä¤–¾AÛišFmsÁ¤{4ÄÞg(w øÃÉÓâÐ˜Ž2:Ž§RHs<î<Þa|‹èÎ
­ˆ!*\©“h¤µÉ-ÜæÆ\wöi.HéS¾RJž{ï…™Úi¡+%z.ð{1…à¹s‰8„¦m¯iûªì¡6Uo2¬•hKà{¬5˜
–±;ÚNÕj‘§ú0ä%ê¬½ÿ
A§Û>+2"”†Äû”A¢ÝÀ6IÂã±ÛwY£WoõW-ìLxž½gö'TŠ<`%ú.Ä×”jï»F’}zþyö±,\þI×áê×h9‚MÖ:Ï‚Jõí‰œ7WÉpôŠ*gÚ,.ó´&ÞèZuƒ¬-75Ï¸f WÑýqžL#Œˆœ{;œWáý‘V–wàó^¬™H‡@ªGøïA5”Ñç‹Gw>zœñuñnß‡ µFØÁ»a„9ZŸÃð˜;Ø™q^Õ"¾Å˜áXü¶<‰å;Û›ø´KÝúÊÝ“z¯+œá”ããòj²Zz¼ßTµNû²Öí7Ïš¦+'iXôýsJUôoì¢ÿÛ±åÜØE×7R¤ÔëÕš~ïÎ"çÇ†w«aF!-ëR Ôº]8É·àÇcÛí¹úUÍíŒP£Ö¿¬hÔÊ`ò’h»2Þ¤5½uÑìÿzQ»¨N“Z ÿu®]7mUµÞýDÞr£TjªÑõù*\.×<÷¦a<’È¬ß:­ŸiÔºú‡p¸B¢æãÉõ:sÆ/»õ^­_îµ›õŠjïzyÍ&”™¡…ì{š¡|lU¤c¬ác;
/Ô<Í(_ôÚýN`BX£ˆflœyÂ?²Ýð8Ž*HènÝoÖšý“‹SÕ!tµFûÔhyÇN($f5Ö›5Ø*›ƒÀn7[¤TùO—þ%¬<ÜrûŸ4<ç•^SW¢æ©+·K}¤Q`»´ÛŠæêÎê›Çg!N×ò-'/I¹vøý_¿h4dèóÓn¢n.³é²Þª¶/s@ºœÌGÑ×FôP”ë¡?pÃæGÊÙz…^Áiý"":©—?Ô1œ‚5O'áÍàv¥Í¬ö vý‡Óø—rë®}€sð©1”Ú¯$îj–g=a,,”d1ì’Á!œt vÕ¥õ¤So]tp~{Ý¶1ŒÁb2çÍ@zMíÕ9…,€¥Ø+ã!ÜìÕöid^27ÃÕ bS ¥@Ê èê*„V×o¨\Ò© ö(ƒÓÑxEá-äá%‹–êU‡ŠôAÚ’¬H\?6Ö¥ß•øDü{á,}ì¤ø‡itÀ·€^­b0h=z|»€aXÁ¾“ä´jÆ›À<£\ÖÕÉ¯u¦ 'ƒÏAm¾Ã˜á	Ò`ðÅs'z
¶ÍöØe(B%¯c~ÛÿT^–=å9”ùw‡Ê•°˜-&Ü€ÛŽNÆ(Ž@$$MD,ƒ,û¥6$Ù„›+ÅÞ
Åç	´Œz£¯XDtóbÉê ã<ß á–H_¢ZIµ_<ñð	™Ëð§wiH™¨‰€×–<‰Ï¶,Ù­õ+åŽwµ™éíí)ÃZŒYúÀ£ñ'{nÂÒt2Tˆ¬YÙT³‚J³dÝJÅßŸt–Jµ“ðœ$ÄnD¬Ð
cÛ  '†QìëUùWƒ±ñU$AÙ\=•‚_ÝJ€ˆ¨.’õO°Fy4J²(‚PI@0.ò@¨4Omÿ°ZkD¾ÈDð·±‹êØi3Ë §@Î"€—Ö"Àg3•’Ú)Ä}Œ™I}«òÆ˜Y˜Þúo`</Í/*ÊÐ·–ÞšÈyøÍ¹ŒüwØmqùÂ¯K„™‹ôÌVl<¤}£,À OŠ¡#(‡6!F½£Ôz Œ¸AIÊ¯R+óhÂmFÂ,y”ž^úÞÔY‰ÄYNÚ¬ßˆŠ¹6"ZÁ©ŒV±1Ûºf™çÞs­ÉÙ:B¾2ä[Ô.¿`Á×Á‚I9Ì0á «}¼;ïÒk²ñÁçŸñùÇ±ÎŸl¶
ª™°uÓœF,8xKrK!®ÞÒÀ²½éº¢’ï’°“šx,tßé¢¾¼Í«•¶à÷Þ:„ÆÕÒÌÓ‰ušœŒI÷Ôs.äW:¶t?±.ÌM'R?sÌRéPX`íÐ©ƒúÎfƒ;vª»6¹ž²c·ÌÄzÊí²"6ÍFÔÒ™5Ù àÞLF €j£Ìvð¢vZqRoém‚z·“˜d.oEg€c˜cV­Ty¦Å‰Ó¡8‘zéój>½b÷ Õ\H×ëÉHAzê5M6³/¨{)J¾àR“é–°¾6²«¯ÓþT‹]võõÆbVðècU­ˆ]FËß§ÑÀË­”Z}3ÖáwcÂÒôd¦ž ¿vá,SI"|ìãjçáàö±¿¯ñÀ2˜E%¯JÝŒ6uŸ»U=ˆ]£še«!¹˜²Š?N‡`Ïuû³AÐ0C&É|ñøjúfÏSîÈ·GyÊ½ômYžr¯T¹×™å^«ro2Ë½Qå~Ì,÷£!,e•{»ÍÌºNQk˜È…“ù'[}a{øë;½yÅˆÆýæƒ:MÖ	z2W¢å\óy•7ñáË#c—âÄ&¼Ç¿}É«ŠV†ÃÏ«M)Ó[c!ÆBw$`.K<>ký,+Ô{^í–ØLÇV#´XàÍ–Ö#e”>ï»ûXIY‹ø¿ÊKÌDK4nSóÉ¨%AÑð”ËÕa´ÂRÚøÚ‘™hÎOc+©_¶ˆL½e{+é8B_W3x£B¨óüNŸ^Q(¬Ô_1]÷Êi¯È]v3Âàê+Ú>¡åRÆŠòÃmJW`Ït!Û‡’Ê*ðþ"ŠLú,¼ûÜÜeL¨x”á,î³§»C¶û74™aÜ=‘Èê3yØ«F¤Hê˜>ú;â²¥ÀUê{î›@ÖNŠ“:ŒjCö0º4§Œ5©o¤-'“X:›<ç’R.,<,ÿü÷ÿ]úÏÿ?Yn6Ï7÷ðÐè¡á·‚æÕX¼Š<\¢Ã*va´ÆÝˆÝÚäÊ±C¨Ãc6Ã/’ìÜ¡pºdtÞh áÃ¸úÈ&s6›L§“8„£X"¾ÇÑ:žÞÁ´£z;¾çö	ÐYDf`ÎúœN¬¥d~£Là1Û»™]YvGŸWæú.'T&a¸Nž–;³Ây³Ú¨UŠ)~· øàýÍØÑ°hÏb¡\áˆ |0š`ŠÁúA(yPL3PZáÊ9º—dS,Œ2$+šÝyÜÿºèÇæù<A*\ïŒŸ¹ŽÔ–´è­ÙlýËÞ´ô[íVíX“D®ÌÖõ¤2Ü¨ºM=qÏ^ùXiÔRa°X&ò¯‚A'6B­u›åÞÃ>±"³Båv¢…†®!¿\4"mûäV¦‹Cvs)wDÇsaKŽö¥VL+ø×ÿÁø”Ã
•Á½Þ²=ÎJß!ïÿ‰‹WÄ^öyš/9Ã#ûl@cS­wa@êàWïcsPÁ¨ÔO?~BÔB×QHW„ÿÖð¿²j¿Ú†ñÅ€Æå¦å`óyU•C¢"¬JQÉ(„2
]ùÜ1]ž™Ù;…=32š6ê ¼ÇNPÞ$ø€'I1€g€?Ú¼ÑE~zßx~ !ÖˆªûTâ?šÄüá^}L 8Ú„Àë>¥séÀ‰Q2l“·ä«¤Ö€¶¢æ!i“Ù=‰=\BzÝZ¹ÜƒNEÍ2m¾1>€1l	³É*É´ónK^ÞÙí{E.á¸scßqH4:ì›»åTàjúŽŠùP´*c°…¢½Å«\(ôe×ƒ¢²Å›
”3cÚ: 'a,(TÇ4N¸cÇ\/,‡©8Îà<´ž0|dÂ&g>îd”’C¥®Õdƒ¸‘g:òL¸gÆ8|³-qä˜ñ#9åŸËMKJïBÑsÖäRâ.
§ùÔXIDTE'µö¯':é3ã¨O˜è´ÏD¸éä4¾†»Ïß¬5#Ý§w4
*Qd{¸Úx¾ßstºµ }Ñ­ÔŽóSI’,Œ[!4îtö,ÛÍ<æAÒ‡„¢“){wë–Å–´ªSÈL$2‰ÐÛxB“/yØOóòn_Å®Yå—i8Ïá„’eß“ðµã¸à¶ÆoÄ:@Ÿ"èÖ1õ³‡ê‘§'ìýÀ®ÐÞcmÎÇï<ï¶¸­ü)ÕE>C*5aJ‰{ù“áÒ z=R=ÝŽºO±@3Ž%‹é¬ÿ•¬ÐG†Ö¹ž‰ŽÔ’é¡)hWC8gÏà|KÏÜ ª½Ëz«h(r­³Éü`ä­ÕªÊZy$zÏ¥Ÿð8Ãh¿É;b½˜ýÉJà„2*ƒ:VhõN½h°:yÙKi-‹ÖêÞ»K®<6ôn]q–ä©*œ²!ÙyXÚýšíÁo8E:½®‘ä(,ðÔ¿ãÝÒ«o‰8FÀÁû0tŽÍ4±D3ÖW ÄŒÇc©p%¤Ñ
Èl¹ò‚ã71^^p_ýàH‘«—»u«•s†wNïBÿÂ-ìÜëž‹wZœ­;!1Êž§ÔosY"fv
î8ÈÔQ3ÁªØoüE«Ü¤QW—Vœ9Î¯YÀ%MCˆ;&®ÕÍª]Ø†»¹qT—“ÛûÀÇ,<ùÁö^0tº5ž#(k¤:Ëðà
óm?B
~ö8)ÛÝ?J.ðü£|$ûÝJ¿Ù®ÖÐbØ;<&š½E#n§½rå¼Þ	jØðicR¹™,0\ÖvCbþ€§íÖfØùG(›Û/·ªý“‹z£š‡*±éäœ{²žð;Þ|ã^M=ì#ÜBrÍi½Û¼,É¤‹Ê–·ÕˆêC3ï-ù Ú2Íóµ¾Z:òÇ,Š©NâÅtp·%Å˜€ÓGÆ|Èòº
‰kðÜâNIø¤0‡Œ¢‚—Çèþ°4	Æ­:eªbQÒßI”üž±ã˜–é[ì7F5ZAî}@ÉRgÉ®]:
Åå¶ÍÛýëE¹Ñ?Ü¾åì×5ÅèØ{¸ª£¡:ÚŠ$4˜4ŠÐ0R@ˆ[G¨«ªnºã’Ö&ÑŠè,yMÆ+³=ükŠ[FI%ËQJ8eêX«ì{†Ÿ@4„§˜2lÂ<BN
‰ ÑzUúë]ˆ~3ýôD¾2”	Ðé©Áj·qÏ«d¼sqSÀq­(ŒBÚœB”…8Nø<È¤8ë1™whD §áJÏÒ+À"®µá™¬ñ³4]ª'º'z„éë­p*‰‚ŸWHMôžnðJGßÔÕ;ãø¥¡¤¨›SGÚ0 S°wC4ä1iFÒex›R£Î¯W7ÌÈa¤YöÝþ2­ØG21GLÐY!Iõ<SóIÍå{QéÕ$í¹LeBúrÚþjKje.¶žNÍ;­q"O°×³×2=9Ÿ\ßp;Ô÷^†ðˆçÕÂyçRŸ—ëÄ\¢<9É«")m{–f8š¬g	°…f*ÐR‰ƒ-Êó~h#úêi(œí3€r°ô­¦áÛ,Œù¿Bù¤(=QÝãB…?1(Ä–½g+bS¼"‘š=iQ­ìAy#Ù!ÿòÂ´‚Ù®Ö¨hWIP5‘Åî®´ûdçHr…Ësng¥ì¦9…í³MÖ¦\÷ìŒ¥c<e˜N1–hßáxSOµg¸ÑÑœ—c»Ú‘Z¹‘Ç¬ÐºhêÆ¨5»R…é³iÏ4j/’öOkâ3ºc:¬§ÎÜKca•ìŽiÆÈCƒÉ…ÞyPk8³É'Su,Ë|Ö˜Ðš2WgjË,3Jj`¡×ì$Z¦Ù«Þ<Ö°^zóÚã#Òìôˆ¾3²$Ó$¸Çx\ÜwÉNÝ2dÌ·_Àj·Ž1ÂKss©]S^¬c5b¡zÑ8!³#Ý¬ÝªC‹}þ:Ìòëêc<
7×Æ¢êŽît¡)vì–ú¯ÐkÔº	ûLß‰XiÊ§`µÎRAÇeE†“fAFsŒè)Œ¥ÞNøºÙ÷S•_Ë©[çÆ]ÎÂãzå9÷`&žÄ ð)2zl•°wG‘ñ­ðù¯7¹:Å7ïºš
R «µ\¬›Ñ#»E(¾€…UÇÇ`‚X¡R5èhÓ’ê-×!Ó)FêLX5»¥h@ü!}ÌÃD¬06íç16€?´r,‡dó3p›:\Ô2ÆƒH°Ì¸¯!y—ÃÔ T,•}½-"åKÞØ œØ€‚„x‰‚‹8"§ØýâÌÄ†¬öÔl‹³øké•"†Wl`Ê­Õ¦áÛÔÀ#ÕÀ—l /„F¾QÌlà¡jàÑ˜•À$›3Xz+øPìÑ‰r%IŽ™ÍÙÀW²¥6P)ŽËxž› 76ðH4ð¯lŸ1­ÒUñQÚw¨7¦µ/h–»=ö‚ƒ4·ºa*©—È–ÑH«}Þ-îËbä2H’½‚6JR¢ú¯8¢ç¶ò–ÿ¥Ü¤²ü¤ŠÂò"«‡Vð&g+ >˜æç…Úyó¢£¿+®#ÁFO‚<ÝÒQ¥Rñj/ 47 <ˆ(•5nN<*LSÀRE×;Ã1©Ø8SÀÊ9=&3•»C<Èõ‹dÂ~S?Î99ÓVÄ—MÎ²%qYuvŽ¨G9[`Jw±„ÀG
×esÇŒ]hº‡˜;
{%×1€é4Ó²! ¢­s>ãYÍò„ c(å·¼Ù¨ëÒaÂ6J'Â¨I¬Zµ¼Í(~	Ø¿®«ŸT³Ÿ<+ËˆOf+âxs¹’äØÈ`Xˆ‰•GOf.{â*²L;­œËÔ
dæŒ’ãÕ#›1›D³V¨€»µ¹þ–ä¥b¢9¤oDÑDÏ·E4©W»Í"ó‘ÛÆSc2¢Zæ©Â°Ÿ-@Õ³z5Ë¾,’GvÈ¶‚Ûxþ5Ã¸Ù‡T(·-ÖKÖ|Ù‘ßlq‰G>26ib½>!yŒ¶6Ç…ÛùmÓ®/.NéNÇ·ñË»Ñ<ÃŒç2=~[®È5P‘/¼;'A£â¥?%UæYòõªÙYn9¾žNÙ;†°Ÿ~üò^9±Ÿ~‡Éeñç?ÈÏêÓ›Ô/¯­/ øø*µÚËÔ/GY S«‘§s‚y™‹G€1Û}Ê¸	#ã6Œ &ÃÇ{Ï¾ÃÀbVì¼eòêð¬p|°SÖ‚N7[ËK‡T®&Ù¨‘J îÂv3ˆx	q—+é3¿â7yc¹ef—ñYžëØ4[²$+Ž¡½žx CÔ>Fk¼%	ªÅ˜ª×i<¶:Í‡˜rÔµ|-U|­9…ŒŸhûÓÃ
1ªÔŠž£ªuêãð1Œ‰9·¢„v!3Õç£ð›Úí,4üŒžKP4â<>Þ0ÖÝºa¾Á0¬<ÀãÑ¢¯¼ût¼–V*c/Æž9çÕÔ:Äï?M¾ðª†cþÁë—xpŠÅî§'aqFNÔƒ÷áíª(›ùÓ@ïÐbVLy¤öEÚ³$Ë‚?qÅ)œ5÷à”gZ$`LruÀ¦äÊá4ú¶1eSZÎ&Ž›Û{h£sûzWèP[žB«Æ9øË#&ó–™näûàý|ìÄìúV¨tDZB¥Ù16V^s8[‹¦á…ñÚöÛ0ïdb™š5-ãp¹¹BÙ`F{9ôbÊŠÔ¡"æ‚ÎœÙlU/ù½©ë?¤?2Ð¢°áìˆŠç§ðÄØ¡Ñàq¤ŸW	¬å!¿«Á»g~CŒg<üdÔš«Ù™Š«Ì+¼ÊŒ0êðHïÂÒÇÛ­ï*2Üè›XÈðãg¦g‘ÞÈí'f±$1äÍ3^‘[šAÅ/&ëú7V€´¸ÔáéÊ°ÏZþòí·}AxÊŠê»b^¦·Cˆ™,1*™o9Ä6_‰õòlÇkÄÊpû
oûc=ú‹Áê¦ £@ÏöÅÁ÷‰4é¢ûþ‘ÎEçxyòUzú ¿ÐÇN Œi¥Ð²·0W)ü(“¯õ,^‘½KÉNÛ™;^Œ~:ï‚ÉAå
ÖÎ­šˆÅá`	+éc²Abõ—˜Í¿‡TÞÆ\dÏýÛ¶|Ñ™ Ï<ÀP.+gJ#×Û­ŒÎXóvÎÃådx¹CžyFpT‡~Âñ'ÁGõ£gzãá`>.xmÆ·»£ùîšþL‚Ÿœô‰œ_K º¾[ý‘È%ª\˜þ™È&O§<»3ð¨>ƒ3“xxB8¤Ÿu<¸?½¥¬ß¬Ä¾ï3~‘h½üI)•ìoœZ“Ÿ`ªøfO®˜·Þ /b«@º2ÆÙóæ1Ïoï”#Wd(c
FqŒ¨,¾^M¦Fi'ÿZãñwþZ5Ï9¶Å,½N/¸ÝÒÓDé«É|°¼ã5[L ÂOÑEŸzóühÌvâö‚éd€y¾lÕ>@ÏÖ"äS©ÀóG‚ÿòyIÀÿþ3bZ&(„F’¤£1ƒ‹j9iÔß£’o)Ô26/»íK"RµÄ³éi÷àè0fêo	ÿ¾Â¿>8,}ÃWoðÕ!ý}+ÏªA
‡Ù+8ÛNH0ûRë)»‹nMÄ-ÆOFôRLŸg§îX\*Þž’½‘ø­T¾H—Q‚;[Ò2Õ
 àérðTÞ<xË—ÃÕr
ÏCùÌ×z®‘ƒ‹Sop.…@ OÏø¤áÏ …¹××¾Ž.pTðÇ)ýº„ƒü­Yl÷à9oˆú5â9oÑsÞ¤ç¼MÏy£žëéÄ7hiŸï¯&T˜©~8ÞÐ–ÀB¹´gTã[ÀÍUðœ‘W…çpðÙg”ÊÌÒ˜kÎ[ä'·4 8qbh€ É4Q7¢9µSélŽÂëj0™ÆØ^°ÿÿ·í¶kØÄõY&Ï·YþfÏwYÞ?‡?<"Ntäåê:ó16ÝËÏý:‹ó¥ŽŸc×áy‘Å—9{û«âu¤$xªbY­_‰÷j‡¿Øå«‚[:ðþ®xá5Ì]Þ`ŒAgMG£gJ©M1â¢JnÊ˜·ÔßçP(7ubÕìÆtæâ­D]×16æ©NOjÕP¥Ù‘Ý£Ìêôê»¥‰ÓQ\ŒënÆMÜR]—^p²~¥èý@M?ONÍ”Û-ý=íâßÞ·N´¤½UæÆp)FíÉ	úxëÙoù;A1¯øŽÒè'×ü‡îº‰Éö¢MùÆ?Ud”rdf.RfQ’cf)Òü¡¾8»Ø€“‡·w-Še–%ˆˆ1Ï·Â,ŒIŽ…‘ºÎßÚK ÕŒ¹Üú‰×ò °Àñ¤ÿ'!<aô,Šÿ*°ü±=0¨…ßs°
cÿóÈæ	aHæÈ,ZA½š"‡gmGÖ¢÷‰ßi;‰ü÷®þ´ê—„‹	:Ð×()ÛÁ÷'Š<7	6ð¦Ì&åî{:³T"NéÚ}È8CéÛ‚ÔvÂ(Ë÷‘ã›7 0^í'O‚p7>—GÂ[ÊŠVó,ng›§)¤‚“¸?[OW­’µÄ@--JAÏÂ£ï(É!ÈÜa~sd~8	âòK’”x“—®qÐíÑ4º¾Ëì‘"={Ãé„ê¢ãï”?Žÿwsç]Y$d`dzôJ£Þïµ;mŠùtÊ•šÁ26®7I«ì‡8)IŸoÏù h	«ìógÉ‰óŒ¿X}ÃÄÞCtQtä†­ÙÍÿ©ëž{J  hÉm>½ET¿ó(¶(Ú<€Ñ
Äñx±çL ÚH‘R;7?3gÏ©•oœ6Ó&²ØÌðsSQ¿—|ØŸÞI)´ØŸ)w(Ê+±ˆCqÆn`SA^2;â&T’ï¤rŽx†“®þ|ãéfycK&”$·,æñÏÈ9þ_d	ÛQ‚¹X½3è[¨[ŒùÆ;{Ù)±ìž+nƒ6ìÒ¿¥FŠÙkýÚzgY²=DdJ´{WÜØò †#®gJP@¸r¬‘ŒÞ‘Yß­•"Z§Ì`–`í˜YeÎkªüíP¦ø¬K™}úþä¿ ò`	ô¸[xœµ“MOÜ0†ÏøWŒàNÐÛhAU%Pé¡7ËŒgÇ^9èªê¯ïòQˆØ=l¤(Šçõ¼ÏØ3Uw·—¿äµEòÉï†<Û…¥ø¾Ý^ËYy&C”N3EQ
˜‡å*Úºa8Æ˜Ífpœ5¶nË$=7!ep¼Ž&”F—ØûFŸw%†6)+!Ž¬G×‚CÿØRÙ¦%Cë	æ?®.~^©ùÍå+Õ&ƒ|‘¿u­Ž<?ˆÕ:Þëš$çÙ?!Šö¸’5>X_OÈ˜µÄqõÌÒõµõ]p9¼é(O²_š”Y6¶ãwMo‘ô;‘2Ò…‘Bt¬Ù"XÏP+mŒ
ÑNTÒAk<lt„¢H?§Ðqì‘!«½[ó¼˜Ý¡ÈßñGDâ>zØT«&í²Uös®“|ßñ®¯@½\Áž‰'wa^wƒÚtÃž‰?´Û…÷¹-÷úÖg[ÂqÔâIåaPëaØ…S¤àsÜ4GjÊo[ÞÜçèBovd„ülE™]Òx}z–ÿ KÛüü¿Cxœ…“M›0†ÏË¯˜²—°Z‡UNU{i”Ð	²Q’]µ'Ëk°
vdL¶‘öÇwÍ¦ªÊ	fÞyÞ1ã	CØm–ßI¢¸Ôµ$±Ú©LIû	V›„Ì¦ÄXR2'­Þyps8Y•&<€ÙÃl;S*¡òjŠùV2o\aPJ£™f*Ø”7º`_êAÉM…ÊÐón-d‹tIãõ‚~“È»ÅˆÒò]e“+]‡b|!úXI©>t…b²{Lâe¼Jéú9x{ƒ!Ó2¿Eóe´¥éS²é?‚Ñò]aÕ¼l„ŸWbZøÞßÂMò´Š×ô9ÚîâÇ5øÓ(ë¢“õ<&þÐ©þð¯à(µ0êƒäøÃ9È_G Œ®QözpïÝ,Ót¾^Ò$Þí'ÞÍM´Þo GÅ¬#¥É	¢5ÚJg•<Êq:°KçÛ=$&Çt.E¡rhÈJz®¦Xü!kÒAQ×‚[èJºB!YéŠ®o! &V
e%w58†Îc#JXÝ™ðÒ4âÂ&gö…å’pS–X88í¯º<Þ»sû½8B_Lù˜¼:D{s5?gÿ©t>à#Í^JŽ.I§ƒAwáÑ#èºr80‹‹ãd)+„ƒM†ýnyð¢pN=v¬¸âñR2K²WÂð<Gô&…ªiëPçÇ_´"È”­^™•Ð
¡þw#çìE³WÚhÀn/øŒ—'«²Ë5èn?í·á7ò^Ñ¼
xœMŒ[‚0Dÿ»
6 -V¨˜¸BLŸrúHi«Ë·Lüš“9™™Ÿ‘‡öiA9nÍ­YS
ûãZ­YtÒ[¼Ë¯Ö«+ŠOvÕ¢¨ìà]ñ%D2b$%Æ(6Q!vùYKªë§~¤Í!úJ/è¸ªëƒîJ‡_ÛZø¾îÇš:³?xœ}SÍnÛ0>WOÁ[ n·kÐ(Ö$qPgC‡"Å¦c¶äI´› {øQ²ëeX;h“ü~HIw5F®mc	ó¨2Ç¨‘Gt“ÏSqÿñbó°^ŠˆÐ@@)ê6ßÖé[Væ}ÞâÏÍ8 ÖjÿÃµä&F"ý¾I¶iœžÀõÒ¡u¸×žÞ!½†»;•á^¢È´Ô´ÆÖ’îïŠšð"!ÜøÏáv&;‡¾¥Ûñ¸L¿<ÅÛ]œlFE^Ô’UØ±#*±·;*óF»9’T•ƒÂšš=ö…½Ø`¹±¦S9:áQú‘p¿#Ûfã;NŒöie„”ƒš${H®4m•ÃÿÊJ.Ï¸ZŒ<Íá–?ný(?M>Ñ¬;ËÐ¹ü­á7>µÁ«ª*Ï×X¥¹NðÄeVBfj¯ñ$y¡#”ç£·+DXLØÕb>ÿ®oL]íJÆ2)£{n‡4höðJ¡¯2 }TÍà‡3z¬ì ´´çq•èêF#ôLo=o‡Í´Žó§RµŸÔYÃµð:ÒÒ¼BmxJ÷Í^‘ÒYÕæ^Ä*~¼¸ú“Uúu»†Å:Ç$Eá•_”Ä	W…)—Ïëíjyñ6ð$ë¦â%W&‡3ó¦‡7¹•–Àa$á}²ËÃW„â7oÏJD¾ËxœíZmOÛÈþìüŠiV[šèÕV+¶t•Ó"…€H¨¶÷ne{œXrÆ^¿P¸wûßï9gfü’ °Õª|™33çmæ<gâ6<?ú½Ó\.RÞ9ñ¸È?àÉ>{Þï¼îîv¢¤:Oá†¹ÇÙ[ßYØ¼«ˆx’ˆ¨.J3/˜…ÁU]–‹ ÄuY ²ì6æi]"¿Ùñg¤émº“fN†ÒRÜt£é4ÝI³"×S^—€7óB”tâœ@yãûàìðÂê,ûðô¨2Ö÷b„.ƒ9D¶	?§&¶dì¶™;q¶½ë6K³$w3†>:ÂcÛîÔk7C‰ã0‚mËÿ­ÆÿèK3¥Ãã©ËXó=ÏØqÈo‚«³#'sØyè¸|
kÈÉ~ž€S0³ùK]j°„C„ËÙ8‰ò˜ÅúÏÎ˜äà¨pÇsÐÌM'ÑFc™r?J¦N6;9q¾àŒ<åì*NrË¢<‹s×0¸È§3nSÆm?tÆ)£OP£2Bý¿Æà¯gÄeºmtgâ%0à:‚·±}À—ý>ˆp)`—¢Í"ý8‹AzÛÎ÷Þ˜i ÛÆ¶tÒ–1¡ø*ŠB£ž‰B1Ú28}7âúè
šê¢Ã8`»¸äÝš6~›ÔYj…ß	SÞVÚÏÎGvïâýÐŒâ,m)Õ(¼<ŒÌ&Þ8‰;×l3úÛâ[mö¼ óJHØnµÕìãS˜,]ê¨ÅÄ±[‘ž]sºjíRM¿÷Þl‚÷é½òbëJ«)“=Ðž™Lyîè<ƒ‚­zr}	Ú¬Þ.ôXƒ#³¥Ò9Š$å6TœÅ\˜/a3µUyÊºÄÒj3J)îŸ™0t	ÏòDèý#µÉzÀ®0ð "íZ.Ì¹li•rÞ[¶‹ŠÇQaQ-vÖ“ƒ#´™ßN½‹OÕq3qcÿ:`­‹ßÎ†–ýB/|‹ö‰O¥æ›€»J›ávYPÛæAÂ½?DP±w¬“ÁÇ–U%ãk‘ªÌ1Ï°$+ªÉ„ÌwÞy ×Íº>lÇrcRUið_ù&sÿUÖƒb B6BožšÄ@­I€š
#5vQ¹Ö÷z¥BØàìÔ:ÝX`Ú~±ó	A•#«t:Û¬4AÛf7`Þ~Ã ßl7ŒRŽ^¢R?áÜ”~4j[üë¡å©3æ«Ð[™]p7t‚)»AÆ>€r‰þ<×6OMI>É+Ä„cg,äb£,µ"I&xVJZJH÷óÑR6ZŒ–RQ•‰þ±² ËYd6<Žgö„ŠLýRHC<Û…BV/Dj.À­Š>ö
*eïE¶çÞ
ªÅ¶õ¨…å†‹€úkÈÊ×úOxðpØ¿ô¥Q‚|Ò¼F´ÇæJ‡—5¢ý]IÁ›5[6ï”)ÂwúöÁ¿#ø³ ø”OSž™/i×ÁÃåM	Ä$jµ–à|YÞw=ªÖuAžå—õ —4¯]¿¶îƒ*~Åÿwa•EÆ×p½¥™ŠD›DãõoÕ¤]‚5ùu5\“%eLÅºzî4ž}[(o4ÀÑŽZQ¹e÷e¨¡ÒüŽ¢Ïƒ¢:ùUU+pŽ*ì¹ó¹onç,@þÕ·õÀ«òªê‰ «Lo`ï‡dtø„3åiàkK€èöß}ÂWIZ~Æ¿Êý¹3><ö–Âé¿^Õp×¡›ÆÂY‰[BãJ5
@–jó;¼mþ¢øÅìT¾¢‰4ð`C,,X;)9EzŒšQb6AK§¶h|© ªfÏÔT>ÎÓ
sªi,­o§Ý=,/ñ{s]J¤ÞÝ×JAq9!!aÁåt¬|9ñäDÒZ^•ñš tñÝG(“«’Rc!=3)]’Ñu’=é¢‹”à€j…Œ‰|ðR1J%)ƒ„çÚ‡¥ô”C-è‚ÅH ^°ôŸ×?½ù]ô”Ž«¬˜?#ÎJl+A:¥’»™GGÝ|§,'•Å¬Ò?‚4Ú¬<™oÅZ	öT	¥UyV*8Uþp-5Ó~µa3ØN’8·6- Yz*?{½Oöðäß–IþjSRkÌ—Ý(=&¢LºOJðKã@ý¬Ô{p Ïýx(¢%Û­ú«á·ÉT@ÇÌ,ê	$Àcç/ðï­ª¼z%õcYŸ¡H¹9‚V¤­‡#¶B¶Z„ó;^È½ðÀVËØ”÷Ù0w]ž¦rÅ{VàÙæ/d,AïšÀÚxAJ_Î—\•<œ¹Ðï¸HK;Ú™˜B›ÞVºÐi£a³â	N,/•$ÛÜñu¨žE|~!âÿT <ÍðþYA?ö<üÔ!Iƒ±xR =üUãÖ‡º÷êµ˜{®qtŽŸpÄ 0_Âù`øáù@'º#+O%%Lª„OfNÒí*›To€„|E] ‰ÚË(’‹(i¹ô‹9Y1¿Ì(ôUZÏAI°¹V!¤š¯¸áj¼„‚’—@õ½¬T-•È	ý¾“š*šLHuýï”ÌYÁ#¼¸­™1§ÎÍù–ØOI #/)F£Oªg>ªY†Üg?"/´¥PÔråË)’=kôIAÍŸ2ðäã©e†'Gv®BÆ´ `xÖDHkÚŸU&«€‰däs À„§°álL
ð»§5£8õ¡ˆj­ëÓz3§¦®/ßÛ£Ž­€ÄÜc[­ÁhHcppÐ$a§ë}ÙÛÃ^YoÙÞ›û‹)àÑ#^ëù
$e»7{lŸ.'qÐµO¢tŠ.œg.lgÁ”Ãšh§¬ãÞedŸœŽúöèäÔ:»ÉkžæaFÑ]öûíÆÌ%Ó|I™zêƒ¨T×á{øø?üÒýºxœ•ËjÃ@E÷ó"{Ç_0…<\è"¥>Á˜ñŒ8’É&þûŽ1ý€‚–÷ž{tû¢¨µ9£øGLö0)ž‰Ð+(ƒL­,¢ø`‚×Sñþ}© à=
t<Q€0¥Hwh™Õœ˜B\INûêEÅ–™PúÁ‰”Ï×L¹ßlŒ’æ6!ŠçÓ’]:7zÆ) ùˆb‰Í¡SLv3	ÅÚ{Á´Ì;Nhön(:)Æ„{uéŽjÌíº…jó¹Œh™PúlY=Ñ_sFmÙF*¥‡ÂÃ}ÏàB€ø‡ò.¯¼‘¨†Úü8RÇÅ†í?‘_÷:„½ºxœm?OÃ0GwŠS
êä”ÉRÿE¨)j
KUÑÔù™Zrì`;â»“–"10ß»wïFlDÏVGRÚ€Ú€ŠŽ=ÝßqÛÕŠ—mtÒYSß„”Ûöl‰ ½n¢vVä/ŠÎ4¿âdi©mœ¥Áªt®ƒïi ¢wÆÀSÖÁÆ0ˆTÙš¸D[ÁJ ¬c3áEèCD]ñ¶BW¥¾Ólå<„q²4\Þx¤±ôoˆì©ôq­Ä¥ÿ·ý:Úà½ÕþlÿgÈvÅ|Ï¶}tÝ°ÌvÚ;[¥"Y¬ó<[l_g›‡BÜê„eÅ ˆbrÔvNÄ%%Ób¾Ê—«Ítrùýzˆ—ÆçC".<äÉo>ÿª¿Æ‡„}Wè7µ"xœËnÂ0E×ø+Ft	4«
ÚªQ(%*èkeY¶I,%väUý÷:JQWå;WsÏÌp›Õô5\Ê¥áaÆ¸´b'¸ÃÃjÆÑ(T:,‰å¤ª>j‘z´ñ(Ža£JÁD^E¾ßXg¥Í
¢UT©Ì‘È;óc£ªjl§*¹’D31Q'ò×:DèBHZ:ÆáÚIa,‹ŠÛ_­«h:+JÝ3Yî+ÖZHÛèÈXbª¤±€±»‚eºÂ³lŠÓÅ}²Æ³œ¤Ûì9ÙfËG<Ï6Ûåún`ôž^NòcÀaZr¢ñî€]Íüapáy”>öš>Ñ9 õ‹CøÏ~ ÆjG­O­*"´b'±.].$íÛG¨ÓÒµ7Ôçw=&¤M*Ì„®DsxúÎ†y›ÝõxÍ­Óò‘¯ð^ÕÒ4#¨ãë?Ë÷'è}}°µ>xœm“mo›0Ç_—OqKß$QœTyÙUÓ"Â:$HI»‡7–kŽ`LdL²Nýð;Òf¾ûÝÿ|¾c6†M²üÊ"%Q7ÈÂµU¹Bs÷IÄæÓVV
‹Æ3o6¿Þ?µ+,åæ7ó9Äh$åµ©š	„ZN=Ó‹ÖµinaalÑØ¢…;qZ4ôý1šÊºú0qðëõ|/„ÞÁÝñ—{ÿ{DýCXHE…Mw‡ÓÒˆ]!BŸC<·ïëVg˜ƒ/y¸òù§0
¼k²(a_¶;¥›Y-÷îaúP¡ç]«Þux6\û	_=ÆÁ^^àlt"ŸƒÅ2HyümCžÒbôšãã¤´,Ûa «lZ</‰îÃÕpµˆƒá€r&0 dY·l6KÀŸ–º£jÝÏÉðÇ Ý„ëÕhâ]ùë8^¬–<
7Û¡wu¬¶é·á ©è™È2VÖ;'™¢5
Ø©eHÒñ"ÝR³\×„%yÂNaœÂ8…ÞäÜhùÌªZ+ë&¢½GQç‚¸sATï ;$?UÃûHÞGþ¥+K†åG&¤UBY¡Âžºïœ+S…Ah÷ÐÐmá$Àó#ï¼¼÷^¤ÀºdûrÏr¡ÊÖ •¹½–]k‚u´ë$¢WF¶Ê’vÏ‚c§“'ÞÛ¹³ÿSÅ^*d²6¥O%24†ŽJÖ­¦ß§y«(ñC„N \€]UN×cü„ñ3FùGÞè=µSå—£ÕMï'ì7õB^¾{xœ}UkO9ýœùw³Z:’ÉƒÒm¢  ¤ðP«J,™Ob1±gm…mùï½×ÎS­VBÎøøÞëãsM»ã»ó/­¡H¹4¼u•qiE.¸>‚Ë»a«wZJ·
f¹Ú p¦ÊW-fsaA¯ÓëÁX"³EŒëÒ¯ì\a…‚+Ét¦âŒÅi%çì/³ŠLÕ#ÛAð»iQeN*)ŒÍâùé««´lUV&ž×·`ù¼à­Ri	R%…J1“<ƒtÎ4`fRU"»¿ùûzL§WçÉppó Ÿá[Pë¼¤Ý&t^>½§1;¤ñð‘FÞÙàïÿÜ|³Ý¬IÉ½OnÁs—üÆGNã‡ÞŽƒ É93n‘DÈŒ¿„Æê*µ@'H2þš@ÁÈo;3]z!èŒ«¯ã F9\k<Ñ2ÎµîÕE‡X5ÉÝOÔ„½uZ„Äj~#ÌëP•B¬µšæ¶Ò’jRT®4„´‡p‘øsNKTÒËy5ž$×ý/¸´¿‘¬®Ø‚/ÒE®ôßÞ=F†úõ^<Ä~e§5|Æ}|EûÐ=&èQsöD_oým“}Û¨œé$çW¹£Ïô,mzO48Aµ½_<”q“®$©>B.2×œô@sSv©•‡ÜˆtáäˆÜ¯zºlÐ¦óËJÅ9¦ñM#IôÛ»IÒ]ŽCUZy³:ðbØ¿ëRµ(µÞ„wòê7›¤ÔÇO¢’üf9¦s· ©,çßJh¼#ÔÝÛ³;èÆ¨5—»nÎCtÙ·æ­U2mxÂd–¨’ËpÏ¹ÕKêµôú9ºÿç&Z  ûÎCl8—±T!g…á«Â¼ÚG_ k³sÀª,•¶ô†Ô–\qÛÝ½@W$áûwømkÉ;/wÏJŽ÷4Ã˜&Ô£Ñíèn”£³Å W•Ìþ‘uW³6SV¡5”qXût×Ù-½iÔÏ€|›ãµ×öüuŸNËZµ:¦„Äˆÿ8‚ô£ò ×Â8'=·¯>V,¸ª¨®»oçƒ‹þt8I®nÏ&Ãdru=¸N\ ¾Ÿ”ßq“4ûÚíâÌ¹}ôvÖvf‡ëqN
.×€aÏ|=!Éé6l¤÷Ü½=±[üI·pÏweEÖX¶®>®Ò”Gð‡Áy“R›8:VY§>Éo0W_cqãü»ŒÝªyÁDñSÁu¿òëˆgh	†×Ù-„ 'ì‰•)>3øß‹IV¼a`ÎÊòÕØ‡cÖi†FO-v’8P+×kì¾z? à)Tá»#xœmQËNÃ0<7_±‚K5iÕ
—¢‚R%
	q‰,{“Xr¼‘-ü=ë”¢¸xíÙñìŒ½Èa¿»ÿ(¶Z¢õX<)´A7]»m±*—¹Âˆ€òE¶È3ÈaCÃ·Óm`*g°Z®V°'£•nû’û‰rCG,b¬pŠJ%Jm'ÖþÌ”ÔgI3»ÖVš¨®ì¡Ç²»ÊxÎ¨Br¨[uŒZÕÚ*üšÎ €Gð¼ÙÁûûÓ=Œp"¯ªI’ Þq ÛÕDÛ€-gÈ¦( C‡©zqàÚá…CM¨&oŒ²Ë^X•ê`0h²pjCã¨‡ÍË¨#9µüþŠ!:[Á':ÝÀ…è„?y6Ú0ÔÂ Zœ¹³&5Ày!å=‘ˆ¹£öXŽoÅ1þ{\”aœUó,Èy™C"ç#av›ý]•…«ì§	®•sà/ÎùÀW%Y~‚zyFê:Þ@£þ Ž{º©º‡xœµUmo›0þ~…—hjˆJ²VÕ4mÓ¤(ËÒLQ‚J¤mÒ$Ë…#uÇ2&[¥þøÙ†(°fã‹áîy9Ìqcüj-¨,kîÔ§Àß¢™½°.‡¯¬[ÀÑ`dô¨Ï<ðÆŸÕãk£')ƒBDf²Z~šÏtx"cÌÐûû8dÃ»y¤›ŒÄCñð®k£úÂIáaÂ<¤8–{£±=Weì]U»d}8¼½WôC3¦˜Á¯<SË#œ“‡>©Òv‰2ËçÐä%U¯µPè§âYŠxÞ’ œP&5ÏÑs´5Ñw£S„åèòôûõUk³9ÉE‘µEÖÅ/®j­KÕ!Õ¸1]+°qH ”6zÀ<ê·Øj	ÿÿ›­€—oÚ;5nR9îç…Ém 'Úe"ÇÝü $'4SkŸXpÊ6Ï7ÊøÇÒŸ·µOC¿æz»Ùñ\A]O½^ElMÓ‡…ò­VUj»•‘‹B}‰ÙÑ—ÔÖ)¿ß}wËz"L[/ÕÄð[1SNGŸ0¼^ag}3_Î°}3]¯¿¡ÇN`¹rcçzêLÆöT–gHÙÄEG48ÔïAÈ6(½Gžù®=?›é‚¢KVÿ6ÛþÜ©!?Ó?S1ö•šu^rUü1 yX¿(Î{}:WY¯gðný§õJ²¼rxœì½kWGÖ(ü~E™YÆ–0ØÇ±çÅ ;œÁàƒ°“L’¥Õ’ZÐ¥n=Ý—™øüöw_êÞI œd&^3AÝ]÷Úµïµ÷“'¢ýáà‡æQÔã,löÃx¢0Ýï>5Ÿnn5“´9&aºúdcUlˆørnöD³)Ž?½o¶®Çi˜e¢—ŒFAÜÃ(Åt£ÉÍ&ÇûÉø&Î/&¢Ö«‹§[ÛÏ›ðŸ¿6Äa<	‡ð9'i0‰’XÕø>&“0Ýñ0š\ˆ7Ó¬w!¾ýÜÅ¿ÿßç0Ãáf’ž¿–Î.¢LŒÓä<F~Ò0Y2˜\i¸+n’©è±HÃ~”MÒ¨;„"šñ“$ÅFI?Üà»iÜS1¹Ìy”‰d@ïŽ?Šwa¦ÁP|˜v‡QOÈEÃêôŽ/³‹°£Æoqm9ñ6†i’»§}\†iÏâ)¶ »‘m6D’ŠZ0Á‘§"c½:÷FÐV¨ª›%Ó7³ì‹(¦†/’1Ìèš„9^EÃ¡èÂFeá`:l`PX|xöÝÉÇ3±wü£ø~ïôtïøìÇ](<¹HàkxrSÑh<Œ e˜WÄ“;¶ð¾uºÿTÙ{sxtxö#ÎàíáÙq«ÝoONÅžø°wzv¸ÿñhïT|øxúá¤ÝÚ¢â°hË—X ±QËØ'A4ÌÔÄ„Í`tÃ¾¸.CØà^]ÂØ€ÈñÍœ›7Lâsš&6¹+¢ˆ“IC\8Â(“ü¶bu³³Ñ½Í†øë6”
âÏpD{å¡·Ñ Ú;L’´!Þ$Ù‹¿ßbëéööVsûÙÖvC|lïáÌž¬ÂYËo,ìV†‡.‡'ûgGŽ(Æ"†Îaîx0Õ9¤o¬Ö%L“›üK÷†Ó~(ÖzI<ˆÎ7/Ö¬wXù	µèõÍ8Ìœ÷ß†i'›¯­WçáàÔ}7èÅ“¡û*Š'²=ûí0éÃÐ}—MúQ’{5Œºþ»4ŠÏÝwÓ@ß}7
&î›~”¶óuÏÃØë!:š¼ôÃØ?9~{ø®støæ»ïZgGoÞ¶­òSX‹awÀscÀ,«Nñôú	µ{¹ÉžàÞy}ÃÛ‚õÂ×Ù$˜¨A‰ïö>µ:íÛ8´'ïWWÜ² ýdT8ž5@%¹}wßÀÂä_â›æÖâ¾§ç‘×$…'Ý _</øÐK{Ïž4~•c|í—Òó"0¦oÙt0ˆ®Ýƒ ›F½Ìë¡;˜pã°©H¸öO[{g­ÎþûÝi4œð”Vâ¦½‰„Á¤Óœ‹¯®„ñtD°ƒo§@;Q_Èßðswu¥Ó™>{
gufã '_šz 2¦ndþ¯kõúWÛÛÎÓS~z)Ätõ;­k] °QÐ†1¼è&ÉPˆ4¸êt£8Hoô«‹)ÀZ'ƒ~Ð†»«_vqb€Iz€Câl"zAÊC“Ä¦Ã'í§_Ä+ÄB­Î§ÖiûðäØT”Ã»/ä’AiX M˜^iÕ€×¸ØÞÇ£#|ì‡YÏzŒÃë‰õˆ¨×eË{Ðªo‰+	rÏ²ÚÇ5lFÑÝWEÓÃÓ,8§*ßÊ¡¾?}Ë¸ôõ/ð€/{ýËš5àµ3 T™GbÜ }•„8BÛ¸¤Aé÷ÚÏ«++k\\ÔÂëñžàx¶ê¬@è^ü,±¸¬ãŽ·ëÄ+bÔ›ŒEÐï;&‰>Í‘¬‡Ÿw¾ÃÉëÆ·aÔýÓNo’›QŸçä–!Ë-°ÀŒ§ ¨Ðn€;³vB/¿Ør	‡¿þO–Ä¿2À­í€•ÛN'N$tV·¸V¢ÁxÜ™çX~
ü‰ìà¹æ$iÂñá°x²fgdŸíêô<g´Eð ´pž»°¿ÀwÐ‡LÔþ¦	ÐmÄ|ýº °“Û‰º×ƒÍ*n·—~i=zÓÉ°6Y˜^Ÿ!àSÉh¦<øX~`$øT‹uB
ÈfØÌM±JÅµ¢p´t@¿…‘ÊªŒ¡?(tµG,	¾¡—ÔàîJ|¤„+˜!©ŠÏKêfã°×¹êô‘:º½âg×*È²¤È
‹gÊaÍ’Æó–@t,Ç¤ÃŠé¥µÕ8=`¼iºá YY5cø;†“°\DÝ1#R+gÞD(áp9y~æj2â5{¡_Ü¶Áx˜Æðá–“sÝþž·™(”‡87\êðøA %<D›å§e«¸GA	õ†
C½’Mv…Ìˆ+’ÀÀ±ìpôfÄÂ +N5¯©ÕÆñy…zÁ8è¢,!áEIh¬‹¢ð
qÙùF na–rÂ‡Œ^ˆÀÄ;" {4ž”M)S=Xvu þaI‡£„à¶hçˆpŒ:üº~YÍ²ŠÅåÄ`Ÿp”ú©?ÎªL“U=Ò¸Ïmc=ð¨ßº®uÐCå á‚x’&Ãa"³l€ÍÏÐ D d·Õ&¼-ßdÅùè}8„[.B` *¶-‘œ¢X#ß±—ÝÄ½‹4‰“i&Z ò—1d)gà"IÓ«*µ2¤Ñ_yîæ¯]‰¼æl£ ÍÌYS× Œ9«†Å²ÀÏè;R‰ùìzšÑ²ãÙ#¡¤†¢h6QNÓ²°G{’)è¾z’ô@p¨õ›¢ýa¿ù¼^Ruœ9U›ªjS£‘ÙmL‚tÒaîšzñ¼Ùä…ˆNç J¡ œÁDe“$¬¢ÖZ>.²Ò“h&¼Ãêçe0œ†ÜéQ44Bù~É Œp†-|üxxÀ$aVé¯Cµü‰_«jƒÓM(ãÐIø-¡’?ÁfÖìÙÅOÝF¹îß?m‰ÍÍMñüoøôèÕ£†xôóÖ£/EÕ±×¦žªx™Àè7€ãM:âRWä¯4I&àoJ†£·À:^Öý&:ú jYô/Ø]dr‚äÚT¾ÔQîãÒc¨¾DíÁàº3
Aš ® ¶>n¹Ç ØHÄ(h¥NUW¨˜È f ¯¬@µ,œÔ Î—Ã—Lt±òeU=¡¬
Ò´Ñ) †¨óþðXl]¿Ü‚•J$4ëÒ0¬É9È¹ÑÔVÿÍóÑó¤§q~¬`~ÀYÑ2'1|âñ…0•U.Cï`ˆÜüìå\Í/'Šßê¹ÕÍj8ÛCQXÑª9üR©wßvZo÷>á€yËækWí@n–Ù–/«¡YÏ·ª·]™Yü¢un‘ÇÂ ðaš&i8D:ÕéHo0?Š×¯D‹´- .Ç­ý³Îi«}rô©e-5EÙÎ$‘jY½nÖC÷¥¿À<±_<’@õ@n¼‡4‰IäLÿw…|Ó%qåŸl¬®ˆqtò®s|rv¸ßBsgSdt.¦ñ³@¡RqJhÁ%h1¹JÄ£ËG„…$7§–ÐÂ1Ã~7 äŽìîp¸)Î°¥ìs4fõ<õŽ¥Ÿ TòH?ÆÑd ßõ.DM¾¤ÓÑC,¸µ‹¥‚þ~ïôøðøä. ËÏ»²ðvQaž]®ìÓ¢²‡ÇoOì’pÖƒépRTô õæ£3‚/¼÷rÉóZ§§8S¹¥Ö^|1Š0	ª°¬¬õíto@¸”Pß Ïr	ø¨v¶Pƒ,;ÑíÔ¨.W‚ózz| Ërüæèdÿ L|ÒVTïÀfÀœwfýB7ÌaG?@–˜ü¸¶FŠ¬)·¿Ö'Óƒ“ã£€’ßŠ-Ô}hlÚ@Y°†[#SUe!Y{§3‚{7ð€ŠX–Þñ7sVÔèåÁ5‹K"Ê:x†aèµBŠe!…vç°½ÿÝi^7_3s¼IzûlÒ%}F~ãÝáçyÛ~sôùÚŽX®Š±%É·ç;À -JHx	Ts0Î3ê»hPr—iÜ/QÇËxp›-Ôhô³ÓTô®6·eÅækÉ¦Æ;h}êžÒÛ•_¥*uiø³Æc”Û¨€Jœ½«±)ÁQÌ1#BS{åXTœ >‡ö²ÄÊùqO\Wl¡3èã`ÖýX´oKƒXp†=ˆõuñÀ€­'59 Ì ö³Í4ÄÚÃñpœ þ”|2 Y£|f­ÔÏ1*~WV¬‘ðÔš­ãXú²¡@1Þx¹ƒx®u¹uÂ¬åöÕòîHRËÌjV×…×qfag! Õ4P6À G¦í	R´®NáçK@;aÔ§Y¹ePÕ­)XÚcÒ%,møÎ·RþšuæH[RTìgY/ˆ5ê—uè§‡Sø‹:Ç>u¡pÔ|%žY¾•ï’:j°1½Ò "IêžÍ(sÆP¬q¸#xêÀ:o%¨V›ž7ÐŠ:MÃÀq³u«Yè*ÔXHEÍÆÐ\­Wzš_§å^—½˜	—œ…(y–Uªb¥
§àÑÃìža …þ{êËÆeï=<Æ=KÐ˜$ýdG±^"HÏ§¤CP :£h%%eµ‚µAoÂò“ž¯ÅÙØÔÕëydgÚÇVëvý<¨=0µsÓØì$L«>"Tšã»šiDP®>Å>Vê„$”ÌFKPP^<…¡ÔØ‚¢Q[Eõ;g%fb´ü)#m\¶–Àß [ªx¸Ôì?êã>²ÿX†[ñ*­ÃãO{G»†š`ÍŸ¶~±a¸©}±—ÃJc…¬#ÚÂúÆÔê$‡‰nðø8³æöhªšS›XçGV•í	šþåO¼¿ha÷FšXL!Ä5Ò!‘³äçz]6-™ÇÑeÄC°„ì•–Ì’]Øð«Î°¥@ÅÈxZ:C‹-.ô/„k‹
³ž|-[Ò¾iBB§;©€ÎÄüÈ±³wÂT¤!Z{SƒnÕ­ÚnHÁMÄnÅgà±¸dÁ­ÎEw.Â!nÕkábÒ>„×½á4‹.ÃÛ,&~c;iG¯m$ÌH\CX¾*ü+–ný°d¸tA ÀlŒ¯/ ·FÔ	Ñ¸c¯yFx¥1Ãõ\pÖÕáÀ³ÁÅàh°	}­nÕ8>9}_^ŒívñÿÓF7âÂÒÌosx¼wú£…	Õø”fÏ#àR!G	óš’qÞP°.â7=YÝ"ÃX£‚¬ÌÆüŽÄnáþ<zÍF¨ÊI½ßk¥§²oôFý†çI³Ás˜n[è_8[yHûN…—¡h¿ß;=##ª^P=s¡_§íc²²VK”Ó)°>7 EhCVõÞÒ­¥ö@ÌìKK‡®+õu:86×¼a»Œ­¦zªÞVŠÏý·œÇ”)Š3ÄéUFDÄ”\¥V<,¢f+®{
í6ˆæ+Ž¿ò½¨V¾ä;C1òDbW$ÕÛŠäÛ‡=rpZÙt:^y¥Ï.}4ý¯HÕ4½vÇ`}Â±¬®œ|8ëì¾k×ËÊ‘àË‡Çgµ5=$=€|
ñ(~„ìõàÜ-~1@ÐM¼}-ð˜›ÒÞEM$ª	g>ðÉy6Íí½«­Áôš™`#ÐLW5cfÎ_ŒéÍkƒÖ¢©ÖÚyôjÃ]¦†(ðYÐµŽju¹™EM_Ï!ú<ý„Šš[•ÔSê$Í)CýþºimÕ“ä”še¾–”bXÀ]*C±^Œ¬Š¹³wˆÛ§Öé›“vËŒ—ÎVo‘"ê	Û0­ËÃ‰L ¾ë/if^®
ã¯‹äÊB¦tA»Ü üÓ”¥áAÎM(UËk^ «ÀÈÓŒöÃpy9A‘:GÌ¸#f$º*zb¾‘®¨Eß!.ÕøÛ¼S¥ÑÀâ`Qr Ã-'•è~ïx¯ÙCCk‚6®ëš‡Î5oä*°ùyšLÇ™ìgŽ½Ê—I<ä
¬~–“G¼ÍzbùBz«ÚÈ<ê“dHÒàL*`¾bcÔh6ðÿ»PÂð<rÒPðõÒts¡4(žÚ*Å×Œá¸EÄlç
³ñ«†\òjä\Šš‹1óæ–òÑz©<²GW¬:jžžœŠŽv3uØÐhö®ÀCT‚.ò¨5KÜ£jõJ6¤ÊuñÍ@á³§hÛë§5ìPcœ§ã¨_eµ	ÐÉ©§‘/W†½`,ÖEm[|û­xÁB²=¢Ç¯D®ËôiõÖé`	’ÚdM˜Çˆ5eVSºk=Ÿ;Šæ÷­÷eKÄhÀÅß™aB`˜ÎQûCçôÝIçÝéÉÇíJo9ûÂBÇ{ï[í{û­v]ƒ12€@×2'“½ßšŽ~pèÍÉÐ…áåßFŽd9M’y^,ƒ‚A£MI¿Ê©K+fw fŒ
&á0¡—a§ŠsEa„0hÚ®%úUÆnÂ”BøÚ G»(Óü[_õ¥#E@ä_ÛBÜ<iò¬uÔzß:;ý±s°×ApÉ§§åŸž!ì=Ù€É»ÏPo‡?žªÛ¤È]¡¡èÕ†áöu¼hZÍ×TÎ»Ø†c†“Ô€LýtÈÒÚiþ3o‡ÎæùŽô©Äƒri¤IiµGj?®Ó¢¼²¡Ò¥d#›Ãq 8eëú¹´tÙ“5¸Äšìs{²Õ³•„šÍÁý:U°â99ŒÇI:	Ñ,MÄ±FÍ¯%q@ôÀö&òz$[É²pHÜ§Ñ±~)¶åç†q¨,z8p@àÐ£É­)öÙØ”)iŸÈ5{%J—£ŠXíˆãDèC#½ÍÑ ¨¦§û=>iŸÍV#Ž2‡ §ðˆ³í:Bí\€Ó^q¤Ñ!!§×ðÊ0Ãh™˜™Ø¸f­­æàµç{³£ÉÐ<¶¸Ý†°°½á‰Ê¹£{‰ó‚îxèó¯ðE’ØåiPØu¥9Ñ¾Â’v”UÌ™kÅºj¹r&yR¥lªã~¸Óvðâÿ[l‰/î®”,pnžf×½õ-Ú6…œ«Ð®¥Ü.ÛÒÒêä“ÓˆvhøîÞ”c½¸»è7slUñ>Ý÷™)ÇÛ³’t¦b$Ø+P‘%ta?‰|9–ãÕ¥0ƒëÙoZ0÷¤—Ü¨O1½´^°Ë÷Ø.•‡9bê•YM½ù;.A|2î«`Â’iXMó æ¬7\g”’©™çh8Ø±LŽ×¾Ò8Š?Ó;³¯·£yG¾ŠF<Ë1ð{¸¨ƒÛôhô–D{¶ØíðÚl‘›º¸ºhýKÏ²·ž|\äá]µ­ÛrÅÊå¢Ã=âýŽò¢ø¶˜ -~NÊ‘³;€ª_/Ûr{sæÂßÎvç¹gÉTY®ØDqQÅ¥‹Ø°Y„CÝ¯‰†¡¯‰¨»Þoá#Ù+°BF‘A‚+¡Lòj&.Â O·°œV.ÎùíwXc§d„j‡Œ{õyÆÆÏ)¬È„¦!Š~{=ÙÞ»€Ìf\HWÔñbL»9k_¶ð!ê}WÈ°—Oòé×°ñMqÀ‚
ú>Ã÷ƒ_,•‰íæ³Mñ‰då4€×
x=mˆgñœú¯&‚â•¼é`éQ·”Ñ¨w'É$vðaWÆ+Ø àãIê¶@o¯dØjŠÞ¤!]CŽÏ¥#\±.·HyËÚZ’ŽtL‘?ÜL8Ô±¶á±»`f|cY¡žq©,ËŸ´í•kzuO+:^ÁÊ¦êÞmÓÝ—cÁÓÂÛgÒÔ®¬00[/|xÔ2ŠÞˆÌ^Â±Âé±5­Þe Ž²©À‘xZ·¬f oñXxæ6²Mœê—{ª¦ž*`»&÷‰Snâ”å`¡Ï¾ª©—€ ß',®#k¦ÆN»wý51-ÎÒ–ˆå†tKÝ{bu%+>P$_éCµÎÁÒ‡²µ9{? øƒö(£/#ÒÌ¼?é|J*Ò_á'Å9¡_g§÷½xñBMW6£=–sszKªoÄ*Ø‘=!ñ0Cíã¥_ñQ¤—žÛ
qO]™-5P§þR‘BÛ'	*\À²	²X7XÊÈNZ!k/²Ýk¹œ©;öû[©è«r>ÕÍVL£À=·Ð]Sw§È‹5ôÞ¨±=Õ¸«È®­ ÷¿Ó(õ‡}‚-¡(ºzädW¾²é‰C›,ªTc:U—¬=[ ìš[çåõBŠ<>’~ÑoÙ«º+…§¶Þžü8ír$±(e¤½Þnc¯ü>›n´­×áqþ£­„}²!>Æáõ8ì!“\†)óg¤å.Þ×iîØ•Ü5M4HÿõÃëFŽG€—Ñxss×½e38e€·Ýå–Õ+Îˆ2"~ÛTKh?Ng0{N1~³¼©[K–Zµ!Wßš£Q¦8ö·ô4ã>^­ê…÷ä~fÚgS#n£Ó§ÏÅzL~fJ+wl¯†ÇO›Àwá}±ÛA‡CÔ`¬¯1ÙñjîäEVÅaæ\Å {l¿XQƒÛå!Péñ¥ZYyE¢æ>p	öþöw§gÒÇ@ùƒ	ßÓ@zƒÁ?õøu²C‰¼ïA·!¿z\êë@~¹»“{(ÝZ…íß—¿“9.sû<ÝõP@è:àOFó.6q˜3ÚË"ÿ·l½
'aÜœÊíã&›ø·1™ž:qÒ'ÕþuO4¾1>Ò­¡¤¾¹íƒÏŽëµôaàöš¯qä¯pìUªûQ_õ!Á
¦*Ö¹ù¡Ø>ó½NWÑƒ–%è÷k¼(²-U¼Ê eoËrhD¥bG5"»-Àø{—T¢9M
-îš¥ž0à€KÑvgCA™AÞ‘ŒrÂ÷«¦#‰b÷á"GcTI<Ý…’”:	—ºC—¨‚hnßŽðÜÒ	ØwàÛ‘nµ?qµ;±]Ÿ40WÏ`©6ð¸ZÿàùLïÇwXŸL’×këú|j±T.¥a»p0’—zñ£ ‘EãR¼[ÃóÉ71è¸z‘eRòº2—9è&Æ7®¥Ô? jJÉýá°(¡y½xŽßÄcVéŸ¶Þuö÷>°1šÆÐ~öâÇÔ}ÉF2ˆhÇ)6›ÜàU8Ô¸ÒâRÉ•M|"QtE;â«:ó ›ƒ>Eëz‹|ŸY8YQW	ä@åGŠS„ßÖavòŒa´¢o¥RÀ•Å“îœ¾o|<£¢_v=cœ=ƒÚ:ŽŠXàZ YÆKˆc˜ì}èì·Û5P]¬û]ê¦Ï"¦Áœ÷Û‡XÞR«hè²ïæi¯ÎÏ´Z_hÿ<nWÁ†‡j¼RÜÎj?ÉÈ&sT­VØÂ-XFåæ“ê5#º2G(U$5ÉQÑÉ'cg %$> R/àqäì…Å^í f-ÉB–«[r6º_\¨¬”Ÿq.på‡ªšq½Ú—zó©Š#‘÷ÏïÆlÈF;ñ5ùÙµ±*\ªVtP#ùOE	únCFÕdJhqÙ=ž‚“B“d.P¬+X¬¸½c7QÓò>ÏK»¦cŸ2BG;<Wh«ï®IÃö¾–„¤BTô…	&Í1¼i‚ÕlXóœ$#Üá\+½¦9ÏýLÖpNPkõ’Á›Æë×EC»ŠæYÓÕ ªu%àð¬®Ýö&ÐïƒZ3ß*)­[Z­R|ñü–w=«Ñ(VÑÅJvEX4TøÏCƒýŸÔãRoÊ^¥¢<þ‘ðœ’“e/¶—½ØÔ'qcÆk'Ñ#É Ög¯rÏr¼]j9]ü6T.V•¾`G.öÍo²GÇX2ÃåëAÇû‚†çž˜·š(¾Elõv ®&„ÃqHwviA:ŽÓf®JÁ}*QÕmz˜»Õ4÷^hM³ŠÆR€3I‰U?åjeM¡dÑ|[«K¾A«ÅE•Öôõ"3Ü»RÞÁÕ×"»”/#JG”­khÝ™ezj¨²¹=»µáIuÔÉ†px’_ÓHµ([6­úM(†Ìþ¯ 6%xÀÁÍeñöÊ‹<€²Üýñõƒ«û¶Cá2ÀqˆÏAX‰³i)¾nÙçnÅ±ŠhÍÁrÛ0+6’³³þÙÜ7²ñâ“üâì¬&®å¼ <ËñQÑ	.jÁéã¾–ìWÄçs™Ïyî®Hlœ¢º%€aŠAÇ³°
‘Ym	˜ì¦Pí‘6S'ÇÁ´O0º¹„hMb(ß'š”†!ñ0ŒJ²&¡W"™‡D.{z/Ú0 'k•‹¹øØÌˆ•ÔJÃqœÝšd!=Ú%êt›Úá|Ù¸”„¸òZ"0JuÏJVýø)VþäúP`õà›wÅŠÞ¤7M›²+ë3PŽ‹½¦X8©fš ¦=¹/œ<®ÆPsàçå!hL™<éçç•øùÞô‘œ>§q’Huïü<ÏñÆÒQ³%^×p°´ª6Cê5HZU˜¬=ó±V19ëŸ\5‡h¹%Ë#­]Ì§ÓS!—`mÎžJ–ö
—™BB´jZñÜW [×‡îG™ütëùsûÊPI ©ß‡~¹èw{Çü³ïñü©/ø#k§gÜkº‹Š:ï=¯R^ô>K¹*»ô"Ë]4Ôùà^@¦¢þ(¸¦‘)t$^™Ð[€h0vŽßœ8L¬,Q—Qv«Ö¬ç4Káœ¡¹fj²}^ƒèŸwkËá3ÌxÔ(â6\+›(V}›ž¾&çA¦¹Êh=Óf-ÓQéE¹;S‚i®³	®¯Ú×cItÏÌ‰ÈXƒy),Î#æ8Yu§ô&œí{Mþò.qgÞì>‡¢?ÅÜYªÝqš`jAÎË
8Î¬ ñZ–TÈÞÈDÌVJhLÄäÛÎm^¤hÿÀßõ£#}ÈB7|¤øÕE¹-çt>´9X—+¼š»ŽéœÃx.‹Óá«ÙºŠùÒ…ê­{arÞüxÖªI@1NDbøƒæRøÑ»Ú,‡H¢ñÐæŽ0~àŠY»â?y›¯ÂÛ0ð¨R¸ðûºKéÕÈ wŒ”ð#)`n,òÇ\ŒŽ…B…UççtÈš»»¯ãÕ·\Ñº•.ÆZŸZÇgå´uÔÚk·:ûg?Hÿ4ç4Ä[òˆgs¤eT ^ë}ý?°ŽúüZãyO«}†céìÀØöxPvõÅsÅœqwÍ×“á°î.ZE¿ëPÜ¯ZŒV†D”]Üq=d8)G9Á]Ûo(kž¸ÒJD¡êR"4@·¨=Ä|ŒüÌ$=6º!~†ÓEGLK³i7ö?¤t#ð7›på)0âC'\•êŠŒ@ÑO¢,›âl¹7ªKãÛº~
8y€«(C}š\eš'á>S oˆPpž2ð4™ )…pQÐWwH‰fË X³á5·O:4C‘ð½ƒs4ÁU(Âu7¡h²ë2G¨€t½*Läï÷]Q‘3*6KnéÖåŸzoð_.ŽËQ ô« û•£??`˜µaË~æX.NÓë•l¾>ãŽd¨jö[™U"‡}ÝG!f7xBeÎ³†´Ä¬ ‚m:ÇÀØuàÓ|4Kô*’¼9æ6Ú©"™k9QoIUh3};(?y6­£¶£Å2	§Ë»¢ÿ¨Š+uÆJïÊÀe”Æ3Æba±X–Ê¸¥¯4¿£ îŠ4È, ùA–í|œÓ+ÿ©GþSü(ký©Gþ.Ñ^zÞ[kM zö‘ŽûçKÒ:;ø´Z÷ìFÍ¸»èmGíQÍkŸÊYé¡ŽÜÁ:\Š]Èãëk ý8UÚçYÌŽÜÞÒÜ™áv9—¯Çç¼;~³'ÚÔ¯8D‘¹eÅTr39.Æ°7ÅÜLÃ\Æ0èÊ©ß‘È†cÖ³V²³9†jö`>`žÄE¿¹þÜRìfN­ÛÂÀÏž*q¯¤3¨ÌGñ qÁ/„'îÃrjŽŠE=x.6ñ0Å–@9üµuH†ì[-¬Õq)¹ð0©bš»7:pË­äÐtöÜîŒïÓ0»ì _–è¢:S®ÍÂô2 %Ý1võøQ÷Úp¿'UxQ)¶HˆµÑ¹Y9*â‘ðím©Â-\òoíÿŽöÿIè:5€è^ºÁí.ÇÞ™¡Ò÷‡+°uÁ 9¯êl1¤P€ºãg¼ÜÄÈ•(át(>@‡ÑoŠ
cÕãb Ë±Q8w;¦2–ó±ˆ^@®ƒ»*Àzw<—çº}#^FQe]²ŸÝqö/.WêÀy7‹B°ßAk+óÙûb°Ïcí‡Î4Óª(LhþÁ£áL‹‚®?D\ÇnÔõÿZ4y?QÓËï[+½f’|-¶Ÿ~S¦ë‘™Û°é 	Né¢¬=_wÿÁñ×Kœ‹†§Îb™ñŸ”R° Éuú;—hâ¡È…<*c”Ï/œ8áÅ%¤™lvÇdäÅÔ‡ßÌ‘ºýô%þwëéó],ìªÁìU	ŸÚB¯Œ(àŒeù[£e¯UPŸºs)GãÒûu.^uÕ¶ÛcY³s+@RkìÆw¯±V§.äþ>öÀ[[øÁ+~5ëL†StÄ™À7Ò³Ê)›0¥’¢ZÐ ¼J*ÐÌ Û]ËW€(8‰|zûî9 ù(ìGAgGÚ®ÛäBp¼C€æ.¦)Ëƒ”VSª%Ac86;t[”YT01º½Jo®¸DÛ/Vú	E¶_æeAÕä½ùRÊL/ÔMÜäy‘ D U³HK1Ô•XêþÌtw¾)è¶•pDoÔú¨JåUt¾±Æ’%VsT-%××¸×‡±ç:½ þO‡é7À_tË°U[GÁÛÆA/šPšAµ@í4O’4+:iOE^›Ç`»K¸øü_ŽÏøß]±ÚÐÚˆÂQ›„yâPœ2
ó¿uyÊq^ñi¢ ds—dË„½ì©ïò2*þD.8ï¢ˆ.J:£ó »0îß£jîðÉ‰xÄÁy8BuzËe=DÆŠr’Â`È|-*çè‹Ò¸AÇ}èhÍB>V’qý)ck.m!‰W”ƒp€®›í³ƒÃcÒïŸT`01JÈ1‹tnð ?{Jú:
òcÅv‚ô`¦¥'b+n5VƒnÄ<Ù_9é¾%~zëØÖ¨/ØÏ°T:ÝxY k'¾QŒÁ' ><ëº¬S%^ðü‘©ëfï%žR—ÆÑÇõm­š]Kå¤Û7²²¾£V\5 Ðà\ÃY&Z4§‹S;kÅ—½ê9WjDVqQ„wè=¿{%îÑ
S`:7,÷^/4»£$SëÃÍñY1i­j 0m¬Û»qd¢ª Vÿ
ˆE brÑ#àghŸyp9Ãíìá",È,ltlªÛNPÝ¦ÇŠ¥r‹¥2}ZŽÝF»‚ÎÓØ%ÊÍ/FiàL¬—‹”9èKÍãfjaÝ\‚€Êô ÅÉ6ð}îìK¤¢¾áQæWæ½P”oõñQß°8®Æêüi¾xÚ!5:§€Mg•Ž#JšX²‰%w€ûíáÅÌâ‡SøƒÿÅï<ì+!@ã)…tŠÎÑ(²=$‹èú;"	`ú;èKwråGÎi—«¨õ„ÎÓå×#Ô§|zï@«P–I¬´þ¤ÖRë?©õï‘Z‘8ÄWÿu$ŽtžÄ9Š|EQ°ì‰œÜ~—i*ãš|#%š&Ÿ?ç}Ï³QÅ|”ËHñ]2Ç„RÎI­TyÍîÃb¨ø*ž©_«Ma¹Îcš‰HÕs}6Äöi|#]0±mñØÜD¶ØÜg0ÓÓúëxÖHb$ü(5ÛÉOêE´ºˆŠXÚ\í"¼nR‰‚(·V*	ÿrG~4y_q4ØiE¶
+Nl¯€õ¸)ÓáDá
i˜!K j6@hšâ5å„’§è¹@—-sŠáï÷#Nã¥—E¥¼•^‹x:ÂeÓåiU¯`¹¨3Ø÷ñ4Þ‚#Lí÷È‰±ÙKÏÊkõÄöûÉE0qnå eØ€Ú›ƒÔä„Ú-Ì"}`øø¢xçdRGs­{â¥îµóRu&7cò’+‡~ÉëA˜ª­¥Ë¯½‹iü™h‹aGŸ®ûêq‹õÐÇp®pÏž®ø<%;E€jžÒ—Â/ý€×ÿÆ‰©ÉîT¬8R&HÇ»Ÿ
M§fÚë‡×Åºs.Õ³j'Ó·Z¬™®=5EÛ‡=r·â[…L–Kc¶ÀDCLTç¯Ã;ôGN:Ç'Ç-þÈ®_æcûƒý1ò>š¹Ûf}TaØV…ª,˜~Ö¹Ídâ6¯^>ßúÛ‹Û	 eü¿yòYéÀ–œ{„°²òf¨÷ü”VSÌë«Ûº®ÍsåÀT¤Ê&NŽáÜá_`Ul|ûöðèwlÉÆ¯­ŠðäOu>_=ÛUCÖÝtžÚ¦bäTŒr†–¹î­Ø×Vx¨qM‚8¾!úQU4 ˆïÍÓín˜Ú)t¸c/sé£›â¼¥½ÜT“‰+AžhÃÔÄ~oá`ðXÐôèZ5 Ž¿WO÷n’Ò1>” äwÁ“ºk½%þAU¯_sX'¿®Á`·$ÈÌ¯¿
û?›uåh(þî_Ôôe$/§ãÂÝõ
ì­=o×Ý¹zÃâ‚‹ß¡SCØ†¨Ð/Ò®–DÁ'ÂÐ”Ö]mSùÃ>ñ}ÝPŒ¦Ãh2"oLÂ"Ãd_¿Q.Ø‹¹µ¤¼ûÊ¤pàýaœÄkAÙüíßªËM~ÒYì|1Y{h„jI>fÊÚ’†+ümQnËÕPÑk…s-*­°©¢Ó×ê¥…)-b¬P™¡ÃGQ/Ì\ØLò øzÈ±¨7™u_qüÄK£Ú {kÅ“•HóEX¦j7ˆË	=;Éo¥Iò¼°9‡¹Ö¼–¤»%2 ¶¯j±×¹€ì¹Bª±Wú`^Dö+//P‹­,Ç‹¼†v÷ûÆYG ï…Daþqûä²OŒHœA±2šäS¿Zƒãì‡ö›Ýû¸6o‘y²Ò/ïîðâ¹éoqÛ¸üºñìûÆäLö@_ŸûÉF_æ$ÏœwåwÝ>‹¾?6‚qêÜcþ[…`r}¼s> ÃÊ‡ÊN]þ5òj¿=<PþŽ„Q[V:ò*k9ìÛ£ölîÕ×q!,{‡¤X¥ôë%Þ^
ºû#£«;á¡BXµ/í¬Zn‰ëü–#¨²cë·`š¿/´ªÌö"4ø+ ®QÔôó›a¯ãOïÃæûC±/[»&s§à!3o~â³?ñÙoÏÊ ¶ ¥­¬ç!¸âŠIùi.hÇA›÷…ÚF‘	IüÕ1ÝÛ  w÷gëm#Z²&«9ÞyE B¥Š—€ o²I8²ò&»Q´2²ŠdÐ@-¨rÚÑî2L&Aï‚oCÆ^©U¹P
ÖØÈ¨Ÿ ~”‡ÁRqÉ89êF/žà{¹Ùf=Ø–¿"—³Eƒ"P“ÆŠVj–Óö­[uaó	õglzÚ¦€Œ@mß3Ìiêr=Ý€ü:¢G'YtÝ…#2ÔÔäu	ÀdwP“„*ÝZ½Ú·¶¶êe!'ƒØèœ18 ÂÇÁÍ0	ú‹éŸõ°·QÇV×Y_ÍÅw¢uz—s$ŒÉyZ¸¸¬ÔV5äk®W”5ßCIP/nõ¢/•–ÀbyÛ0×ýtÒ˜šÁß™ ÄÙ=’“·ŠZh/ kÊÐ*2UÄ
*¢7Nv¹É²¤x+
ÙlC6i!ÿtŒ¡œÊ	A$ŸAÖZ”ZRø†E¥ôD€á¡Í†]oÐ§Ä©§çslÁÿPæMÉLªp+Í‚œÝÕEHÞRšR¢ÃfŒ±×ó9…Tpù÷¾È\]ƒ*ŽÃ	Lë¶äÎ£oÛ¶9¨ÉOÐz…ÎY,@ñnO°4¡<;|©!¾À“)q¬íšð¸ÚØ‰¥jýSI«ÄƒWâÿ´OŽ1‹~q|rú~ïÈ9Ûâ\én5Pjô&ìAæîpbb9Ï4ÞjZ¶˜õvN7eãß¼.ñB¥•W4Åö&IG§}t± ¡­“TüpxÐ:>;|ûcgÿ¸>b'û{g-`Ú£Ãö™ØA²–/ˆe÷Ï?µ¨Ô®ãh;g_è¬5wäÙå÷){"D.g¼[h\Æ—fáJ¬^ø¥s.±œ™iðN—…ûD_º:¹÷(…†PxÖC ýXOS5GÊ
ÛgEíkHòÑíén4ÄûÓ@…‡ç°ð@g¥#¯áK¸	ý–‰û®À`q¥Q2Í¤KkFœÄBéˆa,ñâ(˜¥7ÎŸeþ —aÚ…­½-ö»ÒÂ§åZYì[);®2	/"‘JÇÅn Éœv²³½±6„ÿ¦ÚYOT8ìá¿R§=9U‡x_ªväGë›|3Ã -ª”˜ejÌ? 7ÔE­Ël­£%óu Cc¤‹´C×;t\NçÖÐŠ%õå Äûnï»ãŒT³\H¤ÓøbGƒ#Gî^Fd0Â }ÔÇiµ¢/	J‹ {I,(~õ$éµ¨‰¡#\/ nî’¼ïÑÂBZI?áA©j’i‚).•“T)AÃ	Ë‚~r¡Ã_Òò– sD°†SkÈ¹?ÛÓÙÕí‹ºyÂèÌ£9äµºÁÑº'Æpþšÿ·ëüî"Í”
#*V(£R©R8Zð\­t´îlÏŒ+ªyÑr/ÙºÐ£l<Ö¨ÊqsaãÎ|–ÊöQÔLžÜ¤_±¦tF½Aü¼_ÅÞõa¡[C‘º7ãf2U[`}™è'Ïå±1XÝÜ{ óÙ#©ëâmD©£+r¦	ÓìPB†!óŠÖˆ4l½=<õ»!ŒŠÔp¬`Cí[ÌWãLé(3}c2R€›¢Þ¡ëÜ9«jðL¬ÎVKšöÐÀE•*n±ÝîÂ¼•º„E•s[ž"bû) „[†D˜}#*w¡Iv¬/4MTòƒ|/Ÿ¾Ê”û&C;~TE²¢]ã÷ÀjÓ¥v½bóJY$ŒP­¯¶K€·oµ@<ÒL¿jóâKˆÜ’[&îÞ Ó,Ïô;a`j“öh˜^S¡†ðql!’&l\lÙ6†m‰xKúhúééÖó—¿”ãœ‚ÍY…@L<"[½(†&ÓÌÂ±mŠú*EçüH‹¹]3é[ -Y™Ü%›	
*k–¿gÂ´MëÌ’hËúo‰­r§O²={£ä¶“«S¬õW©PPzE“à°Š<G˜ L'HÓà¦æ,ÿ€õ€ •’\tc~G„£ñÄöAiJøW°òž„örÌQ>E¨½âs
\``žù¬[®(ÍùàŠ•Ì?2Ày#¯~ç•D1¸†Šì­]z{üxü˜BPÈý‚·9‰£| ÁÌ9Æô5uãr@E¶ •Þ¼F~ b•¬Ò0/5dë3­þÐ(³^·jt*UL–OŒ×Eü]¬É_ºé5±ƒ¤Ê{yWr4“-A Øã™	RUoûˆY'  ÕóØÂ“›ÈKu½Ý„%pH¦]²ìÓ1Ñç“=Ë¸¦iÖåÿGSè¶zÞhÖ •t g¤mçÏTö>`@JÕNsµ¥bðm=›Ùco+¤d>/ÐÝÿþ„¥ûGòUùîÂøš´öÁDÆ3ñZx”ÁâŠû3×Ý¬¸ÚÀ%¯ûVÕº3B…. ¾NÕŠ¸'—wšKèGRqýþ26E¤@{ý~ñ¸* X>Wç¥!—±ë2b»¶Ë­KZ9ž¤®QRÞÊ¿8Œ™î#¿¹•ºgÚÐTa6v,Ú´TÚŠ-‘>l€ÿmK½ß(ãp×¥*M)ØYÏŒq’ÉäÉY$Ú‡úšyNe4âJ7 îñ?¡"ë "DÍm|}ËœÖæ²EÄù­Ë¥Du¸4iNn8Î1½Œb$¼¬cx…gDˆH2Š’þ;Oí‹í+îìsÓ¯˜™µ¼JPVkP¾î*Pl29Ñaøì©J¼-¡ ô§­_ê3¶<–¬¶ãX n±éŽÈ{;NJq@&°Ùrc;oÞìµ;G'ß·N;ï÷Úÿ€¢TxÎmñ-°¤šÉÀunö3Ìûc½eêlfÓÁ ºÄÂÂ@pè:#¸†¨Ma¾/žw&u<Ãå‡¸u=f1LâsÁröœðýêTxä›=ÌšYôHt§Ì5>?z`Üêýíuh†IR?¶÷~Þz„»ƒXF<y%qîª……\‚ÓKÃà¾5·ì[Q­’•êÌÄó‘žý(sÐ@fÈãÒwÉÐb"°qg¨¯a^—A4Ä‹&®D i&ãŽnCö„Ž+nR<j¹š@ ûI(µ­†õ™·h°[)•Ç&ÔÜQm†ý"Õlö/
DFaÅ€@¥ÚqûŸ­z®`/Óí¾_Þßû+<'cýNPÑŒË±Ëè ÕIÅû¦¨NŸ\D*ä ãdó™¤Ÿu‡Iïskþüˆ]^r¡{ÇÔÅé§°=¢hY8A¯YâÁ‡v~:£ˆ g’q4Ð±–.°4íeƒn5µã÷‡û¹ÀÒ1«öŽ÷”QÕÄž«ÁÛw§ò}_Ž`p\°‹h‡§"¼k·Î
*VFšµýöa®Ê°›MF2tÐú¡ õ„ã•¤³aœÃYÉ>‹ÚÑ›öÙû\õ.-í*ô%«ÂV4\F vòçG´­°Gö."ôÒ‡¹]CÀëð|r°‡j	À q?HûÈ†PV«"€”ÂdY#·÷d¾:rx×RíÞ‹ç+8¿]óC”O/W’Må' _ý¡ÒØ/ˆíjë¸‚Óp73å½Ã	–'ò! 5£\~ë/çl½#T´îí@-óDsBçÁä¬Â0;ó¤fg>ËÉé]ÙÖV©EFûPËX|8G«?ž£	’Ããu^Íð ÁÞ°%ãW¥c¶ák~‹¿r!â°3SK«Eñµ¬¿<?.ZBëž’ÉÈÊ"ü£_^5Xçâ ÖðA¾‡_^%Ü«–	šäá—3ö´Å+¶c·ÜNBå/ÿm¯ª§½(Ô®“Ñ‚~åÖÑ TPëØ!]¼›-nCóígs‡ž³Ýu0@¼‚„øšÞÒ/Síì”aªiug"úI¸m0Xuìþ¨"@Sqß†,Y‘}µ uLððÉG?Þ ~³Uœui”h
Qæ7D{ÚD{ÊeÑ¹5Êzà :Zô/€ç¯ý?ùó±Ø.üÁ+a—-šˆ™	S>dø½µ‡kN¯Õ7å\è½V‰qrÅ'W‰bµ<P—ý³ôæO°Øð9SsƒŸ*‰ìÖ’h³H(›!„ÊÙå‚Þ€òŠª­­X¿”/„g=@mÊfŒ²Ù®xü8²&Z(É½R»píuÁOEù6Çà±	ð¯¼üg=8”¦¾øGæ™òÂG —¤)¬mÂÎ'âÏÀ-b·É4ÖÖ–Bø)êE&¬¦nz.§§}1oäqdýäð†7eÎç¢KýH¨¬ƒý,ª§Ñb*rp«{a‚ì Ê\/H“gõRÄA>µ9$¼r1ž¢šd¾x^ÓÃ×LHQÅh02c“¼”|‡D]1Tò‘l›­²;xö´f“èºÃnÙ·_Ôlš\7\UÁx5MósØ.,ÎJe,ý—®ªÚÔXRØ¹|.¸Å2Ÿz½,ÿ
)§ß¿^o¡R‚Iï¢ÃJ‰Î ‚ìT“Y/åíÉÎDÐîg	`ÓZÙšî†`OÇ©µIk‚Rô(õB¥‡ËðˆhM;tŒ³EõÕÕªfõá×_Å˜ø0¤”ÜdÅµTÐè.uAÐD–õ‚x Êáùƒ1>ìÇÑÑ`Ýd]íö„UÞ>-h•ôgŒ)¼õ!_$èÊÊ>›üû]ÕAˆhâšàQƒ Y Ž§/ø¤†X·¢<Èy8™}ÜNµ*‡EIþ^F[îdo46;¤€HJ×ÛÒLÞô…—°y
&˜-×ûÑØRLÄ,tj¥joôÊÐF¾Ÿ½ÞÒ5ðÁvÉcÝòÓ·sfŒª@þ*6,–ï›;OwG¤î/Í“Ùi¹·p÷Os—ŠJ/ù·‰òR‹çKS›)°8ÞéRh1HN¥ç‚²èÏcnlk˜R@€C:ØÏO\ðñã_ê÷á@OC¼óE`nÅb6gÜG2¤›•õxÌ4qX ü—á°æl_¥ÑdÛ2ã(âP*.½%ÆžòP$èÝŠ¿ƒÇÑ2æ©ÖlkNŽZW¶è	‡ÊÂá.×ª3tžÆá¥F˜NÊéU“6SA7&i%Þ®Jr”¦‚:ÉhØ/“ûxô,è(UÆKäMt„á&É8-¾©áõ(*Øê¶„5G2œµþªÍ9€ä¶ÁbÔ4‘$Ç­”Ù:®ôª®=H>‹(¤æùð2Bg‚7ˆß«Žò5²J¡]„wÁ)ˆ	ž1û^®C]}õâAð–LnîöîÖ$§ðëoArl([*¡pÌÕó“ŠR¼Sx©JÙ‚5¶ù­¨Iž‘ò™Â4;šÝäÝ•(‘lô_›o	KƒÇ"¬¼‡‚!B®•°·ºýUÐLñ!ªè(×¬»£=œÚÆeV¯‘güÒ¥ÿ'KâNÒýÔ0mà^Õç–°oüç
ïX9aúðkR$CÅ]€ôÂ	¶ór,ÜÐ™¨ “®’vþ¶Mñ>¸Œ%26 ’¸Ÿ¤M}q9×t0ìßN8$’Îð„þæaVtuŠíèFÑÐ•äXø³±‹/ÂÁvÈ»u<~o€»3Œ›Óë6W½çŽÉàãwjyÑZŒÔïm;’.‹Ø8cmïÅÌ¸	aª‚¿ú÷«BîSÌ}¥oŸDÚ)#ëÇ‘Í5ùG½Ã¼@,{Ù¶
Þ*8í,çÉÂHT–ŠIâ @¸Ä`=¥N˜eîŽÑz–*Vöc yTW’5Eùs÷ánC:QA	ÑyHÇå'®?¹MhÊh¨iahCì£‘~„ú1“ôTDŒ¸Mxˆ[ƒXLHù
jc¡!zÙ~å¶ÎDIX¨¦‹/9jØWFM,æåzg\`Bˆ}T`E¸+&Ð«ÅØòxbÑÅÊÙº‘Å–¡)¼‹;+aëRU(‹…üô¢T'e3ý§(&¶l¹˜*geÎ ÛÎ©dùqTˆ.?ÃÚbárŽGy,ºRêê3w$©–½SFÛÍ×Hÿ¼¸i„›Ê©›!\²d®tGOöRb¨9Ï¹c{oñÒôL¿nôLŸÎiÅHM\›AçŽª¹–'†EA5ç —ÔÒRcnRŠ¿þÉùgHÎ?CrÞ1$çÎ².Á’^¥Êéãmkï¬ˆ¢sºwü®Õy¿÷ÞàÝ•%§²èVÎþ ûŽ’^öµã‚™‹ÀqQ"eëŠÒ•
•ý/ƒÔ!ø„¥ÀYïÞ/6Š¦n‰I7ù(•FãI’fÂ£s$À‘ßØZ1Éóâº¹÷­†­–Ü Ó=—Ä…¥tÈO\³‰oàHƒ+¡òFØÝB‹NÅÅˆ¥EöØ!Îh«f™4Ip´pVáB1±R¼EúàBIpÎtE¾ ¸`>ºE,¥öxü#Ó›9-_G~›;®^¹5º\È+°º.OÙ\AUg$b*§Çé–H’r•
HÝ†o¾%'5(Š[0;‰¼™Ì“ü.2äSê‚T•ÈÀna~r#öa`¶•Þ1åû&{'š´Õç(´Ü¥7ùDãÝu]³!Bœ Œ¹º3¨mo>•SÎèÆZîªõ–~¾Æ|é!ŠDýh-,i0çP`ô_bV‡¢škÈ8¨W4¬ò(ó¨ö&¸­×@1® Ñ³ˆ4ÑWš³“­IcNWˆð›ý‰^ä¤Ìe¸1,Ëû`¹îº1ü¦nÿ¬Ž>HU¹U.Ê¾RHÁ— ½Të=3dµÖ¼’Ñ©­+¡—£^£sÆ†²%‡¬j€“‡}WaWq–Éð<9q”Ñ‡f†b†cF²§ÙÌ?_¬^.å‚àz]ZÂ÷‚|CniïÅ.û¹Å$ŠÖ÷“Öý~(þŸTöNe—D<ýo•ôÔ¦GâkÚNÛA(‰+e¥©8OóÊ)B	\n¶?[®E¾.ed%ÇyÄÓaF“›ßFüg Ž(¤ÿüú Cà¬ip0åE• ÅQ¿ìå‘‰®ü7·Õ9WŠÓ¿c·Åÿ0³_Yþ'›súJ74ïÁÞÙ^§}øÏÖÜ©ès{«\ô%.-ö©vd%Z³t ~ùZ~]îY8°‡<ŸF´`ŽwÅ“ìä«âGóqQŒÕS”ÐÖ©Ú0ñ3XL¼—jçMèJ†ÿ‹ùdóœÊHûßoooª€“9Äê QO˜(ŽjÙ)kyÃâa®Æ1ºé÷½ ];~â²ê–•]P7ègÔd >õøßžV°-(*p÷3K¹Î¿«1##Y4×Ä=¡ÄË±Œ*†÷½¥q‚	¢ûÇ×Äwè¹µ0²SY3²é}ÔW}bH[H°Ùì6¼`©ÿ.L¡ã]ÁÛruõ];‡òÈý†æ§}EFsY÷0w\¸µ¥DQQ®§Xènd¹ÚÄöE(Ñq”«8<ñþŒrïG±Q„Æ	3¹ú}D*q¶.U3îU:›O/„¦ð4ºÿ}M<m«²0šú’¬÷¹œC·ÇÖ¦)ÉhZñÏ¡_©)µzôóŠÊeøŸ;±’½˜ãpW#I*%bSHìyxB'â;£ÅN´Wá+a–¼gjžÑ’Ã[Ç¯Îq¥	ªhŽáFgCÙQ"²s¼©;Ýì±Œó\=ŒY,Ømø®~2
¢x	'ZÌ{¢¨Ç…y¯ªÃÌ“Èd&þ¿¢|økõæ*/)8º².gT÷(/Bw¹öŠ}üï,/B›Ú~ÄÜ‹	õNÝ™/z¡g|å£þ€,L1³À)ÌÔr®k@›¥©“†zûFH3Åv0jDWÜ†U¯%Úc7C´xžûÀ’ö¨îSHeÛUç^ÅÔwáÄÍÕ( dÇÑ¯)núXÈB Ó8‹ÎcN»$óøÑ×JOóW Ö%5v°]ÇÌWäBã¬Ðlî=t‚+2ˆWRãÃ;/vpgÇQGÆt†áz1WUS·€¨Ë(Å¼·”ú¾€
¡
B}â¾¢ñeŠ÷ù\T„	”^£{7!É´R„-îD•%àôoÅï[·¯1bfªÈÉÿ¤ÒP!6¡–…ØÞï“>œkŒ)ÿv^GÈƒŸ†Y2EWiÍPÁ	±óü8MkO7Å^†¢°5ÖZg!Ôì{35M<ÛDÞkÂ	¡Bq£˜œôw4,o*'.`š\b4¬¨)&ÕRmÿøì¨ ÏR:a÷^¹g7ã°vzVß?m5¶QãÝºØŸþ¯™¡z¿ïÍû\æ¨5¿Giªj{ûÔðvã›ÆËÆß~±ù W[-¦úö|këéË¥Q_:yGÔ·¿¹iysjü”ô÷ÓQ—y2káôŒjÇ§õ
¼È	’8ëôÜÂÔÐŠÐšF°X»F}ŸÎ#pm/Ÿ‰É7Ô3¿ãt®XÈì¸ÃMúrØ1úëÝûLõËT+–dôÔÏ7ƒ’Š“H§Ç…á¯ÉûÂ¶‚T5l‡RiHï;³7ÛÆ¦¦NCìy{Ðæ¬°/Î_n|“ª´©´µò¥Ü¹›òeLÑ…çOÏÊ0J	Zù'ƒ„MEÂ¡Óu³™ÊQP}|ëêèƒ+kpžÞ×wþåš¤„…«ŒŒÀå‹H9Î¢‰SX¾`+iGõ
t*«b<~-Ëä`…I­ÚûvŠ¿…¢åà7;bŒ[åâîrí3Eƒ)¬à À½l°áT«·r\¥¿ˆHÊ³{lÂ]¢Ÿ¥9 s\m¼“/¥FÉZ
ž…š—jB¸µ ƒpóG–£—ÀÐwãÜ®¶n¿\ÝïŸ••¿/mžåu²ƒÞ§gÑPüÚ2C"M´bqÕlŠ²,éE”yGgÅ-XÆƒRkhcÐ
U¾ ô¤W!))M¸A£ìGÙxÜä¸Õé¨£ÜbÁhº«^ò©  ë9S¬»´Ò0ëÝŸAÖµ”Ç(Ã·fb·U?²íÁð¼E^ðV7ðnïôtïGòt«Éeh¾†X€=³ïª½¤!YÙ-}Ã†úgÀÀO"9g„3Ç3v$q0ôÛšŽšrîä¬ê¶Ì¢à¬Çÿbç	ÔÆÝZ•bõQœÄÍ…i"¬…FM»&5?%Òž'kch³WxuJÍ9sJDìúÜ^œ>
\À‰ÓŒ¸Œ Ÿ’k^«®7¼<*j6¥d²ˆzè%Êù’‰g9!™-€Ÿ§™Þª^ÑI(Á,…U:“P¦ö@ÈtDtP	n?Ç‡˜¥:Ž'&%<Öjb-“¨uurø0rl(€Eåöê,7Æ	l7@ñÙ©OÎ³aŽ­±8êc^/ÎÕ¦ZáüX«¦>«#ÈËµšËd ×bËïý*ˆ&VçEä‹:—U,"›£ø§_—?j‚{ôóÏøß_ñ?O‰/»>Q•]`–ÿÏ[ñì¸ó’^6¥çlˆ1ÿ —jbûä‚)*/xûð¬oÃÛÛú-"fk	¾<©)Ÿ­øÎågÀ!ÃH0¥"Æê§5li3ìg“I]lˆ[â‰ØÞÚá']Áâ÷°Q¨e%ç8)fŒFãaˆ0¸¹¹)1ÐÕE4E#,¹zˆŸÓŸnnd{øß_ÄÃgý‡×pmŸˆ§@D‚ì¢Á»‰‡âù/ñüo¢©>Ë(”se0N³\Ì•l°žËÛöÍ!;aœ$þÆ m³€ðQ³â=‚ONƒò’>­òâQ.7­º¨dÖZÒÅUæ¨Š$²Î>ÒFR'#@¾&@,»pGvœ&çi˜±®û¡B‚” #Ó	„%@¢†ìð8]ÂÀ7Í¦SžXÌì26Z »åFSûÝRû Æéd´e]|{^²Ð¹Éê™vÓäsë‚þlŒËëìÁ+Óžç+5eP€ñãÇ»NæÁ­²ºIZä,ÜDêÊ';¦„T|\ï¤§¢¸´1ïö~gïÍÉé™‡cœFkÕÊÁ=ìrò"—qyj¿¯«YˆÌ%¹Ãyv³CÜ{´b)ãOn•!Ì9¥­p_ïÜ%`jÍ,Då+²HyPf¦ÐlD.,d:’’)·ž“&Ýk”k‡q?"NÐ–Ëî‹Æ)ÇwìÙ.2HSÔõb>z¯?a õ†l?™c*Ÿž]@æ"1	à¸!R¸FjvŒJ\ß›¦) õ"T¡´@‰ö$HaÇÀ\:™£ÊSS%¼žàÅÇ*fJÕ
M-äFÇÀ™]yp!è`¯‡.î¯<âb\n$¶ÚºIU`ÓQe®[DË!c`­[ÅÌá=™ÝA‰ E ðÔþÉA«sÚj·N?µ¨ vsçØ4eb¶suØ5lé=h"d£pœ©6`ÌV0÷xŠV½ÔæÑ•j?™/øtï‚µÒ}q(Yt™xCüa‡ª˜oÀý˜^Òi3§S·¸€«1ªíãAòRxâ	Kwö UGšóx¨xwprà%W*gpw´b¢ŸŠ6Ez"¼:ªêÜÒNI©èrFJ—)±RV/17u{CçgWŒÊ ¬õÖgp&ápØ´…ð™$Rè3wóíïüÁ·‰`U7¼ê#2×ªƒ¥«S¬¿ÛæXTÿ¯X›vvŠ÷9c"‹%tö5R¥ï¦·q¨¢×9-¿ rÊ²E•úwx†>–u+f­g¶Uu•õÖ³Û:£…u°ìšaDž¦~#@z 1[öà	•IVEvìŽ²ÀâôžnéZW¼³ëØ2òTæ^/W¬9Ï2 Ï›@ÅjR!Ã£“wxþÞïý€´Ðb{ùYS˜UÎ‹í Ö¨Ó°—jXvÂÚß³Á5"/’}>&©Xîb-,+¼í-Þ’ªvËót©jq‡»OÃ1®”—Ñ‡ºè¤ktŒå:x7à?´ ‚•)Ýé !Ø™oC:%‘†˜¡Î„x"Û"Ô|MÑé‡a¬×Æ¼?Ÿ\Ô¨ íBóu¯µ½-WÝm»x²è6ì}&Ì¯ù†ï’lb9sŠ'²ì.4»@áøß‚ðôÝ	 –Ã¤ø5Ó½XÇ0Åu¼3 Áíû_ÝöÛƒÖ§ÖñY›‰¿ßÞAÁŸJ2“cãWYêÛo©c;aó5Àvú¬h˜[Î(õ
Ò8`	Ód
ä	8ºé˜úGZ„v2~ÀÕ£­…†jn˜µ .ž¸v5ñ_n¸/•â™è
¬ru[SÜ¤ÌP/ß3ìmÉbÌ»ZÙ¢¼»fÒHôxÆ .õGøÍN‰¸eú­†cJ±p­ß»y…6ÕÂªÏêYÄŠ´·”gF;»Â£jé$î”Ü ‹EÑp¦ˆñ™s`ãa:;&¿ÓS£á½kñö>Rïö?~ÕÅ¯„Zü"º„«}$äb1æaj>ÖB¤%´Éö<ft"q¬¥VôÊ¿ÊOPáoÍ7©d7c8-ø-ì}lwÎ~üÐÂ¼&P›#l=pïL‹_p ®äŒAÕä4wþekãZÔ¤yà )üRç—Ô ¡¿‹çb7î{»ÍG}š$Hq ÔÜ
õ\€ó°7ñ*ÀËºòS…¾·· ó—vUãÂj‰æòH3öÀUjvMGðË;œ©TérôÔ‡ÇöfÕp G‰»àvA BÄŸ±1êX†ÿÛºU…·²ß]Î×Sªˆ2Á`Ä†3
Õ“Õø©A'cQÁI!Ç¤0‡­£ƒ:¯U^îªJš8n3æ­–LK/ipeýRÉ—t@rˆÏÃyùÅžÀ¤Q¶²¶k¿Q¿ •[Ç»`?b©]•!¶O°~Å~%â×’ºªŽ9™Á5Ó^fX=îKZO­ˆ¬k7Hƒ´²]Å7È–·¥¾PŽ¤ºu,¤{À‡ºÍ@ü¥åR@J–ÂßªWø)ûƒWÖÒÁûUA}œZ/øù ¶¯7ó¡ïëu…h&@ &ª<¢ÒDžWõ[Nl~8›Ælx²\"ù—ŠŽ‚kbå¶·¶ì×H6¸† BJ£»õÙº¥±0êË:Ká²3t°KYØÏ³¿GC
Ù‹,v-Ê}Þˆsª6<=~ÜÐ³~üØ ­ÍÓªž
}ö•ËSCƒ¿â!•‡ú–IO)ÍÀLÚMUo‰Ss½ÝA+ìªî•8ÔüÁ$~Ú>Q÷.{¸^‚Š`@9D]p«•,épÎC»XeÅw,ªbúJ›b¹#¢É¸4æ¶qeÛ'Eõ‚C&Ó±ºÛ³F·/•ŒJw=ßò-É5ÛaÐ»Ð_¸¦%Ùb¿AcâŠ‘2JR;C‰ K¢£àFƒðR*ÇIx\FIªf#WvS´ìÎÈP}ˆU€Ð–ÑM9m¾‰™í(Å$,~pòµœ–´)oŠC¼8­Ú‹ÔmS8âÁuCx_¯CfÁ¦8ºOâxU¸š~†ì4[`û›âcÚ­¡\+/ôP!=l5Æ|J;˜jeV0Ñ­éZz×üòLn×~Új>k¼üeG-ß¹ºOp”ý'úZð‰snó¤#°z4Æò«$í‹íí9–YóÌÇ,›_;lÓN%~›¥©ö>—õ–/WFh×wAší­»\-bm°»	Ò>PŠX[ ÀžØt‹äkó¤á†5r-àÆŽ|/$•9Á%mÂ’j¥òP«¶µhÃÿ©B‰å–IÛœHiòŠnSñ-R’˜qÓóŒÜ©å‰SÍ³ÌWr3ã²Öï&bqX‹Ì!n4¡A¬ˆ…N¨õ%'LÑ^ÄÈÓ·ŽOÎÎ~”_–’K¥ (<YåWüá	Ï­EÉÌŸûZ|Sæ©“q)1=VQ$”ºÂ0¢ÅWŒ‹€êÕ t¾ýtV÷2þ#çˆ‡S=+·¯5íÒ1±Ì&Ì¬è*Åö'â,âl@0½‹iü™ƒA”Ž®&œÆŠ‰<›FQ½Ç·_Ç‰oVÅ† -Ï6Å©ŒÕÜ†FÄ2¬ó×]rµ—ñ%ˆG!/+9ô*›ûØpd û›«¨ˆ¶•W~rã½‹NíÃQŽ%v(.Õ¦’%tœìá+á¼)<<{ÚÁø¢ñjW_¨‰qÊáD>BkÀ}u’ËÔâ+^@>ê°¡•gJÄW7Œh ²¡¥˜"÷FG,—¹®£oÕ©¥ØÑ«ˆü>H¢·^^?á?À[Mè^ây§k,ç«¹ìz½Ð7ä7ñD~¬iÝíÝXLéÎ­#Ù6kn“|_ûm6òn^2R …%&‘× µEôŠX‰'±ÈëòÄR´¸êrÁ¢ô6}òpZW:ÚµÌ$V_Æ©Ê3mZëêjä=QØx>³I§ŸÄ&Y¨^Äã…›š¤A 3ˆ(‰\2qˆcàœOÃxêM
²ùh¸„=¨%)WY6ÍNh¯JT¥U‰¹çºëZp<8>åk?4£ Ö’Ë0½J£‰œ=ö·H^‰ûCô+@ÖAzxCSœjƒ6&¶N)O¼Ëœœ¶dT‰C×Ù?ëì¿?è´?´ößî—Ö±«tN>µNö>|8<~Ç	ÃŽ~}ÝA=À %¯ÂG)]Ëe?jƒºàÃp(â.€?WLg‚>{H¬&!/!CôÅ MFò–¯ô¸Ã³)j¼ý$Ìö@ÄäÍÕþ‘ˆ]¬>@9õ
þG{‰ÝÑ!2°—GywrWPèåÎåàªiÐ£œI¬©ƒ!Õ9u±¡Yn—Qªîh#dû>–_;‘›¬0ØL¼<ÉûÝGrÁÚá­…-F“	œØðè £`ÍøÒÑ)b„ž!„ZçÜ,Ø²†’sSöÓÄn`ø)wµÓï{‚§ÿ™íë’*"	äFNÝ€RìŠÝ—n@Ø?>e¦aô9’b€ö¡;pjJ=à^®£	²WT”s±1–R­2w©Vè2Ž*Îº=‚Ü—gï´ðýùµí'ãrñø£×;…Ó,X4B‹¼Ö`öõI¤dƒ)	íÓ1zã Jù¶5¤"à†|Ï¸6y ý#z£5@6£§Ø0Lì÷BŒªãB»#Õ8ìšGˆŽv0$÷¤Çþt} ƒ‹Ái»&¾¸ò4Òu¨+Šx6â^öÒ^€RGcT9DPdS¼gQ6íŽ ´µúŒ¯¸HÃ0¹ËµÏ2Ð5¦™íõG†xx"«¶±©,Cåÿ;§Ø	†ÜºD÷<µÏèó§Ö„¢ÈKWÍ@e„] –—Æºg «ŒÇCy#ßd>s0i™tº¾§®Cç¢ÑbBy½SÄ°Óê#X%¿¼Ü;Ôïàž‘ï.©„žS†[~Má1ç0Z°`Eu¯Jùµ-Z‹]‹ÑVòyqö š¡j"ô<è+yIÆc+²®¶Ô1»¨Xí‹é¹ß°{í´<Zþà
‘	ßáÀ0O¼ŠÚµQ­†~a–a¦»#Àú+Æ¾‹´ÛêÝó­¿½°Øfù–µ[z³„°ÕbÎ.ÌVÿð^W¶–Æh»®ÌÛ¯ÜÁÁêZ®U|­Þâo¯OFÅ03N’<€âip4àÑ]”±ªg¸¡aÓ«i(ºeêÜ*f­6Suß
ÈÔ†Zã“ÎéÁÉñÑXÏ¬†øöÛWâ©r¦¤zåq:ßrÄÐ¶,\üòP‡¨!Ú©º-Þ9K?"CñòÈ`Q³naDQuÿ„
3;g‡½RQAii¤ïYÖÝÄ¸Œ°Åšú†þyÏêhŒÖ¯è"JÉªJÅÜyÈÑxO®˜ÂÓ&[™9w{ J;ÄÈYßƒñä¹ª{çÞ-ž»Þ</(ñB4R¼r>¸šžóýaX:÷Íõ€½^ÌŒõÐ‚È‹7Ö'SwCû²êzéPÉ‡ôU¹8ízø­øîã»Vçýá1Ù¦	‰CÙN‡¦K8Ô^Ã
"Z·ýkUñªÂRÍÊeí½*ŽÛáo5*ƒ”K•„TœÖj»ÃÖU×uGQ«â2ê‚¾Øy˜áÿµ¢°ìhÒÑýAŽM^ý·†×¿Ý•Î¨f°³z=È¬\àÇÂÆÒj…Y‚p>™Nôl•´­},]]Nêñ+Ý¨µ)ÆË$‘Ù3#¥JñUË—öXœKB~ îœ–MEëV×²WWqvV¥ÙQLHh³€Š±N–žîàÐ­³«QÃRYA¼(«+È‡ØöËÌ€“	½¦3·®¿0ì÷€Q×
‡·ßwŽ[­ƒvgÿäø]`<ÛYÕjÌBq‰˜Åbù
ë¶?¾iÿØÎ×F>»É@,,¯š«ƒÒŠ›¹Cr¬v!`cØŸµ]×½Œø>Xðr›Q;£i±{™u2+,Éb!EÂG¼n°*!]€Lñúµø«tR7ë¡¼}ä£‡=OZ³.|¨lU\Zö„’Ø³`]qÍHì&ï•p÷‘ÄTq@j=`Qjï?ÔÅ'rkUöÏN:šéyª6u˜Õ„‹!ˆ^&EžÚ' ’¨#ŽÊI‚4ËÉZ`'ñN2¨k^!H¾¢?e_ø4ÁÓŽšÔ7¤ìÞ­¸?N`Lkþa¶gãŽ¥`Üþ¿((ÛÊ„µ¼»·Úä{T~|
SÔP‰ß<o=Ù5)•ƒƒ.›“É¦ºÞeµËQLp,±`ÂÉ•½æBJ÷MGìIÁ^º¨DY65êÔ	À*>
{	ìîkñ°Ú“Þ0È²'xtè??<atlV÷Ñ¦l g¨®¡R8RK{p“LY¦T}¥1¥ÖrÊœ´t ùæ—w1ˆ¹•+Æ"
‚ŽÓÍm]¿²twÌ^-ï|Gø ª}\ˆ¢PËŽú8uerøâå¹‚sÜ]5!ÁeŒzÄ±Î”¸±;84 ±¹ÂK‡hŠ%Qã‰¯ðþÍøÆõm¸¾áUC.½WÃ­k_|…oðï×‹q€P5ÛèŽÅS;®À¼²¤îL'tG"Šy2Êóü«¿Î—´‡%—záÑ9x*;Ì»oÚ¶ùÅkÏÜ*éîbÆV‚vk aÓ‚zePÃ¿|M°¶ºäêÒÂ)©‹cßt•%f®8?Ë„Í=Ð¢9#Ø(5œB‹$‰#€‡¤ïu©aP‰¸`©•d{Å‰cç6¾2#>'Ç=‹»¶¢"°8£©ŸOéÌ¨#½¦.[°–…·œs¾âbX’ù#û_®ÑC!dF½¸gÄ”æ 5>©%ÏðZÑG­Ñ’#,`õ•S’vÉ¶%‹*ÃœUƒìKóXó¾8hüÅg`žgñg-ý?kÙ}‘¸H` skå&¸[†'-òNÝk 	h?Ó¾¦çŸsæŠ]ËNþ2Y®~…WãÕ÷J{õh	´ÑBÆ7©ñN*¯^’£È„xkí”¼iÇd)Ô^æÚœyElqØùÚãd;úÝƒ…ž	-E¤ötž[|»bÂÆ½`™/+¶:°öL»˜f„=3K´à–ë „¼k·Ú!ézÄ@7jRÚœðuê—bé§ºÇà#ü@’Ñ°ÃCŒœ^ú£ÊkèºÑÑ£66¨*jHþN¿v‡ZØ`ÆŒÙ—½ãÃ³ÃÒ½}XøÏ:o÷>ž¶*ú!kw“’ö5Ã4ÈLgßèÎ¾™Ù°p§ „ìÿ£Ó:ÝkÏîQ›¸ïÐ:}}zx6»·^z3ž$wžàþéÎNÜò»eò·ïžŽ¾¥ ¤pì²Ö9e” Yè_]ãºUújÝ“j+§7‰8ðdê¨ªÇT‡yôZ‘íäê'Ñ¸;ÖUO´_aŠggÕcÑ'W!lÅ8È²‚FÉ~(h_ÃØ§q^ãL‰½â{¨ÄÓðÄ$H£¨§Ž'-¯/¢MÒõÛª°d6^"j¡w•<¢x9+lˆ§ðšÃqrL¸†x¦_k°o€l®^2tráÜÔ/SX¤Â©ÓÒU¥Ø4»	ñœÔuë¼²ˆ1Ì†ïªW´‡ZcÄ{¡?â2ã;€p»«ÚíƒF?SÁd:u.+QÇ+î+êÝ\`ÂîÝ<Ë*Ñ(VæRS±ëCœ4å€Pù¤“›q…wO†ç;AC×7‡´ï½–oÍÑð´X<Ç\¶:~-==Ìð:Æ1Î%S­6›š Xúd˜yg§^âªZãÆïùµu,|÷Zc5hífÂ¯å (=MØ6*»äÚšßº,ëÛV‹MÊLhÚ·4	¤x§ª`ŽŒÎQZÁ9ÊÚô…w%Ÿ[ò|©'ˆFœzsžÌ#îµ …~æàWÜ›¯J67§®Ì„›Csáç·?¿ül‚·úƒ.¸põeî‘{ûàžO*òn-ñÉ÷öÚm4½£«iJ·nÚjnÿõ—…l4'^ÿrùçè:³×…XMwn³†N¨E	Fè¤²¨bVcvydm ‘œK%,ÄéPƒŒ™þô]ÜBò.ñ°ðÙjÉ…_qkÏÖ»›2K8QUÓÜV×»“ÒI_›§xíó·ƒŠÞ=2æÝ¸¤ZÚQŽ-4éŸæÇ;.áÅs¾·¾«ãÆäwÃ.IÚÛ†Ø{l¾Ø˜ÀÅw¬ü29/ ;RB¥–m6È—Ë„K£KOÚ!˜Îüië]gïÃ®òñþÖ~ÿþMûŸ»ùØÕÖZÝä@½ÖUŒäGª(¼ ¶²IëFÆúÅ/çµ=|ñ3‹ØÃ­¹W¨
YÐ²ªïÅrI„^‚P‰YY¡è{nÐ§2…7kÕˆ?Ír?+‡5µ(ë¼xÞ0ŽÖ¹Üx5ÆÞj|ñ¼3uñXùÙŠWrÕuô¹ziMÀj‚.FÎÙÄs )¯ŠàØa2éÈA+ðßòè |®@Àã££mðÄÓ$™À°R->æý|ŒZ8w¡c<)ÍT&ÂÉ,€ /~úëöÓ_ô‘†£†·¤H‚>‚PTki{AÌþ@©•·^¡HIç³Xn>6®³’áC áaö„ýÐ—€Òo­™/4x„îì& Ó¥Ðª	ë‚«Êý÷¼ð]±3D­«9ƒ”qnÊ`ôcL¶}NŒÐWøÉmAm›\Z‚Íy'\1ï8ófû³Ž”Ù8Ws¶k5ùQ÷]E9B”†—á°¶Õ`¬.^¿}ø õæã»ríùÃLô#FBëˆq/jé‹Í®ÙÖÁ¶‚ËV x¹ŽÉ#ä!A×ˆRûÁ4?œžœ"ß;hˆ÷{:íïöN[ðéÚ–š½nç•A>U¥+˜{1J –b }Ð¡¡M‘|sX¼X+ñ9Lãp(B³ý“ã·‡ï Ù£Hw¼éAðû¿ëd«+Ö’Xë$½-É %WQZO9…\…A#÷©•úù4a—Êû VÊ³,= ÌD jî†±(‰ISê/ÄyÁW$oÏ®;uÂ9#°È Û$ÞÞ& 8{fÝ4êeÖ…=yÛœ“«•/»§³”„Õ÷‘ º8ÑôròLÿnB—¤6Y!”Tßý:!ÃçÉ;½"ùo—[`Ò¬z3Œx1ÿql\+®ŠäZª++ÐÙ3—P“‘e¤qN‰8wYÅ
6NËÁoK˜¦Ñ4Fb@õZ0ÃÑÜ¢œl5Cjr¸êß²TÃ‘h½bQâ¡b¨Ÿoiõ6ÅUPr¦#yc™©0M–ª¢Ñ«­k {ŸÚð÷eCìïÃßíçð£}†¯¶aÎÇíö)ü|š»Aiî^Ê_òÆ-º­„*ëÕçDÙz†…á¹ª<+-i´ÂGÿNã¢èS‹tÍí» Ì‚Û¥K/	þnq¥VcIÁÕ*QÈ"‹'H.v¬”Þo“ßÈl¸µ-«Åbü¼R¼§r*ás~.s	ÒåN'F67w‰,…Ý2Ã°aç'
H‘Û®ÒdùMû±7ïäCõuó÷Éa©˜¹NL‰CË0§Ò·P~ðjÈl;ˆVÊùÓ$>)Ü:jÔ˜‘ˆ|\æÑ ‡þ¸<u@œ¦IÃ ÊKó…æLŠ¾¸Ä²0jöõ1ªÙÉêlÕ~vK<›ÝÏ*_S¯¥­§*ñÁ¥¼öªÇ[‰Ní…=V‡Ã¬Ûo€˜¥¨sŸ¼²”-ÑF‡'6jeT¾ƒd§IÛûTÝ4(…t‚MÕÚ4,Í5é+¦hýpbðz“Ëz)ø˜‡ºû„=ÿG(xš±rHFä=z³÷ÖztÒëf2Ò žÖ‹›/tIWžrÎÑeØðø4ª:2Kyt•Œ3¶ý´Õ|úËfêFk¡ÿÊ8R{ñ.€,^è£{¨V!'"|ÙäÉ J¡ÞKŽÁ‡ähN\°|£²Ígm?9ÃûÛüç)ÿyæ72Ê¬éŒ»r°‘üÍ.¾ë†þDÎ}9ÛÆ¢åÒ1Š×Óa‰Ò©K£˜ p‡Êi±_.øFv”â8?¯
¼Ç+®0,äá£‘è'˜1t„`8Ÿ£1“UìFÞËB'O×£~'ÎDì«£¼Û½åÂÓKØ8ì¤Ttš”ŽI¡âÒDæÿ…·}Ë/W°ýq>=ú=Ž¬ŸCý{d¼–hÇô-®,öâùJ7›É¡d6äåÅþ£—8Hò<Bã*…m¶Ü—Æ‘ýÛŠç<²
Ñ`]''±ûª›ÍçàTeyžÅ¹ËÜ’œµöš¨–äù^>y®N¸:v b?˜÷ø”‹ìœYÀÎ™“ 9ó*Ž#7"´öÍGöûq”«ç„’¶"éDv$ixò*Ž2·Ã‘ª8²*F~øÚvK¢OuøèÐèéÉ«Jàa÷º¥â%d]‘ÿèÉ8}|ûöð‡ÚûjØ)Ñv³
žØó{­ÝÒ¹êNxÝN3 Â¬µž‘ÝTÁMŽ7Û?–Y_¼ð?³MmlBë ÿåO˜5îÿR/1È_ò(SÑé1:ß4»Ñ÷>L^+õjulA
:Gxÿ§f“~ü"Ó±Z‘12°îÀ¶:[›@æ†‹p8®¹«o2=Óº;!z‰?Éôdv_ U^ó¶Ø£	$ïœ3í:ÞM&Ì¶ Ïö†¨\›"ÍŒ‡!rS*ú^ñ?á­ä™nf6_¾ÀÄjÿOþÄ”{vÆ.[lTaùEpC™Ï^ûpz„be¥Ä8¹
9[ÄU¢AH;ÔU¯øNyEU±‘œp×ÈH¥n|2¦FÀÚnSÖmNf•âN¾=ÞÝCW”ˆíâ–-ussSd§åe(¢€I(e1”åÖ¬DAQ1h5BÄÍØìg"BÆ7OÎÂ\†Œºµªy<o\&´êqÖmñ,5¾È6rûhóË)_éà˜Ÿî«Ö9çf`TôMd+Y49?È%OQ˜š1!þ÷HV5Å<p!ÑªÉ ³¸ûinŽ¼=­ŽE›ò´gö¾¹¬]¬8’ºÁ96ÒÆñåMJ—My*né~)#t@2T aèD1lc-Î6é5¬füÍoÍªÄX[œªÆÄ¿‹Ç#µ@„^¶?aöV(~Š~Ùìg„gJ§pÐœ`É”Aiî•YëMÃd-ç62Ïù‹Ú'SVFu+^]Iš‰Žõ ðÙ8ay
ÖŽõ™ÐT‚\0}¬&]°ÉBI‡˜FR—=[HlàyRŽ†Õ°ÈðÆì{žÔ”%—€%*VÄZT½á
•ä]¼ê[òd>Ù@H	ˆô”¥8STãŽ9˜¤WAÚÇ(c`'ºÑ0šÜØÉŠ‘ßŸ'Ô†E#„NÎä¤¹Èç8h2¯Å‹g3zÇrvgò ,Ø,Ñì‰Ž#»#bnÑÍpŽ¨PÊíhþ,!º§Q6GG#g›FóïÒªÏn÷óc2¥ÐøûÛÐ ‡™%þŠ‡¹¶DË-G ûôÔ¡5âïb­†•«¯‰±¶f<ô¤£ÕÀþ’ý),°"²üýÞéñáñ»ñ–g€1™"À—	ÆºQH"¥¬Ð|Äaé7¥%ŸÖ‚bÒo#óä¶ŸqŒ,Œ½°|_sŸAÜ‡ÜÌ —ÄÐˆjf¶ð‚wâ©QjNxçQõl†ãÚöVÑLùê"€,… q•&Ú †ÊÞâÎ•Ó:·ÍtŒ§øÕ ƒuµÏ ‰¿Ùkw¾;|÷]ë”5×1ÆÙsG)TZíèä{YKjƒŒ™c”Yš#©·°ÔGJ#a©š”VÄÕQÙ*šÕ9¯3˜e¬¸ÌP|Ì¸ê"FÐ	D3G¶]?XwIÁBƒõÐXE
9o:fNxšƒÖ§ÎÁáikÿLÉÁJ66Láù¢³s¦Ð_C·X›(ÒìJ ÔÛŸN[íý½ãºÍ0¬¢ÖVðw÷¦¾$ù¹è©Å4_2A6;iTµóXZ\˜š62c:‘óa˜ÂÐb|0'b/óª¬ªÝ…`;TeÀ™Žñcb–™Ô&äh(€*/ý\»ÃÏ¨s†ÉÈ HvÉ•Íy©23fè²Ô{t•L¶Aaú¡+U^6ØÅŽ³p8 i”óA4Q7D8‡R¿()±t[ßýãMûŸíÖz¾é5{o3Ç€oZ¼£µKoøŒAŸž~Ø;=[ ÉeÈ
Þ5AgŽÛBâª¹•1Ï)d«fvñŽÜêŠíø_Ìã6&Ê¿°×†hŸž|<êì}<;é ²n	ç_m«®‹ÒÈß¶öÎÈºÜ>Û{ÿ¡s°w¶×iþªÕ^Ôs.)·Èàº ùó=¦½‘j™Û êœ *†$+1+s¼çtåú%™]Ësºú™[³MýIqìÈzº£&2â0°†nÀ¶Á¡ÆNyeI/¢(‘a’ô„z_Ô9bªÄæ¢ÈVU­²g]˜{%')mY2VdÑP<´²»nrÈC»iY1¿S:B¸â,B*!+µ®£áŠr¾A#5›þÄÊ›37ÎHÏZa&7ºrÊä*HŸd9ÙgBRù4 ¯ °–º'Å°-Ú=IµPÞ;¦Ã|j™^P¤M´¢çÃ<\²×¨4¿g&Óžµr¬ª¤²øE«$ç½`‡ë”žúz]Þ¿ §º~Ó>;8<¦ÌÇ'ÚG_®XéÆW•)S_.ãz´º‚É«hJ¨¤røFæôˆÈ™•-¥¸»·2ŽdµÕ^:¥¹hsYmq0XC¦ýÀáØVÐ{±|g–õ2Ý–%º-Hs«ìlÚéŒ¬{9Ç3þçºŸ™ä°O-Ã “ö©~OOÕ™aËÃV¤…-Ì[–7——r¦G‡eôÕá5pwÍ{,æÙ5q¿íšÆèÌ{|ú3íï!í÷D”É†ú,ÝÉ×P©•~ËÜ³zÒê èÛø(?Û9iáÛùäâiÍÇŽË¢ÔsK9Ç³·§ïNÚÀQžtöÏNìRÎ	¬Û~¥ú¥VÐŽ“,ºîŒÂ¬Á9JÄà]Œtj–Ù¢H
MÈfÃ¡å7¦<0Bg)1:¨{ù8 -oÖ*ëŒ$Êî¨´Nš—,Ë-eÍ b'Áhlò¶Ðoì2B—¯ ã(Â;piÅ‡Ï"ü/È 8Ád0¡Ü@tëïy“Ô8ç:üqu)¼Nå0`|˜A8à‹¤¯ò‹ò°Âë^öYùÅuÜÔŽFxxgKÊb±hR bZÁÛ‹Øßð"Úd¥R"ÉùPðW§ð³Öh¼lL„»íKÃ²>–ûÿÛûÒæ6Ž$ÑÏÐ¯hqÃ2(4ARZ­4òMÑcÆêz$å	?Ma\ƒuLxÿûæUUYG7 ÀÏÚ2ÑÝUYYYW^•ù§çUe”)N¼$©—¨ô†•2tx‰_œ˜é&#'¨Á‹¾MæË¶‰`á”KZóbÑ¶RR1™ø^™”a`0žÞÌ·Õ-êwe ?×ç*2RsÊ×ZfH±_ë+§U»ÕB)¥§=±‰71¯™mÑüœ=Ò_øÙ¼U|Šó¨‘â=fÄ|Ã’·HŒ\£[S{Yp©w{wpè«ÿØ{è{ƒã´F~~|ˆÇ’›Kí«¿MVWÃ:úûËŸ³Ãìi¶¿“}©ÀJvùâû”°j7Ã?£±áiöÖ gµ“EÕ`éÎÕPL¯™2–_
ú`ôHvC}ù=lzçàgOÎ`ËuíôÌÃË®‰y‚~ÅM½Ùª©ìT»EÎML‹Ùo‰Â>5½Ä2ö5Eâ–ÍI¶CŒu`Ñ±…ýf´ídíÇðÏàpæ¿·(^Ð%d2›ù}_N¥Le=€ÂH–'¾v{sµàJíâ[Z½z-¯I%ÀL)È.LÎN2£½]Ì'½‰xü'óËîfç¦ôYÞËÑdgÙôfr0„O¸4úªi>CÕ82"ä2ná ¡K¸Œ“«A>4‰V¬Žª*Ãé-Ï-$â6é€b<Š+;Ë{·cÐ€oØº”¦Ìà…åæC¯³6¸:€Do[‡¤³±~à8À	ÝG™^…i¬ÄK½¬¨4YÈÏ¼¾êÄWr^d\Ú¯¼gb_¶7ŠiažÐ!}¸¢.Ä×b`{îÃÕ4èžæÃúx‡šIq:zB÷UZ\'æÐ×6`ÇtÍ×øàÞãSäÝÝ›êšSçÝÝ›*Ažœ^åÇ3è4,­"€ª&<…ŽìCßOÛ9²kÿîl>¼³Û€¸’Êñ²­V¾Ãü·7˜`·ùG>›,í;kÚzl³Å5Õœõ. vQâãüÈ$?æýg€Šü”û;’
VÆåÂ¾Éž*T?Ë6„†YÝ™Ø®‡¾õ×Ö«I¨m.Xá^ù„û²ÈQ¤žs¯ ÎËHÙd°	#‘Vf vD,8é]rX`¡äíS?e¬®Cí€l¸I,ˆ’úz‚A„&³/tÚ3LrÊZËÜwJeµ½Sû,N{Löí·YÎYÃp)à¦4D^‘Ôñïì!a×,	†þ¨)–däCÙ¯b9ÉD>KÚUï±ä÷UÁ¶%Ê´t~…ÉL}©¡Ë´NOsDÙÍÛœM{V\ƒJÓså>¶½ß},»>áì~îŽ6Ùn²œzK@eœV”äœ‹K²SÓpÙ|K»µBÎ¥rVÜðøFâÃ®úÜ^v,Lð¹N¼êñãB5Ë“ó¬·ÉVùñ–{0['Çž^?OW`_Vi=ÁöúªJSw‹Ne8¶\9Ž©±·’äÊÜÙôáJÐ®Úÿ¶?(èG„4?„bê~‹ôb½WÂ,Z/ ?Šõso9CãÂ‚¥W2µ¹Øå>Á>ÍÕpÏ}WÜG khŒ‚éÈ½Íî§Gu‹x÷¥øðvÚ¼HØ+vÛ$ôÕ#âï	ÿ†…]Í¶!Û	ÿN§–
VàïKü¬Î5ÎÀ¢WjÒ‹zÌ±Cç[H.[ÿ…­¯MÏAm^K- Âõ¿¾°ÌwP{îÕfžÛÆ±±mŸÛ¶ñµnŸ;Ÿ:)
©…òÆBÁ×
>8ÐðkÁ#7µé‹ªMÏkŠ¿Ô±»Oxy´û©ÅsLjïqºÙÇ8ás
‰~´Mµœ è.ËB[,•Ù¸HdâíÛ	„Üg×°ÓŸà">}qòúâô‡Ÿ1¤½W—†ŽC!&*Ÿþ¶nçÅ›·'gØ¥Ó³§FÉwßNÊR{«›Ì%æÌene4dK·Í¢Wæ“Œ#¸Û=ÓÝmÑ©ùJMžîÌ²ÞÓ¬­:5×‡^˜Ed¿[piÑ¢R>8çg'G¯ÎW©*CsvòòäèÜŽöé	Ó’•ÏNÎß¼;;¦„ë¢ã90{ÝQ±2VåfˆñÀ²”Õ|6âMYz+Ì‘5¬‘)cäfl‘e«ÛZ"«ërVÈX'Ù ×`‚¬´@ÆÈ„íÑÎÆUÄÐ´õ±R8µ|™;ñ=þÌáçx“{Ú"i‘ÿ,c¢O¾eÌ‰ÄÕ<ãqU`lYt0éðùê?>ï¨+7ôH<æN£'*þÅÄß™]<Š!Tœ•bÕböUºb›Û}Ÿ¥aËÚ+˜2—u j\øö¶²ÍÄH`ìÜŒ{0 ›“°ÑæD‘³wc¹wJžáæ °A©Ð	¿+"÷'¯1|8ùàbOÑ%29«jå+[J}|Ø $jË	”|M‚’Ã­f¦QP]º{tuKÌ
¦ã4ªÒ5¢IÇY7® _=b
w!üÙÔ:ªžÁõt7ž”‘ßãï(„‚,k²ù¯^v­U<U^ÚtôjDW<¤ÒWÕdv†ô1•:¤8{¡WyóŠÒÔ^æ«Io³'ËÖÖ™w?M"]Ì'³.zn`<6~5Ë¯ìã(PÈ¯éàÊæL’#SR42¿‹aÝ¡úƒ(f–h¶9R)³ÀœskQ,E‡„îØ@¢÷8#È }4)’Œt†(Zy{ï©¬0éF¥y°Ÿµ!:ŠmÈcÖ“Ûöð;8ž±‡)Oöê‚Ü÷Aî•A<|RbœxoOp”S@Œä"¬K
ÄY<89š†cƒŽ´Ÿø…ogŸÑ÷¦˜´xåëÊÈAg¨ño•2MWôJ’‹Hf<q
K‘áÕ¯_ãÝl©¿¨–âª™”ÿO=¿w‚´‹lý¼kí/NŽŽ1¬ÑŽ‰JÏqí¡¹—×™ü¦¢ûGnEw(ü÷:€”ô­$Ø¯dÍ^À|aïB	«’'³»{Gñ€qoaÞã±ˆ~*V&üÄíº±µ†‹öHBû0Œ`´€éÎç¬ÀwÑá4Ì;]Ú‘­… ×ÌÕÄµ*kÙµØN‰t£nñkôVck©l[(¿˜d“\¢³ )~ÌF ‰š*ÞW¦LCÇˆ$Ò¨Ä¸Š4Ñ[¾%Cò%ÓævW¬X^jœðìõøÞÀ³Çã}Ù½§6œU0ÁlîHpÂ¬cÇõ\†2}™	¿ñU Cf@‹f@t›Ê›üÑ{•
ûØÂ9Óâ9ƒ"‚s×
gÔN½
c^Ò4óû¨_ÒWï#¿ŠFfg&“6¨h–Â¹ÿäU0r0wHg´U6˜¦žïòQ¿JÃò¾º,ýQ^%æ%-ÌŸ<ÐÌKû*¼Úæ µhÍáØ'@ñŠÜÉ¢Wwæ–ÆƒŒÖç+ÏfÁý,ÃLüöÜƒYÛæY‹f=¹»Š0£óòLUˆ§qºÒïŽT-Zé‚xØ«’1©ÓÕÎ/L­ßµ88ÄÔ·XCiÃÓ-ñ.žK‰ä ¥áí’3QõPõ®Ó+þpÄ=Ýc5f&WòŽÏO1ç)R€˜VC… 1J­z–±æHÄ[3ÔÝœb°Øïm¼ Ÿ^uN0ðÝdÀpAX•¹ñfíº e¸ Eÿ©ÄO®v4oó&qÅÄe6„ß‰ÞDV:~å_†ãÂý ùËç-„ÏŽJŸ'ò…X2ïŸZÌzQÈ&$'ñyr»ƒ?·fºáFd:‹Jn4•êvZ,‡Þ•RGd¿õisúÅhÃšõ Š¡`úª;†±a•Pt•˜I×“bîî›Àx©‚â¢µ™äÚ"lñîÈ ßb¤\Œâª¹8%ýAÑëÎ(¢ÚÍ˜Û¦Ê;,1’Ù1c½ÝI¿ãp£|ÔJ J,1Á@NU÷DA®%JeÑAFè+·_0¢™åÃA—Ã<Fò¸ˆë@EruáÝ*0æÉpPØŒGã›Ñ%Gb–ò0*Œ…ÈKà¼hü¡S¸).ñ™*Aãn‘žÈ¾°ÖcT	¼K‘YŽLéì…U>D¾†ýO~ÑShéÃf‰™‡8h1ÅUg5ªbîÁT–6Õ¥<Á_üõÍÙ‹¾¹ŽîÒÕíTÆ¹61ÉP¾ ™qÊôo IWxY°ýóOÃÎ3†•:¾Üae»BöæŸ™ò¿ì?zü”½ÿ±_a»O|@Å-žÆÁO{UŒøRîTn­ö,vi´¸»W<=Ý3áiµÝ¾ý	Ã­~K	þÒ^Ífñq—–‹RÏÝ¾¯Ð ¼Â3ÿ…½+|—I,^žžcH•ùçuPüÜ¬(h{Nï½€ßNCçLTiÂj@6®äÔÌjM†ÛŸ©ÞNÃ
©NùÐí{Âk?¨cõ ÑO¦¼Q5à)ª1ã3WcæÕp..JM»,JMÛ‹RÓÞ¸è:Æ³7ÖB[R¶cà<g]ÎT¨Æ›˜€‡ÛêÍÑÙÙÑÏ)¡iß+3¾¬	ÞL»_0Äb1ÄÎp"w¬eÊ4ímHüÂÿ{¸-U+ô†›¡T¿ÝÏMÜ@é/m¢ÛVŽ¿ý[,Hû°×•ßó‘-ÃÞŒz™¢k,Âåw,;;üyZßc‡s6yi¢Æc;ûŸñxFˆz1Ã{döaÙ5öàiÂ¯LMKžE2Ìcb—Ãkã¢Ÿ* {ÁgŒ3cñ¿*F:¡³ÜZnAî½¶¼BNï”ÙØrâ›[€S;õÔä[ƒ¸Ò›L7™¿å•chb‘„‚h°Ä`“B“ƒ!åŠže#J?6¹Á€Ðžb„L:çªrY<oñFy¶öÉæ&Ùâ<¶ÚÝŠì…¢‹{óø°…†µn¿O'œ+…Ù;´ÈJ1: ÑÈvØ$šµ|†?˜ØÁL±CÉe¨ŒEíf*’l5Eþ¸xQ«fljˆ
]Ý…8f7êREÀ‹K²Þ–`¹÷ŒÄ‡ó„Í™l¨lÚ0±	ìÜ§eÀ±,Zo0¼œÑÝ*:Š`,qìgž¹½@NhDòÏ Š¹C…êÔNVs 
a†Ð(„©¤HªVQ
€¬ŒÔ¨+TLÕAm´7µ‚}sã.¸jWù“úµlèÕêšXÃ‚ò†ÅK¾Él²Èû(1NxþÎ)qÀ|ÄD m?f‘³½ÿ„Ël/Ãƒ+Á°± jÊ%Ð¤|	ÈlåÊìj@XxvÕþ¥½×~ÏêsžàXKË†Ø©á7Ý¢Æ‘
é«¶‡~YÁ÷ö„\ÌHtçàîÂn¸|
žg®	"—ƒiÉg@ê3ÑËÿ:
>œ“C¿êŽ$Ï¶Õ„v"Œ2êò9RF=aä¿*YxB%ûLDQ×!™Hªè¶úLDjøŸGÁ÷‘ªÞ¯¼‹ÉtZ]w€ìC‰ú Q©>°v`$vè %r*°ƒ.çô+©kgY¤  $¾¥µ1 «Œ 1ë“¹Ø«;_„U†WSN\ÕyÜpÏáoÒÁàS‚p—Á' ¿“@f	 o} 3dVÃI8ÎhA¿‚0g_Kà8:œÙ› ¼&„ü®á—À@¬F
ü(ÃAà8Ž,´ðúYÃË‚AŒ4#‹Âh‰<Q^y8Œ£Ðñ$¼Mì°°ƒù	‚è×¸ì wƒ	 þ
ã;ó9ŸXP?(‡š‘ŒÿÜ¼«†ž	ÅÐÙ¼iW|¶f%S…:ÉóÈ ÊˆÇÌN×Ñ™5bTdò¼{µçµé^ûB¹ßx»~ã®Ÿƒ¤:Í¶ÜN#Ôv¥] Äw˜±\N=6F»!e‘YBšg´,>šÝúcÄ{ˆ9Xæ„Ó1^ŠŽ±¿DeúåØåíí¤ò8IüŽ/zxó÷½v™¼!8ñœÿ§Ô‘åëÑj7ÞÄŸ´ÌxÃ‹F|U,z1Úùd†<[¸Í‚ -·kµÜ.kù^,el\ë‰­ÐG!Çv;®5¡§u¼³fN|.[ó>ìß[-¹üêbuR9>_:Åè>Í²òÊ³…Kw|€æí-¢4»·wE!gm.éXQc¹yM.·²>UîÕð¦¸Þ .ýsÖÒRö™|Þå‡ Éûppæ,•‡6™ñdüq‚)	‡9Tïº»Ùåâaîph´.&°Þ‹kÔçWœ¯<ç~fŸºÐî0‚vL¿?Œ1„:Œ€ð9qR©šÓ<»Ë;|—ÝKûŒÕT2NÆaœ nªNeÌÃ¾ÞkªKKïweýþãJçbX^••~¡uö%³ù=énÆÛ”n³'Áæü±ÓíQ›nMo.ç]LÐŽíå³¬5FÕ¿äï2sífo0k—t…AaoÏaqÊûÀP’;ÚN†	þ>\g#8Ó¡ÞS8~é,ÿ0(æÖ«M2€l…ÉkiÞ¢BÙ»— Šé-•Ç/;Sa?€R’""Àû$»ÕUç_¤•¼¹ÇMg¿æ_ØŒ’·òÑtî!ßÂ
3W2úèr2Öð7q[¿‡xºÇ©z|Ò˜yäCçÎ”sÉU<˜°‘†R^z3_¹H­ºGjvãi¦*”‹„¼Uå8G|íið)ª:õª*¥š®:õª²þcæ«_\4ä™m–¤FäSU­êŠ>¸ªøºå
]oŒ>Ø÷ôôÇ!VÃÅ’½Fêp*§óòÕ—õF¡ÏÍb3-Í¬pd²›}Þ‚¾ßÍ-o—pË‹e7õzj_¯MÀñÎØÚ‚NbÓÞ¼Ï½>¹Žä¤XŸ D„0gî¹3i7‚ÖÌ>LÌ9?Ë§C<{u‚‡¯‹2ÞDñ\=É›8†Dq)äÜ ¤–èL›3ó`.:Î¡'ÑqÎ½›™ibÎtÏW{:ŸRÎNŠ^'R„<®gÄ!MÝYCY˜\¬wÀŒ}Î »gŸépã€3ÀFÝ#µú;eÆ^Õ_-^ÕqŠ@¨CÙ]ÝÅî<Ç§ *ÑKUµ}pãÓ¬ÀæY^êßa¢‡JV€ÊiV€Gh9Í¹"ux,çñ4›nÁ{˜mý˜³G¸5áín¾ßšùoˆù°gîJÜ‡©}·ìÇúùŽaÞ-6©ä8ã|Fâ=•ŽÂIþ¢çd&Cgš:½b¹Ih²´+’ý›Ä4é«#0hAÕSp³ëÉ°_dã‰e‚<n‡®ÖYÜ€U”Æ{L’A(‚ð‘ÍÂ/CNø;æxë´%‰üê*ïÍ-ÎQ@à« 'Ÿ{Ã›‚ÂñNÎ½:’˜¨£6LÑx^Ä]ÃìœÓ¹Ê¡>(Š› ÚæQ‡v%a{Ì‡|wønÔ*‘Q²Oëã–BÅ	6“PœÜYÆª[°I·W{`ç“jü Ù¤áj»P{Ð2¬ÅzCÖcxKÖƒÖú?Oía–¡›}«pëf1øx]‘Ã ÊwË`Èq½~>cŠZ›d3°}ßÊpÎ†¾ #¦„‰™²°Þlp‰G*#òÏŽn§ Èä†M¯cL“«”ÄÙDHp}6Ïºó×Þ}Ñ6ÃYæ}I¦ÙG¦ Her3êû·i(Q¨MVÊ(ûO¿à›Bû	æ€[.Aó,¥¶B/O!ÄCþ‹ó
Zæï4µ:WC¼™Aÿ_xìïdË&°”·Ði{¾Coð7û›Ã
žÞÌ;Ö“<‘Hg> ÛSÞÚýÂw÷E'î1þn‰V6‘ÿæÎÞ`<Ogëª_´ß'>6tØwŽuÙ^ú…þÁ³«û
ÚeÒ´œé×S×£|ñžo—àåf4Ý8ãÀ°x¶?ÏèpíÎóŽ×‹fÔOëÉa³Î–¡C½›¶¾?}}töó¿ó¢;€ÛØoœç…~cÛ½Ïí½½=ŒÓ´¿mnË~ç}ËZ‡ÖPŠü);ªÐºç,‘®Ü7x¯(zi@$IÅÃí¼ãE)A(mb­”¸f|Ìä\¬LiÓ—šT‚Èž­ŸäÊ°Í3e²šÍ _a	.¢ÂžóM°[ÄexÜÖ}Y´Ž!ÒE9 ÝËhE¼Uu.ÃZ-àéhÜ­N\HÐWqeIøp?<-ò~ç)n2®ãoÌaÁqÁð	iÝ°w×ÌwÌh‚¿‰ûJ§qhšb»ó˜e‘âMÀòn;{˜áŠÅEû´åÕ¹IUÂ—H’ŠtéäO×Lˆ½œL{“~nLa)w²gd[”/S,©Î›ž ’%È3•rð
Õ<G’hÆË?ÈôÙ“§>f½Qv€äýœÏdíìÏ6‹Oö~þõŒ~þ?ÏNŽ.¤â‹?ÏÎ;§gïÎÏà3üú+ýÂW9{+¯àý8{sñã³Dk¼Çiâ@IÄkÌªXŒ>Œæ
m¹%Î1YLž]ü˜˜L[º¼jÈ’e×7ò€?,‰ •†æIdî!ºšˆŠ%Ý£;îÕWÞÑõ3}Y3ªHG·è/²ãÈTƒCi¢ÃÆ'5ªeUËjÒÇçÔÓë–€ÆBöwª €´ƒÜ¼¹>¼à.;¾šøgÝù}­âÐÞ×|§þqNœ`vLz€<²E}/uåOMŽ²7¿Ä——«.=/¬;2äóCbè˜dÍ!‚Ÿ`|ò8ÔÀšÂ™oe$â©¨æËÆ3÷°âËâo[§Ù¯c’O(Kž~=Êú¨ó·-Ú|€ÓB9s­Üêe¸-75KÚà^yÃ½V1ÑYÞÃ2îÉÔ²²¡Sýv!Ô—ç^r½ÆhÞ}”ë‰pÖ‡õ9»;”ºè¶ ³œ„«¢ ×Žìn†Å½òF«"L;'s×œM=õ*Šõ~›Ðî+Gœ¯Š	o/§„×³Õ3Ž¡z£Ã—±"äó€&0õjo8*}ÕÅï•ÓÓÁº‰èô5ŽnóÏú‡—Ô—9}óŸ}2“Òûú‹äMtæ½Zw,xNL‹à+BïÃ×0ô>¼
`4=%Ð«°_ê£yµî ù¿«èöVŠn»4È‚m.ÕÁÚãï—_ao¯ûSÔçþj\h/ÏsIªë§b_ˆw‰ºi“Þñ„„Ç»%ì¬§-àkÐ ¾
gÌ¾´`§÷ç§E)ç€þØR]È¹àƒ°ÆZùª?Ê«Ô4R!4÷ôò;B¯’:TÔ‰ˆÄzß\Yõe•êqI-«V³*=«	ïàW¶›Ëƒ@ˆVÇr¼	-i<`¬•§ñ¯ûž|ÿîüçºIv¿*v]r]e†/öâã/&zÜoë¸Æ–36¬ûÉðÞÅ—]—rÛ*V¹\7ÃÓ=E~iµèÇ{
ZæªIB>_fìÎ]j`5(dºÎ‡Óf0œà[C¤þj±û”Žy$I™•2çüâÅék:€_¿Éžâã›wò¬Ö«¦±š·Ÿ=û—K<²|:{b¸<Øö•&Ry¦:_°“}õ9NÉ+Éqkæ'W;\€¤‡X@Æ	Þ$‰xÛžRd[h?~æfºJéMì÷¥ïgôf^Œ„;¤î³Óºi=åYj-Ó§B–çcð#)Ç$¦•!fÖ@ÎË²m÷Ç^7’f¶[£æ•ËÄâI:hnÌî3±ÆsA¦ÞJÄõ¶6>jô^ÃWŒ6›V‰ºH?l£z˜ÐÃêcµˆÒJØÃÔÀ¥ËâŽt˜±}`TœÜnó«á°ÏêÇm»€4p{>ßkÝñPÂÞ~û0ûK>·FºIÓ×míf¯'s<b0ƒC‘u%Ög¦b}îf¿Å @FcÝlê&¿Ae]¤§ne(åÛéÄhHˆ½›¢é–psôà–Å_#…2¡¢Á®bÄLs®Q"Ý8ÔP9nÍXüÉ?RfB.GÒjt .—í¨¡ma¼ÆK³1VhÊê0ò´¨ýôâGó*i“ÒM-VNID6ø$ÚQ$ÉÚI•Úd§õÒ'ñfL¶J£äQºMB¤ÛgDbÂÂ*6÷”íTð‘N…ƒE“†íRÛ”5`,µUy]ØV“ZÅ;V¤uþG
ëDk5‚Jc7Òë4^¨%´aŒú#cHlfÛjM¯;C•i¥éXX¯6ÞÇo’	S|"¶ÊþfÀZ²Ï’ƒ}eå$
šKÃ-¤§€'ƒñôf¾%BY²Ì®°`CyOu39G£¾tßíx%gÃ-ûŽx´BØ®!nO £Á0n7¢‰`œ›¨‰ÿƒmxoŸXis¨!S…3«?PE“š©Ä6ð¸ÒžWÊpß¶Ô¡€æ÷>r‡eå½WÖn+RvëíÙéçÇ‡[T¡‰væÛôk:ŸÁO³Ê5²«>,†’ ‚Ñ¿j 	íC\ÏŸpÏù½W”Ó¹ÕjÍ¨¤½SÂ·,¢±R¸†å)´vEyÖìzáÍ¾±q5¨Ë•éÊõ(êT¹
ž¤ú?5Aqoõ,ÊŠ¬ QÎúf©ÝK®ÒÉT²|Øƒ>™"PR](Ý*®LñWÏmSÙå¤½Ý×žkJ™.Í{ßêÉ5bû.FªîíÜß>à¥t pÕï~i>ÐþIXˆ\Ò{:a¿8½iû ŒS“«nuD¢GVÝè–‘'‡ÃáMvS–Ëz]…^g±•|Yu+‚=¼ZƒÉRw!ùêYµÒý	 -v&§J~! Lw®³‹ç¨&¯`:Å¿š<Ç#ÞMIRQbNûÁ‚Í=«ÁÂ¬Ø³ˆeYG“H`ë.ÿåŽñ6FYo¥OÅŸÒÚŠã}*é†¨„¡„ÞV ~Z¡"C­ ùcB9ç«IuÄOS¿_1ÛÍhÚÝh$²cnÁz+õƒ¤š¨ 17X>z9_Xu¥Õˆ?Ë¤#85ð¦PNæ‚„ô‹þ¤YlÓÒþ (£Á°K7T¤¶sê´¶%!Œ½üÚ2¦g®ÙŽouûX{£Ä›~©¤œ»xìÑ–F’‚L‹«.l÷æyP F}XFÛ»ÕÂÎ’Ã1¦È[LNw{Ä!ÁÍ(dÓ]eÊx¨>êRv•¨Ûf«C§ùõ:ë#Tä‚û,vf]àÄZßKvñ•ëÔ¸ýD}®I|EöÈQ[Š:LÉÌ¦\r+¡ÇaZ{ÝÞµ"ì7*ÉrQÿƒ-
ˆ	¼î¦û¬ÃS&cž%¼1ŠÛß„Kä²Î†±Ÿ#4¯ü$S.ŽiOÈÇÇ”#ãf=WvÛ‹œ#ÄÈo0í^˜ô&¬r
Ü°KÞúýñ6áŠ·ï§µ{>ÉÖ³n7¶õø÷­ËƒmNuåÞpç+yÃ­Ñ×l“A ª1øaüž=.þÜoV¶iFx®ÅOÏòÉ-•ÚN“¬®±1îéKÝ°@=¤6=ú–ÇUÍ¥·0XÞÚ^¹)ûXUè“µlx:—«g7¥S­Rï.Ö¸®í0Ÿòõã­pùÍ‡X©á|mQUŠ¼HïãæÃÓ3É)è‰ÎkÌ2ÒtÜä¦~qi-·­¿´ðÊ_±‹áPÂS1ù'V¥t™Ï?å EžK5øåàßYÞËAÀ4i-ŒÐià[`•öàPc®K²ÝV-anv—=ÃV´UævÞÍŽÒp6ºª\M0pmÖuû¹sOÀÚ[‰ãðš§Q†Ð”¡˜-¬ïÁK žèÚa—¢×’+‚dqÎÇ Øñv³ó·Ç­ÃíŠ€k¬ûÅImG—•—Å¢îç=iŒ‹âÊ>@S'oÓbêju]0ÛÛÆfñ¯œ!JbÔ  ¿¡¿ž-Ë‡pc0Þµ%`´?[îØ»³äÝ0b9û«k¾¶À÷Ÿ‚šH]Ó
?øAµ	OœtÔ5Ä	TMx
úÙn¥¯0t‡žxFÇÂ¿”E¹³Ø/–Ó¶n"‰È!d‘EClÍ2æØbw¬#CØ”"îÌÖó¤Ìë(Å4ëíÁ´€ç
î~Kr6•<ŒYvNš•¸g9x &D.÷±í}6ï‰·ží4uYfÑ=ßŠk×yOÌŠŒË­ùHô	Éò‡áIj˜;ÍPKýõ³'žs1(ÑÑw,œƒÇ²¨%*(Ïß~ÓÎt·gµÃ?ísç­ªÖHÊ«O·í–ñ€ãÐ(üõ¶L9yƒˆ!Z‚•ºgc¤Ôd¦NÇù‰"Ò_âÙ>ÌQ†ƒüKv3†¡ž 3Ú½æˆ7EÌ3 g :G	 •áPªyÿÛÆà*N^ØŸpäX
WAÜ	]öÚò•ø¦´áð"‘ÜqÚûÖáU÷ó`t3Ê^Û(s/(Ê\óÕëÝVÊõÔM§"ÓñÈDœÝª€æŽ8ÈÁ<6.~~{²èïG9Fïª!hÉÏ“–Ý`ðá)æ9šŒ!HçU“@}/(0à…bî–¸¯3Jð’¯æÙË=áÈd0(ó£iqËý|¸ö™†<»Ìa~Ýy†CK¶…êÈz¾7.¬	Üòñ}PlefÍ’|žËàä°Ü^×j0ºr²Çâ‹t¾U¸>/Û;b¢8» L¯bôÜvÏÏ‘ûÖÈþÕVäKVu?ºâŒ
KQ€×ê»”âNß‹4Ñ×¹á1à %8³­ê4ÎþuÝn"ã4ÍéÌ8‰Çgõû3“ËfÃ _«Ÿ¶, |0µå±:š`i0Át,Áµ³ƒ²ˆòÍ…TêÙ®»1<”5§ÕâÇíìºK[Ù¥˜k—K,[Š‰–GGø÷ã­7{ìßÞ1;¾¶²øÎJZ·æŸÎw¬g3)lÍžb×’ÛKdž{{[7øU¤â-¸^5WÀ¸,x§JK%c´æ0w€ú/Ht¿z!î˜‡«bá BµoT†ymt5Ý 2ìÇ	¼*&WóO¨W"žõci>{å"G™fæ&ž?fèu2îßÀžÙË³¿Ì&7Ó‚´\0€ýž“ÒÓcqsY|)æù9³| -ÍL€¨"â¥VÊðšs$bŒ\?Š›)DZ4aŒg†y“/†ýÔþÂ¤bUAOvÞ,ÇÜ±!?dÝ!Hqh¸Žxp¤²ØF1‰‡DCX’ä„‚þ\0/ŒeŒ ôVvm‘ö/bÔ ƒßð^æ]E`˜^Æê`Ÿ‚zh–&Þšù ‰V¤"ƒÃH¼šÜ‹|p?n?3ÿxÏ)åŸ4ì;þÎ—ãóúŸÚmïi!og!#Gf ¶¼•÷_Yøõ²-0·ãüvH…ä8óž8ûð;‚“	ÅlS8\±º{
¸ÚMFnÜrKØ¥`‹Í\MT£éÃÕnTµ}ÇfÙIvgz/·è•©¼4åÀÄ_©p@ÜØ[ŽÞŠ1i×â¼`-LÂÄ*—Ü¤ˆ&d0êø½gf¦Róv_½Ý_•xÀ?cfÀ?c^ÀSö¤,£ê)m?ÒÏŸ#ïG
’7œì„É‘²mz€Ö`w
7¬Aa‡ž{”Ry,× ÙK
-ñuøl‘ÊÎnÚ.‚ä"èVš«þ`fµ‹›LªÐÕQ4`÷ žyŽ9
ô‘Ä
åÊì…ÝˆStêäó0ž£LòÈÉU¡õ@sÕ›³W$³”pþ‰f"ÚÂâOZ«YƒéËè™Ó¦¬:±q²»@ŸgÙ·]™Ï°CœžuÎ/:gÇ?½y?Ž.ÞSänòúÆ˜Ü¿Q¸¬.¥êË+Ìa6ìaõÐ>bg´!N=øXÞÒmòVy(°ŸU[xG±PÁ:8Š<[i‰Z”ˆÀ,ˆÑÒTT² RZ?¡{	ƒ£•F£çà‘Hà„P&†µ@(o,|­¡L4o!úŸüï-Xe“Š(¦½aà=<4¤ÙÐ2³akçëM]žàuýœ ç¦—„á·çÙO'gß¿9?yæ
/ÊÖP|Ì{×a|£&Ý1+ýäøâô'ø…:ïÎé‹“×§?üümº.­’Teø{‚MõÎ‹7oOÎ:oÎŽ^!¨ ®Îñ{62’¼¼÷þë1™/¡ûä".76F)³çÎ {’sáSãJ÷Â”°ÌFí(L•rš_œ½:_‘dR{EŠìûôªßoëK4ÕÞBñô÷WmòìäüÍ»³ãjTHY¾ëõs:â‹uºB¤¸¾–Ówz‘”ð¥†ý2£¾­Y$ê¡„ !°{¨„àc;I~`›W–\Ò¶¾;3<.Ágž4d%¡ÀLoÏ_óí–úÓR©É'_…
ÕDá ©ŽguJz4aŽ8fM•ÌÚµug¹ÒÊÙ…
ô5ý	j+g“R
°®³éè’®ÚIðH,'HØj‹ìö…Å¼cP.kúõP²±BM,ÐDÒ`¤o~
°5ÉGÒËE/R(B*¡À†÷þäÓxÃ×-1ÚÿKiÊò£‡#_³cÿ§O4Â?þûäjTS; Ö^†(Ø~ºÀ1jUÙ…1M®—Nš;Ãd³“O$ðcò‚Ïyï†¿°ÈèäDƒÁS„vA¡pZt MNúî®ÓDä‰™“«AÇz²òíxh"®Ø|óÃé¶Iïç™ï[ÛC0%Pæ…ÕwŸ÷`—(QP®zÏ_öZï³Ó1,ˆ+”Œ›§¯Ø·VUS~`ŠÂÖOIƒc_Ž¨Áéìúr®›l¿+Ø|{öã÷ÛÁMÉO×9 ØÍu’™ñ¶ƒ½¹Š"š›‹0/zSïGï‰°Íóã·†JáŽÑÇÆd_´&ƒòÙP2H77,JRÓïÞ¾€AêçŸ³çhœe
2Æ`j˜l<·0|¡4NVÊ=­º:å^&ØdÚ¡¶\ƒ~3°—ƒbÎ‰!ÍÚ¶–&]„Vo˜wg¼ì]ïXå1f–F°Qì€ú„r“ÁÕÀª9`¢Ûß4íSa=„Ÿ4Ò‹íW«T °ö7uÎ!½©ý`—±\¶ve¸ˆ8kö•@Ž4¨†½”/¤†YáÑÝC@êèû†ð†*¹5ºë¢·.4ã\C¬—®YAì9¶òÎÔÀ\ÅÎêÒÀð]l8pÔ¾!í-çB]–a½`Àò,°'Ø½—…Îg0êØÔ? 8´Ú^ÐªÝûR¥š…AÃF-hµ $Õ$ XªAslqQ†hµ)¤ÚE8Ëk,´i¥P^ÀâÌ€¼äådöy‰ËÒl!ÆÊkÛìŸÍKZ%+ÊiŸÓ÷ú—“Låüë¹o[Šeõb#ÐÕÍp•¦Ý¢˜_ÏnÊ˜^J×í$EiúRLqÄý
Ëg³üjšH½Ñµ™žQÈmˆô"òï,>’ŸÒ’¶3Ÿ}ÄœÌx¤&s¾±R†ãPŸ~ûÆÞÈáx¤¥Iß¤šnšØ­Y×«Çû* ª.EÝïÚ×'_ÜlŸ¹‘Dáƒ¸ðAiáö^\Þ•o'Š·Ë‹'o—cÞN Þ®Àý0Qü°¼ø£DñGéâ<.fbÔ%“FiÍ<z3¾QÜ'6s…\¹h.ØGdÿ°Ú§Yu5l-– @˜CþÉ7Ø
¾‡©æØw¥%\¯‰ò³G<¥Íz)ŒäŠ‰,Ùˆ'Ë€ö\XêÑcS÷vtÞÍzfC›¡2SU8Fýjx\{µR†V8ØàæeYaC"ãK[’³:.¶EŠw¶ÚeÜ[å‹Í/p_ðž¼§öžÿØöýªí î¡ÿøˆ4ÔäNk¡ƒ+À½ÓÉûæT›¯#ËÂ¾Óâ¡¹Æ>P¬'%~Ð¬µ_]½E~J8@Î I#ÔPâuT1e
M9°GF× šdÚ_G«¡Ÿ¼§öžÿØöýªí î¡ÿøÈ=ºÑjÄ©ûì›«±²F*ž~‡Cçü¡ñKgÉ«kF6þ_8„ÎÛ]9€qÞ`‘ò8F¦/J1§`Íš* 'Â0ŽX¬Ä¥=šÖÌª„>ú ïå)4³ÂDÒW-Ï¬µ>¸÷øº×t35°——™Ë­¹"¸œ`Ré1u9AMöL?­v] ¼- îs°Z4õöMeü üçà)®y k¨š^Íƒ¸f{OM•CU³½·£j¶÷UÛªê#]µíUm'ªª®~ýXWÝ÷ª&ºÚV}ýú?uÕ¯jª¯‡ªê]õÐ«z˜¨úHUý/]õ‘WõQÉv£qOäi}1Ý6…ïé©:	bYþÃ(õáín!'SÉ)EŽÚ wj$S™½ÜqqÚ8	i‰¬"Suõî‘õL|DSÏ&«“ Šòß§Ð±#HSçòÿùêÂät›÷V•¹{Ÿ÷ÚÉtš‚?/+¼o
SPþ¸¬Êyg„K“¾,ç*-˜ÎØ›x$‘ø=çeKärr«!bJ¯–¥M)ÀËØñS‰i0bñ¿tú©ð¬ÄDÖ| Q!ƒÓ}*XÇ`dZ¾×HÍ.zçrPŒ˜1rŽ qÎ	C“T®	êŽPmÒªèôŠ;'§¡Ùd0qXYÖ&Ešr_!«J‹äs6/Sw1q#Ì9±ã[‚n<Šv€Ùz?™t22'IcF2ïò]Ù$\-ž¾Str*Të:Qs,J=âÅ)—”#­ª<#	ôy‚Ä©FÌ1·RÊ·;×Ê bÙs?ñpÊm]Ze” .ZŽ2š<©‘Ñ„m%•ˆÓ
T>ðó{a¢°7kÃô&T)¨mX«g3±»ë-ÒªD0X«XJ™ö^Tº]Qº•Þ¯(Qû ¢ôATú°¢ôaTúQEéG^i‘r:£".m$ ßè“L4Â«´F	†C*z„;¡÷«å·¡<íäã{’ðÌ
®ú…/ZéLa¡Ë	QÁ7””¬ãd—°ÜaôæQàŽÅû©.åIªæƒ:ê¬úÀ]5‘ƒQGmœx„ò#6–Lf…O4õ²„pŽbaE¼àm%ƒ²‡É·„T%cbÊÇj‚.ÎW¢²6Úû|‚³ÁøÏàð ©HqòUabðÓå;ñsÔìÏÙÖþØzšm¾á/Ðlo4m¤à}7&ÕøÖ6”7¯Ÿb¬õqÝeÄ»‰k×K²Øˆh&ÜzS§¤mÇ>Åœ%‘œËxŸ‚Dev,úrúÝ’€uéKY´	HT8‘¦ŒÇ*áª™ƒR¹„ïKÉaÊ†éððóµT±ý¼5•acOd‘Î#ã«1=Œ˜æ1Á2Q0ôS¿)¦VI0¨rUP¨ÄÐAç1ø6Ý‹0ö°óR½0(/ÑK?•èEO{DJ—¦–H{/™.f%Ëº>M6çQÊÁ8ÑÉlÖ2N¼§otß«ÓKqòqÐÍÈSÂ¸Ln>\ï˜1YT§ë°ÒjÖï‹¶íÿ!%än‰AûÖÒPUäø;×“b>þûrîÆVùXNª/°ñô‘Ÿ|à^ÙV¼ÿ‘7­G½|)q:úŠ–[$%Û(»Ù) ¦ã.ÉWMŽ‘Ë›Á°¿äk}‡gm.B:T\œ¿{Ë¬°;Ôé4è<“ÍB=Kõ½(â.…ÿ\²bÚ‹bºB¿]¥òÁ¨5à8"ÝpŒP`ºV§>q8ÉZRÐè4„r@÷“×¢âQÀ‰[< Á„»Ôšv~Í¿¬s ký/B6Xï/~lýøêè¸uüãÑ[Â<ƒæD^àrQ7‡IÛú›=ºA÷ZÀœ®AÅ¾ÌyºÉÎéX ½øt+»Î?wû°ƒŒà5–ïöðÖõ¶sÁ¾Ì­Kÿ`<À(‚”vƒ^Ô"¼3®F/ýÀt´í ‡=öŠ›h€pødUJFåäõ¨ËÁq€8ÙÕÍØzà,AŠ Àù¬;.\ðC®BãÉCD¢"ûÇ£Öþ#`öåáàÉáNv @¯‘ÓLç¸<¯ÿßëêVwÉï$`'Ñaš?¿„_?yÿL–&0þ .ôqÒýÒÞ§÷~Ü½Þé ÿ?Øoî½ÜoÎúà\PÒ®äöÐxh1q ¡jCFí™+H[DP
b¡÷· »Ýù(ü}ì}G¸õ¢«œ_œQ0ah½Y‹^í4øo`þƒæ[ìè†u¬QY°Ú1wÖplp$hgÊþ;màæáCGä®57ã(‰*¬N¸£í:djÖ28i.MÝÆõQîÉ|*®¶´|î‚
ŒB¸z‡šÑÿOÔŒ¨{õ…Wªîî»¶ý»¥†¼÷ÌÕR·EÈ%VOýl¾ÞÇÏFµ\Ú)\„âÄøUŸ/þxÔ„E®³k$ž‰Ìt“•ÈÁÕÖýÚý8|RÙÃ'+öö§5ôã v?VöãñáŠýÀ­õVýÐ÷‚íK?ÆJØ·x¦¹©ìÍ1#z–xiz_«ïnméž¦–—;|#ŸªGÝså¶ïyÜ'¡,	¤Œ½Oü!ÇCª,¯MÇÇÏ
ö´±ã	§„˜a\@"ëÞN6‰¬‡¤ÆüqÀdÐ” ¸’SExÿÍó}%þE¯;¾jªý—Á{dæöö?oáîºãÐ^8	…œ_U|íÏ:Ópå¤súÅõõ›oÞclJïüÞîÉ,dä]î?÷)›¶Ý%¦Mó«¾0Ao–ÑŽ±V¦¯ûrPÉfÌÕì}¢^ŒêñäfØ'.´2×ÂY+£šÌ“k¤$”¤ÇS›Õž>Þ\Åšš¨ðÁNÐ`~ó¤Ø"ø?•ŽÖ2Uê'Öä`ðe% …„ß®Y°ý¸nÉýCWòž±+®çË%õš´¨—°¯?>ìðëfØßÍJ’¬cäÒ?þxÜj?Åõô«â©Ç „µJETºcuwÒ1]é*p›A‰¯¯&%!hÈk ßÕ•‘LÞ~J €Ê¥\=ÅØ’ïÌ~ßtàÝÁ~g^Åì»B8àPÄ @ìeF½D
Àþ.dã¡L~ š)‡òèhö«â®yÙnœ6Ééüß0¤ñ1º²@ ã{ú²½ðVÍCtÍ}À¯;Œ*7÷kØ3ß6Ç‘Y©¥a­-[M\Ü2?^Lâ³E2Ñðzô_K;Û\qÐøìW ðä`„ß­ÀAí½U0NµU!bJe.¾ÚX.oYè.Ÿìõ¼O˜.bpì½,ìw+ãxdêT;Ox0=i¿§–¸*jØ°³“‘'sÉ`ÄDç­E$ÚÊ o~MÆõþOVª«Ù<0EŸƒÀU[¾È'ƒj tUi$ZÏ)ªxˆ›‚—,/—xØë 13j#²ý#SÑ´‡Â¶>qT…÷ÛÙoÐh’HÕ÷˜QôÉ2Uö©
ò?õëPýC3?M‡î	J||vœÅ¨K»$’M½;tbâ/;I})%¸aðœ|–gMZ¸_ÁÜ·#¸“a»
¾x0ë¤ºe›+ãŸž‹»U._¼<§93kôöü¿9æ6ù@M è¦È¸½¢X°X^ÅËdÌ˜÷µ¹L­›Ð"[»…Óæ¦ Ç$ (éRõÜ†L¯]Þ¡cÖþoùY·žIQƒs“~[]zE½Á¸Èg4d§ük2âÖ1!6ˆ/{¦€Tk®Ë4Ô-Pè-«´†_TRÖD¥þZˆùÌ{cÂžÊkárZo3„ú]Z.¬3ßØk0-ë0Ëˆ^OÛEqwË¨½)<^`Å$Ù¤êfÜ´öÛ"ç½ŒµèFKÞ–krˆY£ö½4Ã¤#ž¨®ÖŒ:¾#58þðÕàÒ¬1W5(2YC~ø5¤‡XÃêÎåÝŽ1ú5,°ŽMoßî4ìÏ Þ’v€Zšz¾\ÂÔÅÂêÂ¾Ú‘)±I±Æ×¸Ã‘j<˜ïHÑ/ˆq@wÔO7ûz¢Ià®XGÒòûøüyF×_|zZ7jÊ|“nT7ú‡^4Ð‹RÒëì»çŽ2ÉæêÖù¯ƒéÏºü3ùæIÛDg+`9]þU¯w¯vU[\ÍUƒ ·^çlZ—”)Á*"›;-DË¼ÕYOA»vê{¾qµz¸BÉ°ÿà_ðˆ4Åe³‹îÊ`ý˜©û–UÖ‡U¦Ï!‚ëü~Ía“ù§ˆÓsªò©o”âwÃ%ÕeÕc.Ô´Èœ±÷«7ì%ï–œ-r­Læâ 	ÃÂkÇVBšz£ÙÌ½÷ìœEÌ*¨ÕX®5/+”Rœ/*ëéÎ^Ÿú<Ñýr:
O0ðzMzô»‘ÝÌ!«"/‘ÿåË„Z&‚"`º~…~üÿŒPö/dðÅ«*»€'\E²U$Z%$+3Qþ	B“´¼¬ÝâßH$
`­¾ÂÜÐòãî,2îÎlJhÀK,ia—úÄ>¼‚e&4ÉØ‹õÍ2%Fî:ª‰-Áˆ~õ›´Søm­4Ã'Ë˜Š4†žwÒŠþS(tž}CFR´ieíÿ\·1…­†;Í
¡el,·2müaÅøw°bü!þ-ÿBÑ¯jFÞ©üç‚[¬lŠZÝE×Mæ“éd8ùðeÝ÷MRW›®%Ž»i34fÝñ¯ÂšŸÉÏÉþÔÅû­Û5Ö«ÎZOf“	L¢læ•Æ+åˆAÇ4†µE¢œIóÉcÆÇ|v9)£,p2Á9á»U¥J# ×nqöøu$3?}}Ü¥àcC.}40äƒ	Ö$~:uAÞÅÄs¢ø‹ù ›eSóõeQOªî	î¥’x	—l.k¨¥[œø!“ ÐÇ/O;oÞ¾é¼>zurþöèó9ÿç$8Z(åŽ/Î^ •l€Y'&žº¹çmN3h¥Œ¼‹æ@i5iYÚfF”’öìXóaÓ›QdÝÚvšþ’ÓÔíÂßî/6¤±-»˜ë÷ïyµQ±;esfäp`1CèPDPA[é­yw¥¸3Ç{lIÞðžºL¯•V8DÛÏî¥@Uç -zŽ»8ðÞë_òyörò!{Ûý›lH´‚Ç—ìØæõÖwX‰‹1È6yˆ®÷F—XqÞ›c¨;è é©Þ&?8?Ç.dävïh‰Îá]ÝÒ¾m¾_Çñ°ga'©¨öÔÛ»êÀÛX†ðÂ^8äJ:ô`Åée‡»×šåì<Ñ¤+ï"¼xˆä¾“ùEù º&ÅÓÂ®0jufÙè®66·ŽÝEU• []îï&·»¬ùâx;´QÅ4ã9¾¼ºË@mlÃf[F¿³£ã·§Ùëï¸Èæx¥Y™F³¢7t´ÝQWHR	PF<M¹E©m
§2Ë? fÌB7.0£[92ü³õð¶8+žgðÄ–ƒ{×B(ZßÍ£h}7†WPŠ«•S„–£î`œ&!a¡$¡`„Eî0ÀýˆßGv®óásXðê·fZöD©šÏ‡“^w˜7_wŽ¡Ú¢\ Ây]ÃÀA¸#Ô¹‰VÖ¹ñü¥ýžã)ä4+öœƒ4^\ü¼]‘æ}²?gíì)KÉÿ’¶:¸¶	xœÕ\{wÚÈ’ÿ>E÷8°;‰Çvr— N¼ËÃp²³Yj@ŽX=lçîä»oUuë‰à$ÞŸÝÕÕ¿®îzÒäð¯:ÿYë·\^»Ô¹åSƒ;§ìýU¯Ö<¨×l§fªwŠ‡û¬m/¿:Ælî±²VaÍz³ÉúÜSÙPLmgáVÙ¥¥Ù>üÇZ¾7·÷”µoî;l<W}v®Òžÿmz{ Ù‹·U$ÿ>qƒý×\µfìüá_øžMö‘[_TÔwçìüž>:êl®Þ«V0FÿaXšéëœ»žnØó·‰&Ç°fé6Ý4n“m†åy_—ÜM¶rÇ±RMcax)²©fyf²É·˜&ÙæŽ-QS	±°­ƒy)ÖfÝ#Y¼Ð®6.MfXiBË<”‰wøžafµ#ÛÚDäa{¬ÃÖ–5w{Yã·t®×L{–Œ4šÉU§6}¨ùKNQmË¶¯‚›Î§†ÅY{ÔmMºJ»ßI^]¶"V7É ®´Ú“Ë]åÝuû?ºerÙïŽ”Ëpîw“ÂËÒÉ‡QwüaØëÄè’„ýËÁeÿº¯|ºt†Ÿâdz½HúpÄz°*KûÊú¶eÀÊXÏž±+uÆéä¼Ž”¬pÐþCéJoø€^(½î P¨?6ÙÊáU{Øéª}´Žècw4¾ˆª^¯7âtï¯/;8ÏûÉè/4^]Oõ)ŠÂ@k8^ÊÌ7ôÏIêö†ýO8þÞ¬²úãk_µ:¾žhUìÐÅ‡c|}¥áëï¢ã5uá+…¯ú1u¼<Á/¹lÂÑ/‹ßÎ¢}„sÐU„Ÿ?.'°úhE“Ñe¿PhÆŒ»£ÝNá¨s|Íƒ…©èô­ïqE)—e©j_¸®(•
s]]1Å~áºq¿8µ¸P”GaÊUÏw¸‚2òÝ3ì1
7S8î½ÞÀÙÕ]&o¼*¨šgÜsåÖ‡=ÕÙ9›oî€%³MýLŽ8Žf•ô!‰¢†|_åPÝ†T¯s¨´ê$‡J©~ÏXI UÍ¶¦Æ,$m­0ÅoXÊƒaéöC°ÜvRÈÍÏõÇÆÑM´	ìó5SÔlßõùøþ“›uVÃãvÂ}uœF’‡Í^,qäQ0ò•ùî"c¡®ºpDÂs”Ø;¯s$DÓ)`þ=WŽêœ$W~„+­¼ÓJ¬\(pÞÊëG£™X»˜¿öÆ‘{’X½›»úÆïrhëuÆÐõëo´R8N	 ÑŠI 8êüÖŸ¡â* è³è·Ô[“üÚõøüu}HßŒ‹)¢O@‰³™/='ÜngÉÝ
p‡<»‘ "â„¤$e'eŠ^¢¨:1Qu	Q2ðFÊ=w\Ã¶BFÝØ”!ùè¬ß„t4!ié8@Ã]O¸aûJ¹ Ñîu[#åª}	>|8uÛ“Ö»^WéŽFÃ´\&à¡ÀŸ ‹ALÌ X@·ŒÇQñ¾U™6W¶ï¹pÊ§•"˜giÜ½›-&@riMí³b!6Hùà/T«*ž.t`ðùÖS”ÄDXðÃ!¸ñzÀeáÊV¶ÇD{±0[P—S.‹UËéö+/â3¾ˆ Up`bæ®2×ø·§ø\©²ÒÞµ½EmOg{N÷ú§{ãRz|Á¥pkZ«Ç1îÁ^ýÈÔÙûþÈ©QB¦ùNËb€ø[B¸+)ÄK×Ž{lA„®še)K®ß³}xÿVËÎužrù@ §Ò®„ÎÏæ	H¹€Uv'—6Š•„)—Uª¥"¦C¢‚ ©¬kZ%D0€AÚayŽmšÜ„§Œí¹@Re€»öÖ‚ I}!¼8“gYõÇ½GdQ,È†`Yµ·É É¹E¦œ½#ÓËpÓœ4gØZpm	Þ›¢SH–B ³Šg+ÚÒ/G2¢…Êf`“Àu?+°(bÈ†¡j­ì
Bt× ÌˆÖ·…‹š~klBõîùQÝnFÕ~~TÚfTçG¥¯CÃ2þ‚}¢Ø2Õºän[L«l>°1zsvÞ<&®¤Úf¾XTšp,LÿwO¸>`KMØÁP…l÷DÄ3¬KqXâ@l1áºx®R‰û•Ã¶Ãßˆ«zN÷'ÇðøJk‡«¦ik †CXß‚I·4…$¿lWc;ÃŽàý·ß*˜EæœK[ç§Þlróµ¾ú $ˆÌˆ=¯="íb/X¹ÁÎÏÑëVžw
æ[´WBT»ÊJJ§-‚ä”´²eÅr„ÉÒ&—dOÆÍg¬=ÜTž>žjßÃ k7R»J®/3›à¸%dGr‚ðvå!Ov9–h%	Ì–ÞŽ²ä·#‹ï‘` §;	Ó™:oÈZð½|ïoÞ¾cÊÊ˜Fn´ãQúÈïn*ìÍVkT(Ï3yƒÃ(p"{T(pÓåböB,¡zŠªçãÈžp!¥d7(<ýŸÔú]„/]ÖW½Ï®šl¯÷kÇo«÷k<éÔJÁ=MïsfNDðŠŸÃa[ÅÏañ="üùŠ¿¶îö¬Š¿ÅRü¬bÄ½mè«Õˆ;×¶Ê;•$1TìÛ;ÏûŽm{g™•ˆ°ü³¡2!÷í%w ­m}>¢ï>J3ÂºKâ¥oTqI†€hàO™¢ž@EÕuå^5}®ø0kG«d‰‚”1¯±™aF€¸n“âv«:<	L”5þX©šÃÖ cµˆª5¹j>¤XýÆOÅòîÇb¹ý,í‹Eû,‹EßKOµ²Š®¼ŠB>ª5µ„€­¤üÂ¦<¥ °yÖõ…†œY7T6Ïº®Ú3g~a!7NÈò5ÂæàÐ‚x\ë
a_”ðó‹[F9"pª,rbw7¢¤OAÕ®™<9÷ìéäÅžÐâÄÜ[_?E¨k“‡Ÿ)Ösû»›¿Ÿ\sr‹Ÿ+Ù³þ¿£ls“Žç¬4dL\ŠËÞ$V´~zÝá	°²ò“ÿ÷ÇaSýãùMØÚ2ÅßJÍ6—Gžß„åÔ/þŽ²ý¹&l‡šÉ³™°Ý*(ÿ§&ŒF‰jK‚tpÝëÅ¿Ã¾§!ú©Ãœ+é%3´¢xƒ×…²/’È»;x\õâe›5Y˜qè,Öå§é?Õgâ®ÌQÅˆÅÐéÜúÞÒ÷1}Y¢@z8jHzÎêâðM¥\OçŽg‚®+±S¼Õ¯†E,™àÇ#Yç
Š\ÀOÊAŠ}aX–W~o…íçÜþ€ýB%®m`‰àA^Ù™í”é&z%ŽŽdGhÁ.÷Ê8E•ÕÃI[¡£z,Œ¶·Ÿî¥‹¥ÉË°ÙÊTÇ78ú™÷–)/^Ë¾ÊhÕ8	Ê V¢-–rÇ`Ýx$K•ÊªHP;Jƒý zvºç–÷+²¦] ¨¢t†*,ÎAm›ª íThÆe…3Óßç"8°êÕÉŠ8ŒEº,§Í¹öS-†ÊÁä…;ºe']hHÒ—òØ/oÖÜé–v2C…5çUâdg #8¹r?él
3Û³ñ„ß“¹¼(Ö }¹cL¿2¼&'ÑRWô¥Ük¼Š¹±úøUsã—œ!Ù+Ç‘’ß‘|7*ÆµõÅ²,Í°XüRN
`£îã ÄÈé”ÕÃqIWFkŒ\Yß½GPÐÄºÁK^ßÖ¬éO+	Ò_5”5òŽ¡ZJ8‰ôéIé°0Zx0àdµ€4|ì`8ê·z§H¹î^"y°àOLo!ùrðø÷ñpÍ¾KX3€}c¡ŸÏ2&é“DwX`iÞƒDæ`êØtµSîD_wÀâ:Îr0³´¾WI÷I?—!'HËØ¢:3-p˜ûðá¾Ü¿Äßý¨hž¶Ð	dÐ!~ÕÃöÅ;ùW9#
%9…`/ø"9xÅ¯ãÈû¶b1yS4B*Òý€ÅeZÁSç®Gª4â`¨9¤Æi†–e{P:C‰DÄ‘B*YÜ¢#(¾â‰Ç¸«ÄÚt&~øR8HP#DqLÑËÐÀáÕDiÞËöÒs+r6^ô'å’]£Aù~µ­²À>ÉW@d\PÓ)ý%<`Urí:åŠœZ¬u©:.W@ä
„‘VùéO|ÏQ¶cznh Û‹"G$ ‚[:¸±\oŠÑfmºP¿éB]GÌ¼9ÛæªÜ·àžXä™1¼ÐLÛ%$ùŠE¿1S¦Šø™"c¶ëùEÙJËÖÍ·¾ÅÏ>·Mei.•©èžÎc1Å»Ø&¢hiV©Ï™ÄÆi´ô%³-ó+båÑ°_A­!ÊfœR\xóæŽíÏæ’úÓ$F}§Ðy$2$ÐùTõM4|¡‘}ó(\îÜs½”Þ¦ÌåÂ±[—G?48j2Ë5"Ãÿ	ÂÚÅ“ËM’“àp JÓ G3¦éa,+¿guØ1—Ñ‹T}|V0N.¼	Âel"]<˜êhŽG¿ÔjPóTà<@Àø9 ~ ðð3¼ÑGMh4°¡N}ðÃÑG´wŠÉ­DvcþF˜|‚bbÓÇ~Wét/Z×½‰r9lOzôeêðzB„B8ö…xÌ%ØÂ(¿ •‰	P%ïMtAUì)ëSÎÞñ¹zo`,"GCZòúþcE¾³òž‹™J%yßdÄþÉŽÁ84«b2hlÔ¡õ$hˆQ=71Ž4÷<F´AŸS‘#QÆÁMŒûI€ï»`·»­Éõ¨;VÆÝž2¾¾ºŽ&ÝN%J*æöC€Að
Xž%BŒ@TmÛ7u0æ”8³¤ˆ({KK"u‰‚Îí:äþ(BnUvkÛ&sÕ{QSÒ\£'¤RKç;FYÓX’¤èšuàðß¾lØµÚqŒë/—¶ã‰´BœQ4¹xD#ÎÂ9½ˆÂ=ÅýÅ~‰ue¦P2ê?e›àÄLmßÒãùR¸"–,¦L‰»)a™¦„eZ–4$,fGÈp`©möù9;ª‡ÍM˜Ü<œOî¡0/ÐI%ô’¥N¢­Ú¶¥Íay&Ç]krèmŒÇôŽ2zìi[@u–¢RêˆŸw‡½Ã«Þ“Ú"<˜¨K¦C[†H
ÉßÃÞ(ÂÂ øWu|ìkwÝ©o‚×…EI_ºÁl2ˆÄ%2‡¤—=mï?Yiï%  íQci{cHaÄÓìÍ®©Ka·L Ú;®·O3Í7<çkb#Qˆ…	 "ÁñfîË4ßqð#ÑR`›Œ“}®×ŽnN™i!Ç;|ð‡2ÔO’jU/¹†ÿH†¤ÒjÑ/ÔÜ¹j
ûI=á¯ÑW¸¡ûª'€Aâ=° ýPÚCxÒðßÂ °ª6ëÁE¶„M§\jÍü¬)Å2¦Ð ¶„á,èð()ã„I¢\ÉÎülêÝ“n¹DšYÔ"È¢„«¢SdH½ÖûrIèûÕ(É
úRðH8	!6cAH1´ìÚM$µ~­†æ° çà‹±Lø.H0D5¡÷—nNÇ"29›ÆA½’Ø	ù„Äíb1é­D£QW—G	6O˜ÃJèh×€\0Oáƒ&RÂN´þ’‡ -Y"4®ùXfk°à¦eåŒy–M$qKÍàŠf;ÓaÕG!ÿ|íéæe…ÂZ{·«ÅÃ3ÑF8ìª}	é±íxXñ_»¥Ø’b‰¨p6å•"Â·~¥M¹êÿýFÏî…™Øxœ•WlSç–}lÂuBÂyóÇ‡ìÄBmpMŒ±“´câ›ØÁ¯Ø×I¯¤“Æ´MmÆUCVi&M”M›4V1¢Ic['­™TM£ÝÓ´nÒ4ÐLíÛù¯¯ó"9÷?ç;Ïÿ?ŸïÿÓëEïEg¶ŸgŽXüT"4”Xõ`k°64°nQò3wØ/Å‘¤™uFë¬–þX[J
ÆÉÝ¬-!S	æúS¬Õ¯,’ôüâÐ‰úÁXd¯™ƒç?/‹!ÖôG‡Yëø$ÿ?;¶×'FOú%æñGÄdµŽ)Ë„8èóG36d±Ý`ØŠ†S‘™bƒqK2B)XÄ	IŒÄ€%®šrTgÔ'¥@(&ÿ@·MîÒg¶×2‡•ym‡äÑZ‡g¯BüW»P¶% …¢"é}Þî6OÏÑu¨·Ý×ÖÓã‘_³ž'ùþÞÎv_—Óµ¿ç€@[“Á”üRhù|©],9èù†S¡ÀÑ¥Øãl;m¬Žffhëàß6+ÿnØeæ
g_ìS
È®(š|a'…|KÊÞ­8iVÌíü»]uh8Ûb0H§â"ÕÀÄh*Âãñ*}îîÞ—…=Ì*Ÿ;lÊ¥ÆÍK=‚<yØ(ÏôçöõºöyÔØ [Ã¥rgÝ.r	²9l–­}k„}Þ4Â.Ÿ9Rkà+_5Ég”Ë®#u¯x‚¬‰lÎNûïõ8iÝ©S×^'_>R¡®ÎvZß‰lÄo‹'ßÐËS^ýZB9ÉïNyÎS§÷¶»{ùkÞ:‹§Ãë ñ.›Y ýóˆC	~<c©¨”dó5u¿ÒÛÎ£ü(ºísªÄ¥Hö°æù¾—ÍC]==<Ns“âc°%wÁ‘£Ç+È_U­WsíëàØ]fAþ]¬LºÓÂf²xé5^§"µY)QÙ/mUÅmª¸Q	×í‰%è¨'’¡X”u„Äp`!¶Û¡$l³Úå×ûêtJÅ8jÊh;ö	ò±ÑŠL¢î‚üÆ¨QÍÉåìã¦V³üáhyžº‡a“üB¹ÎÛG›úR¢RÝW¯×)È_IÔ6©þ•>Ûš¬J¢î.7£ãÒ­^HÒéôöpÜNùÎS®»Ë£X57p+ùí 3dœÑn¼ž¬R­ºÜ}‚<—4Î/÷r¶´»¬e~ˆÆb¡ £qöÅ¡¨ä£áti ¿> åøê lXðK~‚Š~¨Ú$?µiw[ðP_Ï,Ä B†J*MnOgªÉnZx:5ÑL©z´JÐ€n?è*YÛuœUñÑ[ö©Y¯ÏR¡øà¢6ï‡Ìôëë	hù?s¨á³øÙSÈáðãÏ¦pô-DãDL«•\Ÿ ¶`Rna."y84)È0°Ø·‡¡o 3æ%A_òÏ]ÉŒç_ž€¢ÏàùA¨-ZÅeî@máj1¿ óª _Šò©¡€3ÍÚØ°j»¡-ÄÇ 
syþu"Ÿ5â9Äâ!(Ë]Vœ&HáÜCPùi™ý{šÑÿ9ztQ«ã=Ûö¼påØ1ÏGÝ†–òqäÓlX'*'žM4Ûª-¼œïñ*_
AíŠ¸‚ª‚´¹­Éôì)xúôF)ñ÷žã#°uUÔoF XcÁG#P²*Îu¶åU&—j¦NBÿ3Bæ+>9YX†pî’b,X¿*ñ[75ÙøÉY°ge,…8µ†Á4É‡KJó2½YÒœõç©¶_D`AÊŠ–ui>“ë	¨ÖÓOÎñÜÓs±‹Â”TèÊ‘…º•4…x~
Öâúl+ZÖÇ¥|:E“òfª–·;ãl¶¶àµ e’‡Úœ%Äþp” ûÚ,´|Ÿ(lµ¤ðj‹uôÀ«°YaýiÖƒþSÞ®ì8š[9lGOkKÓôT‚ïôi‹ÑÝ	Y9\kf¦`ˆRÂ›Ø²ÏYÌ´iút% 4¯É^­„c‹–±=a×ÄNŒˆƒ>C•ž)IÌMB˜Xpýrf&^bI¼¨}Y¼Mô#£Ë¢Ó§LQ«ñ½½ïÒÏäwUv¢5LODÛÙ¸ÿ4lMCþ“€MiÑôHBü«BŠ%(Rè@ž”`?_žJËˆCwÊÅÑ<à™^¿ Å|âà—SÄ÷o^ •ï§ ö²MŸ#‹æàµ1Ðãß£°‘ó €ïORÆ 9õQ&ŒÓVg•ãì8t/Z£å`÷äþˆÆ'(´âÙpŠpJ‚_:ÎEDEfOÂî4®^Hü„+”‚?ž$î&ÛF|á4ùS¼Ü:®ôq„ÿ”‚R¼fÖgãÈòrq”xå´ó§rÎ^L:é´Y‹ ç²t8~6ç„ˆIŠRuµò6ƒoÕ‰æH§Qˆá{E!4Äª•+‹n*¾11Áö²´¡ý|pÊ@XDNk 
ÀY›¾gÎƒiAž÷Ûô›¹BÀ‡’4è¬Ÿ‚ÖŒH™pÞ) AþN°$[™YAÛE“}×¦/S0xpŒŠí’^‡oMÃaœ±iu…Ã¢ä´*ÅÄýÃb59
àô´á7? Þ¦–U|^8äpcÛ°­áSÍö ÿ'P¤^Ã
5-8ûE¨U0s·5µ85¦ìj~·ªaüâ¦ ðòoÁ¸u(`^é¦æ;ävjwòŠÔ»^ºn¯ÿxö`û¯iç[~Fï4?ÿ½Ö€UòÍK°=‹'=ÒB/£’Â…µ›±û
äbU§¦D¹/Ó!x8ëô¬•Þ“/MÑQzë2äkÏ*v…ÿDkP¿‚ÚE $¾«yê8â´Go]Jˆù ³,•¸A×®¸zð.äk¬øôìQ’$ÞøvfEÊÎá£÷5ìr¡®Ü(E–¹3¥5,(úÃRñnãìM}9Î´èxÅ¨{¯þSWª‰áÀiWõý¸÷±nMÙò½ˆc¾¡ ÿWƒm‰&âuYøçºMJrÓ\ô¿AIO%!Jxã/š-ÿÑˆ˜é¿xœuPQk1~^EÀ-w*÷¨2&*NÐyx²É^JÖö®e^+mÏ±ýúõ„-’/ùò‘d@¡Èç‡t­¹4^¦+!MÐ¥–nË|fýaj]zÄ ÐP˜ÙÓ§Ó•
Ðå=È†YòH*­«}+Ãûht˜6AYçG0uA5
…Lð|ÌÊ·>·õ}Ò’íEjxUh*˜||µñoÚ³4ï`‡µô
&çtX)<£¹ŽvoÒÑ¥²„í,gÅfºÛ³Åa¿xš/æl½]²GÒ‰]mäÿâƒkx€¨Y£ã+>›J›1!Ú°üÄ|Ïc(;ÚªÛVÑU<®0þFpNàV(¯EBîn$þÄ^ÔîH#tI¾¤y‡Î´ùxœÅZësÛ6ÿ,ý3vHG’%ÙqS;ñb+9]e;c)i{m†C“ Å†"5éGÓüï·‹	RÔ#¹›;}°)`±Xìã·» ö÷Éäýù/íqàÒˆÑöÈ£QøMŽÉ»÷ãv¿ÓmÇI;tRš4÷÷šdœÅ‹Ç$¸¥Ät-Òïöûd‡ÜÎ;0$ƒ,ÅÀ!¤qä$^ÜñœŽ›E3çïLQºñ(÷›Í§Aä†™GÉ+š$QÜ™jC,õ‚å¡0¸)eQ Ãå± JÓÇe8Z°ï<Ž:3C‹îæ´<;,.Âì6ˆª„Qö°/7ªòl/¢<®ÐÎÒ Ä©æSúADÉ›g?§öx4™Ú“Ñ¿†ö¡Ý%½ýu=Òë÷Ž4ƒÉÐ¾\¾ÚoFÓ	gq°f¶G`1K“ÌM	Ú8rm–:)¨3pùÒlØvÖ;"w4aAÙsç89Y"5zÐ'ž“:¿ÕÉúIV:·Ô–[ž4¿žäb¸qä·¸õM‡„FÎMHOä7/`ú×„:žz¾O‚'²ˆ·õˆ;s‚–Aþ¼gé"Km?NæNZÚT=M÷3Mpw°ñ=!òK’eg‘G`¤,©ëßÂ²9A£ÛÜè¶:·ŒhÏÅºEã£Fñ­Æ7PxÞ»É@¤Ô4×±6f³àOªÄ¼qµ'ÝÞœ#×ÍÌavEç6Äxè	%ìCP_íŸGçÓà©Ò$¹¼tFbFÂl1Däòêúb0&B‘Œ_å[ƒÞ²ÇÞÇöÅàî
¤×-öÃÄ]ÚãŸÊø…˜hJäz·T‘¹óçº£„—üö”µ@BßB1Y<§¸@ž•hšÆg>|Ü%wqà‘[Ðg€ý L@³ÎMá6ü¹E„æç›ÄŒ‚–<Öj6®ä¢žÕü¢ÜŒD·ä512fœò‚»€Å	ö@ñÀ'æ¹®Á"î2¾)7­Õ`‹;Ì€¿ÏG—oX7šfIO_%W]Nrªô,7Éãr5
¡$ò!4d”¬du±Äk^Ïìb"¥Úúh‡¾ÏÏGL?ŒÔ*)ì+%¢ú‰ØtðµY2g%¢m1'aÔF,%+b/LÑ“RxÜÀ°‰0}ß£Œ)WÈùÛ_|½‰³²Üd¾O“ßjOû	õfT£&BzÐ·ÓØv™¦íSŽŽ®÷ÉRîƒS:ä¼~-£íòK¥;í=tšÇ)œÑãLuž/¤nigeQîjCVf(mfZ(®¬³í¹ë‡ú=ªÒåZ´´€¨ÑÓ?'W—Â‹_ÀÌ ƒQRÊˆ#¹²È2÷f”:8wÈ['$`Ç‚ANuÌùÂ!†àUƒÑÀÃ‘§-mLœp:áÕú¼ú	¾!NuóÑ¯âi_„çŠ„ÆG]~d9i
õjä¶“$Î£íx× –x”¦¹ÙJ+<ÏæRAÂLMAÔâçýnŸ«g/”Qì Ô÷ßñÃívD«”÷ÛBÂb5ŽºÂ8vê#ê$›!¬]\3vìû%c »)ÑÞ<BØTÄ9ç¦EÅÁ.Š£?i‹b‡ƒ$VbrØÏ2õ±sžicæ>y¥‰ Óœàùs—¸¥­Èî.©‚á'Œå®…L±xŠë¡ÆÚÀ1¾¥ŽQˆãýSÌšyNzVá‘ÜX²rB79lÈÈB#,Œ>:Pî¡Ì“qD;](\!ƒAé,Êeu<ß*©cÖÏØ¶‰‹DZ+Bð8¬8È«W„ko¹LDE£EÌœh{–•—$à	¸C›'|: §§u<•¡qN©ýMmùóÚ…rÑgXü ¸½…ó{NLó3üív^Xh!Î½`n‰’@š(‡u–Ý$qœb‘ˆ îÇ! fîD4½Hý¥)`ôËÝL ·Â[ì(pÄà‡AÀíìCŒV³Éù²ýõA/¸óØ8P¶-B›|Û§.	àNÜMê&•–V§ˆz˜“¸¶¥é¯¥ÔŽ¶]¬’®%ÕÜâV‡+›ü-×ú±TºuRd÷•]ŽÀ’ú3ðµ£Cmã
”.b:K ÂzÅ»HÔ’êæBVd»»ÑO¸y×&ŒÃéôøÿƒ~‹ø”ýx–{HÞñB°èö¿eqÿÅì÷ÃrßŽ^~Ëêƒ—]üsK­`y‹•¸âåß³D<ø±W]¹•¹·5Ï¢ù†J§]H‰ Î_¿–,1}ÈÚ	û‡µ™„ç
^éà2U	m·ŒçB^íl“cór®&ÁªL–øáY¨î¤˜P¬ÚBI”õžÃf6£°·“Æ‰ÉÕ©ú„ö7 «ØÂ¸	•gÝ`ÖZÑÒ¨»T2º";ŒœÅsHMË«Œ)rÆ„5)î4+Éo„P‘K˜ùsŽ™×<Qå¨ŠK]×‡£óvà=Kvœ²¸û*Ñ^à] ¹–•¬È~.ð&°2&…¢½£e-Ý+Zµk©»%œv;ÌÏ…¥FÌ ï¯Gxiˆƒnòˆòz—+7°½>Óÿô»Œïd¼í <MdÃbya|äAÁ¦nƒ¯[´³•ðQy\¦¥ˆÞ‹®ÎÜ®íˆYúyy!×ªBd]/ºEÁ„@£Ê‘€…¥räòÃx\ø	-•+%Ó‰Øß²!Û¤”št~¹³9êïÙ7/æQ‚ºc÷AêÎˆYf‹–p±‚>8®Soi¡PÊêúCÜ€Ñ>ŸHž‡Ç28Ë2Ÿ¾&/­/
œV-œ³ª
²²-oÄ;Á|£Jkìk^œäÔÕ„óºöÌJéòL_QŒG}'Ócg#¹/NRHòª$æNÖÙÉ,‰˜2E–l×"U#»à=×šÐei©.ØÇƒéðòìW{z=8ûitùÎ~;:'ÝÚ_KaŸ¦{<¼„
huÛ
éÉ˜-^Ý¬‰uÁ°'ßòxzCÂß¥àí˜%\&<Á?8ÆA3wøw´Vã5Á±o*ÕØñ½L¡}}~ŸÛÁtö ÆŠÜ&ˆN]wt>…'àwmFÃâ‹ëÝ÷zÅW¼š°C­à–+2'Æ¥ˆQ| oâ,Å¡Cû|øvða<µGWgÓ±=]¯>L9!è\×JÂè×“¼S^R¢¹›kG¯njM¸Ñ~Ú5ƒã$¿!È_n˜ªÖÜÈ_åÕ‡|™gñx•w+7¶ÚJyó£¯Ä…¾Œ)–z°oË8ƒF2Š\„¥“¤÷˜ƒŒNšeácG¢¼Úy8ºü8«wš²zd›}ý|0w»²¶ò¹¾æ®€¹å…/þþº+…¿6`;Pç’Â¥¿2qÍŒ^„§ ò\õ‚~ßó—©ÐŸÀ¬U~{…ô¯ý‚_™PoqPï•Ë‡¨x1Tî;D¹ŸÁ?‚°
K”ÉÕ¥å†b¿¨ö3×¥ŒùY>t)é·®ðU%Éò€Ž»;¿@ë“ £JëFÅ‰ê]§â ª’ýšcZ-C\çöøêÍƒÛË'~¾M‡ÚÌšL 9Ñ'Œo7ÖŽeÜPÂâ%ù¼§Y÷®³@Çá?àÑ/º €} ”±‹3ÓKHa•`k9qÁž^(¬qs"ˆG°C#/êZ%x!%xÉ¡¥YjE)Ù¤Ð€j€¢ÚÈ’Ùu÷‹8vHùòXdÉm/'€&y^—jül2²áAð*†q‡1N]]åÜB;X¡KÑ—_!ñïqª}­"ŒòI.°h­ø¢Ë»äÍèrpý+R{P^Þ›fùG'{VÙ‚²–[Òîœ£F}s!JÉå ÅpQ?%Ç©fo<RÁÝ–”k¾ÜµHþûk{îÜÓ/gä´ø¹ÙÿÅm~…%xy”¹øúú€ryòæ¿[{_¢uŒ“rÀxôyÞå/Ãe=S.)V€H˜§âÂåIžèü[9^¡ÿÄˆð)ä8Êßšv¶iz‚r«vAÐ®ëxJNzõ~j®ßMÌxïP„Ü8øv<xgB)F‹<£ÏZˆ-å•Öªº7x\dA„l<>ç²bÚÄH¼÷ ÏŽµ„[pØ,~{S]-®òaù½¶œÊõyê¼ùu:4Õ;‚g©¶ž1Æñ­¸ƒT	á¡m}15ámáÈ!Ö8”|¤EJ_s6ÃËsÓ*‹hÿ|£¹ ‘¹¾Ü’Á'¢Ø-ÒõˆRøè°Þö=þYr¸TO;|³ÈoKtÍºC/I:•š¤-’ž(J–êžQÄ7‘*?"ÏvØ3y7X¿UEwÃàKH¿:ÅjFÃ¢îÁß InVþþDñJ¢ä÷™ß'ÔOLÍEÊïh¿^º\*0.6òRk”t÷3A¤I ]> `áÌªúØNT£m%ì¿Ëìb2÷á–«ººÝP¯¨yEµRî™\ŒžZ‰÷}<‘|ÖµïzÙ)µdífÝÕâ—ï*vñRbWÝFÈ³<ÁÃh•}5ˆŠûÍo¿àl¬ûÅ¿¸”˜8«ÉµÅ=çš‹ÎêM§Þ/-ŸOV;²qÉRÌÿ¦.‹ÖûHÆHi¨ì¡eþ¼0µÆ¦•w6	q³$¡Q
Á£õ8%ÿ_Õá”d*µd5-]Éîr²Ý$¶Ý‡a?oêšý=rM½,ò¨B„sY˜TæÎg™š\(¤<¼ipÂGòÏœÅâ‘ÿú*÷Åö©$ø{1Ÿ·ä§åâîßqî¹xœÍ[koã¸ýž_Áf‘ÂÎÚ™ØÉn3;d&ÙtÐ™&ÈÛi@Èe3¡%)'é"ÿ½$õ0IQ–_Tâˆâ=çÜËÇ%õxó|»>ÿçðöQÌÐðs€bŽCŒè[pyýe8>:&tH<ŽèÞ8öI ð+ãNŽfŒ"Šã©]<1ËpÌùKŠ˜YŠ(-@‚#Ì­j¡sbe14fY€©pÃÒòÂÞ0î©ÒEñ¾ŸDQÍöµ²x!³DxQ/LI6ÅÓa*"ÁÍòŒcò†eaˆŸå…½âO7g·ðÓ×s­2ŽYšÑa±¸ Á˜‚™'8 l–<A:‚s	…$™öÄ™O°V98ÌÏÄIï= ¡`ð¿ÛËÏCÐ«*?h.z”ACà½¨Ö¹<”aoß¨doÁÝy„Ï^îÿï÷ß)ÓW€Cëâ<y4KÇÉ—Ö²±p&ÐÍ˜¨? šGy5ˆƒ¥4ü÷@Oüß×QŽŸžA'cÈè§™%QJ[‰jÁ¦É¢Çab¡Jqˆþ±walÃÎÂ½)r ç°¿/ƒÕm`?£rÜ4Ÿ-Ömà™¢	}‘÷•_.ô¥Ñ¨,mè ³G(¯r¥6°‚À§eÈ@Áø/'.–dŽh^	úIÆ5*é@+‡e^>§d+G, ·#ªÒæŽ¸ÌmGb/¶rÄp;¢*mîˆË\:¢8Â„‚^>1ŠùñWp*~~üÑ5ûåÖÏ(º;î—øŠ[ŽÄºÃ÷¦»Ö<÷éìÜâ&8ÏODíyAœ$¶´½rêÅŒ˜£êÊÓ‘Ý”&à‘t£ãÑkC@\ÎSFžjsqKç´Ìmø"‹€	ævCåðrª?8þeét îa¬»Ñ}°§¬fu|ok?ÌðtE×‹<CQ{áõ³ÇL8(:²­ëøD¬êð«â[Öuø¢&Ö‘bü¬	Ï	Å`9ú¨/,CÄ$Ø~\‡Ÿ$uàooOU28bÙº+õ§x9®Äˆ¢‹ZkÀkÏÇÜ‹Åú«²¯“PäW1y^(6¢I†I°*‰ÛºÎb	;$­ŒcÃÚ§*˜kƒKë,fYš’—:6K%¯ø+¢XÎ4k4qÝÚ1‚qˆd3ëøkŒ`ËºŽ/;(T‰A°"~Íº@Î$9`[×ñÕZ3oBŒÜ±"¾fÝ9Êuì"ƒl’4DØf‰CYî8yÈÎHÉÑa)):L$nŠ&7ÅNŠ›b§I¥¤è<±”DÝ'—’©³£Å¬“$S5{·‰¦é&›’£Ó„ct”tJ3ñ¬¹•ûNµ›¼ˆNŸ(æÅZÏÛ×7Ÿ³ŸOÁ>¸ü¸Ø‹þ|Ú´-6€äŽÔÜ‹®''ÐKSîM!¢Æ„žµl‹…¡°ôGD)ÆÁ3ÍÄ´kÐ¬ÍSA,¡¡(ÜÖÄR/P3¦º9±!±„K662ÉÖå² –‘Wv÷2Šë’Y-d¡Ç=²h°MÈ*ˆ*‚ãÇ yŠ¶M¨tˆ69ÃŠXoE¢‰ŒL<et|´c-²DÉh{’Q+Éx{’q+ÉÉö$'­$§Û“œ¶’ü´=ÉOvÑï B>£	çb,§È1©6Ô,ë_(?†!¡ˆ!ÅŠY‡^dÅ‚Ã™ˆ,¼HìKÄP¹Ùf	‡6ßšlDƒOYìÛ4ëûä·ÑT3‘»5it7‰z¤°/&Dí®²XÌÜøóJ>°B3-]¸½à–¤›à.,pÏIxEÜÒÒ±­=Lä•¡Y6!ß&…¸²táþ•Ô@WÄ-,mPæ{1’„N!@¦N³{/Å•Æ0˜È9Í…]ÁŠSQ%K¹FÐú”p…™mm5GìGC÷±xD¾ú:]·ÛC~4ƒ‹i¿![¨½ƒX=Ë‰E¬ Íé¶Ìú-/y4=¥^¼¸ a}NdHdB1XâÆefYQúÄ0³74Š	ŸHÔ‰˜$ä°djE'Õ¢½CQÅ-™‚ªEUJ§¶¦T-XZä ê±šžËÑXÚÍìÒ…+eº„9“h{ë­Ò`5IÝ)Rt«4š­©;I9]³¦P¥Žn'Gƒ¥YL9)úOÓ
cb,–f1œ¾8¤ìZŒÆ²\
Ë|±z`ö†aÇR4–&9²›O¼`BaœE]EÆdiÒ¢ú·SÌ.µX,ÍíäÝ‹‘ƒ¨®ÅÚ¾J9j#ªö ê•Õæñ½t'«Ô–&ãIjOnkñä u}±÷DþÿÖ˜ádâÈ}›µüò(™ý%Y-Û¾âißIjB¾“Ò&dêç·›K“
1x–ˆÉïG»V%»£ñ´ªÙÁ¢v%5ž&IbàúNíÅÈÎ%™<Mj¼ù¦ŽÆÚµ§I‹zÓø;hÑy[‰"‹4êP‹Á³Š˜ñw3nH»zÂ íyÊ˜ºÇ"ê3ä?æwZ$íÈéK“x@˜»²µƒf¼Mí}Ùš“íhNV¤9ÝŽæTÒ¼ZŸ°D(ÀêÁº_±ÀÃÚOÎÏ¿@æuŽL¼·µµ‡{ÈÁØHþšhv¤ŽcŸùÐx»rY\ò`<“y-†€ˆ–|±ûÊgùyœ"®÷#Ë=:õÀŸyŠ“ù 0N3Ÿùù‹|ûéÐ‚ª0ÿŠ	æ¿eP!Ì~$ñ="Ú$ºûø¯Ûxõ<ýÛ}.+‡óEpö/|†Àgõ}RñÆƒ0Ÿîçµ*¥8@si8W5žp¸h»«ë[xvsù­—¤œõòªèâïç½>x-*ÉÆzÄ’!¨ÞâOQÜû³@®ç>Km €
ªôäSÎ*¬b#–ÑX£ž2Ä{•Ûp< ×œœ¿Š¾ì–G)A=¡†üé×&Bëè!¹qQ ¢1* ‚ƒþïÂÝ«øíëÙÍ-üru	¯Ï./Úðþ/JB×ˆéí¨EâO2Z7v|Dæ}M·6ÇïŠ µoÂTX¤ìîSÍfäiŸ$LÅ¼¸¤7çëÞÿ =,ÌË²‡xœµZûoÜF’þ9ýWt$ßZ2†Ëv¼‰î¼Xù•°lA’o§‡ì™aÄa3lRÒùãï«ªn’£‡7¸Ý`k4lV×ó«G÷®>/ÖsÛ”¦Ê_,uu¹¶IV_è²˜ÓßJÝXÔyëµÑ™«7Ú-úw¦ýú¬l¥³ÒUEµÔ×5Úã¿ÌÒg}U”¥®¬Íuëˆ”nWø·½Cckç‹Ö5…õ©zéÚ¯º‹;í»ùÚå]i·ÞÒ¦±zášìSTôöM)~,ÚU7×ËÆuuªÔ§ÀÉÂ•¥»"Æ3·^ÓF`3k¬i­ˆÒÞ£±~÷Í¡R³ÙLiý@/‹–aõªmk8.yÛÄ§Û”¦‘RŠ%L@íîÞgŸ¨k}õ+u½f+S-Izð]wø¢±¿uÖ·^·¦YÚö†²×Æ·¶ÑóÆTÙ
J8w¬N0m)Ò!ˆ\öŠq‡­î4ÊØPÇAª3VääëÆýj³ÖGf:/|Í1 l£ë¦¸¤OÂžz‰5ì[µzwÿ³Dž¦Úæ$­qëº(ƒY{Íy]¹fmÊ‰^›Û{p|gš“?Ž%TÏR±4<¿¶Ö~ï|ð½(ßÂgtÂ¤êÎ¯„Ð¶ ‘^c×®½i‹é-õoÔwÿœµA‡#~¼Í\•ÿ«Ýêyª]€h¯Ü5í}qÞMZý5Õkçç¼EsMn›C}°ÿ5òOn=íwP¯‚ÆÖoõÜÂ3r+°Rx¡Î(árÁr¿ZÑI,àÍ‚o?F;@—i63ÖÖ»jÞeÎ¸q6¸Rºj×å.?OF–ì"ÙÕ/mÓ9¹²ß à×²¿[èÜ^ÚÒÕkâee!Xã9èg½—”•oMYM]%‚1¥‰~ôˆwôH1°@_ëù”¦+ÛTVÌ¥+€ÄxXÐÈðöÐ“&ŠEa)¼½|ÂT	D‘m¶1ÚÕmá*‚¸iW.yˆ	áUÂ~zÏ¦Ë´-aÙg°Dva–vÑ¸õH¸ÿf¢!/ôr†=õ,I®S'àÚ¾€Â2H[–sšé=vVˆ)=§9Š¤Òe¦¤¼I	
² GÀ˜iÁÈ„û•l™ÍXQ³ßñÅlÿŸ2ÂÛ'qúóEo½/ÄÀÊ`ãy×FçØr‚ÛÜLt±€9MQšyi÷á°gÖŠ˜Ÿ_‰Û%eAÆÛ0Á7ÁTýËÞŸõíàÉD1	iÏsrƒ oÐàF„Dx’Óè+*BØHT%m‚è-*Zº7KySòÙ>\MÛk›u­ÍSzsðN]­/·²£ÆÍ¸0Q…€D7}_tŠhuµo‘“ÖÁèIŠÉíjÈ#AÏÞ¿þòþÝËÓ£ÓŸ¿œÿ4#TlºŠÀÉ±!xÚ•iûº¨/W ©‹ÊPÒ~vó¨ªÕ2eÚ°^2Cl{/@ºW›¶Gú‘Vb ‚­Á-Á«V8ÞóðŽÏüLç.ëg™ñ^X¹«Ö]‹õ¡‘Ä^·IB²n’à_ø¸(ÍÒ'µ	K\×ú"·	Y>±Ë„I%’¼€î]ÂÜïï^àçýë·ï~<{ñ0ùG9IòÅN6ªÌ¦`Œ‡Zø—ÑIR7vQ\ß\«¿ˆJ}¤h¿*¼hÂ(RnÓe#s@ð•6u]Â4j·/ªÔ·ˆ)xLÑnôÙç%spv~Ð Ç#èN²ûZãÉ³ï¿:›|iS¹ÜÅc†	Fe)”Û]'ÄAŸ§FøœR¹IÕ¦£¥›u¹MUõOÝ| [¬—©_¶Ì}Z¸°¶Èlåí][í+õá“7×Ð1\¡ô€åÈÉ\I˜Oxòž^„¦úú‚{±*8±“cªßUCŽ–'½z)°nUü^©ol™œþFrùÕèäUüjØ;·(grO pÉ…tž	/üí›Ý@1æ¨%€A	5UÇˆnÊUšrKM‰ÒÊ‹ô‰¼êÊ4ØŒâq4/‹r#Þü€ó*Ü•¶Rêôä8ê¤«k×´ú²íÅ@2hpLN7õšñ°r­ Â3tndUªË-\””L·cœaèp Wé
¼
À\7¾ƒâÀGË+IßeÍÐkŽa}&üKasTÖ”hØFö€"[”~‚Éã5úiŠúþ (HhØ=ì¸‹ø» NçTÜþå/ü—Égé?$Q)dAÍ_©$Œ¹õD!mîCªá€Ø	mÃ(Z5s…JuuxèÚCø6)ÝROACá±:£/õ{'˜xÈ‹te`1ŠŽ¤ÈáGe€Iï\…{ð;~õc…è€‹JÀì}?‡úÙú•êþOuë=K?þ¯ØºÂ<Úƒ;ŒÓÓ
¹ž}¦ÈCùÖn~7!Ý–³Ò|œ‹FN²K¥¹Ur6Ä4×ãª6dÜÛ”¸Þ;út:ÑTöŽ·1›1Á„úqèµ¦úŠ0²@ÿÀUBWoû§dî ¨†a"«BF¢ÈÀ¯ëßÂÖöÚ¬ëÒöüø.G]·=t¢Womîó®d~òô?ÀV^-îc«±öåÙk¥Fýå]Æëô	ÂÚëW cËÉ»¡×´ã²­çì>§€ï¡mõ®´ˆ­úby›·Þ;„k8wŸÚ¸á¡b¼aÛC~û¶Òo&æòºŠë½gûâ†¦m›µ5£;k>n·yI¸)¹CÙ­*®[]êd¡þþ€XþouRÝ±;uÖgŸÎÞ|ÅâýÞšZ?{’>AzÔ¥¡IqtÞ­±ò
5iª–²P7 Sÿ¾¡ì”Þï²àßø4ïª¶Ûæ1d¦~^§?UE®íY"rC*¸Ú  ÏVð×Œ Ì/†ci[j Ì-²
pÅ0¯µÌåôï¥Ôž+ðÝóò‡~œ~—¸ö‡¾¶UaÊi9žO¨èÖùógøÕ¬Ã¯ÕÈÿôûç8Ï•mêêìù3‹ŠÀ?ýáñõ]{v¬—Ç°HÜ3‘|ä‡½ïÛS~þ;Ü”vŽè+²?/í];ÿÓEÔU6Œ¢êÿÀ†?lK¸ –ð¶€nÃ~«¦ðÙ%=¾wÏhÏƒ¸çmÿ½{<	ú‡.Ð3ùÕíLýïÝóyòtDùW³^onoù¯îI‘{ìÜxnJ¨>#IÖ54YCË¿6*QÔ9uF	îè““#JÝ§€m<0AõÝ8ƒ`b„lƒ}ÖÛó'…6‡Trê“°†*Ò-$³Žæª„Jü‚@QŸÜšÎËk£§ORä©¶gðÛû^¼³Ã:T¼çÖ·aÛô&.A‰­ÑƒwÁING<Ž
ÐXßúaræ~ôÖ‡ËrKàL•a‹]ð@ª“¦ÁÌÑÉkKÊ‘²#‘)ÆSÈ4Ì9‘ØÞ Ïs›OvY‹ì~TéÏ£!tVÔ£ÙSi6ˆÿ”¢ï¥®YÊ÷èOìõT^™~ÿýó§Ó}µ]#xšò´q*9[ÛÖ$=1›Ï4‚ÖûšFåÞ»q®½¿8íÏó¸là¸ÿŠøÜ ¯†ªm»Ò˜Eåð¬Qº(4¸ç/_K[%u2Ô %ûµ¡.Ìó°‡š£+{ÕÏ–hpd®“NY4‚¬h,>Óšºì–IQ)÷9êjjèÎ”(Z4ûdØ0 Ëá)ÏñÀnâ÷%ž£5¸”¾”:@½„RŠ¨èÅôð ´ú-Ä:úèX³qŸJ¨ïòÜ†a+ þFûb5ó<€W5h Qµrn(‡G9Í°¥o¼°MeË‡^?\ðâ‡\e¸
oõåùøÀÐ^CÑ„%\½’ZdbI‡<„/„2(ž±”£	¯ìMƒ2^§ù¤dk¼Äïe%ÏôŠPÈð^E•®R}ä'Õ4™¤wÞ|8?ýy‡Ô$#ÉHÎj~Î½ðZ‹ÆŸ´ßÐ`·Yr?ï™•r­èòÊwóÈ±Ì™iÔÇ’<»áo7µÕ¦£yFÜ_º«ädJžíOúÉ [.–V¦ÝØ™7¯‡"iznd¡ˆÅþ¨ «8òt‡Åmx›<fé‚%®¨ïIÉŠ­&-LT(~£¢ÉãMY	/Ú`$=wQð„_Qe<)§Ù.Ï”hÀ<‰¶{Ëç2}C`²œå¾UXØæV˜í¢h—±Yð1£lº¼œl)XÆ‹ÔÛïB±+)îÕxô«
ý¥Pÿbâq×:¶méÜ…‡I/,gOn¨S„Ô­^ìÑÿÂh¶Bä=z$üÊ^=Ë²uÞIü€Gò›A8‡H_RÌ8‘á˜59MbbSËÑz}ñœ½l+ÓvLzÁÎ™í˜k‡3åÂ9„£ˆsÓìL8˜˜#,:ØâmøTs'¾°“ªÞ­Z: ˆÁØ£„âãSnN¼SE¦âáŠq‚¸½åÃ*-c[	—èLf™»#FõÙò;™náUï4ì¶wŒŠ¤ËlCn4¡2…Ïä  êŠ8Ã³+CQBgOP¸®Ì©FÁUØFaCªm$Hcif;\À±†'Vû#ÿÑ‘ÑüÊÙ5:`èO^ûJd‰†`¼„D¬OÔ$`¢ÂaãÈJ~‹@Í>ÝšórÂC,Àì2ŸvUœ®ò1,…åqáÉDPÃÈ¡ý½Íj‰øj8$¯M¥OIÔn‡g¡_¿þòîÃ«/oß½£vÃ¾ã/~
Ó\Fü6@ØÞÛ÷õDHÛ#
?½9zýæôËñ§÷çï¾œâý~,'UVvÈå;ûtµ£ÔÉûO?¾û°÷áèøÍÞöÚ™è·ˆ7Ùrg¢¾yõñøøè‘ï©o¾a0ÝÛá@ÔôŽ–øüø÷áñïüø÷Ñãßºëøø·Žã<ÞW@µ‹Z,ÆìŠ_×Jã3†•¹Œ…ŠœYm—/Á3^]·”Cºköie¯kÃ•ÒŒöå
ÎC:\¬"_Ÿ0¸”é\R¼0Ýp5†|{¸Ë48/7(ÖØsÆ ŠZ¯ÃVÞ‘µ`ÎW0ïù›/°úŽâøîYŽ'ðwyb<±W,a;Bïˆ=ÝÑª±/õÇäjÚÉ0•¿;£ÆŠ@º˜à¯¤Oj8;ÄD`5TOô’›sÊ§%œýÃY¨œ‚ÉÑÊN˜Oí0¼†C›¶¨={·RñÔúêa+G ñuëžÂÏÔK`Jµ(Pèå~Eæ-x8ºó‘ê@>[ÙÉ˜z¨þ"EÅ¥Z\:¾+åùvOK¥ž«²^°p_HÎtB>šT¨Há”N©D+tGŒ‹|d°5ÍnƒEg+Utñ[5"!Õ¼ì#‡á®wÏºŠŽJà}uYd5ô­+‘¢…Hªjm-}²–¦?ÞJÂ¶ÒLç|Ô'¨o^ÃRá•~÷ø¢É2Ä4Ô\nhO»z¢eî§âÁ’Ú™uéøL…=Ì5ã8;ÔýIjl‘ÐùKKFng«l£TTÒèˆ‘NÑ÷NQ”z/ç¦ Ôß<€Út\zµ*H(ãa3ô|y—£ÕqWËÉ„ãòYzð]ª²ä}ð$½¦{8Ž29uR|ë¦
ïzý·ñ=š¾Â:PJ|ÖÓ8ð9(‚dã°5$Z~’ÌEÅ¦Ìc¶¤ÚŽ.u]™Ôn–oîÁgn\cª‰’+4hJŠz+Ö£÷†óç¿S3äÓ¢Z4ˆCÃs )rå"_?Zè€¹µ3[ÍH)á¦'|GbÞ«0@’Ü=R/+»Ê²C­E•&_AŒ§¨l²á"¾ö©¨—€ã§ri“¸JjÓ"ÎÂåR""Ee,ûPk?8£åk³{•“Ût£5”R<ÅD"¤>9å5d†}.Š,W5:âë|¯ctI(ÊBƒAL¾u€¼S€“éÁÓ¿N%G%¤ß$è7‘}¥rÞBœwuÈ„"ÀÜ.\láÉJ'§aÈË$ñ*ï¡_?ÙRŠÜç¡ºJ !“iÓ¢¸N¨¼æ¶}âJ–HÀ1%]†Ë´!ÄjCÍµÌÑ©äþÎø&P{¬`páÍÏŠÃÕx_5àA”@Dè£z+Õ/EÑKiÁÉ)iÆoì½„Ø ¥30±+³CŽN|ä}¾9!çq9E	Bd¸RÁR>—óhåKµ«?	ˆn]=Æ×zÐË‹wÝ–¾ã®ß”–KÖµDªá»…¥¯’„®@È7äÇ-¾Aš÷ûMÃK`â¸¿[E…}8Þ'‡«QÍÃ]F¼Æh´7tp-Ž®¾‚íw\!ÙÕ?:-S	wÛæQ9[n{(œ²©Bˆ©{dÅ^n^ý…D”ƒLª2a[ÿ‹ú,&ÿ…(ŸôW~GÂŸ‡M±\Ò¡!Ùƒá–pÒ!ñTãn3K•ÚÿÀWvt¿Ì/xœí}{sÜ6²ïßò§àj+‰¤H‰,{½[ëÄ·[NT×–},%»g½.ÅáH´gÈ1’ís|?ûíž$H€c)µ{ê¤*Ö@ÿðj4@£ñý÷ÑéË'ß{–§YQg{Ç³¬hòyžU~~ùlïà»ý½²Ú[$MVÝ¹óÇ¼Hí,‹~Hê:«šï.aYU%é°Íâj™í­ª¼höÞÖeñÝå¦Û6ùâ{nÙ!i¹\
êºIš<Ò²¨›¨à¿ÄMô)«Ê¸móÙë»ÞD?FÿíGŸÞ¹sUæ³3ˆ3ÎgqQoÕMÕ¦M¤C¢¢ÞÎËr¥É*.‹ÅÇí;ÿug#½Lª¨¸ Øø¼¿>ˆv¢:ÿ”•ó­¢Þ{DÛÑ·ÑÝ7»w66²6pß•Ž"8ÝC¹C´PN¾íP:S@Z•jPž¿Íà÷NU–Í@Ôâ<™×­åPýª#6ÒÝl&ø„
B‹ŒÊ8]µ\ŠÙFÄ‡$œVô¼Àß¢è|mýA5SÍ´a”!Nf³ø*Y´œíƒû[·}ZÊ6w!c¨›™/on äëÁ¢‡ƒ´µ³$<º.shÀàà~¾@Š]$)ñ7ÚMR‚9Ö†~#Œ—j™
’e”~¶’ð«_Ð‘¾·@jR¶ï2—ãÏ0¢*«™;Œ?Âç«\¶ä*#™-àÀš%×mAÌw÷Å|Ê}v5 YÍƒQÒëÖ	áÁçµ»6ŽQº!Ê	¥hŒE)óòÜ‚á>áÂTá EÖ5H $MS)‚„WË:kò™«à"j›¤6]-®¢¯£ýw÷yd³º¾peÁÜ4A‰"	‡˜¹K1›PŠ™»³ðR”×µ“O®k†ø|'¤ç–u]-8îã7-ÐâÞ‘ŽX…¨Ô” ?ƒ'±ÖœÅZ1MT$XR$ÕJ°°]X›¬˜]8‡Gˆ°Ìp\l‘–µíïJUM©]œÛ¼¬¢­ô ý‡QýÐWè øÛoq²fÍ/úöÇ¨&Ew.±7¿Ú?ø Z‰‚^ço¬2ög–A©ƒÞ2°ò©ËÀ
¥Qm–‚TÜÍ	Ze^\¨ÅRµn›áŽ°))/ÌWÕˆxëÎ©¨õ2©ªäãÖ°JÂñ™ °“ñ/U¥ÓL?jåŠÛ‡qH]ÑtG8)iül¢ê¿Ñe8Œ††þnYûXW Í¤Ž$)g>UIV«aµ2ÊNgŠÚQÓqÊn¡äÄ:27÷É¯ÏžaÁU›ÿ,6U?Í«,3SC@Eý5WÚT‹îªÃ¢ü—Zˆ¶v®êí­8nÿÁ/«ŸmZM\­êYíX5î5lïQ£'ñY;FÖ’-³‹A*Žs%fE2@DqÔå´²¬‹×BJp<èa¼B–˜e¡×®óÊŽ›W’ªnÏ‹÷]L
S+Zè¯{Qže‘SàÇëƒ7Ñ?DwDÿm†Þ¥Ð¿Øûohú«ÖºìVJ4BEPší}·ƒCe¢·»ÝÔÏ‡ÈRƒ,= K²´Aæ•Æ¡xõÓá†ÓUâv¯–Lc},Ó½³åUoªä,®Ä|ë¨ë!Š±§
ZBpŸ…$_bòepò9ªÕÜþ%d‚+ ®ü¢Aþ"ü”>åµ-g’ŠÕ­_Q›5µ¢Â°¼Šf1ÐE5ÒG¦Šv•UíL°JV"TÍìžƒb& dƒ(Y J™dµ#1€ iNŽ
BUµè®%D} ":²Z4W™f*<D„®†»±´‰ŠeI„#m3¬<Õ¬¹ëf9Œ	99¹7r/WÑ•jZú
¢»ºNsE†aÃ<Ó²~Ñ”Iêæ!Œ«dBËH¦‚ßa4YeÁGÕ¼Z^oêÙqyDµX%Š~ÑdcHàGXw¯j-gñ#¬-®êTw}…Ñ­êF×Œ¾‚è®Ó&[®œÎQd& ³læÝ=ÁÁ(O/—«Ê-Ù)&e™(ãA16ñµ‹g¬ ‚([EÙ†Pª‰`µ<wOJÖÙ¬sR·'(&R–Š%ñ#l\_·z\ÃGÕ»Ä-¹ <¬°—i³tóÅòoÑ,ÝÍF1 A>Œƒ˜lP'E.¸ºŒ â¦…™›¥D\`/q‰éncŠ
œGi/ÒÓ†IKÅ²:íèœ‹ÝelàôW.'¤0~„’q_)ÂàáÎ›º5º=¤â{»Ð›¨N¼ÂÚIõã­²…›u0"PŽ”Ë$/V22\"óæ®üÔ.‰ú>Ó“9~„ÍŠ&UJ}•.Ý•å¨ÐžtÏ_ÅØäe*ƒÅ2X„*ƒó¶ÎÜRh½f^„i5 %›sØì§Š$ÏSC z§‡
CúwÒÚÒÅw˜h¼^iBüÔÙ{Ç·Rç·~fIçÌ¡3ÖÅ€¤Àˆ@Œ%ˆ''FL´Š"Bî‰†äƒ³HÜ¹SÔ¶:Ù‚ñ"+ä®Ý°™Fgw‹’oÊÔ‘½9³Xy™¦õ'g±8*°ió²Æ©Æq,öž•s÷ á¨@©ò¦‰ièL»¬gç3½0Æ¯0ŸIÃ9KÃ;x*ð%§QHYà÷Y”^Jz£ b½³( dFŽWå5îÔuO¤ÄÔ]ÏèHjÔRJãÍÉ…ž1úÎ¦™>+šêc¼@+.OO•`È¬€4Þónù!oB ?x 5"4ô,nV­€´`ªÊgÔc`¨Ru A×Uý=TŽë°r0È@A®Ã
’ÏYAÂ@F"È:MCÒáDq6ÓÁ^yM:I›ü*¬¼4°¼&h|]VïÍ™¬®k2¡ùóÈI€YlûrQðø‘¹ù|ëªÆÉéª–»ô@ÏÞà1¯>åÍªª¬âEyañªÐx•\dÑ|ã×n„§|(rÐ%×8Æ%\ËÆuô lƒÓ‰ˆg´‚ .1/+äñ0]ÈóU¢–å‰Ó²-” Ô–¬¢™Iêt>Î—Ðõ{±„´’‰	BÁ`ÑãA£Áek’¦­ãyž-<e4F¡¡[h«Ë¤9œ\„gðõ$ü¤Zª‘êO^£99ÒØ9ËÜçÉ(ƒ@¼wâ•XE­ûRO»&m†+1š$í•ÏØE6•8é2ˆ9,¼UÒz´QRïÜc&®WY
áór´'»‰D;‹!v¤x¿NòºÊê+øgUV%Ç)œ9>Úá¿TÏ("I~þ±ÉäÝ‰l¶–D‡eˆç»Ñ[˜«²‹´Yì*™Š"ž‚@rrÐ¾^ï¿‰þfV °0Ù^ÛHÂ\@]dÝ¥©ÌbyÏªbŽŸÍš”T¡MÙ$A4«fE+r™}s[¤ÃÓà÷;Qz™¥ï¢£MVÌ²Yô$i’è”º«­²è<‡žú^˜xbGÓ$÷ýüíD*Xä¼Ï³*ºNê¨)Ë¨^&èÊYY|ÓD‹²\E«¤n¢æ2ƒîEåœéñ›)éû{¼NÃ½%Þ"‹ö¢ƒûÛÑ÷ðïCaÎ,“ü ÛùR±ŠÁ>!³<ÓaËA;‘èÎñœÂ˜â¸yl‚ë¿Ô°ØÀ¤–(±y<žÕ$«´‡jÕÉ·á£cPò¢]–uc”SKR'4§-§	^½Ë>†BcÚm³m„)Ô{–ŠðDi”-êŒz‘Ìæ¸„¯ïÝ#C4ë³´ÁÍƒ¬ü€XùÁm²rö¡ù7aæìF¹9[ƒÃ8.³YnC´ê[nÕ·;Â_a‘½!-±™·¢o!ÅNt°+M²)Í@á;¾}3ÚÐr£Ñ‚“Šˆ[Ò-æ×½•á<¯–×Iå_Àä¼Ã)vÅ…N¾9Ë®Šd™­£MÌ¯kXò¨ž/›×úÖ%$}ïà^;nÄ1v7Uµ%‰Èk\"!tÑ!íDOEõ£S¬þV2Ï·‰¸öaÀÃþ
óÏÆXE‰!“CÑc@’ÃXY¬.m²ºlÐÌTeý*»âì¿’Ã3Gk^ÁÔ´\Þ’m³ýµÕC+hSmÏÚ°eìæËWÇíƒû›ÑÖWõ¶cXasoS0Yœ¼¶7³óŠ[—k+®M}¹Æbq¶à3 Ý‹7<€ùŠ‹/Ç‹¼nzB„G;8„nÿÝÐ€(ìñÀ 3Ø„—pæÆ
²uFQ£¦ýãôöªÃ[ûæâ?:©2Ðÿ(*ÖDö‰ÊcnÎè¤^%i=ÃÖ{Vòª]6•k›æä·çGññ“øä4~v|z??ü»1¬°þde¯•}Y}yi†oÑa2À$1•xGqc#ïõW÷Û7h&¬†Ùèú#_Ùr|´QŠ.÷lF7ëµ¶MfüÐ­ÁbÖVI‘fýíAsQ•í
ã£N `Í»"Ní1> zW'4bÓâØ-ú‘íOôEŠN®d>Ò!"Æµ‘g°>ŠÛ"oê `;ã˜¸™+±i°‚È¼Ìfùth•5ªQœ.ñ0Ík!òqÆHM1ØÔX–]@Ú¸µÜ}RG.EKûu´ÅC›ßJ÷÷æ2Dºþ>†iÔeÎÓdÃô_€Ø IÙ+B7U˜!ÂÕ"1\enL=,n.«¬¾,Å^ï0¬N¶=’U)4lÜÖÙ ²™"Øö /2:à¦$	BìH˜òc*’Ä<O:åF 1VO.ä€¼Â´…‚XÈØR"GK	dË†	µì{£ªn™„>4Ü	}TÜ†ŠZ/“ª¯˜ªÐh‡~¢Qs_ |¡’ˆ

”6ƒÒrz.	Dl*€Ó5&…%êe»L`Òáˆèëè·£W?½8=Úf…–ôTXoó2îÎ†•?š¨gUBû“°`Ù¢2î=2‚Õ^pôß¨rõã÷Y¯óÍíöÍK³Þ|îƒ
šgË%´%®¸ÐTBßÜ C)]8°:iªr±Èªø¼­?Æ Þ² <†Ö‰X|ž~LÙPaÌ$ƒÀ?—e[cÈDà®dlÙ6³òºÂé&Ô6ÔÙ³ÅL2¢IXJ„È‘2DgÀ¥Éáóê´™lÓŠ:ñ"8´/Fr•ä‹äMHXÇB£ƒØý»A (L#Ú=ØÆcä0è*[äÉy¾Àé`ÓB2ËüÜ§Â2(½p!¸{ApWËó6žCû‹‰îb ÷~îjYÅþ¢0äŸÆøÉšãŠl”²oémLÞæÒ µÒ˜SðÒþ
Ôz¡ºn˜Ú°F1C×P%L˜RlÀ˜jõ*î6j\·0õT¼ç.²@
•˜bªêãÿ¹?wb?x-=·i‡cºætuE£šS7šÊvfò	rêV(æ\„Óºéž^6Ÿ°>PÖaÝù|Ò*`h`Ïéö
r€ñ'ûÏ2Úã­—2ôê»ËÀ^ž,úI·õ¶lúãþÃ(@;‡?r6Žë{$?YÙyÐA¤ÂÖYQ—ÕëÔØ“e
¹'‹ìšmFû¬b9‹[N˜@Òo}³;Wž@èfìèF«Ù\Íå’šønÜ€<¬m»½^‹9SvŒ¤=˜”ÓÁä¥,èÞQ&p%ž^£ð|:ùÜÎ‚9)’ÞrY„E;âÇð™&®^Ëù¼ÎP¿Ö{ÿ]¤m½8¶3¸œ¡©øt$âíòYV§\ü5°ÐÆ(:~<>‹§Ic§UPñ˜·ÐCXŒßL¼sžÔ™UGqFUÅ˜Þ´óŸ9ùO•§6ëËe¡©q¶t˜¦Y]ãéR„bëä·çžä©àD}Üä±3Òóò"uÙíB‚¼¤ÈÐ›‚ +uo·
E0ç«Î4üêž™h¢í%¢qRFœ5ØÜ’å 	uã·‚Ù1Nv`ç M’àUGŒ&‹3Ð[²¤Uþ•c:‹äy@¨oÕˆR¬?"Û©E1Úú©´¶€Ñeóz#4á¸"£x¢®€&ïXÌ£çz‰æ'‚‘7”ô @ãL^ÃSŒ0·’§ÖCœÕ3Žïn²›aq;Ä]c-E[’¦µò`Ëc®h`ã·”5d?{ì°Dãžœ?9¥ƒ\ RÍ¤]±7Z5ñà¶NÇÕËìðä0zrtú8Âïh“éUyne/9[Ìa&v:X1ÑŽúÜÈçß"|7C †Ðlè ·öL.CÄÚÂAN)¨k¶ÆkL%†X~ÜV EOhŽˆN¡Ž{gPÇè)žÒâ_ÕÆ,SÄ¥Lðeù<]{‘93R1˜5ÆÐè½³a´
$ZæÅ–Ñ=»lIñìÅÏ1[QÄ¯ŽN}vvêšRÌöÕSˆÑ‘#c}¸zh¬~„µŒª¬nBHuç`ö¬ÙðÝ-vfŠ«‡-_BZZÀ_½(›2‚²¬W¼´œe¾Âl²uá/–ÈÐÒçò&œ¾Î|»®6ðoÄ#Oòä¢@³Â4:. w—ÆÅg6W³1?êB!²sz‰ëù¨,"±ÀïêGÎ|Våå¶êÄ¡’@³£þvøìøIüäøðçøøäé‹ô¶gF±‹©õBýP†c†w–EßY³¸OŸýt8ê±ÛÙ²O“|û­@ì2quc®n}^¿´§ÏFÚÖÁÄlmýHtF7&ØŠÖÉÇió%yúxÝ’jÚØÊŠHÊÓU–¥Œ<P›Ú>ÈN¶O
dûWBAeÙŒ"±N¢R¹]9X:¼¢;C¸!°›Õ*ú³øŽ°,›Ïá£&C@§uÁÿÚˆÒÔ>ÒåÌ$‹vŒu+“tHÉKŠ²«ËŠ~óHûîÁ_´í%—e]ýÃÚŸã]_P¶š87„6ÍìIïiäŒ“7—•gpñû‡èàOä—œÃ¹Ð•œÑªèŒ¤~Í4oÔ€Tbx>~þ$>zúôèñÙiüøô×—/¥³µowøø4þªÅ¢Æª»V¯WîÊÞ'[	ZÁS\*)ô(7“hF”=47”,Iùì9àwkdÌìFZùøÅ”fÞof,áµs^ŒhÀ&ÇQÛîT7-uä*„Ì¯/Ñ¤c‡V@C£ž>Ä¶›«€T9Æ.Ï¢ücKá;”/ôzœ%éå–XMbÛÒ¿Ãð,Hñþüª…MÉ‡Ô ×£	ð×ü[Äê™h@þ«BïF*kUi‰o#u¨W$½åaRäîüõV‡F„p`Ý¼e<ÄÔ¸Ñ²ÚÈHÜú†äûy-Äï>Æ:'FÐ5vCoùä<”m8’@Ö2X:*®„±üHA1ç‚+•7Îåy²ˆaù*­*ÅÕ)¥ƒžŸÿ~œžžÅ??{ñÓá³øÉáÙa|ôêðôè	™ü%,·eÁjÑd3à’º'f2GÀqeùøÅó—ÏŽÎŽžÄ/OONãÓ_ŽŸžmG_#W<?<ý¿Ôºš .`–µ—Jë4¢\Ôm¦ÅÿæÖW³íè+}Uw ­ðŸ_9wZÎ+`ïÆ¶l/&Ù”<Wp!‰`×ñÝI¤Hg×w÷õ=xk5d3¥ômr3(žáÄå:bÁmrÖ”`ÏeúŽyÖ‹{î=±2€Óêã
pÂSóŒjBSÀ,Ï²d•ð·Jáõ>èn—)™œg“r1iJ6©ÈfÚøq[»«*›åiC&jøJf‘~ŒWÐKüüÖ–}6Ç]^¬«¢O'"uÀ­—/]3¨œz“‚.C’6 £*Äçm Cv…›¡Ü0c êTž‚é£·Ysº:ÙÅ"!&ˆôvˆ‘ƒHî;Žëâ³Álx×S3 á³L>äËvé‡oüNd—1g:ƒ¼ÀâËüâr,A‚« ËüK2Z”×ù,|RÞÝåÖÅŒñ>ŸÊS¢ÏÃs¸žš5U8~s‹–.Ç£1¹¸ ¥¾cpqQe(’ºb¨@ðe‰{îG¦ÍÓZ½ÿ„Hqvx<ÝWYÁçAö1‰Õ)™<=×I‚Ç‡&‰ÉT…i €¬—8½1ˆw­&V'6x(fŸÚP³ÜÌ‘c/<Dö&©vT×Àok;“çå\ÛßÝÆF&,Ày"yµ%ŒWèÜ³ÎÎ‡ß:c‡yŒ¼H.ô»ÔÙ.3ª×ÚWºõ®¢Ñ§è¹‡zµü0=	ðÕl!F±ÞàA‚ov`e&ö‹0½*žŠÝ$®eüÞc¶qh«Hžºãr¢·…5>±WW£EõüW¤OÛn;ÓŠ©6ÂêÁùû-‚Än•È‘¨§1SZŽ‹7ZcÅHº^ÿ,TÍ¦Tí³ÜX³…vVÕÀæHÌ(§ÙÐj¥hõF<yï€šüÖÅ/äÃhÐ+¯»e…ùÅ›p,™ÑWHE›6ÝMtvop­„=u/²q#<´9îçjbêt’Ó”Šír%<H²¦¶:dÊp¹ÊH±–•„ŽÀýAEQ×ñå5™‹º!‘;¨*½»Ât”‹‹¬G¥ëÍáFØ0!ÙÊT‡u(ÕrÎÊÐ:Dhg¨ƒ³l.3(©ê¡nP·£Å(¸…ì£¡éMQ±;d¦óéž‰½k8Ú-BÐÁ(Í=úQŒ0–Ó¤ Òþ(C:IvhŒ7%QÞ,‡Ó™/LnØIö1­7%ïløß€¤sÐ\¿—è*ænä
}hÂ½é…_:á—xß“þZHŠ¡ãX¥å`£¸ÔbÔÓˆe’M¶Õ¨¢Æ„0ÊXCoÚôð›"»
p\jåAg7™òj*Ö]ôEðƒÙH3H^+–Zu5I@œå4Ùn+_zËi4L/4»„4€×„tä*(¶¾VÚƒWf6!å6®÷ù(îg¦¡¸JóøÊåV¸z`©k€Š×L½°úmÓ%Ò|Ü4(½ñºi~ïy‰
_dEl‹ÖX'mÏ
ß>ô
Hµ­…;ËÏ{¦oBœÎú=‘ÃÚPßú±®ýl˜k-—ð$bvŒ¾+îöÚ~!¥J~Râr™îFiRDçYT_–×Et7—Qs™×" JøƒÎ 7£b6ÿt÷€=äFªÊÞ·y•Í"¨® Úš2"è3RØgfÑ&S#,ƒ&s\Çcõ²M„báTÆËl&ÖÊùVÁÕš~áÜñ.'Í”»:†Vc¶QµàE‚å«—°¯c÷Dv:¿ùÞ£ìr÷¢o8ÕJÖU°°Í‹I»”·DÑ˜Á£±.zµÍ=¼ÄsÕRí{O-/9¡†	ÐšûzÐ˜bôîlèîÌ/@†”9Úž‚z =n;sI|¨lÈGÅÈ`¢›ŽJ'bŠPËÆÁ‰Ñîÿõ;Ü>­	ð[È…;ƒ«V-Ôƒ2¹ªs¿~æjªÐ²…¸’¢/W‹^\€ìN/£á±ÅžñîÉ¿<zŸ>?|uÿrtøìì—øè·£“³¿Þ‘nÄÂrLÒAR¿óÆqacåçte³±Ž3‰ç¸0?†7æÔÆi\šï¡:·‘¨¶‹7Z€“N»ºéá;»‘€}—7=L¯Ó‰Õ½0?€TŽ9¿±±JãÚ|-È	ŽÄs]žï!záH´îúR¨S	8p>ÜHÛí*Ä„N!áYX®C½ã>$Êò#Ò/hÇ£H8®íZ¤Üu2ŽÜsÇ×Aîú	E&¤)NH:ùŽ9#ñ­³íö¼’PfNA»&¬é¢dÈIÉ4ðo%CþJÖ w8.t]2~Ð‡É°“iØîL¸/¡§Ú2.A=´ïè„`Ýòz
°íõ„@ûb{
à”A'(ôÈo(ÿrà»½¢LYH¸GÉsÈMŠ±3’òZ¾ë.Åç0ÅÔ-·)òDÒö›ÒÙB	ô¢=Ç‡Š}ËÊÙœOhá*#<ìYe¬.V²î»ZY¯Ö_(a•¶}¯¬Wçéw±˜;2öòêéßÐäúùñ™±¶êžÈzÖWÚûµe6ÀŸAOtrÜ{T.f1Ÿ:o	Ú{²`‹ïÐ;	ƒÄcîÜÒ´›»âd{ûÖjYd×ë×Ò ž\KMÛ©e0{êâà+›òT§Ë:{ºé¦gƒÏ•Œ côDÐÌ¯‡09v2ä(âT@Ö£¯Ú8©qïÂ°‘¨RÇÃ>½¯ŠYå¢—gÇÏNÏŸ¿4dAÇªÂ'&ìË­€ûâ¦vŒ“Nž°Á³Ã²­cu:ò¨U¿A—°ËÒ:®s\œ%HHö²ñ†|ùâoG¯â'èžáÈ”¬¦µn?ùwØ¢½^oíõE{êØ@Ë;W¾-g•â{}Ö a¤D ¿ƒôß	”ëJ;§¤s×ØæOÆAØ†j›‘æà“’N'C1W+ën¾­òGHLPjÕS^“„,g	l€qÄT¸rí«»n6¤Ž\«þÆ’Ï¥™ÑIîo•¾„’‹A! tŽÆÙÎ±“¼,¤‹©I™R¹»§ƒyvRÆˆC²éäô4þåoñÑ«W/^’©gí¶¶ ïªX;a±ïºt²F/QvHl\w¨Öã_O~>Â†Ì:Ýx]–P¼Hçð>"³Ãò«tS'*ÌäSæ’&ú'ÿjÂ›&+.¤˜ºLAŸ%jã@AQèD¤Ùª3[ME)–Ò§‡ƒqØã*vz¦ÓÈ:ÙÔ†³ï~uG„*¹ul«zJ®Ýâ._¼zÎ7a_Y«Ãž™êŽ/g¡û9ZÅçÕ"‘*ºb§âö¸2Á™Q‡,¨Ä½ècP*{]aáþN]aä¸^WÐk®è‘n¾Êí>± ÍdëwŽq9ÒM/íÔÍG6ŽÖ¶öêÌ‘£A1¹éø*ú<Ï¡=d’Œs›¾ßõNò›b6ÌõñáK—G/G¶P×˜¬˜n`¨Že4“evwzfw{É)\Æù7ÖUTDC·wz²°™OR¬Õ€ÖØÌLŒá©ƒxl»sK»ƒxhcå—#âÏâ£¿?þõÕ©Ý[ý{7ÕUäµ wƒåùv7'XÉ$“7§ÍWâœÐÖûpFË|Væ~“îFFþM“‡ÁnZÕ%Ds»W)¾û'g¾æ5^ë­Ïßý2ïú>|·nÍ5ŠUGûfoÀÅ§e®nŸßý¦m§6Ùÿ¸û¶+@éŽG_zÔë9ŽôzŸ-2tÅ:B8æN_Pw]îÓ ´ëAo ôSÔtëQøÞ_·<
«‚f¨hwYT'w<J€¹`KkOÉHÊþ­‰ûEýŸ,Ð•“ŠUêÅŠ¬@-vòr/¢ˆUÍ’tå±G|H\x\ô+!@i7íê…‘Âú ]œ»
Ë1.TõEêòëá¼“n±‰Çµ?t*$gƒ?~°ûÃôû×ŠuÌž²f}`©$ˆéÜO[(Û›œOåbÎäºNïZ‹Ê{‰Í( ¤,±Ã‰«„íö#3ì"Ëq¤SR6þ‡ø‚¹Yõ?jùæ:ŸynDÖÙíÃýë}ÛÁ³×'\ßW5à»¶Œu Åjåg8äùƒªÀÁÕßk· f”ªß:©™k¸Ï}q½Þð n	ÑEôŠûì§Ãèæ=ª*_5höºuòìÕ“íËÓ”ÑWü@¯‰ˆ{B›'§‘Y_uùr£¶m•u`†Õ,Š„u×Ûÿhu-¡²Ü¨ÂjÇŒ-¸ÛšÛA³¿Š‹²Éç=o’:*OÉ_9Ïš|kî´Œg^”aÅü9ÈñU8TTh}IˆéÇW>Ÿ|†FµA]$‹U q­üƒAÄNÛíôêtÊšý`XÞN-:MÖqëŒQkºtžóËBCQR-³.rÌÉ™…Û«³QJ?_©Ægô9-1@Öãá1~J1odÙ™,E»ì=2’¼†ßÚg°I+¼Q>=~£¿à¯Ð¦t!üÔp!<çÇ|çÛˆ³øªÅ#ðÜkõŒå‘Ö‚FÑ²Q¦Z’èj!;ƒyqAoWˆ-sömìáx;Y—éEìš|ÏÔC¬/bÜÏqƒÀ.´˜YNÉ#Aüƒ¿äx°KÐºÕöÙ	_ó§1<ž“kíþ1l‹J…‘þí*"1ZìÂúŒÙì’zò°A2é{^yú 
Aç¯äöâý¸Uw0Ð(RIéigíTxáÊp½¯jû§U¡D¼¦Ë=¯Ò*Góçòm²­Þê¢pç—}¾+K¡ž¯êO½)ÞÂD°?ãzã¶&{¾<€Vh9Ò{ýxHëíÛÈ¶áØÕëP>Q•©ûgÛ}Ö²í,ô¡bh%Ð†¾ÅŠöÝG 	ƒcB¶fx÷ ˜ç.(k¼Þj¬7e™µ&5åš{HŠÒ¤E~ï—þ¡U>x‚i¼7‹%à¬\&yá•é‚³bvá‡åTÁ loá‡•é‚ÓdQoãyÚT>p3mpÉ•~Ê¼‡¨"CÑ:Ï‘÷ {ƒX‹–ÆvJëàfÌKûÚÒ'aMX`cF8n2©éOô¦ŸðSJ&² ~Ç™;Y.ß÷ÃÀ5R"Þ'‡è$Í›ƒ’|6F†LãÑCÙ‚L-ÄÙbH¦™l„œW‰Ïj:;ùXUº§ŠEãÕO9—íFoA/„±»ÕiZ ]ð¿PÙš¾pºØÒËeëßÌšS |tˆy ï¤tçBöì v	!Ò"|ØŸu(XÏ8’#Ö›t$µ‚“]N4T±Œt¦¸T¤^yiä©§¦)ÙOTFNØíÓrA
ÎAŽªá-kLÛ¹†è…FºîK±a>«˜ÍWa½1[÷,+<%½~kOâ¡ªI4I›²Z3cÄ[ ¼ek–¡ÃèÖp—’9SOÎ´þ¢Lë°Lí¾%q¶nß±È?¦ñ²‰Â‹z1ÏæüwÌùïˆó‘~ëS>]ç8f‹ëª¤<;™V%IÿúÝë°f@½‘µÞÅÃ}h²¡g¨£-Ï¶-ÎE6¶¦•pÿÍv´ÃžOéqðöîƒíNÇÒL×íY™õÞ#‘`"ß‰uXŸñúÀŒ¬T	s,˜9,>4w•c]ä(¦à× è:ÐO³ šˆ0àÏÌkÙÖkeµTætô1ÜÃôL®µ±‘[b—º€õ£h©;€FÛtß©{Í?¥Q–­²4—Å¡yÝñ¥YÏvÖC;ŽªùwÙ? ú<ÂEÜ3šžSËëSÖM¥Ï;ÇË Æ ê½jˆ«ÑcVcì?Ð*†B#}¬“ßžG§ îŸÐs]Bú·o¥f†ëB&7oÇ›R+†GJÅ²*"‘½‹Z©Ö“ÆO ¶¥òn7¢€¼­E.Ÿ#Îä¬RÛç‹3sÝí M#™Äèã³]ÓîF;ð)añÄµ£è¿
×NÂí>Š.š×d2ß†£9òêGG"²bè~$Zl™*èèÃXr4—X„Òš³Ã=GSéúŒHÏ!Âª½i…±ºêlñ¨o¶JÕè{ï~úVSýU]äð5‰º¨.:Öb	b¼ËºT{ÙÙÎÓX­×s¬¨ë¡‚AT€çK®jÅµ¶„p5­lYÕ6‹ÂQœ0ÿQl¬+[Ç\lvÙâOÃ/ÀúZ—ý²í“FøtÌÝ¬¯Ú@Nx‰›~ð‡rmLÚy,ÇÈn$~uˆFÈ„ŒaJ±ñÏ®}Ñ”JÖea¸„˜›&h½Æ™ÒTÑÞÖÉEÖìÐíÚb‰m¡!aÒ›HGd73K_|s÷IpŠÂ)Ç±¼ÃbœG1|‹O¥ ÂÃªkTžŠA~÷³{Ëüž0¿·”obó{«¾ €å¦&ý=XO3û:…*ÞåÇµ¶g‡ .Ï—×<eèêiŒðœ0Ë!˜åD˜l e­·ì¦ö]béw‡õ‡L"ÎQ¬õù¥úT;=ë}‰jgÙð˜²aD0È{>ânK.´O,HšuåÑã>&›]Ë›]loL•ÈæšŸ0Ò×$ýªw+ny·*¢_÷°ô¢-NŒïËo-ë¦"Il¶Û´X¥sAZ˜4Íˆ> ÙÞï‰pº¿::|öìÅã­ˆ¯ŠUüjo´³¬h‘º¬º›{Ž´º^èj¾^e)Úè©CªŠ‹ódÙ=½¦‹.í¿Éj«ý¬ì»õ‹ŸÆÏ~:ümÛ³{Õé?²n·zsRæìAzžt”#žÀ	‹i7âßcÊBU˜ï¸T*y`‡ÿ®¡WÕ=½ª¸Ú§ˆÇ5«zÖõIÅdõªžMP°ê™P±Õ¸DåZŒê[ò^—Òº°*_ËòQÝ¯ußµÐK‡„Ãˆ gÂÀŸ Š™•%°¦«:âŒ±8*Pðª’%B[1¬òEÉVWÂÍZ+šõ4E³6ÍúÆG-2MžF7ðÂlã¼þX7Ù2^¶‹&_%ÍåV'¢‰jõøäyY.èÉ›8)‰ÿ,FD$6Ì+øáBV~ÄÛ&‰Îêv,ˆy¬ý¦SŒy^ÕPh7Ø(ÐÿP ¤æ÷ne•À|ºJRz›0Î’ô2æjíF+kØõÊ«.3û±"»ºÔYC[+±Vt“Íä£.
·}íQ•U—sÆºm>å=CW³l„;ˆÜÈ4Óág³*«ëð„SL‡>mä×n`dqÕ ôÐ¡àÍíaÂY…“C++#/ÕëèV‰ó[ù/EûÃ©L¸„ß~+äƒàÚÜ¨æ»ÚŽŠ•®‡§oJnVãÄZrœc£éOØ8ù_öÿWbÿÉìØ}ØÅtxèÂ<‡ó
ðOµY“À :GüEEv4à˜ÿ•
I¨È	…µ •‹òi¢¡m7SóïÕ2¯#ÝÔæR\xî+lÓ´,ê&bWŸHÀî%6tÝÖåz³u6“ÿ8éw4¥ÂŽÆÅûbKlÞsQä¼d¥Êg[—Jr€_öJsüo%05½¨ž>!·›WQl]‚ö/WŽ6L7áåíàt‡Ñ€:¡ã>x†3Ðý3Œ=TË%çØp4½“Ž˜äL‹õŸesúZÄS‚±¾™hj™|l5Îeê·ÖK¤´ÚKbùO¢-f<U-µi4Uíx¬4k(–w·rvLÒ¸Ê.ðÅçª–WŽ’Š$£ÚÂI“Õn”ÔïáŸþ9_-Ï0Ñ.Ï—dœ«6¯ Öð{)þ¤ÿ¯qw ¨kXiÕ”€ò>!òúýY”)¶6_ÕAøªÎŸ(WËŠ
€›ý•áÙ9ÿ­¯›BÀO(§í¨&^àÓå2/é1XbAÕ£oy‡åÕÑÏñãÃ—Ø”Wµ™ìÞA7Ùo§¤ÖcÍÇŸœ=WiSÚÇ˜6õ$|Ì©êÆ“ùãÓ3Ê{b<åÉéé+Â„Þò`¾:{)¡GÇþÇ!¥«ß·øáéPºÔ—î1¥cîñ”ñùO¸ÿÇ©ëOÞÄ§ÿÀ´Ìã‰zy|òô§Fžõ¥~uzôŒSC±Çë÷ÓK(µ(ó²N=lúü§ç§ª†^>€*2'ðÈOýòù+1
xüùSŸ=©½%Ôº$0–½©~’©qÄûÁÿv&KŽbÁ›ñ™Nß†¤ÿuû†- …1
Úac÷îŠ¼M¸ó1Ò’XÚ‚9˜"iEŠÉÓÀ´5møâŸ ô(®6yþÃ¡µÉ3MPz]›4%…vÈ°Mšƒ	R"HGÌò“HÛ”3c(^€å95ˆ‚ÅÛ&Î¶tA6Œ…Ü¦œ¡C«OÒnS¨ÁãÄÞ¦Ô2‚[y‹~Ñ°Ü”ZF0ÙîðP.ÿ¥¡¸)5à|@4n*µh¼Á2”›Rsòô“MÖ*²V‘Ýˆžjî-ÍbL¨'x]{ÞÎINááÿ¸ÎgÍ%ÿ$g ¢
ïRIý&MW\/[äEÏÊ‚ÝŒ	_Iæùë{h5ø†T˜:«š-Êïo±>¥rß+†¢Ç&Ý<6?¾â¢¿Á“G¨>	ÿèÇè›?|}ýu$~€€ÿ÷ÍvôdÀ_£o¾ûF®˜· W|ÃLBmó‹h¼|ídCµ¬¾ùçþ7—|bEIÁ»Ü¼Æ3kqW,Œ>‹mÇ9{2ž’ïgÇyù‡@îÅ,[eðOÞÝq¯Ý¾`a½$èYÐw«s-kúšM`xpaÓùÝg*ámßKSeü&QñGù'"áÜ?òaI~Q­zôˆ!£Flf¬öÁ5®jü£s_,'ó.¹ÈyíaŒKrµhŒNn’fó°	‡ØÄ½tÌ*×ìø\*±ò÷;Ñ"©.²(+Êöâ½´¡Óà¨m!ðy´uïÏÛˆ¨âB‡à£:Ÿ²ªŒÎ?6Y´ó½}”#$y}ÿ”‡;20&“è¶@ÿ#8Ðã¸ýK”µùƒû¯II>9~rýzüà~üìèé9	el$9ùù×ã'v’V¥øµ—Ö9Š‚ˆoO¾‘­åŒjìÄ(çó˜œ†òÒ<Z•5òC!dt.=ih‡Hîøã^?9:9;~úŸñ“Ã³ÃøôøGMÞ•‹þ9ôô¡01oq9Ž DÝ½ÛÄ&mÿ&I„Àmùl¡_¾^¡ïàu[²³v£}õ’”3¶Þ©;¥˜ƒŒ€æ@»w¬…r<Yn[/ÏË24Ý§æuï“Wn(NºúH¾¿#Ù•5†lTÉt´ØèìÝ–î¥ã©Uï
rMÐW¢]:ÆéWû„7A¦G/Á<£Qo;ð1Òì‚M
ß|h7w§âÄÓ½ŠçWœ¢*ÎéÖ¯8ÀáŠü^Å)ÜSñ_]õnG«ÝêZÓØÀoã±2A1î@Á[w¹[±Ÿ›¥þšà@Ò—"E¡ÝíýGÕÜ˜RøÛ{(ýC¨U^tf:OÚECe	ú._Emñ®(¯‹ÍÏj’Ù²M”`°A>KÁ¡2³â,9‰~/×°øÏ…ƒY´-£U,È±3#=–
ÐÌ{[‹•`ÚE—vpV"È¥\Õ.¡”ŠÂbNûƒ—âš¥5ýF÷Nt;(ÝVÝkó˜×|j?®ÈbyâzÎ9”Ú³'´´·kÀÂN-àc«£àËp˜SÅ¯[s‘ªwâïdvxu*pé|ý©C‰¤m—´%-+›‚IëÞ…%§^x¬äõîÎl) Œ›TT½¸=§¬¬~]-Å"ÑRÊd(è\ð³`ë”¨Ãd¼l–x·³,×òâ¶8Oæµ©^Ñ?¨I „4öâ¼n–Öæú¡¥/Äm›Œ£›K¼$´+Z•¢w¬Ç 8#Œ@Î–ñ‡kåG^Za|ßµß¬#§ó–Ñ%Æ"uî$È:R<«J£­½E	ÑYH£êA°äwð©V´Ç©W9ÚõoiòG¢?³óÂ{F=_cë‰Ü¥Ø¿µ1ô‰×0lve#œåð­È`ƒ+?%Jî=ÂÛ•¢~Ù¡BI8Éú³Ž¬˜&*Ú¬ì>Í€Ü¡aÛå§´ë­é18ÐUã2éC# „†Ò—Nú2”¾ªºsí™U¾9Lm™9éçÁôÓ]wî†#¸Âî¹î…·‚«óðZÌÝµ˜‡×bî®Å<¼E»üT]'6(0å¼ëy”†E„ƒÐQž¤þ¢7‚ÅIÅ/žª€.8OÔ$äÂæêÑ©zpÊÄšŠ	ó“zÛ×~‚—î0Í3t®ôI½îëG›Ñ3N6ù,«ýS¯˜yõÄ{{óù¥ìj®ÂÓøŽøq«O”…NBW!¯ˆé®»û÷v¡}
®n©£ÆKè« 7ÅÆ†ýUÈÃ¬¼ÐiÏì}}NË!Ý¢^ÝæCbâÝ‰"¯/ãOeÁµÅÏÜ	»|(Šõît‡ˆcQºœÆ?…“*êrÞf3¢ÚWeôÞTœÆpÐnÄÐ	·(Ÿ‘|hbÜ ‘ñ€‚¾ Ý1ÅÐRrÄÌ‡ö™(arîPfè3þÝMUÈ}¦3V×¦ŠcØå%O£ÑÞõ–È^1Tx•îï([”íÆƒñŸ>Oœ;ÄÒ‰qµf¼îD†Ñæ,ÂþÂ>éÇB¯W¼ëU8˜v;9X:å[rt³RVW_É ®§ïÎV;Ö—÷ÃaÕ»>ŒJ×¡{ ÷¶¤@#Ñ)öÎq=7…L¼6«hóm}I\2Ï"$SÉ;Õÿ89ÿqÿãÉÑor»Vœ1ßzÂ2¥kš²M\®ùš¸Xô¦– wÀÿ»‘ÌG@ŽÉ:Q_I±i@jói¯ >ÔpÑæ	Èoš6õv´÷&¸’O,zYÐ^z{´ùÇŒúIÒñî|BìßA	ZfPEÅC†'YeZp<NøŠÞnt°ÿÏÛJÆÞ¹ñ7V©0NÎº”9šÐäó<«¾è‘Õ0K2ÛßE-ÂµYt8TjÙôA\)e· N‡OCñèË‚C÷ƒ½ë@~%¢`—Þ—>z<‡„¾ÍÖÑ2F×\öŠå"{å+Z‡¾abw†Êdâ€?+—ñýwd'Ž³_ž&µ©læSU÷ßùgE™M¹jr|üºÊ¡qòÈ¢¼öº\ao×œGS6ÉB²ºR>Xó0üu2iøÛ£‰tójr£29·Ö•ÛM¿PêÀiö;¼OÁ—´+èØê#O‚P¯-6þ1P7	½áÛH¾‰7žŠfÑ³Ã¬÷qTàªø8úN½Åÿ‰2TM`E®ÞÏ™Ô:½$Š
Ìÿê}5O†` *l{Ž’®œ­ÁQ¡0+Y§>Ìj´N–©»>ˆtËÔËP˜„0µÚSùpOåz*î©<¼§òážÊ'ôT>ÜSyxOåÃ=•Oè©|¸§òNOÝÚþe›I‘æxv¡wÉwŒå’˜•/zˆŽd¡†¤Êòµ@Ã—Y8ðõ¾~ðQht¨v«t¤snÿê]»üWWï°§6U'ìÁß¦*‹¬ÚÓkˆþRCuÌ÷uªîQ^b¦\'§UpN‘»JµíñÂ®Å˜‡>äJÓ&‹½y[¤ø´ã^A/rýj^„–àödïÛ¬Íêqèâêý:ÐžUU»j¼ðù-êq®nª-µîÖôQ¢¶‹´ö¼ÑîSî¤ÑÎ…ÚðBcí—"¿\ÚàÂ=?oÚ˜¿`‰¨Ã‚¦d™~Lž8ãBÉÖØˆZG ý¹±nGÆ‰ZÅûÒq×.ÍöŒ®ìOŠbê1PÊäÄ;9;ùLÁÄ,¬“åM=]D£d{½wÿnw ’-9;ç SÑÑŽúùe²n&úXûûèì2‹ö›Kn÷(¯£*«³ê*›‘©·âý»<™‹[(â¾ÌñéYüüðïç]«YkTˆRãAá@Úƒ®©fÑùÇ(áËD˜KD¬ÁæéäÉ4[¦ËÕ–jnƒ)ÙÈ)cþ)¶ÎUÈövï¦‹6Ùg’a\ÖzÞZ5'´¤®Ë4Opæ!åB¿Ì’YV)=ŸÙ¸Üþhå^TÛä‹î‡N!'Í‘‰ÝÒˆ·2ñ’=ïÇƒ°3üŒ(²ƒï[YÜ1áÝ¨¸‰pïŽÜËÈ)°L>Ä>è%B~Ÿ§”qî‚üza vá£×É€?áåbQ'v%«7Û$˜èœßÅ±¸LºÑi§@„!u8ªKæ›¥Í—“ãÞ.ÔHý›Àæ†¦(ž>uœ¶ª1\í†ÕmžÍ>'-vÓ³¾1¤§íÓî¿KÐ¸Ò d˜a£ü»L…	Q)1»XNÞuu=£TÝ#È?´k0\…ßóÒÈø¶Ï!ÅcÔôLµµ•¥©†˜x•\à¥?#ñÚ,ÄÞÖ­	&"3‡wÙÇ× }ôÆ™(ÑÍ˜r
|6~üüéýTË9Î«swÃh“½GXð~óWr¶+hQo»;Í´P^ø„º£E,ìøêC„‹¼Êì!ŠbP®ab8ÄÆ_nZLTß+÷<Ï²&Éw¬ƒ,ûvœuœ$³ìÊã>U{[u{Lí¸î¹û¶œ{\²:½Êö\û›låvVP¿ì9àãut	B>ßµßÖßÙ[kívÓzgÄkd8au7Òèhu‘›Ð£.'Q1ö4ƒ§ÞokË#¨löu}¼vàŒŽñêè9{¤ÉÆÚyr›ÒxÈzÚK
­óXmùÊ¶qúâD;Íª<YœˆÍø®/kŠœˆø¼œeC€KŒ›ˆ÷4¯–×I•õÀæ"b"žázÜçp<ñPzó1Np:^qiñøö“|¯x€ÝFY”4ñÅy"ånº£U×yB5[…L§\ßâÞ¬#5BòházDmí"Âƒ†‰Æ®þ¡Oq'U6œÀ$..</$[H?gpjÚÁ¹àÐ0<TaD±NI„[%ªaRð!ˆ­lùµÎf?}äCl¶	¤Ï“ù²]>ûé°S
³ƒ&à½¼üX£éÖ)ÙVQÏ‡6Å)D”• D{q«w‡œ8(ÄßÊ7ÚGŸŒ–$b È½uò¼PÔõÈ¸!OÚ©z?dLèŽúûð1ì²÷lÙêù	â¬U §
 ý¬Åø[-^ ¿Ó[øgòÚš‚†2$õ(èúóCiCíÉŽ¦ôÇÖ9%y¦ï‚ü£“÷ˆ\¼3A.®#×‘Š7&oX&~±H\_"Þ°@ü"y¸®8œ CÇË$ÍŠWUè³F. ×L‚äÒÖ·ÙáMô¢<.La¡S[nüv›ÞŠeú“ì*Uj÷òüí´õùÛÞ}Ð;Yhå¸ô2V¼ÃkõvXï¢Õ)$Â¡D{Eô¿¢ýè³Œƒ±æˆ»$”&K¤Éâˆ@ñãy»X¨×¸D}Ÿ`ôMÃ‹(¤ ±¨DM•ø³¤QÅM<&õ´”y
‰YLÌÖ²ôáäBj
zYpúîbEÔC-U&ÕÅ±’x¼ŽšæZè	4±Ìƒ“TÁ¹Äy i°<Äè!|ç”èâ0‘Ê½÷WçËÕ"ûöþP^ÞÆþ_à~ßàæ•Þ»òéoþ)RTS½h¨žM3$vøfo¡}så	¹ïžúðçMOÝWÃTaëÎcaw¸JYÑ.Õ5HÏïðò«Ëdš7¶äÛ¼¿½úéÅé‘rŸgn}“'>¼–)#Í±Qm?{iðj¹*åÅÇ G/[*»¬/xá2d%â¨z¦Ò/ÞMÃñTûÎa/wvÄ—ÄPŠùÑ&î™óŽçéªÐ':«f¼=8á•Î°w
Ç§·Á‡
}/N€í=UôVá„íÇ
^+œ >ô„¦û½Â)¥^çyÎQ¹ë~ŸÓ÷4™1äŽ†~×l,;-0Pgð¿êy•QÊ¯a©åWž9ÚÄáÝ^v`J¯Ä—W¾bˆñïpëK¸1'AÇ9æÉŒ®ìÚ2GCÜ¨Ì±`oCæXÜ´Ì±À§ÈŸPàÍJ?V–ž@°ŽÊô¦åZRásÏñƒÐsìï]|é¬º€©…]Lgið¿±þïC¬üw}ˆU€±Ãtí¨|tÃ\OÅ¾gXÕX·ÉÖyŽÕÜá5šÎBýŸò0ë÷;Ñ<9¯ò´þ.Å+†U^§åUV}ìØÎí˜hþá×¯`ÕZeé¿Äm–Ñý)±î¿ÈŠ´©:nªÉ„cF6º,KM¨sYÍº—üzw_©qú7ÃT‹’‘%Ñïà6ñ×Tù:_ÿÞÌ¨ÄPŽ8*íSKKŠyÌá˜z+Û{Ä_~ºÔ}–Y5O–}X—°ü5F»¸"B‹Ï`dh†ì½«²÷º	²Ñë©–ý¿ôB¡ -ÓbËEh7ÕW)Ý( ¢ÐÇ¤fYÏÄü{JÎ¨uÊŒñw8mF›UývåpjÙNÃpÌ¶˜”äÓ?š­§žÆg¯ÎþóåQüêÉóÃ¿z'IåFg¶L@ˆŒD…ZÙ_'õw˜ò»•Áû2x¿êfÀ!ý8|ré²6Ñá³£¸¶{!j—wÙGå£Ôê£E €Uwãz}röøex—ÔÛi-dÕ©IWß‰ðnþjVž|ƒí¦ß9/‹ëº¬/¶¬-„[qN/ÚQ^‰¡mìÄ[5¾.ÛfÕ*Ø¡šR3ÜFÃ‹ì±XmÏóDüsMï± m,~!ËÉ‡1¦öý±—1ìžÉªªTg|Eß[ðoQ2'Ë®~CŠºÒî×=!@°Ô¿”¡(¦ÄÂ:’a°NuGIW%XõKU§g‡g¿žÆ41à¯ëU“²ÖwMb´ÎE21Dñ^únËØI¤òîÒ>?^«¬ËÜYÜõÊ¹·Ìí¢ojMÁâg·l¨áë¦ãà+Æy¿‹«>ßùÿÓÅ—±¡xœ­YÉŽÜ6=Oã¹ô²À£‘Å2’ W’(‰D©'=_Ÿâ&q)vpX–ÈÚX,ßkßóV4¬%OÿüþSùÇŸžþ.ûëãSùky¸‡q.6u¸ç¢î×†‘7â<°¯§™‹åíó5Ñ*sï?>ýüá-ÿþp8¼!Ÿä(JÉ‡©gå2Nc?v—£Ò.çq\Ê…Ì?z’ÚdÙs¹”|aƒEO‡»»;Bë@ôŒ‘o{ÚI¢Ÿ5I_ø++ÁëQ.óZ/FÍŸ('Ú1RøC§ÁÿÔ£©ŸéLŠ†8ô=²¾-á'.ýpç>O¤,×HL,3gá¨ ‰);F
ûrÊÄå…5Ð	ÉB8êõDV!y'XC «Þ<ŸÿušFÌ±gÍ–	!ìÂ&šu¦¢NwqŸéæqÌJ¢A]2áoÞ#Ä›ÐzÛ²z‘:UvÎ.ÁgFR¨×@ò,:^HS©q\v4U)™’ÍÏn¶}I,µ|^èëG°g$no7›çqNÓåFmÅÃ·1§6«=sö˜<ÃCmM`MË….«Ú;ý¯[«²W] ¸O¤Çž°±›lž—|-ÀTFïp7›À,(4ã@¹@myS¤0ßiP0¾®ðÐL–#3Û4)¶WÔA±¯=ùr1w¨MD”nYœd`§¡ó¥¬—¹G¬EYë½KjŸàT|÷-ÔÒ*?p°‡M¿¦â$!<V+<’%[bFmtæ#³`½L_Û[Ööª;)œshN©™WH²©âòuLõ|a†N6“µ©â;Ý”Ù¿k¸Ü¼5 ‡´”I»«OÐIH¡ÌgÊâZ‹6#$Þsìž]lÞ6ª4ÍNªSŸì¬UNVä›5¥ªð@¢ÙFu=”W"®¹@Í•£è/hÝé|ÂG\ynÜfÞ²ê˜ªQÓ±i¥cq–G]2ðv"XY(óëºðlI6t¡©\=4¥:,pÛúµÍßá.Š0QÙ
/0µè™uP'lv~+:gÂKÎíÍüX`ïúJ^ÀÏ`Z`ˆçŒ	ù<¾(Pƒa¸f•è>-ïô•®ãf©ÁP˜›µ™Êy}¶7XxéSÛåFÔ±‡¨{&psìOM™aN6å#UÕ£74W	—9ÿº)ÞÝä-`OûuCk8-W@Ð:æz ó¤Ö°*+U“ª¶(Óí¸9.z .tˆA}x‚àÛÌÆ¶[~Û°'[US±I“Ä¸ð6±´Oñš.„µ5œAÀéŠ*i‡…ƒMu=CÒë…VÀ¼zÈ¹Öòñ±A§ÐµÞ}O*Ä `_Q{¼MÙ,mš²âË 8A?nIdU¾ÜiÒÌ!ìÐ–Ts6lÏù´@£kGw5«ÂŒZP°|&êË—%nbô³R†9†õ8zµ(v©ë`ê'!w—
éˆÂŒë2­‹ëd*©ÛæÒÒjæµ|[“âÑÓj¸¬Ç3ü–eÎØs¯ùà:Ì¬/’QØÐrÝqÇ2@M”ï{ÖKF ‚¯üßTÛè¯óC8Ÿü& ÷†áš‘€íûtž8’)„d}gä>Uß˜wÆòÎ·±Ö\ÚçÈ¥BsÜÚFZ1¹ÕÈ0”ÁÈì••Y’ê˜(.´óÏcâéD¦¹k-}TÌÑ@¹£OCˆZò‡ØèßNïpIŒàu9yŒ¶9>f)¢•’0E°2á˜öbiT.Ãw–¡ø"›°%Ç“Còˆ‘O‰ÈN}¾Ð¿c8ŽÌdB4èTAQCPòb›_Lfç"–tõw¶x¾7j±1ˆ¼œ–9‘svïÐØ‘É£ÿdÕ¶W¨>çôxe™yÝwìh+K!»CáH 	7ç_ÌŒ´…ÙWì0}EÀ`fÝ—®8r 8#‡a^iC©ÔVX® Z¦Fm8T¥#ªfî~Á fˆäš‰à¢79*žB4hpG‚Q%bX0AÿÅ%|:HweE7ÐÜŽÑ<pZá™KG‚Ìœó}E‡ÝÃ_0K4¼Í`.;÷ˆý×ÎÊr¢<±©xœåýsÚFögø+žé$Øi®cÙéÇN˜!¶ÇÆMsŽG#Äj„D%aÇ—ò¿ß{»+iW6Î]¯¹¶IÑê}íÛ·zñ.ÏßþÚ¸ó#Öî™»—…ûðî|ÐÞÝé´ƒ°íÙ1«/šUhÂQ°¸Ýé,†ÝN÷%œ8j_"|h· ï;;BPÃ™Á"¦¡=ü9	ƒ(˜ÄwvÈL¸–àØ>„lìFqèŽ–17Û¿B"0ÆîäžÖ–þ˜…Ï ó‚	xwzï˜ÏBÛƒóåÈsZºÜi1š±1Œî9Æ	Ép)e€“ 	Û±ø&0ß‡pËÂŸa—(H6’f‚;&ÉC„×@qïÛ&A]§~¦å\ŸžÔh†$QÇ;×ó`Ä`±ÉÒk	†ýáû³«!ôN?ÁÇÞÅEïtøÉDàxà[vË)w¾ð\¤Œz…¶ß£ìDáÃñÅÑ{Dé½éúÃO¤ÁIxz|y	'gÐƒóÞÅ°t5è]ÀùÕÅùÙåñÀ%#±¸×›&Hl Ç,¶]/Jÿ„ŽP:o3û–¡ƒæÞ¢l688:Ïü)W3CšàNÀâÜ….ÆKÝJè™gEH¶àÇ.BÙþm#<Ò8q'HÿÄ‚°o‚(&ð=€În·Ûiw÷:Ý\]ö¤f/ª"þ‰@o‰.ÀSŒâwKŸ,}ÿƒbÿæ`šìñLÉÞ±È	]Aûbàdé;´qÃ.l&´€Ìç˜€b3sQ&Î®ïxË1ƒšNÀŸ¸ÓYMYŽ–“‰û•Ö²ÅÌT?Ø™½V–\?Žï,ÒW§,F–úšçÎÝ8Åc7(,yî¨°†bæ×BT³ 7
qu–5³#ËŽeú–5±=/ž…Ár:³¬Fõ‡1›}”eDJ,Ë(à ó0ÔÊPÇ|[ÁÝÌõ‚ô±U«QŒå@jjkÆ¼…5A¿A3ý]èýj½?œ['W§G7pßàôj0€•™’pfvÇ§o­·Ç'½«ÁðšÀj–…Œ,È^z±eÕxôz,°šöbA`ËÈž2ÍG˜z¸cE6ÌPñ¥QýV­”ÐÁ¿ÍêJ’Z cbë.ÇÖ]HÀcL«.Ÿ¶ñ…)«úƒcÎ†ÙsÎI Ä;Æ„;„¼2“eAÍiA3Æ5òÙ×ØŠ¶Ã²Ý•«žÅÏ‚CÉu®H'qÎp _4 ™VËØ1êPo	U8àö6þD5+”h†CŠ›(lBÇg{[ÀÈ3põðêŸýzW*Ó ŽÏî¸ Ä_ÂÿøC•þ :‚RES©C‚Þ1>:°]äsþðü¹ü‰ôL@Y9c…IOKÄÙ0Ð4T¡Qé;l+B4à5™íÚÒDÃ}Ñr»f5ÑmŸ/ª6çœÐZíŒ×CÚ-¤Z*èr}ÁM}ƒ¿•Ê=$}¤x™Ö0Vb×_2þ´ªŠ?ŸB'C_QøÊ¤áQŒÑ%ê¦_^bIÎ2E–XÒSBFÐ”Û;_ŠÐR^w¾v;Î)W›#”S¼"§Œ`c‰'ÎÄµ p5’‹œ%H¶_'¾ˆÑn?‹j-È›2Ô’e”~9GëXTµ)úÄÛ³’7ÜÆò×‡Ï¢×7
ƒ9nÞð³þ¸Ï÷“Úã\CöûÒÅî®œéwòD†±•¸£Œz«&<¿m©Ÿ9ŠPÆËÞpýWØžfïUYäÞðÀÅ)qSÆ¾ßðð1ŸlÚeñ-nµv»Î‚—DÇB$HPòa®{	–Jq_Š?ÎªDÂÏ>‰¾*l‰‚<QÒv2ÙZâÆ9-²'lX#"^Šì;{{×Ýùm¬ûð,âÏùgå"úù—›¹DuM.èðÿ2Å×h-²ÑV´¥õÙ†,^†~©KQ4!ó™Pm?™Ç¯ä&D´7¥$ñYrµÂFÂî² Óž’™Y¡!LNñÜÒº$ / b¹y¿.˜C‡¨g$iÀ[æú³¨ÎL¸Kó‡-28^œ>ÑD}„% }Ü?ý¥7àë¢RóÍ¬Ñ}¬wNÑy-<›FîÔGyÄÚ­íe»F½ ¦ª’BñsM<_ˆv+Æc’ÁÉ< èåÔ‹¼O'GøëCèÂÁüD¼];’9·`íéP“Ú'¡F""w$JO³³ÞqÂdFcÃ¼h%	$–’Ý´•u¸µåfâ)J-y“!2LmI;ÌAÌ‚]UwLM„T¨ÛÆW¢Èþõ”½— nJ`Còj68‡F
>·]&iÛvtòÎ¢ÖþòêÍÙùð+Ø.Ù/Â3ª3Ã´ýZÚ„,Å« cã)™Ð.‡ýÓwÔS5óì€o%hPª#lc¾˜*bÿŸÇ-rÿ…N ‡gô\ Uô 0zÈT„E
!ƒÚ³)Óíãš;ëfÇ·ç"d¥íŸ¥°dÁ¿³¤oÎÎû¢ÉGI•lÜLHBÀæ>MMÌÌ'ŠÞ¡IL÷qÉùµRfSž¾™j+U»OC5yÞJY[Ï¶ÆYý¤ÄZyh¾?»
>TÛ65gRÞº¯žjJÞ·=É’¤_÷•µ©9ÏÏ.ûÃþ/ÇRYDÞÛµâïÐó)ZQ'ðd¥¸\›)Õ?=º8þp\ž±ØvK>8KË˜îô|²ÿ	á|¾?åIt¬Ý''ý_³Üã1käúvx/ò£(77í«—V¬æ©4¸Àå¢
Ú|Øû½2¿=»z3H6€q°y¬`éq^àÿÌÊ/°7È¦b9»"—Uî¬Ê|‹Pø*FÖ®¹¶4EËBYb&˜êEˆ­ü†¬9AÌ0äé¹+&ÅÞ‘”„s9[½\ŽÚIÇÃ €9óe³%›ß,Éž@.Åz¦¦˜[ŒGŠÕ#Û%-LÍ®´2•,À_ìKlq¤†*IôðQô¡ß=ŠÞ;ßÞ~\ü	„øø ;I ãóÓh°fŠ*ƒ§àÛ+ß¦t‹ t:lL\OœçèT‘žƒ´´(ñ7Pø˜Ä¢'Urx²>(½¤ÖÒ4\«ë¡˜„%8²GÞ×j}ÚÚãÿxsÏ©d),ãÅ2¶ðä4·cë·o"¢ª†òÊ³ _+Â’è6j–œU"QK…¸©<E˜uG0#Yke‡ÂÛëý–?¾Ó]ÊSf|‘r\Kg@‘IÐÎ0TÔs¯;É³„“”S‹—S:†´@°R$’ZúÉQE;¸T+¢¢‹WüPA2‰ŠÌ’£¹FRÌS-hòŒÙ8F…ÁÃE014ÐL&;‰PÛ°× 8ÏÌTFE±b	&ì!Ù¬"‰Ï,dÊšBbNlÌÃ1%&glÇæl„÷|@ˆY’Æ¡ØÖ¸á¸èI†òzæ#}IõJ Ü¬4þÐüx ûL˜=½:ˆÊ†Šé®•ØÞ¦ †™ljÑ&“@4ž˜]”Á—Ï+§¾_P„ï'¹ÊL”™åaÎfVÒbix\«Æ=‰0šb®uÀü‘z ‚qyÈøŒ)u-IŸD~ ˆS£ñ"m=åph†1~©Ïêæä¨<®'—û{Ðô?×ÍG fë!n2&ÄßË*$ïßø%š¸-¶„¤¾woˆÊM5;)w¢•KuÁžUÕ=¾E7~Y9Jk'.Ù~æ—lâ÷¬žÜ^•ÎxõùiRìy˜÷élçá °üMÜýUÜ:i´yÉ×{ó‘Ê¡ÇHz)—È ¡s¾/\”*¡‹r¨shêíÅx…
àóR¦¦–*ÉÎ.‡Î¹i'žÑ^Ûö‹Ñ¢ZTä[Y‹ƒ~Àž‡¾+2”mÃ”K)9eæ›ôBeNýô‘Nxñ!i?’ŽA2äLnnM6}¥—hÊ.’,Š¹Ä‹ƒ/Xñ²™=ç%6AYùŠ,„M# ÈHÇ›Å…l”Ë½(r{Ö)â¼Û‚nr³… Ê¹+:gqoà¾	*DgO'Zø v¨\=¹y“ˆ¸©S'ñRñ…Mðïkz#kÉçEÉ’.É³¥F4¹ž˜§5^ÒÇÏuýùZ4êbÇ¤3]üÆ+
yWxÉ¯¬Sùs­~ÓX	½+šæI‘ÊŠÎ_ÓµR¢m¥\ßµüÍý–<cnHK?‹<LõOTIV˜‡©À\æ|µÈ·„m¹!ù÷´Ó€¾ŒPR—úd4BŠîæUæYî9w…RVYøéÀŠØÂ¢¯óîsµ…Þ°`ŠªRÉ.”H8Ô`ÏxYÑo1ôùÛm®ÂÈ£ÑµE«IÑà“¥/F"¡¼b/)çV™úq7>_ÈiÏÏÿ°EAßôà«[tÁUÿtH÷*kº}<wÓwŽÁBÛŸ2q£§”¶¨(4á5.QÜJ·ðÖK†¦ y0QO†ˆ,ôF¾qdÍ«U÷T4iðq½MòFÑÔXc–§ÙE§H€nšJjšÕ†kñí5·iò—ZÿÆp÷ÕŸÅ‰§6Žâ¿]«vùËÃ˜âLâ$`é=Å½†ÔÌƒý?	ãœ“µhÎ%®5ŸÔmÙ|Lð‡OˆÜ×?!›ºQÌÂì«]£ôK^˜¤u“9›ò£öu¯øš1mE•€Ý›Ô"ôsïÄà—c¨b'Ò-—ŠDÌÒígg½•T87à•§&"l£ï6ª<Îsß¼$ßA>ðPj
ig¾0ôñ8Ÿæ(Î’HSSË±Ëªúoïw´öxœ­WëoÛ6ÿý‡ô‹È‰“®_ê¡˜âø!@~@²×fÝ Ðes“H¢œyEÿ÷õ°­8©5lF“Ç»ßÝñ<ß\7{øÜvX@yJÛvH¹b£ògNûîºÓ²E%\Ý7Wè?è‰ÍN²ÕZÁ]çö˜{m¥$1ÁæÁuÉ5_³6R¬$I —‘¤R©'"iv"ƒ€p4d©’l™)
Láá !‹vš–ñMPk
hJ’‚ˆòÍp²€!åT’fÙ2f”¾hq‚Ú51]Ó–»\b mðJ` ˜(&x(Ãs	[*SÜÃF(Õ”˜&	-¢´åÄFË½EswPÜP)úšû/C`<^‹z´FHôñ‰Å1,)d)²ØÔÈŸìùhº˜ƒ5y„O–ëZ“ùc™ÕZà)ÝÒŠ%›˜!2ú%	W;´]#Œûno„"Ö½íØóGíÁÀžOúžƒ©Ì,wn÷ŽåÂláÎ¦^ÿÀ£Ú¬ü_¿bˆ,x!U„Åiåø#6EëâÖdK1Àe[´@€‰Ó0x±à«ÜMd>\dX\(ž$Ã|Qâ4¬ZüÙ"%Mx‹\„ÿãÝ{
ùcÀ"ÄÄBHîEª4ûØèÜÝÞvÚ·ï:·&,<«ôìÆ8” €•a°R±Â,f\o1ž?Æš°ú)¤±Â¼ ×H>"Õç™Èòù?à÷4ÀÊz—×áŒ¦dyÒ}¨ÐF”èºˆX\DƒÈU xÄV×ÁÞâ7,Ââ‰gþÈxƒÆi†Œ<ˆ³ÐyÊW×ëG´U˜ñuZªBD8¡1qBZ
k¢Ay–©U»Má«qÑýcÍbéÍ]{RmìÉ¼"Û¿ôË¥3ÝŸë¥ï-ûsIy˜.îŠó~:uªåã¼¢z£©[ÁbÖÛsûçþ^_Ïíû­‹ûélî•»íô}ëxóéxãÖØf5¾ÚÎÅÝ·®±ªð-wèµ°§üj\`2Ì‚ÃUa%Ø1}©_ôžø—ßê ýÉCë-|…ÉÂqà[ýL_o+6!5akB˜kùZì5»	ûès.|Ô%ø" ó3¨â²_»´§“Åø²À;Žæ”ôÏŒaÇÿøãýôx³†¨@u¦5ÄÓŽÌ³´!b‘´ç1ËänˆªSþ<f^½‘Ûà*‹újœžÛ$:U]žOÐ¼”É)jRY´™†VÆu¿O5]"Ëey\µŸEöQdyQÖ±½ùYÍò¢,²-v{a£QßÁ†§©‚`Mp2,ÈÝ ©ü—N®ôâSp´A–­`!\¡?$‹•¿%q¦©ŒçöåQª8ñ×4Þ I¿9RŠêû¬ŽûØú\uuxßéìÏ4}Ôwfþ`1éáók^¿ž¹%cµ
?ÊxÐzÛ5ž‘Í†òÐÏR²¢­c»ðjO¹7øÔª¯Æ[Ž;~ˆ¯>¾ "SÆ"EEå5UzˆLi«¢™¥\o¿üfÂ÷TëAãÐí§Ùüb¸hí¯7•5@î°ö˜ýM}	ùËÿ>tnŸÒ¯§ßÝ3p-q%qÞËa/ðÇDÊVçQS¾Rëf¸~žÔÏÐ÷hùaMÑÐ¤§ßº¢
Sö¸ùœÿ«é­ñœÕ½Ü©z¢âe×SM8r´ a5žf³¤+ü•CåQ¼P48½F([ð$dè?I];a½hŠø1æ=Y¯SE¤Þ±aæ¦Q’ Z^î'9‡åßúWÉ[Ûi{;U¿¿6™òqðNˆòOo•=G!ól,2þËßÉ³¡xœµYmsÛ6þ®_k>lMZnÒvêžz‘-ÅÑ,»–œ»ŒÇÃHHBB‘,:õÝô¿wñBÐ»çMÆ‘°¯X<X,¯Ðø¶÷H#’2âb’r:£¤8GW·Cÿû íg…Ÿ`NŠÖ«#Zy‘}"w[>Nú´$~”Pç=8‘óx"‡—„eiøD
F³ô9¿vP;ø¡´EO”ç@©ýM“gMlÄ¾Þè±˜Ìp™ð0Ë9Ø9zÃà@2wæiùóÏš§%Mbþœ“NL¦å¼!ä™Ñ?:§%+N“,ÂICú‚‹”¦ó0!O$éœ5öÌ¢,Å´èéñÇ–×:~l£uTð‚9áa”-sšÂ…È‚9å<ø€KÐU4\=+`‰1Ç’.8>e4sÌÌ­%O,9Íîx^k‰S-x¤b‚lJÓ˜ÔìR²Žëa’5»n•1y*Ê„0eü¦ˆÐ8*y­ä ˆY"zœ,ã—¯‘39:ˆ Jà‡øÎË£¡Xj×kä÷’„ÝqZ-½ÕBŽç+Ò(€+:C&ëß¤4Òa(`„»ÎÕ`~èß7#ÈÎ7oÛo¿q‚YV,1w0k’0"5ˆ¸e*°.@Ðð÷Ÿ"&llQoDû£vIT$¿ee‘Bêz»øuòªRÓ6æhA¢Ïçšx­Ì± e%w=øRÐÜõÄTð³V«Q1þ8¾¼½ëîÖ54(—Ð@—ÂDÈ™S‘l~Â4ÁSšPþÜÒƒaLrˆ#üc$ž]GSÀ‚™†ÏDFE±šáæÈÏ'ÉƒpŽaÖyôj/–t»#þ’Ó²2%Œ¯é“€Od‡	ðk‚[±8^S†§	‰]µÊb<Œ6ÌÁò\cÄ@ðV)mfmÖÖŠ´ƒ³×[ ¾1µR§±+Â ašÍ`Pc¼ú&Ï\W™}ãxö°@æà*üçøftž	´(ŸcÂ"@4W~ªâÌQB0ãHhü‡¡ÒL5wúûy%%Ð.¹ëH(öZ‹É}¥þnöœ7â1ËJÈ/ÞŽ©(È$DLcV‹”LgÌBr¦p"“dÌÂÁ±8µk™`!cªÑx‰œˆ!
\<2{@Q*p¡™-ð	-§;kÆ«xT@ÞàÜÃã]ÒÐ¶Ðïï¯ú“áÅ»1¬Àšü†ØßzÆ„#¾ ¨*5«ícX}¸î[YÙAßmËø@º×$ä³¶ëôúïº÷ÃIxÛ»û£îÅ°ßsìC;#Ÿ¤2[¨SÉú¹Q‘1æ«RM=D—yB–p,É£—¡L §õ‰Lœÿ93PÅôûî‡~xq?N£pòñ¶?/o®o»“8ÞjD dtaÈÜ"ŽãÐ”£%¦©û”ÑØCÿ[…OAxY¤(EuÌ¡H2SISð<Ì]ÐqKçÞ/¦øŸ¦—)^ŠÞÖh)T;Õ«Šø•eßåŠ	¨µ7ÇJÄèæÝÿ$0 úì—5’ð+›¹ØCÓuâdðâ¤”í‰â9hò'ýñ¿»·áû=xEÓ(âý}úÌ	û‚ó`ñë&òn'>¤Uûû|•Žþø¦ñ4¡éçÜ´‚¾w%5Ä§B¬¹mÆ{ÖGŠýøfÏÜµîƒ–h8˜L`çöG½Aw¤.2ÆÃ%Ž4%H¡X$¥NGÔ6œ'ÄÙdøB\hávªO#Áç+Ù1‡\| å)ï7L{mÆÃîè_‡-s$À¾²ÆõËMYÌ£(Æq¾ý~<mÏj”Mœ~v×Cûþ½$ƒiéÝ+_™ðZz(òÃ»î¨ws}ðî„Úÿ´€;P¶Ü²?M†Ý¾šœ.cê»·¾][õ¡ÎÀ5åÜ`ò’ƒ&Eª;˜u¥<—?¿JÊ•+iÕÒ¥’º–Ö¬€b&ÜHÆ¾æê+§Œ³m7cEÕåD÷ºÇ?Z½5Šep=›·©:¶Ô6ûppÙûkìº#æz¹–Ä}¯ÿáî~Ø«û¢ÙÄ°{wÝËûÉÝ fµ›6ó]ÿ·ûÁ]ÜÜNØŠ¶î¤«Õ¨.‘M¾hKªêÙÄñÅ@Su»g…lÞï*Ó¤Ý«™tÇdÓådèlê°D<‘¥Ú:Äi*ñ]ïBQZ,'Q@S‰õj¬1HêÊ>Pˆ­ ÊÈ@ØšE‡ðèT0e€ç@¦Ž“ŽMÞgP®±4# -Ú¢ÎOmüù¸äH¦€¯JÕc«©œÀ€„ÜL†%3T¾¯*=U²¾9·T	åu5¥fR‚²1‡TST&ö©v®UµÕì‰‰U˜Eþ4Ë¤Qáƒ(°ÅìisÍËÔŠÂá´ |ðÖY˜åÚKC¦….‘öƒ@¦5ÝŸÎ™fy¹çÙO	Çy^³¬O»1ñÒ9I_*>ö´~òà8«”à(Å-Ž¹Ž?Ë–”û³N ?Ï 8!…¸hú½ðjtŽoîï.ûÛoìŽ¯^!SªpÕÂé¼Äs_Ùã6ÕŠÖü¢£	¾d%ÂqT=¯cO\5P›6AÎPP™áiA#Vý”©Ðøî/³˜$ÙÏˆ5RäË©5ð¥€ú^äI9§iõ«jÖ-»±U5.Dd+¿¿ëÔOB–þ'Ù&®_mšZ@ôŠU@½ú§r„#eJ¹ª4ÌóEê‡;
gºáU±WcÊL­„ÓÄÐÙË¢²nˆNùƒ@5™[ÅG:¬''¾Ö}E*ÚaÈèÀž »)j6½6!r­Ñ#íD¡. Ú?‰ÕÃØž#…QE†’+Išf®üçÕÙÿU*ÄÚ(ÞQW'Dž§SÌ¾jÕ£^
¢kê:ØÆÇšFõ¦K)oôž†åæÝæTø"+ÿe‹SF9ñgeUÊ÷œÛ–mûmD>†ª§©¾ÊÁkØ°Z)Í´»ç@<º/fù·Ãë„:ºvámºa™ÕÛ®…6ž›Ò÷Dãð+<¾¹KÍÏƒÀ¯ƒvÎ–K¸bÇ‡#¡¹t;õ“¦Ó”ÏÍ3gÃg¼ÖÖŒÆ|Fý Ü¨CUæ0¸ª—j“K\úUÚdÒ÷ƒÉzÖ¬æ˜iÕ~í•Ìö˜=ãêU×œ±3%üd÷XæÉ¼ JîOsU\suª£æ/—«á[ÂèeÿRƒAyÎùKe› 070701015D6CB600008124000003E80000006400000001642C0FB600003530000000000000004A00000000000000000000004D00000000nvme-cli/.git/objects/pack/pack-ab19e15b14c2e81665ff52834179cef91f4b659b.idx  ÿtOc                              	   	                                           "   "   #   $   $   %   &   (   )   ,   /   2   6   7   :   ;   ?   B   C   D   D   E   I   J   M   O   O   P   Q   Q   R   S   T   U   U   U   U   Y   [   `   a   b   e   g   h   l   l   p   s   v   x   x   y   z   {   ~   €   ‚   …   ‡   ‡   ˆ   ‰   ‰   Œ         ‘   •   –   –   —   ˜   ˜   ™   ™   œ   ž   ž   Ÿ   ¢   ¥   ¨   ©   ­   ®   ¯   ±   µ   ·   ·   ¹   ¹   »   ½   ¿   À   Â   Â   È   È   È   Ë   Í   Ï   Ð   Ò   Ò   Õ   ×   ×   Ú   Ú   Û   ß   á   ã   æ   è   è   è   ê   ê   ë   í   î   ò   ö   ö   ø   ý                 
                       "  #  %  %  &  +  ,  2  6  7  7  9  9  ;  =  @  B  E  E  G  K  L  M  O  R  W  X  X  \  ^  a  c  d  h  k  m  n  o  r  r  t  t  v  v  x  x  z  {  }  €  €  ‚  …  ‰  Š  ‹  Ž  ‘  ‘  “  –  —  ™  œ    Ÿ        ¥  §  ¨  ¨  ©  ­  ­  ¯  ±  ´  ·  ¹  »  ¾  À  À {@W‹·„ß¾\¡_ÀÒ,kûzÓÈºß=vw®¸©WS›”Î;?~&¢*ÚIÆú Æ%5¦~ÔwA”-_K‰X

Ýmádè;Òl}¡‹aU|(°»ìüAú¤ Ð.ò-a¾y˜Œ@]y%ÇÀao@Ô8÷ËË{[£¤tVç¾zVÎNí?©ßvù}íŠ“Md…¡òý’Ã4JS(4ä
SaÓ<
ã0ôø¶î‘|ô†r$×ßl
ýÇ}BÇ×mH-óeä¹‡·]Çn-:Ç$éõ´<JtªÕÐhÆV½.åS´\£M%NSDpÖx™ãª*"o8cZhpq$?À­º³¡sÈ=ÄµÄâÊxáj+%ñÌg— PßIï¶¶¶¦ r¥B½oR¿Ò'ŽW‘HBÞ¾
PˆVÇÞ×«æ?›A9iE¼E”ÖuÍ’3é…¼)¦'¢c1á­¼ Ø9à6Ž)^g(]‡p¼	M’¦!±ÃCÈÍùéL|—`eìnm Ï^AS4Nc‹?$á*ÿwdK_A6uI°S¿ƒª—Ñ><{êJÈÊÈP}¡YèQø¹5ÆËti“¤´ÑB~×ð(ÿ¢»6é‡6e±MnÐÜ
¼Ú¾§óÖ:¶oe Ó¢&èCÚÖˆ†ÿÓ@‘ûbùHØlêÑ}_î=ÉßãøÛ7È„£çá î-øÒ¨dXÙ®ê?¤gõ¥¬î×˜g]#‚Ï!§LŸÑ…r,ëÝ‚vW­	7²þÍ¸
f·bº8H‘Ÿg$ðJº.{qC'ì¤’6¼Á¨™7Mó™ÉqSŽ3ÜõK”˜t/ruU^<?V€N‚oÊ­²q+6Ð¸‹?#“»	ÒÐádò€|7Ì+Æ©	¨R¡K{À]&×fúËÖÇ5`qˆ7›¹ækž09—2ÙêÃ4¾Uê).Œú¨æ£_'k´„ÕžR‰@å<‚þh@3o„æ¦„'aý‚)(9Üjg8S-“Ù:ñðæÎÓ­× H Gc6§È	¨”6Tö£Œæë¢f mOAdËm‘&æ½£Oè¼wq  Üð_HÁjÈD€B´òw±1H!•I/ ÏXrkŽjß¼Ýù;’…!w=kçAæüUjÖR³Ý‹Óöu!»Yqi@úÓÕ]åmÞIÑ1öi"=4Ð+éiÎ÷±ör*™lm"ÈªÑ")æmC­¿äkp*L"ÒeFÄãAjŒ:§ÑvÒôW4É#iØ*Øë©ð¢)±‰¡<ƒþ†œÎ#Âçù!{æï¥Ž
¾×$þ{¶L#ÆË	‰EÌãÕTr´œ+µÈkÁH#ÈÔþïhÎ™ÝäwŽýHŽtÝ™#$Pk½
.*ÿô7öa#VHæp%H­Ð7U,:¢¬ŸaM.z´Ý?ú%yÃÛbXù¯83±hVµ.èbr%üU¸óñoÞ#Ú"þ/ŠrÐY®&eÝ­Ïµµ¯oÏúJCígÔ†l'6¯­¬j+_Ž‡Í†Áo;‰¢ó£—']/Û‚W¶ß[áîF’yÈ[C¥ìŒ'Ä—Ä™åÚ m˜õ¡~^|U'æ¿9R+ÚŸ)*ÊÌ®,Ò)(+pµ¼Óê*x<¢õ:‡;8;A(O¶–l[:zÊ{ÿQEÊš‡‹C(Œ#KàŽ~¿1hÓ`‚¡ÌÒØIXc),ª§l	rÎ¤Yý¢¢1KA*äÝ‘›M¼€|$Œ¢ß@Ü!’Í˜~,òHoâò>Ñm`”d¿Î…<à-];ÄõŒw!0ËÜJŽG%¢XI-„âÞýÄ’;„Š°g`îsµ-ÛŸ’ñÕ¦ï¤}¥à®l!Êuk-å„‚ˆÆFèÕüÅÅg\‘.š7fa\[¨¬Ìõ…ë²úd£/<~Ùª±­™*pPÄó5áq/ê&-²ˆ/ÃLðµ¡ÍËÌ…C/Ub°j‡ÁÜ/·EªÚ{'Ž|}0“¾ÇíÎZ³Üm.ÌP*v¾ð=0æûœÈÆû‘ÖÆvk?Dö7"2KÄZoo«”_ŽÌ‹ëìžæû‡3m„yN¿@‚OkÎãq’BÜ4t5›¤‚(M¡ÏÅÿÈy¥Ë°k”S6AÈOmó“Bo‹tXæT?¸7¶.’™Ja—6vûšÕ¤èW688<pUS{Ïx(´à]ö¼‹<€9¦`S–ˆë‡]Ç54k‚ŸN<“&U·9^(õl`æTv”àS<êd3{rÓÃ/]’X¦«L.E<îºïiõÎ_ÊšgtKf™MŒ`=WýpÑDj÷é8²æ:@¿2Á=®ÖVÿ·ëËS7YÏXh:€>“7ãp’¥’'õj?Ó„ £>•)\9Í…Ýò2dkƒé8âr>˜ù¤Lî,ñcÞ;”´|¬2i¬>¸…úÌÞÎ¸¶Ä/‰ý¨®KFÿ>å€MïMØÖgµu¥ŽR?PÖ$kNÕQUÅ8ø<¶É59@íÏ ÐñÐBýë«žÄÏCþA?Ë,Cä±Ø™¸§ÐŠEƒK7AÅo™W~h³úƒzã§+Ô‹ò®ÍAÈ2‰(+çã|û¾§©<(PkBqˆ©]ŒRç	]zü¥gº›§Ï÷5BÁù…j*êú‘èòÙû'idCC	“F‡ò|÷ÉO¡"›lô¶&D8ˆ*Ì^óµ8G=0:µW¾ù²ÙDµ>‘¨*ß&`'a½»¬ëëxD»O”î•*è$e™³ÊÕÆÈŸ)DØŒï;¥¹Æ‘CN¯‰R˜AFá'2L’ŸG´ß±°©·¾¡# F!6Ôj›WókP%ëMŽ`À¥AFhø9ƒÓÃÂHÊ/¿fâ³žÞ¾F‘°¯q%ƒÑ,NMnfžó1'G‘Y5ábl|ëT¡é>GK©9ÉzÒWq¾«ã¶à¬(ý_Gáÿpˆ^³ó~ï®`‹j|Hm;Ãá|0ÚFoú> Ô¤m1Hm‰ýoÈA!¦$È©"J|#>HÝgñÐ»%](Á¶ÛÆ÷Ò(”0I`(¸M’œ·žO2Ö³Òì:¦Intaß-z6Ñe­.m˜"…>xSKôÑm˜)È°e#ÝÀ½%Õ•iÊLFÖýïø=OD4k¼‰ÙÀìé¥M^ã,o÷ îâK¢d(SÓ¡N³SGío‚y@ËÙÆÝ:Ê)N[›à¦Ì¼dáÍXJ,ÎCNã÷oúoœèVAï×S‹ÛÒO¦RÚæždXæÑaé·VBì ÞOÛ?l0^›^A#Z¨D‡X¯}P4ï0îTÕï®¶ŽJä ÄÈo’PÁ¹îœBøáèÐ*VDkÿÕ,AQp1#ö†0Æ¨¥ý! AhãïQ@¬Ùµ,.>šÚ
YáŒ›Q£Q¾)t(Šac<vÿ´‡¼`lRx†LÚÄ³6èÂ¤$Î¯§÷EŒR„Ï³é,x8YxÞ® 2Owù|T§ƒ'æ§f/¦†­£!mVUuÏ«UxéðGZoÓôHXæJ+²§ÎCWlL‘±ÆÖ*PPˆGÚKyêŽWž“#õ¤6 “±:cBHe‡lWò|2OŽñhWÆÃz@¼t
Xc¨ mk–2H>göÞ™¯™¯éª YlUðm¦ÿYTŸÜÝ‡I7
åõY“…
år:ŽÌŸŒØ,‚‹òj0Z*šÈ¦·I7üõðF
Xå—/Z}Ù·Yõî1 D ë¬‰†%Û¥[mÛLf,Âí>{o-¯#0®[K‘$U’§}jðÍÝÁ2rW¨|ß[ucæ>|f"î0Lîˆs¤?:¦W[ªÅ•÷a‰ÈsOÝÏðí&C»ÀÂ\×LÅ)
à¦zb|ôªäHæjò^^m<1É#’R<†;åÿa=_<”ìqñs:O@Ì°!­äb¿d!_aZ”ýØÁ?3ä4Q‚ |ïbþ=cfÖs  ’±PðØ‘™QçWäcœ´yo	œÀ~1#~X5°ïQc¾õ×¤"TáÜWš )õd9¢Qü‘UXÍô˜=–ƒ¯`¡Úd¾ ¼j¸"°`òùQÞsm	ï1fi'¥n?ÔP£Ã¹Ã…EÁ®–Çg^ŒPî¹¼19q¦›˜ÕÁ—V.ÖgyB®¨’ÂsÄ"¿…ÖÓ‚~Q-¡g²Æ¦ö7’ŒÀõ3rŽ6hWØÀ	´÷8\·±=§J~he©QK<'X:¢›øÌQÄÆAhëÐói¥÷âŸ}Ž,œþdÅÌiePz3YÎOVËì×_š¥Üiƒm¯ÃGäˆ«¿Bþœ(M}:i­M¥ÖRå¥+Ê§ìã
šh^(fj‘Ÿˆ"/ß.ÑvÂ_FZïkB·\þ	n%Éq©èJ‚lŠÂkªï¼&ßçšˆgãèŒ´{,!.tÊk¬ä|µˆãŠP=ÿ¨¤e9ÓN½kçel‡ !ˆâ¨hMÖý8lú”Dg&zÇ}íž¨$Šñ&¸;am«9X‚Ä!–J—§ùº"·Y¤nBg©|GÏBÈ	Š<^4¤n:F%¬LÊ‰j·Øß1ã7Gèo#ÌOù¢Í³üãR]•î„o05o2dÑÒZ"è *Üž‹3®a¼ºaFoqˆ6^CN<Ho9rf×T<²6o¬ÓýR
´läÚ£Ôµ_Ó$Mp6làÄ™ß{Ÿ6 VôCîëØp6b\wˆcH‚t Ðª/ùMR&rÅ?9\ƒ¹¹ñ‹¨EGèÄ8Orìð‘ÜÐTc^Žñ8ùùbˆ‰t%½_X<÷ÿqŠvñí„ÛœJtÄ‹5jH{³/xn­ãpœ5^Úéu;êí¨ÔI	­Â¥-RáUüêö@uØþõ¸’Û‚ítƒŽèra©GàYvC‚q8¡û>[:n=&7ŒmvË×¬wÁÿ_Ä¼De[¿ ÙwüÉðÌ4‡þ¶œ0€€¥R!—ÊxQ¯Î%‹±wŸ!”§ö¥âÍx‘¥m¨¢çFî—=­(zEÕHóÆó•ËÀ#l7w’ ~szF3¯¤­èKYóŠËíy…èazLîêQ1mwÄni÷EþL†zRiWMhóGüF·((¯Ð&mzÄ<hâ§L
/¢Œ6%y0EŸ$zÌÅ8LdÓ³KsX9j%	fü}Š_EGHÄ…hÿû˜lÿ±=}C‘OØÒ¼z£ÑŸ8J%KÂ}{‹xÊC[}lTù§A•fI?~‡„˜=’p²›CU–ô.ºñƒþ~þôÍ˜ßÙ ýéÚ6_åû,ÿv®-¤kJµ¦ö,>—úYÈù®Ÿ¯ýÆ[³ªRºá±àU„€a<PÅ€°IbPÃÈâjã¨Ìó8õ¹2Å¼áB{|æ¢´ï%ÙØ.xê¯@^S×Šr¸Û!b?%Éöu\ƒcü¼Ò{£‚ºî§…ÞUûJyQÊƒ‡XÅ·w]×(u§ÂIüþ@ÿŸïƒõº$Ñ7@+ðŽœã?{H+„¡Õ¡KvVZÓ9C ";Üôš„Ó¢ ‹_Ù¦•¿Ö³CÂÂÎçq	Í†vg2X©^²…»õ_Imäßí—P†Ú?ø¬Mö½Ç&|•Ñì¨†ÿ°ŽÇ,¤wÑÒ”ðHI|pñˆ”ïo€¬€P2²S%C.Tâh‰s‹.‚hnäÿçÌH!X‰lÏ–\¢‘ÉÈiêR'3\/Ùæ‰“ÿ4àä9ºG“X5|£:Õï‰§Î;‘ÚÞ1&v-fÉ<þ˜þ"Š)Ï“½f+%Î;ÌÆuÏˆÅ,Š[•<÷ÝSqU^ùÂÿ\4°N^¾‹@¹¤vö È!zÆÄÓÃ\"Ù‹Çß–ÕQå§Pw)¦¥²ò=¤éŒqA`­Æ™À’ÉÍÍûŽþ}åÁMŒ’š ^»ÇBzÐVß“ñaá|ŒÙ#M¡ë.é`êì{¬Ü)ãš Ýâ¦Ì©µ^%çÎ®f‡¢6Ôûæïžz–ÔQNÄ~Ùø¢”ÂêkT[GØã½aE-rÒH;°øÆ¤Ò’=3SÑœJnÛXK×’(Äù.ù2üL_TîÑÄDËÒq“8âfµ–|ù“å—á©ù_?!Çù‘“NñÆThG\îTÏŒGÕ¾¹J=$” ÛóXüùÙa¡5\§ð…©3„•!†Z¹1ú›èmL£³ËÅ•4o!?ÔÚ½ÚÒ  czUL•Ãn\ ™p ™UÇo‹dã]Ä-Û5•ÑJaö/N½°pfU"Ìý|Jì–rx\V&ŸbMq´´Äˆ¶ýKt––«eîqPW­œÏh‘ûf[p—–©¦÷Í:óG+Ü®^Ÿi%"–¯ªÇoç0•ìþâ3ô‚ÃjßŽ˜ü2C/„yÑj¾Î>AÜ,iÑÑ˜l`}ÒbÞXàÙY¬zŒXwÙ–™2GJ”n;Bß]âaþ°…UfS ™F™t‡@æ†uAªþÚ¬o&™M»ù†–)ÏG^ÆÏF/;¬™X`M¡uÛBç.ân«'æ\O™êƒ4í†2O›ä’â•¼iÔ×ü¾šã«1I—¦¤0ôïÿsl—ÍFš$:CV­ÕŠDm¥­Qß(u&u|šOB–|-Kõkû¥ÌSA‹#½x›|yÔƒŒÖ±G‘(ïÑG³ù„ŠœÛW#æ×¨¼_’Ú–ðê>2×Iœ»9§X&²×:`D¬ý-åœÓÓ±%&î@øÿ¶çþlõ+TÒˆDŸ^|Ö}™VåŸ´ƒÛD|Y$£9\ì&•)ýMÝ	–çºàvsŸÃ0™QÁ´L‰óÏû¶ýPõ tA~·{ôVÕ2Ì“~CgéÃ4¡1ÆmÉï.Ê¨õÝ­àæ¡4ÿ×„Â¡–Ñ•õhüÍ•}×–ø¡@pa1ø¢›r–<Åœ
~­K~V&éV£zXÆÞRS.hˆ!?£2µ?ñ£³Gjh~âº¬\´€=Þ•@”ßÕ£ýjè¥Õ™®#Ä‘é ÕQA¤ÎùÂ¡ØD%Œ¤÷Y¤SÇ?x¥C]ðK–YLˆˆj,ˆ.LB‰¥¢K™"c—{í@$:.[˜Gº ž¥âfêžþ-Ÿ!ëjå$öŽ¦vðClŽ¯–Iïô‹þb¨ù`8t¦¦Œ*}4Ó¸œä`¸8d/Ö"Ö”§~®£“"—ÍÐì+_*»:äž§™*„îÎoNµäžÂ"À9¨d6;2Aš€Gåäÿ°XAî©Î¨ˆÝ¦¨ÑdïÅÎk
Ÿßâ¨ÍÝ¢`÷»>x ¹?qDSŽˆU½š©Rá¯D¶,ÇX—åå¾j–º©b]å˜á
fëÇô.} d"Ìýªˆ&_˜Ø«FÊP:ØðkÏù°•ª‹²…ñj÷ý:Š®BLÖ,øÆü«TúË,(EXÁ²ùê„KiøíI«X÷ï'FtNôˆ¸F~µš«ÆëÆTîë*ÇøÿuûÈÕp¬rÀküÿuïj‰ÚÄò"×aÁÇË¬Ù°Œ›&ÈÀÓDFïÌC6Ø¸­Š`ZýÐ8Q®÷díÆ†n;ý®;±œ0"»e‘¢iœÆÔ‘®³[
S•kzôSÒD¤é½$Íu°HÕŽ3õ/`#ÕnQ}Â7b¹]†±ü@W÷gé"?µÇ¢¢¶ÓM“¸±WÄ±š‰¹xx®)rÿÄ=lÓ0>±“Ÿí$"§èY"¸Ý¸äUu”¡±˜¤³ D9¦¸ô‰ÛðDãz^"±õ8'»¾
@Á˜ö2%€Ì>SšÙ²`D^TG­^ð\áb—ƒïwžè¬³âKØÂèe/Ãõ_¹Ñ:IÓ³¨QÜWbd¥ œì2ct¯Ý¿³TNG¢lX3;›¦µ°4‚õ$\³p¸Wœ–ssW —vÂ+Ù³˜í¤Ã¶špî¹ãù03*&8ù$³·¨Šÿx”æüÌÍw¿×ö ´^^C˜¬A?²íÙð"È¥7æÅ´i0µAwáawp5tzzöÃAË´†£j~Hþ{Ù_[¡Zê2ð´çò™ŒêÔÚzXuÐ'ŽÑ•µà<þëë“HÎ@‚h¾Õ¨â$Û5*·•§Š‹\38I?u-¡ÔÊ¨Ä?Þ'·ì¼ÔfeÞŒ#SbÐü¢ûô'‡~¹#[‚ëé#T¸q­È+¹]ÓÂü¹v…ƒŸ†óF¡ŸE|JðZ4¨àŸºŸáîY%‹?jP]hk`Ñ?dzº=oE§¢žýŽ9>}ôøV¨^£»)jk-Ï_Éªí¯
P­šßIútc»9é=(“F>…¿pi”Ÿ
·!ŒO»õmW ýÊ;1(UÕL0_!‰,¼\g¶ˆª1"ŽgIl²™°ä2¼“‰M¼A‡‘’5nèçN½ ªg<x(¢ï6ÕZ{èÄÆ6½+Ö—æË\ŽÉw)ËÙ‰ÛEÂ½_}~iÖýA«,ýõï*—4¿\‚„=FÞ¸Ú·˜Ü˜x;az
¡¿ÿhf}_ÇXËÉö?eùûœðÒÀg–s ÷„¢tìðõ
€ðiÀàZÏpQ;"—‰S¦Û×¹ÀêÈ“æƒUDÞÖ|U7ÝJ
Àý¸õ ¢ °¦3€æƒ™ºk~Á®‚¿ákêÖ‘Ò©3t8J@¡ªÂ™}Ó—ö¥…¸‚Jœ¥‚º`ÕÃb@‹~yF¸øŠ&	%JÎŒq¶Ã©Ä¹O´
§6~¼rŽÌ™_{øGUÄT.Çáe+Ñ)ÇðeÝûûðÄ¢ £åŽöãÆ¤Ê8›î|?úÄß±ÓZ:×»b¼²€¡|ödÅZ¨±ÔEážÒ™÷¤"Ô¹sîÅk˜§¬cÕ+JÙVkŒ{dMgÏ|Å—ÆÌ_.z|»K1Á‘’Åœu£ÀPn±I%â1>ÄN˜ôšÁÅÊ¥ì>HXþ­«ï¸`ª‹¸<Æ 'e”rÅï!º·¤¿30Š¥nDÈÈ‚ó!¯ZÂþ#=xàˆósÚ È‹éé¨¦=÷šV”óRÞÃF€ñßÌÈÚjÝ_Æˆ$ó,Ï2€6•ã³Èù÷nPI–‘¨·¾¢g,\ˆkÉôH	9»((Ø¼¨øP$8PvÉ—•†ˆ¨ýà’~Š#¬û°Ì|½Êrð†TT—™-üŸÂo¡š5®ËÊeÞÜ{¿Žü¥ð1¦ëŽTWqðÊ²á¶Î±eŠP¡^u¹t+Ë›õ§HÛƒ'EÈöÔ”¼ƒ!–Ëó<ÓŠÒ\Å•Ã+ÕiòN H–Ì!™Åú{ZëàÜâ…ùs˜vhh›ÍDÈÄˆý}ÚÔgtÞÄšžÿÍÂõÎ
IOA²¬]§¡ß¹`„ÍdjY]™,1E†6ÁÑø™ûÌjÍÙa]Ç^Æ¼´½Dìäiö—QæõÎé²5ÓÕA-YÑ0ÏNj6ÌSßøÎñ-ºq!GËG§æò³g·eo`ËÎÿYRf<;jÀ=“Â¹Û›ûn,ÏHäÓ[R7•ŒÕ¼»1æú%mÏ^”ÊrÓËŠ•8,¿ó˜~Ò•Ð…ÂF/Ä£Úà»¾ÝÕ/SÙÍþÑ³Þrz`;¿ ®FÃ¼tv+Ò2@‡,é&Ì_B\xµ‚b»ˆÒvxuZýÔïÃ”.þ´›E´1Ò¨ÛÐWh÷ë#Nw$ˆ6ío+ª!Ôc…+ëžpŒga$ogSÍøJÕÔßuÂzò`‹zÜw¿–V2d£ÖöÇªÖwg1AÞ$¢"DÐ÷kÖ‘õ‚³T£ÛRkñ›†NÖCFØY˜>~¯‰¡B†xëÆ;×Ê¹ØúÑ›¨_)¬´¡òÝDe›xmghÚ?Žó.ÒÄLcõ?>jN¢,ŽäÚï)‹ÓÍ…þÔ*¾!ýp=Ûúp3´J:’¬åbŠûU‰ÜLd¤uÚQãÚÎ¾.×®IûÇÜžOEøIÚâ˜pUf¨BÔ¬#þÝ$^ææ6¿Q¢U`ëÃ˜˜w¾úÝ“(CÈO9ÎÕP­i¹lƒ[1Ýêc7aÿå;3ð6ˆì]Q‹­ßp»Ë´»E#MQDÆ"à¡Aúeß˜–7ì­+2­‡rt^06’„àêC„Î»]³X+°N|3qàˆ0œP%+eRá^Ýôà(¤üà­Î)kL‡Uî@ã€ÀN‰FÁ+í:á ƒ]ƒÕÍTÎÃ¡Qúõœ½hÝòáQóãOxù¦×–†áµUDá{?W9[z&L¦oÙØï¡/5îÚ²á‰n\pU5xŠä%çÏà0¯Râ%ì†q”’‡Pùz}rçÃm„ã—Ô§/Ñdµ¯ØÜ%4ÂœŠ¹£ä@Ô€šñ~ž‘ÿÐîÂ*m¨¸lÔäJO(9_z0·¸Âÿ7BîÚîèä‰áÚÝ4µíMd?½åÒégåj*{MY6¨úkºP_,M¨åÑ;Ð=Cî„§„.Ìa¦5œÈ™vdåóXÆq³d
INºÊ½´9.ïŸâçO´G4Ë¦ˆ’ÕèØªYç¹´W	hO¿z¤ËŒ7ýSŠsèÏx‘ÅÔ‹ JûžVÎÙãƒXçÎèj÷óÕêYê;"çy^åù‹¼îs^èêQsÞÑ~/´•v©°Ô¸U Høéï÷4	N	ªØL5óõ7z‡Ž$°ê}­`q¯®ÉÁd(u‚ÿ<•^êé©Ö›=ìéÉ²‹õŽ=W»ëÀ{ØMeÙÄöÅj³·1eë~HOK¶œñ}Uwú`tÏi·²ëùXßSgœ0Ôü4³˜¿åìÙ;ÑÑ#”\Š"TÈÝ‹¡Æz.†í}Ùƒ}‘²D¢m÷s°j#þí_¦RåYM{>xíÄ“ûtÁîK¼q¶<«‘µ×—¥ÏâÿóLð¢+åû1a?ÎûIC£åBð%ô°0W½¾jþ§Úêü,íÑ/ðf¾T‹Uœƒç¶§¶@ç­ðÎn¸ª0ø_ãÒ–ŽSÖÿ™ðÛ¸x¯ÖWurÝí(ƒ”ùñIÐ1•f€to4Ï¡U–ž[]¿ñðTž¨ÉàšoÆSC+¨´ÙÅò@•‡Nc•Bûy’ÒrÚÉP"ð_ôßY#(W£µr³à¸ÛÿÇ<”šõy˜lØŠu}7õs<‡ÚØãõ4##¹nñ¾þª&+Ç@Ö"põ*œóM0º•¨/.Zþs‰õ÷f÷ToL‡˜Zˆ4Q]û`ï—÷phgØÙÙ³u0†çÞ¹#Ïõf’÷þŸÎÓãWamƒ©Ëì;äªø
¥ø 9l…táë¤‰åò¸Óòø¼ËövIlx/¹4$ôÌúÏª¬¡ù@éE=?AÄ¯ýw—6†©ÄþšùP*¤—‰c±ÃMözù¸‚Þœ]oêù›&¯E8¥qPø(Ç®<úñ ×Sú0q`Ž&Ð­Õk°6¡Ftúã«@¨}*VX…¥Fà,æ¾[ó¬úå
U8Ç§ŽäŠþ@R…½Ñã|Hû~ÁÑÔ#¸NjÀL¦¢\¼ZÆE±ûŠ
0‡¹–Rç».7ÞÄµÁmÞü	¿»÷bú+å/žhŽþü}*ƒf?kNØc›‘{„=oN7ý÷êzÎÈ€	,Þjñ®Y?wý¡ãšT9¨›TòòvÃ_šm©~9ýõË±â¿»ä[cñÏ¥¡Iû8þ6Á¶~½5¥d$Ju]´Oþþ›»Ø$²ŸÂþž‹F¥ˆ–{™æ÷jãÝ7°·öépÆ˜T;-ávàq©ƒ3.BªÂ	¢]EÇSgëÄ¶´„œæ3Í¿šŸW~wË;=©¢J'·”ºMIËV„#‡‡z_ú¼BñóÙøÒ-ÛßakÌ¤P{0ýLV¶¼8À~R\×ðp­f—@Š÷_¡M3stÉí@ôoåµfi¨ß¯B?5†	iLNq“q$­Óam|˜3±L|Ãë8®€aGiª11l(†«{Ä*sÝ%  ïNÉ-ÓkÛÂL±í¹’õ`¯Õ/ùS“‚¤Cê‰:ÆKÿKAhWÅŸÄ‰B°ýùQÉ£É÷.6Ý¡ :°«Âi
ùˆ›´œ½Ž0H]6‡hÃnŸœ?õq‹›†\.ëÎ$ñÕ'ˆpNiÞƒâàE1v2È<äÎ‘ŽZ¯£NáÓ’êÖ"	²ªNÎŽ²èíÎdØÃIiÛ±Z“ûûÚœlm!Ô¤¦+rW©ý	ÀŠN¹ª?‰eG^úßXyÙŠuM)¨1ñ½7¢rmËÊæ`^d³‚b¶ØBÚÛ'[Ñ¤Î•VÂRvbéõ¤ÐÅî>÷¯=!Ej)4”[fâ'üàÄ1¹–7*¬)ˆ‘¼Çé.tØ„¿:N½}5‰²Ü±³-JßÑÂÈ	‰@<'ÈìÃáÀ²¤bNøø=|µ°D¬gùFš­r£¯^€ÔÇÓÜ³‘¤eÓ°¾ÄJåWA	Â mpj÷**!ñÏ_Tb=³DEˆ6i{h;ÁÛS½uÎV| æô ša;¥ßˆq¸q„ÀDÍ~ˆ8ï¹o‘]•¼Ç­wåFn€^=Çå#ÙæoÜ4*œz;A‹Ÿºb·Òhuì“k.:p¸t"å'ó=Wû‰×ËE½Š è0‡(š9@}"ãTK?ÉCÂJ­6ç.ýQ0Ûï{BZ6;Š±ŠY:qB6¥Óý›¹TñŸf@{3®’wP—k’-¥o@bÉ­¼C¹ì9&RÑ.­£—Â¡GÞ(„„Û)°µ -ršx ²Îööu,Ò­"nÀ§ËWUû"óUa¹âÓM¶(‰o’#Ó+ç¬–g½$ý*þŒ~y^–7tžÉ¡€KQ„8d`^ï{Ôí²¬NOWqšIÛÜÀÔµY£ísìïë¿ùªëV„5K6 ‘Â±¨¶5éáÑ´›C(ÉTu&•H©BK­Ë?)ÏÜJ/À`OM(Ú{?É}t¹—öOL÷¥"Ÿ=¬íOá5Kå°˜óéWf Áñi ^“6lâ–¼m½D£ÍoXSÂ$ Q¦Hßb0ã#ý›:G½‘!lxÞ¡$.Y][<kÞ:K‰aÁ•þl‹ï5NHˆô±{?Ñ^ˆÏ·Vöë|C‘o¥ÙLAÞ¤5!J?û!ÇaTR+7 Î¡/Áq5#mzƒ4Nb¾’U‚Ô{¸ËÒ¦N%[%í¼ÿkñaÄjä³¦‚¥¶fNË|c’q§‹È#®ãîÊÙg®ããÑ±LuÆ2ÎÂ6}þšhÆé—£(›Þ&ŒŠ “±WcSóÿGöß!áàl£Ü ?¼ÒY³Á·&¸©É1ø•¢$iwXç^4šrL{&Ã¨–a£ˆs³±oÿŽ)bN¿iãt'0MœDyÂøäà#e¿’âZo,‰{Ž÷zÒ]ïÝŽP0Îv¨,â2B….:õƒ€›kÝ¢,iÌ(o–»ÜBN1Çgå‹Þv<R¥wßŽeÓr¸Ôè‡?¨ü…Ý<a’‰Ô JO¬«øUnãÑeòCFö€‰ ƒÞ¨‡èrnsºtf—fjSQ¶£—·7MïÞ×gGÝEªãBJû»Õtfa¸§îæl’®íŒÎDjP@åý¬RBï|Ð„ŒQø]%›1ˆvª¸¾zo„Â:û%¢‰²5Ý±™dáƒi²¯ÉÄ:L¬ÇaÈO^´ídîŽ!Kn’±….d½wzé+ÙHùÆÔB”L	××‹bó«eöNqÅ¦l‰7DH±•žË%Ækëtð¾)z[Yõõa $MZ;Eˆo±§ÐoCò†.+ùW2SNŸ]Ñù:Ï…7?>6\µ	Œ€Ï£ü[î0e3‰{Æå-2°vn{“æÆ+àˆ2¨7DIfÃC57ß£Xô>"ìù~
âzÁÔ©²zÅ—õˆM‚V¼'Ø±õ©s–Mí‚¢¦çØ/€‘Ê=Ÿ:Ã%<®Â>ù×¥)öØË¨"íøŸJâB¡spL`Èñ4¿´±°¶L¡Üå€kpæÜH3e„‰$üêžò‘ÿ|./Î³î}ÙúZ2œöWº©Ñ+‘Œ ˆü ~F Çß ]¦  .0 •ú ¿Y Ïp Ù6 ŠÐ " dÎ Ì A¤ ÛÅ €æ `Ä Ÿ Š' \ . á 2z á6  6„ e òr    ÷Ê Ï Ð d‡  ‡­ µ* Èm Ðñ 1Æ ‡e ,# ‚ À
 m¢ o| }z vA õç ¦e m¿ Åw ä$ Ñ  à  " ¤Ú ëÒ ­- h3 ’
 —Ø øì ‰ /œ qO oV Ü PR ‚  ”Ò  ² kÐ þ  ¹ ž` Á½  Ÿ² ÿF Î  žÒ '  |ö Õ ^– Ä  ?¬ y9 ƒA  >ÿ tŸ Ÿ ·I Qh e• Ûp ‡µ ®Û hÎ 
„ w2  + ¢| g¬ w "ø y– ^ [Î š÷ n+ ÃŸ ÊÙ ¤A q  f ? '÷ ˜¼ “w x. tþ Å¿ ÿq ¥É qe g$ ˆ cX 8º Ä7  œÝ ð1  ,Ñ îï ¸€ 3& Ö ¶Ä »â :‘ ÚÜ Àý a§ øD ë ¿ø ¶W M ¸ ¢{ A) G0 ì^ )Æ ®  » p€ îA ª ìá   P  (B h< —ï Œ÷ ®» ÀÇ ø ‡Æ î}  +ó „à  ù uœ „Ú é© ° ÷ $ø .r ÁŒ  ¾ƒ X$ ƒO ? < {º “E  /Á  C
 š2 «± E ñ¼  qä `ƒ s/  × ½Þ ßd zÍ ±  ¢ ëË N×  -; ‹µ éŽ (Ô ÅÁ  — ºô ¥Æ ƒÑ  ™ d7 ‹F 6N Âƒ ,ë Å- ÊQ bf n} p ÿÎ vÿ h Ö j pB vC • Ãÿ E9 3W Ž¢ Ì.  Ú 3ç ¼º ¹ç " ­" àæ R¢ œ!  – Fˆ € D4 ú² “¹ Z ^ Ôæ Mc  ÷ ‰¶ ¹Ž wO Œ1 Ø * •ê ¶¡ Á (  9b _ xû þ	 µS ® §ƒ Mh U ±G \û ™Í ¦î p¡ ¬¥ ?@ >( ² ÙØ á© ™í ©m Ìn HŠ ~Ü O t7 {Ç ¶ –— ° E§ ³ö „Ë 'S [2 qÑ kœ Xå ¶ e  ’8 Öw þ =Ó Žá x³ 0¼ û² `­ ¸ß nÎ  ãv ½ pd «¡ »¶ k Âà Û¿ ›< ”ý ñö ;(  Ð ª° æ QQ b7 š 0M •W  .Ì ë Ë^ B ì *Ø €¾ Ò: 	 å Ö   ¹ $“ ¬™  x¿ W ž+ ‹¹ Ã  «¹ ¶à Â‘ Ú• ÀÒ ç­ R# i‰ ¨¢ Ä­ @G RZ ²é Ç ©F “Ÿ ‘ »j ·í £ äÖ ® :{ 3 † ã ~Q ¹{ ¤^ –Á ¥ñ  ‚b <© ?Ð õ# õþ ÇA ® u JÎ ìì  
Œ W’ ’Û ç ’ÿ Q ²6 I †˜ èD ’ ºï s© ‘ ¾Ý ²E X# ô BÒ ¸¾ ‡O Uª ˜8 @ ¶Ü …V ö <` !ƒ Âû rñ  \d pæ ûì §= ¾ cœ ”B ªò tå [ ô«á[ÂèeÿRƒAyÎùKe›û-ê/w¼Wq]êÄ”KZXÑ070701015D78EF00008180000003E80000006400000001642C11EA00000000000000000000004A00000000000000000000005200000000nvme-cli/.git/objects/pack/pack-ff4d919b29ded85d84909fc49d0e82482f00a50a.promisor 070701015D78ED00008124000003E80000006400000001642C11EA00000112000000000000004A00000000000000000000004E00000000nvme-cli/.git/objects/pack/pack-ff4d919b29ded85d84909fc49d0e82482f00a50a.pack PACK      šxœÎAKÄ0†á{~Å°'E¶¤1i›EDWñèEÁs&3³»iiSdÿ½uÑ³àí»¼_™˜¡uX;Ñ}çœEg}¬ÑG#±nÑZŽÂ¬±½Vc˜8 ñÖBÆhñ‘¥‘¨v®µcàÎb’Ú«°”÷a‚Ç÷ð™'¸¡Ïó¸›—™+â[¨›N7Ú7ÎÁ•6Z«8©þGªpI=íàžú„Ë’ˆGÎÄ9ž CüPêáìCÑ‚m+.6kÂÏû§W({†yÇa*›Ëa†!ÿ¢•ÚO)`e¾ÍJ©—´^£í ²ÅÓî¯çêÁÊxÿM‘›)ÞØ]„ŸÄ‚H/ ¥
  070701015D78EE00008124000003E80000006400000001642C11EA0000044C000000000000004A00000000000000000000004D00000000nvme-cli/.git/objects/pack/pack-ff4d919b29ded85d84909fc49d0e82482f00a50a.idx  ÿtOc                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        ¤ù:nÙ"N>öÄ8ðÒdó”ûu>æ   ÿM‘›)ÞØ]„ŸÄ‚H/ ¥
,¦PÍ¥õ,žßë§£"7›¯070701015D78F900008180000003E80000006400000001642C11EB00000000000000000000004A00000000000000000000005200000000nvme-cli/.git/objects/pack/pack-f1c6ab5cd995edf6d1d574ca5daa1f979f9b040a.promisor 070701015D78F700008124000003E80000006400000001642C11EB00006170000000000000004A00000000000000000000004E00000000nvme-cli/.git/objects/pack/pack-f1c6ab5cd995edf6d1d574ca5daa1f979f9b040a.pack PACK      2«
xœ340031QHÎIÌK×+©(aiYüüá‚wº?.­H‰¸¹î•=ÿ’tCˆ¢Ò¤Ò¼’RÝÄ¢ÜŒ4°ZÇFlÚÏ×üÞ·|e¯¼F@6ªÚ‚‚d3“œT°êìUï÷¨Ý>«#ýñ‹ž-Õ:Šz%§PU[T€Õ.”ß§Y¢Ñ•˜l3¡ìÿ–ö=	9 .òE—©xœ31 …ääÄ<†¢}vùÖ|œ—&Ûóä'÷(®ìhô6Kçd&§æ§3„‡ÍÑz|åùÜ ow×f¼*ãžò¶ÞÐÀÀÌÄD!7µ8?O/©43'…Á{ñÖ_¡¿&ˆ6u^Ü¢ÑzÙ#· 5*j®xœ342 OgW¿`W†íSeWßizëvù¼ôão»­òkøÌLLâ3óÒò¦¿~v2­9=Ø5¿Öõëºw_zpB$•fæ¤Ä'§•èe0ì|sÃAãñï×÷3Ì±	±pò“07 ˜•/Ò¬xœ342 OgW¿`W†íSeWßizëvù¼ôão»­òkøÌLLâ3óÒòÎ8¥›Ljœô:½NÊPóÆkÙcÓ¼¡
’3R“³ãK*Rõ2š«ÞWK™­ˆëÒû^zsÑI¬ãÓŽ  ·i+«®xœ342 OgW¿`W†íSeWßizëvù¼ôão»­òkøÌLLâ3óÒò6Š±*½½òçoÐäXK¥Z[ÉTCÏ7PÉùy%‰™y©Eñùizî‹}[­}Š?hð™ñ¿r4ixr¿I ç«)Ï¨xœ342 OgW¿`Wå‹š®—•d¿ÖÎr9”¥RÎ%lÈih``fb¢Ÿ™—–Ïpäó£k>IqÖ|Ý¼RÒ9±Y–Ëª '³¸D/™A]ü—½øÓ5r>ûe¾ôÎÿëül)²Š†…ÁŠG'L}_±ÁùÄŒg_&ôK… ê3h xœ342 OgW¿`W†íSeWßizëvù¼ôão»­òkøÌLLâ3óÒò¶VÅ¯:Ø'¿TaÚ¦—ÛÞö*ØÂU’šTš®—ÌÐ8Åéú¤å5Â–+îéažÄÍî-UR\RT°R%FÜéCª_Àvõ2Å¶–s!)È`¸)¹Ã×sŸÍçåÇãÿÎPú#ž¬œŒP±(ƒaÒAÇ3‰ËJòÛSN·ËHgZÅF GN¢xœ340031Qp
vÑõõaè¼gê>õMUÍ­5œš©¶f!¼†%ÎÎÿvn”x¶uÁGkßCZá{«¿9ñO  ËUÒ¦xœ340031QrutñueØ%`´Nú ôSÃ½‹:bøw/w9“fQŸW–›ÊPÎôçä‡3&íÿ¶Í1hhX¤8]ðTARbq†.H‘nr~nANjIf~ž^qÃ¯Ç«VpÔj…E´.u{ ól_ôç5 7/I­xœ340031QHÉ,NÎ/K-ªÔKÎÏKÓËÌc8ëà«Ž³ºg„T'¯‘¯=õÏee~ Gg§xœ340031Q07ÐÍ+ËMÓM,-ÉOÎÏËKM.ÑÒiz™y»¦	¦y}2õ*[Õ”æÓÎ‘÷Óö{ ûÛ ¤xœ340031Q07ÐÍ+ËMÓM,-ÉOÎÏËKM.Ñ+*ÍI-ÖËÌcxøŽóòÖe{ª'íc/úÅºw²KU!TŸ!D_f~A~Nfr¥n^jIbABïº¿s=_|(:¹öœóu‹’°ï&k\® ½0®xœ340031QHÌ­ÊÓÍ+ËMÕKfxàµÔôÇ‘µRý3DNÌz S¸-„å¯!º²†oG~ìÞeº„û‚@ùC“«­¿Î˜ «± þ®xœ340031QHIÍÉÑÍ+ËMÕKfè»ÈW¿õÙçøÕåÂº®Ýê+|¸Ñ•e0¬úpO@Ç!BP—åØß3“Æiþ-¼ #„w®xœ340031QHI-JÔÍ+ËMÕKf˜Âñ”ízÈý9FŒª—6öžÛÏÏkˆ®,ƒaén®'l7øÇ„	÷»¾gä9ñÿ UÌ…¢xœ340031QÈ(M,OÍÔÍ+ËMÕKfWh;×cœ}dš~;¿þ'k§Ãrí[1f0|™—Ó!øòêTQåW²ZwIæ]0 µà¨¢xœ340031QÈK-I,(ÐÍ+ËMÕKføzšÝ˜cÇ¦ò¬–ÃÙL¢3ü#1f0ßóvºr[|G^Åú%.Ë¾¬9/- Ÿo¢xœ340031QÈ+ËLÉLÔÍ+ËMÕKf(|°Ç˜õåÁeýwßì¸[üïÖ¹ºØ_†˜
3lÛùD^¼;§õÏÊ³[6˜°Ü:ÿ ’B$õ¬xœ340031Q(N«ÐÍ+ËMÕKfð>¿?kï¬Ãó}Cw„7M˜mòó¢!šªî©7u3/GTI™¸¬xÏ"/ÒÏq! Tß®xœ340031Q(NMLO,IÕMÉLL×Ë`°üpyÖAM†/'ã›Ôo°}ütò‹!ªÊ¼²ÜT½déË\!…Cî.ãîVžþ¶;dƒüÌTl*3f~3*þ°Ïpî’.µÿÿ#>L»°}ÝL ÷ì4|¤xœ340031Q(ÎHÌËËÏÓÍ+ËMÕKfpò¶/Þg°eÝs“O†K³.ë÷XúÏ‹ÊÕèmÛz‡mŽ3X;§nAöÿÒGÇ%MŽ"Û¢xœ340031QHÎOÑKf¨:sÔÂ'Eâ2ËfïânË,UÎ´?†Ì:gÏ~I•xTe–¼U›—}ö{}¸‚¼´Ìt !‚†ÊßÚdŽ­X*ÿW‘Á1ãñ{T5ÏäÏ9qì÷ÄkÇÊ²íåÅ]¾™+AÕ¤$–$ê&¥&Ò—x¥¦»©Cÿ°Ï‡­Ïž>ÃÏÔêŒ¡,ƒ3n›ÏCÇ©ŽaûÏul;7Ýˆ—óºTYFjbJjÐ¨­‡ÜôÅ,¾õ`÷¾»ÌWõƒožý‡ª&ƒ©êk¸Õ3Ý}\Ç$V,­’¤³Ï ª&7µ8?O/©43'…!xµ«Žâ›é7¬êÙ¿§Û…ÐŸÑ-Pe%©9©¹©%E•º9ù ¾|ÿÝ„—ÓsÕÓÏ_Í«ÚûT6  Å,¤xœ340031Q(É/ÎÈLJÔÍ+ËMÕKfuø·<vóûIË¦©†·q2Ÿ­/«2Ä¢2ƒ!‰ãë}‘åå“ƒ~ß˜){AHúƒå¤Ï [!N¨xœ340031Q()JÌ+NNÍKÑÍ+ËMÕKf`rüê¤±òü!Ùcy•zjßåŽbU›Á0§³Ã‚Gg²ßráË;X<ú%;ÿ BØô¤xœ340031Q(Ë,*É,ÍÕÍ+ËMÕKf8q_(‘ï}ÏÌ}/ßjû]é´Ü‹Ê.–Å.[EcxçÆ4ž.[ueÛk \!°ª	xÚ340031Q(OIÖÍ+ËMÕKfÐ·>òµ§\Ñà´è¯>wÕEž†hª2ÎÞLŒå=wlÏ–½.ožd~›øì+’ªÒ’Ìœb aÏä.±û¤œÈc[±»(§.À˜{†²†æMïŽx–²NÍ{õü©}Îòåý ‰=*¦xœ340031Q¨Ì-IÖÍ+ËMÕKf¸àÒxâÜ‡PnF—€SK+ãj÷¯ükˆ®,ƒá~ldÿëU«Eç2>ªæc²N]wÇ/YYiIfN1På÷9[WnëX¿×‚=·TýABW@7 k..x¢xœ340031Q¨Ê+ÖKføÑ0{IÉö‡–ÇEã¹4C£w}Éó˜iˆPÁP¾ÿnÚê?Sn~Ú_Âp?VdïW¶¿– \Tƒ­xœM ²ÿ100644 gen-hostnqn.sh ³íñOÐ1n½h`;J¨ü@qþÆœ100755 latency 
ŒÄŽÄ.i%«ðuKôùê‰4Œ¨xœ340031QÈM-ÎÏÓK*ÍÌIa¨ãkoéŸa;©`ÓlçÐi_ôv}lþgQV’Z\¢›X”žœŸ—–™®[XTœª—Ì |âÊ¿÷çfÞ}R.ß÷×£¯äîLedÅ¥ii™ºI™y‰E•p]ñYGVLË9UW£³ñÂ<æ9•FË‹ŽaÑUœ	×±g’kZ»úœ™çëµî³%¸;—¯YGif^‰¡‘PPñaWW‘gw|²*éÊätùà],Š*“7‹FÏß¼îXßÑŽˆãÇ-g ÷fp5 xœ340031QÈÌ+IÍÑÍ+ËMÕKfèÒ<?y¯Xš¶ê9ë3ÇJÏwecÖ1ÄP—Á à±r›GñÄSÁlK„/Ûùh- l!Y¢xœ340031QÈÍL.ÊÏÓÍ+ËMÕKfØ_[—ÙmÂ_VÇÕ:¿ò¿×šnbˆ©0ƒÁ¿ºS©­X°6üÀÓ£ó+‹s®F¥  ÷U ^¡xœ31 …¤ÒÌœ”øÄââÔ¢†¼Ê'XC’bûÏß‰[j/V¼ñçB°²äŒÔäìø’Ê‚TÃƒ©ï
OÓ©,þ¹wÁJ‘ÂÎr®PEùy%‰™y©Eñùi<ïz{]³ÙýtÎþIuæ.B”¥æ¥d&æ1OÓú¨7Ydµ~ËéãÎuoþ¹g
DANfq	Cçïÿºk¦z«1O°Ö‘íØk:_þDº¸¤ˆ!pæÕWËÊn/Û˜ô±Yí—˜yÙu ÛoVå¨xœ342 OgW¿`W†íSeWßizëvù¼ôão»­òkøÌLLâ3óÒòÞ?]±û^©aÊ+…\nß¦“{¼æ‹'C¤æ¥d&æée0˜™À|¿7ÖP¡këÆ×K¯?› O’+S«xœ340031QÈÌËËO/Ê,ÑÍ+ËMÕKf/î3¾óÕ{ÊŒ>ý¢ÒÐ8û0ClJ3th¥Ú}<<!\øG‡Ï±™Êµ¡JK*RSRÓ€ŠVV1tÙpGß“Y0uo‡ÚžÇÒëo |ˆ-Â¨Rxœ340031QrutñueXú« åï‡yŠn
û.M¯Ø7kÿÊCˆŠ†Ì†¬y^.®™*{TÒ¯°×~îÿ•OÎÏKËL×Ë*ÎÏcàìßÕPÅ¾“19F^ùèæÓ»oHC•å¦è%•fæ¤0$ó›Þ¶óú‘®~üÿô¿Ãå7¢~C•å•å¦Æ'–”$&gÄ§¤‚©¼âø’Ôâ½‚Jöƒ¿žÎ°Ý¦éž9ëÛÐ+*6 kLÎÏ-H,J…«ïýóÀ}zgZpÔžÕMWNß+9¶ñªú‚J¸â^¹*Vë¿x·jzÃàóþù$ÅE©‰%©ñ¹‰ÈN
¬,Üª).z@µjò*þl³wÈºRŠsájojí‹äz¤x0R^Ûà•ï†©?“‘Õ¦åÅçä§Ãuìšx@5;þäæÿó÷­*ïÑr¨DÖ‘–SZœWýä£ú­ƒ·|V9ñ“Ù§âLæ4…UÕùE¹‰%påOý8g$9Çt&ÿoÉ+xÙfÒCQ^Žâ–méâ<¼óW().ÿ³±NÇsº£'²òôÔ’ø4`•¥"‚§Â_ûÏí=\ÁïVÝdØâúZ_ÀQ ]SNRb|q	P#B[ðOóäÅ{útn.àÙø2£pÞnÖdm™)ñÉ%E9põ7½N¿Ü°ÒÄ8|aÅW‹G	ÿ«âÑÔ#ÅYÚ£ŸVw
ç_çë“/â»göZ€QY5’ƒà¤¬\Ø„ýj‚®Š»Œ‚Û·7¼u Y0}¤Ä—e– `Ï:®5t\Œ=~8OãÂÚ]–\†¬¥83· ¤H%"éÓºõÚß©ìÐ±s©3ßÍÙ)õx‚Ò4}¹‰E%(Ž›˜÷eVTž®·kkwÙÄfc¦-‹@ÖSwõÍÂ†»ßù‹Žœo˜ô+V[Î£ÄèººøÌ|Òý–lÐ`)µKËMº°ø÷½÷¥JnHO-)¿ ¡É’cqì"·s^§RgÔM|à”…¬¼,µ(3‘Ýjšú÷o>øIîÆfíîÝ=†ÈÊÁYš—Ì0-ÍW’LŒ×?¸´5ÕöZ×ë’vW-U©Eùˆ¨62||wþ„%©gjNþ;9ßqýùÃP-E¥yñÀìŸ“™W’ZTRÜ6ÛÎ-ˆ'NY¿~ûjÜŒ‰ÿY•E™‹¢xœ340031QÈMÍMÊI¬JÕÍ+ËMÕKf¨r3^¿díïÈÏb]§ßJT¶¾àK4Ä¦4ƒá‘È©Ô£<Þ†Gvžµ×pß|öÇ¥èJKK2sŠj¿y	†¹|‰ˆYsªøé5CŽ¼©› Êš4d©1xœ31 …ÄÜª<ÓŠ~‡Š·¯‘Hÿ—aPùNzçÙwMÀÒ)©99–òŸû}ëžï—ºõQ6w¶o‡I%2ˆ¤+h­ýüÜòÊƒˆß“ÜŸýúõ$"–RÀðu:WBïÉŸó®,=¶íñš¬%EÝd!²¥‰å©™)O2–Äí^aæ¬~ÍÍn™æÿ9¿!
2óòòÓ‹2KŒ?óV|=b0ùÑÞèÚ ¦#Ç`JŠJ‹–®ÈÜùj~Æ¢[¢Õ·~ð½Ðºr÷É˜‚’Ô†ÿ_ø¿Wß.ti¼P[\#¹ìmD>757)'±*•Avn¿Ò‡_‡¦üx?àcÞ›Âí_óÌLL€jŠóóô’J3sRt>yä?ú$iw17aJÊ~és­6½ &e&åç14ØåÞøåµDlEiÞó»'Õ³ÏV…(ÈK-I,(`xw‰±¼÷ÍãL†V–^Ž="UQýPe™)™‰¯ÖgµÊßZ·1ñ—ÎÝ·égîYBä'0lÛÂÔ‘Ÿò·dûŸ_—J[®nî»x"[œœ˜“š–SZÁpìÀûö¶ÌÍ¤Pã»®É6“'@Õ¤&¦'–¤2¬œZ·;5]?ö‡ÒDþÊÂ7ì'|–Î„ªÈH{Ã³¹ê~»æ1wmfl)9wÍo¦ÛýY§ *òs€îLÏeð—ØÔýê„ÄÙõ²—rª§„Îò~ïˆ’’üâŒÌ¤D£Þ`)üžM}~i¯fVþ>!5ª¢(1¯895/…áš†ÓêÒA¼ÊYz%µvDŸZ¹ ¢¦,³¨$³4—¡¯Ú¬a·Æ?&/³µÜµù=K«x *ÊS’›§èç˜g=1{òŸ7ÖÙ¿Äš@]Q™[’ÌpÐi†gX±h•ñóéK^½|¨ôËÞ"]•WÌ³„yËõÒU+æh9Ö_LlÞ¡ ”S	¨)xœ340031QÈM-ÎÏÓK*ÍÌIaÊß ?{á›ûï•"¢4×,œ&õÓÇ¢¬8?'3%3=W7=±()1=U79?''5¹$¨9™ÁBcç³:ÙòZoy²…º²ÝfL¿H„Æ†Å½µ»ÿ	ØÞ›2óEòV.¯	·£kÌI,IÍK®Ô-)JLÎÎÌKÚçðöü‚/8qËÿí}½zÞùóÎÿjË`˜Uf5!}†‡ðbƒÃÑórø>sSG×–W–›
´Ïio~ÐþKêÒ}áû=œîíã
àÆª4ƒAþNVºE°îä›VÙ?<;Ç}y-Ëut¥Å¹‰E%@cÃz­ö_Öô-~;û2§SßEÅó'ïéaW›ÁðpÞ¾À9Át‰ÃŽïÒš4—ëJe¡«-IÍIÍM-)ªš=Óm¦lI»Ã³¶RÇUÿn­É—P“Ã­>ƒaºÜ£5Ä>¯žÚÉ q)¡¾ŠÃ¾y‚‰`QÎP“úÁiu‰¶æ[Ñß&¼eÈª]¼ô/ºá¥%™9@w0.™²/¡‹_Â†aß¼«ŽNŒÇª4ƒÁJ"@Þpm–]úûNQÛEŠÊíÏn •„ª¯xœ340031QÈ*ÎÏÓMÖ+/J,`87ÿ«ô§Ï²¹~ÿll~}½Ñ²Toå9Cˆ²œÌ¤¼²ÜTˆºÍ3Þ.9¼mVÁ»k1«YüT %]"Ø¬xœ340031Qp,(ðÌMLOu*ÍÌII-Ò«ÌÍaHß$z¬q›÷7óI=s|5.ê33„(O¬*-JÕ-È,HÍÉÌK-+ÿù:îŽÑ‘=;â2˜’rÅÏ©©› BrQ~q1CU‹WÛÍ”ûóÓï­°|>É;‰5[áÔ¸”Ô‚Ô¼”Ä¤ü°IÊGN[LœÿòÂ»²ƒóÎß™PÕ’œ1©<¿(;-'¿¼˜!ì×9ŒvÃåsÝÞõnÚ0ÿÑ> Ç=T•¤xœ340031QH,(ÈÌMLOÕ«ÌÍahØà™pXòÏ#Ž¬Ç+Î|¶øºÓÈ¢.©43'¬è×S®P‹ãËûžtýsjÝ{ñ±|TQQjNjb1Ä¬Ý/_®Xfû}VØ”ÏA÷»5|¼ º€3ð¡Žxœ•w •ÝÇe4(3‘QvöJöŒ"+B(ëâââºÜkÏŒ²…ÌÈJ‘")Bd¯„¬(£$›Ÿç¹½ïîÅïŸ·÷ïç<ŸûŒsÎsÎy~~a!!Ê3G˜ñš!ì,p³&œE9q%÷2‹WºŸ©¡%°5èˆ@ò@]¡v(ÂÅ‹4Å	V"“ckîÖ¡$˜UöçÔ‘uê%ú™ÁÍyìm,a›IGWGœK1ADyßât³_ãÌ+í;ñ¿þ‹¢xà˜<žµKPv!½Ù*ê8:üÞûÝôåØÍ È¹s›e9Blmy\ ¦€7Ê
g*ôòÜh zßíu¡[&z,BÏ4ý)±³‡XByL!((¯+ÊWRÎQTÅ^ÅiúdRz qYÛ¶¬	‡Ø‚éçüx4Þg)<ðUk$‡i½ SýÚÿ¤¡(„¯©ÌÖ'“­4º³=ËÖ”)®‡ùîù‘µ±?1;g8”b‡ÙñØCP(G+¤¯ NdÁbMFk´ÔY­üde;²>=•®] +G¸-ï]‘HˆÁõœ<ÜÆ“ó7¿=]6°œÅ¦|é…ºg=Dˆõ.–d/æä¹N¸±ƒðØ",7…XÝªHûLõ–žˆž-´ºú÷«)S4©|ì÷zÈf²3ªõáY\\GQeÙ´\La@¡äS²$÷G&N@+ç×v«Ù×–¶d!fV<›÷‡ ÎÅ¨‚'¬>þ-Üêjv¸÷æN
œÁœ5¼äE]î&i-wÇÐ’*ªÌªòs1”BA˜êý&üç§òŠøŽç<ÚÿN›"Ž›géøçŒ¼6ðºøùEïó„O	T®wÂ4ìyPh=éå!ßn–§©o×ï…^ÌŠóHÃŽ R<mœ–…Ç4o[,ÑœW~ÄÉã÷ö7a±‡˜ÁÝxà–pÇM©Ñ9½‡"sÂKêeTõ¯ŠÅxgR¿`ÏƒR×8ïÖáe=¿$Bµ:?{‘Po4ž–;HÅQýù*æT9Í}u­¬Ç2&îA·V;K¨ùæ‰å±…¡þ9_#²í7îþð¾µñqú-g
<ç…mû^(8Û÷ÂõÉ¡ÎcºNÈþ)|vÿ˜¥c{€¦êÚA­ãZŒ??60âÅd![ËÛ¶rP3s«MÞžÇê¶é8þ“ZÍ#©žÎð›b–Ç­Ã¦œ»" `´w×˜œR¤\ºŽO›´ù}+ß“‰»R€]òòiÔ!oµë£"Zz†½ÙX­ÛœwBŽ¶¨‰,çYyÛˆ'q—f~…®›æ,™ˆ:fm!6+H¨#ÌÎœfŽ~`ˆðkíxŠ×²LÌK*û8æv|ÜOCÒü©l¥>ÿ3ê~Ÿh)÷?Ì·+Ø-ëÔ½^DèûY}ÁÞøöÕÖ³€oÞÙÐM©!Í¹ÓÃ—]—²ºânQ…|¦£pStù`n­o˜x[àÂ-áÊ–ÅÄ•Ö˜Â€99M¡ÚQ»äŸË{©nWdÏuŠoÍÚYÀÐ÷Æuçh½o–LirK/^(<¨4ž=è°-j5säÙlG6uz’^Žøa¥[CRå.KUîHH-ZÞI¥™baÊþªÏù¢ÿÅˆŽSL6 ÐQxy9†l:–ó+4±¨¾£¦.•”C~SEP¥úñ(Æ8¢1ôÛ÷Û÷ÆˆV1%A‘à¡Þ~!ŠðgSjæ2¯Ž¶NXb

ÄAWk~îz4&“$'vv¡œ6üÂÖ¬=ð„¤ÅµÄÎ[­~ˆõêŠ[L“µ‡,ßîì+ïç švbEúz¸¸›HØøŽ$päÓù±<P½ˆDÞWä%Â½d†]²[‚H(Äúç†¶ª¹úŠwT«Ø€â«º–‚}§+æ,èðfíÅ<Cú}ò‚¬³‡nŒù'–ÑÛxcŽ"™PèMâ{„ÇHWLÙµñÊ‡sþN›Cm¡ÿˆ0Üÿ4k¬Ti]‡§pã|1éO—B%ÌY´ˆeê>åB@º#þw¢ÙyÂ³0Ìq@Ä”ŸVý˜£Jfö9ý¶žë¿¢;‹¶¦‘žÍNpC¬Í“6~yýòäÈu³Í™i‡.­ˆbÎ‚"÷å¼Ÿ{üºJÑ!ØxÇ[Þr¢J(sÑäÕ»ÌTÕš©o(Y¹Š<RO2ãg·5ý_ã|ÉÎ‘2Àã.ÜÍç…'0Ý”vÕÂœE^Šžb¿sQúæk{XL*ásÆ°Ë˜ã€Ès¥ARmÎ©Ë†>7¡7*µ•I·¦afPÔÖ‚ÇŠNŒä6çbxFìó¶&cÚÎ§bµRvEÐOî¼è™—„²•	¿Yo4ÒJkÝíÙ•ì>&œqÑSÀñ=%/ær.kM†èüê=]±ëîlªYˆžî™4¾sÓ½O·§@‡[Î–‚z¤žÞ|9o|	>20¯±=öÊ +œ"ÈŸOï¦Æºã¤©v%#dkÉƒ„šAaÎ@µk•ÄÄwrÀ—þo‹ó[ã‹×fncKƒvâYóTëƒ­Ÿwã‹(ž8þ è“¿)9ê•1ø &[·\zùÚ¨Úö<
jg¾éâûŽ¦|è¼55½çXzñkO7¯+Æ((BÊÐlD&§%¤n*Ã2Ä¹áb~@c°øf˜ì~Ï-z[öé–õ˜›œ<[Ã¨­•ûõÜw±à:éåþæÙ)6ù—oÞî€FÒ±bnöÿ4·ñŸ ýr
IµxÙŒÿœÍíynè)ùìïq+é,ÌÈ¦S,ã-¼kÔ¥xËI>_áªÔŠÞa	£»HMdáv/rù‡[ã"¨µ:7é°ä—²¾[ËÌèßÓ@zê¸lÎgt‹»ïˆ;C‘›&ƒùM6ª:Ó²Ã7Þ¨_¬äšÇ=Œ%c¾;ü@‰_–m,`Ì1}mÎhŒ1X´8½uÿiêþÉåuÜUÁpó¸[Â(à©¹Ë".5¿ãtˆ<3_s€Ý‰ÍÉs{
<öp|ûñl¾ógOº?±
½M>Rú`{8ìWú!Õ÷fÜWSÞÙ+3˜ºæ)m9·P‹Íó„úÓkuÕ|ÒÄZHê’JÆ“}øwæ—¾ØÒ F¢ ¢rŒÄùƒ†_ ë7u,´p°àïÇ#<íóá…Yg×Ò‹VëW‡mÉÛ™;!!v›uÔj·y?YZþQ#Žétú}vâf9Ç±¬3é>fCùû!AMEü(ýsCGILm}=¿i“‘§žÞ(ÃìOI]Y™9xj=ø­Tq³3f-ªN_tTKq
áç&ÛÐs°¦ŸZ¼ž{Ôc’"úÈupÖ´PøÛÉI›hÇŽ RFÔÏÜ?žrƒ Gè˜5Ó4?ßB ‘ä¡•BþÀÒ¸+ã/óŠ|®~V	ÿ|s”éŒš÷;T¤ý ïŠÍ$Ò[êäò1Ç‘é²z/ñbõnß[>O²z(è~oy¡µ0·ÿÓZÍœýé&/¥]qJe´"‚t^ÝÅ–eú'ÍD £Ç$ÎÎ
}7ÔõÍÇ :Õ§‹^ù«ŒÔyLfØI²…JðmÏƒ—°A07^^JÿP´:|Å0–h:€ÁK”yP¤hmåý¥,Ï ø†ÔçXÙÊ,yÀÅÄú„ðçè4ýU)o
ƒïÙMeöæÛãÀ›Å¿>¯pr-%]ÙÓg„;®y|M¡«®9.¼ :ÅÅ=‚NS8hèæ'7[E­X\·?¿¶\z'+•³Oq,M»·»LÞmÜlö‰ ¥€´Ž4*jç«×ÚÄäï3I|
ÿµã‚¡³èËu‡H¾î²XS‡F>¬ÔÖÿúm
Ìq@Ä'îà5³gªSFÃ²™éÔš¨{˜ÒN€	ªáã~V¿é2YÊÕ†ï]ÆTw3?a	ƒ*Yaœ^Bm/’GL^ˆÒšSðu2uÆ`É.l’Åï)$ºª„íb`8Ú)W·ÇìÍ7ûÏÀÒ½;¤ÌóÂw
iéÅÍÎ+Am±„Ñ	éjp•-ÕTÍ¡¸¸:¨dí0¹Š#–<à¢bÿVqÈ'Àî2ý1¬¼‹ýÐ åŽÇ	±T¼N†_HQTª>}Ójc%Áv£P
s4A¾“3ð/-ýJEœsA‘îkµèeÌq@$?åTÙ£“>WŽ}™µ»ïƒ:}¢ÿÒ–ôæ1ÊÉÞtÜÖèÛêÌÂ³6ôµS?õ^!$'Ú	JÛ6Ç„§G½¯ƒM^9ãsÖ€¯gl?0 lH^Ò§ÇéÒ®^o–ú×ø‚Á†ýÖÖ	eµ)¸”Äöä‚h¦ƒÆ"{ícÉ“Ë?pº´væ@ÊÒéäó‹C_?úÐq^U°Ùèà–ÛÎÞœ%ß0ñÞiàëòRù#ÒëUÕ[’ÀP*Ðãaj…^¬–³Ïnq¦"jý¥+ôC<|8Nÿª¬Æ‡ÏŒXÇ}›[¦ScÈÇoÈoéä©Lý•7^09ì}÷³”ÌÖgÄA€Ã …Ã?×¢«(ˆ…”µØ…FN’hAÚ$1gAº47†l]Ëµ)çLpƒD0Ç‘³Þ®Ò+ï5.4-qäùšâgð>°±-mŽp±³E@€þ±ŽëÄ¬â5uÛ/%½1e®§ÙMòÄØÒ L»ÙM®o÷ìÃ,!á,$K­‹ÊØ @'`äÐ”ÿJØü@6Yz‹~ýÓiw¯mË£o[žeÚg´Y¿¹¥ãÉ—õë–§b‚k1ôkÝ•2gG„4ýp<gL×¥0dÁ¥‹L§*O•~Rä«'¾Xýù¼öï¨%ÔnëÈ\¾vá=ƒWð8*Ðx§¢ÖŒÌ| Ý‰Pw:ðêZeÀœ×qòÒÝwa /·¯Sz¡¡ÒÊÂ¾"™U&.IJmG¬(G;;`´µEâ£”üt@v o#$ë\r]¢ó©Ò QJBªÑÏN¯Ä«£©Åþ}
žú,Ø @çÞúÊµd.d’ú³¾Dt™IÊtG¶çÿ"¼‹7üH€ôR|Vÿ¯™”-eü‡‹[óŽ<ÐÍ*ˆ;>Ÿ™7Ý•`IAcÈì×Ì˜­šÚr [Ô7¯À)·~AÍT`òsIó3
~dó ŽXÎ»»O›-šr^'éöõ6œ3Ûž·5…ü×¤ùÏû”±´ˆÈrÍF$ÓÈxÐE*qí€Rƒô“iåiš^éq¨{žuØ…¼(½ªO–ôˆ^-d•þ>ÉEx/È½qÞþar&ù5‰o¢ßÿða%bÝk´RS4Q‚KTyò÷F^DÐ.Kã´ÓdÀwœž€L:yÃY•8}Õ  kî c¼ªçƒ·gíP<0 6xþ½¼Ýú9ŒYËôãÕô•_g½1gÑ²5ë_3;3WGM2DvhÊcŽƒÍÃ‡šöÅ©—#çÆ¯j¼ÄífïÝž¶G"ì¡HGà9´‡ÚÒÓ0P2}É±"£Pë\Åuœpo«+rvyüâ¡.½VRL“V0zú¼5’å••È8åS¾É¨uÿ¾O[ªw+¨­ý¦IÅ²=ýÙbeñè¼QSÒà;bèñì9É¶Vƒwb«¸:`?Õã(ÅíHG>zTµû¥þ¹ä‚1™”þŠÝø[õ¬œ .P0èmæˆÆÊèSOMë³†ÊXkZÙ˜´È˜»ï€6±Uv÷íquj¡æÃ†Õ<}çva ¯_­‹G™QJI
>Ü¤FÏ­a@€ÙM©¢ç49ä!®1c«\^wý¦§ÇÁ–NJú­[ÉžEŒeœ¬ùq°‹a hÖ[Z¶s2q!5CôŠdRÝÙ¶èüw~‚ïl»}°LñŽÞ9Ïâ3˜’ Æ’gF|°Ya•Úo÷¥~Ÿ““˜Â€BéêFõ¤â‡AXnXÍÌƒ³yÆÒÛ²æp²X çÌØk±+\x½©œõú’p·r`Î‚ôI$Ô¥c6÷øÅâ#{&«„*t¶kü‰"A’dúóÙ÷ãÜšÆCkV¾ÿ¤?¾-C˜uÞrÎGÞŸ<
·Ü0YC7ÖÚ7˜’ DÍý3Ðä»Æ²ç¯Ïò‡dÚ)Ôa

®P¯Æ›ŒI”,’Ô/2b<=µ-LmVÿö¶l9cš…|ÓV*`ó¸¾ÁÂ¸c¿vE@)ÿÎÆ€E
ÎÓ¹øÂZ'v¥ ;Á>¼ŸÉaýWÈ×ÿã&“³w@›J|:¦Ö•ŸøhŸ_Èíõ8Aäéµ3z¤Vñ'jV¦Pž*Vžk^)YÓ˜'ÛžžG©Ðt{ñâm	:ê;6ÝÖÁ;Œá›oƒ@Û¨÷î¹‹a»S6ÁÛK«ë²©ÛïÕ?YP¢Èžþ…nòí8
W÷~<¥ó[®žíþO©;qXëêÇ+ê’KÄe.·^O;”½’üÿÍ÷Ró‡*ÈŽO*×Õ×ix¥¤éÕ\,=WCß°TÔÎö§:3–mÁ—u+ÿ#üªŽSó£}°€ï\‹rÍ°^îû,ßƒÜ8®é¿K¶¢ŽPÛ¿ôFÆc‰ï–=®}üôåæ*ÁÙÊ*	{´/-Ö=buÿµ{FƒO˜ÈžV
;HÑ˜Ájsgû$‰š4M¼QË_À@lþi±ýs«ÓÉï?81ñ{¸&£þ hÒ´§Ìò¨—€okâÕjúYo¾G?Ï=LÏ¥'npäÃo{J@‘ßçg4VªBÙa¶³…8þ;  ~ýPÒ`JVãÉr|ó¡Gõ”¹›äw#@;…î°‰ÌÒc5QòêOÂñN_IÛÔœ=—¡þÕS}ñÅ¥ã<B'Ušv2pÒè @à@QÿÎMBºQ¤xDcjX7·_èOkzþÝP/äz¬äB¿–ƒ‘ÑÒÛ¡u£ŠÝ1@H%îÌßÿD9R+áy¯éN
ÿ³@‚bôŽV½8ýÉ,dlÔ»Í’¢ð<¤ê"{Q $¯‡ƒü™ï‘ÑÂå•9‰"js‰ï÷MÏu·ó$¾\þn×šÎäð+0ìä¡ðÿÜ«%­¾d«òNf=ìÆ!•eW„?Óó«fŒSŽÏ^*#Çez®(cW
lœÍ™~×åOX¨8Ì½Ž;»È²e|† r 37Î›fÒ	KÇU§¹˜Ñ}–ˆ)öÌ„åaƒV<§¿|^«Ž–!* ³491z†• ŒÆÈ*ÅH?·¸,ºóp"ú~bþÌ1À/Ë™7À£ðÙÆˆ^}pùk¹‹Ö8hôõ`³kÔ»öÐûÊ+÷®6õûë7a%ÀeOááŒ¹êÖ£®½f×.F²äj%=ÅÝüµKî"Q×ÛªhÙß}8›«ýXèÏÇ°¥AŸ3ÂOòó¬¹Œ#?ÜªDH§Ï=ˆÇ€Ó1Gð›ÍÉ³¾úxôU'5Dí‘DïßùÿÞ^þÔi_X¿¸å}<PcÉÝ9^Ø ¥2¿XNÞ[çIõeüfM=ÊBõ;âÔ.àu,è¶5_	©çzò€ãlˆÅâ]Ä–q~pµÍŸà\R†»ZZó»ð:·LŠ†›-ÌYôøßÃ¬ŸâsŠ\ŸH¥¦ÀŽ³2aŽ"?^^é9ae´rÇ|ƒãb\0ê!½4ÃŽôæÅµD/’“æg=mU¾|†Ñz”YTñ^À–FOtâ=oùÐS‘®ù|Ý‘I£ÓBG3°è×ÇúÓ€9ƒÄÕsþŒ8;ò`§ÆË#Ô•¢^þº—­öR¶\¬Å¥S2‡1%ÑSÏºÕx…wƒK]]s 7ª¥lÛø¥1…'ñØÆÌS&Ë“T½ÝT¦®;²('S” ¡ ÄÙh4÷LTQŠ_ü™nÅÒÓžliPÅÌ¢“åËÀp"ºPc¶;*Qs\w èXh¼~<`y»¡ðr˜WçSõ²íùM)ãCT‘YWFõÕNyH»NUßYq¬ÜCO°ŽÞHQ;0£FÝÝiùÌéDæÁˆ+”;’`e\u¶â
"½ëK_ó­‡á·Â¿áo	"Ìl€‘¯Í£ãxÈ ×}0Pafü¦•Ûf…c4ÈhZz›ÖM‡«À–± Ÿ¡U+sÛc°hQÚHžŸs#¸…±6Ÿõ9J-µ¥9†CÍa';º=þó3¶§ø~Ô>{çè)W—:%­<•ö¢Ðã¯çËR‹(£ƒHb>Ñ\r~d^•ð`/Ð<ïáÒ¬óQ´ÂTa¯{ýà1²±»[N¬íÂ2€Í Ä h&œ]w$'FXû÷ƒ°±oéû„Ai{RaÛÁêÄTa†«¿ä§¿Evï“Ü-_œ3ní¤6§tqºÝ¥.uµb)˜x+n†DØñ˜ÙB!H{3ØŸi9àöç¿SQ;Õt­èœ—¾Qã§sÅ¬Ô¾Pôêc9a§ƒ—
´^ãùŸÈ¥Žo‘–ôØX«Í~M¿÷ güpÞZ[j •PV¾ x[ŸµL
At!;ýÞZ„˜´×¯Å«9GìE®?fñµ‰îå¼¼‹ «Ñ’çÊ)îy·hŠd¶wáç7<¹æëlz¢÷¸ÎbgþoŸfrâag’Ô÷‰÷)OCçI#ð¥t_’ìÎ€ŠkD“îMu7Žàs¶þñø°¾ŒËî hõ…lFç‹_8—°¯×uM£®H¹xúÿœ_°¸½ P<”p-HHÓpÅd&~w$€ dÛE<p¯?Èp¼J7NW±;Îûé>Ö*Ë¿Ñ¦&¾¦˜LóS…‚ÚnÞÕ0gèß£ýJý–?>¾d5d§®,é«Yheá'Û
_$:#¨ªX<PXððyE35Îþp@Ü¸Þ-ÓœDS>t<²YïüÉ'DõU˜h°¼Ùþs‹Ñçh~Ò5%1ÏÄIþ.hvÒñIÿë=1PWêqdçÕçß´DôSp›õ¬ÄéoìI‚ë»Tò¢ßpGyH°‡ÝþúÃP$8ýï­0K—Î5ºrP "Ó´r‰BžòÁèyŸ}¡ ñ%öjÑÉÏ	îù^>,ØYÔú]<k_4`z@*)§*—® ÷uÅ§!mþðB¯-S;¨#ÄÞža·ùzq8ËÜ–ÎjÜ“ûº³HþíÛ¦q‡#ö¢@×ÇED§¯jÅÚ¸ÿÒjUÈ˜xÅòÁi/Ð|ít3a¥ýÝx‰¬Y±KŸ9NF4ÿÏñÝµœÂöC÷Žµ&F.dÐ3µ—¢¦wEÐ+!‰®5ÛkRI0QÅkeá÷u•îJ	Ø$´ôxcëö5ã{ª˜|@È€eË\´ŠÇŠ‡ÙhRŽ´~2÷ýyÃ“F¤‘«æá‘œ+£ ®­ê1Ú¨Â¼NN Å^·ÉŒiÀ"d½L0zÕr7õæœ^2	«e-Í¶0r3:´—¸Ù/ÐëU>]š¸­[œº„9‹îp%»!Ž$S¼ñ b¦öÖ;W0£‰9ŽÎÈ’Þ~†›Ki(ž5{š¶yKÚþ×ØLKÑç£Hw‰×8/ÒV•;Ò:sÑ`K£×\Ÿ|;ß„Kxé²ÁÓ<Ãì´R“ l  ³¢ÌŒTi|úí¢‚&x¡ÒöÎx†üöAÈ[HBªß}óg¤Èƒ:õ>ÞäÑ©ºÆ¤7W·-O<SÊH«ŠÜ“LÍ"øÊºR-¼ýƒÎ•wÜ°xøå"FXX;Lä¡^?§:¢{:·xì.¼»5stò37lN¼ ,(oBˆhŠ›fÄañdÀ—¿\N¿[Ü9]pÏÓà9Ç½ôVµŒ-+föz.< ÚÖ)[mözH`f(ØÎ€Ò^çœkéëxó ÿ“+´ûçÑâdÝ1…ÏÔž:ÇðEú}•	÷_ð#+V~Öèúˆ‰¢tcðÌUw³í%ØnBvfn<pÄfoôßQÍVAÙ@îÃlÆç\ñžù™¾Ú	Š‹JÚëhy4»â±ßN)¦4ü]º|QY0y×ŒbéíK-‡Úš­›kK³dmg·7uuKv—¨Sâ¢ržWÐ¤[rÙìÎ€šÌoÇ—‰=Æf2#+ºXÖ=JTñvÇ AqV¿3*¿Ä.ÒøÞº›=ä#µ¶,ŒÙlaP›— X’‡^˜‡vüD¦jžáÔKª9ÜÛTÁÛõøùJíž¨Yê|Ó?õÖÜÅ´Ã©<•g¯	å¦îI¦þBQ¿®á	¦¯¤„[™åâÕ•Fê&o‘PsprûºÅ¦ý+’Öoˆ¤î¼-íKZ±ãÞÚt©¾ã Ìr7Åóüu;wDiÌúç>XÀ·€.© sbCÃô|H…®õ)¼¯£f-ÛQ˜™#ÄÔ
–ðgýgTæqR\xiú8ñÅéx2©|öã{QèEÜ½2‹y$j'¿¢©%fóŒmùž³h¶ô=¦æ!åt_7ÒIÄ@ñµF”~+Û¼iÜÀÚø6¨ªîˆ~±xç¹tg4~èá’±cíRÔî¨˜‡|c³ºá4cœÒ[ý“©RYÛ°;JÐzßüÉb¶ÎÁLÚÌ#¶¥Œ„‚ZÂaþ_‹%ÓTQž4¿n!¤°tØîˆ¡5z
Â’ØêÞkS¸H;Ó(/ÜMýbG8²ätùl¾É¸þ®¥£ŠE¢I˜ÉÖ z&§ÕÙ•–ÖéÍZûLUïzqÒ…b9ðØo½ÚâgÞ|á§œLžéWfâÛA´3
^—t¿ò¢®¸¹¼D8ä¡ÚUÎÙ–tÞ¬&œ`àÚŠüâkkÄñD5/˜OÕÜ²“XÃU¦¨”w(‘|õ¬+>³ù‹ïÆœ*V0¢µ#;ºLwÜo:lÂwdŽŸL‹ô›åÀá³øs/_óêy®??-€sBáþ7Ü¼à[¬}™»  «RþGnñô¼Tˆ¯{1IÿÖé“màõðÝ‡Þ2Ûó¯ú*ƒ[ÎÛ\wgÜ ¡–@­,1gcVŒð~-`Õfâ—ÖØÚ}IÏ{]·Âº9»¿=œMç(¦N“ô_¿•Ü„¤udÎ?$bÎ·ª¢Ùºù:”JƒØlïPÀåû:©‰úÜâÍWëü°àXû¥E¬qPÉæüsƒõ#v¬·ßG:<üªìçcò+ÙKÒ0¥ºÂÞíI »¡ö^>& †l
YÀÎdÚÉ´k>¨*­ºy¡2åq\-¶4èó½G¢¥…9Æ „I»®?4­Æ÷Öil 8O{€oJžÈ»äÇ²~\ÕPÈbÆyËT)Ònºé¡)›×óì7¯t
îÝ½„úCaI;bèkTÓp$øBãp‡6²8™ëYM¥ÒŽ$87zÔ¿;žU%<î„2]ÜÅVDgªáßAd³‡¹ÿ³šüŒ!_ŸŸnÉÀõ¡é‹Ñnu×å3¿‡aƒ&+Þ•-íÌ/Ô­ß¨f¥”_«¹Px+V4<ò“õÊQx¸¤cŸ‚†M#ï`6mÔpsû"p¦¿øª¤›³kµ¥aŒ¢»ùó]L·µ‡¨>éÞ¥!òeà žÇ˜ÏKé¦Ú9PãNšŸ3¼e'ûy·ôsPPˆ%Ð%Û­Ÿxà¦þšZÖï2‰MÓ°CôùOBŽÿ_ wkNßGÝp«…oÌê.,AÂS®\Æÿ¯àqQ11ÁçÜ¤M|*oÕóæÔ¸É<Ç^
8Àb†@"¡ZÉÇó~è3³ë>ˆ|†,|Ñ·Q+y(æîÿ_zV$]%‘€É,ÞcJ–Eœ÷z‚bÃ½ÿ¿(pg,èÏï£pÍóœ9ŒùUºg©ææ0—„p2çÑÒRø³ï3ÐÁB ïŒÙÞÜa"ˆÿð—à;—1çKñ,2XŠ ’û…2¥¹š¹Ø†7Ì¶".Ñ8¾Þ¨ÿ«à×,=ä\"Ô”,0œyS7®íOöþw+¦B€Å[`÷Àq³fÛü	‹å¿/Ùºò•
±üj\n>š›—¶7z?”\ÿöíŽR“¬ŸUEGÎ–¾sœ{£€ì½vØ%vé¦‘bËóŠiäß·6 “ÀêÊdCkâ:4Ggk¸pdeÒ>ý)•1±7Ê†õ0«¥}»Í;a2ùÝ#ïÇð]Ê½QpE´Y%sHIR¡NÑg™DSÁj¥¬˜È?«Üì­,»{zŠœøoŽ,enž·ˆÆÕÞÙ$dç™up)÷\µ¡	ó0W³löÄJ F„‡Üoö|ç-{[ˆÿÍ¸þŽ2<°ã~?Ü¾26sÏ=Ž¤]SýTµwÏbJú>@ÐÒv9FÁ’ÍýX­×Ô½–l/$ û`Á/}”îBeÔ÷¨“
Ç¤'D)\Ç„þ'JÅXX%_÷áðÒ„ªg¼	ô»|74Dš·´^cúzŸóÓ½Ð³!åe‹»Aàvž3Í´÷°2öà‰Üû 7×J…‘Aa©¯åd¸åG
»É^d‡¹à¯B+ò Š¯yýrÁôô2~ø(ßí{Vë‡¨ÿ2À)ûþÖo¼KÈéœ(·¯ßïue(,`)bÛÔE‘¶ºb:‰­ÞY‰¤¬gBx~ó,û!Aó»—ÏÇyò¨ÌÛ¬d6ÒRhÉ…2¿rÝö_pñÉ-XGª2šóªs””¬j¯J`aÅàF.('à‹f¯^â]\U5¦Õžn©> ÐÐê°TNnÃm;XÈÊ6-»¸Q2¾n;Ï¥±¢Üƒk€[”në¹›ò&(e~îlpÜXùŽ…Ý2±qGýG¶•¢Á´vs˜bGdE©²ËÞzÕÍ•î·$_¡|UóÆ¥-â—Úî²ŽúI+'—~?üx¸K5æ,¾Üérû 
åM$÷7Š~?gÝü#"	ž®S~x±/}†)‰út™ÇºrÊ£{ãf'¥»öw`p«NÒ{9ßb¥×–¢}"å<_iâyc1Í$NúMÝ¼œ4ý%¶FÑÞµZ±o´/¿œ¢V~B.0Šâ@ô9j»¯ãáêû.ü+j˜ µ5¸D{ÕV‡R.8:âž˜ýÖÌœÀö,ôx¯ÿú0ÐÃp`m¢WØxt…{Ãù1ö<º¦s6’WÇ“TÂCˆ!-º´%Ÿ
cGÀ•Z©É5¼tÇ§ˆ³9ò8	2šµc$þ¬éñ7[-oõxàW6}ó³ÎŠ2¹›f=ö<(U9{K[;>‘g5õ-"íî¹ã°#€Ôc&Sßl	J³RþNÞÐó±GWnn“úóÍþŸÛ‘×¶v…œ°Øv¤÷Axû3ã6:5ìyô¦óp]œµz	vÕƒüÆŒÁÇ¹±#€ÔÕÕy&n‰«ªUÖOP\q‰ó<q[‰¿¿Èˆaè›Ó[]ê¡†Ð§3Èž½ùðl ¶4úö2°,	Ê`Š ³¼dþ4±àðˆ 6 ÐayøëˆN‘ûäk³)ý+Ž.ÜWßnÏÿµÚÿõ†•…—q-¾^ÃûÃ¿e K+É³­Xã P]¯u¿qOË7I³ ÍáØá"¬¸ø)rM‚¸˜0?dýˆupI\9—ç–¹n”Âå¯On~ÊÆª›Åž_q;ÝŠì}¯Á4kŒ51¾Ôw€É.·uŽÂ?_jðý;• ŒôØ¤nas³ñerQ‡q£´æÜ ¡àç»Áx¨P^?+»‘ñÆ”H¥pF=ÌYÐ%7ˆÍ8¡ûÑÅz_ñîYúæ¥‚XÌq@$˜KLAî…ßöízIgûÁºÛLž;ÒŽ{ÄæÍ\-Š%¥n"[ªÉ/ãi©÷Ã‹}"uØó>Y	^CÔÉ1f±Ô=<Á¤yÚ“Y;HÍêÉ”Çø'=Òv›Iñ!aÚòåØ¿ë%šDÎ€é&Ä1õg¾·G¨|î½ez#†9ÊÀüáOªG‚½>Ort=™]ÍKœsqùx@ó,‚ž*¿w80vÌ-Æ„bËžèåI›•ê¿ã‚N“S9í—Žä“½Íä¹2¤³:ù[v7”Ò3ËÁÛÄ	*I[þþœø$ñÉDîýÝ @É2¯ÿù]•âô/ãWµŽØœÜz™Ñk\ æÀ¨êŸ¯µÿý]8f²ÃºIê	Ëbï¾Ž¿å“ÃÿÓ¡ nÄÁ \þdV.èü!£þ_ƒìÇV÷¢Ð_]Èš¸ %#WýdÍ%žNøÖÃêõ»{€æ"aæâýÓb¶7‡¾eþ|AÕ¶e$xáC‘nî…ÜUbAy¾ ·ëŠ&i¹OÜ°–ìyP­L›÷xí”«…£vÚO¿²2‹×a‘Ã“5¥Jüê'Pì_öCÍø[ÞH(+˜)dÏ†÷ñ±‡nå¬F{‡0ç­4z¾ÂýÿËA¿ŽÕg~—VÒ£_Ï4ó‚Ä$7ô…$Ñÿ_X/9Dâxß‚_Š÷	æ3`	ooÃTÒÎNy¢ÚË%Š[qÍ4ŠF5Í>ù$ò¨÷C‚?`Þ‡3yN¿ìhl)]$ïµuTð~`@¹í©ìÃib¾U³C„žF‰ÇË	`a·w”:"ÎÎó™0wØiz½1-5¼µ/Ý{x:„_r²©¢‘fDîTêHÌu{_4`‘Ñ6?™H{SƒÑÏ ¿&‰oËãëˆ„Ø¡Ì6»<¦sS`! 0á_ó­F{úgí"ý†éÊºû= Ðô‘ÞÂé‚3ÔÉÕ½¸èýìîàtÃ¹j¼”n½öD2âN®1Çi›AÌ˜bëhå±uzÝË-I9ÆyÅid?û I®pK«½9ÐÔˆÒ.)ðžŠ9úŠ$é-	ÊÑˆÔÞ( «ìuå‰ZSAÂƒƒ.ÂšS7a&[öæØ|…†Y -Øå¬+½c÷ÌõÆˆ[H!Ï¯žÿŽóCÔIOBÆI¼K&"ôÎWñ¾Ê†7q•CÏ½!–e¢u;.èm aí9!¿Ô-pgÒæçAAœÿie<ÎŽÎ0è?ßA¿÷ý¥tDì%;{7UyÎ¢†/‹¨†óÿUz‰/Áª¬î‚å“Ì³Úôôª6µ;À›°kéþJ~€xÕµ£LSA‡-‰È?ÏÜ @aTÚn˜9ÔÎ}r“}_úˆÝÎÖc{JÑE%n¢·Æ3º7zû<Y«¹^”{¥l¨pPçdÀˆ¤Æ;ŒÞ[P@Ö`èŽŒ$ôÝ(•ÔáHVcgÒO}[^Ë]ÌÍÀFÐN3wn¶ídÓáýµC¤éé*”rXãèú5ž¬¦Ñ˜×ŽÚó¥Š@eTt
í	¬`#6™uÃ¹ÜP3EE¸ä<ñú1 b
³…9ÂÀÆµéO™£bƒböØÏ"Ëç‡ “†]ÐlÒ+ßÄáÉã÷•æìN~4‘’±Œv¥ »›IÏfë™sO\àÂç´:Oe?›ÝM…ÚìDó˜;ÁAä÷Ù¨OµÍŒ"~ˆ.- 4=¼7‡^‹ÿ$·1Î’$öûú—³¿üª¬"öFÁ§ÃqCùñ°T±ëƒnœ"OqõD{0“˜G»«CÏY+yøñ¹ÚåÛ'Ÿ3êØ?Ê_?
ïSµˆä&y;u[ÚÁó„™ÿñþ‹ ~„FÅ©;ºŠPuÉ3ÉKêÕòÞbt˜Kø·qÞT·Ó˜¬–¾QéFË®q¾ñÉu/
½²=DùÞÁÏâ-o$Rúüg›[Wï¼Ã÷èžå—¥¡ê¤ŽW?«þRï:dÍÅúãÿ+TÁõ•‹á1V	Ö#$ìÇ‡™=°óÙÜ³[¢ôcõðEyW©‹ãÂŒìøtäžkw–‚uÒã!ñ•¡'
D%Üµzñô££ÖqeûÆÑ5@²Óƒ7v…—X¿HW«'üÂ¿[¹ï€_ 3eÐÇùv¡|\òU^F‰¸@RçÎ, Ü (å?ÿË}2¶ü'Œ’Œä˜¯ÎQ8¨÷ÄkŸ0zÈFAI->w†KKkÌ¬Ò%
O{×#~üûƒàË—sÔÑ´Ìä|é_&ï6<9é²7G«~¡›ïf½±î §&
FÚŠùF³C¦>ñþ3.÷¾æí‰¾ö/Š_^`¦VÓT¨a$H“[†îI¦úO]]2o©PèáWÚñLW<..ø…D·¸Ïc³CBÎŠ^’qâIk¯Ï©–ù|{½©™ÏÐ!ºû *£¢9ï™Ç&¡ÖžG±#`ÏÀZïîXâlˆ„·uÔ:Ç$(ïÌÄæÛzÆW}xqœ`‘üõªÜL—y(m_ë®¨f¥‹×}àÍ‘bÚ"QƒçG¥²•½w¥À]RX~™TœH7¤¯êûÉ5*Ïµã\CíÌþÚ¯¢øÖƒCÔÖÞJ§Ö=zŒ¯§]›ÄÝÑ|üM ¿Ÿ³^˜ë˜ÔŸ”`w3]
-ŸFí¸ÿÿ†ÀÁ¶;Ùô>{Þ§ï>Þë®>WP¸gê”Õ?S].nÇ\>ÿõˆ='îijÕ= ô
wFávë$Ý9Öoj¸&o2åè÷à GÒ”¼
Ñüæ´%\²…«L”÷4œ1aæPç-ñŸsùŠ’«3~,²ÁÀ'â½GCOpß…·ûÆAov.ûgåm“œ®’éóâôD¢;êz¬% ¿à cyÏ+îÁy'¯Z!ÏvˆÓµ`, ¼sþÝFeÔšÓƒà¸š¾0EÎ²i™†1·ZÎžh\ã&ç29ìrÊþœ£»ûï*¹=$x®¿êÃæ‚dÚf+	Ã:òØ8¼W0è½ò6Û`ÈÆøÈ%½{róOÓ%rÚßÖ¨ž;7ä°O}ž/—ÄÙ^w¯÷ ÜÐ¼P/0T~Ÿ<àÎÙfbìÁo¨‘t¯õá5m"ùSäc;žhðÞÇ¸–õ¢î¢˜[Õ[¥z¾ã¯-¾Ýû\±_½¹Wv…DdTïg6g‹÷’ë	ëLû- Ð?¹–ñPpñ[?é‰eõ”ðWj×«ÎÅbâí- 0ÛÅN‚ßµ¹.–rŸYÒ™>.ØPûî²ÍF1DõÈ¶†XQî×s	Þ)­¸{\xm†ÿ+æÆIÊÇ‚¬ÊÄ‘ŒWWµ0aNvÿ7!¡ÿ<Š³‡´Cu’ýÇK²KdŽ>J’¿o=òúôæëÚ5ñÇçU;¹ikV÷]8îÉna¨ÁÑø£#®¹äÈé"[‚ÛøoÍ}aBFƒ‚Ø‰¬¿‚}úf†Ýv\Ó-kî¥t×ì‰[¬&DqŸâŽ‰Ë¾ÜÑ‰ù{ÍýÃš'£y1¢cêÔN ŽñçžÏï¨Zþp4‡7tŸ[åW<á(G]ôsÿ›W¬±°ú}€è¡t)›q¹±UëÎ+>E§ûCÛ~;íƒ?„ƒDÏÊ®é‘ÆçÝýí™«_û>t;
l€²‡˜ýÕØÊË¹s1ð§ç‰…÷—ÓN1%Ùþ*Ùñ²¶CïðŒ@:*‡s€ÍääÕKš¼“ß¾íè ï S‡UWr¤ |<—ªwUß>ß×ªØ d;hï„Üü…D`d¹{}þEt©ß”£ÄW$ä¡â þîú|RÄR_âÃiÖCÚDX”÷/IDßÜßÿ%Ã£F=qÈªh¹¨\ì\·1…‘Ú[®,ñ~u.“Âœ…œDÙÉ°ø2Ý:æ,(ô†âG7™´§úÔï”wÖEÏvt8Ðq@$öm?w¹¬AÒÍ¯;K5ËøÆvÔ!Û‡õÖé¥FŸCh*õK&ûßÄ ¨su˜wgÐ›…üè 0©uÈ×PyÊ¼‘Nî“«¶sFýé(£4N|¹XQÈ§!+ˆæT4ÕŽ¯Ý¹;®É<Ð	B_‹ç¦e”¢‡•NE¥Z²ÌR)ïxÙBÛ´M0þÎd›Sgÿ!iR¿Ê të*èÏÞá.‹M½zèñÏŸ<Ž¾ŽXÍœÈú¡­ë°£§¶•ýÈKP†¶t¶¯ò½A·6Úd£VLwÇ A#×ÔÔÆŒSª}ðÄç£È40Q`«³³@l
rŽôG%©•ßðd	KýÄý!aGu+
:²¾2Ö“\Øp	wöù1Ð—ì£¼;î¼µÖ•.ø2æîøRûÆï“Îv×—ð1Pÿ4àð+zœ	.".ÿ™x0<l²½×XÏ‰öã™ˆ–íÒ.€êIžníTþa…ŠG£ØgZ‹–v<ù»”ü5K}ÏKFjT9Þšw"®œU;ÇPæáK£0éÒr1‡¬¤„ŽÊ£ñWy;÷	£wB0É´÷’S¼êÅmÅa0s×ÙÑ½ÞeÑÍÔäF«˜îá†Ã™ò²¯š²Çïcº‹­€Jç?™êÅÎµ™E©Ë
B6¸åÁ=o(¿OdîÎ€¦S¤^=þ^QOÃÒáô¨‚£ÖÌ;ª¥­ øî¬a¬OƒeÉ¤¢•þ¸“ÀsüaÔ¶ÉØeÈo>õWöT:L4kžÊß÷¢ÐCKNfcÒ‘žLÓüªÓA¨ñ,Ý½@@óò«áòÆC4I•Ž8ÁE!?KË`à¶|LÍ¢asì!/çÆ/‘ßáæ«Jcöwg@Åª‡Õ¥—‹	³…½Ë‘‰Æ‹Š:»c€`ãéóì	¼ãc«ÐJû_ß<„—ä®aºÐÛ«n\o¶tÎÞK5Ë÷Õ°žËònß1Ô€y6æh£e<ƒÆ@ä¥™’’ÊÃY8H2LwÉÎ™¯¡¼Û+E¢^¼L]±=1Šç¨úobú}ÿMš!ì‘[[(’aïˆ¡)62’OÈ““y>Õ3ËT—)2önÇñ… Ö^éª·ŠœS\½øœýÉG68ÙÿYð›Âh¼‘!‹"NëZq¶ÚøŠyƒ¢‹Ù¹©W&bŽ·µZÕl^—FÚZ=;bd_(èÞ!è¡aØ•ñ#†î«™–eIÙÍçöEÖô8Äü"—	•;½ñ^½\^#îÝÚ #a›Õ‰“Ø²Éñ|th8DCj#'J%Ö¦þ
[tbð7ôïø ÝT•¦I³<ŸüÊªÿ'6 Ð}" ¬j+ôÈ“-º´’‘Ïå.waÿÎ¼;‰ ð‰ñ‡sq2!DÍð®YÙ;°ÈÐ¿ÁG¶âÛ’y¥Ñ†Bt<Ù^~_•£¸• §žë«_+„„YøˆcÓ«~ÛlªÀòÕ2;¯ŒfrªÏþ>Lx×ÊˆÝbgtÈ	ê?‘E™s*¥Å|æy“aêÀ—Qpk¯†®¼Óä.•ÆôÕå
Ðë¯ï÷l™¯v·Cýûg²ÜvÿnÈ¢!4Ã?¢Ý1ó¸$Byä~uÝmDôÞz¨¾ÔèY3^™³e¬w²Ù×ä±½1jÖˆ*Ò³¸][Rô	&ŸÁ³ƒ´E   ·i™ò@Ìà;[,ÇšZÿ‘¸ñ²Agýí] Pp­–ô¸×ùÚ.¸Ò!ž9(ÙHiàó]À+ºNŸðÂ*%‡F;Â^³ò±u;b³ƒ¡¬þ;S_M—8JMÝ‹O˜ÇOó6òÔÙ ÍˆËqºÅ"…#ŽrY²Ú—QÛ3¬é ¬•i=§ùüô<k[Ävæ¿—Ïë*Q,:ÑÙ^Ö³ú+‘º9žDØÒ Ò• òæ¢	nWQ}×Ïï^v!^òÄ :ã¯®ç>½r…–?6ö~F;ÛûçbÈƒŸQŸ¼¡î‡¨ÏêÀ%üñE(±ó—˜³èé‘;"ÃöÑ™Ñgæ­ehÛH0<ÀDÜîIXjÝž 5<ÉAÕv¥žkL²=°°°…Ùý{3ÅÌFÜÈ»¡+øTë(«<¯ö«]ô°‡ÒHÛõ+"±a4å§_
Œ-³Âwüâ-¸`ƒð”%‹4å0N|€!¹BØBVÙÉ=Ôîµ4øûÞúœùþüÁ±4¡®€·Øó WdÌÛIíëŠ‘ÝÃÄ¯ x­JØ@Š„»H‡æj]ˆÉñŸŒYß~3¨o'ÐŸ…p	e4:YlÔ;4uÞ‰.â“K–¼?'¶ã~Ú‚ '
âðD¾ŸÎÇãÌD:ñGìJvç:¦2ð/=Ó};~Ê“•Àé!WèNXDøçœÍ13—Úý¨XÏ=Î†KÂU+ÛÉd¿ š…Ê–f8ÿf¨ctO©©n«ºmÀt¨gðbýHCŽÓ¸¦Ü3¼ž1[‹´õ^2ÜŽü€;FlªY}û8w–yzáKªWwòºù»ÆÈÝô$†ÊC"±÷î­º†KÉóØ×ŒwÇ Á~§»ŒÌg‡Lo‰g#(´îD~ÝNÄÞ½&÷%‡µO³ñûÜ©'„ùw.-;šíF€rlÐþüægÏž š—•å§,ÛénÙî;®0{úž³¾3žêaë7z†‘ÿµ/aß9ã“ko×™¥\OÍGõ2ì¡¿W]Õy1÷ñ™ùX/Ó:_	ò£þã=8ÀñÐ‡„‰ªaÆ·…¸<ªÒêò/«¯cÇþ¬j¶‚><æ«©"yFO<=‰n±Q³ºFnt\æw8MlÁö1¿ã˜Mž0mÚEÇ=8°ãøÒ€èZÇÓcëêiÊ·NÑ»½Û!] è?¿ðÏ²ÄHò!3 zÚMXjè^ÌÆëú÷{QèmîS,}

Vô2KÒ š8°Ìqb/|ý‘FÖóu¦(>âpXýô;Ì¡eêï·‹M¥Ç…o'ägzI	%‰J‡%×´ÿý¹úŸ}¢Ò†ÜÕËIÒþùÓ¹Êø.ü¡÷ßkGÁC~öØ|‹ägöžÑœÈZ}vohJe)è?Âcl’Œ²Â	Ì–¬äJZÉ‹¬€> Qé26sþ‘ƒ
­xœ31 …”¢ÄäÒÝäü¼4®êy¿vÏ›ðìéŒó?ÄoÈîÿ¢ÄmVU\Y\’š›Âð¼ÖEÈoíÉ‡+›ý¬Ë¦ô—»õÝ¢¢4%µL·¨4'µ˜¡áÖ-wýfx¯cì8?¿? Ñç®÷M ùÝ0d«xœ340031QÈ+ËMMKÖMÊÏ/ÑMÎÏËKM.ÉÌÏ+Ö+N-*ËLNÕËÌc(0KŠ)ïHöh*Qè½À¸Jÿ§oš!\wšnbiI>T+²¶£õß%Î¸_Ø:)|_œjÅÛô	ë\‘µÁ´”$¥§–€t|ó2?Ä1ƒûÈý«·]©®éü¶¿*‹d[îªÄ={f¶?PpQhÂëÃ3f”ïû Ú>XU¢xœ340031QHK)ÐKfÓÔëùµ¢ñÙböxõì--Wçu:"d0|LÚ¬(¦pJ÷ù-^¥g[V=¿j« ÍF«xœ340031QÈM-ÎÏÓK*ÍÌIaH²\øgbhÄÙ/3l§5¯OXx‹ß¢,?¹@79'5±H7­\·´ %±$U7#³¸$¿¨R/™a§rtÓë—<Êò!;
×žÐÞ{ùÐ"4f0œåp9q¤ãïÜZ¾[WxÓKî™5ï?’Æ¼²ÜT ñ+RÌ¬ëg5¸?}òC„ã»•çøÐUe0Ü™'êïúÃóÖ£¡|i+œ®¬Qþ‡¤ª87±¨D7µ¢$5/%5E7'?h²ù6½I3½§›•ýžuu	û‹pv3üz2œþlÍÒšûê×D¶Ÿnþî•QÏLAÒSZ’™S4zqUÄ±{ŒAÁzŠLö‹¶ÚÄP–Á°2IlBìÓ¹Ò^ÿ¢W«¢tæ/ ¨Â¥¯!xœ340031QH,JOÎÏKËL×Kf°ÛÑúëÌ½s;¶ÉÑïü»b·ÛCte¯Ö;Ä_ïí*Úq[1É^õä·Ò¨²¤ÄâT3 Qì?KO<}ñl‘sÍ3ã3oX>ÉMŽª&ƒáÀ7=íŸúq3TŸËøÜÜ¾i’nTMrNjb^iÐ kkjÒmtúƒÝ›™[%Ävê|*CS”Á¥z±úímå6ûE[õœ»ST”ll4çŒn¿ò=Îü÷¦·DyÔ¤¯X¯–JGQ’Áð¤gú­>›·¡ª—ys®>XÓJÎª$«8?hˆîÓ–¦Žcn/Ø„®Jü9Ê|4=Fj"²Š†ÃIÝu•n;~t©1qªzë)ÜÆU‘›
R’Tš™“ÂðÑó‚áÔ´†’|“óC§Í«–ÝUV\š––Y´¬ïBÃ¦·Smž/˜ýÓeÙ»Ù·^AU“Á·´ßcMã¤]õ§ÙÕm·æf¯œUSRYZ4æÖ{ÍîËg[ë%ÿ]©×Þ×¯ø·ÀEIÃ÷óÏÕ_æxž˜ÛÜ¸òô&ë'« §&ÚŒ¬xœ340031QÈÌ+.(-ÒÍ+ËMÕKfè™4kAÜéÝÇª.„ñÝŸü1ña!¦Â‘¥Ïæ5ÖÉ¬œû|ÝžÅÉ»®Ûù£*,-ÉÌ)ª¼"¸Ÿ_ó–vYA™]ù*ñ{%oË:TE2 ¥qxœuÓ{8Tyð_»÷gÝŠMKè¦2cìã²e¥aäÒJ*ærfæhæœiÎ"„'±Jˆ§(¶H‰Š¹—+*·EëZ‘KI[)jµ3fÚ¶Ýóïïó|ïûþÎkIFD6Œs„t ¶7°÷nÈd7Y5Îkõ½S¿¢²‰dmi¹@`6‚
 Ðç¬p÷ÉñÔ‹íy=³GªÛ.PlÇäe
¹F³†ÎˆÚ»\®-ÙÕS7|Ì;EÆ<¨>^.”>.Ô­D´ŒyaÔÓº‡Â;‚± ¶^b¢É2Ë…ÊQ†!8‡Q¤)Ë~Qðj MD1`µ¬<XH’Eº¹88Q½@Wþ÷¬·Î]Š‡g<fèóQ•ŒeÄ¶bÁ\h¶£Ê)y-•‹]×íWT#êo</3^NdGw'IM;Ý“²5„ý:”§Ä!äòšÑÝÒšôTËûB›ZŽ¯;5g D~Æˆ•e0xL"lïÙ“jâ[ëo;E•4~¨ÒÿàÐ&ˆa½ußí¼ˆkbÍ9uß"ë;G_OåñPDl‚’©š:*—Œàó×Þêç[×äm•ƒòø\H2¼w0úFõkjìû+û;/×éÌÚÞj|&KbŠ;G  iiEÆ3>û0üu[Œþƒ+vßƒÒ4g€¤¤%yM™}[â§ìölQ>¹ÞøJ–Â¢Ñ0#2€rØO­TÃçöùÁ³ÏRÝ™±ÙÿBÐþ½Î3%¿¹xª?·ÔåäYËOâÂt$˜B4¾8ÎŠz(ln£Ã\ãŠÆÿ2í(k8"\,m¬¬Œx†"„`FÀil"ÆÇFO¸$ôUçš¹†f§¬hm-<)K]°Dºæ2ASËÓymÁz¥{+Í‹Ä^}´Sž ü…©ñ8`‡R
/¨ÃêMjõb»:c"=	ŸÚAè,\\aý@qç®¤Ý
jÕôQTvøS]^pÀõÅ¡é
Üža„ÍìÇ¸¾µ'Ÿ„¤UIY8,yÍéU¯¯‘|oÜÔ
šÏë›ø`ö¼Ý\O^Š7âJ¦<óÃðov_=Šj‰C´'ö,;“ªræ? šuÝšWVû›ü±‚ë8_;0S"ùÁ	A’é0Àd¤³‡kYæË!Ëçñ6¸\ô?˜¬ÉwÔ=x¯R)¨ÞQ\qç¨}ÅXª…Ã©¹¥í”ÈîiÓ9ÕÖãqÖÐ—ŽÂÜ¦&<-x!õløÖiÞíÛ#ÉêòNÀçÑÅq›^=9mUjdl:_à¯_³ji±<“ý7­ã"«ÎßÉ=¿vR5ÈºÙ{àÝŒ†·y˜nÐÓ •WÔ}´¡LõMÉ1ÉLgwx³3I÷H²,I¯IÖýL .@¹DxgPNãÒÁíÑ*N£ºžìŽ®;ò”züÒ7E*ýœM9¢x`²Á¶ûžR¥¼ÀøC’4¿E˜W­¦ÝXæŸÖ™4í5è»Vº‡bÆ"Ð„8*¾8¨*ò/#ä§²´íUËJfD]V–Eò¹B6,yWGàSóâéÍã,öò;¾øŸ·G£>7€Òr4	EýÊì@¿–ñ°¡Cz¥”` }ÄæäzcdùSçÒÒ 7Ï±—a²U@l„a€dþŽÛ¶¨Ê¥ù0ÅLÁ ¿lªg	çoÂ…h$ÙÓÒÂè»Î9K´£C¯Œ±Šêi(’^…10Ç@X Ò3øV…æUÓsUÃM×µVÊ„Î AâÎ1 6ë§N$æ«d®Ò2m¯1ºú*è©Â!L|Þ‘}>-&°Ê~|[yÞì†Ûá7‹¥çBÆÁ;—Ü´w³qaÆ[ÿ—µ /yC˜ì‡¹àÜþ¯7âÏîî°š±'iL¦Ìÿ$ÜîñÆ«\Ù•íöÑÕtÊ]ª—Ÿ›
070701015D78F800008124000003E80000006400000001642C11EB000009A8000000000000004A00000000000000000000004D00000000nvme-cli/.git/objects/pack/pack-f1c6ab5cd995edf6d1d574ca5daa1f979f9b040a.idx  ÿtOc                                                                                                                                                                         	   	   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
                                                                                                                                                                                                                                  !   !   !   !   !   !   !   !   "   "   "   "   "   #   #   #   #   $   $   $   $   $   $   $   $   $   $   $   $   $   %   %   %   %   &   &   &   &   &   &   &   '   '   '   '   '   (   (   (   (   (   (   (   (   (   (   (   (   (   )   )   )   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   +   ,   ,   ,   -   -   -   -   .   .   .   .   .   .   .   /   /   /   0   0   0   1   1   1   1   2
{žú»žæå˜ÏøØÀkô"^`ÙÉwë×A
‡R&Êª(Y¯™AîÃHRÖ<»åœ¿Àb~7D¡Åg *­óç9ÔàXû’Gärúúä]
·®ÚyŽ/®4é*—úAìc…"ðúÂ–ÎQñßPñnìq·õo1ÁeîqËÆ,ysù½ ©q˜CE2SoŒ²ŽXNfê™yÿÈ˜3óxõÄ0–â½[}PÄÇ `5x NÂs·¬gþh0yî¹Í¨ÝO²‹êÈÍ¯Òl{”U”ï½œQ™Õê¦vÛ¦±bñƒ&ú<7v˜'S–*ñ.“«/„ËÇÀÍ2‹³ù¼”VüJÎh‡<1˜wFî²°Ÿâ¾WVœ*ïSÔçRöÝ­hêv”íe„,ÛNê©	œ%(Ñ¼ ­ójžl¤´×ð08z¨œ*AÑaƒ¸/nð#ÈTb]ÏÜ^¥?s±ù¡Hr¾x>o;	Ò“?ocŒ!©ˆKu±_	¹…TµIÁ¹Âü´NÏîsz`=',iÀ¸­( ºäËµ$z„J†ÙdßŸgÞ¨9ç’Kbk î|eðB«t+)í±öí j}£¥ý€>mØúJ¤¨unçÝÉ'kÇ›#€ÚØ´ÝN˜K®ˆÏŸPaLÝKÙƒ”/l7hÅÈ›“üì;kúƒ œ‰däh¤^»¨6C'ÖF>¦)ÔOœû‰ûÿ-¬•K&;,ˆ½5ŸÊŽ{6€»(þJ6|&m­ohŒ¥z§ËœÚFˆî=]FšsK½0¥ÎûÚÞMô~¯HZ<Ý´S·”Œ¡ïªóß”²BdâÍ${º`0˜å7–+!nçH³0_LIQèñz ïpÃ½ˆŸ\Ò_;îö?0 ë‘þ¥¨i¹êŸh¢Ú{Úøè*ÔÝä ©•~»eg/]ø"‘yqìÈL¥™¶´ˆoeTýt·üúÒu„Õ³ŽÑÏº¯[¶-©”4;Ù…c€«vÁB˜IVsz3çÀg¤êéá"ú?<ÆÀï‡†i\)bU3X>ÐXEc<“Ó}™£”‚`º?éJ·§ù9Å|¾±Ö(B«°R#j.ã*¸[Ê© uæ'NºžŠ³„tÎÖN™FßšÊç}DN­Éá©ƒN;v—ñOÚ÷Lê¯÷;oµ~±aú,Ýí8gÌÞ9îÒwìãi …ñŒzHZõ—
`ÉùžÔ¥Æ¶ã¬j¤rãFøalAvË^@!®™÷[ñ¿ §9zûC 
N…û¬qÓ«Âù;ÀÇìÿô÷S{ÛqDÐ}s|Y¦í€áØ;md£zfãR£G2’®"Í”ª›¨{H»È†2Ä@<Ì“Ãw±Ëx„’I–µÁ2ôŒ*`Ã–Ô˜›Åï
|¸¨^$Góêf8u°®nïÂAèQÔ´ÏÑÎò7†ŽzFâ¦ÎÒP†›OÄékw¼×ºŒ;%þã;’Ëºûÿ%8›3ê%°…¢›¸b”1¨CQ°›~‹ Ê¬€t›ò‹ŒI'¬fæœÎÌ0Õ˜ÞÕ¨‡ê4!SãHŽ:Wb„{Ïõ—G>+õ¯Üˆaw)õ  ¬  î  ù  õ      –  †  	m    \  Ú  ó  .  µ  ²  š  H    b  [¬  Ž     4    ì  
\  A  m  
  t  ©  '    Y…  [@  w  XP  Vñ  
Þ  ,    	¼  å  Wc  Ý    X
  è  ü  ÇñÆ«\Ù•íöÑÕtÊ]ª—Ÿ›
ä-pCU!Up²dpNK)–¼Dn070701015D78FD00008180000003E80000006400000001642C11EB00000000000000000000004A00000000000000000000005200000000nvme-cli/.git/objects/pack/pack-1baeef1eead683dc5af1c1ef9bb24a3bc0531383.promisor 070701015D78FB00008124000003E80000006400000001642C11EB000009A9000000000000004A00000000000000000000004E00000000nvme-cli/.git/objects/pack/pack-1baeef1eead683dc5af1c1ef9bb24a3bc0531383.pack PACK      ¸ªxœµksÛ6ò»~®ù@²5i¹IÛ©{j+[J¢;YöYRî2‡"!		EêÐ©ï¦ÿývô°ä9G“q$ì»‹ÅîâßôþåYL3NýAB3ÁæŒçäÝÍÐÿ>hûyá§‘ EëÕZë"ÿDcá¶|œìaEý8eÎ	¹sbçþD.¯(Ï³ðœåÙ9q~ívðC;h;
ž*ÍRë›¥Ø}¼Ñk	Ge*Â|- ÄÏÉ\â‹¤³ÈÊŸÖ¸°8+YšˆÇ5í$tV.Àº söGç´äÅišÇQÚ€¾DEÆ²E˜ÒšvÎ äqžÍVt¨ˆõú}Ëk½¼mã˜t”ñ‚aœ¯Ö,¥…–qJyÐƒ Â•5\½+@I"I8b|ÊY®#±änMybÑitÇóZ«(Ó„GQ*t$ä3–=C¤F—”µ]£¬Ñ‘¸U&ô¡(SÊ•ðc8˜$È#)¢¸5“£,f‘è]ºJžc¼†DîäÅƒ¬zàlQ
ÑÕ®×*è¿KVPpÇiµôQE´Ø)ñqÅæÄDý‹¤&úƒ‚N…ë¼LÂýÛñàzùÀùæ÷öïß8Á</V‘p°kšr*9 Ý‹2ÃXÇ ‚ÐÂð÷bŽ²¾¬¢ýQ§$.‹’_Èó²ˆi&u½§ðuòªRÓ>äxIãÏçM½Ö3öXŒòR¸|)ØÚõp«ðóV«a1þ8¾¼½ín·94Q.Cƒ\¢&€3g˜lIô±4š±”‰Ç–^º;Â_F³øÑu4$˜iø3*ÑQ¨î6üÌ£4E  $\ƒ£cˆuî½Z‹Û¯ˆ¿b/)Y‰Bá(½,Y²C4.o	õO ïÂáàb:ô Õà)!½`Écp¦PFð
«rEJs¶õ	Ã8¶ÝçÈ<d
Åñ‚„qdÒ¤Ep=ŒwlÈÚ˜ˆSã$í¥Òb¶¬oEF;8{½ç¨íôIÍÔiä¢;¶Ù,õY«¾É{-*¨«Ä¾q¼¹D»æoãëÑex†Q«tÞrFegARqAãoK3åÝêïç•,L€»Ä®-y$ÙkM&Ï·ú»[PÞ°Çþ¸²CfwX-Kˆ t6çVdWÅT”ÊdÇÁ2âá’F	V5M°”†1ÙèxŠ9ÜÌ!€Š¨x4hEý©‚‹Ô‘IÈ2z ¡¥tgKxe*w(ww¿‡—´ÏôpªßOßõ'Ã‹·cðÀýîƒ½eßÚc*ˆXRR•¼Õñ1$>\õ­ÛÁ!ßí»y p¯¹ÎÚ®Óë¿íN‡“ð¦wöGÝ‹a³’Uë%±O3™-Tõ@dKÜ¸È9÷UÉˆ`°Õ:¥+¸e	ÀIŽeue@	Ô!kn* Šú÷Ýýðb:N£pòñ¦?/¯¯nº“(Þèˆ€Ñ*wëq‡e‚¬"–¹9K<òßÍð)¨(‹Œ„!VéŠ%,Ô¹J
‚æáÚŒóláýb’ÿiÊiâ2‹VØKØ-†ê¤zU3±áö§T1Ã åí±Úèúíÿi‚DõÙ/[ Ô+Ÿ»‘GfÛÀÐDÏ°“bö´IÎQ›¿ø8éÿÙ½	ß0À+–Å)áä¯³GAù—h,Ý¥`~ZÉhÖþ!]¥¢?¾i4MYöù5-£ô¤ñƒ4·m‡ñÿH²ßØ»æ}”‹†ƒÉNnÔtGZà2ç"\Eñ’e4ÀaRêt°Æ"¥Î.ÁØXC—¬o#Äóí6‡\|¤ä[HeÆÃîèïÇ¹9Æ`ßðqíby(‹E|MATo¿…û³ã³4Ê>»ˆu×¾‡ÏÉ`šúiÏW"¼£\ÍFxÛõ®¯Ž>ÐƒœÐ‹å«=çÓDxZWÓ…kL}÷¶k«¾”Â9¨¦4ƒNj]
à¤€AÕZ­í¹üùUÆ1P`hl´ÆÕ,J—Jª=®Q!Š9^¸1Æn·u#ÈË|_‡® ºœè^õáú'›Ý+ºÁõlÜ¦êØSoØèÃÁe4îo¡ëÉœëaäZÓ^ÿÃítØ«¾Õ¦Øˆ½Ûîåtr;¨Qí¡‰|ÛÿÇtpÛ7Ý	ßàÖt55­²ÁWÚª&R6p|1ÐP=vÚ ›}¸Ñxo"MúW½IOnv!]N†Î®IO,RYªm‡8Ëd|×§KË€¯i°LÆzu¶$tã(Nð(@C¶%Ñ¡">E¤âã1©cC¤cƒ	”>–b0´q<ëüÔöAß¹•"Êâ«bußjA*§p$žÁd`H2ÓA¥û&ÓSEë#Í)VÜ’%”×Õ–šM!dg©¶©Ï©V®U÷ì¡æ±?Ës)uÀb¡x€ó#eni¹ZAÜTl~7h¶-f©ö\“iâ—6f…ÃA SÚîOg
Ìòu¹çÑÏ¨ˆÖëe{Ûˆçî)}Éø¥·ýâ7O”$a•’!8Jìâ¸{çøó|Å„?/àð×9'´ÀFÓï…ïFÓp|=½½ìïïØ__¼HS_ª÷ÐjEÙ¢Œh_ùÖ hj$®ñq²
ºä£¨¶‘rööâWƒÜæ¤Íæ3T¨Ì£YÁb^ý”©Ðøî¯ò„¦Ø_`!k¥X¯fÖÂ—ê{½°NËËª_Õà²Æ¸oÙƒ­jp–­ôþ®S?MYJøŸä¸º~=jjœY+ƒzõO¥7VÊŒ	Ui˜÷‹ä=ŠàzàU¡WkJLÍD°ÔàÙËã²à$‚þA!bMæVö‘
ëÍá×z®ÈpvGŒIð	±‡³Ö4Õœ€í
Ï­©|IÄªãD9~š¨×º!yNTÀ*0Ô_iÚL˜õâŸW…ÀW)kAXÉ9Xd§T^§³ˆ/}57ªWw<mTØµåµê¡Ò—bÞð=5Ë“¼O©ðYRþÃ—§œ	êÏË,®˜¸Ä-Ùöƒ|¡Uï5’}•·bÃVh£’4sðÛñÅu1kÁ'ô°®«WÂ®ÂM5,QXÊ=åhãÍ²©ƒOt~…7ÊW˜ÈÔþ¼üð:h×¹mµ‚~4ŽÜMîÔï¬NSK7o¯žñ„\#û5õ+uÃŽT™ÃÀªžÏM,½f`é§rI7+’õ4­QÍ5Sªý-‘í5{ÇÕS³¹c½f Êð“£dyHä½ªèþ4½âšÞ©îÿÄ„3ö®ïêÖƒÜZñÁï›²J;ÀSƒ   070701015D78FC00008124000003E80000006400000001642C11EB0000044C000000000000004A00000000000000000000004D00000000nvme-cli/.git/objects/pack/pack-1baeef1eead683dc5af1c1ef9bb24a3bc0531383.idx  ÿtOc                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     ÂEÏfQH)ª+Š?5¦.ÙoÓãa
ò   ®ïêÖƒÜZñÁï›²J;ÀSƒ—4‹]GNDì’7ŽåBimý07070101755AD200008180000003E800000064000000016442733500000000000000000000004A00000000000000000000005200000000nvme-cli/.git/objects/pack/pack-a2cea3a067c8148dbfba0d48910480746d8986c7.promisor 07070101755AD000008124000003E800000064000000016442733500000B03000000000000004A00000000000000000000004E00000000nvme-cli/.git/objects/pack/pack-a2cea3a067c8148dbfba0d48910480746d8986c7.pack PACK      ”*xœ’OÛ Åï|Š¹åÐ:Â`½«ªêJ½ôÜ•z`ˆQl° 'Í·ï8ÑVªzh%KÍ›÷~ÔLÆè}‹ÒXzj‡¾ï©¥IÚ½’Ý3vºëÅŠ™b…Qy©´Ò¤/ÇÖKã­q¶óF)5h«õŒ·:¥_1šáž"eøä®÷Ÿ/e+ttôZ=vòIu}d'¥°iYB­ô¿­Zê÷VáÑä`Ë¼:iv¯ÀŽ+Þ—£+puƒö|ÅÌÛG9˜0×›ß"¤ì8¯&8­@?C©!ž€csä¡N!2¡GK0áºÞ>râ^xO¿ãö¤#¼Î%Á‚g‚²e‚+KcMOtï54á%¤|„·‰C‡xYˆ	c$[œç8ò¸Íµì€Mgqztð§vg8°Ån,
rüe·;ìÂ£o‹ùã•‚ùÆ8ùÐwÖœÖ•'ô!†[Ö™~<ºw ‘iy"î1à]º­¥fÂ.<:–qÌ÷À—èšä}cn/ÿºcñ¶Àâªœ;xœSßkÛ0~×_q›ƒ#ÿné¶ÒA›²dô¡”!KçX­-In	ìŸìÐ0²B§ÝIß÷Ýéîä"ðš'Ñ<‰^$±˜S–T,tžÅ<£´H‹(‹ÏkÒ3ƒÊRæO³œFy–f|^E"‹ŠP°‚Çq\$UÎ«¢”°Á5ÚÀÆÌ8X±=Z(íäýjFïB`ÛÎ¸îÎažæó„ÆašAÆaHüi'C—LIláŽí”÷Jñ2v°88Qi˜¥aJáSH=•¨ªv`B€kFl£_ o‡T„\JÛ·l\+ç_dA×òË·Û+¸ùºÜB-[´3B~Z¶Ã¨çîoRà³ä>ôýúv{µ¾Ù<²îÔÊ.À=@èÁõƒjm:æÎÊåõöü3&FH ë	3îíïG«Õ«Œ*»·;O¶#ít2SRSÞG¸}hjé©«·¨o	¬–WGª–ëg4{/ Þ}„Ou5ºmÑµÆâ=sÍY¹Ùþ8ÿWmÔò5ÀZ*0‚ÇÊÄ«|GÙHß|èºªýâ¿fë”sí1RÁlù”ÝË¸¦é-ôwÝ(¸F…»F*	åcw°/Š†¹çoÐø‡÷’?ùÔk£;80ÐH0Dá¿X…E•PšpžæaGqžç<dËýEýñ4ð;cOþ Õ?"ø˜@xœSÁnÛ0½û+xl18‘äX¶‹¬Hƒ¡Ø´–l=’LÅZmÉ°•Ù×Ovº"Í†v'“ßã{´ä;D˜‘$•‚S%W¹P²@Ây‘°œ¦\ò„S¢­‹¨ZRÌdÁ›)Ês-Si6+3­’K‹\f:U,£4[_¹V~+:Å{˜÷cö£²E‰u=Q®¹ÊÓ4¡4ÉÄ$%$
ÕÆx|Ö`bcC6/÷c°è·=NJ 9#'œÁ;Â4²Rû+e‰%Ü/o×°£^È¡ß¶­ë|ÝŒÇO)è 4øëÝ€¯”³>˜íÁé1iŽmqÿýcwIç<ô-*£Þ8;»„½ñÕ&‹ÊÇ¢®AØJÓ+·ƒÃPè'Að®Áçƒé)"Ž3`6ÖuSôj:6‡m6#aØÃ‰¼þu2÷‚ïöLu>ãMqq+|õ~¾Z½º¸DmlØíP{ª.Z…ÙXÆNëX®þëvœcîB±°ÄZØÍp'š±0‘O…dô-X~ƒÅ=ŒÖÛ­¬‚›/Ÿ&‰Y»Fô°ü%<>ÂÜË1XtXVÂ¿¦äÁÔ* šýð=ÞÌuv•…;´¸©Œ50ÿÙã.T…]w€Ö¨Ç°DÝ¹ŽDFÉÓ„ÉTŽHD¦5¥¹`‰B5C%yF‹ËóÁo<¡è7¾,ZÆšxœP±NÄ0ÝóAèNiÚ4	:¡˜˜@bDNâÐpmRåRÁý=½Cb`Ëƒm½g¿çZˆ A'¤7†[Rh,	£­4N5½2Ørb3Jd/Hù5‚×ÒºÞÙÖð JC_3è¾mZÏp©C.ð‡”èmˆ)Âî}ú®÷…ü€uëòtM¯›Nw¼Õ°áçlN±V*p)Ò/ø–Önç?.Åþ¸iëéB\õ¼pÃÅJeÉ†zÆœËüêj!,ÉÕ˜Ì‹£cì9Ã\èlÂ*´è}¼`r€óšŽ±ž ÄÏe¾ ÚÝ‘yr#<CŽ[Æžâ*Îor{ºý—wvå*åstòJžàÛ>´kŒ"ŽNx©TÛ¡UJÎ­ð\I•Õ"\ÿ>üÇÓØp(¥£œ!xœQËnÕ0Ýû+FÝt½²Ä±ªJU±B A%Öc{ÜXä%Û¹Ñý{œÀ6#kfÎÃgJ"Ñ[§ŒV÷º‘­4VšNsï\CÂ!—!ÙŠ‰æ{!µî•ì7Á¶Üb#75NwN5"ÔNÇp+Ã’àçH#üÄ·™|ôûùxÊ[¦‹§GJK®4oxÇ%çÌ-ÓK¡ÿ„öŠ+ùÊ¾Ó•R»OÞ“‡¯ÏŸ_¡ 	ò¶®K*wŒ½1C:÷2üÑÖØ¶RùF‘#)HwÆˆÖÓ5Ú’é­¸0ö…Êý_Gte ˜m(§u¤©æƒ%.3ì±çp[sI„T½\'öÍ^ã²åñöv‚¯•eô,º_'èp…³Ïj~GwÇäO³+°[au+ÔƒÀŽ7È§z:x&ŒÕCœž£Ô¿”¨ÿkxþa	áÁÞ>ü+[ög0¯ª•"xœ•QËnÜ0¼ë+xlìB–eK
Š"‡üAô¸)r-Ô–YÛ`ÿ>ª“KNm/9ä_µÁ œ3šX;Ó9§:æ±#4ãÔkÔM¶ïi¬›/”*pHJß’Ñö'Fåú®×Þ"Ymšu…¿Õ9xö)Ò?ý5QoáõpžöÛNç@ß¡­±v€©¤˜×5ÖJÿDUÒŒrTT‘~¯tÚJLõ^vJ·þ€—¼ðâ¯;pë ÷9¿^b¸`-‹WDˆ;´þÛâcŠé
uöµ¾%¬1'„‹/þð}
-æVúžÊr«¯8Ÿáe¾ÒAþÄAÌ%4íå~âGl…Sf>M÷Ç¿-,¾àL¥Üa‹ø‹pÉ+¼Ÿ4zœ‘LF9V¬´‚ìÙYÛ±óÓÄí¹ZÛ¯ÿÛóNÀ´@šxœMO1†ïý< [–Â5š¨/&«ñHºí[ØÚM;+áß»àG¼éifóÌ;'€¬jLãTi
¯KW”zîS•vfÝl^”s,´.–¢3	ÉùJKéRÒW^{+U³œ/Ê²±Keœ/*azÞÆD÷&´ØÑ›Ù$ºr‡ss›ûŒ‰Ãz)µ¬*=£K©¤6î÷-3þµªäBK­¾VExßû±!ÀòŠò13öŽ¶&9„6lÞÇÄBl™»¼šN&±C8cÚLOCýZ?¬jØ>µ|\?ÂpŸ/êOØú¶þ†ÝuÝîH¼%œÂ#~Í`j¦¦g:´ƒ•žÅè9ER>!ì^ú`šò5§#2™ €sR€ŒµÈ™8Òtxj"DÝ*Ü8z?nŽ«¿L‰°w¥Á¢Î£ gÈ¿ºH‘€tm‰†Ç 07070101755AD100008124000003E8000000640000000164427335000004F4000000000000004A00000000000000000000004D00000000nvme-cli/.git/objects/pack/pack-a2cea3a067c8148dbfba0d48910480746d8986c7.idx  ÿtOc                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      °·;o·×LMag‰×Â­Ç*q(‡bV	û@º1•¹È\cº5V.}ÝßØ[ÆË9Y¥žá†1=…ðVVåOü½ÂûUTlmXEšºK’"Lº,WMÃBY‹\'â¢–x#‡gÁ³×9©ÄD•¸Ê«6ý^ £`üƒ|¸Ö)14¨Î„ráŒ
\B†»†ƒÖ…‹"êz—˜yœ.?á.¥Ë›     j  
  ¥  Æ  ²  	¯¢Î£ gÈ¿ºH‘€tm‰†Ç¤†ÏyåLÚß÷ýb§ý+t‰e§607070101755ADD00008180000003E800000064000000016442733600000000000000000000004A00000000000000000000005200000000nvme-cli/.git/objects/pack/pack-04266c428023216fdc2b5a77f22ee90426a703f3.promisor 07070101755ADB00008124000003E8000000640000000164427336000061D9000000000000004A00000000000000000000004E00000000nvme-cli/.git/objects/pack/pack-04266c428023216fdc2b5a77f22ee90426a703f3.pack PACK      3«
xœ340031QHÎIÌK×+©(aiYüüá‚wº?.­H‰¸¹î•=ÿ’tCˆ¢Ò¤Ò¼’RÝÄ¢ÜŒ4°ZÇFlÚÏ×üÞ·|e¯¼F@6ªÚ‚‚d3“œT°êìUï÷¨Ý>«#ýñ‹ž-Õ:Šz%§PU[T€Õ.”ß§Y¢Ñ•˜l3¡ìÿ–ö=	9 .òE—©xœ31 …ääÄ<†¢}vùÖ|œ—&Ûóä'÷(®ìhô6Kçd&§æ§3„‡ÍÑz|åùÜ ow×f¼*ãžò¶ÞÐÀÀÌÄD!7µ8?O/©43'…Á{ñÖ_¡¿&ˆ6u^Ü¢ÑzÙ#· 5*j®xœ342 OgW¿`W†íSeWßizëvù¼ôão»­òkøÌLLâ3óÒò¦¿~v2­9=Ø5¿Öõëºw_zpB$•fæ¤Ä'§•èe0ì|sÃAãñï×÷3Ì±	±pò“07 ˜•/Ò¬xœ342 OgW¿`W†íSeWßizëvù¼ôão»­òkøÌLLâ3óÒòÎ8¥›Ljœô:½NÊPóÆkÙcÓ¼¡
’3R“³ãK*Rõ2š«ÞWK™­ˆëÒû^zsÑI¬ãÓŽ  ·i+«®xœ342 OgW¿`W†íSeWßizëvù¼ôão»­òkøÌLLâ3óÒò6Š±*½½òçoÐäXK¥Z[ÉTCÏ7PÉùy%‰™y©Eñùizî‹}[­}Š?hð™ñ¿r4ixr¿I ç«)Ï¨xœ342 OgW¿`Wå‹š®—•d¿ÖÎr9”¥RÎ%lÈih``fb¢Ÿ™—–Ïpäó£k>IqÖ|Ý¼RÒ9±Y–Ëª '³¸D/™A]ü—½øÓ5r>ûe¾ôÎÿëül)²Š†…ÁŠG'L}_±ÁùÄŒg_&ôK… ê3h xœ342 OgW¿`W†íSeWßizëvù¼ôão»­òkøÌLLâ3óÒò¶VÅ¯:Ø'¿TaÚ¦—ÛÞö*ØÂU’šTš®—ÌÐ8Åéú¤å5Â–+îéažÄÍî-UR\RT°R%FÜéCª_Àvõ2Å¶–s!)È`¸)¹Ã×sŸÍçåÇãÿÎPú#ž¬œŒP±(ƒaÒAÇ3‰ËJòÛSN·ËHgZÅF GN¢xœ340031Qp
vÑõõaè¼gê>õMUÍ­5œš©¶f!¼†%ÎÎÿvn”x¶uÁGkßCZá{«¿9ñO  ËUÒ¦xœ340031QrutñueØ%`´Nú ôSÃ½‹:bøw/w9“fQŸW–›ÊPÎôçä‡3&íÿ¶Í1hhX¤8]ðTARbq†.H‘nr~nANjIf~ž^qÃ¯Ç«VpÔj…E´.u{ ól_ôç5 7/I­xœ340031QHÉ,NÎ/K-ªÔKÎÏKÓËÌc8ëà«Ž³ºg„T'¯‘¯=õÏee~ Gg§xœ340031Q07ÐÍ+ËMÓM,-ÉOÎÏËKM.ÑÒiz™y»¦	¦y}2õ*[Õ”æÓÎ‘÷Óö{ ûÛ ¤xœ340031Q07ÐÍ+ËMÓM,-ÉOÎÏËKM.Ñ+*ÍI-ÖËÌcxøŽóòÖe{ª'íc/úÅºw²KU!TŸ!D_f~A~Nfr¥n^jIbABïº¿s=_|(:¹öœóu‹’°ï&k\® ½0®xœ340031QHÌ­ÊÓÍ+ËMÕKfxàµÔôÇ‘µRý3DNÌz S¸-„å¯!º²†oG~ìÞeº„û‚@ùC“«­¿Î˜ «± þ®xœ340031QHIÍÉÑÍ+ËMÕKfè»ÈW¿õÙçøÕåÂº®Ýê+|¸Ñ•e0¬úpO@Ç!BP—åØß3“Æiþ-¼ #„w®xœ340031QHI-JÔÍ+ËMÕKf˜Âñ”ízÈý9FŒª—6öžÛÏÏkˆ®,ƒaén®'l7øÇ„	÷»¾gä9ñÿ UÌ…¢xœ340031QÈ(M,OÍÔÍ+ËMÕKfWh;×cœ}dš~;¿þ'k§Ãrí[1f0|™—Ó!øòêTQåW²ZwIæ]0 µà¨¢xœ340031QÈK-I,(ÐÍ+ËMÕKføzšÝ˜cÇ¦ò¬–ÃÙL¢3ü#1f0ßóvºr[|G^Åú%.Ë¾¬9/- Ÿo¢xœ340031QÈ+ËLÉLÔÍ+ËMÕKf(|°Ç˜õåÁeýwßì¸[üïÖ¹ºØ_†˜
3lÛùD^¼;§õÏÊ³[6˜°Ü:ÿ ’B$õ¬xœ340031Q(N«ÐÍ+ËMÕKfð>¿?kï¬Ãó}Cw„7M˜mòó¢!šªî©7u3/GTI™¸¬xÏ"/ÒÏq! Tß®xœ340031Q(NMLO,IÕMÉLL×Ë`°üpyÖAM†/'ã›Ôo°}ütò‹!ªÊ¼²ÜT½déË\!…Cî.ãîVžþ¶;dƒüÌTl*3f~3*þ°Ïpî’.µÿÿ#>L»°}ÝL ÷ì4|¤xœ340031Q(ÎHÌËËÏÓÍ+ËMÕKfpò¶/Þg°eÝs“O†K³.ë÷XúÏ‹ÊÕèmÛz‡mŽ3X;§nAöÿÒGÇ%MŽ"Û¢xœ340031QHÎOÑKf¨:sÔÂ'Eâ2ËfïânË,UÎ´?†Ì:gÏ~I•xTe–¼U›—}ö{}¸‚¼´Ìt !‚†ÊßÚdŽ­X*ÿW‘Á1ãñ{T5ÏäÏ9qì÷ÄkÇÊ²íåÅ]¾™+AÕ¤$–$ê&¥&Ò—x¥¦»©Cÿ°Ï‡­Ïž>ÃÏÔêŒ¡,ƒ3n›ÏCÇ©ŽaûÏul;7Ýˆ—óºTYFjbJjÐ¨­‡ÜôÅ,¾õ`÷¾»ÌWõƒožý‡ª&ƒ©êk¸Õ3Ý}\Ç$V,­’¤³Ï ª&7µ8?O/©43'…!xµ«Žâ›é7¬êÙ¿§Û…ÐŸÑ-Pe%©9©¹©%E•º9ù ¾|ÿÝ„—ÓsÕÓÏ_Í«ÚûT6  Å,¤xœ340031Q(É/ÎÈLJÔÍ+ËMÕKfuø·<vóûIË¦©†·q2Ÿ­/«2Ä¢2ƒ!‰ãë}‘åå“ƒ~ß˜){AHúƒå¤Ï [!N¨xœ340031Q()JÌ+NNÍKÑÍ+ËMÕKf`rüê¤±òü!Ùcy•zjßåŽbU›Á0§³Ã‚Gg²ßráË;X<ú%;ÿ BØô¤xœ340031Q(Ë,*É,ÍÕÍ+ËMÕKf8q_(‘ï}ÏÌ}/ßjû]é´Ü‹Ê.–Å.[EcxçÆ4ž.[ueÛk \!°ª	xÚ340031Q(OIÖÍ+ËMÕKfÐ·>òµ§\Ñà´è¯>wÕEž†hª2ÎÞLŒå=wlÏ–½.ožd~›øì+’ªÒ’Ìœb aÏä.±û¤œÈc[±»(§.À˜{†²†æMïŽx–²NÍ{õü©}Îòåý ‰=*¦xœ340031Q¨Ì-IÖÍ+ËMÕKf¸àÒxâÜ‡PnF—€SK+ãj÷¯ükˆ®,ƒá~ldÿëU«Eç2>ªæc²N]wÇ/YYiIfN1På÷9[WnëX¿×‚=·TýABW@7 k..x¢xœ340031Q¨Ê+ÖKføÑ0{IÉö‡–ÇEã¹4C£w}Éó˜iˆPÁP¾ÿnÚê?Sn~Ú_Âp?VdïW¶¿– \Tƒ­xœM ²ÿ100644 gen-hostnqn.sh ³íñOÐ1n½h`;J¨ü@qþÆœ100755 latency 
ŒÄŽÄ.i%«ðuKôùê‰4Œ¨xœ340031QÈM-ÎÏÓK*ÍÌIa¨ãkoéŸa;©`ÓlçÐi_ôv}lþgQV’Z\¢›X”žœŸ—–™®[XTœª—Ì |âÊ¿÷çfÞ}R.ß÷×£¯äîLedÅ¥ii™ºI™y‰E•p]ñYGVLË9UW£³ñÂ<æ9•FË‹ŽaÑUœ	×±g’kZ»úœ™çëµî³%¸;—¯YGif^‰¡‘PPñaWW‘gw|²*éÊätùà],Š*“7‹FÏß¼îXßÑŽˆãÇ-g ÷fp5 xœ340031QÈÌ+IÍÑÍ+ËMÕKfèÒ<?y¯Xš¶ê9ë3ÇJÏwecÖ1ÄP—Á à±r›GñÄSÁlK„/Ûùh- l!Y¢xœ340031QÈÍL.ÊÏÓÍ+ËMÕKfØ_[—ÙmÂ_VÇÕ:¿ò¿×šnbˆ©0ƒÁ¿ºS©­X°6üÀÓ£ó+‹s®F¥  ÷U ^¡xœ31 …¤ÒÌœ”øÄââÔ¢†¼Ê'XC’bûÏß‰[j/V¼ñçB°²äŒÔäìø’Ê‚TÃƒ©ï
OÓ©,þ¹wÁJ‘ÂÎr®PEùy%‰™y©Eñùi<ïz{]³ÙýtÎþIuæ.B”¥æ¥d&æ1OÓú¨7Ydµ~ËéãÎuoþ¹g
DANfq	Cçïÿºk¦z«1O°Ö‘íØk:_þDº¸¤ˆ!pæÕWËÊn/Û˜ô±Yí—˜yÙu ÛoVå¨xœ342 OgW¿`W†íSeWßizëvù¼ôão»­òkøÌLLâ3óÒòÞ?]±û^©aÊ+…\nß¦“{¼æ‹'C¤æ¥d&æée0˜™À|¿7ÖP¡këÆ×K¯?› O’+S«xœ340031QÈÌËËO/Ê,ÑÍ+ËMÕKf/î3¾óÕ{ÊŒ>ý¢ÒÐ8û0ClJ3th¥Ú}<<!\øG‡Ï±™Êµ¡JK*RSRÓ€ŠVV1tÙpGß“Y0uo‡ÚžÇÒëo |ˆ-Â¨Rxœ340031QrutñueXú« åï‡yŠn
û.M¯Ø7kÿÊCˆŠ†Ì†¬y^.®™*{TÒ¯°×~îÿ•OÎÏKËL×Ë*ÎÏcàìßÕPÅ¾“19F^ùèæÓ»oHC•å¦è%•fæ¤0$ó›Þ¶óú‘®~üÿô¿Ãå7¢~C•å•å¦Æ'–”$&gÄ§¤‚©¼âø’Ôâ½‚Jöƒ¿žÎ°Ý¦éž9ëÛÐ+*6 kLÎÏ-H,J…«ïýóÀ}zgZpÔžÕMWNß+9¶ñªú‚J¸â^¹*Vë¿x·jzÃàóþù$ÅE©‰%©ñ¹‰ÈN
¬,Üª).z@µjò*þl³wÈºRŠsájojí‹äz¤x0R^Ûà•ï†©?“‘Õ¦åÅçä§Ãuìšx@5;þäæÿó÷­*ïÑr¨DÖ‘–SZœWýä£ú­ƒ·|V9ñ“Ù§âLæ4…UÕùE¹‰%påOý8g$9Çt&ÿoÉ+xÙfÒCQ^Žâ–méâ<¼óW().ÿ³±NÇsº£'²òôÔ’ø4`•¥"‚§Â_ûÏí=\ÁïVÝdØâúZ_ÀQ ]SNRb|q	P#B[ðOóäÅ{útn.àÙø2£pÞnÖdm™)ñÉ%E9põ7½N¿Ü°ÒÄ8|aÅW‹G	ÿ«âÑÔ#ÅYÚ£ŸVw
ç_çë“/â»göZ€QY5’ƒà¤¬\Ø„ýj‚®Š»Œ‚Û·7¼u Y0}¤Ä—e– `Ï:®5t\Œ=~8OãÂÚ]–\†¬¥83· ¤H%"éÓºõÚß©ìÐ±s©3ßÍÙ)õx‚Ò4}¹‰E%(Ž›˜÷eVTž®·kkwÙÄfc¦-‹@ÖSwõÍÂ†»ßù‹Žœo˜ô+V[Î£ÄèººøÌ|Òý–lÐ`)µKËMº°ø÷½÷¥JnHO-)¿ ¡É’cqì"·s^§RgÔM|à”…¬¼,µ(3‘Ýjšú÷o>øIîÆfíîÝ=†ÈÊÁYš—Ì0-ÍW’LŒ×?¸´5ÕöZ×ë’vW-U©Eùˆ¨62||wþ„%©gjNþ;9ßqýùÃP-E¥yñÀìŸ“™W’ZTRÜ6ÛÎ-ˆ'NY¿~ûjÜŒ‰ÿY•E™‹¢xœ340031QÈMÍMÊI¬JÕÍ+ËMÕKf¨r3^¿díïÈÏb]§ßJT¶¾àK4Ä¦4ƒá‘È©Ô£<Þ†Gvžµ×pß|öÇ¥èJKK2sŠj¿y	†¹|‰ˆYsªøé5CŽ¼©› Êš4d¨3xœ31 …ÄÜª<ÓŠ~‡Š·¯‘Hÿ—aPùNzçÙwMÀÒ)©99–òŸû}ëžï—ºõQ6w¶o‡I%2ˆ¤+h­ýüÜòÊƒˆß“ÜŸýúõ$"–RÀðu:WBïÉŸó®,=¶íñš¬%EÝd!²¥‰å©™)O2–Äí^aæ¬~ÍÍn™æÿ9¿!
2óòòÓ‹2KŒ?óV|=b0ùÑÞèÚ ¦#Ç`JŠJ‹–®ÈÜùj~Æ¢[¢Õ·~ð½Ðºr÷É˜‚’Ô†ÿ_ø¿Wß.ti¼P[\#¹ìmD>757)'±*•Avn¿Ò‡_‡¦üx?àcÞ›Âí_óÌLL€jŠóóô’J3sR,¶Ÿ}{ÔÎ¢ûr2—Êý¿³”
Òf±@MÊL.ÊÏch°Ë½ñËk‰ØŠÒ¼çwOªgŸ­,
Q—”VÂÐ;S;%‚eZ´šÃwCÝKÛ*'•Ì‚J§–$0¼»ÄXÞûæq&C+K/ÇÇ‘*¨~¨‚²Ì”ÌD†Wë¿³Zåo­Û˜øKçî[‹ô3÷,!
ò“¶maêÈOù[²ýÏ¯K¥-W7÷]<‘-NNÌIMË)­`8và}{[fŒfR¨q„Ý…×d›É jRÓKRVN­Ûš®ûCi"eáö>KgBUd$c%áÙ\u¿]ó˜»63¶”œ»æ7Óíþ¬SPù9@w¦ç2øKlê~uBâìzÙK9ÕSBçNy¿wDII~qFfR"ƒQo°”@~Ï¦¾¿´W3+ÿŸšUQ”˜Wœœš—ÂpMÃiõé ^å,½Ç’Z;¢O­\P
QS–YT’YšËÐWmÖ°[ã“—YZîÚüŒž¥U<å)ÉÍSôsÌ3Žž˜=ùÏëì_bÍ ®¨Ì-If8è4Ã3¬X´Êøùô%¯^>Túeo‘®Ê+fÈYÂ¼åúi‹ªs´ë/&6ïÐ "^E¢xœ340031QÈKJ+Ñ-È)MÏÌÓKfÈzzbö¿èBîŸŽ×-¶›äb*Ì``lö¼™ø~³ÒDÁÙ:ùç¬&§/œ Ç±,«xœ340031QÈM-ÎÏÓK*ÍÌIaH²\øgbhÄÙ/3l§5¯OXx‹ß¢,?¹@79'5±H7­\·´ %±$U7#³¸$¿¨R/™a§rtÓë—<Êò!;
×žÐÞ{ùÐ"4f0œåp9q¤ãïÜZ¾[WxÓKî™5ï?’Æ¼²ÜT ñ+RÌ¬ëg5¸?}òC„ã»•çøÐUe0Ü™'êïúÃóÖ£¡|i+œ®¬Qþ‡¤ª87±¨D7µ¢$5/%5E7'?h²ù6½I3½§›•ýžuu	û‹pv3üz2œþlÍÒšûê×D¶Ÿnþî•QÏLAÒSZ’™S4zqUÄ±{ŒAÁzŠLö‹¶ÚÄP–Á°2IlBìÓ¹Ò^ÿ¢W«¢tæ/ ¨Â¥¨)xœ340031QÈM-ÎÏÓK*ÍÌIaÊß ?{á›ûï•"¢4×,œ&õÓÇ¢¬8?'3%3=W7=±()1=U79?''5¹$¨9™ÁBcç³:ÙòZoy²…º²ÝfL¿H„Æ†Å½µ»ÿ	ØÞ›2óEòV.¯	·£kÌI,IÍK®Ô-)JLÎÎÌKÚçðöü‚/8qËÿí}½zÞùóÎÿjË`˜Uf5!}†‡ðbƒÃÑórø>sSG×–W–›
´Ïio~ÐþKêÒ}áû=œîíã
àÆª4ƒAþNVºE°îä›VÙ?<;Ç}y-Ëut¥Å¹‰E%@cÃz­ö_Öô-~;û2§SßEÅó'ïéaW›ÁðpÞ¾À9Át‰ÃŽïÒš4—ëJe¡«-IÍIÍM-)ªš=Óm¦lI»Ã³¶RÇUÿn­É—P“Ã­>ƒaºÜ£5Ä>¯žÚÉ q)¡¾ŠÃ¾y‚‰`QÎP“úÁiu‰¶æ[Ñß&¼eÈª]¼ô/ºá¥%™9@w0.™²/¡‹_Â†aß¼«ŽNŒÇª4ƒÁJ"@Þpm–]úûNQÛEŠÊíÏn •„ª¯xœ340031QÈ*ÎÏÓMÖ+/J,`87ÿ«ô§Ï²¹~ÿll~}½Ñ²Toå9Cˆ²œÌ¤¼²ÜTˆºÍ3Þ.9¼mVÁ»k1«YüT %]"Ø¬xœ340031Qp,(ðÌMLOu*ÍÌII-Ò«ÌÍaHß$z¬q›÷7óI=s|5.ê33„(O¬*-JÕ-È,HÍÉÌK-+ÿù:îŽÑ‘=;â2˜’rÅÏ©©› BrQ~q1CU‹WÛÍ”ûóÓï­°|>É;‰5[áÔ¸”Ô‚Ô¼”Ä¤ü°IÊGN[LœÿòÂ»²ƒóÎß™PÕ’œ1©<¿(;-'¿¼˜!ì×9ŒvÃåsÝÞõnÚ0ÿÑ> Ç=T•¤xœ340031QH,(ÈÌMLOÕ«ÌÍahØà™pXòÏ#Ž¬Ç+Î|¶øºÓÈ¢.©43'¬è×S®P‹ãËûžtýsjÝ{ñ±|TQQjNjb1Ä¬Ý/_®Xfû}VØ”ÏA÷»5|¼ º€3ð¢xœ340031QHK)ÐKfÓÔëùµ¢ñÙböxõì--Wçu:"d0|LÚ¬(¦pJ÷ù-^¥g[V=¿j« ÍF¯!xœ340031QH,JOÎÏKËL×Kf°ÛÑúëÌ½s;¶ÉÑïü»b·ÛCte¯Ö;Ä_ïí*Úq[1É^õä·Ò¨²¤ÄâT3 Qì?KO<}ñl‘sÍ3ã3oX>ÉMŽª&ƒáÀ7=íŸúq3TŸËøÜÜ¾i’nTMrNjb^iÐ kkjÒmtúƒÝ›™[%Ävê|*CS”Á¥z±úímå6ûE[õœ»ST”ll4çŒn¿ò=Îü÷¦·DyÔ¤¯X¯–JGQ’Áð¤gú­>›·¡ª—ys®>XÓJÎª$«8?hˆîÓ–¦Žcn/Ø„®Jü9Ê|4=Fj"²Š†ÃIÝu•n;~t©1qªzë)ÜÆU‘›
R’Tš™“ÂðÑó‚áÔ´†’|“óC§Í«–ÝUV\š––Y´¬ïBÃ¦·Smž/˜ýÓeÙ»Ù·^AU“Á·´ßcMã¤]õ§ÙÕm·æf¯œUSRYZ4æÖ{ÍîËg[ë%ÿ]©×Þ×¯ø·ÀEIÃ÷óÏÕ_æxž˜ÛÜ¸òô&ë'« §&ÚŒ«xœ340031QÈ+ËMMKÖMÊÏ/ÑMÎÏËKM.ÉÌÏ+Ö+N-*ËLNÕËÌc(0KŠ)ïHöh*Qè½À¸Jÿ§oš!\wšnbiI>T+²¶£õß%Î¸_Ø:)|_œjÅÛô	ë\‘µÁ´”$¥§–€t|ó2?Ä1ƒûÈý«·]©®éü¶¿*‹d[Ú/fËHæzÝØøowhâÛÉbÜÔfVÖ¬xœ340031QÈÌ+.(-ÒÍ+ËMÕKfè™4kAÜéÝÇª.„ñÝŸü1ña!¦Â‘¥Ïæ5ÖÉ¬œû|ÝžÅÉ»®Ûù£*,-ÉÌ)ª¼"¸Ÿ_ó–vYA™]ù*ñ{%oË:TE2 ­xœ31 …”¢ÄäÒÝäü¼4®êy¿vÏ›ðìéŒó?ÄoÈîÿ¢ÄmVU\Y\’š›Â`Ü³É´n»¬eBZ¹hãzNå9F	+!*JSRËt‹JsR‹nÝØr×o†÷:ÆŽóóû}îzß rÝ-~¥qxœuÓ{4”yð_—#—=+gkå’¢ÖLX¦äH†q7Êee3ã5ójæ}§yßqÛ\rˆ®Bg­\
]L$÷RB„VBeKré 8„bgÌìî´í¾ÿ>Ÿóý=¿ç÷>ÆÂO“È„qŸú?{2öÔR>Þukó=/Aš¥¡ÉØx™ÀLåA ×nõÃ×gR.wä÷0ô_È;\"›K)ÀgCÊ|•^ÒÑmåxr[QÈÏ=uƒ§Ü’$ÌÊ…êîjOöp·§Ú9àÑ°+F½4¹>êHg0ÄT;}Z{£ñrgÖ(ƒÏœ†Ã(.Ô–SÙ¨ÎãÉ'$t6ž7K"ì­(T7
è.4
œµë–©ˆ³r™¡/FWökIˆ3í³! ÔÊ&å?ª\*vÜ~XF¸aÏ@®Ä¸R,­)¢žÒø;'f+òûTÈo‰¯«ºC>.âžÔäË‹zÃÎì(2Ùž:¯¾Æò#N’ÁàY`ß³7¾)Úžµ^	fã„’›-çŸËõýüX4$€ñ„°¾uö±[ÁÖ&¾I}b˜ù½µ§â_åpPDh‚ÎR•Tä
4á´Ónßä¶éæ½²•4ƒr¸lH4,Xi®•_E[¸v¸ëjÊœÙÝÆw’¤ áÍÈOÜšÀ0MkÆý†O·Çlè¿f¾{ô‹Ó œUó[2zÕmÆÍ}mdÏcŽ·WJRitÌÀˆpoõ*ôˆä‚žS#£ÔÞÆ-K—yÿB,ð9Ã#…’Ó_È¼På°Ô_¼­*]‚Ø0	æ@„+Œ3¡F…Ïï¶šoÜÜ˜ã]¦M‚#ŽåNM„¡!˜p“ˆ±À©¡dû½ÕyúŽa™ÁI›ÛÚ¿JR—-‘Î‡ÙÀ5ô˜SoýMÒp]žN›`e¾ê,å”4óC¹ËS#â¡8`†‘‹
’ë°zíZµ¸î®˜Èý„l	Fè¸°ÃoyñU‡~ZõX»$Ùi îXÓ|R”´`µr˜…#v®[U™²á7ËUì’ýKˆ®*j‡E¯I)n.½g«¹iTm÷`mÃÛ®éP¤¥pƒ ¶hÊ3»›¯|ý(QõÝ˜^&—þ­ëZuª½µ?l¶Œ³o„ÎÜ”†\Œà„ Ñt`,ÒÎÅ±,ã}„ŠGˆÆ¼?Þ——üf’e“Â&ÎT
U;‰Ër·¨ø
C×ápJ^i9òé¤ÞRN5i$ž}íX I	ù!Ähá)ÕÌèY³ÌÛf§×ÒŽÇåÐ…q{Ÿß*y}Þ¤TSKoñŠ}Â†š-ßK3ÉÓ6RbÒõ»%AÍ«Ã Dju{ùñ+Æƒ.z¦~jáŠåuK;Éã½ãÃRL4tç>ñÜìAÛ‹¹¸Ý`–áñÄ/Šà<”M„€wåœ`üòrßQ9ÊÐúýÌÎî&iÊ=^¿í‰”Ï&“	k0{Ú¼¦RZ`\ˆ!JZ´áçW+(7–ygŸëJœ´‹ðÜ&ÞC!$Ðø8*<8ðshQ­IÍÊ$–²ØÚ·$‘\6Ÿ	‹ÞÕ¸×L¼½s&©Ñä‰}à?ý¥a”–£D¨÷}B*³C ýFÚó†Nñ‘b‚ë.zÛo\Þ•<¥óæC×tÃäÀá(É*ò &Â0`°ã#»}E•}k,Yµz_Ùx*ëoÂ†h$ÚÓÒ¢£ìrT•†ü±u Æ$º§A >
cð`.Žpó5ºúðÝ
¥ëz«[nmZ§#|:—‡	oŽ(V¿:zºP.cË:½ŽÍëSAÄ
‡0a½+"íhî¹ÿ*‹‡òü9ÓGî‹ë|ÆÁGÛ2¸åà^­¢´Yï÷µ ÿ¬i¸¤ŒÃlpq‚{ÿvB–O§ŸÙøŒ…¦âXÒâŸ±ÒàÁ¡Žxœ•w •ÝÇe4(3‘QvöJöLEV„PÖÅÅÅu¹×že&dÏÈJ‘")Bd¯„¬(£$›Ÿç¹½ïîÅïŸ·÷ïçÜÏ³Î9Ï9ç9øù……„ (SÌaÊkŠ°5ÇYÌšpåÄ=”ÔË ,^év¦†þ•ÀÖ Éuq€Ú¢`[/Ò'HqˆLŽ­¹[›’`VÉS[Ö±—èd
7ã±³q´€m&\p,ŒÅå}‹ÓÍ¾Œ3¯´îÅþú/ŠâC`¶`ðxÖ,NÉ™ôV«¨Ãèð{¯wÓW¢7ƒ"çÎ1l–å ±±áq†š Þ(Kœ©+s£jy|w×…n?šè19Óô§T8ÄÖbå1  ¼.(\I9Qe;e#¤Ýé’‰éÄemÛ²¶$b¦ŸóãÑx]¤pÇW©‘¦õ„Lõký“†¢¶¼&Ž03œL¶ÒÈÎö,¦˜jrä»çGÖÆþÄlàPˆfËcA¡,‘Ž¼8á‹5­‘Rg5[ð“”lÉút•»v,à68¼	"áæý9y¸'ço}{ºlö`8‹MùÒuÎº‹ë^*É^:ÍÉsƒpbá±AXl
±ºV‘ö™è.==[hyíïW$¦$hRùØ÷õõdgDëÃ³¸¸¢J²i¹˜Â€BÉ§$]HîLÿVÎ¯73lW³¯/mÉ:8@L-y6ïœKOìY½ýZ¸ÕTmqÍSæN
œÁœ5<åE\é&i-w»ƒÿ %UT‰Uù-æ8 bö(™&Œ0ÕëÍŸŸÊ+b;ž?poÿ;m‚@8lž=¤ÃŸ3òZß×_êÒç½Ïã>ÅQ¹H@ÜÓ°çA¡õÄ—‡|ºYž¦¾]O	¹”ã?†¤xÚ8-
iÜ5_¢9¯4üˆ“Ç÷+ìoÂb1…9¸òÀ-à›R£sº5öEf„—ÕÊ¨ê_‹ñÎ¤~Áž¥®s&Ôáe=¿,Bµ:?{‰Pw4––;HÅœQ™ýù*êT9Í}5Í¬Ç2&R [Kˆ­ÔlóÄòØÀPÿœ¯Ùö›	?¼R"6>N¿åL†ç¼°iß‹gû^¸<9ÔyLÇÙ?…ÏNàµtl/ÐTY;¨yœC“ñçÇF¼(‚,dkyÛVjjÍcf¹ÉÛñXC]7îü¤VuO¬§3ø¦%ÆñBó°	ç®(éÕ5&§.—®íÝÀ&mvßÒçdü®`—´|uÈKõÆè°–ža/6V«6§ƒê_"ËiVÞ&ìIÌå™_!ë&9KÆ¢Y[ˆÍ
êÀ³5ã™¡"<ƒZ[žƒâµ,óÅ’JÞ¹wEÀãiHœ?•­ØçwæbÝïíQå~‡cv¥ »eíº³7Š}>«-XãÁÃî4¾}µõl#à›w6tSjHcîôð—¥¬®˜ÛÔCw>Ó¾pStù`f¥g[àâmáÊ–Åø•V˜Â€99M¡êQÛäŸË{©îVdÏuŠoÍÚšÃÐ÷Æ§HÝoLirK/^\xPi4{ÐÉ[ÔjêÀ³ÙŽlëüô ¼öÃR§†¤ÊM–ªÜ[´.¼—J3ÅÂ”ýU)üEÿ‹mÇ¨4l  Óð¼Þæõ«Vuæ×|QÊ_Ã¨¯jaÈoª*W_G E…5†|û~7eŒh% SÔ	êí¢¸óŒ`JÕLæÕ±ÑÖ	La@8ðZíÁÏ]ÆdåÄîÂ.–ÓÞ¹¸5k<!i1-Ñó–«¢=»bÓdí ‹ÇwÄÀwò‘÷µM;±"}ãŽ¸­›HèøŽ$ðË§ó£y ºañ¼¯ÈK„+zÉ$ºd·‘PˆôÏmYsíï¨f±>ÅUV5Ív.˜³ Ã›µóé÷É²Îº9æ_Foí…9ˆdB¡·ˆSŽ‘®Ä™°ká•çü6ƒÚ@ÿa¸ÿiÖH±ÒªïÂÍóÅ¤?1gÑ"14¨û”þéøß‰fç	oÎÂ0Ç~ZµcÊuÙçôÚznüŠì4*ÚšFBx6;9À±6OÚPøåõË“#7L4g¦º¼"Š9ŠÜwózîþëE‡`ã=/y‹‰*¡pÌq@DƒW÷
SUk¦ždå*òH=ÉŒ¯íÖôóe[
È ›p4ŸÇtKÚEsy)vzBŠýÞ%é[¯í`Q©„ÏC¯`Ž"SÌ•ú‰µ=Ú¥®xß‚Þ¬ÔR"Ýšv‚™ByPPs(
81’÷Ø´Ÿ‹á²ÏÛi9ŠÔLÞA?¹ó¢g^VÊVÆýd½ÙH+­™Ð³+Ø}Œ;ã¬'vGÄç”¼˜ó¹¬5¢ó[ ¨÷ÜetÄn¸±©d!zºgÒøÎM÷>Ýžn;Yê’>4|zëå¼ÑeøÈÀT¬úö ð³WXá~|º·Ô×&M´*ù![sH$Ô
sª]«ˆÔ@&¾“>ô‡x[œÞ]º>s[Ô°¿Äš§Rdõ¼w@`XDáÄñ¯Ø @§˜üM©ÈQÏŒù€0ÙºåÒ+×GU·çQP[³MŸw4åCçÝ©©é=ÆÒ‹gX{ºy]0FAR†fC29M!5Ó–!Îg³ÊÓ€Å7ƒüc÷{nÓÛð°O·¬GÅYç¼àÙFm­Üoä¾‹^€Õ¡H¯ô7ÏN±É¿|óv 4’ŽæÐûp«ÿ§ ™µß…è—SHª]ÀËz|äøçlnsCOÉgk[ªKgaF6¢oã]§.À[Nôþ
W¡~PÔðKÝEj"»cû"—Ñh¸5&ŒZ³s#žKp)ë»½|Ñ”þ=Ä¿§ŽËú|F·¸ÛŽ¸¹i2˜ßÄa­ =-;|óZÐ¥J®)qŒQÐÃH2ê»ý”øÙÆÆü“×fŒFÓ€ElM`}rYn¹A=ª¯%9–{ËË‡
xjXÄå¯åwœ¾ ÏÌ×`wdsôØž{8¶ýx6_‹Ù³'ÝŸX…Þ&.}°=üìWú!•÷¦Ü×’ßÙ)1˜¸ä)n9·PsóÍó„úÓkuÑxÒÄRHêœJÆ•}øwæ—>ØÒ F¼ ‚R”­Äùƒ_ ë·´Í5q°àïÇ#<íów
³Î¯¥	­Ö«Ý’·5sDBl7ë¨Ôvó~²°ø£FÕéø!òìÄ­rŽcYgÒ½M†ò÷C‚š
øzç†Ž’˜Øøx|Ó"#O;<!½P†Ù’º:²82sðÔzÐ[©@Mâf'Ì,ZT¾è¨¦ÂÂ×U¶¡ç`M?µx=ö<¨Ç$E$ô‘ëà¬i¡ð·7’“6ÞŽ¤©Ÿ¹}<å
AÓ6m2¢i~6¾…@"È?B+Á„ü¥1WÇ_çù\ý¬þù4æ,(Ó1ï{¨HëAßUë‰¤·Õ:Éå/aŽ"ÓeõžâÅjÝ>·½ždõP6ÐýÞòBknf÷§'
´š9úÓ^J»à”ÊØ_ÐÔ~•€-ÊôOšŠ@6FIœ$ún â“ tªN½òS©sŸÌ°’d‘à5Üž/1`ƒ`n¼²”þ¡huøªA4Ñ´?=‚ÿ–0(ó HÁÊÒëKYž~ñM©ÏÑ²Q”Xò€‹±Õ	áÏ‘iz«R^úß³í›ÊìÌ¶Ç7‹}^áäZHº°§Ïw\wÿšLW]s\x tŠ‰y¦°W×ÉOj¶ŒX1¿aw"vl¹tOV*eŸâXš&.vkwžLhÜlö‰ %ÿ´Ž4*ej§k×ÛÄäï3I|ºókÇCgÑ—ë;‘|Ý±¦õ|X©ß»˜ã€ˆwÌÁë¦ÏT¦
‡e3)Ò©5ìQ)˜ÒŽ€	ªîívV¯é
Yòµ†ï]FT	™Ÿ°„A•¬PNO¡¶I#Æ/DiÍ(ø:™:£°ä6Éâ÷”†]UB‚vqQ0­ä«‹ÛãŽvf›ýgà)å)ó|†0Ã½BZzqÓóŠÐ ,aôEBºè_cK5Qµ/.®,Y;L®ì€%¸(Û½Uòö7€;O-ïb?4@¹ãÆqDA, Ï“ÁF“«Oß²ÜX‰³Ù(”ÂœMïdÄôýJK„Pç\T ûZ-zsÉO>Uöè¤÷Õc_fmï{ã‡LŸè¿¼%½ùBŒr´³C ¶5$z6Ú³ð¬=­ÔOý—EÉFç‰öC‚’A6Í1úwÒ#Þ×Á&¯žñ>«Ï×3¶P6 /îÓåtnW«7MýŽktQÃnkãˆ²Ü\Jd{rQ4Ó^}‘½ö±äÉå8]š;s ŽzeétÒùÅ¡¯½é8¯]°Þèà–Û~œ½9K"¶aâ½ãÀ×å¥³G¤7ªª·$¡T ÇÃÔ
½T=,g*žÝâDEÔúKGè=† øówpú¿Pe5>|fÈ:îÓôØ< ZC|±Îoéä©Hý•7^09ì•ðYJfë3âŒ Àa€ÂáŸk‘UÄBJšìB#'I4!m’˜³ ]š²û¶.óå†ÎÚäsÆö¸"˜ã€ÈY/é•÷ê›–8ò|Lp3xØØ–6C8ÛÚ  @ÿXÛebVá:‚ºí—¢î˜×Óì&ybliP¦Ýô×·»PÈ„…æ‡E¥l  ã?rhÊo%ô~ ›,½y¿Þé´„ëÛòèÛÖ›'ÃZ‰ömÖonéXòe½º¥Ç©‚ äz=ÁZw¥ÌÙ!_“u)YðFé Ó©ÊS¥ŸùèŠ/V~¯ý;jµÝ:2—¯U¸AÏà4ƒÊû7Þ«¨5%3Û@w"Ôœ¤¼º^éÿ#çuÌÅ¼tƒ ·]ÀËõë”nHˆ´’°€HfCÕƒ‰Ë’RÛKÊÁÖÞmm‘ø(%?íŸíÏÛÉ:—Tï´CêŸ4h”x!Õð€G§güµÑÔb¿¾z,Ø @'e}åúE2g2I½Y"ºÌD%º#Ûó&à? ½›•ÁÿkfeCûáÒÖ¼9t³ŠâŽÏgæMwÅYPÐ0û63f«¤¶À–õÍ*pÊ­^P3ÿ\ÒøŒ‚Ù|ƒÄ€#–ónnÓÆE‹&œ7ÄIz…}¼æL·çmL ÿ5i~óÞe,-"²\³aIÃ42îtáŠ\»  Ô ýäAZyZÿ¦—Eº\jgíwa /JÏê“%=¢×¢Y¥¿Or¦º5î@ÀÛ?Ô^Î8¿&þMäûã>¬„­{ŽVªbJ‚&Šp‰ª!þÞðKÚeiœvšøŽÓóÏI'o0«£§˜lÅxŒWå|Ðö¬-ŠÔÏ¿—·›C?‡2kš|<°š¾òëL€æ,ºS¶fuâkfGücæêˆ	R†ð9bÌq°yøPÓ¾8õräÜø5õ÷¸Ãìý!ÛÓvH„é <‡ÖãP› zJÆÀ/9–dªk¢Xã ÎnmueRNÎ_<Ô¡×LŒj’ÀJ FOŸ·†³¼²§|*Ã7±î×÷iKõn	µ±Û4é£X¶£?[¬D ™7jB¼¢tbG=ž='ÙÜªÿî@tWì§ÚaÅ˜Ià—Ué~é.©`L[&¹¿âf7þ–A=KGˆ3z›: ±ƒ2úÔCÓz¬!2Vê–ÖÆ-2fn»  Mt•­þýx;œxíZDˆÙ°A5Oß¹]ÀëWëâQ#f”bâonRÃÇg‰Ö0 ÀìÇ¦TÑsšòà—¨±ÕÆÎ¯»~ÓÓã`KƒF§F%}×-eÏ"üÇ²üÏ@Ö|9ØÅ°€4ë--Û9™˜àš!zu2©‡nl[tþ;?A÷6„NŽˆÝ=X¦pO÷œÇñŽLIPcI3#6È´°Jõ·ÛÒßÏIˆILa@¡tu£zRa„Ç]?47´fæÁÙ<#émY38Y,€sfìµØU.¼ÞTÎúÆÇG}H¸[90gAúDêÒ1ë~±XÁðžÉ*¡
ííâ€H@ ¤:™Þ|öý×¦ñš•ï?éoKÃ¦@Ý†·œó‘÷'¤Â57TÖÀ•µö¦$(Qsÿ4
ùn†±ìyÆë³üÁ™¶ê0……W©†ŒVcÇ$JIê™1žžÚ–¦Æ6«À{[6œQÍB>i+°‰y\Ÿ aÜ±_»" ²ßÆg£ÿ"Á
ÎÓ¹øÂš'v¥ ;Á>¼ŸÉ~ýWð×`¿ã'“²w@›J|Ú&V•ŸøhŸ_Ìíu?Fäá¹3z¤VñÇkT&Sž*V	šk^)YSŸ'Û~<=RË¿éîâ¥»tÔ÷¬»­‚Ìw;Á7ß¶'@÷Ýsgƒ.vÇl‚·—W×e7R·ß«² D‘ý¤»1(®ÎýXJ§·\=Û/üŸ8 R% w42ã°æµWÕ&$—ˆËœn½ž¶(;G$øÿ›ï¥fÿUŸTª«¯S÷LNÓûª±Xz®†¾a ¨¨•íGuf,Ûœ/ëvþFø5mÇæGû`ß¸æå¡½Ü%vY>'¸q\Ò—lE 6=èŒÇâß-»_ÿ6øéË­%Tœ“¥e"ö<h7^Z¬sÄò
þk·ŒïP‘5<Í`v¢1…ÕæÎöI5iy£š¿&€Øü/ÒbóçV§“ßpb4ì÷pMFýAÑÄi™å= P/ßÆØ³Õä³î }^ž[¨®sOÌàÈ‡# Þö:•€"¿Ï×p¬T™²;Ãt'fqøw@AíÆ¡ÄÁä¬Æ“åøfCŽê*q7ÉïF€vºCg$2KÕDÈ«=¹ƒw2èjœÜn æä±Äõ«žê[ˆ-.ç:©Üd¿“CÖ@ºˆz÷nÒ"ÅÃSC»¹}C~ZÑóïÎ€zÁ7¢%ú5íµ‰—Þnè¨VìŽ‚DÊ1`Öü–Ø'JášiÏ{mIwR(øŸ<3 w´êÉéGf.c­Ömšçî/…PÙ‹%©xÝíåÏ|Ï.¯Ì‰Q‹¿hz¬»ž'ñábðs½ÞÔp&‡_¡`€a'ç …ÿ7häV-iù%[…ïtz¨0ëaWþ‹©,»"  ü‘˜®o5cŒRlöR9.Ós½C»R`ãlÆô».ÏhÂ\Ù~n°èuÌÙE–-ãƒ0¸˜¹qÚ4“Ž[Ê8®2ÍýÃ”î³DT±Gž ,k´âñ?ýåóZu¤„0Q™…ñ‰iÔ3¬`4FVi$Fú¹Åµ`Ñ9ˆ§€Ó Ñ÷ðgnˆ~EÎ¬Ï6Fôêèƒ+_Ëí±ÆA£¯›]"Þµ‡ÜWZI¹ÖÔ3ì§;Þ„• —=Ý¹Ã˜«f5êÒkzýR8K®fâSÜmÀ_k±äÞ!âu¼,‹–ýÜ†³¹Ú…ü|ü[ô9#ü$?ÏŠË(,àÃíJ„DPúÜƒXl 8s¿Ùìø˜<ë«G_uRCTIôþÿïíåOö…õûÛöQ‘ÇÔ—Ü<q‘ãUpÿ] P*ó‹9édÊ:Oªã7+êQªßa§va ¯cw½­øJH=Ö“fƒÍ[ÆùÁÕ6€s‰¾ìªiÍïîlÔ¹fR4XGibÎ¢Çÿf-xŸSàúDòØ05vœ•	sùñòjÏ	KÃ•{f—b‚Pé¥v¤7/®x1œ4;ëŽl«òá3ˆÔ¥Ìz¤rŒ÷"¶4z¢ÿèy‹‡
tÍçëŽKž:š@¿>ÖÇ™øÏég ®˜£ðc\À	³ß‘;5žî!.õò7<m´–²å¢Í/Ÿ’9Œ)‰žzÖ©Æ+L*uqyÌÜ¨–²iã—ÆÅ££/2Og,gLRõvSP™¸ìÈ¢MP®€ÆÑ@ÎFÃ¹g¢
RüâÏt*–žö$cKƒ*¦æ$(†‘…ê³Ýñã:#Ø @Ç\ýåð£ ‹»…WB=ó8ß˜¨•mÏozL¢
Ïº:ª§zÊ]ÚeªúÞŠCåŽz‚uôf²êUêîN‹gŽ'2†]¥Ü‘+ãª³Wé]_ú˜o?¼s[ÿÎ7ü-A„©50òµùë8î²èuBžûTè§½iå¶^¡À2š–Þ¦uÓá^`ÍXÐËÐ¬•¹ë‚1X4+n$ÍÏ¹ÜÆX™Íz¥–ÚÒÃ¡f0£-ÝÿyŒÛ“}>êŸ½wô”‹óí’VžÊ{Qèñ×óe©E”‘$QŸh®E8=2«Š{°hžwwnÖþ(Úaª°Ó¹qðÙXÂ–“‡k»°`3(2(˜
g×É‰Öúý tì[ºù>aPÚŽ”DØf°:~À=U˜áÚ/ùéoáÝûäw‹çŒZ;©Í(ïv©I]«X
"ÞŠ›"¶<¦6P’ÇÎögZ¸ýùïUÔN5]/úç¥oT?ÄéT1+µ/½úÀHNØñàåÍ×x~'r©c[¤%Ý÷EÖª³_ÓSôŒÎ[kK ÊÊ×À oë³–I!ˆ.f§§¬…‰I{þZ¼–sÔðÁ^èúc_‹(%çý`‚®FSž+§¸çÝ^  )’IØÞY„Ÿßðäº“É‰BÜCâŽ8[ˆ­Ù¿}šÉ‰‡‰Rß'Þ'?™'Ã—ÒyI²;*®-Lº5ÕÝ<‚ÏMüÙêÇãÃz2Î»c€ å²í/¾w¸„my=ohv…Ë•` ÀÓÿàü‚ùÝ-„JÀ¡¸ëB+Æ3±»3  !Û.ºÐÐàŽ{ãA†Ã5ºqºŠÝ1@pÞWç±ÎTYþÍ6•Pñ5…œ šŸr(Ôfó®†9AÿíWì·øññ%«;ueI_ÍB+{?ÙþXPøùÐA•ÈT…âÂ‚‡Ï+Ò˜©qö‡âF…ô®™f$ò!ãáÍºçO>!ª¯ÂDƒÝàÍ.ðŸ[´ˆ>Gã“Ž	‰Y&NÒwAÓ“Oú_ï‰ºRÃ;¯m<ÿÖ )¢—ŒÛ¬k)NsO\'Ø¥œù†+(Â]*°€8Ôhìî Ð†"ÁAèo…Yºt®Ñ•ƒ™¦•Ëò”FÏ{ï/³¿PLzNâså°`gQëwñ¬}Ñ€uÈ©Äœª\º‚Ü×Ÿ†´øïznéœÚB vv<ÛÍÐ‹ËÀYæ¶t†£ž¬è×Eòoß6Ûù°º>.":}ƒP3ÚÚí—fë…Œ‰W,÷Í·‘Ž·âVÚßgÈš;÷™ádDbàPðÿß]Ï)l¿8”r¬5>|!ƒž©½5½+‚^	9Ht½ÙNƒJ‚‰*6H3Ÿ¸¯«tW
üHÀ:®¥Çë[·)ßS…¤Bú,[æ¢mQ<fP8ÌF“|¤õã™ÏÏ›4"\5ä\ÅmtlTŽÑFÖàurª«*ô*»N†aLÁëeº„‘«Ã¸©·æt“HX-ji¶…‘›aÐÙx¤µÜÀÍ~‘^·òéÒ¤ÿ]eØâÔeÌYt‡+©Øq$‰â— 3µ—î¹‚ÌqptF.€ôî3Ü\Jý˜ ñ¬Ù‹Ô´Í[ÒNð¿ÆfZŠ>EºK¼Æy|‰¶ªÜÖ‰‹[½æúäÛù&\ÂËWäžæd§”ûc %f¤r{ÀÓo—¼4A•6÷Æc0ä·BÞFÊzSýî›_ø8#EØ©Wpðñž(x$NÅ5 *9¨¹ºmyâ™bFZUøž$`jÆWÖ•jîåx®\€¼ã¦ùÃ/—0‚ÀÂÚa"wµú9•É`Ó¹Åc	ðîÖ8ÌYÐÉ×Ì 9þ¢° ¼1!¢)fš‡Åƒs\jür9=¡¸sº ÅCÿ9GJz«jÆ–HS»?=
sgPmë”-7{½$03d«Oi§}Î%˜t„u¼yÿÉUÚýóèq²îÞ˜Ÿö…ÏÔÚÇðEú}”÷_pŒ‡+=ktyÄDQº1xæ…Š›iðöl6![SW8b³7úï¨f« l ÷á	
¶F£óú.xÏ|M^î‡ÅE%í´5Ý›‰]ðØï&Sü.Ù¾¨,¿kF±ôö¥–CmL×Í´¤Y²¶³Û›ºº¥[õËÔÉ19Ï+hÒ-¸õ­wg@Mæ·ãKŒÄîc3™a„],ëî%*x»c€ 8«ïeˆo|iloÝ­žGòáš[Æl¶0¨ÍK ,ÉC/ÌC;~"S1Ëpì%Õîmªàíz|™|¥vOÔ,uºå—z{îRÚáÔ‹J³×…rS÷$S?¡ˆ_×ñÓW’ïXšæâÕ•†ë$m‘P3prûºÅ¦½«æ’Voˆ¤î½-íK\±åÞÚêw©¼ã Ìr3Áóøu7wDqÌêç>Xp¹)]bAçÄ†ºÉùà
«Sx_GM[¶£0Sˆ‰,áÏúÏˆÌã¤¸ðÒôqâKÓ±dRùìÇ÷¢Ð‹¸{eó(HTOþ~ESKÌæÝò=g/ÐléÿzLÕ]Êñ¾N¸£ˆ¾âk(ýV¶yÓ¸‚µ/ðmPUÝýbþ,ÆcéÞhìÐÃ%#ÆÚ¥ˆÝP1ùÆzuÃqÆ*(¹·ú'S¤²¶aw”Ð§1ð$ºõ“Åtƒ™´™GlKÿ	;µ„Ãü¿K¦©"<h~ÝFHfé°ÙCkô„&²Õ½9ÖváíL£¼p7õ‹Ià—%§ËÈg`óMFõ	Êæñª$¡Æ[ƒè™œV'ZZÇë4kí3UQ¼ëÅ‰‹væÀß~ïÙû;óÖ_¥$òLß2cŸ¢Qðº¤û–uÅÌå} Â!9Ð |þÈ¶¤Óf5iï×Vä__#þˆ'ªñxÁlªæ¶­ÄÖ8¨2}@¹ü¸}‰ä£ˆg]±™Í_|6æT°€­-ÙÑeºã¾Ó¡>#südš¤ß,v ¶˜ùŸ{ùºgÏs½ùiœîÃÍºÍÚ—¹ Z±*æÑæOÏK…¨òº“ôo>ÙÆ ^ß}è-³·9ÿª¯2a°å¼õ7ÆjÔ*ÀsöPfåÁ0¯×–mÆ¾i­Ý—uM±çÑu+¬›³ûÛÃÙtŽÂ ê4I¿õÛIMØ@jP[æüC!æ|Ë*šÀ[¯C¡4ˆÍö\¾¯“¨Ï-^|ÅÑNŽµ¿ÐfP\Ä•¬Ï?×_?bËz÷}¸ýÃ¯J¾Þ6Áo±€‘mA±$Sªì`BOÙMÕ÷òQ9 `0dSÈv&ÓV¦]ôAUiÕ­‹•Écj±¥AŸï=--ÌQúÁLZuý!i5n¼·OcÀyÚ|SòD^%?–õbª†‚G3N[¦J‘vp“MpÙ¼žg§¸y¥“qNôê…&îˆ¡¯QMÃ‘ ‹ÃZÈâ$®guÞÖ•Š;’àÜèQ¿îXVå;1'”Xèb.µ":Sþ¢ ›m8ÌíŸÕägøú|uJnM_Št­»!Ÿù=k4Yñªlig~¡fõF%+]¿üzÍÅÂãX	°¢á‘Ÿ¬WZˆÀÃ%û8ìo~°i£Š{Øp˜Û±€3ýÅG9ÝŒ]³-cÝÍ¯˜ïÊ`º«5DõI'†È‡ƒzc</¥O˜j?æ@n:j|Îð’ìçÝÒÏAA!@—l·~âY¸¿«ÚkjYß+$ÖMÃö‘ç?	9üe€Þ­9}uîX.|cVsf	žBpå2þÅ ÄEÅÄŸs•6ö®¼UTÏ›Sã*ó{)à ‹)‰„þi%ÿÏû5 ÇÌ®ó ü²hðEßF­ä¡¨„ÿ¿ô¬Hºr<“i¬û”,‹8ï8…2†”ÿ¿(pg4èÏï£póœ9ŒùU:g©ææ0—„p4ãÑÔ¼ðgß' ƒ… Þ³½?¸ÇDûá#.Áw.#Î—â#Xd°’ÛÅ2Å¹š¹è†7Ì6"Î‘8>^¨ÿ«àh–r.jHÌ¼ˆª×ò#{ÿ»S!Àâ-°{à°Y³mÂbyÃo§Ë6.|¥B,¿—›ææ¥íÍÞÏ%×¿}»§Ø$ëkYÑ‘ó…¥ïçÞ( ;d§z™]º©E¤Øâ|Bù÷­Èß$°ºòÙÚ˜ÑÃÙêÎY™´OJeLìÍ²¡=ÌªißîòNO~wÏûDÃ1œ@¹7
®ˆ6­d.I,Ôî"ú,o"X­˜uùg•Û‚¥EwOO‘#ÿíñÏá¥ÌÍóæ‘Xã Ú;ë¸ì<Ó.¥žkÖ4¡îfªÍX	ÀˆðÛ­žï¼eoñ¿¹—ÁßQÞÉÅì¸_ïn_›Iq‹!i×P;UíÕ³˜œ¾´´YŽº`Áæv¬Ös*%‡%øÛ	È>XðK%Ç”S¨Œúe#Rá(ÿô¸ˆ70¡ÿ‰’Df1VÉ×}8¼4¡âkýnß ‚f-­×™¾Þçü”rö1¤¼ri7Ü®Aßc¦™ö¾ÃVÆ<‘”ºs­T–úZN¦[~¤°;žìEöÁý”iEþ@ñÕ#¯_.˜œ^æÂ¿3Êw7Å2lýõÿQ8e_Àßúw	¹ áúõ{JWÆ…,El›º(ÒRSH'±Ñ=+‘˜õ¬@ÏwžE?$hžpå|Œò¼õJf#-…¦\ó+—ýÀ`ÿÅŸÜœu¤*£9¯:GQÑ²öšXÌnä‚r±Höê%Þ%ÁU#Z­é–êZí÷C‚ÊIm¸mYÙ¦e7JÆ×mæ¹´0V”Ûapp‹â]]7Þ¸%¡ÌÏ+ß±°[&6î©ý¨Ñ²TÐŸÖjUè¯(U’bÙ›C¯Z#£ù¢Üý–ä+”¯jÞ¨´EürÛÁ½Q@ÖA/qåärÃï‡w©D}‚Å–;^ÆBn@¡¼…äþFÑïë¤“Dä ÁÓuÊ/ö…¢Ï0%QŸóXWN¹QdoÌì¤´`×þ~Üª„“4%ç[´ôÚR¤wØ œÇ+</,0¦yƒøI?¡©Û‚WG"¿D—Ã(Ú»V+öƒöå÷‚’UËOÈDPˆ<GmûuüŽÚ¾K ?ÃŠ&Hm*ÑZµÑ¦”ŠK³ÛZ€©#ØžåÏ‚¯õ_âz¬Mô
®po8=ÆžG×töÂ†òjx’Šx1¤y—–äSaì¸R+u"©†—îXÀq6GÞGAFÓvŒÄŸ5=~¦«å­î|Ë¦³o}Ö^Q"wÕ¨Çž¥ê"gokiÅÆó¬¦¾E¤%œ;þ¸;H=f2ñÉ– 4-åïä9}t•áÖ6©?ßìÿ¹-ymkWÉ	‹mFzÜifÔFÇ¢Š=Þ´`®ƒ³V/!À®Ý¡rßˆ1è87vºö :ÏØ5~U¥Êê	Š+&~žG f+ñ÷Q}sº«K=Ôú´súÙ³·žõÇ–Fß^ú%¹Lat—mî</8<"ˆ tXþ:¢]¤Ê>ùÚtJïªƒ3÷µÆ·Ûó­ö½aiîiT‹¯ÛðþðoèÒJÒl+Ö8(T×kÕoTãÈ2ÇMÒ,HsS8z¸+.~
_“ n'&Ì^?bTSÎå±e®e‰pþë“›Ÿ²Ñj¦ÑçW\F¶"{ß«3ÍaƒFŒ/õìa²Ëm£ðÏ—[|~ÃNc% #]6©ÛGØœÄ¬}˜œEÔ`G\)­8w H(øùn*„××Òvdc¼19\ñ#.æ,è’Èf×ýèR½ºx÷¬5}óRA4æ8 Ä%vAî‰ßöíFIgûÁº»L;Ò;ÄæÍ\-Š%Ån"ªÉO£i©÷Ã‹}"uØó>Y	ZCÔÉ1f±Ô=<Á¤~ÚƒY;HÍêÊ”Gù%>ÒrNö&bÚòåØ¿ë%šxNÿé&Ä1µg>wG¨¼SÞ2½Ãœe`~ð'U
#^Ÿ'9ºžÄ®ê)N†9ˆ8< qAO•ßÇ;=æeL±eÏôò¤ÍJõßqAG‰É©œöËGòÉÞfò\Ò^ü-»JéšæàÀ­c¥-~Žÿd"÷þn Æd‘×ÿ<G¹8ýËø5Í#Ö'Æ·^fô¨0ªúçkíGÝTvX‡#Q-#nYìÝ×ñ·\br˜á:À8ˆËŸ¤ÎÊ½Š?dØÿk=ãØê^ú«ÙC¥däªŸ¬9ÇÒ	ß~X½ž°h.f.Þ?-fsËaè[FÐèÏTm[Fâ8Ôéúç^ˆÃ]%”çówm±ªh’–ûÄkiÁžÕªñÈ´x×A¹Z8jg¡ýô++³Øp9<ICªÄ·~B Åþa7ÔŒ¿åÄ²„™@öax}èv`ÎÚ`¤W0sÞJA£Ç+Üÿ¿ôëX}æwiE]úõüG3/HŒsC^HýÿEõ’}8Ž×mø§xŸ`ÞðÙØ6L%íì”Ç«¾\¢¸ÃÑL£`XÓì}‰O"z?$x óÞœIsªüeG£sHùèÂy¯¯£‚öÊmoHeNó­ê›"ô0Œ?^vH »½ÓX@ ØvvžÏ˜¹ÃVÃó­ˆI©Áí}¡èÞÃÓ!ü’“M…Ð`õ4CrÇRb®»û¢ë°Œ¶AøÉÜ Ú[êŒ¾úeø5‰|[_$ÄeºÙíà1˜™ 	ÿšo5ZÓßˆ8ké7IWÔuØí¦tNÏxœ¡¾ä@®ö+ðÅ%¯g	{p€càM§ªñRºõÚIˆ{¹F§/XbÆ,¡K'ˆ#ÐÃè^nIÌ1âÈ+N#ûÙšè·°Ü›M)á’ï©˜#¯J’Þ– Ý€Hí²JžW¨6Ä=8è,¬1uKf¼eoŽÍWh˜9Ð‚]ÉºÚ;–b¦;FÜB
™x~íüwœÏ‚ Nz"2F’à]¡W¾²×56¼‰k¤²àxîM±,cÍ»1ßhjÏ	Yû¦né„;Á0G8
âôO+ã€àqrp‚Aÿùú½Ï/Å#b/ÙÙ»©ÊsÕ}XDÕþ¯"ÐK|	Veu,&˜džÕ¦§—Pµ©ÞÞ„€]K÷W
p4âU×2M2° "ÿ|<sƒ …Qh»afP[ôÉMòyé-v7[—í)E•¸ñ…¼5žÑ½9ÐÛûÉZÍ¢Ü«eC…ƒÚ'ýoB$ÕßaôÞ‚²úC÷d$¡ïF	,¥‡³9‘~êÛòZîlf
6‚f0pš9¸s³mŽ ›gè­"MOP¦”ÃG×¯±d5F¼ntÔ/•*#"“iO`% £(±É¬›¦Èå†š)*‚ø%§‰×Ù0 ˜Ì6®M?xÊì²Ç~Y<?E7ìŠ€f“žùÆöO¿¯4cwô¥Ù—Œ>`¸+ØÝJ|6[Ïœ{â">§å¹X*»Øìl* (Ôf'šÇÌb ¿ÏF|ú¨ejöCtié ¥ÉáÀ ½9ôZü'¹µˆqþ“$Ñß×¿œýå[e5¶7
`8ŽÊ…¥ŠÝtåyŠ«+Úƒ™Ä<ÚåPrÎJÑÝ§ˆÏÅ6Ø.éœaïÄþyPþÆQxŸŠy87ÉÛ©»Òîž'Ìü÷_pê§îé(@Õ$Î$-©UûË{‰Ña.áßÆySÝV/h`²ZnLøf¥+-»úøÆ'—½(ôÊö`¥”ƒŸÅ[ÞH$÷ùÍ7³ªÞy‡ïÑ=!Ê/+JCÕI¯~Vý¥ÞeÈŠ‹õÇÿW¨‚ë#Åc¤¤KHØ2#þz`ç³¹g·D!ðÇêáKò.R—Æ…ÙñéÈ=Ö.í,ë¤ÇC"â«CO.•p×êÆÒŽVXÅ”íG× IŽÞ¨Û^fý" ]­÷?¡rß% G 3¥ßÃùv¡|\òU^F‰¸@bçÎ, Ü (å?ÿ+}26ü'å˜¯ŸÎ¹p*@÷‰ç>aô:‘‚0’Z|îç–Ö¨YÅËv®%Füø÷Á—/ç¨#i™ÉùÒ¿L&4<9é¼7C«~¡›ïf½±î §Æµògõ‡L¼cýfœS¾æí‰¾v/Š_^d¦VÕ¸PÃ4H&·Ý“Lõžº8gÞVõ§ÐÅ¯´å™®x\\ð3ˆnqŸGg‡èŸ½,ãÈ“Ö^ŸS-óùö<zS3ï¡CtvT†Es^3C¬<ŽbGÀž•nÂXül°„—UÄ:o‡D(ïÌÄæÛzÆWmxqœ`‘ôõšÜL—&ym_ë®¨f©ƒ×}àÍ‘bÚ"QýçG¥²•¼v¥À]RX~WœH7 »SÕ÷“kTžkÇ¹†Úšþµ_Eñí‡¨­¼O­»÷ÝH»>)ˆ»£ùø›@?gµ0×1©7)Á4îj8ºR>Úqÿÿƒm÷²é~ 9ö¼OÏm¼?ÚMm® p;ÎÔ!!(Ë)¦º\Ü&Ž1¸|þëk;NÜÓÔ*{@èîŒÂíV‰:sÖê¬ßTÃpßdÊÑïÁŽ¤Éy¢ùÍiK¸d×˜(SÔ	œ0afP§-ñŸsùŠ’«3v,¼Aß;ì½3GCOPßÅ·ûÆAov.»gåm“œ.’éóâôD¢;êz¬% Gp1¼çÀU· ¼‚×,‘g;ÄéZ0 Þ9ÿn£2jÅéNp\UO˜"gÙš´LÝˆ[5gO4.†ñ?“s‚v>ewÎÁÍíw•ÜŽžÎ<×_Èõ`s2m³•„¡yl^+˜@ô^y›í°ä?c|ä’^=¹…ù§éâ9íîªWÏ²ß'Œ>ÏWJblnˆ»Õ»Snh\¬OÀ‘ß'¸s¶¹ó¨'¦´>¼®E$Š|lÇÞû×²^²Ä]ók«z«XÏwüµù—¢”Ïû¥Ñ›{e7QH„Gô~`sâ1/¹·Î´ß ý“k¿õ“žXVK¾óJõFÕ¹hL¼9fóÏ£ØIð»6·ÓÙB@î3K:Ó…ÖÔ>{@ l³aQ=²­!8Z”ûõ\œWr+î^?.¼¶Åÿuó$åÇc–eâHÆk«š˜0GÛÿÆ›PûÅYóŠCZ!ÚI~ã%Ù%²Ç%Éß7Žyyzë‡Õíšxðãó*Ü‹´5«û.÷d77PçhüÎÑÓ\räô‘úmÁíü·æ¾0.£ˆá‚Ø‰¬¿‚¼ûf/»î¸¦[ÖÜKé¬Ù·\°Z˜Å}Š;&.ûZpG'æï5÷kžŒæE‰Ž©Q;> €:Äž{>¿£jùwÂÑtÜÐ}nå_-ð¸£uÐcÌýo^±vDÃê÷¢‡Ò¥¬ÇåÆVµ­:¯zîiûí¸ü9+»¦K›—ðÛ#W¯ö}!évØ e1ý«±•—?rïRÀOï¯¤bJ´ùU²ãem†Þ!átDç ›ñÈ«—4y'¿}ÛÑAßA¦ö«.äHAøx.Uïªž]¾e±~ðvÐÎ¹y„D`d¹{}þEd©ï”ƒ_ØW$ä¡Â Þîú|RDS_æÃiÖEZ‡Y”÷/IDÞÚßÿ%ïFxbŸUÑrI©Ø/¨nc
#µ)¶.\Yâõê\&…9‰’£AñºuÌYPèÅ÷n2UhOõ©ßÉï¬Šžìèp ã€HôÛ~îrY{‚Ä[?^w–j”ñí¨C¶ë­ÓK>‡ÐTê•Lö¿‰BQçj3ïÎ 7ùÑA`\kŸ¯®ü”y9, Ý;Wu;æ„úÓQFÿÒ8ñ•b!ï†¬@šS‘T:¾vçî¸&[ð‡Nú˜?7)£=¬x*"Õ‚e–JiÇëÈ
Ü¦mz„ñw&ÛœûÑpãúUÅÛ×0@öw†˜oêÕCþä~ôuØjæ¬@Ö·0-û=µ­èG^‚€2´¥³}•ïí¼½Ñ&±b²;j¹®ªÆ0fŸª_Ýè'>A¦Ž‰[u˜­9bSs¤?"Qµü¦Khú€ì'ÆÈq;z¬[PÐõ•‘®äÂ†}ð'ïSþ}IÞJ»càÎ[k]é‚/£Æ—Ú7~Ÿt²½±ìú§‡ €¯XÑãL0pqñøÏøƒwB'Û{Ýˆui?ž	kÙÑ.íR ¨žèáÚNåÚY¨p4‚}¦E¡hÉÇ“¿KÀq¨Zèy\6T¥jÈñÒ¸võ¬ê!8†"0‡X†ªO—–ˆÙg%ÆuT½ÆÛ¹O½³˜‚‘H¦½—œâU/n+ƒ©›öŽîõ.‹~øk¦&7ZÅt7Î”—}Õ”=~Ó]l	ÌP:ýyÈT.u®Í,J]¹ d[Ôó†òûDæîh:EêÙãçñôÎ…t8ýªà¨óŽji+¾;kíÝ`Q2© B¥7îÊ$ðµmò#ºE	ò›OíU•¹6S#Íš‡Ò÷½(ôÐ’£é˜t¸‡9Ó4¿Êt *CF<Kg/Ð¼òj8Œ¼ñMb¥NPQðÏÅÇÒ2¸-S³¨[{EÈË¹ñKä÷ó5Å1»ƒ»3 bÕÃêÒ+Å„ÙÂ^åÈ°Æx#÷EíÝ1@°ñôyö8Þñ±Uh¥Ý¯oîÂKr×1]èíU7®Œ[:gïåšåûÇjXÏeyµïjÀ<s´Ñ"–A} üòLII	åá,$¦»dçLŒçPÞÝ•"QO^¦®èž(…sTý·0ß¦[$ÂÆŠäAØ9 GhŠåãòädžÞ™ê™eªË{·c„xBÐk¯ÂtT[†Ï)¬^zÎÎþä#œìÿ,8¦P/dð"‡ˆãº&GŒ¾BÞ (Æbv.Gê•	›ãm­V1—Á¥‘¶RKçÙ
úŸ·|hzuüˆÛj¦EYbvóÂ¹}Ñ€5=1¿ÈFB¥N/¼W/—×Åˆ{·6ÀHØfuâhk
ö‡¬óF<žV—ÚÈÉ€R‰µ©½Â–Ý†üü:>h5U¥iÐ,Ï'½²ìÿ‰ tDŸ«Ø=ò`‹,­däsNà.ìß™wƒ"à >Q<þpî1N&„¨)ÞuK;{ú7Xãè±ÑV|2Ï4Úˆ¶{ÁËï«rw±àÔs}âk¥¾2_âqôcz•o;€MX¾jfçÕÑL®SõÙß‡	,ÙÍwæ@‡œÀþY”9§’[ÌfÞ‘7Y¦|Ù·öjèÊ;Mî\¹aD_]~zãõýž-óÕn¶¨ÿL–ÂößYÔ…fø§“µ:f—„)Ü¯®»‹ˆÜ›CoÕ—ù£#k&Ã3óÀàãc6ŒõŽÖ{£àš<¶7†ÍêaREºæwkKŠ>Áä3xv6ä6-“ˆég‹æXSí?3^6è„¢¿» ê®Õ’÷<_ÛW<Ä3%)x¾xEÖé^\¥dàPocGØérÖB>¶nGÌa¶0”å?bgªc«éâG©©{qàqóøi^†Ú» q9N·Xø pØQCvƒ »ò#ª»Aà¢q†5Cm”•MÜ¡‡ã4ŸŸžgmÛÎü÷òyC9‚E;2ÛÓjöC¥ R'Çc€[TºêOÞ\4Áí"ªçòùñ}Á+ÎÄKØ @güÕÜ§W¯ÒòGGßÏhg{ÿ<àÃAyð3ê“7Õ|õùOí¹„?¾!–¡b¾÷s==rOdØ.23òÌ¼•mé’˜ã€ˆkŠ„…æÝ	Z“Á“TmWÛá¹F$ÛÓss˜í¿7S`ÔÌaÄÍ¼›ê¸‚O5²Êój}±ÜA{(Ž´Ý¸*ÚAS~ú¥ÀØ2+|Ço¡À„§,X¤)‡ypbýÈ/„.d•ÜÙAmÿQK¨¿Ÿá­Ï™ïÏKÚèò‹=z…G½´Öº¡Þ=Lü
r‘Ùª(¤H¸‹´i®ÕÿÉ˜ðí7ó€jñvýYÈ —PF½“ÅZ­CCûè">¹dÉûsb;î§-z¢ .Oäûé|<.Áü ¤ƒ!¿p¤ÿ®`w®c*ÿò3Ñ·ã§ì9Y	r…ì„€E„ÎÙ¼3s©íŠõÜãl¸$\µ²Lv»  Yˆli†Óo†:F·äšê¶ª»úL‡zva /Ö4ä8kJA=Ãë³µH¯%ƒíÈ? ¸cÄ¦šå·s‡`™§¾¤z†q'­›½kßAOb(?${ïÖªc_ñh¸d<}ÍhwìwL`dî8k0dr[<A¡y/üëv
$ vvè5¹/9¬¬yšÞçN=!TÏO¸¼ì`ºÊ±@ûó›Ÿ={‚h^V’Ÿ²h§»m³îH8¸Âì©?èsÎêÞxª»¬WÜðFþ×¾„u¾säŒO®¿]g–r9=8wÕË°„þ^uUûÅÜÄgæc½Lë|Á$Èz÷à ÇCâ&ª†ßâò¨@>J«É¿¬¾û³ªÙúð˜†²ä]ñôDºÅFê¹= Ðq™ßþ4±qÛÇüŽcÖxÂ´i—öàÀŽãK}¢ëÁ÷ÌMŽ­«¥)Ý>Eïún†t† ÿüÂ?ÈJ #É‡LÿÈiWa©¡”¨'Võï÷¢ÐÛ,Ü§Xú¤àiš¨N4á n™ãÄ^ øú#¬çëLVxÄa¿ ûéw¨}ËÔßo›J%
ÞM:ÈÏô’J‘Kªiÿûsõ?ûD¥HÐËIÔúùÓ©Ê(þÐëïµ£àO|vß|‹ägöšÑ‹˜ÈZ}–24¥À²ôá16IFYâdKVr%®ä…W@(ôN™:ý%E²&lB€#!oÜ+Zwò.é&§ó   07070101755ADC00008124000003E8000000640000000164427336000009C4000000000000004A00000000000000000000004D00000000nvme-cli/.git/objects/pack/pack-04266c428023216fdc2b5a77f22ee90426a703f3.idx  ÿtOc                                                                                                                                                                         
   
                                                                                                                                                                                                                                                                                     !   !   !   !   !   !   !   !   !   !   !   !   !   !   !   !   "   "   "   "   "   $   $   $   $   %   %   %   %   &   &   &   &   &   &   &   &   &   '   '   '   '   '   (   (   (   (   (   (   )   )   )   )   )   *   *   *   *   *   *   *   *   *   *   *   *   *   +   +   +   ,   ,   ,   ,   ,   ,   ,   ,   ,   ,   ,   ,   ,   ,   ,   ,   -   -   -   -   .   .   .   .   /   /   /   /   /   /   /   0   0   0   1   1   1   2   2   2   2   3
{žú»žæå˜ÏøØÀkô"^`ÙÉwë×A
‡R&Êª(Y¯™AîÃHRÖ<»åœ¿Àb~7D¡Åg *­óç9ÔàXû’Gärúúä]
·®ÚyŽ/®4é*—úAìc…"ðúÂ–ÎQñßPñnìq·õo1ÁeîqËÆ,ysù½ ©q˜CE2SoŒ²ŽXNfê™yÿÈ˜3Œ²5~·9`fw¯	#œ2`©3óxõÄ0–â½[}PÄÇ `5x NÂs·¬gþh0yî¹Í¨ÝO²‹êÈÍ¯Òl{”U”ï½œQ™Õê¦vÛ¦±bñƒ&ú<7v˜'S–*ñ.“«/„ËÇÀÍ2‹³ù¼”VüJÎh‡<1˜wFî²°Ÿâ¾WVœ*ïSÔçRöÝ­hêv”í]ùRïË¼—Ÿ.²-Ÿl"ïJ}µe„,ÛNê©	œ%(Ñ¼ ­ójžl¤´×ð08z¨œ*AÑaƒ¸/nð#ÈTb]ÏÜ^¥?s±ù¡Hr¾x>o;	Ò“?ocŒ!©ˆKz`=',iÀ¸­( ºäËµ$z„J†ÙdßŸgÞ¨9ç’Kbk î|eðB«t+)í±öí j}£¥ý€>mØúJ¤¨unçÝÉ'kÇ›#€ÚØ´ÝN˜K®ˆÏŸPaLÝKÙƒ”/l7hÅÈ›“üì;kúƒ œ‰däh¤^»¨6C'ÖF>¦)ÔOœû‰ûÿ-¬•K&;,ˆ½5ŸÊŽ{6€»(þJ6|&m­ohŒ¥z§ËœÚFˆî=]FšsK½Ûi+dX–[&@÷1-Ò¶y’tš0¥ÎûÚÞMô~¯HZ<Ý´S· ïpÃ½ˆŸ\Ò_;îö?0 ë‘þ¥¨i¹êŸh¢Ú{Úøè*ÔÝä ¥¨¿·Nl¯eÂUÔünx÷‡g…ôt©•~»eg/]ø"‘yqìÈL¥™­O(*°¦8’ó$åòÓôÆðàq¶´ˆoeTýt·üúÒu„Õ³ŽÑÏ»a¯ÎqC3â€æ†ô5š&#ÁB˜IVsz3çÀg¤êéá"ú?<ÆÀï‡†i\)bU3X>ÐXEc<“Ó}™£”‚`º?éJ·§ù9Å|¾±Ö(B«°R#j.ã*¸[Ê© uæ'NºžŠ³„tÎÖN™FßšÊê¯÷;oµ~±aú,Ýí8gÌÞ9îÒwìãi …ñŒzHZõ—
`ÉùžÔ¥Æ¶ã¬j¤rãFøalAvË^@!®™÷[ñ¿ §9zûC 
N…û¬qÓ«Âù;ÀÇìÿô÷S{ÛqDÐ}s|Y¦í€áØ;md£zfãR£G2’®"Í”ª›¨{H»È†2Ä[§@<Ì“Ãw±Ëx„’I–µÁ2ôŒ*`Ã–Ô˜›Å³Aï
|¸¨^$Góêf8u°®AèQÔ´ÏÑÎò7†ŽzFâ¦ÎÒP†›OÄékw¼×ºŒ;%þã;’ËºP„Êûÿ%8¢›¸b”1¨¡ËÖCQ°›
õÃ~‹ É’M¿›ò‹ŒI'¬fæœÎÌ0Õ˜ÞÕ¨‡êSãHŽ:Wb„{Ïõ—G>+õ¯Üˆaw)õ  ¬  Œ  ù  õ      –  †  	m  Æ    \  x  ó  .  S  ²  Ø  8  H    b  Ž     4    ì  
\  A  m  
  t  õ  ©    l  #û  w    C  J  
Þ  ,    	¼  å  Ý    Å  è  ü  Ç&lB€#!oÜ+Zwò.é&§ó
)/ÃæñÙì×CIû¹$Ö07070101755AE300008180000003E800000064000000016442733700000000000000000000004A00000000000000000000005200000000nvme-cli/.git/objects/pack/pack-daee1671176b98623f587dba1a5a0cd0acba6535.promisor 07070101755AE100008124000003E800000064000000016442733700010F1D000000000000004A00000000000000000000004E00000000nvme-cli/.git/objects/pack/pack-daee1671176b98623f587dba1a5a0cd0acba6535.pack PACK      ¹­xœ­XmSÛFþ,ÿŠÃ™0’c’~ƒ@‡hè€amÒI2ùt².‘uîÝ‰íðß»{/ÒÉv’N¦| {µ¯Ï=»·boÜÞ¼z7¹ä”ÕŠM.rVk^p&È¯7—“Óý‰“*ÓLOxM«&gä%“²Óò8)ó5QQ/3MKvÒa}¿dÓrJæ…îK*>ßT+²¹äT¡pð$g¯™ýr~—Þþy{~›ž_\žÍN®Î¢!
G ¤t¦9%÷‚çd%y­S*êšQ.Õ"Æ )Õ²J5¡ÉàŸAdtŠx˜³{Àã€<Uêá˜tŠ¦Ó:[²˜&Éáà±á“õw(-ª­¦˜E2’BèÃÁ Â¿äÈy‘w*1„Š“4Ëóô>«–‚?^/b4—ö7vn,Î¹µý~y‰a<PwµŒ…Ú¶rÐ#xniÁ+ G…+M\9—À#2B6™Â%Ó¬ÉŽcD¼åØÆµ'Ç¹IxLÎgWéÍÉÝk|Ö…`@ÁÅe*v+®tZÂ322ñû˜Ð2“d´Êt¢ï“3ÙA‘F½aÜ÷2½:y÷ž`@nDSƒ7¨á°uÒ¦‚ù@FæÏÚs^Â&„Ø7pÂŠf5äc^c²‹YŒC(»Óà‰­ÕK²Ÿ(!*Ü	A·AÂ¡ŸgDN´ bÅj ìÔpÖ.<ò“çð0Œ
!IÌ!ýCÂÁ¯ñŸ=³Tí"xDÆDñ¿™è	D}ªöž*ÆÜ{þÑŸAMmxpñ.~·`E,r´møÈÂyDhVU‚ÆÏÛðáÄØX­É1ºÃ(a`{h@%˜°ëDn£>"–@ìØåžx:~wÐíò™7­€n¿I¼l_ãÉ úR‚”Ä±/ØxZ‰U˜öv'À,#±ˆu›ädL¡Ð–èú(çŠŠ{&ÁH,¹WØà0®¤ožR(]ÿU§™\„"ž	ø'ö§¯­Ôš6Jm3,¬BÎ“¹qÃsCÑÃ€	ºK mÁdD‹61‚adç€ÕÍÒÚ©WTÙBóÛæB1sh½*àL°Ç¾†þ÷TK štB€Ö±OHé¿ûéï†	0jLx7%:ö´‡þ#&UÍðÕRÁ\Sj›RYpÈ¼àÈ=ÓsíÀÚá ÉÅ½&[v<LôÃŠ3Ç(æº%:›Ãè%£½n¼ì£×¶ÈµmvÛ¶™ «õñ½½=>?úp(@ˆ…ÀáÖX~§/ÚH0ÉR–Áe:	ÙÓN)ˆôÅä8Ì¢N@iw— vð†!Ž“õYÃã|4KDSS3êw…IÂb~äÍÐ&T¦¾ ·L8Ðo™<³¬RÌ…
ÔzU¡x
rk`Ù©:ÿ[ VÿqÐKÌvx—i€îIšŒ63áy&lìcÛaI£y•6¸ÒÂo1[=¬×¢ ”0§õBJýTB|nV¦5c˜k®ð±³KºóØ)Û„Í~Îf×WgW.‰7@ÛIdóv£¡WýÆ¸hÍ úš.W±c	èÕj%$.tš®àŽý)	KîŸ@®L{Où
Å½¬ÜÐÒK-!G°tyMm QKR+J §Ô&Ô)u9v:<êi€À?òŽìy¥[x‘Q¹!Û:V÷”ç¡c#°Ï]›Áø:©p´<ø+6¢Ÿí€Š"ZáíjI€Š$Ø5PgJÐþÛçÊÃ®5¯æ‚RÏ/·¬{×›@~6{Gõë¡B±¦lP¹K”»^}ßJÛ½­0‹”©
V<¸¢-`pó‡ŒÈ[®Krwz³÷êõéÜm0ü²š”Ù
—Q]f@¿’‘ë[¯/æ°šÁ-•ÁSÌlâ°çe¹¸!X4ƒAvhÌ¼QÁåòK&øÍ§äÃÛð†zB¼¦N¯EÅsË/®+ùãê,=½žÍÎNïÒ·o.îÎàùÀƒŒù†LB]P…U6î·b^Â'Å$®W¶-rìøÈ]æ23èRjdH9ýê¸ø.‘ÿ+“×©üpy™{ìîdo¥ñ:·y“Í6¿Iåïr¹êx²È¹}‘ç¯µ·._×ÐMCÆ‰GàéÃæåöø†R$vVÀûK®þEh/mÞmx‡l\3n)ÚLŠ¡v<X)ª
¢ðb—»÷ø¨¿? »CÑ³ë7W'—¾ÒÍ“PT{×·¦¿Ý^Ï¼áÆ?h›»?¬ƒ¶ˆ ñh“-3
½žuúâÀ¾Ÿ¹°õ÷Pãß×þüs²âìŒTxœ»©z…I_k"“V„‚–>—rf^rNiJª‚Mrrbž~Nfq	˜ÐË°J¦¤¦eæ¥*ø9¹…ÄG»Ç8†xpr*éWë§eå–'¥ê'&dê—$&å¤+qqMžÏ*&©PÍÅY\RTš\¢ 2.>/hˆ˜ìÏ,ÍTk=y5“£õdMV].k.®ÔŠ’Ô¢<…É_Y}9';³éÉB6 9‹ÍHÞf3`²æ }R8U¶<xœ…“OK1Åïû)¶EÓŠGÁ› B/‚HÉ&“Ý‘lò§­ýô¦ÛÝªÔÁÃ¼7ÉûeÙ„äŠ½¬_ù
%ØüYM¨Â={Z¯øÝâ–»ÀHª
5ûˆÎnäF_h—­šÍ+Æ¢ËABd×ì­«½É-Ú¸ýÁÂí¶‡…¬o~ç
Œ„Ìƒ„ÈµòÇºº,v€£‹ÑZ×Lç†ä¢Ïa4’I`NJ=ô87‡28;ÁØF§Aøiæ’ð~4ê+[T(F#˜(…mò~õžb@´å‚LNQ(Çl'§(gÊß´ý¹!¸äb‡˜œ¢‚°±ÜlõÝäCÂÜONP;%õOššxöIB,?œjÞï*7
Ã¬žÎ¢žÿ˜tÒ—qÙêêïÚ:Ç´˜xœ½[{SGÿ[ú“M$daãGPÌu‚Cº¦¶í
m,í*;+0‰ùî×=ïÙ‡$u*íÎt÷L÷ü¦»ç¡×¯Éàâè¿ÍÓpD4höü JÃQ${ääâ´ù¦ÕnÆIsâ¥AR­þFÃÉÜÈÏA’Dqk¼oÑÔ3E£hê¥Ã1êR'z˜ÍYFikìdÊ3%w£Í$¼Ë“¼»$R,¬þè£0
Èáe÷àªëžeä5g“ù}1bšzi8$Ã8¢)Ž½„øßì´Û·äùë¦MZ­ùé#¾m67äæ§ŸØó—öæsG7vqØsÝ“³nÿªFïüQÔØ7Ù ío#ø´áS'ûûdç}Ýâúåzç@jäam†£î¯ÅÀò‘1¼µŽ¯û‡eíŒ£]/2ÅÖlºÈà¦±KS¯ûšëÎwÞYQ¯þU­HFd
?x¸Ùy{Æ©Ðˆò¨Æ‹„†±|­7ˆóêÛû×zõÍiT+ËªUƒÆÊ—¢Eò¥LmU\ïT+IÎ“Hô±S}Ö:3m§ÞÐõ|?1´G4¼ŸSH‚›÷·9Å±Ž3Ýì|´•×UÊ ºˆ¡ýlPò‡›E5Ý¾µßw2ïo2ïo3ï»™÷w·†et·LëüNãÈï~†)ÙB´–Õ€te8§Ü0Å.T2
aV›ãÆ´|†ÙÄh†I >FÖ°WáˆÔ~duè¶èfÿúô%`½!r¼É<€Þ¤5É#? C(jî³Fàóý;) Æß‘&^Dgq’J9ª Ž]»Ó˜Œ¼p";†ÓYÍ&E9Ã™S'Ÿ>Áœ#`¥JäûÀ‘ËR0?y{Ã–†?úz
KˆèæàS0Gì%Áò3cô0ñ"Ý”-ëÖ•ÎÜ8	ÁÏ—	U/°M8ËY&+œaÍ>Óù]¤îÔ£_ÝYü[Yçó”/ÐâæÛ£÷ä.ÕÆ&\W«$žÃ¼žÐþ°L“æš€§zÉ“ëGt¹6yâ´H”þÊm‘¿ Ui<Éò6óÄF‹™i;ŽiêFÞ4@i+wHñ©~TJ¯íÒqH1¢¸ðÙŒ7Ÿ¤.ƒI†JÖm™.³%ànËZ³ˆ˜rf¨T‚	eÆ1KG¾ÊsiöªÖ™Q¨ §bÉ<Ö•cJL¥Ñ|}¢i0u#Š´¥Q™RÙµ²˜í%	LAÄòFä7»í[Y¶%ÝFï(%!K„è*q^P„y»1¬ÂÎ4m.0â„ÔBÑîüL(mîGó)¢†BÉövÝŒÈ\†‰1Jº	YQðÈ0…âQôMx+óŽR–¥1Â.FƒRWJblv©§ _‹…hY†Á³ñ*NLK1)ìˆÎ£^ ‰y@)†{¸ueÐÈª”ö¶žaù<sQWI²×)ªÄàc>¿œS¤59Ý¤­V²Œ-xô|”³^Ø”|aUN@£ÐwÓ§YÀÒÑ¡GÒÿåøÊíõÏÝ~ïÈ½úí¢ëv¯{ïw÷VIW5„`PÅ	æáû]§ÀMfgäG5ÍÞo"T¬¦t©X9IK…>L3Ôºr®á+ªY¦Mÿäºwô7´‰îç0B+h³óþÿ¢ÎÀ½þ{
ÍKôÁ+|_ô®¡ ewRDÞ=]oÍ~9†ðÂÅUÍ˜bÑŸ]dYÞ’›²ÀjOW(¨¯7W!­K“x2ÁKNZ«l=qýƒþ)Ä°gÍÎtfYGÇ©;óÒ±P¬º<eÓ-JPINikšeæÏÝqàù`?¼ L‚?æaø²)¦b9ÙzÍù^ê-l¨ˆ -‘x¨|¨,O“¹ÊŠišÒ!fŠOå¹š"áÔ¥©Vªõ²$µRtkï¡(N#ýÀ²\Rã¥°Ì™'aú´‘Y¹’G‰–*eÊ¶	È: ¹’mì åÄB£+Ì$S2p(ÉðœÉ|ÓZ"¹KRÜ/²]¢õ˜v²ƒZy&bñ!ŠÐ<ïóŠ±çOÃÈeK¶ÑÄ»N_ï‚bJ/h­PC”xÁ•ÛA‡^ÜèuqÙ;;¸üÍ=8:ëõÝÏçƒ+÷øôàÄíŸ#ÁQïðàª{|'Šaõùá Í§ò
b®ûƒîi÷PÊ€~0ÖêLöŠ³.÷ewÐ½üUr'[{3îg9Õ„õÈ>Y]œ1k^ÿ×ƒÓÞ‘£=ZZH½5Ç·È{0SæƒxuƒÜÅñ„Ðqü(Âêb˜C&•r]¥N‹5Áñ½ÅÀ%˜ªXâÀÝZLÌ.£ugN¾[ÁônîË‚|,P]¶?-é2xžÂ[AšÖêyŠ©ü-Æô3FMè¯àkLÙ¡Š‘•yN²‰ž%º^Ïš¨Rî}ÍFØ3È¿0
ïç:0S«<U}½À,«4a“•·Q`­'©š‚Ï?jtFzQ	£’µ·‰]äÃÕ·Â[IdÐÌ€=Ë£	=¹¹ŒÂM!žªLìUrYŒ½ã´E)N¤JNRéŽØ	ÊÒ—¬³(AÜ¦fÃî$¤i’8œgØx„%S´bh ÌÖþî¡l«ªy»ý¼×‘[Eµ»™²D?
rJƒ¨SÐ",¢ØÿÑ¢,â¨öƒŠ^”uÂ ìälÿ¬t2”ƒ(³Uf À‡"	ƒÍŠÛ~eû~€Aù1ÈÀ‚¥ˆl_VŒJóÔ“pj ˜ç“«£$k%¥æÞðßÏˆ36+ÃD†l) t>P
½ ²À¡‹K!b¬“9CJ‘¸%x)b)A’*Øh>V‰èaa¯
?¶: "¿ä‹=&›e=H5#±^º dJ¢cöbÀ—ÁNdƒªáòE»N"Ë—í¸Àá;Oˆdä 2OÆñf{"ŸÅ÷’d2"[æê7Œ}BÃŠ0yuƒ(ÅÙÀ¾¬œš³/>.Ééu·~Ö=CLq˜	nàÇ5CwÖ$ä¦±Ï÷Ž­tÞZj0JXÏ²õ…i-ÃDë¨™jåþ6ÊçBÎ†ZJê,xAM@ŠíÛæ˜d;( vw/‘£’ÌÂÖ„á5$Û+ 8Ç$GK#ù!}ÂûÊØØ¹(xÐ’eŸ‰ÆÂ€\±6Â™ûúéúcƒÜ?šoxÀ­^Åù]>ìêó:\ÆüÀoIô©£ºN>,[ý€Å‹ ðé\šÀCGèüe	$ÞW*0Xú0‘Ë$f.DØ’¥98`×“\p9Á–®ÌËÄ›Ææò¨}¸Ë@>÷èÞ—H`QV¾j¾m½¥ß_5w[»øµÓní´ÙÃ‡ÖÎ£b«µ•Ã¯/ìná§çãî s•Ð~_öÈ?žsÎÕóÑçÃƒMZ¾a<9½ÍêÑ¯¹4gÃxrNøh8ö¬Gç¨?È¨šoÃß]öÔf_Œ²­ÜsF_¼'Ú(ý«•1J´µF·¡ »º a5§`ÀOÑô‹ÆRvPÂ’í””ëmº®à2ZÝÖ-Mþ)¸R–ãS·ÊŠúRx#ƒü‹8OuÈq¢ØÔ­q%.cQkùXuL—8ƒ»Å«¹Šò Óªµã@>ë¶Ý0îªH/ô¦Ý ó$Tï;oäQEYmœRðXÀO@Š‚A>ËÆco·40I|oÞö¢ª‡Ì‹šý-öÒBn¾Ù‚”êLiˆRw|¤¬y¨
ùçÌ,•žVuÚzt®/{†—Rj˜Nÿ?ýb‡hº:áœá¼Àdy«…%{èòn+«¤2yÖ«mµA\¬~f8Ÿõ5~ˆ”÷´Û«}t0>‘ðLMp,¾nÕà'"wóÑË¯³btçVæö
Ë¨y‡JÀQ^)ÜêÖ‡xg—Éå)4»xÔVä(aDÙ)»ýÄ¦4mÏƒí|Ëd{˜kŸ4y±Óx%÷`î@¡Ü×[8J[¤7"é8`«+âÇ6S2
ñìGÌ¦0Kœ	LáÁñ"–!>yaÊ9­VËa¯Í)ú)ÛI±xÃò‰ÔPÛŸôØá«o9N@¶½Í~ùÑÚìTí
ùƒV.F*/ÕÊ+Æ¦	ÖCÁ4˜gO56ªjx™õ¡+:ÓgÃˆ-óòbom_°u»ØÇ{±¬»,_wù­¿»³êÎwøx7Q»{åíí½ÛÅžDX·8ÖóÒ…ÒÄ2[’R›I2`I2Üsr]hHR«K8-iÈÂ…î½k½[”µ/­Hí•ÒÖ£ƒ{@ñ‚ 3xö|Ç …õèàzdQø1³îwå¹w&É¿FŸÌb£VÔZ|ŠÁ`™ë–ñÌq9õ;¥±nÉéÌ“¡‘ÇÁÒˆ–ÁžßøJñ Z¨/âgW#ËÕP÷9›„Fq2õ&zOm½£gÖ‰÷Ó”¡q‚äyå©ìö’Š;!»¬N668Þ$µ¼–’c±*ò|v&d2Ú5-fñhµš­¬›YU-˜ÎÒ§ºðxDýØÈ<ýCû–*:&Ø¢©í*å©±y2ëÉ¹5/Ü‰]<¬<Šq_5["#ì¶Êžëê[¤hÕ„¶ŒÞ)¬ä&Ë7OME ÿ41Ær-ß¼ä~(’Õ­-xÁßir‡ñtŠ)ÖÖpê«BþëY²Å¿yFk\ ò¶
p`•3›xOx(($†,Ó;8¼è±Ë/MI[Ž6°XeÂŽüiÁÍ‚º8Ü@Žªa´xS*Ù¥šÁoƒã{qpõ¡	.a×X9ñ<žþ÷iîˆ$rNµ’ÅÄ€6u¦D/ŒZª•ó‹+÷àòdP‹g)­‹KPXx|vUsây:›§M®¸¨Íx³A6ø+ÄÆsVMøûž˜ßqÓ×a›LÎéÁIÍ:áÝ¤(Ä‡ƒoÜÐŠ’feðƒÀÍÏŠ›¡É`å¡Úf2v6}ÅªŠ-ÚBúV¬!qpuÙëƒLþ»lD‡]fw ž6ÔØâe;$M¾NƒŒÇã7k$õî JZj·T«‹[W0²0ˆqví¤%4¨qÌs°#baÁ…ƒ%ðG!"c5½'zc…ù¬'!J°±d€(‡>Ee^Ì;ª@Á¯f[ e.½XÌ‹¥~yvpºCÌdú÷à¼/XŒs!vM9=œ­àÇÃ´¶¡æ¬X­€„k•Û¤8‘ÁaT‡Qhuå$E'd×yÞž‹¦ÀÕ]£2‚jUeMð~g _Ö;ºÉ
à¡Î‚Ösõü?.Ù¿xœ]ÁOƒ0ÆÏô¯xÂ–1ŒG=!t³	tØ¢§f£Å5Áb Dûãm‡3êå5ïë{¿ï{Ñª"}3Ù5Šp¡´l¥îaSdáÝê6ì‡°;h1À"BÞ¤¸h!ÉSFhÂÖ$ÃÈ3ŠTâïÝô*Õ©c«/%œ„<ÙÂÍ¼Â}ú¸®8Ÿá*XÈŽS\²|—Õ„•¦	~<ì¼E¨¦›¸ ·yã«“‹P‘í6„ú4Î±ïZ;w	nœä²úpìˆOmŽ”½Í/Ýç˜íqY‘-–ÈI¶yÓ”e¤ª}ä8˜Öå‹ïŽ§þÃ²*óBÓ+CÐ#ô-üƒ[¤eÖ<@N€‚T(.Ûßç;Øwî/ïs©²(xœmQ]OÜ0|÷¯°îŠxrÒ·JH–€»”¢–£J€„ã¬ï,9vX¯£FUÿ;Î}ˆ¶âÑ3ãÙÙÙ9›ó{o‰ë€§-ù—ÏÂ*QÐÁ{ÐT`r6gìqúðÄ–5Úžlðrõpcø¤9ZyžúàyvÞÚ¨Ã 8ò, Îòj O1•-¡ß‚×¢ô]”qŒ]+RC[DÀÁj`—`‚tA+'L=BA
7@ì§Bº5r—ÿ˜ý@Õðš,Nîì±Ù›?åJ¶D}<+KðEÈ©b.¦¸)§GsßTgè„–ÆõWP”²ç¼Ù]oæ%¬ß¬Áä9Êsö¼4É¹#ô-t 	¼‘¼úüèÁÝ„v:ÀÌ°ù^ì¾ÂúSC$´šjPŽìqÀÝØƒŒ¶ë°ÊƒïòEälq»ZU‹»õE}ÕÈ;cÕ/ÐM.Šdùb}·\h>;o.¯WËëú¼ÜÝøP¨PÎq!rÕ@üy§½\ ?ýôûoë?§Ï3öéÉèT»èxœ½]Û6ìùò+„ö%äÚ­+ŠbWìiÃV +Šmöf(¶ì¨s$C’sM‡ý÷‘¢lK¶s­ï‚ˆ#SIQ¿ò|Ã~ÿðã_7ïd.”7o¡œ,¥0ß³Ÿ?¼»yñì›mnjî„a›ç«§²T…(Ùû?ý)ûðÛÛ÷d¿¬žD*‘Uåu[öDâÙþÉ y#•s§FØgû"Ä7yÎÕóZZç~Ñ¡u¦ÍCR™(K‘;›ÕºÊ”†…ÿ¬®„j4›[Éà{»ºŠ×ä‡"^ÇÂxÀBŽD·«çyeîvµ:jY°bÝ*++%
–ï9hg×–[;cµP4¸“…ÛÓ°2ºm®oÃÒÌð»Ùå=h\wœ¼ v¯ï2ë¸kí	Ò°£8 Ô;Ð2©J½Î²ö»ÌÛÖnŠm­<
»Îµ².ˆ¢øAÌp—E&un×±^Œmð9¥Ó¹3õx	ÂØŸ[6œ\c`cYYóÊ2ÿÜ®®<½õæ(T¡§y[zÍ6G»í¬â£Õ*Ó»pRlc´v×³’¨‰è
W6R;jÆp¾J€¨V	¦ÿiËvZ×,çM¦U}ºWþ©h†V8Oª=Ám’¥æŠj£œu‘`
Gx4Ú¸DN–Ã6ôK¦»;9aÃ¶Ea—òCÍ®*‘pë¡Þp¶©wÆ;ehb†”m[xrÉLÖpX›  w!ŽhßNö7fÛC=K¶w|£ÀÁ)ìEØÛ7nºë
{Åá¼u<ž;W|Â;ÀØ&¶lŽÏ½¶÷W~În¼eQ—XÞÌ¶ãØz÷ºeÞ301èžü2š—p™&Ê»‰4¥4‡;n ¡Öà~ãÚH˜Ñl|¼M¯ã`µ¼€‹#m¸8ç\Îo:Ì/Ëà@	Ä¾ÈUQE78ÓëÒÏøpHÇ— Ó}ûŠâ%ø½KšåJ:´´‰!Eáw ‹h¢1¢¹ã»X@
¥òSÖ“‘Ë'àxé¨©eýìË(hNNqÄÀÃ«Êk- FT€8‘Ö¯y¤}õ’¡~»+É¾t#ÆP¨ûEiIf”×ã€ÀçB$ÎkÆs'µº >÷ö£”7s!RÞwåþþ?Â(go &ü.q/}ª£4:—0LÉœ£™ÐDðEXCw¼æ´Ó]s_Èˆu½,VAÖR 8’Œ‚WåNq´Á©K…„ƒ¤Ì÷Ò¤hcÂìÅdãçYîÞ›ÙT˜é<ÈÐ.Î‡Ý`Í r—²º'‘d—â ¶Ÿeõ”X`Ó:Hc;{ã&¤ó%ß™Û¥ñTªªFL¾×|9ªËâ$ ðòê%ät8KyÉ¾=ð™üÎ×4Y!lÞÉUpÇ£Ö§¯Ë$|Æ¤Øè*Ê—†:[«ÊìK]žtâ`×ä7ð^;æ–ª²ÝÙœÍÁ“ògÔeàþô™ÿ,bz¦|c\üR
AÉ½ÄÚïŒ¥ñØH¨ENdz`¸¡³3£xÐ	XÔ‹ŽÖ«!lÖæ~Ð;×\·jéÉ‘ùV(ÛšéNt‚S	æÙ¦
",åÚ¶è˜Ïòê§Ù¦>Hµ“¾M¤À~”«­Ð.ma$|4Å6ô¾TöI1ÃfÇç=•i®°Q{©¯«Â`)M§Nÿ´À¿xuBké©`?åoðÙ,ü¦­½R€c4}Î êÂ®aÖ‚ÚX‰þ8é0P[1ö­Ìd?…4Æå‘˜PÿÛ>¡`Ç0â‡P×ØFä]¾G n`vAj–ÒŒï¶.sº¢q2"9nŽ‘?+;ÛÅŒà]'3QÍAâl?}ï\OáávÁh©ÅÀh¦ÍÙC½“ÏÎ¶;ñó5íÑ¡=¦´8¹‡zö“Î(ÂýÏ8ŽßÃ$tAÖlÌ§k|ÖJP²E™ÖWS¦Vª_ß%2êÔ§8]í)>AÐò¹|gw~5fx»OšÜ$-x•¤)½’vŸõkªß”!·ì+)Îä:ëÎ±þf®JYt©kzœ<d³„·ÿÐ––7@Sº)'Or9a_O)øq¤[ËGp„švßt« 6—§SC	·Uò7‘2P’9D»ò¥ /Rõ®='?8Yœpº€s¸]ˆÏ(Ï‘èj C §†µdV¶u5ºÛÇö¾Ô~¶q]	%  ZL&üÄ¸	éµˆ)lŠ…g7AóÀ¹Í7¢-¡t÷Èk„_AÎŸ´E­/~CwÖ®Cœîþ~œ0ÃÿÆâÇÕÏöÒ®žBâ%ËÕŸJ€²»xœµ]sÛ6òYø˜äÁvjQqâIÓLœ©k;©ÚÄV,§¹N.sC‘„š" ´¬ÿøÛ] $(K¹¤7§“‹ýþ¢Ë›…èçÒdêFèÝƒ=v´öcìüøÝëÃ•10ïó±(sþFXþVÍø(	®Å—ZË­â§nÅOTiµ*
¡ÆÆž_ŒÆÃ1a$¬Ÿ ÈˆÏlÑó€~‡õzŸú}«ÓÒTJÛ£—VÛU%^qüÝñ¾åaå³-¿”G/M=«â´äaýsƒ5Ï5¢Äë«4åa±57™Ì–n^5 †7kv®ŒÝ€`—ëh	TNÓL½¤KÃ×”û…’Xó7-_x³Á"­îó5äaÑƒêtyôr*Q¦ñªG@š·+,7it×cÎÃ¢Í¦³>n?z	w­ ô„»%x-DÕOy#úv¡@g"óbºæôH™*K‘Y ¢HWG/z:3·áT«‹~¡Œq¸H”º/UL!ZÂdj©¥k€ õ±U)¯c¨QEoûFþ[DçÔûêZ¬´,gè°0ÿÈÿ5Ï5xæ}/þÁ‰³ ÉÔ¦@ â‡¨À¥±¢¼‡£jø’¢û2@Œ[j7QQš×‹ªŠÊÙŽ¡j[Õ¶?Uz‘‚ßO6hBqzòp AÜX?µ4™ÚÍ/ÔWÞÁ‹~•ÚùÑËñÕ%ÂNÏÆ'—ÃÑÕðâ¼	W±(î©Rp¥ùBi±1‚)?ÿãèc@ë¿N'Zf¦Œ¬‡S^*^¥¼Ï‚&x
ˆgà$å>·sQòµøÈ—²(xj­XTpÙTU)ÿyüçøäâüõéðòçn„-«ÅÎÑG‘¶ÚÐÅÔUU¬`cºçjÊÚÀ©Å"-sâD×eÂ¹#ò›Ž`â">`r4ƒY¸³sž–\h­ý ÓKiÄ>b*‘É©Ì6&næª.r>NäÀxÅ¢œ±ÏC¨¤pºêE&ŒI!’Õ„w>-Ò™Iøq¤ËˆfÒ žˆÞâÀÝíé[rÝ/Ç'¿¿¹¼øp~™»‚­÷­"°œZ©JžÐ¦0^ve&*TOÙFØyjQ–ˆ•ÿ
ažgðÔ Kù”a¥°K¥¯‘þ&‹ÓÈŽfž¿0xšMál–Gx•ê™°†-ç2›séûÈŒ¨à$Ó##A7ÑÉH’ZØZ—@pãø¨´º‘¹ œCŒÌ¥1Yºà€¢Ú55•š@ G}ƒŽIãu)A¬áŸ¿?ßë¢&v¼/Hcj½<ã€°$­ÅÔy¸±J;¿7ª†ˆÄ:"$žºB‹¤Ær®¬pÐøn’°Ý0€¾K0ïkH§h‰ì¢ÇwÒáNcÁ0 hUJ‚ùîº¼½ßR´Ï…Íöø¢IOAWj‰¬ÍjF¥ /HŽ¥Üçdt@ÂIuž°a‰ñËÊ¬.RíŸ$Œ„:h@·¥EbMWä¢l‘®ÐÍ@ààÎI7›<éŸ€Ë a'KáBh
ì€ðDÜ¶Õ<ˆ	Xó:é‚Ž77û’vÇpµ,‰§¯áþÌ:jÛç JKž<>8ì?~ž(=K0lÞVh¨I<óƒ‹lÊ†´ãu.ÚHÀÝü#\‚Ü€¼´.,Üº¢=+$q‹´î´)Ä[6†_ÊrMUÎ¢òúÅ¶©‡åª„h‚¡‰ƒ< QŒÎDPÁz›Òb?Nj­1Ì‹å¿IˆÃ é¬¨sñ‚ýÀ>}fwë}Ê»ûïNQ3¥Îît¾Hï®îÓ#1:p|Û¼Ù½T'gû\~<¾íóa‰H& ›}tEØ‚ÀÎMØÝ4ƒjäÑÇáèß‚œ¿–°½“y
¶U4¼±;›U|Eüêd4Ž"èB©êî¤µNnœw›%£1m½àXêo‹Z!R+ÜÄ_Q(:~° µpÅE«À–¢&*ØNÜ}“á„ Io[HXï5,Óø" $èwãÓ®Hf	ioÏ9N[=@œïG}µysà®¸M ÅÍárõxž•µnð«Ì4¤AÙ 1äBðûÞB5¸ÅWÈvø¥CL8Ëz1)ð_ww!1E Ö.OßG$ªÃÃ'‘ËeW_›ÚØïR9º7HDYëù(é‘¶¿ï$¬Cë¢xk
¥_Í®)a¶rKu§£þ&š!!
àßIµ×›°óˆeõÄ<ÆëíÏÅùHŸåéžÏÔ«À3QÂÁ#À)Ô;T¨EN K–àdiŽžPkÁ8ï|9lÈŠ#4éPàD68!„41Yšêmn8u:R‘w¥²m!¼ßÁ
o5R>ÕjÁz÷›O¨GrN¸áø\	‡–B	®Q[5¥Ð”É‘TJ„{-«_1w¡òKqKFÓB!EÑ‡ÃÓÝ¥Ä±+þÁÕ>Ã ½çõ) w¥V[XÏ•`@,VèØîôeÍP]Ã‘^»ØuÃ!®7>ƒƒ€ @ÅÖtÊpŸÈ[<(Ž[IÖ£íÑ‘ØÚ…vÜC¬Í…Ö8@â1¡¹·XœË0‚Ž­+c0úòhÞà î-IÇ®AÜ\ŽAÝt#Um@9˜˜mŠEÖÅúƒ0;>ÀFýA`÷AÒ°Â]±ëìÜiŒõP6À‘Á»ñ|/(?È"	¸F4ñ"Û1b­5üm|qÎl­]OxäÖDwPÍ}7q›“¿LØ
Ìì”ª;¨!tò2Y¢8§ÁrÿÌ„ª•-‹E‡ÉUV/@-Âa[[™ƒÁ4RO Ã_
YÖ·}"¯7P™'µo²¹X¤D1íG^$²õÁßÃ¯„$„åË­\°B¾Å¶Á™`n|Xe=ˆÈeÀ¨ä¬TÚU™y¯|óO¬©²X±ž\T…ð"(°`‰XŽÉYCò†ävš	¤C&Ð4ÅQƒ†
=7³èµSómÂq‰÷æ›ÛÏZÁÜÀÏ¤Ê»âƒ3dsÆú€tû¾¤ £.¸Ûá]0´k¹ÆÈ™øxðýðß×ÑÇ˜üõÉ-rpœç‹êÒ"PK9&ÐZN)D=ŠQ¯{¿3îG,@Fe¶Â	’7Íiï›ÓºcãoÑ‚p"2¡½§°±Ž^|¢Â™ÇC^3Cë_š6/\_b’ùÿ_“ñ ™þÝ=ìÕÛ1„‚´º®+‚Žâ”v<D $ª®v¡¨$SŸ¹\ßÌÈqß_M˜Píª9ÄQƒ†äÍî7.ãµóó-ÛâÞæŠ6·©÷žªr£öBÝˆ®ðbv±Aè‚![¹éfÉz…šñ*‰ Ä|V¦È(06½ªºr{3“‚è×UåFe¦Uè‰Æ²¤Ç};µÇ#ƒ$.°LÉÛ–é:eNð)Ï8‹_õ7¯ºÓù±pS1-°uñ¶É
pC*„ÛbgŸï`Â«ÒkÛw\´“ð0H7¹w%ŽGãÝ|G©:I®T·“Î¤!ÑÒp®–ôe§‚	ÕÈþ4  ÃÞ‰ZLhZD5MçCÎÁcŠeºji)–ÐÁÝG½êŽªÜ‹HVÄ:
òpþËë+¨Ã€dC júÔÕÛà»C¢}Xâ¤(*p&?C¸fºãagÿ8~7z{}í}ÄßÓ\:îêãÒŽD46mßÁOO’ƒgÏ“ƒä©ØA©Møšé¾k› šW` ;èk5ƒ¨Š†oî¨n†,#l†±Þ0?ÃaS?þòów*gÆhœÔL;b²ÿuck4uÑÿ âºô¶J¿ýÒÑ¤ƒ¦tÚˆ4°FÿòQÏßOƒ¯ÍïA3!jhø6œ©€“tƒ‹eªÅ Í*9p|ßÁß•Õ7~»Oé»4›o[Û¦ð},á­QÃ¶M-Ëdð¥ânâ³kÔ¢ý^`8½)U>¤Æ(ÃOTƒ›	 …›ù@ÙËé;Ä+5Jh•
”(Øö.šýž³ûÃéµÏ`êíL0$,ŠÛss‚ó_gÏiã€Ï~Jž>Å{ géáñHD‘øÍ/PJø§ßŒû¦ìç?>?|údâƒäâÊÿŠ˜»QiEDW•à:
{@A3Ò0Ÿñã·ã‹6<¹i¹³øï0ñ3¶’¸ÆŽ?\ýzqÙË©>ZB—‹U¤Å…+Ð)äõâ/Ð‡IªdªÅ

?!~ÆÉNl}úÔþ:¬føÑÉÿ£Í(ÕMÇO §qSCÊþ¥1è<˜_xœ}RÏKQgÇýÑ¾-ðç&¥î7…Rq‡VMÚbK+ÈI‰:Ì¼yê°;óì½7.^B
ºÉ÷Ô©C—Ž•!AÐ_Ð­›'ú‚ÞŒkÍ@ø`Ÿ7ßÏïû~ßßÞ©!ŒôvÔjµÝ®UÊ}ŸQU¶šM(Ã¼+)ßd,ß›G¿@q¸eÙÂ¥tµ¼ÙdBîú#…ùÝK?•ƒ£ƒ§=ã†°÷ÖxšÂ¥ô0šúéAüšÞ>¶ÙÁžL*šXpïAAäÌÀõ‰(ÌR,n«\€Zgš­á3œ˜ åÂ‘ø<3‡3â½RîyZ=2o¢™u
:‚Ü`Ô]u)vŠø!;…‡YÈ„1,ìÌõc9wùî2c‘»Ãià1_YÊåþßLþ¦ÇÊÇyF+cÇNQÁj t ¶Ek‚{§;²©;˜ë>4ò+ø˜LögmÍ º/{+Ô$y|E¦;uo’‚2	–/ˆ‰¿º¿%úüÜ3Ç{éÞãŠ(h¹ºk­»aÉPY'VœäÃÄ2°e8_A›	4¤vŸuSø£Xø?]s9œDßï¿–Ê™°²îJÀ/Å‹q’Ç8QfûÜ³Ô&„~=Ii­1XÆOƒ¯gÈÂÃ¹úÒâÂ2)·om8çö>ü[[Cã}¤R4+3WÍŠ9M&¬Åý¡j	ÃÜŸ¯ÏÏT‹‹†	h”¦<[²øM©žÀ¿K—xI„à6,&fô:DýÏá±ó±"ÑNµ4Æ#£ YûK¾²xœš_sÛ¸ÀŸëO:/ñM˜´÷xí‹,É‰¦²¢“œ´é"!	’` P:ÝÜ‡¿]€ ”œ>Yv» ‹é?‘ízöŸhÉV(-RVh¾çLþB>®—ÑÏïÿ	eT3I~úp÷¦*R¶'ÓçY¼XMã§År~÷ZxÁ¼FRœrí*ži^ÜÝ½á{òW+–¾]}}žÇ_Ë—Åêüñi:ði>™Í7ñóè7ððÐò]=DIV¥ŒÜ'yúþxw7ýüü<YÍâåbûòöî/óÕËæ¿oï3®ôý;r¿„¿„fb˜<Áˆ¡EJ
š3UR|Éirk ‚š'RÕN]T‹ÃAÛ¦Y®jØ¶tª<-3TÛ20h<¨gúB¦¢ÐRd“ ÀÓE=ÝBh®Çß‘”«2£¢´¬]IfY…
HÑAÒ¢Ê¨äúr‹J>v²Ç{ÅLìpC“ÙŽF{!sªoZ1¢0§%K0
S²|œ'£L8„Þo×| C±5,ÛèŽÊ,¤;}ôªe¼Eõb(zm€`<æ9†í–bÜ‹£ÚÌíXú!îµ~dÁcÿw ´þA)yNåÅLr”ÐrlÖVÎñ)-éŽg\s†Z5ÉLnŒ¤0A°D)H´9bÛ´8TÈ;J‰„CVMÉ™ë#¡¶ÛtÒ‚%…¼§˜Ž`Vº•]|øìÍç¦¬„Â ¦4 tÌ;ÁÞÂª(e*	&­[ÃtJ^jq-òaeÄO§l	„ázæ1ZU<A~ù²˜]ç¡²Gã"xKæz”‰™Šœòb„:3×½´€ ô uåu^¤dh“ÔEU^Ç³F²zûÇ`"DmmSó ÑÜ¡6œq—Rœx
^R	½P@ ŽÕ÷â+ek‘3óà#÷Rä™¸{Ãªy$ª5œÞ5ib”D²ïS¸ó:Ü[õ *V=ðÍ!ÎØ Ñ87Î´ y`x"E6J7LKÎNÌŒ¯£BœŠ=°#¹ËDò­.Y@ô1Ñ¹ŠÈLøT$OìúC;öwà ,o¡ðÒ(‘ôLÚ<hïhffÍl|ú7yi:ë¾™Õ=ÏßZuŸº?á–è:Š3á/û³¯˜iq`ödÁ@)SÛïd$Ý>µ¦˜#³ªgBAêíƒ·Ï“ÍË‡FÜ'Ð‚öô'«É6ˆúºLJ¬±í9¶éñ€°ß³D«þÔÔéinûi¶+à5 ïU˜Hˆmúð˜¥d)O4Ýeï=òºë'KÈEr!%Ö<&ÅBb¨Äê“ oÒØ~¡#z8¼Êê¥Éäpì MWMräÀ2d;ˆ2´jmØ­jsCFZHmfdÆG®Ö+FÖ­ÞÈÐ°ºSšêªnX«mM6¿p¸RXÁ*ÍB|8ÌÊ)*œY=ø†)&O–¸B	žŒâŒß	¡£rh¯?BYCc¢n\ö6>¦Þ=œiöô„ôE¬}4—KÃÀÜ.Ux>Íª&WÖ¢îƒYêÈlÁ9hŠ£5“8™öˆ`pOUX(b¯ÂÔ+v81ö)­(®Ÿ9|#,Fq'á5üÞD e;_>E/óm/ùµ¤ }Ve)¤ÆÍ&0¿S+ÌF™ÄÈ˜Ã‘gª—^Q´QçªˆÆÒÞŸµ=â¦?<±ÚEéÎ(yjâp6ÌyeòM«Ï‹®|µñœÇ¦¿jRª‚k³ñ—êŽ=?ÀÎ5á‹vÎŒJ,"Œ6AíÞD›®»Ìf[T¸çD–?hS4Ô­0^š|k0õ¼ê.
ÊYi¼FÅ8àï,¼Ð×î-5´·U)ì‘æå›–× Yû»Ì?Ä<2»»s}ñªë‚ëš°•o¼Pl%‹f¥ï¿BA¸·¾ØF¨Öd~¦ÒTn´¹l'Deß‚.M4?áµ¢ÈRrÂ“VðŸäïïÆ²j4‹¼#ïyŠs‘	jêÜYýÛ8ß˜· FÌ)¦ÒœG”ÒGY™¥ªvè7…Ð–;®%&@#eF#kJÜz’1ÀLÜPœ˜¸‰^|¾Âåb 
—ô
_~Aæ.R‹/ L1×²q,bT`J–œ†™8ø‰ÝÀ¢~pYhq‹ÑëâãTÿwjõzçGù!×ºÍÏPýàz eÈt”ÞPb¤ÅM¾W¼ÎÛni0±ýTSÔêÊ!,´ä(uSŒa@›1ªÆÝØþqªéîA1Í^ab÷8{zCåiF55¯]œ…ÐvÖ^”?Jy^fx	)/W¨æ¤¬RGò„-Wô†ëE^Ò >¦¶íªFÂiêocl¸Àn<É;‚¹{{Yg˜þHô;“‚©–í¸‰´b!µ*! ¦R†½Ýbé}2gGµMW@VÀ¸¢P•ðßý	l¦·º©¯Ù«UZí,(jëöÞMÄ¾šÄ½……vøþÉ¸åRý(Òl{Ñ^ó;…BÝ„µ2ü²ÚøåËùLe_§ZQÇ&2'ðúLš$¥ˆM‰Â™z)Ã$E¤#•p–ƒlû¶	±mzsßŒq•ˆ“M™³ú·yé$žüOb ¿¾à\eàÖše‹”©íÃâdX«Æ :È4o&ÇÁÓ6~¶€YûdßðP:…17:†Ÿ!ë–ŽOÚø0¡V®Gé”×P‚L–ÖâÀŠè(”.¾í;C,÷j}ì"«_Wæ /âZ2Ø n#n@ß„Ï  }Hqeô]†Ü˜}Š>=O¦ÑôÓdm™V}²š14¸/
Yò-`~¥O_Á4ºƒTôSgjÌÉ—å–¬·ÿªÝÁ!ŸýÐ¡NßºÐ#¤\bˆežRsÌÑÜ¼¹U#®>¸W­vÔå*"ýrõÄárÜÔ}¶|€Ã›ýÆñt&*‰ßØwLŸ+Ú^öóIÿ#Á“ÍÂ:°Ìw6Eš¯k)4ú[à™å ærTûnNgÐð£%ðâá~Y7¶ÃöF¢V¸ám…Ö$²‹÷¬_LÙ›W'í}ö ±@þço7-J‡Ô¥Ýo˜àF³Ùšç ×œÆö2Ÿ¯¿6mˆÁýƒ[C£ÞDL ¾µÍ®M:,v{/;wyÊ¼D€\ºÉt½ «Ç§b
7ã£~lJ5=Œº™™€bŽAðS5³ÔC=üãîîxÍ÷îÿ–Ø=‰ë1ù’.÷³÷xœí=isÇ•ŸÁ_ÑFJ$ $å8®]Ñ´‹æ!3¡@†€¢UÉ*Ôp¦AÎ
˜f¢™ˆûÛ÷}Î€²œÄ)±l‘èãõëî×ïîÆÎc1¼8úŸþYÊ$—ýÓH&E<‰eöL<¿8ë½½ÛO“éx¼³±óxC<‡éü.‹¯o
Ñ9ìŠ¯wŸ~+N“BN¡"›§YPÄi²-¦SA­r‘É\fd´]êªÞ?=Žz"¯d^È,Gñu\o6’»¦nÃ`–/’kq<•a‘¥IæÐl»'Î

»nâ\Ì³ô:fþœdRŠ<·A&÷Ä]ºa †QœY|µ(¤ˆ$ÑNš!€YÅ“;,[$‘ÌDq# 9ËE:¡Ï/Ås™È¾X\MãP¨¥d–ÃZ ˜¯E x`u~##quG}O›¡ÂFœ¤0¯^öÉHÄ	¸Iç€ÐMP Š·1,ú•‹\NÓ‚€ÆâÕéè§ó—#q0x-^\^F¯÷ qq“B­ü T<›Oc€ÈdARÜÁÂ‹ãËÃŸ ËÁ§g§£×"ÍÄÉéhp<Š“óKq ..G§‡/Ï.ÅÅËË‹óáñ¶C‰hI°d…& l–ÂÜ#Yñ4×ÿ¿Ïöã®ä$žò,åh<§IÃ’†)lÔÓ¨h:…MžÈ X V°Åƒ¿½€ßÐ ¡œWRY>—!‘6KäKÍíllü!NÂé"’â;™eIº}ó½St-‹t^øe“0)¦~Q^DÓøªR§•¢«4­ö“Ò‹('òË¢8“åvÐ±¸›ËÜ/T®eRå.ß‰•±#9©´œ¦×~YÏ$–” ÖŽ,~±¶¦¦³•›¶S–|@¸^ÉÕ¤ðK`65Í ¤?ÏháêËûÿ›—G›09`áÆ`Þq"á0Œ~ÑœŒN‡‡­Öðõðð|prtz)Ú;mÇPÜ6PÜ¤]Ó;œ>¯éŠâëmÄÄö{qð?4Öøàòù°Õúã×ÕšËãÑåéñ°õt×"Ê83žãÑ‹óÖ¡vç±3¢|:-E*€GÌMÀŠyp-sÅyâLdÁ-žà0 |¤8ÚáM‰ÇPµ§KDÅy!°÷¤ðËß/bY*Š³ù˜§º·aÀ¦I^(à°“q¢¦hµöE» n•ã'dÒÞkî’Q”•ú`‘Ìó%Ý’÷	õÉW@¤…œ	(Y:Lþ!Œ£Ò8(ë‰8¹}½-N/Vt—@ºq0¾I¡Ž?+ '‡âÕ«ÁV¾B<	Bi !Ë‹DyoÎ…Aq)è¬×¤KÖg*Š„ªXÑU­F¥'.F<î?	ÓB$i²+Z…É;yW…Ý@«¹€ºÃõaº¦#<.ÝUÜG¢ Á,àL€âÄ2aÙ`I6ŽÓñû…\ÈL³+ '.Nã±<DGO„Wˆb2aé>ðÛ,.d-|ªibwØ9Ì¿*V|Pê3Îã¿ËúeÒêØ§_ÿ×2Àï¤œƒiüAŽ‹YŠÀ±DP‰@Ñƒj0¤8%5*— !ZÆ2l‘À^#9î¢)ú$€HpãišçA‡Â°ø“€iÎ<¸ ®£â8K
têäšzý…ÿ&•lt6$BŸ¦é»Å|ÙÓ|¬ŽîÄ›µ¤S´ öŽ‹‡ý‚é4½¦Ê'¤qª‚S”ƒ.[ÜJPOs”I–—+¥KX–ŒåËÆŒóàj
Ôö~£á°ªÄ=Ûù{µºÈÒÛ$˜ær)SŠ2„#ÍH&Ùâ*|‘† ñFhDpSÑ^¬Ç~Á,Ö ><lcË;¹ŒvI2Q=À>/á`*}æŸ‡çÁ-l	²Dµ•¤‰ÜBòPKcøÚÈùÅhÖ]Kÿü¼Ñ‚¢ñ”—ÁóŽ•¥ížàŸ­b«'ÚP%›¦º×²
B·'JPPXéþ
Jâ@aŠ‚F

üU…ÁbØ³ø˜@µFƒ>ÔÁ -Á²•{0¨Ú ¡OU(xú:[·”pŒ=„nš0"X¤/h¤¶&UXÔ@ƒ¢õüuÞzï@RÕª‡â-Ø:-A1Äª0X€÷yf’éfkX‚<‹‡pÕét0¢ÉúqÚg!g©/Þ¢eqº®«Hún¯UHÒØƒ¹õÊ t…xÏèVt{%(Š},·.HG€÷<Š–TØG	ínå_¤ß¶®$×KàP
÷I
÷Aìiß18_h;ú%F÷I2«udIlÛu,Uøëˆ²¹BØARlM¤'¸{Î¤½Š’ ˜K,!Ž"TVê´88¥$]¶«*{@ª¢Œ‹îzXª²
KUXX'gxÌ´ôî«…°[G<AS§…~OÁrô€
<–}×jW#Ïå¡øe ¢û,í”·®¤ß%R¶AÐ–ám=WZiÝóÀ9–Á0<XØ*ØÝh ‘iÞ´Œ_v6G?bq›ŠCžÂä:'5éþ!<xyvŠÙ€¹¸Î€wOÓ);XO'BÆ`ÃdÚ±‰`4°?°sO ]d‰ØÅ É§Tƒ€”§ø:A{†ŒûÃ”'S”ó06góÝŽ«YäO{ž¦‘ÝÝøÇFì¸ÎWùSññ£ø
‹Z-ÀÞ†þ“Áu4ÙÛ¸ÿ=®G ê3¯	ƒôÖÅõ²ÄùØúdÆÆ)EŒ¬ƒÞ¦1«â¦'è#q8ÀÅ a!¬(³úu ÇÑñÉÁË³Ñøâèp|<8øñìø¨ë jB×EƒÈ(£Êf>¤€W¦€=ŠÒIgAÞt<l{¸4Ó2ÕJ<†Å™\ûÓÐ¸T››-<p_i²µí¯%©V¬uBÛž Èýï­Òíw×»\úX©?jh«Ç&­ÐïÉŠâª®ŽZèvwŠ×A
`«…Î~ÃÈ•Ûù«w²Q£Ò»xšÂ/;üOÙaw+Çcv,8¼&KSä5Yã&÷`(Â•i¥óÌJ`Û]—Fê:w‰:<~¶§>çæºPSÎ…
&i6–AxCÝ;€àMW ÄR¥…Ì/çåQLcš6ˆôPµcâíðŒ:¡Zé.-/ü ;"Npyñ“Zà>ÝoÐÿ÷váQ,5­»Zõ:^¿rýiÕþþe
ß^?fÑSƒÇg½a`#oÑï
ºwA‘vÔx¼™Î1#Ö]A©û‚èß·GNv‹!~ˆJ@%²B>5+l—SŽm¿S½¹)¾ª	©¡¦Ðª¸WÁéï2K	$MúKP‘pl‘£P§näïÅn·«]‡ÐB510ÍÑ:Ð;SK¾BÂçBˆ»WnWKU¥S¯w›T;œASá6Œ¦GuŽ©ŠË²<¦_ÇŠ+MWK™ñï)a:Ü—O½;ŸÖY™é—îî•Û5(`ˆá¤4ìêŒðŽ™è†/¾Ž/Ž»8 “@ÍÃeGL)6ÎT‚“àEžŒa1xt`£€¯n]OaDU´ ÁåÊ™”V‰,-’Ë,Ã&¢üT’\ @ŽLg…­‘–ËH£¢ê6©ÝNßPq·“Œ&G 5“¨øpmæòwbÞNŒzî‹ˆ]q¿WA…Žî>7¾y#'tŸ ƒŽ€Tz­ö$ˆÁ¶@^¦;8ãö4îö(ÿ9i÷¬ì-2*ïµaráÎ ‡NÖ$GÕìÄÑ6œ‡e‡¡²š ra>Šæ ¡9‰aJ\Ý[9öß%émB½-.29QyG¼cÔßöÅ-(÷L06[´ÍÓ­™-œÛÒ‡]3SÜsDðºôh×‡h€6Õ!¹izíˆà‰_#Ã?=’ÜÉb–ÉÐHãQUÒþ992”x½&x)Ã4‹rñ(ê‰6kºðÓæ\$ŠMP<?j_\ž.¾ý¦­È‡Çë=ÿí7ã"‡óEé-˜j—Ö
Åi'&&bñBþ~ò„i¸<3œÉ úXB¿M‰±ÌßÄo¨™Ö>þø3;¦®"ªÚGTEL4ªûÆþž	u”“ˆ
ñ,t$JüÔõºQ6	f¦Û³¨©L¸Û
?¨S…<›k€ü©ûL´ÛP FÆÅEê¾êc·4	ùþn”?	ùÞNA¾÷» ´#œ@D]¦òé·zÛ W—G!ijÐ“ž€ug”oW”‘F³Ñ†käµRËæ¶’“ip»Ëìúò¸–æXBŸkºLt­ü6ÝV8{I´†–'+‚£ËÑë‹ãñåÑ‹ƒg¸gzø,šãyæn
‰#}îIäÛØ~{î‹éý¼—W!qy¤p–;ûm!AyÖÁ˜¿“wÏÄî/v¿ùÅ@)­£3+ta3”+`dïöêptxá­Xöõ3V®E8ßVååÈ^+ñÅ<ø KlÑäQõÄrI\q8"«RL˜K…u)ªTÜI„Ç$1jît:‡3OCž/FÏŽ^]Â¯ÑåËÁaOÇ§—/‡—á÷+ø­5èýu’[8’áÃò¹K¨'X‘Ó,j”ÈLQŒÿ.ÓI³ÀèŠ'†w£Œ¬on¹p×èžUëÐš ÈáôÌ°§¶|bœY¬79´²Æ`¹<î)(Hƒ#~pXž¦9¢Ù$XµŸå×¾ïŒhDILq³ãóA¥•À²í<6KÝà•«Õy#9Qj/s:‡¨Ùå§#B¥AÛCÂv2lž"ñBÁ'µül qÌŠ[Õãcì:ßOˆ>«iý^7¶´ƒ¬“›ÆÚ6Ð©3¶ÃŠú#Êç7Õ]¿kÏ`
2ŒWà?ût²¶ñ\“Y¶¥bµÇ‹ºT9~Ý¢VÕå,Pj’É[@w¡:Ýh_i±Ê{z~8:N_Ÿ¿QÃi>Wîw^bZ|õ[Ä¦³I8i«„Nè
PÃz<[G§Wj)•(Ž±ÄóG¥j••"Î{®[D,YÁS²˜ÉÑ‘Ãç—/Î¬ô(A&cÑ(!Ì¡¡¾˜çû°®?ž._SçhètI_c*#½.0Î†59ªjü ÆZÂMåQ=«ÈAaÖ[W£ã¯Ö±?AÉÖ”¤YØ”‘Õ%2¨öµÛ«!« nâiD¥ÖSÈŒ¯ÎYXcþ“±¤Î8œ1c|µö­¾ÉúÆ¶q.µö—h÷¶±Ê6
©ªq\O-‹lÙ!Õr2~ÊÍØ7¥Çá„ç}G‹¦ª{žðÎcq0…mî4ÃzüÌS Û)Rß£»iÜì‡6››µ‚jªœäÖG®¾‹çz4$0Šàz‰â¹ˆÒd«ä+VÈà`Ê²_Ú`¯â2óª+n±¯˜íà¯âÏâãG}ÖZ¾¼¼Ô!ƒñxñô[Á¦q¹:“#èr@ÀÅQŠ9º7|“¨ê¼ÑÎÚ©;PÞeœp’?Ì?¨Š¶Pl
sça|ŒÃñÑË8§ƒ“óJC¡%2t[ˆ|1ŸƒbC€2u½‹9Ñ Ã«Rš‚ZölÂJ|åÞ40hªMµÇ©É]£–W/Ú«A5Ð‘iN³“¿`ÞK\”<ÿ*·õÝž§ B@Í«y|q8<Ò!Æz£r¥XVšXfFÂ™PÕ5Ëç›‰Fqæè24ˆÔ®»‚Gp¼°÷È#µª`’¯]«Fw¯ì	«.ÒÏ¦F-ßV=SÕŽ`Ã,p(7²f 0\G“¥¦fXT³õØä‰_ JŽN*ô¡ò!;r«Õä^$”öœŽßÍ©»w–ž¯á¾8¦õ?<ŽGãƒ3°ÍŽ^S ˆîÏèÑYÆ«K"ÈU=É§äÂ¿¤„1nÊ“±ÿˆR\‚2Ó6voËqo¸AHœVGéL6+ÅZŒ ©Š¬Ø·“èRA1_ß]mCÿ6 ¿QöÙºþZZ´ÁFo«ï’‰‚ÌK
¤¤’ÀéP£>‚Ww0·ºŽäêpØDœ8¹Fï¶å7§ã‹óË-ž{Î–Ž§k‚žOÓª[
ôŠèµhDáV‘X‡%jTšŒy’¥3R‹(¿|•éD2K¶¥ßlµµJ4U"DeGöœÃe>ýZC“{ª¤fÛNÝvò>ãm‰R?×ñîUÌ˜ÿãÇ`P}€ßs°LâD¾ùf÷¿¿}«<:P’;G1]£ùc%¬íˆXUurzL|‚†M³ym†VWüðŽþ5mïm,tÁBÚèJ+8ß¯)vÒy«¼Nî?¬>î¥E¾uÚ|÷°Ï`NiŠ–üÑ¤Dr£1—Úþ0ÇNXº—@ža²ììO?ºÌ¨®:‚‚Ô×¶°(EÓŠN$Ÿ#,W> ,GØ{ìA‰ý2LbßNB*&§oRaÏÁ4
¼£XeÈöÊ-ÔÓÁáe§­vÛ$/@¨ªPÃmŸ&Äš ~}7¸A\Ü•‘¤mt—q—7!t2¿Û'´×MÓ×ÊÅ¼u8uºÊÀFœ’LNMfÊÖ
ïÿ† ¼Ýï("¨:ïóÑÞN„DÞNÿ¾.²Â¶qj’ò‡°Ák1HÅ<È‚Y.®c¼C™¥‰ñÙù€‰k•èxp~<9Ž‹þSÅ"ñx£ïD…ïfoO›ÝÊ7nìÃò
°ÖuÊWwÀovß
¾øDû‚Çx&g v—ôpWÕø™¸½ÁË;	Hì\µr›€JÔ_¹‹T	_ŽÄ«pô}±õ‡-Ì\uK~N¶H5óìäf€-Í]NØÿVu€¢ëØ¯œw6¶FÄºIÓFPOžàÜ¡ÓÞ†SúÖpY(…µçwDoV%ÔkŽéXØÕãÏuÄžÙ€³‘€JrÙaþÌœÅ1Á=µF˜Â€(ÓÆ%ò—BWXÕ†>¥y•šÚ¶ÃÚ M‹¦:…Ëÿ*+dc•kÂóLØ4ªr¾þæ¸!ßBÉ£l—Ý¾÷Á´°žÇñàxîíjRš\hÝ¥”‡:‡ƒ5³­±€¹øÚLðµk.¸v··“JKÞ`D–„Ïy!›ÑQÚð•¸Õ/ÚÔt85œÇ¥ÙàÔW.“ªó€ŠÄøŸ0ä6ŒénåpÝ+ûÚÞ0/è4Q1Ç¢ ¾L$¿©sMq½d²uÔÈÖúj¤é°DÅ2m¬¶ÄÚg­1¤•O«uö…±6Æ±WJ(‚LÖÑÞpM&YN„­Ëu]7ÕÕÕ¨›=l{ÆÄ¬kÇ)ÍÖâoæU¿ º–wQOÝ²«¼ê¬Ø‹”3ÍFi£µ¼Í$l×º-»nÊßs&ÌméˆB‘D[ƒÿþÏzÓ!y‰q×œTOx×Ó"Räå£Yþ£’Ð@ð[¥Ý\X¾†¤Æfñ³ûÒl™8kgë´Õ­A¤iGzE¨µÂd]±Ær-1Ž*Wz$KD[½l+%¥ß[¿aôù¦\Rw&V#Ù ã>MÈ%Úq¿LÌqêOEÐ%ÆÕ²Q‘T”Âæ×:UacMx.U¦~Y)YÏé^Y1ž¥‘tœë¨¨¿ÎI¡úa|ÚtÂ{¿ÞoâHm¨*?‰d1ðÑvá,÷hxš@9È_––è_Š•¿Î[¢	^2£ÖùP¸ÐÑpÊUHº¬‡rÎùlF"òÚÁ¼†Á'£1ÐÆÉpŒëmr…+4Ï°TÀAq|3„fÐµNïR>Í“(x©·}tü7¼Ïå=zƒGÈ_àœ¢[¢>èÂ È‹ðÅôùüGz‹˜¶ôý?ã&á‚Ð;öˆöL<G—ü¶Ž(|¬oQÛ:GpÎsa²}Ÿëž )ðún[ôOuoñxB¼ëÝ8:eís|ee¹ þ§RxŸ6¯ Kû><–zàÚG)¥”/gžDž}är×¾Ža¸D¯ô,qŠÔ} Go}?‰ã&ñÝyŸÓ5è†H<Ro£ÍÀºµ/¥´ÉÚ*¬ýPÖ—öÎ‚9e¦Lå9í˜#Àá;ãËË\'&AŠaÃ_óÀÝ	ä!9R}›$åj9y$c55­äH+­Ø*”ÁÏEM,¿“AºT€ÌE˜eë½Z –ßÀÄ41e=á²Ü_8j©ä(-Pª>íq9«/ª8Žônè—i ¦U•nŒ5dž®a¯yºî{Í·J]Ù…gô±›8rû¾þ&?Q™æ®ªziGMÌá:Œç/Ž_¸NcÚ»ê,lm¤T#¯íÉh•u˜–wL¼n;ð×0š?y]Ÿì‹?Ù±õ{<šJHW£äzÙ#AÕ]73'XSþ€ªwÀN†9'cà¹‘°ØYDVw-¹X×_i•5Ûª¸Ù|q¸*;´BÙ5ŽKƒPiCTµCàŽSn…Œ­/ÂLvY7†Ô¦›zAU
=68?5ÚRA‚FQ	Ÿ€"ö—nêuhÚP¯ƒŸS·ž27<OùpÇRA³ Ù;PëXíXå¨õ
ÜkZwHÝñ„k×¸:Êz3C›æpx#Ãw‚Î$p”'ñÝÉÙ,H¢>=W’˜Þå³~²¯ª¯6„Æ¼×Î†ú\º¨F{&ætõØA‡Z`[5ƒóÉÈ`a66+Å™òFX¡ÑøÂÇgC²N#¬Á>Ö^5äMÓŒ³äþrò«üÜ,úÅÖðc3%#‰ž=G´ñ…ðÙ"/t‡+é9Oè=Å›t10+òJ:)¯2Ò}`š`˜ÛêóN“›ÎGíÕÍ£ï<V·£>‰‹€<²…óŽ`ê¥!ª]Dë°ééî­œˆš`ëÞjDg<zúöÆj²ðlt_VBìsëþ…¼|y›‡ÿ€!âÍÔ`ª{ßâ¼ãäCúŽhE?UL§mz~ÖDíŒžIœXèÎÆ ^ett=!¬ûê	. ¼È žwš2Éå3üŽ¦ÞÝµ´-è¨RƒÆo¦Ã²ûTÁÜÁgv:Ô/ªÑQíeo˜ìÕ€åwHJPû¥@õ«&64ç%bmðZ\šÐgâT\À,­:În©ÏtM:(<³0H¼½§ÚÓZÕ±ž2çA „Ê/PZTù þ Ú{ê;o=´…¹£ÙÀYî­žÖ‰“uüÌ,U*c(®`À›T3Xb5Gõ8…aõZMTKˆDÞº‹JK÷À`ª6]$êWß^Iê[zÓ¼ÙäR¶¸ªZŒã.ûâã¹¿"œû°Ëáñg*N{£®Áòk]8;ˆ-có®Æäkv›+üÖõš79Ã]Gó*µÓÐuT÷VyÍ='¹õC3õÈx¥]³+{M—øçôƒÜÝž3{¥Ëz‰Ÿ]'!•âí¦ –q¥‡9ÍK®[‡îÛ´¼¶=ç1Nz¥²É«ù9<š%gæ'»1k¼˜ìÃ¬yK¹Î‡¹ÚÏÝ>g¿4~&80ñ‘¾Fâ_èµs]	Uv#xdTÉ\6U„ÅëÂwï–vã‰»p©mDC¡y|:øÛÁ™ÅÔ¾WãCöÞÎäûEœÁI„uXàÓõâM¿çû£è'o}“Õöªƒ¹–­ybîAãYÎ£µ&_¤¾—'ïyPê…g^È^© „««mG´Ú5ÐòÔÃZËÏ/>ÛSŸí*w­9\ÿñ®V'÷w¹³õÁÏO÷ƒñ×üg8Âû¤j•QÒt…´þÁ)ü^Šêí'?[ÝÃjòO6½ç=ç8%ý‡àÊ«S^á<Wãš3kšV’6Ü¬í¡…ü¬¢ö¬¯÷hÛ¦³êJðW7D?I4¯|ËnÖhŒuïš!e¯±H×Š ›¢•×1Øò7*‚é„Š uÑþs¿Çýoo•3Xú’§)*g¸º†RùïæÔÚË×êœöèE4}¶þÔÊ%3?õêÌH¯­ŠmÑ×Âi¿?&Þ^×ÚZ±àúº—kŒþ¬˜3ùcxo)„é¥áç:‹pO1J”âòü0ß©;æ[=øKS0¬Í'~›šÐ_+_èQ6ãtÚ›ôÃ}µ¯G9É“HØæÂ³»\ãæóÚ/jæúÑÖm7VZ§²Ô£òŠxè1Å7ÆÊq„Êq&øÆÃ<K?ÄÑrþÚ¬·†¬|ÑhWk´Jtò¦;•h	¤Ž¥`å…Žç†siÉ¹²‡¥Ýsï+1Ô\_ß›WòÄ[e–[âÇkqäê3þ«F˜Ô·›çüdßõYº«º5ôVüä‰‚LyÄ:›˜ÿ×¯VÁxö(÷‚Râ‘ë™œÉ1nxQÜ-m™{6Ë¤í‰ÔvYZ·aÑò£Ô†y5«¡5×žÝŠîWzÏ€
—Ç#bV›&ø$«‰ÐÄ”z:®<’¤–yå…ïrZRöØ9OBøO¡Á:ôšÞ½µ|Â»MÒ|L§’èëKå²(¯s”6Ëf£Ûÿ¶ÙýV4JOU>Qü"iéØ‰óÝh¿1ûE¨ýöBíŸªä{©îJ¹—¥|‚eæÁzeÃu±ú/J¨ø›˜«.íyëL¶2<sa©Q’Õ2G7”èqGË[>fö	FÏ²y wT&æï*\¶*¶n<ís†Ë£»|ÔawìŒYÅ“»Ò]žXÌ#õhÞŽ/á1@W\" ³¤8dá"Ãï­§'iÒÃË@xÝÌãm€zAŸ›¾®´.`÷"u‹w¡½Dh! ¼—ôy5bÿÚpÝx…ì#Mxnªô:½*Ñ?I¤/I+©Wð=¡îÊŒ5â/Þñp¤¾£&×ëÉ~”ƒ¥:áR)#¨T‰rŒ¢ö~˜]sczðRäôa1J?vº
u8!©Å³Ü¨º”n\ k…§ŸòTËˆ”Añ×no=Ê·<:5€›	ÖyŒ†šRœkÝ@W+/ÍÍÓEùZÂ3Ì×ž ý:ñÊ, ÍúóKøju¸>ì³^ÜÇ¶47þ=ÎÓ”ÖV3ÝúËÆSž‘¡'Á:Nü§eZ3Ìd\6`Cñ‡Ë['Þ¢Þ!òãXi9j£œÚyH”†^câÙ8«/)¿—®§Ð‰l4Èüï‡l„‰ÙÔ|	»ú Þ½y«Ä7ê
Æ‹ñè`8¾<~~:_¾"ÙÀé®10£íõ[Û¶ø4”tÛâWõxJ%F¤ÈýÇãÅ¿ü–8}{&ÝâŒ¾ÃÐ‹„:üó¶‹éªÐ]fd„ù©¦f§¾È5³ÓˆÙ¯²ÂEÛä±õîé.êâ;]{?<<ùHhWâ£\ f˜T«Ëó]gá÷ðaí<Q¢}5Qþ®rå¬U‡ Ó´-†çS…è»

ÛSËkø~À§}ù…ÅŽ®µî'uy}<.iá½uÐâ¥þôJŽ»ÙƒìÒÚÓ²†ƒnYÍúèâgÊ”¥]w¿Eì¬}ˆ»V>,‡î)=~•ÑÑ¡ÀîŸS[
³ÇÜ®Ž‡’o¬8è¿h¼é"ÞoôùühyÈÛ%Ïþ[yÿýy#XàfF°1¤µâoVXñ~Þ3X+áÞeŸ¦·øŒ!^[áItäöõ6I6%æYùa¾¬C"ôÉ;Žp_Fê¾¨•KeÎj€¹òg58+UV0ÁÓ„®„^)óÅ'z€¦åùâxþDS×4;¿ÄYý8«¯qjõHGkâª+â¢¥ˆhÃÚ~¦¨¥ÖÏ]?ôøÀxé²…¾wƒ)KõÿÖ*¡¿Ìrxœì½kWGÖ(ü~E™YÆ–0ØÇ±çÅ ;œÁàƒ°“L’¥Õ’ZÐ¥n=Ý—™øüöw_êÞI œd&^3AÝ]÷Úµïµ÷“'¢ýáà‡æQÔã,löÃx¢0Ýï>5Ÿnn5“´9&aºúdcUlˆørnöD³)Ž?½o¶®Çi˜e¢—ŒFAÜÃ(Åt£ÉÍ&ÇûÉø&Î/&¢Ö«‹§[ÛÏ›ðŸ¿6Äa<	‡ð9'i0‰’XÕø>&“0Ýñ0š\ˆ7Ó¬w!¾ýÜÅ¿ÿßç0Ãáf’ž¿–Î.¢LŒÓä<F~Ò0Y2˜\i¸+n’©è±HÃ~”MÒ¨;„"šñ“$ÅFI?Üà»iÜS1¹Ìy”‰d@ïŽ?Šwa¦ÁP|˜v‡QOÈEÃêôŽ/³‹°£Æoqm9ñ6†i’»§}\†iÏâ)¶ »‘m6D’ŠZ0Á‘§"c½:÷FÐV¨ª›%Ó7³ì‹(¦†/’1Ìèš„9^EÃ¡èÂFeá`:l`PX|xöÝÉÇ3±wü£ø~ïôtïøìÇ](<¹HàkxrSÑh<Œ e˜WÄ“;¶ð¾uºÿTÙ{sxtxö#ÎàíáÙq«ÝoONÅžø°wzv¸ÿñhïT|øxúá¤ÝÚ¢â°hË—X ±QËØ'A4ÌÔÄ„Í`tÃ¾¸.CØà^]ÂØ€ÈñÍœ›7Lâsš&6¹+¢ˆ“IC\8Â(“ü¶bu³³Ñ½Í†øë6”
âÏpD{å¡·Ñ Ú;L’´!Þ$Ù‹¿ßbëéööVsûÙÖvC|lïáÌž¬ÂYËo,ìV†‡.‡'ûgGŽ(Æ"†Îaîx0Õ9¤o¬Ö%L“›üK÷†Ó~(ÖzI<ˆÎ7/Ö¬wXù	µèõÍ8Ìœ÷ß†i'›¯­WçáàÔ}7èÅ“¡û*Š'²=ûí0éÃÐ}—MúQ’{5Œºþ»4ŠÏÝwÓ@ß}7
&î›~”¶óuÏÃØë!:š¼ôÃØ?9~{ø®støæ»ïZgGoÞ¶­òSX‹awÀscÀ,«Nñôú	µ{¹ÉžàÞy}ÃÛ‚õÂ×Ù$˜¨A‰ïö>µ:íÛ8´'ïWWÜ² ýdT8ž5@%¹}wßÀÂä_â›æÖâ¾§ç‘×$…'Ý _</øÐK{Ïž4~•c|í—Òó"0¦oÙt0ˆ®Ýƒ ›F½Œ›‚-D2µÚÚ;kuößø½v§ÑpÂXøšö&b“Nop.þ½ºÆÓ·¾ìD}!ÃÏÝÕ•Ngúì)œÌQ˜ƒž|iê€˜ºAø¿®Õë_mo;OOùé¥ÓiÔïD@¢®uÀ=AgÆð¢›$C!ÒàªÓâ ½Ñ¯.¦ Y4úAwî®~ÙÅ‰ÞèÆˆ³‰è])M’–Ÿ«Ÿ~¯ç´:ŸZ§íÃ“cSQ.ïµK¥a65z¥1R^ãz`{Žð±f=ë1¯'Ö#"zx\—-7ìA«¾%f$ÔÇ=Ë.h×°Ee_ML³àœª|+‡úZüô-cÎ×¿ÀO µìõ/kÖ€×Î€<Re‰QpƒÔT’uà3Iã’=¤Ök?¯®¬¬qqQ¯wÄxx‚ãÙª7°M Xð³ÄÙ²ŽW8Þ®gˆQo2A¿OÌ—$ñ@$G²~Þù6'¯ß†QÿõO;½I:lF}ž,4?X†,·À8l ÕOP¡Ý wfí„^~±ÄþýŸ,‰e€[Û- +·NœHè¬nq­D7‚ñ¸3	Î±.üø™ÀjÍIÒ„?âÃañ(dÍÎ(È>ÛÕéyÎ6h‹:= ø´pž»°¿ÀeÐ‡LÔþ¦	PiÄsýº °“Û‰ä¸×ƒÍ*n·—~i=zÓ‰02Y˜^W!àSÉh¦<øX~`$øT‹uB
È	fØÌM1FÅm¢p´t@¿…‘ÊªŒ¡?(T´G¾¡—ÔàvíJ‹|¤„+˜!aŠÏKêfã°×¹êô‘º½âg×*È²¤ÈøCgÊaÍ’Æó–@tÆ¤ÃŠé¥µÕ8=`³iºá W5cø;†“°\DÝ1#R+gÞD(Ïp9y~æj2â5{¡_Ü¶Áx˜Æðá–“sÝþž·™(”‡ø4\êð¸? %<D›å§%©¸GA	õ†
C½’Mv…Ìˆ+’ÀÀ±¤pôf„Â N5¯©ÕÆñy…zÁ8è¢ä!QGh¬‹‚ð
qÙùF na–rÂ‡Œ^ˆˆ»Ä;" ‰z4ž”M)S=Xvu þaI‡£„à¶hçˆpŒ:üº~YÍ²ŠÅåÄ`Ÿp”ú©?ÎªL“U=Ò¸Ïmc‰<ð¨ßº®uÐCU á‚x’&Ãa"³l€ÍÏÐ D R·Õ&¼-ßd¼ùè}8„[.B` *¶-‘œ¢#ß±—ÝÄ½‹4‰“i&Z à—1d)gà"IÓ«*µ2¤Ñ_yîæ¯]‰¼æl£ ÍÌYS× Œ9«†Å²ÀÏè;R‰ùìd¬d<„’Š¢ÙlD9MËÂíI¦ øêIÒÁ¡ÖlŠö‡ýæózIÕqæTmªªMFf·1	ÒI‡¹_hêÅóf"F8ƒ(…‚üq•M’°ŠZkù¸ÈJO¢Q˜ð«Ÿ—Áp6p§GÑÐxåû%0Â¶ðñãá“„Y¥;¼VÕò'~­ªrL7a 8Œ{@'á·„Jþ›QX³d?ýuåºÿ´%677Åó¿áÓ£WâÑÏ[¾U#ÄV\O˜zªâe£ß Žg4éˆH]5’¿Ò$™t€¿m(ŽÞë|XxY÷›ètè{0 ¨eÑ¿`w‘Ém’k7PÕRG¹K¡úJ4µcX€ëÎ(i¸‚Úú¸!@æ<`#5£ •:U]¡V`"ƒ`˜l¼²Õ²pRƒ:[\_2ÐÅÊ—Uõ„²*HÓF§€ú ÎûÃc±uýrþUªŒhÐ¬GHÃ°&ç çFS[ý7ÏGÏ“žÆuø±‚u:øgEËœÄð‰ÇÂTV¹½ƒ!ró³—s5¿œ(V|«çV7«ál5DM`=D¨æðGH¥Þ}wÚ9h½Ýûxt†æ-›¯]µ[ =¸Yf[¾¬þ…f=ßªÞvefð‹Ö°9DÀ‡iš¤5àjP§#½Áü(^¿-Ò¶ ¸·öÏ:§­öÉÑ§–µ4Ôé_;“Dª1dõºYÝ—þóÄ~ñHÕ¹ñ2ÒH$&‘3ýßiNxXðM—Ä•²±º"6ÄÑÉ»ÎñÉÙá~ÌiœM‘Ñ¹˜fÄÏ…JÅE@
h —@ Åä*.@ÞœZB{Æ ûÝ ;²»Ãá¦8Ã–²ÏÑ˜•ñÔ;–~PÉ#}üG“|×»5ù’NG±àÖ,–8@
øû½ÓãÃãwx»€,?ïÊÂÛE…yv¹²O‹Ê¿=±KÂY¦ÃIQÑƒÖ›Î¾ðÞË%ÏWhžâLå–Z{ñÅ(Â$¨Â²²Ž·Ó½áRB}w: <Ë%à7¢2ØÙB}±ìD·S£º\	Îëéñ,Ëñ›£“ý 0ñI[Q½›sÞe˜ôÝ0‡-ý Yn`òãÚ)²¦ÜþZCœtNNŽ~T J~+¶,Pô	 ±mheÁ6nLU•…duîÎîÝÀ*bYzÇßÌYQ£—×,.ˆ(ëà†¡×
)–…ÚÃöþw§5xÝ|ÍÌñ&ié³Ig”ô=øw‡ŸçmûÍÑ?æk;b¹*Æ–$ßžï { ´(u á%hPÍÁ08Ï¨ï¢AÉ]¦Dp¿D/ãÁm¶dP£ÑkÌNSÑ»ÚÜ–›¯%›Jï õ©spx
HoW~•ª\Ô¥áÏQn£*5pô®Æ¦D1ÇŒMí•s`QqD øÚËJ+çÇ=p]±…Î €}X÷7bÑ¾	,x`Áö Ö×Å´žÔä€ì-ØÏ>4Ók3ÄÃqøSòÉ€fò™µR?Ç¨ø]Y±FÂSk¶ŽO`éË†F@Åxãåâ¹ÖåvÔ	³–ÚWË»#I-3wªZ]^ÇAš…Q„€VÓ@Ù@²'@HÑ–:…Ÿ/íl„QŸfå–AU·¦`iI—°´á;ßJmøkÖ™#mIQ±Ÿe½ Ô¨_Ö¡?œ6^\Lá/ ,êûÔ…Â=Pó•xfAøV¾Kê¨Á¦óH7r ˆ$©{4£ÌC±ÆáŽà©?ë¼• Xmlz.Ü@+ê,4ÇÍÖ­d¡«Pc!5Csu¶^èuj~–{]öb&\r¢ä5XV©Š•2(œ‚G³Gx„u úï¨/—½?ôð÷,Ac’ô“Åz‰ =Ÿ’2AêŒ¢M”””Õ
Öe¼	ËOz¾gcPW¯ç‘i?[­H,Øõó öÀÔÎ5Nc³{0­úˆPiŽïj¦@¹øûX©’P2-AA@=zñ†Rc7ŠFmÕïœ•˜‰Ñò§Œ´qØZk|ƒFku¨6àáR³ÿ¨CŒûÈþcnÅ«´?ííj‚5ÚúÅ†á¦.ôÅ^w@(²ŒhGès# P«“N$ºÁããÌšÛ£©jNmbYU¶'hú—?ñjü¢…ypÜhb1…×H‡0DÎ’ŸëuÙ´dGs”-Á²WZ2KvaÃ[¬:Ã–#/àié-¶¸Ð¿®-*ÌzòµlI{:t¤		]ì¤:ð#3ÄÎÞ	S‘†híNºT·j_¸!74»ŸÇâ’·:GÝ¹‡¸V¯…‹Iû^÷†Ó,ºo³˜øí@¦½>´‘0#5paù@\¨ð¯XºõÃþ‘5âÒQ€³1¾¼ ÜQ'DãŽI¼æá•ÆÔsÁYW‡Ïƒ£Á&ôµºUãøäô}y2¶ÛÅÿOÝ<ŠK3¿]üÍáñÞé&TãSš<WŒ€K…%ÌkJjÄyO8@Áºˆßôdu‹c
:°2ó;»…ûóè5¡*$õb|¯•žÊ¼Ñõž'ÍÿÍ	`ºm¡ál=ä!í;i^†¢ý~ïôŒŒ¨zAõÌy„^œ¶ÉÊZ-Q.¦ÀúÜ€¡YuÔ{K·–~Ø1³/-º®ÔwÔQè`àØ\ó†eìb0¶šê©^hx[)>7ôßrS
¤(ÎC¦W1Sr•Zñü±ˆš­¸î)´Û š¯8^TüÊ÷¢Zù’ï]ÄÈ‰]‘To+’3<ntöÈÁieÓéxå•>»ôÑô¿"UÓôÚƒõ	Ç²ºròá¬³wú®]#,+G‚/?ŸÕÖô@ö ò)Ä£ø²×ƒsg´øÅ AC6ñö=´ÀcnJ{5‘¨&œùÀ'çÙ4s´÷®¶ÓkJd‚@3]ÕŒ™91¦7¯Z‹¦ZhçÑwªw™¢ÀgA7Ö:>¨Õåf2y4}=‡èóô*jnURO©;4§õûë¦µaTO’Sj–ùZRŠaw©Åze0²*æÎÞ!nŸZ§oNÚ-3^:[½aD>Š¨s$lÃ´.'0ø®k¼¤™y¹*Œ¿.’+AšÒírƒðOP–†97¡T-¯y¬ #O3ÚÃååEê1ãŽx˜‘`èªè‰ùFº¢}‡¸TC@àlóN•F0ˆƒEÉ·œ T¢û½ã½rd­	BÚ¸®k:×x¼!¨Àæçi2g²_œ9ö*_&ñ+°úYNñ6ë‰åé­j#ó¨O’!Iƒ3©€ùŠQ£ÙXÀÿïB!Ãó<ÊIC5Â×KcÐuÎ…Ò xj«_3†ã³+ÌÆ¯rÉ«‘s)j.ÆÌ<D˜CZÊDë¤òÈ]±ê¨uzzr*v8ÚÍÔaC£aØW¸Q	ºÈ£jÔ,Ypª=Ö+Ù*ÔÅc4…Ïž¢m¯7žÖ°@qpžŽ£~]l”Õ&p@'§žF¾\>ö‚±Xµmñí·âÉöˆ¿¹.GÐ§Õ[§ƒ%Hj“5a#Ö”YMé®õ|þí(šß·Þ—-;  g†	U\€a:GíÓw'w§'?´;(½	äìï½oµ?ìí·ÚtÆÈ ]7ÈœLö~k:úÁ¡g4'Co†—9’å4Iæy±
6%ý*§^,­˜YÜš1*˜„Ãp„^†~P(Î5…Â i»–èV»	S
ákƒí¢LC6ðo}Õ—Ž‘mq?ð¤É³ÖQë}ëìôÇÎÁ^-À%Ÿž–z†°÷d&3ì>C½þxª~l“"w…†
 W†Û/Ôñ¢i5_SE8ïbŽNR2õÓ!Kk§}øÏ¼:?šç;Ò3¤Ê¥‘v$¥MÔ©Mü¸F8L‹òÊ†JG”zlÇà”­ëçÒÒeOÖàk²ÏíÉVÏVj6÷èTÀzˆçä|0'é$D³p4/Ä5¿–Ä Ñt Û›ÈËl%ËÂ	 qwžFÇú¥Ø–ŸÆ¡²4èáÀC&·¦xØgcCP¦¤e|"×ì•(]Ž*bµ#Ž¡ô6G šžî÷ø¤u|6[9Œ8ÊB‚œÂ#Î¶ë4µsþQL{Å‘F‡„œ^Ã+Ã£ebfbãše4BF´¶šƒ×RœïÍŽ&CóØâvÂÂö†W@$*?äŽî%Îºã¡Ï¿ÂIV`—§Aýa×•æDSø
KÚQV1g®ëªåÊ™äI•²©ŽûáNÛÁ‹ÿo±%¾¸»R²À¹yšu^÷Ö·hÛr®B»–r»lKK«“?NN#Ú¡á»{SŽUôâjì¢ßÌ±UÅûtßg¦oÏ:HÒ™ˆ‘`¯|d@E–Ðõü$~òå0XŽW—Â®g¿ujÁÜ/^r >ÅôÒzIÀ.ßc»Tæˆ©W6f5õækì,¸ñÉ¸¯>€	K¦aq4Íƒ˜w°ÞpQJ¦fž£á`#4Ä29^û>Hã(üLïÌ¾ÞŽæaMø*ñ,ÇÀ{ìáJ nÓ£Ñ[íÙb·Ãk³E2 lêâê¢õ/=ËÞzòq‘‡wÕ¶nË+—Š÷ˆ÷7:Ê‹âÛb‚¶ø9)GÎî ªv|½lËíÍ™;ÛçNœ%[Pe¹bÅE—.bÃfuÈu¿&†¾&r îz¿…d¯À
Å	®„2!È«ý™¸ƒ>ÝÂrZ¹8ç´ßa=Ž”’ª2îÕç?§ ".˜†(zøíõd{ï2›q!]QG‡1íæ4¬}ÙÂ‡¨÷Y\]D Ãz\>É¤_ÃÆ7Å*èøßB|±T&¶›Ï6Å'’U”Ó ^+âõ´!ž5Äsê¿šŠWò¦ƒ¥GÝRZD£Þ$“`ØÁ‡]¯`ƒ‚Œ'©Û½½’A~¨)z“†t9>—ŽpÅºÜ"å-kkH:Ò1EZüp3áPÇÚ†ÇîF€™ñŒe…zÆ¥²,Ò¶W®éÕ=­èx+›ª/x·M/t_ŽOwoŸIS_¸²ÂÀl½ðáQË(z#2{	Ç
§ÇÖtB´z—M€8Ê¦G6àiÝ²š¼Åcá™ÛÈ6qR¨_î©šzª€-ìšÜ'N¹‰S–ƒ…>ûª¦^ ‚|Ÿ°4ºŽ¬™;aHdìÞõ×Ä´8K["–Ò=,uï!ˆÕ•,¬ø@‘|¥Õ:KÊÖ
äìý€âØ/ Œ¾ŒH3ó6þ¤óý)©H…Ÿç„~~<ÞBöâÅ5]ÙŒöXÎÍé-©¾«`Gö„ÄÃµ”J|ÅD‘v\zn+ÄQ<ue¶Ô@eœúKE
mŸ$¨pË&ÈbÝ`)#;i…¬½Èv¯år¦îØïo¥¢¯ÊùT7[1ôÜvBwMÝR /bÔÐ{W ÆöTã®"»
´‚ÞÿN£Ôgö	¶„j pè>è‘“]ùÊ¦'m²¨RéT]²ö@n°knuž—×q(òøHú5F¿e¯ê®zœÚz{òã´Ë‘Ä¢”‘öz»½òû,lºYÐ¶^‡Çù¶öÉ†ø‡×ã°‡Lr¦ÌŸ‘–»x_§i¸cWrwÖ4Ñ, ý×¯9^jDãÍÍ-\÷–Íà”Þv—[V¯8#ÊˆømGP-¡ý:Á4îu:ÅøÍò¦n-YjÕ†\}kBŽF™fàØßÒÓ ŒûxµªÞ“û™iŸM¸NŸ>ë1ù™)­Ü°	¼J?mß!„÷ÅnQƒ±6¼ÆDdÇ«¹“Y‡™sì±ýbEnw–‡@¥Ç—jeå‰š3øÀ%ØûÛßžIå&|OéÿÔãÔ]@Ê%ò¾Ý†üêEp©¯ùåîNî¡tk¶_þNæ¸Ìíót;TÔC¡èh0€?Í»ØÄaÎh/‹üß²õ*œ„qs:(·cŒ›lâßF`ÄdzêÄIŸTGø×=ÑøÆø,H·†’úæ¶>;®×Ò‡Ûk¾Æ‘¿Â±W©îG}Õ‡+˜ªXçä‡bûHÌ÷:]E4Z– ß¯ñ¢È¶Tñ*”½-Ë¡•ŠÕˆì¶ ãs¤]R‰æ4)´¸k–zÂ€.,EsØejyG:0Ê	ßO¬šŽ,@&ŠÝ‡‹Q%AðtJRê$\êV]¢
¢¹};ÂsK'`ßwnÿ]DºÕþÄÕîÄv}ÒPÀü]=ƒ¥ÚÀãjýƒç?2	¼ßa}2I^¯­ëó©ÅR¹”†ívÂÁH^êÅsŒ‚F6Kñ"lÏ'ßÄ ãêE–IÉëÊ\æ ›Í¸–Rÿ4 ¨)%#ô‡Ã6¢„æõâ9~Y¥Úz×ÙßûÀRÄhCOøÙ‹S÷E$É ¢§ØlrƒWáPãJ‹K%W6ñ‰DÑíˆ¯êÌlúx­ë-ò}2dádE]%•)N~[‡ÙÉw2†ÑŠ¾•JW:=ºsvø¾uòñŒŠ~ÙõŒqöjë48*bkd/!Ža²÷¡³ßn×`@u±.ìwx¨›>‹˜cpÞobyK­¢¡Ë¾›§Y0¼:?{Ðj}¡!üó¸]=f4ªñJq;«ü$ ›ÌQµZa·`•;˜Oª×ŒèÊ¡T‘Ô$GE'œŒ”dø€<J½€Ç‘°{µ˜µ$Y®nÉÙè~q¡²R~Æ¹À•ªjÆõj_êÍ§*ŽDÞ?¿³!QìÄ×äd×Æªp©ZÑAä?%èL¸U“)¡Åe÷x
N
M’¹@±®`±âöŽÝDMWÈû</íšŽ}Êeìð\¡­¾»&ÛûZ’
QÑ&˜4Çð¦aV³aaÌj’ŒDPp‡s­ôšæ<÷3YÿÁ]8A­ÕKo¯_í*šgA4LWƒ¨Ö•€OlÀ³ºtÛ›@w¼jÍ|wªt¤´jliµ
HñÅó[Þõ¬F£lXE+ÙaÑPá?köRK½1T({•Š^ðøGFÀsJN–½Ø^öbSCœÄMŒ/¬D7Ž4$ƒXŸ½Ê=Ëñv©åtñÛP¹XUú>€¹Ø7¿É`É{”ïž{bÞj¢ø±ÕÛtºšÇ!Ý5Ø¥é8N›¹*÷©\DU·éaîVÓÜ{¡5Í*"KÎX$%Vý”«•5…’Eóm­.ù­UZÓ×‹ÌpïJyW_‹ìR¾Œ(Qn®¡ug–é©¡ÊæöìbÖ†'ÕQ'Â1àI~M#Õ¢lÙ´ê7¡42û¿‚Ú”à 37—ÅgØ+G,ò Êr÷Ç×®îÛ…Ë Ç!>a%Î:¤¥øJ¸eŸ»Ç*¢A63ËmÃ¬ØHBÎRÌúOdsßÈÆ‹Oò_ˆo<°³.˜¸–óð,ÇGE'¸¨§ûBZ²_gœÏe>ç¹»"±qŠê– ~„)ÏÂ*Df´%`²˜0µGÚLÓ>Á0èæ¢5‰¡|?žhR†ÄÃt2*Éš„^ˆdF¹ìtüé½hÃ€œ¬U.väâc3#ZTR+Çqvoh’=„ôh—¨gÐmj‡óeãRvâ~ÈChE<ŠtÀ(Õ=+Yõão¤`Xù“ëCÕƒoÞ+z“Þ4mÊ"¬¬Ï@9.öšFd`á¤ši‚šö ä¾pò¸CÍŸ—‡ 1Aò¤œŸWâç{CÐGrúœÆI"Õ½óó4<ÇKGÎ–x]ÃÁÒªÚ©× iUa²öTÌÇZÅ<æ¬B"pÕ¢å–,´v1ŸNO…\‚µ9{*YFØ+\f
	UÐªYhýÅs_l]ºeòÓ­çÏí+C%¦~úå¢<ÞíóÏ¾Çó§¾à¬žq¯é.*ê|¼÷¼JyÑû,åªìÒ‹,wÑPçƒ{™Šú£àšF¦Ð‘xeBo¢ÁØ9~Vp.à0±²D]FÙ­Zk°2œÓ,…s†æš©Éöy¢ÞE¬-‡Ï0ãQ£XˆÛp	¬l¢XõmzúšœPšæ*£õL›µLG¥åîL	¦¹Î&¸^¼j_%Ñ=3'"cUä¤°8X˜ã4dÕœFÐ›p¶ï5ùË»Ä]x³;øŠþsg©vÇi‚©9/+à8³‚ÆkY.P!{#1[)¡1“o;·y‘¢=Bþ7ÔŽô!ÝòE,â_T[å¶œÿÑùÐæ`u^®ðjî:¦sã¹,N‡{@®fëz0h(ægHª·î…ÉyóãY«&Å8ŠIàšKáGïj³"‰ÆC›;Âø+BfíŠÿäm¾
oÃÀo JáÂïë.¤WK ƒÞ16PÂ¤€¹±Ès1:6
VŸÓ!hîîV¼ŽWßrESèVºh}jŸQX”ÓÖQk¯ÝêìŸý ýdÐœÓoÉ#žÍ‘
”Q1€Nx­CôUôÿÀ:jèókçA~<­öŽ¥³w| cÛ;àAÙM`ÔÏsÆÝ5_O†Ãº»hý¬Cq¿j1ZrQvqÇõá¤`xåDCtm¿¡¬yâ
H+AhH„ªK‰Ð Ý¢öó1ò3“HôØè†øL1-Í¦ÝØÿÒÀßlÂ•§ÀˆpUªC(2E?‰²lŠ³åÞ¨.oëú)àä®¢-ôir•iž„ûN ¼!F@ÁyÊÀÓd‚¤ÂEA_Ý!%š-ƒbÍ†×Ü>IèÐEÀ÷ÎÑW¡×Ý„¢É®Ë¡6Òõª0‘¿ßwEEÎ¨üqØ,¹5¦[w–C|ê½Áy¸8,G^Ð¯ìWŽþü€ajÔ†-Cú™c¹8M¯W²ùú<Œ;’A| ªÙoUdV‰öu…˜aÜà	•9ÏÒ³¶éK`×OóqÐ,Ñ«Hvðæ˜Ûh¤Šd®åD=¾%T¡Íôí ü|äÙ´ŽÚŽË$œ.ïŠþo *®Ô+½+—QÏT‹…5ÆbY*ã–¾ÒüŽ" ¸s(Ò ³€ä-X¶óqN¯ü§ùO=ò ¬õ§ùk¸D{éyo­u6èÙG:îŸ/IëìàÓjÝ³5ãî¢·µcD5¯}6*g¥‡^8rGèp)vA ¯¯öCàTiŸgA2;r{Ksg†gØä\¾Ÿó.îøÍžhS¿âE2ä–{PÉÍä¸ÃÞs3LsÃ +§~G>"ŽYÏZÉFÌæªÙƒEø€yýVäúHpK±›9=n´n?{ªÄi¼’Î 2ÅƒÆ7¾ž¸Ë©9*õà¹ØÄÃ[åð×Ö!²oµ°VÇ¥äÂÃt¦ŠiîÞèÀ-·’CÓÙs»3¾OÃì²|M4X¢‹êL¹6ÓË€”tÇØuÔãFÝkÃyüžTáE¥Ø"!ÖFçfAä¨ˆGÂ··¥
·pÉ¿µÿýý;Úÿ'¡ëÔ ¢{é·»sxg†Jß®ÀÖä¼ª³ÅBVèbŒŸñr#W¢„7Ð¡ø F¿)"(ŒU‹@.ÇFáÜí˜ÊXÎÇ"z¹>îª ëÝñ\žëöxuEU”uÉ~vÇÙ¿¸\©g çÝ,
Á~t­­Ìgï/ˆÁ>µ:p8ÓL«¢0 ù†3-
ºþhPqÿ¹Q×ÿkÑäýDM/¿o­ôV˜IòµØ~úM™®GfnÃr¤w$8¥kˆ²ö|ÝýÇ_/!p.rhœ:?ŠeÆRJÁZ€&×éï\¢‰‡"òt¨ŒQ>¿pâ„—8f²Ù“‘S~30GêöÓ—øß­§Ïw±°«³WA<&|j5\¼2¢€3–åo”ý½VA}6êrÌ¥Kï×¹xA^ÔUÛ:leYÌÎ­ I­±ß½ÆZºûûØo5l5â¯øÕ¬3=NÑc8dN ßXHÏ
(§lÂ”JŠjAð*Q¨@c0ƒnw-_¢à$òéí»ç€ä£°iMh»n“SÁñ˜»˜¦,RZ!L©–MàØìÐmQ.dQÁÄèö*½¹âm¿Xé'Ù~™—U“÷æK)3½P7V4q“çE üUÍ"-ÅPWb©û0ÓÝù¦ ÚVÂ½Që£*•WÑùÆK–XÍQµ”\_ã^Æžëôø?¦ß Ñ-sÀVmo?½hBi-Ôv µÓh<IÒ¬<è¤=ymƒí.áâó9>ãwÅjK@kÿ!wFmæ}ˆ/@qÊ(ÌÿÖåq(ÇyÅ§‰‚R’Í]F-ö²§¼ËË¨ø¹à¼‹"º(éŒÎG€ìÂ¸ª¹Ã''â}çámÔmè-—õ[(ÊI
ƒ!óµ¨œ£/Jã÷¡£59øXIÆõ§Œ­¹´…$^QÂºn¶ÏI¿s|RÁÄ(!Ç,Ò¹Áƒüýì)éë(ÈÛAÒƒ™B”žˆ­¸ÕXºódaä¤û–øéQ¬c3X£B¼`?ÃReètã]d®øF1_œ øð¬ë²Nm”xÁóG¦®›½o”xJ5\G×·µjve,Y”WnßÈÊúŽZqÕ @ƒsg™hÑœ.Ní¬_öªç\©YÅYDÞu ÷üî•¸G+LéÜ0°Ü{½ÐìŽ’L­7ÇgÅ¤µvJ¨<À´±nïÆ‘‰ª‚X5J8ü+ ˆÈE/Œ€Ÿ¡}æÁå·³‡‹° ³°Ñ±utn¨n;=@u›+–Ê-–nÈôi9ví
:Oc”(7¿¥3±^.Ræ /57Ž›©…us	*Ó'ØD@Â÷¹³/‘Šú†G™_™7ôBMP¾ÕÇG}Ãâ¸«ó§øâQh‡Ôèœ6U:Ž(ibÉ&–Üî·‡3ˆwvNáþg¼ó°¯„ §Ò):Gw Èö,¢;èïx@Š$€éï /ÝÉ•9§]®¢Ösj8O—_PŸòé½­@Y&±Ðú“ZÿI­ÿ¤Ö¿Gj]Dâ_ý×‘8BÒyç(òEÁ²K$rrû]¦©Œkò”hš|þœ÷=ÏFóQ.#ÅwÉJ9'UtT4´Rå5»‹¡â«xvþ¥~­6…å:Qh&"UÏõÙÛ/¤ñ@vÁÆ¶5ÆcpÙbsOœÁLOë¯ãY#‰‘ð£\pÔl'?ªÑê"*bisµ‹ðºI	$
¢ÜZ©$üËaùÑä}ÅÑ`§Ù*¬8°½Öã¦8L‡Q„+¤a†,t‚ªÙ ¡iŠ×”Jfœ¢ç]¶Ì)6†c¼lÜ8—^•òVz-âUè—M—§U½‚å¢Î`ßSÄÓxŽ0µß#'NÄd/=+?®ÕsÛï'ÁÄ¹•ƒ”!`jo:R“j·0ˆôM€áã‹â“IÍµî‰—º×.ÌKÕ™ÜŒÉwJ®>ú%¯aª¶–.¿ö.¦ñg¢-†}þ¹î«Ç-NÔCÃ¹bÀ={ºâó”ìE ªyJ;\
¿ô^ÿ'¦&»S±â|H™ ï~*4F˜i¯^ëÎ¹TÏªLLßj±f2¸öÔ-<ntöÈÝŠo2Y.Ù5]0Q¿ïÐ}8éŸ·ø#»~™íöÇÈûxh>æn/˜õQu>~„a[ª²`úYç6“‰Û¼Z@xù|ëo/n' ”ñÿæÉgý¥[rnìÂ
ÈÊ›¡ÞóS>ZM1®¯nëº6ÿÍ•S‘*›89†s‡U±ýñíÛÃ ß±%s¼¶*Â“?Õù|õlW=Y;tÓy>j›Š‘S1ÊZæº·b_[á¡"Ä5	âø†èGUÑ€"¾7O·»aj§ÐáŽ½Ì¥nŠó–örSM&®y¢Sû½…ƒ=xÀS`AÓ£kÕ€:ü^=Ý»IJÇøP‚’ÜOê®õ–øUA¼~ÌaüºƒÝ’ 3¿þ*ìG,ülÖ•W ¡ø»RÐ—‘¼œŽw×+°·öx¼]7vçê‹.~‡Na¢6@¿|H»Z2ŸCSZw9´Mqä?ûÄ÷uC1š£Éxˆ¼0	‹“}ýF¹`/æÖ’òî+“Â÷‡q¯eó·«.7ùIg±óÅdí¡ª%ù˜)kK®ð·E¹-WCE¯Îµ¨´Â¦ŠN_«—¦´ˆ±Be†KE½0saS0Éƒàë!Ç¢ÞdÖ}Åñ/jì­1LV"Íka™ªÝ .$ôì<$¿•&ÉóÂævþåZ{ðZ>’î–È€Ú¾ª	Ä^ç²/ä
©Æ^éw`€yÙ¯¼¼@-þM´²/òÚÝïgAM ¼…ùÇí“7Ê>I0"qÅÊh’OýjŽ³Úovïã.Ø¼1DæÉJ¿¼»Ã‹ç¦¿ÅmãòëÆ³ïÿ‘3Ùÿ}}î'}™_<sÞ•ßuû,VøþØÆ©sùo‚YÈõñÎiø€+*;uù×È«ýöð@ù;FmYéÈ«0¬5æ°oZØ³¹W_Ç…°ì’b•bÐ¯—x{)èîŒ®î„‡
aÕ¾´³j¹%®{ð[Ž ÊŽ­ß‚iþ¾Ðt¨2Û‹Ðà¯€ºFQÐÏo†½Ž?½›ïÅ¾lí6˜Ì‚‡Ì¼ùý‰ÏþÄg¿=>+ƒØ”¶²ž‡àŠ+&å§¹ mÞjE&$ñWÇptoƒÜÝŸ­·hÉJ˜@®æxç
-”*^‚¾É&áÈÊ›ìFÑÊÈv(’Aµ ÊYlhG»ËD0™½¾{¥VuäB)Xc#C¢~‚úQ67>JÅ%ãä¨½x‚?îEäf›ô`[þŠ\ÎŠ@M+Z©YNÛ·nÔ…Í'ÔŸe°éi›~0µY|Ï40§©ËõtS ògèŠdÑugŽÈlPS×% 7ÝAMªtkõjßÚÚª—…œb£sÆà€þ	7Ã$è/¦VÔÃÞF[]Cd}5CÜ‰Öé]Î‘0&çiáâ²6P[]Ô¯¹^QjÔ|%A½4ºÕ‹¾TZ‹åmÃ\÷ÓIcjg‚g÷HNÞ*j¡½€¬)_@«ÈT+l¨ˆÞ8E|Øå&Ë’^à­(d³ýiØ¤…ücÐ1†r
(g$‘|YjQjIá•þ5Ð †‡6v½Awœ§tžžÏ±/üCš7%[0©Â­4rvW!yKiJ‰›1Æ^ÏçRIÀåßû"stª8'0­Û’;¾mÛæ &?Aë:g± Å»=ÁÒ4†Zðìð¥†øK<L¦Ä±b8´kÂã2hc'N”ªõL%­^‰ÿÓ>9Æ\,úÅñÉéû½#7Räl‹s¥#¸Õ@©Ñ›°™»Ã‰‰å<Óx«iÙbÖÛ9Ý”óºÄ•V^ÑÛ›l$UœöÑÅþ†R´NRñwÀáAëøìðíýã6úˆìïµ€	hwŽÛgbÉZ¾ –Ý?;üÔ¢R»Ž£íœ}¡³ÖÜý‘g—ß§ì‰¹œñne qc\š…+Y °zá—ÎA¸Ärf¦Á;]î}éêäÞ£BEàYU€ôc=MÕ,)+lŸµ¯!ÉwF·§»ÑïObœÀfÀ •Ž¼†/á&0tô[&"ì»ƒÄ•FÉ4“.­q¥#†±ÄKˆ£`–Þ8–ùƒ^†i¶ö¶4ØïJŸ–ke±o¥ì¸Ê$¼ˆD*»$sÚÉÎr|ôÆÚþ›jg=Qá°‡ÿJöäTâ}©Ú‘­oòÍ´¨Rb–©1ÿ€ÜPµ.³µŽ–Ì×‘.Ò]ïÐq9[C+–Ô—ƒï»½ïŽ0RÍr!‘N7âwŠ]Ž¹{‘!tÂƒöQ§Õfˆ¾$(-‚ì%± øÕ“¤CÔ¢F$†Žp½€¸¹Hò¾Gi%ý„¥ªI¦	¦¸TNR¥üw&,úÉ…|IË[ÌÁFL­!Wäþl3LdW·W,êæ	£3æÔþéGëžÃùkþß®ó»‹4S*Œ¨X¡4ŒJY¤JáhÁsµÒÑº³=3®¨FäEgÈ½dëB²ñX£*ÇÍ…;óY*7~Ø/DQ3yr“~ÅšÒ]õ~8ñó~{Ô‡…nEêÞHŒ›ÉTmõqd¢Xœ<—ÇÆd`u[pSìÌgŒ¤6®‹·¥BŒ®È™&Lg°C	†Ì+Z Ð°õöð@Öï†0*RÃ±‚µo1_3¥£ÌôÉHnŠz‡b¬sçT¬ªIÀ3±H8[-iÚCUª¸Åv»kðVêUÎmyŠˆí§€naö¨Ü…&Ù±¾Ð4Q-Èò½|ú*WPî;˜@íøQÉŠZtßSx «M—ÚôŠÍ+e‘\0Bµ¾Ú.Þ¾Õ. ñH3ýªÍ‹/!rKn™¸{L³<Óï„©MVØW azM…ÂÇ±…Hš°q±eÛ¶%
hà-mè£ADè§§[Ï_þRŽ78p
6g^ 1ñ4ŠlõN šL3Ç¶(ê«ó#-ævÍ¤o´dedr—l&(DX¨h¬Yþ
œ	Ó6­3K¢-ë¿%¶Ê<Éöì’ÛN.¬N±>Ö\¥BAéM‚Ã*ò	`: 0 Mƒ›š³Tü_ Öo4‚VJfpÐùŽÆÛ¥)áO\EÀjÈ{þÚË1Gù¡ö"ˆÏ)pyxäcT°n¹¢4äƒ+V2üÈ, ç¼úWÅà*²·vêíaDðãñc
A!OxôÞ~ä$Žò‚3çÓ×ÔË!Ù‚VzóBùpHˆU²JÃ¼Ô­Ï´úC£ÌzÝªÑ9¨T1uZr<1^ñw±&é¦×Ä’*ïå]ÉÑLJ´`gR$HU½í#f €VCTÌcOn"w.Õõv–À!™vÉ²OÇxDŸOö,ãš¦Y—ÿM¡Ûnèy£YƒTÒœ-´?SYØû€)U;ÍÕ–ˆÁ·õlf3lŒ½­6’ù¼@wÿûw–îÉWå;¸ãkÒÚÏÄkáQ{ˆ+î;xÌ\w³âj—¼î[UëÎ4º€ú:YT+âž\Þh.¡IÅõûË`Ø‘n íeôûÅsàª€`ù\—†\Æ®ËˆíÚ.·.iuæx’ºZDM0Hy+ÿâ0fºüæVê^œiCS…ÙØ±hÓRi+¶Dú°Vü·-õ~£ŒcÀM\;”ª4¥`g=3Æ=J& @'?f‘hêkæ8q”Ñˆ+Ý€¸?Äÿ„Š¬ˆ5·ñõ-sZ›[ÈJH,gä·.—ÕýáÒ¤9¹9àX8Çtô2Š‘ð²Žážyd v"É(Júï<µ/6¶¯¸³ÏM¿bþeÖò*AY­Aù"¸«@±ÉäD‡á³§*ñ¶„j€ÒŸ¶~©ÏØòX²6ØŽcºÅ¦;"ï=ì8)Å™ÀfËí¼=z³×î|ß:í¼ßkÿŠR	à9·Å·À’fh& ×¹ÙÏ0ïõb”©³™Mƒè5Â¡ëŒà¢6…ù¾xÞ™lÔñ—âÖõ˜iÄ0‰Ï7ÊÙsÂsô«Sá!o~ô0kfÑ#ÑN0×øüèup¨÷·×¡r$Iü<<ØbTÜ?úyëîbñä•Ä¹«r	N/ƒûÖÜ²oEµJVª3ÏGBzö£ÌAuš!Kß%C‹‰ÀÆ¡v4¼†y]Ñ/š¸X¦™Œ;f¸Ù:n¬¸=NHñ¨åjì'¡Ô¶6Ôg6<Þ¢Án¥T›PsGµmö‹T³Ù¿(…" •jÇí¶ê¹‚½`L·Tø~UxïC®ð@žŒ5ö;A@E3.Ç.£ƒT'3ìO˜¢:}r©{ ŒSAÎcd’~~Ô&½ÏM¬ùó#vyÉ…îSW§wœÂBöˆ¢eá½faˆÚùéŒ"‚œHÆÑ8@ÇZºÀÐp´—ºÕÔŽßîç@ KÇ¬6Ú;ÞSFU{®oß~8<È÷}9‚ÁqUÀ.¢NœŠð®Ý:+¨XiNÔöÛ‡¹*Ãn6ÉÐy@ë‡‚ÖŽW’bÌ†Ipg%û,jGoÚgïsÕ»´´8¨Ð—¬
[ÑpØÉŸÑ¶ÂÙ»ˆÐK{æv¯ÃóÉÁª% ƒÄý í#BY­Š R6P“eÜÞ“	øêÈá]Kµ{/ž¯àüvÍQ>½\H6•Ÿ |õo„Jc¿P ¶«­ã
rLÃÝÌ”7ö'XžÈ‡€`ÔŒrù­¼œ³õŽPÑº·µÌMÌ	“³
ÃìÌ“šù,'§_te[[¥íC-cñá­þxŽ&H×y5Ã@{Ã–Œ_•ŽÙ†¯ù-þÊ…ˆÃÎL-­Å×²üòü¸h	­{J&#+‹Xð~yÕ`‹ƒXÃù~y•p?¬Z&h6~#„_~Ì<Ú7Ò¯ØŽÝr;A•¿üT´½ªžö¢P»NFú•[GCPA­c‡tuTðn¶¸Í·ŸÍzÎvv×Á ð
BâkzK¿Lµ³S†©¦Õ‰è'á¶Á`Õ±û£Š 5NÅ}²dEþõÕÔ1ÁÀ'ý<xƒøÍVqZÔ9¤Q¢)D™ßíií)—EçÖ(ëèhÑC¾ ž¿öÿäÏÇb¸ð¯„]¶h"f&Lùá3ôRÔ®}8=<¼Vß”s¡÷ZY$ÆÉü\%ZˆÕò@]öÏÒ›?ÁbÃçLAÌ~ª$²[K¢Í"¡l†*#d—zÊ+ª¶¶J`ýR¾žõ µ)›1Êf»âñãÈšh¡$÷Jí>Âµ#ÔQ?åÛƒWÄ&À¿.ðòŸõàPšúâ™W|dÊ^’¦°¶	;Ÿ`ˆ?C´ˆÝ$ÓX[[
á§¨™°šºé¹œžöÅ¼‘Ç‘õ“ÃÞ”9œ‹v,õ#A¢"°ö³¨žF‹E¨ÈqÀ­î…	²ƒ*s½ MžÕKùÔæðÊÅxŠj’aøâyM_3!E7 ÁÈŒMòRòuÅPÉWD²m¶ÊîàÙÓšM¢ë»eÜ~Q³irÝpUãÕ4ÍÏ`»X°8+•]°Hô_ºªjScIaçò¹àË|.èõ²ü+¤œ~ÿþx½A†J	&½‹+%:ƒh²SMf½”·';A»oœ%€Mohe7jº‚=¤Ö&­	J1Ð7:h PÔ•.Ã#¢5íÐ1ÎÕ_TW«šÕ‡_`âÃRr“×RA£W¸ÔAYÖâ*‡çÆø°?DGƒu3uµgØVzû´ UÒŸ1¦t:ðÖ‡|‘ C(+ûlòGìwU!¢‰k‚G‚d8ž¾à“bÝRˆò`4"çádôq?8Õª!$ù{ql1<¸“½ÑØì"= (]/lKC2yÓ^Âæ),˜`¶\ïGcK1;@²Ð©•ª½Ñ+Cù~özCH×À{Û%!tË?LßÎ™1ªù«Ø0°@X"¼lî<Ý!‘º¿4Of§åÞÂ=<Þ?Í]**½Päß&ÊK-ž/Mm¦Àâx§K¡Å 9•žÊ¢?WŒ¹a°I¬aJé4`??qÁÇ©ß‡=ñÎ¹‹ÙœqÉnVÖã1ÓdpÄy`ð_†Ãš³m|•F“mËŒ£ˆC©¸ô–{ÊÿA‘< w+þGË˜§Z³­99j]Ù¢'*‡»\«ÎÐy.‡—a:)§WMÚLEÜ˜¤•x»*ÉQš"ê$£aO¼LîãÑ³ £T/‘7Ñ†›$ã¶ø¦†×£¨`C¨ÛÖÉpÖú«6ç ’Û‹QÓD’·Rf[è¸Ò«ºö ù,¢šçÃË	ÞH ~¯:zÈ×È:(…zt	Þ§@ &xÆì{¹]tõÕ‹Á[2¹¹CØ»[“œÂ{¬¿É±¡l©„Â1WÏO*JñNá¥*eÖØæ·¢&xFÊg
Óìh.t“7tW¢D²Ðým¾5&,_ˆ°ò
^<†¹VÂÞêöWA39Ä‡¨¢£\³îŽöpbD4j—Y½FžaðK—þŸ,‰;I÷PÃ´{UŸ?XÂ¾ñŸ+¼cå„éÃ¯iH‘mtÒC$ØÎË±pCg¢LºJÚùÛ6Åûà0v–ÈØ€Jâ~’6õÅå\ÓÁ°w:áH:GÀú›‡YÑÕ)n´£EC7V’cáÏÆ.¾PÛ!ïÖñø½îÎ 0nN¯Û^õ:œ;&ƒŒß©åEk]0R¿·íHº,bãŒµ!¼3ã&T„M¨
þêÜ¯
¹O1÷•¾}FYh§4Œ¬G6×äõó±üýíudÛ*x«à´³œ'#9PY*&‰ áƒõ”:a–¸;FëYb¨XÙ!€6äQ]IÖåÏÝ‡»é\8LD%Dç!—;œ¸þän4¡y(£¡¦…¡a°wŽDúQxêÇLÒS1â6á!nb1!å?*¨…†è=4d_ø•Û:%a¡š.¾ä¨`_5Il°˜—ëq	!öPà®˜@¯`Ëã‰eD+KdëF[†6¤ð.î¬„­KU¡,òÓ‹R]œ”uÎôŸ¢8˜ØR°åbªœy”9 l;§’åkÄeP!ºüpk‹…[È9åA²è6H©«ÏÜ‘x8¤Z>öNim7_#ýóâ¦n*§n†pÉ’¹Ò=>ÙK‰¡æ<çŽí½ÅKÓ3ýºÑ3}:§#4qm	œ;ªæZžÕœƒ\RKK¹iH)þú3$çŸ!9ÿÉyÇœ8ËºKz•*§·­½³ ŠÎéÞñ»VçýÞxƒwW–œÊ¢[9ûƒî;JzÙ×ŽJHd.ÇE‰”­+JW(Tö¿R‡àw2”wd½{¿Øh(šº%&Ýä T'Iš	Î‘ G~ckÅ$Ï‹ëæ6Ü·¶ZrL÷\F”Ò!o<qÍ&¾#®„Êaw-:#–Ùc7†8£­šeÒX$ÁÑÂY…ÅÄJ1ðéƒ%Á9Óù‚à‚ùè±H”Ú#àñLoæ´|ùmî¸zåÖèr!¯ Àêº<esU‘ˆ©œK¤["IÊ!T* uz¼ùv–œÔ (nÁì$òf2wNrð»ÈlO©gRU"Ch¸…ùÉØ‡ÙVzÇ”ï›ìXhÒVŸ£XÐr/”Þ\äw×uÍ†qv 0æê>Ì ¶½ùTN9£k¹«ÖXúùó=¤kX„(õ£µ°¤Áœ/@Ñ‰IXŠj®!ã V\Ñ°Êk Ì/ Ú›à¶^Åº‚DÏ"ÒD_iÎN¶&AŒ9]!Âoö'z‘“2—áÆ°,ïƒåºCüéÆð›º1üG°:ú Uå~T¹(ûJm _‚ôR­÷ÌdÕZóJF§¶^¬„^Žþy	ŒÎ]Ê–²ªNö]i„]ÅmX&ÃóäÄQFšqfˆŽÉžf3C2ü|±z¹”‚_èui	ßò¹¥½»ìWä“P(ZßOZ÷û¡øRÙ?8•]ñô¿UÒS›‰¯i6:m¡8$®h”•¦â<Í+§%tp¹ÙRül¹=øº”‘•çiO‡AMn~ñÿ€8¢þóë³¦ÁÁ”UGý²—G&ºòßÜVç\)NÿŽÝÿÃÌ~eùŸümÎé+ÝÐ¼{g{öá?[s§¢ÏAì­rÑ—¸´Ø§Ú‘•üiÍÒúåkùu¹gáÀò|Ñ‚9ÞOR°“¯ŠeÌÇE1"TOQ"@[§jÃÄÌ`1ñ:\ª7¡O(þ/æ{Ísp*#Eì|¿½½©Næ«ƒF=a¢8ªe§0¬åw\ˆ‡¹Çè¦ß÷‚tíø‰wÈ.¨XVvAÝ Ÿ]PøÔã{ZÁ´h ¨ÀÝÏ,å:ÿ®ÆŒŒdÑ\÷„/GÄ2ªÞ÷–Æ	&ˆî_ß¡çÖÂÈNeÍÈ¦côQ\õ‰- me Áf³Ûð‚¥þ¸0…ŽvWlËÕÕtíÊ#÷šŸþõÍeÝÃ\ÜqáÖ
”EE¹žb¡»‘åjÛ¡DÇQ®âðÄû?0Ê½ÅF'Ìäêÿõ©ÄÙºTÍT¸/TMèl<½š.ÀÓèþ÷5ñ´­Ê>ÀhêK²ÞçrÝ[›¦$£iÅ?‡~¥¦ÔêÑÏ+*—UàîÄJöbŽÃ]$©”ˆM!±çá	<nˆcìŒz;Ñ^…¯„Yòž©yFKo¿:Ç•&¨¢9R„tžeG‰ÈÎñ¦ît³_Ä2Îsõ0f±`·á»úÉ(ˆâ%œh1ï‰> æ½ª3O"w™øÿŠòá¯ÕG˜¨<¾\¤àèÊºœ]P=Þ£¼ÜAXäÚ+öñ¿³¼mjûs/&Ô;ug¾è…žeðY”ú²0ÅXÌ§<2SË¹®m^”¦Nêiìe ÍPÛÁt¨]qV½b”hÝÑâyîKÚ£ºO!•mW{Sß…7W  €G¿f¤¸éc!Lã,:9í’ÌâG_+=Í_X—8ÔØÁv3_‘³B³]h¸÷Ð	®Èp0 ^Iï¼ØÁGÓ†ëÅt^UMÝ¢.£óÞRPêû*„*Lõ‰ûŠþÅ—)ÞçsQ&PzîÜh„$ÓJj´¸U–€Ók¼_`¼_lÝ¾Æˆ™©"'ÿ“JC…Ø„Zb{S¼Oúp®1¦üÛax!~fÉ=\¥5C'ÄÎóã4­=Ý{ˆÂÖXk…P³ïÍÔ4ñly¯	'„
ÅI<ŒbTp2ÐoÜÑ°¼©œ¸€ir‰Ñ°¢¦˜TKµýã³£‚<Ké„Ý{åBœÝŒÃÚéY}Gü´ÕØþEwëbG|ú¿f†êý6¾?4ïs™£zÔü¥©ªííSÃÛo/ûÅnäƒ\mµ˜êÛ7ð­­§/—F}|é|äQßþæV¤åÍ©ñSÒßOG]æÉ¬…Ó3ªŸÖ+ð"'Hâ¬ÓsSC+BCjrÁbíõ}:À5´½|&&ßPÏüŽÓ¹b!³ã7éËaCÄè¯wï3Õ,S­X’IÐS?ßJ*þM"†¿&ïÛ
RÕ°qJ¥y ½wîÌÞl›.˜:u@±çíA›³Â¾,8¹uòMªÒ¦ÒÖÊ—ränÊ—1Ež?=+Ã(%håŸ6u‡N×YÌf*GAõña¬«£®¬Áyz_ßyø—k"|<’®22—/"å8‹&Naù‚­¤	Õ(Ð}¨¬ŠñøAN´,“ƒ&µjïÛ)þŠ–ƒßìˆ90n•‹»ÈµÏt¦°‚ƒ ÷²Á†S­ÞÊq•þ"")ÏîQ°5w‰~–æ€ÎqµñN¾”%k)xj^ª	áÖV€ÂÍYŽ^R CÜs»Úºuþru¿VjTþ¾´ýy–×ÉzŸN|œECñkË}Xˆ4ÑŠYÄU³)6È²¤Qæ·`mJ­¡A+Tù‚Ò“^…¤¤4áj`°eãap“ãV§£Žr‹A£é®zÉ§‚‚®çL±îÒJÀ¬wY×rP£ßš‰ÝVýÈ¶ÃóyÁ[ÝÀ»½ÓÓ½ÉÓ­&—¡ù~`öÌ¾«ö’†de·ôêŸ?‰äœÎÿyÌØ‘ÄÁÐok:jÊ¹“³z¨Û2‹‚C²ÿ‹o$PwtkUŠÕGq7ÿ¦‰°5ìšÔü”H{ž¬¡IÌ^áÕ)A6çÌ)Eu²ës{qú(p'N3â2X€|J®y­ºÞðò¨¨Ù”’É"ê¡—(æK&žå„d¶ B~žfz«zE$¡0°Va8èLB™Ú5"ÓÑA%¸ýb–êt:ž˜”ðX«‰µL¢vÔÕÉáÃÈ±¡ •Û«³Ü'°Ý Åg§>9Ï†a8¶Æâ¨y½8W›j…ów`­šú¬Ž /×j.“^‹-¿÷« šX‘/ê\V±ˆl6ŽâŸ~A\þ¨	îÑÏ?ãÅÿ<y$¾ìúDUvYü?oÅ³ãÎKzÙ”ž³!Æü€\ª‰iì“¦¨¼àíÃw°¾ooë·ˆ˜­%øò¤¦X|¶â;—Ÿ‡#Á”ŠK¨7žÖ°¥Í°ŸM&u±!^l‰'b{kK<†Ÿ8t‹ßÃF¡”•œCà¤˜1‡!Âàææ¦Ä@WÑ05Œ°äê!~Nz¸¹‘=ìáŸõ>\Ãµ}"ž	²‹ïj$Šç¿4Äó¿‰¦ú,£PÌ•Á`8Í.pY0W²Áz>,oÛ7‡ì„q’løƒ¶	ÌÂGÍjˆ÷>9ÊkHú´Ê‹G¹Ü´ê¢’Y7hIW™£*’È:ûHI<~Œ ùš ±ìÂ1Ùqšœ§aÆºî‡
	RŒdL'6– ‰²{Âwât	ß4›Nyb1³ËØhüí–MíÿuKí3€w¤“Ñ–uñ-ìyÉBç&«gÚM“Ïa¬ú³1
,¯³¯LoxNœ¯Ô”ArÄï:™·rÈ>è&i’³p©+7œì˜Rñp½“žŠâvÐÆ¼Ûû½7'§gŽq­U+÷ppx°ËÉ‹\Æå©ý¼®f!2—däç=ÚÍqïÑŠ¥Œ?¹U„0ç4”¶"À}½<p—€©e4³•¯Èr åA™1š>B³¹°éHJ¦ÜzNšt¯Q®Æýˆ8A/XZ,»/§ßE@²g¸È MQ×‹ùè½þ„HÔ²ý8dŽAª|nxv™‹Ä$€ã†lHá©-Ø16*Ar}oš¦h€Ô‹P	„Ò%Ú“ … sédŽ*OM•ðz‚«˜)U+4µdgvåÁ… ƒU¼º¸¿òˆ‹q¹‘Øjë&UMDq”]T¸n-‡ŒY€U´nG0S„÷dv7%€u€TÀSû'­Îi«Ý:ýÔ: ØÍcÓ”‰ÙÎÕa×°¥÷ ‰Âq¦Ú€1[ÁhÜ#à)ZqôNP›GWªüd¾àÓ½ÖJ÷IÄ¡dÑe>àñ„ªbF¼A ÷czI§qÌœNÝâþ­Æ¨¶ÉKá‰',ÝÙƒTiÎã¡âuÜÁÉ—\©œÁÜÑŠ‰~*Úé‰ðê¨ªpK;%¥¢Ë)]>¤ÄJY¾ÄÜÔíŸ]1*ƒ²Ö[?œÁ™„ÃawÐRÂgRH¡cÌÜÍ·¿óß&‚UÝðªŒÈ\«”®N°þvl›cePý¿bmÚÙ)ÜçŒˆ,n”pÐÙ×H•J¼›ÞBÄ¡Š^ç´ü‚Ê)Ë:UêßápúXÖ­˜µžÙVÕUÖ[ÏnëŒÖÁ²?h†y.˜ú éÆlÙ#€'T&	XÙpt²;Ê‹Ó{º¥k]EðÎ®W`ËÈS™{1`¼\±æ<Ë€<o«I…NÞáù{¿÷ÒV@‹íågMaV:/¶X£BNÃz\ª`Ù	kÏV×ˆ¼XHöù˜¤be¸‹µ°¬tò¶·xKªÚ-ÏÓ¥ªÅ6ì>Ç¸RR\Fê¢“®Ñ1–ëàQÜ€ÿÐV¦llt§ƒ†`g¾é”Db`†:â‰l‹Pó5E§†±^{ðþ|rQ£‚fl´Í×½þÕö¶\ýu·-ìâÉ Û°÷™0¿æ¾K²‰åÌ)6žhÈ²»Ðì…ãÂÓw'€Xâ×L÷bÃ×qðÎ ·_XìuÛo>tZŸZÇgm&þ~Sxf(É LLŽ5Ž_e©o¿¥Ží„Í× CØé³¢an9£Ô+Hã€%L“)'àè¦cêiÚÉøW¶ª¹-`Ö‚ºxâÚÕÄc|¹á¾TBŠg¢#@*°ÊÕmMq“2#@¼|Ï°·%‹0ïhe‹òîšIw Ñcà¸|8Ôá7;%â–é·Ž)ÅÂµ~ïæÚT«>«gý+ÒÜRJpœíì
ª¥“¸Srƒ.DÃI˜"ÆgÎg„éìü™üNO†÷®uÆ?ÚûH½ÛÿhøU¿jñ‹è®ö‘‹Å˜‡©ùX‘–ÐF$Ûó˜Ñ‰Äe°–ZÑ+ü*?A…¿5ß¤’AÜŒá´à´`°wö±Ý9ûñCóf˜@mŽ°õÀ½3-~ýU<À¸’3U“ÓÜyø—­kQ{
äƒ¦ðK7\:H`4Rƒ†þ.ž‹4Þ¸ïí4õi’ Å\Ps+Ôs5 ÎÃÞÄ« /ëÊOúÞÞ‚Î_ÚU«%vZ˜Ë#ÍØW©Ù5Á/ïp¦R¥ËÑScÛ›UÃ%î‚ÛÆVÄ¨c	xþoë2TÞÊ~v9_O©"ÊC‚Î(TOVã§AœŒE'…#Â¶Žê@¼Vy¹«Z(iâ¸Í˜·Z2-½¤Áu–YôK%_ÒÉ!>çåO{“FÙBÈÚ®ýFý‚vTnï6‚ýˆ¥vU†Ø>Áúû•lˆ_Kêª:æd:×L{™aõ¸/iuF<µN ²®aÜ Ò>Èvß [Þ–úB9’êÖ±îê6Q4ð—–Ka(Y
«^á§<ì^YKïW	ôqj½àçØ¾ÞhÌ‡B¾¯Ô¢uš ˜<ªòˆJoy^Õo9±ùYàl~³áÉrAˆä_*:
®‰•ÛÞÚ²_#Ùà6€
)îzÔgëN”ÆÂ¨/ë,…ËÎÐÀ.eaw<Ïfüy,(d/²Øµ(÷yWD Î©ÚðôøqCÏúñc´6sL«Vx*ôÙW.OþŠ‡TBê[&Q<¥43i7U½%NÍõv;­°«6¸WâPCòw“øhû|DÝ»<ìáz	*‚åu1<À­V²¤Ã9íbi”ß±¨Š1è+m6ˆEäŽˆ&ãÒ˜ÛÆ•mSœÕRi˜LÇênÏÝ¾T2*Ýõ|Ë´$×lW„AïBáš–d‹ýQŒ‰C(FÊ(Ií%‚.‰Ž‚ÀK©'áEp%©š\ÙMÑ²;#Cõ VB[Fw6å´ù&f¶£“°øÁeÈ×pZÒ¦¼)ñâ´j/R·iLáˆ×aà}½™9›â@ê>‰ãU-àjúZ°ctÒdlíoŠYh·†r­¼ÐC…ô°Õó)]ì `ª•YqÀD·¦ké]óË3¹]ûi«ù¬ñò—µ|Oäê>ÁQöŸèkÁO$>Ì¹Í“ŽÀêÑË¯’´/¶·çXfÍ3³l~í°M;•øm–¦Úû\
Ô[¾P\¡]KÜi¶·îrµˆµÁrì&Hû@)bmÿybÓ-’¯Í“†ÖÈµ€;z8tò½Tæ—´	Kª•ÊC­ÚÖ¢ÿC¦
%–[&ms"¥É+Z¸MÅ7´HIbÆMÏ3r§–'N5Ï2_ÉÍŒËZ¿›ˆmÄ]`-2‡t¸Ñ,„±"z:¡Ö—œ0E{#Oß:>9;ûQ~YJ.•‚ ðd•_ñ‡'<·%3{|îkñM™§nLÆ	8¤HxÄôXE‘Pê
Ãˆ_10.ªWXÐùöÓYÝËøXœ Nõ¬Ü¾Ö@¶KÇPÄ2›,0³¢«Ûžlˆ³4ˆ³18ÀHô.¦ñgdQ:º
˜p7*&òlEõß~'¾Y‚¶<Û§2fTs6Ë°Î_wÉÕ^Æ— …¼¬ä Ð«l:ìc[À:ìo®¢"ÚVB^uúÉUŒ÷.:´3KD9–Ø¡¸T›J–Ðq²‡¯„ó¦ððìiã‹0Ä«U\}¡r$Æ)‡ù­÷ÕI.S‹¯tzù¨Ã†ZTž)q_Ý0¢Ê†–bŠÜ±\væºŽ¾U¤–bG¯"òû ‰>Üzyý„ÿ o5¡{‰[äœ®Yü±œ¯^ä²ë5ôBßßÄù±^¤u·wc1¥;·ŽdÛ¬¹Mò}í·ÙÈ»yÉH–˜Dn\k@‚ÖÑ+`%žÄ"¯ËKÑ>âªË{ˆÒÛôÉÃi]éhWÔ2O<Z}§*Ï´i­««‘÷DaãùÌ&~?š0d¡zlj’Î ¢$rIÈÄA"Žs>3à©7(Èæ£áô f4”¤`\qdiDHØ4;¡½*QQ”V%æžë®kÁñàø”¯ýÐ|@ŒXK.Ãô*&rpôØß6 y%îÑ¯4YèáMEpªÚ˜Ø:¥<IüñJ,srÚ’APA&]gÿ¬³ÿþ ÓþÐÚ?|{¸_ZÇ®Ò9ùÔ:=Úûðáðø'7>J8úõuõ ”¼
¥t-—ý¨ê‚Ã¡ˆCX¸ þ\Q0	úì!±š„¼„1lÐƒ4É[¾ÒãÏ¦¨ñVô“0CØ7WÿøG"ti°ú åÔ+øí%vG‡ÈÀ^åÜ=È]A¡”;—ƒ«¦Ar&±:¤†TçÔÅ†f¹]F©º£YŒíûX~íDn²bÀ`3ñò$ïwÉOh‡·¶pM&pbÃk Œ‚5ãHG§ˆzx†hs³`KÈJÎMÙO»=â§ÜÔNs4¼ï	žþg
´¯Kªˆp4&9u3 J5²+v_ºaÿø”=š†ÑçpHŠÚ‡îtÂ©)õd€{¹Ž&Èr\PQÎÅÆXJµÊÜ¥vX} Ë8ª8ëör_ž½ÓBÂ÷ç×¶ŸŒoÈÅàsŒ^ïvN³`Ñ-òZƒØ×'‘’¦$´OÇèƒZ(åÛÖŠ€ò=ãÚäöèÖ ÙŒžbÃ0±CÜ1bX¨ŽíŽTã°k>!:ÚÁt’`Ü“ûÓõ.§íšø:t"àÊÓxH×¡®(âÙxˆ{ÙKx5JQåA‘MñžDÙ´;ÐÖê3¾â Ã`ä.×>CÈ@gÔ˜f¶×aàá‰¬ÚÆ¦²ý•ÿï4œb'rëÝóÔ>£ÏŸZŠj /\5Y”tZ\ëž¬b0å]Œ|“ùÌÁ¤eÒ=èúžº‹BF‹	åõNÃN«;Œ`•üòrïP¿ƒ{F¾»¤RxN9nù55†ÇœÃhÁ‚Õ½*å×¶h-Ft-FXÉçÅÙƒh†ª‰Ðó ¯ä%Y­ÈºÚRÇì¢bµ/¦ç~ÃîµÓòhùƒ+D&|‡7À<ñ*j×Fµú…Y†™îŽ ê¬û.Òn«wÏ·þöÂb›å[ÖnéÍÂV‹9»0gXýÃ#Tx]ÙZ£íº2o¾r«k=ºVuðµz‹¿½Z<ÃÌ8IJð4Š§ÁÑ€GwQÆªžán„†M¯¦¡lè–©s«˜µjØLÕ}+| SjO:§'ÇG?b=³âÛo_‰§Ê™’ê•Çé|DÈCGØ²pñËC¢†h§ê¶<zç,ýˆtÅÈ#ƒEÍº…EÕý*ÌìœôJE¥¥‘¾gYwã0jÀkêúç=«£1Z¿¢‹(%«r(3Xpç!Gã<¹b
KL›leæÜí*í#g}Æ“çªî{·xîzó¼h ÄÑHñÊùàjzÎ÷‡aéÜ7×öz13"ÔC"/ÞXŸLÝUìËªë¥C%ÒWåfà´ë-à·â»ïZ÷‡Çd›&$e;š.âP{+ˆhÝö¯UÅ«
K5+—µ÷ª8n‡¿Õ¨VP.UlPqZ«eì[W]×E­ŠËP¨Gúbça†ÿ×ŠÂ²£ICD÷96yõßFf\ÿvW8£šÁÎèõ tl²rK«f	Âùd:qÐ³UÒB¶öI°Xt9t9©Ç¯t£Ö¦/;DBfÏŒ”*ÅW-_Úcq.	ù¸sZ6­[]Ë^]ÅØY•fwtFQ0!¡Í"(Æ:YzºƒC·Î®FKeñ¢¬® bÛ/3N$ôšvÌÜºþfÀ°ßF]+Þ~ß9nµÚý“ãOtñlgU«0Å%b"/ˆå+¬Ûþø¦ýc;_ùì&±°¼j®J+næÉ±Ú…€ŽaÖv]÷2âû`}P<ÀËYlFíŒ¦Åîe2ÔÉ¬°$‹…qÿñºÁª„t2Åë×â¯ÒIÝ¬‡òö‘Rö<iÍºðE ²UqhÙJbÏ‚uÅe4#±C˜¼WÂÝGSÅ©õ€E©½ÿxPŸÈ­UÙG<o8éh¦ç©ÚÔm`VC.† zQ˜yjŸ LH¢Ž8*'	Ò,'kÄ;É ®e x… ùŠþ”}áÓO;6jRß,°cx·âþ81­ùC†ýÙþ;–‚qûÿ¢ l+ÖòîÞj“ïQùñ)LQCQ$~ó¼õd×x,¤4Tºl6L&›êzg”qÔ.G1Ám°Ä>€	'Wöš)Ýc4±'{é¢eÙÔ¨P' «ø(ì]$°»¯ÅÀjOzÃ ËžàÑ¡ÿüð„Ñ±YÝG›²Vœ¡º†JáH-íÁM2ešR5ô•Æ”ZË)pÒÒä›_vÜÅ æV®Š(:N7·uýÊÒÝ1{µP¼óáƒ¨öqi ŠB,;êãÔ•Éà‹— üå
ÎqwÕ„—1bèÇ:SâÆìHàÐ€~Äæ
.2 )–D'¼Â7ø7à×·áø†W¹ô^y·®}-ð¾Á¿_/ÆBÕl£;sLí¸óÊ’º3	œÐ‰(æÈ(Ïó¯þ:cP\Ò–\ê…Fçà5^tªì0w>ì¾iÛæ¯=s«¤»‹[	ÚU¬„MêM”uBÿò5ÁÚê’C¨K§¤.Ž}ÓU”˜u¸âü,6÷@‹æŒl`£Ôp
-’$Ž ’¾×¥†Am$â‚¥VB’í'ŽÛløÊ\Œøœ÷,îÚŠŠÀâŒ¦~>E¤3£ŽôšºlÁ>ZÞrÎùŠˆaI^äì7|¹F…õâžSBšƒÔø¤–<ÃkQDµFKŽ°\@‚ÕWNIÚ%Û–,ªsV²/ÍcÍûâ\ ñŸyžÅŸµô,ü¬e÷Eâ"Î­•›ànž´|È;u¯$ ýLûF˜žÎe˜+vtý-s8ùËd¹új\Wß+íÕW e$ÐF7Þ¤Æw8©¼zIŽ"â­µSò¦“¥P{™ksæ±ÅaçkCŒ“íèw2Nx&´‘ÚÓyvlñíŠ	÷‚ed¾¬Ø2èÀÚ3íbšýöÌ,Ñ‚[v¬ƒò
¬Ýj‡¤ëqÝ¨IisÂ×©_Š¤ŸêR€ðUHFÃ1r"xé*¯¡ëFsDCŒÚØ ª¨!ù;ýÚjaƒ3f_öŽÏÿI?ööaá8<ë¼Ý;<úxÚªè‡¬ÝMJÚ×Ó 3}£;ûffgÀÂ‚vt²ÿNët¯=»Gmâ¾CèôõýéáÙìÞzéÍx’Üy‚û§?~8;qgÈ;ì:”Éß¾{:ú–‚LÂA°ÈZç”IPd¡-tëVé«uOª­œÞ$NàÀ“u¨£ªclPæ=LÐkE¶“«ŸDãîXW=Ñ~ ü…)ž	TE7œ\…°ã Ë
n%Wø¡ |cŸÆyO0%öŠkì¡KLcÀ“4"¢ž:ž´¼¾ˆ6I×o«Â’Ùx‰¨…ÞUòˆâå¬°!žÂkÇÉi0	àâ™~­Á¾²¹zÉÐÉ…sS¿La‘
§NKW•bÓ\ì&\ÄsR×­óÊ"rÄ0¾«^Ñjï…þˆËŒì Â]ì®j·ýL“éÔ¹¬D¯¸¯¨ws	»wKð,?f¨D£X™KMÅ®qÒ”Bå“NlÆ	Þ=žï]ßÒ¾ôZ¾5GÃÓbñsÙêøµôô0ÂëÄ8—LµÚlj‚`é“a2äZx‰«j¿ç×Ö±ðÝShÕ µ›	¿–ƒ6 üõ4q4`Û¨ì’kk~ë²¬o[-V4)3¡ißÒ$Tâª‚92:GiMç(kÓ/Þ•|nÉó¥ž rêÍy2¸×‚ú™ƒ_qCn"¼*ÙÜœº2nÍ„ŸßJüüð³	ÞêºàÂÕ—¹Gîíƒ;x>©È»ýµlÄ'ßØk·ÑôŽ®¦)Ýºýi«¹ý×_°ÑœxýËå#œ£è<Î^Gb5Ý¹Í:¡%¡“Ê¢ŠYÙå‘µ	€Fr.•°§CQ2fúÓtqÉ»ÄÃÂg«%f|Å­=[ïnÊ,áDU]Ls[\ïNJ'}mrœâµÌßF*z÷È˜wãnjiG9¶Ðt¤šï¸„ÏùÞú®Žß»$iobï±ùbcß±òËä¼€ìHi•2X´Ù _...=i‡`:ó§­wý½»ÊÇû[ûýû7íîæcW[ku“õjXW1’©¢ðØÊ&­è¿œ×öðÅÏ,b·æ^¡*dAË^¨¾wË%.x	B$fe…f ïuºAŸÊPÞ¬U#vü4Ëýý¬<ÖÔ¢¬óây7Â8ZçrãÕ7jx«ñÅóÎDlÔXÄcåg+^iÈU×aÐçê¥5«	º9gÏ=¤¼b(‚O`‡É¤#­ÀË£ƒð¹oŒŒ2Œ¶ÁO“dÃJµø˜÷ó1j1àÜ…Žñ¤4/PE˜O$³ ‚¼øé¯ÛOÑGŽÞr"	úBQ­¥í1û¥VÞz…"%Ïb¹ùØ¸ÎJ†u „‡Ùö@_J¼µfB¼Ðàº³›l Ls”B«&¬®*÷ßóÂwÅÎµR¬æRÆ¹)ƒÑ1Ùö91B_á'·µmri	6çpÅ¼ãÌ›uìÏ:0Pzdã\Í=Ú®ÕäGÝwåMPv^†ÃÚVƒE°ºxýJ`ôáƒÖ›ïÊµç3Ñ8	­K Æ½H¨Y4¤/6»f[Û
.[âå:J$‡\#JíÓüpzrˆ|ï !Þï}è´¿Û;mÁo¤k[jöºWTùT•®`îÅ(XŠöA‡†6E@òAÎañn`­Äç0Ã¡ÌöOŽß¾d"Ý!ð¦-@Àïÿ®“	¬®XKb­“ô¶$ƒ–\E}h=årÜ§V:ègäÓ„]*ï€X)Ï² ôxdDp€0¨¹Æ¢$&MI¨¼ Xç_‘¼<»îÔ	çŒÀ"l“x{›€âì™tÓ¨—YöämsN®V¾ìžÎRVßG‚êâDÓËÉ3ý»	]’Úd…PR}÷ë„Ÿ'ïôŠä¿]nI³êÍ0âÅücÄ±q­¸*’k©V¬¬@gÏ\BMF–‘Æ95&âÜe+Ø8-¿-ašFÓ‰ÕwhÁGs‹rN°Õt©ÉáªÈRG¢-ôŠE‰‡Š¡~Z¼¥ÕÛTAÉ™Žäe
¤6À4Yª>ˆF¯¶®î}jÃß—±¿·ŸÃö¾Ú†9·Û§ðóiî¥¹{)É·è¶f¨¬WCžeë†çªò¬´¤ÑJ<
ý;‹¢O-Ò5·ï‚2n–^,½$ø»Å•Z%AW«D ‹,ž ¹Ø}°Rz¿M~#³áÖ¶¬‹ñóJñžÊ©X„Ïù¹Ì%H—;ÙÜÜ%²NtÊÃ†AžŸ( En»J“å7íÇÞ¼“Õ×AÌßs$‡¥bærü91Q$-ÃœJßBUøÁ«!³í Z)çO@’ø¤pë\¨QcF> òq!l˜GƒúãòÔqš&qƒ*/Íš3	d*úâËÂ¨Ù×Ç¨f'@ª³UûÙ-ñlvg<«|M½–¶žªÄ—òzØ_d¨oi$:UL´öX³n¿b–¢Î}òÊR¶DžØd¨•QQø’&mSìcPtÓ  4Ò	:4UkÓ°4×¤¯T˜r õÃaˆÁSèmL.èeü9¤àczêîöü¡àiÆÊ!‘÷èÍÞ[ëÑI¯›ÉHƒxZ/n2¼Ð%]QxÊ9G—a7À[àkÐ¨RlèÈ,åÑU2ÎØöÓVóé/;˜©M¬…þ+ãHîÅ»P ²x¡îy Z…œˆðid“'ƒ(…z/9’£Q8	pÁòÊ6Ÿ´	@üäïlóŸ§üç™ßÈ(³¦3îÊ5ÀFò7»ø®ú9÷åLl‹–KÇ(v\L‡%J§.bÀ*§!Ä~¹à7ÙIPŠãPü¼v(ð¯¸Â°‡F¢Ÿ`ÆÐ5‚á8|ŽÆLV±G\y7.0@>]ú8±¯Žòn÷–O/a/à°KRÑýiR:&…ŠK-˜ÿÞJô-_¼\Á~ôCÆùôè÷8²~õï‘ñZ¢ÓO´¸²Ø‹ç+Ýl&‡RÙ—[ø^â Éó-Œ«¶Ùr_Göo+žóÈ*DƒuœhÄî«n6ŸƒSa”åyrçB,sKrÖÚoh¢Z’ä{ùä¹:áêØttˆeü`ÞãS.²sfUt;gN‚äÌ«8ŽÜˆÐÚ7kÙïÇQ®žJÚŠ¤Ù‘¤áÉ«8ÊÜGªâÈ¨ùáwhÛ-‰>Õá£C[ §'¯*‡Ýë–ŠK”uEþ£'ãöñíÛÃjkìLH¨a_¤tFÛÍ*xbÏïµvKçnd¨;áuo8Í€°ÖzFvS79Þ|lÿXf}ñÂÿ<Ì6µ±	­x pü—?a"Ô¸ÿK½Ä c|É£LE§Çè|ÓìFßû0y­xÔ«Õ±)èáýŸšMúñ‹LÇjEÄÈÀºÛêlm™.Âá¸æ®¾ÉôLëî„è!$þ@&Ó“Ù}V=xUÌÛb&h¼sÎ´èx7™\0Û‚<Û¢rmŠ43†ÈM©è{I<Äÿ„·’gº™Ù|ù«ý?ùSîQØ»l±uRM„åÁe>{íÃé!Š5`”•J4ãä*älW‰!í<PW½,à;å9UÅFrNÀ]##•ºñÉ˜q k»M1X·U8™UŠ;ùöxOt#yH\Q"¶wˆ[¶xÔÍÍM‘]œ–—¡tŠ&E ”ÅP–[³uPEÅ Õ17c³ŸuŠßX<9s2ê2Ôªæñ¼q™ÐªsÄY·Å³\Ôø"ÛÈí£Í/#¤|¥ƒc~º¯JdXçœ›5><€QÑ7u’­dÑäü —<EaF<jÆ„Xøß#YÕóÀ…2D«&ƒÌâî§¹9>ðö´:Yl"È{<ÒzœÙûæf°v±âHêçØHÇ—7)]
4å©¸¥û¥<VŒTÐ AÈP]€„¡Å°µ8Û¤×°šñ7w¼]4«cmq.,¨ÿ.?ŽÔzÙþxt„Ù[¡ø)úe³ŸžQ(ÂAs‚%S¥¹Wf­W4“y´œÛÈ<ç/jŸLYÕ­xu%i&:ÖK€Âgã„å)X;ÖXdBS	vrÁô±š,XtÁ&%~`I]öl!±çI8V?Â"Ã³ïyRS–\B–¨XkQõ†+T’w=vðªoÉ“ùdYt % ÒS–âLQo8æ`’^i£ŒèFÃhrc'+F~žP:9““æ"[œã É¼/žÍèËÙÉƒ²`o°D³':ŽìŽ@Š¹E7Ã9¢v@)·£ù³„èžFÙœmÍ¿K«>»]ÜÏÉ”BãsìoCƒf–ø+þåÚ,7´=P€îÓS‡Öˆ¿‹µþ5T®¾&vÄÚšñÐ“ŽVC ûKö§°<ÂŠÈò÷{§Ç‡ÇïvÄ[žÆdŠ g\&_èFi ‰”²Bó‡¥ß”–|ZŠI¿ÌÛ~Æ1²0öÂ>ð}Í}R<q/rC2\C#ª™ÙÂÞ‰§F©8á1œGMÔ³aŽkÛ[E3å«‹ B²j ÄUšhƒn,*{‹;VNëÜ6Ó1žâWƒÖÕ>ƒ$þf¯ÝùîðÝw­SJÔ\ÇgÏ¥Piµ£“ïe-©2fŽQfiŽ¤ÞÂR)„¥jRZWGe«hVç¼Î`–±â2Cñ1ãª‹=B'ÍÙvý`!Ü%1ÖCc)ä¼é˜9áiZŸ:‡§­ý3%+ÙØ0=†ç‹2ÌÎ™B3|Ýbm¢H³+Pl:mµ÷÷Žë6ÃX°ŠZ[Á7ÞÝ›ú’äç¢§Ó|ÉÙì¤QÕ
ÌciqajÚÈŒéDÌ‡m`
C‹ñÁœˆ]¼Ì«²ªvo6€íPu”g:ÆiˆY6dR#d˜£¡ vª¼ôsí?£Î&#ƒüE Ù%W6ç¥jÈ|LÌ˜¡ËR7ìÑU2Ù…é‡®TyÙ`;ÎÂá€¤QÎÑDÝáJý¢¤ÄÒm}sô7í¶[gèù¦×tî½ÍS ¾yhñŽÖ.-¼á3}zúaïôl$—!+x×9n‰«æVÆ<§­.˜ÙÅ;r«+¶ãa0Û˜(ÿÂ^¢}vzvòñ¨³÷ñì¤Èº%œµ­º.J#ÛÚ;#ërûlïý‡ÎÁÞÙ^§}øO¨V{QÏ¹¤Ü"ƒë‚æÏ÷˜FôFªYdnO€¨s‚ª’¬Ä¬ÌñZœÓ•ë—dv-ÏéêgnÍ6õ'Å±#ëAê6ŒšÈ@ˆÃÀºÛ‡#8åA–%½ˆ¢D„IÒê}QçˆA¨˜‹ wZUµvÊžuaîU”\œ¤´eÉX‘ECñÐÊîºÉM uî¦eÅüNéáŠ³©„¬ÔºŽ2„+ÊMøI\ŒÔlú+lÎÜ8#=k…i˜ÜèÊ)“«p }’åd3œ	IåÓ ¼ÀZêžÃ¶h÷$ÕByï˜ó©=fzA‘6ÑŠžópÉ^£Òüž™L{ÖÊ±ª’Êâ­’œ7ô‚®SzêSèuyÿ‚œèúMûìàð˜2KŸ,h}¹b¥_U¦L}¹ŒëÑbè
&¯¢)¡’Êá™Ó#"gV¶”âìÞÊ8ZÕV{é”æ¢ÍeµÅÁ`™ö‡c[AïÅòYœYÖËt[–è¶ Í­²³i§3²îåÏøŸë~f’Ã>µƒNnØ§ú==Ug†-K[‘¶07nYjÜ\b\Ê™B–ÑW‡×ÀÝ5ï±˜g×Äý¶k£/|0ïñéÏ´¿‡´ÜQ&ê³t'_C¥Vú-sÏêI«ƒ oã£ülç¤…oç“‹§5g8.‹RÏ-Y`äÏÞžv¾;iGyÒÙ?;=²K9'°nû•ê—ZA;N²èº3
G°çp(ƒw1Ò©Yf‹")4!›G„R”wÜ`˜ò\À9¤Äè îåã€¶¼AX«¬3’(»£Ò:=j^>²,·”57ˆ£±ÉÛ>@¿±Ë]¾‚Œ ïÀ¥E>‹ð¿ ƒâ“Á„rÑ­¿çMrPãœoèðÇÕ¥ð:•Ã€ñaà€/’¾Ê/ÊÃ
¯{aØgå×e`pS;áá-œ--@(KˆÅ¢Iˆio,bo|Ã‹h“•J‰$çC@ÁO8\ÂÏZ£1ð²1î¶/ËúXîÛWUe.S>ñÒÿßÞ—6·q$‰~†~E‹–A™ ’Òj¥‘'hŠ3V×#)OøyhŠã4¨cÂûß7¯ªÊ:ºÑ ÎxÖŽ°ˆî®ÊÊÊºòªLI½Dm¤7¬”¡ÃKüâÄL79A^ôm2_¶M§\Òš‹¶•’2ˆÉÄ÷Ê´ ƒñôf¾Å¨nQ¿+Xø¹v8W‘‘šS¾Ö2CŠµøZ_9=¨Ú­ªH)=}ì‰M¼‰yÍl‹æçì‘nøÂÏæ­âSœG¿è1#æ–¼EbäÒÝšÚËúƒK½Û»ƒ@_ýGû¡ïŽoÐùùñkHn.µC¬ü6Y]ëèï/Î²§ÙÞNbô¥+Ùå‹ïSpÀªÞÿŒÆ†§ÙXƒžQÔNUƒ¥;WC1½fÊX~)èƒÑ#Ùõå÷°éŸuŸ=>…-CÖµÓ3/z&æ	ú7]ôf«¦²gPí971-f¿%
ûÔôËØ×‰[6'Ù1ÖEÇnô›Ñ¶“uÃÿï„3ÿ½Eñ‚®(!“ÙÌïûr*e*ãè>@²<ñµÛ›«WjßÒºì¢×òšôaQÌ”‚ìÜäì$£1Ú›ÑÅ|r9ÿd~ÙÝìÌ”>Í/s4ÙYö½™á.Œ¾jšÏP5ŽŒ¹Œ[8hè.#ÆäjM¢«£*‚ÊpzËs‰¸M: O†âÊÎòËÛ±NhÀ7l]JSfðÂró¡WŠY\@¢·G­ÒÙX?pà„î£L¯ÂÇ4VâŒ¥^VTš,äg^_uâ+9H/2.
íW~ib_v7ŠiažÐ!}¸¢.Ä×b`{îÃÕ4èžæÃúx‡šIq:zB÷UZ\'æÐ×6`ÇtÍ×øàÞãSäÝ}9Õ5§Î»ûrª}xrz•O¡ÓH°´Š >¨šð:²}?mçÈ®ý»³ùðÎnâJ*sÄË¶Z-øóßÞ`‚Ýæùl²´ï¬iëA¶¿Í×TsÖ»€ÚE‰ó#“ü˜÷Ÿ*òSîïHJ(Xc”û&zJ¨Pý,Ûfugb»úÖ_[¯J$¡¶¹`…{eäîË"D‘zÎ½v€8,#e“Á&ŽD:X˜XØ±à¤wÉa…’·Oý”±F¸µ²á&5° Jfèë	šÌ¾ÐIhÏ0É)ku,sßu(•YÔöNî³8µ˜ìÛo³œ³†áRÀMiˆ¼*"©ãßÙCÂ®Yý-PS,ÉÈ‡²_År’‰|–´«ÞcÉï«‚mK:•iéü
“™úRC'–iž.æˆ²›·9›ÚV\ƒJÓså>v¼ß},»>áì~îŽ6Ùn²œzK@eœV”äœ‹K²SÓpÙ|K»µBÎ¥rVÜðøFâÃ®úÜ^v$Lð™N¼êñãB5Ë“ó¬·ÉVùñ–{0['Çž^?OW`_Vi=ÁöúªJSw‹Ne8¶\9Ž©±·’äÊÜÙôáJÐ®Úÿ¶?(èG„4?„bê~‹ôb½WÂ,Z/ ?Šõ³½œ¡qaÁÒ+™Ú\Hìr‰`Ÿæê	¸ç>Ž†+ŠŽî#€54FÁtäÞfïS—£ºE¼ûR|x'm^$ì»í?úêñw„ÃÂ.æÛí„§SK+ð÷¥~Vçg`Ñ+5éÅF=æØ¡ó-$—­ÿÂÖÇ×Šƒ¦ç 6¯¥ áú_Ÿ[æ;¨=÷j3ÏmãØØ¶ÏlÛøZ·ÏÝOÝ‡ÔByc¡àkŸhøµà‘›ÚôEÕ¦ç5Å_êÚÝ'¼<ÚûÔâ9&µ÷8Ýìcœð9…D?Ú¦ZN t—e‰?¡-–Êl\$2ñöí„
Bî³kØÉOð‹Ÿ¼8~}~òÃÏÒÞ«KCÇ¡•Ï [·ûâÍÛãSìÒÉéS£ä»o'e©½ÕMæsæ2·2²¥ÛfÑ+óIÆÜížéî¶èÔ|¥&OwfYïiÖV˜ëC/L‰"²ß-¸´hQ)œ³óÓãÃWg«ŒT•¡9=~y|xfGûä˜ÆiÉÊ§ÇgoÞQB„uÑñ˜½Þ¨X«r3ÄxàYÊj¾	ñ¦,½æÈÖÈ”1r3¶È²Õm-‘ÆÕu9+d¬ˆlk0AVZ cdÂöhgã*bhÚúX)œZ¾ÌøæŽpÇs¼É=m‘´ÆÈ–1Ñ'ß2æDâƒêžñ8Š*0¶,:˜tø|õŸwÔ•z$ž
s§ÑÿââïÌ.Å*ÎJ±j1ûª]±Íí¾ÏÒ°emL™ËºP5.|{[Ùæb$0voÆ—0 ›“°ÑæD‘³wc¹wJžáæ °A©Ð	¿'"÷'¯1|8ùàbOÑ%29«jå+[J}|Ð $]jË	”|M‚’Ã­f¦QP]º{tuKÌ
¦ã4ªÒ5¢IÇY7® _=b
w!üÙÔ:ªžÁõt7ž”‘ßãï(„‚,k²ù¯^ô¬U<U^ØtôjDW<¤ÒWÕdv†ô1•:¤8{¡WyóŠÒÔ^æ«Io³'ËÖÖ÷>M"]Ì'³zn`<6~5Ë¯ìã(PÈ¯éàÊæL’#SR42¿‹aÝ¡úƒ(f–hv8R)³ÀœqkQ,E‡„ÞØ@¢÷8#È }4)’Œt†(Zy»ýTV˜tH£ÒÜßËZŒÅ¶?ä1ëI†{øÏØÃÈ'íº ÷|í2ˆOj@¬“ïíÉŽr
ˆ‘\„uI8Í'GÓplÐ‘ößã±ðíì3úÞS€¯|]9è5þ-¢R¦éŠ^IrQ ÉŒ‡ Na)R#œ :ðõk¼›-5àÕRü@5“òÿ©ç·áNv‘M Ÿ÷¬½áÅñá†5Ú1Qé9Ž¢½#4÷²â:³ƒßTtÿÈ­è.…¿à~A0‚’¾•û•¬Ùs˜/ìýãB(aUòdvwï(¾0î-Ì{<ÑOÅÊ„Ÿ¸ýA7¶6Âp±ÂIh†ƒŒ0Ýùœø.ú"œ&ƒy·G;²µàš¹š¸Ve-»{Ó)‘nÔ+~Þjl-•m«å—ã“Lb’Ktö EÃÙè$áQSÅûÊ”iè‘D•W‘&z«Ñ·dH¾dÚÜîŠëÃKž}¢ßxöx¼/»÷Ôf€³
&˜Í	N˜uì8 žËP¦/3á×à#¾
`ÈhÑˆnSyóƒ?z¯Ra[8gZ<gPDpîZáŒÚÉ¢WaÌKšf~UàKúê}äWÑèÁìlÁdÒæÍRØ"÷Ÿ¼
Fæ.iáŒ¶³ÊÓÔó]>êWiX¾ÃW/€¥?Ê«Ä¼¤¥¢€9ã“Çšyi_…WÛ ­9»£(^‘;YôêÎÜÒx‘Áú|åùÃ,¸Ÿe˜‰ßž{p€#ëØ<kÑ¬'÷bWQft_žª
ñ4NWúáÝ¡ªE«1]{U2&uºÚÙ¹©õ»g‡˜ú!ðk(mxº%"ÞÅs)‘´4¼]r&ªªÞu/‹?qOÛ¬ÆÌäJÞÑÙ	æ<E
Ój¨$F©BÏ2Ö‰xk†º›S[à½ôÓ«î1~£›.«27Þ¬]¤ è?•øâÉµÑŽæmÞ$Î¢˜¸Ì†ð;Ñ›ÈJÇ¯üËp\¸ ùÜ£…ðYÂQéóD¾Kæ}áS‹Y/
Ù„ä$>o@nwð'âÖL7Üˆl@ÇƒbQÉ¦RÝN‹åÐ»Rêˆì·>mN¿mX³þD1L_õÆ0v#²Š®3ézRÌÝ}XÀ/UP\´6“\[Ä‚-Þ`à[Œ”‹qB\5§¤?(.{3Š¨v3æ¶©òKŒd6DÌXowEÒïø¸Q>j%%–˜` '‹*‡{¢ @×ŒN¥²Àè #tÈ•Û/QŽ€Ìòá Ça#y\Äu "¹:‚pnód8(lÆ£ñÍè‚#1Ky
ÆBdŠ%p^4þÐ­Ü—øL• q·È?Od_X
ë1ªÞ£È,‡¦töÂ*"_Ãþ'¿è	´ôa³ÄÌCœ´˜âª³U1÷`*K‡ê‡Ò?žà/þúæôEß\Gwéêö *ã\›˜d(_Ì8å?ú7Ð¤«@
¼,ØyŒù§açÃJ_ì°²‰]!/çŸ™ò¿ì=zü”öÎÿØ¯°Ý'> âOãà‹§½*F|)÷	*·V{»4ZÜÝ+žžî™ð´ÚŒ^ßþ„áV¿ƒ¥é¬f	³ø¸KKŒŽÅ‚©ç^ßWh ^á‹™ÿÂÞ¾Ë$/OÎ0¤Êüs‹:(~nV´=§÷ÞŠ@ˆ‚o§¡s&ÈNª4	a5 Wrêæµ&ÃíOÔo§a…T§|èõ=áµTƒ±€zÐè'SÞ¨ðÕ˜q™«1ój8—F¥¦S¥¦ãE©él\tãÙk¡-©Û1pž³g*TãMLÀÃmõæðôôðgŠ”Ð´o‰•_Ôo&„ÀÆ]È‹/b±bw8‘;Ö2ešö6$~ánËGÕ
½áf(Õoïs7PúK›è¶•c Ào¿ÁÒ>ìuå÷|dKÄ°w£^¦èË‡pùËÎžÖ÷ØáÅ†M^š¨ñØÛÎ~ãg<žQ¢^ÌðE›Ì>,¡fÃ<Møµ“©iÉ³H†yLìrxbm\´âÓAt`/øñŒqÆƒc,þWÅˆ C'”Àb¶ƒ[Ë-È½×–WÈé2[N|Óbpjg¯žš¼`kW.'ÓMæ/EyåšX$¡ ,1Ø¤Ðä`H¹¢gÙˆÒMn0 ´'¤á“Î¹ªœDÏ[¼QEž­}²¹I¶8‚­E v·"{a·èÃâÀÞ<>h¡a­×ï“€À	çJ!GöÀ.-²R@ŒH4²6‰f-Ÿá&vqS¬ÃPrY j'cQ»…™Š$[M‘€?$.^Ôª›¢BW7D!ŽÙºTðâ’¬·%˜Aî=#ñá<as&*›6Ll;÷ip,‹–À/ft·ŠŽ"Kû™gn¯‘ü3ˆ"DîF¡:µ“Õh€B˜!4
a*)’jà„Uc” +#5*Ã
SuP-Ä@­„`ßÜ¸®ÚU£Eþ¤~-zµº¦–Ç° ¼añ„Ão2›,ò¾JŒž¿sJ0ñH;Yäìì=!Á2kgxp%6@M¹„ š”/aÁ™­\™]µ	„µgW_:íÎ{VŸóÇz\Z†0ÄN}¿é5vxˆ|¬PH—è^u<´ðË
®¸·'äb~D¢;ÿw¿v»ÀÍàSð<sM¹LK>ãp€RŸ‰^þ×QðyäœúUw$y¶­&´a”Q?Ï‘2êqã@ ÿ…PÉÂ*Ùg"ŠºÉDR@·Õg"RÃÿ<
¾Tõ~å]L¦ÓêºdJÔJõµ#±Cg -‘St9§_I-@X;Ë"µ  ñ-­}ˆXe‰	XŸ„ÌÅn\Ýù"Ì¨ò0¼º˜r:àªÎóà†{“Ÿ„¼> ù2K yë™) ³N
Äi<pFúŒ€9ûZÇÑáÔÞå5A äw¿b5R¸0x$àGÇáphq …Ç(ÐÏ^b¤1YFp Hä‰òÊÃa¤…Ž'ámb‡…½Ì·HD¿Æ•` ¸L ðWß™ÏùÄ‚úA9ÔŒd,øçæÕX5ôL(†ÎæM»â³5+™*ÔIžG±PF<fvºŽ†Ì¬£"“çÝ«¶×¦{íå~ãú»~:’ê4Ûr'PÇ!”vßaÆr9õØXíZ„”Ef	iž5Ò²øh2ôêï!ä`™NÇx!:ÆBþ•é—c—··“ÊGà$ñw8¾èáÍßÛ2xCpâ9ÿO©#Ë×£Õ*:n¼‰?i™ñ†!ŒþøªXôb´óÉÿx¶p%&š!@ZîÔj¹SÖò½XÊØ¸Ö[¡B:ív\kBNêxgÍœø\¶æ}<Ø¿·ZrùÕ1Äê¤r|¾0tŠÑ7|šeå•g3>—îø ÍÛ[þDivoïŠBÎÚ:]Ò±¢Æróš\ne}ªÜ«áMq½A].úæ¬¥¥ì3ù¼ÇA’öáàÌY*/l2ãÉøãSs¨Þôv³CÊÅÃÜáÐ h]L`½×¨/Î¯8_yÎýÌ>õ
 Ý`í˜~ c'tásâ¥R5§yv—/vø.»—ö9ª©d
œŒÃ<8AÜTÊ˜‡}½×T—–ÞïÊúýÇ•ÎÅ>°¼*+ýBëìKfó{ÒÜŒ·)ÝfO‚Íùc·wIal6¸5½¹˜÷0A;¶—Ï>²ÖUÿ’¿/ÈÌµ›½Á¬]h\Ò…½=‡YÄ)ïCIîh;&øûpàüL‡zOáø¥³üÃ ˜[¯6É °&¯u¦y‹
eì]€(¦·T¿ìT<‚ý`8 JIŠˆ Gì“ìVCT‘Vò~ä7ýša3JÞÊGÓ¹‡|+Ì`\Éè£ËÉXÃ_|ÜÄmýKÄÓ=NÕã“ÆÌ G:w¦œK®âÁ„4”òÒ{œùÊEjÕ=R³O3U¡\$ä­*Ç9ÒàkçHƒOQÕ©WU)ÕtÕ©W•õ3_ýâ¢!Ï¼€l³D 5"ŸªjUWôÁUÅ§ÐÍ(WèêxcôÁ¾§§?±Î(–ì5R‡S9˜—G¨¾¸¬7
}nl^›iáhf…#»Ýìóôýûnny»„[^,»©×SûzmŽwÆÖt›öæ}îõÉu('Åú "„9s7ÈmœJ¸´föabÎùY>âÙ«<|]”ñ&ŠàêIÞÄ1$ŠK!ç%µDgúØœé˜sÑq=‰ŽsîÝÌLs¦{¾ÚÓù”r6pBPô:)"äép=#i
èÎ2ÊÂäb½Î`ìsØ=ûDHo€3œ6ê©Õß)+0öªþj‘ðªŽS¬ Ò@Êîê.~pç9>U‰^ªªe@èƒCŸþ`6Ï
ðRÿ=T²TN³<BËiÎí©Ã{`9÷ ÙtÞÃlëwÀ|˜=Â­	o¯póýÖÌÇxCÌ‡=sWâ>Lí»e?ÖÏwó^±I%Ç)·à3×èÑ¨tNò='3:ÓÔÉË]HB“¥]”ìß$¦I§XÁ@ªž‚›]O†ý"O,äq;tµÎâ¬Ò  ,0Þ{`’B1„lÖ0xrÂßé0Ç[o¤-±HäWWùåÜâ¬Á	¾
züùrxSP8^ÃÉ¹W‡óuÔ†)Ï‹¸k˜s:W9ÔEqDûÁ<êÐ®$lù°a‚ãßZ%Ò£ Jöi}ÜR¨8ÁfŠ“;ËXu6éöjì|Rí4›4üCíqjZ†µXaÈzoÉzÐZÿç©=Ì2t³oÎcÝ,¯+rTùn9®×ÏgLÑAk“l¶ï[ÎØðÀtÄ01SÖ›.ðˆCeDþyÀÑíÔ ™\Ã°éuŒ)cr•Òƒ8›H	®ÏæYwþÚ»/Úc8Ë¼/É4{óÈ©LnF}ÿ6%ª#µÉJeÿé|`Sh? ÁpË%hž¥ÔVèeBã)„xÈq^AËü¦V÷jˆ73èß…ÇþN¶lKy¶ç;ô³¿9¬àéÍ¼k=É‰tVà°=å­Ý/|gq¯Qtâã¯á–heùoî<áöÀót¶®ÚøEû}âsp`C‡}çX—í¥_è<»º¯ ]&MËù—~=1u=ªÁïùv	^nFÓ3‹gûóŒ×Þ<ïz½hFý4 ¹žÑ9ël:Ô»iëû“×‡§?ÿ0/º¸ýÆy^è7F°mî´ÛmŒÓ´·mnË~ç}ËZ‡ÖPŠü)ÛªìÓºç,‘®Ü7x¯(zi@$IÅÃí¼ãE)A(mb­”¸f|Ìä\¬LiÓ—šT‚HÛÖOreØÎæ™2ÙÍf€¯0‹„@†	Qá@O„ù&Ø-â2<në¾,ZÇé¢†ˆÐÇîe´Æ"Þª:‚a­ðt4î‹Ö
'.$è«¸²$|¸žy¿{ƒ7×ñ7æ°à¸`ø„´nØ»kæ;f4ÁßÄ}¥€Ó84M±ÝùGÌ²Hñ¦`y·=ÌpÅâ¢ýÚòêÜ¤*áK$IEºtò§ë&Ä^N¦—“~nLa)w²gd[”/S,©Î›ž ’%È3•rð
Õ<G’hÆË?ÈôiËS³ÞŒ(	;@ò~Îˆg²Nög›Å'{
?ÿzJ?ƒŸG§Ç‡çRq„ÅŸggÝ“Ówg§ð~ý•~á«¿œ¾•Wð‹~œ¾9ÿñY"È5Þã4q $â5fU,FFs…¶Üç˜,&Ï.~LL&‚-ÝÞ@5dÉ²ë›yÀ–DÐN„ÊCs$2÷‚ÝŽMDÅ’îÑ÷ê+ïèú™¾,ŽU¤£[ôÙqdªAŽ¡4Ñaã“Õ²Îªe5éãsêÀéuK@c!û;UÐ@ÚEnÞ\ŸG^p—_Mü³Þ|Ž¾Vqhïk¾ÓN8'N°;¦F=@	Ù"Ž¾—ºòŒ§&GÙ›Œ‡_âËËU—žÖòù!1tL²æÁO0>yj`MáÌ·2ñTTóeã™{XqH‰eñ·­“ì×1É'”%O¾eý	ÔùÛm>ÀéNH¡œ¹VnõÇ2Ü–ˆŠšÎ%í
p¯¼…á^«˜è,ïa÷djYÙÐ‹©~»êK„s/¹^ã4ï¾ÊõÄ8ëÃúœÝŒJ=t[YNÂUQÐkGv7Ãâ^y£U¦‰¹kÎ¦žzÅz¿Mh÷•#ÎWÅ„·—SÂëÙêÇP½ÀQ‚áËXòy@˜zµ7•¾êâ÷Êéé`ÝDtzƒG7‚ùç@ýÃKêËœ¾ùÏ¾Š ™Ié€}ýÅ ò&:ó^­;<'¦Eð¡÷ákz^0šžèUØ/õÑ¼ZwüßUtû+E·¿]šdÁ6—ê`íñ÷Ë¯°‡·×ý)ês5.´—ç¹Î$ÕuˆS1Š/Ä»DÝ´Iïø@BÂãÆÝvÖÎÓ–Nð5h _…‰3f_Z°ÓûóÓ†¢”s@ìG©.ä\ðAXc­|ÕåUj©šm=üŽÐ«¤u""±Þ7WG}E¥z\RËªÕ¬JÏjÂß;¸Á•íæò ¢ÕµoAKkEåi<Áë¾Çß¿;û¹n’Ý¯Š]—\C™áÁ‹½øø†‰÷ß›Äº$®±åŒMë~2ü‚wñe×¥Ü¶ŠUî ×MÄpÄtO‘D€_Z-úñž‚V£¹j’Ï—{s×„˜FC
®óá´Œ'øÖã)§Zì>¥cIRf¥Ì9;qòšà×o²§øøæÝ¹<+…õª)F¬¦ÆígÏþå,ŸNÄž.¶}¥‰Tž©Î×#ìd_}ŽSòJrÜšùÉÂ éq@‚7I"Þ¶§Ù:Ÿ¹™®Rz{Å}éû½™#á©ûì´Æ‚nZOy–Z`Ëô)åùüÈGÊ1‰)ÄFeˆY 5ó²lÛ}Á±×¤™…íÖ¨9CeÆ2±xG’š³ûL¬ñ\)…·Òq½í„½×ð£Í¦U¢nÒÛ¨&ô°zÁX-âŸ´¶Ä0u
pé²¸#fl'·Ûüj8ì³úqÛ. ÜžÏ÷Aw<”°·ß>Ìþ’ÏÅ­‘nÒôu[»ÙëÉÌàPd=‰õ™©XŸ»ÙÃo1(ÑX7›ºÉoPYé©[Jù6A:1bï¦hº%Ü=¸eñ×H¡Lèƒh°«1SÇœk”È@w5TŽ[3òÏ…”™ÐŸË‘´¨Ëe;jh[¯ñÒ,DŒš²ºŒ<-j?½xÅÑ¼JÚ¤t“@‹•S‘M¾	…vGI²vR¥Ùi½ôI¼Y “­Ò(y”n“éö‘˜p£pƒŠÍ=e;|¤S¡À EÑd„áE»TÅ6eKmU^¶Õ$¤ÖFñŽiÿÇÑÂ:ÑZ ÒØô:jÉm£þÈ›Ù¶ZÓëÎPåccZi:Ö«÷ñ›dÂŸˆmƒ²F§pÁ€–ì³ä`_Y9‰‚æÒpé)àÉ`<½™o‰ÐB–,³+,ØFÁSÝLÎÑ¨ï#Ýw;^ÉÙpË¾#­ ¶ëDˆÛÀh0ŒÛh"gã&*Dâÿ`nï+-b5dŠ¢pfõªhRB3•ØWj{¥÷mKh~ï£!GpXVÞ{eí¶"e·Þžž|~|°EšñøñAw¾M¿¦óü4«\C!±êÃb(	 ý«@Ñî1Äõü	÷œß{E9[­ÖŒJÚë1%|Ë"+…kXžBkW”gÍ®GÞÜàWƒz±\™®\¢N•«¡àIªÿS÷V¿Á¢¬hÁ
å¬o–Ú½ä*ý—L(Ë‡=è“)%Õ…Ò­èÊ%ñÜ6•mpQ>AÚûÑ}í¹–¡”éÒ¼÷­ž\#¶éBP`¤êÞÎýí^J WýÞ—æíŸ„…È%M±§ö‹Ó›¶À85¹êVG$zd5Ñnyrø8¼Én
ÃrY¯«Ðë,ö ²/«nE°‡Wk0Yê.Ä"_=«Vº2¤Å®ÃäTÉ/„ÉãÎuöq‘ãuÁäL§¸ãW“çxÄ»)I*ê@Ìi?x@°¹g5X˜{±,ëèc	lÝå¿Ü1ÞFÂ(ë­ô©øSºC[q¼O%Ý•0”ÁÛ
ÔO+Td¨$L(ç|5©Žøiê÷+f»M{DvÄ-Xo¥~T æËÇÁeÎV]i5âÏ2éN¼i”“¹ !½Æ¢?iÛt§´?(ŠÁh0ìÑ©íœ:­mIÈ c/¿¶Œ©Ç™k¶ãÛG½>ÖÞ(ñ¦_*)ç.{4„¥‘¤`ÓâªÛ½y€Q–Ñön5…°³äpŒ)òÓ†ÓÝÞqHp3
ÙtW™2^‡ªO£º”]@%ê¶ÙÆêÐéc>C½Îú¹à>‹Y8±Ö÷’]|å:5n?QŸk_‘=òAÔ–¢.S2³)—ÜJ¸ä0­—½Ëk;EØoT’å¢þ[xÝKöY‡;¦LÆ<Kxcþ·¿	—Èec?Gh^ùI¦\Óž%Ž)GÆÍz®ì¶9Fˆ‘ß`Ú½0éMXå¸a—¼õûãmÂoÞOk÷|’­gÝnlëñï[—Û:êÊ½áÎVò†[£¯Ù&ƒ@T9b,ðÃø={\ü¸ß¬lÓŒð\‹)2ž"žå“[*µ&'X]ccÜÓ6KÝ°@=¤6=ú–ÇUÍ¥·0XÞÚ^¹)ûXUè“µlx:—«g7¥S­Rï.Ö¸®í0Ÿòõã­pùÍ‡X©álmQUŠüË›OÏ$§ ':¯1ËHÓHp“›bøÅ¥µ@Ün@¶þÒÂ+Å.†CA;LÅäŸX•ÒE>ÿ”ƒy&Õà–ƒÿOóËL“ÖÂ¾ÅVé%j,ÂõH¶ûÂª%ÌÍî²gØŠ¶
CÀÜÎ»Ù¡Ã@ÎF7@•«	®Íz‚£^?×aî©X»q+‘`^ó4Êš2³…õ=Øa	Ä];ìQôZrE,Îùø ;Þnvöö¨u°]pu¿8‰ íè²òò¡XÔý¼'qQ\ÙhcêäÍbZL]­žf{ÛØ,þ•3Ä@Il€‚z”à7Ô!ð×£eùnÆ»¶ŒögË{w–¼F,Ç`uÍ×øàÞãSPi£kZá?¨6á)3Žº¦“8áƒª	OA?{Ã­ô†ÞÐoÂè¸Aø—²è/wûÅrÚÖM$9ä,²(bˆ­YÆûaCì®‚u$p›RÄÙzž”y¥˜f½=˜ð\ÁÝoIÎ¦’‡1ÒÎI³Û–³`ò@är;ÞG`óžxëÙNS·eÝó­¸v™÷Ä¬È¸ÜšÿˆD,ž¤†¹ÓµÔ_?{â9÷ƒ}GÂ9x,‹ºQ¢‚ñüí7íLw{Vç1ü¯}î¼5CÕº Iyòé¶Á2p…¿Þ–‰"'o1„@K°R÷lŒ”šÌÔÉ˜#?QDú<Û§“9Êpp‚ÉnÆ0Ô`F{Ã<ñ¦ˆyô@g( 2J5ÏàŸm¡âTà…ý	GŽ¥pÄÐe¯-_‰oJþ/É· íÑ¸Oa^õ>F7£ìµ2÷‚¢Ì5_½~ñ×m¥\qAÝt*2LÄÙÐ­
hîƒœÃcóðüç·ÇÛþ~”côþA¡‚–ü<iÙ ‘bž£Á€t^5	Ô÷‚NA@Q(Æán‰û:¥Ô/‰ñjž¾ÑŽLƒ2?š·LÐ¿Á‡`ŸiÈ³‹fá×›g8´d[¨Ž¬ç{ãÂšÀ-oßÅVföÐ< Éç¹NËíõü ³¡+'{,¾Hé[…ëó²½#&Š³Âô*FÏm÷ü\¹oì_mE¾dU÷Ó +Î¨Ð¹ÔXp­¾K)îô½H}P‚3ÛªNãì_×í%2NÓœnÁŒ“x|V¿?ó8¹l6ð•°úiËÊS[«£	–LÇ\;;(‹(ß\(@¥ží¹+qãÀC)QsZ-~ÜÎ®{´•]ˆ¹v¹tÀ²¥˜hytˆ?Þzcññ’]â;;fÒ×VßYIëÖüÓùŽõl&…­ÙSìZr{‰Ìso¯që_£ŠT¼×«æ
—ïTIb©dŒÖæpBÿ‰îW/ÄópU,T¨öêÁ"¯®¦T†ý8WÅäjþ	õJÄSà¡~$Íg¯\ä(ÓÌÜÄóçÃ}¡ŽÇýØ3/óì/³ÉÍ´ -Ì`¿çÄ¤ôÆôXÜ\_Šy>BÎ,@K3 ªÈ‡x©•2¼æ‰#WÁâfŠÁ‘‡–Mã‚aÞä‹a5ƒ¿0)‚XUÐ“är–cîØ²î¤8´\G<8RYl£˜ÄC¢!,IrBÁ.˜Æ2Fz+»¶Hû1jÐÁ.‡ïx/óŽ"0L¯cµ¿GA½4KoÍ|Ä
+R‘€Áa$^Mî
‡E¾?¸wž™€¼ç”rƒOvŒç†ËñyýOŽ÷´··³‘#3
 [ÞÊ{„¯‚,üzÙ˜Ûq~;¤BrœƒyOœ‡}
øÁÉ„b¶)®XÝ=\m‹&#7n¹%ìÒ°Åf®&ªÑôáj7ªÚžc³ì$»3½—[ôÊT^šr`â¯T8 nì-GoÅ˜tjq	Þ°&ab•KnRD2uü~if¦RóvO½Ý[•xÀ?cfÀ?c^ÀSö¤,£ê)m?ÒÏŸ#ïG
’7œì˜É‘°mz€Ö`w
7¬Aa‡ž{”Ryî/× ÙK
-ñuøl‘ÊÎnÚ.‚ä"èVš«þ`fµ‹›LªÐÓQ4`÷ žyŽ9
ô‘Ä
åÊì…ÝˆStêäó0ž£LòÈÉU¡õ@sÕ›ÓW$³”pþ‰f"ÚÂâOZ«YƒéËè™Ó¦¬:±q²»@ŸgÙ·]™Ï°CœœvÏÎ»§G?½y?ÏßQänòúÆ˜Ü¿Q¸¬.¥êË+Ìa6ìaõÐ>bg´!N=øXÞÒmòVy(°ŸU[xG±PÁ:8Š<[i‰Z”ˆÀ,ˆÑÒTT² RZ?¡{	ƒ£•F£ç.à‘Hà„P&†µ@(o,|­¡L4o!úŸüï-Xe“Š(¦½aà=<4¤ÙÐ2³akçëM]žàuýœ ç¦—„á·çÙOÇ§ß¿9;~æ
/ÊÖP|Ì/¯ÃøF—˜tÇ¬ôã£ó“Ÿàê¼»'/Ž_ŸŸüðóS´9èº4´JR•áï1þ5Õ»/Þ¼=>í¾=<=|… ‚¸:8ÇïÙÈHòð>hÿ×c2!^@÷ÉE\nlŒRfÏö$ç0Â'Æ•î…)a™ÚQ˜*å4;;?=>|u¶"É¤öŠÛßóéU¿%ÞÖ—hª³÷„âéï¬ÚäéñÙ›w§GÇÔ¨²|×9êgtÄët…H<p}-§ïô")!áKûeF}[³:HÔC	B`Û¨„àc;I~`›W–\Ò¶¾;3<.Ágž4d%¡ÀLoÏ_óí–úÓR©É'_…
ÕDá ©ŽguJz4aŽ8fM•ÌÚµug¹ÒÊÙ…
ô5ý	j+g“R
°®³éè‚®ÚIðH,'HØj‹ì^"‹yÇ :]Öôë¡dc…šX ‰¤ÀHßü`k’¤—!Š^¤P„ UBîýÉ§ñ†¯[b´ÿ—Ò”äGG¾fÇþÿNŸh„üÿ«QMí €X{1¢`ûéz Ç¨Ue
Ät6¹\8iî“ÍN>‘ÀÉ>ç—7ü…EF''ôž ´
…Ó¢mrÒw÷œ&Ø ê$ÿHÌœ\ºÖ“•oÇCqÅæ›N¶Mz?Ï|o0˜ØÚ‚1(20/¬¾ûìv‰õàêÒâùK»µÿ>;Ã‚¸BÉ¸yòú‡mqkµP5å¦(lý”48öåˆœÎ®/æºÉÎû·2€Í·§?~¾Ü”üt³‚Ý\'™o;ØË‹¡(¢¹	±óârêáýè=¶yvôÖP)Á1úØ˜ì‹ÖdP>Jéæ†EIjúÝ»“0HýüsÖâÍ€³RAÆL“'ã†/”ÆÉjAy Ç¡CW§ÜË›L;ÔÖ€kÐoörPÌ91¤YÛÖ²Â¤‹Ðºæ½ïíëë±<Æ¬ÓÒ6Š0ãQß‚Pn2¸X5Ltû›æ }*¬‡ð“Rz±½àj`•
 Öþ&°Î9ärj#Øe¬Wƒ­FC™®"Îš}%£ªa/%Â©aVxt÷…:ú¾!¼¡Jn†îºè­Í8×ë¥kVGP{Ž­¼35ðW±³zã‚4ð|…\µoH{Ë9†P—eXo °<ûì	vïÃ%‡D¡óŒ:¶uç(­v´j÷¾T£d©faÐ°ÑGZ-è I5	 –jÇ[Ü[”!Zm
©vÎòÆË­CZ)”°8ó /y9™=B^â²4[ˆ±òÀÚ6{Ägó’VÉŠ2GÚgÃô½þå$Sc9ÿßzîÆ–bY½Øtu3\ÃE¥i¯(æ×³›2¦—ÒÀõú£IAQš¾Sq¿ÂrÀÙ,¿š&RotmæÒ(ä¶DzùwÉOiIÛ™Ï>bNf<R“9ßX)Ãq¨O¾}coäp<ÒÒ¤oRÍ7Í?ìÖ¬ëÕã}PU—¢î÷?íéÎ“/n¶ÇÜH¢ð~\x¿´p§—†w¥Å;‰âòâ	Ä;å˜w¨w*p?H?(/þ(QüQº8‹™uFÉ¤Ñ£EZ3ÞŒo”÷‰Í\!W.šöÃÙ?¬öiV][‹%æ‡CÆò¶‚ïÃaª9ö]i	×k¢ü´‰§´Y/…‘\1‘%ñdÐžC=zlj{GçÝ¬g6´*31U…ó`Ôï¢†ÇµW+eh…ƒn^–6$2¾Ô°%9«ãb[¤xg«]Æ½U¾Øü÷ïiß{ê´ýÇŽÿèWíuüÇG¤¡&pZ]\îNÞ—0§Útx]Yöe˜Í5öb=)ñƒf­ýê2è-òSÂrM¡†?¬3 Âˆ)ShÊ=2ºÑ$Óþê8Zý´ï=uÚþcÇô«v‚ºþã#÷èF«§î³oJ¬ÆzÈ©xúð‡Æ/%¯®Ùøá:owå ÆyƒEÊã™¾(Åœ‚5kª 4œÃ8b±7”öhnX3«úèƒ¼—§ÐÌ
I_µ<µÖføàÞãS`è^ÓÍÔÀ^^f.·æŠàr‚I¥ÇÔå5Ùw2ý´Úuð¶€¸ÏÁjÑÔÛ3•ñƒòŸƒ§¸æ¾®¹¯jî{5÷ãš¶š*ªf§½£jvÚ‰ªUõ‘®ÚñªvUUW¿~¬«îyU]í¨¾~ýŸºê¾W5Õ×Uõ‰®zàU=HT}¤ªþ—®úÈ«ú(ÈdH»Q‹¸'òŠ´¾˜n›Â÷ôT±,ÿa”úðv·“©ä”"Gm;5È©Ì^î¸8mœ„ƒ´DV‘©zz÷Èƒz&>¢©g“ÕI EùïSèØ¤©sùÿüuarºÍ{«JˆÜöçv‡b!™®@Spâçe…÷La
Ê—U9ïŒpiÒ·“å\¥Ó™À{3$¿‡à¼Lb‰\Nn5¤SLéÕ²T¢)x;~*1F,þ—N?žU‚˜È’$*dpºOë8ŒLË÷©ÙEï\Š“!FÎ Î9ah’Ê5AýÑªMA^qçä´à"4›&+ËÚ¤HSîk!dUi‘|NÃæEbê.&n„9'¶a|KÐGÑî 0[ï‡#“NFæ$iÌHæ]¾+›‚„«ÅÓwŠNN’j]'jÎ‚E©G¼8å’r¤±U•g$>O8Õˆ9æVJ9âvçZD,{î'¾ N¹£K«ŒÄEëÂQF“'52š¢­¤qšAáýŠÂû~~£3Löfm˜Þ„*¢kõl&vw½EZ•kK)ÓiG¥;¥;Qé½ŠÒÑuö+JïG¥*JD¥U”~ä•)§;*âÒFò>ÉD#¼Jkd‘`8¤¢GA°zßµZ~jÑÈÓN>¾'	Ï¬àª_øò¨•Îtºœ|CÙHÉ:Nv	ËDoîX¼ŸêRž¤j>¨£ÎÊ¡ÜU9uÔÆ‰G(?bc	ÁdVøDS/Kç(VPÄÞV0({|[AHU2&¦|¬&èâ|%J!k£½Ï'h1Œ?ðŠ'_Ö(?]¾?×	AÍþœmâ­§ÙÖÉþÍ^Ž¦Mƒ²ïÆ¤ßÚ†òæõSŒµ>î£»Œx7qíz©SÍ„[oê”´íØ§˜³$’sãS¨ÌŽEC_N¿[°¡.}i!+6"‰
'2À”ñX%\5sP*×ð})y"LÙÂ0~¾–*¶Ÿ·¦2lì‰¬1Òyd|5†¢‡Ó<&X&
†~Šâ7ÅÔ*	B®

•:è<ß¦{fÂv^ªå%zé§½èéq¯‘HéâÒÃÔiï%ÓÅ¬dY×§Éæ<J9':™ÍZÆ‰÷ärà{uz)N>zyJ7€ÉÍ‡ë“!F"‹êt¶CZÍÃú}Ñö ý?¤DÀƒÜ-1hßºSz ªŠòq÷zRÌÇ_ÎÝØ*ËiBõ6ž>ò“Ü+Û*`€÷?ò¦õ¨—/%NGCÑr‹¤dÅb7;ÀtÃÁùªÉ1rq3öwƒ\c­ïð, ÍEH‡j€ó³wo™v‡:‚g²Y¨g©ÞŽ"îâQøÏ%+æÑ¡½(¦+ôÛU*ŒZ£a ÁŽ#ÒûÇ¦kµpê“¬%NC(t?~}.*œØ¹ÅŒ@8±û×@­i÷×üË: ±Öÿ"dƒõþâÇÖ¯ZG?¾%Ì3hHADá.us˜´­ï±ÙÃt¯ÌéTìËœ_B7Ù9 · ¿‚ne×ùç^v¼Æò½K¼u½í\°/rëÒ?0Š eD†Ç µïŒ«ÑK?0m;èa½â&šû <ÙAG•Ç’Q9y=êqp Nvu3¶^#8K"p>ëüPà£«Ðx2Æ‘¨Èþñ°µ÷Øƒ=yØr°“íËÃ#Åãkä4Ó9.Ïëÿ÷ººÕ]ò;	Ø	dt˜æÏÂo á—ÇOÞ?“¥	Œ?ˆ}œt¿töè½wïr†t€÷÷ší—;âÂYœJÚõƒÜ-&4TmÈ¨=si‹Já@,ô^à”ƒbcW ;…¿½ï·^t•³óS
&- ·±3kÑ«ÿÌÐ|‹Ý°Ž5*V;¦óÎŽ ŽäíLÙ‡¢Ü<|èˆ<Âµæf|%ñO…Õ	w¢]—ìOÍZ'Í¥©{Ã¸>Ê=™OÄÕ––ÏÀÝAPQWïP3úâÿ‰šu¯¾ðJÕÝ}×Ž·Ô÷ž¹Zê¶¹Äê©ŸÍ×ûøÙ¨–K;…‹Pœ¿êó%Ð›°ÈUbvÄ3‘Ù‚n²9¸ÚºW»O*ûqðdÅ~Àþ´†~ì×îÇãƒÊ~<>X±¸µÞªú^°}éÇX	ûÏ47•½9fÄBoÀ/MïkõÝ­-ÝÓÔòrçƒoäSõ¨{®Üö=ûd#”%”±÷‰?äxHõ¥£ãµéàøøYÁÞ€6v¡1Áã”3ŒHdmïdƒð˜È.‘Ô˜?˜:² Wrª ï¿y¾§Äÿ¢¸ì¯šjGÿeð™¹öÞç-Ü]·q:'¡óë¯Š¯ýYg®œtŽ@¿¸¾~óÍ{ŒMéßÛ—2yG—ûÏ}Ê¦mw‰iÓüª/LÅÛe´c¬•éë¾T²óC5{Ÿ¨£z4¹ö‰K'­ÌµpCÖÊ¨f#óä)	%éñÔæ@µ§7E±¦&*|°4˜ŸÀ<)¶þ¥ÒÑÚC¦J½âñÄš¾¬¤ðÛ5v×-¹wàJÞ3vbÅÒõ|¹¤¢^“õöõÇ]~Ýû»£YI’uŒ\úâÇZ§¸ ž~U<õ€°V©ˆJw¬îNB:¢+]eân3("ñõáÕ¤$„yà»º2’	ÂÛO	 P¹”«§[òÙï›.¼ÛßëÎ«˜}WŠø ˆ½Ì¨—HØß…l<”	ÒT3åPÍ~UÜ5/Û³Àæà/9ÿ’4>FWèôa|OC¶Þªyˆ®¹˜ãu‡Qåæ~{&ðÛæ82+µ”#0¬µe«‰‹k#óãÅ¤!>;P$ ¯GÿµÄ±°ÍÀ^OöW@@øÝÚìW Ði¯‚pªu0¨
S*sñÕÆryËBw™ød¯ç}Âtƒc·w²°ß­ŒãA’©Sí<á=Àô¤ýžZâz¨¨aÃÎNFvžÌ%ƒ·‘4j+¼ù5_Ôû?Y©®fóÀ|Wmù"ŸªÒU¥‘h=§¨â!nV^²8¼\Jàa¯ƒfÄÌ¨QŒ ÈöLEÓ
ÛúÄQÞog¿A£5J"UßcFÑ'ËTÙ£*ÈÿÔ¯³OuöÌü4ºO$(!ðÑéQ6£í’Hf4õîÐ‰‰¿ì$hô¥”à†5ÂsbPðYž5iá~sßŽàN†í*øâMÀ¬“ê–m®ŒB^x>,îV¹|þòŒfä`Ì¬ÑÛ³ÿæ ˜Ûäi4 ›R ãöŠJ`Áby/k1S`Þ×
ä2µnB‹líN››‚“€¢¤KÕ32½v}x‡Ž!Xû¿ågÝz&EÎMúmuéõã"ŸÑð¯Éxˆ[Ç„Ø ¾ì™R­¹.ÓP#´@¡·¬Ò~QIY•úk!æ3ï	{*o¬…Ëi½ÍêwiM¸°Î|c¯Á´¬Ã,#Vx=mÅÝ-£ö¦ðdx“d“ª›qÓÚo‹œ÷2Ö¢-yG®É!fÚ÷Ò“Žx¢ºZ3êøŽÔàøÃWƒK°Æ\Õ Èdùá×b«;—w;Æxè×°À:6¼}»Ó°?ƒzKÚjiêùr	S«?øjG¦Ä&Å_ãGªñ`¾#E¿l ÆÝQ?Ýìë‰J$»bIËïãóç]ñ5êiÝ¨)óMv°QÝèzÑ@/JI¯³ïž;Ê$›c¨[g¿¦S<ëòÏä›'m­€åtùkT½Þ½ÚUmq5W‚Üz³i]R¦«ˆlî´-óVg=íÚ©ïùb44ÆÕêá2%ÃþƒÁ#Ò—Í.º+#€õc¦î[VYV™>‡®óû5‡MæŸ"NÏ©Ê§¼QŠlÜ—T—Ue¸HPÓ"sÆÞ¯Þ<²—d¼[Xr¶Èµ2L˜‹ƒ&¯[Eiêf[0÷ZlÛ9‹˜%TP«±\k^V(¥8_TÖÓ/*¼>õy¢ûåtž` àõšôèw#	%º™CVE^"þ-Ê—	µL, EÀtý
ýøÿ¡ì_Èà‹WUvO¸Šd«H´JHVf¢ü„&iyY»Å¿‘H$ÀZ}…¹¡7äÇÝYdÜÙ”Ð€;–XÒÃ.õ‰}xËLh’±ë›eJŒ0ÜuT?Z‚ýê7i¦ðÛZi,†O–1i=ï¤1ü§Qè<û†.Œ¤hÓÊ:ÿ¹nc
[3wš3BËØXneÚøÃŠñï`ÅøCü[$þ…¢_ÕŒ¼SùÏ·XÙµº-Š®›Ì'ÓÉpòáËºï›¤®6]KwÓf,hÌzã_…5?•Ÿ“ü©‹öÛ%l×X¯:k=}˜M&0‰²™W¯”#]ÓþÕ‰r&9Ì'uóÙÅ¤PŒ²À]ÈWä„oì
T•*€6t^»ÅÙã×‘Ìüäõp—‚¹ôÑÀ&X“<úéÔyÏˆâ/æƒ<n–MÍ×—E=©º7$¸—Jâ%\²¹x¬I –nqâ‡L‚B½<éž¿yû¦ûúðÕñÙÛÃ#ÌæüŸ“àh¡”C::?}i€T²f˜xêæž·9MÌ •2ò.š¥Õ¤ei›QJÚ°c}Ì‡MoF‘ukÛiúKNS·3|»¿dØÆ¶ìbz¬ß¿çÖF!Äî”Í™‘ÃMP€Å¡CAY5n¥·æÝ•âîï±%yÃ{ê2½FT"Xám?»—U´¸œÀpÜÅá€÷^ÿ’Ï³—“ÙÛÞ‡ÜdëD¢½<¾dG6¯·¾ÃJ\ŒA¶ÉÛ@âz/Ï§H7óË9‚ºƒ~š®nòƒSüsAF.ùŽ–è#_Ù­îâæ»wäð;öEŠºaO¾«¼°eÈ/ì…C®¤#AVœe–X±xÉY^À>Í½ò^!Â‹‡HŽä;™_”ªg>-ì
£Vg–îj›sÛÙÉØ][Ué²ÕUÿ^róËš/Ž¶ãAÕ)ÖñÅÕ£¤M{w¹-¨Ýn8ÀLÌè“vxôö${ýýçÙ¯;[êPª·ëá¿QOé,Ü`7]ý.¿b°cMõ5"ìÃ f)‰7Â½Au…esT­”Gƒö—6šÅ¶°—8ô—}A"=­ëA‡]°Yt6øÛðê2ƒ÷ÌiüeðÞqÌ×@‘a.åã-oTb:¹q¯{’`4(ÚÌ,ÿ€aÖÅ$}ãÞ•Óœ¶¾Ö—Éóì24Â×ìZEë»90\­ïÆð
JÙáISd»õãôL!,” Œ0£Àf8ÄÊÄ­ƒƒ%»×ùpŠ)>x3^ótmÑ9çs˜/½aÞ|yÔ=D~s‹R¥”Ž*-A¬¢që¼ç0L
9Í©>ç–çç?oW`¤G,ûsÖÉž²áH3Æ·0xœ­OO1ÅÏÛO1	$»b<º'ÿD%á@äâ­)íw§86ãw·‚&(’hð6ïuæ÷f:Àtru_ƒEJX’Ïàf2®NOªÈUcCÕžzÐ×çw£Ë©¾U½¬á¶¥’ðÊ
kÉ‡9¼¨"WIÀ.L¥Õ,='z¤ú«/l(-#Ë®ï31‰Þÿ¼±¸ÃI®V¯µRø”" ®Em…-ÐÄø°Z®UísŒ9¸„“2ÌúùQýÉ	$ï,¯]H6vÈýíd‡É–ëÃó\mÜA]	³ÈÝ„VJUÅÆ¡™—œÖ.è6:ü!ëcè·Qû¶ý?ˆ6Ms hó·mÒþaZõ\ðês
)Úîqk˜b?X}ºZÐ¬ºe5   07070101755AE200008124000003E80000006400000001644273370000059C000000000000004A00000000000000000000004D00000000nvme-cli/.git/objects/pack/pack-daee1671176b98623f587dba1a5a0cd0acba6535.idx  ÿtOc                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       	   	   	   	   	   	   	   	   	   	   	   	   	   	   	   	   	   
   
   
   
   
   
   
   
   
   
                                                                                                                                                               ƒIÙaï³"‘h~ç4ËÐÌ	s?_c„ùÖ'nóFuÊ	¸84r‡ºkVÐ"²’LàÂ†Èú‘8·ÍíÅ>8‹Óc
$ßýš"pfšE±Ê´ÁG ê:ä¿Æ3¸)¬$EjâRZUÈ¼+þ[qùA×8·4l‡û£hc
ëá»Uaí“‘‘n+w2ûÅ\9N;2ÙÊçÊLã°@ÆˆÊºª¼]Ê-sÛÑ—,
ÁU›}’¨Øû922—ÚÇ%ÿ¦rË·Êl¿½ÒP#¿/Õ”KèŽšRTæ¾Ã.”÷^G¨þ£tHäŸ1‰ýœU“E¤‚Ü©gžºJÿÜÄ‰Îº›pˆ8š‡U4ºV{ «-UˆâÒýþVqÒÒê·¤#ŽeÚÀ2Ûœþm¼ŒÒ›–ÌÎ=  `  à     œ  1  Ô  s    !ê  :á  .É  ]} éÚîqk˜b?X}ºZÐ¬ºe5Îì’p!K2¬œd<Àò¥oDÚ0707010176359A00008180000003E80000006400000001644643EF00000000000000000000004A00000000000000000000005200000000nvme-cli/.git/objects/pack/pack-4abd18285c8b33fc29d1d91c7c59685a6430ae81.promisor 0707010176359800008124000003E80000006400000001644643EF00000DAA000000000000004A00000000000000000000004E00000000nvme-cli/.git/objects/pack/pack-4abd18285c8b33fc29d1d91c7c59685a6430ae81.pack PACK      
—IxœSMoÓ@½ï¯˜*ˆ&±Äqª‚Š@ETâXíÇ¬³t½kv×Ióï™µûq“íñÌ›7ïÍ¤€+]èr[q¡W¥ÆuÕlëª.Ö¢–^VÛu•`=è”KQˆÍRÔT'6j³’+U—e]oš­Ú”\VEÉ•Ü0>¤ð•‡d|FZ„Ënül¯&Þ÷sé»÷PÖMQÅzµ…·ÅzY0Šv&%ð‰;ƒ~òÖÑ×¥:Œ/Wqˆ8W8–VËªlÊ†J«¢`LsŒŒ Íh	Ò;mZ¸¹ýþBaÇ²D±Îš{Ÿv„íöB
ÜÅÞ‡ÏÇÀbp(“ñþLÀöÜÅv>¦;*R* IO3&&Qjö‚
éØã>a”RKvÊî‰˜"ø{t ±vDû¤•ó	ZLYH6ôŠ'T€{Ê7ð¡·Fšd`MÌˆXxVàx„¸ó­?\06ÿ8èŒ[³X1,¬—Ü.0ÉÅ(ÇDwþ+zÇ®9a©LïLy.îÇÄÙ³_Ü¨ðÐÍØ‡¬ñ{†@KB[ß¶/d;Œ‘·¤ôh™¦”¼ÃG¶wÏ:cVö“~ç¥9;ÑêÝ«xÆØ5íBÚe]€.!dÄ€÷œ¼8•7¦ðh­hð}0¤°=ÒÄ8M<•Æ>ïÅáI¾¼µ82¼ÎÓvyˆ’Èx“Î'øâ¬Ñ\âIç'[“÷ †”-Ÿ8õŒ2¼#‹‰ ¹Í…öDöÀ­wÙbê›×$¨ŽÉ§åœ±[C×£f^ë™8^üÇi²×’n#¡7òžØèà;˜®–È—•«BÖr)yµid±kÙÔt‘u£¹¢)ÖÕ›¿Ûþã¦Ùs8•”-xœRËŽÔ0¼û+úÆŒP";‰í¢]	Á‰Žƒí$K[¶Ã¿Ç™ 	Nv·ªªÝUŽdÍÍ¥â•¤º.…ÖJV²ª¥Œs¥‹ÊpEœð¸Dàm-dŠªiÁ¡¼æŒUhJn8¯6¦,dMÄëáƒðq\à=Zß#<Ì÷²Z0
çreç7À.g¼)Û
^Óº¤$uç1FôðV,#NðIôKªôí~y
kÀ\ãNåm)¯.‰ZPJÈòuÆÌùq‰˜ñìX§éauÎúˆ:›lŸ9Ñc€—`°ktk<ÈEeö ªÕï.LÛOÝ zEˆâ€äæíÒÿ”/¨"ÄÍ!ˆ a°·$NöÖsº;îzàrõ[yÞ‹íš’èà9Lž%ÉÏ¿"zŒ×]ü”šgx|<è{ç ¿#Æ	uNžå}8)ë1½vv¨Ï„¼KæÄa 7p"„”Ê¾¤X¼MŠˆÇ&»fNÈÇ1Y¯3kL&·î?r%'5 ÷I}T_Ò|ãíG´ K¤¼¹0Z	‰¥`F×Õ[ÔM:TË
DäõùÏ±ÿøä;iö/š>xœ“MoÔ0†ïþ#.Ý»+ç;©
jâCõÐJ+Ço,6v°Ýæß3ÉÒ"*ÈÉžØ3ïóÎ8zDÐMuÊ“¤®´VÏ±ÔºÍZ^§y™¤¯Ñ•jØ <ÚYVeeSTyÊiQåªhë²È
™”Xç˜ë,«ÍS&ÆØ9_…ÆÂGt~pÕ/ÛýµÅ(†a']ÿ’²¨Ê$/Ë^ó"ãŒ¢½‰=¼Öà¾‰½¥Ý•:-‹ë0Ü)œ¯’ö†Ô—t5åœ1{ìñ´y„y{Œ["ŽádbÛOà†hœeìÝèg¤Ã´yálìð÷yÐÂDƒ7d„"s@ÅŒÕ4¡†¥ÑFÂS£„Qv Ø±o	Áiø|?F1ÀJõ†?òj½a"LVg¥³ÚìŸ·ë|¹¹¿…£8ŒøÖÆ(wpß™ &°¥ c˜‡_BçNšLTaµ†ù =ºï¨ÀÙÃF/Ò‘apVQoØE;êQ’bºBuÚÀ©3ÄB{ë"X”‚ðÓ‚>'­;â;#öÜ¹¥qØNà±wGªpPÅè\¼¥Ô<K›¼L°ƒ›¸T‚:Md‚³ÛKÒ?´3
Ð”yG‰w!¡¥‚I7ÂìçrWvQ³cìƒyÄp	­mš¤°zu+I„ÞÄi¦ÂðjÍØ¡T[§õ¶.ÿcÚÙJvèÉ¶ÁÈ¹Ú»Îm+9¯Tž)zYŠguQVØT¼,5/’DÖMÊQ§ë¿Ëþã™°ŸõPô—!xœ…AOä0…ïù¾u¥iÓ¤!$öÀ™=pvgí4©ÒÌŒæßoX	!$.Ö³¬ÏÏ~%R]'í8Ž0}×ëÞ)¡¸D? ”]ÆWlÅL±€·‚ÈKNµ%MJ	=	cPk¥¬WRFË^0<”9exÆiƒ
‘ì_‚û¹îyÜÝ:z€n”|£”\sÁ9³iYB)”á7Æ@{xÅ]¬Ý½;½‰Ï¨\OS/?PÝ:MÛîr:¬[i-!E(	.cÀˆí>í{JGÊ¡œ¡:®{¬ç9(3–Zšÿôs@³'8á‘*vÆ¸#wÃ¶¡¢´\rÁï=›Ï¦Í-cBýÂµÉûÖœï~ˆ‡ý²3å|†5Ô¡ŸÓï	öÎã ¹@ß½1nRÆ£ë
å)+9š«¯–?äÊþˆ«ùŸxœ…½N1„{?Å– ”ÈçóFB‚‚
jÛ·N¬äìÈ¾äí9Bˆ&ÝÎŽfg¿©T¯1 ‘A¢³"(ç}WJ¢Â¨ì%²“«”']Ç­E©ÉR§ô`"j{4Q(o‚ë‚¾gnžö¥Â³Ë™¼PÊÛýrç¡ÍÖÝƒ07ÒhÅáŽKÎY(ã˜¦‰*<¹œèon—µÞ¿†¿Q+¹EÝO”åóHåL5Mˆéƒc¿ºÌy€VF‚cÙ¥ ©µyùÍ-ÛJ­Ì5,¹C[3öš–¶aUb\ùËæ
»	{ªõ§´˜ÄZFø&œ—BrºA :/)’Gí{´!¢°šÐßþ¯¼ÂÏ>öTŽwšxœ…OËJ1Ýç+îR‘–LÞ-E\ˆ¸Ö…ë›Ü;´“”ÌLµï â¦»s8œ×Ô˜ÁRŽ.ul .fï†`É™÷ÑdoŒJÒØ NØ¸L`•
±ËÐ‰µòÎ‡”Ñ‘µ!J¥ÀyÚ×ÏX
ðÂ}át`Øí—œ‡qyM|³Ò)§‚;©¤©C?MÜàKÏGxÃ÷²°}|ƒ¿Ö dØ„ðkå<ðj¨ÄÇq¹ÿœOÐx¬sKGÆÃ(ÄSA¼@ªgnýtYñÚ/Á´ª9¯âe{e±¸I{ní§~	r«üŒ%µO>h›Ñ³QšdÖÞrt¡³.¢ñœ(©Ûÿ•W®Š/Ì‡2é
xœÊ1
Ã0 @J¶Ì}@¶¥ Û²,?&ƒ%ËÐ!!„è3B?Qú¦>¦™n¹o÷éÆm5²CÊHñì#£—Ô‚ R+-$WMÔ›«ýRV›·óûˆ«U±"¥“U°D µ¢OŽñyÍà†;x€¾Ÿ÷Éë2ÉñÛoœ´å˜sc‰hU+¨Ef:uœ‰Ãûuqª¶1‡‘xœ…O»NÄ0ìý[‚ÐŽãÍãtBQCAí¬wï,rvä$ù{r@hØjvG3;3efÖ9k.S.jB‡ÞuVÄ®‹fCÔTjp™ã„^*"ÆF—-‰-¬u¶­Š÷T:‡Rê}¥Ü<S†'#ðÌ!2½1ì«Ïý8¼õ|E…º2•A7Úh­(Naš8Ãƒ‹{xu‡¸n{þ¿¥ÑMÛ˜úGªæ)ô·.(E	‡Hø˜Ò8†®gHïœ¥OçQ©Ç4GÝt9†iÙ*õV¿I"›nÙý\]Ñ‘s^`+éAr:ÁwvD]bé‘Ö4µ ¦ÖwDmYh-Î°§ºÀ¯ÿ¾ü§±ú¼=ŠZ•"xœ•QMOÄ ½ó+æ¨1»ZZØãÁ`6
CKl¡¡ÔÍþ{±ëÅ“z™Ì¼™7_/'Dªå¬©ª¶o* Lk!8³È™¢\)¤Q(²è„!Ö¶î™”h(ë²B8¥Ñ×µdT¶\¢mÛºªˆÞò¼èàq‚7=Lðh/»ó¼n+->k$mT+¥€Ê)%&Î³ÏÿDåTÊFªo*	3–äC>ÁyEÀ°Íðv;Ø¹I+¸²Ö®c¼tÞv&§‰Áð+”ùË¤}ða€<ê\‚Û‚É>°h&ôîë`KìJé-!ÄLfÍx„óbuÆüƒcLL¶ôž®GB^}¹È¢s‡þzúí`rgFLé
‹7ïhÁ¥8Ãí]PíŠ”E«–+Ç¯©°´rJJæ”îû¢/Ýÿwæ'Fj³»à™xœÁ»Â@ Ð	)L‘œóù7L
ÇgEY„*s°Rvâ½s:§õØ3g„¤PMÊ“Ac	™‘Îýñö=_Ç¬\Ú‚46kXi5:4Bñ*´ôÏú¼ƒ*Ãò½~·?f[!UJ½(\‹3ü)ÑÙ|YhZd0®  0707010176359900008124000003E80000006400000001644643EF00000548000000000000004A00000000000000000000004D00000000nvme-cli/.git/objects/pack/pack-4abd18285c8b33fc29d1d91c7c59685a6430ae81.idx  ÿtOc                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  	   	   	   	   	   	   	   	   	   	   	   	   	   	   	   	   	   	   	   	   	   	   	   	   
   
   
   
 šPˆ’NŽSMo”oyo¶Ê\a·3siWB6tÕ¸e5Án„äó8ŸR(ë¡õ"<Ý£'gŒ‚Cº®4ÝÅ ‰[.Šð…ï8ø„Î2µ‘%K]í¾«­àènÐçd0L¦Ä'6±ë¸OüÉÕsƒö»Ãl+c-nùAÅßlÎXœôJIr_ÝÃª_0•ÖÈ73ÒãWKA±ßÁeÚ^a*7ºäÔ±ˆì¼Uù–[DrŽ×t3ü.ïPà¨ÎŽw(’»¨‡|÷XK…2ñ–®*®&ŒÅLRÊµD#VS(Óóg~g)¡>]8¸užÇ÷Ú?#X  
/  ·  
Ê  e  	     â  ±  %  J½(\‹3ü)ÑÙ|YhZd0®üS'³Þ‘®FñƒO÷ƒˆÅH070701017635A500008180000003E80000006400000001644643F000000000000000000000004A00000000000000000000005200000000nvme-cli/.git/objects/pack/pack-8ccc5fffd7b0fdb6fe18593983c22ba08bdbcd78.promisor 070701017635A300008124000003E80000006400000001644643F0000061D8000000000000004A00000000000000000000004E00000000nvme-cli/.git/objects/pack/pack-8ccc5fffd7b0fdb6fe18593983c22ba08bdbcd78.pack PACK      3«
xœ340031QHÎIÌK×+©(aiYüüá‚wº?.­H‰¸¹î•=ÿ’tCˆ¢Ò¤Ò¼’RÝÄ¢ÜŒ4°ZÇFlÚÏ×üÞ·|e¯¼F@6ªÚ‚‚d3“œT°êìUï÷¨Ý>«#ýñ‹ž-Õ:Šz%§PU[T€Õ.”ß§Y¢Ñ•˜l3¡ìÿ–ö=	9 .òE—©xœ31 …ääÄ<†¢}vùÖ|œ—&Ûóä'÷(®ìhô6Kçd&§æ§3„‡ÍÑz|åùÜ ow×f¼*ãžò¶ÞÐÀÀÌÄD!7µ8?O/©43'…Á{ñÖ_¡¿&ˆ6u^Ü¢ÑzÙ#· 5*j®xœ342 OgW¿`W†íSeWßizëvù¼ôão»­òkøÌLLâ3óÒò¦¿~v2­9=Ø5¿Öõëºw_zpB$•fæ¤Ä'§•èe0ì|sÃAãñï×÷3Ì±	±pò“07 ˜•/Ò¬xœ342 OgW¿`W†íSeWßizëvù¼ôão»­òkøÌLLâ3óÒòÎ8¥›Ljœô:½NÊPóÆkÙcÓ¼¡
’3R“³ãK*Rõ2š«ÞWK™­ˆëÒû^zsÑI¬ãÓŽ  ·i+«®xœ342 OgW¿`W†íSeWßizëvù¼ôão»­òkøÌLLâ3óÒò6Š±*½½òçoÐäXK¥Z[ÉTCÏ7PÉùy%‰™y©Eñùizî‹}[­}Š?hð™ñ¿r4ixr¿I ç«)Ï¨xœ342 OgW¿`Wå‹š®—•d¿ÖÎr9”¥RÎ%lÈih``fb¢Ÿ™—–Ïpäó£k>IqÖ|Ý¼RÒ9±Y–Ëª '³¸D/™A]ü—½øÓ5r>ûe¾ôÎÿëül)²Š†…ÁŠG'L}_±ÁùÄŒg_&ôK… ê3h xœ342 OgW¿`W†íSeWßizëvù¼ôão»­òkøÌLLâ3óÒò¶VÅ¯:Ø'¿TaÚ¦—ÛÞö*ØÂU’šTš®—ÌÐ8Åéú¤å5Â–+îéažÄÍî-UR\RT°R%FÜéCª_Àvõ2Å¶–s!)È`¸)¹Ã×sŸÍçåÇãÿÎPú#ž¬œŒP±(ƒaÒAÇ3‰ËJòÛSN·ËHgZÅF GN¢xœ340031Qp
vÑõõaè¼gê>õMUÍ­5œš©¶f!¼†%ÎÎÿvn”x¶uÁGkßCZá{«¿9ñO  ËUÒ¦xœ340031QrutñueØ%`´Nú ôSÃ½‹:bøw/w9“fQŸW–›ÊPÎôçä‡3&íÿ¶Í1hhX¤8]ðTARbq†.H‘nr~nANjIf~ž^qÃ¯Ç«VpÔj…E´.u{ ól_ôç5 7/I­xœ340031QHÉ,NÎ/K-ªÔKÎÏKÓËÌc8ëà«Ž³ºg„T'¯‘¯=õÏee~ Gg§xœ340031Q07ÐÍ+ËMÓM,-ÉOÎÏËKM.ÑÒiz™y»¦	¦y}2õ*[Õ”æÓÎ‘÷Óö{ ûÛ ¤xœ340031Q07ÐÍ+ËMÓM,-ÉOÎÏËKM.Ñ+*ÍI-ÖËÌcxøŽóòÖe{ª'íc/úÅºw²KU!TŸ!D_f~A~Nfr¥n^jIbABïº¿s=_|(:¹öœóu‹’°ï&k\® ½0®xœ340031QHÌ­ÊÓÍ+ËMÕKfxàµÔôÇ‘µRý3DNÌz S¸-„å¯!º²†oG~ìÞeº„û‚@ùC“«­¿Î˜ «± þ®xœ340031QHIÍÉÑÍ+ËMÕKfè»ÈW¿õÙçøÕåÂº®Ýê+|¸Ñ•e0¬úpO@Ç!BP—åØß3“Æiþ-¼ #„w®xœ340031QHI-JÔÍ+ËMÕKf˜Âñ”ízÈý9FŒª—6öžÛÏÏkˆ®,ƒaén®'l7øÇ„	÷»¾gä9ñÿ UÌ…¢xœ340031QÈ(M,OÍÔÍ+ËMÕKfWh;×cœ}dš~;¿þ'k§Ãrí[1f0|™—Ó!øòêTQåW²ZwIæ]0 µà¨¢xœ340031QÈK-I,(ÐÍ+ËMÕKføzšÝ˜cÇ¦ò¬–ÃÙL¢3ü#1f0ßóvºr[|G^Åú%.Ë¾¬9/- Ÿo¢xœ340031QÈ+ËLÉLÔÍ+ËMÕKf(|°Ç˜õåÁeýwßì¸[üïÖ¹ºØ_†˜
3lÛùD^¼;§õÏÊ³[6˜°Ü:ÿ ’B$õ¬xœ340031Q(N«ÐÍ+ËMÕKfð>¿?kï¬Ãó}Cw„7M˜mòó¢!šªî©7u3/GTI™¸¬xÏ"/ÒÏq! Tß®xœ340031Q(NMLO,IÕMÉLL×Ë`°üpyÖAM†/'ã›Ôo°}ütò‹!ªÊ¼²ÜT½déË\!…Cî.ãîVžþ¶;dƒüÌTl*3f~3*þ°Ïpî’.µÿÿ#>L»°}ÝL ÷ì4|¤xœ340031Q(ÎHÌËËÏÓÍ+ËMÕKfpò¶/Þg°eÝs“O†K³.ë÷XúÏ‹ÊÕèmÛz‡mŽ3X;§nAöÿÒGÇ%MŽ"Û¢xœ340031QHÎOÑKf¨:sÔÂ'Eâ2ËfïânË,UÎ´?†Ì:gÏ~I•xTe–¼U›—}ö{}¸‚¼´Ìt !‚†ÊßÚdŽ­X*ÿW‘Á1ãñ{T5ÏäÏ9qì÷ÄkÇÊ²íåÅ]¾™+AÕ¤$–$ê&¥&Ò—x¥¦»©Cÿ°Ï‡­Ïž>ÃÏÔêŒ¡,ƒ3n›ÏCÇ©ŽaûÏul;7Ýˆ—óºTYFjbJjÐ¨­‡ÜôÅ,¾õ`÷¾»ÌWõƒožý‡ª&ƒ©êk¸Õ3Ý}\Ç$V,­’¤³Ï ª&7µ8?O/©43'…!xµ«Žâ›é7¬êÙ¿§Û…ÐŸÑ-Pe%©9©¹©%E•º9ù ¾|ÿÝ„—ÓsÕÓÏ_Í«ÚûT6  Å,¤xœ340031Q(É/ÎÈLJÔÍ+ËMÕKfuø·<vóûIË¦©†·q2Ÿ­/«2Ä¢2ƒ!‰ãë}‘åå“ƒ~ß˜){AHúƒå¤Ï [!N¨xœ340031Q()JÌ+NNÍKÑÍ+ËMÕKf`rüê¤±òü!Ùcy•zjßåŽbU›Á0§³Ã‚Gg²ßráË;X<ú%;ÿ BØô¤xœ340031Q(Ë,*É,ÍÕÍ+ËMÕKf8q_(‘ï}ÏÌ}/ßjû]é´Ü‹Ê.–Å.[EcxçÆ4ž.[ueÛk \!°ª	xÚ340031Q(OIÖÍ+ËMÕKfÐ·>òµ§\Ñà´è¯>wÕEž†hª2ÎÞLŒå=wlÏ–½.ožd~›øì+’ªÒ’Ìœb aÏä.±û¤œÈc[±»(§.À˜{†²†æMïŽx–²NÍ{õü©}Îòåý ‰=*¦xœ340031Q¨Ì-IÖÍ+ËMÕKf¸àÒxâÜ‡PnF—€SK+ãj÷¯ükˆ®,ƒá~ldÿëU«Eç2>ªæc²N]wÇ/YYiIfN1På÷9[WnëX¿×‚=·TýABW@7 k..x¢xœ340031Q¨Ê+ÖKføÑ0{IÉö‡–ÇEã¹4C£w}Éó˜iˆPÁP¾ÿnÚê?Sn~Ú_Âp?VdïW¶¿– \Tƒ­xœM ²ÿ100644 gen-hostnqn.sh ³íñOÐ1n½h`;J¨ü@qþÆœ100755 latency 
ŒÄŽÄ.i%«ðuKôùê‰4Œ¨xœ340031QÈM-ÎÏÓK*ÍÌIa¨ãkoéŸa;©`ÓlçÐi_ôv}lþgQV’Z\¢›X”žœŸ—–™®[XTœª—Ì |âÊ¿÷çfÞ}R.ß÷×£¯äîLedÅ¥ii™ºI™y‰E•p]ñYGVLË9UW£³ñÂ<æ9•FË‹ŽaÑUœ	×±g’kZ»úœ™çëµî³%¸;—¯YGif^‰¡‘PPñaWW‘gw|²*éÊätùà],Š*“7‹FÏß¼îXßÑŽˆãÇ-g ÷fp5 xœ340031QÈÌ+IÍÑÍ+ËMÕKfèÒ<?y¯Xš¶ê9ë3ÇJÏwecÖ1ÄP—Á à±r›GñÄSÁlK„/Ûùh- l!Y¢xœ340031QÈÍL.ÊÏÓÍ+ËMÕKfØ_[—ÙmÂ_VÇÕ:¿ò¿×šnbˆ©0ƒÁ¿ºS©­X°6üÀÓ£ó+‹s®F¥  ÷U ^¡xœ31 …¤ÒÌœ”øÄââÔ¢†¼Ê'XC’bûÏß‰[j/V¼ñçB°²äŒÔäìø’Ê‚TÃƒ©ï
OÓ©,þ¹wÁJ‘ÂÎr®PEùy%‰™y©Eñùi<ïz{]³ÙýtÎþIuæ.B”¥æ¥d&æ1OÓú¨7Ydµ~ËéãÎuoþ¹g
DANfq	Cçïÿºk¦z«1O°Ö‘íØk:_þDº¸¤ˆ!pæÕWËÊn/Û˜ô±Yí—˜yÙu ÛoVå¨xœ342 OgW¿`W†íSeWßizëvù¼ôão»­òkøÌLLâ3óÒòÞ?]±û^©aÊ+…\nß¦“{¼æ‹'C¤æ¥d&æée0˜™À|¿7ÖP¡këÆ×K¯?› O’+S«xœ340031QÈÌËËO/Ê,ÑÍ+ËMÕKf/î3¾óÕ{ÊŒ>ý¢ÒÐ8û0ClJ3th¥Ú}<<!\øG‡Ï±™Êµ¡JK*RSRÓ€ŠVV1tÙpGß“Y0uo‡ÚžÇÒëo |ˆ-Â¨Rxœ340031QrutñueXú« åï‡yŠn
û.M¯Ø7kÿÊCˆŠ†Ì†¬y^.®™*{TÒ¯°×~îÿ•OÎÏKËL×Ë*ÎÏcàìßÕPÅ¾“19F^ùèæÓ»oHC•å¦è%•fæ¤0$ó›Þ¶óú‘®~üÿô¿Ãå7¢~C•å•å¦Æ'–”$&gÄ§¤‚©¼âø’Ôâ½‚Jöƒ¿žÎ°Ý¦éž9ëÛÐ+*6 kLÎÏ-H,J…«ïýóÀ}zgZpÔžÕMWNß+9¶ñªú‚J¸â^¹*Vë¿x·jzÃàóþù$ÅE©‰%©ñ¹‰ÈN
¬,Üª).z@µjò*þl³wÈºRŠsájojí‹äz¤x0R^Ûà•ï†©?“‘Õ¦åÅçä§Ãuìšx@5;þäæÿó÷­*ïÑr¨DÖ‘–SZœWýä£ú­ƒ·|V9ñ“Ù§âLæ4…UÕùE¹‰%påOý8g$9Çt&ÿoÉ+xÙfÒCQ^Žâ–méâ<¼óW().ÿ³±NÇsº£'²òôÔ’ø4`•¥"‚§Â_ûÏí=\ÁïVÝdØâúZ_ÀQ ]SNRb|q	P#B[ðOóäÅ{útn.àÙø2£pÞnÖdm™)ñÉ%E9põ7½N¿Ü°ÒÄ8|aÅW‹G	ÿ«âÑÔ#ÅYÚ£ŸVw
ç_çë“/â»göZ€QY5’ƒà¤¬\Ø„ýj‚®Š»Œ‚Û·7¼u Y0}¤Ä—e– `Ï:®5t\Œ=~8OãÂÚ]–\†¬¥83· ¤H%"éÓºõÚß©ìÐ±s©3ßÍÙ)õx‚Ò4}¹‰E%(Ž›˜÷eVTž®·kkwÙÄfc¦-‹@ÖSwõÍÂ†»ßù‹Žœo˜ô+V[Î£ÄèººøÌ|Òý–lÐ`)µKËMº°ø÷½÷¥JnHO-)¿ ¡É’cqì"·s^§RgÔM|à”…¬¼,µ(3‘Ýjšú÷o>øIîÆfíîÝ=†ÈÊÁYš—Ì0-ÍW’LŒ×?¸´5ÕöZ×ë’vW-U©Eùˆ¨62||wþ„%©gjNþ;9ßqýùÃP-E¥yñÀìŸ“™W’ZTRÜ6ÛÎ-ˆ'NY¿~ûjÜŒ‰ÿY•E™‹¢xœ340031QÈMÍMÊI¬JÕÍ+ËMÕKf¨r3^¿díïÈÏb]§ßJT¶¾àK4Ä¦4ƒá‘È©Ô£<Þ†Gvžµ×pß|öÇ¥èJKK2sŠj¿y	†¹|‰ˆYsªøé5CŽ¼©› Êš4d¨3xœ31 …ÄÜª<ÓŠ~‡Š·¯‘Hÿ—aPùNzçÙwMÀÒ)©99–òŸû}ëžï—ºõQ6w¶o‡I%2ˆ¤+h­ýüÜòÊƒˆß“ÜŸýúõ$"–RÀðu:WBïÉŸó®,=¶íñš¬%EÝd!²¥‰å©™)O2–Äí^aæ¬~ÍÍn™æÿ9¿!
2óòòÓ‹2KŒ?óV|=b0ùÑÞèÚ ¦#Ç`JŠJ‹–®ÈÜùj~Æ¢[¢Õ·~ð½Ðºr÷É˜‚’Ô†ÿ_ø¿Wß.ti¼P[\#¹ìmD>757)'±*•Avn¿Ò‡_‡¦üx?àcÞ›Âí_óÌLL€jŠóóô’J3sR,¶Ÿ}{ÔÎ¢ûr2—Êý¿³”
Òf±@MÊL.ÊÏch°Ë½ñËk‰ØŠÒ¼çwOªgŸ­,
Q—”VÂÐ;S;%‚eZ´šÃwCÝKÛ*'•Ì‚J§–$0¼»ÄXÞûæq&C+K/ÇÇ‘*¨~¨‚²Ì”ÌD†Wë¿³Zåo­Û˜øKçî[‹ô3÷,!
ò“¶maêÈOù[²ýÏ¯K¥-W7÷]<‘-NNÌIMË)­`8và}{[fŒfR¨q„Ý…×d›É jRÓKRVN­Ûš®ûCi"eáö>KgBUd$c%áÙ\u¿]ó˜»63¶”œ»æ7Óíþ¬SPù9@w¦ç2øKlê~uBâìzÙK9ÕSBçNy¿wDII~qFfR"ƒQo°”@~Ï¦¾¿´W3+ÿŸšUQ”˜Wœœš—ÂpMÃiõé ^å,½Ç’Z;¢O­\P
QS–YT’YšËÐWmÖ°[ã“—YZîÚüŒž¥U<å)ÉÍSôsÌ3Žž˜=ùÏëì_bÍ ®¨Ì-If8è4Ã3¬X´Êøùô%¯^>Túeo‘®Ê+fÈYÂ¼åúi‹ªs´ë/&6ïÐ "^E¢xœ340031QÈKJ+Ñ-È)MÏÌÓKfÈzzbö¿èBîŸŽ×-¶›äb*Ì``lö¼™ø~³ÒDÁÙ:ùç¬&§/œ Ç±,¨)xœ340031QÈM-ÎÏÓK*ÍÌIaÊß ?{á›ûï•"¢4×,œ&õÓÇ¢¬8?'3%3=W7=±()1=U79?''5¹$¨9™ÁBcç³:ÙòZoy²…º²ÝfL¿H„Æ†Å½µ»ÿ	ØÞ›2óEòV.¯	·£kÌI,IÍK®Ô-)JLÎÎÌKÚçðöü‚/8qËÿí}½zÞùóÎÿjË`˜Uf5!}†‡ðbƒÃÑórø>sSG×–W–›
´Ïio~ÐþKêÒ}áû=œîíã
àÆª4ƒAþNVºE°îä›VÙ?<;Ç}y-Ëut¥Å¹‰E%@cÃz­ö_Öô-~;û2§SßEÅó'ïéaW›ÁðpÞ¾À9Át‰ÃŽïÒš4—ëJe¡«-IÍIÍM-)ªš=Óm¦lI»Ã³¶RÇUÿn­É—P“Ã­>ƒaºÜ£5Ä>¯žÚÉ q)¡¾ŠÃ¾y‚‰`QÎP“úÁiu‰¶æ[Ñß&¼eÈª]¼ô/ºá¥%™9@w0.™²/¡‹_Â†aß¼«ŽNŒÇª4ƒÁJ"@Þpm–]úûNQÛEŠÊíÏn •„ª¯xœ340031QÈ*ÎÏÓMÖ+/J,`87ÿ«ô§Ï²¹~ÿll~}½Ñ²Toå9Cˆ²œÌ¤¼²ÜTˆºÍ3Þ.9¼mVÁ»k1«YüT %]"Ø¬xœ340031Qp,(ðÌMLOu*ÍÌII-Ò«ÌÍaHß$z¬q›÷7óI=s|5.ê33„(O¬*-JÕ-È,HÍÉÌK-+ÿù:îŽÑ‘=;â2˜’rÅÏ©©› BrQ~q1CU‹WÛÍ”ûóÓï­°|>É;‰5[áÔ¸”Ô‚Ô¼”Ä¤ü°IÊGN[LœÿòÂ»²ƒóÎß™PÕ’œ1©<¿(;-'¿¼˜!ì×9ŒvÃåsÝÞõnÚ0ÿÑ> Ç=T•¤xœ340031QH,(ÈÌMLOÕ«ÌÍahØà™pXòÏ#Ž¬Ç+Î|¶øºÓÈ¢.©43'¬è×S®P‹ãËûžtýsjÝ{ñ±|TQQjNjb1Ä¬Ý/_®Xfû}VØ”ÏA÷»5|¼ º€3ð¢xœ340031QHK)ÐKfÓÔëùµ¢ñÙböxõì--Wçu:"d0|LÚ¬(¦pJ÷ù-^¥g[V=¿j« ÍF«xœ340031QÈM-ÎÏÓK*ÍÌIaH²\øgbhÄÙ/3l§5¯OXx‹ß¢,?¹@79'5±H7­\·´ %±$U7#³¸$¿¨R/™a§rtÓë—<Êò!;
×žÐÞ{ùÐ"4f0œåp9q¤ãïÜZ¾[WxÓKî™5ï?’Æ¼²ÜT ñ+RÌ¬ëg5¸?}òC„ã»•çøÐUe0Ü™'êïúÃóÖ£¡|i+œ®¬Qþ‡¤ª87±¨D7µ¢$5/%5E7'?h²ù6½I3½§›•ýžuu	û‹pv3üz2œþlÍÒšûê×D¶Ÿnþî•QÏLAÒSZ’™S4zqUÄ±{ŒAÁzŠLö‹¶ÚÄP–Á°2IlBìÓ¹Ò^ÿ¢W«¢tæ/ ¨Â¥¯!xœ340031QH,JOÎÏKËL×Kf°ÛÑúëÌ½s;¶ÉÑïü»b·ÛCte¯Ö;Ä_ïí*Úq[1É^õä·Ò¨²¤ÄâT3 Qì?KO<}ñl‘sÍ3ã3oX>ÉMŽª&ƒáÀ7=íŸúq3TŸËøÜÜ¾i’nTMrNjb^iÐ kkjÒmtúƒÝ›™[%Ävê|*CS”Á¥z±úímå6ûE[õœ»ST”ll4çŒn¿ò=Îü÷¦·DyÔ¤¯X¯–JGQ’Áð¤gú­>›·¡ª—ys®>XÓJÎª$«8?hˆîÓ–¦Žcn/Ø„®Jü9Ê|4=Fj"²Š†ÃIÝu•n;~t©1qªzë)ÜÆU‘›
R’Tš™“ÂðÑó‚áÔ´†’|“óC§Í«–ÝUV\š––Y´¬ïBÃ¦·Smž/˜ýÓeÙ»Ù·^AU“Á·´ßcMã¤]õ§ÙÕm·æf¯œUSRYZ4æÖ{ÍîËg[ë%ÿ]©×Þ×¯ø·ÀEIÃ÷óÏÕ_æxž˜ÛÜ¸òô&ë'« §&ÚŒ«xœ340031QÈ+ËMMKÖMÊÏ/ÑMÎÏËKM.ÉÌÏ+Ö+N-*ËLNÕËÌc(0KŠ)ïHöh*Qè½À¸Jÿ§oš!\wšnbiI>T+²¶£õß%Î¸_Ø:)|_œjÅÛô	ë\‘µÁ´”$¥§–€t|ó2?Ä1ƒûÈý«·]©®éü¶¿*‹d[Ú/fËHæzÝØøowhâÛÉbÜÔfVÖ¬xœ340031QÈÌ+.(-ÒÍ+ËMÕKfè™4kAÜéÝÇª.„ñÝŸü1ña!¦Â‘¥Ïæ5ÖÉ¬œû|ÝžÅÉ»®Ûù£*,-ÉÌ)ª¼"¸Ÿ_ó–vYA™]ù*ñ{%oË:TE2 ­xœ31 …”¢ÄäÒÝäü¼4®êy¿vÏ›ðìéŒó?ÄoÈîÿ¢ÄmVU\Y\’š›Â`Ü³É´n»¬eBZ¹hãzNå9F	+!*JSRËt‹JsR‹nÝØr×o†÷:ÆŽóóû}îzß rÝ-~¥qxœuÓ{4”yð_—#—=+gkå’¢ÖLX”É0îF¹¬„˜¯™—™÷ó¾ã¶¹¢«ÐÙVH.….Dr/­„¡•PYI.-ŠC(vÆL»Ó¶ûþû|Î÷÷üžßûèëð?U"Æ™<9âóìaðøS3éx§íÍWµÜ‹RÍtutõõWÌ@P.z­×>|u&åJG^]û…´íe’ñˆ˜b£¾<„áŒÁ´’Žns»“;
ƒ÷ÔrN1sGŠ‹“ÉÕÅ†bEdû‚G#NåòÔÆÈ£A˜?CéôiõÍú+Y tBp*£¸œ_[NaAu®O>"!sñŒ¸\iocN¦8“Awžßœu·DEì¼¹ã,m)ª²_MD¨Ì‚€\*™”÷¨r¹Øng „qÓ¾‘q"›Y8=¥òqHÌ’åõ)Þ‘kšÃžŽÂžèt*”¤Ë{CÏì*ÔÝy~AyÙ[zœ(ƒÎö%2Ág¯½RÔÝjÝŒ'%·Z.<—êûx3©ˆ/âòa}	êài½Š¥nè÷úüÝŒï-Üd?C”ÍF¾ñ?K‘SÊW…SwÍ8“Ó¦™;h%jesX`:X4W]/½†·x=°ëZÂ¼ñ½Æ·¢$_þÍÈ[ØZ‘nªÚ¬K †Ï´Çlê¿n²wôÓ œóZÒ{•-&L¼,%/`vwV‹Rü¨4.LÇˆtÐAl­?Œ\
s¨n»7ønðO=õ!&ø”îšBÎé/`\¬²]î¯?ÞV•&B,˜†±!B0—ÊáÇP"Ãöš/4nmÌö(“2„ÃòånU6„¡!ˆŽp*ƒˆ1Á©ád›½Õ¹Úv¡AI[ÛÚŠ~¥®X"³|SÈ1ûÞú[†#u¹mE«óçÈ§Ä™7ÊY™Á#”T˜Ÿ\‡Õ«×*ÅuwÅD$d‰0BóÃù~«Ï¯
øiÍcõ’dûºcMI‘â‚	ÖKa¦ÞôØùnEMdÚ’×,U±Gò³\UÐ^“\Ü\ú›•ê–1¥½Cµ?Vì¸®A—ü‚X‚)Ïîzl²úEÔ£xD~ÌksZA¨TÚ@& ´n´oÕ¨öP¿Õ,Îb¾2{Kr¸0‚üÓ¡ƒñkG»²ôwá
®Á*>x;\^ò?˜	Íšd¶8²§SH¨ÒI\âÐ°‹iÅW˜º‡SrK;HO§´–³«Gã¡¯$É!?ë->ð4¢ë=k–xÓlÿJÜq9l?nÿóÛ%¯.”ªªi-]µIØT³í»bq&úoÚFKº~7#(¹wè´Sü[_~øŠ1Á­£–‘·R˜¬NyEÝònÒDïÄˆãß½O<7wÄjsþRŽ
n=”©{<ñ"8eaà]þÙ'èù?¿<-EÞxÑÙÝ$N™ Çý×}’EÇ³HÇ$BÆŒŸ6¯«¢’–,yyÕ2òeYçº§¬£Üv÷ÏüTŽòÏE :¼æ&[kÎgfK™,õIÛðÛ¢H‹Ç€ïj\j&ßÜ=ãÇPirÃ?=ðŽúÒ0JÍ–#)÷}D*³‚ífêó†Ná‘B‚ŽZ;o^Ù“<­ñú}×LÃÔ@`¤Šh¹ƒaÐÙõÕ¾ªÊ¦5–¤½V¹¯l¢G‘ù7aATìiiaôÃëlEùèà?¶ÄDõ4	Âè\˜ƒc ÌÇd¦6|¯Bî†Ö¥ª¡–Û[6hˆÆá¢þü›c ŠÕî£Œ.Jß¶A«£FõÆ´ÿE¡Â!Œ_ï
OÎ9ãSe:j[ž7oôàèÝba‡À8ø@e™µÙ¯V˜:çñ®ä5
•q˜.MrîßIÈôìô6ž˜5ÕQ•OZú2âF¡Žxœ•w •ÝÇe4(3‘QvöJöLEV„PÖÅÅÅu¹×že&dÏÈJ‘")Bd¯„¬(£$›Ÿç¹½ïîÅïŸ·÷ïçÜÏ³Î9Ï9ç9øù……„ (SÌaÊkŠ°5ÇYÌšpåÄ=”ÔË ,^év¦†þ•ÀÖ Éuq€Ú¢`[/Ò'HqˆLŽ­¹[›’`VÉS[Ö±—èd
7ã±³q´€m&\p,ŒÅå}‹ÓÍ¾Œ3¯´îÅþú/ŠâC`¶`ðxÖ,NÉ™ôV«¨Ãèð{¯wÓW¢7ƒ"çÎ1l–å ±±áq†š Þ(Kœ©+s£jy|w×…n?šè19Óô§T8ÄÖbå1  ¼.(\I9Qe;e#¤Ýé’‰éÄemÛ²¶$b¦ŸóãÑx]¤pÇW©‘¦õ„Lõký“†¢¶¼&Ž03œL¶ÒÈÎö,¦˜jrä»çGÖÆþÄlàPˆfËcA¡,‘Ž¼8á‹5­‘Rg5[ð“”lÉút•»v,à68¼	"áæý9y¸'ço}{ºlö`8‹MùÒuÎº‹ë^*É^:ÍÉsƒpbá±AXl
±ºV‘ö™è.==[hyíïW$¦$hRùØ÷õõdgDëÃ³¸¸¢J²i¹˜Â€BÉ§$]HîLÿVÎ¯73lW³¯/mÉ:8@L-y6ïœKOìY½ýZ¸ÕTmqÍSæN
œÁœ5<åE\é&i-w»ƒÿ %UT‰Uù-æ8 bö(™&Œ0ÕëÍŸŸÊ+b;ž?poÿ;m‚@8lž=¤ÃŸ3òZß×_êÒç½Ïã>ÅQ¹H@ÜÓ°çA¡õÄ—‡|ºYž¦¾]O	¹”ã?†¤xÚ8-
iÜ5_¢9¯4üˆ“Ç÷+ìoÂb1…9¸òÀ-à›R£sº5öEf„—ÕÊ¨ê_‹ñÎ¤~Áž¥®s&Ôáe=¿,Bµ:?{‰Pw4––;HÅœQ™ýù*êT9Í}5Í¬Ç2&R [Kˆ­ÔlóÄòØÀPÿœ¯Ùö›	?¼R"6>N¿åL†ç¼°iß‹gû^¸<9ÔyLÇÙ?…ÏNàµtl/ÐTY;¨yœC“ñçÇF¼(‚,dkyÛVjjÍcf¹ÉÛñXC]7îü¤VuO¬§3ø¦%ÆñBó°	ç®(éÕ5&§.—®íÝÀ&mvßÒçdü®`—´|uÈKõÆè°–ža/6V«6§ƒê_"ËiVÞ&ìIÌå™_!ë&9KÆ¢Y[ˆÍ
êÀ³5ã™¡"<ƒZ[žƒâµ,óÅ’JÞ¹wEÀãiHœ?•­ØçwæbÝïíQå~‡cv¥ »eíº³7Š}>«-XãÁÃî4¾}µõl#à›w6tSjHcîôð—¥¬®˜ÛÔCw>Ó¾pStù`f¥g[àâmáÊ–Åø•V˜Â€99M¡êQÛäŸË{©îVdÏuŠoÍÚšÃÐ÷Æ§HÝoLirK/^\xPi4{ÐÉ[ÔjêÀ³ÙŽlëüô ¼öÃR§†¤ÊM–ªÜ[´.¼—J3ÅÂ”ýU)üEÿ‹mÇ¨4l  Óð¼Þæõ«Vuæ×|QÊ_Ã¨¯jaÈoª*W_G E…5†|û~7eŒh% SÔ	êí¢¸óŒ`JÕLæÕ±ÑÖ	La@8ðZíÁÏ]ÆdåÄîÂ.–ÓÞ¹¸5k<!i1-Ñó–«¢=»bÓdí ‹ÇwÄÀwò‘÷µM;±"}ãŽ¸­›HèøŽ$ðË§ó£y ºañ¼¯ÈK„+zÉ$ºd·‘PˆôÏmYsíï¨f±>ÅUV5Ív.˜³ Ã›µóé÷É²Îº9æ_Foí…9ˆdB¡·ˆSŽ‘®Ä™°ká•çü6ƒÚ@ÿa¸ÿiÖH±ÒªïÂÍóÅ¤?1gÑ"14¨û”þéøß‰fç	oÎÂ0Ç~ZµcÊuÙçôÚznüŠì4*ÚšFBx6;9À±6OÚPøåõË“#7L4g¦º¼"Š9ŠÜwózîþëE‡`ã=/y‹‰*¡pÌq@DƒW÷
SUk¦ždå*òH=ÉŒ¯íÖôóe[
È ›p4ŸÇtKÚEsy)vzBŠýÞ%é[¯í`Q©„ÏC¯`Ž"SÌ•ú‰µ=Ú¥®xß‚Þ¬ÔR"Ýšv‚™ByPPs(
81’÷Ø´Ÿ‹á²ÏÛi9ŠÔLÞA?¹ó¢g^VÊVÆýd½ÙH+­™Ð³+Ø}Œ;ã¬'vGÄç”¼˜ó¹¬5¢ó[ ¨÷ÜetÄn¸±©d!zºgÒøÎM÷>Ýžn;Yê’>4|zëå¼ÑeøÈÀT¬úö ð³WXá~|º·Ô×&M´*ù![sH$Ô
sª]«ˆÔ@&¾“>ô‡x[œÞ]º>s[Ô°¿Äš§Rdõ¼w@`XDáÄñ¯Ø @§˜üM©ÈQÏŒù€0ÙºåÒ+×GU·çQP[³MŸw4åCçÝ©©é=ÆÒ‹gX{ºy]0FAR†fC29M!5Ó–!Îg³ÊÓ€Å7ƒüc÷{nÓÛð°O·¬GÅYç¼àÙFm­Üoä¾‹^€Õ¡H¯ô7ÏN±É¿|óv 4’ŽæÐûp«ÿ§ ™µß…è—SHª]ÀËz|äøçlnsCOÉgk[ªKgaF6¢oã]§.À[Nôþ
W¡~PÔðKÝEj"»cû"—Ñh¸5&ŒZ³s#žKp)ë»½|Ñ”þ=Ä¿§ŽËú|F·¸ÛŽ¸¹i2˜ßÄa­ =-;|óZÐ¥J®)qŒQÐÃH2ê»ý”øÙÆÆü“×fŒFÓ€ElM`}rYn¹A=ª¯%9–{ËË‡
xjXÄå¯åwœ¾ ÏÌ×`wdsôØž{8¶ýx6_‹Ù³'ÝŸX…Þ&.}°=üìWú!•÷¦Ü×’ßÙ)1˜¸ä)n9·PsóÍó„úÓkuÑxÒÄRHêœJÆ•}øwæ—>ØÒ F¼ ‚R”­Äùƒ_ ë·´Í5q°àïÇ#<íów
³Î¯¥	­Ö«Ý’·5sDBl7ë¨Ôvó~²°ø£FÕéø!òìÄ­rŽcYgÒ½M†ò÷C‚š
øzç†Ž’˜Øøx|Ó"#O;<!½P†Ù’º:²82sðÔzÐ[©@Mâf'Ì,ZT¾è¨¦ÂÂ×U¶¡ç`M?µx=ö<¨Ç$E$ô‘ëà¬i¡ð·7’“6ÞŽ¤©Ÿ¹}<å
AÓ6m2¢i~6¾…@"È?B+Á„ü¥1WÇ_çù\ý¬þù4æ,(Ó1ï{¨HëAßUë‰¤·Õ:Éå/aŽ"ÓeõžâÅjÝ>·½ždõP6ÐýÞòBknf÷§'
´š9úÓ^J»à”ÊØ_ÐÔ~•€-ÊôOšŠ@6FIœ$ún â“ tªN½òS©sŸÌ°’d‘à5Üž/1`ƒ`n¼²”þ¡huøªA4Ñ´?=‚ÿ–0(ó HÁÊÒëKYž~ñM©ÏÑ²Q”Xò€‹±Õ	áÏ‘iz«R^úß³í›ÊìÌ¶Ç7‹}^áäZHº°§Ïw\wÿšLW]s\x tŠ‰y¦°W×ÉOj¶ŒX1¿aw"vl¹tOV*eŸâXš&.vkwžLhÜlö‰ %ÿ´Ž4*ej§k×ÛÄäï3I|ºókÇCgÑ—ë;‘|Ý±¦õ|X©ß»˜ã€ˆwÌÁë¦ÏT¦
‡e3)Ò©5ìQ)˜ÒŽ€	ªîívV¯é
Yòµ†ï]FT	™Ÿ°„A•¬PNO¡¶I#Æ/DiÍ(ø:™:£°ä6Éâ÷”†]UB‚vqQ0­ä«‹ÛãŽvf›ýgà)å)ó|†0Ã½BZzqÓóŠÐ ,aôEBºè_cK5Qµ/.®,Y;L®ì€%¸(Û½Uòö7€;O-ïb?4@¹ãÆqDA, Ï“ÁF“«Oß²ÜX‰³Ù(”ÂœMïdÄôýJK„Pç\T ûZ-zsÉO>Uöè¤÷Õc_fmï{ã‡LŸè¿¼%½ùBŒr´³C ¶5$z6Ú³ð¬=­ÔOý—EÉFç‰öC‚’A6Í1úwÒ#Þ×Á&¯žñ>«Ï×3¶P6 /îÓåtnW«7MýŽktQÃnkãˆ²Ü\Jd{rQ4Ó^}‘½ö±äÉå8]š;s ŽzeétÒùÅ¡¯½é8¯]°Þèà–Û~œ½9K"¶aâ½ãÀ×å¥³G¤7ªª·$¡T ÇÃÔ
½T=,g*žÝâDEÔúKGè=† øówpú¿Pe5>|fÈ:îÓôØ< ZC|±Îoéä©Hý•7^09ì•ðYJfë3âŒ Àa€ÂáŸk‘UÄBJšìB#'I4!m’˜³ ]š²û¶.óå†ÎÚäsÆö¸"˜ã€ÈY/é•÷ê›–8ò|Lp3xØØ–6C8ÛÚ  @ÿXÛebVá:‚ºí—¢î˜×Óì&ybliP¦Ýô×·»PÈ„…æ‡E¥l  ã?rhÊo%ô~ ›,½y¿Þé´„ëÛòèÛÖ›'ÃZ‰ömÖonéXòe½º¥Ç©‚ äz=ÁZw¥ÌÙ!_“u)YðFé Ó©ÊS¥ŸùèŠ/V~¯ý;jµÝ:2—¯U¸AÏà4ƒÊû7Þ«¨5%3Û@w"Ôœ¤¼º^éÿ#çuÌÅ¼tƒ ·]ÀËõë”nHˆ´’°€HfCÕƒ‰Ë’RÛKÊÁÖÞmm‘ø(%?íŸíÏÛÉ:—Tï´CêŸ4h”x!Õð€G§güµÑÔb¿¾z,Ø @'e}åúE2g2I½Y"ºÌD%º#Ûó&à? ½›•ÁÿkfeCûáÒÖ¼9t³ŠâŽÏgæMwÅYPÐ0û63f«¤¶À–õÍ*pÊ­^P3ÿ\ÒøŒ‚Ù|ƒÄ€#–ónnÓÆE‹&œ7ÄIz…}¼æL·çmL ÿ5i~óÞe,-"²\³aIÃ42îtáŠ\»  Ô ýäAZyZÿ¦—Eº\jgíwa /JÏê“%=¢×¢Y¥¿Or¦º5î@ÀÛ?Ô^Î8¿&þMäûã>¬„­{ŽVªbJ‚&Šp‰ª!þÞðKÚeiœvšøŽÓóÏI'o0«£§˜lÅxŒWå|Ðö¬-ŠÔÏ¿—·›C?‡2kš|<°š¾òëL€æ,ºS¶fuâkfGücæêˆ	R†ð9bÌq°yøPÓ¾8õräÜø5õ÷¸Ãìý!ÛÓvH„é <‡ÖãP› zJÆÀ/9–dªk¢Xã ÎnmueRNÎ_<Ô¡×LŒj’ÀJ FOŸ·†³¼²§|*Ã7±î×÷iKõn	µ±Û4é£X¶£?[¬D ™7jB¼¢tbG=ž='ÙÜªÿî@tWì§ÚaÅ˜Ià—Ué~é.©`L[&¹¿âf7þ–A=KGˆ3z›: ±ƒ2úÔCÓz¬!2Vê–ÖÆ-2fn»  Mt•­þýx;œxíZDˆÙ°A5Oß¹]ÀëWëâQ#f”bâonRÃÇg‰Ö0 ÀìÇ¦TÑsšòà—¨±ÕÆÎ¯»~ÓÓã`KƒF§F%}×-eÏ"üÇ²üÏ@Ö|9ØÅ°€4ë--Û9™˜àš!zu2©‡nl[tþ;?A÷6„NŽˆÝ=X¦pO÷œÇñŽLIPcI3#6È´°Jõ·ÛÒßÏIˆILa@¡tu£zRa„Ç]?47´fæÁÙ<#émY38Y,€sfìµØU.¼ÞTÎúÆÇG}H¸[90gAúDêÒ1ë~±XÁðžÉ*¡
ííâ€H@ ¤:™Þ|öý×¦ñš•ï?éoKÃ¦@Ý†·œó‘÷'¤Â57TÖÀ•µö¦$(Qsÿ4
ùn†±ìyÆë³üÁ™¶ê0……W©†ŒVcÇ$JIê™1žžÚ–¦Æ6«À{[6œQÍB>i+°‰y\Ÿ aÜ±_»" ²ßÆg£ÿ"Á
ÎÓ¹øÂš'v¥ ;Á>¼ŸÉ~ýWð×`¿ã'“²w@›J|Ú&V•ŸøhŸ_Ìíu?Fäá¹3z¤VñÇkT&Sž*V	šk^)YSŸ'Û~<=RË¿éîâ¥»tÔ÷¬»­‚Ìw;Á7ß¶'@÷Ýsgƒ.vÇl‚·—W×e7R·ß«² D‘ý¤»1(®ÎýXJ§·\=Û/üŸ8 R% w42ã°æµWÕ&$—ˆËœn½ž¶(;G$øÿ›ï¥fÿUŸTª«¯S÷LNÓûª±Xz®†¾a ¨¨•íGuf,Ûœ/ëvþFø5mÇæGû`ß¸æå¡½Ü%vY>'¸q\Ò—lE 6=èŒÇâß-»_ÿ6øéË­%Tœ“¥e"ö<h7^Z¬sÄò
þk·ŒïP‘5<Í`v¢1…ÕæÎöI5iy£š¿&€Øü/ÒbóçV§“ßpb4ì÷pMFýAÑÄi™å= P/ßÆØ³Õä³î }^ž[¨®sOÌàÈ‡# Þö:•€"¿Ï×p¬T™²;Ãt'fqøw@AíÆ¡ÄÁä¬Æ“åøfCŽê*q7ÉïF€vºCg$2KÕDÈ«=¹ƒw2èjœÜn æä±Äõ«žê[ˆ-.ç:©Üd¿“CÖ@ºˆz÷nÒ"ÅÃSC»¹}C~ZÑóïÎ€zÁ7¢%ú5íµ‰—Þnè¨VìŽ‚DÊ1`Öü–Ø'JášiÏ{mIwR(øŸ<3 w´êÉéGf.c­Ömšçî/…PÙ‹%©xÝíåÏ|Ï.¯Ì‰Q‹¿hz¬»ž'ñábðs½ÞÔp&‡_¡`€a'ç …ÿ7häV-iù%[…ïtz¨0ëaWþ‹©,»"  ü‘˜®o5cŒRlöR9.Ós½C»R`ãlÆô».ÏhÂ\Ù~n°èuÌÙE–-ãƒ0¸˜¹qÚ4“Ž[Ê8®2ÍýÃ”î³DT±Gž ,k´âñ?ýåóZu¤„0Q™…ñ‰iÔ3¬`4FVi$Fú¹Åµ`Ñ9ˆ§€Ó Ñ÷ðgnˆ~EÎ¬Ï6Fôêèƒ+_Ëí±ÆA£¯›]"Þµ‡ÜWZI¹ÖÔ3ì§;Þ„• —=Ý¹Ã˜«f5êÒkzýR8K®fâSÜmÀ_k±äÞ!âu¼,‹–ýÜ†³¹Ú…ü|ü[ô9#ü$?ÏŠË(,àÃíJ„DPúÜƒXl 8s¿Ùìø˜<ë«G_uRCTIôþÿïíåOö…õûÛöQ‘ÇÔ—Ü<q‘ãUpÿ] P*ó‹9édÊ:Oªã7+êQªßa§va ¯cw½­øJH=Ö“fƒÍ[ÆùÁÕ6€s‰¾ìªiÍïîlÔ¹fR4XGibÎ¢Çÿf-xŸSàúDòØ05vœ•	sùñòjÏ	KÃ•{f—b‚Pé¥v¤7/®x1œ4;ëŽl«òá3ˆÔ¥Ìz¤rŒ÷"¶4z¢ÿèy‹‡
tÍçëŽKž:š@¿>ÖÇ™øÏég ®˜£ðc\À	³ß‘;5žî!.õò7<m´–²å¢Í/Ÿ’9Œ)‰žzÖ©Æ+L*uqyÌÜ¨–²iã—ÆÅ££/2Og,gLRõvSP™¸ìÈ¢MP®€ÆÑ@ÎFÃ¹g¢
RüâÏt*–žö$cKƒ*¦æ$(†‘…ê³Ýñã:#Ø @Ç\ýåð£ ‹»…WB=ó8ß˜¨•mÏozL¢
Ïº:ª§zÊ]ÚeªúÞŠCåŽz‚uôf²êUêîN‹gŽ'2†]¥Ü‘+ãª³Wé]_ú˜o?¼s[ÿÎ7ü-A„©50òµùë8î²èuBžûTè§½iå¶^¡À2š–Þ¦uÓá^`ÍXÐËÐ¬•¹ë‚1X4+n$ÍÏ¹ÜÆX™Íz¥–ÚÒÃ¡f0£-ÝÿyŒÛ“}>êŸ½wô”‹óí’VžÊ{Qèñ×óe©E”‘$QŸh®E8=2«Š{°hžwwnÖþ(Úaª°Ó¹qðÙXÂ–“‡k»°`3(2(˜
g×É‰Öúý tì[ºù>aPÚŽ”DØf°:~À=U˜áÚ/ùéoáÝûäw‹çŒZ;©Í(ïv©I]«X
"ÞŠ›"¶<¦6P’ÇÎögZ¸ýùïUÔN5]/úç¥oT?ÄéT1+µ/½úÀHNØñàåÍ×x~'r©c[¤%Ý÷EÖª³_ÓSôŒÎ[kK ÊÊ×À oë³–I!ˆ.f§§¬…‰I{þZ¼–sÔðÁ^èúc_‹(%çý`‚®FSž+§¸çÝ^  )’IØÞY„Ÿßðäº“É‰BÜCâŽ8[ˆ­Ù¿}šÉ‰‡‰Rß'Þ'?™'Ã—ÒyI²;*®-Lº5ÕÝ<‚ÏMüÙêÇãÃz2Î»c€ å²í/¾w¸„my=ohv…Ë•` ÀÓÿàü‚ùÝ-„JÀ¡¸ëB+Æ3±»3  !Û.ºÐÐàŽ{ãA†Ã5ºqºŠÝ1@pÞWç±ÎTYþÍ6•Pñ5…œ šŸr(Ôfó®†9AÿíWì·øññ%«;ueI_ÍB+{?ÙþXPøùÐA•ÈT…âÂ‚‡Ï+Ò˜©qö‡âF…ô®™f$ò!ãáÍºçO>!ª¯ÂDƒÝàÍ.ðŸ[´ˆ>Gã“Ž	‰Y&NÒwAÓ“Oú_ï‰ºRÃ;¯m<ÿÖ )¢—ŒÛ¬k)NsO\'Ø¥œù†+(Â]*°€8Ôhìî Ð†"ÁAèo…Yºt®Ñ•ƒ™¦•Ëò”FÏ{ï/³¿PLzNâså°`gQëwñ¬}Ñ€uÈ©Äœª\º‚Ü×Ÿ†´øïznéœÚB vv<ÛÍÐ‹ËÀYæ¶t†£ž¬è×Eòoß6Ûù°º>.":}ƒP3ÚÚí—fë…Œ‰W,÷Í·‘Ž·âVÚßgÈš;÷™ádDbàPðÿß]Ï)l¿8”r¬5>|!ƒž©½5½+‚^	9Ht½ÙNƒJ‚‰*6H3Ÿ¸¯«tW
üHÀ:®¥Çë[·)ßS…¤Bú,[æ¢mQ<fP8ÌF“|¤õã™ÏÏ›4"\5ä\ÅmtlTŽÑFÖàurª«*ô*»N†aLÁëeº„‘«Ã¸©·æt“HX-ji¶…‘›aÐÙx¤µÜÀÍ~‘^·òéÒ¤ÿ]eØâÔeÌYt‡+©Øq$‰â— 3µ—î¹‚ÌqptF.€ôî3Ü\Jý˜ ñ¬Ù‹Ô´Í[ÒNð¿ÆfZŠ>EºK¼Æy|‰¶ªÜÖ‰‹[½æúäÛù&\ÂËWäžæd§”ûc %f¤r{ÀÓo—¼4A•6÷Æc0ä·BÞFÊzSýî›_ø8#EØ©Wpðñž(x$NÅ5 *9¨¹ºmyâ™bFZUøž$`jÆWÖ•jîåx®\€¼ã¦ùÃ/—0‚ÀÂÚa"wµú9•É`Ó¹Åc	ðîÖ8ÌYÐÉ×Ì 9þ¢° ¼1!¢)fš‡Åƒs\jür9=¡¸sº ÅCÿ9GJz«jÆ–HS»?=
sgPmë”-7{½$03d«Oi§}Î%˜t„u¼yÿÉUÚýóèq²îÞ˜Ÿö…ÏÔÚÇðEú}”÷_pŒ‡+=ktyÄDQº1xæ…Š›iðöl6![SW8b³7úï¨f« l ÷á	
¶F£óú.xÏ|M^î‡ÅE%í´5Ý›‰]ðØï&Sü.Ù¾¨,¿kF±ôö¥–CmL×Í´¤Y²¶³Û›ºº¥[õËÔÉ19Ï+hÒ-¸õ­wg@Mæ·ãKŒÄîc3™a„],ëî%*x»c€ 8«ïeˆo|iloÝ­žGòáš[Æl¶0¨ÍK ,ÉC/ÌC;~"S1Ëpì%Õîmªàíz|™|¥vOÔ,uºå—z{îRÚáÔ‹J³×…rS÷$S?¡ˆ_×ñÓW’ïXšæâÕ•†ë$m‘P3prûºÅ¦½«æ’Voˆ¤î½-íK\±åÞÚêw©¼ã Ìr3Áóøu7wDqÌêç>Xp¹)]bAçÄ†ºÉùà
«Sx_GM[¶£0Sˆ‰,áÏúÏˆÌã¤¸ðÒôqâKÓ±dRùìÇ÷¢Ð‹¸{eó(HTOþ~ESKÌæÝò=g/ÐléÿzLÕ]Êñ¾N¸£ˆ¾âk(ýV¶yÓ¸‚µ/ðmPUÝýbþ,ÆcéÞhìÐÃ%#ÆÚ¥ˆÝP1ùÆzuÃqÆ*(¹·ú'S¤²¶aw”Ð§1ð$ºõ“Åtƒ™´™GlKÿ	;µ„Ãü¿K¦©"<h~ÝFHfé°ÙCkô„&²Õ½9ÖváíL£¼p7õ‹Ià—%§ËÈg`óMFõ	Êæñª$¡Æ[ƒè™œV'ZZÇë4kí3UQ¼ëÅ‰‹væÀß~ïÙû;óÖ_¥$òLß2cŸ¢Qðº¤û–uÅÌå} Â!9Ð |þÈ¶¤Óf5iï×Vä__#þˆ'ªñxÁlªæ¶­ÄÖ8¨2}@¹ü¸}‰ä£ˆg]±™Í_|6æT°€­-ÙÑeºã¾Ó¡>#südš¤ß,v ¶˜ùŸ{ùºgÏs½ùiœîÃÍºÍÚ—¹ Z±*æÑæOÏK…¨òº“ôo>ÙÆ ^ß}è-³·9ÿª¯2a°å¼õ7ÆjÔ*ÀsöPfåÁ0¯×–mÆ¾i­Ý—uM±çÑu+¬›³ûÛÃÙtŽÂ ê4I¿õÛIMØ@jP[æüC!æ|Ë*šÀ[¯C¡4ˆÍö\¾¯“¨Ï-^|ÅÑNŽµ¿ÐfP\Ä•¬Ï?×_?bËz÷}¸ýÃ¯J¾Þ6Áo±€‘mA±$Sªì`BOÙMÕ÷òQ9 `0dSÈv&ÓV¦]ôAUiÕ­‹•Écj±¥AŸï=--ÌQúÁLZuý!i5n¼·OcÀyÚ|SòD^%?–õbª†‚G3N[¦J‘vp“MpÙ¼žg§¸y¥“qNôê…&îˆ¡¯QMÃ‘ ‹ÃZÈâ$®guÞÖ•Š;’àÜèQ¿îXVå;1'”Xèb.µ":Sþ¢ ›m8ÌíŸÕägøú|uJnM_Št­»!Ÿù=k4Yñªlig~¡fõF%+]¿üzÍÅÂãX	°¢á‘Ÿ¬WZˆÀÃ%û8ìo~°i£Š{Øp˜Û±€3ýÅG9ÝŒ]³-cÝÍ¯˜ïÊ`º«5DõI'†È‡ƒzc</¥O˜j?æ@n:j|Îð’ìçÝÒÏAA!@—l·~âY¸¿«ÚkjYß+$ÖMÃö‘ç?	9üe€Þ­9}uîX.|cVsf	žBpå2þÅ ÄEÅÄŸs•6ö®¼UTÏ›Sã*ó{)à ‹)‰„þi%ÿÏû5 ÇÌ®ó ü²hðEßF­ä¡¨„ÿ¿ô¬Hºr<“i¬û”,‹8ï8…2†”ÿ¿(pg4èÏï£póœ9ŒùU:g©ææ0—„p4ãÑÔ¼ðgß' ƒ… Þ³½?¸ÇDûá#.Áw.#Î—â#Xd°’ÛÅ2Å¹š¹è†7Ì6"Î‘8>^¨ÿ«àh–r.jHÌ¼ˆª×ò#{ÿ»S!Àâ-°{à°Y³mÂbyÃo§Ë6.|¥B,¿—›ææ¥íÍÞÏ%×¿}»§Ø$ëkYÑ‘ó…¥ïçÞ( ;d§z™]º©E¤Øâ|Bù÷­Èß$°ºòÙÚ˜ÑÃÙêÎY™´OJeLìÍ²¡=ÌªißîòNO~wÏûDÃ1œ@¹7
®ˆ6­d.I,Ôî"ú,o"X­˜uùg•Û‚¥EwOO‘#ÿíñÏá¥ÌÍóæ‘Xã Ú;ë¸ì<Ó.¥žkÖ4¡îfªÍX	ÀˆðÛ­žï¼eoñ¿¹—ÁßQÞÉÅì¸_ïn_›Iq‹!i×P;UíÕ³˜œ¾´´YŽº`Áæv¬Ös*%‡%øÛ	È>XðK%Ç”S¨Œúe#Rá(ÿô¸ˆ70¡ÿ‰’Df1VÉ×}8¼4¡âkýnß ‚f-­×™¾Þçü”rö1¤¼ri7Ü®Aßc¦™ö¾ÃVÆ<‘”ºs­T–úZN¦[~¤°;žìEöÁý”iEþ@ñÕ#¯_.˜œ^æÂ¿3Êw7Å2lýõÿQ8e_Àßúw	¹ áúõ{JWÆ…,El›º(ÒRSH'±Ñ=+‘˜õ¬@ÏwžE?$hžpå|Œò¼õJf#-…¦\ó+—ýÀ`ÿÅŸÜœu¤*£9¯:GQÑ²öšXÌnä‚r±Höê%Þ%ÁU#Z­é–êZí÷C‚ÊIm¸mYÙ¦e7JÆ×mæ¹´0V”Ûapp‹â]]7Þ¸%¡ÌÏ+ß±°[&6î©ý¨Ñ²TÐŸÖjUè¯(U’bÙ›C¯Z#£ù¢Üý–ä+”¯jÞ¨´EürÛÁ½Q@ÖA/qåärÃï‡w©D}‚Å–;^ÆBn@¡¼…äþFÑïë¤“Dä ÁÓuÊ/ö…¢Ï0%QŸóXWN¹QdoÌì¤´`×þ~Üª„“4%ç[´ôÚR¤wØ œÇ+</,0¦yƒøI?¡©Û‚WG"¿D—Ã(Ú»V+öƒöå÷‚’UËOÈDPˆ<GmûuüŽÚ¾K ?ÃŠ&Hm*ÑZµÑ¦”ŠK³ÛZ€©#ØžåÏ‚¯õ_âz¬Mô
®po8=ÆžG×töÂ†òjx’Šx1¤y—–äSaì¸R+u"©†—îXÀq6GÞGAFÓvŒÄŸ5=~¦«å­î|Ë¦³o}Ö^Q"wÕ¨Çž¥ê"gokiÅÆó¬¦¾E¤%œ;þ¸;H=f2ñÉ– 4-åïä9}t•áÖ6©?ßìÿ¹-ymkWÉ	‹mFzÜifÔFÇ¢Š=Þ´`®ƒ³V/!À®Ý¡rßˆ1è87vºö :ÏØ5~U¥Êê	Š+&~žG f+ñ÷Q}sº«K=Ôú´súÙ³·žõÇ–Fß^ú%¹Lat—mî</8<"ˆ tXþ:¢]¤Ê>ùÚtJïªƒ3÷µÆ·Ûó­ö½aiîiT‹¯ÛðþðoèÒJÒl+Ö8(T×kÕoTãÈ2ÇMÒ,HsS8z¸+.~
_“ n'&Ì^?bTSÎå±e®e‰pþë“›Ÿ²Ñj¦ÑçW\F¶"{ß«3ÍaƒFŒ/õìa²Ëm£ðÏ—[|~ÃNc% #]6©ÛGØœÄ¬}˜œEÔ`G\)­8w H(øùn*„××Òvdc¼19\ñ#.æ,è’Èf×ýèR½ºx÷¬5}óRA4æ8 Ä%vAî‰ßöíFIgûÁº»L;Ò;ÄæÍ\-Š%Ån"ªÉO£i©÷Ã‹}"uØó>Y	ZCÔÉ1f±Ô=<Á¤~ÚƒY;HÍêÊ”Gù%>ÒrNö&bÚòåØ¿ë%šxNÿé&Ä1µg>wG¨¼SÞ2½Ãœe`~ð'U
#^Ÿ'9ºžÄ®ê)N†9ˆ8< qAO•ßÇ;=æeL±eÏôò¤ÍJõßqAG‰É©œöËGòÉÞfò\Ò^ü-»JéšæàÀ­c¥-~Žÿd"÷þn Æd‘×ÿ<G¹8ýËø5Í#Ö'Æ·^fô¨0ªúçkíGÝTvX‡#Q-#nYìÝ×ñ·\br˜á:À8ˆËŸ¤ÎÊ½Š?dØÿk=ãØê^ú«ÙC¥däªŸ¬9ÇÒ	ß~X½ž°h.f.Þ?-fsËaè[FÐèÏTm[Fâ8Ôéúç^ˆÃ]%”çówm±ªh’–ûÄkiÁžÕªñÈ´x×A¹Z8jg¡ýô++³Øp9<ICªÄ·~B Åþa7ÔŒ¿åÄ²„™@öax}èv`ÎÚ`¤W0sÞJA£Ç+Üÿ¿ôëX}æwiE]úõüG3/HŒsC^HýÿEõ’}8Ž×mø§xŸ`ÞðÙØ6L%íì”Ç«¾\¢¸ÃÑL£`XÓì}‰O"z?$x óÞœIsªüeG£sHùèÂy¯¯£‚öÊmoHeNó­ê›"ô0Œ?^vH »½ÓX@ ØvvžÏ˜¹ÃVÃó­ˆI©Áí}¡èÞÃÓ!ü’“M…Ð`õ4CrÇRb®»û¢ë°Œ¶AøÉÜ Ú[êŒ¾úeø5‰|[_$ÄeºÙíà1˜™ 	ÿšo5ZÓßˆ8ké7IWÔuØí¦tNÏxœ¡¾ä@®ö+ðÅ%¯g	{p€càM§ªñRºõÚIˆ{¹F§/XbÆ,¡K'ˆ#ÐÃè^nIÌ1âÈ+N#ûÙšè·°Ü›M)á’ï©˜#¯J’Þ– Ý€Hí²JžW¨6Ä=8è,¬1uKf¼eoŽÍWh˜9Ð‚]ÉºÚ;–b¦;FÜB
™x~íüwœÏ‚ Nz"2F’à]¡W¾²×56¼‰k¤²àxîM±,cÍ»1ßhjÏ	Yû¦né„;Á0G8
âôO+ã€àqrp‚Aÿùú½Ï/Å#b/ÙÙ»©ÊsÕ}XDÕþ¯"ÐK|	Veu,&˜džÕ¦§—Pµ©ÞÞ„€]K÷W
p4âU×2M2° "ÿ|<sƒ …Qh»afP[ôÉMòyé-v7[—í)E•¸ñ…¼5žÑ½9ÐÛûÉZÍ¢Ü«eC…ƒÚ'ýoB$ÕßaôÞ‚²úC÷d$¡ïF	,¥‡³9‘~êÛòZîlf
6‚f0pš9¸s³mŽ ›gè­"MOP¦”ÃG×¯±d5F¼ntÔ/•*#"“iO`% £(±É¬›¦Èå†š)*‚ø%§‰×Ù0 ˜Ì6®M?xÊì²Ç~Y<?E7ìŠ€f“žùÆöO¿¯4cwô¥Ù—Œ>`¸+ØÝJ|6[Ïœ{â">§å¹X*»Øìl* (Ôf'šÇÌb ¿ÏF|ú¨ejöCtié ¥ÉáÀ ½9ôZü'¹µˆqþ“$Ñß×¿œýå[e5¶7
`8ŽÊ…¥ŠÝtåyŠ«+Úƒ™Ä<ÚåPrÎJÑÝ§ˆÏÅ6Ø.éœaïÄþyPþÆQxŸŠy87ÉÛ©»Òîž'Ìü÷_pê§îé(@Õ$Î$-©UûË{‰Ña.áßÆySÝV/h`²ZnLøf¥+-»úøÆ'—½(ôÊö`¥”ƒŸÅ[ÞH$÷ùÍ7³ªÞy‡ïÑ=!Ê/+JCÕI¯~Vý¥ÞeÈŠ‹õÇÿW¨‚ë#Åc¤¤KHØ2#þz`ç³¹g·D!ðÇêáKò.R—Æ…ÙñéÈ=Ö.í,ë¤ÇC"â«CO.•p×êÆÒŽVXÅ”íG× IŽÞ¨Û^fý" ]­÷?¡rß% G 3¥ßÃùv¡|\òU^F‰¸@bçÎ, Ü (å?ÿ+}26ü'å˜¯ŸÎ¹p*@÷‰ç>aô:‘‚0’Z|îç–Ö¨YÅËv®%Füø÷Á—/ç¨#i™ÉùÒ¿L&4<9é¼7C«~¡›ïf½±î §Æµògõ‡L¼cýfœS¾æí‰¾v/Š_^d¦VÕ¸PÃ4H&·Ý“Lõžº8gÞVõ§ÐÅ¯´å™®x\\ð3ˆnqŸGg‡èŸ½,ãÈ“Ö^ŸS-óùö<zS3ï¡CtvT†Es^3C¬<ŽbGÀž•nÂXül°„—UÄ:o‡D(ïÌÄæÛzÆWmxqœ`‘ôõšÜL—&ym_ë®¨f©ƒ×}àÍ‘bÚ"QýçG¥²•¼v¥À]RX~WœH7 »SÕ÷“kTžkÇ¹†Úšþµ_Eñí‡¨­¼O­»÷ÝH»>)ˆ»£ùø›@?gµ0×1©7)Á4îj8ºR>Úqÿÿƒm÷²é~ 9ö¼OÏm¼?ÚMm® p;ÎÔ!!(Ë)¦º\Ü&Ž1¸|þëk;NÜÓÔ*{@èîŒÂíV‰:sÖê¬ßTÃpßdÊÑïÁŽ¤Éy¢ùÍiK¸d×˜(SÔ	œ0afP§-ñŸsùŠ’«3v,¼Aß;ì½3GCOPßÅ·ûÆAov.»gåm“œ.’éóâôD¢;êz¬% Gp1¼çÀU· ¼‚×,‘g;ÄéZ0 Þ9ÿn£2jÅéNp\UO˜"gÙš´LÝˆ[5gO4.†ñ?“s‚v>ewÎÁÍíw•ÜŽžÎ<×_Èõ`s2m³•„¡yl^+˜@ô^y›í°ä?c|ä’^=¹…ù§éâ9íîªWÏ²ß'Œ>ÏWJblnˆ»Õ»Snh\¬OÀ‘ß'¸s¶¹ó¨'¦´>¼®E$Š|lÇÞû×²^²Ä]ók«z«XÏwüµù—¢”Ïû¥Ñ›{e7QH„Gô~`sâ1/¹·Î´ß ý“k¿õ“žXVK¾óJõFÕ¹hL¼9fóÏ£ØIð»6·ÓÙB@î3K:Ó…ÖÔ>{@ l³aQ=²­!8Z”ûõ\œWr+î^?.¼¶Åÿuó$åÇc–eâHÆk«š˜0GÛÿÆ›PûÅYóŠCZ!ÚI~ã%Ù%²Ç%Éß7Žyyzë‡Õíšxðãó*Ü‹´5«û.÷d77PçhüÎÑÓ\räô‘úmÁíü·æ¾0.£ˆá‚Ø‰¬¿‚¼ûf/»î¸¦[ÖÜKé¬Ù·\°Z˜Å}Š;&.ûZpG'æï5÷kžŒæE‰Ž©Q;> €:Äž{>¿£jùwÂÑtÜÐ}nå_-ð¸£uÐcÌýo^±vDÃê÷¢‡Ò¥¬ÇåÆVµ­:¯zîiûí¸ü9+»¦K›—ðÛ#W¯ö}!évØ e1ý«±•—?rïRÀOï¯¤bJ´ùU²ãem†Þ!átDç ›ñÈ«—4y'¿}ÛÑAßA¦ö«.äHAøx.Uïªž]¾e±~ðvÐÎ¹y„D`d¹{}þEd©ï”ƒ_ØW$ä¡Â Þîú|RDS_æÃiÖEZ‡Y”÷/IDÞÚßÿ%ïFxbŸUÑrI©Ø/¨nc
#µ)¶.\Yâõê\&…9‰’£AñºuÌYPèÅ÷n2UhOõ©ßÉï¬Šžìèp ã€HôÛ~îrY{‚Ä[?^w–j”ñí¨C¶ë­ÓK>‡ÐTê•Lö¿‰BQçj3ïÎ 7ùÑA`\kŸ¯®ü”y9, Ý;Wu;æ„úÓQFÿÒ8ñ•b!ï†¬@šS‘T:¾vçî¸&[ð‡Nú˜?7)£=¬x*"Õ‚e–JiÇëÈ
Ü¦mz„ñw&ÛœûÑpãúUÅÛ×0@öw†˜oêÕCþä~ôuØjæ¬@Ö·0-û=µ­èG^‚€2´¥³}•ïí¼½Ñ&±b²;j¹®ªÆ0fŸª_Ýè'>A¦Ž‰[u˜­9bSs¤?"Qµü¦Khú€ì'ÆÈq;z¬[PÐõ•‘®äÂ†}ð'ïSþ}IÞJ»càÎ[k]é‚/£Æ—Ú7~Ÿt²½±ìú§‡ €¯XÑãL0pqñøÏøƒwB'Û{Ýˆui?ž	kÙÑ.íR ¨žèáÚNåÚY¨p4‚}¦E¡hÉÇ“¿KÀq¨Zèy\6T¥jÈñÒ¸võ¬ê!8†"0‡X†ªO—–ˆÙg%ÆuT½ÆÛ¹O½³˜‚‘H¦½—œâU/n+ƒ©›öŽîõ.‹~øk¦&7ZÅt7Î”—}Õ”=~Ó]l	ÌP:ýyÈT.u®Í,J]¹ d[Ôó†òûDæîh:EêÙãçñôÎ…t8ýªà¨óŽji+¾;kíÝ`Q2© B¥7îÊ$ðµmò#ºE	ò›OíU•¹6S#Íš‡Ò÷½(ôÐ’£é˜t¸‡9Ó4¿Êt *CF<Kg/Ð¼òj8Œ¼ñMb¥NPQðÏÅÇÒ2¸-S³¨[{EÈË¹ñKä÷ó5Å1»ƒ»3 bÕÃêÒ+Å„ÙÂ^åÈ°Æx#÷EíÝ1@°ñôyö8Þñ±Uh¥Ý¯oîÂKr×1]èíU7®Œ[:gïåšåûÇjXÏeyµïjÀ<s´Ñ"–A} üòLII	åá,$¦»dçLŒçPÞÝ•"QO^¦®èž(…sTý·0ß¦[$ÂÆŠäAØ9 GhŠåãòädžÞ™ê™eªË{·c„xBÐk¯ÂtT[†Ï)¬^zÎÎþä#œìÿ,8¦P/dð"‡ˆãº&GŒ¾BÞ (Æbv.Gê•	›ãm­V1—Á¥‘¶RKçÙ
úŸ·|hzuüˆÛj¦EYbvóÂ¹}Ñ€5=1¿ÈFB¥N/¼W/—×Åˆ{·6ÀHØfuâhk
ö‡¬óF<žV—ÚÈÉ€R‰µ©½Â–Ý†üü:>h5U¥iÐ,Ï'½²ìÿ‰ tDŸ«Ø=ò`‹,­däsNà.ìß™wƒ"à >Q<þpî1N&„¨)ÞuK;{ú7Xãè±ÑV|2Ï4Úˆ¶{ÁËï«rw±àÔs}âk¥¾2_âqôcz•o;€MX¾jfçÕÑL®SõÙß‡	,ÙÍwæ@‡œÀþY”9§’[ÌfÞ‘7Y¦|Ù·öjèÊ;Mî\¹aD_]~zãõýž-óÕn¶¨ÿL–ÂößYÔ…fø§“µ:f—„)Ü¯®»‹ˆÜ›CoÕ—ù£#k&Ã3óÀàãc6ŒõŽÖ{£àš<¶7†ÍêaREºæwkKŠ>Áä3xv6ä6-“ˆég‹æXSí?3^6è„¢¿» ê®Õ’÷<_ÛW<Ä3%)x¾xEÖé^\¥dàPocGØérÖB>¶nGÌa¶0”å?bgªc«éâG©©{qàqóøi^†Ú» q9N·Xø pØQCvƒ »ò#ª»Aà¢q†5Cm”•MÜ¡‡ã4ŸŸžgmÛÎü÷òyC9‚E;2ÛÓjöC¥ R'Çc€[TºêOÞ\4Áí"ªçòùñ}Á+ÎÄKØ @güÕÜ§W¯ÒòGGßÏhg{ÿ<àÃAyð3ê“7Õ|õùOí¹„?¾!–¡b¾÷s==rOdØ.23òÌ¼•mé’˜ã€ˆkŠ„…æÝ	Z“Á“TmWÛá¹F$ÛÓss˜í¿7S`ÔÌaÄÍ¼›ê¸‚O5²Êój}±ÜA{(Ž´Ý¸*ÚAS~ú¥ÀØ2+|Ço¡À„§,X¤)‡ypbýÈ/„.d•ÜÙAmÿQK¨¿Ÿá­Ï™ïÏKÚèò‹=z…G½´Öº¡Þ=Lü
r‘Ùª(¤H¸‹´i®ÕÿÉ˜ðí7ó€jñvýYÈ —PF½“ÅZ­CCûè">¹dÉûsb;î§-z¢ .Oäûé|<.Áü ¤ƒ!¿p¤ÿ®`w®c*ÿò3Ñ·ã§ì9Y	r…ì„€E„ÎÙ¼3s©íŠõÜãl¸$\µ²Lv»  Yˆli†Óo†:F·äšê¶ª»úL‡zva /Ö4ä8kJA=Ãë³µH¯%ƒíÈ? ¸cÄ¦šå·s‡`™§¾¤z†q'­›½kßAOb(?${ïÖªc_ñh¸d<}ÍhwìwL`dî8k0dr[<A¡y/üëv
$ vvè5¹/9¬¬yšÞçN=!TÏO¸¼ì`ºÊ±@ûó›Ÿ={‚h^V’Ÿ²h§»m³îH8¸Âì©?èsÎêÞxª»¬WÜðFþ×¾„u¾säŒO®¿]g–r9=8wÕË°„þ^uUûÅÜÄgæc½Lë|Á$Èz÷à ÇCâ&ª†ßâò¨@>J«É¿¬¾û³ªÙúð˜†²ä]ñôDºÅFê¹= Ðq™ßþ4±qÛÇüŽcÖxÂ´i—öàÀŽãK}¢ëÁ÷ÌMŽ­«¥)Ý>Eïún†t† ÿüÂ?ÈJ #É‡LÿÈiWa©¡”¨'Võï÷¢ÐÛ,Ü§Xú¤àiš¨N4á n™ãÄ^ øú#¬çëLVxÄa¿ ûéw¨}ËÔßo›J%
ÞM:ÈÏô’J‘Kªiÿûsõ?ûD¥HÐËIÔúùÓ©Ê(þÐëïµ£àO|vß|‹ägöšÑ‹˜ÈZ}–24¥À²ôá16IFYâdKVr%®ä…W@(ôN™:ý%E²ŒÌ_ÿ×°ý¶þY9ƒÂ+ ‹ÛÍx070701017635A400008124000003E80000006400000001644643F0000009C4000000000000004A00000000000000000000004D00000000nvme-cli/.git/objects/pack/pack-8ccc5fffd7b0fdb6fe18593983c22ba08bdbcd78.idx  ÿtOc                                                                                                                                                                         
   
                                                                                                                                                                                                                                                                                 !   "   "   "   "   "   "   "   "   "   "   "   "   "   "   "   "   #   #   #   #   #   %   %   %   %   &   &   &   &   '   '   '   '   '   '   '   '   '   (   (   (   (   (   (   (   (   (   (   (   )   )   )   )   )   *   *   *   *   *   *   *   *   *   *   *   *   *   +   +   +   ,   ,   ,   ,   ,   ,   ,   ,   ,   ,   ,   ,   ,   ,   ,   ,   -   -   -   -   .   .   .   .   /   /   /   /   /   /   /   0   0   0   1   1   1   2   2   2   2   3
{žú»žæå˜ÏøØÀkô"^`ÙÉwë×A
‡R&Êª(Y¯™AîÃHRÖ<»åœ¿Àb~7D¡Åg *­óç9ÔàXû’Gärúúä]
·®ÚyŽ/®4é*—úAìc…"ðúÂ–ÎQñßPñnìq·õo1ÁeîqËÆ,ysù½ ©q˜CE2SoŒ²ŽXNfê™yÿÈ˜3Œ²5~·9`fw¯	#œ2`©3óxõÄ0–â½[}PÄÇ `5x NÂs·¬gþh0yî¹Í¨ÝO*¿AþR‰b`[lñ“â•+O²‹êÈÍ¯Òl{”U”ï½œQ™Õê¦vÛ¦±bñƒ&ú<7v˜'S–*ñ.“«/„ËÇÀÍ2‹³ù¼”VüJÎh‡<1˜wFî²°Ÿâ¾WVœ*ïSÔçRöÝ­hêv”í]ùRïË¼—Ÿ.²-Ÿl"ïJ}µe„,ÛNê©	œ%(Ñ¼ ­ójžl¤´×ð08z¨œ*AÑaƒ¸/nð#ÈTb]ÏÜ^¥?s±ù¡Hr¾x>o;	Ò“?ocŒ!©ˆKz`=',iÀ¸­( ºäËµ$z„J†ÙdßŸgÞ¨9ç’Kbk î|eðB«t+)í±öí j}£¥ý€>mØúJ¤¨unçÝÉ'kÇ›#€ÚØ´ÝN˜K®ˆÏŸPaLÝKÙƒ”/l7hÅÈ›“üì;kúƒ œ‰däh¤^»¨6C'ÖF>¦)ÔOœû‰ûÿ-¬•K&;,ˆ½5ŸÊŽ{6€»(þJ6|&m­ohŒ¥z§ËœÚFˆî=]FšsK½Ûi+dX–[&@÷1-Ò¶y’tš0¥ÎûÚÞMô~¯HZ<Ý´S· ïpÃ½ˆŸ\Ò_;îö?0 ë‘þ¥¨i¹êŸh¢Ú{Úøè*ÔÝä ¥¨¿·Nl¯eÂUÔünx÷‡g…ôt©•~»eg/]ø"‘yqìÈL¥™­O(*°¦8’ó$åòÓôÆðàq¶´ˆoeTýt·üúÒu„Õ³ŽÑÏÁB˜IVsz3çÀg¤êéá"ú?<ÆÀï‡†i\)bU3X>ÐXEc<“Ó}™£”‚`º?éJ·§ù9Å|¾±Ö(B«°R#j.ã*¸[Ê© uæ'NºžŠ³„tÎÖN™FßšÊê¯÷;oµ~±aú,Ýí8gÌÞ9îÒwìãi …ñŒzHZõ—
`ÉùžÔ¥Æ¶ã¬j¤rãFøalAvË^@!®™÷[ñ¿ §9zûC 
N…û¬qÓ«Âù;ÀÇìÿô÷S{ÛqDÐ}s|Y¦í€áØ;md£zfãR£G2’®"Í”ª›¨{H»È†2Ä[§@<Ì“Ãw±ËüÆŸ»x„’I–µÁ2ôŒ*`Ã–Ô˜›Å³Aï
|¸¨^$Góêf8u°®AèQÔ´ÏÑÎò7†ŽzFâ¦ÎÒP†›OÄékw¼×ºŒ;%þã;’ËºP„Êûÿ%8¢›¸b”1¨¡ËÖCQ°›
õÃ~‹ ›ò‹ŒI'¬fæœÎÌ0Õ˜ÞÕ¨‡êSãHŽ:Wb„{Ïõ—G>+õ¯Üˆaw)õ  ¬  W  ù  õ      –  †  	m  Æ    \  J  C  ó  .    ²  Ø    H    b  Ž     4    ì  
\  A  m  
  t  õ  ©    l  #ú  w    Ö  
Þ  ,    	¼  å  Ý      è  ü  ÇŒÌ_ÿ×°ý¶þY9ƒÂ+ ‹ÛÍxm€öŠ&f)ÉZêž š]Vi070701017635A900008180000003E80000006400000001644643F000000000000000000000004A00000000000000000000005200000000nvme-cli/.git/objects/pack/pack-f80d570866964db7e27f3addb5cd7694c53d3c9b.promisor 070701017635A700008124000003E80000006400000001644643F000002337000000000000004A00000000000000000000004E00000000nvme-cli/.git/objects/pack/pack-f80d570866964db7e27f3addb5cd7694c53d3c9b.pack PACK      °™xœí=isÇ•ŸÁ_ÑFJ$ $å8®]Ñ´‹æ!3¡@†€¢UÉ*Ôp¦AÌ
˜f’™HûÛ÷}Î€²œÄ)±l‘èãõëî×ïîÆÞC1¼:ùŸþEÊ$—ýóH&E<‰eöD<½ºè½»ßO“Ùx¸·µ÷pK<Çéâ.‹o§…èwÅ×û¿çI!gP‘-Ò,(â4ÙG³™ V¹Èd.³w2Ú-õUïŸžG=ˆ2/d–ˆ“ø6.„7_É]S·a0Ï—É­8É°ÈÒ$sh¶Û…ÝFÓ8‹,½Í‚¹€?'™”"O'Åû “â.]Š0H Ã(Î‹,¾YRÄ…’h/ÍÀ<âÉ–-“Hf¢˜JHÎs‘NèÃÓÁsñT&2„¯–7³8j)Å;™å°æk XOe$nî¨ïb3TØˆ³†àÕkÀÞ"‰8!ÓtMƒQ|Ã¢ßH±Ìåd9ë!h,^œ~º|>Gƒ—âÅÑõõÑ`ôò Ójå;É âùbd@&’âfˆž^ÿ]Ž~<¿8½i&ÎÎGƒÓáPœ]^‹#qut=:?~~qt-®ž__]Ow…JDK"€+4`óæÉ"ˆg¹žøÿ}¶w%'ñŒg)ç@ã9M–4La£îD˜&@E³lòDÅ°‚-üíü†å,¸ÉÊò…áˆ„´Y"/€\‚ŒhnokëqÎ–‘ßÉ,KÒÝé÷NÑ­,ÒEá—MÂ¤˜ùEyÍâ›JYœVŠnÒ´Ú7NJC, œÈ/‹âL–ÛAÇân!s¿P¹•Ii”»|&^TÆŽä¤Òr–ÞúeE<—XRX;v²üÅVØšv˜ÎçpT¦m§,y‡p½’›Iá—ÀljšAI‘ÑÂÕ—÷ÿ7/6arÀÂ­?À¼ãDÂaý4¢9Ÿœ[­áËáñåàìäüZ´÷Úž¡¸] ¸I»¦'v8ZÓ;Ä·»ˆ‰í÷ìèh¬ñÑõÓa«õÇ¯«5×§£ëóÓaëñ¾E”q<e<Ç£g—­?BíÞC1æDùtZŠT X ›€=‹àVæŠóÄ™È‚÷x‚çÀ|€ð‘àh‡Ó ¡ê@— ‰ŠòB`ïIá—¿]Æ²T-ç‹1Oõ`Ë€M“¼PÀa-&ãDMÑjŠvÜ*ÇOÉ¤}ÐÜ%¢(+õÁ"™ç+º%oê“/o€H9P²r˜ü]G¥qP×q$:r÷vWœ_	¬è®€4u0ž¦PÇŸ€³cñâÅ`'_	!ž¡´ €e†E¢ƒ¼·Â ¸tÖë Ò%ë3EBU¬éªV£Ò#ž ÷ŸËY!’´@Ù­Ãä¼«Â‹¦Ðj! îÞ0A}˜­‚éˆKw÷‘ƒ†(@°K8 8±LX5X’ãtüv)—2Ç“åü Ã‰‹SÁÅxì ÑÑ“ á¢˜AEX¹O ü}²>Õ4±¿ìæ_+>	(õçñßeý2iu	ìã¯ÿkà7R.ÆÁ,~'ÇÅ<EàX"¨D èAµRœ’•K€­â ¶H`¯Ç‘œwÑ}@$¸ñ,Ís CaXüI@‹4gž\×Qqœ•:urK½þÂ“J6º¡ÏÒôÍr±jÈY>ÖGwâÍZÑ)Z{ÇÅÃ~Ál–¾¦Ê'¤qª‚S”ƒ.[¼— žæ(“,/%VJ—°,ËWçÁÍ¨ííFÃaU‰{¶ó·ku‘¥·I0ËåJ¦e0Gš‘L²ÅTø"âThDpSÑ_mÆ~Á,6 Þ<lcË;¹ŠvI2Q=À>Ïá`*}æŸ‡—Á-–l	²Dµ“¤‰ÜAòPKcøÚÈåÕhÖ]Kÿü¼Õ‚¢ñ”—ÁÓŽ•¥ížàŸb§'ÚP%Û¦º×²
B·'JPPXéþ
Jâ@aŠ‚F

üU…ÁbØ³ø˜@µFƒ>ÔÁ -Á²“{0¨Ú ¡OU(xú:;ï(á.6{M›0"X¤/h¤v&UXÔ@ƒ¢õüuÞyë@RÕª‡â-Ø9/A1Äª0X€÷yf’éfgX‚<‹‡pÕé|0¢ÉúqÚg!g©/Þ¡eqº®«Hún¯UHÒØƒ¹óÂ t…xÏèVt{%(Š},w®HG€÷<Š–TØG	ínå_¤ß¶®$×KàP
÷I
÷Aìiß08_h;ú%F÷I2«udIlÛu,Uøëˆ²¹BØARìÌ¤'¸{Î¤½Š’ ˜K,!Ž"TVê´88¥$]¶¯*{@ª¢Œ‹îzXª²
KUXXgGxÌ´ôî«…°;'<AS§…~OÁrô€
<–}×jW#Ïå¡øe ¢û,í”wn¤ß%R¶AÐ–áí<UZiÝóÀ9–Á0<XØ*ØÝh ‘YÞ´Œ_v¾@?bñ>Ç=…ÉmNjÒþ!<x~qŠÙ€¹¸Í€wO–³;XÏ'BÆ`ÃdÚ±‰`4°?°sO ]f‰ØÇ ÉgTƒ€”§ø6A{†ŒûÃ”'3”ó06ç‹ýŽ«Yä{ž¦‘ÝÝúÇVì¸ÎWùcñáƒø
‹Z-ÀÁ–þ“Áu49Øúø{\ $Ôg^é­‹ëe‰ó±õÉŒSŠY½McVÄ´'è#q8ÀÅ a!¬(³úu ÇÉéÙÑó‹Ñøêäx|:8úñâô¤ë jB×eƒÈ(£Êf>¤€W¦€=ŠÒIçAN;¶=\‹%ši™j%ÂâLnýih\*Hˆíí­¸¯4ÙÚö·’T+Ö:¡mOäþ÷Véö»ë]®€ }¬Ô5´õc“Vè÷dEq]WG-t»;Å› °ÕBg¿aäÚíüÕ;Ù€¨Qé]<Má—þ§ì°»•ã1;^“¥)òš¬q“{0áÊ´Òyf%°í®K#u»D?;PŸó 
s]¨©çB“4Ë œR÷ 8í
€Xª4°ùåÜ¢<ŠiLÓ‘ªvL¼žQ'T+Ý¥å…tGÄ	./~RÒ§[ôÿG»ð(–šÖ]­z¯_»þ´Œjÿ2…o¯³è©Áã3Þ0°‘·è‚wÝ› H;j<ÞLç˜‘k® Ô‹CAôïÛ#H'{Å?D% Y!Ÿš¶ŽË)G€¶ß©ÞÞ_ÕŒ„ÔPShU<¨àôw™¥„F’&ý¨H8¶‚ÈÑG¨S7ò÷b¿ÛŒÕ¾Ãh¡š˜˜æhè©¥_!ás!ÄšÝ+·«¥ªÒ©×»MªÎ „©pFÓ£:GŽTEƒeYÓ¯cÅ•¦Ž«¥Ìø”°îË§ÞŒOë¬ÌôˆKwÊí0DŠpRvuÆ@x§LtÃç?_Çƒ£g§]€I æÀá²#¦g*ÁIð"OÆ°<:°QÀW·®§0¢*Z€àråLJ«D–Ée–aQ~*InF÷ G¦¿†3‚ÂˆÖHKŒU¤QQu›Ôn§o¨¸ÛYF†#ÐšIT|¸6syˆ»1o'F=Å?Ä¾øxPA…Žî>·¾y#'tŸ ƒŽ€Tz­ö$ˆÁ¶@^¦;8ãö4îö ÿ9i÷¬ì-2*ïµaráÎ ‡N6$GÕìÄÑ.œ‡U‡¡²š ra>Šæ ¡9‰aJ\Ý÷r6ë¿IÒ÷	-ô®¸ÊäDåñŽQÛ· Ü3MÀØlÑf4O·f¶pnKgvÍLñÀÁ›Ò£=^ïR ÚT‡äfé­#‚'~xÿôHr'Ëy&C#cDUHûçäÄPâô˜@âµÓ,ÊÅƒ¨'Ú¬éÂO›s‘(6AñThü }u}¾üö›¶"¯öü·ßŒ‹t.–@¦ÿý­L`ª]Z+§˜x˜ˆÅw
IøûÑ#¦áòÌpR`$€èC	ý¶	$Ä2¿F fZ‡øãÏì”º>ˆ¨êQ1Ñ¨îSdû{"Ô9PN"*Ä³Ð‘(EðS×ëDÙ$˜›n[Ì¢f2ál+ü Nòhl®ò§îÑn{@fU¨ûªÝÒ$äÛ'¸Qþ$ä[;ùÖï‚Ò6Žpu™ÉÇßêmƒ\]…¤©AOzÖP¾]QFÍF®‘×J-›ÛJNfÁmî.³ëËãZšc	}®é2Ñµò÷1è¶ÂÙK¢5´<Y]^^Ž¯Ož=Á=ÓÃgÑ</2wSHÑèŸHò ßÅö»‡\|Hoõ¸¼
‰Ëë …óÜÙo	Ê«` °Æâ¼{"öy°ÿÍ/JiY¡›¡Ü #{sP·€£ã+oýÀ²¯Ÿ±ªðp-ÂÅ®*/DöZ‰/æÁ;Yb‹&ª'VsHâŠKÀY•bBÀ\*¬KñP¥âN"<&‰Qs'( Óœyòr||}z4úp	tôâ~®ŸŽ{b8>¿~>¼þ ¿_Ào­q@ïïÀ¨“ÜÂ‘Ü–Ï]B=ÁŠœfQ£D.`Šêdüw™NšFW<2¼ed}sË…»F÷¤¨Z‡ÖE§g†õ8µÕãÌøc³É¡•å0ËåqOA@rˆñ€Ãjð,ÍÍ&Áª…ü<¿õ}gD#z¸HbZˆË˜Ÿ*¨–mç±Yê¯\­ÎÉ‰R{™Ó9DÍ.?*åÚ¶“aó‰
æˆ8©ÕgcVÜªc×ù~BôáXýHë÷º±… dÜ4Ö¶nL±VtÐQ>§¸©îúÝzSa¼ÿ9¤“µ‹çšÌ²],¥«=XÔ¥ÊyðËèµ
¨.gR“Læ˜Øº}ÔéF‡J‹UÞûóËãÑÅxtþìôòùˆÎò…êôqç%¦Å÷QØt¶	'm•Ð	]Ã! ŠcX@'›èôJ-¥Å16âƒx¾áh¡T­2`¢RÄùÀu‹è€%+xJ39:røòúÙÑ…•%ÈÄc,e!„94Ôó|ï×õÇóÁÑõKêaÎ2Éã[Leä£×E ÆÙ°!GUïÁXK¸©<ª'9(ÌÂzëjtüõ:ö'(Ùš’4›1²:¢DÕ¡ö`{5„bÀ4žETj=…Ìøêœ…5æ?KêŒÃ3ÆWëÐê›¬oìçRëp…vo«ìa£ªÇõÔ²È–R-'ã§ÜŒ}SzNx>t´hªúÈÞ{(Žf°íÑfø@?y
t;ÃCê{t·;ƒ}ãÐf{»VPÍ”“ÜúÈÕ€Ã7ñB†F\/Q<Qšì‚|Å
LYö+‚@[ìU\e^Õa…À­Ñ#³üu@üY|ø ÏZC«ãç××:d0/+Ø4 .Wg2pÄ ]ø¡8I1GwÊ7‰ªÎí¬JÝò.ã„“üÁ`þAUì™°…Â`[˜;ãSÌhŽOž_Ä9œ]Vâ
-q”¡ÛBäËÅ ”©ë]ÌÑ¸8ˆ^•ÒÔ²gVâ+÷¦ASmª=NMîµ¼zÑ6XµªŽLsšÐ˜üó^â¢äùW¹­?èö<j^ÍÓ«ãá‰Žù3æÐ•+Å²ÒÄ23ŽÈ„ª®Y>ßL4Š3ÿCï”¡Aü£vÝí<‚ëà…½G©U“|…ìšX5º{eOXu‘~¶5‚lù¶ê™ªvfC¹‘5…á:š,55Ã¢š­Ç&OüPrtR¡•Ù‘[­&÷"¡tà´pünNÝGgéépñŠSZÿãËÁàôx4>º Ûìä%ŠèþŒe¼º$‚\Õ“|J(üKJã¦<‡(Å%(3mc÷¶÷†„Äiu”Îd³R¬%Á’ªÈ*p;‰.5øõÝÕ6ôoò[eŸ­ë¯µ Elô¶:ð.™(È¼¤@ú'*	œ5ê#x%ps«ëØA®‡MÄ‰“[ôn[~s~5¾º¼Ñâ¹çlåXqºñ èùññ4­º¥@¯ˆ^‹F4n‰ÍpX¡F¥Éø‘'Y:'µˆòË7¹ QéN$ó°d[úÍÖ[«DS%BTvdÏ9\æ3Ñ¯54¹§Jj¶íÔm'ï3Þ–(õsï^Å¢€ù?|Õ;ø½ Ë$Nä«oöÿûÛ×Ê£U!¹sÓ5š?VÂÚÞ€ˆUUgçÀÄ'hØ4›×fhuÅïèà_³öÁÖª@,!4 -€ž¡´²óñšb']`0±ÊëäþÃêã~QZä³Q§ÍwûŒæ”¦˜aÉMJ$7s©ísì´¥{	äö'ËÎþ´Ñø£ËŒêª#¨!H}m‹R4­(àDòÂråÂr„½Ç”Ø/Ã$öí$¤brú6öü@£À;ŠU†Ìa¯ÜB=_wÚj·Mòò;„ª
5Üöy‚A 	à×·xó‡ÄÅ]IÚFw÷yB'ó»}F{Ý4}­,QÜÈ[‡ÓÁI§«Ü	lÄ)ÉÀäÔÙÖ1`¦l­ð¾ùaÊÛýŽ"‚ªóN1ííDHäíôïë"+l§&)ßp¼ƒT,‚,˜çâ6Æ;ô˜YšŸ˜ø°V‰N—§ƒ‘ã¸è?V,7úxðNTØñnöö´Ù­yãVÁ>Œ!¯kÝ¦|u×üjÿµà‹O´/xŒçrŠ`yIwUŸi€÷S¼¼Ó™€ÄÎU+·	¨D]ñ•»H•ð5áH¼
G?;ØÁÌU·äçd‡T3Ï>@nØÒ\Ðå„ðo…Qø!º¾€ýÊEgøa[`D¬kñA4mõèÎ:l9¥¯—…RX‹pqGôfUB½æ˜Ž…]=þ\gA˜}À8	¨$—æÏÌÀYL<Pk„)ˆ2m\")t…UmHáSšW©©mË1¬-ÒÑ´hªS¸ñ¯²B¶Ö¹&<Ï„M¡*×1áëoŽÂñ-”\0ÊnÙýà{LëypŽ×á£]âQJ“­›¡”òPçp°f¶50_›	¾vaÍ×îövRiÉ[ŒÈŠð9á d3:J¾·ZãE›š§†ó¸2ƒúÊ¥aRuî‘C±…?á†Ü†1Ý¯®Ê~ †v°Ì:MTÌÃ±(ˆ‡¯ÒÉoê\SÜ,™l5²µ¹i:¬P±L«-±öYkiåSicÿ“JÓ
iÏÑ%kÃ¥\#ØãdÅ—Û(™åÙº4ØM³`]e»Ùùv°e¬ÏºvœíLœ5ª´ô“£msZÄúÖ:Ú:šsÕ©nƒàXÁËj¹d^u>VÌTJÕf[¸Ñ|[Ýf¶›|¥
9ÔwÙÐô›„zu¶#v™½så©(Oî0™7m–ÇC1~PvZ÷Hkgë€¿” ¹sÜ½)Ýã)¦AB/^¬žZLº^³~¶N6üê¹2~˜æŒv…š/'6ž·•éMòä¶ÞLshkbø%•cfVÂÕ‰šo^^Æ?¹¥Gò’­R™Š ZA¦}¡X¾:‡ÍîŒñUžU:OƒÒSÖzÖ\VZj¢,§&›ê<¬ô$†„]Õ"Y¡÷Ô+>ÍäKÝGùQÚORÇ¹Ö#Ù  }š”è¨Î*ˆóÂ*ZPbüp[5†òÝÈk§ª‰Xÿ—*?PYAQŠ¾y5¦K‡ÅxžFÒñhmb¿ü:–ê‡É¦~8øõN5G¥ƒªò{YmÎjw—§&4ÜÒú’ºÂÑ¦”¥_çJÓ„@ÏG™Qël\è¨¿å*¤]ÖCmÄùlF"òÚÁ¤—Ág£1ÐÆÙpŒëmÉ+4Ï°T4Jqz3„fÌµ@ïÅš'{ØðÆwûäôoøT—÷è&!sŠ>«úˆƒ Óçâçs.ê-bÚÒï7ü7	„	±G´g‚}ºä·õRâ³q}‹ÚÎ%‚sÞ’Cíø\÷>Mw»#Ø¢ªï“‡ÀâÝýÇ!°Ð)k_â¬(Ëð<•¢ÀËÖyXÚ÷á°Ô×>II]	Î¼—=ûÈä¾}:Åp‰^éÍ4â4ª{OwïæN4Ç‡æûz?§ßØµ<Ro£eÇ:µ/¥´{ÑÚ ¬ýPJ ¶æÁ‚Ò–fòœuÌàØ®qôf~è3“=Ç°á¯E
àîrŸº¾Í sµœ<’±Šš‹Vò²–Vl†Êàç¢&V_Ø!]ª@ïPæ"Ì²õ£Z –ßÀÄ41e=á²Ü_8j©ä(-âP¿ixÀå¬¾¨â8Ò»¡Ÿ-Újµ¬ª45Vy×ˆ]Rä†êÞ»ï-_U)ueÿ®ÑÇ¦qäö|ý!Mòª2ÌEfõ“š˜Â&œ.Ÿ>s#
´vÕYØÚ0º>F^Û“Ñ*ë0-/(xÝöà¯=`4òº>:²cëÇš4•®F™-ôì¾Tƒª»nfN°¦¼6UŽsNÆÀó1b±³ˆ¬îZr±~áÒ*k¶Uñ³ùâpUöj…²k¼Ú¡Ò†¨j‡Àí)[_„™2ì8íÂRÛn^U)ôØàt‚hKaE%¶ŠØ_º¨×¡ió ü|œºõ”¹åy@pÈûû9VzšýÍ^ZŸÀú8Èº0H­Wà£¦u‡Ôß@è±vm€«£¬73´90ÇS¾ôª*£œI‰’ÎçAõé-Äôh£ã^«>éó^;ê‘èÖ¨í˜h˜ð×cŸjmÕÎ'#ƒ…uØØ”%gvÊa…Fãó/ŸÉ:°7úX{•7M3Î’ÛËI¾ó÷è¿fÄ/•Œ$zÑÆçãçË¼Ðn¤ç<¡Ç6§éraÊìtò¡e¤ûÀ4Á0+vÕç½&÷œÚ‹©Í£ï¼d¸§>±Ë4ÈØmj™L½Uµë‚ÃÓh6½ë¾“QlÝ[èŒGï"OýwH/ûJ÷e%Ä¾ÅïßÖ¼ÂÇ²wùåyø"^[fº÷{œwœ¼Kß­¨áúÁlÖ¦·ùaMÔÁè™Ä‰‰îlàuFG' Ñ#Âº¯žàÀ‹l	êyW¡)“|™Q²kÀ¬êÑ]KÛ‚Ž*58aÜø >,»OÌ|f§Ó„ýR ò°6†SËnùTâYÔ†z”÷ÒÏÒÛâµ¸4¡Ï>Ä™¸	€YZuœocSŸé}Pxfa y{Nµ§µªc=eÎƒ •|¢´¨òüA´öÔwis·³|´zvX'N6ñ3³T©Œ¡¸‚oòa‰ÕÕË%†Õk5Q-q ùÞ]TZº{FÚµyì"Q¿úö¾PßÊgšM.¥ñh‹«ªÅ8îbq(>1Øÿ+bý÷{9@#þDñ§êŽ4°Ö…ã±ƒØ26ïjL¾f·¹ÂoS¯y“3Üu4¯sQ;]Guo×Üs’[ß94S/ÐWÚ5»²7t‰¯pNßËÝí9³×º¬WøÙu†ZÙ!Þ¾g~hé…_zµÕ<ó»sì>\ÌkÛs^j¥'L›¼šŸÃ£Yrf~²³Æ‹É>Ìš‡¶ë|˜ëýÜíKöKóç'‚è;Fþ…^;×•`Pe7‚GF•´vÓXEX¼.|1se7ž¸Û	—ÚF4š§çƒ¿]XLís‚50dïm“å ë°Äï5¯ú}<ßD?yí«¸: 4˜kÙš÷ï5žål0jqÏQkÒ!@ê{—(<J½ðlÂÙ+ ”buÕ íˆV»ZžzXkùùÅgûoê³]ç®5‡ë?ÞÕê$†¯v¶ÞÛáùé~0þÎ‹ÿG˜cŸT­2Jšî×¿F†_ZR½ççø«KzMþÉ¦g½÷§¤ÿJ`yuÊ«!œ·Œ\sfcBÓJÒ–›Ò_"´ßÜÔžõÍ^ôÛvV]	þÊâ†èg")€æ•oÙmÂ±îÝA¥¬5éZ`S´òt
[þFE0P .Úî÷øøÛ[A¥—.V>ójŠÊéÏ®¡„Tþ»y!·öf¾:§=z.O_®$·rÑO½ú3Òk«b[ôÚoÁ/Í·7µ¶Ö,¸¾èc†?+æLþÞ[
azéCø¹Î"<PŒÒ¥¸<¿Ú¸AêŽùÊþFL'kó‰ß%†&ôwŽà·½”Í8öã&ýp_íëQNòÆ$¶¹°Çýì.×¸ù¼ö‹š¹~Ñw×•Ö©ìõŠxè¥ÍWÆÊq„Êq&øÆÃ"KßÅÑjþÚ¬·†¬|Ñh×k´Jtò¦;/Ùh	¤Ž¥`å…Žç–s£Í¹Ï‡¥Ýs/³1Ô\Ÿf\T²ù[e–[âÇqäê(þ“W˜Ì·]˜·(üdßÍYº«º5ôVüè‘‚LyÄ:›˜ÿ×OšÁxò ÷‚Râë™œÉ1nxQÜ-m™{6Ë¤í‰ÔvYZ·aÑê£Ô†E5«¡µÐžÝŠîWúÀ€
WÇ#ObV›&ø^¯‰ÐÄ”z:®¼ ¥–yím/ïæbRöØ9ï…øïäÁ:ôšÞGk-6ø„÷›¤ù8˜Íî%Ñ7—ÊeQ^ç(m–ÍF·ÿm%²û•y”žª|¢:øEÒÒ±3ç‹ó~bö‹Pûí…Ú?UÉ÷RÝhs¯´ùËÌƒõÊ†ƒõß¢Qñÿ60W]Ú‹0Ö™lexæ¢R£$«eŽn(ÑãŽ–3¶|Ììûœžesî¨LÌßU¸l]lÓxÚç—Ý#Fw/ø¨ÃîØó4Š'w¥»=±\Dêëò¼+_Âc€®"¸F fIq6ÈþÂe–aDß+JÏ7,áuG0ÏŒ· ê}nú.Ûº€ÝgˆÔ,Þy„ö¡y„ ðžÓçõˆýkÃuÿáA²4á¹©Ò›ôªDÿ$‘¾"­¤^Á÷„º+36ˆ¿xÇÃ‘úŽš\¯'7¼S–Þ#Lè„K¥Œ R%Ê1ŠæµÞ57¨/ENï£ôc§ P‡’ºW<ËJ¡KiêÙ(<uŸø” ZE¤Š¿“}çA¾ãÑ©ÜL°ÎKE¤Ð”â\›ºZyinž.Ê§Ðž™`¾ñíwÍWfém6ŸgXÂW«ÃõaŸÍâ>¶¥¹éïqž¦´¶šéÖ‡\V0žòüˆ=	Öqâ?å(Ó†a&ã²ñ ›Š?\fXØ&ñõà‘ÇJËQ}à¼ÐÎ}¢4ôTÏÇéB}Mù1}8…N`£A.à?d#LÌF?ªéVòèôæÕk¥ ¾RW0žGGÃñõéÓóáèôú5É¡ Nw‹‰€m¯ßòäÔ¶ÅwÃ¤Û¿ÇÉ¸P*1"µDî?/ÿøµà‡æé«…0égô½h†^ª ÔáŸ×]LW…î2{'#ÌO55<õe®™FÌ~Ï.Ú6­wOwQßéÚûññépÈGB»ä0Ã¤ZXž/é:Y¬=€'J´Oj*ÐßÕC®œµêtšvÅà<á¯1}WAáq{jyŸÁøî3?¿ÙÑµÖ½á¤.oŽÇ5-œÂ£·	Z¼ÔŸ€^Éq7¿—]Z{Z6pÐ­
£Y]CüL™²4P£ëî·ˆµq—ÀŠÃWÑÃ=¢Çï¹:9ØýSbj+aVâ˜»Õ1ðPòõÇ€ý7BÄû•>Ÿ,y½âÍÊ+ã¿_ Ï`ÜŒÂ6†´VüÍ
+ÞïÁ{%üÑ£ý³ô=¾q‰×Vx¹{»KR£M‰yV~˜o2ÅH}òŽ#\„Æ—Æ£z(jåR™³`®üYÎJ•5Lð<¡+á‚WÊ|+Ž iy¾8žÿÑÔÍÎ/qV?ÎêkœZ=ÒÁš¸êš¸h)"Ú°¶Ÿ)$j©õ³D7=Þ3^ºj¡?ºÁ”ŽúÿƒÐ(OøWf–M·â:ÝµÍv”Å=<› 070701017635A800008124000003E80000006400000001644643F00000044C000000000000004A00000000000000000000004D00000000nvme-cli/.git/objects/pack/pack-f80d570866964db7e27f3addb5cd7694c53d3c9b.idx  ÿtOc                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Ñ-qÌÄZn zMk»ÎÀâñâí2"É·¶2   øWf–M·â:ÝµÍv”Å=<›'­Jf¾cS°øÃ€pÄnLÒF070701018A385B00008180000003E80000006400000001646E2A9A00000000000000000000004A00000000000000000000005200000000nvme-cli/.git/objects/pack/pack-5cb991c1239b638b01d775af681de9a2dbe36d4d.promisor 070701018A385900008124000003E80000006400000001646E2A9A00000854000000000000004A00000000000000000000004E00000000nvme-cli/.git/objects/pack/pack-5cb991c1239b638b01d775af681de9a2dbe36d4d.pack PACK      Ÿ?xœ…“MoÛ0†ïú„±!–vì|8è†v[ôÐ¶=K2k±¥@’“åßr¼®Ý;Ù’É—/ÒÁ!ÂjµÌ°\Š:UµÄ<+U^,E^.Vb¾¨3\¬•\	ÅÜ¡	PåÙz^ò|YÕ²˜ge)U!ù\”¸Î•
qŽª*ïCc<p´'ÝÊ=\u§ø¼ö½ÇTÚîäËu¹.ËbQÂ‡lžeŒn;:øÊÆžøÎÐéêÄwúº³Æv©u»KfUTU±3™âÂié7Àëúàú!XàG«k ÿ¼ÓfF¨ ÚPÅ%zÆî„éJÇ;å§ãqŒ€1O{|$± «@œ¡v\ö!eŸû“è>~;r§mïÁ`8Y·Ÿ=KÍF©ƒmµÔè©ÚXãÔhÙ°ŽŸSûÝ!Dãƒe|ífJå{E¤5ŠÞ¬nj’ô^‹öÌNÎF³Ïîir$B'Ÿ2vCl¸y‰§ááÈÿ!ÄÍù·÷B1”5Üƒ@‚À©†ä`0©¾ÙN/DVD‡ik¢ÅØÃEyÙ`7V¦8Z†íÊöóÝ#1-c»¯GBÖ·6àéÖëîÐÒRL¶7·›ÉÛ}2Z;”Aj‹ÞLöF\8vŒ?(Æ3àÝä~g¬‹ÝF•AdJM}£-m‡Qƒ±€JQN:yŸµªþlÿ	…xæ{÷×ˆ¨«Xÿ2½z ÙY
""-»Éû’ûíãí·»›/·Iá10
‰R{t†–¤ÐF'Ðcd9âÿN‡ }æ1³JÍÄyóŸ_ý3Ò[i™6xœ…RÁNÜ0½û+F\
*»JÈî’ T!Z¡"µ½‰óÄ'.±Ù¢ýûŽ—¥¥\zrÆÎ›÷æ½áHÕ®(Üí.[]nvõ†¶Ø¶Tëí¦lLY;CÛ]6jÂHžhg¶eÝê¶ªªÖtxÑn°Óé¢º,M±1egtY)œy¾cdëáÑŽú	®Ý’Ï›4'Zëà>A)”uU7Õ>E¡äÖYfŠð½¥±÷R]/ØÛ|pëûdS5MU‘Ê`­NW ÔAïI³]‰â³Õ³·FT_­ïáÇíÝ¤¹MûÄä’RŸ#!  dæüù³#½Çr8ÀWë©{Óf­›^rZÏä;ùC-Æq”B|9™BâÕ<@ÒÑNœÀÄàÀ/!>)‡{rÙø/’Xè£Aê•\ºñ@ðõî^”‹¾à!˜|¥#ŠŠ6†¹æ	N¿U+ÄØ~ŽÔ­•º÷¬›dÈ¤Éc´!Áby€_sbþÐù\úI£%øœ#(%Œ{)4Jª¾¿Ú\ÆÊo˜2­8Ñ™8ŠáÝ~·3çW7l'äAýrþâpzAø|àlê‚Çdé™DM6Ane™$½é\ë³Áð?Òs&1Ç)ê2¸|—_^£þ4Áˆy-ƒ³~ZYÊnŒYµû«ÿ,¹ú®+b™xœ…KkÃ0„ïú{/6–Ñ:„’C{k¡BÏ+kˆèa$%iþ}Ú{a`™o¦$f7J+¥ç¾iµ’(ÑLhVØN¨­Q-÷íF,”8P"kƒó€ªp3KÒ’T/™ì‡¹ëFÌŒ‚.å¼S*6À—uÓvþö¸û|É\OÑ?ƒÜ`½lÚžš¶iÄšz[
'x¡`ÙÁÃêv7:Ú½!ú:¦ã/9vãØá)œÕáê¹¾%Z¶@†–‰——ä€‚YÍÕf”‡·W9T‡¡
ü]@'
ÓIˆÏ“ÍàéÌlÇ9§Sµ¤øÎÖ–‹uTÏV¸8‘ƒ|Ï…}-ÄÁ®¥Mç¹Ò÷í?#ˆ<y~Ž“%xœ…RKoÜ ¾ó+F9%ªÖÂ6¶qU9D¹õÔH9c¼Ó¬!¼ßñnÔöÖ0è{ÍLIˆÐèÉ?J”îPM­ï&©¬izg;ïÊ®îzoÄ§I
øÎ*5˜®ïj‹£®7øÚÛi0jèä`°Å±ÑÒ³–}LðÃ¤BÞé`?ài9mçs^3V6.ß¡îµÒ­î›¾ÉFJÁÕ…JÁ/&àÝÌ_O'3ÓóC\ª˜ærlÇ±Õ_HáÍ”ÈæGðtƒ£B1d`ùp\üŽE.´¥Ê˜ŽdQˆ·=Â¨@ÞÇõà`BÈ…=£ò€Tö,Î(Osõ+Ç œÉQ¶ñˆéRmÏ”K®`£²kº¶)_B1g8]9¯„Àc@p3„Xn¼²m*•|AŽh‡¾Up÷'Ù[¢yfø¾²l¬ÿ¼Ù¹{?‰;çvÑûÝtyüÏ$Ä½e_éŸd?8¼OqÛ0`Ô²ucãåÐeµmGíx/°G7)©yœö¼Dâ7qKÄÈxœ…Mk1†ïùƒ'¥(ùÐd#"Jo=õàQ2ùXƒ»ÉFVÿ}#–^{zygæ™w¦dïKåª˜p¢ñ”2!Jtž#å:(¦iœ;K®&û¡ 2Ø¬C°V»’!¢Òr”‚;éƒ^3bnåœ2|™\â ÇØÙìúé©‡ñ6ú•Mý˜lÖRb£árJI­ö±ŸáÃÑwp4íPÝn2m<ôiHý*åöEj¡µh~IæhÇ-„x“[5x<§é4`(§ºùjªôn¾ ä3Þ}e)*óÙýî¤ÎÁ‚ô”Þn„)–3 ±—Éäj_íˆ±+Ù‚|Çz«[¦–øØþó;ùMŠ{\¹‘Á#›c‹×u¯hé¢ÛãmM070701018A385A00008124000003E80000006400000001646E2A9A000004BC000000000000004A00000000000000000000004D00000000nvme-cli/.git/objects/pack/pack-5cb991c1239b638b01d775af681de9a2dbe36d4d.idx  ÿtOc                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |ˆëØõ‡†ñ«tà„_3˜]ø‘$¡iÜ2LóÅ´è¼þâï“ç6uT½Æg¤Òò|¨óß+Ê£x¾¹îoQ‹Ë3;ý¢´­ÃìqðOüõÄG¥eé-ËzGPzãé(±ªƒ¯Ûxƒ~w
æ?#¿“^¼L  ¢  o     ƒ  -\¹‘Á#›c‹×u¯hé¢ÛãmMµíMCß†™ÊÄèú °Žž%¶‘070701018A402F00008180000003E80000006400000001646E2B2D00000000000000000000004A00000000000000000000005200000000nvme-cli/.git/objects/pack/pack-1bd8454dc7fb453978be5ee23da304433333bda8.promisor 070701018A402D00008124000003E80000006400000001646E2B2D0000621D000000000000004A00000000000000000000004E00000000nvme-cli/.git/objects/pack/pack-1bd8454dc7fb453978be5ee23da304433333bda8.pack PACK      3«
xœ340031QHÎIÌK×+©(aiYüüá‚wº?.­H‰¸¹î•=ÿ’tCˆ¢Ò¤Ò¼’RÝÄ¢ÜŒ4°ZÇFlÚÏ×üÞ·|e¯¼F@6ªÚ‚‚d3“œT°êìUï÷¨Ý>«#ýñ‹ž-Õ:Šz%§PU[T€Õ.”ß§Y¢Ñ•˜l3¡ìÿ–ö=	9 .òE—®xœ342 OgW¿`W†íSeWßizëvù¼ôão»­òkøÌLLâ3óÒò¦¿~v2­9=Ø5¿Öõëºw_zpB$•fæ¤Ä'§•èe0ì|sÃAãñï×÷3Ì±	±pò“07 ˜•/Ò¬xœ342 OgW¿`W†íSeWßizëvù¼ôão»­òkøÌLLâ3óÒòÎ8¥›Ljœô:½NÊPóÆkÙcÓ¼¡
’3R“³ãK*Rõ2š«ÞWK™­ˆëÒû^zsÑI¬ãÓŽ  ·i+«®xœ342 OgW¿`W†íSeWßizëvù¼ôão»­òkøÌLLâ3óÒò6Š±*½½òçoÐäXK¥Z[ÉTCÏ7PÉùy%‰™y©Eñùizî‹}[­}Š?hð™ñ¿r4ixr¿I ç«)Ï¨xœ342 OgW¿`Wå‹š®—•d¿ÖÎr9”¥RÎ%lÈih``fb¢Ÿ™—–Ïpäó£k>IqÖ|Ý¼RÒ9±Y–Ëª '³¸D/™A]ü—½øÓ5r>ûe¾ôÎÿëül)²Š†…ÁŠG'L}_±ÁùÄŒg_&ôK… ê3h xœ342 OgW¿`W†íSeWßizëvù¼ôão»­òkøÌLLâ3óÒò¶VÅ¯:Ø'¿TaÚ¦—ÛÞö*ØÂU’šTš®—ÌÐ8Åéú¤å5Â–+îéažÄÍî-UR\RT°R%FÜéCª_Àvõ2Å¶–s!)È`¸)¹Ã×sŸÍçåÇãÿÎPú#ž¬œŒP±(ƒaÒAÇ3‰ËJòÛSN·ËHgZÅF GN¢xœ340031Qp
vÑõõaè¼gê>õMUÍ­5œš©¶f!¼†%ÎÎÿvn”x¶uÁGkßCZá{«¿9ñO  ËUÒ¦xœ340031QrutñueØ%`´Nú ôSÃ½‹:bøw/w9“fQŸW–›ÊPÎôçä‡3&íÿ¶Í1hhX¤8]ðTARbq†.H‘nr~nANjIf~ž^qÃ¯Ç«VpÔj…E´.u{ ól_ôç5 7/I­xœ340031QHÉ,NÎ/K-ªÔKÎÏKÓËÌc8ëà«Ž³ºg„T'¯‘¯=õÏee~ Gg§xœ340031Q07ÐÍ+ËMÓM,-ÉOÎÏËKM.ÑÒiz™y»¦	¦y}2õ*[Õ”æÓÎ‘÷Óö{ ûÛ ®xœ340031QHÌ­ÊÓÍ+ËMÕKfxàµÔôÇ‘µRý3DNÌz S¸-„å¯!º²†oG~ìÞeº„û‚@ùC“«­¿Î˜ «± þ®xœ340031QHIÍÉÑÍ+ËMÕKfè»ÈW¿õÙçøÕåÂº®Ýê+|¸Ñ•e0¬úpO@Ç!BP—åØß3“Æiþ-¼ #„w®xœ340031QHI-JÔÍ+ËMÕKf˜Âñ”ízÈý9FŒª—6öžÛÏÏkˆ®,ƒaén®'l7øÇ„	÷»¾gä9ñÿ UÌ…¢xœ340031QÈ(M,OÍÔÍ+ËMÕKfWh;×cœ}dš~;¿þ'k§Ãrí[1f0|™—Ó!øòêTQåW²ZwIæ]0 µà¨¢xœ340031QÈK-I,(ÐÍ+ËMÕKføzšÝ˜cÇ¦ò¬–ÃÙL¢3ü#1f0ßóvºr[|G^Åú%.Ë¾¬9/- Ÿo¢xœ340031QÈ+ËLÉLÔÍ+ËMÕKf(|°Ç˜õåÁeýwßì¸[üïÖ¹ºØ_†˜
3lÛùD^¼;§õÏÊ³[6˜°Ü:ÿ ’B$õ¬xœ340031Q(N«ÐÍ+ËMÕKfð>¿?kï¬Ãó}Cw„7M˜mòó¢!šªî©7u3/GTI™¸¬xÏ"/ÒÏq! Tß®xœ340031Q(NMLO,IÕMÉLL×Ë`°üpyÖAM†/'ã›Ôo°}ütò‹!ªÊ¼²ÜT½déË\!…Cî.ãîVžþ¶;dƒüÌTl*3f~3*þ°Ïpî’.µÿÿ#>L»°}ÝL ÷ì4|¤xœ340031Q(ÎHÌËËÏÓÍ+ËMÕKfpò¶/Þg°eÝs“O†K³.ë÷XúÏ‹ÊÕèmÛz‡mŽ3X;§nAöÿÒGÇ%MŽ"Û¢xœ340031QHÎOÑKf¨:sÔÂ'Eâ2ËfïânË,UÎ´?†Ì:gÏ~I•xTe–¼U›—}ö{}¸‚¼´Ìt !‚†ÊßÚdŽ­X*ÿW‘Á1ãñ{T5ÏäÏ9qì÷ÄkÇÊ²íåÅ]¾™+AÕ¤$–$ê&¥&Ò—x¥¦»©Cÿ°Ï‡­Ïž>ÃÏÔêŒ¡,ƒ3n›ÏCÇ©ŽaûÏul;7Ýˆ—óºTYFjbJjÐ¨­‡ÜôÅ,¾õ`÷¾»ÌWõƒožý‡ª&ƒ©êk¸Õ3Ý}\Ç$V,­’¤³Ï ª&7µ8?O/©43'…!xµ«Žâ›é7¬êÙ¿§Û…ÐŸÑ-Pe%©9©¹©%E•º9ù ¾|ÿÝ„—ÓsÕÓÏ_Í«ÚûT6  Å,¤xœ340031Q(É/ÎÈLJÔÍ+ËMÕKfuø·<vóûIË¦©†·q2Ÿ­/«2Ä¢2ƒ!‰ãë}‘åå“ƒ~ß˜){AHúƒå¤Ï [!N¨xœ340031Q()JÌ+NNÍKÑÍ+ËMÕKf`rüê¤±òü!Ùcy•zjßåŽbU›Á0§³Ã‚Gg²ßráË;X<ú%;ÿ BØô¤xœ340031Q(Ë,*É,ÍÕÍ+ËMÕKf8q_(‘ï}ÏÌ}/ßjû]é´Ü‹Ê.–Å.[EcxçÆ4ž.[ueÛk \!°ª	xÚ340031Q(OIÖÍ+ËMÕKfÐ·>òµ§\Ñà´è¯>wÕEž†hª2ÎÞLŒå=wlÏ–½.ožd~›øì+’ªÒ’Ìœb aÏä.±û¤œÈc[±»(§.À˜{†²†æMïŽx–²NÍ{õü©}Îòåý ‰=*¦xœ340031Q¨Ì-IÖÍ+ËMÕKf¸àÒxâÜ‡PnF—€SK+ãj÷¯ükˆ®,ƒá~ldÿëU«Eç2>ªæc²N]wÇ/YYiIfN1På÷9[WnëX¿×‚=·TýABW@7 k..x¢xœ340031Q¨Ê+ÖKføÑ0{IÉö‡–ÇEã¹4C£w}Éó˜iˆPÁP¾ÿnÚê?Sn~Ú_Âp?VdïW¶¿– \Tƒ­xœM ²ÿ100644 gen-hostnqn.sh ³íñOÐ1n½h`;J¨ü@qþÆœ100755 latency 
ŒÄŽÄ.i%«ðuKôùê‰4Œ¨xœ340031QÈM-ÎÏÓK*ÍÌIa¨ãkoéŸa;©`ÓlçÐi_ôv}lþgQV’Z\¢›X”žœŸ—–™®[XTœª—Ì |âÊ¿÷çfÞ}R.ß÷×£¯äîLedÅ¥ii™ºI™y‰E•p]ñYGVLË9UW£³ñÂ<æ9•FË‹ŽaÑUœ	×±g’kZ»úœ™çëµî³%¸;—¯YGif^‰¡‘PPñaWW‘gw|²*éÊätùà],Š*“7‹FÏß¼îXßÑŽˆãÇ-g ÷fp5 xœ340031QÈÌ+IÍÑÍ+ËMÕKfèÒ<?y¯Xš¶ê9ë3ÇJÏwecÖ1ÄP—Á à±r›GñÄSÁlK„/Ûùh- l!Y¢xœ340031QÈÍL.ÊÏÓÍ+ËMÕKfØ_[—ÙmÂ_VÇÕ:¿ò¿×šnbˆ©0ƒÁ¿ºS©­X°6üÀÓ£ó+‹s®F¥  ÷U ^©xœ31 …ääÄ<†¢}vùÖ|œ—&Ûóä'÷(®ìhô6Kçd&§æ§3„‡ÍÑz|åùÜ ow×f¼*ãžò¶ÞÐÀÀÌÄD!7µ8?O/©43'…Á{ñÖ_¡¿&ˆ6u^Ü¢ÑzÙ#· 5*j¡xœ31 …¤ÒÌœ”øÄââÔ¢†¼Ê'XC’bûÏß‰[j/V¼ñçB°²äŒÔäìø’Ê‚TÃƒ©ï
OÓ©,þ¹wÁJ‘ÂÎr®PEùy%‰™y©Eñùi<ïz{]³ÙýtÎþIuæ.B”¥æ¥d&æ1OÓú¨7Ydµ~ËéãÎuoþ¹g
DANfq	Cçïÿºk¦z«1O°Ö‘íØk:_þDº¸¤ˆ!pæÕWËÊn/Û˜ô±Yí—˜yÙu ÛoVå¨xœ342 OgW¿`W†íSeWßizëvù¼ôão»­òkøÌLLâ3óÒòÞ?]±û^©aÊ+…\nß¦“{¼æ‹'C¤æ¥d&æée0˜™À|¿7ÖP¡këÆ×K¯?› O’+S«xœ340031QÈÌËËO/Ê,ÑÍ+ËMÕKf/î3¾óÕ{ÊŒ>ý¢ÒÐ8û0ClJ3th¥Ú}<<!\øG‡Ï±™Êµ¡JK*RSRÓ€ŠVV1tÙpGß“Y0uo‡ÚžÇÒëo |ˆ-Â¨Rxœ340031QrutñueXú« åï‡yŠn
û.M¯Ø7kÿÊCˆŠ†Ì†¬y^.®™*{TÒ¯°×~îÿ•OÎÏKËL×Ë*ÎÏcàìßÕPÅ¾“19F^ùèæÓ»oHC•å¦è%•fæ¤0$ó›Þ¶óú‘®~üÿô¿Ãå7¢~C•å•å¦Æ'–”$&gÄ§¤‚©¼âø’Ôâ½‚Jöƒ¿žÎ°Ý¦éž9ëÛÐ+*6 kLÎÏ-H,J…«ïýóÀ}zgZpÔžÕMWNß+9¶ñªú‚J¸â^¹*Vë¿x·jzÃàóþù$ÅE©‰%©ñ¹‰ÈN
¬,Üª).z@µjò*þl³wÈºRŠsájojí‹äz¤x0R^Ûà•ï†©?“‘Õ¦åÅçä§Ãuìšx@5;þäæÿó÷­*ïÑr¨DÖ‘–SZœWýä£ú­ƒ·|V9ñ“Ù§âLæ4…UÕùE¹‰%påOý8g$9Çt&ÿoÉ+xÙfÒCQ^Žâ–méâ<¼óW().ÿ³±NÇsº£'²òôÔ’ø4`•¥"‚§Â_ûÏí=\ÁïVÝdØâúZ_ÀQ ]SNRb|q	P#B[ðOóäÅ{útn.àÙø2£pÞnÖdm™)ñÉ%E9põ7½N¿Ü°ÒÄ8|aÅW‹G	ÿ«âÑÔ#ÅYÚ£ŸVw
ç_çë“/â»göZ€QY5’ƒà¤¬\Ø„ýj‚®Š»Œ‚Û·7¼u Y0}¤Ä—e– `Ï:®5t\Œ=~8OãÂÚ]–\†¬¥83· ¤H%"éÓºõÚß©ìÐ±s©3ßÍÙ)õx‚Ò4}¹‰E%(Ž›˜÷eVTž®·kkwÙÄfc¦-‹@ÖSwõÍÂ†»ßù‹Žœo˜ô+V[Î£ÄèººøÌ|Òý–lÐ`)µKËMº°ø÷½÷¥JnHO-)¿ ¡É’cqì"·s^§RgÔM|à”…¬¼,µ(3‘Ýjšú÷o>øIîÆfíîÝ=†ÈÊÁYš—Ì0-ÍW’LŒ×?¸´5ÕöZ×ë’vW-U©Eùˆ¨62||wþ„%©gjNþ;9ßqýùÃP-E¥yñÀìŸ“™W’ZTRÜ6ÛÎ-ˆ'NY¿~ûjÜŒ‰ÿY•E™‹¢xœ340031QÈMÍMÊI¬JÕÍ+ËMÕKf¨r3^¿díïÈÏb]§ßJT¶¾àK4Ä¦4ƒá‘È©Ô£<Þ†Gvžµ×pß|öÇ¥èJKK2sŠj¿y	†¹|‰ˆYsªøé5CŽ¼©› Êš4d¬xœ340031QÈÌ+.(-ÒÍ+ËMÕKfè™4kAÜéÝÇª.„ñÝŸü1ña!¦Â‘¥Ïæ5ÖÉ¬œû|ÝžÅÉ»®Ûù£*,-ÉÌ)ª¼"¸Ÿ_ó–vYA™]ù*ñ{%oË:TE2 ¢xœ340031QÈKJ+Ñ-È)MÏÌÓKfÈzzbö¿èBîŸŽ×-¶›äb*Ì``lö¼™ø~³ÒDÁÙ:ùç¬&§/œ Ç±,¢xœ340031QHK)ÐKfÓÔëùµ¢ñÙböxõì--Wçu:"d0|LÚ¬(¦pJ÷ù-^¥g[V=¿j« ÍF«xœ340031QÈM-ÎÏÓK*ÍÌIaH²\øgbhÄÙ/3l§5¯OXx‹ß¢,?¹@79'5±H7­\·´ %±$U7#³¸$¿¨R/™a§rtÓë—<Êò!;
×žÐÞ{ùÐ"4f0œåp9q¤ãïÜZ¾[WxÓKî™5ï?’Æ¼²ÜT ñ+RÌ¬ëg5¸?}òC„ã»•çøÐUe0Ü™'êïúÃóÖ£¡|i+œ®¬Qþ‡¤ª87±¨D7µ¢$5/%5E7'?h²ù6½I3½§›•ýžuu	û‹pv3üz2œþlÍÒšûê×D¶Ÿnþî•QÏLAÒSZ’™S4zqUÄ±{ŒAÁzŠLö‹¶ÚÄP–Á°2IlBìÓ¹Ò^ÿ¢W«¢tæ/ ¨Â¥¤xœ340031QH,(ÈÌMLOÕ«ÌÍahØà™pXòÏ#Ž¬Ç+Î|¶øºÓÈ¢.©43'¬è×S®P‹ãËûžtýsjÝ{ñ±|TQQjNjb1Ä¬Ý/_®Xfû}VØ”ÏA÷»5|¼ º€3ð¨)xœ340031QÈM-ÎÏÓK*ÍÌIaÊß ?{á›ûï•"¢4×,œ&õÓÇ¢¬8?'3%3=W7=±()1=U79?''5¹$¨9™ÁBcç³:ÙòZoy²…º²ÝfL¿H„Æ†Å½µ»ÿ	ØÞ›2óEòV.¯	·£kÌI,IÍK®Ô-)JLÎÎÌKÚçðöü‚/8qËÿí}½zÞùóÎÿjË`˜Uf5!}†‡ðbƒÃÑórø>sSG×–W–›
´Ïio~ÐþKêÒ}áû=œîíã
àÆª4ƒAþNVºE°îä›VÙ?<;Ç}y-Ëut¥Å¹‰E%@cÃz­ö_Öô-~;û2§SßEÅó'ïéaW›ÁðpÞ¾À9Át‰ÃŽïÒš4—ëJe¡«-IÍIÍM-)ªš=Óm¦lI»Ã³¶RÇUÿn­É—P“Ã­>ƒaºÜ£5Ä>¯žÚÉ q)¡¾ŠÃ¾y‚‰`QÎP“úÁiu‰¶æ[Ñß&¼eÈª]¼ô/ºá¥%™9@w0.™²/¡‹_Â†aß¼«ŽNŒÇª4ƒÁJ"@Þpm–]úûNQÛEŠÊíÏn •„ª¯!xœ340031QH,JOÎÏKËL×Kf°ÛÑúëÌ½s;¶ÉÑïü»b·ÛCte¯Ö;Ä_ïí*Úq[1É^õä·Ò¨²¤ÄâT3 Qì?KO<}ñl‘sÍ3ã3oX>ÉMŽª&ƒáÀ7=íŸúq3TŸËøÜÜ¾i’nTMrNjb^iÐ kkjÒmtúƒÝ›™[%Ävê|*CS”Á¥z±úímå6ûE[õœ»ST”ll4çŒn¿ò=Îü÷¦·DyÔ¤¯X¯–JGQ’Áð¤gú­>›·¡ª—ys®>XÓJÎª$«8?hˆîÓ–¦Žcn/Ø„®Jü9Ê|4=Fj"²Š†ÃIÝu•n;~t©1qªzë)ÜÆU‘›
R’Tš™“ÂðÑó‚áÔ´†’|“óC§Í«–ÝUV\š––Y´¬ïBÃ¦·Smž/˜ýÓeÙ»Ù·^AU“Á·´ßcMã¤]õ§ÙÕm·æf¯œUSRYZ4æÖ{ÍîËg[ë%ÿ]©×Þ×¯ø·ÀEIÃ÷óÏÕ_æxž˜ÛÜ¸òô&ë'« §&ÚŒ¬xœ340031Qp,(ðÌMLOu*ÍÌII-Ò«ÌÍaHß$z¬q›÷7óI=s|5.ê33„(O¬*-JÕ-È,HÍÉÌK-+ÿù:îŽÑ‘=;â2˜’rÅÏ©©› BrQ~q1CU‹WÛÍ”ûóÓï­°|>É;‰5[áÔ¸”Ô‚Ô¼”Ä¤ü°IÊGN[LœÿòÂ»²ƒóÎß™PÕ’œ1©<¿(;-'¿¼˜!ì×9ŒvÃåsÝÞõnÚ0ÿÑ> Ç=T•¥qxœuÓ{8TyðŸê‘ËnÄâ©V!å²fÈ¢ä‘f¹ŽrY‰bf3‡™sÆœ3n[nÑUèÙíFŠnnÉµÒJZÉ-+M¡eŠ1Óî´ížßÏóý½¿÷w^3á§EdÂ8‹OŠûžÜ{LRHrßØtYß§0ƒ´ÉÄÄÂÌl‘ÀLåA ÇaÙýgÇÓ/¶çu3Œœ.­^J)ÈgCœÊ,iï²u>bP¾§»vø¨Gª„ÙºQ=ÝÉ^žŽÔDN xðÒ£^˜PÙß†35ŽÓYc¶Ø™Êàs §á0Š€ù5åTv!Tëõèñ.‰™8…K"]m)T
èºdôÎ¡K¶"aÆÖmš>[Ù§-!®´(fC@¹•KÍ{P¹Pìl*«H\½mð¼Ä¸SHv®QO»\S²•ø½ªäÄ!äŠžÀÏMÜƒAC€†ByAOäqã³ÃS³šËI¯‰’'È;Ÿ<ß›®ã]ã“l5N(¹Þ|¦_¾÷àÏ¢!lˆ'„u%¨«Ÿƒ[Ç"èù©G›Î~kç­ô	¢ŠMð	ª²ª|¾œa<åñÕùV½Ü¡’fP—‰¦ƒ9[­
K©‰sWC;¯ÔªÎXÝix%I
ÞüÅ­nÊÐžöÁð©¶øÕ}W­·Î>q„3@JŠZ^sV¦}ò¸õ^{¹3˜ó­%’” 30"´B[êö ç¢\Cª[ïMýaªó/Ä³¼Ò)¹ñ}—˜?W9-ôÕj­Ê” 6LGÂ8!œGã
ãÌ©1Q³[mgÖ7äø–©ÄZÀöåfss-„¡!Œp“ˆ±ÀQAšãážê\#çÈ³a©ë[[’¤.Z"³ËkCô´Õ×µ5ÛU
 ñî€Ú @šù£ÜÅ©ñ0#ÉùiµXNFbWg|ô.B¶#ô \Øá7f¼¤ª–>Ô)Is¬=Ø8›#-X`…<fãÏH˜éRÓCÞÚó›ä+¶È}¢«ŠÚÂaÑkRŠ›JÝ¡µvTcëpMý÷Wu)ÒR¸A[4åé-Ã­—Ä>HBTF÷®É¼)Ÿù-ê.-ºÕ¾:oÖ“íFà¢ˆéëÒËƒœ,šŒE;¸9—eMPõ
_7€·Áå%ÿƒYÀ‚Ô¨¸Öó6ŒjÁew<m*¾ÀÂÐ•8œž[ÚNŽ~<¡¿Sm1’d}éX Uù.ÜtîžŸ%ÕÊôI“ì‹&—gÒŽÇåÐ…qÛûo”<;c^ª¥­?Ù1yõÍ«Š¥™ä¿i)1ïüDÐði7i£[´x<}ÿca'7}K(%“òŠÚ…Íäñžñ—RLÔD–™úØg„	:VMÌ—Â¯>(‚óP6F Þœs˜‘ÿãÓqòú.fGW£4enŸÓÛ¢å
e“ÊFŒÕ[=nZ^)-0.Ä%ÍÛóóªUÊ|³Ov¦L8Äzˆ÷PÈ‚4>Ž
ÏE œ‹e×Yj²êI½z	]Þ}Iû$‘\6Ÿ	‹ÞÕxÞ|ýâöñ æºFoüãè½ Aìç†PZŽ2¡P³÷R™èEýõâ#Å×Üô‹.nI{«ûüMçTýÄ`hÌ:É*ò &Â0`büžÝ&SåØ’@6Z¦Ù[6Þ­Æú›°!‰ö´´ î~½CŽšJ\øïãÍc»ëÅGaÌÅ1`½\Ï¾S¡|Mÿ\Õpóµ+u%‚OçòÐ`áÍ109J¹½'³4!vƒŒE›ùO­a’Xá&¬wÈˆ;2> ÊfÄ©<oÆòÞþÛÅâ:qðžÆ&…5ïÛ®]ñÎw²ä°Œ’”q˜Î½æÞ½•ü‹_‡¿Õø´‰–ÒXêü_[Åã ­xœ31 …”¢ÄäÒÝäü¼4®êy¿vÏ›ðìéŒó?ÄoÈîÿ¢ÄmVU\Y\’š›Â0«æKð»©b¾3›fôÜ-K¢¢4%µL·¨4'µ˜!®$KQß ÛáEo'Þˆ¸)êžó Äœ.^£xœ340031QÈ+ËMMKÖMÊÏ/ÑMÎÏËKM.ÉÌÏ+Ö+N-*ËLNÕËÌc(0KŠ)ïHöh*Qè½À¸Jÿ§oš!\wšnbiI>T+²6¶Jƒ-»Ì¯m¸Åüês£“ÉdmP-ºyIi(úÚ3;|—ˆNbY_)ËöAKñÿTÞ»ñXôé•$¥§–€t|ó2?Ä1ƒûÈý«·]©®éü¶¿*‹[~/fËHæzÝØøowhâÛÉbÜäi©¯
xœ340031Q03Õ-H-*Î,.IÍ+ÑÍKâ¤´½¢ÒœÔb½Ì<õo±×Ì$÷ï}+¬Àséê
þ=A>†­æºye¹iº‰¥%ùÉùyy©ÉHúž¾ã¼¼uÙžêIûØ‹~±îìRUÓgÑ—™_Ÿ“™\	²5±  ¡wÝß¹ž/>\{ÎùºEIØw“5.W€wFm¯xœ340031QÈ*ÎÏÓMÖ+/J,`87ÿ«ô§Ï²¹~ÿll~}½Ñ²Toå9Cˆ²œÌ¤¼²ÜTˆ:¹%m,‹û®}Íø¿¸Ê¥hM”t‡ !T¨3xœ31 …ÄÜª<ÓŠ~‡Š·¯‘Hÿ—aPùNzçÙwMÀÒ)©99–òŸû}ëžï—ºõQ6w¶o‡I%2ˆ¤+h­ýüÜòÊƒˆß“ÜŸýúõ$"–RÀðu:WBïÉŸó®,=¶íñš¬%EÝd!²¥‰å©™)O2–Äí^aæ¬~ÍÍn™æÿ9¿!
2óòòÓ‹2KŒ?óV|=b0ùÑÞèÚ ¦#Ç`JŠJ‹–®ÈÜùj~Æ¢[¢Õ·~ð½Ðºr÷É˜‚’Ô†ÿ_ø¿Wß.ti¼P[\#¹ìmD>757)'±*•Avn¿Ò‡_‡¦üx?àcÞ›Âí_óÌLL€jŠóóô’J3sR,¶Ÿ}{ÔÎ¢ûr2—Êý¿³”
Òf±@MÊL.ÊÏch°Ë½ñËk‰ØŠÒ¼çwOªgŸ­,
Q—”VÂÐ;S;%‚eZ´šÃwCÝKÛ*'•Ì‚J§–$0¼»ÄXÞûæq&C+K/ÇÇ‘*¨~¨‚²Ì”ÌD†Wë¿³Zåo­Û˜øKçî[‹ô3÷,!
ò“¶maêÈOù[²ýÏ¯K¥-W7÷]<‘-NNÌIMË)­`8và}{[fŒfR¨q„Ý…×d›É jRÓKRVN­Ûš®ûCi"eáö>KgBUd$c%áÙ\u¿]ó˜»63¶”œ»æ7Óíþ¬SPù9@w¦ç2øKlê~uBâìzÙK9ÕSBçNy¿wDII~qFfR"ƒQo°”@~Ï¦¾¿´W3+ÿŸšUQ”˜Wœœš—ÂpMÃiõé ^å,½Ç’Z;¢O­\P
QS–YT’YšËÐWmÖ°[ã“—YZîÚüŒž¥U<å)ÉÍSôsÌ3Žž˜=ùÏëì_bÍ ®¨Ì-If8è4Ã3¬X´Êøùô%¯^>Túeo‘®Ê+fÈYÂ¼åúi‹ªs´ë/&6ïÐ "^E¡Žxœ•w •ÝÇe4(3‘QvöJöLEV„PÖÅÅÅu¹×že&dÏÈJ‘")Bd¯„¬(£$›Ÿç¹½ïîÅïŸ·÷ïçÜÏ³Î9Ï9ç9øù……„ (SÌaÊkŠ°5ÇYÌšpåÄ=”ÔË ,^év¦†þ•ÀÖ Éuq€Ú¢`[/Ò'HqˆLŽ­¹[›’`VÉS[Ö±—èd
7ã±³q´€m&\p,ŒÅå}‹ÓÍ¾Œ3¯´îÅþú/ŠâC`¶`ðxÖ,NÉ™ôV«¨Ãèð{¯wÓW¢7ƒ"çÎ1l–å ±±áq†š Þ(Kœ©+s£jy|w×…n?šè19Óô§T8ÄÖbå1  ¼.(\I9Qe;e#¤Ýé’‰éÄemÛ²¶$b¦ŸóãÑx]¤pÇW©‘¦õ„Lõký“†¢¶¼&Ž03œL¶ÒÈÎö,¦˜jrä»çGÖÆþÄlàPˆfËcA¡,‘Ž¼8á‹5­‘Rg5[ð“”lÉút•»v,à68¼	"áæý9y¸'ço}{ºlö`8‹MùÒuÎº‹ë^*É^:ÍÉsƒpbá±AXl
±ºV‘ö™è.==[hyíïW$¦$hRùØ÷õõdgDëÃ³¸¸¢J²i¹˜Â€BÉ§$]HîLÿVÎ¯73lW³¯/mÉ:8@L-y6ïœKOìY½ýZ¸ÕTmqÍSæN
œÁœ5<åE\é&i-w»ƒÿ %UT‰Uù-æ8 bö(™&Œ0ÕëÍŸŸÊ+b;ž?poÿ;m‚@8lž=¤ÃŸ3òZß×_êÒç½Ïã>ÅQ¹H@ÜÓ°çA¡õÄ—‡|ºYž¦¾]O	¹”ã?†¤xÚ8-
iÜ5_¢9¯4üˆ“Ç÷+ìoÂb1…9¸òÀ-à›R£sº5öEf„—ÕÊ¨ê_‹ñÎ¤~Áž¥®s&Ôáe=¿,Bµ:?{‰Pw4––;HÅœQ™ýù*êT9Í}5Í¬Ç2&R [Kˆ­ÔlóÄòØÀPÿœ¯Ùö›	?¼R"6>N¿åL†ç¼°iß‹gû^¸<9ÔyLÇÙ?…ÏNàµtl/ÐTY;¨yœC“ñçÇF¼(‚,dkyÛVjjÍcf¹ÉÛñXC]7îü¤VuO¬§3ø¦%ÆñBó°	ç®(éÕ5&§.—®íÝÀ&mvßÒçdü®`—´|uÈKõÆè°–ža/6V«6§ƒê_"ËiVÞ&ìIÌå™_!ë&9KÆ¢Y[ˆÍ
êÀ³5ã™¡"<ƒZ[žƒâµ,óÅ’JÞ¹wEÀãiHœ?•­ØçwæbÝïíQå~‡cv¥ »eíº³7Š}>«-XãÁÃî4¾}µõl#à›w6tSjHcîôð—¥¬®˜ÛÔCw>Ó¾pStù`f¥g[àâmáÊ–Åø•V˜Â€99M¡êQÛäŸË{©îVdÏuŠoÍÚšÃÐ÷Æ§HÝoLirK/^\xPi4{ÐÉ[ÔjêÀ³ÙŽlëüô ¼öÃR§†¤ÊM–ªÜ[´.¼—J3ÅÂ”ýU)üEÿ‹mÇ¨4l  Óð¼Þæõ«Vuæ×|QÊ_Ã¨¯jaÈoª*W_G E…5†|û~7eŒh% SÔ	êí¢¸óŒ`JÕLæÕ±ÑÖ	La@8ðZíÁÏ]ÆdåÄîÂ.–ÓÞ¹¸5k<!i1-Ñó–«¢=»bÓdí ‹ÇwÄÀwò‘÷µM;±"}ãŽ¸­›HèøŽ$ðË§ó£y ºañ¼¯ÈK„+zÉ$ºd·‘PˆôÏmYsíï¨f±>ÅUV5Ív.˜³ Ã›µóé÷É²Îº9æ_Foí…9ˆdB¡·ˆSŽ‘®Ä™°ká•çü6ƒÚ@ÿa¸ÿiÖH±ÒªïÂÍóÅ¤?1gÑ"14¨û”þéøß‰fç	oÎÂ0Ç~ZµcÊuÙçôÚznüŠì4*ÚšFBx6;9À±6OÚPøåõË“#7L4g¦º¼"Š9ŠÜwózîþëE‡`ã=/y‹‰*¡pÌq@DƒW÷
SUk¦ždå*òH=ÉŒ¯íÖôóe[
È ›p4ŸÇtKÚEsy)vzBŠýÞ%é[¯í`Q©„ÏC¯`Ž"SÌ•ú‰µ=Ú¥®xß‚Þ¬ÔR"Ýšv‚™ByPPs(
81’÷Ø´Ÿ‹á²ÏÛi9ŠÔLÞA?¹ó¢g^VÊVÆýd½ÙH+­™Ð³+Ø}Œ;ã¬'vGÄç”¼˜ó¹¬5¢ó[ ¨÷ÜetÄn¸±©d!zºgÒøÎM÷>Ýžn;Yê’>4|zëå¼ÑeøÈÀT¬úö ð³WXá~|º·Ô×&M´*ù![sH$Ô
sª]«ˆÔ@&¾“>ô‡x[œÞ]º>s[Ô°¿Äš§Rdõ¼w@`XDáÄñ¯Ø @§˜üM©ÈQÏŒù€0ÙºåÒ+×GU·çQP[³MŸw4åCçÝ©©é=ÆÒ‹gX{ºy]0FAR†fC29M!5Ó–!Îg³ÊÓ€Å7ƒüc÷{nÓÛð°O·¬GÅYç¼àÙFm­Üoä¾‹^€Õ¡H¯ô7ÏN±É¿|óv 4’ŽæÐûp«ÿ§ ™µß…è—SHª]ÀËz|äøçlnsCOÉgk[ªKgaF6¢oã]§.À[Nôþ
W¡~PÔðKÝEj"»cû"—Ñh¸5&ŒZ³s#žKp)ë»½|Ñ”þ=Ä¿§ŽËú|F·¸ÛŽ¸¹i2˜ßÄa­ =-;|óZÐ¥J®)qŒQÐÃH2ê»ý”øÙÆÆü“×fŒFÓ€ElM`}rYn¹A=ª¯%9–{ËË‡
xjXÄå¯åwœ¾ ÏÌ×`wdsôØž{8¶ýx6_‹Ù³'ÝŸX…Þ&.}°=üìWú!•÷¦Ü×’ßÙ)1˜¸ä)n9·PsóÍó„úÓkuÑxÒÄRHêœJÆ•}øwæ—>ØÒ F¼ ‚R”­Äùƒ_ ë·´Í5q°àïÇ#<íów
³Î¯¥	­Ö«Ý’·5sDBl7ë¨Ôvó~²°ø£FÕéø!òìÄ­rŽcYgÒ½M†ò÷C‚š
øzç†Ž’˜Øøx|Ó"#O;<!½P†Ù’º:²82sðÔzÐ[©@Mâf'Ì,ZT¾è¨¦ÂÂ×U¶¡ç`M?µx=ö<¨Ç$E$ô‘ëà¬i¡ð·7’“6ÞŽ¤©Ÿ¹}<å
AÓ6m2¢i~6¾…@"È?B+Á„ü¥1WÇ_çù\ý¬þù4æ,(Ó1ï{¨HëAßUë‰¤·Õ:Éå/aŽ"ÓeõžâÅjÝ>·½ždõP6ÐýÞòBknf÷§'
´š9úÓ^J»à”ÊØ_ÐÔ~•€-ÊôOšŠ@6FIœ$ún â“ tªN½òS©sŸÌ°’d‘à5Üž/1`ƒ`n¼²”þ¡huøªA4Ñ´?=‚ÿ–0(ó HÁÊÒëKYž~ñM©ÏÑ²Q”Xò€‹±Õ	áÏ‘iz«R^úß³í›ÊìÌ¶Ç7‹}^áäZHº°§Ïw\wÿšLW]s\x tŠ‰y¦°W×ÉOj¶ŒX1¿aw"vl¹tOV*eŸâXš&.vkwžLhÜlö‰ %ÿ´Ž4*ej§k×ÛÄäï3I|ºókÇCgÑ—ë;‘|Ý±¦õ|X©ß»˜ã€ˆwÌÁë¦ÏT¦
‡e3)Ò©5ìQ)˜ÒŽ€	ªîívV¯é
Yòµ†ï]FT	™Ÿ°„A•¬PNO¡¶I#Æ/DiÍ(ø:™:£°ä6Éâ÷”†]UB‚vqQ0­ä«‹ÛãŽvf›ýgà)å)ó|†0Ã½BZzqÓóŠÐ ,aôEBºè_cK5Qµ/.®,Y;L®ì€%¸(Û½Uòö7€;O-ïb?4@¹ãÆqDA, Ï“ÁF“«Oß²ÜX‰³Ù(”ÂœMïdÄôýJK„Pç\T ûZ-zsÉO>Uöè¤÷Õc_fmï{ã‡LŸè¿¼%½ùBŒr´³C ¶5$z6Ú³ð¬=­ÔOý—EÉFç‰öC‚’A6Í1úwÒ#Þ×Á&¯žñ>«Ï×3¶P6 /îÓåtnW«7MýŽktQÃnkãˆ²Ü\Jd{rQ4Ó^}‘½ö±äÉå8]š;s ŽzeétÒùÅ¡¯½é8¯]°Þèà–Û~œ½9K"¶aâ½ãÀ×å¥³G¤7ªª·$¡T ÇÃÔ
½T=,g*žÝâDEÔúKGè=† øówpú¿Pe5>|fÈ:îÓôØ< ZC|±Îoéä©Hý•7^09ì•ðYJfë3âŒ Àa€ÂáŸk‘UÄBJšìB#'I4!m’˜³ ]š²û¶.óå†ÎÚäsÆö¸"˜ã€ÈY/é•÷ê›–8ò|Lp3xØØ–6C8ÛÚ  @ÿXÛebVá:‚ºí—¢î˜×Óì&ybliP¦Ýô×·»PÈ„…æ‡E¥l  ã?rhÊo%ô~ ›,½y¿Þé´„ëÛòèÛÖ›'ÃZ‰ömÖonéXòe½º¥Ç©‚ äz=ÁZw¥ÌÙ!_“u)YðFé Ó©ÊS¥ŸùèŠ/V~¯ý;jµÝ:2—¯U¸AÏà4ƒÊû7Þ«¨5%3Û@w"Ôœ¤¼º^éÿ#çuÌÅ¼tƒ ·]ÀËõë”nHˆ´’°€HfCÕƒ‰Ë’RÛKÊÁÖÞmm‘ø(%?íŸíÏÛÉ:—Tï´CêŸ4h”x!Õð€G§güµÑÔb¿¾z,Ø @'e}åúE2g2I½Y"ºÌD%º#Ûó&à? ½›•ÁÿkfeCûáÒÖ¼9t³ŠâŽÏgæMwÅYPÐ0û63f«¤¶À–õÍ*pÊ­^P3ÿ\ÒøŒ‚Ù|ƒÄ€#–ónnÓÆE‹&œ7ÄIz…}¼æL·çmL ÿ5i~óÞe,-"²\³aIÃ42îtáŠ\»  Ô ýäAZyZÿ¦—Eº\jgíwa /JÏê“%=¢×¢Y¥¿Or¦º5î@ÀÛ?Ô^Î8¿&þMäûã>¬„­{ŽVªbJ‚&Šp‰ª!þÞðKÚeiœvšøŽÓóÏI'o0«£§˜lÅxŒWå|Ðö¬-ŠÔÏ¿—·›C?‡2kš|<°š¾òëL€æ,ºS¶fuâkfGücæêˆ	R†ð9bÌq°yøPÓ¾8õräÜø5õ÷¸Ãìý!ÛÓvH„é <‡ÖãP› zJÆÀ/9–dªk¢Xã ÎnmueRNÎ_<Ô¡×LŒj’ÀJ FOŸ·†³¼²§|*Ã7±î×÷iKõn	µ±Û4é£X¶£?[¬D ™7jB¼¢tbG=ž='ÙÜªÿî@tWì§ÚaÅ˜Ià—Ué~é.©`L[&¹¿âf7þ–A=KGˆ3z›: ±ƒ2úÔCÓz¬!2Vê–ÖÆ-2fn»  Mt•­þýx;œxíZDˆÙ°A5Oß¹]ÀëWëâQ#f”bâonRÃÇg‰Ö0 ÀìÇ¦TÑsšòà—¨±ÕÆÎ¯»~ÓÓã`KƒF§F%}×-eÏ"üÇ²üÏ@Ö|9ØÅ°€4ë--Û9™˜àš!zu2©‡nl[tþ;?A÷6„NŽˆÝ=X¦pO÷œÇñŽLIPcI3#6È´°Jõ·ÛÒßÏIˆILa@¡tu£zRa„Ç]?47´fæÁÙ<#émY38Y,€sfìµØU.¼ÞTÎúÆÇG}H¸[90gAúDêÒ1ë~±XÁðžÉ*¡
ííâ€H@ ¤:™Þ|öý×¦ñš•ï?éoKÃ¦@Ý†·œó‘÷'¤Â57TÖÀ•µö¦$(Qsÿ4
ùn†±ìyÆë³üÁ™¶ê0……W©†ŒVcÇ$JIê™1žžÚ–¦Æ6«À{[6œQÍB>i+°‰y\Ÿ aÜ±_»" ²ßÆg£ÿ"Á
ÎÓ¹øÂš'v¥ ;Á>¼ŸÉ~ýWð×`¿ã'“²w@›J|Ú&V•ŸøhŸ_Ìíu?Fäá¹3z¤VñÇkT&Sž*V	šk^)YSŸ'Û~<=RË¿éîâ¥»tÔ÷¬»­‚Ìw;Á7ß¶'@÷Ýsgƒ.vÇl‚·—W×e7R·ß«² D‘ý¤»1(®ÎýXJ§·\=Û/üŸ8 R% w42ã°æµWÕ&$—ˆËœn½ž¶(;G$øÿ›ï¥fÿUŸTª«¯S÷LNÓûª±Xz®†¾a ¨¨•íGuf,Ûœ/ëvþFø5mÇæGû`ß¸æå¡½Ü%vY>'¸q\Ò—lE 6=èŒÇâß-»_ÿ6øéË­%Tœ“¥e"ö<h7^Z¬sÄò
þk·ŒïP‘5<Í`v¢1…ÕæÎöI5iy£š¿&€Øü/ÒbóçV§“ßpb4ì÷pMFýAÑÄi™å= P/ßÆØ³Õä³î }^ž[¨®sOÌàÈ‡# Þö:•€"¿Ï×p¬T™²;Ãt'fqøw@AíÆ¡ÄÁä¬Æ“åøfCŽê*q7ÉïF€vºCg$2KÕDÈ«=¹ƒw2èjœÜn æä±Äõ«žê[ˆ-.ç:©Üd¿“CÖ@ºˆz÷nÒ"ÅÃSC»¹}C~ZÑóïÎ€zÁ7¢%ú5íµ‰—Þnè¨VìŽ‚DÊ1`Öü–Ø'JášiÏ{mIwR(øŸ<3 w´êÉéGf.c­Ömšçî/…PÙ‹%©xÝíåÏ|Ï.¯Ì‰Q‹¿hz¬»ž'ñábðs½ÞÔp&‡_¡`€a'ç …ÿ7häV-iù%[…ïtz¨0ëaWþ‹©,»"  ü‘˜®o5cŒRlöR9.Ós½C»R`ãlÆô».ÏhÂ\Ù~n°èuÌÙE–-ãƒ0¸˜¹qÚ4“Ž[Ê8®2ÍýÃ”î³DT±Gž ,k´âñ?ýåóZu¤„0Q™…ñ‰iÔ3¬`4FVi$Fú¹Åµ`Ñ9ˆ§€Ó Ñ÷ðgnˆ~EÎ¬Ï6Fôêèƒ+_Ëí±ÆA£¯›]"Þµ‡ÜWZI¹ÖÔ3ì§;Þ„• —=Ý¹Ã˜«f5êÒkzýR8K®fâSÜmÀ_k±äÞ!âu¼,‹–ýÜ†³¹Ú…ü|ü[ô9#ü$?ÏŠË(,àÃíJ„DPúÜƒXl 8s¿Ùìø˜<ë«G_uRCTIôþÿïíåOö…õûÛöQ‘ÇÔ—Ü<q‘ãUpÿ] P*ó‹9édÊ:Oªã7+êQªßa§va ¯cw½­øJH=Ö“fƒÍ[ÆùÁÕ6€s‰¾ìªiÍïîlÔ¹fR4XGibÎ¢Çÿf-xŸSàúDòØ05vœ•	sùñòjÏ	KÃ•{f—b‚Pé¥v¤7/®x1œ4;ëŽl«òá3ˆÔ¥Ìz¤rŒ÷"¶4z¢ÿèy‹‡
tÍçëŽKž:š@¿>ÖÇ™øÏég ®˜£ðc\À	³ß‘;5žî!.õò7<m´–²å¢Í/Ÿ’9Œ)‰žzÖ©Æ+L*uqyÌÜ¨–²iã—ÆÅ££/2Og,gLRõvSP™¸ìÈ¢MP®€ÆÑ@ÎFÃ¹g¢
RüâÏt*–žö$cKƒ*¦æ$(†‘…ê³Ýñã:#Ø @Ç\ýåð£ ‹»…WB=ó8ß˜¨•mÏozL¢
Ïº:ª§zÊ]ÚeªúÞŠCåŽz‚uôf²êUêîN‹gŽ'2†]¥Ü‘+ãª³Wé]_ú˜o?¼s[ÿÎ7ü-A„©50òµùë8î²èuBžûTè§½iå¶^¡À2š–Þ¦uÓá^`ÍXÐËÐ¬•¹ë‚1X4+n$ÍÏ¹ÜÆX™Íz¥–ÚÒÃ¡f0£-ÝÿyŒÛ“}>êŸ½wô”‹óí’VžÊ{Qèñ×óe©E”‘$QŸh®E8=2«Š{°hžwwnÖþ(Úaª°Ó¹qðÙXÂ–“‡k»°`3(2(˜
g×É‰Öúý tì[ºù>aPÚŽ”DØf°:~À=U˜áÚ/ùéoáÝûäw‹çŒZ;©Í(ïv©I]«X
"ÞŠ›"¶<¦6P’ÇÎögZ¸ýùïUÔN5]/úç¥oT?ÄéT1+µ/½úÀHNØñàåÍ×x~'r©c[¤%Ý÷EÖª³_ÓSôŒÎ[kK ÊÊ×À oë³–I!ˆ.f§§¬…‰I{þZ¼–sÔðÁ^èúc_‹(%çý`‚®FSž+§¸çÝ^  )’IØÞY„Ÿßðäº“É‰BÜCâŽ8[ˆ­Ù¿}šÉ‰‡‰Rß'Þ'?™'Ã—ÒyI²;*®-Lº5ÕÝ<‚ÏMüÙêÇãÃz2Î»c€ å²í/¾w¸„my=ohv…Ë•` ÀÓÿàü‚ùÝ-„JÀ¡¸ëB+Æ3±»3  !Û.ºÐÐàŽ{ãA†Ã5ºqºŠÝ1@pÞWç±ÎTYþÍ6•Pñ5…œ šŸr(Ôfó®†9AÿíWì·øññ%«;ueI_ÍB+{?ÙþXPøùÐA•ÈT…âÂ‚‡Ï+Ò˜©qö‡âF…ô®™f$ò!ãáÍºçO>!ª¯ÂDƒÝàÍ.ðŸ[´ˆ>Gã“Ž	‰Y&NÒwAÓ“Oú_ï‰ºRÃ;¯m<ÿÖ )¢—ŒÛ¬k)NsO\'Ø¥œù†+(Â]*°€8Ôhìî Ð†"ÁAèo…Yºt®Ñ•ƒ™¦•Ëò”FÏ{ï/³¿PLzNâså°`gQëwñ¬}Ñ€uÈ©Äœª\º‚Ü×Ÿ†´øïznéœÚB vv<ÛÍÐ‹ËÀYæ¶t†£ž¬è×Eòoß6Ûù°º>.":}ƒP3ÚÚí—fë…Œ‰W,÷Í·‘Ž·âVÚßgÈš;÷™ádDbàPðÿß]Ï)l¿8”r¬5>|!ƒž©½5½+‚^	9Ht½ÙNƒJ‚‰*6H3Ÿ¸¯«tW
üHÀ:®¥Çë[·)ßS…¤Bú,[æ¢mQ<fP8ÌF“|¤õã™ÏÏ›4"\5ä\ÅmtlTŽÑFÖàurª«*ô*»N†aLÁëeº„‘«Ã¸©·æt“HX-ji¶…‘›aÐÙx¤µÜÀÍ~‘^·òéÒ¤ÿ]eØâÔeÌYt‡+©Øq$‰â— 3µ—î¹‚ÌqptF.€ôî3Ü\Jý˜ ñ¬Ù‹Ô´Í[ÒNð¿ÆfZŠ>EºK¼Æy|‰¶ªÜÖ‰‹[½æúäÛù&\ÂËWäžæd§”ûc %f¤r{ÀÓo—¼4A•6÷Æc0ä·BÞFÊzSýî›_ø8#EØ©Wpðñž(x$NÅ5 *9¨¹ºmyâ™bFZUøž$`jÆWÖ•jîåx®\€¼ã¦ùÃ/—0‚ÀÂÚa"wµú9•É`Ó¹Åc	ðîÖ8ÌYÐÉ×Ì 9þ¢° ¼1!¢)fš‡Åƒs\jür9=¡¸sº ÅCÿ9GJz«jÆ–HS»?=
sgPmë”-7{½$03d«Oi§}Î%˜t„u¼yÿÉUÚýóèq²îÞ˜Ÿö…ÏÔÚÇðEú}”÷_pŒ‡+=ktyÄDQº1xæ…Š›iðöl6![SW8b³7úï¨f« l ÷á	
¶F£óú.xÏ|M^î‡ÅE%í´5Ý›‰]ðØï&Sü.Ù¾¨,¿kF±ôö¥–CmL×Í´¤Y²¶³Û›ºº¥[õËÔÉ19Ï+hÒ-¸õ­wg@Mæ·ãKŒÄîc3™a„],ëî%*x»c€ 8«ïeˆo|iloÝ­žGòáš[Æl¶0¨ÍK ,ÉC/ÌC;~"S1Ëpì%Õîmªàíz|™|¥vOÔ,uºå—z{îRÚáÔ‹J³×…rS÷$S?¡ˆ_×ñÓW’ïXšæâÕ•†ë$m‘P3prûºÅ¦½«æ’Voˆ¤î½-íK\±åÞÚêw©¼ã Ìr3Áóøu7wDqÌêç>Xp¹)]bAçÄ†ºÉùà
«Sx_GM[¶£0Sˆ‰,áÏúÏˆÌã¤¸ðÒôqâKÓ±dRùìÇ÷¢Ð‹¸{eó(HTOþ~ESKÌæÝò=g/ÐléÿzLÕ]Êñ¾N¸£ˆ¾âk(ýV¶yÓ¸‚µ/ðmPUÝýbþ,ÆcéÞhìÐÃ%#ÆÚ¥ˆÝP1ùÆzuÃqÆ*(¹·ú'S¤²¶aw”Ð§1ð$ºõ“Åtƒ™´™GlKÿ	;µ„Ãü¿K¦©"<h~ÝFHfé°ÙCkô„&²Õ½9ÖváíL£¼p7õ‹Ià—%§ËÈg`óMFõ	Êæñª$¡Æ[ƒè™œV'ZZÇë4kí3UQ¼ëÅ‰‹væÀß~ïÙû;óÖ_¥$òLß2cŸ¢Qðº¤û–uÅÌå} Â!9Ð |þÈ¶¤Óf5iï×Vä__#þˆ'ªñxÁlªæ¶­ÄÖ8¨2}@¹ü¸}‰ä£ˆg]±™Í_|6æT°€­-ÙÑeºã¾Ó¡>#südš¤ß,v ¶˜ùŸ{ùºgÏs½ùiœîÃÍºÍÚ—¹ Z±*æÑæOÏK…¨òº“ôo>ÙÆ ^ß}è-³·9ÿª¯2a°å¼õ7ÆjÔ*ÀsöPfåÁ0¯×–mÆ¾i­Ý—uM±çÑu+¬›³ûÛÃÙtŽÂ ê4I¿õÛIMØ@jP[æüC!æ|Ë*šÀ[¯C¡4ˆÍö\¾¯“¨Ï-^|ÅÑNŽµ¿ÐfP\Ä•¬Ï?×_?bËz÷}¸ýÃ¯J¾Þ6Áo±€‘mA±$Sªì`BOÙMÕ÷òQ9 `0dSÈv&ÓV¦]ôAUiÕ­‹•Écj±¥AŸï=--ÌQúÁLZuý!i5n¼·OcÀyÚ|SòD^%?–õbª†‚G3N[¦J‘vp“MpÙ¼žg§¸y¥“qNôê…&îˆ¡¯QMÃ‘ ‹ÃZÈâ$®guÞÖ•Š;’àÜèQ¿îXVå;1'”Xèb.µ":Sþ¢ ›m8ÌíŸÕägøú|uJnM_Št­»!Ÿù=k4Yñªlig~¡fõF%+]¿üzÍÅÂãX	°¢á‘Ÿ¬WZˆÀÃ%û8ìo~°i£Š{Øp˜Û±€3ýÅG9ÝŒ]³-cÝÍ¯˜ïÊ`º«5DõI'†È‡ƒzc</¥O˜j?æ@n:j|Îð’ìçÝÒÏAA!@—l·~âY¸¿«ÚkjYß+$ÖMÃö‘ç?	9üe€Þ­9}uîX.|cVsf	žBpå2þÅ ÄEÅÄŸs•6ö®¼UTÏ›Sã*ó{)à ‹)‰„þi%ÿÏû5 ÇÌ®ó ü²hðEßF­ä¡¨„ÿ¿ô¬Hºr<“i¬û”,‹8ï8…2†”ÿ¿(pg4èÏï£póœ9ŒùU:g©ææ0—„p4ãÑÔ¼ðgß' ƒ… Þ³½?¸ÇDûá#.Áw.#Î—â#Xd°’ÛÅ2Å¹š¹è†7Ì6"Î‘8>^¨ÿ«àh–r.jHÌ¼ˆª×ò#{ÿ»S!Àâ-°{à°Y³mÂbyÃo§Ë6.|¥B,¿—›ææ¥íÍÞÏ%×¿}»§Ø$ëkYÑ‘ó…¥ïçÞ( ;d§z™]º©E¤Øâ|Bù÷­Èß$°ºòÙÚ˜ÑÃÙêÎY™´OJeLìÍ²¡=ÌªißîòNO~wÏûDÃ1œ@¹7
®ˆ6­d.I,Ôî"ú,o"X­˜uùg•Û‚¥EwOO‘#ÿíñÏá¥ÌÍóæ‘Xã Ú;ë¸ì<Ó.¥žkÖ4¡îfªÍX	ÀˆðÛ­žï¼eoñ¿¹—ÁßQÞÉÅì¸_ïn_›Iq‹!i×P;UíÕ³˜œ¾´´YŽº`Áæv¬Ös*%‡%øÛ	È>XðK%Ç”S¨Œúe#Rá(ÿô¸ˆ70¡ÿ‰’Df1VÉ×}8¼4¡âkýnß ‚f-­×™¾Þçü”rö1¤¼ri7Ü®Aßc¦™ö¾ÃVÆ<‘”ºs­T–úZN¦[~¤°;žìEöÁý”iEþ@ñÕ#¯_.˜œ^æÂ¿3Êw7Å2lýõÿQ8e_Àßúw	¹ áúõ{JWÆ…,El›º(ÒRSH'±Ñ=+‘˜õ¬@ÏwžE?$hžpå|Œò¼õJf#-…¦\ó+—ýÀ`ÿÅŸÜœu¤*£9¯:GQÑ²öšXÌnä‚r±Höê%Þ%ÁU#Z­é–êZí÷C‚ÊIm¸mYÙ¦e7JÆ×mæ¹´0V”Ûapp‹â]]7Þ¸%¡ÌÏ+ß±°[&6î©ý¨Ñ²TÐŸÖjUè¯(U’bÙ›C¯Z#£ù¢Üý–ä+”¯jÞ¨´EürÛÁ½Q@ÖA/qåärÃï‡w©D}‚Å–;^ÆBn@¡¼…äþFÑïë¤“Dä ÁÓuÊ/ö…¢Ï0%QŸóXWN¹QdoÌì¤´`×þ~Üª„“4%ç[´ôÚR¤wØ œÇ+</,0¦yƒøI?¡©Û‚WG"¿D—Ã(Ú»V+öƒöå÷‚’UËOÈDPˆ<GmûuüŽÚ¾K ?ÃŠ&Hm*ÑZµÑ¦”ŠK³ÛZ€©#ØžåÏ‚¯õ_âz¬Mô
®po8=ÆžG×töÂ†òjx’Šx1¤y—–äSaì¸R+u"©†—îXÀq6GÞGAFÓvŒÄŸ5=~¦«å­î|Ë¦³o}Ö^Q"wÕ¨Çž¥ê"gokiÅÆó¬¦¾E¤%œ;þ¸;H=f2ñÉ– 4-åïä9}t•áÖ6©?ßìÿ¹-ymkWÉ	‹mFzÜifÔFÇ¢Š=Þ´`®ƒ³V/!À®Ý¡rßˆ1è87vºö :ÏØ5~U¥Êê	Š+&~žG f+ñ÷Q}sº«K=Ôú´súÙ³·žõÇ–Fß^ú%¹Lat—mî</8<"ˆ tXþ:¢]¤Ê>ùÚtJïªƒ3÷µÆ·Ûó­ö½aiîiT‹¯ÛðþðoèÒJÒl+Ö8(T×kÕoTãÈ2ÇMÒ,HsS8z¸+.~
_“ n'&Ì^?bTSÎå±e®e‰pþë“›Ÿ²Ñj¦ÑçW\F¶"{ß«3ÍaƒFŒ/õìa²Ëm£ðÏ—[|~ÃNc% #]6©ÛGØœÄ¬}˜œEÔ`G\)­8w H(øùn*„××Òvdc¼19\ñ#.æ,è’Èf×ýèR½ºx÷¬5}óRA4æ8 Ä%vAî‰ßöíFIgûÁº»L;Ò;ÄæÍ\-Š%Ån"ªÉO£i©÷Ã‹}"uØó>Y	ZCÔÉ1f±Ô=<Á¤~ÚƒY;HÍêÊ”Gù%>ÒrNö&bÚòåØ¿ë%šxNÿé&Ä1µg>wG¨¼SÞ2½Ãœe`~ð'U
#^Ÿ'9ºžÄ®ê)N†9ˆ8< qAO•ßÇ;=æeL±eÏôò¤ÍJõßqAG‰É©œöËGòÉÞfò\Ò^ü-»JéšæàÀ­c¥-~Žÿd"÷þn Æd‘×ÿ<G¹8ýËø5Í#Ö'Æ·^fô¨0ªúçkíGÝTvX‡#Q-#nYìÝ×ñ·\br˜á:À8ˆËŸ¤ÎÊ½Š?dØÿk=ãØê^ú«ÙC¥däªŸ¬9ÇÒ	ß~X½ž°h.f.Þ?-fsËaè[FÐèÏTm[Fâ8Ôéúç^ˆÃ]%”çówm±ªh’–ûÄkiÁžÕªñÈ´x×A¹Z8jg¡ýô++³Øp9<ICªÄ·~B Åþa7ÔŒ¿åÄ²„™@öax}èv`ÎÚ`¤W0sÞJA£Ç+Üÿ¿ôëX}æwiE]úõüG3/HŒsC^HýÿEõ’}8Ž×mø§xŸ`ÞðÙØ6L%íì”Ç«¾\¢¸ÃÑL£`XÓì}‰O"z?$x óÞœIsªüeG£sHùèÂy¯¯£‚öÊmoHeNó­ê›"ô0Œ?^vH »½ÓX@ ØvvžÏ˜¹ÃVÃó­ˆI©Áí}¡èÞÃÓ!ü’“M…Ð`õ4CrÇRb®»û¢ë°Œ¶AøÉÜ Ú[êŒ¾úeø5‰|[_$ÄeºÙíà1˜™ 	ÿšo5ZÓßˆ8ké7IWÔuØí¦tNÏxœ¡¾ä@®ö+ðÅ%¯g	{p€càM§ªñRºõÚIˆ{¹F§/XbÆ,¡K'ˆ#ÐÃè^nIÌ1âÈ+N#ûÙšè·°Ü›M)á’ï©˜#¯J’Þ– Ý€Hí²JžW¨6Ä=8è,¬1uKf¼eoŽÍWh˜9Ð‚]ÉºÚ;–b¦;FÜB
™x~íüwœÏ‚ Nz"2F’à]¡W¾²×56¼‰k¤²àxîM±,cÍ»1ßhjÏ	Yû¦né„;Á0G8
âôO+ã€àqrp‚Aÿùú½Ï/Å#b/ÙÙ»©ÊsÕ}XDÕþ¯"ÐK|	Veu,&˜džÕ¦§—Pµ©ÞÞ„€]K÷W
p4âU×2M2° "ÿ|<sƒ …Qh»afP[ôÉMòyé-v7[—í)E•¸ñ…¼5žÑ½9ÐÛûÉZÍ¢Ü«eC…ƒÚ'ýoB$ÕßaôÞ‚²úC÷d$¡ïF	,¥‡³9‘~êÛòZîlf
6‚f0pš9¸s³mŽ ›gè­"MOP¦”ÃG×¯±d5F¼ntÔ/•*#"“iO`% £(±É¬›¦Èå†š)*‚ø%§‰×Ù0 ˜Ì6®M?xÊì²Ç~Y<?E7ìŠ€f“žùÆöO¿¯4cwô¥Ù—Œ>`¸+ØÝJ|6[Ïœ{â">§å¹X*»Øìl* (Ôf'šÇÌb ¿ÏF|ú¨ejöCtié ¥ÉáÀ ½9ôZü'¹µˆqþ“$Ñß×¿œýå[e5¶7
`8ŽÊ…¥ŠÝtåyŠ«+Úƒ™Ä<ÚåPrÎJÑÝ§ˆÏÅ6Ø.éœaïÄþyPþÆQxŸŠy87ÉÛ©»Òîž'Ìü÷_pê§îé(@Õ$Î$-©UûË{‰Ña.áßÆySÝV/h`²ZnLøf¥+-»úøÆ'—½(ôÊö`¥”ƒŸÅ[ÞH$÷ùÍ7³ªÞy‡ïÑ=!Ê/+JCÕI¯~Vý¥ÞeÈŠ‹õÇÿW¨‚ë#Åc¤¤KHØ2#þz`ç³¹g·D!ðÇêáKò.R—Æ…ÙñéÈ=Ö.í,ë¤ÇC"â«CO.•p×êÆÒŽVXÅ”íG× IŽÞ¨Û^fý" ]­÷?¡rß% G 3¥ßÃùv¡|\òU^F‰¸@bçÎ, Ü (å?ÿ+}26ü'å˜¯ŸÎ¹p*@÷‰ç>aô:‘‚0’Z|îç–Ö¨YÅËv®%Füø÷Á—/ç¨#i™ÉùÒ¿L&4<9é¼7C«~¡›ïf½±î §Æµògõ‡L¼cýfœS¾æí‰¾v/Š_^d¦VÕ¸PÃ4H&·Ý“Lõžº8gÞVõ§ÐÅ¯´å™®x\\ð3ˆnqŸGg‡èŸ½,ãÈ“Ö^ŸS-óùö<zS3ï¡CtvT†Es^3C¬<ŽbGÀž•nÂXül°„—UÄ:o‡D(ïÌÄæÛzÆWmxqœ`‘ôõšÜL—&ym_ë®¨f©ƒ×}àÍ‘bÚ"QýçG¥²•¼v¥À]RX~WœH7 »SÕ÷“kTžkÇ¹†Úšþµ_Eñí‡¨­¼O­»÷ÝH»>)ˆ»£ùø›@?gµ0×1©7)Á4îj8ºR>Úqÿÿƒm÷²é~ 9ö¼OÏm¼?ÚMm® p;ÎÔ!!(Ë)¦º\Ü&Ž1¸|þëk;NÜÓÔ*{@èîŒÂíV‰:sÖê¬ßTÃpßdÊÑïÁŽ¤Éy¢ùÍiK¸d×˜(SÔ	œ0afP§-ñŸsùŠ’«3v,¼Aß;ì½3GCOPßÅ·ûÆAov.»gåm“œ.’éóâôD¢;êz¬% Gp1¼çÀU· ¼‚×,‘g;ÄéZ0 Þ9ÿn£2jÅéNp\UO˜"gÙš´LÝˆ[5gO4.†ñ?“s‚v>ewÎÁÍíw•ÜŽžÎ<×_Èõ`s2m³•„¡yl^+˜@ô^y›í°ä?c|ä’^=¹…ù§éâ9íîªWÏ²ß'Œ>ÏWJblnˆ»Õ»Snh\¬OÀ‘ß'¸s¶¹ó¨'¦´>¼®E$Š|lÇÞû×²^²Ä]ók«z«XÏwüµù—¢”Ïû¥Ñ›{e7QH„Gô~`sâ1/¹·Î´ß ý“k¿õ“žXVK¾óJõFÕ¹hL¼9fóÏ£ØIð»6·ÓÙB@î3K:Ó…ÖÔ>{@ l³aQ=²­!8Z”ûõ\œWr+î^?.¼¶Åÿuó$åÇc–eâHÆk«š˜0GÛÿÆ›PûÅYóŠCZ!ÚI~ã%Ù%²Ç%Éß7Žyyzë‡Õíšxðãó*Ü‹´5«û.÷d77PçhüÎÑÓ\räô‘úmÁíü·æ¾0.£ˆá‚Ø‰¬¿‚¼ûf/»î¸¦[ÖÜKé¬Ù·\°Z˜Å}Š;&.ûZpG'æï5÷kžŒæE‰Ž©Q;> €:Äž{>¿£jùwÂÑtÜÐ}nå_-ð¸£uÐcÌýo^±vDÃê÷¢‡Ò¥¬ÇåÆVµ­:¯zîiûí¸ü9+»¦K›—ðÛ#W¯ö}!évØ e1ý«±•—?rïRÀOï¯¤bJ´ùU²ãem†Þ!átDç ›ñÈ«—4y'¿}ÛÑAßA¦ö«.äHAøx.Uïªž]¾e±~ðvÐÎ¹y„D`d¹{}þEd©ï”ƒ_ØW$ä¡Â Þîú|RDS_æÃiÖEZ‡Y”÷/IDÞÚßÿ%ïFxbŸUÑrI©Ø/¨nc
#µ)¶.\Yâõê\&…9‰’£AñºuÌYPèÅ÷n2UhOõ©ßÉï¬Šžìèp ã€HôÛ~îrY{‚Ä[?^w–j”ñí¨C¶ë­ÓK>‡ÐTê•Lö¿‰BQçj3ïÎ 7ùÑA`\kŸ¯®ü”y9, Ý;Wu;æ„úÓQFÿÒ8ñ•b!ï†¬@šS‘T:¾vçî¸&[ð‡Nú˜?7)£=¬x*"Õ‚e–JiÇëÈ
Ü¦mz„ñw&ÛœûÑpãúUÅÛ×0@öw†˜oêÕCþä~ôuØjæ¬@Ö·0-û=µ­èG^‚€2´¥³}•ïí¼½Ñ&±b²;j¹®ªÆ0fŸª_Ýè'>A¦Ž‰[u˜­9bSs¤?"Qµü¦Khú€ì'ÆÈq;z¬[PÐõ•‘®äÂ†}ð'ïSþ}IÞJ»càÎ[k]é‚/£Æ—Ú7~Ÿt²½±ìú§‡ €¯XÑãL0pqñøÏøƒwB'Û{Ýˆui?ž	kÙÑ.íR ¨žèáÚNåÚY¨p4‚}¦E¡hÉÇ“¿KÀq¨Zèy\6T¥jÈñÒ¸võ¬ê!8†"0‡X†ªO—–ˆÙg%ÆuT½ÆÛ¹O½³˜‚‘H¦½—œâU/n+ƒ©›öŽîõ.‹~øk¦&7ZÅt7Î”—}Õ”=~Ó]l	ÌP:ýyÈT.u®Í,J]¹ d[Ôó†òûDæîh:EêÙãçñôÎ…t8ýªà¨óŽji+¾;kíÝ`Q2© B¥7îÊ$ðµmò#ºE	ò›OíU•¹6S#Íš‡Ò÷½(ôÐ’£é˜t¸‡9Ó4¿Êt *CF<Kg/Ð¼òj8Œ¼ñMb¥NPQðÏÅÇÒ2¸-S³¨[{EÈË¹ñKä÷ó5Å1»ƒ»3 bÕÃêÒ+Å„ÙÂ^åÈ°Æx#÷EíÝ1@°ñôyö8Þñ±Uh¥Ý¯oîÂKr×1]èíU7®Œ[:gïåšåûÇjXÏeyµïjÀ<s´Ñ"–A} üòLII	åá,$¦»dçLŒçPÞÝ•"QO^¦®èž(…sTý·0ß¦[$ÂÆŠäAØ9 GhŠåãòädžÞ™ê™eªË{·c„xBÐk¯ÂtT[†Ï)¬^zÎÎþä#œìÿ,8¦P/dð"‡ˆãº&GŒ¾BÞ (Æbv.Gê•	›ãm­V1—Á¥‘¶RKçÙ
úŸ·|hzuüˆÛj¦EYbvóÂ¹}Ñ€5=1¿ÈFB¥N/¼W/—×Åˆ{·6ÀHØfuâhk
ö‡¬óF<žV—ÚÈÉ€R‰µ©½Â–Ý†üü:>h5U¥iÐ,Ï'½²ìÿ‰ tDŸ«Ø=ò`‹,­däsNà.ìß™wƒ"à >Q<þpî1N&„¨)ÞuK;{ú7Xãè±ÑV|2Ï4Úˆ¶{ÁËï«rw±àÔs}âk¥¾2_âqôcz•o;€MX¾jfçÕÑL®SõÙß‡	,ÙÍwæ@‡œÀþY”9§’[ÌfÞ‘7Y¦|Ù·öjèÊ;Mî\¹aD_]~zãõýž-óÕn¶¨ÿL–ÂößYÔ…fø§“µ:f—„)Ü¯®»‹ˆÜ›CoÕ—ù£#k&Ã3óÀàãc6ŒõŽÖ{£àš<¶7†ÍêaREºæwkKŠ>Áä3xv6ä6-“ˆég‹æXSí?3^6è„¢¿» ê®Õ’÷<_ÛW<Ä3%)x¾xEÖé^\¥dàPocGØérÖB>¶nGÌa¶0”å?bgªc«éâG©©{qàqóøi^†Ú» q9N·Xø pØQCvƒ »ò#ª»Aà¢q†5Cm”•MÜ¡‡ã4ŸŸžgmÛÎü÷òyC9‚E;2ÛÓjöC¥ R'Çc€[TºêOÞ\4Áí"ªçòùñ}Á+ÎÄKØ @güÕÜ§W¯ÒòGGßÏhg{ÿ<àÃAyð3ê“7Õ|õùOí¹„?¾!–¡b¾÷s==rOdØ.23òÌ¼•mé’˜ã€ˆkŠ„…æÝ	Z“Á“TmWÛá¹F$ÛÓss˜í¿7S`ÔÌaÄÍ¼›ê¸‚O5²Êój}±ÜA{(Ž´Ý¸*ÚAS~ú¥ÀØ2+|Ço¡À„§,X¤)‡ypbýÈ/„.d•ÜÙAmÿQK¨¿Ÿá­Ï™ïÏKÚèò‹=z…G½´Öº¡Þ=Lü
r‘Ùª(¤H¸‹´i®ÕÿÉ˜ðí7ó€jñvýYÈ —PF½“ÅZ­CCûè">¹dÉûsb;î§-z¢ .Oäûé|<.Áü ¤ƒ!¿p¤ÿ®`w®c*ÿò3Ñ·ã§ì9Y	r…ì„€E„ÎÙ¼3s©íŠõÜãl¸$\µ²Lv»  Yˆli†Óo†:F·äšê¶ª»úL‡zva /Ö4ä8kJA=Ãë³µH¯%ƒíÈ? ¸cÄ¦šå·s‡`™§¾¤z†q'­›½kßAOb(?${ïÖªc_ñh¸d<}ÍhwìwL`dî8k0dr[<A¡y/üëv
$ vvè5¹/9¬¬yšÞçN=!TÏO¸¼ì`ºÊ±@ûó›Ÿ={‚h^V’Ÿ²h§»m³îH8¸Âì©?èsÎêÞxª»¬WÜðFþ×¾„u¾säŒO®¿]g–r9=8wÕË°„þ^uUûÅÜÄgæc½Lë|Á$Èz÷à ÇCâ&ª†ßâò¨@>J«É¿¬¾û³ªÙúð˜†²ä]ñôDºÅFê¹= Ðq™ßþ4±qÛÇüŽcÖxÂ´i—öàÀŽãK}¢ëÁ÷ÌMŽ­«¥)Ý>Eïún†t† ÿüÂ?ÈJ #É‡LÿÈiWa©¡”¨'Võï÷¢ÐÛ,Ü§Xú¤àiš¨N4á n™ãÄ^ øú#¬çëLVxÄa¿ ûéw¨}ËÔßo›J%
ÞM:ÈÏô’J‘Kªiÿûsõ?ûD¥HÐËIÔúùÓ©Ê(þÐëïµ£àO|vß|‹ägöšÑ‹˜ÈZ}–24¥À²ôá16IFYâdKVr%®ä…W@(ôN™:ý%E²ØEMÇûE9x¾^â=£C33½¨   070701018A402E00008124000003E80000006400000001646E2B2D000009C4000000000000004A00000000000000000000004D00000000nvme-cli/.git/objects/pack/pack-1bd8454dc7fb453978be5ee23da304433333bda8.idx  ÿtOc                                                                                                                                                                      	   
   
                                                                                                                                                                                                                                                                                                                            !   !   !   !   !   !   "   "   "   "   "   $   $   $   $   %   %   %   %   &   &   &   &   &   &   &   &   &   '   '   '   '   '   '   '   '   '   '   '   (   (   (   (   (   )   )   )   )   )   )   )   )   )   )   )   )   )   *   *   *   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   ,   ,   ,   ,   -   -   -   -   .   .   .   /   /   /   /   0   0   0   1   1   1   2   2   2   2   3
{žú»žæå˜ÏøØÀkô"^`ÙÉwë×A
‡R&Êª(Y¯™AîÃHRÖ<»åœ¿Àb~7D¡Åg *­óç9ÔàXû’Gärúúä]
·®ÚyŽ/®4é*—úAìc…"ðúÂ–ÎQñßPñnìq·õo)J…°æ¶³h‡Û'„ÖWÜ‡^1ÁeîqËÆ,ysù½ ©q˜CE2SoŒ²ŽXNfê™yÿÈ˜3óxõÄ0–â½[}PÄÇ `5x NÂs·¬gþh0yî¹Í¨ÝO²‹êÈÍ¯Òl{”U”ï½œQ™Õê¦vÛ¦±bñƒ&ú<7v˜'S–*ñ.“«/„ËÇÀÍ2‹³ù¼”VüJÎh‡<1˜wFî²°Ÿâ¾WVœ*ïSÔçRöÝ­hêv”í^tj!/0o¶Ã¢í‘ØXÙ@glñl¤´×ð08z¨œ*AÑaƒ¸/nð#ÈTb]ÏÜ^¥?s±ù¡Hr¾x>o;	Ò“?ocŒ!©ˆKw`äkÑ¹–áñ6±E{%ÐåÇ¿z`=',iÀ¸­( ºäËµ$z„J†ÙdßŸgÞ¨9ç’Kbk î|eðB«t+)í±öí j}£¥ý€>mØúJ¤¨unçÝÉ'kÇ›#ƒ”/l7hÅÈ›“üì;kúƒ œ‰däh¤^»¨6C'ÖF>¦)ÔOœû‰ûÿ-¬•K&;,ˆ½5ŸÊŽ{6€»(þJ6|&m­ohŒ¥z§ËœÚFˆî=]FšsK½Ûi+dX–[&@÷1-Ò¶y’tš0¥ÎûÚÞMô~¯HZ<Ý´S·š|ôSî•‰ösÎ–2çFj ïpÃ½ˆŸ\Ò_;îö?0 ë‘þ¥¨i¹êŸh¢Ú{Úøè*ÔÝä ¥¨¿·Nl¯eÂUÔünx÷‡g…ôt©•~»eg/]ø"‘yqìÈL¥™­O(*°¦8’ó$åòÓôÆðàq¶´ˆoeTýt·üúÒu„Õ³ŽÑÏÁB˜IVsz3çÀg¤êéá"ú?<ÆÀï‡†i\)bU3X>ÐXEc<“Ó}™£”‚`º?éJ·§ù9Å|¾±Ö(B«°R#j.ã*¸[Ê© uæ'NºžŠ³„tÎÖN™FßšÊê¯÷;oµ~±aú,Ýí8gÌÞ9îÒwìãi …ñŒzHZñÞ‘E¾Z›´„€%6ÏBõ äAõ—
`ÉùžÔ¥Æ¶ã¬j¤rãFøalAvË^@!®™÷[ñ¿ §9zûC 
N…û¬qÓ«Âù;ÀÇìÿô÷S{ÛqDÐ}s|Y¦í€áØ;md£zfãR£G2’®"Í”ª›¨{H4S…z»È†2Ä@<Ì“Ãw±Ëx„’I–µÁ2ôŒ*`Ã–Ô˜›Åc¡¸¨^$Góêf8u°®VTJíAèQÔ´ÏÑÎò7†ŽzFâ¦›OÄékw¼×ºŒ;%þã;’ËºP„Êûÿ%8ù¸(¢›¸b”1¨¡ËÖCQ°›
õÃ~‹ ›ò‹ŒI'¬fæœÎÌ0Õ˜ÞÕ¨‡êSãHŽ:Wb·äÇ„{Ïõ—G>+õ¯Üˆaw)õ  ;  ¶  ˆ      &  ,    Œ  -  {  ;  ‚  ¾  É  A   a  
g      ò  }  
­     S  3  	{  `  ü  	,       È  ž  û  ”  $?  –  !N  ”  	ý  K    Û    ü  ®   û  N    ‹  æØEMÇûE9x¾^â=£C33½¨w¦ßÍÌ7èÁÁ;—#ïÞ/qxl+070701018A403300008180000003E80000006400000001646E2B2D00000000000000000000004A00000000000000000000005200000000nvme-cli/.git/objects/pack/pack-0a680e015f5dc5fe2f0bebc8228f770cd054f8aa.promisor 070701018A403100008124000003E80000006400000001646E2B2D0000BCF3000000000000004A00000000000000000000004E00000000nvme-cli/.git/objects/pack/pack-0a680e015f5dc5fe2f0bebc8228f770cd054f8aa.pack PACK      ²xœËjÃ@E÷óó¶¿` Í²¨ê>(!‹ñXNÔÚ’ÉiýøŽ)M·Ý	t÷pÏ„z4kqPdr+&‚ ¶|¹‡Œ·VÆZ&QèÅúQ¹÷ŠÁwÝd›1"lÍ¬&AÎøÞëysEQq_‹ê­Z=”ÛõîqQÐ¥‡"0µxÊß…é¿HƒøqÊgØÜµ
Ñè'ÇŒ©C‚\}<š%´ÁEèY!k%âígÄ8š§i ÇrNâ›+„*etŸÈBj¤¢çfˆ\ƒû³Ö×ƒüÝ¢ZîÊ› ?{ei“Ô²#ÑtÍ«'…f9¹Z?vú+òÔ5‡1³xœSVp,ËÏLQ(JÍKÌÍÌKWÈKJ+Q‰PÈÌ+I-JKLN-æ
u
ŽqõµµUÊK-QÒQptñô÷rSR€\W¿°jO¿× 7Gg×Z* Z@	?G_W+[%UW$i%. @£"v´¥xœµYmsÛ6þ®_k>lMZn^:uO½È–’èN–]KÎ]ÆãáP$$1¡H– •únúß»€$ wÏ9šŒ#a_±x°X,^ñMï?î0iÊ¨;ˆhÊãYL‹sòþfèþèµÝ¬p“€Ó¢õâ™?­¼È>ÓÛ-+]-©&±uBî­Ðz8ÃKÊ²Ô_Ñ‚ÅYzN¬_;¤í½n{mKÒé9PjÓäQ±½Wj,¢³ L¸ŸåHìœÜ‹ap ô:ó´üùgÅƒÓ2N"þ˜ÓND§å¼!äÅtNKVœ&Y$ékP¤q:÷º¢Iç¬!°Gfé,Š‹å¡h9­çm’Žž7§Ü³e'´°!²`N:~àBºŒ†­f,QÀAGŽÏYœúyÀÌ®%O9Ån9Nk¤Jð(IÉŽ‚l§O0©Ø…d×ã$kvn•]eB™4~Œ]uDE–¼VrTÄ5N—ÑS‚×ˆˆ™<;ˆ JàþÏË"@£>.µí´
ú{”Ý²Z-µÕ|Ì× ¥(.P WñŒè¬ÒD}ÐÇ(·­÷ƒ‰ÿ±;\ Xß½m¿ýÎòfY±¸­)€YÓ„Q¡ã^”)bAÐBø»«¡m-êh~ä.	Ë¢€äç³¬,BêCHmg¿J^UjÚÅ.høåœÀBS§õ„9$£¬ä¶_Š8·œ* ~Öj5*ÆŸÆ—×£w½Áí¦†åä=!@„œ9ÅdK‚U'Á4NbþØRƒ~Dsˆ#üc4mKQÀ‚ž†Ï0£…‚HÎp{Äg$É4  áj-Í¬õàÔ^,ãÝŽ¸Ëø9-KSh|=HŸ>¡&À¯nÉb9^³`šÐÈ–«Œã~¸e†çà£‚wJ)3³6V¤í½Üñ­±¨•Z]2Â4›A¯ÆxõMœ'AAmiö•ålÙÃˆÌÁ{ÿŸãëÑ¥†h‘>G”…€h.ý0RÅ™“„ŒÔøM¥žjnÕ÷óJJ ]p×‘<Rì¥ûJþÝî?8¯Åc–•_œ=S‘I(NcV‹”LgÌ@±%¦‚D$É0ôó4ˆðÔ®e¼…Œ®Fá$fp"ú@*‚âQ“9 ŠúS‹ÔÈ$d¬¨o8ÝÙ0^Å£òçîvè†v…~8¸øp÷¾?^¼Ã
lÈoY€mñ­—aL9áJªR³Ú>šåÑÇ«¾‘•-òÃ®Œ ;MB>kÛV¯ÿ®{7œø7½K¿?ê^û=Ë<´ó(ti*²…<µ‰¨‰c®,Õìx™'t	Ç’8zÉAZŸÈ”ÀùŸ3ÝYLè~ìûwƒád0ò'Ÿnúcÿòúê¦;€CþB@F†Ì®!bYVœr²âÔ^eqäÿ­Ã§ ¼,RâûXs(R°@f2)ð<÷stœÀÄÒ¹ó‹.þ§n§Áe,±†75
åNuª"~mÙ÷¹¢Ã jíí±Â]¿û?ãB! TŸý²AB¿²™8dºIœ‚Lð„8IeûC"yŽšüÅ§Iüïîÿá@ ^Äi˜@ñKþ>}ä”}roñë6ò~'>¢T»‡|Ž¾yÕxšÄé—#Ü4‚~p%Ä§(Öì¶	ãë#ÄÞ¼:0w¥û¨%&Ø¹ýQoÐ)ƒ‹Œq„‹8¥¦Ð “R§ƒµç	µ¶¾À-ÜNÕi„|®”ÝsÈÅGZžÆóÃfé ÍÁøbØýë¸eìkk\/±Ø”Å<<b<(È÷ßÃÕî¬³i¤_läºo?À¿§d0%½å+ÎQKE¾Ûõ®¯ŽÞPûŸpÊ–;ö§Î°ßWÓ†cL~w6·k«>”ü¸&=ƒL^rÐ$‰^u3®”çâç7iƒ@9€ÐX»’V= U*ÉkiÍ
(fxà†óš«.`¬œ2ÎvÝŒ%U•Ý«>ÿdýÖˆË`;&oSuì¨7Löáà²?÷7ØUGÌv¹†Ä]¯ÿñönØËû¢ÞÄ0{·ÝË»Éí f5›&ómÿ·»ÁmÜÜNØš¶î¤«ÔÈ.‘I¾hªì™ÄñÅ@QU»g¬ßµï:Ó¤Õ«™TÇdÓådhmë°„<¥Ú&ÄãTà»Þ…XZz,§¡§ëÕØ`Ôµ} =:Á­ ÊPCØ†E‹òð™2ÀÇ£'RÇšIË$2(ÖX˜Ahc[Ôú©í‚¿37(y’)à«RõÐjA*§p;ƒ®@³¤§ƒÊ÷u¥§RÖE™S¬¸…J(¯«)5“BÊÖRMRîSå\«j«™ÃU˜…î4Ë„QôlÀB±‚ý#lnx¹…ª(n:í!{Ê7	o5™Í€ž?5¢Jø¹£‰Iã0FD¦ÓýéL’ã,Ï 5=º)åAžë,o^»9æ8p8åH—á¬86Ó8ñÔ¨ ¤+?w`žýè
¢È¯r:À§Äk ³ï-w–-cîÎ
8BÜ<ƒê†xSu{þûÑ?¾¾»½ìï¾ò[®:¹Q¦>•à®¤ó2˜c|Å#°É^¶âÇ–(ø’1E7ð*›fÏ=qÙm¶*bAfKkL‹8dÕO‘Kµïî2‹hbÝ¼€#E¾œ_¸ ¨<)çqZýª:Ž5ÇCËìŒUŒlå÷úMÉpÂý,úÌõ³OSL`³YÔ©JG˜6R¦1—¥Š~@	ýpÉáLuÌ*öjLš©•ð8Ñtö²°¬ûØÊ PHÄXÔÙU|„ÃjrøµnLÆØO»'Z÷„˜]U½k¶‘"ñê‡•>B´[nÉ—µ-(<'£’5[’4Ý`5€üçUñðMJÌÚVæ	‡Éé4`WöšêÑ-ÏUEylícL£z”ƒŒ%•7zO5ÃbóîrÊ’•ÿ²Å)‹9ugeVÊü†móqE¼¦Ê·¡¾ÊÁØ0Z«>õ´{àÈ|v_ôúqÆ	õìN˜•»î†a
Ë¿}­½/6µó‰Âá7xO|¹KÎÿÀ‹Âë—^»NgË%ÜÑÀãÃ‘ÐÜÚ­úMÔjêïæ´áÓž{kFm¾£zQnÔ‘*sh\ÕS·Î¥Æ4.õ¬­3©ŽÆd<#+V}L·j>fsÌœqõ,¬ÏXiŒ~¢ý,ò¿`Þ	P)÷§¾*¶¾:ÕQó}Ïï·xœÏj1‡ïyŠÏKè,ˆUÁCEªíE<L²³î I–Ì¬ºÐ‡o¶¥í½§aàû~óg‡Ž†È
¥Â¨ 	(f¥Ü‘ôžòF<S ÂHjõŽ™Ì°UÊ€¿ÇÒ·è	j9–Ž Áv±>À™T@HaèÍñ­Ì=™%‰ÏÜ+§X?§Éë[ýøÛ÷ªÒdp2ŠRÀAS@e×ëhŠÕðäïP»ÕƒE¥þ°…µ-ç0íiÑ÷lÝ•ÄNáÿqžŒ9î)ßØÓÉÆžêIº¤fõ ¿Ÿ¶ËT[qmHMŸSyd¼ªZt™½üõ|¿Øl—›×¹ ðß‡WÑµj>%Í“'°	xœ‹./J,ÐMÏ,‰å*-ÊQ°UÈ())(¶Ò×
e”&é%ççêç¤æ‡»êçd&å•å¦êå¸ŠRË2‹3óó€Z‚}\MuƒLuóR+J¸¸¢ŠòË2SRc¹ €j ¬ø”Ô˜¨nn&’Dn&X ;á2R³Írxœì½kWGÖ(ü~E™YÆ–0ØÇ±çÅ ;œÁàƒ°“L’¥Õ’ZÐ¥n=Ý—™øüöw_êÞI œd&^3AÝ]÷Úµïµ÷“'¢ýáà‡æQÔã,löÃx¢0Ýï>5Ÿnn5“´9&aºúdcUlˆørnöD³)Ž?½o¶®Çi˜e¢—ŒFAÜÃ(Åt£ÉÍ&ÇûÉø&Î/&¢Ö«‹§[ÛÏ›ðŸ¿6Äa<	‡ð9'i0‰’XÕø>&“0Ýñ0š\ˆ7Ó¬w!¾ýÜÅ¿ÿßç0Ãáf’ž¿–Î.¢LŒÓä<F~Ò0Y2˜\i¸+n’©è±HÃ~”MÒ¨;„"šñ“$ÅFI?Üà»iÜS1¹Ìy”‰d@ïŽ?Šwa¦ÁP|˜v‡QOÈEÃêôŽ/³‹°£Æoqm9ñ6†i’»§}\†iÏâ)¶ »‘m6D’ŠZ0Á‘§"c½:÷FÐV¨ª›%Ó7³ì‹(¦†/’1Ìèš„9^EÃ¡èÂFeá`:l`PX|xöÝÉÇ3±wü£ø~ïôtïøìÇ](<¹HàkxrSÑh<Œ e˜WÄ“;¶ð¾uºÿTÙ{sxtxö#ÎàíáÙq«ÝoONÅžø°wzv¸ÿñhïT|øxúá¤ÝÚ¢â°hË—X ±QËØ'A4ÌÔÄ„Í`tÃ¾¸.CØà^]ÂØ€ÈñÍœ›7Lâsš&6¹+¢ˆ“IC\8Â(“ü¶bu³³Ñ½Í†øë6”
âÏpD{å¡·Ñ Ú;L’´!Þ$Ù‹¿ßbëéööVsûÙÖvC|lïáÌž¬ÂYËo,ìV†‡.‡'ûgGŽ(Æ"†Îaîx0Õ9¤o¬Ö%L“›üK÷†Ó~(ÖzI<ˆÎ7/Ö¬wXù	µèõÍ8Ìœ÷ß†i'›¯­WçáàÔ}7èÅ“¡û*Š'²=ûí0éÃÐ}—MúQ’{5Œºþ»4ŠÏÝwÓ@ß}7
&î›~”¶óuÏÃØë!:š¼ôÃØ?9~{ø®støæ»ïZgGoÞ¶­òSX‹awÀscÀ,«Nñôú	µ{¹ÉžàÞy}ÃÛ‚õÂ×Ù$˜¨A‰ïö>µ:íÛ8´'ïWWÜ² ýdT8ž5@%¹}wßÀÂä_â›æÖâ¾§ç‘×$…'Ý _</øÐK{Ïž4~•c|í—Òó"0¦oÙt0ˆ®Ýƒ ›F½Œ›‚-D2µÚÚ;kuößø½v§ÑpÂXøšö&b“Nop.þ½ºÆÓ·¾ìD}!ÃÏÝÕ•Ngúì)œÌQ˜ƒž|iê€˜ºAø¿®Õë_mo;OOùé¥ÓiÔïD@¢®uÀ=AgÆð¢›$C!ÒàªÓâ ½Ñ¯.¦ Y4úAwî®~ÙÅ‰ÞèÆˆ³‰è])M’–Ÿ«Ÿ~¯ç´:ŸZ§íÃ“cSQ.ïµK¥a65z¥1R^ãz`{Žð±f=ë1¯'Ö#"zx\—-7ìA«¾%f$ÔÇ=Ë.h×°Ee_ML³àœª|+‡úZüô-cÎ×¿ÀO µìõ/kÖ€×Î€<Re‰QpƒÔT’uà3Iã’=¤Ök?¯®¬¬qqQ¯wÄxx‚ãÙª7°M Xð³ÄÙ²ŽW8Þ®gˆQo2A¿OÌ—$ñ@$G²~Þù6'¯ß†QÿõO;½I:lF}ž,4?X†,·À8l ÕOP¡Ý wfí„^~±ÄþýŸ,‰e€[Û- +·NœHè¬nq­D7‚ñ¸3	Î±.üø™ÀjÍIÒ„?âÃañ(dÍÎ(È>ÛÕéyÎ6h‹:= ø´pž»°¿ÀeÐ‡LÔþ¦	PiÄsýº °“Û‰ä¸×ƒÍ*n·—~i=zÓ‰02Y˜^W!àSÉh¦<øX~`$øT‹uB
È	fØÌM1FÅm¢p´t@¿…‘ÊªŒ¡?(T´G¾¡—ÔàvíJ‹|¤„+˜!aŠÏKêfã°×¹êô‘º½âg×*È²¤ÈøCgÊaÍ’Æó–@tÆ¤ÃŠé¥µÕ8=`³iºá W5cø;†“°\DÝ1#R+gÞD(Ïp9y~æj2â5{¡_Ü¶Áx˜Æðá–“sÝþž·™(”‡ø4\êð¸? %<D›å§%©¸GA	õ†
C½’Mv…Ìˆ+’ÀÀ±¤pôf„Â N5¯©ÕÆñy…zÁ8è¢ä!QGh¬‹‚ð
qÙùF na–rÂ‡Œ^ˆˆ»Ä;" ‰z4ž”M)S=Xvu þaI‡£„à¶hçˆpŒ:üº~YÍ²ŠÅåÄ`Ÿp”ú©?ÎªL“U=Ò¸Ïmc‰<ð¨ßº®uÐCU á‚x’&Ãa"³l€ÍÏÐ D R·Õ&¼-ßd¼ùè}8„[.B` *¶-‘œ¢#ß±—ÝÄ½‹4‰“i&Z à—1d)gà"IÓ«*µ2¤Ñ_yîæ¯]‰¼æl£ ÍÌYS× Œ9«†Å²ÀÏè;R‰ùìd¬d<„’Š¢ÙlD9MËÂíI¦ øêIÒÁ¡ÖlŠö‡ýæózIÕqæTmªªMFf·1	ÒI‡¹_hêÅóf"F8ƒ(…‚üq•M’°ŠZkù¸ÈJO¢Q˜ð«Ÿ—Áp6p§GÑÐxåû%0Â¶ðñãá“„Y¥;¼VÕò'~­ªrL7a 8Œ{@'á·„Jþ›QX³d?ýuåºÿ´%677Åó¿áÓ£WâÑÏ[¾U#ÄV\O˜zªâe£ß Žg4éˆH]5’¿Ò$™t€¿m(ŽÞë|XxY÷›ètè{0 ¨eÑ¿`w‘Ém’k7PÕRG¹K¡úJ4µcX€ëÎ(i¸‚Úú¸!@æ<`#5£ •:U]¡V`"ƒ`˜l¼²Õ²pRƒ:[\_2ÐÅÊ—Uõ„²*HÓF§€ú ÎûÃc±uýrþUªŒhÐ¬GHÃ°&ç çFS[ý7ÏGÏ“žÆuø±‚u:øgEËœÄð‰ÇÂTV¹½ƒ!ró³—s5¿œ(V|«çV7«ál5DM`=D¨æðGH¥Þ}wÚ9h½Ýûxt†æ-›¯]µ[ =¸Yf[¾¬þ…f=ßªÞvefð‹Ö°9DÀ‡iš¤5àjP§#½Áü(^¿-Ò¶ ¸·öÏ:§­öÉÑ§–µ4Ôé_;“Dª1dõºYÝ—þóÄ~ñHÕ¹ñ2ÒH$&‘3ýßiNxXðM—Ä•²±º"6ÄÑÉ»ÎñÉÙá~ÌiœM‘Ñ¹˜fÄÏ…JÅE@
h —@ Åä*.@ÞœZB{Æ ûÝ ;²»Ãá¦8Ã–²ÏÑ˜•ñÔ;–~PÉ#}üG“|×»5ù’NG±àÖ,–8@
øû½ÓãÃãwx»€,?ïÊÂÛE…yv¹²O‹Ê¿=±KÂY¦ÃIQÑƒÖ›Î¾ðÞË%ÏWhžâLå–Z{ñÅ(Â$¨Â²²Ž·Ó½áRB}w: <Ë%à7¢2ØÙB}±ìD·S£º\	Îëéñ,Ëñ›£“ý 0ñI[Q½›sÞe˜ôÝ0‡-ý Yn`òãÚ)²¦ÜþZCœtNNŽ~T J~+¶,Pô	 ±mheÁ6nLU•…duîÎîÝÀ*bYzÇßÌYQ£—×,.ˆ(ëà†¡×
)–…ÚÃöþw§5xÝ|ÍÌñ&ié³Ig”ô=øw‡ŸçmûÍÑ?æk;b¹*Æ–$ßžï { ´(u á%hPÍÁ08Ï¨ï¢AÉ]¦Dp¿D/ãÁm¶dP£ÑkÌNSÑ»ÚÜ–›¯%›Jï õ©spx
HoW~•ª\Ô¥áÏQn£*5pô®Æ¦D1ÇŒMí•s`QqD øÚËJ+çÇ=p]±…Î €}X÷7bÑ¾	,x`Áö Ö×Å´žÔä€ì-ØÏ>4Ók3ÄÃqøSòÉ€fò™µR?Ç¨ø]Y±FÂSk¶ŽO`éË†F@Åxãåâ¹ÖåvÔ	³–ÚWË»#I-3wªZ]^ÇAš…Q„€VÓ@Ù@²'@HÑ–:…Ÿ/íl„QŸfå–AU·¦`iI—°´á;ßJmøkÖ™#mIQ±Ÿe½ Ô¨_Ö¡?œ6^\Lá/ ,êûÔ…Â=Pó•xfAøV¾Kê¨Á¦óH7r ˆ$©{4£ÌC±ÆáŽà©?ë¼• Xmlz.Ü@+ê,4ÇÍÖ­d¡«Pc!5Csu¶^èuj~–{]öb&\r¢ä5XV©Š•2(œ‚G³Gx„u úï¨/—½?ôð÷,Ac’ô“Åz‰ =Ÿ’2AêŒ¢M”””Õ
Öe¼	ËOz¾gcPW¯ç‘i?[­H,Øõó öÀÔÎ5Nc³{0­úˆPiŽïj¦@¹øûX©’P2-AA@=zñ†Rc7ŠFmÕïœ•˜‰Ñò§Œ´qØZk|ƒFku¨6àáR³ÿ¨CŒûÈþcnÅ«´?ííj‚5ÚúÅ†á¦.ôÅ^w@(²ŒhGès# P«“N$ºÁããÌšÛ£©jNmbYU¶'hú—?ñjü¢…ypÜhb1…×H‡0DÎ’ŸëuÙ´dGs”-Á²WZ2KvaÃ[¬:Ã–#/àié-¶¸Ð¿®-*ÌzòµlI{:t¤		]ì¤:ð#3ÄÎÞ	S‘†híNºT·j_¸!74»ŸÇâ’·:GÝ¹‡¸V¯…‹Iû^÷†Ó,ºo³˜øí@¦½>´‘0#5paù@\¨ð¯XºõÃþ‘5âÒQ€³1¾¼ ÜQ'DãŽI¼æá•ÆÔsÁYW‡Ïƒ£Á&ôµºUãøäô}y2¶ÛÅÿOÝ<ŠK3¿]üÍáñÞé&TãSš<WŒ€K…%ÌkJjÄyO8@Áºˆßôdu‹c
:°2ó;»…ûóè5¡*$õb|¯•žÊ¼Ñõž'ÍÿÍ	`ºm¡ál=ä!í;i^†¢ý~ïôŒŒ¨zAõÌy„^œ¶ÉÊZ-Q.¦ÀúÜ€¡YuÔ{K·–~Ø1³/-º®ÔwÔQè`àØ\ó†eìb0¶šê©^hx[)>7ôßrS
¤(ÎC¦W1Sr•Zñü±ˆš­¸î)´Û š¯8^TüÊ÷¢Zù’ï]ÄÈ‰]‘To+’3<ntöÈÁieÓéxå•>»ôÑô¿"UÓôÚƒõ	Ç²ºròá¬³wú®]#,+G‚/?ŸÕÖô@ö ò)Ä£ø²×ƒsg´øÅ AC6ñö=´ÀcnJ{5‘¨&œùÀ'çÙ4s´÷®¶ÓkJd‚@3]ÕŒ™91¦7¯Z‹¦ZhçÑwªw™¢ÀgA7Ö:>¨Õåf2y4}=‡èóô*jnURO©;4§õûë¦µaTO’Sj–ùZRŠaw©Åze0²*æÎÞ!nŸZ§oNÚ-3^:[½aD>Š¨s$lÃ´.'0ø®k¼¤™y¹*Œ¿.’+AšÒírƒðOP–†97¡T-¯y¬ #O3ÚÃååEê1ãŽx˜‘`èªè‰ùFº¢}‡¸TC@àlóN•F0ˆƒEÉ·œ T¢û½ã½rd­	BÚ¸®k:×x¼!¨Àæçi2g²_œ9ö*_&ñ+°úYNñ6ë‰åé­j#ó¨O’!Iƒ3©€ùŠQ£ÙXÀÿïB!Ãó<ÊIC5Â×KcÐuÎ…Ò xj«_3†ã³+ÌÆ¯rÉ«‘s)j.ÆÌ<D˜CZÊDë¤òÈ]±ê¨uzzr*v8ÚÍÔaC£aØW¸Q	ºÈ£jÔ,Ypª=Ö+Ù*ÔÅc4…Ïž¢m¯7žÖ°@qpžŽ£~]l”Õ&p@'§žF¾\>ö‚±Xµmñí·âÉöˆ¿¹.GÐ§Õ[§ƒ%Hj“5a#Ö”YMé®õ|þí(šß·Þ—-;  g†	U\€a:GíÓw'w§'?´;(½	äìï½oµ?ìí·ÚtÆÈ ]7ÈœLö~k:úÁ¡g4'Co†—9’å4Iæy±
6%ý*§^,­˜YÜš1*˜„Ãp„^†~P(Î5…Â i»–èV»	S
ákƒí¢LC6ðo}Õ—Ž‘mq?ð¤É³ÖQë}ëìôÇÎÁ^-À%Ÿž–z†°÷d&3ì>C½þxª~l“"w…†
 W†Û/Ôñ¢i5_SE8ïbŽNR2õÓ!Kk§}øÏ¼:?šç;Ò3¤Ê¥‘v$¥MÔ©Mü¸F8L‹òÊ†JG”zlÇà”­ëçÒÒeOÖàk²ÏíÉVÏVj6÷èTÀzˆçä|0'é$D³p4/Ä5¿–Ä Ñt Û›ÈËl%ËÂ	 qwžFÇú¥Ø–ŸÆ¡²4èáÀC&·¦xØgcCP¦¤e|"×ì•(]Ž*bµ#Ž¡ô6G šžî÷ø¤u|6[9Œ8ÊB‚œÂ#Î¶ë4µsþQL{Å‘F‡„œ^Ã+Ã£ebfbãše4BF´¶šƒ×RœïÍŽ&CóØâvÂÂö†W@$*?äŽî%Îºã¡Ï¿ÂIV`—§Aýa×•æDSø
KÚQV1g®ëªåÊ™äI•²©ŽûáNÛÁ‹ÿo±%¾¸»R²À¹yšu^÷Ö·hÛr®B»–r»lKK«“?NN#Ú¡á»{SŽUôâjì¢ßÌ±UÅûtßg¦oÏ:HÒ™ˆ‘`¯|d@E–Ðõü$~òå0XŽW—Â®g¿ujÁÜ/^r >ÅôÒzIÀ.ßc»Tæˆ©W6f5õækì,¸ñÉ¸¯>€	K¦aq4Íƒ˜w°ÞpQJ¦fž£á`#4Ä29^û>Hã(üLïÌ¾ÞŽæaMø*ñ,ÇÀ{ìáJ nÓ£Ñ[íÙb·Ãk³E2 lêâê¢õ/=ËÞzòq‘‡wÕ¶nË+—Š÷ˆ÷7:Ê‹âÛb‚¶ø9)GÎî ªv|½lËíÍ™;ÛçNœ%[Pe¹bÅE—.bÃfuÈu¿&†¾&r îz¿…d¯À
Å	®„2!È«ý™¸ƒ>ÝÂrZ¹8ç´ßa=Ž”’ª2îÕç?§ ".˜†(zøíõd{ï2›q!]QG‡1íæ4¬}ÙÂ‡¨÷Y\]D Ãz\>É¤_ÃÆ7Å*èøßB|±T&¶›Ï6Å'’U”Ó ^+âõ´!ž5Äsê¿šŠWò¦ƒ¥GÝRZD£Þ$“`ØÁ‡]¯`ƒ‚Œ'©Û½½’A~¨)z“†t9>—ŽpÅºÜ"å-kkH:Ò1EZüp3áPÇÚ†ÇîF€™ñŒe…zÆ¥²,Ò¶W®éÕ=­èx+›ª/x·M/t_ŽOwoŸIS_¸²ÂÀl½ðáQË(z#2{	Ç
§ÇÖtB´z—M€8Ê¦G6àiÝ²š¼Åcá™ÛÈ6qR¨_î©šzª€-ìšÜ'N¹‰S–ƒ…>ûª¦^ ‚|Ÿ°4ºŽ¬™;aHdìÞõ×Ä´8K["–Ò=,uï!ˆÕ•,¬ø@‘|¥Õ:KÊÖ
äìý€âØ/ Œ¾ŒH3ó6þ¤óý)©H…Ÿç„~~<ÞBöâÅ5]ÙŒöXÎÍé-©¾«`Gö„ÄÃµ”J|ÅD‘v\zn+ÄQ<ue¶Ô@eœúKE
mŸ$¨pË&ÈbÝ`)#;i…¬½Èv¯år¦îØïo¥¢¯ÊùT7[1ôÜvBwMÝR /bÔÐ{W ÆöTã®"»
´‚ÞÿN£Ôgö	¶„j pè>è‘“]ùÊ¦'m²¨RéT]²ö@n°knuž—×q(òøHú5F¿e¯ê®zœÚz{òã´Ë‘Ä¢”‘öz»½òû,lºYÐ¶^‡Çù¶öÉ†ø‡×ã°‡Lr¦ÌŸ‘–»x_§i¸cWrwÖ4Ñ, ý×¯9^jDãÍÍ-\÷–Íà”Þv—[V¯8#ÊˆømGP-¡ý:Á4îu:ÅøÍò¦n-YjÕ†\}kBŽF™fàØßÒÓ ŒûxµªÞ“û™iŸM¸NŸ>ë1ù™)­Ü°	¼J?mß!„÷ÅnQƒ±6¼ÆDdÇ«¹“Y‡™sì±ýbEnw–‡@¥Ç—jeå‰š3øÀ%ØûÛßžIå&|OéÿÔãÔ]@Ê%ò¾Ý†üêEp©¯ùåîNî¡tk¶_þNæ¸Ìíót;TÔC¡èh0€?Í»ØÄaÎh/‹üß²õ*œ„qs:(·cŒ›lâßF`ÄdzêÄIŸTGø×=ÑøÆø,H·†’úæ¶>;®×Ò‡Ûk¾Æ‘¿Â±W©îG}Õ‡+˜ªXçä‡bûHÌ÷:]E4Z– ß¯ñ¢È¶Tñ*”½-Ë¡•ŠÕˆì¶ ãs¤]R‰æ4)´¸k–zÂ€.,EsØejyG:0Ê	ßO¬šŽ,@&ŠÝ‡‹Q%AðtJRê$\êV]¢
¢¹};ÂsK'`ßwnÿ]DºÕþÄÕîÄv}ÒPÀü]=ƒ¥ÚÀãjýƒç?2	¼ßa}2I^¯­ëó©ÅR¹”†ívÂÁH^êÅsŒ‚F6Kñ"lÏ'ßÄ ãêE–IÉëÊ\æ ›Í¸–Rÿ4 ¨)%#ô‡Ã6¢„æõâ9~Y¥Úz×ÙßûÀRÄhCOøÙ‹S÷E$É ¢§ØlrƒWáPãJ‹K%W6ñ‰DÑíˆ¯êÌlúx­ë-ò}2dádE]%•)N~[‡ÙÉw2†ÑŠ¾•JW:=ºsvø¾uòñŒŠ~ÙõŒqöjë48*bkd/!Ža²÷¡³ßn×`@u±.ìwx¨›>‹˜cpÞobyK­¢¡Ë¾›§Y0¼:?{Ðj}¡!üó¸]=f4ªñJq;«ü$ ›ÌQµZa·`•;˜Oª×ŒèÊ¡T‘Ô$GE'œŒ”dø€<J½€Ç‘°{µ˜µ$Y®nÉÙè~q¡²R~Æ¹À•ªjÆõj_êÍ§*ŽDÞ?¿³!QìÄ×äd×Æªp©ZÑAä?%èL¸U“)¡Åe÷x
N
M’¹@±®`±âöŽÝDMWÈû</íšŽ}Êeìð\¡­¾»&ÛûZ’
QÑ&˜4Çð¦aV³aaÌj’ŒDPp‡s­ôšæ<÷3YÿÁ]8A­ÕKo¯_í*šgA4LWƒ¨Ö•€OlÀ³ºtÛ›@w¼jÍ|wªt¤´jliµ
HñÅó[Þõ¬F£lXE+ÙaÑPá?köRK½1T({•Š^ðøGFÀsJN–½Ø^öbSCœÄMŒ/¬D7Ž4$ƒXŸ½Ê=Ëñv©åtñÛP¹XUú>€¹Ø7¿É`É{”ïž{bÞj¢ø±ÕÛtºšÇ!Ý5Ø¥é8N›¹*÷©\DU·éaîVÓÜ{¡5Í*"KÎX$%Vý”«•5…’Eóm­.ù­UZÓ×‹ÌpïJyW_‹ìR¾Œ(Qn®¡ug–é©¡ÊæöìbÖ†'ÕQ'Â1àI~M#Õ¢lÙ´ê7¡42û¿‚Ú”à 37—ÅgØ+G,ò Êr÷Ç×®îÛ…Ë Ç!>a%Î:¤¥øJ¸eŸ»Ç*¢A63ËmÃ¬ØHBÎRÌúOdsßÈÆ‹Oò_ˆo<°³.˜¸–óð,ÇGE'¸¨§ûBZ²_gœÏe>ç¹»"±qŠê– ~„)ÏÂ*Df´%`²˜0µGÚLÓ>Á0èæ¢5‰¡|?žhR†ÄÃt2*Éš„^ˆdF¹ìtüé½hÃ€œ¬U.väâc3#ZTR+Çqvoh’=„ôh—¨gÐmj‡óeãRvâ~ÈChE<ŠtÀ(Õ=+Yõão¤`Xù“ëCÕƒoÞ+z“Þ4mÊ"¬¬Ï@9.öšFd`á¤ši‚šö ä¾pò¸CÍŸ—‡ 1Aò¤œŸWâç{CÐGrúœÆI"Õ½óó4<ÇKGÎ–x]ÃÁÒªÚ©× iUa²öTÌÇZÅ<æ¬B"pÕ¢å–,´v1ŸNO…\‚µ9{*YFØ+\f
	UÐªYhýÅs_l]ºeòÓ­çÏí+C%¦~úå¢<ÞíóÏ¾Çó§¾à¬žq¯é.*ê|¼÷¼JyÑû,åªìÒ‹,wÑPçƒ{™Šú£àšF¦Ð‘xeBo¢ÁØ9~Vp.à0±²D]FÙ­Zk°2œÓ,…s†æš©Éöy¢ÞE¬-‡Ï0ãQ£XˆÛp	¬l¢XõmzúšœPšæ*£õL›µLG¥åîL	¦¹Î&¸^¼j_%Ñ=3'"cUä¤°8X˜ã4dÕœFÐ›p¶ï5ùË»Ä]x³;øŠþsg©vÇi‚©9/+à8³‚ÆkY.P!{#1[)¡1“o;·y‘¢=Bþ7ÔŽô!ÝòE,â_T[å¶œÿÑùÐæ`u^®ðjî:¦sã¹,N‡{@®fëz0h(ægHª·î…ÉyóãY«&Å8ŠIàšKáGïj³"‰ÆC›;Âø+BfíŠÿäm¾
oÃÀo JáÂïë.¤WK ƒÞ16PÂ¤€¹±Ès1:6
VŸÓ!hîîV¼ŽWßrESèVºh}jŸQX”ÓÖQk¯ÝêìŸý ýdÐœÓoÉ#žÍ‘
”Q1€Nx­CôUôÿÀ:jèókçA~<­öŽ¥³w| cÛ;àAÙM`ÔÏsÆÝ5_O†Ãº»hý¬Cq¿j1ZrQvqÇõá¤`xåDCtm¿¡¬yâ
H+AhH„ªK‰Ð Ý¢öó1ò3“HôØè†øL1-Í¦ÝØÿÒÀßlÂ•§ÀˆpUªC(2E?‰²lŠ³åÞ¨.oëú)àä®¢-ôir•iž„ûN ¼!F@ÁyÊÀÓd‚¤ÂEA_Ý!%š-ƒbÍ†×Ü>IèÐEÀ÷ÎÑW¡×Ý„¢É®Ë¡6Òõª0‘¿ßwEEÎ¨üqØ,¹5¦[w–C|ê½Áy¸8,G^Ð¯ìWŽþü€ajÔ†-Cú™c¹8M¯W²ùú<Œ;’A| ªÙoUdV‰öu…˜aÜà	•9ÏÒ³¶éK`×OóqÐ,Ñ«Hvðæ˜Ûh¤Šd®åD=¾%T¡Íôí ü|äÙ´ŽÚŽË$œ.ïŠþo *®Ô+½+—QÏT‹…5ÆbY*ã–¾ÒüŽ" ¸s(Ò ³€ä-X¶óqN¯ü§ùO=ò ¬õ§ùk¸D{éyo­u6èÙG:îŸ/IëìàÓjÝ³5ãî¢·µcD5¯}6*g¥‡^8rGèp)vA ¯¯öCàTiŸgA2;r{Ksg†gØä\¾Ÿó.îøÍžhS¿âE2ä–{PÉÍä¸ÃÞs3LsÃ +§~G>"ŽYÏZÉFÌæªÙƒEø€yýVäúHpK±›9=n´n?{ªÄi¼’Î 2ÅƒÆ7¾ž¸Ë©9*õà¹ØÄÃ[åð×Ö!²oµ°VÇ¥äÂÃt¦ŠiîÞèÀ-·’CÓÙs»3¾OÃì²|M4X¢‹êL¹6ÓË€”tÇØuÔãFÝkÃyüžTáE¥Ø"!ÖFçfAä¨ˆGÂ··¥
·pÉ¿µÿýý;Úÿ'¡ëÔ ¢{é·»sxg†Jß®ÀÖä¼ª³ÅBVèbŒŸñr#W¢„7Ð¡ø F¿)"(ŒU‹@.ÇFáÜí˜ÊXÎÇ"z¹>îª ëÝñ\žëöxuEU”uÉ~vÇÙ¿¸\©g çÝ,
Á~t­­Ìgï/ˆÁ>µ:p8ÓL«¢0 ù†3-
ºþhPqÿ¹Q×ÿkÑäýDM/¿o­ôV˜IòµØ~úM™®GfnÃr¤w$8¥kˆ²ö|ÝýÇ_/!p.rhœ:?ŠeÆRJÁZ€&×éï\¢‰‡"òt¨ŒQ>¿pâ„—8f²Ù“‘S~30GêöÓ—øß­§Ïw±°«³WA<&|j5\¼2¢€3–åo”ý½VA}6êrÌ¥Kï×¹xA^ÔUÛ:leYÌÎ­ I­±ß½ÆZºûûØo5l5â¯øÕ¬3=NÑc8dN ßXHÏ
(§lÂ”JŠjAð*Q¨@c0ƒnw-_¢à$òéí»ç€ä£°iMh»n“SÁñ˜»˜¦,RZ!L©–MàØìÐmQ.dQÁÄèö*½¹âm¿Xé'Ù~™—U“÷æK)3½P7V4q“çE üUÍ"-ÅPWb©û0ÓÝù¦ ÚVÂ½Që£*•WÑùÆK–XÍQµ”\_ã^Æžëôø?¦ß Ñ-sÀVmo?½hBi-Ôv µÓh<IÒ¬<è¤=ymƒí.áâó9>ãwÅjK@kÿ!wFmæ}ˆ/@qÊ(ÌÿÖåq(ÇyÅ§‰‚R’Í]F-ö²§¼ËË¨ø¹à¼‹"º(éŒÎG€ìÂ¸ª¹Ã''â}çámÔmè-—õ[(ÊI
ƒ!óµ¨œ£/Jã÷¡£59øXIÆõ§Œ­¹´…$^QÂºn¶ÏI¿s|RÁÄ(!Ç,Ò¹Áƒüýì)éë(ÈÛAÒƒ™B”žˆ­¸ÕXºódaä¤û–øéQ¬c3X£B¼`?ÃReètã]d®øF1_œ øð¬ë²Nm”xÁóG¦®›½o”xJ5\G×·µjve,Y”WnßÈÊúŽZqÕ @ƒsg™hÑœ.Ní¬_öªç\©YÅYDÞu ÷üî•¸G+LéÜ0°Ü{½ÐìŽ’L­7ÇgÅ¤µvJ¨<À´±nïÆ‘‰ª‚X5J8ü+ ˆÈE/Œ€Ÿ¡}æÁå·³‡‹° ³°Ñ±utn¨n;=@u›+–Ê-–nÈôi9ví
:Oc”(7¿¥3±^.Ræ /57Ž›©…us	*Ó'ØD@Â÷¹³/‘Šú†G™_™7ôBMP¾ÕÇG}Ãâ¸«ó§øâQh‡Ôèœ6U:Ž(ibÉ&–Üî·‡3ˆwvNáþg¼ó°¯„ §Ò):Gw Èö,¢;èïx@Š$€éï /ÝÉ•9§]®¢Ösj8O—_PŸòé½­@Y&±Ðú“ZÿI­ÿ¤Ö¿Gj]Dâ_ý×‘8BÒyç(òEÁ²K$rrû]¦©Œkò”hš|þœ÷=ÏFóQ.#ÅwÉJ9'UtT4´Rå5»‹¡â«xvþ¥~­6…å:Qh&"UÏõÙÛ/¤ñ@vÁÆ¶5ÆcpÙbsOœÁLOë¯ãY#‰‘ð£\pÔl'?ªÑê"*bisµ‹ðºI	$
¢ÜZ©$üËaùÑä}ÅÑ`§Ù*¬8°½Öã¦8L‡Q„+¤a†,t‚ªÙ ¡iŠ×”Jfœ¢ç]¶Ì)6†c¼lÜ8—^•òVz-âUè—M—§U½‚å¢Î`ßSÄÓxŽ0µß#'NÄd/=+?®ÕsÛï'ÁÄ¹•ƒ”!`jo:R“j·0ˆôM€áã‹â“IÍµî‰—º×.ÌKÕ™ÜŒÉwJ®>ú%¯aª¶–.¿ö.¦ñg¢-†}þ¹î«Ç-NÔCÃ¹bÀ={ºâó”ìE ªyJ;\
¿ô^ÿ'¦&»S±â|H™ ï~*4F˜i¯^ëÎ¹TÏªLLßj±f2¸öÔ-<ntöÈÝŠo2Y.Ù5]0Q¿ïÐ}8éŸ·ø#»~™íöÇÈûxh>æn/˜õQu>~„a[ª²`úYç6“‰Û¼Z@xù|ëo/n' ”ñÿæÉgý¥[rnìÂ
ÈÊ›¡ÞóS>ZM1®¯nëº6ÿÍ•S‘*›89†s‡U±ýñíÛÃ ß±%s¼¶*Â“?Õù|õlW=Y;tÓy>j›Š‘S1ÊZæº·b_[á¡"Ä5	âø†èGUÑ€"¾7O·»aj§ÐáŽ½Ì¥nŠó–örSM&®y¢Sû½…ƒ=xÀS`AÓ£kÕ€:ü^=Ý»IJÇøP‚’ÜOê®õ–øUA¼~ÌaüºƒÝ’ 3¿þ*ìG,ülÖ•W ¡ø»RÐ—‘¼œŽw×+°·öx¼]7vçê‹.~‡Na¢6@¿|H»Z2ŸCSZw9´Mqä?ûÄ÷uC1š£Éxˆ¼0	‹“}ýF¹`/æÖ’òî+“Â÷‡q¯eó·«.7ùIg±óÅdí¡ª%ù˜)kK®ð·E¹-WCE¯Îµ¨´Â¦ŠN_«—¦´ˆ±Be†KE½0saS0Éƒàë!Ç¢ÞdÖ}Åñ/jì­1LV"Íka™ªÝ .$ôì<$¿•&ÉóÂævþåZ{ðZ>’î–È€Ú¾ª	Ä^ç²/ä
©Æ^éw`€yÙ¯¼¼@-þM´²/òÚÝïgAM ¼…ùÇí“7Ê>I0"qÅÊh’OýjŽ³Úovïã.Ø¼1DæÉJ¿¼»Ã‹ç¦¿ÅmãòëÆ³ïÿ‘3Ùÿ}}î'}™_<sÞ•ßuû,VøþØÆ©sùo‚YÈõñÎiø€+*;uù×È«ýöð@ù;FmYéÈ«0¬5æ°oZØ³¹W_Ç…°ì’b•bÐ¯—x{)èîŒ®î„‡
aÕ¾´³j¹%®{ð[Ž ÊŽ­ß‚iþ¾Ðt¨2Û‹Ðà¯€ºFQÐÏo†½Ž?½›ïÅ¾lí6˜Ì‚‡Ì¼ùý‰ÏþÄg¿=>+ƒØ”¶²ž‡àŠ+&å§¹ mÞjE&$ñWÇptoƒÜÝŸ­·hÉJ˜@®æxç
-”*^‚¾É&áÈÊ›ìFÑÊÈv(’Aµ ÊYlhG»ËD0™½¾{¥VuäB)Xc#C¢~‚úQ67>JÅ%ãä¨½x‚?îEäf›ô`[þŠ\ÎŠ@M+Z©YNÛ·nÔ…Í'ÔŸe°éi›~0µY|Ï40§©ËõtS ògèŠdÑugŽÈlPS×% 7ÝAMªtkõjßÚÚª—…œb£sÆà€þ	7Ã$è/¦VÔÃÞF[]Cd}5CÜ‰Öé]Î‘0&çiáâ²6P[]Ô¯¹^QjÔ|%A½4ºÕ‹¾TZ‹åmÃ\÷ÓIcjg‚g÷HNÞ*j¡½€¬)_@«ÈT+l¨ˆÞ8E|Øå&Ë’^à­(d³ýiØ¤…ücÐ1†r
(g$‘|YjQjIá•þ5Ð †‡6v½Awœ§tžžÏ±/üCš7%[0©Â­4rvW!yKiJ‰›1Æ^ÏçRIÀåßû"stª8'0­Û’;¾mÛæ &?Aë:g± Å»=ÁÒ4†Zðìð¥†øK<L¦Ä±b8´kÂã2hc'N”ªõL%­^‰ÿÓ>9Æ\,úÅñÉéû½#7Räl‹s¥#¸Õ@©Ñ›°™»Ã‰‰å<Óx«iÙbÖÛ9Ý”óºÄ•V^ÑÛ›l$UœöÑÅþ†R´NRñwÀáAëøìðíýã6úˆìïµ€	hwŽÛgbÉZ¾ –Ý?;üÔ¢R»Ž£íœ}¡³ÖÜý‘g—ß§ì‰¹œñne qc\š…+Y °zá—ÎA¸Ärf¦Á;]î}éêäÞ£BEàYU€ôc=MÕ,)+lŸµ¯!ÉwF·§»ÑïObœÀfÀ •Ž¼†/á&0tô[&"ì»ƒÄ•FÉ4“.­q¥#†±ÄKˆ£`–Þ8–ùƒ^†i¶ö¶4ØïJŸ–ke±o¥ì¸Ê$¼ˆD*»$sÚÉÎr|ôÆÚþ›jg=Qá°‡ÿJöäTâ}©Ú‘­oòÍ´¨Rb–©1ÿ€ÜPµ.³µŽ–Ì×‘.Ò]ïÐq9[C+–Ô—ƒï»½ïŽ0RÍr!‘N7âwŠ]Ž¹{‘!tÂƒöQ§Õfˆ¾$(-‚ì%± øÕ“¤CÔ¢F$†Žp½€¸¹Hò¾Gi%ý„¥ªI¦	¦¸TNR¥üw&,úÉ…|IË[ÌÁFL­!Wäþl3LdW·W,êæ	£3æÔþéGëžÃùkþß®ó»‹4S*Œ¨X¡4ŒJY¤JáhÁsµÒÑº³=3®¨FäEgÈ½dëB²ñX£*ÇÍ…;óY*7~Ø/DQ3yr“~ÅšÒ]õ~8ñó~{Ô‡…nEêÞHŒ›ÉTmõqd¢Xœ<—ÇÆd`u[pSìÌgŒ¤6®‹·¥BŒ®È™&Lg°C	†Ì+Z Ð°õöð@Öï†0*RÃ±‚µo1_3¥£ÌôÉHnŠz‡b¬sçT¬ªIÀ3±H8[-iÚCUª¸Åv»kðVêUÎmyŠˆí§€naö¨Ü…&Ù±¾Ð4Q-Èò½|ú*WPî;˜@íøQÉŠZtßSx «M—ÚôŠÍ+e‘\0Bµ¾Ú.Þ¾Õ. ñH3ýªÍ‹/!rKn™¸{L³<Óï„©MVØW azM…ÂÇ±…Hš°q±eÛ¶%
hà-mè£ADè§§[Ï_þRŽ78p
6g^ 1ñ4ŠlõN šL3Ç¶(ê«ó#-ævÍ¤o´dedr—l&(DX¨h¬Yþ
œ	Ó6­3K¢-ë¿%¶Ê<Éöì’ÛN.¬N±>Ö\¥BAéM‚Ã*ò	`: 0 Mƒ›š³Tü_ Öo4‚VJfpÐùŽÆÛ¥)áO\EÀjÈ{þÚË1Gù¡ö"ˆÏ)pyxäcT°n¹¢4äƒ+V2üÈ, ç¼úWÅà*²·vêíaDðãñc
A!OxôÞ~ä$Žò‚3çÓ×ÔË!Ù‚VzóBùpHˆU²JÃ¼Ô­Ï´úC£ÌzÝªÑ9¨T1uZr<1^ñw±&é¦×Ä’*ïå]ÉÑLJ´`gR$HU½í#f €VCTÌcOn"w.Õõv–À!™vÉ²OÇxDŸOö,ãš¦Y—ÿM¡Ûnèy£YƒTÒœ-´?SYØû€)U;ÍÕ–ˆÁ·õlf3lŒ½­6’ù¼@wÿûw–îÉWå;¸ãkÒÚÏÄkáQ{ˆ+î;xÌ\w³âj—¼î[UëÎ4º€ú:YT+âž\Þh.¡IÅõûË`Ø‘n íeôûÅsàª€`ù\—†\Æ®ËˆíÚ.·.iuæx’ºZDM0Hy+ÿâ0fºüæVê^œiCS…ÙØ±hÓRi+¶Dú°Vü·-õ~£ŒcÀM\;”ª4¥`g=3Æ=J& @'?f‘hêkæ8q”Ñˆ+Ý€¸?Äÿ„Š¬ˆ5·ñõ-sZ›[ÈJH,gä·.—ÕýáÒ¤9¹9àX8Çtô2Š‘ð²Žážyd v"É(Júï<µ/6¶¯¸³ÏM¿bþeÖò*AY­Aù"¸«@±ÉäD‡á³§*ñ¶„j€ÒŸ¶~©ÏØòX²6ØŽcºÅ¦;"ï=ì8)Å™ÀfËí¼=z³×î|ß:í¼ßkÿŠR	à9·Å·À’fh& ×¹ÙÏ0ïõb”©³™Mƒè5Â¡ëŒà¢6…ù¾xÞ™lÔñ—âÖõ˜iÄ0‰Ï7ÊÙsÂsô«Sá!o~ô0kfÑ#ÑN0×øüèup¨÷·×¡r$Iü<<ØbTÜ?úyëîbñä•Ä¹«r	N/ƒûÖÜ²oEµJVª3ÏGBzö£ÌAuš!Kß%C‹‰ÀÆ¡v4¼†y]Ñ/š¸X¦™Œ;f¸Ù:n¬¸=NHñ¨åjì'¡Ô¶6Ôg6<Þ¢Án¥T›PsGµmö‹T³Ù¿(…" •jÇí¶ê¹‚½`L·Tø~UxïC®ð@žŒ5ö;A@E3.Ç.£ƒT'3ìO˜¢:}r©{ ŒSAÎcd’~~Ô&½ÏM¬ùó#vyÉ…îSW§wœÂBöˆ¢eá½faˆÚùéŒ"‚œHÆÑ8@ÇZºÀÐp´—ºÕÔŽßîç@ KÇ¬6Ú;ÞSFU{®oß~8<È÷}9‚ÁqUÀ.¢NœŠð®Ý:+¨XiNÔöÛ‡¹*Ãn6ÉÐy@ë‡‚ÖŽW’bÌ†Ipg%û,jGoÚgïsÕ»´´8¨Ð—¬
[ÑpØÉŸÑ¶ÂÙ»ˆÐK{æv¯ÃóÉÁª% ƒÄý í#BY­Š R6P“eÜÞ“	øêÈá]Kµ{/ž¯àüvÍQ>½\H6•Ÿ |õo„Jc¿P ¶«­ã
rLÃÝÌ”7ö'XžÈ‡€`ÔŒrù­¼œ³õŽPÑº·µÌMÌ	“³
ÃìÌ“šù,'§_te[[¥íC-cñá­þxŽ&H×y5Ã@{Ã–Œ_•ŽÙ†¯ù-þÊ…ˆÃÎL-­Å×²üòü¸h	­{J&#+‹Xð~yÕ`‹ƒXÃù~y•p?¬Z&h6~#„_~Ì<Ú7Ò¯ØŽÝr;A•¿üT´½ªžö¢P»NFú•[GCPA­c‡tuTðn¶¸Í·ŸÍzÎvv×Á ð
BâkzK¿Lµ³S†©¦Õ‰è'á¶Á`Õ±û£Š 5NÅ}²dEþõÕÔ1ÁÀ'ý<xƒøÍVqZÔ9¤Q¢)D™ßíií)—EçÖ(ëèhÑC¾ ž¿öÿäÏÇb¸ð¯„]¶h"f&Lùá3ôRÔ®}8=<¼Vß”s¡÷ZY$ÆÉü\%ZˆÕò@]öÏÒ›?ÁbÃçLAÌ~ª$²[K¢Í"¡l†*#d—zÊ+ª¶¶J`ýR¾žõ µ)›1Êf»âñãÈšh¡$÷Jí>Âµ#ÔQ?åÛƒWÄ&À¿.ðòŸõàPšúâ™W|dÊ^’¦°¶	;Ÿ`ˆ?C´ˆÝ$ÓX[[
á§¨™°šºé¹œžöÅ¼‘Ç‘õ“ÃÞ”9œ‹v,õ#A¢"°ö³¨žF‹E¨ÈqÀ­î…	²ƒ*s½ MžÕKùÔæðÊÅxŠj’aøâyM_3!E7 ÁÈŒMòRòuÅPÉWD²m¶ÊîàÙÓšM¢ë»eÜ~Q³irÝpUãÕ4ÍÏ`»X°8+•]°Hô_ºªjScIaçò¹àË|.èõ²ü+¤œ~ÿþx½A†J	&½‹+%:ƒh²SMf½”·';A»oœ%€Mohe7jº‚=¤Ö&­	J1Ð7:h PÔ•.Ã#¢5íÐ1ÎÕ_TW«šÕ‡_`âÃRr“×RA£W¸ÔAYÖâ*‡çÆø°?DGƒu3uµgØVzû´ UÒŸ1¦t:ðÖ‡|‘ C(+ûlòGìwU!¢‰k‚G‚d8ž¾à“bÝRˆò`4"çádôq?8Õª!$ù{ql1<¸“½ÑØì"= (]/lKC2yÓ^Âæ),˜`¶\ïGcK1;@²Ð©•ª½Ñ+Cù~özCH×À{Û%!tË?LßÎ™1ªù«Ø0°@X"¼lî<Ý!‘º¿4Of§åÞÂ=<Þ?Í]**½Päß&ÊK-ž/Mm¦Àâx§K¡Å 9•žÊ¢?WŒ¹a°I¬aJé4`??qÁÇ©ß‡=ñÎ¹‹ÙœqÉnVÖã1ÓdpÄy`ð_†Ãš³m|•F“mËŒ£ˆC©¸ô–{ÊÿA‘< w+þGË˜§Z³­99j]Ù¢'*‡»\«ÎÐy.‡—a:)§WMÚLEÜ˜¤•x»*ÉQš"ê$£aO¼LîãÑ³ £T/‘7Ñ†›$ã¶ø¦†×£¨`C¨ÛÖÉpÖú«6ç ’Û‹QÓD’·Rf[è¸Ò«ºö ù,¢šçÃË	ÞH ~¯:zÈ×È:(…zt	Þ§@ &xÆì{¹]tõÕ‹Á[2¹¹CØ»[“œÂ{¬¿É±¡l©„Â1WÏO*JñNá¥*eÖØæ·¢&xFÊg
Óìh.t“7tW¢D²Ðým¾5&,_ˆ°ò
^<†¹VÂÞêöWA39Ä‡¨¢£\³îŽöpbD4j—Y½FžaðK—þŸ,‰;I÷PÃ´{UŸ?XÂ¾ñŸ+¼cå„éÃ¯iH‘mtÒC$ØÎË±pCg¢LºJÚùÛ6Åûà0v–ÈØ€Jâ~’6õÅå\ÓÁ°w:áH:GÀú›‡YÑÕ)n´£EC7V’cáÏÆ.¾PÛ!ïÖñø½îÎ 0nN¯Û^õ:œ;&ƒŒß©åEk]0R¿·íHº,bãŒµ!¼3ã&T„M¨
þêÜ¯
¹O1÷•¾}FYh§4Œ¬G6×äõó±üýíudÛ*x«à´³œ'#9PY*&‰ áƒõ”:a–¸;FëYb¨XÙ!€6äQ]IÖåÏÝ‡»é\8LD%Dç!—;œ¸þän4¡y(£¡¦…¡a°wŽDúQxêÇLÒS1â6á!nb1!å?*¨…†è=4d_ø•Û:%a¡š.¾ä¨`_5Il°˜—ëq	!öPà®˜@¯`Ëã‰eD+KdëF[†6¤ð.î¬„­KU¡,òÓ‹R]œ”uÎôŸ¢8˜ØR°åbªœy”9 l;§’åkÄeP!ºüpk‹…[È9åA²è6H©«ÏÜ‘x8¤Z>öNim7_#ýóâ¦n*§n†pÉ’¹Ò=>ÙK‰¡æ<çŽí½ÅKÓ3ýºÑ3}:§#4qm	œ;ªæZžÕœƒ\RKK¹iH)þú3$çŸ!9ÿÉyÇœ8ËºKz•*§·­½³ ŠÎéÞñ»VçýÞxƒwW–œÊ¢[9ûƒî;JzÙ×ŽJHd.ÇE‰”­+JW(Tö¿R‡àw2”wd½{¿Øh(šº%&Ýä T'Iš	Î‘ G~ckÅ$Ï‹ëæ6Ü·¶ZrL÷\F”Ò!o<qÍ&¾#®„Êaw-:#–Ùc7†8£­šeÒX$ÁÑÂY…ÅÄJ1ðéƒ%Á9Óù‚à‚ùè±H”Ú#àñLoæ´|ùmî¸zåÖèr!¯ Àêº<esU‘ˆ©œK¤["IÊ!T* uz¼ùv–œÔ (nÁì$òf2wNrð»ÈlO©gRU"Ch¸…ùÉØ‡ÙVzÇ”ï›ìXhÒVŸ£XÐr/”Þ\äw×uÍ†qv 0æê>Ì ¶½ùTN9£k¹«ÖXúùó=¤kX„(õ£µ°¤Áœ/@Ñ‰IXŠj®!ã V\Ñ°Êk Ì/ Ú›à¶^Åº‚DÏ"ÒD_iÎN¶&AŒ9]!Âoö'z‘“2—áÆ°,ïƒåºCüéÆð›º1üG°:ú Uå~T¹(ûJm _‚ôR­÷ÌdÕZóJF§¶^¬„^Žþy	ŒÎ]Ê–²ªNö]i„]ÅmX&ÃóäÄQFšqfˆŽÉžf3C2ü|±z¹”‚_èui	ßò¹¥½»ìWä“P(ZßOZ÷û¡øRÙ?8•]ñô¿UÒS›‰¯i6:m¡8$®h”•¦â<Í+§%tp¹ÙRül¹=øº”‘•çiO‡AMn~ñÿ€8¢þóë³¦ÁÁ”UGý²—G&ºòßÜVç\)NÿŽÝÿÃÌ~eùŸümÎé+ÝÐ¼{g{öá?[s§¢ÏAì­rÑ—¸´Ø§Ú‘•üiÍÒúåkùu¹gáÀò|Ñ‚9ÞOR°“¯ŠeÌÇE1"TOQ"@[§jÃÄÌ`1ñ:\ª7¡O(þ/æ{Ísp*#Eì|¿½½©Næ«ƒF=a¢8ªe§0¬åw\ˆ‡¹Çè¦ß÷‚tíø‰wÈ.¨XVvAÝ Ÿ]PøÔã{ZÁ´h ¨ÀÝÏ,å:ÿ®ÆŒŒdÑ\÷„/GÄ2ªÞ÷–Æ	&ˆî_ß¡çÖÂÈNeÍÈ¦côQ\õ‰- me Áf³Ûð‚¥þ¸0…ŽvWlËÕÕtíÊ#÷šŸþõÍeÝÃ\ÜqáÖ
”EE¹žb¡»‘åjÛ¡DÇQ®âðÄû?0Ê½ÅF'Ìäêÿõ©ÄÙºTÍT¸/TMèl<½š.ÀÓèþ÷5ñ´­Ê>ÀhêK²ÞçrÝ[›¦$£iÅ?‡~¥¦ÔêÑÏ+*—UàîÄJöbŽÃ]$©”ˆM!±çá	<nˆcìŒz;Ñ^…¯„Yòž©yFKo¿:Ç•&¨¢9R„tžeG‰ÈÎñ¦ît³_Ä2Îsõ0f±`·á»úÉ(ˆâ%œh1ï‰> æ½ª3O"w™øÿŠòá¯ÕG˜¨<¾\¤àèÊºœ]P=Þ£¼ÜAXäÚ+öñ¿³¼mjûs/&Ô;ug¾è…žeðY”ú²0ÅXÌ§<2SË¹®m^”¦Nêiìe ÍPÛÁt¨]qV½b”hÝÑâyîKÚ£ºO!•mW{Sß…7W  €G¿f¤¸éc!Lã,:9í’ÌâG_+=Í_X—8ÔØÁv3_‘³B³]h¸÷Ð	®Èp0 ^Iï¼ØÁGÓ†ëÅt^UMÝ¢.£óÞRPêû*„*Lõ‰ûŠþÅ—)ÞçsQ&PzîÜh„$ÓJj´¸U–€Ók¼_`¼_lÝ¾Æˆ™©"'ÿ“JC…Ø„Zb{S¼Oúp®1¦üÛax!~fÉ=\¥5C'ÄÎóã4­=Ý{ˆÂÖXk…P³ïÍÔ4ñly¯	'„
ÅI<ŒbTp2ÐoÜÑ°¼©œ¸€ir‰Ñ°¢¦˜TKµýã³£‚<Ké„Ý{åBœÝŒÃÚéY}Gü´ÕØþEwëbG|ú¿f†êý6¾?4ïs™£zÔü¥©ªííSÃÛo/ûÅnäƒ\mµ˜êÛ7ð­­§/—F}|é|äQßþæV¤åÍ©ñSÒßOG]æÉ¬…Ó3ªŸÖ+ð"'Hâ¬ÓsSC+BCjrÁbíõ}:À5´½|&&ßPÏüŽÓ¹b!³ã7éËaCÄè¯wï3Õ,S­X’IÐS?ßJ*þM"†¿&ïÛ
RÕ°qJ¥y ½wîÌÞl›.˜:u@±çíA›³Â¾,8¹uòMªÒ¦ÒÖÊ—ränÊ—1Ež?=+Ã(%håŸ6u‡N×YÌf*GAõña¬«£®¬Áyz_ßyø—k"|<’®22—/"å8‹&Naù‚­¤	Õ(Ð}¨¬ŠñøAN´,“ƒ&µjïÛ)þŠ–ƒßìˆ90n•‹»ÈµÏt¦°‚ƒ ÷²Á†S­ÞÊq•þ"")ÏîQ°5w‰~–æ€ÎqµñN¾”%k)xj^ª	áÖV€ÂÍYŽ^R CÜs»Úºuþru¿VjTþ¾´ýy–×ÉzŸN|œECñkË}Xˆ4ÑŠYÄU³)6È²¤Qæ·`mJ­¡A+Tù‚Ò“^…¤¤4áj`°eãap“ãV§£Žr‹A£é®zÉ§‚‚®çL±îÒJÀ¬wY×rP£ßš‰ÝVýÈ¶ÃóyÁ[ÝÀ»½ÓÓ½ÉÓ­&—¡ù~`öÌ¾«ö’†de·ôêŸ?‰äœÎÿyÌØ‘ÄÁÐok:jÊ¹“³z¨Û2‹‚C²ÿ‹o$PwtkUŠÕGq7ÿ¦‰°5ìšÔü”H{ž¬¡IÌ^áÕ)A6çÌ)Eu²ës{qú(p'N3â2X€|J®y­ºÞðò¨¨Ù”’É"ê¡—(æK&žå„d¶ B~žfz«zE$¡0°Va8èLB™Ú5"ÓÑA%¸ýb–êt:ž˜”ðX«‰µL¢vÔÕÉáÃÈ±¡ •Û«³Ü'°Ý Åg§>9Ï†a8¶Æâ¨y½8W›j…ów`­šú¬Ž /×j.“^‹-¿÷« šX‘/ê\V±ˆl6ŽâŸ~A\þ¨	îÑÏ?ãÅÿ<y$¾ìúDUvYü?oÅ³ãÎKzÙ”ž³!Æü€\ª‰iì“¦¨¼àíÃw°¾ooë·ˆ˜­%øò¤¦X|¶â;—Ÿ‡#Á”ŠK¨7žÖ°¥Í°ŸM&u±!^l‰'b{kK<†Ÿ8t‹ßÃF¡”•œCà¤˜1‡!Âàææ¦Ä@WÑ05Œ°äê!~Nz¸¹‘=ìáŸõ>\Ãµ}"ž	²‹ïj$Šç¿4Äó¿‰¦ú,£PÌ•Á`8Í.pY0W²Áz>,oÛ7‡ì„q’løƒ¶	ÌÂGÍjˆ÷>9ÊkHú´Ê‹G¹Ü´ê¢’Y7hIW™£*’È:ûHI<~Œ ùš ±ìÂ1Ùqšœ§aÆºî‡
	RŒdL'6– ‰²{Âwât	ß4›Nyb1³ËØhüí–MíÿuKí3€w¤“Ñ–uñ-ìyÉBç&«gÚM“Ïa¬ú³1
,¯³¯LoxNœ¯Ô”ArÄï:™·rÈ>è&i’³p©+7œì˜Rñp½“žŠâvÐÆ¼Ûû½7'§gŽq­U+÷ppx°ËÉ‹\Æå©ý¼®f!2—däç=ÚÍqïÑŠ¥Œ?¹U„0ç4”¶"À}½<p—€©e4³•¯Èr åA™1š>B³¹°éHJ¦ÜzNšt¯Q®Æýˆ8A/XZ,»/§ßE@²g¸È MQ×‹ùè½þ„HÔ²ý8dŽAª|nxv™‹Ä$€ã†lHá©-Ø16*Ar}oš¦h€Ô‹P	„Ò%Ú“ … sédŽ*OM•ðz‚«˜)U+4µdgvåÁ… ƒU¼º¸¿òˆ‹q¹‘Øjë&UMDq”]T¸n-‡ŒY€U´nG0S„÷dv7%€u€TÀSû'­Îi«Ý:ýÔ: ØÍcÓ”‰ÙÎÕa×°¥÷ ‰Âq¦Ú€1[ÁhÜ#à)ZqôNP›GWªüd¾àÓ½ÖJ÷IÄ¡dÑe>àñ„ªbF¼A ÷czI§qÌœNÝâþ­Æ¨¶ÉKá‰',ÝÙƒTiÎã¡âuÜÁÉ—\©œÁÜÑŠ‰~*Úé‰ðê¨ªpK;%¥¢Ë)]>¤ÄJY¾ÄÜÔíŸ]1*ƒ²Ö[?œÁ™„ÃawÐRÂgRH¡cÌÜÍ·¿óß&‚UÝðªŒÈ\«”®N°þvl›cePý¿bmÚÙ)ÜçŒˆ,n”pÐÙ×H•J¼›ÞBÄ¡Š^ç´ü‚Ê)Ë:UêßápúXÖ­˜µžÙVÕUÖ[ÏnëŒÖÁ²?h†y.˜ú éÆlÙ#€'T&	XÙpt²;Ê‹Ó{º¥k]EðÎ®W`ËÈS™{1`¼\±æ<Ë€<o«I…NÞáù{¿÷ÒV@‹íågMaV:/¶X£BNÃz\ª`Ù	kÏV×ˆ¼XHöù˜¤be¸‹µ°¬tò¶·xKªÚ-ÏÓ¥ªÅ6ì>Ç¸RR\Fê¢“®Ñ1–ëàQÜ€ÿÐV¦llt§ƒ†`g¾é”Db`†:â‰l‹Pó5E§†±^{ðþ|rQ£‚fl´Í×½þÕö¶\ýu·-ìâÉ Û°÷™0¿æ¾K²‰åÌ)6žhÈ²»Ðì…ãÂÓw'€Xâ×L÷bÃ×qðÎ ·_XìuÛo>tZŸZÇgm&þ~Sxf(É LLŽ5Ž_e©o¿¥Ží„Í× CØé³¢an9£Ô+Hã€%L“)'àè¦cêiÚÉøW¶ª¹-`Ö‚ºxâÚÕÄc|¹á¾TBŠg¢#@*°ÊÕmMq“2#@¼|Ï°·%‹0ïhe‹òîšIw Ñcà¸|8Ôá7;%â–é·Ž)ÅÂµ~ïæÚT«>«gý+ÒÜRJpœíì
ª¥“¸Srƒ.DÃI˜"ÆgÎg„éìü™üNO†÷®uÆ?ÚûH½ÛÿhøU¿jñ‹è®ö‘‹Å˜‡©ùX‘–ÐF$Ûó˜Ñ‰Äe°–ZÑ+ü*?A…¿5ß¤’AÜŒá´à´`°wö±Ý9ûñCóf˜@mŽ°õÀ½3-~ýU<À¸’3U“ÓÜyø—­kQ{
äƒ¦ðK7\:H`4Rƒ†þ.ž‹4Þ¸ïí4õi’ Å\Ps+Ôs5 ÎÃÞÄ« /ëÊOúÞÞ‚Î_ÚU«%vZ˜Ë#ÍØW©Ù5Á/ïp¦R¥ËÑScÛ›UÃ%î‚ÛÆVÄ¨c	xþoë2TÞÊ~v9_O©"ÊC‚Î(TOVã§AœŒE'…#Â¶Žê@¼Vy¹«Z(iâ¸Í˜·Z2-½¤Áu–YôK%_ÒÉ!>çåO{“FÙBÈÚ®ýFý‚vTnï6‚ýˆ¥vU†Ø>Áúû•lˆ_Kêª:æd:×L{™aõ¸/iuF<µN ²®aÜ Ò>Èvß [Þ–úB9’êÖ±îê6Q4ð—–Ka(Y
«^á§<ì^YKïW	ôqj½àçØ¾ÞhÌ‡B¾¯Ô¢uš ˜<ªòˆJoy^Õo9±ùYàl~³áÉrAˆä_*:
®‰•ÛÞÚ²_#Ùà6€
)îzÔgëN”ÆÂ¨/ë,…ËÎÐÀ.eaw<Ïfüy,(d/²Øµ(÷yWD Î©ÚðôøqCÏúñc´6sL«Vx*ôÙW.OþŠ‡TBê[&Q<¥43i7U½%NÍõv;­°«6¸WâPCòw“øhû|DÝ»<ìáz	*‚åu1<À­V²¤Ã9íbi”ß±¨Š1è+m6ˆEäŽˆ&ãÒ˜ÛÆ•mSœÕRi˜LÇênÏÝ¾T2*Ýõ|Ë´$×lW„AïBáš–d‹ýQŒ‰C(FÊ(Ií%‚.‰Ž‚ÀK©'áEp%©š\ÙMÑ²;#Cõ VB[Fw6å´ù&f¶£“°øÁeÈ×pZÒ¦¼)ñâ´j/R·iLáˆ×aà}½™9›â@ê>‰ãU-àjúZ°ctÒdlíoŠYh·†r­¼ÐC…ô°Õó)]ì `ª•YqÀD·¦ké]óË3¹]ûi«ù¬ñò—µ|Oäê>ÁQöŸèkÁO$>Ì¹Í“ŽÀêÑË¯’´/¶·çXfÍ3³l~í°M;•øm–¦Úû\
Ô[¾P\¡]KÜi¶·îrµˆµÁrì&Hû@)bmÿybÓ-’¯Í“†ÖÈµ€;z8tò½Tæ—´	Kª•ÊC­ÚÖ¢ÿC¦
%–[&ms"¥É+Z¸MÅ7´HIbÆMÏ3r§–'N5Ï2_ÉÍŒËZ¿›ˆmÄ]`-2‡t¸Ñ,„±"z:¡Ö—œ0E{#Oß:>9;ûQ~YJ.•‚ ðd•_ñ‡'<·%3{|îkñM™§nLÆ	8¤HxÄôXE‘Pê
Ãˆ_10.ªWXÐùöÓYÝËøXœ Nõ¬Ü¾Ö@¶KÇPÄ2›,0³¢«Ûžlˆ³4ˆ³18ÀHô.¦ñgdQ:º
˜p7*&òlEõß~'¾Y‚¶<Û§2fTs6Ë°Î_wÉÕ^Æ— …¼¬ä Ð«l:ìc[À:ìo®¢"ÚVB^uúÉUŒ÷.:´3KD9–Ø¡¸T›J–Ðq²‡¯„ó¦ððìiã‹0Ä«U\}¡r$Æ)‡ù­÷ÕI.S‹¯tzù¨Ã†ZTž)q_Ý0¢Ê†–bŠÜ±\væºŽ¾U¤–bG¯"òû ‰>Üzyý„ÿ o5¡{‰[äœ®Yü±œ¯^ä²ë5ôBßßÄù±^¤u·wc1¥;·ŽdÛ¬¹Mò}í·ÙÈ»yÉH–˜Dn\k@‚ÖÑ+`%žÄ"¯ËKÑ>âªË{ˆÒÛôÉÃi]éhWÔ2O<Z}§*Ï´i­««‘÷DaãùÌ&~?š0d¡zlj’Î ¢$rIÈÄA"Žs>3à©7(Èæ£áô f4”¤`\qdiDHØ4;¡½*QQ”V%æžë®kÁñàø”¯ýÐ|@ŒXK.Ãô*&rpôØß6 y%îÑ¯4YèáMEpªÚ˜Ø:¥<IüñJ,srÚ’APA&]gÿ¬³ÿþ ÓþÐÚ?|{¸_ZÇ®Ò9ùÔ:=Úûðáðø'7>J8úõuõ ”¼
¥t-—ý¨ê‚Ã¡ˆCX¸ þ\Q0	úì!±š„¼„1lÐƒ4É[¾ÒãÏ¦¨ñVô“0CØ7WÿøG"ti°ú åÔ+øí%vG‡ÈÀ^åÜ=È]A¡”;—ƒ«¦Ar&±:¤†TçÔÅ†f¹]F©º£YŒíûX~íDn²bÀ`3ñò$ïwÉOh‡·¶pM&pbÃk Œ‚5ãHG§ˆzx†hs³`KÈJÎMÙO»=â§ÜÔNs4¼ï	žþg
´¯Kªˆp4&9u3 J5²+v_ºaÿø”=š†ÑçpHŠÚ‡îtÂ©)õd€{¹Ž&Èr\PQÎÅÆXJµÊÜ¥vX} Ë8ª8ëör_ž½ÓBÂ÷ç×¶ŸŒoÈÅàsŒ^ïvN³`Ñ-òZƒØ×'‘’¦$´OÇèƒZ(åÛÖŠ€ò=ãÚäöèÖ ÙŒžbÃ0±CÜ1bX¨ŽíŽTã°k>!:ÚÁt’`Ü“ûÓõ.§íšø:t"àÊÓxH×¡®(âÙxˆ{ÙKx5JQåA‘MñžDÙ´;ÐÖê3¾â Ã`ä.×>CÈ@gÔ˜f¶×aàá‰¬ÚÆ¦²ý•ÿï4œb'rëÝóÔ>£ÏŸZŠj /\5Y”tZ\ëž¬b0å]Œ|“ùÌÁ¤eÒ=èúžº‹BF‹	åõNÃN«;Œ`•üòrïP¿ƒ{F¾»¤RxN9nù55†ÇœÃhÁ‚Õ½*å×¶h-Ft-FXÉçÅÙƒh†ª‰Ðó ¯ä%Y­ÈºÚRÇì¢bµ/¦ç~ÃîµÓòhùƒ+D&|‡7À<ñ*j×Fµú…Y†™îŽ ê¬û.Òn«wÏ·þöÂb›å[ÖnéÍÂV‹9»0gXýÃ#Tx]ÙZ£íº2o¾r«k=ºVuðµz‹¿½Z<ÃÌ8IJð4Š§ÁÑ€GwQÆªžán„†M¯¦¡lè–©s«˜µjØLÕ}+| SjO:§'ÇG?b=³âÛo_‰§Ê™’ê•Çé|DÈCGØ²pñËC¢†h§ê¶<zç,ýˆtÅÈ#ƒEÍº…EÕý*ÌìœôJE¥¥‘¾gYwã0jÀkêúç=«£1Z¿¢‹(%«r(3Xpç!Gã<¹b
KL›leæÜí*í#g}Æ“çªî{·xîzó¼h ÄÑHñÊùàjzÎ÷‡aéÜ7×öz13"ÔC"/ÞXŸLÝUìËªë¥C%ÒWåfà´ë-à·â»ïZ÷‡Çd›&$e;š.âP{+ˆhÝö¯UÅ«
K5+—µ÷ª8n‡¿Õ¨VP.UlPqZ«eì[W]×E­ŠËP¨Gúbça†ÿ×ŠÂ²£ICD÷96yõßFf\ÿvW8£šÁÎèõ tl²rK«f	Âùd:qÐ³UÒB¶öI°Xt9t9©Ç¯t£Ö¦/;DBfÏŒ”*ÅW-_Úcq.	ù¸sZ6­[]Ë^]ÅØY•fwtFQ0!¡Í"(Æ:YzºƒC·Î®FKeñ¢¬® bÛ/3N$ôšvÌÜºþfÀ°ßF]+Þ~ß9nµÚý“ãOtñlgU«0Å%b"/ˆå+¬Ûþø¦ýc;_ùì&±°¼j®J+næÉ±Ú…€ŽaÖv]÷2âû`}P<ÀËYlFíŒ¦Åîe2ÔÉ¬°$‹…qÿñºÁª„t2Åë×â¯ÒIÝ¬‡òö‘Rö<iÍºðE ²UqhÙJbÏ‚uÅe4#±C˜¼WÂÝGSÅ©õ€E©½ÿxPŸÈ­UÙG<o8éh¦ç©ÚÔm`VC.† zQ˜yjŸ LH¢Ž8*'	Ò,'kÄ;É ®e x… ùŠþ”}áÓO;6jRß,°cx·âþ81­ùC†ýÙþ;–‚qûÿ¢ l+ÖòîÞj“ïQùñ)LQCQ$~ó¼õd×x,¤4Tºl6L&›êzg”qÔ.G1Ám°Ä>€	'Wöš)Ýc4±'{é¢eÙÔ¨P' «ø(ì]$°»¯ÅÀjOzÃ ËžàÑ¡ÿüð„Ñ±YÝG›²Vœ¡º†JáH-íÁM2ešR5ô•Æ”ZË)pÒÒä›_vÜÅ æV®Š(:N7·uýÊÒÝ1{µP¼óáƒ¨öqi ŠB,;êãÔ•Éà‹— üå
ÎqwÕ„—1bèÇ:SâÆìHàÐ€~Äæ
.2 )–D'¼Â7ø7à×·áø†W¹ô^y·®}-ð¾Á¿_/ÆBÕl£;sLí¸óÊ’º3	œÐ‰(æÈ(Ïó¯þ:cP\Ò–\ê…Fçà5^tªì0w>ì¾iÛæ¯=s«¤»‹[	ÚU¬„MêM”uBÿò5ÁÚê’C¨K§¤.Ž}ÓU”˜u¸âü,6÷@‹æŒl`£Ôp
-’$Ž ’¾×¥†Am$â‚¥VB’í'ŽÛløÊ\Œøœ÷,îÚŠŠÀâŒ¦~>E¤3£ŽôšºlÁ>ZÞrÎùŠˆaI^äì7|¹F…õâžSBšƒÔø¤–<ÃkQDµFKŽ°\@‚ÕWNIÚ%Û–,ªsV²/ÍcÍûâ\ ñŸyžÅŸµô,ü¬e÷Eâ"Î­•›ànž´|È;u¯$ ýLûF˜žÎe˜+vtý-s8ùËd¹új\Wß+íÕW e$ÐF7Þ¤Æw8©¼zIŽ"â­µSò¦“¥P{™ksæ±ÅaçkCŒ“íèw2Nx&´‘ÚÓyvlñíŠ	÷‚ed¾¬Ø2èÀÚ3íbšýöÌ,Ñ‚[v¬ƒò
¬Ýj‡¤ëqÝ¨IisÂ×©_Š¤ŸêR€ðUHFÃ1r"xé*¯¡ëFsDCŒÚØ ª¨!ù;ýÚjaƒ3f_öŽÏÿI?ööaá8<ë¼Ý;<úxÚªè‡¬ÝMJÚ×Ó 3}£;ûffgÀÂ‚vt²ÿNët¯=»Gmâ¾CèôõýéáÙìÞzéÍx’Üy‚û§?~8;qgÈ;ì:”Éß¾{:ú–‚LÂA°ÈZç”IPd¡-tëVé«uOª­œÞ$NàÀ“u¨£ªclPæ=LÐkE¶“«ŸDãîXW=Ñ~ ü…)ž	TE7œ\…°ã Ë
n%Wø¡ |cŸÆyO0%öŠkì¡KLcÀ“4"¢ž:ž´¼¾ˆ6I×o«Â’Ùx‰¨…ÞUòˆâå¬°!žÂkÇÉi0	àâ™~­Á¾²¹zÉÐÉ…sS¿La‘
§NKW•bÓ\ì&\ÄsR×­óÊ"rÄ0¾«^Ñjï…þˆËŒì Â]ì®j·ýL“éÔ¹¬D¯¸¯¨ws	»wKð,?f¨D£X™KMÅ®qÒ”Bå“NlÆ	Þ=žï]ßÒ¾ôZ¾5GÃÓbñsÙêøµôô0ÂëÄ8—LµÚlj‚`é“a2äZx‰«j¿ç×Ö±ðÝShÕ µ›	¿–ƒ6 üõ4q4`Û¨ì’kk~ë²¬o[-V4)3¡ißÒ$Tâª‚92:GiMç(kÓ/Þ•|nÉó¥ž rêÍy2¸×‚ú™ƒ_qCn"¼*ÙÜœº2nÍ„ŸßJüüð³	ÞêºàÂÕ—¹Gîíƒ;x>©È»ýµlÄ'ßØk·ÑôŽ®¦)Ýºýi«¹ý×_°ÑœxýËå#œ£è<Î^Gb5Ý¹Í:¡%¡“Ê¢ŠYÙå‘µ	€Fr.•°§CQ2fúÓtqÉ»ÄÃÂg«%f|Å­=[ïnÊ,áDU]Ls[\ïNJ'}mrœâµÌßF*z÷È˜wãnjiG9¶Ðt¤šï¸„ÏùÞú®Žß»$iobï±ùbcß±òËä¼€ìHi•2X´Ù _...=i‡`:ó§­wý½»ÊÇû[ûýû7íîæcW[ku“õjXW1’©¢ðØÊ&­è¿œ×öðÅÏ,b·æ^¡*dAË^¨¾wË%.x	B$fe…f ïuºAŸÊPÞ¬U#vü4Ëýý¬<ÖÔ¢¬óây7Â8ZçrãÕ7jx«ñÅóÎDlÔXÄcåg+^iÈU×aÐçê¥5«	º9gÏ=¤¼b(‚O`‡É¤#­ÀË£ƒð¹oŒŒ2Œ¶ÁO“dÃJµø˜÷ó1j1àÜ…Žñ¤4/PE˜O$³ ‚¼øé¯ÛOÑGŽÞr"	úBQ­¥í1û¥VÞz…"%Ïb¹ùØ¸ÎJ†u „‡Ùö@_J¼µfB¼Ðàº³›l Ls”B«&¬®*÷ßóÂwÅÎµR¬æRÆ¹)ƒÑ1Ùö91B_á'·µmri	6çpÅ¼ãÌ›uìÏ:0Pzdã\Í=Ú®ÕäGÝwåMPv^†ÃÚVƒE°ºxýJ`ôáƒÖ›ïÊµç3Ñ8	­K Æ½H¨Y4¤/6»f[Û
.[âå:J$‡\#JíÓüpzrˆ|ï !Þï}è´¿Û;mÁo¤k[jöºWTùT•®`îÅ(XŠöA‡†6E@òAÎañn`­Äç0Ã¡ÌöOŽß¾d"Ý!ð¦-@Àïÿ®“	¬®XKb­“ô¶$ƒ–\E}h=årÜ§V:ègäÓ„]*ï€X)Ï² ôxdDp€0¨¹Æ¢$&MI¨¼ Xç_‘¼<»îÔ	çŒÀ"l“x{›€âì™tÓ¨—YöämsN®V¾ìžÎRVßG‚êâDÓËÉ3ý»	]’Úd…PR}÷ë„Ÿ'ïôŠä¿]nI³êÍ0âÅücÄ±q­¸*’k©V¬¬@gÏ\BMF–‘Æ95&âÜe+Ø8-¿-ašFÓ‰ÕwhÁGs‹rN°Õt©ÉáªÈRG¢-ôŠE‰‡Š¡~Z¼¥ÕÛTAÉ™Žäe
¤6À4Yª>ˆF¯¶®î}jÃß—±¿·ŸÃö¾Ú†9·Û§ðóiî¥¹{)É·è¶f¨¬WCžeë†çªò¬´¤ÑJ<
ý;‹¢O-Ò5·ï‚2n–^,½$ø»Å•Z%AW«D ‹,ž ¹Ø}°Rz¿M~#³áÖ¶¬‹ñóJñžÊ©X„Ïù¹Ì%H—;ÙÜÜ%²NtÊÃ†AžŸ( En»J“å7íÇÞ¼“Õ×AÌßs$‡¥bærü91Q$-ÃœJßBUøÁ«!³í Z)çO@’ø¤pë\¨QcF> òq!l˜GƒúãòÔqš&qƒ*/Íš3	d*úâËÂ¨Ù×Ç¨f'@ª³UûÙ-ñlvg<«|M½–¶žªÄ—òzØ_d¨oi$:UL´öX³n¿b–¢Î}òÊR¶DžØd¨•QQø’&mSìcPtÓ  4Ò	:4UkÓ°4×¤¯T˜r õÃaˆÁSèmL.èeü9¤àczêîöü¡àiÆÊ!‘÷èÍÞ[ëÑI¯›ÉHƒxZ/n2¼Ð%]QxÊ9G—a7À[àkÐ¨RlèÈ,åÑU2ÎØöÓVóé/;˜©M¬…þ+ãHîÅ»P ²x¡îy Z…œˆðid“'ƒ(…z/9’£Q8	pÁòÊ6Ÿ´	@üäïlóŸ§üç™ßÈ(³¦3îÊ5ÀFò7»ø®ú9÷åLl‹–KÇ(v\L‡%J§.bÀ*§!Ä~¹à7ÙIPŠãPü¼v(ð¯¸Â°‡F¢Ÿ`ÆÐ5‚á8|ŽÆLV±G\y7.0@>]ú8±¯Žòn÷–O/a/à°KRÑýiR:&…ŠK-˜ÿÞJô-_¼\Á~ôCÆùôè÷8²~õï‘ñZ¢ÓO´¸²Ø‹ç+Ýl&‡RÙ—[ø^â Éó-Œ«¶Ùr_Göo+žóÈ*DƒuœhÄî«n6ŸƒSa”åyrçB,sKrÖÚoh¢Z’ä{ùä¹:áêØttˆeü`ÞãS.²sfUt;gN‚äÌ«8ŽÜˆÐÚ7kÙïÇQ®žJÚŠ¤Ù‘¤áÉ«8ÊÜGªâÈ¨ùáwhÛ-‰>Õá£C[ §'¯*‡Ýë–ŠK”uEþ£'ãöñíÛÃjkìLH¨a_¤tFÛÍ*xbÏïµvKçnd¨;áuo8Í€°ÖzFvS79Þ|lÿXf}ñÂÿ<Ì6µ±	­x pü—?a"Ô¸ÿK½Ä c|É£LE§Çè|ÓìFßû0y­xÔ«Õ±)èáýŸšMúñ‹LÇjEÄÈÀºÛêlm™.Âá¸æ®¾ÉôLëî„è!$þ@&Ó“Ù}V=xUÌÛb&h¼sÎ´èx7™\0Û‚<Û¢rmŠ43†ÈM©è{I<Äÿ„·’gº™Ù|ù«ý?ùSîQØ»l±uRM„åÁe>{íÃé!Š5`”•J4ãä*älW‰!í<PW½,à;å9UÅFrNÀ]##•ºñÉ˜q k»M1X·U8™UŠ;ùöxOt#yH\Q"¶wˆ[¶xÔÍÍM‘]œ–—¡tŠ&E ”ÅP–[³uPEÅ Õ17c³ŸuŠßX<9s2ê2Ôªæñ¼q™ÐªsÄY·Å³\Ôø"ÛÈí£Í/#¤|¥ƒc~º¯JdXçœ›5><€QÑ7u’­dÑäü —<EaF<jÆ„Xøß#YÕóÀ…2D«&ƒÌâî§¹9>ðö´:Yl"È{<ÒzœÙûæf°v±âHêçØHÇ—7)]
4å©¸¥û¥<VŒTÐ AÈP]€„¡Å°µ8Û¤×°šñ7w¼]4«cmq.,¨ÿ.?ŽÔzÙþxt„Ù[¡ø)úe³ŸžQ(ÂAs‚%S¥¹Wf­W4“y´œÛÈ<ç/jŸLYÕ­xu%i&:ÖK€Âgã„å)X;ÖXdBS	vrÁô±š,XtÁ&%~`I]öl!±çI8V?Â"Ã³ïyRS–\B–¨XkQõ†+T’w=vðªoÉ“ùdYt % ÒS–âLQo8æ`’^i£ŒèFÃhrc'+F~žP:9““æ"[œã É¼/žÍèËÙÉƒ²`o°D³':ŽìŽ@Š¹E7Ã9¢v@)·£ù³„èžFÙœmÍ¿K«>»]ÜÏÉ”BãsìoCƒf–ø+þåÚ,7´=P€îÓS‡Öˆ¿‹µþ5T®¾&vÄÚšñÐ“ŽVC ûKö§°<ÂŠÈò÷{§Ç‡ÇïvÄ[žÆdŠ g\&_èFi ‰”²Bó‡¥ß”–|ZŠI¿ÌÛ~Æ1²0öÂ>ð}Í}R<q/rC2\C#ª™ÙÂÞ‰§F©8á1œGMÔ³aŽkÛ[E3å«‹ B²j ÄUšhƒn,*{‹;VNëÜ6Ó1žâWƒÖÕ>ƒ$þf¯ÝùîðÝw­SJÔ\ÇgÏ¥Piµ£“ïe-©2fŽQfiŽ¤ÞÂR)„¥jRZWGe«hVç¼Î`–±â2Cñ1ãª‹=B'ÍÙvý`!Ü%1ÖCc)ä¼é˜9áiZŸ:‡§­ý3%+ÙØ0=†ç‹2ÌÎ™B3|Ýbm¢H³+Pl:mµ÷÷Žë6ÃX°ŠZ[Á7ÞÝ›ú’äç¢§Ó|ÉÙì¤QÕ
ÌciqajÚÈŒéDÌ‡m`
C‹ñÁœˆ]¼Ì«²ªvo6€íPu”g:ÆiˆY6dR#d˜£¡ vª¼ôsí?£Î&#ƒüE Ù%W6ç¥jÈ|LÌ˜¡ËR7ìÑU2Ù…é‡®TyÙ`;ÎÂá€¤QÎÑDÝáJý¢¤ÄÒm}sô7í¶[gèù¦×tî½ÍS ¾yhñŽÖ.-¼á3}zúaïôl$—!+x×9n‰«æVÆ<§­.˜ÙÅ;r«+¶ãa0Û˜(ÿÂ^¢}vzvòñ¨³÷ñì¤Èº%œµ­º.J#ÛÚ;#ërûlïý‡ÎÁÞÙ^§}øO¨V{QÏ¹¤Ü"ƒë‚æÏ÷˜FôFªYdnO€¨s‚ª’¬Ä¬ÌñZœÓ•ë—dv-ÏéêgnÍ6õ'Å±#ëAê6ŒšÈ@ˆÃÀºÛ‡#8åA–%½ˆ¢D„IÒê}QçˆA¨˜‹ wZUµvÊžuaîU”\œ¤´eÉX‘ECñÐÊîºÉM uî¦eÅüNéáŠ³©„¬ÔºŽ2„+ÊMøI\ŒÔlú+lÎÜ8#=k…i˜ÜèÊ)“«p }’åd3œ	IåÓ ¼ÀZêžÃ¶h÷$ÕByï˜ó©=fzA‘6ÑŠžópÉ^£Òüž™L{ÖÊ±ª’Êâ­’œ7ô‚®SzêSèuyÿ‚œèúMûìàð˜2KŸ,h}¹b¥_U¦L}¹ŒëÑbè
&¯¢)¡’Êá™Ó#"gV¶”âìÞÊ8ZÕV{é”æ¢ÍeµÅÁ`™ö‡c[AïÅòYœYÖËt[–è¶ Í­²³i§3²îåÏøŸë~f’Ã>µƒNnØ§ú==Ug†-K[‘¶07nYjÜ\b\Ê™B–ÑW‡×ÀÝ5ï±˜g×Äý¶k£/|0ïñéÏ´¿‡´ÜQ&ê³t'_C¥Vú-sÏêI«ƒ oã£ülç¤…oç“‹§5g8.‹RÏ-Y`äÏÞžv¾;iGyÒÙ?;=²K9'°nû•ê—ZA;N²èº3
G°çp(ƒw1Ò©Yf‹")4!›G„R”wÜ`˜ò\À9¤Äè îåã€¶¼AX«¬3’(»£Ò:=j^>²,·”57ˆ£±ÉÛ>@¿±Ë]¾‚Œ ïÀ¥E>‹ð¿ ƒâ“Á„rÑ­¿çMrPãœoèðÇÕ¥ð:•Ã€ñaà€/’¾Ê/ÊÃ
¯{aØgå×e`pS;áá-œ--@(KˆÅ¢Iˆio,bo|Ã‹h“•J‰$çC@ÁO8\ÂÏZ£1ð²1î¶/ËúXîÛWUe.S>ñÒÿßÞ—6·q$‰~†~E‹–A™ ’Òj¥‘'hŠ3V×#)OøyhŠã4¨cÂûß7¯ªÊ:ºÑ ÎxÖŽ°ˆî®ÊÊÊºòªLI½Dm¤7¬”¡ÃKüâÄL79A^ôm2_¶M§\Òš‹¶•’2ˆÉÄ÷Ê´ ƒñôf¾Å¨nQ¿+Xø¹v8W‘‘šS¾Ö2CŠµøZ_9=¨Ú­ªH)=}ì‰M¼‰yÍl‹æçì‘nøÂÏæ­âSœG¿è1#æ–¼EbäÒÝšÚËúƒK½Û»ƒ@_ýGû¡ïŽoÐùùñkHn.µC¬ü6Y]ëèï/Î²§ÙÞNbô¥+Ùå‹ïSpÀªÞÿŒÆ†§ÙXƒžQÔNUƒ¥;WC1½fÊX~)èƒÑ#Ùõå÷°éŸuŸ=>…-CÖµÓ3/z&æ	ú7]ôf«¦²gPí971-f¿%
ûÔôËØ×‰[6'Ù1ÖEÇnô›Ñ¶“uÃÿï„3ÿ½Eñ‚®(!“ÙÌïûr*e*ãè>@²<ñµÛ›«WjßÒºì¢×òšôaQÌ”‚ìÜäì$£1Ú›ÑÅ|r9ÿd~ÙÝìÌ”>Í/s4ÙYö½™á.Œ¾jšÏP5ŽŒ¹Œ[8hè.#ÆäjM¢«£*‚ÊpzËs‰¸M: O†âÊÎòËÛ±NhÀ7l]JSfðÂró¡WŠY\@¢·G­ÒÙX?pà„î£L¯ÂÇ4VâŒ¥^VTš,äg^_uâ+9H/2.
íW~ib_v7ŠiažÐ!}¸¢.Ä×b`{îÃÕ4èžæÃúx‡šIq:zB÷UZ\'æÐ×6`ÇtÍ×øàÞãSäÝ}9Õ5§Î»ûrª}xrz•O¡ÓH°´Š >¨šð:²}?mçÈ®ý»³ùðÎnâJ*sÄË¶Z-øóßÞ`‚Ýæùl²´ï¬iëA¶¿Í×TsÖ»€ÚE‰ó#“ü˜÷Ÿ*òSîïHJ(Xc”û&zJ¨Pý,Ûfugb»úÖ_[¯J$¡¶¹`…{eäîË"D‘zÎ½v€8,#e“Á&ŽD:X˜XØ±à¤wÉa…’·Oý”±F¸µ²á&5° Jfèë	šÌ¾ÐIhÏ0É)ku,sßu(•YÔöNî³8µ˜ìÛo³œ³†áRÀMiˆ¼*"©ãßÙCÂ®Yý-PS,ÉÈ‡²_År’‰|–´«ÞcÉï«‚mK:•iéü
“™úRC'–iž.æˆ²›·9›ÚV\ƒJÓså>v¼ß},»>áì~îŽ6Ùn²œzK@eœV”äœ‹K²SÓpÙ|K»µBÎ¥rVÜðøFâÃ®úÜ^v$Lð™N¼êñãB5Ë“ó¬·ÉVùñ–{0['Çž^?OW`_Vi=ÁöúªJSw‹Ne8¶\9Ž©±·’äÊÜÙôáJÐ®Úÿ¶?(èG„4?„bê~‹ôb½WÂ,Z/ ?Šõ³½œ¡qaÁÒ+™Ú\Hìr‰`Ÿæê	¸ç>Ž†+ŠŽî#€54FÁtäÞfïS—£ºE¼ûR|x'm^$ì»í?úêñw„ÃÂ.æÛí„§SK+ð÷¥~Vçg`Ñ+5éÅF=æØ¡ó-$—­ÿÂÖÇ×Šƒ¦ç 6¯¥ áú_Ÿ[æ;¨=÷j3ÏmãØØ¶ÏlÛøZ·ÏÝOÝ‡ÔByc¡àkŸhøµà‘›ÚôEÕ¦ç5Å_êÚÝ'¼<ÚûÔâ9&µ÷8Ýìcœð9…D?Ú¦ZN t—e‰?¡-–Êl\$2ñöí„
Bî³kØÉOð‹Ÿ¼8~}~òÃÏÒÞ«KCÇ¡•Ï [·ûâÍÛãSìÒÉéS£ä»o'e©½ÕMæsæ2·2²¥ÛfÑ+óIÆÜížéî¶èÔ|¥&OwfYïiÖV˜ëC/L‰"²ß-¸´hQ)œ³óÓãÃWg«ŒT•¡9=~y|xfGûä˜ÆiÉÊ§ÇgoÞQB„uÑñ˜½Þ¨X«r3ÄxàYÊj¾	ñ¦,½æÈÖÈ”1r3¶È²Õm-‘ÆÕu9+d¬ˆlk0AVZ cdÂöhgã*bhÚúX)œZ¾ÌøæŽpÇs¼É=m‘´ÆÈ–1Ñ'ß2æDâƒêžñ8Š*0¶,:˜tø|õŸwÔ•z$ž
s§ÑÿââïÌ.Å*ÎJ±j1ûª]±Íí¾ÏÒ°emL™ËºP5.|{[Ùæb$0voÆ—0 ›“°ÑæD‘³wc¹wJžáæ °A©Ð	¿'"÷'¯1|8ùàbOÑ%29«jå+[J}|Ð $]jË	”|M‚’Ã­f¦QP]º{tuKÌ
¦ã4ªÒ5¢IÇY7® _=b
w!üÙÔ:ªžÁõt7ž”‘ßãï(„‚,k²ù¯^ô¬U<U^ØtôjDW<¤ÒWÕdv†ô1•:¤8{¡WyóŠÒÔ^æ«Io³'ËÖÖ÷>M"]Ì'³zn`<6~5Ë¯ìã(PÈ¯éàÊæL’#SR42¿‹aÝ¡úƒ(f–hv8R)³ÀœqkQ,E‡„ÞØ@¢÷8#È }4)’Œt†(Zy»ýTV˜tH£ÒÜßËZŒÅ¶?ä1ëI†{øÏØÃÈ'íº ÷|í2ˆOj@¬“ïíÉŽr
ˆ‘\„uI8Í'GÓplÐ‘ößã±ðíì3úÞS€¯|]9è5þ-¢R¦éŠ^IrQ ÉŒ‡ Na)R#œ :ðõk¼›-5àÕRü@5“òÿ©ç·áNv‘M Ÿ÷¬½áÅñá†5Ú1Qé9Ž¢½#4÷²â:³ƒßTtÿÈ­è.…¿à~A0‚’¾•û•¬Ùs˜/ìýãB(aUòdvwï(¾0î-Ì{<ÑOÅÊ„Ÿ¸ýA7¶6Âp±ÂIh†ƒŒ0Ýùœø.ú"œ&ƒy·G;²µàš¹š¸Ve-»{Ó)‘nÔ+~Þjl-•m«å—ã“Lb’Ktö EÃÙè$áQSÅûÊ”iè‘D•W‘&z«Ñ·dH¾dÚÜîŠëÃKž}¢ßxöx¼/»÷Ôf€³
&˜Í	N˜uì8 žËP¦/3á×à#¾
`ÈhÑˆnSyóƒ?z¯Ra[8gZ<gPDpîZáŒÚÉ¢WaÌKšf~UàKúê}äWÑèÁìlÁdÒæÍRØ"÷Ÿ¼
Fæ.iáŒ¶³ÊÓÔó]>êWiX¾ÃW/€¥?Ê«Ä¼¤¥¢€9ã“Çšyi_…WÛ ­9»£(^‘;YôêÎÜÒx‘Áú|åùÃ,¸Ÿe˜‰ßž{p€#ëØ<kÑ¬'÷bWQft_žª
ñ4NWúáÝ¡ªE«1]{U2&uºÚÙ¹©õ»g‡˜ú!ðk(mxº%"ÞÅs)‘´4¼]r&ªªÞu/‹?qOÛ¬ÆÌäJÞÑÙ	æ<E
Ój¨$F©BÏ2Ö‰xk†º›S[à½ôÓ«î1~£›.«27Þ¬]¤ è?•øâÉµÑŽæmÞ$Î¢˜¸Ì†ð;Ñ›ÈJÇ¯üËp\¸ ùÜ£…ðYÂQéóD¾Kæ}áS‹Y/
Ù„ä$>o@nwð'âÖL7Üˆl@ÇƒbQÉ¦RÝN‹åÐ»Rêˆì·>mN¿mX³þD1L_õÆ0v#²Š®3ézRÌÝ}XÀ/UP\´6“\[Ä‚-Þ`à[Œ”‹qB\5§¤?(.{3Š¨v3æ¶©òKŒd6DÌXowEÒïø¸Q>j%%–˜` '‹*‡{¢ @×ŒN¥²Àè #tÈ•Û/QŽ€Ìòá Ça#y\Äu "¹:‚pnód8(lÆ£ñÍè‚#1Ky
ÆBdŠ%p^4þÐ­Ü—øL• q·È?Od_X
ë1ªÞ£È,‡¦töÂ*"_Ãþ'¿è	´ôa³ÄÌCœ´˜âª³U1÷`*K‡ê‡Ò?žà/þúæôEß\Gwéêö *ã\›˜d(_Ì8å?ú7Ð¤«@
¼,ØyŒù§açÃJ_ì°²‰]!/çŸ™ò¿ì=zü”öÎÿØ¯°Ý'> âOãà‹§½*F|)÷	*·V{»4ZÜÝ+žžî™ð´ÚŒ^ßþ„áV¿ƒ¥é¬f	³ø¸KKŒŽÅ‚©ç^ßWh ^á‹™ÿÂÞ¾Ë$/OÎ0¤Êüs‹:(~nV´=§÷ÞŠ@ˆ‚o§¡s&ÈNª4	a5 Wrêæµ&ÃíOÔo§a…T§|èõ=áµTƒ±€zÐè'SÞ¨ðÕ˜q™«1ój8—F¥¦S¥¦ãE©él\tãÙk¡-©Û1pž³g*TãMLÀÃmõæðôôðgŠ”Ð´o‰•_Ôo&„ÀÆ]È‹/b±bw8‘;Ö2ešö6$~ánËGÕ
½áf(Õoïs7PúK›è¶•c Ào¿ÁÒ>ìuå÷|dKÄ°w£^¦èË‡pùËÎžÖ÷ØáÅ†M^š¨ñØÛÎ~ãg<žQ¢^ÌðE›Ì>,¡fÃ<Møµ“©iÉ³H†yLìrxbm\´âÓAt`/øñŒqÆƒc,þWÅˆ C'”Àb¶ƒ[Ë-È½×–WÈé2[N|Óbpjg¯žš¼`kW.'ÓMæ/EyåšX$¡ ,1Ø¤Ðä`H¹¢gÙˆÒMn0 ´'¤á“Î¹ªœDÏ[¼QEž­}²¹I¶8‚­E v·"{a·èÃâÀÞ<>h¡a­×ï“€À	çJ!GöÀ.-²R@ŒH4²6‰f-Ÿá&vqS¬ÃPrY j'cQ»…™Š$[M‘€?$.^Ôª›¢BW7D!ŽÙºTðâ’¬·%˜Aî=#ñá<as&*›6Ll;÷ip,‹–À/ft·ŠŽ"Kû™gn¯‘ü3ˆ"DîF¡:µ“Õh€B˜!4
a*)’jà„Uc” +#5*Ã
SuP-Ä@­„`ßÜ¸®ÚU£Eþ¤~-zµº¦–Ç° ¼añ„Ão2›,ò¾JŒž¿sJ0ñH;Yäìì=!Á2kgxp%6@M¹„ š”/aÁ™­\™]µ	„µgW_:íÎ{VŸóÇz\Z†0ÄN}¿é5vxˆ|¬PH—è^u<´ðË
®¸·'äb~D¢;ÿw¿v»ÀÍàSð<sM¹LK>ãp€RŸ‰^þ×QðyäœúUw$y¶­&´a”Q?Ï‘2êqã@ ÿ…PÉÂ*Ùg"ŠºÉDR@·Õg"RÃÿ<
¾Tõ~å]L¦ÓêºdJÔJõµ#±Cg -‘St9§_I-@X;Ë"µ  ñ-­}ˆXe‰	XŸ„ÌÅn\Ýù"Ì¨ò0¼º˜r:àªÎóà†{“Ÿ„¼> ù2K yë™) ³N
Äi<pFúŒ€9ûZÇÑáÔÞå5A äw¿b5R¸0x$àGÇáphq …Ç(ÐÏ^b¤1YFp Hä‰òÊÃa¤…Ž'ámb‡…½Ì·HD¿Æ•` ¸L ðWß™ÏùÄ‚úA9ÔŒd,øçæÕX5ôL(†ÎæM»â³5+™*ÔIžG±PF<fvºŽ†Ì¬£"“çÝ«¶×¦{íå~ãú»~:’ê4Ûr'PÇ!”vßaÆr9õØXíZ„”Ef	iž5Ò²øh2ôêï!ä`™NÇx!:ÆBþ•é—c—··“ÊGà$ñw8¾èáÍßÛ2xCpâ9ÿO©#Ë×£Õ*:n¼‰?i™ñ†!ŒþøªXôb´óÉÿx¶p%&š!@ZîÔj¹SÖò½XÊØ¸Ö[¡B:ív\kBNêxgÍœø\¶æ}<Ø¿·ZrùÕ1Äê¤r|¾0tŠÑ7|šeå•g3>—îø ÍÛ[þDivoïŠBÎÚ:]Ò±¢Æróš\ne}ªÜ«áMq½A].úæ¬¥¥ì3ù¼ÇA’öáàÌY*/l2ãÉøãSs¨Þôv³CÊÅÃÜáÐ h]L`½×¨/Î¯8_yÎýÌ>õ
 Ý`í˜~ c'tásâ¥R5§yv—/vø.»—ö9ª©d
œŒÃ<8AÜTÊ˜‡}½×T—–ÞïÊúýÇ•ÎÅ>°¼*+ýBëìKfó{ÒÜŒ·)ÝfO‚Íùc·wIal6¸5½¹˜÷0A;¶—Ï>²ÖUÿ’¿/ÈÌµ›½Á¬]h\Ò…½=‡YÄ)ïCIîh;&øûpàüL‡zOáø¥³üÃ ˜[¯6É °&¯u¦y‹
eì]€(¦·T¿ìT<‚ý`8 JIŠˆ Gì“ìVCT‘Vò~ä7ýša3JÞÊGÓ¹‡|+Ì`\Éè£ËÉXÃ_|ÜÄmýKÄÓ=NÕã“ÆÌ G:w¦œK®âÁ„4”òÒ{œùÊEjÕ=R³O3U¡\$ä­*Ç9ÒàkçHƒOQÕ©WU)ÕtÕ©W•õ3_ýâ¢!Ï¼€l³D 5"ŸªjUWôÁUÅ§ÐÍ(WèêxcôÁ¾§§?±Î(–ì5R‡S9˜—G¨¾¸¬7
}nl^›iáhf…#»Ýìóôýûnny»„[^,»©×SûzmŽwÆÖt›öæ}îõÉu('Åú "„9s7ÈmœJ¸´föabÎùY>âÙ«<|]”ñ&ŠàêIÞÄ1$ŠK!ç%µDgúØœé˜sÑq=‰ŽsîÝÌLs¦{¾ÚÓù”r6pBPô:)"äép=#i
èÎ2ÊÂäb½Î`ìsØ=ûDHo€3œ6ê©Õß)+0öªþj‘ðªŽS¬ Ò@Êîê.~pç9>U‰^ªªe@èƒCŸþ`6Ï
ðRÿ=T²TN³<BËiÎí©Ã{`9÷ ÙtÞÃlëwÀ|˜=Â­	o¯póýÖÌÇxCÌ‡=sWâ>Lí»e?ÖÏwó^±I%Ç)·à3×èÑ¨tNò='3:ÓÔÉË]HB“¥]”ìß$¦I§XÁ@ªž‚›]O†ý"O,äq;tµÎâ¬Ò  ,0Þ{`’B1„lÖ0xrÂßé0Ç[o¤-±HäWWùåÜâ¬Á	¾
züùrxSP8^ÃÉ¹W‡óuÔ†)Ï‹¸k˜s:W9ÔEqDûÁ<êÐ®$lù°a‚ãßZ%Ò£ Jöi}ÜR¨8ÁfŠ“;ËXu6éöjì|Rí4›4üCíqjZ†µXaÈzoÉzÐZÿç©=Ì2t³oÎcÝ,¯+rTùn9®×ÏgLÑAk“l¶ï[ÎØðÀtÄ01SÖ›.ðˆCeDþyÀÑíÔ ™\Ã°éuŒ)cr•Òƒ8›H	®ÏæYwþÚ»/Úc8Ë¼/É4{óÈ©LnF}ÿ6%ª#µÉJeÿé|`Sh? ÁpË%hž¥ÔVèeBã)„xÈq^AËü¦V÷jˆ73èß…ÇþN¶lKy¶ç;ô³¿9¬àéÍ¼k=É‰tVà°=å­Ý/|gq¯Qtâã¯á–heùoî<áöÀót¶®ÚøEû}âsp`C‡}çX—í¥_è<»º¯ ]&MËù—~=1u=ªÁïùv	^nFÓ3‹gûóŒ×Þ<ïz½hFý4 ¹žÑ9ël:Ô»iëû“×‡§?ÿ0/º¸ýÆy^è7F°mî´ÛmŒÓ´·mnË~ç}ËZ‡ÖPŠü)ÛªìÓºç,‘®Ü7x¯(zi@$IÅÃí¼ãE)A(mb­”¸f|Ìä\¬LiÓ—šT‚HÛÖOreØÎæ™2ÙÍf€¯0‹„@†	Qá@O„ù&Ø-â2<në¾,ZÇé¢†ˆÐÇîe´Æ"Þª:‚a­ðt4î‹Ö
'.$è«¸²$|¸žy¿{ƒ7×ñ7æ°à¸`ø„´nØ»kæ;f4ÁßÄ}¥€Ó84M±ÝùGÌ²Hñ¦`y·=ÌpÅâ¢ýÚòêÜ¤*áK$IEºtò§ë&Ä^N¦—“~nLa)w²gd[”/S,©Î›ž ’%È3•rð
Õ<G’hÆË?ÈôiËS³ÞŒ(	;@ò~Îˆg²Nög›Å'{
?ÿzJ?ƒŸG§Ç‡çRq„ÅŸggÝ“Ówg§ð~ý•~á«¿œ¾•Wð‹~œ¾9ÿñY"È5Þã4q $â5fU,FFs…¶Üç˜,&Ï.~LL&‚-ÝÞ@5dÉ²ë›yÀ–DÐN„ÊCs$2÷‚ÝŽMDÅ’îÑ÷ê+ïèú™¾,ŽU¤£[ôÙqdªAŽ¡4Ñaã“Õ²Îªe5éãsêÀéuK@c!û;UÐ@ÚEnÞ\ŸG^p—_Mü³Þ|Ž¾Vqhïk¾ÓN8'N°;¦F=@	Ù"Ž¾—ºòŒ§&GÙ›Œ‡_âËËU—žÖòù!1tL²æÁO0>yj`MáÌ·2ñTTóeã™{XqH‰eñ·­“ì×1É'”%O¾eý	ÔùÛm>ÀéNH¡œ¹VnõÇ2Ü–ˆŠšÎ%í
p¯¼…á^«˜è,ïa÷djYÙÐ‹©~»êK„s/¹^ã4ï¾ÊõÄ8ëÃúœÝŒJ=t[YNÂUQÐkGv7Ãâ^y£U¦‰¹kÎ¦žzÅz¿Mh÷•#ÎWÅ„·—SÂëÙêÇP½ÀQ‚áËXòy@˜zµ7•¾êâ÷Êéé`ÝDtzƒG7‚ùç@ýÃKêËœ¾ùÏ¾Š ™Ié€}ýÅ ò&:ó^­;<'¦Eð¡÷ákz^0šžèUØ/õÑ¼ZwüßUtû+E·¿]šdÁ6—ê`íñ÷Ë¯°‡·×ý)ês5.´—ç¹Î$ÕuˆS1Š/Ä»DÝ´Iïø@BÂãÆÝvÖÎÓ–Nð5h _…‰3f_Z°ÓûóÓ†¢”s@ìG©.ä\ðAXc­|ÕåUj©šm=üŽÐ«¤u""±Þ7WG}E¥z\RËªÕ¬JÏjÂß;¸Á•íæò ¢ÕµoAKkEåi<Áë¾Çß¿;û¹n’Ý¯Š]—\C™áÁ‹½øø†‰÷ß›Äº$®±åŒMë~2ü‚wñe×¥Ü¶ŠUî ×MÄpÄtO‘D€_Z-úñž‚V£¹j’Ï—{s×„˜FC
®óá´Œ'øÖã)§Zì>¥cIRf¥Ì9;qòšà×o²§øøæÝ¹<+…õª)F¬¦ÆígÏþå,ŸNÄž.¶}¥‰Tž©Î×#ìd_}ŽSòJrÜšùÉÂ éq@‚7I"Þ¶§Ù:Ÿ¹™®Rz{Å}éû½™#á©ûì´Æ‚nZOy–Z`Ëô)åùüÈGÊ1‰)ÄFeˆY 5ó²lÛ}Á±×¤™…íÖ¨9CeÆ2±xG’š³ûL¬ñ\)…·Òq½í„½×ð£Í¦U¢nÒÛ¨&ô°zÁX-âŸ´¶Ä0u
pé²¸#fl'·Ûüj8ì³úqÛ. ÜžÏ÷Aw<”°·ß>Ìþ’ÏÅ­‘nÒôu[»ÙëÉÌàPd=‰õ™©XŸ»ÙÃo1(ÑX7›ºÉoPYé©[Jù6A:1bï¦hº%Ü=¸eñ×H¡Lèƒh°«1SÇœk”È@w5TŽ[3òÏ…”™ÐŸË‘´¨Ëe;jh[¯ñÒ,DŒš²ºŒ<-j?½xÅÑ¼JÚ¤t“@‹•S‘M¾	…vGI²vR¥Ùi½ôI¼Y “­Ò(y”n“éö‘˜p£pƒŠÍ=e;|¤S¡À EÑd„áE»TÅ6eKmU^¶Õ$¤ÖFñŽiÿÇÑÂ:ÑZ ÒØô:jÉm£þÈ›Ù¶ZÓëÎPåccZi:Ö«÷ñ›dÂŸˆmƒ²F§pÁ€–ì³ä`_Y9‰‚æÒpé)àÉ`<½™o‰ÐB–,³+,ØFÁSÝLÎÑ¨ï#Ýw;^ÉÙpË¾#­ ¶ëDˆÛÀh0ŒÛh"gã&*Dâÿ`nï+-b5dŠ¢pfõªhRB3•ØWj{¥÷mKh~ï£!GpXVÞ{eí¶"e·Þžž|~|°EšñøñAw¾M¿¦óü4«\C!±êÃb(	 ý«@Ñî1Äõü	÷œß{E9[­ÖŒJÚë1%|Ë"+…kXžBkW”gÍ®GÞÜàWƒz±\™®\¢N•«¡àIªÿS÷V¿Á¢¬hÁ
å¬o–Ú½ä*ý—L(Ë‡=è“)%Õ…Ò­èÊ%ñÜ6•mpQ>AÚûÑ}í¹–¡”éÒ¼÷­ž\#¶éBP`¤êÞÎýí^J WýÞ—æíŸ„…È%M±§ö‹Ó›¶À85¹êVG$zd5Ñnyrø8¼Én
ÃrY¯«Ðë,ö ²/«nE°‡Wk0Yê.Ä"_=«Vº2¤Å®ÃäTÉ/„ÉãÎuöq‘ãuÁäL§¸ãW“çxÄ»)I*ê@Ìi?x@°¹g5X˜{±,ëèc	lÝå¿Ü1ÞFÂ(ë­ô©øSºC[q¼O%Ý•0”ÁÛ
ÔO+Td¨$L(ç|5©Žøiê÷+f»M{DvÄ-Xo¥~T æËÇÁeÎV]i5âÏ2éN¼i”“¹ !½Æ¢?iÛt§´?(ŠÁh0ìÑ©íœ:­mIÈ c/¿¶Œ©Ç™k¶ãÛG½>ÖÞ(ñ¦_*)ç.{4„¥‘¤`ÓâªÛ½y€Q–Ñön5…°³äpŒ)òÓ†ÓÝÞqHp3
ÙtW™2^‡ªO£º”]@%ê¶ÙÆêÐéc>C½Îú¹à>‹Y8±Ö÷’]|å:5n?QŸk_‘=òAÔ–¢.S2³)—ÜJ¸ä0­—½Ëk;EØoT’å¢þ[xÝKöY‡;¦LÆ<Kxcþ·¿	—Èec?Gh^ùI¦\Óž%Ž)GÆÍz®ì¶9Fˆ‘ß`Ú½0éMXå¸a—¼õûãmÂoÞOk÷|’­gÝnlëñï[—Û:êÊ½áÎVò†[£¯Ù&ƒ@T9b,ðÃø={\ü¸ß¬lÓŒð\‹)2ž"žå“[*µ&'X]ccÜÓ6KÝ°@=¤6=ú–ÇUÍ¥·0XÞÚ^¹)ûXUè“µlx:—«g7¥S­Rï.Ö¸®í0Ÿòõã­pùÍ‡X©álmQUŠüË›OÏ$§ ':¯1ËHÓHp“›bøÅ¥µ@Ün@¶þÒÂ+Å.†CA;LÅäŸX•ÒE>ÿ”ƒy&Õà–ƒÿOóËL“ÖÂ¾ÅVé%j,ÂõH¶ûÂª%ÌÍî²gØŠ¶
CÀÜÎ»Ù¡Ã@ÎF7@•«	®Íz‚£^?×aî©X»q+‘`^ó4Êš2³…õ=Øa	Ä];ìQôZrE,Îùø ;Þnvöö¨u°]pu¿8‰ íè²òò¡XÔý¼'qQ\ÙhcêäÍbZL]­žf{ÛØ,þ•3Ä@Il€‚z”à7Ô!ð×£eùnÆ»¶ŒögË{w–¼F,Ç`uÍ×øàÞãSPi£kZá?¨6á)3Žº¦“8áƒª	OA?{Ã­ô†ÞÐoÂè¸Aø—²è/wûÅrÚÖM$9ä,²(bˆ­YÆûaCì®‚u$p›RÄÙzž”y¥˜f½=˜ð\ÁÝoIÎ¦’‡1ÒÎI³Û–³`ò@är;ÞG`óžxëÙNS·eÝó­¸v™÷Ä¬È¸ÜšÿˆD,ž¤†¹ÓµÔ_?{â9÷ƒ}GÂ9x,‹ºQ¢‚ñüí7íLw{Vç1ü¯}î¼5CÕº Iyòé¶Á2p…¿Þ–‰"'o1„@K°R÷lŒ”šÌÔÉ˜#?QDú<Û§“9Êpp‚ÉnÆ0Ô`F{Ã<ñ¦ˆyô@g( 2J5ÏàŸm¡âTà…ý	GŽ¥pÄÐe¯-_‰oJþ/É· íÑ¸Oa^õ>F7£ìµ2÷‚¢Ì5_½~ñ×m¥\qAÝt*2LÄÙÐ­
hîƒœÃcóðüç·ÇÛþ~”côþA¡‚–ü<iÙ ‘bž£Á€t^5	Ô÷‚NA@Q(Æán‰û:¥Ô/‰ñjž¾ÑŽLƒ2?š·LÐ¿Á‡`ŸiÈ³‹fá×›g8´d[¨Ž¬ç{ãÂšÀ-oßÅVföÐ< Éç¹NËíõü ³¡+'{,¾Hé[…ëó²½#&Š³Âô*FÏm÷ü\¹oì_mE¾dU÷Ó +Î¨Ð¹ÔXp­¾K)îô½H}P‚3ÛªNãì_×í%2NÓœnÁŒ“x|V¿?ó8¹l6ð•°úiËÊS[«£	–LÇ\;;(‹(ß\(@¥ží¹+qãÀC)QsZ-~ÜÎ®{´•]ˆ¹v¹tÀ²¥˜hytˆ?Þzcññ’]â;;fÒ×VßYIëÖüÓùŽõl&…­ÙSìZr{‰Ìso¯që_£ŠT¼×«æ
—ïTIb©dŒÖæpBÿ‰îW/ÄópU,T¨öêÁ"¯®¦T†ý8WÅäjþ	õJÄSà¡~$Íg¯\ä(ÓÌÜÄóçÃ}¡ŽÇýØ3/óì/³ÉÍ´ -Ì`¿çÄ¤ôÆôXÜ\_Šy>BÎ,@K3 ªÈ‡x©•2¼æ‰#WÁâfŠÁ‘‡–Mã‚aÞä‹a5ƒ¿0)‚XUÐ“är–cîØ²î¤8´\G<8RYl£˜ÄC¢!,IrBÁ.˜Æ2Fz+»¶Hû1jÐÁ.‡ïx/óŽ"0L¯cµ¿GA½4KoÍ|Ä
+R‘€Áa$^Mî
‡E¾?¸wž™€¼ç”rƒOvŒç†ËñyýOŽ÷´··³‘#3
 [ÞÊ{„¯‚,üzÙ˜Ûq~;¤BrœƒyOœ‡}
øÁÉ„b¶)®XÝ=\m‹&#7n¹%ìÒ°Åf®&ªÑôáj7ªÚžc³ì$»3½—[ôÊT^šr`â¯T8 nì-GoÅ˜tjq	Þ°&ab•KnRD2uü~if¦RóvO½Ý[•xÀ?cfÀ?c^ÀSö¤,£ê)m?ÒÏŸ#ïG
’7œì˜É‘°mz€Ö`w
7¬Aa‡ž{”Ryî/× ÙK
-ñuøl‘ÊÎnÚ.‚ä"èVš«þ`fµ‹›LªÐÓQ4`÷ žyŽ9
ô‘Ä
åÊì…ÝˆStêäó0ž£LòÈÉU¡õ@sÕ›ÓW$³”pþ‰f"ÚÂâOZ«YƒéËè™Ó¦¬:±q²»@ŸgÙ·]™Ï°CœœvÏÎ»§G?½y?ÏßQänòúÆ˜Ü¿Q¸¬.¥êË+Ìa6ìaõÐ>bg´!N=øXÞÒmòVy(°ŸU[xG±PÁ:8Š<[i‰Z”ˆÀ,ˆÑÒTT² RZ?¡{	ƒ£•F£ç.à‘Hà„P&†µ@(o,|­¡L4o!úŸüï-Xe“Š(¦½aà=<4¤ÙÐ2³akçëM]žàuýœ ç¦—„á·çÙOÇ§ß¿9;~æ
/ÊÖP|Ì/¯ÃøF—˜tÇ¬ôã£ó“Ÿàê¼»'/Ž_ŸŸüðóS´9èº4´JR•áï1þ5Õ»/Þ¼=>í¾=<=|… ‚¸:8ÇïÙÈHòð>hÿ×c2!^@÷ÉE\nlŒRfÏö$ç0Â'Æ•î…)a™ÚQ˜*å4;;?=>|u¶"É¤öŠÛßóéU¿%ÞÖ—hª³÷„âéï¬ÚäéñÙ›w§GÇÔ¨²|×9êgtÄët…H<p}-§ïô")!áKûeF}[³:HÔC	B`Û¨„àc;I~`›W–\Ò¶¾;3<.Ágž4d%¡ÀLoÏ_óí–úÓR©É'_…
ÕDá ©ŽguJz4aŽ8fM•ÌÚµug¹ÒÊÙ…
ô5ý	j+g“R
°®³éè‚®ÚIðH,'HØj‹ì^"‹yÇ :]Öôë¡dc…šX ‰¤ÀHßü`k’¤—!Š^¤P„ UBîýÉ§ñ†¯[b´ÿ—Ò”äGG¾fÇþÿNŸh„üÿ«QMí €X{1¢`ûéz Ç¨Ue
Ät6¹\8iî“ÍN>‘ÀÉ>ç—7ü…EF''ôž ´
…Ó¢mrÒw÷œ&Ø ê$ÿHÌœ\ºÖ“•oÇCqÅæ›N¶Mz?Ï|o0˜ØÚ‚1(20/¬¾ûìv‰õàêÒâùK»µÿ>;Ã‚¸BÉ¸yòú‡mqkµP5å¦(lý”48öåˆœÎ®/æºÉÎû·2€Í·§?~¾Ü”üt³‚Ý\'™o;ØË‹¡(¢¹	±óârêáýè=¶yvôÖP)Á1úØ˜ì‹ÖdP>Jéæ†EIjúÝ»“0HýüsÖâÍ€³RAÆL“'ã†/”ÆÉjAy Ç¡CW§ÜË›L;ÔÖ€kÐoörPÌ91¤YÛÖ²Â¤‹Ðºæ½ïíëë±<Æ¬ÓÒ6Š0ãQß‚Pn2¸X5Ltû›æ }*¬‡ð“Rz±½àj`•
 Öþ&°Î9ärj#Øe¬Wƒ­FC™®"Îš}%£ªa/%Â©aVxt÷…:ú¾!¼¡Jn†îºè­Í8×ë¥kVGP{Ž­¼35ðW±³zã‚4ð|…\µoH{Ë9†P—eXo °<ûì	vïÃ%‡D¡óŒ:¶uç(­v´j÷¾T£d©faÐ°ÑGZ-è I5	 –jÇ[Ü[”!Zm
©vÎòÆË­CZ)”°8ó /y9™=B^â²4[ˆ±òÀÚ6{Ägó’VÉŠ2GÚgÃô½þå$Sc9ÿßzîÆ–bY½Øtu3\ÃE¥i¯(æ×³›2¦—ÒÀõú£IAQš¾Sq¿ÂrÀÙ,¿š&RotmæÒ(ä¶DzùwÉOiIÛ™Ï>bNf<R“9ßX)Ãq¨O¾}coäp<ÒÒ¤oRÍ7Í?ìÖ¬ëÕã}PU—¢î÷?íéÎ“/n¶ÇÜH¢ð~\x¿´p§—†w¥Å;‰âòâ	Ä;å˜w¨w*p?H?(/þ(QüQº8‹™uFÉ¤Ñ£EZ3ÞŒo”÷‰Í\!W.šöÃÙ?¬öiV][‹%æ‡CÆò¶‚ïÃaª9ö]i	×k¢ü´‰§´Y/…‘\1‘%ñdÐžC=zlj{GçÝ¬g6´*31U…ó`Ôï¢†ÇµW+eh…ƒn^–6$2¾Ô°%9«ãb[¤xg«]Æ½U¾Øü÷ïiß{ê´ýÇŽÿèWíuüÇG¤¡&pZ]\îNÞ—0§Útx]Yöe˜Í5öb=)ñƒf­ýê2è-òSÂrM¡†?¬3 Âˆ)ShÊ=2ºÑ$Óþê8Zý´ï=uÚþcÇô«v‚ºþã#÷èF«§î³oJ¬ÆzÈ©xúð‡Æ/%¯®Ùøá:owå ÆyƒEÊã™¾(Åœ‚5kª 4œÃ8b±7”öhnX3«úèƒ¼—§ÐÌ
I_µ<µÖføàÞãS`è^ÓÍÔÀ^^f.·æŠàr‚I¥ÇÔå5Ùw2ý´Úuð¶€¸ÏÁjÑÔÛ3•ñƒòŸƒ§¸æ¾®¹¯jî{5÷ãš¶š*ªf§½£jvÚ‰ªUõ‘®ÚñªvUUW¿~¬«îyU]í¨¾~ýŸºê¾W5Õ×Uõ‰®zàU=HT}¤ªþ—®úÈ«ú(ÈdH»Q‹¸'òŠ´¾˜n›Â÷ôT±,ÿa”úðv·“©ä”"Gm;5È©Ì^î¸8mœ„ƒ´DV‘©zz÷Èƒz&>¢©g“ÕI EùïSèØ¤©sùÿüuarºÍ{«JˆÜöçv‡b!™®@Spâçe…÷La
Ê—U9ïŒpiÒ·“å\¥Ó™À{3$¿‡à¼Lb‰\Nn5¤SLéÕ²T¢)x;~*1F,þ—N?žU‚˜È’$*dpºOë8ŒLË÷©ÙEï\Š“!FÎ Î9ah’Ê5AýÑªMA^qçä´à"4›&+ËÚ¤HSîk!dUi‘|NÃæEbê.&n„9'¶a|KÐGÑî 0[ï‡#“NFæ$iÌHæ]¾+›‚„«ÅÓwŠNN’j]'jÎ‚E©G¼8å’r¤±U•g$>O8Õˆ9æVJ9âvçZD,{î'¾ N¹£K«ŒÄEëÂQF“'52š¢­¤qšAáýŠÂû~~£3Löfm˜Þ„*¢kõl&vw½EZ•kK)ÓiG¥;¥;Qé½ŠÒÑuö+JïG¥*JD¥U”~ä•)§;*âÒFò>ÉD#¼Jkd‘`8¤¢GA°zßµZ~jÑÈÓN>¾'	Ï¬àª_øò¨•Îtºœ|CÙHÉ:Nv	ËDoîX¼ŸêRž¤j>¨£ÎÊ¡ÜU9uÔÆ‰G(?bc	ÁdVøDS/Kç(VPÄÞV0({|[AHU2&¦|¬&èâ|%J!k£½Ï'h1Œ?ðŠ'_Ö(?]¾?×	AÍþœmâ­§ÙÖÉþÍ^Ž¦Mƒ²ïÆ¤ßÚ†òæõSŒµ>î£»Œx7qíz©SÍ„[oê”´íØ§˜³$’sãS¨ÌŽEC_N¿[°¡.}i!+6"‰
'2À”ñX%\5sP*×ð})y"LÙÂ0~¾–*¶Ÿ·¦2lì‰¬1Òyd|5†¢‡Ó<&X&
†~Šâ7ÅÔ*	B®

•:è<ß¦{fÂv^ªå%zé§½èéq¯‘HéâÒÃÔiï%ÓÅ¬dY×§Éæ<J9':™ÍZÆ‰÷ärà{uz)N>zyJ7€ÉÍ‡ë“!F"‹êt¶CZÍÃú}Ñö ý?¤DÀƒÜ-1hßºSz ªŠòq÷zRÌÇ_ÎÝØ*ËiBõ6ž>ò“Ü+Û*`€÷?ò¦õ¨—/%NGCÑr‹¤dÅb7;ÀtÃÁùªÉ1rq3öwƒ\c­ïð, ÍEH‡j€ó³wo™v‡:‚g²Y¨g©ÞŽ"îâQøÏ%+æÑ¡½(¦+ôÛU*ŒZ£a ÁŽ#ÒûÇ¦kµpê“¬%NC(t?~}.*œØ¹ÅŒ@8±û×@­i÷×üË: ±Öÿ"dƒõþâÇÖ¯ZG?¾%Ì3hHADá.us˜´­ï±ÙÃt¯ÌéTìËœ_B7Ù9 · ¿‚ne×ùç^v¼Æò½K¼u½í\°/rëÒ?0Š eD†Ç µïŒ«ÑK?0m;èa½â&šû <ÙAG•Ç’Q9y=êqp Nvu3¶^#8K"p>ëüPà£«Ðx2Æ‘¨Èþñ°µ÷Øƒ=yØr°“íËÃ#Åãkä4Ó9.Ïëÿ÷ººÕ]ò;	Ø	dt˜æÏÂo á—ÇOÞ?“¥	Œ?ˆ}œt¿töè½wïr†t€÷÷ší—;âÂYœJÚõƒÜ-&4TmÈ¨=si‹Já@,ô^à”ƒbcW ;…¿½ï·^t•³óS
&- ·±3kÑ«ÿÌÐ|‹Ý°Ž5*V;¦óÎŽ ŽäíLÙ‡¢Ü<|èˆ<Âµæf|%ñO…Õ	w¢]—ìOÍZ'Í¥©{Ã¸>Ê=™OÄÕ––ÏÀÝAPQWïP3úâÿ‰šu¯¾ðJÕÝ}×Ž·Ô÷ž¹Zê¶¹Äê©ŸÍ×ûøÙ¨–K;…‹Pœ¿êó%Ð›°ÈUbvÄ3‘Ù‚n²9¸ÚºW»O*ûqðdÅ~Àþ´†~ì×îÇãƒÊ~<>X±¸µÞªú^°}éÇX	ûÏ47•½9fÄBoÀ/MïkõÝ­-ÝÓÔòrçƒoäSõ¨{®Üö=ûd#”%”±÷‰?äxHõ¥£ãµéàøøYÁÞ€6v¡1Áã”3ŒHdmïdƒð˜È.‘Ô˜?˜:² Wrª ï¿y¾§Äÿ¢¸ì¯šjGÿeð™¹öÞç-Ü]·q:'¡óë¯Š¯ýYg®œtŽ@¿¸¾~óÍ{ŒMéßÛ—2yG—ûÏ}Ê¦mw‰iÓüª/LÅÛe´c¬•éë¾T²óC5{Ÿ¨£z4¹ö‰K'­ÌµpCÖÊ¨f#óä)	%éñÔæ@µ§7E±¦&*|°4˜ŸÀ<)¶þ¥ÒÑÚC¦J½âñÄš¾¬¤ðÛ5v×-¹wàJÞ3vbÅÒõ|¹¤¢^“õöõÇ]~Ýû»£YI’uŒ\úâÇZ§¸ ž~U<õ€°V©ˆJw¬îNB:¢+]eân3("ñõáÕ¤$„yà»º2’	ÂÛO	 P¹”«§[òÙï›.¼ÛßëÎ«˜}WŠø ˆ½Ì¨—HØß…l<”	ÒT3åPÍ~UÜ5/Û³Àæà/9ÿ’4>FWèôa|OC¶Þªyˆ®¹˜ãu‡Qåæ~{&ðÛæ82+µ”#0¬µe«‰‹k#óãÅ¤!>;P$ ¯GÿµÄ±°ÍÀ^OöW@@øÝÚìW Ði¯‚pªu0¨
S*sñÕÆryËBw™ød¯ç}Âtƒc·w²°ß­ŒãA’©Sí<á=Àô¤ýžZâz¨¨aÃÎNFvžÌ%ƒ·‘4j+¼ù5_Ôû?Y©®fóÀ|Wmù"ŸªÒU¥‘h=§¨â!nV^²8¼\Jàa¯ƒfÄÌ¨QŒ ÈöLEÓ
ÛúÄQÞog¿A£5J"UßcFÑ'ËTÙ£*ÈÿÔ¯³OuöÌü4ºO$(!ðÑéQ6£í’Hf4õîÐ‰‰¿ì$hô¥”à†5ÂsbPðYž5iá~sßŽàN†í*øâMÀ¬“ê–m®ŒB^x>,îV¹|þòŒfä`Ì¬ÑÛ³ÿæ ˜Ûäi4 ›R ãöŠJ`Áby/k1S`Þ×
ä2µnB‹líN››‚“€¢¤KÕ32½v}x‡Ž!Xû¿ågÝz&EÎMúmuéõã"ŸÑð¯Éxˆ[Ç„Ø ¾ì™R­¹.ÓP#´@¡·¬Ò~QIY•úk!æ3ï	{*o¬…Ëi½ÍêwiM¸°Î|c¯Á´¬Ã,#Vx=mÅÝ-£ö¦ðdx“d“ª›qÓÚo‹œ÷2Ö¢-yG®É!fÚ÷Ò“Žx¢ºZ3êøŽÔàøÃWƒK°Æ\Õ Èdùá×b«;—w;Æxè×°À:6¼}»Ó°?ƒzKÚjiêùr	S«?øjG¦Ä&Å_ãGªñ`¾#E¿l ÆÝQ?Ýìë‰J$»bIËïãóç]ñ5êiÝ¨)óMv°QÝèzÑ@/JI¯³ïž;Ê$›c¨[g¿¦S<ëòÏä›'m­€åtùkT½Þ½ÚUmq5W‚Üz³i]R¦«ˆlî´-óVg=íÚ©ïùb44ÆÕêá2%ÃþƒÁ#Ò—Í.º+#€õc¦î[VYV™>‡®óû5‡MæŸ"NÏ©Ê§¼QŠlÜ—T—Ue¸HPÓ"sÆÞ¯Þ<²—d¼[Xr¶Èµ2L˜‹ƒ&¯[Eiêf[0÷ZlÛ9‹˜%TP«±\k^V(¥8_TÖÓ/*¼>õy¢ûåtž` àõšôèw#	%º™CVE^"þ-Ê—	µL, EÀtý
ýøÿ¡ì_Èà‹WUvO¸Šd«H´JHVf¢ü„&iyY»Å¿‘H$ÀZ}…¹¡7äÇÝYdÜÙ”Ð€;–XÒÃ.õ‰}xËLh’±ë›eJŒ0ÜuT?Z‚ýê7i¦ðÛZi,†O–1i=ï¤1ü§Qè<û†.Œ¤hÓÊ:ÿ¹nc
[3wš3BËØXneÚøÃŠñï`ÅøCü[$þ…¢_ÕŒ¼SùÏ·XÙµº-Š®›Ì'ÓÉpòáËºï›¤®6]KwÓf,hÌzã_…5?•Ÿ“ü©‹öÛ%l×X¯:k=}˜M&0‰²™W¯”#]ÓþÕ‰r&9Ì'uóÙÅ¤PŒ²À]ÈWä„oì
T•*€6t^»ÅÙã×‘Ìüäõp—‚¹ôÑÀ&X“<úéÔyÏˆâ/æƒ<n–MÍ×—E=©º7$¸—Jâ%\²¹x¬I –nqâ‡L‚B½<éž¿yû¦ûúðÕñÙÛÃ#ÌæüŸ“àh¡”C::?}i€T²f˜xêæž·9MÌ •2ò.š¥Õ¤ei›QJÚ°c}Ì‡MoF‘ukÛiúKNS·3|»¿dØÆ¶ìbz¬ß¿çÖF!Äî”Í™‘ÃMP€Å¡CAY5n¥·æÝ•âîï±%yÃ{ê2½FT"Xám?»—U´¸œÀpÜÅá€÷^ÿ’Ï³—“ÙÛÞ‡ÜdëD¢½<¾dG6¯·¾ÃJ\ŒA¶ÉÛ@âz/Ï§H7óË9‚ºƒ~š®nòƒSüsAF.ùŽ–è#_Ù­îâæ»wäð;öEŠºaO¾«¼°eÈ/ì…C®¤#AVœe–X±xÉY^À>Í½ò^!Â‹‡HŽä;™_”ªg>-ì
£Vg–îj›sÛÙÉØ][Ué²ÕUÿ^róËš/Ž¶ãAÕ)ÖñÅÕ£¤M{w¹-¨Ýn8ÀLÌè“vxôö${ýýçÙ¯;[êPª·ëá¿QOé,Ü`7]ý.¿b°cMõ5"ìÃ f)‰7Â½Au…esT­”Gƒö—6šÅ¶°—8ô—}A"=­ëA‡]°Yt6øÛðê2ƒ÷ÌiüeðÞqÌ×@‘a.åšo	y«’ÓÉ­{Ý›³Agfùœ³.&ê˜ô®œîü³õ°ÿ¸Tžg©Þf×B(ZßÍéj}7†WPÊQ²˜* [ö¨7§ga¡„Å`„7Crý)×˜0ì^çÃ)¦ùàíxÍ×µEïœÏaÎô†yóåQ÷yÎ-J—R>"-‘4v÷ŠI!§¹ÕçÇòüüçí
ŒôˆeÎ:ÙSV$ü/3¤b
h_]Åþ/ëÈ"wÐTøª 070701018A403200008124000003E80000006400000001646E2B2D000004D8000000000000004A00000000000000000000004D00000000nvme-cli/.git/objects/pack/pack-0a680e015f5dc5fe2f0bebc8228f770cd054f8aa.idx  ÿtOc                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         y0´º`7Ö°ÚêÚBL4Ð¤†£ŽÖòhÿ£zDr¬Zˆ,'ö]Ö6¿½í ÒÕ¨¼pRLLï*o˜;Â¿@‰¹æ .ÃÞàæ‡iˆM¤’¯yð*!ÿ•Ý_ÊBôýÝo/œê®væÒðþ´iìx ‹Ööçx˜vÇ¼E‡ŸàÌKå]_H¡     ù  
  w  
ï  r
h_]Åþ/ëÈ"wÐTøª¯Îàß–Oám&eÍ¸)–å­Ægê070701018A89DA00008180000003E80000006400000001646F203E00000000000000000000004A00000000000000000000005200000000nvme-cli/.git/objects/pack/pack-737ad6bf3fede8ea807baaef5ae3bc327cee6cc9.promisor 070701018A89D800008124000003E80000006400000001646F203E00000279000000000000004A00000000000000000000004E00000000nvme-cli/.git/objects/pack/pack-737ad6bf3fede8ea807baaef5ae3bc327cee6cc9.pack PACK      @xœ…S_oÓ0÷§8E ‚h«¤MGSÄ›´‡õ&íùbŸÓÄ®l§¥ßžsƒž;w¿w‰žŠ÷¸–$±@¬¥\ê¼(«U¥ÖK¥óz¥•.Õr½ªWbžl„ªÈ×‹‹‹JÉå"/K©—rU,ê’Ö…®¥&Z®–ûØ8÷è£±ðhZ¹ƒËî˜žŸBh.]÷Š‹u¹.Ëåª„wù"Ïßv&Fòð­¡ñÉòéR‡—s¯¢skUUÜ4¶
µ72l •‚^Ñ|ßDxpFÀÎØ'°µŽ`,³h”„¸³â+=v:LÇãXcŸ	qG$‡NC}åQöq.®û˜šø>}; 7®`)ßÍž¡f#ÔÞµF
Lû6q#Ñá	ýwû˜„’é¥š)Ó÷!Hg5¿9hC†`êö$ŽÞ%±ÏêytÂ§0âŠ³Aûg<Æs@áwBhO¿´ÿ”JEƒjâéx$ƒÈ”ê«íôl$eÅé°Â¯M’˜<œÑEu#3×ñDh^–íõí°0#“Ý—#aé[i|L·oy+&Û«û›Í‡ìõ.›€2žd4å(ØI„A~M).Ów®	ÂDx3¹{²Î'·	e ™²)ào¼¦í0j°Hkî™OÞÎîŒù œlÄÐqI¡÷ˆ]%þóôÔfç¸ˆi1-wJ>Ì!»Û>Ü|½½ú|“¥ EÁ%	jGÞòö)d¼Ñô”²’Â§Ã}æ1sZÏêÓæ?ÿžø	´k\ÌszÖ¿?íèê€{ªïZã¼2|îlÉ   070701018A89D900008124000003E80000006400000001646F203E0000044C000000000000004A00000000000000000000004D00000000nvme-cli/.git/objects/pack/pack-737ad6bf3fede8ea807baaef5ae3bc327cee6cc9.idx  ÿtOc                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       ôÏÊ“™Š.;Ø³ºo°RÆ©_¼aþË   szÖ¿?íèê€{ªïZã¼2|îlÉ¼1úÂ‰ÏämM¬¿ä+&gh(070701018A89E500008180000003E80000006400000001646F203F00000000000000000000004A00000000000000000000005200000000nvme-cli/.git/objects/pack/pack-220e91ba573dc242034096c3b028332af920753c.promisor 070701018A89E300008124000003E80000006400000001646F203F000061F4000000000000004A00000000000000000000004E00000000nvme-cli/.git/objects/pack/pack-220e91ba573dc242034096c3b028332af920753c.pack PACK      3«
xœ340031QHÎIÌK×+©(aiYüüá‚wº?.­H‰¸¹î•=ÿ’tCˆ¢Ò¤Ò¼’RÝÄ¢ÜŒ4°ZÇFlÚÏ×üÞ·|e¯¼F@6ªÚ‚‚d3“œT°êìUï÷¨Ý>«#ýñ‹ž-Õ:Šz%§PU[T€Õ.”ß§Y¢Ñ•˜l3¡ìÿ–ö=	9 .òE—©xœ31 …ääÄ<†¢}vùÖ|œ—&Ûóä'÷(®ìhô6Kçd&§æ§3„‡ÍÑz|åùÜ ow×f¼*ãžò¶ÞÐÀÀÌÄD!7µ8?O/©43'…Á{ñÖ_¡¿&ˆ6u^Ü¢ÑzÙ#· 5*j®xœ342 OgW¿`W†íSeWßizëvù¼ôão»­òkøÌLLâ3óÒò¦¿~v2­9=Ø5¿Öõëºw_zpB$•fæ¤Ä'§•èe0ì|sÃAãñï×÷3Ì±	±pò“07 ˜•/Ò¬xœ342 OgW¿`W†íSeWßizëvù¼ôão»­òkøÌLLâ3óÒòÎ8¥›Ljœô:½NÊPóÆkÙcÓ¼¡
’3R“³ãK*Rõ2š«ÞWK™­ˆëÒû^zsÑI¬ãÓŽ  ·i+«®xœ342 OgW¿`W†íSeWßizëvù¼ôão»­òkøÌLLâ3óÒò6Š±*½½òçoÐäXK¥Z[ÉTCÏ7PÉùy%‰™y©Eñùizî‹}[­}Š?hð™ñ¿r4ixr¿I ç«)Ï¨xœ342 OgW¿`Wå‹š®—•d¿ÖÎr9”¥RÎ%lÈih``fb¢Ÿ™—–Ïpäó£k>IqÖ|Ý¼RÒ9±Y–Ëª '³¸D/™A]ü—½øÓ5r>ûe¾ôÎÿëül)²Š†…ÁŠG'L}_±ÁùÄŒg_&ôK… ê3h xœ342 OgW¿`W†íSeWßizëvù¼ôão»­òkøÌLLâ3óÒò¶VÅ¯:Ø'¿TaÚ¦—ÛÞö*ØÂU’šTš®—ÌÐ8Åéú¤å5Â–+îéažÄÍî-UR\RT°R%FÜéCª_Àvõ2Å¶–s!)È`¸)¹Ã×sŸÍçåÇãÿÎPú#ž¬œŒP±(ƒaÒAÇ3‰ËJòÛSN·ËHgZÅF GN¢xœ340031Qp
vÑõõaè¼gê>õMUÍ­5œš©¶f!¼†%ÎÎÿvn”x¶uÁGkßCZá{«¿9ñO  ËUÒ¦xœ340031QrutñueØ%`´Nú ôSÃ½‹:bøw/w9“fQŸW–›ÊPÎôçä‡3&íÿ¶Í1hhX¤8]ðTARbq†.H‘nr~nANjIf~ž^qÃ¯Ç«VpÔj…E´.u{ ól_ôç5 7/I­xœ340031QHÉ,NÎ/K-ªÔKÎÏKÓËÌc8ëà«Ž³ºg„T'¯‘¯=õÏee~ Gg§xœ340031Q07ÐÍ+ËMÓM,-ÉOÎÏËKM.ÑÒiz™y»¦	¦y}2õ*[Õ”æÓÎ‘÷Óö{ ûÛ ¤xœ340031Q07ÐÍ+ËMÓM,-ÉOÎÏËKM.Ñ+*ÍI-ÖËÌcxøŽóòÖe{ª'íc/úÅºw²KU!TŸ!D_f~A~Nfr¥n^jIbABïº¿s=_|(:¹öœóu‹’°ï&k\® ½0®xœ340031QHÌ­ÊÓÍ+ËMÕKfxàµÔôÇ‘µRý3DNÌz S¸-„å¯!º²†oG~ìÞeº„û‚@ùC“«­¿Î˜ «± þ®xœ340031QHIÍÉÑÍ+ËMÕKfè»ÈW¿õÙçøÕåÂº®Ýê+|¸Ñ•e0¬úpO@Ç!BP—åØß3“Æiþ-¼ #„w®xœ340031QHI-JÔÍ+ËMÕKf˜Âñ”ízÈý9FŒª—6öžÛÏÏkˆ®,ƒaén®'l7øÇ„	÷»¾gä9ñÿ UÌ…¢xœ340031QÈ(M,OÍÔÍ+ËMÕKfWh;×cœ}dš~;¿þ'k§Ãrí[1f0|™—Ó!øòêTQåW²ZwIæ]0 µà¨¢xœ340031QÈK-I,(ÐÍ+ËMÕKføzšÝ˜cÇ¦ò¬–ÃÙL¢3ü#1f0ßóvºr[|G^Åú%.Ë¾¬9/- Ÿo¢xœ340031QÈ+ËLÉLÔÍ+ËMÕKf(|°Ç˜õåÁeýwßì¸[üïÖ¹ºØ_†˜
3lÛùD^¼;§õÏÊ³[6˜°Ü:ÿ ’B$õ¬xœ340031Q(N«ÐÍ+ËMÕKfð>¿?kï¬Ãó}Cw„7M˜mòó¢!šªî©7u3/GTI™¸¬xÏ"/ÒÏq! Tß®xœ340031Q(NMLO,IÕMÉLL×Ë`°üpyÖAM†/'ã›Ôo°}ütò‹!ªÊ¼²ÜT½déË\!…Cî.ãîVžþ¶;dƒüÌTl*3f~3*þ°Ïpî’.µÿÿ#>L»°}ÝL ÷ì4|¤xœ340031Q(ÎHÌËËÏÓÍ+ËMÕKfpò¶/Þg°eÝs“O†K³.ë÷XúÏ‹ÊÕèmÛz‡mŽ3X;§nAöÿÒGÇ%MŽ"Û¢xœ340031QHÎOÑKf¨:sÔÂ'Eâ2ËfïânË,UÎ´?†Ì:gÏ~I•xTe–¼U›—}ö{}¸‚¼´Ìt !‚†ÊßÚdŽ­X*ÿW‘Á1ãñ{T5ÏäÏ9qì÷ÄkÇÊ²íåÅ]¾™+AÕ¤$–$ê&¥&Ò—x¥¦»©Cÿ°Ï‡­Ïž>ÃÏÔêŒ¡,ƒ3n›ÏCÇ©ŽaûÏul;7Ýˆ—óºTYFjbJjÐ¨­‡ÜôÅ,¾õ`÷¾»ÌWõƒožý‡ª&ƒ©êk¸Õ3Ý}\Ç$V,­’¤³Ï ª&7µ8?O/©43'…!xµ«Žâ›é7¬êÙ¿§Û…ÐŸÑ-Pe%©9©¹©%E•º9ù ¾|ÿÝ„—ÓsÕÓÏ_Í«ÚûT6  Å,¤xœ340031Q(É/ÎÈLJÔÍ+ËMÕKfuø·<vóûIË¦©†·q2Ÿ­/«2Ä¢2ƒ!‰ãë}‘åå“ƒ~ß˜){AHúƒå¤Ï [!N¨xœ340031Q()JÌ+NNÍKÑÍ+ËMÕKf`rüê¤±òü!Ùcy•zjßåŽbU›Á0§³Ã‚Gg²ßráË;X<ú%;ÿ BØô¤xœ340031Q(Ë,*É,ÍÕÍ+ËMÕKf8q_(‘ï}ÏÌ}/ßjû]é´Ü‹Ê.–Å.[EcxçÆ4ž.[ueÛk \!°ª	xÚ340031Q(OIÖÍ+ËMÕKfÐ·>òµ§\Ñà´è¯>wÕEž†hª2ÎÞLŒå=wlÏ–½.ožd~›øì+’ªÒ’Ìœb aÏä.±û¤œÈc[±»(§.À˜{†²†æMïŽx–²NÍ{õü©}Îòåý ‰=*¦xœ340031Q¨Ì-IÖÍ+ËMÕKf¸àÒxâÜ‡PnF—€SK+ãj÷¯ükˆ®,ƒá~ldÿëU«Eç2>ªæc²N]wÇ/YYiIfN1På÷9[WnëX¿×‚=·TýABW@7 k..x¢xœ340031Q¨Ê+ÖKføÑ0{IÉö‡–ÇEã¹4C£w}Éó˜iˆPÁP¾ÿnÚê?Sn~Ú_Âp?VdïW¶¿– \Tƒ­xœM ²ÿ100644 gen-hostnqn.sh ³íñOÐ1n½h`;J¨ü@qþÆœ100755 latency 
ŒÄŽÄ.i%«ðuKôùê‰4Œ¨xœ340031QÈM-ÎÏÓK*ÍÌIa¨ãkoéŸa;©`ÓlçÐi_ôv}lþgQV’Z\¢›X”žœŸ—–™®[XTœª—Ì |âÊ¿÷çfÞ}R.ß÷×£¯äîLedÅ¥ii™ºI™y‰E•p]ñYGVLË9UW£³ñÂ<æ9•FË‹ŽaÑUœ	×±g’kZ»úœ™çëµî³%¸;—¯YGif^‰¡‘PPñaWW‘gw|²*éÊätùà],Š*“7‹FÏß¼îXßÑŽˆãÇ-g ÷fp5 xœ340031QÈÌ+IÍÑÍ+ËMÕKfèÒ<?y¯Xš¶ê9ë3ÇJÏwecÖ1ÄP—Á à±r›GñÄSÁlK„/Ûùh- l!Y¢xœ340031QÈÍL.ÊÏÓÍ+ËMÕKfØ_[—ÙmÂ_VÇÕ:¿ò¿×šnbˆ©0ƒÁ¿ºS©­X°6üÀÓ£ó+‹s®F¥  ÷U ^¡xœ31 …¤ÒÌœ”øÄââÔ¢†¼Ê'XC’bûÏß‰[j/V¼ñçB°²äŒÔäìø’Ê‚TÃƒ©ï
OÓ©,þ¹wÁJ‘ÂÎr®PEùy%‰™y©Eñùi<ïz{]³ÙýtÎþIuæ.B”¥æ¥d&æ1OÓú¨7Ydµ~ËéãÎuoþ¹g
DANfq	Cçïÿºk¦z«1O°Ö‘íØk:_þDº¸¤ˆ!pæÕWËÊn/Û˜ô±Yí—˜yÙu ÛoVå¨xœ342 OgW¿`W†íSeWßizëvù¼ôão»­òkøÌLLâ3óÒòÞ?]±û^©aÊ+…\nß¦“{¼æ‹'C¤æ¥d&æée0˜™À|¿7ÖP¡këÆ×K¯?› O’+S«xœ340031QÈÌËËO/Ê,ÑÍ+ËMÕKf/î3¾óÕ{ÊŒ>ý¢ÒÐ8û0ClJ3th¥Ú}<<!\øG‡Ï±™Êµ¡JK*RSRÓ€ŠVV1tÙpGß“Y0uo‡ÚžÇÒëo |ˆ-Â¨Rxœ340031QrutñueXú« åï‡yŠn
û.M¯Ø7kÿÊCˆŠ†Ì†¬y^.®™*{TÒ¯°×~îÿ•OÎÏKËL×Ë*ÎÏcàìßÕPÅ¾“19F^ùèæÓ»oHC•å¦è%•fæ¤0$ó›Þ¶óú‘®~üÿô¿Ãå7¢~C•å•å¦Æ'–”$&gÄ§¤‚©¼âø’Ôâ½‚Jöƒ¿žÎ°Ý¦éž9ëÛÐ+*6 kLÎÏ-H,J…«ïýóÀ}zgZpÔžÕMWNß+9¶ñªú‚J¸â^¹*Vë¿x·jzÃàóþù$ÅE©‰%©ñ¹‰ÈN
¬,Üª).z@µjò*þl³wÈºRŠsájojí‹äz¤x0R^Ûà•ï†©?“‘Õ¦åÅçä§Ãuìšx@5;þäæÿó÷­*ïÑr¨DÖ‘–SZœWýä£ú­ƒ·|V9ñ“Ù§âLæ4…UÕùE¹‰%påOý8g$9Çt&ÿoÉ+xÙfÒCQ^Žâ–méâ<¼óW().ÿ³±NÇsº£'²òôÔ’ø4`•¥"‚§Â_ûÏí=\ÁïVÝdØâúZ_ÀQ ]SNRb|q	P#B[ðOóäÅ{útn.àÙø2£pÞnÖdm™)ñÉ%E9põ7½N¿Ü°ÒÄ8|aÅW‹G	ÿ«âÑÔ#ÅYÚ£ŸVw
ç_çë“/â»göZ€QY5’ƒà¤¬\Ø„ýj‚®Š»Œ‚Û·7¼u Y0}¤Ä—e– `Ï:®5t\Œ=~8OãÂÚ]–\†¬¥83· ¤H%"éÓºõÚß©ìÐ±s©3ßÍÙ)õx‚Ò4}¹‰E%(Ž›˜÷eVTž®·kkwÙÄfc¦-‹@ÖSwõÍÂ†»ßù‹Žœo˜ô+V[Î£ÄèººøÌ|Òý–lÐ`)µKËMº°ø÷½÷¥JnHO-)¿ ¡É’cqì"·s^§RgÔM|à”…¬¼,µ(3‘Ýjšú÷o>øIîÆfíîÝ=†ÈÊÁYš—Ì0-ÍW’LŒ×?¸´5ÕöZ×ë’vW-U©Eùˆ¨62||wþ„%©gjNþ;9ßqýùÃP-E¥yñÀìŸ“™W’ZTRÜ6ÛÎ-ˆ'NY¿~ûjÜŒ‰ÿY•E™‹¢xœ340031QÈMÍMÊI¬JÕÍ+ËMÕKf¨r3^¿díïÈÏb]§ßJT¶¾àK4Ä¦4ƒá‘È©Ô£<Þ†Gvžµ×pß|öÇ¥èJKK2sŠj¿y	†¹|‰ˆYsªøé5CŽ¼©› Êš4d¬xœ340031QÈÌ+.(-ÒÍ+ËMÕKfè™4kAÜéÝÇª.„ñÝŸü1ña!¦Â‘¥Ïæ5ÖÉ¬œû|ÝžÅÉ»®Ûù£*,-ÉÌ)ª¼"¸Ÿ_ó–vYA™]ù*ñ{%oË:TE2 ¢xœ340031QÈKJ+Ñ-È)MÏÌÓKfÈzzbö¿èBîŸŽ×-¶›äb*Ì``lö¼™ø~³ÒDÁÙ:ùç¬&§/œ Ç±,¢xœ340031QHK)ÐKfÓÔëùµ¢ñÙböxõì--Wçu:"d0|LÚ¬(¦pJ÷ù-^¥g[V=¿j« ÍF«xœ340031QÈM-ÎÏÓK*ÍÌIaH²\øgbhÄÙ/3l§5¯OXx‹ß¢,?¹@79'5±H7­\·´ %±$U7#³¸$¿¨R/™a§rtÓë—<Êò!;
×žÐÞ{ùÐ"4f0œåp9q¤ãïÜZ¾[WxÓKî™5ï?’Æ¼²ÜT ñ+RÌ¬ëg5¸?}òC„ã»•çøÐUe0Ü™'êïúÃóÖ£¡|i+œ®¬Qþ‡¤ª87±¨D7µ¢$5/%5E7'?h²ù6½I3½§›•ýžuu	û‹pv3üz2œþlÍÒšûê×D¶Ÿnþî•QÏLAÒSZ’™S4zqUÄ±{ŒAÁzŠLö‹¶ÚÄP–Á°2IlBìÓ¹Ò^ÿ¢W«¢tæ/ ¨Â¥¤xœ340031QH,(ÈÌMLOÕ«ÌÍahØà™pXòÏ#Ž¬Ç+Î|¶øºÓÈ¢.©43'¬è×S®P‹ãËûžtýsjÝ{ñ±|TQQjNjb1Ä¬Ý/_®Xfû}VØ”ÏA÷»5|¼ º€3ð¨)xœ340031QÈM-ÎÏÓK*ÍÌIaÊß ?{á›ûï•"¢4×,œ&õÓÇ¢¬8?'3%3=W7=±()1=U79?''5¹$¨9™ÁBcç³:ÙòZoy²…º²ÝfL¿H„Æ†Å½µ»ÿ	ØÞ›2óEòV.¯	·£kÌI,IÍK®Ô-)JLÎÎÌKÚçðöü‚/8qËÿí}½zÞùóÎÿjË`˜Uf5!}†‡ðbƒÃÑórø>sSG×–W–›
´Ïio~ÐþKêÒ}áû=œîíã
àÆª4ƒAþNVºE°îä›VÙ?<;Ç}y-Ëut¥Å¹‰E%@cÃz­ö_Öô-~;û2§SßEÅó'ïéaW›ÁðpÞ¾À9Át‰ÃŽïÒš4—ëJe¡«-IÍIÍM-)ªš=Óm¦lI»Ã³¶RÇUÿn­É—P“Ã­>ƒaºÜ£5Ä>¯žÚÉ q)¡¾ŠÃ¾y‚‰`QÎP“úÁiu‰¶æ[Ñß&¼eÈª]¼ô/ºá¥%™9@w0.™²/¡‹_Â†aß¼«ŽNŒÇª4ƒÁJ"@Þpm–]úûNQÛEŠÊíÏn •„ª¯!xœ340031QH,JOÎÏKËL×Kf°ÛÑúëÌ½s;¶ÉÑïü»b·ÛCte¯Ö;Ä_ïí*Úq[1É^õä·Ò¨²¤ÄâT3 Qì?KO<}ñl‘sÍ3ã3oX>ÉMŽª&ƒáÀ7=íŸúq3TŸËøÜÜ¾i’nTMrNjb^iÐ kkjÒmtúƒÝ›™[%Ävê|*CS”Á¥z±úímå6ûE[õœ»ST”ll4çŒn¿ò=Îü÷¦·DyÔ¤¯X¯–JGQ’Áð¤gú­>›·¡ª—ys®>XÓJÎª$«8?hˆîÓ–¦Žcn/Ø„®Jü9Ê|4=Fj"²Š†ÃIÝu•n;~t©1qªzë)ÜÆU‘›
R’Tš™“ÂðÑó‚áÔ´†’|“óC§Í«–ÝUV\š––Y´¬ïBÃ¦·Smž/˜ýÓeÙ»Ù·^AU“Á·´ßcMã¤]õ§ÙÕm·æf¯œUSRYZ4æÖ{ÍîËg[ë%ÿ]©×Þ×¯ø·ÀEIÃ÷óÏÕ_æxž˜ÛÜ¸òô&ë'« §&ÚŒ¬xœ340031Qp,(ðÌMLOu*ÍÌII-Ò«ÌÍaHß$z¬q›÷7óI=s|5.ê33„(O¬*-JÕ-È,HÍÉÌK-+ÿù:îŽÑ‘=;â2˜’rÅÏ©©› BrQ~q1CU‹WÛÍ”ûóÓï­°|>É;‰5[áÔ¸”Ô‚Ô¼”Ä¤ü°IÊGN[LœÿòÂ»²ƒóÎß™PÕ’œ1©<¿(;-'¿¼˜!ì×9ŒvÃåsÝÞõnÚ0ÿÑ> Ç=T•£xœ340031QÈ+ËMMKÖMÊÏ/ÑMÎÏËKM.ÉÌÏ+Ö+N-*ËLNÕËÌc(0KŠ)ïHöh*Qè½À¸Jÿ§oš!\wšnbiI>T+²6¶Jƒ-»Ì¯m¸Åüês£“ÉdmP-ºyIi(úÚ3;|—ˆNbY_)ËöAKñÿTÞ»ñXôé•$¥§–€t|ó2?Ä1ƒûÈý«·]©®éü¶¿*‹[~/fËHæzÝØøowhâÛÉbÜäi©¯xœ340031QÈ*ÎÏÓMÖ+/J,`87ÿ«ô§Ï²¹~ÿll~}½Ñ²Toå9Cˆ²œÌ¤¼²ÜTˆ:¹%m,‹û®}Íø¿¸Ê¥hM”t‡ !T¥qxœuÓ{8TyðŸê‘Ë>+OŠÆ¥¨5C%4ÃÈu”ËJˆ™qÌfÎsÎ¸m¹=D7BÏ¶¢ÝHQ‰H®•VBˆÐJ.%I¡eŠi¦ÝiÛ=ÿ¾Ÿçû{ïï¼¦ÆÂ@bÁ8[À ŠûÝHVHrÛÐ|ÑÀ»8“¼ÙØØÜÔôYÊ‡@¯ý²»ÏR2Îwä÷0+8ž£X¾”R\4PÀ00rz(«´£ÛÆéÈÆ¢ð½=uÃGÝÓ$ÌÆ•æáæ@ñôp í$qÁ½—níÜäª˜ýaX0KýØ15¦Ÿ:³E™.„àtFp® ¶‚Æ)†ê<|@"Þ%±§qI¤³ƒ•æNÝL‚ÞÙwËV&ÌÚ¸Î0b«úµ%Ä…Á(w riù÷ªKœ6…Ê*’4¶ž•7*ÙÖ…*ê)sO€KjŽ’ O•ò‚4„\Òñu÷ÄdÒ ®PQÔ™bTd:ºéäœærò+f¢$ƒÉ$±Á®GÏý2t¼j½“-'ˆ¥W[NÈ÷ýüÙt$ñ…°¾uñµ—áè˜=?ù`óéµ¶^JŸ!Êå¢ˆÐ§)«ÊàL£i÷oÎ¶éçí”4ƒryH4ÌÛV(,¥%Î†v]ªSµ¼ÕøJ’(¼9ù‹[+Þœ©=ã‚áÓíñý…VÛæA¿8Â™ 5U-¿%»WÓ.yÂÊÏNîætc‰$%ˆÎàÃLŒÄÄÐÖú½È™(—š¶[CSC˜èü±ÁÇlÏj^|ÿÖ/ÕŽ‹ýõ‡Úª³$ˆ30.DçÓyÂ83ZLÔÜ6›¹FÝÆ\Ÿr•XsøÀ~¡ÜbfFàBŠÃ˜§³HIw8Ü[“gèy:,M·­­xð'Iê'Kb`N ·MÐÊóÔˆÎÒ+œäÉL·.ã§”H3”÷ij$<¬HJQAzV¯S«žØÝ½›˜#Á#vø­)?©:ä‡¥÷uJÓë6Í¥ÅH6X!Yû3f»Õô‘·v‚fùÊ­rŸ…èª¢¶pXôšÔ’æ²ßv´ÆÔ·×6|_¹±P*-…qDSžÙ:|ßjÉãØ{IˆÊ˜ßš¬‘òYÿÙ€ØºÊ¹U¯ÆGç.9Ñv¾1sUòø0‚ƒEÓa‚ñh{W§òì©ªžáëæðv¸¢ô0˜“›µ\¹o3(¨ú\vÏˆ‡uåWXº‡3òÊ:(Ñ'skÌG“Ì¡¯¤)#ß…›Ìßñµ Yš<j–}ÑìüLÚñy\†0nÇÀµÒg§ÌÊÚ’5®¯_]"Í$ÿMÛh©Y×ïd¢ºw‡q;-Ø¼ÕýÉû¯;ºXø«G)WTÖ-n¡LôN¼”bÂ fŠÌôÇÔ({¬(l¤sõäBüê"8å`à]Á¹‡™?>Ù'OYµ›ÕÙÝ$MÙ ÇûçíÑrÅ‡r(e#Æ,6/¯’bŠ’ìù5Š*å>9'ºR'íc½6Š÷PÈ‚ˆtŽ
ÏE &ü.îÑ­²Œà=½m¶62ã`EºRõ”$’Ç°`Ñ»Úë¯_ÜL	b­kòÂ?ŽÝ	‰ýÒ°JÏU&kö}@ªrÂãJæ@C§øH1ÁÀeWƒMWÎoM«÷üM×tÃä`hÌ:É*ò!Â0`lôžÓ.SíÐš@1\¦ÙW>Ñ£Æþ›p :‰ö´¬(înƒ}®šJ\øÓƒñf±=Åâ£0&æáˆ
°Z®oßªT¾lp¦z¸åšÖJ=‰0x|4XxsL=N£ÞÜ›U–»^Æ¼]‰ò'a˜,V8„	ë]2ãÎžˆ¨¶u¬ÈŸµ¸³ÿf‰¸.@`¼§sÈa-ûvhe¾ó™ªùÇ-¢$eæ€3¯y·o$ÿêÛéo91cmLPO[ørá×­xœ31 …”¢ÄäÒÝäü¼4®êy¿vÏ›ðìéŒó?ÄoÈîÿ¢ÄmVU\Y\’š›Â0«æKð»©b¾3›fôÜ-K¢¢4%µL·¨4'µ˜¡áÖ-wýfx¯cì8?¿? Ñç®÷M ßR/ž¨3xœ31 …ÄÜª<ÓŠ~‡Š·¯‘Hÿ—aPùNzçÙwMÀÒ)©99–òŸû}ëžï—ºõQ6w¶o‡I%2ˆ¤+h­ýüÜòÊƒˆß“ÜŸýúõ$"–RÀðu:WBïÉŸó®,=¶íñš¬%EÝd!²¥‰å©™)O2–Äí^aæ¬~ÍÍn™æÿ9¿!
2óòòÓ‹2KŒ?óV|=b0ùÑÞèÚ ¦#Ç`JŠJ‹–®ÈÜùj~Æ¢[¢Õ·~ð½Ðºr÷É˜‚’Ô†ÿ_ø¿Wß.ti¼P[\#¹ìmD>757)'±*•Avn¿Ò‡_‡¦üx?àcÞ›Âí_óÌLL€jŠóóô’J3sR,¶Ÿ}{ÔÎ¢ûr2—Êý¿³”
Òf±@MÊL.ÊÏch°Ë½ñËk‰ØŠÒ¼çwOªgŸ­,
Q—”VÂÐ;S;%‚eZ´šÃwCÝKÛ*'•Ì‚J§–$0¼»ÄXÞûæq&C+K/ÇÇ‘*¨~¨‚²Ì”ÌD†Wë¿³Zåo­Û˜øKçî[‹ô3÷,!
ò“¶maêÈOù[²ýÏ¯K¥-W7÷]<‘-NNÌIMË)­`8và}{[fŒfR¨q„Ý…×d›É jRÓKRVN­Ûš®ûCi"eáö>KgBUd$c%áÙ\u¿]ó˜»63¶”œ»æ7Óíþ¬SPù9@w¦ç2øKlê~uBâìzÙK9ÕSBçNy¿wDII~qFfR"ƒQo°”@~Ï¦¾¿´W3+ÿŸšUQ”˜Wœœš—ÂpMÃiõé ^å,½Ç’Z;¢O­\P
QS–YT’YšËÐWmÖ°[ã“—YZîÚüŒž¥U<å)ÉÍSôsÌ3Žž˜=ùÏëì_bÍ ®¨Ì-If8è4Ã3¬X´Êøùô%¯^>Túeo‘®Ê+fÈYÂ¼åúi‹ªs´ë/&6ïÐ "^E¡Žxœ•w •ÝÇe4(3‘QvöJöLEV„PÖÅÅÅu¹×že&dÏÈJ‘")Bd¯„¬(£$›Ÿç¹½ïîÅïŸ·÷ïçÜÏ³Î9Ï9ç9øù……„ (SÌaÊkŠ°5ÇYÌšpåÄ=”ÔË ,^év¦†þ•ÀÖ Éuq€Ú¢`[/Ò'HqˆLŽ­¹[›’`VÉS[Ö±—èd
7ã±³q´€m&\p,ŒÅå}‹ÓÍ¾Œ3¯´îÅþú/ŠâC`¶`ðxÖ,NÉ™ôV«¨Ãèð{¯wÓW¢7ƒ"çÎ1l–å ±±áq†š Þ(Kœ©+s£jy|w×…n?šè19Óô§T8ÄÖbå1  ¼.(\I9Qe;e#¤Ýé’‰éÄemÛ²¶$b¦ŸóãÑx]¤pÇW©‘¦õ„Lõký“†¢¶¼&Ž03œL¶ÒÈÎö,¦˜jrä»çGÖÆþÄlàPˆfËcA¡,‘Ž¼8á‹5­‘Rg5[ð“”lÉút•»v,à68¼	"áæý9y¸'ço}{ºlö`8‹MùÒuÎº‹ë^*É^:ÍÉsƒpbá±AXl
±ºV‘ö™è.==[hyíïW$¦$hRùØ÷õõdgDëÃ³¸¸¢J²i¹˜Â€BÉ§$]HîLÿVÎ¯73lW³¯/mÉ:8@L-y6ïœKOìY½ýZ¸ÕTmqÍSæN
œÁœ5<åE\é&i-w»ƒÿ %UT‰Uù-æ8 bö(™&Œ0ÕëÍŸŸÊ+b;ž?poÿ;m‚@8lž=¤ÃŸ3òZß×_êÒç½Ïã>ÅQ¹H@ÜÓ°çA¡õÄ—‡|ºYž¦¾]O	¹”ã?†¤xÚ8-
iÜ5_¢9¯4üˆ“Ç÷+ìoÂb1…9¸òÀ-à›R£sº5öEf„—ÕÊ¨ê_‹ñÎ¤~Áž¥®s&Ôáe=¿,Bµ:?{‰Pw4––;HÅœQ™ýù*êT9Í}5Í¬Ç2&R [Kˆ­ÔlóÄòØÀPÿœ¯Ùö›	?¼R"6>N¿åL†ç¼°iß‹gû^¸<9ÔyLÇÙ?…ÏNàµtl/ÐTY;¨yœC“ñçÇF¼(‚,dkyÛVjjÍcf¹ÉÛñXC]7îü¤VuO¬§3ø¦%ÆñBó°	ç®(éÕ5&§.—®íÝÀ&mvßÒçdü®`—´|uÈKõÆè°–ža/6V«6§ƒê_"ËiVÞ&ìIÌå™_!ë&9KÆ¢Y[ˆÍ
êÀ³5ã™¡"<ƒZ[žƒâµ,óÅ’JÞ¹wEÀãiHœ?•­ØçwæbÝïíQå~‡cv¥ »eíº³7Š}>«-XãÁÃî4¾}µõl#à›w6tSjHcîôð—¥¬®˜ÛÔCw>Ó¾pStù`f¥g[àâmáÊ–Åø•V˜Â€99M¡êQÛäŸË{©îVdÏuŠoÍÚšÃÐ÷Æ§HÝoLirK/^\xPi4{ÐÉ[ÔjêÀ³ÙŽlëüô ¼öÃR§†¤ÊM–ªÜ[´.¼—J3ÅÂ”ýU)üEÿ‹mÇ¨4l  Óð¼Þæõ«Vuæ×|QÊ_Ã¨¯jaÈoª*W_G E…5†|û~7eŒh% SÔ	êí¢¸óŒ`JÕLæÕ±ÑÖ	La@8ðZíÁÏ]ÆdåÄîÂ.–ÓÞ¹¸5k<!i1-Ñó–«¢=»bÓdí ‹ÇwÄÀwò‘÷µM;±"}ãŽ¸­›HèøŽ$ðË§ó£y ºañ¼¯ÈK„+zÉ$ºd·‘PˆôÏmYsíï¨f±>ÅUV5Ív.˜³ Ã›µóé÷É²Îº9æ_Foí…9ˆdB¡·ˆSŽ‘®Ä™°ká•çü6ƒÚ@ÿa¸ÿiÖH±ÒªïÂÍóÅ¤?1gÑ"14¨û”þéøß‰fç	oÎÂ0Ç~ZµcÊuÙçôÚznüŠì4*ÚšFBx6;9À±6OÚPøåõË“#7L4g¦º¼"Š9ŠÜwózîþëE‡`ã=/y‹‰*¡pÌq@DƒW÷
SUk¦ždå*òH=ÉŒ¯íÖôóe[
È ›p4ŸÇtKÚEsy)vzBŠýÞ%é[¯í`Q©„ÏC¯`Ž"SÌ•ú‰µ=Ú¥®xß‚Þ¬ÔR"Ýšv‚™ByPPs(
81’÷Ø´Ÿ‹á²ÏÛi9ŠÔLÞA?¹ó¢g^VÊVÆýd½ÙH+­™Ð³+Ø}Œ;ã¬'vGÄç”¼˜ó¹¬5¢ó[ ¨÷ÜetÄn¸±©d!zºgÒøÎM÷>Ýžn;Yê’>4|zëå¼ÑeøÈÀT¬úö ð³WXá~|º·Ô×&M´*ù![sH$Ô
sª]«ˆÔ@&¾“>ô‡x[œÞ]º>s[Ô°¿Äš§Rdõ¼w@`XDáÄñ¯Ø @§˜üM©ÈQÏŒù€0ÙºåÒ+×GU·çQP[³MŸw4åCçÝ©©é=ÆÒ‹gX{ºy]0FAR†fC29M!5Ó–!Îg³ÊÓ€Å7ƒüc÷{nÓÛð°O·¬GÅYç¼àÙFm­Üoä¾‹^€Õ¡H¯ô7ÏN±É¿|óv 4’ŽæÐûp«ÿ§ ™µß…è—SHª]ÀËz|äøçlnsCOÉgk[ªKgaF6¢oã]§.À[Nôþ
W¡~PÔðKÝEj"»cû"—Ñh¸5&ŒZ³s#žKp)ë»½|Ñ”þ=Ä¿§ŽËú|F·¸ÛŽ¸¹i2˜ßÄa­ =-;|óZÐ¥J®)qŒQÐÃH2ê»ý”øÙÆÆü“×fŒFÓ€ElM`}rYn¹A=ª¯%9–{ËË‡
xjXÄå¯åwœ¾ ÏÌ×`wdsôØž{8¶ýx6_‹Ù³'ÝŸX…Þ&.}°=üìWú!•÷¦Ü×’ßÙ)1˜¸ä)n9·PsóÍó„úÓkuÑxÒÄRHêœJÆ•}øwæ—>ØÒ F¼ ‚R”­Äùƒ_ ë·´Í5q°àïÇ#<íów
³Î¯¥	­Ö«Ý’·5sDBl7ë¨Ôvó~²°ø£FÕéø!òìÄ­rŽcYgÒ½M†ò÷C‚š
øzç†Ž’˜Øøx|Ó"#O;<!½P†Ù’º:²82sðÔzÐ[©@Mâf'Ì,ZT¾è¨¦ÂÂ×U¶¡ç`M?µx=ö<¨Ç$E$ô‘ëà¬i¡ð·7’“6ÞŽ¤©Ÿ¹}<å
AÓ6m2¢i~6¾…@"È?B+Á„ü¥1WÇ_çù\ý¬þù4æ,(Ó1ï{¨HëAßUë‰¤·Õ:Éå/aŽ"ÓeõžâÅjÝ>·½ždõP6ÐýÞòBknf÷§'
´š9úÓ^J»à”ÊØ_ÐÔ~•€-ÊôOšŠ@6FIœ$ún â“ tªN½òS©sŸÌ°’d‘à5Üž/1`ƒ`n¼²”þ¡huøªA4Ñ´?=‚ÿ–0(ó HÁÊÒëKYž~ñM©ÏÑ²Q”Xò€‹±Õ	áÏ‘iz«R^úß³í›ÊìÌ¶Ç7‹}^áäZHº°§Ïw\wÿšLW]s\x tŠ‰y¦°W×ÉOj¶ŒX1¿aw"vl¹tOV*eŸâXš&.vkwžLhÜlö‰ %ÿ´Ž4*ej§k×ÛÄäï3I|ºókÇCgÑ—ë;‘|Ý±¦õ|X©ß»˜ã€ˆwÌÁë¦ÏT¦
‡e3)Ò©5ìQ)˜ÒŽ€	ªîívV¯é
Yòµ†ï]FT	™Ÿ°„A•¬PNO¡¶I#Æ/DiÍ(ø:™:£°ä6Éâ÷”†]UB‚vqQ0­ä«‹ÛãŽvf›ýgà)å)ó|†0Ã½BZzqÓóŠÐ ,aôEBºè_cK5Qµ/.®,Y;L®ì€%¸(Û½Uòö7€;O-ïb?4@¹ãÆqDA, Ï“ÁF“«Oß²ÜX‰³Ù(”ÂœMïdÄôýJK„Pç\T ûZ-zsÉO>Uöè¤÷Õc_fmï{ã‡LŸè¿¼%½ùBŒr´³C ¶5$z6Ú³ð¬=­ÔOý—EÉFç‰öC‚’A6Í1úwÒ#Þ×Á&¯žñ>«Ï×3¶P6 /îÓåtnW«7MýŽktQÃnkãˆ²Ü\Jd{rQ4Ó^}‘½ö±äÉå8]š;s ŽzeétÒùÅ¡¯½é8¯]°Þèà–Û~œ½9K"¶aâ½ãÀ×å¥³G¤7ªª·$¡T ÇÃÔ
½T=,g*žÝâDEÔúKGè=† øówpú¿Pe5>|fÈ:îÓôØ< ZC|±Îoéä©Hý•7^09ì•ðYJfë3âŒ Àa€ÂáŸk‘UÄBJšìB#'I4!m’˜³ ]š²û¶.óå†ÎÚäsÆö¸"˜ã€ÈY/é•÷ê›–8ò|Lp3xØØ–6C8ÛÚ  @ÿXÛebVá:‚ºí—¢î˜×Óì&ybliP¦Ýô×·»PÈ„…æ‡E¥l  ã?rhÊo%ô~ ›,½y¿Þé´„ëÛòèÛÖ›'ÃZ‰ömÖonéXòe½º¥Ç©‚ äz=ÁZw¥ÌÙ!_“u)YðFé Ó©ÊS¥ŸùèŠ/V~¯ý;jµÝ:2—¯U¸AÏà4ƒÊû7Þ«¨5%3Û@w"Ôœ¤¼º^éÿ#çuÌÅ¼tƒ ·]ÀËõë”nHˆ´’°€HfCÕƒ‰Ë’RÛKÊÁÖÞmm‘ø(%?íŸíÏÛÉ:—Tï´CêŸ4h”x!Õð€G§güµÑÔb¿¾z,Ø @'e}åúE2g2I½Y"ºÌD%º#Ûó&à? ½›•ÁÿkfeCûáÒÖ¼9t³ŠâŽÏgæMwÅYPÐ0û63f«¤¶À–õÍ*pÊ­^P3ÿ\ÒøŒ‚Ù|ƒÄ€#–ónnÓÆE‹&œ7ÄIz…}¼æL·çmL ÿ5i~óÞe,-"²\³aIÃ42îtáŠ\»  Ô ýäAZyZÿ¦—Eº\jgíwa /JÏê“%=¢×¢Y¥¿Or¦º5î@ÀÛ?Ô^Î8¿&þMäûã>¬„­{ŽVªbJ‚&Šp‰ª!þÞðKÚeiœvšøŽÓóÏI'o0«£§˜lÅxŒWå|Ðö¬-ŠÔÏ¿—·›C?‡2kš|<°š¾òëL€æ,ºS¶fuâkfGücæêˆ	R†ð9bÌq°yøPÓ¾8õräÜø5õ÷¸Ãìý!ÛÓvH„é <‡ÖãP› zJÆÀ/9–dªk¢Xã ÎnmueRNÎ_<Ô¡×LŒj’ÀJ FOŸ·†³¼²§|*Ã7±î×÷iKõn	µ±Û4é£X¶£?[¬D ™7jB¼¢tbG=ž='ÙÜªÿî@tWì§ÚaÅ˜Ià—Ué~é.©`L[&¹¿âf7þ–A=KGˆ3z›: ±ƒ2úÔCÓz¬!2Vê–ÖÆ-2fn»  Mt•­þýx;œxíZDˆÙ°A5Oß¹]ÀëWëâQ#f”bâonRÃÇg‰Ö0 ÀìÇ¦TÑsšòà—¨±ÕÆÎ¯»~ÓÓã`KƒF§F%}×-eÏ"üÇ²üÏ@Ö|9ØÅ°€4ë--Û9™˜àš!zu2©‡nl[tþ;?A÷6„NŽˆÝ=X¦pO÷œÇñŽLIPcI3#6È´°Jõ·ÛÒßÏIˆILa@¡tu£zRa„Ç]?47´fæÁÙ<#émY38Y,€sfìµØU.¼ÞTÎúÆÇG}H¸[90gAúDêÒ1ë~±XÁðžÉ*¡
ííâ€H@ ¤:™Þ|öý×¦ñš•ï?éoKÃ¦@Ý†·œó‘÷'¤Â57TÖÀ•µö¦$(Qsÿ4
ùn†±ìyÆë³üÁ™¶ê0……W©†ŒVcÇ$JIê™1žžÚ–¦Æ6«À{[6œQÍB>i+°‰y\Ÿ aÜ±_»" ²ßÆg£ÿ"Á
ÎÓ¹øÂš'v¥ ;Á>¼ŸÉ~ýWð×`¿ã'“²w@›J|Ú&V•ŸøhŸ_Ìíu?Fäá¹3z¤VñÇkT&Sž*V	šk^)YSŸ'Û~<=RË¿éîâ¥»tÔ÷¬»­‚Ìw;Á7ß¶'@÷Ýsgƒ.vÇl‚·—W×e7R·ß«² D‘ý¤»1(®ÎýXJ§·\=Û/üŸ8 R% w42ã°æµWÕ&$—ˆËœn½ž¶(;G$øÿ›ï¥fÿUŸTª«¯S÷LNÓûª±Xz®†¾a ¨¨•íGuf,Ûœ/ëvþFø5mÇæGû`ß¸æå¡½Ü%vY>'¸q\Ò—lE 6=èŒÇâß-»_ÿ6øéË­%Tœ“¥e"ö<h7^Z¬sÄò
þk·ŒïP‘5<Í`v¢1…ÕæÎöI5iy£š¿&€Øü/ÒbóçV§“ßpb4ì÷pMFýAÑÄi™å= P/ßÆØ³Õä³î }^ž[¨®sOÌàÈ‡# Þö:•€"¿Ï×p¬T™²;Ãt'fqøw@AíÆ¡ÄÁä¬Æ“åøfCŽê*q7ÉïF€vºCg$2KÕDÈ«=¹ƒw2èjœÜn æä±Äõ«žê[ˆ-.ç:©Üd¿“CÖ@ºˆz÷nÒ"ÅÃSC»¹}C~ZÑóïÎ€zÁ7¢%ú5íµ‰—Þnè¨VìŽ‚DÊ1`Öü–Ø'JášiÏ{mIwR(øŸ<3 w´êÉéGf.c­Ömšçî/…PÙ‹%©xÝíåÏ|Ï.¯Ì‰Q‹¿hz¬»ž'ñábðs½ÞÔp&‡_¡`€a'ç …ÿ7häV-iù%[…ïtz¨0ëaWþ‹©,»"  ü‘˜®o5cŒRlöR9.Ós½C»R`ãlÆô».ÏhÂ\Ù~n°èuÌÙE–-ãƒ0¸˜¹qÚ4“Ž[Ê8®2ÍýÃ”î³DT±Gž ,k´âñ?ýåóZu¤„0Q™…ñ‰iÔ3¬`4FVi$Fú¹Åµ`Ñ9ˆ§€Ó Ñ÷ðgnˆ~EÎ¬Ï6Fôêèƒ+_Ëí±ÆA£¯›]"Þµ‡ÜWZI¹ÖÔ3ì§;Þ„• —=Ý¹Ã˜«f5êÒkzýR8K®fâSÜmÀ_k±äÞ!âu¼,‹–ýÜ†³¹Ú…ü|ü[ô9#ü$?ÏŠË(,àÃíJ„DPúÜƒXl 8s¿Ùìø˜<ë«G_uRCTIôþÿïíåOö…õûÛöQ‘ÇÔ—Ü<q‘ãUpÿ] P*ó‹9édÊ:Oªã7+êQªßa§va ¯cw½­øJH=Ö“fƒÍ[ÆùÁÕ6€s‰¾ìªiÍïîlÔ¹fR4XGibÎ¢Çÿf-xŸSàúDòØ05vœ•	sùñòjÏ	KÃ•{f—b‚Pé¥v¤7/®x1œ4;ëŽl«òá3ˆÔ¥Ìz¤rŒ÷"¶4z¢ÿèy‹‡
tÍçëŽKž:š@¿>ÖÇ™øÏég ®˜£ðc\À	³ß‘;5žî!.õò7<m´–²å¢Í/Ÿ’9Œ)‰žzÖ©Æ+L*uqyÌÜ¨–²iã—ÆÅ££/2Og,gLRõvSP™¸ìÈ¢MP®€ÆÑ@ÎFÃ¹g¢
RüâÏt*–žö$cKƒ*¦æ$(†‘…ê³Ýñã:#Ø @Ç\ýåð£ ‹»…WB=ó8ß˜¨•mÏozL¢
Ïº:ª§zÊ]ÚeªúÞŠCåŽz‚uôf²êUêîN‹gŽ'2†]¥Ü‘+ãª³Wé]_ú˜o?¼s[ÿÎ7ü-A„©50òµùë8î²èuBžûTè§½iå¶^¡À2š–Þ¦uÓá^`ÍXÐËÐ¬•¹ë‚1X4+n$ÍÏ¹ÜÆX™Íz¥–ÚÒÃ¡f0£-ÝÿyŒÛ“}>êŸ½wô”‹óí’VžÊ{Qèñ×óe©E”‘$QŸh®E8=2«Š{°hžwwnÖþ(Úaª°Ó¹qðÙXÂ–“‡k»°`3(2(˜
g×É‰Öúý tì[ºù>aPÚŽ”DØf°:~À=U˜áÚ/ùéoáÝûäw‹çŒZ;©Í(ïv©I]«X
"ÞŠ›"¶<¦6P’ÇÎögZ¸ýùïUÔN5]/úç¥oT?ÄéT1+µ/½úÀHNØñàåÍ×x~'r©c[¤%Ý÷EÖª³_ÓSôŒÎ[kK ÊÊ×À oë³–I!ˆ.f§§¬…‰I{þZ¼–sÔðÁ^èúc_‹(%çý`‚®FSž+§¸çÝ^  )’IØÞY„Ÿßðäº“É‰BÜCâŽ8[ˆ­Ù¿}šÉ‰‡‰Rß'Þ'?™'Ã—ÒyI²;*®-Lº5ÕÝ<‚ÏMüÙêÇãÃz2Î»c€ å²í/¾w¸„my=ohv…Ë•` ÀÓÿàü‚ùÝ-„JÀ¡¸ëB+Æ3±»3  !Û.ºÐÐàŽ{ãA†Ã5ºqºŠÝ1@pÞWç±ÎTYþÍ6•Pñ5…œ šŸr(Ôfó®†9AÿíWì·øññ%«;ueI_ÍB+{?ÙþXPøùÐA•ÈT…âÂ‚‡Ï+Ò˜©qö‡âF…ô®™f$ò!ãáÍºçO>!ª¯ÂDƒÝàÍ.ðŸ[´ˆ>Gã“Ž	‰Y&NÒwAÓ“Oú_ï‰ºRÃ;¯m<ÿÖ )¢—ŒÛ¬k)NsO\'Ø¥œù†+(Â]*°€8Ôhìî Ð†"ÁAèo…Yºt®Ñ•ƒ™¦•Ëò”FÏ{ï/³¿PLzNâså°`gQëwñ¬}Ñ€uÈ©Äœª\º‚Ü×Ÿ†´øïznéœÚB vv<ÛÍÐ‹ËÀYæ¶t†£ž¬è×Eòoß6Ûù°º>.":}ƒP3ÚÚí—fë…Œ‰W,÷Í·‘Ž·âVÚßgÈš;÷™ádDbàPðÿß]Ï)l¿8”r¬5>|!ƒž©½5½+‚^	9Ht½ÙNƒJ‚‰*6H3Ÿ¸¯«tW
üHÀ:®¥Çë[·)ßS…¤Bú,[æ¢mQ<fP8ÌF“|¤õã™ÏÏ›4"\5ä\ÅmtlTŽÑFÖàurª«*ô*»N†aLÁëeº„‘«Ã¸©·æt“HX-ji¶…‘›aÐÙx¤µÜÀÍ~‘^·òéÒ¤ÿ]eØâÔeÌYt‡+©Øq$‰â— 3µ—î¹‚ÌqptF.€ôî3Ü\Jý˜ ñ¬Ù‹Ô´Í[ÒNð¿ÆfZŠ>EºK¼Æy|‰¶ªÜÖ‰‹[½æúäÛù&\ÂËWäžæd§”ûc %f¤r{ÀÓo—¼4A•6÷Æc0ä·BÞFÊzSýî›_ø8#EØ©Wpðñž(x$NÅ5 *9¨¹ºmyâ™bFZUøž$`jÆWÖ•jîåx®\€¼ã¦ùÃ/—0‚ÀÂÚa"wµú9•É`Ó¹Åc	ðîÖ8ÌYÐÉ×Ì 9þ¢° ¼1!¢)fš‡Åƒs\jür9=¡¸sº ÅCÿ9GJz«jÆ–HS»?=
sgPmë”-7{½$03d«Oi§}Î%˜t„u¼yÿÉUÚýóèq²îÞ˜Ÿö…ÏÔÚÇðEú}”÷_pŒ‡+=ktyÄDQº1xæ…Š›iðöl6![SW8b³7úï¨f« l ÷á	
¶F£óú.xÏ|M^î‡ÅE%í´5Ý›‰]ðØï&Sü.Ù¾¨,¿kF±ôö¥–CmL×Í´¤Y²¶³Û›ºº¥[õËÔÉ19Ï+hÒ-¸õ­wg@Mæ·ãKŒÄîc3™a„],ëî%*x»c€ 8«ïeˆo|iloÝ­žGòáš[Æl¶0¨ÍK ,ÉC/ÌC;~"S1Ëpì%Õîmªàíz|™|¥vOÔ,uºå—z{îRÚáÔ‹J³×…rS÷$S?¡ˆ_×ñÓW’ïXšæâÕ•†ë$m‘P3prûºÅ¦½«æ’Voˆ¤î½-íK\±åÞÚêw©¼ã Ìr3Áóøu7wDqÌêç>Xp¹)]bAçÄ†ºÉùà
«Sx_GM[¶£0Sˆ‰,áÏúÏˆÌã¤¸ðÒôqâKÓ±dRùìÇ÷¢Ð‹¸{eó(HTOþ~ESKÌæÝò=g/ÐléÿzLÕ]Êñ¾N¸£ˆ¾âk(ýV¶yÓ¸‚µ/ðmPUÝýbþ,ÆcéÞhìÐÃ%#ÆÚ¥ˆÝP1ùÆzuÃqÆ*(¹·ú'S¤²¶aw”Ð§1ð$ºõ“Åtƒ™´™GlKÿ	;µ„Ãü¿K¦©"<h~ÝFHfé°ÙCkô„&²Õ½9ÖváíL£¼p7õ‹Ià—%§ËÈg`óMFõ	Êæñª$¡Æ[ƒè™œV'ZZÇë4kí3UQ¼ëÅ‰‹væÀß~ïÙû;óÖ_¥$òLß2cŸ¢Qðº¤û–uÅÌå} Â!9Ð |þÈ¶¤Óf5iï×Vä__#þˆ'ªñxÁlªæ¶­ÄÖ8¨2}@¹ü¸}‰ä£ˆg]±™Í_|6æT°€­-ÙÑeºã¾Ó¡>#südš¤ß,v ¶˜ùŸ{ùºgÏs½ùiœîÃÍºÍÚ—¹ Z±*æÑæOÏK…¨òº“ôo>ÙÆ ^ß}è-³·9ÿª¯2a°å¼õ7ÆjÔ*ÀsöPfåÁ0¯×–mÆ¾i­Ý—uM±çÑu+¬›³ûÛÃÙtŽÂ ê4I¿õÛIMØ@jP[æüC!æ|Ë*šÀ[¯C¡4ˆÍö\¾¯“¨Ï-^|ÅÑNŽµ¿ÐfP\Ä•¬Ï?×_?bËz÷}¸ýÃ¯J¾Þ6Áo±€‘mA±$Sªì`BOÙMÕ÷òQ9 `0dSÈv&ÓV¦]ôAUiÕ­‹•Écj±¥AŸï=--ÌQúÁLZuý!i5n¼·OcÀyÚ|SòD^%?–õbª†‚G3N[¦J‘vp“MpÙ¼žg§¸y¥“qNôê…&îˆ¡¯QMÃ‘ ‹ÃZÈâ$®guÞÖ•Š;’àÜèQ¿îXVå;1'”Xèb.µ":Sþ¢ ›m8ÌíŸÕägøú|uJnM_Št­»!Ÿù=k4Yñªlig~¡fõF%+]¿üzÍÅÂãX	°¢á‘Ÿ¬WZˆÀÃ%û8ìo~°i£Š{Øp˜Û±€3ýÅG9ÝŒ]³-cÝÍ¯˜ïÊ`º«5DõI'†È‡ƒzc</¥O˜j?æ@n:j|Îð’ìçÝÒÏAA!@—l·~âY¸¿«ÚkjYß+$ÖMÃö‘ç?	9üe€Þ­9}uîX.|cVsf	žBpå2þÅ ÄEÅÄŸs•6ö®¼UTÏ›Sã*ó{)à ‹)‰„þi%ÿÏû5 ÇÌ®ó ü²hðEßF­ä¡¨„ÿ¿ô¬Hºr<“i¬û”,‹8ï8…2†”ÿ¿(pg4èÏï£póœ9ŒùU:g©ææ0—„p4ãÑÔ¼ðgß' ƒ… Þ³½?¸ÇDûá#.Áw.#Î—â#Xd°’ÛÅ2Å¹š¹è†7Ì6"Î‘8>^¨ÿ«àh–r.jHÌ¼ˆª×ò#{ÿ»S!Àâ-°{à°Y³mÂbyÃo§Ë6.|¥B,¿—›ææ¥íÍÞÏ%×¿}»§Ø$ëkYÑ‘ó…¥ïçÞ( ;d§z™]º©E¤Øâ|Bù÷­Èß$°ºòÙÚ˜ÑÃÙêÎY™´OJeLìÍ²¡=ÌªißîòNO~wÏûDÃ1œ@¹7
®ˆ6­d.I,Ôî"ú,o"X­˜uùg•Û‚¥EwOO‘#ÿíñÏá¥ÌÍóæ‘Xã Ú;ë¸ì<Ó.¥žkÖ4¡îfªÍX	ÀˆðÛ­žï¼eoñ¿¹—ÁßQÞÉÅì¸_ïn_›Iq‹!i×P;UíÕ³˜œ¾´´YŽº`Áæv¬Ös*%‡%øÛ	È>XðK%Ç”S¨Œúe#Rá(ÿô¸ˆ70¡ÿ‰’Df1VÉ×}8¼4¡âkýnß ‚f-­×™¾Þçü”rö1¤¼ri7Ü®Aßc¦™ö¾ÃVÆ<‘”ºs­T–úZN¦[~¤°;žìEöÁý”iEþ@ñÕ#¯_.˜œ^æÂ¿3Êw7Å2lýõÿQ8e_Àßúw	¹ áúõ{JWÆ…,El›º(ÒRSH'±Ñ=+‘˜õ¬@ÏwžE?$hžpå|Œò¼õJf#-…¦\ó+—ýÀ`ÿÅŸÜœu¤*£9¯:GQÑ²öšXÌnä‚r±Höê%Þ%ÁU#Z­é–êZí÷C‚ÊIm¸mYÙ¦e7JÆ×mæ¹´0V”Ûapp‹â]]7Þ¸%¡ÌÏ+ß±°[&6î©ý¨Ñ²TÐŸÖjUè¯(U’bÙ›C¯Z#£ù¢Üý–ä+”¯jÞ¨´EürÛÁ½Q@ÖA/qåärÃï‡w©D}‚Å–;^ÆBn@¡¼…äþFÑïë¤“Dä ÁÓuÊ/ö…¢Ï0%QŸóXWN¹QdoÌì¤´`×þ~Üª„“4%ç[´ôÚR¤wØ œÇ+</,0¦yƒøI?¡©Û‚WG"¿D—Ã(Ú»V+öƒöå÷‚’UËOÈDPˆ<GmûuüŽÚ¾K ?ÃŠ&Hm*ÑZµÑ¦”ŠK³ÛZ€©#ØžåÏ‚¯õ_âz¬Mô
®po8=ÆžG×töÂ†òjx’Šx1¤y—–äSaì¸R+u"©†—îXÀq6GÞGAFÓvŒÄŸ5=~¦«å­î|Ë¦³o}Ö^Q"wÕ¨Çž¥ê"gokiÅÆó¬¦¾E¤%œ;þ¸;H=f2ñÉ– 4-åïä9}t•áÖ6©?ßìÿ¹-ymkWÉ	‹mFzÜifÔFÇ¢Š=Þ´`®ƒ³V/!À®Ý¡rßˆ1è87vºö :ÏØ5~U¥Êê	Š+&~žG f+ñ÷Q}sº«K=Ôú´súÙ³·žõÇ–Fß^ú%¹Lat—mî</8<"ˆ tXþ:¢]¤Ê>ùÚtJïªƒ3÷µÆ·Ûó­ö½aiîiT‹¯ÛðþðoèÒJÒl+Ö8(T×kÕoTãÈ2ÇMÒ,HsS8z¸+.~
_“ n'&Ì^?bTSÎå±e®e‰pþë“›Ÿ²Ñj¦ÑçW\F¶"{ß«3ÍaƒFŒ/õìa²Ëm£ðÏ—[|~ÃNc% #]6©ÛGØœÄ¬}˜œEÔ`G\)­8w H(øùn*„××Òvdc¼19\ñ#.æ,è’Èf×ýèR½ºx÷¬5}óRA4æ8 Ä%vAî‰ßöíFIgûÁº»L;Ò;ÄæÍ\-Š%Ån"ªÉO£i©÷Ã‹}"uØó>Y	ZCÔÉ1f±Ô=<Á¤~ÚƒY;HÍêÊ”Gù%>ÒrNö&bÚòåØ¿ë%šxNÿé&Ä1µg>wG¨¼SÞ2½Ãœe`~ð'U
#^Ÿ'9ºžÄ®ê)N†9ˆ8< qAO•ßÇ;=æeL±eÏôò¤ÍJõßqAG‰É©œöËGòÉÞfò\Ò^ü-»JéšæàÀ­c¥-~Žÿd"÷þn Æd‘×ÿ<G¹8ýËø5Í#Ö'Æ·^fô¨0ªúçkíGÝTvX‡#Q-#nYìÝ×ñ·\br˜á:À8ˆËŸ¤ÎÊ½Š?dØÿk=ãØê^ú«ÙC¥däªŸ¬9ÇÒ	ß~X½ž°h.f.Þ?-fsËaè[FÐèÏTm[Fâ8Ôéúç^ˆÃ]%”çówm±ªh’–ûÄkiÁžÕªñÈ´x×A¹Z8jg¡ýô++³Øp9<ICªÄ·~B Åþa7ÔŒ¿åÄ²„™@öax}èv`ÎÚ`¤W0sÞJA£Ç+Üÿ¿ôëX}æwiE]úõüG3/HŒsC^HýÿEõ’}8Ž×mø§xŸ`ÞðÙØ6L%íì”Ç«¾\¢¸ÃÑL£`XÓì}‰O"z?$x óÞœIsªüeG£sHùèÂy¯¯£‚öÊmoHeNó­ê›"ô0Œ?^vH »½ÓX@ ØvvžÏ˜¹ÃVÃó­ˆI©Áí}¡èÞÃÓ!ü’“M…Ð`õ4CrÇRb®»û¢ë°Œ¶AøÉÜ Ú[êŒ¾úeø5‰|[_$ÄeºÙíà1˜™ 	ÿšo5ZÓßˆ8ké7IWÔuØí¦tNÏxœ¡¾ä@®ö+ðÅ%¯g	{p€càM§ªñRºõÚIˆ{¹F§/XbÆ,¡K'ˆ#ÐÃè^nIÌ1âÈ+N#ûÙšè·°Ü›M)á’ï©˜#¯J’Þ– Ý€Hí²JžW¨6Ä=8è,¬1uKf¼eoŽÍWh˜9Ð‚]ÉºÚ;–b¦;FÜB
™x~íüwœÏ‚ Nz"2F’à]¡W¾²×56¼‰k¤²àxîM±,cÍ»1ßhjÏ	Yû¦né„;Á0G8
âôO+ã€àqrp‚Aÿùú½Ï/Å#b/ÙÙ»©ÊsÕ}XDÕþ¯"ÐK|	Veu,&˜džÕ¦§—Pµ©ÞÞ„€]K÷W
p4âU×2M2° "ÿ|<sƒ …Qh»afP[ôÉMòyé-v7[—í)E•¸ñ…¼5žÑ½9ÐÛûÉZÍ¢Ü«eC…ƒÚ'ýoB$ÕßaôÞ‚²úC÷d$¡ïF	,¥‡³9‘~êÛòZîlf
6‚f0pš9¸s³mŽ ›gè­"MOP¦”ÃG×¯±d5F¼ntÔ/•*#"“iO`% £(±É¬›¦Èå†š)*‚ø%§‰×Ù0 ˜Ì6®M?xÊì²Ç~Y<?E7ìŠ€f“žùÆöO¿¯4cwô¥Ù—Œ>`¸+ØÝJ|6[Ïœ{â">§å¹X*»Øìl* (Ôf'šÇÌb ¿ÏF|ú¨ejöCtié ¥ÉáÀ ½9ôZü'¹µˆqþ“$Ñß×¿œýå[e5¶7
`8ŽÊ…¥ŠÝtåyŠ«+Úƒ™Ä<ÚåPrÎJÑÝ§ˆÏÅ6Ø.éœaïÄþyPþÆQxŸŠy87ÉÛ©»Òîž'Ìü÷_pê§îé(@Õ$Î$-©UûË{‰Ña.áßÆySÝV/h`²ZnLøf¥+-»úøÆ'—½(ôÊö`¥”ƒŸÅ[ÞH$÷ùÍ7³ªÞy‡ïÑ=!Ê/+JCÕI¯~Vý¥ÞeÈŠ‹õÇÿW¨‚ë#Åc¤¤KHØ2#þz`ç³¹g·D!ðÇêáKò.R—Æ…ÙñéÈ=Ö.í,ë¤ÇC"â«CO.•p×êÆÒŽVXÅ”íG× IŽÞ¨Û^fý" ]­÷?¡rß% G 3¥ßÃùv¡|\òU^F‰¸@bçÎ, Ü (å?ÿ+}26ü'å˜¯ŸÎ¹p*@÷‰ç>aô:‘‚0’Z|îç–Ö¨YÅËv®%Füø÷Á—/ç¨#i™ÉùÒ¿L&4<9é¼7C«~¡›ïf½±î §Æµògõ‡L¼cýfœS¾æí‰¾v/Š_^d¦VÕ¸PÃ4H&·Ý“Lõžº8gÞVõ§ÐÅ¯´å™®x\\ð3ˆnqŸGg‡èŸ½,ãÈ“Ö^ŸS-óùö<zS3ï¡CtvT†Es^3C¬<ŽbGÀž•nÂXül°„—UÄ:o‡D(ïÌÄæÛzÆWmxqœ`‘ôõšÜL—&ym_ë®¨f©ƒ×}àÍ‘bÚ"QýçG¥²•¼v¥À]RX~WœH7 »SÕ÷“kTžkÇ¹†Úšþµ_Eñí‡¨­¼O­»÷ÝH»>)ˆ»£ùø›@?gµ0×1©7)Á4îj8ºR>Úqÿÿƒm÷²é~ 9ö¼OÏm¼?ÚMm® p;ÎÔ!!(Ë)¦º\Ü&Ž1¸|þëk;NÜÓÔ*{@èîŒÂíV‰:sÖê¬ßTÃpßdÊÑïÁŽ¤Éy¢ùÍiK¸d×˜(SÔ	œ0afP§-ñŸsùŠ’«3v,¼Aß;ì½3GCOPßÅ·ûÆAov.»gåm“œ.’éóâôD¢;êz¬% Gp1¼çÀU· ¼‚×,‘g;ÄéZ0 Þ9ÿn£2jÅéNp\UO˜"gÙš´LÝˆ[5gO4.†ñ?“s‚v>ewÎÁÍíw•ÜŽžÎ<×_Èõ`s2m³•„¡yl^+˜@ô^y›í°ä?c|ä’^=¹…ù§éâ9íîªWÏ²ß'Œ>ÏWJblnˆ»Õ»Snh\¬OÀ‘ß'¸s¶¹ó¨'¦´>¼®E$Š|lÇÞû×²^²Ä]ók«z«XÏwüµù—¢”Ïû¥Ñ›{e7QH„Gô~`sâ1/¹·Î´ß ý“k¿õ“žXVK¾óJõFÕ¹hL¼9fóÏ£ØIð»6·ÓÙB@î3K:Ó…ÖÔ>{@ l³aQ=²­!8Z”ûõ\œWr+î^?.¼¶Åÿuó$åÇc–eâHÆk«š˜0GÛÿÆ›PûÅYóŠCZ!ÚI~ã%Ù%²Ç%Éß7Žyyzë‡Õíšxðãó*Ü‹´5«û.÷d77PçhüÎÑÓ\räô‘úmÁíü·æ¾0.£ˆá‚Ø‰¬¿‚¼ûf/»î¸¦[ÖÜKé¬Ù·\°Z˜Å}Š;&.ûZpG'æï5÷kžŒæE‰Ž©Q;> €:Äž{>¿£jùwÂÑtÜÐ}nå_-ð¸£uÐcÌýo^±vDÃê÷¢‡Ò¥¬ÇåÆVµ­:¯zîiûí¸ü9+»¦K›—ðÛ#W¯ö}!évØ e1ý«±•—?rïRÀOï¯¤bJ´ùU²ãem†Þ!átDç ›ñÈ«—4y'¿}ÛÑAßA¦ö«.äHAøx.Uïªž]¾e±~ðvÐÎ¹y„D`d¹{}þEd©ï”ƒ_ØW$ä¡Â Þîú|RDS_æÃiÖEZ‡Y”÷/IDÞÚßÿ%ïFxbŸUÑrI©Ø/¨nc
#µ)¶.\Yâõê\&…9‰’£AñºuÌYPèÅ÷n2UhOõ©ßÉï¬Šžìèp ã€HôÛ~îrY{‚Ä[?^w–j”ñí¨C¶ë­ÓK>‡ÐTê•Lö¿‰BQçj3ïÎ 7ùÑA`\kŸ¯®ü”y9, Ý;Wu;æ„úÓQFÿÒ8ñ•b!ï†¬@šS‘T:¾vçî¸&[ð‡Nú˜?7)£=¬x*"Õ‚e–JiÇëÈ
Ü¦mz„ñw&ÛœûÑpãúUÅÛ×0@öw†˜oêÕCþä~ôuØjæ¬@Ö·0-û=µ­èG^‚€2´¥³}•ïí¼½Ñ&±b²;j¹®ªÆ0fŸª_Ýè'>A¦Ž‰[u˜­9bSs¤?"Qµü¦Khú€ì'ÆÈq;z¬[PÐõ•‘®äÂ†}ð'ïSþ}IÞJ»càÎ[k]é‚/£Æ—Ú7~Ÿt²½±ìú§‡ €¯XÑãL0pqñøÏøƒwB'Û{Ýˆui?ž	kÙÑ.íR ¨žèáÚNåÚY¨p4‚}¦E¡hÉÇ“¿KÀq¨Zèy\6T¥jÈñÒ¸võ¬ê!8†"0‡X†ªO—–ˆÙg%ÆuT½ÆÛ¹O½³˜‚‘H¦½—œâU/n+ƒ©›öŽîõ.‹~øk¦&7ZÅt7Î”—}Õ”=~Ó]l	ÌP:ýyÈT.u®Í,J]¹ d[Ôó†òûDæîh:EêÙãçñôÎ…t8ýªà¨óŽji+¾;kíÝ`Q2© B¥7îÊ$ðµmò#ºE	ò›OíU•¹6S#Íš‡Ò÷½(ôÐ’£é˜t¸‡9Ó4¿Êt *CF<Kg/Ð¼òj8Œ¼ñMb¥NPQðÏÅÇÒ2¸-S³¨[{EÈË¹ñKä÷ó5Å1»ƒ»3 bÕÃêÒ+Å„ÙÂ^åÈ°Æx#÷EíÝ1@°ñôyö8Þñ±Uh¥Ý¯oîÂKr×1]èíU7®Œ[:gïåšåûÇjXÏeyµïjÀ<s´Ñ"–A} üòLII	åá,$¦»dçLŒçPÞÝ•"QO^¦®èž(…sTý·0ß¦[$ÂÆŠäAØ9 GhŠåãòädžÞ™ê™eªË{·c„xBÐk¯ÂtT[†Ï)¬^zÎÎþä#œìÿ,8¦P/dð"‡ˆãº&GŒ¾BÞ (Æbv.Gê•	›ãm­V1—Á¥‘¶RKçÙ
úŸ·|hzuüˆÛj¦EYbvóÂ¹}Ñ€5=1¿ÈFB¥N/¼W/—×Åˆ{·6ÀHØfuâhk
ö‡¬óF<žV—ÚÈÉ€R‰µ©½Â–Ý†üü:>h5U¥iÐ,Ï'½²ìÿ‰ tDŸ«Ø=ò`‹,­däsNà.ìß™wƒ"à >Q<þpî1N&„¨)ÞuK;{ú7Xãè±ÑV|2Ï4Úˆ¶{ÁËï«rw±àÔs}âk¥¾2_âqôcz•o;€MX¾jfçÕÑL®SõÙß‡	,ÙÍwæ@‡œÀþY”9§’[ÌfÞ‘7Y¦|Ù·öjèÊ;Mî\¹aD_]~zãõýž-óÕn¶¨ÿL–ÂößYÔ…fø§“µ:f—„)Ü¯®»‹ˆÜ›CoÕ—ù£#k&Ã3óÀàãc6ŒõŽÖ{£àš<¶7†ÍêaREºæwkKŠ>Áä3xv6ä6-“ˆég‹æXSí?3^6è„¢¿» ê®Õ’÷<_ÛW<Ä3%)x¾xEÖé^\¥dàPocGØérÖB>¶nGÌa¶0”å?bgªc«éâG©©{qàqóøi^†Ú» q9N·Xø pØQCvƒ »ò#ª»Aà¢q†5Cm”•MÜ¡‡ã4ŸŸžgmÛÎü÷òyC9‚E;2ÛÓjöC¥ R'Çc€[TºêOÞ\4Áí"ªçòùñ}Á+ÎÄKØ @güÕÜ§W¯ÒòGGßÏhg{ÿ<àÃAyð3ê“7Õ|õùOí¹„?¾!–¡b¾÷s==rOdØ.23òÌ¼•mé’˜ã€ˆkŠ„…æÝ	Z“Á“TmWÛá¹F$ÛÓss˜í¿7S`ÔÌaÄÍ¼›ê¸‚O5²Êój}±ÜA{(Ž´Ý¸*ÚAS~ú¥ÀØ2+|Ço¡À„§,X¤)‡ypbýÈ/„.d•ÜÙAmÿQK¨¿Ÿá­Ï™ïÏKÚèò‹=z…G½´Öº¡Þ=Lü
r‘Ùª(¤H¸‹´i®ÕÿÉ˜ðí7ó€jñvýYÈ —PF½“ÅZ­CCûè">¹dÉûsb;î§-z¢ .Oäûé|<.Áü ¤ƒ!¿p¤ÿ®`w®c*ÿò3Ñ·ã§ì9Y	r…ì„€E„ÎÙ¼3s©íŠõÜãl¸$\µ²Lv»  Yˆli†Óo†:F·äšê¶ª»úL‡zva /Ö4ä8kJA=Ãë³µH¯%ƒíÈ? ¸cÄ¦šå·s‡`™§¾¤z†q'­›½kßAOb(?${ïÖªc_ñh¸d<}ÍhwìwL`dî8k0dr[<A¡y/üëv
$ vvè5¹/9¬¬yšÞçN=!TÏO¸¼ì`ºÊ±@ûó›Ÿ={‚h^V’Ÿ²h§»m³îH8¸Âì©?èsÎêÞxª»¬WÜðFþ×¾„u¾säŒO®¿]g–r9=8wÕË°„þ^uUûÅÜÄgæc½Lë|Á$Èz÷à ÇCâ&ª†ßâò¨@>J«É¿¬¾û³ªÙúð˜†²ä]ñôDºÅFê¹= Ðq™ßþ4±qÛÇüŽcÖxÂ´i—öàÀŽãK}¢ëÁ÷ÌMŽ­«¥)Ý>Eïún†t† ÿüÂ?ÈJ #É‡LÿÈiWa©¡”¨'Võï÷¢ÐÛ,Ü§Xú¤àiš¨N4á n™ãÄ^ øú#¬çëLVxÄa¿ ûéw¨}ËÔßo›J%
ÞM:ÈÏô’J‘Kªiÿûsõ?ûD¥HÐËIÔúùÓ©Ê(þÐëïµ£àO|vß|‹ägöšÑ‹˜ÈZ}–24¥À²ôá16IFYâdKVr%®ä…W@(ôN™:ý%E²"‘ºW=ÂB@–Ã°(3*ù u<070701018A89E400008124000003E80000006400000001646F203F000009C4000000000000004A00000000000000000000004D00000000nvme-cli/.git/objects/pack/pack-220e91ba573dc242034096c3b028332af920753c.idx  ÿtOc                                                                                                                                                                         	   	   
                                                                                                                                                                                                                                                                                                                         !   !   !   !   !   !   "   "   "   "   "   $   $   $   $   %   %   %   %   &   &   &   &   &   &   &   &   &   '   '   '   '   '   '   '   '   '   '   '   (   (   (   (   (   )   )   )   )   )   )   )   )   )   )   )   )   )   *   *   *   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   ,   ,   ,   ,   -   -   -   -   .   .   .   /   /   /   /   0   0   0   1   1   1   2   2   2   2   3
{žú»žæå˜ÏøØÀkô"^`ÙÉwë×A
‡R&Êª(Y¯™AîÃHRÖ<»åœ¿Àb~7D¡Åg *­óç9ÔàXû’Gärúúä]
·®ÚyŽ/®4é*—úAìc…"ðúÂ–ÎQñßPñnìq·õo1ÁeîqËÆ,ysù½ ©q˜CE2SoŒ²ŽXNfê™yÿÈ˜3óxõÄ0–â½[}PÄÇ `5x NÂs·¬gþh0yî¹Í¨Ý6šf{ÁF„å«¾ŒTñ€oå,O²‹êÈÍ¯Òl{”U”ï½œQ™Õê¦vÛ¦±bñƒ&ú<7v˜'S–*ñ.“«/„ËÇÀÍ2‹³ù¼”VüJÎh‡<1˜wFî²°Ÿâ¾WVœ*ïSÔçRöÝ­hêv”í]ªX#¹;xpáÃ5y“†·’ºñl¤´×ð08z¨œ*AÑaƒ¸/nð#ÈTb]ÏÜ^¥?s±ù¡Hr¾x>o;	Ò“?ocŒ!©ˆKz`=',iÀ¸­( ºäËµ$z„J†ÙdßŸgÞ¨9ç’Kbk î|eðB«t+)í±öí j}£¥ý€>mØúJ¤¨unçÝÉ'kÇ›#€ÚØ´ÝN˜K®ˆÏŸPaLÝKÙƒ”/l7hÅÈ›“üì;kúƒ œ‰däh¤^»¨6C'ÖF>¦)ÔOœû‰ûÿ-¬•K&;,ˆ½5ŸÊŽ{6€»(þJ6|&m­ohŒ¥z§ËœÚFˆî=]FšsK½Ûi+dX–[&@÷1-Ò¶y’tš0¥ÎûÚÞMô~¯HZ<Ý´S·š|ôSî•‰ösÎ–2çFj ïpÃ½ˆŸ\Ò_;îö?0 ë‘þ¥¨i¹êŸh¢Ú{Úøè*ÔÝä ¥¨¿·Nl¯eÂUÔünx÷‡g…ôt©•~»eg/]ø"‘yqìÈL¥™­O(*°¦8’ó$åòÓôÆðàq¶´ˆoeTýt·üúÒu„Õ³ŽÑÏÁB˜IVsz3çÀg¤êéá"ú?<ÆÀï‡†i\)bU3X>ÐXEc<“Ó}™£”‚`º?éJ·§ù9Å|¾±Ö(B«°R#j.ã*¸[Ê© uæ'NºžŠ³„tÎÖN™FßšÊê¯÷;oµ~±aú,Ýí8gÌÞ9îÒwìãi …ñŒzHZñÞ‘E¾Z›´„€%6ÏBõ äAõ—
`ÉùžÔ¥Æ¶ã¬j¤rãFøalAvË^@!®™÷[ñ¿ §9zûC 
N…û¬qÓ«Âù;ÀÇìÿô÷S{ÛqDÐ}s|Y¦í€áØ;md£zfãR£G2’®"Í”ª›¨{H»È†2Ä@<Ì“Ãw±Ë†­:~x„’I–µÁ2ôŒ*`Ã–Ô˜›ÅT:õ¸¨^$Góêf8u°®AèQÔ´ÏÑÎò7†ŽzFâ¦ÎÒP†›OÄékw¼×ºŒ;%þã;’ËºP„Êûÿ%8ù¸(¢›¸b”1¨¡ËÖCQ°›
õÃ~‹ ›ò‹ŒI'¬fæœÎÌ0Õ˜ÞÕ¨‡êSãHŽ:Wb·äÇ„{Ïõ—G>+õ¯Üˆaw)õ  ¬  &  ù  õ      –  †  	m    \    «  ó  .  9  ²   ³  H    b  Ž     4    ì  
\  A  m  
  t  p  ©  í  k    $  w  !%    
Þ  ,    	¼  å  Ý    °  ¾  è  ü  Ç"‘ºW=ÂB@–Ã°(3*ù u<ÎNÊ$Þ=1Ì>Ÿ ÂŒµ)"070701018A89E900008180000003E80000006400000001646F203F00000000000000000000004A00000000000000000000005200000000nvme-cli/.git/objects/pack/pack-d9674e1f14d3b7996add6e47cbfd49d0ae231931.promisor 070701018A89E700008124000003E80000006400000001646F203F0000621D000000000000004A00000000000000000000004E00000000nvme-cli/.git/objects/pack/pack-d9674e1f14d3b7996add6e47cbfd49d0ae231931.pack PACK      3«
xœ340031QHÎIÌK×+©(aiYüüá‚wº?.­H‰¸¹î•=ÿ’tCˆ¢Ò¤Ò¼’RÝÄ¢ÜŒ4°ZÇFlÚÏ×üÞ·|e¯¼F@6ªÚ‚‚d3“œT°êìUï÷¨Ý>«#ýñ‹ž-Õ:Šz%§PU[T€Õ.”ß§Y¢Ñ•˜l3¡ìÿ–ö=	9 .òE—®xœ342 OgW¿`W†íSeWßizëvù¼ôão»­òkøÌLLâ3óÒò¦¿~v2­9=Ø5¿Öõëºw_zpB$•fæ¤Ä'§•èe0ì|sÃAãñï×÷3Ì±	±pò“07 ˜•/Ò¬xœ342 OgW¿`W†íSeWßizëvù¼ôão»­òkøÌLLâ3óÒòÎ8¥›Ljœô:½NÊPóÆkÙcÓ¼¡
’3R“³ãK*Rõ2š«ÞWK™­ˆëÒû^zsÑI¬ãÓŽ  ·i+«®xœ342 OgW¿`W†íSeWßizëvù¼ôão»­òkøÌLLâ3óÒò6Š±*½½òçoÐäXK¥Z[ÉTCÏ7PÉùy%‰™y©Eñùizî‹}[­}Š?hð™ñ¿r4ixr¿I ç«)Ï¨xœ342 OgW¿`Wå‹š®—•d¿ÖÎr9”¥RÎ%lÈih``fb¢Ÿ™—–Ïpäó£k>IqÖ|Ý¼RÒ9±Y–Ëª '³¸D/™A]ü—½øÓ5r>ûe¾ôÎÿëül)²Š†…ÁŠG'L}_±ÁùÄŒg_&ôK… ê3h xœ342 OgW¿`W†íSeWßizëvù¼ôão»­òkøÌLLâ3óÒò¶VÅ¯:Ø'¿TaÚ¦—ÛÞö*ØÂU’šTš®—ÌÐ8Åéú¤å5Â–+îéažÄÍî-UR\RT°R%FÜéCª_Àvõ2Å¶–s!)È`¸)¹Ã×sŸÍçåÇãÿÎPú#ž¬œŒP±(ƒaÒAÇ3‰ËJòÛSN·ËHgZÅF GN¢xœ340031Qp
vÑõõaè¼gê>õMUÍ­5œš©¶f!¼†%ÎÎÿvn”x¶uÁGkßCZá{«¿9ñO  ËUÒ¦xœ340031QrutñueØ%`´Nú ôSÃ½‹:bøw/w9“fQŸW–›ÊPÎôçä‡3&íÿ¶Í1hhX¤8]ðTARbq†.H‘nr~nANjIf~ž^qÃ¯Ç«VpÔj…E´.u{ ól_ôç5 7/I­xœ340031QHÉ,NÎ/K-ªÔKÎÏKÓËÌc8ëà«Ž³ºg„T'¯‘¯=õÏee~ Gg§xœ340031Q07ÐÍ+ËMÓM,-ÉOÎÏËKM.ÑÒiz™y»¦	¦y}2õ*[Õ”æÓÎ‘÷Óö{ ûÛ ®xœ340031QHÌ­ÊÓÍ+ËMÕKfxàµÔôÇ‘µRý3DNÌz S¸-„å¯!º²†oG~ìÞeº„û‚@ùC“«­¿Î˜ «± þ®xœ340031QHIÍÉÑÍ+ËMÕKfè»ÈW¿õÙçøÕåÂº®Ýê+|¸Ñ•e0¬úpO@Ç!BP—åØß3“Æiþ-¼ #„w®xœ340031QHI-JÔÍ+ËMÕKf˜Âñ”ízÈý9FŒª—6öžÛÏÏkˆ®,ƒaén®'l7øÇ„	÷»¾gä9ñÿ UÌ…¢xœ340031QÈ(M,OÍÔÍ+ËMÕKfWh;×cœ}dš~;¿þ'k§Ãrí[1f0|™—Ó!øòêTQåW²ZwIæ]0 µà¨¢xœ340031QÈK-I,(ÐÍ+ËMÕKføzšÝ˜cÇ¦ò¬–ÃÙL¢3ü#1f0ßóvºr[|G^Åú%.Ë¾¬9/- Ÿo¢xœ340031QÈ+ËLÉLÔÍ+ËMÕKf(|°Ç˜õåÁeýwßì¸[üïÖ¹ºØ_†˜
3lÛùD^¼;§õÏÊ³[6˜°Ü:ÿ ’B$õ¬xœ340031Q(N«ÐÍ+ËMÕKfð>¿?kï¬Ãó}Cw„7M˜mòó¢!šªî©7u3/GTI™¸¬xÏ"/ÒÏq! Tß®xœ340031Q(NMLO,IÕMÉLL×Ë`°üpyÖAM†/'ã›Ôo°}ütò‹!ªÊ¼²ÜT½déË\!…Cî.ãîVžþ¶;dƒüÌTl*3f~3*þ°Ïpî’.µÿÿ#>L»°}ÝL ÷ì4|¤xœ340031Q(ÎHÌËËÏÓÍ+ËMÕKfpò¶/Þg°eÝs“O†K³.ë÷XúÏ‹ÊÕèmÛz‡mŽ3X;§nAöÿÒGÇ%MŽ"Û¢xœ340031QHÎOÑKf¨:sÔÂ'Eâ2ËfïânË,UÎ´?†Ì:gÏ~I•xTe–¼U›—}ö{}¸‚¼´Ìt !‚†ÊßÚdŽ­X*ÿW‘Á1ãñ{T5ÏäÏ9qì÷ÄkÇÊ²íåÅ]¾™+AÕ¤$–$ê&¥&Ò—x¥¦»©Cÿ°Ï‡­Ïž>ÃÏÔêŒ¡,ƒ3n›ÏCÇ©ŽaûÏul;7Ýˆ—óºTYFjbJjÐ¨­‡ÜôÅ,¾õ`÷¾»ÌWõƒožý‡ª&ƒ©êk¸Õ3Ý}\Ç$V,­’¤³Ï ª&7µ8?O/©43'…!xµ«Žâ›é7¬êÙ¿§Û…ÐŸÑ-Pe%©9©¹©%E•º9ù ¾|ÿÝ„—ÓsÕÓÏ_Í«ÚûT6  Å,¤xœ340031Q(É/ÎÈLJÔÍ+ËMÕKfuø·<vóûIË¦©†·q2Ÿ­/«2Ä¢2ƒ!‰ãë}‘åå“ƒ~ß˜){AHúƒå¤Ï [!N¨xœ340031Q()JÌ+NNÍKÑÍ+ËMÕKf`rüê¤±òü!Ùcy•zjßåŽbU›Á0§³Ã‚Gg²ßráË;X<ú%;ÿ BØô¤xœ340031Q(Ë,*É,ÍÕÍ+ËMÕKf8q_(‘ï}ÏÌ}/ßjû]é´Ü‹Ê.–Å.[EcxçÆ4ž.[ueÛk \!°ª	xÚ340031Q(OIÖÍ+ËMÕKfÐ·>òµ§\Ñà´è¯>wÕEž†hª2ÎÞLŒå=wlÏ–½.ožd~›øì+’ªÒ’Ìœb aÏä.±û¤œÈc[±»(§.À˜{†²†æMïŽx–²NÍ{õü©}Îòåý ‰=*¦xœ340031Q¨Ì-IÖÍ+ËMÕKf¸àÒxâÜ‡PnF—€SK+ãj÷¯ükˆ®,ƒá~ldÿëU«Eç2>ªæc²N]wÇ/YYiIfN1På÷9[WnëX¿×‚=·TýABW@7 k..x¢xœ340031Q¨Ê+ÖKføÑ0{IÉö‡–ÇEã¹4C£w}Éó˜iˆPÁP¾ÿnÚê?Sn~Ú_Âp?VdïW¶¿– \Tƒ­xœM ²ÿ100644 gen-hostnqn.sh ³íñOÐ1n½h`;J¨ü@qþÆœ100755 latency 
ŒÄŽÄ.i%«ðuKôùê‰4Œ¨xœ340031QÈM-ÎÏÓK*ÍÌIa¨ãkoéŸa;©`ÓlçÐi_ôv}lþgQV’Z\¢›X”žœŸ—–™®[XTœª—Ì |âÊ¿÷çfÞ}R.ß÷×£¯äîLedÅ¥ii™ºI™y‰E•p]ñYGVLË9UW£³ñÂ<æ9•FË‹ŽaÑUœ	×±g’kZ»úœ™çëµî³%¸;—¯YGif^‰¡‘PPñaWW‘gw|²*éÊätùà],Š*“7‹FÏß¼îXßÑŽˆãÇ-g ÷fp5 xœ340031QÈÌ+IÍÑÍ+ËMÕKfèÒ<?y¯Xš¶ê9ë3ÇJÏwecÖ1ÄP—Á à±r›GñÄSÁlK„/Ûùh- l!Y¢xœ340031QÈÍL.ÊÏÓÍ+ËMÕKfØ_[—ÙmÂ_VÇÕ:¿ò¿×šnbˆ©0ƒÁ¿ºS©­X°6üÀÓ£ó+‹s®F¥  ÷U ^©xœ31 …ääÄ<†¢}vùÖ|œ—&Ûóä'÷(®ìhô6Kçd&§æ§3„‡ÍÑz|åùÜ ow×f¼*ãžò¶ÞÐÀÀÌÄD!7µ8?O/©43'…Á{ñÖ_¡¿&ˆ6u^Ü¢ÑzÙ#· 5*j¡xœ31 …¤ÒÌœ”øÄââÔ¢†¼Ê'XC’bûÏß‰[j/V¼ñçB°²äŒÔäìø’Ê‚TÃƒ©ï
OÓ©,þ¹wÁJ‘ÂÎr®PEùy%‰™y©Eñùi<ïz{]³ÙýtÎþIuæ.B”¥æ¥d&æ1OÓú¨7Ydµ~ËéãÎuoþ¹g
DANfq	Cçïÿºk¦z«1O°Ö‘íØk:_þDº¸¤ˆ!pæÕWËÊn/Û˜ô±Yí—˜yÙu ÛoVå¨xœ342 OgW¿`W†íSeWßizëvù¼ôão»­òkøÌLLâ3óÒòÞ?]±û^©aÊ+…\nß¦“{¼æ‹'C¤æ¥d&æée0˜™À|¿7ÖP¡këÆ×K¯?› O’+S«xœ340031QÈÌËËO/Ê,ÑÍ+ËMÕKf/î3¾óÕ{ÊŒ>ý¢ÒÐ8û0ClJ3th¥Ú}<<!\øG‡Ï±™Êµ¡JK*RSRÓ€ŠVV1tÙpGß“Y0uo‡ÚžÇÒëo |ˆ-Â¨Rxœ340031QrutñueXú« åï‡yŠn
û.M¯Ø7kÿÊCˆŠ†Ì†¬y^.®™*{TÒ¯°×~îÿ•OÎÏKËL×Ë*ÎÏcàìßÕPÅ¾“19F^ùèæÓ»oHC•å¦è%•fæ¤0$ó›Þ¶óú‘®~üÿô¿Ãå7¢~C•å•å¦Æ'–”$&gÄ§¤‚©¼âø’Ôâ½‚Jöƒ¿žÎ°Ý¦éž9ëÛÐ+*6 kLÎÏ-H,J…«ïýóÀ}zgZpÔžÕMWNß+9¶ñªú‚J¸â^¹*Vë¿x·jzÃàóþù$ÅE©‰%©ñ¹‰ÈN
¬,Üª).z@µjò*þl³wÈºRŠsájojí‹äz¤x0R^Ûà•ï†©?“‘Õ¦åÅçä§Ãuìšx@5;þäæÿó÷­*ïÑr¨DÖ‘–SZœWýä£ú­ƒ·|V9ñ“Ù§âLæ4…UÕùE¹‰%påOý8g$9Çt&ÿoÉ+xÙfÒCQ^Žâ–méâ<¼óW().ÿ³±NÇsº£'²òôÔ’ø4`•¥"‚§Â_ûÏí=\ÁïVÝdØâúZ_ÀQ ]SNRb|q	P#B[ðOóäÅ{útn.àÙø2£pÞnÖdm™)ñÉ%E9põ7½N¿Ü°ÒÄ8|aÅW‹G	ÿ«âÑÔ#ÅYÚ£ŸVw
ç_çë“/â»göZ€QY5’ƒà¤¬\Ø„ýj‚®Š»Œ‚Û·7¼u Y0}¤Ä—e– `Ï:®5t\Œ=~8OãÂÚ]–\†¬¥83· ¤H%"éÓºõÚß©ìÐ±s©3ßÍÙ)õx‚Ò4}¹‰E%(Ž›˜÷eVTž®·kkwÙÄfc¦-‹@ÖSwõÍÂ†»ßù‹Žœo˜ô+V[Î£ÄèººøÌ|Òý–lÐ`)µKËMº°ø÷½÷¥JnHO-)¿ ¡É’cqì"·s^§RgÔM|à”…¬¼,µ(3‘Ýjšú÷o>øIîÆfíîÝ=†ÈÊÁYš—Ì0-ÍW’LŒ×?¸´5ÕöZ×ë’vW-U©Eùˆ¨62||wþ„%©gjNþ;9ßqýùÃP-E¥yñÀìŸ“™W’ZTRÜ6ÛÎ-ˆ'NY¿~ûjÜŒ‰ÿY•E™‹¢xœ340031QÈMÍMÊI¬JÕÍ+ËMÕKf¨r3^¿díïÈÏb]§ßJT¶¾àK4Ä¦4ƒá‘È©Ô£<Þ†Gvžµ×pß|öÇ¥èJKK2sŠj¿y	†¹|‰ˆYsªøé5CŽ¼©› Êš4d¬xœ340031QÈÌ+.(-ÒÍ+ËMÕKfè™4kAÜéÝÇª.„ñÝŸü1ña!¦Â‘¥Ïæ5ÖÉ¬œû|ÝžÅÉ»®Ûù£*,-ÉÌ)ª¼"¸Ÿ_ó–vYA™]ù*ñ{%oË:TE2 ¢xœ340031QÈKJ+Ñ-È)MÏÌÓKfÈzzbö¿èBîŸŽ×-¶›äb*Ì``lö¼™ø~³ÒDÁÙ:ùç¬&§/œ Ç±,¢xœ340031QHK)ÐKfÓÔëùµ¢ñÙböxõì--Wçu:"d0|LÚ¬(¦pJ÷ù-^¥g[V=¿j« ÍF«xœ340031QÈM-ÎÏÓK*ÍÌIaH²\øgbhÄÙ/3l§5¯OXx‹ß¢,?¹@79'5±H7­\·´ %±$U7#³¸$¿¨R/™a§rtÓë—<Êò!;
×žÐÞ{ùÐ"4f0œåp9q¤ãïÜZ¾[WxÓKî™5ï?’Æ¼²ÜT ñ+RÌ¬ëg5¸?}òC„ã»•çøÐUe0Ü™'êïúÃóÖ£¡|i+œ®¬Qþ‡¤ª87±¨D7µ¢$5/%5E7'?h²ù6½I3½§›•ýžuu	û‹pv3üz2œþlÍÒšûê×D¶Ÿnþî•QÏLAÒSZ’™S4zqUÄ±{ŒAÁzŠLö‹¶ÚÄP–Á°2IlBìÓ¹Ò^ÿ¢W«¢tæ/ ¨Â¥¤xœ340031QH,(ÈÌMLOÕ«ÌÍahØà™pXòÏ#Ž¬Ç+Î|¶øºÓÈ¢.©43'¬è×S®P‹ãËûžtýsjÝ{ñ±|TQQjNjb1Ä¬Ý/_®Xfû}VØ”ÏA÷»5|¼ º€3ð¨)xœ340031QÈM-ÎÏÓK*ÍÌIaÊß ?{á›ûï•"¢4×,œ&õÓÇ¢¬8?'3%3=W7=±()1=U79?''5¹$¨9™ÁBcç³:ÙòZoy²…º²ÝfL¿H„Æ†Å½µ»ÿ	ØÞ›2óEòV.¯	·£kÌI,IÍK®Ô-)JLÎÎÌKÚçðöü‚/8qËÿí}½zÞùóÎÿjË`˜Uf5!}†‡ðbƒÃÑórø>sSG×–W–›
´Ïio~ÐþKêÒ}áû=œîíã
àÆª4ƒAþNVºE°îä›VÙ?<;Ç}y-Ëut¥Å¹‰E%@cÃz­ö_Öô-~;û2§SßEÅó'ïéaW›ÁðpÞ¾À9Át‰ÃŽïÒš4—ëJe¡«-IÍIÍM-)ªš=Óm¦lI»Ã³¶RÇUÿn­É—P“Ã­>ƒaºÜ£5Ä>¯žÚÉ q)¡¾ŠÃ¾y‚‰`QÎP“úÁiu‰¶æ[Ñß&¼eÈª]¼ô/ºá¥%™9@w0.™²/¡‹_Â†aß¼«ŽNŒÇª4ƒÁJ"@Þpm–]úûNQÛEŠÊíÏn •„ª¯!xœ340031QH,JOÎÏKËL×Kf°ÛÑúëÌ½s;¶ÉÑïü»b·ÛCte¯Ö;Ä_ïí*Úq[1É^õä·Ò¨²¤ÄâT3 Qì?KO<}ñl‘sÍ3ã3oX>ÉMŽª&ƒáÀ7=íŸúq3TŸËøÜÜ¾i’nTMrNjb^iÐ kkjÒmtúƒÝ›™[%Ävê|*CS”Á¥z±úímå6ûE[õœ»ST”ll4çŒn¿ò=Îü÷¦·DyÔ¤¯X¯–JGQ’Áð¤gú­>›·¡ª—ys®>XÓJÎª$«8?hˆîÓ–¦Žcn/Ø„®Jü9Ê|4=Fj"²Š†ÃIÝu•n;~t©1qªzë)ÜÆU‘›
R’Tš™“ÂðÑó‚áÔ´†’|“óC§Í«–ÝUV\š––Y´¬ïBÃ¦·Smž/˜ýÓeÙ»Ù·^AU“Á·´ßcMã¤]õ§ÙÕm·æf¯œUSRYZ4æÖ{ÍîËg[ë%ÿ]©×Þ×¯ø·ÀEIÃ÷óÏÕ_æxž˜ÛÜ¸òô&ë'« §&ÚŒ¬xœ340031Qp,(ðÌMLOu*ÍÌII-Ò«ÌÍaHß$z¬q›÷7óI=s|5.ê33„(O¬*-JÕ-È,HÍÉÌK-+ÿù:îŽÑ‘=;â2˜’rÅÏ©©› BrQ~q1CU‹WÛÍ”ûóÓï­°|>É;‰5[áÔ¸”Ô‚Ô¼”Ä¤ü°IÊGN[LœÿòÂ»²ƒóÎß™PÕ’œ1©<¿(;-'¿¼˜!ì×9ŒvÃåsÝÞõnÚ0ÿÑ> Ç=T•£xœ340031QÈ+ËMMKÖMÊÏ/ÑMÎÏËKM.ÉÌÏ+Ö+N-*ËLNÕËÌc(0KŠ)ïHöh*Qè½À¸Jÿ§oš!\wšnbiI>T+²6¶Jƒ-»Ì¯m¸Åüês£“ÉdmP-ºyIi(úÚ3;|—ˆNbY_)ËöAKñÿTÞ»ñXôé•$¥§–€t|ó2?Ä1ƒûÈý«·]©®éü¶¿*‹[~/fËHæzÝØøowhâÛÉbÜäi©¯xœ340031QÈ*ÎÏÓMÖ+/J,`87ÿ«ô§Ï²¹~ÿll~}½Ñ²Toå9Cˆ²œÌ¤¼²ÜTˆ:¹%m,‹û®}Íø¿¸Ê¥hM”t‡ !T¨3xœ31 …ÄÜª<ÓŠ~‡Š·¯‘Hÿ—aPùNzçÙwMÀÒ)©99–òŸû}ëžï—ºõQ6w¶o‡I%2ˆ¤+h­ýüÜòÊƒˆß“ÜŸýúõ$"–RÀðu:WBïÉŸó®,=¶íñš¬%EÝd!²¥‰å©™)O2–Äí^aæ¬~ÍÍn™æÿ9¿!
2óòòÓ‹2KŒ?óV|=b0ùÑÞèÚ ¦#Ç`JŠJ‹–®ÈÜùj~Æ¢[¢Õ·~ð½Ðºr÷É˜‚’Ô†ÿ_ø¿Wß.ti¼P[\#¹ìmD>757)'±*•Avn¿Ò‡_‡¦üx?àcÞ›Âí_óÌLL€jŠóóô’J3sR,¶Ÿ}{ÔÎ¢ûr2—Êý¿³”
Òf±@MÊL.ÊÏch°Ë½ñËk‰ØŠÒ¼çwOªgŸ­,
Q—”VÂÐ;S;%‚eZ´šÃwCÝKÛ*'•Ì‚J§–$0¼»ÄXÞûæq&C+K/ÇÇ‘*¨~¨‚²Ì”ÌD†Wë¿³Zåo­Û˜øKçî[‹ô3÷,!
ò“¶maêÈOù[²ýÏ¯K¥-W7÷]<‘-NNÌIMË)­`8và}{[fŒfR¨q„Ý…×d›É jRÓKRVN­Ûš®ûCi"eáö>KgBUd$c%áÙ\u¿]ó˜»63¶”œ»æ7Óíþ¬SPù9@w¦ç2øKlê~uBâìzÙK9ÕSBçNy¿wDII~qFfR"ƒQo°”@~Ï¦¾¿´W3+ÿŸšUQ”˜Wœœš—ÂpMÃiõé ^å,½Ç’Z;¢O­\P
QS–YT’YšËÐWmÖ°[ã“—YZîÚüŒž¥U<å)ÉÍSôsÌ3Žž˜=ùÏëì_bÍ ®¨Ì-If8è4Ã3¬X´Êøùô%¯^>Túeo‘®Ê+fÈYÂ¼åúi‹ªs´ë/&6ïÐ "^E¡Žxœ•w •ÝÇe4(3‘QvöJöLEV„PÖÅÅÅu¹×že&dÏÈJ‘")Bd¯„¬(£$›Ÿç¹½ïîÅïŸ·÷ïçÜÏ³Î9Ï9ç9øù……„ (SÌaÊkŠ°5ÇYÌšpåÄ=”ÔË ,^év¦†þ•ÀÖ Éuq€Ú¢`[/Ò'HqˆLŽ­¹[›’`VÉS[Ö±—èd
7ã±³q´€m&\p,ŒÅå}‹ÓÍ¾Œ3¯´îÅþú/ŠâC`¶`ðxÖ,NÉ™ôV«¨Ãèð{¯wÓW¢7ƒ"çÎ1l–å ±±áq†š Þ(Kœ©+s£jy|w×…n?šè19Óô§T8ÄÖbå1  ¼.(\I9Qe;e#¤Ýé’‰éÄemÛ²¶$b¦ŸóãÑx]¤pÇW©‘¦õ„Lõký“†¢¶¼&Ž03œL¶ÒÈÎö,¦˜jrä»çGÖÆþÄlàPˆfËcA¡,‘Ž¼8á‹5­‘Rg5[ð“”lÉút•»v,à68¼	"áæý9y¸'ço}{ºlö`8‹MùÒuÎº‹ë^*É^:ÍÉsƒpbá±AXl
±ºV‘ö™è.==[hyíïW$¦$hRùØ÷õõdgDëÃ³¸¸¢J²i¹˜Â€BÉ§$]HîLÿVÎ¯73lW³¯/mÉ:8@L-y6ïœKOìY½ýZ¸ÕTmqÍSæN
œÁœ5<åE\é&i-w»ƒÿ %UT‰Uù-æ8 bö(™&Œ0ÕëÍŸŸÊ+b;ž?poÿ;m‚@8lž=¤ÃŸ3òZß×_êÒç½Ïã>ÅQ¹H@ÜÓ°çA¡õÄ—‡|ºYž¦¾]O	¹”ã?†¤xÚ8-
iÜ5_¢9¯4üˆ“Ç÷+ìoÂb1…9¸òÀ-à›R£sº5öEf„—ÕÊ¨ê_‹ñÎ¤~Áž¥®s&Ôáe=¿,Bµ:?{‰Pw4––;HÅœQ™ýù*êT9Í}5Í¬Ç2&R [Kˆ­ÔlóÄòØÀPÿœ¯Ùö›	?¼R"6>N¿åL†ç¼°iß‹gû^¸<9ÔyLÇÙ?…ÏNàµtl/ÐTY;¨yœC“ñçÇF¼(‚,dkyÛVjjÍcf¹ÉÛñXC]7îü¤VuO¬§3ø¦%ÆñBó°	ç®(éÕ5&§.—®íÝÀ&mvßÒçdü®`—´|uÈKõÆè°–ža/6V«6§ƒê_"ËiVÞ&ìIÌå™_!ë&9KÆ¢Y[ˆÍ
êÀ³5ã™¡"<ƒZ[žƒâµ,óÅ’JÞ¹wEÀãiHœ?•­ØçwæbÝïíQå~‡cv¥ »eíº³7Š}>«-XãÁÃî4¾}µõl#à›w6tSjHcîôð—¥¬®˜ÛÔCw>Ó¾pStù`f¥g[àâmáÊ–Åø•V˜Â€99M¡êQÛäŸË{©îVdÏuŠoÍÚšÃÐ÷Æ§HÝoLirK/^\xPi4{ÐÉ[ÔjêÀ³ÙŽlëüô ¼öÃR§†¤ÊM–ªÜ[´.¼—J3ÅÂ”ýU)üEÿ‹mÇ¨4l  Óð¼Þæõ«Vuæ×|QÊ_Ã¨¯jaÈoª*W_G E…5†|û~7eŒh% SÔ	êí¢¸óŒ`JÕLæÕ±ÑÖ	La@8ðZíÁÏ]ÆdåÄîÂ.–ÓÞ¹¸5k<!i1-Ñó–«¢=»bÓdí ‹ÇwÄÀwò‘÷µM;±"}ãŽ¸­›HèøŽ$ðË§ó£y ºañ¼¯ÈK„+zÉ$ºd·‘PˆôÏmYsíï¨f±>ÅUV5Ív.˜³ Ã›µóé÷É²Îº9æ_Foí…9ˆdB¡·ˆSŽ‘®Ä™°ká•çü6ƒÚ@ÿa¸ÿiÖH±ÒªïÂÍóÅ¤?1gÑ"14¨û”þéøß‰fç	oÎÂ0Ç~ZµcÊuÙçôÚznüŠì4*ÚšFBx6;9À±6OÚPøåõË“#7L4g¦º¼"Š9ŠÜwózîþëE‡`ã=/y‹‰*¡pÌq@DƒW÷
SUk¦ždå*òH=ÉŒ¯íÖôóe[
È ›p4ŸÇtKÚEsy)vzBŠýÞ%é[¯í`Q©„ÏC¯`Ž"SÌ•ú‰µ=Ú¥®xß‚Þ¬ÔR"Ýšv‚™ByPPs(
81’÷Ø´Ÿ‹á²ÏÛi9ŠÔLÞA?¹ó¢g^VÊVÆýd½ÙH+­™Ð³+Ø}Œ;ã¬'vGÄç”¼˜ó¹¬5¢ó[ ¨÷ÜetÄn¸±©d!zºgÒøÎM÷>Ýžn;Yê’>4|zëå¼ÑeøÈÀT¬úö ð³WXá~|º·Ô×&M´*ù![sH$Ô
sª]«ˆÔ@&¾“>ô‡x[œÞ]º>s[Ô°¿Äš§Rdõ¼w@`XDáÄñ¯Ø @§˜üM©ÈQÏŒù€0ÙºåÒ+×GU·çQP[³MŸw4åCçÝ©©é=ÆÒ‹gX{ºy]0FAR†fC29M!5Ó–!Îg³ÊÓ€Å7ƒüc÷{nÓÛð°O·¬GÅYç¼àÙFm­Üoä¾‹^€Õ¡H¯ô7ÏN±É¿|óv 4’ŽæÐûp«ÿ§ ™µß…è—SHª]ÀËz|äøçlnsCOÉgk[ªKgaF6¢oã]§.À[Nôþ
W¡~PÔðKÝEj"»cû"—Ñh¸5&ŒZ³s#žKp)ë»½|Ñ”þ=Ä¿§ŽËú|F·¸ÛŽ¸¹i2˜ßÄa­ =-;|óZÐ¥J®)qŒQÐÃH2ê»ý”øÙÆÆü“×fŒFÓ€ElM`}rYn¹A=ª¯%9–{ËË‡
xjXÄå¯åwœ¾ ÏÌ×`wdsôØž{8¶ýx6_‹Ù³'ÝŸX…Þ&.}°=üìWú!•÷¦Ü×’ßÙ)1˜¸ä)n9·PsóÍó„úÓkuÑxÒÄRHêœJÆ•}øwæ—>ØÒ F¼ ‚R”­Äùƒ_ ë·´Í5q°àïÇ#<íów
³Î¯¥	­Ö«Ý’·5sDBl7ë¨Ôvó~²°ø£FÕéø!òìÄ­rŽcYgÒ½M†ò÷C‚š
øzç†Ž’˜Øøx|Ó"#O;<!½P†Ù’º:²82sðÔzÐ[©@Mâf'Ì,ZT¾è¨¦ÂÂ×U¶¡ç`M?µx=ö<¨Ç$E$ô‘ëà¬i¡ð·7’“6ÞŽ¤©Ÿ¹}<å
AÓ6m2¢i~6¾…@"È?B+Á„ü¥1WÇ_çù\ý¬þù4æ,(Ó1ï{¨HëAßUë‰¤·Õ:Éå/aŽ"ÓeõžâÅjÝ>·½ždõP6ÐýÞòBknf÷§'
´š9úÓ^J»à”ÊØ_ÐÔ~•€-ÊôOšŠ@6FIœ$ún â“ tªN½òS©sŸÌ°’d‘à5Üž/1`ƒ`n¼²”þ¡huøªA4Ñ´?=‚ÿ–0(ó HÁÊÒëKYž~ñM©ÏÑ²Q”Xò€‹±Õ	áÏ‘iz«R^úß³í›ÊìÌ¶Ç7‹}^áäZHº°§Ïw\wÿšLW]s\x tŠ‰y¦°W×ÉOj¶ŒX1¿aw"vl¹tOV*eŸâXš&.vkwžLhÜlö‰ %ÿ´Ž4*ej§k×ÛÄäï3I|ºókÇCgÑ—ë;‘|Ý±¦õ|X©ß»˜ã€ˆwÌÁë¦ÏT¦
‡e3)Ò©5ìQ)˜ÒŽ€	ªîívV¯é
Yòµ†ï]FT	™Ÿ°„A•¬PNO¡¶I#Æ/DiÍ(ø:™:£°ä6Éâ÷”†]UB‚vqQ0­ä«‹ÛãŽvf›ýgà)å)ó|†0Ã½BZzqÓóŠÐ ,aôEBºè_cK5Qµ/.®,Y;L®ì€%¸(Û½Uòö7€;O-ïb?4@¹ãÆqDA, Ï“ÁF“«Oß²ÜX‰³Ù(”ÂœMïdÄôýJK„Pç\T ûZ-zsÉO>Uöè¤÷Õc_fmï{ã‡LŸè¿¼%½ùBŒr´³C ¶5$z6Ú³ð¬=­ÔOý—EÉFç‰öC‚’A6Í1úwÒ#Þ×Á&¯žñ>«Ï×3¶P6 /îÓåtnW«7MýŽktQÃnkãˆ²Ü\Jd{rQ4Ó^}‘½ö±äÉå8]š;s ŽzeétÒùÅ¡¯½é8¯]°Þèà–Û~œ½9K"¶aâ½ãÀ×å¥³G¤7ªª·$¡T ÇÃÔ
½T=,g*žÝâDEÔúKGè=† øówpú¿Pe5>|fÈ:îÓôØ< ZC|±Îoéä©Hý•7^09ì•ðYJfë3âŒ Àa€ÂáŸk‘UÄBJšìB#'I4!m’˜³ ]š²û¶.óå†ÎÚäsÆö¸"˜ã€ÈY/é•÷ê›–8ò|Lp3xØØ–6C8ÛÚ  @ÿXÛebVá:‚ºí—¢î˜×Óì&ybliP¦Ýô×·»PÈ„…æ‡E¥l  ã?rhÊo%ô~ ›,½y¿Þé´„ëÛòèÛÖ›'ÃZ‰ömÖonéXòe½º¥Ç©‚ äz=ÁZw¥ÌÙ!_“u)YðFé Ó©ÊS¥ŸùèŠ/V~¯ý;jµÝ:2—¯U¸AÏà4ƒÊû7Þ«¨5%3Û@w"Ôœ¤¼º^éÿ#çuÌÅ¼tƒ ·]ÀËõë”nHˆ´’°€HfCÕƒ‰Ë’RÛKÊÁÖÞmm‘ø(%?íŸíÏÛÉ:—Tï´CêŸ4h”x!Õð€G§güµÑÔb¿¾z,Ø @'e}åúE2g2I½Y"ºÌD%º#Ûó&à? ½›•ÁÿkfeCûáÒÖ¼9t³ŠâŽÏgæMwÅYPÐ0û63f«¤¶À–õÍ*pÊ­^P3ÿ\ÒøŒ‚Ù|ƒÄ€#–ónnÓÆE‹&œ7ÄIz…}¼æL·çmL ÿ5i~óÞe,-"²\³aIÃ42îtáŠ\»  Ô ýäAZyZÿ¦—Eº\jgíwa /JÏê“%=¢×¢Y¥¿Or¦º5î@ÀÛ?Ô^Î8¿&þMäûã>¬„­{ŽVªbJ‚&Šp‰ª!þÞðKÚeiœvšøŽÓóÏI'o0«£§˜lÅxŒWå|Ðö¬-ŠÔÏ¿—·›C?‡2kš|<°š¾òëL€æ,ºS¶fuâkfGücæêˆ	R†ð9bÌq°yøPÓ¾8õräÜø5õ÷¸Ãìý!ÛÓvH„é <‡ÖãP› zJÆÀ/9–dªk¢Xã ÎnmueRNÎ_<Ô¡×LŒj’ÀJ FOŸ·†³¼²§|*Ã7±î×÷iKõn	µ±Û4é£X¶£?[¬D ™7jB¼¢tbG=ž='ÙÜªÿî@tWì§ÚaÅ˜Ià—Ué~é.©`L[&¹¿âf7þ–A=KGˆ3z›: ±ƒ2úÔCÓz¬!2Vê–ÖÆ-2fn»  Mt•­þýx;œxíZDˆÙ°A5Oß¹]ÀëWëâQ#f”bâonRÃÇg‰Ö0 ÀìÇ¦TÑsšòà—¨±ÕÆÎ¯»~ÓÓã`KƒF§F%}×-eÏ"üÇ²üÏ@Ö|9ØÅ°€4ë--Û9™˜àš!zu2©‡nl[tþ;?A÷6„NŽˆÝ=X¦pO÷œÇñŽLIPcI3#6È´°Jõ·ÛÒßÏIˆILa@¡tu£zRa„Ç]?47´fæÁÙ<#émY38Y,€sfìµØU.¼ÞTÎúÆÇG}H¸[90gAúDêÒ1ë~±XÁðžÉ*¡
ííâ€H@ ¤:™Þ|öý×¦ñš•ï?éoKÃ¦@Ý†·œó‘÷'¤Â57TÖÀ•µö¦$(Qsÿ4
ùn†±ìyÆë³üÁ™¶ê0……W©†ŒVcÇ$JIê™1žžÚ–¦Æ6«À{[6œQÍB>i+°‰y\Ÿ aÜ±_»" ²ßÆg£ÿ"Á
ÎÓ¹øÂš'v¥ ;Á>¼ŸÉ~ýWð×`¿ã'“²w@›J|Ú&V•ŸøhŸ_Ìíu?Fäá¹3z¤VñÇkT&Sž*V	šk^)YSŸ'Û~<=RË¿éîâ¥»tÔ÷¬»­‚Ìw;Á7ß¶'@÷Ýsgƒ.vÇl‚·—W×e7R·ß«² D‘ý¤»1(®ÎýXJ§·\=Û/üŸ8 R% w42ã°æµWÕ&$—ˆËœn½ž¶(;G$øÿ›ï¥fÿUŸTª«¯S÷LNÓûª±Xz®†¾a ¨¨•íGuf,Ûœ/ëvþFø5mÇæGû`ß¸æå¡½Ü%vY>'¸q\Ò—lE 6=èŒÇâß-»_ÿ6øéË­%Tœ“¥e"ö<h7^Z¬sÄò
þk·ŒïP‘5<Í`v¢1…ÕæÎöI5iy£š¿&€Øü/ÒbóçV§“ßpb4ì÷pMFýAÑÄi™å= P/ßÆØ³Õä³î }^ž[¨®sOÌàÈ‡# Þö:•€"¿Ï×p¬T™²;Ãt'fqøw@AíÆ¡ÄÁä¬Æ“åøfCŽê*q7ÉïF€vºCg$2KÕDÈ«=¹ƒw2èjœÜn æä±Äõ«žê[ˆ-.ç:©Üd¿“CÖ@ºˆz÷nÒ"ÅÃSC»¹}C~ZÑóïÎ€zÁ7¢%ú5íµ‰—Þnè¨VìŽ‚DÊ1`Öü–Ø'JášiÏ{mIwR(øŸ<3 w´êÉéGf.c­Ömšçî/…PÙ‹%©xÝíåÏ|Ï.¯Ì‰Q‹¿hz¬»ž'ñábðs½ÞÔp&‡_¡`€a'ç …ÿ7häV-iù%[…ïtz¨0ëaWþ‹©,»"  ü‘˜®o5cŒRlöR9.Ós½C»R`ãlÆô».ÏhÂ\Ù~n°èuÌÙE–-ãƒ0¸˜¹qÚ4“Ž[Ê8®2ÍýÃ”î³DT±Gž ,k´âñ?ýåóZu¤„0Q™…ñ‰iÔ3¬`4FVi$Fú¹Åµ`Ñ9ˆ§€Ó Ñ÷ðgnˆ~EÎ¬Ï6Fôêèƒ+_Ëí±ÆA£¯›]"Þµ‡ÜWZI¹ÖÔ3ì§;Þ„• —=Ý¹Ã˜«f5êÒkzýR8K®fâSÜmÀ_k±äÞ!âu¼,‹–ýÜ†³¹Ú…ü|ü[ô9#ü$?ÏŠË(,àÃíJ„DPúÜƒXl 8s¿Ùìø˜<ë«G_uRCTIôþÿïíåOö…õûÛöQ‘ÇÔ—Ü<q‘ãUpÿ] P*ó‹9édÊ:Oªã7+êQªßa§va ¯cw½­øJH=Ö“fƒÍ[ÆùÁÕ6€s‰¾ìªiÍïîlÔ¹fR4XGibÎ¢Çÿf-xŸSàúDòØ05vœ•	sùñòjÏ	KÃ•{f—b‚Pé¥v¤7/®x1œ4;ëŽl«òá3ˆÔ¥Ìz¤rŒ÷"¶4z¢ÿèy‹‡
tÍçëŽKž:š@¿>ÖÇ™øÏég ®˜£ðc\À	³ß‘;5žî!.õò7<m´–²å¢Í/Ÿ’9Œ)‰žzÖ©Æ+L*uqyÌÜ¨–²iã—ÆÅ££/2Og,gLRõvSP™¸ìÈ¢MP®€ÆÑ@ÎFÃ¹g¢
RüâÏt*–žö$cKƒ*¦æ$(†‘…ê³Ýñã:#Ø @Ç\ýåð£ ‹»…WB=ó8ß˜¨•mÏozL¢
Ïº:ª§zÊ]ÚeªúÞŠCåŽz‚uôf²êUêîN‹gŽ'2†]¥Ü‘+ãª³Wé]_ú˜o?¼s[ÿÎ7ü-A„©50òµùë8î²èuBžûTè§½iå¶^¡À2š–Þ¦uÓá^`ÍXÐËÐ¬•¹ë‚1X4+n$ÍÏ¹ÜÆX™Íz¥–ÚÒÃ¡f0£-ÝÿyŒÛ“}>êŸ½wô”‹óí’VžÊ{Qèñ×óe©E”‘$QŸh®E8=2«Š{°hžwwnÖþ(Úaª°Ó¹qðÙXÂ–“‡k»°`3(2(˜
g×É‰Öúý tì[ºù>aPÚŽ”DØf°:~À=U˜áÚ/ùéoáÝûäw‹çŒZ;©Í(ïv©I]«X
"ÞŠ›"¶<¦6P’ÇÎögZ¸ýùïUÔN5]/úç¥oT?ÄéT1+µ/½úÀHNØñàåÍ×x~'r©c[¤%Ý÷EÖª³_ÓSôŒÎ[kK ÊÊ×À oë³–I!ˆ.f§§¬…‰I{þZ¼–sÔðÁ^èúc_‹(%çý`‚®FSž+§¸çÝ^  )’IØÞY„Ÿßðäº“É‰BÜCâŽ8[ˆ­Ù¿}šÉ‰‡‰Rß'Þ'?™'Ã—ÒyI²;*®-Lº5ÕÝ<‚ÏMüÙêÇãÃz2Î»c€ å²í/¾w¸„my=ohv…Ë•` ÀÓÿàü‚ùÝ-„JÀ¡¸ëB+Æ3±»3  !Û.ºÐÐàŽ{ãA†Ã5ºqºŠÝ1@pÞWç±ÎTYþÍ6•Pñ5…œ šŸr(Ôfó®†9AÿíWì·øññ%«;ueI_ÍB+{?ÙþXPøùÐA•ÈT…âÂ‚‡Ï+Ò˜©qö‡âF…ô®™f$ò!ãáÍºçO>!ª¯ÂDƒÝàÍ.ðŸ[´ˆ>Gã“Ž	‰Y&NÒwAÓ“Oú_ï‰ºRÃ;¯m<ÿÖ )¢—ŒÛ¬k)NsO\'Ø¥œù†+(Â]*°€8Ôhìî Ð†"ÁAèo…Yºt®Ñ•ƒ™¦•Ëò”FÏ{ï/³¿PLzNâså°`gQëwñ¬}Ñ€uÈ©Äœª\º‚Ü×Ÿ†´øïznéœÚB vv<ÛÍÐ‹ËÀYæ¶t†£ž¬è×Eòoß6Ûù°º>.":}ƒP3ÚÚí—fë…Œ‰W,÷Í·‘Ž·âVÚßgÈš;÷™ádDbàPðÿß]Ï)l¿8”r¬5>|!ƒž©½5½+‚^	9Ht½ÙNƒJ‚‰*6H3Ÿ¸¯«tW
üHÀ:®¥Çë[·)ßS…¤Bú,[æ¢mQ<fP8ÌF“|¤õã™ÏÏ›4"\5ä\ÅmtlTŽÑFÖàurª«*ô*»N†aLÁëeº„‘«Ã¸©·æt“HX-ji¶…‘›aÐÙx¤µÜÀÍ~‘^·òéÒ¤ÿ]eØâÔeÌYt‡+©Øq$‰â— 3µ—î¹‚ÌqptF.€ôî3Ü\Jý˜ ñ¬Ù‹Ô´Í[ÒNð¿ÆfZŠ>EºK¼Æy|‰¶ªÜÖ‰‹[½æúäÛù&\ÂËWäžæd§”ûc %f¤r{ÀÓo—¼4A•6÷Æc0ä·BÞFÊzSýî›_ø8#EØ©Wpðñž(x$NÅ5 *9¨¹ºmyâ™bFZUøž$`jÆWÖ•jîåx®\€¼ã¦ùÃ/—0‚ÀÂÚa"wµú9•É`Ó¹Åc	ðîÖ8ÌYÐÉ×Ì 9þ¢° ¼1!¢)fš‡Åƒs\jür9=¡¸sº ÅCÿ9GJz«jÆ–HS»?=
sgPmë”-7{½$03d«Oi§}Î%˜t„u¼yÿÉUÚýóèq²îÞ˜Ÿö…ÏÔÚÇðEú}”÷_pŒ‡+=ktyÄDQº1xæ…Š›iðöl6![SW8b³7úï¨f« l ÷á	
¶F£óú.xÏ|M^î‡ÅE%í´5Ý›‰]ðØï&Sü.Ù¾¨,¿kF±ôö¥–CmL×Í´¤Y²¶³Û›ºº¥[õËÔÉ19Ï+hÒ-¸õ­wg@Mæ·ãKŒÄîc3™a„],ëî%*x»c€ 8«ïeˆo|iloÝ­žGòáš[Æl¶0¨ÍK ,ÉC/ÌC;~"S1Ëpì%Õîmªàíz|™|¥vOÔ,uºå—z{îRÚáÔ‹J³×…rS÷$S?¡ˆ_×ñÓW’ïXšæâÕ•†ë$m‘P3prûºÅ¦½«æ’Voˆ¤î½-íK\±åÞÚêw©¼ã Ìr3Áóøu7wDqÌêç>Xp¹)]bAçÄ†ºÉùà
«Sx_GM[¶£0Sˆ‰,áÏúÏˆÌã¤¸ðÒôqâKÓ±dRùìÇ÷¢Ð‹¸{eó(HTOþ~ESKÌæÝò=g/ÐléÿzLÕ]Êñ¾N¸£ˆ¾âk(ýV¶yÓ¸‚µ/ðmPUÝýbþ,ÆcéÞhìÐÃ%#ÆÚ¥ˆÝP1ùÆzuÃqÆ*(¹·ú'S¤²¶aw”Ð§1ð$ºõ“Åtƒ™´™GlKÿ	;µ„Ãü¿K¦©"<h~ÝFHfé°ÙCkô„&²Õ½9ÖváíL£¼p7õ‹Ià—%§ËÈg`óMFõ	Êæñª$¡Æ[ƒè™œV'ZZÇë4kí3UQ¼ëÅ‰‹væÀß~ïÙû;óÖ_¥$òLß2cŸ¢Qðº¤û–uÅÌå} Â!9Ð |þÈ¶¤Óf5iï×Vä__#þˆ'ªñxÁlªæ¶­ÄÖ8¨2}@¹ü¸}‰ä£ˆg]±™Í_|6æT°€­-ÙÑeºã¾Ó¡>#südš¤ß,v ¶˜ùŸ{ùºgÏs½ùiœîÃÍºÍÚ—¹ Z±*æÑæOÏK…¨òº“ôo>ÙÆ ^ß}è-³·9ÿª¯2a°å¼õ7ÆjÔ*ÀsöPfåÁ0¯×–mÆ¾i­Ý—uM±çÑu+¬›³ûÛÃÙtŽÂ ê4I¿õÛIMØ@jP[æüC!æ|Ë*šÀ[¯C¡4ˆÍö\¾¯“¨Ï-^|ÅÑNŽµ¿ÐfP\Ä•¬Ï?×_?bËz÷}¸ýÃ¯J¾Þ6Áo±€‘mA±$Sªì`BOÙMÕ÷òQ9 `0dSÈv&ÓV¦]ôAUiÕ­‹•Écj±¥AŸï=--ÌQúÁLZuý!i5n¼·OcÀyÚ|SòD^%?–õbª†‚G3N[¦J‘vp“MpÙ¼žg§¸y¥“qNôê…&îˆ¡¯QMÃ‘ ‹ÃZÈâ$®guÞÖ•Š;’àÜèQ¿îXVå;1'”Xèb.µ":Sþ¢ ›m8ÌíŸÕägøú|uJnM_Št­»!Ÿù=k4Yñªlig~¡fõF%+]¿üzÍÅÂãX	°¢á‘Ÿ¬WZˆÀÃ%û8ìo~°i£Š{Øp˜Û±€3ýÅG9ÝŒ]³-cÝÍ¯˜ïÊ`º«5DõI'†È‡ƒzc</¥O˜j?æ@n:j|Îð’ìçÝÒÏAA!@—l·~âY¸¿«ÚkjYß+$ÖMÃö‘ç?	9üe€Þ­9}uîX.|cVsf	žBpå2þÅ ÄEÅÄŸs•6ö®¼UTÏ›Sã*ó{)à ‹)‰„þi%ÿÏû5 ÇÌ®ó ü²hðEßF­ä¡¨„ÿ¿ô¬Hºr<“i¬û”,‹8ï8…2†”ÿ¿(pg4èÏï£póœ9ŒùU:g©ææ0—„p4ãÑÔ¼ðgß' ƒ… Þ³½?¸ÇDûá#.Áw.#Î—â#Xd°’ÛÅ2Å¹š¹è†7Ì6"Î‘8>^¨ÿ«àh–r.jHÌ¼ˆª×ò#{ÿ»S!Àâ-°{à°Y³mÂbyÃo§Ë6.|¥B,¿—›ææ¥íÍÞÏ%×¿}»§Ø$ëkYÑ‘ó…¥ïçÞ( ;d§z™]º©E¤Øâ|Bù÷­Èß$°ºòÙÚ˜ÑÃÙêÎY™´OJeLìÍ²¡=ÌªißîòNO~wÏûDÃ1œ@¹7
®ˆ6­d.I,Ôî"ú,o"X­˜uùg•Û‚¥EwOO‘#ÿíñÏá¥ÌÍóæ‘Xã Ú;ë¸ì<Ó.¥žkÖ4¡îfªÍX	ÀˆðÛ­žï¼eoñ¿¹—ÁßQÞÉÅì¸_ïn_›Iq‹!i×P;UíÕ³˜œ¾´´YŽº`Áæv¬Ös*%‡%øÛ	È>XðK%Ç”S¨Œúe#Rá(ÿô¸ˆ70¡ÿ‰’Df1VÉ×}8¼4¡âkýnß ‚f-­×™¾Þçü”rö1¤¼ri7Ü®Aßc¦™ö¾ÃVÆ<‘”ºs­T–úZN¦[~¤°;žìEöÁý”iEþ@ñÕ#¯_.˜œ^æÂ¿3Êw7Å2lýõÿQ8e_Àßúw	¹ áúõ{JWÆ…,El›º(ÒRSH'±Ñ=+‘˜õ¬@ÏwžE?$hžpå|Œò¼õJf#-…¦\ó+—ýÀ`ÿÅŸÜœu¤*£9¯:GQÑ²öšXÌnä‚r±Höê%Þ%ÁU#Z­é–êZí÷C‚ÊIm¸mYÙ¦e7JÆ×mæ¹´0V”Ûapp‹â]]7Þ¸%¡ÌÏ+ß±°[&6î©ý¨Ñ²TÐŸÖjUè¯(U’bÙ›C¯Z#£ù¢Üý–ä+”¯jÞ¨´EürÛÁ½Q@ÖA/qåärÃï‡w©D}‚Å–;^ÆBn@¡¼…äþFÑïë¤“Dä ÁÓuÊ/ö…¢Ï0%QŸóXWN¹QdoÌì¤´`×þ~Üª„“4%ç[´ôÚR¤wØ œÇ+</,0¦yƒøI?¡©Û‚WG"¿D—Ã(Ú»V+öƒöå÷‚’UËOÈDPˆ<GmûuüŽÚ¾K ?ÃŠ&Hm*ÑZµÑ¦”ŠK³ÛZ€©#ØžåÏ‚¯õ_âz¬Mô
®po8=ÆžG×töÂ†òjx’Šx1¤y—–äSaì¸R+u"©†—îXÀq6GÞGAFÓvŒÄŸ5=~¦«å­î|Ë¦³o}Ö^Q"wÕ¨Çž¥ê"gokiÅÆó¬¦¾E¤%œ;þ¸;H=f2ñÉ– 4-åïä9}t•áÖ6©?ßìÿ¹-ymkWÉ	‹mFzÜifÔFÇ¢Š=Þ´`®ƒ³V/!À®Ý¡rßˆ1è87vºö :ÏØ5~U¥Êê	Š+&~žG f+ñ÷Q}sº«K=Ôú´súÙ³·žõÇ–Fß^ú%¹Lat—mî</8<"ˆ tXþ:¢]¤Ê>ùÚtJïªƒ3÷µÆ·Ûó­ö½aiîiT‹¯ÛðþðoèÒJÒl+Ö8(T×kÕoTãÈ2ÇMÒ,HsS8z¸+.~
_“ n'&Ì^?bTSÎå±e®e‰pþë“›Ÿ²Ñj¦ÑçW\F¶"{ß«3ÍaƒFŒ/õìa²Ëm£ðÏ—[|~ÃNc% #]6©ÛGØœÄ¬}˜œEÔ`G\)­8w H(øùn*„××Òvdc¼19\ñ#.æ,è’Èf×ýèR½ºx÷¬5}óRA4æ8 Ä%vAî‰ßöíFIgûÁº»L;Ò;ÄæÍ\-Š%Ån"ªÉO£i©÷Ã‹}"uØó>Y	ZCÔÉ1f±Ô=<Á¤~ÚƒY;HÍêÊ”Gù%>ÒrNö&bÚòåØ¿ë%šxNÿé&Ä1µg>wG¨¼SÞ2½Ãœe`~ð'U
#^Ÿ'9ºžÄ®ê)N†9ˆ8< qAO•ßÇ;=æeL±eÏôò¤ÍJõßqAG‰É©œöËGòÉÞfò\Ò^ü-»JéšæàÀ­c¥-~Žÿd"÷þn Æd‘×ÿ<G¹8ýËø5Í#Ö'Æ·^fô¨0ªúçkíGÝTvX‡#Q-#nYìÝ×ñ·\br˜á:À8ˆËŸ¤ÎÊ½Š?dØÿk=ãØê^ú«ÙC¥däªŸ¬9ÇÒ	ß~X½ž°h.f.Þ?-fsËaè[FÐèÏTm[Fâ8Ôéúç^ˆÃ]%”çówm±ªh’–ûÄkiÁžÕªñÈ´x×A¹Z8jg¡ýô++³Øp9<ICªÄ·~B Åþa7ÔŒ¿åÄ²„™@öax}èv`ÎÚ`¤W0sÞJA£Ç+Üÿ¿ôëX}æwiE]úõüG3/HŒsC^HýÿEõ’}8Ž×mø§xŸ`ÞðÙØ6L%íì”Ç«¾\¢¸ÃÑL£`XÓì}‰O"z?$x óÞœIsªüeG£sHùèÂy¯¯£‚öÊmoHeNó­ê›"ô0Œ?^vH »½ÓX@ ØvvžÏ˜¹ÃVÃó­ˆI©Áí}¡èÞÃÓ!ü’“M…Ð`õ4CrÇRb®»û¢ë°Œ¶AøÉÜ Ú[êŒ¾úeø5‰|[_$ÄeºÙíà1˜™ 	ÿšo5ZÓßˆ8ké7IWÔuØí¦tNÏxœ¡¾ä@®ö+ðÅ%¯g	{p€càM§ªñRºõÚIˆ{¹F§/XbÆ,¡K'ˆ#ÐÃè^nIÌ1âÈ+N#ûÙšè·°Ü›M)á’ï©˜#¯J’Þ– Ý€Hí²JžW¨6Ä=8è,¬1uKf¼eoŽÍWh˜9Ð‚]ÉºÚ;–b¦;FÜB
™x~íüwœÏ‚ Nz"2F’à]¡W¾²×56¼‰k¤²àxîM±,cÍ»1ßhjÏ	Yû¦né„;Á0G8
âôO+ã€àqrp‚Aÿùú½Ï/Å#b/ÙÙ»©ÊsÕ}XDÕþ¯"ÐK|	Veu,&˜džÕ¦§—Pµ©ÞÞ„€]K÷W
p4âU×2M2° "ÿ|<sƒ …Qh»afP[ôÉMòyé-v7[—í)E•¸ñ…¼5žÑ½9ÐÛûÉZÍ¢Ü«eC…ƒÚ'ýoB$ÕßaôÞ‚²úC÷d$¡ïF	,¥‡³9‘~êÛòZîlf
6‚f0pš9¸s³mŽ ›gè­"MOP¦”ÃG×¯±d5F¼ntÔ/•*#"“iO`% £(±É¬›¦Èå†š)*‚ø%§‰×Ù0 ˜Ì6®M?xÊì²Ç~Y<?E7ìŠ€f“žùÆöO¿¯4cwô¥Ù—Œ>`¸+ØÝJ|6[Ïœ{â">§å¹X*»Øìl* (Ôf'šÇÌb ¿ÏF|ú¨ejöCtié ¥ÉáÀ ½9ôZü'¹µˆqþ“$Ñß×¿œýå[e5¶7
`8ŽÊ…¥ŠÝtåyŠ«+Úƒ™Ä<ÚåPrÎJÑÝ§ˆÏÅ6Ø.éœaïÄþyPþÆQxŸŠy87ÉÛ©»Òîž'Ìü÷_pê§îé(@Õ$Î$-©UûË{‰Ña.áßÆySÝV/h`²ZnLøf¥+-»úøÆ'—½(ôÊö`¥”ƒŸÅ[ÞH$÷ùÍ7³ªÞy‡ïÑ=!Ê/+JCÕI¯~Vý¥ÞeÈŠ‹õÇÿW¨‚ë#Åc¤¤KHØ2#þz`ç³¹g·D!ðÇêáKò.R—Æ…ÙñéÈ=Ö.í,ë¤ÇC"â«CO.•p×êÆÒŽVXÅ”íG× IŽÞ¨Û^fý" ]­÷?¡rß% G 3¥ßÃùv¡|\òU^F‰¸@bçÎ, Ü (å?ÿ+}26ü'å˜¯ŸÎ¹p*@÷‰ç>aô:‘‚0’Z|îç–Ö¨YÅËv®%Füø÷Á—/ç¨#i™ÉùÒ¿L&4<9é¼7C«~¡›ïf½±î §Æµògõ‡L¼cýfœS¾æí‰¾v/Š_^d¦VÕ¸PÃ4H&·Ý“Lõžº8gÞVõ§ÐÅ¯´å™®x\\ð3ˆnqŸGg‡èŸ½,ãÈ“Ö^ŸS-óùö<zS3ï¡CtvT†Es^3C¬<ŽbGÀž•nÂXül°„—UÄ:o‡D(ïÌÄæÛzÆWmxqœ`‘ôõšÜL—&ym_ë®¨f©ƒ×}àÍ‘bÚ"QýçG¥²•¼v¥À]RX~WœH7 »SÕ÷“kTžkÇ¹†Úšþµ_Eñí‡¨­¼O­»÷ÝH»>)ˆ»£ùø›@?gµ0×1©7)Á4îj8ºR>Úqÿÿƒm÷²é~ 9ö¼OÏm¼?ÚMm® p;ÎÔ!!(Ë)¦º\Ü&Ž1¸|þëk;NÜÓÔ*{@èîŒÂíV‰:sÖê¬ßTÃpßdÊÑïÁŽ¤Éy¢ùÍiK¸d×˜(SÔ	œ0afP§-ñŸsùŠ’«3v,¼Aß;ì½3GCOPßÅ·ûÆAov.»gåm“œ.’éóâôD¢;êz¬% Gp1¼çÀU· ¼‚×,‘g;ÄéZ0 Þ9ÿn£2jÅéNp\UO˜"gÙš´LÝˆ[5gO4.†ñ?“s‚v>ewÎÁÍíw•ÜŽžÎ<×_Èõ`s2m³•„¡yl^+˜@ô^y›í°ä?c|ä’^=¹…ù§éâ9íîªWÏ²ß'Œ>ÏWJblnˆ»Õ»Snh\¬OÀ‘ß'¸s¶¹ó¨'¦´>¼®E$Š|lÇÞû×²^²Ä]ók«z«XÏwüµù—¢”Ïû¥Ñ›{e7QH„Gô~`sâ1/¹·Î´ß ý“k¿õ“žXVK¾óJõFÕ¹hL¼9fóÏ£ØIð»6·ÓÙB@î3K:Ó…ÖÔ>{@ l³aQ=²­!8Z”ûõ\œWr+î^?.¼¶Åÿuó$åÇc–eâHÆk«š˜0GÛÿÆ›PûÅYóŠCZ!ÚI~ã%Ù%²Ç%Éß7Žyyzë‡Õíšxðãó*Ü‹´5«û.÷d77PçhüÎÑÓ\räô‘úmÁíü·æ¾0.£ˆá‚Ø‰¬¿‚¼ûf/»î¸¦[ÖÜKé¬Ù·\°Z˜Å}Š;&.ûZpG'æï5÷kžŒæE‰Ž©Q;> €:Äž{>¿£jùwÂÑtÜÐ}nå_-ð¸£uÐcÌýo^±vDÃê÷¢‡Ò¥¬ÇåÆVµ­:¯zîiûí¸ü9+»¦K›—ðÛ#W¯ö}!évØ e1ý«±•—?rïRÀOï¯¤bJ´ùU²ãem†Þ!átDç ›ñÈ«—4y'¿}ÛÑAßA¦ö«.äHAøx.Uïªž]¾e±~ðvÐÎ¹y„D`d¹{}þEd©ï”ƒ_ØW$ä¡Â Þîú|RDS_æÃiÖEZ‡Y”÷/IDÞÚßÿ%ïFxbŸUÑrI©Ø/¨nc
#µ)¶.\Yâõê\&…9‰’£AñºuÌYPèÅ÷n2UhOõ©ßÉï¬Šžìèp ã€HôÛ~îrY{‚Ä[?^w–j”ñí¨C¶ë­ÓK>‡ÐTê•Lö¿‰BQçj3ïÎ 7ùÑA`\kŸ¯®ü”y9, Ý;Wu;æ„úÓQFÿÒ8ñ•b!ï†¬@šS‘T:¾vçî¸&[ð‡Nú˜?7)£=¬x*"Õ‚e–JiÇëÈ
Ü¦mz„ñw&ÛœûÑpãúUÅÛ×0@öw†˜oêÕCþä~ôuØjæ¬@Ö·0-û=µ­èG^‚€2´¥³}•ïí¼½Ñ&±b²;j¹®ªÆ0fŸª_Ýè'>A¦Ž‰[u˜­9bSs¤?"Qµü¦Khú€ì'ÆÈq;z¬[PÐõ•‘®äÂ†}ð'ïSþ}IÞJ»càÎ[k]é‚/£Æ—Ú7~Ÿt²½±ìú§‡ €¯XÑãL0pqñøÏøƒwB'Û{Ýˆui?ž	kÙÑ.íR ¨žèáÚNåÚY¨p4‚}¦E¡hÉÇ“¿KÀq¨Zèy\6T¥jÈñÒ¸võ¬ê!8†"0‡X†ªO—–ˆÙg%ÆuT½ÆÛ¹O½³˜‚‘H¦½—œâU/n+ƒ©›öŽîõ.‹~øk¦&7ZÅt7Î”—}Õ”=~Ó]l	ÌP:ýyÈT.u®Í,J]¹ d[Ôó†òûDæîh:EêÙãçñôÎ…t8ýªà¨óŽji+¾;kíÝ`Q2© B¥7îÊ$ðµmò#ºE	ò›OíU•¹6S#Íš‡Ò÷½(ôÐ’£é˜t¸‡9Ó4¿Êt *CF<Kg/Ð¼òj8Œ¼ñMb¥NPQðÏÅÇÒ2¸-S³¨[{EÈË¹ñKä÷ó5Å1»ƒ»3 bÕÃêÒ+Å„ÙÂ^åÈ°Æx#÷EíÝ1@°ñôyö8Þñ±Uh¥Ý¯oîÂKr×1]èíU7®Œ[:gïåšåûÇjXÏeyµïjÀ<s´Ñ"–A} üòLII	åá,$¦»dçLŒçPÞÝ•"QO^¦®èž(…sTý·0ß¦[$ÂÆŠäAØ9 GhŠåãòädžÞ™ê™eªË{·c„xBÐk¯ÂtT[†Ï)¬^zÎÎþä#œìÿ,8¦P/dð"‡ˆãº&GŒ¾BÞ (Æbv.Gê•	›ãm­V1—Á¥‘¶RKçÙ
úŸ·|hzuüˆÛj¦EYbvóÂ¹}Ñ€5=1¿ÈFB¥N/¼W/—×Åˆ{·6ÀHØfuâhk
ö‡¬óF<žV—ÚÈÉ€R‰µ©½Â–Ý†üü:>h5U¥iÐ,Ï'½²ìÿ‰ tDŸ«Ø=ò`‹,­däsNà.ìß™wƒ"à >Q<þpî1N&„¨)ÞuK;{ú7Xãè±ÑV|2Ï4Úˆ¶{ÁËï«rw±àÔs}âk¥¾2_âqôcz•o;€MX¾jfçÕÑL®SõÙß‡	,ÙÍwæ@‡œÀþY”9§’[ÌfÞ‘7Y¦|Ù·öjèÊ;Mî\¹aD_]~zãõýž-óÕn¶¨ÿL–ÂößYÔ…fø§“µ:f—„)Ü¯®»‹ˆÜ›CoÕ—ù£#k&Ã3óÀàãc6ŒõŽÖ{£àš<¶7†ÍêaREºæwkKŠ>Áä3xv6ä6-“ˆég‹æXSí?3^6è„¢¿» ê®Õ’÷<_ÛW<Ä3%)x¾xEÖé^\¥dàPocGØérÖB>¶nGÌa¶0”å?bgªc«éâG©©{qàqóøi^†Ú» q9N·Xø pØQCvƒ »ò#ª»Aà¢q†5Cm”•MÜ¡‡ã4ŸŸžgmÛÎü÷òyC9‚E;2ÛÓjöC¥ R'Çc€[TºêOÞ\4Áí"ªçòùñ}Á+ÎÄKØ @güÕÜ§W¯ÒòGGßÏhg{ÿ<àÃAyð3ê“7Õ|õùOí¹„?¾!–¡b¾÷s==rOdØ.23òÌ¼•mé’˜ã€ˆkŠ„…æÝ	Z“Á“TmWÛá¹F$ÛÓss˜í¿7S`ÔÌaÄÍ¼›ê¸‚O5²Êój}±ÜA{(Ž´Ý¸*ÚAS~ú¥ÀØ2+|Ço¡À„§,X¤)‡ypbýÈ/„.d•ÜÙAmÿQK¨¿Ÿá­Ï™ïÏKÚèò‹=z…G½´Öº¡Þ=Lü
r‘Ùª(¤H¸‹´i®ÕÿÉ˜ðí7ó€jñvýYÈ —PF½“ÅZ­CCûè">¹dÉûsb;î§-z¢ .Oäûé|<.Áü ¤ƒ!¿p¤ÿ®`w®c*ÿò3Ñ·ã§ì9Y	r…ì„€E„ÎÙ¼3s©íŠõÜãl¸$\µ²Lv»  Yˆli†Óo†:F·äšê¶ª»úL‡zva /Ö4ä8kJA=Ãë³µH¯%ƒíÈ? ¸cÄ¦šå·s‡`™§¾¤z†q'­›½kßAOb(?${ïÖªc_ñh¸d<}ÍhwìwL`dî8k0dr[<A¡y/üëv
$ vvè5¹/9¬¬yšÞçN=!TÏO¸¼ì`ºÊ±@ûó›Ÿ={‚h^V’Ÿ²h§»m³îH8¸Âì©?èsÎêÞxª»¬WÜðFþ×¾„u¾säŒO®¿]g–r9=8wÕË°„þ^uUûÅÜÄgæc½Lë|Á$Èz÷à ÇCâ&ª†ßâò¨@>J«É¿¬¾û³ªÙúð˜†²ä]ñôDºÅFê¹= Ðq™ßþ4±qÛÇüŽcÖxÂ´i—öàÀŽãK}¢ëÁ÷ÌMŽ­«¥)Ý>Eïún†t† ÿüÂ?ÈJ #É‡LÿÈiWa©¡”¨'Võï÷¢ÐÛ,Ü§Xú¤àiš¨N4á n™ãÄ^ øú#¬çëLVxÄa¿ ûéw¨}ËÔßo›J%
ÞM:ÈÏô’J‘Kªiÿûsõ?ûD¥HÐËIÔúùÓ©Ê(þÐëïµ£àO|vß|‹ägöšÑ‹˜ÈZ}–24¥À²ôá16IFYâdKVr%®ä…W@(ôN™:ý%E²¥qxœuÓ{8TyðŸê‘ËnÄÊS­BŠ¬²LÉ#Í0rå²ÅÌ8f3çŒ9gÜ¶Ü¢«Ð³%ÚÝˆäZi%„­ä–ShEY…bgÌ´;m»çß÷ó|ïïý×ÌDôiY0Î0€ò>ÿ§ÂFŸ•Ý64\6ð.H'o21!™™-˜… |tÙ/yðüxÚÅÖÜN¦QŸ’ãŠåKÅEÂ³E­6NG6æ‡íé¬<êž"e6®47Š§‡m‘ ¾tÃhÆWDïoÅ‚XšÇŽé®6[èÌe
¸‚ÓqEÀ…¼ªR§ ªö|ü	—ÈJ˜Ä¥‘Î6Tš;t\2|gß!_?mã:Å˜‹)ïÑ‘z0s  ÚŠ*¤ä>,Ÿ/t2‘W&®ÚÖ^jÜ¨d[ª¸§ôÝþ.ÉY*‚nuÊâ rE_èë*é‰É¤#@S©4¿+â¸q¾Ù°á©­¥äWÌi“@dƒO‡ö¦ézUy'YŽŠn4žéUìþø±éH â‹`Mêâk/ÇÑ%z¼éì·¶^*Ÿ Êå¢ˆÈ ©ª+æiÃéÆ“î_oÖÏØ!måò8x:˜µÑ^¦´˜–0{5¤ýJµú´åÝºWÒ¤ ÑÍÈOÒZÁ¦t)`Ÿl‰[ÕsÕjë,è‘¤A8$'kä6fviÙ%YíµS8ƒ9Ý^$M	¤3ø0#2A+!¤©fr.Ò%¸²ùîÀÄÀ¦ºÿBlð1Ó3š×s‰õs…ã|OÍ¡æŠ)âÀ$”Âøtž(Îœ9³Õf¦n]]¶O‰Z	>°_$7››ks!E¡LŒ€ÓYDŒŽ
SwUæ9EœMY×Ü\Ðÿ“4uÁ˜ œ_¢§-¿®®Ú~¨\ˆ÷ú4ú…²Ìå-Lˆ‡ã€AÉÏK­Æjt«4:Úã¢v²¤aâ¢¿1ã'Vÿ°ø‘nQªsõÁú™”hYÁË1k?füt‡†>òÖNÐ X¶Eá“_UÜ‹_“ZØPüëí5#š[«j¿/ÛxU*+EqÄSžÚ2øÈjQ_ÌÃDDmdïêŒKŠÿÙ€Ð´Â¹I¯ÒG÷Í:r‚í0|=|ê†,äña'‰§Ã£Qö®N%™Ô=ÃÖÎøã-piÑÿ`6 ‘ë•×¸rß¦QPÍ#¸ün¡‡uÙXº‡ÓrŠ[)QOÆæ³+IÃ‰$èKÇ)ªÈwa¦³÷}-h–¦Oä_48?—u|—!ŠÛÞ{³èùóbmƒ¹ËI«n­_Y(Ë¤ÿMóp‘yûod‚¦w«I-ˆÔäþìýŒ],ü4#ULJËªç7SÆºÆ^Ê0QPEnòc/jœ9’*l[9>W¿úL ÎG9Dx{PöafÞÏvÆ*R…+v±Ú:êe)tzŸÞ¥Pp(‹rP>|´ÖòIÃÒrYñ ¦8iÎN[©¬VWâ“u²=yÜ>¦ßk£dE,@à¨è\bâ`YeEöPæ#T?Óª1ãÒÙx¥þ¢4’Ç°`ñ»Ú[¯_Ü9ÈZ[ï…¹ï/ŒùÜ°JÏV%hu@Ê³Â ãzzom›äH	ÁÀ5WÃë·¤¾ÕzÓ>Y;Þ½VºŠ|ˆÅ‡0˜¿ç´ÈU84ÅSŒ–hu—Œuj°ÿ&ˆŽAâ=-Î}PkŸ­¡öû†þ8ó˜ÎÚÉQ“ópDú[-Õ7‚ï–©^38W1ØxsÍr=©0x|4HtsLô¥PïìÉ(ŽY/GjQ¡ü©=H–(ÂDõöé±çOÆùWX;–æN[Üß§PR 0ÞÓ9äÐÆ}ÛuòÓßùLTÜ‘Ò2sÀ¹×¼{·“~ñmó³›²6ÑVM™û»^åp­xœ31 …”¢ÄäÒÝäü¼4®êy¿vÏ›ðìéŒó?ÄoÈîÿ¢ÄmVU\Y\’š›Â0«æKð»©b¾3›fôÜ-K¢¢4%µL·¨4'µ˜aåd½äS*tü&OjÐÙ0Gd¡ÓáÏ Çi.E¯
xœ340031Q03Õ-H-*Î,.IÍ+ÑÍKâ¤´½¢ÒœÔb½Ì<O§=Ü°tòaáá¤Ô$z¹!D«¹n^YnšnbiI~r~^^j2’¾çï8/o]¶§zÒ>ö¢_¬{'»TÕÀôBôeæäçd&W‚lM,(@è]÷w®ç‹E'×žs¾nQöÝdËU  LD©ÙgNÓ·™jÝnGËýIÐ®#1   070701018A89E800008124000003E80000006400000001646F203F000009C4000000000000004A00000000000000000000004D00000000nvme-cli/.git/objects/pack/pack-d9674e1f14d3b7996add6e47cbfd49d0ae231931.idx  ÿtOc                                                                                                                                                                   	   
                                                                                                                                                                                                                                                                                                                                                !   !   !   !   !   #   #   #   #   %   %   %   %   &   &   &   &   &   &   &   &   &   '   '   '   '   '   '   '   '   '   '   '   (   (   (   (   (   )   )   )   )   )   )   )   )   )   )   )   )   )   *   *   *   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   +   ,   ,   ,   ,   -   -   -   -   .   .   .   /   /   /   /   0   0   0   1   1   1   2   2   2   2   3
{žú»žæå˜ÏøØÀkô"^`ÙÉwë×A
‡R&Êª(Y¯™AîÃHRÖ<»åœ¿Àb~7D¡Å»º¢åœÐo'œ=±búMØË«È¦g *­óç9ÔàXû’Gärúúä]
·®ÚyŽ/®4é*—úAìc…¨ÎÊ«Ì?IYØ=ðµýôÓ…µ"ðúÂ–ÎQñßPñnìq·õo1ÁeîqËÆ,ysù½ ©q˜CE2SoŒ²ŽXNfê™yÿÈ˜3óxõÄ0–â½[}PÄÇ `5x NÂs·¬gþh0yî¹Í¨ÝO²‹êÈÍ¯Òl{”U”ï½œQ™Õê¦vÛ¦±bñƒ&ú<7v˜'S–*ñ.“«/„ËÇÀÍ2‹³ù¼”VüJÎh‡<1˜wFî²°Ÿâ¾WVœ*ïSÔçRöÝ­hêv”íl¤´×ð08z¨œ*AÑaƒ¸/nð#ÈTb]ÏÜ^¥?s±ù¡Hr¾x>o;	Ò“?ocŒ!©ˆKz`=',iÀ¸­( ºäËµ$z„J†ÙdßŸgÞ¨9ç’Kbk î|eðB«t+)í±öí j}£¥ý€>mØúJ¤¨unçÝÉ'kÇ›#ƒ”/l7hÅÈ›“üì;kúƒ œ‰däh¤^»¨6C'ÖF>¦)ÔOœû‰ûÿ-¬•K&;,ˆ½5ŸÊŽ{6€»(þJ6|&m­ohŒ¥z§ËœÚFˆî=]FšsK½Ûi+dX–[&@÷1-Ò¶y’tš0¥ÎûÚÞMô~¯HZ<Ý´S·š|ôSî•‰ösÎ–2çFj ïpÃ½ˆŸ\Ò_;îö?0 ë‘þ¥¨i¹êŸh¢Ú{Úøè*ÔÝä ¥¨¿·Nl¯eÂUÔünx÷‡g…ôt©“.c°”x,N“’€,°œ¡BÃó©•~»eg/]ø"‘yqìÈL¥™­O(*°¦8’ó$åòÓôÆðàq¶´ˆoeTýt·üúÒu„Õ³ŽÑÏÁB˜IVsz3çÀg¤êéá"ú?<ÆÀï‡†i\)bU3X>ÐXEc<“Ó}™£”‚`º?éJ·§ù9Å|¾±Ö(B«°R#j.ã*¸[Ê© uæ'NºžŠ³„tÎÖN™FßšÊê¯÷;oµ~±aú,Ýí8gÌÞ9îÒwìãi …ñŒzHZñÞ‘E¾Z›´„€%6ÏBõ äAõ—
`ÉùžÔ¥Æ¶ã¬j¤rãFøalAvË^@!®™÷[ñ¿ §9zûC 
N…û¬qÓ«Âù;ÀÇìÿô÷S{ÛqDÐ}s|Y¦í€áØ;md£zfãR£Gð>(<2’®"Í”ª›®|7¨{H»È†2Ä@<Ì“Ãw±Ëx„’I–µÁ2ôŒ*`Ã–Ô˜›Å¸¨^$Góêf8u°®AèQÔ´ÏÑÎò7†ŽzFâ¦›OÄékw¼×ºŒ;%þã;’ËºP„Êûÿ%8ù¸(¢›¸b”1¨¡ËÖƒ¥‘CQ°›
õÃ~‹ ›ò‹ŒI'¬fæœÎÌ0Õ˜ÞÕ¨‡êSãHŽ:Wb·äÇ„{Ïõ—G>+õ¯Üˆaw)õ  ;  ¶  ˆ  `ý      [N  &    Œ  -  {  ;  ‚  ¾  É  A  
g      ò  
­     S  3  	{  `  ü  	,       È  }  û  ”  „  ao  –  “  ”  	ý  K    Û    ü  ®  @  N    ‹  æÙgNÓ·™jÝnGËýIÐ®#1'a´â9¯FŠ°sAï³õ–êÏ”070701018A89ED00008180000003E80000006400000001646F204000000000000000000000004A00000000000000000000005200000000nvme-cli/.git/objects/pack/pack-2518c149e24ee85aabd75367e6159f991d704d99.promisor 070701018A89EB00008124000003E80000006400000001646F204000000092000000000000004A00000000000000000000004E00000000nvme-cli/.git/objects/pack/pack-2518c149e24ee85aabd75367e6159f991d704d99.pack PACK      ¶xœSVp,ËÏLQ(JÍKÌÍÌKWÈKJ+Q‰PÈÌ+I-JKLN-æ
u
ŽqõµµUÊK-QÒQptñô÷S´U*JÍÍ/KŠ¸ú…U{ú…¸¹9:»Ö‚ÑJø9úºZÙ*©º"I+q Á³#¿%ÁIâNèZ«×SgæŸ™pM™  070701018A89EC00008124000003E80000006400000001646F20400000044C000000000000004A00000000000000000000004D00000000nvme-cli/.git/objects/pack/pack-2518c149e24ee85aabd75367e6159f991d704d99.idx  ÿtOc                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       4IB¼ ÀØ9BL˜B"‚×§Õb§­   %ÁIâNèZ«×SgæŸ™pM™‡Ó´~ùÆ¶	[œÕÔk¿='Cj‹07070101755AE000008124000003E8000000640000000164427336000005C2000000000000004A00000000000000000000004000000000nvme-cli/.git/objects/92/3fe6fd02a41ffc7bda2228cb46cd2e56aee58f   xu”{8TiÇß¶—ìiåY­)”™"d˜rå²Õ"fŽcæhæœiÎ·Íõ!º
=Û
É%t£Tî¥T"´r«lI¡‡Š‡Pì3vg·gÏ¿ïçùü¾ï÷œß!„0L1¶0ÞLÈ‡Bã WÄJûü»…?³]šà¾®á¢þÞâ4[c##sSÓyá ˜ÝK½>‘šßZÐ	¾XêtžnõN†âc"ŒƒÌWé%­vÎGŠB~é¬í?æ‘,ÅìÜ˜žîŽt/OGæ? <~çŽ3ÏXu°-â¨?®³J’ÌƒD|%X‚¡à|aM“W×z=ý‚†N&pâÇ	©ÒÅÑŽÁô`€Ž&“råqSvnìÙèŠ^m)âÊÚ"<¨´b
É+æ®9¯? §DÓØÚ—+eÜ¶ö®q¦´=þ®IÙÊ¢žô·´Wè%½7I&b¡@}iYQwØ‰E¦ƒëOOkÊÛ¾‡â¥ˆ@ã‚]o|Suv×ìM´¡–\o<ó\±çÀËBx°ï—`®>‹x:æoN?5ÎüÉ~·òˆñùJ2A'™*+)HÚÆqïs›õò^í†Áø,n3v”eK3ãg.h¿T»bÊêNý{©)€¼9
ûI¢§iOxîÇ‰ñ–XÞËÖ[f@¯ÄHJR+hÌèÖÜž8bí»]áî|ë;©%Å"NƒÀÝ%‹½Ò#R
;g,MLNw×¯Ëþâ‚¯^©Œ¼ØÞœ³•Ns½÷7W¦K!ÂFƒù05DÈ:3fTøô»éú5õ9Þ¥ªÑæHÄA’ÜlfFáÃ8†Rƒ!œJ°84œŽ¤8é®Ê3tËN^ÓÜ\Ü÷›Ô:ÏÒØ"„ j-».n?bc¦’OëÒÀÚe1?L0ß% 'Œ^T˜R‹ß×©QïhÜEÍ–Â(; þ`*L¨Üÿóâ':%).}µ‡N'GÉ\°L·ñƒâ¦:ÔôÐ±í¢År…B|Uq,¿MÆµ†wwPV©oé¯©ÛTnpY—!K’óÄ-OXô?±þîEôãTuÈwUú…0Å…çÛ“‚\@mZéÒ¤[å­óim¼ý r5tâº¬Q DP‚D6IZ‡#ÜœK3>F¬ð
Ñšö'Z²’ÿ¹ÀÜö¡Òj7þX*S?JÈíð´)ÿ&¥Ë	$5ïF+=òÙý¹œ*óÁsø[Ž’UÐ!&3|,™V&]ro\^ËrBŸMê¶=¿YòúŒÙŠ¶þìEÇDêµ?^“Å¤ßMó`‰Yû¶Tõ½­F-Ì ó&—Ÿ¿Á¸ ßÉMßÒO=\Ù¨¬¼vn3}¤{dá%î‘œ7pûíÔä¾«
gsµ‡þ,ãÃI2"„¡„ãÑíA9G Â__îŒQd¬ÜÅiëx(‹rAçÞß·F*Î¦’®³zÖ _!Kà›f·‹
ª”TëK½³Oµ'}pˆîÛm ÙC2U •%"0r.
CðrmT«>•I+¡fñtF"nJ•žˆC~V°žÕ£ooŸäh=ÜM|zà?ýo†0VŽ
µX³çZ‘ØWÓž×µIFJ48¸â¦¿þj¾EÊ˜î›OíãuúDi‘ñ*
aŽÆq`´ñ3¯eQ¥cSÝp‰fOéH§÷o„³pX¼§7ŠbÕ9ä¨©Æ„ü¹®/Ö,º³®X2
‡„ˆ€ÀA¸¿µ¼ž!r§\åŠþ¹ÊþÆ›«—ëJ	[ Ä‚È›ã Ž3ìa¿ ˜±v¹~k5åÊXÐY	EÀ8yÞ‘“{*Ö¿ÒfÐ©¬`ÊòÁÁÛ×$ç"!ÀgÏ6¸qß6í¢´Iï5 à¤e¸ô˜@xàÜ¨àÞ­Ä,Ÿ6?«‘	#Šòpòì_%–à·  07070101755AF900008124000003E8000000640000000164427337000000CC000000000000004A00000000000000000000004000000000nvme-cli/.git/objects/ec/e3bcad6a2a710ad7105624a9611174bf93e298   x•±JAD÷+:»@™žÞžQ8ÁÄØ¸gºûnÁÛ•½9ü}åÄ\³
^=ªÚz:ÍÒMßÌ `rc×€BÑ½åª‚ˆS«ÄMÑF³qòáC6[:„QÈK¶èZÉ’Etn”&ŠLž
Eûåcª¡æTÙƒ×¬™)ÇÈœ§¢9JÃE[äÒë{Yf{‡79,¶Á½~^Ããùr¶;µˆ<aÈL9ÀmÀ†v=Ô¿áW‡WÛ?Øýuêæ¥¯ðòü´¾ –FbÛ070701018A89F000008124000003E80000006400000001646F2040000000B4000000000000004A00000000000000000000004000000000nvme-cli/.git/objects/34/aa58774db42b8bb585e47fab50f4ce956cae57   x•Œ=‚@ †›ïW\W-Ñ`šâE\v‘ƒiQã}†'˜¸Dÿ=Ã¥¥¡g{x_q¯tƒp0‚´­
kmyYØ´Â4ã,l£kÃ¥~€UÜ3ºÙi“]³œ%„ «4ƒ4ÊãCÚ)WªS–žŸqš³ãŽFìõyuÁi7¤4aK‚&ìkF€ôüì	ªuYµúÿôºš…4’cã»Ú*žàqæÂñ]pì!±oÊN­070701018A89F200008124000003E80000006400000001646F2040000000A1000000000000004A00000000000000000000004000000000nvme-cli/.git/objects/b2/662849f00ce87aa6f3405fe5d15c2ce01e5d56   x+)JMU047e040031Q03Õ-H-*Î,.IÍ+ÑÍKâ¤´½¢ÒœÔb½Ì<“Uå¾[´»·¶>©_ðåÜÔœuáP­æºye¹iº‰¥%ùÉùyy©ÉHúž¾ã¼¼uÙžêIûØ‹~±îìRUÓgÑ—™_Ÿ“™\	²5±  açº¿s=_|(:¹öœóu‹’°ï&k\® Ö3J/   070701018A89F400008124000003E80000006400000001646F204000000078000000000000004A00000000000000000000004000000000nvme-cli/.git/objects/61/30c41aba48a3b8eca03ea182555bb0e0c7b95e   x+)JMU04°d01 …”¢ÄäÒÝäü¼4®êy¿vÏ›ðìéŒó?ÄoÈîÿ¢ÄQU\Y\’š›Â0«æKð»©b¾3›fôÜ-K¢¢4%µL·¨4'µ˜aSš†çžUË>;Ä?½£ó@.6 çÔ0ð070701018A89F600008124000003E80000006400000001646F2040000005C5000000000000004A00000000000000000000004000000000nvme-cli/.git/objects/43/44eec85ff39ebeea3b4c96548e98f95fa176fd   xuÔ{8Tyð_—G.»+OZ5¤¨5cˆ‰<]f¹ŽrY‰bæ8fŽfÎsÎ¸mE¢«Ð³¥Ë®[éJI¹UZ	!B+	YiJZQV¥=cÆîìöìù÷÷y¾ïû{Ïy!aŠ•ÕJ`C'
)hmy|/jðS3Ù{Yýyó€ÂL¦Î°±™"Å$0èt™}ïÙ¡Œ3-ùE¦Ûi–ÃK%ÂB¥B²S}'ŠZÚÝ÷//ˆÚÒQÕÀ'MÉ½8¾Þ®,?_WÎš(ÜésNÏÛÑ‰‡ó4Y¨èÌ	ƒ¤"%¸‚¡àôÙÊŽ°®ò{ø'ý>™Ÿ4J(#=\Ù6h?göÞ¥]­4ñ££×o"¾¬ËXI<¹Ûá0DL=-ÿ~Ùä÷jZ4Ãµ½¹JãÍf:y²å=enñLÍÖ–>Ñc½ õ¡ÌdA^Šž ˆ‹Í’‚Î˜C–6+ŽŽÍa¾†’”(”& ?ßšaâ_â0D-ºÚp¼[ãÉ? XÀEC…°„„ÕE˜gË¡	#ìùÑ‡V§¾uò×ž†˜H„¡¤	?ÌÑÑÓ8KA2-G}¾Êm2ËëÛ l‰…°|:8øäH™«9‹“ôébDÛ…*½·k_+“BÉ›£p°¢µB«Lã1ßí81Úœ`ØuqÍêO K‘HMÕÏo8Ùiäœ2´f«³úqÜýæLeJ—'A œjDcõ4+Ös{EÓí¾‘¾ß­MþƒàóI¿v^B×9þOån“]Õ{›ÊO(‘á¡‘"˜%áŠÉ8[N\ìøjÇñÚ%µ9×uãÈÎ¤\ekKÁ8†R#!œJpù4\ ÈÒ]÷uVäY¸ÇœŠL[ÒÔTØû£2uÊÒxRD
<Þ¬ÀŽ9|]U¹~o™Ðîôè÷ÊTY0&žšˆ& ?†Up6½
¯6©4HjoKØµ‰š­Ä(/Œ ;üÆF’\¾ýûYLŠÒ=z«öÔ§Å©
˜«¯†?¶ë›¡ïœ¥õ¥vêÓB~Uy["›ì+õÅ¿l ,ze°º¿²feéò‹¦lUIn,”OyÌ®ÿÁš™=ñ÷“QÝW[ž8£1=À©é)¡ Pç{4šVš¼]ÂLr@.G]UMK” †““$Sw¹x¹_?9²SÏ/jñxÑŒ”ý ³Nk‘—è]3ØO¨m–ù®+ý“¡ó$#¯¸…µëÑ°ùdNc ™é Mý.ÊúÓÝ {ŽƒõãzµõÏTD,â‘që»¯=;n[L16Ÿ8ïšbxcé‚+ªLùÝ4Ù¶ýÊ¤´Ð›9áŒFŸ§¾`Ðïæenl«M/)­š\ÅêšþcÉçHÖ«gÍýÜYž|U)k]0<QŒL¯ŽB`(!Á„4D[xÎ>èìO7îÖ`Ëæoâ·¶×©Ô$ßoGÀ±µ»Ô÷f³ö¨EÖ8<ªŸS¦*p1É“&œ¥ùZºµ×³´¥»Ä÷ú/Wì!Y3ŒÊ•„¡(€K¯6,wÉ-}µ6;Á/ðromÙ6e¤X(å“Ÿœ€ï7/n
ã/®ó'>¿º"‹ÿ· Œ›£C-4zò'Z–x—3»kZ%18¸äe¾âò»ôw¦Ïß¶Ö÷FÄ-&Sä«(ùÇÝòƒ°yF¹kc"Ëb¶Ñ“ëCú‚¿‰æâ°|O‹vß«qÉÑ×ÝõÛ²ÞÛøŽšBE)’ b±!kæ˜Y ·Ku.™g•÷7\[4ÏT)¤<±'oŽƒ‘ž4ö­-'Šã—Î`4k³þ ô3Š€qò¼mgæîÜ#	!åëÜJò?ÚßÝqëŠâ\Š"øÀ2#¶­7.È|8R	òÛÇ*	D²ÞˆïÜLù9¨5Øahl¢=˜6ñ¹næé   070701015D6943000041ED000003E80000006400000001642C0FB400000000000000000000004A00000000000000000000001800000000nvme-cli/.git/logs/refs   070701015D694A000081A4000003E80000006400000001646F204000000613000000000000004A00000000000000000000001800000000nvme-cli/.git/logs/HEAD   0000000000000000000000000000000000000000 68fcf887353c3b93c924a3baffe8cc55e425b428 Daniel Wagner <dwagner@suse.de> 1680609204 +0200	clone: from https://github.com/openSUSE/nvme-cli.git
68fcf887353c3b93c924a3baffe8cc55e425b428 df9600fd220f9cef6fc02b85744bcae82adedf19 Daniel Wagner <dwagner@suse.de> 1680609206 +0200	checkout: moving from master to df9600fd220f9cef6fc02b85744bcae82adedf19
df9600fd220f9cef6fc02b85744bcae82adedf19 05a4f93a6e1fd9224e3e12f6c438f0d264f3941e Daniel Wagner <dwagner@suse.de> 1680609771 +0200	merge 05a4f93a6e1fd9224e3e12f6c438f0d264f3941e: Fast-forward
05a4f93a6e1fd9224e3e12f6c438f0d264f3941e ece3bcad6a2a710ad7105624a9611174bf93e298 Daniel Wagner <dwagner@suse.de> 1682076470 +0200	merge 13b0b73b6f0fb7d74c4d61166789d71ac201adc7: Merge made by the 'ort' strategy.
ece3bcad6a2a710ad7105624a9611174bf93e298 13b0b73b6f0fb7d74c4d61166789d71ac201adc7 Daniel Wagner <dwagner@suse.de> 1682076471 +0200	reset: moving to 13b0b73b6f0fb7d74c4d61166789d71ac201adc7
13b0b73b6f0fb7d74c4d61166789d71ac201adc7 b1ebb84ffcc9d57383f61bbbc36c2b632d6ef941 Daniel Wagner <dwagner@suse.de> 1682326512 +0200	merge b1ebb84ffcc9d57383f61bbbc36c2b632d6ef941: Fast-forward
b1ebb84ffcc9d57383f61bbbc36c2b632d6ef941 e7367554bdc667a4d2f27ca8f3df2bcaa378beb9 Daniel Wagner <dwagner@suse.de> 1684941613 +0200	merge e7367554bdc667a4d2f27ca8f3df2bcaa378beb9: Fast-forward
e7367554bdc667a4d2f27ca8f3df2bcaa378beb9 f4cfca93998a2e3bd8b3ba6f01b052c6a95fbc9d Daniel Wagner <dwagner@suse.de> 1685004352 +0200	reset: moving to f4cfca93998a2e3bd8b3ba6f01b052c6a95fbc9d
 070701015D6944000041ED000003E80000006400000001642C0FB400000000000000000000004A00000000000000000000002000000000nvme-cli/.git/logs/refs/remotes   070701015D694B000041ED000003E80000006400000001642C0FB400000000000000000000004A00000000000000000000001E00000000nvme-cli/.git/logs/refs/heads 070701015D6945000041ED000003E80000006400000001644643EF00000000000000000000004A00000000000000000000002700000000nvme-cli/.git/logs/refs/remotes/origin    070701015D6946000081A4000003E80000006400000001642C0FB4000000B8000000000000004A00000000000000000000002C00000000nvme-cli/.git/logs/refs/remotes/origin/HEAD   0000000000000000000000000000000000000000 68fcf887353c3b93c924a3baffe8cc55e425b428 Daniel Wagner <dwagner@suse.de> 1680609204 +0200	clone: from https://github.com/openSUSE/nvme-cli.git
070701015D78F1000081A4000003E80000006400000001646F203E00000368000000000000004A00000000000000000000003600000000nvme-cli/.git/logs/refs/remotes/origin/SLE15-SP5-next df9600fd220f9cef6fc02b85744bcae82adedf19 05a4f93a6e1fd9224e3e12f6c438f0d264f3941e Daniel Wagner <dwagner@suse.de> 1680609770 +0200	fetch --filter=tree:0 --tags: fast-forward
05a4f93a6e1fd9224e3e12f6c438f0d264f3941e 13b0b73b6f0fb7d74c4d61166789d71ac201adc7 Daniel Wagner <dwagner@suse.de> 1682076469 +0200	fetch --filter=tree:0 --tags: forced-update
13b0b73b6f0fb7d74c4d61166789d71ac201adc7 b1ebb84ffcc9d57383f61bbbc36c2b632d6ef941 Daniel Wagner <dwagner@suse.de> 1682326511 +0200	fetch --filter=tree:0 --tags: fast-forward
b1ebb84ffcc9d57383f61bbbc36c2b632d6ef941 e7367554bdc667a4d2f27ca8f3df2bcaa378beb9 Daniel Wagner <dwagner@suse.de> 1684941466 +0200	fetch --filter=tree:0 --tags: fast-forward
e7367554bdc667a4d2f27ca8f3df2bcaa378beb9 f4cfca93998a2e3bd8b3ba6f01b052c6a95fbc9d Daniel Wagner <dwagner@suse.de> 1685004350 +0200	fetch --filter=tree:0 --tags: forced-update
0707010176359C000081A4000003E80000006400000001644643EF000000AE000000000000004A00000000000000000000003600000000nvme-cli/.git/logs/refs/remotes/origin/SLE15-SP4-next 0000000000000000000000000000000000000000 c83733d2e3574b1341b1dfc165da195e612a37ba Daniel Wagner <dwagner@suse.de> 1682326511 +0200	fetch --filter=tree:0 --tags: storing head
  070701015D694C000081A4000003E80000006400000001642C0FB4000000B8000000000000004A00000000000000000000002500000000nvme-cli/.git/logs/refs/heads/master  0000000000000000000000000000000000000000 68fcf887353c3b93c924a3baffe8cc55e425b428 Daniel Wagner <dwagner@suse.de> 1680609204 +0200	clone: from https://github.com/openSUSE/nvme-cli.git
070701015D695D000041ED000003E80000006400000001642C0FB600000000000000000000004A00000000000000000000001700000000nvme-cli/.github/cross    070701015D6961000041ED000003E80000006400000001642C0FB600000000000000000000004A00000000000000000000001B00000000nvme-cli/.github/workflows    070701015D695C000081A4000003E80000006400000001642C0FB500000547000000000000004A00000000000000000000002500000000nvme-cli/.github/azure-pipelines.yml  ---
# Do not run following tests
# - exclude data varification tests, too slow
#   - nvme/010
#   - nvme/011
#   - nvme/012
#   - nvme/013

trigger:
  - master
pr:
  - master

jobs:
  - job: blktests
    timeoutInMinutes: 5
    pool:
      name: linux-nvme
    steps:
      - script: |
          meson $(Agent.TempDirectory)/build
          ninja -C $(Agent.TempDirectory)/build
        displayName: Build nvme-cli
      - script: |
          git clone --depth 1 https://github.com/osandov/blktests.git $(Agent.TempDirectory)/blktests
        displayName: Clone blktests
      - script: |
          cd $(Agent.TempDirectory)/blktests
          sudo sh -c 'PATH=$(Agent.TempDirectory)/build:$PATH nvme_trtype=tcp ./check -x nvme/010 -x nvme/011 -x nvme/012 -x nvme/013 nvme'
        displayName: Run blktests for NVMe transport TCP
      - script: |
          cd $(Agent.TempDirectory)/blktests
          sudo sh -c 'PATH=$(Agent.TempDirectory)/build:$PATH nvme_trtype=rdma ./check -x nvme/010 -x nvme/011 -x nvme/012 -x nvme/013 nvme'
        displayName: Run blktests for NVMe transport RDMA
      - script: |
          cd $(Agent.TempDirectory)/blktests
          sudo sh -c 'PATH=$(Agent.TempDirectory)/build:$PATH nvme_trtype=fc ./check -x nvme/010 -x nvme/011 -x nvme/012 -x nvme/013 nvme'
        displayName: Run blktests for NVMe transport FC
 070701015D6960000081A4000003E80000006400000001642C0FB50000007A000000000000004A00000000000000000000002000000000nvme-cli/.github/dependabot.yml   ---
version: 2
updates:
  - package-ecosystem: "github-actions"
    directory: "/"
    schedule:
      interval: "weekly"
  070701015D6CBA000081A4000003E80000006400000001642C0FB6000007A7000000000000004A00000000000000000000002500000000nvme-cli/.github/AppImageBuilder.yml  # appimage-builder recipe see https://appimage-builder.readthedocs.io for details
version: 1
script:
  # Ensure that the mksquashfs tool is installed (workaround for the AppImageCrafters/build-appimage GHA)
  - which mksquashfs || apt install squashfs-tools
  # fake icons
  - mkdir -p AppDir/usr/share/icons/hicolor/64x64/apps
  - touch  AppDir/usr/share/icons/hicolor/64x64/apps/nvme-cli.png

AppDir:
  path: AppDir
  app_info:
    id: linux-nvme.nvme-cli
    name: nvme-cli
    version: latest
    icon: nvme-cli
    exec: usr/sbin/nvme
    exec_args: $@
  apt:
    arch: amd64
    allow_unauthenticated: true
    sources:
      - sourceline: deb http://archive.ubuntu.com/ubuntu/ jammy main restricted universe multiverse
        key_url: 'http://keyserver.ubuntu.com/pks/lookup?op=get&search=0x871920D1991BC93C'
      - sourceline: deb http://archive.ubuntu.com/ubuntu/ jammy-updates main restricted universe multiverse
      - sourceline: deb http://archive.ubuntu.com/ubuntu/ jammy-backports main restricted universe multiverse
      - sourceline: deb http://archive.ubuntu.com/ubuntu/ jammy-security main restricted universe multiverse
    include:
      - libjson-c5
      - libhugetlbfs0
      - libssl3
  files:
    include:
      - libcrypt.so.3
      - libdbus-1.so.3
      - libjson-c.so.5
    exclude:
      - usr/share/man
      - usr/share/doc
  test:
    fedora-30:
      image: appimagecrafters/tests-env:fedora-30
      command: ./AppRun
    debian-stable:
      image: appimagecrafters/tests-env:debian-stable
      command: ./AppRun
    archlinux-latest:
      image: appimagecrafters/tests-env:archlinux-latest
      command: ./AppRun
    centos-7:
      image: appimagecrafters/tests-env:centos-7
      command: ./AppRun
    ubuntu-xenial:
      image: appimagecrafters/tests-env:ubuntu-xenial
      command: ./AppRun
AppImage:
  update-information: 'gh-releases-zsync|linux-nvme|nvme-cli|latest|*x86_64.AppImage.zsync'
  arch: x86_64
 070701015D6CBB000081A4000003E80000006400000001642C0FB600000050000000000000004A00000000000000000000002100000000nvme-cli/.github/cross/clang.txt  [binaries]
c = 'clang'
cpp = 'clang++'
strip = 'strip'
pkgconfig = 'pkg-config'
070701015D6CBC000081A4000003E80000006400000001642C0FB6000001C4000000000000004A00000000000000000000002800000000nvme-cli/.github/cross/ubuntu-armhf.txt   [binaries]
c = '/usr/bin/arm-linux-gnueabihf-gcc'
ar = '/usr/arm-linux-gnueabihf/bin/ar'
strip = '/usr/arm-linux-gnueabihf/bin/strip'
pkgconfig = '/usr/bin/arm-linux-gnueabihf-pkg-config'
ld = '/usr/bin/arm-linux/gnueabihf-ld'
exe_wrapper = '/usr/bin/qemu-arm-static'

[properties]
root = '/usr/arm-linux-gnueabihf'
has_function_printf = true
skip_sanity_check = true

[host_machine]
system = 'linux'
cpu_family = 'arm'
cpu = 'armv7'
endian = 'little'
070701015D6CBD000081A4000003E80000006400000001642C0FB6000001D1000000000000004A00000000000000000000002A00000000nvme-cli/.github/cross/ubuntu-ppc64le.txt [binaries]
c = '/usr/bin/powerpc64le-linux-gnu-gcc'
ar = '/usr/powerpc64le-linux-gnu/bin/ar'
strip = '/usr/powerpc64le-linux-gnu/bin/strip'
pkgconfig = '/usr/bin/powerpc64le-linux-gnu-pkg-config'
ld = '/usr/bin/powerpc64le-linux-gnu-ld'
exe_wrapper = '/usr/bin/qemu-ppc64le-static'

[properties]
root = '/usr/powerpc64le-linux-gnu'
has_function_printf = true
skip_sanity_check = true

[host_machine]
system = 'linux'
cpu_family = 'ppc64'
cpu = ''
endian = 'little'
   070701015D6CBE000081A4000003E80000006400000001642C0FB6000001A8000000000000004A00000000000000000000002800000000nvme-cli/.github/cross/ubuntu-s390x.txt   [binaries]
c = '/usr/bin/s390x-linux-gnu-gcc'
ar = '/usr/s390x-linux-gnu/bin/ar'
strip = '/usr/s390x-linux-gnu/bin/strip'
pkgconfig = '/usr/bin/s390x-linux-gnu-pkg-config'
ld = '/usr/bin/s390x-linux-gnu-ld'
exe_wrapper = '/usr/bin/qemu-s390x-static'

[properties]
root = '/usr/s390x-linux-gnu'
has_function_printf = true
skip_sanity_check = true

[host_machine]
system = 'linux'
cpu_family = 's390x'
cpu = ''
endian = 'big'
070701015D6CBF000081A4000003E80000006400000001642C0FB600000352000000000000004A00000000000000000000002800000000nvme-cli/.github/workflows/appimage.yml   ---
name: appimage

on:
  push:
    branches: [master]
  pull_request:
    branches: [master]
env:
  DESTDIR: ../AppDir

jobs:
  build-appimage:
    name: build AppImage
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: install dependencies
        run: sudo apt-get install libjson-c-dev libssl-dev libdbus-1-dev libhugetlbfs-dev
      - uses: actions/setup-python@v4
        with:
          python-version: '3.x'
      - uses: BSFishy/meson-build@v1.0.3
        with:
          setup-options: --werror --buildtype=release --prefix=/usr
          action: install
      - name: build AppImage
        uses: AppImageCrafters/build-appimage@v1.3
        with:
          recipe: .github/AppImageBuilder.yml
      - uses: actions/upload-artifact@v3
        with:
          name: AppImage
          path: '*.AppImage*'
  070701015D6CC0000081A4000003E80000006400000001642C0FB60000290D000000000000004A00000000000000000000002500000000nvme-cli/.github/workflows/build.yml  ---
name: build

on:
  push:
    branches: [master]
  pull_request:
    branches: [master]

  workflow_dispatch:

jobs:
  gcc-debug:
    name: gcc debug
    runs-on: ubuntu-latest
    steps:
      - name: install dependencies
        run: sudo apt-get install gcc pkg-config libjson-c-dev libhugetlbfs-dev
      - uses: actions/checkout@v3
      - uses: actions/setup-python@v4
        with:
          python-version: '3.x'
      - uses: bsfishy/meson-build@v1.0.3
        name: build
        with:
          action: build
          setup-options: >
            --werror
            --buildtype=debug
            -Dlibnvme:werror=false
          meson-version: 0.61.2
      - uses: bsfishy/meson-build@v1.0.3
        name: test
        with:
          action: test
          meson-version: 0.61.2
      - uses: actions/upload-artifact@v3
        if: failure()
        with:
          name: log files
          path: |
            build/meson-logs/*.txt

  gcc-release:
    name: gcc release
    runs-on: ubuntu-latest
    steps:
      - name: install dependencies
        run: sudo apt-get install gcc pkg-config libjson-c-dev libhugetlbfs-dev
      - uses: actions/checkout@v3
      - uses: actions/setup-python@v4
        with:
          python-version: '3.x'
      - uses: bsfishy/meson-build@v1.0.3
        name: build
        with:
          action: build
          setup-options: >
            --werror
            --buildtype=release
            -Dlibnvme:werror=false
          meson-version: 0.61.2
      - uses: bsfishy/meson-build@v1.0.3
        name: test
        with:
          action: test
          meson-version: 0.61.2
      - uses: actions/upload-artifact@v3
        if: failure()
        with:
          name: log files
          path: |
            build/meson-logs/*.txt

  clang-release:
    name: clang release
    runs-on: ubuntu-latest
    steps:
      - name: install dependencies
        run: sudo apt-get install clang pkg-config libjson-c-dev libhugetlbfs-dev
      - uses: actions/checkout@v3
      - uses: actions/setup-python@v4
        with:
          python-version: '3.x'
      - uses: bsfishy/meson-build@v1.0.3
        name: build
        with:
          action: build
          setup-options: >
            --werror
            --buildtype=release
            --cross-file=.github/cross/clang.txt
            -Dlibnvme:werror=false
            -Dopenssl:werror=false
          meson-version: 0.61.2
      - uses: bsfishy/meson-build@v1.0.3
        name: test
        with:
          action: test
          meson-version: 0.61.2
      - uses: actions/upload-artifact@v3
        if: failure()
        with:
          name: log files
          path: |
            build/meson-logs/*.txt

  fallback-shared-libraries:
    name: fallback shared libraries
    runs-on: ubuntu-latest
    steps:
      - name: install dependencies
        run: sudo apt-get install libpam-dev libcap-ng-dev
      - uses: actions/checkout@v3
      - uses: actions/setup-python@v4
        with:
          python-version: '3.x'
      - uses: BSFishy/meson-build@v1.0.3
        name: build
        with:
          action: build
          setup-options: >
            --werror
            --buildtype=release
            --wrap-mode=forcefallback
            --default-library=shared
            -Dlibnvme:werror=false
            -Dopenssl:werror=false
          meson-version: 0.61.2
      - uses: bsfishy/meson-build@v1.0.3
        name: test
        with:
          action: test
          meson-version: 0.61.2
      - uses: actions/upload-artifact@v3
        if: failure()
        with:
          name: log files
          path: |
            build/meson-logs/*.txt

  fallback-static-libraries:
    name: fallback static libraries
    runs-on: ubuntu-latest
    steps:
      - name: install dependencies
        run: sudo apt-get install libpam-dev libcap-ng-dev
      - uses: actions/checkout@v3
      - uses: actions/setup-python@v4
        with:
          python-version: '3.x'
      - uses: BSFishy/meson-build@v1.0.3
        name: build
        with:
          action: build
          setup-options: >
            --werror
            --buildtype=release
            --wrap-mode=forcefallback
            --default-library=static
            -Dlibnvme:werror=false
            -Dopenssl:werror=false
          meson-version: 0.61.2
      - uses: bsfishy/meson-build@v1.0.3
        name: test
        with:
          action: test
          meson-version: 0.61.2
      - uses: actions/upload-artifact@v3
        if: failure()
        with:
          name: log files
          path: |
            build/meson-logs/*.txt

  cross-armhf:
    name: cross armhf
    runs-on: ubuntu-latest
    steps:
      - name: set up arm architecture
        run: |
          export release=$(lsb_release -c -s)
          sudo dpkg --add-architecture armhf
          sudo sed -i -e 's/deb http/deb [arch=amd64] http/g' /etc/apt/sources.list
          sudo dd of=/etc/apt/sources.list.d/armhf.list <<EOF
          deb [arch=armhf] http://ports.ubuntu.com/ $release main universe restricted"
          deb [arch=armhf] http://ports.ubuntu.com/ $release-updates main universe restricted"
          EOF
          sudo apt update
      - name: install armhf compiler
        run: sudo apt install gcc-arm-linux-gnueabihf pkg-config qemu-user-static
      - name: install libraries
        run: sudo apt install libjson-c-dev:armhf
      - uses: actions/checkout@v3
      - uses: BSFishy/meson-build@v1.0.3
        name: build
        with:
          action: build
          setup-options: >
            --werror
            --buildtype=release
            --cross-file=.github/cross/ubuntu-armhf.txt
            -Dlibnvme:python=disabled
            -Dopenssl:werror=false
          meson-version: 0.61.2
      - uses: bsfishy/meson-build@v1.0.3
        name: test
        with:
          action: test
          meson-version: 0.61.2
      - uses: actions/upload-artifact@v3
        if: failure()
        with:
          name: log files
          path: |
            build/meson-logs/*.txt

  cross-ppc64le:
    name: cross ppc64le
    runs-on: ubuntu-latest
    steps:
      - name: set up ppc64le architecture
        run: |
          export release=$(lsb_release -c -s)
          sudo dpkg --add-architecture ppc64el
          sudo sed -i -e 's/deb http/deb [arch=amd64] http/g' /etc/apt/sources.list
          sudo dd of=/etc/apt/sources.list.d/ppc64el.list <<EOF
          deb [arch=ppc64el] http://ports.ubuntu.com/ $release main universe restricted"
          deb [arch=ppc64el] http://ports.ubuntu.com/ $release-updates main universe restricted"
          EOF
          sudo apt update
      - name: install powerpc64le compiler
        run: sudo apt install gcc-powerpc64le-linux-gnu pkg-config qemu-user-static
      - name: install libraries
        run: sudo apt install libjson-c-dev:ppc64el
      - uses: actions/checkout@v3
      - uses: BSFishy/meson-build@v1.0.3
        name: build
        with:
          action: build
          setup-options: >
            --werror
            --buildtype=release
            --cross-file=.github/cross/ubuntu-ppc64le.txt
            -Dlibnvme:werror=false
            -Dlibnvme:python=disabled
            -Dopenssl:werror=false
          meson-version: 0.61.2
      - uses: bsfishy/meson-build@v1.0.3
        name: test
        with:
          action: test
          meson-version: 0.61.2
      - uses: actions/upload-artifact@v3
        if: failure()
        with:
          name: log files
          path: |
            build/meson-logs/*.txt

  cross-s390x:
    name: cross s390x
    runs-on: ubuntu-latest
    steps:
      - name: set up s390x architecture
        run: |
          export release=$(lsb_release -c -s)
          sudo dpkg --add-architecture s390x
          sudo sed -i -e 's/deb http/deb [arch=amd64] http/g' /etc/apt/sources.list
          sudo dd of=/etc/apt/sources.list.d/s390x.list <<EOF
          deb [arch=s390x] http://ports.ubuntu.com/ $release main universe restricted"
          deb [arch=s390x] http://ports.ubuntu.com/ $release-updates main universe restricted"
          EOF
          sudo apt update
      - name: install s390x compiler
        run: sudo apt install gcc-s390x-linux-gnu pkg-config qemu-user-static
      - name: install libraries
        run: sudo apt install libjson-c-dev:s390x
      - uses: actions/checkout@v3
      - uses: BSFishy/meson-build@v1.0.3
        name: build
        with:
          action: build
          setup-options: >
            --werror
            --buildtype=release
            --cross-file=.github/cross/ubuntu-s390x.txt
            -Dlibnvme:werror=false
            -Dlibnvme:python=disabled
            -Dopenssl:werror=false
          meson-version: 0.61.2
      - uses: bsfishy/meson-build@v1.0.3
        name: test
        with:
          action: test
          meson-version: 0.61.2
      - uses: actions/upload-artifact@v3
        if: failure()
        with:
          name: log files
          path: |
            build/meson-logs/*.txt

  build-minimal:
    name: muon minimal
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: build muon and samurai build-tool
        run: |
          mkdir build-tools
          cd build-tools
          git clone --depth 1 https://git.sr.ht/~lattis/muon
          cd muon

          export CC=gcc
          export ninja=build/samu

          ./tools/bootstrap_ninja.sh build
          ./bootstrap.sh build

          build/muon setup               \
              -Dlibcurl=disabled         \
              -Dlibarchive=disabled      \
              -Ddocs=disabled            \
              -Dsamurai=disabled         \
              build
          build/samu -C build
          build/muon -C build test
      - name: fetch libnvme
        run: |
          cd subprojects
          git clone https://github.com/linux-nvme/libnvme.git
          libnvme_ref=$(sed -n "s/revision = \([0-9a-z]\+\)/\1/p" libnvme.wrap)
          git -C libnvme checkout $libnvme_ref
      - name: build
        run: |
          export PATH=$(pwd)/build-tools/muon/build:$PATH

          muon setup                     \
              -Dlibnvme:python=disabled  \
              -Dlibnvme:json-c=disabled  \
              -Djson-c=disabled          \
              build
          samu -C build
      - name: test
        run: |
          export PATH=$(pwd)/build-tools/muon/build:$PATH

          muon -C build test
   070701015D6CC1000081A4000003E80000006400000001642C0FB600000160000000000000004A00000000000000000000002700000000nvme-cli/.github/workflows/release.yml    ---
name: release

on:
  push:
    branches: [ master ]
    tags:
      - '**'

jobs:
  build:
    runs-on: ubuntu-latest
    if: startsWith(github.ref, 'refs/tags/v')
    permissions:
      contents: write
    steps:
      - uses: actions/checkout@v3
      - uses: ncipollo/release-action@v1
        with:
          token: ${{ secrets.GITHUB_TOKEN }}
070701015D6969000081A4000003E80000006400000001642C0FB5000008DF000000000000004A00000000000000000000002500000000nvme-cli/Documentation/asciidoc.conf  ## linknvme: macro
#
# Usage: linknvme:command[manpage-section]
#
# Note, {0} is the manpage section, while {target} is the command.
#
# Show Git link as: <command>(<section>); if section is defined, else just show
# the command.

[macros]
(?su)[\\]?(?P<name>linknvme):(?P<target>\S*?)\[(?P<attrlist>.*?)\]=

[attributes]
asterisk=&#42;
plus=&#43;
caret=&#94;
startsb=&#91;
endsb=&#93;
backslash=&#92;
tilde=&#126;
apostrophe=&#39;
backtick=&#96;
litdd=&#45;&#45;

ifdef::backend-docbook[]
[linknvme-inlinemacro]
{0%{target}}
{0#<citerefentry>}
{0#<refentrytitle>{target}</refentrytitle><manvolnum>{0}</manvolnum>}
{0#</citerefentry>}
endif::backend-docbook[]

ifdef::backend-docbook[]
ifndef::git-asciidoc-no-roff[]
# "unbreak" docbook-xsl v1.68 for manpages. v1.69 works with or without this.
# v1.72 breaks with this because it replaces dots not in roff requests.
[listingblock]
<example><title>{title}</title>
<literallayout class="monospaced">
|
</literallayout>
{title#}</example>
endif::git-asciidoc-no-roff[]

ifdef::git-asciidoc-no-roff[]
ifdef::doctype-manpage[]
# The following two small workarounds insert a simple paragraph after screen
[listingblock]
<example><title>{title}</title>
<literallayout class="monospaced">
|
</literallayout><simpara></simpara>
{title#}</example>

[verseblock]
<formalpara{id? id="{id}"}><title>{title}</title><para>
{title%}<literallayout{id? id="{id}"}>
{title#}<literallayout>
|
</literallayout>
{title#}</para></formalpara>
{title%}<simpara></simpara>
endif::doctype-manpage[]
endif::git-asciidoc-no-roff[]
endif::backend-docbook[]

ifdef::doctype-manpage[]
ifdef::backend-docbook[]
[header]
template::[header-declarations]
<refentry>
<refmeta>
<refentrytitle>{mantitle}</refentrytitle>
<manvolnum>{manvolnum}</manvolnum>
<refmiscinfo class="source">NVMe</refmiscinfo>
<refmiscinfo class="version">{nvme_version}</refmiscinfo>
<refmiscinfo class="manual">NVMe Manual</refmiscinfo>
</refmeta>
<refnamediv>
  <refname>{manname}</refname>
  <refpurpose>{manpurpose}</refpurpose>
</refnamediv>
endif::backend-docbook[]
endif::doctype-manpage[]

ifdef::backend-xhtml11[]
[attributes]
git-relative-html-prefix=
[linknvme-inlinemacro]
<a href="{git-relative-html-prefix}{target}.html">{target}{0?({0})}</a>
endif::backend-xhtml11[]
 070701015D696A000081A4000003E80000006400000001642C0FB500000330000000000000004A00000000000000000000003100000000nvme-cli/Documentation/asciidoctor-extensions.rb  require 'asciidoctor'
require 'asciidoctor/extensions'

module Nvme
  module Documentation
    class LinkNvmeProcessor < Asciidoctor::Extensions::InlineMacroProcessor
      use_dsl

      named :chrome

      def process(parent, target, attrs)
        if parent.document.basebackend? 'html'
          %(<a href="#{target}.html">#{target}(#{attrs[1]})</a>\n)
        elsif parent.document.basebackend? 'manpage'
          "#{target}(#{attrs[1]})"
        elsif parent.document.basebackend? 'docbook'
          "<citerefentry>\n" \
            "<refentrytitle>#{target}</refentrytitle>" \
            "<manvolnum>#{attrs[1]}</manvolnum>\n" \
          "</citerefentry>\n"
        end
      end
    end
  end
end

Asciidoctor::Extensions.register do
  inline_macro Nvme::Documentation::LinkNvmeProcessor, :linknvme
end
070701015D696B000081A4000003E80000006400000001642C0FB50000176D000000000000004A00000000000000000000002700000000nvme-cli/Documentation/cmd-plugins.txt    linknvme:nvme-intel-id-ctrl[1]::
	Intel - NVMe Identify Controller

linknvme:nvme-intel-internal-log[1]::
	Retrieve Intel device's internal log and save to file

linknvme:nvme-intel-lat-stats[1]::
	Retrieve NVMe Identify Controller, return result and structure

linknvme:nvme-intel-market-name[1]::
	Intel vendor specific marketing name log page

linknvme:nvme-intel-smart-log-add[1]::
	NVMe Intel Additional SMART log page

linknvme:nvme-intel-temp-stats[1]::
	NVMe Intel Additional SMART log page for temp stats

linknvme:nvme-huawei-id-ctrl[1]::
	NVMe huawei Identify Controller

linknvme:nvme-huawei-list[1]::
	List all recognized Huawei NVMe devices

linknvme:nvme-dera-stat[1]::
	NVMe Dera Device status and Additional SMART log page request

linknvme:nvme-micron-clear-pcie-errors[1]::
	Clears correctable PCIe correctable errors of given Micron device

linknvme:nvme-micron-internal-log[1]::
	Retrieve Micron device's internal logs and save to given zip file

linknvme:nvme-micron-nand-stats[1]::
	Retrieves NAND statistics of given micron device

linknvme:nvme-micron-pcie-stats[1]::
	Retrieves pcie error statistics for given micron device

linknvme:nvme-micron-selective-download[1]::
	Performs selective firmware download

linknvme:nvme-micron-smart-add-log[1]::
	Retrieves NAND statistics

linknvme:nvme-micron-temperature-stats[1]::
	Retrieves temperature information of given micron device

linknvme:nvme-netapp-ontapdevices[1]::
	Display information about ONTAP devices

linknvme:nvme-netapp-smdevices[1]::
	Display information for each NVMe path to an E-Series volume

linknvme:nvme-toshiba-clear-pcie-correctable-errors[1]::
	Reset the PCIe correctable errors count to zero

linknvme:nvme-toshiba-vs-internal-log[1]::
	Retrieve a Toshiba device's vendor specific internal log

linknvme:nvme-toshiba-vs-smart-add-log[1]::
	Retrieve a Toshiba device's vendor specific extended SMART log page

linknvme:nvme-transcend-badblock[1]::
	Retrieve Transcend NVMe device's bad blocks

linknvme:nvme-transcend-healthvalue[1]::
	Use NVMe SMART table to analyze the health value of Transcend device

linknvme:nvme-virtium-show-identify[1]::
	Show a complete detail of identify device information in json format

linknvme:nvme-virtium-save-smart-to-vtview-log[1]::
	Periodically save smart attributes into a log file

linknvme:nvme-wdc-cap-diag[1]::
	Retrieve WDC device's diagnostic log and save to file

linknvme:nvme-wdc-capabilities[1]::
	Display WDC plugin command capabilities

linknvme:nvme-wdc-clear-assert-dump[1]::
	Clears the assert dump (if present)

linknvme:nvme-wdc-clear-fw-activate-history[1]::
	Clears the firmware activate history table

linknvme:nvme-wdc-clear-pcie-corr[1]::
	Clears the pcie correctable errors field

linknvme:nvme-wdc-clear-pcie-correctable-errors[1]::
	Clears the pcie correctable errors returned in the smart-log-add command

linknvme:nvme-wdc-cloud-SSD-plugin-version[1]::
	Display WDC plugin Cloud SSD Plugin Version

linknvme:nvme-wdc-drive-essentials[1]::
	Retrieve WDC device's drive essentials bin files

linknvme:nvme-wdc-drive-log[1]::
	Retrieve WDC device's drive log and save to file

linknvme:nvme-wdc-drive-resize[1]::
	Send NVMe WDC Resize Vendor Unique Command

linknvme:nvme-wdc-enc-get-log[1]::
	Send NVMe WDC enc-get-log Vendor Unique Command

linknvme:nvme-wdc-get-crash-dump[1]::
	Retrieve WDC device's crash dump

linknvme:nvme-wdc-get-drive-status[1]::
	Send the NVMe WDC get-drive-status command

linknvme:nvme-wdc-get-latency-monitor-log[1]::
	Display latency monitor log page data in human readable format

linknvme:nvme-wdc-get-pfail-dump[1]::
	Retrieve WDC device's pfail crash dump

linknvme:nvme-wdc-id-ctrl[1]::
	Send NVMe Identify Controller, return result and structure

linknvme:nvme-wdc-log-page-directory[1]::
	Retrieves the list of Log IDs supported by the drive

linknvme:nvme-wdc-namespace-resize[1]::
	Resizes the device's namespace

linknvme:nvme-wdc-purge-monitor[1]::
	Send NVMe WDC Purge-Monitor Vendor Unique Command

linknvme:nvme-wdc-purge[1]::
	Send NVMe WDC Purge Vendor Unique Command

linknvme:nvme-wdc-smart-add-log[1]::
	Send NVMe WDC smart add log Vendor Unique Command

linknvme:nvme-wdc-vs-drive-info[1]::
	Send the NVMe WDC vs-drive-info command

linknvme:nvme-wdc-vs-error-reason-identifier[1]::
	Retrieve WDC device's telemetry log error reason identifier field

linknvme:nvme-wdc-vs-fw-activate-history[1]::
	Execute NVMe WDC vs-fw-activate-history Vendor Unique Command

linknvme:nvme-wdc-vs-internal-log[1]::
	Retrieve WDC device's internal firmware log and save to file

linknvme:nvme-wdc-vs-nand-stats[1]::
	Send NVMe WDC vs-nand-stats Vendor Unique Command

linknvme:nvme-wdc-vs-telemetry-controller-option[1]::
	Disable/Enable the controller initiated option of the telemetry log page

linknvme:nvme-wdc-vs-temperature-stats[1]::
	Display temperature-related statistics

linknvme:nvme-zns-changed-zone-list[1]::
	Retrieve Changed Zone log for the given device

linknvme:nvme-zns-close-zone[1]::
	Closes one or all zones

linknvme:nvme-zns-finish-zone[1]::
	Finishes one or all zones

linknvme:nvme-zns-id-ctrl[1]::
	Send NVMe Zoned Command Set Identify Controller

linknvme:nvme-zns-id-ns[1]::
	Send NVMe Zoned Command Set Identify Namespace

linknvme:nvme-zns-offline-zone[1]::
	Offlines one or all zones

linknvme:nvme-zns-open-zone[1]::
	Opens one or all zones

linknvme:nvme-zns-report-zones[1]::
	Retrieve and display the Report Zones data structure

linknvme:nvme-zns-reset-zone[1]::
	Resets one or all zones

linknvme:nvme-zns-set-zone-desc[1]::
	Set extended descriptor data for a zone

linknvme:nvme-zns-zone-append[1]::
	Send an NVMe write command, provide results

linknvme:nvme-zns-zone-mgmt-recv[1]::
	Zone Management Receive command

linknvme:nvme-zns-zone-mgmt-send[1]::
	Zone Management Send command

linknvme:nvme-zns-zrwa-flush-zone[1]::
	Flush LBAs associated with a ZRWA to a zone

linknvme:nvme-inspur-nvme-vendor-log[1]::
	NVMe Inspur Device Vendor log page request
   070701015D696C000081A4000003E80000006400000001642C0FB500001710000000000000004A00000000000000000000002500000000nvme-cli/Documentation/cmds-main.txt  linknvme:nvme-admin-passthru[1]::
	Admin Passthrough Command

linknvme:nvme-compare[1]::
	IO Compare

linknvme:nvme-error-log[1]::
	Retrieve error logs

linknvme:nvme-flush[1]::
	Submit flush

linknvme:nvme-dsm[1]::
	Submit Data Set Management

linknvme:nvme-format[1]::
	Format namespace(s)

linknvme:nvme-fw-activate[1]::
	F/W Activate (in old version < 1.2)

linknvme:nvme-fw-commit[1]::
	F/W Commit (in > 1.2)

linknvme:nvme-fw-download[1]::
	F/W Download

linknvme:nvme-fw-log[1]::
	Retrieve f/w log

linknvme:nvme-get-feature[1]::
	Get Features

linknvme:nvme-get-log[1]::
	Generic Get Log

linknvme:nvme-telemetry-log[1]::
	Telemetry Host-Initiated Log

linknvme:nvme-changed-ns-list-log[1]::
	Retrieve Changed Namespace List Log

linknvme:nvme-smart-log[1]::
	Retrieve Smart Log

linknvme:nvme-ana-log[1]::
	Retrieve ANA(Asymmetric Namespace Access) Log

linknvme:nvme-endurance-log[1]::
	Retrieve endurance Log

linknvme:nvme-effects-log[1]::
	Retrieve effects Log

linknvme:nvme-self-test-log[1]::
	Retrieve Device Self-test Log

linknvme:nvme-get-ns-id[1]::
	Retrieve namespace identifier

linknvme:nvme-help[1]::
	NVMe CLI Help

linknvme:nvme-id-ctrl[1]::
	Identify Controller

linknvme:nvme-id-ns[1]::
	Identify Namespace

linknvme:nvme-id-nvmset[1]::
	Identify NVM Set List

linknvme:nvme-id-iocs[1]::
	Identify I/O Command Set

linknvme:nvme-create-ns[1]::
	Create a new namespace

linknvme:nvme-delete-ns[1]::
	Delete existing namespace

linknvme:nvme-attach-ns[1]::
	Attach namespace

linknvme:nvme-detach-ns[1]::
	Detach namespace

linknvme:nvme-io-passthru[1]::
	IO Passthrough Command

linknvme:nvme-list-ns[1]::
	List all nvme namespaces

linknvme:nvme-ns-descs[1]::
	Identify Namespace Identification Descriptor

linknvme:nvme-list[1]::
	List all nvme controllers

linknvme:nvme-list-ctrl[1]::
	List controller in NVMe subsystem

linknvme:nvme-list-subsys[1]::
	List NVMe subsystems

linknvme:nvme-reset[1]::
	Reset a NVMe controller

linknvme:nvme-device-self-test[1]::
	Issue Device Self-test Command

linknvme:nvme-read[1]::
	Issue IO Read Command

linknvme:nvme-write[1]::
	Issue IO Write Command

linknvme:nvme-write-zeroes[1]::
	Issue IO Write Zeroes Command

linknvme:nvme-write-uncor[1]::
	Issue IO Write Uncorrectable Command

linknvme:nvme-resv-acquire[1]::
	Acquire Namespace Reservation

linknvme:nvme-resv-register[1]::
	Register Namespace Reservation

linknvme:nvme-resv-release[1]::
	Release Namespace Reservation

linknvme:nvme-resv-report[1]::
	Report Reservation Capabilities

linknvme:nvme-security-recv[1]::
	Security Receive

linknvme:nvme-security-send[1]::
	Security Send

linknvme:nvme-dsm[1]::
	Issue Data Set Management Command

linknvme:nvme-copy[1]::
	Issue Simple Copy Command

linknvme:nvme-set-feature[1]::
	Set Feature

linknvme:nvme-show-regs[1]::
	Show NVMe Controller Registers

linknvme:nvme-discover[1]::
	Send Get Log Page request to Discovery Controller

linknvme:nvme-connect-all[1]::
	Discover and connect to all NVMe-over-Fabrics subsystems

linknvme:nvme-connect[1]::
	Connect to an NVMe-over-Fabrics subsystem

linknvme:nvme-dim[1]::
	Send Discovery Information Management command to a Discovery Controller

linknvme:nvme-disconnect[1]::
	Disconnect from an NVMe-over-Fabrics subsystem

linknvme:nvme-disconnect-all[1]::
	Disconnect from all NVMe-over-Fabrics subsystems

linknvme:nvme-get-property[1]::
	Reads and shows NVMe-over-Fabrics controller property

linknvme:nvme-media-unit-stat-log[1]::
	Retrieve and show the configuration and wear of media units

linknvme:nvme-supported-cap-config-log[1]::
	Retrieve and show the list of Supported Capacity Configuration Descriptors

linknvme:nvme-boot-part-log[1]::
	Retrieve Boot Partition Log

linknvme:nvme-capacity-mgmt[1]::
	Capacity Management Command

linknvme:nvme-check-dhchap-key[1]::
	Generate NVMeoF DH-HMAC-CHAP host key

linknvme:nvme-check-tls-key[1]::
	Validate NVMeoF TLS PSK

linknvme:nvme-cmdset-ind-id-ns[1]::
	I/O Command Set Independent Identify Namespace

linknvme:nvme-endurance-event-agg-log[1]::
	Retrieve Endurance Group Event Aggregate Log

linknvme:nvme-fid-support-effects-log[1]::
	Retrieve FID Support and Effects log

linknvme:nvme-gen-dhchap-key[1]::
	Generate NVMeoF DH-HMAC-CHAP host key

linknvme:nvme-gen-hostnqn[1]::
	Generate NVMeoF host NQN

linknvme:nvme-gen-tls-key[1]::
	Generate NVMeoF TLS PSK

linknvme:nvme-get-lba-status[1]::
	Get LBA Status command

linknvme:nvme-id-domain[1]::
	NVMe Identify Domain List

linknvme:nvme-id-ns-lba-format[1]::
	NVMe Identify Namespace for the specified LBA Format index

linknvme:nvme-lba-status-log[1]::
	Retrieve LBA Status Information Log

linknvme:nvme-list-endgrp[1]::
	NVMe Identify Endurance Group List

linknvme:nvme-ns-rescan[1]::
	Rescans the NVME namespaces

linknvme:nvme-nvm-id-ctrl[1]::
	NVMe Identify Controller NVM Command Set

linknvme:nvme-nvm-id-ns[1]::
	NVMe Identify Namespace NVM Command Set

linknvme:nvme-nvm-id-ns-lba-format[1]::
	NVMe Identify Namespace NVM Command Set for the specified LBA Format index

linknvme:nvme-persistent-event-log[1]::
	Retrieve Persistent Event Log

linknvme:nvme-predictable-lat-log[1]::
	Retrieve Predictable Latency per Nvmset Log

linknvme:nvme-pred-lat-event-agg-log[1]::
	Retrieve Predictable Latency Event Aggregate Log

linknvme:nvme-primary-ctrl-caps[1]::
	NVMe Identify Primary Controller Capabilities

linknvme:nvme-reset[1]::
	Resets the controller

linknvme:nvme-rpmb[1]::
	Replay Protection Memory Block commands

linknvme:nvme-sanitize-log[1]::
	Retrieve sanitize log

linknvme:nvme-set-property[1]::
	Set a property and show the resulting value

linknvme:nvme-show-hostnqn[1]::
	Show NVMeoF host NQN

linknvme:nvme-subsystem-reset[1]::
	Resets the subsystem

linknvme:nvme-supported-log-pages[1]::
	Retrieve the Supported Log pages details

linknvme:nvme-verify[1]::
	verify command

linknvme:nvme-show-topology[1]::
	Show NVMe topology
070701015D696D000081ED000003E80000006400000001642C0FB5000002F5000000000000004A00000000000000000000002900000000nvme-cli/Documentation/install-webdoc.sh  #!/bin/sh

T="$1"

for h in \
	*.txt *.html \
	howto/*.txt howto/*.html \
	technical/*.txt technical/*.html \
	RelNotes/*.txt *.css
do
	if test ! -f "$h"
	then
		: did not match
	elif test -f "$T/$h" &&
		$DIFF -u -I'^Last updated ' "$T/$h" "$h"
	then
		:; # up to date
	else
		echo >&2 "# install $h $T/$h"
		rm -f "$T/$h"
		mkdir -p $(dirname "$T/$h")
		cp "$h" "$T/$h"
	fi
done
strip_leading=$(echo "$T/" | sed -e 's|.|.|g')
for th in \
	"$T"/*.html "$T"/*.txt \
	"$T"/howto/*.txt "$T"/howto/*.html \
	"$T"/technical/*.txt "$T"/technical/*.html
do
	h=$(expr "$th" : "$strip_leading"'\(.*\)')
	case "$h" in
	RelNotes-*.txt | index.html) continue ;;
	esac
	test -f "$h" && continue
	echo >&2 "# rm -f $th"
	rm -f "$th"
done
ln -sf git.html "$T/index.html"
   070701015D696E000081A4000003E80000006400000001642C0FB5000004B0000000000000004A00000000000000000000002800000000nvme-cli/Documentation/manpage-base.xsl   <!-- manpage-base.xsl:
     special formatting for manpages rendered from asciidoc+docbook -->
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
		version="1.0">

<!-- these params silence some output from xmlto -->
<xsl:param name="man.output.quietly" select="1"/>
<xsl:param name="refentry.meta.get.quietly" select="1"/>

<!-- convert asciidoc callouts to man page format;
     nvme.docbook.backslash and nvme.docbook.dot params
     must be supplied by another XSL file or other means -->
<xsl:template match="co">
	<xsl:value-of select="concat(
			      $nvme.docbook.backslash,'fB(',
			      substring-after(@id,'-'),')',
			      $nvme.docbook.backslash,'fR')"/>
</xsl:template>
<xsl:template match="calloutlist">
	<xsl:value-of select="$nvme.docbook.dot"/>
	<xsl:text>sp&#10;</xsl:text>
	<xsl:apply-templates/>
	<xsl:text>&#10;</xsl:text>
</xsl:template>
<xsl:template match="callout">
	<xsl:value-of select="concat(
			      $nvme.docbook.backslash,'fB',
			      substring-after(@arearefs,'-'),
			      '. ',$nvme.docbook.backslash,'fR')"/>
	<xsl:apply-templates/>
	<xsl:value-of select="$nvme.docbook.dot"/>
	<xsl:text>br&#10;</xsl:text>
</xsl:template>

</xsl:stylesheet>
070701015D696F000081A4000003E80000006400000001642C0FB5000001DD000000000000004A00000000000000000000002A00000000nvme-cli/Documentation/manpage-normal.xsl <!-- manpage-normal.xsl:
     special settings for manpages rendered from asciidoc+docbook
     handles anything we want to keep away from docbook-xsl 1.72.0 -->
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
		version="1.0">

<xsl:import href="manpage-base.xsl"/>

<!-- these are the normal values for the roff control characters -->
<xsl:param name="nvme.docbook.backslash">\</xsl:param>
<xsl:param name="nvme.docbook.dot"	>.</xsl:param>

</xsl:stylesheet>
   070701015D6970000081A4000003E80000006400000001642C0FB500001EA8000000000000004A00000000000000000000002300000000nvme-cli/Documentation/meson.build    # SPDX-License-Identifier: GPL-2.0-or-later

adoc_sources = [
  'nvme',
  'nvme-admin-passthru',
  'nvme-ana-log',
  'nvme-attach-ns',
  'nvme-boot-part-log',
  'nvme-capacity-mgmt',
  'nvme-changed-ns-list-log',
  'nvme-cmdset-ind-id-ns',
  'nvme-compare',
  'nvme-connect',
  'nvme-connect-all',
  'nvme-copy',
  'nvme-create-ns',
  'nvme-delete-ns',
  'nvme-dera-stat',
  'nvme-detach-ns',
  'nvme-device-self-test',
  'nvme-dim',
  'nvme-dir-receive',
  'nvme-dir-send',
  'nvme-disconnect',
  'nvme-disconnect-all',
  'nvme-discover',
  'nvme-dsm',
  'nvme-effects-log',
  'nvme-endurance-event-agg-log',
  'nvme-endurance-log',
  'nvme-error-log',
  'nvme-fid-support-effects-log',
  'nvme-mi-cmd-support-effects-log',
  'nvme-fdp-configs',
  'nvme-fdp-usage',
  'nvme-fdp-stats',
  'nvme-fdp-events',
  'nvme-fdp-status',
  'nvme-fdp-update',
  'nvme-fdp-set-events',
  'nvme-flush',
  'nvme-format',
  'nvme-fw-commit',
  'nvme-fw-download',
  'nvme-fw-log',
  'nvme-gen-hostnqn',
  'nvme-get-feature',
  'nvme-get-lba-status',
  'nvme-get-log',
  'nvme-get-ns-id',
  'nvme-get-property',
  'nvme-help',
  'nvme-huawei-id-ctrl',
  'nvme-huawei-list',
  'nvme-id-ctrl',
  'nvme-id-domain',
  'nvme-id-iocs',
  'nvme-id-ns',
  'nvme-id-nvmset',
  'nvme-intel-id-ctrl',
  'nvme-intel-internal-log',
  'nvme-intel-lat-stats',
  'nvme-intel-market-name',
  'nvme-intel-smart-log-add',
  'nvme-intel-temp-stats',
  'nvme-io-mgmt-recv',
  'nvme-io-mgmt-send',
  'nvme-io-passthru',
  'nvme-lba-status-log',
  'nvme-list',
  'nvme-list-ctrl',
  'nvme-list-endgrp',
  'nvme-list-ns',
  'nvme-list-subsys',
  'nvme-lockdown',
  'nvme-micron-clear-pcie-errors',
  'nvme-micron-internal-log',
  'nvme-micron-nand-stats',
  'nvme-micron-pcie-stats',
  'nvme-micron-selective-download',
  'nvme-micron-smart-add-log',
  'nvme-micron-temperature-stats',
  'nvme-netapp-ontapdevices',
  'nvme-netapp-smdevices',
  'nvme-ns-descs',
  'nvme-ns-rescan',
  'nvme-nvm-id-ctrl',
  'nvme-ocp-latency-monitor-log',
  'nvme-ocp-smart-add-log',
  'nvme-ocp-clear-fw-activate-history',
  'nvme-persistent-event-log',
  'nvme-pred-lat-event-agg-log',
  'nvme-predictable-lat-log',
  'nvme-primary-ctrl-caps',
  'nvme-read',
  'nvme-reset',
  'nvme-resv-acquire',
  'nvme-resv-notif-log',
  'nvme-resv-register',
  'nvme-resv-release',
  'nvme-resv-report',
  'nvme-rpmb',
  'nvme-sanitize',
  'nvme-sanitize-log',
  'nvme-seagate-clear-pcie-correctable-errors',
  'nvme-seagate-get-ctrl-tele',
  'nvme-seagate-get-host-tele',
  'nvme-seagate-help',
  'nvme-seagate-plugin-version',
  'nvme-seagate-version',
  'nvme-seagate-vs-internal-log',
  'nvme-seagate-vs-log-page-sup',
  'nvme-seagate-vs-pcie-stats',
  'nvme-seagate-vs-smart-add-log',
  'nvme-seagate-vs-temperature-stats',
  'nvme-seagate-cloud-SSD-plugin-version',
  'nvme-seagate-vs-fw-activate-history',
  'nvme-seagate-clear-fw-activate-history',
  'nvme-security-recv',
  'nvme-security-send',
  'nvme-self-test-log',
  'nvme-set-feature',
  'nvme-set-property',
  'nvme-show-hostnqn',
  'nvme-show-regs',
  'nvme-show-topology',
  'nvme-smart-log',
  'nvme-subsystem-reset',
  'nvme-supported-log-pages',
  'nvme-telemetry-log',
  'nvme-toshiba-clear-pcie-correctable-errors',
  'nvme-toshiba-vs-internal-log',
  'nvme-toshiba-vs-smart-add-log',
  'nvme-transcend-badblock',
  'nvme-transcend-healthvalue',
  'nvme-verify',
  'nvme-virtium-save-smart-to-vtview-log',
  'nvme-virtium-show-identify',
  'nvme-wdc-cap-diag',
  'nvme-wdc-capabilities',
  'nvme-wdc-clear-assert-dump',
  'nvme-wdc-clear-fw-activate-history',
  'nvme-wdc-clear-pcie-correctable-errors',
  'nvme-wdc-cloud-boot-SSD-version',
  'nvme-wdc-cloud-SSD-plugin-version',
  'nvme-wdc-drive-essentials',
  'nvme-wdc-drive-log',
  'nvme-wdc-drive-resize',
  'nvme-wdc-enc-get-log',
  'nvme-wdc-get-crash-dump',
  'nvme-wdc-get-dev-capabilities-log',
  'nvme-wdc-get-drive-status',
  'nvme-wdc-get-error-recovery-log',
  'nvme-wdc-get-latency-monitor-log',
  'nvme-wdc-get-pfail-dump',
  'nvme-wdc-get-unsupported-reqs-log',
  'nvme-wdc-id-ctrl',
  'nvme-wdc-log-page-directory',
  'nvme-wdc-namespace-resize',
  'nvme-wdc-purge',
  'nvme-wdc-purge-monitor',
  'nvme-wdc-vs-cloud-log',
  'nvme-wdc-vs-device-waf',
  'nvme-wdc-vs-drive-info',
  'nvme-wdc-vs-error-reason-identifier',
  'nvme-wdc-vs-fw-activate-history',
  'nvme-wdc-vs-hw-rev-log',
  'nvme-wdc-vs-internal-log',
  'nvme-wdc-vs-nand-stats',
  'nvme-wdc-vs-smart-add-log',
  'nvme-wdc-vs-telemetry-controller-option',
  'nvme-wdc-vs-temperature-stats',
  'nvme-write',
  'nvme-write-uncor',
  'nvme-write-zeroes',
  'nvme-zns-changed-zone-list',
  'nvme-zns-close-zone',
  'nvme-zns-finish-zone',
  'nvme-zns-id-ctrl',
  'nvme-zns-id-ns',
  'nvme-zns-offline-zone',
  'nvme-zns-open-zone',
  'nvme-zns-report-zones',
  'nvme-zns-reset-zone',
  'nvme-zns-set-zone-desc',
  'nvme-zns-zone-append',
  'nvme-zns-zone-mgmt-recv',
  'nvme-zns-zone-mgmt-send',
  'nvme-inspur-nvme-vendor-log',
]

adoc_includes = [
  'cmd-plugins.txt',
  'cmds-main.txt',
]

want_docs = get_option('docs')
want_docs_build = get_option('docs-build')
if want_docs != 'false'
  mandir = join_paths(get_option('mandir'), 'man1')
  htmldir = join_paths(get_option('htmldir'), 'nvme')

  asciidoctor = find_program('asciidoc', required: get_option('docs-build'))
  if want_docs_build and asciidoctor.found()
    # Build documentation before installing

    foreach file : adoc_includes
      configure_file(
        input: file,
        output: file,
        copy: true)
    endforeach

    # man pages
    if want_docs == 'all' or want_docs == 'man'
      xmlto = find_program('xmlto', required: false)
      if xmlto.found()
        foreach adoc : adoc_sources
          input = adoc + '.txt'
          subst = configure_file(
            input: adoc + '.txt',
            output: adoc + '.msubst',
            configuration: substs)
          xml = custom_target(
            adoc.underscorify() + '_xml',
            input: subst,
            output: '@BASENAME@.xml',
            command: [asciidoctor,
                      '-f', files('asciidoc.conf'),
                      '-b', 'docbook',
                      '-d', 'manpage',
                      '-o', '@OUTPUT@',
                      '@INPUT@'],
          )
          custom_target(
            adoc.underscorify() + '_man',
            input: xml,
            output: '@BASENAME@.1',
            command: [xmlto,
                      '-m', files('manpage-normal.xsl'),
                      '-o', '@OUTDIR@',
                      '--skip-validation',
                      'man',
                      '@INPUT@'],
            install: true,
            install_dir: mandir)
        endforeach
      endif
    endif

    # html
    if want_docs == 'all' or want_docs == 'html'
      foreach adoc : adoc_sources
        input = adoc + '.txt'
        subst = configure_file(
          input: adoc + '.txt',
          output: adoc + '.hsubst',
         configuration: substs)
        custom_target(
          adoc.underscorify() + '_html',
          input: subst,
          output: '@BASENAME@.html',
          command: [asciidoctor,
                    '-f', files('asciidoc.conf'),
                    '-b', 'xhtml11',
                    '-d', 'manpage',
                    '-o', '@OUTPUT@',
                    '@INPUT@'],
          install: true,
          install_dir: htmldir)
      endforeach
    endif

  else
    # asciidoctor not found, install pre compiled documetationx

    foreach adoc : adoc_sources
      if want_docs == 'all' or want_docs == 'man'
        man = files(adoc + '.1')
        install_data(man, install_dir: mandir)
      endif
      if want_docs == 'all' or want_docs == 'html'
        html = files(adoc + '.html')
        install_data(html, install_dir: htmldir)
      endif
    endforeach

  endif
endif
070701015D6973000081A4000003E80000006400000001642C0FB500000EAD000000000000004A00000000000000000000002F00000000nvme-cli/Documentation/nvme-admin-passthru.txt    nvme-admin-passthru(1)
======================

NAME
----
nvme-admin-passthru - Submit an arbitrary admin command, return results

SYNOPSIS
--------
[verse]
'nvme-admin-passthru' <device> [--opcode=<opcode> | -o <opcode>]
		[--flags=<flags> | -f <flags>] [-rsvd=<rsvd> | -R <rsvd>]
		[--namespace-id=<nsid>] [--cdw2=<cdw2>] [--cdw3=<cdw3>]
		[--cdw10=<cdw10>] [--cdw11=<cdw11>] [--cdw12=<cdw12>]
		[--cdw13=<cdw13>] [--cdw14=<cdw14>] [--cdw15=<cdw15>]
		[--data-len=<data-len> | -l <data-len>]
		[--metadata-len=<len> | -m <len>]
		[--input-file=<file> | -i <file>]
		[--read | -r ] [--write | -w]
		[--timeout=<to> | -t <to>]
		[--show-command | -s]
		[--dry-run | -d]
		[--raw-binary | -b]
		[--prefill=<prefill> | -p <prefill>]
		[--latency | -T]

DESCRIPTION
-----------
Submits an arbitrary NVMe admin command and returns the applicable
results. This may be the simply the commands result and status, or may
also include a buffer if the command returns one. This command does no
interpretation of the opcodes or options.

The <device> parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).

On success, the returned structure (if applicable) may be returned in
one of several ways depending on the option flags; the structure may
printed by the program as a hex dump, or may be returned as a raw buffer
printed to stdout for another program to parse.

OPTIONS
-------
-o <opcode>::
--opcode=<opcode>::
	The NVMe opcode to send to the device in the command

-f <flags>::
--flags=<flags>::
	The NVMe command flags to send to the device in the command

-R <rsvd>::
--rsvd=<rsvd>::
	The value for the reserved field in the command.

-n <nsid>::
--namespace-id=<nsid>::
	The value for the ns-id in the command.

--cdw[2-3,10-15]=<cdw>::
	Specifies the command dword value for that specified entry in
	the command

-r::
--read::
-w::
--write::
	Used for the data-direction for the command and required for
	commands sending/receiving data. Don't use both read and write
	at the same time.

-i <file>::
--input-file=<file>::
	If the command is a data-out (write) command, use this file
	to fill the buffer sent to the device. If no file is given,
	assumed to use STDIN.

-l <data-len>::
--data-len=<data-len>::
	The data length for the buffer used for this command.

-m <data-len>::
--metadata-len=<data-len>::
	The metadata length for the buffer used for this command.

-s::
--show-cmd::
	Print out the command to be sent.

-d::
--dry-run::
	Do not actually send the command. If want to use --dry-run option,
	--show-cmd option _must_ be set. Otherwise --dry-run option will be
	_ignored_.

-b::
--raw-binary::
	Print the raw returned buffer to stdout if the command returns
	a structure.

-p::
--prefill::
	Prefill the buffer with a predetermined byte value. Defaults to 0.
	This may be useful if the data you are writing is shorter
	than the required buffer, and you need to pad it with a known
	value. It may also be useful if you need to confirm if a device
	is overwriting a buffer for a data-in command.

-T::
--latency::
	Print out the latency the IOCTL took (in us).

EXAMPLES
--------
* The following will run the admin command with opcode=6 and cdw10=1, which
 corresponds to an identify controller command. This example requires the
 data-len param be 4096, which is the size of the returned structure. The -r
 option is used because it is a data-in command
+
------------
# nvme admin-passthru /dev/nvme0 --opcode=06 --data-len=4096 --cdw10=1 -r
------------
+

* Or if you want to save that structure to a file:
+
------------
# nvme admin-passthru /dev/nvme0 --opcode=06 --data-len=4096 --cdw10=1 -r -b > id_ns.raw
------------

NVME
----
Part of the nvme-user suite
   070701015D6976000081A4000003E80000006400000001642C0FB500000461000000000000004A00000000000000000000002800000000nvme-cli/Documentation/nvme-ana-log.txt   nvme-ana-log(1)
===============

NAME
----
nvme-ana-log - Send NVMe ANA log page request, returns result and log

SYNOPSIS
--------
[verse]
'nvme ana-log' <device> [-o <fmt> | --output-format=<fmt>] 

DESCRIPTION
-----------
Retrieves the NVMe Asymmetric Namespace Access log page from an NVMe device
and provides the returned structure.

The <device> parameter is mandatory NVMe character device (ex: /dev/nvme0).

On success, the returned ANA log structure may be returned in one of
several ways depending on the option flags; the structure may parsed by
the program and printed in a readable format or the raw buffer may be
printed to stdout for another program to parse.

OPTIONS
-------
-g::
--groups::
              Return the list of ANA groups without the namespace listing.

-o <format>::
--output-format=<format>::
              Set the reporting format to 'normal', 'json', or
              'binary'. Only one output format can be used at a time.

EXAMPLES
--------
* Print the ANA log page in a human readable format:
------------
# nvme ana-log /dev/nvme0
------------

NVME
----
Part of the nvme-user suite
   070701015D6979000081A4000003E80000006400000001642C0FB50000031C000000000000004A00000000000000000000002A00000000nvme-cli/Documentation/nvme-attach-ns.txt nvme-attach-ns(1)
=================

NAME
----
nvme-attach-ns - Send NVMe attach namespace, return result.

SYNOPSIS
--------
[verse]
'nvme attach-ns' <device> [--namespace-id=<nsid> | -n <nsid>]
			[--controllers=<ctrl-list,> | -c <ctrl-list,>]

DESCRIPTION
-----------
For the NVMe device given, sends the nvme namespace attach command for
the provided namespace identifier, attaching to the provided list of
controller identifiers.

OPTIONS
-------
-n <nsid>::
--namespace-id=<nsid>::
	The namespace identifier to attach.

-c <ctrl-list,>::
-controllers=<ctrl-list,>::
	The comma separated list of controller identifiers to attach
	the namespace too.

EXAMPLES
--------
	Attach namespace to the controller:

		# nvme attach-ns /dev/nvme1  -n 0x2 -c 0x21

NVME
----
Part of the nvme-user suite
070701015D697C000081A4000003E80000006400000001642C0FB5000004DA000000000000004A00000000000000000000002E00000000nvme-cli/Documentation/nvme-boot-part-log.txt nvme-boot-part-log(1)
=====================

NAME
----
nvme-boot-part-log - Retrieves a Boot Partition log page from an NVMe device

SYNOPSIS
--------
[verse]
'nvme boot-part-log' <device> [--lsp=<field> | -s <field>]
                    [--output-file=<file> | -o <file>]
                    [--output-format=<fmt> | -o <fmt>]

DESCRIPTION
-----------
Retrieves an Boot Partition log page from an NVMe device and provides
the returned structure.

The <device> parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).

On success, the returned log structure will be in raw binary format _only_ with
--output-file option which is mandatory.

OPTIONS
-------
-s <field>::
--lsp=<field>::
	The log specified field of LID.

-o <file>::
--output-file=<file>::
	File name to which raw binary data will be saved to.

-o <format>::
--output-format=<format>::
    Set the reporting format to 'normal', 'json', or
    'binary'. Only one output format can be used at a time.

EXAMPLES
--------
* Retrieve Boot Partition data to boot_part_log.bin
+
------------
# nvme boot-part-log /dev/nvme0 --output-file=boot_part_log.bin
------------

NVME
----
Part of the nvme-user suite
  070701015D697F000081A4000003E80000006400000001642C0FB5000005E9000000000000004A00000000000000000000002E00000000nvme-cli/Documentation/nvme-capacity-mgmt.txt nvme-capacity-mgmt(1)
=====================

NAME
----
nvme-capacity-mgmt - Send capacity management command to configure/create/delete
                     Endurance Groups or NVM Sets, returns results.

SYNOPSIS
--------
[verse]
'nvme capacity-mgmt' <device> [--operation=<operation> | -o <operation>]
			[--element-id=<element-id> | -i <element-id>]
			[--cap-lower=<cap-lower> | -l <cap-lower>]
			[--cap-upper=<cap-upper> | -u <cap-upper>]

DESCRIPTION
-----------
For the NVMe device given, sends a capacity management command to
configure/create/delete the Endurance Groups or NVM Sets with the requested
operation and element_id. On success, if the Operation is Create Endurance
group or NVM Set, CQE CDW0 contains Created element identifier else CQE CDW0 is
reserved.

The <device> parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).

OPTIONS
-------
-o <operation>::
--operation=<operation>::
    Operation to be performed by the controller

-i <element-id>::
--element-id=<element-id>::
    Value specific to the value of the Operation field.

-l <cap-lower>::
--cap-lower=<cap-lower>::
	Least significant 32 bits of the capacity in bytes of the Endurance Group or
    NVM Set to be created

-u <cap-upper>::
--cap-upper=<cap-upper>::
	Most significant 32 bits of the capacity in bytes of the Endurance Group or
    NVM Set to be created

EXAMPLES
--------
No examples provided yet.

NVME
----
Part of the nvme-user suite   070701015D6982000081A4000003E80000006400000001642C0FB5000005E3000000000000004A00000000000000000000003400000000nvme-cli/Documentation/nvme-changed-ns-list-log.txt   nvme-changed-ns-list-log(1)
===========================

NAME
----
nvme-changed-ns-list-log - Send NVMe Changed Namespace List log page
                           request, returns result and log.

SYNOPSIS
--------
[verse]
'nvme changed-ns-list-log' <device> [--raw-binary | -b]
			[--output-format=<fmt> | -o <fmt>]

DESCRIPTION
-----------
Retrieves the NVMe Changed Namespace List log page from an NVMe device and
provides the returned structure.

The <device> parameter is mandatory and must be a NVMe character device
(ex: /dev/nvme0).

On success, the returned Changed Namespace List log structure may be
returned in one of several ways depending on the option flags; the
structure may parsed by the program and printed in a readable format or
the raw buffer may be printed to stdout for another program to parse.

OPTIONS
-------
-b::
--raw-binary::
	Print the raw Changed Namespace List log buffer to stdout.

-o <format>::
--output-format=<format>::
              Set the reporting format to 'normal', 'json', or
              'binary'. Only one output format can be used at a time.

EXAMPLES
--------
* Print the Changed Namespace List Log page in a human readable format:
+
------------
# nvme changed-ns-list-log /dev/nvme0
------------
+

* Print the raw Changed Namespace List log to a file:
+
------------
# nvme changed-ns-list-log /dev/nvme0 --raw-binary > log.raw
------------
+
It is probably a bad idea to not redirect stdout when using this mode.

NVME
----
Part of the nvme-user suite
 070701015D6983000081A4000003E80000006400000001642C0FB5000006B7000000000000004A00000000000000000000002F00000000nvme-cli/Documentation/nvme-check-dhchap-key.1    '\" t
.\"     Title: nvme-check-dhchap-key
.\"    Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
.\"      Date: 11/25/2021
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-CHECK\-DHCHAP\" "1" "11/25/2021" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-check-dhchap-key \- Check a generated host DH\-HMAC\-CHAP key
.SH "SYNOPSIS"
.sp
.nf
\fInvme check\-dhchap\-key\fR [\-\-key=<key> ]
.fi
.SH "DESCRIPTION"
.sp
Checks if the key is a valid DH\-HMAC\-CHAP host key of the form: DHHC\-1:00:ia6zGodOr4SEG0Zzaw398rpY0wqipUWj4jWjUh4HWUz6aQ2n: and prints it to stdout\&.
.SH "OPTIONS"
.PP
\-k <key>, \-\-key=<key>
.RS 4
Key to be checked\&.
.RE
.SH "EXAMPLES"
.sp
No Examples
.SH "NVME"
.sp
Part of the nvme\-user suite
 070701015D6984000081A4000003E80000006400000001642C0FB500004544000000000000004A00000000000000000000003200000000nvme-cli/Documentation/nvme-check-dhchap-key.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 8.6.8" />
<title>nvme-check-dhchap-key(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}


#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overriden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-check-dhchap-key(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-check-dhchap-key -
   Check a generated host DH-HMAC-CHAP key
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme check-dhchap-key</em> [--key=&lt;key&gt; ]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>Checks if the key is a valid DH-HMAC-CHAP host key of the form:
DHHC-1:00:ia6zGodOr4SEG0Zzaw398rpY0wqipUWj4jWjUh4HWUz6aQ2n:
and prints it to stdout.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-k &lt;key&gt;
</dt>
<dt class="hdlist1">
--key=&lt;key&gt;
</dt>
<dd>
<p>
        Key to be checked.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="paragraph"><p>No Examples</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated 2021-11-25 14:13:07 KST
</div>
</div>
</body>
</html>
070701015D6985000081A4000003E80000006400000001642C0FB5000001F1000000000000004A00000000000000000000003100000000nvme-cli/Documentation/nvme-check-dhchap-key.txt  nvme-check-dhchap-key(1)
========================

NAME
----
nvme-check-dhchap-key - Check a generated host DH-HMAC-CHAP key

SYNOPSIS
--------
[verse]
'nvme check-dhchap-key' [--key=<key> ]

DESCRIPTION
-----------
Checks if the key is a valid DH-HMAC-CHAP host key of the form:
DHHC-1:00:ia6zGodOr4SEG0Zzaw398rpY0wqipUWj4jWjUh4HWUz6aQ2n:
and prints it to stdout.

OPTIONS
-------
-k <key>::
--key=<key>::
	Key to be checked.

EXAMPLES
--------
No Examples

NVME
----
Part of the nvme-user suite
   070701015D6989000081A4000003E80000006400000001642C0FB50000099D000000000000004A00000000000000000000003100000000nvme-cli/Documentation/nvme-cmdset-ind-id-ns.txt  nvme-cmdset-ind-id-ns(1)
========================

NAME
----
nvme-cmdset-ind-id-ns - Send NVMe I/O Command Set Independent Identify Namespace, return result and structure.

SYNOPSIS
--------
[verse]
'nvme cmdset-ind-id-ns' <device> [--namespace-id=<nsid> | -n <nsid>]
			[-b | --raw-binary]
		    [--human-readable | -H]
		    [--output-format=<fmt> | -o <fmt>]

DESCRIPTION
-----------
For the NVMe device given, sends an I/O Command Set Independent 
identify namespace command and provides the result and returned structure.

The <device> parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).
If the character device is given, the `'--namespace-id'` option is
mandatory, otherwise it will use the ns-id of the namespace for the block
device you opened. For block devices, the ns-id used can be overridden
with the same option.

On success, the structure may be returned in one of several ways depending
on the option flags; the structure may be parsed by the program or the
raw buffer may be printed to stdout.

OPTIONS
-------
-n <nsid>::
--namespace-id=<nsid>::
	Retrieve the identify namespace structure for the given nsid. This
	is required for the character devices, or overrides the block nsid
	if given.

-b::
--raw-binary::
	Print the raw buffer to stdout. Structure is not parsed by
	program. This overrides the vendor specific and human readable options.

-H::
--human-readable::
	This option will parse and format many of the bit fields
	into human-readable formats.

-o <format>::
--output-format=<format>::
              Set the reporting format to 'normal', 'json', or
              'binary'. Only one output format can be used at a time.


EXAMPLES
--------
* Has the program interpret the returned buffer and display the known
fields in a human readable format:
+
------------
# nvme cmdset-ind-id-ns /dev/nvme0n1
------------
+

* If using the character device or overriding namespace id:
+
------------
# nvme cmdset-ind-id-ns /dev/nvme0 -n 1
# nvme cmdset-ind-id-ns /dev/nvme0n1 -n 1
# nvme cmdset-ind-id-ns /dev/nvme0 --namespace-id=1
------------
+

* Have the program return the raw structure in binary:
+
------------
# nvme cmdset-ind-id-ns /dev/nvme0n1 --raw-binary > id_ns.raw
# nvme cmdset-ind-id-ns /dev/nvme0n1 -b > id_ns.raw
------------
+
It is probably a bad idea to not redirect stdout when using this mode.

NVME
----
Part of the nvme-user suite
   070701015D698D000081A4000003E80000006400000001642C0FB500001757000000000000004A00000000000000000000002700000000nvme-cli/Documentation/nvme-config.txt    nvme-config(1)
===============

NAME
----
nvme-config - NVMe-over-Fabrics configuration.

SYNOPSIS
--------
[verse]
'nvme config'
		[--scan                   | -R]
		[--modify                 | -M]
		[--update                 | -U]
		[--dump                   | -O]
		[--config=<cfg>      | -J <cfg> ]
		[--transport=<trtype>     | -t <trtype>]
		[--nqn=<subnqn>           | -n <subnqn>]
		[--traddr=<traddr>        | -a <traddr>]
		[--trsvcid=<trsvcid>      | -s <trsvcid>]
		[--host-traddr=<traddr>   | -w <traddr>]
		[--host-iface=<iface>     | -f <iface>]
		[--hostnqn=<hostnqn>      | -q <hostnqn>]
		[--hostid=<hostid>        | -I <hostid>]
		[--dhchap-secret=<secret> | -S <secret>]
		[--dhchap-ctrl-secret=<secret> | -C <secret>]
		[--nr-io-queues=<#>       | -i <#>]
		[--nr-write-queues=<#>    | -W <#>]
		[--nr-poll-queues=<#>     | -P <#>]
		[--queue-size=<#>         | -Q <#>]
		[--keep-alive-tmo=<#>     | -k <#>]
		[--reconnect-delay=<#>    | -c <#>]
		[--ctrl-loss-tmo=<#>      | -l <#>]
		[--duplicate-connect      | -D]
		[--disable-sqflow         | -d]
		[--hdr-digest             | -g]
		[--data-digest            | -G]

DESCRIPTION
-----------
Read in the NVMe over Fabrics configuration from the specified JSON
configuration file and allow to update or modify the contents.
The JSON configuration file format is documented in
https://github.com/linux-nvme/libnvme/doc/config-schema.json

OPTIONS
-------
-R::
--scan::
	Additionally read the current configuration from sysfs.

-M::
--modify::
	Add or modify entries in the configuration based on the values from
        the commandline.

-U::
--update::
	Write updated configuration into the JSON configuration file.

-O::
--dump::
	Print out resulting JSON configuration file to stdout.

-J <cfg>::
--config=<cfg>::
	Use the specified JSON configuration file instead of the
	default @SYSCONFDIR@/nvme/config.json file or 'none' to not read in
	an existing configuration file.

-t <trtype>::
--transport=<trtype>::
	This field specifies the network fabric being used for
	a NVMe-over-Fabrics network.  Current string values include:
+
[]
|=================
|Value|Definition
|rdma|The network fabric is an rdma network (RoCE, iWARP, Infiniband, basic rdma, etc)
|fc  |The network fabric is a Fibre Channel network.
|tcp |The network fabric is a TCP/IP network.
|loop|Connect to a NVMe over Fabrics target on the local host
|=================

-n <subnqn>::
--nqn <subnqn>::
	This field specifies the name for the NVMe subsystem to connect to.

-a <traddr>::
--traddr=<traddr>::
	This field specifies the network address of the Controller.
	For transports using IP addressing (e.g. rdma) this should be an
	IP-based address (ex. IPv4).

-s <trsvcid>::
--trsvcid=<trsvcid>::
	This field specifies the transport service id.  For transports using IP
	addressing (e.g. rdma) this field is the port number. By default, the IP
	port number for the RDMA transport is 4420.

-w <traddr>::
--host-traddr=<traddr>::
	This field specifies the network address used on the host to connect
	to the Controller. For TCP, this sets the source address on the socket.

-f <iface>::
--host-iface=<iface>::
	This field specifies the network interface used on the host to connect
	to the Controller (e.g. IP eth1, enp2s0, enx78e7d1ea46da). This forces
	the connection to be made on a specific interface instead of letting
	the system decide.

-q <hostnqn>::
--hostnqn=<hostnqn>::
	Overrides the default Host NQN that identifies the NVMe Host.
	If this option is not specified, the default is read from
	@SYSCONFDIR@/nvme/hostnqn first. If that does not exist, the autogenerated
	NQN value from the NVMe Host kernel module is used next.
	The Host NQN uniquely identifies the NVMe Host.

-I <hostid>::
--hostid=<hostid>::
	UUID(Universally Unique Identifier) to be discovered which should be
	formatted.

-S <secret>::
--dhchap-secret=<secret>::
	NVMe In-band authentication secret; needs to be in ASCII format as
	specified in NVMe 2.0 section 8.13.5.8 'Secret representation'.
	If this option is not specified, the default is read from
	@SYSCONFDIR@/nvme/hostkey. If that does not exist no in-band authentication
	is attempted.

-C <secret>::
--dhchap-ctrl-secret=<secret>::
	NVMe In-band authentication controller secret for bi-directional
	authentication; needs to be in ASCII format as
	specified in NVMe 2.0 section 8.13.5.8 'Secret representation'.
	If not present bi-directional authentication is not attempted.

-i <#>::
--nr-io-queues=<#>::
	Overrides the default number of I/O queues create by the driver.

-W <#>::
--nr-write-queues=<#>::
	Adds additional queues that will be used for write I/O.

-P <#>::
--nr-poll-queues=<#>::
	Adds additional queues that will be used for polling latency sensitive I/O.

-Q <#>::
--queue-size=<#>::
	Overrides the default number of elements in the I/O queues created
	by the driver.

-k <#>::
--keep-alive-tmo=<#>::
	Overrides the default keep alive timeout (in seconds).

-c <#>::
--reconnect-delay=<#>::
	Overrides the default delay (in seconds) before reconnect is attempted
	after a connect loss.

-l <#>::
--ctrl-loss-tmo=<#>::
	Overrides the default controller loss timeout period (in seconds).

-D::
--duplicate-connect::
	Allows duplicated connections between same transport host and subsystem
	port.

-d::
--disable-sqflow::
	Disables SQ flow control to omit head doorbell update for submission
	queues when sending nvme completions.

-g::
--hdr-digest::
	Generates/verifies header digest (TCP).

-G::
--data-digest::
	Generates/verifies data digest (TCP).

EXAMPLES
--------
* Read the current system configuration and write the contents to /tmp/config.json:
+
------------
# nvme config --config /tmp/config.json --scan --update
------------

SEE ALSO
--------
nvme-discover(1)
nvme-connect(1)
https://github.com/linux-nvme/libnvme/doc/config-schema.json


AUTHORS
-------
This was written by mailto:hare@suse.com[Hannes Reinecke]

NVME
----
Part of the nvme-user suite
 070701015D6996000081A4000003E80000006400000001642C0FB500000A55000000000000004A00000000000000000000002500000000nvme-cli/Documentation/nvme-copy.txt  nvme-copy(1)
============

NAME
----
nvme-copy - Send an NVMe Simple Copy command, provide results

SYNOPSIS
--------
[verse]
'nvme-copy' <device> [--sdlba=<sdlba> | -d <sdlba>]
			[--blocks=<nlb-list,> | -b <nlb-list,>]
			[--slbs=<slbas,> | -s <slbas,>]
			[--limited-retry | -l]
			[--force-unit-access | -f]
			[--prinfow=<prinfow> | -p <prinfow>]
			[--prinfor=<prinfor> | -P <prinfor>]
			[--ref-tag=<reftag> | -r <reftag>]
			[--expected-ref-tags=<reftag,> | -R <reftag,>]
			[--app-tag=<apptag> | -a <apptag>]
			[--expected-app-tags=<apptag,> | -A <apptag,>]
			[--app-mask=<appmask> | -m <appmask>]
			[--expected-app-masks=<appmask,> | -M <appmask,>]
			[--dir-type=<type> | -T <type>]
			[--dir-spec=<spec> | -S <spec>]
			[--format=<entry-format> | -F <entry-format>]

DESCRIPTION
-----------
The Copy command is used by the host to copy data from one or more source
logical block ranges to a single consecutive destination logical block range.

OPTIONS
-------
--sdlba=<sdlba>::
-d <sdlba>::
	64-bit addr of first destination logical block

--blocks=<nlb-list,>::
-b <nlb-list,>::
	Comma separated list of the number of blocks in each range

--slbs=<slbas,>::
-s <slbas,>::
	Comma separated list of the starting blocks in each range

--limited-retry::
-l::
	Sets the limited retry flag.

--force-unit-access::
-f::
	Set the force-unit access flag.

--prinfow=<prinfow>::
-p <prinfow>::
	Protection Information field write definition.

--prinfor=<prinfor>::
-P <prinfor>::
	Protection Information field read definition.

--ref-tag=<reftag>::
-r <reftag>::
	initial lba reference tag.

--expected-ref-tags=<reftag,>::
-R <reftag,>::
	expected lba reference tags (comma-separated list).

--app-tag=<apptag>::
-a <apptag>::
	lba app tag

--expected-app-tags=<apptag,>::
-A <apptag,>::
	expected lba app tags (comma-separated list)

--app-mask=<appmask>::
-m <appmask>::
	lba tag mask

--expected-app-masks=<appmask,>::
-M <appmask,>::
	expected lba tag masks (comma-separated list)

--dir-type=<type>::
-T <type>::
	Optional directive type. The nvme-cli only enforces the value
	be in the defined range for the directive type, though the NVMe
	specification (1.3a) defines only one directive, 01h, for write
	stream identifiers.

--dir-spec=<spec>::
-S <spec>::
	Optional field for directive specifics. When used with
	write streams, this value is defined to be the write stream
	identifier. The nvme-cli will not validate the stream requested
	is within the controller's capabilities.

--format=<entry-format>::
-F <entry-format>::
	source range entry format

EXAMPLES
--------
No examples yet.

NVME
----
Part of the nvme-user suite
   070701015D6999000081A4000003E80000006400000001642C0FB500000AF7000000000000004A00000000000000000000002A00000000nvme-cli/Documentation/nvme-create-ns.txt nvme-create-ns(1)
=================

NAME
----
nvme-create-ns - Send NVMe Namespace management command to create namespace, returns results.

SYNOPSIS
--------
[verse]
'nvme create-ns' <device> [--nsze=<nsze> | -s <nsze>]
			[--ncap=<ncap> | -c <ncap>]
			[--flbas=<flbas> | -f <flbas>]
			[--dps=<dps> | -d <dps>]
			[--nmic=<nmic> | -m <nmic>]
			[--anagrp-id=<anagrpid> | -a <anagrpid>]
			[--nvmset-id=<nvmsetid> | -i <nvmsetid>]
			[--csi=<command_set_identifier> | -y <command_set_identifier>]
			[--lbstm=<lbstm> | -l <lbstm>]
			[--block-size=<block-size> | -b <block-size>]
			[--timeout=<timeout> | -t <timeout>]
			[--nsze-si=<nsze-si> | -S <nsze-si>]
			[--ncap-si=<ncap-si> | -C <ncap-si>]

DESCRIPTION
-----------
For the NVMe device given, sends a namespace management command to create
the namespace with the requested settings. On success, the namespace
identifier assigned by the controller is returned.

The <device> parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).

OPTIONS
-------
-s::
--nsze::
	The namespace size.

-c::
--ncap::
	The namespace capacity.

-f::
--flbas::
	The namespace formatted logical block size setting.
	Conflicts with --block-size argument.

-d::
--dps::
	The data protection settings.

-m::
--nmic::
	Namespace multipath and sharing capabilities.

-a::
--anagrp-id::
	ANA Group Identifier. If this value is 0h specifies
	that the controller determines the value to use

-i <nvmsetid>::
--nvmset-id=<nvmsetid>::
	This field specifies the identifier of the NVM Set.

-y <command_set_identifier>::
--csi=<command_set_identifier>::
	This field specifies the identifier of command set.
	if not issued, NVM Command Set will be selected.

-l <lbstm>::
--lbstm=<lbstm>::
	Logical Block Storage Tag Mask for end-to-end protection.

-b::
--block-size::
	Target block size the new namespace should be formatted as. Potential FLBAS
  values will be values will be scanned and the lowest numbered will be
  selected for the create-ns operation. Conflicts with --flbas argument.

-S::
--nsze-si::
	The namespace size (NSZE) in standard SI units.
	The value SI suffixed is divided by the namespace LBA size to set as NSZE.
	If the value not suffixed it is set as same with the nsze option.

-C::
--ncap-si::
	The namespace capacity (NCAP) in standard SI units.
	The value SI suffixed is divided by the namespace LBA size to set as NCAP.
	If the value not suffixed it is set as same with the ncap option.

EXAMPLES
--------
* Create a namespace:
+
------------
# nvme create-ns /dev/nvme0 --nsze 11995709440 --ncap 1199570940 --flbas 0 --dps 0 --nmic 0
# nvme create-ns /dev/nvme0 --nsze-si 6.14T --ncap 1199570940 --flbas 0 --dps 0 --nmic 0
------------

NVME
----
Part of the nvme-user suite
 070701015D699C000081A4000003E80000006400000001642C0FB5000002D7000000000000004A00000000000000000000002A00000000nvme-cli/Documentation/nvme-delete-ns.txt nvme-id-ns(1)
=============

NAME
----
nvme-delete-ns - Send NVMe Namespace Management delete namespace command, return result.

SYNOPSIS
--------
[verse]
'nvme delete-ns' <device> [--namespace-id=<nsid> | -n <nsid>]

DESCRIPTION
-----------
For the NVMe device given, sends an nvme namespace management command
to delete the requested namespace and provides the result.

The <device> parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).
The `'--namespace-id'` option is mandatory.

OPTIONS
-------
-n <nsid>::
--namespace-id=<nsid>::
	The namespace identifier to delete.

EXAMPLES
--------
No examples yet.

NVME
----
Part of the nvme-user suite
 070701015D699F000081A4000003E80000006400000001642C0FB500000333000000000000004A00000000000000000000002A00000000nvme-cli/Documentation/nvme-dera-stat.txt nvme-dera-stat(1)
=================

NAME
----
nvme-dera-stat - Send NVMe Dera Device status and Additional SMART log page request, returns result and log

SYNOPSIS
--------
[verse]
'nvme dera stat' <device> 

DESCRIPTION
-----------
Retrieves the NVMe Dera Device status and Additional SMART log page from the device and
provides the returned structure.

The <device> parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).

On success, the returned status and smart log structure are printed in a readable format.

OPTIONS
-------
none


EXAMPLES
--------
* Print the Dera Device status and Additional SMART log page in a human readable format:
+
------------
# nvme dera stat /dev/nvme0
------------

NVME
----
Part of the nvme-user suite
 070701015D69A2000081A4000003E80000006400000001642C0FB5000002D9000000000000004A00000000000000000000002A00000000nvme-cli/Documentation/nvme-detach-ns.txt nvme-detach-ns(1)
=================

NAME
----
nvme-detach-ns - Send NVMe detach namespace, return result.

SYNOPSIS
--------
[verse]
'nvme detach-ns' <device> [--namespace-id=<nsid> | -n <nsid>]
			[--controllers=<ctrl-list,> | -c <ctrl-list,>

DESCRIPTION
-----------
For the NVMe device given, sends the nvme namespace detach command for
the provided namespace identifier, attaching to the provided list of
controller identifiers.

OPTIONS
-------
-n <nsid>::
--namespace-id=<nsid>::
	The namespace identifier to detach.

-c <ctrl-list,>::
-controllers=<ctrl-list,>::
	The comma separated list of controller identifiers to detach
	the namespace from.

EXAMPLES
--------
No examples yet.

NVME
----
Part of the nvme-user suite
   070701015D69A5000081A4000003E80000006400000001642C0FB500000687000000000000004A00000000000000000000003100000000nvme-cli/Documentation/nvme-device-self-test.txt  nvme-device-self-test(1)
========================

NAME
----
nvme-device-self-test - Perform the necessary tests to observe the performance and the parameters

SYNOPSIS
--------
[verse]
'nvme device-self-test' <device> [--namespace-id=<NUM> | -n <NUM>]
			[--self-test-code=<NUM> | -s <NUM>]  [--wait | -w]

DESCRIPTION
-----------
Initiates the required test based on the user input.

The <device> parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).

On success, the corresponding test is initiated.

OPTIONS
-------
-n <NUM>::
--namespace-id=<NUM>::
	Indicate the namespace in which the device self-test has to be carried out

-s <NUM>::
--self-test-code=<NUM>::
        This field specifies the action taken by the device self-test command :
         0h: Show current state of device self-test operation
         1h: Start a short device self-test operation
         2h: Start a extended device self-test operation
         eh: Start a vendor specific device self-test operation
         fh: Abort the device self-test operation
	Default is 0h.

-w::
--wait::
	Wait for the device self test to complete before exiting
	The device self-test is aborted by SIGINT signal interrupt for the wait
	The option is ignored if the abort self-test code option specified.

EXAMPLES
--------
* Start a short device self-test in the namespace-id 1:
+
------------
# nvme device-self-test /dev/nvme0 -n 1 -s 1
------------
+

* Abort the device self-test operation in the namespace-id 1:
+
------------
# nvme device-self-test /dev/nvme0 -n 1 -s 0xf
------------

NVME
----
Part of the nvme-user suite
 070701015D69A8000081A4000003E80000006400000001642C0FB5000008A5000000000000004A00000000000000000000002400000000nvme-cli/Documentation/nvme-dim.txt   nvme-dim(1)
===========

NAME
----
nvme-dim - Send Discovery Information Management command to one or more Discovery Controllers.

SYNOPSIS
--------
[verse]
'nvme dim'
		[--task=<task>     | -t <task>]
		[--nqn=<nqn>       | -n <nqn>]
		[--device=<device> | -d <device>]

DESCRIPTION
-----------
Send Discovery Information Management (DIM) command to one or more Discovery
Controllers. The DIM command allows performing two types of tasks: register or
deregister.

The DIM command is used to explicitly register with Discovery Controllers (DC),
especially with Central Discovery Controllers (CDC). CDCs maintain a database (DB)
of all the Hosts and Storage Subsystems in a network. The register task is used
to add a host to the CDC's DB. The deregister task is used to remove a host from
the CDC's DB.

During a register operation the host will send mandatory information such as the
Host's NQN and ID, as well as the Host's hostname and the Operating System's
version that it is running on. There is also an optional Host Symbolic Name
that can be registered with the CDC.

This command can only be applied to existing DC connections previously created
with the nvme-discover(1) command using the --persistent option.

OPTIONS
-------
-t <task>::
--task <task>::
	The task to perform: "register" or "deregister".

-n <subnqn>::
--nqn <nqn>::
	The DIM command will be sent to the Discovery Controller (DC) matching this
	NQN. A list of comma-separated NQNs can be supplied to apply the command to
	more than one DC.

-d <device>::
--device <device>::
	The DIM command will be sent to the Discovery Controllers (DC) associated
	with this NVMe device handle. A list of comma-separated device handles can
	be supplied to apply the command to more than one DC.

EXAMPLES
--------
* Register with the Central Discovery Controller (CDC) named
nqn.1988-11.com.dell:SFSS:1:20220118125153e8:
+
------------
# nvme dim --task=register --nqn=nqn.1988-11.com.dell:SFSS:1:20220118125153e8
------------

* Deregister from Central Discovery Controller (CDC) associated with nvme4
+
------------
# nvme dim --task=deregister --device=nvme4
------------

SEE ALSO
--------
nvme-discover(1)

NVME
----
Part of the nvme-user suite
   070701015D69AB000081A4000003E80000006400000001642C0FB500000B08000000000000004A00000000000000000000002C00000000nvme-cli/Documentation/nvme-dir-receive.txt   nvme-dir-receive(1)
===================

NAME
----
nvme-dir-receive - Send a directive receive command, returns applicable results

SYNOPSIS
--------
[verse]
'nvme dir-receive' <device> [--namespace-id=<nsid> | -n <nsid>]
			  [--data-len=<data-len> | -l <data-len>]
			  [--dir-type=<dtype> | -D <dtype>]
			  [--dir-spec=<dspec> | -S <dspec>]
			  [--dir-oper=<doper> | -O <doper>]
			  [--req-resource=<nsr> | -r <nsr>]
			  [--human-readable | -H]
			  [--raw-binary | -b]

DESCRIPTION
-----------
Submits an NVMe Directive Receive admin command and returns the applicable
results. This may be the combination of directive type, and operation, as 
well as number of requested resource if specific operation needs it.

The <device> parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).

On success, the returned directive's parameter structure (if applicable) is 
returned in one of several ways depending on the option flags; the
structure may parsed by the program and printed in a readable format
if it is a known structure, displayed in hex, or the raw buffer may be
printed to stdout for another program to parse.

OPTIONS
-------
-n <nsid>::
--namespace-id=<nsid>::
	Retrieve the feature for the given nsid. This is optional and
	most features do not use this value.

-D <dtype>::
--dir-type=<dtype>::
	Directive type	

-S <dspec>::
--dir-spec=<dspec>::
	Directive specific	

-O <doper>::
--dir-oper=<doper>::
	Directive operation	

-r <nsr>::
--req-resource=<nsr>::
	Directive requested resource count

+
[]
|==================
|Select|Description
|0|Current 
|1|Default 
|2|Saved
|3|Supported capabilities
|4â€“7|Reserved
|==================

-l <data-len>::
--data-len=<data-len>::
	The data length for the buffer returned for this feature. Most
	known features do not use this value. The exception is LBA
	Range Type

-b::
--raw-binary::
	Print the raw receive buffer to stdout if the command returns
	a structure.

-H::
--human-readable::
	Print the decoded receive buffer to stdout if the command returns
	a structure.

EXAMPLES
--------
* Identify directive type supported :
+
------------
# nvme dir-receive /dev/nvme0 --dir-type 0 --dir-oper 1 --human-readable
------------
+

* Get stream directive parameters : 
+
------------
# nvme dir-receive /dev/nvme0 --dir-type 1 --dir-oper 1 --human-readable 
------------
+

* Allocate 3 streams for namespace 1
+
------------
# nvme dir-receive /dev/nvme0n1 --dir-type 1 --dir-oper 3 --req-resource 3 --human-readable 
------------
+

* Get streams directive status :
+
------------
# nvme dir-receive /dev/nvme0 --dir-type 1 --dir-oper 2 --human-readable 
------------
+
It is probably a bad idea to not redirect stdout when using this mode.

NVME
----
Part of the nvme-user suite
070701015D69AE000081A4000003E80000006400000001642C0FB500000B5C000000000000004A00000000000000000000002900000000nvme-cli/Documentation/nvme-dir-send.txt  nvme-dir-send(1)
================

NAME
----
nvme-dir-send - Issue a directive send command, returns applicable results

SYNOPSIS
--------
[verse]
'nvme dir-send' <device> [--namespace-id=<nsid> | -n <nsid>]
			  [--data-len=<data-len> | -l <data-len>]
			  [--dir-type=<dtype> | -D <dtype>]
			  [--dir-spec=<dspec> | -S <dspec>]
			  [--dir-oper=<doper> | -O <doper>]
			  [--endir=<endir> | -e <endir>]
			  [--target-dir=<tdir> | -T <tdir>]
			  [--human-readable | -H]
			  [--raw-binary | -b]

DESCRIPTION
-----------
Submits an NVMe Directive Send admin command and returns the applicable
results. This may be the combination of directive type, and operation, as
well as target directive and its enable/disable status of the operation,
if specific operation needs it.

The <device> parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).

On success, the returned directive's parameter structure (if applicable) is
returned in one of several ways depending on the option flags; the
structure may parsed by the program and printed in a readable format
if it is a known structure, displayed in hex, or the raw buffer may be
printed to stdout for another program to parse.

OPTIONS
-------
-n <nsid>::
--namespace-id=<nsid>::
	Retrieve the feature for the given nsid. This is optional and
	most features do not use this value.

-D <dtype>::
--dir-type=<dtype>::
	Directive type	

-S <dspec>::
--dir-spec=<dspec>::
	Directive specific	

-O <doper>::
--dir-oper=<doper>::
	Directive operation	

-T <tdir>::
--target-dir=<nsr>::
	Target directive of the operation

-e <endir>::
--endir=<endir>::
	Target directive enable(1) or disable (0) operation

+
[]
|==================
|Select|Description
|0|Current 
|1|Default 
|2|Saved
|3|Supported capabilities
|4â€“7|Reserved
|==================

-l <data-len>::
--data-len=<data-len>::
	The data length for the buffer returned for this feature. Most
	known features do not use this value. The exception is LBA
	Range Type

-b::
--raw-binary::
	Print the raw receive buffer to stdout if the command returns
	a structure.

-H::
--human-readable::
	Print the decoded receive buffer to stdout if the command returns
	a structure.

EXAMPLES
--------
* Enable streams directive :
+
------------
# nvme dir-send /dev/nvme0n1 --dir-type 0 --dir-oper 1 --target-dir 1 --endir 1
------------
+

* Disable streams directive :
+
------------
# nvme dir-send /dev/nvme0n1 --dir-type 0 --dir-oper 1 --target-dir 1 --endir 0
------------
+

* Release all allocated streams resource :
+
------------
# nvme dir-send /dev/nvme0n1 --dir-type 1 --dir-oper 2
------------
+

* Release stream ID 3 :
+
------------
# nvme dir-send /dev/nvme0 --dir-type 1 --dir-oper 1 --dir-spec 3
------------
+
It is probably a bad idea to not redirect stdout when using this mode.

NVME
----
Part of the nvme-user suite
070701015D69B1000081A4000003E80000006400000001642C0FB500000220000000000000004A00000000000000000000002F00000000nvme-cli/Documentation/nvme-disconnect-all.txt    nvme-disconnect-all(1)
======================

NAME
----
nvme-disconnect-all - Disconnect from all connected Fabrics controllers.

SYNOPSIS
--------
[verse]
'nvme disconnect-all'

DESCRIPTION
-----------
Disconnects and removes all existing NVMe over Fabrics controllers.

See the documentation for the nvme-disconnect(1) command for further
background.

EXAMPLES
--------
* Disconnect all existing nvme controllers:
+
------------
# nvme disconnect-all
------------

SEE ALSO
--------
nvme-disconnect(1)

NVME
----
Part of the nvme-user suite
070701015D69B4000081A4000003E80000006400000001642C0FB5000004B6000000000000004A00000000000000000000002B00000000nvme-cli/Documentation/nvme-disconnect.txt    nvme-disconnect(1)
==================

NAME
----
nvme-disconnect - Disconnect one or more Fabrics controller(s).

SYNOPSIS
--------
[verse]
'nvme disconnect'
		[--nqn=<subnqn>           | -n <subnqn>]
		[--device=<device>        | -d <device>]

DESCRIPTION
-----------
Disconnects and removes one or more existing NVMe over Fabrics controllers.
If the --nqn option is specified all controllers connecting to the Subsystem
identified by subnqn will be removed.  If the --device option is specified
the controller specified by the --device option will be removed.

OPTIONS
-------
-n <subnqn>::
--nqn <subnqn>::
	Indicates that all controllers for the NVMe subsystems specified
	should be removed.

-d <device>::
--device <device>::
	Indicates that the controller with the specified name should be
	removed.

EXAMPLES
--------
* Disconnect all controllers for a subsystem named
nqn.2014-08.com.example:nvme:nvm-subsystem-sn-d78432:
+
------------
# nvme disconnect --nqn=nqn.2014-08.com.example:nvme:nvm-subsystem-sn-d78432
------------

* Disconnect the controller nvme4
+
------------
# nvme disconnect --device=nvme4
------------

SEE ALSO
--------
nvme-connect(1)


NVME
----
Part of the nvme-user suite
  070701015D69BA000081A4000003E80000006400000001642C0FB5000008F4000000000000004A00000000000000000000002400000000nvme-cli/Documentation/nvme-dsm.txt   nvme-dsm(1)
===========

NAME
----
nvme-dsm - Send NVMe Data Set Management, return results

SYNOPSIS
--------
[verse]
'nvme dsm' <device>  [ --namespace-id=<nsid> | -n <nsid> ]
			[ --ctx-attrs=<attribute-list,> | -a <attribute-list,> ]
			[ --blocks=<nlb-list,> | -b <nlb-list,> ]
			[ --slbs=<slba-list,> | -s <slba-list,> ]
			[ --ad | -d ] [ --idw | -w ] [ --idr | -r ]
			[ --cdw11=<cdw11> | -c <cdw11> ]


DESCRIPTION
-----------
For the NVMe device given, sends an Data Set Management command and
provides the result and returned structure.

The <device> parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).
If the character device is given, the `'--namespace-id'` option is
mandatory, otherwise it will use the ns-id of the namespace for the block
device you opened. For block devices, the ns-id used can be overridden
with the same option.

You must specify at least one of the values for range list. If the range
lists provided do not list the same number of elements, the default
values for the remaining in the range will be set to 0.

The command dword 11 may be provided at the command line. For convenience,
the current defined attributes (discard, integral read/write) for a
data-set management have flags. If cdw11 is specified, this will override
any settings from the flags may have provided.

OPTIONS
-------
-n <nsid>::
--namespace-id=<nsid>::
	Sends the command with the requested nsid. This is required for the
	character devices, or overrides the block nsid if given.

-a <attribute-list,>::
--ctx-attrs=<attribute-list>::
	Comma separated list of the context attributes in each range

-b <nlb-list,>::
--blocks=<nlb-list,>::
	Comma separated list of the number of blocks in each range

-s <slba-list,>::
--slbs=<slba-list,>::
	Comma separated list of the starting block in each range

-d <deallocate>::
--ad=<deallocate>::
	Attribute Deallocate.

-w <write>::
--idw=<write>::
	Attribute Integral Dataset for Write.

-r <read>::
--idr=<read>::
	Attribute Integral Dataset for Read.

-c <cdw11>::
--cdw11=<cdw11>::
	All the command command dword 11 attributes. Use exclusive from
	specifying individual attributes

EXAMPLES
--------
No examples yet

NVME
----
Part of the nvme-user suite
070701015D69BD000081A4000003E80000006400000001642C0FB5000005BD000000000000004A00000000000000000000002C00000000nvme-cli/Documentation/nvme-effects-log.txt   nvme-effects-log(1)
===================

NAME
----
nvme-effects-log - Send NVMe Command Effects log page request, returns result and log

SYNOPSIS
--------
[verse]
'nvme effects-log' <device> [--output-format=<fmt> | -o <fmt>]
                            [--human-readable | -H]
                            [--raw-binary | -b]

DESCRIPTION
-----------
Retrieves the NVMe Command Effects log page from an NVMe device and provides
the returned structure.

The <device> parameter is mandatory and should be the NVMe character
device (ex: /dev/nvme0).

On success, the returned command effects log structure will be printed
for each command that is supported.

OPTIONS
-------

-o <format>::
--output-format=<format>::
	This option will set the reporting format to normal, json, or binary.
	Only one output format can be used at a time.

-H::
--human-readable::
	This option will parse and format many of the bit fields into a
	human-readable format.

-b::
--raw-binary::
	This option will print the raw buffer to stdout. Structure is not
	parsed by program.  This overrides the human-readable option.

EXAMPLES
--------
* Print the effects log page in a human readable format:
+
------------
# nvme effects-log /dev/nvme0
------------
+

* Have the program return the raw structure in binary:
+
------------
# nvme effects-log /dev/nvme0 --raw-binary > effects_log.raw
# nvme effects-log /dev/nvme0 -b > effects_log.raw
------------

NVME
----
Part of the nvme-user suite
   070701015D69C0000081A4000003E80000006400000001642C0FB5000007AC000000000000004A00000000000000000000003800000000nvme-cli/Documentation/nvme-endurance-event-agg-log.txt   nvme-endurance-event-agg-log(1)
===============================

NAME
----
nvme-endurance-event-agg-log - Send NVMe Endurance log page request, returns result and log

SYNOPSIS
--------
[verse]
'nvme endurance-event-agg-log' <device> [--log-entries=<log_entries> | -e <log_entries>]
			[--rae | -r] [--raw-binary | -b]
			[--output-format=<fmt> | -o <fmt>]

DESCRIPTION
-----------
Retrieves the NVMe Endurance Event Aggregate log page from an NVMe device and
provides the returned structure.

The <device> parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).

On success, the returned endurance event agg log structure may be returned
in one of several ways depending on the option flags; the structure may parsed
by the program and printed in a readable format, the raw buffer may be
printed to stdout for another program to parse, or reported in json format.

OPTIONS
-------
-e <log_entries>::
--log-entries=<log_entries>::
    Retrieve the Endurance Group Event Aggregate Log pending entries.
    This argument is mandatory and its success may depend on the device's
    statistics to provide this log For More details see NVM Express 1.4 Spec.
    Section 5.14.1.15. The maximum number of log entries supported is 2044
    for the device.

-r::
--rae::
	Retain an Asynchronous Event.

-o <format>::
--output-format=<format>::
              Set the reporting format to 'normal', 'json', or
              'binary'. Only one output format can be used at a time.

EXAMPLES
--------
* Print the Endurance log page in a human readable format:
+
------------
# nvme endurance-event-agg-log /dev/nvme0
------------
+

* Print the raw Endurance log to a file:
+
------------
# nvme endurance-event-agg-log /dev/nvme0 --output=binary > endurance_event_agg_log.raw
------------
+
It is probably a bad idea to not redirect stdout when using this mode.

NVME
----
Part of the nvme-user suite070701015D69C3000081A4000003E80000006400000001642C0FB5000005C2000000000000004A00000000000000000000002E00000000nvme-cli/Documentation/nvme-endurance-log.txt nvme-endurance-log(1)
=====================

NAME
----
nvme-endurance-log - Send NVMe Endurance log page request, returns result and log

SYNOPSIS
--------
[verse]
'nvme endurance-log' <device> [--group-id=<group> | -g <group>]
			[--output-format=<fmt> | -o <fmt>]

DESCRIPTION
-----------
Retrieves the NVMe Endurance log page from an NVMe device and provides the returned structure.

The <device> parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).

On success, the returned endurance log structure may be returned in one of
several ways depending on the option flags; the structure may parsed by
the program and printed in a readable format, the raw buffer may be
printed to stdout for another program to parse, or reported in json format.

OPTIONS
-------
-g <group>::
--group-id=<group>::
	The endurance group identifier.

-o <format>::
--output-format=<format>::
              Set the reporting format to 'normal', 'json', or
              'binary'. Only one output format can be used at a time.

EXAMPLES
--------
* Print the Endurance log page in a human readable format:
+
------------
# nvme endurance-log /dev/nvme0
------------
+

* Print the raw Endurance log to a file:
+
------------
# nvme endurance-log /dev/nvme0 --output=binary > endurance_log.raw
------------
+
It is probably a bad idea to not redirect stdout when using this mode.

NVME
----
Part of the nvme-user suite
  070701015D69C6000081A4000003E80000006400000001642C0FB500000670000000000000004A00000000000000000000002A00000000nvme-cli/Documentation/nvme-error-log.txt nvme-error-log(1)
=================

NAME
----
nvme-error-log - Send NVME Error log page request, return result and log

SYNOPSIS
--------
[verse]
'nvme error-log' <device>  [--log-entries=<entries> | -e <entries>]
			 [--raw-binary | -b]
			 [--output-format=<fmt> | -o <fmt>]

DESCRIPTION
-----------
Retrieves NVMe Error log page from an NVMe device and provides the
returned structure.

The <device> parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).

On success, the returned error log structure may be returned in one of
several ways depending on the option flags; the structure may parsed by
the program and printed in a readable format or the raw buffer may be
printed to stdout for another program to parse.

OPTIONS
-------
-e <entries>::
--log-entries=<entries>::
	Specifies how many log entries the program should request from
	the device. This must be at least one, and shouldn't exceed the
	device's capabilities. Defaults to 64 log entries.

-b::
--raw-binary::
	Print the raw error log buffer to stdout.

-o <format>::
--output-format=<format>::
              Set the reporting format to 'normal', 'json', or
              'binary'. Only one output format can be used at a time.


EXAMPLES
--------
* Get the error log and print it in a human readable format:
+
------------
# nvme error-log /dev/nvme0
------------
+

* Print the raw output to a file:
+
------------
# nvme error-log /dev/nvme0 --raw-binary > error_log.raw
------------
+
It is probably a bad idea to not redirect stdout when using this mode.

NVME
----
Part of the nvme-user suite
070701015D69C9000081A4000003E80000006400000001642C0FB50000038E000000000000004A00000000000000000000002C00000000nvme-cli/Documentation/nvme-fdp-configs.txt   nvme-fdp-configs(1)
===================

NAME
----
nvme-fdp-configs - Get Flexible Data Placement Configurations

SYNOPSIS
--------
[verse]
'nvme fdp configs' <device> [--endgrp-id=<NUM> | -e <NUM>]
			    [--human-readable | -H]
			    [--raw-binary | -b]
			    [--output-format=<FMT> | -o <FMT>]

DESCRIPTION
-----------
For the NVMe device given, and the endurance group identifier specified, list
the possible configurations for Flexible Data Placement.

OPTIONS
-------
-e <NUM>::
--endgrp-id=<NUM>::
	The endurance group identifier to use when requesting the log page.

-H::
--human-readable::
	Parse, print and describe individual parts of bitfields.

-b::
--raw-binary::
	Print the raw buffer to the standard output stream.

-o <format>::
--output-format=<format>::
	Set the reporting format to 'normal', 'json', or 'binary'. Only one
	output format can be used at a time.

NVME
----
Part of nvme-cli
  070701015D69CC000081A4000003E80000006400000001642C0FB500000362000000000000004A00000000000000000000002B00000000nvme-cli/Documentation/nvme-fdp-events.txt    nvme-fdp-events(1)
==================

NAME
----
nvme-fdp-events - Get Flexible Data Placement Events

SYNOPSIS
--------
[verse]
'nvme fdp events' <device> [--endgrp-id=<NUM> | -e <NUM>]
			   [--host-events | -E]
			   [--raw-binary | -b]
			   [--output-format=<FMT> | -o <FMT>]

DESCRIPTION
-----------
For the NVMe device given, provide information about events affecting Reclaim
Units and media usage in an Endurance Group.

OPTIONS
-------
-e <NUM>::
--endgrp-id=<NUM>::
	The endurance group identifier to use when requesting the log page.

-E::
--host-events::
	Request the controller to report host events.

-b::
--raw-binary::
	Print the raw buffer to the standard output stream.

-o <format>::
--output-format=<format>::
	Set the reporting format to 'normal', 'json', or 'binary'. Only one
	output format can be used at a time.

NVME
----
Part of nvme-cli
  070701015D69CF000081A4000003E80000006400000001642C0FB50000033E000000000000004A00000000000000000000002F00000000nvme-cli/Documentation/nvme-fdp-set-events.txt    nvme-fdp-set-events(1)
======================

NAME
----
nvme-fdp-set-events - Enable or disable FDP events

SYNOPSIS
--------
[verse]
'nvme fdp set-events' <device> [--namespace-id=<NUM> | -n <NUM>]
			       [--placement-handle=<NUM> | -p <NUM>]
			       [--enable | -e]
			       [--event-types=<NUM,> | -t <NUM,>]

DESCRIPTION
-----------
For the NVMe device given, enable or disable a list of event types from being
generated for the Reclaim Unit Handle reference by the specified Placement
Handle.

OPTIONS
-------
-n <NUM>::
--namespace-id=<NUM>::
	Namespace identifier.

-b::
--raw-binary::
	Print the raw buffer to the standard output stream.

-o <format>::
--output-format=<format>::
	Set the reporting format to 'normal', 'json', or 'binary'. Only one
	output format can be used at a time.

NVME
----
Part of nvme-cli
  070701015D69D2000081A4000003E80000006400000001642C0FB50000030E000000000000004A00000000000000000000002A00000000nvme-cli/Documentation/nvme-fdp-stats.txt nvme-fdp-stats(1)
=================

NAME
----
nvme-fdp-stats - Get Flexible Data Placement Statistics

SYNOPSIS
--------
[verse]
'nvme fdp stats' <device> [--endgrp-id=<NUM> | -e <NUM>]
			  [--raw-binary | -b]
			  [--output-format=<FMT> | -o <FMT>]

DESCRIPTION
-----------
For the NVMe device given, provide information about the FDP configuration over
the life of the FDP configuration in an Endurance Group.

OPTIONS
-------
-e <NUM>::
--endgrp-id=<NUM>::
	The endurance group identifier to use when requesting the log page.

-b::
--raw-binary::
	Print the raw buffer to the standard output stream.

-o <format>::
--output-format=<format>::
	Set the reporting format to 'normal', 'json', or 'binary'. Only one
	output format can be used at a time.

NVME
----
Part of nvme-cli
  070701015D69D5000081A4000003E80000006400000001642C0FB5000002D5000000000000004A00000000000000000000002B00000000nvme-cli/Documentation/nvme-fdp-status.txt    nvme-fdp-status(1)
==================

NAME
----
nvme-fdp-status - Get Reclaim Unit Handle Status

SYNOPSIS
--------
[verse]
'nvme fdp status' <device> [--namespace-id=<NUM> | -n <NUM>]
			   [--raw-binary | -b]
			   [--output-format=<FMT> | -o <FMT>]

DESCRIPTION
-----------
For the NVMe device given, provide information about Reclaim Unit Handles that
are accessible by the specified namespace.

OPTIONS
-------
-n <NUM>::
--namespace-id=<NUM>::
	Namespace identifier.

-b::
--raw-binary::
	Print the raw buffer to the standard output stream.

-o <format>::
--output-format=<format>::
	Set the reporting format to 'normal', 'json', or 'binary'. Only one
	output format can be used at a time.

NVME
----
Part of nvme-cli
   070701015D69D8000081A4000003E80000006400000001642C0FB50000023D000000000000004A00000000000000000000002B00000000nvme-cli/Documentation/nvme-fdp-update.txt    nvme-fdp-update(1)
==================

NAME
----
nvme-fdp-update - Reclaim Unit Handle Update

SYNOPSIS
--------
[verse]
'nvme fdp update' <device> [--namespace-id=<NUM> | -n <NUM>]
			   [--pids=<NUM,> | -p <NUM,>]

DESCRIPTION
-----------
For the NVMe device given, update the given Placement Identifiers to reference
a different Reclaim Unit accessible by the specified namespace.

OPTIONS
-------
-n <NUM>::
--namespace-id=<NUM>::
	Namespace identifier.

-p <NUM,>::
--pids=<NUM,>::
	Comma-separated list of placement identifiers to update.

NVME
----
Part of nvme-cli
   070701015D69DB000081A4000003E80000006400000001642C0FB500000324000000000000004A00000000000000000000002A00000000nvme-cli/Documentation/nvme-fdp-usage.txt nvme-fdp-usage(1)
=================

NAME
----
nvme-fdp-usage - Get Reclaim Unit Handle Usage

SYNOPSIS
--------
[verse]
'nvme fdp usage' <device> [--endgrp-id=<NUM> | -e <NUM>]
			  [--raw-binary | -b]
			  [--output-format=<FMT> | -o <FMT>]

DESCRIPTION
-----------
For the NVMe device given, provide information about the Reclaim Unit Handles
associated with the Placement Handles of the namespaces in the specified
Endurance Group.

OPTIONS
-------
-e <NUM>::
--endgrp-id=<NUM>::
	The endurance group identifier to use when requesting the log page.

-b::
--raw-binary::
	Print the raw buffer to the standard output stream.

-o <format>::
--output-format=<format>::
	Set the reporting format to 'normal', 'json', or 'binary'. Only one
	output format can be used at a time.

NVME
----
Part of nvme-cli
070701015D69DE000081A4000003E80000006400000001642C0FB500000451000000000000004A00000000000000000000003800000000nvme-cli/Documentation/nvme-fid-support-effects-log.txt   nvme-fid-support-effects-log(1)
===============================

NAME
----
nvme-fid-support-effects-log - Send NVMe FID Support and Effects log, return result and structure

SYNOPSIS
--------
[verse]
'nvme fid-support-effects-log' <device> [-o <fmt> | --output-format=<fmt>]

DESCRIPTION
-----------
For the NVMe device given, sends an FID Support and Effects log and
provides the result and returned log structure.

The <device> parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).

On success, the structure may be returned in one of several ways depending
on the option flags; the structure may be parsed by the program or the
raw buffer may be printed to stdout.

OPTIONS
-------
-o <format>::
--output-format=<format>::
    Set the reporting format to 'normal', 'json', or
    'binary'. Only one output format can be used at a time.

-H::
--human-readable::
	This option will parse and format many of the bit fields
	into human-readable formats.

EXAMPLES
--------
No examples yet.

NVME
----
Part of the nvme-user suite   070701015D69E1000081A4000003E80000006400000001642C0FB5000002C2000000000000004A00000000000000000000002600000000nvme-cli/Documentation/nvme-flush.txt nvme-flush(1)
=============

NAME
----
nvme-flush - Flush command.

SYNOPSIS
--------
[verse]
'nvme flush' <device> [--namespace-id=<nsid> | -n <nsid>]

DESCRIPTION
-----------
The Flush command shall commit data and metadata associated with the
specified namespace(s) to nonvolatile media. The flush applies to
all commands completed prior to the submission of the Flush command.
The controller may also flush additional data and/or metadata from
any namespace.

OPTIONS
-------
-n <nsid>::
--namespace-id=<nsid>::
	Specify the optional namespace id for this command. Defaults to
	0xffffffff, indicating flush for all namespaces.

EXAMPLES
--------
No examples yet.

NVME
----
Part of the nvme-user suite
  070701015D69E4000081A4000003E80000006400000001642C0FB5000014FC000000000000004A00000000000000000000002700000000nvme-cli/Documentation/nvme-format.txt    nvme-format(1)
==============

NAME
----
nvme-format - Format an NVMe device

SYNOPSIS
--------
[verse]
'nvme format' <device> [--namespace-id=<nsid> | -n <nsid>]
		    [--lbaf=<lbaf> | -l <lbaf>]
		    [--block-size=<block size | -b <block size>]
		    [--ses=<ses> | -s <ses>]
		    [--pil=<pil> | -p <pil>]
		    [--pi=<pi> | -i <pi>]
		    [--ms=<ms> | -m <ms>]
		    [--reset | -r ]
		    [--force ]
		    [--timeout=<timeout> | -t <timeout> ]

DESCRIPTION
-----------
For the NVMe device given, send an nvme Format Namespace admin command
and provides the results.

The <device> parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).
If the character device is given, and the controller does not support
formatting of particular namespaces (ID_CTRL.FNA bit 0 enabled), then all
namespaces will be formatted. If FNA is disabled, then the namespace
identifier must be specified with the 'namespace-id' option; specify a
value of 0xffffffff to send the format to all namespaces. If the block
device is given, the namespace identifier will default to the namespace
ID of the block device given, but can be overridden with the same option.

Note, the numeric suffix on the character device, for example the '0' in
/dev/nvme0, does NOT indicate this device handle is the parent controller
of any namespaces with the same suffix. The namespace handle's numeral
may be coming from the subsystem identifier, which is independent of the
controller's identifier. Do not assume any particular device relationship
based on their names. If you do, you may irrevocably erase data on an
unintended device.

On success, the program will automatically issue BLKRRPART ioctl to
force rescanning the namespaces. If the driver is recent enough, this will
automatically update the physical block size. If it is not recent enough,
you will need to remove and rescan your device some other way for the
new block size to be visible, if the size was changed with this command.

OPTIONS
-------
-n <nsid>::
--namespace-id=<nsid>::
	Send the format command for the specified nsid. This can be
	used to override the default value for either character device
	(unspecified) or the block device (result from NVME_IOCTL_ID).

-l <lbaf>::
--lbaf=<lbaf>::
	LBA Format: This field specifies the LBA format to apply to the NVM
	media. This corresponds to the LBA formats indicated in the
	Identify Namespace command. Conflicts with --block-size argument.
	Defaults to 0.

-b <block size>::
--block-size=<block size>::
	Block Size: This field is used to specify the target block size to
	format to. Potential lbaf values will be scanned and the lowest
	numbered will be selected for the format operation. Conflicts with
	--lbaf argument.

-s <ses>::
--ses=<ses>::
	Secure Erase Settings: This field specifies whether a secure
	erase should be performed as part of the format and the type of
	the secure erase operation. The erase applies to all user data,
	regardless of location (e.g., within an exposed LBA, within a
	cache, within deallocated LBAs, etc). Defaults to 0.
+
[]
|=================
|Value|Definition
|0|No secure erase operation requested
|1|User Data Erase: All user data shall be erased, contents of the user
data after the erase is indeterminate (e.g., the user data may be zero
filled, one filled, etc). The controller may perform a cryptographic
erase when a User Data Erase is requested if all user data is encrypted.
|2|Cryptographic Erase: All user data shall be erased
cryptographically. This is accomplished by deleting the encryption key.
|3â€“7|Reserved
|=================
 
-p <pil>::
--pil=<pil>::
	Protection Information Location: If set to â€˜1â€™ and protection
	information is enabled, then protection information is transferred
	as the first eight bytes of metadata. If cleared to â€˜0â€™ and
	protection information is enabled, then protection information
	is transferred as the last eight bytes of metadata. Defaults to 0.

-i <pi>::
--pi=<pi>::
	Protection Information: This field specifies whether end-to-end
	data protection is enabled and the type of protection
	information. Defaults to 0.
+
[]
|=================
|Value|Definition
|0|Protection information is not enabled
|1|Protection information is enabled, Type 1
|2|Protection information is enabled, Type 2
|3|Protection information is enabled, Type 3
|4â€“7|Reserved
|=================

-m <ms>::
--ms=<ms>::
	Metadata Settings: This field is set to â€˜1â€™ if the metadata
	is transferred as part of an extended data LBA. This field is
	cleared to â€˜0â€™ if the metadata is transferred as part of a
	separate buffer. The metadata may include protection information,
	based on the Protection Information (PI) field. Defaults to 0.

-r::
--reset::
	Issue a reset after successful format. Must use the character
	device for this.

--force::
	Just send the command immediately without warning of the implications.

-t <timeout>::
--timeout=<timeout>::
	Override default timeout value. In milliseconds.

EXAMPLES
--------
* Format the device using all defaults:
+
------------
# nvme format /dev/nvme0n1
------------
+

* Format namespace 1 with user data secure erase settings and protection
information:
+
------------
# nvme format /dev/nvme0 --namespace-id=1 --ses=1 --pi=1
------------

NVME
----
Part of the nvme-user suite
070701015D69E7000081A4000003E80000006400000001642C0FB500000B37000000000000004A00000000000000000000002A00000000nvme-cli/Documentation/nvme-fw-commit.txt nvme-fw-commit(1)
=================

NAME
----
nvme-fw-commit - Used to verify and commit a firmware image.

SYNOPSIS
--------
[verse]
'nvme fw-commit' <device> [--slot=<slot> | -s <slot>]
		    [--action=<action> | -a <action>]
		    [--bpid=<boot-partid> | -b <boot-partid> ]

DESCRIPTION
-----------
For the NVMe device given, send an nvme Firmware Commit admin command
and provides the results.

The Firmware Commit command is used to verify that a valid firmware
image has been downloaded and to commit that revision to a specific
firmware slot. The host may select the firmware image to commit on the
next controller reset (CC.EN transitions from â€˜1â€™ to â€˜0â€™, a PCI
function level reset, and/or other Controller or NVM Subsystem Reset)
as part of this command. The currently executing firmware revision may
be determined from the Firmware Revision field of the Identify Controller
data structure as indicated in the Firmware Slot Information log page.

No further action is automatically taken to reset the device, which is
usually required to complete the activation process. If your kernel and
driver are recent enough, you can commit the firmware by issuing a
reset through Linux sysfs, for example:

------------
 # echo 1 > /sys/class/nvme/nvme0/device/reset
------------

If your kernel is not recent enough, you will need to remove and add
the device some other way.

OPTIONS
-------
-a <action>::
--action=<action>::
	Commit Action: This field specifies the action that is taken
	on the image downloaded with the Firmware Image Download command
	or on a previously downloaded and placed image.
+
[]
|=================
|Value|Definition
|0|Downloaded image replaces the image indicated by the Firmware Slot
field. This image is not activated.
|1|Downloaded image replaces the image indicated by the Firmware Slot
field. This image is activated at the next reset.
|2|The image indicated by the Firmware Slot field is activated at the
next reset.
|3|The image specified by the Firmware Slot field is requested to be
activated immediately without reset.
|6|Downloaded image replaces the Boot Partition specified by the Boot Partition
ID field.
|7|Mark the Boot Partition specified in the BPID field as active and update
BPINFO.ABPID.
|=================

-s <slot>::
--slot=<slot>::
	Firmware Slot: Specifies the firmware slot that shall be used for
	the Commit Action, if applicable. If the value specified is 0h,
	then the controller shall choose the firmware slot (slot 1 â€“ 7)
	to use for the operation.

--bpid=<boot-partid>::
-b <boot-partid>::
	Specifies the Boot partition that shall be used for the Commit Action,
	if applicable (default: 0)

EXAMPLES
--------
* commit the last downloaded fw to slot 1.
+
------------
# nvme fw-commit /dev/nvme0 --slot=1 --action=2
------------

ALIAS
-----

fw-activate

NVME
----
Part of the nvme-user suite
 070701015D69EA000081A4000003E80000006400000001642C0FB5000008CB000000000000004A00000000000000000000002C00000000nvme-cli/Documentation/nvme-fw-download.txt   nvme-fw-download(1)
===================

NAME
----
nvme-fw-download - Download all or a portion of an nvme firmware image.

SYNOPSIS
--------
[verse]
'nvme fw-download' <device> [--fw=<firmware-file> | -f <firmware-file>]
		    [--xfer=<transfer-size> | -x <transfer-size>]
		    [--offset=<offset> | -o <offset>]

DESCRIPTION
-----------
The Firmware Image Download command is used to download all or a portion
of the firmware image for a future update to the controller. The Firmware
Image Download command may be submitted while other commands on the Admin
Submission Queue or I/O Submission Queues are outstanding. The Firmware
Image Download command copies the new firmware image (in whole or in part)
to the controller.

The firmware image may be constructed of multiple pieces that
are individually downloaded with separate Firmware Image Download
commands. Each Firmware Image Download command includes a Dword
Offset and Number of Dwords that specify a Dword range. The host
software shall ensure that firmware pieces do not have Dword ranges
that overlap. Firmware portions may be submitted out of order to the
controller.

The new firmware image is not applied as part of the Firmware Image
Download command. It is applied following a reset, where the image to
apply and the firmware slot it should be committed to is specified with
the Firmware Commit command (nvme fw-commit <args>).

OPTIONS
-------
-f <firmware-file>::
--fw=<firmware-file>::
	Required argument. This specifies the path to the device's
	firmware file on your system that will be read by the program
	and sent to the device.

-x <transfer-size>::
--xfer=<transfer-size>::
	This specifies the size to split each transfer. This is useful if
	the device has a max transfer size requirement for firmware. It
	defaults to 4k.

-o <offset>::
--offset=<offset>::
	This specifies the starting offset in dwords. This is really only
	useful if your firmware is split in multiple files; otherwise
	the offset starts at zero and automatically adjusts based on the
	'xfer' size given.

EXAMPLES
--------
* Transfer a firmware size 128KiB at a time:
+
------------
# nvme fw-download /dev/nvme0 --fw=/path/to/nvme.fw --xfer=0x20000
------------

NVME
----
Part of the nvme-user suite
 070701015D69ED000081A4000003E80000006400000001642C0FB500000552000000000000004A00000000000000000000002700000000nvme-cli/Documentation/nvme-fw-log.txt    nvme-fw-log(1)
==============

NAME
----
nvme-fw-log - Send NVMe Firmware log page request, returns result and log

SYNOPSIS
--------
[verse]
'nvme fw-log' <device> [--raw-binary | -b]
			[--output-format=<fmt> | -o <fmt>]

DESCRIPTION
-----------
Retrieves the NVMe Firmware log page from an NVMe device and provides
the returned structure.

The <device> parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).

On success, the returned f/w log structure may be returned in one of
several ways depending on the option flags; the structure may parsed by
the program and printed in a readable format or the raw buffer may be
printed to stdout for another program to parse.

OPTIONS
-------
-b::
--raw-binary::
	Print the raw fw log buffer to stdout.

-o <format>::
--output-format=<format>::
              Set the reporting format to 'normal', 'json', or
              'binary'. Only one output format can be used at a time.


EXAMPLES
--------
* Print the firmware log page in a human readable format:
+
------------
# nvme fw-log /dev/nvme0
------------
+

* Print the log firmware to a file:
+
------------
# nvme fw-log /dev/nvme0 --raw-binary > fw_log.raw
------------
+
It is probably a bad idea to not redirect stdout when using this mode.

NVME
----
Part of the nvme-user suite
  070701015D69EE000081A4000003E80000006400000001642C0FB50000099A000000000000004A00000000000000000000002D00000000nvme-cli/Documentation/nvme-gen-dhchap-key.1  '\" t
.\"     Title: nvme-gen-dhchap-key
.\"    Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
.\"      Date: 11/25/2021
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-GEN\-DHCHAP\-K" "1" "11/25/2021" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-gen-dhchap-key \- Generate a host DH\-HMAC\-CHAP key
.SH "SYNOPSIS"
.sp
.nf
\fInvme gen\-dhchap\-key\fR [\-\-hmac=<hmac\-id> | \-h <hmac\-id>]
                      [\-\-secret=<secret> | \-s <secret> ]
                      [\-\-key\-length=<len> | \-l <len> ]
                      [\-\-nqn=<host\-nqn> | \-n <host\-nqn> ]
.fi
.SH "DESCRIPTION"
.sp
Generate a base64\-encoded DH\-HMAC\-CHAP host key in the form: DHHC\-1:00:ia6zGodOr4SEG0Zzaw398rpY0wqipUWj4jWjUh4HWUz6aQ2n: and prints it to stdout\&.
.SH "OPTIONS"
.PP
\-h <hmac\-id>, \-\-hmac=<hmac\-id>
.RS 4
Select a HMAC algorithm to use\&. Possible values are: 0 \- No HMAC algorithm 1 \- SHA\-256 2 \- SHA\-384 3 \- SHA\-512
.RE
.PP
\-s <secret>, \-\-secret=<secret>
.RS 4
Secret value (in hexadecimal) to be used for the key\&. If none are provided a random value is used\&.
.RE
.PP
\-l <len>, \-\-key\-length=<len>
.RS 4
Length of the resulting key\&. Possible values are 32, 48, or 64\&.
.RE
.PP
\-n <hostnqn>, \-\-nqn=<hostnqn>
.RS 4
Host\-NQN to be used for the transformation\&. This parameter is only valid if a non\-zero HMAC function has been specified\&.
.RE
.SH "EXAMPLES"
.sp
No Examples
.SH "NVME"
.sp
Part of the nvme\-user suite
  070701015D69EF000081A4000003E80000006400000001642C0FB500004965000000000000004A00000000000000000000003000000000nvme-cli/Documentation/nvme-gen-dhchap-key.html   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 8.6.8" />
<title>nvme-gen-dhchap-key(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}


#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overriden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-gen-dhchap-key(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-gen-dhchap-key -
   Generate a host DH-HMAC-CHAP key
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme gen-dhchap-key</em> [--hmac=&lt;hmac-id&gt; | -h &lt;hmac-id&gt;]
                      [--secret=&lt;secret&gt; | -s &lt;secret&gt; ]
                      [--key-length=&lt;len&gt; | -l &lt;len&gt; ]
                      [--nqn=&lt;host-nqn&gt; | -n &lt;host-nqn&gt; ]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>Generate a base64-encoded DH-HMAC-CHAP host key in the form:
DHHC-1:00:ia6zGodOr4SEG0Zzaw398rpY0wqipUWj4jWjUh4HWUz6aQ2n:
and prints it to stdout.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-h &lt;hmac-id&gt;
</dt>
<dt class="hdlist1">
--hmac=&lt;hmac-id&gt;
</dt>
<dd>
<p>
        Select a HMAC algorithm to use. Possible values are:
        0 - No HMAC algorithm
        1 - SHA-256
        2 - SHA-384
        3 - SHA-512
</p>
</dd>
<dt class="hdlist1">
-s &lt;secret&gt;
</dt>
<dt class="hdlist1">
--secret=&lt;secret&gt;
</dt>
<dd>
<p>
        Secret value (in hexadecimal) to be used for the key. If none are
        provided a random value is used.
</p>
</dd>
<dt class="hdlist1">
-l &lt;len&gt;
</dt>
<dt class="hdlist1">
--key-length=&lt;len&gt;
</dt>
<dd>
<p>
        Length of the resulting key. Possible values are 32, 48, or 64.
</p>
</dd>
<dt class="hdlist1">
-n &lt;hostnqn&gt;
</dt>
<dt class="hdlist1">
--nqn=&lt;hostnqn&gt;
</dt>
<dd>
<p>
        Host-NQN to be used for the transformation. This parameter is only
        valid if a non-zero HMAC function has been specified.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="paragraph"><p>No Examples</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated 2021-11-25 14:12:38 KST
</div>
</div>
</body>
</html>
   070701015D69F0000081A4000003E80000006400000001642C0FB500000462000000000000004A00000000000000000000002F00000000nvme-cli/Documentation/nvme-gen-dhchap-key.txt    nvme-gen-dhchap-key(1)
======================

NAME
----
nvme-gen-dhchap-key - Generate a host DH-HMAC-CHAP key

SYNOPSIS
--------
[verse]
'nvme gen-dhchap-key' [--hmac=<hmac-id> | -h <hmac-id>]
		      [--secret=<secret> | -s <secret> ]
		      [--key-length=<len> | -l <len> ]
		      [--nqn=<host-nqn> | -n <host-nqn> ]

DESCRIPTION
-----------
Generate a base64-encoded DH-HMAC-CHAP host key in the form:
DHHC-1:00:ia6zGodOr4SEG0Zzaw398rpY0wqipUWj4jWjUh4HWUz6aQ2n:
and prints it to stdout.

OPTIONS
-------
-h <hmac-id>::
--hmac=<hmac-id>::
	Select a HMAC algorithm to use. Possible values are:
	0 - No HMAC algorithm
	1 - SHA-256
	2 - SHA-384
	3 - SHA-512

-s <secret>::
--secret=<secret>::
	Secret value (in hexadecimal) to be used for the key. If none are
	provided a random value is used.

-l <len>::
--key-length=<len>::
	Length of the resulting key. Possible values are 32, 48, or 64.

-n <hostnqn>::
--nqn=<hostnqn>::
	Host-NQN to be used for the transformation. This parameter is only
	valid if a non-zero HMAC function has been specified.

EXAMPLES
--------
No Examples

NVME
----
Part of the nvme-user suite
  070701015D69F3000081A4000003E80000006400000001642C0FB5000001A5000000000000004A00000000000000000000002C00000000nvme-cli/Documentation/nvme-gen-hostnqn.txt   nvme-gen-hostnqn(1)
===================

NAME
----
nvme-gen-hostnqn - Generate a host NVMe Qualified Name

SYNOPSIS
--------
[verse]
'nvme gen-hostnqn'

DESCRIPTION
-----------
Generate a random host NQN in the form:
nqn.2014-08.org.nvmexpress:uuid:1b4e28ba-2fa1-11d2-883f-0016d3cca427
and prints it to stdout.

OPTIONS
-------
No options needed

EXAMPLES
--------
nvme gen-hostnqn

NVME
----
Part of the nvme-user suite
   070701015D69F7000081A4000003E80000006400000001642C0FB500000CDD000000000000004A00000000000000000000002C00000000nvme-cli/Documentation/nvme-get-feature.txt   nvme-get-feature(1)
===================

NAME
----
nvme-get-feature - Gets an NVMe feature, returns applicable results

SYNOPSIS
--------
[verse]
'nvme get-feature' <device> [--namespace-id=<nsid> | -n <nsid>]
			  [--feature-id=<fid> | -f <fid>] [--cdw11=<cdw11>]
			  [--uuid-index=<uuid-index> | -U <uuid_index>]
			  [--data-len=<data-len> | -l <data-len>]
			  [--sel=<select> | -s <select>]
			  [--raw-binary | -b]
			  [--human-readable | -H]

DESCRIPTION
-----------
Submits an NVMe Get Feature admin command and returns the applicable
results. This may be the feature's value, or may also include a feature
structure if the feature requires it (ex: LBA Range Type).

The <device> parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).

On success, the returned feature's structure (if applicable) may be
returned in one of several ways depending on the option flags; the
structure may parsed by the program and printed in a readable format
if it is a known structure, displayed in hex, or the raw buffer may be
printed to stdout for another program to parse.

OPTIONS
-------
-n <nsid>::
--namespace-id=<nsid>::
	Retrieve the feature for the given nsid. This is optional and
	most features do not use this value.

-f <fid>::
--feature-id=<fid>::
	The feature id to send with the command. Value provided should
	be in hex.

-s <select>::
--sel=<select>::
	Select (SEL): This field specifies which value of the attributes
	to return in the provided data:
+
[]
|==================
|Select|Description
|0|Current 
|1|Default 
|2|Saved
|3|Supported capabilities
|4â€“7|Reserved
|==================

-U <uuid-index>::
--uuid-index=<uuid-index>::
	UUID Index of the feature

-l <data-len>::
--data-len=<data-len>::
	The data length for the buffer returned for this feature. Most
	known features do not use this value. The exception is LBA
	Range Type

--cdw11=<cdw11>::
	The value for command dword 11, if applicable.

-b::
--raw-binary::
	Print the raw feature buffer to stdout if the feature returns
	a structure.

-H::
--human-readable::
	This option will parse and format many of the bit fields
	into human-readable formats.

EXAMPLES
--------
* Retrieves the feature for Number of Queues, or feature id 7:
+
------------
# nvme get-feature /dev/nvme0 -f 7
------------
+

* The following retrieves the feature for the LBA Range Type, which
implicitly requires a buffer and will be printed to the screen in human
readable format:
+
------------
# nvme get-feature /dev/nvme0 -f 3
------------
+

* Retrieves the feature for the some vendor specific feature and
specifically requesting a buffer be allocate for this feature, which
will be displayed to the user in as a hex dump:
+
------------
# nvme get-feature /dev/nvme0 -f 0xc0 -l 512
------------
+
Get feature with UUID index
------------
# nvme get-feature /dev/nvme0 -f 0xc0 -l 512 -U 0x1
------------

* The following retrieves the feature for the LBA Range Type, which
implicitly requires a buffer and will be saved to a file in its raw
format:
+
------------
# nvme get-feature /dev/nvme0 -f 3 --raw-binary > lba_range.raw
------------
+
It is probably a bad idea to not redirect stdout when using this mode.

NVME
----
Part of the nvme-user suite
   070701015D69FA000081A4000003E80000006400000001642C0FB500000958000000000000004A00000000000000000000002F00000000nvme-cli/Documentation/nvme-get-lba-status.txt    nvme-get-lba-status(1)
======================

NAME
----
nvme-get-lba-status - Get LBA Status from NVMe device

SYNOPSIS
--------
[verse]
'nvme get-lba-status' <device> [--namespace-id=<nsid> | -n <nsid>]
		    [--start-lba=<slba> | -s <slba>]
		    [--max-dw=<max-dw> | -m <max-dw>]
		    [--action=<action-type> | -a <action-type>]
		    [--range-len=<range-len> | -l <range-len>]
		    [--timeout=<timeout> | -t <timeout> ]
                   [--output-format=<format> | -o <format>]

DESCRIPTION
-----------
For the NVMe device given, send an nvme Get LBA Status admin command
and provides the results.

The <device> parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).

On success, the returned get lba data structure may be returned in one of
several ways depending on the option flags; the structure may parsed by
the program and printed in a readable format or the raw buffer may be
printed to stdout for another program to parse.

OPTIONS
-------
-n <nsid>::
--namespace-id=<nsid>::
	Send the Get LBA Status command for the specified nsid. This can be
	used to override the default value for either character device
	(unspecified) or the block device (result from NVME_IOCTL_ID).

-s <slba>::
--start-lba=<slba>::
	Starting LBA(SLBA) in 64-bit address of the first logical block addressed

-m <max-dw>::
--max-dw=<max-dw>::
	Maximum Number of Dwords(MNDW) specifies maximum number of dwords to return

-a <action-type>::
--action=<action-type>::
	Action Type(ATYPE) specifies the mechanism it uses in determining the LBA Status Descriptors.

-l <range-len>::
--range-len=<range-len>::
	Range Length(RL) specifies the length of the range of contiguous LBAs beginning at SLBA

-t <timeout>::
--timeout=<timeout>::
	Override default timeout value. In milliseconds.

-o <format>::
--output-format=<format>::
              Set the reporting format to 'normal', 'json', or
              'binary'. Only one output format can be used at a time.

EXAMPLES
--------
* Get the LBA Status of the device using all defaults:
+
------------
# nvme get-lba-status /dev/nvme0n1
------------
+

* Get LBA Status of the namespace 1 from SLBA 10 for the max Dwords of 0x1000
+
------------
# nvme get-lba-status /dev/nvme0 --namespace-id=1 --start-lba=10 --max-dw=0x1000
------------

NVME
----
Part of the nvme-user suite
070701015D6A00000081A4000003E80000006400000001642C0FB50000020B000000000000004A00000000000000000000002A00000000nvme-cli/Documentation/nvme-get-ns-id.txt nvme-get-ns-id(1)
=================

NAME
----
nvme-get-ns-id - Retrieves the namespace ID for an NVMe block device

SYNOPSIS
--------
[verse]
'nvme get-ns-id' <device>

DESCRIPTION
-----------
Retrieves the namespace ID for an NVMe block device. The <device> param
is mandatory and must be an NVMe block device (ex: /dev/nvme0n1).

OPTIONS
-------
None

EXAMPLES
--------
* Shows the namespace id for the given block device:
+
------------
# nvme get-ns-id /dev/nvme0n1
------------

NVME
----
Part of the nvme-user suite
 070701015D6A03000081A4000003E80000006400000001642C0FB50000049C000000000000004A00000000000000000000002D00000000nvme-cli/Documentation/nvme-get-property.txt  nvme-get-property(1)
====================

NAME
----
nvme-get-property - Reads and shows the defined NVMe controller property
for NVMe over Fabric

SYNOPSIS
--------
[verse]
'nvme get-property' <device> [--offset=<offset> | -o <offset>]
				[--human-readable | -H ]


DESCRIPTION
-----------
Reads and shows the defined NVMe controller property for NVMe over Fabric.


OPTIONS
-------
-o::
--offset::
        The offset of the property. One of CAP=0x0, VS=0x8, CC=0x14, CSTS=0x1c, NSSR=0x20

-H::
--human-readable:
	Show the fields packed in the property


EXAMPLES
--------
* The following will run the get-property command with offset 0
+
------------
# nvme get-property /dev/nvme0 --offset=0x0 --human-readable
------------


BUGS
----
Currently the CAP value is truncated to 32 bits due to a limitation in
the ioctl interface.

In a recent enough kernel, the 64 bit value is shown in kernel traces.

* First enable traces by this command
+
------------
# echo 1 > /sys/kernel/debug/tracing/events/nvme/enable
------------

* Then look for NVMe Fabrics command (0x7f) at trace
+
------------
/sys/kernel/debug/tracing/trace
------------

NVME
----
Part of the nvme-user suite
070701015D6A06000081A4000003E80000006400000001642C0FB5000001A3000000000000004A00000000000000000000002500000000nvme-cli/Documentation/nvme-help.txt  nvme-help(1)
=============

NAME
----
nvme-help - Help information.

SYNOPSIS
--------
[verse]
'nvme help' [<command>]

DESCRIPTION
-----------
Provides help information, with detailed information about the given command if provided.

OPTIONS
-------
No Options

EXAMPLES
--------
* Show help for nvme smart log:
+
------------
# nvme help smart-log
------------
+
Not much to it

NVME
----
Part of the nvme-user suite
 070701015D6A09000081A4000003E80000006400000001642C0FB50000072A000000000000004A00000000000000000000002F00000000nvme-cli/Documentation/nvme-huawei-id-ctrl.txt    nvme-huawei-id-ctrl(1)
======================

NAME
----
nvme-huawei-id-ctrl - Send NVMe Identify Controller, return result and structure

SYNOPSIS
--------
[verse]
'nvme huawei id-ctrl' <device> [-v | --vendor-specific] [-b | --raw-binary]
			[-o <fmt> | --output-format=<fmt>]

DESCRIPTION
-----------
For the NVMe device given, sends an identify controller command and
provides the result and returned structure.

The <device> parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).

This will only work on Huawei devices supporting this feature.
Results for any other device are undefined.

On success, the structure may be returned in one of several ways depending
on the option flags; the structure may be parsed by the program or the
raw buffer may be printed to stdout.

If having the program decode the output for readability, this version
will decode Huawei vendor unique portions of the structure.

OPTIONS
-------
-b::
--raw-binary::
	Print the raw buffer to stdout. Structure is not parsed by
	program. This overrides the vendor specific and human readable options.

-v::
--vendor-specific::
	In addition to parsing known fields, this option will dump
	the vendor specific region of the structure in hex with ascii
	interpretation.

-H::
--human-readable::
	This option will parse and format many of the bit fields
	into human-readable formats.

-o <format>::
--output-format=<format>::
              Set the reporting format to 'normal', 'json', or
              'binary'. Only one output format can be used at a time.

EXAMPLES
--------
* Has the program interpret the returned buffer and display the known
fields in a human readable format:
+
------------
# nvme huawei id-ctrl /dev/nvme0
------------

NVME
----
Part of the nvme-user suite
  070701015D6A0C000081A4000003E80000006400000001642C0FB50000023F000000000000004A00000000000000000000002C00000000nvme-cli/Documentation/nvme-huawei-list.txt   nvme-list(1)
============

NAME
----
nvme-huawei-list - List all recognized Huawei NVMe devices

SYNOPSIS
--------
[verse]
'nvme huawei list' [-o <fmt> | --output-format=<fmt>]

DESCRIPTION
-----------
Scan the sysfs tree for NVM Express devices and return the /dev node
for those Huawei devices as well as some pertinent information about them.

OPTIONS
-------
-o <format>::
--output-format=<format>::
	Set the reporting format to 'normal' or 'json'. Only one output
	format can be used at a time.

EXAMPLES
--------
No examples yet.

NVME
----
Part of the nvme-user suite
 070701015D6A0F000081A4000003E80000006400000001642C0FB500000BA9000000000000004A00000000000000000000002800000000nvme-cli/Documentation/nvme-id-ctrl.txt   nvme-id-ctrl(1)
===============

NAME
----
nvme-id-ctrl - Send NVMe Identify Controller, return result and structure

SYNOPSIS
--------
[verse]
'nvme id-ctrl' <device> [-v | --vendor-specific] [-b | --raw-binary]
			[-o <fmt> | --output-format=<fmt>]

DESCRIPTION
-----------
For the NVMe device given, sends an identify controller command and
provides the result and returned structure.

The <device> parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).

On success, the structure may be returned in one of several ways depending
on the option flags; the structure may be parsed by the program or the
raw buffer may be printed to stdout.

OPTIONS
-------
-b::
--raw-binary::
	Print the raw buffer to stdout. Structure is not parsed by
	program. This overrides the vendor specific and human readable options.

-v::
--vendor-specific::
	In addition to parsing known fields, this option will dump
	the vendor specific region of the structure in hex with ascii
	interpretation.

-H::
--human-readable::
	This option will parse and format many of the bit fields
	into human-readable formats.

-o <format>::
--output-format=<format>::
              Set the reporting format to 'normal', 'json', or
              'binary'. Only one output format can be used at a time.

EXAMPLES
--------
* Has the program interpret the returned buffer and display the known
fields in a human readable format:
+
------------
# nvme id-ctrl /dev/nvme0
------------
+

* In addition to showing the known fields, has the program to display
the vendor unique field:
+
------------
# nvme id-ctrl /dev/nvme0 --vendor-specific
# nvme id-ctrl /dev/nvme0 -v
------------
+
The above will dump the 'vs' buffer in hex since it doesn't know how to
interpret it.

* Have the program return the raw structure in binary:
+
------------
# nvme id-ctrl /dev/nvme0 --raw-binary > id_ctrl.raw
# nvme id-ctrl /dev/nvme0 -b > id_ctrl.raw
------------
+
It is probably a bad idea to not redirect stdout when using this mode.

* Alternatively you may want to send the data to another program that
can parse the raw buffer.
+
------------
# nvme id-ctrl /dev/nvme0 --raw-binary | nvme_parse_id_ctrl
------------
+
The parse program in the above example can be a program that shows the
structure in a way you like. The following program is such an example
that will parse it and can accept the output through a pipe, `'|'`,
as shown in the above example, or you can `'cat'` a saved output buffer to it.
------------
/* File: nvme_parse_id_ctrl.c */

#include <linux/nvme.h>
#include <stdio.h>
#include <unistd.h>

int main(int argc, char **argv)
{
	unsigned char buf[sizeof(struct nvme_id_ctrl)];
	struct nvme_id_ctrl *ctrl = (struct nvme_id_ctrl *)buf;

	if (read(STDIN_FILENO, buf, sizeof(buf)))
		return 1;

	printf("vid   : %#x\n", ctrl->vid);
	printf("ssvid : %#x\n", ctrl->ssvid);
	return 0;
}
------------

NVME
----
Part of the nvme-user suite
   070701015D6A12000081A4000003E80000006400000001642C0FB5000003D4000000000000004A00000000000000000000002A00000000nvme-cli/Documentation/nvme-id-domain.txt nvme-id-domain(1)
=================

NAME
----
nvme-id-domain - Send NVMe Identify Domain List, return result and structure

SYNOPSIS
--------
[verse]
'nvme id-domain' <device> [--dom-id=<domian_id> | -d <domian_id>]
                        [-o <fmt> | --output-format=<fmt>]

DESCRIPTION
-----------
For the NVMe device given, send an identify command and return the domain list
data structure.

The <device> parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).

OPTIONS
-------
-d <domian_id>::
--dom-id=<domian_id>::
	Retrieve the identify domain list data structure for the given
	domain id. If this value is not given, domain id will be 0xffff.

-o <format>::
--output-format=<format>::
              Set the reporting format to 'normal', 'json', or
              'binary'. Only one output format can be used at a time.

EXAMPLES
--------
No examples yet.

NVME
----
Part of the nvme-user suite
070701015D6A15000081A4000003E80000006400000001642C0FB50000053B000000000000004A00000000000000000000002800000000nvme-cli/Documentation/nvme-id-iocs.txt   nvme-id-iocs(1)
===============

NAME
----
nvme-id-iocs - Send NVMe Identify I/O Command Set, return result and structure

SYNOPSIS
--------
[verse]
'nvme id-iocs' <device> [--controller-id=<cntid> | -c <cntid>]
                        [-o <fmt> | --output-format=<fmt>]

DESCRIPTION
-----------
For the NVMe device given, send an identify command and return the Identify I/O
Command Set data structure.

The <device> parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).

OPTIONS
-------
-c <cntid>::
--controller-id=<cntid>::
	Retrieve the identify I/O Command set data structure for the given
	cntid. If this value is not given, cntid will be 0xffff.
-H::
--human-readable::
	This option will parse and format many of the bit fields
	into human-readable formats.

-o <format>::
--output-format=<format>::
              Set the reporting format to 'normal', 'json', or
              'binary'. Only one output format can be used at a time.

EXAMPLES
--------
* Have the program interpret the returned buffer and display the known
fields in a human readable format:
+
------------
# nvme id-iocs /dev/nvme0
------------
+
* show the fields in human readable format
+
------------
# nvme id-iocs /dev/nvme0 -H
------------
NVME
----
Part of the nvme-user suite
 070701015D6A16000081A4000003E80000006400000001642C0FB500001224000000000000004A00000000000000000000002F00000000nvme-cli/Documentation/nvme-id-ns-lba-format.1    '\" t
.\"     Title: nvme-id-ns-lba-format
.\"    Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
.\"      Date: 01/07/2022
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-ID\-NS\-LBA\-F" "1" "01/07/2022" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-id-ns-lba-format \- Send NVMe Identify Namespace for the specified LBA Format index, display structure
.SH "SYNOPSIS"
.sp
.nf
\fInvme id\-ns\fR <device> [\-\-uuid\-index=<uuid\-index> | \-U <uuid_index>]
                    [\-\-lba\-format\-index=<lba_format_index> | \-i <lba_format_index>]
                        [\-v | \-\-verbose]
                        [\-\-output\-format=<fmt> | \-o <fmt>]
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, sends an identify namespace for the specified LBA Format index command and provides the result that is include capability field only and returned structure\&.
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1)\&.
.sp
On success, the structure may be returned in one of several ways depending on the option flags; the structure may be parsed by the program or the raw buffer may be printed to stdout\&.
.SH "OPTIONS"
.PP
\-U <uuid\-index>, \-\-uuid\-index=<uuid\-index>
.RS 4
UUID Index of the feature
.RE
.PP
\-i <lba_format_index>, \-\-lba\-format\-index=<lba_format_index>
.RS 4
This field specifies the index into the LBA Format list identifying the LBA Format capabilities that are to be returned
.RE
.PP
\-v, \-\-verbose
.RS 4
Increase the information detail in the output\&.
.RE
.PP
\-o <format>, \-\-output\-format=<format>
.RS 4
Set the reporting format to
\fInormal\fR,
\fIjson\fR, or
\fIbinary\fR\&. Only one output format can be used at a time\&.
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Has the program interpret the returned buffer and display the known fields in a human readable format:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme id\-ns\-lba\-format /dev/nvme0n1 \-i 0
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Have the program return the raw structure in binary:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme id\-ns\-lba\-format /dev/nvme0n1 \-i 0 \-o binary > id_ns\&.raw
# nvme id\-ns\-lba\-format /dev/nvme0n1 \-i 0 \-\-output\-format=binary > id_ns\&.raw
.fi
.if n \{\
.RE
.\}
.sp
It is probably a bad idea to not redirect stdout when using this mode\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Alternatively you may want to send the data to another program that can parse the raw buffer\&.
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme id\-ns\-lba\-format /dev/nvme0n1 \-i 0 \-\-raw\-binary | nvme_parse_id_ns
.fi
.if n \{\
.RE
.\}
.sp
The parse program in the above example can be a program that shows the structure in a way you like\&. The following program is such an example that will parse it and can accept the output through a pipe,
\*(Aq|\*(Aq, as shown in the above example, or you can
\*(Aqcat\*(Aq
a saved output buffer to it\&.
.RE
.sp
.if n \{\
.RS 4
.\}
.nf
/* File: nvme_parse_id_ns_lba_format\&.c */

#include <linux/nvme\&.h>
#include <stdio\&.h>
#include <unistd\&.h>

int main(int argc, char **argv)
{
        unsigned char buf[sizeof(struct nvme_id_ns)];
        struct nvme_id_ns *ns = (struct nvme_id_ns *)buf;

        if (read(STDIN_FILENO, buf, sizeof(buf)))
                return 1;

        printf("nsze : %#llx\en", ns\->nlbaf);
        printf("ncap : %#llx\en", ns\->mc);
        return 0;
}
.fi
.if n \{\
.RE
.\}
.SH "NVME"
.sp
Part of the nvme\-user suite
070701015D6A17000081A4000003E80000006400000001642C0FB50000527D000000000000004A00000000000000000000003200000000nvme-cli/Documentation/nvme-id-ns-lba-format.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 8.6.8" />
<title>nvme-id-ns-lba-format(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}


#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-id-ns-lba-format(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-id-ns-lba-format -
   Send NVMe Identify Namespace for the specified LBA Format index, display structure
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme id-ns</em> &lt;device&gt; [--uuid-index=&lt;uuid-index&gt; | -U &lt;uuid_index&gt;]
                    [--lba-format-index=&lt;lba_format_index&gt; | -i &lt;lba_format_index&gt;]
                        [-v | --verbose]
                        [--output-format=&lt;fmt&gt; | -o &lt;fmt&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, sends an identify namespace for
the specified LBA Format index command and provides the result
that is include capability field only and returned structure.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).</p></div>
<div class="paragraph"><p>On success, the structure may be returned in one of several ways depending
on the option flags; the structure may be parsed by the program or the
raw buffer may be printed to stdout.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-U &lt;uuid-index&gt;
</dt>
<dt class="hdlist1">
--uuid-index=&lt;uuid-index&gt;
</dt>
<dd>
<p>
        UUID Index of the feature
</p>
</dd>
<dt class="hdlist1">
-i &lt;lba_format_index&gt;
</dt>
<dt class="hdlist1">
--lba-format-index=&lt;lba_format_index&gt;
</dt>
<dd>
<p>
        This field specifies the index into the LBA Format list identifying
        the LBA Format capabilities that are to be returned
</p>
</dd>
<dt class="hdlist1">
-v
</dt>
<dt class="hdlist1">
--verbose
</dt>
<dd>
<p>
        Increase the information detail in the output.
</p>
</dd>
<dt class="hdlist1">
-o &lt;format&gt;
</dt>
<dt class="hdlist1">
--output-format=&lt;format&gt;
</dt>
<dd>
<p>
              Set the reporting format to <em>normal</em>, <em>json</em>, or
              <em>binary</em>. Only one output format can be used at a time.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Has the program interpret the returned buffer and display the known
fields in a human readable format:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme id-ns-lba-format /dev/nvme0n1 -i 0</code></pre>
</div></div>
</li>
<li>
<p>
Have the program return the raw structure in binary:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme id-ns-lba-format /dev/nvme0n1 -i 0 -o binary &gt; id_ns.raw
# nvme id-ns-lba-format /dev/nvme0n1 -i 0 --output-format=binary &gt; id_ns.raw</code></pre>
</div></div>
<div class="paragraph"><p>It is probably a bad idea to not redirect stdout when using this mode.</p></div>
</li>
<li>
<p>
Alternatively you may want to send the data to another program that
can parse the raw buffer.
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme id-ns-lba-format /dev/nvme0n1 -i 0 --raw-binary | nvme_parse_id_ns</code></pre>
</div></div>
<div class="paragraph"><p>The parse program in the above example can be a program that shows the
structure in a way you like. The following program is such an example
that will parse it and can accept the output through a pipe, <code>'|'</code>,
as shown in the above example, or you can <code>'cat'</code> a saved output buffer
to it.</p></div>
</li>
</ul></div>
<div class="listingblock">
<div class="content">
<pre><code>/* File: nvme_parse_id_ns_lba_format.c */

#include &lt;linux/nvme.h&gt;
#include &lt;stdio.h&gt;
#include &lt;unistd.h&gt;

int main(int argc, char **argv)
{
        unsigned char buf[sizeof(struct nvme_id_ns)];
        struct nvme_id_ns *ns = (struct nvme_id_ns *)buf;

        if (read(STDIN_FILENO, buf, sizeof(buf)))
                return 1;

        printf("nsze : %#llx\n", ns-&gt;nlbaf);
        printf("ncap : %#llx\n", ns-&gt;mc);
        return 0;
}</code></pre>
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated 2022-01-07 13:48:12 KST
</div>
</div>
</body>
</html>
   070701015D6A18000081A4000003E80000006400000001642C0FB500000B3F000000000000004A00000000000000000000003100000000nvme-cli/Documentation/nvme-id-ns-lba-format.txt  nvme-id-ns-lba-format(1)
========================

NAME
----
nvme-id-ns-lba-format - Send NVMe Identify Namespace for the specified LBA Format index, display structure

SYNOPSIS
--------
[verse]
'nvme id-ns' <device> [--uuid-index=<uuid-index> | -U <uuid_index>]
		    [--lba-format-index=<lba_format_index> | -i <lba_format_index>]
			[-v | --verbose]
			[--output-format=<fmt> | -o <fmt>]

DESCRIPTION
-----------
For the NVMe device given, sends an identify namespace for
the specified LBA Format index command and provides the result
that is include capability field only and returned structure.

The <device> parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).

On success, the structure may be returned in one of several ways depending
on the option flags; the structure may be parsed by the program or the
raw buffer may be printed to stdout.

OPTIONS
-------
-U <uuid-index>::
--uuid-index=<uuid-index>::
	UUID Index of the feature
	
-i <lba_format_index>::
--lba-format-index=<lba_format_index>::
	This field specifies the index into the LBA Format list identifying
	the LBA Format capabilities that are to be returned

-v::
--verbose::
	Increase the information detail in the output.

-o <format>::
--output-format=<format>::
              Set the reporting format to 'normal', 'json', or
              'binary'. Only one output format can be used at a time.

EXAMPLES
--------
* Has the program interpret the returned buffer and display the known
fields in a human readable format:
+
------------
# nvme id-ns-lba-format /dev/nvme0n1 -i 0
------------
+
* Have the program return the raw structure in binary:
+
------------
# nvme id-ns-lba-format /dev/nvme0n1 -i 0 -o binary > id_ns.raw
# nvme id-ns-lba-format /dev/nvme0n1 -i 0 --output-format=binary > id_ns.raw
------------
+
It is probably a bad idea to not redirect stdout when using this mode.

* Alternatively you may want to send the data to another program that
can parse the raw buffer.
+
------------
# nvme id-ns-lba-format /dev/nvme0n1 -i 0 --raw-binary | nvme_parse_id_ns
------------
+
The parse program in the above example can be a program that shows the
structure in a way you like. The following program is such an example
that will parse it and can accept the output through a pipe, `'|'`,
as shown in the above example, or you can `'cat'` a saved output buffer
to it.
------------
/* File: nvme_parse_id_ns_lba_format.c */

#include <linux/nvme.h>
#include <stdio.h>
#include <unistd.h>

int main(int argc, char **argv)
{
	unsigned char buf[sizeof(struct nvme_id_ns)];
	struct nvme_id_ns *ns = (struct nvme_id_ns *)buf;

	if (read(STDIN_FILENO, buf, sizeof(buf)))
		return 1;

	printf("nsze : %#llx\n", ns->nlbaf);
	printf("ncap : %#llx\n", ns->mc);
	return 0;
}
------------

NVME
----
Part of the nvme-user suite
 070701015D6A1B000081A4000003E80000006400000001642C0FB500001039000000000000004A00000000000000000000002600000000nvme-cli/Documentation/nvme-id-ns.txt nvme-id-ns(1)
=============

NAME
----
nvme-id-ns - Send NVMe Identify Namespace, return result and structure

SYNOPSIS
--------
[verse]
'nvme id-ns' <device> [-v | --vendor-specific] [-b | --raw-binary]
		    [--namespace-id=<nsid> | -n <nsid>] [--force]
		    [--human-readable | -H]
		    [--output-format=<fmt> | -o <fmt>]

DESCRIPTION
-----------
For the NVMe device given, sends an identify namespace command and
provides the result and returned structure.

The <device> parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).
If the character device is given, the `'--namespace-id'` option is
mandatory, otherwise it will use the ns-id of the namespace for the block
device you opened. For block devices, the ns-id used can be overridden
with the same option.

On success, the structure may be returned in one of several ways depending
on the option flags; the structure may be parsed by the program or the
raw buffer may be printed to stdout.

OPTIONS
-------
-n <nsid>::
--namespace-id=<nsid>::
	Retrieve the identify namespace structure for the given nsid. This
	is required for the character devices, or overrides the block nsid
	if given. If the controller supports namespace management capability
	and 0xFFFFFFFF is given, then the controller returns the identify
	namespace structure that specifies common capabilities across
	namespaces for the controller.

--force::
	Request controller return the identify namespace structure even
	if the namespace is not attached to the controller. This is valid
	only for controllers at or newer than revision 1.2. Controllers
	at revision lower than this may interpret the command incorrectly.

-b::
--raw-binary::
	Print the raw buffer to stdout. Structure is not parsed by
	program. This overrides the vendor specific and human readable options.

-v::
--vendor-specific::
	In addition to parsing known fields, this option will dump
	the vendor specific region of the structure in hex with ascii
	interpretation.

-H::
--human-readable::
	This option will parse and format many of the bit fields
	into human-readable formats.

-o <format>::
--output-format=<format>::
              Set the reporting format to 'normal', 'json', or
              'binary'. Only one output format can be used at a time.



EXAMPLES
--------
* Has the program interpret the returned buffer and display the known
fields in a human readable format:
+
------------
# nvme id-ns /dev/nvme0n1
------------
+

* If using the character device or overriding namespace id:
+
------------
# nvme id-ns /dev/nvme0 -n 1
# nvme id-ns /dev/nvme0n1 -n 1
# nvme id-ns /dev/nvme0 --namespace-id=1
------------
+

* In addition to showing the known fields, have the program to display
the vendor unique field:
+
------------
# nvme id-ns /dev/nvme0n1 --vendor-specific
# nvme id-ns /dev/nvme0n1 -v
------------
+
The above will dump the \'vs' buffer in hex since it doesn't know how to
interpret it.

* Have the program return the raw structure in binary:
+
------------
# nvme id-ns /dev/nvme0n1 --raw-binary > id_ns.raw
# nvme id-ns /dev/nvme0n1 -b > id_ns.raw
------------
+
It is probably a bad idea to not redirect stdout when using this mode.

* Alternatively you may want to send the data to another program that
can parse the raw buffer.
+
------------
# nvme id-ns /dev/nvme0n1 --raw-binary | nvme_parse_id_ns
------------
+
The parse program in the above example can be a program that shows the
structure in a way you like. The following program is such an example
that will parse it and can accept the output through a pipe, `'|'`,
as shown in the above example, or you can `'cat'` a saved output buffer
to it.
------------
/* File: nvme_parse_id_ns.c */

#include <linux/nvme.h>
#include <stdio.h>
#include <unistd.h>

int main(int argc, char **argv)
{
	unsigned char buf[sizeof(struct nvme_id_ns)];
	struct nvme_id_ns *ns = (struct nvme_id_ns *)buf;

	if (read(STDIN_FILENO, buf, sizeof(buf)))
		return 1;

	printf("nsze : %#llx\n", ns->nsze);
	printf("ncap : %#llx\n", ns->ncap);
	return 0;
}
------------

NVME
----
Part of the nvme-user suite
   070701015D6A1E000081A4000003E80000006400000001642C0FB50000082B000000000000004A00000000000000000000002A00000000nvme-cli/Documentation/nvme-id-nvmset.txt nvme-id-nvmset(1)
=================

NAME
----
nvme-id-nvmset - Send NVMe Identify NVM Set List, return result and structure

SYNOPSIS
--------
[verse]
'nvme id-nvmset' <device> [-i <id> | --nvmset_id=<id> ]
			[-o <fmt> | --output-format=<fmt>]

DESCRIPTION
-----------
For the NVMe device given, sends an identify NVM set list command and
provides the result and returned structure.

The <device> parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).

On success, the structure may be returned in one of several ways depending
on the option flags; the structure may be parsed by the program or the
raw buffer may be printed to stdout.

OPTIONS
-------
-i <id>::
--nvmset_id=<id>::
	This field specifies the identifier of the NVM Set.  If given, NVM set
	identifier whose entry is to be in result data will be greater than or
	equal to this value.

-o <format>::
--output-format=<format>::
              Set the reporting format to 'normal', 'json', or
              'binary'. Only one output format can be used at a time.

EXAMPLES
--------
* Has the program interpret the returned buffer and display the known
fields in a human readable format:
+
------------
# nvme id-nvmset /dev/nvme0
------------
+

* Have the program return the raw structure in binary:
+
------------
# nvme id-nvmset /dev/nvme0 --output-format=binary > id_nvmset.raw
# nvme id-nvmset /dev/nvme0 -o binary > id_nvmset.raw
------------
+
It is probably a bad idea to not redirect stdout when using this mode.

* Alternatively you may want to send the data to another program that
can parse the raw buffer.
+
------------
# nvme id-nvmset /dev/nvme0 -o binary | nvme_parse_id_nvmset
------------
+
The parse program in the above example can be a program that shows the
structure in a way you like. The following program is such an example
that will parse it and can accept the output through a pipe, `'|'`,
as shown in the above example, or you can `'cat'` a saved output buffer to it.
------------

NVME
----
Part of the nvme-user suite
 070701015D6A21000081A4000003E80000006400000001642C0FB50000031C000000000000004A00000000000000000000003700000000nvme-cli/Documentation/nvme-inspur-nvme-vendor-log.txt    nvme-inspur-nvme-vendor-log(1)
==============================

NAME
----
nvme-inspur-nvme-vendor-log - Send NVMe Inspur Device Vendor log page request, returns result

SYNOPSIS
--------
[verse]
'nvme inspur nvme-vendor-log' <device> 

DESCRIPTION
-----------
Retrieves the NVMe Inspur Device Vendor log page from the device and provides the returned structure.

The <device> parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).

On success, vendor log structure are printed in a readable format.

OPTIONS
-------
none


EXAMPLES
--------
* Print the Inspur Device Vendor log page in a human readable format:
+
------------
# nvme inspur nvme-vendor-log /dev/nvme0
------------

NVME
----
Part of the nvme-user suite
070701015D6A24000081A4000003E80000006400000001642C0FB5000006B8000000000000004A00000000000000000000002E00000000nvme-cli/Documentation/nvme-intel-id-ctrl.txt nvme-intel-id-ctrl(1)
=====================

NAME
----
nvme-intel-id-ctrl - Send NVMe Identify Controller, return result and structure

SYNOPSIS
--------
[verse]
'nvme intel id-ctrl' <device> [-v | --vendor-specific] [-b | --raw-binary]
			[-o <fmt> | --output-format=<fmt>]

DESCRIPTION
-----------
For the NVMe device given, sends an identify controller command and
provides the result and returned structure.

The <device> parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).

On success, the structure may be returned in one of several ways depending
on the option flags; the structure may be parsed by the program or the
raw buffer may be printed to stdout.

If having the program decode the output for readability, this version
will decode Intel vendor unique portions of the structure.

OPTIONS
-------
-b::
--raw-binary::
	Print the raw buffer to stdout. Structure is not parsed by
	program. This overrides the vendor specific and human readable options.

-v::
--vendor-specific::
	In addition to parsing known fields, this option will dump
	the vendor specific region of the structure in hex with ascii
	interpretation.

-H::
--human-readable::
	This option will parse and format many of the bit fields
	into human-readable formats.

-o <format>::
--output-format=<format>::
              Set the reporting format to 'normal', 'json', or
              'binary'. Only one output format can be used at a time.

EXAMPLES
--------
* Has the program interpret the returned buffer and display the known
fields in a human readable format:
+
------------
# nvme intel id-ctrl /dev/nvme0
------------

NVME
----
Part of the nvme-user suite
070701015D6A27000081A4000003E80000006400000001642C0FB500000715000000000000004A00000000000000000000003300000000nvme-cli/Documentation/nvme-intel-internal-log.txt    nvme-intel-internal-log(1)
==========================

NAME
----
nvme-intel-internal-log - Retrieve Intel device's internal log and save to file.

SYNOPSIS
--------
[verse]
'nvme intel internal-log ' <device> [--log=<NUM>, -l <NUM>]
		[--region=<NUM>, r <NUM>]
		[--nlognum=<NUM>, m <NUM>]
		[--namespace-id=<NUM>, -n <NUM>]
		[--output-file=<FILE>, -o <FILE>]

DESCRIPTION
-----------
For the NVMe device given, sends the Intel vendor unique device log
request and saves the result to a file.

The <device> parameter is mandatory and may be either the NVMe
character device (ex: /dev/nvme0), or a namespace block device (ex:
/dev/nvme0n1). If using the character device, the namespace id parameter
is mandatory.

This will only work on Intel devices supporting this feature which
includes (but not limited to) all the Intel DC P3xxx family of
controllers. Results for any other device are undefined.

OPTIONS
-------
-l <NUM>::
--log=<NUM>::
	Log type: 0, 1, or 2 for nlog, event log, and assert log,
	respectively.

-n <NUM>::
--namespace-id=<NUM>::
	Namespace to use.

-o <FILE>::
--output-file=<FILE>::
	Output file; defaults to device name provided

-r <NUM>::
--region=<NUM>::
	Select which core region to retrieve the log from. -1 for all
	available, if supported by the device.

-m <NUM>::
--nlognum=<NUM>::
	When used with 'nlog', this specifies which nlog to read. -1
	for all, if supported by the device.


EXAMPLES
--------
* Gets the nlog from the device and saves to default file:
+
------------
# nvme intel internal-log /dev/nvme0 --namespace-id=1 --log=0
------------
+

* Gets the event log from the device and saves to defined file:
+
------------
# nvme intel internal-log /dev/nvme0 --namespace-id=1 --log=1 --output-file=MyAwesomeEventLog
------------

NVME
----
Part of the nvme-user suite
   070701015D6A2A000081A4000003E80000006400000001642C0FB5000004B8000000000000004A00000000000000000000003000000000nvme-cli/Documentation/nvme-intel-lat-stats.txt   nvme-intel-lat-stats(1)
=======================

NAME
----
nvme-intel-lat-stats - Send NVMe Identify Controller, return result and structure

SYNOPSIS
--------
[verse]
'nvme intel lat-stats' <device> [--write | -w] [--raw-binary | -b]

DESCRIPTION
-----------
For the NVMe device given, retrieves intel vendor specific latency statistics and
provides the result and returned structure.

The <device> parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).

On success, the structure may be returned in one of several ways depending
on the option flags; the structure may be parsed by the program or the
raw buffer may be printed to stdout.

OPTIONS
-------
-b::
--raw-binary::
	Print the raw buffer to stdout. Structure is not parsed by
	program. This overrides the vendor specific and human readable options.

-w::
--write::
	Get write statistics. Read statistics are returned by default.

EXAMPLES
--------
* Get the read statistics
+
------------
# nvme intel lat-stats /dev/nvme0
------------
+

* Get the write statistics
+
------------
# nvme intel lat-stats /dev/nvme0 -w
------------

NVME
----
Part of the nvme-user suite
070701015D6A2D000081A4000003E80000006400000001642C0FB50000045C000000000000004A00000000000000000000003200000000nvme-cli/Documentation/nvme-intel-market-name.txt nvme-intel-market-name(1)
=========================

NAME
----
nvme-intel-market-name - Send NVMe Identify Controller, return result and structure

SYNOPSIS
--------
[verse]
'nvme intel market-name' <device> [--raw-binary | -b]

DESCRIPTION
-----------
For the NVMe device given, retrieves intel vendor specific marketing name
log page and provides the result and returned structure. The output is
simply the marketing name used to identify what kind of device it is.

The <device> parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).

On success, the structure may be returned in one of several ways depending
on the option flags; the structure may be parsed by the program or the
raw buffer may be printed to stdout.

OPTIONS
-------
-b::
--raw-binary::
	Print the raw buffer to stdout. Structure is not parsed by
	program. This overrides the vendor specific and human readable options.

EXAMPLES
--------
* Get the marketing name
+
------------
# nvme intel market-name /dev/nvme0
------------

NVME
----
Part of the nvme-user suite
070701015D6A30000081A4000003E80000006400000001642C0FB5000006E1000000000000004A00000000000000000000003400000000nvme-cli/Documentation/nvme-intel-smart-log-add.txt   nvme-intel-smart-log-add(1)
===========================

NAME
----
nvme-intel-smart-log-add - Send NVMe Intel Additional SMART log page request, returns result and log

SYNOPSIS
--------
[verse]
'nvme intel smart-log-add' <device> [--namespace-id=<nsid> | -n <nsid>]
			[--raw-binary | -b]
			[--json | -j]

DESCRIPTION
-----------
Retrieves the NVMe Intel Additional SMART log page from the device and
provides the returned structure.

The <device> parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).

On success, the returned smart log structure may be returned in one of
several ways depending on the option flags; the structure may parsed by
the program and printed in a readable format or the raw buffer may be
printed to stdout for another program to parse.

OPTIONS
-------
-n <nsid>::
--namespace-id=<nsid>::
	Retrieve the Additional SMART log for the given nsid. This is
	optional and its success may depend on the device's capabilities
	to provide this log on a per-namespace basis (see the NVMe
	Identify Controller for this capability). The default nsid to
	use is 0xffffffff for the device global SMART log.

-b::
--raw-binary::
	Print the raw Intel Additional SMART log buffer to stdout.

-j::
--json::
              Dump output in json format.

EXAMPLES
--------
* Print the Intel Additional SMART log page in a human readable format:
+
------------
# nvme intel smart-log-add /dev/nvme0
------------
+

* Print the raw Intel Additional SMART log to a file:
+
------------
# nvme intel smart-log-add /dev/nvme0 --raw-binary > smart_log.raw
------------
+
It is probably a bad idea to not redirect stdout when using this mode.

NVME
----
Part of the nvme-user suite
   070701015D6A33000081A4000003E80000006400000001642C0FB5000004E2000000000000004A00000000000000000000003100000000nvme-cli/Documentation/nvme-intel-temp-stats.txt  nvme-intel-temp-stats(1)
========================

NAME
----
nvme-intel-temp-stats - Send NVMe SMART log page request, returns result and log

SYNOPSIS
--------
[verse]
'nvme intel temp-stats' <device> [--raw-binary | -b]

DESCRIPTION
-----------
Retrieves the NVMe Intel Additional SMART log page from the device and
provides the returned structure.

The <device> parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).

On success, the returned smart log structure may be returned in one of
several ways depending on the option flags; the structure may parsed by
the program and printed in a readable format or the raw buffer may be
printed to stdout for another program to parse.

OPTIONS
-------
-b::
--raw-binary::
	Print the raw temperature stats log buffer to stdout.

EXAMPLES
--------
* Print the temperature stats log page in a human readable format:
+
------------
# nvme intel temp-stats /dev/nvme0
------------
+

* Print the raw SMART log to a file:
+
------------
# nvme intel temp-stats /dev/nvme0 --raw-binary > temp_stats_log.raw
------------
+
It is probably a bad idea to not redirect stdout when using this mode.

NVME
----
Part of the nvme-user suite
  070701015D6A36000081A4000003E80000006400000001642C0FB5000005B0000000000000004A00000000000000000000002D00000000nvme-cli/Documentation/nvme-io-mgmt-recv.txt  nvme-io-mgmt-recv(1)
====================

NAME
----
nvme-io-mgmt-recv - I/O Management Receive command

SYNOPSIS
--------
[verse]
'nvme io-mgmt-recv' <device> [--namespace-id=<NUM> | -n <NUM>]
			     [--mos=<NUM> | -s <NUM>]
			     [--mo=<NUM> | -m <NUM>]
			     [--data=<FILE> | -d <FILE>]
			     [--data-len=<NUM> | -l <NUM>]

DESCRIPTION
-----------
For the NVMe device given, issues the I/O Management Receive command with the
requested management operation (mo) and management operation specific parameter
(mos). This is the generic interface provided for forward compatibility as new
operations are added that this program isn't aware of at the time of its
development. As such, this is a generic command that does not do any additional
decoding for specific types of data received. This will only report the data as
a hex dump, or binary.

OPTIONS
-------
-n <NUM>::
--namespace-id=<NUM>::
	Use the provided namespace id for the command. If not provided, the
	namespace id of the block device will be used. If the command is issued
	to a non-block device, the parameter is required.

-d <FILE>::
--data=<FILE>::
	File to write received data into. If unspecified, received data will be
	hex dumped to the standard output stream.

-l <NUM>::
--data-len=<NUM>::
	Received data buffer length

-m <NUM>::
--mo <NUM>::
	Management Operation to perform.

-s <NUM>::
--mos=<NUM>::
	Management Operation Specific parameter.


NVME
----
Part of nvme-cli
070701015D6A39000081A4000003E80000006400000001642C0FB50000055D000000000000004A00000000000000000000002D00000000nvme-cli/Documentation/nvme-io-mgmt-send.txt  nvme-io-mgmt-send(1)
====================

NAME
----
nvme-io-mgmt-send - I/O Management Send command

SYNOPSIS
--------
[verse]
'nvme io-mgmt-send' <device> [--namespace-id=<NUM> | -n <NUM>]
			     [--mos=<NUM> | -s <NUM>]
			     [--mo=<NUM> | -m <NUM>]
			     [--data=<FILE> | -d <FILE>]
			     [--data-len=<NUM> | -l <NUM>]

DESCRIPTION
-----------
For the NVMe device given, issues the I/O Management Send command with the
requested management operation (mo) and management operation specific parameter
(mos). This is the generic interface provided for forward compatibility as new
operations are added that this program isn't aware of at the time of its
development. As such, this is a generic command that does not provide any
convenience parameters to produce the binary payload.

OPTIONS
-------
-n <NUM>::
--namespace-id=<NUM>::
	Use the provided namespace id for the command. If not provided, the
	namespace id of the block device will be used. If the command is issued
	to a non-block device, the parameter is required.

-d <FILE>::
--data=<FILE>::
	File to read payload from. If unspecified, data will be read from the
	standard input stream.

-l <NUM>::
--data-len=<NUM>::
	Payload data buffer length

-m <NUM>::
--mo <NUM>::
	Management Operation to perform.

-s <NUM>::
--mos=<NUM>::
	Management Operation Specific parameter.


NVME
----
Part of nvme-cli
   070701015D6A3C000081A4000003E80000006400000001642C0FB500000EDF000000000000004A00000000000000000000002C00000000nvme-cli/Documentation/nvme-io-passthru.txt   nvme-io-passthru(1)
===================

NAME
----
nvme-io-passthru - Submit an arbitrary io command, return results

SYNOPSIS
--------
[verse]
'nvme-io-passthru' <device> [--opcode=<opcode> | -o <opcode>]
		[--flags=<flags> | -f <flags>] [-rsvd=<rsvd> | -R <rsvd>]
		[--namespace-id=<nsid> | -nsid <nsid>]
		[--cdw2=<cdw2>] [--cdw3=<cdw3>] [--cdw10=<cdw10>]
		[--cdw11=<cdw11>] [--cdw12=<cdw12>] [--cdw13=<cdw13>]
		[--cdw14=<cdw14>] [--cdw15=<cdw15>]
		[--data-len=<data-len> | -l <data-len>]
		[--metadata-len=<len> | -m <len>]
		[--read | -r ] [--write | -w]
		[--input-file=<file> | -i <file>]
		[--metadata=<file> | -M <file>]
		[--timeout=<to> | -t <to>]
		[--show-command | -s]
		[--dry-run | -d]
		[--raw-binary | -b]
		[--prefill=<prefill> | -p <prefill>]
		[--latency | -T]

DESCRIPTION
-----------
Submits an arbitrary NVMe IO command and returns the applicable
results. This may be the simply the command's result and status, or may
also include a buffer if the command returns one. This command does no
interpretation of the opcodes or options.

The <device> parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).

On success, the returned structure (if applicable) may be returned in
one of several ways depending on the option flags; the structure may
printed by the program as a hex dump, or may be returned as a raw buffer
printed to stdout for another program to parse.

OPTIONS
-------
-o <opcode>::
--opcode=<opcode>::
	The NVMe opcode to send to the device in the command

-f <flags>::
--flags=<flags>::
	The NVMe command flags to send to the device in the command

-R <rsvd>::
--rsvd=<rsvd>::
	The value for the reserved field in the command.

-n <nsid>::
--namespace-id=<nsid>::
	The value for the ns-id in the command. Defaults to '0'.

--cdw[2-3,10-15]=<cdw>::
	Specifies the command dword value for that specified entry in
	the command

-r::
--read::
-w::
--write::
	Used for the data-direction for the command and required for
	commands sending/receiving data. Don't use both read and write
	at the same time.

-i <file>::
--input-file=<file>::
	If the command is a data-out (write) command, use this file
	to fill the buffer sent to the device. If no file is given, assumed to
	use STDIN. If the command is a data-in (read) command, the data
	returned from the device will be saved here.

-M <file>::
--metadata=<file>::
	If the command is a data-out (write) command, use this file
	to fill the metadata buffer sent to the device. If no file is given,
	assumed to use STDIN. If the command is a data-in (read) command, the
	metadata returned from the device will be saved here.

-l <data-len>::
--data-len=<data-len>::
	The data length for the buffer used for this command.

-m <data-len>::
--metadata-len=<data-len>::
	The metadata length for the buffer used for this command.

-s::
--show-cmd::
	Print out the command to be sent.

-d::
--dry-run::
	Do not actually send the command. If want to use --dry-run option,
	--show-cmd option _must_ be set. Otherwise --dry-run option will be
	_ignored_.

-b::
--raw-binary::
	Print the raw returned buffer to stdout if the command returns
	data or a structure.

-p <prefill>::
--prefill <prefill>::
	Prefill the buffer with a predetermined byte value. Defaults to 0.
	This may be useful if the data you are writing is shorter
	than the required buffer, and you need to pad it with a known
	value. It may also be useful if you need to confirm if a device
	is overwriting a buffer on a data-in command.

-T::
--latency::
	Print out the latency the IOCTL took (in us).

EXAMPLES
--------

nvme io-passthru /dev/nvme0n1 --opcode=2 --namespace-id=1 --data-len=4096 --read --cdw10=0 --cdw11=0 --cdw12=0x70000 --raw-binary

NVME
----
Part of the nvme-user suite
 070701015D6A3F000081A4000003E80000006400000001642C0FB5000004F6000000000000004A00000000000000000000002F00000000nvme-cli/Documentation/nvme-lba-status-log.txt    nvme-lba-status-log(1)
======================

NAME
----
nvme-lba-status-log - Send LBA Status Log Page request returns result and log

SYNOPSIS
--------
[verse]
'nvme lba-status-log' <device> [--rae | -r] [--output-format=<fmt> | -o <fmt>]

DESCRIPTION
-----------
Retrieves the NVMe LBA Status Log Page from an NVMe device and provides
the returned structure.

The <device> parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).

On success, the returned LBA Status Log Page structure may be returned
in one of several ways depending on the option flags; the structure may
parsed by the program and printed in a readable format or the raw buffer
may be printed to stdout for another program to parse.

OPTIONS
-------
-r::
--rae::
	Retain an Asynchronous Event.

-o <format>::
--output-format=<format>::
    Set the reporting format to 'normal', 'json', or 'binary'.
    Only one output format can be used at a time.

EXAMPLES
--------
* Print the LBA Status Log page in a normal readable format:
+
------------
# nvme lba-status-log /dev/nvme0
------------
+

* Show the output in json format
+
------------
# nvme lba-status-log /dev/nvme0 -o json
+

NVME
----
Part of the nvme-user suite  070701015D6A42000081A4000003E80000006400000001642C0FB5000005BF000000000000004A00000000000000000000002A00000000nvme-cli/Documentation/nvme-list-ctrl.txt nvme-list-ctrl(1)
=================

NAME
----
nvme-list-ctrl - Send NVMe Identify List Controllers, return result and structure

SYNOPSIS
--------
[verse]
'nvme list-ctrl' <device> [--cntid=<cntid> | -c <cntid>]
			[--namespace-id=<nsid> | -n <nsid>] [-o <fmt> | --output-format=<fmt>]
DESCRIPTION
-----------
For the NVMe device given, sends an identify command for controller list
and provides the result and returned structure. This uses either mode
12h or 13h depending on the requested namespace identifier.

The <device> parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).
The starting controller in the list always begins with 0 unless the
`'--cntid'` option is given to override.

On success, the controller array is printed for each index and controller
identifier.

OPTIONS
-------
-c <cntid>::
--cntid=<cntid>::
	Retrieve the identify list structure starting with the given controller id.

-n <nsid>::
--namespace-id=<nsid>::
	If provided, will request the controllers attached to the
	specified namespace. If no namespace is given, or set to 0, the
	command requests the controller list for the entire subsystem,
	whether or not they are attached to namespace(s).

-o <format>::
--output-format=<format>::
	Set the reporting format to 'normal' or 'json'. Only one output
	format can be used at a time.

EXAMPLES
--------
No examples yet.

NVME
----
Part of the nvme-user suite
 070701015D6A45000081A4000003E80000006400000001642C0FB50000048F000000000000004A00000000000000000000002C00000000nvme-cli/Documentation/nvme-list-endgrp.txt   nvme-list-endgrp(1)
===================

NAME
----
nvme-list-endgrp - Send NVMe Identify Endurance Group List, return result and structure

SYNOPSIS
--------
[verse]
'nvme list-endgrp' <device> [--endgrp-id=<endgrp-id> | -i <endgrp-id>]
			[-o <fmt> | --output-format=<fmt>]
        
DESCRIPTION
-----------
For the NVMe device given, sends an identify command for endurance group list
and provides the result and returned structure.

The <device> parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).
An Endurance Group List of up to 2,047 Endurance Group Identifiers in
increasing order is returned containing an Endurance Group Identifier greater
than or equal to the value specified in the CDW11.ENDGID field.

OPTIONS
-------
-i <endgrp-id>::
--endgrp-id=<endgrp-id>::
	Retrieve the identify endurance group list structure starting for the given
    endurance group id.

-o <format>::
--output-format=<format>::
	Set the reporting format to 'normal' or 'json'. Only one output
	format can be used at a time.

EXAMPLES
--------
No examples yet.

NVME
----
Part of the nvme-user suite
 070701015D6A48000081A4000003E80000006400000001642C0FB5000006A1000000000000004A00000000000000000000002800000000nvme-cli/Documentation/nvme-list-ns.txt   nvme-id-ns(1)
=============

NAME
----
nvme-list-ns - Send NVMe Identify List Namespaces, return result and structure

SYNOPSIS
--------
[verse]
'nvme list-ns' <device> [--namespace-id=<nsid> | -n <nsid>]
			[--csi=<command_set_identifier> | -y <command_set_identifier>]
			[--all | -a] [--output-format=<fmt> | -o <fmt>]

DESCRIPTION
-----------
For the NVMe device given, sends an identify command for namespace list
and provides the result and returned structure.

The <device> parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).
If the starting namespace in the list always begins with 0 unless the
`'--namespace-id'` option is given to override.

On success, the namespace array is printed for each index and nsid for
a valid nsid.

OPTIONS
-------
-n <nsid>::
--namespace-id=<nsid>::
	Retrieve the identify list structure starting with the given nsid.

-y <command_set_identifier>::
--csi=<command_set_identifier>::
	If this value is given, retrieve the identify list structure associated
	with the specified I/O command set.

-a::
--all::
	Retrieve the identify list structure for all namespaces in the
	subsystem, whether attached or inactive.

-o <format>::
--output-format=<format>::
    Set the reporting format to 'normal', or 'json'.
    Only one output format can be used at a time.

EXAMPLES
--------
* Print the namespaces present for zoned command set in JSON format
+
------------
# nvme list-ns /dev/nvme0 -y 2 -a -o json
------------

* Print the namespaces present for NVM Command Set in normal format
+
------------
# nvme list-ns /dev/nvme0
------------

NVME
----
Part of the nvme-user suite
   070701015D6A4B000081A4000003E80000006400000001642C0FB500000784000000000000004A00000000000000000000002C00000000nvme-cli/Documentation/nvme-list-subsys.txt   nvme-list-subsys(1)
===================

NAME
----
nvme-list-subsys - List all NVMe subsystems

SYNOPSIS
--------
[verse]
'nvme list-subsys' [-o <fmt> | --output-format=<fmt>] <device>

DESCRIPTION
-----------
Scan the sysfs tree for NVM Express subsystems and return the controllers
for those subsystems as well as some pertinent information about them.
If a device is given, print out only the values for the controllers
and subsystems leading to the device.

OPTIONS
-------
-o <format>::
--output-format=<format>::
	Set the reporting format to 'normal' or 'json'. Only one output
	format can be used at a time.

EXAMPLES
--------
[verse]
root@host# nvme list-subsys
nvme-subsys0 - NQN=nvmf-test
\
 +- nvme0 rdma traddr=1.1.1.3,trsvcid=4420,host_traddr=1.1.1.1
 +- nvme1 rdma traddr=1.1.1.3,trsvcid=4420,host_traddr=1.1.1.2
nvme-subsys1 - NQN=nvmf-test2
\
 +- nvme2 rdma traddr=1.1.1.3,trsvcid=4420,host_traddr=1.1.1.2
 +- nvme3 rdma traddr=1.1.1.3,trsvcid=4420,host_traddr=1.1.1.1

[verse]
root@host# nvme list-subsys -o json
{
  "Subsystems" : [
    {
      "Name" : "nvme-subsys0",
      "NQN" : "nvmf-test"
    },
    {
      "Paths" : [
        {
          "Name" : "nvme0",
          "Transport" : "rdma",
          "Address" : "traddr=1.1.1.3,trsvcid=4420,host_traddr=1.1.1.1"
        },
        {
          "Name" : "nvme1",
          "Transport" : "rdma",
          "Address" : "traddr=1.1.1.3,trsvcid=4420,host_traddr=1.1.1.2"
        }
      ]
    },
    {
      "Name" : "nvme-subsys1",
      "NQN" : "nvmf-test2"
    },
    {
      "Paths" : [
        {
          "Name" : "nvme2",
          "Transport" : "rdma",
          "Address" : "traddr=1.1.1.3,trsvcid=4420,host_traddr=1.1.1.2"
        },
        {
          "Name" : "nvme3",
          "Transport" : "rdma",
          "Address" : "traddr=1.1.1.3,trsvcid=4420,host_traddr=1.1.1.1"
        }
      ]
    }
  ]
}

NVME
----
Part of the nvme-user suite
070701015D6A4E000081A4000003E80000006400000001642C0FB50000033D000000000000004A00000000000000000000002500000000nvme-cli/Documentation/nvme-list.txt  nvme-list(1)
============

NAME
----
nvme-list - List all recognized NVMe devices

SYNOPSIS
--------
[verse]
'nvme list' [-o <fmt> | --output-format=<fmt>]

DESCRIPTION
-----------
Scan the sysfs tree for NVM Express devices and return the /dev node
for those devices as well as some pertinent information about them.

OPTIONS
-------
-o <format>::
--output-format=<format>::
	Set the reporting format to 'normal' or 'json'. Only one output
	format can be used at a time.

-v::
--verbose::
	Increase the information in the output, showing nvme subsystems,
	controllers and namespaces separately and how they're related to each
	other.

ENVIRONMENT
-----------
PCI_IDS_PATH - Full path of pci.ids file in case nvme could not find it in common locations.


EXAMPLES
--------
No examples yet.

NVME
----
Part of the nvme-user suite
   070701015D6A51000081A4000003E80000006400000001642C0FB5000005DC000000000000004A00000000000000000000002900000000nvme-cli/Documentation/nvme-lockdown.txt  nvme-lockdown(1)
================

NAME
----
nvme-lockdown - Send an NVMe Lockdown command to prohibit or allow the execution of command

SYNOPSIS
--------
[verse]
'nvme-lockdown' <device> [--ofi=<ofi> | -o <ofi>]
			[--ifc=<ifc> | -f <ifc>]
			[--prhbt=<prhbt> | -p <prhbt>]
			[--scp=<scp> | -s <scp>]
			[--uuid=<UUID_Index> | -U <UUID_Index>]

DESCRIPTION
-----------
The Lockdown command is used to control the Command and Feature Lockdown
capability which configures the prohibition or allowance of execution of the
specified command or Set Features command targeting a specific Feature
Identifier.

OPTIONS
-------
--ofi=<ofi>::
-o <ofi>::
	Opcode or Feature Identifier(OFI) specifies the command opcode or Set
	Features Feature Identifier identified by the Scope field.

--ifc=<ifc>::
-f <ifc>::
	Interface (INF) field identifies the interfaces affected by this command.

--prhbt=<prhbt>::
-p <prhbt>::
	Prohibit (PRHBT) bit specifies whether to prohibit or allow the command
	opcode or Set Features Feature Identifier specified by this command.

--scp=<scp>::
-s <scp>::
	Scope (SCP) field specifies the contents of the Opcode or Feature Identifier field.

--uuid=<UUID_Index>::
-U <UUID_Index>::
	UUID Index - If this field is set to a non-zero value, then the value of
	this field is the index of a UUID in the UUID List that is used by the command.
	If this field is cleared to 0h,then no UUID index is specified.

EXAMPLES
--------
No examples yet.

NVME
----
Part of the nvme-user suite070701015D6A52000081A4000003E80000006400000001642C0FB500000903000000000000004A00000000000000000000003200000000nvme-cli/Documentation/nvme-media-unit-stat-log.1 '\" t
.\"     Title: nvme-media-unit-stat-log
.\"    Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
.\"      Date: 11/11/2021
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-MEDIA\-LOG" "1" "11/11/2021" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-media-unit-stat-log \- Send NVMe Media unit status log pages request, returns result and log
.SH "SYNOPSIS"
.sp
.nf
\fInvme media\-log\-pages\fR <device> [\-d | \-\-dom\-id]
                            [\-\-output\-format=<fmt> | \-o <fmt>]
                            [\-\-raw\-binary | \-b]
.fi
.SH "DESCRIPTION"
.sp
Retrieves the NVMe Media unit status log pages details from an NVMe device and provides the returned structure\&.
.sp
The <device> parameter is mandatory and should be the NVMe character device (ex: /dev/nvme0)\&.
.sp
On success, the returned Media unit status log pages log structure will be printed \&.
.SH "OPTIONS"
.PP
\-o <format>, \-\-output\-format=<format>
.RS 4
This option will set the reporting format to normal, json, or binary\&. Only one output format can be used at a time\&.
.RE
.PP
\-d, \-\-dom\-id
.RS 4
This option is to get the domain ID\&.
.RE
.PP
\-b, \-\-raw\-binary
.RS 4
This option is to get raw binary data\&.
.RE
.SH "EXAMPLES"
.sp
No examples provided yet\&.
.SH "NVME"
.sp
Part of the nvme\-user suite 070701015D6A53000081A4000003E80000006400000001642C0FB5000045B8000000000000004A00000000000000000000003500000000nvme-cli/Documentation/nvme-media-unit-stat-log.html  <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 8.6.10" />
<title>nvme-media-unit-stat-log(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overriden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-media-unit-stat-log(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-media-unit-stat-log -
   Send NVMe Supported Log pages request, returns result and log
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme supported-log-pages</em> &lt;device&gt; [--output-format=&lt;fmt&gt; | -o &lt;fmt&gt;]
                            [-b | --raw-binary]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>Retrieves the NVMe supportd log pages details from an NVMe device and provides
the returned structure.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and should be the NVMe character
device (ex: /dev/nvme0).</p></div>
<div class="paragraph"><p>On success, the returned supportd log pages log structure will be printed
for each command that is supported.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-o &lt;format&gt;
</dt>
<dt class="hdlist1">
--output-format=&lt;format&gt;
</dt>
<dd>
<p>
        This option will set the reporting format to normal, json, or binary.
        Only one output format can be used at a time.
</p>
</dd>
<dt class="hdlist1">
  -b
  </dt>
  <dt class="hdlist1">
  --raw-binary
  </dt>
  <dd>
  <p>
          This option will get the data in raw binary format.
  </p>
  </dd>
<dt class="hdlist1">
  -d
  </dt>
  <dt class="hdlist1">
  --dom-id
  </dt>
  <dd>
  <p>
          This option is to get the domain ID.
  </p>
  </dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="paragraph"><p>No examples provided yet.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2021-08-13 22:37:48 IST
</div>
</div>
</body>
</html>070701015D6A54000081A4000003E80000006400000001642C0FB500000409000000000000004A00000000000000000000003400000000nvme-cli/Documentation/nvme-media-unit-stat-log.txt   nvme-media-unit-stat-log(1)
===========================

NAME
----
nvme-media-unit-stat-log - Send NVMe Media unit status Log pages 
request, returns result and log.

SYNOPSIS
--------
[verse]
'nvme media-unit-stat-log' <device> [--dom-id | -d ]
                            [--output-format=<fmt> | -o <fmt>]
                            [--raw-binary | -b]

DESCRIPTION
-----------
Retrieves the NVMe Media unit status log pages details from 
an NVMe device and provides the returned structure.

The <device> parameter is mandatory and should be the NVMe character
device (ex: /dev/nvme0).

On success, the returned Media unit status log pages log structure will be printed.

OPTIONS
-------

-o <format>::
--output-format=<format>::
    This option will set the reporting format to normal, json, or binary.
    Only one output format can be used at a time.

-d::
--dom-id::
    To get the domain ID.
-b::
--raw-binary::
    To show raw binary data.

EXAMPLES
--------
No examples provided yet.

NVME
----
Part of the nvme-user suite   070701015D6A57000081A4000003E80000006400000001642C0FB5000004D3000000000000004A00000000000000000000003B00000000nvme-cli/Documentation/nvme-mi-cmd-support-effects-log.txt    nvme-mi-cmd-support-effects-log(1)
==================================

NAME
----
nvme-mi-cmd-support-effects-log - Send NVMe MI Command Support and Effects log,
                                  returns results and structure

SYNOPSIS
--------
[verse]
'nvme-mi-cmd-support-effects-log' <device> [-o <fmt> | --output-format=<fmt>]
					[-H | --human-readable]

DESCRIPTION
-----------
For the NVMe device given, sends an MI Command Support and Effects log (id 13h)
and provides the result and returned log structure.

The <device> parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).

On success, the structure may be returned in one of several ways depending
on the option flags; the structure may be parsed by the program or the
raw buffer may be printed to stdout.

OPTIONS
-------
-o <format>::
--output-format=<format>::
    Set the reporting format to 'normal', 'json', or
    'binary'. Only one output format can be used at a time.

-H::
--human-readable::
	This option will parse and format many of the bit fields
	into human-readable formats.

EXAMPLES
--------
nvme mi-cmd-support-effects-log /dev/nvme0 -H

NVME
----
Part of the nvme-user suite
 070701015D6A5A000081A4000003E80000006400000001642C0FB50000033C000000000000004A00000000000000000000003900000000nvme-cli/Documentation/nvme-micron-clear-pcie-errors.txt  nvme-micron-clear-pcie-errors(1)
===============================

NAME
----
nvme-micron-clear-pcie-errors - Clears correctable PCIe correctable errors of given Micron device

SYNOPSIS
--------
[verse]
'nvme micron clear-pcie-correctable-errors' <device>

DESCRIPTION
-----------
This command clears correctable pcie errors for the specified Micron device.

The <device> parameter is mandatory and may be either the NVMe
character device (ex: /dev/nvme0), or a namespace block device (ex:
/dev/nvme0n1). 

This will only work on Micron devices devices of model numbers 54XX. Support for new
devices may be added subsequently.

OPTIONS
-------
None

EXAMPLES
--------
* Retrieve NAND statistics information
+
------------
# nvme micron clear-pcie-correctable-errors /dev/nvme0

------------

NVME
----
Part of the nvme-user suite
070701015D6A5D000081A4000003E80000006400000001642C0FB5000004C7000000000000004A00000000000000000000003400000000nvme-cli/Documentation/nvme-micron-internal-log.txt   nvme-micron-internal-log(1)
==========================

NAME
----
nvme-micron-internal-log - Retrieve Micron device's internal logs and save to given zip file.

SYNOPSIS
--------
[verse]
'nvme micron vs-internal-log' <device> [--package=<FILE>, -p <FILE>]

DESCRIPTION
-----------
For the given NVMe device, sends the Micron vendor specific device commands to retrieve
various logs (in binary format) and compresses them and saves into specified zip file.
These vendor unique logs can be analyzed with Micron Technical support team for any device
specific issues

The <device> parameter is mandatory and may be either the NVMe
character device (ex: /dev/nvme0), or a namespace block device (ex:
/dev/nvme0n1). 

This will only work on Micron devices devices of model numbers 9200 and 54XX. Support
for new devices may be added subsequently. Results for any other device are undefined.

OPTIONS
-------
-l <FILE>::
--package=<FILE>::
        name of the file (with .zip extension) to save the device logs

EXAMPLES
--------
* Gets the logs from the device and saves to micron_logs.zip file
+
------------
# nvme micron vs-internal-log /dev/nvme0 --package=micron_logs.zip

------------
NVME
----
Part of the nvme-user suite
 070701015D6A60000081A4000003E80000006400000001642C0FB50000032B000000000000004A00000000000000000000003200000000nvme-cli/Documentation/nvme-micron-nand-stats.txt nvme-micron-nand-stats(1)
=========================

NAME
----
nvme-micron-nand-stats - Retrieves NAND statistics of given micron device

SYNOPSIS
--------
[verse]
'nvme micron vs-nand-stats' <device>

DESCRIPTION
-----------
This command prints NAND information (Total bytes written, Bad block count and 
Erase failures etc) for the given micron device.

The <device> parameter is mandatory and may be either the NVMe
character device (ex: /dev/nvme0), or a namespace block device (ex:
/dev/nvme0n1). 

This will only work on Micron devices devices of model numbers 54XX. Support for
new devices may be added subsequently.

OPTIONS
-------
None

EXAMPLES
--------
* Retrieve NAND statistics information
+
------------
# nvme micron vs-nand-stats /dev/nvme0

------------

NVME
----
Part of the nvme-user suite
 070701015D6A63000081A4000003E80000006400000001642C0FB500000312000000000000004A00000000000000000000003200000000nvme-cli/Documentation/nvme-micron-pcie-stats.txt nvme-micron-pcie-stats(1)
=========================

NAME
----
nvme-micron-pcie-stats - Retrieves pcie error statistics for given micron device

SYNOPSIS
--------
[verse]
'nvme micron vs-pcie-stats' <device>

DESCRIPTION
-----------
This command prints pcie correctable and uncorrectable error information for the
given micron device.

The <device> parameter is mandatory and may be either the NVMe
character device (ex: /dev/nvme0), or a namespace block device (ex:
/dev/nvme0n1). 

This will only work on Micron devices devices of model numbers 54XX. Support for
new devices may be added subsequently.

OPTIONS
-------
None

EXAMPLES
--------
* Retrieve PCIe error information
+
------------
# nvme micron vs-pcie-stats /dev/nvme0

------------

NVME
----
Part of the nvme-user suite
  070701015D6A66000081A4000003E80000006400000001642C0FB500000780000000000000004A00000000000000000000003A00000000nvme-cli/Documentation/nvme-micron-selective-download.txt nvme-micron-selective-download(1)
=================================

NAME
----
nvme-micron-selective-download - Performs selective firmware download that allows user
to select which firmware binary to update for 9200 devices. This requires power cycle
once the update completes.

SYNOPSIS
--------
[verse]
'nvme micron selective-download' <device> [--fw=<FILE>, -f <FILE>] [--select=<flag>, -s <flag>]

DESCRIPTION
-----------
This command uses micron vendor specific nvme commands to download given firmware image to the
specified 9200 device to update selected or all portions of firmware image. 

The <device> parameter is mandatory and may be either the NVMe
character device (ex: /dev/nvme0), or a namespace block device (ex:
/dev/nvme0n1). 

This will only work on Micron devices devices of model number 9200. Support for new devices
may be added subsequently. Results for any other device are undefined.

OPTIONS
-------
-f <FILE>::
--fw=<FILE>::
        name of the firmware image file
-s <flag>::
--select=<flag>::
        flag that has following values
         OOB:: This updates the OOB and main firmware\n"
         EEP:: This updates the eeprom and main firmware\n"
         ALL:: This updates the eeprom, OOB, and main firmware";

EXAMPLES
--------
* Update OOB and main firmware
+
------------
# nvme micron selective-download /dev/nvme0 --fw=firmware_bin --select=OOB
# nvme micron selective-download /dev/nvme0 -f firmware_bin -s OOB   

------------
* Update OOB and main firmware
+
------------
# nvme micron selective-download /dev/nvme0 --fw=firmware_bin --select=EEP
# nvme micron selective-download /dev/nvme0 -f firmware_bin --s EEP
------------
* Update eeprom, OOB and main firmware
+
------------
# nvme micron selective-download /dev/nvme0 --fw=firmware_bin --select=ALL
# nvme micron selective-download /dev/nvme0 -f firmware_bin --s ALL
------------

NVME
----
Part of the nvme-user suite
070701015D6A69000081A4000003E80000006400000001642C0FB50000061B000000000000004A00000000000000000000003500000000nvme-cli/Documentation/nvme-micron-smart-add-log.txt  nvme-micron-smart-add-log(1)
============================

NAME
----
nvme-micron-smart-add-log - Retrieves NAND statistics (2200 model drives)
or Extended SMART information (OCP complaint models) of given micron device

SYNOPSIS
--------
[verse]
'nvme micron vs-smart-add-log' <device>  -f <json|normal>

DESCRIPTION
-----------
This command prints NAND information (Total bytes written, Bad block count and 
Erase failures etc) for the given micron device if its of 2200 model controller.
For OCP complaint controllers this command print extended SMART health data
along with NAND information (if available)

The <device> parameter is mandatory and may be either the NVMe
character device (ex: /dev/nvme0), or a namespace block device (ex:
/dev/nvme0n1). 

The '-f' option controls the displayed output data format based on the option
value. If the option value is 'json' (which is enabled by default), output data
is printed in JSON format. If option value is 'normal' the output is displayed
in non-JSON format.

This will only work on Micron devices devices of model numbers 54XX and OCP
complaint controllers. Support for new devices may be added subsequently.

OPTIONS
-------
-f <json|normal> controls the format of displayed output.


EXAMPLES
--------
* Retrieve NAND/extended SMART data and display in json format
+
------------
# nvme micron vs-nand-stats /dev/nvme0

* Retrieve NAND/extended SMART data and display in non-json format
+
------------
# nvme micron vs-nand-stats /dev/nvme0 -f normal

------------

NVME
----
Part of the nvme-user suite
 070701015D6A6C000081A4000003E80000006400000001642C0FB50000035D000000000000004A00000000000000000000003900000000nvme-cli/Documentation/nvme-micron-temperature-stats.txt  nvme-micron-temperature-stats(1)
==================================

NAME
----
nvme-micron-temperature-stats - Retrieves temperature information of given micron device

SYNOPSIS
--------
[verse]
'nvme micron vs-temperature-stats' <device>

DESCRIPTION
-----------
This command prints temperature information (composite temperature and number of active
temperature sensors) for the given micron device.

The <device> parameter is mandatory and may be either the NVMe
character device (ex: /dev/nvme0), or a namespace block device (ex:
/dev/nvme0n1). 

This will only work on Micron devices devices of model numbers 54XX. Support for new
devices may be added subsequently.

OPTIONS
-------
None

EXAMPLES
--------
* Retrieve temperature information
+
------------
# nvme micron vs-temperature-stats /dev/nvme0

------------

NVME
----
Part of the nvme-user suite
   070701015D6A6F000081A4000003E80000006400000001642C0FB5000002F4000000000000004A00000000000000000000003400000000nvme-cli/Documentation/nvme-netapp-ontapdevices.txt   nvme-netapp-ontapdevices(1)
===========================

NAME
----
nvme-netapp-ontapdevices - Display information about ONTAP devices

SYNOPSIS
--------
[verse]
'nvme netapp ontapdevices' [-o <fmt> | --output-format=<fmt>]

DESCRIPTION
-----------
Display information about ONTAP devices on the host. The ONTAP devices are
identified using the Identify Controller data.

OPTIONS
-------
-o <fmt>::
--output-format=<fmt>::
              Set the reporting format to 'normal' (default), 'column', or
              'json'. Only one output format can be used at a time.

EXAMPLES
--------
* Display information, in a column-based format, for ONTAP devices.
+
------------
# nvme netapp ontapdevices -o column
------------

NVME
----
Part of the nvme-user suite
070701015D6A72000081A4000003E80000006400000001642C0FB500000368000000000000004A00000000000000000000003100000000nvme-cli/Documentation/nvme-netapp-smdevices.txt  nvme-netapp-smdevices(1)
========================

NAME
----
nvme-netapp-smdevices - Display information for each NVMe path to an E-Series volume

SYNOPSIS
--------
[verse]
'nvme netapp smdevices' [-o <fmt> | --output-format=<fmt>]

DESCRIPTION
-----------
Display vendor-specific information for each NVMe path to an E-Series namespace
currently connected to the host.  The E-Series paths are identified from the
NVMe nodes in /dev by sending an Identify Controller.

OPTIONS
-------
-o <fmt>::
--output-format=<fmt>::
              Set the reporting format to 'normal' (default), 'column', or
              'json'. Only one output format can be used at a time.

EXAMPLES
--------
* Display information, in a column-based format, for each path to an E-Series
namespace.
+
------------
# nvme netapp smdevices -o column
------------

NVME
----
Part of the nvme-user suite
070701015D6A75000081A4000003E80000006400000001642C0FB50000080A000000000000004A00000000000000000000002900000000nvme-cli/Documentation/nvme-ns-descs.txt  nvme-ns-descs(1)
================

NAME
----
nvme-ns-descs - Send NVMe Identify for a list of Namespace Identification
		Descriptor structure, return result and structure

SYNOPSIS
--------
[verse]
'nvme ns-descs' <device> [--namespace-id=<nsid> | -n <nsid>]
			[--raw-binary | -b]
			[--output-format=<fmt> | -o <fmt>]

DESCRIPTION
-----------
For the NVMe device given, sends an identify for a list of namespace
identification descriptor structures command and provides the result and
returned structure.

The <device> parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).
If the character device is given, the `'--namespace-id'` option is
mandatory, otherwise it will use the ns-id of the namespace for the block
device you opened. For block devices, the ns-id used can be overridden
with the same option.

On success, the structure may be returned in one of several ways depending
on the option flags; the structure may be parsed by the program or the
raw buffer may be printed to stdout.

OPTIONS
-------
-n <nsid>::
--namespace-id=<nsid>::
	Retrieve the identify namespace identification descriptor structure
	for the given nsid. This is required for the character devices, or
	overrides the block nsid if given.

-b::
--raw-binary::
	Print the raw buffer to stdout. Structure is not parsed by
	program.

-o <format>::
--output-format=<format>::
	Set the reporting format to 'normal', 'json', or 'binary'.
	Only one output format can be used at a time.


EXAMPLES
--------
* If using the character device or overriding namespace #2:
+
------------
# nvme ns-descs /dev/nvme0 -n 1
# nvme ns-descs /dev/nvme0n1 -n 2
# nvme ns-descs /dev/nvme0 --namespace-id=1
------------
+

* Have the program return the raw structure in binary:
+
------------
# nvme ns-descs /dev/nvme0n1 --raw-binary > ns_descs.raw
# nvme ns-descs /dev/nvme0n1 -b > ns_descs.raw
------------
+
It is probably a bad idea to not redirect stdout when using this mode.

NVME
----
Part of the nvme-user suite
  070701015D6A78000081A4000003E80000006400000001642C0FB5000001DA000000000000004A00000000000000000000002A00000000nvme-cli/Documentation/nvme-ns-rescan.txt nvme-ns-rescan(1)
=================

NAME
----
nvme-ns-rescan - Rescans the nvme namespaces.

SYNOPSIS
--------
[verse]
'nvme ns-rescan' <device>

DESCRIPTION
-----------
Requests NVMe controller rescans the namespaces. The <device> param is mandatory and must
be an NVMe character device (ex: /dev/nvme0).

OPTIONS
-------
None

EXAMPLES
--------
* Rescans the nvme namespaces.
+
------------
# nvme ns-rescan /dev/nvme0
------------

NVME
----
Part of the nvme-user suite
  070701015D6A7B000081A4000003E80000006400000001642C0FB500000473000000000000004A00000000000000000000002C00000000nvme-cli/Documentation/nvme-nvm-id-ctrl.txt   nvme-nvm-id-ctrl(1)
===================

NAME
----
nvme-nvm-id-ctrl - Send NVMe Identify Controller, return NVM command set structure

SYNOPSIS
--------
[verse]
'nvme nvm-id-ctrl' <device> [-o <fmt> | --output-format=<fmt>]

DESCRIPTION
-----------
For the NVMe device given, sends the NVM command set's identify controller
command and provides the result and returned structure.

The <device> parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).

On success, the data structure returned by the device will be decoded and
displayed in one of several ways.

OPTIONS
-------
-o <format>::
--output-format=<format>::
              Set the reporting format to 'normal', 'json', or
              'binary'. Only one output format can be used at a time.

EXAMPLES
--------
* Has the program interpret the returned buffer and display the known
fields in a human readable format:
+
------------
# nvme nvm-id-ctrl /dev/nvme0
------------
+

* Show the output in json format
+
------------
# nvme nvm-id-ctrl /dev/nvme0 -o json
------------

NVME
----
Part of nvme-cli
 070701015D6A7C000081A4000003E80000006400000001642C0FB500000DA6000000000000004A00000000000000000000003300000000nvme-cli/Documentation/nvme-nvm-id-ns-lba-format.1    '\" t
.\"     Title: nvme-nvm-id-ns-lba-format
.\"    Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
.\"      Date: 01/07/2022
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-NVM\-ID\-NS\-L" "1" "01/07/2022" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-nvm-id-ns-lba-format \- Send NVMe Identify NVM Command Set specific Namespace data structure for specified LBA format, display structure
.SH "SYNOPSIS"
.sp
.nf
\fInvme nvm\-id\-ns\-lba\-format\fR <device> [\-\-uuid\-index=<uuid\-index> | \-U <uuid_index>]
                        [\-\-lba\-format\-index=<lba_format_index> | \-i <lba_format_index>]
                        [\-v | \-\-verbose]
                        [\-\-output\-format=<fmt> | \-o <fmt>]
.fi
.SH "DESCRIPTION"
.sp
Identify NVM Command Set specific Namespace data structure for the specified LBA format index for the NVM Command Set specified in the CSI field\&.
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1)\&.
.sp
On success, the structure may be returned in one of several ways depending on the option flags; the structure may be parsed by the program or the raw buffer may be printed to stdout\&.
.SH "OPTIONS"
.PP
\-U <uuid\-index>, \-\-uuid\-index=<uuid\-index>
.RS 4
UUID Index of the feature
.RE
.PP
\-i <lba_format_index>, \-\-lba\-format\-index=<lba_format_index>
.RS 4
This field specifies the index into the LBA Format list identifying the LBA Format capabilities that are to be returned
.RE
.PP
\-v, \-\-verbose
.RS 4
Increase the information detail in the output\&.
.RE
.PP
\-o <format>, \-\-output\-format=<format>
.RS 4
Set the reporting format to
\fInormal\fR,
\fIjson\fR, or
\fIbinary\fR\&. Only one output format can be used at a time\&.
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Has the program interpret the returned buffer and display the known fields in a human readable format:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme nvm\-id\-ns\-lba\-format /dev/nvme0n1 \-i 0
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Have the program return the raw structure in binary:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme nvm\-id\-ns\-lba\-format /dev/nvme0 \-i 0 \-o binary > nvm_id_ns\&.raw
# nvme nvm\-id\-ns\-lba\-format /dev/nvme0n1 \-i 0 \-\-output\-format=binary > nvm_id_ns\&.raw
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite
  070701015D6A7D000081A4000003E80000006400000001642C0FB500004D85000000000000004A00000000000000000000003600000000nvme-cli/Documentation/nvme-nvm-id-ns-lba-format.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 8.6.8" />
<title>nvme-nvm-id-ns-lba-format(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}


#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-nvm-id-ns-lba-format(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-nvm-id-ns-lba-format -
   Send NVMe Identify NVM Command Set specific Namespace data structure for specified LBA format, display structure
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme nvm-id-ns-lba-format</em> &lt;device&gt; [--uuid-index=&lt;uuid-index&gt; | -U &lt;uuid_index&gt;]
                        [--lba-format-index=&lt;lba_format_index&gt; | -i &lt;lba_format_index&gt;]
                        [-v | --verbose]
                        [--output-format=&lt;fmt&gt; | -o &lt;fmt&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>Identify NVM Command Set specific Namespace data structure for the specified
LBA format index for the NVM Command Set specified in the CSI field.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).</p></div>
<div class="paragraph"><p>On success, the structure may be returned in one of several ways depending
on the option flags; the structure may be parsed by the program or the
raw buffer may be printed to stdout.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-U &lt;uuid-index&gt;
</dt>
<dt class="hdlist1">
--uuid-index=&lt;uuid-index&gt;
</dt>
<dd>
<p>
        UUID Index of the feature
</p>
</dd>
<dt class="hdlist1">
-i &lt;lba_format_index&gt;
</dt>
<dt class="hdlist1">
--lba-format-index=&lt;lba_format_index&gt;
</dt>
<dd>
<p>
        This field specifies the index into the LBA Format list identifying
        the LBA Format capabilities that are to be returned
</p>
</dd>
<dt class="hdlist1">
-v
</dt>
<dt class="hdlist1">
--verbose
</dt>
<dd>
<p>
        Increase the information detail in the output.
</p>
</dd>
<dt class="hdlist1">
-o &lt;format&gt;
</dt>
<dt class="hdlist1">
--output-format=&lt;format&gt;
</dt>
<dd>
<p>
              Set the reporting format to <em>normal</em>, <em>json</em>, or
              <em>binary</em>. Only one output format can be used at a time.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Has the program interpret the returned buffer and display the known
fields in a human readable format:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme nvm-id-ns-lba-format /dev/nvme0n1 -i 0</code></pre>
</div></div>
</li>
<li>
<p>
Have the program return the raw structure in binary:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme nvm-id-ns-lba-format /dev/nvme0 -i 0 -o binary &gt; nvm_id_ns.raw
# nvme nvm-id-ns-lba-format /dev/nvme0n1 -i 0 --output-format=binary &gt; nvm_id_ns.raw</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated 2022-01-07 19:00:31 KST
</div>
</div>
</body>
</html>
   070701015D6A7E000081A4000003E80000006400000001642C0FB500000796000000000000004A00000000000000000000003500000000nvme-cli/Documentation/nvme-nvm-id-ns-lba-format.txt  nvme-nvm-id-ns-lba-format(1)
============================

NAME
----
nvme-nvm-id-ns-lba-format - Send NVMe Identify NVM Command Set specific
Namespace data structure for specified LBA format, display structure

SYNOPSIS
--------
[verse]
'nvme nvm-id-ns-lba-format' <device> [--uuid-index=<uuid-index> | -U <uuid_index>]
			[--lba-format-index=<lba_format_index> | -i <lba_format_index>]
			[-v | --verbose]
			[--output-format=<fmt> | -o <fmt>]

DESCRIPTION
-----------
Identify NVM Command Set specific Namespace data structure for the specified
LBA format index for the NVM Command Set specified in the CSI field.

The <device> parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).

On success, the structure may be returned in one of several ways depending
on the option flags; the structure may be parsed by the program or the
raw buffer may be printed to stdout.

OPTIONS
-------
-U <uuid-index>::
--uuid-index=<uuid-index>::
	UUID Index of the feature

-i <lba_format_index>::
--lba-format-index=<lba_format_index>::
	This field specifies the index into the LBA Format list identifying
	the LBA Format capabilities that are to be returned

-v::
--verbose::
	Increase the information detail in the output.

-o <format>::
--output-format=<format>::
              Set the reporting format to 'normal', 'json', or
              'binary'. Only one output format can be used at a time.

EXAMPLES
--------
* Has the program interpret the returned buffer and display the known
fields in a human readable format:
+
------------
# nvme nvm-id-ns-lba-format /dev/nvme0n1 -i 0
------------
+
* Have the program return the raw structure in binary:
+
------------
# nvme nvm-id-ns-lba-format /dev/nvme0 -i 0 -o binary > nvm_id_ns.raw
# nvme nvm-id-ns-lba-format /dev/nvme0n1 -i 0 --output-format=binary > nvm_id_ns.raw
------------

NVME
----
Part of the nvme-user suite
  070701015D6A7F000081A4000003E80000006400000001642C0FB500000F8E000000000000004A00000000000000000000002800000000nvme-cli/Documentation/nvme-nvm-id-ns.1   '\" t
.\"     Title: nvme-nvm-id-ns
.\"    Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
.\"      Date: 01/07/2022
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-NVM\-ID\-NS" "1" "01/07/2022" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-nvm-id-ns \- Send NVMe Identify NVM Command Set specific Namespace data structure, display structure
.SH "SYNOPSIS"
.sp
.nf
\fInvme nvm\-id\-ns\fR <device> [\-\-uuid\-index=<uuid\-index> | \-U <uuid_index>]
                        [\-\-namespace\-id=<NUM> | \-n <NUM>]
                        [\-v | \-\-verbose]
                        [\-\-output\-format=<fmt> | \-o <fmt>]
.fi
.SH "DESCRIPTION"
.sp
Identify NVM Command Set specific Namespace data structure for the specified NSID for the NVM Command Set specified in the CSI field\&.
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1)\&.
.sp
On success, the structure may be returned in one of several ways depending on the option flags; the structure may be parsed by the program or the raw buffer may be printed to stdout\&.
.SH "OPTIONS"
.PP
\-n <NUM>, \-\-namespace\-id=<NUM>
.RS 4
Use the provided namespace id for the command\&. If not provided, the namespace id of the block device will be used\&. If the command is issued to a non\-block device, the parameter is required\&.
.RE
.PP
\-U <uuid\-index>, \-\-uuid\-index=<uuid\-index>
.RS 4
UUID Index of the feature
.RE
.PP
\-v, \-\-verbose
.RS 4
Increase the information detail in the output\&.
.RE
.PP
\-o <format>, \-\-output\-format=<format>
.RS 4
Set the reporting format to
\fInormal\fR,
\fIjson\fR, or
\fIbinary\fR\&. Only one output format can be used at a time\&.
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Has the program interpret the returned buffer and display the known fields in a human readable format:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme nvm\-id\-ns /dev/nvme0n1
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
If using the character device or overriding namespace id:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme nvm\-id\-ns /dev/nvme0 \-n 1
# nvme nvm\-id\-ns /dev/nvme0n1 \-n 1
# nvme nvm\-id\-ns /dev/nvme0 \-\-namespace\-id=1
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Have the program return the raw structure in binary:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme nvm\-id\-ns /dev/nvme0n1 \-o binary > id_ns\&.raw
# nvme nvm\-id\-ns /dev/nvme0n1 \-\-output\-format=binary > id_ns\&.raw
.fi
.if n \{\
.RE
.\}
.sp
It is probably a bad idea to not redirect stdout when using this mode\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Alternatively you may want to send the data to another program that can parse the raw buffer\&.
.sp
.if n \{\
.RS 4
.\}
.nf
NVME
.fi
.if n \{\
.RE
.\}
.RE
.sp
Part of the nvme\-user suite
  070701015D6A80000081A4000003E80000006400000001642C0FB500004F1A000000000000004A00000000000000000000002B00000000nvme-cli/Documentation/nvme-nvm-id-ns.html    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 8.6.8" />
<title>nvme-nvm-id-ns(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}


#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-nvm-id-ns(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-nvm-id-ns -
   Send NVMe Identify NVM Command Set specific Namespace data structure, display structure
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme nvm-id-ns</em> &lt;device&gt; [--uuid-index=&lt;uuid-index&gt; | -U &lt;uuid_index&gt;]
                        [--namespace-id=&lt;NUM&gt; | -n &lt;NUM&gt;]
                        [-v | --verbose]
                        [--output-format=&lt;fmt&gt; | -o &lt;fmt&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>Identify NVM Command Set specific Namespace data structure for the specified
NSID for the NVM Command Set specified in the CSI field.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).</p></div>
<div class="paragraph"><p>On success, the structure may be returned in one of several ways depending
on the option flags; the structure may be parsed by the program or the
raw buffer may be printed to stdout.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-n &lt;NUM&gt;
</dt>
<dt class="hdlist1">
--namespace-id=&lt;NUM&gt;
</dt>
<dd>
<p>
        Use the provided namespace id for the command. If not provided, the
        namespace id of the block device will be used. If the command is issued
        to a non-block device, the parameter is required.
</p>
</dd>
<dt class="hdlist1">
-U &lt;uuid-index&gt;
</dt>
<dt class="hdlist1">
--uuid-index=&lt;uuid-index&gt;
</dt>
<dd>
<p>
        UUID Index of the feature
</p>
</dd>
<dt class="hdlist1">
-v
</dt>
<dt class="hdlist1">
--verbose
</dt>
<dd>
<p>
        Increase the information detail in the output.
</p>
</dd>
<dt class="hdlist1">
-o &lt;format&gt;
</dt>
<dt class="hdlist1">
--output-format=&lt;format&gt;
</dt>
<dd>
<p>
              Set the reporting format to <em>normal</em>, <em>json</em>, or
              <em>binary</em>. Only one output format can be used at a time.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Has the program interpret the returned buffer and display the known
fields in a human readable format:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme nvm-id-ns /dev/nvme0n1</code></pre>
</div></div>
</li>
<li>
<p>
If using the character device or overriding namespace id:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme nvm-id-ns /dev/nvme0 -n 1
# nvme nvm-id-ns /dev/nvme0n1 -n 1
# nvme nvm-id-ns /dev/nvme0 --namespace-id=1</code></pre>
</div></div>
</li>
<li>
<p>
Have the program return the raw structure in binary:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme nvm-id-ns /dev/nvme0n1 -o binary &gt; id_ns.raw
# nvme nvm-id-ns /dev/nvme0n1 --output-format=binary &gt; id_ns.raw</code></pre>
</div></div>
<div class="paragraph"><p>It is probably a bad idea to not redirect stdout when using this mode.</p></div>
</li>
<li>
<p>
Alternatively you may want to send the data to another program that
can parse the raw buffer.
</p>
<div class="listingblock">
<div class="content">
<pre><code>NVME</code></pre>
</div></div>
</li>
</ul></div>
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated 2022-01-07 14:55:44 KST
</div>
</div>
</body>
</html>
  070701015D6A81000081A4000003E80000006400000001642C0FB50000089F000000000000004A00000000000000000000002A00000000nvme-cli/Documentation/nvme-nvm-id-ns.txt nvme-nvm-id-ns(1)
=================

NAME
----
nvme-nvm-id-ns - Send NVMe Identify NVM Command Set specific Namespace data structure, display structure

SYNOPSIS
--------
[verse]
'nvme nvm-id-ns' <device> [--uuid-index=<uuid-index> | -U <uuid_index>]
			[--namespace-id=<NUM> | -n <NUM>]
			[-v | --verbose]
			[--output-format=<fmt> | -o <fmt>]

DESCRIPTION
-----------
Identify NVM Command Set specific Namespace data structure for the specified
NSID for the NVM Command Set specified in the CSI field.

The <device> parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).

On success, the structure may be returned in one of several ways depending
on the option flags; the structure may be parsed by the program or the
raw buffer may be printed to stdout.

OPTIONS
-------
-n <NUM>::
--namespace-id=<NUM>::
	Use the provided namespace id for the command. If not provided, the
	namespace id of the block device will be used. If the command is issued
	to a non-block device, the parameter is required.

-U <uuid-index>::
--uuid-index=<uuid-index>::
	UUID Index of the feature

-v::
--verbose::
	Increase the information detail in the output.

-o <format>::
--output-format=<format>::
              Set the reporting format to 'normal', 'json', or
              'binary'. Only one output format can be used at a time.

EXAMPLES
--------
* Has the program interpret the returned buffer and display the known
fields in a human readable format:
+
------------
# nvme nvm-id-ns /dev/nvme0n1
------------
+

* If using the character device or overriding namespace id:
+
------------
# nvme nvm-id-ns /dev/nvme0 -n 1
# nvme nvm-id-ns /dev/nvme0n1 -n 1
# nvme nvm-id-ns /dev/nvme0 --namespace-id=1
------------
+
* Have the program return the raw structure in binary:
+
------------
# nvme nvm-id-ns /dev/nvme0n1 -o binary > id_ns.raw
# nvme nvm-id-ns /dev/nvme0n1 --output-format=binary > id_ns.raw
------------
+
It is probably a bad idea to not redirect stdout when using this mode.

* Alternatively you may want to send the data to another program that
can parse the raw buffer.
+
------------

NVME
----
Part of the nvme-user suite
 070701015D6A84000081A4000003E80000006400000001642C0FB500000588000000000000004A00000000000000000000003E00000000nvme-cli/Documentation/nvme-ocp-clear-fw-activate-history.txt nvme-ocp-clear-fw-activate-history(1)
=====================================

NAME
----
nvme-ocp-clear-fw-activate-history - Clear the OCP Firmware Update History Log

SYNOPSIS
--------
[verse]
'nvme ocp clear-fw-activate-history' <device> [--no-uuid | -n>]

DESCRIPTION
-----------
For the NVMe device given, Clear OCP Firmware Update History Log.

The <device> parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0) or block device (ex: /dev/nvme0n1).

This command with no option added, will try to automatically detect the
parameters of the command. This will work successfully or fail gracefully for
devices supporting UUID for Vendor Specific Information (NVMe 1.4 or later,
OCP 2.0 requires NVMe 1.4b). For devices that do not support OCP 2.0 the
command will fail gracefully, unless the --no-uuid option is provided.

For OCP 1.0 devices (before NVMe 1.4) the --no-uuid option is required.
When --no-uuid option is provided, results for devices before NVMe 1.4 without
OCP support are undefined.

On success it returns 0, error code otherwise.

OPTIONS
-------
-n::
--no-uuid::
	Do not try to automatically detect UUID index for this command (required
        for old OCP 1.0 support)

EXAMPLES
--------
* Clears OCP Firmware Activation History Log for the device:
+
------------
# nvme ocp clear-fw-activate-history /dev/nvme0
------------

NVME
----
Part of the nvme-user suite.070701015D6A87000081A4000003E80000006400000001642C0FB5000003F6000000000000004A00000000000000000000003800000000nvme-cli/Documentation/nvme-ocp-latency-monitor-log.txt   nvme-ocp-latency-monitor-log(1)
===============================

NAME
----
nvme-ocp-latency-monitor-log - Display latency monitor log page data in human
readable format

SYNOPSIS
--------
[verse]
'nvme ocp latency-monitor-log' <device> [--output-format=<fmt> | -o <fmt>]

DESCRIPTION
-----------

For the NVMe device given, latency monitor log page data.

The <device> parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0) or block device (ex: /dev/nvme0n1).

This will only work on OCP compliant devices supporting this log page.
Results for any other device are undefined.

On success it returns 0, error code otherwise.

OPTIONS
-------
-o <format>::
--output-format=<format>::
	Set the reporting format to 'normal' or 'json'. Only one output format
	can be used at a time. The default is normal.

EXAMPLES
--------
* Displays the get latency monitor log for the device:
+
------------
# nvme ocp latency-monitor-log /dev/nvme0
------------

NVME
----
Part of the nvme-user suite.
  070701015D6A8A000081A4000003E80000006400000001642C0FB500000416000000000000004A00000000000000000000003200000000nvme-cli/Documentation/nvme-ocp-smart-add-log.txt nvme-ocp-smart-add-log(1)
=========================

NAME
----
nvme-ocp-smart-add-log - Retrieves Extended SMART information of given OCP
compliant device

SYNOPSIS
--------
[verse]
'nvme ocp smart-add-log' <device> [--output-format=<fmt> | -o <fmt>]

DESCRIPTION
-----------
For the NVMe device given, send a smart-add-log command and
provide the additional smart log.

The <device> parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0) or block device (ex: /dev/nvme0n1).

This will only work on OCP compliant devices supporting this feature.
Results for any other device are undefined.

On success it returns 0, error code otherwise.

OPTIONS
-------
-o <format>::
--output-format=<format>::
	Set the reporting format to 'normal' or 'json'. Only one output format
	can be used at a time. The default is normal.

EXAMPLES
--------
* Has the program issue a smart-add-log command to retrieve the 0xC0 log page.
+
------------
# nvme ocp smart-add-log /dev/nvme0
------------

NVME
----
Part of the nvme-user suite.
  070701015D6A8D000081A4000003E80000006400000001642C0FB5000008F8000000000000004A00000000000000000000003500000000nvme-cli/Documentation/nvme-persistent-event-log.txt  persistent-event-log(1)
=======================

NAME
----
nvme-persistent-event-log - Send NVMe persistent event log page request,
returns result and log

SYNOPSIS
--------
[verse]
'nvme persistent-event-log' <device> [--action=<action> | -a <action>]
            [--log-len=<log-len> | -l <log-len>]
            [--raw-binary | -b]
            [--output-format=<fmt> | -o <fmt>]

DESCRIPTION
-----------
Retrieves the NVMe persistent event log page from an NVMe device
and provides the returned structure.

The <device> parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).

On success, the returned persistent event log structure may be returned
in one of several ways depending on the option flags; the structure may
parsed by the program and printed in a readable format or the raw buffer
may be printed to stdout for another program to parse.

OPTIONS
-------
-a <action>::
--action=<action>::
    While try to retrieve this log action the controller shall take
    during processing this persistent log page command. This mandatory
    field, based on the value issued it may Read Log Data, Establish
    Context and Read Log Data or Release Context can occur. For More
    details see NVM Express 1.4 Spec. Section 5.14.1.13 Persistent
    Event Log (Log Identifier 0Dh)

-l <log-len>::
--log-len=<log-len>::
    Allocates a buffer of <log-len> bytes size and requests this
    many bytes be returned in the constructed NVMe command. This
    param is mandatory. If <log-len> given is 0 and action is 0,
    it will read the Total Log Length(TLL) of the page.

-b::
--raw-binary::
    Print the raw persistent event log buffer to stdout.

-o <format>::
--output-format=<format>::
    Set the reporting format to 'normal', 'json', or 'binary'.
    Only one output format can be used at a time.

EXAMPLES
--------
* Print the persistent event log page in a human readable format:
+
------------
# nvme persistent-event-log /dev/nvme0
------------
+

* Print the raw persistent event log to a file:
+
------------
# nvme persistent-event-log /dev/nvme0 --raw-binary > persistent_log.raw
------------
+
It is probably a bad idea to not redirect stdout when using this mode.

NVME
----
Part of the nvme-user suite
070701015D6A90000081A4000003E80000006400000001642C0FB500000839000000000000004A00000000000000000000003700000000nvme-cli/Documentation/nvme-pred-lat-event-agg-log.txt    nvme-pred-lat-event-agg-log(1)
==============================

NAME
----
nvme-pred-lat-event-agg-log - Send Predictable Latency Event Aggregate Log
Page request, returns result and log

SYNOPSIS
--------
[verse]
'nvme pred-lat-event-agg-log' <device> [--log-entries=<log_entries> | -e <log_entries>]
			[--rae | -r] [--raw-binary | -b]
			[--output-format=<fmt> | -o <fmt>]

DESCRIPTION
-----------
Retrieves the NVMe Predictable Latency Event Aggregate Log Page from an
NVMe device and provides the returned structure.

The <device> parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).

On success, the returned Predictable Latency Event Aggregate Log
Page structure may be returned in one of several ways depending on
the option flags; the structure may parsed by the program and printed
in a readable format or the raw buffer may be printed to stdout for
another program to parse.

OPTIONS
-------
-e <log_entries>::
--log-entries=<log_entries>::
    Retrieve the Predictable Latency Event Aggregate Log pending entries.
    This argument is mandatory and its success may depend on the device's
    statistics to provide this log For More details see NVM Express 1.4 Spec.
    Section 5.14.1.11. The maximum number of log entries supported is 2044
    for the device.

-r::
--rae::
	Retain an Asynchronous Event.

-b::
--raw-binary::
	Print the raw Predictable Latency Event Aggregate log buffer to stdout.

-o <format>::
--output-format=<format>::
    Set the reporting format to 'normal', 'json', or 'binary'.
    Only one output format can be used at a time.

EXAMPLES
--------
* Print the Predictable Latency Event Aggregate Log page in a human readable format:
+
------------
# nvme pred-lat-event-agg-log /dev/nvme0
------------
+

* Print the raw Predictable Latency Event Aggregate log to a file:
+
------------
# nvme pred-lat-event-agg-log /dev/nvme0 --raw-binary > pred_lat_agg_log.raw
------------
+
It is probably a bad idea to not redirect stdout when using this mode.

NVME
----
Part of the nvme-user suite
   070701015D6A93000081A4000003E80000006400000001642C0FB5000007C0000000000000004A00000000000000000000003400000000nvme-cli/Documentation/nvme-predictable-lat-log.txt   nvme-predictable-lat-log(1)
===========================

NAME
----
nvme-predictable-lat-log - Send Predictable latency per NVM set log page request,
returns result and log

SYNOPSIS
--------
[verse]
'nvme predictable-lat-log' <device> [--nvmset-id=<nvmset_id> | -i <nvmset_id>]
			[--raw-binary | -b]
			[--output-format=<fmt> | -o <fmt>]

DESCRIPTION
-----------
Retrieves the NVMe Predictable latency per NVM set log page from an NVMe device
and provides the returned structure.

The <device> parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).

On success, the returned Predictable latency per NVM set log structure
may be returned in one of several ways depending on the option flags; the
structure may parsed by the program and printed in a readable format or
the raw buffer may be printed to stdout for another program to parse.

OPTIONS
-------
-i <nvmset_id>::
--nvmset-id=<nvmset_id>::
    Retrieve the Predictable latency per NVM set log for the given nvmset id.
    This argument is mandatory and its success may depend on the device's
    statistics to provide this log For More details see NVM Express 1.4 Spec.
    Section 5.14.1.10. The default nvmset id to use is 1 for the device.

-b::
--raw-binary::
	Print the raw Predictable latency per NVM set log buffer to stdout.

-o <format>::
--output-format=<format>::
              Set the reporting format to 'normal', 'json', or
              'binary'. Only one output format can be used at a time.

EXAMPLES
--------
* Print the Predictable latency per NVM set log page in a human readable format:
+
------------
# nvme predictable-lat-log /dev/nvme0
------------
+

* Print the raw Predictable latency per NVM set log to a file:
+
------------
# nvme predictable-lat-log /dev/nvme0 --raw-binary > nvmset_log.raw
------------
+
It is probably a bad idea to not redirect stdout when using this mode.

NVME
----
Part of the nvme-user suite
070701015D6A96000081A4000003E80000006400000001642C0FB5000005A4000000000000004A00000000000000000000003200000000nvme-cli/Documentation/nvme-primary-ctrl-caps.txt nvme-primary-ctrl-caps(1)
=========================

NAME
----
nvme-primary-ctrl-caps - Send identify Primary Controller Caps, return result and structure

SYNOPSIS
--------
[verse]
'nvme primary-ctrl-caps' <device> [-o <format> | --output-format=<format>]

DESCRIPTION
-----------
For the NVMe device given, sends an identify primary Controller caps command and
provides the result and returned structure.

The <device> parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).

On success, the structure may be returned in one of several ways depending
on the option flags; the structure may be parsed by the program or the
raw buffer may be printed to stdout.

OPTIONS
-------
-o <format>::
--output-format=<format>::
              Set the reporting format to 'normal', 'json', or
              'binary'. Only one output format can be used at a time.

-H::
--human-readable::
	This option will parse and format many of the bit fields
	into human-readable formats.

EXAMPLES
--------
* Get Primary Ctrl Caps of the device in default format
+
------------
# nvme primary-ctrl-caps /dev/nvme0
------------
* Has the program interpret the returned buffer and display the known
fields in a human readable format:
+
------------
# nvme primary-ctrl-caps /dev/nvme0 --human-readable
# nvme primary-ctrl-caps /dev/nvme0 -H
------------
NVME
----
Part of the nvme-user suite
070701015D6A9C000081A4000003E80000006400000001642C0FB5000001AD000000000000004A00000000000000000000002600000000nvme-cli/Documentation/nvme-reset.txt nvme-reset(1)
=============

NAME
----
nvme-reset - Reset the nvme controller.

SYNOPSIS
--------
[verse]
'nvme reset' <device>

DESCRIPTION
-----------
Requests NVMe controller reset. The <device> param is mandatory and must
be an NVMe character device (ex: /dev/nvme0).

OPTIONS
-------
None

EXAMPLES
--------
* Resets the controller.
+
------------
# nvme reset /dev/nvme0
------------

NVME
----
Part of the nvme-user suite
   070701015D6A9F000081A4000003E80000006400000001642C0FB500000909000000000000004A00000000000000000000002D00000000nvme-cli/Documentation/nvme-resv-acquire.txt  nvme-resv-acquire(1)
====================

NAME
----
nvme-resv-acquire - Acquire an nvme reservation

SYNOPSIS
--------
[verse]
'nvme resv-acquire' <device> [--namespace-id=<nsid> | -n <nsid>]
			     [--crkey=<crkey> | -c <crkey>]
			     [--prkey=<prkey> | -p <prkey>]
			     [--rtype=<rtype> | -t <rtype>]
			     [--racqa=<racqa> | -a <racqa>]
			     [--iekey | -i]

DESCRIPTION
-----------
The Reservation Acquire command is used to acquire a reservation on
a namespace, preempt a reservation held on a namespace, and abort a
reservation held on a namespace.

OPTIONS
-------
-n <nsid>::
--namespace-id=<nsid>::
	Override the nsid field. If using the admin character device,
	this parameter is required.

-c <crkey>::
--crkey=<crkey>::
	Current Reservation Key: The field specifies the current
	reservation key associated with the host. If the IEKEY bit is
	set to â€˜1â€™ in the command, then the CRKEY check succeeds
	regardless of the value in this field.

-p <prkey>::
--prkey=<prkey>::
	Preempt Reservation Key: If the Reservation Acquire Action is set
	to 001b (i.e., Preempt) or 010b (i.e., Preempt and Abort), then
	this field specifies the reservation key to be unregistered from
	the namespace. For all other Reservation Acquire Action values,
	this field is reserved.

-t <rtype>::
--rtype=<rtype>::
	Reservation Type: This field specifies the type of reservation
	to be created.
+
[]
|=================
|Value|Definition
|0h|Reserved 
|1h|Write Exclusive Reservation
|2h|Exclusive Access Reservation
|3h|Write Exclusive - Registrants Only Reservation
|4h|Exclusive Access - Registrants Only Reservation
|5h|Write Exclusive - All Registrants Reservation
|6h|Exclusive Access - All Registrants Reservation
|07h-FFh|Reserved
|=================

-a <racqa>::
--racqa=<racqa>::
	Reservation Acquire Action: This field specifies the action that
	is performed by the command.
+
[]
|=================
|Value|Definition
|0|Acquire
|1|Preempt
|2|Preempt and Abort
|3-7|Reserved
|=================

-i::
--iekey::
	Ignore Existing Key: If this bit is set to a '1', then the
	Current Reservation Key (CRKEY) check is disabled and the command
	shall succeed regardless of the CRKEY field  value.
+
Indicator option, defaults to '0'.

EXAMPLES
--------
No examples yet

NVME
----
Part of the nvme-user suite
   070701015D6AA2000081A4000003E80000006400000001642C0FB50000052D000000000000004A00000000000000000000002F00000000nvme-cli/Documentation/nvme-resv-notif-log.txt    nvme-resv-notif-log(1)
======================

NAME
----
nvme-resv-notif-log - Send NVMe Reservation Notification log page request,
                      return result and log

SYNOPSIS
--------
[verse]
'nvme resv-notif-log' <device> [--output-format=<fmt> | -o <fmt>]

DESCRIPTION
-----------
Retrieves NVMe Reservation Notification log page from an NVMe device and
provides the returned structure.

The <device> parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).

On success, the returned Reservation Notification log structure may be
returned in one of several ways depending on the option flags; the structure
may parsed by the program and printed in a readable format or the raw buffer
may be printed to stdout for another program to parse.

OPTIONS
-------
-o <format>::
--output-format=<format>::
              Set the reporting format to 'normal', 'json', or
              'binary'. Only one output format can be used at a time.

EXAMPLES
--------
* Get the Reservation Notification log and print it in a human readable format:
+
------------
# nvme resv-notif-log /dev/nvme0
------------
+

* Print the output in json format:
+
------------
# nvme resv-notif-log /dev/nvme0 -o json
------------

NVME
----
Part of the nvme-user suite
   070701015D6AA5000081A4000003E80000006400000001642C0FB5000009E3000000000000004A00000000000000000000002E00000000nvme-cli/Documentation/nvme-resv-register.txt nvme-resv-register(1)
=====================

NAME
----
nvme-resv-register - Register an nvme reservation

SYNOPSIS
--------
[verse]
'nvme resv-register' <device> [--namespace-id=<nsid> | -n <nsid>]
			      [--crkey=<crkey> | -c <crkey>]
			      [--nrkey=<nrkey> | -k <nrkey>]
			      [--rrega=<rrega> | -r <rrega>]
			      [--cptpl=<cptpl> | -p <cptpl>]
			      [--iekey | -i]

DESCRIPTION
-----------
The Reservation Register command is used to register, unregister, or
replace a reservation key.

OPTIONS
-------
-n <nsid>::
--namespace-id=<nsid>::
	Override the nsid field. If using the admin character device,
	this parameter is required.

-c <crkey>::
--crkey=<crkey>::
	Current Reservation Key: If the Reservation Register Action is
	001b (i.e., Unregister Reservation Key) or 010b (i.e., Replace
	Reservation Key), then this field contains the current reservation
	key associated with the host. For all other Reservation Register
	Action values, this field is reserved. The controller ignores
	the value of this field when the Ignore Existing Key (IEKEY)
	bit is set to â€˜1â€™.

-k <nrkey>::
--nrkey=<nrkey>::
	New Reservation Key: If the Reservation Register Action is
	000b (i.e., Register Reservation Key) or 010b (i.e., Replace
	Reservation Key), then this field contains the new reservation
	key associated with the host. For all other Reservation Register
	Action values, this field is reserved.

-p <cptpl>::
--cptpl=<cptpl>::
	Change Persist Through Power Loss State: This field allows the
	Persist Through Power Loss state associated with the namespace
	to be modified as a side effect of processing this command.
+
[]
|=================
|Value|Definition
|0|No change to PTPL state
|1|Reserved
|2|Set PTPL state to â€˜0â€™. Reservations are released and registrants
are cleared on a power on.
|3|Set PTPL state to â€˜1â€™. Reservations and registrants persist across
a power loss.
|=================

-r <rrega>::
--rrega=<rrega>::
	Reservation Register Action: This field specifies the registration
	action that is performed by the command.
+
[]
|=================
|Value|Definition
|0|Register Reservation Key
|1|Unregister Reservation Key
|2|Replace Reservation Key
|3-7|Reserved
|=================

-i::
--iekey::
	Ignore Existing Key: If this bit is set to a '1', then the
	Current Reservation Key (CRKEY) check is disabled and the command
	shall succeed regardless of the CRKEY field value.
+
Indicator option, defaults to '0'.

EXAMPLES
--------
No examples yet

NVME
----
Part of the nvme-user suite
 070701015D6AA8000081A4000003E80000006400000001642C0FB500000809000000000000004A00000000000000000000002D00000000nvme-cli/Documentation/nvme-resv-release.txt  nvme-resv-release(1)
====================

NAME
----
nvme-resv-release - Release an nvme reservation

SYNOPSIS
--------
[verse]
'nvme resv-release' <device> [--namespace-id=<nsid> | -n <nsid>]
			     [--crkey=<crkey> | -c <crkey>]
			     [--rtype=<rtype> | -t <rtype>]
			     [--rrela=<rrela> | -a <rrela>]
			     [--iekey | -i]

DESCRIPTION
-----------
The Reservation Release command is used to release or clear a reservation
held on a namespace.

OPTIONS
-------
-n <nsid>::
--namespace-id=<nsid>::
	Override the nsid field. If using the admin character device,
	this parameter is required.

-c <crkey>::
--crkey=<crkey>::
	Current Reservation Key: If the Reservation Register Action is
	001b (i.e., Unregister Reservation Key) or 010b (i.e., Replace
	Reservation Key), then this field contains the current reservation
	key associated with the host. For all other Reservation Register
	Action values, this field is reserved. The controller ignores
	the value of this field when the Ignore Existing Key (IEKEY)
	bit is set to â€˜1â€™.

-t <rtype>::
--rtype=<rtype>::
	Reservation Type: This field specifies the type of reservation
	to be created.
+
[]
|=================
|Value|Definition
|0h|Reserved 
|1h|Write Exclusive Reservation
|2h|Exclusive Access Reservation
|3h|Write Exclusive - Registrants Only Reservation
|4h|Exclusive Access - Registrants Only Reservation
|5h|Write Exclusive - All Registrants Reservation
|6h|Exclusive Access - All Registrants Reservation
|07h-FFh|Reserved
|=================

-a <rrela>::
--rrela=<rrela>::
	Reservation Release Action: This field specifies the registration
	action that is performed by the command.
+
[]
|=================
|Value|Definition
|0|Release
|1|Clear
|2-7|Reserved
|=================

-i::
--iekey::
	Ignore Existing Key: If this bit is set to a '1', then the
	Current Reservation Key (CRKEY) check is disabled and the command
	shall succeed regardless of the CRKEY field value.
+
Indicator option, defaults to '0'.

EXAMPLES
--------
No examples yet

NVME
----
Part of the nvme-user suite
   070701015D6AAB000081A4000003E80000006400000001642C0FB50000063A000000000000004A00000000000000000000002C00000000nvme-cli/Documentation/nvme-resv-report.txt   nvme-resv-report(1)
===================

NAME
----
nvme-resv-report - Send NVMe Reservation Report, parse the result

SYNOPSIS
--------
[verse]
'nvme resv-report' <device> [--namespace-id=<nsid> | -n <nsid>]
			[--numd=<num-dwords> | -d <num-dwords>]
			[--eds | -e]
			[--raw-binary | -b]
			[--output-format=<fmt> | -o <fmt>]

DESCRIPTION
-----------
The Reservation Report command returns a Reservation Status data structure
to host memory that describes the registration and reservation status
of a namespace.

The size of the Reservation Status data structure is a function of the
number of controllers in the NVM Subsystem that are associated with
hosts that are registrants of the namespace (i.e., there is a Registered
Controller data structure for each such controller).

OPTIONS
-------
-n <nsid>::
--namespace-id=<nsid>::
	Retrieve the reservation report structure for the given nsid. This
	is required for the character devices, or overrides the block nsid
	if given.

-d <num-dwords>::
--numd=<num-dwords>::
	Specify the number of Dwords of the Reservation Status structure
	to transfer. Defaults to 4k.

-e::
--eds::
	Request extended Data Structure: If this bit is set to a '1', then the
	controller returns the Extended Data Structure.

-b::
--raw-binary::
	Print the raw buffer to stdout. Structure is not parsed by
	program.

-o <format>::
--output-format=<format>::
              Set the reporting format to 'normal', 'json', or
              'binary'. Only one output format can be used at a time.


EXAMPLES
--------
No examples yet.

NVME
----
Part of the nvme-user suite
  070701015D6AAE000081A4000003E80000006400000001642C0FB5000013A1000000000000004A00000000000000000000002500000000nvme-cli/Documentation/nvme-rpmb.txt  nvme-rpmb(1)
==============

NAME
----
nvme-rpmb - Send RPMB commands to an NVMe device

SYNOPSIS
--------
[verse]
'nvme rpmb' <device> [--cmd=<command> | -c <command>]
		    [--msgfile=<data-file> | -f <data-file>]
		    [--keyfile=<key-file> | -g <key-file>]
		    [--key=<key> | -k <key>]
		    [--msg=<data> | -d <data>]
		    [--address=<offset> | -o <offset>]
		    [--blocks=<512 byte sectors> | -b <sectors> ]
		    [--target=<target-id> | -t <id> ]

DESCRIPTION
-----------
For the NVMe device given, send an nvme rpmb command and provide the results.

The <device> parameter is mandatory and NVMe character device (ex: /dev/nvme0)
must be specified. If the given device supports RPMB targets, command given
with --cmd or -c option shall be sent to the controller. If given NVMe device
doesn't support RPMB targets, a message indicating the same shall be printed
along with controller register values related RPMB.

OPTIONS
-------
-c <command>::
--cmd=<command>::
	RPMB command to be sent to the device. It can be one of the following

	info          - print information regarding supported RPMB targets and
			access and total sizes. No further arguments are required

	program-key   - program 'key' specified with -k option or key read from
			file specified with --keyfile option to the specified
			RPMB target given with --target or -t options. As per 
			spec, this is one time action which can't be undone.

	read-counter  - Read 'write counter' of specified RPMB target. The
			counter value read is printed onto STDOUT

	read-config   - Read 512 bytes of device configuration block data of
			specified RPMB target of the NVMe device. The data read
			is written to input file specified with --msgfile or -f
			option.
	write-config  - Write 512 byes of device configuration block data
			from file specified by --msgfile or -f options to the
			RPMB target specified with --target or -t options.

	read-data     - Supports authenticated data reading from specified
			RPMB target (--target or -t option) at given offset
			specified with --address or -o option, using key
			specified using --keyfile or -k options. --blocks or
			-o option should be given to read the amount of data
			to be read in 512 byte blocks.

	write-data    - Supports authenticated data writing to specified RPMB
			target (--target or -t option) at given offset
			specified with --address or -o option, using key
			specified using --keyfile or -k options. --blocks or
			-o option should be given to indicate amount of data
			to be written in 512 byte blocks.

	For data transfer (read/write) commands, if the specified size is not
	within the total size supported by a target, the request is failed
	nvme-rpmb without sending it to device. RPMB target 0 is used as the
	default target if --target or -t is not specified. 0x0 is used as the
	default address if no -address or -o option is specified, 
	
-t <target>::
--target=<target>::
	RPMB target id. This should be one of the supported RPMB targets as
	reported by 'info' command. If nothing is given, default of 0 is used
	as RPMB target.

-k <key>::
--key=<key>::
-g <key-file>::
--keyfile=<key-file>::
	Authentication key to be used for read/write commands. This should have
	been already programmed by 'program-key' command for given target. Key
	can be specified on command line using --key or -k options. Key can
	also be specified using file argument specified with --keyfile or -g 
	options.

-f <data-file>::
--msgfile=<data-file>::
	Name of the file to be used for data transfer commands (read or write).
	For read command, if an existing file is specified, it will be appended.

-d <data>::
--msg=<data>::
	These options provide the data on the command line itself. 
-o <offset>::
--address=<offset>::
	The address (in 512 byte sector offset from 0) to be used for data 
	transfer commands (read or write) for a specified RPMB target.
-b::
--blocks=<sectors>::
	The size in 512 byte sectors to be used for data transfer commands
	(read or write) for a specified RPMB target.

EXAMPLES
--------
* Print RPMB support information of an NVMe device
+
-----------
# nvme rpmb /dev/nvme0 --cmd=info
-----------
+
* Program 'SecretKey' as authentication key for target 1
+
------------
# nvme rpmb /dev/nvme0 --cmd=program-key -key='SecretKey' --target=1
------------
+
* Read current write counter of RPMB target 0
+
------------
# nvme rpmb /dev/nvme0 --cmd=read-counter --target=0
------------
+
* Read configuration data block of target 2 into config.bin file
+
------------
# nvme rpmb /dev/nvme0 --cmd=read-config --target=2 -f config.bin
------------
+
* Write 200 blocks of (512 bytes) from input.bin onto target 0
+
------------
# nvme rpmb /dev/nvme0 -c write-data -t 0 -f input.bin -b 200 -k 'SecretKey'
------------
+
* Read 200 blocks of (512 bytes) from target 2, at offset 0x100 and save the
* data onto output.bin
+
------------
# nvme rpmb /dev/nvme0 -c read-data -t 2 -f out.bin -b 200 -o 0x100
------------

NVME
----
Part of the nvme-user suite

   070701015D6AB1000081A4000003E80000006400000001642C0FB500000825000000000000004A00000000000000000000002D00000000nvme-cli/Documentation/nvme-sanitize-log.txt  nvme-sanitize-log(1)
====================

NAME
----
nvme-sanitize-log - Send NVMe sanitize-log Command, return result

SYNOPSIS
--------
[verse]
'nvme sanitize-log' <device> [--rae | -r] [--output-format=<fmt> | -o <fmt>]
			     [--human-readable | -H]
			     [--raw-binary | -b]

DESCRIPTION
-----------
Retrieves the NVMe Sanitize log page from an NVMe device and provides the
status of sanitize command.

The <device> parameter is mandatory NVMe character device (ex: /dev/nvme0).

Expected status and description :-

[cols="2*", options="header"]
|===
|Status Code |Description

|0x0000
|NVM subsystem has never been sanitized.

|0x0001
|The most recent sanitize operation completed successfully.

|0x0002
|A sanitize operation is currently in progress.

|0x0003
|The most recent sanitize operation failed.

|0x0100
|Global Data Erased bit
If set to 1 then non-volatile storage in the NVM subsystem has
not been written to:
    a) since being manufactured and the NVM subsystem has never been sanitized; or
    b) since the most recent successful sanitize operation.
If cleared to 0, then non-volatile storage in the NVM subsystem has been written to:
    a) since being manufactured and the NVM subsystem has never been sanitized; or
    b) since the most recent successful sanitize operation of the NVM subsystem.
|===

Sanitize Progress - percentage complete

On success it returns 0, error code otherwise.

OPTIONS
-------
-r::
--rae::
	Retain an Asynchronous Event.

-o <format>::
--output-format=<format>::
              Set the reporting format to 'normal', 'json', or
              'binary'. Only one output format can be used at a time.

-H::
--human-readable::
	This option will parse and format many of the bit fields
	into human-readable formats.

-b::
--raw-binary::
	Print the raw buffer to stdout. Structure is not parsed by
	program. This overrides the vendor specific and human readable options.

EXAMPLES
--------
* Has the program issue Sanitize-log Command :
+
------------
# nvme sanitize-log /dev/nvme0
------------

NVME
----
Part of the nvme-user suite.
   070701015D6AB4000081A4000003E80000006400000001642C0FB500000C92000000000000004A00000000000000000000002900000000nvme-cli/Documentation/nvme-sanitize.txt  nvme-sanitize(1)
================

NAME
----
nvme-sanitize - Send NVMe Sanitize Command, return result

SYNOPSIS
--------
[verse]
'nvme sanitize' <device> [--no-dealloc | -d]
              [--oipbp | -i]
              [--owpass=<overwrite-pass-count> | -n <overwrite-pass-count>]
              [--ause | -u]
              [--sanact=<action> | -a <action>]
              [--ovrpat=<overwrite-pattern> | -p <overwrite-pattern>]
	      [--force]

DESCRIPTION
-----------
For the NVMe device given, sends a Sanitize command and
provides the result.

The <device> parameter is mandatory NVMe character device (ex: /dev/nvme0).

On success it returns 0, error code otherwise.

OPTIONS
-------
-d::
--no-dealloc::
    No Deallocate After Sanitize:
    If set, then the controller shall not deallocate any logical
    blocks as a result of successfully completing the sanitize
    operation. If cleared, then the controller should deallocate
    logical blocks as a result of successfully completing the
    sanitize operation.  This bit shall be ignored if the Sanitize
    Action field is set to 001b (i.e., Exit Failure Mode).

-i::
--oipbp::
    Overwrite Invert Pattern Between Passes:
    If set, then the Overwrite Pattern shall be inverted between
    passes. If cleared, then the overwrite pattern shall not be
    inverted between passes. This bit shall be ignored unless the
    Sanitize Action field is set to 011b (i.e., Overwrite).

-n <overwrite-pass-count>::
--owpass=<overwrite-pass-count>::
    Overwrite Pass Count:
    This field specifies the number of overwrite passes (i.e.,
    how many times the media is to be overwritten) using the data
    from the Overwrite Pattern field of this command. A value of 0
    specifies 16 overwrite passes. This field shall be ignored
    unless the Sanitize Action field is set to 011b (i.e., Overwrite).

-u::
--ause::
    Allow Unrestricted Sanitize Exit:
    If set, then the sanitize operation is performed in unrestricted
    completion mode. If cleared then the sanitize operation is
    performed in restricted completion mode. This bit shall be ignored
    if the Sanitize Action field is set to 001b (i.e., Exit Failure Mode).

-a <action>::
--sanact=<action>::
    Sanitize Action:
+
[]
|=================
|Value|Definition
|0x00| Reserved
|0x01 \| 'exit-failure'| Exit Failure Mode
|0x02 \| 'start-block-erase'| Start a Block Erase sanitize operation
|0x03 \| 'start-overwrite'| Start an Overwrite sanitize operation
|0x04 \| 'start-crypto-erase'| Start a Crypto Erase sanitize operation
|=================

-p <overwrite-pattern>::
--ovrpat=<overwrite-pattern>::
    Overwrite Pattern:
    This field is ignored unless the Sanitize Action field in
    Command Dword 10 is set to 011b (i.e., Overwrite). This field
    specifies a 32-bit pattern that is used for the Overwrite
    sanitize operation.

--force::
    Ignore namespace is currently busy and performed the operation
    even though.

EXAMPLES
--------
* Has the program issue Sanitize Command :
+
------------
# nvme sanitize /dev/nvme0 -a 0x02
# nvme sanitize /dev/nvme0 --sanact=0x01
# nvme sanitize /dev/nvme0 --sanact=start-overwrite

------------

NVME
----
Part of the nvme-user suite.
  070701015D6AB7000081A4000003E80000006400000001642C0FB500000352000000000000004A00000000000000000000004200000000nvme-cli/Documentation/nvme-seagate-clear-fw-activate-history.txt nvme-seagate-clear-fw-activate-history (1)
============================================

NAME
----
nvme-seagate-clear-fw-activate-history - Clear the firmware activation history for a given Seagate device.

SYNOPSIS
--------
[verse]
'nvme seagate clear-fw-activate-history <device> [OPTIONS]'

DESCRIPTION
-----------
This command will only work on Seagate devices supporting this feature.  Not
all commands work across all product families.

The '<device>' may be either an NVMe character device (ex: /dev/nvme0) or an
nvme block device (ex: /dev/nvme0n1).

OPTIONS
-------
-s
--save::
        specifies that the controller shall save the attribute.

EXAMPLES
--------
Clear the FW Activation History for the given Seagate device.

------------
# nvme seagate clear-fw-activate-history /dev/nvme0
------------

NVME
----
Part of the nvme-user suite
  070701015D6ABA000081A4000003E80000006400000001642C0FB500000359000000000000004A00000000000000000000004600000000nvme-cli/Documentation/nvme-seagate-clear-pcie-correctable-errors.txt nvme-seagate-clear-pcie-correctable-errors(1)
=============================================

NAME
----
nvme-seagate-clear-pcie-correctable-errors - Clear Seagate PCIe error statistics

SYNOPSIS
--------
[verse]
'nvme seagate clear-pcie-correctable-errors [<device>]  [OPTIONS]'

DESCRIPTION
-----------

This command will only work on Seagate devices supporting this feature.  Not
all commands work across all product families.

The '<device>' parameter is mandatory and may be either an NVMe character device (ex: /dev/nvme0), or an
nvme block device (ex: /dev/nvme0n1).

OPTIONS
-------
-s::
--save::
        Specifies that the controller shall save the attribute

EXAMPLES
--------
Clears the PCIe error statistics from the device.

------------
# nvme seagate clear-pcie-correctable-errors /dev/nvme0
------------

NVME
----
Part of the nvme-user suite
   070701015D6ABD000081A4000003E80000006400000001642C0FB500000214000000000000004A00000000000000000000004100000000nvme-cli/Documentation/nvme-seagate-cloud-SSD-plugin-version.txt  nvme-seagate-cloud-SSD-plugin-version (1)
=========================================

NAME
----
nvme-seagate-cloud-SSD-plugin-version - Shows OCP Seagate plugin's version information 

SYNOPSIS
--------
[verse]
'nvme seagate cloud-SSD-plugin-version'

DESCRIPTION
-----------
Shows OCP Seagate plugin's version information 

OPTIONS
-------
No Options

EXAMPLES
--------
Get the OCP plugin version of the specific nvme device.

------------
# nvme seagate cloud-SSD-plugin-version
------------

NVME
----
Part of the nvme-user suite
070701015D6AC0000081A4000003E80000006400000001642C0FB50000038D000000000000004A00000000000000000000003600000000nvme-cli/Documentation/nvme-seagate-get-ctrl-tele.txt nvme-seagate-get-ctrl-tele(1)
=============================

NAME
----
nvme-seagate-get-ctrl-tele - Retrieve Seagate Controller-Initiated Telemetry in
either hex-dump (default) or binary format

SYNOPSIS
--------
[verse]
'nvme seagate get-ctrl-tele <device> [OPTIONS]'

DESCRIPTION
-----------
This command will only work on Seagate devices supporting this feature.  Not
all commands work across all product families.

The '<device>'parameter is mandatory and may be either an NVMe character device (ex: /dev/nvme0) or an
nvme block device (ex: /dev/nvme0n1).

OPTIONS
-------
-n <NUM>::
--namespace-id=<NUM>::
        Desired namespace

-b::
--raw-binary::
        Output in raw format

EXAMPLES
--------
Get the controller initiated telemetry log in hexdump or binary format for the specified device.

------------
# nvme seagate get-ctrl-tele /dev/nvme0
------------

NVME
----
Part of the nvme-user suite
   070701015D6AC3000081A4000003E80000006400000001642C0FB50000046A000000000000004A00000000000000000000003600000000nvme-cli/Documentation/nvme-seagate-get-host-tele.txt nvme-seagate-get-host-tele(1)
=============================

NAME
----
nvme-seagate-get-host-tele - Retrieve Seagate Host-Initiated Telemetry in
either hex-dump (default) or binary format

SYNOPSIS
--------
[verse]
'nvme seagate get-host-tele <device> [OPTIONS]'

DESCRIPTION
-----------
This will only work on Seagate devices supporting this feature.  Not all
commands work across all product families.

The '<device>' parameter is mandatory and may be either an NVMe character device (ex: /dev/nvme0) or an
nvme block device (ex: /dev/nvme0n1).

OPTIONS
-------
-n <NUM>::
--namespace-id=<NUM>::
        desired namespace

-i <NUM>::
--log_specific=<NUM>::
        1 - controller shall capture Data representing the internal state of the controller at the time the command is processed.
        0 - controller shall not update the Telemetry Host Initiated Data.

-b::
--raw-binary::
        output in raw format

EXAMPLES
--------
Get the host initiated telemetry log in hexdump or binary format for the specified device.

------------
# nvme seagate get-host-tele /dev/nvme0
------------

NVME
----
Part of the nvme-user suite
  070701015D6AC6000081A4000003E80000006400000001642C0FB5000005D0000000000000004A00000000000000000000002D00000000nvme-cli/Documentation/nvme-seagate-help.txt  nvme-seagate-help(1)
====================

NAME
----
nvme-seagate-help - Shows the Seagate plugin's help information

SYNOPSIS
--------
[verse]
'nvme seagate help'

DESCRIPTION
-----------
Provides the help information for the Seagate plugin.

OPTIONS
-------
No Options

EXAMPLES
--------
Get help information for specific seagate sub-commands.

Seagate vendor specific extensions::

The following are all implemented sub-commands:

        vs-temperature-stats            Retrieve Seagate temperature statistics
        vs-log-page-sup                 Retrieve Seagate Supported Log-pages Information
        vs-smart-add-log                Retrieve Seagate extended-SMART Information
        vs-pcie-stats                   Retrieve Seagate PCIe error statistics
        clear-pcie-correctable-errors   Clear Seagate PCIe error statistics
        get-host-tele                   Retrieve Seagate Host-Initiated Telemetry
        get-ctrl-tele                   Retrieve Seagate Controller-Initiated Telemetry
        vs-internal-log                 Retrieve Seagate Controller-Initiated Telemetry in binary format
        plugin-version                  Shows Seagate plugin's version information
        version                         Shows the program version
        help                            Display this help

See 'nvme seagate help <command>' for more information on a specific command

------------
# nvme seagate help
------------

NVME
----
Part of the nvme-user suite
070701015D6AC9000081A4000003E80000006400000001642C0FB5000001DD000000000000004A00000000000000000000003700000000nvme-cli/Documentation/nvme-seagate-plugin-version.txt    nvme-seagate-plugin-version(1)
==============================

NAME
----
nvme-seagate-plugin-version - Shows Seagate plugin's version information

SYNOPSIS
--------
[verse]
'nvme seagate plugin-version'

DESCRIPTION
-----------
Provides the help information for the Seagate plugin.

OPTIONS
-------
No Options

EXAMPLES
--------
Get the plugin version of the specific nvme device.

------------
# nvme seagate plugin-version
------------

NVME
----
Part of the nvme-user suite
   070701015D6ACC000081A4000003E80000006400000001642C0FB5000001F4000000000000004A00000000000000000000003000000000nvme-cli/Documentation/nvme-seagate-version.txt   nvme-seagate-version(1)
=======================

NAME
----
nvme-seagate-version - Shows the Seagate version information for nvme-cli

SYNOPSIS
--------
[verse]
'nvme seagate version'

DESCRIPTION
-----------
Provides the git version information for the Seagate version for nvme-cli. This is for the nvme-cli tool.

OPTIONS
-------
No Options

EXAMPLES
--------
Get the Seagate version information for nvme-cli.

------------
# nvme seagate version
------------

NVME
----
Part of the nvme-user suite
070701015D6ACF000081A4000003E80000006400000001642C0FB50000038C000000000000004A00000000000000000000003F00000000nvme-cli/Documentation/nvme-seagate-vs-fw-activate-history.txt    nvme-seagate-vs-fw-activate-history (1)
=======================================

NAME
----
nvme-seagate-vs-fw-activate-history - Retrieve Seagate vendor specific
Controller-Initiated Telemetry in binary

SYNOPSIS
--------
[verse]
'nvme seagate vs-fw-activate-history <device> [OPTIONS]'

DESCRIPTION
-----------
This command will only work on Seagate devices supporting this feature.  Not
all commands work across all product families.

The '<device>' may be either an NVMe character device (ex: /dev/nvme0) or an
nvme block device (ex: /dev/nvme0n1).

OPTIONS
-------
-n <NUM>::
--namespace-id=<NUM>::
        Desired namespace

-f <FILE>::
--dump-file=<FILE>::
        Dump file

EXAMPLES
--------
Get the Seagate vendor specific Controller-Initiated telemetry log for the specified device.

------------
# nvme seagate vs-fw-activate-history /dev/nvme0
------------

NVME
----
Part of the nvme-user suite
070701015D6AD2000081A4000003E80000006400000001642C0FB500000382000000000000004A00000000000000000000003800000000nvme-cli/Documentation/nvme-seagate-vs-internal-log.txt   nvme-seagate-vs-internal-log(1)
===============================

NAME
----
nvme-seagate-vs-internal-log - Retrieve Seagate vendor specific
Controller-Initiated Telemetry in binary

SYNOPSIS
--------
[verse]
'nvme seagate vs-internal-log <device> [OPTIONS]'

DESCRIPTION
-----------
This command will only work on Seagate devices supporting this feature.  Not
all commands work across all product families.

The '<device>' parameter is mandatory and may be either an NVMe character device (ex: /dev/nvme0) or an
nvme block device (ex: /dev/nvme0n1).

OPTIONS
-------
-n <NUM>::
--namespace-id=<NUM>::
        Desired namespace

-f <FILE>::
--dump-file=<FILE>::
        Dump file

EXAMPLES
--------
Get the Seagate vendor specific Controller-Initiated telemetry log for the specified device.

------------
# nvme seagate vs-internal-log /dev/nvme0
------------

NVME
----
Part of the nvme-user suite
  070701015D6AD5000081A4000003E80000006400000001642C0FB5000004A5000000000000004A00000000000000000000003800000000nvme-cli/Documentation/nvme-seagate-vs-log-page-sup.txt   nvme-seagate-vs-log-page-sup(1)
===============================

NAME
----
nvme-seagate-vs-log-page-sup - Retrieve Seagate vendor specific Supported
Log-pages Information

SYNOPSIS
--------
[verse]
'nvme seagate vs-log-page-sup <device> [OPTIONS]'

DESCRIPTION
-----------
This command will only work on Seagate devices supporting this feature.  Not
all commands work across all product families.

The '<device>' may be either an NVMe character device (ex: /dev/nvme0) or an
NVMe block device (ex: /dev/nvme0n1).

OPTIONS
-------
-o <FMT>::
--output-format=<FMT>::
        Output in binary format

EXAMPLES
--------
Get the vendor specific log page information for a particular device.

------------
# nvme seagate vs-log-page-sup /dev/nvme0
Output:
Seagate Supported Log-pages count :8
LogPage-Id      LogPage-Name

0x1              ERROR_INFORMATION
0x2              SMART_INFORMATION
0x3              FW_SLOT_INFORMATION
0x5              COMMANDS_SUPPORTED_AND_EFFECTS
0xC8             VS_RECENT_DRIVE_HISTORY
0xC4             VS_EXTENDED_SMART_INFO
0xC5             VS_LIST_SUPPORTED_LOG_PAGE
0xCB             VS_PCIE_ERROR_LOG_PAGE
------------

NVME
----
Part of the nvme-user suite
   070701015D6AD8000081A4000003E80000006400000001642C0FB500000326000000000000004A00000000000000000000003600000000nvme-cli/Documentation/nvme-seagate-vs-pcie-stats.txt nvme-seagate-vs-pcie-stats(1)
=============================

NAME
----
nvme-seagate-vs-pcie-stats - Retrieve Seagate vendor specific PCIe error
statistics

SYNOPSIS
--------
[verse]
'nvme seagate vs-pcie-stats <device> [OPTIONS]'

DESCRIPTION
-----------
This command will only work on Seagate devices supporting this feature.  Not
all commands work across all product families.

The '<device>' parameter is mandatory and it may be either an NVMe character device (ex: /dev/nvme0) or an
nvme block device (ex: /dev/nvme0n1).

OPTIONS
-------
-o <FMT>::
--output-format=<FMT>::
        Output in binary format

EXAMPLES
--------
Get the vendor specific PCIe error statistics for the specified device.

------------
# nvme seagate vs-pcie-stats /dev/nvme0
------------

NVME
----
Part of the nvme-user suite
  070701015D6ADB000081A4000003E80000006400000001642C0FB500000582000000000000004A00000000000000000000003900000000nvme-cli/Documentation/nvme-seagate-vs-smart-add-log.txt  nvme-seagate-vs-smart-add-log(1)
================================

NAME
----
nvme-seagate-vs-smart-add-log - Retrieve Seagate vendor specific extended-SMART
Information

SYNOPSIS
--------
[verse]
'nvme seagate vs-smart-add-log <device> [OPTIONS]'

DESCRIPTION
-----------
For the NVMe device given, sends the Seagate vendor log
request and either saves the result to a file or dumps the content to stdout.

The <device> parameter is mandatory and may be either the NVMe
character device (ex: /dev/nvme0), or a namespace block device (ex:
/dev/nvme0n1).

The log contents may be associated with the controller, in which case the namespace parameter is ignored.

Two logs exist, page 0xC4 (Extended SMART log page) and page 0xCF (DRAM Supercap SMART log page)

This command will only work on Seagate devices supporting this feature.  Not
all commands work across all product families.

OPTIONS
-------
-l <NUM>::
--log=<NUM>::
        Log number, page 0xC4 (Extended SMART log page) and page 0xCF (DRAM
        Supercap SMART log page)

-n <NUM>::
--namespace-id=<NUM>::
        Namespace number

-o <FILE>::
--output-file=<FILE>::
        Output in binary format. Defaults to text-formatted dump to stdout

EXAMPLES
--------
Get the vendor specific extended SMART information for the specified device.

------------
# nvme seagate vs-smart-add-log /dev/nvme0
------------

NVME
----
Part of the nvme-user suite
  070701015D6ADE000081A4000003E80000006400000001642C0FB500000346000000000000004A00000000000000000000003D00000000nvme-cli/Documentation/nvme-seagate-vs-temperature-stats.txt  nvme-seagate-vs-temperature-stats(1)
====================================

NAME
----
nvme-seagate-vs-temperature-stats - Retrieve Seagate vendor specific
temperature statistics

SYNOPSIS
--------
[verse]
'nvme seagate vs-temperature-stats <device> [OPTIONS]'

DESCRIPTION
-----------
This command will only work on Seagate devices supporting this feature.  Not
all commands work across all product families.

The '<device>'parameter is mandatory and it may be either an NVMe character device (ex: /dev/nvme0) or an
nvme block device (ex: /dev/nvme0n1).

OPTIONS
-------
-o <FMT>::
--output-format=<FMT>::
        Output in binary format

EXAMPLES
--------
Get vendor specific temperature statistics for the specified device.

------------
# nvme seagate vs-temperature-stats /dev/nvme0
------------

NVME
----
Part of the nvme-user suite
  070701015D6AE1000081A4000003E80000006400000001642C0FB500000943000000000000004A00000000000000000000002E00000000nvme-cli/Documentation/nvme-security-recv.txt nvme-security-recv(1)
=====================

NAME
----
nvme-security-recv - Security Recv command

SYNOPSIS
--------
[verse]
'nvme security-recv' <device> [--size=<size> | -x <size>]
		    [--secp=<security-protocol> | -p <security-protocol>]
		    [--spsp=<protocol-specific> | -s <protocol-specific>]
		    [--nssf=<nvme-specific> | -N <nvme-specific>]
		    [--al=<allocation-length> | -t <allocation-length>]
		    [--namespace-id=<nsid> | -n <nsid>]
		    [--raw-binary | -b]

DESCRIPTION
-----------
The Security Receive command transfers the status and data result of
one or more Security Send commands that were previously submitted to
the controller.

The association between a Security Receive command and previous Security
Send commands is dependent on the Security Protocol. The format of the
data to be transferred is dependent on the Security Protocol. Refer to
SPC-4 for Security Protocol details.

Each Security Receive command returns the appropriate data corresponding
to a Security Send command as defined by the rules of the Security
Protocol. The Security Receive command data may not be retained if there
is a loss of communication between the controller and host, or if a
controller reset occurs.

OPTIONS
-------
-n <nsid>::
--namespace-id=<nsid>::
	Target a specific namespace for this security command.

-N <nssf>::
--nssf=<nssf>::
	NVMe Security Specific field. If using security protocol EAh
	assigned for NVMe use, the NVMe security specific field indicates
	which reply memory buffer target.

-x <size>::
--size=<size>::
	Size of buffer to allocate. One success it will be printed
	to STDOUT.

-p <security-protocol>::
--secp=<security-protocol>::
	Security Protocol: This field specifies the security protocol
	as defined in SPC-4. The controller shall fail the command with
	Invalid Parameter indicated if a reserved value of the Security
	Protocol is specified.

-s <security-protocol-specific>::
--spsp=<security-protocol-specific>::
	SP Specific: The value of this field is specific to the Security
	Protocol as defined in SPC-4.

-t <allocation-length>::
--al=<allocation-length>::
	Allocation Length: The value of this field is specific to the
	Security Protocol as defined in SPC-4.

-b::
--raw-binary::
	Print the raw buffer to stdout. Defaults to print in hex.

EXAMPLES
--------
No Examples

NVME
----
Part of the nvme-user suite
 070701015D6AE4000081A4000003E80000006400000001642C0FB5000008A5000000000000004A00000000000000000000002E00000000nvme-cli/Documentation/nvme-security-send.txt nvme-security-send(1)
=====================

NAME
----
nvme-security-send - Security Send command

SYNOPSIS
--------
[verse]
'nvme security-send' <device> [--file=<file> | -f <file>]
		    [--secp=<security-protocol> | -p <security-protocol>]
		    [--spsp=<protocol-specific> | -s <protocol-specific>]
		    [--tl=<transfer-length> | -t <transfer-length>]
		    [--nssf=<nvme-specific> | -N <nvme-specific>]
		    [--namespace-id=<nsid> | -n <nsid>]

DESCRIPTION
-----------
The Security Send command is used to transfer security protocol data
to the controller. The data structure transferred to the controller
as part of this command contains security protocol specific commands
to be performed by the controller. The data structure transferred may
also contain data or parameters associated with the security protocol
commands. Status and data that is to be returned to the host for the
security protocol commands submitted by a Security Send command are
retrieved with the Security Receive command.

The association between a Security Send command and subsequent Security
Receive command is Security Protocol field dependent as defined in SPC-4.

OPTIONS
-------
-n <nsid>::
--namespace-id=<nsid>::
	Target a specific namespace for this security command.

-N <nssf>::
--nssf=<nssf>::
	NVMe Security Specific field. If using security protocol EAh
	assigned for NVMe use, the NVMe security specific field indicates
	which reply memory buffer target.

-f <file>::
--file=<file>::
	Path to file used as the security protocol's payload. Required
	argument.

-p <security-protocol>::
--secp=<security-protocol>::
	Security Protocol: This field specifies the security protocol
	as defined in SPC-4. The controller shall fail the command with
	Invalid Parameter indicated if a reserved value of the Security
	Protocol is specified.

-s <security-protocol-specific>::
--spsp=<security-protocol-specific>::
	SP Specific: The value of this field is specific to the Security
	Protocol as defined in SPC-4.

-t <trans-length>::
--tl=<trans-length>::
	Transfer Length: The value of this field is specific to the
	Security Protocol as defined in SPC-4.

EXAMPLES
--------
No Examples

NVME
----
Part of the nvme-user suite
   070701015D6AE7000081A4000003E80000006400000001642C0FB5000006D5000000000000004A00000000000000000000002E00000000nvme-cli/Documentation/nvme-self-test-log.txt nvme-self-test-log(1)
=====================

NAME
----
nvme-self-test-log - Retrieve the log information initiated by device-self-test and display it

SYNOPSIS
--------
[verse]
'nvme self-test'-log <device> [--log-entries=<entries> | -e <entries>]
                    [--output-format=<FMT> | -o <FMT>] 

DESCRIPTION
-----------
Retrieves the log pages from an NVMe device corresponding to the 
requested self-test by the user and provides 20-most recent result 
returned structure.

The <device> parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).

On success, the returned log structure may be returned in one of
several ways depending on the option flags; the structure may parsed by
the program and printed in a readable format or the raw buffer or the 
json format.

By default the log is printed out in the normal readable format.

OPTION
-------
-e <entries>::
--log-entries=<entries>::
	Specifies how many DST log entries the program should request from
	the device. This must be at least one, and shouldn't exceed the
	20 entries. Defaults to 20 DST log entries.

-o <format>::
--output-format=<format>::
              Set the reporting format to 'normal', 'json', or
              'binary'. Only one output format can be used at a time.


EXAMPLES
--------
* Get the self-test-log and print it in a human readable format:
+
------------
# nvme self-test-log /dev/nvme0
------------
+

* Print the raw output to a file:
+
------------
# nvme self-test-log /dev/nvme0 -o "binary"
------------
+

* Get the self-test-log and print it in a json format:
+
------------
# nvme self-test-log /dev/nvme0 -o "json"
------------

NVME
----
Part of the nvme-user suite
   070701015D6AEA000081A4000003E80000006400000001642C0FB5000008AF000000000000004A00000000000000000000002C00000000nvme-cli/Documentation/nvme-set-feature.txt   nvme-set-feature(1)
===================

NAME
----
nvme-set-feature - Sets an NVMe feature, returns applicable results

SYNOPSIS
--------
[verse]
'nvme set-feature' <device> [--namespace-id=<nsid> | -n <nsid>]
			  [--feature-id=<fid> | -f <fid>] [--value=<value> | -v <value>]
			  [--uuid-index=<uuid-index> | -U <uuid_index>]
			  [--data-len=<data-len> | -l <data-len>]
			  [--data=<data-file> | -d <data-file>]
			  [--save| -s]

DESCRIPTION
-----------
Submits an NVMe Set Feature admin command and returns the applicable
results. This may be the feature's value, or may also include a feature
structure if the feature requires it (ex: LBA Range Type).

The <device> parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).

On success, the value sent to the device is displayed

OPTIONS
-------
-n <nsid>::
--namespace-id=<nsid>::
	Sets the feature for the given nsid. This is optional and
	most features do not use this value.

-f <fid>::
--feature-id=<fid>::
	The feature id to send with the command. Value provided should
	be in hex.

-l <data-len>::
--data-len=<data-len>::
	The data length for the buffer submitted for this feature. Most
	known features do not use this value. The exceptions are LBA
	Range Type and host identifier.

-d <data-file>::
--data=<data-file>::
	The data file for the buffer submitted for this feature. Most
	known features do not use this value. The exceptions is LBA
	Range Type and host identifier. This defaults to STDIN so files
	and echo can be piped.

-v <value>::
--value=<value>::
	The value for command dword 11, the value you want to set the
	feature to.

-s::
--save::
	Save the attribute so that it persists through all power states and resets.	

-U <uuid-index>::
--uuid-index=<uuid-index>::
	UUID Index of the feature

EXAMPLES
--------
* Sets the Power State (PS) to 1  in feature id 2:
+
------------
# nvme set-feature /dev/nvme0 -f 2 /dev/nvme0n1 -v 0x1
------------
+

* Sets the host id to the ascii string.
+
------------
# echo "abcdefgh" | nvme set-feature /dev/nvme0 -f 0x81 -l 8
------------
+
nvme set-feature /dev/nvme0 -f 0x81 -l 8 -U 0x1

NVME
----
Part of the nvme-user suite
 070701015D6AED000081A4000003E80000006400000001642C0FB50000023A000000000000004A00000000000000000000002D00000000nvme-cli/Documentation/nvme-set-property.txt  nvme-set-property(1)
====================

NAME
----
nvme-set-property - Writes and shows the defined NVMe controller property 
for NVMe over Fabric

SYNOPSIS
--------
[verse]
'nvme set-property' <device> [--offset=<offset> | -o <offset>]
				[--value=<val> | -v <val>]


DESCRIPTION
-----------
Writes and shows the defined NVMe controller property for NVMe over Fabric.

OPTIONS
-------
-o::
--offset::
       The offset of the property.

-v::
--value:
	The value of the property to be set.

EXAMPLES
--------
No examples (yet).

NVME
----
Part of the nvme-user suite
  070701015D6AF0000081A4000003E80000006400000001642C0FB5000001F7000000000000004A00000000000000000000002D00000000nvme-cli/Documentation/nvme-show-hostnqn.txt  nvme-show-hostnqn(1)
===================

NAME
----
nvme-show-hostnqn - Generate a host NVMe Qualified Name

SYNOPSIS
--------
[verse]
'nvme show-hostnqn'

DESCRIPTION
-----------
Show the host NQN configured for the system.  If @SYSCONFDIR@/nvme/hostnqn is
not present and systemd application-specific machine IDs are available,
this will show the systemd-generated host NQN for the system.

OPTIONS
-------
No options needed

EXAMPLES
--------
nvme show-hostnqn

NVME
----
Part of the nvme-user suite
 070701015D6AF3000081A4000003E80000006400000001642C0FB50000073B000000000000004A00000000000000000000002A00000000nvme-cli/Documentation/nvme-show-regs.txt nvme-id-ns(1)
=============

NAME
----
nvme-show-regs - Reads and shows the defined NVMe controller registers for
NVMe over PCIe or the controller properties for NVMe over Fabrics.

SYNOPSIS
--------
[verse]
'nvme show-regs' <device>	[--human-readable | -H]
				[--output-format=<FMT> | -o <FMT>]

DESCRIPTION
-----------
For the NVMe over PCIe device given, sends an identify namespace command and
provides the result and returned structure.
For the NVMe over Fabrics device given, sends a fabric command and provides
the result and returned structure.

The <device> parameter is mandatory and must be the nvme admin character
device (ex: /dev/nvme0). For NVMe over PCIe, the program uses knowledge of the
sysfs layout to map the device to the pci resource stored there and mmaps the
memory to get access to the registers. For NVMe over Fabrics, the programs
sends a fabric command to get the properties of the target NVMe controller.
Only the supported properties are displayed.

OPTIONS
-------
-H::
--human-readable::
       Display registers or supported properties in human readable format.

-o <format>::
--output-format=<format>::
              Set the reporting format to 'normal', 'json', or
              'binary'. Only one output format can be used at a time.

EXAMPLES
--------
* Show the NVMe over PCIe controller registers or the NVMe over Fabric controller
properties in a binary format:
+
------------
# nvme show-regs /dev/nvme0 -o binary
------------
* Show the NVMe over PCIe controller registers or the NVMe over Fabric controller
properties in a human readable format:
+
------------
# nvme show-regs /dev/nvme0 -H
------------
* Show the NVMe over PCIe controller registers or NVMe-oF controller properties
in a json format:
+
------------
# nvme show-regs /dev/nvme0 -o json
------------

NVME
----
Part of the nvme-user suite
 070701015D6AF6000081A4000003E80000006400000001642C0FB500000336000000000000004A00000000000000000000002E00000000nvme-cli/Documentation/nvme-show-topology.txt nvme-show-topology(1)
=====================

NAME
----
nvme-show-topology - Show topology of all NVMe subsystems

SYNOPSIS
--------
[verse]
'nvme show-topology'

DESCRIPTION
-----------
Show the topology of all NVMe subsystems.

OPTIONS
-------
-o <format>::
--output-format=<format>::
	Set the reporting format to 'normal' or 'json'. Only one output
	format can be used at a time.

-v::
--verbose::
	Increase the information in the output, showing nvme subsystems,
	controllers and namespaces separately and how they're related to each
	other.

-r <order>::
--ranking=<order>::
	Set the ranking orer to 'namespace' (default) or 'ctrl'. This option
	has only an effect for output format 'normal'. The JSON output is
	always 'namespace' ordered.

EXAMPLES
--------
nvme show-topology

NVME
----
Part of the nvme-user suite
  070701015D6AF9000081A4000003E80000006400000001642C0FB5000006D4000000000000004A00000000000000000000002A00000000nvme-cli/Documentation/nvme-smart-log.txt nvme-smart-log(1)
=================

NAME
----
nvme-smart-log - Send NVMe SMART log page request, returns result and log

SYNOPSIS
--------
[verse]
'nvme smart-log' <device> [--namespace-id=<nsid> | -n <nsid>]
			[--raw-binary | -b]
			[--output-format=<fmt> | -o <fmt>]

DESCRIPTION
-----------
Retrieves the NVMe SMART log page from an NVMe device and provides the returned structure.

The <device> parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).

On success, the returned smart log structure may be returned in one of
several ways depending on the option flags; the structure may parsed by
the program and printed in a readable format or the raw buffer may be
printed to stdout for another program to parse.

OPTIONS
-------
-n <nsid>::
--namespace-id=<nsid>::
	Retrieve the SMART log for the given nsid. This is optional
	and its success may depend on the device's capabilities to
	provide this log on a per-namespace basis (see the NVMe Identify
	Controller for this capability). The default nsid to use is
	0xffffffff for the device global SMART log.

-b::
--raw-binary::
	Print the raw SMART log buffer to stdout.

-o <format>::
--output-format=<format>::
              Set the reporting format to 'normal', 'json', or
              'binary'. Only one output format can be used at a time.

EXAMPLES
--------
* Print the SMART log page in a human readable format:
+
------------
# nvme smart-log /dev/nvme0
------------
+

* Print the raw SMART log to a file:
+
------------
# nvme smart-log /dev/nvme0 --raw-binary > smart_log.raw
------------
+
It is probably a bad idea to not redirect stdout when using this mode.

NVME
----
Part of the nvme-user suite
070701015D6AFC000081A4000003E80000006400000001642C0FB5000001DC000000000000004A00000000000000000000003000000000nvme-cli/Documentation/nvme-subsystem-reset.txt   nvme-subsystem-reset(1)
=======================

NAME
----
nvme-subsystem-reset - Reset the nvme subsystem.

SYNOPSIS
--------
[verse]
'nvme subsystem-reset' <device>

DESCRIPTION
-----------
Requests NVMe subsystem reset. The <device> param is mandatory and must
be an NVMe character device (ex: /dev/nvme0).

OPTIONS
-------
None

EXAMPLES
--------
* Resets the subsystem.
+
------------
# nvme subsystem-reset /dev/nvme0
------------

NVME
----
Part of the nvme-user suite
070701015D6AFD000081A4000003E80000006400000001642C0FB50000043C000000000000004A00000000000000000000003900000000nvme-cli/Documentation/nvme-supported-cap-config-log.txt  nvme-supported-cap-config-log(1)
================================

NAME
----
nvme-supported-cap-config-log - Send NVMe Supported Capacity
Configuration List Log pages request, returns result and log.

SYNOPSIS
--------
[verse]
'nvme supported-cap-config-log' <device> [--dom-id | -d ]
                            [--output-format=<fmt> | -o <fmt>]
							[--raw-binary | -b]

DESCRIPTION
-----------
Retrieves the list of Supported Capacity Configuration List
log pages details from an NVMe device and provides
the returned structure.

The <device> parameter is mandatory and should be the NVMe character
device (ex: /dev/nvme0).

On success, the returned Supported Capacity Configuration List log
pages log structure will be printed.

OPTIONS
-------

-o <format>::
--output-format=<format>::
	This option will set the reporting format to normal, json, or binary.
	Only one output format can be used at a time.

-d::
--dom-id::
    To get the domain ID.
-b::
--raw-binary::
	To show raw binary data.

EXAMPLES
--------
No examples provided yet.

NVME
----
Part of the nvme-user suite070701015D6B03000081A4000003E80000006400000001642C0FB5000005C3000000000000004A00000000000000000000002E00000000nvme-cli/Documentation/nvme-telemetry-log.txt nvme-telemetry-log(1)
=====================

NAME
----
nvme-telemetry-log - Retrieves a Telemetry Host-Initiated log page from an NVMe device

SYNOPSIS
--------
[verse]
'nvme telemetry-log' <device> [--output-file=<file> | -o <file>]
		      [--host-generate=<gen> | -g <gen>]

DESCRIPTION
-----------
Retrieves an Telemetry Host-Initiated log page from an NVMe device and provides
the returned structure.

The <device> parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).

On success, the returned log structure will be in raw binary format _only_ with
--output-file option which is mandatory.

OPTIONS
-------
-o <file>::
--output-file=<file>::
	File name to which raw binary data will be saved to.

-g <gen>::
--host-generate=<gen>::
	If set to 1, controller shall capture the Telemetry Host-Initiated data
	representing the internal state of the controller at the time the
	associated Get Log Page command is processed.
	If cleated to 0, controller shall _not_ update this data.

-d <da>::
--data-area=<da>::
	Retrieves the specific data area requested. Valid inputs are 1,2,3,4. If
	this option is not specified, the default value is 3, since data area
	4 may not be supported.

EXAMPLES
--------
* Retrieve Telemetry Host-Initiated data to telemetry_log.bin
+
------------
# nvme telemetry-log /dev/nvme0 --output-file=telemetry_log.bin
------------

NVME
----
Part of the nvme-user suite
 070701015D6B06000081A4000003E80000006400000001642C0FB5000002D4000000000000004A00000000000000000000004600000000nvme-cli/Documentation/nvme-toshiba-clear-pcie-correctable-errors.txt nvme-toshiba-clear-pcie-correctable-errors(1)
=============================================

NAME
----
nvme-toshiba-clear-pcie-correctable-errors - Reset the PCIe correctable errors count to zero.

SYNOPSIS
--------
[verse]
'nvme toshiba clear-pcie-correctable-errors ' <device>


DESCRIPTION
-----------
For the NVMe device given, sends the Toshiba clear PCIe correctable errors
request.

The <device> parameter is mandatory and may be either the NVMe
character device (ex: /dev/nvme0), or a namespace block device (ex:
/dev/nvme0n1). 


EXAMPLES
--------
* Clear the PCIe correctable errors count:
+
------------
# nvme toshiba clear-pcie-correctable-errors /dev/nvme0 
------------

NVME
----
Part of the nvme-user suite
070701015D6B09000081A4000003E80000006400000001642C0FB500000666000000000000004A00000000000000000000003800000000nvme-cli/Documentation/nvme-toshiba-vs-internal-log.txt   nvme-toshiba-vs-internal-log(1)
===============================

NAME
----
nvme-toshiba-vs-internal-log - Retrieve a Toshiba device's vendor specific internal log and either save to file or dump the contents.

SYNOPSIS
--------
[verse]
'nvme toshiba vs-internal-log ' <device>
		[--output-file=<FILE>, -o <FILE>] (optional)
		[--saved-log, -s] (optional)

DESCRIPTION
-----------
For the NVMe device given, sends the Toshiba internal device log
request and either saves the result to a file or dumps the content to stdout.

The <device> parameter is mandatory and may be either the NVMe
character device (ex: /dev/nvme0), or a namespace block device (ex:
/dev/nvme0n1). 

The log is associated with the controller rather than any
namespaces.

Two logs exist, the current log and the previous log.

This will only work on Toshiba devices supporting this feature.

Note: The logs are quite large - typically 100's of MB. This command can take several minutes to complete. 
A progress runner is included when data is written to file and a page count is included in the stdout dump.

OPTIONS
-------


-o <FILE>::
--output-file=<FILE>::
	Output binary file. Defaults to text-formatted dump to stdout


-p::
--prev-log::
	Use previous log contents. Defaults to the current log contents.

EXAMPLES
--------
* Get the current log from the device and dump it to stdout:
+
------------
# nvme toshiba internal-log /dev/nvme0 
------------
+

* Get the previous log from the device and save to a binary file:
+
------------
# nvme toshiba internal-log /dev/nvme0 --output-file=log.bin --prev-log
------------

NVME
----
Part of the nvme-user suite
  070701015D6B0C000081A4000003E80000006400000001642C0FB500000615000000000000004A00000000000000000000003900000000nvme-cli/Documentation/nvme-toshiba-vs-smart-add-log.txt  nvme-toshiba-vs-smart-add-log(1)
================================

NAME
----
nvme-toshiba-vs-smart-add-log - Retrieve a Toshiba device's vendor specific extended SMART log page contents and either save to file or dump the contents.

SYNOPSIS
--------
[verse]
'nvme toshiba vs-smart-add-log ' <device> [--log=<NUM>, -l <NUM>]
		[--namespace-id=<NUM>, -n <NUM>]
		[--output-file=<FILE>, -o <FILE>]


DESCRIPTION
-----------
For the NVMe device given, sends the Toshiba vendor log
request and either saves the result to a file or dumps the content to stdout.

The <device> parameter is mandatory and may be either the NVMe
character device (ex: /dev/nvme0), or a namespace block device (ex:
/dev/nvme0n1). 

The log contents may be associated with the controller, in which case the namespace parameter is ignored.

Two logs exist, page 0xC0 (log page directory) and page 0xCA (vendor log page)

This will only work on Toshiba devices supporting this feature.

OPTIONS
-------

-l <NUM>::
--log=<NUM>::
	Log page: 0xC0 or 0xCA  (defaults to 0xCA)

-n <NUM>::
--namespace-id=<NUM>::

-o <FILE>::
--output-file=<FILE>::
	Output binary file. Defaults to text-formatted dump to stdout



EXAMPLES
--------
* Get the current log from the device and dumps it to stdout:
+
------------
# nvme toshiba vs-smart-add-log /dev/nvme0 
------------
+

* Get the contents of log page 0xC0 from the device and save to a binary file:
+
------------
# nvme toshiba vs-smart-add-log /dev/nvme0 --output-file=log.bin --log=0xC0
------------

NVME
----
Part of the nvme-user suite
   070701015D6B0F000081A4000003E80000006400000001642C0FB5000002F7000000000000004A00000000000000000000003300000000nvme-cli/Documentation/nvme-transcend-badblock.txt    nvme-transcend-badblock(1)
==========================

NAME
----
nvme-transcend-badblock - Retrieve Transcend NVMe device's bad blocks.

SYNOPSIS
--------
[verse]
'nvme transcend badblock' <device> 

DESCRIPTION
-----------
For the NVMe device given, sends the Transcend vendor command and return the bad block of the device.

The <device> parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).

On success, the returned value would print the amount of bad blocks.

OPTIONS
-------
none


EXAMPLES
--------
* Print the Transcend device's bad blocks in a human readable format:
+
------------
# nvme transcend badblock /dev/nvme0
------------

NVME
----
Part of the nvme-user suite
 070701015D6B12000081A4000003E80000006400000001642C0FB50000032A000000000000004A00000000000000000000003600000000nvme-cli/Documentation/nvme-transcend-healthvalue.txt nvme-transcend-healthvalue(1)
=============================

NAME
----
nvme-transcend-healthvalue - Use NVMe SMART table to analyze the health value of Transcend device.

SYNOPSIS
--------
[verse]
'nvme transcend healthvalue' <device>

DESCRIPTION
-----------
Retrieves the NVMe Device SMART log page from the Transcend device and evaluate health status of Transcend device.

The <device> parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).

On success, the returned value would print health percentage value.

OPTIONS
-------
none


EXAMPLES
--------
* Print the Transcend Device health value in a human readable format:
+
------------
# nvme transcend healthvalue /dev/nvme0
------------

NVME
----
Part of the nvme-user suite
  070701015D6B18000081ED000003E80000006400000001642C0FB500000AF0000000000000004A00000000000000000000004100000000nvme-cli/Documentation/nvme-virtium-save-smart-to-vtview-log.txt  nvme-virtium-save-smart-to-vtview-log(1)
========================================

NAME
----
nvme-virtium-save-smart-to-vtview-log - Periodically save smart attributes into a log file (csv format).

SYNOPSIS
--------
[verse]
'nvme virtium save-smart-to-vtview-log' <device> [--run-time=<NUM> | -r <NUM>]
			[--freq=<NUM> | -f <NUM>]
			[--output-file=<FILE> | -o <FILE>]
			[--test-name=<NAME> | -n <NAME>]
			
DESCRIPTION
-----------
This command automates the process of collecting SMART data periodically and
saving the data in a ready-to-analyze format. Each entry is saved 
with timestamp and in csv format. Users can use excel to analyze the data.
Some examples of use cases are collecting SMART data for temperature characterization,
collecting data to calculate endurance, or collecting SMART data during a test
or during normal operation.

The <device> parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).

On success, the command generates a log file, which contains an entry for identify device
(current features & settings) and periodic entries of SMART data. 

This command runs for the time specified by the option <run-time>, and collects SMART data
at the frequency specified by the option <freq>. If the output file name is not specified,
this command will generate a file name that include model string and serial number of the device.

If the test-name option is specified, it will be recorded in the log file and be used as part
of the log file name.

OPTIONS
-------
-r <NUM>::
--run-time=<NUM>::
	(optional) Number of hours to log data (default = 20 hours)

-f <NUM>::
--freq=<NUM>::
	(optional) How often you want to log SMART data
	(0.25 = 15' , 0.5 = 30' , 1 = 1 hour, 2 = 2 hours, etc.). Default = 10 hours.

-o <FILE>::
--output-file=<FILE>::
    (optional) Name of the log file (give it a name that easy for you to remember 
	what the test is). You can leave it blank too, the file name will be generated
	as <model string>-<serial number>-<test name>.txt.

-n <NAME>::
--test-name=<NAME>::
    (optional) Name of the test you are doing. We use this string as part of the name of the log file.
	
	
EXAMPLES
--------
* Temperature characterization:
+
------------
# nvme virtium save-smart-to-vtview-log /dev/yourDevice --run-time=100 --record-frequency=0.25 --test-name=burn-in-at-(-40)
------------
+

* Endurance testing:
+
------------
# nvme virtium save-smart-to-vtview-log /dev/yourDevice --run-time=100 --record-frequency=1 --test-name=Endurance-test-JEDEG-219-workload
------------
+

* Just logging: Default logging is run for 20 hours and log every 10 hours.
+
------------
# nvme virtium save-smart-to-vtview-log /dev/yourDevice
------------

NVME
----
Part of the nvme-user suite
070701015D6B1B000081ED000003E80000006400000001642C0FB500000363000000000000004A00000000000000000000003600000000nvme-cli/Documentation/nvme-virtium-show-identify.txt nvme-virtium-show-identify(1)
=============================

NAME
----
nvme-virtium-show-identify - Show a complete detail of identify device information in json format.

SYNOPSIS
--------
[verse]
'nvme virtium show-identify' <device>
			
DESCRIPTION
-----------
This command prints complete detail of the identify device information. The
details include settings and description of each feature. The descriptions are
based on NVM Express Revision 1.3c specification.

The <device> parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).

On success, the command prints identify device in human readable format. 

OPTIONS
-------
none
	
	
EXAMPLES
--------
* Show Identify Device:
+
------------
# nvme virtium show-identify /dev/nvme0n1
------------

NVME
----
Part of the nvme-user suite
 070701015D6B1E000081A4000003E80000006400000001642C0FB50000079B000000000000004A00000000000000000000002D00000000nvme-cli/Documentation/nvme-wdc-cap-diag.txt  nvme-wdc-cap-diag(1)
====================

NAME
----
nvme-wdc-cap-diag - Retrieve WDC device's diagnostic log and save to file.

SYNOPSIS
--------
[verse]
'nvme wdc cap-diag' <device> [--output-file=<FILE>, -o <FILE>] [--transfer-size=<SIZE>, -s <SIZE>]

DESCRIPTION
-----------

For the NVMe device given, sends the WDC Vendor Unique Capture-Diagnostics
request and saves the result to a file.

The <device> parameter is mandatory NVMe character device (ex: /dev/nvme0).

This will only work on WDC devices supporting this feature.
Results for any other device are undefined.

OPTIONS
-------
-o <FILE>::
--output-file=<FILE>::
	Output file; defaults to device serial number followed by "cap_diag" suffix

-s <SIZE>::
--transfer-size=<SIZE>::
    Transfer size; defaults to 0x10000 (65536 decimal) bytes

EXAMPLES
--------
* Gets the capture diagnostics log from the device and saves to default file in current directory (e.g. STM00019F3F9cap_diag.bin):
+
------------
# nvme wdc cap-diag /dev/nvme0
------------
* Gets the capture diagnostics log from the device and saves to defined file in current directory (e.g. testSTM00019F3F9cap_diag.bin):
+
------------
# nvme wdc cap-diag /dev/nvme0 -o test
------------
* Gets the capture diagnostics log from the device and saves to defined file with pathname (e.g. /tmp/testSTM00019F3F9cap_diag.bin):
+
------------
# nvme wdc cap-diag /dev/nvme0 -o /tmp/test
------------
* Gets the capture diagnostics log from the device transferring the data in 64k chunks and saves to default file in current directory (e.g. STM00019F3F9internal_fw_log.bin):
+
------------
# nvme wdc cap-diag /dev/nvme0 -s 0x10000
------------
* Gets the capture diagnostics log from the device transferring the data in 16k chunks and saves to default file in current directory (e.g. STM00019F3F9internal_fw_log.bin):
+
------------
# nvme wdc cap-diag /dev/nvme0 -s 16384
------------

NVME
----
Part of the nvme-user suite.
 070701015D6B21000081A4000003E80000006400000001642C0FB500000240000000000000004A00000000000000000000003100000000nvme-cli/Documentation/nvme-wdc-capabilities.txt  nvme-wdc-capabilities(1)
========================

NAME
----
nvme-wdc-capabilities - Display WDC plugin command capabilities

SYNOPSIS
--------
[verse]
'nvme wdc capabilities' <device> 

DESCRIPTION
-----------

For the NVMe device given, displays list of commands and support status.

The <device> parameter is mandatory NVMe character device (ex: /dev/nvme0).

On success it returns 0, error code otherwise.

EXAMPLES
--------
* Displays the capabilities for the device:
+
------------
# nvme wdc capabilities /dev/nvme0
------------

NVME
----
Part of the nvme-user suite.
070701015D6B24000081A4000003E80000006400000001642C0FB5000002CE000000000000004A00000000000000000000003600000000nvme-cli/Documentation/nvme-wdc-clear-assert-dump.txt nvme-wdc-clear-assert-dump(1)
=============================

NAME
----
nvme-wdc-clear-assert-dump - Clears the assert dump (if present).

SYNOPSIS
--------
[verse]
'nvme wdc clear-assert-dump' <device>

DESCRIPTION
-----------
For the NVMe device given, sends the wdc vendor unique clear assert
dump command.

The <device> parameter is mandatory and must be the NVMe character
device (ex: /dev/nvme0).

This will only work on WDC devices supporting this feature.
The command will not be executed on devices that don't support it.

OPTIONS
-------
None

EXAMPLES
--------
* Clears the assert dump (if present):
+
------------
# nvme wdc clear-assert-dump /dev/nvme0
------------


NVME
----
Part of the nvme-user suite
  070701015D6B27000081A4000003E80000006400000001642C0FB5000002F5000000000000004A00000000000000000000003E00000000nvme-cli/Documentation/nvme-wdc-clear-fw-activate-history.txt nvme-wdc-clear-fw-activate-history(1)
=====================================

NAME
----
nvme-wdc-clear-fw-activate-history - Clears the firmware activate history table.

SYNOPSIS
--------
[verse]
'nvme wdc clear-fw-activate-history' <device>

DESCRIPTION
-----------
For the NVMe device given, sends the wdc vendor unique clear fw activate
history command.

The <device> parameter is mandatory and must be the NVMe character device (ex: /dev/nvme0).

This will only work on WDC devices supporting this feature.
Results for any other device are undefined.

OPTIONS
-------
None

EXAMPLES
--------
* Clears the firmware activate history table:
+
------------
# nvme wdc clear-fw-activate-history /dev/nvme0
------------


NVME
----
Part of the nvme-user suite
   070701015D6B28000081A4000003E80000006400000001642C0FB50000087C000000000000004A00000000000000000000003200000000nvme-cli/Documentation/nvme-wdc-clear-pcie-corr.1 '\" t
.\"     Title: nvme-wdc-clear-pcie-corr
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 01/08/2019
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-WDC\-CLEAR\-PC" "1" "01/08/2019" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-wdc-clear-pcie-corr \- Clears the pcie correctable errors field returned in the smart\-log\-add command\&.
.SH "SYNOPSIS"
.sp
.nf
\fInvme wdc clear\-pcie\-corr\fR <device>
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, sends the wdc vendor unique clear pcie correctable errors command\&.
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1)\&.
.sp
This will only work on WDC devices supporting this feature\&. Results for any other device are undefined\&.
.SH "OPTIONS"
.sp
None
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Clears the PCIe Correctable Error Count field returned in the smart\-log\-add command:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme wdc clear\-pcie\-corr /dev/nvme0
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite
070701015D6B29000081A4000003E80000006400000001642C0FB500004422000000000000004A00000000000000000000003500000000nvme-cli/Documentation/nvme-wdc-clear-pcie-corr.html  <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 8.6.10" />
<title>nvme-wdc-clear-pcie-corr(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-wdc-clear-pcie-corr(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-wdc-clear-pcie-corr -
   Clears the pcie correctable errors field returned in the smart-log-add command.
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme wdc clear-pcie-corr</em> &lt;device&gt;</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, sends the wdc vendor unique clear pcie
correctable errors command.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe
character device (ex: /dev/nvme0), or a namespace block device (ex:
/dev/nvme0n1).</p></div>
<div class="paragraph"><p>This will only work on WDC devices supporting this feature.
Results for any other device are undefined.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="paragraph"><p>None</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Clears the PCIe Correctable Error Count field returned in the smart-log-add command:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme wdc clear-pcie-corr /dev/nvme0</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2018-01-18 13:54:43 CST
</div>
</div>
</body>
</html>
  070701015D6B2C000081A4000003E80000006400000001642C0FB500000390000000000000004A00000000000000000000004200000000nvme-cli/Documentation/nvme-wdc-clear-pcie-correctable-errors.txt nvme-wdc-clear-pcie-correctable-errors(1)
=========================================

NAME
----
nvme-wdc-clear-pcie-correctable-errors - Clears the pcie correctable errors field returned in the smart-log-add command.

SYNOPSIS
--------
[verse]
'nvme wdc clear-pcie-correctable-errors' <device>

DESCRIPTION
-----------
For the NVMe device given, sends the wdc vendor unique clear pcie
correctable errors command.

The <device> parameter is mandatory and may be either the NVMe
character device (ex: /dev/nvme0), or a namespace block device (ex:
/dev/nvme0n1).

This will only work on WDC devices supporting this feature.
Results for any other device are undefined.

OPTIONS
-------
None

EXAMPLES
--------
* Clears the PCIe Correctable Error Count field returned in the smart-log-add command:
+
------------
# nvme wdc clear-pcie-correctable-errors /dev/nvme0
------------


NVME
----
Part of the nvme-user suite
070701015D6B2F000081A4000003E80000006400000001642C0FB5000002B8000000000000004A00000000000000000000003D00000000nvme-cli/Documentation/nvme-wdc-cloud-SSD-plugin-version.txt  nvme-wdc-cloud-SSD-plugin-version(1)
====================================

NAME
----
nvme-wdc-cloud-SSD-plugin-version - Display WDC plugin Cloud SSD Plugin Version

SYNOPSIS
--------
[verse]
'nvme wdc cloud-SSD-plugin-version' <device> 

DESCRIPTION
-----------

For the NVMe device given, this command displays the current Cloud SSD 
Plugin Version (if supported by the device).

The <device> parameter is mandatory NVMe character device (ex: /dev/nvme0).

On success it returns 0, error code otherwise.

EXAMPLES
--------
* Displays the cloud ssd plugin version for the device:
+
------------
# nvme wdc cloud-SSD-plugin-version /dev/nvme0
------------

NVME
----
Part of the nvme-user suite.
070701015D6B32000081A4000003E80000006400000001642C0FB5000002AF000000000000004A00000000000000000000003B00000000nvme-cli/Documentation/nvme-wdc-cloud-boot-SSD-version.txt    nvme-wdc-cloud-boot-SSD-version(1)
==================================

NAME
----
nvme-wdc-cloud-boot-SSD-version - Display WDC plugin Cloud Boot SSD Version

SYNOPSIS
--------
[verse]
'nvme wdc cloud-boot-SSD-version' <device> 

DESCRIPTION
-----------

For the NVMe device given, this command displays the current Cloud Hyperscale 
Boot Version (if supported by the device).

The <device> parameter is mandatory NVMe character device (ex: /dev/nvme0).

On success it returns 0, error code otherwise.

EXAMPLES
--------
* Displays the cloud boot ssd version for the device:
+
------------
# nvme wdc cloud-boot-SSD-version /dev/nvme0
------------

NVME
----
Part of the nvme-user suite.
 070701015D6B35000081A4000003E80000006400000001642C0FB500000582000000000000004A00000000000000000000003500000000nvme-cli/Documentation/nvme-wdc-drive-essentials.txt  nvme-wdc-drive-essentials(1)
============================

NAME
----
nvme-wdc-drive-essentials - Retrieve WDC device's drive essentials bin files and save to a tar file.

SYNOPSIS
--------
[verse]
'nvme wdc drive-essentials' <device> [--dir-name=<DIRECTORY>, -d <DIRECTORY>] 

DESCRIPTION
-----------

For the NVMe device given, captures the drive essential bin files and saves them into a tar file.  
The tar file will be in the following format:  DRIVE_ESSENTIALS_<Serial Num>_<FW Revision>_<Date>_<Time>.tar.gz 
    e.g. DRIVE_ESSENTIALS_A00FD8CA_1048_20170713_091731.tar.gz

The <device> parameter is mandatory; NVMe character device (ex: /dev/nvme0).

This will only work on WDC devices supporting this feature.
Results for any other device are undefined.

OPTIONS
-------
-d <DIRECTORY>::
--dir-name=<DIRECTORY>::
	Output directory; defaults to current working directory. 

EXAMPLES
--------
* Gets the drive essentials data files from the device and saves the tar file in current directory
  (e.g. DRIVE_ESSENTIALS_A00FD8CA_1048_20170713_091731.tar.gz):
+
------------
# nvme wdc drive-essentials /dev/nvme0 
------------
* Gets the drive essentials data files from the device and saves the tar file to specified directory 
  (e.g. /tmp/DRIVE_ESSENTIALS_A00FD8CA_1048_20170713_091731):
+
------------
# nvme wdc drive-essentials /dev/nvme0 -d /tmp/ 
------------

NVME
----
Part of the nvme-user suite.
  070701015D6B38000081A4000003E80000006400000001642C0FB500000545000000000000004A00000000000000000000002E00000000nvme-cli/Documentation/nvme-wdc-drive-log.txt nvme-wdc-drive-log(1)
=====================

NAME
----
nvme-wdc-drive-log - Retrieve WDC device's drive log and save to file.

SYNOPSIS
--------
[verse]
'nvme wdc drive-log' <device> [--output-file=<FILE>, -o <FILE>]

DESCRIPTION
-----------
For the NVMe device given, sends the wdc vendor unique drive log
request and saves the result to a file.

The <device> parameter is mandatory and may be either the NVMe
character device (ex: /dev/nvme0), or a namespace block device (ex:
/dev/nvme0n1).

This will only work on WDC devices supporting this feature.
Results for any other device are undefined.

OPTIONS
-------
-o <FILE>::
--output-file=<FILE>::
	Output file; defaults to device serial number followed by "drive_log" suffix


EXAMPLES
--------
* Gets the drive log from the device and saves to default file in current directory (e.g. STM00019F3F9drive_log.bin):
+
------------
# nvme wdc drive-log /dev/nvme0
------------
* Gets the drive log from the device and saves to defined file in current directory (e.g. testSTM00019F3F9drive_log.bin):
+
------------
# nvme wdc drive-log /dev/nvme0 -o test
------------
* Gets the drive log from the device and saves to defined file with pathname (e.g. /tmp/testSTM00019F3F9drive_log.bin):
+
------------
# nvme wdc drive-log /dev/nvme0 -o /tmp/test
------------

NVME
----
Part of the nvme-user suite
   070701015D6B3B000081A4000003E80000006400000001642C0FB500000387000000000000004A00000000000000000000003100000000nvme-cli/Documentation/nvme-wdc-drive-resize.txt  nvme-wdc-drive-resize(1)
========================

NAME
----
nvme-wdc-drive-resize - Send NVMe WDC Resize Vendor Unique Command,
return result.

SYNOPSIS
--------
[verse]
'nvme wdc drive-resize' <device> [--size=<sz> | -s <sz>]

DESCRIPTION
-----------
For the NVMe device given, sends a Vendor Unique WDC Resize command.

The <device> parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).

This will only work on WDC devices supporting this feature.
Results for any other device are undefined.

On success it returns 0, error code otherwise.

OPTIONS
-------
-s <sz>::
--size=<sz>::
	The new size (in GB) to resize the drive to.

EXAMPLES
--------
* Has the program issue WDC Resize Vendor Unique Command :
+
------------
# nvme wdc drive-resize /dev/nvme0n1 --size=100
------------

NVME
----
Part of the nvme-user suite.
 070701015D6B3E000081A4000003E80000006400000001642C0FB50000060A000000000000004A00000000000000000000003000000000nvme-cli/Documentation/nvme-wdc-enc-get-log.txt   nvme-wdc-enc-get-log(1)
=======================

NAME
----
nvme-wdc-enc-get-log - Send NVMe WDC enc-get-log Vendor Unique Command, return result.

SYNOPSIS
--------
[verse]
'nvme wdc enc-get-log' <device> [--log-id=<NUM>, -l <NUM>] [--output-file=<FILE>, -o <FILE>] [--transfer-size=<SIZE>, -s <SIZE>]

DESCRIPTION
-----------

For the NVMe device given, send a Vendor Unique WDC enc-get-log command and
output the Enclosure logs.

The <device> parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0).

The --log-id=<NUM>, -l <NUM> parameter is mandatory and may be either 0xd1, 0xd2, 0xd3, 0xd4, 0xe2 and 0xe4.

This will only work on WDC devices supporting this feature.
Results for any other device are undefined.

On success it returns the enclosure log data, error code otherwise.

OPTIONS
-------
-o <FILE>::
--output-file=<FILE>::
    Output file pathname

-s <SIZE>::
--transfer-size=<NUM>::
    Data retrieval transfer size, maximum transfer size should be 0x2000 (decimal 8192)

EXAMPLES
--------
* Gets the enclosure log from the device based on the log id(0xd1) with transfer size(0x2000) and saves to defined file in current directory:
+
------------
# nvme wdc enc-get-log /dev/nvme0 -l 0xd1 -o d1_log.bin -s 0x2000
------------
* Gets the enclosure log from the device based on the log id(0xd2) with default transfer size(0x1000) and saves to defined file in current directory:
+
------------
# nvme wdc enc-get-log /dev/nvme0 -l 0xd2 -o d1_log.bin 
------------

NVME
----
Part of the nvme-user suite.
  070701015D6B41000081A4000003E80000006400000001642C0FB5000005ED000000000000004A00000000000000000000003300000000nvme-cli/Documentation/nvme-wdc-get-crash-dump.txt    nvme-wdc-get-crash-dump(1)
==========================

NAME
----
nvme-wdc-get-crash-dump - Retrieve WDC device's crash dump.

SYNOPSIS
--------
[verse]
'nvme wdc get-crash-dump' <device> [--output-file=<FILE>, -o <FILE>]

DESCRIPTION
-----------
For the NVMe device given, sends the WDC vendor unique crash dump
request and saves the result to file. In current implementation crash dump is
captured if it is present. On success it will save the dump in file with
appropriate suffix. Note that this command will clear the available
dump from the device on success.

The <device> parameter is mandatory NVMe character device (ex: /dev/nvme0).

This will only work on WDC devices supporting this feature.
Results for any other device are undefined.

OPTIONS
-------
-o <FILE>::
--output-file=<FILE>::
	Output file; defaults to device serial number followed by "crash_dump" suffix

EXAMPLES
--------
* Gets the crash dump from the device and saves to default file in current directory (e.g. STM00019F3F9crash_dump.bin):
+
------------
# nvme wdc get-crash-dump /dev/nvme0
------------
* Gets the crash dump from the device and saves to defined file in current directory (e.g. testSTM00019F3F9crash_dump.bin):
+
------------
# nvme wdc get-crash-dump /dev/nvme0 -o test
------------
* Gets the crash dump from the device and saves to defined file with pathname (e.g. /tmp/testSTM00019F3F9crash_dump.bin):
+
------------
# nvme wdc get-crash-dump /dev/nvme0 -o /tmp/test
------------

NVME
----
Part of the nvme-user suite
   070701015D6B44000081A4000003E80000006400000001642C0FB5000004C5000000000000004A00000000000000000000003D00000000nvme-cli/Documentation/nvme-wdc-get-dev-capabilities-log.txt  nvme-wdc-get-dev-capabilities-log(1)
====================================

NAME
----
nvme-wdc-get-dev-capabilities-log - Send NVMe WDC get-dev-capabilities-log 
									plugin command, return parsed log output

SYNOPSIS
--------
[verse]
'nvme wdc get-dev-capabilities-log' <device> [--output-format=<normal|json> 
-o <normal|json>]

DESCRIPTION
-----------
For the NVMe device given, send a WDC plugin get-dev-capabilities-log command
and output the device capabilities log data. The --output-format option will 
format the output as specified.

The <device> parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0).

This will only work on WDC devices supporting this log page.
Results for any other device are undefined.

On success it returns the parsed device capabilities log page data, error
code otherwise.

OPTIONS
-------
-o <format>::
--output-format=<format>::
	Set the reporting format to 'normal', or
	'json'. Only one output format can be used at a time.
	Default is normal.

EXAMPLES
--------
* Has the program issue WDC get-dev-capabilities-log plugin command :
+
------------
# nvme wdc get-dev-capabilities-log /dev/nvme0
------------

NVME
----
Part of the nvme-user suite.
   070701015D6B47000081A4000003E80000006400000001642C0FB500000566000000000000004A00000000000000000000003500000000nvme-cli/Documentation/nvme-wdc-get-drive-status.txt  nvme-wdc-get-drive-status(1)
============================

NAME
----
nvme-wdc-get-drive-status - Send the NVMe WDC get-drive-status command, return result

SYNOPSIS
--------
[verse]
'nvme wdc get-drive-status' <device>

DESCRIPTION
-----------
For the NVMe device given, send the unique WDC get-drive-status command and
provide the additional drive status information.

The <device> parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0).

This will only work on WDC devices supporting this feature.
Results for any other device are undefined.

On success it returns 0, error code otherwise.

Output Explanation
------------------
[cols="2*", frame="topbot", align="center", options="header"]
|===
|Field |Description

|*Percent Life Used.*
|The percentage of drive function used.

|*EOL (End of Life) Status*
|The 3 possible states are :  Normal, Read Only, or End of Life.

|*Assert Dump Status*
|The 2 possible states are :  Present or Not Present.

|*Thermal Throttling Status*
|The 3 possible states are :  Off, On, or Unavailable.

|*Format Corrupt Reason*
|The 3 possible states are :  Not Corrupted, Corrupt due to FW Assert, or Corrupt for Unknown Reason.

|===


EXAMPLES
--------
* Has the program issue WDC get-drive-status command :
+
------------
# nvme wdc get-drive-status /dev/nvme0
------------

NVME
----
Part of the nvme-user suite.
  070701015D6B4A000081A4000003E80000006400000001642C0FB5000004AD000000000000004A00000000000000000000003B00000000nvme-cli/Documentation/nvme-wdc-get-error-recovery-log.txt    nvme-wdc-get-error-recovery-log(1)
==================================

NAME
----
nvme-wdc-get-error-recovery-log - Send NVMe WDC get-error-recovery-log plugin 
								  command, return parsed log output

SYNOPSIS
--------
[verse]
'nvme wdc get-error-recovery-log' <device> [--output-format=<normal|json> 
-o <normal|json>]

DESCRIPTION
-----------
For the NVMe device given, send a WDC plugin get-error-recovery-log command 
and output the error recovery log data. The --output-format option will format
the output as specified.

The <device> parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0).

This will only work on WDC devices supporting this log page.
Results for any other device are undefined.

On success it returns the parsed error recovery log page data, error 
code otherwise.

OPTIONS
-------
-o <format>::
--output-format=<format>::
	Set the reporting format to 'normal', or
	'json'. Only one output format can be used at a time.
	Default is normal.

EXAMPLES
--------
* Has the program issue WDC get-error-recovery-log plugin command :
+
------------
# nvme wdc get-error-recovery-log /dev/nvme0
------------

NVME
----
Part of the nvme-user suite.
   070701015D6B4D000081A4000003E80000006400000001642C0FB5000003D5000000000000004A00000000000000000000003C00000000nvme-cli/Documentation/nvme-wdc-get-latency-monitor-log.txt   nvme-wdc-get-latency-monitor-log(1)
===================================

NAME
----
nvme-wdc-get-latency-monitor-log - Display latency monitor log page data in human readable format

SYNOPSIS
--------
[verse]
'nvme wdc get-latency-monitor-log' <device> [--output-format=<normal|json> -o <normal|json>]

DESCRIPTION
-----------

For the NVMe device given, latency monitor log page data.

The <device> parameter is mandatory NVMe character device (ex: /dev/nvme0).

This will only work on WDC devices supporting this log page.
Results for any other device are undefined.

On success it returns 0, error code otherwise.

OPTIONS
-------
-o <format>::
--output-format=<format>::
	Set the reporting format to 'normal' or 'json'. Only one output format
	can be used at a time. The default is normal.

EXAMPLES
--------
* Displays the get latency monitor log for the device:
+
------------
# nvme wdc get-latency-monitor-log /dev/nvme0
------------

NVME
----
Part of the nvme-user suite.
   070701015D6B50000081A4000003E80000006400000001642C0FB500000617000000000000004A00000000000000000000003300000000nvme-cli/Documentation/nvme-wdc-get-pfail-dump.txt    nvme-wdc-get-pfail-dump(1)
==========================

NAME
----
nvme-wdc-get-pfail-dump - Retrieve WDC device's pfail crash dump.

SYNOPSIS
--------
[verse]
'nvme wdc get-pfail-dump' <device> [--output-file=<FILE>, -o <FILE>]

DESCRIPTION
-----------
For the NVMe device given, sends the WDC vendor unique pfail crash dump
request and saves the result to file. In current implementation pfail crash
dump is captured if it is present. On success it will save the dump in file 
with appropriate suffix. Note that this command will clear the available
dump from the device on success.

The <device> parameter is mandatory NVMe character device (ex: /dev/nvme0).

This will only work on WDC devices supporting this feature.
Results for any other device are undefined.

OPTIONS
-------
-o <FILE>::
--output-file=<FILE>::
	Output file; defaults to device serial number followed by "pfail_dump" suffix

EXAMPLES
--------
* Gets the pfail crash dump from the device and saves to default file in current directory 
(e.g. STM00019F3F9_pfail_dump.bin):
+
------------
# nvme wdc get-pfail-dump /dev/nvme0
------------
* Gets the pfail crash dump from the device and saves to defined file in current directory 
(e.g. testSTM00019F3F9_pfail_dump.bin):
+
------------
# nvme wdc get-pfail-dump /dev/nvme0 -o test
------------
* Gets the pfail crash dump from the device and saves to defined file with pathname (e.g. /tmp/testSTM00019F3F9_pfail_dump.bin):
+
------------
# nvme wdc get-pfail-dump /dev/nvme0 -o /tmp/test
------------

NVME
----
Part of the nvme-user suite
 070701015D6B53000081A4000003E80000006400000001642C0FB5000004D0000000000000004A00000000000000000000003D00000000nvme-cli/Documentation/nvme-wdc-get-unsupported-reqs-log.txt  nvme-wdc-get-unsupported-reqs-log(1)
====================================

NAME
----
nvme-wdc-get-unsupported-reqs-log - Send NVMe WDC get-unsupported-reqs-log 
									plugin command, return parsed log output

SYNOPSIS
--------
[verse]
'nvme wdc get-unsupported-reqs-log' <device> [--output-format=<normal|json> 
-o <normal|json>]

DESCRIPTION
-----------
For the NVMe device given, send a WDC plugin get-unsupported-reqs-log command 
and output the unsupported requirements log data. The --output-format option 
will format the output as specified.

The <device> parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0).

This will only work on WDC devices supporting this log page.
Results for any other device are undefined.

On success it returns the parsed unsupported requirements log page data, error
code otherwise.

OPTIONS
-------
-o <format>::
--output-format=<format>::
	Set the reporting format to 'normal', or
	'json'. Only one output format can be used at a time.
	Default is normal.

EXAMPLES
--------
* Has the program issue WDC get-unsupported-reqs-log plugin command :
+
------------
# nvme wdc get-unsupported-reqs-log /dev/nvme0
------------

NVME
----
Part of the nvme-user suite.
070701015D6B56000081A4000003E80000006400000001642C0FB500000730000000000000004A00000000000000000000002C00000000nvme-cli/Documentation/nvme-wdc-id-ctrl.txt   nvme-wdc-id-ctrl(1)
===================

NAME
----
nvme-wdc-id-ctrl - Send NVMe Identify Controller, return result and structure

SYNOPSIS
--------
[verse]
'nvme wdc id-ctrl' <device> [-v | --vendor-specific] [-b | --raw-binary]
			[-H | --human-readable]
			[-o <fmt> | --output-format=<fmt>]

DESCRIPTION
-----------
For the NVMe device given, sends an identify controller command and
provides the result and returned structure.

The <device> parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).

This will only work on WDC devices supporting this feature.
Results for any other device are undefined.

On success, the structure may be returned in one of several ways depending
on the option flags; the structure may be parsed by the program or the
raw buffer may be printed to stdout.

If having the program decode the output for readability, this version
will decode WDC vendor unique portions of the structure.

OPTIONS
-------
-b::
--raw-binary::
	Print the raw buffer to stdout. Structure is not parsed by
	program. This overrides the vendor specific and human readable options.

-v::
--vendor-specific::
	In addition to parsing known fields, this option will dump
	the vendor specific region of the structure in hex with ascii
	interpretation.

-H::
--human-readable::
	This option will parse and format many of the bit fields
	into human-readable formats.

-o <format>::
--output-format=<format>::
              Set the reporting format to 'normal', 'json', or
              'binary'. Only one output format can be used at a time.

EXAMPLES
--------
* Has the program interpret the returned buffer and display the known
fields in a human readable format:
+
------------
# nvme wdc id-ctrl /dev/nvme0
------------

NVME
----
Part of the nvme-user suite
070701015D6B59000081A4000003E80000006400000001642C0FB500000472000000000000004A00000000000000000000003700000000nvme-cli/Documentation/nvme-wdc-log-page-directory.txt    nvme-wdc-log-page-directory(1)
==============================

NAME
----
nvme-wdc-log-page-directory - Retrieves the list of Log IDs supported by the drive

SYNOPSIS
--------
[verse]
'nvme wdc log-page-directory' <device> [--output-format=<normal|json|binary> -o <normal|json|binary>]

DESCRIPTION
-----------
For the NVMe device given, retrieves the log page directory which contains the list of 
log page IDs supported by the drive.  The --output-format option will format the output as
specified.

The <device> parameter is mandatory and must be the NVMe character device (ex: /dev/nvme0).

This will only work on WDC devices supporting this feature.
Results for any other device are undefined.

On success it returns the log page directory information, error code otherwise.

OPTIONS
-------
-o <format>::
--output-format=<format>::
	Set the reporting format to 'normal', 'json', or 'binary'. Only one output format
	can be used at a time. The default is normal.

EXAMPLES
--------
* WDC log-page-directory example command :
+
------------
# nvme wdc log-page-directory /dev/nvme0
------------

NVME
----
Part of the nvme-user suite.
  070701015D6B5C000081A4000003E80000006400000001642C0FB5000005A8000000000000004A00000000000000000000003500000000nvme-cli/Documentation/nvme-wdc-namespace-resize.txt  nvme-wdc-namespace-resize(1)
============================

NAME
----
nvme-wdc-namespace-resize - Resizes the device's namespace.

SYNOPSIS
--------
[verse]
'nvme wdc namespace-resize' <device> [--nsid=<NAMSPACE ID>, -n <NAMSPACE ID>] [--op_option=<OP OPTION>, -o <OP OPTION>] 

DESCRIPTION
-----------

For the NVMe device given, sends the WDC Vendor Specific Command that modifies the namespace size reported  
by the device.

The <device> parameter is mandatory NVMe character device (ex: /dev/nvme0).

This will only work on WDC devices supporting this feature.
Results for any other device are undefined.

OPTIONS
-------
-n <NAMSPACE ID>::
--namespace-id=<NAMSPACE_ID>::
	Namespace ID; ID of the namespace to resize

-o <OP OPTION>::
--op-option=<OP OPTION>::
    Overprovisioning Option; defaults to 0xF
    
    Valid Values:
    0x1 - 7% of Original TNVMCAP reported value
    0x2 - 28% of Original TNVMCAP reported value
    0x3 - 50% of Original TNVMCAP reported value
    0xF - 0% of Original TNVMCAP reported value (original config)
    All other values - reserved

EXAMPLES
--------
* Resizes namespace 1 to 50% of the original TNVMCAP reported value:
+
------------
# nvme wdc namespace-resize /dev/nvme0 -n 1 -o 3
------------
* Resizes namespace 2 to 7% of the original TNVMCAP reported value:
+
------------
# nvme wdc namespace-resize /dev/nvme0 --namespace-id=2 --op-option=1
------------

NVME
----
Part of the nvme-user suite.
070701015D6B5F000081A4000003E80000006400000001642C0FB5000004CC000000000000004A00000000000000000000003200000000nvme-cli/Documentation/nvme-wdc-purge-monitor.txt nvme-wdc-purge-monitor(1)
=========================

NAME
----
nvme-wdc-purge-monitor - Send NVMe WDC Purge-Monitor Vendor Unique Command, return result

SYNOPSIS
--------
[verse]
'nvme wdc purge-monitor' <device>

DESCRIPTION
-----------
For the NVMe device given, send a Vendor Unique WDC Purge-Monitor command and
provide the status of the purge command.

Expected status and description :-

[cols="2*", options="header"]
|===
|Status Code |Description

|0x00
|Purge State Idle.

|0x01
|Purge State Done.

|0x02
|Purge State Busy.

|0x03
|Purge State Error : Purge operation resulted in error, power cycle required.

|0x04
|Purge State Error : Purge operation interrupted by power cycle or reset.
|===


The <device> parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).

This will only work on WDC devices supporting this feature.
Results for any other device are undefined.

On success it returns 0, error code otherwise.

OPTIONS
-------
No options yet.

EXAMPLES
--------
* Has the program issue WDC Purge-Monitor Vendor Unique Command :
+
------------
# nvme wdc purge-monitor /dev/nvme0
------------

NVME
----
Part of the nvme-user suite.
070701015D6B62000081A4000003E80000006400000001642C0FB50000031F000000000000004A00000000000000000000002A00000000nvme-cli/Documentation/nvme-wdc-purge.txt nvme-wdc-purge(1)
=================

NAME
----
nvme-wdc-purge - Send NVMe WDC Purge Vendor Unique Command, return result

SYNOPSIS
--------
[verse]
'nvme wdc purge' <device>

DESCRIPTION
-----------
For the NVMe device given, sends a Vendor Unique WDC Purge command and
provides the result.

The <device> parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).

This will only work on WDC devices supporting this feature.
Results for any other device are undefined.

On success it returns 0, error code otherwise.

OPTIONS
-------
No options yet.

EXAMPLES
--------
* Has the program issue WDC Purge Vendor Unique Command :
+
------------
# nvme wdc purge /dev/nvme0n1
------------

NVME
----
Part of the nvme-user suite.
 070701015D6B63000081A4000003E80000006400000001642C0FB500003250000000000000004A00000000000000000000003000000000nvme-cli/Documentation/nvme-wdc-smart-add-log.1   '\" t
.\"     Title: nvme-wdc-smart-add-log
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 01/08/2019
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-WDC\-SMART\-AD" "1" "01/08/2019" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-wdc-smart-add-log \- Send NVMe WDC smart\-add\-log Vendor Unique Command, return result
.SH "SYNOPSIS"
.sp
.nf
\fInvme wdc smart\-add\-log\fR <device> [\-\-interval=<NUM>, \-i <NUM>] [\-\-output\-format=<normal|json> \-o <normal|json>]
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, send a Vendor Unique WDC smart\-add\-log command and provide the additional smart log\&. The \-\-interval option will return performance statistics from the specified reporting interval\&.
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0)\&.
.sp
This will only work on WDC devices supporting this feature\&. Results for any other device are undefined\&.
.sp
On success it returns 0, error code otherwise\&.
.SH "OPTIONS"
.PP
\-i <NUM>, \-\-interval=<NUM>
.RS 4
Return the statistics from specific interval, defaults to 14
.RE
.PP
\-o <format>, \-\-output\-format=<format>
.RS 4
Set the reporting format to
\fInormal\fR, or
\fIjson\fR\&. Only one output format can be used at a time\&. Default is normal\&.
.RE
.sp
Valid Interval values and description :\-
.TS
allbox tab(:);
ltB ltB.
T{
Value
T}:T{
Description
T}
.T&
lt lt
lt lt
lt lt
lt lt
lt lt.
T{
.sp
\fB1\fR
T}:T{
.sp
Most recent five (5) minute accumulated set\&.
T}
T{
.sp
\fB2\-12\fR
T}:T{
.sp
Previous five (5) minute accumulated sets\&.
T}
T{
.sp
\fB13\fR
T}:T{
.sp
The accumulated total of sets 1 through 12 that contain the previous hour of accumulated statistics\&.
T}
T{
.sp
\fB14\fR
T}:T{
.sp
The statistical set accumulated since power\-up\&.
T}
T{
.sp
\fB15\fR
T}:T{
.sp
The statistical set accumulated during the entire lifetime of the device\&.
T}
.TE
.sp 1
.SH "CA LOG PAGE DATA OUTPUT EXPLANATION"
.TS
allbox tab(:);
ltB ltB.
T{
Field
T}:T{
Description
T}
.T&
lt lt
lt lt
lt lt
lt lt
lt lt
lt lt
lt lt
lt lt
lt lt
lt lt
lt lt
lt lt
lt lt
lt lt
lt lt
lt lt
lt lt.
T{
.sp
\fBPhysical NAND bytes written\&.\fR
T}:T{
.sp
The number of bytes written to NAND\&. 16 bytes \- hi/lo
T}
T{
.sp
\fBPhysical NAND bytes read\fR
T}:T{
.sp
The number of bytes read from NAND\&. 16 bytes \- hi/lo
T}
T{
.sp
\fBBad NAND Block Count\fR
T}:T{
.sp
Raw and normalized count of the number of NAND blocks that have been retired after the drives manufacturing tests (i\&.e\&. grown back blocks)\&. 2 bytes normalized, 6 bytes raw count
T}
T{
.sp
\fBUncorrectable Read Error Count\fR
T}:T{
.sp
Total count of NAND reads that were not correctable by read retries, all levels of ECC, or XOR (as applicable)\&. 8 bytes
T}
T{
.sp
\fBSoft ECC Error Count\fR
T}:T{
.sp
Total count of NAND reads that were not correctable by read retries, or first\-level ECC\&. 8 bytes
T}
T{
.sp
\fBSSD End to End Detection Count\fR
T}:T{
.sp
A count of the detected errors by the SSD end to end error correction which includes DRAM, SRAM, or other storage element ECC/CRC protection mechanism (not NAND ECC)\&. 4 bytes
T}
T{
.sp
\fBSSD End to End Correction Count\fR
T}:T{
.sp
A count of the corrected errors by the SSD end to end error correction which includes DRAM, SRAM, or other storage element ECC/CRC protection mechanism (not NAND ECC)\&. 4 bytes
T}
T{
.sp
\fBSystem Data % Used\fR
T}:T{
.sp
A normalized cumulative count of the number of erase cycles per block since leaving the factory for the system (FW and metadata) area\&. Starts at 0 and increments\&. 100 indicates that the estimated endurance has been consumed\&.
T}
T{
.sp
\fBUser Data Max Erase Count\fR
T}:T{
.sp
The maximum erase count across all NAND blocks in the drive\&. 4 bytes
T}
T{
.sp
\fBUser Data Min Erase Count\fR
T}:T{
.sp
The minimum erase count across all NAND blocks in the drive\&. 4 bytes
T}
T{
.sp
\fBRefresh Count\fR
T}:T{
.sp
A count of the number of blocks that have been re\-allocated due to background operations only\&. 8 bytes
T}
T{
.sp
\fBProgram Fail Count\fR
T}:T{
.sp
Raw and normalized count of total program failures\&. Normalized count starts at 100 and shows the percent of remaining allowable failures\&. 2 bytes normalized, 6 bytes raw count
T}
T{
.sp
\fBUser Data Erase Fail Count\fR
T}:T{
.sp
Raw and normalized count of total erase failures in the user area\&. Normalized count starts at 100 and shows the percent of remaining allowable failures\&. 2 bytes normalized, 6 bytes raw count
T}
T{
.sp
\fBSystem Area Erase Fail Count\fR
T}:T{
.sp
Raw and normalized count of total erase failures in the system area\&. Normalized count starts at 100 and shows the percent of remaining allowable failures\&. 2 bytes normalized, 6 bytes raw count
T}
T{
.sp
\fBThermal Throttling Status\fR
T}:T{
.sp
The current status of thermal throttling (enabled or disabled)\&. 2 bytes
T}
T{
.sp
\fBThermal Throttling Count\fR
T}:T{
.sp
A count of the number of thermal throttling events\&. 2 bytes
T}
T{
.sp
\fBPCIe Correctable Error Count\fR
T}:T{
.sp
Summation counter of all PCIe correctable errors (Bad TLP, Bad DLLP, Receiver error, Replay timeouts, Replay rollovers)\&. 8 bytes
T}
.TE
.sp 1
.SH "C1 LOG PAGE DATA OUTPUT EXPLANATION"
.TS
allbox tab(:);
ltB ltB.
T{
Field
T}:T{
Description
T}
.T&
lt lt
lt lt
lt lt
lt lt
lt lt
lt lt
lt lt
lt lt
lt lt
lt lt
lt lt
lt lt
lt lt
lt lt
lt lt
lt lt
lt lt
lt lt
lt lt
lt lt
lt lt
lt lt
lt lt
lt lt
lt lt.
T{
.sp
\fBHost Read Commands\fR
T}:T{
.sp
Number of host read commands received during the reporting period\&.
T}
T{
.sp
\fBHost Read Blocks\fR
T}:T{
.sp
Number of 512\-byte blocks requested during the reporting period\&.
T}
T{
.sp
\fBAverage Read Size\fR
T}:T{
.sp
Average Read size is calculated using (Host Read Blocks/Host Read Commands)\&.
T}
T{
.sp
\fBHost Read Cache Hit Commands\fR
T}:T{
.sp
Number of host read commands that serviced entirely from the on\-board read cache during the reporting period\&. No access to the NAND flash memory was required\&. This count is only updated if the entire command was serviced from the cache memory\&.
T}
T{
.sp
\fBHost Read Cache Hit Percentage\fR
T}:T{
.sp
Percentage of host read commands satisfied from the cache\&.
T}
T{
.sp
\fBHost Read Cache Hit Blocks\fR
T}:T{
.sp
Number of 512\-byte blocks of data that have been returned for Host Read Cache Hit Commands during the reporting period\&. This count is only updated with the blocks returned for host read commands that were serviced entirely from cache memory\&.
T}
T{
.sp
\fBAverage Read Cache Hit Size\fR
T}:T{
.sp
Average size of read commands satisfied from the cache\&.
T}
T{
.sp
\fBHost Read Commands Stalled\fR
T}:T{
.sp
Number of host read commands that were stalled due to a lack of resources within the SSD during the reporting period (NAND flash command queue full, low cache page count, cache page contention, etc\&.)\&. Commands are not considered stalled if the only reason for the delay was waiting for the data to be physically read from the NAND flash\&. It is normal to expect this count to equal zero on heavily utilized systems\&.
T}
T{
.sp
\fBHost Read Commands Stalled Percentage\fR
T}:T{
.sp
Percentage of read commands that were stalled\&. If the figure is consistently high, then consideration should be given to spreading the data across multiple SSDs\&.
T}
T{
.sp
\fBHost Write Commands\fR
T}:T{
.sp
Number of host write commands received during the reporting period\&.
T}
T{
.sp
\fBHost Write Blocks\fR
T}:T{
.sp
Number of 512\-byte blocks written during the reporting period\&.
T}
T{
.sp
\fBAverage Write Size\fR
T}:T{
.sp
Average Write size calculated using (Host Write Blocks/Host Write Commands)\&.
T}
T{
.sp
\fBHost Write Odd Start Commands\fR
T}:T{
.sp
Number of host write commands that started on a non\-aligned boundary during the reporting period\&. The size of the boundary alignment is normally 4K; therefore this returns the number of commands that started on a non\-4K aligned boundary\&. The SSD requires slightly more time to process non\-aligned write commands than it does to process aligned write commands\&.
T}
T{
.sp
\fBHost Write Odd Start Commands Percentage\fR
T}:T{
.sp
Percentage of host write commands that started on a non\-aligned boundary\&. If this figure is equal to or near 100%, and the NAND Read Before Write value is also high, then the user should investigate the possibility of offsetting the file system\&. For Microsoft Windows systems, the user can use Diskpart\&. For Unix\-based operating systems, there is normally a method whereby file system partitions can be placed where required\&.
T}
T{
.sp
\fBHost Write Odd End Commands\fR
T}:T{
.sp
Number of host write commands that ended on a non\-aligned boundary during the reporting period\&. The size of the boundary alignment is normally 4K; therefore this returns the number of commands that ended on a non\-4K aligned boundary\&.
T}
T{
.sp
\fBHost Write Odd End Commands Percentage\fR
T}:T{
.sp
Percentage of host write commands that ended on a non\-aligned boundary\&.
T}
T{
.sp
\fBHost Write Commands Stalled\fR
T}:T{
.sp
Number of host write commands that were stalled due to a lack of resources within the SSD during the reporting period\&. The most likely cause is that the write data was being received faster than it could be saved to the NAND flash memory\&. If there was a large volume of read commands being processed simultaneously, then other causes might include the NAND flash command queue being full, low cache page count, or cache page contention, etc\&. It is normal to expect this count to be non\-zero on heavily utilized systems\&.
T}
T{
.sp
\fBHost Write Commands Stalled Percentage\fR
T}:T{
.sp
Percentage of write commands that were stalled\&. If the figure is consistently high, then consideration should be given to spreading the data across multiple SSDs\&.
T}
T{
.sp
\fBNAND Read Commands\fR
T}:T{
.sp
Number of read commands issued to the NAND devices during the reporting period\&. This figure will normally be much higher than the host read commands figure, as the data needed to satisfy a single host read command may be spread across several NAND flash devices\&.
T}
T{
.sp
\fBNAND Read Blocks\fR
T}:T{
.sp
Number of 512\-byte blocks requested from NAND flash devices during the reporting period\&. This figure would normally be about the same as the host read blocks figure
T}
T{
.sp
\fBAverage NAND Read Size\fR
T}:T{
.sp
Average size of NAND read commands\&.
T}
T{
.sp
\fBNAND Write Commands\fR
T}:T{
.sp
Number of write commands issued to the NAND devices during the reporting period\&. There is no real correlation between the number of host write commands issued and the number of NAND Write Commands\&.
T}
T{
.sp
\fBNAND Write Blocks\fR
T}:T{
.sp
Number of 512\-byte blocks written to the NAND flash devices during the reporting period\&. This figure would normally be about the same as the host write blocks figure\&.
T}
T{
.sp
\fBAverage NAND Write Size\fR
T}:T{
.sp
Average size of NAND write commands\&. This figure should never be greater than 128K, as this is the maximum size write that is ever issued to a NAND device\&.
T}
T{
.sp
\fBNAND Read Before Write\fR
T}:T{
.sp
This is the number of read before write operations that were required to process non\-aligned host write commands during the reporting period\&. See Host Write Odd Start Commands and Host Write Odd End Commands\&. NAND Read Before Write operations have a detrimental effect on the overall performance of the device\&.
T}
.TE
.sp 1
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Has the program issue WDC smart\-add\-log Vendor Unique Command with default interval (14) :
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme wdc smart\-add\-log /dev/nvme0
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite\&.
070701015D6B64000081A4000003E80000006400000001642C0FB500008A54000000000000004A00000000000000000000003300000000nvme-cli/Documentation/nvme-wdc-smart-add-log.html    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 8.6.9" />
<title>nvme-wdc-smart-add-log(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-wdc-smart-add-log(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-wdc-smart-add-log -
   Send NVMe WDC smart-add-log Vendor Unique Command, return result
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme wdc smart-add-log</em> &lt;device&gt; [--interval=&lt;NUM&gt;, -i &lt;NUM&gt;] [--output-format=&lt;normal|json&gt; -o &lt;normal|json&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, send a Vendor Unique WDC smart-add-log command and
provide the additional smart log. The --interval option will return performance
statistics from the specified reporting interval.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0).</p></div>
<div class="paragraph"><p>This will only work on WDC devices supporting this feature.
Results for any other device are undefined.</p></div>
<div class="paragraph"><p>On success it returns 0, error code otherwise.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-i &lt;NUM&gt;
</dt>
<dt class="hdlist1">
--interval=&lt;NUM&gt;
</dt>
<dd>
<p>
        Return the statistics from specific interval, defaults to 14
</p>
</dd>
<dt class="hdlist1">
-o &lt;format&gt;
</dt>
<dt class="hdlist1">
--output-format=&lt;format&gt;
</dt>
<dd>
<p>
        Set the reporting format to <em>normal</em>, or
        <em>json</em>. Only one output format can be used at a time.
        Default is normal.
</p>
</dd>
</dl></div>
<div class="paragraph"><p>Valid Interval values and description :-</p></div>
<div class="tableblock">
<table rules="all"
style="margin-left:auto; margin-right:auto;"
width="100%"
frame="hsides"
cellspacing="0" cellpadding="4">
<col width="50%" />
<col width="50%" />
<thead>
<tr>
<th align="left" valign="top">Value </th>
<th align="left" valign="top">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left" valign="top"><p class="table"><strong>1</strong></p></td>
<td align="left" valign="top"><p class="table">Most recent five (5) minute accumulated set.</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table"><strong>2-12</strong></p></td>
<td align="left" valign="top"><p class="table">Previous five (5) minute accumulated sets.</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table"><strong>13</strong></p></td>
<td align="left" valign="top"><p class="table">The accumulated total of sets 1 through 12 that contain the previous hour of
accumulated statistics.</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table"><strong>14</strong></p></td>
<td align="left" valign="top"><p class="table">The statistical set accumulated since power-up.</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table"><strong>15</strong></p></td>
<td align="left" valign="top"><p class="table">The statistical set accumulated during the entire lifetime of the device.</p></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_ca_log_page_data_output_explanation">CA Log Page Data Output Explanation</h2>
<div class="sectionbody">
<div class="tableblock">
<table rules="all"
style="margin-left:auto; margin-right:auto;"
width="100%"
frame="hsides"
cellspacing="0" cellpadding="4">
<col width="50%" />
<col width="50%" />
<thead>
<tr>
<th align="left" valign="top">Field </th>
<th align="left" valign="top">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left" valign="top"><p class="table"><strong>Physical NAND bytes written.</strong></p></td>
<td align="left" valign="top"><p class="table">The number of bytes written to NAND.  16 bytes - hi/lo</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table"><strong>Physical NAND bytes read</strong></p></td>
<td align="left" valign="top"><p class="table">The number of bytes read from NAND.  16 bytes - hi/lo</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table"><strong>Bad NAND Block Count</strong></p></td>
<td align="left" valign="top"><p class="table">Raw and normalized count of the number of NAND blocks that have been
retired after the drives manufacturing tests (i.e. grown back blocks).
2 bytes normalized, 6 bytes raw count</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table"><strong>Uncorrectable Read Error Count</strong></p></td>
<td align="left" valign="top"><p class="table">Total count of NAND reads that were not correctable by read retries, all
levels of ECC, or XOR (as applicable).  8 bytes</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table"><strong>Soft ECC Error Count</strong></p></td>
<td align="left" valign="top"><p class="table">Total count of NAND reads that were not correctable by read retries, or
first-level ECC.  8 bytes</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table"><strong>SSD End to End Detection Count</strong></p></td>
<td align="left" valign="top"><p class="table">A count of the detected errors by the SSD end to end error correction which
includes DRAM, SRAM, or other storage element ECC/CRC protection mechanism (not
NAND ECC).  4 bytes</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table"><strong>SSD End to End Correction Count</strong></p></td>
<td align="left" valign="top"><p class="table">A count of the corrected errors by the SSD end to end error correction which
includes DRAM, SRAM, or other storage element ECC/CRC protection mechanism (not
NAND ECC).  4 bytes</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table"><strong>System Data % Used</strong></p></td>
<td align="left" valign="top"><p class="table">A normalized cumulative count of the number of erase cycles per block since
leaving the factory for the system (FW and metadata) area. Starts at 0 and
increments. 100 indicates that the estimated endurance has been consumed.</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table"><strong>User Data Max Erase Count</strong></p></td>
<td align="left" valign="top"><p class="table">The maximum erase count across all NAND blocks in the drive.  4 bytes</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table"><strong>User Data Min Erase Count</strong></p></td>
<td align="left" valign="top"><p class="table">The minimum erase count across all NAND blocks in the drive.  4 bytes</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table"><strong>Refresh Count</strong></p></td>
<td align="left" valign="top"><p class="table">A count of the number of blocks that have been re-allocated due to
background operations only.  8 bytes</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table"><strong>Program Fail Count</strong></p></td>
<td align="left" valign="top"><p class="table">Raw and normalized count of total program failures. Normalized count
starts at 100 and shows the percent of remaining allowable failures.
2 bytes normalized, 6 bytes raw count</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table"><strong>User Data Erase Fail Count</strong></p></td>
<td align="left" valign="top"><p class="table">Raw and normalized count of total erase failures in the user area.
Normalized count starts at 100 and shows the percent of remaining
allowable failures.  2 bytes normalized, 6 bytes raw count</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table"><strong>System Area Erase Fail Count</strong></p></td>
<td align="left" valign="top"><p class="table">Raw and normalized count of total erase failures in the system area.
Normalized count starts at 100 and shows the percent of remaining
allowable failures.  2 bytes normalized, 6 bytes raw count</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table"><strong>Thermal Throttling Status</strong></p></td>
<td align="left" valign="top"><p class="table">The current status of thermal throttling (enabled or disabled).
2 bytes</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table"><strong>Thermal Throttling Count</strong></p></td>
<td align="left" valign="top"><p class="table">A count of the number of thermal throttling events.  2 bytes</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table"><strong>PCIe Correctable Error Count</strong></p></td>
<td align="left" valign="top"><p class="table">Summation counter of all PCIe correctable errors (Bad TLP, Bad
DLLP, Receiver error, Replay timeouts, Replay rollovers).  8 bytes</p></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_c1_log_page_data_output_explanation">C1 Log Page Data Output Explanation</h2>
<div class="sectionbody">
<div class="tableblock">
<table rules="all"
style="margin-left:auto; margin-right:auto;"
width="100%"
frame="hsides"
cellspacing="0" cellpadding="4">
<col width="50%" />
<col width="50%" />
<thead>
<tr>
<th align="left" valign="top">Field </th>
<th align="left" valign="top">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left" valign="top"><p class="table"><strong>Host Read Commands</strong></p></td>
<td align="left" valign="top"><p class="table">Number of host read commands received during the reporting period.</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table"><strong>Host Read Blocks</strong></p></td>
<td align="left" valign="top"><p class="table">Number of 512-byte blocks requested during the reporting period.</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table"><strong>Average Read Size</strong></p></td>
<td align="left" valign="top"><p class="table">Average Read size is calculated using (Host Read Blocks/Host Read Commands).</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table"><strong>Host Read Cache Hit Commands</strong></p></td>
<td align="left" valign="top"><p class="table">Number of host read commands that serviced entirely from the on-board read
cache during the reporting period. No access to the NAND flash memory was required.
This count is only updated if the entire command was serviced from the cache memory.</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table"><strong>Host Read Cache Hit Percentage</strong></p></td>
<td align="left" valign="top"><p class="table">Percentage of host read commands satisfied from the cache.</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table"><strong>Host Read Cache Hit Blocks</strong></p></td>
<td align="left" valign="top"><p class="table">Number of 512-byte blocks of data that have been returned for Host Read Cache Hit
Commands during the reporting period. This count is only updated with the blocks
returned for host read commands that were serviced entirely from cache memory.</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table"><strong>Average Read Cache Hit Size</strong></p></td>
<td align="left" valign="top"><p class="table">Average size of read commands satisfied from the cache.</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table"><strong>Host Read Commands Stalled</strong></p></td>
<td align="left" valign="top"><p class="table">Number of host read commands that were stalled due to a lack of resources within
the SSD during the reporting period (NAND flash command queue full, low cache page count,
cache page contention, etc.). Commands are not considered stalled if the only reason for
the delay was waiting for the data to be physically read from the NAND flash. It is normal
to expect this count to equal zero on heavily utilized systems.</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table"><strong>Host Read Commands Stalled Percentage</strong></p></td>
<td align="left" valign="top"><p class="table">Percentage of read commands that were stalled. If the figure is consistently high,
then consideration should be given to spreading the data across multiple SSDs.</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table"><strong>Host Write Commands</strong></p></td>
<td align="left" valign="top"><p class="table">Number of host write commands received during the reporting period.</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table"><strong>Host Write Blocks</strong></p></td>
<td align="left" valign="top"><p class="table">Number of 512-byte blocks written during the reporting period.</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table"><strong>Average Write Size</strong></p></td>
<td align="left" valign="top"><p class="table">Average Write size calculated using (Host Write Blocks/Host Write Commands).</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table"><strong>Host Write Odd Start Commands</strong></p></td>
<td align="left" valign="top"><p class="table">Number of host write commands that started on a non-aligned boundary during
the reporting period. The size of the boundary alignment is normally 4K; therefore
this returns the number of commands that started on a non-4K aligned boundary.
The SSD requires slightly more time to process non-aligned write commands than it
does to process aligned write commands.</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table"><strong>Host Write Odd Start Commands Percentage</strong></p></td>
<td align="left" valign="top"><p class="table">Percentage of host write commands that started on a non-aligned boundary. If this
figure is equal to or near 100%, and the NAND Read Before Write value is also high,
then the user should investigate the possibility of offsetting the file system. For
Microsoft Windows systems, the user can use Diskpart. For Unix-based operating systems,
there is normally a method whereby file system partitions can be placed where required.</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table"><strong>Host Write Odd End Commands</strong></p></td>
<td align="left" valign="top"><p class="table">Number of host write commands that ended on a non-aligned boundary during the
reporting period. The size of the boundary alignment is normally 4K; therefore this
returns the number of commands that ended on a non-4K aligned boundary.</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table"><strong>Host Write Odd End Commands Percentage</strong></p></td>
<td align="left" valign="top"><p class="table">Percentage of host write commands that ended on a non-aligned boundary.</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table"><strong>Host Write Commands Stalled</strong></p></td>
<td align="left" valign="top"><p class="table">Number of host write commands that were stalled due to a lack of resources within the
SSD during the reporting period. The most likely cause is that the write data was being
received faster than it could be saved to the NAND flash memory. If there was a large
volume of read commands being processed simultaneously, then other causes might include
the NAND flash command queue being full, low cache page count, or cache page contention, etc.
It is normal to expect this count to be non-zero on heavily utilized systems.</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table"><strong>Host Write Commands Stalled Percentage</strong></p></td>
<td align="left" valign="top"><p class="table">Percentage of write commands that were stalled. If the figure is consistently high, then
consideration should be given to spreading the data across multiple SSDs.</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table"><strong>NAND Read Commands</strong></p></td>
<td align="left" valign="top"><p class="table">Number of read commands issued to the NAND devices during the reporting period.
This figure will normally be much higher than the host read commands figure, as the data
needed to satisfy a single host read command may be spread across several NAND flash devices.</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table"><strong>NAND Read Blocks</strong></p></td>
<td align="left" valign="top"><p class="table">Number of 512-byte blocks requested from NAND flash devices during the reporting period.
This figure would normally be about the same as the host read blocks figure</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table"><strong>Average NAND Read Size</strong></p></td>
<td align="left" valign="top"><p class="table">Average size of NAND read commands.</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table"><strong>NAND Write Commands</strong></p></td>
<td align="left" valign="top"><p class="table">Number of write commands issued to the NAND devices during the reporting period.
There is no real correlation between the number of host write commands issued and the
number of NAND Write Commands.</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table"><strong>NAND Write Blocks</strong></p></td>
<td align="left" valign="top"><p class="table">Number of 512-byte blocks written to the NAND flash devices during the reporting period.
This figure would normally be about the same as the host write blocks figure.</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table"><strong>Average NAND Write Size</strong></p></td>
<td align="left" valign="top"><p class="table">Average size of NAND write commands. This figure should never be greater than 128K, as
this is the maximum size write that is ever issued to a NAND device.</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table"><strong>NAND Read Before Write</strong></p></td>
<td align="left" valign="top"><p class="table">This is the number of read before write operations that were required to process
non-aligned host write commands during the reporting period. See Host Write Odd Start
Commands and Host Write Odd End Commands. NAND Read Before Write operations have
a detrimental effect on the overall performance of the device.</p></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Has the program issue WDC smart-add-log Vendor Unique Command with default interval (14) :
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme wdc smart-add-log /dev/nvme0</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite.</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2018-01-17 20:47:00 KST
</div>
</div>
</body>
</html>
070701015D6B67000081A4000003E80000006400000001642C0FB500000526000000000000004A00000000000000000000003100000000nvme-cli/Documentation/nvme-wdc-vs-cloud-log.txt  nvme-wdc-vs-cloud-log(1)
========================

NAME
----
nvme-wdc-vs-cloud-log - Send NVMe WDC vs-cloud-log Vendor Unique Command, return result

SYNOPSIS
--------
[verse]
'nvme wdc vs-cloud-log' <device> [--output-format=<normal|json> -o <normal|json>]
			[--namespace-id=<nsid> | -n <nsid>]

DESCRIPTION
-----------
For the NVMe device given, send a Vendor Unique WDC vs-cloud-log command and
provide the smart/health log. 

The <device> parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0) or block device (ex: /dev/nvme0n1).

This will only work on WDC devices supporting this feature.
Results for any other device are undefined.

On success it returns 0, error code otherwise.

OPTIONS
-------
-o <format>::
--output-format=<format>::
	Set the reporting format to 'normal', or
	'json'. Only one output format can be used at a time.
	Default is normal.

-n <nsid>::
--namespace-id=<nsid>::
	Sets the command's nsid value to the given nsid. Defaults to
	0xffffffff if not given. This option may not affect anything
	depending on the log page, which may or may not be specific to
	a namespace.

EXAMPLES
--------
* Has the program issue WDC vs-cloud-log Vendor Unique Command :
+
------------
# nvme wdc vs-cloud-log /dev/nvme0
------------

NVME
----
Part of the nvme-user suite.
  070701015D6B6A000081A4000003E80000006400000001642C0FB500000528000000000000004A00000000000000000000003200000000nvme-cli/Documentation/nvme-wdc-vs-device-waf.txt nvme-wdc-vs-device-waf(1)
=========================

NAME
----
nvme-wdc-vs-device-waf - Calculates the device write amplification factor and
prints both TLC and SLC results

SYNOPSIS
--------
[verse]
'nvme wdc vs-device-waf' <device> [--output-format=<normal|json> -o <normal|json>]
			[--namespace-id=<nsid> | -n <nsid>]

DESCRIPTION
-----------
For the NVMe device given, calculates the device TLC and SLC write 
amplification factor.

The <device> parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0) or block device (ex: /dev/nvme0n1).

This will only work on WDC devices supporting this feature.
Results for any other device are undefined.

On success it returns 0, error code otherwise.

OPTIONS
-------
-o <format>::
--output-format=<format>::
	Set the reporting format to 'normal', or
	'json'. Only one output format can be used at a time.
	Default is normal.

-n <nsid>::
--namespace-id=<nsid>::
	Sets the command's nsid value to the given nsid. Defaults to
	0xffffffff if not given. This option may not affect anything
	depending on the log page, which may or may not be specific to
	a namespace.

EXAMPLES
--------
* Has the program issue WDC vs-device-waf plugin Command :
+
------------
# nvme wdc vs-device-waf /dev/nvme0
------------

NVME
----
Part of the nvme-user suite.
070701015D6B6D000081A4000003E80000006400000001642C0FB500000395000000000000004A00000000000000000000003200000000nvme-cli/Documentation/nvme-wdc-vs-drive-info.txt nvme-wdc-vs-drive-info(1)
=========================

NAME
----
nvme-wdc-vs-drive-info - Send the NVMe WDC vs-drive-info command, return result

SYNOPSIS
--------
[verse]
'nvme wdc vs-drive-info' <device>

DESCRIPTION
-----------
For the NVMe device given, send the unique WDC vs-drive-info command and
provide the additional drive information.

The <device> parameter is mandatory and must be the NVMe character 
device (ex: /dev/nvme0).

This will only work on WDC devices supporting this feature.
Results for any other device are undefined.

On success it returns 0, error code otherwise.

Output Explanation
------------------
There are several different fields returned from this command depending
on the drive:

Drive HW Revision

FTL Unit Size

Customer Serial Number

HyperScale Boot Version

TCG Device Ownership


EXAMPLE
--------
# nvme wdc vs-drive-info /dev/nvme0


NVME
----
Part of the nvme-user suite.
   070701015D6B70000081A4000003E80000006400000001642C0FB500000755000000000000004A00000000000000000000003F00000000nvme-cli/Documentation/nvme-wdc-vs-error-reason-identifier.txt    nvme-wdc-vs-error-reason-identifier(1)
======================================

NAME
----
nvme-wdc-vs-error-reason-identifier - Retrieve WDC device's telemetry log error reason identifier field

SYNOPSIS
--------
[verse]
'nvme wdc vs-error-reason-identifier' <device> [--log-id=<NUM>, -i <NUM>] [--file=<FILE>, -o <FILE>]

DESCRIPTION
-----------
For the NVMe device given, retrieve the telemetry log error reason id field for either the host generated or 
controller initiated log.  The controller initiated telemetry log page option must be enabled to retrieve the
error reason id for that log page id.  

The <device> parameter is mandatory and must be the NVMe character device (ex: /dev/nvme0).

This will only work on WDC devices supporting this feature.
Results for any other device are undefined.

On success it returns 0, error code otherwise.

OPTIONS
-------
-i <id>::
--log-id=<id>::
	Specifies the telemetry log id of the error reason identifier to retrieve.  
	Use id 7 for the host generated log page.
	Use id 8 for the controller initiated log page. 
	The default is 7/host generated

-o <FILE>::
--output-file=<FILE>::
	Output file; defaults to "<device serial number>_error_reason_identifier_host_<date>_<time>.bin" for 
	the host generated log or "<device serial number>_error_reason_identifier_ctlr_<date>_<time>.bin" for 
	the controller initiated log. 

EXAMPLES
--------
* Retrieves the host generated error reason identifier field and save it in file host_gen_error_reason_id.bin. 
+
--------
# nvme wdc vs-error-reason-identifier /dev/nvme0 -i 7 -o host_gen_error_reason_id.bin
--------
* Retrieves the controller initiated error reason identifier field and save it in file ctlr_init_error_reason_id.bin. 
+
--------
# nvme wdc vs-error-reason-identifier /dev/nvme0 -i 8 -o ctlr_init_error_reason_id.bin
--------

NVME
----
Part of the nvme-user suite.
   070701015D6B73000081A4000003E80000006400000001642C0FB5000007E4000000000000004A00000000000000000000003B00000000nvme-cli/Documentation/nvme-wdc-vs-fw-activate-history.txt    nvme-wdc-vs-fw-activate-history(1)
==================================

NAME
----
nvme-wdc-vs-fw-activate-history - Execute NVMe WDC vs-fw-activate-history Vendor Unique Command, return result

SYNOPSIS
--------
[verse]
'nvme wdc vs-fw-activate-history' <device> [--output-format=<normal|json> -o <normal|json>]

DESCRIPTION
-----------
For the NVMe device given, read a Vendor Unique WDC log page that returns the firmware activation
history. 

The <device> parameter is mandatory and must be the NVMe character device (ex: /dev/nvme0).

This will only work on WDC devices supporting this feature.
Results for any other device are undefined.

On success it returns 0, error code otherwise.

OPTIONS
-------
-o <format>::
--output-format=<format>::
	Set the reporting format to 'normal', or
	'json'. Only one output format can be used at a time.
	Default is normal.


Firmware Activate History Log Page Data Output Explanation
-----------------------------------------------------------
[cols="2*", frame="topbot", align="center", options="header"]
|===
|Field |Description

|*Entry Number*
|The number of fw activate entry.  The most recent 20 entries will be displayed.

|*Power on Hour*
|The time since the power on in hours:minutes:seconds.

|*Power Cycle Count*
|The power cycle count that the firmware activation occurred.

|*Current Firmware*
|The firmware level currently running on the SSD before the activation took place.

|*New Firmware*
|The new firmware level running on the SSD after the activation took place.

|*Slot Number*
|The slot that the firmware is being activated from.

|*Commit Action Type*
|The commit action type associated with the firmware activation event

|*Result*
|The result of the firmware activation event.  The output shall be in the format:
Pass or Failed + error code
|===

EXAMPLES
--------
* Has the program issue WDC vs-fw-activate-history Vendor Unique Command :
+
------------
# nvme wdc vs-fw-activate-history /dev/nvme0
------------

NVME
----
Part of the nvme-user suite.
070701015D6B76000081A4000003E80000006400000001642C0FB500000517000000000000004A00000000000000000000003200000000nvme-cli/Documentation/nvme-wdc-vs-hw-rev-log.txt nvme-wdc-vs-hw-rev-log(1)
=========================

NAME
----
nvme-wdc-vs-hw-rev-log - Send NVMe WDC vs-hw-rev-log Vendor Unique Command, return result

SYNOPSIS
--------
[verse]
'nvme wdc vs-hw-rev-log' <device> [--output-format=<normal|json> -o <normal|json>]
			[--namespace-id=<nsid> | -n <nsid>]

DESCRIPTION
-----------
For the NVMe device given, retrieves and formats the Vendor Unique WDC hw revision log page.

The <device> parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0) or block device (ex: /dev/nvme0n1).

This will only work on WDC devices supporting this feature.
Results for any other device are undefined.

On success it returns 0, error code otherwise.

OPTIONS
-------
-o <format>::
--output-format=<format>::
	Set the reporting format to 'normal', or
	'json'. Only one output format can be used at a time.
	Default is normal.

-n <nsid>::
--namespace-id=<nsid>::
	Sets the command's nsid value to the given nsid. Defaults to
	0xffffffff if not given. This option may not affect anything
	depending on the log page, which may or may not be specific to
	a namespace.

EXAMPLES
--------
* Has the program issue WDC vs-hw-rev-log plugin Command :
+
------------
# nvme wdc vs-hw-rev-log /dev/nvme0
------------

NVME
----
Part of the nvme-user suite.
 070701015D6B79000081A4000003E80000006400000001642C0FB5000010F8000000000000004A00000000000000000000003400000000nvme-cli/Documentation/nvme-wdc-vs-internal-log.txt   nvme-wdc-vs-internal-log(1)
===========================

NAME
----
nvme-wdc-vs-internal-log - Retrieve WDC device's internal firmware log and save to file.

SYNOPSIS
--------
[verse]
'nvme wdc vs-internal-log' <device> [--output-file=<FILE>, -o <FILE>] [--transfer-size=<SIZE>, -s <SIZE>]
    [--data-area=<DATA AREA>, -d <DATA_AREA>] [--file-size=<FILE SIZE>, -f <FILE SIZE>] [--offset=<OFFSET>, -e <OFFSET>]
    [--type=<TYPE>, -t <type>] [--verbose, -v]

DESCRIPTION
-----------

For the NVMe device given, sends the WDC Vendor Specific Internal Log request and saves
the result to a file.

The <device> parameter is mandatory NVMe character device (ex: /dev/nvme0).

This will only work on WDC devices supporting this feature.
Results for any other device are undefined.

OPTIONS
-------
-o <FILE>::
--output-file=<FILE>::
	Output file; defaults to device serial number followed by "_internal_fw_log_<date>_<time>.bin" suffix

-s <SIZE>::
--transfer-size=<SIZE>::
    Transfer size; defaults to 0x10000 (65536 decimal) bytes

-d <DATA AREA>::
--data-area=<DATA AREA>::
    DUI data area to retrieve.  The DUI data areas from 1 to <DATA AREA> will be retrieved.  This parameter
    is currently only supported on the SN340, SN640, SN730, and SN840 devices.

-f <FILE SIZE>::
--file-size=<FILE SIZE>::
    Specifies the desired size of the data file starting at the passed in offset.  This allows the user to
    retrieve the data in several smaller files of the passed in size.  This parameter is currently only
    supported on the SN340 device.

-e <OFFSET>::
--offset=<OFFSET>::
	Specifies the data offset at which to start retrieving the data.  This parameter is used in combination
	with the file size parameter to retrieve the data in several smaller files.  This parameter is currently
    only supported on the SN340 device.

-t <TYPE>::
--type=<TYPE>::
	Specifies the telemetry type - NONE, HOST, or CONTROLLER.  This parameter is used to get either the host
	generated or controller initiated telemetry log page.  If not specified or none is specified, the command
    will return the default E6 log data.  This parameter is currently only supported on the SN640 and SN840
    devices.

-v <VERBOSE>::
--verbose=<VERBOSE>::
	Provides additional debug messages for certain drives.

EXAMPLES
--------
* Gets the internal firmware log from the device and saves to default file in current directory (e.g. STM00019F3F9_internal_fw_log_20171127_095704.bin):
+
------------
# nvme wdc vs-internal-log /dev/nvme0
------------
* Gets the internal firmware log from the device and saves to defined file in current directory (e.g. test.bin):
+
------------
# nvme wdc vs-internal-log /dev/nvme0 -o test.bin
------------
* Gets the internal firmware log from the device and saves to defined file with pathname (e.g. /tmp/test):
+
------------
# nvme wdc vs-internal-log /dev/nvme0 -o /tmp/test
------------
* Gets the internal firmware log from the device transferring the data in 64k chunks and saves to default file in current directory (e.g. STM00019F3F9_internal_fw_log_20171127_100754.bin):
+
------------
# nvme wdc vs-internal-log /dev/nvme0 -s 0x10000
------------
* Gets the internal firmware log from the device transferring the data in 16k chunks and saves to default file in current directory (e.g. STM00019F3F9_internal_fw_log_20171127_100950.bin):
+
------------
# nvme wdc vs-internal-log /dev/nvme0 -s 16384
------------
* Gets the internal firmware log up to data area 3 from the device in 3 files of 0x1000000 bytes:
+
------------
# nvme wdc vs-internal-log /dev/nvme0 -d 3 -f 0x1000000 -t 0x0000000 -o /tmp/sn340_dui_data_1.bin
# nvme wdc vs-internal-log /dev/nvme0 -d 3 -f 0x1000000 -t 0x1000000 -o /tmp/sn340_dui_data_2.bin
# nvme wdc vs-internal-log /dev/nvme0 -d 3 -f 0x1000000 -t 0x2000000 -o /tmp/sn340_dui_data_3.bin
------------
* Gets the host telemetry log page to data area 3 from the device and stores it in file host-telem-log-da3.bin:
+
------------
# nvme wdc vs-internal-log /dev/nvme1 -t host -o host-telem-log-da3.bin -d 3
------------
* Gets the controller telemetry log page to data area 3 from the device and stores it in file ctlr-telem-log-da3.bin:
+
------------
# nvme wdc vs-internal-log /dev/nvme1 -t controller -o ctlr-telem-log-da3.bin -d 3
------------

NVME
----
Part of the nvme-user suite.
070701015D6B7C000081A4000003E80000006400000001642C0FB500000444000000000000004A00000000000000000000003200000000nvme-cli/Documentation/nvme-wdc-vs-nand-stats.txt nvme-wdc-vs-nand-stats(1)
=========================

NAME
----
nvme-wdc-vs-nand-stats - Send NVMe WDC vs-nand-stats Vendor Unique Command, return result

SYNOPSIS
--------
[verse]
'nvme wdc vs-nand-stats' <device> [--output-format=<normal|json> -o <normal|json>]

DESCRIPTION
-----------
For the NVMe device given, send a Vendor Unique WDC vs-nand-stats command and
output the NAND statistics. The --output-format option will format the output as
specified.

The <device> parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0).

This will only work on WDC devices supporting this feature.
Results for any other device are undefined.

On success it returns the NAND statistics, error code otherwise.

OPTIONS
-------
-o <format>::
--output-format=<format>::
	Set the reporting format to 'normal', or
	'json'. Only one output format can be used at a time.
	Default is normal.

EXAMPLES
--------
* Has the program issue WDC vs-nand-stats Vendor Unique Command :
+
------------
# nvme wdc vs-nand-stats /dev/nvme0
------------

NVME
----
Part of the nvme-user suite.
070701015D6B7F000081A4000003E80000006400000001642C0FB500000B91000000000000004A00000000000000000000003500000000nvme-cli/Documentation/nvme-wdc-vs-smart-add-log.txt  nvme-wdc-vs-smart-add-log(1)
============================

NAME
----
nvme-wdc-vs-smart-add-log - Send NVMe WDC vs-smart-add-log Vendor Unique Command, return result

SYNOPSIS
--------
[verse]
'nvme wdc vs-smart-add-log' <device> [--interval=<NUM>, -i <NUM>] 
			[--output-format=<normal|json> -o <normal|json>]
			[--log-page-version=<NUM>, -l <NUM>] 
			[--log-page-mask=<LIST>, -p <LIST>] 
			[--namespace-id=<nsid> | -n <nsid>]

DESCRIPTION
-----------
For the NVMe device given, send a Vendor Unique WDC vs-smart-add-log command and
provide the additional smart log. 

The <device> parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0) or block device (ex: /dev/nvme0n1).

This will only work on WDC devices supporting this feature.
Results for any other device are undefined.

On success it returns 0, error code otherwise.

OPTIONS
-------
-i <NUM>::
--interval=<NUM>::
	Return the statistics from specific interval, defaults to 14.  This parameter is only valid for the 0xC1 log page
	and ignored for all other log pages.

-o <format>::
--output-format=<format>::
	Set the reporting format to 'normal', or
	'json'. Only one output format can be used at a time.
	Default is normal.

-l <NUM>::
--log-page-version=<NUM>::
    Log Page Version: 0 = vendor, 1 = WDC.  This parameter is only valid for the 0xC0 log page and ignored for all
    other log pages.

-p <LIST>::
--log-page-mask=<LIST>::
    Supply a comma separated list of desired log pages to display.
    The possible values are 0xc0, 0xc1, 0xca, 0xd0.  
    Note: Not all pages are supported on all drives.  
    The default is to display all supported log pages.  

-n <nsid>::
--namespace-id=<nsid>::
	Sets the command's nsid value to the given nsid. Defaults to
	0xffffffff if not given. This option may not affect anything
	depending on the log page, which may or may not be specific to
	a namespace.

Valid Interval values and description :-

[cols="2*", frame="topbot", align="center", options="header"]
|===
|Value |Description

|*1*
|Most recent five (5) minute accumulated set.

|*2-12*
|Previous five (5) minute accumulated sets.

|*13*
|The accumulated total of sets 1 through 12 that contain the previous hour of
accumulated statistics.

|*14*
|The statistical set accumulated since power-up.

|*15*
|The statistical set accumulated during the entire lifetime of the device.
|===


EXAMPLES
--------
* Has the program issue WDC vs-smart-add-log Vendor Unique Command with default interval (14) :
+
------------
# nvme wdc vs-smart-add-log /dev/nvme0
------------
* Has the program issue WDC vs-smart-add-log Vendor Unique Command for just the 0xCA log page :
+
------------
# nvme wdc vs-smart-add-log /dev/nvme0 -p 0xCA
------------
* Has the program issue WDC vs-smart-add-log Vendor Unique Command for 0xC0 and 0xCA log pages :
+
------------
# nvme wdc vs-smart-add-log /dev/nvme0 -p 0xCA,0xC0
------------

NVME
----
Part of the nvme-user suite.
   070701015D6B82000081A4000003E80000006400000001642C0FB500000704000000000000004A00000000000000000000004300000000nvme-cli/Documentation/nvme-wdc-vs-telemetry-controller-option.txt    nvme-wdc-vs-telemetry-controller-option(1)
==========================================

NAME
----
nvme-wdc-vs-telemetry-controller-option - Disable/Enable the controller initiated option of the telemetry log page.

SYNOPSIS
--------
[verse]
'nvme wdc vs-telemetry-controller-option' <device> [--disable, -d] [--enable, -e] 
    [--status, -s] 

DESCRIPTION
-----------

For the NVMe device given, sends the WDC Vendor Specific set feature command to disable, enable or get current status
of the controller initiated option of the telemetry log page.

The <device> parameter is mandatory NVMe character device (ex: /dev/nvme0).

This will only work on WDC devices supporting this feature.
Results for any other device are undefined.

OPTIONS
-------
-d::
--disable::
	Disables the controller initiated option of the telemetry log page.

-e::
--enable::
	Enables the controller initiated option of the telemetry log page.

-s::
--status::
	Returns the current status (enabled or disabled) of the controller initiated option of the telemetry log page.


EXAMPLES
--------
* Disables the controller initiated option of the telemetry log page:
+
------------
# nvme wdc vs-telemetry-controller-option /dev/nvme0 --disable
# nvme wdc vs-telemetry-controller-option /dev/nvme0 -d
------------
* Enables the controller initiated option of the telemetry log page:
+
------------
# nvme wdc vs-telemetry-controller-option /dev/nvme0 --enable
# nvme wdc vs-telemetry-controller-option /dev/nvme0 -e
------------
* Gets the current status (enabled or disabled) of the controller initiated option of the telemetry log page:
+
------------
# nvme wdc vs-telemetry-controller-option /dev/nvme0 --status
# nvme wdc vs-telemetry-controller-option /dev/nvme0 -s
------------

NVME
----
Part of the nvme-user suite.
070701015D6B85000081A4000003E80000006400000001642C0FB5000006C3000000000000004A00000000000000000000003900000000nvme-cli/Documentation/nvme-wdc-vs-temperature-stats.txt  nvme-wdc-vs-temperature-stats(1)
================================

NAME
----
nvme-wdc-vs-temperature-stats - Display temperature-related statistics

SYNOPSIS
--------
[verse]
'nvme wdc vs-temperature-stats' <device> 

DESCRIPTION
-----------

For the NVMe device given, displays temperature statistics.

The <device> parameter is mandatory NVMe character device (ex: /dev/nvme0).

This will only work on WDC devices supporting this feature.
Results for any other device are undefined.

Expected status and description :-

[cols="2*", options="header"]
|===
|Statistic |Description

|The current composite temperature
|device temperature

|Warning Composite TEMPerature threshold
|temp of overheating

|Critical Composite TEMPerature threshold
|temp of critical overheating

|Device Initiated Thermal Throttling support status
|0 = unsupported, 1 = supported

|Host Controlled Thermal Management support
|0 = unsupported, 1 = supported

|Thermal Management Temperature 1 (Light throttle)
|temp to start light throttle

|Thermal Management Temperature 1 Transition Counter
|# times switched into light throttle

|Thermal Management Temperature 1 Total Time
|# seconds spent in light throttle

|Thermal Management Temperature 2 (Heavy throttle)
|temp to start heavy throttle

|Thermal Management Temperature 2 Transition Counter
|# times switched into heavy throttle

|Thermal Management Temperature 2 Total Time
|# seconds spent in heavy throttle

|Thermal Shutdown Threshold
|temp of device shutdown
|===

On success it returns 0, error code otherwise.

EXAMPLES
--------
* Displays the temperature stats for the device:
+
------------
# nvme wdc vs-temperature-stats /dev/nvme0
------------

NVME
----
Part of the nvme-user suite.
 070701015D6B88000081A4000003E80000006400000001642C0FB500000310000000000000004A00000000000000000000002C00000000nvme-cli/Documentation/nvme-write-uncor.txt   nvme-uncor(1)
=============

NAME
----
nvme-write-uncor - Send an NVMe write uncorrectable command, return results

SYNOPSIS
--------
[verse]
'nvme-write-uncor' <device> [--start-block=<slba> | -s <slba>]
			[--block-count=<nlb> | -c <nlb>]
			[--namespace-id=<nsid> | -n <nsid>]
			[--force]

DESCRIPTION
-----------
The Write Uncorrectable command is used to invalidate a range of logical
blocks.

OPTIONS
-------
--start-block=<slba>::
-s <slba>::
	Start block.

--block-count=<nlb>::
-c::
	Number of logical blocks to write uncorrectable.

--namespace-id=<nsid>::
-n <nsid>::
	Namespace ID use in the command.

--force::
    Ignore namespace is currently busy and performed the operation
    even though.

EXAMPLES
--------
No examples yet.

NVME
----
Part of the nvme-user suite
070701015D6B8B000081A4000003E80000006400000001642C0FB50000096B000000000000004A00000000000000000000002D00000000nvme-cli/Documentation/nvme-write-zeroes.txt  nvme-write-zeroes(1)
====================

NAME
----
nvme-write-zeroes - Send an NVMe write zeroes command, return results

SYNOPSIS
--------
[verse]
'nvme-write-zeroes' <device> [--start-block=<slba> | -s <slba>]
			[--block-count=<nlb> | -c <nlb>]
			[--ref-tag=<reftag> | -r <reftag>]
			[--prinfo=<prinfo> | -p <prinfo>]
			[--app-tag-mask=<appmask> | -m <appmask>]
			[--app-tag=<apptag> | -a <apptag>]
			[--deac | -d]
			[--limited-retry | -l]
			[--force-unit-access | -f]
			[--namespace-id=<nsid> | -n <nsid>]
			[--storage-tag<storage-tag> | -S <storage-tag>]
			[--storage-tag-check<storage-tag-check> | -C <storage-tag-check>]
			[--force]

DESCRIPTION
-----------
The Write Zeroes command is used to set a range of logical blocks to 0.

OPTIONS
-------
--start-block=<slba>::
-s <slba>::
	Start block.

--block-count=<nlb>::
-c <nlb>::
	Number of logical blocks to write zeroes.

--prinfo=<prinfo>::
-p <prinfo>::
	Protection Information field definition.
+
[]
|=================
|Bit|Description
|3|PRACT: Protection Information Action. When set to 1, PI is stripped/inserted
on read/write when the block format's metadata size is 8. When set to 0,
metadata is passes.
|2:0|PRCHK: Protection Information Check:
|2|Set to 1 enables checking the guard tag
|1|Set to 1 enables checking the application tag
|0|Set to 1 enables checking the reference tag
|=================

--ref-tag=<reftag>::
-r <reftag>::
	Optional reftag when used with protection information.

--app-tag-mask=<appmask>::
-m <appmask>::
	Optional application tag mask when used with protection information.

--app-tag=<apptag>::
-a <apptag>::
	Optional application tag when used with protection information.

--limited-retry::
-l::
	Sets the limited retry flag.

--deac::
-d::
	Sets the DEAC bit, requesting controller deallocate the logical blocks.

--force-unit-access::
-f::
	Set the force-unit access flag.

--namespace-id=<nsid>::
-n <nsid>::
	Namespace ID use in the command.

--storage-tag=<storage-tag>::
-S <storage-tag>::
	Variable Sized Logical Block Storage Tag(LBST).

--storage-tag-check=<storage-tag-check>::
-C <storage-tag-check>::
	This bit specifies the Storage Tag field shall be checked as part of end-to-end
	data protection processing.

--force::
    Ignore namespace is currently busy and performed the operation
    even though.

EXAMPLES
--------
No examples yet.

NVME
----
Part of the nvme-user suite
 070701015D6B91000081A4000003E80000006400000001642C0FB5000004BE000000000000004A00000000000000000000003600000000nvme-cli/Documentation/nvme-zns-changed-zone-list.txt nvme-zns-changed-zone-list(1)
=============================

NAME
----
nvme-zns-changed-zone-list - Retrieve Changed Zone log for the given device

SYNOPSIS
--------
[verse]
'nvme zns changed-zone-list' <device> [-o <fmt> | --output-format=<fmt>]
				      [--namespace-id=<NUM> | -n <NUM>]
				      [--rae | -r]

DESCRIPTION
-----------
For the NVMe device given, requests the namespace's changed zoned list log
and provides the result and returned structure.

The <device> parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).

On success, the returned list may be decoded and displayed in one of several
ways.

OPTIONS
-------
-o <format>::
--output-format=<format>::
              Set the reporting format to 'normal', 'json', or
              'binary'. Only one output format can be used at a time.

-r::
--rae::
	Retain an Asynchronous Event.

EXAMPLES
--------
* Get the changed zone list log for namespace 1
+
------------
# nvme zns changed-zone-list /dev/nvme0 -n 1
------------
+

* Show the output in json format
+
------------
# nvme zns changed-zone-list /dev/nvme0 -o json -n 1
------------

NVME
----
Part of nvme-cli
  070701015D6B94000081A4000003E80000006400000001642C0FB5000004CF000000000000004A00000000000000000000002F00000000nvme-cli/Documentation/nvme-zns-close-zone.txt    nvme-zns-close-zone(1)
======================

NAME
----
nvme-zns-close-zone - Closes one or all zones

SYNOPSIS
--------
[verse]
'nvme zns close-zone' <device> [--namespace-id=<NUM> | -n <NUM>]
						[--start-lba=<LBA> | -s <LBA>]
						[--select-all | -a]
						[--timeout=<timeout> | -t <timeout>]

DESCRIPTION
-----------
For the NVMe device given, issues the Zone Management Send command with the
"Close Zone" action. This will transition the zone to the closed state.

The <device> parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).

OPTIONS
-------
-n <NUM>::
--namespace-id=<NUM>::
	Use the provided namespace id for the command. If not provided, the
	namespace id of the block device will be used. If the command is issued
	to a non-block device, the parameter is required.

-s <lba>::
--start-lba=<lba>::
	The starting LBA of the zone to close. 

-a::
--select-all::
	Select all zones for this action

-t <timeout>::
--timeout=<timeout>::
	Override default timeout value. In milliseconds.

EXAMPLES
--------
* Close all zones on namespace 1:
+
------------
# nvme zns close-zone /dev/nvme0 -a -n 1
------------

NVME
----
Part of nvme-cli
 070701015D6B97000081A4000003E80000006400000001642C0FB5000004E3000000000000004A00000000000000000000003000000000nvme-cli/Documentation/nvme-zns-finish-zone.txt   nvme-zns-finish-zone(1)
=======================

NAME
----
nvme-zns-finish-zone - Finishes one or all zones

SYNOPSIS
--------
[verse]
'nvme zns finish-zone' <device> [--namespace-id=<NUM> | -n <NUM>]
						[--start-lba=<LBA> | -s <LBA>]
						[--select-all | -a]
						[--timeout=<timeout> | -t <timeout>]

DESCRIPTION
-----------
For the NVMe device given, issues the Zone Management Send command with the
"Finish Zone" action. This will transition the zone to the full state on
success.

The <device> parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).

OPTIONS
-------
-n <NUM>::
--namespace-id=<NUM>::
	Use the provided namespace id for the command. If not provided, the
	namespace id of the block device will be used. If the command is issued
	to a non-block device, the parameter is required.

-s <lba>::
--start-lba=<lba>::
	The starting LBA of the zone to finish. 

-a::
--select-all::
	Select all zones for this action.

-t <timeout>::
--timeout=<timeout>::
	Override default timeout value. In milliseconds.

EXAMPLES
--------
* Finish all zones on namespace 1:
+
------------
# nvme zns finish-zone /dev/nvme0 -a -n 1
------------

NVME
----
Part of nvme-cli
 070701015D6B9A000081A4000003E80000006400000001642C0FB500000496000000000000004A00000000000000000000002C00000000nvme-cli/Documentation/nvme-zns-id-ctrl.txt   nvme-zns-id-ctrl(1)
===================

NAME
----
nvme-zns-id-ctrl - Send NVMe Zoned Command Set Identify Controller, return
                   result and structure

SYNOPSIS
--------
[verse]
'nvme zns id-ctrl' <device> [-o <fmt> | --output-format=<fmt>]

DESCRIPTION
-----------
For the NVMe device given, sends the zoned command set's identify controller
command and provides the result and returned structure.

The <device> parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).

On success, the data structure returned by the device will be decoded and
displayed in one of several ways. 

OPTIONS
-------
-o <format>::
--output-format=<format>::
              Set the reporting format to 'normal', 'json', or
              'binary'. Only one output format can be used at a time.

EXAMPLES
--------
* Has the program interpret the returned buffer and display the known
fields in a human readable format:
+
------------
# nvme zns id-ctrl /dev/nvme0
------------
+

* Show the output in json format
+
------------
# nvme zns id-ctrl /dev/nvme0 -o json
------------

NVME
----
Part of nvme-cli
  070701015D6B9D000081A4000003E80000006400000001642C0FB50000060D000000000000004A00000000000000000000002A00000000nvme-cli/Documentation/nvme-zns-id-ns.txt nvme-zns-id-ns(1)
=================

NAME
----
nvme-zns-id-ns - Send NVMe Zoned Command Set Identify namespace, return
                   result and structure

SYNOPSIS
--------
[verse]
'nvme zns id-ns' <device>  [--namespace-id=<NUM> | -n <NUM>]
			     [-o <fmt> | --output-format=<fmt>]
			     [-v | --verbose]

DESCRIPTION
-----------
For the NVMe device given, sends the zoned command set's identify namespace
command and provides the result and returned structure.

The <device> parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).

On success, the data structure returned by the device will be decoded and
displayed in one of several ways. 

OPTIONS
-------
-n <NUM>::
--namespace-id=<NUM>::
	Use the provided namespace id for the command. If not provided, the
	namespace id of the block device will be used. If the command is issued
	to a non-block device, the parameter is required.

-v::
--verbose::
	Increase the information detail in the output.

-o <format>::
--output-format=<format>::
              Set the reporting format to 'normal', 'json', or
              'binary'. Only one output format can be used at a time.

EXAMPLES
--------
* Has the program interpret the returned buffer and display the known
fields in a human readable format:
+
------------
# nvme zns id-ns /dev/nvme0 -n 1
------------
+

* Show the output in json format with extra details
+
------------
# nvme zns id-ns /dev/nvme0 -o json -v
------------

NVME
----
Part of nvme-cli
   070701015D6BA0000081A4000003E80000006400000001642C0FB5000004E3000000000000004A00000000000000000000003100000000nvme-cli/Documentation/nvme-zns-offline-zone.txt  nvme-zns-offline-zone(1)
========================

NAME
----
nvme-zns-offline-zone - Offlines one or all zones

SYNOPSIS
--------
[verse]
'nvme zns offline-zone' <device> [--namespace-id=<NUM> | -n <NUM>]
						[--start-lba=<LBA> | -s <LBA>]
						[--select-all | -a]
						[--timeout=<timeout> | -t <timeout>]

DESCRIPTION
-----------
For the NVMe device given, issues the Zone Management Send command with the
"Offline Zone" action. This will transition the zone to the offlined state.

The <device> parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).

OPTIONS
-------
-n <NUM>::
--namespace-id=<NUM>::
	Use the provided namespace id for the command. If not provided, the
	namespace id of the block device will be used. If the command is issued
	to a non-block device, the parameter is required.

-s <lba>::
--start-lba=<lba>::
	The starting LBA of the zone to offline. 

-a::
--select-all::
	Select all zones for this action

-t <timeout>::
--timeout=<timeout>::
	Override default timeout value. In milliseconds.

EXAMPLES
--------
* Offline all zones on namespace 1:
+
------------
# nvme zns offline-zone /dev/nvme0 -a -n 1
------------

NVME
----
Part of nvme-cli
 070701015D6BA3000081A4000003E80000006400000001642C0FB500000527000000000000004A00000000000000000000002E00000000nvme-cli/Documentation/nvme-zns-open-zone.txt nvme-zns-open-zone(1)
======================

NAME
----
nvme-zns-open-zone - Opens one or all zones

SYNOPSIS
--------
[verse]
'nvme zns open-zone' <device> [--namespace-id=<NUM> | -n <NUM>]
			      [--start-lba=<LBA> | -s <LBA>]
			      [--zrwaa | -r]
			      [--select-all | -a]
			      [--timeout=<timeout> | -t <timeout>]

DESCRIPTION
-----------
For the NVMe device given, issues the Zone Management Send command with the
"Open Zone" action. This will transition the zone to the opened state.

The <device> parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).

OPTIONS
-------
-n <NUM>::
--namespace-id=<NUM>::
	Use the provided namespace id for the command. If not provided, the
	namespace id of the block device will be used. If the command is issued
	to a non-block device, the parameter is required.

-s <lba>::
--start-lba=<lba>::
	The starting LBA of the zone to open.

-r::
--zrwaa::
	Allocate Zone Random Write Area to zone

-a::
--select-all::
	Select all zones for this action

-t <timeout>::
--timeout=<timeout>::
	Override default timeout value. In milliseconds.

EXAMPLES
--------
* Open the first zone on namespace 1:
+
------------
# nvme zns open-zone /dev/nvme0 -n 1 -s 0
------------

NVME
----
Part of nvme-cli
 070701015D6BA6000081A4000003E80000006400000001642C0FB5000009C4000000000000004A00000000000000000000003100000000nvme-cli/Documentation/nvme-zns-report-zones.txt  nvme-zns-report-zones(1)
========================

NAME
----
nvme-zns-report-zones - Retrieve and display the Report Zones data structure

SYNOPSIS
--------
[verse]
'nvme zns report-zones' <device> [--namespace-id=<NUM> | -n <NUM>]
				 [--start-lba=<IONUM> | -s <IONUM>]
				 [--descs=<NUM> | -d <NUM>]
				 [--state=<NUM> | -S <NUM>]
				 [--extended | -e]
				 [--partial | -p]
				 [--verbose | -v]
				 [--output-format=<FMT> | -o <FMT>]

DESCRIPTION
-----------
For the NVMe device given, sends the Zone Management Receive command with the
Zone Receive Action set to either Report Zones or Extended Report Zones,
depending on the 'extended' option.

The <device> parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).

On success, the data structure returned by the device will be decoded and
displayed in one of several ways. 

OPTIONS
-------
-n <NUM>::
--namespace-id=<NUM>::
	Use the provided namespace id for the command. If not provided, the
	namespace id of the block device will be used. If the command is issued
	to a non-block device, the parameter is required.

-s <lba>::
--start-lba=<lba>::
	The starting LBA of the zone to begin the report

-d <NUM>::
--descs=<NUM>::
	The number of descriptors to request in the report.

-S <NUM>::
--state=<NUM>::
	The state of zones to request in the report. Known values include:
+
[]
|=================
|Value|Definition
|0|List all zones (default)
|1|Empty State
|2|Implicitly Opened State
|3|Explicitly Opened State
|4|Closed State
|5|Full State
|6|Read Only State
|7|Offline State
|=================

-e::
--extended::
	Request to use the Extended Report Zones option. The extended data is
	not decoded.

-p::
--partial::
	If set, the device will return the number of zones that match the state
	rather than the number of zones returned in the report.

-v::
--verbose::
	Increase the information detail in the output.

-o <format>::
--output-format=<format>::
              Set the reporting format to 'normal', 'json', or
              'binary'. Only one output format can be used at a time.

EXAMPLES
--------
* Has the program interpret the report for 16 zones, and display the known
fields in a human readable format:
+
------------
# nvme zns report-zones /dev/nvme0 -n 1 -d 16
------------
+

* Show the output in json format with extra details
+
------------
# nvme zns report-zones /dev/nvme0 -n 1 -d 16 -o json
------------

NVME
----
Part of nvme-cli
070701015D6BA9000081A4000003E80000006400000001642C0FB500000525000000000000004A00000000000000000000002F00000000nvme-cli/Documentation/nvme-zns-reset-zone.txt    nvme-zns-reset-zone(1)
======================

NAME
----
nvme-zns-reset-zone - Resets one or all zones

SYNOPSIS
--------
[verse]
'nvme zns reset-zone' <device> [--namespace-id=<NUM> | -n <NUM>]
				    [--start-lba=<LBA> | -s <LBA>]
				    [--select-all | -a]
				    [--timeout=<timeout> | -t <timeout>]

DESCRIPTION
-----------
For the NVMe device given, issues the Zone Management Send command with the
"Reset Zone" action. This will transition the zone to the empty state, setting
the write pointer for each zone back to the beginning on success.

The <device> parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).

OPTIONS
-------
-n <NUM>::
--namespace-id=<NUM>::
	Use the provided namespace id for the command. If not provided, the
	namespace id of the block device will be used. If the command is issued
	to a non-block device, the parameter is required.

-s <lba>::
--start-lba=<lba>::
	The starting LBA of the zone to reset. 

-a::
--select-all::
	Select all zones for this action

-t <timeout>::
--timeout=<timeout>::
	Override default timeout value. In milliseconds.

EXAMPLES
--------
* Reset the first zone on namespace 1:
+
------------
# nvme zns reset-zone /dev/nvme0 -n 1 -s 0
------------

NVME
----
Part of nvme-cli
   070701015D6BAC000081A4000003E80000006400000001642C0FB5000005D7000000000000004A00000000000000000000003200000000nvme-cli/Documentation/nvme-zns-set-zone-desc.txt nvme-zns-set-zone-desc(1)
=========================

NAME
----
nvme-zns-set-zone-desc - Set extended descriptor data for a zone

SYNOPSIS
--------
[verse]
'nvme zns set-zone-desc' <device> [--namespace-id=<NUM> | -n <NUM>]
				 [--start-lba=<IONUM>, -s <IONUM>]
				 [--zrwaa | -r]
				 [-data=<FILE>, -d <FILE>]
				 [--timeout=<timeout> | -t <timeout>]

DESCRIPTION
-----------
For the NVMe device given, issues the Zone Management Send command with the
Set Zone Descriptor Extensions action. The input will default to stdin.
Alternatively, the data may come from a file that can be specified. The data
length will automatically be calculated from the zns identify namespace.

OPTIONS
-------
-n <NUM>::
--namespace-id=<NUM>::
	Use the provided namespace id for the command. If not provided, the
	namespace id of the block device will be used. If the command is issued
	to a non-block device, the parameter is required.

-s <lba>::
--start-lba=<lba>::
	The starting LBA of the zone to manage send.

-r::
--zrwaa::
	Allocate Zone Random Write Area to zone.

-d <FILE::
-data=<FILE>::
	Optional file for data (default stdin)

-t <timeout>::
--timeout=<timeout>::
	Override default timeout value. In milliseconds.

EXAMPLES
--------
* Write "hello world" into the zone descriptor for namespace 1's first zone
  (requires device supports a large enough zone extended data) 
+
------------
# echo "hello world" | nvme zns set-zone-desc /dev/nvme0 -n 1 -s 0
------------

NVME
----
Part of nvme-cli
 070701015D6BAF000081A4000003E80000006400000001642C0FB5000008B4000000000000004A00000000000000000000003000000000nvme-cli/Documentation/nvme-zns-zone-append.txt   nvme-zns-zone-append(1)
=======================

NAME
----
nvme-zns-zone-append - Send an NVMe write command, provide results

SYNOPSIS
--------
[verse]
'nvme-zns-zone-append' <device> [--namespace-id=<NUM> | -n <NUM>]
				[--zslba=<IONUM> | -s <IONUM>]
				[--data-size=<IONUM> | -z <IONUM>]
				[--metadata-size=<IONUM> | -y <IONUM>]
				[--data=<FILE> | -d <FILE>]
				[--metadata=<FILE> | -M <FILE>]
				[--limited-retry | -l]
				[--force-unit-access | -f]
				[--ref-tag=<NUM> | -r <NUM>]
				[--app-tag-mask=<NUM> | -m <NUM>]
				[--app-tag=<NUM> | -a <NUM>]
				[--prinfo=<NUM> | -p <NUM>]

DESCRIPTION
-----------
The zone append command writes the logical blocks specified by the command to
the medium from the data data buffer provided. Will use stdin by default
if you don't provide a file.

On success, the program will report the LBA that was assigned to the data for
the append operation.

OPTIONS
-------
-n <NUM>::
--namespace-id=<NUM>::
	Use the provided namespace id for the command. If not provided, the
	namespace id of the block device will be used. If the command is issued
	to a non-block device, the parameter is required.

-s <IONUM>::
--zslba=<IONUM>::

-z <IONUM>::
--data-size=<IONUM>::
	Size of data, in bytes.

-y <IONUM>::
--metadata-size=<IONUM>::
	Size of metadata in bytes.

-d <FILE>::
--data=<FILE>::
	Data file providing the data to write. If none provided, contents are
	sent from STDIN.

-M <FILE>::
--metadata=<FILE>::
	Metadata file, if necessary.

-l::
--limited-retry::
	Sets the limited retry flag.

-f::
--force-unit-access::
	Set the force-unit access flag.

-r <NUM>::
--ref-tag=<NUM>::
	Optional reftag when used with protection information.

-m <NUM>::
--app-tag-mask=<NUM>::
	Optional application tag mask when used with protection information.

-a <NUM>::
--app-tag=<NUM>::
	Optional application tag when used with protection information.

-p <NUM>::
--prinfo=<NUM>::
	Protection Information field definition.

EXAMPLES
--------
* Append the data "hello world" into 4k worth of blocks into the zone starting
  at block 0 for namespace 1:
+
------------
# echo "hello world" | nvme zns zone-append /dev/nvme0 -n 1 -s 0 -z 4k
------------

NVME
----
Part of the nvme-user suite
070701015D6BB2000081A4000003E80000006400000001642C0FB50000075C000000000000004A00000000000000000000003300000000nvme-cli/Documentation/nvme-zns-zone-mgmt-recv.txt    nvme-zns-zone-mgmt-recv(1)
==========================

NAME
----
nvme-zns-zone-mgmt-recv - Zone Management Receive command

SYNOPSIS
--------
[verse]
'nvme zns zone-mgmt-recv' <device> [--namespace-id=<NUM> | -n <NUM>]
				   [--start-lba=<LBA> | -s <LBA>]
				   [--data-len=<IONUM>, -l <IONUM>]
				   [--zra=<NUM>, -z <NUM>]
				   [--zrasf=<NUM>, -a <NUM>]
				   [--zra-spec-feat, -f]
				   [--output-format=<FMT>, -o <FMT>]

DESCRIPTION
-----------
For the NVMe device given, issues the Zone Management Receive command with the
requested receive action and additional action specific parameters. This is the
generic interface provided for forward compatibility as new actions are created
that this program isn't aware of at the time of its development. As such, this
is a generic command that does not do any additional decoding for specific
types of data received. This will only report the data as a hex dump, or
binary. 

OPTIONS
-------
-n <NUM>::
--namespace-id=<NUM>::
	Use the provided namespace id for the command. If not provided, the
	namespace id of the block device will be used. If the command is issued
	to a non-block device, the parameter is required.

-s <lba>::
--start-lba=<lba>::
	The starting LBA of the zone to manage receive.

--data-len=<NUM>
-l <NUM>
	Received data buffer length

-z <NUM>::
--zra=<NUM>::
	Zone Receive Action

-a <NUM>
--zrasf=<NUM>
	Zone Receive Action Specific field

-f::
--zra-spec-feat::
	Enable Zone Receive Action Specific features

-o <FMT>::
--output-format=<FMT>::
	Output format: normal|json|binary

EXAMPLES
--------
* Hex dump of a report all zones
+
------------
# nvme zns zone-mgmt-recv /dev/nvme0 -n 1 -s 0 -z 0 -a 0 -l 4k
------------
+

* Binary dump of a report all zones
+
------------
# nvme zns zone-mgmt-recv /dev/nvme0 -n 1 -s 0 -z 0 -a 0 -o -l 4k binary > report.out
------------

NVME
----
Part of nvme-cli
070701015D6BB5000081A4000003E80000006400000001642C0FB5000007C2000000000000004A00000000000000000000003300000000nvme-cli/Documentation/nvme-zns-zone-mgmt-send.txt    nvme-zns-zone-mgmt-send(1)
==========================

NAME
----
nvme-zns-zone-mgmt-send - Zone Management Send command

SYNOPSIS
--------
[verse]
'nvme zns zone-mgmt-send' <device> [--namespace-id=<NUM> | -n <NUM>]
				   [--start-lba=<IONUM>, -s <IONUM>]
				   [--zsaso, -o]
				   [--select-all, -a]
				   [--zsa=<NUM>, -z <NUM>]
				   [--data-len=<IONUM>, -l <IONUM>]
				   [--data=<FILE>, -d <FILE>]
				   [--timeout=<timeout> | -t <timeout>]

DESCRIPTION
-----------
For the NVMe device given, issues the Zone Management Send command with the
requested send action. If the send requires additional data, you may specify
the data length. If data is required, the input will default to stdin.
Alternatively, the data may come from a file that can be specified.

OPTIONS
-------
-n <NUM>::
--namespace-id=<NUM>::
	Use the provided namespace id for the command. If not provided, the
	namespace id of the block device will be used. If the command is issued
	to a non-block device, the parameter is required.

-s <lba>::
--start-lba=<lba>::
	The starting LBA of the zone to manage send.

-l <NUM>::
--data-len=<NUM>::
	Send data buffer length

-o::
--zsaso::
	Zone Send Action Specific Option

--select-all::
-a::
	Send command to all zones

-z <NUM>::
--zsa=<NUM>::
	Zone send action.

-l <IONUM>::
--data-len=<IONUM>::
	Buffer length if data required

-d <FILE::
--data=<FILE>::
	Optional file for data (default stdin)

-t <timeout>::
--timeout=<timeout>::
	Override default timeout value. In milliseconds.

EXAMPLES
--------
* Send a zone management command with action set to 1 (close zone) to namespace
  1's first zone:
+
------------
# nvme zns zone-mgmt-send /dev/nvme0 -n 1 -s 0 -z 1
------------
+

* Write "hello world" into the zone descriptor for namespace 1's first zone
  (requires device supports a large enough zone extended data) 
+
------------
# echo "hello world" | nvme zns zone-mgmt-send /dev/nvme0 -n 1 -s 0 -z 0x10
------------

NVME
----
Part of nvme-cli
  070701015D6BB6000081A4000003E80000006400000001642C0FB500000A62000000000000004A00000000000000000000003200000000nvme-cli/Documentation/nvme-zns-zrwa-flush-zone.1 '\" t
.\"     Title: nvme-zns-zrwa-flush-zone
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 12/13/2021
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-ZNS\-ZRWA\-FLU" "1" "12/13/2021" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-zns-zrwa-flush-zone \- Flush LBAs associated with a ZRWA to a zone
.SH "SYNOPSIS"
.sp
.nf
\fInvme zns zrwa\-flush\-zone\fR <device> [\-\-namespace\-id=<NUM> | \-n <NUM>]
                                    [\-\-lba=<LBA> | \-l <LBA>]
                                    [\-\-timeout=<timeout> | \-t <timeout> ]
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, issues the Zone Management Send command with the "flush Zone" action\&. This will flush the zone that is opened as zone random write area\&.
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1)\&.
.SH "OPTIONS"
.PP
\-n <NUM>, \-\-namespace\-id=<NUM>
.RS 4
Use the provided namespace id for the command\&. If not provided, the namespace id of the block device will be used\&. If the command is issued to a non\-block device, the parameter is required\&.
.RE
.PP
\-l <lba>, \-\-lba=<lba>
.RS 4
The LBA to flush up to\&.
.RE
.PP
\-t <timeout>, \-\-timeout=<timeout>
.RS 4
Override default timeout value\&. In milliseconds\&.
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
flush the first zwra of first zone for zrwacg(15) on namespace 1:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme zns zrwa\-flush\-zone /dev/nvme0 \-n 1 \-l 15
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of nvme\-cli
  070701015D6BB7000081A4000003E80000006400000001642C0FB500004A35000000000000004A00000000000000000000003500000000nvme-cli/Documentation/nvme-zns-zrwa-flush-zone.html  <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc" />
<title>nvme-zns-zrwa-flush-zone(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-zns-zrwa-flush-zone(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-zns-zrwa-flush-zone -
   Flush LBAs associated with a ZRWA to a zone
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme zns zrwa-flush-zone</em> &lt;device&gt; [--namespace-id=&lt;NUM&gt; | -n &lt;NUM&gt;]
                                    [--lba=&lt;LBA&gt; | -l &lt;LBA&gt;]
                                    [--timeout=&lt;timeout&gt; | -t &lt;timeout&gt; ]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, issues the Zone Management Send command with the
"flush Zone" action. This will flush the zone that is opened as
zone random write area.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-n &lt;NUM&gt;
</dt>
<dt class="hdlist1">
--namespace-id=&lt;NUM&gt;
</dt>
<dd>
<p>
        Use the provided namespace id for the command. If not provided, the
        namespace id of the block device will be used. If the command is issued
        to a non-block device, the parameter is required.
</p>
</dd>
<dt class="hdlist1">
-l &lt;lba&gt;
</dt>
<dt class="hdlist1">
--lba=&lt;lba&gt;
</dt>
<dd>
<p>
        The LBA to flush up to.
</p>
</dd>
<dt class="hdlist1">
-t &lt;timeout&gt;
</dt>
<dt class="hdlist1">
--timeout=&lt;timeout&gt;
</dt>
<dd>
<p>
        Override default timeout value. In milliseconds.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
flush the first zwra of first zone for zrwacg(15) on namespace 1:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme zns zrwa-flush-zone /dev/nvme0 -n 1 -l 15</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of nvme-cli</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2021-12-13 19:30:31 CET
</div>
</div>
</body>
</html>
   070701015D6BB8000081A4000003E80000006400000001642C0FB5000004D0000000000000004A00000000000000000000003400000000nvme-cli/Documentation/nvme-zns-zrwa-flush-zone.txt   nvme-zns-zrwa-flush-zone(1)
===========================

NAME
----
nvme-zns-zrwa-flush-zone - Flush LBAs associated with a ZRWA to a zone

SYNOPSIS
--------
[verse]
'nvme zns zrwa-flush-zone' <device> [--namespace-id=<NUM> | -n <NUM>]
			            [--lba=<LBA> | -l <LBA>]
				    [--timeout=<timeout> | -t <timeout> ]

DESCRIPTION
-----------
For the NVMe device given, issues the Zone Management Send command with the
"flush Zone" action. This will flush the zone that is opened as
zone random write area.

The <device> parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).

OPTIONS
-------
-n <NUM>::
--namespace-id=<NUM>::
	Use the provided namespace id for the command. If not provided, the
	namespace id of the block device will be used. If the command is issued
	to a non-block device, the parameter is required.

-l <lba>::
--lba=<lba>::
	The LBA to flush up to.

-t <timeout>::
--timeout=<timeout>::
	Override default timeout value. In milliseconds.

EXAMPLES
--------
* flush the first zrwa of first zone for zrwacg(15) on namespace 1:
+
------------
# nvme zns zrwa-flush-zone /dev/nvme0 -n 1 -l 15
------------

NVME
----
Part of nvme-cli
070701015D6BBB000081A4000003E80000006400000001642C0FB5000006A3000000000000004A00000000000000000000002000000000nvme-cli/Documentation/nvme.txt   nvme(1)
=======

NAME
----
nvme - the NVMe storage command line interface utility (nvme-cli)

SYNOPSIS
--------
built-in plugin:
[verse]
'nvme' <command> <device> [<args>]

extension plugins:
[verse]
'nvme' <plugin> <command> <device> [<args>]

DESCRIPTION
-----------
NVM-Express is a fast, scalable host controller interface designed to
address the needs for not only PCI Express based solid state drives, but
also NVMe-oF(over fabrics).

This 'nvme' program is a user space utility to provide standards compliant
tooling for NVM-Express drives. It was made specifically for Linux as
it relies on the IOCTLs defined by the mainline kernel driver.

NVME COMMANDS
-------------
The utility has sub-commands for all admin and io commands defined in the
specification and for displaying controller registers. There is also an
option to submit completely arbitrary commands. For a list of commands
available, run "nvme help".

nvme cli sub-commands
---------------------

Main commands
~~~~~~~~~~~~~

include::cmds-main.txt[]

Plugins/Vendor extension commands
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

include::cmd-plugins.txt[]

RETURNS
-------
All commands will behave the same, they will return 0 on success and 1 on
failure.

FURTHER DOCUMENTATION
---------------------
See the freely available references on the http://nvmexpress.org[Official
NVM-Express Site].

Authors
-------
This is written and maintained by mailto:kbusch@kernel.org[Keith Busch].

Reporting Bugs
--------------
Patches and issues may be submitted to the official repository at
https://github.com/linux-nvme/nvme-cli or the Linux NVMe mailing list
mailto:linux-nvme@lists.infradead.org[linux-nvme]

NVME
----
Part of the nvme suite
 070701015D6BBC000081ED000003E80000006400000001642C0FB500000129000000000000004A00000000000000000000002600000000nvme-cli/Documentation/update-docs.sh #!/bin/sh
# SPDX-License-Identifier: GPL-2.0-or-later

BUILDDIR="$(mktemp -d)"
trap 'rm -rf -- $BUILDDIR' EXIT

meson $BUILDDIR -Ddocs=all -Ddocs-build=true
ninja -C $BUILDDIR
find $BUILDDIR/Documentation -maxdepth 1 \
     \( -name '*.1' -o -name '*.html' \) \
     -exec cp {} Documentation/ \;
   070701015D6CC2000081A4000003E80000006400000001642C0FB600001645000000000000004A00000000000000000000002D00000000nvme-cli/Documentation/nvme-admin-passthru.1  '\" t
.\"     Title: nvme-admin-passthru
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-ADMIN\-PASSTHR" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-admin-passthru \- Submit an arbitrary admin command, return results
.SH "SYNOPSIS"
.sp
.nf
\fInvme\-admin\-passthru\fR <device> [\-\-opcode=<opcode> | \-o <opcode>]
                [\-\-flags=<flags> | \-f <flags>] [\-rsvd=<rsvd> | \-R <rsvd>]
                [\-\-namespace\-id=<nsid>] [\-\-cdw2=<cdw2>] [\-\-cdw3=<cdw3>]
                [\-\-cdw10=<cdw10>] [\-\-cdw11=<cdw11>] [\-\-cdw12=<cdw12>]
                [\-\-cdw13=<cdw13>] [\-\-cdw14=<cdw14>] [\-\-cdw15=<cdw15>]
                [\-\-data\-len=<data\-len> | \-l <data\-len>]
                [\-\-metadata\-len=<len> | \-m <len>]
                [\-\-input\-file=<file> | \-i <file>]
                [\-\-read | \-r ] [\-\-write | \-w]
                [\-\-timeout=<to> | \-t <to>]
                [\-\-show\-command | \-s]
                [\-\-dry\-run | \-d]
                [\-\-raw\-binary | \-b]
                [\-\-prefill=<prefill> | \-p <prefill>]
                [\-\-latency | \-T]
.fi
.SH "DESCRIPTION"
.sp
Submits an arbitrary NVMe admin command and returns the applicable results\&. This may be the simply the commands result and status, or may also include a buffer if the command returns one\&. This command does no interpretation of the opcodes or options\&.
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1)\&.
.sp
On success, the returned structure (if applicable) may be returned in one of several ways depending on the option flags; the structure may printed by the program as a hex dump, or may be returned as a raw buffer printed to stdout for another program to parse\&.
.SH "OPTIONS"
.PP
\-o <opcode>, \-\-opcode=<opcode>
.RS 4
The NVMe opcode to send to the device in the command
.RE
.PP
\-f <flags>, \-\-flags=<flags>
.RS 4
The NVMe command flags to send to the device in the command
.RE
.PP
\-R <rsvd>, \-\-rsvd=<rsvd>
.RS 4
The value for the reserved field in the command\&.
.RE
.PP
\-n <nsid>, \-\-namespace\-id=<nsid>
.RS 4
The value for the ns\-id in the command\&.
.RE
.PP
\-\-cdw[2\-3,10\-15]=<cdw>
.RS 4
Specifies the command dword value for that specified entry in the command
.RE
.PP
\-r, \-\-read, \-w, \-\-write
.RS 4
Used for the data\-direction for the command and required for commands sending/receiving data\&. Don\(cqt use both read and write at the same time\&.
.RE
.PP
\-i <file>, \-\-input\-file=<file>
.RS 4
If the command is a data\-out (write) command, use this file to fill the buffer sent to the device\&. If no file is given, assumed to use STDIN\&.
.RE
.PP
\-l <data\-len>, \-\-data\-len=<data\-len>
.RS 4
The data length for the buffer used for this command\&.
.RE
.PP
\-m <data\-len>, \-\-metadata\-len=<data\-len>
.RS 4
The metadata length for the buffer used for this command\&.
.RE
.PP
\-s, \-\-show\-cmd
.RS 4
Print out the command to be sent\&.
.RE
.PP
\-d, \-\-dry\-run
.RS 4
Do not actually send the command\&. If want to use \-\-dry\-run option, \-\-show\-cmd option
\fImust\fR
be set\&. Otherwise \-\-dry\-run option will be
\fIignored\fR\&.
.RE
.PP
\-b, \-\-raw\-binary
.RS 4
Print the raw returned buffer to stdout if the command returns a structure\&.
.RE
.PP
\-p, \-\-prefill
.RS 4
Prefill the buffer with a predetermined byte value\&. Defaults to 0\&. This may be useful if the data you are writing is shorter than the required buffer, and you need to pad it with a known value\&. It may also be useful if you need to confirm if a device is overwriting a buffer for a data\-in command\&.
.RE
.PP
\-T, \-\-latency
.RS 4
Print out the latency the IOCTL took (in us)\&.
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
The following will run the admin command with opcode=6 and cdw10=1, which corresponds to an identify controller command\&. This example requires the data\-len param be 4096, which is the size of the returned structure\&. The \-r option is used because it is a data\-in command
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme admin\-passthru /dev/nvme0 \-\-opcode=06 \-\-data\-len=4096 \-\-cdw10=1 \-r
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Or if you want to save that structure to a file:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme admin\-passthru /dev/nvme0 \-\-opcode=06 \-\-data\-len=4096 \-\-cdw10=1 \-r \-b > id_ns\&.raw
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite
   070701015D6CC3000081A4000003E80000006400000001642C0FB600005A1E000000000000004A00000000000000000000003000000000nvme-cli/Documentation/nvme-admin-passthru.html   <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-admin-passthru(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-admin-passthru(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-admin-passthru -
   Submit an arbitrary admin command, return results
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme-admin-passthru</em> &lt;device&gt; [--opcode=&lt;opcode&gt; | -o &lt;opcode&gt;]
                [--flags=&lt;flags&gt; | -f &lt;flags&gt;] [-rsvd=&lt;rsvd&gt; | -R &lt;rsvd&gt;]
                [--namespace-id=&lt;nsid&gt;] [--cdw2=&lt;cdw2&gt;] [--cdw3=&lt;cdw3&gt;]
                [--cdw10=&lt;cdw10&gt;] [--cdw11=&lt;cdw11&gt;] [--cdw12=&lt;cdw12&gt;]
                [--cdw13=&lt;cdw13&gt;] [--cdw14=&lt;cdw14&gt;] [--cdw15=&lt;cdw15&gt;]
                [--data-len=&lt;data-len&gt; | -l &lt;data-len&gt;]
                [--metadata-len=&lt;len&gt; | -m &lt;len&gt;]
                [--input-file=&lt;file&gt; | -i &lt;file&gt;]
                [--read | -r ] [--write | -w]
                [--timeout=&lt;to&gt; | -t &lt;to&gt;]
                [--show-command | -s]
                [--dry-run | -d]
                [--raw-binary | -b]
                [--prefill=&lt;prefill&gt; | -p &lt;prefill&gt;]
                [--latency | -T]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>Submits an arbitrary NVMe admin command and returns the applicable
results. This may be the simply the commands result and status, or may
also include a buffer if the command returns one. This command does no
interpretation of the opcodes or options.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).</p></div>
<div class="paragraph"><p>On success, the returned structure (if applicable) may be returned in
one of several ways depending on the option flags; the structure may
printed by the program as a hex dump, or may be returned as a raw buffer
printed to stdout for another program to parse.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-o &lt;opcode&gt;
</dt>
<dt class="hdlist1">
--opcode=&lt;opcode&gt;
</dt>
<dd>
<p>
        The NVMe opcode to send to the device in the command
</p>
</dd>
<dt class="hdlist1">
-f &lt;flags&gt;
</dt>
<dt class="hdlist1">
--flags=&lt;flags&gt;
</dt>
<dd>
<p>
        The NVMe command flags to send to the device in the command
</p>
</dd>
<dt class="hdlist1">
-R &lt;rsvd&gt;
</dt>
<dt class="hdlist1">
--rsvd=&lt;rsvd&gt;
</dt>
<dd>
<p>
        The value for the reserved field in the command.
</p>
</dd>
<dt class="hdlist1">
-n &lt;nsid&gt;
</dt>
<dt class="hdlist1">
--namespace-id=&lt;nsid&gt;
</dt>
<dd>
<p>
        The value for the ns-id in the command.
</p>
</dd>
<dt class="hdlist1">
--cdw[2-3,10-15]=&lt;cdw&gt;
</dt>
<dd>
<p>
        Specifies the command dword value for that specified entry in
        the command
</p>
</dd>
<dt class="hdlist1">
-r
</dt>
<dt class="hdlist1">
--read
</dt>
<dt class="hdlist1">
-w
</dt>
<dt class="hdlist1">
--write
</dt>
<dd>
<p>
        Used for the data-direction for the command and required for
        commands sending/receiving data. Don&#8217;t use both read and write
        at the same time.
</p>
</dd>
<dt class="hdlist1">
-i &lt;file&gt;
</dt>
<dt class="hdlist1">
--input-file=&lt;file&gt;
</dt>
<dd>
<p>
        If the command is a data-out (write) command, use this file
        to fill the buffer sent to the device. If no file is given,
        assumed to use STDIN.
</p>
</dd>
<dt class="hdlist1">
-l &lt;data-len&gt;
</dt>
<dt class="hdlist1">
--data-len=&lt;data-len&gt;
</dt>
<dd>
<p>
        The data length for the buffer used for this command.
</p>
</dd>
<dt class="hdlist1">
-m &lt;data-len&gt;
</dt>
<dt class="hdlist1">
--metadata-len=&lt;data-len&gt;
</dt>
<dd>
<p>
        The metadata length for the buffer used for this command.
</p>
</dd>
<dt class="hdlist1">
-s
</dt>
<dt class="hdlist1">
--show-cmd
</dt>
<dd>
<p>
        Print out the command to be sent.
</p>
</dd>
<dt class="hdlist1">
-d
</dt>
<dt class="hdlist1">
--dry-run
</dt>
<dd>
<p>
        Do not actually send the command. If want to use --dry-run option,
        --show-cmd option <em>must</em> be set. Otherwise --dry-run option will be
        <em>ignored</em>.
</p>
</dd>
<dt class="hdlist1">
-b
</dt>
<dt class="hdlist1">
--raw-binary
</dt>
<dd>
<p>
        Print the raw returned buffer to stdout if the command returns
        a structure.
</p>
</dd>
<dt class="hdlist1">
-p
</dt>
<dt class="hdlist1">
--prefill
</dt>
<dd>
<p>
        Prefill the buffer with a predetermined byte value. Defaults to 0.
        This may be useful if the data you are writing is shorter
        than the required buffer, and you need to pad it with a known
        value. It may also be useful if you need to confirm if a device
        is overwriting a buffer for a data-in command.
</p>
</dd>
<dt class="hdlist1">
-T
</dt>
<dt class="hdlist1">
--latency
</dt>
<dd>
<p>
        Print out the latency the IOCTL took (in us).
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
The following will run the admin command with opcode=6 and cdw10=1, which
 corresponds to an identify controller command. This example requires the
 data-len param be 4096, which is the size of the returned structure. The -r
 option is used because it is a data-in command
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme admin-passthru /dev/nvme0 --opcode=06 --data-len=4096 --cdw10=1 -r</code></pre>
</div></div>
</li>
<li>
<p>
Or if you want to save that structure to a file:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme admin-passthru /dev/nvme0 --opcode=06 --data-len=4096 --cdw10=1 -r -b &gt; id_ns.raw</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
  070701015D6CC4000081A4000003E80000006400000001642C0FB600000995000000000000004A00000000000000000000002600000000nvme-cli/Documentation/nvme-ana-log.1 '\" t
.\"     Title: nvme-ana-log
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-ANA\-LOG" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-ana-log \- Send NVMe ANA log page request, returns result and log
.SH "SYNOPSIS"
.sp
.nf
\fInvme ana\-log\fR <device> [\-o <fmt> | \-\-output\-format=<fmt>]
.fi
.SH "DESCRIPTION"
.sp
Retrieves the NVMe Asymmetric Namespace Access log page from an NVMe device and provides the returned structure\&.
.sp
The <device> parameter is mandatory NVMe character device (ex: /dev/nvme0)\&.
.sp
On success, the returned ANA log structure may be returned in one of several ways depending on the option flags; the structure may parsed by the program and printed in a readable format or the raw buffer may be printed to stdout for another program to parse\&.
.SH "OPTIONS"
.PP
\-g, \-\-groups
.RS 4
Return the list of ANA groups without the namespace listing\&.
.RE
.PP
\-o <format>, \-\-output\-format=<format>
.RS 4
Set the reporting format to
\fInormal\fR,
\fIjson\fR, or
\fIbinary\fR\&. Only one output format can be used at a time\&.
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Print the ANA log page in a human readable format:
.RE
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme ana\-log /dev/nvme0
.fi
.if n \{\
.RE
.\}
.SH "NVME"
.sp
Part of the nvme\-user suite
   070701015D6CC5000081A4000003E80000006400000001642C0FB600004932000000000000004A00000000000000000000002900000000nvme-cli/Documentation/nvme-ana-log.html  <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-ana-log(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-ana-log(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-ana-log -
   Send NVMe ANA log page request, returns result and log
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme ana-log</em> &lt;device&gt; [-o &lt;fmt&gt; | --output-format=&lt;fmt&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>Retrieves the NVMe Asymmetric Namespace Access log page from an NVMe device
and provides the returned structure.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory NVMe character device (ex: /dev/nvme0).</p></div>
<div class="paragraph"><p>On success, the returned ANA log structure may be returned in one of
several ways depending on the option flags; the structure may parsed by
the program and printed in a readable format or the raw buffer may be
printed to stdout for another program to parse.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-g
</dt>
<dt class="hdlist1">
--groups
</dt>
<dd>
<p>
              Return the list of ANA groups without the namespace listing.
</p>
</dd>
<dt class="hdlist1">
-o &lt;format&gt;
</dt>
<dt class="hdlist1">
--output-format=&lt;format&gt;
</dt>
<dd>
<p>
              Set the reporting format to <em>normal</em>, <em>json</em>, or
              <em>binary</em>. Only one output format can be used at a time.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Print the ANA log page in a human readable format:
</p>
</li>
</ul></div>
<div class="listingblock">
<div class="content">
<pre><code># nvme ana-log /dev/nvme0</code></pre>
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
  070701015D6CC6000081A4000003E80000006400000001642C0FB600000878000000000000004A00000000000000000000002800000000nvme-cli/Documentation/nvme-attach-ns.1   '\" t
.\"     Title: nvme-attach-ns
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-ATTACH\-NS" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-attach-ns \- Send NVMe attach namespace, return result\&.
.SH "SYNOPSIS"
.sp
.nf
\fInvme attach\-ns\fR <device> [\-\-namespace\-id=<nsid> | \-n <nsid>]
                        [\-\-controllers=<ctrl\-list,> | \-c <ctrl\-list,>]
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, sends the nvme namespace attach command for the provided namespace identifier, attaching to the provided list of controller identifiers\&.
.SH "OPTIONS"
.PP
\-n <nsid>, \-\-namespace\-id=<nsid>
.RS 4
The namespace identifier to attach\&.
.RE
.PP
\-c <ctrl\-list,>, \-controllers=<ctrl\-list,>
.RS 4
The comma separated list of controller identifiers to attach the namespace too\&.
.RE
.SH "EXAMPLES"
.sp
.if n \{\
.RS 4
.\}
.nf
Attach namespace to the controller:
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme attach\-ns /dev/nvme1  \-n 0x2 \-c 0x21
.fi
.if n \{\
.RE
.\}
.SH "NVME"
.sp
Part of the nvme\-user suite
070701015D6CC7000081A4000003E80000006400000001642C0FB6000047FF000000000000004A00000000000000000000002B00000000nvme-cli/Documentation/nvme-attach-ns.html    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-attach-ns(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-attach-ns(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-attach-ns -
   Send NVMe attach namespace, return result.
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme attach-ns</em> &lt;device&gt; [--namespace-id=&lt;nsid&gt; | -n &lt;nsid&gt;]
                        [--controllers=&lt;ctrl-list,&gt; | -c &lt;ctrl-list,&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, sends the nvme namespace attach command for
the provided namespace identifier, attaching to the provided list of
controller identifiers.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-n &lt;nsid&gt;
</dt>
<dt class="hdlist1">
--namespace-id=&lt;nsid&gt;
</dt>
<dd>
<p>
        The namespace identifier to attach.
</p>
</dd>
<dt class="hdlist1">
-c &lt;ctrl-list,&gt;
</dt>
<dt class="hdlist1">
-controllers=&lt;ctrl-list,&gt;
</dt>
<dd>
<p>
        The comma separated list of controller identifiers to attach
        the namespace too.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="literalblock">
<div class="content">
<pre><code>Attach namespace to the controller:</code></pre>
</div></div>
<div class="literalblock">
<div class="content">
<pre><code># nvme attach-ns /dev/nvme1  -n 0x2 -c 0x21</code></pre>
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
 070701015D6CC8000081A4000003E80000006400000001642C0FB600000A54000000000000004A00000000000000000000002C00000000nvme-cli/Documentation/nvme-boot-part-log.1   '\" t
.\"     Title: nvme-boot-part-log
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-BOOT\-PART\-LO" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-boot-part-log \- Retrieves a Boot Partition log page from an NVMe device
.SH "SYNOPSIS"
.sp
.nf
\fInvme boot\-part\-log\fR <device> [\-\-lsp=<field> | \-s <field>]
                    [\-\-output\-file=<file> | \-o <file>]
                    [\-\-output\-format=<fmt> | \-o <fmt>]
.fi
.SH "DESCRIPTION"
.sp
Retrieves an Boot Partition log page from an NVMe device and provides the returned structure\&.
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1)\&.
.sp
On success, the returned log structure will be in raw binary format \fIonly\fR with \-\-output\-file option which is mandatory\&.
.SH "OPTIONS"
.PP
\-s <field>, \-\-lsp=<field>
.RS 4
The log specified field of LID\&.
.RE
.PP
\-o <file>, \-\-output\-file=<file>
.RS 4
File name to which raw binary data will be saved to\&.
.RE
.PP
\-o <format>, \-\-output\-format=<format>
.RS 4
Set the reporting format to
\fInormal\fR,
\fIjson\fR, or
\fIbinary\fR\&. Only one output format can be used at a time\&.
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Retrieve Boot Partition data to boot_part_log\&.bin
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme boot\-part\-log /dev/nvme0 \-\-output\-file=boot_part_log\&.bin
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite
070701015D6CC9000081A4000003E80000006400000001642C0FB600004A40000000000000004A00000000000000000000002F00000000nvme-cli/Documentation/nvme-boot-part-log.html    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-boot-part-log(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-boot-part-log(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-boot-part-log -
   Retrieves a Boot Partition log page from an NVMe device
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme boot-part-log</em> &lt;device&gt; [--lsp=&lt;field&gt; | -s &lt;field&gt;]
                    [--output-file=&lt;file&gt; | -o &lt;file&gt;]
                    [--output-format=&lt;fmt&gt; | -o &lt;fmt&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>Retrieves an Boot Partition log page from an NVMe device and provides
the returned structure.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).</p></div>
<div class="paragraph"><p>On success, the returned log structure will be in raw binary format <em>only</em> with
--output-file option which is mandatory.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-s &lt;field&gt;
</dt>
<dt class="hdlist1">
--lsp=&lt;field&gt;
</dt>
<dd>
<p>
        The log specified field of LID.
</p>
</dd>
<dt class="hdlist1">
-o &lt;file&gt;
</dt>
<dt class="hdlist1">
--output-file=&lt;file&gt;
</dt>
<dd>
<p>
        File name to which raw binary data will be saved to.
</p>
</dd>
<dt class="hdlist1">
-o &lt;format&gt;
</dt>
<dt class="hdlist1">
--output-format=&lt;format&gt;
</dt>
<dd>
<p>
    Set the reporting format to <em>normal</em>, <em>json</em>, or
    <em>binary</em>. Only one output format can be used at a time.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Retrieve Boot Partition data to boot_part_log.bin
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme boot-part-log /dev/nvme0 --output-file=boot_part_log.bin</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
070701015D6CCA000081A4000003E80000006400000001642C0FB600000B21000000000000004A00000000000000000000002C00000000nvme-cli/Documentation/nvme-capacity-mgmt.1   '\" t
.\"     Title: nvme-capacity-mgmt
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-CAPACITY\-MGMT" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-capacity-mgmt \- Send capacity management command to configure/create/delete Endurance Groups or NVM Sets, returns results\&.
.SH "SYNOPSIS"
.sp
.nf
\fInvme capacity\-mgmt\fR <device> [\-\-operation=<operation> | \-o <operation>]
                        [\-\-element\-id=<element\-id> | \-i <element\-id>]
                        [\-\-cap\-lower=<cap\-lower> | \-l <cap\-lower>]
                        [\-\-cap\-upper=<cap\-upper> | \-u <cap\-upper>]
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, sends a capacity management command to configure/create/delete the Endurance Groups or NVM Sets with the requested operation and element_id\&. On success, if the Operation is Create Endurance group or NVM Set, CQE CDW0 contains Created element identifier else CQE CDW0 is reserved\&.
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1)\&.
.SH "OPTIONS"
.PP
\-o <operation>, \-\-operation=<operation>
.RS 4
Operation to be performed by the controller
.RE
.PP
\-i <element\-id>, \-\-element\-id=<element\-id>
.RS 4
Value specific to the value of the Operation field\&.
.RE
.PP
\-l <cap\-lower>, \-\-cap\-lower=<cap\-lower>
.RS 4
Least significant 32 bits of the capacity in bytes of the Endurance Group or NVM Set to be created
.RE
.PP
\-u <cap\-upper>, \-\-cap\-upper=<cap\-upper>
.RS 4
Most significant 32 bits of the capacity in bytes of the Endurance Group or NVM Set to be created
.RE
.SH "EXAMPLES"
.sp
No examples provided yet\&.
.SH "NVME"
.sp
Part of the nvme\-user suite
   070701015D6CCB000081A4000003E80000006400000001642C0FB600004B65000000000000004A00000000000000000000002F00000000nvme-cli/Documentation/nvme-capacity-mgmt.html    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-capacity-mgmt(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-capacity-mgmt(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-capacity-mgmt -
   Send capacity management command to configure/create/delete                      Endurance Groups or NVM Sets, returns results.
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme capacity-mgmt</em> &lt;device&gt; [--operation=&lt;operation&gt; | -o &lt;operation&gt;]
                        [--element-id=&lt;element-id&gt; | -i &lt;element-id&gt;]
                        [--cap-lower=&lt;cap-lower&gt; | -l &lt;cap-lower&gt;]
                        [--cap-upper=&lt;cap-upper&gt; | -u &lt;cap-upper&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, sends a capacity management command to
configure/create/delete the Endurance Groups or NVM Sets with the requested
operation and element_id. On success, if the Operation is Create Endurance
group or NVM Set, CQE CDW0 contains Created element identifier else CQE CDW0 is
reserved.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-o &lt;operation&gt;
</dt>
<dt class="hdlist1">
--operation=&lt;operation&gt;
</dt>
<dd>
<p>
    Operation to be performed by the controller
</p>
</dd>
<dt class="hdlist1">
-i &lt;element-id&gt;
</dt>
<dt class="hdlist1">
--element-id=&lt;element-id&gt;
</dt>
<dd>
<p>
    Value specific to the value of the Operation field.
</p>
</dd>
<dt class="hdlist1">
-l &lt;cap-lower&gt;
</dt>
<dt class="hdlist1">
--cap-lower=&lt;cap-lower&gt;
</dt>
<dd>
<p>
        Least significant 32 bits of the capacity in bytes of the Endurance Group or
    NVM Set to be created
</p>
</dd>
<dt class="hdlist1">
-u &lt;cap-upper&gt;
</dt>
<dt class="hdlist1">
--cap-upper=&lt;cap-upper&gt;
</dt>
<dd>
<p>
        Most significant 32 bits of the capacity in bytes of the Endurance Group or
    NVM Set to be created
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="paragraph"><p>No examples provided yet.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
   070701015D6CCC000081A4000003E80000006400000001642C0FB600000B90000000000000004A00000000000000000000003200000000nvme-cli/Documentation/nvme-changed-ns-list-log.1 '\" t
.\"     Title: nvme-changed-ns-list-log
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-CHANGED\-NS\-L" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-changed-ns-list-log \- Send NVMe Changed Namespace List log page request, returns result and log\&.
.SH "SYNOPSIS"
.sp
.nf
\fInvme changed\-ns\-list\-log\fR <device> [\-\-raw\-binary | \-b]
                        [\-\-output\-format=<fmt> | \-o <fmt>]
.fi
.SH "DESCRIPTION"
.sp
Retrieves the NVMe Changed Namespace List log page from an NVMe device and provides the returned structure\&.
.sp
The <device> parameter is mandatory and must be a NVMe character device (ex: /dev/nvme0)\&.
.sp
On success, the returned Changed Namespace List log structure may be returned in one of several ways depending on the option flags; the structure may parsed by the program and printed in a readable format or the raw buffer may be printed to stdout for another program to parse\&.
.SH "OPTIONS"
.PP
\-b, \-\-raw\-binary
.RS 4
Print the raw Changed Namespace List log buffer to stdout\&.
.RE
.PP
\-o <format>, \-\-output\-format=<format>
.RS 4
Set the reporting format to
\fInormal\fR,
\fIjson\fR, or
\fIbinary\fR\&. Only one output format can be used at a time\&.
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Print the Changed Namespace List Log page in a human readable format:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme changed\-ns\-list\-log /dev/nvme0
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Print the raw Changed Namespace List log to a file:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme changed\-ns\-list\-log /dev/nvme0 \-\-raw\-binary > log\&.raw
.fi
.if n \{\
.RE
.\}
.sp
It is probably a bad idea to not redirect stdout when using this mode\&.
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite
070701015D6CCD000081A4000003E80000006400000001642C0FB600004B49000000000000004A00000000000000000000003500000000nvme-cli/Documentation/nvme-changed-ns-list-log.html  <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-changed-ns-list-log(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-changed-ns-list-log(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-changed-ns-list-log -
   Send NVMe Changed Namespace List log page                            request, returns result and log.
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme changed-ns-list-log</em> &lt;device&gt; [--raw-binary | -b]
                        [--output-format=&lt;fmt&gt; | -o &lt;fmt&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>Retrieves the NVMe Changed Namespace List log page from an NVMe device and
provides the returned structure.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and must be a NVMe character device
(ex: /dev/nvme0).</p></div>
<div class="paragraph"><p>On success, the returned Changed Namespace List log structure may be
returned in one of several ways depending on the option flags; the
structure may parsed by the program and printed in a readable format or
the raw buffer may be printed to stdout for another program to parse.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-b
</dt>
<dt class="hdlist1">
--raw-binary
</dt>
<dd>
<p>
        Print the raw Changed Namespace List log buffer to stdout.
</p>
</dd>
<dt class="hdlist1">
-o &lt;format&gt;
</dt>
<dt class="hdlist1">
--output-format=&lt;format&gt;
</dt>
<dd>
<p>
              Set the reporting format to <em>normal</em>, <em>json</em>, or
              <em>binary</em>. Only one output format can be used at a time.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Print the Changed Namespace List Log page in a human readable format:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme changed-ns-list-log /dev/nvme0</code></pre>
</div></div>
</li>
<li>
<p>
Print the raw Changed Namespace List log to a file:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme changed-ns-list-log /dev/nvme0 --raw-binary &gt; log.raw</code></pre>
</div></div>
<div class="paragraph"><p>It is probably a bad idea to not redirect stdout when using this mode.</p></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
   070701015D6CCE000081A4000003E80000006400000001642C0FB600000484000000000000004A00000000000000000000002E00000000nvme-cli/Documentation/nvme-check-tls-key.txt nvme-check-tls-key(1)
========================

NAME
----
nvme-check-tls-key - Check a generated NVMe TLS PSK

SYNOPSIS
--------
[verse]
'nvme check-tls-key' [--keyring=<name>  | -k <name> ]
		     [--keytype=<type>  | -t <type> ]
		     [--hostnqn=<nqn>   | -n <nqn>  ]
		     [--subsysnqn=<nqn> | -c <nqn>  ]
		     [--keydata=<key>   | -d <key>  ]

DESCRIPTION
-----------
Checks if the key is a valid NVMe TLS PSK in the PSK interchange format
'NVMeTLSkey-1:01:<base64-encoded data>:', and stores the derived 'retained'
TLS key in the keyring if the subsystem NQN is specified.

OPTIONS
-------
-k <name>::
--keyring=<name>::
	Name of the keyring into which the 'retained' TLS key should be
	stored. Default is '.nvme'.

-t <type>::
--keytype=<type>::
	Type of the key for resulting TLS key.
	Default is 'psk'.

-n <nqn>::
--hostnqn=<nqn>::
	Host NVMe Qualified Name (NQN) to be used to derive the
	'retained' TLS key

-c <nqn>::
--subsysnqn=<nqn>::
	Subsystem NVMe Qualified Name (NQN) to be used to derive the
	'retained' TLS key

-d <key>::
--keydata=<key>::
	Key to be checked.

EXAMPLES
--------
No Examples

NVME
----
Part of the nvme-user suite
070701015D6CCF000081A4000003E80000006400000001642C0FB600001030000000000000004A00000000000000000000002F00000000nvme-cli/Documentation/nvme-cmdset-ind-id-ns.1    '\" t
.\"     Title: nvme-cmdset-ind-id-ns
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-CMDSET\-IND\-I" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-cmdset-ind-id-ns \- Send NVMe I/O Command Set Independent Identify Namespace, return result and structure\&.
.SH "SYNOPSIS"
.sp
.nf
\fInvme cmdset\-ind\-id\-ns\fR <device> [\-\-namespace\-id=<nsid> | \-n <nsid>]
                        [\-b | \-\-raw\-binary]
                    [\-\-human\-readable | \-H]
                    [\-\-output\-format=<fmt> | \-o <fmt>]
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, sends an I/O Command Set Independent identify namespace command and provides the result and returned structure\&.
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1)\&. If the character device is given, the \*(Aq\-\-namespace\-id\*(Aq option is mandatory, otherwise it will use the ns\-id of the namespace for the block device you opened\&. For block devices, the ns\-id used can be overridden with the same option\&.
.sp
On success, the structure may be returned in one of several ways depending on the option flags; the structure may be parsed by the program or the raw buffer may be printed to stdout\&.
.SH "OPTIONS"
.PP
\-n <nsid>, \-\-namespace\-id=<nsid>
.RS 4
Retrieve the identify namespace structure for the given nsid\&. This is required for the character devices, or overrides the block nsid if given\&.
.RE
.PP
\-b, \-\-raw\-binary
.RS 4
Print the raw buffer to stdout\&. Structure is not parsed by program\&. This overrides the vendor specific and human readable options\&.
.RE
.PP
\-H, \-\-human\-readable
.RS 4
This option will parse and format many of the bit fields into human\-readable formats\&.
.RE
.PP
\-o <format>, \-\-output\-format=<format>
.RS 4
Set the reporting format to
\fInormal\fR,
\fIjson\fR, or
\fIbinary\fR\&. Only one output format can be used at a time\&.
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Has the program interpret the returned buffer and display the known fields in a human readable format:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme cmdset\-ind\-id\-ns /dev/nvme0n1
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
If using the character device or overriding namespace id:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme cmdset\-ind\-id\-ns /dev/nvme0 \-n 1
# nvme cmdset\-ind\-id\-ns /dev/nvme0n1 \-n 1
# nvme cmdset\-ind\-id\-ns /dev/nvme0 \-\-namespace\-id=1
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Have the program return the raw structure in binary:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme cmdset\-ind\-id\-ns /dev/nvme0n1 \-\-raw\-binary > id_ns\&.raw
# nvme cmdset\-ind\-id\-ns /dev/nvme0n1 \-b > id_ns\&.raw
.fi
.if n \{\
.RE
.\}
.sp
It is probably a bad idea to not redirect stdout when using this mode\&.
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite
070701015D6CD0000081A4000003E80000006400000001642C0FB60000506C000000000000004A00000000000000000000003200000000nvme-cli/Documentation/nvme-cmdset-ind-id-ns.html <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-cmdset-ind-id-ns(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-cmdset-ind-id-ns(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-cmdset-ind-id-ns -
   Send NVMe I/O Command Set Independent Identify Namespace, return result and structure.
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme cmdset-ind-id-ns</em> &lt;device&gt; [--namespace-id=&lt;nsid&gt; | -n &lt;nsid&gt;]
                        [-b | --raw-binary]
                    [--human-readable | -H]
                    [--output-format=&lt;fmt&gt; | -o &lt;fmt&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, sends an I/O Command Set Independent
identify namespace command and provides the result and returned structure.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).
If the character device is given, the <code>'--namespace-id'</code> option is
mandatory, otherwise it will use the ns-id of the namespace for the block
device you opened. For block devices, the ns-id used can be overridden
with the same option.</p></div>
<div class="paragraph"><p>On success, the structure may be returned in one of several ways depending
on the option flags; the structure may be parsed by the program or the
raw buffer may be printed to stdout.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-n &lt;nsid&gt;
</dt>
<dt class="hdlist1">
--namespace-id=&lt;nsid&gt;
</dt>
<dd>
<p>
        Retrieve the identify namespace structure for the given nsid. This
        is required for the character devices, or overrides the block nsid
        if given.
</p>
</dd>
<dt class="hdlist1">
-b
</dt>
<dt class="hdlist1">
--raw-binary
</dt>
<dd>
<p>
        Print the raw buffer to stdout. Structure is not parsed by
        program. This overrides the vendor specific and human readable options.
</p>
</dd>
<dt class="hdlist1">
-H
</dt>
<dt class="hdlist1">
--human-readable
</dt>
<dd>
<p>
        This option will parse and format many of the bit fields
        into human-readable formats.
</p>
</dd>
<dt class="hdlist1">
-o &lt;format&gt;
</dt>
<dt class="hdlist1">
--output-format=&lt;format&gt;
</dt>
<dd>
<p>
              Set the reporting format to <em>normal</em>, <em>json</em>, or
              <em>binary</em>. Only one output format can be used at a time.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Has the program interpret the returned buffer and display the known
fields in a human readable format:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme cmdset-ind-id-ns /dev/nvme0n1</code></pre>
</div></div>
</li>
<li>
<p>
If using the character device or overriding namespace id:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme cmdset-ind-id-ns /dev/nvme0 -n 1
# nvme cmdset-ind-id-ns /dev/nvme0n1 -n 1
# nvme cmdset-ind-id-ns /dev/nvme0 --namespace-id=1</code></pre>
</div></div>
</li>
<li>
<p>
Have the program return the raw structure in binary:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme cmdset-ind-id-ns /dev/nvme0n1 --raw-binary &gt; id_ns.raw
# nvme cmdset-ind-id-ns /dev/nvme0n1 -b &gt; id_ns.raw</code></pre>
</div></div>
<div class="paragraph"><p>It is probably a bad idea to not redirect stdout when using this mode.</p></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
070701015D6CD1000081A4000003E80000006400000001642C0FB6000019CE000000000000004A00000000000000000000002600000000nvme-cli/Documentation/nvme-compare.1 '\" t
.\"     Title: nvme-compare
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-COMPARE" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-compare \- Send an NVMe Compare command, provide results
.SH "SYNOPSIS"
.sp
.nf
\fInvme\-compare\fR <device> [\-\-start\-block=<slba> | \-s <slba>]
                        [\-\-block\-count=<nlb> | \-c <nlb>]
                        [\-\-data\-size=<size> | \-z <size>]
                        [\-\-metadata\-size=<metasize> | \-y <metasize>]
                        [\-\-ref\-tag=<reftag> | \-r <reftag>]
                        [\-\-data=<data\-file> | \-d <data\-file>]
                        [\-\-metadata=<meta> | \-M <meta>]
                        [\-\-prinfo=<prinfo> | \-p <prinfo>]
                        [\-\-app\-tag\-mask=<appmask> | \-m <appmask>]
                        [\-\-app\-tag=<apptag> | \-a <apptag>]
                        [\-\-limited\-retry | \-l]
                        [\-\-force\-unit\-access | \-f]
                        [\-\-dir\-type=<type> | \-T <type>]
                        [\-\-dir\-spec=<spec> | \-S <spec>]
                        [\-\-dsm=<dsm> | \-D <dsm>]
                        [\-\-show\-command | \-v]
                        [\-\-dry\-run | \-w]
                        [\-\-latency | \-t]
                        [\-\-storage\-tag<storage\-tag> | \-g <storage\-tag>]
                        [\-\-storage\-tag\-check | \-C]
                        [\-\-force]
.fi
.SH "DESCRIPTION"
.sp
The Compare command reads the logical blocks specified by the command from the medium and compares the data read to a comparison data buffer transferred as part of the command\&. If the data read from the controller and the comparison data buffer are equivalent with no miscompares, then the command completes successfully\&. If there is any miscompare, the command completes with an error of Compare Failure\&. If metadata is provided, then a comparison is also performed for the metadata\&.
.SH "OPTIONS"
.PP
\-s <slba>, \-\-start\-block=<slba>
.RS 4
64\-bit address of the first block to access\&.
.RE
.PP
\-c <nlb>, \-\-block\-count=<nlb>
.RS 4
Number of blocks to be accessed (zero\-based)\&.
.RE
.PP
\-z <size>, \-\-data\-size=<size>
.RS 4
Size of data to be compared in bytes\&.
.RE
.PP
\-y <metasize>, \-\-metadata\-size=<metasize>
.RS 4
Size of metadata to be transferred in bytes\&.
.RE
.PP
\-r <reftag>, \-\-ref\-tag=<reftag>
.RS 4
Reference Tag for Protection Information
.RE
.PP
\-d <data\-file>, \-\-data=<data\-file>
.RS 4
Data file\&.
.RE
.PP
\-M <meta>, \-\-metadata=<meta>
.RS 4
Metadata file\&.
.RE
.PP
\-p <prinfo>, \-\-prinfo=<prinfo>
.RS 4
Protection Information and check field\&.
.RE
.sp
+
.TS
allbox tab(:);
lt lt
lt lt
lt lt
lt lt
lt lt
lt lt.
T{
.sp
Bit
T}:T{
.sp
Description
T}
T{
.sp
3
T}:T{
.sp
PRACT: Protection Information Action\&. When set to 1, PI is stripped/inserted on read/write when the block format\(cqs metadata size is 8\&. When set to 0, metadata is passes\&.
T}
T{
.sp
2:0
T}:T{
.sp
PRCHK: Protection Information Check:
T}
T{
.sp
2
T}:T{
.sp
Set to 1 enables checking the guard tag
T}
T{
.sp
1
T}:T{
.sp
Set to 1 enables checking the application tag
T}
T{
.sp
0
T}:T{
.sp
Set to 1 enables checking the reference tag
T}
.TE
.sp 1
.PP
\-m <appmask>, \-\-app\-tag\-mask=<appmask>
.RS 4
App Tag Mask for Protection Information
.RE
.PP
\-a <apptag>, \-\-app\-tag=<apptag>
.RS 4
App Tag for Protection Information
.RE
.PP
\-l, \-\-limited\-retry
.RS 4
Number of limited attempts to media\&.
.RE
.PP
\-f, \-\-force\-unit\-access
.RS 4
FUA option to guarantee that data is stored to media\&.
.RE
.PP
\-T <type>, \-\-dir\-type=<type>
.RS 4
Optional directive type\&. The nvme\-cli only enforces the value be in the defined range for the directive type, though the NVMe specification (1\&.3a) defines only one directive, 01h, for write stream identifiers\&.
.RE
.PP
\-S <spec>, \-\-dir\-spec=<spec>
.RS 4
Optional field for directive specifics\&. When used with write streams, this value is defined to be the write stream identifier\&. The nvme\-cli will not validate the stream requested is within the controller\(cqs capabilities\&.
.RE
.PP
\-D <dsm>, \-\-dsm=<dsm>
.RS 4
The optional data set management attributes for this command\&. The argument for this is the least significant 8 bits of the DSM field in a write command; the most significant 16 bits of the field come from the directive specific field, if used\&. This may be used to set attributes for the LBAs being written, like access frequency, type, latency, among other things, as well as yet to be defined types\&. Please consult the NVMe specification for detailed breakdown of how to use this field\&.
.RE
.PP
\-v, \-\-show\-cmd
.RS 4
Print out the command to be sent\&.
.RE
.PP
\-w, \-\-dry\-run
.RS 4
Do not actually send the command\&. If want to use \-\-dry\-run option, \-\-show\-cmd option
\fImust\fR
be set\&. Otherwise \-\-dry\-run option will be
\fIignored\fR\&.
.RE
.PP
\-t, \-\-latency
.RS 4
Print out the latency the IOCTL took (in us)\&.
.RE
.PP
\-g <storage\-tag>, \-\-storage\-tag=<storage\-tag>
.RS 4
Variable Sized Expected Logical Block Storage Tag(ELBST)\&.
.RE
.PP
\-C, \-\-storage\-tag\-check
.RS 4
This flag enables Storage Tag field checking as part of end\-to\-end data protection processing\&.
.RE
.PP
\-\-force
.RS 4
Ignore namespace is currently busy and performed the operation even though\&.
.RE
.SH "EXAMPLES"
.sp
No examples yet\&.
.SH "NVME"
.sp
Part of the nvme\-user suite
  070701015D6CD2000081A4000003E80000006400000001642C0FB600006304000000000000004A00000000000000000000002900000000nvme-cli/Documentation/nvme-compare.html  <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-compare(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-compare(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-compare -
   Send an NVMe Compare command, provide results
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme-compare</em> &lt;device&gt; [--start-block=&lt;slba&gt; | -s &lt;slba&gt;]
                        [--block-count=&lt;nlb&gt; | -c &lt;nlb&gt;]
                        [--data-size=&lt;size&gt; | -z &lt;size&gt;]
                        [--metadata-size=&lt;metasize&gt; | -y &lt;metasize&gt;]
                        [--ref-tag=&lt;reftag&gt; | -r &lt;reftag&gt;]
                        [--data=&lt;data-file&gt; | -d &lt;data-file&gt;]
                        [--metadata=&lt;meta&gt; | -M &lt;meta&gt;]
                        [--prinfo=&lt;prinfo&gt; | -p &lt;prinfo&gt;]
                        [--app-tag-mask=&lt;appmask&gt; | -m &lt;appmask&gt;]
                        [--app-tag=&lt;apptag&gt; | -a &lt;apptag&gt;]
                        [--limited-retry | -l]
                        [--force-unit-access | -f]
                        [--dir-type=&lt;type&gt; | -T &lt;type&gt;]
                        [--dir-spec=&lt;spec&gt; | -S &lt;spec&gt;]
                        [--dsm=&lt;dsm&gt; | -D &lt;dsm&gt;]
                        [--show-command | -v]
                        [--dry-run | -w]
                        [--latency | -t]
                        [--storage-tag&lt;storage-tag&gt; | -g &lt;storage-tag&gt;]
                        [--storage-tag-check | -C]
                        [--force]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>The Compare command reads the logical blocks specified by the command
from the medium and compares the data read to a comparison data buffer
transferred as part of the command. If the data read from the controller
and the comparison data buffer are equivalent with no miscompares,
then the command completes successfully. If there is any miscompare,
the command completes with an error of Compare Failure. If metadata is
provided, then a comparison is also performed for the metadata.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-s &lt;slba&gt;
</dt>
<dt class="hdlist1">
--start-block=&lt;slba&gt;
</dt>
<dd>
<p>
        64-bit address of the first block to access.
</p>
</dd>
<dt class="hdlist1">
-c &lt;nlb&gt;
</dt>
<dt class="hdlist1">
--block-count=&lt;nlb&gt;
</dt>
<dd>
<p>
        Number of blocks to be accessed (zero-based).
</p>
</dd>
<dt class="hdlist1">
-z &lt;size&gt;
</dt>
<dt class="hdlist1">
--data-size=&lt;size&gt;
</dt>
<dd>
<p>
        Size of data to be compared in bytes.
</p>
</dd>
<dt class="hdlist1">
-y &lt;metasize&gt;
</dt>
<dt class="hdlist1">
--metadata-size=&lt;metasize&gt;
</dt>
<dd>
<p>
        Size of metadata to be transferred in bytes.
</p>
</dd>
<dt class="hdlist1">
-r &lt;reftag&gt;
</dt>
<dt class="hdlist1">
--ref-tag=&lt;reftag&gt;
</dt>
<dd>
<p>
        Reference Tag for Protection Information
</p>
</dd>
<dt class="hdlist1">
-d &lt;data-file&gt;
</dt>
<dt class="hdlist1">
--data=&lt;data-file&gt;
</dt>
<dd>
<p>
        Data file.
</p>
</dd>
<dt class="hdlist1">
-M &lt;meta&gt;
</dt>
<dt class="hdlist1">
--metadata=&lt;meta&gt;
</dt>
<dd>
<p>
        Metadata file.
</p>
</dd>
<dt class="hdlist1">
-p &lt;prinfo&gt;
</dt>
<dt class="hdlist1">
--prinfo=&lt;prinfo&gt;
</dt>
<dd>
<p>
        Protection Information and check field.
</p>
</dd>
</dl></div>
<div class="paragraph"><p>+</p></div>
<div class="tableblock">
<table rules="all"
width="100%"
frame="border"
cellspacing="0" cellpadding="4">
<col width="50%" />
<col width="50%" />
<tbody>
<tr>
<td align="left" valign="top"><p class="table">Bit</p></td>
<td align="left" valign="top"><p class="table">Description</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">3</p></td>
<td align="left" valign="top"><p class="table">PRACT: Protection Information Action. When set to 1, PI is stripped/inserted
on read/write when the block format&#8217;s metadata size is 8. When set to 0,
metadata is passes.</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">2:0</p></td>
<td align="left" valign="top"><p class="table">PRCHK: Protection Information Check:</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">2</p></td>
<td align="left" valign="top"><p class="table">Set to 1 enables checking the guard tag</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">1</p></td>
<td align="left" valign="top"><p class="table">Set to 1 enables checking the application tag</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">0</p></td>
<td align="left" valign="top"><p class="table">Set to 1 enables checking the reference tag</p></td>
</tr>
</tbody>
</table>
</div>
<div class="dlist"><dl>
<dt class="hdlist1">
-m &lt;appmask&gt;
</dt>
<dt class="hdlist1">
--app-tag-mask=&lt;appmask&gt;
</dt>
<dd>
<p>
        App Tag Mask for Protection Information
</p>
</dd>
<dt class="hdlist1">
-a &lt;apptag&gt;
</dt>
<dt class="hdlist1">
--app-tag=&lt;apptag&gt;
</dt>
<dd>
<p>
        App Tag for Protection Information
</p>
</dd>
<dt class="hdlist1">
-l
</dt>
<dt class="hdlist1">
--limited-retry
</dt>
<dd>
<p>
        Number of limited attempts to media.
</p>
</dd>
<dt class="hdlist1">
-f
</dt>
<dt class="hdlist1">
--force-unit-access
</dt>
<dd>
<p>
        FUA option to guarantee that data is stored to media.
</p>
</dd>
<dt class="hdlist1">
-T &lt;type&gt;
</dt>
<dt class="hdlist1">
--dir-type=&lt;type&gt;
</dt>
<dd>
<p>
        Optional directive type. The nvme-cli only enforces the value
        be in the defined range for the directive type, though the NVMe
        specification (1.3a) defines only one directive, 01h, for write
        stream identifiers.
</p>
</dd>
<dt class="hdlist1">
-S &lt;spec&gt;
</dt>
<dt class="hdlist1">
--dir-spec=&lt;spec&gt;
</dt>
<dd>
<p>
        Optional field for directive specifics. When used with
        write streams, this value is defined to be the write stream
        identifier. The nvme-cli will not validate the stream requested
        is within the controller&#8217;s capabilities.
</p>
</dd>
<dt class="hdlist1">
-D &lt;dsm&gt;
</dt>
<dt class="hdlist1">
--dsm=&lt;dsm&gt;
</dt>
<dd>
<p>
        The optional data set management attributes for this command. The argument
        for this is the least significant 8 bits of the DSM field in a write
        command; the most significant 16 bits of the field come from the directive
        specific field, if used. This may be used to set attributes for
        the LBAs being written, like access frequency, type, latency,
        among other things, as well as yet to be defined types. Please
        consult the NVMe specification for detailed breakdown of how to
        use this field.
</p>
</dd>
<dt class="hdlist1">
-v
</dt>
<dt class="hdlist1">
--show-cmd
</dt>
<dd>
<p>
        Print out the command to be sent.
</p>
</dd>
<dt class="hdlist1">
-w
</dt>
<dt class="hdlist1">
--dry-run
</dt>
<dd>
<p>
        Do not actually send the command. If want to use --dry-run option,
        --show-cmd option <em>must</em> be set. Otherwise --dry-run option will be
        <em>ignored</em>.
</p>
</dd>
<dt class="hdlist1">
-t
</dt>
<dt class="hdlist1">
--latency
</dt>
<dd>
<p>
        Print out the latency the IOCTL took (in us).
</p>
</dd>
<dt class="hdlist1">
-g &lt;storage-tag&gt;
</dt>
<dt class="hdlist1">
--storage-tag=&lt;storage-tag&gt;
</dt>
<dd>
<p>
        Variable Sized Expected Logical Block Storage Tag(ELBST).
</p>
</dd>
<dt class="hdlist1">
-C
</dt>
<dt class="hdlist1">
--storage-tag-check
</dt>
<dd>
<p>
        This flag enables Storage Tag field checking as part of end-to-end
        data protection processing.
</p>
</dd>
<dt class="hdlist1">
--force
</dt>
<dd>
<p>
    Ignore namespace is currently busy and performed the operation
    even though.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="paragraph"><p>No examples yet.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
070701015D6CD3000081A4000003E80000006400000001642C0FB60000112C000000000000004A00000000000000000000002800000000nvme-cli/Documentation/nvme-compare.txt   nvme-compare(1)
===============

NAME
----
nvme-compare - Send an NVMe Compare command, provide results

SYNOPSIS
--------
[verse]
'nvme-compare' <device> [--start-block=<slba> | -s <slba>]
			[--block-count=<nlb> | -c <nlb>]
			[--data-size=<size> | -z <size>]
			[--metadata-size=<metasize> | -y <metasize>]
			[--ref-tag=<reftag> | -r <reftag>]
			[--data=<data-file> | -d <data-file>]
			[--metadata=<meta> | -M <meta>]
			[--prinfo=<prinfo> | -p <prinfo>]
			[--app-tag-mask=<appmask> | -m <appmask>]
			[--app-tag=<apptag> | -a <apptag>]
			[--limited-retry | -l]
			[--force-unit-access | -f]
			[--dir-type=<type> | -T <type>]
			[--dir-spec=<spec> | -S <spec>]
			[--dsm=<dsm> | -D <dsm>]
			[--show-command | -v]
			[--dry-run | -w]
			[--latency | -t]
			[--storage-tag<storage-tag> | -g <storage-tag>]
			[--storage-tag-check | -C]
			[--force]

DESCRIPTION
-----------
The Compare command reads the logical blocks specified by the command
from the medium and compares the data read to a comparison data buffer
transferred as part of the command. If the data read from the controller
and the comparison data buffer are equivalent with no miscompares,
then the command completes successfully. If there is any miscompare,
the command completes with an error of Compare Failure. If metadata is
provided, then a comparison is also performed for the metadata.

OPTIONS
-------
-s <slba>::
--start-block=<slba>::
	64-bit address of the first block to access.

-c <nlb>::
--block-count=<nlb>::
	Number of blocks to be accessed (zero-based).

-z <size>::
--data-size=<size>::
	Size of data to be compared in bytes.

-y <metasize>::
--metadata-size=<metasize>::
	Size of metadata to be transferred in bytes.

-r <reftag>::
--ref-tag=<reftag>::
	Reference Tag for Protection Information

-d <data-file>::
--data=<data-file>::
	Data file.

-M <meta>::
--metadata=<meta>::
	Metadata file.

-p <prinfo>::
--prinfo=<prinfo>::
	Protection Information and check field.

+
[]
|=================
|Bit|Description
|3|PRACT: Protection Information Action. When set to 1, PI is stripped/inserted
on read/write when the block format's metadata size is 8. When set to 0,
metadata is passes.
|2:0|PRCHK: Protection Information Check:
|2|Set to 1 enables checking the guard tag
|1|Set to 1 enables checking the application tag
|0|Set to 1 enables checking the reference tag
|=================

-m <appmask>::
--app-tag-mask=<appmask>::
	App Tag Mask for Protection Information

-a <apptag>::
--app-tag=<apptag>::
	App Tag for Protection Information

-l::
--limited-retry::
	Number of limited attempts to media.

-f::
--force-unit-access::
	FUA option to guarantee that data is stored to media.

-T <type>::
--dir-type=<type>::
	Optional directive type. The nvme-cli only enforces the value
	be in the defined range for the directive type, though the NVMe
	specification (1.3a) defines only one directive, 01h, for write
	stream identifiers.

-S <spec>::
--dir-spec=<spec>::
	Optional field for directive specifics. When used with
	write streams, this value is defined to be the write stream
	identifier. The nvme-cli will not validate the stream requested
	is within the controller's capabilities.

-D <dsm>::
--dsm=<dsm>::
	The optional data set management attributes for this command. The argument
	for this is the least significant 8 bits of the DSM field in a write
	command; the most significant 16 bits of the field come from the directive
	specific field, if used. This may be used to set attributes for
	the LBAs being written, like access frequency, type, latency,
	among other things, as well as yet to be defined types. Please
	consult the NVMe specification for detailed breakdown of how to
	use this field.
-v::
--show-cmd::
	Print out the command to be sent.

-w::
--dry-run::
	Do not actually send the command. If want to use --dry-run option,
	--show-cmd option _must_ be set. Otherwise --dry-run option will be
	_ignored_.

-t::
--latency::
	Print out the latency the IOCTL took (in us).

-g <storage-tag>::
--storage-tag=<storage-tag>::
	Variable Sized Expected Logical Block Storage Tag(ELBST).

-C::
--storage-tag-check::
	This flag enables Storage Tag field checking as part of end-to-end
	data protection processing.

--force::
    Ignore namespace is currently busy and performed the operation
    even though.

EXAMPLES
--------
No examples yet.

NVME
----
Part of the nvme-user suite
070701015D6CD4000081A4000003E80000006400000001642C0FB60000262F000000000000004A00000000000000000000002A00000000nvme-cli/Documentation/nvme-connect-all.1 '\" t
.\"     Title: nvme-connect-all
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-CONNECT\-ALL" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-connect-all \- Discover and Connect to Fabrics controllers\&.
.SH "SYNOPSIS"
.sp
.nf
\fInvme connect\-all\fR
                [\-\-transport=<trtype>     | \-t <trtype>]
                [\-\-nqn=<subnqn>           | \-n <subnqn>]
                [\-\-traddr=<traddr>        | \-a <traddr>]
                [\-\-trsvcid=<trsvcid>      | \-s <trsvcid>]
                [\-\-host\-traddr=<traddr>   | \-w <traddr>]
                [\-\-host\-iface=<iface>     | \-f <iface>]
                [\-\-hostnqn=<hostnqn>      | \-q <hostnqn>]
                [\-\-hostid=<hostid>        | \-I <hostid>]
                [\-\-raw=<filename>         | \-r <filename>]
                [\-\-device=<device>        | \-d <device>]
                [\-\-cfg\-file=<cfg>         | \-C <cfg>]
                [\-\-keep\-alive\-tmo=<sec>   | \-k <sec>]
                [\-\-reconnect\-delay=<#>    | \-c <#>]
                [\-\-ctrl\-loss\-tmo=<#>      | \-l <#>]
                [\-\-nr\-io\-queues=<#>       | \-i <#>]
                [\-\-nr\-write\-queues=<#>    | \-W <#>]
                [\-\-nr\-poll\-queues=<#>     | \-P <#>]
                [\-\-queue\-size=<#>         | \-Q <#>]
                [\-\-keyring=<#>                    ]
                [\-\-tls_key=<#>                    ]
                [\-\-hdr\-digest             | \-g]
                [\-\-data\-digest            | \-G]
                [\-\-persistent             | \-p]
                [\-\-tls                        ]
                [\-\-quiet                  | \-S]
                [\-\-dump\-config            | \-O]
.fi
.SH "DESCRIPTION"
.sp
Send one or more Discovery requests to a NVMe over Fabrics Discovery Controller, and create controllers for the returned discovery records\&.
.sp
If no parameters are given, then \fInvme connect\-all\fR will attempt to find a /usr/local/etc/nvme/discovery\&.conf file to use to supply a list of connect\-all commands to run\&. If no /usr/local/etc/nvme/discovery\&.conf file exists, the command will quit with an error\&.
.sp
Otherwise a specific Discovery Controller should be specified using the \-\-transport, \-\-traddr and if necessary the \-\-trsvcid and a Discovery request will be sent to the specified Discovery Controller\&.
.sp
See the documentation for the nvme\-discover(1) command for further background\&.
.SH "OPTIONS"
.PP
\-t <trtype>, \-\-transport=<trtype>
.RS 4
This field specifies the network fabric being used for a NVMe\-over\-Fabrics network\&. Current string values include:
.TS
allbox tab(:);
lt lt
lt lt
lt lt
lt lt
lt lt.
T{
Value
T}:T{
Definition
T}
T{
rdma
T}:T{
The network fabric is an rdma network (RoCE, iWARP, Infiniband, basic rdma, etc)
T}
T{
fc
T}:T{
\fBWIP\fR
The network fabric is a Fibre Channel network\&.
T}
T{
tcp
T}:T{
The network fabric is a TCP/IP network\&.
T}
T{
loop
T}:T{
Connect to a NVMe over Fabrics target on the local host
T}
.TE
.sp 1
.RE
.PP
\-n <subnqn>, \-\-nqn <subnqn>
.RS 4
This field specifies the name for the NVMe subsystem to connect to\&.
.RE
.PP
\-a <traddr>, \-\-traddr=<traddr>
.RS 4
This field specifies the network address of the Discovery Controller\&. For transports using IP addressing (e\&.g\&. rdma) this should be an IP\-based address (ex\&. IPv4)\&.
.RE
.PP
\-s <trsvcid>, \-\-trsvcid=<trsvcid>
.RS 4
This field specifies the transport service id\&. For transports using IP addressing (e\&.g\&. rdma) this field is the port number\&. By default, the IP port number for the RDMA transport is 4420\&.
.RE
.PP
\-w <traddr>, \-\-host\-traddr=<traddr>
.RS 4
This field specifies the network address used on the host to connect to the Controller\&. For TCP, this sets the source address on the socket\&.
.RE
.PP
\-f <iface>, \-\-host\-iface=<iface>
.RS 4
This field specifies the network interface used on the host to connect to the Controller (e\&.g\&. IP eth1, enp2s0, enx78e7d1ea46da)\&. This forces the connection to be made on a specific interface instead of letting the system decide\&.
.RE
.PP
\-q <hostnqn>, \-\-hostnqn=<hostnqn>
.RS 4
Overrides the default Host NQN that identifies the NVMe Host\&. If this option is not specified, the default is read from /usr/local/etc/nvme/hostnqn first\&. If that does not exist, the autogenerated NQN value from the NVMe Host kernel module is used next\&. The Host NQN uniquely identifies the NVMe Host, and may be used by the the Discovery Controller to control what NVMe Target resources are allocated to the NVMe Host for a connection\&.
.RE
.PP
\-I <hostid>, \-\-hostid=<hostid>
.RS 4
UUID(Universally Unique Identifier) to be discovered which should be formatted\&.
.RE
.PP
\-r <filename>, \-\-raw=<filename>
.RS 4
This field will take the output of the
\fInvme connect\-all\fR
command and dump it to a raw binary file\&. By default
\fInvme connect\-all\fR
will dump the output to stdout\&.
.RE
.PP
\-d <device>, \-\-device=<device>
.RS 4
This field takes a device as input\&. It must be a persistent device associated with a Discovery Controller previously created by the command "connect\-all" or "discover"\&. <device> follows the format nvme*, eg\&. nvme0, nvme1\&.
.RE
.PP
\-C <cfg>, \-\-config\-file=<cfg>
.RS 4
Use the specified JSON configuration file instead of the default /usr/local/etc/nvme/config\&.json file or
\fInone\fR
to not read in an existing configuration file\&. The JSON configuration file format is documented in
\m[blue]\fBhttps://github\&.com/linux\-nvme/libnvme/doc/config\-schema\&.json\fR\m[]
.RE
.PP
\-k <#>, \-\-keep\-alive\-tmo=<#>
.RS 4
Overrides the default keep alive timeout (in seconds)\&. This option will be ignored for discovery, but will be passed on to the subsequent connect call\&.
.RE
.PP
\-c <#>, \-\-reconnect\-delay=<#>
.RS 4
Overrides the default delay (in seconds) before reconnect is attempted after a connect loss\&.
.RE
.PP
\-l <#>, \-\-ctrl\-loss\-tmo=<#>
.RS 4
Overrides the default controller loss timeout period (in seconds)\&.
.RE
.PP
\-i <#>, \-\-nr\-io\-queues=<#>
.RS 4
Overrides the default number of I/O queues create by the driver\&. This option will be ignored for discovery, but will be passed on to the subsequent connect call\&.
.RE
.PP
\-W <#>, \-\-nr\-write\-queues=<#>
.RS 4
Adds additional queues that will be used for write I/O\&.
.RE
.PP
\-P <#>, \-\-nr\-poll\-queues=<#>
.RS 4
Adds additional queues that will be used for polling latency sensitive I/O\&.
.RE
.PP
\-Q <#>, \-\-queue\-size=<#>
.RS 4
Overrides the default number of elements in the I/O queues created by the driver\&. This option will be ignored for discovery, but will be passed on to the subsequent connect call\&.
.RE
.PP
\-\-keyring=<#>
.RS 4
Keyring for TLS key lookup\&.
.RE
.PP
\-\-tls_key=<#>
.RS 4
TLS key for the connection (TCP)\&.
.RE
.PP
\-g, \-\-hdr\-digest
.RS 4
Generates/verifies header digest (TCP)\&.
.RE
.PP
\-G, \-\-data\-digest
.RS 4
Generates/verifies data digest (TCP)\&.
.RE
.PP
\-p, \-\-persistent
.RS 4
Don\(cqt remove the discovery controller after retrieving the discovery log page\&.
.RE
.PP
\-\-tls
.RS 4
Enable TLS encryption (TCP)\&.
.RE
.PP
\-S, \-\-quiet
.RS 4
Suppress error messages\&.
.RE
.PP
\-O, \-\-dump\-config
.RS 4
Print out resulting JSON configuration file to stdout\&.
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Connect to all records returned by the Discover Controller with IP4 address 192\&.168\&.1\&.3 for all resources allocated for NVMe Host name host1\-rogue\-nqn on the RDMA network\&. Port 4420 is used by default:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme connect\-all \-\-transport=rdma \-\-traddr=192\&.168\&.1\&.3 \e
\-\-hostnqn=host1\-rogue\-nqn
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Issue a
\fInvme connect\-all\fR
command using a /usr/local/etc/nvme/discovery\&.conf file:
.sp
.if n \{\
.RS 4
.\}
.nf
# Machine default \*(Aqnvme discover\*(Aq commands\&.  Query the
# Discovery Controller\*(Aqs two ports (some resources may only
# be accessible on a single port)\&.  Note an official
# nqn (Host) name defined in the NVMe specification is being used
# in this example\&.
\-t rdma \-a 192\&.168\&.69\&.33 \-s 4420 \-q nqn\&.2014\-08\&.com\&.example:nvme:nvm\-subsystem\-sn\-d78432
\-t rdma \-a 192\&.168\&.1\&.4   \-s 4420 \-q nqn\&.2014\-08\&.com\&.example:nvme:nvm\-subsystem\-sn\-d78432

At the prompt type "nvme connect\-all"\&.
.fi
.if n \{\
.RE
.\}
.RE
.SH "SEE ALSO"
.sp
nvme\-discover(1) nvme\-connect(1)
.SH "NVME"
.sp
Part of the nvme\-user suite
 070701015D6CD5000081A4000003E80000006400000001642C0FB6000071B1000000000000004A00000000000000000000002D00000000nvme-cli/Documentation/nvme-connect-all.html  <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-connect-all(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-connect-all(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-connect-all -
   Discover and Connect to Fabrics controllers.
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme connect-all</em>
                [--transport=&lt;trtype&gt;     | -t &lt;trtype&gt;]
                [--nqn=&lt;subnqn&gt;           | -n &lt;subnqn&gt;]
                [--traddr=&lt;traddr&gt;        | -a &lt;traddr&gt;]
                [--trsvcid=&lt;trsvcid&gt;      | -s &lt;trsvcid&gt;]
                [--host-traddr=&lt;traddr&gt;   | -w &lt;traddr&gt;]
                [--host-iface=&lt;iface&gt;     | -f &lt;iface&gt;]
                [--hostnqn=&lt;hostnqn&gt;      | -q &lt;hostnqn&gt;]
                [--hostid=&lt;hostid&gt;        | -I &lt;hostid&gt;]
                [--raw=&lt;filename&gt;         | -r &lt;filename&gt;]
                [--device=&lt;device&gt;        | -d &lt;device&gt;]
                [--cfg-file=&lt;cfg&gt;         | -C &lt;cfg&gt;]
                [--keep-alive-tmo=&lt;sec&gt;   | -k &lt;sec&gt;]
                [--reconnect-delay=&lt;#&gt;    | -c &lt;#&gt;]
                [--ctrl-loss-tmo=&lt;#&gt;      | -l &lt;#&gt;]
                [--nr-io-queues=&lt;#&gt;       | -i &lt;#&gt;]
                [--nr-write-queues=&lt;#&gt;    | -W &lt;#&gt;]
                [--nr-poll-queues=&lt;#&gt;     | -P &lt;#&gt;]
                [--queue-size=&lt;#&gt;         | -Q &lt;#&gt;]
                [--keyring=&lt;#&gt;                    ]
                [--tls_key=&lt;#&gt;                    ]
                [--hdr-digest             | -g]
                [--data-digest            | -G]
                [--persistent             | -p]
                [--tls                        ]
                [--quiet                  | -S]
                [--dump-config            | -O]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>Send one or more Discovery requests to a NVMe over Fabrics Discovery
Controller, and create controllers for the returned discovery records.</p></div>
<div class="paragraph"><p>If no parameters are given, then <em>nvme connect-all</em> will attempt to
find a /usr/local/etc/nvme/discovery.conf file to use to supply a list of
connect-all commands to run. If no /usr/local/etc/nvme/discovery.conf file
exists, the command will quit with an error.</p></div>
<div class="paragraph"><p>Otherwise a specific Discovery Controller should be specified using the
--transport, --traddr and if necessary the --trsvcid and a Discovery
request will be sent to the specified Discovery Controller.</p></div>
<div class="paragraph"><p>See the documentation for the nvme-discover(1) command for further
background.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-t &lt;trtype&gt;
</dt>
<dt class="hdlist1">
--transport=&lt;trtype&gt;
</dt>
<dd>
<p>
        This field specifies the network fabric being used for
        a NVMe-over-Fabrics network.  Current string values include:
</p>
<div class="tableblock">
<table rules="all"
width="100%"
frame="border"
cellspacing="0" cellpadding="4">
<col width="50%" />
<col width="50%" />
<tbody>
<tr>
<td align="left" valign="top"><p class="table">Value</p></td>
<td align="left" valign="top"><p class="table">Definition</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">rdma</p></td>
<td align="left" valign="top"><p class="table">The network fabric is an rdma network (RoCE, iWARP, Infiniband, basic rdma, etc)</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">fc</p></td>
<td align="left" valign="top"><p class="table"><strong>WIP</strong> The network fabric is a Fibre Channel network.</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">tcp</p></td>
<td align="left" valign="top"><p class="table">The network fabric is a TCP/IP network.</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">loop</p></td>
<td align="left" valign="top"><p class="table">Connect to a NVMe over Fabrics target on the local host</p></td>
</tr>
</tbody>
</table>
</div>
</dd>
<dt class="hdlist1">
-n &lt;subnqn&gt;
</dt>
<dt class="hdlist1">
--nqn &lt;subnqn&gt;
</dt>
<dd>
<p>
        This field specifies the name for the NVMe subsystem to connect to.
</p>
</dd>
<dt class="hdlist1">
-a &lt;traddr&gt;
</dt>
<dt class="hdlist1">
--traddr=&lt;traddr&gt;
</dt>
<dd>
<p>
        This field specifies the network address of the Discovery Controller.
        For transports using IP addressing (e.g. rdma) this should be an
        IP-based address (ex. IPv4).
</p>
</dd>
<dt class="hdlist1">
-s &lt;trsvcid&gt;
</dt>
<dt class="hdlist1">
--trsvcid=&lt;trsvcid&gt;
</dt>
<dd>
<p>
        This field specifies the transport service id.  For transports using IP
        addressing (e.g. rdma) this field is the port number. By default, the IP
        port number for the RDMA transport is 4420.
</p>
</dd>
<dt class="hdlist1">
-w &lt;traddr&gt;
</dt>
<dt class="hdlist1">
--host-traddr=&lt;traddr&gt;
</dt>
<dd>
<p>
        This field specifies the network address used on the host to connect
        to the Controller. For TCP, this sets the source address on the socket.
</p>
</dd>
<dt class="hdlist1">
-f &lt;iface&gt;
</dt>
<dt class="hdlist1">
--host-iface=&lt;iface&gt;
</dt>
<dd>
<p>
        This field specifies the network interface used on the host to connect
        to the Controller (e.g. IP eth1, enp2s0, enx78e7d1ea46da). This forces
        the connection to be made on a specific interface instead of letting
        the system decide.
</p>
</dd>
<dt class="hdlist1">
-q &lt;hostnqn&gt;
</dt>
<dt class="hdlist1">
--hostnqn=&lt;hostnqn&gt;
</dt>
<dd>
<p>
        Overrides the default Host NQN that identifies the NVMe Host.
        If this option is not specified, the default is read from
        /usr/local/etc/nvme/hostnqn first. If that does not exist, the
        autogenerated NQN value from the NVMe Host kernel module is used next.
        The Host NQN uniquely identifies the NVMe Host, and may be used by the
        the Discovery Controller to control what NVMe Target resources are
        allocated to the NVMe Host for a connection.
</p>
</dd>
<dt class="hdlist1">
-I &lt;hostid&gt;
</dt>
<dt class="hdlist1">
--hostid=&lt;hostid&gt;
</dt>
<dd>
<p>
        UUID(Universally Unique Identifier) to be discovered which should be
        formatted.
</p>
</dd>
<dt class="hdlist1">
-r &lt;filename&gt;
</dt>
<dt class="hdlist1">
--raw=&lt;filename&gt;
</dt>
<dd>
<p>
        This field will take the output of the <em>nvme connect-all</em> command
        and dump it to a raw binary file. By default <em>nvme connect-all</em> will
        dump the output to stdout.
</p>
</dd>
<dt class="hdlist1">
-d &lt;device&gt;
</dt>
<dt class="hdlist1">
--device=&lt;device&gt;
</dt>
<dd>
<p>
        This field takes a device as input. It must be a persistent device
        associated with a Discovery Controller previously created by the
        command "connect-all" or "discover". &lt;device&gt; follows the format
        nvme*, eg. nvme0, nvme1.
</p>
</dd>
<dt class="hdlist1">
-C &lt;cfg&gt;
</dt>
<dt class="hdlist1">
--config-file=&lt;cfg&gt;
</dt>
<dd>
<p>
        Use the specified JSON configuration file instead of the
        default /usr/local/etc/nvme/config.json file or <em>none</em> to not read in
        an existing configuration file. The JSON configuration file
        format is documented in
        <a href="https://github.com/linux-nvme/libnvme/doc/config-schema.json">https://github.com/linux-nvme/libnvme/doc/config-schema.json</a>
</p>
</dd>
<dt class="hdlist1">
-k &lt;#&gt;
</dt>
<dt class="hdlist1">
--keep-alive-tmo=&lt;#&gt;
</dt>
<dd>
<p>
        Overrides the default keep alive timeout (in seconds). This
        option will be ignored for discovery, but will be passed on to
        the subsequent connect call.
</p>
</dd>
<dt class="hdlist1">
-c &lt;#&gt;
</dt>
<dt class="hdlist1">
--reconnect-delay=&lt;#&gt;
</dt>
<dd>
<p>
        Overrides the default delay (in seconds) before reconnect is attempted
        after a connect loss.
</p>
</dd>
<dt class="hdlist1">
-l &lt;#&gt;
</dt>
<dt class="hdlist1">
--ctrl-loss-tmo=&lt;#&gt;
</dt>
<dd>
<p>
        Overrides the default controller loss timeout period (in seconds).
</p>
</dd>
<dt class="hdlist1">
-i &lt;#&gt;
</dt>
<dt class="hdlist1">
--nr-io-queues=&lt;#&gt;
</dt>
<dd>
<p>
        Overrides the default number of I/O queues create by the driver.
        This option will be ignored for discovery, but will be passed on
        to the subsequent connect call.
</p>
</dd>
<dt class="hdlist1">
-W &lt;#&gt;
</dt>
<dt class="hdlist1">
--nr-write-queues=&lt;#&gt;
</dt>
<dd>
<p>
        Adds additional queues that will be used for write I/O.
</p>
</dd>
<dt class="hdlist1">
-P &lt;#&gt;
</dt>
<dt class="hdlist1">
--nr-poll-queues=&lt;#&gt;
</dt>
<dd>
<p>
        Adds additional queues that will be used for polling latency sensitive I/O.
</p>
</dd>
<dt class="hdlist1">
-Q &lt;#&gt;
</dt>
<dt class="hdlist1">
--queue-size=&lt;#&gt;
</dt>
<dd>
<p>
        Overrides the default number of elements in the I/O queues created
        by the driver. This option will be ignored for discovery, but will be
        passed on to the subsequent connect call.
</p>
</dd>
<dt class="hdlist1">
--keyring=&lt;#&gt;
</dt>
<dd>
<p>
        Keyring for TLS key lookup.
</p>
</dd>
<dt class="hdlist1">
--tls_key=&lt;#&gt;
</dt>
<dd>
<p>
        TLS key for the connection (TCP).
</p>
</dd>
<dt class="hdlist1">
-g
</dt>
<dt class="hdlist1">
--hdr-digest
</dt>
<dd>
<p>
        Generates/verifies header digest (TCP).
</p>
</dd>
<dt class="hdlist1">
-G
</dt>
<dt class="hdlist1">
--data-digest
</dt>
<dd>
<p>
        Generates/verifies data digest (TCP).
</p>
</dd>
<dt class="hdlist1">
-p
</dt>
<dt class="hdlist1">
--persistent
</dt>
<dd>
<p>
        Don&#8217;t remove the discovery controller after retrieving the discovery
        log page.
</p>
</dd>
<dt class="hdlist1">
--tls
</dt>
<dd>
<p>
        Enable TLS encryption (TCP).
</p>
</dd>
<dt class="hdlist1">
-S
</dt>
<dt class="hdlist1">
--quiet
</dt>
<dd>
<p>
        Suppress error messages.
</p>
</dd>
<dt class="hdlist1">
-O
</dt>
<dt class="hdlist1">
--dump-config
</dt>
<dd>
<p>
        Print out resulting JSON configuration file to stdout.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Connect to all records returned by the Discover Controller with IP4 address
192.168.1.3 for all resources allocated for NVMe Host name host1-rogue-nqn on
the RDMA network. Port 4420 is used by default:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme connect-all --transport=rdma --traddr=192.168.1.3 \
--hostnqn=host1-rogue-nqn</code></pre>
</div></div>
</li>
<li>
<p>
Issue a <em>nvme connect-all</em> command using a /usr/local/etc/nvme/discovery.conf file:
</p>
<div class="listingblock">
<div class="content">
<pre><code># Machine default 'nvme discover' commands.  Query the
# Discovery Controller's two ports (some resources may only
# be accessible on a single port).  Note an official
# nqn (Host) name defined in the NVMe specification is being used
# in this example.
-t rdma -a 192.168.69.33 -s 4420 -q nqn.2014-08.com.example:nvme:nvm-subsystem-sn-d78432
-t rdma -a 192.168.1.4   -s 4420 -q nqn.2014-08.com.example:nvme:nvm-subsystem-sn-d78432

At the prompt type "nvme connect-all".</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_see_also">SEE ALSO</h2>
<div class="sectionbody">
<div class="paragraph"><p>nvme-discover(1)
nvme-connect(1)</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
   070701015D6CD7000081A4000003E80000006400000001642C0FB600002339000000000000004A00000000000000000000002600000000nvme-cli/Documentation/nvme-connect.1 '\" t
.\"     Title: nvme-connect
.\"    Author: [see the "AUTHORS" section]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-CONNECT" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-connect \- Connect to a Fabrics controller\&.
.SH "SYNOPSIS"
.sp
.nf
\fInvme connect\fR
                [\-\-transport=<trtype>     | \-t <trtype>]
                [\-\-nqn=<subnqn>           | \-n <subnqn>]
                [\-\-traddr=<traddr>        | \-a <traddr>]
                [\-\-trsvcid=<trsvcid>      | \-s <trsvcid>]
                [\-\-host\-traddr=<traddr>   | \-w <traddr>]
                [\-\-host\-iface=<iface>     | \-f <iface>]
                [\-\-hostnqn=<hostnqn>      | \-q <hostnqn>]
                [\-\-hostid=<hostid>        | \-I <hostid>]
                [\-\-config\-file=<cfg>      | \-J <cfg> ]
                [\-\-dhchap\-secret=<secret> | \-S <secret>]
                [\-\-dhchap\-ctrl\-secret=<secret> | \-C <secret>]
                [\-\-nr\-io\-queues=<#>       | \-i <#>]
                [\-\-nr\-write\-queues=<#>    | \-W <#>]
                [\-\-nr\-poll\-queues=<#>     | \-P <#>]
                [\-\-queue\-size=<#>         | \-Q <#>]
                [\-\-keep\-alive\-tmo=<#>     | \-k <#>]
                [\-\-reconnect\-delay=<#>    | \-c <#>]
                [\-\-ctrl\-loss\-tmo=<#>      | \-l <#>]
                [\-\-tos=<#>                | \-T <#>]
                [\-\-keyring=<#>                    ]
                [\-\-tls_key=<#>                    ]
                [\-\-duplicate\-connect      | \-D]
                [\-\-disable\-sqflow         | \-d]
                [\-\-hdr\-digest             | \-g]
                [\-\-data\-digest            | \-G]
                [\-\-tls                        ]
                [\-\-dump\-config            | \-O]
                [\-\-output\-format=<fmt>    | \-o <fmt>]
.fi
.SH "DESCRIPTION"
.sp
Create a transport connection to a remote system (specified by \-\-traddr and \-\-trsvcid) and create a NVMe over Fabrics controller for the NVMe subsystem specified by the \-\-nqn option\&.
.SH "OPTIONS"
.PP
\-t <trtype>, \-\-transport=<trtype>
.RS 4
This field specifies the network fabric being used for a NVMe\-over\-Fabrics network\&. Current string values include:
.TS
allbox tab(:);
lt lt
lt lt
lt lt
lt lt
lt lt.
T{
Value
T}:T{
Definition
T}
T{
rdma
T}:T{
The network fabric is an rdma network (RoCE, iWARP, Infiniband, basic rdma, etc)
T}
T{
fc
T}:T{
\fBWIP\fR
The network fabric is a Fibre Channel network\&.
T}
T{
tcp
T}:T{
The network fabric is a TCP/IP network\&.
T}
T{
loop
T}:T{
Connect to a NVMe over Fabrics target on the local host
T}
.TE
.sp 1
.RE
.PP
\-n <subnqn>, \-\-nqn <subnqn>
.RS 4
This field specifies the name for the NVMe subsystem to connect to\&.
.RE
.PP
\-a <traddr>, \-\-traddr=<traddr>
.RS 4
This field specifies the network address of the Controller\&. For transports using IP addressing (e\&.g\&. rdma) this should be an IP\-based address (ex\&. IPv4)\&.
.RE
.PP
\-s <trsvcid>, \-\-trsvcid=<trsvcid>
.RS 4
This field specifies the transport service id\&. For transports using IP addressing (e\&.g\&. rdma) this field is the port number\&. By default, the IP port number for the RDMA transport is 4420\&.
.RE
.PP
\-w <traddr>, \-\-host\-traddr=<traddr>
.RS 4
This field specifies the network address used on the host to connect to the Controller\&. For TCP, this sets the source address on the socket\&.
.RE
.PP
\-f <iface>, \-\-host\-iface=<iface>
.RS 4
This field specifies the network interface used on the host to connect to the Controller (e\&.g\&. IP eth1, enp2s0, enx78e7d1ea46da)\&. This forces the connection to be made on a specific interface instead of letting the system decide\&.
.RE
.PP
\-q <hostnqn>, \-\-hostnqn=<hostnqn>
.RS 4
Overrides the default Host NQN that identifies the NVMe Host\&. If this option is not specified, the default is read from /usr/local/etc/nvme/hostnqn first\&. If that does not exist, the autogenerated NQN value from the NVMe Host kernel module is used next\&. The Host NQN uniquely identifies the NVMe Host\&.
.RE
.PP
\-I <hostid>, \-\-hostid=<hostid>
.RS 4
UUID(Universally Unique Identifier) to be discovered which should be formatted\&.
.RE
.PP
\-J <cfg>, \-\-config\-file=<cfg>
.RS 4
Use the specified JSON configuration file instead of the default /usr/local/etc/nvme/config\&.json file or
\fInone\fR
to not read in an existing configuration file\&. The JSON configuration file format is documented in
\m[blue]\fBhttps://github\&.com/linux\-nvme/libnvme/doc/config\-schema\&.json\fR\m[]
.RE
.PP
\-S <secret>, \-\-dhchap\-secret=<secret>
.RS 4
NVMe In\-band authentication secret; needs to be in ASCII format as specified in NVMe 2\&.0 section 8\&.13\&.5\&.8
\fISecret representation\fR\&. If this option is not specified, the default is read from /usr/local/etc/nvme/hostkey\&. If that does not exist no in\-band authentication is attempted\&.
.RE
.PP
\-C <secret>, \-\-dhchap\-ctrl\-secret=<secret>
.RS 4
NVMe In\-band authentication controller secret for bi\-directional authentication; needs to be in ASCII format as specified in NVMe 2\&.0 section 8\&.13\&.5\&.8
\fISecret representation\fR\&. If not present bi\-directional authentication is not attempted\&.
.RE
.PP
\-i <#>, \-\-nr\-io\-queues=<#>
.RS 4
Overrides the default number of I/O queues create by the driver\&.
.RE
.PP
\-W <#>, \-\-nr\-write\-queues=<#>
.RS 4
Adds additional queues that will be used for write I/O\&.
.RE
.PP
\-P <#>, \-\-nr\-poll\-queues=<#>
.RS 4
Adds additional queues that will be used for polling latency sensitive I/O\&.
.RE
.PP
\-Q <#>, \-\-queue\-size=<#>
.RS 4
Overrides the default number of elements in the I/O queues created by the driver\&.
.RE
.PP
\-k <#>, \-\-keep\-alive\-tmo=<#>
.RS 4
Overrides the default keep alive timeout (in seconds)\&.
.RE
.PP
\-c <#>, \-\-reconnect\-delay=<#>
.RS 4
Overrides the default delay (in seconds) before reconnect is attempted after a connect loss\&.
.RE
.PP
\-l <#>, \-\-ctrl\-loss\-tmo=<#>
.RS 4
Overrides the default controller loss timeout period (in seconds)\&.
.RE
.PP
\-T <#>, \-\-tos=<#>
.RS 4
Type of service for the connection (TCP)
.RE
.PP
\-\-keyring=<#>
.RS 4
Keyring for TLS key lookup\&.
.RE
.PP
\-\-tls_key=<#>
.RS 4
TLS key for the connection (TCP)\&.
.RE
.PP
\-D, \-\-duplicate\-connect
.RS 4
Allows duplicated connections between same transport host and subsystem port\&.
.RE
.PP
\-d, \-\-disable\-sqflow
.RS 4
Disables SQ flow control to omit head doorbell update for submission queues when sending nvme completions\&.
.RE
.PP
\-g, \-\-hdr\-digest
.RS 4
Generates/verifies header digest (TCP)\&.
.RE
.PP
\-G, \-\-data\-digest
.RS 4
Generates/verifies data digest (TCP)\&.
.RE
.PP
\-\-tls
.RS 4
Enable TLS encryption (TCP)\&.
.RE
.PP
\-O, \-\-dump\-config
.RS 4
Print out resulting JSON configuration file to stdout\&.
.RE
.PP
\-o <format>, \-\-output\-format=<format>
.RS 4
Set the reporting format to
\fInormal\fR
or
\fIjson\fR\&. Only one output format can be used at a time\&. When this option is specified, the device associated with the connection will be printed\&. Nothing is printed otherwise\&.
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Connect to a subsystem named nqn\&.2014\-08\&.com\&.example:nvme:nvm\-subsystem\-sn\-d78432 on the IP4 address 192\&.168\&.1\&.3\&. Port 4420 is used by default:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme connect \-\-transport=rdma \-\-traddr=192\&.168\&.1\&.3 \e
\-\-nqn=nqn\&.2014\-08\&.com\&.example:nvme:nvm\-subsystem\-sn\-d78432
.fi
.if n \{\
.RE
.\}
.RE
.SH "SEE ALSO"
.sp
nvme\-discover(1) nvme\-connect\-all(1)
.SH "AUTHORS"
.sp
This was co\-written by \m[blue]\fBJay Freyensee\fR\m[]\&\s-2\u[1]\d\s+2 and \m[blue]\fBChristoph Hellwig\fR\m[]\&\s-2\u[2]\d\s+2
.SH "NVME"
.sp
Part of the nvme\-user suite
.SH "NOTES"
.IP " 1." 4
Jay Freyensee
.RS 4
\%mailto:james.p.freyensee@intel.com
.RE
.IP " 2." 4
Christoph Hellwig
.RS 4
\%mailto:hch@lst.de
.RE
   070701015D6CD8000081A4000003E80000006400000001642C0FB600006F36000000000000004A00000000000000000000002900000000nvme-cli/Documentation/nvme-connect.html  <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-connect(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-connect(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-connect -
   Connect to a Fabrics controller.
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme connect</em>
                [--transport=&lt;trtype&gt;     | -t &lt;trtype&gt;]
                [--nqn=&lt;subnqn&gt;           | -n &lt;subnqn&gt;]
                [--traddr=&lt;traddr&gt;        | -a &lt;traddr&gt;]
                [--trsvcid=&lt;trsvcid&gt;      | -s &lt;trsvcid&gt;]
                [--host-traddr=&lt;traddr&gt;   | -w &lt;traddr&gt;]
                [--host-iface=&lt;iface&gt;     | -f &lt;iface&gt;]
                [--hostnqn=&lt;hostnqn&gt;      | -q &lt;hostnqn&gt;]
                [--hostid=&lt;hostid&gt;        | -I &lt;hostid&gt;]
                [--config-file=&lt;cfg&gt;      | -J &lt;cfg&gt; ]
                [--dhchap-secret=&lt;secret&gt; | -S &lt;secret&gt;]
                [--dhchap-ctrl-secret=&lt;secret&gt; | -C &lt;secret&gt;]
                [--nr-io-queues=&lt;#&gt;       | -i &lt;#&gt;]
                [--nr-write-queues=&lt;#&gt;    | -W &lt;#&gt;]
                [--nr-poll-queues=&lt;#&gt;     | -P &lt;#&gt;]
                [--queue-size=&lt;#&gt;         | -Q &lt;#&gt;]
                [--keep-alive-tmo=&lt;#&gt;     | -k &lt;#&gt;]
                [--reconnect-delay=&lt;#&gt;    | -c &lt;#&gt;]
                [--ctrl-loss-tmo=&lt;#&gt;      | -l &lt;#&gt;]
                [--tos=&lt;#&gt;                | -T &lt;#&gt;]
                [--keyring=&lt;#&gt;                    ]
                [--tls_key=&lt;#&gt;                    ]
                [--duplicate-connect      | -D]
                [--disable-sqflow         | -d]
                [--hdr-digest             | -g]
                [--data-digest            | -G]
                [--tls                        ]
                [--dump-config            | -O]
                [--output-format=&lt;fmt&gt;    | -o &lt;fmt&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>Create a transport connection to a remote system (specified by --traddr and
--trsvcid) and create a NVMe over Fabrics controller for the NVMe subsystem
specified by the --nqn option.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-t &lt;trtype&gt;
</dt>
<dt class="hdlist1">
--transport=&lt;trtype&gt;
</dt>
<dd>
<p>
        This field specifies the network fabric being used for
        a NVMe-over-Fabrics network.  Current string values include:
</p>
<div class="tableblock">
<table rules="all"
width="100%"
frame="border"
cellspacing="0" cellpadding="4">
<col width="50%" />
<col width="50%" />
<tbody>
<tr>
<td align="left" valign="top"><p class="table">Value</p></td>
<td align="left" valign="top"><p class="table">Definition</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">rdma</p></td>
<td align="left" valign="top"><p class="table">The network fabric is an rdma network (RoCE, iWARP, Infiniband, basic rdma, etc)</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">fc</p></td>
<td align="left" valign="top"><p class="table"><strong>WIP</strong> The network fabric is a Fibre Channel network.</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">tcp</p></td>
<td align="left" valign="top"><p class="table">The network fabric is a TCP/IP network.</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">loop</p></td>
<td align="left" valign="top"><p class="table">Connect to a NVMe over Fabrics target on the local host</p></td>
</tr>
</tbody>
</table>
</div>
</dd>
<dt class="hdlist1">
-n &lt;subnqn&gt;
</dt>
<dt class="hdlist1">
--nqn &lt;subnqn&gt;
</dt>
<dd>
<p>
        This field specifies the name for the NVMe subsystem to connect to.
</p>
</dd>
<dt class="hdlist1">
-a &lt;traddr&gt;
</dt>
<dt class="hdlist1">
--traddr=&lt;traddr&gt;
</dt>
<dd>
<p>
        This field specifies the network address of the Controller.
        For transports using IP addressing (e.g. rdma) this should be an
        IP-based address (ex. IPv4).
</p>
</dd>
<dt class="hdlist1">
-s &lt;trsvcid&gt;
</dt>
<dt class="hdlist1">
--trsvcid=&lt;trsvcid&gt;
</dt>
<dd>
<p>
        This field specifies the transport service id.  For transports using IP
        addressing (e.g. rdma) this field is the port number. By default, the IP
        port number for the RDMA transport is 4420.
</p>
</dd>
<dt class="hdlist1">
-w &lt;traddr&gt;
</dt>
<dt class="hdlist1">
--host-traddr=&lt;traddr&gt;
</dt>
<dd>
<p>
        This field specifies the network address used on the host to connect
        to the Controller. For TCP, this sets the source address on the socket.
</p>
</dd>
<dt class="hdlist1">
-f &lt;iface&gt;
</dt>
<dt class="hdlist1">
--host-iface=&lt;iface&gt;
</dt>
<dd>
<p>
        This field specifies the network interface used on the host to connect
        to the Controller (e.g. IP eth1, enp2s0, enx78e7d1ea46da). This forces
        the connection to be made on a specific interface instead of letting
        the system decide.
</p>
</dd>
<dt class="hdlist1">
-q &lt;hostnqn&gt;
</dt>
<dt class="hdlist1">
--hostnqn=&lt;hostnqn&gt;
</dt>
<dd>
<p>
        Overrides the default Host NQN that identifies the NVMe Host.
        If this option is not specified, the default is read from
        /usr/local/etc/nvme/hostnqn first. If that does not exist, the autogenerated
        NQN value from the NVMe Host kernel module is used next.
        The Host NQN uniquely identifies the NVMe Host.
</p>
</dd>
<dt class="hdlist1">
-I &lt;hostid&gt;
</dt>
<dt class="hdlist1">
--hostid=&lt;hostid&gt;
</dt>
<dd>
<p>
        UUID(Universally Unique Identifier) to be discovered which should be
        formatted.
</p>
</dd>
<dt class="hdlist1">
-J &lt;cfg&gt;
</dt>
<dt class="hdlist1">
--config-file=&lt;cfg&gt;
</dt>
<dd>
<p>
        Use the specified JSON configuration file instead of the
        default /usr/local/etc/nvme/config.json file or <em>none</em> to not read in
        an existing configuration file. The JSON configuration file
        format is documented in
        <a href="https://github.com/linux-nvme/libnvme/doc/config-schema.json">https://github.com/linux-nvme/libnvme/doc/config-schema.json</a>
</p>
</dd>
<dt class="hdlist1">
-S &lt;secret&gt;
</dt>
<dt class="hdlist1">
--dhchap-secret=&lt;secret&gt;
</dt>
<dd>
<p>
        NVMe In-band authentication secret; needs to be in ASCII format as
        specified in NVMe 2.0 section 8.13.5.8 <em>Secret representation</em>.
        If this option is not specified, the default is read from
        /usr/local/etc/nvme/hostkey. If that does not exist no in-band authentication
        is attempted.
</p>
</dd>
<dt class="hdlist1">
-C &lt;secret&gt;
</dt>
<dt class="hdlist1">
--dhchap-ctrl-secret=&lt;secret&gt;
</dt>
<dd>
<p>
        NVMe In-band authentication controller secret for bi-directional
        authentication; needs to be in ASCII format as
        specified in NVMe 2.0 section 8.13.5.8 <em>Secret representation</em>.
        If not present bi-directional authentication is not attempted.
</p>
</dd>
<dt class="hdlist1">
-i &lt;#&gt;
</dt>
<dt class="hdlist1">
--nr-io-queues=&lt;#&gt;
</dt>
<dd>
<p>
        Overrides the default number of I/O queues create by the driver.
</p>
</dd>
<dt class="hdlist1">
-W &lt;#&gt;
</dt>
<dt class="hdlist1">
--nr-write-queues=&lt;#&gt;
</dt>
<dd>
<p>
        Adds additional queues that will be used for write I/O.
</p>
</dd>
<dt class="hdlist1">
-P &lt;#&gt;
</dt>
<dt class="hdlist1">
--nr-poll-queues=&lt;#&gt;
</dt>
<dd>
<p>
        Adds additional queues that will be used for polling latency sensitive I/O.
</p>
</dd>
<dt class="hdlist1">
-Q &lt;#&gt;
</dt>
<dt class="hdlist1">
--queue-size=&lt;#&gt;
</dt>
<dd>
<p>
        Overrides the default number of elements in the I/O queues created
        by the driver.
</p>
</dd>
<dt class="hdlist1">
-k &lt;#&gt;
</dt>
<dt class="hdlist1">
--keep-alive-tmo=&lt;#&gt;
</dt>
<dd>
<p>
        Overrides the default keep alive timeout (in seconds).
</p>
</dd>
<dt class="hdlist1">
-c &lt;#&gt;
</dt>
<dt class="hdlist1">
--reconnect-delay=&lt;#&gt;
</dt>
<dd>
<p>
        Overrides the default delay (in seconds) before reconnect is attempted
        after a connect loss.
</p>
</dd>
<dt class="hdlist1">
-l &lt;#&gt;
</dt>
<dt class="hdlist1">
--ctrl-loss-tmo=&lt;#&gt;
</dt>
<dd>
<p>
        Overrides the default controller loss timeout period (in seconds).
</p>
</dd>
<dt class="hdlist1">
-T &lt;#&gt;
</dt>
<dt class="hdlist1">
--tos=&lt;#&gt;
</dt>
<dd>
<p>
        Type of service for the connection (TCP)
</p>
</dd>
<dt class="hdlist1">
--keyring=&lt;#&gt;
</dt>
<dd>
<p>
        Keyring for TLS key lookup.
</p>
</dd>
<dt class="hdlist1">
--tls_key=&lt;#&gt;
</dt>
<dd>
<p>
        TLS key for the connection (TCP).
</p>
</dd>
<dt class="hdlist1">
-D
</dt>
<dt class="hdlist1">
--duplicate-connect
</dt>
<dd>
<p>
        Allows duplicated connections between same transport host and subsystem
        port.
</p>
</dd>
<dt class="hdlist1">
-d
</dt>
<dt class="hdlist1">
--disable-sqflow
</dt>
<dd>
<p>
        Disables SQ flow control to omit head doorbell update for submission
        queues when sending nvme completions.
</p>
</dd>
<dt class="hdlist1">
-g
</dt>
<dt class="hdlist1">
--hdr-digest
</dt>
<dd>
<p>
        Generates/verifies header digest (TCP).
</p>
</dd>
<dt class="hdlist1">
-G
</dt>
<dt class="hdlist1">
--data-digest
</dt>
<dd>
<p>
        Generates/verifies data digest (TCP).
</p>
</dd>
<dt class="hdlist1">
--tls
</dt>
<dd>
<p>
        Enable TLS encryption (TCP).
</p>
</dd>
<dt class="hdlist1">
-O
</dt>
<dt class="hdlist1">
--dump-config
</dt>
<dd>
<p>
        Print out resulting JSON configuration file to stdout.
</p>
</dd>
<dt class="hdlist1">
-o &lt;format&gt;
</dt>
<dt class="hdlist1">
--output-format=&lt;format&gt;
</dt>
<dd>
<p>
        Set the reporting format to <em>normal</em> or <em>json</em>. Only one output format can
        be used at a time. When this option is specified, the device associated with
        the connection will be printed. Nothing is printed otherwise.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Connect to a subsystem named nqn.2014-08.com.example:nvme:nvm-subsystem-sn-d78432
on the IP4 address 192.168.1.3. Port 4420 is used by default:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme connect --transport=rdma --traddr=192.168.1.3 \
--nqn=nqn.2014-08.com.example:nvme:nvm-subsystem-sn-d78432</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_see_also">SEE ALSO</h2>
<div class="sectionbody">
<div class="paragraph"><p>nvme-discover(1)
nvme-connect-all(1)</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_authors">AUTHORS</h2>
<div class="sectionbody">
<div class="paragraph"><p>This was co-written by <a href="mailto:james.p.freyensee@intel.com">Jay Freyensee</a>
and <a href="mailto:hch@lst.de">Christoph Hellwig</a></p></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
  070701015D6CD9000081A4000003E80000006400000001642C0FB600001939000000000000004A00000000000000000000002800000000nvme-cli/Documentation/nvme-connect.txt   nvme-connect(1)
===============

NAME
----
nvme-connect - Connect to a Fabrics controller.

SYNOPSIS
--------
[verse]
'nvme connect'
		[--transport=<trtype>     | -t <trtype>]
		[--nqn=<subnqn>           | -n <subnqn>]
		[--traddr=<traddr>        | -a <traddr>]
		[--trsvcid=<trsvcid>      | -s <trsvcid>]
		[--host-traddr=<traddr>   | -w <traddr>]
		[--host-iface=<iface>     | -f <iface>]
		[--hostnqn=<hostnqn>      | -q <hostnqn>]
		[--hostid=<hostid>        | -I <hostid>]
		[--config-file=<cfg>      | -J <cfg> ]
		[--dhchap-secret=<secret> | -S <secret>]
		[--dhchap-ctrl-secret=<secret> | -C <secret>]
		[--nr-io-queues=<#>       | -i <#>]
		[--nr-write-queues=<#>    | -W <#>]
		[--nr-poll-queues=<#>     | -P <#>]
		[--queue-size=<#>         | -Q <#>]
		[--keep-alive-tmo=<#>     | -k <#>]
		[--reconnect-delay=<#>    | -c <#>]
		[--ctrl-loss-tmo=<#>      | -l <#>]
		[--tos=<#>                | -T <#>]
		[--keyring=<#>                    ]
		[--tls_key=<#>                    ]
		[--duplicate-connect      | -D]
		[--disable-sqflow         | -d]
		[--hdr-digest             | -g]
		[--data-digest            | -G]
		[--tls                        ]
		[--dump-config            | -O]
		[--output-format=<fmt>    | -o <fmt>]

DESCRIPTION
-----------
Create a transport connection to a remote system (specified by --traddr and
--trsvcid) and create a NVMe over Fabrics controller for the NVMe subsystem
specified by the --nqn option.

OPTIONS
-------
-t <trtype>::
--transport=<trtype>::
	This field specifies the network fabric being used for
	a NVMe-over-Fabrics network.  Current string values include:
+
[]
|=================
|Value|Definition
|rdma|The network fabric is an rdma network (RoCE, iWARP, Infiniband, basic rdma, etc)
|fc  |*WIP* The network fabric is a Fibre Channel network.
|tcp |The network fabric is a TCP/IP network.
|loop|Connect to a NVMe over Fabrics target on the local host
|=================

-n <subnqn>::
--nqn <subnqn>::
	This field specifies the name for the NVMe subsystem to connect to.

-a <traddr>::
--traddr=<traddr>::
	This field specifies the network address of the Controller.
	For transports using IP addressing (e.g. rdma) this should be an
	IP-based address (ex. IPv4).

-s <trsvcid>::
--trsvcid=<trsvcid>::
	This field specifies the transport service id.  For transports using IP
	addressing (e.g. rdma) this field is the port number. By default, the IP
	port number for the RDMA transport is 4420.

-w <traddr>::
--host-traddr=<traddr>::
	This field specifies the network address used on the host to connect
	to the Controller. For TCP, this sets the source address on the socket.

-f <iface>::
--host-iface=<iface>::
	This field specifies the network interface used on the host to connect
	to the Controller (e.g. IP eth1, enp2s0, enx78e7d1ea46da). This forces
	the connection to be made on a specific interface instead of letting
	the system decide.

-q <hostnqn>::
--hostnqn=<hostnqn>::
	Overrides the default Host NQN that identifies the NVMe Host.
	If this option is not specified, the default is read from
	@SYSCONFDIR@/nvme/hostnqn first. If that does not exist, the autogenerated
	NQN value from the NVMe Host kernel module is used next.
	The Host NQN uniquely identifies the NVMe Host.

-I <hostid>::
--hostid=<hostid>::
	UUID(Universally Unique Identifier) to be discovered which should be
	formatted.

-J <cfg>::
--config-file=<cfg>::
	Use the specified JSON configuration file instead of the
	default @SYSCONFDIR@/nvme/config.json file or 'none' to not read in
	an existing configuration file. The JSON configuration file
	format is documented in
	https://github.com/linux-nvme/libnvme/doc/config-schema.json

-S <secret>::
--dhchap-secret=<secret>::
	NVMe In-band authentication secret; needs to be in ASCII format as
	specified in NVMe 2.0 section 8.13.5.8 'Secret representation'.
	If this option is not specified, the default is read from
	@SYSCONFDIR@/nvme/hostkey. If that does not exist no in-band authentication
	is attempted.

-C <secret>::
--dhchap-ctrl-secret=<secret>::
	NVMe In-band authentication controller secret for bi-directional
	authentication; needs to be in ASCII format as
	specified in NVMe 2.0 section 8.13.5.8 'Secret representation'.
	If not present bi-directional authentication is not attempted.

-i <#>::
--nr-io-queues=<#>::
	Overrides the default number of I/O queues create by the driver.

-W <#>::
--nr-write-queues=<#>::
	Adds additional queues that will be used for write I/O.

-P <#>::
--nr-poll-queues=<#>::
	Adds additional queues that will be used for polling latency sensitive I/O.

-Q <#>::
--queue-size=<#>::
	Overrides the default number of elements in the I/O queues created
	by the driver.

-k <#>::
--keep-alive-tmo=<#>::
	Overrides the default keep alive timeout (in seconds).

-c <#>::
--reconnect-delay=<#>::
	Overrides the default delay (in seconds) before reconnect is attempted
	after a connect loss.

-l <#>::
--ctrl-loss-tmo=<#>::
	Overrides the default controller loss timeout period (in seconds).

-T <#>::
--tos=<#>::
	Type of service for the connection (TCP)

--keyring=<#>::
	Keyring for TLS key lookup.

--tls_key=<#>::
	TLS key for the connection (TCP).

-D::
--duplicate-connect::
	Allows duplicated connections between same transport host and subsystem
	port.

-d::
--disable-sqflow::
	Disables SQ flow control to omit head doorbell update for submission
	queues when sending nvme completions.

-g::
--hdr-digest::
	Generates/verifies header digest (TCP).

-G::
--data-digest::
	Generates/verifies data digest (TCP).

--tls::
	Enable TLS encryption (TCP).

-O::
--dump-config::
	Print out resulting JSON configuration file to stdout.

-o <format>::
--output-format=<format>::
	Set the reporting format to 'normal' or 'json'. Only one output format can
	be used at a time. When this option is specified, the device associated with
	the connection will be printed. Nothing is printed otherwise.

EXAMPLES
--------
* Connect to a subsystem named nqn.2014-08.com.example:nvme:nvm-subsystem-sn-d78432
on the IP4 address 192.168.1.3. Port 4420 is used by default:
+
------------
# nvme connect --transport=rdma --traddr=192.168.1.3 \
--nqn=nqn.2014-08.com.example:nvme:nvm-subsystem-sn-d78432
------------

SEE ALSO
--------
nvme-discover(1)
nvme-connect-all(1)


AUTHORS
-------
This was co-written by mailto:james.p.freyensee@intel.com[Jay Freyensee]
and mailto:hch@lst.de[Christoph Hellwig]

NVME
----
Part of the nvme-user suite
   070701015D6CDA000081A4000003E80000006400000001642C0FB600001181000000000000004A00000000000000000000002300000000nvme-cli/Documentation/nvme-copy.1    '\" t
.\"     Title: nvme-copy
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-COPY" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-copy \- Send an NVMe Simple Copy command, provide results
.SH "SYNOPSIS"
.sp
.nf
\fInvme\-copy\fR <device> [\-\-sdlba=<sdlba> | \-d <sdlba>]
                        [\-\-blocks=<nlb\-list,> | \-b <nlb\-list,>]
                        [\-\-slbs=<slbas,> | \-s <slbas,>]
                        [\-\-limited\-retry | \-l]
                        [\-\-force\-unit\-access | \-f]
                        [\-\-prinfow=<prinfow> | \-p <prinfow>]
                        [\-\-prinfor=<prinfor> | \-P <prinfor>]
                        [\-\-ref\-tag=<reftag> | \-r <reftag>]
                        [\-\-expected\-ref\-tags=<reftag,> | \-R <reftag,>]
                        [\-\-app\-tag=<apptag> | \-a <apptag>]
                        [\-\-expected\-app\-tags=<apptag,> | \-A <apptag,>]
                        [\-\-app\-mask=<appmask> | \-m <appmask>]
                        [\-\-expected\-app\-masks=<appmask,> | \-M <appmask,>]
                        [\-\-dir\-type=<type> | \-T <type>]
                        [\-\-dir\-spec=<spec> | \-S <spec>]
                        [\-\-format=<entry\-format> | \-F <entry\-format>]
.fi
.SH "DESCRIPTION"
.sp
The Copy command is used by the host to copy data from one or more source logical block ranges to a single consecutive destination logical block range\&.
.SH "OPTIONS"
.PP
\-\-sdlba=<sdlba>, \-d <sdlba>
.RS 4
64\-bit addr of first destination logical block
.RE
.PP
\-\-blocks=<nlb\-list,>, \-b <nlb\-list,>
.RS 4
Comma separated list of the number of blocks in each range
.RE
.PP
\-\-slbs=<slbas,>, \-s <slbas,>
.RS 4
Comma separated list of the starting blocks in each range
.RE
.PP
\-\-limited\-retry, \-l
.RS 4
Sets the limited retry flag\&.
.RE
.PP
\-\-force\-unit\-access, \-f
.RS 4
Set the force\-unit access flag\&.
.RE
.PP
\-\-prinfow=<prinfow>, \-p <prinfow>
.RS 4
Protection Information field write definition\&.
.RE
.PP
\-\-prinfor=<prinfor>, \-P <prinfor>
.RS 4
Protection Information field read definition\&.
.RE
.PP
\-\-ref\-tag=<reftag>, \-r <reftag>
.RS 4
initial lba reference tag\&.
.RE
.PP
\-\-expected\-ref\-tags=<reftag,>, \-R <reftag,>
.RS 4
expected lba reference tags (comma\-separated list)\&.
.RE
.PP
\-\-app\-tag=<apptag>, \-a <apptag>
.RS 4
lba app tag
.RE
.PP
\-\-expected\-app\-tags=<apptag,>, \-A <apptag,>
.RS 4
expected lba app tags (comma\-separated list)
.RE
.PP
\-\-app\-mask=<appmask>, \-m <appmask>
.RS 4
lba tag mask
.RE
.PP
\-\-expected\-app\-masks=<appmask,>, \-M <appmask,>
.RS 4
expected lba tag masks (comma\-separated list)
.RE
.PP
\-\-dir\-type=<type>, \-T <type>
.RS 4
Optional directive type\&. The nvme\-cli only enforces the value be in the defined range for the directive type, though the NVMe specification (1\&.3a) defines only one directive, 01h, for write stream identifiers\&.
.RE
.PP
\-\-dir\-spec=<spec>, \-S <spec>
.RS 4
Optional field for directive specifics\&. When used with write streams, this value is defined to be the write stream identifier\&. The nvme\-cli will not validate the stream requested is within the controller\(cqs capabilities\&.
.RE
.PP
\-\-format=<entry\-format>, \-F <entry\-format>
.RS 4
source range entry format
.RE
.SH "EXAMPLES"
.sp
No examples yet\&.
.SH "NVME"
.sp
Part of the nvme\-user suite
   070701015D6CDB000081A4000003E80000006400000001642C0FB6000055F0000000000000004A00000000000000000000002600000000nvme-cli/Documentation/nvme-copy.html <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-copy(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-copy(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-copy -
   Send an NVMe Simple Copy command, provide results
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme-copy</em> &lt;device&gt; [--sdlba=&lt;sdlba&gt; | -d &lt;sdlba&gt;]
                        [--blocks=&lt;nlb-list,&gt; | -b &lt;nlb-list,&gt;]
                        [--slbs=&lt;slbas,&gt; | -s &lt;slbas,&gt;]
                        [--limited-retry | -l]
                        [--force-unit-access | -f]
                        [--prinfow=&lt;prinfow&gt; | -p &lt;prinfow&gt;]
                        [--prinfor=&lt;prinfor&gt; | -P &lt;prinfor&gt;]
                        [--ref-tag=&lt;reftag&gt; | -r &lt;reftag&gt;]
                        [--expected-ref-tags=&lt;reftag,&gt; | -R &lt;reftag,&gt;]
                        [--app-tag=&lt;apptag&gt; | -a &lt;apptag&gt;]
                        [--expected-app-tags=&lt;apptag,&gt; | -A &lt;apptag,&gt;]
                        [--app-mask=&lt;appmask&gt; | -m &lt;appmask&gt;]
                        [--expected-app-masks=&lt;appmask,&gt; | -M &lt;appmask,&gt;]
                        [--dir-type=&lt;type&gt; | -T &lt;type&gt;]
                        [--dir-spec=&lt;spec&gt; | -S &lt;spec&gt;]
                        [--format=&lt;entry-format&gt; | -F &lt;entry-format&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>The Copy command is used by the host to copy data from one or more source
logical block ranges to a single consecutive destination logical block range.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
--sdlba=&lt;sdlba&gt;
</dt>
<dt class="hdlist1">
-d &lt;sdlba&gt;
</dt>
<dd>
<p>
        64-bit addr of first destination logical block
</p>
</dd>
<dt class="hdlist1">
--blocks=&lt;nlb-list,&gt;
</dt>
<dt class="hdlist1">
-b &lt;nlb-list,&gt;
</dt>
<dd>
<p>
        Comma separated list of the number of blocks in each range
</p>
</dd>
<dt class="hdlist1">
--slbs=&lt;slbas,&gt;
</dt>
<dt class="hdlist1">
-s &lt;slbas,&gt;
</dt>
<dd>
<p>
        Comma separated list of the starting blocks in each range
</p>
</dd>
<dt class="hdlist1">
--limited-retry
</dt>
<dt class="hdlist1">
-l
</dt>
<dd>
<p>
        Sets the limited retry flag.
</p>
</dd>
<dt class="hdlist1">
--force-unit-access
</dt>
<dt class="hdlist1">
-f
</dt>
<dd>
<p>
        Set the force-unit access flag.
</p>
</dd>
<dt class="hdlist1">
--prinfow=&lt;prinfow&gt;
</dt>
<dt class="hdlist1">
-p &lt;prinfow&gt;
</dt>
<dd>
<p>
        Protection Information field write definition.
</p>
</dd>
<dt class="hdlist1">
--prinfor=&lt;prinfor&gt;
</dt>
<dt class="hdlist1">
-P &lt;prinfor&gt;
</dt>
<dd>
<p>
        Protection Information field read definition.
</p>
</dd>
<dt class="hdlist1">
--ref-tag=&lt;reftag&gt;
</dt>
<dt class="hdlist1">
-r &lt;reftag&gt;
</dt>
<dd>
<p>
        initial lba reference tag.
</p>
</dd>
<dt class="hdlist1">
--expected-ref-tags=&lt;reftag,&gt;
</dt>
<dt class="hdlist1">
-R &lt;reftag,&gt;
</dt>
<dd>
<p>
        expected lba reference tags (comma-separated list).
</p>
</dd>
<dt class="hdlist1">
--app-tag=&lt;apptag&gt;
</dt>
<dt class="hdlist1">
-a &lt;apptag&gt;
</dt>
<dd>
<p>
        lba app tag
</p>
</dd>
<dt class="hdlist1">
--expected-app-tags=&lt;apptag,&gt;
</dt>
<dt class="hdlist1">
-A &lt;apptag,&gt;
</dt>
<dd>
<p>
        expected lba app tags (comma-separated list)
</p>
</dd>
<dt class="hdlist1">
--app-mask=&lt;appmask&gt;
</dt>
<dt class="hdlist1">
-m &lt;appmask&gt;
</dt>
<dd>
<p>
        lba tag mask
</p>
</dd>
<dt class="hdlist1">
--expected-app-masks=&lt;appmask,&gt;
</dt>
<dt class="hdlist1">
-M &lt;appmask,&gt;
</dt>
<dd>
<p>
        expected lba tag masks (comma-separated list)
</p>
</dd>
<dt class="hdlist1">
--dir-type=&lt;type&gt;
</dt>
<dt class="hdlist1">
-T &lt;type&gt;
</dt>
<dd>
<p>
        Optional directive type. The nvme-cli only enforces the value
        be in the defined range for the directive type, though the NVMe
        specification (1.3a) defines only one directive, 01h, for write
        stream identifiers.
</p>
</dd>
<dt class="hdlist1">
--dir-spec=&lt;spec&gt;
</dt>
<dt class="hdlist1">
-S &lt;spec&gt;
</dt>
<dd>
<p>
        Optional field for directive specifics. When used with
        write streams, this value is defined to be the write stream
        identifier. The nvme-cli will not validate the stream requested
        is within the controller&#8217;s capabilities.
</p>
</dd>
<dt class="hdlist1">
--format=&lt;entry-format&gt;
</dt>
<dt class="hdlist1">
-F &lt;entry-format&gt;
</dt>
<dd>
<p>
        source range entry format
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="paragraph"><p>No examples yet.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
070701015D6CDC000081A4000003E80000006400000001642C0FB600001222000000000000004A00000000000000000000002800000000nvme-cli/Documentation/nvme-create-ns.1   '\" t
.\"     Title: nvme-create-ns
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-CREATE\-NS" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-create-ns \- Send NVMe Namespace management command to create namespace, returns results\&.
.SH "SYNOPSIS"
.sp
.nf
\fInvme create\-ns\fR <device> [\-\-nsze=<nsze> | \-s <nsze>]
                        [\-\-ncap=<ncap> | \-c <ncap>]
                        [\-\-flbas=<flbas> | \-f <flbas>]
                        [\-\-dps=<dps> | \-d <dps>]
                        [\-\-nmic=<nmic> | \-m <nmic>]
                        [\-\-anagrp\-id=<anagrpid> | \-a <anagrpid>]
                        [\-\-nvmset\-id=<nvmsetid> | \-i <nvmsetid>]
                        [\-\-csi=<command_set_identifier> | \-y <command_set_identifier>]
                        [\-\-lbstm=<lbstm> | \-l <lbstm>]
                        [\-\-block\-size=<block\-size> | \-b <block\-size>]
                        [\-\-timeout=<timeout> | \-t <timeout>]
                        [\-\-nsze\-si=<nsze\-si> | \-S <nsze\-si>]
                        [\-\-ncap\-si=<ncap\-si> | \-C <ncap\-si>]
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, sends a namespace management command to create the namespace with the requested settings\&. On success, the namespace identifier assigned by the controller is returned\&.
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1)\&.
.SH "OPTIONS"
.PP
\-s, \-\-nsze
.RS 4
The namespace size\&.
.RE
.PP
\-c, \-\-ncap
.RS 4
The namespace capacity\&.
.RE
.PP
\-f, \-\-flbas
.RS 4
The namespace formatted logical block size setting\&. Conflicts with \-\-block\-size argument\&.
.RE
.PP
\-d, \-\-dps
.RS 4
The data protection settings\&.
.RE
.PP
\-m, \-\-nmic
.RS 4
Namespace multipath and sharing capabilities\&.
.RE
.PP
\-a, \-\-anagrp\-id
.RS 4
ANA Group Identifier\&. If this value is 0h specifies that the controller determines the value to use
.RE
.PP
\-i <nvmsetid>, \-\-nvmset\-id=<nvmsetid>
.RS 4
This field specifies the identifier of the NVM Set\&.
.RE
.PP
\-y <command_set_identifier>, \-\-csi=<command_set_identifier>
.RS 4
This field specifies the identifier of command set\&. if not issued, NVM Command Set will be selected\&.
.RE
.PP
\-l <lbstm>, \-\-lbstm=<lbstm>
.RS 4
Logical Block Storage Tag Mask for end\-to\-end protection\&.
.RE
.PP
\-b, \-\-block\-size
.RS 4
Target block size the new namespace should be formatted as\&. Potential FLBAS values will be values will be scanned and the lowest numbered will be selected for the create\-ns operation\&. Conflicts with \-\-flbas argument\&.
.RE
.PP
\-S, \-\-nsze\-si
.RS 4
The namespace size (NSZE) in standard SI units\&. The value SI suffixed is divided by the namespace LBA size to set as NSZE\&. If the value not suffixed it is set as same with the nsze option\&.
.RE
.PP
\-C, \-\-ncap\-si
.RS 4
The namespace capacity (NCAP) in standard SI units\&. The value SI suffixed is divided by the namespace LBA size to set as NCAP\&. If the value not suffixed it is set as same with the ncap option\&.
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Create a namespace:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme create\-ns /dev/nvme0 \-\-nsze 11995709440 \-\-ncap 1199570940 \-\-flbas 0 \-\-dps 0 \-\-nmic 0
# nvme create\-ns /dev/nvme0 \-\-nsze\-si 6\&.14T \-\-ncap 1199570940 \-\-flbas 0 \-\-dps 0 \-\-nmic 0
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite
  070701015D6CDD000081A4000003E80000006400000001642C0FB6000054EB000000000000004A00000000000000000000002B00000000nvme-cli/Documentation/nvme-create-ns.html    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-create-ns(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-create-ns(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-create-ns -
   Send NVMe Namespace management command to create namespace, returns results.
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme create-ns</em> &lt;device&gt; [--nsze=&lt;nsze&gt; | -s &lt;nsze&gt;]
                        [--ncap=&lt;ncap&gt; | -c &lt;ncap&gt;]
                        [--flbas=&lt;flbas&gt; | -f &lt;flbas&gt;]
                        [--dps=&lt;dps&gt; | -d &lt;dps&gt;]
                        [--nmic=&lt;nmic&gt; | -m &lt;nmic&gt;]
                        [--anagrp-id=&lt;anagrpid&gt; | -a &lt;anagrpid&gt;]
                        [--nvmset-id=&lt;nvmsetid&gt; | -i &lt;nvmsetid&gt;]
                        [--csi=&lt;command_set_identifier&gt; | -y &lt;command_set_identifier&gt;]
                        [--lbstm=&lt;lbstm&gt; | -l &lt;lbstm&gt;]
                        [--block-size=&lt;block-size&gt; | -b &lt;block-size&gt;]
                        [--timeout=&lt;timeout&gt; | -t &lt;timeout&gt;]
                        [--nsze-si=&lt;nsze-si&gt; | -S &lt;nsze-si&gt;]
                        [--ncap-si=&lt;ncap-si&gt; | -C &lt;ncap-si&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, sends a namespace management command to create
the namespace with the requested settings. On success, the namespace
identifier assigned by the controller is returned.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-s
</dt>
<dt class="hdlist1">
--nsze
</dt>
<dd>
<p>
        The namespace size.
</p>
</dd>
<dt class="hdlist1">
-c
</dt>
<dt class="hdlist1">
--ncap
</dt>
<dd>
<p>
        The namespace capacity.
</p>
</dd>
<dt class="hdlist1">
-f
</dt>
<dt class="hdlist1">
--flbas
</dt>
<dd>
<p>
        The namespace formatted logical block size setting.
        Conflicts with --block-size argument.
</p>
</dd>
<dt class="hdlist1">
-d
</dt>
<dt class="hdlist1">
--dps
</dt>
<dd>
<p>
        The data protection settings.
</p>
</dd>
<dt class="hdlist1">
-m
</dt>
<dt class="hdlist1">
--nmic
</dt>
<dd>
<p>
        Namespace multipath and sharing capabilities.
</p>
</dd>
<dt class="hdlist1">
-a
</dt>
<dt class="hdlist1">
--anagrp-id
</dt>
<dd>
<p>
        ANA Group Identifier. If this value is 0h specifies
        that the controller determines the value to use
</p>
</dd>
<dt class="hdlist1">
-i &lt;nvmsetid&gt;
</dt>
<dt class="hdlist1">
--nvmset-id=&lt;nvmsetid&gt;
</dt>
<dd>
<p>
        This field specifies the identifier of the NVM Set.
</p>
</dd>
<dt class="hdlist1">
-y &lt;command_set_identifier&gt;
</dt>
<dt class="hdlist1">
--csi=&lt;command_set_identifier&gt;
</dt>
<dd>
<p>
        This field specifies the identifier of command set.
        if not issued, NVM Command Set will be selected.
</p>
</dd>
<dt class="hdlist1">
-l &lt;lbstm&gt;
</dt>
<dt class="hdlist1">
--lbstm=&lt;lbstm&gt;
</dt>
<dd>
<p>
        Logical Block Storage Tag Mask for end-to-end protection.
</p>
</dd>
<dt class="hdlist1">
-b
</dt>
<dt class="hdlist1">
--block-size
</dt>
<dd>
<p>
        Target block size the new namespace should be formatted as. Potential FLBAS
  values will be values will be scanned and the lowest numbered will be
  selected for the create-ns operation. Conflicts with --flbas argument.
</p>
</dd>
<dt class="hdlist1">
-S
</dt>
<dt class="hdlist1">
--nsze-si
</dt>
<dd>
<p>
        The namespace size (NSZE) in standard SI units.
        The value SI suffixed is divided by the namespace LBA size to set as NSZE.
        If the value not suffixed it is set as same with the nsze option.
</p>
</dd>
<dt class="hdlist1">
-C
</dt>
<dt class="hdlist1">
--ncap-si
</dt>
<dd>
<p>
        The namespace capacity (NCAP) in standard SI units.
        The value SI suffixed is divided by the namespace LBA size to set as NCAP.
        If the value not suffixed it is set as same with the ncap option.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Create a namespace:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme create-ns /dev/nvme0 --nsze 11995709440 --ncap 1199570940 --flbas 0 --dps 0 --nmic 0
# nvme create-ns /dev/nvme0 --nsze-si 6.14T --ncap 1199570940 --flbas 0 --dps 0 --nmic 0</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
 070701015D6CDE000081A4000003E80000006400000001642C0FB6000007BE000000000000004A00000000000000000000002800000000nvme-cli/Documentation/nvme-delete-ns.1   '\" t
.\"     Title: nvme-id-ns
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-ID\-NS" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-delete-ns \- Send NVMe Namespace Management delete namespace command, return result\&.
.SH "SYNOPSIS"
.sp
.nf
\fInvme delete\-ns\fR <device> [\-\-namespace\-id=<nsid> | \-n <nsid>]
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, sends an nvme namespace management command to delete the requested namespace and provides the result\&.
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1)\&. The \*(Aq\-\-namespace\-id\*(Aq option is mandatory\&.
.SH "OPTIONS"
.PP
\-n <nsid>, \-\-namespace\-id=<nsid>
.RS 4
The namespace identifier to delete\&.
.RE
.SH "EXAMPLES"
.sp
No examples yet\&.
.SH "NVME"
.sp
Part of the nvme\-user suite
  070701015D6CDF000081A4000003E80000006400000001642C0FB6000046D8000000000000004A00000000000000000000002B00000000nvme-cli/Documentation/nvme-delete-ns.html    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-id-ns(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-id-ns(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-delete-ns -
   Send NVMe Namespace Management delete namespace command, return result.
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme delete-ns</em> &lt;device&gt; [--namespace-id=&lt;nsid&gt; | -n &lt;nsid&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, sends an nvme namespace management command
to delete the requested namespace and provides the result.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).
The <code>'--namespace-id'</code> option is mandatory.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-n &lt;nsid&gt;
</dt>
<dt class="hdlist1">
--namespace-id=&lt;nsid&gt;
</dt>
<dd>
<p>
        The namespace identifier to delete.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="paragraph"><p>No examples yet.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
070701015D6CE0000081A4000003E80000006400000001642C0FB60000085E000000000000004A00000000000000000000002800000000nvme-cli/Documentation/nvme-dera-stat.1   '\" t
.\"     Title: nvme-dera-stat
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-DERA\-STAT" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-dera-stat \- Send NVMe Dera Device status and Additional SMART log page request, returns result and log
.SH "SYNOPSIS"
.sp
.nf
\fInvme dera stat\fR <device>
.fi
.SH "DESCRIPTION"
.sp
Retrieves the NVMe Dera Device status and Additional SMART log page from the device and provides the returned structure\&.
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1)\&.
.sp
On success, the returned status and smart log structure are printed in a readable format\&.
.SH "OPTIONS"
.sp
none
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Print the Dera Device status and Additional SMART log page in a human readable format:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme dera stat /dev/nvme0
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite
  070701015D6CE1000081A4000003E80000006400000001642C0FB60000472F000000000000004A00000000000000000000002B00000000nvme-cli/Documentation/nvme-dera-stat.html    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-dera-stat(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-dera-stat(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-dera-stat -
   Send NVMe Dera Device status and Additional SMART log page request, returns result and log
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme dera stat</em> &lt;device&gt;</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>Retrieves the NVMe Dera Device status and Additional SMART log page from the device and
provides the returned structure.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).</p></div>
<div class="paragraph"><p>On success, the returned status and smart log structure are printed in a readable format.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="paragraph"><p>none</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Print the Dera Device status and Additional SMART log page in a human readable format:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme dera stat /dev/nvme0</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
 070701015D6CE2000081A4000003E80000006400000001642C0FB6000007D8000000000000004A00000000000000000000002800000000nvme-cli/Documentation/nvme-detach-ns.1   '\" t
.\"     Title: nvme-detach-ns
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-DETACH\-NS" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-detach-ns \- Send NVMe detach namespace, return result\&.
.SH "SYNOPSIS"
.sp
.nf
\fInvme detach\-ns\fR <device> [\-\-namespace\-id=<nsid> | \-n <nsid>]
                        [\-\-controllers=<ctrl\-list,> | \-c <ctrl\-list,>
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, sends the nvme namespace detach command for the provided namespace identifier, attaching to the provided list of controller identifiers\&.
.SH "OPTIONS"
.PP
\-n <nsid>, \-\-namespace\-id=<nsid>
.RS 4
The namespace identifier to detach\&.
.RE
.PP
\-c <ctrl\-list,>, \-controllers=<ctrl\-list,>
.RS 4
The comma separated list of controller identifiers to detach the namespace from\&.
.RE
.SH "EXAMPLES"
.sp
No examples yet\&.
.SH "NVME"
.sp
Part of the nvme\-user suite
070701015D6CE3000081A4000003E80000006400000001642C0FB600004731000000000000004A00000000000000000000002B00000000nvme-cli/Documentation/nvme-detach-ns.html    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-detach-ns(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-detach-ns(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-detach-ns -
   Send NVMe detach namespace, return result.
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme detach-ns</em> &lt;device&gt; [--namespace-id=&lt;nsid&gt; | -n &lt;nsid&gt;]
                        [--controllers=&lt;ctrl-list,&gt; | -c &lt;ctrl-list,&gt;</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, sends the nvme namespace detach command for
the provided namespace identifier, attaching to the provided list of
controller identifiers.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-n &lt;nsid&gt;
</dt>
<dt class="hdlist1">
--namespace-id=&lt;nsid&gt;
</dt>
<dd>
<p>
        The namespace identifier to detach.
</p>
</dd>
<dt class="hdlist1">
-c &lt;ctrl-list,&gt;
</dt>
<dt class="hdlist1">
-controllers=&lt;ctrl-list,&gt;
</dt>
<dd>
<p>
        The comma separated list of controller identifiers to detach
        the namespace from.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="paragraph"><p>No examples yet.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
   070701015D6CE4000081A4000003E80000006400000001642C0FB600000C3C000000000000004A00000000000000000000002F00000000nvme-cli/Documentation/nvme-device-self-test.1    '\" t
.\"     Title: nvme-device-self-test
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-DEVICE\-SELF\-" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-device-self-test \- Perform the necessary tests to observe the performance and the parameters
.SH "SYNOPSIS"
.sp
.nf
\fInvme device\-self\-test\fR <device> [\-\-namespace\-id=<NUM> | \-n <NUM>]
                        [\-\-self\-test\-code=<NUM> | \-s <NUM>]  [\-\-wait | \-w]
.fi
.SH "DESCRIPTION"
.sp
Initiates the required test based on the user input\&.
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1)\&.
.sp
On success, the corresponding test is initiated\&.
.SH "OPTIONS"
.PP
\-n <NUM>, \-\-namespace\-id=<NUM>
.RS 4
Indicate the namespace in which the device self\-test has to be carried out
.RE
.PP
\-s <NUM>, \-\-self\-test\-code=<NUM>
.RS 4
This field specifies the action taken by the device self\-test command : 0h: Show current state of device self\-test operation 1h: Start a short device self\-test operation 2h: Start a extended device self\-test operation eh: Start a vendor specific device self\-test operation fh: Abort the device self\-test operation Default is 0h\&.
.RE
.PP
\-w, \-\-wait
.RS 4
Wait for the device self test to complete before exiting The device self\-test is aborted by SIGINT signal interrupt for the wait The option is ignored if the abort self\-test code option specified\&.
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Start a short device self\-test in the namespace\-id 1:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme device\-self\-test /dev/nvme0 \-n 1 \-s 1
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Abort the device self\-test operation in the namespace\-id 1:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme device\-self\-test /dev/nvme0 \-n 1 \-s 0xf
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite
070701015D6CE5000081A4000003E80000006400000001642C0FB600004C39000000000000004A00000000000000000000003200000000nvme-cli/Documentation/nvme-device-self-test.html <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-device-self-test(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-device-self-test(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-device-self-test -
   Perform the necessary tests to observe the performance and the parameters
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme device-self-test</em> &lt;device&gt; [--namespace-id=&lt;NUM&gt; | -n &lt;NUM&gt;]
                        [--self-test-code=&lt;NUM&gt; | -s &lt;NUM&gt;]  [--wait | -w]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>Initiates the required test based on the user input.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).</p></div>
<div class="paragraph"><p>On success, the corresponding test is initiated.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-n &lt;NUM&gt;
</dt>
<dt class="hdlist1">
--namespace-id=&lt;NUM&gt;
</dt>
<dd>
<p>
        Indicate the namespace in which the device self-test has to be carried out
</p>
</dd>
<dt class="hdlist1">
-s &lt;NUM&gt;
</dt>
<dt class="hdlist1">
--self-test-code=&lt;NUM&gt;
</dt>
<dd>
<p>
        This field specifies the action taken by the device self-test command :
         0h: Show current state of device self-test operation
         1h: Start a short device self-test operation
         2h: Start a extended device self-test operation
         eh: Start a vendor specific device self-test operation
         fh: Abort the device self-test operation
        Default is 0h.
</p>
</dd>
<dt class="hdlist1">
-w
</dt>
<dt class="hdlist1">
--wait
</dt>
<dd>
<p>
        Wait for the device self test to complete before exiting
        The device self-test is aborted by SIGINT signal interrupt for the wait
        The option is ignored if the abort self-test code option specified.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Start a short device self-test in the namespace-id 1:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme device-self-test /dev/nvme0 -n 1 -s 1</code></pre>
</div></div>
</li>
<li>
<p>
Abort the device self-test operation in the namespace-id 1:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme device-self-test /dev/nvme0 -n 1 -s 0xf</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
   070701015D6CE6000081A4000003E80000006400000001642C0FB600000ECB000000000000004A00000000000000000000002200000000nvme-cli/Documentation/nvme-dim.1 '\" t
.\"     Title: nvme-dim
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-DIM" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-dim \- Send Discovery Information Management command to one or more Discovery Controllers\&.
.SH "SYNOPSIS"
.sp
.nf
\fInvme dim\fR
                [\-\-task=<task>     | \-t <task>]
                [\-\-nqn=<nqn>       | \-n <nqn>]
                [\-\-device=<device> | \-d <device>]
.fi
.SH "DESCRIPTION"
.sp
Send Discovery Information Management (DIM) command to one or more Discovery Controllers\&. The DIM command allows performing two types of tasks: register or deregister\&.
.sp
The DIM command is used to explicitly register with Discovery Controllers (DC), especially with Central Discovery Controllers (CDC)\&. CDCs maintain a database (DB) of all the Hosts and Storage Subsystems in a network\&. The register task is used to add a host to the CDC\(cqs DB\&. The deregister task is used to remove a host from the CDC\(cqs DB\&.
.sp
During a register operation the host will send mandatory information such as the Host\(cqs NQN and ID, as well as the Host\(cqs hostname and the Operating System\(cqs version that it is running on\&. There is also an optional Host Symbolic Name that can be registered with the CDC\&.
.sp
This command can only be applied to existing DC connections previously created with the nvme\-discover(1) command using the \-\-persistent option\&.
.SH "OPTIONS"
.PP
\-t <task>, \-\-task <task>
.RS 4
The task to perform: "register" or "deregister"\&.
.RE
.PP
\-n <subnqn>, \-\-nqn <nqn>
.RS 4
The DIM command will be sent to the Discovery Controller (DC) matching this NQN\&. A list of comma\-separated NQNs can be supplied to apply the command to more than one DC\&.
.RE
.PP
\-d <device>, \-\-device <device>
.RS 4
The DIM command will be sent to the Discovery Controllers (DC) associated with this NVMe device handle\&. A list of comma\-separated device handles can be supplied to apply the command to more than one DC\&.
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Register with the Central Discovery Controller (CDC) named nqn\&.1988\-11\&.com\&.dell:SFSS:1:20220118125153e8:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme dim \-\-task=register \-\-nqn=nqn\&.1988\-11\&.com\&.dell:SFSS:1:20220118125153e8
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Deregister from Central Discovery Controller (CDC) associated with nvme4
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme dim \-\-task=deregister \-\-device=nvme4
.fi
.if n \{\
.RE
.\}
.RE
.SH "SEE ALSO"
.sp
nvme\-discover(1)
.SH "NVME"
.sp
Part of the nvme\-user suite
 070701015D6CE7000081A4000003E80000006400000001642C0FB600004F46000000000000004A00000000000000000000002500000000nvme-cli/Documentation/nvme-dim.html  <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-dim(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-dim(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-dim -
   Send Discovery Information Management command to one or more Discovery Controllers.
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme dim</em>
                [--task=&lt;task&gt;     | -t &lt;task&gt;]
                [--nqn=&lt;nqn&gt;       | -n &lt;nqn&gt;]
                [--device=&lt;device&gt; | -d &lt;device&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>Send Discovery Information Management (DIM) command to one or more Discovery
Controllers. The DIM command allows performing two types of tasks: register or
deregister.</p></div>
<div class="paragraph"><p>The DIM command is used to explicitly register with Discovery Controllers (DC),
especially with Central Discovery Controllers (CDC). CDCs maintain a database (DB)
of all the Hosts and Storage Subsystems in a network. The register task is used
to add a host to the CDC&#8217;s DB. The deregister task is used to remove a host from
the CDC&#8217;s DB.</p></div>
<div class="paragraph"><p>During a register operation the host will send mandatory information such as the
Host&#8217;s NQN and ID, as well as the Host&#8217;s hostname and the Operating System&#8217;s
version that it is running on. There is also an optional Host Symbolic Name
that can be registered with the CDC.</p></div>
<div class="paragraph"><p>This command can only be applied to existing DC connections previously created
with the nvme-discover(1) command using the --persistent option.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-t &lt;task&gt;
</dt>
<dt class="hdlist1">
--task &lt;task&gt;
</dt>
<dd>
<p>
        The task to perform: "register" or "deregister".
</p>
</dd>
<dt class="hdlist1">
-n &lt;subnqn&gt;
</dt>
<dt class="hdlist1">
--nqn &lt;nqn&gt;
</dt>
<dd>
<p>
        The DIM command will be sent to the Discovery Controller (DC) matching this
        NQN. A list of comma-separated NQNs can be supplied to apply the command to
        more than one DC.
</p>
</dd>
<dt class="hdlist1">
-d &lt;device&gt;
</dt>
<dt class="hdlist1">
--device &lt;device&gt;
</dt>
<dd>
<p>
        The DIM command will be sent to the Discovery Controllers (DC) associated
        with this NVMe device handle. A list of comma-separated device handles can
        be supplied to apply the command to more than one DC.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Register with the Central Discovery Controller (CDC) named
nqn.1988-11.com.dell:SFSS:1:20220118125153e8:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme dim --task=register --nqn=nqn.1988-11.com.dell:SFSS:1:20220118125153e8</code></pre>
</div></div>
</li>
<li>
<p>
Deregister from Central Discovery Controller (CDC) associated with nvme4
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme dim --task=deregister --device=nvme4</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_see_also">SEE ALSO</h2>
<div class="sectionbody">
<div class="paragraph"><p>nvme-discover(1)</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
  070701015D6CE8000081A4000003E80000006400000001642C0FB600001335000000000000004A00000000000000000000002A00000000nvme-cli/Documentation/nvme-dir-receive.1 '\" t
.\"     Title: nvme-dir-receive
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-DIR\-RECEIVE" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-dir-receive \- Send a directive receive command, returns applicable results
.SH "SYNOPSIS"
.sp
.nf
\fInvme dir\-receive\fR <device> [\-\-namespace\-id=<nsid> | \-n <nsid>]
                          [\-\-data\-len=<data\-len> | \-l <data\-len>]
                          [\-\-dir\-type=<dtype> | \-D <dtype>]
                          [\-\-dir\-spec=<dspec> | \-S <dspec>]
                          [\-\-dir\-oper=<doper> | \-O <doper>]
                          [\-\-req\-resource=<nsr> | \-r <nsr>]
                          [\-\-human\-readable | \-H]
                          [\-\-raw\-binary | \-b]
.fi
.SH "DESCRIPTION"
.sp
Submits an NVMe Directive Receive admin command and returns the applicable results\&. This may be the combination of directive type, and operation, as well as number of requested resource if specific operation needs it\&.
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1)\&.
.sp
On success, the returned directive\(cqs parameter structure (if applicable) is returned in one of several ways depending on the option flags; the structure may parsed by the program and printed in a readable format if it is a known structure, displayed in hex, or the raw buffer may be printed to stdout for another program to parse\&.
.SH "OPTIONS"
.PP
\-n <nsid>, \-\-namespace\-id=<nsid>
.RS 4
Retrieve the feature for the given nsid\&. This is optional and most features do not use this value\&.
.RE
.PP
\-D <dtype>, \-\-dir\-type=<dtype>
.RS 4
Directive type
.RE
.PP
\-S <dspec>, \-\-dir\-spec=<dspec>
.RS 4
Directive specific
.RE
.PP
\-O <doper>, \-\-dir\-oper=<doper>
.RS 4
Directive operation
.RE
.PP
\-r <nsr>, \-\-req\-resource=<nsr>
.RS 4
Directive requested resource count
.RE
.sp
+
.TS
allbox tab(:);
lt lt
lt lt
lt lt
lt lt
lt lt
lt lt.
T{
.sp
Select
T}:T{
.sp
Description
T}
T{
.sp
0
T}:T{
.sp
Current
T}
T{
.sp
1
T}:T{
.sp
Default
T}
T{
.sp
2
T}:T{
.sp
Saved
T}
T{
.sp
3
T}:T{
.sp
Supported capabilities
T}
T{
.sp
4\(en7
T}:T{
.sp
Reserved
T}
.TE
.sp 1
.PP
\-l <data\-len>, \-\-data\-len=<data\-len>
.RS 4
The data length for the buffer returned for this feature\&. Most known features do not use this value\&. The exception is LBA Range Type
.RE
.PP
\-b, \-\-raw\-binary
.RS 4
Print the raw receive buffer to stdout if the command returns a structure\&.
.RE
.PP
\-H, \-\-human\-readable
.RS 4
Print the decoded receive buffer to stdout if the command returns a structure\&.
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Identify directive type supported :
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme dir\-receive /dev/nvme0 \-\-dir\-type 0 \-\-dir\-oper 1 \-\-human\-readable
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Get stream directive parameters :
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme dir\-receive /dev/nvme0 \-\-dir\-type 1 \-\-dir\-oper 1 \-\-human\-readable
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Allocate 3 streams for namespace 1
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme dir\-receive /dev/nvme0n1 \-\-dir\-type 1 \-\-dir\-oper 3 \-\-req\-resource 3 \-\-human\-readable
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Get streams directive status :
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme dir\-receive /dev/nvme0 \-\-dir\-type 1 \-\-dir\-oper 2 \-\-human\-readable
.fi
.if n \{\
.RE
.\}
.sp
It is probably a bad idea to not redirect stdout when using this mode\&.
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite
   070701015D6CE9000081A4000003E80000006400000001642C0FB6000057FB000000000000004A00000000000000000000002D00000000nvme-cli/Documentation/nvme-dir-receive.html  <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-dir-receive(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-dir-receive(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-dir-receive -
   Send a directive receive command, returns applicable results
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme dir-receive</em> &lt;device&gt; [--namespace-id=&lt;nsid&gt; | -n &lt;nsid&gt;]
                          [--data-len=&lt;data-len&gt; | -l &lt;data-len&gt;]
                          [--dir-type=&lt;dtype&gt; | -D &lt;dtype&gt;]
                          [--dir-spec=&lt;dspec&gt; | -S &lt;dspec&gt;]
                          [--dir-oper=&lt;doper&gt; | -O &lt;doper&gt;]
                          [--req-resource=&lt;nsr&gt; | -r &lt;nsr&gt;]
                          [--human-readable | -H]
                          [--raw-binary | -b]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>Submits an NVMe Directive Receive admin command and returns the applicable
results. This may be the combination of directive type, and operation, as
well as number of requested resource if specific operation needs it.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).</p></div>
<div class="paragraph"><p>On success, the returned directive&#8217;s parameter structure (if applicable) is
returned in one of several ways depending on the option flags; the
structure may parsed by the program and printed in a readable format
if it is a known structure, displayed in hex, or the raw buffer may be
printed to stdout for another program to parse.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-n &lt;nsid&gt;
</dt>
<dt class="hdlist1">
--namespace-id=&lt;nsid&gt;
</dt>
<dd>
<p>
        Retrieve the feature for the given nsid. This is optional and
        most features do not use this value.
</p>
</dd>
<dt class="hdlist1">
-D &lt;dtype&gt;
</dt>
<dt class="hdlist1">
--dir-type=&lt;dtype&gt;
</dt>
<dd>
<p>
        Directive type
</p>
</dd>
<dt class="hdlist1">
-S &lt;dspec&gt;
</dt>
<dt class="hdlist1">
--dir-spec=&lt;dspec&gt;
</dt>
<dd>
<p>
        Directive specific
</p>
</dd>
<dt class="hdlist1">
-O &lt;doper&gt;
</dt>
<dt class="hdlist1">
--dir-oper=&lt;doper&gt;
</dt>
<dd>
<p>
        Directive operation
</p>
</dd>
<dt class="hdlist1">
-r &lt;nsr&gt;
</dt>
<dt class="hdlist1">
--req-resource=&lt;nsr&gt;
</dt>
<dd>
<p>
        Directive requested resource count
</p>
</dd>
</dl></div>
<div class="paragraph"><p>+</p></div>
<div class="tableblock">
<table rules="all"
width="100%"
frame="border"
cellspacing="0" cellpadding="4">
<col width="50%" />
<col width="50%" />
<tbody>
<tr>
<td align="left" valign="top"><p class="table">Select</p></td>
<td align="left" valign="top"><p class="table">Description</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">0</p></td>
<td align="left" valign="top"><p class="table">Current</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">1</p></td>
<td align="left" valign="top"><p class="table">Default</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">2</p></td>
<td align="left" valign="top"><p class="table">Saved</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">3</p></td>
<td align="left" valign="top"><p class="table">Supported capabilities</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">4â€“7</p></td>
<td align="left" valign="top"><p class="table">Reserved</p></td>
</tr>
</tbody>
</table>
</div>
<div class="dlist"><dl>
<dt class="hdlist1">
-l &lt;data-len&gt;
</dt>
<dt class="hdlist1">
--data-len=&lt;data-len&gt;
</dt>
<dd>
<p>
        The data length for the buffer returned for this feature. Most
        known features do not use this value. The exception is LBA
        Range Type
</p>
</dd>
<dt class="hdlist1">
-b
</dt>
<dt class="hdlist1">
--raw-binary
</dt>
<dd>
<p>
        Print the raw receive buffer to stdout if the command returns
        a structure.
</p>
</dd>
<dt class="hdlist1">
-H
</dt>
<dt class="hdlist1">
--human-readable
</dt>
<dd>
<p>
        Print the decoded receive buffer to stdout if the command returns
        a structure.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Identify directive type supported :
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme dir-receive /dev/nvme0 --dir-type 0 --dir-oper 1 --human-readable</code></pre>
</div></div>
</li>
<li>
<p>
Get stream directive parameters :
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme dir-receive /dev/nvme0 --dir-type 1 --dir-oper 1 --human-readable</code></pre>
</div></div>
</li>
<li>
<p>
Allocate 3 streams for namespace 1
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme dir-receive /dev/nvme0n1 --dir-type 1 --dir-oper 3 --req-resource 3 --human-readable</code></pre>
</div></div>
</li>
<li>
<p>
Get streams directive status :
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme dir-receive /dev/nvme0 --dir-type 1 --dir-oper 2 --human-readable</code></pre>
</div></div>
<div class="paragraph"><p>It is probably a bad idea to not redirect stdout when using this mode.</p></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
 070701015D6CEA000081A4000003E80000006400000001642C0FB6000013B1000000000000004A00000000000000000000002700000000nvme-cli/Documentation/nvme-dir-send.1    '\" t
.\"     Title: nvme-dir-send
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-DIR\-SEND" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-dir-send \- Issue a directive send command, returns applicable results
.SH "SYNOPSIS"
.sp
.nf
\fInvme dir\-send\fR <device> [\-\-namespace\-id=<nsid> | \-n <nsid>]
                          [\-\-data\-len=<data\-len> | \-l <data\-len>]
                          [\-\-dir\-type=<dtype> | \-D <dtype>]
                          [\-\-dir\-spec=<dspec> | \-S <dspec>]
                          [\-\-dir\-oper=<doper> | \-O <doper>]
                          [\-\-endir=<endir> | \-e <endir>]
                          [\-\-target\-dir=<tdir> | \-T <tdir>]
                          [\-\-human\-readable | \-H]
                          [\-\-raw\-binary | \-b]
.fi
.SH "DESCRIPTION"
.sp
Submits an NVMe Directive Send admin command and returns the applicable results\&. This may be the combination of directive type, and operation, as well as target directive and its enable/disable status of the operation, if specific operation needs it\&.
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1)\&.
.sp
On success, the returned directive\(cqs parameter structure (if applicable) is returned in one of several ways depending on the option flags; the structure may parsed by the program and printed in a readable format if it is a known structure, displayed in hex, or the raw buffer may be printed to stdout for another program to parse\&.
.SH "OPTIONS"
.PP
\-n <nsid>, \-\-namespace\-id=<nsid>
.RS 4
Retrieve the feature for the given nsid\&. This is optional and most features do not use this value\&.
.RE
.PP
\-D <dtype>, \-\-dir\-type=<dtype>
.RS 4
Directive type
.RE
.PP
\-S <dspec>, \-\-dir\-spec=<dspec>
.RS 4
Directive specific
.RE
.PP
\-O <doper>, \-\-dir\-oper=<doper>
.RS 4
Directive operation
.RE
.PP
\-T <tdir>, \-\-target\-dir=<nsr>
.RS 4
Target directive of the operation
.RE
.PP
\-e <endir>, \-\-endir=<endir>
.RS 4
Target directive enable(1) or disable (0) operation
.RE
.sp
+
.TS
allbox tab(:);
lt lt
lt lt
lt lt
lt lt
lt lt
lt lt.
T{
.sp
Select
T}:T{
.sp
Description
T}
T{
.sp
0
T}:T{
.sp
Current
T}
T{
.sp
1
T}:T{
.sp
Default
T}
T{
.sp
2
T}:T{
.sp
Saved
T}
T{
.sp
3
T}:T{
.sp
Supported capabilities
T}
T{
.sp
4\(en7
T}:T{
.sp
Reserved
T}
.TE
.sp 1
.PP
\-l <data\-len>, \-\-data\-len=<data\-len>
.RS 4
The data length for the buffer returned for this feature\&. Most known features do not use this value\&. The exception is LBA Range Type
.RE
.PP
\-b, \-\-raw\-binary
.RS 4
Print the raw receive buffer to stdout if the command returns a structure\&.
.RE
.PP
\-H, \-\-human\-readable
.RS 4
Print the decoded receive buffer to stdout if the command returns a structure\&.
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Enable streams directive :
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme dir\-send /dev/nvme0n1 \-\-dir\-type 0 \-\-dir\-oper 1 \-\-target\-dir 1 \-\-endir 1
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Disable streams directive :
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme dir\-send /dev/nvme0n1 \-\-dir\-type 0 \-\-dir\-oper 1 \-\-target\-dir 1 \-\-endir 0
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Release all allocated streams resource :
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme dir\-send /dev/nvme0n1 \-\-dir\-type 1 \-\-dir\-oper 2
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Release stream ID 3 :
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme dir\-send /dev/nvme0 \-\-dir\-type 1 \-\-dir\-oper 1 \-\-dir\-spec 3
.fi
.if n \{\
.RE
.\}
.sp
It is probably a bad idea to not redirect stdout when using this mode\&.
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite
   070701015D6CEB000081A4000003E80000006400000001642C0FB6000058DB000000000000004A00000000000000000000002A00000000nvme-cli/Documentation/nvme-dir-send.html <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-dir-send(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-dir-send(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-dir-send -
   Issue a directive send command, returns applicable results
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme dir-send</em> &lt;device&gt; [--namespace-id=&lt;nsid&gt; | -n &lt;nsid&gt;]
                          [--data-len=&lt;data-len&gt; | -l &lt;data-len&gt;]
                          [--dir-type=&lt;dtype&gt; | -D &lt;dtype&gt;]
                          [--dir-spec=&lt;dspec&gt; | -S &lt;dspec&gt;]
                          [--dir-oper=&lt;doper&gt; | -O &lt;doper&gt;]
                          [--endir=&lt;endir&gt; | -e &lt;endir&gt;]
                          [--target-dir=&lt;tdir&gt; | -T &lt;tdir&gt;]
                          [--human-readable | -H]
                          [--raw-binary | -b]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>Submits an NVMe Directive Send admin command and returns the applicable
results. This may be the combination of directive type, and operation, as
well as target directive and its enable/disable status of the operation,
if specific operation needs it.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).</p></div>
<div class="paragraph"><p>On success, the returned directive&#8217;s parameter structure (if applicable) is
returned in one of several ways depending on the option flags; the
structure may parsed by the program and printed in a readable format
if it is a known structure, displayed in hex, or the raw buffer may be
printed to stdout for another program to parse.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-n &lt;nsid&gt;
</dt>
<dt class="hdlist1">
--namespace-id=&lt;nsid&gt;
</dt>
<dd>
<p>
        Retrieve the feature for the given nsid. This is optional and
        most features do not use this value.
</p>
</dd>
<dt class="hdlist1">
-D &lt;dtype&gt;
</dt>
<dt class="hdlist1">
--dir-type=&lt;dtype&gt;
</dt>
<dd>
<p>
        Directive type
</p>
</dd>
<dt class="hdlist1">
-S &lt;dspec&gt;
</dt>
<dt class="hdlist1">
--dir-spec=&lt;dspec&gt;
</dt>
<dd>
<p>
        Directive specific
</p>
</dd>
<dt class="hdlist1">
-O &lt;doper&gt;
</dt>
<dt class="hdlist1">
--dir-oper=&lt;doper&gt;
</dt>
<dd>
<p>
        Directive operation
</p>
</dd>
<dt class="hdlist1">
-T &lt;tdir&gt;
</dt>
<dt class="hdlist1">
--target-dir=&lt;nsr&gt;
</dt>
<dd>
<p>
        Target directive of the operation
</p>
</dd>
<dt class="hdlist1">
-e &lt;endir&gt;
</dt>
<dt class="hdlist1">
--endir=&lt;endir&gt;
</dt>
<dd>
<p>
        Target directive enable(1) or disable (0) operation
</p>
</dd>
</dl></div>
<div class="paragraph"><p>+</p></div>
<div class="tableblock">
<table rules="all"
width="100%"
frame="border"
cellspacing="0" cellpadding="4">
<col width="50%" />
<col width="50%" />
<tbody>
<tr>
<td align="left" valign="top"><p class="table">Select</p></td>
<td align="left" valign="top"><p class="table">Description</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">0</p></td>
<td align="left" valign="top"><p class="table">Current</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">1</p></td>
<td align="left" valign="top"><p class="table">Default</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">2</p></td>
<td align="left" valign="top"><p class="table">Saved</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">3</p></td>
<td align="left" valign="top"><p class="table">Supported capabilities</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">4â€“7</p></td>
<td align="left" valign="top"><p class="table">Reserved</p></td>
</tr>
</tbody>
</table>
</div>
<div class="dlist"><dl>
<dt class="hdlist1">
-l &lt;data-len&gt;
</dt>
<dt class="hdlist1">
--data-len=&lt;data-len&gt;
</dt>
<dd>
<p>
        The data length for the buffer returned for this feature. Most
        known features do not use this value. The exception is LBA
        Range Type
</p>
</dd>
<dt class="hdlist1">
-b
</dt>
<dt class="hdlist1">
--raw-binary
</dt>
<dd>
<p>
        Print the raw receive buffer to stdout if the command returns
        a structure.
</p>
</dd>
<dt class="hdlist1">
-H
</dt>
<dt class="hdlist1">
--human-readable
</dt>
<dd>
<p>
        Print the decoded receive buffer to stdout if the command returns
        a structure.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Enable streams directive :
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme dir-send /dev/nvme0n1 --dir-type 0 --dir-oper 1 --target-dir 1 --endir 1</code></pre>
</div></div>
</li>
<li>
<p>
Disable streams directive :
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme dir-send /dev/nvme0n1 --dir-type 0 --dir-oper 1 --target-dir 1 --endir 0</code></pre>
</div></div>
</li>
<li>
<p>
Release all allocated streams resource :
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme dir-send /dev/nvme0n1 --dir-type 1 --dir-oper 2</code></pre>
</div></div>
</li>
<li>
<p>
Release stream ID 3 :
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme dir-send /dev/nvme0 --dir-type 1 --dir-oper 1 --dir-spec 3</code></pre>
</div></div>
<div class="paragraph"><p>It is probably a bad idea to not redirect stdout when using this mode.</p></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
 070701015D6CEC000081A4000003E80000006400000001642C0FB60000074C000000000000004A00000000000000000000002D00000000nvme-cli/Documentation/nvme-disconnect-all.1  '\" t
.\"     Title: nvme-disconnect-all
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-DISCONNECT\-AL" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-disconnect-all \- Disconnect from all connected Fabrics controllers\&.
.SH "SYNOPSIS"
.sp
.nf
\fInvme disconnect\-all\fR
.fi
.SH "DESCRIPTION"
.sp
Disconnects and removes all existing NVMe over Fabrics controllers\&.
.sp
See the documentation for the nvme\-disconnect(1) command for further background\&.
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Disconnect all existing nvme controllers:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme disconnect\-all
.fi
.if n \{\
.RE
.\}
.RE
.SH "SEE ALSO"
.sp
nvme\-disconnect(1)
.SH "NVME"
.sp
Part of the nvme\-user suite
070701015D6CED000081A4000003E80000006400000001642C0FB6000045ED000000000000004A00000000000000000000003000000000nvme-cli/Documentation/nvme-disconnect-all.html   <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-disconnect-all(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-disconnect-all(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-disconnect-all -
   Disconnect from all connected Fabrics controllers.
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme disconnect-all</em></pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>Disconnects and removes all existing NVMe over Fabrics controllers.</p></div>
<div class="paragraph"><p>See the documentation for the nvme-disconnect(1) command for further
background.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Disconnect all existing nvme controllers:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme disconnect-all</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_see_also">SEE ALSO</h2>
<div class="sectionbody">
<div class="paragraph"><p>nvme-disconnect(1)</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
   070701015D6CEE000081A4000003E80000006400000001642C0FB600000A98000000000000004A00000000000000000000002900000000nvme-cli/Documentation/nvme-disconnect.1  '\" t
.\"     Title: nvme-disconnect
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-DISCONNECT" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-disconnect \- Disconnect one or more Fabrics controller(s)\&.
.SH "SYNOPSIS"
.sp
.nf
\fInvme disconnect\fR
                [\-\-nqn=<subnqn>           | \-n <subnqn>]
                [\-\-device=<device>        | \-d <device>]
.fi
.SH "DESCRIPTION"
.sp
Disconnects and removes one or more existing NVMe over Fabrics controllers\&. If the \-\-nqn option is specified all controllers connecting to the Subsystem identified by subnqn will be removed\&. If the \-\-device option is specified the controller specified by the \-\-device option will be removed\&.
.SH "OPTIONS"
.PP
\-n <subnqn>, \-\-nqn <subnqn>
.RS 4
Indicates that all controllers for the NVMe subsystems specified should be removed\&.
.RE
.PP
\-d <device>, \-\-device <device>
.RS 4
Indicates that the controller with the specified name should be removed\&.
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Disconnect all controllers for a subsystem named nqn\&.2014\-08\&.com\&.example:nvme:nvm\-subsystem\-sn\-d78432:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme disconnect \-\-nqn=nqn\&.2014\-08\&.com\&.example:nvme:nvm\-subsystem\-sn\-d78432
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Disconnect the controller nvme4
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme disconnect \-\-device=nvme4
.fi
.if n \{\
.RE
.\}
.RE
.SH "SEE ALSO"
.sp
nvme\-connect(1)
.SH "NVME"
.sp
Part of the nvme\-user suite
070701015D6CEF000081A4000003E80000006400000001642C0FB600004A37000000000000004A00000000000000000000002C00000000nvme-cli/Documentation/nvme-disconnect.html   <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-disconnect(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-disconnect(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-disconnect -
   Disconnect one or more Fabrics controller(s).
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme disconnect</em>
                [--nqn=&lt;subnqn&gt;           | -n &lt;subnqn&gt;]
                [--device=&lt;device&gt;        | -d &lt;device&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>Disconnects and removes one or more existing NVMe over Fabrics controllers.
If the --nqn option is specified all controllers connecting to the Subsystem
identified by subnqn will be removed.  If the --device option is specified
the controller specified by the --device option will be removed.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-n &lt;subnqn&gt;
</dt>
<dt class="hdlist1">
--nqn &lt;subnqn&gt;
</dt>
<dd>
<p>
        Indicates that all controllers for the NVMe subsystems specified
        should be removed.
</p>
</dd>
<dt class="hdlist1">
-d &lt;device&gt;
</dt>
<dt class="hdlist1">
--device &lt;device&gt;
</dt>
<dd>
<p>
        Indicates that the controller with the specified name should be
        removed.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Disconnect all controllers for a subsystem named
nqn.2014-08.com.example:nvme:nvm-subsystem-sn-d78432:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme disconnect --nqn=nqn.2014-08.com.example:nvme:nvm-subsystem-sn-d78432</code></pre>
</div></div>
</li>
<li>
<p>
Disconnect the controller nvme4
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme disconnect --device=nvme4</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_see_also">SEE ALSO</h2>
<div class="sectionbody">
<div class="paragraph"><p>nvme-connect(1)</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
 070701015D6CF0000081A4000003E80000006400000001642C0FB600002BFA000000000000004A00000000000000000000002700000000nvme-cli/Documentation/nvme-discover.1    '\" t
.\"     Title: nvme-discover
.\"    Author: [see the "AUTHORS" section]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-DISCOVER" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-discover \- Send Get Log Page request to Discovery Controller\&.
.SH "SYNOPSIS"
.sp
.nf
\fInvme discover\fR
                [\-\-transport=<trtype>     | \-t <trtype>]
                [\-\-nqn=<subnqn>           | \-n <subnqn>]
                [\-\-traddr=<traddr>        | \-a <traddr>]
                [\-\-trsvcid=<trsvcid>      | \-s <trsvcid>]
                [\-\-host\-traddr=<traddr>   | \-w <traddr>]
                [\-\-host\-iface=<iface>     | \-f <iface>]
                [\-\-hostnqn=<hostnqn>      | \-q <hostnqn>]
                [\-\-hostid=<hostid>        | \-I <hostid>]
                [\-\-raw=<filename>         | \-r <filename>]
                [\-\-device=<device>        | \-d <device>]
                [\-\-cfg\-file=<cfg>         | \-C <cfg> ]
                [\-\-keep\-alive\-tmo=<sec>   | \-k <sec>]
                [\-\-reconnect\-delay=<#>    | \-c <#>]
                [\-\-ctrl\-loss\-tmo=<#>      | \-l <#>]
                [\-\-nr\-io\-queues=<#>       | \-i <#>]
                [\-\-nr\-write\-queues=<#>    | \-W <#>]
                [\-\-nr\-poll\-queues=<#>     | \-P <#>]
                [\-\-queue\-size=<#>         | \-Q <#>]
                [\-\-keyring=<#>                    ]
                [\-\-tls_key=<#>                    ]
                [\-\-hdr\-digest             | \-g]
                [\-\-data\-digest            | \-G]
                [\-\-persistent             | \-p]
                [\-\-quiet                  | \-S]
                [\-\-tls                        ]
                [\-\-dump\-config            | \-O]
                [\-\-output\-format=<fmt>    | \-o <fmt>]
                [\-\-force]
.fi
.SH "DESCRIPTION"
.sp
Send one or more Get Log Page requests to a NVMe\-over\-Fabrics Discovery Controller\&.
.sp
If no parameters are given, then \fInvme discover\fR will attempt to find a /usr/local/etc/nvme/discovery\&.conf file to use to supply a list of Discovery commands to run\&. If no /usr/local/etc/nvme/discovery\&.conf file exists, the command will quit with an error\&.
.sp
Otherwise, a specific Discovery Controller should be specified using the \-\-transport, \-\-traddr, and if necessary the \-\-trsvcid flags\&. A Discovery request will then be sent to the specified Discovery Controller\&.
.SH "BACKGROUND"
.sp
The NVMe\-over\-Fabrics specification defines the concept of a Discovery Controller that an NVMe Host can query on a fabric network to discover NVMe subsystems contained in NVMe Targets which it can connect to on the network\&. The Discovery Controller will return Discovery Log Pages that provide the NVMe Host with specific information (such as network address and unique subsystem NQN) the NVMe Host can use to issue an NVMe connect command to connect itself to a storage resource contained in that NVMe subsystem on the NVMe Target\&.
.sp
Note that the base NVMe specification defines the NQN (NVMe Qualified Name) format which an NVMe endpoint (device, subsystem, etc) must follow to guarantee a unique name under the NVMe standard\&. In particular, the Host NQN uniquely identifies the NVMe Host, and may be used by the the Discovery Controller to control what NVMe Target resources are allocated to the NVMe Host for a connection\&.
.sp
A Discovery Controller has it\(cqs own NQN defined in the NVMe\-over\-Fabrics specification, \fBnqn\&.2014\-08\&.org\&.nvmexpress\&.discovery\fR\&. All Discovery Controllers must use this NQN name\&. This NQN is used by default by nvme\-cli for the \fIdiscover\fR command\&.
.SH "OPTIONS"
.PP
\-t <trtype>, \-\-transport=<trtype>
.RS 4
This field specifies the network fabric being used for a NVMe\-over\-Fabrics network\&. Current string values include:
.TS
allbox tab(:);
lt lt
lt lt
lt lt
lt lt
lt lt.
T{
Value
T}:T{
Definition
T}
T{
rdma
T}:T{
The network fabric is an rdma network (RoCE, iWARP, Infiniband, basic rdma, etc)
T}
T{
fc
T}:T{
\fBWIP\fR
The network fabric is a Fibre Channel network\&.
T}
T{
tcp
T}:T{
The network fabric is a TCP/IP network\&.
T}
T{
loop
T}:T{
Connect to a NVMe over Fabrics target on the local host
T}
.TE
.sp 1
.RE
.PP
\-n <subnqn>, \-\-nqn <subnqn>
.RS 4
This field specifies the name for the NVMe subsystem to connect to\&.
.RE
.PP
\-a <traddr>, \-\-traddr=<traddr>
.RS 4
This field specifies the network address of the Discovery Controller\&. For transports using IP addressing (e\&.g\&. rdma) this should be an IP\-based address (ex\&. IPv4)\&.
.RE
.PP
\-s <trsvcid>, \-\-trsvcid=<trsvcid>
.RS 4
This field specifies the transport service id\&. For transports using IP addressing (e\&.g\&. rdma) this field is the port number\&. By default, the IP port number for the RDMA transport is 4420\&.
.RE
.PP
\-w <traddr>, \-\-host\-traddr=<traddr>
.RS 4
This field specifies the network address used on the host to connect to the Controller\&. For TCP, this sets the source address on the socket\&.
.RE
.PP
\-f <iface>, \-\-host\-iface=<iface>
.RS 4
This field specifies the network interface used on the host to connect to the Controller (e\&.g\&. IP eth1, enp2s0, enx78e7d1ea46da)\&. This forces the connection to be made on a specific interface instead of letting the system decide\&.
.RE
.PP
\-q <hostnqn>, \-\-hostnqn=<hostnqn>
.RS 4
Overrides the default host NQN that identifies the NVMe Host\&. If this option is not specified, the default is read from /usr/local/etc/nvme/hostnqn first\&. If that does not exist, the autogenerated NQN value from the NVMe Host kernel module is used next\&.
.RE
.PP
\-I <hostid>, \-\-hostid=<hostid>
.RS 4
UUID(Universally Unique Identifier) to be discovered which should be formatted\&.
.RE
.PP
\-r <filename>, \-\-raw=<filename>
.RS 4
This field will take the output of the
\fInvme discover\fR
command and dump it to a raw binary file\&. By default
\fInvme discover\fR
will dump the output to stdout\&.
.RE
.PP
\-d <device>, \-\-device=<device>
.RS 4
This field takes a device as input\&. It must be a persistent device associated with a Discovery Controller previously created by the command "connect\-all" or "discover"\&. <device> follows the format nvme*, eg\&. nvme0, nvme1\&.
.RE
.PP
\-C <cfg>, \-\-config\-file=<cfg>
.RS 4
Use the specified JSON configuration file instead of the default /usr/local/etc/nvme/config\&.json file or
\fInone\fR
to not read in an existing configuration file\&. The JSON configuration file format is documented in
\m[blue]\fBhttps://github\&.com/linux\-nvme/libnvme/doc/config\-schema\&.json\fR\m[]
.RE
.PP
\-k <#>, \-\-keep\-alive\-tmo=<#>
.RS 4
Overrides the default keep alive timeout (in seconds)\&. This option will be ignored for discovery, and it is only implemented for completeness\&.
.RE
.PP
\-c <#>, \-\-reconnect\-delay=<#>
.RS 4
Overrides the default delay (in seconds) before reconnect is attempted after a connect loss\&.
.RE
.PP
\-l <#>, \-\-ctrl\-loss\-tmo=<#>
.RS 4
Overrides the default controller loss timeout period (in seconds)\&.
.RE
.PP
\-i <#>, \-\-nr\-io\-queues=<#>
.RS 4
Overrides the default number of I/O queues create by the driver\&. This option will be ignored for the discovery, and it is only implemented for completeness\&.
.RE
.PP
\-W <#>, \-\-nr\-write\-queues=<#>
.RS 4
Adds additional queues that will be used for write I/O\&.
.RE
.PP
\-P <#>, \-\-nr\-poll\-queues=<#>
.RS 4
Adds additional queues that will be used for polling latency sensitive I/O\&.
.RE
.PP
\-Q <#>, \-\-queue\-size=<#>
.RS 4
Overrides the default number of elements in the I/O queues created by the driver which can be found at drivers/nvme/host/fabrics\&.h\&. This option will be ignored for the discovery, and it is only implemented for completeness\&.
.RE
.PP
\-\-keyring=<#>
.RS 4
Keyring for TLS key lookup\&.
.RE
.PP
\-\-tls_key=<#>
.RS 4
TLS key for the connection (TCP)\&.
.RE
.PP
\-g, \-\-hdr\-digest
.RS 4
Generates/verifies header digest (TCP)\&.
.RE
.PP
\-G, \-\-data\-digest
.RS 4
Generates/verifies data digest (TCP)\&.
.RE
.PP
\-p, \-\-persistent
.RS 4
Don\(cqt remove the discovery controller after retrieving the discovery log page\&.
.RE
.PP
\-\-tls
.RS 4
Enable TLS encryption (TCP)\&.
.RE
.PP
\-S, \-\-quiet
.RS 4
Suppress already connected errors\&.
.RE
.PP
\-O, \-\-dump\-config
.RS 4
Print out resulting JSON configuration file to stdout\&.
.RE
.PP
\-o <format>, \-\-output\-format=<format>
.RS 4
Set the reporting format to
\fInormal\fR,
\fIjson\fR, or
\fIbinary\fR\&. Only one output format can be used at a time\&.
.RE
.PP
\-\-force
.RS 4
Disable the built\-in persistent discover connection rules\&. Combined with \-\-persistent flag, always create new persistent discovery connection\&.
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Query the Discover Controller with IP4 address 192\&.168\&.1\&.3 for all resources allocated for NVMe Host name host1\-rogue\-nqn on the RDMA network\&. Port 4420 is used by default:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme discover \-\-transport=rdma \-\-traddr=192\&.168\&.1\&.3 \e
\-\-hostnqn=host1\-rogue\-nqn
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Issue a
\fInvme discover\fR
command using a /usr/local/etc/nvme/discovery\&.conf file:
.sp
.if n \{\
.RS 4
.\}
.nf
# Machine default \*(Aqnvme discover\*(Aq commands\&.  Query the
# Discovery Controller\*(Aqs two ports (some resources may only
# be accessible on a single port)\&.  Note an official
# nqn (Host) name defined in the NVMe specification is being used
# in this example\&.
\-t rdma \-a 192\&.168\&.69\&.33 \-s 4420 \-q nqn\&.2014\-08\&.com\&.example:nvme:nvm\-subsystem\-sn\-d78432
\-t rdma \-a 192\&.168\&.1\&.4   \-s 4420 \-q nqn\&.2014\-08\&.com\&.example:nvme:nvm\-subsystem\-sn\-d78432

At the prompt type "nvme discover"\&.
.fi
.if n \{\
.RE
.\}
.RE
.SH "SEE ALSO"
.sp
nvme\-connect(1) nvme\-connect\-all(1)
.SH "AUTHORS"
.sp
This was written by \m[blue]\fBJay Freyensee\fR\m[]\&\s-2\u[1]\d\s+2
.SH "NVME"
.sp
Part of the nvme\-user suite
.SH "NOTES"
.IP " 1." 4
Jay Freyensee
.RS 4
\%mailto:james.p.freyensee@intel.com
.RE
  070701015D6CF1000081A4000003E80000006400000001642C0FB600007912000000000000004A00000000000000000000002A00000000nvme-cli/Documentation/nvme-discover.html <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-discover(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-discover(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-discover -
   Send Get Log Page request to Discovery Controller.
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme discover</em>
                [--transport=&lt;trtype&gt;     | -t &lt;trtype&gt;]
                [--nqn=&lt;subnqn&gt;           | -n &lt;subnqn&gt;]
                [--traddr=&lt;traddr&gt;        | -a &lt;traddr&gt;]
                [--trsvcid=&lt;trsvcid&gt;      | -s &lt;trsvcid&gt;]
                [--host-traddr=&lt;traddr&gt;   | -w &lt;traddr&gt;]
                [--host-iface=&lt;iface&gt;     | -f &lt;iface&gt;]
                [--hostnqn=&lt;hostnqn&gt;      | -q &lt;hostnqn&gt;]
                [--hostid=&lt;hostid&gt;        | -I &lt;hostid&gt;]
                [--raw=&lt;filename&gt;         | -r &lt;filename&gt;]
                [--device=&lt;device&gt;        | -d &lt;device&gt;]
                [--cfg-file=&lt;cfg&gt;         | -C &lt;cfg&gt; ]
                [--keep-alive-tmo=&lt;sec&gt;   | -k &lt;sec&gt;]
                [--reconnect-delay=&lt;#&gt;    | -c &lt;#&gt;]
                [--ctrl-loss-tmo=&lt;#&gt;      | -l &lt;#&gt;]
                [--nr-io-queues=&lt;#&gt;       | -i &lt;#&gt;]
                [--nr-write-queues=&lt;#&gt;    | -W &lt;#&gt;]
                [--nr-poll-queues=&lt;#&gt;     | -P &lt;#&gt;]
                [--queue-size=&lt;#&gt;         | -Q &lt;#&gt;]
                [--keyring=&lt;#&gt;                    ]
                [--tls_key=&lt;#&gt;                    ]
                [--hdr-digest             | -g]
                [--data-digest            | -G]
                [--persistent             | -p]
                [--quiet                  | -S]
                [--tls                        ]
                [--dump-config            | -O]
                [--output-format=&lt;fmt&gt;    | -o &lt;fmt&gt;]
                [--force]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>Send one or more Get Log Page requests to a NVMe-over-Fabrics Discovery
Controller.</p></div>
<div class="paragraph"><p>If no parameters are given, then <em>nvme discover</em> will attempt to
find a /usr/local/etc/nvme/discovery.conf file to use to supply a list of
Discovery commands to run.  If no /usr/local/etc/nvme/discovery.conf file
exists, the command will quit with an error.</p></div>
<div class="paragraph"><p>Otherwise, a specific Discovery Controller should be specified using the
--transport, --traddr, and if necessary the --trsvcid flags. A Discovery
request will then be sent to the specified Discovery Controller.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_background">BACKGROUND</h2>
<div class="sectionbody">
<div class="paragraph"><p>The NVMe-over-Fabrics specification defines the concept of a
Discovery Controller that an NVMe Host can query on a fabric
network to discover NVMe subsystems contained in NVMe Targets
which it can connect to on the network.  The Discovery Controller
will return Discovery Log Pages that provide the NVMe Host
with specific information (such as network address and unique
subsystem NQN) the NVMe Host can use to issue an
NVMe connect command to connect itself to a storage resource
contained in that NVMe subsystem on the NVMe Target.</p></div>
<div class="paragraph"><p>Note that the base NVMe specification defines the NQN (NVMe Qualified
Name) format which an NVMe endpoint (device, subsystem, etc) must
follow to guarantee a unique name under the NVMe standard.
In particular, the Host NQN uniquely identifies the NVMe Host, and
may be used by the the Discovery Controller to control what NVMe Target
resources are allocated to the NVMe Host for a connection.</p></div>
<div class="paragraph"><p>A Discovery Controller has it&#8217;s own NQN defined in the NVMe-over-Fabrics
specification, <strong>nqn.2014-08.org.nvmexpress.discovery</strong>.  All Discovery
Controllers must use this NQN name. This NQN is used by default by
nvme-cli for the <em>discover</em> command.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-t &lt;trtype&gt;
</dt>
<dt class="hdlist1">
--transport=&lt;trtype&gt;
</dt>
<dd>
<p>
        This field specifies the network fabric being used for
        a NVMe-over-Fabrics network.  Current string values include:
</p>
<div class="tableblock">
<table rules="all"
width="100%"
frame="border"
cellspacing="0" cellpadding="4">
<col width="50%" />
<col width="50%" />
<tbody>
<tr>
<td align="left" valign="top"><p class="table">Value</p></td>
<td align="left" valign="top"><p class="table">Definition</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">rdma</p></td>
<td align="left" valign="top"><p class="table">The network fabric is an rdma network (RoCE, iWARP, Infiniband, basic rdma, etc)</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">fc</p></td>
<td align="left" valign="top"><p class="table"><strong>WIP</strong> The network fabric is a Fibre Channel network.</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">tcp</p></td>
<td align="left" valign="top"><p class="table">The network fabric is a TCP/IP network.</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">loop</p></td>
<td align="left" valign="top"><p class="table">Connect to a NVMe over Fabrics target on the local host</p></td>
</tr>
</tbody>
</table>
</div>
</dd>
<dt class="hdlist1">
-n &lt;subnqn&gt;
</dt>
<dt class="hdlist1">
--nqn &lt;subnqn&gt;
</dt>
<dd>
<p>
        This field specifies the name for the NVMe subsystem to connect to.
</p>
</dd>
<dt class="hdlist1">
-a &lt;traddr&gt;
</dt>
<dt class="hdlist1">
--traddr=&lt;traddr&gt;
</dt>
<dd>
<p>
        This field specifies the network address of the Discovery Controller.
        For transports using IP addressing (e.g. rdma) this should be an
        IP-based address (ex. IPv4).
</p>
</dd>
<dt class="hdlist1">
-s &lt;trsvcid&gt;
</dt>
<dt class="hdlist1">
--trsvcid=&lt;trsvcid&gt;
</dt>
<dd>
<p>
        This field specifies the transport service id.  For transports using IP
        addressing (e.g. rdma) this field is the port number. By default, the IP
        port number for the RDMA transport is 4420.
</p>
</dd>
<dt class="hdlist1">
-w &lt;traddr&gt;
</dt>
<dt class="hdlist1">
--host-traddr=&lt;traddr&gt;
</dt>
<dd>
<p>
        This field specifies the network address used on the host to connect
        to the Controller. For TCP, this sets the source address on the socket.
</p>
</dd>
<dt class="hdlist1">
-f &lt;iface&gt;
</dt>
<dt class="hdlist1">
--host-iface=&lt;iface&gt;
</dt>
<dd>
<p>
        This field specifies the network interface used on the host to connect
        to the Controller (e.g. IP eth1, enp2s0, enx78e7d1ea46da). This forces
        the connection to be made on a specific interface instead of letting
        the system decide.
</p>
</dd>
<dt class="hdlist1">
-q &lt;hostnqn&gt;
</dt>
<dt class="hdlist1">
--hostnqn=&lt;hostnqn&gt;
</dt>
<dd>
<p>
        Overrides the default host NQN that identifies the NVMe Host.
        If this option is not specified, the default is read from
        /usr/local/etc/nvme/hostnqn first. If that does not exist, the
        autogenerated NQN value from the NVMe Host kernel module is used next.
</p>
</dd>
<dt class="hdlist1">
-I &lt;hostid&gt;
</dt>
<dt class="hdlist1">
--hostid=&lt;hostid&gt;
</dt>
<dd>
<p>
        UUID(Universally Unique Identifier) to be discovered which should be
        formatted.
</p>
</dd>
<dt class="hdlist1">
-r &lt;filename&gt;
</dt>
<dt class="hdlist1">
--raw=&lt;filename&gt;
</dt>
<dd>
<p>
        This field will take the output of the <em>nvme discover</em> command
        and dump it to a raw binary file. By default <em>nvme discover</em> will
        dump the output to stdout.
</p>
</dd>
<dt class="hdlist1">
-d &lt;device&gt;
</dt>
<dt class="hdlist1">
--device=&lt;device&gt;
</dt>
<dd>
<p>
        This field takes a device as input. It must be a persistent device
        associated with a Discovery Controller previously created by the
        command "connect-all" or "discover". &lt;device&gt; follows the format
        nvme*, eg. nvme0, nvme1.
</p>
</dd>
<dt class="hdlist1">
-C &lt;cfg&gt;
</dt>
<dt class="hdlist1">
--config-file=&lt;cfg&gt;
</dt>
<dd>
<p>
        Use the specified JSON configuration file instead of the
        default /usr/local/etc/nvme/config.json file or <em>none</em> to not read in
        an existing configuration file. The JSON configuration file
        format is documented in
        <a href="https://github.com/linux-nvme/libnvme/doc/config-schema.json">https://github.com/linux-nvme/libnvme/doc/config-schema.json</a>
</p>
</dd>
<dt class="hdlist1">
-k &lt;#&gt;
</dt>
<dt class="hdlist1">
--keep-alive-tmo=&lt;#&gt;
</dt>
<dd>
<p>
        Overrides the default keep alive timeout (in seconds). This
        option will be ignored for discovery, and it is only
        implemented for completeness.
</p>
</dd>
<dt class="hdlist1">
-c &lt;#&gt;
</dt>
<dt class="hdlist1">
--reconnect-delay=&lt;#&gt;
</dt>
<dd>
<p>
        Overrides the default delay (in seconds) before reconnect is attempted
        after a connect loss.
</p>
</dd>
<dt class="hdlist1">
-l &lt;#&gt;
</dt>
<dt class="hdlist1">
--ctrl-loss-tmo=&lt;#&gt;
</dt>
<dd>
<p>
        Overrides the default controller loss timeout period (in seconds).
</p>
</dd>
<dt class="hdlist1">
-i &lt;#&gt;
</dt>
<dt class="hdlist1">
--nr-io-queues=&lt;#&gt;
</dt>
<dd>
<p>
        Overrides the default number of I/O queues create by the driver.
        This option will be ignored for the discovery, and it is only
        implemented for completeness.
</p>
</dd>
<dt class="hdlist1">
-W &lt;#&gt;
</dt>
<dt class="hdlist1">
--nr-write-queues=&lt;#&gt;
</dt>
<dd>
<p>
        Adds additional queues that will be used for write I/O.
</p>
</dd>
<dt class="hdlist1">
-P &lt;#&gt;
</dt>
<dt class="hdlist1">
--nr-poll-queues=&lt;#&gt;
</dt>
<dd>
<p>
        Adds additional queues that will be used for polling latency sensitive I/O.
</p>
</dd>
<dt class="hdlist1">
-Q &lt;#&gt;
</dt>
<dt class="hdlist1">
--queue-size=&lt;#&gt;
</dt>
<dd>
<p>
        Overrides the default number of elements in the I/O queues created
        by the driver which can be found at drivers/nvme/host/fabrics.h.
        This option will be ignored for the discovery, and it is only
        implemented for completeness.
</p>
</dd>
<dt class="hdlist1">
--keyring=&lt;#&gt;
</dt>
<dd>
<p>
        Keyring for TLS key lookup.
</p>
</dd>
<dt class="hdlist1">
--tls_key=&lt;#&gt;
</dt>
<dd>
<p>
        TLS key for the connection (TCP).
</p>
</dd>
<dt class="hdlist1">
-g
</dt>
<dt class="hdlist1">
--hdr-digest
</dt>
<dd>
<p>
        Generates/verifies header digest (TCP).
</p>
</dd>
<dt class="hdlist1">
-G
</dt>
<dt class="hdlist1">
--data-digest
</dt>
<dd>
<p>
        Generates/verifies data digest (TCP).
</p>
</dd>
<dt class="hdlist1">
-p
</dt>
<dt class="hdlist1">
--persistent
</dt>
<dd>
<p>
        Don&#8217;t remove the discovery controller after retrieving the discovery
        log page.
</p>
</dd>
<dt class="hdlist1">
--tls
</dt>
<dd>
<p>
        Enable TLS encryption (TCP).
</p>
</dd>
<dt class="hdlist1">
-S
</dt>
<dt class="hdlist1">
--quiet
</dt>
<dd>
<p>
        Suppress already connected errors.
</p>
</dd>
<dt class="hdlist1">
-O
</dt>
<dt class="hdlist1">
--dump-config
</dt>
<dd>
<p>
        Print out resulting JSON configuration file to stdout.
</p>
</dd>
<dt class="hdlist1">
-o &lt;format&gt;
</dt>
<dt class="hdlist1">
--output-format=&lt;format&gt;
</dt>
<dd>
<p>
              Set the reporting format to <em>normal</em>, <em>json</em>, or
              <em>binary</em>. Only one output format can be used at a time.
</p>
</dd>
<dt class="hdlist1">
--force
</dt>
<dd>
<p>
        Disable the built-in persistent discover connection rules.
        Combined with --persistent flag, always create new
        persistent discovery connection.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Query the Discover Controller with IP4 address 192.168.1.3 for all
resources allocated for NVMe Host name host1-rogue-nqn on the RDMA network.
Port 4420 is used by default:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme discover --transport=rdma --traddr=192.168.1.3 \
--hostnqn=host1-rogue-nqn</code></pre>
</div></div>
</li>
<li>
<p>
Issue a <em>nvme discover</em> command using a /usr/local/etc/nvme/discovery.conf file:
</p>
<div class="listingblock">
<div class="content">
<pre><code># Machine default 'nvme discover' commands.  Query the
# Discovery Controller's two ports (some resources may only
# be accessible on a single port).  Note an official
# nqn (Host) name defined in the NVMe specification is being used
# in this example.
-t rdma -a 192.168.69.33 -s 4420 -q nqn.2014-08.com.example:nvme:nvm-subsystem-sn-d78432
-t rdma -a 192.168.1.4   -s 4420 -q nqn.2014-08.com.example:nvme:nvm-subsystem-sn-d78432

At the prompt type "nvme discover".</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_see_also">SEE ALSO</h2>
<div class="sectionbody">
<div class="paragraph"><p>nvme-connect(1)
nvme-connect-all(1)</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_authors">AUTHORS</h2>
<div class="sectionbody">
<div class="paragraph"><p>This was written by <a href="mailto:james.p.freyensee@intel.com">Jay Freyensee</a></p></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
  070701015D6CF3000081A4000003E80000006400000001642C0FB600000ED1000000000000004A00000000000000000000002200000000nvme-cli/Documentation/nvme-dsm.1 '\" t
.\"     Title: nvme-dsm
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-DSM" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-dsm \- Send NVMe Data Set Management, return results
.SH "SYNOPSIS"
.sp
.nf
\fInvme dsm\fR <device>  [ \-\-namespace\-id=<nsid> | \-n <nsid> ]
                        [ \-\-ctx\-attrs=<attribute\-list,> | \-a <attribute\-list,> ]
                        [ \-\-blocks=<nlb\-list,> | \-b <nlb\-list,> ]
                        [ \-\-slbs=<slba\-list,> | \-s <slba\-list,> ]
                        [ \-\-ad | \-d ] [ \-\-idw | \-w ] [ \-\-idr | \-r ]
                        [ \-\-cdw11=<cdw11> | \-c <cdw11> ]
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, sends an Data Set Management command and provides the result and returned structure\&.
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1)\&. If the character device is given, the \*(Aq\-\-namespace\-id\*(Aq option is mandatory, otherwise it will use the ns\-id of the namespace for the block device you opened\&. For block devices, the ns\-id used can be overridden with the same option\&.
.sp
You must specify at least one of the values for range list\&. If the range lists provided do not list the same number of elements, the default values for the remaining in the range will be set to 0\&.
.sp
The command dword 11 may be provided at the command line\&. For convenience, the current defined attributes (discard, integral read/write) for a data\-set management have flags\&. If cdw11 is specified, this will override any settings from the flags may have provided\&.
.SH "OPTIONS"
.PP
\-n <nsid>, \-\-namespace\-id=<nsid>
.RS 4
Sends the command with the requested nsid\&. This is required for the character devices, or overrides the block nsid if given\&.
.RE
.PP
\-a <attribute\-list,>, \-\-ctx\-attrs=<attribute\-list>
.RS 4
Comma separated list of the context attributes in each range
.RE
.PP
\-b <nlb\-list,>, \-\-blocks=<nlb\-list,>
.RS 4
Comma separated list of the number of blocks in each range
.RE
.PP
\-s <slba\-list,>, \-\-slbs=<slba\-list,>
.RS 4
Comma separated list of the starting block in each range
.RE
.PP
\-d <deallocate>, \-\-ad=<deallocate>
.RS 4
Attribute Deallocate\&.
.RE
.PP
\-w <write>, \-\-idw=<write>
.RS 4
Attribute Integral Dataset for Write\&.
.RE
.PP
\-r <read>, \-\-idr=<read>
.RS 4
Attribute Integral Dataset for Read\&.
.RE
.PP
\-c <cdw11>, \-\-cdw11=<cdw11>
.RS 4
All the command command dword 11 attributes\&. Use exclusive from specifying individual attributes
.RE
.SH "EXAMPLES"
.sp
No examples yet
.SH "NVME"
.sp
Part of the nvme\-user suite
   070701015D6CF4000081A4000003E80000006400000001642C0FB6000050A7000000000000004A00000000000000000000002500000000nvme-cli/Documentation/nvme-dsm.html  <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-dsm(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-dsm(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-dsm -
   Send NVMe Data Set Management, return results
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme dsm</em> &lt;device&gt;  [ --namespace-id=&lt;nsid&gt; | -n &lt;nsid&gt; ]
                        [ --ctx-attrs=&lt;attribute-list,&gt; | -a &lt;attribute-list,&gt; ]
                        [ --blocks=&lt;nlb-list,&gt; | -b &lt;nlb-list,&gt; ]
                        [ --slbs=&lt;slba-list,&gt; | -s &lt;slba-list,&gt; ]
                        [ --ad | -d ] [ --idw | -w ] [ --idr | -r ]
                        [ --cdw11=&lt;cdw11&gt; | -c &lt;cdw11&gt; ]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, sends an Data Set Management command and
provides the result and returned structure.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).
If the character device is given, the <code>'--namespace-id'</code> option is
mandatory, otherwise it will use the ns-id of the namespace for the block
device you opened. For block devices, the ns-id used can be overridden
with the same option.</p></div>
<div class="paragraph"><p>You must specify at least one of the values for range list. If the range
lists provided do not list the same number of elements, the default
values for the remaining in the range will be set to 0.</p></div>
<div class="paragraph"><p>The command dword 11 may be provided at the command line. For convenience,
the current defined attributes (discard, integral read/write) for a
data-set management have flags. If cdw11 is specified, this will override
any settings from the flags may have provided.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-n &lt;nsid&gt;
</dt>
<dt class="hdlist1">
--namespace-id=&lt;nsid&gt;
</dt>
<dd>
<p>
        Sends the command with the requested nsid. This is required for the
        character devices, or overrides the block nsid if given.
</p>
</dd>
<dt class="hdlist1">
-a &lt;attribute-list,&gt;
</dt>
<dt class="hdlist1">
--ctx-attrs=&lt;attribute-list&gt;
</dt>
<dd>
<p>
        Comma separated list of the context attributes in each range
</p>
</dd>
<dt class="hdlist1">
-b &lt;nlb-list,&gt;
</dt>
<dt class="hdlist1">
--blocks=&lt;nlb-list,&gt;
</dt>
<dd>
<p>
        Comma separated list of the number of blocks in each range
</p>
</dd>
<dt class="hdlist1">
-s &lt;slba-list,&gt;
</dt>
<dt class="hdlist1">
--slbs=&lt;slba-list,&gt;
</dt>
<dd>
<p>
        Comma separated list of the starting block in each range
</p>
</dd>
<dt class="hdlist1">
-d &lt;deallocate&gt;
</dt>
<dt class="hdlist1">
--ad=&lt;deallocate&gt;
</dt>
<dd>
<p>
        Attribute Deallocate.
</p>
</dd>
<dt class="hdlist1">
-w &lt;write&gt;
</dt>
<dt class="hdlist1">
--idw=&lt;write&gt;
</dt>
<dd>
<p>
        Attribute Integral Dataset for Write.
</p>
</dd>
<dt class="hdlist1">
-r &lt;read&gt;
</dt>
<dt class="hdlist1">
--idr=&lt;read&gt;
</dt>
<dd>
<p>
        Attribute Integral Dataset for Read.
</p>
</dd>
<dt class="hdlist1">
-c &lt;cdw11&gt;
</dt>
<dt class="hdlist1">
--cdw11=&lt;cdw11&gt;
</dt>
<dd>
<p>
        All the command command dword 11 attributes. Use exclusive from
        specifying individual attributes
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="paragraph"><p>No examples yet</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
 070701015D6CF5000081A4000003E80000006400000001642C0FB600000B91000000000000004A00000000000000000000002A00000000nvme-cli/Documentation/nvme-effects-log.1 '\" t
.\"     Title: nvme-effects-log
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-EFFECTS\-LOG" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-effects-log \- Send NVMe Command Effects log page request, returns result and log
.SH "SYNOPSIS"
.sp
.nf
\fInvme effects\-log\fR <device> [\-\-output\-format=<fmt> | \-o <fmt>]
                            [\-\-human\-readable | \-H]
                            [\-\-raw\-binary | \-b]
.fi
.SH "DESCRIPTION"
.sp
Retrieves the NVMe Command Effects log page from an NVMe device and provides the returned structure\&.
.sp
The <device> parameter is mandatory and should be the NVMe character device (ex: /dev/nvme0)\&.
.sp
On success, the returned command effects log structure will be printed for each command that is supported\&.
.SH "OPTIONS"
.PP
\-o <format>, \-\-output\-format=<format>
.RS 4
This option will set the reporting format to normal, json, or binary\&. Only one output format can be used at a time\&.
.RE
.PP
\-H, \-\-human\-readable
.RS 4
This option will parse and format many of the bit fields into a human\-readable format\&.
.RE
.PP
\-b, \-\-raw\-binary
.RS 4
This option will print the raw buffer to stdout\&. Structure is not parsed by program\&. This overrides the human\-readable option\&.
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Print the effects log page in a human readable format:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme effects\-log /dev/nvme0
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Have the program return the raw structure in binary:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme effects\-log /dev/nvme0 \-\-raw\-binary > effects_log\&.raw
# nvme effects\-log /dev/nvme0 \-b > effects_log\&.raw
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite
   070701015D6CF6000081A4000003E80000006400000001642C0FB600004B4D000000000000004A00000000000000000000002D00000000nvme-cli/Documentation/nvme-effects-log.html  <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-effects-log(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-effects-log(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-effects-log -
   Send NVMe Command Effects log page request, returns result and log
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme effects-log</em> &lt;device&gt; [--output-format=&lt;fmt&gt; | -o &lt;fmt&gt;]
                            [--human-readable | -H]
                            [--raw-binary | -b]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>Retrieves the NVMe Command Effects log page from an NVMe device and provides
the returned structure.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and should be the NVMe character
device (ex: /dev/nvme0).</p></div>
<div class="paragraph"><p>On success, the returned command effects log structure will be printed
for each command that is supported.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-o &lt;format&gt;
</dt>
<dt class="hdlist1">
--output-format=&lt;format&gt;
</dt>
<dd>
<p>
        This option will set the reporting format to normal, json, or binary.
        Only one output format can be used at a time.
</p>
</dd>
<dt class="hdlist1">
-H
</dt>
<dt class="hdlist1">
--human-readable
</dt>
<dd>
<p>
        This option will parse and format many of the bit fields into a
        human-readable format.
</p>
</dd>
<dt class="hdlist1">
-b
</dt>
<dt class="hdlist1">
--raw-binary
</dt>
<dd>
<p>
        This option will print the raw buffer to stdout. Structure is not
        parsed by program.  This overrides the human-readable option.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Print the effects log page in a human readable format:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme effects-log /dev/nvme0</code></pre>
</div></div>
</li>
<li>
<p>
Have the program return the raw structure in binary:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme effects-log /dev/nvme0 --raw-binary &gt; effects_log.raw
# nvme effects-log /dev/nvme0 -b &gt; effects_log.raw</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
   070701015D6CF7000081A4000003E80000006400000001642C0FB600000D96000000000000004A00000000000000000000003600000000nvme-cli/Documentation/nvme-endurance-event-agg-log.1 '\" t
.\"     Title: nvme-endurance-event-agg-log
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-ENDURANCE\-EVE" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-endurance-event-agg-log \- Send NVMe Endurance log page request, returns result and log
.SH "SYNOPSIS"
.sp
.nf
\fInvme endurance\-event\-agg\-log\fR <device> [\-\-log\-entries=<log_entries> | \-e <log_entries>]
                        [\-\-rae | \-r] [\-\-raw\-binary | \-b]
                        [\-\-output\-format=<fmt> | \-o <fmt>]
.fi
.SH "DESCRIPTION"
.sp
Retrieves the NVMe Endurance Event Aggregate log page from an NVMe device and provides the returned structure\&.
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1)\&.
.sp
On success, the returned endurance event agg log structure may be returned in one of several ways depending on the option flags; the structure may parsed by the program and printed in a readable format, the raw buffer may be printed to stdout for another program to parse, or reported in json format\&.
.SH "OPTIONS"
.PP
\-e <log_entries>, \-\-log\-entries=<log_entries>
.RS 4
Retrieve the Endurance Group Event Aggregate Log pending entries\&. This argument is mandatory and its success may depend on the device\(cqs statistics to provide this log For More details see NVM Express 1\&.4 Spec\&. Section 5\&.14\&.1\&.15\&. The maximum number of log entries supported is 2044 for the device\&.
.RE
.PP
\-r, \-\-rae
.RS 4
Retain an Asynchronous Event\&.
.RE
.PP
\-o <format>, \-\-output\-format=<format>
.RS 4
Set the reporting format to
\fInormal\fR,
\fIjson\fR, or
\fIbinary\fR\&. Only one output format can be used at a time\&.
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Print the Endurance log page in a human readable format:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme endurance\-event\-agg\-log /dev/nvme0
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Print the raw Endurance log to a file:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme endurance\-event\-agg\-log /dev/nvme0 \-\-output=binary > endurance_event_agg_log\&.raw
.fi
.if n \{\
.RE
.\}
.sp
It is probably a bad idea to not redirect stdout when using this mode\&.
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite
  070701015D6CF8000081A4000003E80000006400000001642C0FB600004D9B000000000000004A00000000000000000000003900000000nvme-cli/Documentation/nvme-endurance-event-agg-log.html  <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-endurance-event-agg-log(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-endurance-event-agg-log(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-endurance-event-agg-log -
   Send NVMe Endurance log page request, returns result and log
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme endurance-event-agg-log</em> &lt;device&gt; [--log-entries=&lt;log_entries&gt; | -e &lt;log_entries&gt;]
                        [--rae | -r] [--raw-binary | -b]
                        [--output-format=&lt;fmt&gt; | -o &lt;fmt&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>Retrieves the NVMe Endurance Event Aggregate log page from an NVMe device and
provides the returned structure.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).</p></div>
<div class="paragraph"><p>On success, the returned endurance event agg log structure may be returned
in one of several ways depending on the option flags; the structure may parsed
by the program and printed in a readable format, the raw buffer may be
printed to stdout for another program to parse, or reported in json format.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-e &lt;log_entries&gt;
</dt>
<dt class="hdlist1">
--log-entries=&lt;log_entries&gt;
</dt>
<dd>
<p>
    Retrieve the Endurance Group Event Aggregate Log pending entries.
    This argument is mandatory and its success may depend on the device&#8217;s
    statistics to provide this log For More details see NVM Express 1.4 Spec.
    Section 5.14.1.15. The maximum number of log entries supported is 2044
    for the device.
</p>
</dd>
<dt class="hdlist1">
-r
</dt>
<dt class="hdlist1">
--rae
</dt>
<dd>
<p>
        Retain an Asynchronous Event.
</p>
</dd>
<dt class="hdlist1">
-o &lt;format&gt;
</dt>
<dt class="hdlist1">
--output-format=&lt;format&gt;
</dt>
<dd>
<p>
              Set the reporting format to <em>normal</em>, <em>json</em>, or
              <em>binary</em>. Only one output format can be used at a time.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Print the Endurance log page in a human readable format:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme endurance-event-agg-log /dev/nvme0</code></pre>
</div></div>
</li>
<li>
<p>
Print the raw Endurance log to a file:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme endurance-event-agg-log /dev/nvme0 --output=binary &gt; endurance_event_agg_log.raw</code></pre>
</div></div>
<div class="paragraph"><p>It is probably a bad idea to not redirect stdout when using this mode.</p></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
 070701015D6CF9000081A4000003E80000006400000001642C0FB600000B87000000000000004A00000000000000000000002C00000000nvme-cli/Documentation/nvme-endurance-log.1   '\" t
.\"     Title: nvme-endurance-log
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-ENDURANCE\-LOG" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-endurance-log \- Send NVMe Endurance log page request, returns result and log
.SH "SYNOPSIS"
.sp
.nf
\fInvme endurance\-log\fR <device> [\-\-group\-id=<group> | \-g <group>]
                        [\-\-output\-format=<fmt> | \-o <fmt>]
.fi
.SH "DESCRIPTION"
.sp
Retrieves the NVMe Endurance log page from an NVMe device and provides the returned structure\&.
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1)\&.
.sp
On success, the returned endurance log structure may be returned in one of several ways depending on the option flags; the structure may parsed by the program and printed in a readable format, the raw buffer may be printed to stdout for another program to parse, or reported in json format\&.
.SH "OPTIONS"
.PP
\-g <group>, \-\-group\-id=<group>
.RS 4
The endurance group identifier\&.
.RE
.PP
\-o <format>, \-\-output\-format=<format>
.RS 4
Set the reporting format to
\fInormal\fR,
\fIjson\fR, or
\fIbinary\fR\&. Only one output format can be used at a time\&.
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Print the Endurance log page in a human readable format:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme endurance\-log /dev/nvme0
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Print the raw Endurance log to a file:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme endurance\-log /dev/nvme0 \-\-output=binary > endurance_log\&.raw
.fi
.if n \{\
.RE
.\}
.sp
It is probably a bad idea to not redirect stdout when using this mode\&.
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite
 070701015D6CFA000081A4000003E80000006400000001642C0FB600004B3F000000000000004A00000000000000000000002F00000000nvme-cli/Documentation/nvme-endurance-log.html    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-endurance-log(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-endurance-log(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-endurance-log -
   Send NVMe Endurance log page request, returns result and log
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme endurance-log</em> &lt;device&gt; [--group-id=&lt;group&gt; | -g &lt;group&gt;]
                        [--output-format=&lt;fmt&gt; | -o &lt;fmt&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>Retrieves the NVMe Endurance log page from an NVMe device and provides the returned structure.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).</p></div>
<div class="paragraph"><p>On success, the returned endurance log structure may be returned in one of
several ways depending on the option flags; the structure may parsed by
the program and printed in a readable format, the raw buffer may be
printed to stdout for another program to parse, or reported in json format.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-g &lt;group&gt;
</dt>
<dt class="hdlist1">
--group-id=&lt;group&gt;
</dt>
<dd>
<p>
        The endurance group identifier.
</p>
</dd>
<dt class="hdlist1">
-o &lt;format&gt;
</dt>
<dt class="hdlist1">
--output-format=&lt;format&gt;
</dt>
<dd>
<p>
              Set the reporting format to <em>normal</em>, <em>json</em>, or
              <em>binary</em>. Only one output format can be used at a time.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Print the Endurance log page in a human readable format:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme endurance-log /dev/nvme0</code></pre>
</div></div>
</li>
<li>
<p>
Print the raw Endurance log to a file:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme endurance-log /dev/nvme0 --output=binary &gt; endurance_log.raw</code></pre>
</div></div>
<div class="paragraph"><p>It is probably a bad idea to not redirect stdout when using this mode.</p></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
 070701015D6CFB000081A4000003E80000006400000001642C0FB600000C65000000000000004A00000000000000000000002800000000nvme-cli/Documentation/nvme-error-log.1   '\" t
.\"     Title: nvme-error-log
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-ERROR\-LOG" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-error-log \- Send NVME Error log page request, return result and log
.SH "SYNOPSIS"
.sp
.nf
\fInvme error\-log\fR <device>  [\-\-log\-entries=<entries> | \-e <entries>]
                         [\-\-raw\-binary | \-b]
                         [\-\-output\-format=<fmt> | \-o <fmt>]
.fi
.SH "DESCRIPTION"
.sp
Retrieves NVMe Error log page from an NVMe device and provides the returned structure\&.
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1)\&.
.sp
On success, the returned error log structure may be returned in one of several ways depending on the option flags; the structure may parsed by the program and printed in a readable format or the raw buffer may be printed to stdout for another program to parse\&.
.SH "OPTIONS"
.PP
\-e <entries>, \-\-log\-entries=<entries>
.RS 4
Specifies how many log entries the program should request from the device\&. This must be at least one, and shouldn\(cqt exceed the device\(cqs capabilities\&. Defaults to 64 log entries\&.
.RE
.PP
\-b, \-\-raw\-binary
.RS 4
Print the raw error log buffer to stdout\&.
.RE
.PP
\-o <format>, \-\-output\-format=<format>
.RS 4
Set the reporting format to
\fInormal\fR,
\fIjson\fR, or
\fIbinary\fR\&. Only one output format can be used at a time\&.
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Get the error log and print it in a human readable format:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme error\-log /dev/nvme0
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Print the raw output to a file:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme error\-log /dev/nvme0 \-\-raw\-binary > error_log\&.raw
.fi
.if n \{\
.RE
.\}
.sp
It is probably a bad idea to not redirect stdout when using this mode\&.
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite
   070701015D6CFC000081A4000003E80000006400000001642C0FB600004C76000000000000004A00000000000000000000002B00000000nvme-cli/Documentation/nvme-error-log.html    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-error-log(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-error-log(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-error-log -
   Send NVME Error log page request, return result and log
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme error-log</em> &lt;device&gt;  [--log-entries=&lt;entries&gt; | -e &lt;entries&gt;]
                         [--raw-binary | -b]
                         [--output-format=&lt;fmt&gt; | -o &lt;fmt&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>Retrieves NVMe Error log page from an NVMe device and provides the
returned structure.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).</p></div>
<div class="paragraph"><p>On success, the returned error log structure may be returned in one of
several ways depending on the option flags; the structure may parsed by
the program and printed in a readable format or the raw buffer may be
printed to stdout for another program to parse.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-e &lt;entries&gt;
</dt>
<dt class="hdlist1">
--log-entries=&lt;entries&gt;
</dt>
<dd>
<p>
        Specifies how many log entries the program should request from
        the device. This must be at least one, and shouldn&#8217;t exceed the
        device&#8217;s capabilities. Defaults to 64 log entries.
</p>
</dd>
<dt class="hdlist1">
-b
</dt>
<dt class="hdlist1">
--raw-binary
</dt>
<dd>
<p>
        Print the raw error log buffer to stdout.
</p>
</dd>
<dt class="hdlist1">
-o &lt;format&gt;
</dt>
<dt class="hdlist1">
--output-format=&lt;format&gt;
</dt>
<dd>
<p>
              Set the reporting format to <em>normal</em>, <em>json</em>, or
              <em>binary</em>. Only one output format can be used at a time.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Get the error log and print it in a human readable format:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme error-log /dev/nvme0</code></pre>
</div></div>
</li>
<li>
<p>
Print the raw output to a file:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme error-log /dev/nvme0 --raw-binary &gt; error_log.raw</code></pre>
</div></div>
<div class="paragraph"><p>It is probably a bad idea to not redirect stdout when using this mode.</p></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
  070701015D6CFD000081A4000003E80000006400000001642C0FB6000008E5000000000000004A00000000000000000000002A00000000nvme-cli/Documentation/nvme-fdp-configs.1 '\" t
.\"     Title: nvme-fdp-configs
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-FDP\-CONFIGS" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-fdp-configs \- Get Flexible Data Placement Configurations
.SH "SYNOPSIS"
.sp
.nf
\fInvme fdp configs\fR <device> [\-\-endgrp\-id=<NUM> | \-e <NUM>]
                            [\-\-human\-readable | \-H]
                            [\-\-raw\-binary | \-b]
                            [\-\-output\-format=<FMT> | \-o <FMT>]
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, and the endurance group identifier specified, list the possible configurations for Flexible Data Placement\&.
.SH "OPTIONS"
.PP
\-e <NUM>, \-\-endgrp\-id=<NUM>
.RS 4
The endurance group identifier to use when requesting the log page\&.
.RE
.PP
\-H, \-\-human\-readable
.RS 4
Parse, print and describe individual parts of bitfields\&.
.RE
.PP
\-b, \-\-raw\-binary
.RS 4
Print the raw buffer to the standard output stream\&.
.RE
.PP
\-o <format>, \-\-output\-format=<format>
.RS 4
Set the reporting format to
\fInormal\fR,
\fIjson\fR, or
\fIbinary\fR\&. Only one output format can be used at a time\&.
.RE
.SH "NVME"
.sp
Part of nvme\-cli
   070701015D6CFE000081A4000003E80000006400000001642C0FB600004860000000000000004A00000000000000000000002D00000000nvme-cli/Documentation/nvme-fdp-configs.html  <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-fdp-configs(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-fdp-configs(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-fdp-configs -
   Get Flexible Data Placement Configurations
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme fdp configs</em> &lt;device&gt; [--endgrp-id=&lt;NUM&gt; | -e &lt;NUM&gt;]
                            [--human-readable | -H]
                            [--raw-binary | -b]
                            [--output-format=&lt;FMT&gt; | -o &lt;FMT&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, and the endurance group identifier specified, list
the possible configurations for Flexible Data Placement.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-e &lt;NUM&gt;
</dt>
<dt class="hdlist1">
--endgrp-id=&lt;NUM&gt;
</dt>
<dd>
<p>
        The endurance group identifier to use when requesting the log page.
</p>
</dd>
<dt class="hdlist1">
-H
</dt>
<dt class="hdlist1">
--human-readable
</dt>
<dd>
<p>
        Parse, print and describe individual parts of bitfields.
</p>
</dd>
<dt class="hdlist1">
-b
</dt>
<dt class="hdlist1">
--raw-binary
</dt>
<dd>
<p>
        Print the raw buffer to the standard output stream.
</p>
</dd>
<dt class="hdlist1">
-o &lt;format&gt;
</dt>
<dt class="hdlist1">
--output-format=&lt;format&gt;
</dt>
<dd>
<p>
        Set the reporting format to <em>normal</em>, <em>json</em>, or <em>binary</em>. Only one
        output format can be used at a time.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of nvme-cli</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
070701015D6CFF000081A4000003E80000006400000001642C0FB6000008B9000000000000004A00000000000000000000002900000000nvme-cli/Documentation/nvme-fdp-events.1  '\" t
.\"     Title: nvme-fdp-events
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-FDP\-EVENTS" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-fdp-events \- Get Flexible Data Placement Events
.SH "SYNOPSIS"
.sp
.nf
\fInvme fdp events\fR <device> [\-\-endgrp\-id=<NUM> | \-e <NUM>]
                           [\-\-host\-events | \-E]
                           [\-\-raw\-binary | \-b]
                           [\-\-output\-format=<FMT> | \-o <FMT>]
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, provide information about events affecting Reclaim Units and media usage in an Endurance Group\&.
.SH "OPTIONS"
.PP
\-e <NUM>, \-\-endgrp\-id=<NUM>
.RS 4
The endurance group identifier to use when requesting the log page\&.
.RE
.PP
\-E, \-\-host\-events
.RS 4
Request the controller to report host events\&.
.RE
.PP
\-b, \-\-raw\-binary
.RS 4
Print the raw buffer to the standard output stream\&.
.RE
.PP
\-o <format>, \-\-output\-format=<format>
.RS 4
Set the reporting format to
\fInormal\fR,
\fIjson\fR, or
\fIbinary\fR\&. Only one output format can be used at a time\&.
.RE
.SH "NVME"
.sp
Part of nvme\-cli
   070701015D6D00000081A4000003E80000006400000001642C0FB600004834000000000000004A00000000000000000000002C00000000nvme-cli/Documentation/nvme-fdp-events.html   <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-fdp-events(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-fdp-events(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-fdp-events -
   Get Flexible Data Placement Events
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme fdp events</em> &lt;device&gt; [--endgrp-id=&lt;NUM&gt; | -e &lt;NUM&gt;]
                           [--host-events | -E]
                           [--raw-binary | -b]
                           [--output-format=&lt;FMT&gt; | -o &lt;FMT&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, provide information about events affecting Reclaim
Units and media usage in an Endurance Group.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-e &lt;NUM&gt;
</dt>
<dt class="hdlist1">
--endgrp-id=&lt;NUM&gt;
</dt>
<dd>
<p>
        The endurance group identifier to use when requesting the log page.
</p>
</dd>
<dt class="hdlist1">
-E
</dt>
<dt class="hdlist1">
--host-events
</dt>
<dd>
<p>
        Request the controller to report host events.
</p>
</dd>
<dt class="hdlist1">
-b
</dt>
<dt class="hdlist1">
--raw-binary
</dt>
<dd>
<p>
        Print the raw buffer to the standard output stream.
</p>
</dd>
<dt class="hdlist1">
-o &lt;format&gt;
</dt>
<dt class="hdlist1">
--output-format=&lt;format&gt;
</dt>
<dd>
<p>
        Set the reporting format to <em>normal</em>, <em>json</em>, or <em>binary</em>. Only one
        output format can be used at a time.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of nvme-cli</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
070701015D6D01000081A4000003E80000006400000001642C0FB600000885000000000000004A00000000000000000000002D00000000nvme-cli/Documentation/nvme-fdp-set-events.1  '\" t
.\"     Title: nvme-fdp-set-events
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-FDP\-SET\-EVEN" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-fdp-set-events \- Enable or disable FDP events
.SH "SYNOPSIS"
.sp
.nf
\fInvme fdp set\-events\fR <device> [\-\-namespace\-id=<NUM> | \-n <NUM>]
                               [\-\-placement\-handle=<NUM> | \-p <NUM>]
                               [\-\-enable | \-e]
                               [\-\-event\-types=<NUM,> | \-t <NUM,>]
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, enable or disable a list of event types from being generated for the Reclaim Unit Handle reference by the specified Placement Handle\&.
.SH "OPTIONS"
.PP
\-n <NUM>, \-\-namespace\-id=<NUM>
.RS 4
Namespace identifier\&.
.RE
.PP
\-b, \-\-raw\-binary
.RS 4
Print the raw buffer to the standard output stream\&.
.RE
.PP
\-o <format>, \-\-output\-format=<format>
.RS 4
Set the reporting format to
\fInormal\fR,
\fIjson\fR, or
\fIbinary\fR\&. Only one output format can be used at a time\&.
.RE
.SH "NVME"
.sp
Part of nvme\-cli
   070701015D6D02000081A4000003E80000006400000001642C0FB6000047C6000000000000004A00000000000000000000003000000000nvme-cli/Documentation/nvme-fdp-set-events.html   <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-fdp-set-events(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-fdp-set-events(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-fdp-set-events -
   Enable or disable FDP events
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme fdp set-events</em> &lt;device&gt; [--namespace-id=&lt;NUM&gt; | -n &lt;NUM&gt;]
                               [--placement-handle=&lt;NUM&gt; | -p &lt;NUM&gt;]
                               [--enable | -e]
                               [--event-types=&lt;NUM,&gt; | -t &lt;NUM,&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, enable or disable a list of event types from being
generated for the Reclaim Unit Handle reference by the specified Placement
Handle.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-n &lt;NUM&gt;
</dt>
<dt class="hdlist1">
--namespace-id=&lt;NUM&gt;
</dt>
<dd>
<p>
        Namespace identifier.
</p>
</dd>
<dt class="hdlist1">
-b
</dt>
<dt class="hdlist1">
--raw-binary
</dt>
<dd>
<p>
        Print the raw buffer to the standard output stream.
</p>
</dd>
<dt class="hdlist1">
-o &lt;format&gt;
</dt>
<dt class="hdlist1">
--output-format=&lt;format&gt;
</dt>
<dd>
<p>
        Set the reporting format to <em>normal</em>, <em>json</em>, or <em>binary</em>. Only one
        output format can be used at a time.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of nvme-cli</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
  070701015D6D03000081A4000003E80000006400000001642C0FB60000083D000000000000004A00000000000000000000002800000000nvme-cli/Documentation/nvme-fdp-stats.1   '\" t
.\"     Title: nvme-fdp-stats
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-FDP\-STATS" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-fdp-stats \- Get Flexible Data Placement Statistics
.SH "SYNOPSIS"
.sp
.nf
\fInvme fdp stats\fR <device> [\-\-endgrp\-id=<NUM> | \-e <NUM>]
                          [\-\-raw\-binary | \-b]
                          [\-\-output\-format=<FMT> | \-o <FMT>]
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, provide information about the FDP configuration over the life of the FDP configuration in an Endurance Group\&.
.SH "OPTIONS"
.PP
\-e <NUM>, \-\-endgrp\-id=<NUM>
.RS 4
The endurance group identifier to use when requesting the log page\&.
.RE
.PP
\-b, \-\-raw\-binary
.RS 4
Print the raw buffer to the standard output stream\&.
.RE
.PP
\-o <format>, \-\-output\-format=<format>
.RS 4
Set the reporting format to
\fInormal\fR,
\fIjson\fR, or
\fIbinary\fR\&. Only one output format can be used at a time\&.
.RE
.SH "NVME"
.sp
Part of nvme\-cli
   070701015D6D04000081A4000003E80000006400000001642C0FB600004773000000000000004A00000000000000000000002B00000000nvme-cli/Documentation/nvme-fdp-stats.html    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-fdp-stats(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-fdp-stats(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-fdp-stats -
   Get Flexible Data Placement Statistics
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme fdp stats</em> &lt;device&gt; [--endgrp-id=&lt;NUM&gt; | -e &lt;NUM&gt;]
                          [--raw-binary | -b]
                          [--output-format=&lt;FMT&gt; | -o &lt;FMT&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, provide information about the FDP configuration over
the life of the FDP configuration in an Endurance Group.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-e &lt;NUM&gt;
</dt>
<dt class="hdlist1">
--endgrp-id=&lt;NUM&gt;
</dt>
<dd>
<p>
        The endurance group identifier to use when requesting the log page.
</p>
</dd>
<dt class="hdlist1">
-b
</dt>
<dt class="hdlist1">
--raw-binary
</dt>
<dd>
<p>
        Print the raw buffer to the standard output stream.
</p>
</dd>
<dt class="hdlist1">
-o &lt;format&gt;
</dt>
<dt class="hdlist1">
--output-format=&lt;format&gt;
</dt>
<dd>
<p>
        Set the reporting format to <em>normal</em>, <em>json</em>, or <em>binary</em>. Only one
        output format can be used at a time.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of nvme-cli</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
 070701015D6D05000081A4000003E80000006400000001642C0FB600000804000000000000004A00000000000000000000002900000000nvme-cli/Documentation/nvme-fdp-status.1  '\" t
.\"     Title: nvme-fdp-status
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-FDP\-STATUS" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-fdp-status \- Get Reclaim Unit Handle Status
.SH "SYNOPSIS"
.sp
.nf
\fInvme fdp status\fR <device> [\-\-namespace\-id=<NUM> | \-n <NUM>]
                           [\-\-raw\-binary | \-b]
                           [\-\-output\-format=<FMT> | \-o <FMT>]
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, provide information about Reclaim Unit Handles that are accessible by the specified namespace\&.
.SH "OPTIONS"
.PP
\-n <NUM>, \-\-namespace\-id=<NUM>
.RS 4
Namespace identifier\&.
.RE
.PP
\-b, \-\-raw\-binary
.RS 4
Print the raw buffer to the standard output stream\&.
.RE
.PP
\-o <format>, \-\-output\-format=<format>
.RS 4
Set the reporting format to
\fInormal\fR,
\fIjson\fR, or
\fIbinary\fR\&. Only one output format can be used at a time\&.
.RE
.SH "NVME"
.sp
Part of nvme\-cli
070701015D6D06000081A4000003E80000006400000001642C0FB60000473A000000000000004A00000000000000000000002C00000000nvme-cli/Documentation/nvme-fdp-status.html   <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-fdp-status(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-fdp-status(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-fdp-status -
   Get Reclaim Unit Handle Status
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme fdp status</em> &lt;device&gt; [--namespace-id=&lt;NUM&gt; | -n &lt;NUM&gt;]
                           [--raw-binary | -b]
                           [--output-format=&lt;FMT&gt; | -o &lt;FMT&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, provide information about Reclaim Unit Handles that
are accessible by the specified namespace.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-n &lt;NUM&gt;
</dt>
<dt class="hdlist1">
--namespace-id=&lt;NUM&gt;
</dt>
<dd>
<p>
        Namespace identifier.
</p>
</dd>
<dt class="hdlist1">
-b
</dt>
<dt class="hdlist1">
--raw-binary
</dt>
<dd>
<p>
        Print the raw buffer to the standard output stream.
</p>
</dd>
<dt class="hdlist1">
-o &lt;format&gt;
</dt>
<dt class="hdlist1">
--output-format=&lt;format&gt;
</dt>
<dd>
<p>
        Set the reporting format to <em>normal</em>, <em>json</em>, or <em>binary</em>. Only one
        output format can be used at a time.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of nvme-cli</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
  070701015D6D07000081A4000003E80000006400000001642C0FB600000736000000000000004A00000000000000000000002900000000nvme-cli/Documentation/nvme-fdp-update.1  '\" t
.\"     Title: nvme-fdp-update
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-FDP\-UPDATE" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-fdp-update \- Reclaim Unit Handle Update
.SH "SYNOPSIS"
.sp
.nf
\fInvme fdp update\fR <device> [\-\-namespace\-id=<NUM> | \-n <NUM>]
                           [\-\-pids=<NUM,> | \-p <NUM,>]
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, update the given Placement Identifiers to reference a different Reclaim Unit accessible by the specified namespace\&.
.SH "OPTIONS"
.PP
\-n <NUM>, \-\-namespace\-id=<NUM>
.RS 4
Namespace identifier\&.
.RE
.PP
\-p <NUM,>, \-\-pids=<NUM,>
.RS 4
Comma\-separated list of placement identifiers to update\&.
.RE
.SH "NVME"
.sp
Part of nvme\-cli
  070701015D6D08000081A4000003E80000006400000001642C0FB600004618000000000000004A00000000000000000000002C00000000nvme-cli/Documentation/nvme-fdp-update.html   <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-fdp-update(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-fdp-update(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-fdp-update -
   Reclaim Unit Handle Update
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme fdp update</em> &lt;device&gt; [--namespace-id=&lt;NUM&gt; | -n &lt;NUM&gt;]
                           [--pids=&lt;NUM,&gt; | -p &lt;NUM,&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, update the given Placement Identifiers to reference
a different Reclaim Unit accessible by the specified namespace.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-n &lt;NUM&gt;
</dt>
<dt class="hdlist1">
--namespace-id=&lt;NUM&gt;
</dt>
<dd>
<p>
        Namespace identifier.
</p>
</dd>
<dt class="hdlist1">
-p &lt;NUM,&gt;
</dt>
<dt class="hdlist1">
--pids=&lt;NUM,&gt;
</dt>
<dd>
<p>
        Comma-separated list of placement identifiers to update.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of nvme-cli</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
070701015D6D09000081A4000003E80000006400000001642C0FB600000853000000000000004A00000000000000000000002800000000nvme-cli/Documentation/nvme-fdp-usage.1   '\" t
.\"     Title: nvme-fdp-usage
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-FDP\-USAGE" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-fdp-usage \- Get Reclaim Unit Handle Usage
.SH "SYNOPSIS"
.sp
.nf
\fInvme fdp usage\fR <device> [\-\-endgrp\-id=<NUM> | \-e <NUM>]
                          [\-\-raw\-binary | \-b]
                          [\-\-output\-format=<FMT> | \-o <FMT>]
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, provide information about the Reclaim Unit Handles associated with the Placement Handles of the namespaces in the specified Endurance Group\&.
.SH "OPTIONS"
.PP
\-e <NUM>, \-\-endgrp\-id=<NUM>
.RS 4
The endurance group identifier to use when requesting the log page\&.
.RE
.PP
\-b, \-\-raw\-binary
.RS 4
Print the raw buffer to the standard output stream\&.
.RE
.PP
\-o <format>, \-\-output\-format=<format>
.RS 4
Set the reporting format to
\fInormal\fR,
\fIjson\fR, or
\fIbinary\fR\&. Only one output format can be used at a time\&.
.RE
.SH "NVME"
.sp
Part of nvme\-cli
 070701015D6D0A000081A4000003E80000006400000001642C0FB60000478A000000000000004A00000000000000000000002B00000000nvme-cli/Documentation/nvme-fdp-usage.html    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-fdp-usage(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-fdp-usage(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-fdp-usage -
   Get Reclaim Unit Handle Usage
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme fdp usage</em> &lt;device&gt; [--endgrp-id=&lt;NUM&gt; | -e &lt;NUM&gt;]
                          [--raw-binary | -b]
                          [--output-format=&lt;FMT&gt; | -o &lt;FMT&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, provide information about the Reclaim Unit Handles
associated with the Placement Handles of the namespaces in the specified
Endurance Group.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-e &lt;NUM&gt;
</dt>
<dt class="hdlist1">
--endgrp-id=&lt;NUM&gt;
</dt>
<dd>
<p>
        The endurance group identifier to use when requesting the log page.
</p>
</dd>
<dt class="hdlist1">
-b
</dt>
<dt class="hdlist1">
--raw-binary
</dt>
<dd>
<p>
        Print the raw buffer to the standard output stream.
</p>
</dd>
<dt class="hdlist1">
-o &lt;format&gt;
</dt>
<dt class="hdlist1">
--output-format=&lt;format&gt;
</dt>
<dd>
<p>
        Set the reporting format to <em>normal</em>, <em>json</em>, or <em>binary</em>. Only one
        output format can be used at a time.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of nvme-cli</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
  070701015D6D0B000081A4000003E80000006400000001642C0FB60000093F000000000000004A00000000000000000000003600000000nvme-cli/Documentation/nvme-fid-support-effects-log.1 '\" t
.\"     Title: nvme-fid-support-effects-log
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-FID\-SUPPORT\-" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-fid-support-effects-log \- Send NVMe FID Support and Effects log, return result and structure
.SH "SYNOPSIS"
.sp
.nf
\fInvme fid\-support\-effects\-log\fR <device> [\-o <fmt> | \-\-output\-format=<fmt>]
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, sends an FID Support and Effects log and provides the result and returned log structure\&.
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1)\&.
.sp
On success, the structure may be returned in one of several ways depending on the option flags; the structure may be parsed by the program or the raw buffer may be printed to stdout\&.
.SH "OPTIONS"
.PP
\-o <format>, \-\-output\-format=<format>
.RS 4
Set the reporting format to
\fInormal\fR,
\fIjson\fR, or
\fIbinary\fR\&. Only one output format can be used at a time\&.
.RE
.PP
\-H, \-\-human\-readable
.RS 4
This option will parse and format many of the bit fields into human\-readable formats\&.
.RE
.SH "EXAMPLES"
.sp
No examples yet\&.
.SH "NVME"
.sp
Part of the nvme\-user suite
 070701015D6D0C000081A4000003E80000006400000001642C0FB6000048DB000000000000004A00000000000000000000003900000000nvme-cli/Documentation/nvme-fid-support-effects-log.html  <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-fid-support-effects-log(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-fid-support-effects-log(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-fid-support-effects-log -
   Send NVMe FID Support and Effects log, return result and structure
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme fid-support-effects-log</em> &lt;device&gt; [-o &lt;fmt&gt; | --output-format=&lt;fmt&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, sends an FID Support and Effects log and
provides the result and returned log structure.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).</p></div>
<div class="paragraph"><p>On success, the structure may be returned in one of several ways depending
on the option flags; the structure may be parsed by the program or the
raw buffer may be printed to stdout.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-o &lt;format&gt;
</dt>
<dt class="hdlist1">
--output-format=&lt;format&gt;
</dt>
<dd>
<p>
    Set the reporting format to <em>normal</em>, <em>json</em>, or
    <em>binary</em>. Only one output format can be used at a time.
</p>
</dd>
<dt class="hdlist1">
-H
</dt>
<dt class="hdlist1">
--human-readable
</dt>
<dd>
<p>
        This option will parse and format many of the bit fields
        into human-readable formats.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="paragraph"><p>No examples yet.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
 070701015D6D0D000081A4000003E80000006400000001642C0FB60000079C000000000000004A00000000000000000000002400000000nvme-cli/Documentation/nvme-flush.1   '\" t
.\"     Title: nvme-flush
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-FLUSH" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-flush \- Flush command\&.
.SH "SYNOPSIS"
.sp
.nf
\fInvme flush\fR <device> [\-\-namespace\-id=<nsid> | \-n <nsid>]
.fi
.SH "DESCRIPTION"
.sp
The Flush command shall commit data and metadata associated with the specified namespace(s) to nonvolatile media\&. The flush applies to all commands completed prior to the submission of the Flush command\&. The controller may also flush additional data and/or metadata from any namespace\&.
.SH "OPTIONS"
.PP
\-n <nsid>, \-\-namespace\-id=<nsid>
.RS 4
Specify the optional namespace id for this command\&. Defaults to 0xffffffff, indicating flush for all namespaces\&.
.RE
.SH "EXAMPLES"
.sp
No examples yet\&.
.SH "NVME"
.sp
Part of the nvme\-user suite
070701015D6D0E000081A4000003E80000006400000001642C0FB600004697000000000000004A00000000000000000000002700000000nvme-cli/Documentation/nvme-flush.html    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-flush(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-flush(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-flush -
   Flush command.
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme flush</em> &lt;device&gt; [--namespace-id=&lt;nsid&gt; | -n &lt;nsid&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>The Flush command shall commit data and metadata associated with the
specified namespace(s) to nonvolatile media. The flush applies to
all commands completed prior to the submission of the Flush command.
The controller may also flush additional data and/or metadata from
any namespace.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-n &lt;nsid&gt;
</dt>
<dt class="hdlist1">
--namespace-id=&lt;nsid&gt;
</dt>
<dd>
<p>
        Specify the optional namespace id for this command. Defaults to
        0xffffffff, indicating flush for all namespaces.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="paragraph"><p>No examples yet.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
 070701015D6D0F000081A4000003E80000006400000001642C0FB600001CA9000000000000004A00000000000000000000002500000000nvme-cli/Documentation/nvme-format.1  '\" t
.\"     Title: nvme-format
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-FORMAT" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-format \- Format an NVMe device
.SH "SYNOPSIS"
.sp
.nf
\fInvme format\fR <device> [\-\-namespace\-id=<nsid> | \-n <nsid>]
                    [\-\-lbaf=<lbaf> | \-l <lbaf>]
                    [\-\-block\-size=<block size | \-b <block size>]
                    [\-\-ses=<ses> | \-s <ses>]
                    [\-\-pil=<pil> | \-p <pil>]
                    [\-\-pi=<pi> | \-i <pi>]
                    [\-\-ms=<ms> | \-m <ms>]
                    [\-\-reset | \-r ]
                    [\-\-force ]
                    [\-\-timeout=<timeout> | \-t <timeout> ]
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, send an nvme Format Namespace admin command and provides the results\&.
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1)\&. If the character device is given, and the controller does not support formatting of particular namespaces (ID_CTRL\&.FNA bit 0 enabled), then all namespaces will be formatted\&. If FNA is disabled, then the namespace identifier must be specified with the \fInamespace\-id\fR option; specify a value of 0xffffffff to send the format to all namespaces\&. If the block device is given, the namespace identifier will default to the namespace ID of the block device given, but can be overridden with the same option\&.
.sp
Note, the numeric suffix on the character device, for example the \fI0\fR in /dev/nvme0, does NOT indicate this device handle is the parent controller of any namespaces with the same suffix\&. The namespace handle\(cqs numeral may be coming from the subsystem identifier, which is independent of the controller\(cqs identifier\&. Do not assume any particular device relationship based on their names\&. If you do, you may irrevocably erase data on an unintended device\&.
.sp
On success, the program will automatically issue BLKRRPART ioctl to force rescanning the namespaces\&. If the driver is recent enough, this will automatically update the physical block size\&. If it is not recent enough, you will need to remove and rescan your device some other way for the new block size to be visible, if the size was changed with this command\&.
.SH "OPTIONS"
.PP
\-n <nsid>, \-\-namespace\-id=<nsid>
.RS 4
Send the format command for the specified nsid\&. This can be used to override the default value for either character device (unspecified) or the block device (result from NVME_IOCTL_ID)\&.
.RE
.PP
\-l <lbaf>, \-\-lbaf=<lbaf>
.RS 4
LBA Format: This field specifies the LBA format to apply to the NVM media\&. This corresponds to the LBA formats indicated in the Identify Namespace command\&. Conflicts with \-\-block\-size argument\&. Defaults to 0\&.
.RE
.PP
\-b <block size>, \-\-block\-size=<block size>
.RS 4
Block Size: This field is used to specify the target block size to format to\&. Potential lbaf values will be scanned and the lowest numbered will be selected for the format operation\&. Conflicts with \-\-lbaf argument\&.
.RE
.PP
\-s <ses>, \-\-ses=<ses>
.RS 4
Secure Erase Settings: This field specifies whether a secure erase should be performed as part of the format and the type of the secure erase operation\&. The erase applies to all user data, regardless of location (e\&.g\&., within an exposed LBA, within a cache, within deallocated LBAs, etc)\&. Defaults to 0\&.
.TS
allbox tab(:);
lt lt
lt lt
lt lt
lt lt
lt lt.
T{
Value
T}:T{
Definition
T}
T{
0
T}:T{
No secure erase operation requested
T}
T{
1
T}:T{
User Data Erase: All user data shall be erased, contents of the user data after the erase is indeterminate (e\&.g\&., the user data may be zero filled, one filled, etc)\&. The controller may perform a cryptographic erase when a User Data Erase is requested if all user data is encrypted\&.
T}
T{
2
T}:T{
Cryptographic Erase: All user data shall be erased cryptographically\&. This is accomplished by deleting the encryption key\&.
T}
T{
3\(en7
T}:T{
Reserved
T}
.TE
.sp 1
.RE
.PP
\-p <pil>, \-\-pil=<pil>
.RS 4
Protection Information Location: If set to \(oq1\(cq and protection information is enabled, then protection information is transferred as the first eight bytes of metadata\&. If cleared to \(oq0\(cq and protection information is enabled, then protection information is transferred as the last eight bytes of metadata\&. Defaults to 0\&.
.RE
.PP
\-i <pi>, \-\-pi=<pi>
.RS 4
Protection Information: This field specifies whether end\-to\-end data protection is enabled and the type of protection information\&. Defaults to 0\&.
.TS
allbox tab(:);
lt lt
lt lt
lt lt
lt lt
lt lt
lt lt.
T{
Value
T}:T{
Definition
T}
T{
0
T}:T{
Protection information is not enabled
T}
T{
1
T}:T{
Protection information is enabled, Type 1
T}
T{
2
T}:T{
Protection information is enabled, Type 2
T}
T{
3
T}:T{
Protection information is enabled, Type 3
T}
T{
4\(en7
T}:T{
Reserved
T}
.TE
.sp 1
.RE
.PP
\-m <ms>, \-\-ms=<ms>
.RS 4
Metadata Settings: This field is set to \(oq1\(cq if the metadata is transferred as part of an extended data LBA\&. This field is cleared to \(oq0\(cq if the metadata is transferred as part of a separate buffer\&. The metadata may include protection information, based on the Protection Information (PI) field\&. Defaults to 0\&.
.RE
.PP
\-r, \-\-reset
.RS 4
Issue a reset after successful format\&. Must use the character device for this\&.
.RE
.PP
\-\-force
.RS 4
Just send the command immediately without warning of the implications\&.
.RE
.PP
\-t <timeout>, \-\-timeout=<timeout>
.RS 4
Override default timeout value\&. In milliseconds\&.
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Format the device using all defaults:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme format /dev/nvme0n1
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Format namespace 1 with user data secure erase settings and protection information:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme format /dev/nvme0 \-\-namespace\-id=1 \-\-ses=1 \-\-pi=1
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite
   070701015D6D10000081A4000003E80000006400000001642C0FB600006575000000000000004A00000000000000000000002800000000nvme-cli/Documentation/nvme-format.html   <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-format(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-format(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-format -
   Format an NVMe device
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme format</em> &lt;device&gt; [--namespace-id=&lt;nsid&gt; | -n &lt;nsid&gt;]
                    [--lbaf=&lt;lbaf&gt; | -l &lt;lbaf&gt;]
                    [--block-size=&lt;block size | -b &lt;block size&gt;]
                    [--ses=&lt;ses&gt; | -s &lt;ses&gt;]
                    [--pil=&lt;pil&gt; | -p &lt;pil&gt;]
                    [--pi=&lt;pi&gt; | -i &lt;pi&gt;]
                    [--ms=&lt;ms&gt; | -m &lt;ms&gt;]
                    [--reset | -r ]
                    [--force ]
                    [--timeout=&lt;timeout&gt; | -t &lt;timeout&gt; ]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, send an nvme Format Namespace admin command
and provides the results.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).
If the character device is given, and the controller does not support
formatting of particular namespaces (ID_CTRL.FNA bit 0 enabled), then all
namespaces will be formatted. If FNA is disabled, then the namespace
identifier must be specified with the <em>namespace-id</em> option; specify a
value of 0xffffffff to send the format to all namespaces. If the block
device is given, the namespace identifier will default to the namespace
ID of the block device given, but can be overridden with the same option.</p></div>
<div class="paragraph"><p>Note, the numeric suffix on the character device, for example the <em>0</em> in
/dev/nvme0, does NOT indicate this device handle is the parent controller
of any namespaces with the same suffix. The namespace handle&#8217;s numeral
may be coming from the subsystem identifier, which is independent of the
controller&#8217;s identifier. Do not assume any particular device relationship
based on their names. If you do, you may irrevocably erase data on an
unintended device.</p></div>
<div class="paragraph"><p>On success, the program will automatically issue BLKRRPART ioctl to
force rescanning the namespaces. If the driver is recent enough, this will
automatically update the physical block size. If it is not recent enough,
you will need to remove and rescan your device some other way for the
new block size to be visible, if the size was changed with this command.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-n &lt;nsid&gt;
</dt>
<dt class="hdlist1">
--namespace-id=&lt;nsid&gt;
</dt>
<dd>
<p>
        Send the format command for the specified nsid. This can be
        used to override the default value for either character device
        (unspecified) or the block device (result from NVME_IOCTL_ID).
</p>
</dd>
<dt class="hdlist1">
-l &lt;lbaf&gt;
</dt>
<dt class="hdlist1">
--lbaf=&lt;lbaf&gt;
</dt>
<dd>
<p>
        LBA Format: This field specifies the LBA format to apply to the NVM
        media. This corresponds to the LBA formats indicated in the
        Identify Namespace command. Conflicts with --block-size argument.
        Defaults to 0.
</p>
</dd>
<dt class="hdlist1">
-b &lt;block size&gt;
</dt>
<dt class="hdlist1">
--block-size=&lt;block size&gt;
</dt>
<dd>
<p>
        Block Size: This field is used to specify the target block size to
        format to. Potential lbaf values will be scanned and the lowest
        numbered will be selected for the format operation. Conflicts with
        --lbaf argument.
</p>
</dd>
<dt class="hdlist1">
-s &lt;ses&gt;
</dt>
<dt class="hdlist1">
--ses=&lt;ses&gt;
</dt>
<dd>
<p>
        Secure Erase Settings: This field specifies whether a secure
        erase should be performed as part of the format and the type of
        the secure erase operation. The erase applies to all user data,
        regardless of location (e.g., within an exposed LBA, within a
        cache, within deallocated LBAs, etc). Defaults to 0.
</p>
<div class="tableblock">
<table rules="all"
width="100%"
frame="border"
cellspacing="0" cellpadding="4">
<col width="50%" />
<col width="50%" />
<tbody>
<tr>
<td align="left" valign="top"><p class="table">Value</p></td>
<td align="left" valign="top"><p class="table">Definition</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">0</p></td>
<td align="left" valign="top"><p class="table">No secure erase operation requested</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">1</p></td>
<td align="left" valign="top"><p class="table">User Data Erase: All user data shall be erased, contents of the user
data after the erase is indeterminate (e.g., the user data may be zero
filled, one filled, etc). The controller may perform a cryptographic
erase when a User Data Erase is requested if all user data is encrypted.</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">2</p></td>
<td align="left" valign="top"><p class="table">Cryptographic Erase: All user data shall be erased
cryptographically. This is accomplished by deleting the encryption key.</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">3â€“7</p></td>
<td align="left" valign="top"><p class="table">Reserved</p></td>
</tr>
</tbody>
</table>
</div>
</dd>
<dt class="hdlist1">
-p &lt;pil&gt;
</dt>
<dt class="hdlist1">
--pil=&lt;pil&gt;
</dt>
<dd>
<p>
        Protection Information Location: If set to â€˜1â€™ and protection
        information is enabled, then protection information is transferred
        as the first eight bytes of metadata. If cleared to â€˜0â€™ and
        protection information is enabled, then protection information
        is transferred as the last eight bytes of metadata. Defaults to 0.
</p>
</dd>
<dt class="hdlist1">
-i &lt;pi&gt;
</dt>
<dt class="hdlist1">
--pi=&lt;pi&gt;
</dt>
<dd>
<p>
        Protection Information: This field specifies whether end-to-end
        data protection is enabled and the type of protection
        information. Defaults to 0.
</p>
<div class="tableblock">
<table rules="all"
width="100%"
frame="border"
cellspacing="0" cellpadding="4">
<col width="50%" />
<col width="50%" />
<tbody>
<tr>
<td align="left" valign="top"><p class="table">Value</p></td>
<td align="left" valign="top"><p class="table">Definition</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">0</p></td>
<td align="left" valign="top"><p class="table">Protection information is not enabled</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">1</p></td>
<td align="left" valign="top"><p class="table">Protection information is enabled, Type 1</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">2</p></td>
<td align="left" valign="top"><p class="table">Protection information is enabled, Type 2</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">3</p></td>
<td align="left" valign="top"><p class="table">Protection information is enabled, Type 3</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">4â€“7</p></td>
<td align="left" valign="top"><p class="table">Reserved</p></td>
</tr>
</tbody>
</table>
</div>
</dd>
<dt class="hdlist1">
-m &lt;ms&gt;
</dt>
<dt class="hdlist1">
--ms=&lt;ms&gt;
</dt>
<dd>
<p>
        Metadata Settings: This field is set to â€˜1â€™ if the metadata
        is transferred as part of an extended data LBA. This field is
        cleared to â€˜0â€™ if the metadata is transferred as part of a
        separate buffer. The metadata may include protection information,
        based on the Protection Information (PI) field. Defaults to 0.
</p>
</dd>
<dt class="hdlist1">
-r
</dt>
<dt class="hdlist1">
--reset
</dt>
<dd>
<p>
        Issue a reset after successful format. Must use the character
        device for this.
</p>
</dd>
<dt class="hdlist1">
--force
</dt>
<dd>
<p>
        Just send the command immediately without warning of the implications.
</p>
</dd>
<dt class="hdlist1">
-t &lt;timeout&gt;
</dt>
<dt class="hdlist1">
--timeout=&lt;timeout&gt;
</dt>
<dd>
<p>
        Override default timeout value. In milliseconds.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Format the device using all defaults:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme format /dev/nvme0n1</code></pre>
</div></div>
</li>
<li>
<p>
Format namespace 1 with user data secure erase settings and protection
information:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme format /dev/nvme0 --namespace-id=1 --ses=1 --pi=1</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
   070701015D6D11000081A4000003E80000006400000001642C0FB60000115E000000000000004A00000000000000000000002800000000nvme-cli/Documentation/nvme-fw-commit.1   '\" t
.\"     Title: nvme-fw-commit
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-FW\-COMMIT" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-fw-commit \- Used to verify and commit a firmware image\&.
.SH "SYNOPSIS"
.sp
.nf
\fInvme fw\-commit\fR <device> [\-\-slot=<slot> | \-s <slot>]
                    [\-\-action=<action> | \-a <action>]
                    [\-\-bpid=<boot\-partid> | \-b <boot\-partid> ]
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, send an nvme Firmware Commit admin command and provides the results\&.
.sp
The Firmware Commit command is used to verify that a valid firmware image has been downloaded and to commit that revision to a specific firmware slot\&. The host may select the firmware image to commit on the next controller reset (CC\&.EN transitions from \(oq1\(cq to \(oq0\(cq, a PCI function level reset, and/or other Controller or NVM Subsystem Reset) as part of this command\&. The currently executing firmware revision may be determined from the Firmware Revision field of the Identify Controller data structure as indicated in the Firmware Slot Information log page\&.
.sp
No further action is automatically taken to reset the device, which is usually required to complete the activation process\&. If your kernel and driver are recent enough, you can commit the firmware by issuing a reset through Linux sysfs, for example:
.sp
.if n \{\
.RS 4
.\}
.nf
 # echo 1 > /sys/class/nvme/nvme0/device/reset
.fi
.if n \{\
.RE
.\}
.sp
If your kernel is not recent enough, you will need to remove and add the device some other way\&.
.SH "OPTIONS"
.PP
\-a <action>, \-\-action=<action>
.RS 4
Commit Action: This field specifies the action that is taken on the image downloaded with the Firmware Image Download command or on a previously downloaded and placed image\&.
.TS
allbox tab(:);
lt lt
lt lt
lt lt
lt lt
lt lt
lt lt
lt lt.
T{
Value
T}:T{
Definition
T}
T{
0
T}:T{
Downloaded image replaces the image indicated by the Firmware Slot field\&. This image is not activated\&.
T}
T{
1
T}:T{
Downloaded image replaces the image indicated by the Firmware Slot field\&. This image is activated at the next reset\&.
T}
T{
2
T}:T{
The image indicated by the Firmware Slot field is activated at the next reset\&.
T}
T{
3
T}:T{
The image specified by the Firmware Slot field is requested to be activated immediately without reset\&.
T}
T{
6
T}:T{
Downloaded image replaces the Boot Partition specified by the Boot Partition ID field\&.
T}
T{
7
T}:T{
Mark the Boot Partition specified in the BPID field as active and update BPINFO\&.ABPID\&.
T}
.TE
.sp 1
.RE
.PP
\-s <slot>, \-\-slot=<slot>
.RS 4
Firmware Slot: Specifies the firmware slot that shall be used for the Commit Action, if applicable\&. If the value specified is 0h, then the controller shall choose the firmware slot (slot 1 \(en 7) to use for the operation\&.
.RE
.PP
\-\-bpid=<boot\-partid>, \-b <boot\-partid>
.RS 4
Specifies the Boot partition that shall be used for the Commit Action, if applicable (default: 0)
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
commit the last downloaded fw to slot 1\&.
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme fw\-commit /dev/nvme0 \-\-slot=1 \-\-action=2
.fi
.if n \{\
.RE
.\}
.RE
.SH "ALIAS"
.sp
fw\-activate
.SH "NVME"
.sp
Part of the nvme\-user suite
  070701015D6D12000081A4000003E80000006400000001642C0FB6000055B9000000000000004A00000000000000000000002B00000000nvme-cli/Documentation/nvme-fw-commit.html    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-fw-commit(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-fw-commit(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-fw-commit -
   Used to verify and commit a firmware image.
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme fw-commit</em> &lt;device&gt; [--slot=&lt;slot&gt; | -s &lt;slot&gt;]
                    [--action=&lt;action&gt; | -a &lt;action&gt;]
                    [--bpid=&lt;boot-partid&gt; | -b &lt;boot-partid&gt; ]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, send an nvme Firmware Commit admin command
and provides the results.</p></div>
<div class="paragraph"><p>The Firmware Commit command is used to verify that a valid firmware
image has been downloaded and to commit that revision to a specific
firmware slot. The host may select the firmware image to commit on the
next controller reset (CC.EN transitions from â€˜1â€™ to â€˜0â€™, a PCI
function level reset, and/or other Controller or NVM Subsystem Reset)
as part of this command. The currently executing firmware revision may
be determined from the Firmware Revision field of the Identify Controller
data structure as indicated in the Firmware Slot Information log page.</p></div>
<div class="paragraph"><p>No further action is automatically taken to reset the device, which is
usually required to complete the activation process. If your kernel and
driver are recent enough, you can commit the firmware by issuing a
reset through Linux sysfs, for example:</p></div>
<div class="listingblock">
<div class="content">
<pre><code> # echo 1 &gt; /sys/class/nvme/nvme0/device/reset</code></pre>
</div></div>
<div class="paragraph"><p>If your kernel is not recent enough, you will need to remove and add
the device some other way.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-a &lt;action&gt;
</dt>
<dt class="hdlist1">
--action=&lt;action&gt;
</dt>
<dd>
<p>
        Commit Action: This field specifies the action that is taken
        on the image downloaded with the Firmware Image Download command
        or on a previously downloaded and placed image.
</p>
<div class="tableblock">
<table rules="all"
width="100%"
frame="border"
cellspacing="0" cellpadding="4">
<col width="50%" />
<col width="50%" />
<tbody>
<tr>
<td align="left" valign="top"><p class="table">Value</p></td>
<td align="left" valign="top"><p class="table">Definition</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">0</p></td>
<td align="left" valign="top"><p class="table">Downloaded image replaces the image indicated by the Firmware Slot
field. This image is not activated.</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">1</p></td>
<td align="left" valign="top"><p class="table">Downloaded image replaces the image indicated by the Firmware Slot
field. This image is activated at the next reset.</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">2</p></td>
<td align="left" valign="top"><p class="table">The image indicated by the Firmware Slot field is activated at the
next reset.</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">3</p></td>
<td align="left" valign="top"><p class="table">The image specified by the Firmware Slot field is requested to be
activated immediately without reset.</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">6</p></td>
<td align="left" valign="top"><p class="table">Downloaded image replaces the Boot Partition specified by the Boot Partition
ID field.</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">7</p></td>
<td align="left" valign="top"><p class="table">Mark the Boot Partition specified in the BPID field as active and update
BPINFO.ABPID.</p></td>
</tr>
</tbody>
</table>
</div>
</dd>
<dt class="hdlist1">
-s &lt;slot&gt;
</dt>
<dt class="hdlist1">
--slot=&lt;slot&gt;
</dt>
<dd>
<p>
        Firmware Slot: Specifies the firmware slot that shall be used for
        the Commit Action, if applicable. If the value specified is 0h,
        then the controller shall choose the firmware slot (slot 1 â€“ 7)
        to use for the operation.
</p>
</dd>
<dt class="hdlist1">
--bpid=&lt;boot-partid&gt;
</dt>
<dt class="hdlist1">
-b &lt;boot-partid&gt;
</dt>
<dd>
<p>
        Specifies the Boot partition that shall be used for the Commit Action,
        if applicable (default: 0)
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
commit the last downloaded fw to slot 1.
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme fw-commit /dev/nvme0 --slot=1 --action=2</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_alias">ALIAS</h2>
<div class="sectionbody">
<div class="paragraph"><p>fw-activate</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
   070701015D6D13000081A4000003E80000006400000001642C0FB600000E6B000000000000004A00000000000000000000002A00000000nvme-cli/Documentation/nvme-fw-download.1 '\" t
.\"     Title: nvme-fw-download
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-FW\-DOWNLOAD" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-fw-download \- Download all or a portion of an nvme firmware image\&.
.SH "SYNOPSIS"
.sp
.nf
\fInvme fw\-download\fR <device> [\-\-fw=<firmware\-file> | \-f <firmware\-file>]
                    [\-\-xfer=<transfer\-size> | \-x <transfer\-size>]
                    [\-\-offset=<offset> | \-o <offset>]
.fi
.SH "DESCRIPTION"
.sp
The Firmware Image Download command is used to download all or a portion of the firmware image for a future update to the controller\&. The Firmware Image Download command may be submitted while other commands on the Admin Submission Queue or I/O Submission Queues are outstanding\&. The Firmware Image Download command copies the new firmware image (in whole or in part) to the controller\&.
.sp
The firmware image may be constructed of multiple pieces that are individually downloaded with separate Firmware Image Download commands\&. Each Firmware Image Download command includes a Dword Offset and Number of Dwords that specify a Dword range\&. The host software shall ensure that firmware pieces do not have Dword ranges that overlap\&. Firmware portions may be submitted out of order to the controller\&.
.sp
The new firmware image is not applied as part of the Firmware Image Download command\&. It is applied following a reset, where the image to apply and the firmware slot it should be committed to is specified with the Firmware Commit command (nvme fw\-commit <args>)\&.
.SH "OPTIONS"
.PP
\-f <firmware\-file>, \-\-fw=<firmware\-file>
.RS 4
Required argument\&. This specifies the path to the device\(cqs firmware file on your system that will be read by the program and sent to the device\&.
.RE
.PP
\-x <transfer\-size>, \-\-xfer=<transfer\-size>
.RS 4
This specifies the size to split each transfer\&. This is useful if the device has a max transfer size requirement for firmware\&. It defaults to 4k\&.
.RE
.PP
\-o <offset>, \-\-offset=<offset>
.RS 4
This specifies the starting offset in dwords\&. This is really only useful if your firmware is split in multiple files; otherwise the offset starts at zero and automatically adjusts based on the
\fIxfer\fR
size given\&.
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Transfer a firmware size 128KiB at a time:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme fw\-download /dev/nvme0 \-\-fw=/path/to/nvme\&.fw \-\-xfer=0x20000
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite
 070701015D6D14000081A4000003E80000006400000001642C0FB600004E87000000000000004A00000000000000000000002D00000000nvme-cli/Documentation/nvme-fw-download.html  <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-fw-download(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-fw-download(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-fw-download -
   Download all or a portion of an nvme firmware image.
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme fw-download</em> &lt;device&gt; [--fw=&lt;firmware-file&gt; | -f &lt;firmware-file&gt;]
                    [--xfer=&lt;transfer-size&gt; | -x &lt;transfer-size&gt;]
                    [--offset=&lt;offset&gt; | -o &lt;offset&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>The Firmware Image Download command is used to download all or a portion
of the firmware image for a future update to the controller. The Firmware
Image Download command may be submitted while other commands on the Admin
Submission Queue or I/O Submission Queues are outstanding. The Firmware
Image Download command copies the new firmware image (in whole or in part)
to the controller.</p></div>
<div class="paragraph"><p>The firmware image may be constructed of multiple pieces that
are individually downloaded with separate Firmware Image Download
commands. Each Firmware Image Download command includes a Dword
Offset and Number of Dwords that specify a Dword range. The host
software shall ensure that firmware pieces do not have Dword ranges
that overlap. Firmware portions may be submitted out of order to the
controller.</p></div>
<div class="paragraph"><p>The new firmware image is not applied as part of the Firmware Image
Download command. It is applied following a reset, where the image to
apply and the firmware slot it should be committed to is specified with
the Firmware Commit command (nvme fw-commit &lt;args&gt;).</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-f &lt;firmware-file&gt;
</dt>
<dt class="hdlist1">
--fw=&lt;firmware-file&gt;
</dt>
<dd>
<p>
        Required argument. This specifies the path to the device&#8217;s
        firmware file on your system that will be read by the program
        and sent to the device.
</p>
</dd>
<dt class="hdlist1">
-x &lt;transfer-size&gt;
</dt>
<dt class="hdlist1">
--xfer=&lt;transfer-size&gt;
</dt>
<dd>
<p>
        This specifies the size to split each transfer. This is useful if
        the device has a max transfer size requirement for firmware. It
        defaults to 4k.
</p>
</dd>
<dt class="hdlist1">
-o &lt;offset&gt;
</dt>
<dt class="hdlist1">
--offset=&lt;offset&gt;
</dt>
<dd>
<p>
        This specifies the starting offset in dwords. This is really only
        useful if your firmware is split in multiple files; otherwise
        the offset starts at zero and automatically adjusts based on the
        <em>xfer</em> size given.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Transfer a firmware size 128KiB at a time:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme fw-download /dev/nvme0 --fw=/path/to/nvme.fw --xfer=0x20000</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
 070701015D6D15000081A4000003E80000006400000001642C0FB600000B17000000000000004A00000000000000000000002500000000nvme-cli/Documentation/nvme-fw-log.1  '\" t
.\"     Title: nvme-fw-log
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-FW\-LOG" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-fw-log \- Send NVMe Firmware log page request, returns result and log
.SH "SYNOPSIS"
.sp
.nf
\fInvme fw\-log\fR <device> [\-\-raw\-binary | \-b]
                        [\-\-output\-format=<fmt> | \-o <fmt>]
.fi
.SH "DESCRIPTION"
.sp
Retrieves the NVMe Firmware log page from an NVMe device and provides the returned structure\&.
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1)\&.
.sp
On success, the returned f/w log structure may be returned in one of several ways depending on the option flags; the structure may parsed by the program and printed in a readable format or the raw buffer may be printed to stdout for another program to parse\&.
.SH "OPTIONS"
.PP
\-b, \-\-raw\-binary
.RS 4
Print the raw fw log buffer to stdout\&.
.RE
.PP
\-o <format>, \-\-output\-format=<format>
.RS 4
Set the reporting format to
\fInormal\fR,
\fIjson\fR, or
\fIbinary\fR\&. Only one output format can be used at a time\&.
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Print the firmware log page in a human readable format:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme fw\-log /dev/nvme0
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Print the log firmware to a file:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme fw\-log /dev/nvme0 \-\-raw\-binary > fw_log\&.raw
.fi
.if n \{\
.RE
.\}
.sp
It is probably a bad idea to not redirect stdout when using this mode\&.
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite
 070701015D6D16000081A4000003E80000006400000001642C0FB600004AB7000000000000004A00000000000000000000002800000000nvme-cli/Documentation/nvme-fw-log.html   <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-fw-log(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-fw-log(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-fw-log -
   Send NVMe Firmware log page request, returns result and log
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme fw-log</em> &lt;device&gt; [--raw-binary | -b]
                        [--output-format=&lt;fmt&gt; | -o &lt;fmt&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>Retrieves the NVMe Firmware log page from an NVMe device and provides
the returned structure.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).</p></div>
<div class="paragraph"><p>On success, the returned f/w log structure may be returned in one of
several ways depending on the option flags; the structure may parsed by
the program and printed in a readable format or the raw buffer may be
printed to stdout for another program to parse.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-b
</dt>
<dt class="hdlist1">
--raw-binary
</dt>
<dd>
<p>
        Print the raw fw log buffer to stdout.
</p>
</dd>
<dt class="hdlist1">
-o &lt;format&gt;
</dt>
<dt class="hdlist1">
--output-format=&lt;format&gt;
</dt>
<dd>
<p>
              Set the reporting format to <em>normal</em>, <em>json</em>, or
              <em>binary</em>. Only one output format can be used at a time.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Print the firmware log page in a human readable format:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme fw-log /dev/nvme0</code></pre>
</div></div>
</li>
<li>
<p>
Print the log firmware to a file:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme fw-log /dev/nvme0 --raw-binary &gt; fw_log.raw</code></pre>
</div></div>
<div class="paragraph"><p>It is probably a bad idea to not redirect stdout when using this mode.</p></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
 070701015D6D17000081A4000003E80000006400000001642C0FB600000674000000000000004A00000000000000000000002A00000000nvme-cli/Documentation/nvme-gen-hostnqn.1 '\" t
.\"     Title: nvme-gen-hostnqn
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-GEN\-HOSTNQN" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-gen-hostnqn \- Generate a host NVMe Qualified Name
.SH "SYNOPSIS"
.sp
.nf
\fInvme gen\-hostnqn\fR
.fi
.SH "DESCRIPTION"
.sp
Generate a random host NQN in the form: nqn\&.2014\-08\&.org\&.nvmexpress:uuid:1b4e28ba\-2fa1\-11d2\-883f\-0016d3cca427 and prints it to stdout\&.
.SH "OPTIONS"
.sp
No options needed
.SH "EXAMPLES"
.sp
nvme gen\-hostnqn
.SH "NVME"
.sp
Part of the nvme\-user suite
070701015D6D18000081A4000003E80000006400000001642C0FB6000044F9000000000000004A00000000000000000000002D00000000nvme-cli/Documentation/nvme-gen-hostnqn.html  <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-gen-hostnqn(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-gen-hostnqn(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-gen-hostnqn -
   Generate a host NVMe Qualified Name
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme gen-hostnqn</em></pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>Generate a random host NQN in the form:
nqn.2014-08.org.nvmexpress:uuid:1b4e28ba-2fa1-11d2-883f-0016d3cca427
and prints it to stdout.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="paragraph"><p>No options needed</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="paragraph"><p>nvme gen-hostnqn</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
   070701015D6D19000081A4000003E80000006400000001642C0FB6000007DD000000000000004A00000000000000000000002C00000000nvme-cli/Documentation/nvme-gen-tls-key.txt   nvme-gen-tls-key(1)
======================

NAME
----
nvme-gen-tls-key - Generate a NVMe TLS PSK

SYNOPSIS
--------
[verse]
'nvme gen-tls-key' [--keyring=<name> | -k <name>]
                      [--keytype=<type> | -t <type> ]
		      [--hostnqn=<nqn> | -n <nqn>]
		      [--subsysnqn=<nqn> | -c <nqn>]
		      [--hmac=<hmac-id> | -h <hmac-id>]
		      [--secret=<secret> | -s <secret> ]
		      [--insert | -i ]

DESCRIPTION
-----------
Generate a base64-encoded NVMe TLS pre-shared key (PSK).
The resulting key is either printed in the PSK interchange format
'NVMeTLSkey-1:01:<base64 encoded data>:',
inserted as a 'retained' key into the specified keyring, or both.
When the PSK should be inserted into the keyring a 'retained' key
is derived from the secret key material, and the resulting 'retained'
key is stored with the identity
'NVMe0R0<hmac> <host NQN> <subsystem NQN>'
in the keyring.
The 'retained' key is derived from the secret key material,
the specified subsystem NQN, and the host NQN.
Once the 'retained' key is stored in the keyring the original
secret key material cannot be retrieved.

OPTIONS
-------
-k <name>::
--keyring=<name>::
	Name of the keyring into which the 'retained' TLS key should be
	stored. Default is '.nvme'.

-t <type>::
--keytype=<type>::
	Type of the key for resulting TLS key.
	Default is 'psk'.

-n <nqn>::
--hostnqn=<nqn>::
	Host NVMe Qualified Name (NQN) to be used to derive the
	'retained' TLS key

-c <nqn>::
--subsysnqn=<nqn>::
	Subsystem NVMe Qualified Name (NQN) to be used to derive the
	'retained' TLS key

-h <hmac-id>::
--hmac=<hmac-id>::
	Select a HMAC algorithm to use. Possible values are:
	1 - SHA-256 (default)
	2 - SHA-384

-s <secret>::
--secret=<secret>::
	Secret value (in hexadecimal) to be used for the key. If none are
	provided a random value is used.

-i::
--insert::
	Insert the resulting TLS key into the keyring without printing out
	the key in PSK interchange format.

EXAMPLES
--------
No Examples

NVME
----
Part of the nvme-user suite
   070701015D6D1A000081A4000003E80000006400000001642C0FB6000014D2000000000000004A00000000000000000000002A00000000nvme-cli/Documentation/nvme-get-feature.1 '\" t
.\"     Title: nvme-get-feature
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-GET\-FEATURE" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-get-feature \- Gets an NVMe feature, returns applicable results
.SH "SYNOPSIS"
.sp
.nf
\fInvme get\-feature\fR <device> [\-\-namespace\-id=<nsid> | \-n <nsid>]
                          [\-\-feature\-id=<fid> | \-f <fid>] [\-\-cdw11=<cdw11>]
                          [\-\-uuid\-index=<uuid\-index> | \-U <uuid_index>]
                          [\-\-data\-len=<data\-len> | \-l <data\-len>]
                          [\-\-sel=<select> | \-s <select>]
                          [\-\-raw\-binary | \-b]
                          [\-\-human\-readable | \-H]
.fi
.SH "DESCRIPTION"
.sp
Submits an NVMe Get Feature admin command and returns the applicable results\&. This may be the feature\(cqs value, or may also include a feature structure if the feature requires it (ex: LBA Range Type)\&.
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1)\&.
.sp
On success, the returned feature\(cqs structure (if applicable) may be returned in one of several ways depending on the option flags; the structure may parsed by the program and printed in a readable format if it is a known structure, displayed in hex, or the raw buffer may be printed to stdout for another program to parse\&.
.SH "OPTIONS"
.PP
\-n <nsid>, \-\-namespace\-id=<nsid>
.RS 4
Retrieve the feature for the given nsid\&. This is optional and most features do not use this value\&.
.RE
.PP
\-f <fid>, \-\-feature\-id=<fid>
.RS 4
The feature id to send with the command\&. Value provided should be in hex\&.
.RE
.PP
\-s <select>, \-\-sel=<select>
.RS 4
Select (SEL): This field specifies which value of the attributes to return in the provided data:
.TS
allbox tab(:);
lt lt
lt lt
lt lt
lt lt
lt lt
lt lt.
T{
Select
T}:T{
Description
T}
T{
0
T}:T{
Current
T}
T{
1
T}:T{
Default
T}
T{
2
T}:T{
Saved
T}
T{
3
T}:T{
Supported capabilities
T}
T{
4\(en7
T}:T{
Reserved
T}
.TE
.sp 1
.RE
.PP
\-U <uuid\-index>, \-\-uuid\-index=<uuid\-index>
.RS 4
UUID Index of the feature
.RE
.PP
\-l <data\-len>, \-\-data\-len=<data\-len>
.RS 4
The data length for the buffer returned for this feature\&. Most known features do not use this value\&. The exception is LBA Range Type
.RE
.PP
\-\-cdw11=<cdw11>
.RS 4
The value for command dword 11, if applicable\&.
.RE
.PP
\-b, \-\-raw\-binary
.RS 4
Print the raw feature buffer to stdout if the feature returns a structure\&.
.RE
.PP
\-H, \-\-human\-readable
.RS 4
This option will parse and format many of the bit fields into human\-readable formats\&.
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Retrieves the feature for Number of Queues, or feature id 7:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme get\-feature /dev/nvme0 \-f 7
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
The following retrieves the feature for the LBA Range Type, which implicitly requires a buffer and will be printed to the screen in human readable format:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme get\-feature /dev/nvme0 \-f 3
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Retrieves the feature for the some vendor specific feature and specifically requesting a buffer be allocate for this feature, which will be displayed to the user in as a hex dump:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme get\-feature /dev/nvme0 \-f 0xc0 \-l 512
.fi
.if n \{\
.RE
.\}
.sp
Get feature with UUID index
.RE
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme get\-feature /dev/nvme0 \-f 0xc0 \-l 512 \-U 0x1
.fi
.if n \{\
.RE
.\}
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
The following retrieves the feature for the LBA Range Type, which implicitly requires a buffer and will be saved to a file in its raw format:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme get\-feature /dev/nvme0 \-f 3 \-\-raw\-binary > lba_range\&.raw
.fi
.if n \{\
.RE
.\}
.sp
It is probably a bad idea to not redirect stdout when using this mode\&.
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite
  070701015D6D1B000081A4000003E80000006400000001642C0FB6000059F9000000000000004A00000000000000000000002D00000000nvme-cli/Documentation/nvme-get-feature.html  <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-get-feature(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-get-feature(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-get-feature -
   Gets an NVMe feature, returns applicable results
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme get-feature</em> &lt;device&gt; [--namespace-id=&lt;nsid&gt; | -n &lt;nsid&gt;]
                          [--feature-id=&lt;fid&gt; | -f &lt;fid&gt;] [--cdw11=&lt;cdw11&gt;]
                          [--uuid-index=&lt;uuid-index&gt; | -U &lt;uuid_index&gt;]
                          [--data-len=&lt;data-len&gt; | -l &lt;data-len&gt;]
                          [--sel=&lt;select&gt; | -s &lt;select&gt;]
                          [--raw-binary | -b]
                          [--human-readable | -H]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>Submits an NVMe Get Feature admin command and returns the applicable
results. This may be the feature&#8217;s value, or may also include a feature
structure if the feature requires it (ex: LBA Range Type).</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).</p></div>
<div class="paragraph"><p>On success, the returned feature&#8217;s structure (if applicable) may be
returned in one of several ways depending on the option flags; the
structure may parsed by the program and printed in a readable format
if it is a known structure, displayed in hex, or the raw buffer may be
printed to stdout for another program to parse.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-n &lt;nsid&gt;
</dt>
<dt class="hdlist1">
--namespace-id=&lt;nsid&gt;
</dt>
<dd>
<p>
        Retrieve the feature for the given nsid. This is optional and
        most features do not use this value.
</p>
</dd>
<dt class="hdlist1">
-f &lt;fid&gt;
</dt>
<dt class="hdlist1">
--feature-id=&lt;fid&gt;
</dt>
<dd>
<p>
        The feature id to send with the command. Value provided should
        be in hex.
</p>
</dd>
<dt class="hdlist1">
-s &lt;select&gt;
</dt>
<dt class="hdlist1">
--sel=&lt;select&gt;
</dt>
<dd>
<p>
        Select (SEL): This field specifies which value of the attributes
        to return in the provided data:
</p>
<div class="tableblock">
<table rules="all"
width="100%"
frame="border"
cellspacing="0" cellpadding="4">
<col width="50%" />
<col width="50%" />
<tbody>
<tr>
<td align="left" valign="top"><p class="table">Select</p></td>
<td align="left" valign="top"><p class="table">Description</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">0</p></td>
<td align="left" valign="top"><p class="table">Current</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">1</p></td>
<td align="left" valign="top"><p class="table">Default</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">2</p></td>
<td align="left" valign="top"><p class="table">Saved</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">3</p></td>
<td align="left" valign="top"><p class="table">Supported capabilities</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">4â€“7</p></td>
<td align="left" valign="top"><p class="table">Reserved</p></td>
</tr>
</tbody>
</table>
</div>
</dd>
<dt class="hdlist1">
-U &lt;uuid-index&gt;
</dt>
<dt class="hdlist1">
--uuid-index=&lt;uuid-index&gt;
</dt>
<dd>
<p>
        UUID Index of the feature
</p>
</dd>
<dt class="hdlist1">
-l &lt;data-len&gt;
</dt>
<dt class="hdlist1">
--data-len=&lt;data-len&gt;
</dt>
<dd>
<p>
        The data length for the buffer returned for this feature. Most
        known features do not use this value. The exception is LBA
        Range Type
</p>
</dd>
<dt class="hdlist1">
--cdw11=&lt;cdw11&gt;
</dt>
<dd>
<p>
        The value for command dword 11, if applicable.
</p>
</dd>
<dt class="hdlist1">
-b
</dt>
<dt class="hdlist1">
--raw-binary
</dt>
<dd>
<p>
        Print the raw feature buffer to stdout if the feature returns
        a structure.
</p>
</dd>
<dt class="hdlist1">
-H
</dt>
<dt class="hdlist1">
--human-readable
</dt>
<dd>
<p>
        This option will parse and format many of the bit fields
        into human-readable formats.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Retrieves the feature for Number of Queues, or feature id 7:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme get-feature /dev/nvme0 -f 7</code></pre>
</div></div>
</li>
<li>
<p>
The following retrieves the feature for the LBA Range Type, which
implicitly requires a buffer and will be printed to the screen in human
readable format:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme get-feature /dev/nvme0 -f 3</code></pre>
</div></div>
</li>
<li>
<p>
Retrieves the feature for the some vendor specific feature and
specifically requesting a buffer be allocate for this feature, which
will be displayed to the user in as a hex dump:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme get-feature /dev/nvme0 -f 0xc0 -l 512</code></pre>
</div></div>
<div class="paragraph"><p>Get feature with UUID index</p></div>
</li>
</ul></div>
<div class="listingblock">
<div class="content">
<pre><code># nvme get-feature /dev/nvme0 -f 0xc0 -l 512 -U 0x1</code></pre>
</div></div>
<div class="ulist"><ul>
<li>
<p>
The following retrieves the feature for the LBA Range Type, which
implicitly requires a buffer and will be saved to a file in its raw
format:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme get-feature /dev/nvme0 -f 3 --raw-binary &gt; lba_range.raw</code></pre>
</div></div>
<div class="paragraph"><p>It is probably a bad idea to not redirect stdout when using this mode.</p></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
   070701015D6D1C000081A4000003E80000006400000001642C0FB600000FB5000000000000004A00000000000000000000002D00000000nvme-cli/Documentation/nvme-get-lba-status.1  '\" t
.\"     Title: nvme-get-lba-status
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-GET\-LBA\-STAT" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-get-lba-status \- Get LBA Status from NVMe device
.SH "SYNOPSIS"
.sp
.nf
\fInvme get\-lba\-status\fR <device> [\-\-namespace\-id=<nsid> | \-n <nsid>]
                    [\-\-start\-lba=<slba> | \-s <slba>]
                    [\-\-max\-dw=<max\-dw> | \-m <max\-dw>]
                    [\-\-action=<action\-type> | \-a <action\-type>]
                    [\-\-range\-len=<range\-len> | \-l <range\-len>]
                    [\-\-timeout=<timeout> | \-t <timeout> ]
                   [\-\-output\-format=<format> | \-o <format>]
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, send an nvme Get LBA Status admin command and provides the results\&.
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1)\&.
.sp
On success, the returned get lba data structure may be returned in one of several ways depending on the option flags; the structure may parsed by the program and printed in a readable format or the raw buffer may be printed to stdout for another program to parse\&.
.SH "OPTIONS"
.PP
\-n <nsid>, \-\-namespace\-id=<nsid>
.RS 4
Send the Get LBA Status command for the specified nsid\&. This can be used to override the default value for either character device (unspecified) or the block device (result from NVME_IOCTL_ID)\&.
.RE
.PP
\-s <slba>, \-\-start\-lba=<slba>
.RS 4
Starting LBA(SLBA) in 64\-bit address of the first logical block addressed
.RE
.PP
\-m <max\-dw>, \-\-max\-dw=<max\-dw>
.RS 4
Maximum Number of Dwords(MNDW) specifies maximum number of dwords to return
.RE
.PP
\-a <action\-type>, \-\-action=<action\-type>
.RS 4
Action Type(ATYPE) specifies the mechanism it uses in determining the LBA Status Descriptors\&.
.RE
.PP
\-l <range\-len>, \-\-range\-len=<range\-len>
.RS 4
Range Length(RL) specifies the length of the range of contiguous LBAs beginning at SLBA
.RE
.PP
\-t <timeout>, \-\-timeout=<timeout>
.RS 4
Override default timeout value\&. In milliseconds\&.
.RE
.PP
\-o <format>, \-\-output\-format=<format>
.RS 4
Set the reporting format to
\fInormal\fR,
\fIjson\fR, or
\fIbinary\fR\&. Only one output format can be used at a time\&.
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Get the LBA Status of the device using all defaults:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme get\-lba\-status /dev/nvme0n1
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Get LBA Status of the namespace 1 from SLBA 10 for the max Dwords of 0x1000
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme get\-lba\-status /dev/nvme0 \-\-namespace\-id=1 \-\-start\-lba=10 \-\-max\-dw=0x1000
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite
   070701015D6D1D000081A4000003E80000006400000001642C0FB600005121000000000000004A00000000000000000000003000000000nvme-cli/Documentation/nvme-get-lba-status.html   <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-get-lba-status(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-get-lba-status(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-get-lba-status -
   Get LBA Status from NVMe device
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme get-lba-status</em> &lt;device&gt; [--namespace-id=&lt;nsid&gt; | -n &lt;nsid&gt;]
                    [--start-lba=&lt;slba&gt; | -s &lt;slba&gt;]
                    [--max-dw=&lt;max-dw&gt; | -m &lt;max-dw&gt;]
                    [--action=&lt;action-type&gt; | -a &lt;action-type&gt;]
                    [--range-len=&lt;range-len&gt; | -l &lt;range-len&gt;]
                    [--timeout=&lt;timeout&gt; | -t &lt;timeout&gt; ]
                   [--output-format=&lt;format&gt; | -o &lt;format&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, send an nvme Get LBA Status admin command
and provides the results.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).</p></div>
<div class="paragraph"><p>On success, the returned get lba data structure may be returned in one of
several ways depending on the option flags; the structure may parsed by
the program and printed in a readable format or the raw buffer may be
printed to stdout for another program to parse.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-n &lt;nsid&gt;
</dt>
<dt class="hdlist1">
--namespace-id=&lt;nsid&gt;
</dt>
<dd>
<p>
        Send the Get LBA Status command for the specified nsid. This can be
        used to override the default value for either character device
        (unspecified) or the block device (result from NVME_IOCTL_ID).
</p>
</dd>
<dt class="hdlist1">
-s &lt;slba&gt;
</dt>
<dt class="hdlist1">
--start-lba=&lt;slba&gt;
</dt>
<dd>
<p>
        Starting LBA(SLBA) in 64-bit address of the first logical block addressed
</p>
</dd>
<dt class="hdlist1">
-m &lt;max-dw&gt;
</dt>
<dt class="hdlist1">
--max-dw=&lt;max-dw&gt;
</dt>
<dd>
<p>
        Maximum Number of Dwords(MNDW) specifies maximum number of dwords to return
</p>
</dd>
<dt class="hdlist1">
-a &lt;action-type&gt;
</dt>
<dt class="hdlist1">
--action=&lt;action-type&gt;
</dt>
<dd>
<p>
        Action Type(ATYPE) specifies the mechanism it uses in determining the LBA Status Descriptors.
</p>
</dd>
<dt class="hdlist1">
-l &lt;range-len&gt;
</dt>
<dt class="hdlist1">
--range-len=&lt;range-len&gt;
</dt>
<dd>
<p>
        Range Length(RL) specifies the length of the range of contiguous LBAs beginning at SLBA
</p>
</dd>
<dt class="hdlist1">
-t &lt;timeout&gt;
</dt>
<dt class="hdlist1">
--timeout=&lt;timeout&gt;
</dt>
<dd>
<p>
        Override default timeout value. In milliseconds.
</p>
</dd>
<dt class="hdlist1">
-o &lt;format&gt;
</dt>
<dt class="hdlist1">
--output-format=&lt;format&gt;
</dt>
<dd>
<p>
              Set the reporting format to <em>normal</em>, <em>json</em>, or
              <em>binary</em>. Only one output format can be used at a time.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Get the LBA Status of the device using all defaults:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme get-lba-status /dev/nvme0n1</code></pre>
</div></div>
</li>
<li>
<p>
Get LBA Status of the namespace 1 from SLBA 10 for the max Dwords of 0x1000
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme get-lba-status /dev/nvme0 --namespace-id=1 --start-lba=10 --max-dw=0x1000</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
   070701015D6D1E000081A4000003E80000006400000001642C0FB600001523000000000000004A00000000000000000000002600000000nvme-cli/Documentation/nvme-get-log.1 '\" t
.\"     Title: nvme-get-log
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-GET\-LOG" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-get-log \- Retrieves a log page from an NVMe device
.SH "SYNOPSIS"
.sp
.nf
\fInvme get\-log\fR <device> [\-\-log\-id=<log\-id> | \-i <log\-id>]
              [\-\-log\-len=<log\-len> | \-l <log\-len>]
              [\-\-aen=<aen> | \-a <aen>]
              [\-\-namespace\-id=<nsid> | \-n <nsid>]
              [\-\-raw\-binary | \-b]
              [\-\-lpo=<offset> | \-o <offset>]
              [\-\-lsp=<field> | \-s <field>]
              [\-\-lsi=<field> | \-S <field>]
              [\-\-rae | \-r]
              [\-\-csi=<command_set_identifier> | \-y <command_set_identifier>]
              [\-\-ot=<offset_type> | \-O <offset_type>]
                    [\-\-xfer\-len=<length> | \-x <length>]
.fi
.SH "DESCRIPTION"
.sp
Retrieves an arbitrary NVMe log page from an NVMe device and provides the returned structure\&.
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1)\&.
.sp
On success, the returned log structure may be returned in one of several ways depending on the option flags; the structure may be displayed in hex by the program or the raw buffer may be printed to stdout for another program to parse\&.
.SH "OPTIONS"
.PP
\-l <log\-len>, \-\-log\-len=<log\-len>
.RS 4
Allocates a buffer of <log\-len> bytes size and requests this many bytes be returned in the constructed NVMe command\&. This param is mandatory\&.
.RE
.PP
\-i <log\-id>, \-\-log\-id=<log\-id>
.RS 4
Sets the commands requested log\-id to <log\-id>\&. Defaults to 0\&.
.RE
.PP
\-a <aen>, \-\-aen=<aen>
.RS 4
Convenience field for extracting log information based on an asynchronous event notification result\&. This will override log\-id and log\-len, if set\&.
.RE
.PP
\-n <nsid>, \-\-namespace\-id=<nsid>
.RS 4
Sets the command\(cqs nsid value to the given nsid\&. Defaults to 0xffffffff if not given\&. This option may not affect anything depending on the log page, which may or may not be specific to a namespace\&.
.RE
.PP
\-b, \-\-raw\-binary
.RS 4
Print the raw log buffer to stdout\&.
.RE
.PP
\-o <offset>, \-\-lpo=<offset>
.RS 4
The log page offset specifies the location within a log page to start returning data from\&. It\(cqs Dword\-aligned and 64\-bits\&.
.RE
.PP
\-s <field>, \-\-lsp=<field>
.RS 4
The log specified field of LID\&.
.RE
.PP
\-S <field>, \-\-lsi=<field>
.RS 4
The log specified field of Log Specific Identifier\&.
.RE
.PP
\-r, \-\-rae
.RS 4
Retain an Asynchronous Event\&.
.RE
.PP
\-y <command_set_identifier>, \-\-csi=<command_set_identifier>
.RS 4
This field specifies the identifier of command set\&. if not issued, NVM Command Set will be selected\&.
.RE
.PP
\-O, \-\-ot
.RS 4
This field specifies the offset type\&. If set to false, the Log Page Offset Lower field and the Log Page Offset Upper field specify the byte offset into the log page to be returned\&. If set to true, the Log Page Offset Lower field and the Log Page Offset Upper field specify the index into the list of data structures in the log page to be returned\&. The default is byte offset\&. If the option is specified the index mode is used\&.
.RE
.PP
\-x <length>
.RS 4
\-\-xfer\-len <length>: Specify the read chunk size\&. The length argument is expected to be a multiple of 4096\&. The default size is 4096\&.
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Get 512 bytes from log page 2
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme get\-log /dev/nvme0 \-\-log\-id=2 \-\-log\-len=512
.fi
.if n \{\
.RE
.\}
.sp
The above example will get log page 2 (SMART), and request 512 bytes\&. On success, the returned log will be dumped in hex and not interpreted by the program\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Have the program return the raw log page in binary:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme get\-log /dev/nvme0 \-log\-id=2 \-\-log\-len=512 \-\-raw\-binary > log_page_2\&.raw
# nvme get\-log /dev/nvme0 \-i 2 \-l 512 \-b > log_page_2\&.raw
.fi
.if n \{\
.RE
.\}
.sp
It is not a good idea to not redirect stdout when using this mode\&.
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite
 070701015D6D1F000081A4000003E80000006400000001642C0FB6000058AB000000000000004A00000000000000000000002900000000nvme-cli/Documentation/nvme-get-log.html  <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-get-log(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-get-log(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-get-log -
   Retrieves a log page from an NVMe device
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme get-log</em> &lt;device&gt; [--log-id=&lt;log-id&gt; | -i &lt;log-id&gt;]
              [--log-len=&lt;log-len&gt; | -l &lt;log-len&gt;]
              [--aen=&lt;aen&gt; | -a &lt;aen&gt;]
              [--namespace-id=&lt;nsid&gt; | -n &lt;nsid&gt;]
              [--raw-binary | -b]
              [--lpo=&lt;offset&gt; | -o &lt;offset&gt;]
              [--lsp=&lt;field&gt; | -s &lt;field&gt;]
              [--lsi=&lt;field&gt; | -S &lt;field&gt;]
              [--rae | -r]
              [--csi=&lt;command_set_identifier&gt; | -y &lt;command_set_identifier&gt;]
              [--ot=&lt;offset_type&gt; | -O &lt;offset_type&gt;]
                    [--xfer-len=&lt;length&gt; | -x &lt;length&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>Retrieves an arbitrary NVMe log page from an NVMe device and provides
the returned structure.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).</p></div>
<div class="paragraph"><p>On success, the returned log structure may be returned in one of several
ways depending on the option flags; the structure may be displayed in
hex by the program or the raw buffer may be printed to stdout for another
program to parse.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-l &lt;log-len&gt;
</dt>
<dt class="hdlist1">
--log-len=&lt;log-len&gt;
</dt>
<dd>
<p>
        Allocates a buffer of &lt;log-len&gt; bytes size and requests this
        many bytes be returned in the constructed NVMe command. This
        param is mandatory.
</p>
</dd>
<dt class="hdlist1">
-i &lt;log-id&gt;
</dt>
<dt class="hdlist1">
--log-id=&lt;log-id&gt;
</dt>
<dd>
<p>
        Sets the commands requested log-id to &lt;log-id&gt;. Defaults to 0.
</p>
</dd>
<dt class="hdlist1">
-a &lt;aen&gt;
</dt>
<dt class="hdlist1">
--aen=&lt;aen&gt;
</dt>
<dd>
<p>
        Convenience field for extracting log information based on an
        asynchronous event notification result. This will override log-id and
        log-len, if set.
</p>
</dd>
<dt class="hdlist1">
-n &lt;nsid&gt;
</dt>
<dt class="hdlist1">
--namespace-id=&lt;nsid&gt;
</dt>
<dd>
<p>
        Sets the command&#8217;s nsid value to the given nsid. Defaults to
        0xffffffff if not given. This option may not affect anything
        depending on the log page, which may or may not be specific to
        a namespace.
</p>
</dd>
<dt class="hdlist1">
-b
</dt>
<dt class="hdlist1">
--raw-binary
</dt>
<dd>
<p>
        Print the raw log buffer to stdout.
</p>
</dd>
<dt class="hdlist1">
-o &lt;offset&gt;
</dt>
<dt class="hdlist1">
--lpo=&lt;offset&gt;
</dt>
<dd>
<p>
        The log page offset specifies the location within a log page to start
        returning data from. It&#8217;s Dword-aligned and 64-bits.
</p>
</dd>
<dt class="hdlist1">
-s &lt;field&gt;
</dt>
<dt class="hdlist1">
--lsp=&lt;field&gt;
</dt>
<dd>
<p>
        The log specified field of LID.
</p>
</dd>
<dt class="hdlist1">
-S &lt;field&gt;
</dt>
<dt class="hdlist1">
--lsi=&lt;field&gt;
</dt>
<dd>
<p>
        The log specified field of Log Specific Identifier.
</p>
</dd>
<dt class="hdlist1">
-r
</dt>
<dt class="hdlist1">
--rae
</dt>
<dd>
<p>
        Retain an Asynchronous Event.
</p>
</dd>
<dt class="hdlist1">
-y &lt;command_set_identifier&gt;
</dt>
<dt class="hdlist1">
--csi=&lt;command_set_identifier&gt;
</dt>
<dd>
<p>
        This field specifies the identifier of command set.
        if not issued, NVM Command Set will be selected.
</p>
</dd>
<dt class="hdlist1">
-O
</dt>
<dt class="hdlist1">
--ot
</dt>
<dd>
<p>
        This field specifies the offset type. If set to false, the
        Log Page Offset Lower field and the Log Page Offset Upper
        field specify the byte offset into the log page to be returned.
        If set to true, the Log Page Offset Lower field and the Log
        Page Offset Upper field specify the index into the list of
        data structures in the log page to be returned.
        The default is byte offset. If the option is specified
        the index mode is used.
</p>
</dd>
<dt class="hdlist1">
-x &lt;length&gt;
</dt>
<dd>
<p>
--xfer-len &lt;length&gt;:
        Specify the read chunk size. The length argument is expected to be
        a multiple of 4096. The default size is 4096.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Get 512 bytes from log page 2
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme get-log /dev/nvme0 --log-id=2 --log-len=512</code></pre>
</div></div>
<div class="paragraph"><p>The above example will get log page 2 (SMART), and request 512
bytes. On success, the returned log will be dumped in hex and not
interpreted by the program.</p></div>
</li>
<li>
<p>
Have the program return the raw log page in binary:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme get-log /dev/nvme0 -log-id=2 --log-len=512 --raw-binary &gt; log_page_2.raw
# nvme get-log /dev/nvme0 -i 2 -l 512 -b &gt; log_page_2.raw</code></pre>
</div></div>
<div class="paragraph"><p>It is not a good idea to not redirect stdout when using this mode.</p></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
 070701015D6D20000081A4000003E80000006400000001642C0FB600000E29000000000000004A00000000000000000000002800000000nvme-cli/Documentation/nvme-get-log.txt   nvme-get-log(1)
===============

NAME
----
nvme-get-log - Retrieves a log page from an NVMe device

SYNOPSIS
--------
[verse]
'nvme get-log' <device> [--log-id=<log-id> | -i <log-id>]
	      [--log-len=<log-len> | -l <log-len>]
	      [--aen=<aen> | -a <aen>]
	      [--namespace-id=<nsid> | -n <nsid>]
	      [--raw-binary | -b]
	      [--lpo=<offset> | -o <offset>]
	      [--lsp=<field> | -s <field>]
	      [--lsi=<field> | -S <field>]
	      [--rae | -r]
	      [--csi=<command_set_identifier> | -y <command_set_identifier>]
	      [--ot=<offset_type> | -O <offset_type>]
		    [--xfer-len=<length> | -x <length>]

DESCRIPTION
-----------
Retrieves an arbitrary NVMe log page from an NVMe device and provides
the returned structure.

The <device> parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).

On success, the returned log structure may be returned in one of several
ways depending on the option flags; the structure may be displayed in
hex by the program or the raw buffer may be printed to stdout for another
program to parse.

OPTIONS
-------
-l <log-len>::
--log-len=<log-len>::
	Allocates a buffer of <log-len> bytes size and requests this
	many bytes be returned in the constructed NVMe command. This
	param is mandatory.

-i <log-id>::
--log-id=<log-id>::
	Sets the commands requested log-id to <log-id>. Defaults to 0.

-a <aen>::
--aen=<aen>::
	Convenience field for extracting log information based on an
	asynchronous event notification result. This will override log-id and
	log-len, if set.

-n <nsid>::
--namespace-id=<nsid>::
	Sets the command's nsid value to the given nsid. Defaults to
	0xffffffff if not given. This option may not affect anything
	depending on the log page, which may or may not be specific to
	a namespace.

-b::
--raw-binary::
	Print the raw log buffer to stdout.

-o <offset>::
--lpo=<offset>::
	The log page offset specifies the location within a log page to start
	returning data from. It's Dword-aligned and 64-bits.

-s <field>::
--lsp=<field>::
	The log specified field of LID.

-S <field>::
--lsi=<field>::
	The log specified field of Log Specific Identifier.

-r::
--rae::
	Retain an Asynchronous Event.

-y <command_set_identifier>::
--csi=<command_set_identifier>::
	This field specifies the identifier of command set.
	if not issued, NVM Command Set will be selected.

-O::
--ot::
	This field specifies the offset type. If set to false, the
	Log Page Offset Lower field and the Log Page Offset Upper
	field specify the byte offset into the log page to be returned.
	If set to true, the Log Page Offset Lower field and the Log
	Page Offset Upper field specify the index into the list of
	data structures in the log page to be returned.
	The default is byte offset. If the option is specified
	the index mode is used.

-x <length>::
--xfer-len <length>:
	Specify the read chunk size. The length argument is expected to be
	a multiple of 4096. The default size is 4096.

EXAMPLES
--------
* Get 512 bytes from log page 2
+
------------
# nvme get-log /dev/nvme0 --log-id=2 --log-len=512
------------
+
The above example will get log page 2 (SMART), and request 512
bytes. On success, the returned log will be dumped in hex and not
interpreted by the program.

* Have the program return the raw log page in binary:
+
------------
# nvme get-log /dev/nvme0 -log-id=2 --log-len=512 --raw-binary > log_page_2.raw
# nvme get-log /dev/nvme0 -i 2 -l 512 -b > log_page_2.raw
------------
+
It is not a good idea to not redirect stdout when using this mode.

NVME
----
Part of the nvme-user suite
   070701015D6D21000081A4000003E80000006400000001642C0FB600000735000000000000004A00000000000000000000002800000000nvme-cli/Documentation/nvme-get-ns-id.1   '\" t
.\"     Title: nvme-get-ns-id
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-GET\-NS\-ID" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-get-ns-id \- Retrieves the namespace ID for an NVMe block device
.SH "SYNOPSIS"
.sp
.nf
\fInvme get\-ns\-id\fR <device>
.fi
.SH "DESCRIPTION"
.sp
Retrieves the namespace ID for an NVMe block device\&. The <device> param is mandatory and must be an NVMe block device (ex: /dev/nvme0n1)\&.
.SH "OPTIONS"
.sp
None
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Shows the namespace id for the given block device:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme get\-ns\-id /dev/nvme0n1
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite
   070701015D6D22000081A4000003E80000006400000001642C0FB6000045C0000000000000004A00000000000000000000002B00000000nvme-cli/Documentation/nvme-get-ns-id.html    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-get-ns-id(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-get-ns-id(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-get-ns-id -
   Retrieves the namespace ID for an NVMe block device
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme get-ns-id</em> &lt;device&gt;</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>Retrieves the namespace ID for an NVMe block device. The &lt;device&gt; param
is mandatory and must be an NVMe block device (ex: /dev/nvme0n1).</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="paragraph"><p>None</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Shows the namespace id for the given block device:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme get-ns-id /dev/nvme0n1</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
070701015D6D23000081A4000003E80000006400000001642C0FB600000ACB000000000000004A00000000000000000000002B00000000nvme-cli/Documentation/nvme-get-property.1    '\" t
.\"     Title: nvme-get-property
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-GET\-PROPERTY" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-get-property \- Reads and shows the defined NVMe controller property for NVMe over Fabric
.SH "SYNOPSIS"
.sp
.nf
\fInvme get\-property\fR <device> [\-\-offset=<offset> | \-o <offset>]
                                [\-\-human\-readable | \-H ]
.fi
.SH "DESCRIPTION"
.sp
Reads and shows the defined NVMe controller property for NVMe over Fabric\&.
.SH "OPTIONS"
.PP
\-o, \-\-offset
.RS 4
The offset of the property\&. One of CAP=0x0, VS=0x8, CC=0x14, CSTS=0x1c, NSSR=0x20
.RE
.PP
\-H
.RS 4
\-\-human\-readable: Show the fields packed in the property
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
The following will run the get\-property command with offset 0
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme get\-property /dev/nvme0 \-\-offset=0x0 \-\-human\-readable
.fi
.if n \{\
.RE
.\}
.RE
.SH "BUGS"
.sp
Currently the CAP value is truncated to 32 bits due to a limitation in the ioctl interface\&.
.sp
In a recent enough kernel, the 64 bit value is shown in kernel traces\&.
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
First enable traces by this command
.sp
.if n \{\
.RS 4
.\}
.nf
# echo 1 > /sys/kernel/debug/tracing/events/nvme/enable
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Then look for NVMe Fabrics command (0x7f) at trace
.sp
.if n \{\
.RS 4
.\}
.nf
/sys/kernel/debug/tracing/trace
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite
 070701015D6D24000081A4000003E80000006400000001642C0FB600004A67000000000000004A00000000000000000000002E00000000nvme-cli/Documentation/nvme-get-property.html <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-get-property(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-get-property(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-get-property -
   Reads and shows the defined NVMe controller property for NVMe over Fabric
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme get-property</em> &lt;device&gt; [--offset=&lt;offset&gt; | -o &lt;offset&gt;]
                                [--human-readable | -H ]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>Reads and shows the defined NVMe controller property for NVMe over Fabric.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-o
</dt>
<dt class="hdlist1">
--offset
</dt>
<dd>
<p>
        The offset of the property. One of CAP=0x0, VS=0x8, CC=0x14, CSTS=0x1c, NSSR=0x20
</p>
</dd>
<dt class="hdlist1">
-H
</dt>
<dd>
<p>
--human-readable:
        Show the fields packed in the property
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
The following will run the get-property command with offset 0
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme get-property /dev/nvme0 --offset=0x0 --human-readable</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_bugs">BUGS</h2>
<div class="sectionbody">
<div class="paragraph"><p>Currently the CAP value is truncated to 32 bits due to a limitation in
the ioctl interface.</p></div>
<div class="paragraph"><p>In a recent enough kernel, the 64 bit value is shown in kernel traces.</p></div>
<div class="ulist"><ul>
<li>
<p>
First enable traces by this command
</p>
<div class="listingblock">
<div class="content">
<pre><code># echo 1 &gt; /sys/kernel/debug/tracing/events/nvme/enable</code></pre>
</div></div>
</li>
<li>
<p>
Then look for NVMe Fabrics command (0x7f) at trace
</p>
<div class="listingblock">
<div class="content">
<pre><code>/sys/kernel/debug/tracing/trace</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
 070701015D6D25000081A4000003E80000006400000001642C0FB6000006C9000000000000004A00000000000000000000002300000000nvme-cli/Documentation/nvme-help.1    '\" t
.\"     Title: nvme-help
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-HELP" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-help \- Help information\&.
.SH "SYNOPSIS"
.sp
.nf
\fInvme help\fR [<command>]
.fi
.SH "DESCRIPTION"
.sp
Provides help information, with detailed information about the given command if provided\&.
.SH "OPTIONS"
.sp
No Options
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Show help for nvme smart log:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme help smart\-log
.fi
.if n \{\
.RE
.\}
.sp
Not much to it
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite
   070701015D6D26000081A4000003E80000006400000001642C0FB600004573000000000000004A00000000000000000000002600000000nvme-cli/Documentation/nvme-help.html <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-help(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-help(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-help -
   Help information.
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme help</em> [&lt;command&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>Provides help information, with detailed information about the given command if provided.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="paragraph"><p>No Options</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Show help for nvme smart log:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme help smart-log</code></pre>
</div></div>
<div class="paragraph"><p>Not much to it</p></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
 070701015D6D27000081A4000003E80000006400000001642C0FB600000CB2000000000000004A00000000000000000000002D00000000nvme-cli/Documentation/nvme-huawei-id-ctrl.1  '\" t
.\"     Title: nvme-huawei-id-ctrl
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-HUAWEI\-ID\-CT" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-huawei-id-ctrl \- Send NVMe Identify Controller, return result and structure
.SH "SYNOPSIS"
.sp
.nf
\fInvme huawei id\-ctrl\fR <device> [\-v | \-\-vendor\-specific] [\-b | \-\-raw\-binary]
                        [\-o <fmt> | \-\-output\-format=<fmt>]
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, sends an identify controller command and provides the result and returned structure\&.
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1)\&.
.sp
This will only work on Huawei devices supporting this feature\&. Results for any other device are undefined\&.
.sp
On success, the structure may be returned in one of several ways depending on the option flags; the structure may be parsed by the program or the raw buffer may be printed to stdout\&.
.sp
If having the program decode the output for readability, this version will decode Huawei vendor unique portions of the structure\&.
.SH "OPTIONS"
.PP
\-b, \-\-raw\-binary
.RS 4
Print the raw buffer to stdout\&. Structure is not parsed by program\&. This overrides the vendor specific and human readable options\&.
.RE
.PP
\-v, \-\-vendor\-specific
.RS 4
In addition to parsing known fields, this option will dump the vendor specific region of the structure in hex with ascii interpretation\&.
.RE
.PP
\-H, \-\-human\-readable
.RS 4
This option will parse and format many of the bit fields into human\-readable formats\&.
.RE
.PP
\-o <format>, \-\-output\-format=<format>
.RS 4
Set the reporting format to
\fInormal\fR,
\fIjson\fR, or
\fIbinary\fR\&. Only one output format can be used at a time\&.
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Has the program interpret the returned buffer and display the known fields in a human readable format:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme huawei id\-ctrl /dev/nvme0
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite
  070701015D6D28000081A4000003E80000006400000001642C0FB600004D30000000000000004A00000000000000000000003000000000nvme-cli/Documentation/nvme-huawei-id-ctrl.html   <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-huawei-id-ctrl(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-huawei-id-ctrl(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-huawei-id-ctrl -
   Send NVMe Identify Controller, return result and structure
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme huawei id-ctrl</em> &lt;device&gt; [-v | --vendor-specific] [-b | --raw-binary]
                        [-o &lt;fmt&gt; | --output-format=&lt;fmt&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, sends an identify controller command and
provides the result and returned structure.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).</p></div>
<div class="paragraph"><p>This will only work on Huawei devices supporting this feature.
Results for any other device are undefined.</p></div>
<div class="paragraph"><p>On success, the structure may be returned in one of several ways depending
on the option flags; the structure may be parsed by the program or the
raw buffer may be printed to stdout.</p></div>
<div class="paragraph"><p>If having the program decode the output for readability, this version
will decode Huawei vendor unique portions of the structure.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-b
</dt>
<dt class="hdlist1">
--raw-binary
</dt>
<dd>
<p>
        Print the raw buffer to stdout. Structure is not parsed by
        program. This overrides the vendor specific and human readable options.
</p>
</dd>
<dt class="hdlist1">
-v
</dt>
<dt class="hdlist1">
--vendor-specific
</dt>
<dd>
<p>
        In addition to parsing known fields, this option will dump
        the vendor specific region of the structure in hex with ascii
        interpretation.
</p>
</dd>
<dt class="hdlist1">
-H
</dt>
<dt class="hdlist1">
--human-readable
</dt>
<dd>
<p>
        This option will parse and format many of the bit fields
        into human-readable formats.
</p>
</dd>
<dt class="hdlist1">
-o &lt;format&gt;
</dt>
<dt class="hdlist1">
--output-format=&lt;format&gt;
</dt>
<dd>
<p>
              Set the reporting format to <em>normal</em>, <em>json</em>, or
              <em>binary</em>. Only one output format can be used at a time.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Has the program interpret the returned buffer and display the known
fields in a human readable format:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme huawei id-ctrl /dev/nvme0</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
070701015D6D29000081A4000003E80000006400000001642C0FB60000071B000000000000004A00000000000000000000002A00000000nvme-cli/Documentation/nvme-huawei-list.1 '\" t
.\"     Title: nvme-list
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-LIST" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-huawei-list \- List all recognized Huawei NVMe devices
.SH "SYNOPSIS"
.sp
.nf
\fInvme huawei list\fR [\-o <fmt> | \-\-output\-format=<fmt>]
.fi
.SH "DESCRIPTION"
.sp
Scan the sysfs tree for NVM Express devices and return the /dev node for those Huawei devices as well as some pertinent information about them\&.
.SH "OPTIONS"
.PP
\-o <format>, \-\-output\-format=<format>
.RS 4
Set the reporting format to
\fInormal\fR
or
\fIjson\fR\&. Only one output format can be used at a time\&.
.RE
.SH "EXAMPLES"
.sp
No examples yet\&.
.SH "NVME"
.sp
Part of the nvme\-user suite
 070701015D6D2A000081A4000003E80000006400000001642C0FB600004619000000000000004A00000000000000000000002D00000000nvme-cli/Documentation/nvme-huawei-list.html  <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-list(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-list(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-huawei-list -
   List all recognized Huawei NVMe devices
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme huawei list</em> [-o &lt;fmt&gt; | --output-format=&lt;fmt&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>Scan the sysfs tree for NVM Express devices and return the /dev node
for those Huawei devices as well as some pertinent information about them.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-o &lt;format&gt;
</dt>
<dt class="hdlist1">
--output-format=&lt;format&gt;
</dt>
<dd>
<p>
        Set the reporting format to <em>normal</em> or <em>json</em>. Only one output
        format can be used at a time.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="paragraph"><p>No examples yet.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
   070701015D6D2B000081A4000003E80000006400000001642C0FB6000012E3000000000000004A00000000000000000000002600000000nvme-cli/Documentation/nvme-id-ctrl.1 '\" t
.\"     Title: nvme-id-ctrl
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-ID\-CTRL" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-id-ctrl \- Send NVMe Identify Controller, return result and structure
.SH "SYNOPSIS"
.sp
.nf
\fInvme id\-ctrl\fR <device> [\-v | \-\-vendor\-specific] [\-b | \-\-raw\-binary]
                        [\-o <fmt> | \-\-output\-format=<fmt>]
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, sends an identify controller command and provides the result and returned structure\&.
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1)\&.
.sp
On success, the structure may be returned in one of several ways depending on the option flags; the structure may be parsed by the program or the raw buffer may be printed to stdout\&.
.SH "OPTIONS"
.PP
\-b, \-\-raw\-binary
.RS 4
Print the raw buffer to stdout\&. Structure is not parsed by program\&. This overrides the vendor specific and human readable options\&.
.RE
.PP
\-v, \-\-vendor\-specific
.RS 4
In addition to parsing known fields, this option will dump the vendor specific region of the structure in hex with ascii interpretation\&.
.RE
.PP
\-H, \-\-human\-readable
.RS 4
This option will parse and format many of the bit fields into human\-readable formats\&.
.RE
.PP
\-o <format>, \-\-output\-format=<format>
.RS 4
Set the reporting format to
\fInormal\fR,
\fIjson\fR, or
\fIbinary\fR\&. Only one output format can be used at a time\&.
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Has the program interpret the returned buffer and display the known fields in a human readable format:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme id\-ctrl /dev/nvme0
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
In addition to showing the known fields, has the program to display the vendor unique field:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme id\-ctrl /dev/nvme0 \-\-vendor\-specific
# nvme id\-ctrl /dev/nvme0 \-v
.fi
.if n \{\
.RE
.\}
.sp
The above will dump the
\fIvs\fR
buffer in hex since it doesn\(cqt know how to interpret it\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Have the program return the raw structure in binary:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme id\-ctrl /dev/nvme0 \-\-raw\-binary > id_ctrl\&.raw
# nvme id\-ctrl /dev/nvme0 \-b > id_ctrl\&.raw
.fi
.if n \{\
.RE
.\}
.sp
It is probably a bad idea to not redirect stdout when using this mode\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Alternatively you may want to send the data to another program that can parse the raw buffer\&.
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme id\-ctrl /dev/nvme0 \-\-raw\-binary | nvme_parse_id_ctrl
.fi
.if n \{\
.RE
.\}
.sp
The parse program in the above example can be a program that shows the structure in a way you like\&. The following program is such an example that will parse it and can accept the output through a pipe,
\*(Aq|\*(Aq, as shown in the above example, or you can
\*(Aqcat\*(Aq
a saved output buffer to it\&.
.RE
.sp
.if n \{\
.RS 4
.\}
.nf
/* File: nvme_parse_id_ctrl\&.c */

#include <linux/nvme\&.h>
#include <stdio\&.h>
#include <unistd\&.h>

int main(int argc, char **argv)
{
        unsigned char buf[sizeof(struct nvme_id_ctrl)];
        struct nvme_id_ctrl *ctrl = (struct nvme_id_ctrl *)buf;

        if (read(STDIN_FILENO, buf, sizeof(buf)))
                return 1;

        printf("vid   : %#x\en", ctrl\->vid);
        printf("ssvid : %#x\en", ctrl\->ssvid);
        return 0;
}
.fi
.if n \{\
.RE
.\}
.SH "NVME"
.sp
Part of the nvme\-user suite
 070701015D6D2C000081A4000003E80000006400000001642C0FB60000539A000000000000004A00000000000000000000002900000000nvme-cli/Documentation/nvme-id-ctrl.html  <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-id-ctrl(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-id-ctrl(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-id-ctrl -
   Send NVMe Identify Controller, return result and structure
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme id-ctrl</em> &lt;device&gt; [-v | --vendor-specific] [-b | --raw-binary]
                        [-o &lt;fmt&gt; | --output-format=&lt;fmt&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, sends an identify controller command and
provides the result and returned structure.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).</p></div>
<div class="paragraph"><p>On success, the structure may be returned in one of several ways depending
on the option flags; the structure may be parsed by the program or the
raw buffer may be printed to stdout.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-b
</dt>
<dt class="hdlist1">
--raw-binary
</dt>
<dd>
<p>
        Print the raw buffer to stdout. Structure is not parsed by
        program. This overrides the vendor specific and human readable options.
</p>
</dd>
<dt class="hdlist1">
-v
</dt>
<dt class="hdlist1">
--vendor-specific
</dt>
<dd>
<p>
        In addition to parsing known fields, this option will dump
        the vendor specific region of the structure in hex with ascii
        interpretation.
</p>
</dd>
<dt class="hdlist1">
-H
</dt>
<dt class="hdlist1">
--human-readable
</dt>
<dd>
<p>
        This option will parse and format many of the bit fields
        into human-readable formats.
</p>
</dd>
<dt class="hdlist1">
-o &lt;format&gt;
</dt>
<dt class="hdlist1">
--output-format=&lt;format&gt;
</dt>
<dd>
<p>
              Set the reporting format to <em>normal</em>, <em>json</em>, or
              <em>binary</em>. Only one output format can be used at a time.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Has the program interpret the returned buffer and display the known
fields in a human readable format:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme id-ctrl /dev/nvme0</code></pre>
</div></div>
</li>
<li>
<p>
In addition to showing the known fields, has the program to display
the vendor unique field:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme id-ctrl /dev/nvme0 --vendor-specific
# nvme id-ctrl /dev/nvme0 -v</code></pre>
</div></div>
<div class="paragraph"><p>The above will dump the <em>vs</em> buffer in hex since it doesn&#8217;t know how to
interpret it.</p></div>
</li>
<li>
<p>
Have the program return the raw structure in binary:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme id-ctrl /dev/nvme0 --raw-binary &gt; id_ctrl.raw
# nvme id-ctrl /dev/nvme0 -b &gt; id_ctrl.raw</code></pre>
</div></div>
<div class="paragraph"><p>It is probably a bad idea to not redirect stdout when using this mode.</p></div>
</li>
<li>
<p>
Alternatively you may want to send the data to another program that
can parse the raw buffer.
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme id-ctrl /dev/nvme0 --raw-binary | nvme_parse_id_ctrl</code></pre>
</div></div>
<div class="paragraph"><p>The parse program in the above example can be a program that shows the
structure in a way you like. The following program is such an example
that will parse it and can accept the output through a pipe, <code>'|'</code>,
as shown in the above example, or you can <code>'cat'</code> a saved output buffer to it.</p></div>
</li>
</ul></div>
<div class="listingblock">
<div class="content">
<pre><code>/* File: nvme_parse_id_ctrl.c */

#include &lt;linux/nvme.h&gt;
#include &lt;stdio.h&gt;
#include &lt;unistd.h&gt;

int main(int argc, char **argv)
{
        unsigned char buf[sizeof(struct nvme_id_ctrl)];
        struct nvme_id_ctrl *ctrl = (struct nvme_id_ctrl *)buf;

        if (read(STDIN_FILENO, buf, sizeof(buf)))
                return 1;

        printf("vid   : %#x\n", ctrl-&gt;vid);
        printf("ssvid : %#x\n", ctrl-&gt;ssvid);
        return 0;
}</code></pre>
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
  070701015D6D2D000081A4000003E80000006400000001642C0FB6000008B5000000000000004A00000000000000000000002800000000nvme-cli/Documentation/nvme-id-domain.1   '\" t
.\"     Title: nvme-id-domain
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-ID\-DOMAIN" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-id-domain \- Send NVMe Identify Domain List, return result and structure
.SH "SYNOPSIS"
.sp
.nf
\fInvme id\-domain\fR <device> [\-\-dom\-id=<domian_id> | \-d <domian_id>]
                        [\-o <fmt> | \-\-output\-format=<fmt>]
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, send an identify command and return the domain list data structure\&.
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1)\&.
.SH "OPTIONS"
.PP
\-d <domian_id>, \-\-dom\-id=<domian_id>
.RS 4
Retrieve the identify domain list data structure for the given domain id\&. If this value is not given, domain id will be 0xffff\&.
.RE
.PP
\-o <format>, \-\-output\-format=<format>
.RS 4
Set the reporting format to
\fInormal\fR,
\fIjson\fR, or
\fIbinary\fR\&. Only one output format can be used at a time\&.
.RE
.SH "EXAMPLES"
.sp
No examples yet\&.
.SH "NVME"
.sp
Part of the nvme\-user suite
   070701015D6D2E000081A4000003E80000006400000001642C0FB600004850000000000000004A00000000000000000000002B00000000nvme-cli/Documentation/nvme-id-domain.html    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-id-domain(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-id-domain(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-id-domain -
   Send NVMe Identify Domain List, return result and structure
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme id-domain</em> &lt;device&gt; [--dom-id=&lt;domian_id&gt; | -d &lt;domian_id&gt;]
                        [-o &lt;fmt&gt; | --output-format=&lt;fmt&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, send an identify command and return the domain list
data structure.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-d &lt;domian_id&gt;
</dt>
<dt class="hdlist1">
--dom-id=&lt;domian_id&gt;
</dt>
<dd>
<p>
        Retrieve the identify domain list data structure for the given
        domain id. If this value is not given, domain id will be 0xffff.
</p>
</dd>
<dt class="hdlist1">
-o &lt;format&gt;
</dt>
<dt class="hdlist1">
--output-format=&lt;format&gt;
</dt>
<dd>
<p>
              Set the reporting format to <em>normal</em>, <em>json</em>, or
              <em>binary</em>. Only one output format can be used at a time.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="paragraph"><p>No examples yet.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
070701015D6D2F000081A4000003E80000006400000001642C0FB600000AF2000000000000004A00000000000000000000002600000000nvme-cli/Documentation/nvme-id-iocs.1 '\" t
.\"     Title: nvme-id-iocs
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-ID\-IOCS" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-id-iocs \- Send NVMe Identify I/O Command Set, return result and structure
.SH "SYNOPSIS"
.sp
.nf
\fInvme id\-iocs\fR <device> [\-\-controller\-id=<cntid> | \-c <cntid>]
                        [\-o <fmt> | \-\-output\-format=<fmt>]
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, send an identify command and return the Identify I/O Command Set data structure\&.
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1)\&.
.SH "OPTIONS"
.PP
\-c <cntid>, \-\-controller\-id=<cntid>
.RS 4
Retrieve the identify I/O Command set data structure for the given cntid\&. If this value is not given, cntid will be 0xffff\&.
.RE
.PP
\-H, \-\-human\-readable
.RS 4
This option will parse and format many of the bit fields into human\-readable formats\&.
.RE
.PP
\-o <format>, \-\-output\-format=<format>
.RS 4
Set the reporting format to
\fInormal\fR,
\fIjson\fR, or
\fIbinary\fR\&. Only one output format can be used at a time\&.
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Have the program interpret the returned buffer and display the known fields in a human readable format:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme id\-iocs /dev/nvme0
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
show the fields in human readable format
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme id\-iocs /dev/nvme0 \-H
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite
  070701015D6D30000081A4000003E80000006400000001642C0FB600004AC2000000000000004A00000000000000000000002900000000nvme-cli/Documentation/nvme-id-iocs.html  <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-id-iocs(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-id-iocs(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-id-iocs -
   Send NVMe Identify I/O Command Set, return result and structure
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme id-iocs</em> &lt;device&gt; [--controller-id=&lt;cntid&gt; | -c &lt;cntid&gt;]
                        [-o &lt;fmt&gt; | --output-format=&lt;fmt&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, send an identify command and return the Identify I/O
Command Set data structure.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-c &lt;cntid&gt;
</dt>
<dt class="hdlist1">
--controller-id=&lt;cntid&gt;
</dt>
<dd>
<p>
        Retrieve the identify I/O Command set data structure for the given
        cntid. If this value is not given, cntid will be 0xffff.
</p>
</dd>
<dt class="hdlist1">
-H
</dt>
<dt class="hdlist1">
--human-readable
</dt>
<dd>
<p>
        This option will parse and format many of the bit fields
        into human-readable formats.
</p>
</dd>
<dt class="hdlist1">
-o &lt;format&gt;
</dt>
<dt class="hdlist1">
--output-format=&lt;format&gt;
</dt>
<dd>
<p>
              Set the reporting format to <em>normal</em>, <em>json</em>, or
              <em>binary</em>. Only one output format can be used at a time.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Have the program interpret the returned buffer and display the known
fields in a human readable format:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme id-iocs /dev/nvme0</code></pre>
</div></div>
</li>
<li>
<p>
show the fields in human readable format
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme id-iocs /dev/nvme0 -H</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
  070701015D6D31000081A4000003E80000006400000001642C0FB60000182B000000000000004A00000000000000000000002400000000nvme-cli/Documentation/nvme-id-ns.1   '\" t
.\"     Title: nvme-id-ns
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-ID\-NS" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-id-ns \- Send NVMe Identify Namespace, return result and structure
.SH "SYNOPSIS"
.sp
.nf
\fInvme id\-ns\fR <device> [\-v | \-\-vendor\-specific] [\-b | \-\-raw\-binary]
                    [\-\-namespace\-id=<nsid> | \-n <nsid>] [\-\-force]
                    [\-\-human\-readable | \-H]
                    [\-\-output\-format=<fmt> | \-o <fmt>]
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, sends an identify namespace command and provides the result and returned structure\&.
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1)\&. If the character device is given, the \*(Aq\-\-namespace\-id\*(Aq option is mandatory, otherwise it will use the ns\-id of the namespace for the block device you opened\&. For block devices, the ns\-id used can be overridden with the same option\&.
.sp
On success, the structure may be returned in one of several ways depending on the option flags; the structure may be parsed by the program or the raw buffer may be printed to stdout\&.
.SH "OPTIONS"
.PP
\-n <nsid>, \-\-namespace\-id=<nsid>
.RS 4
Retrieve the identify namespace structure for the given nsid\&. This is required for the character devices, or overrides the block nsid if given\&. If the controller supports namespace management capability and 0xFFFFFFFF is given, then the controller returns the identify namespace structure that specifies common capabilities across namespaces for the controller\&.
.RE
.PP
\-\-force
.RS 4
Request controller return the identify namespace structure even if the namespace is not attached to the controller\&. This is valid only for controllers at or newer than revision 1\&.2\&. Controllers at revision lower than this may interpret the command incorrectly\&.
.RE
.PP
\-b, \-\-raw\-binary
.RS 4
Print the raw buffer to stdout\&. Structure is not parsed by program\&. This overrides the vendor specific and human readable options\&.
.RE
.PP
\-v, \-\-vendor\-specific
.RS 4
In addition to parsing known fields, this option will dump the vendor specific region of the structure in hex with ascii interpretation\&.
.RE
.PP
\-H, \-\-human\-readable
.RS 4
This option will parse and format many of the bit fields into human\-readable formats\&.
.RE
.PP
\-o <format>, \-\-output\-format=<format>
.RS 4
Set the reporting format to
\fInormal\fR,
\fIjson\fR, or
\fIbinary\fR\&. Only one output format can be used at a time\&.
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Has the program interpret the returned buffer and display the known fields in a human readable format:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme id\-ns /dev/nvme0n1
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
If using the character device or overriding namespace id:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme id\-ns /dev/nvme0 \-n 1
# nvme id\-ns /dev/nvme0n1 \-n 1
# nvme id\-ns /dev/nvme0 \-\-namespace\-id=1
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
In addition to showing the known fields, have the program to display the vendor unique field:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme id\-ns /dev/nvme0n1 \-\-vendor\-specific
# nvme id\-ns /dev/nvme0n1 \-v
.fi
.if n \{\
.RE
.\}
.sp
The above will dump the \*(Aqvs\*(Aq buffer in hex since it doesn\(cqt know how to interpret it\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Have the program return the raw structure in binary:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme id\-ns /dev/nvme0n1 \-\-raw\-binary > id_ns\&.raw
# nvme id\-ns /dev/nvme0n1 \-b > id_ns\&.raw
.fi
.if n \{\
.RE
.\}
.sp
It is probably a bad idea to not redirect stdout when using this mode\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Alternatively you may want to send the data to another program that can parse the raw buffer\&.
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme id\-ns /dev/nvme0n1 \-\-raw\-binary | nvme_parse_id_ns
.fi
.if n \{\
.RE
.\}
.sp
The parse program in the above example can be a program that shows the structure in a way you like\&. The following program is such an example that will parse it and can accept the output through a pipe,
\*(Aq|\*(Aq, as shown in the above example, or you can
\*(Aqcat\*(Aq
a saved output buffer to it\&.
.RE
.sp
.if n \{\
.RS 4
.\}
.nf
/* File: nvme_parse_id_ns\&.c */

#include <linux/nvme\&.h>
#include <stdio\&.h>
#include <unistd\&.h>

int main(int argc, char **argv)
{
        unsigned char buf[sizeof(struct nvme_id_ns)];
        struct nvme_id_ns *ns = (struct nvme_id_ns *)buf;

        if (read(STDIN_FILENO, buf, sizeof(buf)))
                return 1;

        printf("nsze : %#llx\en", ns\->nsze);
        printf("ncap : %#llx\en", ns\->ncap);
        return 0;
}
.fi
.if n \{\
.RE
.\}
.SH "NVME"
.sp
Part of the nvme\-user suite
 070701015D6D32000081A4000003E80000006400000001642C0FB600005985000000000000004A00000000000000000000002700000000nvme-cli/Documentation/nvme-id-ns.html    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-id-ns(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-id-ns(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-id-ns -
   Send NVMe Identify Namespace, return result and structure
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme id-ns</em> &lt;device&gt; [-v | --vendor-specific] [-b | --raw-binary]
                    [--namespace-id=&lt;nsid&gt; | -n &lt;nsid&gt;] [--force]
                    [--human-readable | -H]
                    [--output-format=&lt;fmt&gt; | -o &lt;fmt&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, sends an identify namespace command and
provides the result and returned structure.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).
If the character device is given, the <code>'--namespace-id'</code> option is
mandatory, otherwise it will use the ns-id of the namespace for the block
device you opened. For block devices, the ns-id used can be overridden
with the same option.</p></div>
<div class="paragraph"><p>On success, the structure may be returned in one of several ways depending
on the option flags; the structure may be parsed by the program or the
raw buffer may be printed to stdout.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-n &lt;nsid&gt;
</dt>
<dt class="hdlist1">
--namespace-id=&lt;nsid&gt;
</dt>
<dd>
<p>
        Retrieve the identify namespace structure for the given nsid. This
        is required for the character devices, or overrides the block nsid
        if given. If the controller supports namespace management capability
        and 0xFFFFFFFF is given, then the controller returns the identify
        namespace structure that specifies common capabilities across
        namespaces for the controller.
</p>
</dd>
<dt class="hdlist1">
--force
</dt>
<dd>
<p>
        Request controller return the identify namespace structure even
        if the namespace is not attached to the controller. This is valid
        only for controllers at or newer than revision 1.2. Controllers
        at revision lower than this may interpret the command incorrectly.
</p>
</dd>
<dt class="hdlist1">
-b
</dt>
<dt class="hdlist1">
--raw-binary
</dt>
<dd>
<p>
        Print the raw buffer to stdout. Structure is not parsed by
        program. This overrides the vendor specific and human readable options.
</p>
</dd>
<dt class="hdlist1">
-v
</dt>
<dt class="hdlist1">
--vendor-specific
</dt>
<dd>
<p>
        In addition to parsing known fields, this option will dump
        the vendor specific region of the structure in hex with ascii
        interpretation.
</p>
</dd>
<dt class="hdlist1">
-H
</dt>
<dt class="hdlist1">
--human-readable
</dt>
<dd>
<p>
        This option will parse and format many of the bit fields
        into human-readable formats.
</p>
</dd>
<dt class="hdlist1">
-o &lt;format&gt;
</dt>
<dt class="hdlist1">
--output-format=&lt;format&gt;
</dt>
<dd>
<p>
              Set the reporting format to <em>normal</em>, <em>json</em>, or
              <em>binary</em>. Only one output format can be used at a time.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Has the program interpret the returned buffer and display the known
fields in a human readable format:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme id-ns /dev/nvme0n1</code></pre>
</div></div>
</li>
<li>
<p>
If using the character device or overriding namespace id:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme id-ns /dev/nvme0 -n 1
# nvme id-ns /dev/nvme0n1 -n 1
# nvme id-ns /dev/nvme0 --namespace-id=1</code></pre>
</div></div>
</li>
<li>
<p>
In addition to showing the known fields, have the program to display
the vendor unique field:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme id-ns /dev/nvme0n1 --vendor-specific
# nvme id-ns /dev/nvme0n1 -v</code></pre>
</div></div>
<div class="paragraph"><p>The above will dump the 'vs' buffer in hex since it doesn&#8217;t know how to
interpret it.</p></div>
</li>
<li>
<p>
Have the program return the raw structure in binary:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme id-ns /dev/nvme0n1 --raw-binary &gt; id_ns.raw
# nvme id-ns /dev/nvme0n1 -b &gt; id_ns.raw</code></pre>
</div></div>
<div class="paragraph"><p>It is probably a bad idea to not redirect stdout when using this mode.</p></div>
</li>
<li>
<p>
Alternatively you may want to send the data to another program that
can parse the raw buffer.
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme id-ns /dev/nvme0n1 --raw-binary | nvme_parse_id_ns</code></pre>
</div></div>
<div class="paragraph"><p>The parse program in the above example can be a program that shows the
structure in a way you like. The following program is such an example
that will parse it and can accept the output through a pipe, <code>'|'</code>,
as shown in the above example, or you can <code>'cat'</code> a saved output buffer
to it.</p></div>
</li>
</ul></div>
<div class="listingblock">
<div class="content">
<pre><code>/* File: nvme_parse_id_ns.c */

#include &lt;linux/nvme.h&gt;
#include &lt;stdio.h&gt;
#include &lt;unistd.h&gt;

int main(int argc, char **argv)
{
        unsigned char buf[sizeof(struct nvme_id_ns)];
        struct nvme_id_ns *ns = (struct nvme_id_ns *)buf;

        if (read(STDIN_FILENO, buf, sizeof(buf)))
                return 1;

        printf("nsze : %#llx\n", ns-&gt;nsze);
        printf("ncap : %#llx\n", ns-&gt;ncap);
        return 0;
}</code></pre>
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
   070701015D6D33000081A4000003E80000006400000001642C0FB600000E8B000000000000004A00000000000000000000002800000000nvme-cli/Documentation/nvme-id-nvmset.1   '\" t
.\"     Title: nvme-id-nvmset
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-ID\-NVMSET" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-id-nvmset \- Send NVMe Identify NVM Set List, return result and structure
.SH "SYNOPSIS"
.sp
.nf
\fInvme id\-nvmset\fR <device> [\-i <id> | \-\-nvmset_id=<id> ]
                        [\-o <fmt> | \-\-output\-format=<fmt>]
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, sends an identify NVM set list command and provides the result and returned structure\&.
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1)\&.
.sp
On success, the structure may be returned in one of several ways depending on the option flags; the structure may be parsed by the program or the raw buffer may be printed to stdout\&.
.SH "OPTIONS"
.PP
\-i <id>, \-\-nvmset_id=<id>
.RS 4
This field specifies the identifier of the NVM Set\&. If given, NVM set identifier whose entry is to be in result data will be greater than or equal to this value\&.
.RE
.PP
\-o <format>, \-\-output\-format=<format>
.RS 4
Set the reporting format to
\fInormal\fR,
\fIjson\fR, or
\fIbinary\fR\&. Only one output format can be used at a time\&.
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Has the program interpret the returned buffer and display the known fields in a human readable format:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme id\-nvmset /dev/nvme0
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Have the program return the raw structure in binary:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme id\-nvmset /dev/nvme0 \-\-output\-format=binary > id_nvmset\&.raw
# nvme id\-nvmset /dev/nvme0 \-o binary > id_nvmset\&.raw
.fi
.if n \{\
.RE
.\}
.sp
It is probably a bad idea to not redirect stdout when using this mode\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Alternatively you may want to send the data to another program that can parse the raw buffer\&.
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme id\-nvmset /dev/nvme0 \-o binary | nvme_parse_id_nvmset
.fi
.if n \{\
.RE
.\}
.sp
The parse program in the above example can be a program that shows the structure in a way you like\&. The following program is such an example that will parse it and can accept the output through a pipe,
\*(Aq|\*(Aq, as shown in the above example, or you can
\*(Aqcat\*(Aq
a saved output buffer to it\&.
.RE
.sp
.if n \{\
.RS 4
.\}
.nf
NVME
.fi
.if n \{\
.RE
.\}
.sp
Part of the nvme\-user suite
 070701015D6D34000081A4000003E80000006400000001642C0FB600004E46000000000000004A00000000000000000000002B00000000nvme-cli/Documentation/nvme-id-nvmset.html    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-id-nvmset(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-id-nvmset(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-id-nvmset -
   Send NVMe Identify NVM Set List, return result and structure
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme id-nvmset</em> &lt;device&gt; [-i &lt;id&gt; | --nvmset_id=&lt;id&gt; ]
                        [-o &lt;fmt&gt; | --output-format=&lt;fmt&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, sends an identify NVM set list command and
provides the result and returned structure.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).</p></div>
<div class="paragraph"><p>On success, the structure may be returned in one of several ways depending
on the option flags; the structure may be parsed by the program or the
raw buffer may be printed to stdout.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-i &lt;id&gt;
</dt>
<dt class="hdlist1">
--nvmset_id=&lt;id&gt;
</dt>
<dd>
<p>
        This field specifies the identifier of the NVM Set.  If given, NVM set
        identifier whose entry is to be in result data will be greater than or
        equal to this value.
</p>
</dd>
<dt class="hdlist1">
-o &lt;format&gt;
</dt>
<dt class="hdlist1">
--output-format=&lt;format&gt;
</dt>
<dd>
<p>
              Set the reporting format to <em>normal</em>, <em>json</em>, or
              <em>binary</em>. Only one output format can be used at a time.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Has the program interpret the returned buffer and display the known
fields in a human readable format:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme id-nvmset /dev/nvme0</code></pre>
</div></div>
</li>
<li>
<p>
Have the program return the raw structure in binary:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme id-nvmset /dev/nvme0 --output-format=binary &gt; id_nvmset.raw
# nvme id-nvmset /dev/nvme0 -o binary &gt; id_nvmset.raw</code></pre>
</div></div>
<div class="paragraph"><p>It is probably a bad idea to not redirect stdout when using this mode.</p></div>
</li>
<li>
<p>
Alternatively you may want to send the data to another program that
can parse the raw buffer.
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme id-nvmset /dev/nvme0 -o binary | nvme_parse_id_nvmset</code></pre>
</div></div>
<div class="paragraph"><p>The parse program in the above example can be a program that shows the
structure in a way you like. The following program is such an example
that will parse it and can accept the output through a pipe, <code>'|'</code>,
as shown in the above example, or you can <code>'cat'</code> a saved output buffer to it.</p></div>
</li>
</ul></div>
<div class="listingblock">
<div class="content">
<pre><code>NVME</code></pre>
</div></div>
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
  070701015D6D35000081A4000003E80000006400000001642C0FB600000842000000000000004A00000000000000000000003500000000nvme-cli/Documentation/nvme-inspur-nvme-vendor-log.1  '\" t
.\"     Title: nvme-inspur-nvme-vendor-log
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-INSPUR\-NVME\-" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-inspur-nvme-vendor-log \- Send NVMe Inspur Device Vendor log page request, returns result
.SH "SYNOPSIS"
.sp
.nf
\fInvme inspur nvme\-vendor\-log\fR <device>
.fi
.SH "DESCRIPTION"
.sp
Retrieves the NVMe Inspur Device Vendor log page from the device and provides the returned structure\&.
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1)\&.
.sp
On success, vendor log structure are printed in a readable format\&.
.SH "OPTIONS"
.sp
none
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Print the Inspur Device Vendor log page in a human readable format:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme inspur nvme\-vendor\-log /dev/nvme0
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite
  070701015D6D36000081A4000003E80000006400000001642C0FB600004717000000000000004A00000000000000000000003800000000nvme-cli/Documentation/nvme-inspur-nvme-vendor-log.html   <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-inspur-nvme-vendor-log(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-inspur-nvme-vendor-log(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-inspur-nvme-vendor-log -
   Send NVMe Inspur Device Vendor log page request, returns result
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme inspur nvme-vendor-log</em> &lt;device&gt;</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>Retrieves the NVMe Inspur Device Vendor log page from the device and provides the returned structure.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).</p></div>
<div class="paragraph"><p>On success, vendor log structure are printed in a readable format.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="paragraph"><p>none</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Print the Inspur Device Vendor log page in a human readable format:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme inspur nvme-vendor-log /dev/nvme0</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
 070701015D6D37000081A4000003E80000006400000001642C0FB600000C3A000000000000004A00000000000000000000002C00000000nvme-cli/Documentation/nvme-intel-id-ctrl.1   '\" t
.\"     Title: nvme-intel-id-ctrl
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-INTEL\-ID\-CTR" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-intel-id-ctrl \- Send NVMe Identify Controller, return result and structure
.SH "SYNOPSIS"
.sp
.nf
\fInvme intel id\-ctrl\fR <device> [\-v | \-\-vendor\-specific] [\-b | \-\-raw\-binary]
                        [\-o <fmt> | \-\-output\-format=<fmt>]
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, sends an identify controller command and provides the result and returned structure\&.
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1)\&.
.sp
On success, the structure may be returned in one of several ways depending on the option flags; the structure may be parsed by the program or the raw buffer may be printed to stdout\&.
.sp
If having the program decode the output for readability, this version will decode Intel vendor unique portions of the structure\&.
.SH "OPTIONS"
.PP
\-b, \-\-raw\-binary
.RS 4
Print the raw buffer to stdout\&. Structure is not parsed by program\&. This overrides the vendor specific and human readable options\&.
.RE
.PP
\-v, \-\-vendor\-specific
.RS 4
In addition to parsing known fields, this option will dump the vendor specific region of the structure in hex with ascii interpretation\&.
.RE
.PP
\-H, \-\-human\-readable
.RS 4
This option will parse and format many of the bit fields into human\-readable formats\&.
.RE
.PP
\-o <format>, \-\-output\-format=<format>
.RS 4
Set the reporting format to
\fInormal\fR,
\fIjson\fR, or
\fIbinary\fR\&. Only one output format can be used at a time\&.
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Has the program interpret the returned buffer and display the known fields in a human readable format:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme intel id\-ctrl /dev/nvme0
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite
  070701015D6D38000081A4000003E80000006400000001642C0FB600004C99000000000000004A00000000000000000000002F00000000nvme-cli/Documentation/nvme-intel-id-ctrl.html    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-intel-id-ctrl(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-intel-id-ctrl(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-intel-id-ctrl -
   Send NVMe Identify Controller, return result and structure
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme intel id-ctrl</em> &lt;device&gt; [-v | --vendor-specific] [-b | --raw-binary]
                        [-o &lt;fmt&gt; | --output-format=&lt;fmt&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, sends an identify controller command and
provides the result and returned structure.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).</p></div>
<div class="paragraph"><p>On success, the structure may be returned in one of several ways depending
on the option flags; the structure may be parsed by the program or the
raw buffer may be printed to stdout.</p></div>
<div class="paragraph"><p>If having the program decode the output for readability, this version
will decode Intel vendor unique portions of the structure.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-b
</dt>
<dt class="hdlist1">
--raw-binary
</dt>
<dd>
<p>
        Print the raw buffer to stdout. Structure is not parsed by
        program. This overrides the vendor specific and human readable options.
</p>
</dd>
<dt class="hdlist1">
-v
</dt>
<dt class="hdlist1">
--vendor-specific
</dt>
<dd>
<p>
        In addition to parsing known fields, this option will dump
        the vendor specific region of the structure in hex with ascii
        interpretation.
</p>
</dd>
<dt class="hdlist1">
-H
</dt>
<dt class="hdlist1">
--human-readable
</dt>
<dd>
<p>
        This option will parse and format many of the bit fields
        into human-readable formats.
</p>
</dd>
<dt class="hdlist1">
-o &lt;format&gt;
</dt>
<dt class="hdlist1">
--output-format=&lt;format&gt;
</dt>
<dd>
<p>
              Set the reporting format to <em>normal</em>, <em>json</em>, or
              <em>binary</em>. Only one output format can be used at a time.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Has the program interpret the returned buffer and display the known
fields in a human readable format:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme intel id-ctrl /dev/nvme0</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
   070701015D6D39000081A4000003E80000006400000001642C0FB600000D4D000000000000004A00000000000000000000003100000000nvme-cli/Documentation/nvme-intel-internal-log.1  '\" t
.\"     Title: nvme-intel-internal-log
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-INTEL\-INTERNA" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-intel-internal-log \- Retrieve Intel device\*(Aqs internal log and save to file\&.
.SH "SYNOPSIS"
.sp
.nf
\*(Aqnvme intel internal\-log \*(Aq <device> [\-\-log=<NUM>, \-l <NUM>]
                [\-\-region=<NUM>, r <NUM>]
                [\-\-nlognum=<NUM>, m <NUM>]
                [\-\-namespace\-id=<NUM>, \-n <NUM>]
                [\-\-output\-file=<FILE>, \-o <FILE>]
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, sends the Intel vendor unique device log request and saves the result to a file\&.
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1)\&. If using the character device, the namespace id parameter is mandatory\&.
.sp
This will only work on Intel devices supporting this feature which includes (but not limited to) all the Intel DC P3xxx family of controllers\&. Results for any other device are undefined\&.
.SH "OPTIONS"
.PP
\-l <NUM>, \-\-log=<NUM>
.RS 4
Log type: 0, 1, or 2 for nlog, event log, and assert log, respectively\&.
.RE
.PP
\-n <NUM>, \-\-namespace\-id=<NUM>
.RS 4
Namespace to use\&.
.RE
.PP
\-o <FILE>, \-\-output\-file=<FILE>
.RS 4
Output file; defaults to device name provided
.RE
.PP
\-r <NUM>, \-\-region=<NUM>
.RS 4
Select which core region to retrieve the log from\&. \-1 for all available, if supported by the device\&.
.RE
.PP
\-m <NUM>, \-\-nlognum=<NUM>
.RS 4
When used with
\fInlog\fR, this specifies which nlog to read\&. \-1 for all, if supported by the device\&.
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Gets the nlog from the device and saves to default file:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme intel internal\-log /dev/nvme0 \-\-namespace\-id=1 \-\-log=0
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Gets the event log from the device and saves to defined file:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme intel internal\-log /dev/nvme0 \-\-namespace\-id=1 \-\-log=1 \-\-output\-file=MyAwesomeEventLog
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite
   070701015D6D3A000081A4000003E80000006400000001642C0FB600004DE9000000000000004A00000000000000000000003400000000nvme-cli/Documentation/nvme-intel-internal-log.html   <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-intel-internal-log(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-intel-internal-log(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-intel-internal-log -
   Retrieve Intel device's internal log and save to file.
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content">'nvme intel internal-log ' &lt;device&gt; [--log=&lt;NUM&gt;, -l &lt;NUM&gt;]
                [--region=&lt;NUM&gt;, r &lt;NUM&gt;]
                [--nlognum=&lt;NUM&gt;, m &lt;NUM&gt;]
                [--namespace-id=&lt;NUM&gt;, -n &lt;NUM&gt;]
                [--output-file=&lt;FILE&gt;, -o &lt;FILE&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, sends the Intel vendor unique device log
request and saves the result to a file.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe
character device (ex: /dev/nvme0), or a namespace block device (ex:
/dev/nvme0n1). If using the character device, the namespace id parameter
is mandatory.</p></div>
<div class="paragraph"><p>This will only work on Intel devices supporting this feature which
includes (but not limited to) all the Intel DC P3xxx family of
controllers. Results for any other device are undefined.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-l &lt;NUM&gt;
</dt>
<dt class="hdlist1">
--log=&lt;NUM&gt;
</dt>
<dd>
<p>
        Log type: 0, 1, or 2 for nlog, event log, and assert log,
        respectively.
</p>
</dd>
<dt class="hdlist1">
-n &lt;NUM&gt;
</dt>
<dt class="hdlist1">
--namespace-id=&lt;NUM&gt;
</dt>
<dd>
<p>
        Namespace to use.
</p>
</dd>
<dt class="hdlist1">
-o &lt;FILE&gt;
</dt>
<dt class="hdlist1">
--output-file=&lt;FILE&gt;
</dt>
<dd>
<p>
        Output file; defaults to device name provided
</p>
</dd>
<dt class="hdlist1">
-r &lt;NUM&gt;
</dt>
<dt class="hdlist1">
--region=&lt;NUM&gt;
</dt>
<dd>
<p>
        Select which core region to retrieve the log from. -1 for all
        available, if supported by the device.
</p>
</dd>
<dt class="hdlist1">
-m &lt;NUM&gt;
</dt>
<dt class="hdlist1">
--nlognum=&lt;NUM&gt;
</dt>
<dd>
<p>
        When used with <em>nlog</em>, this specifies which nlog to read. -1
        for all, if supported by the device.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Gets the nlog from the device and saves to default file:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme intel internal-log /dev/nvme0 --namespace-id=1 --log=0</code></pre>
</div></div>
</li>
<li>
<p>
Gets the event log from the device and saves to defined file:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme intel internal-log /dev/nvme0 --namespace-id=1 --log=1 --output-file=MyAwesomeEventLog</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
   070701015D6D3B000081A4000003E80000006400000001642C0FB600000A6F000000000000004A00000000000000000000002E00000000nvme-cli/Documentation/nvme-intel-lat-stats.1 '\" t
.\"     Title: nvme-intel-lat-stats
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-INTEL\-LAT\-ST" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-intel-lat-stats \- Send NVMe Identify Controller, return result and structure
.SH "SYNOPSIS"
.sp
.nf
\fInvme intel lat\-stats\fR <device> [\-\-write | \-w] [\-\-raw\-binary | \-b]
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, retrieves intel vendor specific latency statistics and provides the result and returned structure\&.
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1)\&.
.sp
On success, the structure may be returned in one of several ways depending on the option flags; the structure may be parsed by the program or the raw buffer may be printed to stdout\&.
.SH "OPTIONS"
.PP
\-b, \-\-raw\-binary
.RS 4
Print the raw buffer to stdout\&. Structure is not parsed by program\&. This overrides the vendor specific and human readable options\&.
.RE
.PP
\-w, \-\-write
.RS 4
Get write statistics\&. Read statistics are returned by default\&.
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Get the read statistics
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme intel lat\-stats /dev/nvme0
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Get the write statistics
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme intel lat\-stats /dev/nvme0 \-w
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite
 070701015D6D3C000081A4000003E80000006400000001642C0FB6000049C2000000000000004A00000000000000000000003100000000nvme-cli/Documentation/nvme-intel-lat-stats.html  <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-intel-lat-stats(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-intel-lat-stats(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-intel-lat-stats -
   Send NVMe Identify Controller, return result and structure
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme intel lat-stats</em> &lt;device&gt; [--write | -w] [--raw-binary | -b]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, retrieves intel vendor specific latency statistics and
provides the result and returned structure.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).</p></div>
<div class="paragraph"><p>On success, the structure may be returned in one of several ways depending
on the option flags; the structure may be parsed by the program or the
raw buffer may be printed to stdout.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-b
</dt>
<dt class="hdlist1">
--raw-binary
</dt>
<dd>
<p>
        Print the raw buffer to stdout. Structure is not parsed by
        program. This overrides the vendor specific and human readable options.
</p>
</dd>
<dt class="hdlist1">
-w
</dt>
<dt class="hdlist1">
--write
</dt>
<dd>
<p>
        Get write statistics. Read statistics are returned by default.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Get the read statistics
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme intel lat-stats /dev/nvme0</code></pre>
</div></div>
</li>
<li>
<p>
Get the write statistics
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme intel lat-stats /dev/nvme0 -w</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
  070701015D6D3D000081A4000003E80000006400000001642C0FB60000099C000000000000004A00000000000000000000003000000000nvme-cli/Documentation/nvme-intel-market-name.1   '\" t
.\"     Title: nvme-intel-market-name
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-INTEL\-MARKET\" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-intel-market-name \- Send NVMe Identify Controller, return result and structure
.SH "SYNOPSIS"
.sp
.nf
\fInvme intel market\-name\fR <device> [\-\-raw\-binary | \-b]
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, retrieves intel vendor specific marketing name log page and provides the result and returned structure\&. The output is simply the marketing name used to identify what kind of device it is\&.
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1)\&.
.sp
On success, the structure may be returned in one of several ways depending on the option flags; the structure may be parsed by the program or the raw buffer may be printed to stdout\&.
.SH "OPTIONS"
.PP
\-b, \-\-raw\-binary
.RS 4
Print the raw buffer to stdout\&. Structure is not parsed by program\&. This overrides the vendor specific and human readable options\&.
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Get the marketing name
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme intel market\-name /dev/nvme0
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite
070701015D6D3E000081A4000003E80000006400000001642C0FB6000048BE000000000000004A00000000000000000000003300000000nvme-cli/Documentation/nvme-intel-market-name.html    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-intel-market-name(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-intel-market-name(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-intel-market-name -
   Send NVMe Identify Controller, return result and structure
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme intel market-name</em> &lt;device&gt; [--raw-binary | -b]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, retrieves intel vendor specific marketing name
log page and provides the result and returned structure. The output is
simply the marketing name used to identify what kind of device it is.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).</p></div>
<div class="paragraph"><p>On success, the structure may be returned in one of several ways depending
on the option flags; the structure may be parsed by the program or the
raw buffer may be printed to stdout.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-b
</dt>
<dt class="hdlist1">
--raw-binary
</dt>
<dd>
<p>
        Print the raw buffer to stdout. Structure is not parsed by
        program. This overrides the vendor specific and human readable options.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Get the marketing name
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme intel market-name /dev/nvme0</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
  070701015D6D3F000081A4000003E80000006400000001642C0FB600000CCE000000000000004A00000000000000000000003200000000nvme-cli/Documentation/nvme-intel-smart-log-add.1 '\" t
.\"     Title: nvme-intel-smart-log-add
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-INTEL\-SMART\-" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-intel-smart-log-add \- Send NVMe Intel Additional SMART log page request, returns result and log
.SH "SYNOPSIS"
.sp
.nf
\fInvme intel smart\-log\-add\fR <device> [\-\-namespace\-id=<nsid> | \-n <nsid>]
                        [\-\-raw\-binary | \-b]
                        [\-\-json | \-j]
.fi
.SH "DESCRIPTION"
.sp
Retrieves the NVMe Intel Additional SMART log page from the device and provides the returned structure\&.
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1)\&.
.sp
On success, the returned smart log structure may be returned in one of several ways depending on the option flags; the structure may parsed by the program and printed in a readable format or the raw buffer may be printed to stdout for another program to parse\&.
.SH "OPTIONS"
.PP
\-n <nsid>, \-\-namespace\-id=<nsid>
.RS 4
Retrieve the Additional SMART log for the given nsid\&. This is optional and its success may depend on the device\(cqs capabilities to provide this log on a per\-namespace basis (see the NVMe Identify Controller for this capability)\&. The default nsid to use is 0xffffffff for the device global SMART log\&.
.RE
.PP
\-b, \-\-raw\-binary
.RS 4
Print the raw Intel Additional SMART log buffer to stdout\&.
.RE
.PP
\-j, \-\-json
.RS 4
Dump output in json format\&.
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Print the Intel Additional SMART log page in a human readable format:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme intel smart\-log\-add /dev/nvme0
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Print the raw Intel Additional SMART log to a file:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme intel smart\-log\-add /dev/nvme0 \-\-raw\-binary > smart_log\&.raw
.fi
.if n \{\
.RE
.\}
.sp
It is probably a bad idea to not redirect stdout when using this mode\&.
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite
  070701015D6D40000081A4000003E80000006400000001642C0FB600004CC4000000000000004A00000000000000000000003500000000nvme-cli/Documentation/nvme-intel-smart-log-add.html  <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-intel-smart-log-add(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-intel-smart-log-add(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-intel-smart-log-add -
   Send NVMe Intel Additional SMART log page request, returns result and log
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme intel smart-log-add</em> &lt;device&gt; [--namespace-id=&lt;nsid&gt; | -n &lt;nsid&gt;]
                        [--raw-binary | -b]
                        [--json | -j]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>Retrieves the NVMe Intel Additional SMART log page from the device and
provides the returned structure.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).</p></div>
<div class="paragraph"><p>On success, the returned smart log structure may be returned in one of
several ways depending on the option flags; the structure may parsed by
the program and printed in a readable format or the raw buffer may be
printed to stdout for another program to parse.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-n &lt;nsid&gt;
</dt>
<dt class="hdlist1">
--namespace-id=&lt;nsid&gt;
</dt>
<dd>
<p>
        Retrieve the Additional SMART log for the given nsid. This is
        optional and its success may depend on the device&#8217;s capabilities
        to provide this log on a per-namespace basis (see the NVMe
        Identify Controller for this capability). The default nsid to
        use is 0xffffffff for the device global SMART log.
</p>
</dd>
<dt class="hdlist1">
-b
</dt>
<dt class="hdlist1">
--raw-binary
</dt>
<dd>
<p>
        Print the raw Intel Additional SMART log buffer to stdout.
</p>
</dd>
<dt class="hdlist1">
-j
</dt>
<dt class="hdlist1">
--json
</dt>
<dd>
<p>
              Dump output in json format.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Print the Intel Additional SMART log page in a human readable format:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme intel smart-log-add /dev/nvme0</code></pre>
</div></div>
</li>
<li>
<p>
Print the raw Intel Additional SMART log to a file:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme intel smart-log-add /dev/nvme0 --raw-binary &gt; smart_log.raw</code></pre>
</div></div>
<div class="paragraph"><p>It is probably a bad idea to not redirect stdout when using this mode.</p></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
070701015D6D41000081A4000003E80000006400000001642C0FB600000A8A000000000000004A00000000000000000000002F00000000nvme-cli/Documentation/nvme-intel-temp-stats.1    '\" t
.\"     Title: nvme-intel-temp-stats
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-INTEL\-TEMP\-S" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-intel-temp-stats \- Send NVMe SMART log page request, returns result and log
.SH "SYNOPSIS"
.sp
.nf
\fInvme intel temp\-stats\fR <device> [\-\-raw\-binary | \-b]
.fi
.SH "DESCRIPTION"
.sp
Retrieves the NVMe Intel Additional SMART log page from the device and provides the returned structure\&.
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1)\&.
.sp
On success, the returned smart log structure may be returned in one of several ways depending on the option flags; the structure may parsed by the program and printed in a readable format or the raw buffer may be printed to stdout for another program to parse\&.
.SH "OPTIONS"
.PP
\-b, \-\-raw\-binary
.RS 4
Print the raw temperature stats log buffer to stdout\&.
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Print the temperature stats log page in a human readable format:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme intel temp\-stats /dev/nvme0
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Print the raw SMART log to a file:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme intel temp\-stats /dev/nvme0 \-\-raw\-binary > temp_stats_log\&.raw
.fi
.if n \{\
.RE
.\}
.sp
It is probably a bad idea to not redirect stdout when using this mode\&.
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite
  070701015D6D42000081A4000003E80000006400000001642C0FB6000049B4000000000000004A00000000000000000000003200000000nvme-cli/Documentation/nvme-intel-temp-stats.html <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-intel-temp-stats(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-intel-temp-stats(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-intel-temp-stats -
   Send NVMe SMART log page request, returns result and log
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme intel temp-stats</em> &lt;device&gt; [--raw-binary | -b]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>Retrieves the NVMe Intel Additional SMART log page from the device and
provides the returned structure.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).</p></div>
<div class="paragraph"><p>On success, the returned smart log structure may be returned in one of
several ways depending on the option flags; the structure may parsed by
the program and printed in a readable format or the raw buffer may be
printed to stdout for another program to parse.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-b
</dt>
<dt class="hdlist1">
--raw-binary
</dt>
<dd>
<p>
        Print the raw temperature stats log buffer to stdout.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Print the temperature stats log page in a human readable format:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme intel temp-stats /dev/nvme0</code></pre>
</div></div>
</li>
<li>
<p>
Print the raw SMART log to a file:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme intel temp-stats /dev/nvme0 --raw-binary &gt; temp_stats_log.raw</code></pre>
</div></div>
<div class="paragraph"><p>It is probably a bad idea to not redirect stdout when using this mode.</p></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
070701015D6D43000081A4000003E80000006400000001642C0FB600000B29000000000000004A00000000000000000000002B00000000nvme-cli/Documentation/nvme-io-mgmt-recv.1    '\" t
.\"     Title: nvme-io-mgmt-recv
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-IO\-MGMT\-RECV" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-io-mgmt-recv \- I/O Management Receive command
.SH "SYNOPSIS"
.sp
.nf
\fInvme io\-mgmt\-recv\fR <device> [\-\-namespace\-id=<NUM> | \-n <NUM>]
                             [\-\-mos=<NUM> | \-s <NUM>]
                             [\-\-mo=<NUM> | \-m <NUM>]
                             [\-\-data=<FILE> | \-d <FILE>]
                             [\-\-data\-len=<NUM> | \-l <NUM>]
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, issues the I/O Management Receive command with the requested management operation (mo) and management operation specific parameter (mos)\&. This is the generic interface provided for forward compatibility as new operations are added that this program isn\(cqt aware of at the time of its development\&. As such, this is a generic command that does not do any additional decoding for specific types of data received\&. This will only report the data as a hex dump, or binary\&.
.SH "OPTIONS"
.PP
\-n <NUM>, \-\-namespace\-id=<NUM>
.RS 4
Use the provided namespace id for the command\&. If not provided, the namespace id of the block device will be used\&. If the command is issued to a non\-block device, the parameter is required\&.
.RE
.PP
\-d <FILE>, \-\-data=<FILE>
.RS 4
File to write received data into\&. If unspecified, received data will be hex dumped to the standard output stream\&.
.RE
.PP
\-l <NUM>, \-\-data\-len=<NUM>
.RS 4
Received data buffer length
.RE
.PP
\-m <NUM>, \-\-mo <NUM>
.RS 4
Management Operation to perform\&.
.RE
.PP
\-s <NUM>, \-\-mos=<NUM>
.RS 4
Management Operation Specific parameter\&.
.RE
.SH "NVME"
.sp
Part of nvme\-cli
   070701015D6D44000081A4000003E80000006400000001642C0FB600004B3C000000000000004A00000000000000000000002E00000000nvme-cli/Documentation/nvme-io-mgmt-recv.html <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-io-mgmt-recv(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-io-mgmt-recv(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-io-mgmt-recv -
   I/O Management Receive command
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme io-mgmt-recv</em> &lt;device&gt; [--namespace-id=&lt;NUM&gt; | -n &lt;NUM&gt;]
                             [--mos=&lt;NUM&gt; | -s &lt;NUM&gt;]
                             [--mo=&lt;NUM&gt; | -m &lt;NUM&gt;]
                             [--data=&lt;FILE&gt; | -d &lt;FILE&gt;]
                             [--data-len=&lt;NUM&gt; | -l &lt;NUM&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, issues the I/O Management Receive command with the
requested management operation (mo) and management operation specific parameter
(mos). This is the generic interface provided for forward compatibility as new
operations are added that this program isn&#8217;t aware of at the time of its
development. As such, this is a generic command that does not do any additional
decoding for specific types of data received. This will only report the data as
a hex dump, or binary.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-n &lt;NUM&gt;
</dt>
<dt class="hdlist1">
--namespace-id=&lt;NUM&gt;
</dt>
<dd>
<p>
        Use the provided namespace id for the command. If not provided, the
        namespace id of the block device will be used. If the command is issued
        to a non-block device, the parameter is required.
</p>
</dd>
<dt class="hdlist1">
-d &lt;FILE&gt;
</dt>
<dt class="hdlist1">
--data=&lt;FILE&gt;
</dt>
<dd>
<p>
        File to write received data into. If unspecified, received data will be
        hex dumped to the standard output stream.
</p>
</dd>
<dt class="hdlist1">
-l &lt;NUM&gt;
</dt>
<dt class="hdlist1">
--data-len=&lt;NUM&gt;
</dt>
<dd>
<p>
        Received data buffer length
</p>
</dd>
<dt class="hdlist1">
-m &lt;NUM&gt;
</dt>
<dt class="hdlist1">
--mo &lt;NUM&gt;
</dt>
<dd>
<p>
        Management Operation to perform.
</p>
</dd>
<dt class="hdlist1">
-s &lt;NUM&gt;
</dt>
<dt class="hdlist1">
--mos=&lt;NUM&gt;
</dt>
<dd>
<p>
        Management Operation Specific parameter.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of nvme-cli</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
070701015D6D45000081A4000003E80000006400000001642C0FB600000AD4000000000000004A00000000000000000000002B00000000nvme-cli/Documentation/nvme-io-mgmt-send.1    '\" t
.\"     Title: nvme-io-mgmt-send
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-IO\-MGMT\-SEND" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-io-mgmt-send \- I/O Management Send command
.SH "SYNOPSIS"
.sp
.nf
\fInvme io\-mgmt\-send\fR <device> [\-\-namespace\-id=<NUM> | \-n <NUM>]
                             [\-\-mos=<NUM> | \-s <NUM>]
                             [\-\-mo=<NUM> | \-m <NUM>]
                             [\-\-data=<FILE> | \-d <FILE>]
                             [\-\-data\-len=<NUM> | \-l <NUM>]
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, issues the I/O Management Send command with the requested management operation (mo) and management operation specific parameter (mos)\&. This is the generic interface provided for forward compatibility as new operations are added that this program isn\(cqt aware of at the time of its development\&. As such, this is a generic command that does not provide any convenience parameters to produce the binary payload\&.
.SH "OPTIONS"
.PP
\-n <NUM>, \-\-namespace\-id=<NUM>
.RS 4
Use the provided namespace id for the command\&. If not provided, the namespace id of the block device will be used\&. If the command is issued to a non\-block device, the parameter is required\&.
.RE
.PP
\-d <FILE>, \-\-data=<FILE>
.RS 4
File to read payload from\&. If unspecified, data will be read from the standard input stream\&.
.RE
.PP
\-l <NUM>, \-\-data\-len=<NUM>
.RS 4
Payload data buffer length
.RE
.PP
\-m <NUM>, \-\-mo <NUM>
.RS 4
Management Operation to perform\&.
.RE
.PP
\-s <NUM>, \-\-mos=<NUM>
.RS 4
Management Operation Specific parameter\&.
.RE
.SH "NVME"
.sp
Part of nvme\-cli
070701015D6D46000081A4000003E80000006400000001642C0FB600004AE8000000000000004A00000000000000000000002E00000000nvme-cli/Documentation/nvme-io-mgmt-send.html <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-io-mgmt-send(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-io-mgmt-send(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-io-mgmt-send -
   I/O Management Send command
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme io-mgmt-send</em> &lt;device&gt; [--namespace-id=&lt;NUM&gt; | -n &lt;NUM&gt;]
                             [--mos=&lt;NUM&gt; | -s &lt;NUM&gt;]
                             [--mo=&lt;NUM&gt; | -m &lt;NUM&gt;]
                             [--data=&lt;FILE&gt; | -d &lt;FILE&gt;]
                             [--data-len=&lt;NUM&gt; | -l &lt;NUM&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, issues the I/O Management Send command with the
requested management operation (mo) and management operation specific parameter
(mos). This is the generic interface provided for forward compatibility as new
operations are added that this program isn&#8217;t aware of at the time of its
development. As such, this is a generic command that does not provide any
convenience parameters to produce the binary payload.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-n &lt;NUM&gt;
</dt>
<dt class="hdlist1">
--namespace-id=&lt;NUM&gt;
</dt>
<dd>
<p>
        Use the provided namespace id for the command. If not provided, the
        namespace id of the block device will be used. If the command is issued
        to a non-block device, the parameter is required.
</p>
</dd>
<dt class="hdlist1">
-d &lt;FILE&gt;
</dt>
<dt class="hdlist1">
--data=&lt;FILE&gt;
</dt>
<dd>
<p>
        File to read payload from. If unspecified, data will be read from the
        standard input stream.
</p>
</dd>
<dt class="hdlist1">
-l &lt;NUM&gt;
</dt>
<dt class="hdlist1">
--data-len=&lt;NUM&gt;
</dt>
<dd>
<p>
        Payload data buffer length
</p>
</dd>
<dt class="hdlist1">
-m &lt;NUM&gt;
</dt>
<dt class="hdlist1">
--mo &lt;NUM&gt;
</dt>
<dd>
<p>
        Management Operation to perform.
</p>
</dd>
<dt class="hdlist1">
-s &lt;NUM&gt;
</dt>
<dt class="hdlist1">
--mos=&lt;NUM&gt;
</dt>
<dd>
<p>
        Management Operation Specific parameter.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of nvme-cli</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
070701015D6D47000081A4000003E80000006400000001642C0FB6000015EB000000000000004A00000000000000000000002A00000000nvme-cli/Documentation/nvme-io-passthru.1 '\" t
.\"     Title: nvme-io-passthru
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-IO\-PASSTHRU" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-io-passthru \- Submit an arbitrary io command, return results
.SH "SYNOPSIS"
.sp
.nf
\fInvme\-io\-passthru\fR <device> [\-\-opcode=<opcode> | \-o <opcode>]
                [\-\-flags=<flags> | \-f <flags>] [\-rsvd=<rsvd> | \-R <rsvd>]
                [\-\-namespace\-id=<nsid> | \-nsid <nsid>]
                [\-\-cdw2=<cdw2>] [\-\-cdw3=<cdw3>] [\-\-cdw10=<cdw10>]
                [\-\-cdw11=<cdw11>] [\-\-cdw12=<cdw12>] [\-\-cdw13=<cdw13>]
                [\-\-cdw14=<cdw14>] [\-\-cdw15=<cdw15>]
                [\-\-data\-len=<data\-len> | \-l <data\-len>]
                [\-\-metadata\-len=<len> | \-m <len>]
                [\-\-read | \-r ] [\-\-write | \-w]
                [\-\-input\-file=<file> | \-i <file>]
                [\-\-metadata=<file> | \-M <file>]
                [\-\-timeout=<to> | \-t <to>]
                [\-\-show\-command | \-s]
                [\-\-dry\-run | \-d]
                [\-\-raw\-binary | \-b]
                [\-\-prefill=<prefill> | \-p <prefill>]
                [\-\-latency | \-T]
.fi
.SH "DESCRIPTION"
.sp
Submits an arbitrary NVMe IO command and returns the applicable results\&. This may be the simply the command\(cqs result and status, or may also include a buffer if the command returns one\&. This command does no interpretation of the opcodes or options\&.
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1)\&.
.sp
On success, the returned structure (if applicable) may be returned in one of several ways depending on the option flags; the structure may printed by the program as a hex dump, or may be returned as a raw buffer printed to stdout for another program to parse\&.
.SH "OPTIONS"
.PP
\-o <opcode>, \-\-opcode=<opcode>
.RS 4
The NVMe opcode to send to the device in the command
.RE
.PP
\-f <flags>, \-\-flags=<flags>
.RS 4
The NVMe command flags to send to the device in the command
.RE
.PP
\-R <rsvd>, \-\-rsvd=<rsvd>
.RS 4
The value for the reserved field in the command\&.
.RE
.PP
\-n <nsid>, \-\-namespace\-id=<nsid>
.RS 4
The value for the ns\-id in the command\&. Defaults to
\fI0\fR\&.
.RE
.PP
\-\-cdw[2\-3,10\-15]=<cdw>
.RS 4
Specifies the command dword value for that specified entry in the command
.RE
.PP
\-r, \-\-read, \-w, \-\-write
.RS 4
Used for the data\-direction for the command and required for commands sending/receiving data\&. Don\(cqt use both read and write at the same time\&.
.RE
.PP
\-i <file>, \-\-input\-file=<file>
.RS 4
If the command is a data\-out (write) command, use this file to fill the buffer sent to the device\&. If no file is given, assumed to use STDIN\&. If the command is a data\-in (read) command, the data returned from the device will be saved here\&.
.RE
.PP
\-M <file>, \-\-metadata=<file>
.RS 4
If the command is a data\-out (write) command, use this file to fill the metadata buffer sent to the device\&. If no file is given, assumed to use STDIN\&. If the command is a data\-in (read) command, the metadata returned from the device will be saved here\&.
.RE
.PP
\-l <data\-len>, \-\-data\-len=<data\-len>
.RS 4
The data length for the buffer used for this command\&.
.RE
.PP
\-m <data\-len>, \-\-metadata\-len=<data\-len>
.RS 4
The metadata length for the buffer used for this command\&.
.RE
.PP
\-s, \-\-show\-cmd
.RS 4
Print out the command to be sent\&.
.RE
.PP
\-d, \-\-dry\-run
.RS 4
Do not actually send the command\&. If want to use \-\-dry\-run option, \-\-show\-cmd option
\fImust\fR
be set\&. Otherwise \-\-dry\-run option will be
\fIignored\fR\&.
.RE
.PP
\-b, \-\-raw\-binary
.RS 4
Print the raw returned buffer to stdout if the command returns data or a structure\&.
.RE
.PP
\-p <prefill>, \-\-prefill <prefill>
.RS 4
Prefill the buffer with a predetermined byte value\&. Defaults to 0\&. This may be useful if the data you are writing is shorter than the required buffer, and you need to pad it with a known value\&. It may also be useful if you need to confirm if a device is overwriting a buffer on a data\-in command\&.
.RE
.PP
\-T, \-\-latency
.RS 4
Print out the latency the IOCTL took (in us)\&.
.RE
.SH "EXAMPLES"
.sp
nvme io\-passthru /dev/nvme0n1 \-\-opcode=2 \-\-namespace\-id=1 \-\-data\-len=4096 \-\-read \-\-cdw10=0 \-\-cdw11=0 \-\-cdw12=0x70000 \-\-raw\-binary
.SH "NVME"
.sp
Part of the nvme\-user suite
 070701015D6D48000081A4000003E80000006400000001642C0FB600005A6D000000000000004A00000000000000000000002D00000000nvme-cli/Documentation/nvme-io-passthru.html  <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-io-passthru(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-io-passthru(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-io-passthru -
   Submit an arbitrary io command, return results
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme-io-passthru</em> &lt;device&gt; [--opcode=&lt;opcode&gt; | -o &lt;opcode&gt;]
                [--flags=&lt;flags&gt; | -f &lt;flags&gt;] [-rsvd=&lt;rsvd&gt; | -R &lt;rsvd&gt;]
                [--namespace-id=&lt;nsid&gt; | -nsid &lt;nsid&gt;]
                [--cdw2=&lt;cdw2&gt;] [--cdw3=&lt;cdw3&gt;] [--cdw10=&lt;cdw10&gt;]
                [--cdw11=&lt;cdw11&gt;] [--cdw12=&lt;cdw12&gt;] [--cdw13=&lt;cdw13&gt;]
                [--cdw14=&lt;cdw14&gt;] [--cdw15=&lt;cdw15&gt;]
                [--data-len=&lt;data-len&gt; | -l &lt;data-len&gt;]
                [--metadata-len=&lt;len&gt; | -m &lt;len&gt;]
                [--read | -r ] [--write | -w]
                [--input-file=&lt;file&gt; | -i &lt;file&gt;]
                [--metadata=&lt;file&gt; | -M &lt;file&gt;]
                [--timeout=&lt;to&gt; | -t &lt;to&gt;]
                [--show-command | -s]
                [--dry-run | -d]
                [--raw-binary | -b]
                [--prefill=&lt;prefill&gt; | -p &lt;prefill&gt;]
                [--latency | -T]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>Submits an arbitrary NVMe IO command and returns the applicable
results. This may be the simply the command&#8217;s result and status, or may
also include a buffer if the command returns one. This command does no
interpretation of the opcodes or options.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).</p></div>
<div class="paragraph"><p>On success, the returned structure (if applicable) may be returned in
one of several ways depending on the option flags; the structure may
printed by the program as a hex dump, or may be returned as a raw buffer
printed to stdout for another program to parse.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-o &lt;opcode&gt;
</dt>
<dt class="hdlist1">
--opcode=&lt;opcode&gt;
</dt>
<dd>
<p>
        The NVMe opcode to send to the device in the command
</p>
</dd>
<dt class="hdlist1">
-f &lt;flags&gt;
</dt>
<dt class="hdlist1">
--flags=&lt;flags&gt;
</dt>
<dd>
<p>
        The NVMe command flags to send to the device in the command
</p>
</dd>
<dt class="hdlist1">
-R &lt;rsvd&gt;
</dt>
<dt class="hdlist1">
--rsvd=&lt;rsvd&gt;
</dt>
<dd>
<p>
        The value for the reserved field in the command.
</p>
</dd>
<dt class="hdlist1">
-n &lt;nsid&gt;
</dt>
<dt class="hdlist1">
--namespace-id=&lt;nsid&gt;
</dt>
<dd>
<p>
        The value for the ns-id in the command. Defaults to <em>0</em>.
</p>
</dd>
<dt class="hdlist1">
--cdw[2-3,10-15]=&lt;cdw&gt;
</dt>
<dd>
<p>
        Specifies the command dword value for that specified entry in
        the command
</p>
</dd>
<dt class="hdlist1">
-r
</dt>
<dt class="hdlist1">
--read
</dt>
<dt class="hdlist1">
-w
</dt>
<dt class="hdlist1">
--write
</dt>
<dd>
<p>
        Used for the data-direction for the command and required for
        commands sending/receiving data. Don&#8217;t use both read and write
        at the same time.
</p>
</dd>
<dt class="hdlist1">
-i &lt;file&gt;
</dt>
<dt class="hdlist1">
--input-file=&lt;file&gt;
</dt>
<dd>
<p>
        If the command is a data-out (write) command, use this file
        to fill the buffer sent to the device. If no file is given, assumed to
        use STDIN. If the command is a data-in (read) command, the data
        returned from the device will be saved here.
</p>
</dd>
<dt class="hdlist1">
-M &lt;file&gt;
</dt>
<dt class="hdlist1">
--metadata=&lt;file&gt;
</dt>
<dd>
<p>
        If the command is a data-out (write) command, use this file
        to fill the metadata buffer sent to the device. If no file is given,
        assumed to use STDIN. If the command is a data-in (read) command, the
        metadata returned from the device will be saved here.
</p>
</dd>
<dt class="hdlist1">
-l &lt;data-len&gt;
</dt>
<dt class="hdlist1">
--data-len=&lt;data-len&gt;
</dt>
<dd>
<p>
        The data length for the buffer used for this command.
</p>
</dd>
<dt class="hdlist1">
-m &lt;data-len&gt;
</dt>
<dt class="hdlist1">
--metadata-len=&lt;data-len&gt;
</dt>
<dd>
<p>
        The metadata length for the buffer used for this command.
</p>
</dd>
<dt class="hdlist1">
-s
</dt>
<dt class="hdlist1">
--show-cmd
</dt>
<dd>
<p>
        Print out the command to be sent.
</p>
</dd>
<dt class="hdlist1">
-d
</dt>
<dt class="hdlist1">
--dry-run
</dt>
<dd>
<p>
        Do not actually send the command. If want to use --dry-run option,
        --show-cmd option <em>must</em> be set. Otherwise --dry-run option will be
        <em>ignored</em>.
</p>
</dd>
<dt class="hdlist1">
-b
</dt>
<dt class="hdlist1">
--raw-binary
</dt>
<dd>
<p>
        Print the raw returned buffer to stdout if the command returns
        data or a structure.
</p>
</dd>
<dt class="hdlist1">
-p &lt;prefill&gt;
</dt>
<dt class="hdlist1">
--prefill &lt;prefill&gt;
</dt>
<dd>
<p>
        Prefill the buffer with a predetermined byte value. Defaults to 0.
        This may be useful if the data you are writing is shorter
        than the required buffer, and you need to pad it with a known
        value. It may also be useful if you need to confirm if a device
        is overwriting a buffer on a data-in command.
</p>
</dd>
<dt class="hdlist1">
-T
</dt>
<dt class="hdlist1">
--latency
</dt>
<dd>
<p>
        Print out the latency the IOCTL took (in us).
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="paragraph"><p>nvme io-passthru /dev/nvme0n1 --opcode=2 --namespace-id=1 --data-len=4096 --read --cdw10=0 --cdw11=0 --cdw12=0x70000 --raw-binary</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
   070701015D6D49000081A4000003E80000006400000001642C0FB600000ABC000000000000004A00000000000000000000002D00000000nvme-cli/Documentation/nvme-lba-status-log.1  '\" t
.\"     Title: nvme-lba-status-log
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-LBA\-STATUS\-L" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-lba-status-log \- Send LBA Status Log Page request returns result and log
.SH "SYNOPSIS"
.sp
.nf
\fInvme lba\-status\-log\fR <device> [\-\-rae | \-r] [\-\-output\-format=<fmt> | \-o <fmt>]
.fi
.SH "DESCRIPTION"
.sp
Retrieves the NVMe LBA Status Log Page from an NVMe device and provides the returned structure\&.
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1)\&.
.sp
On success, the returned LBA Status Log Page structure may be returned in one of several ways depending on the option flags; the structure may parsed by the program and printed in a readable format or the raw buffer may be printed to stdout for another program to parse\&.
.SH "OPTIONS"
.PP
\-r, \-\-rae
.RS 4
Retain an Asynchronous Event\&.
.RE
.PP
\-o <format>, \-\-output\-format=<format>
.RS 4
Set the reporting format to
\fInormal\fR,
\fIjson\fR, or
\fIbinary\fR\&. Only one output format can be used at a time\&.
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Print the LBA Status Log page in a normal readable format:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme lba\-status\-log /dev/nvme0
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Show the output in json format
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme lba\-status\-log /dev/nvme0 \-o json
+

NVME
.fi
.if n \{\
.RE
.\}
.RE
.sp
Part of the nvme\-user suite
070701015D6D4A000081A4000003E80000006400000001642C0FB6000049DD000000000000004A00000000000000000000003000000000nvme-cli/Documentation/nvme-lba-status-log.html   <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-lba-status-log(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-lba-status-log(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-lba-status-log -
   Send LBA Status Log Page request returns result and log
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme lba-status-log</em> &lt;device&gt; [--rae | -r] [--output-format=&lt;fmt&gt; | -o &lt;fmt&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>Retrieves the NVMe LBA Status Log Page from an NVMe device and provides
the returned structure.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).</p></div>
<div class="paragraph"><p>On success, the returned LBA Status Log Page structure may be returned
in one of several ways depending on the option flags; the structure may
parsed by the program and printed in a readable format or the raw buffer
may be printed to stdout for another program to parse.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-r
</dt>
<dt class="hdlist1">
--rae
</dt>
<dd>
<p>
        Retain an Asynchronous Event.
</p>
</dd>
<dt class="hdlist1">
-o &lt;format&gt;
</dt>
<dt class="hdlist1">
--output-format=&lt;format&gt;
</dt>
<dd>
<p>
    Set the reporting format to <em>normal</em>, <em>json</em>, or <em>binary</em>.
    Only one output format can be used at a time.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Print the LBA Status Log page in a normal readable format:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme lba-status-log /dev/nvme0</code></pre>
</div></div>
</li>
<li>
<p>
Show the output in json format
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme lba-status-log /dev/nvme0 -o json
+

NVME</code></pre>
</div></div>
</li>
</ul></div>
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
   070701015D6D4B000081A4000003E80000006400000001642C0FB600000AE5000000000000004A00000000000000000000002800000000nvme-cli/Documentation/nvme-list-ctrl.1   '\" t
.\"     Title: nvme-list-ctrl
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-LIST\-CTRL" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-list-ctrl \- Send NVMe Identify List Controllers, return result and structure
.SH "SYNOPSIS"
.sp
.nf
\fInvme list\-ctrl\fR <device> [\-\-cntid=<cntid> | \-c <cntid>]
                        [\-\-namespace\-id=<nsid> | \-n <nsid>] [\-o <fmt> | \-\-output\-format=<fmt>]
DESCRIPTION
.fi
.sp
.nf
For the NVMe device given, sends an identify command for controller list
and provides the result and returned structure\&. This uses either mode
12h or 13h depending on the requested namespace identifier\&.

The <device> parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1)\&.
The starting controller in the list always begins with 0 unless the
`\*(Aq\-\-cntid\*(Aq` option is given to override\&.

On success, the controller array is printed for each index and controller
identifier\&.

OPTIONS
.fi
.PP
\-c <cntid>, \-\-cntid=<cntid>
.RS 4
Retrieve the identify list structure starting with the given controller id\&.
.RE
.PP
\-n <nsid>, \-\-namespace\-id=<nsid>
.RS 4
If provided, will request the controllers attached to the specified namespace\&. If no namespace is given, or set to 0, the command requests the controller list for the entire subsystem, whether or not they are attached to namespace(s)\&.
.RE
.PP
\-o <format>, \-\-output\-format=<format>
.RS 4
Set the reporting format to
\fInormal\fR
or
\fIjson\fR\&. Only one output format can be used at a time\&.
.RE
.SH "EXAMPLES"
.sp
No examples yet\&.
.SH "NVME"
.sp
Part of the nvme\-user suite
   070701015D6D4C000081A4000003E80000006400000001642C0FB600004A40000000000000004A00000000000000000000002B00000000nvme-cli/Documentation/nvme-list-ctrl.html    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-list-ctrl(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-list-ctrl(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-list-ctrl -
   Send NVMe Identify List Controllers, return result and structure
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme list-ctrl</em> &lt;device&gt; [--cntid=&lt;cntid&gt; | -c &lt;cntid&gt;]
                        [--namespace-id=&lt;nsid&gt; | -n &lt;nsid&gt;] [-o &lt;fmt&gt; | --output-format=&lt;fmt&gt;]
DESCRIPTION</pre>
<div class="attribution">
</div></div>
<div class="listingblock">
<div class="content">
<pre><code>For the NVMe device given, sends an identify command for controller list
and provides the result and returned structure. This uses either mode
12h or 13h depending on the requested namespace identifier.

The &lt;device&gt; parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).
The starting controller in the list always begins with 0 unless the
`'--cntid'` option is given to override.

On success, the controller array is printed for each index and controller
identifier.

OPTIONS</code></pre>
</div></div>
<div class="dlist"><dl>
<dt class="hdlist1">
-c &lt;cntid&gt;
</dt>
<dt class="hdlist1">
--cntid=&lt;cntid&gt;
</dt>
<dd>
<p>
        Retrieve the identify list structure starting with the given controller id.
</p>
</dd>
<dt class="hdlist1">
-n &lt;nsid&gt;
</dt>
<dt class="hdlist1">
--namespace-id=&lt;nsid&gt;
</dt>
<dd>
<p>
        If provided, will request the controllers attached to the
        specified namespace. If no namespace is given, or set to 0, the
        command requests the controller list for the entire subsystem,
        whether or not they are attached to namespace(s).
</p>
</dd>
<dt class="hdlist1">
-o &lt;format&gt;
</dt>
<dt class="hdlist1">
--output-format=&lt;format&gt;
</dt>
<dd>
<p>
        Set the reporting format to <em>normal</em> or <em>json</em>. Only one output
        format can be used at a time.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="paragraph"><p>No examples yet.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
070701015D6D4D000081A4000003E80000006400000001642C0FB600000996000000000000004A00000000000000000000002A00000000nvme-cli/Documentation/nvme-list-endgrp.1 '\" t
.\"     Title: nvme-list-endgrp
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-LIST\-ENDGRP" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-list-endgrp \- Send NVMe Identify Endurance Group List, return result and structure
.SH "SYNOPSIS"
.sp
.nf
\fInvme list\-endgrp\fR <device> [\-\-endgrp\-id=<endgrp\-id> | \-i <endgrp\-id>]
                        [\-o <fmt> | \-\-output\-format=<fmt>]
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, sends an identify command for endurance group list and provides the result and returned structure\&.
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1)\&. An Endurance Group List of up to 2,047 Endurance Group Identifiers in increasing order is returned containing an Endurance Group Identifier greater than or equal to the value specified in the CDW11\&.ENDGID field\&.
.SH "OPTIONS"
.PP
\-i <endgrp\-id>, \-\-endgrp\-id=<endgrp\-id>
.RS 4
Retrieve the identify endurance group list structure starting for the given endurance group id\&.
.RE
.PP
\-o <format>, \-\-output\-format=<format>
.RS 4
Set the reporting format to
\fInormal\fR
or
\fIjson\fR\&. Only one output format can be used at a time\&.
.RE
.SH "EXAMPLES"
.sp
No examples yet\&.
.SH "NVME"
.sp
Part of the nvme\-user suite
  070701015D6D4E000081A4000003E80000006400000001642C0FB60000491B000000000000004A00000000000000000000002D00000000nvme-cli/Documentation/nvme-list-endgrp.html  <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-list-endgrp(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-list-endgrp(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-list-endgrp -
   Send NVMe Identify Endurance Group List, return result and structure
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme list-endgrp</em> &lt;device&gt; [--endgrp-id=&lt;endgrp-id&gt; | -i &lt;endgrp-id&gt;]
                        [-o &lt;fmt&gt; | --output-format=&lt;fmt&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, sends an identify command for endurance group list
and provides the result and returned structure.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).
An Endurance Group List of up to 2,047 Endurance Group Identifiers in
increasing order is returned containing an Endurance Group Identifier greater
than or equal to the value specified in the CDW11.ENDGID field.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-i &lt;endgrp-id&gt;
</dt>
<dt class="hdlist1">
--endgrp-id=&lt;endgrp-id&gt;
</dt>
<dd>
<p>
        Retrieve the identify endurance group list structure starting for the given
    endurance group id.
</p>
</dd>
<dt class="hdlist1">
-o &lt;format&gt;
</dt>
<dt class="hdlist1">
--output-format=&lt;format&gt;
</dt>
<dd>
<p>
        Set the reporting format to <em>normal</em> or <em>json</em>. Only one output
        format can be used at a time.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="paragraph"><p>No examples yet.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
 070701015D6D4F000081A4000003E80000006400000001642C0FB600000CB3000000000000004A00000000000000000000002600000000nvme-cli/Documentation/nvme-list-ns.1 '\" t
.\"     Title: nvme-id-ns
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-ID\-NS" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-list-ns \- Send NVMe Identify List Namespaces, return result and structure
.SH "SYNOPSIS"
.sp
.nf
\fInvme list\-ns\fR <device> [\-\-namespace\-id=<nsid> | \-n <nsid>]
                        [\-\-csi=<command_set_identifier> | \-y <command_set_identifier>]
                        [\-\-all | \-a] [\-\-output\-format=<fmt> | \-o <fmt>]
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, sends an identify command for namespace list and provides the result and returned structure\&.
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1)\&. If the starting namespace in the list always begins with 0 unless the \*(Aq\-\-namespace\-id\*(Aq option is given to override\&.
.sp
On success, the namespace array is printed for each index and nsid for a valid nsid\&.
.SH "OPTIONS"
.PP
\-n <nsid>, \-\-namespace\-id=<nsid>
.RS 4
Retrieve the identify list structure starting with the given nsid\&.
.RE
.PP
\-y <command_set_identifier>, \-\-csi=<command_set_identifier>
.RS 4
If this value is given, retrieve the identify list structure associated with the specified I/O command set\&.
.RE
.PP
\-a, \-\-all
.RS 4
Retrieve the identify list structure for all namespaces in the subsystem, whether attached or inactive\&.
.RE
.PP
\-o <format>, \-\-output\-format=<format>
.RS 4
Set the reporting format to
\fInormal\fR, or
\fIjson\fR\&. Only one output format can be used at a time\&.
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Print the namespaces present for zoned command set in JSON format
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme list\-ns /dev/nvme0 \-y 2 \-a \-o json
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Print the namespaces present for NVM Command Set in normal format
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme list\-ns /dev/nvme0
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite
 070701015D6D50000081A4000003E80000006400000001642C0FB600004CEB000000000000004A00000000000000000000002900000000nvme-cli/Documentation/nvme-list-ns.html  <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-id-ns(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-id-ns(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-list-ns -
   Send NVMe Identify List Namespaces, return result and structure
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme list-ns</em> &lt;device&gt; [--namespace-id=&lt;nsid&gt; | -n &lt;nsid&gt;]
                        [--csi=&lt;command_set_identifier&gt; | -y &lt;command_set_identifier&gt;]
                        [--all | -a] [--output-format=&lt;fmt&gt; | -o &lt;fmt&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, sends an identify command for namespace list
and provides the result and returned structure.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).
If the starting namespace in the list always begins with 0 unless the
<code>'--namespace-id'</code> option is given to override.</p></div>
<div class="paragraph"><p>On success, the namespace array is printed for each index and nsid for
a valid nsid.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-n &lt;nsid&gt;
</dt>
<dt class="hdlist1">
--namespace-id=&lt;nsid&gt;
</dt>
<dd>
<p>
        Retrieve the identify list structure starting with the given nsid.
</p>
</dd>
<dt class="hdlist1">
-y &lt;command_set_identifier&gt;
</dt>
<dt class="hdlist1">
--csi=&lt;command_set_identifier&gt;
</dt>
<dd>
<p>
        If this value is given, retrieve the identify list structure associated
        with the specified I/O command set.
</p>
</dd>
<dt class="hdlist1">
-a
</dt>
<dt class="hdlist1">
--all
</dt>
<dd>
<p>
        Retrieve the identify list structure for all namespaces in the
        subsystem, whether attached or inactive.
</p>
</dd>
<dt class="hdlist1">
-o &lt;format&gt;
</dt>
<dt class="hdlist1">
--output-format=&lt;format&gt;
</dt>
<dd>
<p>
    Set the reporting format to <em>normal</em>, or <em>json</em>.
    Only one output format can be used at a time.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Print the namespaces present for zoned command set in JSON format
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme list-ns /dev/nvme0 -y 2 -a -o json</code></pre>
</div></div>
</li>
<li>
<p>
Print the namespaces present for NVM Command Set in normal format
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme list-ns /dev/nvme0</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
 070701015D6D51000081A4000003E80000006400000001642C0FB600000DA9000000000000004A00000000000000000000002A00000000nvme-cli/Documentation/nvme-list-subsys.1 '\" t
.\"     Title: nvme-list-subsys
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-LIST\-SUBSYS" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-list-subsys \- List all NVMe subsystems
.SH "SYNOPSIS"
.sp
.nf
\fInvme list\-subsys\fR [\-o <fmt> | \-\-output\-format=<fmt>] <device>
.fi
.SH "DESCRIPTION"
.sp
Scan the sysfs tree for NVM Express subsystems and return the controllers for those subsystems as well as some pertinent information about them\&. If a device is given, print out only the values for the controllers and subsystems leading to the device\&.
.SH "OPTIONS"
.PP
\-o <format>, \-\-output\-format=<format>
.RS 4
Set the reporting format to
\fInormal\fR
or
\fIjson\fR\&. Only one output format can be used at a time\&.
.RE
.SH "EXAMPLES"
.sp
.if n \{\
.RS 4
.\}
.nf
\m[blue]\fBroot@host\fR\m[]\&\s-2\u[1]\d\s+2# nvme list\-subsys
nvme\-subsys0 \- NQN=nvmf\-test
\e
 +\- nvme0 rdma traddr=1\&.1\&.1\&.3,trsvcid=4420,host_traddr=1\&.1\&.1\&.1
 +\- nvme1 rdma traddr=1\&.1\&.1\&.3,trsvcid=4420,host_traddr=1\&.1\&.1\&.2
nvme\-subsys1 \- NQN=nvmf\-test2
\e
 +\- nvme2 rdma traddr=1\&.1\&.1\&.3,trsvcid=4420,host_traddr=1\&.1\&.1\&.2
 +\- nvme3 rdma traddr=1\&.1\&.1\&.3,trsvcid=4420,host_traddr=1\&.1\&.1\&.1
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
\m[blue]\fBroot@host\fR\m[]\&\s-2\u[1]\d\s+2# nvme list\-subsys \-o json
{
  "Subsystems" : [
    {
      "Name" : "nvme\-subsys0",
      "NQN" : "nvmf\-test"
    },
    {
      "Paths" : [
        {
          "Name" : "nvme0",
          "Transport" : "rdma",
          "Address" : "traddr=1\&.1\&.1\&.3,trsvcid=4420,host_traddr=1\&.1\&.1\&.1"
        },
        {
          "Name" : "nvme1",
          "Transport" : "rdma",
          "Address" : "traddr=1\&.1\&.1\&.3,trsvcid=4420,host_traddr=1\&.1\&.1\&.2"
        }
      ]
    },
    {
      "Name" : "nvme\-subsys1",
      "NQN" : "nvmf\-test2"
    },
    {
      "Paths" : [
        {
          "Name" : "nvme2",
          "Transport" : "rdma",
          "Address" : "traddr=1\&.1\&.1\&.3,trsvcid=4420,host_traddr=1\&.1\&.1\&.2"
        },
        {
          "Name" : "nvme3",
          "Transport" : "rdma",
          "Address" : "traddr=1\&.1\&.1\&.3,trsvcid=4420,host_traddr=1\&.1\&.1\&.1"
        }
      ]
    }
  ]
}
.fi
.if n \{\
.RE
.\}
.SH "NVME"
.sp
Part of the nvme\-user suite
.SH "NOTES"
.IP " 1." 4
root@host
.RS 4
\%mailto:root@host
.RE
   070701015D6D52000081A4000003E80000006400000001642C0FB600004C5C000000000000004A00000000000000000000002D00000000nvme-cli/Documentation/nvme-list-subsys.html  <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-list-subsys(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-list-subsys(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-list-subsys -
   List all NVMe subsystems
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme list-subsys</em> [-o &lt;fmt&gt; | --output-format=&lt;fmt&gt;] &lt;device&gt;</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>Scan the sysfs tree for NVM Express subsystems and return the controllers
for those subsystems as well as some pertinent information about them.
If a device is given, print out only the values for the controllers
and subsystems leading to the device.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-o &lt;format&gt;
</dt>
<dt class="hdlist1">
--output-format=&lt;format&gt;
</dt>
<dd>
<p>
        Set the reporting format to <em>normal</em> or <em>json</em>. Only one output
        format can be used at a time.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><a href="mailto:root@host">root@host</a># nvme list-subsys
nvme-subsys0 - NQN=nvmf-test
\
 +- nvme0 rdma traddr=1.1.1.3,trsvcid=4420,host_traddr=1.1.1.1
 +- nvme1 rdma traddr=1.1.1.3,trsvcid=4420,host_traddr=1.1.1.2
nvme-subsys1 - NQN=nvmf-test2
\
 +- nvme2 rdma traddr=1.1.1.3,trsvcid=4420,host_traddr=1.1.1.2
 +- nvme3 rdma traddr=1.1.1.3,trsvcid=4420,host_traddr=1.1.1.1</pre>
<div class="attribution">
</div></div>
<div class="verseblock">
<pre class="content"><a href="mailto:root@host">root@host</a># nvme list-subsys -o json
{
  "Subsystems" : [
    {
      "Name" : "nvme-subsys0",
      "NQN" : "nvmf-test"
    },
    {
      "Paths" : [
        {
          "Name" : "nvme0",
          "Transport" : "rdma",
          "Address" : "traddr=1.1.1.3,trsvcid=4420,host_traddr=1.1.1.1"
        },
        {
          "Name" : "nvme1",
          "Transport" : "rdma",
          "Address" : "traddr=1.1.1.3,trsvcid=4420,host_traddr=1.1.1.2"
        }
      ]
    },
    {
      "Name" : "nvme-subsys1",
      "NQN" : "nvmf-test2"
    },
    {
      "Paths" : [
        {
          "Name" : "nvme2",
          "Transport" : "rdma",
          "Address" : "traddr=1.1.1.3,trsvcid=4420,host_traddr=1.1.1.2"
        },
        {
          "Name" : "nvme3",
          "Transport" : "rdma",
          "Address" : "traddr=1.1.1.3,trsvcid=4420,host_traddr=1.1.1.1"
        }
      ]
    }
  ]
}</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
070701015D6D53000081A4000003E80000006400000001642C0FB600000829000000000000004A00000000000000000000002300000000nvme-cli/Documentation/nvme-list.1    '\" t
.\"     Title: nvme-list
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-LIST" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-list \- List all recognized NVMe devices
.SH "SYNOPSIS"
.sp
.nf
\fInvme list\fR [\-o <fmt> | \-\-output\-format=<fmt>]
.fi
.SH "DESCRIPTION"
.sp
Scan the sysfs tree for NVM Express devices and return the /dev node for those devices as well as some pertinent information about them\&.
.SH "OPTIONS"
.PP
\-o <format>, \-\-output\-format=<format>
.RS 4
Set the reporting format to
\fInormal\fR
or
\fIjson\fR\&. Only one output format can be used at a time\&.
.RE
.PP
\-v, \-\-verbose
.RS 4
Increase the information in the output, showing nvme subsystems, controllers and namespaces separately and how they\(cqre related to each other\&.
.RE
.SH "ENVIRONMENT"
.sp
PCI_IDS_PATH \- Full path of pci\&.ids file in case nvme could not find it in common locations\&.
.SH "EXAMPLES"
.sp
No examples yet\&.
.SH "NVME"
.sp
Part of the nvme\-user suite
   070701015D6D54000081A4000003E80000006400000001642C0FB6000047F7000000000000004A00000000000000000000002600000000nvme-cli/Documentation/nvme-list.html <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-list(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-list(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-list -
   List all recognized NVMe devices
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme list</em> [-o &lt;fmt&gt; | --output-format=&lt;fmt&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>Scan the sysfs tree for NVM Express devices and return the /dev node
for those devices as well as some pertinent information about them.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-o &lt;format&gt;
</dt>
<dt class="hdlist1">
--output-format=&lt;format&gt;
</dt>
<dd>
<p>
        Set the reporting format to <em>normal</em> or <em>json</em>. Only one output
        format can be used at a time.
</p>
</dd>
<dt class="hdlist1">
-v
</dt>
<dt class="hdlist1">
--verbose
</dt>
<dd>
<p>
        Increase the information in the output, showing nvme subsystems,
        controllers and namespaces separately and how they&#8217;re related to each
        other.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_environment">ENVIRONMENT</h2>
<div class="sectionbody">
<div class="paragraph"><p>PCI_IDS_PATH - Full path of pci.ids file in case nvme could not find it in common locations.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="paragraph"><p>No examples yet.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
 070701015D6D55000081A4000003E80000006400000001642C0FB600000B47000000000000004A00000000000000000000002700000000nvme-cli/Documentation/nvme-lockdown.1    '\" t
.\"     Title: nvme-lockdown
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-LOCKDOWN" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-lockdown \- Send an NVMe Lockdown command to prohibit or allow the execution of command
.SH "SYNOPSIS"
.sp
.nf
\fInvme\-lockdown\fR <device> [\-\-ofi=<ofi> | \-o <ofi>]
                        [\-\-ifc=<ifc> | \-f <ifc>]
                        [\-\-prhbt=<prhbt> | \-p <prhbt>]
                        [\-\-scp=<scp> | \-s <scp>]
                        [\-\-uuid=<UUID_Index> | \-U <UUID_Index>]
.fi
.SH "DESCRIPTION"
.sp
The Lockdown command is used to control the Command and Feature Lockdown capability which configures the prohibition or allowance of execution of the specified command or Set Features command targeting a specific Feature Identifier\&.
.SH "OPTIONS"
.PP
\-\-ofi=<ofi>, \-o <ofi>
.RS 4
Opcode or Feature Identifier(OFI) specifies the command opcode or Set Features Feature Identifier identified by the Scope field\&.
.RE
.PP
\-\-ifc=<ifc>, \-f <ifc>
.RS 4
Interface (INF) field identifies the interfaces affected by this command\&.
.RE
.PP
\-\-prhbt=<prhbt>, \-p <prhbt>
.RS 4
Prohibit (PRHBT) bit specifies whether to prohibit or allow the command opcode or Set Features Feature Identifier specified by this command\&.
.RE
.PP
\-\-scp=<scp>, \-s <scp>
.RS 4
Scope (SCP) field specifies the contents of the Opcode or Feature Identifier field\&.
.RE
.PP
\-\-uuid=<UUID_Index>, \-U <UUID_Index>
.RS 4
UUID Index \- If this field is set to a non\-zero value, then the value of this field is the index of a UUID in the UUID List that is used by the command\&. If this field is cleared to 0h,then no UUID index is specified\&.
.RE
.SH "EXAMPLES"
.sp
No examples yet\&.
.SH "NVME"
.sp
Part of the nvme\-user suite
 070701015D6D56000081A4000003E80000006400000001642C0FB600004BDD000000000000004A00000000000000000000002A00000000nvme-cli/Documentation/nvme-lockdown.html <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-lockdown(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-lockdown(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-lockdown -
   Send an NVMe Lockdown command to prohibit or allow the execution of command
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme-lockdown</em> &lt;device&gt; [--ofi=&lt;ofi&gt; | -o &lt;ofi&gt;]
                        [--ifc=&lt;ifc&gt; | -f &lt;ifc&gt;]
                        [--prhbt=&lt;prhbt&gt; | -p &lt;prhbt&gt;]
                        [--scp=&lt;scp&gt; | -s &lt;scp&gt;]
                        [--uuid=&lt;UUID_Index&gt; | -U &lt;UUID_Index&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>The Lockdown command is used to control the Command and Feature Lockdown
capability which configures the prohibition or allowance of execution of the
specified command or Set Features command targeting a specific Feature
Identifier.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
--ofi=&lt;ofi&gt;
</dt>
<dt class="hdlist1">
-o &lt;ofi&gt;
</dt>
<dd>
<p>
        Opcode or Feature Identifier(OFI) specifies the command opcode or Set
        Features Feature Identifier identified by the Scope field.
</p>
</dd>
<dt class="hdlist1">
--ifc=&lt;ifc&gt;
</dt>
<dt class="hdlist1">
-f &lt;ifc&gt;
</dt>
<dd>
<p>
        Interface (INF) field identifies the interfaces affected by this command.
</p>
</dd>
<dt class="hdlist1">
--prhbt=&lt;prhbt&gt;
</dt>
<dt class="hdlist1">
-p &lt;prhbt&gt;
</dt>
<dd>
<p>
        Prohibit (PRHBT) bit specifies whether to prohibit or allow the command
        opcode or Set Features Feature Identifier specified by this command.
</p>
</dd>
<dt class="hdlist1">
--scp=&lt;scp&gt;
</dt>
<dt class="hdlist1">
-s &lt;scp&gt;
</dt>
<dd>
<p>
        Scope (SCP) field specifies the contents of the Opcode or Feature Identifier field.
</p>
</dd>
<dt class="hdlist1">
--uuid=&lt;UUID_Index&gt;
</dt>
<dt class="hdlist1">
-U &lt;UUID_Index&gt;
</dt>
<dd>
<p>
        UUID Index - If this field is set to a non-zero value, then the value of
        this field is the index of a UUID in the UUID List that is used by the command.
        If this field is cleared to 0h,then no UUID index is specified.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="paragraph"><p>No examples yet.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
   070701015D6D57000081A4000003E80000006400000001642C0FB6000009C7000000000000004A00000000000000000000003900000000nvme-cli/Documentation/nvme-mi-cmd-support-effects-log.1  '\" t
.\"     Title: nvme-mi-cmd-support-effects-log
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-MI\-CMD\-SUPPO" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-mi-cmd-support-effects-log \- Send NVMe MI Command Support and Effects log, returns results and structure
.SH "SYNOPSIS"
.sp
.nf
\fInvme\-mi\-cmd\-support\-effects\-log\fR <device> [\-o <fmt> | \-\-output\-format=<fmt>]
                                        [\-H | \-\-human\-readable]
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, sends an MI Command Support and Effects log (id 13h) and provides the result and returned log structure\&.
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1)\&.
.sp
On success, the structure may be returned in one of several ways depending on the option flags; the structure may be parsed by the program or the raw buffer may be printed to stdout\&.
.SH "OPTIONS"
.PP
\-o <format>, \-\-output\-format=<format>
.RS 4
Set the reporting format to
\fInormal\fR,
\fIjson\fR, or
\fIbinary\fR\&. Only one output format can be used at a time\&.
.RE
.PP
\-H, \-\-human\-readable
.RS 4
This option will parse and format many of the bit fields into human\-readable formats\&.
.RE
.SH "EXAMPLES"
.sp
nvme mi\-cmd\-support\-effects\-log /dev/nvme0 \-H
.SH "NVME"
.sp
Part of the nvme\-user suite
 070701015D6D58000081A4000003E80000006400000001642C0FB600004980000000000000004A00000000000000000000003C00000000nvme-cli/Documentation/nvme-mi-cmd-support-effects-log.html   <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-mi-cmd-support-effects-log(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-mi-cmd-support-effects-log(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-mi-cmd-support-effects-log -
   Send NVMe MI Command Support and Effects log,                                   returns results and structure
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme-mi-cmd-support-effects-log</em> &lt;device&gt; [-o &lt;fmt&gt; | --output-format=&lt;fmt&gt;]
                                        [-H | --human-readable]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, sends an MI Command Support and Effects log (id 13h)
and provides the result and returned log structure.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).</p></div>
<div class="paragraph"><p>On success, the structure may be returned in one of several ways depending
on the option flags; the structure may be parsed by the program or the
raw buffer may be printed to stdout.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-o &lt;format&gt;
</dt>
<dt class="hdlist1">
--output-format=&lt;format&gt;
</dt>
<dd>
<p>
    Set the reporting format to <em>normal</em>, <em>json</em>, or
    <em>binary</em>. Only one output format can be used at a time.
</p>
</dd>
<dt class="hdlist1">
-H
</dt>
<dt class="hdlist1">
--human-readable
</dt>
<dd>
<p>
        This option will parse and format many of the bit fields
        into human-readable formats.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="paragraph"><p>nvme mi-cmd-support-effects-log /dev/nvme0 -H</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
070701015D6D59000081A4000003E80000006400000001642C0FB600000865000000000000004A00000000000000000000003700000000nvme-cli/Documentation/nvme-micron-clear-pcie-errors.1    '\" t
.\"     Title: nvme-micron-clear-pcie-errors
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-MICRON\-CLEAR\" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-micron-clear-pcie-errors \- Clears correctable PCIe correctable errors of given Micron device
.SH "SYNOPSIS"
.sp
.nf
\fInvme micron clear\-pcie\-correctable\-errors\fR <device>
.fi
.SH "DESCRIPTION"
.sp
This command clears correctable pcie errors for the specified Micron device\&.
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1)\&.
.sp
This will only work on Micron devices devices of model numbers 54XX\&. Support for new devices may be added subsequently\&.
.SH "OPTIONS"
.sp
None
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Retrieve NAND statistics information
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme micron clear\-pcie\-correctable\-errors /dev/nvme0
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite
   070701015D6D5A000081A4000003E80000006400000001642C0FB60000473A000000000000004A00000000000000000000003A00000000nvme-cli/Documentation/nvme-micron-clear-pcie-errors.html <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-micron-clear-pcie-errors(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-micron-clear-pcie-errors(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-micron-clear-pcie-errors -
   Clears correctable PCIe correctable errors of given Micron device
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme micron clear-pcie-correctable-errors</em> &lt;device&gt;</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>This command clears correctable pcie errors for the specified Micron device.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe
character device (ex: /dev/nvme0), or a namespace block device (ex:
/dev/nvme0n1).</p></div>
<div class="paragraph"><p>This will only work on Micron devices devices of model numbers 54XX. Support for new
devices may be added subsequently.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="paragraph"><p>None</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Retrieve NAND statistics information
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme micron clear-pcie-correctable-errors /dev/nvme0</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
  070701015D6D5B000081A4000003E80000006400000001642C0FB600000A09000000000000004A00000000000000000000003200000000nvme-cli/Documentation/nvme-micron-internal-log.1 '\" t
.\"     Title: nvme-micron-internal-log
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-MICRON\-INTERN" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-micron-internal-log \- Retrieve Micron device\*(Aqs internal logs and save to given zip file\&.
.SH "SYNOPSIS"
.sp
.nf
\fInvme micron vs\-internal\-log\fR <device> [\-\-package=<FILE>, \-p <FILE>]
.fi
.SH "DESCRIPTION"
.sp
For the given NVMe device, sends the Micron vendor specific device commands to retrieve various logs (in binary format) and compresses them and saves into specified zip file\&. These vendor unique logs can be analyzed with Micron Technical support team for any device specific issues
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1)\&.
.sp
This will only work on Micron devices devices of model numbers 9200 and 54XX\&. Support for new devices may be added subsequently\&. Results for any other device are undefined\&.
.SH "OPTIONS"
.PP
\-l <FILE>, \-\-package=<FILE>
.RS 4
name of the file (with \&.zip extension) to save the device logs
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Gets the logs from the device and saves to micron_logs\&.zip file
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme micron vs\-internal\-log /dev/nvme0 \-\-package=micron_logs\&.zip
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite
   070701015D6D5C000081A4000003E80000006400000001642C0FB600004933000000000000004A00000000000000000000003500000000nvme-cli/Documentation/nvme-micron-internal-log.html  <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-micron-internal-log(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-micron-internal-log(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-micron-internal-log -
   Retrieve Micron device's internal logs and save to given zip file.
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme micron vs-internal-log</em> &lt;device&gt; [--package=&lt;FILE&gt;, -p &lt;FILE&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the given NVMe device, sends the Micron vendor specific device commands to retrieve
various logs (in binary format) and compresses them and saves into specified zip file.
These vendor unique logs can be analyzed with Micron Technical support team for any device
specific issues</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe
character device (ex: /dev/nvme0), or a namespace block device (ex:
/dev/nvme0n1).</p></div>
<div class="paragraph"><p>This will only work on Micron devices devices of model numbers 9200 and 54XX. Support
for new devices may be added subsequently. Results for any other device are undefined.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-l &lt;FILE&gt;
</dt>
<dt class="hdlist1">
--package=&lt;FILE&gt;
</dt>
<dd>
<p>
        name of the file (with .zip extension) to save the device logs
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Gets the logs from the device and saves to micron_logs.zip file
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme micron vs-internal-log /dev/nvme0 --package=micron_logs.zip</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
 070701015D6D5D000081A4000003E80000006400000001642C0FB600000857000000000000004A00000000000000000000003000000000nvme-cli/Documentation/nvme-micron-nand-stats.1   '\" t
.\"     Title: nvme-micron-nand-stats
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-MICRON\-NAND\-" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-micron-nand-stats \- Retrieves NAND statistics of given micron device
.SH "SYNOPSIS"
.sp
.nf
\fInvme micron vs\-nand\-stats\fR <device>
.fi
.SH "DESCRIPTION"
.sp
This command prints NAND information (Total bytes written, Bad block count and Erase failures etc) for the given micron device\&.
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1)\&.
.sp
This will only work on Micron devices devices of model numbers 54XX\&. Support for new devices may be added subsequently\&.
.SH "OPTIONS"
.sp
None
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Retrieve NAND statistics information
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme micron vs\-nand\-stats /dev/nvme0
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite
 070701015D6D5E000081A4000003E80000006400000001642C0FB600004728000000000000004A00000000000000000000003300000000nvme-cli/Documentation/nvme-micron-nand-stats.html    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-micron-nand-stats(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-micron-nand-stats(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-micron-nand-stats -
   Retrieves NAND statistics of given micron device
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme micron vs-nand-stats</em> &lt;device&gt;</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>This command prints NAND information (Total bytes written, Bad block count and
Erase failures etc) for the given micron device.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe
character device (ex: /dev/nvme0), or a namespace block device (ex:
/dev/nvme0n1).</p></div>
<div class="paragraph"><p>This will only work on Micron devices devices of model numbers 54XX. Support for
new devices may be added subsequently.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="paragraph"><p>None</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Retrieve NAND statistics information
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme micron vs-nand-stats /dev/nvme0</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
070701015D6D5F000081A4000003E80000006400000001642C0FB60000083F000000000000004A00000000000000000000003000000000nvme-cli/Documentation/nvme-micron-pcie-stats.1   '\" t
.\"     Title: nvme-micron-pcie-stats
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-MICRON\-PCIE\-" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-micron-pcie-stats \- Retrieves pcie error statistics for given micron device
.SH "SYNOPSIS"
.sp
.nf
\fInvme micron vs\-pcie\-stats\fR <device>
.fi
.SH "DESCRIPTION"
.sp
This command prints pcie correctable and uncorrectable error information for the given micron device\&.
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1)\&.
.sp
This will only work on Micron devices devices of model numbers 54XX\&. Support for new devices may be added subsequently\&.
.SH "OPTIONS"
.sp
None
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Retrieve PCIe error information
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme micron vs\-pcie\-stats /dev/nvme0
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite
 070701015D6D60000081A4000003E80000006400000001642C0FB600004710000000000000004A00000000000000000000003300000000nvme-cli/Documentation/nvme-micron-pcie-stats.html    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-micron-pcie-stats(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-micron-pcie-stats(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-micron-pcie-stats -
   Retrieves pcie error statistics for given micron device
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme micron vs-pcie-stats</em> &lt;device&gt;</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>This command prints pcie correctable and uncorrectable error information for the
given micron device.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe
character device (ex: /dev/nvme0), or a namespace block device (ex:
/dev/nvme0n1).</p></div>
<div class="paragraph"><p>This will only work on Micron devices devices of model numbers 54XX. Support for
new devices may be added subsequently.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="paragraph"><p>None</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Retrieve PCIe error information
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme micron vs-pcie-stats /dev/nvme0</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
070701015D6D61000081A4000003E80000006400000001642C0FB600000DA1000000000000004A00000000000000000000003800000000nvme-cli/Documentation/nvme-micron-selective-download.1   '\" t
.\"     Title: nvme-micron-selective-download
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-MICRON\-SELECT" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-micron-selective-download \- Performs selective firmware download that allows user to select which firmware binary to update for 9200 devices\&. This requires power cycle once the update completes\&.
.SH "SYNOPSIS"
.sp
.nf
\fInvme micron selective\-download\fR <device> [\-\-fw=<FILE>, \-f <FILE>] [\-\-select=<flag>, \-s <flag>]
.fi
.SH "DESCRIPTION"
.sp
This command uses micron vendor specific nvme commands to download given firmware image to the specified 9200 device to update selected or all portions of firmware image\&.
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1)\&.
.sp
This will only work on Micron devices devices of model number 9200\&. Support for new devices may be added subsequently\&. Results for any other device are undefined\&.
.SH "OPTIONS"
.PP
\-f <FILE>, \-\-fw=<FILE>
.RS 4
name of the firmware image file
.RE
.PP
\-s <flag>, \-\-select=<flag>
.RS 4
flag that has following values
.RE
.PP
OOB
.RS 4
This updates the OOB and main firmware\en"
.RE
.PP
EEP
.RS 4
This updates the eeprom and main firmware\en"
.RE
.PP
ALL
.RS 4
This updates the eeprom, OOB, and main firmware";
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Update OOB and main firmware
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme micron selective\-download /dev/nvme0 \-\-fw=firmware_bin \-\-select=OOB
# nvme micron selective\-download /dev/nvme0 \-f firmware_bin \-s OOB
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Update OOB and main firmware
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme micron selective\-download /dev/nvme0 \-\-fw=firmware_bin \-\-select=EEP
# nvme micron selective\-download /dev/nvme0 \-f firmware_bin \-\-s EEP
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Update eeprom, OOB and main firmware
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme micron selective\-download /dev/nvme0 \-\-fw=firmware_bin \-\-select=ALL
# nvme micron selective\-download /dev/nvme0 \-f firmware_bin \-\-s ALL
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite
   070701015D6D62000081A4000003E80000006400000001642C0FB600004D7E000000000000004A00000000000000000000003B00000000nvme-cli/Documentation/nvme-micron-selective-download.html    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-micron-selective-download(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-micron-selective-download(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-micron-selective-download -
   Performs selective firmware download that allows user to select which firmware binary to update for 9200 devices. This requires power cycle once the update completes.
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme micron selective-download</em> &lt;device&gt; [--fw=&lt;FILE&gt;, -f &lt;FILE&gt;] [--select=&lt;flag&gt;, -s &lt;flag&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>This command uses micron vendor specific nvme commands to download given firmware image to the
specified 9200 device to update selected or all portions of firmware image.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe
character device (ex: /dev/nvme0), or a namespace block device (ex:
/dev/nvme0n1).</p></div>
<div class="paragraph"><p>This will only work on Micron devices devices of model number 9200. Support for new devices
may be added subsequently. Results for any other device are undefined.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-f &lt;FILE&gt;
</dt>
<dt class="hdlist1">
--fw=&lt;FILE&gt;
</dt>
<dd>
<p>
        name of the firmware image file
</p>
</dd>
<dt class="hdlist1">
-s &lt;flag&gt;
</dt>
<dt class="hdlist1">
--select=&lt;flag&gt;
</dt>
<dd>
<p>
        flag that has following values
</p>
</dd>
<dt class="hdlist1">
OOB
</dt>
<dd>
<p>
This updates the OOB and main firmware\n"
</p>
</dd>
<dt class="hdlist1">
EEP
</dt>
<dd>
<p>
This updates the eeprom and main firmware\n"
</p>
</dd>
<dt class="hdlist1">
ALL
</dt>
<dd>
<p>
This updates the eeprom, OOB, and main firmware";
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Update OOB and main firmware
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme micron selective-download /dev/nvme0 --fw=firmware_bin --select=OOB
# nvme micron selective-download /dev/nvme0 -f firmware_bin -s OOB</code></pre>
</div></div>
</li>
<li>
<p>
Update OOB and main firmware
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme micron selective-download /dev/nvme0 --fw=firmware_bin --select=EEP
# nvme micron selective-download /dev/nvme0 -f firmware_bin --s EEP</code></pre>
</div></div>
</li>
<li>
<p>
Update eeprom, OOB and main firmware
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme micron selective-download /dev/nvme0 --fw=firmware_bin --select=ALL
# nvme micron selective-download /dev/nvme0 -f firmware_bin --s ALL</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
  070701015D6D63000081A4000003E80000006400000001642C0FB600000B86000000000000004A00000000000000000000003300000000nvme-cli/Documentation/nvme-micron-smart-add-log.1    '\" t
.\"     Title: nvme-micron-smart-add-log
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-MICRON\-SMART\" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-micron-smart-add-log \- Retrieves NAND statistics (2200 model drives) or Extended SMART information (OCP complaint models) of given micron device
.SH "SYNOPSIS"
.sp
.nf
\fInvme micron vs\-smart\-add\-log\fR <device>  \-f <json|normal>
.fi
.SH "DESCRIPTION"
.sp
This command prints NAND information (Total bytes written, Bad block count and Erase failures etc) for the given micron device if its of 2200 model controller\&. For OCP complaint controllers this command print extended SMART health data along with NAND information (if available)
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1)\&.
.sp
The \fI\-f\fR option controls the displayed output data format based on the option value\&. If the option value is \fIjson\fR (which is enabled by default), output data is printed in JSON format\&. If option value is \fInormal\fR the output is displayed in non\-JSON format\&.
.sp
This will only work on Micron devices devices of model numbers 54XX and OCP complaint controllers\&. Support for new devices may be added subsequently\&.
.SH "OPTIONS"
.sp
\-f <json|normal> controls the format of displayed output\&.
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Retrieve NAND/extended SMART data and display in json format
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme micron vs\-nand\-stats /dev/nvme0

* Retrieve NAND/extended SMART data and display in non\-json format
+
.fi
.if n \{\
.RE
.\}
.RE
.sp
# nvme micron vs\-nand\-stats /dev/nvme0 \-f normal
.sp
.if n \{\
.RS 4
.\}
.nf
NVME
.fi
.if n \{\
.RE
.\}
.sp
Part of the nvme\-user suite
  070701015D6D64000081A4000003E80000006400000001642C0FB600004A81000000000000004A00000000000000000000003600000000nvme-cli/Documentation/nvme-micron-smart-add-log.html <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-micron-smart-add-log(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-micron-smart-add-log(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-micron-smart-add-log -
   Retrieves NAND statistics (2200 model drives) or Extended SMART information (OCP complaint models) of given micron device
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme micron vs-smart-add-log</em> &lt;device&gt;  -f &lt;json|normal&gt;</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>This command prints NAND information (Total bytes written, Bad block count and
Erase failures etc) for the given micron device if its of 2200 model controller.
For OCP complaint controllers this command print extended SMART health data
along with NAND information (if available)</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe
character device (ex: /dev/nvme0), or a namespace block device (ex:
/dev/nvme0n1).</p></div>
<div class="paragraph"><p>The <em>-f</em> option controls the displayed output data format based on the option
value. If the option value is <em>json</em> (which is enabled by default), output data
is printed in JSON format. If option value is <em>normal</em> the output is displayed
in non-JSON format.</p></div>
<div class="paragraph"><p>This will only work on Micron devices devices of model numbers 54XX and OCP
complaint controllers. Support for new devices may be added subsequently.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="paragraph"><p>-f &lt;json|normal&gt; controls the format of displayed output.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Retrieve NAND/extended SMART data and display in json format
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme micron vs-nand-stats /dev/nvme0

* Retrieve NAND/extended SMART data and display in non-json format
+</code></pre>
</div></div>
</li>
</ul></div>
<div class="paragraph"><p># nvme micron vs-nand-stats /dev/nvme0 -f normal</p></div>
<div class="listingblock">
<div class="content">
<pre><code>NVME</code></pre>
</div></div>
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
   070701015D6D65000081A4000003E80000006400000001642C0FB600000881000000000000004A00000000000000000000003700000000nvme-cli/Documentation/nvme-micron-temperature-stats.1    '\" t
.\"     Title: nvme-micron-temperature-stats
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-MICRON\-TEMPER" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-micron-temperature-stats \- Retrieves temperature information of given micron device
.SH "SYNOPSIS"
.sp
.nf
\fInvme micron vs\-temperature\-stats\fR <device>
.fi
.SH "DESCRIPTION"
.sp
This command prints temperature information (composite temperature and number of active temperature sensors) for the given micron device\&.
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1)\&.
.sp
This will only work on Micron devices devices of model numbers 54XX\&. Support for new devices may be added subsequently\&.
.SH "OPTIONS"
.sp
None
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Retrieve temperature information
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme micron vs\-temperature\-stats /dev/nvme0
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite
   070701015D6D66000081A4000003E80000006400000001642C0FB600004759000000000000004A00000000000000000000003A00000000nvme-cli/Documentation/nvme-micron-temperature-stats.html <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-micron-temperature-stats(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-micron-temperature-stats(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-micron-temperature-stats -
   Retrieves temperature information of given micron device
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme micron vs-temperature-stats</em> &lt;device&gt;</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>This command prints temperature information (composite temperature and number of active
temperature sensors) for the given micron device.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe
character device (ex: /dev/nvme0), or a namespace block device (ex:
/dev/nvme0n1).</p></div>
<div class="paragraph"><p>This will only work on Micron devices devices of model numbers 54XX. Support for new
devices may be added subsequently.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="paragraph"><p>None</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Retrieve temperature information
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme micron vs-temperature-stats /dev/nvme0</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
   070701015D6D67000081A4000003E80000006400000001642C0FB60000081A000000000000004A00000000000000000000003200000000nvme-cli/Documentation/nvme-netapp-ontapdevices.1 '\" t
.\"     Title: nvme-netapp-ontapdevices
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-NETAPP\-ONTAPD" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-netapp-ontapdevices \- Display information about ONTAP devices
.SH "SYNOPSIS"
.sp
.nf
\fInvme netapp ontapdevices\fR [\-o <fmt> | \-\-output\-format=<fmt>]
.fi
.SH "DESCRIPTION"
.sp
Display information about ONTAP devices on the host\&. The ONTAP devices are identified using the Identify Controller data\&.
.SH "OPTIONS"
.PP
\-o <fmt>, \-\-output\-format=<fmt>
.RS 4
Set the reporting format to
\fInormal\fR
(default),
\fIcolumn\fR, or
\fIjson\fR\&. Only one output format can be used at a time\&.
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Display information, in a column\-based format, for ONTAP devices\&.
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme netapp ontapdevices \-o column
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite
  070701015D6D68000081A4000003E80000006400000001642C0FB60000471D000000000000004A00000000000000000000003500000000nvme-cli/Documentation/nvme-netapp-ontapdevices.html  <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-netapp-ontapdevices(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-netapp-ontapdevices(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-netapp-ontapdevices -
   Display information about ONTAP devices
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme netapp ontapdevices</em> [-o &lt;fmt&gt; | --output-format=&lt;fmt&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>Display information about ONTAP devices on the host. The ONTAP devices are
identified using the Identify Controller data.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-o &lt;fmt&gt;
</dt>
<dt class="hdlist1">
--output-format=&lt;fmt&gt;
</dt>
<dd>
<p>
              Set the reporting format to <em>normal</em> (default), <em>column</em>, or
              <em>json</em>. Only one output format can be used at a time.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Display information, in a column-based format, for ONTAP devices.
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme netapp ontapdevices -o column</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
   070701015D6D69000081A4000003E80000006400000001642C0FB600000895000000000000004A00000000000000000000002F00000000nvme-cli/Documentation/nvme-netapp-smdevices.1    '\" t
.\"     Title: nvme-netapp-smdevices
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-NETAPP\-SMDEVI" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-netapp-smdevices \- Display information for each NVMe path to an E\-Series volume
.SH "SYNOPSIS"
.sp
.nf
\fInvme netapp smdevices\fR [\-o <fmt> | \-\-output\-format=<fmt>]
.fi
.SH "DESCRIPTION"
.sp
Display vendor\-specific information for each NVMe path to an E\-Series namespace currently connected to the host\&. The E\-Series paths are identified from the NVMe nodes in /dev by sending an Identify Controller\&.
.SH "OPTIONS"
.PP
\-o <fmt>, \-\-output\-format=<fmt>
.RS 4
Set the reporting format to
\fInormal\fR
(default),
\fIcolumn\fR, or
\fIjson\fR\&. Only one output format can be used at a time\&.
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Display information, in a column\-based format, for each path to an E\-Series namespace\&.
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme netapp smdevices \-o column
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite
   070701015D6D6A000081A4000003E80000006400000001642C0FB600004793000000000000004A00000000000000000000003200000000nvme-cli/Documentation/nvme-netapp-smdevices.html <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-netapp-smdevices(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-netapp-smdevices(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-netapp-smdevices -
   Display information for each NVMe path to an E-Series volume
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme netapp smdevices</em> [-o &lt;fmt&gt; | --output-format=&lt;fmt&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>Display vendor-specific information for each NVMe path to an E-Series namespace
currently connected to the host.  The E-Series paths are identified from the
NVMe nodes in /dev by sending an Identify Controller.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-o &lt;fmt&gt;
</dt>
<dt class="hdlist1">
--output-format=&lt;fmt&gt;
</dt>
<dd>
<p>
              Set the reporting format to <em>normal</em> (default), <em>column</em>, or
              <em>json</em>. Only one output format can be used at a time.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Display information, in a column-based format, for each path to an E-Series
namespace.
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme netapp smdevices -o column</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
 070701015D6D6B000081A4000003E80000006400000001642C0FB600000E2A000000000000004A00000000000000000000002700000000nvme-cli/Documentation/nvme-ns-descs.1    '\" t
.\"     Title: nvme-ns-descs
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-NS\-DESCS" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-ns-descs \- Send NVMe Identify for a list of Namespace Identification Descriptor structure, return result and structure
.SH "SYNOPSIS"
.sp
.nf
\fInvme ns\-descs\fR <device> [\-\-namespace\-id=<nsid> | \-n <nsid>]
                        [\-\-raw\-binary | \-b]
                        [\-\-output\-format=<fmt> | \-o <fmt>]
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, sends an identify for a list of namespace identification descriptor structures command and provides the result and returned structure\&.
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1)\&. If the character device is given, the \*(Aq\-\-namespace\-id\*(Aq option is mandatory, otherwise it will use the ns\-id of the namespace for the block device you opened\&. For block devices, the ns\-id used can be overridden with the same option\&.
.sp
On success, the structure may be returned in one of several ways depending on the option flags; the structure may be parsed by the program or the raw buffer may be printed to stdout\&.
.SH "OPTIONS"
.PP
\-n <nsid>, \-\-namespace\-id=<nsid>
.RS 4
Retrieve the identify namespace identification descriptor structure for the given nsid\&. This is required for the character devices, or overrides the block nsid if given\&.
.RE
.PP
\-b, \-\-raw\-binary
.RS 4
Print the raw buffer to stdout\&. Structure is not parsed by program\&.
.RE
.PP
\-o <format>, \-\-output\-format=<format>
.RS 4
Set the reporting format to
\fInormal\fR,
\fIjson\fR, or
\fIbinary\fR\&. Only one output format can be used at a time\&.
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
If using the character device or overriding namespace #2:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme ns\-descs /dev/nvme0 \-n 1
# nvme ns\-descs /dev/nvme0n1 \-n 2
# nvme ns\-descs /dev/nvme0 \-\-namespace\-id=1
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Have the program return the raw structure in binary:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme ns\-descs /dev/nvme0n1 \-\-raw\-binary > ns_descs\&.raw
# nvme ns\-descs /dev/nvme0n1 \-b > ns_descs\&.raw
.fi
.if n \{\
.RE
.\}
.sp
It is probably a bad idea to not redirect stdout when using this mode\&.
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite
  070701015D6D6C000081A4000003E80000006400000001642C0FB600004E3D000000000000004A00000000000000000000002A00000000nvme-cli/Documentation/nvme-ns-descs.html <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-ns-descs(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-ns-descs(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-ns-descs -
   Send NVMe Identify for a list of Namespace Identification                 Descriptor structure, return result and structure
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme ns-descs</em> &lt;device&gt; [--namespace-id=&lt;nsid&gt; | -n &lt;nsid&gt;]
                        [--raw-binary | -b]
                        [--output-format=&lt;fmt&gt; | -o &lt;fmt&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, sends an identify for a list of namespace
identification descriptor structures command and provides the result and
returned structure.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).
If the character device is given, the <code>'--namespace-id'</code> option is
mandatory, otherwise it will use the ns-id of the namespace for the block
device you opened. For block devices, the ns-id used can be overridden
with the same option.</p></div>
<div class="paragraph"><p>On success, the structure may be returned in one of several ways depending
on the option flags; the structure may be parsed by the program or the
raw buffer may be printed to stdout.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-n &lt;nsid&gt;
</dt>
<dt class="hdlist1">
--namespace-id=&lt;nsid&gt;
</dt>
<dd>
<p>
        Retrieve the identify namespace identification descriptor structure
        for the given nsid. This is required for the character devices, or
        overrides the block nsid if given.
</p>
</dd>
<dt class="hdlist1">
-b
</dt>
<dt class="hdlist1">
--raw-binary
</dt>
<dd>
<p>
        Print the raw buffer to stdout. Structure is not parsed by
        program.
</p>
</dd>
<dt class="hdlist1">
-o &lt;format&gt;
</dt>
<dt class="hdlist1">
--output-format=&lt;format&gt;
</dt>
<dd>
<p>
        Set the reporting format to <em>normal</em>, <em>json</em>, or <em>binary</em>.
        Only one output format can be used at a time.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
If using the character device or overriding namespace #2:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme ns-descs /dev/nvme0 -n 1
# nvme ns-descs /dev/nvme0n1 -n 2
# nvme ns-descs /dev/nvme0 --namespace-id=1</code></pre>
</div></div>
</li>
<li>
<p>
Have the program return the raw structure in binary:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme ns-descs /dev/nvme0n1 --raw-binary &gt; ns_descs.raw
# nvme ns-descs /dev/nvme0n1 -b &gt; ns_descs.raw</code></pre>
</div></div>
<div class="paragraph"><p>It is probably a bad idea to not redirect stdout when using this mode.</p></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
   070701015D6D6D000081A4000003E80000006400000001642C0FB600000705000000000000004A00000000000000000000002800000000nvme-cli/Documentation/nvme-ns-rescan.1   '\" t
.\"     Title: nvme-ns-rescan
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-NS\-RESCAN" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-ns-rescan \- Rescans the nvme namespaces\&.
.SH "SYNOPSIS"
.sp
.nf
\fInvme ns\-rescan\fR <device>
.fi
.SH "DESCRIPTION"
.sp
Requests NVMe controller rescans the namespaces\&. The <device> param is mandatory and must be an NVMe character device (ex: /dev/nvme0)\&.
.SH "OPTIONS"
.sp
None
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Rescans the nvme namespaces\&.
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme ns\-rescan /dev/nvme0
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite
   070701015D6D6E000081A4000003E80000006400000001642C0FB60000458F000000000000004A00000000000000000000002B00000000nvme-cli/Documentation/nvme-ns-rescan.html    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-ns-rescan(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-ns-rescan(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-ns-rescan -
   Rescans the nvme namespaces.
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme ns-rescan</em> &lt;device&gt;</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>Requests NVMe controller rescans the namespaces. The &lt;device&gt; param is mandatory and must
be an NVMe character device (ex: /dev/nvme0).</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="paragraph"><p>None</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Rescans the nvme namespaces.
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme ns-rescan /dev/nvme0</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
 070701015D6D6F000081A4000003E80000006400000001642C0FB600000A10000000000000004A00000000000000000000002A00000000nvme-cli/Documentation/nvme-nvm-id-ctrl.1 '\" t
.\"     Title: nvme-nvm-id-ctrl
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-NVM\-ID\-CTRL" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-nvm-id-ctrl \- Send NVMe Identify Controller, return NVM command set structure
.SH "SYNOPSIS"
.sp
.nf
\fInvme nvm\-id\-ctrl\fR <device> [\-o <fmt> | \-\-output\-format=<fmt>]
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, sends the NVM command set\(cqs identify controller command and provides the result and returned structure\&.
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1)\&.
.sp
On success, the data structure returned by the device will be decoded and displayed in one of several ways\&.
.SH "OPTIONS"
.PP
\-o <format>, \-\-output\-format=<format>
.RS 4
Set the reporting format to
\fInormal\fR,
\fIjson\fR, or
\fIbinary\fR\&. Only one output format can be used at a time\&.
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Has the program interpret the returned buffer and display the known fields in a human readable format:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme nvm\-id\-ctrl /dev/nvme0
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Show the output in json format
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme nvm\-id\-ctrl /dev/nvme0 \-o json
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of nvme\-cli
070701015D6D70000081A4000003E80000006400000001642C0FB60000494B000000000000004A00000000000000000000002D00000000nvme-cli/Documentation/nvme-nvm-id-ctrl.html  <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-nvm-id-ctrl(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-nvm-id-ctrl(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-nvm-id-ctrl -
   Send NVMe Identify Controller, return NVM command set structure
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme nvm-id-ctrl</em> &lt;device&gt; [-o &lt;fmt&gt; | --output-format=&lt;fmt&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, sends the NVM command set&#8217;s identify controller
command and provides the result and returned structure.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).</p></div>
<div class="paragraph"><p>On success, the data structure returned by the device will be decoded and
displayed in one of several ways.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-o &lt;format&gt;
</dt>
<dt class="hdlist1">
--output-format=&lt;format&gt;
</dt>
<dd>
<p>
              Set the reporting format to <em>normal</em>, <em>json</em>, or
              <em>binary</em>. Only one output format can be used at a time.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Has the program interpret the returned buffer and display the known
fields in a human readable format:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme nvm-id-ctrl /dev/nvme0</code></pre>
</div></div>
</li>
<li>
<p>
Show the output in json format
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme nvm-id-ctrl /dev/nvme0 -o json</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of nvme-cli</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
 070701015D6D71000081A4000003E80000006400000001642C0FB600000ADD000000000000004A00000000000000000000003C00000000nvme-cli/Documentation/nvme-ocp-clear-fw-activate-history.1   '\" t
.\"     Title: nvme-ocp-clear-fw-activate-history
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-OCP\-CLEAR\-FW" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-ocp-clear-fw-activate-history \- Clear the OCP Firmware Update History Log
.SH "SYNOPSIS"
.sp
.nf
\fInvme ocp clear\-fw\-activate\-history\fR <device> [\-\-no\-uuid | \-n>]
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, Clear OCP Firmware Update History Log\&.
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0) or block device (ex: /dev/nvme0n1)\&.
.sp
This command with no option added, will try to automatically detect the parameters of the command\&. This will work successfully or fail gracefully for devices supporting UUID for Vendor Specific Information (NVMe 1\&.4 or later, OCP 2\&.0 requires NVMe 1\&.4b)\&. For devices that do not support OCP 2\&.0 the command will fail gracefully, unless the \-\-no\-uuid option is provided\&.
.sp
For OCP 1\&.0 devices (before NVMe 1\&.4) the \-\-no\-uuid option is required\&. When \-\-no\-uuid option is provided, results for devices before NVMe 1\&.4 without OCP support are undefined\&.
.sp
On success it returns 0, error code otherwise\&.
.SH "OPTIONS"
.PP
\-n, \-\-no\-uuid
.RS 4
Do not try to automatically detect UUID index for this command (required for old OCP 1\&.0 support)
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Clears OCP Firmware Activation History Log for the device:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme ocp clear\-fw\-activate\-history /dev/nvme0
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite\&.
   070701015D6D72000081A4000003E80000006400000001642C0FB600004A31000000000000004A00000000000000000000003F00000000nvme-cli/Documentation/nvme-ocp-clear-fw-activate-history.html    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-ocp-clear-fw-activate-history(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-ocp-clear-fw-activate-history(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-ocp-clear-fw-activate-history -
   Clear the OCP Firmware Update History Log
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme ocp clear-fw-activate-history</em> &lt;device&gt; [--no-uuid | -n&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, Clear OCP Firmware Update History Log.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0) or block device (ex: /dev/nvme0n1).</p></div>
<div class="paragraph"><p>This command with no option added, will try to automatically detect the
parameters of the command. This will work successfully or fail gracefully for
devices supporting UUID for Vendor Specific Information (NVMe 1.4 or later,
OCP 2.0 requires NVMe 1.4b). For devices that do not support OCP 2.0 the
command will fail gracefully, unless the --no-uuid option is provided.</p></div>
<div class="paragraph"><p>For OCP 1.0 devices (before NVMe 1.4) the --no-uuid option is required.
When --no-uuid option is provided, results for devices before NVMe 1.4 without
OCP support are undefined.</p></div>
<div class="paragraph"><p>On success it returns 0, error code otherwise.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-n
</dt>
<dt class="hdlist1">
--no-uuid
</dt>
<dd>
<p>
        Do not try to automatically detect UUID index for this command (required
        for old OCP 1.0 support)
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Clears OCP Firmware Activation History Log for the device:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme ocp clear-fw-activate-history /dev/nvme0</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite.</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
   070701015D6D73000081A4000003E80000006400000001642C0FB600000940000000000000004A00000000000000000000003600000000nvme-cli/Documentation/nvme-ocp-latency-monitor-log.1 '\" t
.\"     Title: nvme-ocp-latency-monitor-log
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-OCP\-LATENCY\-" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-ocp-latency-monitor-log \- Display latency monitor log page data in human readable format
.SH "SYNOPSIS"
.sp
.nf
\fInvme ocp latency\-monitor\-log\fR <device> [\-\-output\-format=<fmt> | \-o <fmt>]
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, latency monitor log page data\&.
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0) or block device (ex: /dev/nvme0n1)\&.
.sp
This will only work on OCP compliant devices supporting this log page\&. Results for any other device are undefined\&.
.sp
On success it returns 0, error code otherwise\&.
.SH "OPTIONS"
.PP
\-o <format>, \-\-output\-format=<format>
.RS 4
Set the reporting format to
\fInormal\fR
or
\fIjson\fR\&. Only one output format can be used at a time\&. The default is normal\&.
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Displays the get latency monitor log for the device:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme ocp latency\-monitor\-log /dev/nvme0
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite\&.
070701015D6D74000081A4000003E80000006400000001642C0FB60000489E000000000000004A00000000000000000000003900000000nvme-cli/Documentation/nvme-ocp-latency-monitor-log.html  <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-ocp-latency-monitor-log(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-ocp-latency-monitor-log(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-ocp-latency-monitor-log -
   Display latency monitor log page data in human readable format
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme ocp latency-monitor-log</em> &lt;device&gt; [--output-format=&lt;fmt&gt; | -o &lt;fmt&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, latency monitor log page data.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0) or block device (ex: /dev/nvme0n1).</p></div>
<div class="paragraph"><p>This will only work on OCP compliant devices supporting this log page.
Results for any other device are undefined.</p></div>
<div class="paragraph"><p>On success it returns 0, error code otherwise.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-o &lt;format&gt;
</dt>
<dt class="hdlist1">
--output-format=&lt;format&gt;
</dt>
<dd>
<p>
        Set the reporting format to <em>normal</em> or <em>json</em>. Only one output format
        can be used at a time. The default is normal.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Displays the get latency monitor log for the device:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme ocp latency-monitor-log /dev/nvme0</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite.</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
  070701015D6D75000081A4000003E80000006400000001642C0FB60000096D000000000000004A00000000000000000000003000000000nvme-cli/Documentation/nvme-ocp-smart-add-log.1   '\" t
.\"     Title: nvme-ocp-smart-add-log
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-OCP\-SMART\-AD" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-ocp-smart-add-log \- Retrieves Extended SMART information of given OCP compliant device
.SH "SYNOPSIS"
.sp
.nf
\fInvme ocp smart\-add\-log\fR <device> [\-\-output\-format=<fmt> | \-o <fmt>]
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, send a smart\-add\-log command and provide the additional smart log\&.
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0) or block device (ex: /dev/nvme0n1)\&.
.sp
This will only work on OCP compliant devices supporting this feature\&. Results for any other device are undefined\&.
.sp
On success it returns 0, error code otherwise\&.
.SH "OPTIONS"
.PP
\-o <format>, \-\-output\-format=<format>
.RS 4
Set the reporting format to
\fInormal\fR
or
\fIjson\fR\&. Only one output format can be used at a time\&. The default is normal\&.
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Has the program issue a smart\-add\-log command to retrieve the 0xC0 log page\&.
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme ocp smart\-add\-log /dev/nvme0
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite\&.
   070701015D6D76000081A4000003E80000006400000001642C0FB6000048C0000000000000004A00000000000000000000003300000000nvme-cli/Documentation/nvme-ocp-smart-add-log.html    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-ocp-smart-add-log(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-ocp-smart-add-log(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-ocp-smart-add-log -
   Retrieves Extended SMART information of given OCP compliant device
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme ocp smart-add-log</em> &lt;device&gt; [--output-format=&lt;fmt&gt; | -o &lt;fmt&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, send a smart-add-log command and
provide the additional smart log.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0) or block device (ex: /dev/nvme0n1).</p></div>
<div class="paragraph"><p>This will only work on OCP compliant devices supporting this feature.
Results for any other device are undefined.</p></div>
<div class="paragraph"><p>On success it returns 0, error code otherwise.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-o &lt;format&gt;
</dt>
<dt class="hdlist1">
--output-format=&lt;format&gt;
</dt>
<dd>
<p>
        Set the reporting format to <em>normal</em> or <em>json</em>. Only one output format
        can be used at a time. The default is normal.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Has the program issue a smart-add-log command to retrieve the 0xC0 log page.
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme ocp smart-add-log /dev/nvme0</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite.</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
070701015D6D77000081A4000003E80000006400000001642C0FB600000ECF000000000000004A00000000000000000000003300000000nvme-cli/Documentation/nvme-persistent-event-log.1    '\" t
.\"     Title: persistent-event-log
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "PERSISTENT\-EVENT\-L" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-persistent-event-log \- Send NVMe persistent event log page request, returns result and log
.SH "SYNOPSIS"
.sp
.nf
\fInvme persistent\-event\-log\fR <device> [\-\-action=<action> | \-a <action>]
            [\-\-log\-len=<log\-len> | \-l <log\-len>]
            [\-\-raw\-binary | \-b]
            [\-\-output\-format=<fmt> | \-o <fmt>]
.fi
.SH "DESCRIPTION"
.sp
Retrieves the NVMe persistent event log page from an NVMe device and provides the returned structure\&.
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1)\&.
.sp
On success, the returned persistent event log structure may be returned in one of several ways depending on the option flags; the structure may parsed by the program and printed in a readable format or the raw buffer may be printed to stdout for another program to parse\&.
.SH "OPTIONS"
.PP
\-a <action>, \-\-action=<action>
.RS 4
While try to retrieve this log action the controller shall take during processing this persistent log page command\&. This mandatory field, based on the value issued it may Read Log Data, Establish Context and Read Log Data or Release Context can occur\&. For More details see NVM Express 1\&.4 Spec\&. Section 5\&.14\&.1\&.13 Persistent Event Log (Log Identifier 0Dh)
.RE
.PP
\-l <log\-len>, \-\-log\-len=<log\-len>
.RS 4
Allocates a buffer of <log\-len> bytes size and requests this many bytes be returned in the constructed NVMe command\&. This param is mandatory\&. If <log\-len> given is 0 and action is 0, it will read the Total Log Length(TLL) of the page\&.
.RE
.PP
\-b, \-\-raw\-binary
.RS 4
Print the raw persistent event log buffer to stdout\&.
.RE
.PP
\-o <format>, \-\-output\-format=<format>
.RS 4
Set the reporting format to
\fInormal\fR,
\fIjson\fR, or
\fIbinary\fR\&. Only one output format can be used at a time\&.
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Print the persistent event log page in a human readable format:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme persistent\-event\-log /dev/nvme0
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Print the raw persistent event log to a file:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme persistent\-event\-log /dev/nvme0 \-\-raw\-binary > persistent_log\&.raw
.fi
.if n \{\
.RE
.\}
.sp
It is probably a bad idea to not redirect stdout when using this mode\&.
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite
 070701015D6D78000081A4000003E80000006400000001642C0FB600004F28000000000000004A00000000000000000000003600000000nvme-cli/Documentation/nvme-persistent-event-log.html <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>persistent-event-log(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
persistent-event-log(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-persistent-event-log -
   Send NVMe persistent event log page request, returns result and log
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme persistent-event-log</em> &lt;device&gt; [--action=&lt;action&gt; | -a &lt;action&gt;]
            [--log-len=&lt;log-len&gt; | -l &lt;log-len&gt;]
            [--raw-binary | -b]
            [--output-format=&lt;fmt&gt; | -o &lt;fmt&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>Retrieves the NVMe persistent event log page from an NVMe device
and provides the returned structure.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).</p></div>
<div class="paragraph"><p>On success, the returned persistent event log structure may be returned
in one of several ways depending on the option flags; the structure may
parsed by the program and printed in a readable format or the raw buffer
may be printed to stdout for another program to parse.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-a &lt;action&gt;
</dt>
<dt class="hdlist1">
--action=&lt;action&gt;
</dt>
<dd>
<p>
    While try to retrieve this log action the controller shall take
    during processing this persistent log page command. This mandatory
    field, based on the value issued it may Read Log Data, Establish
    Context and Read Log Data or Release Context can occur. For More
    details see NVM Express 1.4 Spec. Section 5.14.1.13 Persistent
    Event Log (Log Identifier 0Dh)
</p>
</dd>
<dt class="hdlist1">
-l &lt;log-len&gt;
</dt>
<dt class="hdlist1">
--log-len=&lt;log-len&gt;
</dt>
<dd>
<p>
    Allocates a buffer of &lt;log-len&gt; bytes size and requests this
    many bytes be returned in the constructed NVMe command. This
    param is mandatory. If &lt;log-len&gt; given is 0 and action is 0,
    it will read the Total Log Length(TLL) of the page.
</p>
</dd>
<dt class="hdlist1">
-b
</dt>
<dt class="hdlist1">
--raw-binary
</dt>
<dd>
<p>
    Print the raw persistent event log buffer to stdout.
</p>
</dd>
<dt class="hdlist1">
-o &lt;format&gt;
</dt>
<dt class="hdlist1">
--output-format=&lt;format&gt;
</dt>
<dd>
<p>
    Set the reporting format to <em>normal</em>, <em>json</em>, or <em>binary</em>.
    Only one output format can be used at a time.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Print the persistent event log page in a human readable format:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme persistent-event-log /dev/nvme0</code></pre>
</div></div>
</li>
<li>
<p>
Print the raw persistent event log to a file:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme persistent-event-log /dev/nvme0 --raw-binary &gt; persistent_log.raw</code></pre>
</div></div>
<div class="paragraph"><p>It is probably a bad idea to not redirect stdout when using this mode.</p></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
070701015D6D79000081A4000003E80000006400000001642C0FB600000E4A000000000000004A00000000000000000000003500000000nvme-cli/Documentation/nvme-pred-lat-event-agg-log.1  '\" t
.\"     Title: nvme-pred-lat-event-agg-log
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-PRED\-LAT\-EVE" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-pred-lat-event-agg-log \- Send Predictable Latency Event Aggregate Log Page request, returns result and log
.SH "SYNOPSIS"
.sp
.nf
\fInvme pred\-lat\-event\-agg\-log\fR <device> [\-\-log\-entries=<log_entries> | \-e <log_entries>]
                        [\-\-rae | \-r] [\-\-raw\-binary | \-b]
                        [\-\-output\-format=<fmt> | \-o <fmt>]
.fi
.SH "DESCRIPTION"
.sp
Retrieves the NVMe Predictable Latency Event Aggregate Log Page from an NVMe device and provides the returned structure\&.
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1)\&.
.sp
On success, the returned Predictable Latency Event Aggregate Log Page structure may be returned in one of several ways depending on the option flags; the structure may parsed by the program and printed in a readable format or the raw buffer may be printed to stdout for another program to parse\&.
.SH "OPTIONS"
.PP
\-e <log_entries>, \-\-log\-entries=<log_entries>
.RS 4
Retrieve the Predictable Latency Event Aggregate Log pending entries\&. This argument is mandatory and its success may depend on the device\(cqs statistics to provide this log For More details see NVM Express 1\&.4 Spec\&. Section 5\&.14\&.1\&.11\&. The maximum number of log entries supported is 2044 for the device\&.
.RE
.PP
\-r, \-\-rae
.RS 4
Retain an Asynchronous Event\&.
.RE
.PP
\-b, \-\-raw\-binary
.RS 4
Print the raw Predictable Latency Event Aggregate log buffer to stdout\&.
.RE
.PP
\-o <format>, \-\-output\-format=<format>
.RS 4
Set the reporting format to
\fInormal\fR,
\fIjson\fR, or
\fIbinary\fR\&. Only one output format can be used at a time\&.
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Print the Predictable Latency Event Aggregate Log page in a human readable format:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme pred\-lat\-event\-agg\-log /dev/nvme0
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Print the raw Predictable Latency Event Aggregate log to a file:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme pred\-lat\-event\-agg\-log /dev/nvme0 \-\-raw\-binary > pred_lat_agg_log\&.raw
.fi
.if n \{\
.RE
.\}
.sp
It is probably a bad idea to not redirect stdout when using this mode\&.
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite
  070701015D6D7A000081A4000003E80000006400000001642C0FB600004E7F000000000000004A00000000000000000000003800000000nvme-cli/Documentation/nvme-pred-lat-event-agg-log.html   <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-pred-lat-event-agg-log(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-pred-lat-event-agg-log(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-pred-lat-event-agg-log -
   Send Predictable Latency Event Aggregate Log Page request, returns result and log
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme pred-lat-event-agg-log</em> &lt;device&gt; [--log-entries=&lt;log_entries&gt; | -e &lt;log_entries&gt;]
                        [--rae | -r] [--raw-binary | -b]
                        [--output-format=&lt;fmt&gt; | -o &lt;fmt&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>Retrieves the NVMe Predictable Latency Event Aggregate Log Page from an
NVMe device and provides the returned structure.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).</p></div>
<div class="paragraph"><p>On success, the returned Predictable Latency Event Aggregate Log
Page structure may be returned in one of several ways depending on
the option flags; the structure may parsed by the program and printed
in a readable format or the raw buffer may be printed to stdout for
another program to parse.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-e &lt;log_entries&gt;
</dt>
<dt class="hdlist1">
--log-entries=&lt;log_entries&gt;
</dt>
<dd>
<p>
    Retrieve the Predictable Latency Event Aggregate Log pending entries.
    This argument is mandatory and its success may depend on the device&#8217;s
    statistics to provide this log For More details see NVM Express 1.4 Spec.
    Section 5.14.1.11. The maximum number of log entries supported is 2044
    for the device.
</p>
</dd>
<dt class="hdlist1">
-r
</dt>
<dt class="hdlist1">
--rae
</dt>
<dd>
<p>
        Retain an Asynchronous Event.
</p>
</dd>
<dt class="hdlist1">
-b
</dt>
<dt class="hdlist1">
--raw-binary
</dt>
<dd>
<p>
        Print the raw Predictable Latency Event Aggregate log buffer to stdout.
</p>
</dd>
<dt class="hdlist1">
-o &lt;format&gt;
</dt>
<dt class="hdlist1">
--output-format=&lt;format&gt;
</dt>
<dd>
<p>
    Set the reporting format to <em>normal</em>, <em>json</em>, or <em>binary</em>.
    Only one output format can be used at a time.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Print the Predictable Latency Event Aggregate Log page in a human readable format:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme pred-lat-event-agg-log /dev/nvme0</code></pre>
</div></div>
</li>
<li>
<p>
Print the raw Predictable Latency Event Aggregate log to a file:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme pred-lat-event-agg-log /dev/nvme0 --raw-binary &gt; pred_lat_agg_log.raw</code></pre>
</div></div>
<div class="paragraph"><p>It is probably a bad idea to not redirect stdout when using this mode.</p></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
 070701015D6D7B000081A4000003E80000006400000001642C0FB600000DAD000000000000004A00000000000000000000003200000000nvme-cli/Documentation/nvme-predictable-lat-log.1 '\" t
.\"     Title: nvme-predictable-lat-log
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-PREDICTABLE\-L" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-predictable-lat-log \- Send Predictable latency per NVM set log page request, returns result and log
.SH "SYNOPSIS"
.sp
.nf
\fInvme predictable\-lat\-log\fR <device> [\-\-nvmset\-id=<nvmset_id> | \-i <nvmset_id>]
                        [\-\-raw\-binary | \-b]
                        [\-\-output\-format=<fmt> | \-o <fmt>]
.fi
.SH "DESCRIPTION"
.sp
Retrieves the NVMe Predictable latency per NVM set log page from an NVMe device and provides the returned structure\&.
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1)\&.
.sp
On success, the returned Predictable latency per NVM set log structure may be returned in one of several ways depending on the option flags; the structure may parsed by the program and printed in a readable format or the raw buffer may be printed to stdout for another program to parse\&.
.SH "OPTIONS"
.PP
\-i <nvmset_id>, \-\-nvmset\-id=<nvmset_id>
.RS 4
Retrieve the Predictable latency per NVM set log for the given nvmset id\&. This argument is mandatory and its success may depend on the device\(cqs statistics to provide this log For More details see NVM Express 1\&.4 Spec\&. Section 5\&.14\&.1\&.10\&. The default nvmset id to use is 1 for the device\&.
.RE
.PP
\-b, \-\-raw\-binary
.RS 4
Print the raw Predictable latency per NVM set log buffer to stdout\&.
.RE
.PP
\-o <format>, \-\-output\-format=<format>
.RS 4
Set the reporting format to
\fInormal\fR,
\fIjson\fR, or
\fIbinary\fR\&. Only one output format can be used at a time\&.
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Print the Predictable latency per NVM set log page in a human readable format:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme predictable\-lat\-log /dev/nvme0
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Print the raw Predictable latency per NVM set log to a file:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme predictable\-lat\-log /dev/nvme0 \-\-raw\-binary > nvmset_log\&.raw
.fi
.if n \{\
.RE
.\}
.sp
It is probably a bad idea to not redirect stdout when using this mode\&.
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite
   070701015D6D7C000081A4000003E80000006400000001642C0FB600004DAD000000000000004A00000000000000000000003500000000nvme-cli/Documentation/nvme-predictable-lat-log.html  <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-predictable-lat-log(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-predictable-lat-log(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-predictable-lat-log -
   Send Predictable latency per NVM set log page request, returns result and log
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme predictable-lat-log</em> &lt;device&gt; [--nvmset-id=&lt;nvmset_id&gt; | -i &lt;nvmset_id&gt;]
                        [--raw-binary | -b]
                        [--output-format=&lt;fmt&gt; | -o &lt;fmt&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>Retrieves the NVMe Predictable latency per NVM set log page from an NVMe device
and provides the returned structure.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).</p></div>
<div class="paragraph"><p>On success, the returned Predictable latency per NVM set log structure
may be returned in one of several ways depending on the option flags; the
structure may parsed by the program and printed in a readable format or
the raw buffer may be printed to stdout for another program to parse.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-i &lt;nvmset_id&gt;
</dt>
<dt class="hdlist1">
--nvmset-id=&lt;nvmset_id&gt;
</dt>
<dd>
<p>
    Retrieve the Predictable latency per NVM set log for the given nvmset id.
    This argument is mandatory and its success may depend on the device&#8217;s
    statistics to provide this log For More details see NVM Express 1.4 Spec.
    Section 5.14.1.10. The default nvmset id to use is 1 for the device.
</p>
</dd>
<dt class="hdlist1">
-b
</dt>
<dt class="hdlist1">
--raw-binary
</dt>
<dd>
<p>
        Print the raw Predictable latency per NVM set log buffer to stdout.
</p>
</dd>
<dt class="hdlist1">
-o &lt;format&gt;
</dt>
<dt class="hdlist1">
--output-format=&lt;format&gt;
</dt>
<dd>
<p>
              Set the reporting format to <em>normal</em>, <em>json</em>, or
              <em>binary</em>. Only one output format can be used at a time.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Print the Predictable latency per NVM set log page in a human readable format:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme predictable-lat-log /dev/nvme0</code></pre>
</div></div>
</li>
<li>
<p>
Print the raw Predictable latency per NVM set log to a file:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme predictable-lat-log /dev/nvme0 --raw-binary &gt; nvmset_log.raw</code></pre>
</div></div>
<div class="paragraph"><p>It is probably a bad idea to not redirect stdout when using this mode.</p></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
   070701015D6D7D000081A4000003E80000006400000001642C0FB600000B51000000000000004A00000000000000000000003000000000nvme-cli/Documentation/nvme-primary-ctrl-caps.1   '\" t
.\"     Title: nvme-primary-ctrl-caps
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-PRIMARY\-CTRL\" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-primary-ctrl-caps \- Send identify Primary Controller Caps, return result and structure
.SH "SYNOPSIS"
.sp
.nf
\fInvme primary\-ctrl\-caps\fR <device> [\-o <format> | \-\-output\-format=<format>]
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, sends an identify primary Controller caps command and provides the result and returned structure\&.
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1)\&.
.sp
On success, the structure may be returned in one of several ways depending on the option flags; the structure may be parsed by the program or the raw buffer may be printed to stdout\&.
.SH "OPTIONS"
.PP
\-o <format>, \-\-output\-format=<format>
.RS 4
Set the reporting format to
\fInormal\fR,
\fIjson\fR, or
\fIbinary\fR\&. Only one output format can be used at a time\&.
.RE
.PP
\-H, \-\-human\-readable
.RS 4
This option will parse and format many of the bit fields into human\-readable formats\&.
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Get Primary Ctrl Caps of the device in default format
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme primary\-ctrl\-caps /dev/nvme0
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Has the program interpret the returned buffer and display the known fields in a human readable format:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme primary\-ctrl\-caps /dev/nvme0 \-\-human\-readable
# nvme primary\-ctrl\-caps /dev/nvme0 \-H
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite
   070701015D6D7E000081A4000003E80000006400000001642C0FB600004ADB000000000000004A00000000000000000000003300000000nvme-cli/Documentation/nvme-primary-ctrl-caps.html    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-primary-ctrl-caps(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-primary-ctrl-caps(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-primary-ctrl-caps -
   Send identify Primary Controller Caps, return result and structure
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme primary-ctrl-caps</em> &lt;device&gt; [-o &lt;format&gt; | --output-format=&lt;format&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, sends an identify primary Controller caps command and
provides the result and returned structure.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).</p></div>
<div class="paragraph"><p>On success, the structure may be returned in one of several ways depending
on the option flags; the structure may be parsed by the program or the
raw buffer may be printed to stdout.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-o &lt;format&gt;
</dt>
<dt class="hdlist1">
--output-format=&lt;format&gt;
</dt>
<dd>
<p>
              Set the reporting format to <em>normal</em>, <em>json</em>, or
              <em>binary</em>. Only one output format can be used at a time.
</p>
</dd>
<dt class="hdlist1">
-H
</dt>
<dt class="hdlist1">
--human-readable
</dt>
<dd>
<p>
        This option will parse and format many of the bit fields
        into human-readable formats.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Get Primary Ctrl Caps of the device in default format
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme primary-ctrl-caps /dev/nvme0</code></pre>
</div></div>
</li>
<li>
<p>
Has the program interpret the returned buffer and display the known
fields in a human readable format:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme primary-ctrl-caps /dev/nvme0 --human-readable
# nvme primary-ctrl-caps /dev/nvme0 -H</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
 070701015D6D7F000081A4000003E80000006400000001642C0FB600001846000000000000004A00000000000000000000002300000000nvme-cli/Documentation/nvme-read.1    '\" t
.\"     Title: nvme-read
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-READ" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-read \- Send an NVMe Read command, provide results
.SH "SYNOPSIS"
.sp
.nf
\fInvme\-read\fR <device> [\-\-start\-block=<slba> | \-s <slba>]
                        [\-\-block\-count=<nlb> | \-c <nlb>]
                        [\-\-data\-size=<size> | \-z <size>]
                        [\-\-metadata\-size=<size> | \-y <size>]
                        [\-\-ref\-tag=<reftag> | \-r <reftag>]
                        [\-\-data=<data\-file> | \-d <data\-file>]
                        [\-\-metadata=<metadata\-file> | \-M <metadata\-file>]
                        [\-\-prinfo=<prinfo> | \-p <prinfo>]
                        [\-\-app\-tag\-mask=<appmask> | \-m <appmask>]
                        [\-\-app\-tag=<apptag> | \-a <apptag>]
                        [\-\-limited\-retry | \-l]
                        [\-\-force\-unit\-access | \-f]
                        [\-\-dir\-type=<type> | \-T <type>]
                        [\-\-dir\-spec=<spec> | \-S <spec>]
                        [\-\-dsm=<dsm> | \-D <dsm>]
                        [\-\-show\-command | \-v]
                        [\-\-dry\-run | \-w]
                        [\-\-latency | \-t]
                        [\-\-storage\-tag<storage\-tag> | \-g <storage\-tag>]
                        [\-\-storage\-tag\-check | \-C ]
                        [\-\-force]
.fi
.SH "DESCRIPTION"
.sp
The Read command reads the logical blocks specified by the command from the medium and copies to the data data buffer provided\&. Will use stdout by default if you don\(cqt provide a file\&.
.SH "OPTIONS"
.PP
\-\-start\-block=<slba>, \-s <slba>
.RS 4
Start block\&.
.RE
.PP
\-\-block\-count, \-c
.RS 4
The number of blocks to transfer\&. This is a zeroes based value to align with the kernel\(cqs use of this field\&. (ie\&. 0 means transfer 1 block)\&.
.RE
.PP
\-\-data\-size=<size>, \-z <size>
.RS 4
Size of data, in bytes\&.
.RE
.PP
\-\-metadata\-size=<size>, \-y <size>
.RS 4
Size of metadata in bytes\&.
.RE
.PP
\-\-data=<data\-file>, \-d <data\-file>
.RS 4
Data file\&. If none provided, contents are sent to STDOUT\&.
.RE
.PP
\-\-metadata=<metadata\-file>, \-M <metadata\-file>
.RS 4
Metadata file, if necessary\&.
.RE
.PP
\-\-prinfo=<prinfo>, \-p <prinfo>
.RS 4
Protection Information field definition\&.
.TS
allbox tab(:);
lt lt
lt lt
lt lt
lt lt
lt lt
lt lt.
T{
Bit
T}:T{
Description
T}
T{
3
T}:T{
PRACT: Protection Information Action\&. When set to 1, PI is stripped/inserted on read/write when the block format\(cqs metadata size is 8\&. When set to 0, metadata is passes\&.
T}
T{
2:0
T}:T{
PRCHK: Protection Information Check:
T}
T{
2
T}:T{
Set to 1 enables checking the guard tag
T}
T{
1
T}:T{
Set to 1 enables checking the application tag
T}
T{
0
T}:T{
Set to 1 enables checking the reference tag
T}
.TE
.sp 1
.RE
.PP
\-\-ref\-tag=<reftag>, \-r <reftag>
.RS 4
Optional reftag when used with protection information\&.
.RE
.PP
\-\-app\-tag\-mask=<appmask>, \-m <appmask>
.RS 4
Optional application tag mask when used with protection information\&.
.RE
.PP
\-\-force\-unit\-access, \-f
.RS 4
Set the force\-unit access flag\&.
.RE
.PP
\-T <type>, \-\-dir\-type=<type>
.RS 4
Optional directive type\&. The nvme\-cli only enforces the value be in the defined range for the directive type, though the NVMe specification (1\&.3a) defines only one directive, 01h, for write stream identifiers\&.
.RE
.PP
\-S <spec>, \-\-dir\-spec=<spec>
.RS 4
Optional field for directive specifics\&. When used with write streams, this value is defined to be the write stream identifier\&. The nvme\-cli will not validate the stream requested is within the controller\(cqs capabilities\&.
.RE
.PP
\-D <dsm>, \-\-dsm=<dsm>
.RS 4
The optional data set management attributes for this command\&. The argument for this is the least significant 8 bits of the DSM field in a write command; the most significant 16 bits of the field come from the directive specific field, if used\&. This may be used to set attributes for the LBAs being written, like access frequency, type, latency, among other things, as well as yet to be defined types\&. Please consult the NVMe specification for detailed breakdown of how to use this field\&.
.RE
.PP
\-v, \-\-show\-cmd
.RS 4
Print out the command to be sent\&.
.RE
.PP
\-w, \-\-dry\-run
.RS 4
Do not actually send the command\&. If want to use \-\-dry\-run option, \-\-show\-cmd option
\fImust\fR
be set\&. Otherwise \-\-dry\-run option will be
\fIignored\fR\&.
.RE
.PP
\-t, \-\-latency
.RS 4
Print out the latency the IOCTL took (in us)\&.
.RE
.PP
\-g <storage\-tag>, \-\-storage\-tag=<storage\-tag>
.RS 4
Variable Sized Expected Logical Block Storage Tag(ELBST)\&.
.RE
.PP
\-C, \-\-storage\-tag\-check
.RS 4
This flag enables Storage Tag field checking as part of end\-to\-end data protection processing\&.
.RE
.PP
\-\-force
.RS 4
Ignore namespace is currently busy and performed the operation even though\&.
.RE
.SH "EXAMPLES"
.sp
No examples yet\&.
.SH "NVME"
.sp
Part of the nvme\-user suite
  070701015D6D80000081A4000003E80000006400000001642C0FB6000060CC000000000000004A00000000000000000000002600000000nvme-cli/Documentation/nvme-read.html <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-read(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-read(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-read -
   Send an NVMe Read command, provide results
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme-read</em> &lt;device&gt; [--start-block=&lt;slba&gt; | -s &lt;slba&gt;]
                        [--block-count=&lt;nlb&gt; | -c &lt;nlb&gt;]
                        [--data-size=&lt;size&gt; | -z &lt;size&gt;]
                        [--metadata-size=&lt;size&gt; | -y &lt;size&gt;]
                        [--ref-tag=&lt;reftag&gt; | -r &lt;reftag&gt;]
                        [--data=&lt;data-file&gt; | -d &lt;data-file&gt;]
                        [--metadata=&lt;metadata-file&gt; | -M &lt;metadata-file&gt;]
                        [--prinfo=&lt;prinfo&gt; | -p &lt;prinfo&gt;]
                        [--app-tag-mask=&lt;appmask&gt; | -m &lt;appmask&gt;]
                        [--app-tag=&lt;apptag&gt; | -a &lt;apptag&gt;]
                        [--limited-retry | -l]
                        [--force-unit-access | -f]
                        [--dir-type=&lt;type&gt; | -T &lt;type&gt;]
                        [--dir-spec=&lt;spec&gt; | -S &lt;spec&gt;]
                        [--dsm=&lt;dsm&gt; | -D &lt;dsm&gt;]
                        [--show-command | -v]
                        [--dry-run | -w]
                        [--latency | -t]
                        [--storage-tag&lt;storage-tag&gt; | -g &lt;storage-tag&gt;]
                        [--storage-tag-check | -C ]
                        [--force]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>The Read command reads the logical blocks specified by the command from
the medium and copies to the data data buffer provided. Will use stdout
by default if you don&#8217;t provide a file.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
--start-block=&lt;slba&gt;
</dt>
<dt class="hdlist1">
-s &lt;slba&gt;
</dt>
<dd>
<p>
        Start block.
</p>
</dd>
<dt class="hdlist1">
--block-count
</dt>
<dt class="hdlist1">
-c
</dt>
<dd>
<p>
        The number of blocks to transfer. This is a zeroes based value to
        align with the kernel&#8217;s use of this field. (ie. 0 means transfer
        1 block).
</p>
</dd>
<dt class="hdlist1">
--data-size=&lt;size&gt;
</dt>
<dt class="hdlist1">
-z &lt;size&gt;
</dt>
<dd>
<p>
        Size of data, in bytes.
</p>
</dd>
<dt class="hdlist1">
--metadata-size=&lt;size&gt;
</dt>
<dt class="hdlist1">
-y &lt;size&gt;
</dt>
<dd>
<p>
        Size of metadata in bytes.
</p>
</dd>
<dt class="hdlist1">
--data=&lt;data-file&gt;
</dt>
<dt class="hdlist1">
-d &lt;data-file&gt;
</dt>
<dd>
<p>
        Data file. If none provided, contents are sent to STDOUT.
</p>
</dd>
<dt class="hdlist1">
--metadata=&lt;metadata-file&gt;
</dt>
<dt class="hdlist1">
-M &lt;metadata-file&gt;
</dt>
<dd>
<p>
        Metadata file, if necessary.
</p>
</dd>
<dt class="hdlist1">
--prinfo=&lt;prinfo&gt;
</dt>
<dt class="hdlist1">
-p &lt;prinfo&gt;
</dt>
<dd>
<p>
        Protection Information field definition.
</p>
<div class="tableblock">
<table rules="all"
width="100%"
frame="border"
cellspacing="0" cellpadding="4">
<col width="50%" />
<col width="50%" />
<tbody>
<tr>
<td align="left" valign="top"><p class="table">Bit</p></td>
<td align="left" valign="top"><p class="table">Description</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">3</p></td>
<td align="left" valign="top"><p class="table">PRACT: Protection Information Action. When set to 1, PI is stripped/inserted
on read/write when the block format&#8217;s metadata size is 8. When set to 0,
metadata is passes.</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">2:0</p></td>
<td align="left" valign="top"><p class="table">PRCHK: Protection Information Check:</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">2</p></td>
<td align="left" valign="top"><p class="table">Set to 1 enables checking the guard tag</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">1</p></td>
<td align="left" valign="top"><p class="table">Set to 1 enables checking the application tag</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">0</p></td>
<td align="left" valign="top"><p class="table">Set to 1 enables checking the reference tag</p></td>
</tr>
</tbody>
</table>
</div>
</dd>
<dt class="hdlist1">
--ref-tag=&lt;reftag&gt;
</dt>
<dt class="hdlist1">
-r &lt;reftag&gt;
</dt>
<dd>
<p>
        Optional reftag when used with protection information.
</p>
</dd>
<dt class="hdlist1">
--app-tag-mask=&lt;appmask&gt;
</dt>
<dt class="hdlist1">
-m &lt;appmask&gt;
</dt>
<dd>
<p>
        Optional application tag mask when used with protection information.
</p>
</dd>
<dt class="hdlist1">
--force-unit-access
</dt>
<dt class="hdlist1">
-f
</dt>
<dd>
<p>
        Set the force-unit access flag.
</p>
</dd>
<dt class="hdlist1">
-T &lt;type&gt;
</dt>
<dt class="hdlist1">
--dir-type=&lt;type&gt;
</dt>
<dd>
<p>
        Optional directive type. The nvme-cli only enforces the value
        be in the defined range for the directive type, though the NVMe
        specification (1.3a) defines only one directive, 01h, for write
        stream identifiers.
</p>
</dd>
<dt class="hdlist1">
-S &lt;spec&gt;
</dt>
<dt class="hdlist1">
--dir-spec=&lt;spec&gt;
</dt>
<dd>
<p>
        Optional field for directive specifics. When used with
        write streams, this value is defined to be the write stream
        identifier. The nvme-cli will not validate the stream requested
        is within the controller&#8217;s capabilities.
</p>
</dd>
<dt class="hdlist1">
-D &lt;dsm&gt;
</dt>
<dt class="hdlist1">
--dsm=&lt;dsm&gt;
</dt>
<dd>
<p>
        The optional data set management attributes for this command. The argument
        for this is the least significant 8 bits of the DSM field in a write
        command; the most significant 16 bits of the field come from the directive
        specific field, if used. This may be used to set attributes for
        the LBAs being written, like access frequency, type, latency,
        among other things, as well as yet to be defined types. Please
        consult the NVMe specification for detailed breakdown of how to
        use this field.
</p>
</dd>
<dt class="hdlist1">
-v
</dt>
<dt class="hdlist1">
--show-cmd
</dt>
<dd>
<p>
        Print out the command to be sent.
</p>
</dd>
<dt class="hdlist1">
-w
</dt>
<dt class="hdlist1">
--dry-run
</dt>
<dd>
<p>
        Do not actually send the command. If want to use --dry-run option,
        --show-cmd option <em>must</em> be set. Otherwise --dry-run option will be
        <em>ignored</em>.
</p>
</dd>
<dt class="hdlist1">
-t
</dt>
<dt class="hdlist1">
--latency
</dt>
<dd>
<p>
        Print out the latency the IOCTL took (in us).
</p>
</dd>
<dt class="hdlist1">
-g &lt;storage-tag&gt;
</dt>
<dt class="hdlist1">
--storage-tag=&lt;storage-tag&gt;
</dt>
<dd>
<p>
        Variable Sized Expected Logical Block Storage Tag(ELBST).
</p>
</dd>
<dt class="hdlist1">
-C
</dt>
<dt class="hdlist1">
--storage-tag-check
</dt>
<dd>
<p>
        This flag enables Storage Tag field checking as part of end-to-end
        data protection processing.
</p>
</dd>
<dt class="hdlist1">
--force
</dt>
<dd>
<p>
        Ignore namespace is currently busy and performed the operation
        even though.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="paragraph"><p>No examples yet.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
070701015D6D81000081A4000003E80000006400000001642C0FB600000FE1000000000000004A00000000000000000000002500000000nvme-cli/Documentation/nvme-read.txt  nvme-read(1)
============

NAME
----
nvme-read - Send an NVMe Read command, provide results

SYNOPSIS
--------
[verse]
'nvme-read' <device> [--start-block=<slba> | -s <slba>]
			[--block-count=<nlb> | -c <nlb>]
			[--data-size=<size> | -z <size>]
			[--metadata-size=<size> | -y <size>]
			[--ref-tag=<reftag> | -r <reftag>]
			[--data=<data-file> | -d <data-file>]
			[--metadata=<metadata-file> | -M <metadata-file>]
			[--prinfo=<prinfo> | -p <prinfo>]
			[--app-tag-mask=<appmask> | -m <appmask>]
			[--app-tag=<apptag> | -a <apptag>]
			[--limited-retry | -l]
			[--force-unit-access | -f]
			[--dir-type=<type> | -T <type>]
			[--dir-spec=<spec> | -S <spec>]
			[--dsm=<dsm> | -D <dsm>]
			[--show-command | -v]
			[--dry-run | -w]
			[--latency | -t]
			[--storage-tag<storage-tag> | -g <storage-tag>]
			[--storage-tag-check | -C ]
			[--force]

DESCRIPTION
-----------
The Read command reads the logical blocks specified by the command from
the medium and copies to the data data buffer provided. Will use stdout
by default if you don't provide a file.

OPTIONS
-------
--start-block=<slba>::
-s <slba>::
	Start block.

--block-count::
-c::
	The number of blocks to transfer. This is a zeroes based value to
	align with the kernel's use of this field. (ie. 0 means transfer
	1 block).

--data-size=<size>::
-z <size>::
	Size of data, in bytes.

--metadata-size=<size>::
-y <size>::
	Size of metadata in bytes.

--data=<data-file>::
-d <data-file>::
	Data file. If none provided, contents are sent to STDOUT.

--metadata=<metadata-file>::
-M <metadata-file>::
	Metadata file, if necessary.

--prinfo=<prinfo>::
-p <prinfo>::
	Protection Information field definition.
+
[]
|=================
|Bit|Description
|3|PRACT: Protection Information Action. When set to 1, PI is stripped/inserted
on read/write when the block format's metadata size is 8. When set to 0,
metadata is passes.
|2:0|PRCHK: Protection Information Check:
|2|Set to 1 enables checking the guard tag
|1|Set to 1 enables checking the application tag
|0|Set to 1 enables checking the reference tag
|=================

--ref-tag=<reftag>::
-r <reftag>::
	Optional reftag when used with protection information.

--app-tag-mask=<appmask>::
-m <appmask>::
	Optional application tag mask when used with protection information.

--force-unit-access::
-f::
	Set the force-unit access flag.

-T <type>::
--dir-type=<type>::
	Optional directive type. The nvme-cli only enforces the value
	be in the defined range for the directive type, though the NVMe
	specification (1.3a) defines only one directive, 01h, for write
	stream identifiers.

-S <spec>::
--dir-spec=<spec>::
	Optional field for directive specifics. When used with
	write streams, this value is defined to be the write stream
	identifier. The nvme-cli will not validate the stream requested
	is within the controller's capabilities.

-D <dsm>::
--dsm=<dsm>::
	The optional data set management attributes for this command. The argument
	for this is the least significant 8 bits of the DSM field in a write
	command; the most significant 16 bits of the field come from the directive
	specific field, if used. This may be used to set attributes for
	the LBAs being written, like access frequency, type, latency,
	among other things, as well as yet to be defined types. Please
	consult the NVMe specification for detailed breakdown of how to
	use this field.

-v::
--show-cmd::
	Print out the command to be sent.

-w::
--dry-run::
	Do not actually send the command. If want to use --dry-run option,
	--show-cmd option _must_ be set. Otherwise --dry-run option will be
	_ignored_.

-t::
--latency::
	Print out the latency the IOCTL took (in us).

-g <storage-tag>::
--storage-tag=<storage-tag>::
	Variable Sized Expected Logical Block Storage Tag(ELBST).

-C::
--storage-tag-check::
	This flag enables Storage Tag field checking as part of end-to-end
	data protection processing.

--force::
	Ignore namespace is currently busy and performed the operation
	even though.

EXAMPLES
--------
No examples yet.

NVME
----
Part of the nvme-user suite
   070701015D6D82000081A4000003E80000006400000001642C0FB6000006D5000000000000004A00000000000000000000002400000000nvme-cli/Documentation/nvme-reset.1   '\" t
.\"     Title: nvme-reset
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-RESET" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-reset \- Reset the nvme controller\&.
.SH "SYNOPSIS"
.sp
.nf
\fInvme reset\fR <device>
.fi
.SH "DESCRIPTION"
.sp
Requests NVMe controller reset\&. The <device> param is mandatory and must be an NVMe character device (ex: /dev/nvme0)\&.
.SH "OPTIONS"
.sp
None
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Resets the controller\&.
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme reset /dev/nvme0
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite
   070701015D6D83000081A4000003E80000006400000001642C0FB600004562000000000000004A00000000000000000000002700000000nvme-cli/Documentation/nvme-reset.html    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-reset(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-reset(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-reset -
   Reset the nvme controller.
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme reset</em> &lt;device&gt;</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>Requests NVMe controller reset. The &lt;device&gt; param is mandatory and must
be an NVMe character device (ex: /dev/nvme0).</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="paragraph"><p>None</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Resets the controller.
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme reset /dev/nvme0</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
  070701015D6D84000081A4000003E80000006400000001642C0FB600000F82000000000000004A00000000000000000000002B00000000nvme-cli/Documentation/nvme-resv-acquire.1    '\" t
.\"     Title: nvme-resv-acquire
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-RESV\-ACQUIRE" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-resv-acquire \- Acquire an nvme reservation
.SH "SYNOPSIS"
.sp
.nf
\fInvme resv\-acquire\fR <device> [\-\-namespace\-id=<nsid> | \-n <nsid>]
                             [\-\-crkey=<crkey> | \-c <crkey>]
                             [\-\-prkey=<prkey> | \-p <prkey>]
                             [\-\-rtype=<rtype> | \-t <rtype>]
                             [\-\-racqa=<racqa> | \-a <racqa>]
                             [\-\-iekey | \-i]
.fi
.SH "DESCRIPTION"
.sp
The Reservation Acquire command is used to acquire a reservation on a namespace, preempt a reservation held on a namespace, and abort a reservation held on a namespace\&.
.SH "OPTIONS"
.PP
\-n <nsid>, \-\-namespace\-id=<nsid>
.RS 4
Override the nsid field\&. If using the admin character device, this parameter is required\&.
.RE
.PP
\-c <crkey>, \-\-crkey=<crkey>
.RS 4
Current Reservation Key: The field specifies the current reservation key associated with the host\&. If the IEKEY bit is set to \(oq1\(cq in the command, then the CRKEY check succeeds regardless of the value in this field\&.
.RE
.PP
\-p <prkey>, \-\-prkey=<prkey>
.RS 4
Preempt Reservation Key: If the Reservation Acquire Action is set to 001b (i\&.e\&., Preempt) or 010b (i\&.e\&., Preempt and Abort), then this field specifies the reservation key to be unregistered from the namespace\&. For all other Reservation Acquire Action values, this field is reserved\&.
.RE
.PP
\-t <rtype>, \-\-rtype=<rtype>
.RS 4
Reservation Type: This field specifies the type of reservation to be created\&.
.TS
allbox tab(:);
lt lt
lt lt
lt lt
lt lt
lt lt
lt lt
lt lt
lt lt
lt lt.
T{
Value
T}:T{
Definition
T}
T{
0h
T}:T{
Reserved
T}
T{
1h
T}:T{
Write Exclusive Reservation
T}
T{
2h
T}:T{
Exclusive Access Reservation
T}
T{
3h
T}:T{
Write Exclusive \- Registrants Only Reservation
T}
T{
4h
T}:T{
Exclusive Access \- Registrants Only Reservation
T}
T{
5h
T}:T{
Write Exclusive \- All Registrants Reservation
T}
T{
6h
T}:T{
Exclusive Access \- All Registrants Reservation
T}
T{
07h\-FFh
T}:T{
Reserved
T}
.TE
.sp 1
.RE
.PP
\-a <racqa>, \-\-racqa=<racqa>
.RS 4
Reservation Acquire Action: This field specifies the action that is performed by the command\&.
.TS
allbox tab(:);
lt lt
lt lt
lt lt
lt lt
lt lt.
T{
Value
T}:T{
Definition
T}
T{
0
T}:T{
Acquire
T}
T{
1
T}:T{
Preempt
T}
T{
2
T}:T{
Preempt and Abort
T}
T{
3\-7
T}:T{
Reserved
T}
.TE
.sp 1
.RE
.PP
\-i, \-\-iekey
.RS 4
Ignore Existing Key: If this bit is set to a
\fI1\fR, then the Current Reservation Key (CRKEY) check is disabled and the command shall succeed regardless of the CRKEY field value\&.
.sp
Indicator option, defaults to
\fI0\fR\&.
.RE
.SH "EXAMPLES"
.sp
No examples yet
.SH "NVME"
.sp
Part of the nvme\-user suite
  070701015D6D85000081A4000003E80000006400000001642C0FB6000057ED000000000000004A00000000000000000000002E00000000nvme-cli/Documentation/nvme-resv-acquire.html <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-resv-acquire(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-resv-acquire(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-resv-acquire -
   Acquire an nvme reservation
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme resv-acquire</em> &lt;device&gt; [--namespace-id=&lt;nsid&gt; | -n &lt;nsid&gt;]
                             [--crkey=&lt;crkey&gt; | -c &lt;crkey&gt;]
                             [--prkey=&lt;prkey&gt; | -p &lt;prkey&gt;]
                             [--rtype=&lt;rtype&gt; | -t &lt;rtype&gt;]
                             [--racqa=&lt;racqa&gt; | -a &lt;racqa&gt;]
                             [--iekey | -i]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>The Reservation Acquire command is used to acquire a reservation on
a namespace, preempt a reservation held on a namespace, and abort a
reservation held on a namespace.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-n &lt;nsid&gt;
</dt>
<dt class="hdlist1">
--namespace-id=&lt;nsid&gt;
</dt>
<dd>
<p>
        Override the nsid field. If using the admin character device,
        this parameter is required.
</p>
</dd>
<dt class="hdlist1">
-c &lt;crkey&gt;
</dt>
<dt class="hdlist1">
--crkey=&lt;crkey&gt;
</dt>
<dd>
<p>
        Current Reservation Key: The field specifies the current
        reservation key associated with the host. If the IEKEY bit is
        set to â€˜1â€™ in the command, then the CRKEY check succeeds
        regardless of the value in this field.
</p>
</dd>
<dt class="hdlist1">
-p &lt;prkey&gt;
</dt>
<dt class="hdlist1">
--prkey=&lt;prkey&gt;
</dt>
<dd>
<p>
        Preempt Reservation Key: If the Reservation Acquire Action is set
        to 001b (i.e., Preempt) or 010b (i.e., Preempt and Abort), then
        this field specifies the reservation key to be unregistered from
        the namespace. For all other Reservation Acquire Action values,
        this field is reserved.
</p>
</dd>
<dt class="hdlist1">
-t &lt;rtype&gt;
</dt>
<dt class="hdlist1">
--rtype=&lt;rtype&gt;
</dt>
<dd>
<p>
        Reservation Type: This field specifies the type of reservation
        to be created.
</p>
<div class="tableblock">
<table rules="all"
width="100%"
frame="border"
cellspacing="0" cellpadding="4">
<col width="50%" />
<col width="50%" />
<tbody>
<tr>
<td align="left" valign="top"><p class="table">Value</p></td>
<td align="left" valign="top"><p class="table">Definition</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">0h</p></td>
<td align="left" valign="top"><p class="table">Reserved</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">1h</p></td>
<td align="left" valign="top"><p class="table">Write Exclusive Reservation</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">2h</p></td>
<td align="left" valign="top"><p class="table">Exclusive Access Reservation</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">3h</p></td>
<td align="left" valign="top"><p class="table">Write Exclusive - Registrants Only Reservation</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">4h</p></td>
<td align="left" valign="top"><p class="table">Exclusive Access - Registrants Only Reservation</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">5h</p></td>
<td align="left" valign="top"><p class="table">Write Exclusive - All Registrants Reservation</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">6h</p></td>
<td align="left" valign="top"><p class="table">Exclusive Access - All Registrants Reservation</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">07h-FFh</p></td>
<td align="left" valign="top"><p class="table">Reserved</p></td>
</tr>
</tbody>
</table>
</div>
</dd>
<dt class="hdlist1">
-a &lt;racqa&gt;
</dt>
<dt class="hdlist1">
--racqa=&lt;racqa&gt;
</dt>
<dd>
<p>
        Reservation Acquire Action: This field specifies the action that
        is performed by the command.
</p>
<div class="tableblock">
<table rules="all"
width="100%"
frame="border"
cellspacing="0" cellpadding="4">
<col width="50%" />
<col width="50%" />
<tbody>
<tr>
<td align="left" valign="top"><p class="table">Value</p></td>
<td align="left" valign="top"><p class="table">Definition</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">0</p></td>
<td align="left" valign="top"><p class="table">Acquire</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">1</p></td>
<td align="left" valign="top"><p class="table">Preempt</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">2</p></td>
<td align="left" valign="top"><p class="table">Preempt and Abort</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">3-7</p></td>
<td align="left" valign="top"><p class="table">Reserved</p></td>
</tr>
</tbody>
</table>
</div>
</dd>
<dt class="hdlist1">
-i
</dt>
<dt class="hdlist1">
--iekey
</dt>
<dd>
<p>
        Ignore Existing Key: If this bit is set to a <em>1</em>, then the
        Current Reservation Key (CRKEY) check is disabled and the command
        shall succeed regardless of the CRKEY field  value.
</p>
<div class="paragraph"><p>Indicator option, defaults to <em>0</em>.</p></div>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="paragraph"><p>No examples yet</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
   070701015D6D86000081A4000003E80000006400000001642C0FB600000AAF000000000000004A00000000000000000000002D00000000nvme-cli/Documentation/nvme-resv-notif-log.1  '\" t
.\"     Title: nvme-resv-notif-log
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-RESV\-NOTIF\-L" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-resv-notif-log \- Send NVMe Reservation Notification log page request, return result and log
.SH "SYNOPSIS"
.sp
.nf
\fInvme resv\-notif\-log\fR <device> [\-\-output\-format=<fmt> | \-o <fmt>]
.fi
.SH "DESCRIPTION"
.sp
Retrieves NVMe Reservation Notification log page from an NVMe device and provides the returned structure\&.
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1)\&.
.sp
On success, the returned Reservation Notification log structure may be returned in one of several ways depending on the option flags; the structure may parsed by the program and printed in a readable format or the raw buffer may be printed to stdout for another program to parse\&.
.SH "OPTIONS"
.PP
\-o <format>, \-\-output\-format=<format>
.RS 4
Set the reporting format to
\fInormal\fR,
\fIjson\fR, or
\fIbinary\fR\&. Only one output format can be used at a time\&.
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Get the Reservation Notification log and print it in a human readable format:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme resv\-notif\-log /dev/nvme0
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Print the output in json format:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme resv\-notif\-log /dev/nvme0 \-o json
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite
 070701015D6D87000081A4000003E80000006400000001642C0FB600004A00000000000000004A00000000000000000000003000000000nvme-cli/Documentation/nvme-resv-notif-log.html   <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-resv-notif-log(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-resv-notif-log(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-resv-notif-log -
   Send NVMe Reservation Notification log page request,                       return result and log
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme resv-notif-log</em> &lt;device&gt; [--output-format=&lt;fmt&gt; | -o &lt;fmt&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>Retrieves NVMe Reservation Notification log page from an NVMe device and
provides the returned structure.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).</p></div>
<div class="paragraph"><p>On success, the returned Reservation Notification log structure may be
returned in one of several ways depending on the option flags; the structure
may parsed by the program and printed in a readable format or the raw buffer
may be printed to stdout for another program to parse.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-o &lt;format&gt;
</dt>
<dt class="hdlist1">
--output-format=&lt;format&gt;
</dt>
<dd>
<p>
              Set the reporting format to <em>normal</em>, <em>json</em>, or
              <em>binary</em>. Only one output format can be used at a time.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Get the Reservation Notification log and print it in a human readable format:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme resv-notif-log /dev/nvme0</code></pre>
</div></div>
</li>
<li>
<p>
Print the output in json format:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme resv-notif-log /dev/nvme0 -o json</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
070701015D6D88000081A4000003E80000006400000001642C0FB600001027000000000000004A00000000000000000000002C00000000nvme-cli/Documentation/nvme-resv-register.1   '\" t
.\"     Title: nvme-resv-register
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-RESV\-REGISTER" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-resv-register \- Register an nvme reservation
.SH "SYNOPSIS"
.sp
.nf
\fInvme resv\-register\fR <device> [\-\-namespace\-id=<nsid> | \-n <nsid>]
                              [\-\-crkey=<crkey> | \-c <crkey>]
                              [\-\-nrkey=<nrkey> | \-k <nrkey>]
                              [\-\-rrega=<rrega> | \-r <rrega>]
                              [\-\-cptpl=<cptpl> | \-p <cptpl>]
                              [\-\-iekey | \-i]
.fi
.SH "DESCRIPTION"
.sp
The Reservation Register command is used to register, unregister, or replace a reservation key\&.
.SH "OPTIONS"
.PP
\-n <nsid>, \-\-namespace\-id=<nsid>
.RS 4
Override the nsid field\&. If using the admin character device, this parameter is required\&.
.RE
.PP
\-c <crkey>, \-\-crkey=<crkey>
.RS 4
Current Reservation Key: If the Reservation Register Action is 001b (i\&.e\&., Unregister Reservation Key) or 010b (i\&.e\&., Replace Reservation Key), then this field contains the current reservation key associated with the host\&. For all other Reservation Register Action values, this field is reserved\&. The controller ignores the value of this field when the Ignore Existing Key (IEKEY) bit is set to \(oq1\(cq\&.
.RE
.PP
\-k <nrkey>, \-\-nrkey=<nrkey>
.RS 4
New Reservation Key: If the Reservation Register Action is 000b (i\&.e\&., Register Reservation Key) or 010b (i\&.e\&., Replace Reservation Key), then this field contains the new reservation key associated with the host\&. For all other Reservation Register Action values, this field is reserved\&.
.RE
.PP
\-p <cptpl>, \-\-cptpl=<cptpl>
.RS 4
Change Persist Through Power Loss State: This field allows the Persist Through Power Loss state associated with the namespace to be modified as a side effect of processing this command\&.
.TS
allbox tab(:);
lt lt
lt lt
lt lt
lt lt
lt lt.
T{
Value
T}:T{
Definition
T}
T{
0
T}:T{
No change to PTPL state
T}
T{
1
T}:T{
Reserved
T}
T{
2
T}:T{
Set PTPL state to \(oq0\(cq\&. Reservations are released and registrants are cleared on a power on\&.
T}
T{
3
T}:T{
Set PTPL state to \(oq1\(cq\&. Reservations and registrants persist across a power loss\&.
T}
.TE
.sp 1
.RE
.PP
\-r <rrega>, \-\-rrega=<rrega>
.RS 4
Reservation Register Action: This field specifies the registration action that is performed by the command\&.
.TS
allbox tab(:);
lt lt
lt lt
lt lt
lt lt
lt lt.
T{
Value
T}:T{
Definition
T}
T{
0
T}:T{
Register Reservation Key
T}
T{
1
T}:T{
Unregister Reservation Key
T}
T{
2
T}:T{
Replace Reservation Key
T}
T{
3\-7
T}:T{
Reserved
T}
.TE
.sp 1
.RE
.PP
\-i, \-\-iekey
.RS 4
Ignore Existing Key: If this bit is set to a
\fI1\fR, then the Current Reservation Key (CRKEY) check is disabled and the command shall succeed regardless of the CRKEY field value\&.
.sp
Indicator option, defaults to
\fI0\fR\&.
.RE
.SH "EXAMPLES"
.sp
No examples yet
.SH "NVME"
.sp
Part of the nvme\-user suite
 070701015D6D89000081A4000003E80000006400000001642C0FB6000056F1000000000000004A00000000000000000000002F00000000nvme-cli/Documentation/nvme-resv-register.html    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-resv-register(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-resv-register(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-resv-register -
   Register an nvme reservation
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme resv-register</em> &lt;device&gt; [--namespace-id=&lt;nsid&gt; | -n &lt;nsid&gt;]
                              [--crkey=&lt;crkey&gt; | -c &lt;crkey&gt;]
                              [--nrkey=&lt;nrkey&gt; | -k &lt;nrkey&gt;]
                              [--rrega=&lt;rrega&gt; | -r &lt;rrega&gt;]
                              [--cptpl=&lt;cptpl&gt; | -p &lt;cptpl&gt;]
                              [--iekey | -i]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>The Reservation Register command is used to register, unregister, or
replace a reservation key.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-n &lt;nsid&gt;
</dt>
<dt class="hdlist1">
--namespace-id=&lt;nsid&gt;
</dt>
<dd>
<p>
        Override the nsid field. If using the admin character device,
        this parameter is required.
</p>
</dd>
<dt class="hdlist1">
-c &lt;crkey&gt;
</dt>
<dt class="hdlist1">
--crkey=&lt;crkey&gt;
</dt>
<dd>
<p>
        Current Reservation Key: If the Reservation Register Action is
        001b (i.e., Unregister Reservation Key) or 010b (i.e., Replace
        Reservation Key), then this field contains the current reservation
        key associated with the host. For all other Reservation Register
        Action values, this field is reserved. The controller ignores
        the value of this field when the Ignore Existing Key (IEKEY)
        bit is set to â€˜1â€™.
</p>
</dd>
<dt class="hdlist1">
-k &lt;nrkey&gt;
</dt>
<dt class="hdlist1">
--nrkey=&lt;nrkey&gt;
</dt>
<dd>
<p>
        New Reservation Key: If the Reservation Register Action is
        000b (i.e., Register Reservation Key) or 010b (i.e., Replace
        Reservation Key), then this field contains the new reservation
        key associated with the host. For all other Reservation Register
        Action values, this field is reserved.
</p>
</dd>
<dt class="hdlist1">
-p &lt;cptpl&gt;
</dt>
<dt class="hdlist1">
--cptpl=&lt;cptpl&gt;
</dt>
<dd>
<p>
        Change Persist Through Power Loss State: This field allows the
        Persist Through Power Loss state associated with the namespace
        to be modified as a side effect of processing this command.
</p>
<div class="tableblock">
<table rules="all"
width="100%"
frame="border"
cellspacing="0" cellpadding="4">
<col width="50%" />
<col width="50%" />
<tbody>
<tr>
<td align="left" valign="top"><p class="table">Value</p></td>
<td align="left" valign="top"><p class="table">Definition</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">0</p></td>
<td align="left" valign="top"><p class="table">No change to PTPL state</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">1</p></td>
<td align="left" valign="top"><p class="table">Reserved</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">2</p></td>
<td align="left" valign="top"><p class="table">Set PTPL state to â€˜0â€™. Reservations are released and registrants
are cleared on a power on.</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">3</p></td>
<td align="left" valign="top"><p class="table">Set PTPL state to â€˜1â€™. Reservations and registrants persist across
a power loss.</p></td>
</tr>
</tbody>
</table>
</div>
</dd>
<dt class="hdlist1">
-r &lt;rrega&gt;
</dt>
<dt class="hdlist1">
--rrega=&lt;rrega&gt;
</dt>
<dd>
<p>
        Reservation Register Action: This field specifies the registration
        action that is performed by the command.
</p>
<div class="tableblock">
<table rules="all"
width="100%"
frame="border"
cellspacing="0" cellpadding="4">
<col width="50%" />
<col width="50%" />
<tbody>
<tr>
<td align="left" valign="top"><p class="table">Value</p></td>
<td align="left" valign="top"><p class="table">Definition</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">0</p></td>
<td align="left" valign="top"><p class="table">Register Reservation Key</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">1</p></td>
<td align="left" valign="top"><p class="table">Unregister Reservation Key</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">2</p></td>
<td align="left" valign="top"><p class="table">Replace Reservation Key</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">3-7</p></td>
<td align="left" valign="top"><p class="table">Reserved</p></td>
</tr>
</tbody>
</table>
</div>
</dd>
<dt class="hdlist1">
-i
</dt>
<dt class="hdlist1">
--iekey
</dt>
<dd>
<p>
        Ignore Existing Key: If this bit is set to a <em>1</em>, then the
        Current Reservation Key (CRKEY) check is disabled and the command
        shall succeed regardless of the CRKEY field value.
</p>
<div class="paragraph"><p>Indicator option, defaults to <em>0</em>.</p></div>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="paragraph"><p>No examples yet</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
   070701015D6D8A000081A4000003E80000006400000001642C0FB600000E4D000000000000004A00000000000000000000002B00000000nvme-cli/Documentation/nvme-resv-release.1    '\" t
.\"     Title: nvme-resv-release
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-RESV\-RELEASE" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-resv-release \- Release an nvme reservation
.SH "SYNOPSIS"
.sp
.nf
\fInvme resv\-release\fR <device> [\-\-namespace\-id=<nsid> | \-n <nsid>]
                             [\-\-crkey=<crkey> | \-c <crkey>]
                             [\-\-rtype=<rtype> | \-t <rtype>]
                             [\-\-rrela=<rrela> | \-a <rrela>]
                             [\-\-iekey | \-i]
.fi
.SH "DESCRIPTION"
.sp
The Reservation Release command is used to release or clear a reservation held on a namespace\&.
.SH "OPTIONS"
.PP
\-n <nsid>, \-\-namespace\-id=<nsid>
.RS 4
Override the nsid field\&. If using the admin character device, this parameter is required\&.
.RE
.PP
\-c <crkey>, \-\-crkey=<crkey>
.RS 4
Current Reservation Key: If the Reservation Register Action is 001b (i\&.e\&., Unregister Reservation Key) or 010b (i\&.e\&., Replace Reservation Key), then this field contains the current reservation key associated with the host\&. For all other Reservation Register Action values, this field is reserved\&. The controller ignores the value of this field when the Ignore Existing Key (IEKEY) bit is set to \(oq1\(cq\&.
.RE
.PP
\-t <rtype>, \-\-rtype=<rtype>
.RS 4
Reservation Type: This field specifies the type of reservation to be created\&.
.TS
allbox tab(:);
lt lt
lt lt
lt lt
lt lt
lt lt
lt lt
lt lt
lt lt
lt lt.
T{
Value
T}:T{
Definition
T}
T{
0h
T}:T{
Reserved
T}
T{
1h
T}:T{
Write Exclusive Reservation
T}
T{
2h
T}:T{
Exclusive Access Reservation
T}
T{
3h
T}:T{
Write Exclusive \- Registrants Only Reservation
T}
T{
4h
T}:T{
Exclusive Access \- Registrants Only Reservation
T}
T{
5h
T}:T{
Write Exclusive \- All Registrants Reservation
T}
T{
6h
T}:T{
Exclusive Access \- All Registrants Reservation
T}
T{
07h\-FFh
T}:T{
Reserved
T}
.TE
.sp 1
.RE
.PP
\-a <rrela>, \-\-rrela=<rrela>
.RS 4
Reservation Release Action: This field specifies the registration action that is performed by the command\&.
.TS
allbox tab(:);
lt lt
lt lt
lt lt
lt lt.
T{
Value
T}:T{
Definition
T}
T{
0
T}:T{
Release
T}
T{
1
T}:T{
Clear
T}
T{
2\-7
T}:T{
Reserved
T}
.TE
.sp 1
.RE
.PP
\-i, \-\-iekey
.RS 4
Ignore Existing Key: If this bit is set to a
\fI1\fR, then the Current Reservation Key (CRKEY) check is disabled and the command shall succeed regardless of the CRKEY field value\&.
.sp
Indicator option, defaults to
\fI0\fR\&.
.RE
.SH "EXAMPLES"
.sp
No examples yet
.SH "NVME"
.sp
Part of the nvme\-user suite
   070701015D6D8B000081A4000003E80000006400000001642C0FB6000055E1000000000000004A00000000000000000000002E00000000nvme-cli/Documentation/nvme-resv-release.html <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-resv-release(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-resv-release(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-resv-release -
   Release an nvme reservation
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme resv-release</em> &lt;device&gt; [--namespace-id=&lt;nsid&gt; | -n &lt;nsid&gt;]
                             [--crkey=&lt;crkey&gt; | -c &lt;crkey&gt;]
                             [--rtype=&lt;rtype&gt; | -t &lt;rtype&gt;]
                             [--rrela=&lt;rrela&gt; | -a &lt;rrela&gt;]
                             [--iekey | -i]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>The Reservation Release command is used to release or clear a reservation
held on a namespace.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-n &lt;nsid&gt;
</dt>
<dt class="hdlist1">
--namespace-id=&lt;nsid&gt;
</dt>
<dd>
<p>
        Override the nsid field. If using the admin character device,
        this parameter is required.
</p>
</dd>
<dt class="hdlist1">
-c &lt;crkey&gt;
</dt>
<dt class="hdlist1">
--crkey=&lt;crkey&gt;
</dt>
<dd>
<p>
        Current Reservation Key: If the Reservation Register Action is
        001b (i.e., Unregister Reservation Key) or 010b (i.e., Replace
        Reservation Key), then this field contains the current reservation
        key associated with the host. For all other Reservation Register
        Action values, this field is reserved. The controller ignores
        the value of this field when the Ignore Existing Key (IEKEY)
        bit is set to â€˜1â€™.
</p>
</dd>
<dt class="hdlist1">
-t &lt;rtype&gt;
</dt>
<dt class="hdlist1">
--rtype=&lt;rtype&gt;
</dt>
<dd>
<p>
        Reservation Type: This field specifies the type of reservation
        to be created.
</p>
<div class="tableblock">
<table rules="all"
width="100%"
frame="border"
cellspacing="0" cellpadding="4">
<col width="50%" />
<col width="50%" />
<tbody>
<tr>
<td align="left" valign="top"><p class="table">Value</p></td>
<td align="left" valign="top"><p class="table">Definition</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">0h</p></td>
<td align="left" valign="top"><p class="table">Reserved</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">1h</p></td>
<td align="left" valign="top"><p class="table">Write Exclusive Reservation</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">2h</p></td>
<td align="left" valign="top"><p class="table">Exclusive Access Reservation</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">3h</p></td>
<td align="left" valign="top"><p class="table">Write Exclusive - Registrants Only Reservation</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">4h</p></td>
<td align="left" valign="top"><p class="table">Exclusive Access - Registrants Only Reservation</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">5h</p></td>
<td align="left" valign="top"><p class="table">Write Exclusive - All Registrants Reservation</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">6h</p></td>
<td align="left" valign="top"><p class="table">Exclusive Access - All Registrants Reservation</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">07h-FFh</p></td>
<td align="left" valign="top"><p class="table">Reserved</p></td>
</tr>
</tbody>
</table>
</div>
</dd>
<dt class="hdlist1">
-a &lt;rrela&gt;
</dt>
<dt class="hdlist1">
--rrela=&lt;rrela&gt;
</dt>
<dd>
<p>
        Reservation Release Action: This field specifies the registration
        action that is performed by the command.
</p>
<div class="tableblock">
<table rules="all"
width="100%"
frame="border"
cellspacing="0" cellpadding="4">
<col width="50%" />
<col width="50%" />
<tbody>
<tr>
<td align="left" valign="top"><p class="table">Value</p></td>
<td align="left" valign="top"><p class="table">Definition</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">0</p></td>
<td align="left" valign="top"><p class="table">Release</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">1</p></td>
<td align="left" valign="top"><p class="table">Clear</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">2-7</p></td>
<td align="left" valign="top"><p class="table">Reserved</p></td>
</tr>
</tbody>
</table>
</div>
</dd>
<dt class="hdlist1">
-i
</dt>
<dt class="hdlist1">
--iekey
</dt>
<dd>
<p>
        Ignore Existing Key: If this bit is set to a <em>1</em>, then the
        Current Reservation Key (CRKEY) check is disabled and the command
        shall succeed regardless of the CRKEY field value.
</p>
<div class="paragraph"><p>Indicator option, defaults to <em>0</em>.</p></div>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="paragraph"><p>No examples yet</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
   070701015D6D8C000081A4000003E80000006400000001642C0FB600000BAF000000000000004A00000000000000000000002A00000000nvme-cli/Documentation/nvme-resv-report.1 '\" t
.\"     Title: nvme-resv-report
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-RESV\-REPORT" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-resv-report \- Send NVMe Reservation Report, parse the result
.SH "SYNOPSIS"
.sp
.nf
\fInvme resv\-report\fR <device> [\-\-namespace\-id=<nsid> | \-n <nsid>]
                        [\-\-numd=<num\-dwords> | \-d <num\-dwords>]
                        [\-\-eds | \-e]
                        [\-\-raw\-binary | \-b]
                        [\-\-output\-format=<fmt> | \-o <fmt>]
.fi
.SH "DESCRIPTION"
.sp
The Reservation Report command returns a Reservation Status data structure to host memory that describes the registration and reservation status of a namespace\&.
.sp
The size of the Reservation Status data structure is a function of the number of controllers in the NVM Subsystem that are associated with hosts that are registrants of the namespace (i\&.e\&., there is a Registered Controller data structure for each such controller)\&.
.SH "OPTIONS"
.PP
\-n <nsid>, \-\-namespace\-id=<nsid>
.RS 4
Retrieve the reservation report structure for the given nsid\&. This is required for the character devices, or overrides the block nsid if given\&.
.RE
.PP
\-d <num\-dwords>, \-\-numd=<num\-dwords>
.RS 4
Specify the number of Dwords of the Reservation Status structure to transfer\&. Defaults to 4k\&.
.RE
.PP
\-e, \-\-eds
.RS 4
Request extended Data Structure: If this bit is set to a
\fI1\fR, then the controller returns the Extended Data Structure\&.
.RE
.PP
\-b, \-\-raw\-binary
.RS 4
Print the raw buffer to stdout\&. Structure is not parsed by program\&.
.RE
.PP
\-o <format>, \-\-output\-format=<format>
.RS 4
Set the reporting format to
\fInormal\fR,
\fIjson\fR, or
\fIbinary\fR\&. Only one output format can be used at a time\&.
.RE
.SH "EXAMPLES"
.sp
No examples yet\&.
.SH "NVME"
.sp
Part of the nvme\-user suite
 070701015D6D8D000081A4000003E80000006400000001642C0FB600004C4D000000000000004A00000000000000000000002D00000000nvme-cli/Documentation/nvme-resv-report.html  <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-resv-report(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-resv-report(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-resv-report -
   Send NVMe Reservation Report, parse the result
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme resv-report</em> &lt;device&gt; [--namespace-id=&lt;nsid&gt; | -n &lt;nsid&gt;]
                        [--numd=&lt;num-dwords&gt; | -d &lt;num-dwords&gt;]
                        [--eds | -e]
                        [--raw-binary | -b]
                        [--output-format=&lt;fmt&gt; | -o &lt;fmt&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>The Reservation Report command returns a Reservation Status data structure
to host memory that describes the registration and reservation status
of a namespace.</p></div>
<div class="paragraph"><p>The size of the Reservation Status data structure is a function of the
number of controllers in the NVM Subsystem that are associated with
hosts that are registrants of the namespace (i.e., there is a Registered
Controller data structure for each such controller).</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-n &lt;nsid&gt;
</dt>
<dt class="hdlist1">
--namespace-id=&lt;nsid&gt;
</dt>
<dd>
<p>
        Retrieve the reservation report structure for the given nsid. This
        is required for the character devices, or overrides the block nsid
        if given.
</p>
</dd>
<dt class="hdlist1">
-d &lt;num-dwords&gt;
</dt>
<dt class="hdlist1">
--numd=&lt;num-dwords&gt;
</dt>
<dd>
<p>
        Specify the number of Dwords of the Reservation Status structure
        to transfer. Defaults to 4k.
</p>
</dd>
<dt class="hdlist1">
-e
</dt>
<dt class="hdlist1">
--eds
</dt>
<dd>
<p>
        Request extended Data Structure: If this bit is set to a <em>1</em>, then the
        controller returns the Extended Data Structure.
</p>
</dd>
<dt class="hdlist1">
-b
</dt>
<dt class="hdlist1">
--raw-binary
</dt>
<dd>
<p>
        Print the raw buffer to stdout. Structure is not parsed by
        program.
</p>
</dd>
<dt class="hdlist1">
-o &lt;format&gt;
</dt>
<dt class="hdlist1">
--output-format=&lt;format&gt;
</dt>
<dd>
<p>
              Set the reporting format to <em>normal</em>, <em>json</em>, or
              <em>binary</em>. Only one output format can be used at a time.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="paragraph"><p>No examples yet.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
   070701015D6D8E000081A4000003E80000006400000001642C0FB600001EF6000000000000004A00000000000000000000002300000000nvme-cli/Documentation/nvme-rpmb.1    '\" t
.\"     Title: nvme-rpmb
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-RPMB" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-rpmb \- Send RPMB commands to an NVMe device
.SH "SYNOPSIS"
.sp
.nf
\fInvme rpmb\fR <device> [\-\-cmd=<command> | \-c <command>]
                    [\-\-msgfile=<data\-file> | \-f <data\-file>]
                    [\-\-keyfile=<key\-file> | \-g <key\-file>]
                    [\-\-key=<key> | \-k <key>]
                    [\-\-msg=<data> | \-d <data>]
                    [\-\-address=<offset> | \-o <offset>]
                    [\-\-blocks=<512 byte sectors> | \-b <sectors> ]
                    [\-\-target=<target\-id> | \-t <id> ]
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, send an nvme rpmb command and provide the results\&.
.sp
The <device> parameter is mandatory and NVMe character device (ex: /dev/nvme0) must be specified\&. If the given device supports RPMB targets, command given with \-\-cmd or \-c option shall be sent to the controller\&. If given NVMe device doesn\(cqt support RPMB targets, a message indicating the same shall be printed along with controller register values related RPMB\&.
.SH "OPTIONS"
.PP
\-c <command>, \-\-cmd=<command>
.RS 4
RPMB command to be sent to the device\&. It can be one of the following
.sp
.if n \{\
.RS 4
.\}
.nf
info          \- print information regarding supported RPMB targets and
                access and total sizes\&. No further arguments are required
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
program\-key   \- program \*(Aqkey\*(Aq specified with \-k option or key read from
                file specified with \-\-keyfile option to the specified
                RPMB target given with \-\-target or \-t options\&. As per
                spec, this is one time action which can\*(Aqt be undone\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
read\-counter  \- Read \*(Aqwrite counter\*(Aq of specified RPMB target\&. The
                counter value read is printed onto STDOUT
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
read\-config   \- Read 512 bytes of device configuration block data of
                specified RPMB target of the NVMe device\&. The data read
                is written to input file specified with \-\-msgfile or \-f
                option\&.
write\-config  \- Write 512 byes of device configuration block data
                from file specified by \-\-msgfile or \-f options to the
                RPMB target specified with \-\-target or \-t options\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
read\-data     \- Supports authenticated data reading from specified
                RPMB target (\-\-target or \-t option) at given offset
                specified with \-\-address or \-o option, using key
                specified using \-\-keyfile or \-k options\&. \-\-blocks or
                \-o option should be given to read the amount of data
                to be read in 512 byte blocks\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
write\-data    \- Supports authenticated data writing to specified RPMB
                target (\-\-target or \-t option) at given offset
                specified with \-\-address or \-o option, using key
                specified using \-\-keyfile or \-k options\&. \-\-blocks or
                \-o option should be given to indicate amount of data
                to be written in 512 byte blocks\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
For data transfer (read/write) commands, if the specified size is not
within the total size supported by a target, the request is failed
nvme\-rpmb without sending it to device\&. RPMB target 0 is used as the
default target if \-\-target or \-t is not specified\&. 0x0 is used as the
default address if no \-address or \-o option is specified,
.fi
.if n \{\
.RE
.\}
.RE
.PP
\-t <target>, \-\-target=<target>
.RS 4
RPMB target id\&. This should be one of the supported RPMB targets as reported by
\fIinfo\fR
command\&. If nothing is given, default of 0 is used as RPMB target\&.
.RE
.PP
\-k <key>, \-\-key=<key>, \-g <key\-file>, \-\-keyfile=<key\-file>
.RS 4
Authentication key to be used for read/write commands\&. This should have been already programmed by
\fIprogram\-key\fR
command for given target\&. Key can be specified on command line using \-\-key or \-k options\&. Key can also be specified using file argument specified with \-\-keyfile or \-g options\&.
.RE
.PP
\-f <data\-file>, \-\-msgfile=<data\-file>
.RS 4
Name of the file to be used for data transfer commands (read or write)\&. For read command, if an existing file is specified, it will be appended\&.
.RE
.PP
\-d <data>, \-\-msg=<data>
.RS 4
These options provide the data on the command line itself\&.
.RE
.PP
\-o <offset>, \-\-address=<offset>
.RS 4
The address (in 512 byte sector offset from 0) to be used for data transfer commands (read or write) for a specified RPMB target\&.
.RE
.PP
\-b, \-\-blocks=<sectors>
.RS 4
The size in 512 byte sectors to be used for data transfer commands (read or write) for a specified RPMB target\&.
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Print RPMB support information of an NVMe device
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme rpmb /dev/nvme0 \-\-cmd=info
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Program
\fISecretKey\fR
as authentication key for target 1
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme rpmb /dev/nvme0 \-\-cmd=program\-key \-key=\*(AqSecretKey\*(Aq \-\-target=1
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Read current write counter of RPMB target 0
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme rpmb /dev/nvme0 \-\-cmd=read\-counter \-\-target=0
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Read configuration data block of target 2 into config\&.bin file
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme rpmb /dev/nvme0 \-\-cmd=read\-config \-\-target=2 \-f config\&.bin
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Write 200 blocks of (512 bytes) from input\&.bin onto target 0
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme rpmb /dev/nvme0 \-c write\-data \-t 0 \-f input\&.bin \-b 200 \-k \*(AqSecretKey\*(Aq
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Read 200 blocks of (512 bytes) from target 2, at offset 0x100 and save the
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
data onto output\&.bin
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme rpmb /dev/nvme0 \-c read\-data \-t 2 \-f out\&.bin \-b 200 \-o 0x100
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite
  070701015D6D8F000081A4000003E80000006400000001642C0FB6000060CF000000000000004A00000000000000000000002600000000nvme-cli/Documentation/nvme-rpmb.html <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-rpmb(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-rpmb(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-rpmb -
   Send RPMB commands to an NVMe device
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme rpmb</em> &lt;device&gt; [--cmd=&lt;command&gt; | -c &lt;command&gt;]
                    [--msgfile=&lt;data-file&gt; | -f &lt;data-file&gt;]
                    [--keyfile=&lt;key-file&gt; | -g &lt;key-file&gt;]
                    [--key=&lt;key&gt; | -k &lt;key&gt;]
                    [--msg=&lt;data&gt; | -d &lt;data&gt;]
                    [--address=&lt;offset&gt; | -o &lt;offset&gt;]
                    [--blocks=&lt;512 byte sectors&gt; | -b &lt;sectors&gt; ]
                    [--target=&lt;target-id&gt; | -t &lt;id&gt; ]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, send an nvme rpmb command and provide the results.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and NVMe character device (ex: /dev/nvme0)
must be specified. If the given device supports RPMB targets, command given
with --cmd or -c option shall be sent to the controller. If given NVMe device
doesn&#8217;t support RPMB targets, a message indicating the same shall be printed
along with controller register values related RPMB.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-c &lt;command&gt;
</dt>
<dt class="hdlist1">
--cmd=&lt;command&gt;
</dt>
<dd>
<p>
        RPMB command to be sent to the device. It can be one of the following
</p>
<div class="literalblock">
<div class="content">
<pre><code>info          - print information regarding supported RPMB targets and
                access and total sizes. No further arguments are required</code></pre>
</div></div>
<div class="literalblock">
<div class="content">
<pre><code>program-key   - program 'key' specified with -k option or key read from
                file specified with --keyfile option to the specified
                RPMB target given with --target or -t options. As per
                spec, this is one time action which can't be undone.</code></pre>
</div></div>
<div class="literalblock">
<div class="content">
<pre><code>read-counter  - Read 'write counter' of specified RPMB target. The
                counter value read is printed onto STDOUT</code></pre>
</div></div>
<div class="literalblock">
<div class="content">
<pre><code>read-config   - Read 512 bytes of device configuration block data of
                specified RPMB target of the NVMe device. The data read
                is written to input file specified with --msgfile or -f
                option.
write-config  - Write 512 byes of device configuration block data
                from file specified by --msgfile or -f options to the
                RPMB target specified with --target or -t options.</code></pre>
</div></div>
<div class="literalblock">
<div class="content">
<pre><code>read-data     - Supports authenticated data reading from specified
                RPMB target (--target or -t option) at given offset
                specified with --address or -o option, using key
                specified using --keyfile or -k options. --blocks or
                -o option should be given to read the amount of data
                to be read in 512 byte blocks.</code></pre>
</div></div>
<div class="literalblock">
<div class="content">
<pre><code>write-data    - Supports authenticated data writing to specified RPMB
                target (--target or -t option) at given offset
                specified with --address or -o option, using key
                specified using --keyfile or -k options. --blocks or
                -o option should be given to indicate amount of data
                to be written in 512 byte blocks.</code></pre>
</div></div>
<div class="literalblock">
<div class="content">
<pre><code>For data transfer (read/write) commands, if the specified size is not
within the total size supported by a target, the request is failed
nvme-rpmb without sending it to device. RPMB target 0 is used as the
default target if --target or -t is not specified. 0x0 is used as the
default address if no -address or -o option is specified,</code></pre>
</div></div>
</dd>
<dt class="hdlist1">
-t &lt;target&gt;
</dt>
<dt class="hdlist1">
--target=&lt;target&gt;
</dt>
<dd>
<p>
        RPMB target id. This should be one of the supported RPMB targets as
        reported by <em>info</em> command. If nothing is given, default of 0 is used
        as RPMB target.
</p>
</dd>
<dt class="hdlist1">
-k &lt;key&gt;
</dt>
<dt class="hdlist1">
--key=&lt;key&gt;
</dt>
<dt class="hdlist1">
-g &lt;key-file&gt;
</dt>
<dt class="hdlist1">
--keyfile=&lt;key-file&gt;
</dt>
<dd>
<p>
        Authentication key to be used for read/write commands. This should have
        been already programmed by <em>program-key</em> command for given target. Key
        can be specified on command line using --key or -k options. Key can
        also be specified using file argument specified with --keyfile or -g
        options.
</p>
</dd>
<dt class="hdlist1">
-f &lt;data-file&gt;
</dt>
<dt class="hdlist1">
--msgfile=&lt;data-file&gt;
</dt>
<dd>
<p>
        Name of the file to be used for data transfer commands (read or write).
        For read command, if an existing file is specified, it will be appended.
</p>
</dd>
<dt class="hdlist1">
-d &lt;data&gt;
</dt>
<dt class="hdlist1">
--msg=&lt;data&gt;
</dt>
<dd>
<p>
        These options provide the data on the command line itself.
</p>
</dd>
<dt class="hdlist1">
-o &lt;offset&gt;
</dt>
<dt class="hdlist1">
--address=&lt;offset&gt;
</dt>
<dd>
<p>
        The address (in 512 byte sector offset from 0) to be used for data
        transfer commands (read or write) for a specified RPMB target.
</p>
</dd>
<dt class="hdlist1">
-b
</dt>
<dt class="hdlist1">
--blocks=&lt;sectors&gt;
</dt>
<dd>
<p>
        The size in 512 byte sectors to be used for data transfer commands
        (read or write) for a specified RPMB target.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Print RPMB support information of an NVMe device
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme rpmb /dev/nvme0 --cmd=info</code></pre>
</div></div>
</li>
<li>
<p>
Program <em>SecretKey</em> as authentication key for target 1
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme rpmb /dev/nvme0 --cmd=program-key -key='SecretKey' --target=1</code></pre>
</div></div>
</li>
<li>
<p>
Read current write counter of RPMB target 0
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme rpmb /dev/nvme0 --cmd=read-counter --target=0</code></pre>
</div></div>
</li>
<li>
<p>
Read configuration data block of target 2 into config.bin file
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme rpmb /dev/nvme0 --cmd=read-config --target=2 -f config.bin</code></pre>
</div></div>
</li>
<li>
<p>
Write 200 blocks of (512 bytes) from input.bin onto target 0
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme rpmb /dev/nvme0 -c write-data -t 0 -f input.bin -b 200 -k 'SecretKey'</code></pre>
</div></div>
</li>
<li>
<p>
Read 200 blocks of (512 bytes) from target 2, at offset 0x100 and save the
</p>
</li>
<li>
<p>
data onto output.bin
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme rpmb /dev/nvme0 -c read-data -t 2 -f out.bin -b 200 -o 0x100</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
 070701015D6D90000081A4000003E80000006400000001642C0FB600000E44000000000000004A00000000000000000000002B00000000nvme-cli/Documentation/nvme-sanitize-log.1    '\" t
.\"     Title: nvme-sanitize-log
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-SANITIZE\-LOG" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-sanitize-log \- Send NVMe sanitize\-log Command, return result
.SH "SYNOPSIS"
.sp
.nf
\fInvme sanitize\-log\fR <device> [\-\-rae | \-r] [\-\-output\-format=<fmt> | \-o <fmt>]
                             [\-\-human\-readable | \-H]
                             [\-\-raw\-binary | \-b]
.fi
.SH "DESCRIPTION"
.sp
Retrieves the NVMe Sanitize log page from an NVMe device and provides the status of sanitize command\&.
.sp
The <device> parameter is mandatory NVMe character device (ex: /dev/nvme0)\&.
.sp
Expected status and description :\-
.TS
allbox tab(:);
ltB ltB.
T{
Status Code
T}:T{
Description
T}
.T&
lt lt
lt lt
lt lt
lt lt
lt lt.
T{
.sp
0x0000
T}:T{
.sp
NVM subsystem has never been sanitized\&.
T}
T{
.sp
0x0001
T}:T{
.sp
The most recent sanitize operation completed successfully\&.
T}
T{
.sp
0x0002
T}:T{
.sp
A sanitize operation is currently in progress\&.
T}
T{
.sp
0x0003
T}:T{
.sp
The most recent sanitize operation failed\&.
T}
T{
.sp
0x0100
T}:T{
.sp
Global Data Erased bit If set to 1 then non\-volatile storage in the NVM subsystem has not been written to: a) since being manufactured and the NVM subsystem has never been sanitized; or b) since the most recent successful sanitize operation\&. If cleared to 0, then non\-volatile storage in the NVM subsystem has been written to: a) since being manufactured and the NVM subsystem has never been sanitized; or b) since the most recent successful sanitize operation of the NVM subsystem\&.
T}
.TE
.sp 1
.sp
Sanitize Progress \- percentage complete
.sp
On success it returns 0, error code otherwise\&.
.SH "OPTIONS"
.PP
\-r, \-\-rae
.RS 4
Retain an Asynchronous Event\&.
.RE
.PP
\-o <format>, \-\-output\-format=<format>
.RS 4
Set the reporting format to
\fInormal\fR,
\fIjson\fR, or
\fIbinary\fR\&. Only one output format can be used at a time\&.
.RE
.PP
\-H, \-\-human\-readable
.RS 4
This option will parse and format many of the bit fields into human\-readable formats\&.
.RE
.PP
\-b, \-\-raw\-binary
.RS 4
Print the raw buffer to stdout\&. Structure is not parsed by program\&. This overrides the vendor specific and human readable options\&.
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Has the program issue Sanitize\-log Command :
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme sanitize\-log /dev/nvme0
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite\&.
070701015D6D91000081A4000003E80000006400000001642C0FB600005199000000000000004A00000000000000000000002E00000000nvme-cli/Documentation/nvme-sanitize-log.html <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-sanitize-log(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-sanitize-log(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-sanitize-log -
   Send NVMe sanitize-log Command, return result
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme sanitize-log</em> &lt;device&gt; [--rae | -r] [--output-format=&lt;fmt&gt; | -o &lt;fmt&gt;]
                             [--human-readable | -H]
                             [--raw-binary | -b]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>Retrieves the NVMe Sanitize log page from an NVMe device and provides the
status of sanitize command.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory NVMe character device (ex: /dev/nvme0).</p></div>
<div class="paragraph"><p>Expected status and description :-</p></div>
<div class="tableblock">
<table rules="all"
width="100%"
frame="border"
cellspacing="0" cellpadding="4">
<col width="50%" />
<col width="50%" />
<thead>
<tr>
<th align="left" valign="top">Status Code </th>
<th align="left" valign="top">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left" valign="top"><p class="table">0x0000</p></td>
<td align="left" valign="top"><p class="table">NVM subsystem has never been sanitized.</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">0x0001</p></td>
<td align="left" valign="top"><p class="table">The most recent sanitize operation completed successfully.</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">0x0002</p></td>
<td align="left" valign="top"><p class="table">A sanitize operation is currently in progress.</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">0x0003</p></td>
<td align="left" valign="top"><p class="table">The most recent sanitize operation failed.</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">0x0100</p></td>
<td align="left" valign="top"><p class="table">Global Data Erased bit
If set to 1 then non-volatile storage in the NVM subsystem has
not been written to:
    a) since being manufactured and the NVM subsystem has never been sanitized; or
    b) since the most recent successful sanitize operation.
If cleared to 0, then non-volatile storage in the NVM subsystem has been written to:
    a) since being manufactured and the NVM subsystem has never been sanitized; or
    b) since the most recent successful sanitize operation of the NVM subsystem.</p></td>
</tr>
</tbody>
</table>
</div>
<div class="paragraph"><p>Sanitize Progress - percentage complete</p></div>
<div class="paragraph"><p>On success it returns 0, error code otherwise.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-r
</dt>
<dt class="hdlist1">
--rae
</dt>
<dd>
<p>
        Retain an Asynchronous Event.
</p>
</dd>
<dt class="hdlist1">
-o &lt;format&gt;
</dt>
<dt class="hdlist1">
--output-format=&lt;format&gt;
</dt>
<dd>
<p>
              Set the reporting format to <em>normal</em>, <em>json</em>, or
              <em>binary</em>. Only one output format can be used at a time.
</p>
</dd>
<dt class="hdlist1">
-H
</dt>
<dt class="hdlist1">
--human-readable
</dt>
<dd>
<p>
        This option will parse and format many of the bit fields
        into human-readable formats.
</p>
</dd>
<dt class="hdlist1">
-b
</dt>
<dt class="hdlist1">
--raw-binary
</dt>
<dd>
<p>
        Print the raw buffer to stdout. Structure is not parsed by
        program. This overrides the vendor specific and human readable options.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Has the program issue Sanitize-log Command :
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme sanitize-log /dev/nvme0</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite.</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
   070701015D6D92000081A4000003E80000006400000001642C0FB600001266000000000000004A00000000000000000000002700000000nvme-cli/Documentation/nvme-sanitize.1    '\" t
.\"     Title: nvme-sanitize
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-SANITIZE" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-sanitize \- Send NVMe Sanitize Command, return result
.SH "SYNOPSIS"
.sp
.nf
\fInvme sanitize\fR <device> [\-\-no\-dealloc | \-d]
              [\-\-oipbp | \-i]
              [\-\-owpass=<overwrite\-pass\-count> | \-n <overwrite\-pass\-count>]
              [\-\-ause | \-u]
              [\-\-sanact=<action> | \-a <action>]
              [\-\-ovrpat=<overwrite\-pattern> | \-p <overwrite\-pattern>]
              [\-\-force]
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, sends a Sanitize command and provides the result\&.
.sp
The <device> parameter is mandatory NVMe character device (ex: /dev/nvme0)\&.
.sp
On success it returns 0, error code otherwise\&.
.SH "OPTIONS"
.PP
\-d, \-\-no\-dealloc
.RS 4
No Deallocate After Sanitize: If set, then the controller shall not deallocate any logical blocks as a result of successfully completing the sanitize operation\&. If cleared, then the controller should deallocate logical blocks as a result of successfully completing the sanitize operation\&. This bit shall be ignored if the Sanitize Action field is set to 001b (i\&.e\&., Exit Failure Mode)\&.
.RE
.PP
\-i, \-\-oipbp
.RS 4
Overwrite Invert Pattern Between Passes: If set, then the Overwrite Pattern shall be inverted between passes\&. If cleared, then the overwrite pattern shall not be inverted between passes\&. This bit shall be ignored unless the Sanitize Action field is set to 011b (i\&.e\&., Overwrite)\&.
.RE
.PP
\-n <overwrite\-pass\-count>, \-\-owpass=<overwrite\-pass\-count>
.RS 4
Overwrite Pass Count: This field specifies the number of overwrite passes (i\&.e\&., how many times the media is to be overwritten) using the data from the Overwrite Pattern field of this command\&. A value of 0 specifies 16 overwrite passes\&. This field shall be ignored unless the Sanitize Action field is set to 011b (i\&.e\&., Overwrite)\&.
.RE
.PP
\-u, \-\-ause
.RS 4
Allow Unrestricted Sanitize Exit: If set, then the sanitize operation is performed in unrestricted completion mode\&. If cleared then the sanitize operation is performed in restricted completion mode\&. This bit shall be ignored if the Sanitize Action field is set to 001b (i\&.e\&., Exit Failure Mode)\&.
.RE
.PP
\-a <action>, \-\-sanact=<action>
.RS 4
Sanitize Action:
.TS
allbox tab(:);
lt lt
lt lt
lt lt
lt lt
lt lt
lt lt.
T{
Value
T}:T{
Definition
T}
T{
0x00
T}:T{
Reserved
T}
T{
0x01 |
\fIexit\-failure\fR
T}:T{
Exit Failure Mode
T}
T{
0x02 |
\fIstart\-block\-erase\fR
T}:T{
Start a Block Erase sanitize operation
T}
T{
0x03 |
\fIstart\-overwrite\fR
T}:T{
Start an Overwrite sanitize operation
T}
T{
0x04 |
\fIstart\-crypto\-erase\fR
T}:T{
Start a Crypto Erase sanitize operation
T}
.TE
.sp 1
.RE
.PP
\-p <overwrite\-pattern>, \-\-ovrpat=<overwrite\-pattern>
.RS 4
Overwrite Pattern: This field is ignored unless the Sanitize Action field in Command Dword 10 is set to 011b (i\&.e\&., Overwrite)\&. This field specifies a 32\-bit pattern that is used for the Overwrite sanitize operation\&.
.RE
.PP
\-\-force
.RS 4
Ignore namespace is currently busy and performed the operation even though\&.
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Has the program issue Sanitize Command :
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme sanitize /dev/nvme0 \-a 0x02
# nvme sanitize /dev/nvme0 \-\-sanact=0x01
# nvme sanitize /dev/nvme0 \-\-sanact=start\-overwrite
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite\&.
  070701015D6D93000081A4000003E80000006400000001642C0FB6000056AC000000000000004A00000000000000000000002A00000000nvme-cli/Documentation/nvme-sanitize.html <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-sanitize(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-sanitize(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-sanitize -
   Send NVMe Sanitize Command, return result
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme sanitize</em> &lt;device&gt; [--no-dealloc | -d]
              [--oipbp | -i]
              [--owpass=&lt;overwrite-pass-count&gt; | -n &lt;overwrite-pass-count&gt;]
              [--ause | -u]
              [--sanact=&lt;action&gt; | -a &lt;action&gt;]
              [--ovrpat=&lt;overwrite-pattern&gt; | -p &lt;overwrite-pattern&gt;]
              [--force]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, sends a Sanitize command and
provides the result.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory NVMe character device (ex: /dev/nvme0).</p></div>
<div class="paragraph"><p>On success it returns 0, error code otherwise.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-d
</dt>
<dt class="hdlist1">
--no-dealloc
</dt>
<dd>
<p>
    No Deallocate After Sanitize:
    If set, then the controller shall not deallocate any logical
    blocks as a result of successfully completing the sanitize
    operation. If cleared, then the controller should deallocate
    logical blocks as a result of successfully completing the
    sanitize operation.  This bit shall be ignored if the Sanitize
    Action field is set to 001b (i.e., Exit Failure Mode).
</p>
</dd>
<dt class="hdlist1">
-i
</dt>
<dt class="hdlist1">
--oipbp
</dt>
<dd>
<p>
    Overwrite Invert Pattern Between Passes:
    If set, then the Overwrite Pattern shall be inverted between
    passes. If cleared, then the overwrite pattern shall not be
    inverted between passes. This bit shall be ignored unless the
    Sanitize Action field is set to 011b (i.e., Overwrite).
</p>
</dd>
<dt class="hdlist1">
-n &lt;overwrite-pass-count&gt;
</dt>
<dt class="hdlist1">
--owpass=&lt;overwrite-pass-count&gt;
</dt>
<dd>
<p>
    Overwrite Pass Count:
    This field specifies the number of overwrite passes (i.e.,
    how many times the media is to be overwritten) using the data
    from the Overwrite Pattern field of this command. A value of 0
    specifies 16 overwrite passes. This field shall be ignored
    unless the Sanitize Action field is set to 011b (i.e., Overwrite).
</p>
</dd>
<dt class="hdlist1">
-u
</dt>
<dt class="hdlist1">
--ause
</dt>
<dd>
<p>
    Allow Unrestricted Sanitize Exit:
    If set, then the sanitize operation is performed in unrestricted
    completion mode. If cleared then the sanitize operation is
    performed in restricted completion mode. This bit shall be ignored
    if the Sanitize Action field is set to 001b (i.e., Exit Failure Mode).
</p>
</dd>
<dt class="hdlist1">
-a &lt;action&gt;
</dt>
<dt class="hdlist1">
--sanact=&lt;action&gt;
</dt>
<dd>
<p>
    Sanitize Action:
</p>
<div class="tableblock">
<table rules="all"
width="100%"
frame="border"
cellspacing="0" cellpadding="4">
<col width="50%" />
<col width="50%" />
<tbody>
<tr>
<td align="left" valign="top"><p class="table">Value</p></td>
<td align="left" valign="top"><p class="table">Definition</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">0x00</p></td>
<td align="left" valign="top"><p class="table">Reserved</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">0x01 | <em>exit-failure</em></p></td>
<td align="left" valign="top"><p class="table">Exit Failure Mode</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">0x02 | <em>start-block-erase</em></p></td>
<td align="left" valign="top"><p class="table">Start a Block Erase sanitize operation</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">0x03 | <em>start-overwrite</em></p></td>
<td align="left" valign="top"><p class="table">Start an Overwrite sanitize operation</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">0x04 | <em>start-crypto-erase</em></p></td>
<td align="left" valign="top"><p class="table">Start a Crypto Erase sanitize operation</p></td>
</tr>
</tbody>
</table>
</div>
</dd>
<dt class="hdlist1">
-p &lt;overwrite-pattern&gt;
</dt>
<dt class="hdlist1">
--ovrpat=&lt;overwrite-pattern&gt;
</dt>
<dd>
<p>
    Overwrite Pattern:
    This field is ignored unless the Sanitize Action field in
    Command Dword 10 is set to 011b (i.e., Overwrite). This field
    specifies a 32-bit pattern that is used for the Overwrite
    sanitize operation.
</p>
</dd>
<dt class="hdlist1">
--force
</dt>
<dd>
<p>
    Ignore namespace is currently busy and performed the operation
    even though.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Has the program issue Sanitize Command :
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme sanitize /dev/nvme0 -a 0x02
# nvme sanitize /dev/nvme0 --sanact=0x01
# nvme sanitize /dev/nvme0 --sanact=start-overwrite</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite.</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
070701015D6D94000081A4000003E80000006400000001642C0FB600000824000000000000004A00000000000000000000004000000000nvme-cli/Documentation/nvme-seagate-clear-fw-activate-history.1   '\" t
.\"     Title: nvme-seagate-clear-fw-activate-history
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-SEAGATE\-CLEAR" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-seagate-clear-fw-activate-history \- Clear the firmware activation history for a given Seagate device\&.
.SH "SYNOPSIS"
.sp
.nf
\fInvme seagate clear\-fw\-activate\-history <device> [OPTIONS]\fR
.fi
.SH "DESCRIPTION"
.sp
This command will only work on Seagate devices supporting this feature\&. Not all commands work across all product families\&.
.sp
The \fI<device>\fR may be either an NVMe character device (ex: /dev/nvme0) or an nvme block device (ex: /dev/nvme0n1)\&.
.SH "OPTIONS"
.sp
\-s \-\-save:: specifies that the controller shall save the attribute\&.
.SH "EXAMPLES"
.sp
Clear the FW Activation History for the given Seagate device\&.
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme seagate clear\-fw\-activate\-history /dev/nvme0
.fi
.if n \{\
.RE
.\}
.SH "NVME"
.sp
Part of the nvme\-user suite
070701015D6D95000081A4000003E80000006400000001642C0FB60000471C000000000000004A00000000000000000000004300000000nvme-cli/Documentation/nvme-seagate-clear-fw-activate-history.html    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-seagate-clear-fw-activate-history (1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-seagate-clear-fw-activate-history (1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-seagate-clear-fw-activate-history -
   Clear the firmware activation history for a given Seagate device.
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme seagate clear-fw-activate-history &lt;device&gt; [OPTIONS]</em></pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>This command will only work on Seagate devices supporting this feature.  Not
all commands work across all product families.</p></div>
<div class="paragraph"><p>The <em>&lt;device&gt;</em> may be either an NVMe character device (ex: /dev/nvme0) or an
nvme block device (ex: /dev/nvme0n1).</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="paragraph"><p>-s
--save::
        specifies that the controller shall save the attribute.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="paragraph"><p>Clear the FW Activation History for the given Seagate device.</p></div>
<div class="listingblock">
<div class="content">
<pre><code># nvme seagate clear-fw-activate-history /dev/nvme0</code></pre>
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
070701015D6D96000081A4000003E80000006400000001642C0FB60000082D000000000000004A00000000000000000000004400000000nvme-cli/Documentation/nvme-seagate-clear-pcie-correctable-errors.1   '\" t
.\"     Title: nvme-seagate-clear-pcie-correctable-errors
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-SEAGATE\-CLEAR" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-seagate-clear-pcie-correctable-errors \- Clear Seagate PCIe error statistics
.SH "SYNOPSIS"
.sp
.nf
\fInvme seagate clear\-pcie\-correctable\-errors [<device>]  [OPTIONS]\fR
.fi
.SH "DESCRIPTION"
.sp
This command will only work on Seagate devices supporting this feature\&. Not all commands work across all product families\&.
.sp
The \fI<device>\fR parameter is mandatory and may be either an NVMe character device (ex: /dev/nvme0), or an nvme block device (ex: /dev/nvme0n1)\&.
.SH "OPTIONS"
.PP
\-s, \-\-save
.RS 4
Specifies that the controller shall save the attribute
.RE
.SH "EXAMPLES"
.sp
Clears the PCIe error statistics from the device\&.
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme seagate clear\-pcie\-correctable\-errors /dev/nvme0
.fi
.if n \{\
.RE
.\}
.SH "NVME"
.sp
Part of the nvme\-user suite
   070701015D6D97000081A4000003E80000006400000001642C0FB600004774000000000000004A00000000000000000000004700000000nvme-cli/Documentation/nvme-seagate-clear-pcie-correctable-errors.html    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-seagate-clear-pcie-correctable-errors(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-seagate-clear-pcie-correctable-errors(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-seagate-clear-pcie-correctable-errors -
   Clear Seagate PCIe error statistics
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme seagate clear-pcie-correctable-errors [&lt;device&gt;]  [OPTIONS]</em></pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>This command will only work on Seagate devices supporting this feature.  Not
all commands work across all product families.</p></div>
<div class="paragraph"><p>The <em>&lt;device&gt;</em> parameter is mandatory and may be either an NVMe character device (ex: /dev/nvme0), or an
nvme block device (ex: /dev/nvme0n1).</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-s
</dt>
<dt class="hdlist1">
--save
</dt>
<dd>
<p>
        Specifies that the controller shall save the attribute
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="paragraph"><p>Clears the PCIe error statistics from the device.</p></div>
<div class="listingblock">
<div class="content">
<pre><code># nvme seagate clear-pcie-correctable-errors /dev/nvme0</code></pre>
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
070701015D6D98000081A4000003E80000006400000001642C0FB6000006E3000000000000004A00000000000000000000003F00000000nvme-cli/Documentation/nvme-seagate-cloud-SSD-plugin-version.1    '\" t
.\"     Title: nvme-seagate-cloud-SSD-plugin-version
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-SEAGATE\-CLOUD" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-seagate-cloud-SSD-plugin-version \- Shows OCP Seagate plugin\*(Aqs version information
.SH "SYNOPSIS"
.sp
.nf
\fInvme seagate cloud\-SSD\-plugin\-version\fR
.fi
.SH "DESCRIPTION"
.sp
Shows OCP Seagate plugin\(cqs version information
.SH "OPTIONS"
.sp
No Options
.SH "EXAMPLES"
.sp
Get the OCP plugin version of the specific nvme device\&.
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme seagate cloud\-SSD\-plugin\-version
.fi
.if n \{\
.RE
.\}
.SH "NVME"
.sp
Part of the nvme\-user suite
 070701015D6D99000081A4000003E80000006400000001642C0FB6000045A9000000000000004A00000000000000000000004200000000nvme-cli/Documentation/nvme-seagate-cloud-SSD-plugin-version.html <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-seagate-cloud-SSD-plugin-version (1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-seagate-cloud-SSD-plugin-version (1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-seagate-cloud-SSD-plugin-version -
   Shows OCP Seagate plugin's version information
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme seagate cloud-SSD-plugin-version</em></pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>Shows OCP Seagate plugin&#8217;s version information</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="paragraph"><p>No Options</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="paragraph"><p>Get the OCP plugin version of the specific nvme device.</p></div>
<div class="listingblock">
<div class="content">
<pre><code># nvme seagate cloud-SSD-plugin-version</code></pre>
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
   070701015D6D9A000081A4000003E80000006400000001642C0FB60000087D000000000000004A00000000000000000000003400000000nvme-cli/Documentation/nvme-seagate-get-ctrl-tele.1   '\" t
.\"     Title: nvme-seagate-get-ctrl-tele
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-SEAGATE\-GET\-" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-seagate-get-ctrl-tele \- Retrieve Seagate Controller\-Initiated Telemetry in either hex\-dump (default) or binary format
.SH "SYNOPSIS"
.sp
.nf
\fInvme seagate get\-ctrl\-tele <device> [OPTIONS]\fR
.fi
.SH "DESCRIPTION"
.sp
This command will only work on Seagate devices supporting this feature\&. Not all commands work across all product families\&.
.sp
The \*(Aq<device>\*(Aqparameter is mandatory and may be either an NVMe character device (ex: /dev/nvme0) or an nvme block device (ex: /dev/nvme0n1)\&.
.SH "OPTIONS"
.PP
\-n <NUM>, \-\-namespace\-id=<NUM>
.RS 4
Desired namespace
.RE
.PP
\-b, \-\-raw\-binary
.RS 4
Output in raw format
.RE
.SH "EXAMPLES"
.sp
Get the controller initiated telemetry log in hexdump or binary format for the specified device\&.
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme seagate get\-ctrl\-tele /dev/nvme0
.fi
.if n \{\
.RE
.\}
.SH "NVME"
.sp
Part of the nvme\-user suite
   070701015D6D9B000081A4000003E80000006400000001642C0FB6000047FE000000000000004A00000000000000000000003700000000nvme-cli/Documentation/nvme-seagate-get-ctrl-tele.html    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-seagate-get-ctrl-tele(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-seagate-get-ctrl-tele(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-seagate-get-ctrl-tele -
   Retrieve Seagate Controller-Initiated Telemetry in either hex-dump (default) or binary format
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme seagate get-ctrl-tele &lt;device&gt; [OPTIONS]</em></pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>This command will only work on Seagate devices supporting this feature.  Not
all commands work across all product families.</p></div>
<div class="paragraph"><p>The '&lt;device&gt;'parameter is mandatory and may be either an NVMe character device (ex: /dev/nvme0) or an
nvme block device (ex: /dev/nvme0n1).</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-n &lt;NUM&gt;
</dt>
<dt class="hdlist1">
--namespace-id=&lt;NUM&gt;
</dt>
<dd>
<p>
        Desired namespace
</p>
</dd>
<dt class="hdlist1">
-b
</dt>
<dt class="hdlist1">
--raw-binary
</dt>
<dd>
<p>
        Output in raw format
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="paragraph"><p>Get the controller initiated telemetry log in hexdump or binary format for the specified device.</p></div>
<div class="listingblock">
<div class="content">
<pre><code># nvme seagate get-ctrl-tele /dev/nvme0</code></pre>
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
  070701015D6D9C000081A4000003E80000006400000001642C0FB600000959000000000000004A00000000000000000000003400000000nvme-cli/Documentation/nvme-seagate-get-host-tele.1   '\" t
.\"     Title: nvme-seagate-get-host-tele
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-SEAGATE\-GET\-" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-seagate-get-host-tele \- Retrieve Seagate Host\-Initiated Telemetry in either hex\-dump (default) or binary format
.SH "SYNOPSIS"
.sp
.nf
\fInvme seagate get\-host\-tele <device> [OPTIONS]\fR
.fi
.SH "DESCRIPTION"
.sp
This will only work on Seagate devices supporting this feature\&. Not all commands work across all product families\&.
.sp
The \fI<device>\fR parameter is mandatory and may be either an NVMe character device (ex: /dev/nvme0) or an nvme block device (ex: /dev/nvme0n1)\&.
.SH "OPTIONS"
.PP
\-n <NUM>, \-\-namespace\-id=<NUM>
.RS 4
desired namespace
.RE
.PP
\-i <NUM>, \-\-log_specific=<NUM>
.RS 4
1 \- controller shall capture Data representing the internal state of the controller at the time the command is processed\&. 0 \- controller shall not update the Telemetry Host Initiated Data\&.
.RE
.PP
\-b, \-\-raw\-binary
.RS 4
output in raw format
.RE
.SH "EXAMPLES"
.sp
Get the host initiated telemetry log in hexdump or binary format for the specified device\&.
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme seagate get\-host\-tele /dev/nvme0
.fi
.if n \{\
.RE
.\}
.SH "NVME"
.sp
Part of the nvme\-user suite
   070701015D6D9D000081A4000003E80000006400000001642C0FB60000493F000000000000004A00000000000000000000003700000000nvme-cli/Documentation/nvme-seagate-get-host-tele.html    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-seagate-get-host-tele(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-seagate-get-host-tele(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-seagate-get-host-tele -
   Retrieve Seagate Host-Initiated Telemetry in either hex-dump (default) or binary format
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme seagate get-host-tele &lt;device&gt; [OPTIONS]</em></pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>This will only work on Seagate devices supporting this feature.  Not all
commands work across all product families.</p></div>
<div class="paragraph"><p>The <em>&lt;device&gt;</em> parameter is mandatory and may be either an NVMe character device (ex: /dev/nvme0) or an
nvme block device (ex: /dev/nvme0n1).</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-n &lt;NUM&gt;
</dt>
<dt class="hdlist1">
--namespace-id=&lt;NUM&gt;
</dt>
<dd>
<p>
        desired namespace
</p>
</dd>
<dt class="hdlist1">
-i &lt;NUM&gt;
</dt>
<dt class="hdlist1">
--log_specific=&lt;NUM&gt;
</dt>
<dd>
<p>
        1 - controller shall capture Data representing the internal state of the controller at the time the command is processed.
        0 - controller shall not update the Telemetry Host Initiated Data.
</p>
</dd>
<dt class="hdlist1">
-b
</dt>
<dt class="hdlist1">
--raw-binary
</dt>
<dd>
<p>
        output in raw format
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="paragraph"><p>Get the host initiated telemetry log in hexdump or binary format for the specified device.</p></div>
<div class="listingblock">
<div class="content">
<pre><code># nvme seagate get-host-tele /dev/nvme0</code></pre>
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
 070701015D6D9E000081A4000003E80000006400000001642C0FB600000AB8000000000000004A00000000000000000000002B00000000nvme-cli/Documentation/nvme-seagate-help.1    '\" t
.\"     Title: nvme-seagate-help
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-SEAGATE\-HELP" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-seagate-help \- Shows the Seagate plugin\*(Aqs help information
.SH "SYNOPSIS"
.sp
.nf
\fInvme seagate help\fR
.fi
.SH "DESCRIPTION"
.sp
Provides the help information for the Seagate plugin\&.
.SH "OPTIONS"
.sp
No Options
.SH "EXAMPLES"
.sp
Get help information for specific seagate sub\-commands\&.
.PP
Seagate vendor specific extensions
.RS 4
The following are all implemented sub\-commands:
.sp
.if n \{\
.RS 4
.\}
.nf
vs\-temperature\-stats            Retrieve Seagate temperature statistics
vs\-log\-page\-sup                 Retrieve Seagate Supported Log\-pages Information
vs\-smart\-add\-log                Retrieve Seagate extended\-SMART Information
vs\-pcie\-stats                   Retrieve Seagate PCIe error statistics
clear\-pcie\-correctable\-errors   Clear Seagate PCIe error statistics
get\-host\-tele                   Retrieve Seagate Host\-Initiated Telemetry
get\-ctrl\-tele                   Retrieve Seagate Controller\-Initiated Telemetry
vs\-internal\-log                 Retrieve Seagate Controller\-Initiated Telemetry in binary format
plugin\-version                  Shows Seagate plugin\*(Aqs version information
version                         Shows the program version
help                            Display this help
.fi
.if n \{\
.RE
.\}
.RE
.sp
See \fInvme seagate help <command>\fR for more information on a specific command
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme seagate help
.fi
.if n \{\
.RE
.\}
.SH "NVME"
.sp
Part of the nvme\-user suite
070701015D6D9F000081A4000003E80000006400000001642C0FB6000049F6000000000000004A00000000000000000000002E00000000nvme-cli/Documentation/nvme-seagate-help.html <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-seagate-help(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-seagate-help(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-seagate-help -
   Shows the Seagate plugin's help information
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme seagate help</em></pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>Provides the help information for the Seagate plugin.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="paragraph"><p>No Options</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="paragraph"><p>Get help information for specific seagate sub-commands.</p></div>
<div class="dlist"><dl>
<dt class="hdlist1">
Seagate vendor specific extensions
</dt>
<dd>
<p>
The following are all implemented sub-commands:
</p>
<div class="literalblock">
<div class="content">
<pre><code>vs-temperature-stats            Retrieve Seagate temperature statistics
vs-log-page-sup                 Retrieve Seagate Supported Log-pages Information
vs-smart-add-log                Retrieve Seagate extended-SMART Information
vs-pcie-stats                   Retrieve Seagate PCIe error statistics
clear-pcie-correctable-errors   Clear Seagate PCIe error statistics
get-host-tele                   Retrieve Seagate Host-Initiated Telemetry
get-ctrl-tele                   Retrieve Seagate Controller-Initiated Telemetry
vs-internal-log                 Retrieve Seagate Controller-Initiated Telemetry in binary format
plugin-version                  Shows Seagate plugin's version information
version                         Shows the program version
help                            Display this help</code></pre>
</div></div>
</dd>
</dl></div>
<div class="paragraph"><p>See <em>nvme seagate help &lt;command&gt;</em> for more information on a specific command</p></div>
<div class="listingblock">
<div class="content">
<pre><code># nvme seagate help</code></pre>
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
  070701015D6DA0000081A4000003E80000006400000001642C0FB6000006B5000000000000004A00000000000000000000003500000000nvme-cli/Documentation/nvme-seagate-plugin-version.1  '\" t
.\"     Title: nvme-seagate-plugin-version
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-SEAGATE\-PLUGI" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-seagate-plugin-version \- Shows Seagate plugin\*(Aqs version information
.SH "SYNOPSIS"
.sp
.nf
\fInvme seagate plugin\-version\fR
.fi
.SH "DESCRIPTION"
.sp
Provides the help information for the Seagate plugin\&.
.SH "OPTIONS"
.sp
No Options
.SH "EXAMPLES"
.sp
Get the plugin version of the specific nvme device\&.
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme seagate plugin\-version
.fi
.if n \{\
.RE
.\}
.SH "NVME"
.sp
Part of the nvme\-user suite
   070701015D6DA1000081A4000003E80000006400000001642C0FB60000456E000000000000004A00000000000000000000003800000000nvme-cli/Documentation/nvme-seagate-plugin-version.html   <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-seagate-plugin-version(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-seagate-plugin-version(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-seagate-plugin-version -
   Shows Seagate plugin's version information
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme seagate plugin-version</em></pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>Provides the help information for the Seagate plugin.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="paragraph"><p>No Options</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="paragraph"><p>Get the plugin version of the specific nvme device.</p></div>
<div class="listingblock">
<div class="content">
<pre><code># nvme seagate plugin-version</code></pre>
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
  070701015D6DA2000081A4000003E80000006400000001642C0FB6000006D3000000000000004A00000000000000000000002E00000000nvme-cli/Documentation/nvme-seagate-version.1 '\" t
.\"     Title: nvme-seagate-version
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-SEAGATE\-VERSI" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-seagate-version \- Shows the Seagate version information for nvme\-cli
.SH "SYNOPSIS"
.sp
.nf
\fInvme seagate version\fR
.fi
.SH "DESCRIPTION"
.sp
Provides the git version information for the Seagate version for nvme\-cli\&. This is for the nvme\-cli tool\&.
.SH "OPTIONS"
.sp
No Options
.SH "EXAMPLES"
.sp
Get the Seagate version information for nvme\-cli\&.
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme seagate version
.fi
.if n \{\
.RE
.\}
.SH "NVME"
.sp
Part of the nvme\-user suite
 070701015D6DA3000081A4000003E80000006400000001642C0FB600004585000000000000004A00000000000000000000003100000000nvme-cli/Documentation/nvme-seagate-version.html  <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-seagate-version(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-seagate-version(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-seagate-version -
   Shows the Seagate version information for nvme-cli
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme seagate version</em></pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>Provides the git version information for the Seagate version for nvme-cli. This is for the nvme-cli tool.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="paragraph"><p>No Options</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="paragraph"><p>Get the Seagate version information for nvme-cli.</p></div>
<div class="listingblock">
<div class="content">
<pre><code># nvme seagate version</code></pre>
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
   070701015D6DA4000081A4000003E80000006400000001642C0FB60000086F000000000000004A00000000000000000000003D00000000nvme-cli/Documentation/nvme-seagate-vs-fw-activate-history.1  '\" t
.\"     Title: nvme-seagate-vs-fw-activate-history
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-SEAGATE\-VS\-F" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-seagate-vs-fw-activate-history \- Retrieve Seagate vendor specific Controller\-Initiated Telemetry in binary
.SH "SYNOPSIS"
.sp
.nf
\fInvme seagate vs\-fw\-activate\-history <device> [OPTIONS]\fR
.fi
.SH "DESCRIPTION"
.sp
This command will only work on Seagate devices supporting this feature\&. Not all commands work across all product families\&.
.sp
The \fI<device>\fR may be either an NVMe character device (ex: /dev/nvme0) or an nvme block device (ex: /dev/nvme0n1)\&.
.SH "OPTIONS"
.PP
\-n <NUM>, \-\-namespace\-id=<NUM>
.RS 4
Desired namespace
.RE
.PP
\-f <FILE>, \-\-dump\-file=<FILE>
.RS 4
Dump file
.RE
.SH "EXAMPLES"
.sp
Get the Seagate vendor specific Controller\-Initiated telemetry log for the specified device\&.
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme seagate vs\-fw\-activate\-history /dev/nvme0
.fi
.if n \{\
.RE
.\}
.SH "NVME"
.sp
Part of the nvme\-user suite
 070701015D6DA5000081A4000003E80000006400000001642C0FB600004810000000000000004A00000000000000000000004000000000nvme-cli/Documentation/nvme-seagate-vs-fw-activate-history.html   <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-seagate-vs-fw-activate-history (1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-seagate-vs-fw-activate-history (1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-seagate-vs-fw-activate-history -
   Retrieve Seagate vendor specific Controller-Initiated Telemetry in binary
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme seagate vs-fw-activate-history &lt;device&gt; [OPTIONS]</em></pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>This command will only work on Seagate devices supporting this feature.  Not
all commands work across all product families.</p></div>
<div class="paragraph"><p>The <em>&lt;device&gt;</em> may be either an NVMe character device (ex: /dev/nvme0) or an
nvme block device (ex: /dev/nvme0n1).</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-n &lt;NUM&gt;
</dt>
<dt class="hdlist1">
--namespace-id=&lt;NUM&gt;
</dt>
<dd>
<p>
        Desired namespace
</p>
</dd>
<dt class="hdlist1">
-f &lt;FILE&gt;
</dt>
<dt class="hdlist1">
--dump-file=&lt;FILE&gt;
</dt>
<dd>
<p>
        Dump file
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="paragraph"><p>Get the Seagate vendor specific Controller-Initiated telemetry log for the specified device.</p></div>
<div class="listingblock">
<div class="content">
<pre><code># nvme seagate vs-fw-activate-history /dev/nvme0</code></pre>
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
070701015D6DA6000081A4000003E80000006400000001642C0FB60000086C000000000000004A00000000000000000000003600000000nvme-cli/Documentation/nvme-seagate-vs-internal-log.1 '\" t
.\"     Title: nvme-seagate-vs-internal-log
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-SEAGATE\-VS\-I" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-seagate-vs-internal-log \- Retrieve Seagate vendor specific Controller\-Initiated Telemetry in binary
.SH "SYNOPSIS"
.sp
.nf
\fInvme seagate vs\-internal\-log <device> [OPTIONS]\fR
.fi
.SH "DESCRIPTION"
.sp
This command will only work on Seagate devices supporting this feature\&. Not all commands work across all product families\&.
.sp
The \fI<device>\fR parameter is mandatory and may be either an NVMe character device (ex: /dev/nvme0) or an nvme block device (ex: /dev/nvme0n1)\&.
.SH "OPTIONS"
.PP
\-n <NUM>, \-\-namespace\-id=<NUM>
.RS 4
Desired namespace
.RE
.PP
\-f <FILE>, \-\-dump\-file=<FILE>
.RS 4
Dump file
.RE
.SH "EXAMPLES"
.sp
Get the Seagate vendor specific Controller\-Initiated telemetry log for the specified device\&.
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme seagate vs\-internal\-log /dev/nvme0
.fi
.if n \{\
.RE
.\}
.SH "NVME"
.sp
Part of the nvme\-user suite
070701015D6DA7000081A4000003E80000006400000001642C0FB600004806000000000000004A00000000000000000000003900000000nvme-cli/Documentation/nvme-seagate-vs-internal-log.html  <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-seagate-vs-internal-log(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-seagate-vs-internal-log(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-seagate-vs-internal-log -
   Retrieve Seagate vendor specific Controller-Initiated Telemetry in binary
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme seagate vs-internal-log &lt;device&gt; [OPTIONS]</em></pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>This command will only work on Seagate devices supporting this feature.  Not
all commands work across all product families.</p></div>
<div class="paragraph"><p>The <em>&lt;device&gt;</em> parameter is mandatory and may be either an NVMe character device (ex: /dev/nvme0) or an
nvme block device (ex: /dev/nvme0n1).</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-n &lt;NUM&gt;
</dt>
<dt class="hdlist1">
--namespace-id=&lt;NUM&gt;
</dt>
<dd>
<p>
        Desired namespace
</p>
</dd>
<dt class="hdlist1">
-f &lt;FILE&gt;
</dt>
<dt class="hdlist1">
--dump-file=&lt;FILE&gt;
</dt>
<dd>
<p>
        Dump file
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="paragraph"><p>Get the Seagate vendor specific Controller-Initiated telemetry log for the specified device.</p></div>
<div class="listingblock">
<div class="content">
<pre><code># nvme seagate vs-internal-log /dev/nvme0</code></pre>
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
  070701015D6DA8000081A4000003E80000006400000001642C0FB60000098D000000000000004A00000000000000000000003600000000nvme-cli/Documentation/nvme-seagate-vs-log-page-sup.1 '\" t
.\"     Title: nvme-seagate-vs-log-page-sup
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-SEAGATE\-VS\-L" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-seagate-vs-log-page-sup \- Retrieve Seagate vendor specific Supported Log\-pages Information
.SH "SYNOPSIS"
.sp
.nf
\fInvme seagate vs\-log\-page\-sup <device> [OPTIONS]\fR
.fi
.SH "DESCRIPTION"
.sp
This command will only work on Seagate devices supporting this feature\&. Not all commands work across all product families\&.
.sp
The \fI<device>\fR may be either an NVMe character device (ex: /dev/nvme0) or an NVMe block device (ex: /dev/nvme0n1)\&.
.SH "OPTIONS"
.PP
\-o <FMT>, \-\-output\-format=<FMT>
.RS 4
Output in binary format
.RE
.SH "EXAMPLES"
.sp
Get the vendor specific log page information for a particular device\&.
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme seagate vs\-log\-page\-sup /dev/nvme0
Output:
Seagate Supported Log\-pages count :8
LogPage\-Id      LogPage\-Name

0x1              ERROR_INFORMATION
0x2              SMART_INFORMATION
0x3              FW_SLOT_INFORMATION
0x5              COMMANDS_SUPPORTED_AND_EFFECTS
0xC8             VS_RECENT_DRIVE_HISTORY
0xC4             VS_EXTENDED_SMART_INFO
0xC5             VS_LIST_SUPPORTED_LOG_PAGE
0xCB             VS_PCIE_ERROR_LOG_PAGE
.fi
.if n \{\
.RE
.\}
.SH "NVME"
.sp
Part of the nvme\-user suite
   070701015D6DA9000081A4000003E80000006400000001642C0FB6000048D9000000000000004A00000000000000000000003900000000nvme-cli/Documentation/nvme-seagate-vs-log-page-sup.html  <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-seagate-vs-log-page-sup(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-seagate-vs-log-page-sup(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-seagate-vs-log-page-sup -
   Retrieve Seagate vendor specific Supported Log-pages Information
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme seagate vs-log-page-sup &lt;device&gt; [OPTIONS]</em></pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>This command will only work on Seagate devices supporting this feature.  Not
all commands work across all product families.</p></div>
<div class="paragraph"><p>The <em>&lt;device&gt;</em> may be either an NVMe character device (ex: /dev/nvme0) or an
NVMe block device (ex: /dev/nvme0n1).</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-o &lt;FMT&gt;
</dt>
<dt class="hdlist1">
--output-format=&lt;FMT&gt;
</dt>
<dd>
<p>
        Output in binary format
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="paragraph"><p>Get the vendor specific log page information for a particular device.</p></div>
<div class="listingblock">
<div class="content">
<pre><code># nvme seagate vs-log-page-sup /dev/nvme0
Output:
Seagate Supported Log-pages count :8
LogPage-Id      LogPage-Name

0x1              ERROR_INFORMATION
0x2              SMART_INFORMATION
0x3              FW_SLOT_INFORMATION
0x5              COMMANDS_SUPPORTED_AND_EFFECTS
0xC8             VS_RECENT_DRIVE_HISTORY
0xC4             VS_EXTENDED_SMART_INFO
0xC5             VS_LIST_SUPPORTED_LOG_PAGE
0xCB             VS_PCIE_ERROR_LOG_PAGE</code></pre>
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
   070701015D6DAA000081A4000003E80000006400000001642C0FB60000080A000000000000004A00000000000000000000003400000000nvme-cli/Documentation/nvme-seagate-vs-pcie-stats.1   '\" t
.\"     Title: nvme-seagate-vs-pcie-stats
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-SEAGATE\-VS\-P" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-seagate-vs-pcie-stats \- Retrieve Seagate vendor specific PCIe error statistics
.SH "SYNOPSIS"
.sp
.nf
\fInvme seagate vs\-pcie\-stats <device> [OPTIONS]\fR
.fi
.SH "DESCRIPTION"
.sp
This command will only work on Seagate devices supporting this feature\&. Not all commands work across all product families\&.
.sp
The \fI<device>\fR parameter is mandatory and it may be either an NVMe character device (ex: /dev/nvme0) or an nvme block device (ex: /dev/nvme0n1)\&.
.SH "OPTIONS"
.PP
\-o <FMT>, \-\-output\-format=<FMT>
.RS 4
Output in binary format
.RE
.SH "EXAMPLES"
.sp
Get the vendor specific PCIe error statistics for the specified device\&.
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme seagate vs\-pcie\-stats /dev/nvme0
.fi
.if n \{\
.RE
.\}
.SH "NVME"
.sp
Part of the nvme\-user suite
  070701015D6DAB000081A4000003E80000006400000001642C0FB60000474E000000000000004A00000000000000000000003700000000nvme-cli/Documentation/nvme-seagate-vs-pcie-stats.html    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-seagate-vs-pcie-stats(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-seagate-vs-pcie-stats(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-seagate-vs-pcie-stats -
   Retrieve Seagate vendor specific PCIe error statistics
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme seagate vs-pcie-stats &lt;device&gt; [OPTIONS]</em></pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>This command will only work on Seagate devices supporting this feature.  Not
all commands work across all product families.</p></div>
<div class="paragraph"><p>The <em>&lt;device&gt;</em> parameter is mandatory and it may be either an NVMe character device (ex: /dev/nvme0) or an
nvme block device (ex: /dev/nvme0n1).</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-o &lt;FMT&gt;
</dt>
<dt class="hdlist1">
--output-format=&lt;FMT&gt;
</dt>
<dd>
<p>
        Output in binary format
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="paragraph"><p>Get the vendor specific PCIe error statistics for the specified device.</p></div>
<div class="listingblock">
<div class="content">
<pre><code># nvme seagate vs-pcie-stats /dev/nvme0</code></pre>
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
  070701015D6DAC000081A4000003E80000006400000001642C0FB600000A75000000000000004A00000000000000000000003700000000nvme-cli/Documentation/nvme-seagate-vs-smart-add-log.1    '\" t
.\"     Title: nvme-seagate-vs-smart-add-log
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-SEAGATE\-VS\-S" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-seagate-vs-smart-add-log \- Retrieve Seagate vendor specific extended\-SMART Information
.SH "SYNOPSIS"
.sp
.nf
\fInvme seagate vs\-smart\-add\-log <device> [OPTIONS]\fR
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, sends the Seagate vendor log request and either saves the result to a file or dumps the content to stdout\&.
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1)\&.
.sp
The log contents may be associated with the controller, in which case the namespace parameter is ignored\&.
.sp
Two logs exist, page 0xC4 (Extended SMART log page) and page 0xCF (DRAM Supercap SMART log page)
.sp
This command will only work on Seagate devices supporting this feature\&. Not all commands work across all product families\&.
.SH "OPTIONS"
.PP
\-l <NUM>, \-\-log=<NUM>
.RS 4
Log number, page 0xC4 (Extended SMART log page) and page 0xCF (DRAM Supercap SMART log page)
.RE
.PP
\-n <NUM>, \-\-namespace\-id=<NUM>
.RS 4
Namespace number
.RE
.PP
\-o <FILE>, \-\-output\-file=<FILE>
.RS 4
Output in binary format\&. Defaults to text\-formatted dump to stdout
.RE
.SH "EXAMPLES"
.sp
Get the vendor specific extended SMART information for the specified device\&.
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme seagate vs\-smart\-add\-log /dev/nvme0
.fi
.if n \{\
.RE
.\}
.SH "NVME"
.sp
Part of the nvme\-user suite
   070701015D6DAD000081A4000003E80000006400000001642C0FB600004ACA000000000000004A00000000000000000000003A00000000nvme-cli/Documentation/nvme-seagate-vs-smart-add-log.html <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-seagate-vs-smart-add-log(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-seagate-vs-smart-add-log(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-seagate-vs-smart-add-log -
   Retrieve Seagate vendor specific extended-SMART Information
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme seagate vs-smart-add-log &lt;device&gt; [OPTIONS]</em></pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, sends the Seagate vendor log
request and either saves the result to a file or dumps the content to stdout.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe
character device (ex: /dev/nvme0), or a namespace block device (ex:
/dev/nvme0n1).</p></div>
<div class="paragraph"><p>The log contents may be associated with the controller, in which case the namespace parameter is ignored.</p></div>
<div class="paragraph"><p>Two logs exist, page 0xC4 (Extended SMART log page) and page 0xCF (DRAM Supercap SMART log page)</p></div>
<div class="paragraph"><p>This command will only work on Seagate devices supporting this feature.  Not
all commands work across all product families.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-l &lt;NUM&gt;
</dt>
<dt class="hdlist1">
--log=&lt;NUM&gt;
</dt>
<dd>
<p>
        Log number, page 0xC4 (Extended SMART log page) and page 0xCF (DRAM
        Supercap SMART log page)
</p>
</dd>
<dt class="hdlist1">
-n &lt;NUM&gt;
</dt>
<dt class="hdlist1">
--namespace-id=&lt;NUM&gt;
</dt>
<dd>
<p>
        Namespace number
</p>
</dd>
<dt class="hdlist1">
-o &lt;FILE&gt;
</dt>
<dt class="hdlist1">
--output-file=&lt;FILE&gt;
</dt>
<dd>
<p>
        Output in binary format. Defaults to text-formatted dump to stdout
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="paragraph"><p>Get the vendor specific extended SMART information for the specified device.</p></div>
<div class="listingblock">
<div class="content">
<pre><code># nvme seagate vs-smart-add-log /dev/nvme0</code></pre>
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
  070701015D6DAE000081A4000003E80000006400000001642C0FB600000827000000000000004A00000000000000000000003B00000000nvme-cli/Documentation/nvme-seagate-vs-temperature-stats.1    '\" t
.\"     Title: nvme-seagate-vs-temperature-stats
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-SEAGATE\-VS\-T" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-seagate-vs-temperature-stats \- Retrieve Seagate vendor specific temperature statistics
.SH "SYNOPSIS"
.sp
.nf
\fInvme seagate vs\-temperature\-stats <device> [OPTIONS]\fR
.fi
.SH "DESCRIPTION"
.sp
This command will only work on Seagate devices supporting this feature\&. Not all commands work across all product families\&.
.sp
The \*(Aq<device>\*(Aqparameter is mandatory and it may be either an NVMe character device (ex: /dev/nvme0) or an nvme block device (ex: /dev/nvme0n1)\&.
.SH "OPTIONS"
.PP
\-o <FMT>, \-\-output\-format=<FMT>
.RS 4
Output in binary format
.RE
.SH "EXAMPLES"
.sp
Get vendor specific temperature statistics for the specified device\&.
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme seagate vs\-temperature\-stats /dev/nvme0
.fi
.if n \{\
.RE
.\}
.SH "NVME"
.sp
Part of the nvme\-user suite
 070701015D6DAF000081A4000003E80000006400000001642C0FB600004767000000000000004A00000000000000000000003E00000000nvme-cli/Documentation/nvme-seagate-vs-temperature-stats.html <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-seagate-vs-temperature-stats(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-seagate-vs-temperature-stats(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-seagate-vs-temperature-stats -
   Retrieve Seagate vendor specific temperature statistics
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme seagate vs-temperature-stats &lt;device&gt; [OPTIONS]</em></pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>This command will only work on Seagate devices supporting this feature.  Not
all commands work across all product families.</p></div>
<div class="paragraph"><p>The '&lt;device&gt;'parameter is mandatory and it may be either an NVMe character device (ex: /dev/nvme0) or an
nvme block device (ex: /dev/nvme0n1).</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-o &lt;FMT&gt;
</dt>
<dt class="hdlist1">
--output-format=&lt;FMT&gt;
</dt>
<dd>
<p>
        Output in binary format
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="paragraph"><p>Get vendor specific temperature statistics for the specified device.</p></div>
<div class="listingblock">
<div class="content">
<pre><code># nvme seagate vs-temperature-stats /dev/nvme0</code></pre>
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
 070701015D6DB0000081A4000003E80000006400000001642C0FB600000EF6000000000000004A00000000000000000000002C00000000nvme-cli/Documentation/nvme-security-recv.1   '\" t
.\"     Title: nvme-security-recv
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-SECURITY\-RECV" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-security-recv \- Security Recv command
.SH "SYNOPSIS"
.sp
.nf
\fInvme security\-recv\fR <device> [\-\-size=<size> | \-x <size>]
                    [\-\-secp=<security\-protocol> | \-p <security\-protocol>]
                    [\-\-spsp=<protocol\-specific> | \-s <protocol\-specific>]
                    [\-\-nssf=<nvme\-specific> | \-N <nvme\-specific>]
                    [\-\-al=<allocation\-length> | \-t <allocation\-length>]
                    [\-\-namespace\-id=<nsid> | \-n <nsid>]
                    [\-\-raw\-binary | \-b]
.fi
.SH "DESCRIPTION"
.sp
The Security Receive command transfers the status and data result of one or more Security Send commands that were previously submitted to the controller\&.
.sp
The association between a Security Receive command and previous Security Send commands is dependent on the Security Protocol\&. The format of the data to be transferred is dependent on the Security Protocol\&. Refer to SPC\-4 for Security Protocol details\&.
.sp
Each Security Receive command returns the appropriate data corresponding to a Security Send command as defined by the rules of the Security Protocol\&. The Security Receive command data may not be retained if there is a loss of communication between the controller and host, or if a controller reset occurs\&.
.SH "OPTIONS"
.PP
\-n <nsid>, \-\-namespace\-id=<nsid>
.RS 4
Target a specific namespace for this security command\&.
.RE
.PP
\-N <nssf>, \-\-nssf=<nssf>
.RS 4
NVMe Security Specific field\&. If using security protocol EAh assigned for NVMe use, the NVMe security specific field indicates which reply memory buffer target\&.
.RE
.PP
\-x <size>, \-\-size=<size>
.RS 4
Size of buffer to allocate\&. One success it will be printed to STDOUT\&.
.RE
.PP
\-p <security\-protocol>, \-\-secp=<security\-protocol>
.RS 4
Security Protocol: This field specifies the security protocol as defined in SPC\-4\&. The controller shall fail the command with Invalid Parameter indicated if a reserved value of the Security Protocol is specified\&.
.RE
.PP
\-s <security\-protocol\-specific>, \-\-spsp=<security\-protocol\-specific>
.RS 4
SP Specific: The value of this field is specific to the Security Protocol as defined in SPC\-4\&.
.RE
.PP
\-t <allocation\-length>, \-\-al=<allocation\-length>
.RS 4
Allocation Length: The value of this field is specific to the Security Protocol as defined in SPC\-4\&.
.RE
.PP
\-b, \-\-raw\-binary
.RS 4
Print the raw buffer to stdout\&. Defaults to print in hex\&.
.RE
.SH "EXAMPLES"
.sp
No Examples
.SH "NVME"
.sp
Part of the nvme\-user suite
  070701015D6DB1000081A4000003E80000006400000001642C0FB600005079000000000000004A00000000000000000000002F00000000nvme-cli/Documentation/nvme-security-recv.html    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-security-recv(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-security-recv(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-security-recv -
   Security Recv command
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme security-recv</em> &lt;device&gt; [--size=&lt;size&gt; | -x &lt;size&gt;]
                    [--secp=&lt;security-protocol&gt; | -p &lt;security-protocol&gt;]
                    [--spsp=&lt;protocol-specific&gt; | -s &lt;protocol-specific&gt;]
                    [--nssf=&lt;nvme-specific&gt; | -N &lt;nvme-specific&gt;]
                    [--al=&lt;allocation-length&gt; | -t &lt;allocation-length&gt;]
                    [--namespace-id=&lt;nsid&gt; | -n &lt;nsid&gt;]
                    [--raw-binary | -b]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>The Security Receive command transfers the status and data result of
one or more Security Send commands that were previously submitted to
the controller.</p></div>
<div class="paragraph"><p>The association between a Security Receive command and previous Security
Send commands is dependent on the Security Protocol. The format of the
data to be transferred is dependent on the Security Protocol. Refer to
SPC-4 for Security Protocol details.</p></div>
<div class="paragraph"><p>Each Security Receive command returns the appropriate data corresponding
to a Security Send command as defined by the rules of the Security
Protocol. The Security Receive command data may not be retained if there
is a loss of communication between the controller and host, or if a
controller reset occurs.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-n &lt;nsid&gt;
</dt>
<dt class="hdlist1">
--namespace-id=&lt;nsid&gt;
</dt>
<dd>
<p>
        Target a specific namespace for this security command.
</p>
</dd>
<dt class="hdlist1">
-N &lt;nssf&gt;
</dt>
<dt class="hdlist1">
--nssf=&lt;nssf&gt;
</dt>
<dd>
<p>
        NVMe Security Specific field. If using security protocol EAh
        assigned for NVMe use, the NVMe security specific field indicates
        which reply memory buffer target.
</p>
</dd>
<dt class="hdlist1">
-x &lt;size&gt;
</dt>
<dt class="hdlist1">
--size=&lt;size&gt;
</dt>
<dd>
<p>
        Size of buffer to allocate. One success it will be printed
        to STDOUT.
</p>
</dd>
<dt class="hdlist1">
-p &lt;security-protocol&gt;
</dt>
<dt class="hdlist1">
--secp=&lt;security-protocol&gt;
</dt>
<dd>
<p>
        Security Protocol: This field specifies the security protocol
        as defined in SPC-4. The controller shall fail the command with
        Invalid Parameter indicated if a reserved value of the Security
        Protocol is specified.
</p>
</dd>
<dt class="hdlist1">
-s &lt;security-protocol-specific&gt;
</dt>
<dt class="hdlist1">
--spsp=&lt;security-protocol-specific&gt;
</dt>
<dd>
<p>
        SP Specific: The value of this field is specific to the Security
        Protocol as defined in SPC-4.
</p>
</dd>
<dt class="hdlist1">
-t &lt;allocation-length&gt;
</dt>
<dt class="hdlist1">
--al=&lt;allocation-length&gt;
</dt>
<dd>
<p>
        Allocation Length: The value of this field is specific to the
        Security Protocol as defined in SPC-4.
</p>
</dd>
<dt class="hdlist1">
-b
</dt>
<dt class="hdlist1">
--raw-binary
</dt>
<dd>
<p>
        Print the raw buffer to stdout. Defaults to print in hex.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="paragraph"><p>No Examples</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
   070701015D6DB2000081A4000003E80000006400000001642C0FB600000E33000000000000004A00000000000000000000002C00000000nvme-cli/Documentation/nvme-security-send.1   '\" t
.\"     Title: nvme-security-send
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-SECURITY\-SEND" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-security-send \- Security Send command
.SH "SYNOPSIS"
.sp
.nf
\fInvme security\-send\fR <device> [\-\-file=<file> | \-f <file>]
                    [\-\-secp=<security\-protocol> | \-p <security\-protocol>]
                    [\-\-spsp=<protocol\-specific> | \-s <protocol\-specific>]
                    [\-\-tl=<transfer\-length> | \-t <transfer\-length>]
                    [\-\-nssf=<nvme\-specific> | \-N <nvme\-specific>]
                    [\-\-namespace\-id=<nsid> | \-n <nsid>]
.fi
.SH "DESCRIPTION"
.sp
The Security Send command is used to transfer security protocol data to the controller\&. The data structure transferred to the controller as part of this command contains security protocol specific commands to be performed by the controller\&. The data structure transferred may also contain data or parameters associated with the security protocol commands\&. Status and data that is to be returned to the host for the security protocol commands submitted by a Security Send command are retrieved with the Security Receive command\&.
.sp
The association between a Security Send command and subsequent Security Receive command is Security Protocol field dependent as defined in SPC\-4\&.
.SH "OPTIONS"
.PP
\-n <nsid>, \-\-namespace\-id=<nsid>
.RS 4
Target a specific namespace for this security command\&.
.RE
.PP
\-N <nssf>, \-\-nssf=<nssf>
.RS 4
NVMe Security Specific field\&. If using security protocol EAh assigned for NVMe use, the NVMe security specific field indicates which reply memory buffer target\&.
.RE
.PP
\-f <file>, \-\-file=<file>
.RS 4
Path to file used as the security protocol\(cqs payload\&. Required argument\&.
.RE
.PP
\-p <security\-protocol>, \-\-secp=<security\-protocol>
.RS 4
Security Protocol: This field specifies the security protocol as defined in SPC\-4\&. The controller shall fail the command with Invalid Parameter indicated if a reserved value of the Security Protocol is specified\&.
.RE
.PP
\-s <security\-protocol\-specific>, \-\-spsp=<security\-protocol\-specific>
.RS 4
SP Specific: The value of this field is specific to the Security Protocol as defined in SPC\-4\&.
.RE
.PP
\-t <trans\-length>, \-\-tl=<trans\-length>
.RS 4
Transfer Length: The value of this field is specific to the Security Protocol as defined in SPC\-4\&.
.RE
.SH "EXAMPLES"
.sp
No Examples
.SH "NVME"
.sp
Part of the nvme\-user suite
 070701015D6DB3000081A4000003E80000006400000001642C0FB600004F56000000000000004A00000000000000000000002F00000000nvme-cli/Documentation/nvme-security-send.html    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-security-send(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-security-send(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-security-send -
   Security Send command
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme security-send</em> &lt;device&gt; [--file=&lt;file&gt; | -f &lt;file&gt;]
                    [--secp=&lt;security-protocol&gt; | -p &lt;security-protocol&gt;]
                    [--spsp=&lt;protocol-specific&gt; | -s &lt;protocol-specific&gt;]
                    [--tl=&lt;transfer-length&gt; | -t &lt;transfer-length&gt;]
                    [--nssf=&lt;nvme-specific&gt; | -N &lt;nvme-specific&gt;]
                    [--namespace-id=&lt;nsid&gt; | -n &lt;nsid&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>The Security Send command is used to transfer security protocol data
to the controller. The data structure transferred to the controller
as part of this command contains security protocol specific commands
to be performed by the controller. The data structure transferred may
also contain data or parameters associated with the security protocol
commands. Status and data that is to be returned to the host for the
security protocol commands submitted by a Security Send command are
retrieved with the Security Receive command.</p></div>
<div class="paragraph"><p>The association between a Security Send command and subsequent Security
Receive command is Security Protocol field dependent as defined in SPC-4.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-n &lt;nsid&gt;
</dt>
<dt class="hdlist1">
--namespace-id=&lt;nsid&gt;
</dt>
<dd>
<p>
        Target a specific namespace for this security command.
</p>
</dd>
<dt class="hdlist1">
-N &lt;nssf&gt;
</dt>
<dt class="hdlist1">
--nssf=&lt;nssf&gt;
</dt>
<dd>
<p>
        NVMe Security Specific field. If using security protocol EAh
        assigned for NVMe use, the NVMe security specific field indicates
        which reply memory buffer target.
</p>
</dd>
<dt class="hdlist1">
-f &lt;file&gt;
</dt>
<dt class="hdlist1">
--file=&lt;file&gt;
</dt>
<dd>
<p>
        Path to file used as the security protocol&#8217;s payload. Required
        argument.
</p>
</dd>
<dt class="hdlist1">
-p &lt;security-protocol&gt;
</dt>
<dt class="hdlist1">
--secp=&lt;security-protocol&gt;
</dt>
<dd>
<p>
        Security Protocol: This field specifies the security protocol
        as defined in SPC-4. The controller shall fail the command with
        Invalid Parameter indicated if a reserved value of the Security
        Protocol is specified.
</p>
</dd>
<dt class="hdlist1">
-s &lt;security-protocol-specific&gt;
</dt>
<dt class="hdlist1">
--spsp=&lt;security-protocol-specific&gt;
</dt>
<dd>
<p>
        SP Specific: The value of this field is specific to the Security
        Protocol as defined in SPC-4.
</p>
</dd>
<dt class="hdlist1">
-t &lt;trans-length&gt;
</dt>
<dt class="hdlist1">
--tl=&lt;trans-length&gt;
</dt>
<dd>
<p>
        Transfer Length: The value of this field is specific to the
        Security Protocol as defined in SPC-4.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="paragraph"><p>No Examples</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
  070701015D6DB4000081A4000003E80000006400000001642C0FB600000CF3000000000000004A00000000000000000000002C00000000nvme-cli/Documentation/nvme-self-test-log.1   '\" t
.\"     Title: nvme-self-test-log
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-SELF\-TEST\-LO" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-self-test-log \- Retrieve the log information initiated by device\-self\-test and display it
.SH "SYNOPSIS"
.sp
.nf
\fInvme self\-test\fR\-log <device> [\-\-log\-entries=<entries> | \-e <entries>]
                    [\-\-output\-format=<FMT> | \-o <FMT>]
.fi
.SH "DESCRIPTION"
.sp
Retrieves the log pages from an NVMe device corresponding to the requested self\-test by the user and provides 20\-most recent result returned structure\&.
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1)\&.
.sp
On success, the returned log structure may be returned in one of several ways depending on the option flags; the structure may parsed by the program and printed in a readable format or the raw buffer or the json format\&.
.sp
By default the log is printed out in the normal readable format\&.
.SH "OPTION"
.PP
\-e <entries>, \-\-log\-entries=<entries>
.RS 4
Specifies how many DST log entries the program should request from the device\&. This must be at least one, and shouldn\(cqt exceed the 20 entries\&. Defaults to 20 DST log entries\&.
.RE
.PP
\-o <format>, \-\-output\-format=<format>
.RS 4
Set the reporting format to
\fInormal\fR,
\fIjson\fR, or
\fIbinary\fR\&. Only one output format can be used at a time\&.
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Get the self\-test\-log and print it in a human readable format:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme self\-test\-log /dev/nvme0
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Print the raw output to a file:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme self\-test\-log /dev/nvme0 \-o "binary"
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Get the self\-test\-log and print it in a json format:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme self\-test\-log /dev/nvme0 \-o "json"
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite
 070701015D6DB5000081A4000003E80000006400000001642C0FB600004C9F000000000000004A00000000000000000000002F00000000nvme-cli/Documentation/nvme-self-test-log.html    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-self-test-log(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-self-test-log(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-self-test-log -
   Retrieve the log information initiated by device-self-test and display it
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme self-test</em>-log &lt;device&gt; [--log-entries=&lt;entries&gt; | -e &lt;entries&gt;]
                    [--output-format=&lt;FMT&gt; | -o &lt;FMT&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>Retrieves the log pages from an NVMe device corresponding to the
requested self-test by the user and provides 20-most recent result
returned structure.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).</p></div>
<div class="paragraph"><p>On success, the returned log structure may be returned in one of
several ways depending on the option flags; the structure may parsed by
the program and printed in a readable format or the raw buffer or the
json format.</p></div>
<div class="paragraph"><p>By default the log is printed out in the normal readable format.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_option">OPTION</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-e &lt;entries&gt;
</dt>
<dt class="hdlist1">
--log-entries=&lt;entries&gt;
</dt>
<dd>
<p>
        Specifies how many DST log entries the program should request from
        the device. This must be at least one, and shouldn&#8217;t exceed the
        20 entries. Defaults to 20 DST log entries.
</p>
</dd>
<dt class="hdlist1">
-o &lt;format&gt;
</dt>
<dt class="hdlist1">
--output-format=&lt;format&gt;
</dt>
<dd>
<p>
              Set the reporting format to <em>normal</em>, <em>json</em>, or
              <em>binary</em>. Only one output format can be used at a time.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Get the self-test-log and print it in a human readable format:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme self-test-log /dev/nvme0</code></pre>
</div></div>
</li>
<li>
<p>
Print the raw output to a file:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme self-test-log /dev/nvme0 -o "binary"</code></pre>
</div></div>
</li>
<li>
<p>
Get the self-test-log and print it in a json format:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme self-test-log /dev/nvme0 -o "json"</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
 070701015D6DB6000081A4000003E80000006400000001642C0FB600000F42000000000000004A00000000000000000000002A00000000nvme-cli/Documentation/nvme-set-feature.1 '\" t
.\"     Title: nvme-set-feature
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-SET\-FEATURE" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-set-feature \- Sets an NVMe feature, returns applicable results
.SH "SYNOPSIS"
.sp
.nf
\fInvme set\-feature\fR <device> [\-\-namespace\-id=<nsid> | \-n <nsid>]
                          [\-\-feature\-id=<fid> | \-f <fid>] [\-\-value=<value> | \-v <value>]
                          [\-\-uuid\-index=<uuid\-index> | \-U <uuid_index>]
                          [\-\-data\-len=<data\-len> | \-l <data\-len>]
                          [\-\-data=<data\-file> | \-d <data\-file>]
                          [\-\-save| \-s]
.fi
.SH "DESCRIPTION"
.sp
Submits an NVMe Set Feature admin command and returns the applicable results\&. This may be the feature\(cqs value, or may also include a feature structure if the feature requires it (ex: LBA Range Type)\&.
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1)\&.
.sp
On success, the value sent to the device is displayed
.SH "OPTIONS"
.PP
\-n <nsid>, \-\-namespace\-id=<nsid>
.RS 4
Sets the feature for the given nsid\&. This is optional and most features do not use this value\&.
.RE
.PP
\-f <fid>, \-\-feature\-id=<fid>
.RS 4
The feature id to send with the command\&. Value provided should be in hex\&.
.RE
.PP
\-l <data\-len>, \-\-data\-len=<data\-len>
.RS 4
The data length for the buffer submitted for this feature\&. Most known features do not use this value\&. The exceptions are LBA Range Type and host identifier\&.
.RE
.PP
\-d <data\-file>, \-\-data=<data\-file>
.RS 4
The data file for the buffer submitted for this feature\&. Most known features do not use this value\&. The exceptions is LBA Range Type and host identifier\&. This defaults to STDIN so files and echo can be piped\&.
.RE
.PP
\-v <value>, \-\-value=<value>
.RS 4
The value for command dword 11, the value you want to set the feature to\&.
.RE
.PP
\-s, \-\-save
.RS 4
Save the attribute so that it persists through all power states and resets\&.
.RE
.PP
\-U <uuid\-index>, \-\-uuid\-index=<uuid\-index>
.RS 4
UUID Index of the feature
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Sets the Power State (PS) to 1 in feature id 2:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme set\-feature /dev/nvme0 \-f 2 /dev/nvme0n1 \-v 0x1
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Sets the host id to the ascii string\&.
.sp
.if n \{\
.RS 4
.\}
.nf
# echo "abcdefgh" | nvme set\-feature /dev/nvme0 \-f 0x81 \-l 8
.fi
.if n \{\
.RE
.\}
.sp
nvme set\-feature /dev/nvme0 \-f 0x81 \-l 8 \-U 0x1
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite
  070701015D6DB7000081A4000003E80000006400000001642C0FB6000050C9000000000000004A00000000000000000000002D00000000nvme-cli/Documentation/nvme-set-feature.html  <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-set-feature(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-set-feature(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-set-feature -
   Sets an NVMe feature, returns applicable results
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme set-feature</em> &lt;device&gt; [--namespace-id=&lt;nsid&gt; | -n &lt;nsid&gt;]
                          [--feature-id=&lt;fid&gt; | -f &lt;fid&gt;] [--value=&lt;value&gt; | -v &lt;value&gt;]
                          [--uuid-index=&lt;uuid-index&gt; | -U &lt;uuid_index&gt;]
                          [--data-len=&lt;data-len&gt; | -l &lt;data-len&gt;]
                          [--data=&lt;data-file&gt; | -d &lt;data-file&gt;]
                          [--save| -s]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>Submits an NVMe Set Feature admin command and returns the applicable
results. This may be the feature&#8217;s value, or may also include a feature
structure if the feature requires it (ex: LBA Range Type).</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).</p></div>
<div class="paragraph"><p>On success, the value sent to the device is displayed</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-n &lt;nsid&gt;
</dt>
<dt class="hdlist1">
--namespace-id=&lt;nsid&gt;
</dt>
<dd>
<p>
        Sets the feature for the given nsid. This is optional and
        most features do not use this value.
</p>
</dd>
<dt class="hdlist1">
-f &lt;fid&gt;
</dt>
<dt class="hdlist1">
--feature-id=&lt;fid&gt;
</dt>
<dd>
<p>
        The feature id to send with the command. Value provided should
        be in hex.
</p>
</dd>
<dt class="hdlist1">
-l &lt;data-len&gt;
</dt>
<dt class="hdlist1">
--data-len=&lt;data-len&gt;
</dt>
<dd>
<p>
        The data length for the buffer submitted for this feature. Most
        known features do not use this value. The exceptions are LBA
        Range Type and host identifier.
</p>
</dd>
<dt class="hdlist1">
-d &lt;data-file&gt;
</dt>
<dt class="hdlist1">
--data=&lt;data-file&gt;
</dt>
<dd>
<p>
        The data file for the buffer submitted for this feature. Most
        known features do not use this value. The exceptions is LBA
        Range Type and host identifier. This defaults to STDIN so files
        and echo can be piped.
</p>
</dd>
<dt class="hdlist1">
-v &lt;value&gt;
</dt>
<dt class="hdlist1">
--value=&lt;value&gt;
</dt>
<dd>
<p>
        The value for command dword 11, the value you want to set the
        feature to.
</p>
</dd>
<dt class="hdlist1">
-s
</dt>
<dt class="hdlist1">
--save
</dt>
<dd>
<p>
        Save the attribute so that it persists through all power states and resets.
</p>
</dd>
<dt class="hdlist1">
-U &lt;uuid-index&gt;
</dt>
<dt class="hdlist1">
--uuid-index=&lt;uuid-index&gt;
</dt>
<dd>
<p>
        UUID Index of the feature
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Sets the Power State (PS) to 1  in feature id 2:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme set-feature /dev/nvme0 -f 2 /dev/nvme0n1 -v 0x1</code></pre>
</div></div>
</li>
<li>
<p>
Sets the host id to the ascii string.
</p>
<div class="listingblock">
<div class="content">
<pre><code># echo "abcdefgh" | nvme set-feature /dev/nvme0 -f 0x81 -l 8</code></pre>
</div></div>
<div class="paragraph"><p>nvme set-feature /dev/nvme0 -f 0x81 -l 8 -U 0x1</p></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
   070701015D6DB8000081A4000003E80000006400000001642C0FB600000733000000000000004A00000000000000000000002B00000000nvme-cli/Documentation/nvme-set-property.1    '\" t
.\"     Title: nvme-set-property
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-SET\-PROPERTY" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-set-property \- Writes and shows the defined NVMe controller property for NVMe over Fabric
.SH "SYNOPSIS"
.sp
.nf
\fInvme set\-property\fR <device> [\-\-offset=<offset> | \-o <offset>]
                                [\-\-value=<val> | \-v <val>]
.fi
.SH "DESCRIPTION"
.sp
Writes and shows the defined NVMe controller property for NVMe over Fabric\&.
.SH "OPTIONS"
.PP
\-o, \-\-offset
.RS 4
The offset of the property\&.
.RE
.PP
\-v
.RS 4
\-\-value: The value of the property to be set\&.
.RE
.SH "EXAMPLES"
.sp
No examples (yet)\&.
.SH "NVME"
.sp
Part of the nvme\-user suite
 070701015D6DB9000081A4000003E80000006400000001642C0FB600004653000000000000004A00000000000000000000002E00000000nvme-cli/Documentation/nvme-set-property.html <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-set-property(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-set-property(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-set-property -
   Writes and shows the defined NVMe controller property for NVMe over Fabric
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme set-property</em> &lt;device&gt; [--offset=&lt;offset&gt; | -o &lt;offset&gt;]
                                [--value=&lt;val&gt; | -v &lt;val&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>Writes and shows the defined NVMe controller property for NVMe over Fabric.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-o
</dt>
<dt class="hdlist1">
--offset
</dt>
<dd>
<p>
       The offset of the property.
</p>
</dd>
<dt class="hdlist1">
-v
</dt>
<dd>
<p>
--value:
        The value of the property to be set.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="paragraph"><p>No examples (yet).</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
 070701015D6DBA000081A4000003E80000006400000001642C0FB6000006C1000000000000004A00000000000000000000002B00000000nvme-cli/Documentation/nvme-show-hostnqn.1    '\" t
.\"     Title: nvme-show-hostnqn
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-SHOW\-HOSTNQN" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-show-hostnqn \- Generate a host NVMe Qualified Name
.SH "SYNOPSIS"
.sp
.nf
\fInvme show\-hostnqn\fR
.fi
.SH "DESCRIPTION"
.sp
Show the host NQN configured for the system\&. If /usr/local/etc/nvme/hostnqn is not present and systemd application\-specific machine IDs are available, this will show the systemd\-generated host NQN for the system\&.
.SH "OPTIONS"
.sp
No options needed
.SH "EXAMPLES"
.sp
nvme show\-hostnqn
.SH "NVME"
.sp
Part of the nvme\-user suite
   070701015D6DBB000081A4000003E80000006400000001642C0FB60000454E000000000000004A00000000000000000000002E00000000nvme-cli/Documentation/nvme-show-hostnqn.html <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-show-hostnqn(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-show-hostnqn(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-show-hostnqn -
   Generate a host NVMe Qualified Name
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme show-hostnqn</em></pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>Show the host NQN configured for the system.  If /usr/local/etc/nvme/hostnqn is
not present and systemd application-specific machine IDs are available,
this will show the systemd-generated host NQN for the system.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="paragraph"><p>No options needed</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="paragraph"><p>nvme show-hostnqn</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
  070701015D6DBC000081A4000003E80000006400000001642C0FB600000D71000000000000004A00000000000000000000002800000000nvme-cli/Documentation/nvme-show-regs.1   '\" t
.\"     Title: nvme-id-ns
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-ID\-NS" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-show-regs \- Reads and shows the defined NVMe controller registers for NVMe over PCIe or the controller properties for NVMe over Fabrics\&.
.SH "SYNOPSIS"
.sp
.nf
\fInvme show\-regs\fR <device>       [\-\-human\-readable | \-H]
                                [\-\-output\-format=<FMT> | \-o <FMT>]
.fi
.SH "DESCRIPTION"
.sp
For the NVMe over PCIe device given, sends an identify namespace command and provides the result and returned structure\&. For the NVMe over Fabrics device given, sends a fabric command and provides the result and returned structure\&.
.sp
The <device> parameter is mandatory and must be the nvme admin character device (ex: /dev/nvme0)\&. For NVMe over PCIe, the program uses knowledge of the sysfs layout to map the device to the pci resource stored there and mmaps the memory to get access to the registers\&. For NVMe over Fabrics, the programs sends a fabric command to get the properties of the target NVMe controller\&. Only the supported properties are displayed\&.
.SH "OPTIONS"
.PP
\-H, \-\-human\-readable
.RS 4
Display registers or supported properties in human readable format\&.
.RE
.PP
\-o <format>, \-\-output\-format=<format>
.RS 4
Set the reporting format to
\fInormal\fR,
\fIjson\fR, or
\fIbinary\fR\&. Only one output format can be used at a time\&.
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Show the NVMe over PCIe controller registers or the NVMe over Fabric controller properties in a binary format:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme show\-regs /dev/nvme0 \-o binary
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Show the NVMe over PCIe controller registers or the NVMe over Fabric controller properties in a human readable format:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme show\-regs /dev/nvme0 \-H
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Show the NVMe over PCIe controller registers or NVMe\-oF controller properties in a json format:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme show\-regs /dev/nvme0 \-o json
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite
   070701015D6DBD000081A4000003E80000006400000001642C0FB600004CBB000000000000004A00000000000000000000002B00000000nvme-cli/Documentation/nvme-show-regs.html    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-id-ns(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-id-ns(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-show-regs -
   Reads and shows the defined NVMe controller registers for NVMe over PCIe or the controller properties for NVMe over Fabrics.
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme show-regs</em> &lt;device&gt;       [--human-readable | -H]
                                [--output-format=&lt;FMT&gt; | -o &lt;FMT&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe over PCIe device given, sends an identify namespace command and
provides the result and returned structure.
For the NVMe over Fabrics device given, sends a fabric command and provides
the result and returned structure.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and must be the nvme admin character
device (ex: /dev/nvme0). For NVMe over PCIe, the program uses knowledge of the
sysfs layout to map the device to the pci resource stored there and mmaps the
memory to get access to the registers. For NVMe over Fabrics, the programs
sends a fabric command to get the properties of the target NVMe controller.
Only the supported properties are displayed.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-H
</dt>
<dt class="hdlist1">
--human-readable
</dt>
<dd>
<p>
       Display registers or supported properties in human readable format.
</p>
</dd>
<dt class="hdlist1">
-o &lt;format&gt;
</dt>
<dt class="hdlist1">
--output-format=&lt;format&gt;
</dt>
<dd>
<p>
              Set the reporting format to <em>normal</em>, <em>json</em>, or
              <em>binary</em>. Only one output format can be used at a time.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Show the NVMe over PCIe controller registers or the NVMe over Fabric controller
properties in a binary format:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme show-regs /dev/nvme0 -o binary</code></pre>
</div></div>
</li>
<li>
<p>
Show the NVMe over PCIe controller registers or the NVMe over Fabric controller
properties in a human readable format:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme show-regs /dev/nvme0 -H</code></pre>
</div></div>
</li>
<li>
<p>
Show the NVMe over PCIe controller registers or NVMe-oF controller properties
in a json format:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme show-regs /dev/nvme0 -o json</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
 070701015D6DBE000081A4000003E80000006400000001642C0FB60000083E000000000000004A00000000000000000000002C00000000nvme-cli/Documentation/nvme-show-topology.1   '\" t
.\"     Title: nvme-show-topology
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-SHOW\-TOPOLOGY" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-show-topology \- Show topology of all NVMe subsystems
.SH "SYNOPSIS"
.sp
.nf
\fInvme show\-topology\fR
.fi
.SH "DESCRIPTION"
.sp
Show the topology of all NVMe subsystems\&.
.SH "OPTIONS"
.PP
\-o <format>, \-\-output\-format=<format>
.RS 4
Set the reporting format to
\fInormal\fR
or
\fIjson\fR\&. Only one output format can be used at a time\&.
.RE
.PP
\-v, \-\-verbose
.RS 4
Increase the information in the output, showing nvme subsystems, controllers and namespaces separately and how they\(cqre related to each other\&.
.RE
.PP
\-r <order>, \-\-ranking=<order>
.RS 4
Set the ranking orer to
\fInamespace\fR
(default) or
\fIctrl\fR\&. This option has only an effect for output format
\fInormal\fR\&. The JSON output is always
\fInamespace\fR
ordered\&.
.RE
.SH "EXAMPLES"
.sp
nvme show\-topology
.SH "NVME"
.sp
Part of the nvme\-user suite
  070701015D6DBF000081A4000003E80000006400000001642C0FB6000047FF000000000000004A00000000000000000000002F00000000nvme-cli/Documentation/nvme-show-topology.html    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-show-topology(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-show-topology(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-show-topology -
   Show topology of all NVMe subsystems
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme show-topology</em></pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>Show the topology of all NVMe subsystems.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-o &lt;format&gt;
</dt>
<dt class="hdlist1">
--output-format=&lt;format&gt;
</dt>
<dd>
<p>
        Set the reporting format to <em>normal</em> or <em>json</em>. Only one output
        format can be used at a time.
</p>
</dd>
<dt class="hdlist1">
-v
</dt>
<dt class="hdlist1">
--verbose
</dt>
<dd>
<p>
        Increase the information in the output, showing nvme subsystems,
        controllers and namespaces separately and how they&#8217;re related to each
        other.
</p>
</dd>
<dt class="hdlist1">
-r &lt;order&gt;
</dt>
<dt class="hdlist1">
--ranking=&lt;order&gt;
</dt>
<dd>
<p>
        Set the ranking orer to <em>namespace</em> (default) or <em>ctrl</em>. This option
        has only an effect for output format <em>normal</em>. The JSON output is
        always <em>namespace</em> ordered.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="paragraph"><p>nvme show-topology</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
 070701015D6DC0000081A4000003E80000006400000001642C0FB600000CC6000000000000004A00000000000000000000002800000000nvme-cli/Documentation/nvme-smart-log.1   '\" t
.\"     Title: nvme-smart-log
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-SMART\-LOG" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-smart-log \- Send NVMe SMART log page request, returns result and log
.SH "SYNOPSIS"
.sp
.nf
\fInvme smart\-log\fR <device> [\-\-namespace\-id=<nsid> | \-n <nsid>]
                        [\-\-raw\-binary | \-b]
                        [\-\-output\-format=<fmt> | \-o <fmt>]
.fi
.SH "DESCRIPTION"
.sp
Retrieves the NVMe SMART log page from an NVMe device and provides the returned structure\&.
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1)\&.
.sp
On success, the returned smart log structure may be returned in one of several ways depending on the option flags; the structure may parsed by the program and printed in a readable format or the raw buffer may be printed to stdout for another program to parse\&.
.SH "OPTIONS"
.PP
\-n <nsid>, \-\-namespace\-id=<nsid>
.RS 4
Retrieve the SMART log for the given nsid\&. This is optional and its success may depend on the device\(cqs capabilities to provide this log on a per\-namespace basis (see the NVMe Identify Controller for this capability)\&. The default nsid to use is 0xffffffff for the device global SMART log\&.
.RE
.PP
\-b, \-\-raw\-binary
.RS 4
Print the raw SMART log buffer to stdout\&.
.RE
.PP
\-o <format>, \-\-output\-format=<format>
.RS 4
Set the reporting format to
\fInormal\fR,
\fIjson\fR, or
\fIbinary\fR\&. Only one output format can be used at a time\&.
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Print the SMART log page in a human readable format:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme smart\-log /dev/nvme0
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Print the raw SMART log to a file:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme smart\-log /dev/nvme0 \-\-raw\-binary > smart_log\&.raw
.fi
.if n \{\
.RE
.\}
.sp
It is probably a bad idea to not redirect stdout when using this mode\&.
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite
  070701015D6DC1000081A4000003E80000006400000001642C0FB600004CE4000000000000004A00000000000000000000002B00000000nvme-cli/Documentation/nvme-smart-log.html    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-smart-log(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-smart-log(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-smart-log -
   Send NVMe SMART log page request, returns result and log
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme smart-log</em> &lt;device&gt; [--namespace-id=&lt;nsid&gt; | -n &lt;nsid&gt;]
                        [--raw-binary | -b]
                        [--output-format=&lt;fmt&gt; | -o &lt;fmt&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>Retrieves the NVMe SMART log page from an NVMe device and provides the returned structure.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).</p></div>
<div class="paragraph"><p>On success, the returned smart log structure may be returned in one of
several ways depending on the option flags; the structure may parsed by
the program and printed in a readable format or the raw buffer may be
printed to stdout for another program to parse.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-n &lt;nsid&gt;
</dt>
<dt class="hdlist1">
--namespace-id=&lt;nsid&gt;
</dt>
<dd>
<p>
        Retrieve the SMART log for the given nsid. This is optional
        and its success may depend on the device&#8217;s capabilities to
        provide this log on a per-namespace basis (see the NVMe Identify
        Controller for this capability). The default nsid to use is
        0xffffffff for the device global SMART log.
</p>
</dd>
<dt class="hdlist1">
-b
</dt>
<dt class="hdlist1">
--raw-binary
</dt>
<dd>
<p>
        Print the raw SMART log buffer to stdout.
</p>
</dd>
<dt class="hdlist1">
-o &lt;format&gt;
</dt>
<dt class="hdlist1">
--output-format=&lt;format&gt;
</dt>
<dd>
<p>
              Set the reporting format to <em>normal</em>, <em>json</em>, or
              <em>binary</em>. Only one output format can be used at a time.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Print the SMART log page in a human readable format:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme smart-log /dev/nvme0</code></pre>
</div></div>
</li>
<li>
<p>
Print the raw SMART log to a file:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme smart-log /dev/nvme0 --raw-binary &gt; smart_log.raw</code></pre>
</div></div>
<div class="paragraph"><p>It is probably a bad idea to not redirect stdout when using this mode.</p></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
070701015D6DC2000081A4000003E80000006400000001642C0FB600000705000000000000004A00000000000000000000002E00000000nvme-cli/Documentation/nvme-subsystem-reset.1 '\" t
.\"     Title: nvme-subsystem-reset
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-SUBSYSTEM\-RES" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-subsystem-reset \- Reset the nvme subsystem\&.
.SH "SYNOPSIS"
.sp
.nf
\fInvme subsystem\-reset\fR <device>
.fi
.SH "DESCRIPTION"
.sp
Requests NVMe subsystem reset\&. The <device> param is mandatory and must be an NVMe character device (ex: /dev/nvme0)\&.
.SH "OPTIONS"
.sp
None
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Resets the subsystem\&.
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme subsystem\-reset /dev/nvme0
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite
   070701015D6DC3000081A4000003E80000006400000001642C0FB600004591000000000000004A00000000000000000000003100000000nvme-cli/Documentation/nvme-subsystem-reset.html  <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-subsystem-reset(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-subsystem-reset(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-subsystem-reset -
   Reset the nvme subsystem.
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme subsystem-reset</em> &lt;device&gt;</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>Requests NVMe subsystem reset. The &lt;device&gt; param is mandatory and must
be an NVMe character device (ex: /dev/nvme0).</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="paragraph"><p>None</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Resets the subsystem.
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme subsystem-reset /dev/nvme0</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
   070701015D6DC4000081A4000003E80000006400000001642C0FB6000008DE000000000000004A00000000000000000000003200000000nvme-cli/Documentation/nvme-supported-log-pages.1 '\" t
.\"     Title: nvme-supported-log-pages
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-SUPPORTED\-LOG" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-supported-log-pages \- Send NVMe Supported Log pages request, returns result and log
.SH "SYNOPSIS"
.sp
.nf
\fInvme supported\-log\-pages\fR <device> [\-\-output\-format=<fmt> | \-o <fmt>]
                            [\-\-verbose | \-v]
.fi
.SH "DESCRIPTION"
.sp
Retrieves the NVMe supported log pages details from an NVMe device and provides the returned structure\&.
.sp
The <device> parameter is mandatory and should be the NVMe character device (ex: /dev/nvme0)\&.
.sp
On success, the returned supported log pages log structure will be printed for each command that is supported\&.
.SH "OPTIONS"
.PP
\-o <format>, \-\-output\-format=<format>
.RS 4
This option will set the reporting format to normal, json, or binary\&. Only one output format can be used at a time\&.
.RE
.PP
\-v, \-\-verbose
.RS 4
Show more information including LID Supported (LSUPP) and Index Offset Supported (IOP) details\&.
.RE
.SH "EXAMPLES"
.sp
No examples provided yet\&.
.SH "NVME"
.sp
Part of the nvme\-user suite
  070701015D6DC5000081A4000003E80000006400000001642C0FB60000486C000000000000004A00000000000000000000003500000000nvme-cli/Documentation/nvme-supported-log-pages.html  <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-supported-log-pages(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-supported-log-pages(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-supported-log-pages -
   Send NVMe Supported Log pages request, returns result and log
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme supported-log-pages</em> &lt;device&gt; [--output-format=&lt;fmt&gt; | -o &lt;fmt&gt;]
                            [--verbose | -v]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>Retrieves the NVMe supported log pages details from an NVMe device and provides
the returned structure.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and should be the NVMe character
device (ex: /dev/nvme0).</p></div>
<div class="paragraph"><p>On success, the returned supported log pages log structure will be printed
for each command that is supported.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-o &lt;format&gt;
</dt>
<dt class="hdlist1">
--output-format=&lt;format&gt;
</dt>
<dd>
<p>
        This option will set the reporting format to normal, json, or binary.
        Only one output format can be used at a time.
</p>
</dd>
<dt class="hdlist1">
-v
</dt>
<dt class="hdlist1">
--verbose
</dt>
<dd>
<p>
        Show more information including LID Supported (LSUPP) and Index Offset Supported (IOP) details.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="paragraph"><p>No examples provided yet.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
070701015D6DC6000081A4000003E80000006400000001642C0FB6000003F3000000000000004A00000000000000000000003400000000nvme-cli/Documentation/nvme-supported-log-pages.txt   nvme-supported-log-pages(1)
===========================

NAME
----
nvme-supported-log-pages - Send NVMe Supported Log pages request, returns result and log

SYNOPSIS
--------
[verse]
'nvme supported-log-pages' <device> [--output-format=<fmt> | -o <fmt>]
                            [--verbose | -v]

DESCRIPTION
-----------
Retrieves the NVMe supported log pages details from an NVMe device and provides
the returned structure.

The <device> parameter is mandatory and should be the NVMe character
device (ex: /dev/nvme0).

On success, the returned supported log pages log structure will be printed
for each command that is supported.

OPTIONS
-------

-o <format>::
--output-format=<format>::
	This option will set the reporting format to normal, json, or binary.
	Only one output format can be used at a time.

-v::
--verbose::
	Show more information including LID Supported (LSUPP) and Index Offset Supported (IOP) details.

EXAMPLES
--------
No examples provided yet.

NVME
----
Part of the nvme-user suite
 070701015D6DC7000081A4000003E80000006400000001642C0FB600000B49000000000000004A00000000000000000000002C00000000nvme-cli/Documentation/nvme-telemetry-log.1   '\" t
.\"     Title: nvme-telemetry-log
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-TELEMETRY\-LOG" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-telemetry-log \- Retrieves a Telemetry Host\-Initiated log page from an NVMe device
.SH "SYNOPSIS"
.sp
.nf
\fInvme telemetry\-log\fR <device> [\-\-output\-file=<file> | \-o <file>]
                      [\-\-host\-generate=<gen> | \-g <gen>]
.fi
.SH "DESCRIPTION"
.sp
Retrieves an Telemetry Host\-Initiated log page from an NVMe device and provides the returned structure\&.
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1)\&.
.sp
On success, the returned log structure will be in raw binary format \fIonly\fR with \-\-output\-file option which is mandatory\&.
.SH "OPTIONS"
.PP
\-o <file>, \-\-output\-file=<file>
.RS 4
File name to which raw binary data will be saved to\&.
.RE
.PP
\-g <gen>, \-\-host\-generate=<gen>
.RS 4
If set to 1, controller shall capture the Telemetry Host\-Initiated data representing the internal state of the controller at the time the associated Get Log Page command is processed\&. If cleated to 0, controller shall
\fInot\fR
update this data\&.
.RE
.PP
\-d <da>, \-\-data\-area=<da>
.RS 4
Retrieves the specific data area requested\&. Valid inputs are 1,2,3,4\&. If this option is not specified, the default value is 3, since data area 4 may not be supported\&.
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Retrieve Telemetry Host\-Initiated data to telemetry_log\&.bin
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme telemetry\-log /dev/nvme0 \-\-output\-file=telemetry_log\&.bin
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite
   070701015D6DC8000081A4000003E80000006400000001642C0FB600004B4A000000000000004A00000000000000000000002F00000000nvme-cli/Documentation/nvme-telemetry-log.html    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-telemetry-log(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-telemetry-log(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-telemetry-log -
   Retrieves a Telemetry Host-Initiated log page from an NVMe device
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme telemetry-log</em> &lt;device&gt; [--output-file=&lt;file&gt; | -o &lt;file&gt;]
                      [--host-generate=&lt;gen&gt; | -g &lt;gen&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>Retrieves an Telemetry Host-Initiated log page from an NVMe device and provides
the returned structure.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).</p></div>
<div class="paragraph"><p>On success, the returned log structure will be in raw binary format <em>only</em> with
--output-file option which is mandatory.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-o &lt;file&gt;
</dt>
<dt class="hdlist1">
--output-file=&lt;file&gt;
</dt>
<dd>
<p>
        File name to which raw binary data will be saved to.
</p>
</dd>
<dt class="hdlist1">
-g &lt;gen&gt;
</dt>
<dt class="hdlist1">
--host-generate=&lt;gen&gt;
</dt>
<dd>
<p>
        If set to 1, controller shall capture the Telemetry Host-Initiated data
        representing the internal state of the controller at the time the
        associated Get Log Page command is processed.
        If cleated to 0, controller shall <em>not</em> update this data.
</p>
</dd>
<dt class="hdlist1">
-d &lt;da&gt;
</dt>
<dt class="hdlist1">
--data-area=&lt;da&gt;
</dt>
<dd>
<p>
        Retrieves the specific data area requested. Valid inputs are 1,2,3,4. If
        this option is not specified, the default value is 3, since data area
        4 may not be supported.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Retrieve Telemetry Host-Initiated data to telemetry_log.bin
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme telemetry-log /dev/nvme0 --output-file=telemetry_log.bin</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
  070701015D6DC9000081A4000003E80000006400000001642C0FB6000007EB000000000000004A00000000000000000000004400000000nvme-cli/Documentation/nvme-toshiba-clear-pcie-correctable-errors.1   '\" t
.\"     Title: nvme-toshiba-clear-pcie-correctable-errors
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-TOSHIBA\-CLEAR" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-toshiba-clear-pcie-correctable-errors \- Reset the PCIe correctable errors count to zero\&.
.SH "SYNOPSIS"
.sp
.nf
\*(Aqnvme toshiba clear\-pcie\-correctable\-errors \*(Aq <device>
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, sends the Toshiba clear PCIe correctable errors request\&.
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1)\&.
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Clear the PCIe correctable errors count:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme toshiba clear\-pcie\-correctable\-errors /dev/nvme0
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite
 070701015D6DCA000081A4000003E80000006400000001642C0FB600004630000000000000004A00000000000000000000004700000000nvme-cli/Documentation/nvme-toshiba-clear-pcie-correctable-errors.html    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-toshiba-clear-pcie-correctable-errors(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-toshiba-clear-pcie-correctable-errors(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-toshiba-clear-pcie-correctable-errors -
   Reset the PCIe correctable errors count to zero.
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content">'nvme toshiba clear-pcie-correctable-errors ' &lt;device&gt;</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, sends the Toshiba clear PCIe correctable errors
request.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe
character device (ex: /dev/nvme0), or a namespace block device (ex:
/dev/nvme0n1).</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Clear the PCIe correctable errors count:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme toshiba clear-pcie-correctable-errors /dev/nvme0</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
070701015D6DCB000081A4000003E80000006400000001642C0FB600000C54000000000000004A00000000000000000000003600000000nvme-cli/Documentation/nvme-toshiba-vs-internal-log.1 '\" t
.\"     Title: nvme-toshiba-vs-internal-log
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-TOSHIBA\-VS\-I" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-toshiba-vs-internal-log \- Retrieve a Toshiba device\*(Aqs vendor specific internal log and either save to file or dump the contents\&.
.SH "SYNOPSIS"
.sp
.nf
\*(Aqnvme toshiba vs\-internal\-log \*(Aq <device>
                [\-\-output\-file=<FILE>, \-o <FILE>] (optional)
                [\-\-saved\-log, \-s] (optional)
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, sends the Toshiba internal device log request and either saves the result to a file or dumps the content to stdout\&.
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1)\&.
.sp
The log is associated with the controller rather than any namespaces\&.
.sp
Two logs exist, the current log and the previous log\&.
.sp
This will only work on Toshiba devices supporting this feature\&.
.sp
Note: The logs are quite large \- typically 100\(cqs of MB\&. This command can take several minutes to complete\&. A progress runner is included when data is written to file and a page count is included in the stdout dump\&.
.SH "OPTIONS"
.PP
\-o <FILE>, \-\-output\-file=<FILE>
.RS 4
Output binary file\&. Defaults to text\-formatted dump to stdout
.RE
.PP
\-p, \-\-prev\-log
.RS 4
Use previous log contents\&. Defaults to the current log contents\&.
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Get the current log from the device and dump it to stdout:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme toshiba internal\-log /dev/nvme0
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Get the previous log from the device and save to a binary file:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme toshiba internal\-log /dev/nvme0 \-\-output\-file=log\&.bin \-\-prev\-log
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite
070701015D6DCC000081A4000003E80000006400000001642C0FB600004C04000000000000004A00000000000000000000003900000000nvme-cli/Documentation/nvme-toshiba-vs-internal-log.html  <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-toshiba-vs-internal-log(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-toshiba-vs-internal-log(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-toshiba-vs-internal-log -
   Retrieve a Toshiba device's vendor specific internal log and either save to file or dump the contents.
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content">'nvme toshiba vs-internal-log ' &lt;device&gt;
                [--output-file=&lt;FILE&gt;, -o &lt;FILE&gt;] (optional)
                [--saved-log, -s] (optional)</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, sends the Toshiba internal device log
request and either saves the result to a file or dumps the content to stdout.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe
character device (ex: /dev/nvme0), or a namespace block device (ex:
/dev/nvme0n1).</p></div>
<div class="paragraph"><p>The log is associated with the controller rather than any
namespaces.</p></div>
<div class="paragraph"><p>Two logs exist, the current log and the previous log.</p></div>
<div class="paragraph"><p>This will only work on Toshiba devices supporting this feature.</p></div>
<div class="paragraph"><p>Note: The logs are quite large - typically 100&#8217;s of MB. This command can take several minutes to complete.
A progress runner is included when data is written to file and a page count is included in the stdout dump.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-o &lt;FILE&gt;
</dt>
<dt class="hdlist1">
--output-file=&lt;FILE&gt;
</dt>
<dd>
<p>
        Output binary file. Defaults to text-formatted dump to stdout
</p>
</dd>
<dt class="hdlist1">
-p
</dt>
<dt class="hdlist1">
--prev-log
</dt>
<dd>
<p>
        Use previous log contents. Defaults to the current log contents.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Get the current log from the device and dump it to stdout:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme toshiba internal-log /dev/nvme0</code></pre>
</div></div>
</li>
<li>
<p>
Get the previous log from the device and save to a binary file:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme toshiba internal-log /dev/nvme0 --output-file=log.bin --prev-log</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
070701015D6DCD000081A4000003E80000006400000001642C0FB600000BF5000000000000004A00000000000000000000003700000000nvme-cli/Documentation/nvme-toshiba-vs-smart-add-log.1    '\" t
.\"     Title: nvme-toshiba-vs-smart-add-log
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-TOSHIBA\-VS\-S" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-toshiba-vs-smart-add-log \- Retrieve a Toshiba device\*(Aqs vendor specific extended SMART log page contents and either save to file or dump the contents\&.
.SH "SYNOPSIS"
.sp
.nf
\*(Aqnvme toshiba vs\-smart\-add\-log \*(Aq <device> [\-\-log=<NUM>, \-l <NUM>]
                [\-\-namespace\-id=<NUM>, \-n <NUM>]
                [\-\-output\-file=<FILE>, \-o <FILE>]
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, sends the Toshiba vendor log request and either saves the result to a file or dumps the content to stdout\&.
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1)\&.
.sp
The log contents may be associated with the controller, in which case the namespace parameter is ignored\&.
.sp
Two logs exist, page 0xC0 (log page directory) and page 0xCA (vendor log page)
.sp
This will only work on Toshiba devices supporting this feature\&.
.SH "OPTIONS"
.PP
\-l <NUM>, \-\-log=<NUM>
.RS 4
Log page: 0xC0 or 0xCA (defaults to 0xCA)
.RE
.PP
\-n <NUM>, \-\-namespace\-id=<NUM>, \-o <FILE>, \-\-output\-file=<FILE>
.RS 4
Output binary file\&. Defaults to text\-formatted dump to stdout
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Get the current log from the device and dumps it to stdout:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme toshiba vs\-smart\-add\-log /dev/nvme0
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Get the contents of log page 0xC0 from the device and save to a binary file:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme toshiba vs\-smart\-add\-log /dev/nvme0 \-\-output\-file=log\&.bin \-\-log=0xC0
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite
   070701015D6DCE000081A4000003E80000006400000001642C0FB600004BEE000000000000004A00000000000000000000003A00000000nvme-cli/Documentation/nvme-toshiba-vs-smart-add-log.html <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-toshiba-vs-smart-add-log(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-toshiba-vs-smart-add-log(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-toshiba-vs-smart-add-log -
   Retrieve a Toshiba device's vendor specific extended SMART log page contents and either save to file or dump the contents.
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content">'nvme toshiba vs-smart-add-log ' &lt;device&gt; [--log=&lt;NUM&gt;, -l &lt;NUM&gt;]
                [--namespace-id=&lt;NUM&gt;, -n &lt;NUM&gt;]
                [--output-file=&lt;FILE&gt;, -o &lt;FILE&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, sends the Toshiba vendor log
request and either saves the result to a file or dumps the content to stdout.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe
character device (ex: /dev/nvme0), or a namespace block device (ex:
/dev/nvme0n1).</p></div>
<div class="paragraph"><p>The log contents may be associated with the controller, in which case the namespace parameter is ignored.</p></div>
<div class="paragraph"><p>Two logs exist, page 0xC0 (log page directory) and page 0xCA (vendor log page)</p></div>
<div class="paragraph"><p>This will only work on Toshiba devices supporting this feature.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-l &lt;NUM&gt;
</dt>
<dt class="hdlist1">
--log=&lt;NUM&gt;
</dt>
<dd>
<p>
        Log page: 0xC0 or 0xCA  (defaults to 0xCA)
</p>
</dd>
<dt class="hdlist1">
-n &lt;NUM&gt;
</dt>
<dt class="hdlist1">
--namespace-id=&lt;NUM&gt;
</dt>
<dt class="hdlist1">
-o &lt;FILE&gt;
</dt>
<dt class="hdlist1">
--output-file=&lt;FILE&gt;
</dt>
<dd>
<p>
        Output binary file. Defaults to text-formatted dump to stdout
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Get the current log from the device and dumps it to stdout:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme toshiba vs-smart-add-log /dev/nvme0</code></pre>
</div></div>
</li>
<li>
<p>
Get the contents of log page 0xC0 from the device and save to a binary file:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme toshiba vs-smart-add-log /dev/nvme0 --output-file=log.bin --log=0xC0</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
  070701015D6DCF000081A4000003E80000006400000001642C0FB600000826000000000000004A00000000000000000000003100000000nvme-cli/Documentation/nvme-transcend-badblock.1  '\" t
.\"     Title: nvme-transcend-badblock
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-TRANSCEND\-BAD" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-transcend-badblock \- Retrieve Transcend NVMe device\*(Aqs bad blocks\&.
.SH "SYNOPSIS"
.sp
.nf
\fInvme transcend badblock\fR <device>
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, sends the Transcend vendor command and return the bad block of the device\&.
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1)\&.
.sp
On success, the returned value would print the amount of bad blocks\&.
.SH "OPTIONS"
.sp
none
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Print the Transcend device\(cqs bad blocks in a human readable format:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme transcend badblock /dev/nvme0
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite
  070701015D6DD0000081A4000003E80000006400000001642C0FB6000046F8000000000000004A00000000000000000000003400000000nvme-cli/Documentation/nvme-transcend-badblock.html   <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-transcend-badblock(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-transcend-badblock(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-transcend-badblock -
   Retrieve Transcend NVMe device's bad blocks.
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme transcend badblock</em> &lt;device&gt;</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, sends the Transcend vendor command and return the bad block of the device.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).</p></div>
<div class="paragraph"><p>On success, the returned value would print the amount of bad blocks.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="paragraph"><p>none</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Print the Transcend device&#8217;s bad blocks in a human readable format:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme transcend badblock /dev/nvme0</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
070701015D6DD1000081A4000003E80000006400000001642C0FB600000850000000000000004A00000000000000000000003400000000nvme-cli/Documentation/nvme-transcend-healthvalue.1   '\" t
.\"     Title: nvme-transcend-healthvalue
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-TRANSCEND\-HEA" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-transcend-healthvalue \- Use NVMe SMART table to analyze the health value of Transcend device\&.
.SH "SYNOPSIS"
.sp
.nf
\fInvme transcend healthvalue\fR <device>
.fi
.SH "DESCRIPTION"
.sp
Retrieves the NVMe Device SMART log page from the Transcend device and evaluate health status of Transcend device\&.
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1)\&.
.sp
On success, the returned value would print health percentage value\&.
.SH "OPTIONS"
.sp
none
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Print the Transcend Device health value in a human readable format:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme transcend healthvalue /dev/nvme0
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite
070701015D6DD2000081A4000003E80000006400000001642C0FB600004726000000000000004A00000000000000000000003700000000nvme-cli/Documentation/nvme-transcend-healthvalue.html    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-transcend-healthvalue(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-transcend-healthvalue(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-transcend-healthvalue -
   Use NVMe SMART table to analyze the health value of Transcend device.
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme transcend healthvalue</em> &lt;device&gt;</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>Retrieves the NVMe Device SMART log page from the Transcend device and evaluate health status of Transcend device.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).</p></div>
<div class="paragraph"><p>On success, the returned value would print health percentage value.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="paragraph"><p>none</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Print the Transcend Device health value in a human readable format:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme transcend healthvalue /dev/nvme0</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
  070701015D6DD3000081A4000003E80000006400000001642C0FB600000E83000000000000004A00000000000000000000002500000000nvme-cli/Documentation/nvme-verify.1  '\" t
.\"     Title: nvme-verify
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-VERIFY" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-verify \- Send an NVMe Verify command, return results
.SH "SYNOPSIS"
.sp
.nf
\fInvme\-verify\fR <device> [\-\-namespace\-id=<nsid> | \-n <nsid>]
            [\-\-start\-block=<slba> | \-s <slba>]
            [\-\-block\-count=<nlb> | \-c <nlb>]
            [\-\-limited\-retry | \-l]
            [\-\-force\-unit\-access | \-f]
            [\-\-prinfo=<prinfo> | \-p <prinfo>]
            [\-\-ref\-tag=<reftag> | \-r <reftag>]
            [\-\-app\-tag\-mask=<appmask> | \-m <appmask>]
            [\-\-app\-tag=<apptag> | \-a <apptag>]
            [\-\-storage\-tag<storage\-tag> | \-S <storage\-tag>]
            [\-\-storage\-tag\-check | \-C]
.fi
.SH "DESCRIPTION"
.sp
The Verify command verifies the integrity of the stored information by reading data and metadata\&.
.SH "OPTIONS"
.PP
\-\-namespace\-id=<nsid>, \-n <nsid>
.RS 4
Namespace ID use in the command\&.
.RE
.PP
\-\-start\-block=<slba>, \-s <slba>
.RS 4
Start block address\&.
.RE
.PP
\-\-block\-count=<nlb>, \-c <nlb>
.RS 4
Number of logical blocks to Verify\&.
.RE
.PP
\-\-limited\-retry, \-l
.RS 4
Sets the limited retry flag\&.
.RE
.PP
\-\-force\-unit\-access, \-f
.RS 4
Set the force\-unit access flag\&.
.RE
.PP
\-\-prinfo=<prinfo>, \-p <prinfo>
.RS 4
Protection Information field definition\&.
.TS
allbox tab(:);
lt lt
lt lt
lt lt
lt lt
lt lt
lt lt.
T{
Bit
T}:T{
Description
T}
T{
3
T}:T{
PRACT: Protection Information Action\&. When set to 1, PI is stripped/inserted on read/write when the block format\(cqs metadata size is 8\&. When set to 0, metadata is passes\&.
T}
T{
2:0
T}:T{
PRCHK: Protection Information Check:
T}
T{
2
T}:T{
Set to 1 enables checking the guard tag
T}
T{
1
T}:T{
Set to 1 enables checking the application tag
T}
T{
0
T}:T{
Set to 1 enables checking the reference tag
T}
.TE
.sp 1
.RE
.PP
\-\-ref\-tag=<reftag>, \-r <reftag>
.RS 4
Optional reftag when used with protection information\&.
.RE
.PP
\-\-app\-tag\-mask=<appmask>, \-m <appmask>
.RS 4
Optional application tag mask when used with protection information\&.
.RE
.PP
\-\-app\-tag=<apptag>, \-a <apptag>
.RS 4
Optional application tag when used with protection information\&.
.RE
.PP
\-S <storage\-tag>, \-\-storage\-tag=<storage\-tag>
.RS 4
Variable Sized Expected Logical Block Storage Tag(ELBST)\&.
.RE
.PP
\-C, \-\-storage\-tag\-check
.RS 4
This flag enables Storage Tag field checking as part of Verify operation\&.
.RE
.SH "EXAMPLES"
.sp
No examples yet\&.
.SH "NVME"
.sp
Part of the nvme\-user suite
 070701015D6DD4000081A4000003E80000006400000001642C0FB6000053F6000000000000004A00000000000000000000002800000000nvme-cli/Documentation/nvme-verify.html   <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-verify(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-verify(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-verify -
   Send an NVMe Verify command, return results
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme-verify</em> &lt;device&gt; [--namespace-id=&lt;nsid&gt; | -n &lt;nsid&gt;]
            [--start-block=&lt;slba&gt; | -s &lt;slba&gt;]
            [--block-count=&lt;nlb&gt; | -c &lt;nlb&gt;]
            [--limited-retry | -l]
            [--force-unit-access | -f]
            [--prinfo=&lt;prinfo&gt; | -p &lt;prinfo&gt;]
            [--ref-tag=&lt;reftag&gt; | -r &lt;reftag&gt;]
            [--app-tag-mask=&lt;appmask&gt; | -m &lt;appmask&gt;]
            [--app-tag=&lt;apptag&gt; | -a &lt;apptag&gt;]
            [--storage-tag&lt;storage-tag&gt; | -S &lt;storage-tag&gt;]
            [--storage-tag-check | -C]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>The Verify command verifies the integrity of the stored information by
reading data and metadata.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
--namespace-id=&lt;nsid&gt;
</dt>
<dt class="hdlist1">
-n &lt;nsid&gt;
</dt>
<dd>
<p>
        Namespace ID use in the command.
</p>
</dd>
<dt class="hdlist1">
--start-block=&lt;slba&gt;
</dt>
<dt class="hdlist1">
-s &lt;slba&gt;
</dt>
<dd>
<p>
        Start block address.
</p>
</dd>
<dt class="hdlist1">
--block-count=&lt;nlb&gt;
</dt>
<dt class="hdlist1">
-c &lt;nlb&gt;
</dt>
<dd>
<p>
        Number of logical blocks to Verify.
</p>
</dd>
<dt class="hdlist1">
--limited-retry
</dt>
<dt class="hdlist1">
-l
</dt>
<dd>
<p>
        Sets the limited retry flag.
</p>
</dd>
<dt class="hdlist1">
--force-unit-access
</dt>
<dt class="hdlist1">
-f
</dt>
<dd>
<p>
        Set the force-unit access flag.
</p>
</dd>
<dt class="hdlist1">
--prinfo=&lt;prinfo&gt;
</dt>
<dt class="hdlist1">
-p &lt;prinfo&gt;
</dt>
<dd>
<p>
        Protection Information field definition.
</p>
<div class="tableblock">
<table rules="all"
width="100%"
frame="border"
cellspacing="0" cellpadding="4">
<col width="50%" />
<col width="50%" />
<tbody>
<tr>
<td align="left" valign="top"><p class="table">Bit</p></td>
<td align="left" valign="top"><p class="table">Description</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">3</p></td>
<td align="left" valign="top"><p class="table">PRACT: Protection Information Action. When set to 1, PI is stripped/inserted
on read/write when the block format&#8217;s metadata size is 8. When set to 0,
metadata is passes.</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">2:0</p></td>
<td align="left" valign="top"><p class="table">PRCHK: Protection Information Check:</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">2</p></td>
<td align="left" valign="top"><p class="table">Set to 1 enables checking the guard tag</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">1</p></td>
<td align="left" valign="top"><p class="table">Set to 1 enables checking the application tag</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">0</p></td>
<td align="left" valign="top"><p class="table">Set to 1 enables checking the reference tag</p></td>
</tr>
</tbody>
</table>
</div>
</dd>
<dt class="hdlist1">
--ref-tag=&lt;reftag&gt;
</dt>
<dt class="hdlist1">
-r &lt;reftag&gt;
</dt>
<dd>
<p>
        Optional reftag when used with protection information.
</p>
</dd>
<dt class="hdlist1">
--app-tag-mask=&lt;appmask&gt;
</dt>
<dt class="hdlist1">
-m &lt;appmask&gt;
</dt>
<dd>
<p>
        Optional application tag mask when used with protection information.
</p>
</dd>
<dt class="hdlist1">
--app-tag=&lt;apptag&gt;
</dt>
<dt class="hdlist1">
-a &lt;apptag&gt;
</dt>
<dd>
<p>
        Optional application tag when used with protection information.
</p>
</dd>
<dt class="hdlist1">
-S &lt;storage-tag&gt;
</dt>
<dt class="hdlist1">
--storage-tag=&lt;storage-tag&gt;
</dt>
<dd>
<p>
        Variable Sized Expected Logical Block Storage Tag(ELBST).
</p>
</dd>
<dt class="hdlist1">
-C
</dt>
<dt class="hdlist1">
--storage-tag-check
</dt>
<dd>
<p>
        This flag enables Storage Tag field checking as part of Verify operation.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="paragraph"><p>No examples yet.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
  070701015D6DD5000081A4000003E80000006400000001642C0FB600000886000000000000004A00000000000000000000002700000000nvme-cli/Documentation/nvme-verify.txt    nvme-verify(1)
==============

NAME
----
nvme-verify - Send an NVMe Verify command, return results

SYNOPSIS
--------
[verse]
'nvme-verify' <device> [--namespace-id=<nsid> | -n <nsid>]
            [--start-block=<slba> | -s <slba>]
            [--block-count=<nlb> | -c <nlb>]
            [--limited-retry | -l]
            [--force-unit-access | -f]
            [--prinfo=<prinfo> | -p <prinfo>]
            [--ref-tag=<reftag> | -r <reftag>]
            [--app-tag-mask=<appmask> | -m <appmask>]
            [--app-tag=<apptag> | -a <apptag>]
            [--storage-tag<storage-tag> | -S <storage-tag>]
            [--storage-tag-check | -C]

DESCRIPTION
-----------
The Verify command verifies the integrity of the stored information by
reading data and metadata.

OPTIONS
-------
--namespace-id=<nsid>::
-n <nsid>::
	Namespace ID use in the command.

--start-block=<slba>::
-s <slba>::
	Start block address.

--block-count=<nlb>::
-c <nlb>::
	Number of logical blocks to Verify.

--limited-retry::
-l::
	Sets the limited retry flag.

--force-unit-access::
-f::
	Set the force-unit access flag.

--prinfo=<prinfo>::
-p <prinfo>::
	Protection Information field definition.
+
[]
|=================
|Bit|Description
|3|PRACT: Protection Information Action. When set to 1, PI is stripped/inserted
on read/write when the block format's metadata size is 8. When set to 0,
metadata is passes.
|2:0|PRCHK: Protection Information Check:
|2|Set to 1 enables checking the guard tag
|1|Set to 1 enables checking the application tag
|0|Set to 1 enables checking the reference tag
|=================

--ref-tag=<reftag>::
-r <reftag>::
	Optional reftag when used with protection information.

--app-tag-mask=<appmask>::
-m <appmask>::
	Optional application tag mask when used with protection information.

--app-tag=<apptag>::
-a <apptag>::
	Optional application tag when used with protection information.

-S <storage-tag>::
--storage-tag=<storage-tag>::
	Variable Sized Expected Logical Block Storage Tag(ELBST).

-C::
--storage-tag-check::
	This flag enables Storage Tag field checking as part of Verify operation.

EXAMPLES
--------
No examples yet.

NVME
----
Part of the nvme-user suite
  070701015D6DD6000081A4000003E80000006400000001642C0FB60000119E000000000000004A00000000000000000000003F00000000nvme-cli/Documentation/nvme-virtium-save-smart-to-vtview-log.1    '\" t
.\"     Title: nvme-virtium-save-smart-to-vtview-log
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-VIRTIUM\-SAVE\" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-virtium-save-smart-to-vtview-log \- Periodically save smart attributes into a log file (csv format)\&.
.SH "SYNOPSIS"
.sp
.nf
\fInvme virtium save\-smart\-to\-vtview\-log\fR <device> [\-\-run\-time=<NUM> | \-r <NUM>]
                        [\-\-freq=<NUM> | \-f <NUM>]
                        [\-\-output\-file=<FILE> | \-o <FILE>]
                        [\-\-test\-name=<NAME> | \-n <NAME>]
.fi
.SH "DESCRIPTION"
.sp
This command automates the process of collecting SMART data periodically and saving the data in a ready\-to\-analyze format\&. Each entry is saved with timestamp and in csv format\&. Users can use excel to analyze the data\&. Some examples of use cases are collecting SMART data for temperature characterization, collecting data to calculate endurance, or collecting SMART data during a test or during normal operation\&.
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1)\&.
.sp
On success, the command generates a log file, which contains an entry for identify device (current features & settings) and periodic entries of SMART data\&.
.sp
This command runs for the time specified by the option <run\-time>, and collects SMART data at the frequency specified by the option <freq>\&. If the output file name is not specified, this command will generate a file name that include model string and serial number of the device\&.
.sp
If the test\-name option is specified, it will be recorded in the log file and be used as part of the log file name\&.
.SH "OPTIONS"
.PP
\-r <NUM>, \-\-run\-time=<NUM>
.RS 4
(optional) Number of hours to log data (default = 20 hours)
.RE
.PP
\-f <NUM>, \-\-freq=<NUM>
.RS 4
(optional) How often you want to log SMART data (0\&.25 = 15\*(Aq , 0\&.5 = 30\*(Aq , 1 = 1 hour, 2 = 2 hours, etc\&.)\&. Default = 10 hours\&.
.RE
.PP
\-o <FILE>, \-\-output\-file=<FILE>
.RS 4
(optional) Name of the log file (give it a name that easy for you to remember what the test is)\&. You can leave it blank too, the file name will be generated as <model string>\-<serial number>\-<test name>\&.txt\&.
.RE
.PP
\-n <NAME>, \-\-test\-name=<NAME>
.RS 4
(optional) Name of the test you are doing\&. We use this string as part of the name of the log file\&.
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Temperature characterization:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme virtium save\-smart\-to\-vtview\-log /dev/yourDevice \-\-run\-time=100 \-\-record\-frequency=0\&.25 \-\-test\-name=burn\-in\-at\-(\-40)
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Endurance testing:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme virtium save\-smart\-to\-vtview\-log /dev/yourDevice \-\-run\-time=100 \-\-record\-frequency=1 \-\-test\-name=Endurance\-test\-JEDEG\-219\-workload
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Just logging: Default logging is run for 20 hours and log every 10 hours\&.
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme virtium save\-smart\-to\-vtview\-log /dev/yourDevice
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite
  070701015D6DD7000081A4000003E80000006400000001642C0FB600005205000000000000004A00000000000000000000004200000000nvme-cli/Documentation/nvme-virtium-save-smart-to-vtview-log.html <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-virtium-save-smart-to-vtview-log(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-virtium-save-smart-to-vtview-log(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-virtium-save-smart-to-vtview-log -
   Periodically save smart attributes into a log file (csv format).
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme virtium save-smart-to-vtview-log</em> &lt;device&gt; [--run-time=&lt;NUM&gt; | -r &lt;NUM&gt;]
                        [--freq=&lt;NUM&gt; | -f &lt;NUM&gt;]
                        [--output-file=&lt;FILE&gt; | -o &lt;FILE&gt;]
                        [--test-name=&lt;NAME&gt; | -n &lt;NAME&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>This command automates the process of collecting SMART data periodically and
saving the data in a ready-to-analyze format. Each entry is saved
with timestamp and in csv format. Users can use excel to analyze the data.
Some examples of use cases are collecting SMART data for temperature characterization,
collecting data to calculate endurance, or collecting SMART data during a test
or during normal operation.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).</p></div>
<div class="paragraph"><p>On success, the command generates a log file, which contains an entry for identify device
(current features &amp; settings) and periodic entries of SMART data.</p></div>
<div class="paragraph"><p>This command runs for the time specified by the option &lt;run-time&gt;, and collects SMART data
at the frequency specified by the option &lt;freq&gt;. If the output file name is not specified,
this command will generate a file name that include model string and serial number of the device.</p></div>
<div class="paragraph"><p>If the test-name option is specified, it will be recorded in the log file and be used as part
of the log file name.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-r &lt;NUM&gt;
</dt>
<dt class="hdlist1">
--run-time=&lt;NUM&gt;
</dt>
<dd>
<p>
        (optional) Number of hours to log data (default = 20 hours)
</p>
</dd>
<dt class="hdlist1">
-f &lt;NUM&gt;
</dt>
<dt class="hdlist1">
--freq=&lt;NUM&gt;
</dt>
<dd>
<p>
        (optional) How often you want to log SMART data
        (0.25 = 15' , 0.5 = 30' , 1 = 1 hour, 2 = 2 hours, etc.). Default = 10 hours.
</p>
</dd>
<dt class="hdlist1">
-o &lt;FILE&gt;
</dt>
<dt class="hdlist1">
--output-file=&lt;FILE&gt;
</dt>
<dd>
<p>
    (optional) Name of the log file (give it a name that easy for you to remember
        what the test is). You can leave it blank too, the file name will be generated
        as &lt;model string&gt;-&lt;serial number&gt;-&lt;test name&gt;.txt.
</p>
</dd>
<dt class="hdlist1">
-n &lt;NAME&gt;
</dt>
<dt class="hdlist1">
--test-name=&lt;NAME&gt;
</dt>
<dd>
<p>
    (optional) Name of the test you are doing. We use this string as part of the name of the log file.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Temperature characterization:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme virtium save-smart-to-vtview-log /dev/yourDevice --run-time=100 --record-frequency=0.25 --test-name=burn-in-at-(-40)</code></pre>
</div></div>
</li>
<li>
<p>
Endurance testing:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme virtium save-smart-to-vtview-log /dev/yourDevice --run-time=100 --record-frequency=1 --test-name=Endurance-test-JEDEG-219-workload</code></pre>
</div></div>
</li>
<li>
<p>
Just logging: Default logging is run for 20 hours and log every 10 hours.
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme virtium save-smart-to-vtview-log /dev/yourDevice</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
   070701015D6DD8000081A4000003E80000006400000001642C0FB60000088B000000000000004A00000000000000000000003400000000nvme-cli/Documentation/nvme-virtium-show-identify.1   '\" t
.\"     Title: nvme-virtium-show-identify
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-VIRTIUM\-SHOW\" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-virtium-show-identify \- Show a complete detail of identify device information in json format\&.
.SH "SYNOPSIS"
.sp
.nf
\fInvme virtium show\-identify\fR <device>
.fi
.SH "DESCRIPTION"
.sp
This command prints complete detail of the identify device information\&. The details include settings and description of each feature\&. The descriptions are based on NVM Express Revision 1\&.3c specification\&.
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1)\&.
.sp
On success, the command prints identify device in human readable format\&.
.SH "OPTIONS"
.sp
none
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Show Identify Device:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme virtium show\-identify /dev/nvme0n1
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite
 070701015D6DD9000081A4000003E80000006400000001642C0FB60000475B000000000000004A00000000000000000000003700000000nvme-cli/Documentation/nvme-virtium-show-identify.html    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-virtium-show-identify(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-virtium-show-identify(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-virtium-show-identify -
   Show a complete detail of identify device information in json format.
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme virtium show-identify</em> &lt;device&gt;</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>This command prints complete detail of the identify device information. The
details include settings and description of each feature. The descriptions are
based on NVM Express Revision 1.3c specification.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).</p></div>
<div class="paragraph"><p>On success, the command prints identify device in human readable format.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="paragraph"><p>none</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Show Identify Device:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme virtium show-identify /dev/nvme0n1</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
 070701015D6DDA000081A4000003E80000006400000001642C0FB600000EAB000000000000004A00000000000000000000002B00000000nvme-cli/Documentation/nvme-wdc-cap-diag.1    '\" t
.\"     Title: nvme-wdc-cap-diag
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-WDC\-CAP\-DIAG" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-wdc-cap-diag \- Retrieve WDC device\*(Aqs diagnostic log and save to file\&.
.SH "SYNOPSIS"
.sp
.nf
\fInvme wdc cap\-diag\fR <device> [\-\-output\-file=<FILE>, \-o <FILE>] [\-\-transfer\-size=<SIZE>, \-s <SIZE>]
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, sends the WDC Vendor Unique Capture\-Diagnostics request and saves the result to a file\&.
.sp
The <device> parameter is mandatory NVMe character device (ex: /dev/nvme0)\&.
.sp
This will only work on WDC devices supporting this feature\&. Results for any other device are undefined\&.
.SH "OPTIONS"
.PP
\-o <FILE>, \-\-output\-file=<FILE>
.RS 4
Output file; defaults to device serial number followed by "cap_diag" suffix
.RE
.PP
\-s <SIZE>, \-\-transfer\-size=<SIZE>
.RS 4
Transfer size; defaults to 0x10000 (65536 decimal) bytes
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Gets the capture diagnostics log from the device and saves to default file in current directory (e\&.g\&. STM00019F3F9cap_diag\&.bin):
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme wdc cap\-diag /dev/nvme0
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Gets the capture diagnostics log from the device and saves to defined file in current directory (e\&.g\&. testSTM00019F3F9cap_diag\&.bin):
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme wdc cap\-diag /dev/nvme0 \-o test
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Gets the capture diagnostics log from the device and saves to defined file with pathname (e\&.g\&. /tmp/testSTM00019F3F9cap_diag\&.bin):
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme wdc cap\-diag /dev/nvme0 \-o /tmp/test
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Gets the capture diagnostics log from the device transferring the data in 64k chunks and saves to default file in current directory (e\&.g\&. STM00019F3F9internal_fw_log\&.bin):
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme wdc cap\-diag /dev/nvme0 \-s 0x10000
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Gets the capture diagnostics log from the device transferring the data in 16k chunks and saves to default file in current directory (e\&.g\&. STM00019F3F9internal_fw_log\&.bin):
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme wdc cap\-diag /dev/nvme0 \-s 16384
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite\&.
 070701015D6DDB000081A4000003E80000006400000001642C0FB600004DC5000000000000004A00000000000000000000002E00000000nvme-cli/Documentation/nvme-wdc-cap-diag.html <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-wdc-cap-diag(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-wdc-cap-diag(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-wdc-cap-diag -
   Retrieve WDC device's diagnostic log and save to file.
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme wdc cap-diag</em> &lt;device&gt; [--output-file=&lt;FILE&gt;, -o &lt;FILE&gt;] [--transfer-size=&lt;SIZE&gt;, -s &lt;SIZE&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, sends the WDC Vendor Unique Capture-Diagnostics
request and saves the result to a file.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory NVMe character device (ex: /dev/nvme0).</p></div>
<div class="paragraph"><p>This will only work on WDC devices supporting this feature.
Results for any other device are undefined.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-o &lt;FILE&gt;
</dt>
<dt class="hdlist1">
--output-file=&lt;FILE&gt;
</dt>
<dd>
<p>
        Output file; defaults to device serial number followed by "cap_diag" suffix
</p>
</dd>
<dt class="hdlist1">
-s &lt;SIZE&gt;
</dt>
<dt class="hdlist1">
--transfer-size=&lt;SIZE&gt;
</dt>
<dd>
<p>
    Transfer size; defaults to 0x10000 (65536 decimal) bytes
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Gets the capture diagnostics log from the device and saves to default file in current directory (e.g. STM00019F3F9cap_diag.bin):
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme wdc cap-diag /dev/nvme0</code></pre>
</div></div>
</li>
<li>
<p>
Gets the capture diagnostics log from the device and saves to defined file in current directory (e.g. testSTM00019F3F9cap_diag.bin):
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme wdc cap-diag /dev/nvme0 -o test</code></pre>
</div></div>
</li>
<li>
<p>
Gets the capture diagnostics log from the device and saves to defined file with pathname (e.g. /tmp/testSTM00019F3F9cap_diag.bin):
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme wdc cap-diag /dev/nvme0 -o /tmp/test</code></pre>
</div></div>
</li>
<li>
<p>
Gets the capture diagnostics log from the device transferring the data in 64k chunks and saves to default file in current directory (e.g. STM00019F3F9internal_fw_log.bin):
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme wdc cap-diag /dev/nvme0 -s 0x10000</code></pre>
</div></div>
</li>
<li>
<p>
Gets the capture diagnostics log from the device transferring the data in 16k chunks and saves to default file in current directory (e.g. STM00019F3F9internal_fw_log.bin):
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme wdc cap-diag /dev/nvme0 -s 16384</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite.</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
   070701015D6DDC000081A4000003E80000006400000001642C0FB600000769000000000000004A00000000000000000000002F00000000nvme-cli/Documentation/nvme-wdc-capabilities.1    '\" t
.\"     Title: nvme-wdc-capabilities
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-WDC\-CAPABILIT" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-wdc-capabilities \- Display WDC plugin command capabilities
.SH "SYNOPSIS"
.sp
.nf
\fInvme wdc capabilities\fR <device>
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, displays list of commands and support status\&.
.sp
The <device> parameter is mandatory NVMe character device (ex: /dev/nvme0)\&.
.sp
On success it returns 0, error code otherwise\&.
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Displays the capabilities for the device:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme wdc capabilities /dev/nvme0
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite\&.
   070701015D6DDD000081A4000003E80000006400000001642C0FB6000045C6000000000000004A00000000000000000000003200000000nvme-cli/Documentation/nvme-wdc-capabilities.html <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-wdc-capabilities(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-wdc-capabilities(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-wdc-capabilities -
   Display WDC plugin command capabilities
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme wdc capabilities</em> &lt;device&gt;</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, displays list of commands and support status.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory NVMe character device (ex: /dev/nvme0).</p></div>
<div class="paragraph"><p>On success it returns 0, error code otherwise.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Displays the capabilities for the device:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme wdc capabilities /dev/nvme0</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite.</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
  070701015D6DDE000081A4000003E80000006400000001642C0FB6000007FD000000000000004A00000000000000000000003400000000nvme-cli/Documentation/nvme-wdc-clear-assert-dump.1   '\" t
.\"     Title: nvme-wdc-clear-assert-dump
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-WDC\-CLEAR\-AS" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-wdc-clear-assert-dump \- Clears the assert dump (if present)\&.
.SH "SYNOPSIS"
.sp
.nf
\fInvme wdc clear\-assert\-dump\fR <device>
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, sends the wdc vendor unique clear assert dump command\&.
.sp
The <device> parameter is mandatory and must be the NVMe character device (ex: /dev/nvme0)\&.
.sp
This will only work on WDC devices supporting this feature\&. The command will not be executed on devices that don\(cqt support it\&.
.SH "OPTIONS"
.sp
None
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Clears the assert dump (if present):
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme wdc clear\-assert\-dump /dev/nvme0
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite
   070701015D6DDF000081A4000003E80000006400000001642C0FB6000046D2000000000000004A00000000000000000000003700000000nvme-cli/Documentation/nvme-wdc-clear-assert-dump.html    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-wdc-clear-assert-dump(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-wdc-clear-assert-dump(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-wdc-clear-assert-dump -
   Clears the assert dump (if present).
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme wdc clear-assert-dump</em> &lt;device&gt;</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, sends the wdc vendor unique clear assert
dump command.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and must be the NVMe character
device (ex: /dev/nvme0).</p></div>
<div class="paragraph"><p>This will only work on WDC devices supporting this feature.
The command will not be executed on devices that don&#8217;t support it.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="paragraph"><p>None</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Clears the assert dump (if present):
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme wdc clear-assert-dump /dev/nvme0</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
  070701015D6DE0000081A4000003E80000006400000001642C0FB60000081B000000000000004A00000000000000000000003C00000000nvme-cli/Documentation/nvme-wdc-clear-fw-activate-history.1   '\" t
.\"     Title: nvme-wdc-clear-fw-activate-history
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-WDC\-CLEAR\-FW" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-wdc-clear-fw-activate-history \- Clears the firmware activate history table\&.
.SH "SYNOPSIS"
.sp
.nf
\fInvme wdc clear\-fw\-activate\-history\fR <device>
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, sends the wdc vendor unique clear fw activate history command\&.
.sp
The <device> parameter is mandatory and must be the NVMe character device (ex: /dev/nvme0)\&.
.sp
This will only work on WDC devices supporting this feature\&. Results for any other device are undefined\&.
.SH "OPTIONS"
.sp
None
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Clears the firmware activate history table:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme wdc clear\-fw\-activate\-history /dev/nvme0
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite
 070701015D6DE1000081A4000003E80000006400000001642C0FB6000046F2000000000000004A00000000000000000000003F00000000nvme-cli/Documentation/nvme-wdc-clear-fw-activate-history.html    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-wdc-clear-fw-activate-history(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-wdc-clear-fw-activate-history(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-wdc-clear-fw-activate-history -
   Clears the firmware activate history table.
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme wdc clear-fw-activate-history</em> &lt;device&gt;</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, sends the wdc vendor unique clear fw activate
history command.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and must be the NVMe character device (ex: /dev/nvme0).</p></div>
<div class="paragraph"><p>This will only work on WDC devices supporting this feature.
Results for any other device are undefined.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="paragraph"><p>None</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Clears the firmware activate history table:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme wdc clear-fw-activate-history /dev/nvme0</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
  070701015D6DE2000081A4000003E80000006400000001642C0FB6000008B6000000000000004A00000000000000000000004000000000nvme-cli/Documentation/nvme-wdc-clear-pcie-correctable-errors.1   '\" t
.\"     Title: nvme-wdc-clear-pcie-correctable-errors
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-WDC\-CLEAR\-PC" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-wdc-clear-pcie-correctable-errors \- Clears the pcie correctable errors field returned in the smart\-log\-add command\&.
.SH "SYNOPSIS"
.sp
.nf
\fInvme wdc clear\-pcie\-correctable\-errors\fR <device>
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, sends the wdc vendor unique clear pcie correctable errors command\&.
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1)\&.
.sp
This will only work on WDC devices supporting this feature\&. Results for any other device are undefined\&.
.SH "OPTIONS"
.sp
None
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Clears the PCIe Correctable Error Count field returned in the smart\-log\-add command:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme wdc clear\-pcie\-correctable\-errors /dev/nvme0
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite
  070701015D6DE3000081A4000003E80000006400000001642C0FB60000478F000000000000004A00000000000000000000004300000000nvme-cli/Documentation/nvme-wdc-clear-pcie-correctable-errors.html    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-wdc-clear-pcie-correctable-errors(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-wdc-clear-pcie-correctable-errors(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-wdc-clear-pcie-correctable-errors -
   Clears the pcie correctable errors field returned in the smart-log-add command.
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme wdc clear-pcie-correctable-errors</em> &lt;device&gt;</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, sends the wdc vendor unique clear pcie
correctable errors command.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe
character device (ex: /dev/nvme0), or a namespace block device (ex:
/dev/nvme0n1).</p></div>
<div class="paragraph"><p>This will only work on WDC devices supporting this feature.
Results for any other device are undefined.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="paragraph"><p>None</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Clears the PCIe Correctable Error Count field returned in the smart-log-add command:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme wdc clear-pcie-correctable-errors /dev/nvme0</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
 070701015D6DE4000081A4000003E80000006400000001642C0FB6000007DA000000000000004A00000000000000000000003B00000000nvme-cli/Documentation/nvme-wdc-cloud-SSD-plugin-version.1    '\" t
.\"     Title: nvme-wdc-cloud-SSD-plugin-version
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-WDC\-CLOUD\-SS" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-wdc-cloud-SSD-plugin-version \- Display WDC plugin Cloud SSD Plugin Version
.SH "SYNOPSIS"
.sp
.nf
\fInvme wdc cloud\-SSD\-plugin\-version\fR <device>
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, this command displays the current Cloud SSD Plugin Version (if supported by the device)\&.
.sp
The <device> parameter is mandatory NVMe character device (ex: /dev/nvme0)\&.
.sp
On success it returns 0, error code otherwise\&.
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Displays the cloud ssd plugin version for the device:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme wdc cloud\-SSD\-plugin\-version /dev/nvme0
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite\&.
  070701015D6DE5000081A4000003E80000006400000001642C0FB60000463E000000000000004A00000000000000000000003E00000000nvme-cli/Documentation/nvme-wdc-cloud-SSD-plugin-version.html <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-wdc-cloud-SSD-plugin-version(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-wdc-cloud-SSD-plugin-version(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-wdc-cloud-SSD-plugin-version -
   Display WDC plugin Cloud SSD Plugin Version
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme wdc cloud-SSD-plugin-version</em> &lt;device&gt;</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, this command displays the current Cloud SSD
Plugin Version (if supported by the device).</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory NVMe character device (ex: /dev/nvme0).</p></div>
<div class="paragraph"><p>On success it returns 0, error code otherwise.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Displays the cloud ssd plugin version for the device:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme wdc cloud-SSD-plugin-version /dev/nvme0</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite.</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
  070701015D6DE6000081A4000003E80000006400000001642C0FB6000007D3000000000000004A00000000000000000000003900000000nvme-cli/Documentation/nvme-wdc-cloud-boot-SSD-version.1  '\" t
.\"     Title: nvme-wdc-cloud-boot-SSD-version
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-WDC\-CLOUD\-BO" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-wdc-cloud-boot-SSD-version \- Display WDC plugin Cloud Boot SSD Version
.SH "SYNOPSIS"
.sp
.nf
\fInvme wdc cloud\-boot\-SSD\-version\fR <device>
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, this command displays the current Cloud Hyperscale Boot Version (if supported by the device)\&.
.sp
The <device> parameter is mandatory NVMe character device (ex: /dev/nvme0)\&.
.sp
On success it returns 0, error code otherwise\&.
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Displays the cloud boot ssd version for the device:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme wdc cloud\-boot\-SSD\-version /dev/nvme0
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite\&.
 070701015D6DE7000081A4000003E80000006400000001642C0FB600004635000000000000004A00000000000000000000003C00000000nvme-cli/Documentation/nvme-wdc-cloud-boot-SSD-version.html   <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-wdc-cloud-boot-SSD-version(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-wdc-cloud-boot-SSD-version(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-wdc-cloud-boot-SSD-version -
   Display WDC plugin Cloud Boot SSD Version
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme wdc cloud-boot-SSD-version</em> &lt;device&gt;</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, this command displays the current Cloud Hyperscale
Boot Version (if supported by the device).</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory NVMe character device (ex: /dev/nvme0).</p></div>
<div class="paragraph"><p>On success it returns 0, error code otherwise.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Displays the cloud boot ssd version for the device:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme wdc cloud-boot-SSD-version /dev/nvme0</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite.</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
   070701015D6DE8000081A4000003E80000006400000001642C0FB600000B31000000000000004A00000000000000000000003300000000nvme-cli/Documentation/nvme-wdc-drive-essentials.1    '\" t
.\"     Title: nvme-wdc-drive-essentials
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-WDC\-DRIVE\-ES" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-wdc-drive-essentials \- Retrieve WDC device\*(Aqs drive essentials bin files and save to a tar file\&.
.SH "SYNOPSIS"
.sp
.nf
\fInvme wdc drive\-essentials\fR <device> [\-\-dir\-name=<DIRECTORY>, \-d <DIRECTORY>]
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, captures the drive essential bin files and saves them into a tar file\&. The tar file will be in the following format: DRIVE_ESSENTIALS_<Serial Num>_<FW Revision>_<Date>_<Time>\&.tar\&.gz e\&.g\&. DRIVE_ESSENTIALS_A00FD8CA_1048_20170713_091731\&.tar\&.gz
.sp
The <device> parameter is mandatory; NVMe character device (ex: /dev/nvme0)\&.
.sp
This will only work on WDC devices supporting this feature\&. Results for any other device are undefined\&.
.SH "OPTIONS"
.PP
\-d <DIRECTORY>, \-\-dir\-name=<DIRECTORY>
.RS 4
Output directory; defaults to current working directory\&.
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Gets the drive essentials data files from the device and saves the tar file in current directory (e\&.g\&. DRIVE_ESSENTIALS_A00FD8CA_1048_20170713_091731\&.tar\&.gz):
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme wdc drive\-essentials /dev/nvme0
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Gets the drive essentials data files from the device and saves the tar file to specified directory (e\&.g\&. /tmp/DRIVE_ESSENTIALS_A00FD8CA_1048_20170713_091731):
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme wdc drive\-essentials /dev/nvme0 \-d /tmp/
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite\&.
   070701015D6DE9000081A4000003E80000006400000001642C0FB600004A58000000000000004A00000000000000000000003600000000nvme-cli/Documentation/nvme-wdc-drive-essentials.html <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-wdc-drive-essentials(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-wdc-drive-essentials(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-wdc-drive-essentials -
   Retrieve WDC device's drive essentials bin files and save to a tar file.
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme wdc drive-essentials</em> &lt;device&gt; [--dir-name=&lt;DIRECTORY&gt;, -d &lt;DIRECTORY&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, captures the drive essential bin files and saves them into a tar file.
The tar file will be in the following format:  DRIVE_ESSENTIALS_&lt;Serial Num&gt;_&lt;FW Revision&gt;_&lt;Date&gt;_&lt;Time&gt;.tar.gz
    e.g. DRIVE_ESSENTIALS_A00FD8CA_1048_20170713_091731.tar.gz</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory; NVMe character device (ex: /dev/nvme0).</p></div>
<div class="paragraph"><p>This will only work on WDC devices supporting this feature.
Results for any other device are undefined.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-d &lt;DIRECTORY&gt;
</dt>
<dt class="hdlist1">
--dir-name=&lt;DIRECTORY&gt;
</dt>
<dd>
<p>
        Output directory; defaults to current working directory.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Gets the drive essentials data files from the device and saves the tar file in current directory
  (e.g. DRIVE_ESSENTIALS_A00FD8CA_1048_20170713_091731.tar.gz):
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme wdc drive-essentials /dev/nvme0</code></pre>
</div></div>
</li>
<li>
<p>
Gets the drive essentials data files from the device and saves the tar file to specified directory
  (e.g. /tmp/DRIVE_ESSENTIALS_A00FD8CA_1048_20170713_091731):
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme wdc drive-essentials /dev/nvme0 -d /tmp/</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite.</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
070701015D6DEA000081A4000003E80000006400000001642C0FB600000B69000000000000004A00000000000000000000002C00000000nvme-cli/Documentation/nvme-wdc-drive-log.1   '\" t
.\"     Title: nvme-wdc-drive-log
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-WDC\-DRIVE\-LO" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-wdc-drive-log \- Retrieve WDC device\*(Aqs drive log and save to file\&.
.SH "SYNOPSIS"
.sp
.nf
\fInvme wdc drive\-log\fR <device> [\-\-output\-file=<FILE>, \-o <FILE>]
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, sends the wdc vendor unique drive log request and saves the result to a file\&.
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1)\&.
.sp
This will only work on WDC devices supporting this feature\&. Results for any other device are undefined\&.
.SH "OPTIONS"
.PP
\-o <FILE>, \-\-output\-file=<FILE>
.RS 4
Output file; defaults to device serial number followed by "drive_log" suffix
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Gets the drive log from the device and saves to default file in current directory (e\&.g\&. STM00019F3F9drive_log\&.bin):
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme wdc drive\-log /dev/nvme0
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Gets the drive log from the device and saves to defined file in current directory (e\&.g\&. testSTM00019F3F9drive_log\&.bin):
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme wdc drive\-log /dev/nvme0 \-o test
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Gets the drive log from the device and saves to defined file with pathname (e\&.g\&. /tmp/testSTM00019F3F9drive_log\&.bin):
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme wdc drive\-log /dev/nvme0 \-o /tmp/test
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite
   070701015D6DEB000081A4000003E80000006400000001642C0FB600004A5F000000000000004A00000000000000000000002F00000000nvme-cli/Documentation/nvme-wdc-drive-log.html    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-wdc-drive-log(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-wdc-drive-log(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-wdc-drive-log -
   Retrieve WDC device's drive log and save to file.
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme wdc drive-log</em> &lt;device&gt; [--output-file=&lt;FILE&gt;, -o &lt;FILE&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, sends the wdc vendor unique drive log
request and saves the result to a file.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe
character device (ex: /dev/nvme0), or a namespace block device (ex:
/dev/nvme0n1).</p></div>
<div class="paragraph"><p>This will only work on WDC devices supporting this feature.
Results for any other device are undefined.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-o &lt;FILE&gt;
</dt>
<dt class="hdlist1">
--output-file=&lt;FILE&gt;
</dt>
<dd>
<p>
        Output file; defaults to device serial number followed by "drive_log" suffix
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Gets the drive log from the device and saves to default file in current directory (e.g. STM00019F3F9drive_log.bin):
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme wdc drive-log /dev/nvme0</code></pre>
</div></div>
</li>
<li>
<p>
Gets the drive log from the device and saves to defined file in current directory (e.g. testSTM00019F3F9drive_log.bin):
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme wdc drive-log /dev/nvme0 -o test</code></pre>
</div></div>
</li>
<li>
<p>
Gets the drive log from the device and saves to defined file with pathname (e.g. /tmp/testSTM00019F3F9drive_log.bin):
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme wdc drive-log /dev/nvme0 -o /tmp/test</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
 070701015D6DEC000081A4000003E80000006400000001642C0FB6000008CE000000000000004A00000000000000000000002F00000000nvme-cli/Documentation/nvme-wdc-drive-resize.1    '\" t
.\"     Title: nvme-wdc-drive-resize
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-WDC\-DRIVE\-RE" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-wdc-drive-resize \- Send NVMe WDC Resize Vendor Unique Command, return result\&.
.SH "SYNOPSIS"
.sp
.nf
\fInvme wdc drive\-resize\fR <device> [\-\-size=<sz> | \-s <sz>]
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, sends a Vendor Unique WDC Resize command\&.
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1)\&.
.sp
This will only work on WDC devices supporting this feature\&. Results for any other device are undefined\&.
.sp
On success it returns 0, error code otherwise\&.
.SH "OPTIONS"
.PP
\-s <sz>, \-\-size=<sz>
.RS 4
The new size (in GB) to resize the drive to\&.
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Has the program issue WDC Resize Vendor Unique Command :
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme wdc drive\-resize /dev/nvme0n1 \-\-size=100
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite\&.
  070701015D6DED000081A4000003E80000006400000001642C0FB60000481A000000000000004A00000000000000000000003200000000nvme-cli/Documentation/nvme-wdc-drive-resize.html <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-wdc-drive-resize(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-wdc-drive-resize(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-wdc-drive-resize -
   Send NVMe WDC Resize Vendor Unique Command, return result.
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme wdc drive-resize</em> &lt;device&gt; [--size=&lt;sz&gt; | -s &lt;sz&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, sends a Vendor Unique WDC Resize command.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).</p></div>
<div class="paragraph"><p>This will only work on WDC devices supporting this feature.
Results for any other device are undefined.</p></div>
<div class="paragraph"><p>On success it returns 0, error code otherwise.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-s &lt;sz&gt;
</dt>
<dt class="hdlist1">
--size=&lt;sz&gt;
</dt>
<dd>
<p>
        The new size (in GB) to resize the drive to.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Has the program issue WDC Resize Vendor Unique Command :
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme wdc drive-resize /dev/nvme0n1 --size=100</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite.</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
  070701015D6DEE000081A4000003E80000006400000001642C0FB600000BDC000000000000004A00000000000000000000002E00000000nvme-cli/Documentation/nvme-wdc-enc-get-log.1 '\" t
.\"     Title: nvme-wdc-enc-get-log
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-WDC\-ENC\-GET\" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-wdc-enc-get-log \- Send NVMe WDC enc\-get\-log Vendor Unique Command, return result\&.
.SH "SYNOPSIS"
.sp
.nf
\fInvme wdc enc\-get\-log\fR <device> [\-\-log\-id=<NUM>, \-l <NUM>] [\-\-output\-file=<FILE>, \-o <FILE>] [\-\-transfer\-size=<SIZE>, \-s <SIZE>]
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, send a Vendor Unique WDC enc\-get\-log command and output the Enclosure logs\&.
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0)\&.
.sp
The \-\-log\-id=<NUM>, \-l <NUM> parameter is mandatory and may be either 0xd1, 0xd2, 0xd3, 0xd4, 0xe2 and 0xe4\&.
.sp
This will only work on WDC devices supporting this feature\&. Results for any other device are undefined\&.
.sp
On success it returns the enclosure log data, error code otherwise\&.
.SH "OPTIONS"
.PP
\-o <FILE>, \-\-output\-file=<FILE>
.RS 4
Output file pathname
.RE
.PP
\-s <SIZE>, \-\-transfer\-size=<NUM>
.RS 4
Data retrieval transfer size, maximum transfer size should be 0x2000 (decimal 8192)
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Gets the enclosure log from the device based on the log id(0xd1) with transfer size(0x2000) and saves to defined file in current directory:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme wdc enc\-get\-log /dev/nvme0 \-l 0xd1 \-o d1_log\&.bin \-s 0x2000
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Gets the enclosure log from the device based on the log id(0xd2) with default transfer size(0x1000) and saves to defined file in current directory:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme wdc enc\-get\-log /dev/nvme0 \-l 0xd2 \-o d1_log\&.bin
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite\&.
070701015D6DEF000081A4000003E80000006400000001642C0FB600004B8E000000000000004A00000000000000000000003100000000nvme-cli/Documentation/nvme-wdc-enc-get-log.html  <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-wdc-enc-get-log(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-wdc-enc-get-log(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-wdc-enc-get-log -
   Send NVMe WDC enc-get-log Vendor Unique Command, return result.
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme wdc enc-get-log</em> &lt;device&gt; [--log-id=&lt;NUM&gt;, -l &lt;NUM&gt;] [--output-file=&lt;FILE&gt;, -o &lt;FILE&gt;] [--transfer-size=&lt;SIZE&gt;, -s &lt;SIZE&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, send a Vendor Unique WDC enc-get-log command and
output the Enclosure logs.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0).</p></div>
<div class="paragraph"><p>The --log-id=&lt;NUM&gt;, -l &lt;NUM&gt; parameter is mandatory and may be either 0xd1, 0xd2, 0xd3, 0xd4, 0xe2 and 0xe4.</p></div>
<div class="paragraph"><p>This will only work on WDC devices supporting this feature.
Results for any other device are undefined.</p></div>
<div class="paragraph"><p>On success it returns the enclosure log data, error code otherwise.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-o &lt;FILE&gt;
</dt>
<dt class="hdlist1">
--output-file=&lt;FILE&gt;
</dt>
<dd>
<p>
    Output file pathname
</p>
</dd>
<dt class="hdlist1">
-s &lt;SIZE&gt;
</dt>
<dt class="hdlist1">
--transfer-size=&lt;NUM&gt;
</dt>
<dd>
<p>
    Data retrieval transfer size, maximum transfer size should be 0x2000 (decimal 8192)
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Gets the enclosure log from the device based on the log id(0xd1) with transfer size(0x2000) and saves to defined file in current directory:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme wdc enc-get-log /dev/nvme0 -l 0xd1 -o d1_log.bin -s 0x2000</code></pre>
</div></div>
</li>
<li>
<p>
Gets the enclosure log from the device based on the log id(0xd2) with default transfer size(0x1000) and saves to defined file in current directory:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme wdc enc-get-log /dev/nvme0 -l 0xd2 -o d1_log.bin</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite.</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
  070701015D6DF0000081A4000003E80000006400000001642C0FB600000C17000000000000004A00000000000000000000003100000000nvme-cli/Documentation/nvme-wdc-get-crash-dump.1  '\" t
.\"     Title: nvme-wdc-get-crash-dump
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-WDC\-GET\-CRAS" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-wdc-get-crash-dump \- Retrieve WDC device\*(Aqs crash dump\&.
.SH "SYNOPSIS"
.sp
.nf
\fInvme wdc get\-crash\-dump\fR <device> [\-\-output\-file=<FILE>, \-o <FILE>]
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, sends the WDC vendor unique crash dump request and saves the result to file\&. In current implementation crash dump is captured if it is present\&. On success it will save the dump in file with appropriate suffix\&. Note that this command will clear the available dump from the device on success\&.
.sp
The <device> parameter is mandatory NVMe character device (ex: /dev/nvme0)\&.
.sp
This will only work on WDC devices supporting this feature\&. Results for any other device are undefined\&.
.SH "OPTIONS"
.PP
\-o <FILE>, \-\-output\-file=<FILE>
.RS 4
Output file; defaults to device serial number followed by "crash_dump" suffix
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Gets the crash dump from the device and saves to default file in current directory (e\&.g\&. STM00019F3F9crash_dump\&.bin):
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme wdc get\-crash\-dump /dev/nvme0
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Gets the crash dump from the device and saves to defined file in current directory (e\&.g\&. testSTM00019F3F9crash_dump\&.bin):
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme wdc get\-crash\-dump /dev/nvme0 \-o test
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Gets the crash dump from the device and saves to defined file with pathname (e\&.g\&. /tmp/testSTM00019F3F9crash_dump\&.bin):
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme wdc get\-crash\-dump /dev/nvme0 \-o /tmp/test
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite
 070701015D6DF1000081A4000003E80000006400000001642C0FB600004B09000000000000004A00000000000000000000003400000000nvme-cli/Documentation/nvme-wdc-get-crash-dump.html   <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-wdc-get-crash-dump(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-wdc-get-crash-dump(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-wdc-get-crash-dump -
   Retrieve WDC device's crash dump.
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme wdc get-crash-dump</em> &lt;device&gt; [--output-file=&lt;FILE&gt;, -o &lt;FILE&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, sends the WDC vendor unique crash dump
request and saves the result to file. In current implementation crash dump is
captured if it is present. On success it will save the dump in file with
appropriate suffix. Note that this command will clear the available
dump from the device on success.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory NVMe character device (ex: /dev/nvme0).</p></div>
<div class="paragraph"><p>This will only work on WDC devices supporting this feature.
Results for any other device are undefined.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-o &lt;FILE&gt;
</dt>
<dt class="hdlist1">
--output-file=&lt;FILE&gt;
</dt>
<dd>
<p>
        Output file; defaults to device serial number followed by "crash_dump" suffix
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Gets the crash dump from the device and saves to default file in current directory (e.g. STM00019F3F9crash_dump.bin):
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme wdc get-crash-dump /dev/nvme0</code></pre>
</div></div>
</li>
<li>
<p>
Gets the crash dump from the device and saves to defined file in current directory (e.g. testSTM00019F3F9crash_dump.bin):
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme wdc get-crash-dump /dev/nvme0 -o test</code></pre>
</div></div>
</li>
<li>
<p>
Gets the crash dump from the device and saves to defined file with pathname (e.g. /tmp/testSTM00019F3F9crash_dump.bin):
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme wdc get-crash-dump /dev/nvme0 -o /tmp/test</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
   070701015D6DF2000081A4000003E80000006400000001642C0FB600000A0E000000000000004A00000000000000000000003B00000000nvme-cli/Documentation/nvme-wdc-get-dev-capabilities-log.1    '\" t
.\"     Title: nvme-wdc-get-dev-capabilities-log
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-WDC\-GET\-DEV\" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-wdc-get-dev-capabilities-log \- Send NVMe WDC get\-dev\-capabilities\-log plugin command, return parsed log output
.SH "SYNOPSIS"
.sp
.nf
\fInvme wdc get\-dev\-capabilities\-log\fR <device> [\-\-output\-format=<normal|json>
\-o <normal|json>]
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, send a WDC plugin get\-dev\-capabilities\-log command and output the device capabilities log data\&. The \-\-output\-format option will format the output as specified\&.
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0)\&.
.sp
This will only work on WDC devices supporting this log page\&. Results for any other device are undefined\&.
.sp
On success it returns the parsed device capabilities log page data, error code otherwise\&.
.SH "OPTIONS"
.PP
\-o <format>, \-\-output\-format=<format>
.RS 4
Set the reporting format to
\fInormal\fR, or
\fIjson\fR\&. Only one output format can be used at a time\&. Default is normal\&.
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Has the program issue WDC get\-dev\-capabilities\-log plugin command :
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme wdc get\-dev\-capabilities\-log /dev/nvme0
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite\&.
  070701015D6DF3000081A4000003E80000006400000001642C0FB6000049B6000000000000004A00000000000000000000003E00000000nvme-cli/Documentation/nvme-wdc-get-dev-capabilities-log.html <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-wdc-get-dev-capabilities-log(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-wdc-get-dev-capabilities-log(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-wdc-get-dev-capabilities-log -
   Send NVMe WDC get-dev-capabilities-log                                                                         plugin command, return parsed log output
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme wdc get-dev-capabilities-log</em> &lt;device&gt; [--output-format=&lt;normal|json&gt;
-o &lt;normal|json&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, send a WDC plugin get-dev-capabilities-log command
and output the device capabilities log data. The --output-format option will
format the output as specified.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0).</p></div>
<div class="paragraph"><p>This will only work on WDC devices supporting this log page.
Results for any other device are undefined.</p></div>
<div class="paragraph"><p>On success it returns the parsed device capabilities log page data, error
code otherwise.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-o &lt;format&gt;
</dt>
<dt class="hdlist1">
--output-format=&lt;format&gt;
</dt>
<dd>
<p>
        Set the reporting format to <em>normal</em>, or
        <em>json</em>. Only one output format can be used at a time.
        Default is normal.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Has the program issue WDC get-dev-capabilities-log plugin command :
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme wdc get-dev-capabilities-log /dev/nvme0</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite.</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
  070701015D6DF4000081A4000003E80000006400000001642C0FB600000B0A000000000000004A00000000000000000000003300000000nvme-cli/Documentation/nvme-wdc-get-drive-status.1    '\" t
.\"     Title: nvme-wdc-get-drive-status
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-WDC\-GET\-DRIV" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-wdc-get-drive-status \- Send the NVMe WDC get\-drive\-status command, return result
.SH "SYNOPSIS"
.sp
.nf
\fInvme wdc get\-drive\-status\fR <device>
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, send the unique WDC get\-drive\-status command and provide the additional drive status information\&.
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0)\&.
.sp
This will only work on WDC devices supporting this feature\&. Results for any other device are undefined\&.
.sp
On success it returns 0, error code otherwise\&.
.SH "OUTPUT EXPLANATION"
.TS
allbox tab(:);
ltB ltB.
T{
Field
T}:T{
Description
T}
.T&
lt lt
lt lt
lt lt
lt lt
lt lt.
T{
.sp
\fBPercent Life Used\&.\fR
T}:T{
.sp
The percentage of drive function used\&.
T}
T{
.sp
\fBEOL (End of Life) Status\fR
T}:T{
.sp
The 3 possible states are : Normal, Read Only, or End of Life\&.
T}
T{
.sp
\fBAssert Dump Status\fR
T}:T{
.sp
The 2 possible states are : Present or Not Present\&.
T}
T{
.sp
\fBThermal Throttling Status\fR
T}:T{
.sp
The 3 possible states are : Off, On, or Unavailable\&.
T}
T{
.sp
\fBFormat Corrupt Reason\fR
T}:T{
.sp
The 3 possible states are : Not Corrupted, Corrupt due to FW Assert, or Corrupt for Unknown Reason\&.
T}
.TE
.sp 1
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Has the program issue WDC get\-drive\-status command :
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme wdc get\-drive\-status /dev/nvme0
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite\&.
  070701015D6DF5000081A4000003E80000006400000001642C0FB600004D23000000000000004A00000000000000000000003600000000nvme-cli/Documentation/nvme-wdc-get-drive-status.html <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-wdc-get-drive-status(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-wdc-get-drive-status(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-wdc-get-drive-status -
   Send the NVMe WDC get-drive-status command, return result
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme wdc get-drive-status</em> &lt;device&gt;</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, send the unique WDC get-drive-status command and
provide the additional drive status information.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0).</p></div>
<div class="paragraph"><p>This will only work on WDC devices supporting this feature.
Results for any other device are undefined.</p></div>
<div class="paragraph"><p>On success it returns 0, error code otherwise.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_output_explanation">Output Explanation</h2>
<div class="sectionbody">
<div class="tableblock">
<table rules="all"
style="margin-left:auto; margin-right:auto;"
width="100%"
frame="hsides"
cellspacing="0" cellpadding="4">
<col width="50%" />
<col width="50%" />
<thead>
<tr>
<th align="left" valign="top">Field </th>
<th align="left" valign="top">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left" valign="top"><p class="table"><strong>Percent Life Used.</strong></p></td>
<td align="left" valign="top"><p class="table">The percentage of drive function used.</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table"><strong>EOL (End of Life) Status</strong></p></td>
<td align="left" valign="top"><p class="table">The 3 possible states are :  Normal, Read Only, or End of Life.</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table"><strong>Assert Dump Status</strong></p></td>
<td align="left" valign="top"><p class="table">The 2 possible states are :  Present or Not Present.</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table"><strong>Thermal Throttling Status</strong></p></td>
<td align="left" valign="top"><p class="table">The 3 possible states are :  Off, On, or Unavailable.</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table"><strong>Format Corrupt Reason</strong></p></td>
<td align="left" valign="top"><p class="table">The 3 possible states are :  Not Corrupted, Corrupt due to FW Assert, or Corrupt for Unknown Reason.</p></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Has the program issue WDC get-drive-status command :
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme wdc get-drive-status /dev/nvme0</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite.</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
 070701015D6DF6000081A4000003E80000006400000001642C0FB6000009F6000000000000004A00000000000000000000003900000000nvme-cli/Documentation/nvme-wdc-get-error-recovery-log.1  '\" t
.\"     Title: nvme-wdc-get-error-recovery-log
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-WDC\-GET\-ERRO" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-wdc-get-error-recovery-log \- Send NVMe WDC get\-error\-recovery\-log plugin command, return parsed log output
.SH "SYNOPSIS"
.sp
.nf
\fInvme wdc get\-error\-recovery\-log\fR <device> [\-\-output\-format=<normal|json>
\-o <normal|json>]
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, send a WDC plugin get\-error\-recovery\-log command and output the error recovery log data\&. The \-\-output\-format option will format the output as specified\&.
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0)\&.
.sp
This will only work on WDC devices supporting this log page\&. Results for any other device are undefined\&.
.sp
On success it returns the parsed error recovery log page data, error code otherwise\&.
.SH "OPTIONS"
.PP
\-o <format>, \-\-output\-format=<format>
.RS 4
Set the reporting format to
\fInormal\fR, or
\fIjson\fR\&. Only one output format can be used at a time\&. Default is normal\&.
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Has the program issue WDC get\-error\-recovery\-log plugin command :
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme wdc get\-error\-recovery\-log /dev/nvme0
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite\&.
  070701015D6DF7000081A4000003E80000006400000001642C0FB600004996000000000000004A00000000000000000000003C00000000nvme-cli/Documentation/nvme-wdc-get-error-recovery-log.html   <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-wdc-get-error-recovery-log(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-wdc-get-error-recovery-log(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-wdc-get-error-recovery-log -
   Send NVMe WDC get-error-recovery-log plugin                                                                   command, return parsed log output
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme wdc get-error-recovery-log</em> &lt;device&gt; [--output-format=&lt;normal|json&gt;
-o &lt;normal|json&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, send a WDC plugin get-error-recovery-log command
and output the error recovery log data. The --output-format option will format
the output as specified.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0).</p></div>
<div class="paragraph"><p>This will only work on WDC devices supporting this log page.
Results for any other device are undefined.</p></div>
<div class="paragraph"><p>On success it returns the parsed error recovery log page data, error
code otherwise.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-o &lt;format&gt;
</dt>
<dt class="hdlist1">
--output-format=&lt;format&gt;
</dt>
<dd>
<p>
        Set the reporting format to <em>normal</em>, or
        <em>json</em>. Only one output format can be used at a time.
        Default is normal.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Has the program issue WDC get-error-recovery-log plugin command :
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme wdc get-error-recovery-log /dev/nvme0</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite.</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
  070701015D6DF8000081A4000003E80000006400000001642C0FB60000091D000000000000004A00000000000000000000003A00000000nvme-cli/Documentation/nvme-wdc-get-latency-monitor-log.1 '\" t
.\"     Title: nvme-wdc-get-latency-monitor-log
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-WDC\-GET\-LATE" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-wdc-get-latency-monitor-log \- Display latency monitor log page data in human readable format
.SH "SYNOPSIS"
.sp
.nf
\fInvme wdc get\-latency\-monitor\-log\fR <device> [\-\-output\-format=<normal|json> \-o <normal|json>]
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, latency monitor log page data\&.
.sp
The <device> parameter is mandatory NVMe character device (ex: /dev/nvme0)\&.
.sp
This will only work on WDC devices supporting this log page\&. Results for any other device are undefined\&.
.sp
On success it returns 0, error code otherwise\&.
.SH "OPTIONS"
.PP
\-o <format>, \-\-output\-format=<format>
.RS 4
Set the reporting format to
\fInormal\fR
or
\fIjson\fR\&. Only one output format can be used at a time\&. The default is normal\&.
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Displays the get latency monitor log for the device:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme wdc get\-latency\-monitor\-log /dev/nvme0
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite\&.
   070701015D6DF9000081A4000003E80000006400000001642C0FB60000487C000000000000004A00000000000000000000003D00000000nvme-cli/Documentation/nvme-wdc-get-latency-monitor-log.html  <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-wdc-get-latency-monitor-log(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-wdc-get-latency-monitor-log(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-wdc-get-latency-monitor-log -
   Display latency monitor log page data in human readable format
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme wdc get-latency-monitor-log</em> &lt;device&gt; [--output-format=&lt;normal|json&gt; -o &lt;normal|json&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, latency monitor log page data.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory NVMe character device (ex: /dev/nvme0).</p></div>
<div class="paragraph"><p>This will only work on WDC devices supporting this log page.
Results for any other device are undefined.</p></div>
<div class="paragraph"><p>On success it returns 0, error code otherwise.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-o &lt;format&gt;
</dt>
<dt class="hdlist1">
--output-format=&lt;format&gt;
</dt>
<dd>
<p>
        Set the reporting format to <em>normal</em> or <em>json</em>. Only one output format
        can be used at a time. The default is normal.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Displays the get latency monitor log for the device:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme wdc get-latency-monitor-log /dev/nvme0</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite.</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
070701015D6DFA000081A4000003E80000006400000001642C0FB600000C3E000000000000004A00000000000000000000003100000000nvme-cli/Documentation/nvme-wdc-get-pfail-dump.1  '\" t
.\"     Title: nvme-wdc-get-pfail-dump
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-WDC\-GET\-PFAI" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-wdc-get-pfail-dump \- Retrieve WDC device\*(Aqs pfail crash dump\&.
.SH "SYNOPSIS"
.sp
.nf
\fInvme wdc get\-pfail\-dump\fR <device> [\-\-output\-file=<FILE>, \-o <FILE>]
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, sends the WDC vendor unique pfail crash dump request and saves the result to file\&. In current implementation pfail crash dump is captured if it is present\&. On success it will save the dump in file with appropriate suffix\&. Note that this command will clear the available dump from the device on success\&.
.sp
The <device> parameter is mandatory NVMe character device (ex: /dev/nvme0)\&.
.sp
This will only work on WDC devices supporting this feature\&. Results for any other device are undefined\&.
.SH "OPTIONS"
.PP
\-o <FILE>, \-\-output\-file=<FILE>
.RS 4
Output file; defaults to device serial number followed by "pfail_dump" suffix
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Gets the pfail crash dump from the device and saves to default file in current directory (e\&.g\&. STM00019F3F9_pfail_dump\&.bin):
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme wdc get\-pfail\-dump /dev/nvme0
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Gets the pfail crash dump from the device and saves to defined file in current directory (e\&.g\&. testSTM00019F3F9_pfail_dump\&.bin):
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme wdc get\-pfail\-dump /dev/nvme0 \-o test
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Gets the pfail crash dump from the device and saves to defined file with pathname (e\&.g\&. /tmp/testSTM00019F3F9_pfail_dump\&.bin):
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme wdc get\-pfail\-dump /dev/nvme0 \-o /tmp/test
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite
  070701015D6DFB000081A4000003E80000006400000001642C0FB600004B32000000000000004A00000000000000000000003400000000nvme-cli/Documentation/nvme-wdc-get-pfail-dump.html   <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-wdc-get-pfail-dump(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-wdc-get-pfail-dump(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-wdc-get-pfail-dump -
   Retrieve WDC device's pfail crash dump.
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme wdc get-pfail-dump</em> &lt;device&gt; [--output-file=&lt;FILE&gt;, -o &lt;FILE&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, sends the WDC vendor unique pfail crash dump
request and saves the result to file. In current implementation pfail crash
dump is captured if it is present. On success it will save the dump in file
with appropriate suffix. Note that this command will clear the available
dump from the device on success.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory NVMe character device (ex: /dev/nvme0).</p></div>
<div class="paragraph"><p>This will only work on WDC devices supporting this feature.
Results for any other device are undefined.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-o &lt;FILE&gt;
</dt>
<dt class="hdlist1">
--output-file=&lt;FILE&gt;
</dt>
<dd>
<p>
        Output file; defaults to device serial number followed by "pfail_dump" suffix
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Gets the pfail crash dump from the device and saves to default file in current directory
(e.g. STM00019F3F9_pfail_dump.bin):
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme wdc get-pfail-dump /dev/nvme0</code></pre>
</div></div>
</li>
<li>
<p>
Gets the pfail crash dump from the device and saves to defined file in current directory
(e.g. testSTM00019F3F9_pfail_dump.bin):
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme wdc get-pfail-dump /dev/nvme0 -o test</code></pre>
</div></div>
</li>
<li>
<p>
Gets the pfail crash dump from the device and saves to defined file with pathname (e.g. /tmp/testSTM00019F3F9_pfail_dump.bin):
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme wdc get-pfail-dump /dev/nvme0 -o /tmp/test</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
  070701015D6DFC000081A4000003E80000006400000001642C0FB600000A18000000000000004A00000000000000000000003B00000000nvme-cli/Documentation/nvme-wdc-get-unsupported-reqs-log.1    '\" t
.\"     Title: nvme-wdc-get-unsupported-reqs-log
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-WDC\-GET\-UNSU" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-wdc-get-unsupported-reqs-log \- Send NVMe WDC get\-unsupported\-reqs\-log plugin command, return parsed log output
.SH "SYNOPSIS"
.sp
.nf
\fInvme wdc get\-unsupported\-reqs\-log\fR <device> [\-\-output\-format=<normal|json>
\-o <normal|json>]
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, send a WDC plugin get\-unsupported\-reqs\-log command and output the unsupported requirements log data\&. The \-\-output\-format option will format the output as specified\&.
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0)\&.
.sp
This will only work on WDC devices supporting this log page\&. Results for any other device are undefined\&.
.sp
On success it returns the parsed unsupported requirements log page data, error code otherwise\&.
.SH "OPTIONS"
.PP
\-o <format>, \-\-output\-format=<format>
.RS 4
Set the reporting format to
\fInormal\fR, or
\fIjson\fR\&. Only one output format can be used at a time\&. Default is normal\&.
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Has the program issue WDC get\-unsupported\-reqs\-log plugin command :
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme wdc get\-unsupported\-reqs\-log /dev/nvme0
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite\&.
070701015D6DFD000081A4000003E80000006400000001642C0FB6000049C0000000000000004A00000000000000000000003E00000000nvme-cli/Documentation/nvme-wdc-get-unsupported-reqs-log.html <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-wdc-get-unsupported-reqs-log(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-wdc-get-unsupported-reqs-log(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-wdc-get-unsupported-reqs-log -
   Send NVMe WDC get-unsupported-reqs-log                                                                         plugin command, return parsed log output
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme wdc get-unsupported-reqs-log</em> &lt;device&gt; [--output-format=&lt;normal|json&gt;
-o &lt;normal|json&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, send a WDC plugin get-unsupported-reqs-log command
and output the unsupported requirements log data. The --output-format option
will format the output as specified.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0).</p></div>
<div class="paragraph"><p>This will only work on WDC devices supporting this log page.
Results for any other device are undefined.</p></div>
<div class="paragraph"><p>On success it returns the parsed unsupported requirements log page data, error
code otherwise.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-o &lt;format&gt;
</dt>
<dt class="hdlist1">
--output-format=&lt;format&gt;
</dt>
<dd>
<p>
        Set the reporting format to <em>normal</em>, or
        <em>json</em>. Only one output format can be used at a time.
        Default is normal.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Has the program issue WDC get-unsupported-reqs-log plugin command :
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme wdc get-unsupported-reqs-log /dev/nvme0</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite.</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
070701015D6DFE000081A4000003E80000006400000001642C0FB600000CD3000000000000004A00000000000000000000002A00000000nvme-cli/Documentation/nvme-wdc-id-ctrl.1 '\" t
.\"     Title: nvme-wdc-id-ctrl
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-WDC\-ID\-CTRL" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-wdc-id-ctrl \- Send NVMe Identify Controller, return result and structure
.SH "SYNOPSIS"
.sp
.nf
\fInvme wdc id\-ctrl\fR <device> [\-v | \-\-vendor\-specific] [\-b | \-\-raw\-binary]
                        [\-H | \-\-human\-readable]
                        [\-o <fmt> | \-\-output\-format=<fmt>]
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, sends an identify controller command and provides the result and returned structure\&.
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1)\&.
.sp
This will only work on WDC devices supporting this feature\&. Results for any other device are undefined\&.
.sp
On success, the structure may be returned in one of several ways depending on the option flags; the structure may be parsed by the program or the raw buffer may be printed to stdout\&.
.sp
If having the program decode the output for readability, this version will decode WDC vendor unique portions of the structure\&.
.SH "OPTIONS"
.PP
\-b, \-\-raw\-binary
.RS 4
Print the raw buffer to stdout\&. Structure is not parsed by program\&. This overrides the vendor specific and human readable options\&.
.RE
.PP
\-v, \-\-vendor\-specific
.RS 4
In addition to parsing known fields, this option will dump the vendor specific region of the structure in hex with ascii interpretation\&.
.RE
.PP
\-H, \-\-human\-readable
.RS 4
This option will parse and format many of the bit fields into human\-readable formats\&.
.RE
.PP
\-o <format>, \-\-output\-format=<format>
.RS 4
Set the reporting format to
\fInormal\fR,
\fIjson\fR, or
\fIbinary\fR\&. Only one output format can be used at a time\&.
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Has the program interpret the returned buffer and display the known fields in a human readable format:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme wdc id\-ctrl /dev/nvme0
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite
 070701015D6DFF000081A4000003E80000006400000001642C0FB600004D4C000000000000004A00000000000000000000002D00000000nvme-cli/Documentation/nvme-wdc-id-ctrl.html  <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-wdc-id-ctrl(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-wdc-id-ctrl(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-wdc-id-ctrl -
   Send NVMe Identify Controller, return result and structure
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme wdc id-ctrl</em> &lt;device&gt; [-v | --vendor-specific] [-b | --raw-binary]
                        [-H | --human-readable]
                        [-o &lt;fmt&gt; | --output-format=&lt;fmt&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, sends an identify controller command and
provides the result and returned structure.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).</p></div>
<div class="paragraph"><p>This will only work on WDC devices supporting this feature.
Results for any other device are undefined.</p></div>
<div class="paragraph"><p>On success, the structure may be returned in one of several ways depending
on the option flags; the structure may be parsed by the program or the
raw buffer may be printed to stdout.</p></div>
<div class="paragraph"><p>If having the program decode the output for readability, this version
will decode WDC vendor unique portions of the structure.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-b
</dt>
<dt class="hdlist1">
--raw-binary
</dt>
<dd>
<p>
        Print the raw buffer to stdout. Structure is not parsed by
        program. This overrides the vendor specific and human readable options.
</p>
</dd>
<dt class="hdlist1">
-v
</dt>
<dt class="hdlist1">
--vendor-specific
</dt>
<dd>
<p>
        In addition to parsing known fields, this option will dump
        the vendor specific region of the structure in hex with ascii
        interpretation.
</p>
</dd>
<dt class="hdlist1">
-H
</dt>
<dt class="hdlist1">
--human-readable
</dt>
<dd>
<p>
        This option will parse and format many of the bit fields
        into human-readable formats.
</p>
</dd>
<dt class="hdlist1">
-o &lt;format&gt;
</dt>
<dt class="hdlist1">
--output-format=&lt;format&gt;
</dt>
<dd>
<p>
              Set the reporting format to <em>normal</em>, <em>json</em>, or
              <em>binary</em>. Only one output format can be used at a time.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Has the program interpret the returned buffer and display the known
fields in a human readable format:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme wdc id-ctrl /dev/nvme0</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
070701015D6E00000081A4000003E80000006400000001642C0FB6000009C7000000000000004A00000000000000000000003500000000nvme-cli/Documentation/nvme-wdc-log-page-directory.1  '\" t
.\"     Title: nvme-wdc-log-page-directory
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-WDC\-LOG\-PAGE" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-wdc-log-page-directory \- Retrieves the list of Log IDs supported by the drive
.SH "SYNOPSIS"
.sp
.nf
\fInvme wdc log\-page\-directory\fR <device> [\-\-output\-format=<normal|json|binary> \-o <normal|json|binary>]
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, retrieves the log page directory which contains the list of log page IDs supported by the drive\&. The \-\-output\-format option will format the output as specified\&.
.sp
The <device> parameter is mandatory and must be the NVMe character device (ex: /dev/nvme0)\&.
.sp
This will only work on WDC devices supporting this feature\&. Results for any other device are undefined\&.
.sp
On success it returns the log page directory information, error code otherwise\&.
.SH "OPTIONS"
.PP
\-o <format>, \-\-output\-format=<format>
.RS 4
Set the reporting format to
\fInormal\fR,
\fIjson\fR, or
\fIbinary\fR\&. Only one output format can be used at a time\&. The default is normal\&.
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
WDC log\-page\-directory example command :
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme wdc log\-page\-directory /dev/nvme0
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite\&.
 070701015D6E01000081A4000003E80000006400000001642C0FB600004922000000000000004A00000000000000000000003800000000nvme-cli/Documentation/nvme-wdc-log-page-directory.html   <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-wdc-log-page-directory(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-wdc-log-page-directory(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-wdc-log-page-directory -
   Retrieves the list of Log IDs supported by the drive
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme wdc log-page-directory</em> &lt;device&gt; [--output-format=&lt;normal|json|binary&gt; -o &lt;normal|json|binary&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, retrieves the log page directory which contains the list of
log page IDs supported by the drive.  The --output-format option will format the output as
specified.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and must be the NVMe character device (ex: /dev/nvme0).</p></div>
<div class="paragraph"><p>This will only work on WDC devices supporting this feature.
Results for any other device are undefined.</p></div>
<div class="paragraph"><p>On success it returns the log page directory information, error code otherwise.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-o &lt;format&gt;
</dt>
<dt class="hdlist1">
--output-format=&lt;format&gt;
</dt>
<dd>
<p>
        Set the reporting format to <em>normal</em>, <em>json</em>, or <em>binary</em>. Only one output format
        can be used at a time. The default is normal.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
WDC log-page-directory example command :
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme wdc log-page-directory /dev/nvme0</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite.</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
  070701015D6E02000081A4000003E80000006400000001642C0FB600000B78000000000000004A00000000000000000000003300000000nvme-cli/Documentation/nvme-wdc-namespace-resize.1    '\" t
.\"     Title: nvme-wdc-namespace-resize
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-WDC\-NAMESPACE" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-wdc-namespace-resize \- Resizes the device\*(Aqs namespace\&.
.SH "SYNOPSIS"
.sp
.nf
\fInvme wdc namespace\-resize\fR <device> [\-\-nsid=<NAMSPACE ID>, \-n <NAMSPACE ID>] [\-\-op_option=<OP OPTION>, \-o <OP OPTION>]
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, sends the WDC Vendor Specific Command that modifies the namespace size reported by the device\&.
.sp
The <device> parameter is mandatory NVMe character device (ex: /dev/nvme0)\&.
.sp
This will only work on WDC devices supporting this feature\&. Results for any other device are undefined\&.
.SH "OPTIONS"
.PP
\-n <NAMSPACE ID>, \-\-namespace\-id=<NAMSPACE_ID>
.RS 4
Namespace ID; ID of the namespace to resize
.RE
.PP
\-o <OP OPTION>, \-\-op\-option=<OP OPTION>
.RS 4
Overprovisioning Option; defaults to 0xF
.sp
.if n \{\
.RS 4
.\}
.nf
Valid Values:
0x1 \- 7% of Original TNVMCAP reported value
0x2 \- 28% of Original TNVMCAP reported value
0x3 \- 50% of Original TNVMCAP reported value
0xF \- 0% of Original TNVMCAP reported value (original config)
All other values \- reserved
.fi
.if n \{\
.RE
.\}
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Resizes namespace 1 to 50% of the original TNVMCAP reported value:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme wdc namespace\-resize /dev/nvme0 \-n 1 \-o 3
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Resizes namespace 2 to 7% of the original TNVMCAP reported value:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme wdc namespace\-resize /dev/nvme0 \-\-namespace\-id=2 \-\-op\-option=1
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite\&.
070701015D6E03000081A4000003E80000006400000001642C0FB600004B12000000000000004A00000000000000000000003600000000nvme-cli/Documentation/nvme-wdc-namespace-resize.html <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-wdc-namespace-resize(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-wdc-namespace-resize(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-wdc-namespace-resize -
   Resizes the device's namespace.
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme wdc namespace-resize</em> &lt;device&gt; [--nsid=&lt;NAMSPACE ID&gt;, -n &lt;NAMSPACE ID&gt;] [--op_option=&lt;OP OPTION&gt;, -o &lt;OP OPTION&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, sends the WDC Vendor Specific Command that modifies the namespace size reported
by the device.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory NVMe character device (ex: /dev/nvme0).</p></div>
<div class="paragraph"><p>This will only work on WDC devices supporting this feature.
Results for any other device are undefined.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-n &lt;NAMSPACE ID&gt;
</dt>
<dt class="hdlist1">
--namespace-id=&lt;NAMSPACE_ID&gt;
</dt>
<dd>
<p>
        Namespace ID; ID of the namespace to resize
</p>
</dd>
<dt class="hdlist1">
-o &lt;OP OPTION&gt;
</dt>
<dt class="hdlist1">
--op-option=&lt;OP OPTION&gt;
</dt>
<dd>
<p>
    Overprovisioning Option; defaults to 0xF
</p>
<div class="literalblock">
<div class="content">
<pre><code>Valid Values:
0x1 - 7% of Original TNVMCAP reported value
0x2 - 28% of Original TNVMCAP reported value
0x3 - 50% of Original TNVMCAP reported value
0xF - 0% of Original TNVMCAP reported value (original config)
All other values - reserved</code></pre>
</div></div>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Resizes namespace 1 to 50% of the original TNVMCAP reported value:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme wdc namespace-resize /dev/nvme0 -n 1 -o 3</code></pre>
</div></div>
</li>
<li>
<p>
Resizes namespace 2 to 7% of the original TNVMCAP reported value:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme wdc namespace-resize /dev/nvme0 --namespace-id=2 --op-option=1</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite.</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
  070701015D6E04000081A4000003E80000006400000001642C0FB600000A91000000000000004A00000000000000000000003000000000nvme-cli/Documentation/nvme-wdc-purge-monitor.1   '\" t
.\"     Title: nvme-wdc-purge-monitor
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-WDC\-PURGE\-MO" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-wdc-purge-monitor \- Send NVMe WDC Purge\-Monitor Vendor Unique Command, return result
.SH "SYNOPSIS"
.sp
.nf
\fInvme wdc purge\-monitor\fR <device>
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, send a Vendor Unique WDC Purge\-Monitor command and provide the status of the purge command\&.
.sp
Expected status and description :\-
.TS
allbox tab(:);
ltB ltB.
T{
Status Code
T}:T{
Description
T}
.T&
lt lt
lt lt
lt lt
lt lt
lt lt.
T{
.sp
0x00
T}:T{
.sp
Purge State Idle\&.
T}
T{
.sp
0x01
T}:T{
.sp
Purge State Done\&.
T}
T{
.sp
0x02
T}:T{
.sp
Purge State Busy\&.
T}
T{
.sp
0x03
T}:T{
.sp
Purge State Error : Purge operation resulted in error, power cycle required\&.
T}
T{
.sp
0x04
T}:T{
.sp
Purge State Error : Purge operation interrupted by power cycle or reset\&.
T}
.TE
.sp 1
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1)\&.
.sp
This will only work on WDC devices supporting this feature\&. Results for any other device are undefined\&.
.sp
On success it returns 0, error code otherwise\&.
.SH "OPTIONS"
.sp
No options yet\&.
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Has the program issue WDC Purge\-Monitor Vendor Unique Command :
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme wdc purge\-monitor /dev/nvme0
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite\&.
   070701015D6E05000081A4000003E80000006400000001642C0FB600004C79000000000000004A00000000000000000000003300000000nvme-cli/Documentation/nvme-wdc-purge-monitor.html    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-wdc-purge-monitor(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-wdc-purge-monitor(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-wdc-purge-monitor -
   Send NVMe WDC Purge-Monitor Vendor Unique Command, return result
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme wdc purge-monitor</em> &lt;device&gt;</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, send a Vendor Unique WDC Purge-Monitor command and
provide the status of the purge command.</p></div>
<div class="paragraph"><p>Expected status and description :-</p></div>
<div class="tableblock">
<table rules="all"
width="100%"
frame="border"
cellspacing="0" cellpadding="4">
<col width="50%" />
<col width="50%" />
<thead>
<tr>
<th align="left" valign="top">Status Code </th>
<th align="left" valign="top">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left" valign="top"><p class="table">0x00</p></td>
<td align="left" valign="top"><p class="table">Purge State Idle.</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">0x01</p></td>
<td align="left" valign="top"><p class="table">Purge State Done.</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">0x02</p></td>
<td align="left" valign="top"><p class="table">Purge State Busy.</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">0x03</p></td>
<td align="left" valign="top"><p class="table">Purge State Error : Purge operation resulted in error, power cycle required.</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">0x04</p></td>
<td align="left" valign="top"><p class="table">Purge State Error : Purge operation interrupted by power cycle or reset.</p></td>
</tr>
</tbody>
</table>
</div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).</p></div>
<div class="paragraph"><p>This will only work on WDC devices supporting this feature.
Results for any other device are undefined.</p></div>
<div class="paragraph"><p>On success it returns 0, error code otherwise.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="paragraph"><p>No options yet.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Has the program issue WDC Purge-Monitor Vendor Unique Command :
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme wdc purge-monitor /dev/nvme0</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite.</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
   070701015D6E06000081A4000003E80000006400000001642C0FB600000857000000000000004A00000000000000000000002800000000nvme-cli/Documentation/nvme-wdc-purge.1   '\" t
.\"     Title: nvme-wdc-purge
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-WDC\-PURGE" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-wdc-purge \- Send NVMe WDC Purge Vendor Unique Command, return result
.SH "SYNOPSIS"
.sp
.nf
\fInvme wdc purge\fR <device>
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, sends a Vendor Unique WDC Purge command and provides the result\&.
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1)\&.
.sp
This will only work on WDC devices supporting this feature\&. Results for any other device are undefined\&.
.sp
On success it returns 0, error code otherwise\&.
.SH "OPTIONS"
.sp
No options yet\&.
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Has the program issue WDC Purge Vendor Unique Command :
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme wdc purge /dev/nvme0n1
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite\&.
 070701015D6E07000081A4000003E80000006400000001642C0FB600004742000000000000004A00000000000000000000002B00000000nvme-cli/Documentation/nvme-wdc-purge.html    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-wdc-purge(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-wdc-purge(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-wdc-purge -
   Send NVMe WDC Purge Vendor Unique Command, return result
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme wdc purge</em> &lt;device&gt;</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, sends a Vendor Unique WDC Purge command and
provides the result.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).</p></div>
<div class="paragraph"><p>This will only work on WDC devices supporting this feature.
Results for any other device are undefined.</p></div>
<div class="paragraph"><p>On success it returns 0, error code otherwise.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="paragraph"><p>No options yet.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Has the program issue WDC Purge Vendor Unique Command :
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme wdc purge /dev/nvme0n1</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite.</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
  070701015D6E08000081A4000003E80000006400000001642C0FB600000AA8000000000000004A00000000000000000000002F00000000nvme-cli/Documentation/nvme-wdc-vs-cloud-log.1    '\" t
.\"     Title: nvme-wdc-vs-cloud-log
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-WDC\-VS\-CLOUD" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-wdc-vs-cloud-log \- Send NVMe WDC vs\-cloud\-log Vendor Unique Command, return result
.SH "SYNOPSIS"
.sp
.nf
\fInvme wdc vs\-cloud\-log\fR <device> [\-\-output\-format=<normal|json> \-o <normal|json>]
                        [\-\-namespace\-id=<nsid> | \-n <nsid>]
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, send a Vendor Unique WDC vs\-cloud\-log command and provide the smart/health log\&.
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0) or block device (ex: /dev/nvme0n1)\&.
.sp
This will only work on WDC devices supporting this feature\&. Results for any other device are undefined\&.
.sp
On success it returns 0, error code otherwise\&.
.SH "OPTIONS"
.PP
\-o <format>, \-\-output\-format=<format>
.RS 4
Set the reporting format to
\fInormal\fR, or
\fIjson\fR\&. Only one output format can be used at a time\&. Default is normal\&.
.RE
.PP
\-n <nsid>, \-\-namespace\-id=<nsid>
.RS 4
Sets the command\(cqs nsid value to the given nsid\&. Defaults to 0xffffffff if not given\&. This option may not affect anything depending on the log page, which may or may not be specific to a namespace\&.
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Has the program issue WDC vs\-cloud\-log Vendor Unique Command :
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme wdc vs\-cloud\-log /dev/nvme0
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite\&.
070701015D6E09000081A4000003E80000006400000001642C0FB600004A7A000000000000004A00000000000000000000003200000000nvme-cli/Documentation/nvme-wdc-vs-cloud-log.html <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-wdc-vs-cloud-log(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-wdc-vs-cloud-log(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-wdc-vs-cloud-log -
   Send NVMe WDC vs-cloud-log Vendor Unique Command, return result
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme wdc vs-cloud-log</em> &lt;device&gt; [--output-format=&lt;normal|json&gt; -o &lt;normal|json&gt;]
                        [--namespace-id=&lt;nsid&gt; | -n &lt;nsid&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, send a Vendor Unique WDC vs-cloud-log command and
provide the smart/health log.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0) or block device (ex: /dev/nvme0n1).</p></div>
<div class="paragraph"><p>This will only work on WDC devices supporting this feature.
Results for any other device are undefined.</p></div>
<div class="paragraph"><p>On success it returns 0, error code otherwise.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-o &lt;format&gt;
</dt>
<dt class="hdlist1">
--output-format=&lt;format&gt;
</dt>
<dd>
<p>
        Set the reporting format to <em>normal</em>, or
        <em>json</em>. Only one output format can be used at a time.
        Default is normal.
</p>
</dd>
<dt class="hdlist1">
-n &lt;nsid&gt;
</dt>
<dt class="hdlist1">
--namespace-id=&lt;nsid&gt;
</dt>
<dd>
<p>
        Sets the command&#8217;s nsid value to the given nsid. Defaults to
        0xffffffff if not given. This option may not affect anything
        depending on the log page, which may or may not be specific to
        a namespace.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Has the program issue WDC vs-cloud-log Vendor Unique Command :
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme wdc vs-cloud-log /dev/nvme0</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite.</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
  070701015D6E0A000081A4000003E80000006400000001642C0FB600000AA5000000000000004A00000000000000000000003000000000nvme-cli/Documentation/nvme-wdc-vs-device-waf.1   '\" t
.\"     Title: nvme-wdc-vs-device-waf
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-WDC\-VS\-DEVIC" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-wdc-vs-device-waf \- Calculates the device write amplification factor and prints both TLC and SLC results
.SH "SYNOPSIS"
.sp
.nf
\fInvme wdc vs\-device\-waf\fR <device> [\-\-output\-format=<normal|json> \-o <normal|json>]
                        [\-\-namespace\-id=<nsid> | \-n <nsid>]
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, calculates the device TLC and SLC write amplification factor\&.
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0) or block device (ex: /dev/nvme0n1)\&.
.sp
This will only work on WDC devices supporting this feature\&. Results for any other device are undefined\&.
.sp
On success it returns 0, error code otherwise\&.
.SH "OPTIONS"
.PP
\-o <format>, \-\-output\-format=<format>
.RS 4
Set the reporting format to
\fInormal\fR, or
\fIjson\fR\&. Only one output format can be used at a time\&. Default is normal\&.
.RE
.PP
\-n <nsid>, \-\-namespace\-id=<nsid>
.RS 4
Sets the command\(cqs nsid value to the given nsid\&. Defaults to 0xffffffff if not given\&. This option may not affect anything depending on the log page, which may or may not be specific to a namespace\&.
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Has the program issue WDC vs\-device\-waf plugin Command :
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme wdc vs\-device\-waf /dev/nvme0
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite\&.
   070701015D6E0B000081A4000003E80000006400000001642C0FB600004A7C000000000000004A00000000000000000000003300000000nvme-cli/Documentation/nvme-wdc-vs-device-waf.html    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-wdc-vs-device-waf(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-wdc-vs-device-waf(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-wdc-vs-device-waf -
   Calculates the device write amplification factor and prints both TLC and SLC results
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme wdc vs-device-waf</em> &lt;device&gt; [--output-format=&lt;normal|json&gt; -o &lt;normal|json&gt;]
                        [--namespace-id=&lt;nsid&gt; | -n &lt;nsid&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, calculates the device TLC and SLC write
amplification factor.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0) or block device (ex: /dev/nvme0n1).</p></div>
<div class="paragraph"><p>This will only work on WDC devices supporting this feature.
Results for any other device are undefined.</p></div>
<div class="paragraph"><p>On success it returns 0, error code otherwise.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-o &lt;format&gt;
</dt>
<dt class="hdlist1">
--output-format=&lt;format&gt;
</dt>
<dd>
<p>
        Set the reporting format to <em>normal</em>, or
        <em>json</em>. Only one output format can be used at a time.
        Default is normal.
</p>
</dd>
<dt class="hdlist1">
-n &lt;nsid&gt;
</dt>
<dt class="hdlist1">
--namespace-id=&lt;nsid&gt;
</dt>
<dd>
<p>
        Sets the command&#8217;s nsid value to the given nsid. Defaults to
        0xffffffff if not given. This option may not affect anything
        depending on the log page, which may or may not be specific to
        a namespace.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Has the program issue WDC vs-device-waf plugin Command :
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme wdc vs-device-waf /dev/nvme0</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite.</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
070701015D6E0C000081A4000003E80000006400000001642C0FB60000086F000000000000004A00000000000000000000003000000000nvme-cli/Documentation/nvme-wdc-vs-drive-info.1   '\" t
.\"     Title: nvme-wdc-vs-drive-info
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-WDC\-VS\-DRIVE" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-wdc-vs-drive-info \- Send the NVMe WDC vs\-drive\-info command, return result
.SH "SYNOPSIS"
.sp
.nf
\fInvme wdc vs\-drive\-info\fR <device>
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, send the unique WDC vs\-drive\-info command and provide the additional drive information\&.
.sp
The <device> parameter is mandatory and must be the NVMe character device (ex: /dev/nvme0)\&.
.sp
This will only work on WDC devices supporting this feature\&. Results for any other device are undefined\&.
.sp
On success it returns 0, error code otherwise\&.
.SH "OUTPUT EXPLANATION"
.sp
There are several different fields returned from this command depending on the drive:
.sp
Drive HW Revision
.sp
FTL Unit Size
.sp
Customer Serial Number
.sp
HyperScale Boot Version
.sp
TCG Device Ownership
.SH "EXAMPLE"
.sp
# nvme wdc vs\-drive\-info /dev/nvme0
.SH "NVME"
.sp
Part of the nvme\-user suite\&.
 070701015D6E0D000081A4000003E80000006400000001642C0FB600004813000000000000004A00000000000000000000003300000000nvme-cli/Documentation/nvme-wdc-vs-drive-info.html    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-wdc-vs-drive-info(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-wdc-vs-drive-info(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-wdc-vs-drive-info -
   Send the NVMe WDC vs-drive-info command, return result
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme wdc vs-drive-info</em> &lt;device&gt;</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, send the unique WDC vs-drive-info command and
provide the additional drive information.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and must be the NVMe character
device (ex: /dev/nvme0).</p></div>
<div class="paragraph"><p>This will only work on WDC devices supporting this feature.
Results for any other device are undefined.</p></div>
<div class="paragraph"><p>On success it returns 0, error code otherwise.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_output_explanation">Output Explanation</h2>
<div class="sectionbody">
<div class="paragraph"><p>There are several different fields returned from this command depending
on the drive:</p></div>
<div class="paragraph"><p>Drive HW Revision</p></div>
<div class="paragraph"><p>FTL Unit Size</p></div>
<div class="paragraph"><p>Customer Serial Number</p></div>
<div class="paragraph"><p>HyperScale Boot Version</p></div>
<div class="paragraph"><p>TCG Device Ownership</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_example">EXAMPLE</h2>
<div class="sectionbody">
<div class="paragraph"><p># nvme wdc vs-drive-info /dev/nvme0</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite.</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
 070701015D6E0E000081A4000003E80000006400000001642C0FB600000D27000000000000004A00000000000000000000003D00000000nvme-cli/Documentation/nvme-wdc-vs-error-reason-identifier.1  '\" t
.\"     Title: nvme-wdc-vs-error-reason-identifier
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-WDC\-VS\-ERROR" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-wdc-vs-error-reason-identifier \- Retrieve WDC device\*(Aqs telemetry log error reason identifier field
.SH "SYNOPSIS"
.sp
.nf
\fInvme wdc vs\-error\-reason\-identifier\fR <device> [\-\-log\-id=<NUM>, \-i <NUM>] [\-\-file=<FILE>, \-o <FILE>]
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, retrieve the telemetry log error reason id field for either the host generated or controller initiated log\&. The controller initiated telemetry log page option must be enabled to retrieve the error reason id for that log page id\&.
.sp
The <device> parameter is mandatory and must be the NVMe character device (ex: /dev/nvme0)\&.
.sp
This will only work on WDC devices supporting this feature\&. Results for any other device are undefined\&.
.sp
On success it returns 0, error code otherwise\&.
.SH "OPTIONS"
.PP
\-i <id>, \-\-log\-id=<id>
.RS 4
Specifies the telemetry log id of the error reason identifier to retrieve\&. Use id 7 for the host generated log page\&. Use id 8 for the controller initiated log page\&. The default is 7/host generated
.RE
.PP
\-o <FILE>, \-\-output\-file=<FILE>
.RS 4
Output file; defaults to "<device serial number>_error_reason_identifier_host_<date>_<time>\&.bin" for the host generated log or "<device serial number>_error_reason_identifier_ctlr_<date>_<time>\&.bin" for the controller initiated log\&.
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Retrieves the host generated error reason identifier field and save it in file host_gen_error_reason_id\&.bin\&.
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme wdc vs\-error\-reason\-identifier /dev/nvme0 \-i 7 \-o host_gen_error_reason_id\&.bin
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Retrieves the controller initiated error reason identifier field and save it in file ctlr_init_error_reason_id\&.bin\&.
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme wdc vs\-error\-reason\-identifier /dev/nvme0 \-i 8 \-o ctlr_init_error_reason_id\&.bin
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite\&.
 070701015D6E0F000081A4000003E80000006400000001642C0FB600004CFE000000000000004A00000000000000000000004000000000nvme-cli/Documentation/nvme-wdc-vs-error-reason-identifier.html   <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-wdc-vs-error-reason-identifier(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-wdc-vs-error-reason-identifier(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-wdc-vs-error-reason-identifier -
   Retrieve WDC device's telemetry log error reason identifier field
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme wdc vs-error-reason-identifier</em> &lt;device&gt; [--log-id=&lt;NUM&gt;, -i &lt;NUM&gt;] [--file=&lt;FILE&gt;, -o &lt;FILE&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, retrieve the telemetry log error reason id field for either the host generated or
controller initiated log.  The controller initiated telemetry log page option must be enabled to retrieve the
error reason id for that log page id.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and must be the NVMe character device (ex: /dev/nvme0).</p></div>
<div class="paragraph"><p>This will only work on WDC devices supporting this feature.
Results for any other device are undefined.</p></div>
<div class="paragraph"><p>On success it returns 0, error code otherwise.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-i &lt;id&gt;
</dt>
<dt class="hdlist1">
--log-id=&lt;id&gt;
</dt>
<dd>
<p>
        Specifies the telemetry log id of the error reason identifier to retrieve.
        Use id 7 for the host generated log page.
        Use id 8 for the controller initiated log page.
        The default is 7/host generated
</p>
</dd>
<dt class="hdlist1">
-o &lt;FILE&gt;
</dt>
<dt class="hdlist1">
--output-file=&lt;FILE&gt;
</dt>
<dd>
<p>
        Output file; defaults to "&lt;device serial number&gt;_error_reason_identifier_host_&lt;date&gt;_&lt;time&gt;.bin" for
        the host generated log or "&lt;device serial number&gt;_error_reason_identifier_ctlr_&lt;date&gt;_&lt;time&gt;.bin" for
        the controller initiated log.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Retrieves the host generated error reason identifier field and save it in file host_gen_error_reason_id.bin.
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme wdc vs-error-reason-identifier /dev/nvme0 -i 7 -o host_gen_error_reason_id.bin</code></pre>
</div></div>
</li>
<li>
<p>
Retrieves the controller initiated error reason identifier field and save it in file ctlr_init_error_reason_id.bin.
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme wdc vs-error-reason-identifier /dev/nvme0 -i 8 -o ctlr_init_error_reason_id.bin</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite.</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
  070701015D6E10000081A4000003E80000006400000001642C0FB600000DCD000000000000004A00000000000000000000003900000000nvme-cli/Documentation/nvme-wdc-vs-fw-activate-history.1  '\" t
.\"     Title: nvme-wdc-vs-fw-activate-history
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-WDC\-VS\-FW\-A" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-wdc-vs-fw-activate-history \- Execute NVMe WDC vs\-fw\-activate\-history Vendor Unique Command, return result
.SH "SYNOPSIS"
.sp
.nf
\fInvme wdc vs\-fw\-activate\-history\fR <device> [\-\-output\-format=<normal|json> \-o <normal|json>]
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, read a Vendor Unique WDC log page that returns the firmware activation history\&.
.sp
The <device> parameter is mandatory and must be the NVMe character device (ex: /dev/nvme0)\&.
.sp
This will only work on WDC devices supporting this feature\&. Results for any other device are undefined\&.
.sp
On success it returns 0, error code otherwise\&.
.SH "OPTIONS"
.PP
\-o <format>, \-\-output\-format=<format>
.RS 4
Set the reporting format to
\fInormal\fR, or
\fIjson\fR\&. Only one output format can be used at a time\&. Default is normal\&.
.RE
.SH "FIRMWARE ACTIVATE HISTORY LOG PAGE DATA OUTPUT EXPLANATION"
.TS
allbox tab(:);
ltB ltB.
T{
Field
T}:T{
Description
T}
.T&
lt lt
lt lt
lt lt
lt lt
lt lt
lt lt
lt lt
lt lt.
T{
.sp
\fBEntry Number\fR
T}:T{
.sp
The number of fw activate entry\&. The most recent 20 entries will be displayed\&.
T}
T{
.sp
\fBPower on Hour\fR
T}:T{
.sp
The time since the power on in hours:minutes:seconds\&.
T}
T{
.sp
\fBPower Cycle Count\fR
T}:T{
.sp
The power cycle count that the firmware activation occurred\&.
T}
T{
.sp
\fBCurrent Firmware\fR
T}:T{
.sp
The firmware level currently running on the SSD before the activation took place\&.
T}
T{
.sp
\fBNew Firmware\fR
T}:T{
.sp
The new firmware level running on the SSD after the activation took place\&.
T}
T{
.sp
\fBSlot Number\fR
T}:T{
.sp
The slot that the firmware is being activated from\&.
T}
T{
.sp
\fBCommit Action Type\fR
T}:T{
.sp
The commit action type associated with the firmware activation event
T}
T{
.sp
\fBResult\fR
T}:T{
.sp
The result of the firmware activation event\&. The output shall be in the format: Pass or Failed + error code
T}
.TE
.sp 1
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Has the program issue WDC vs\-fw\-activate\-history Vendor Unique Command :
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme wdc vs\-fw\-activate\-history /dev/nvme0
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite\&.
   070701015D6E11000081A4000003E80000006400000001642C0FB600005244000000000000004A00000000000000000000003C00000000nvme-cli/Documentation/nvme-wdc-vs-fw-activate-history.html   <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-wdc-vs-fw-activate-history(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-wdc-vs-fw-activate-history(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-wdc-vs-fw-activate-history -
   Execute NVMe WDC vs-fw-activate-history Vendor Unique Command, return result
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme wdc vs-fw-activate-history</em> &lt;device&gt; [--output-format=&lt;normal|json&gt; -o &lt;normal|json&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, read a Vendor Unique WDC log page that returns the firmware activation
history.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and must be the NVMe character device (ex: /dev/nvme0).</p></div>
<div class="paragraph"><p>This will only work on WDC devices supporting this feature.
Results for any other device are undefined.</p></div>
<div class="paragraph"><p>On success it returns 0, error code otherwise.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-o &lt;format&gt;
</dt>
<dt class="hdlist1">
--output-format=&lt;format&gt;
</dt>
<dd>
<p>
        Set the reporting format to <em>normal</em>, or
        <em>json</em>. Only one output format can be used at a time.
        Default is normal.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_firmware_activate_history_log_page_data_output_explanation">Firmware Activate History Log Page Data Output Explanation</h2>
<div class="sectionbody">
<div class="tableblock">
<table rules="all"
style="margin-left:auto; margin-right:auto;"
width="100%"
frame="hsides"
cellspacing="0" cellpadding="4">
<col width="50%" />
<col width="50%" />
<thead>
<tr>
<th align="left" valign="top">Field </th>
<th align="left" valign="top">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left" valign="top"><p class="table"><strong>Entry Number</strong></p></td>
<td align="left" valign="top"><p class="table">The number of fw activate entry.  The most recent 20 entries will be displayed.</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table"><strong>Power on Hour</strong></p></td>
<td align="left" valign="top"><p class="table">The time since the power on in hours:minutes:seconds.</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table"><strong>Power Cycle Count</strong></p></td>
<td align="left" valign="top"><p class="table">The power cycle count that the firmware activation occurred.</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table"><strong>Current Firmware</strong></p></td>
<td align="left" valign="top"><p class="table">The firmware level currently running on the SSD before the activation took place.</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table"><strong>New Firmware</strong></p></td>
<td align="left" valign="top"><p class="table">The new firmware level running on the SSD after the activation took place.</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table"><strong>Slot Number</strong></p></td>
<td align="left" valign="top"><p class="table">The slot that the firmware is being activated from.</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table"><strong>Commit Action Type</strong></p></td>
<td align="left" valign="top"><p class="table">The commit action type associated with the firmware activation event</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table"><strong>Result</strong></p></td>
<td align="left" valign="top"><p class="table">The result of the firmware activation event.  The output shall be in the format:
Pass or Failed + error code</p></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Has the program issue WDC vs-fw-activate-history Vendor Unique Command :
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme wdc vs-fw-activate-history /dev/nvme0</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite.</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
070701015D6E12000081A4000003E80000006400000001642C0FB600000A9B000000000000004A00000000000000000000003000000000nvme-cli/Documentation/nvme-wdc-vs-hw-rev-log.1   '\" t
.\"     Title: nvme-wdc-vs-hw-rev-log
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-WDC\-VS\-HW\-R" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-wdc-vs-hw-rev-log \- Send NVMe WDC vs\-hw\-rev\-log Vendor Unique Command, return result
.SH "SYNOPSIS"
.sp
.nf
\fInvme wdc vs\-hw\-rev\-log\fR <device> [\-\-output\-format=<normal|json> \-o <normal|json>]
                        [\-\-namespace\-id=<nsid> | \-n <nsid>]
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, retrieves and formats the Vendor Unique WDC hw revision log page\&.
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0) or block device (ex: /dev/nvme0n1)\&.
.sp
This will only work on WDC devices supporting this feature\&. Results for any other device are undefined\&.
.sp
On success it returns 0, error code otherwise\&.
.SH "OPTIONS"
.PP
\-o <format>, \-\-output\-format=<format>
.RS 4
Set the reporting format to
\fInormal\fR, or
\fIjson\fR\&. Only one output format can be used at a time\&. Default is normal\&.
.RE
.PP
\-n <nsid>, \-\-namespace\-id=<nsid>
.RS 4
Sets the command\(cqs nsid value to the given nsid\&. Defaults to 0xffffffff if not given\&. This option may not affect anything depending on the log page, which may or may not be specific to a namespace\&.
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Has the program issue WDC vs\-hw\-rev\-log plugin Command :
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme wdc vs\-hw\-rev\-log /dev/nvme0
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite\&.
 070701015D6E13000081A4000003E80000006400000001642C0FB600004A6B000000000000004A00000000000000000000003300000000nvme-cli/Documentation/nvme-wdc-vs-hw-rev-log.html    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-wdc-vs-hw-rev-log(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-wdc-vs-hw-rev-log(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-wdc-vs-hw-rev-log -
   Send NVMe WDC vs-hw-rev-log Vendor Unique Command, return result
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme wdc vs-hw-rev-log</em> &lt;device&gt; [--output-format=&lt;normal|json&gt; -o &lt;normal|json&gt;]
                        [--namespace-id=&lt;nsid&gt; | -n &lt;nsid&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, retrieves and formats the Vendor Unique WDC hw revision log page.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0) or block device (ex: /dev/nvme0n1).</p></div>
<div class="paragraph"><p>This will only work on WDC devices supporting this feature.
Results for any other device are undefined.</p></div>
<div class="paragraph"><p>On success it returns 0, error code otherwise.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-o &lt;format&gt;
</dt>
<dt class="hdlist1">
--output-format=&lt;format&gt;
</dt>
<dd>
<p>
        Set the reporting format to <em>normal</em>, or
        <em>json</em>. Only one output format can be used at a time.
        Default is normal.
</p>
</dd>
<dt class="hdlist1">
-n &lt;nsid&gt;
</dt>
<dt class="hdlist1">
--namespace-id=&lt;nsid&gt;
</dt>
<dd>
<p>
        Sets the command&#8217;s nsid value to the given nsid. Defaults to
        0xffffffff if not given. This option may not affect anything
        depending on the log page, which may or may not be specific to
        a namespace.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Has the program issue WDC vs-hw-rev-log plugin Command :
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme wdc vs-hw-rev-log /dev/nvme0</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite.</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
 070701015D6E14000081A4000003E80000006400000001642C0FB6000019B4000000000000004A00000000000000000000003200000000nvme-cli/Documentation/nvme-wdc-vs-internal-log.1 '\" t
.\"     Title: nvme-wdc-vs-internal-log
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-WDC\-VS\-INTER" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-wdc-vs-internal-log \- Retrieve WDC device\*(Aqs internal firmware log and save to file\&.
.SH "SYNOPSIS"
.sp
.nf
\fInvme wdc vs\-internal\-log\fR <device> [\-\-output\-file=<FILE>, \-o <FILE>] [\-\-transfer\-size=<SIZE>, \-s <SIZE>]
    [\-\-data\-area=<DATA AREA>, \-d <DATA_AREA>] [\-\-file\-size=<FILE SIZE>, \-f <FILE SIZE>] [\-\-offset=<OFFSET>, \-e <OFFSET>]
    [\-\-type=<TYPE>, \-t <type>] [\-\-verbose, \-v]
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, sends the WDC Vendor Specific Internal Log request and saves the result to a file\&.
.sp
The <device> parameter is mandatory NVMe character device (ex: /dev/nvme0)\&.
.sp
This will only work on WDC devices supporting this feature\&. Results for any other device are undefined\&.
.SH "OPTIONS"
.PP
\-o <FILE>, \-\-output\-file=<FILE>
.RS 4
Output file; defaults to device serial number followed by "\fIinternal_fw_log\fR<date>_<time>\&.bin" suffix
.RE
.PP
\-s <SIZE>, \-\-transfer\-size=<SIZE>
.RS 4
Transfer size; defaults to 0x10000 (65536 decimal) bytes
.RE
.PP
\-d <DATA AREA>, \-\-data\-area=<DATA AREA>
.RS 4
DUI data area to retrieve\&. The DUI data areas from 1 to <DATA AREA> will be retrieved\&. This parameter is currently only supported on the SN340, SN640, SN730, and SN840 devices\&.
.RE
.PP
\-f <FILE SIZE>, \-\-file\-size=<FILE SIZE>
.RS 4
Specifies the desired size of the data file starting at the passed in offset\&. This allows the user to retrieve the data in several smaller files of the passed in size\&. This parameter is currently only supported on the SN340 device\&.
.RE
.PP
\-e <OFFSET>, \-\-offset=<OFFSET>
.RS 4
Specifies the data offset at which to start retrieving the data\&. This parameter is used in combination with the file size parameter to retrieve the data in several smaller files\&. This parameter is currently only supported on the SN340 device\&.
.RE
.PP
\-t <TYPE>, \-\-type=<TYPE>
.RS 4
Specifies the telemetry type \- NONE, HOST, or CONTROLLER\&. This parameter is used to get either the host generated or controller initiated telemetry log page\&. If not specified or none is specified, the command will return the default E6 log data\&. This parameter is currently only supported on the SN640 and SN840 devices\&.
.RE
.PP
\-v <VERBOSE>, \-\-verbose=<VERBOSE>
.RS 4
Provides additional debug messages for certain drives\&.
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Gets the internal firmware log from the device and saves to default file in current directory (e\&.g\&. STM00019F3F9_internal_fw_log_20171127_095704\&.bin):
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme wdc vs\-internal\-log /dev/nvme0
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Gets the internal firmware log from the device and saves to defined file in current directory (e\&.g\&. test\&.bin):
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme wdc vs\-internal\-log /dev/nvme0 \-o test\&.bin
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Gets the internal firmware log from the device and saves to defined file with pathname (e\&.g\&. /tmp/test):
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme wdc vs\-internal\-log /dev/nvme0 \-o /tmp/test
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Gets the internal firmware log from the device transferring the data in 64k chunks and saves to default file in current directory (e\&.g\&. STM00019F3F9_internal_fw_log_20171127_100754\&.bin):
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme wdc vs\-internal\-log /dev/nvme0 \-s 0x10000
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Gets the internal firmware log from the device transferring the data in 16k chunks and saves to default file in current directory (e\&.g\&. STM00019F3F9_internal_fw_log_20171127_100950\&.bin):
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme wdc vs\-internal\-log /dev/nvme0 \-s 16384
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Gets the internal firmware log up to data area 3 from the device in 3 files of 0x1000000 bytes:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme wdc vs\-internal\-log /dev/nvme0 \-d 3 \-f 0x1000000 \-t 0x0000000 \-o /tmp/sn340_dui_data_1\&.bin
# nvme wdc vs\-internal\-log /dev/nvme0 \-d 3 \-f 0x1000000 \-t 0x1000000 \-o /tmp/sn340_dui_data_2\&.bin
# nvme wdc vs\-internal\-log /dev/nvme0 \-d 3 \-f 0x1000000 \-t 0x2000000 \-o /tmp/sn340_dui_data_3\&.bin
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Gets the host telemetry log page to data area 3 from the device and stores it in file host\-telem\-log\-da3\&.bin:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme wdc vs\-internal\-log /dev/nvme1 \-t host \-o host\-telem\-log\-da3\&.bin \-d 3
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Gets the controller telemetry log page to data area 3 from the device and stores it in file ctlr\-telem\-log\-da3\&.bin:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme wdc vs\-internal\-log /dev/nvme1 \-t controller \-o ctlr\-telem\-log\-da3\&.bin \-d 3
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite\&.
070701015D6E15000081A4000003E80000006400000001642C0FB600005A65000000000000004A00000000000000000000003500000000nvme-cli/Documentation/nvme-wdc-vs-internal-log.html  <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-wdc-vs-internal-log(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-wdc-vs-internal-log(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-wdc-vs-internal-log -
   Retrieve WDC device's internal firmware log and save to file.
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme wdc vs-internal-log</em> &lt;device&gt; [--output-file=&lt;FILE&gt;, -o &lt;FILE&gt;] [--transfer-size=&lt;SIZE&gt;, -s &lt;SIZE&gt;]
    [--data-area=&lt;DATA AREA&gt;, -d &lt;DATA_AREA&gt;] [--file-size=&lt;FILE SIZE&gt;, -f &lt;FILE SIZE&gt;] [--offset=&lt;OFFSET&gt;, -e &lt;OFFSET&gt;]
    [--type=&lt;TYPE&gt;, -t &lt;type&gt;] [--verbose, -v]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, sends the WDC Vendor Specific Internal Log request and saves
the result to a file.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory NVMe character device (ex: /dev/nvme0).</p></div>
<div class="paragraph"><p>This will only work on WDC devices supporting this feature.
Results for any other device are undefined.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-o &lt;FILE&gt;
</dt>
<dt class="hdlist1">
--output-file=&lt;FILE&gt;
</dt>
<dd>
<p>
        Output file; defaults to device serial number followed by "<em>internal_fw_log</em>&lt;date&gt;_&lt;time&gt;.bin" suffix
</p>
</dd>
<dt class="hdlist1">
-s &lt;SIZE&gt;
</dt>
<dt class="hdlist1">
--transfer-size=&lt;SIZE&gt;
</dt>
<dd>
<p>
    Transfer size; defaults to 0x10000 (65536 decimal) bytes
</p>
</dd>
<dt class="hdlist1">
-d &lt;DATA AREA&gt;
</dt>
<dt class="hdlist1">
--data-area=&lt;DATA AREA&gt;
</dt>
<dd>
<p>
    DUI data area to retrieve.  The DUI data areas from 1 to &lt;DATA AREA&gt; will be retrieved.  This parameter
    is currently only supported on the SN340, SN640, SN730, and SN840 devices.
</p>
</dd>
<dt class="hdlist1">
-f &lt;FILE SIZE&gt;
</dt>
<dt class="hdlist1">
--file-size=&lt;FILE SIZE&gt;
</dt>
<dd>
<p>
    Specifies the desired size of the data file starting at the passed in offset.  This allows the user to
    retrieve the data in several smaller files of the passed in size.  This parameter is currently only
    supported on the SN340 device.
</p>
</dd>
<dt class="hdlist1">
-e &lt;OFFSET&gt;
</dt>
<dt class="hdlist1">
--offset=&lt;OFFSET&gt;
</dt>
<dd>
<p>
        Specifies the data offset at which to start retrieving the data.  This parameter is used in combination
        with the file size parameter to retrieve the data in several smaller files.  This parameter is currently
    only supported on the SN340 device.
</p>
</dd>
<dt class="hdlist1">
-t &lt;TYPE&gt;
</dt>
<dt class="hdlist1">
--type=&lt;TYPE&gt;
</dt>
<dd>
<p>
        Specifies the telemetry type - NONE, HOST, or CONTROLLER.  This parameter is used to get either the host
        generated or controller initiated telemetry log page.  If not specified or none is specified, the command
    will return the default E6 log data.  This parameter is currently only supported on the SN640 and SN840
    devices.
</p>
</dd>
<dt class="hdlist1">
-v &lt;VERBOSE&gt;
</dt>
<dt class="hdlist1">
--verbose=&lt;VERBOSE&gt;
</dt>
<dd>
<p>
        Provides additional debug messages for certain drives.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Gets the internal firmware log from the device and saves to default file in current directory (e.g. STM00019F3F9_internal_fw_log_20171127_095704.bin):
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme wdc vs-internal-log /dev/nvme0</code></pre>
</div></div>
</li>
<li>
<p>
Gets the internal firmware log from the device and saves to defined file in current directory (e.g. test.bin):
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme wdc vs-internal-log /dev/nvme0 -o test.bin</code></pre>
</div></div>
</li>
<li>
<p>
Gets the internal firmware log from the device and saves to defined file with pathname (e.g. /tmp/test):
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme wdc vs-internal-log /dev/nvme0 -o /tmp/test</code></pre>
</div></div>
</li>
<li>
<p>
Gets the internal firmware log from the device transferring the data in 64k chunks and saves to default file in current directory (e.g. STM00019F3F9_internal_fw_log_20171127_100754.bin):
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme wdc vs-internal-log /dev/nvme0 -s 0x10000</code></pre>
</div></div>
</li>
<li>
<p>
Gets the internal firmware log from the device transferring the data in 16k chunks and saves to default file in current directory (e.g. STM00019F3F9_internal_fw_log_20171127_100950.bin):
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme wdc vs-internal-log /dev/nvme0 -s 16384</code></pre>
</div></div>
</li>
<li>
<p>
Gets the internal firmware log up to data area 3 from the device in 3 files of 0x1000000 bytes:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme wdc vs-internal-log /dev/nvme0 -d 3 -f 0x1000000 -t 0x0000000 -o /tmp/sn340_dui_data_1.bin
# nvme wdc vs-internal-log /dev/nvme0 -d 3 -f 0x1000000 -t 0x1000000 -o /tmp/sn340_dui_data_2.bin
# nvme wdc vs-internal-log /dev/nvme0 -d 3 -f 0x1000000 -t 0x2000000 -o /tmp/sn340_dui_data_3.bin</code></pre>
</div></div>
</li>
<li>
<p>
Gets the host telemetry log page to data area 3 from the device and stores it in file host-telem-log-da3.bin:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme wdc vs-internal-log /dev/nvme1 -t host -o host-telem-log-da3.bin -d 3</code></pre>
</div></div>
</li>
<li>
<p>
Gets the controller telemetry log page to data area 3 from the device and stores it in file ctlr-telem-log-da3.bin:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme wdc vs-internal-log /dev/nvme1 -t controller -o ctlr-telem-log-da3.bin -d 3</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite.</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
   070701015D6E16000081A4000003E80000006400000001642C0FB60000099F000000000000004A00000000000000000000003000000000nvme-cli/Documentation/nvme-wdc-vs-nand-stats.1   '\" t
.\"     Title: nvme-wdc-vs-nand-stats
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-WDC\-VS\-NAND\" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-wdc-vs-nand-stats \- Send NVMe WDC vs\-nand\-stats Vendor Unique Command, return result
.SH "SYNOPSIS"
.sp
.nf
\fInvme wdc vs\-nand\-stats\fR <device> [\-\-output\-format=<normal|json> \-o <normal|json>]
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, send a Vendor Unique WDC vs\-nand\-stats command and output the NAND statistics\&. The \-\-output\-format option will format the output as specified\&.
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0)\&.
.sp
This will only work on WDC devices supporting this feature\&. Results for any other device are undefined\&.
.sp
On success it returns the NAND statistics, error code otherwise\&.
.SH "OPTIONS"
.PP
\-o <format>, \-\-output\-format=<format>
.RS 4
Set the reporting format to
\fInormal\fR, or
\fIjson\fR\&. Only one output format can be used at a time\&. Default is normal\&.
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Has the program issue WDC vs\-nand\-stats Vendor Unique Command :
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme wdc vs\-nand\-stats /dev/nvme0
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite\&.
 070701015D6E17000081A4000003E80000006400000001642C0FB6000048F7000000000000004A00000000000000000000003300000000nvme-cli/Documentation/nvme-wdc-vs-nand-stats.html    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-wdc-vs-nand-stats(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-wdc-vs-nand-stats(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-wdc-vs-nand-stats -
   Send NVMe WDC vs-nand-stats Vendor Unique Command, return result
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme wdc vs-nand-stats</em> &lt;device&gt; [--output-format=&lt;normal|json&gt; -o &lt;normal|json&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, send a Vendor Unique WDC vs-nand-stats command and
output the NAND statistics. The --output-format option will format the output as
specified.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0).</p></div>
<div class="paragraph"><p>This will only work on WDC devices supporting this feature.
Results for any other device are undefined.</p></div>
<div class="paragraph"><p>On success it returns the NAND statistics, error code otherwise.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-o &lt;format&gt;
</dt>
<dt class="hdlist1">
--output-format=&lt;format&gt;
</dt>
<dd>
<p>
        Set the reporting format to <em>normal</em>, or
        <em>json</em>. Only one output format can be used at a time.
        Default is normal.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Has the program issue WDC vs-nand-stats Vendor Unique Command :
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme wdc vs-nand-stats /dev/nvme0</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite.</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
 070701015D6E18000081A4000003E80000006400000001642C0FB6000012D0000000000000004A00000000000000000000003300000000nvme-cli/Documentation/nvme-wdc-vs-smart-add-log.1    '\" t
.\"     Title: nvme-wdc-vs-smart-add-log
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-WDC\-VS\-SMART" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-wdc-vs-smart-add-log \- Send NVMe WDC vs\-smart\-add\-log Vendor Unique Command, return result
.SH "SYNOPSIS"
.sp
.nf
\fInvme wdc vs\-smart\-add\-log\fR <device> [\-\-interval=<NUM>, \-i <NUM>]
                        [\-\-output\-format=<normal|json> \-o <normal|json>]
                        [\-\-log\-page\-version=<NUM>, \-l <NUM>]
                        [\-\-log\-page\-mask=<LIST>, \-p <LIST>]
                        [\-\-namespace\-id=<nsid> | \-n <nsid>]
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, send a Vendor Unique WDC vs\-smart\-add\-log command and provide the additional smart log\&.
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0) or block device (ex: /dev/nvme0n1)\&.
.sp
This will only work on WDC devices supporting this feature\&. Results for any other device are undefined\&.
.sp
On success it returns 0, error code otherwise\&.
.SH "OPTIONS"
.PP
\-i <NUM>, \-\-interval=<NUM>
.RS 4
Return the statistics from specific interval, defaults to 14\&. This parameter is only valid for the 0xC1 log page and ignored for all other log pages\&.
.RE
.PP
\-o <format>, \-\-output\-format=<format>
.RS 4
Set the reporting format to
\fInormal\fR, or
\fIjson\fR\&. Only one output format can be used at a time\&. Default is normal\&.
.RE
.PP
\-l <NUM>, \-\-log\-page\-version=<NUM>
.RS 4
Log Page Version: 0 = vendor, 1 = WDC\&. This parameter is only valid for the 0xC0 log page and ignored for all other log pages\&.
.RE
.PP
\-p <LIST>, \-\-log\-page\-mask=<LIST>
.RS 4
Supply a comma separated list of desired log pages to display\&. The possible values are 0xc0, 0xc1, 0xca, 0xd0\&. Note: Not all pages are supported on all drives\&. The default is to display all supported log pages\&.
.RE
.PP
\-n <nsid>, \-\-namespace\-id=<nsid>
.RS 4
Sets the command\(cqs nsid value to the given nsid\&. Defaults to 0xffffffff if not given\&. This option may not affect anything depending on the log page, which may or may not be specific to a namespace\&.
.RE
.sp
Valid Interval values and description :\-
.TS
allbox tab(:);
ltB ltB.
T{
Value
T}:T{
Description
T}
.T&
lt lt
lt lt
lt lt
lt lt
lt lt.
T{
.sp
\fB1\fR
T}:T{
.sp
Most recent five (5) minute accumulated set\&.
T}
T{
.sp
\fB2\-12\fR
T}:T{
.sp
Previous five (5) minute accumulated sets\&.
T}
T{
.sp
\fB13\fR
T}:T{
.sp
The accumulated total of sets 1 through 12 that contain the previous hour of accumulated statistics\&.
T}
T{
.sp
\fB14\fR
T}:T{
.sp
The statistical set accumulated since power\-up\&.
T}
T{
.sp
\fB15\fR
T}:T{
.sp
The statistical set accumulated during the entire lifetime of the device\&.
T}
.TE
.sp 1
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Has the program issue WDC vs\-smart\-add\-log Vendor Unique Command with default interval (14) :
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme wdc vs\-smart\-add\-log /dev/nvme0
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Has the program issue WDC vs\-smart\-add\-log Vendor Unique Command for just the 0xCA log page :
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme wdc vs\-smart\-add\-log /dev/nvme0 \-p 0xCA
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Has the program issue WDC vs\-smart\-add\-log Vendor Unique Command for 0xC0 and 0xCA log pages :
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme wdc vs\-smart\-add\-log /dev/nvme0 \-p 0xCA,0xC0
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite\&.
070701015D6E19000081A4000003E80000006400000001642C0FB6000056F7000000000000004A00000000000000000000003600000000nvme-cli/Documentation/nvme-wdc-vs-smart-add-log.html <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-wdc-vs-smart-add-log(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-wdc-vs-smart-add-log(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-wdc-vs-smart-add-log -
   Send NVMe WDC vs-smart-add-log Vendor Unique Command, return result
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme wdc vs-smart-add-log</em> &lt;device&gt; [--interval=&lt;NUM&gt;, -i &lt;NUM&gt;]
                        [--output-format=&lt;normal|json&gt; -o &lt;normal|json&gt;]
                        [--log-page-version=&lt;NUM&gt;, -l &lt;NUM&gt;]
                        [--log-page-mask=&lt;LIST&gt;, -p &lt;LIST&gt;]
                        [--namespace-id=&lt;nsid&gt; | -n &lt;nsid&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, send a Vendor Unique WDC vs-smart-add-log command and
provide the additional smart log.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0) or block device (ex: /dev/nvme0n1).</p></div>
<div class="paragraph"><p>This will only work on WDC devices supporting this feature.
Results for any other device are undefined.</p></div>
<div class="paragraph"><p>On success it returns 0, error code otherwise.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-i &lt;NUM&gt;
</dt>
<dt class="hdlist1">
--interval=&lt;NUM&gt;
</dt>
<dd>
<p>
        Return the statistics from specific interval, defaults to 14.  This parameter is only valid for the 0xC1 log page
        and ignored for all other log pages.
</p>
</dd>
<dt class="hdlist1">
-o &lt;format&gt;
</dt>
<dt class="hdlist1">
--output-format=&lt;format&gt;
</dt>
<dd>
<p>
        Set the reporting format to <em>normal</em>, or
        <em>json</em>. Only one output format can be used at a time.
        Default is normal.
</p>
</dd>
<dt class="hdlist1">
-l &lt;NUM&gt;
</dt>
<dt class="hdlist1">
--log-page-version=&lt;NUM&gt;
</dt>
<dd>
<p>
    Log Page Version: 0 = vendor, 1 = WDC.  This parameter is only valid for the 0xC0 log page and ignored for all
    other log pages.
</p>
</dd>
<dt class="hdlist1">
-p &lt;LIST&gt;
</dt>
<dt class="hdlist1">
--log-page-mask=&lt;LIST&gt;
</dt>
<dd>
<p>
    Supply a comma separated list of desired log pages to display.
    The possible values are 0xc0, 0xc1, 0xca, 0xd0.
    Note: Not all pages are supported on all drives.
    The default is to display all supported log pages.
</p>
</dd>
<dt class="hdlist1">
-n &lt;nsid&gt;
</dt>
<dt class="hdlist1">
--namespace-id=&lt;nsid&gt;
</dt>
<dd>
<p>
        Sets the command&#8217;s nsid value to the given nsid. Defaults to
        0xffffffff if not given. This option may not affect anything
        depending on the log page, which may or may not be specific to
        a namespace.
</p>
</dd>
</dl></div>
<div class="paragraph"><p>Valid Interval values and description :-</p></div>
<div class="tableblock">
<table rules="all"
style="margin-left:auto; margin-right:auto;"
width="100%"
frame="hsides"
cellspacing="0" cellpadding="4">
<col width="50%" />
<col width="50%" />
<thead>
<tr>
<th align="left" valign="top">Value </th>
<th align="left" valign="top">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left" valign="top"><p class="table"><strong>1</strong></p></td>
<td align="left" valign="top"><p class="table">Most recent five (5) minute accumulated set.</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table"><strong>2-12</strong></p></td>
<td align="left" valign="top"><p class="table">Previous five (5) minute accumulated sets.</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table"><strong>13</strong></p></td>
<td align="left" valign="top"><p class="table">The accumulated total of sets 1 through 12 that contain the previous hour of
accumulated statistics.</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table"><strong>14</strong></p></td>
<td align="left" valign="top"><p class="table">The statistical set accumulated since power-up.</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table"><strong>15</strong></p></td>
<td align="left" valign="top"><p class="table">The statistical set accumulated during the entire lifetime of the device.</p></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Has the program issue WDC vs-smart-add-log Vendor Unique Command with default interval (14) :
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme wdc vs-smart-add-log /dev/nvme0</code></pre>
</div></div>
</li>
<li>
<p>
Has the program issue WDC vs-smart-add-log Vendor Unique Command for just the 0xCA log page :
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme wdc vs-smart-add-log /dev/nvme0 -p 0xCA</code></pre>
</div></div>
</li>
<li>
<p>
Has the program issue WDC vs-smart-add-log Vendor Unique Command for 0xC0 and 0xCA log pages :
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme wdc vs-smart-add-log /dev/nvme0 -p 0xCA,0xC0</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite.</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
 070701015D6E1A000081A4000003E80000006400000001642C0FB600000D36000000000000004A00000000000000000000004100000000nvme-cli/Documentation/nvme-wdc-vs-telemetry-controller-option.1  '\" t
.\"     Title: nvme-wdc-vs-telemetry-controller-option
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-WDC\-VS\-TELEM" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-wdc-vs-telemetry-controller-option \- Disable/Enable the controller initiated option of the telemetry log page\&.
.SH "SYNOPSIS"
.sp
.nf
\fInvme wdc vs\-telemetry\-controller\-option\fR <device> [\-\-disable, \-d] [\-\-enable, \-e]
    [\-\-status, \-s]
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, sends the WDC Vendor Specific set feature command to disable, enable or get current status of the controller initiated option of the telemetry log page\&.
.sp
The <device> parameter is mandatory NVMe character device (ex: /dev/nvme0)\&.
.sp
This will only work on WDC devices supporting this feature\&. Results for any other device are undefined\&.
.SH "OPTIONS"
.PP
\-d, \-\-disable
.RS 4
Disables the controller initiated option of the telemetry log page\&.
.RE
.PP
\-e, \-\-enable
.RS 4
Enables the controller initiated option of the telemetry log page\&.
.RE
.PP
\-s, \-\-status
.RS 4
Returns the current status (enabled or disabled) of the controller initiated option of the telemetry log page\&.
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Disables the controller initiated option of the telemetry log page:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme wdc vs\-telemetry\-controller\-option /dev/nvme0 \-\-disable
# nvme wdc vs\-telemetry\-controller\-option /dev/nvme0 \-d
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Enables the controller initiated option of the telemetry log page:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme wdc vs\-telemetry\-controller\-option /dev/nvme0 \-\-enable
# nvme wdc vs\-telemetry\-controller\-option /dev/nvme0 \-e
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Gets the current status (enabled or disabled) of the controller initiated option of the telemetry log page:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme wdc vs\-telemetry\-controller\-option /dev/nvme0 \-\-status
# nvme wdc vs\-telemetry\-controller\-option /dev/nvme0 \-s
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite\&.
  070701015D6E1B000081A4000003E80000006400000001642C0FB600004CB3000000000000004A00000000000000000000004400000000nvme-cli/Documentation/nvme-wdc-vs-telemetry-controller-option.html   <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-wdc-vs-telemetry-controller-option(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-wdc-vs-telemetry-controller-option(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-wdc-vs-telemetry-controller-option -
   Disable/Enable the controller initiated option of the telemetry log page.
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme wdc vs-telemetry-controller-option</em> &lt;device&gt; [--disable, -d] [--enable, -e]
    [--status, -s]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, sends the WDC Vendor Specific set feature command to disable, enable or get current status
of the controller initiated option of the telemetry log page.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory NVMe character device (ex: /dev/nvme0).</p></div>
<div class="paragraph"><p>This will only work on WDC devices supporting this feature.
Results for any other device are undefined.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-d
</dt>
<dt class="hdlist1">
--disable
</dt>
<dd>
<p>
        Disables the controller initiated option of the telemetry log page.
</p>
</dd>
<dt class="hdlist1">
-e
</dt>
<dt class="hdlist1">
--enable
</dt>
<dd>
<p>
        Enables the controller initiated option of the telemetry log page.
</p>
</dd>
<dt class="hdlist1">
-s
</dt>
<dt class="hdlist1">
--status
</dt>
<dd>
<p>
        Returns the current status (enabled or disabled) of the controller initiated option of the telemetry log page.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Disables the controller initiated option of the telemetry log page:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme wdc vs-telemetry-controller-option /dev/nvme0 --disable
# nvme wdc vs-telemetry-controller-option /dev/nvme0 -d</code></pre>
</div></div>
</li>
<li>
<p>
Enables the controller initiated option of the telemetry log page:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme wdc vs-telemetry-controller-option /dev/nvme0 --enable
# nvme wdc vs-telemetry-controller-option /dev/nvme0 -e</code></pre>
</div></div>
</li>
<li>
<p>
Gets the current status (enabled or disabled) of the controller initiated option of the telemetry log page:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme wdc vs-telemetry-controller-option /dev/nvme0 --status
# nvme wdc vs-telemetry-controller-option /dev/nvme0 -s</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite.</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
 070701015D6E1C000081A4000003E80000006400000001642C0FB600000D14000000000000004A00000000000000000000003700000000nvme-cli/Documentation/nvme-wdc-vs-temperature-stats.1    '\" t
.\"     Title: nvme-wdc-vs-temperature-stats
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-WDC\-VS\-TEMPE" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-wdc-vs-temperature-stats \- Display temperature\-related statistics
.SH "SYNOPSIS"
.sp
.nf
\fInvme wdc vs\-temperature\-stats\fR <device>
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, displays temperature statistics\&.
.sp
The <device> parameter is mandatory NVMe character device (ex: /dev/nvme0)\&.
.sp
This will only work on WDC devices supporting this feature\&. Results for any other device are undefined\&.
.sp
Expected status and description :\-
.TS
allbox tab(:);
ltB ltB.
T{
Statistic
T}:T{
Description
T}
.T&
lt lt
lt lt
lt lt
lt lt
lt lt
lt lt
lt lt
lt lt
lt lt
lt lt
lt lt
lt lt.
T{
.sp
The current composite temperature
T}:T{
.sp
device temperature
T}
T{
.sp
Warning Composite TEMPerature threshold
T}:T{
.sp
temp of overheating
T}
T{
.sp
Critical Composite TEMPerature threshold
T}:T{
.sp
temp of critical overheating
T}
T{
.sp
Device Initiated Thermal Throttling support status
T}:T{
.sp
0 = unsupported, 1 = supported
T}
T{
.sp
Host Controlled Thermal Management support
T}:T{
.sp
0 = unsupported, 1 = supported
T}
T{
.sp
Thermal Management Temperature 1 (Light throttle)
T}:T{
.sp
temp to start light throttle
T}
T{
.sp
Thermal Management Temperature 1 Transition Counter
T}:T{
.sp
# times switched into light throttle
T}
T{
.sp
Thermal Management Temperature 1 Total Time
T}:T{
.sp
# seconds spent in light throttle
T}
T{
.sp
Thermal Management Temperature 2 (Heavy throttle)
T}:T{
.sp
temp to start heavy throttle
T}
T{
.sp
Thermal Management Temperature 2 Transition Counter
T}:T{
.sp
# times switched into heavy throttle
T}
T{
.sp
Thermal Management Temperature 2 Total Time
T}:T{
.sp
# seconds spent in heavy throttle
T}
T{
.sp
Thermal Shutdown Threshold
T}:T{
.sp
temp of device shutdown
T}
.TE
.sp 1
.sp
On success it returns 0, error code otherwise\&.
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Displays the temperature stats for the device:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme wdc vs\-temperature\-stats /dev/nvme0
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite\&.
070701015D6E1D000081A4000003E80000006400000001642C0FB60000515D000000000000004A00000000000000000000003A00000000nvme-cli/Documentation/nvme-wdc-vs-temperature-stats.html <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-wdc-vs-temperature-stats(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-wdc-vs-temperature-stats(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-wdc-vs-temperature-stats -
   Display temperature-related statistics
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme wdc vs-temperature-stats</em> &lt;device&gt;</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, displays temperature statistics.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory NVMe character device (ex: /dev/nvme0).</p></div>
<div class="paragraph"><p>This will only work on WDC devices supporting this feature.
Results for any other device are undefined.</p></div>
<div class="paragraph"><p>Expected status and description :-</p></div>
<div class="tableblock">
<table rules="all"
width="100%"
frame="border"
cellspacing="0" cellpadding="4">
<col width="50%" />
<col width="50%" />
<thead>
<tr>
<th align="left" valign="top">Statistic </th>
<th align="left" valign="top">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left" valign="top"><p class="table">The current composite temperature</p></td>
<td align="left" valign="top"><p class="table">device temperature</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">Warning Composite TEMPerature threshold</p></td>
<td align="left" valign="top"><p class="table">temp of overheating</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">Critical Composite TEMPerature threshold</p></td>
<td align="left" valign="top"><p class="table">temp of critical overheating</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">Device Initiated Thermal Throttling support status</p></td>
<td align="left" valign="top"><p class="table">0 = unsupported, 1 = supported</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">Host Controlled Thermal Management support</p></td>
<td align="left" valign="top"><p class="table">0 = unsupported, 1 = supported</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">Thermal Management Temperature 1 (Light throttle)</p></td>
<td align="left" valign="top"><p class="table">temp to start light throttle</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">Thermal Management Temperature 1 Transition Counter</p></td>
<td align="left" valign="top"><p class="table"># times switched into light throttle</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">Thermal Management Temperature 1 Total Time</p></td>
<td align="left" valign="top"><p class="table"># seconds spent in light throttle</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">Thermal Management Temperature 2 (Heavy throttle)</p></td>
<td align="left" valign="top"><p class="table">temp to start heavy throttle</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">Thermal Management Temperature 2 Transition Counter</p></td>
<td align="left" valign="top"><p class="table"># times switched into heavy throttle</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">Thermal Management Temperature 2 Total Time</p></td>
<td align="left" valign="top"><p class="table"># seconds spent in heavy throttle</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">Thermal Shutdown Threshold</p></td>
<td align="left" valign="top"><p class="table">temp of device shutdown</p></td>
</tr>
</tbody>
</table>
</div>
<div class="paragraph"><p>On success it returns 0, error code otherwise.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Displays the temperature stats for the device:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme wdc vs-temperature-stats /dev/nvme0</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite.</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
   070701015D6E1E000081A4000003E80000006400000001642C0FB600000853000000000000004A00000000000000000000002A00000000nvme-cli/Documentation/nvme-write-uncor.1 '\" t
.\"     Title: nvme-uncor
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-UNCOR" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-write-uncor \- Send an NVMe write uncorrectable command, return results
.SH "SYNOPSIS"
.sp
.nf
\fInvme\-write\-uncor\fR <device> [\-\-start\-block=<slba> | \-s <slba>]
                        [\-\-block\-count=<nlb> | \-c <nlb>]
                        [\-\-namespace\-id=<nsid> | \-n <nsid>]
                        [\-\-force]
.fi
.SH "DESCRIPTION"
.sp
The Write Uncorrectable command is used to invalidate a range of logical blocks\&.
.SH "OPTIONS"
.PP
\-\-start\-block=<slba>, \-s <slba>
.RS 4
Start block\&.
.RE
.PP
\-\-block\-count=<nlb>, \-c
.RS 4
Number of logical blocks to write uncorrectable\&.
.RE
.PP
\-\-namespace\-id=<nsid>, \-n <nsid>
.RS 4
Namespace ID use in the command\&.
.RE
.PP
\-\-force
.RS 4
Ignore namespace is currently busy and performed the operation even though\&.
.RE
.SH "EXAMPLES"
.sp
No examples yet\&.
.SH "NVME"
.sp
Part of the nvme\-user suite
 070701015D6E1F000081A4000003E80000006400000001642C0FB600004829000000000000004A00000000000000000000002D00000000nvme-cli/Documentation/nvme-write-uncor.html  <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-uncor(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-uncor(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-write-uncor -
   Send an NVMe write uncorrectable command, return results
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme-write-uncor</em> &lt;device&gt; [--start-block=&lt;slba&gt; | -s &lt;slba&gt;]
                        [--block-count=&lt;nlb&gt; | -c &lt;nlb&gt;]
                        [--namespace-id=&lt;nsid&gt; | -n &lt;nsid&gt;]
                        [--force]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>The Write Uncorrectable command is used to invalidate a range of logical
blocks.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
--start-block=&lt;slba&gt;
</dt>
<dt class="hdlist1">
-s &lt;slba&gt;
</dt>
<dd>
<p>
        Start block.
</p>
</dd>
<dt class="hdlist1">
--block-count=&lt;nlb&gt;
</dt>
<dt class="hdlist1">
-c
</dt>
<dd>
<p>
        Number of logical blocks to write uncorrectable.
</p>
</dd>
<dt class="hdlist1">
--namespace-id=&lt;nsid&gt;
</dt>
<dt class="hdlist1">
-n &lt;nsid&gt;
</dt>
<dd>
<p>
        Namespace ID use in the command.
</p>
</dd>
<dt class="hdlist1">
--force
</dt>
<dd>
<p>
    Ignore namespace is currently busy and performed the operation
    even though.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="paragraph"><p>No examples yet.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
   070701015D6E20000081A4000003E80000006400000001642C0FB600001089000000000000004A00000000000000000000002B00000000nvme-cli/Documentation/nvme-write-zeroes.1    '\" t
.\"     Title: nvme-write-zeroes
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-WRITE\-ZEROES" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-write-zeroes \- Send an NVMe write zeroes command, return results
.SH "SYNOPSIS"
.sp
.nf
\fInvme\-write\-zeroes\fR <device> [\-\-start\-block=<slba> | \-s <slba>]
                        [\-\-block\-count=<nlb> | \-c <nlb>]
                        [\-\-ref\-tag=<reftag> | \-r <reftag>]
                        [\-\-prinfo=<prinfo> | \-p <prinfo>]
                        [\-\-app\-tag\-mask=<appmask> | \-m <appmask>]
                        [\-\-app\-tag=<apptag> | \-a <apptag>]
                        [\-\-deac | \-d]
                        [\-\-limited\-retry | \-l]
                        [\-\-force\-unit\-access | \-f]
                        [\-\-namespace\-id=<nsid> | \-n <nsid>]
                        [\-\-storage\-tag<storage\-tag> | \-S <storage\-tag>]
                        [\-\-storage\-tag\-check<storage\-tag\-check> | \-C <storage\-tag\-check>]
                        [\-\-force]
.fi
.SH "DESCRIPTION"
.sp
The Write Zeroes command is used to set a range of logical blocks to 0\&.
.SH "OPTIONS"
.PP
\-\-start\-block=<slba>, \-s <slba>
.RS 4
Start block\&.
.RE
.PP
\-\-block\-count=<nlb>, \-c <nlb>
.RS 4
Number of logical blocks to write zeroes\&.
.RE
.PP
\-\-prinfo=<prinfo>, \-p <prinfo>
.RS 4
Protection Information field definition\&.
.TS
allbox tab(:);
lt lt
lt lt
lt lt
lt lt
lt lt
lt lt.
T{
Bit
T}:T{
Description
T}
T{
3
T}:T{
PRACT: Protection Information Action\&. When set to 1, PI is stripped/inserted on read/write when the block format\(cqs metadata size is 8\&. When set to 0, metadata is passes\&.
T}
T{
2:0
T}:T{
PRCHK: Protection Information Check:
T}
T{
2
T}:T{
Set to 1 enables checking the guard tag
T}
T{
1
T}:T{
Set to 1 enables checking the application tag
T}
T{
0
T}:T{
Set to 1 enables checking the reference tag
T}
.TE
.sp 1
.RE
.PP
\-\-ref\-tag=<reftag>, \-r <reftag>
.RS 4
Optional reftag when used with protection information\&.
.RE
.PP
\-\-app\-tag\-mask=<appmask>, \-m <appmask>
.RS 4
Optional application tag mask when used with protection information\&.
.RE
.PP
\-\-app\-tag=<apptag>, \-a <apptag>
.RS 4
Optional application tag when used with protection information\&.
.RE
.PP
\-\-limited\-retry, \-l
.RS 4
Sets the limited retry flag\&.
.RE
.PP
\-\-deac, \-d
.RS 4
Sets the DEAC bit, requesting controller deallocate the logical blocks\&.
.RE
.PP
\-\-force\-unit\-access, \-f
.RS 4
Set the force\-unit access flag\&.
.RE
.PP
\-\-namespace\-id=<nsid>, \-n <nsid>
.RS 4
Namespace ID use in the command\&.
.RE
.PP
\-\-storage\-tag=<storage\-tag>, \-S <storage\-tag>
.RS 4
Variable Sized Logical Block Storage Tag(LBST)\&.
.RE
.PP
\-\-storage\-tag\-check=<storage\-tag\-check>, \-C <storage\-tag\-check>
.RS 4
This bit specifies the Storage Tag field shall be checked as part of end\-to\-end data protection processing\&.
.RE
.PP
\-\-force
.RS 4
Ignore namespace is currently busy and performed the operation even though\&.
.RE
.SH "EXAMPLES"
.sp
No examples yet\&.
.SH "NVME"
.sp
Part of the nvme\-user suite
   070701015D6E21000081A4000003E80000006400000001642C0FB600005684000000000000004A00000000000000000000002E00000000nvme-cli/Documentation/nvme-write-zeroes.html <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-write-zeroes(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-write-zeroes(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-write-zeroes -
   Send an NVMe write zeroes command, return results
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme-write-zeroes</em> &lt;device&gt; [--start-block=&lt;slba&gt; | -s &lt;slba&gt;]
                        [--block-count=&lt;nlb&gt; | -c &lt;nlb&gt;]
                        [--ref-tag=&lt;reftag&gt; | -r &lt;reftag&gt;]
                        [--prinfo=&lt;prinfo&gt; | -p &lt;prinfo&gt;]
                        [--app-tag-mask=&lt;appmask&gt; | -m &lt;appmask&gt;]
                        [--app-tag=&lt;apptag&gt; | -a &lt;apptag&gt;]
                        [--deac | -d]
                        [--limited-retry | -l]
                        [--force-unit-access | -f]
                        [--namespace-id=&lt;nsid&gt; | -n &lt;nsid&gt;]
                        [--storage-tag&lt;storage-tag&gt; | -S &lt;storage-tag&gt;]
                        [--storage-tag-check&lt;storage-tag-check&gt; | -C &lt;storage-tag-check&gt;]
                        [--force]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>The Write Zeroes command is used to set a range of logical blocks to 0.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
--start-block=&lt;slba&gt;
</dt>
<dt class="hdlist1">
-s &lt;slba&gt;
</dt>
<dd>
<p>
        Start block.
</p>
</dd>
<dt class="hdlist1">
--block-count=&lt;nlb&gt;
</dt>
<dt class="hdlist1">
-c &lt;nlb&gt;
</dt>
<dd>
<p>
        Number of logical blocks to write zeroes.
</p>
</dd>
<dt class="hdlist1">
--prinfo=&lt;prinfo&gt;
</dt>
<dt class="hdlist1">
-p &lt;prinfo&gt;
</dt>
<dd>
<p>
        Protection Information field definition.
</p>
<div class="tableblock">
<table rules="all"
width="100%"
frame="border"
cellspacing="0" cellpadding="4">
<col width="50%" />
<col width="50%" />
<tbody>
<tr>
<td align="left" valign="top"><p class="table">Bit</p></td>
<td align="left" valign="top"><p class="table">Description</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">3</p></td>
<td align="left" valign="top"><p class="table">PRACT: Protection Information Action. When set to 1, PI is stripped/inserted
on read/write when the block format&#8217;s metadata size is 8. When set to 0,
metadata is passes.</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">2:0</p></td>
<td align="left" valign="top"><p class="table">PRCHK: Protection Information Check:</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">2</p></td>
<td align="left" valign="top"><p class="table">Set to 1 enables checking the guard tag</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">1</p></td>
<td align="left" valign="top"><p class="table">Set to 1 enables checking the application tag</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">0</p></td>
<td align="left" valign="top"><p class="table">Set to 1 enables checking the reference tag</p></td>
</tr>
</tbody>
</table>
</div>
</dd>
<dt class="hdlist1">
--ref-tag=&lt;reftag&gt;
</dt>
<dt class="hdlist1">
-r &lt;reftag&gt;
</dt>
<dd>
<p>
        Optional reftag when used with protection information.
</p>
</dd>
<dt class="hdlist1">
--app-tag-mask=&lt;appmask&gt;
</dt>
<dt class="hdlist1">
-m &lt;appmask&gt;
</dt>
<dd>
<p>
        Optional application tag mask when used with protection information.
</p>
</dd>
<dt class="hdlist1">
--app-tag=&lt;apptag&gt;
</dt>
<dt class="hdlist1">
-a &lt;apptag&gt;
</dt>
<dd>
<p>
        Optional application tag when used with protection information.
</p>
</dd>
<dt class="hdlist1">
--limited-retry
</dt>
<dt class="hdlist1">
-l
</dt>
<dd>
<p>
        Sets the limited retry flag.
</p>
</dd>
<dt class="hdlist1">
--deac
</dt>
<dt class="hdlist1">
-d
</dt>
<dd>
<p>
        Sets the DEAC bit, requesting controller deallocate the logical blocks.
</p>
</dd>
<dt class="hdlist1">
--force-unit-access
</dt>
<dt class="hdlist1">
-f
</dt>
<dd>
<p>
        Set the force-unit access flag.
</p>
</dd>
<dt class="hdlist1">
--namespace-id=&lt;nsid&gt;
</dt>
<dt class="hdlist1">
-n &lt;nsid&gt;
</dt>
<dd>
<p>
        Namespace ID use in the command.
</p>
</dd>
<dt class="hdlist1">
--storage-tag=&lt;storage-tag&gt;
</dt>
<dt class="hdlist1">
-S &lt;storage-tag&gt;
</dt>
<dd>
<p>
        Variable Sized Logical Block Storage Tag(LBST).
</p>
</dd>
<dt class="hdlist1">
--storage-tag-check=&lt;storage-tag-check&gt;
</dt>
<dt class="hdlist1">
-C &lt;storage-tag-check&gt;
</dt>
<dd>
<p>
        This bit specifies the Storage Tag field shall be checked as part of end-to-end
        data protection processing.
</p>
</dd>
<dt class="hdlist1">
--force
</dt>
<dd>
<p>
    Ignore namespace is currently busy and performed the operation
    even though.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="paragraph"><p>No examples yet.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
070701015D6E22000081A4000003E80000006400000001642C0FB6000018FA000000000000004A00000000000000000000002400000000nvme-cli/Documentation/nvme-write.1   '\" t
.\"     Title: nvme-write
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-WRITE" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-write \- Send an NVMe write command, provide results
.SH "SYNOPSIS"
.sp
.nf
\fInvme\-write\fR <device> [\-\-start\-block=<slba> | \-s <slba>]
                        [\-\-block\-count=<nlb> | \-c <nlb>]
                        [\-\-data\-size=<size> | \-z <size>]
                        [\-\-metadata\-size=<size> | \-y <size>]
                        [\-\-ref\-tag=<reftag> | \-r <reftag>]
                        [\-\-data=<data\-file> | \-d <data\-file>]
                        [\-\-metadata=<metadata\-file> | \-M <metadata\-file>]
                        [\-\-prinfo=<prinfo> | \-p <prinfo>]
                        [\-\-app\-tag\-mask=<appmask> | \-m <appmask>]
                        [\-\-app\-tag=<apptag> | \-a <apptag>]
                        [\-\-limited\-retry | \-l]
                        [\-\-force\-unit\-access | \-f]
                        [\-\-dir\-type=<type> | \-T <type>]
                        [\-\-dir\-spec=<spec> | \-S <spec>]
                        [\-\-dsm=<dsm> | \-D <dsm>]
                        [\-\-show\-command | \-v]
                        [\-\-dry\-run | \-w]
                        [\-\-latency | \-t]
                        [\-\-storage\-tag<storage\-tag> | \-g <storage\-tag>]
                        [\-\-storage\-tag\-check | \-C]
                        [\-\-force]
.fi
.SH "DESCRIPTION"
.sp
The Write command writes the logical blocks specified by the command to the medium from the data data buffer provided\&. Will use stdin by default if you don\(cqt provide a file\&.
.SH "OPTIONS"
.PP
\-\-start\-block=<slba>, \-s <slba>
.RS 4
Start block\&.
.RE
.PP
\-\-block\-count, \-c
.RS 4
The number of blocks to transfer\&. This is a zeroes based value to align with the kernel\(cqs use of this field\&. (ie\&. 0 means transfer 1 block)\&.
.RE
.PP
\-\-data\-size=<size>, \-z <size>
.RS 4
Size of data, in bytes\&.
.RE
.PP
\-\-metadata\-size=<size>, \-y <size>
.RS 4
Size of metadata in bytes\&.
.RE
.PP
\-\-data=<data\-file>, \-d <data\-file>
.RS 4
Data file\&. If none provided, contents are sent from STDIN\&.
.RE
.PP
\-\-metadata=<metadata\-file>, \-M <metadata\-file>
.RS 4
Metadata file, if necessary\&.
.RE
.PP
\-\-prinfo=<prinfo>, \-p <prinfo>
.RS 4
Protection Information field definition\&.
.TS
allbox tab(:);
lt lt
lt lt
lt lt
lt lt
lt lt
lt lt.
T{
Bit
T}:T{
Description
T}
T{
3
T}:T{
PRACT: Protection Information Action\&. When set to 1, PI is stripped/inserted on read/write when the block format\(cqs metadata size is 8\&. When set to 0, metadata is passes\&.
T}
T{
2:0
T}:T{
PRCHK: Protection Information Check:
T}
T{
2
T}:T{
Set to 1 enables checking the guard tag
T}
T{
1
T}:T{
Set to 1 enables checking the application tag
T}
T{
0
T}:T{
Set to 1 enables checking the reference tag
T}
.TE
.sp 1
.RE
.PP
\-\-ref\-tag=<reftag>, \-r <reftag>
.RS 4
Optional reftag when used with protection information\&.
.RE
.PP
\-\-app\-tag\-mask=<appmask>, \-m <appmask>
.RS 4
Optional application tag mask when used with protection information\&.
.RE
.PP
\-\-app\-tag=<apptag>, \-a <apptag>
.RS 4
Optional application tag when used with protection information\&.
.RE
.PP
\-\-limited\-retry, \-l
.RS 4
Sets the limited retry flag\&.
.RE
.PP
\-\-force\-unit\-access, \-f
.RS 4
Set the force\-unit access flag\&.
.RE
.PP
\-T <type>, \-\-dir\-type=<type>
.RS 4
Optional directive type\&. The nvme\-cli only enforces the value be in the defined range for the directive type, though the NVMe specification (1\&.3a) defines only one directive, 01h, for write stream identifiers\&.
.RE
.PP
\-S <spec>, \-\-dir\-spec=<spec>
.RS 4
Optional field for directive specifics\&. When used with write streams, this value is defined to be the write stream identifier\&. The nvme\-cli will not validate the stream requested is within the controller\(cqs capabilities\&.
.RE
.PP
\-D <dsm>, \-\-dsm=<dsm>
.RS 4
The optional data set management attributes for this command\&. The argument for this is the least significant 8 bits of the DSM field in a write command; the most significant 16 bits of the field come from the directive specific field, if used\&. This may be used to set attributes for the LBAs being written, like access frequency, type, latency, among other things, as well as yet to be defined types\&. Please consult the NVMe specification for detailed breakdown of how to use this field\&.
.RE
.PP
\-v, \-\-show\-cmd
.RS 4
Print out the command to be sent\&.
.RE
.PP
\-w, \-\-dry\-run
.RS 4
Do not actually send the command\&. If want to use \-\-dry\-run option, \-\-show\-cmd option
\fImust\fR
be set\&. Otherwise \-\-dry\-run option will be
\fIignored\fR\&.
.RE
.PP
\-t, \-\-latency
.RS 4
Print out the latency the IOCTL took (in us)\&.
.RE
.PP
\-g <storage\-tag>, \-\-storage\-tag=<storage\-tag>
.RS 4
Variable Sized Expected Logical Block Storage Tag(ELBST)\&.
.RE
.PP
\-C, \-\-storage\-tag\-check
.RS 4
This flag enables Storage Tag field checking as part of end\-to\-end data protection processing\&.
.RE
.PP
\-\-force
.RS 4
Ignore namespace is currently busy and performed the operation even though\&.
.RE
.SH "EXAMPLES"
.sp
No examples yet\&.
.SH "NVME"
.sp
Part of the nvme\-user suite
  070701015D6E23000081A4000003E80000006400000001642C0FB600006214000000000000004A00000000000000000000002700000000nvme-cli/Documentation/nvme-write.html    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-write(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-write(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-write -
   Send an NVMe write command, provide results
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme-write</em> &lt;device&gt; [--start-block=&lt;slba&gt; | -s &lt;slba&gt;]
                        [--block-count=&lt;nlb&gt; | -c &lt;nlb&gt;]
                        [--data-size=&lt;size&gt; | -z &lt;size&gt;]
                        [--metadata-size=&lt;size&gt; | -y &lt;size&gt;]
                        [--ref-tag=&lt;reftag&gt; | -r &lt;reftag&gt;]
                        [--data=&lt;data-file&gt; | -d &lt;data-file&gt;]
                        [--metadata=&lt;metadata-file&gt; | -M &lt;metadata-file&gt;]
                        [--prinfo=&lt;prinfo&gt; | -p &lt;prinfo&gt;]
                        [--app-tag-mask=&lt;appmask&gt; | -m &lt;appmask&gt;]
                        [--app-tag=&lt;apptag&gt; | -a &lt;apptag&gt;]
                        [--limited-retry | -l]
                        [--force-unit-access | -f]
                        [--dir-type=&lt;type&gt; | -T &lt;type&gt;]
                        [--dir-spec=&lt;spec&gt; | -S &lt;spec&gt;]
                        [--dsm=&lt;dsm&gt; | -D &lt;dsm&gt;]
                        [--show-command | -v]
                        [--dry-run | -w]
                        [--latency | -t]
                        [--storage-tag&lt;storage-tag&gt; | -g &lt;storage-tag&gt;]
                        [--storage-tag-check | -C]
                        [--force]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>The Write command writes the logical blocks specified by the command to
the medium from the data data buffer provided. Will use stdin by default
if you don&#8217;t provide a file.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
--start-block=&lt;slba&gt;
</dt>
<dt class="hdlist1">
-s &lt;slba&gt;
</dt>
<dd>
<p>
        Start block.
</p>
</dd>
<dt class="hdlist1">
--block-count
</dt>
<dt class="hdlist1">
-c
</dt>
<dd>
<p>
        The number of blocks to transfer. This is a zeroes based value to
        align with the kernel&#8217;s use of this field. (ie. 0 means transfer
        1 block).
</p>
</dd>
<dt class="hdlist1">
--data-size=&lt;size&gt;
</dt>
<dt class="hdlist1">
-z &lt;size&gt;
</dt>
<dd>
<p>
        Size of data, in bytes.
</p>
</dd>
<dt class="hdlist1">
--metadata-size=&lt;size&gt;
</dt>
<dt class="hdlist1">
-y &lt;size&gt;
</dt>
<dd>
<p>
        Size of metadata in bytes.
</p>
</dd>
<dt class="hdlist1">
--data=&lt;data-file&gt;
</dt>
<dt class="hdlist1">
-d &lt;data-file&gt;
</dt>
<dd>
<p>
        Data file. If none provided, contents are sent from STDIN.
</p>
</dd>
<dt class="hdlist1">
--metadata=&lt;metadata-file&gt;
</dt>
<dt class="hdlist1">
-M &lt;metadata-file&gt;
</dt>
<dd>
<p>
        Metadata file, if necessary.
</p>
</dd>
<dt class="hdlist1">
--prinfo=&lt;prinfo&gt;
</dt>
<dt class="hdlist1">
-p &lt;prinfo&gt;
</dt>
<dd>
<p>
        Protection Information field definition.
</p>
<div class="tableblock">
<table rules="all"
width="100%"
frame="border"
cellspacing="0" cellpadding="4">
<col width="50%" />
<col width="50%" />
<tbody>
<tr>
<td align="left" valign="top"><p class="table">Bit</p></td>
<td align="left" valign="top"><p class="table">Description</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">3</p></td>
<td align="left" valign="top"><p class="table">PRACT: Protection Information Action. When set to 1, PI is stripped/inserted
on read/write when the block format&#8217;s metadata size is 8. When set to 0,
metadata is passes.</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">2:0</p></td>
<td align="left" valign="top"><p class="table">PRCHK: Protection Information Check:</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">2</p></td>
<td align="left" valign="top"><p class="table">Set to 1 enables checking the guard tag</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">1</p></td>
<td align="left" valign="top"><p class="table">Set to 1 enables checking the application tag</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">0</p></td>
<td align="left" valign="top"><p class="table">Set to 1 enables checking the reference tag</p></td>
</tr>
</tbody>
</table>
</div>
</dd>
<dt class="hdlist1">
--ref-tag=&lt;reftag&gt;
</dt>
<dt class="hdlist1">
-r &lt;reftag&gt;
</dt>
<dd>
<p>
        Optional reftag when used with protection information.
</p>
</dd>
<dt class="hdlist1">
--app-tag-mask=&lt;appmask&gt;
</dt>
<dt class="hdlist1">
-m &lt;appmask&gt;
</dt>
<dd>
<p>
        Optional application tag mask when used with protection information.
</p>
</dd>
<dt class="hdlist1">
--app-tag=&lt;apptag&gt;
</dt>
<dt class="hdlist1">
-a &lt;apptag&gt;
</dt>
<dd>
<p>
        Optional application tag when used with protection information.
</p>
</dd>
<dt class="hdlist1">
--limited-retry
</dt>
<dt class="hdlist1">
-l
</dt>
<dd>
<p>
        Sets the limited retry flag.
</p>
</dd>
<dt class="hdlist1">
--force-unit-access
</dt>
<dt class="hdlist1">
-f
</dt>
<dd>
<p>
        Set the force-unit access flag.
</p>
</dd>
<dt class="hdlist1">
-T &lt;type&gt;
</dt>
<dt class="hdlist1">
--dir-type=&lt;type&gt;
</dt>
<dd>
<p>
        Optional directive type. The nvme-cli only enforces the value
        be in the defined range for the directive type, though the NVMe
        specification (1.3a) defines only one directive, 01h, for write
        stream identifiers.
</p>
</dd>
<dt class="hdlist1">
-S &lt;spec&gt;
</dt>
<dt class="hdlist1">
--dir-spec=&lt;spec&gt;
</dt>
<dd>
<p>
        Optional field for directive specifics. When used with
        write streams, this value is defined to be the write stream
        identifier. The nvme-cli will not validate the stream requested
        is within the controller&#8217;s capabilities.
</p>
</dd>
<dt class="hdlist1">
-D &lt;dsm&gt;
</dt>
<dt class="hdlist1">
--dsm=&lt;dsm&gt;
</dt>
<dd>
<p>
        The optional data set management attributes for this command. The argument
        for this is the least significant 8 bits of the DSM field in a write
        command; the most significant 16 bits of the field come from the directive
        specific field, if used. This may be used to set attributes for
        the LBAs being written, like access frequency, type, latency,
        among other things, as well as yet to be defined types. Please
        consult the NVMe specification for detailed breakdown of how to
        use this field.
</p>
</dd>
<dt class="hdlist1">
-v
</dt>
<dt class="hdlist1">
--show-cmd
</dt>
<dd>
<p>
        Print out the command to be sent.
</p>
</dd>
<dt class="hdlist1">
-w
</dt>
<dt class="hdlist1">
--dry-run
</dt>
<dd>
<p>
        Do not actually send the command. If want to use --dry-run option,
        --show-cmd option <em>must</em> be set. Otherwise --dry-run option will be
        <em>ignored</em>.
</p>
</dd>
<dt class="hdlist1">
-t
</dt>
<dt class="hdlist1">
--latency
</dt>
<dd>
<p>
        Print out the latency the IOCTL took (in us).
</p>
</dd>
<dt class="hdlist1">
-g &lt;storage-tag&gt;
</dt>
<dt class="hdlist1">
--storage-tag=&lt;storage-tag&gt;
</dt>
<dd>
<p>
        Variable Sized Expected Logical Block Storage Tag(ELBST).
</p>
</dd>
<dt class="hdlist1">
-C
</dt>
<dt class="hdlist1">
--storage-tag-check
</dt>
<dd>
<p>
        This flag enables Storage Tag field checking as part of end-to-end
        data protection processing.
</p>
</dd>
<dt class="hdlist1">
--force
</dt>
<dd>
<p>
    Ignore namespace is currently busy and performed the operation
    even though.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="paragraph"><p>No examples yet.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
070701015D6E24000081A4000003E80000006400000001642C0FB60000107D000000000000004A00000000000000000000002600000000nvme-cli/Documentation/nvme-write.txt nvme-write(1)
=============

NAME
----
nvme-write - Send an NVMe write command, provide results

SYNOPSIS
--------
[verse]
'nvme-write' <device> [--start-block=<slba> | -s <slba>]
			[--block-count=<nlb> | -c <nlb>]
			[--data-size=<size> | -z <size>]
			[--metadata-size=<size> | -y <size>]
			[--ref-tag=<reftag> | -r <reftag>]
			[--data=<data-file> | -d <data-file>]
			[--metadata=<metadata-file> | -M <metadata-file>]
			[--prinfo=<prinfo> | -p <prinfo>]
			[--app-tag-mask=<appmask> | -m <appmask>]
			[--app-tag=<apptag> | -a <apptag>]
			[--limited-retry | -l]
			[--force-unit-access | -f]
			[--dir-type=<type> | -T <type>]
			[--dir-spec=<spec> | -S <spec>]
			[--dsm=<dsm> | -D <dsm>]
			[--show-command | -v]
			[--dry-run | -w]
			[--latency | -t]
			[--storage-tag<storage-tag> | -g <storage-tag>]
			[--storage-tag-check | -C]
			[--force]

DESCRIPTION
-----------
The Write command writes the logical blocks specified by the command to
the medium from the data data buffer provided. Will use stdin by default
if you don't provide a file.

OPTIONS
-------
--start-block=<slba>::
-s <slba>::
	Start block.

--block-count::
-c::
	The number of blocks to transfer. This is a zeroes based value to
	align with the kernel's use of this field. (ie. 0 means transfer
	1 block).

--data-size=<size>::
-z <size>::
	Size of data, in bytes.

--metadata-size=<size>::
-y <size>::
	Size of metadata in bytes.

--data=<data-file>::
-d <data-file>::
	Data file. If none provided, contents are sent from STDIN.

--metadata=<metadata-file>::
-M <metadata-file>::
	Metadata file, if necessary.

--prinfo=<prinfo>::
-p <prinfo>::
	Protection Information field definition.
+
[]
|=================
|Bit|Description
|3|PRACT: Protection Information Action. When set to 1, PI is stripped/inserted
on read/write when the block format's metadata size is 8. When set to 0,
metadata is passes.
|2:0|PRCHK: Protection Information Check:
|2|Set to 1 enables checking the guard tag
|1|Set to 1 enables checking the application tag
|0|Set to 1 enables checking the reference tag
|=================

--ref-tag=<reftag>::
-r <reftag>::
	Optional reftag when used with protection information.

--app-tag-mask=<appmask>::
-m <appmask>::
	Optional application tag mask when used with protection information.

--app-tag=<apptag>::
-a <apptag>::
	Optional application tag when used with protection information.

--limited-retry::
-l::
	Sets the limited retry flag.

--force-unit-access::
-f::
	Set the force-unit access flag.

-T <type>::
--dir-type=<type>::
	Optional directive type. The nvme-cli only enforces the value
	be in the defined range for the directive type, though the NVMe
	specification (1.3a) defines only one directive, 01h, for write
	stream identifiers.

-S <spec>::
--dir-spec=<spec>::
	Optional field for directive specifics. When used with
	write streams, this value is defined to be the write stream
	identifier. The nvme-cli will not validate the stream requested
	is within the controller's capabilities.

-D <dsm>::
--dsm=<dsm>::
	The optional data set management attributes for this command. The argument
	for this is the least significant 8 bits of the DSM field in a write
	command; the most significant 16 bits of the field come from the directive
	specific field, if used. This may be used to set attributes for
	the LBAs being written, like access frequency, type, latency,
	among other things, as well as yet to be defined types. Please
	consult the NVMe specification for detailed breakdown of how to
	use this field.

-v::
--show-cmd::
	Print out the command to be sent.

-w::
--dry-run::
	Do not actually send the command. If want to use --dry-run option,
	--show-cmd option _must_ be set. Otherwise --dry-run option will be
	_ignored_.

-t::
--latency::
	Print out the latency the IOCTL took (in us).

-g <storage-tag>::
--storage-tag=<storage-tag>::
	Variable Sized Expected Logical Block Storage Tag(ELBST).

-C::
--storage-tag-check::
	This flag enables Storage Tag field checking as part of end-to-end
	data protection processing.

--force::
    Ignore namespace is currently busy and performed the operation
    even though.

EXAMPLES
--------
No examples yet.

NVME
----
Part of the nvme-user suite
   070701015D6E25000081A4000003E80000006400000001642C0FB600000AA1000000000000004A00000000000000000000003400000000nvme-cli/Documentation/nvme-zns-changed-zone-list.1   '\" t
.\"     Title: nvme-zns-changed-zone-list
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-ZNS\-CHANGED\-" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-zns-changed-zone-list \- Retrieve Changed Zone log for the given device
.SH "SYNOPSIS"
.sp
.nf
\fInvme zns changed\-zone\-list\fR <device> [\-o <fmt> | \-\-output\-format=<fmt>]
                                      [\-\-namespace\-id=<NUM> | \-n <NUM>]
                                      [\-\-rae | \-r]
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, requests the namespace\(cqs changed zoned list log and provides the result and returned structure\&.
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1)\&.
.sp
On success, the returned list may be decoded and displayed in one of several ways\&.
.SH "OPTIONS"
.PP
\-o <format>, \-\-output\-format=<format>
.RS 4
Set the reporting format to
\fInormal\fR,
\fIjson\fR, or
\fIbinary\fR\&. Only one output format can be used at a time\&.
.RE
.PP
\-r, \-\-rae
.RS 4
Retain an Asynchronous Event\&.
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Get the changed zone list log for namespace 1
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme zns changed\-zone\-list /dev/nvme0 \-n 1
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Show the output in json format
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme zns changed\-zone\-list /dev/nvme0 \-o json \-n 1
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of nvme\-cli
   070701015D6E26000081A4000003E80000006400000001642C0FB600004A32000000000000004A00000000000000000000003700000000nvme-cli/Documentation/nvme-zns-changed-zone-list.html    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-zns-changed-zone-list(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-zns-changed-zone-list(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-zns-changed-zone-list -
   Retrieve Changed Zone log for the given device
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme zns changed-zone-list</em> &lt;device&gt; [-o &lt;fmt&gt; | --output-format=&lt;fmt&gt;]
                                      [--namespace-id=&lt;NUM&gt; | -n &lt;NUM&gt;]
                                      [--rae | -r]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, requests the namespace&#8217;s changed zoned list log
and provides the result and returned structure.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).</p></div>
<div class="paragraph"><p>On success, the returned list may be decoded and displayed in one of several
ways.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-o &lt;format&gt;
</dt>
<dt class="hdlist1">
--output-format=&lt;format&gt;
</dt>
<dd>
<p>
              Set the reporting format to <em>normal</em>, <em>json</em>, or
              <em>binary</em>. Only one output format can be used at a time.
</p>
</dd>
<dt class="hdlist1">
-r
</dt>
<dt class="hdlist1">
--rae
</dt>
<dd>
<p>
        Retain an Asynchronous Event.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Get the changed zone list log for namespace 1
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme zns changed-zone-list /dev/nvme0 -n 1</code></pre>
</div></div>
</li>
<li>
<p>
Show the output in json format
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme zns changed-zone-list /dev/nvme0 -o json -n 1</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of nvme-cli</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
  070701015D6E27000081A4000003E80000006400000001642C0FB600000AC3000000000000004A00000000000000000000002D00000000nvme-cli/Documentation/nvme-zns-close-zone.1  '\" t
.\"     Title: nvme-zns-close-zone
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-ZNS\-CLOSE\-ZO" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-zns-close-zone \- Closes one or all zones
.SH "SYNOPSIS"
.sp
.nf
\fInvme zns close\-zone\fR <device> [\-\-namespace\-id=<NUM> | \-n <NUM>]
                                                [\-\-start\-lba=<LBA> | \-s <LBA>]
                                                [\-\-select\-all | \-a]
                                                [\-\-timeout=<timeout> | \-t <timeout>]
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, issues the Zone Management Send command with the "Close Zone" action\&. This will transition the zone to the closed state\&.
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1)\&.
.SH "OPTIONS"
.PP
\-n <NUM>, \-\-namespace\-id=<NUM>
.RS 4
Use the provided namespace id for the command\&. If not provided, the namespace id of the block device will be used\&. If the command is issued to a non\-block device, the parameter is required\&.
.RE
.PP
\-s <lba>, \-\-start\-lba=<lba>
.RS 4
The starting LBA of the zone to close\&.
.RE
.PP
\-a, \-\-select\-all
.RS 4
Select all zones for this action
.RE
.PP
\-t <timeout>, \-\-timeout=<timeout>
.RS 4
Override default timeout value\&. In milliseconds\&.
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Close all zones on namespace 1:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme zns close\-zone /dev/nvme0 \-a \-n 1
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of nvme\-cli
 070701015D6E28000081A4000003E80000006400000001642C0FB600004ADF000000000000004A00000000000000000000003000000000nvme-cli/Documentation/nvme-zns-close-zone.html   <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-zns-close-zone(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-zns-close-zone(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-zns-close-zone -
   Closes one or all zones
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme zns close-zone</em> &lt;device&gt; [--namespace-id=&lt;NUM&gt; | -n &lt;NUM&gt;]
                                                [--start-lba=&lt;LBA&gt; | -s &lt;LBA&gt;]
                                                [--select-all | -a]
                                                [--timeout=&lt;timeout&gt; | -t &lt;timeout&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, issues the Zone Management Send command with the
"Close Zone" action. This will transition the zone to the closed state.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-n &lt;NUM&gt;
</dt>
<dt class="hdlist1">
--namespace-id=&lt;NUM&gt;
</dt>
<dd>
<p>
        Use the provided namespace id for the command. If not provided, the
        namespace id of the block device will be used. If the command is issued
        to a non-block device, the parameter is required.
</p>
</dd>
<dt class="hdlist1">
-s &lt;lba&gt;
</dt>
<dt class="hdlist1">
--start-lba=&lt;lba&gt;
</dt>
<dd>
<p>
        The starting LBA of the zone to close.
</p>
</dd>
<dt class="hdlist1">
-a
</dt>
<dt class="hdlist1">
--select-all
</dt>
<dd>
<p>
        Select all zones for this action
</p>
</dd>
<dt class="hdlist1">
-t &lt;timeout&gt;
</dt>
<dt class="hdlist1">
--timeout=&lt;timeout&gt;
</dt>
<dd>
<p>
        Override default timeout value. In milliseconds.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Close all zones on namespace 1:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme zns close-zone /dev/nvme0 -a -n 1</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of nvme-cli</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
 070701015D6E29000081A4000003E80000006400000001642C0FB600000AD8000000000000004A00000000000000000000002E00000000nvme-cli/Documentation/nvme-zns-finish-zone.1 '\" t
.\"     Title: nvme-zns-finish-zone
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-ZNS\-FINISH\-Z" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-zns-finish-zone \- Finishes one or all zones
.SH "SYNOPSIS"
.sp
.nf
\fInvme zns finish\-zone\fR <device> [\-\-namespace\-id=<NUM> | \-n <NUM>]
                                                [\-\-start\-lba=<LBA> | \-s <LBA>]
                                                [\-\-select\-all | \-a]
                                                [\-\-timeout=<timeout> | \-t <timeout>]
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, issues the Zone Management Send command with the "Finish Zone" action\&. This will transition the zone to the full state on success\&.
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1)\&.
.SH "OPTIONS"
.PP
\-n <NUM>, \-\-namespace\-id=<NUM>
.RS 4
Use the provided namespace id for the command\&. If not provided, the namespace id of the block device will be used\&. If the command is issued to a non\-block device, the parameter is required\&.
.RE
.PP
\-s <lba>, \-\-start\-lba=<lba>
.RS 4
The starting LBA of the zone to finish\&.
.RE
.PP
\-a, \-\-select\-all
.RS 4
Select all zones for this action\&.
.RE
.PP
\-t <timeout>, \-\-timeout=<timeout>
.RS 4
Override default timeout value\&. In milliseconds\&.
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Finish all zones on namespace 1:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme zns finish\-zone /dev/nvme0 \-a \-n 1
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of nvme\-cli
070701015D6E2A000081A4000003E80000006400000001642C0FB600004AF4000000000000004A00000000000000000000003100000000nvme-cli/Documentation/nvme-zns-finish-zone.html  <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-zns-finish-zone(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-zns-finish-zone(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-zns-finish-zone -
   Finishes one or all zones
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme zns finish-zone</em> &lt;device&gt; [--namespace-id=&lt;NUM&gt; | -n &lt;NUM&gt;]
                                                [--start-lba=&lt;LBA&gt; | -s &lt;LBA&gt;]
                                                [--select-all | -a]
                                                [--timeout=&lt;timeout&gt; | -t &lt;timeout&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, issues the Zone Management Send command with the
"Finish Zone" action. This will transition the zone to the full state on
success.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-n &lt;NUM&gt;
</dt>
<dt class="hdlist1">
--namespace-id=&lt;NUM&gt;
</dt>
<dd>
<p>
        Use the provided namespace id for the command. If not provided, the
        namespace id of the block device will be used. If the command is issued
        to a non-block device, the parameter is required.
</p>
</dd>
<dt class="hdlist1">
-s &lt;lba&gt;
</dt>
<dt class="hdlist1">
--start-lba=&lt;lba&gt;
</dt>
<dd>
<p>
        The starting LBA of the zone to finish.
</p>
</dd>
<dt class="hdlist1">
-a
</dt>
<dt class="hdlist1">
--select-all
</dt>
<dd>
<p>
        Select all zones for this action.
</p>
</dd>
<dt class="hdlist1">
-t &lt;timeout&gt;
</dt>
<dt class="hdlist1">
--timeout=&lt;timeout&gt;
</dt>
<dd>
<p>
        Override default timeout value. In milliseconds.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Finish all zones on namespace 1:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme zns finish-zone /dev/nvme0 -a -n 1</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of nvme-cli</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
070701015D6E2B000081A4000003E80000006400000001642C0FB600000A1C000000000000004A00000000000000000000002A00000000nvme-cli/Documentation/nvme-zns-id-ctrl.1 '\" t
.\"     Title: nvme-zns-id-ctrl
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-ZNS\-ID\-CTRL" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-zns-id-ctrl \- Send NVMe Zoned Command Set Identify Controller, return result and structure
.SH "SYNOPSIS"
.sp
.nf
\fInvme zns id\-ctrl\fR <device> [\-o <fmt> | \-\-output\-format=<fmt>]
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, sends the zoned command set\(cqs identify controller command and provides the result and returned structure\&.
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1)\&.
.sp
On success, the data structure returned by the device will be decoded and displayed in one of several ways\&.
.SH "OPTIONS"
.PP
\-o <format>, \-\-output\-format=<format>
.RS 4
Set the reporting format to
\fInormal\fR,
\fIjson\fR, or
\fIbinary\fR\&. Only one output format can be used at a time\&.
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Has the program interpret the returned buffer and display the known fields in a human readable format:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme zns id\-ctrl /dev/nvme0
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Show the output in json format
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme zns id\-ctrl /dev/nvme0 \-o json
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of nvme\-cli
070701015D6E2C000081A4000003E80000006400000001642C0FB60000496D000000000000004A00000000000000000000002D00000000nvme-cli/Documentation/nvme-zns-id-ctrl.html  <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-zns-id-ctrl(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-zns-id-ctrl(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-zns-id-ctrl -
   Send NVMe Zoned Command Set Identify Controller, return                    result and structure
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme zns id-ctrl</em> &lt;device&gt; [-o &lt;fmt&gt; | --output-format=&lt;fmt&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, sends the zoned command set&#8217;s identify controller
command and provides the result and returned structure.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).</p></div>
<div class="paragraph"><p>On success, the data structure returned by the device will be decoded and
displayed in one of several ways.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-o &lt;format&gt;
</dt>
<dt class="hdlist1">
--output-format=&lt;format&gt;
</dt>
<dd>
<p>
              Set the reporting format to <em>normal</em>, <em>json</em>, or
              <em>binary</em>. Only one output format can be used at a time.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Has the program interpret the returned buffer and display the known
fields in a human readable format:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme zns id-ctrl /dev/nvme0</code></pre>
</div></div>
</li>
<li>
<p>
Show the output in json format
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme zns id-ctrl /dev/nvme0 -o json</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of nvme-cli</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
   070701015D6E2D000081A4000003E80000006400000001642C0FB600000BE6000000000000004A00000000000000000000002800000000nvme-cli/Documentation/nvme-zns-id-ns.1   '\" t
.\"     Title: nvme-zns-id-ns
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-ZNS\-ID\-NS" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-zns-id-ns \- Send NVMe Zoned Command Set Identify namespace, return result and structure
.SH "SYNOPSIS"
.sp
.nf
\fInvme zns id\-ns\fR <device>  [\-\-namespace\-id=<NUM> | \-n <NUM>]
                             [\-o <fmt> | \-\-output\-format=<fmt>]
                             [\-v | \-\-verbose]
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, sends the zoned command set\(cqs identify namespace command and provides the result and returned structure\&.
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1)\&.
.sp
On success, the data structure returned by the device will be decoded and displayed in one of several ways\&.
.SH "OPTIONS"
.PP
\-n <NUM>, \-\-namespace\-id=<NUM>
.RS 4
Use the provided namespace id for the command\&. If not provided, the namespace id of the block device will be used\&. If the command is issued to a non\-block device, the parameter is required\&.
.RE
.PP
\-v, \-\-verbose
.RS 4
Increase the information detail in the output\&.
.RE
.PP
\-o <format>, \-\-output\-format=<format>
.RS 4
Set the reporting format to
\fInormal\fR,
\fIjson\fR, or
\fIbinary\fR\&. Only one output format can be used at a time\&.
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Has the program interpret the returned buffer and display the known fields in a human readable format:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme zns id\-ns /dev/nvme0 \-n 1
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Show the output in json format with extra details
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme zns id\-ns /dev/nvme0 \-o json \-v
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of nvme\-cli
  070701015D6E2E000081A4000003E80000006400000001642C0FB600004BE6000000000000004A00000000000000000000002B00000000nvme-cli/Documentation/nvme-zns-id-ns.html    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-zns-id-ns(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-zns-id-ns(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-zns-id-ns -
   Send NVMe Zoned Command Set Identify namespace, return                    result and structure
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme zns id-ns</em> &lt;device&gt;  [--namespace-id=&lt;NUM&gt; | -n &lt;NUM&gt;]
                             [-o &lt;fmt&gt; | --output-format=&lt;fmt&gt;]
                             [-v | --verbose]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, sends the zoned command set&#8217;s identify namespace
command and provides the result and returned structure.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).</p></div>
<div class="paragraph"><p>On success, the data structure returned by the device will be decoded and
displayed in one of several ways.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-n &lt;NUM&gt;
</dt>
<dt class="hdlist1">
--namespace-id=&lt;NUM&gt;
</dt>
<dd>
<p>
        Use the provided namespace id for the command. If not provided, the
        namespace id of the block device will be used. If the command is issued
        to a non-block device, the parameter is required.
</p>
</dd>
<dt class="hdlist1">
-v
</dt>
<dt class="hdlist1">
--verbose
</dt>
<dd>
<p>
        Increase the information detail in the output.
</p>
</dd>
<dt class="hdlist1">
-o &lt;format&gt;
</dt>
<dt class="hdlist1">
--output-format=&lt;format&gt;
</dt>
<dd>
<p>
              Set the reporting format to <em>normal</em>, <em>json</em>, or
              <em>binary</em>. Only one output format can be used at a time.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Has the program interpret the returned buffer and display the known
fields in a human readable format:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme zns id-ns /dev/nvme0 -n 1</code></pre>
</div></div>
</li>
<li>
<p>
Show the output in json format with extra details
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme zns id-ns /dev/nvme0 -o json -v</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of nvme-cli</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
  070701015D6E2F000081A4000003E80000006400000001642C0FB600000AD5000000000000004A00000000000000000000002F00000000nvme-cli/Documentation/nvme-zns-offline-zone.1    '\" t
.\"     Title: nvme-zns-offline-zone
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-ZNS\-OFFLINE\-" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-zns-offline-zone \- Offlines one or all zones
.SH "SYNOPSIS"
.sp
.nf
\fInvme zns offline\-zone\fR <device> [\-\-namespace\-id=<NUM> | \-n <NUM>]
                                                [\-\-start\-lba=<LBA> | \-s <LBA>]
                                                [\-\-select\-all | \-a]
                                                [\-\-timeout=<timeout> | \-t <timeout>]
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, issues the Zone Management Send command with the "Offline Zone" action\&. This will transition the zone to the offlined state\&.
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1)\&.
.SH "OPTIONS"
.PP
\-n <NUM>, \-\-namespace\-id=<NUM>
.RS 4
Use the provided namespace id for the command\&. If not provided, the namespace id of the block device will be used\&. If the command is issued to a non\-block device, the parameter is required\&.
.RE
.PP
\-s <lba>, \-\-start\-lba=<lba>
.RS 4
The starting LBA of the zone to offline\&.
.RE
.PP
\-a, \-\-select\-all
.RS 4
Select all zones for this action
.RE
.PP
\-t <timeout>, \-\-timeout=<timeout>
.RS 4
Override default timeout value\&. In milliseconds\&.
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Offline all zones on namespace 1:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme zns offline\-zone /dev/nvme0 \-a \-n 1
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of nvme\-cli
   070701015D6E30000081A4000003E80000006400000001642C0FB600004AF3000000000000004A00000000000000000000003200000000nvme-cli/Documentation/nvme-zns-offline-zone.html <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-zns-offline-zone(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-zns-offline-zone(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-zns-offline-zone -
   Offlines one or all zones
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme zns offline-zone</em> &lt;device&gt; [--namespace-id=&lt;NUM&gt; | -n &lt;NUM&gt;]
                                                [--start-lba=&lt;LBA&gt; | -s &lt;LBA&gt;]
                                                [--select-all | -a]
                                                [--timeout=&lt;timeout&gt; | -t &lt;timeout&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, issues the Zone Management Send command with the
"Offline Zone" action. This will transition the zone to the offlined state.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-n &lt;NUM&gt;
</dt>
<dt class="hdlist1">
--namespace-id=&lt;NUM&gt;
</dt>
<dd>
<p>
        Use the provided namespace id for the command. If not provided, the
        namespace id of the block device will be used. If the command is issued
        to a non-block device, the parameter is required.
</p>
</dd>
<dt class="hdlist1">
-s &lt;lba&gt;
</dt>
<dt class="hdlist1">
--start-lba=&lt;lba&gt;
</dt>
<dd>
<p>
        The starting LBA of the zone to offline.
</p>
</dd>
<dt class="hdlist1">
-a
</dt>
<dt class="hdlist1">
--select-all
</dt>
<dd>
<p>
        Select all zones for this action
</p>
</dd>
<dt class="hdlist1">
-t &lt;timeout&gt;
</dt>
<dt class="hdlist1">
--timeout=&lt;timeout&gt;
</dt>
<dd>
<p>
        Override default timeout value. In milliseconds.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Offline all zones on namespace 1:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme zns offline-zone /dev/nvme0 -a -n 1</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of nvme-cli</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
 070701015D6E31000081A4000003E80000006400000001642C0FB600000B01000000000000004A00000000000000000000002C00000000nvme-cli/Documentation/nvme-zns-open-zone.1   '\" t
.\"     Title: nvme-zns-open-zone
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-ZNS\-OPEN\-ZON" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-zns-open-zone \- Opens one or all zones
.SH "SYNOPSIS"
.sp
.nf
\fInvme zns open\-zone\fR <device> [\-\-namespace\-id=<NUM> | \-n <NUM>]
                              [\-\-start\-lba=<LBA> | \-s <LBA>]
                              [\-\-zrwaa | \-r]
                              [\-\-select\-all | \-a]
                              [\-\-timeout=<timeout> | \-t <timeout>]
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, issues the Zone Management Send command with the "Open Zone" action\&. This will transition the zone to the opened state\&.
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1)\&.
.SH "OPTIONS"
.PP
\-n <NUM>, \-\-namespace\-id=<NUM>
.RS 4
Use the provided namespace id for the command\&. If not provided, the namespace id of the block device will be used\&. If the command is issued to a non\-block device, the parameter is required\&.
.RE
.PP
\-s <lba>, \-\-start\-lba=<lba>
.RS 4
The starting LBA of the zone to open\&.
.RE
.PP
\-r, \-\-zrwaa
.RS 4
Allocate Zone Random Write Area to zone
.RE
.PP
\-a, \-\-select\-all
.RS 4
Select all zones for this action
.RE
.PP
\-t <timeout>, \-\-timeout=<timeout>
.RS 4
Override default timeout value\&. In milliseconds\&.
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Open the first zone on namespace 1:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme zns open\-zone /dev/nvme0 \-n 1 \-s 0
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of nvme\-cli
   070701015D6E32000081A4000003E80000006400000001642C0FB600004B65000000000000004A00000000000000000000002F00000000nvme-cli/Documentation/nvme-zns-open-zone.html    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-zns-open-zone(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-zns-open-zone(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-zns-open-zone -
   Opens one or all zones
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme zns open-zone</em> &lt;device&gt; [--namespace-id=&lt;NUM&gt; | -n &lt;NUM&gt;]
                              [--start-lba=&lt;LBA&gt; | -s &lt;LBA&gt;]
                              [--zrwaa | -r]
                              [--select-all | -a]
                              [--timeout=&lt;timeout&gt; | -t &lt;timeout&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, issues the Zone Management Send command with the
"Open Zone" action. This will transition the zone to the opened state.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-n &lt;NUM&gt;
</dt>
<dt class="hdlist1">
--namespace-id=&lt;NUM&gt;
</dt>
<dd>
<p>
        Use the provided namespace id for the command. If not provided, the
        namespace id of the block device will be used. If the command is issued
        to a non-block device, the parameter is required.
</p>
</dd>
<dt class="hdlist1">
-s &lt;lba&gt;
</dt>
<dt class="hdlist1">
--start-lba=&lt;lba&gt;
</dt>
<dd>
<p>
        The starting LBA of the zone to open.
</p>
</dd>
<dt class="hdlist1">
-r
</dt>
<dt class="hdlist1">
--zrwaa
</dt>
<dd>
<p>
        Allocate Zone Random Write Area to zone
</p>
</dd>
<dt class="hdlist1">
-a
</dt>
<dt class="hdlist1">
--select-all
</dt>
<dd>
<p>
        Select all zones for this action
</p>
</dd>
<dt class="hdlist1">
-t &lt;timeout&gt;
</dt>
<dt class="hdlist1">
--timeout=&lt;timeout&gt;
</dt>
<dd>
<p>
        Override default timeout value. In milliseconds.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Open the first zone on namespace 1:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme zns open-zone /dev/nvme0 -n 1 -s 0</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of nvme-cli</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
   070701015D6E33000081A4000003E80000006400000001642C0FB60000112A000000000000004A00000000000000000000002F00000000nvme-cli/Documentation/nvme-zns-report-zones.1    '\" t
.\"     Title: nvme-zns-report-zones
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-ZNS\-REPORT\-Z" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-zns-report-zones \- Retrieve and display the Report Zones data structure
.SH "SYNOPSIS"
.sp
.nf
\fInvme zns report\-zones\fR <device> [\-\-namespace\-id=<NUM> | \-n <NUM>]
                                 [\-\-start\-lba=<IONUM> | \-s <IONUM>]
                                 [\-\-descs=<NUM> | \-d <NUM>]
                                 [\-\-state=<NUM> | \-S <NUM>]
                                 [\-\-extended | \-e]
                                 [\-\-partial | \-p]
                                 [\-\-verbose | \-v]
                                 [\-\-output\-format=<FMT> | \-o <FMT>]
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, sends the Zone Management Receive command with the Zone Receive Action set to either Report Zones or Extended Report Zones, depending on the \fIextended\fR option\&.
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1)\&.
.sp
On success, the data structure returned by the device will be decoded and displayed in one of several ways\&.
.SH "OPTIONS"
.PP
\-n <NUM>, \-\-namespace\-id=<NUM>
.RS 4
Use the provided namespace id for the command\&. If not provided, the namespace id of the block device will be used\&. If the command is issued to a non\-block device, the parameter is required\&.
.RE
.PP
\-s <lba>, \-\-start\-lba=<lba>
.RS 4
The starting LBA of the zone to begin the report
.RE
.PP
\-d <NUM>, \-\-descs=<NUM>
.RS 4
The number of descriptors to request in the report\&.
.RE
.PP
\-S <NUM>, \-\-state=<NUM>
.RS 4
The state of zones to request in the report\&. Known values include:
.TS
allbox tab(:);
lt lt
lt lt
lt lt
lt lt
lt lt
lt lt
lt lt
lt lt
lt lt.
T{
Value
T}:T{
Definition
T}
T{
0
T}:T{
List all zones (default)
T}
T{
1
T}:T{
Empty State
T}
T{
2
T}:T{
Implicitly Opened State
T}
T{
3
T}:T{
Explicitly Opened State
T}
T{
4
T}:T{
Closed State
T}
T{
5
T}:T{
Full State
T}
T{
6
T}:T{
Read Only State
T}
T{
7
T}:T{
Offline State
T}
.TE
.sp 1
.RE
.PP
\-e, \-\-extended
.RS 4
Request to use the Extended Report Zones option\&. The extended data is not decoded\&.
.RE
.PP
\-p, \-\-partial
.RS 4
If set, the device will return the number of zones that match the state rather than the number of zones returned in the report\&.
.RE
.PP
\-v, \-\-verbose
.RS 4
Increase the information detail in the output\&.
.RE
.PP
\-o <format>, \-\-output\-format=<format>
.RS 4
Set the reporting format to
\fInormal\fR,
\fIjson\fR, or
\fIbinary\fR\&. Only one output format can be used at a time\&.
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Has the program interpret the report for 16 zones, and display the known fields in a human readable format:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme zns report\-zones /dev/nvme0 \-n 1 \-d 16
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Show the output in json format with extra details
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme zns report\-zones /dev/nvme0 \-n 1 \-d 16 \-o json
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of nvme\-cli
  070701015D6E34000081A4000003E80000006400000001642C0FB600005749000000000000004A00000000000000000000003200000000nvme-cli/Documentation/nvme-zns-report-zones.html <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-zns-report-zones(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-zns-report-zones(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-zns-report-zones -
   Retrieve and display the Report Zones data structure
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme zns report-zones</em> &lt;device&gt; [--namespace-id=&lt;NUM&gt; | -n &lt;NUM&gt;]
                                 [--start-lba=&lt;IONUM&gt; | -s &lt;IONUM&gt;]
                                 [--descs=&lt;NUM&gt; | -d &lt;NUM&gt;]
                                 [--state=&lt;NUM&gt; | -S &lt;NUM&gt;]
                                 [--extended | -e]
                                 [--partial | -p]
                                 [--verbose | -v]
                                 [--output-format=&lt;FMT&gt; | -o &lt;FMT&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, sends the Zone Management Receive command with the
Zone Receive Action set to either Report Zones or Extended Report Zones,
depending on the <em>extended</em> option.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).</p></div>
<div class="paragraph"><p>On success, the data structure returned by the device will be decoded and
displayed in one of several ways.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-n &lt;NUM&gt;
</dt>
<dt class="hdlist1">
--namespace-id=&lt;NUM&gt;
</dt>
<dd>
<p>
        Use the provided namespace id for the command. If not provided, the
        namespace id of the block device will be used. If the command is issued
        to a non-block device, the parameter is required.
</p>
</dd>
<dt class="hdlist1">
-s &lt;lba&gt;
</dt>
<dt class="hdlist1">
--start-lba=&lt;lba&gt;
</dt>
<dd>
<p>
        The starting LBA of the zone to begin the report
</p>
</dd>
<dt class="hdlist1">
-d &lt;NUM&gt;
</dt>
<dt class="hdlist1">
--descs=&lt;NUM&gt;
</dt>
<dd>
<p>
        The number of descriptors to request in the report.
</p>
</dd>
<dt class="hdlist1">
-S &lt;NUM&gt;
</dt>
<dt class="hdlist1">
--state=&lt;NUM&gt;
</dt>
<dd>
<p>
        The state of zones to request in the report. Known values include:
</p>
<div class="tableblock">
<table rules="all"
width="100%"
frame="border"
cellspacing="0" cellpadding="4">
<col width="50%" />
<col width="50%" />
<tbody>
<tr>
<td align="left" valign="top"><p class="table">Value</p></td>
<td align="left" valign="top"><p class="table">Definition</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">0</p></td>
<td align="left" valign="top"><p class="table">List all zones (default)</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">1</p></td>
<td align="left" valign="top"><p class="table">Empty State</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">2</p></td>
<td align="left" valign="top"><p class="table">Implicitly Opened State</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">3</p></td>
<td align="left" valign="top"><p class="table">Explicitly Opened State</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">4</p></td>
<td align="left" valign="top"><p class="table">Closed State</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">5</p></td>
<td align="left" valign="top"><p class="table">Full State</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">6</p></td>
<td align="left" valign="top"><p class="table">Read Only State</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">7</p></td>
<td align="left" valign="top"><p class="table">Offline State</p></td>
</tr>
</tbody>
</table>
</div>
</dd>
<dt class="hdlist1">
-e
</dt>
<dt class="hdlist1">
--extended
</dt>
<dd>
<p>
        Request to use the Extended Report Zones option. The extended data is
        not decoded.
</p>
</dd>
<dt class="hdlist1">
-p
</dt>
<dt class="hdlist1">
--partial
</dt>
<dd>
<p>
        If set, the device will return the number of zones that match the state
        rather than the number of zones returned in the report.
</p>
</dd>
<dt class="hdlist1">
-v
</dt>
<dt class="hdlist1">
--verbose
</dt>
<dd>
<p>
        Increase the information detail in the output.
</p>
</dd>
<dt class="hdlist1">
-o &lt;format&gt;
</dt>
<dt class="hdlist1">
--output-format=&lt;format&gt;
</dt>
<dd>
<p>
              Set the reporting format to <em>normal</em>, <em>json</em>, or
              <em>binary</em>. Only one output format can be used at a time.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Has the program interpret the report for 16 zones, and display the known
fields in a human readable format:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme zns report-zones /dev/nvme0 -n 1 -d 16</code></pre>
</div></div>
</li>
<li>
<p>
Show the output in json format with extra details
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme zns report-zones /dev/nvme0 -n 1 -d 16 -o json</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of nvme-cli</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
   070701015D6E35000081A4000003E80000006400000001642C0FB600000AEF000000000000004A00000000000000000000002D00000000nvme-cli/Documentation/nvme-zns-reset-zone.1  '\" t
.\"     Title: nvme-zns-reset-zone
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-ZNS\-RESET\-ZO" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-zns-reset-zone \- Resets one or all zones
.SH "SYNOPSIS"
.sp
.nf
\fInvme zns reset\-zone\fR <device> [\-\-namespace\-id=<NUM> | \-n <NUM>]
                                    [\-\-start\-lba=<LBA> | \-s <LBA>]
                                    [\-\-select\-all | \-a]
                                    [\-\-timeout=<timeout> | \-t <timeout>]
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, issues the Zone Management Send command with the "Reset Zone" action\&. This will transition the zone to the empty state, setting the write pointer for each zone back to the beginning on success\&.
.sp
The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1)\&.
.SH "OPTIONS"
.PP
\-n <NUM>, \-\-namespace\-id=<NUM>
.RS 4
Use the provided namespace id for the command\&. If not provided, the namespace id of the block device will be used\&. If the command is issued to a non\-block device, the parameter is required\&.
.RE
.PP
\-s <lba>, \-\-start\-lba=<lba>
.RS 4
The starting LBA of the zone to reset\&.
.RE
.PP
\-a, \-\-select\-all
.RS 4
Select all zones for this action
.RE
.PP
\-t <timeout>, \-\-timeout=<timeout>
.RS 4
Override default timeout value\&. In milliseconds\&.
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Reset the first zone on namespace 1:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme zns reset\-zone /dev/nvme0 \-n 1 \-s 0
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of nvme\-cli
 070701015D6E36000081A4000003E80000006400000001642C0FB600004B0C000000000000004A00000000000000000000003000000000nvme-cli/Documentation/nvme-zns-reset-zone.html   <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-zns-reset-zone(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-zns-reset-zone(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-zns-reset-zone -
   Resets one or all zones
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme zns reset-zone</em> &lt;device&gt; [--namespace-id=&lt;NUM&gt; | -n &lt;NUM&gt;]
                                    [--start-lba=&lt;LBA&gt; | -s &lt;LBA&gt;]
                                    [--select-all | -a]
                                    [--timeout=&lt;timeout&gt; | -t &lt;timeout&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, issues the Zone Management Send command with the
"Reset Zone" action. This will transition the zone to the empty state, setting
the write pointer for each zone back to the beginning on success.</p></div>
<div class="paragraph"><p>The &lt;device&gt; parameter is mandatory and may be either the NVMe character
device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-n &lt;NUM&gt;
</dt>
<dt class="hdlist1">
--namespace-id=&lt;NUM&gt;
</dt>
<dd>
<p>
        Use the provided namespace id for the command. If not provided, the
        namespace id of the block device will be used. If the command is issued
        to a non-block device, the parameter is required.
</p>
</dd>
<dt class="hdlist1">
-s &lt;lba&gt;
</dt>
<dt class="hdlist1">
--start-lba=&lt;lba&gt;
</dt>
<dd>
<p>
        The starting LBA of the zone to reset.
</p>
</dd>
<dt class="hdlist1">
-a
</dt>
<dt class="hdlist1">
--select-all
</dt>
<dd>
<p>
        Select all zones for this action
</p>
</dd>
<dt class="hdlist1">
-t &lt;timeout&gt;
</dt>
<dt class="hdlist1">
--timeout=&lt;timeout&gt;
</dt>
<dd>
<p>
        Override default timeout value. In milliseconds.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Reset the first zone on namespace 1:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme zns reset-zone /dev/nvme0 -n 1 -s 0</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of nvme-cli</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
070701015D6E37000081A4000003E80000006400000001642C0FB600000BC9000000000000004A00000000000000000000003000000000nvme-cli/Documentation/nvme-zns-set-zone-desc.1   '\" t
.\"     Title: nvme-zns-set-zone-desc
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-ZNS\-SET\-ZONE" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-zns-set-zone-desc \- Set extended descriptor data for a zone
.SH "SYNOPSIS"
.sp
.nf
\fInvme zns set\-zone\-desc\fR <device> [\-\-namespace\-id=<NUM> | \-n <NUM>]
                                 [\-\-start\-lba=<IONUM>, \-s <IONUM>]
                                 [\-\-zrwaa | \-r]
                                 [\-data=<FILE>, \-d <FILE>]
                                 [\-\-timeout=<timeout> | \-t <timeout>]
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, issues the Zone Management Send command with the Set Zone Descriptor Extensions action\&. The input will default to stdin\&. Alternatively, the data may come from a file that can be specified\&. The data length will automatically be calculated from the zns identify namespace\&.
.SH "OPTIONS"
.PP
\-n <NUM>, \-\-namespace\-id=<NUM>
.RS 4
Use the provided namespace id for the command\&. If not provided, the namespace id of the block device will be used\&. If the command is issued to a non\-block device, the parameter is required\&.
.RE
.PP
\-s <lba>, \-\-start\-lba=<lba>
.RS 4
The starting LBA of the zone to manage send\&.
.RE
.PP
\-r, \-\-zrwaa
.RS 4
Allocate Zone Random Write Area to zone\&.
.RE
.PP
\-d <FILE, \-data=<FILE>
.RS 4
Optional file for data (default stdin)
.RE
.PP
\-t <timeout>, \-\-timeout=<timeout>
.RS 4
Override default timeout value\&. In milliseconds\&.
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Write "hello world" into the zone descriptor for namespace 1\(cqs first zone (requires device supports a large enough zone extended data)
.sp
.if n \{\
.RS 4
.\}
.nf
# echo "hello world" | nvme zns set\-zone\-desc /dev/nvme0 \-n 1 \-s 0
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of nvme\-cli
   070701015D6E38000081A4000003E80000006400000001642C0FB600004C24000000000000004A00000000000000000000003300000000nvme-cli/Documentation/nvme-zns-set-zone-desc.html    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-zns-set-zone-desc(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-zns-set-zone-desc(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-zns-set-zone-desc -
   Set extended descriptor data for a zone
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme zns set-zone-desc</em> &lt;device&gt; [--namespace-id=&lt;NUM&gt; | -n &lt;NUM&gt;]
                                 [--start-lba=&lt;IONUM&gt;, -s &lt;IONUM&gt;]
                                 [--zrwaa | -r]
                                 [-data=&lt;FILE&gt;, -d &lt;FILE&gt;]
                                 [--timeout=&lt;timeout&gt; | -t &lt;timeout&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, issues the Zone Management Send command with the
Set Zone Descriptor Extensions action. The input will default to stdin.
Alternatively, the data may come from a file that can be specified. The data
length will automatically be calculated from the zns identify namespace.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-n &lt;NUM&gt;
</dt>
<dt class="hdlist1">
--namespace-id=&lt;NUM&gt;
</dt>
<dd>
<p>
        Use the provided namespace id for the command. If not provided, the
        namespace id of the block device will be used. If the command is issued
        to a non-block device, the parameter is required.
</p>
</dd>
<dt class="hdlist1">
-s &lt;lba&gt;
</dt>
<dt class="hdlist1">
--start-lba=&lt;lba&gt;
</dt>
<dd>
<p>
        The starting LBA of the zone to manage send.
</p>
</dd>
<dt class="hdlist1">
-r
</dt>
<dt class="hdlist1">
--zrwaa
</dt>
<dd>
<p>
        Allocate Zone Random Write Area to zone.
</p>
</dd>
<dt class="hdlist1">
-d &lt;FILE
</dt>
<dt class="hdlist1">
-data=&lt;FILE&gt;
</dt>
<dd>
<p>
        Optional file for data (default stdin)
</p>
</dd>
<dt class="hdlist1">
-t &lt;timeout&gt;
</dt>
<dt class="hdlist1">
--timeout=&lt;timeout&gt;
</dt>
<dd>
<p>
        Override default timeout value. In milliseconds.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Write "hello world" into the zone descriptor for namespace 1&#8217;s first zone
  (requires device supports a large enough zone extended data)
</p>
<div class="listingblock">
<div class="content">
<pre><code># echo "hello world" | nvme zns set-zone-desc /dev/nvme0 -n 1 -s 0</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of nvme-cli</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
070701015D6E39000081A4000003E80000006400000001642C0FB600000FEC000000000000004A00000000000000000000002E00000000nvme-cli/Documentation/nvme-zns-zone-append.1 '\" t
.\"     Title: nvme-zns-zone-append
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-ZNS\-ZONE\-APP" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-zns-zone-append \- Send an NVMe write command, provide results
.SH "SYNOPSIS"
.sp
.nf
\fInvme\-zns\-zone\-append\fR <device> [\-\-namespace\-id=<NUM> | \-n <NUM>]
                                [\-\-zslba=<IONUM> | \-s <IONUM>]
                                [\-\-data\-size=<IONUM> | \-z <IONUM>]
                                [\-\-metadata\-size=<IONUM> | \-y <IONUM>]
                                [\-\-data=<FILE> | \-d <FILE>]
                                [\-\-metadata=<FILE> | \-M <FILE>]
                                [\-\-limited\-retry | \-l]
                                [\-\-force\-unit\-access | \-f]
                                [\-\-ref\-tag=<NUM> | \-r <NUM>]
                                [\-\-app\-tag\-mask=<NUM> | \-m <NUM>]
                                [\-\-app\-tag=<NUM> | \-a <NUM>]
                                [\-\-prinfo=<NUM> | \-p <NUM>]
.fi
.SH "DESCRIPTION"
.sp
The zone append command writes the logical blocks specified by the command to the medium from the data data buffer provided\&. Will use stdin by default if you don\(cqt provide a file\&.
.sp
On success, the program will report the LBA that was assigned to the data for the append operation\&.
.SH "OPTIONS"
.PP
\-n <NUM>, \-\-namespace\-id=<NUM>
.RS 4
Use the provided namespace id for the command\&. If not provided, the namespace id of the block device will be used\&. If the command is issued to a non\-block device, the parameter is required\&.
.RE
.PP
\-s <IONUM>, \-\-zslba=<IONUM>, \-z <IONUM>, \-\-data\-size=<IONUM>
.RS 4
Size of data, in bytes\&.
.RE
.PP
\-y <IONUM>, \-\-metadata\-size=<IONUM>
.RS 4
Size of metadata in bytes\&.
.RE
.PP
\-d <FILE>, \-\-data=<FILE>
.RS 4
Data file providing the data to write\&. If none provided, contents are sent from STDIN\&.
.RE
.PP
\-M <FILE>, \-\-metadata=<FILE>
.RS 4
Metadata file, if necessary\&.
.RE
.PP
\-l, \-\-limited\-retry
.RS 4
Sets the limited retry flag\&.
.RE
.PP
\-f, \-\-force\-unit\-access
.RS 4
Set the force\-unit access flag\&.
.RE
.PP
\-r <NUM>, \-\-ref\-tag=<NUM>
.RS 4
Optional reftag when used with protection information\&.
.RE
.PP
\-m <NUM>, \-\-app\-tag\-mask=<NUM>
.RS 4
Optional application tag mask when used with protection information\&.
.RE
.PP
\-a <NUM>, \-\-app\-tag=<NUM>
.RS 4
Optional application tag when used with protection information\&.
.RE
.PP
\-p <NUM>, \-\-prinfo=<NUM>
.RS 4
Protection Information field definition\&.
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Append the data "hello world" into 4k worth of blocks into the zone starting at block 0 for namespace 1:
.sp
.if n \{\
.RS 4
.\}
.nf
# echo "hello world" | nvme zns zone\-append /dev/nvme0 \-n 1 \-s 0 \-z 4k
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of the nvme\-user suite
070701015D6E3A000081A4000003E80000006400000001642C0FB6000052CD000000000000004A00000000000000000000003100000000nvme-cli/Documentation/nvme-zns-zone-append.html  <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-zns-zone-append(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-zns-zone-append(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-zns-zone-append -
   Send an NVMe write command, provide results
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme-zns-zone-append</em> &lt;device&gt; [--namespace-id=&lt;NUM&gt; | -n &lt;NUM&gt;]
                                [--zslba=&lt;IONUM&gt; | -s &lt;IONUM&gt;]
                                [--data-size=&lt;IONUM&gt; | -z &lt;IONUM&gt;]
                                [--metadata-size=&lt;IONUM&gt; | -y &lt;IONUM&gt;]
                                [--data=&lt;FILE&gt; | -d &lt;FILE&gt;]
                                [--metadata=&lt;FILE&gt; | -M &lt;FILE&gt;]
                                [--limited-retry | -l]
                                [--force-unit-access | -f]
                                [--ref-tag=&lt;NUM&gt; | -r &lt;NUM&gt;]
                                [--app-tag-mask=&lt;NUM&gt; | -m &lt;NUM&gt;]
                                [--app-tag=&lt;NUM&gt; | -a &lt;NUM&gt;]
                                [--prinfo=&lt;NUM&gt; | -p &lt;NUM&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>The zone append command writes the logical blocks specified by the command to
the medium from the data data buffer provided. Will use stdin by default
if you don&#8217;t provide a file.</p></div>
<div class="paragraph"><p>On success, the program will report the LBA that was assigned to the data for
the append operation.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-n &lt;NUM&gt;
</dt>
<dt class="hdlist1">
--namespace-id=&lt;NUM&gt;
</dt>
<dd>
<p>
        Use the provided namespace id for the command. If not provided, the
        namespace id of the block device will be used. If the command is issued
        to a non-block device, the parameter is required.
</p>
</dd>
<dt class="hdlist1">
-s &lt;IONUM&gt;
</dt>
<dt class="hdlist1">
--zslba=&lt;IONUM&gt;
</dt>
<dt class="hdlist1">
-z &lt;IONUM&gt;
</dt>
<dt class="hdlist1">
--data-size=&lt;IONUM&gt;
</dt>
<dd>
<p>
        Size of data, in bytes.
</p>
</dd>
<dt class="hdlist1">
-y &lt;IONUM&gt;
</dt>
<dt class="hdlist1">
--metadata-size=&lt;IONUM&gt;
</dt>
<dd>
<p>
        Size of metadata in bytes.
</p>
</dd>
<dt class="hdlist1">
-d &lt;FILE&gt;
</dt>
<dt class="hdlist1">
--data=&lt;FILE&gt;
</dt>
<dd>
<p>
        Data file providing the data to write. If none provided, contents are
        sent from STDIN.
</p>
</dd>
<dt class="hdlist1">
-M &lt;FILE&gt;
</dt>
<dt class="hdlist1">
--metadata=&lt;FILE&gt;
</dt>
<dd>
<p>
        Metadata file, if necessary.
</p>
</dd>
<dt class="hdlist1">
-l
</dt>
<dt class="hdlist1">
--limited-retry
</dt>
<dd>
<p>
        Sets the limited retry flag.
</p>
</dd>
<dt class="hdlist1">
-f
</dt>
<dt class="hdlist1">
--force-unit-access
</dt>
<dd>
<p>
        Set the force-unit access flag.
</p>
</dd>
<dt class="hdlist1">
-r &lt;NUM&gt;
</dt>
<dt class="hdlist1">
--ref-tag=&lt;NUM&gt;
</dt>
<dd>
<p>
        Optional reftag when used with protection information.
</p>
</dd>
<dt class="hdlist1">
-m &lt;NUM&gt;
</dt>
<dt class="hdlist1">
--app-tag-mask=&lt;NUM&gt;
</dt>
<dd>
<p>
        Optional application tag mask when used with protection information.
</p>
</dd>
<dt class="hdlist1">
-a &lt;NUM&gt;
</dt>
<dt class="hdlist1">
--app-tag=&lt;NUM&gt;
</dt>
<dd>
<p>
        Optional application tag when used with protection information.
</p>
</dd>
<dt class="hdlist1">
-p &lt;NUM&gt;
</dt>
<dt class="hdlist1">
--prinfo=&lt;NUM&gt;
</dt>
<dd>
<p>
        Protection Information field definition.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Append the data "hello world" into 4k worth of blocks into the zone starting
  at block 0 for namespace 1:
</p>
<div class="listingblock">
<div class="content">
<pre><code># echo "hello world" | nvme zns zone-append /dev/nvme0 -n 1 -s 0 -z 4k</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme-user suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
   070701015D6E3B000081A4000003E80000006400000001642C0FB600000E0A000000000000004A00000000000000000000003100000000nvme-cli/Documentation/nvme-zns-zone-mgmt-recv.1  '\" t
.\"     Title: nvme-zns-zone-mgmt-recv
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-ZNS\-ZONE\-MGM" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-zns-zone-mgmt-recv \- Zone Management Receive command
.SH "SYNOPSIS"
.sp
.nf
\fInvme zns zone\-mgmt\-recv\fR <device> [\-\-namespace\-id=<NUM> | \-n <NUM>]
                                   [\-\-start\-lba=<LBA> | \-s <LBA>]
                                   [\-\-data\-len=<IONUM>, \-l <IONUM>]
                                   [\-\-zra=<NUM>, \-z <NUM>]
                                   [\-\-zrasf=<NUM>, \-a <NUM>]
                                   [\-\-zra\-spec\-feat, \-f]
                                   [\-\-output\-format=<FMT>, \-o <FMT>]
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, issues the Zone Management Receive command with the requested receive action and additional action specific parameters\&. This is the generic interface provided for forward compatibility as new actions are created that this program isn\(cqt aware of at the time of its development\&. As such, this is a generic command that does not do any additional decoding for specific types of data received\&. This will only report the data as a hex dump, or binary\&.
.SH "OPTIONS"
.PP
\-n <NUM>, \-\-namespace\-id=<NUM>
.RS 4
Use the provided namespace id for the command\&. If not provided, the namespace id of the block device will be used\&. If the command is issued to a non\-block device, the parameter is required\&.
.RE
.PP
\-s <lba>, \-\-start\-lba=<lba>
.RS 4
The starting LBA of the zone to manage receive\&.
.RE
.sp
\-\-data\-len=<NUM> \-l <NUM> Received data buffer length
.PP
\-z <NUM>, \-\-zra=<NUM>
.RS 4
Zone Receive Action
.RE
.sp
\-a <NUM> \-\-zrasf=<NUM> Zone Receive Action Specific field
.PP
\-f, \-\-zra\-spec\-feat
.RS 4
Enable Zone Receive Action Specific features
.RE
.PP
\-o <FMT>, \-\-output\-format=<FMT>
.RS 4
Output format: normal|json|binary
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Hex dump of a report all zones
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme zns zone\-mgmt\-recv /dev/nvme0 \-n 1 \-s 0 \-z 0 \-a 0 \-l 4k
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Binary dump of a report all zones
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme zns zone\-mgmt\-recv /dev/nvme0 \-n 1 \-s 0 \-z 0 \-a 0 \-o \-l 4k binary > report\&.out
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of nvme\-cli
  070701015D6E3C000081A4000003E80000006400000001642C0FB600004F13000000000000004A00000000000000000000003400000000nvme-cli/Documentation/nvme-zns-zone-mgmt-recv.html   <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-zns-zone-mgmt-recv(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-zns-zone-mgmt-recv(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-zns-zone-mgmt-recv -
   Zone Management Receive command
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme zns zone-mgmt-recv</em> &lt;device&gt; [--namespace-id=&lt;NUM&gt; | -n &lt;NUM&gt;]
                                   [--start-lba=&lt;LBA&gt; | -s &lt;LBA&gt;]
                                   [--data-len=&lt;IONUM&gt;, -l &lt;IONUM&gt;]
                                   [--zra=&lt;NUM&gt;, -z &lt;NUM&gt;]
                                   [--zrasf=&lt;NUM&gt;, -a &lt;NUM&gt;]
                                   [--zra-spec-feat, -f]
                                   [--output-format=&lt;FMT&gt;, -o &lt;FMT&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, issues the Zone Management Receive command with the
requested receive action and additional action specific parameters. This is the
generic interface provided for forward compatibility as new actions are created
that this program isn&#8217;t aware of at the time of its development. As such, this
is a generic command that does not do any additional decoding for specific
types of data received. This will only report the data as a hex dump, or
binary.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-n &lt;NUM&gt;
</dt>
<dt class="hdlist1">
--namespace-id=&lt;NUM&gt;
</dt>
<dd>
<p>
        Use the provided namespace id for the command. If not provided, the
        namespace id of the block device will be used. If the command is issued
        to a non-block device, the parameter is required.
</p>
</dd>
<dt class="hdlist1">
-s &lt;lba&gt;
</dt>
<dt class="hdlist1">
--start-lba=&lt;lba&gt;
</dt>
<dd>
<p>
        The starting LBA of the zone to manage receive.
</p>
</dd>
</dl></div>
<div class="paragraph"><p>--data-len=&lt;NUM&gt;
-l &lt;NUM&gt;
        Received data buffer length</p></div>
<div class="dlist"><dl>
<dt class="hdlist1">
-z &lt;NUM&gt;
</dt>
<dt class="hdlist1">
--zra=&lt;NUM&gt;
</dt>
<dd>
<p>
        Zone Receive Action
</p>
</dd>
</dl></div>
<div class="paragraph"><p>-a &lt;NUM&gt;
--zrasf=&lt;NUM&gt;
        Zone Receive Action Specific field</p></div>
<div class="dlist"><dl>
<dt class="hdlist1">
-f
</dt>
<dt class="hdlist1">
--zra-spec-feat
</dt>
<dd>
<p>
        Enable Zone Receive Action Specific features
</p>
</dd>
<dt class="hdlist1">
-o &lt;FMT&gt;
</dt>
<dt class="hdlist1">
--output-format=&lt;FMT&gt;
</dt>
<dd>
<p>
        Output format: normal|json|binary
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Hex dump of a report all zones
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme zns zone-mgmt-recv /dev/nvme0 -n 1 -s 0 -z 0 -a 0 -l 4k</code></pre>
</div></div>
</li>
<li>
<p>
Binary dump of a report all zones
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme zns zone-mgmt-recv /dev/nvme0 -n 1 -s 0 -z 0 -a 0 -o -l 4k binary &gt; report.out</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of nvme-cli</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
 070701015D6E3D000081A4000003E80000006400000001642C0FB600000EB0000000000000004A00000000000000000000003100000000nvme-cli/Documentation/nvme-zns-zone-mgmt-send.1  '\" t
.\"     Title: nvme-zns-zone-mgmt-send
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME\-ZNS\-ZONE\-MGM" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme-zns-zone-mgmt-send \- Zone Management Send command
.SH "SYNOPSIS"
.sp
.nf
\fInvme zns zone\-mgmt\-send\fR <device> [\-\-namespace\-id=<NUM> | \-n <NUM>]
                                   [\-\-start\-lba=<IONUM>, \-s <IONUM>]
                                   [\-\-zsaso, \-o]
                                   [\-\-select\-all, \-a]
                                   [\-\-zsa=<NUM>, \-z <NUM>]
                                   [\-\-data\-len=<IONUM>, \-l <IONUM>]
                                   [\-\-data=<FILE>, \-d <FILE>]
                                   [\-\-timeout=<timeout> | \-t <timeout>]
.fi
.SH "DESCRIPTION"
.sp
For the NVMe device given, issues the Zone Management Send command with the requested send action\&. If the send requires additional data, you may specify the data length\&. If data is required, the input will default to stdin\&. Alternatively, the data may come from a file that can be specified\&.
.SH "OPTIONS"
.PP
\-n <NUM>, \-\-namespace\-id=<NUM>
.RS 4
Use the provided namespace id for the command\&. If not provided, the namespace id of the block device will be used\&. If the command is issued to a non\-block device, the parameter is required\&.
.RE
.PP
\-s <lba>, \-\-start\-lba=<lba>
.RS 4
The starting LBA of the zone to manage send\&.
.RE
.PP
\-l <NUM>, \-\-data\-len=<NUM>
.RS 4
Send data buffer length
.RE
.PP
\-o, \-\-zsaso
.RS 4
Zone Send Action Specific Option
.RE
.PP
\-\-select\-all, \-a
.RS 4
Send command to all zones
.RE
.PP
\-z <NUM>, \-\-zsa=<NUM>
.RS 4
Zone send action\&.
.RE
.PP
\-l <IONUM>, \-\-data\-len=<IONUM>
.RS 4
Buffer length if data required
.RE
.PP
\-d <FILE, \-\-data=<FILE>
.RS 4
Optional file for data (default stdin)
.RE
.PP
\-t <timeout>, \-\-timeout=<timeout>
.RS 4
Override default timeout value\&. In milliseconds\&.
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Send a zone management command with action set to 1 (close zone) to namespace 1\(cqs first zone:
.sp
.if n \{\
.RS 4
.\}
.nf
# nvme zns zone\-mgmt\-send /dev/nvme0 \-n 1 \-s 0 \-z 1
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Write "hello world" into the zone descriptor for namespace 1\(cqs first zone (requires device supports a large enough zone extended data)
.sp
.if n \{\
.RS 4
.\}
.nf
# echo "hello world" | nvme zns zone\-mgmt\-send /dev/nvme0 \-n 1 \-s 0 \-z 0x10
.fi
.if n \{\
.RE
.\}
.RE
.SH "NVME"
.sp
Part of nvme\-cli
070701015D6E3E000081A4000003E80000006400000001642C0FB600005057000000000000004A00000000000000000000003400000000nvme-cli/Documentation/nvme-zns-zone-mgmt-send.html   <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme-zns-zone-mgmt-send(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme-zns-zone-mgmt-send(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme-zns-zone-mgmt-send -
   Zone Management Send command
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>nvme zns zone-mgmt-send</em> &lt;device&gt; [--namespace-id=&lt;NUM&gt; | -n &lt;NUM&gt;]
                                   [--start-lba=&lt;IONUM&gt;, -s &lt;IONUM&gt;]
                                   [--zsaso, -o]
                                   [--select-all, -a]
                                   [--zsa=&lt;NUM&gt;, -z &lt;NUM&gt;]
                                   [--data-len=&lt;IONUM&gt;, -l &lt;IONUM&gt;]
                                   [--data=&lt;FILE&gt;, -d &lt;FILE&gt;]
                                   [--timeout=&lt;timeout&gt; | -t &lt;timeout&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the NVMe device given, issues the Zone Management Send command with the
requested send action. If the send requires additional data, you may specify
the data length. If data is required, the input will default to stdin.
Alternatively, the data may come from a file that can be specified.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-n &lt;NUM&gt;
</dt>
<dt class="hdlist1">
--namespace-id=&lt;NUM&gt;
</dt>
<dd>
<p>
        Use the provided namespace id for the command. If not provided, the
        namespace id of the block device will be used. If the command is issued
        to a non-block device, the parameter is required.
</p>
</dd>
<dt class="hdlist1">
-s &lt;lba&gt;
</dt>
<dt class="hdlist1">
--start-lba=&lt;lba&gt;
</dt>
<dd>
<p>
        The starting LBA of the zone to manage send.
</p>
</dd>
<dt class="hdlist1">
-l &lt;NUM&gt;
</dt>
<dt class="hdlist1">
--data-len=&lt;NUM&gt;
</dt>
<dd>
<p>
        Send data buffer length
</p>
</dd>
<dt class="hdlist1">
-o
</dt>
<dt class="hdlist1">
--zsaso
</dt>
<dd>
<p>
        Zone Send Action Specific Option
</p>
</dd>
<dt class="hdlist1">
--select-all
</dt>
<dt class="hdlist1">
-a
</dt>
<dd>
<p>
        Send command to all zones
</p>
</dd>
<dt class="hdlist1">
-z &lt;NUM&gt;
</dt>
<dt class="hdlist1">
--zsa=&lt;NUM&gt;
</dt>
<dd>
<p>
        Zone send action.
</p>
</dd>
<dt class="hdlist1">
-l &lt;IONUM&gt;
</dt>
<dt class="hdlist1">
--data-len=&lt;IONUM&gt;
</dt>
<dd>
<p>
        Buffer length if data required
</p>
</dd>
<dt class="hdlist1">
-d &lt;FILE
</dt>
<dt class="hdlist1">
--data=&lt;FILE&gt;
</dt>
<dd>
<p>
        Optional file for data (default stdin)
</p>
</dd>
<dt class="hdlist1">
-t &lt;timeout&gt;
</dt>
<dt class="hdlist1">
--timeout=&lt;timeout&gt;
</dt>
<dd>
<p>
        Override default timeout value. In milliseconds.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
Send a zone management command with action set to 1 (close zone) to namespace
  1&#8217;s first zone:
</p>
<div class="listingblock">
<div class="content">
<pre><code># nvme zns zone-mgmt-send /dev/nvme0 -n 1 -s 0 -z 1</code></pre>
</div></div>
</li>
<li>
<p>
Write "hello world" into the zone descriptor for namespace 1&#8217;s first zone
  (requires device supports a large enough zone extended data)
</p>
<div class="listingblock">
<div class="content">
<pre><code># echo "hello world" | nvme zns zone-mgmt-send /dev/nvme0 -n 1 -s 0 -z 0x10</code></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of nvme-cli</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
 070701015D6E3F000081A4000003E80000006400000001642C0FB600003F15000000000000004A00000000000000000000001E00000000nvme-cli/Documentation/nvme.1 '\" t
.\"     Title: nvme
.\"    Author: [see the "Authors" section]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 03/31/2023
.\"    Manual: NVMe Manual
.\"    Source: NVMe
.\"  Language: English
.\"
.TH "NVME" "1" "03/31/2023" "NVMe" "NVMe Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nvme \- the NVMe storage command line interface utility (nvme\-cli)
.SH "SYNOPSIS"
.sp
built\-in plugin:
.sp
.nf
\fInvme\fR <command> <device> [<args>]
.fi
.sp
extension plugins:
.sp
.nf
\fInvme\fR <plugin> <command> <device> [<args>]
.fi
.SH "DESCRIPTION"
.sp
NVM\-Express is a fast, scalable host controller interface designed to address the needs for not only PCI Express based solid state drives, but also NVMe\-oF(over fabrics)\&.
.sp
This \fInvme\fR program is a user space utility to provide standards compliant tooling for NVM\-Express drives\&. It was made specifically for Linux as it relies on the IOCTLs defined by the mainline kernel driver\&.
.SH "NVME COMMANDS"
.sp
The utility has sub\-commands for all admin and io commands defined in the specification and for displaying controller registers\&. There is also an option to submit completely arbitrary commands\&. For a list of commands available, run "nvme help"\&.
.SH "NVME CLI SUB\-COMMANDS"
.SS "Main commands"
.PP
\fBnvme-admin-passthru\fR(1)
.RS 4
Admin Passthrough Command
.RE
.PP
\fBnvme-compare\fR(1)
.RS 4
IO Compare
.RE
.PP
\fBnvme-error-log\fR(1)
.RS 4
Retrieve error logs
.RE
.PP
\fBnvme-flush\fR(1)
.RS 4
Submit flush
.RE
.PP
\fBnvme-dsm\fR(1)
.RS 4
Submit Data Set Management
.RE
.PP
\fBnvme-format\fR(1)
.RS 4
Format namespace(s)
.RE
.PP
\fBnvme-fw-activate\fR(1)
.RS 4
F/W Activate (in old version < 1\&.2)
.RE
.PP
\fBnvme-fw-commit\fR(1)
.RS 4
F/W Commit (in > 1\&.2)
.RE
.PP
\fBnvme-fw-download\fR(1)
.RS 4
F/W Download
.RE
.PP
\fBnvme-fw-log\fR(1)
.RS 4
Retrieve f/w log
.RE
.PP
\fBnvme-get-feature\fR(1)
.RS 4
Get Features
.RE
.PP
\fBnvme-get-log\fR(1)
.RS 4
Generic Get Log
.RE
.PP
\fBnvme-telemetry-log\fR(1)
.RS 4
Telemetry Host\-Initiated Log
.RE
.PP
\fBnvme-changed-ns-list-log\fR(1)
.RS 4
Retrieve Changed Namespace List Log
.RE
.PP
\fBnvme-smart-log\fR(1)
.RS 4
Retrieve Smart Log
.RE
.PP
\fBnvme-ana-log\fR(1)
.RS 4
Retrieve ANA(Asymmetric Namespace Access) Log
.RE
.PP
\fBnvme-endurance-log\fR(1)
.RS 4
Retrieve endurance Log
.RE
.PP
\fBnvme-effects-log\fR(1)
.RS 4
Retrieve effects Log
.RE
.PP
\fBnvme-self-test-log\fR(1)
.RS 4
Retrieve Device Self\-test Log
.RE
.PP
\fBnvme-get-ns-id\fR(1)
.RS 4
Retrieve namespace identifier
.RE
.PP
\fBnvme-help\fR(1)
.RS 4
NVMe CLI Help
.RE
.PP
\fBnvme-id-ctrl\fR(1)
.RS 4
Identify Controller
.RE
.PP
\fBnvme-id-ns\fR(1)
.RS 4
Identify Namespace
.RE
.PP
\fBnvme-id-nvmset\fR(1)
.RS 4
Identify NVM Set List
.RE
.PP
\fBnvme-id-iocs\fR(1)
.RS 4
Identify I/O Command Set
.RE
.PP
\fBnvme-create-ns\fR(1)
.RS 4
Create a new namespace
.RE
.PP
\fBnvme-delete-ns\fR(1)
.RS 4
Delete existing namespace
.RE
.PP
\fBnvme-attach-ns\fR(1)
.RS 4
Attach namespace
.RE
.PP
\fBnvme-detach-ns\fR(1)
.RS 4
Detach namespace
.RE
.PP
\fBnvme-io-passthru\fR(1)
.RS 4
IO Passthrough Command
.RE
.PP
\fBnvme-list-ns\fR(1)
.RS 4
List all nvme namespaces
.RE
.PP
\fBnvme-ns-descs\fR(1)
.RS 4
Identify Namespace Identification Descriptor
.RE
.PP
\fBnvme-list\fR(1)
.RS 4
List all nvme controllers
.RE
.PP
\fBnvme-list-ctrl\fR(1)
.RS 4
List controller in NVMe subsystem
.RE
.PP
\fBnvme-list-subsys\fR(1)
.RS 4
List NVMe subsystems
.RE
.PP
\fBnvme-reset\fR(1)
.RS 4
Reset a NVMe controller
.RE
.PP
\fBnvme-device-self-test\fR(1)
.RS 4
Issue Device Self\-test Command
.RE
.PP
\fBnvme-read\fR(1)
.RS 4
Issue IO Read Command
.RE
.PP
\fBnvme-write\fR(1)
.RS 4
Issue IO Write Command
.RE
.PP
\fBnvme-write-zeroes\fR(1)
.RS 4
Issue IO Write Zeroes Command
.RE
.PP
\fBnvme-write-uncor\fR(1)
.RS 4
Issue IO Write Uncorrectable Command
.RE
.PP
\fBnvme-resv-acquire\fR(1)
.RS 4
Acquire Namespace Reservation
.RE
.PP
\fBnvme-resv-register\fR(1)
.RS 4
Register Namespace Reservation
.RE
.PP
\fBnvme-resv-release\fR(1)
.RS 4
Release Namespace Reservation
.RE
.PP
\fBnvme-resv-report\fR(1)
.RS 4
Report Reservation Capabilities
.RE
.PP
\fBnvme-security-recv\fR(1)
.RS 4
Security Receive
.RE
.PP
\fBnvme-security-send\fR(1)
.RS 4
Security Send
.RE
.PP
\fBnvme-dsm\fR(1)
.RS 4
Issue Data Set Management Command
.RE
.PP
\fBnvme-copy\fR(1)
.RS 4
Issue Simple Copy Command
.RE
.PP
\fBnvme-set-feature\fR(1)
.RS 4
Set Feature
.RE
.PP
\fBnvme-show-regs\fR(1)
.RS 4
Show NVMe Controller Registers
.RE
.PP
\fBnvme-discover\fR(1)
.RS 4
Send Get Log Page request to Discovery Controller
.RE
.PP
\fBnvme-connect-all\fR(1)
.RS 4
Discover and connect to all NVMe\-over\-Fabrics subsystems
.RE
.PP
\fBnvme-connect\fR(1)
.RS 4
Connect to an NVMe\-over\-Fabrics subsystem
.RE
.PP
\fBnvme-dim\fR(1)
.RS 4
Send Discovery Information Management command to a Discovery Controller
.RE
.PP
\fBnvme-disconnect\fR(1)
.RS 4
Disconnect from an NVMe\-over\-Fabrics subsystem
.RE
.PP
\fBnvme-disconnect-all\fR(1)
.RS 4
Disconnect from all NVMe\-over\-Fabrics subsystems
.RE
.PP
\fBnvme-get-property\fR(1)
.RS 4
Reads and shows NVMe\-over\-Fabrics controller property
.RE
.PP
\fBnvme-media-unit-stat-log\fR(1)
.RS 4
Retrieve and show the configuration and wear of media units
.RE
.PP
\fBnvme-supported-cap-config-log\fR(1)
.RS 4
Retrieve and show the list of Supported Capacity Configuration Descriptors
.RE
.PP
\fBnvme-boot-part-log\fR(1)
.RS 4
Retrieve Boot Partition Log
.RE
.PP
\fBnvme-capacity-mgmt\fR(1)
.RS 4
Capacity Management Command
.RE
.PP
\fBnvme-check-dhchap-key\fR(1)
.RS 4
Generate NVMeoF DH\-HMAC\-CHAP host key
.RE
.PP
\fBnvme-check-tls-key\fR(1)
.RS 4
Validate NVMeoF TLS PSK
.RE
.PP
\fBnvme-cmdset-ind-id-ns\fR(1)
.RS 4
I/O Command Set Independent Identify Namespace
.RE
.PP
\fBnvme-endurance-event-agg-log\fR(1)
.RS 4
Retrieve Endurance Group Event Aggregate Log
.RE
.PP
\fBnvme-fid-support-effects-log\fR(1)
.RS 4
Retrieve FID Support and Effects log
.RE
.PP
\fBnvme-gen-dhchap-key\fR(1)
.RS 4
Generate NVMeoF DH\-HMAC\-CHAP host key
.RE
.PP
\fBnvme-gen-hostnqn\fR(1)
.RS 4
Generate NVMeoF host NQN
.RE
.PP
\fBnvme-gen-tls-key\fR(1)
.RS 4
Generate NVMeoF TLS PSK
.RE
.PP
\fBnvme-get-lba-status\fR(1)
.RS 4
Get LBA Status command
.RE
.PP
\fBnvme-id-domain\fR(1)
.RS 4
NVMe Identify Domain List
.RE
.PP
\fBnvme-id-ns-lba-format\fR(1)
.RS 4
NVMe Identify Namespace for the specified LBA Format index
.RE
.PP
\fBnvme-lba-status-log\fR(1)
.RS 4
Retrieve LBA Status Information Log
.RE
.PP
\fBnvme-list-endgrp\fR(1)
.RS 4
NVMe Identify Endurance Group List
.RE
.PP
\fBnvme-ns-rescan\fR(1)
.RS 4
Rescans the NVME namespaces
.RE
.PP
\fBnvme-nvm-id-ctrl\fR(1)
.RS 4
NVMe Identify Controller NVM Command Set
.RE
.PP
\fBnvme-nvm-id-ns\fR(1)
.RS 4
NVMe Identify Namespace NVM Command Set
.RE
.PP
\fBnvme-nvm-id-ns-lba-format\fR(1)
.RS 4
NVMe Identify Namespace NVM Command Set for the specified LBA Format index
.RE
.PP
\fBnvme-persistent-event-log\fR(1)
.RS 4
Retrieve Persistent Event Log
.RE
.PP
\fBnvme-predictable-lat-log\fR(1)
.RS 4
Retrieve Predictable Latency per Nvmset Log
.RE
.PP
\fBnvme-pred-lat-event-agg-log\fR(1)
.RS 4
Retrieve Predictable Latency Event Aggregate Log
.RE
.PP
\fBnvme-primary-ctrl-caps\fR(1)
.RS 4
NVMe Identify Primary Controller Capabilities
.RE
.PP
\fBnvme-reset\fR(1)
.RS 4
Resets the controller
.RE
.PP
\fBnvme-rpmb\fR(1)
.RS 4
Replay Protection Memory Block commands
.RE
.PP
\fBnvme-sanitize-log\fR(1)
.RS 4
Retrieve sanitize log
.RE
.PP
\fBnvme-set-property\fR(1)
.RS 4
Set a property and show the resulting value
.RE
.PP
\fBnvme-show-hostnqn\fR(1)
.RS 4
Show NVMeoF host NQN
.RE
.PP
\fBnvme-subsystem-reset\fR(1)
.RS 4
Resets the subsystem
.RE
.PP
\fBnvme-supported-log-pages\fR(1)
.RS 4
Retrieve the Supported Log pages details
.RE
.PP
\fBnvme-verify\fR(1)
.RS 4
verify command
.RE
.PP
\fBnvme-show-topology\fR(1)
.RS 4
Show NVMe topology
.RE
.SS "Plugins/Vendor extension commands"
.PP
\fBnvme-intel-id-ctrl\fR(1)
.RS 4
Intel \- NVMe Identify Controller
.RE
.PP
\fBnvme-intel-internal-log\fR(1)
.RS 4
Retrieve Intel device\(cqs internal log and save to file
.RE
.PP
\fBnvme-intel-lat-stats\fR(1)
.RS 4
Retrieve NVMe Identify Controller, return result and structure
.RE
.PP
\fBnvme-intel-market-name\fR(1)
.RS 4
Intel vendor specific marketing name log page
.RE
.PP
\fBnvme-intel-smart-log-add\fR(1)
.RS 4
NVMe Intel Additional SMART log page
.RE
.PP
\fBnvme-intel-temp-stats\fR(1)
.RS 4
NVMe Intel Additional SMART log page for temp stats
.RE
.PP
\fBnvme-huawei-id-ctrl\fR(1)
.RS 4
NVMe huawei Identify Controller
.RE
.PP
\fBnvme-huawei-list\fR(1)
.RS 4
List all recognized Huawei NVMe devices
.RE
.PP
\fBnvme-dera-stat\fR(1)
.RS 4
NVMe Dera Device status and Additional SMART log page request
.RE
.PP
\fBnvme-micron-clear-pcie-errors\fR(1)
.RS 4
Clears correctable PCIe correctable errors of given Micron device
.RE
.PP
\fBnvme-micron-internal-log\fR(1)
.RS 4
Retrieve Micron device\(cqs internal logs and save to given zip file
.RE
.PP
\fBnvme-micron-nand-stats\fR(1)
.RS 4
Retrieves NAND statistics of given micron device
.RE
.PP
\fBnvme-micron-pcie-stats\fR(1)
.RS 4
Retrieves pcie error statistics for given micron device
.RE
.PP
\fBnvme-micron-selective-download\fR(1)
.RS 4
Performs selective firmware download
.RE
.PP
\fBnvme-micron-smart-add-log\fR(1)
.RS 4
Retrieves NAND statistics
.RE
.PP
\fBnvme-micron-temperature-stats\fR(1)
.RS 4
Retrieves temperature information of given micron device
.RE
.PP
\fBnvme-netapp-ontapdevices\fR(1)
.RS 4
Display information about ONTAP devices
.RE
.PP
\fBnvme-netapp-smdevices\fR(1)
.RS 4
Display information for each NVMe path to an E\-Series volume
.RE
.PP
\fBnvme-toshiba-clear-pcie-correctable-errors\fR(1)
.RS 4
Reset the PCIe correctable errors count to zero
.RE
.PP
\fBnvme-toshiba-vs-internal-log\fR(1)
.RS 4
Retrieve a Toshiba device\(cqs vendor specific internal log
.RE
.PP
\fBnvme-toshiba-vs-smart-add-log\fR(1)
.RS 4
Retrieve a Toshiba device\(cqs vendor specific extended SMART log page
.RE
.PP
\fBnvme-transcend-badblock\fR(1)
.RS 4
Retrieve Transcend NVMe device\(cqs bad blocks
.RE
.PP
\fBnvme-transcend-healthvalue\fR(1)
.RS 4
Use NVMe SMART table to analyze the health value of Transcend device
.RE
.PP
\fBnvme-virtium-show-identify\fR(1)
.RS 4
Show a complete detail of identify device information in json format
.RE
.PP
\fBnvme-virtium-save-smart-to-vtview-log\fR(1)
.RS 4
Periodically save smart attributes into a log file
.RE
.PP
\fBnvme-wdc-cap-diag\fR(1)
.RS 4
Retrieve WDC device\(cqs diagnostic log and save to file
.RE
.PP
\fBnvme-wdc-capabilities\fR(1)
.RS 4
Display WDC plugin command capabilities
.RE
.PP
\fBnvme-wdc-clear-assert-dump\fR(1)
.RS 4
Clears the assert dump (if present)
.RE
.PP
\fBnvme-wdc-clear-fw-activate-history\fR(1)
.RS 4
Clears the firmware activate history table
.RE
.PP
\fBnvme-wdc-clear-pcie-corr\fR(1)
.RS 4
Clears the pcie correctable errors field
.RE
.PP
\fBnvme-wdc-clear-pcie-correctable-errors\fR(1)
.RS 4
Clears the pcie correctable errors returned in the smart\-log\-add command
.RE
.PP
\fBnvme-wdc-cloud-SSD-plugin-version\fR(1)
.RS 4
Display WDC plugin Cloud SSD Plugin Version
.RE
.PP
\fBnvme-wdc-drive-essentials\fR(1)
.RS 4
Retrieve WDC device\(cqs drive essentials bin files
.RE
.PP
\fBnvme-wdc-drive-log\fR(1)
.RS 4
Retrieve WDC device\(cqs drive log and save to file
.RE
.PP
\fBnvme-wdc-drive-resize\fR(1)
.RS 4
Send NVMe WDC Resize Vendor Unique Command
.RE
.PP
\fBnvme-wdc-enc-get-log\fR(1)
.RS 4
Send NVMe WDC enc\-get\-log Vendor Unique Command
.RE
.PP
\fBnvme-wdc-get-crash-dump\fR(1)
.RS 4
Retrieve WDC device\(cqs crash dump
.RE
.PP
\fBnvme-wdc-get-drive-status\fR(1)
.RS 4
Send the NVMe WDC get\-drive\-status command
.RE
.PP
\fBnvme-wdc-get-latency-monitor-log\fR(1)
.RS 4
Display latency monitor log page data in human readable format
.RE
.PP
\fBnvme-wdc-get-pfail-dump\fR(1)
.RS 4
Retrieve WDC device\(cqs pfail crash dump
.RE
.PP
\fBnvme-wdc-id-ctrl\fR(1)
.RS 4
Send NVMe Identify Controller, return result and structure
.RE
.PP
\fBnvme-wdc-log-page-directory\fR(1)
.RS 4
Retrieves the list of Log IDs supported by the drive
.RE
.PP
\fBnvme-wdc-namespace-resize\fR(1)
.RS 4
Resizes the device\(cqs namespace
.RE
.PP
\fBnvme-wdc-purge-monitor\fR(1)
.RS 4
Send NVMe WDC Purge\-Monitor Vendor Unique Command
.RE
.PP
\fBnvme-wdc-purge\fR(1)
.RS 4
Send NVMe WDC Purge Vendor Unique Command
.RE
.PP
\fBnvme-wdc-smart-add-log\fR(1)
.RS 4
Send NVMe WDC smart add log Vendor Unique Command
.RE
.PP
\fBnvme-wdc-vs-drive-info\fR(1)
.RS 4
Send the NVMe WDC vs\-drive\-info command
.RE
.PP
\fBnvme-wdc-vs-error-reason-identifier\fR(1)
.RS 4
Retrieve WDC device\(cqs telemetry log error reason identifier field
.RE
.PP
\fBnvme-wdc-vs-fw-activate-history\fR(1)
.RS 4
Execute NVMe WDC vs\-fw\-activate\-history Vendor Unique Command
.RE
.PP
\fBnvme-wdc-vs-internal-log\fR(1)
.RS 4
Retrieve WDC device\(cqs internal firmware log and save to file
.RE
.PP
\fBnvme-wdc-vs-nand-stats\fR(1)
.RS 4
Send NVMe WDC vs\-nand\-stats Vendor Unique Command
.RE
.PP
\fBnvme-wdc-vs-telemetry-controller-option\fR(1)
.RS 4
Disable/Enable the controller initiated option of the telemetry log page
.RE
.PP
\fBnvme-wdc-vs-temperature-stats\fR(1)
.RS 4
Display temperature\-related statistics
.RE
.PP
\fBnvme-zns-changed-zone-list\fR(1)
.RS 4
Retrieve Changed Zone log for the given device
.RE
.PP
\fBnvme-zns-close-zone\fR(1)
.RS 4
Closes one or all zones
.RE
.PP
\fBnvme-zns-finish-zone\fR(1)
.RS 4
Finishes one or all zones
.RE
.PP
\fBnvme-zns-id-ctrl\fR(1)
.RS 4
Send NVMe Zoned Command Set Identify Controller
.RE
.PP
\fBnvme-zns-id-ns\fR(1)
.RS 4
Send NVMe Zoned Command Set Identify Namespace
.RE
.PP
\fBnvme-zns-offline-zone\fR(1)
.RS 4
Offlines one or all zones
.RE
.PP
\fBnvme-zns-open-zone\fR(1)
.RS 4
Opens one or all zones
.RE
.PP
\fBnvme-zns-report-zones\fR(1)
.RS 4
Retrieve and display the Report Zones data structure
.RE
.PP
\fBnvme-zns-reset-zone\fR(1)
.RS 4
Resets one or all zones
.RE
.PP
\fBnvme-zns-set-zone-desc\fR(1)
.RS 4
Set extended descriptor data for a zone
.RE
.PP
\fBnvme-zns-zone-append\fR(1)
.RS 4
Send an NVMe write command, provide results
.RE
.PP
\fBnvme-zns-zone-mgmt-recv\fR(1)
.RS 4
Zone Management Receive command
.RE
.PP
\fBnvme-zns-zone-mgmt-send\fR(1)
.RS 4
Zone Management Send command
.RE
.PP
\fBnvme-zns-zrwa-flush-zone\fR(1)
.RS 4
Flush LBAs associated with a ZRWA to a zone
.RE
.PP
\fBnvme-inspur-nvme-vendor-log\fR(1)
.RS 4
NVMe Inspur Device Vendor log page request
.RE
.SH "RETURNS"
.sp
All commands will behave the same, they will return 0 on success and 1 on failure\&.
.SH "FURTHER DOCUMENTATION"
.sp
See the freely available references on the \m[blue]\fBOfficial NVM\-Express Site\fR\m[]\&\s-2\u[1]\d\s+2\&.
.SH "AUTHORS"
.sp
This is written and maintained by \m[blue]\fBKeith Busch\fR\m[]\&\s-2\u[2]\d\s+2\&.
.SH "REPORTING BUGS"
.sp
Patches and issues may be submitted to the official repository at \m[blue]\fBhttps://github\&.com/linux\-nvme/nvme\-cli\fR\m[] or the Linux NVMe mailing list \m[blue]\fBlinux\-nvme\fR\m[]\&\s-2\u[3]\d\s+2
.SH "NVME"
.sp
Part of the nvme suite
.SH "NOTES"
.IP " 1." 4
Official NVM-Express Site
.RS 4
\%http://nvmexpress.org
.RE
.IP " 2." 4
Keith Busch
.RS 4
\%mailto:kbusch@kernel.org
.RE
.IP " 3." 4
linux-nvme
.RS 4
\%mailto:linux-nvme@lists.infradead.org
.RE
   070701015D6E40000081A4000003E80000006400000001642C0FB60000B42A000000000000004A00000000000000000000002100000000nvme-cli/Documentation/nvme.html  <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 10.2.0" />
<title>nvme(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nvme(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nvme -
   the NVMe storage command line interface utility (nvme-cli)
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="paragraph"><p>built-in plugin:</p></div>
<div class="verseblock">
<pre class="content"><em>nvme</em> &lt;command&gt; &lt;device&gt; [&lt;args&gt;]</pre>
<div class="attribution">
</div></div>
<div class="paragraph"><p>extension plugins:</p></div>
<div class="verseblock">
<pre class="content"><em>nvme</em> &lt;plugin&gt; &lt;command&gt; &lt;device&gt; [&lt;args&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>NVM-Express is a fast, scalable host controller interface designed to
address the needs for not only PCI Express based solid state drives, but
also NVMe-oF(over fabrics).</p></div>
<div class="paragraph"><p>This <em>nvme</em> program is a user space utility to provide standards compliant
tooling for NVM-Express drives. It was made specifically for Linux as
it relies on the IOCTLs defined by the mainline kernel driver.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme_commands">NVME COMMANDS</h2>
<div class="sectionbody">
<div class="paragraph"><p>The utility has sub-commands for all admin and io commands defined in the
specification and for displaying controller registers. There is also an
option to submit completely arbitrary commands. For a list of commands
available, run "nvme help".</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme_cli_sub_commands">nvme cli sub-commands</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="_main_commands">Main commands</h3>
<div class="dlist"><dl>
<dt class="hdlist1">
<a href="nvme-admin-passthru.html">nvme-admin-passthru(1)</a>
</dt>
<dd>
<p>
        Admin Passthrough Command
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-compare.html">nvme-compare(1)</a>
</dt>
<dd>
<p>
        IO Compare
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-error-log.html">nvme-error-log(1)</a>
</dt>
<dd>
<p>
        Retrieve error logs
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-flush.html">nvme-flush(1)</a>
</dt>
<dd>
<p>
        Submit flush
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-dsm.html">nvme-dsm(1)</a>
</dt>
<dd>
<p>
        Submit Data Set Management
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-format.html">nvme-format(1)</a>
</dt>
<dd>
<p>
        Format namespace(s)
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-fw-activate.html">nvme-fw-activate(1)</a>
</dt>
<dd>
<p>
        F/W Activate (in old version &lt; 1.2)
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-fw-commit.html">nvme-fw-commit(1)</a>
</dt>
<dd>
<p>
        F/W Commit (in &gt; 1.2)
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-fw-download.html">nvme-fw-download(1)</a>
</dt>
<dd>
<p>
        F/W Download
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-fw-log.html">nvme-fw-log(1)</a>
</dt>
<dd>
<p>
        Retrieve f/w log
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-get-feature.html">nvme-get-feature(1)</a>
</dt>
<dd>
<p>
        Get Features
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-get-log.html">nvme-get-log(1)</a>
</dt>
<dd>
<p>
        Generic Get Log
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-telemetry-log.html">nvme-telemetry-log(1)</a>
</dt>
<dd>
<p>
        Telemetry Host-Initiated Log
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-changed-ns-list-log.html">nvme-changed-ns-list-log(1)</a>
</dt>
<dd>
<p>
        Retrieve Changed Namespace List Log
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-smart-log.html">nvme-smart-log(1)</a>
</dt>
<dd>
<p>
        Retrieve Smart Log
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-ana-log.html">nvme-ana-log(1)</a>
</dt>
<dd>
<p>
        Retrieve ANA(Asymmetric Namespace Access) Log
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-endurance-log.html">nvme-endurance-log(1)</a>
</dt>
<dd>
<p>
        Retrieve endurance Log
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-effects-log.html">nvme-effects-log(1)</a>
</dt>
<dd>
<p>
        Retrieve effects Log
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-self-test-log.html">nvme-self-test-log(1)</a>
</dt>
<dd>
<p>
        Retrieve Device Self-test Log
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-get-ns-id.html">nvme-get-ns-id(1)</a>
</dt>
<dd>
<p>
        Retrieve namespace identifier
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-help.html">nvme-help(1)</a>
</dt>
<dd>
<p>
        NVMe CLI Help
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-id-ctrl.html">nvme-id-ctrl(1)</a>
</dt>
<dd>
<p>
        Identify Controller
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-id-ns.html">nvme-id-ns(1)</a>
</dt>
<dd>
<p>
        Identify Namespace
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-id-nvmset.html">nvme-id-nvmset(1)</a>
</dt>
<dd>
<p>
        Identify NVM Set List
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-id-iocs.html">nvme-id-iocs(1)</a>
</dt>
<dd>
<p>
        Identify I/O Command Set
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-create-ns.html">nvme-create-ns(1)</a>
</dt>
<dd>
<p>
        Create a new namespace
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-delete-ns.html">nvme-delete-ns(1)</a>
</dt>
<dd>
<p>
        Delete existing namespace
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-attach-ns.html">nvme-attach-ns(1)</a>
</dt>
<dd>
<p>
        Attach namespace
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-detach-ns.html">nvme-detach-ns(1)</a>
</dt>
<dd>
<p>
        Detach namespace
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-io-passthru.html">nvme-io-passthru(1)</a>
</dt>
<dd>
<p>
        IO Passthrough Command
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-list-ns.html">nvme-list-ns(1)</a>
</dt>
<dd>
<p>
        List all nvme namespaces
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-ns-descs.html">nvme-ns-descs(1)</a>
</dt>
<dd>
<p>
        Identify Namespace Identification Descriptor
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-list.html">nvme-list(1)</a>
</dt>
<dd>
<p>
        List all nvme controllers
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-list-ctrl.html">nvme-list-ctrl(1)</a>
</dt>
<dd>
<p>
        List controller in NVMe subsystem
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-list-subsys.html">nvme-list-subsys(1)</a>
</dt>
<dd>
<p>
        List NVMe subsystems
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-reset.html">nvme-reset(1)</a>
</dt>
<dd>
<p>
        Reset a NVMe controller
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-device-self-test.html">nvme-device-self-test(1)</a>
</dt>
<dd>
<p>
        Issue Device Self-test Command
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-read.html">nvme-read(1)</a>
</dt>
<dd>
<p>
        Issue IO Read Command
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-write.html">nvme-write(1)</a>
</dt>
<dd>
<p>
        Issue IO Write Command
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-write-zeroes.html">nvme-write-zeroes(1)</a>
</dt>
<dd>
<p>
        Issue IO Write Zeroes Command
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-write-uncor.html">nvme-write-uncor(1)</a>
</dt>
<dd>
<p>
        Issue IO Write Uncorrectable Command
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-resv-acquire.html">nvme-resv-acquire(1)</a>
</dt>
<dd>
<p>
        Acquire Namespace Reservation
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-resv-register.html">nvme-resv-register(1)</a>
</dt>
<dd>
<p>
        Register Namespace Reservation
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-resv-release.html">nvme-resv-release(1)</a>
</dt>
<dd>
<p>
        Release Namespace Reservation
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-resv-report.html">nvme-resv-report(1)</a>
</dt>
<dd>
<p>
        Report Reservation Capabilities
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-security-recv.html">nvme-security-recv(1)</a>
</dt>
<dd>
<p>
        Security Receive
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-security-send.html">nvme-security-send(1)</a>
</dt>
<dd>
<p>
        Security Send
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-dsm.html">nvme-dsm(1)</a>
</dt>
<dd>
<p>
        Issue Data Set Management Command
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-copy.html">nvme-copy(1)</a>
</dt>
<dd>
<p>
        Issue Simple Copy Command
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-set-feature.html">nvme-set-feature(1)</a>
</dt>
<dd>
<p>
        Set Feature
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-show-regs.html">nvme-show-regs(1)</a>
</dt>
<dd>
<p>
        Show NVMe Controller Registers
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-discover.html">nvme-discover(1)</a>
</dt>
<dd>
<p>
        Send Get Log Page request to Discovery Controller
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-connect-all.html">nvme-connect-all(1)</a>
</dt>
<dd>
<p>
        Discover and connect to all NVMe-over-Fabrics subsystems
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-connect.html">nvme-connect(1)</a>
</dt>
<dd>
<p>
        Connect to an NVMe-over-Fabrics subsystem
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-dim.html">nvme-dim(1)</a>
</dt>
<dd>
<p>
        Send Discovery Information Management command to a Discovery Controller
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-disconnect.html">nvme-disconnect(1)</a>
</dt>
<dd>
<p>
        Disconnect from an NVMe-over-Fabrics subsystem
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-disconnect-all.html">nvme-disconnect-all(1)</a>
</dt>
<dd>
<p>
        Disconnect from all NVMe-over-Fabrics subsystems
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-get-property.html">nvme-get-property(1)</a>
</dt>
<dd>
<p>
        Reads and shows NVMe-over-Fabrics controller property
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-media-unit-stat-log.html">nvme-media-unit-stat-log(1)</a>
</dt>
<dd>
<p>
        Retrieve and show the configuration and wear of media units
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-supported-cap-config-log.html">nvme-supported-cap-config-log(1)</a>
</dt>
<dd>
<p>
        Retrieve and show the list of Supported Capacity Configuration Descriptors
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-boot-part-log.html">nvme-boot-part-log(1)</a>
</dt>
<dd>
<p>
        Retrieve Boot Partition Log
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-capacity-mgmt.html">nvme-capacity-mgmt(1)</a>
</dt>
<dd>
<p>
        Capacity Management Command
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-check-dhchap-key.html">nvme-check-dhchap-key(1)</a>
</dt>
<dd>
<p>
        Generate NVMeoF DH-HMAC-CHAP host key
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-check-tls-key.html">nvme-check-tls-key(1)</a>
</dt>
<dd>
<p>
        Validate NVMeoF TLS PSK
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-cmdset-ind-id-ns.html">nvme-cmdset-ind-id-ns(1)</a>
</dt>
<dd>
<p>
        I/O Command Set Independent Identify Namespace
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-endurance-event-agg-log.html">nvme-endurance-event-agg-log(1)</a>
</dt>
<dd>
<p>
        Retrieve Endurance Group Event Aggregate Log
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-fid-support-effects-log.html">nvme-fid-support-effects-log(1)</a>
</dt>
<dd>
<p>
        Retrieve FID Support and Effects log
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-gen-dhchap-key.html">nvme-gen-dhchap-key(1)</a>
</dt>
<dd>
<p>
        Generate NVMeoF DH-HMAC-CHAP host key
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-gen-hostnqn.html">nvme-gen-hostnqn(1)</a>
</dt>
<dd>
<p>
        Generate NVMeoF host NQN
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-gen-tls-key.html">nvme-gen-tls-key(1)</a>
</dt>
<dd>
<p>
        Generate NVMeoF TLS PSK
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-get-lba-status.html">nvme-get-lba-status(1)</a>
</dt>
<dd>
<p>
        Get LBA Status command
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-id-domain.html">nvme-id-domain(1)</a>
</dt>
<dd>
<p>
        NVMe Identify Domain List
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-id-ns-lba-format.html">nvme-id-ns-lba-format(1)</a>
</dt>
<dd>
<p>
        NVMe Identify Namespace for the specified LBA Format index
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-lba-status-log.html">nvme-lba-status-log(1)</a>
</dt>
<dd>
<p>
        Retrieve LBA Status Information Log
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-list-endgrp.html">nvme-list-endgrp(1)</a>
</dt>
<dd>
<p>
        NVMe Identify Endurance Group List
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-ns-rescan.html">nvme-ns-rescan(1)</a>
</dt>
<dd>
<p>
        Rescans the NVME namespaces
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-nvm-id-ctrl.html">nvme-nvm-id-ctrl(1)</a>
</dt>
<dd>
<p>
        NVMe Identify Controller NVM Command Set
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-nvm-id-ns.html">nvme-nvm-id-ns(1)</a>
</dt>
<dd>
<p>
        NVMe Identify Namespace NVM Command Set
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-nvm-id-ns-lba-format.html">nvme-nvm-id-ns-lba-format(1)</a>
</dt>
<dd>
<p>
        NVMe Identify Namespace NVM Command Set for the specified LBA Format index
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-persistent-event-log.html">nvme-persistent-event-log(1)</a>
</dt>
<dd>
<p>
        Retrieve Persistent Event Log
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-predictable-lat-log.html">nvme-predictable-lat-log(1)</a>
</dt>
<dd>
<p>
        Retrieve Predictable Latency per Nvmset Log
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-pred-lat-event-agg-log.html">nvme-pred-lat-event-agg-log(1)</a>
</dt>
<dd>
<p>
        Retrieve Predictable Latency Event Aggregate Log
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-primary-ctrl-caps.html">nvme-primary-ctrl-caps(1)</a>
</dt>
<dd>
<p>
        NVMe Identify Primary Controller Capabilities
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-reset.html">nvme-reset(1)</a>
</dt>
<dd>
<p>
        Resets the controller
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-rpmb.html">nvme-rpmb(1)</a>
</dt>
<dd>
<p>
        Replay Protection Memory Block commands
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-sanitize-log.html">nvme-sanitize-log(1)</a>
</dt>
<dd>
<p>
        Retrieve sanitize log
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-set-property.html">nvme-set-property(1)</a>
</dt>
<dd>
<p>
        Set a property and show the resulting value
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-show-hostnqn.html">nvme-show-hostnqn(1)</a>
</dt>
<dd>
<p>
        Show NVMeoF host NQN
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-subsystem-reset.html">nvme-subsystem-reset(1)</a>
</dt>
<dd>
<p>
        Resets the subsystem
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-supported-log-pages.html">nvme-supported-log-pages(1)</a>
</dt>
<dd>
<p>
        Retrieve the Supported Log pages details
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-verify.html">nvme-verify(1)</a>
</dt>
<dd>
<p>
        verify command
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-show-topology.html">nvme-show-topology(1)</a>
</dt>
<dd>
<p>
        Show NVMe topology
</p>
</dd>
</dl></div>
</div>
<div class="sect2">
<h3 id="_plugins_vendor_extension_commands">Plugins/Vendor extension commands</h3>
<div class="dlist"><dl>
<dt class="hdlist1">
<a href="nvme-intel-id-ctrl.html">nvme-intel-id-ctrl(1)</a>
</dt>
<dd>
<p>
        Intel - NVMe Identify Controller
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-intel-internal-log.html">nvme-intel-internal-log(1)</a>
</dt>
<dd>
<p>
        Retrieve Intel device&#8217;s internal log and save to file
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-intel-lat-stats.html">nvme-intel-lat-stats(1)</a>
</dt>
<dd>
<p>
        Retrieve NVMe Identify Controller, return result and structure
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-intel-market-name.html">nvme-intel-market-name(1)</a>
</dt>
<dd>
<p>
        Intel vendor specific marketing name log page
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-intel-smart-log-add.html">nvme-intel-smart-log-add(1)</a>
</dt>
<dd>
<p>
        NVMe Intel Additional SMART log page
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-intel-temp-stats.html">nvme-intel-temp-stats(1)</a>
</dt>
<dd>
<p>
        NVMe Intel Additional SMART log page for temp stats
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-huawei-id-ctrl.html">nvme-huawei-id-ctrl(1)</a>
</dt>
<dd>
<p>
        NVMe huawei Identify Controller
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-huawei-list.html">nvme-huawei-list(1)</a>
</dt>
<dd>
<p>
        List all recognized Huawei NVMe devices
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-dera-stat.html">nvme-dera-stat(1)</a>
</dt>
<dd>
<p>
        NVMe Dera Device status and Additional SMART log page request
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-micron-clear-pcie-errors.html">nvme-micron-clear-pcie-errors(1)</a>
</dt>
<dd>
<p>
        Clears correctable PCIe correctable errors of given Micron device
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-micron-internal-log.html">nvme-micron-internal-log(1)</a>
</dt>
<dd>
<p>
        Retrieve Micron device&#8217;s internal logs and save to given zip file
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-micron-nand-stats.html">nvme-micron-nand-stats(1)</a>
</dt>
<dd>
<p>
        Retrieves NAND statistics of given micron device
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-micron-pcie-stats.html">nvme-micron-pcie-stats(1)</a>
</dt>
<dd>
<p>
        Retrieves pcie error statistics for given micron device
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-micron-selective-download.html">nvme-micron-selective-download(1)</a>
</dt>
<dd>
<p>
        Performs selective firmware download
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-micron-smart-add-log.html">nvme-micron-smart-add-log(1)</a>
</dt>
<dd>
<p>
        Retrieves NAND statistics
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-micron-temperature-stats.html">nvme-micron-temperature-stats(1)</a>
</dt>
<dd>
<p>
        Retrieves temperature information of given micron device
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-netapp-ontapdevices.html">nvme-netapp-ontapdevices(1)</a>
</dt>
<dd>
<p>
        Display information about ONTAP devices
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-netapp-smdevices.html">nvme-netapp-smdevices(1)</a>
</dt>
<dd>
<p>
        Display information for each NVMe path to an E-Series volume
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-toshiba-clear-pcie-correctable-errors.html">nvme-toshiba-clear-pcie-correctable-errors(1)</a>
</dt>
<dd>
<p>
        Reset the PCIe correctable errors count to zero
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-toshiba-vs-internal-log.html">nvme-toshiba-vs-internal-log(1)</a>
</dt>
<dd>
<p>
        Retrieve a Toshiba device&#8217;s vendor specific internal log
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-toshiba-vs-smart-add-log.html">nvme-toshiba-vs-smart-add-log(1)</a>
</dt>
<dd>
<p>
        Retrieve a Toshiba device&#8217;s vendor specific extended SMART log page
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-transcend-badblock.html">nvme-transcend-badblock(1)</a>
</dt>
<dd>
<p>
        Retrieve Transcend NVMe device&#8217;s bad blocks
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-transcend-healthvalue.html">nvme-transcend-healthvalue(1)</a>
</dt>
<dd>
<p>
        Use NVMe SMART table to analyze the health value of Transcend device
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-virtium-show-identify.html">nvme-virtium-show-identify(1)</a>
</dt>
<dd>
<p>
        Show a complete detail of identify device information in json format
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-virtium-save-smart-to-vtview-log.html">nvme-virtium-save-smart-to-vtview-log(1)</a>
</dt>
<dd>
<p>
        Periodically save smart attributes into a log file
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-wdc-cap-diag.html">nvme-wdc-cap-diag(1)</a>
</dt>
<dd>
<p>
        Retrieve WDC device&#8217;s diagnostic log and save to file
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-wdc-capabilities.html">nvme-wdc-capabilities(1)</a>
</dt>
<dd>
<p>
        Display WDC plugin command capabilities
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-wdc-clear-assert-dump.html">nvme-wdc-clear-assert-dump(1)</a>
</dt>
<dd>
<p>
        Clears the assert dump (if present)
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-wdc-clear-fw-activate-history.html">nvme-wdc-clear-fw-activate-history(1)</a>
</dt>
<dd>
<p>
        Clears the firmware activate history table
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-wdc-clear-pcie-corr.html">nvme-wdc-clear-pcie-corr(1)</a>
</dt>
<dd>
<p>
        Clears the pcie correctable errors field
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-wdc-clear-pcie-correctable-errors.html">nvme-wdc-clear-pcie-correctable-errors(1)</a>
</dt>
<dd>
<p>
        Clears the pcie correctable errors returned in the smart-log-add command
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-wdc-cloud-SSD-plugin-version.html">nvme-wdc-cloud-SSD-plugin-version(1)</a>
</dt>
<dd>
<p>
        Display WDC plugin Cloud SSD Plugin Version
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-wdc-drive-essentials.html">nvme-wdc-drive-essentials(1)</a>
</dt>
<dd>
<p>
        Retrieve WDC device&#8217;s drive essentials bin files
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-wdc-drive-log.html">nvme-wdc-drive-log(1)</a>
</dt>
<dd>
<p>
        Retrieve WDC device&#8217;s drive log and save to file
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-wdc-drive-resize.html">nvme-wdc-drive-resize(1)</a>
</dt>
<dd>
<p>
        Send NVMe WDC Resize Vendor Unique Command
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-wdc-enc-get-log.html">nvme-wdc-enc-get-log(1)</a>
</dt>
<dd>
<p>
        Send NVMe WDC enc-get-log Vendor Unique Command
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-wdc-get-crash-dump.html">nvme-wdc-get-crash-dump(1)</a>
</dt>
<dd>
<p>
        Retrieve WDC device&#8217;s crash dump
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-wdc-get-drive-status.html">nvme-wdc-get-drive-status(1)</a>
</dt>
<dd>
<p>
        Send the NVMe WDC get-drive-status command
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-wdc-get-latency-monitor-log.html">nvme-wdc-get-latency-monitor-log(1)</a>
</dt>
<dd>
<p>
        Display latency monitor log page data in human readable format
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-wdc-get-pfail-dump.html">nvme-wdc-get-pfail-dump(1)</a>
</dt>
<dd>
<p>
        Retrieve WDC device&#8217;s pfail crash dump
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-wdc-id-ctrl.html">nvme-wdc-id-ctrl(1)</a>
</dt>
<dd>
<p>
        Send NVMe Identify Controller, return result and structure
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-wdc-log-page-directory.html">nvme-wdc-log-page-directory(1)</a>
</dt>
<dd>
<p>
        Retrieves the list of Log IDs supported by the drive
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-wdc-namespace-resize.html">nvme-wdc-namespace-resize(1)</a>
</dt>
<dd>
<p>
        Resizes the device&#8217;s namespace
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-wdc-purge-monitor.html">nvme-wdc-purge-monitor(1)</a>
</dt>
<dd>
<p>
        Send NVMe WDC Purge-Monitor Vendor Unique Command
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-wdc-purge.html">nvme-wdc-purge(1)</a>
</dt>
<dd>
<p>
        Send NVMe WDC Purge Vendor Unique Command
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-wdc-smart-add-log.html">nvme-wdc-smart-add-log(1)</a>
</dt>
<dd>
<p>
        Send NVMe WDC smart add log Vendor Unique Command
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-wdc-vs-drive-info.html">nvme-wdc-vs-drive-info(1)</a>
</dt>
<dd>
<p>
        Send the NVMe WDC vs-drive-info command
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-wdc-vs-error-reason-identifier.html">nvme-wdc-vs-error-reason-identifier(1)</a>
</dt>
<dd>
<p>
        Retrieve WDC device&#8217;s telemetry log error reason identifier field
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-wdc-vs-fw-activate-history.html">nvme-wdc-vs-fw-activate-history(1)</a>
</dt>
<dd>
<p>
        Execute NVMe WDC vs-fw-activate-history Vendor Unique Command
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-wdc-vs-internal-log.html">nvme-wdc-vs-internal-log(1)</a>
</dt>
<dd>
<p>
        Retrieve WDC device&#8217;s internal firmware log and save to file
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-wdc-vs-nand-stats.html">nvme-wdc-vs-nand-stats(1)</a>
</dt>
<dd>
<p>
        Send NVMe WDC vs-nand-stats Vendor Unique Command
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-wdc-vs-telemetry-controller-option.html">nvme-wdc-vs-telemetry-controller-option(1)</a>
</dt>
<dd>
<p>
        Disable/Enable the controller initiated option of the telemetry log page
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-wdc-vs-temperature-stats.html">nvme-wdc-vs-temperature-stats(1)</a>
</dt>
<dd>
<p>
        Display temperature-related statistics
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-zns-changed-zone-list.html">nvme-zns-changed-zone-list(1)</a>
</dt>
<dd>
<p>
        Retrieve Changed Zone log for the given device
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-zns-close-zone.html">nvme-zns-close-zone(1)</a>
</dt>
<dd>
<p>
        Closes one or all zones
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-zns-finish-zone.html">nvme-zns-finish-zone(1)</a>
</dt>
<dd>
<p>
        Finishes one or all zones
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-zns-id-ctrl.html">nvme-zns-id-ctrl(1)</a>
</dt>
<dd>
<p>
        Send NVMe Zoned Command Set Identify Controller
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-zns-id-ns.html">nvme-zns-id-ns(1)</a>
</dt>
<dd>
<p>
        Send NVMe Zoned Command Set Identify Namespace
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-zns-offline-zone.html">nvme-zns-offline-zone(1)</a>
</dt>
<dd>
<p>
        Offlines one or all zones
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-zns-open-zone.html">nvme-zns-open-zone(1)</a>
</dt>
<dd>
<p>
        Opens one or all zones
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-zns-report-zones.html">nvme-zns-report-zones(1)</a>
</dt>
<dd>
<p>
        Retrieve and display the Report Zones data structure
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-zns-reset-zone.html">nvme-zns-reset-zone(1)</a>
</dt>
<dd>
<p>
        Resets one or all zones
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-zns-set-zone-desc.html">nvme-zns-set-zone-desc(1)</a>
</dt>
<dd>
<p>
        Set extended descriptor data for a zone
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-zns-zone-append.html">nvme-zns-zone-append(1)</a>
</dt>
<dd>
<p>
        Send an NVMe write command, provide results
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-zns-zone-mgmt-recv.html">nvme-zns-zone-mgmt-recv(1)</a>
</dt>
<dd>
<p>
        Zone Management Receive command
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-zns-zone-mgmt-send.html">nvme-zns-zone-mgmt-send(1)</a>
</dt>
<dd>
<p>
        Zone Management Send command
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-zns-zrwa-flush-zone.html">nvme-zns-zrwa-flush-zone(1)</a>
</dt>
<dd>
<p>
        Flush LBAs associated with a ZRWA to a zone
</p>
</dd>
<dt class="hdlist1">
<a href="nvme-inspur-nvme-vendor-log.html">nvme-inspur-nvme-vendor-log(1)</a>
</dt>
<dd>
<p>
        NVMe Inspur Device Vendor log page request
</p>
</dd>
</dl></div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_returns">RETURNS</h2>
<div class="sectionbody">
<div class="paragraph"><p>All commands will behave the same, they will return 0 on success and 1 on
failure.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_further_documentation">FURTHER DOCUMENTATION</h2>
<div class="sectionbody">
<div class="paragraph"><p>See the freely available references on the <a href="http://nvmexpress.org">Official
NVM-Express Site</a>.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_authors">Authors</h2>
<div class="sectionbody">
<div class="paragraph"><p>This is written and maintained by <a href="mailto:kbusch@kernel.org">Keith Busch</a>.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_reporting_bugs">Reporting Bugs</h2>
<div class="sectionbody">
<div class="paragraph"><p>Patches and issues may be submitted to the official repository at
<a href="https://github.com/linux-nvme/nvme-cli">https://github.com/linux-nvme/nvme-cli</a> or the Linux NVMe mailing list
<a href="mailto:linux-nvme@lists.infradead.org">linux-nvme</a></p></div>
</div>
</div>
<div class="sect1">
<h2 id="_nvme">NVME</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the nvme suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2023-03-31 16:17:28 CEST
</div>
</div>
</body>
</html>
  07070101755AE5000081A4000003E800000064000000016442733700001E83000000000000004A00000000000000000000002C00000000nvme-cli/Documentation/nvme-connect-all.txt   nvme-connect-all(1)
===================

NAME
----
nvme-connect-all - Discover and Connect to Fabrics controllers.

SYNOPSIS
--------
[verse]
'nvme connect-all'
		[--transport=<trtype>     | -t <trtype>]
		[--nqn=<subnqn>           | -n <subnqn>]
		[--traddr=<traddr>        | -a <traddr>]
		[--trsvcid=<trsvcid>      | -s <trsvcid>]
		[--host-traddr=<traddr>   | -w <traddr>]
		[--host-iface=<iface>     | -f <iface>]
		[--hostnqn=<hostnqn>      | -q <hostnqn>]
		[--hostid=<hostid>        | -I <hostid>]
		[--raw=<filename>         | -r <filename>]
		[--device=<device>        | -d <device>]
		[--cfg-file=<cfg>         | -C <cfg>]
		[--keep-alive-tmo=<sec>   | -k <sec>]
		[--reconnect-delay=<#>    | -c <#>]
		[--ctrl-loss-tmo=<#>	  | -l <#>]
		[--nr-io-queues=<#>       | -i <#>]
		[--nr-write-queues=<#>    | -W <#>]
		[--nr-poll-queues=<#>     | -P <#>]
		[--queue-size=<#>         | -Q <#>]
		[--keyring=<#>                    ]
		[--tls_key=<#>                    ]
		[--hdr-digest             | -g]
		[--data-digest            | -G]
		[--persistent             | -p]
		[--tls                        ]
		[--quiet                  | -S]
		[--dump-config            | -O]
                [--nbft]
                [--no-nbft]
                [--nbft-path=<STR>]

DESCRIPTION
-----------
Send one or more Discovery requests to a NVMe over Fabrics Discovery
Controller, and create controllers for the returned discovery records.

If no parameters are given, then 'nvme connect-all' will attempt to
find a @SYSCONFDIR@/nvme/discovery.conf file to use to supply a list of
connect-all commands to run. If no @SYSCONFDIR@/nvme/discovery.conf file
exists, the command will quit with an error.

Otherwise a specific Discovery Controller should be specified using the
--transport, --traddr and if necessary the --trsvcid and a Discovery
request will be sent to the specified Discovery Controller.

See the documentation for the nvme-discover(1) command for further
background.

OPTIONS
-------
-t <trtype>::
--transport=<trtype>::
	This field specifies the network fabric being used for
	a NVMe-over-Fabrics network.  Current string values include:
+
[]
|=================
|Value|Definition
|rdma|The network fabric is an rdma network (RoCE, iWARP, Infiniband, basic rdma, etc)
|fc  |*WIP* The network fabric is a Fibre Channel network.
|tcp |The network fabric is a TCP/IP network.
|loop|Connect to a NVMe over Fabrics target on the local host
|=================

-n <subnqn>::
--nqn <subnqn>::
	This field specifies the name for the NVMe subsystem to connect to.

-a <traddr>::
--traddr=<traddr>::
	This field specifies the network address of the Discovery Controller.
	For transports using IP addressing (e.g. rdma) this should be an
	IP-based address (ex. IPv4).

-s <trsvcid>::
--trsvcid=<trsvcid>::
	This field specifies the transport service id.  For transports using IP
	addressing (e.g. rdma) this field is the port number. By default, the IP
	port number for the RDMA transport is 4420.

-w <traddr>::
--host-traddr=<traddr>::
	This field specifies the network address used on the host to connect
	to the Controller. For TCP, this sets the source address on the socket.

-f <iface>::
--host-iface=<iface>::
	This field specifies the network interface used on the host to connect
	to the Controller (e.g. IP eth1, enp2s0, enx78e7d1ea46da). This forces
	the connection to be made on a specific interface instead of letting
	the system decide.

-q <hostnqn>::
--hostnqn=<hostnqn>::
	Overrides the default Host NQN that identifies the NVMe Host.
	If this option is not specified, the default is read from
	@SYSCONFDIR@/nvme/hostnqn first. If that does not exist, the
	autogenerated NQN value from the NVMe Host kernel module is used next.
	The Host NQN uniquely identifies the NVMe Host, and may be used by the
	the Discovery Controller to control what NVMe Target resources are
	allocated to the NVMe Host for a connection.

-I <hostid>::
--hostid=<hostid>::
	UUID(Universally Unique Identifier) to be discovered which should be
	formatted.

-r <filename>::
--raw=<filename>::
	This field will take the output of the 'nvme connect-all' command
	and dump it to a raw binary file. By default 'nvme connect-all' will
	dump the output to stdout.

-d <device>::
--device=<device>::
	This field takes a device as input. It must be a persistent device
	associated with a Discovery Controller previously created by the
	command "connect-all" or "discover". <device> follows the format
	nvme*, eg. nvme0, nvme1.

-C <cfg>::
--config-file=<cfg>::
	Use the specified JSON configuration file instead of the
	default @SYSCONFDIR@/nvme/config.json file or 'none' to not read in
	an existing configuration file. The JSON configuration file
	format is documented in
	https://github.com/linux-nvme/libnvme/doc/config-schema.json

-k <#>::
--keep-alive-tmo=<#>::
	Overrides the default keep alive timeout (in seconds). This
	option will be ignored for discovery, but will be passed on to
	the subsequent connect call.

-c <#>::
--reconnect-delay=<#>::
	Overrides the default delay (in seconds) before reconnect is attempted
	after a connect loss.

-l <#>::
--ctrl-loss-tmo=<#>::
	Overrides the default controller loss timeout period (in seconds).

-i <#>::
--nr-io-queues=<#>::
	Overrides the default number of I/O queues create by the driver.
	This option will be ignored for discovery, but will be passed on
	to the subsequent connect call.

-W <#>::
--nr-write-queues=<#>::
	Adds additional queues that will be used for write I/O.

-P <#>::
--nr-poll-queues=<#>::
	Adds additional queues that will be used for polling latency sensitive I/O.

-Q <#>::
--queue-size=<#>::
	Overrides the default number of elements in the I/O queues created
	by the driver. This option will be ignored for discovery, but will be
	passed on to the subsequent connect call.

--keyring=<#>::
	Keyring for TLS key lookup.

--tls_key=<#>::
	TLS key for the connection (TCP).

-g::
--hdr-digest::
	Generates/verifies header digest (TCP).

-G::
--data-digest::
	Generates/verifies data digest (TCP).

-p::
--persistent::
	Don't remove the discovery controller after retrieving the discovery
	log page.

--tls::
	Enable TLS encryption (TCP).

-S::
--quiet::
	Suppress error messages.

-O::
--dump-config::
	Print out resulting JSON configuration file to stdout.

--nbft::
        Only look at NBFT tables

--no-nbft::
        Do not look at NBFT tables

--nbft-path=<STR>::
        Use a user-defined path to the NBFT tables



EXAMPLES
--------
* Connect to all records returned by the Discover Controller with IP4 address
192.168.1.3 for all resources allocated for NVMe Host name host1-rogue-nqn on
the RDMA network. Port 4420 is used by default:
+
------------
# nvme connect-all --transport=rdma --traddr=192.168.1.3 \
--hostnqn=host1-rogue-nqn
------------
+
* Issue a 'nvme connect-all' command using the default system defined NBFT tables:
+
-----------
# nvme connect-all --nbft
------------
+
* Issue a 'nvme connect-all' command with a user-defined path for the NBFT table:
+
-----------
# nvme connet-all --nbft-path=/sys/firmware/acpi/tables/NBFT1
------------
+
* Issue a 'nvme connect-all' command using a @SYSCONFDIR@/nvme/discovery.conf file:
+
-----------
# Machine default 'nvme discover' commands.  Query the
# Discovery Controller's two ports (some resources may only
# be accessible on a single port).  Note an official
# nqn (Host) name defined in the NVMe specification is being used
# in this example.
-t rdma -a 192.168.69.33 -s 4420 -q nqn.2014-08.com.example:nvme:nvm-subsystem-sn-d78432
-t rdma -a 192.168.1.4   -s 4420 -q nqn.2014-08.com.example:nvme:nvm-subsystem-sn-d78432

At the prompt type "nvme connect-all".

------------

SEE ALSO
--------
nvme-discover(1)
nvme-connect(1)

NVME
----
Part of the nvme-user suite
 07070101755AE6000081A4000003E8000000640000000164427337000023B2000000000000004A00000000000000000000002900000000nvme-cli/Documentation/nvme-discover.txt  nvme-discover(1)
================

NAME
----
nvme-discover - Send Get Log Page request to Discovery Controller.

SYNOPSIS
--------
[verse]
'nvme discover'
		[--transport=<trtype>     | -t <trtype>]
		[--nqn=<subnqn>           | -n <subnqn>]
		[--traddr=<traddr>        | -a <traddr>]
		[--trsvcid=<trsvcid>      | -s <trsvcid>]
		[--host-traddr=<traddr>   | -w <traddr>]
		[--host-iface=<iface>     | -f <iface>]
		[--hostnqn=<hostnqn>      | -q <hostnqn>]
		[--hostid=<hostid>        | -I <hostid>]
		[--raw=<filename>	  | -r <filename>]
		[--device=<device>        | -d <device>]
		[--cfg-file=<cfg>         | -C <cfg> ]
		[--keep-alive-tmo=<sec>   | -k <sec>]
		[--reconnect-delay=<#>	  | -c <#>]
		[--ctrl-loss-tmo=<#>	  | -l <#>]
		[--nr-io-queues=<#>       | -i <#>]
		[--nr-write-queues=<#>    | -W <#>]
		[--nr-poll-queues=<#>     | -P <#>]
		[--queue-size=<#>         | -Q <#>]
		[--keyring=<#>                    ]
		[--tls_key=<#>                    ]
		[--hdr-digest             | -g]
		[--data-digest            | -G]
		[--persistent             | -p]
		[--quiet                  | -S]
		[--tls                        ]
		[--dump-config            | -O]
		[--output-format=<fmt>    | -o <fmt>]
		[--force]
                [--nbft]
                [--no-nbft]
                [--nbft-path=<STR>]

DESCRIPTION
-----------
Send one or more Get Log Page requests to a NVMe-over-Fabrics Discovery
Controller.

If no parameters are given, then 'nvme discover' will attempt to
find a @SYSCONFDIR@/nvme/discovery.conf file to use to supply a list of
Discovery commands to run.  If no @SYSCONFDIR@/nvme/discovery.conf file
exists, the command will quit with an error.

Otherwise, a specific Discovery Controller should be specified using the
--transport, --traddr, and if necessary the --trsvcid flags. A Discovery
request will then be sent to the specified Discovery Controller.

BACKGROUND
----------
The NVMe-over-Fabrics specification defines the concept of a
Discovery Controller that an NVMe Host can query on a fabric
network to discover NVMe subsystems contained in NVMe Targets
which it can connect to on the network.  The Discovery Controller
will return Discovery Log Pages that provide the NVMe Host
with specific information (such as network address and unique
subsystem NQN) the NVMe Host can use to issue an
NVMe connect command to connect itself to a storage resource
contained in that NVMe subsystem on the NVMe Target.

Note that the base NVMe specification defines the NQN (NVMe Qualified
Name) format which an NVMe endpoint (device, subsystem, etc) must
follow to guarantee a unique name under the NVMe standard.
In particular, the Host NQN uniquely identifies the NVMe Host, and
may be used by the Discovery Controller to control what NVMe Target
resources are allocated to the NVMe Host for a connection.

A Discovery Controller has it's own NQN defined in the NVMe-over-Fabrics
specification, *nqn.2014-08.org.nvmexpress.discovery*.  All Discovery
Controllers must use this NQN name. This NQN is used by default by
nvme-cli for the 'discover' command.

OPTIONS
-------
-t <trtype>::
--transport=<trtype>::
	This field specifies the network fabric being used for
	a NVMe-over-Fabrics network.  Current string values include:
+
[]
|=================
|Value|Definition
|rdma|The network fabric is an rdma network (RoCE, iWARP, Infiniband, basic rdma, etc)
|fc  |*WIP* The network fabric is a Fibre Channel network.
|tcp |The network fabric is a TCP/IP network.
|loop|Connect to a NVMe over Fabrics target on the local host
|=================

-n <subnqn>::
--nqn <subnqn>::
	This field specifies the name for the NVMe subsystem to connect to.

-a <traddr>::
--traddr=<traddr>::
	This field specifies the network address of the Discovery Controller.
	For transports using IP addressing (e.g. rdma) this should be an
	IP-based address (ex. IPv4).

-s <trsvcid>::
--trsvcid=<trsvcid>::
	This field specifies the transport service id.  For transports using IP
	addressing (e.g. rdma) this field is the port number. By default, the IP
	port number for the RDMA transport is 4420.

-w <traddr>::
--host-traddr=<traddr>::
	This field specifies the network address used on the host to connect
	to the Controller. For TCP, this sets the source address on the socket.

-f <iface>::
--host-iface=<iface>::
	This field specifies the network interface used on the host to connect
	to the Controller (e.g. IP eth1, enp2s0, enx78e7d1ea46da). This forces
	the connection to be made on a specific interface instead of letting
	the system decide.

-q <hostnqn>::
--hostnqn=<hostnqn>::
	Overrides the default host NQN that identifies the NVMe Host.
	If this option is not specified, the default is read from
	@SYSCONFDIR@/nvme/hostnqn first. If that does not exist, the
	autogenerated NQN value from the NVMe Host kernel module is used next.

-I <hostid>::
--hostid=<hostid>::
	UUID(Universally Unique Identifier) to be discovered which should be
	formatted.

-r <filename>::
--raw=<filename>::
	This field will take the output of the 'nvme discover' command
	and dump it to a raw binary file. By default 'nvme discover' will
	dump the output to stdout.

-d <device>::
--device=<device>::
	This field takes a device as input. It must be a persistent device
	associated with a Discovery Controller previously created by the
	command "connect-all" or "discover". <device> follows the format
	nvme*, eg. nvme0, nvme1.

-C <cfg>::
--config-file=<cfg>::
	Use the specified JSON configuration file instead of the
	default @SYSCONFDIR@/nvme/config.json file or 'none' to not read in
	an existing configuration file. The JSON configuration file
	format is documented in
	https://github.com/linux-nvme/libnvme/doc/config-schema.json

-k <#>::
--keep-alive-tmo=<#>::
	Overrides the default keep alive timeout (in seconds). This
	option will be ignored for discovery, and it is only
	implemented for completeness.

-c <#>::
--reconnect-delay=<#>::
	Overrides the default delay (in seconds) before reconnect is attempted
	after a connect loss.

-l <#>::
--ctrl-loss-tmo=<#>::
	Overrides the default controller loss timeout period (in seconds).

-i <#>::
--nr-io-queues=<#>::
	Overrides the default number of I/O queues create by the driver.
	This option will be ignored for the discovery, and it is only
	implemented for completeness.

-W <#>::
--nr-write-queues=<#>::
	Adds additional queues that will be used for write I/O.

-P <#>::
--nr-poll-queues=<#>::
	Adds additional queues that will be used for polling latency sensitive I/O.

-Q <#>::
--queue-size=<#>::
	Overrides the default number of elements in the I/O queues created
	by the driver which can be found at drivers/nvme/host/fabrics.h.
	This option will be ignored for the discovery, and it is only
	implemented for completeness.

--keyring=<#>::
	Keyring for TLS key lookup.

--tls_key=<#>::
	TLS key for the connection (TCP).

-g::
--hdr-digest::
	Generates/verifies header digest (TCP).

-G::
--data-digest::
	Generates/verifies data digest (TCP).

-p::
--persistent::
	Don't remove the discovery controller after retrieving the discovery
	log page.

--tls::
	Enable TLS encryption (TCP).

-S::
--quiet::
	Suppress already connected errors.

-O::
--dump-config::
	Print out resulting JSON configuration file to stdout.

-o <format>::
--output-format=<format>::
              Set the reporting format to 'normal', 'json', or
              'binary'. Only one output format can be used at a time.

--force::
	Disable the built-in persistent discover connection rules.
	Combined with --persistent flag, always create new
	persistent discovery connection.

--nbft::
        Only look at NBFT tables

--no-nbft::
        Do not look at NBFT tables

--nbft-path=<STR>::
        Use a user-defined path to the NBFT tables


EXAMPLES
--------
* Query the Discover Controller with IP4 address 192.168.1.3 for all
resources allocated for NVMe Host name host1-rogue-nqn on the RDMA network.
Port 4420 is used by default:
+
------------
# nvme discover --transport=rdma --traddr=192.168.1.3 \
--hostnqn=host1-rogue-nqn
------------
+
* Issue a 'nvme discover' command using the default system defined NBFT tables:
+
-----------
# nvme discover --nbft
------------
+
* Issue a 'nvme discover' command with a user-defined path for the NBFT table:
+
-----------
# nvme discover --nbft-path=/sys/firmware/acpi/tables/NBFT1
------------
+
* Issue a 'nvme discover' command using a @SYSCONFDIR@/nvme/discovery.conf file:
+
-----------
# Machine default 'nvme discover' commands.  Query the
# Discovery Controller's two ports (some resources may only
# be accessible on a single port).  Note an official
# nqn (Host) name defined in the NVMe specification is being used
# in this example.
-t rdma -a 192.168.69.33 -s 4420 -q nqn.2014-08.com.example:nvme:nvm-subsystem-sn-d78432
-t rdma -a 192.168.1.4   -s 4420 -q nqn.2014-08.com.example:nvme:nvm-subsystem-sn-d78432

At the prompt type "nvme discover".

------------

SEE ALSO
--------
nvme-connect(1)
nvme-connect-all(1)

AUTHORS
-------
This was written by mailto:james.p.freyensee@intel.com[Jay Freyensee]

NVME
----
Part of the nvme-user suite
  070701015D6BC1000041ED000003E80000006400000001642C0FB500000000000000000000004A00000000000000000000001300000000nvme-cli/ccan/ccan    070701015D6BDE000041ED000003E80000006400000001642C0FB500000000000000000000004A00000000000000000000001700000000nvme-cli/ccan/licenses    070701015D6BE1000081A4000003E80000006400000001642C0FB50000013D000000000000004A00000000000000000000001A00000000nvme-cli/ccan/meson.build # SPDX-License-Identifier: GPL-2.0-or-later

sources += files([
    'ccan/list/list.c',
    'ccan/str/debug.c',
    'ccan/str/str.c',
])

if get_option('buildtype') == 'debug'
    add_project_arguments('-DCCAN_LIST_DEBUG=1',  language : ['c'])
    add_project_arguments('-DCCAN_STR_DEBUG=1',  language : ['c'])
endif
   070701015D6BC2000041ED000003E80000006400000001642C0FB500000000000000000000004A00000000000000000000002000000000nvme-cli/ccan/ccan/build_assert   070701015D6BC6000041ED000003E80000006400000001642C0FB500000000000000000000004A00000000000000000000001E00000000nvme-cli/ccan/ccan/check_type 070701015D6BCA000041ED000003E80000006400000001642C0FB500000000000000000000004A00000000000000000000002000000000nvme-cli/ccan/ccan/container_of   070701015D6BCE000041ED000003E80000006400000001642C0FB500000000000000000000004A00000000000000000000001A00000000nvme-cli/ccan/ccan/endian 070701015D6BD2000041ED000003E80000006400000001642C0FB500000000000000000000004A00000000000000000000001800000000nvme-cli/ccan/ccan/list   070701015D6BD7000041ED000003E80000006400000001642C0FB500000000000000000000004A00000000000000000000001700000000nvme-cli/ccan/ccan/str    070701015D6BC30000A1FF000003E80000006400000001642C0FB500000012000000000000004A00000000000000000000002800000000nvme-cli/ccan/ccan/build_assert/LICENSE   ../../licenses/CC0  070701015D6BC4000081A4000003E80000006400000001642C0FB500000546000000000000004A00000000000000000000002600000000nvme-cli/ccan/ccan/build_assert/_info #include "config.h"
#include <stdio.h>
#include <string.h>

/**
 * build_assert - routines for build-time assertions
 *
 * This code provides routines which will cause compilation to fail should some
 * assertion be untrue: such failures are preferable to run-time assertions,
 * but much more limited since they can only depends on compile-time constants.
 *
 * These assertions are most useful when two parts of the code must be kept in
 * sync: it is better to avoid such cases if possible, but seconds best is to
 * detect invalid changes at build time.
 *
 * For example, a tricky piece of code might rely on a certain element being at
 * the start of the structure.  To ensure that future changes don't break it,
 * you would catch such changes in your code like so:
 *
 * Example:
 *	#include <stddef.h>
 *	#include <ccan/build_assert/build_assert.h>
 *
 *	struct foo {
 *		char string[5];
 *		int x;
 *	};
 *
 *	static char *foo_string(struct foo *foo)
 *	{
 *		// This trick requires that the string be first in the structure
 *		BUILD_ASSERT(offsetof(struct foo, string) == 0);
 *		return (char *)foo;
 *	}
 *
 * License: CC0 (Public domain)
 * Author: Rusty Russell <rusty@rustcorp.com.au>
 */
int main(int argc, char *argv[])
{
	if (argc != 2)
		return 1;

	if (strcmp(argv[1], "depends") == 0)
		/* Nothing. */
		return 0;

	return 1;
}
  070701015D6BC5000081A4000003E80000006400000001642C0FB5000004CC000000000000004A00000000000000000000002F00000000nvme-cli/ccan/ccan/build_assert/build_assert.h    /* CC0 (Public domain) - see LICENSE file for details */
#ifndef CCAN_BUILD_ASSERT_H
#define CCAN_BUILD_ASSERT_H

/**
 * BUILD_ASSERT - assert a build-time dependency.
 * @cond: the compile-time condition which must be true.
 *
 * Your compile will fail if the condition isn't true, or can't be evaluated
 * by the compiler.  This can only be used within a function.
 *
 * Example:
 *	#include <stddef.h>
 *	...
 *	static char *foo_to_char(struct foo *foo)
 *	{
 *		// This code needs string to be at start of foo.
 *		BUILD_ASSERT(offsetof(struct foo, string) == 0);
 *		return (char *)foo;
 *	}
 */
#define BUILD_ASSERT(cond) \
	do { (void) sizeof(char [1 - 2*!(cond)]); } while(0)

/**
 * BUILD_ASSERT_OR_ZERO - assert a build-time dependency, as an expression.
 * @cond: the compile-time condition which must be true.
 *
 * Your compile will fail if the condition isn't true, or can't be evaluated
 * by the compiler.  This can be used in an expression: its value is "0".
 *
 * Example:
 *	#define foo_to_char(foo)					\
 *		 ((char *)(foo)						\
 *		  + BUILD_ASSERT_OR_ZERO(offsetof(struct foo, string) == 0))
 */
#define BUILD_ASSERT_OR_ZERO(cond) \
	(sizeof(char [1 - 2*!(cond)]) - 1)

#endif /* CCAN_BUILD_ASSERT_H */
070701015D6BC70000A1FF000003E80000006400000001642C0FB500000012000000000000004A00000000000000000000002600000000nvme-cli/ccan/ccan/check_type/LICENSE ../../licenses/CC0  070701015D6BC8000081A4000003E80000006400000001642C0FB500000349000000000000004A00000000000000000000002400000000nvme-cli/ccan/ccan/check_type/_info   #include "config.h"
#include <stdio.h>
#include <string.h>

/**
 * check_type - routines for compile time type checking
 *
 * C has fairly weak typing: ints get automatically converted to longs, signed
 * to unsigned, etc.  There are some cases where this is best avoided, and
 * these macros provide methods for evoking warnings (or build errors) when
 * a precise type isn't used.
 *
 * On compilers which don't support typeof() these routines are less effective,
 * since they have to use sizeof() which can only distiguish between types of
 * different size.
 *
 * License: CC0 (Public domain)
 * Author: Rusty Russell <rusty@rustcorp.com.au>
 */
int main(int argc, char *argv[])
{
	if (argc != 2)
		return 1;

	if (strcmp(argv[1], "depends") == 0) {
#if !HAVE_TYPEOF
		printf("ccan/build_assert\n");
#endif
		return 0;
	}

	return 1;
}
   070701015D6BC9000081A4000003E80000006400000001642C0FB500000940000000000000004A00000000000000000000002B00000000nvme-cli/ccan/ccan/check_type/check_type.h    /* CC0 (Public domain) - see LICENSE file for details */
#ifndef CCAN_CHECK_TYPE_H
#define CCAN_CHECK_TYPE_H
#include "config.h"

/**
 * check_type - issue a warning or build failure if type is not correct.
 * @expr: the expression whose type we should check (not evaluated).
 * @type: the exact type we expect the expression to be.
 *
 * This macro is usually used within other macros to try to ensure that a macro
 * argument is of the expected type.  No type promotion of the expression is
 * done: an unsigned int is not the same as an int!
 *
 * check_type() always evaluates to 0.
 *
 * If your compiler does not support typeof, then the best we can do is fail
 * to compile if the sizes of the types are unequal (a less complete check).
 *
 * Example:
 *	// They should always pass a 64-bit value to _set_some_value!
 *	#define set_some_value(expr)			\
 *		_set_some_value((check_type((expr), uint64_t), (expr)))
 */

/**
 * check_types_match - issue a warning or build failure if types are not same.
 * @expr1: the first expression (not evaluated).
 * @expr2: the second expression (not evaluated).
 *
 * This macro is usually used within other macros to try to ensure that
 * arguments are of identical types.  No type promotion of the expressions is
 * done: an unsigned int is not the same as an int!
 *
 * check_types_match() always evaluates to 0.
 *
 * If your compiler does not support typeof, then the best we can do is fail
 * to compile if the sizes of the types are unequal (a less complete check).
 *
 * Example:
 *	// Do subtraction to get to enclosing type, but make sure that
 *	// pointer is of correct type for that member.
 *	#define container_of(mbr_ptr, encl_type, mbr)			\
 *		(check_types_match((mbr_ptr), &((encl_type *)0)->mbr),	\
 *		 ((encl_type *)						\
 *		  ((char *)(mbr_ptr) - offsetof(encl_type, mbr))))
 */
#if HAVE_TYPEOF
#define check_type(expr, type)			\
	((typeof(expr) *)0 != (type *)0)

#define check_types_match(expr1, expr2)		\
	((typeof(expr1) *)0 != (typeof(expr2) *)0)
#else
#include <ccan/build_assert/build_assert.h>
/* Without typeof, we can only test the sizes. */
#define check_type(expr, type)					\
	BUILD_ASSERT_OR_ZERO(sizeof(expr) == sizeof(type))

#define check_types_match(expr1, expr2)				\
	BUILD_ASSERT_OR_ZERO(sizeof(expr1) == sizeof(expr2))
#endif /* HAVE_TYPEOF */

#endif /* CCAN_CHECK_TYPE_H */
070701015D6BCB0000A1FF000003E80000006400000001642C0FB500000012000000000000004A00000000000000000000002800000000nvme-cli/ccan/ccan/container_of/LICENSE   ../../licenses/CC0  070701015D6BCC000081A4000003E80000006400000001642C0FB50000056A000000000000004A00000000000000000000002600000000nvme-cli/ccan/ccan/container_of/_info #include "config.h"
#include <stdio.h>
#include <string.h>

/**
 * container_of - routine for upcasting
 *
 * It is often convenient to create code where the caller registers a pointer
 * to a generic structure and a callback.  The callback might know that the
 * pointer points to within a larger structure, and container_of gives a
 * convenient and fairly type-safe way of returning to the enclosing structure.
 *
 * This idiom is an alternative to providing a void * pointer for every
 * callback.
 *
 * Example:
 *	#include <stdio.h>
 *	#include <ccan/container_of/container_of.h>
 *
 *	struct timer {
 *		void *members;
 *	};
 *
 *	struct info {
 *		int my_stuff;
 *		struct timer timer;
 *	};
 *
 *	static void my_timer_callback(struct timer *timer)
 *	{
 *		struct info *info = container_of(timer, struct info, timer);
 *		printf("my_stuff is %u\n", info->my_stuff);
 *	}
 *
 *	static void register_timer(struct timer *timer)
 *	{
 *		(void)timer;
 *		(void)my_timer_callback;
 *		//...
 *	}
 *
 *	int main(void)
 *	{
 *		struct info info = { .my_stuff = 1 };
 *
 *		register_timer(&info.timer);
 *		// ...
 *		return 0;
 *	}
 *
 * License: CC0 (Public domain)
 * Author: Rusty Russell <rusty@rustcorp.com.au>
 */
int main(int argc, char *argv[])
{
	if (argc != 2)
		return 1;

	if (strcmp(argv[1], "depends") == 0) {
		printf("ccan/check_type\n");
		return 0;
	}

	return 1;
}
  070701015D6BCD000081A4000003E80000006400000001642C0FB5000010B6000000000000004A00000000000000000000002F00000000nvme-cli/ccan/ccan/container_of/container_of.h    /* CC0 (Public domain) - see LICENSE file for details */
#ifndef CCAN_CONTAINER_OF_H
#define CCAN_CONTAINER_OF_H
#include <stddef.h>

#include "config.h"
#include <ccan/check_type/check_type.h>

/**
 * container_of - get pointer to enclosing structure
 * @member_ptr: pointer to the structure member
 * @containing_type: the type this member is within
 * @member: the name of this member within the structure.
 *
 * Given a pointer to a member of a structure, this macro does pointer
 * subtraction to return the pointer to the enclosing type.
 *
 * Example:
 *	struct foo {
 *		int fielda, fieldb;
 *		// ...
 *	};
 *	struct info {
 *		int some_other_field;
 *		struct foo my_foo;
 *	};
 *
 *	static struct info *foo_to_info(struct foo *foo)
 *	{
 *		return container_of(foo, struct info, my_foo);
 *	}
 */
#define container_of(member_ptr, containing_type, member)		\
	 ((containing_type *)						\
	  ((char *)(member_ptr)						\
	   - container_off(containing_type, member))			\
	  + check_types_match(*(member_ptr), ((containing_type *)0)->member))


/**
 * container_of_or_null - get pointer to enclosing structure, or NULL
 * @member_ptr: pointer to the structure member
 * @containing_type: the type this member is within
 * @member: the name of this member within the structure.
 *
 * Given a pointer to a member of a structure, this macro does pointer
 * subtraction to return the pointer to the enclosing type, unless it
 * is given NULL, in which case it also returns NULL.
 *
 * Example:
 *	struct foo {
 *		int fielda, fieldb;
 *		// ...
 *	};
 *	struct info {
 *		int some_other_field;
 *		struct foo my_foo;
 *	};
 *
 *	static struct info *foo_to_info_allowing_null(struct foo *foo)
 *	{
 *		return container_of_or_null(foo, struct info, my_foo);
 *	}
 */
static inline char *container_of_or_null_(void *member_ptr, size_t offset)
{
	return member_ptr ? (char *)member_ptr - offset : NULL;
}
#define container_of_or_null(member_ptr, containing_type, member)	\
	((containing_type *)						\
	 container_of_or_null_(member_ptr,				\
			       container_off(containing_type, member))	\
	 + check_types_match(*(member_ptr), ((containing_type *)0)->member))

/**
 * container_off - get offset to enclosing structure
 * @containing_type: the type this member is within
 * @member: the name of this member within the structure.
 *
 * Given a pointer to a member of a structure, this macro does
 * typechecking and figures out the offset to the enclosing type.
 *
 * Example:
 *	struct foo {
 *		int fielda, fieldb;
 *		// ...
 *	};
 *	struct info {
 *		int some_other_field;
 *		struct foo my_foo;
 *	};
 *
 *	static struct info *foo_to_info(struct foo *foo)
 *	{
 *		size_t off = container_off(struct info, my_foo);
 *		return (void *)((char *)foo - off);
 *	}
 */
#define container_off(containing_type, member)	\
	offsetof(containing_type, member)

/**
 * container_of_var - get pointer to enclosing structure using a variable
 * @member_ptr: pointer to the structure member
 * @container_var: a pointer of same type as this member's container
 * @member: the name of this member within the structure.
 *
 * Given a pointer to a member of a structure, this macro does pointer
 * subtraction to return the pointer to the enclosing type.
 *
 * Example:
 *	static struct info *foo_to_i(struct foo *foo)
 *	{
 *		struct info *i = container_of_var(foo, i, my_foo);
 *		return i;
 *	}
 */
#if HAVE_TYPEOF
#define container_of_var(member_ptr, container_var, member) \
	container_of(member_ptr, typeof(*container_var), member)
#else
#define container_of_var(member_ptr, container_var, member)	\
	((void *)((char *)(member_ptr)	-			\
		  container_off_var(container_var, member)))
#endif

/**
 * container_off_var - get offset of a field in enclosing structure
 * @container_var: a pointer to a container structure
 * @member: the name of a member within the structure.
 *
 * Given (any) pointer to a structure and a its member name, this
 * macro does pointer subtraction to return offset of member in a
 * structure memory layout.
 *
 */
#if HAVE_TYPEOF
#define container_off_var(var, member)		\
	container_off(typeof(*var), member)
#else
#define container_off_var(var, member)			\
	((const char *)&(var)->member - (const char *)(var))
#endif

#endif /* CCAN_CONTAINER_OF_H */
  070701015D6BCF0000A1FF000003E80000006400000001642C0FB500000012000000000000004A00000000000000000000002200000000nvme-cli/ccan/ccan/endian/LICENSE ../../licenses/CC0  070701015D6BD0000081A4000003E80000006400000001642C0FB50000058B000000000000004A00000000000000000000002000000000nvme-cli/ccan/ccan/endian/_info   #include "config.h"
#include <stdio.h>
#include <string.h>

/**
 * endian - endian conversion macros for simple types
 *
 * Portable protocols (such as on-disk formats, or network protocols)
 * are often defined to be a particular endian: little-endian (least
 * significant bytes first) or big-endian (most significant bytes
 * first).
 *
 * Similarly, some CPUs lay out values in memory in little-endian
 * order (most commonly, Intel's 8086 and derivatives), or big-endian
 * order (almost everyone else).
 *
 * This module provides conversion routines, inspired by the linux kernel.
 * It also provides leint32_t, beint32_t etc typedefs, which are annotated for
 * the sparse checker.
 *
 * Example:
 *	#include <stdio.h>
 *	#include <err.h>
 *	#include <ccan/endian/endian.h>
 *
 *	// 
 *	int main(int argc, char *argv[])
 *	{
 *		uint32_t value;
 *
 *		if (argc != 2)
 *			errx(1, "Usage: %s <value>", argv[0]);
 *
 *		value = atoi(argv[1]);
 *		printf("native:        %08x\n", value);
 *		printf("little-endian: %08x\n", cpu_to_le32(value));
 *		printf("big-endian:    %08x\n", cpu_to_be32(value));
 *		printf("byte-reversed: %08x\n", bswap_32(value));
 *		exit(0);
 *	}
 *
 * License: License: CC0 (Public domain)
 * Author: Rusty Russell <rusty@rustcorp.com.au>
 */
int main(int argc, char *argv[])
{
	if (argc != 2)
		return 1;

	if (strcmp(argv[1], "depends") == 0)
		/* Nothing */
		return 0;

	return 1;
}
 070701015D6BD1000081A4000003E80000006400000001642C0FB5000025B8000000000000004A00000000000000000000002300000000nvme-cli/ccan/ccan/endian/endian.h    /* CC0 (Public domain) - see LICENSE file for details */
#ifndef CCAN_ENDIAN_H
#define CCAN_ENDIAN_H
#include <stdint.h>
#include "config.h"

/**
 * BSWAP_16 - reverse bytes in a constant uint16_t value.
 * @val: constant value whose bytes to swap.
 *
 * Designed to be usable in constant-requiring initializers.
 *
 * Example:
 *	struct mystruct {
 *		char buf[BSWAP_16(0x1234)];
 *	};
 */
#define BSWAP_16(val)				\
	((((uint16_t)(val) & 0x00ff) << 8)	\
	 | (((uint16_t)(val) & 0xff00) >> 8))

/**
 * BSWAP_32 - reverse bytes in a constant uint32_t value.
 * @val: constant value whose bytes to swap.
 *
 * Designed to be usable in constant-requiring initializers.
 *
 * Example:
 *	struct mystruct {
 *		char buf[BSWAP_32(0xff000000)];
 *	};
 */
#define BSWAP_32(val)					\
	((((uint32_t)(val) & 0x000000ff) << 24)		\
	 | (((uint32_t)(val) & 0x0000ff00) << 8)		\
	 | (((uint32_t)(val) & 0x00ff0000) >> 8)		\
	 | (((uint32_t)(val) & 0xff000000) >> 24))

/**
 * BSWAP_64 - reverse bytes in a constant uint64_t value.
 * @val: constantvalue whose bytes to swap.
 *
 * Designed to be usable in constant-requiring initializers.
 *
 * Example:
 *	struct mystruct {
 *		char buf[BSWAP_64(0xff00000000000000ULL)];
 *	};
 */
#define BSWAP_64(val)						\
	((((uint64_t)(val) & 0x00000000000000ffULL) << 56)	\
	 | (((uint64_t)(val) & 0x000000000000ff00ULL) << 40)	\
	 | (((uint64_t)(val) & 0x0000000000ff0000ULL) << 24)	\
	 | (((uint64_t)(val) & 0x00000000ff000000ULL) << 8)	\
	 | (((uint64_t)(val) & 0x000000ff00000000ULL) >> 8)	\
	 | (((uint64_t)(val) & 0x0000ff0000000000ULL) >> 24)	\
	 | (((uint64_t)(val) & 0x00ff000000000000ULL) >> 40)	\
	 | (((uint64_t)(val) & 0xff00000000000000ULL) >> 56))

#if HAVE_BYTESWAP_H
#include <byteswap.h>
#else
/**
 * bswap_16 - reverse bytes in a uint16_t value.
 * @val: value whose bytes to swap.
 *
 * Example:
 *	// Output contains "1024 is 4 as two bytes reversed"
 *	printf("1024 is %u as two bytes reversed\n", bswap_16(1024));
 */
static inline uint16_t bswap_16(uint16_t val)
{
	return BSWAP_16(val);
}

/**
 * bswap_32 - reverse bytes in a uint32_t value.
 * @val: value whose bytes to swap.
 *
 * Example:
 *	// Output contains "1024 is 262144 as four bytes reversed"
 *	printf("1024 is %u as four bytes reversed\n", bswap_32(1024));
 */
static inline uint32_t bswap_32(uint32_t val)
{
	return BSWAP_32(val);
}
#endif /* !HAVE_BYTESWAP_H */

#if !HAVE_BSWAP_64
/**
 * bswap_64 - reverse bytes in a uint64_t value.
 * @val: value whose bytes to swap.
 *
 * Example:
 *	// Output contains "1024 is 1125899906842624 as eight bytes reversed"
 *	printf("1024 is %llu as eight bytes reversed\n",
 *		(unsigned long long)bswap_64(1024));
 */
static inline uint64_t bswap_64(uint64_t val)
{
	return BSWAP_64(val);
}
#endif

/* Needed for Glibc like endiness check */
#define	__LITTLE_ENDIAN	1234
#define	__BIG_ENDIAN	4321

/* Sanity check the defines.  We don't handle weird endianness. */
#if !HAVE_LITTLE_ENDIAN && !HAVE_BIG_ENDIAN
#error "Unknown endian"
#elif HAVE_LITTLE_ENDIAN && HAVE_BIG_ENDIAN
#error "Can't compile for both big and little endian."
#elif HAVE_LITTLE_ENDIAN
#ifndef __BYTE_ORDER
#define __BYTE_ORDER	__LITTLE_ENDIAN
#elif __BYTE_ORDER != __LITTLE_ENDIAN
#error "__BYTE_ORDER already defined, but not equal to __LITTLE_ENDIAN"
#endif
#elif HAVE_BIG_ENDIAN
#ifndef __BYTE_ORDER
#define __BYTE_ORDER	__BIG_ENDIAN
#elif __BYTE_ORDER != __BIG_ENDIAN
#error "__BYTE_ORDER already defined, but not equal to __BIG_ENDIAN"
#endif
#endif


#ifdef __CHECKER__
/* sparse needs forcing to remove bitwise attribute from ccan/short_types */
#define ENDIAN_CAST __attribute__((force))
#define ENDIAN_TYPE __attribute__((bitwise))
#else
#define ENDIAN_CAST
#define ENDIAN_TYPE
#endif

typedef uint64_t ENDIAN_TYPE leint64_t;
typedef uint64_t ENDIAN_TYPE beint64_t;
typedef uint32_t ENDIAN_TYPE leint32_t;
typedef uint32_t ENDIAN_TYPE beint32_t;
typedef uint16_t ENDIAN_TYPE leint16_t;
typedef uint16_t ENDIAN_TYPE beint16_t;

#if HAVE_LITTLE_ENDIAN
/**
 * CPU_TO_LE64 - convert a constant uint64_t value to little-endian
 * @native: constant to convert
 */
#define CPU_TO_LE64(native) ((ENDIAN_CAST leint64_t)(native))

/**
 * CPU_TO_LE32 - convert a constant uint32_t value to little-endian
 * @native: constant to convert
 */
#define CPU_TO_LE32(native) ((ENDIAN_CAST leint32_t)(native))

/**
 * CPU_TO_LE16 - convert a constant uint16_t value to little-endian
 * @native: constant to convert
 */
#define CPU_TO_LE16(native) ((ENDIAN_CAST leint16_t)(native))

/**
 * LE64_TO_CPU - convert a little-endian uint64_t constant
 * @le_val: little-endian constant to convert
 */
#define LE64_TO_CPU(le_val) ((ENDIAN_CAST uint64_t)(le_val))

/**
 * LE32_TO_CPU - convert a little-endian uint32_t constant
 * @le_val: little-endian constant to convert
 */
#define LE32_TO_CPU(le_val) ((ENDIAN_CAST uint32_t)(le_val))

/**
 * LE16_TO_CPU - convert a little-endian uint16_t constant
 * @le_val: little-endian constant to convert
 */
#define LE16_TO_CPU(le_val) ((ENDIAN_CAST uint16_t)(le_val))

#else /* ... HAVE_BIG_ENDIAN */
#define CPU_TO_LE64(native) ((ENDIAN_CAST leint64_t)BSWAP_64(native))
#define CPU_TO_LE32(native) ((ENDIAN_CAST leint32_t)BSWAP_32(native))
#define CPU_TO_LE16(native) ((ENDIAN_CAST leint16_t)BSWAP_16(native))
#define LE64_TO_CPU(le_val) BSWAP_64((ENDIAN_CAST uint64_t)le_val)
#define LE32_TO_CPU(le_val) BSWAP_32((ENDIAN_CAST uint32_t)le_val)
#define LE16_TO_CPU(le_val) BSWAP_16((ENDIAN_CAST uint16_t)le_val)
#endif /* HAVE_BIG_ENDIAN */

#if HAVE_BIG_ENDIAN
/**
 * CPU_TO_BE64 - convert a constant uint64_t value to big-endian
 * @native: constant to convert
 */
#define CPU_TO_BE64(native) ((ENDIAN_CAST beint64_t)(native))

/**
 * CPU_TO_BE32 - convert a constant uint32_t value to big-endian
 * @native: constant to convert
 */
#define CPU_TO_BE32(native) ((ENDIAN_CAST beint32_t)(native))

/**
 * CPU_TO_BE16 - convert a constant uint16_t value to big-endian
 * @native: constant to convert
 */
#define CPU_TO_BE16(native) ((ENDIAN_CAST beint16_t)(native))

/**
 * BE64_TO_CPU - convert a big-endian uint64_t constant
 * @le_val: big-endian constant to convert
 */
#define BE64_TO_CPU(le_val) ((ENDIAN_CAST uint64_t)(le_val))

/**
 * BE32_TO_CPU - convert a big-endian uint32_t constant
 * @le_val: big-endian constant to convert
 */
#define BE32_TO_CPU(le_val) ((ENDIAN_CAST uint32_t)(le_val))

/**
 * BE16_TO_CPU - convert a big-endian uint16_t constant
 * @le_val: big-endian constant to convert
 */
#define BE16_TO_CPU(le_val) ((ENDIAN_CAST uint16_t)(le_val))

#else /* ... HAVE_LITTLE_ENDIAN */
#define CPU_TO_BE64(native) ((ENDIAN_CAST beint64_t)BSWAP_64(native))
#define CPU_TO_BE32(native) ((ENDIAN_CAST beint32_t)BSWAP_32(native))
#define CPU_TO_BE16(native) ((ENDIAN_CAST beint16_t)BSWAP_16(native))
#define BE64_TO_CPU(le_val) BSWAP_64((ENDIAN_CAST uint64_t)le_val)
#define BE32_TO_CPU(le_val) BSWAP_32((ENDIAN_CAST uint32_t)le_val)
#define BE16_TO_CPU(le_val) BSWAP_16((ENDIAN_CAST uint16_t)le_val)
#endif /* HAVE_LITTE_ENDIAN */


/**
 * cpu_to_le64 - convert a uint64_t value to little-endian
 * @native: value to convert
 */
static inline leint64_t cpu_to_le64(uint64_t native)
{
	return CPU_TO_LE64(native);
}

/**
 * cpu_to_le32 - convert a uint32_t value to little-endian
 * @native: value to convert
 */
static inline leint32_t cpu_to_le32(uint32_t native)
{
	return CPU_TO_LE32(native);
}

/**
 * cpu_to_le16 - convert a uint16_t value to little-endian
 * @native: value to convert
 */
static inline leint16_t cpu_to_le16(uint16_t native)
{
	return CPU_TO_LE16(native);
}

/**
 * le64_to_cpu - convert a little-endian uint64_t value
 * @le_val: little-endian value to convert
 */
static inline uint64_t le64_to_cpu(leint64_t le_val)
{
	return LE64_TO_CPU(le_val);
}

/**
 * le32_to_cpu - convert a little-endian uint32_t value
 * @le_val: little-endian value to convert
 */
static inline uint32_t le32_to_cpu(leint32_t le_val)
{
	return LE32_TO_CPU(le_val);
}

/**
 * le16_to_cpu - convert a little-endian uint16_t value
 * @le_val: little-endian value to convert
 */
static inline uint16_t le16_to_cpu(leint16_t le_val)
{
	return LE16_TO_CPU(le_val);
}

/**
 * cpu_to_be64 - convert a uint64_t value to big endian.
 * @native: value to convert
 */
static inline beint64_t cpu_to_be64(uint64_t native)
{
	return CPU_TO_BE64(native);
}

/**
 * cpu_to_be32 - convert a uint32_t value to big endian.
 * @native: value to convert
 */
static inline beint32_t cpu_to_be32(uint32_t native)
{
	return CPU_TO_BE32(native);
}

/**
 * cpu_to_be16 - convert a uint16_t value to big endian.
 * @native: value to convert
 */
static inline beint16_t cpu_to_be16(uint16_t native)
{
	return CPU_TO_BE16(native);
}

/**
 * be64_to_cpu - convert a big-endian uint64_t value
 * @be_val: big-endian value to convert
 */
static inline uint64_t be64_to_cpu(beint64_t be_val)
{
	return BE64_TO_CPU(be_val);
}

/**
 * be32_to_cpu - convert a big-endian uint32_t value
 * @be_val: big-endian value to convert
 */
static inline uint32_t be32_to_cpu(beint32_t be_val)
{
	return BE32_TO_CPU(be_val);
}

/**
 * be16_to_cpu - convert a big-endian uint16_t value
 * @be_val: big-endian value to convert
 */
static inline uint16_t be16_to_cpu(beint16_t be_val)
{
	return BE16_TO_CPU(be_val);
}

/* Whichever they include first, they get these definitions. */
#ifdef CCAN_SHORT_TYPES_H
/**
 * be64/be32/be16 - 64/32/16 bit big-endian representation.
 */
typedef beint64_t be64;
typedef beint32_t be32;
typedef beint16_t be16;

/**
 * le64/le32/le16 - 64/32/16 bit little-endian representation.
 */
typedef leint64_t le64;
typedef leint32_t le32;
typedef leint16_t le16;
#endif
#endif /* CCAN_ENDIAN_H */
070701015D6BD30000A1FF000003E80000006400000001642C0FB500000016000000000000004A00000000000000000000002000000000nvme-cli/ccan/ccan/list/LICENSE   ../../licenses/BSD-MIT  070701015D6BD4000081A4000003E80000006400000001642C0FB5000005EF000000000000004A00000000000000000000001E00000000nvme-cli/ccan/ccan/list/_info #include "config.h"
#include <stdio.h>
#include <string.h>

/**
 * list - double linked list routines
 *
 * The list header contains routines for manipulating double linked lists.
 * It defines two types: struct list_head used for anchoring lists, and
 * struct list_node which is usually embedded in the structure which is placed
 * in the list.
 *
 * Example:
 *	#include <err.h>
 *	#include <stdio.h>
 *	#include <stdlib.h>
 *	#include <ccan/list/list.h>
 *
 *	struct parent {
 *		const char *name;
 *		struct list_head children;
 *		unsigned int num_children;
 *	};
 *
 *	struct child {
 *		const char *name;
 *		struct list_node list;
 *	};
 *
 *	int main(int argc, char *argv[])
 *	{
 *		struct parent p;
 *		struct child *c;
 *		int i;
 *
 *		if (argc < 2)
 *			errx(1, "Usage: %s parent children...", argv[0]);
 *
 *		p.name = argv[1];
 *		list_head_init(&p.children);
 *		p.num_children = 0;
 *		for (i = 2; i < argc; i++) {
 *			c = malloc(sizeof(*c));
 *			c->name = argv[i];
 *			list_add(&p.children, &c->list);
 *			p.num_children++;
 *		}
 *
 *		printf("%s has %u children:", p.name, p.num_children);
 *		list_for_each(&p.children, c, list)
 *			printf("%s ", c->name);
 *		printf("\n");
 *		return 0;
 *	}
 *
 * License: BSD-MIT
 * Author: Rusty Russell <rusty@rustcorp.com.au>
 */
int main(int argc, char *argv[])
{
	if (argc != 2)
		return 1;

	if (strcmp(argv[1], "depends") == 0) {
		printf("ccan/str\n");
		printf("ccan/container_of\n");
		printf("ccan/check_type\n");
		return 0;
	}

	return 1;
}
 070701015D6BD5000081A4000003E80000006400000001642C0FB5000003E8000000000000004A00000000000000000000001F00000000nvme-cli/ccan/ccan/list/list.c    /* Licensed under BSD-MIT - see LICENSE file for details */
#include <stdio.h>
#include <stdlib.h>
#include "list.h"

static void *corrupt(const char *abortstr,
		     const struct list_node *head,
		     const struct list_node *node,
		     unsigned int count)
{
	if (abortstr) {
		fprintf(stderr,
			"%s: prev corrupt in node %p (%u) of %p\n",
			abortstr, node, count, head);
		abort();
	}
	return NULL;
}

struct list_node *list_check_node(const struct list_node *node,
				  const char *abortstr)
{
	const struct list_node *p, *n;
	int count = 0;

	for (p = node, n = node->next; n != node; p = n, n = n->next) {
		count++;
		if (n->prev != p)
			return corrupt(abortstr, node, n, count);
	}
	/* Check prev on head node. */
	if (node->prev != p)
		return corrupt(abortstr, node, node, 0);

	return (struct list_node *)node;
}

struct list_head *list_check(const struct list_head *h, const char *abortstr)
{
	if (!list_check_node(&h->n, abortstr))
		return NULL;
	return (struct list_head *)h;
}
070701015D6BD6000081A4000003E80000006400000001642C0FB500005EF3000000000000004A00000000000000000000001F00000000nvme-cli/ccan/ccan/list/list.h    /* Licensed under BSD-MIT - see LICENSE file for details */
#ifndef CCAN_LIST_H
#define CCAN_LIST_H
//#define CCAN_LIST_DEBUG 1
#include <stdbool.h>
#include <assert.h>
#include <ccan/str/str.h>
#include <ccan/container_of/container_of.h>
#include <ccan/check_type/check_type.h>

/**
 * struct list_node - an entry in a doubly-linked list
 * @next: next entry (self if empty)
 * @prev: previous entry (self if empty)
 *
 * This is used as an entry in a linked list.
 * Example:
 *	struct child {
 *		const char *name;
 *		// Linked list of all us children.
 *		struct list_node list;
 *	};
 */
struct list_node
{
	struct list_node *next, *prev;
};

/**
 * struct list_head - the head of a doubly-linked list
 * @h: the list_head (containing next and prev pointers)
 *
 * This is used as the head of a linked list.
 * Example:
 *	struct parent {
 *		const char *name;
 *		struct list_head children;
 *		unsigned int num_children;
 *	};
 */
struct list_head
{
	struct list_node n;
};

/**
 * list_check - check head of a list for consistency
 * @h: the list_head
 * @abortstr: the location to print on aborting, or NULL.
 *
 * Because list_nodes have redundant information, consistency checking between
 * the back and forward links can be done.  This is useful as a debugging check.
 * If @abortstr is non-NULL, that will be printed in a diagnostic if the list
 * is inconsistent, and the function will abort.
 *
 * Returns the list head if the list is consistent, NULL if not (it
 * can never return NULL if @abortstr is set).
 *
 * See also: list_check_node()
 *
 * Example:
 *	static void dump_parent(struct parent *p)
 *	{
 *		struct child *c;
 *
 *		printf("%s (%u children):\n", p->name, p->num_children);
 *		list_check(&p->children, "bad child list");
 *		list_for_each(&p->children, c, list)
 *			printf(" -> %s\n", c->name);
 *	}
 */
struct list_head *list_check(const struct list_head *h, const char *abortstr);

/**
 * list_check_node - check node of a list for consistency
 * @n: the list_node
 * @abortstr: the location to print on aborting, or NULL.
 *
 * Check consistency of the list node is in (it must be in one).
 *
 * See also: list_check()
 *
 * Example:
 *	static void dump_child(const struct child *c)
 *	{
 *		list_check_node(&c->list, "bad child list");
 *		printf("%s\n", c->name);
 *	}
 */
struct list_node *list_check_node(const struct list_node *n,
				  const char *abortstr);

#define LIST_LOC __FILE__  ":" stringify(__LINE__)
#ifdef CCAN_LIST_DEBUG
#define list_debug(h, loc) list_check((h), loc)
#define list_debug_node(n, loc) list_check_node((n), loc)
#else
#define list_debug(h, loc) ((void)loc, h)
#define list_debug_node(n, loc) ((void)loc, n)
#endif

/**
 * LIST_HEAD_INIT - initializer for an empty list_head
 * @name: the name of the list.
 *
 * Explicit initializer for an empty list.
 *
 * See also:
 *	LIST_HEAD, list_head_init()
 *
 * Example:
 *	static struct list_head my_list = LIST_HEAD_INIT(my_list);
 */
#define LIST_HEAD_INIT(name) { { &(name).n, &(name).n } }

/**
 * LIST_HEAD - define and initialize an empty list_head
 * @name: the name of the list.
 *
 * The LIST_HEAD macro defines a list_head and initializes it to an empty
 * list.  It can be prepended by "static" to define a static list_head.
 *
 * See also:
 *	LIST_HEAD_INIT, list_head_init()
 *
 * Example:
 *	static LIST_HEAD(my_global_list);
 */
#define LIST_HEAD(name) \
	struct list_head name = LIST_HEAD_INIT(name)

/**
 * list_head_init - initialize a list_head
 * @h: the list_head to set to the empty list
 *
 * Example:
 *	...
 *	struct parent *parent = malloc(sizeof(*parent));
 *
 *	list_head_init(&parent->children);
 *	parent->num_children = 0;
 */
static inline void list_head_init(struct list_head *h)
{
	h->n.next = h->n.prev = &h->n;
}

/**
 * list_node_init - initialize a list_node
 * @n: the list_node to link to itself.
 *
 * You don't need to use this normally!  But it lets you list_del(@n)
 * safely.
 */
static inline void list_node_init(struct list_node *n)
{
	n->next = n->prev = n;
}

/**
 * list_add_after - add an entry after an existing node in a linked list
 * @h: the list_head to add the node to (for debugging)
 * @p: the existing list_node to add the node after
 * @n: the new list_node to add to the list.
 *
 * The existing list_node must already be a member of the list.
 * The new list_node does not need to be initialized; it will be overwritten.
 *
 * Example:
 *	struct child c1, c2, c3;
 *	LIST_HEAD(h);
 *
 *	list_add_tail(&h, &c1.list);
 *	list_add_tail(&h, &c3.list);
 *	list_add_after(&h, &c1.list, &c2.list);
 */
#define list_add_after(h, p, n) list_add_after_(h, p, n, LIST_LOC)
static inline void list_add_after_(struct list_head *h,
				   struct list_node *p,
				   struct list_node *n,
				   const char *abortstr)
{
	n->next = p->next;
	n->prev = p;
	p->next->prev = n;
	p->next = n;
	(void)list_debug(h, abortstr);
}

/**
 * list_add - add an entry at the start of a linked list.
 * @h: the list_head to add the node to
 * @n: the list_node to add to the list.
 *
 * The list_node does not need to be initialized; it will be overwritten.
 * Example:
 *	struct child *child = malloc(sizeof(*child));
 *
 *	child->name = "marvin";
 *	list_add(&parent->children, &child->list);
 *	parent->num_children++;
 */
#define list_add(h, n) list_add_(h, n, LIST_LOC)
static inline void list_add_(struct list_head *h,
			     struct list_node *n,
			     const char *abortstr)
{
	list_add_after_(h, &h->n, n, abortstr);
}

/**
 * list_add_before - add an entry before an existing node in a linked list
 * @h: the list_head to add the node to (for debugging)
 * @p: the existing list_node to add the node before
 * @n: the new list_node to add to the list.
 *
 * The existing list_node must already be a member of the list.
 * The new list_node does not need to be initialized; it will be overwritten.
 *
 * Example:
 *	list_head_init(&h);
 *	list_add_tail(&h, &c1.list);
 *	list_add_tail(&h, &c3.list);
 *	list_add_before(&h, &c3.list, &c2.list);
 */
#define list_add_before(h, p, n) list_add_before_(h, p, n, LIST_LOC)
static inline void list_add_before_(struct list_head *h,
				    struct list_node *p,
				    struct list_node *n,
				    const char *abortstr)
{
	n->next = p;
	n->prev = p->prev;
	p->prev->next = n;
	p->prev = n;
	(void)list_debug(h, abortstr);
}

/**
 * list_add_tail - add an entry at the end of a linked list.
 * @h: the list_head to add the node to
 * @n: the list_node to add to the list.
 *
 * The list_node does not need to be initialized; it will be overwritten.
 * Example:
 *	list_add_tail(&parent->children, &child->list);
 *	parent->num_children++;
 */
#define list_add_tail(h, n) list_add_tail_(h, n, LIST_LOC)
static inline void list_add_tail_(struct list_head *h,
				  struct list_node *n,
				  const char *abortstr)
{
	list_add_before_(h, &h->n, n, abortstr);
}

/**
 * list_empty - is a list empty?
 * @h: the list_head
 *
 * If the list is empty, returns true.
 *
 * Example:
 *	assert(list_empty(&parent->children) == (parent->num_children == 0));
 */
#define list_empty(h) list_empty_(h, LIST_LOC)
static inline bool list_empty_(const struct list_head *h, const char* abortstr)
{
	(void)list_debug(h, abortstr);
	return h->n.next == &h->n;
}

/**
 * list_empty_nodebug - is a list empty (and don't perform debug checks)?
 * @h: the list_head
 *
 * If the list is empty, returns true.
 * This differs from list_empty() in that if CCAN_LIST_DEBUG is set it
 * will NOT perform debug checks. Only use this function if you REALLY
 * know what you're doing.
 *
 * Example:
 *	assert(list_empty_nodebug(&parent->children) == (parent->num_children == 0));
 */
#ifndef CCAN_LIST_DEBUG
#define list_empty_nodebug(h) list_empty(h)
#else
static inline bool list_empty_nodebug(const struct list_head *h)
{
	return h->n.next == &h->n;
}
#endif

/**
 * list_empty_nocheck - is a list empty?
 * @h: the list_head
 *
 * If the list is empty, returns true. This doesn't perform any
 * debug check for list consistency, so it can be called without
 * locks, racing with the list being modified. This is ok for
 * checks where an incorrect result is not an issue (optimized
 * bail out path for example).
 */
static inline bool list_empty_nocheck(const struct list_head *h)
{
	return h->n.next == &h->n;
}

/**
 * list_del - delete an entry from an (unknown) linked list.
 * @n: the list_node to delete from the list.
 *
 * Note that this leaves @n in an undefined state; it can be added to
 * another list, but not deleted again.
 *
 * See also:
 *	list_del_from(), list_del_init()
 *
 * Example:
 *	list_del(&child->list);
 *	parent->num_children--;
 */
#define list_del(n) list_del_(n, LIST_LOC)
static inline void list_del_(struct list_node *n, const char* abortstr)
{
	(void)list_debug_node(n, abortstr);
	n->next->prev = n->prev;
	n->prev->next = n->next;
#ifdef CCAN_LIST_DEBUG
	/* Catch use-after-del. */
	n->next = n->prev = NULL;
#endif
}

/**
 * list_del_init - delete a node, and reset it so it can be deleted again.
 * @n: the list_node to be deleted.
 *
 * list_del(@n) or list_del_init() again after this will be safe,
 * which can be useful in some cases.
 *
 * See also:
 *	list_del_from(), list_del()
 *
 * Example:
 *	list_del_init(&child->list);
 *	parent->num_children--;
 */
#define list_del_init(n) list_del_init_(n, LIST_LOC)
static inline void list_del_init_(struct list_node *n, const char *abortstr)
{
	list_del_(n, abortstr);
	list_node_init(n);
}

/**
 * list_del_from - delete an entry from a known linked list.
 * @h: the list_head the node is in.
 * @n: the list_node to delete from the list.
 *
 * This explicitly indicates which list a node is expected to be in,
 * which is better documentation and can catch more bugs.
 *
 * See also: list_del()
 *
 * Example:
 *	list_del_from(&parent->children, &child->list);
 *	parent->num_children--;
 */
static inline void list_del_from(struct list_head *h, struct list_node *n)
{
#ifdef CCAN_LIST_DEBUG
	{
		/* Thorough check: make sure it was in list! */
		struct list_node *i;
		for (i = h->n.next; i != n; i = i->next)
			assert(i != &h->n);
	}
#endif /* CCAN_LIST_DEBUG */

	/* Quick test that catches a surprising number of bugs. */
	assert(!list_empty(h));
	list_del(n);
}

/**
 * list_swap - swap out an entry from an (unknown) linked list for a new one.
 * @o: the list_node to replace from the list.
 * @n: the list_node to insert in place of the old one.
 *
 * Note that this leaves @o in an undefined state; it can be added to
 * another list, but not deleted/swapped again.
 *
 * See also:
 *	list_del()
 *
 * Example:
 *	struct child x1, x2;
 *	LIST_HEAD(xh);
 *
 *	list_add(&xh, &x1.list);
 *	list_swap(&x1.list, &x2.list);
 */
#define list_swap(o, n) list_swap_(o, n, LIST_LOC)
static inline void list_swap_(struct list_node *o,
			      struct list_node *n,
			      const char* abortstr)
{
	(void)list_debug_node(o, abortstr);
	*n = *o;
	n->next->prev = n;
	n->prev->next = n;
#ifdef CCAN_LIST_DEBUG
	/* Catch use-after-del. */
	o->next = o->prev = NULL;
#endif
}

/**
 * list_entry - convert a list_node back into the structure containing it.
 * @n: the list_node
 * @type: the type of the entry
 * @member: the list_node member of the type
 *
 * Example:
 *	// First list entry is children.next; convert back to child.
 *	child = list_entry(parent->children.n.next, struct child, list);
 *
 * See Also:
 *	list_top(), list_for_each()
 */
#define list_entry(n, type, member) container_of(n, type, member)

/**
 * list_top - get the first entry in a list
 * @h: the list_head
 * @type: the type of the entry
 * @member: the list_node member of the type
 *
 * If the list is empty, returns NULL.
 *
 * Example:
 *	struct child *first;
 *	first = list_top(&parent->children, struct child, list);
 *	if (!first)
 *		printf("Empty list!\n");
 */
#define list_top(h, type, member)					\
	((type *)list_top_((h), list_off_(type, member)))

static inline const void *list_top_(const struct list_head *h, size_t off)
{
	if (list_empty(h))
		return NULL;
	return (const char *)h->n.next - off;
}

/**
 * list_pop - remove the first entry in a list
 * @h: the list_head
 * @type: the type of the entry
 * @member: the list_node member of the type
 *
 * If the list is empty, returns NULL.
 *
 * Example:
 *	struct child *one;
 *	one = list_pop(&parent->children, struct child, list);
 *	if (!one)
 *		printf("Empty list!\n");
 */
#define list_pop(h, type, member)					\
	((type *)list_pop_((h), list_off_(type, member)))

static inline const void *list_pop_(const struct list_head *h, size_t off)
{
	struct list_node *n;

	if (list_empty(h))
		return NULL;
	n = h->n.next;
	list_del(n);
	return (const char *)n - off;
}

/**
 * list_tail - get the last entry in a list
 * @h: the list_head
 * @type: the type of the entry
 * @member: the list_node member of the type
 *
 * If the list is empty, returns NULL.
 *
 * Example:
 *	struct child *last;
 *	last = list_tail(&parent->children, struct child, list);
 *	if (!last)
 *		printf("Empty list!\n");
 */
#define list_tail(h, type, member) \
	((type *)list_tail_((h), list_off_(type, member)))

static inline const void *list_tail_(const struct list_head *h, size_t off)
{
	if (list_empty(h))
		return NULL;
	return (const char *)h->n.prev - off;
}

/**
 * list_for_each - iterate through a list.
 * @h: the list_head (warning: evaluated multiple times!)
 * @i: the structure containing the list_node
 * @member: the list_node member of the structure
 *
 * This is a convenient wrapper to iterate @i over the entire list.  It's
 * a for loop, so you can break and continue as normal.
 *
 * Example:
 *	list_for_each(&parent->children, child, list)
 *		printf("Name: %s\n", child->name);
 */
#define list_for_each(h, i, member)					\
	list_for_each_off(h, i, list_off_var_(i, member))

/**
 * list_for_each_rev - iterate through a list backwards.
 * @h: the list_head
 * @i: the structure containing the list_node
 * @member: the list_node member of the structure
 *
 * This is a convenient wrapper to iterate @i over the entire list.  It's
 * a for loop, so you can break and continue as normal.
 *
 * Example:
 *	list_for_each_rev(&parent->children, child, list)
 *		printf("Name: %s\n", child->name);
 */
#define list_for_each_rev(h, i, member)					\
	list_for_each_rev_off(h, i, list_off_var_(i, member))

/**
 * list_for_each_rev_safe - iterate through a list backwards,
 * maybe during deletion
 * @h: the list_head
 * @i: the structure containing the list_node
 * @nxt: the structure containing the list_node
 * @member: the list_node member of the structure
 *
 * This is a convenient wrapper to iterate @i over the entire list backwards.
 * It's a for loop, so you can break and continue as normal.  The extra
 * variable * @nxt is used to hold the next element, so you can delete @i
 * from the list.
 *
 * Example:
 *	struct child *next;
 *	list_for_each_rev_safe(&parent->children, child, next, list) {
 *		printf("Name: %s\n", child->name);
 *	}
 */
#define list_for_each_rev_safe(h, i, nxt, member)			\
	list_for_each_rev_safe_off(h, i, nxt, list_off_var_(i, member))

/**
 * list_for_each_safe - iterate through a list, maybe during deletion
 * @h: the list_head
 * @i: the structure containing the list_node
 * @nxt: the structure containing the list_node
 * @member: the list_node member of the structure
 *
 * This is a convenient wrapper to iterate @i over the entire list.  It's
 * a for loop, so you can break and continue as normal.  The extra variable
 * @nxt is used to hold the next element, so you can delete @i from the list.
 *
 * Example:
 *	list_for_each_safe(&parent->children, child, next, list) {
 *		list_del(&child->list);
 *		parent->num_children--;
 *	}
 */
#define list_for_each_safe(h, i, nxt, member)				\
	list_for_each_safe_off(h, i, nxt, list_off_var_(i, member))

/**
 * list_next - get the next entry in a list
 * @h: the list_head
 * @i: a pointer to an entry in the list.
 * @member: the list_node member of the structure
 *
 * If @i was the last entry in the list, returns NULL.
 *
 * Example:
 *	struct child *second;
 *	second = list_next(&parent->children, first, list);
 *	if (!second)
 *		printf("No second child!\n");
 */
#define list_next(h, i, member)						\
	((list_typeof(i))list_entry_or_null(list_debug(h,		\
					    __FILE__ ":" stringify(__LINE__)), \
					    (i)->member.next,		\
					    list_off_var_((i), member)))

/**
 * list_prev - get the previous entry in a list
 * @h: the list_head
 * @i: a pointer to an entry in the list.
 * @member: the list_node member of the structure
 *
 * If @i was the first entry in the list, returns NULL.
 *
 * Example:
 *	first = list_prev(&parent->children, second, list);
 *	if (!first)
 *		printf("Can't go back to first child?!\n");
 */
#define list_prev(h, i, member)						\
	((list_typeof(i))list_entry_or_null(list_debug(h,		\
					    __FILE__ ":" stringify(__LINE__)), \
					    (i)->member.prev,		\
					    list_off_var_((i), member)))

/**
 * list_append_list - empty one list onto the end of another.
 * @to: the list to append into
 * @from: the list to empty.
 *
 * This takes the entire contents of @from and moves it to the end of
 * @to.  After this @from will be empty.
 *
 * Example:
 *	struct list_head adopter;
 *
 *	list_append_list(&adopter, &parent->children);
 *	assert(list_empty(&parent->children));
 *	parent->num_children = 0;
 */
#define list_append_list(t, f) list_append_list_(t, f,			\
				   __FILE__ ":" stringify(__LINE__))
static inline void list_append_list_(struct list_head *to,
				     struct list_head *from,
				     const char *abortstr)
{
	struct list_node *from_tail = list_debug(from, abortstr)->n.prev;
	struct list_node *to_tail = list_debug(to, abortstr)->n.prev;

	/* Sew in head and entire list. */
	to->n.prev = from_tail;
	from_tail->next = &to->n;
	to_tail->next = &from->n;
	from->n.prev = to_tail;

	/* Now remove head. */
	list_del(&from->n);
	list_head_init(from);
}

/**
 * list_prepend_list - empty one list into the start of another.
 * @to: the list to prepend into
 * @from: the list to empty.
 *
 * This takes the entire contents of @from and moves it to the start
 * of @to.  After this @from will be empty.
 *
 * Example:
 *	list_prepend_list(&adopter, &parent->children);
 *	assert(list_empty(&parent->children));
 *	parent->num_children = 0;
 */
#define list_prepend_list(t, f) list_prepend_list_(t, f, LIST_LOC)
static inline void list_prepend_list_(struct list_head *to,
				      struct list_head *from,
				      const char *abortstr)
{
	struct list_node *from_tail = list_debug(from, abortstr)->n.prev;
	struct list_node *to_head = list_debug(to, abortstr)->n.next;

	/* Sew in head and entire list. */
	to->n.next = &from->n;
	from->n.prev = &to->n;
	to_head->prev = from_tail;
	from_tail->next = to_head;

	/* Now remove head. */
	list_del(&from->n);
	list_head_init(from);
}

/* internal macros, do not use directly */
#define list_for_each_off_dir_(h, i, off, dir)				\
	for (i = list_node_to_off_(list_debug(h, LIST_LOC)->n.dir,	\
				   (off));				\
	list_node_from_off_((void *)i, (off)) != &(h)->n;		\
	i = list_node_to_off_(list_node_from_off_((void *)i, (off))->dir, \
			      (off)))

#define list_for_each_safe_off_dir_(h, i, nxt, off, dir)		\
	for (i = list_node_to_off_(list_debug(h, LIST_LOC)->n.dir,	\
				   (off)),				\
	nxt = list_node_to_off_(list_node_from_off_(i, (off))->dir,	\
				(off));					\
	list_node_from_off_(i, (off)) != &(h)->n;			\
	i = nxt,							\
	nxt = list_node_to_off_(list_node_from_off_(i, (off))->dir,	\
				(off)))

/**
 * list_for_each_off - iterate through a list of memory regions.
 * @h: the list_head
 * @i: the pointer to a memory region which contains list node data.
 * @off: offset(relative to @i) at which list node data resides.
 *
 * This is a low-level wrapper to iterate @i over the entire list, used to
 * implement all oher, more high-level, for-each constructs. It's a for loop,
 * so you can break and continue as normal.
 *
 * WARNING! Being the low-level macro that it is, this wrapper doesn't know
 * nor care about the type of @i. The only assumption made is that @i points
 * to a chunk of memory that at some @offset, relative to @i, contains a
 * properly filled `struct list_node' which in turn contains pointers to
 * memory chunks and it's turtles all the way down. With all that in mind
 * remember that given the wrong pointer/offset couple this macro will
 * happily churn all you memory until SEGFAULT stops it, in other words
 * caveat emptor.
 *
 * It is worth mentioning that one of legitimate use-cases for that wrapper
 * is operation on opaque types with known offset for `struct list_node'
 * member(preferably 0), because it allows you not to disclose the type of
 * @i.
 *
 * Example:
 *	list_for_each_off(&parent->children, child,
 *				offsetof(struct child, list))
 *		printf("Name: %s\n", child->name);
 */
#define list_for_each_off(h, i, off)                                    \
	list_for_each_off_dir_((h),(i),(off),next)

/**
 * list_for_each_rev_off - iterate through a list of memory regions backwards
 * @h: the list_head
 * @i: the pointer to a memory region which contains list node data.
 * @off: offset(relative to @i) at which list node data resides.
 *
 * See list_for_each_off for details
 */
#define list_for_each_rev_off(h, i, off)                                    \
	list_for_each_off_dir_((h),(i),(off),prev)

/**
 * list_for_each_safe_off - iterate through a list of memory regions, maybe
 * during deletion
 * @h: the list_head
 * @i: the pointer to a memory region which contains list node data.
 * @nxt: the structure containing the list_node
 * @off: offset(relative to @i) at which list node data resides.
 *
 * For details see `list_for_each_off' and `list_for_each_safe'
 * descriptions.
 *
 * Example:
 *	list_for_each_safe_off(&parent->children, child,
 *		next, offsetof(struct child, list))
 *		printf("Name: %s\n", child->name);
 */
#define list_for_each_safe_off(h, i, nxt, off)                          \
	list_for_each_safe_off_dir_((h),(i),(nxt),(off),next)

/**
 * list_for_each_rev_safe_off - iterate backwards through a list of
 * memory regions, maybe during deletion
 * @h: the list_head
 * @i: the pointer to a memory region which contains list node data.
 * @nxt: the structure containing the list_node
 * @off: offset(relative to @i) at which list node data resides.
 *
 * For details see `list_for_each_rev_off' and `list_for_each_rev_safe'
 * descriptions.
 *
 * Example:
 *	list_for_each_rev_safe_off(&parent->children, child,
 *		next, offsetof(struct child, list))
 *		printf("Name: %s\n", child->name);
 */
#define list_for_each_rev_safe_off(h, i, nxt, off)                      \
	list_for_each_safe_off_dir_((h),(i),(nxt),(off),prev)

/* Other -off variants. */
#define list_entry_off(n, type, off)		\
	((type *)list_node_from_off_((n), (off)))

#define list_head_off(h, type, off)		\
	((type *)list_head_off((h), (off)))

#define list_tail_off(h, type, off)		\
	((type *)list_tail_((h), (off)))

#define list_add_off(h, n, off)                 \
	list_add((h), list_node_from_off_((n), (off)))

#define list_del_off(n, off)                    \
	list_del(list_node_from_off_((n), (off)))

#define list_del_from_off(h, n, off)			\
	list_del_from(h, list_node_from_off_((n), (off)))

/* Offset helper functions so we only single-evaluate. */
static inline void *list_node_to_off_(struct list_node *node, size_t off)
{
	return (void *)((char *)node - off);
}
static inline struct list_node *list_node_from_off_(void *ptr, size_t off)
{
	return (struct list_node *)((char *)ptr + off);
}

/* Get the offset of the member, but make sure it's a list_node. */
#define list_off_(type, member)					\
	(container_off(type, member) +				\
	 check_type(((type *)0)->member, struct list_node))

#define list_off_var_(var, member)			\
	(container_off_var(var, member) +		\
	 check_type(var->member, struct list_node))

#if HAVE_TYPEOF
#define list_typeof(var) typeof(var)
#else
#define list_typeof(var) void *
#endif

/* Returns member, or NULL if at end of list. */
static inline void *list_entry_or_null(const struct list_head *h,
				       const struct list_node *n,
				       size_t off)
{
	if (n == &h->n)
		return NULL;
	return (char *)n - off;
}
#endif /* CCAN_LIST_H */
 070701015D6BD80000A1FF000003E80000006400000001642C0FB500000012000000000000004A00000000000000000000001F00000000nvme-cli/ccan/ccan/str/LICENSE    ../../licenses/CC0  070701015D6BD9000081A4000003E80000006400000001642C0FB50000054B000000000000004A00000000000000000000001D00000000nvme-cli/ccan/ccan/str/_info  #include "config.h"
#include <stdio.h>
#include <string.h>

/**
 * str - string helper routines
 *
 * This is a grab bag of functions for string operations, designed to enhance
 * the standard string.h.
 *
 * Note that if you define CCAN_STR_DEBUG, you will get extra compile
 * checks on common misuses of the following functions (they will now
 * be out-of-line, so there is a runtime penalty!).
 *
 *	strstr, strchr, strrchr:
 *		Return const char * if first argument is const (gcc only).
 *
 *	isalnum, isalpha, isascii, isblank, iscntrl, isdigit, isgraph,
 *	    islower, isprint, ispunct, isspace, isupper, isxdigit:
 *		Static and runtime check that input is EOF or an *unsigned*
 *		char, as per C standard (really!).
 *
 * Example:
 *	#include <stdio.h>
 *	#include <ccan/str/str.h>
 *
 *	int main(int argc, char *argv[])
 *	{
 *		if (argc > 1 && streq(argv[1], "--verbose"))
 *			printf("verbose set\n");
 *		if (argc > 1 && strstarts(argv[1], "--"))
 *			printf("Some option set\n");
 *		if (argc > 1 && strends(argv[1], "cow-powers"))
 *			printf("Magic option set\n");
 *		return 0;
 *	}
 *
 * License: CC0 (Public domain)
 * Author: Rusty Russell <rusty@rustcorp.com.au>
 */
int main(int argc, char *argv[])
{
	if (argc != 2)
		return 1;

	if (strcmp(argv[1], "depends") == 0) {
		printf("ccan/build_assert\n");
		return 0;
	}

	return 1;
}
 070701015D6BDA000081A4000003E80000006400000001642C0FB500000642000000000000004A00000000000000000000001F00000000nvme-cli/ccan/ccan/str/debug.c    /* CC0 (Public domain) - see LICENSE file for details */
#include "config.h"
#include <ccan/str/str_debug.h>
#include <assert.h>
#include <ctype.h>
#include <string.h>

#ifdef CCAN_STR_DEBUG
/* Because we mug the real ones with macros, we need our own wrappers. */
int str_isalnum(int i)
{
	assert(i >= -1 && i < 256);
	return isalnum(i);
}

int str_isalpha(int i)
{
	assert(i >= -1 && i < 256);
	return isalpha(i);
}

int str_isascii(int i)
{
	assert(i >= -1 && i < 256);
	return isascii(i);
}

#if HAVE_ISBLANK
int str_isblank(int i)
{
	assert(i >= -1 && i < 256);
	return isblank(i);
}
#endif

int str_iscntrl(int i)
{
	assert(i >= -1 && i < 256);
	return iscntrl(i);
}

int str_isdigit(int i)
{
	assert(i >= -1 && i < 256);
	return isdigit(i);
}

int str_isgraph(int i)
{
	assert(i >= -1 && i < 256);
	return isgraph(i);
}

int str_islower(int i)
{
	assert(i >= -1 && i < 256);
	return islower(i);
}

int str_isprint(int i)
{
	assert(i >= -1 && i < 256);
	return isprint(i);
}

int str_ispunct(int i)
{
	assert(i >= -1 && i < 256);
	return ispunct(i);
}

int str_isspace(int i)
{
	assert(i >= -1 && i < 256);
	return isspace(i);
}

int str_isupper(int i)
{
	assert(i >= -1 && i < 256);
	return isupper(i);
}

int str_isxdigit(int i)
{
	assert(i >= -1 && i < 256);
	return isxdigit(i);
}

#undef strstr
#undef strchr
#undef strrchr

char *str_strstr(const char *haystack, const char *needle)
{
	return strstr(haystack, needle);
}

char *str_strchr(const char *haystack, int c)
{
	return strchr(haystack, c);
}

char *str_strrchr(const char *haystack, int c)
{
	return strrchr(haystack, c);
}
#endif
  070701015D6BDB000081A4000003E80000006400000001642C0FB50000011B000000000000004A00000000000000000000001D00000000nvme-cli/ccan/ccan/str/str.c  /* CC0 (Public domain) - see LICENSE file for details */
#include <ccan/str/str.h>

size_t strcount(const char *haystack, const char *needle)
{
	size_t i = 0, nlen = strlen(needle);

	while ((haystack = strstr(haystack, needle)) != NULL) {
		i++;
		haystack += nlen;
	}
	return i;
}
 070701015D6BDC000081A4000003E80000006400000001642C0FB500001746000000000000004A00000000000000000000001D00000000nvme-cli/ccan/ccan/str/str.h  /* CC0 (Public domain) - see LICENSE file for details */
#ifndef CCAN_STR_H
#define CCAN_STR_H
#include "config.h"
#include <string.h>
#include <stdbool.h>
#include <limits.h>
#include <ctype.h>

/**
 * streq - Are two strings equal?
 * @a: first string
 * @b: first string
 *
 * This macro is arguably more readable than "!strcmp(a, b)".
 *
 * Example:
 *	if (streq(somestring, ""))
 *		printf("String is empty!\n");
 */
#define streq(a,b) (strcmp((a),(b)) == 0)

/**
 * strstarts - Does this string start with this prefix?
 * @str: string to test
 * @prefix: prefix to look for at start of str
 *
 * Example:
 *	if (strstarts(somestring, "foo"))
 *		printf("String %s begins with 'foo'!\n", somestring);
 */
#define strstarts(str,prefix) (strncmp((str),(prefix),strlen(prefix)) == 0)

/**
 * strends - Does this string end with this postfix?
 * @str: string to test
 * @postfix: postfix to look for at end of str
 *
 * Example:
 *	if (strends(somestring, "foo"))
 *		printf("String %s end with 'foo'!\n", somestring);
 */
static inline bool strends(const char *str, const char *postfix)
{
	if (strlen(str) < strlen(postfix))
		return false;

	return streq(str + strlen(str) - strlen(postfix), postfix);
}

/**
 * stringify - Turn expression into a string literal
 * @expr: any C expression
 *
 * Example:
 *	#define PRINT_COND_IF_FALSE(cond) \
 *		((cond) || printf("%s is false!", stringify(cond)))
 */
#define stringify(expr)		stringify_1(expr)
/* Double-indirection required to stringify expansions */
#define stringify_1(expr)	#expr

/**
 * strcount - Count number of (non-overlapping) occurrences of a substring.
 * @haystack: a C string
 * @needle: a substring
 *
 * Example:
 *      assert(strcount("aaa aaa", "a") == 6);
 *      assert(strcount("aaa aaa", "ab") == 0);
 *      assert(strcount("aaa aaa", "aa") == 2);
 */
size_t strcount(const char *haystack, const char *needle);

/**
 * STR_MAX_CHARS - Maximum possible size of numeric string for this type.
 * @type_or_expr: a pointer or integer type or expression.
 *
 * This provides enough space for a nul-terminated string which represents the
 * largest possible value for the type or expression.
 *
 * Note: The implementation adds extra space so hex values or negative
 * values will fit (eg. sprintf(... "%p"). )
 *
 * Example:
 *	char str[STR_MAX_CHARS(int)];
 *
 *	sprintf(str, "%i", 7);
 */
#define STR_MAX_CHARS(type_or_expr)				\
	((sizeof(type_or_expr) * CHAR_BIT + 8) / 9 * 3 + 2	\
	 + STR_MAX_CHARS_TCHECK_(type_or_expr))

#if HAVE_TYPEOF
/* Only a simple type can have 0 assigned, so test that. */
#define STR_MAX_CHARS_TCHECK_(type_or_expr)		\
	(sizeof(({ typeof(type_or_expr) x = 0; x; }))*0)
#else
#define STR_MAX_CHARS_TCHECK_(type_or_expr) 0
#endif

/**
 * cisalnum - isalnum() which takes a char (and doesn't accept EOF)
 * @c: a character
 *
 * Surprisingly, the standard ctype.h isalnum() takes an int, which
 * must have the value of EOF (-1) or an unsigned char.  This variant
 * takes a real char, and doesn't accept EOF.
 */
static inline bool cisalnum(char c)
{
	return isalnum((unsigned char)c);
}
static inline bool cisalpha(char c)
{
	return isalpha((unsigned char)c);
}
static inline bool cisascii(char c)
{
	return isascii((unsigned char)c);
}
#if HAVE_ISBLANK
static inline bool cisblank(char c)
{
	return isblank((unsigned char)c);
}
#endif
static inline bool ciscntrl(char c)
{
	return iscntrl((unsigned char)c);
}
static inline bool cisdigit(char c)
{
	return isdigit((unsigned char)c);
}
static inline bool cisgraph(char c)
{
	return isgraph((unsigned char)c);
}
static inline bool cislower(char c)
{
	return islower((unsigned char)c);
}
static inline bool cisprint(char c)
{
	return isprint((unsigned char)c);
}
static inline bool cispunct(char c)
{
	return ispunct((unsigned char)c);
}
static inline bool cisspace(char c)
{
	return isspace((unsigned char)c);
}
static inline bool cisupper(char c)
{
	return isupper((unsigned char)c);
}
static inline bool cisxdigit(char c)
{
	return isxdigit((unsigned char)c);
}

#include <ccan/str/str_debug.h>

/* These checks force things out of line, hence they are under DEBUG. */
#ifdef CCAN_STR_DEBUG
#include <ccan/build_assert/build_assert.h>

/* These are commonly misused: they take -1 or an *unsigned* char value. */
#undef isalnum
#undef isalpha
#undef isascii
#undef isblank
#undef iscntrl
#undef isdigit
#undef isgraph
#undef islower
#undef isprint
#undef ispunct
#undef isspace
#undef isupper
#undef isxdigit

/* You can use a char if char is unsigned. */
#if HAVE_BUILTIN_TYPES_COMPATIBLE_P && HAVE_TYPEOF
#define str_check_arg_(i)						\
	((i) + BUILD_ASSERT_OR_ZERO(!__builtin_types_compatible_p(typeof(i), \
								  char)	\
				    || (char)255 > 0))
#else
#define str_check_arg_(i) (i)
#endif

#define isalnum(i) str_isalnum(str_check_arg_(i))
#define isalpha(i) str_isalpha(str_check_arg_(i))
#define isascii(i) str_isascii(str_check_arg_(i))
#if HAVE_ISBLANK
#define isblank(i) str_isblank(str_check_arg_(i))
#endif
#define iscntrl(i) str_iscntrl(str_check_arg_(i))
#define isdigit(i) str_isdigit(str_check_arg_(i))
#define isgraph(i) str_isgraph(str_check_arg_(i))
#define islower(i) str_islower(str_check_arg_(i))
#define isprint(i) str_isprint(str_check_arg_(i))
#define ispunct(i) str_ispunct(str_check_arg_(i))
#define isspace(i) str_isspace(str_check_arg_(i))
#define isupper(i) str_isupper(str_check_arg_(i))
#define isxdigit(i) str_isxdigit(str_check_arg_(i))

#if HAVE_TYPEOF
/* With GNU magic, we can make const-respecting standard string functions. */
#undef strstr
#undef strchr
#undef strrchr

/* + 0 is needed to decay array into pointer. */
#define strstr(haystack, needle)					\
	((typeof((haystack) + 0))str_strstr((haystack), (needle)))
#define strchr(haystack, c)					\
	((typeof((haystack) + 0))str_strchr((haystack), (c)))
#define strrchr(haystack, c)					\
	((typeof((haystack) + 0))str_strrchr((haystack), (c)))
#endif
#endif /* CCAN_STR_DEBUG */

#endif /* CCAN_STR_H */
  070701015D6BDD000081A4000003E80000006400000001642C0FB500000306000000000000004A00000000000000000000002300000000nvme-cli/ccan/ccan/str/str_debug.h    /* CC0 (Public domain) - see LICENSE file for details */
#ifndef CCAN_STR_DEBUG_H
#define CCAN_STR_DEBUG_H

/* #define CCAN_STR_DEBUG 1 */

#ifdef CCAN_STR_DEBUG
/* Because we mug the real ones with macros, we need our own wrappers. */
int str_isalnum(int i);
int str_isalpha(int i);
int str_isascii(int i);
#if HAVE_ISBLANK
int str_isblank(int i);
#endif
int str_iscntrl(int i);
int str_isdigit(int i);
int str_isgraph(int i);
int str_islower(int i);
int str_isprint(int i);
int str_ispunct(int i);
int str_isspace(int i);
int str_isupper(int i);
int str_isxdigit(int i);

char *str_strstr(const char *haystack, const char *needle);
char *str_strchr(const char *s, int c);
char *str_strrchr(const char *s, int c);
#endif /* CCAN_STR_DEBUG */

#endif /* CCAN_STR_DEBUG_H */
  070701015D6BDF000081A4000003E80000006400000001642C0FB5000003FF000000000000004A00000000000000000000001F00000000nvme-cli/ccan/licenses/BSD-MIT    Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
 070701015D6BE0000081A4000003E80000006400000001642C0FB5000018EF000000000000004A00000000000000000000001B00000000nvme-cli/ccan/licenses/CC0    Statement of Purpose

The laws of most jurisdictions throughout the world automatically confer exclusive Copyright and Related Rights (defined below) upon the creator and subsequent owner(s) (each and all, an "owner") of an original work of authorship and/or a database (each, a "Work").

Certain owners wish to permanently relinquish those rights to a Work for the purpose of contributing to a commons of creative, cultural and scientific works ("Commons") that the public can reliably and without fear of later claims of infringement build upon, modify, incorporate in other works, reuse and redistribute as freely as possible in any form whatsoever and for any purposes, including without limitation commercial purposes. These owners may contribute to the Commons to promote the ideal of a free culture and the further production of creative, cultural and scientific works, or to gain reputation or greater distribution for their Work in part through the use and efforts of others.

For these and/or other purposes and motivations, and without any expectation of additional consideration or compensation, the person associating CC0 with a Work (the "Affirmer"), to the extent that he or she is an owner of Copyright and Related Rights in the Work, voluntarily elects to apply CC0 to the Work and publicly distribute the Work under its terms, with knowledge of his or her Copyright and Related Rights in the Work and the meaning and intended legal effect of CC0 on those rights.

1. Copyright and Related Rights. A Work made available under CC0 may be protected by copyright and related or neighboring rights ("Copyright and Related Rights"). Copyright and Related Rights include, but are not limited to, the following:

    the right to reproduce, adapt, distribute, perform, display, communicate, and translate a Work;
    moral rights retained by the original author(s) and/or performer(s);
    publicity and privacy rights pertaining to a person's image or likeness depicted in a Work;
    rights protecting against unfair competition in regards to a Work, subject to the limitations in paragraph 4(a), below;
    rights protecting the extraction, dissemination, use and reuse of data in a Work;
    database rights (such as those arising under Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, and under any national implementation thereof, including any amended or successor version of such directive); and
    other similar, equivalent or corresponding rights throughout the world based on applicable law or treaty, and any national implementations thereof.

2. Waiver. To the greatest extent permitted by, but not in contravention of, applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and unconditionally waives, abandons, and surrenders all of Affirmer's Copyright and Related Rights and associated claims and causes of action, whether now known or unknown (including existing as well as future claims and causes of action), in the Work (i) in all territories worldwide, (ii) for the maximum duration provided by applicable law or treaty (including future time extensions), (iii) in any current or future medium and for any number of copies, and (iv) for any purpose whatsoever, including without limitation commercial, advertising or promotional purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each member of the public at large and to the detriment of Affirmer's heirs and successors, fully intending that such Waiver shall not be subject to revocation, rescission, cancellation, termination, or any other legal or equitable action to disrupt the quiet enjoyment of the Work by the public as contemplated by Affirmer's express Statement of Purpose.

3. Public License Fallback. Should any part of the Waiver for any reason be judged legally invalid or ineffective under applicable law, then the Waiver shall be preserved to the maximum extent permitted taking into account Affirmer's express Statement of Purpose. In addition, to the extent the Waiver is so judged Affirmer hereby grants to each affected person a royalty-free, non transferable, non sublicensable, non exclusive, irrevocable and unconditional license to exercise Affirmer's Copyright and Related Rights in the Work (i) in all territories worldwide, (ii) for the maximum duration provided by applicable law or treaty (including future time extensions), (iii) in any current or future medium and for any number of copies, and (iv) for any purpose whatsoever, including without limitation commercial, advertising or promotional purposes (the "License"). The License shall be deemed effective as of the date CC0 was applied by Affirmer to the Work. Should any part of the License for any reason be judged legally invalid or ineffective under applicable law, such partial invalidity or ineffectiveness shall not invalidate the remainder of the License, and in such case Affirmer hereby affirms that he or she will not (i) exercise any of his or her remaining Copyright and Related Rights in the Work or (ii) assert any associated claims and causes of action with respect to the Work, in either case contrary to Affirmer's express Statement of Purpose.

4. Limitations and Disclaimers.

    No trademark or patent rights held by Affirmer are waived, abandoned, surrendered, licensed or otherwise affected by this document.
    Affirmer offers the Work as-is and makes no representations or warranties of any kind concerning the Work, express, implied, statutory or otherwise, including without limitation warranties of title, merchantability, fitness for a particular purpose, non infringement, or the absence of latent or other defects, accuracy, or the present or absence of errors, whether or not discoverable, all to the greatest extent permissible under applicable law.
    Affirmer disclaims responsibility for clearing rights of other persons that may apply to the Work or any use thereof, including without limitation any person's Copyright and Related Rights in the Work. Further, Affirmer disclaims responsibility for obtaining any necessary consents, permissions or other rights required for any use of the Work.
    Affirmer understands and acknowledges that Creative Commons is not a party to this document and has no duty or obligation with respect to this CC0 or use of the Work.
 070701015D6BE6000081A4000003E80000006400000001642C0FB500000FF5000000000000004A00000000000000000000001C00000000nvme-cli/completions/README   Kelly Kaoudis, kelly.n.kaoudis at intel.com, June 2015

Setting Up NVMe Tab Autocompletion for bash or zsh
==================================================

If your working shell is bash...
--------------------------------
the following gets bash autocompletion to behave properly
#echo "bind 'set show-all-if-ambiguous on'" >> ~/.bashrc
#echo "bind 'set show-all-if-unmodified on'" >> ~/.bashrc
#echo "bind 'set completion-ignore-case on'" >> ~/.bashrc
#echo "bind 'set completion-map-case on'" >> ~/.bashrc

add NVMe autocompletion script to your autocompletes directory
#cp `pwd`/bash-nvme-completion.sh /etc/bash_completion.d/nvme

make sure this bash knows where everything is
#source /etc/bash_completion.d/nvme && source ~/.bashrc

you should be able to autocomplete with the nvme utility now
(double TABs still apply)! If autocompleting has disappeared,
just re-source nvme and .bashrc. To see a full list of auto-completable
NVMe commands, type "nvme help " and hit TAB.

You may also need to uncomment the "enable bash completion in interactive
shells" part of /etc/bash.bashrc, which hopefully looks something like:

if [ -f /usr/share/bash-completion/bash_completion ]; then
	. /usr/share/bash-completion/bash_completion
elif [ -f /etc/bash_completion ]; then
	. /etc/bash_completion
fi

(don't bother with the shopt part, your Bash version might not support shopt).

Bash footnote: for bash vers >= 4.2, it appears to be the case that
menu-complete **no longer works.** If the bash dev folks ever re-patch this,
try binding TAB to menu-complete to cycle through the NVMe subcommand matches
on whatever you typed.

if your working shell is zsh...
-------------------------------
create the zsh completions directory if you don't have it
#if [ ! -e "~/.zsh" ]; then
#	mkdir ~/.zsh
#	mkdir ~/.zsh/completion
#fi

#cp `pwd`/_nvme ~/.zsh/completion/_nvme

add compinit if you don't have it in your .zshrc
#echo "autoload -Uz compinit && compinit" >> ~/.zshrc

add nvme autocompletions to your .zshrc
#echo "# source for tab autocompletions" >> ~/.zshrc
#echo "fpath=(~/.zsh/completion $fpath)" >> ~/.zshrc
#echo "source ~/.zsh/completion/_nvme" >> ~/.zshrc

make sure this zsh knows where everything is
#source ~/.zsh/completion/_nvme && source ~/.zshrc

You should be able to autocomplete with the nvme utility now (single TAB press
should get you a completion with descriptions -- sadly, bash doesn't support
descriptions within completions). If autocompletes disappear, just re-source
_nvme and .zshrc. Also, make sure your .zshrc is ordered correctly: we want to
source _nvme before updating our fpath. Both of these should occur before
compinit is loaded.

Updating NVMe Tab Autocompletions
=================================

zsh
---

Add your new command to the _cmds array in the following format:

'command:short-form description'

Add a case to the zsh case statement for autocompletion of subopts
in the following format (as seen in _nvme):

(bar)
	local _list_of_subopts
	_list_of_subopts=(
	/dev/nvme':supply a device to use (required)'
	--foo':do something cool'
	-f':alias of --foo'
	)

	_arguments '*:: :->subcmds'
	_describe -t commands "nvme bar options" _list_of_subopts
	;;

All zsh autocompletion built-ins start with _, and so should anything
internal to your autocompletes. _arguments and _describe are built-ins.
The '*:: :->subcmds' bit describes the format in which we want our
options to be displayed (don't change this, unless you like pain.)
_describe -t adds our list of options to the data structure associated with
our command `bar'.

Add the name of your command to the (help) case as well.

Update your ~/.zsh/completion/_nvme with your new changes and re-source as needed.

bash
----

Add the name of your command to _cmds in bash_nvme_completion.sh. Add a case to
_nvme_list_opts in the following format:

"bar")
opts+="--foo= -f --baz= -b"
;;

Update your /etc/bash_completion.d/nvme version, and re-source things as needed.

TO DO
-----
Automatically generate man pages and autocompletions for new NVMe commands, possibly
with kerneldoc.
   070701015D6E42000081A4000003E80000006400000001642C0FB600008CD6000000000000004A00000000000000000000001B00000000nvme-cli/completions/_nvme    #compdef _nvme nvme
# SPDX-License-Identifier: GPL-2.0-or-later

# zsh completions for the nvme command-line interface,
# very loosely based on git and adb command completion
# Kelly Kaoudis kelly.n.kaoudis at intel.com, June 2015

_nvme () {
	local -a _cmds
	_cmds=(
	'id-ctrl:display information about the controller'
	'id-ns:display information about the namespace'
	'id-ns-lba-format:display information about the namespace capability fields for specific LBA format'
	'list-ns:identify all namespace(s) attached'
	'cmdset-ind-id-ns:display I/O Command Set Independent information about the namespace'
	'id-iocs:display information about I/O command sets'
	'id-domain:display information about domain list'
	'create-ns:create a new namespace before attachment'
	'delete-ns:delete a detached namespace'
	'attach-ns:attach namespace to controller'
	'detach-ns:detach namespace from controller'
	'list-ctrl:identify all controller(s) attached'
	'nvm-id-ctrl:display information about the nvm command set'
	'nvm-id-ns:display information about the namespace of nvm command set'
	'id-ns-lba-format:display information about the namespace of nvm command set capability fields for specific LBA format'
	'list-endgrp:display information about nvme endurance group list'
	'get-ns-id:get namespace id of opened block device'
	'get-log:retrieve any log in raw format'
	'predictable-lat-log:retrieve predictable latency per nvmset log'
	'pred-lat-event-agg-log:retrieve predictable latency event aggregate log'
	'persistent-event-log:retrieve presistent event log'
	'fw-log:retrieve fw log'
	'smart-log:retrieve SMART log'
	'smart-log-add:retrieve additional SMART log'
	'error-log:retrieve error log'
	'endurance-event-agg-log:retrieve endurance group event aggregate log'
	'lba-status-log:retrieve lba status log'
	'resv-notif-log: retrieve reservation notification log'
	'get-feature:display a controller feature'
	'set-feature:set a controller feature and show results'
	'format:apply new block format to namespace'
	'fw-activate:activate a firmware on the device'
	'fw-download:download a firmware to the device'
	'admin-passthru:submit a passthrough IOCTL'
	'io-passthru:submit a passthrough IOCTL'
	'security-send:send security/secure data to controller'
	'security-recv:ask for security/secure data from controller'
	'resv-acquire:acquire reservation on a namespace'
	'resv-register:register reservation on a namespace'
	'resv-release:release reservation on a namespace'
	'resv-report:report reservation on a namespace'
	'copy:submit a simple copy command'
	'flush:submit a flush'
	'compare:compare data on device to data elsewhere'
	'read:submit a read command'
	'write:submit a write command'
	'capacity-mgmt: submit capacity management command'
	'show-regs:shows the controller registers; requires admin character device'
	'boot-part-log: retrieve boot partition log'
	'fid-support-effects-log:retrieve fid support and effects log'
	'supported-log-pages: retrieve support log pages details'
	'lockdown:submit a lockdown command'
	'media-unit-stat-log: retrieve media unit status log pages details'
	'supported-cap-config-log: retrieve support log pages details'
	'show-topology: show subystem topology'
	'help:print brief descriptions of all nvme commands'
	)

	local expl

	_arguments '*:: :->subcmds' && return 0

	if (( CURRENT == 1 )); then
		_describe -t commands "nvme subcommands" _cmds
		return
	else
		case ${words[CURRENT-1]} in
		(id-ctrl)
			local _idctrl
			_idctrl=(
			/dev/nvme':supply a device to use (required)'
			--raw-binary':dump infos in binary format'
			-b':alias of --raw-binary'
			--human-readable':show infos in readable format'
			-H':alias of --human-readable'
			--vendor-specific':also dump binary vendor infos'
			-v':alias of --vendor-specific'
			)

			_arguments '*:: :->subcmds'
			_describe -t commands "nvme id-ctrl options" _idctrl
			;;
		(id-ns)
			local _idns
			_idns=(
			/dev/nvme':supply a device to use (required)'
			--namespace-id=':show infos for namespace <nsid>'
			-n':alias of --namespace-id'
			--raw-binary':dump infos in binary format'
			-b':alias of --raw-binary'
			--human-readable':show infos in readable format'
			-H':alias of --human-readable'
			--vendor-specific':also dump binary vendor infos'
			-v':alias of --vendor-specific'
			)
			_arguments '*:: :->subcmds'
			_describe -t commands "nvme id-ns options" _idns
			;;
		(id-ns-lba-format)
			local _idns_lba_format
			_idns_lba_format=(
			/dev/nvme':supply a device to use (required)'
			--lba-format-index=':show infos for lba format index <lba-format-index>'
			-i':alias of --lba-format-index'
			--uuid-index=':uuid index'
			-U':alias for --uuid-index'
			--output-format=':Output format: normal|json|binary'
			-o':alias for --output-format'
			--verbose':show infos verbosely'
			-v':alias of --verbose'
			)
			_arguments '*:: :->subcmds'
			_describe -t commands "nvme id-ns-lba-format options" _idns_lba_format
			;;
		(list-ns)
			local _listns
			_listns=(
			/dev/nvme':supply a device to use (required)'
			--namespace-id=':start namespace infos listing with this nsid'
			-n':alias of --namespace-id'
			--csi=':command set identifier'
			-y':alias of --csi'
			)
			_arguments '*:: :->subcmds'
			_describe -t commands "nvme list-ns options" _listns
			;;
		(cmdset-ind-id-ns)
			local _cmdset_ind_idns
			_cmdset_ind_idns=(
			/dev/nvme':supply a device to use (required)'
			--namespace-id=':show infos for namespace <nsid>'
			-n':alias of --namespace-id'
			--raw-binary':dump infos in binary format'
			-b':alias of --raw-binary'
			--human-readable':show infos in readable format'
			-H':alias of --human-readable'
			)
			_arguments '*:: :->subcmds'
			_describe -t commands "nvme cmdset-ind-id-ns options" _cmdset_ind_idns
			;;
		(id-iocs)
			local _idiocs
			_idiocs=(
			/dev/nvme':supply a device to use (required)'
			--controller-id=':show infos for controller <cntid>'
			-c':alias of --controller-id'
			)
			_arguments '*:: :->subcmds'
			_describe -t commands "nvme id-iocs options" _idiocs
			;;
		(id-domain)
			local _iddomain
			_iddomain=(
			/dev/nvme':supply a device to use (required)'
			--dom-id=':show infos for domain id <cntid>'
			-d':alias of --dom-id'
			)
			_arguments '*:: :->subcmds'
			_describe -t commands "nvme id-domain options" _iddomain
			;;
		(nvm-id-ctrl)
			local _nvmidctrl
			_nvmidctrl=(
			/dev/nvme':supply a device to use (required)'
			)
			_arguments '*:: :->subcmds'
			_describe -t commands "nvme nvm-id-ctrl options" _nvmidctrl
			;;
		(nvm-id-ns)
			local _nvmidns
			_nvmidns=(
			/dev/nvme':supply a device to use (required)'
			--namespace-id=':show infos for namespace <nsid>'
			-n':alias of --namespace-id'
			--uuid-index=':uuid index'
			-U':alias for --uuid-index'
			--output-format=':Output format: normal|json|binary'
			-o':alias for --output-format'
			--verbose':show infos verbosely'
			-v':alias of --verbose'
			)
			_arguments '*:: :->subcmds'
			_describe -t commands "nvme nvm-id-ns options" _nvmidns
			;;
		(id-ns-lba-format)
			local _nvm_idns_lba_format
			_nvm_idns_lba_format=(
			/dev/nvme':supply a device to use (required)'
			--lba-format-index=':show infos for lba format index <lba-format-index>'
			-i':alias of --lba-format-index'
			--uuid-index=':uuid index'
			-U':alias for --uuid-index'
			--output-format=':Output format: normal|json|binary'
			-o':alias for --output-format'
			--verbose':show infos verbosely'
			-v':alias of --verbose'
			)
			_arguments '*:: :->subcmds'
			_describe -t commands "nvme nvm-id-ns-lba-format options" _nvm_idns_lba_format
			;;
		(list-endgrp)
			local _listendgrp
			_listendgrp=(
			/dev/nvme':supply a device to use (required)'
			--endgrp-id=':endurance group id'
			-i':alias of --endgrp-id'
			)
			_arguments '*:: :->subcmds'
			_describe -t commands "nvme list-ns options" _listendgrp
			;;
		(create-ns)
			local _createns
			_createns=(
			/dev/nvme':supply a device to use (required)'
			--nsze=':namespace size to create'
			-s':alias of --nsze'
			--ncap=':namespace capacity'
			-c':alias of --ncap'
			--flbas=':FLBA size'
			-f':alias of --flbas'
			--dps=':data protection?'
			-d':alias of --dps'
			--nmic=':multipath and sharing'
			-m':alias of --nmic'
			--anagrp-id=':ANA Group Identifier'
			-a':alias of --anagrp-id'
			--nvmset-id=':NVM Set Identifier'
			-i':alias of --nvmset-id'
			--block-size=':target block size'
			-b':alias of --block-size'
			--timeout=':value for timeout'
			-t':alias of --timeout'
			--csi=':command set identifier'
			-y':alias of --csi'
			--lbstm=':logical block storage tag mask'
			-l':alias of --lbstm'
			--nsze-si=':size of ns (NSZE) in standard SI units'
			-S':alias of --nsze-si'
			--ncap-si=':capacity of ns (NCAP) in standard SI units'
			-C':alias of --ncap-si'
			)
			_arguments '*:: :->subcmds'
			_describe -t commands "nvme create-ns options" _createns
			;;
		(delete-ns)
			local _deletens
			_deletens=(
			/dev/nvme':supply a device to use (required)'
			--namespace-id=':namespace to delete'
			-n':alias of --namespace-id'
			--timeout=':value for timeout'
			-t':alias of --timeout'
			)
			_arguments '*:: :->subcmds'
			_describe -t commands "nvme delete-ns options" _deletens
			;;
		(attach-ns)
			local _attachns
			_attachns=(
			/dev/nvme':supply a device to use (required)'
			--namespace-id=':namespace to attach to the controller'
			-n':alias of --namespace-id'
			--controllers=':if a device is not provided, supply a comma-sep list of controllers'
			-c':alias of --controllers'
			)
			_arguments '*:: :->subcmds'
			_describe -t commands "nvme attach-ns options" _attachns
			;;
		(detach-ns)
			local _detachns
			_detachns=(
			/dev/nvme':supply a device to use (required)'
			--namespace-id=':namespace to detach from controller'
			-n':alias of --namespace-id'
			--controllers=':if a device is not provided, supply a comma-sep list of controllers'
			-c':alias of --controllers'
			)
			_arguments '*:: :->subcmds'
			_describe -t commands "nvme detach-ns options" _detachns
			;;
		(list-ctrl)
			local _listctrl
			_listctrl=(
			/dev/nvme':supply a device to use (required)'
			--namespace-id=':show controllers attached to this namespace'
			-n':alias of --namespace-id'
			--cntid=':start the list with this controller'
			-c':alias of --cntid'
			)
			_arguments '*:: :->subcmds'
			_describe -t commands "nvme list-ctrl options" _listctrl
			;;
		(get-ns-id)
			local _getnsid
			_getnsid=(
			/dev/nvme':supply a device to use (required)'
			)
			_arguments '*:: :->subcmds'
			_describe -t commands "nvme get-ns-id options" _getnsid
			;;
		(get-log)
			local _getlog
			_getlog=(
			/dev/nvme':supply a device to use (required)'
			--log-id=':requested log number'
			-i':alias of --log-id'
			--log-len=':number of bytes to show for requested log'
			-l':alias of --log-len'
			--namespace-id=':get log specific to <nsid> if namespace logs are supported'
			-n':alias of --namespace-id'
			--raw-binary':dump infos in binary format'
			-b':alias of --raw-binary'
			)
			_arguments '*:: :->subcmds'
			_describe -t commands "nvme get-log options" _getlog
			;;
		(persistent-event-log)
			local _persistenteventlog
			_persistenteventlog=(
			/dev/nvme':supply a device to use (required)'
			--action=': action the controller shall take for this log page'
			-a':alias to --action'
			--log-len=':number of bytes to show for requested log'
			-l':alias of --log-len'
			--raw-binary':dump infos in binary format'
			-b':alias of --raw-binary'
			)
			_arguments '*:: :->subcmds'
			_describe -t commands "persistent-event-log options" _persistenteventlog
			;;
		(pred-lat-event-agg-log)
			local _predlateventagglog
			_predlateventagglog=(
			/dev/nvme':supply a device to use (required)'
			--log-entries=': Number of pending NVM Set Entries log list'
			-e':alias to --log-entries'
			--rae': Retain an Asynchronous Event'
			-r':alias to --rae'
			--raw-binary':dump infos in binary format'
			-b':alias of --raw-binary'
			)
			_arguments '*:: :->subcmds'
			_describe -t commands "nvme pred-lat-event-agg-log options" _predlateventagglog
			;;
		(predictable-lat-log)
			local _predictablelatlog
			_predictablelatlog=(
			/dev/nvme':supply a device to use (required)'
			--nvmset-id=': NVM Set Identifier on which log page retrieve info'
			-i':alias to --nvmset-id'
			--raw-binary':dump infos in binary format'
			-b':alias of --raw-binary'
			)
			_arguments '*:: :->subcmds'
			_describe -t commands "nvme predictable-lat-log options" _predictablelatlog
			;;
		(fw-log)
			local _fwlog
			_fwlog=(
			/dev/nvme':supply a device to use (required)'
			--raw-binary':dump infos in binary format'
			-b':alias of --raw-binary'
			)
			_arguments '*:: :->subcmds'
			_describe -t commands "nvme fw-log options" _fwlog
			;;
		(smart-log)
			local _smartlog
			_smartlog=(
			/dev/nvme':supply a device to use (required)'
			--namespace-id=':get SMART log specific to <nsid> if namespace logs are supported'
			-n':alias to --namespace-id'
			--raw-binary':dump infos in binary format'
			-b':alias to --raw-binary'
			)
			_arguments '*:: :->subcmds'
			_describe -t commands "nvme smart-log options" _smartlog
			;;
		(smart-log-add)
			local _add
			_add=(
			/dev/nvme':supply a device to use (required)'
			--namespace-id=':get additional SMART log specific to <nsid> if namespace logs supported'
			-n':alias to --namespace-id'
			--raw-binary':dump infos in binary format'
			-b':alias to --raw-binary'
			)
			_arguments '*:: :->subcmds'
			_describe -t commands "nvme smart-log-add options" _add
			;;
		(error-log)
			local _errlog
			_errlog=(
			/dev/nvme':supply a device to use (required)'
			--namespace-id=':get log specific to <nsid> if namespace logs are supported'
			-n':alias to --namespace-id'
			--raw-binary':dump infos in binary format'
			-b':alias to --raw-binary'
			--log-entries=':request n >= 1 log entries'
			-e':alias to --log-entries'
			)
			_arguments '*:: :->subcmds'
			_describe -t commands "nvme error-log options" _errlog
			;;
		(endurance-event-agg-log)
			local _enduranceeventagglog
			_enduranceeventagglog=(
			/dev/nvme':supply a device to use (required)'
			--log-entries=': Number of Endurance Group Event Agg Entries log list'
			-e':alias to --log-entries'
			--rae': Retain an Asynchronous Event'
			-r':alias to --rae'
			--raw-binary':dump infos in binary format'
			-b':alias of --raw-binary'
			)
			_arguments '*:: :->subcmds'
			_describe -t commands "nvme endurance-event-agg-log options" _enduranceeventagglog
			;;
		(lba-status-log)
			local _lbastatuslog
			_lbastatuslog=(
			/dev/nvme':supply a device to use (required)'
			--rae': Retain an Asynchronous Event'
			-r':alias to --rae'
			)
			_arguments '*:: :->subcmds'
			_describe -t commands "nvme lba-status-log options" _lbastatuslog
			;;
		(resv-notif-log)
			local _resvnotiflog
			_resvnotiflog=(
			/dev/nvme':supply a device to use (required)'
			)
			_arguments '*:: :->subcmds'
			_describe -t commands "nvme resv-notif-log options" _resvnotiflog
			;;
		(boot-part-log)
			local _bootpartlog
			_bootpartlog=(
			/dev/nvme':supply a device to use (required)'
			--lsp=': log specific field'
			-s':alias to --lsp'
			--output-file=': boot partition data output write'
			-f':alias for --output-file'
			)
			_arguments '*:: :->subcmds'
			_describe -t commands "nvme boot-part-log options" _bootpartlog
			;;
		(get-feature)
			local _getf
			_getf=(
			/dev/nvme':supply a device to use (required)'
			--namespace-id=':get feature specific to <nsid>'
			-n':alias to --namespace-id'
			--feature-id=':hexadecimal name of feature to examine (required)'
			-f':alias to --feature-id'
			--sel=':select from 0 - current, 1 - default, 2 - saved, 3 - supported'
			-s':alias to --sel'
			--data-len=':buffer len for returned LBA Type Range or host identifier data'
			-l':alias for --data-len'
			--uuid-index=':uuid index'
			-U':alias for --uuid-index'
			--cdw11=':dword 11 value, used for interrupt vector configuration only'
			--raw-binary':dump infos in binary format'
			-b':alias to --raw-binary'
			)
			_arguments '*:: :->subcmds'
			_describe -t commands "nvme get-feature options" _getf
			;;
		(lockdown)
			local _lockdown
			_lockdown=(
			/dev/nvme':supply a device to use (required)'
			--ofi=': Opcode or Feature Identifier(OFI) (required)'
			-o':alias of --ofi'
			--ifc=':Interface (INF) field Information (required)'
			-f':alias of --ifc'
			--prhbt=':Prohibit(PRHBT) bit field (required)'
			-p':alias of --prhbt'
			--scp=':Scope(SCP) field for identifying opcode or feature id (required)'
			-s':alias of --scp'
			--uuid=':UUID Index field required aligned with Scope'
			-U':alias of --uuid'
			)
			_arguments '*:: :->subcmds'
			_describe -t commands "nvme lockdown options" _lockdown
			;;
		(set-feature)
			local _setf
			_setf=(
			/dev/nvme':supply a device to use (required)'
			--namespace-id=':feature is specific to <nsid>'
			-n':alias to --namespace-id'
			--feature-id=':hexadecimal name of feature to set (required)'
			-f':alias to --feature-id'
			--data-len=':buffer length, only used for LBA Type Range or host identifier data'
			-l':alias for --data-len'
			--data=':data file for LBA Type Range or host identifier buffer (defaults to stdin)'
			-d':alias to --data'
			--value=':new value of feature (required)'
			-v'alias to --value'
			--uuid-index=':uuid index'
			-U':alias for --uuid-index'
			)
			_arguments '*:: :->subcmds'
			_describe -t commands "nvme set-feature options" _setf
			;;
		(format)
			local _format
			_format=(
			/dev/nvme':supply a device to use (required)'
			--namespace-id=':<nsid> of namespace to format (required)'
			-n':alias of --namespace-id'
			--timeout=':value for timeout'
			-t':alias of --timeout'
			--lbaf=':LBA format to apply to namespace (required)'
			-l':alias of --lbaf'
			--ses=':secure erase? 0 - no-op (default), 1 - user-data erase, 2 - cryptographic erase'
			-s':alias of --ses'
			--pil=':location of protection information? 0 - end, 1 - start'
			-p':alias of --pil'
			--pi=':protection information? 0 - off, 1 - Type 1 on, 2 - Type 2 on, 3 - Type 3 on'
			-i':alias of --pi'
			--ms=':extended format? 0 - off (metadata in separate buffer), 1 - on (extended LBA used)'
			-m':alias of --ms'
			)
			_arguments '*:: :->subcmds'
			_describe -t commands "nvme format options" _format
			;;
		(fw-activate)
			local _fwact
			_fwact=(
			/dev/nvme':supply a device to use (required)'
			--action=':activation action (required)? 0 - replace fw without activating, 1 - replace with activation, 2 - replace with activation at next reset'
			-a':alias of --action'
			--slot=':firmware slot to activate'
			-s':alias of --slot'
			)
			_arguments '*:: :->subcmds'
			_describe -t commands "nvme fw-activate options" _fwact
			;;
		(fw-download)
			local _fwd
			_fwd=(
			/dev/nvme':supply a device to use (required)'
			--fw=':firmware file to download (required)'
			-f':alias of --fw'
			--xfer=':limit on chunk-size of transfer (if device has download size limit)'
			-x':alias of --xfer'
			--offset=':starting offset, in dwords (defaults to 0, only useful if download is split across multiple files)'
			-o':alias of --offset'
			)
			_arguments '*:: :->subcmds'
			_describe -t commands "nvme fw-download options" _fwd
			;;
		(capacity-mgmt)
			local _fwd
			_fwd=(
			/dev/nvme':supply a device to use (required)'
			--operation=':Operation to be performed by the controller'
			-o':alias of --operation'
			--element-id=':specific to the value of the Operation field'
			-i':alias of --element-id'
			--cap-lower=':Least significant 32 bits of the capacity in bytes'
			-l':alias of --cap-lower'
			--cap-upper=':Most significant 32 bits of the capacity in bytes'
			-u':alias of --cap-upper'
			)
			_arguments '*:: :->subcmds'
			_describe -t commands "nvme capacity-mgmt options" _fwd
			;;
		(supported-log-pages)
			local _support
			_support=(
			/dev/nvme':supply a device to use (required)'
			--human-readable':show infos in readable format'
			-H':alias of --human-readable'
			)
			_arguments '*:: :->subcmds'
			_describe -t commands "nvme supported-log-pages options" _support
			;;
		(media-unit-stat-log)
			local _medialog
			_medialog=(
			/dev/nvme':supply a device to use (required)'
			--dom-id=':show infos for domain id'
			-d':alias of --dom-id'
			--raw-binary':dump infos in binary format'
			-b':alias of --raw-binary'
			)
			_arguments '*:: :->subcmds'
			_describe -t commands "nvme media-unit-stat-log" _medialog
			;;
		(supported-cap-config-log)
			local _caplog
			_caplog=(
			/dev/nvme':supply a device to use (required)'
			--dom-id=':show infos for domain id'
			-d':alias of --dom-id'
			--raw-binary':dump infos in binary format'
			-b':alias of --raw-binary'
			)
			_arguments '*:: :->subcmds'
			_describe -t commands "nvme supported-cap-config-log" _caplog
			;;
		(admin-passthru)
			local _admin
			_admin=(
			/dev/nvme':supply a device to use (required)'
			--opcode=':hexadecimal opcode to send (required)'
			-o':alias of --opcode'
			--flags=':command flags'
			-f':alias of --flags'
			--rsvd=':value for reserved field'
			-R':alias of --rsvd'
			--namespace-id=':value for nsid'
			-n':alias of --namespace-id'
			--data-len=':length for data buffer'
			-l':alias of --data-len'
			--metadata-len=':length for metadata buffer'
			-m':alias of --metadata-len'
			--timeout=':value for timeout'
			-t':alias of --timeout'
			--cdw2=':value for command dword 2'
			-2':alias for --cdw2'
			--cdw3=':value for command dword 3'
			-3':alias for --cdw3'
			--cdw10=':value for command dword 10'
			-4':alias for --cdw10'
			--cdw11=':value for command dword 11'
			-5':alias for --cdw11'
			--cdw12=':value for command dword 12'
			-6':alias for --cdw12'
			--cdw13=':value for command dword 13'
			-7':alias for --cdw13'
			--cdw14=':value for command dword 14'
			-8':alias for command dword 14'
			--cdw15=':value for command dword 15'
			-9':alias for command dword 15'
			--input-file=':defaults to stdin; input for write (send direction)'
			-i':alias for --input-file'
			--raw-binary':dump output in binary format'
			-b':alias for --raw-binary'
			--show-command':simply print command instead of sending it to <device>'
			-s':alias for --show-command'
			--dry-run':alias for --show-command'
			-d':alias for --show-command'
			--read':set dataflow direction to receive'
			-r':alias for --read'
			--write':set dataflow direction to send'
			-w':alias for --write'
			)
			_arguments '*:: :->subcmds'
			_describe -t commands "nvme admin-passthru options" _admin
			;;
		(io-passthru)
			local _io
			_io=(
			/dev/nvme':supply a device to use (required)'
			--opcode=':hexadecimal opcode to send (required)'
			-o':alias of --opcode'
			--flags=':command flags'
			-f':alias of --flags'
			--rsvd=':value for reserved field'
			-R':alias of --rsvd'
			--namespace-id=':value for nsid'
			-n':alias of --namespace-id'
			--data-len=':length for data buffer'
			-l':alias of --data-len'
			--metadata-len=':length for metadata buffer'
			-m':alias of --metadata-len'
			--timeout=':value for timeout'
			-t':alias of --timeout'
			--cdw2=':value for command dword 2'
			-2':alias for --cdw2'
			--cdw3=':value for command dword 3'
			-3':alias for --cdw3'
			--cdw10=':value for command dword 10'
			-4':alias for --cdw10'
			--cdw11=':value for command dword 11'
			-5':alias for --cdw11'
			--cdw12=':value for command dword 12'
			-6':alias for --cdw12'
			--cdw13=':value for command dword 13'
			-7':alias for --cdw13'
			--cdw14=':value for command dword 14'
			-8':alias for command dword 14'
			--cdw15=':value for command dword 15'
			-9':alias for command dword 15'
			--input-file=':defaults to stdin; input for write (send direction)'
			-i':alias for --input-file'
			--raw-binary':dump output in binary format'
			-b':alias for --raw-binary'
			--show-command':simply print command instead of sending it to <device>'
			-s':alias for --show-command'
			--dry-run':alias for --show-command'
			-d':alias for --show-command'
			--read':set dataflow direction to receive'
			-r':alias for --read'
			--write':set dataflow direction to send'
			-w':alias for --write'
			)
			_arguments '*:: :->subcmds'
			_describe -t commands "nvme io-passthru options" _io
			;;
		(security-send)
			local _ssend
			_ssend=(
			/dev/nvme':supply a device to use (required)'
			--file=':payload'
			-f':alias for --file'
			--secp=':security protocol as defined in SPC-4'
			-p':alias for --secp'
			--spsp=':send security-protocol-specific data as defined in SPC-4'
			-s':alias for --spsp'
			--tl=':transfer length as defined in SPC-4'
			-t':alias for --tl'
			)
			_arguments '*:: :->subcmds'
			_describe -t commands "nvme security-send options" _ssend
			;;
		(security-recv)
			local _srecv
			_srecv=(
			/dev/nvme':supply a device to use (required)'
			--secp=':security protocol as defined in SPC-4'
			-p':alias for --secp'
			--spsp=':send security-protocol-specific data as defined in SPC-4'
			-s':alias for --spsp'
			--size=':size of buffer (prints to stdout on successful recv)'
			-x':alias for --size'
			--al=':allocation length as defined in SPC-4'
			-a':alias for --al'
			--raw-binary':dump output in binary format'
			-b':alias for --raw-binary'
			)
			_arguments '*:: :->subcmds'
			_describe -t commands "nvme security-recv options" _srecv
			;;
		(resv-acquire)
			local _acq
			_acq=(
			/dev/nvme':supply a device to use (required)'
			--namespace-id=':<nsid> of namespace to try to reserve (required)'
			-n':alias for --namespace-id'
			--prkey=':pre-empt reservation key'
			-p':alias for --prkey'
			--rtype=':hexadecimal reservation type'
			-t':alias for --rtype'
			--racqa=':reservation acquire action'
			-a':alias for --racqa'
			--iekey=':ignore existing reservation key'
			-i':alias for --iekey'
			--crkey':current reservation key'
			-c':alias for --crkey'
			)
			_arguments '*:: :->subcmds'
			_describe -t commands "nvme resv-acquire options" _acq
			;;
		(resv-release)
			local _rel
			_rel=(
			/dev/nvme':supply a device to use (required)'
			--namespace-id=':nsid'
			-n':alias of --namespace-id'
			--rtype=':hexadecimal reservation type'
			-t':alias of --rtype'
			--rrela=':reservation release action'
			-a':alias of --rrela'
			--iekey':ignore existing reservation key'
			-i':alias of --iekey'
			)
			_arguments '*:: :->subcmds'
			_describe -t commands "nvme resv-release options" _rel
			;;
		(resv-report)
			local _rep
			_rep=(
			/dev/nvme':supply a device to use (required)'
			--namespace-id=':nsid'
			-n':alias of --namespace-id'
			--numd=':number of dwords of reservation status to xfer'
			-d':alias of --numd'
			--eds':request extended data structure'
			-e':alias of --eds'
			--raw-binary':dump output in binary format'
			-b':alias of --raw-binary'
			)
			_arguments '*:: :->subcmds'
			_describe -t commands "nvme resv-report options" _rep
			;;
		(resv-register)
			local _reg
			_reg=(
			/dev/nvme':supply a device to use (required)'
			--namespace-id=':nsid'
			-n':alias of --namespace-id'
			--crkey=':current reservation key'
			-c'alias of --crkey'
			--nrkey=':new reservation key'
			-k':alias of --nrkey'
			--cptpl=':change persistence through power loss setting'
			-p':alias for --cptpl'
			--rrega=':reservation registration action to perform'
			-r':alias for --rrega'
			--iekey':ignore existing reservation key'
			-i':alias for --iekey'
			)
			_arguments '*:: :->subcmds'
			_describe -t commands "nvme resv-register options" _reg
			;;
		(copy)
			local _copy
			_copy=(
			/dev/nvme':supply a device to use (required)'
			--sdlba=':64-bit addr of first destination logical block'
			-d':alias of --sdlba'
			--slbs=':64-bit addr of first block per range (comma-separated list)'
			-s':alias of --slbs'
			--blocks=':number of blocks per range (comma-separated list, zeroes-based values)'
			-b':alias of --blocks'
			--limited-retry':if included, controller should try less hard to retrieve data from media (if not included, all available data recovery means used)'
			-l':alias of --limited-retry'
			--force-unit-access':if included, the data shall be read from non-volatile media'
			-f':alias of --force-unit access'
			--prinfow=':protection information and check field (write part)'
			-p':alias of --prinfow'
			--prinfor=':protection information and check field (read part)'
			-P':alias of --prinfor'
			--ref-tag=':initial lba reference tag (write part)'
			-r':alias of --ref-tag'
			--expected-ref-tags=':expected lba reference tags (read part, comma-separated list)'
			-R':alias of --expected-ref-tags'
			--app-tag=':lba application tag (write part)'
			-a':alias of --app-tag'
			--expected-app-tags=':expected lba application tags (read part, comma-separated list)'
			-A':alias of --expected-app-tags'
			--app-tag-mask=':lba application tag mask (write part)'
			-m':alias of --app-tag-mask'
			--expected-app-tag-masks=':expected lba application tag masks (read part, comma-separated list)'
			-M':alias of --expected-app-tag-masks'
			--dir-type':directive type (write part)'
			-T':alias of --dir-type'
			--dir-spec':directive specific (write part)'
			-S':alias of --dir-spec'
			--format':source range entry format'
			-F':alias of --format'
			)
			_arguments '*:: :->subcmds'
                       _describe -t commands "nvme copy options" _copy
		       ;;
		(flush)
			local _flush
			_flush=(
			/dev/nvme':supply a device to use (required)'
			--namespace-id=':nsid'
			-n':alias of --namespace-id'
			)
			_arguments '*:: :->subcmds'
			_describe -t commands "nvme flush options" _flush
			;;
		(compare)
			local _comp
			_comp=(
			/dev/nvme':supply a device to use (required)'
			--start-block=':begin compare at this 64-bit LBA on device'
			-s':alias of --start-block'
			--block-count=':number of logical blocks on device to compare to local data'
			-c':alias of --block-count'
			--metadata-size=':number of bytes of metadata to compare'
			-y':alias of --metadata-size'
			--data-size=':size of local data buffer in bytes'
			-z':alias of --data-size'
			--data=':local data file to compare to blocks on device'
			-d':alias of --data'
			--prinfo=':protection information action and check field'
			-p':alias of --prinfo'
			--app-tag-mask=':application tag mask (for end to end PI)'
			-m':alias of --app-tag-mask'
			--app-tag=':application tag (for end to end PI)'
			-a':alias of --app-tag'
			--limited-retry':if included, controller should try less hard to retrieve data from media (if not included, all available data recovery means used)'
			-l':alias of --limited-retry'
			--force-unit-access':if included, the data shall be read from non-volatile media'
			-f':alias of --force-unit access'
			--show-command':show command instead of sending to device'
			-v':alias of --show-command'
			--dry-run':show command instead of sending to device'
			-w':alias of --show-command'
			)
			_arguments '*:: :->subcmds'
			_describe -t commands "nvme compare options" _comp
			;;
		(read)
			local _read
			_read=(
			/dev/nvme':supply a device to use (required)'
			--start-block=':64-bit address of the first logical block to be read'
			-s':alias of --start-block'
			--block-count=':number of logical blocks on device to read'
			-c':alias of --block-count'
			--data-size=':size of data to be read'
			-z':alias of --data-size'
			--metadata-size=':size of metadata to be read'
			-y':alias of --metadata-size'
			--ref-tag=':reference tag (for end to end PI)'
			-r':alias of --ref-tag'
			--data=':file into which data should be read (defaults to stdout)'
			-d':alias of --data'
			--prinfo=':protection information and check field'
			-p':alias of --prinfo'
			--app-tag-mask=':application tag mask (for end to end PI)'
			-m':alias of --app-tag-mask'
			--app-tag=':application tag (for end to end PI)'
			-a':alias of --app-tag'
			--limited-retry=':if included, controller should try less hard to retrieve data from media (if not included, all available data-recovery means used)'
			-l':alias of --limited-retry'
			--latency':latency statistics will be output following read'
			-t':alias of --latency'
			--force-unit-access':data read shall be returned from nonvolatile media before command completion is indicated'
			-f':alias of --force-unit-access'
			--show-command':show command instead of sending to device'
			-v':alias of --show-command'
			--dry-run':show command instead of sending to device'
			-w':alias of --show-command'
			)
			_arguments '*:: :->subcmds'
			_describe -t commands "nvme read options" _read
			;;
		(write)
			local _wr
			_wr=(
			/dev/nvme':supply a device to use (required)'
			--start-block=':64-bit address of the first logical block to be written'
			-s':alias of --start-block'
			--block-count=':number of logical blocks on device to write'
			-c':alias of --block-count'
			--data-size=':size of data to be written'
			-z':alias of --data-size'
			--metadata-size=':size of metadata to be written'
			-y':alias of --metadata-size'
			--ref-tag=':reference tag (for end to end PI)'
			-r':alias of --ref-tag'
			--data=':file from which data should be written to device (defaults to stdin)'
			-d':alias of --data'
			--prinfo=':protection information and check field'
			-p':alias of --prinfo'
			--app-tag-mask=':application tag mask (for end to end PI)'
			-m':alias of --app-tag-mask'
			--app-tag=':application tag (for end to end PI)'
			-a':alias of --app-tag'
			--limited-retry=':if included, controller should try less hard to send data to media (if not included, all available data-recovery means used)'
			-l':alias of --limited-retry'
			--latency':latency statistics will be output following write'
			-t':alias of --latency'
			--force-unit-access':data shall be written to nonvolatile media before command completion is indicated'
			-f':alias of --force-unit-access'
			--show-command':show command instead of sending to device'
			-v':alias of --show-command'
			--dry-run':show command instead of sending to device'
			-w':alias of --show-command'
			)
			_arguments '*:: :->subcmds'
			_describe -t commands "nvme write options" _wr
			;;
		(show-regs)
			local _shor
			_shor=(
			/dev/nvme':supply a device to use (required)'
			)
			_arguments '*:: :->subcmds'
			_describe -t commands "nvme show-regs options" _shor
			;;
		(fid-support-effects-log)
			local _fidsupporteffectslog
			_fidsupporteffectslog=(
			/dev/nvme':supply a device to use (required)'
			)
			_arguments '*:: :->subcmds'
			_describe -t commands "nvme fid-support-effects-log options" _fidsupporteffectslog
			;;
		(show-topology)
			local _showtopology
			_showtopology=(
			--output-format=':Output format: normal|json|binary'
			-o':alias for --output-format'
			--verbose':show infos verbosely'
			-v':alias of --verbose'
			--ranking=':Ranking order: namespace|ctrl'
			-r':alias for --ranking'
			)
			_arguments '*:: :->subcmds'
			_describe -t commands "nvme show-topology options" _showtopology
			;;
		(help)
			local _h
			_h=( id-ctrl id-ns list-ns id-iocs create-ns delete-ns attach-ns detach-ns
			     list-ctrl get-ns-id get-log fw-log smart-log error-log get-feature
			     set-feature format fw-activate fw-download admin-passthru io-passthru
			     security-send security-recv resv-acquire resv-register resv-release
			     resv-report flush compare read write copy show-regs persistent-event-log
				 pred-lat-event-agg-log nvm-id-ctrl endurance-event-agg-log lba-status-log
				 resv-notif-log capacity-mgmt id-domain boot-part-log fid-support-effects-log
				 supported-log-pages lockdown media-unit-stat-log id-ns-lba-format nvm-id-ns
				 nvm-id-ns-lba-format supported-cap-config-log show-topology
			   )
			_arguments '*:: :->subcmds'
			_describe -t commands "help: infos on a specific nvme command, or provide no option to see a synopsis of all nvme commands" _h
			;;
		(*)
			_files
			;;
		esac
		return
	fi

	_files
}
  070701015D6E43000081A4000003E80000006400000001642C0FB600007BDB000000000000004A00000000000000000000002D00000000nvme-cli/completions/bash-nvme-completion.sh  # SPDX-License-Identifier: GPL-2.0-or-later
#
# bash tab completion for the nvme command line utility
# (unfortunately, bash won't let me add descriptions to cmds)
# Kelly Kaoudis kelly.n.kaoudis at intel.com, Aug. 2015

nvme_list_opts () {
    local opts=""
	local compargs=""

	local nonopt_args=0
	for (( i=0; i < ${#words[@]}-1; i++ )); do
		if [[ ${words[i]} != -* ]]; then
			let nonopt_args+=1
		fi
	done

	if [ $nonopt_args -eq 2 ]; then
		opts="/dev/nvme* "
	fi

	opts+=" "

	# Listed here in the same order as in nvme-builtin.h
	case "$1" in
		"list")
		opts+=$NO_OPTS
			;;
		"list-subsys")
		opts=+=" --output-format= -o --verbose -v"
			;;
		"id-ctrl")
		opts+=" --raw-binary -b --human-readable -H \
			--vendor-specific -v --output-format= -o"
			;;
		"id-ns")
		opts+=" --namespace-id= -n --raw-binary -b \
			--human-readable -H --vendor-specific -v \
			--force -f --output-format= -o"
			;;
		"id-ns-granularity")
		opts+=" --output-format= -o"
			;;
		"id-ns-lba-format")
		opts+=" --lba-format-index= -i --uuid-index= -U \
			--verbose -v --output-format= -o"
			;;
		"list-ns")
		opts+=" --namespace-id= -n --al -a --csi= -y \
			--outputformat= -o"
			;;
		"list-ctrl")
		opts+=" --namespace-id= -n --cntid= -c \
			--output-format= -o"
			;;
		"cmdset-ind-id-ns")
		opts+=" --namespace-id= -n --raw-binary -b \
			--human-readable -H --output-format= -o"
			;;
		"nvm-id-ctrl")
		opts+=" --output-format= -o"
			;;
		"nvm-id-ns")
		opts+=" --namespace-id= -n --uuid-index= -U\
			--verbose -v --output-format= -o"
			;;
		"nvm-id-ns-lba-format")
		opts+=" --lba-format-index= -i --uuid-index= -U \
			--verbose -v --output-format= -o"
			;;
		"primary-ctrl-caps")
		opts+=" --output-format= -o --human-readable -H"
			;;
		"list-secondary")
		opts+=" --cntid= -c --namespace-id= n --num-entries -e \
			--output-format= -o"
			;;
		"ns-descs")
		opts+=" --namespace-id= -n --output-format -o --raw-binary -b"
			;;
		"id-nvmset")
		opts+=" --nvmeset-id= -i --output-format= -o"
			;;
		"id-uuid")
		opts+=" --output-format= -o --raw-binary -b --human-readable -H"
			;;
		"list-endgrp")
		opts+=" --endgrp-id= -i --output-format= -o"
			;;
		"id-iocs")
		opts+=" --controller-id= -c --output-format= -o --human-readable -H"
			;;
		"create-ns")
		opts+=" --nsze= -s --ncap= -c --flbas= -f \
			--dps= -d --nmic= -m --anagrp-id= -a --nvmset-id= -i \
			--block-size= -b --timeout= -t --csi= -y --lbstm= -l \
			--nsze-si= -S --ncap-si= -C"
			;;
		"delete-ns")
		opts+=" -namespace-id= -n --timeout= -t"
			;;
		"attach-ns")
		opts+=" --namespace-id= -n --controllers= -c"
			;;
		"detach-ns")
		opts+=" --namespace-id= -n --controllers= -c"
			;;
		"get-ns-id")
		opts+=$NO_OPTS
			;;
		"get-log")
		opts+=" --log-id= -i --log-len= -l --namespace-id= -n \
			--aen= -a --lpo= -o --lsp= -s --lsi= -S \
			--rae -r --uuid-index= -U --csi= -y --ot -O \
			--raw-binary -b"
			;;
		"supported-log-pages")
		opts+=" --output-format= -o --human-readable -H"
			;;
		"telemetry-log")
		opts+=" --output-file= -o --host-generate= -g \
			--controller-init -c --data-area= -d"
			;;
		"fw-log")
		opts+=" --raw-binary -b --output-format= -o"
			;;
		"changed-ns-list-log")
		opts+=" --output-format= -o --raw-binary -b"
			;;
		"smart-log")
		opts+=" --namespace-id= -n --raw-binary -b \
			--output-format= -o"
			;;
		"ana-log")
		opts+=" --output-format -o"
			;;
		"fid-support-effects-log")
		opts+=" --output-format -o"
			;;
		"error-log")
		opts+=" --raw-binary -b --log-entries= -e \
			--output-format= -o"
			;;
		"effects-log")
		opts+=" --output-format= -o --human-readable -H \
			--raw-binary -b"
			;;
		"endurance-log")
		opts+=" --output-format= -o --group-id -g"
			;;
		"predictable-lat-log")
		opts+=" --nvmset-id= -i --raw-binary -b \
			--output-format= -o"
			;;
		"pred-lat-event-agg-log")
		opts+=" --log-entries= -e  --rae -r \
			--raw-binary -b --output-format= -o"
			;;
		"persistent-event-log")
		opts+=" --action= -a --log-len= -l \
			--raw-binary -b --output-format= -o"
			;;
		"endurance-event-agg-log")
		opts+=" --log-entries= -e  --rae -r \
			--raw-binary -b --output-format= -o"
			;;
		"lba-status-log")
		opts+=" --rae -r --output-format= -o"
			;;
		"resv-notif-log")
		opts+=" --output-format= -o"
			;;
		"boot-part-log")
		opts+=" --lsp -s --output-file= -f \
			--output-format= -o"
			;;
		"media-unit-stat-log")
		opts+=" --dom-id= -d --output-format= -o \
			--raw-binary -b"
			;;
		"supported-cap-config-log")
		opts+=" --dom-id= -d --output-format= -o \
				--raw-binary -b"
			;;
		"get-feature")
		opts+=" --namespace-id= -n --feature-id= -f --sel= -s \
			--data-len= -l --cdw11= --c -uuid-index= -U --raw-binary -b \
			--human-readable -H"
			;;
		"device-self-test")
		opts+=" --namespace-id= -n --self-test-code= -s"
			;;
		"self-test-log")
		opts+=" --dst-entries= -e --output-format= -o \
			--verbose -v"
			;;
		"set-feature")
		opts+=" --namespace-id= -n --feature-id= -f --value= -v \
			--data-len= -l -data= -d --value= -v --save -s --uuid-index= -U \
			--cdw12= -c"
			;;
		"set-property")
		opts+=" --offset= -o --value= -v"
			;;
		"get-property")
		opts=+" --offset= -o --human-readable -H"
			;;
		"format")
		opts+=" --namespace-id= -n --timeout= -t --lbaf= -l \
			--ses= -s --pil= -p -pi= -i --ms= -m --reset -r"
			;;
		"fw-commit")
		opts+=" --slot= -s --action= -a --bpid= -b"
			;;
		"fw-download")
		opts+=" --fw= -f --xfer= -x --offset= -o"
			;;
		"capacity-mgmt")
		opts+=" --operation= -f --element-id= -i --cap-lower= -l \
				--cap-upper= -u"
			;;
		"lockdown")
		opts+=" --ofi= -O --ifc= -F --prhbt= -P \
			-scp= -S --uuid -U"
			;;
		"admin-passthru")
		opts+=" --opcode= -o --flags= -f --prefil= -p --rsvd= -R \
			--namespace-id= -n --data-len= -l --metadata-len= -m \
			--timeout= -t --cdw2= -2 --cdw3= -3 --cdw10= -4 \
			--cdw11= -5 --cdw12= -6 --cdw13= -7 --cdw14= -8 \
			--cdw15= -9 --input-file= -i --raw-binary -b \
			--show-command -s --dry-run -d --read -r --write -w \
			--latency -T"
			;;
		"io-passthru")
		opts+=" --opcode= -o --flags= -f --prefill= -p --rsvd= -R \
			--namespace-id= -n --data-len= -l --metadata-len= -m \
			--timeout= -t --cdw2= -2 --cdw3= -3 --cdw10= -4 \
			--cdw11= -5 --cdw12= -6 --cdw13= -7 --cdw14= -8 \
			--cdw15= -9 --input-file= -i --raw-binary -b \
			--show-command -s --dry-run -d --read -r --write -w \
			--latency -T"
			;;
		"security-send")
		opts+=" --namespace-id= -n --file= -f --nssf= -N --secp= -p \
			--spsp= -s --tl= -t"
			;;
		"security-recv")
		opts+=" --namespace-id= -n --size= -x --secp= -p --spsp= -s \
			--al= -t --raw-binary -b"
			;;
		"get-lba-status")
		opts+=" --namespace-id= -n --start-lba= -s --max-dw= -m \
			--action= -a --range-len= -l --timeout= -t \
			--output-format= -o"
			;;
		"resv-acquire")
		opts+=" --namespace-id= -n --crkey= -c --prkey= -p \
			--rtype= -t --racqa= -a --iekey= -i"
			;;
		"resv-register")
		opts+=" --namespace-id= -n --crkey= -c --nrkey= -k \
			--rrega= -r --cptpl= -p --iekey -i"
			;;
		"resv-release")
		opts+=" --namespace-id= -n --crkey -c --rtype= -t \
			--rrela= -a --iekey -i"
			;;
		"resv-report")
		opts+=" --namespace-id= -n --numd= -d --eds -e \
			--raw-binary= -b --output-format= -o"
			;;
		"dsm")
		opts+=" --namespace-id= -n --ctx-attrs= -a --blocks= -b\
			--slbs= -s --ad -d --idw -w --idr -r --cdw11= -c"
			;;
		"copy")
		opts+=" --namespace-id= -n --sdlba= -d --blocks= -b --slbs= -s \
			--limited-retry -l --force-unit-access -f \
			--prinfow= -p --prinfor= -P \
			--ref-tag= -r --expected-ref-tag= -R \
			--app-tag= -a --expected-app-tag= -A \
			--app-tag-mask= -m --expected-app-tag-mask= -M \
			--dir-type= -T --dir-spec= -S --format= -F"
			;;
		"flush")
		opts+=" --namespace-id= -n"
			;;
		"compare")
		opts+=" --start-block= -s --block-count= -c --data-size= -z \
			--metadata-size= -y --ref-tag= -r --data= -d \
			--metadata= -M --prinfo= -p --app-tag-mask= -m \
			--app-tag= -a --limited-retry -l \
			--force-unit-access -f --storage-tag-check -C \
			--dir-type= -T --dir-spec= -S --dsm= -D --show-command -v \
			--dry-run -w --latency -t"
			;;
		"read")
		opts+=" --start-block= -s --block-count= -c --data-size= -z \
			--metadata-size= -y --ref-tag= -r --data= -d \
			--metadata= -M --prinfo= -p --app-tag-mask= -m \
			--app-tag= -a --limited-retry -l \
			--force-unit-access -f --storage-tag-check -C \
			--dir-type= -T --dir-spec= -S --dsm= -D --show-command -v \
			--dry-run -w --latency -t"
			;;
		"write")
		opts+=" --start-block= -s --block-count= -c --data-size= -z \
			--metadata-size= -y --ref-tag= -r --data= -d \
			--metadata= -M --prinfo= -p --app-tag-mask= -m \
			--app-tag= -a --limited-retry -l \
			--force-unit-access -f --storage-tag-check -C \
			--dir-type= -T --dir-spec= -S --dsm= -D --show-command -v \
			--dry-run -w --latency -t"
			;;
		"write-zeroes")
		opts+=" --namespace-id= -n --start-block= -s \
			--block-count= -c --deac -d --limited-retry -l \
			--force-unit-access -f --prinfo= -p --ref-tag= -r \
			--app-tag-mask= -m --app-tag= -a \
			--storage-tag= -S --storage-tag-check -C"
			;;
		"write-uncor")
		opts+=" --namespace-id= -n --start-block= -s \
			--block-count= -c"
			;;
		"verify")
		opts+=" --namespace-id= -n --start-block= -s \
			--block-count= -c --limited-retry -l \
			--force-unit-access -f --prinfo= -p --ref-tag= -r \
			--app-tag= -a --app-tag-mask= -m \
			--storage-tag= -S --storage-tag-check -C"
			;;
		"sanitize")
		opts+=" --no-dealloc -d --oipbp -i --owpass= -n \
			--ause -u --sanact= -a --ovrpat= -p"
			;;
		"sanitize-log")
		opts+=" --rae -r --output-format= -o --human-readable -H \
			--raw-binary -b"
			;;
		"reset")
		opts+=$NO_OPTS
			;;
		"subsystem-reset")
		opts+=$NO_OPTS
			;;
		"ns-rescan")
		opts+=$NO_OPTS
			;;
		"show-regs")
		opts+=" --output-format= -o --human-readable -H"
			;;
		"discover")
		opts+=" --transport= -t -traddr= -a -trsvcid= -s \
			--host-traddr= -w --host-iface= -f \
			--hostnqn= -q --hostid -I --raw= -r \
			--raw= -r --device= -d --keep-alive-tmo= -k \
			--ctrl-loss-tmo= -l --fast-io-fail-tmo= -f \
			--tos= -T --hdr-digest= -g --data-digest -G \
			--nr-io-queues= -i --nr-write-queues= -W \
			--nr-poll-queues= -P --queue-size= -Q \
			--persistent -p --quiet -S \
			--output-format= -o"
			;;
		"connect-all")
		opts+=" --transport= -t -traddr= -a -trsvcid= -s \
			--host-traddr= -w --host-iface= -f \
			--hostnqn= -q --hostid -I --raw= -r \
			--raw= -r --device= -d --keep-alive-tmo= -k \
			--ctrl-loss-tmo= -l --fast-io-fail-tmo= -f \
			--tos= -T --hdr-digest= -g --data-digest -G \
			--nr-io-queues= -i --nr-write-queues= -W \
			--nr-poll-queues= -P --queue-size= -Q \
			--persistent -p --quiet -S \
			--output-format= -o"
			;;
		"connect")
		opts+=" --transport= -t --nqn= -n --traddr= -a --trsvcid -s \
			--hostnqn= -q --host-id= -I --nr-io-queues= -i \
			--nr-poll-queues= -P --queue-size= -Q \
			--keep-alive-tmo= -k --reconnect-delay= -r \
			--ctrl-loss-tmo= -l --fast-io-fail-tmo= -f \
			--tos= -T --duplicate-connect -D --disable-sqflow -d\
			--hdr-digest -g --data-digest -G --output-format= -o"
			;;
		"dim")
		opts+=" --task -t --nqn -n --device -d"
			;;
		"disconnect")
		opts+=" --nqn -n --device -d"
			;;
		"disconnect-all")
		opts+=$NO_OPTS
			;;
		"gen-hostnqn")
		opts+=$NO_OPTS
			;;
		"show-hostnqn")
		opts+=$NO_OPTS
			;;
		"dir-receive")
		opts+=" --namespace-id= -n --data-len= -l --raw-binary -b \
			--dir-type= -D --dir-spec= -S --dir-oper= -O \
			--req-resource= -r --human-readable -H"
			;;
		"dir-send")
		opts+=" --namespace-id= -n --data-len= -l --dir-type= -D \
			--target-dir= -T --dir-spec= -S --dir-oper= -O \
			--endir= -e --human-readable -H --raw-binary -b"
			;;
		"virt-mgmt")
		opts+=" --cntlid= -c --rt= -r --act= -a --nr= -n"
			;;
		"rpmb")
		opts+=" --cmd= -c --msgfile= -f --keyfile= -g \
			--key= -k --msg= -d --address= -o --blocks= -b \
			--target= -t"
			;;
		"show-topology")
		opts+=" --output-format= -o --verbose -v --ranking= -r"
			;;
		"version")
		opts+=$NO_OPTS
			;;
		"help")
		opts=$_cmds
			;;
	esac

	opts+=" -h --help"

	COMPREPLY+=( $( compgen $compargs -W "$opts" -- $cur ) )

	return 0
}

plugin_intel_opts () {
    local opts=""
	local compargs=""

	local nonopt_args=0
	for (( i=0; i < ${#words[@]}-1; i++ )); do
		if [[ ${words[i]} != -* ]]; then
			let nonopt_args+=1
		fi
	done

	if [ $nonopt_args -eq 3 ]; then
		opts="/dev/nvme* "
	fi

	opts+=" "

	case "$1" in
		"id-ctrl")
		opts+=" --raw-binary -b --human-readable -H \
			--vendor-specific -v --output-format= -o"
			;;
		"internal-log")
		opts+=" --log= -l --region= -r --nlognum= -m \
			--namespace-id= -n --output-file= -o \
			--verbose-nlog -v"
			;;
		"lat-stats")
		opts+=" --write -w --raw-binary -b --json -j"
			;;
		"set-bucket-thresholds")
		opts+=" --write -w --bucket-thresholds= -t"
			;;
		"lat-stats-tracking")
		opts+=" --enable -e --disable -d"
			;;
		"market-name")
		opts+=" --raw-binary -b"
			;;
		"smart-log-add")
		opts+=" --namespace-id= -n --raw-binary -b \
			--json -j"
			;;
		"temp-stats")
		opts+=" --raw-binary -b"
			;;
		"help")
		opts+=$NO_OPTS
			;;
	esac

	COMPREPLY+=( $( compgen $compargs -W "$opts" -- $cur ) )

	return 0
}

plugin_amzn_opts () {
    local opts=""
	local compargs=""

	local nonopt_args=0
	for (( i=0; i < ${#words[@]}-1; i++ )); do
		if [[ ${words[i]} != -* ]]; then
			let nonopt_args+=1
		fi
	done

	if [ $nonopt_args -eq 3 ]; then
		opts="/dev/nvme* "
	fi

	opts+=" "

	case "$1" in
		"id-ctrl")
		opts+=" --raw-binary -b --human-readable -H \
			--vendor-specific -v --output-format= -o"
			;;
		"help")
		opts+=$NO_OPTS
			;;
	esac

	COMPREPLY+=( $( compgen $compargs -W "$opts" -- $cur ) )

	return 0
}

plugin_memblaze_opts () {
    local opts=""
	local compargs=""

	local nonopt_args=0
	for (( i=0; i < ${#words[@]}-1; i++ )); do
		if [[ ${words[i]} != -* ]]; then
			let nonopt_args+=1
		fi
	done

	if [ $nonopt_args -eq 3 ]; then
		opts="/dev/nvme* "
	fi

	opts+=" "

	case "$1" in
		"smart-log-add")
		opts+=" --namespace-id= -n --raw-binary -b"
			;;
		"get-pm-status")
		opts+=$NO_OPTS
			;;
		"set-pm-status")
		opts+=" --value= -v --save -s"
			;;
		"select-download")
		opts+=" --fw= -f --select= -s"
			;;
		"lat-stats")
		opts+=" --enable -e --disable -d"
			;;
		"lat-stats-print")
		opts+=" --write -w"
			;;
		"lat-log")
		opts+=" --param= -p"
			;;
		"lat-log-print")
		opts+=$NO_OPTS
			;;
		"clear-error-log")
		opts+=$NO_OPTS
			;;
		"help")
		opts+=$NO_OPTS
			;;
	esac

	COMPREPLY+=( $( compgen $compargs -W "$opts" -- $cur ) )

	return 0
}

plugin_wdc_opts () {
    local opts=""
	local compargs=""

	local nonopt_args=0
	for (( i=0; i < ${#words[@]}-1; i++ )); do
		if [[ ${words[i]} != -* ]]; then
			let nonopt_args+=1
		fi
	done

	if [ $nonopt_args -eq 3 ]; then
		opts="/dev/nvme* "
	fi

	opts+=" "

	case "$1" in
		"cap-diag")
		opts+=" --output-file= -o --transfer-size= -s"
			;;
		"drive-log")
		opts+=" --output-file= -o"
			;;
		"get-crash-dump")
		opts+=" --output-file= -o"
			;;
		"get-pfail-dump")
		opts+=" --output-file= -o"
			;;
		"id-ctrl")
		opts+=" --raw-binary -b --human-readable -H \
			--vendor-specific -v --output-format= -o"
			;;
		"purge")
		opts+=$NO_OPTS
			;;
		"purge-monitor")
		opts+=$NO_OPTS
			;;
		"vs-internal-log")
		opts+=" --output-file= -o --transfer-size= -s --data-area= -d \
			--file-size= -f --offset= -e --type= -t --verbose -v"
			;;
		"vs-nand-stats")
		opts+=" --output-format= -o"
			;;
		"vs-smart-add-log")
		opts+=" --interval= -i --output-format= -o --log-page-version= -l \
			--log-page-mask= -p"
			;;
		"clear-pcie-correctable-errors")
		opts+=$NO_OPTS
			;;
		"drive-essentials")
		opts+=" --dir-name= -d"
			;;
		"get-drive-status")
		opts+=$NO_OPTS
			;;
		"clear-assert-dump")
		opts+=$NO_OPTS
			;;
		"drive-resize")
		opts+=" --size= -s"
			;;
		"vs-fw-activate-history")
		opts+=" --output-format= -o"
			;;
		"clear-fw-activate-history")
		opts+=$NO_OPTS
			;;
		"enc-get-log")
		opts+=" --output-file= -o --transfer-size= -s --log-id= -l"
			;;
		"vs-telemetry-controller-option")
		opts+=" --disable -d --enable -e --status -s"
			;;
		"vs-error-reason-identifier")
		opts+=" --log-id= -i --file= -o"
			;;
		"log-page-directory")
		opts+=" --output-format= -o"
			;;
		"namespace-resize")
		opts+=" --namespace-id= -n --op-option= -o"
			;;
		"vs-drive-info")
		opts+=" --output-format= -o"
			;;
		"vs-temperature-stats")
		opts+=" --output-format= -o"
			;;
		"capabilities")
		opts+=$NO_OPTS
			;;
		"cloud-SSD-plugin-version")
		opts+=$NO_OPTS
			;;
		"vs-pcie-stats")
		opts+=" --output-format= -o"
			;;
		"help")
		opts+=$NO_OPTS
			;;
	esac

	COMPREPLY+=( $( compgen $compargs -W "$opts" -- $cur ) )

	return 0
}

plugin_huawei_opts () {
    local opts=""
	local compargs=""

	local nonopt_args=0
	for (( i=0; i < ${#words[@]}-1; i++ )); do
		if [[ ${words[i]} != -* ]]; then
			let nonopt_args+=1
		fi
	done

	if [ $nonopt_args -eq 3 ]; then
		opts="/dev/nvme* "
	fi

	opts+=" "

	case "$1" in
		"list")
		opts+=" --output-format= -o"
			;;
		"id-ctrl")
		opts+=" --raw-binary -b --human-readable -H \
			--vendor-specific -v --output-format= -o"
			;;
		"help")
		opts+=$NO_OPTS
			;;
	esac

	COMPREPLY+=( $( compgen $compargs -W "$opts" -- $cur ) )

	return 0
}

plugin_toshiba_opts () {
    local opts=""
	local compargs=""

	local nonopt_args=0
	for (( i=0; i < ${#words[@]}-1; i++ )); do
		if [[ ${words[i]} != -* ]]; then
			let nonopt_args+=1
		fi
	done

	if [ $nonopt_args -eq 3 ]; then
		opts="/dev/nvme* "
	fi

	opts+=" "

	case "$1" in
		"vs-smart-add-log")
		opts+=" --namespace-id= -n --output-file= -o --log= -l"
			;;
		"vs-internal-log")
		opts+=" --output-file= -o --prev-log -p"
			;;
		"clear-pcie-correctable-errors")
		opts+=$NO_OPTS
			;;
		"help")
		opts+=$NO_OPTS
			;;
	esac

	COMPREPLY+=( $( compgen $compargs -W "$opts" -- $cur ) )

	return 0
}

plugin_micron_opts () {
    local opts=""
	local compargs=""

	local nonopt_args=0
	for (( i=0; i < ${#words[@]}-1; i++ )); do
		if [[ ${words[i]} != -* ]]; then
			let nonopt_args+=1
		fi
	done

	if [ $nonopt_args -eq 3 ]; then
		opts="/dev/nvme* "
	fi

	opts+=" "

	case "$1" in
		"select-download")
		opts+=" --fw= -f --select= -s"
			;;
		"vs-temperature-stats")
		opts+=" --format= -f"
			;;
		"vs-pcie-stats")
		opts+=" --format= -f"
			;;
		"clear-pcie-correctable-errors")
		opts+=$NO_OPTS
			;;
		"vs-internal-log")
		opts+=" --type= -t --package= -p --data_area= -d"
			;;
		"vs-telemetry-controller-option")
		opts+=" --option= -o --select= -s"
			;;
		"vs-nand-stats")
		opts+=" --format= -f"
			;;
		"vs-drive-info")
		opts+=" --format= -f"
			;;
		"plugin-version")
		opts+=$NO_OPTS
			;;
		"cloud-SSD-plugin-version")
		opts+=$NO_OPTS
			;;
		"log-page-directory")
		opts+=$NO_OPTS
			;;
		"vs-fw-activate-history")
		opts+=" --format= -f"
			;;
		"vs-error-reason-identifier")
		opts+=" --format= -f"
			;;
		"vs-smart-add-log")
		opts+=" --format= -f"
			;;
		"clear-fw-activate-history")
		opts+=$NO_OPTS
			;;
		"vs-smbus-option")
		opts+=" --option= -o --value= -v --save= -s"
			;;
		"help")
		opts+=$NO_OPTS
			;;
	esac

	COMPREPLY+=( $( compgen $compargs -W "$opts" -- $cur ) )

	return 0
}

plugin_seagate_opts () {
    local opts=""
	local compargs=""

	local nonopt_args=0
	for (( i=0; i < ${#words[@]}-1; i++ )); do
		if [[ ${words[i]} != -* ]]; then
			let nonopt_args+=1
		fi
	done

	if [ $nonopt_args -eq 3 ]; then
		opts="/dev/nvme* "
	fi

	opts+=" "

	case "$1" in
		"vs-temperature-stats")
		opts+=" --output-format= -o"
			;;
		"vs-log-page-sup")
		opts+=" --output-format= -o"
			;;
		"vs-smart-add-log")
		opts+=" --output-format= -o"
			;;
		"vs-pcie-stats")
		opts+=" --output-format= -o"
			;;
		"clear-pcie-correctable-errors")
		opts+=" --save -s"
			;;
		"get-host-tele")
		opts+=" --namespace-id= -n --log-specific= -i --raw-binary -b"
			;;
		"get-ctrl-tele")
		opts+=" --namespace-id= -n --raw-binary -b"
			;;
		"vs-internal-log")
		opts+=" --namespace-id= -n --dump-file= -f"
			;;
		"plugin-version")
		opts+=$NO_OPTS
			;;
		"help")
		opts+=""
			;;
	esac

	COMPREPLY+=( $( compgen $compargs -W "$opts" -- $cur ) )

	return 0
}

plugin_virtium_opts () {
    local opts=""
	local compargs=""

	local nonopt_args=0
	for (( i=0; i < ${#words[@]}-1; i++ )); do
		if [[ ${words[i]} != -* ]]; then
			let nonopt_args+=1
		fi
	done

	if [ $nonopt_args -eq 3 ]; then
		opts="/dev/nvme* "
	fi

	opts+=" "

	case "$1" in
		"save-smart-to-vtview-log")
		opts+=" --run-time= -r --freq= -f --output-file= -o --test-name= -n"
			;;
		"show-identify")
		opts+=$NO_OPTS
			;;
		"help")
		opts+=$NO_OPTS
			;;
	esac

	COMPREPLY+=( $( compgen $compargs -W "$opts" -- $cur ) )

	return 0
}

plugin_shannon_opts () {
    local opts=""
	local compargs=""

	local nonopt_args=0
	for (( i=0; i < ${#words[@]}-1; i++ )); do
		if [[ ${words[i]} != -* ]]; then
			let nonopt_args+=1
		fi
	done

	if [ $nonopt_args -eq 3 ]; then
		opts="/dev/nvme* "
	fi

	opts+=" "

	case "$1" in
		"smart-log-add")
		opts+=" --namespace-id= -n --raw-binary -b"
			;;
		"get-feature-add")
		opts+=" --namespace-id= -n --feature-id -f --sel= -s \
			--data-len= -l --raw-binary -b --cdw11= -c --human-readable -H"
			;;
		"set-feature-add")
		opts+=" --namespace-id= -n --feature-id= -f --value= -v \
			--data-len= -l --data= -d --save -s"
			;;
		"id-ctrl")
		opts+=" --raw-binary -b --human-readable -H \
			--vendor-specific -v --output-format= -o"
			;;
		"help")
		opts+=$NO_OPTS
			;;
	esac

	COMPREPLY+=( $( compgen $compargs -W "$opts" -- $cur ) )

	return 0
}

plugin_dera_opts () {
    local opts=""
	local compargs=""

	local nonopt_args=0
	for (( i=0; i < ${#words[@]}-1; i++ )); do
		if [[ ${words[i]} != -* ]]; then
			let nonopt_args+=1
		fi
	done

	if [ $nonopt_args -eq 3 ]; then
		opts="/dev/nvme* "
	fi

	opts+=" "

	case "$1" in
		"smart-log-add")
		opts+=$NO_OPTS
			;;
		"help")
		opts+=$NO_OPTS
			;;
	esac

	COMPREPLY+=( $( compgen $compargs -W "$opts" -- $cur ) )

	return 0
}

plugin_sfx_opts () {
    local opts=""
	local compargs=""

	local nonopt_args=0
	for (( i=0; i < ${#words[@]}-1; i++ )); do
		if [[ ${words[i]} != -* ]]; then
			let nonopt_args+=1
		fi
	done

	if [ $nonopt_args -eq 3 ]; then
		opts="/dev/nvme* "
	fi

	opts+=" "

	case "$1" in
		"smart-log-add")
		opts+=" --namespace-id= -n --raw-binary -b --json -j"
			;;
		"lat-stats")
		opts+=" --write -w --raw-binary -b"
			;;
		"get-bad-block")
		opts+=$NO_OPTS
			;;
		"query-cap")
		opts+=" --raw-binary --json"
			;;
		"change-cap")
		opts+=" --cap= -c --cap-byte= -z --force -f --raw-binary -b --json -j"
			;;
		"set-feature")
		opts+=" --namespace-id= -n --feature-id= -f --value= -v --force -s"
			;;
		"get-feature")
		opts+=" --namespace-id= -n --feature-id -f"
			;;
		"help")
		opts+=$NO_OPTS
			;;
	esac

	COMPREPLY+=( $( compgen $compargs -W "$opts" -- $cur ) )

	return 0
}

plugin_transcend_opts () {
    local opts=""
	local compargs=""

	local nonopt_args=0
	for (( i=0; i < ${#words[@]}-1; i++ )); do
		if [[ ${words[i]} != -* ]]; then
			let nonopt_args+=1
		fi
	done

	if [ $nonopt_args -eq 3 ]; then
		opts="/dev/nvme* "
	fi

	opts+=" "

	case "$1" in
		"healthvalue")
		opts+=$NO_OPTS
			;;
		"badblock")
		opts+=$NO_OPTS
			;;
		"help")
		opts+=$NO_OPTS
			;;
	esac

	COMPREPLY+=( $( compgen $compargs -W "$opts" -- $cur ) )

	return 0
}

plugin_zns_opts () {
    local opts=""
	local compargs=""

	local nonopt_args=0
	for (( i=0; i < ${#words[@]}-1; i++ )); do
		if [[ ${words[i]} != -* ]]; then
			let nonopt_args+=1
		fi
	done

	if [ $nonopt_args -eq 3 ]; then
		opts="/dev/nvme* "
	fi

	opts+=" "

	case "$1" in
		"id-ctrl")
		opts+=" --raw-binary -b --human-readable -H \
			--vendor-specific -v --output-format= -o"
			;;
		"id-ns")
		opts+=" --namespace-id= -n --vendor-specific -v \
			--output-format= -o --human-readable -H"
			;;
		"zone-mgmt-recv")
		opts+=" --output-format= -o --namespace-id= -n \
			--start-lba= -s --zra= -z --zrasf= -S --partial -p \
			--data-len= -l"
			;;
		"zone-mgmt-send")
		opts+=" --namespace-id= -n --start-lba= -s --zsaso -o \
			--select-all -a --zsa= -z --data-len= -l \
			--data= -d --timeout= -t"
			;;
		"report-zones")
		opts+=" --namespace-id= -n --start-lba= -s \
			--descs= -d --state= -S --output-format= -o \
			--human-readable -H --extended -e --partial -p"
			;;
		"close-zone")
		opts+=" --namespace-id= -n --start-lba= -s \
			--select-all -a --timeout= -t"
			;;
		"finish-zone")
		opts+=" --namespace-id= -n --start-lba= -s \
			--select-all -a --timeout= -t"
			;;
		"open-zone")
		opts+=" --namespace-id= -n --start-lba= -s \
			--select-all -a --timeout= -t --zrwa -r"
			;;
		"reset-zone")
		opts+=" --namespace-id= -n --start-lba= -s \
			--select-all -a --timeout= -t"
			;;
		"offline-zone")
		opts+=" --namespace-id= -n --start-lba= -s \
			--select-all -a --timeout= -t"
			;;
		"set-zone-desc")
		opts+=" --namespace-id= -n --start-lba= -s \
			--data= -d --timeout= -t  --zrwa -r"
			;;
		"flush-zone")
		opts+=" --namespace-id= -n --last-lba= -l --timeout= -t"
			;;
		"zone-append")
		opts+=" --namespace-id= -n --zslba= -s --data-size= -z \
			--metadata-size= -y --data= -d --metadata= -M \
			--limited-retry -l --force-unit-access -f --ref-tag= -r
			--app-tag-mask= -m --app-tag= -a --prinfo= -p \
			--piremap -P --latency -t"
			;;
		"changed-zone-list")
		opts+=" --namespace-id= -n --output-format= -o --rae -r"
			;;
		"help")
		opts+=$NO_OPTS
			;;
	esac

	COMPREPLY+=( $( compgen $compargs -W "$opts" -- $cur ) )

	return 0
}

plugin_nvidia_opts () {
    local opts=""
	local compargs=""

	local nonopt_args=0
	for (( i=0; i < ${#words[@]}-1; i++ )); do
		if [[ ${words[i]} != -* ]]; then
			let nonopt_args+=1
		fi
	done

	if [ $nonopt_args -eq 3 ]; then
		opts="/dev/nvme* "
	fi

	opts+=" "

	case "$1" in
		"id-ctrl")
		opts+=" --raw-binary -b --human-readable -H \
			--vendor-specific -v --output-format= -o"
			;;
		"help")
		opts+=$NO_OPTS
			;;
	esac

	COMPREPLY+=( $( compgen $compargs -W "$opts" -- $cur ) )

	return 0
}

plugin_ymtc_opts () {
    local opts=""
	local compargs=""

	local nonopt_args=0
	for (( i=0; i < ${#words[@]}-1; i++ )); do
		if [[ ${words[i]} != -* ]]; then
			let nonopt_args+=1
		fi
	done

	if [ $nonopt_args -eq 3 ]; then
		opts="/dev/nvme* "
	fi

	opts+=" "

	case "$1" in
		"smart-log-add")
		opts+=" --namespace-id= -n --raw-binary -b"
			;;
		"help")
		opts+=$NO_OPTS
			;;
	esac

	COMPREPLY+=( $( compgen $compargs -W "$opts" -- $cur ) )

	return 0
}

plugin_inspur_opts () {
    local opts=""
	local compargs=""

	local nonopt_args=0
	for (( i=0; i < ${#words[@]}-1; i++ )); do
		if [[ ${words[i]} != -* ]]; then
			let nonopt_args+=1
		fi
	done

	if [ $nonopt_args -eq 3 ]; then
		opts="/dev/nvme* "
	fi

	opts+=" "

	case "$1" in
		"nvme-vendor-log")
		opts+=$NO_OPTS
			;;
		"help")
		opts+=$NO_OPTS
			;;
	esac

	COMPREPLY+=( $( compgen $compargs -W "$opts" -- $cur ) )

	return 0
}

_nvme_subcmds () {
	local cur prev words cword
	_init_completion || return

	# Constant to indicate command has no options
	NO_OPTS=""

	# Associative array of plugins and associated subcommands
	# Order here is same as PLUGIN_OBJS in Makefile
	typeset -Ar _plugin_subcmds=(
		[intel]="id-ctrl internal-log lat-stats \
			set-bucket-thresholds lat-stats-tracking \
			market-name smart-log-add temp-stats"
		[amzn]="id-ctrl"
		[memblaze]="smart-log-add get-pm-status set-pm-status \
			select-download lat-stats lat-stats-print lat-log \
			lat-log-print clear-error-log"
		[wdc]="cap-diag drive-log get-crash-dump get-pfail-dump \
			id-ctrl purge purge-monitor vs-internal-log \
			vs-nand-stats vs-smart-add-log clear-pcie-correctable-errors \
			drive-essentials get-drive-status clear-assert-dump \
			drive-resize vs-fw-activate-history clear-fw-activate-history \
			enc-get-log vs-telemetry-controller-option \
			vs-error-reason-identifier log-page-directory \
			namespace-resize vs-drive-info vs-temperature-stats \
			capabilities cloud-SSD-plugin-version vs-pcie-stats"
		[huawei]="list id-ctrl"
		[netapp]="smdevices ontapdevices"
		[toshiba]="vs-smart-add-log vs-internal-log \
			clear-pcie-correctable-errors"
		[micron]="select-download vs-temperature-stats vs-pcie-stats \
			clear-pcie-correctable-errors vs-internal-log \
			vs-telemetry-controller-option vs-nand-stats \
			vs-drive-info plugin-version cloud-SSD-plugin-version \
			log-page-directory vs-fw-activate-history \
			vs-error-reason-identifier vs-smart-add-log \
			clear-fw-activate-history vs-smbus-option"
		[seagate]="vs-temperature-stats vs-log-page-sup \
			vs-smart-add-log vs-pcie-stats clear-pcie-correctable-errors \
			get-host-tele get-ctrl-tele vs-internal-log \
			plugin-version"
		[virtium]="save-smart-to-vtview-log show-identify"
		[shannon]="smart-log-add get-feature-add set-feature-add id-ctrl"
		[dera]="smart-log-add"
		[sfx]="smart-log-add lat-stats get-bad-block query-cap \
			change-cap set-feature get-feature"
		[transcend]="healthvalue badblock"
		[zns]="id-ctrl id-ns zone-mgmt-recv \
			zone-mgmt-send report-zones close-zone \
			finish-zone open-zone reset-zone offline-zone \
			set-zone-desc zone-append changed-zone-list"
		[nvidia]="id-ctrl"
		[ymtc]="smart-log-add"
		[inspur]="nvme-vendor-log"
	)

	# Associative array mapping plugins to coresponding option completions
	typeset -Ar _plugin_funcs=(
		[intel]="plugin_intel_opts"
		[amzn]="plugin_amzn_opts"
		[memblaze]="plugin_memblaze_opts"
		[wdc]="plugin_wdc_opts"
		[huawei]="plugin_huawei_opts"
		[toshiba]="plugin_toshiba_opts"
		[micron]="plugin_micron_opts"
		[seagate]="plugin_seagate_opts"
		[virtium]="plugin_virtium_opts"
		[shannon]="plugin_shannon_opts"
		[dera]="plugin_dera_opts"
		[sfx]="plugin_sfx_opts"
		[transcend]="plugin_transcend_opts"
		[zns]="plugin_zns_opts"
		[nvidia]="plugin_nvidia_opts"
		[ymtc]="plugin_ymtc_opts"
		[inspur]="plugin_inspur_opts"
	)

	# Top level commands
	_cmds="list list-subsys id-ctrl id-ns \
		id-ns-granularity list-ns list-ctrl \
		id-ns-lba-format nvm-id-ns nvm-id-ns-lba-format \
		nvm-id-ctrl primary-ctrl-caps list-secondary \
		ns-descs id-nvmset id-uuid id-iocs create-ns \
		delete-ns get-ns-id get-log telemetry-log \
		fw-log changed-ns-list-log smart-log ana-log \
		error-log effects-log endurance-log \
		predictable-lat-log pred-lat-event-agg-log \
		persistent-event-log endurance-agg-log \
		lba-status-log resv-notif-log get-feature \
		device-self-test self-test-log set-feature \
		set-property get-property format fw-commit \
		fw-download admin-passthru io-passthru \
		security-send security-recv get-lba-status \
		resv-acquire resv-register resv-release \
		resv-report dsm copy flush compare read \
		write write-zeros write-uncor verify \
		sanitize sanitize-log reset subsystem-reset \
		ns-rescan show-regs discover connect-all \
		connect disconnect disconnect-all gen-hostnqn \
		show-hostnqn dir-receive dir-send virt-mgmt \
		rpmb boot-part-log fid-support-effects-log \
		supported-log-pages lockdown media-unit-stat-log \
		supported-cap-config-log dim show-topology list-endgrp"

	# Add plugins:
	for plugin in "${!_plugin_subcmds[@]}"; do
		_cmds+=" $plugin"
	done

	cmds+=" version help"

	if [[ ${#words[*]} -lt 3 ]]; then
		COMPREPLY+=( $(compgen -W "$_cmds" -- $cur ) )
	else
		for subcmd in "${!_plugin_subcmds[@]}"; do
			if [[ ${words[1]} == $subcmd ]]; then
				if [[ ${#words[*]} -lt 4 ]]; then
					COMPREPLY+=( $(compgen -W "${_plugin_subcmds[$subcmd]}" -- $cur ) )
				else
					func=${_plugin_funcs[$subcmd]}
					$func ${words[2]} $prev
				fi
				return 0
			fi
		done

		nvme_list_opts ${words[1]} $prev
	fi

	return 0
}

complete -o default -F _nvme_subcmds nvme
 070701015D6BEB000081A4000003E80000006400000001642C0FB5000000B7000000000000004A00000000000000000000001F00000000nvme-cli/etc/discovery.conf.in    # Used for extracting default parameters for discovery
#
# Example:
# --transport=<trtype> --traddr=<traddr> --trsvcid=<trsvcid> --host-traddr=<host-traddr> --host-iface=<host-iface>
 070701015D6BFF000041ED000003E80000006400000001642C0FB500000000000000000000004A00000000000000000000002600000000nvme-cli/nvmf-autoconnect/dracut-conf 070701015D6C01000041ED000003E80000006400000001646E2B2D00000000000000000000004A00000000000000000000002200000000nvme-cli/nvmf-autoconnect/systemd 070701015D6C06000041ED000003E80000006400000001646F204000000000000000000000004A00000000000000000000002500000000nvme-cli/nvmf-autoconnect/udev-rules  070701015D6C00000081A4000003E80000006400000001642C0FB50000003C000000000000004A00000000000000000000004200000000nvme-cli/nvmf-autoconnect/dracut-conf/70-nvmf-autoconnect.conf.in install_items+=" @UDEVRULESDIR@/70-nvmf-autoconnect.rules "
070701015D6C04000081A4000003E80000006400000001642C0FB50000003C000000000000004A00000000000000000000003900000000nvme-cli/nvmf-autoconnect/systemd/nvmf-connect.target.in  [Unit]
Description=All instances of nvmf-autoconnect daemon
070701015D6E52000081A4000003E80000006400000001642C0FB60000016A000000000000004A00000000000000000000004500000000nvme-cli/nvmf-autoconnect/systemd/nvmefc-boot-connections.service.in  [Unit]
Description=Auto-connect to subsystems on FC-NVME devices found during boot
ConditionPathExists=/sys/class/fc/fc_udev_device/nvme_discovery
DefaultDependencies=no
After=systemd-udevd.service
Before=local-fs-pre.target

[Service]
Type=oneshot
ExecStart=/bin/sh -c "echo add > /sys/class/fc/fc_udev_device/nvme_discovery"

[Install]
WantedBy=default.target
  07070101755AEE000081A4000003E800000064000000016442733700000282000000000000004A00000000000000000000003B00000000nvme-cli/nvmf-autoconnect/systemd/nvmf-connect@.service.in    #
# Unit file used by 70-nvmf-autoconnect.rules.
#

[Unit]
Description=NVMf auto-connect scan upon nvme discovery controller Events
DefaultDependencies=no
After=systemd-udevd.service
Before=local-fs-pre.target
PartOf=nvmf-connect.target
Requires=nvmf-connect.target

[Service]
# https://en.opensuse.org/openSUSE:Security_Features#Systemd_hardening_effort
ProtectSystem=full
ProtectHome=true
ProtectHostname=true
ProtectKernelModules=true
ProtectKernelLogs=true
ProtectControlGroups=true
RestrictRealtime=true
Type=simple
Environment="CONNECT_ARGS=%i"
ExecStart=/bin/sh -c "@SBINDIR@/nvme connect-all --quiet `/bin/echo -e '${CONNECT_ARGS}'`"
  070701018A4037000081A4000003E80000006400000001646E2B2D00000172000000000000004A00000000000000000000003E00000000nvme-cli/nvmf-autoconnect/systemd/nvmf-autoconnect.service.in [Unit]
Description=Connect NVMe-oF subsystems automatically during boot
ConditionPathExists=|@SYSCONFDIR@/nvme/config.json
ConditionPathExists=|@SYSCONFDIR@/nvme/discovery.conf
After=network-online.target
Before=remote-fs-pre.target

[Service]
Type=oneshot
ExecStartPre=/sbin/modprobe nvme-fabrics
ExecStart=@SBINDIR@/nvme connect-all

[Install]
WantedBy=default.target
  070701018A4038000081A4000003E80000006400000001646E2B2D00000197000000000000004A00000000000000000000003F00000000nvme-cli/nvmf-autoconnect/systemd/nvmf-connect-nbft.service.in    # This unit is meant to be started by network management software
# after a network interface defined in the NBFT gets set up
[Unit]
Description=Connect NBFT-defined NVMe-oF subsystems automatically
ConditionPathExists=|/sys/firmware/acpi/tables/NBFT
ConditionPathExists=|/sys/firmware/acpi/tables/NBFT1

[Service]
Type=oneshot
ExecStartPre=/sbin/modprobe nvme-fabrics
ExecStart=@SBINDIR@/nvme connect-nbft
 070701015D6C07000081A4000003E80000006400000001642C0FB5000007AF000000000000004A00000000000000000000004200000000nvme-cli/nvmf-autoconnect/udev-rules/70-nvmf-autoconnect.rules.in #
# nvmf-autoconnect.rules:
#   Handles udev events which invoke automatically scan via discovery
#   controller and connect to elements in the discovery log.
#
#
ACTION!="change", GOTO="autoconnect_end"

# For backwards compatibility. Make sure HOST_IFACE is not an empty string.
ENV{NVME_HOST_IFACE}=="", ENV{NVME_HOST_IFACE}="none"

# Events from persistent discovery controllers or nvme-fc transport events
# NVME_AEN:
#   type 0x2 (NOTICE) info 0xf0 (DISCOVERY_LOG_CHANGE) log-page-id 0x70 (DISCOVERY_LOG_PAGE)
ACTION=="change", SUBSYSTEM=="nvme", ENV{NVME_AEN}=="0x70f002",\
  ENV{NVME_TRTYPE}=="*", ENV{NVME_TRADDR}=="*", \
  ENV{NVME_TRSVCID}=="*", ENV{NVME_HOST_TRADDR}=="*", ENV{NVME_HOST_IFACE}=="*", \
  RUN+="@SYSTEMCTL@ --no-block start nvmf-connect@--device=$kernel\t--transport=$env{NVME_TRTYPE}\t--traddr=$env{NVME_TRADDR}\t--trsvcid=$env{NVME_TRSVCID}\t--host-traddr=$env{NVME_HOST_TRADDR}\t--host-iface=$env{NVME_HOST_IFACE}.service"

# nvme-fc transport generated events (old-style for compatibility)
ACTION=="change", SUBSYSTEM=="fc", ENV{FC_EVENT}=="nvmediscovery", \
  ENV{NVMEFC_HOST_TRADDR}=="*",  ENV{NVMEFC_TRADDR}=="*", \
  RUN+="@SYSTEMCTL@ --no-block start nvmf-connect@--device=none\t--transport=fc\t--traddr=$env{NVMEFC_TRADDR}\t--trsvcid=none\t--host-traddr=$env{NVMEFC_HOST_TRADDR}.service"

# A discovery controller just (re)connected, re-read the discovery log change to
# check if there were any changes since it was last connected.
ACTION=="change", SUBSYSTEM=="nvme", ENV{NVME_EVENT}=="rediscover", ATTR{cntrltype}=="discovery", \
  ENV{NVME_TRTYPE}=="*", ENV{NVME_TRADDR}=="*", \
  ENV{NVME_TRSVCID}=="*", ENV{NVME_HOST_TRADDR}=="*", ENV{NVME_HOST_IFACE}=="*", \
  RUN+="@SYSTEMCTL@ --no-block start nvmf-connect@--device=$kernel\t--transport=$env{NVME_TRTYPE}\t--traddr=$env{NVME_TRADDR}\t--trsvcid=$env{NVME_TRSVCID}\t--host-traddr=$env{NVME_HOST_TRADDR}\t--host-iface=$env{NVME_HOST_IFACE}.service"

LABEL="autoconnect_end"
 070701015D6C08000081A4000003E80000006400000001642C0FB500000114000000000000004A00000000000000000000004600000000nvme-cli/nvmf-autoconnect/udev-rules/71-nvmf-iopolicy-netapp.rules.in # Enable round-robin for NetApp ONTAP and NetApp E-Series
ACTION=="add", SUBSYSTEM=="nvme-subsystem", ATTR{model}=="NetApp ONTAP Controller", ATTR{iopolicy}="round-robin"
ACTION=="add", SUBSYSTEM=="nvme-subsystem", ATTR{model}=="NetApp E-Series", ATTR{iopolicy}="round-robin"
070701018A89FD000081A4000003E80000006400000001646F204000000076000000000000004A00000000000000000000004500000000nvme-cli/nvmf-autoconnect/udev-rules/65-persistent-net-nbft.rules.in  # Avoid renaming nbft$X interfaces
SUBSYSTEM=="net", ACTION!="remove", ENV{INTERFACE}=="nbft*", NAME:="%E{INTERFACE}"
  070701015D6C0C000041ED000003E80000006400000001642C0FB500000000000000000000004A00000000000000000000001600000000nvme-cli/plugins/amzn 070701015D6C0F000041ED000003E80000006400000001642C0FB500000000000000000000004A00000000000000000000001600000000nvme-cli/plugins/dell 070701015D6C12000041ED000003E80000006400000001642C0FB500000000000000000000004A00000000000000000000001600000000nvme-cli/plugins/dera 070701015D6C15000041ED000003E80000006400000001642C0FB600000000000000000000004A00000000000000000000001500000000nvme-cli/plugins/fdp  070701015D6C18000041ED000003E80000006400000001642C0FB500000000000000000000004A00000000000000000000001800000000nvme-cli/plugins/huawei   070701015D6C1B000041ED000003E80000006400000001642C0FB600000000000000000000004A00000000000000000000001A00000000nvme-cli/plugins/innogrit 070701015D6C1F000041ED000003E80000006400000001642C0FB600000000000000000000004A00000000000000000000001800000000nvme-cli/plugins/inspur   070701015D6C23000041ED000003E80000006400000001642C0FB600000000000000000000004A00000000000000000000001700000000nvme-cli/plugins/intel    070701015D6C26000041ED000003E80000006400000001642C0FB600000000000000000000004A00000000000000000000001A00000000nvme-cli/plugins/memblaze 070701015D6C2B000041ED000003E80000006400000001642C0FB600000000000000000000004A00000000000000000000001800000000nvme-cli/plugins/micron   070701015D6C2E000041ED000003E80000006400000001642C0FB500000000000000000000004A00000000000000000000001800000000nvme-cli/plugins/netapp   070701015D6C31000041ED000003E80000006400000001642C0FB500000000000000000000004A00000000000000000000001800000000nvme-cli/plugins/nvidia   070701015D6C34000041ED000003E80000006400000001642C0FB600000000000000000000004A00000000000000000000001500000000nvme-cli/plugins/ocp  070701015D6C3C000041ED000003E80000006400000001642C0FB500000000000000000000004A00000000000000000000001B00000000nvme-cli/plugins/scaleflux    070701015D6C3F000041ED000003E80000006400000001642C0FB500000000000000000000004A00000000000000000000001900000000nvme-cli/plugins/seagate  070701015D6C43000041ED000003E80000006400000001642C0FB500000000000000000000004A00000000000000000000001900000000nvme-cli/plugins/shannon  070701015D6C46000041ED000003E80000006400000001642C0FB600000000000000000000004A00000000000000000000001A00000000nvme-cli/plugins/solidigm 070701015D6C5F000041ED000003E80000006400000001642C0FB500000000000000000000004A00000000000000000000001900000000nvme-cli/plugins/toshiba  070701015D6C62000041ED000003E80000006400000001642C0FB500000000000000000000004A00000000000000000000001B00000000nvme-cli/plugins/transcend    070701015D6C65000041ED000003E80000006400000001642C0FB500000000000000000000004A00000000000000000000001900000000nvme-cli/plugins/virtium  070701015D6C68000041ED000003E80000006400000001642C0FB600000000000000000000004A00000000000000000000001500000000nvme-cli/plugins/wdc  070701015D6C6D000041ED000003E80000006400000001642C0FB500000000000000000000004A00000000000000000000001600000000nvme-cli/plugins/ymtc 070701015D6C71000041ED000003E80000006400000001642C0FB500000000000000000000004A00000000000000000000001500000000nvme-cli/plugins/zns  07070101755AF0000041ED000003E800000064000000016442733700000000000000000000004A00000000000000000000001600000000nvme-cli/plugins/nbft 07070101755AEF000081A4000003E8000000640000000164427337000003C6000000000000004A00000000000000000000001D00000000nvme-cli/plugins/meson.build  # SPDX-License-Identifier: GPL-2.0-or-later

if json_c_dep.found()
  sources += [
    'plugins/amzn/amzn-nvme.c',
    'plugins/dell/dell-nvme.c',
    'plugins/dera/dera-nvme.c',
    'plugins/fdp/fdp.c',
    'plugins/huawei/huawei-nvme.c',
    'plugins/innogrit/innogrit-nvme.c',
    'plugins/inspur/inspur-nvme.c',
    'plugins/intel/intel-nvme.c',
    'plugins/memblaze/memblaze-nvme.c',
    'plugins/micron/micron-nvme.c',
    'plugins/nbft/nbft-plugin.c',
    'plugins/netapp/netapp-nvme.c',
    'plugins/nvidia/nvidia-nvme.c',
    'plugins/scaleflux/sfx-nvme.c',
    'plugins/seagate/seagate-nvme.c',
    'plugins/shannon/shannon-nvme.c',
    'plugins/solidigm/solidigm-nvme.c',
    'plugins/toshiba/toshiba-nvme.c',
    'plugins/transcend/transcend-nvme.c',
    'plugins/virtium/virtium-nvme.c',
    'plugins/wdc/wdc-nvme.c',
    'plugins/wdc/wdc-utils.c',
    'plugins/ymtc/ymtc-nvme.c',
    'plugins/zns/zns.c',
  ]
  subdir('solidigm')
  subdir('ocp')
endif
  070701015D6C0D000081A4000003E80000006400000001642C0FB500000424000000000000004A00000000000000000000002200000000nvme-cli/plugins/amzn/amzn-nvme.c // SPDX-License-Identifier: GPL-2.0-or-later
#include <fcntl.h>
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <inttypes.h>

#include "common.h"
#include "nvme.h"
#include "libnvme.h"
#include "plugin.h"

#define CREATE_CMD
#include "amzn-nvme.h"

struct nvme_vu_id_ctrl_field {
	__u8			bdev[32];
	__u8			reserved0[992];
};

static void json_amzn_id_ctrl(struct nvme_vu_id_ctrl_field *id,
	char *bdev,
	struct json_object *root)
{
	json_object_add_value_string(root, "bdev", bdev);
}

static void amzn_id_ctrl(__u8 *vs, struct json_object *root)
{
	struct nvme_vu_id_ctrl_field* id = (struct nvme_vu_id_ctrl_field *)vs;

	char bdev[32] = { 0 };

	int len = 0;
	while (len < 31) {
		if (id->bdev[++len] == ' ') {
			break;
		}
	}
	snprintf(bdev, len+1, "%s", id->bdev);

	if (root) {
		json_amzn_id_ctrl(id, bdev, root);
		return;
	}

	printf("bdev      : %s\n", bdev);
}

static int id_ctrl(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	return __id_ctrl(argc, argv, cmd, plugin, amzn_id_ctrl);
}
070701015D6C0E000081A4000003E80000006400000001642C0FB50000018B000000000000004A00000000000000000000002200000000nvme-cli/plugins/amzn/amzn-nvme.h /* SPDX-License-Identifier: GPL-2.0-or-later */
#undef CMD_INC_FILE
#define CMD_INC_FILE plugins/amzn/amzn-nvme

#if !defined(AMZN_NVME) || defined(CMD_HEADER_MULTI_READ)
#define AMZN_NVME

#include "cmd.h"

PLUGIN(NAME("amzn", "Amazon vendor specific extensions", NVME_VERSION),
	COMMAND_LIST(
		ENTRY("id-ctrl", "Send NVMe Identify Controller", id_ctrl)
	)
);

#endif

#include "define_cmd.h"
 070701015D6C10000081A4000003E80000006400000001642C0FB500000563000000000000004A00000000000000000000002200000000nvme-cli/plugins/dell/dell-nvme.c // SPDX-License-Identifier: GPL-2.0-or-later
// Copyright Â© 2022 Dell Inc. or its subsidiaries. All Rights Reserved.
#include <fcntl.h>
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <inttypes.h>

#include "common.h"
#include "nvme.h"
#include "libnvme.h"
#include "plugin.h"

#define CREATE_CMD
#include "dell-nvme.h"

#define ARRAY_NAME_LEN 80

struct nvme_vu_id_ctrl_field {
	__u16		dell_mjr;
	__u16		dell_mnr;
	__u16		dell_ter;
	__u8		reserved0[1018];
};

static void dell_id_ctrl(__u8 *vs, struct json_object *root)
{
	struct nvme_vu_id_ctrl_field *id = (struct nvme_vu_id_ctrl_field *)vs;
	char array_ver[16] = { 0 };
	char array_name[ARRAY_NAME_LEN + 1] = {0};

	snprintf(array_ver, sizeof(array_ver), "0x%04x%04x%04x",
		 le16_to_cpu(id->dell_mjr),
		 le16_to_cpu(id->dell_mnr),
		 le16_to_cpu(id->dell_ter));

	memcpy(array_name, vs + sizeof(array_ver), ARRAY_NAME_LEN);

	if (root) {
		json_object_add_value_string(root, "array_name", strlen(array_name) > 1 ? array_name : "NULL");
		json_object_add_value_string(root, "array_ver", array_ver);
		return;
	}

	printf("array_name : %s\n", strlen(array_name) > 1 ? array_name : "NULL");
	printf("array_ver  : %s\n", array_ver);
}

static int id_ctrl(int argc, char **argv, struct command *cmd,
		struct plugin *plugin)
{
	return __id_ctrl(argc, argv, cmd, plugin, dell_id_ctrl);
}
 070701015D6C11000081A4000003E80000006400000001642C0FB500000189000000000000004A00000000000000000000002200000000nvme-cli/plugins/dell/dell-nvme.h /* SPDX-License-Identifier: GPL-2.0-or-later */
#undef CMD_INC_FILE
#define CMD_INC_FILE plugins/dell/dell-nvme

#if !defined(DELL_NVME) || defined(CMD_HEADER_MULTI_READ)
#define DELL_NVME

#include "cmd.h"

PLUGIN(NAME("dell", "DELL vendor specific extensions", NVME_VERSION),
	COMMAND_LIST(
		ENTRY("id-ctrl", "Send NVMe Identify Controller", id_ctrl)
	)
);

#endif

#include "define_cmd.h"
   070701015D6C13000081A4000003E80000006400000001642C0FB5000019B8000000000000004A00000000000000000000002200000000nvme-cli/plugins/dera/dera-nvme.c // SPDX-License-Identifier: GPL-2.0-or-later
#include <fcntl.h>
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <dirent.h> 
#include <ctype.h> 
#include <sys/stat.h>
#include <sys/time.h>

#include "nvme.h"
#include "libnvme.h"
#include "plugin.h"
#include "linux/types.h"
#include "nvme-print.h"

#define CREATE_CMD
#include "dera-nvme.h"

static int char4_to_int(__u8 *data)
{
	int i;
	int result = 0;

	for (i = 0; i < 4; i++) {
		result = result << 8;
		result += data[3 - i];
	}
	return result;
}

struct nvme_dera_smart_info_log
{
	__u8 quick_rebuild_cnt0[4]; 
	__u8 quick_rebuild_cnt1[4]; 
	__u8 full_rebuild_cnt0[4];
	__u8 full_rebuild_cnt1[4];
	__u8 raw_rebuild_cnt0[4];
	__u8 raw_rebuild_cnt1[4];
	__u8 cap_aged;		
	__u8 cap_aged_ratio;
	__u8 cap_status;	
	__u8 cap_voltage[4];
	__u8 cap_charge_ctrl_en;	 
	__u8 cap_charge_ctrl_val[2];
	__u8 cap_charge_max_thr[2]; 
	__u8 cap_charge_min_thr[2]; 
	__u8 dev_status; 
	__u8 dev_status_up;
	__u8 nand_erase_err_cnt[4]; 
	__u8 nand_program_err_cnt[4]; 
	__u8 ddra_1bit_err[2];
	__u8 ddra_2bit_err[2];
	__u8 ddrb_1bit_err[2];
	__u8 ddrb_2bit_err[2];
	__u8 ddr_err_bit;
	__u8 pcie_corr_err[2];
	__u8 pcie_uncorr_err[2];
	__u8 pcie_fatal_err[2];
	__u8 pcie_err_bit;
	__u8 power_level; 
	__u8 current_power[2]; 
	__u8 nand_init_fail[2]; 
	__u8 fw_loader_version[8]; 
	__u8 uefi_driver_version[8]; 
	__u8 gpio0_err[2]; 
	__u8 gpio5_err[2]; 
	__u8 gpio_err_bit[2]; 
	__u8 rebuild_percent; 
	__u8 pcie_volt_status; 
	__u8 current_pcie_volt[2]; 
	__u8 init_pcie_volt_thr[2]; 
	__u8 rt_pcie_volt_thr[2]; 
	__u8 init_pcie_volt_low[2]; 
	__u8 rt_pcie_volt_low[2]; 
	__u8 temp_sensor_abnormal[2];
	__u8 nand_read_retry_fail_cnt[4]; 
	__u8 fw_slot_version[8]; 
	__u8 rsved[395];
};

enum dera_device_status
{
	DEVICE_STATUS_READY = 0x00,
	DEVICE_STATUS_QUICK_REBUILDING = 0x01,
	DEVICE_STATUS_FULL_REBUILDING = 0x02,
	DEVICE_STATUS_RAW_REBUILDING = 0x03,
	DEVICE_STATUS_CARD_READ_ONLY = 0x04,
	DEVICE_STATUS_FATAL_ERROR = 0x05,
	DEVICE_STATUS_BUSY = 0x06,
	DEVICE_STAUTS_LOW_LEVEL_FORMAT = 0x07,
	DEVICE_STAUTS_FW_COMMITING = 0x08,
	DEVICE_STAUTS__OVER_TEMPRATURE = 0x09,
};

static int nvme_dera_get_device_status(int fd, enum dera_device_status *result)
{
	int err = 0;

	struct nvme_passthru_cmd cmd = {
		.opcode = 0xc0, 
		.addr = (__u64)(uintptr_t)NULL,
		.data_len = 0,
		.cdw10 = 0,
		.cdw12 = 0x104, 
	};

	err = nvme_submit_admin_passthru(fd, &cmd, NULL);
	if (!err && result) {
		*result = cmd.result;
	}

	return err;
}

static int get_status(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	struct nvme_dera_smart_info_log log;
	enum dera_device_status state = DEVICE_STATUS_FATAL_ERROR;
	char *desc = "Get the Dera device status";
	struct nvme_dev *dev;
	int err;

	OPT_ARGS(opts) = {
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		return err;
	
	err = nvme_get_log_simple(dev_fd(dev), 0xc0, sizeof(log), &log);
	if (err) {
		goto exit;
	}

	const char* dev_status[] = {
		"Normal",
		"Quick Rebuilding",
		"Full Rebuilding",
		"Raw Rebuilding",
		"Card Read Only",
		"Fatal Error",
		"Busy",
		"Low Level Format",
		"Firmware Committing",
		"Over Temperature" };

	const char *volt_status[] = {
		"Normal",
		"Initial Low",
		"Runtime Low",
	};

	err = nvme_dera_get_device_status(dev_fd(dev), &state);
	if (!err){
		if (state > 0 && state < 4){
			printf("device_status                       : %s %d%% completed\n", dev_status[state], log.rebuild_percent);
		}
		else{
			printf("device_status                       : %s\n", dev_status[state]);
		}
	}
	else {
		goto exit;
	}
	
	printf("dev_status_up                       : %s\n", dev_status[log.dev_status_up]);
	printf("cap_aged                            : %s\n", log.cap_aged == 1 ? "True" : "False");
	printf("cap_aged_ratio                      : %d%%\n", log.cap_aged_ratio < 100 ? log.cap_aged_ratio : 100);
	printf("cap_status                          : %s\n", log.cap_status == 0 ? "Normal" : (log.cap_status == 1 ? "Warning" : "Critical"));
	printf("cap_voltage                         : %d mV\n", char4_to_int(log.cap_voltage));
	printf("nand_erase_err_cnt                  : %d\n", char4_to_int(log.nand_erase_err_cnt));
	printf("nand_program_err_cnt                : %d\n", char4_to_int(log.nand_program_err_cnt));
	printf("ddra_1bit_err                       : %d\n", log.ddra_1bit_err[1] << 8 | log.ddra_1bit_err[0]);
	printf("ddra_2bit_err                       : %d\n", log.ddra_2bit_err[1] << 8 | log.ddra_2bit_err[0]);
	printf("ddrb_1bit_err                       : %d\n", log.ddrb_1bit_err[1] << 8 | log.ddrb_1bit_err[0]);
	printf("ddrb_2bit_err                       : %d\n", log.ddrb_2bit_err[1] << 8 | log.ddrb_2bit_err[0]);
	printf("ddr_err_bit                         : %d\n", log.ddr_err_bit);
	printf("pcie_corr_err                       : %d\n", log.pcie_corr_err[1] << 8 | log.pcie_corr_err[0]);
	printf("pcie_uncorr_err                     : %d\n", log.pcie_uncorr_err[1] << 8 | log.pcie_uncorr_err[0]);
	printf("pcie_fatal_err                      : %d\n", log.pcie_fatal_err[1] << 8 | log.pcie_fatal_err[0]);
	printf("power_level                         : %d W\n", log.power_level);
	printf("current_power                       : %d mW\n", log.current_power[1] << 8 | log.current_power[0]);
	printf("nand_init_fail                      : %d\n", log.nand_init_fail[1] << 8 | log.nand_init_fail[0]);
	printf("fw_loader_version                   : %.*s\n", 8, log.fw_loader_version);
	printf("uefi_driver_version                 : %.*s\n", 8, log.uefi_driver_version);

	if (log.pcie_volt_status < sizeof(volt_status) / sizeof(const char *)){
		printf("pcie_volt_status                    : %s\n", volt_status[log.pcie_volt_status]);
	}
	else{
		printf("pcie_volt_status                    : Unknown\n");
	}

	printf("current_pcie_volt                   : %d mV\n", log.current_pcie_volt[1] << 8 | log.current_pcie_volt[0]);
	printf("init_pcie_volt_low_cnt              : %d\n", log.init_pcie_volt_low[1] << 8 | log.init_pcie_volt_low[0]);
	printf("rt_pcie_volt_low_cnt                : %d\n", log.rt_pcie_volt_low[1] << 8 | log.rt_pcie_volt_low[0]);
	printf("temp_sensor_abnormal_cnt            : %d\n", log.temp_sensor_abnormal[1] << 8 | log.temp_sensor_abnormal[0]);
	printf("nand_read_retry_fail_cnt            : %d\n", char4_to_int(log.nand_read_retry_fail_cnt));
	printf("fw_slot_version                     : %.*s\n", 8, log.fw_slot_version);

exit:
	if (err > 0)
		nvme_show_status(err);

	dev_close(dev);
	return err;
}

070701015D6C14000081A4000003E80000006400000001642C0FB50000019D000000000000004A00000000000000000000002200000000nvme-cli/plugins/dera/dera-nvme.h /* SPDX-License-Identifier: GPL-2.0-or-later */
#undef CMD_INC_FILE
#define CMD_INC_FILE plugins/dera/dera-nvme

#if !defined(DERA_NVME) || defined(CMD_HEADER_MULTI_READ)
#define DERA_NVME

#include "cmd.h"

PLUGIN(NAME("dera", "Dera vendor specific extensions", NVME_VERSION),
	COMMAND_LIST(
		ENTRY("smart-log-add", "Retrieve Dera SMART Log, show it", get_status, "stat")
	)
);

#endif

#include "define_cmd.h"
   070701015D6C17000081A4000003E80000006400000001642C0FB50000030C000000000000004A00000000000000000000001B00000000nvme-cli/plugins/fdp/fdp.h    /* SPDX-License-Identifier: GPL-2.0-or-later */
#undef CMD_INC_FILE
#define CMD_INC_FILE plugins/fdp/fdp

#if !defined(FDP_NVME) || defined(CMD_HEADER_MULTI_READ)
#define FDP_NVME

#include "cmd.h"

PLUGIN(NAME("fdp", "Manage Flexible Data Placement enabled devices", NVME_VERSION),
	COMMAND_LIST(
		ENTRY("configs", "List configurations", fdp_configs)
		ENTRY("usage", "Show reclaim unit handle usage", fdp_usage)
		ENTRY("stats", "Show statistics", fdp_stats)
		ENTRY("events", "List events affecting reclaim units and media usage", fdp_events)
		ENTRY("status", "Show reclaim unit handle status", fdp_status)
		ENTRY("update", "Update a reclaim unit handle", fdp_update)
		ENTRY("set-events", "Enabled or disable events", fdp_set_events)
	)
);

#endif

#include "define_cmd.h"
070701015D6E54000081A4000003E80000006400000001642C0FB600002CBE000000000000004A00000000000000000000001B00000000nvme-cli/plugins/fdp/fdp.c    // SPDX-License-Identifier: GPL-2.0-or-later

#include <fcntl.h>
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <inttypes.h>
#include <linux/fs.h>
#include <sys/stat.h>

#include "common.h"
#include "nvme.h"
#include "libnvme.h"
#include "nvme-print.h"

#define CREATE_CMD
#include "fdp.h"

static int fdp_configs(int argc, char **argv, struct command *cmd,
		struct plugin *plugin)
{
	const char *desc = "Get Flexible Data Placement Configurations";
	const char *egid = "Endurance group identifier";
	const char *human_readable = "show log in readable format";
	const char *raw = "use binary output";

	enum nvme_print_flags flags;
	struct nvme_dev *dev;
	struct nvme_fdp_config_log hdr;
	void *log = NULL;
	int err;

	struct config {
		__u16	egid;
		char	*output_format;
		bool	human_readable;
		bool	raw_binary;
	};

	struct config cfg = {
		.egid		= 0,
		.output_format	= "normal",
		.raw_binary	= false,
	};

	OPT_ARGS(opts) = {
		OPT_UINT("endgrp-id",      'e', &cfg.egid,           egid),
		OPT_FMT("output-format",   'o', &cfg.output_format,  output_format),
		OPT_FLAG("raw-binary",     'b', &cfg.raw_binary,     raw),
		OPT_FLAG("human-readable", 'H', &cfg.human_readable, human_readable),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		return err;

	err = flags = validate_output_format(cfg.output_format);
	if (flags < 0)
		goto out;

	if (cfg.raw_binary)
		flags = BINARY;

	if (cfg.human_readable)
		flags |= VERBOSE;

	if (!cfg.egid) {
		fprintf(stderr, "endurance group identifier required\n");
		err = -EINVAL;
		goto out;
	}

	err = nvme_get_log_fdp_configurations(dev->direct.fd, cfg.egid, 0,
			sizeof(hdr), &hdr);
	if (err) {
		nvme_show_status(errno);
		goto out;
	}

	log = malloc(hdr.size);
	if (!log) {
		err = -ENOMEM;
		goto out;
	}

	err = nvme_get_log_fdp_configurations(dev->direct.fd, cfg.egid, 0,
			hdr.size, log);
	if (err) {
		nvme_show_status(errno);
		goto out;
	}

	nvme_show_fdp_configs(log, hdr.size, flags);

out:
	dev_close(dev);
	free(log);

	return err;
}

static int fdp_usage(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	const char *desc = "Get Flexible Data Placement Reclaim Unit Handle Usage";
	const char *egid = "Endurance group identifier";
	const char *raw = "use binary output";

	enum nvme_print_flags flags;
	struct nvme_dev *dev;
	struct nvme_fdp_ruhu_log hdr;
	size_t len;
	void *log = NULL;
	int err;

	struct config {
		__u16	egid;
		char	*output_format;
		bool	raw_binary;
	};

	struct config cfg = {
		.egid      = 0,
		.output_format	= "normal",
		.raw_binary	= false,
	};

	OPT_ARGS(opts) = {
		OPT_UINT("endgrp-id",    'e', &cfg.egid,          egid),
		OPT_FMT("output-format", 'o', &cfg.output_format, output_format),
		OPT_FLAG("raw-binary",   'b', &cfg.raw_binary,    raw),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		return err;

	err = flags = validate_output_format(cfg.output_format);
	if (flags < 0)
		goto out;

	if (cfg.raw_binary)
		flags = BINARY;

	err = nvme_get_log_reclaim_unit_handle_usage(dev->direct.fd, cfg.egid,
			0, sizeof(hdr), &hdr);
	if (err) {
		nvme_show_status(err);
		goto out;
	}

	len = sizeof(hdr) + le16_to_cpu(hdr.nruh) * sizeof(struct nvme_fdp_ruhu_desc);
	log = malloc(len);
	if (!log) {
		err = -ENOMEM;
		goto out;
	}

	err = nvme_get_log_reclaim_unit_handle_usage(dev->direct.fd, cfg.egid,
			0, len, log);
	if (err) {
		nvme_show_status(err);
		goto out;
	}

	nvme_show_fdp_usage(log, len, flags);

out:
	dev_close(dev);
	free(log);

	return err;
}

static int fdp_stats(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	const char *desc = "Get Flexible Data Placement Statistics";
	const char *egid = "Endurance group identifier";
	const char *raw = "use binary output";

	enum nvme_print_flags flags;
	struct nvme_dev *dev;
	struct nvme_fdp_stats_log stats;
	int err;

	struct config {
		__u16	egid;
		char	*output_format;
		bool	raw_binary;
	};

	struct config cfg = {
		.egid      = 0,
		.output_format	= "normal",
		.raw_binary	= false,
	};

	OPT_ARGS(opts) = {
		OPT_UINT("endgrp-id",    'e', &cfg.egid,          egid),
		OPT_FMT("output-format", 'o', &cfg.output_format, output_format),
		OPT_FLAG("raw-binary",   'b', &cfg.raw_binary,    raw),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		return err;

	err = flags = validate_output_format(cfg.output_format);
	if (flags < 0)
		goto out;

	if (cfg.raw_binary)
		flags = BINARY;

	memset(&stats, 0x0, sizeof(stats));

	err = nvme_get_log_fdp_stats(dev->direct.fd, cfg.egid, 0, sizeof(stats), &stats);
	if (err) {
		nvme_show_status(err);
		goto out;
	}

	nvme_show_fdp_stats(&stats, flags);

out:
	dev_close(dev);

	return err;
}

static int fdp_events(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	const char *desc = "Get Flexible Data Placement Events";
	const char *egid = "Endurance group identifier";
	const char *host_events = "Get host events";
	const char *raw = "use binary output";

	enum nvme_print_flags flags;
	struct nvme_dev *dev;
	struct nvme_fdp_events_log events;
	int err;

	struct config {
		__u16	egid;
		bool	host_events;
		char	*output_format;
		bool	raw_binary;
	};

	struct config cfg = {
		.egid      = 0,
		.host_events = false,
		.output_format	= "normal",
		.raw_binary	= false,
	};

	OPT_ARGS(opts) = {
		OPT_UINT("endgrp-id",    'e', &cfg.egid,          egid),
		OPT_FLAG("host-events",  'E', &cfg.host_events,   host_events),
		OPT_FMT("output-format", 'o', &cfg.output_format, output_format),
		OPT_FLAG("raw-binary",   'b', &cfg.raw_binary,    raw),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		return err;

	err = flags = validate_output_format(cfg.output_format);
	if (flags < 0)
		goto out;

	if (cfg.raw_binary)
		flags = BINARY;

	memset(&events, 0x0, sizeof(events));

	err = nvme_get_log_fdp_events(dev->direct.fd, cfg.egid,
			cfg.host_events, 0, sizeof(events), &events);
	if (err) {
		nvme_show_status(err);
		goto out;
	}

	nvme_show_fdp_events(&events, flags);

out:
	dev_close(dev);

	return err;
}

static int fdp_status(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	const char *desc = "Reclaim Unit Handle Status";
	const char *namespace_id = "Namespace identifier";
	const char *raw = "use binary output";

	enum nvme_print_flags flags;
	struct nvme_dev *dev;
	struct nvme_fdp_ruh_status hdr;
	size_t len;
	void *buf = NULL;
	int err = -1;

	struct config {
		__u32	namespace_id;
		char	*output_format;
		bool	raw_binary;
	};

	struct config cfg = {
		.output_format	= "normal",
		.raw_binary	= false,
	};

	OPT_ARGS(opts) = {
		OPT_UINT("namespace-id", 'n', &cfg.namespace_id,  namespace_id),
		OPT_FMT("output-format", 'o', &cfg.output_format, output_format),
		OPT_FLAG("raw-binary",   'b', &cfg.raw_binary,    raw),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		return err;

	err = flags = validate_output_format(cfg.output_format);
	if (flags < 0)
		goto out;

	if (cfg.raw_binary)
		flags = BINARY;

	if (!cfg.namespace_id) {
		err = nvme_get_nsid(dev_fd(dev), &cfg.namespace_id);
		if (err < 0) {
			perror("get-namespace-id");
			goto out;
		}
	}

	err = nvme_fdp_reclaim_unit_handle_status(dev_fd(dev),
			cfg.namespace_id, sizeof(hdr), &hdr);
	if (err) {
		nvme_show_status(err);
		goto out;
	}

	len = sizeof(struct nvme_fdp_ruh_status) +
		le16_to_cpu(hdr.nruhsd) * sizeof(struct nvme_fdp_ruh_status_desc);
	buf = malloc(len);
	if (!buf) {
		err = -ENOMEM;
		goto out;
	}

	err = nvme_fdp_reclaim_unit_handle_status(dev_fd(dev),
			cfg.namespace_id, len, buf);
	if (err) {
		nvme_show_status(err);
		goto out;
	}

	nvme_show_fdp_ruh_status(buf, len, flags);

out:
	free(buf);
	dev_close(dev);

	return err;
}

static int fdp_update(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	const char *desc = "Reclaim Unit Handle Update";
	const char *namespace_id = "Namespace identifier";
	const char *_pids = "Comma-separated list of placement identifiers to update";

	struct nvme_dev *dev;
	unsigned short pids[256];
	__u16 buf[256];
	int npids;
	int err = -1;

	struct config {
		__u32 namespace_id;
		char *pids;
	};

	struct config cfg = {
		.pids = "",
	};

	OPT_ARGS(opts) = {
		OPT_UINT("namespace-id",  'n', &cfg.namespace_id,   namespace_id),
		OPT_LIST("pids",          'p', &cfg.pids,           _pids),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		return err;

	npids = argconfig_parse_comma_sep_array_short(cfg.pids, pids, ARRAY_SIZE(pids));
	if (npids < 0) {
		perror("could not parse pids");
		err = -EINVAL;
		goto out;
	} else if (npids == 0) {
		fprintf(stderr, "no placement identifiers set\n");
		err = -EINVAL;
		goto out;
	}

	if (!cfg.namespace_id) {
		err = nvme_get_nsid(dev_fd(dev), &cfg.namespace_id);
		if (err < 0) {
			perror("get-namespace-id");
			goto out;
		}
	}

	for (unsigned int i = 0; i < npids; i++) {
		buf[i] = cpu_to_le16(pids[i]);
	}

	err = nvme_fdp_reclaim_unit_handle_update(dev_fd(dev), cfg.namespace_id, npids, buf);
	if (err) {
		nvme_show_status(err);
		goto out;
	}

	printf("update: Success\n");

out:
	dev_close(dev);

	return err;
}

static int fdp_set_events(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	const char *desc = "Enable or disable FDP events";
	const char *namespace_id = "Namespace identifier";
	const char *enable = "Enable/disable event";
	const char *event_types = "Comma-separated list of event types";
	const char *ph = "Placement Handle";

	struct nvme_dev *dev;
	int err = -1;
	unsigned short evts[255];
	int nev;
	__u8 buf[255];

	struct config {
		__u32	namespace_id;
		__u16   ph;
		char    *event_types;
		bool    enable;
	};

	struct config cfg = {
		.enable = false,
	};

	OPT_ARGS(opts) = {
		OPT_UINT("namespace-id",     'n', &cfg.namespace_id, namespace_id),
		OPT_SHRT("placement-handle", 'p', &cfg.ph,           ph),
		OPT_FLAG("enable",           'e', &cfg.enable,       enable),
		OPT_LIST("event-types",      't', &cfg.event_types,  event_types),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		return err;

	nev = argconfig_parse_comma_sep_array_short(cfg.event_types, evts, ARRAY_SIZE(evts));
	if (nev < 0) {
		perror("could not parse event types");
		err = -EINVAL;
		goto out;
	} else if (nev == 0) {
		fprintf(stderr, "no event types set\n");
		err = -EINVAL;
		goto out;
	} else if (nev > 255) {
		fprintf(stderr, "too many event types (max 255)\n");
		err = -EINVAL;
		goto out;
	}

	if (!cfg.namespace_id) {
		err = nvme_get_nsid(dev_fd(dev), &cfg.namespace_id);
		if (err < 0) {
			if (errno != ENOTTY) {
				fprintf(stderr, "get-namespace-id: %s\n", nvme_strerror(errno));
				goto out;
			}

			cfg.namespace_id = NVME_NSID_ALL;
		}
	}

	for (unsigned int i = 0; i < nev; i++) {
		buf[i] = (__u8)evts[i];
	}

	struct nvme_set_features_args args = {
		.args_size	= sizeof(args),
		.fd		= dev_fd(dev),
		.fid		= NVME_FEAT_FID_FDP_EVENTS,
		.nsid		= cfg.namespace_id,
		.cdw11		= (nev << 16) | cfg.ph,
		.cdw12		= cfg.enable ? 0x1 : 0x0,
		.data_len	= sizeof(buf),
		.data		= buf,
		.timeout	= NVME_DEFAULT_IOCTL_TIMEOUT,
		.result		= NULL,
	};

	err = nvme_set_features(&args);
	if (err) {
		nvme_show_status(err);
		goto out;
	}

	printf("set-events: Success\n");

out:
	dev_close(dev);

	return err;
}
  070701015D6C19000081A4000003E80000006400000001642C0FB500002795000000000000004A00000000000000000000002600000000nvme-cli/plugins/huawei/huawei-nvme.c // SPDX-License-Identifier: GPL-2.0-or-later
/*
 * Copyright (c) 2017-2019 Huawei Corporation or its affiliates.
 *
 * 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.
 *
 *   Author:  Zou Ming<zouming.zouming@huawei.com>,
 *				Yang Feng <philip.yang@huawei.com>
 */
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <inttypes.h>
#include <errno.h>
#include <limits.h>
#include <fcntl.h>
#include <unistd.h>
#include <dirent.h>

#include <sys/stat.h>

#include "common.h"
#include "nvme.h"
#include "libnvme.h"
#include "plugin.h"

#include "util/suffix.h"

#define CREATE_CMD
#include "huawei-nvme.h"

#define HW_SSD_PCI_VENDOR_ID 0x19E5
#define ARRAY_NAME_LEN 80
#define NS_NAME_LEN    40

#define MIN_ARRAY_NAME_LEN 16
#define MIN_NS_NAME_LEN 16

struct huawei_list_item {
	char                node[1024];
	struct nvme_id_ctrl ctrl;
	unsigned            nsid;
	struct nvme_id_ns   ns;
	unsigned            block;
	char                ns_name[NS_NAME_LEN];
	char                array_name[ARRAY_NAME_LEN];
	bool                huawei_device;
};

struct huawei_list_element_len {
	unsigned int node;
	unsigned int ns_name;
	unsigned int nguid;
	unsigned int ns_id;
	unsigned int usage;
	unsigned int array_name;
};

static int huawei_get_nvme_info(int fd, struct huawei_list_item *item, const char *node)
{
	int err;
	int len;
	struct stat nvme_stat_info;

	memset(item, 0, sizeof(*item));

	err = nvme_identify_ctrl(fd, &item->ctrl);
	if (err)
		return err;

	/*identify huawei device*/
	if (strstr(item->ctrl.mn, "Huawei") == NULL &&
	    le16_to_cpu(item->ctrl.vid) != HW_SSD_PCI_VENDOR_ID) {
		item->huawei_device = false;
		return 0;
	}

	item->huawei_device = true;
	err = nvme_get_nsid(fd, &item->nsid);
	err = nvme_identify_ns(fd, item->nsid, &item->ns);
	if (err)
		return err;

	err = fstat(fd, &nvme_stat_info);
	if (err < 0)
		return err;

	strncpy(item->node, node, sizeof(item->node));
	item->node[sizeof(item->node) - 1] = '\0';
	item->block = S_ISBLK(nvme_stat_info.st_mode);

	if (item->ns.vs[0] == 0) {

		len = snprintf(item->ns_name, NS_NAME_LEN, "%s", "----");
		if (len < 0)
			return -EINVAL;
	}
	else {
		memcpy(item->ns_name, item->ns.vs, NS_NAME_LEN);
		item->ns_name[NS_NAME_LEN - 1] = '\0';
	}

	if (item->ctrl.vs[0] == 0) {

		len = snprintf(item->array_name, ARRAY_NAME_LEN, "%s", "----");
	if (len < 0)
			return -EINVAL;
	}
	else {
		memcpy(item->array_name, item->ctrl.vs, ARRAY_NAME_LEN);
		item->array_name[ARRAY_NAME_LEN - 1] = '\0';
	}
	return 0;
}

static void format(char *formatter, size_t fmt_sz, char *tofmt, size_t tofmtsz)
{

	fmt_sz = snprintf(formatter,fmt_sz, "%-*.*s",
		 (int)tofmtsz, (int)tofmtsz, tofmt);
	/* trim() the obnoxious trailing white lines */
	while (fmt_sz) {
		if (formatter[fmt_sz - 1] != ' ' && formatter[fmt_sz - 1] != '\0') {
			formatter[fmt_sz] = '\0';
			break;
		}
		fmt_sz--;
	}
}

static void huawei_json_print_list_items(struct huawei_list_item *list_items,
					 unsigned len)
{
	struct json_object *root;
	struct json_object *devices;
	struct json_object *device_attrs;
	char formatter[128] = { 0 };
	int index, i = 0;

	root = json_create_object();
	devices = json_create_array();
	for (i = 0; i < len; i++) {
		device_attrs = json_create_object();

		json_object_add_value_string(device_attrs,
						 "DevicePath",
						 list_items[i].node);

		if (sscanf(list_items[i].node, "/dev/nvme%d", &index) == 1)
			json_object_add_value_int(device_attrs,
						  "Index",
						  index);

		format(formatter, sizeof(formatter),
		       list_items[i].ns_name,
		       sizeof(list_items[i].ns_name));

		json_object_add_value_string(device_attrs,
						 "NS Name",
						 formatter);

		format(formatter, sizeof(formatter),
		       list_items[i].array_name,
		       sizeof(list_items[i].array_name));

		json_object_add_value_string(device_attrs,
					     "Array Name",
					     formatter);

		json_array_add_value_object(devices, device_attrs);
	}
	json_object_add_value_array(root, "Devices", devices);
	json_print_object(root, NULL);
	printf("\n");
	json_free_object(root);
}

static void huawei_print_list_head(struct huawei_list_element_len element_len)
{
	char dash[128];
	int i;

	for (i = 0; i < 128; i++)
		dash[i] = '-';
	dash[127] = '\0';

	printf("%-*.*s %-*.*s %-*.*s %-*.*s %-*.*s %-*.*s\n",
		element_len.node, element_len.node, "Node",
		element_len.ns_name, element_len.ns_name, "NS Name",
		element_len.nguid, element_len.nguid, "Nguid",
		element_len.ns_id, element_len.ns_id, "NS ID",
		element_len.usage, element_len.usage, "Usage",
		element_len.array_name, element_len.array_name, "Array Name");

	printf("%-.*s %-.*s %-.*s %-.*s %-.*s %-.*s\n",
		element_len.node, dash, element_len.ns_name, dash,
		element_len.nguid, dash, element_len.ns_id, dash,
		element_len.usage, dash, element_len.array_name, dash);
}

static void huawei_print_list_item(struct huawei_list_item *list_item,
				   struct huawei_list_element_len element_len)
{
	__u8 lba_index;
	nvme_id_ns_flbas_to_lbaf_inuse(list_item->ns.flbas, &lba_index);
	unsigned long long int lba = 1ULL << list_item->ns.lbaf[lba_index].ds;
	double nsze       = le64_to_cpu(list_item->ns.nsze) * lba;
	double nuse       = le64_to_cpu(list_item->ns.nuse) * lba;

	const char *s_suffix = suffix_si_get(&nsze);
	const char *u_suffix = suffix_si_get(&nuse);

	char usage[128];
	char nguid_buf[2 * sizeof(list_item->ns.nguid) + 1];
	char *nguid = nguid_buf;
	int i;

	sprintf(usage,"%6.2f %2sB / %6.2f %2sB", nuse, u_suffix,
		nsze, s_suffix);

	memset(nguid, 0, sizeof(nguid_buf));
	for (i = 0; i < sizeof(list_item->ns.nguid); i++)
		nguid += sprintf(nguid, "%02x", list_item->ns.nguid[i]);

	printf("%-*.*s %-*.*s %-*.*s %-*d %-*.*s %-*.*s\n",
		element_len.node, element_len.node, list_item->node,
		element_len.ns_name, element_len.ns_name, list_item->ns_name,
		element_len.nguid, element_len.nguid, nguid_buf,
		element_len.ns_id, list_item->nsid,
		element_len.usage, element_len.usage, usage,
		element_len.array_name, element_len.array_name,
		list_item->array_name);

}

static unsigned int choose_len(unsigned int old_len, unsigned int cur_len, unsigned int default_len)
{
	unsigned int temp_len;

	temp_len = (cur_len > default_len) ? cur_len : default_len;
	if (temp_len > old_len)
	{
		return temp_len;
	}
	return old_len;
}

static unsigned int huawei_get_ns_len(struct huawei_list_item *list_items, unsigned len, unsigned default_len)
{
	int i;
	unsigned int min_len = default_len;

	for (i = 0 ; i < len ; i++)
		min_len = choose_len(min_len , strlen(list_items->ns_name), default_len);

	return min_len;
}

static int huawei_get_array_len(struct huawei_list_item *list_items, unsigned len, unsigned default_len)
{
	int i;
	int min_len = default_len;

	for (i = 0 ; i < len ; i++)
		min_len = choose_len(min_len , strlen(list_items->array_name), default_len);

	return min_len;
}

static void huawei_print_list_items(struct huawei_list_item *list_items, unsigned len)
{
	unsigned i;
	struct huawei_list_element_len element_len;

	element_len.node = 16;
	element_len.nguid = 2 * sizeof(list_items->ns.nguid) + 1;
	element_len.ns_id = 9;
	element_len.usage = 26;
	element_len.ns_name = huawei_get_ns_len(list_items, len, MIN_NS_NAME_LEN);
	element_len.array_name = huawei_get_array_len(list_items, len, MIN_ARRAY_NAME_LEN);

	huawei_print_list_head(element_len);

	for (i = 0 ; i < len ; i++)
		huawei_print_list_item(&list_items[i], element_len);
}

static int huawei_list(int argc, char **argv, struct command *command,
		struct plugin *plugin)
{
	char path[264];
	struct dirent **devices;
	struct huawei_list_item *list_items;
	unsigned int i, n, ret;
	unsigned int huawei_num = 0;
	int fmt;
	const char *desc = "Retrieve basic information for the given huawei device";
	struct config {
		char *output_format;
	};

	struct config cfg = {
		.output_format = "normal",
	};

	OPT_ARGS(opts) = {
		OPT_FMT("output-format", 'o', &cfg.output_format, "Output Format: normal|json"),
		OPT_END()
	};

	ret = argconfig_parse(argc, argv, desc, opts);
	if (ret)
		return ret;

	fmt = validate_output_format(cfg.output_format);
	if (fmt != JSON && fmt != NORMAL)
		return -EINVAL;

	n = scandir("/dev", &devices, nvme_namespace_filter, alphasort);
	if (n <= 0)
		return n;

	list_items = calloc(n, sizeof(*list_items));
	if (!list_items) {
		fprintf(stderr, "can not allocate controller list payload\n");
		ret = ENOMEM;
		goto out_free_devices;
	}

	for (i = 0; i < n; i++) {
		int fd;

		snprintf(path, sizeof(path), "/dev/%s", devices[i]->d_name);
		fd = open(path, O_RDONLY);
		if (fd < 0) {
			fprintf(stderr, "Cannot open device %s: %s\n",
				path, strerror(errno));
			continue;
		}
		ret = huawei_get_nvme_info(fd, &list_items[huawei_num], path);
		if (ret) {
			close(fd);
			goto out_free_list_items;
		}
		if (list_items[huawei_num].huawei_device == true) {
			huawei_num++;
		}
		close(fd);
	}

	if (huawei_num > 0){
		if (fmt == JSON)
			huawei_json_print_list_items(list_items, huawei_num);
		else
			huawei_print_list_items(list_items, huawei_num);
	}
out_free_list_items:
	free(list_items);
out_free_devices:
	for (i = 0; i < n; i++)
		free(devices[i]);
	free(devices);

	return ret;
}

static void huawei_do_id_ctrl(__u8 *vs, struct json_object *root)
{
	char array_name[ARRAY_NAME_LEN + 1] = {0};

	memcpy(array_name, vs, ARRAY_NAME_LEN);
	if (root)
		json_object_add_value_string(root, "array name", strlen(array_name) > 1 ? array_name : "NULL");
	else
		printf("array name : %s\n", strlen(array_name) > 1 ? array_name : "NULL");
}

static int huawei_id_ctrl(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	return __id_ctrl(argc, argv, cmd, plugin, huawei_do_id_ctrl);
}
   070701015D6C1A000081A4000003E80000006400000001642C0FB5000001F0000000000000004A00000000000000000000002600000000nvme-cli/plugins/huawei/huawei-nvme.h /* SPDX-License-Identifier: GPL-2.0-or-later */
#undef CMD_INC_FILE
#define CMD_INC_FILE plugins/huawei/huawei-nvme

#if !defined(HUAWEI_NVME) || defined(CMD_HEADER_MULTI_READ)
#define HUAWEI_NVME

#include "cmd.h"

PLUGIN(NAME("huawei", "Huawei vendor specific extensions", NVME_VERSION),
	COMMAND_LIST(
		ENTRY("list", "List all Huawei NVMe devices and namespaces on machine", huawei_list)
		ENTRY("id-ctrl", "Huawei identify controller", huawei_id_ctrl)
	)
);

#endif

#include "define_cmd.h"
070701015D6C1D000081A4000003E80000006400000001642C0FB50000024A000000000000004A00000000000000000000002A00000000nvme-cli/plugins/innogrit/innogrit-nvme.h /* SPDX-License-Identifier: GPL-2.0-or-later */
#undef CMD_INC_FILE
#define CMD_INC_FILE plugins/innogrit/innogrit-nvme

#if !defined(INNOGRIT_NVME) || defined(CMD_HEADER_MULTI_READ)
#define INNOGRIT_NVME

#include "cmd.h"

PLUGIN(NAME("innogrit", "innogrit vendor specific extensions", NVME_VERSION),
	COMMAND_LIST(
		ENTRY("smart-log-add", "Retrieve innogrit SMART Log, show it", innogrit_smart_log_additional)
		ENTRY("get-eventlog",  "get event log", innogrit_vsc_geteventlog)
		ENTRY("get-cdump",     "get cdump data", innogrit_vsc_getcdump)
	)
);

#endif

#include "define_cmd.h"
  070701015D6C1E000081A4000003E80000006400000001642C0FB5000006E6000000000000004A00000000000000000000002400000000nvme-cli/plugins/innogrit/typedef.h   /* SPDX-License-Identifier: GPL-2.0-or-later */
#define SIZE_4K		4096
#define SIZE_16K	16384

#define NVME_VSC_GET_EVENT_LOG		0xC2
#define NVME_VSC_CLEAN_EVENT_LOG	0xD8
#define NVME_VSC_GET			0xE6
#define VSC_FN_GET_CDUMP		0x08
#define EVLOG_SIG			0x65766C67
#define SRB_SIGNATURE			0x544952474F4E4E49ULL
#define XCLEAN_LINE			"\033[K"

struct evlg_flush_hdr {
	unsigned int signature;
	unsigned int fw_ver[2];
	unsigned int fw_type : 8;
	unsigned int log_type : 8;
	unsigned int project : 16;
	unsigned int trace_cnt;
	unsigned int sout_crc;
	unsigned int reserved[2];
};

struct eventlog {
	unsigned int ms;
	unsigned int param[7];
};

struct eventlog_addindex {
	unsigned int ms;
	unsigned int param[7];
	unsigned int iindex;
};

#pragma pack(push)
#pragma pack(1)
struct vsc_smart_log {
	unsigned short defect_cnt;
	unsigned short slc_spb_cnt;
	unsigned int slc_total_ec_cnt;
	unsigned int slc_max_ec_cnt;
	unsigned int slc_min_ec_cnt;
	unsigned int slc_avg_ec_cnt;
	unsigned int total_ec_cnt;
	unsigned int max_ec_cnt;
	unsigned int min_ec_cnt;
	unsigned int avg_ec_cnt;
	unsigned int mrd_rr_good_cnt;
	unsigned int ard_rr_good_cnt;
	unsigned int preset_cnt;
	unsigned int nvme_reset_cnt;
	unsigned int low_pwr_cnt;
	unsigned int wa;
	unsigned int ps3_entry_cnt;
	u_char highest_temp[4];
	unsigned int weight_ec;
	unsigned int slc_cap_mb;
	unsigned long long nand_page_write_cnt;
	unsigned int program_error_cnt;
	unsigned int erase_error_cnt;
	u_char flash_type;
	u_char reserved2[3];
	unsigned int hs_crc_err_cnt;
	unsigned int ddr_ecc_err_cnt;
	unsigned int reserved3[44];
};
#pragma pack(pop)

struct cdump_pack {
	unsigned int ilenth;
	char fwver[8];
};

struct cdumpinfo {
	unsigned int sig;
	unsigned int ipackcount;
	struct cdump_pack cdumppack[32];
};
  070701015D6E55000081A4000003E80000006400000001642C0FB600003544000000000000004A00000000000000000000002A00000000nvme-cli/plugins/innogrit/innogrit-nvme.c // SPDX-License-Identifier: GPL-2.0-or-later
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <errno.h>
#include <unistd.h>
#include <sys/stat.h>
#include <time.h>

#include "common.h"
#include "nvme.h"
#include "libnvme.h"
#include "nvme-print.h"
#include "typedef.h"

#define CREATE_CMD
#include "innogrit-nvme.h"

static int innogrit_smart_log_additional(int argc, char **argv,
					 struct command *command,
					 struct plugin *plugin)
{
	struct nvme_smart_log smart_log = { 0 };
	struct vsc_smart_log *pvsc_smart = (struct vsc_smart_log *)smart_log.rsvd232;
	const char *desc = "Retrieve additional SMART log for the given device ";
	const char *namespace = "(optional) desired namespace";
	struct nvme_dev *dev;
	int err, i, iindex;

	struct config {
		__u32 namespace_id;
	};

	struct config cfg = {
		.namespace_id = NVME_NSID_ALL,
	};

	OPT_ARGS(opts) = {
		OPT_UINT("namespace-id", 'n', &cfg.namespace_id,   namespace),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		return err;

	nvme_get_log_smart(dev_fd(dev), cfg.namespace_id, false, &smart_log);
	nvme_show_smart_log(&smart_log, cfg.namespace_id, dev->name, NORMAL);

	printf("DW0[0-1]  Defect Cnt                    : %u\n", pvsc_smart->defect_cnt);
	printf("DW0[2-3]  Slc Spb Cnt                   : %u\n", pvsc_smart->slc_spb_cnt);
	printf("DW1       Slc Total Ec Cnt              : %u\n", pvsc_smart->slc_total_ec_cnt);
	printf("DW2       Slc Max Ec Cnt                : %u\n", pvsc_smart->slc_max_ec_cnt);
	printf("DW3       Slc Min Ec Cnt                : %u\n", pvsc_smart->slc_min_ec_cnt);
	printf("DW4       Slc Avg Ec Cnt                : %u\n", pvsc_smart->slc_avg_ec_cnt);
	printf("DW5       Total Ec Cnt                  : %u\n", pvsc_smart->total_ec_cnt);
	printf("DW6       Max Ec Cnt                    : %u\n", pvsc_smart->max_ec_cnt);
	printf("DW7       Min Ec Cnt                    : %u\n", pvsc_smart->min_ec_cnt);
	printf("DW8       Avg Ec Cnt                    : %u\n", pvsc_smart->avg_ec_cnt);
	printf("DW9       Mrd Rr Good Cnt               : %u\n", pvsc_smart->mrd_rr_good_cnt);
	printf("DW10      Ard Rr Good Cnt               : %u\n", pvsc_smart->ard_rr_good_cnt);
	printf("DW11      Preset Cnt                    : %u\n", pvsc_smart->preset_cnt);
	printf("DW12      Nvme Reset Cnt                : %u\n", pvsc_smart->nvme_reset_cnt);
	printf("DW13      Low Pwr Cnt                   : %u\n", pvsc_smart->low_pwr_cnt);
	printf("DW14      Wa                            : %u\n", pvsc_smart->wa);
	printf("DW15      Ps3 Entry Cnt                 : %u\n", pvsc_smart->ps3_entry_cnt);
	printf("DW16[0]   highest_temp[0]               : %u\n", pvsc_smart->highest_temp[0]);
	printf("DW16[1]   highest_temp[1]               : %u\n", pvsc_smart->highest_temp[1]);
	printf("DW16[2]   highest_temp[2]               : %u\n", pvsc_smart->highest_temp[2]);
	printf("DW16[3]   highest_temp[3]               : %u\n", pvsc_smart->highest_temp[3]);
	printf("DW17      weight_ec                     : %u\n", pvsc_smart->weight_ec);
	printf("DW18      slc_cap_mb                    : %u\n", pvsc_smart->slc_cap_mb);
	printf("DW19-20   nand_page_write_cnt           : %llu\n", pvsc_smart->nand_page_write_cnt);
	printf("DW21      program_error_cnt             : %u\n", pvsc_smart->program_error_cnt);
	printf("DW22      erase_error_cnt               : %u\n", pvsc_smart->erase_error_cnt);
	printf("DW23[0]   flash_type                    : %u\n", pvsc_smart->flash_type);
	printf("DW24      hs_crc_err_cnt                : %u\n", pvsc_smart->hs_crc_err_cnt);
	printf("DW25      ddr_ecc_err_cnt               : %u\n", pvsc_smart->ddr_ecc_err_cnt);
	iindex = 26;
	for (i = 0; i < (sizeof(pvsc_smart->reserved3)/4); i++) {
		if (pvsc_smart->reserved3[i] != 0)
			printf("DW%-37d : %u\n", iindex, pvsc_smart->reserved3[i]);
		iindex++;
	}

	return 0;
}

static int sort_eventlog_fn(const void *a, const void *b)
{
	const struct eventlog_addindex *l = a;
	const struct eventlog_addindex *r = b;
	int rc;

	if (l->ms > r->ms) {
		rc = 1;
	} else if (l->ms < r->ms) {
		rc = -1;
	} else {
		if (l->iindex < r->iindex)
			rc = -1;
		else
			rc = 1;
	}

	return rc;
}

static void sort_eventlog(struct eventlog *data16ksrc, unsigned int icount)
{
	struct eventlog_addindex peventlogadd[512];
	unsigned int i;

	for (i = 0; i < icount; i++) {
		memcpy(&peventlogadd[i], &data16ksrc[i], sizeof(struct eventlog));
		peventlogadd[i].iindex = i;
	}

	qsort(peventlogadd, icount, sizeof(struct eventlog_addindex), sort_eventlog_fn);

	for (i = 0; i < icount; i++)
		memcpy(&data16ksrc[i], &peventlogadd[i], sizeof(struct eventlog));
}

static unsigned char setfilecontent(char *filenamea, unsigned char *buffer,
				    unsigned int buffersize)
{
	FILE *fp = NULL;
	int rc;

	if (buffersize == 0)
		return true;
	fp = fopen(filenamea, "a+");
	rc = fwrite(buffer, 1, buffersize, fp);
	fclose(fp);
	if (rc != buffersize)
		return false;
	return true;
}

static int nvme_vucmd(int fd, unsigned char opcode, unsigned int cdw12,
		      unsigned int cdw13, unsigned int cdw14,
		      unsigned int cdw15, char *data, int data_len)
{
	struct nvme_passthru_cmd cmd;

	memset(&cmd, 0, sizeof(cmd));
	cmd.opcode = opcode;
	cmd.cdw12 = cdw12;
	cmd.cdw13 = cdw13;
	cmd.cdw14 = cdw14;
	cmd.cdw15 = cdw15;
	cmd.nsid = 0;
	cmd.addr = (__u64)(__u64)(uintptr_t)data;
	cmd.data_len = data_len;
	return nvme_submit_admin_passthru(fd, &cmd, NULL);
}

static int innogrit_vsc_geteventlog(int argc, char **argv,
				    struct command *command,
				    struct plugin *plugin)
{
	time_t timep;
	struct tm *logtime;
	int icount, ioffset16k, iblock, ivsctype;
	char currentdir[128], filename[512];
	unsigned char data[4096], data16k[SIZE_16K], zerob[32];
	unsigned int *pcheckdata;
	unsigned int isize, icheck_stopvalue, iend;
	unsigned char bSortLog = false, bget_nextlog = true;
	struct evlg_flush_hdr *pevlog = (struct evlg_flush_hdr *)data;
	const char *desc = "Recrieve event log for the given device ";
	const char *clean_opt = "(optional) 1 for clean event log";
	struct nvme_dev *dev;
	int ret = -1;

	struct config {
		__u32 clean_flg;
	};

	struct config cfg = {
		.clean_flg = 0,
	};

	OPT_ARGS(opts) = {
		OPT_UINT("clean_flg",   'c', &cfg.clean_flg,   clean_opt),
		OPT_END()
	};

	ret = parse_and_open(&dev, argc, argv, desc, opts);
	if (ret)
		return ret;


	if (getcwd(currentdir, 128) == NULL)
		return -1;

	ret = nvme_vucmd(dev_fd(dev), 0xFE, 0x82, 0x03, 0x00, 0x00, (char *)data, 4096);
	if (ret == -1)
		return ret;
	
	if (data[0] == 0x5A) 
		ivsctype = 1;
	else
		ivsctype = 0;

	time(&timep);
	logtime = localtime(&timep);
	sprintf(filename, "%s/eventlog_%02d%02d-%02d%02d%02d.elog", currentdir, logtime->tm_mon+1,
		logtime->tm_mday, logtime->tm_hour, logtime->tm_min, logtime->tm_sec);

	iblock = 0;
	ioffset16k = 0;
	memset(data16k, 0, SIZE_16K);
	memset(zerob, 0, 32);

	icount = 0;
	while (bget_nextlog) {
		if (icount % 100 == 0) {
			printf("\rWait for Dump EventLog " XCLEAN_LINE);
			fflush(stdout);
			icount = 0;
		} else if (icount % 5 == 0) {
			printf(".");
			fflush(stdout);
		}
		icount++;

		memset(data, 0, 4096);
		if (ivsctype == 1) 
			ret = nvme_vucmd(dev_fd(dev), 0xFE, 0x60, 0x00, 0x00, 0x00,(char *)data, 4096);
		else
			ret = nvme_vucmd(dev_fd(dev), NVME_VSC_GET_EVENT_LOG, 0, 0,
					(SRB_SIGNATURE >> 32),
					(SRB_SIGNATURE & 0xFFFFFFFF),
					(char *)data, 4096);
		if (ret == -1)
			return ret;

		pcheckdata = (unsigned int *)&data[4096 - 32];
		icheck_stopvalue = pcheckdata[1];

		if (icheck_stopvalue == 0xFFFFFFFF) {
			isize = pcheckdata[0];
			if (isize == 0) {
				/* Finish Log */
				bget_nextlog = false;
			} else if (bSortLog) {
				/* No Full 4K Package */
				for (iend = 0; iend < isize - 32; iend += sizeof(struct eventlog)) {
					if (memcmp(&data[iend], zerob, sizeof(struct eventlog)) != 0) {
						memcpy(&data16k[ioffset16k], &data[iend], sizeof(struct eventlog));
						ioffset16k += sizeof(struct eventlog);
					}
				}
			} else {
				setfilecontent(filename, data, isize);
			}
		} else {
			/* Full 4K Package */
			if ((pevlog->signature == EVLOG_SIG) && (pevlog->log_type == 1))
				bSortLog = true;

			if (bSortLog) {
				for (iend = 0; iend < SIZE_4K; iend += sizeof(struct eventlog)) {
					if (memcmp(&data[iend], zerob, sizeof(struct eventlog)) != 0) {
						memcpy(&data16k[ioffset16k], &data[iend], sizeof(struct eventlog));
						ioffset16k += sizeof(struct eventlog);
					}
				}

				iblock++;
				if (iblock == 4) {
					sort_eventlog((struct eventlog *)(data16k + sizeof(struct evlg_flush_hdr)),
						(ioffset16k - sizeof(struct evlg_flush_hdr))/sizeof(struct eventlog));
					setfilecontent(filename, data16k, ioffset16k);
					ioffset16k = 0;
					iblock = 0;
					memset(data16k, 0, SIZE_16K);
				}
			} else {
				setfilecontent(filename, data, SIZE_4K);
			}

		}
	}

	if (bSortLog) {
		if (ioffset16k > 0) {
			sort_eventlog((struct eventlog *)(data16k + sizeof(struct evlg_flush_hdr)),
				(ioffset16k - sizeof(struct evlg_flush_hdr))/sizeof(struct eventlog));
			setfilecontent(filename, data16k, ioffset16k);
		}
	}

	printf("\r" XCLEAN_LINE "Dump eventLog finish to %s\n", filename);
	chmod(filename, 0666);

	if (cfg.clean_flg == 1) {
		printf("Clean eventlog\n");
		nvme_vucmd(dev_fd(dev), NVME_VSC_CLEAN_EVENT_LOG, 0, 0,
			   (SRB_SIGNATURE >> 32),
			   (SRB_SIGNATURE & 0xFFFFFFFF), (char *)NULL, 0);
	}

	dev_close(dev);

	return ret;
}

static int innogrit_vsc_getcdump(int argc, char **argv, struct command *command,
	struct plugin *plugin)
{
	time_t timep;
	struct tm *logtime;
	char currentdir[128], filename[512], fname[128];
	unsigned int itotal, icur, ivsctype;
	unsigned char data[4096];
	struct cdumpinfo cdumpinfo;
	unsigned char busevsc = false;
	unsigned int ipackcount, ipackindex;
	char fwvera[32];
	const char *desc = "Recrieve cdump data for the given device ";
	struct nvme_dev *dev;
	int ret = -1;

	OPT_ARGS(opts) = {
		OPT_END()
	};

	ret = parse_and_open(&dev, argc, argv, desc, opts);
	if (ret)
		return ret;

	if (getcwd(currentdir, 128) == NULL)
		return -1;

	time(&timep);
	logtime = localtime(&timep);

	ivsctype = 0;
	ipackindex = 0;
	memset(data, 0, 4096);

	ret = nvme_vucmd(dev_fd(dev), 0xFE, 0x82, 0x03, 0x00, 0x00, (char *)data, 4096);
	if (ret == -1)
		return ret;
	
	if (data[0] == 0x5A) {
		ivsctype = 1;
		ret = nvme_vucmd(dev_fd(dev), 0xFE, 0x82, 0x08, 0x00, 0x00,(char *)data, 4096);
	} else {
		ivsctype = 0;
		ret = nvme_vucmd(dev_fd(dev), NVME_VSC_GET, VSC_FN_GET_CDUMP, 0x00,
					(SRB_SIGNATURE >> 32), (SRB_SIGNATURE & 0xFFFFFFFF),
					(char *)data, 4096);
	}
	if (ret == -1)
		return ret;

	memcpy(&cdumpinfo, &data[3072], sizeof(cdumpinfo));
	if (cdumpinfo.sig == 0x5a5b5c5d) {
		busevsc = true;
		ipackcount = cdumpinfo.ipackcount;
		if (ipackcount == 0) {
			itotal = 0;
		} else {
			itotal = cdumpinfo.cdumppack[ipackindex].ilenth;
			memset(fwvera, 0, sizeof(fwvera));
			memcpy(fwvera, cdumpinfo.cdumppack[ipackindex].fwver, 8);
			sprintf(fname, "cdump_%02d%02d-%02d%02d%02d_%d_%s.cdp", logtime->tm_mon+1,
				logtime->tm_mday, logtime->tm_hour, logtime->tm_min, logtime->tm_sec,
				ipackindex, fwvera);
			sprintf(filename, "%s/%s", currentdir, fname);
		}
	}


	if (busevsc == false) {
		memset(data, 0, 4096);
		ret = nvme_get_nsid_log(dev_fd(dev), true, 0x07,
					NVME_NSID_ALL,
					4096, data);
		if (ret != 0)
			return ret;

		ipackcount = 1;
		memcpy(&itotal, &data[4092], 4);
		sprintf(fname, "cdump_%02d%02d-%02d%02d%02d.cdp", logtime->tm_mon+1, logtime->tm_mday,
			logtime->tm_hour, logtime->tm_min, logtime->tm_sec);
		sprintf(filename, "%s/%s", currentdir, fname);
	}

	if (itotal == 0) {
		printf("no cdump data\n");
		return 0;
	}

	while (ipackindex < ipackcount) {
		memset(data, 0, 4096);
		strcpy((char *)data, "cdumpstart");
		setfilecontent(filename, data, strlen((char *)data));
		for (icur = 0; icur < itotal; icur += 4096) {
			memset(data, 0, 4096);
			if (busevsc) {
				if (ivsctype == 1) 
					ret = nvme_vucmd(dev_fd(dev), 0xFE, 0x82, 0x08, 0x00, 0x00,(char *)data, 4096);
				else
					ret = nvme_vucmd(dev_fd(dev), NVME_VSC_GET, VSC_FN_GET_CDUMP, 0x00,
								(SRB_SIGNATURE >> 32), (SRB_SIGNATURE & 0xFFFFFFFF),
								(char *)data, 4096);					 
			} else {
				ret = nvme_get_nsid_log(dev_fd(dev), true,
							0x07,
							NVME_NSID_ALL, 4096, data);
			}
			if (ret != 0)
				return ret;

			setfilecontent(filename, data, 4096);

			printf("\rWait for dump data %d%%" XCLEAN_LINE, ((icur+4096) * 100/itotal));
		}
		memset(data, 0, 4096);
		strcpy((char *)data, "cdumpend");
		setfilecontent(filename, data, strlen((char *)data));
		printf("\r%s\n", fname);
		ipackindex++;
		if (ipackindex != ipackcount) {
			memset(data, 0, 4096);
			if (busevsc) {
				if (ivsctype == 1) 
					ret = nvme_vucmd(dev_fd(dev), 0xFE, 0x82, 0x08, 0x00, 0x00,(char *)data, 4096);
				else
					ret = nvme_vucmd(dev_fd(dev), NVME_VSC_GET, VSC_FN_GET_CDUMP, 0x00,
								(SRB_SIGNATURE >> 32), (SRB_SIGNATURE & 0xFFFFFFFF),
								(char *)data, 4096);							 
			} else {
				ret = nvme_get_nsid_log(dev_fd(dev), true,
							0x07,
							NVME_NSID_ALL, 4096,
							data);
			}
			if (ret != 0)
				return ret;

			itotal = cdumpinfo.cdumppack[ipackindex].ilenth;
			memset(fwvera, 0, sizeof(fwvera));
			memcpy(fwvera, cdumpinfo.cdumppack[ipackindex].fwver, 8);
			sprintf(fname, "cdump_%02d%02d-%02d%02d%02d_%d_%s.cdp", logtime->tm_mon+1,
				logtime->tm_mday, logtime->tm_hour, logtime->tm_min, logtime->tm_sec,
				ipackindex,	fwvera);
			sprintf(filename, "%s/%s", currentdir, fname);
		}

	}

	printf("\n");
	dev_close(dev);
	return ret;
}
070701015D6C21000081A4000003E80000006400000001642C0FB5000001AF000000000000004A00000000000000000000002600000000nvme-cli/plugins/inspur/inspur-nvme.h /* SPDX-License-Identifier: GPL-2.0-or-later */
#undef CMD_INC_FILE
#define CMD_INC_FILE plugins/inspur/inspur-nvme

#if !defined(INSPUR_NVME) || defined(CMD_HEADER_MULTI_READ)
#define INSPUR_NVME

#include "cmd.h"

PLUGIN(NAME("inspur", "Inspur vendor specific extensions", NVME_VERSION),
	COMMAND_LIST(
		ENTRY("nvme-vendor-log", "Retrieve Inspur Vendor Log, show it", nvme_get_vendor_log)
	)
);

#endif

#include "define_cmd.h"
 070701015D6C22000081A4000003E80000006400000001642C0FB5000012CF000000000000004A00000000000000000000002700000000nvme-cli/plugins/inspur/inspur-utils.h    /* SPDX-License-Identifier: GPL-2.0-or-later */
#ifndef __INSPUR_UTILS_H__
#define __INSPUR_UTILS_H__

#define BYTE_OF_64K 65536UL
#define BYTE_OF_32K 32768UL
#define BYTE_OF_16K 16384UL
#define BYTE_OF_4K 4096UL
#define BYTE_OF_512 512UL
#define BYTE_OF_256 256UL
#define BYTE_OF_128 128UL

/* Inspur specific LOG_PAGE_ID */
typedef enum {
    VENDOR_SMART_LOG_PAGE = 0xc0,
} vendor_sepc_log_page_id_e;

#pragma pack(push, 1)
typedef struct r1_am_cap_transtime {
    __u32 cap_trans_time1 : 16;
    __u32 cap_trans_time2 : 16;
} r1_cap_transtime_t;

typedef struct vendor_warning_bit {
    __u32 high_format_fail : 1;
    __u32 low_format_fail : 1;
    __u32 rebuild_fail1 : 1;
    __u32 rebuild_fail2 : 1;
    __u32 rebuild_fail3 : 1;
    __u32 rebuild_fail4 : 1;
    __u32 rebuild_fail5 : 1;
    __u32 rebuild_fail6 : 1;
    __u32 self_test_fail1 : 1;
    __u32 self_test_fail2 : 1;
    __u32 self_test_fail3 : 1;
    __u32 self_test_fail4 : 1;
    __u32 internal_err1 : 1;
    __u32 internal_err2 : 1;
    __u32 internal_err3 : 1;
    __u32 internal_err4 : 1;
    __u32 internal_err5 : 1;
    __u32 internal_err6 : 1;
    __u32 internal_err7 : 1;
    __u32 internal_err8 : 1;
    __u32 internal_err9 : 1;
    __u32 internal_err10 : 1;
    __u32 internal_err11 : 1;
    __u32 internal_err12 : 1;
    __u32 internal_err13 : 1;
    __u32 internal_err14 : 1;
    __u32 internal_err15 : 1;
    __u32 internal_err16 : 1;
    __u32 capacitance_test_fail : 1;
    __u32 IO_read_fail : 1;
    __u32 IO_write_fail : 1;
    __u32 readOnly_after_rebuild : 1;
    __u32 firmware_loss : 1;
    __u32 cap_unsupply : 1;
    __u32 spare_space_warning : 1;
    __u32 lifetime_warning : 1;
    __u32 temp_high_warning : 1;
    __u32 temp_low_warning : 1;
    __u32 mcu_disable : 1;
    __u32 rsv : 25;
} vendor_warning_str;

typedef struct r1_vendor_log_ncm_cout {
    __u32 nand_rd_unc_cnt;
    __u32 nand_rd_srr_cnt;
    __u32 nand_rd_soft_decode_cnt;
    __u32 nand_rd_rebuild_fail_cnt;
    __u32 nand_prg_fail_cnt;
    __u32 nand_eras_fail_cnt;
    __u64 nand_rd_cnt;
    __u64 nand_prg_cnt;
    __u64 nand_eras_cnt;
    __u32 BE_scan_unc_cnt;
    __u32 rebuild_req_cnt;
    __u16 retry_req_cnt;
    __u16 retry_success_cnt;
    __u32 prg_badblk_num;
    __u32 eras_badblk_num;
    __u32 unc_badblk_num;
} r1_vendor_log_nandctl_count_t;

typedef struct r1_wearlvl_vendor_log_count {
    __u32 fbb_count;
    __u32 ebb_count;
    __u32 lbb_count;
    __u32 gc_read_count;
    __u32 gc_write_count;
    __u32 gc_write_fail_count;
    __u32 force_gc_count;
    __u32 avg_pe_count;
    __u32 max_pe_count;
    __u32 free_blk_num1;
    __u32 free_blk_num2;
} r1_wearlvl_vendor_log_count_t;

typedef struct vendor_media_err {
    __u64 lba_err[10];
} vendor_media_err_t;

typedef struct r1_vendor_log_io_err {
    __u32 io_guard_err;
    __u32 io_apptag_err;
    __u32 io_reftag_err;
    __u32 io_dma_linkdown_err;
    __u32 io_dma_disable_err;
    __u32 io_dma_timeout_err;
    __u32 io_dma_fatal_err;
    __u32 io_write_fail_cout;
    __u32 io_read_fail_cout;
    __u32 lba_err[6];
} r1_vendor_log_io_err_t;

typedef struct r1_vendor_log_s {
    __u32 max_power;
    __u32 disk_max_temper;
    __u32 disk_overtemper_cout;
    __u32 ctrl_max_temper;
    __u32 ctrl_overtemper_cout;
    r1_cap_transtime_t cap_transtime;
    __u32 cap_health_state;
    __u32 device_state;
    r1_vendor_log_io_err_t io_err[4];
    union {
        vendor_warning_str detail_warning_bit;
        __u32 detail_warning[2];
    };
    union {
        vendor_warning_str detail_warning_his_bit;
        __u32 detail_warning_his[2];
    };
    __u32 ddr_bit_err_cout;
    __u32 temp_throttle_per;
    __u64 port0_fundamental_reset_cnt;
    __u64 port0_hot_reset_cnt;
    __u64 port0_func_reset_cnt;
    __u64 port0_linkdown_cnt;
    __u64 port0_ctrl_reset_cnt;
    __u64 nand_bytes_written[4];
    __u32 power_info;
    __u32 voltage_info;
    __u32 current_info;
    __u32 current_temp[4];
    __u32 nand_max_temper;
    __u32 nand_overtemper_cout;
    __u32 mcu_data_id;
    __u8 commit_id[16];
    __u32 ces_RcvErr_cnt;
    __u32 ces_BadTlp_cnt;
    __u32 ces_BadDllp_cnt;
    __u32 ces_Rplyover_cnt;
    __u32 ces_RplyTo_cnt;
    __u32 ces_Hlo_cnt;
    __u32 scan_db_err_cnt;
    __u32 db_int_err_cnt;
    __u8 rsvFE[56];
    r1_vendor_log_nandctl_count_t vendor_log_nandctl_cnt[4];
    __u32 temp_ctrl_limit_cnt;
    __u32 temp_ctrl_stop_cnt;
    __u8 rsvncm[216];
    r1_wearlvl_vendor_log_count_t wearlvl_vendor_log_count[4];
    __u8 rsvwlm[512 - sizeof(r1_wearlvl_vendor_log_count_t) * 4 % 512];
    __u32 e2e_check_err_cnt1;
    __u32 e2e_check_err_cnt2;
    __u32 e2e_check_err_cnt3;
    __u32 e2e_check_err_cnt4;
    vendor_media_err_t media_err[4];
    __u8 rsvlkm[176];
} r1_cli_vendor_log_t;
#pragma pack(pop)

#endif // __INSPUR_UTILS_H__
 070701015D6E56000081A4000003E80000006400000001642C0FB6000038D9000000000000004A00000000000000000000002600000000nvme-cli/plugins/inspur/inspur-nvme.c // SPDX-License-Identifier: GPL-2.0-or-later
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <inttypes.h>
#include <errno.h>
#include <limits.h>
#include <fcntl.h>
#include <unistd.h>
#include <dirent.h>
#include <sys/stat.h>

#include "common.h"
#include "nvme.h"
#include "libnvme.h"
#include "plugin.h"
#include "nvme-print.h"
#include "util/suffix.h"

#define CREATE_CMD
#include "inspur-nvme.h"
#include "inspur-utils.h"

void show_r1_vendor_log(r1_cli_vendor_log_t *vendorlog)
{
    int i = 0;

    if (vendorlog->device_state == 0) {
        printf("device_state              : [healthy]\n");
    } else {
        printf("device_state              : [warning]\n");
    }

    printf("commit id          : %s\n", vendorlog->commit_id);
    printf("mcu data id(mcu)          : 0x%x\n", le32_to_cpu(vendorlog->mcu_data_id));
    printf("power_info(mcu)           : %u mW\n", le32_to_cpu(vendorlog->power_info));
    printf("voltage_info(mcu)         : %u mV\n", le32_to_cpu(vendorlog->voltage_info));
    printf("current_info(mcu)         : %u mA\n", le32_to_cpu(vendorlog->current_info));
    printf("history max_power(mcu)         : %u mW\n", le32_to_cpu(vendorlog->max_power));
    printf("disk_max_temper(mcu)           : %d C\n", le32_to_cpu(vendorlog->disk_max_temper) - 273);
    printf("disk_overtemper_cout(mcu)      : %u\n", le32_to_cpu(vendorlog->disk_overtemper_cout));
    printf("ctrl_max_temper(mcu)           : %d C\n", le32_to_cpu(vendorlog->ctrl_max_temper) - 273);
    printf("ctrl_overtemper_cout(mcu)      : %u\n", le32_to_cpu(vendorlog->ctrl_overtemper_cout));
    printf("nand_max_temper(mcu)           : %d C\n", le32_to_cpu(vendorlog->nand_max_temper) - 273);
    printf("nand_overtemper_cout(mcu)      : %u\n", le32_to_cpu(vendorlog->nand_overtemper_cout));

    for (i = 0; i < 4; i++) {
        printf("temperature[%d](mcu)           : %d C\n", i, le32_to_cpu(vendorlog->current_temp[i]) - 273);
    }

    printf("CAP Time from 32v to 27v(mcu)  : %u ms\n", le32_to_cpu(vendorlog->cap_transtime.cap_trans_time1));
    printf("CAP Time from 27v to 10v(mcu)  : %u ms\n", le32_to_cpu(vendorlog->cap_transtime.cap_trans_time2));
    printf("cap_health_state(mcu)          : %u\n", le32_to_cpu(vendorlog->cap_health_state));
    printf("warning bit(mcu)               : 0x%x%08x\n", le32_to_cpu(vendorlog->detail_warning[1]),
           le32_to_cpu(vendorlog->detail_warning[0]));
    printf("-->high_format_fail       : %x\n", vendorlog->detail_warning_bit.high_format_fail);
    printf("-->low_format_fail        : %x\n", vendorlog->detail_warning_bit.low_format_fail);
    printf("-->current sensor         : %x\n", vendorlog->detail_warning_bit.self_test_fail1);
    printf("-->nand temp sensor       : %x\n", vendorlog->detail_warning_bit.self_test_fail2);
    printf("-->board temp sensor      : %x\n", vendorlog->detail_warning_bit.self_test_fail3);
    printf("-->cntl temp sensor       : %x\n", vendorlog->detail_warning_bit.self_test_fail4);
    printf("-->cap_timer_test_fail    : %x\n", vendorlog->detail_warning_bit.capacitance_test_fail);
    printf("-->readOnly_after_rebuild : %x\n", vendorlog->detail_warning_bit.readOnly_after_rebuild);
    printf("-->firmware_loss          : %x\n", vendorlog->detail_warning_bit.firmware_loss);
    printf("-->cap_self_test          : %x\n", vendorlog->detail_warning_bit.cap_unsupply);
    printf("-->spare_space_warning    : %x\n", vendorlog->detail_warning_bit.spare_space_warning);
    printf("-->lifetime_warning       : %x\n", vendorlog->detail_warning_bit.lifetime_warning);
    printf("-->temp_high_warning      : %x\n", vendorlog->detail_warning_bit.temp_high_warning);
    printf("-->temp_low_warning       : %x\n", vendorlog->detail_warning_bit.temp_low_warning);
    printf("-->mcu_disable(mcu)       : %x\n", vendorlog->detail_warning_bit.mcu_disable);
    printf("warning history bit(mcu)  : 0x%x%08x\n", le32_to_cpu(vendorlog->detail_warning_his[1]),
           le32_to_cpu(vendorlog->detail_warning_his[0]));
    printf("-->high_format_fail       : %x\n", vendorlog->detail_warning_his_bit.high_format_fail);
    printf("-->low_format_fail        : %x\n", vendorlog->detail_warning_his_bit.low_format_fail);
    printf("-->current sensor         : %x\n", vendorlog->detail_warning_his_bit.self_test_fail1);
    printf("-->nand temp sensor       : %x\n", vendorlog->detail_warning_his_bit.self_test_fail2);
    printf("-->board temp sensor      : %x\n", vendorlog->detail_warning_his_bit.self_test_fail3);
    printf("-->cntl temp sensor       : %x\n", vendorlog->detail_warning_his_bit.self_test_fail4);
    printf("-->cap_timer_test_fail    : %x\n", vendorlog->detail_warning_his_bit.capacitance_test_fail);
    printf("-->readOnly_after_rebuild : %x\n", vendorlog->detail_warning_his_bit.readOnly_after_rebuild);
    printf("-->firmware_loss          : %x\n", vendorlog->detail_warning_his_bit.firmware_loss);
    printf("-->cap_self_test          : %x\n", vendorlog->detail_warning_his_bit.cap_unsupply);
    printf("-->spare_space_warning    : %x\n", vendorlog->detail_warning_his_bit.spare_space_warning);
    printf("-->lifetime_warning       : %x\n", vendorlog->detail_warning_his_bit.lifetime_warning);
    printf("-->temp_high_warning      : %x\n", vendorlog->detail_warning_his_bit.temp_high_warning);
    printf("-->temp_low_warning       : %x\n", vendorlog->detail_warning_his_bit.temp_low_warning);
    printf("-->mcu_disable(mcu)       : %x\n", vendorlog->detail_warning_his_bit.mcu_disable);

    for (i = 0; i < 4; i++) {
        printf("[%d]nand_bytes_written        : %" PRIu64 " GB\n", i, le64_to_cpu(vendorlog->nand_bytes_written[i]));
    }

    for (i = 0; i < 4; i++) {
        printf("[%d]io_apptag_err         : %u\n", i, le32_to_cpu(vendorlog->io_err[i].io_apptag_err));
        printf("[%d]io_guard_err          : %u\n", i, le32_to_cpu(vendorlog->io_err[i].io_guard_err));
        printf("[%d]io_reftag_err         : %u\n", i, le32_to_cpu(vendorlog->io_err[i].io_reftag_err));
        printf("[%d]io_read_fail_cout     : %u\n", i, le32_to_cpu(vendorlog->io_err[i].io_read_fail_cout));
        printf("[%d]io_write_fail_cout    : %u\n", i, le32_to_cpu(vendorlog->io_err[i].io_write_fail_cout));
        printf("[%d]io_dma_disable_err    : %u\n", i, le32_to_cpu(vendorlog->io_err[i].io_dma_disable_err));
        printf("[%d]io_dma_fatal_err      : %u\n", i, le32_to_cpu(vendorlog->io_err[i].io_dma_fatal_err));
        printf("[%d]io_dma_linkdown_err   : %u\n", i, le32_to_cpu(vendorlog->io_err[i].io_dma_linkdown_err));
        printf("[%d]io_dma_timeout_err    : %u\n", i, le32_to_cpu(vendorlog->io_err[i].io_dma_timeout_err));
        printf("[%d]lba_err[0]            : %u\n", i, le32_to_cpu(vendorlog->io_err[i].lba_err[0]));
        printf("[%d]lba_err[1]            : %u\n", i, le32_to_cpu(vendorlog->io_err[i].lba_err[1]));
        printf("[%d]lba_err[2]            : %u\n", i, le32_to_cpu(vendorlog->io_err[i].lba_err[2]));
        printf("[%d]lba_err[3]            : %u\n", i, le32_to_cpu(vendorlog->io_err[i].lba_err[3]));
        printf("[%d]lba_err[4]            : %u\n", i, le32_to_cpu(vendorlog->io_err[i].lba_err[4]));
        printf("[%d]lba_err[5]            : %u\n", i, le32_to_cpu(vendorlog->io_err[i].lba_err[5]));
    }

    printf("temp_throttle_per         : %u\n", le32_to_cpu(vendorlog->temp_throttle_per));
    printf("port0_flreset_cnt         : %" PRIu64 "\n", le64_to_cpu(vendorlog->port0_fundamental_reset_cnt));
    printf("port0_hot_reset_cnt       : %" PRIu64 "\n", le64_to_cpu(vendorlog->port0_hot_reset_cnt));
    printf("port0_func_reset_cnt      : %" PRIu64 "\n", le64_to_cpu(vendorlog->port0_func_reset_cnt));
    printf("port0_linkdown_cnt        : %" PRIu64 "\n", le64_to_cpu(vendorlog->port0_linkdown_cnt));
    printf("port0_ctrl_reset_cnt      : %" PRIu64 "\n", le64_to_cpu(vendorlog->port0_ctrl_reset_cnt));
    printf("ces_RcvErr_cnt            : %u\n", le32_to_cpu(vendorlog->ces_RcvErr_cnt));
    printf("ces_BadTlp_cnt            : %u\n", le32_to_cpu(vendorlog->ces_BadTlp_cnt));
    printf("ces_BadDllp_cnt           : %u\n", le32_to_cpu(vendorlog->ces_BadDllp_cnt));
    printf("ces_Rplyover_cnt          : %u\n", le32_to_cpu(vendorlog->ces_Rplyover_cnt));
    printf("ces_RplyTo_cnt            : %u\n", le32_to_cpu(vendorlog->ces_RplyTo_cnt));
    printf("ces_Hlo_cnt               : %u\n", le32_to_cpu(vendorlog->ces_Hlo_cnt));
    printf("scan doorbell err cnt        : %u\n", le32_to_cpu(vendorlog->scan_db_err_cnt));
    printf("doorbell interrupt err cnt   : %u\n", le32_to_cpu(vendorlog->db_int_err_cnt));

    printf("------------ncm-----------------------\n");
    for (i = 0; i < 4; i++) {
        printf("------------part%d-----------------------\n", i);
        printf("[%d]nand_rd_unc_count         : %u\n", i,
               le32_to_cpu(vendorlog->vendor_log_nandctl_cnt[i].nand_rd_unc_cnt));
        printf("[%d]nand_rd_srr_count         : %u\n", i,
               le32_to_cpu(vendorlog->vendor_log_nandctl_cnt[i].nand_rd_srr_cnt));
        printf("[%d]nand_rd_sdecode_count     : %u\n", i,
               le32_to_cpu(vendorlog->vendor_log_nandctl_cnt[i].nand_rd_soft_decode_cnt));
        printf("[%d]nand_rd_rb_fail_count     : %u\n", i,
               le32_to_cpu(vendorlog->vendor_log_nandctl_cnt[i].nand_rd_rebuild_fail_cnt));
        printf("[%d]nand_prg_fail_count       : %u\n", i,
               le32_to_cpu(vendorlog->vendor_log_nandctl_cnt[i].nand_prg_fail_cnt));
        printf("[%d]nand_eras_fail_count      : %u\n", i,
               le32_to_cpu(vendorlog->vendor_log_nandctl_cnt[i].nand_eras_fail_cnt));
        printf("[%d]nand_rd_count             : %" PRIu64 "\n", i,
               le64_to_cpu(vendorlog->vendor_log_nandctl_cnt[i].nand_rd_cnt));
        printf("[%d]nand_prg_count            : %" PRIu64 "\n", i,
               le64_to_cpu(vendorlog->vendor_log_nandctl_cnt[i].nand_prg_cnt));
        printf("[%d]nand_eras_count           : %" PRIu64 "\n", i,
               le64_to_cpu(vendorlog->vendor_log_nandctl_cnt[i].nand_eras_cnt));
        printf("[%d]BE_scan_unc_count         : %u\n", i,
               le32_to_cpu(vendorlog->vendor_log_nandctl_cnt[i].BE_scan_unc_cnt));
        printf("[%d]rebuild_req_cnt           : %u\n", i,
               le32_to_cpu(vendorlog->vendor_log_nandctl_cnt[i].rebuild_req_cnt));
        printf("[%d]retry_req_cnt             : %u\n", i,
               le32_to_cpu(vendorlog->vendor_log_nandctl_cnt[i].retry_req_cnt));
        printf("[%d]retry_success_cnt         : %u\n", i,
               le32_to_cpu(vendorlog->vendor_log_nandctl_cnt[i].retry_success_cnt));
        printf("[%d]prg_badblk_num            : %u\n", i,
               le32_to_cpu(vendorlog->vendor_log_nandctl_cnt[i].prg_badblk_num));
        printf("[%d]eras_badblk_num           : %u\n", i,
               le32_to_cpu(vendorlog->vendor_log_nandctl_cnt[i].eras_badblk_num));
        printf("[%d]read_badblk_num           : %u\n", i,
               le32_to_cpu(vendorlog->vendor_log_nandctl_cnt[i].unc_badblk_num));
    }

    printf("[%d]temp_ctrl_limit_count         : %u\n", i, le32_to_cpu(vendorlog->temp_ctrl_limit_cnt));
    printf("[%d]temp_ctrl_stop_count          : %u\n", i, le32_to_cpu(vendorlog->temp_ctrl_stop_cnt));
    printf("------------wlm-----------------------\n");
    for (i = 0; i < 4; i++) {
        printf("------------part%d-----------------------\n", i);
        printf("[%d]fbb_count                 : %u\n", i,
               le32_to_cpu(vendorlog->wearlvl_vendor_log_count[i].fbb_count));
        printf("[%d]ebb_count                 : %u\n", i,
               le32_to_cpu(vendorlog->wearlvl_vendor_log_count[i].ebb_count));
        printf("[%d]lbb_count                 : %u\n", i,
               le32_to_cpu(vendorlog->wearlvl_vendor_log_count[i].lbb_count));
        printf("[%d]gc_read_count             : %u\n", i,
               le32_to_cpu(vendorlog->wearlvl_vendor_log_count[i].gc_read_count));
        printf("[%d]gc_write_count            : %u\n", i,
               le32_to_cpu(vendorlog->wearlvl_vendor_log_count[i].gc_write_count));
        printf("[%d]gc_write_fail_count       : %u\n", i,
               le32_to_cpu(vendorlog->wearlvl_vendor_log_count[i].gc_write_fail_count));
        printf("[%d]force_gc_count            : %u\n", i,
               le32_to_cpu(vendorlog->wearlvl_vendor_log_count[i].force_gc_count));
        printf("[%d]avg_pe_count              : %u\n", i,
               le32_to_cpu(vendorlog->wearlvl_vendor_log_count[i].avg_pe_count));
        printf("[%d]max_pe_count              : %u\n", i,
               le32_to_cpu(vendorlog->wearlvl_vendor_log_count[i].max_pe_count));
        printf("[%d]free_blk_num1             : %u\n", i,
               le32_to_cpu(vendorlog->wearlvl_vendor_log_count[i].free_blk_num1));
        printf("[%d]free_blk_num2             : %u\n", i,
               le32_to_cpu(vendorlog->wearlvl_vendor_log_count[i].free_blk_num2));
    }

    printf("------------lkm-----------------------\n");
    printf("[%d]e2e_check_err_count1          : %u\n", i, le32_to_cpu(vendorlog->e2e_check_err_cnt1));
    printf("[%d]e2e_check_err_count2          : %u\n", i, le32_to_cpu(vendorlog->e2e_check_err_cnt2));
    printf("[%d]e2e_check_err_count3          : %u\n", i, le32_to_cpu(vendorlog->e2e_check_err_cnt3));
    printf("[%d]e2e_check_err_count4          : %u\n", i, le32_to_cpu(vendorlog->e2e_check_err_cnt4));
}

void show_r1_media_err_log(r1_cli_vendor_log_t *vendorlog)
{
    int i, j;

    for (i = 0; i < 4; i++) {
        printf("DM%d read err lba:\n", i);
        for (j = 0; j < 10; j++) {
            printf("[%d]lba : %" PRIu64 "\n", j, le64_to_cpu(vendorlog->media_err[i].lba_err[j]));
        }
    }
}

static int nvme_get_vendor_log(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
    __u8 local_mem[BYTE_OF_4K];
    char *desc = "Get the Inspur vendor log";
    struct nvme_dev *dev;
    int err;

    OPT_ARGS(opts) = { OPT_END() };

    err = parse_and_open(&dev, argc, argv, desc, opts);
    if (err)
        return err;

    memset(local_mem, 0, BYTE_OF_4K);
    err = nvme_get_log_simple(dev_fd(dev),
                              (enum nvme_cmd_get_log_lid)VENDOR_SMART_LOG_PAGE,
                              sizeof(r1_cli_vendor_log_t), local_mem);
    if (!err) {
        show_r1_vendor_log((r1_cli_vendor_log_t *)local_mem);
        show_r1_media_err_log((r1_cli_vendor_log_t *)local_mem);
    } else {
        nvme_show_status(err);
    }

    dev_close(dev);
    return err;
}
   070701015D6C25000081A4000003E80000006400000001642C0FB500000426000000000000004A00000000000000000000002400000000nvme-cli/plugins/intel/intel-nvme.h   /* SPDX-License-Identifier: GPL-2.0-or-later */
#undef CMD_INC_FILE
#define CMD_INC_FILE plugins/intel/intel-nvme

#if !defined(INTEL_NVME) || defined(CMD_HEADER_MULTI_READ)
#define INTEL_NVME

#include "cmd.h"

PLUGIN(NAME("intel", "Intel vendor specific extensions", NVME_VERSION),
	COMMAND_LIST(
		ENTRY("id-ctrl", "Send NVMe Identify Controller", id_ctrl)
		ENTRY("internal-log", "Retrieve Intel internal firmware log, save it", get_internal_log)
		ENTRY("lat-stats", "Retrieve Intel IO Latency Statistics log, show it", get_lat_stats_log)
		ENTRY("set-bucket-thresholds", "Set Latency Stats Bucket Values, save it", set_lat_stats_thresholds)
		ENTRY("lat-stats-tracking", "Enable and disable Latency Statistics logging.", enable_lat_stats_tracking)
		ENTRY("market-name", "Retrieve Intel Marketing Name log, show it", get_market_log)
		ENTRY("smart-log-add", "Retrieve Intel SMART Log, show it", get_additional_smart_log)
		ENTRY("temp-stats", "Retrieve Intel Temperature Statistics log, show it", get_temp_stats_log)
	)
);

#endif

#include "define_cmd.h"
  070701015D6E57000081A4000003E80000006400000001642C0FB60000B967000000000000004A00000000000000000000002400000000nvme-cli/plugins/intel/intel-nvme.c   // SPDX-License-Identifier: GPL-2.0-or-later
#include <fcntl.h>
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <inttypes.h>

#include "common.h"
#include "nvme.h"
#include "libnvme.h"
#include "plugin.h"
#include "linux/types.h"
#include "nvme-print.h"

#define CREATE_CMD
#include "intel-nvme.h"

struct  __attribute__((packed)) nvme_additional_smart_log_item {
	__u8			key;
	__u8			_kp[2];
	__u8			norm;
	__u8			_np;
	union __attribute__((packed)) {
		__u8		raw[6];
		struct __attribute__((packed))  wear_level {
			__le16	min;
			__le16	max;
			__le16	avg;
		} wear_level;
		struct __attribute__((packed)) thermal_throttle {
			__u8	pct;
			__u32	count;
		} thermal_throttle;
	} ;
	__u8			_rp;
} ;

struct nvme_additional_smart_log {
	struct nvme_additional_smart_log_item	program_fail_cnt;
	struct nvme_additional_smart_log_item	erase_fail_cnt;
	struct nvme_additional_smart_log_item	wear_leveling_cnt;
	struct nvme_additional_smart_log_item	e2e_err_cnt;
	struct nvme_additional_smart_log_item	crc_err_cnt;
	struct nvme_additional_smart_log_item	timed_workload_media_wear;
	struct nvme_additional_smart_log_item	timed_workload_host_reads;
	struct nvme_additional_smart_log_item	timed_workload_timer;
	struct nvme_additional_smart_log_item	thermal_throttle_status;
	struct nvme_additional_smart_log_item	retry_buffer_overflow_cnt;
	struct nvme_additional_smart_log_item	pll_lock_loss_cnt;
	struct nvme_additional_smart_log_item	nand_bytes_written;
	struct nvme_additional_smart_log_item	host_bytes_written;
	struct nvme_additional_smart_log_item	host_ctx_wear_used;
	struct nvme_additional_smart_log_item	perf_stat_indicator;
	struct nvme_additional_smart_log_item	re_alloc_sectr_cnt;
	struct nvme_additional_smart_log_item	soft_ecc_err_rate;
	struct nvme_additional_smart_log_item	unexp_power_loss;
	struct nvme_additional_smart_log_item	media_bytes_read;
	struct nvme_additional_smart_log_item	avail_fw_downgrades;
};

struct nvme_vu_id_ctrl_field { /* CDR MR5 */
	__u8			rsvd1[3];
	__u8			ss;
	__u8			health[20];
	__u8			cls;
	__u8			nlw;
	__u8			scap;
	__u8			sstat;
	__u8			bl[8];
	__u8			rsvd2[38];
	__u8			ww[8]; /* little endian */
	__u8			mic_bl[4];
	__u8			mic_fw[4];
};

static void json_intel_id_ctrl(struct nvme_vu_id_ctrl_field *id,
	char *health, char *bl, char *ww, char *mic_bl, char *mic_fw,
	struct json_object *root)
{
	json_object_add_value_int(root, "ss", id->ss);
	json_object_add_value_string(root, "health", health );
	json_object_add_value_int(root, "cls", id->cls);
	json_object_add_value_int(root, "nlw", id->nlw);
	json_object_add_value_int(root, "scap", id->scap);
	json_object_add_value_int(root, "sstat", id->sstat);
	json_object_add_value_string(root, "bl", bl);
	json_object_add_value_string(root, "ww", ww);
	json_object_add_value_string(root, "mic_bl", mic_bl);
	json_object_add_value_string(root, "mic_fw", mic_fw);
}

static void intel_id_ctrl(__u8 *vs, struct json_object *root)
{
	struct nvme_vu_id_ctrl_field* id = (struct nvme_vu_id_ctrl_field *)vs;

	char health[21] = { 0 };
	char bl[9] = { 0 };
	char ww[19] = { 0 };
	char mic_bl[5] = { 0 };
	char mic_fw[5] = { 0 };


	if (id->health[0]==0)
	{
			snprintf(health, 21, "%s", "healthy");
	}
	else
	{
			snprintf(health, 21, "%s", id->health);
	}

	snprintf(bl, 9, "%s", id->bl);
	snprintf(ww, 19, "%02X%02X%02X%02X%02X%02X%02X%02X", id->ww[7],
		id->ww[6], id->ww[5], id->ww[4], id->ww[3], id->ww[2],
		id->ww[1], id->ww[0]);
	snprintf(mic_bl, 5, "%s", id->mic_bl);
	snprintf(mic_fw, 5, "%s", id->mic_fw);

	if (root) {
		json_intel_id_ctrl(id, health, bl, ww, mic_bl, mic_fw, root);
		return;
	}

	printf("ss        : %d\n", id->ss);
	printf("health    : %s\n", health);
	printf("cls       : %d\n", id->cls);
	printf("nlw       : %d\n", id->nlw);
	printf("scap      : %d\n", id->scap);
	printf("sstat     : %d\n", id->sstat);
	printf("bl        : %s\n", bl);
	printf("ww        : %s\n", ww);
	printf("mic_bl    : %s\n", mic_bl);
	printf("mic_fw    : %s\n", mic_fw);
}

static int id_ctrl(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	return __id_ctrl(argc, argv, cmd, plugin, intel_id_ctrl);
}

static void show_intel_smart_log_jsn(struct nvme_additional_smart_log *smart,
		unsigned int nsid, const char *devname)
{
	struct json_object *root, *entry_stats, *dev_stats, *multi;

	root = json_create_object();
	json_object_add_value_string(root, "Intel Smart log", devname);

	dev_stats = json_create_object();

	entry_stats = json_create_object();
	json_object_add_value_int(entry_stats, "normalized", smart->program_fail_cnt.norm);
	json_object_add_value_int(entry_stats, "raw", int48_to_long(smart->program_fail_cnt.raw));
	json_object_add_value_object(dev_stats, "program_fail_count", entry_stats);

	entry_stats = json_create_object();
	json_object_add_value_int(entry_stats, "normalized", smart->erase_fail_cnt.norm);
	json_object_add_value_int(entry_stats, "raw", int48_to_long(smart->erase_fail_cnt.raw));
	json_object_add_value_object(dev_stats, "erase_fail_count", entry_stats);

	entry_stats = json_create_object();
	json_object_add_value_int(entry_stats, "normalized", smart->wear_leveling_cnt.norm);
	multi = json_create_object();
	json_object_add_value_int(multi, "min", le16_to_cpu(smart->wear_leveling_cnt.wear_level.min));
	json_object_add_value_int(multi, "max", le16_to_cpu(smart->wear_leveling_cnt.wear_level.max));
	json_object_add_value_int(multi, "avg", le16_to_cpu(smart->wear_leveling_cnt.wear_level.avg));
	json_object_add_value_object(entry_stats, "raw", multi);
	json_object_add_value_object(dev_stats, "wear_leveling", entry_stats);

	entry_stats = json_create_object();
	json_object_add_value_int(entry_stats, "normalized", smart->e2e_err_cnt.norm);
	json_object_add_value_int(entry_stats, "raw", int48_to_long(smart->e2e_err_cnt.raw));
	json_object_add_value_object(dev_stats, "end_to_end_error_detection_count", entry_stats);

	entry_stats = json_create_object();
	json_object_add_value_int(entry_stats, "normalized", smart->crc_err_cnt.norm);
	json_object_add_value_int(entry_stats, "raw", int48_to_long(smart->crc_err_cnt.raw));
	json_object_add_value_object(dev_stats, "crc_error_count", entry_stats);

	entry_stats = json_create_object();
	json_object_add_value_int(entry_stats, "normalized", smart->timed_workload_media_wear.norm);
	json_object_add_value_double(entry_stats, "raw", ((long double)int48_to_long(smart->timed_workload_media_wear.raw)) / 1024);
	json_object_add_value_object(dev_stats, "timed_workload_media_wear", entry_stats);

	entry_stats = json_create_object();
	json_object_add_value_int(entry_stats, "normalized", smart->timed_workload_host_reads.norm);
	json_object_add_value_int(entry_stats, "raw", int48_to_long(smart->timed_workload_host_reads.raw));
	json_object_add_value_object(dev_stats, "timed_workload_host_reads", entry_stats);

	entry_stats = json_create_object();
	json_object_add_value_int(entry_stats, "normalized", smart->timed_workload_timer.norm);
	json_object_add_value_int(entry_stats, "raw", int48_to_long(smart->timed_workload_timer.raw));
	json_object_add_value_object(dev_stats, "timed_workload_timer", entry_stats);

	entry_stats = json_create_object();
	json_object_add_value_int(entry_stats, "normalized", smart->thermal_throttle_status.norm);
	multi = json_create_object();
	json_object_add_value_int(multi, "pct", smart->thermal_throttle_status.thermal_throttle.pct);
	json_object_add_value_int(multi, "cnt", smart->thermal_throttle_status.thermal_throttle.count);
	json_object_add_value_object(entry_stats, "raw", multi);
	json_object_add_value_object(dev_stats, "thermal_throttle_status", entry_stats);

	entry_stats = json_create_object();
	json_object_add_value_int(entry_stats, "normalized", smart->retry_buffer_overflow_cnt.norm);
	json_object_add_value_int(entry_stats, "raw", 	int48_to_long(smart->retry_buffer_overflow_cnt.raw));
	json_object_add_value_object(dev_stats, "retry_buffer_overflow_count", entry_stats);

	entry_stats = json_create_object();
	json_object_add_value_int(entry_stats, "normalized", smart->pll_lock_loss_cnt.norm);
	json_object_add_value_int(entry_stats, "raw", 	int48_to_long(smart->pll_lock_loss_cnt.raw));
	json_object_add_value_object(dev_stats, "pll_lock_loss_count", entry_stats);

	entry_stats = json_create_object();
	json_object_add_value_int(entry_stats, "normalized", smart->nand_bytes_written.norm);
	json_object_add_value_int(entry_stats, "raw", 	int48_to_long(smart->nand_bytes_written.raw));
	json_object_add_value_object(dev_stats, "nand_bytes_written", entry_stats);

	entry_stats = json_create_object();
	json_object_add_value_int(entry_stats, "normalized", smart->host_bytes_written.norm);
	json_object_add_value_int(entry_stats, "raw", 	int48_to_long(smart->host_bytes_written.raw));
	json_object_add_value_object(dev_stats, "host_bytes_written", entry_stats);

	entry_stats = json_create_object();
	json_object_add_value_int(entry_stats, "normalized", smart->host_ctx_wear_used.norm);
	json_object_add_value_int(entry_stats, "raw", 	int48_to_long(smart->host_ctx_wear_used.raw));
	json_object_add_value_object(dev_stats, "host_ctx_wear_used", entry_stats);

	entry_stats = json_create_object();
	json_object_add_value_int(entry_stats, "normalized", smart->perf_stat_indicator.norm);
	json_object_add_value_int(entry_stats, "raw", 	int48_to_long(smart->perf_stat_indicator.raw));
	json_object_add_value_object(dev_stats, "perf_stat_indicator", entry_stats);

	entry_stats = json_create_object();
	json_object_add_value_int(entry_stats, "normalized", smart->re_alloc_sectr_cnt.norm);
	json_object_add_value_int(entry_stats, "raw", 	int48_to_long(smart->re_alloc_sectr_cnt.raw));
	json_object_add_value_object(dev_stats, "re_alloc_sectr_cnt", entry_stats);

	entry_stats = json_create_object();
	json_object_add_value_int(entry_stats, "normalized", smart->soft_ecc_err_rate.norm);
	json_object_add_value_int(entry_stats, "raw", 	int48_to_long(smart->soft_ecc_err_rate.raw));
	json_object_add_value_object(dev_stats, "soft_ecc_err_rate", entry_stats);

	entry_stats = json_create_object();
	json_object_add_value_int(entry_stats, "normalized", smart->unexp_power_loss.norm);
	json_object_add_value_int(entry_stats, "raw", 	int48_to_long(smart->unexp_power_loss.raw));
	json_object_add_value_object(dev_stats, "unexp_power_loss", entry_stats);

	entry_stats = json_create_object();
	json_object_add_value_int(entry_stats, "normalized", smart->media_bytes_read.norm);
	json_object_add_value_int(entry_stats, "raw", 	int48_to_long(smart->media_bytes_read.raw));
	json_object_add_value_object(dev_stats, "media_bytes_read", entry_stats);

	entry_stats = json_create_object();
	json_object_add_value_int(entry_stats, "normalized", smart->avail_fw_downgrades.norm);
	json_object_add_value_int(entry_stats, "raw", 	int48_to_long(smart->avail_fw_downgrades.raw));
	json_object_add_value_object(dev_stats, "avail_fw_downgrades", entry_stats);

	json_object_add_value_object(root, "Device stats", dev_stats);

	json_print_object(root, NULL);
	json_free_object(root);
}

static char *id_to_key(__u8 id)
{
	switch (id) {
	case 0xAB:
		return "program_fail_count";
	case 0xAC:
		return "erase_fail_count";
	case 0xAD:
		return "wear_leveling_count";
	case 0xB8:
		return "e2e_error_detect_count";
	case 0xC7:
		return "crc_error_count";
	case 0xE2:
		return "media_wear_percentage";
	case 0xE3:
		return "host_reads";
	case 0xE4:
		return "timed_work_load";
	case 0xEA:
		return "thermal_throttle_status";
	case 0xF0:
		return "retry_buff_overflow_count";
	case 0xF3:
		return "pll_lock_loss_counter";
	case 0xF4:
		return "nand_bytes_written";
	case 0xF5:
		return "host_bytes_written";
	case 0xF6:
		return "host_context_wear_used";
	case 0xF7:
		return "performance_status_indicator";
	case 0xF8:
		return "media_bytes_read";
	case 0xF9:
		return "available_fw_downgrades";
	case 0x05:
		return "re-allocated_sector_count";
	case 0x0D:
		return "soft_ecc_error_rate";
	case 0xAE:
		return "unexpected_power_loss";
	default:
		return "Invalid ID";
	}
}

static void print_intel_smart_log_items(struct nvme_additional_smart_log_item *item)
{
	if (!item->key)
		return;

	printf("%#x    %-45s  %3d         %"PRIu64"\n",
		item->key, id_to_key(item->key),
		item->norm, int48_to_long(item->raw));
}

static void show_intel_smart_log(struct nvme_additional_smart_log *smart,
		unsigned int nsid, const char *devname)
{
	struct nvme_additional_smart_log_item *iter = &smart->program_fail_cnt;
	int num_items = sizeof(struct nvme_additional_smart_log) /
				sizeof(struct nvme_additional_smart_log_item);

	printf("Additional Smart Log for NVME device:%s namespace-id:%x\n",
		devname, nsid);
	printf("ID             KEY                                 Normalized     Raw\n");

	for (int i = 0; i < num_items; i++, iter++)
		print_intel_smart_log_items(iter);
}

static int get_additional_smart_log(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	const char *desc = "Get Intel vendor specific additional smart log (optionally, "\
		      "for the specified namespace), and show it.";
	const char *namespace = "(optional) desired namespace";
	const char *raw = "Dump output in binary format";
	const char *json= "Dump output in json format";

	struct nvme_additional_smart_log smart_log;
	struct nvme_dev *dev;
	int err;

	struct config {
		__u32 namespace_id;
		bool  raw_binary;
		bool  json;
	};

	struct config cfg = {
		.namespace_id = NVME_NSID_ALL,
	};

	OPT_ARGS(opts) = {
		OPT_UINT("namespace-id", 'n', &cfg.namespace_id, namespace),
		OPT_FLAG("raw-binary",   'b', &cfg.raw_binary,   raw),
		OPT_FLAG("json",         'j', &cfg.json,         json),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		return err;

	err = nvme_get_log_simple(dev_fd(dev), 0xca, sizeof(smart_log),
				  &smart_log);
	if (!err) {
		if (cfg.json)
			show_intel_smart_log_jsn(&smart_log, cfg.namespace_id,
						 dev->name);
		else if (!cfg.raw_binary)
			show_intel_smart_log(&smart_log, cfg.namespace_id,
					     dev->name);
		else
			d_raw((unsigned char *)&smart_log, sizeof(smart_log));
	}
	else if (err > 0)
		nvme_show_status(err);
	dev_close(dev);
	return err;
}

static int get_market_log(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	const char *desc = "Get Intel Marketing Name log and show it.";
	const char *raw = "dump output in binary format";
	struct nvme_dev *dev;
	char log[512];
	int err;

	struct config {
		bool  raw_binary;
	};

	struct config cfg = {
	};

	OPT_ARGS(opts) = {
		OPT_FLAG("raw-binary", 'b', &cfg.raw_binary, raw),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		return err;

	err = nvme_get_log_simple(dev_fd(dev), 0xdd, sizeof(log), log);
	if (!err) {
		if (!cfg.raw_binary)
			printf("Intel Marketing Name Log:\n%s\n", log);
		else
			d_raw((unsigned char *)&log, sizeof(log));
	} else if (err > 0)
		nvme_show_status(err);
	dev_close(dev);
	return err;
}

struct intel_temp_stats {
	__le64	curr;
	__le64	last_overtemp;
	__le64	life_overtemp;
	__le64	highest_temp;
	__le64	lowest_temp;
	__u8	rsvd[40];
	__le64	max_operating_temp;
	__le64	min_operating_temp;
	__le64	est_offset;
};

static void show_temp_stats(struct intel_temp_stats *stats)
{
	printf("  Intel Temperature Statistics\n");
	printf("--------------------------------\n");
	printf("Current temperature         : %"PRIu64"\n", le64_to_cpu(stats->curr));
	printf("Last critical overtemp flag : %"PRIu64"\n", le64_to_cpu(stats->last_overtemp));
	printf("Life critical overtemp flag : %"PRIu64"\n", le64_to_cpu(stats->life_overtemp));
	printf("Highest temperature         : %"PRIu64"\n", le64_to_cpu(stats->highest_temp));
	printf("Lowest temperature          : %"PRIu64"\n", le64_to_cpu(stats->lowest_temp));
	printf("Max operating temperature   : %"PRIu64"\n", le64_to_cpu(stats->max_operating_temp));
	printf("Min operating temperature   : %"PRIu64"\n", le64_to_cpu(stats->min_operating_temp));
	printf("Estimated offset            : %"PRIu64"\n", le64_to_cpu(stats->est_offset));
}

static int get_temp_stats_log(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	struct intel_temp_stats stats;
	struct nvme_dev *dev;
	int err;

	const char *desc = "Get Temperature Statistics log and show it.";
	const char *raw = "dump output in binary format";
	struct config {
		bool  raw_binary;
	};

	struct config cfg = {
	};

	OPT_ARGS(opts) = {
		OPT_FLAG("raw-binary", 'b', &cfg.raw_binary, raw),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		return err;

	err = nvme_get_log_simple(dev_fd(dev), 0xc5, sizeof(stats), &stats);
	if (!err) {
		if (!cfg.raw_binary)
			show_temp_stats(&stats);
		else
			d_raw((unsigned char *)&stats, sizeof(stats));
	} else if (err > 0)
		nvme_show_status(err);
	dev_close(dev);
	return err;
}

struct intel_lat_stats {
	__u16 maj;
	__u16 min;
	__u32 data[1216];
};

struct __attribute__((__packed__)) optane_lat_stats {
	__u16 maj;
	__u16 min;
	__u64 data[9];
};

#define MEDIA_MAJOR_IDX			0
#define MEDIA_MINOR_IDX			1
#define MEDIA_MAX_LEN			2
#define OPTANE_V1000_BUCKET_LEN		8
#define OPTANE_V1000_BUCKET_LEN		8
#define NAND_LAT_STATS_LEN		4868


static struct intel_lat_stats stats;
static struct optane_lat_stats v1000_stats;

struct v1000_thresholds {
	__u32 read[OPTANE_V1000_BUCKET_LEN];
	__u32 write[OPTANE_V1000_BUCKET_LEN];
};

static struct v1000_thresholds v1000_bucket;
static __u16 media_version[MEDIA_MAX_LEN] = {0};

enum FormatUnit {
	US,
	MS,
	S
};

/*
 * COL_WIDTH controls width of columns in human-readable output.
 * BUFSIZE is for local temp char[]
 * US_IN_S and US_IN_MS are for unit conversions when printing.
 */
#define COL_WIDTH 12
#define BUFSIZE 10
#define US_IN_S 1000000
#define US_IN_MS 1000

static enum FormatUnit get_seconds_magnitude(__u32 microseconds)
{
	if (microseconds > US_IN_S)
		return S;
	else if (microseconds > US_IN_MS)
		return MS;
	else
		return US;
}

static float convert_seconds(__u32 microseconds)
{
	float divisor = 1.0;

	if (microseconds > US_IN_S)
		divisor = US_IN_S;
	else if (microseconds > US_IN_MS)
		divisor = US_IN_MS;
	return microseconds / divisor;
}

/*
 * For control over whether a string will format to +/-INF or
 * print out ####.##US normally.
 */
enum inf_bound_type {
	NEGINF,
	POSINF,
	NOINF
};

/*
 * Edge buckets may have range [#s, inf) or (-inf, #US] in some
 * latency statistics formats.
 * Passing in NEGINF to POSINF to bound_type overrides the string to
 * either of "-INF" or "+INF", respectively.
 */
static void set_unit_string(char *buffer, __u32 microseconds,
			    enum FormatUnit unit,
			    enum inf_bound_type bound_type)
{
	char *string;

	if (bound_type != NOINF) {
		snprintf(buffer, BUFSIZE, "%s", bound_type ? "+INF" : "-INF");
		return;
	}

	switch (unit) {
	case US:
		string = "us";
		break;
	case MS:
		string = "ms";
		break;
	case S:
		string = "s";
		break;
	default:
		string = "_s";
		break;
	}

	snprintf(buffer, BUFSIZE, "%4.2f%s", convert_seconds(microseconds),
		 string);
}

static void init_buffer(char *buffer, size_t size)
{
	size_t i;

	for (i = 0; i < size; i++)
		buffer[i] = i + '0';
}

static void show_lat_stats_bucket(struct intel_lat_stats *stats,
	__u32 lower_us, enum inf_bound_type start_type,
	__u32 upper_us, enum inf_bound_type end_type, int i)
{
	enum FormatUnit fu = S;
	char buffer[BUFSIZE];

	init_buffer(buffer, BUFSIZE);
	printf("%-*d", COL_WIDTH, i);

	fu = get_seconds_magnitude(lower_us);
	set_unit_string(buffer, lower_us, fu, start_type);
	printf("%-*s", COL_WIDTH, buffer);

	fu = get_seconds_magnitude(upper_us);
	set_unit_string(buffer, upper_us, fu, end_type);
	printf("%-*s", COL_WIDTH, buffer);

	printf("%-*d\n", COL_WIDTH, stats->data[i]);
}

static void show_optane_lat_stats_bucket(struct optane_lat_stats *stats,
	__u32 lower_us, enum inf_bound_type start_type,
	__u32 upper_us, enum inf_bound_type end_type, int i)
{
	enum FormatUnit fu = S;
	char buffer[BUFSIZE];

	init_buffer(buffer, BUFSIZE);
	printf("%-*d", COL_WIDTH, i);

	fu = get_seconds_magnitude(lower_us);
	set_unit_string(buffer, lower_us, fu, start_type);
	printf("%-*s", COL_WIDTH, buffer);

	fu = get_seconds_magnitude(upper_us);
	set_unit_string(buffer, upper_us, fu, end_type);
	printf("%-*s", COL_WIDTH, buffer);

	printf("%-*lu\n", COL_WIDTH, (long unsigned int)stats->data[i]);
}


static void show_lat_stats_linear(struct intel_lat_stats *stats,
	__u32 start_offset, __u32 end_offset, __u32 bytes_per,
	__u32 us_step, bool nonzero_print)
{
	for (int i = (start_offset / bytes_per) - 1;
			i < end_offset / bytes_per; i++) {
		if (nonzero_print && stats->data[i] == 0)
			continue;
		show_lat_stats_bucket(stats, us_step * i, NOINF,
			us_step * (i + 1), NOINF, i);
	}
}

/*
 * For 4.0-4.5 revision.
 */
#define LATENCY_STATS_V4_BASE_BITS	6
#define LATENCY_STATS_V4_BASE_VAL	(1 << LATENCY_STATS_V4_BASE_BITS)

static int lat_stats_log_scale(int i)
{
	// if (i < 128)
	if (i < (LATENCY_STATS_V4_BASE_VAL << 1))
		return i;

	int error_bits = (i >> LATENCY_STATS_V4_BASE_BITS) - 1;
	int base = 1 << (error_bits + LATENCY_STATS_V4_BASE_BITS);
	int k = i % LATENCY_STATS_V4_BASE_VAL;

	return base + ((k + 0.5) * (1 << error_bits));
}

/*
 * Creates a subroot in the following manner:
 * {
 *   "latstats" : {
 *     "type" : "write" or "read",
 *     "values" : {
 */
static void lat_stats_make_json_root(
	struct json_object *root, struct json_object *bucket_list,
	int write)
{
	struct json_object *subroot = json_create_object();

	json_object_add_value_object(root, "latstats", subroot);
	json_object_add_value_string(subroot, "type", write ? "write" : "read");
	json_object_add_value_object(subroot, "values", bucket_list);
}

/*
 * Creates a bucket under the "values" json_object. Format is:
 * "values" : {
 *   "bucket" : {
 *     "id" : #,
 *     "start" : string,
 *     "end" : string,
 *     "value" : 0,
 *   },
 */
static void json_add_bucket(struct intel_lat_stats *stats,
	struct json_object *bucket_list, __u32 id,
	__u32 lower_us, enum inf_bound_type start_type,
	__u32 upper_us, enum inf_bound_type end_type, __u32 val)
{
	char buffer[BUFSIZE];
	struct json_object *bucket = json_create_object();

	init_buffer(buffer, BUFSIZE);

	json_object_array_add(bucket_list, bucket);
	json_object_add_value_int(bucket, "id", id);

	set_unit_string(buffer, lower_us,
		get_seconds_magnitude(lower_us), start_type);
	json_object_add_value_string(bucket, "start", buffer);

	set_unit_string(buffer, upper_us,
		get_seconds_magnitude(upper_us), end_type);
	json_object_add_value_string(bucket, "end", buffer);

	json_object_add_value_int(bucket, "value", val);
}

static void json_add_bucket_optane(struct json_object *bucket_list, __u32 id,
				   __u32 lower_us, enum inf_bound_type start_type,
				   __u32 upper_us, enum inf_bound_type end_type, __u32 val)
{
	char buffer[BUFSIZE];
	struct json_object *bucket = json_create_object();

	init_buffer(buffer, BUFSIZE);

	json_object_array_add(bucket_list, bucket);
	json_object_add_value_int(bucket, "id", id);

	set_unit_string(buffer, lower_us,
		get_seconds_magnitude(lower_us), start_type);
	json_object_add_value_string(bucket, "start", buffer);

	set_unit_string(buffer, upper_us,
		get_seconds_magnitude(upper_us), end_type);
	json_object_add_value_string(bucket, "end", buffer);

	json_object_add_value_uint(bucket, "value", val);

}

static void json_lat_stats_linear(struct intel_lat_stats *stats,
	struct json_object *bucket_list, __u32 start_offset,
	__u32 end_offset, __u32 bytes_per,
	__u32 us_step, bool nonzero_print)
{
	for (int i = (start_offset / bytes_per) - 1;
			i < end_offset / bytes_per; i++) {
		if (nonzero_print && stats->data[i] == 0)
			continue;

		json_add_bucket(stats, bucket_list,
			i, us_step * i, NOINF, us_step * (i + 1),
			NOINF, stats->data[i]);
	}
}

static void json_lat_stats_3_0(struct intel_lat_stats *stats,
	int write)
{
	struct json_object *root = json_create_object();
	struct json_object *bucket_list = json_object_new_array();

	lat_stats_make_json_root(root, bucket_list, write);

	json_lat_stats_linear(stats, bucket_list, 4, 131, 4, 32, false);
	json_lat_stats_linear(stats, bucket_list, 132, 255, 4, 1024, false);
	json_lat_stats_linear(stats, bucket_list, 256, 379, 4, 32768, false);
	json_lat_stats_linear(stats, bucket_list, 380, 383, 4, 32, true);
	json_lat_stats_linear(stats, bucket_list, 384, 387, 4, 32, true);
	json_lat_stats_linear(stats, bucket_list, 388, 391, 4, 32, true);

	json_print_object(root, NULL);
	json_free_object(root);
}

static void json_lat_stats_4_0(struct intel_lat_stats *stats,
	int write)
{
	struct json_object *root = json_create_object();
	struct json_object *bucket_list = json_object_new_array();

	lat_stats_make_json_root(root, bucket_list, write);

	__u32 lower_us = 0;
	__u32 upper_us = 1;
	bool end = false;
	int max = 1216;

	for (int i = 0; i < max; i++) {
		lower_us = lat_stats_log_scale(i);
		if (i >= max - 1)
			end = true;
		else
			upper_us = lat_stats_log_scale(i + 1);

		json_add_bucket(stats, bucket_list, i,
			lower_us, NOINF, upper_us,
			end ? POSINF : NOINF, stats->data[i]);
	}
	json_print_object(root, NULL);
	json_free_object(root);
}

static void show_lat_stats_3_0(struct intel_lat_stats *stats)
{
	show_lat_stats_linear(stats, 4, 131, 4, 32, false);
	show_lat_stats_linear(stats, 132, 255, 4, 1024, false);
	show_lat_stats_linear(stats, 256, 379, 4, 32768, false);
	show_lat_stats_linear(stats, 380, 383, 4, 32, true);
	show_lat_stats_linear(stats, 384, 387, 4, 32, true);
	show_lat_stats_linear(stats, 388, 391, 4, 32, true);
}

static void show_lat_stats_4_0(struct intel_lat_stats *stats)
{
	int lower_us = 0;
	int upper_us = 1;
	bool end = false;
	int max = 1216;

	for (int i = 0; i < max; i++) {
		lower_us = lat_stats_log_scale(i);
		if (i >= max - 1)
			end = true;
		else
			upper_us = lat_stats_log_scale(i + 1);

		show_lat_stats_bucket(stats, lower_us, NOINF,
			upper_us, end ? POSINF : NOINF, i);
	}
}

static void json_lat_stats_v1000_0(struct optane_lat_stats *stats, int write)
{
	int i;
	struct json_object *root = json_create_object();
	struct json_object *bucket_list = json_object_new_array();

	lat_stats_make_json_root(root, bucket_list, write);

	if (write) {
		for (i = 0; i < OPTANE_V1000_BUCKET_LEN - 1; i++)
			json_add_bucket_optane(bucket_list, i,
					       v1000_bucket.write[i], NOINF,
					       v1000_bucket.write[i + 1] - 1,
					       NOINF,
					       stats->data[i]);

		json_add_bucket_optane(bucket_list,
				       OPTANE_V1000_BUCKET_LEN - 1,
				       v1000_bucket.write[i],
				       NOINF,
				       v1000_bucket.write[i],
				       POSINF, stats->data[i]);
	} else {
		for (i = 0; i < OPTANE_V1000_BUCKET_LEN - 1; i++)
			json_add_bucket_optane(bucket_list, i,
					       v1000_bucket.read[i], NOINF,
					       v1000_bucket.read[i + 1] - 1,
					       NOINF,
					       stats->data[i]);

		json_add_bucket_optane(bucket_list,
				       OPTANE_V1000_BUCKET_LEN - 1,
				       v1000_bucket.read[i],
				       NOINF,
				       v1000_bucket.read[i],
				       POSINF, stats->data[i]);
	}

	struct json_object *subroot = json_create_object();
	json_object_add_value_object(root, "Average latency since last reset", subroot);

	json_object_add_value_uint(subroot, "value in us", stats->data[8]);

	json_print_object(root, NULL);
	json_free_object(root);

}

static void show_lat_stats_v1000_0(struct optane_lat_stats *stats, int write)
{
	int i;
	if (write) {
		for (i = 0; i < OPTANE_V1000_BUCKET_LEN - 1; i++)
			show_optane_lat_stats_bucket(stats,
						     v1000_bucket.write[i],
						     NOINF,
						     v1000_bucket.write[i + 1] -1,
						     NOINF, i);

		show_optane_lat_stats_bucket(stats, v1000_bucket.write[i],
					     NOINF, v1000_bucket.write[i],
					     POSINF, i);
	} else {
		for (i = 0; i < OPTANE_V1000_BUCKET_LEN - 1; i++)
			show_optane_lat_stats_bucket(stats,
						     v1000_bucket.read[i],
						     NOINF,
						     v1000_bucket.read[i + 1] -1,
						     NOINF, i);

		show_optane_lat_stats_bucket(stats, v1000_bucket.read[i],
					     NOINF, v1000_bucket.read[i],
					     POSINF, i);
	}

	printf("Average latency since last reset: %lu us\n", (long unsigned int)stats->data[8]);

}

static void json_lat_stats(int write)
{
	switch (media_version[MEDIA_MAJOR_IDX]) {
	case 3:
		json_lat_stats_3_0(&stats, write);
		break;
	case 4:
		switch (media_version[MEDIA_MINOR_IDX]) {
		case 0:
		case 1:
		case 2:
		case 3:
		case 4:
		case 5:
			json_lat_stats_4_0(&stats, write);
			break;
		default:
			printf("Unsupported minor revision (%u.%u)\n",
				stats.maj, stats.min);
			break;
		}
		break;
	case 1000:
		switch (media_version[MEDIA_MINOR_IDX]) {
		case 0:
			json_lat_stats_v1000_0(&v1000_stats, write);
			break;
		default:
			printf("Unsupported minor revision (%u.%u)\n",
				stats.maj, stats.min);
			break;
		}
		break;
	default:
		printf("Unsupported revision (%u.%u)\n",
			stats.maj, stats.min);
		break;
	}
	printf("\n");
}

static void print_dash_separator(int count)
{
	for (int i = 0; i < count; i++)
		putchar('-');
	putchar('\n');
}

static void show_lat_stats(int write)
{
	static const int separator_length = 50;

	printf("Intel IO %s Command Latency Statistics\n",
		write ? "Write" : "Read");
	printf("Major Revision : %u\nMinor Revision : %u\n",
		media_version[MEDIA_MAJOR_IDX], media_version[MEDIA_MINOR_IDX]);
	print_dash_separator(separator_length);
	printf("%-12s%-12s%-12s%-20s\n", "Bucket", "Start", "End", "Value");
	print_dash_separator(separator_length);

	switch (media_version[MEDIA_MAJOR_IDX]) {
	case 3:
		show_lat_stats_3_0(&stats);
		break;
	case 4:
		switch (media_version[MEDIA_MINOR_IDX]) {
		case 0:
		case 1:
		case 2:
		case 3:
		case 4:
		case 5:
		case 6:
			show_lat_stats_4_0(&stats);
			break;
		default:
			printf("Unsupported minor revision (%u.%u)\n",
				stats.maj, stats.min);
			break;
		}
		break;
	case 1000:
		switch (media_version[MEDIA_MINOR_IDX]) {
		case 0:
			show_lat_stats_v1000_0(&v1000_stats, write);
			break;
		default:
			printf("Unsupported minor revision (%u.%u)\n",
				stats.maj, stats.min);
			break;
		}
		break;
	default:
		printf("Unsupported revision (%u.%u)\n",
				stats.maj, stats.min);
		break;
	}
}

static int get_lat_stats_log(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	__u8 data[NAND_LAT_STATS_LEN];
	struct nvme_dev *dev;
	int err;

	const char *desc = "Get Intel Latency Statistics log and show it.";
	const char *raw = "Dump output in binary format";
	const char *json= "Dump output in json format";
	const char *write = "Get write statistics (read default)";

	struct config {
		bool raw_binary;
		bool json;
		bool write;
	};

	struct config cfg = {
	};

	OPT_ARGS(opts) = {
		OPT_FLAG("write",	'w', &cfg.write,	write),
		OPT_FLAG("raw-binary",	'b', &cfg.raw_binary,	raw),
		OPT_FLAG("json",	'j', &cfg.json,		json),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		return err;

	/* For optate, latency stats are deleted every time their LID is pulled.
	 * Therefore, we query the longest lat_stats log page first.
	 */
	err = nvme_get_log_simple(dev_fd(dev), cfg.write ? 0xc2 : 0xc1,
				  sizeof(data), &data);

	media_version[0] = (data[1] << 8) | data[0];
	media_version[1] = (data[3] << 8) | data[2];

	if (err)
		goto close_fd;

	if (media_version[0] == 1000) {
		__u32 thresholds[OPTANE_V1000_BUCKET_LEN] = {0};
		__u32 result;

		struct nvme_get_features_args args = {
			.args_size	= sizeof(args),
			.fd		= dev_fd(dev),
			.fid		= 0xf7,
			.nsid		= 0,
			.sel		= 0,
			.cdw11		= cfg.write ? 0x1 : 0x0,
			.uuidx		= 0,
			.data_len	= sizeof(thresholds),
			.data		= thresholds,
			.timeout	= NVME_DEFAULT_IOCTL_TIMEOUT,
			.result		= &result,
		};
		err = nvme_get_features(&args);
		if (err) {
			fprintf(stderr, "Quering thresholds failed. ");
			nvme_show_status(err);
			goto close_fd;
		}

		/* Update bucket thresholds to be printed */
		if (cfg.write) {
			for (int i = 0; i < OPTANE_V1000_BUCKET_LEN; i++)
				v1000_bucket.write[i] = thresholds[i];
		} else {
			for (int i = 0; i < OPTANE_V1000_BUCKET_LEN; i++)
				v1000_bucket.read[i] = thresholds[i];

		}

		/* Move counter values to optate stats struct which has a
		 * smaller size
		 */
		memcpy(&v1000_stats, (struct optane_lat_stats *)data,
		       sizeof(struct optane_lat_stats));
	} else {
		memcpy(&stats, (struct intel_lat_stats *)data,
		       sizeof(struct intel_lat_stats));
	}

	if (cfg.json)
		json_lat_stats(cfg.write);
	else if (!cfg.raw_binary)
		show_lat_stats(cfg.write);
	else {
		if (media_version[0] == 1000)
			d_raw((unsigned char *)&v1000_stats,
			      sizeof(v1000_stats));
		else
			d_raw((unsigned char *)&stats,
			      sizeof(stats));
	}

close_fd:
	dev_close(dev);
	return err;
}

struct intel_assert_dump {
	__u32 coreoffset;
	__u32 assertsize;
	__u8  assertdumptype;
	__u8  assertvalid;
	__u8  reserved[2];
};

struct intel_event_dump {
	__u32 numeventdumps;
	__u32 coresize;
	__u32 coreoffset;
	__u32 eventidoffset[16];
	__u8  eventIdValidity[16];
};

struct intel_vu_version {
	__u16    major;
	__u16    minor;
};

struct intel_event_header {
	__u32 eventidsize;
	struct intel_event_dump edumps[0];
};

struct intel_vu_log {
    struct intel_vu_version ver;
    __u32    header;
    __u32    size;
    __u32    numcores;
    __u8     reserved[4080];
};

struct intel_vu_nlog {
	struct intel_vu_version ver;
	__u32 logselect;
	__u32 totalnlogs;
	__u32 nlognum;
	__u32 nlogname;
	__u32 nlogbytesize;
	__u32 nlogprimarybuffsize;
	__u32 tickspersecond;
	__u32 corecount;
	__u32 nlogpausestatus;
	__u32 selectoffsetref;
	__u32 selectnlogpause;
	__u32 selectaddedoffset;
	__u32 nlogbufnum;
	__u32 nlogbufnummax;
	__u32 coreselected;
	__u32 reserved[3];
};

struct intel_cd_log {
	union {
		struct {
			__u32 selectLog  : 3;
			__u32 selectCore : 2;
			__u32 selectNlog : 8;
			__u8  selectOffsetRef : 1;
			__u32 selectNlogPause : 2;
			__u32 reserved2  : 16;
		} fields;
		__u32 entireDword;
    } u;
};

static void print_intel_nlog(struct intel_vu_nlog *intel_nlog)
{
	printf("Version Major %u\n"
	       "Version Minor %u\n"
	       "Log_select %u\n"
	       "totalnlogs %u\n"
	       "nlognum %u\n"
	       "nlogname %u\n"
	       "nlogbytesze %u\n"
	       "nlogprimarybuffsize %u\n"
	       "tickspersecond %u\n"
	       "corecount %u\n"
	       "nlogpausestatus %u\n"
	       "selectoffsetref %u\n"
	       "selectnlogpause %u\n"
	       "selectaddedoffset %u\n"
	       "nlogbufnum %u\n"
	       "nlogbufnummax %u\n"
	       "coreselected %u\n",
	       intel_nlog->ver.major, intel_nlog->ver.minor,
	       intel_nlog->logselect, intel_nlog->totalnlogs, intel_nlog->nlognum,
	       intel_nlog->nlogname, intel_nlog->nlogbytesize,
	       intel_nlog->nlogprimarybuffsize, intel_nlog->tickspersecond,
	       intel_nlog->corecount, intel_nlog->nlogpausestatus,
	       intel_nlog->selectoffsetref, intel_nlog->selectnlogpause,
	       intel_nlog->selectaddedoffset, intel_nlog->nlogbufnum,
	       intel_nlog->nlogbufnummax, intel_nlog->coreselected);
}

static int read_entire_cmd(struct nvme_passthru_cmd *cmd, int total_size,
			   const size_t max_tfer, int out_fd, int ioctl_fd,
			   __u8 *buf)
{
	int err = 0;
	size_t dword_tfer = 0;

	dword_tfer = min(max_tfer, total_size);
	while (total_size > 0) {
		err = nvme_submit_admin_passthru(ioctl_fd, cmd, NULL);
		if (err) {
			fprintf(stderr,
				"failed on cmd.data_len %u cmd.cdw13 %u cmd.cdw12 %x cmd.cdw10 %u err %x remaining size %d\n",
				cmd->data_len, cmd->cdw13, cmd->cdw12,
				cmd->cdw10, err, total_size);
			goto out;
		}

		if (out_fd > 0) {
			err = write(out_fd, buf, cmd->data_len);
			if (err < 0) {
				perror("write failure");
				goto out;
			}
			err = 0;
		}
		total_size -= dword_tfer;
		cmd->cdw13 += dword_tfer;
		cmd->cdw10 = dword_tfer = min(max_tfer, total_size);
		cmd->data_len = (min(max_tfer, total_size)) * 4;
	}

 out:
	return err;
}

static int write_header(__u8 *buf, int fd, size_t amnt)
{
	if (write(fd, buf, amnt) < 0)
		return 1;
	return 0;
}

static int read_header(struct nvme_passthru_cmd *cmd,__u8 *buf, int ioctl_fd,
			__u32 dw12, int nsid)
{
	memset(cmd, 0, sizeof(*cmd));
	memset(buf, 0, 4096);
	cmd->opcode = 0xd2;
	cmd->nsid = nsid;
	cmd->cdw10 = 0x400;
	cmd->cdw12 = dw12;
	cmd->data_len = 0x1000;
	cmd->addr = (unsigned long)(void *)buf;
	return read_entire_cmd(cmd, 0x400, 0x400, -1, ioctl_fd, buf);
}

static int setup_file(char *f, char *file, int fd, int type)
{
	struct nvme_id_ctrl ctrl;
	int err = 0, i = sizeof(ctrl.sn) - 1;

	err = nvme_identify_ctrl(fd, &ctrl);
	if (err)
		return err;

	/* Remove trailing spaces from the name */
	while (i && ctrl.sn[i] == ' ') {
		ctrl.sn[i] = '\0';
		i--;
	}

	sprintf(f, "%s_%-.*s.bin", type == 0 ? "Nlog" :
		type == 1 ? "EventLog" :  "AssertLog",
		(int)sizeof(ctrl.sn), ctrl.sn);
	return err;
}

static int get_internal_log_old(__u8 *buf, int output, int fd,
				struct nvme_passthru_cmd *cmd)
{
	struct intel_vu_log *intel;
	int err = 0;
	const int dwmax = 0x400;
	const int dmamax = 0x1000;

	intel = (struct intel_vu_log *)buf;

	printf("Log major:%d minor:%d header:%d size:%d\n",
		intel->ver.major, intel->ver.minor, intel->header, intel->size);

	err = write(output, buf, 0x1000);
	if (err < 0) {
		perror("write failure");
		goto out;
	}
	intel->size -= 0x400;
	cmd->opcode = 0xd2;
	cmd->cdw10 = min(dwmax, intel->size);
	cmd->data_len = min(dmamax, intel->size);
	err = read_entire_cmd(cmd, intel->size, dwmax, output, fd, buf);
	if (err)
		goto out;

	err = 0;
 out:
	return err;
}

static int get_internal_log(int argc, char **argv, struct command *command,
				struct plugin *plugin)
{
	__u8 buf[0x2000];
	char f[0x100];
	int err, output, i, j, count = 0, core_num = 1;
	struct nvme_passthru_cmd cmd;
	struct intel_cd_log cdlog;
	struct intel_vu_log *intel = malloc(sizeof(struct intel_vu_log));
	struct intel_vu_nlog *intel_nlog = (struct intel_vu_nlog *)buf;
	struct intel_assert_dump *ad = (struct intel_assert_dump *) intel->reserved;
	struct intel_event_header *ehdr = (struct intel_event_header *)intel->reserved;
	struct nvme_dev *dev;

	const char *desc = "Get Intel Firmware Log and save it.";
	const char *log = "Log type: 0, 1, or 2 for nlog, event log, and assert log, respectively.";
	const char *core = "Select which region log should come from. -1 for all";
	const char *nlognum = "Select which nlog to read. -1 for all nlogs";
	const char *file = "Output file; defaults to device name provided";
	const char *verbose = "To print out verbose nlog info";
	const char *namespace_id = "Namespace to get logs from";

	struct config {
		__u32 namespace_id;
		__u32 log;
		int core;
		int lnum;
		char *file;
		bool verbose;
	};

	struct config cfg = {
		.namespace_id = -1,
		.file = NULL,
		.lnum = -1,
		.core = -1
	};

	OPT_ARGS(opts) = {
		OPT_UINT("log",          'l', &cfg.log,          log),
		OPT_INT("region",        'r', &cfg.core,         core),
		OPT_INT("nlognum",       'm', &cfg.lnum,         nlognum),
		OPT_UINT("namespace-id", 'n', &cfg.namespace_id, namespace_id),
		OPT_FILE("output-file",  'o', &cfg.file,         file),
		OPT_FLAG("verbose-nlog", 'v', &cfg.verbose,      verbose),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err) {
		free(intel);
		return err;
	}

	if (cfg.log > 2 || cfg.core > 4 || cfg.lnum > 255) {
		err = -EINVAL;
		goto out_free;
	}

	if (!cfg.file) {
		err = setup_file(f, cfg.file, dev_fd(dev), cfg.log);
		if (err)
			goto out_free;
		cfg.file = f;
	}

	cdlog.u.entireDword = 0;

	cdlog.u.fields.selectLog = cfg.log;
	cdlog.u.fields.selectCore = cfg.core < 0 ? 0 : cfg.core;
	cdlog.u.fields.selectNlog = cfg.lnum < 0 ? 0 : cfg.lnum;

	output = open(cfg.file, O_WRONLY | O_CREAT | O_TRUNC, 0666);
	if (output < 0) {
		err = output;
		goto out_free;
	}

	err = read_header(&cmd, buf, dev_fd(dev), cdlog.u.entireDword,
			  cfg.namespace_id);
	if (err)
		goto out;
	memcpy(intel, buf, sizeof(*intel));

	/* for 1.1 Fultondales will use old nlog, but current assert/event */
	if ((intel->ver.major < 1 && intel->ver.minor < 1) ||
	    (intel->ver.major <= 1 && intel->ver.minor <= 1 && cfg.log == 0)) {
		cmd.addr = (unsigned long)(void *)buf;
		err = get_internal_log_old(buf, output, dev_fd(dev), &cmd);
		goto out;
	}

	if (cfg.log == 2) {
		if (cfg.verbose)
			printf("Log major:%d minor:%d header:%d size:%d numcores:%d\n",
			       intel->ver.major, intel->ver.minor,
				intel->header, intel->size, intel->numcores);

		err = write_header(buf, output, 0x1000);
		if (err) {
			perror("write failure");
			goto out;
		}

		count = intel->numcores;
	} else if (cfg.log == 0) {
		if (cfg.lnum < 0)
			count = intel_nlog->totalnlogs;
		else
			count = 1;
		if (cfg.core < 0)
			core_num = intel_nlog->corecount;
	} else if (cfg.log == 1) {
		core_num = intel->numcores;
		count = 1;
		err = write_header(buf, output, sizeof(*intel));
		if (err)
			goto out;
	}

	for (j = (cfg.core < 0 ? 0 : cfg.core);
			j < (cfg.core < 0 ? core_num : cfg.core + 1);
			j++) {
		cdlog.u.fields.selectCore = j;
		for (i = 0; i < count; i++) {
			if (cfg.log == 2) {
				if (!ad[i].assertvalid)
					continue;
				cmd.cdw13 = ad[i].coreoffset;
				cmd.cdw10 = 0x400;
				cmd.data_len = min(0x400, ad[i].assertsize) * 4;
				err = read_entire_cmd(&cmd, ad[i].assertsize,
						      0x400, output,
						      dev_fd(dev),
						      buf);
				if (err)
					goto out;

			} else if(cfg.log == 0) {
				/* If the user selected to read the entire nlog */
				if (count > 1)
					cdlog.u.fields.selectNlog = i;

				err = read_header(&cmd, buf, dev_fd(dev),
						  cdlog.u.entireDword,
						  cfg.namespace_id);
				if (err)
					goto out;
				err = write_header(buf, output, sizeof(*intel_nlog));
				if (err)
					goto out;
				if (cfg.verbose)
					print_intel_nlog(intel_nlog);
				cmd.cdw13 = 0x400;
				cmd.cdw10 = 0x400;
				cmd.data_len = min(0x1000, intel_nlog->nlogbytesize);
				err = read_entire_cmd(&cmd, intel_nlog->nlogbytesize / 4,
						      0x400, output,
						      dev_fd(dev),
						      buf);
				if (err)
					goto out;
			} else if (cfg.log == 1) {
				cmd.cdw13 = ehdr->edumps[j].coreoffset;
				cmd.cdw10 = 0x400;
				cmd.data_len = 0x400;
				err = read_entire_cmd(&cmd, ehdr->edumps[j].coresize,
						      0x400, output,
						      dev_fd(dev),
						      buf);
				if (err)
					goto out;
			}
		}
	}
	err = 0;
out:
	if (err > 0) {
		nvme_show_status(err);
	} else if (err < 0) {
		perror("intel log");
		err = EIO;
	} else
		printf("Successfully wrote log to %s\n", cfg.file);
	close(output);
out_free:
	free(intel);
	dev_close(dev);
	return err;
}

static int enable_lat_stats_tracking(int argc, char **argv,
		struct command *command, struct plugin *plugin)
{
	const char *desc = (
			"Enable/Disable Intel Latency Statistics Tracking.\n"
			"No argument prints current status.");
	const char *enable_desc = "Enable LST";
	const char *disable_desc = "Disable LST";
	const __u32 nsid = 0;
	const __u8 fid = 0xe2;
	const __u8 sel = 0;
	const __u32 cdw11 = 0x0;
	const __u32 cdw12 = 0x0;
	const __u32 data_len = 32;
	const __u32 save = 0;
	struct nvme_dev *dev;
	void *buf = NULL;
	__u32 result;
	int err;

	struct config {
		bool enable, disable;
	};

	struct config cfg = {
		.enable = false,
		.disable = false,
	};

	struct argconfig_commandline_options command_line_options[] = {
		{"enable", 'e', "", CFG_FLAG, &cfg.enable, no_argument, enable_desc},
		{"disable", 'd', "", CFG_FLAG, &cfg.disable, no_argument, disable_desc},
		{NULL}
	};

	err = parse_and_open(&dev, argc, argv, desc, command_line_options);

	enum Option {
		None = -1,
		True = 1,
		False = 0,
	};

	enum Option option = None;

	if (cfg.enable && cfg.disable)
		printf("Cannot enable and disable simultaneously.");
	else if (cfg.enable || cfg.disable)
		option = cfg.enable;

	if (err)
		return err;

	struct nvme_get_features_args args_get = {
		.args_size	= sizeof(args_get),
		.fd		= dev_fd(dev),
		.fid		= fid,
		.nsid		= nsid,
		.sel		= sel,
		.cdw11		= cdw11,
		.uuidx		= 0,
		.data_len	= data_len,
		.data		= buf,
		.timeout	= NVME_DEFAULT_IOCTL_TIMEOUT,
		.result		= &result,
	};

	struct nvme_set_features_args args_set = {
		.args_size	= sizeof(args_set),
		.fd		= dev_fd(dev),
		.fid		= fid,
		.nsid		= nsid,
		.cdw11		= option,
		.cdw12		= cdw12,
		.save		= save,
		.uuidx		= 0,
		.cdw15		= 0,
		.data_len	= data_len,
		.data		= buf,
		.timeout	= NVME_DEFAULT_IOCTL_TIMEOUT,
		.result		= &result,
	};

	switch (option) {
	case None:
		err = nvme_get_features(&args_get);
		if (!err) {
			printf(
				"Latency Statistics Tracking (FID 0x%X) is currently (%i).\n",
				fid, result);
		} else {
			printf("Could not read feature id 0xE2.\n");
			dev_close(dev);
			return err;
		}
		break;
	case True:
	case False:
		err = nvme_set_features(&args_set);
		if (err > 0) {
			nvme_show_status(err);
		} else if (err < 0) {
			perror("Enable latency tracking");
			fprintf(stderr, "Command failed while parsing.\n");
		} else {
			printf("Successfully set enable bit for FID (0x%X) to %i.\n",
				fid, option);
		}
		break;
	default:
		printf("%d not supported.\n", option);
		return EINVAL;
	}
	dev_close(dev);
	return err;
}

static int set_lat_stats_thresholds(int argc, char **argv,
		struct command *command, struct plugin *plugin)
{
	const char *desc = "Write Intel Bucket Thresholds for Latency Statistics Tracking";
	const char *bucket_thresholds = "Bucket Threshold List, comma separated list: 0, 10, 20 ...";
	const char *write = "Set write bucket Thresholds for latency tracking (read default)";

	const __u32 nsid = 0;
	const __u8 fid = 0xf7;
	const __u32 cdw12 = 0x0;
	const __u32 save = 0;
	struct nvme_dev *dev;
	__u32 result;
	int err, num;

	struct config {
		bool write;
		char *bucket_thresholds;
	};

	struct config cfg = {
		.write = false,
		.bucket_thresholds = "",
	};

	OPT_ARGS(opts) = {
		OPT_FLAG("write",      'w', &cfg.write, write),
		OPT_LIST("bucket-thresholds", 't', &cfg.bucket_thresholds,
			 bucket_thresholds),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);

	if (err)
		return err;

	/* Query maj and minor version first to figure out the amount of
	 * valid buckets a user is allowed to modify. Read or write doesn't
	 * matter
	 */
	err = nvme_get_log_simple(dev_fd(dev), 0xc2,
				  sizeof(media_version), media_version);
	if (err) {
		fprintf(stderr, "Querying media version failed. ");
		nvme_show_status(err);
		goto close_dev;
	}

	if (media_version[0] == 1000) {
		int thresholds[OPTANE_V1000_BUCKET_LEN] = {0};
		num = argconfig_parse_comma_sep_array(cfg.bucket_thresholds,
						      thresholds,
						      sizeof(thresholds));
		if (num == -1) {
			fprintf(stderr, "ERROR: Bucket list is malformed\n");
			goto close_dev;

		}

		struct nvme_set_features_args args = {
			.args_size	= sizeof(args),
			.fd		= dev_fd(dev),
			.fid		= fid,
			.nsid		= nsid,
			.cdw11		= cfg.write ? 0x1 : 0x0,
			.cdw12		= cdw12,
			.save		= save,
			.uuidx		= 0,
			.cdw15		= 0,
			.data_len	= sizeof(thresholds),
			.data		= thresholds,
			.timeout	= NVME_DEFAULT_IOCTL_TIMEOUT,
			.result		= &result,
		};
		err = nvme_set_features(&args);

		if (err > 0) {
			nvme_show_status(err);
		} else if (err < 0) {
			perror("Enable latency tracking");
			fprintf(stderr, "Command failed while parsing.\n");
		}
	} else {
		fprintf(stderr, "Unsupported command\n");
	}

close_dev:
	dev_close(dev);
	return err;
}

 070701015D6C28000081A4000003E80000006400000001642C0FB50000046E000000000000004A00000000000000000000002A00000000nvme-cli/plugins/memblaze/memblaze-nvme.h /* SPDX-License-Identifier: GPL-2.0-or-later */
#undef CMD_INC_FILE
#define CMD_INC_FILE plugins/memblaze/memblaze-nvme

#if !defined(MEMBLAZE_NVME) || defined(CMD_HEADER_MULTI_READ)
#define MEMBLAZE_NVME

#include "cmd.h"

PLUGIN(NAME("memblaze", "Memblaze vendor specific extensions", NVME_VERSION),
	COMMAND_LIST(
		ENTRY("smart-log-add", "Retrieve Memblaze SMART Log, show it", mb_get_additional_smart_log)
		ENTRY("get-pm-status", "Get Memblaze Power Manager Status", mb_get_powermanager_status)
		ENTRY("set-pm-status", "Set Memblaze Power Manager Status", mb_set_powermanager_status)
		ENTRY("select-download", "Selective Firmware Download", mb_selective_download)
		ENTRY("lat-stats", "Enable and disable Latency Statistics logging", mb_set_lat_stats)
		ENTRY("lat-stats-print", "Retrieve IO Latency Statistics log, show it", mb_lat_stats_log_print)
		ENTRY("lat-log", "Set Memblaze High Latency Log", mb_set_high_latency_log)
		ENTRY("lat-log-print", "Output Memblaze High Latency Log", mb_high_latency_log_print)
		ENTRY("clear-error-log", "Clear error log", memblaze_clear_error_log)
	)
);

#endif

#include "define_cmd.h"
  070701015D6C29000081A4000003E80000006400000001642C0FB50000238F000000000000004A00000000000000000000002B00000000nvme-cli/plugins/memblaze/memblaze-utils.h    /* SPDX-License-Identifier: GPL-2.0-or-later */
#ifndef __MEMBLAZE_UTILS_H__
#define __MEMBLAZE_UTILS_H__

#define SMART_INFO_OLD_SIZE     512
#define SMART_INFO_NEW_SIZE     4096

#define ID_SIZE                 3
#define NM_SIZE                 2
#define RAW_SIZE                7

// Intel Format & new format
/* Raisin Additional smart external ID */
#define RAISIN_SI_VD_PROGRAM_FAIL_ID                        0xAB
#define RAISIN_SI_VD_ERASE_FAIL_ID                          0xAC
#define RAISIN_SI_VD_WEARLEVELING_COUNT_ID                  0xAD
#define RAISIN_SI_VD_E2E_DECTECTION_COUNT_ID                0xB8
#define RAISIN_SI_VD_PCIE_CRC_ERR_COUNT_ID                  0xC7
#define RAISIN_SI_VD_TIMED_WORKLOAD_MEDIA_WEAR_ID           0xE2
#define RAISIN_SI_VD_TIMED_WORKLOAD_HOST_READ_ID            0xE3
#define RAISIN_SI_VD_TIMED_WORKLOAD_TIMER_ID                0xE4
#define RAISIN_SI_VD_THERMAL_THROTTLE_STATUS_ID             0xEA
#define RAISIN_SI_VD_RETRY_BUFF_OVERFLOW_COUNT_ID           0xF0
#define RAISIN_SI_VD_PLL_LOCK_LOSS_COUNT_ID                 0xF3
#define RAISIN_SI_VD_TOTAL_WRITE_ID                         0xF4
#define RAISIN_SI_VD_HOST_WRITE_ID                          0xF5
#define RAISIN_SI_VD_SYSTEM_AREA_LIFE_LEFT_ID               0xF6
#define RAISIN_SI_VD_TOTAL_READ_ID                          0xFA
#define RAISIN_SI_VD_TEMPT_SINCE_BORN_ID                    0xE7
#define RAISIN_SI_VD_POWER_CONSUMPTION_ID                   0xE8
#define RAISIN_SI_VD_TEMPT_SINCE_BOOTUP_ID                  0xAF
#define RAISIN_SI_VD_POWER_LOSS_PROTECTION_ID               0xEC
#define RAISIN_SI_VD_READ_FAIL_ID                           0xF2
#define RAISIN_SI_VD_THERMAL_THROTTLE_TIME_ID               0xEB
#define RAISIN_SI_VD_FLASH_MEDIA_ERROR_ID                   0xED

/* Raisin Addtional smart internal ID */
typedef enum
{
    /* smart attr following intel */
    RAISIN_SI_VD_PROGRAM_FAIL = 0, /* 0xAB */
    RAISIN_SI_VD_ERASE_FAIL = 1,   /* 0xAC */
    RAISIN_SI_VD_WEARLEVELING_COUNT = 2,/* 0xAD */
    RAISIN_SI_VD_E2E_DECTECTION_COUNT = 3, /* 0xB8 */
    RAISIN_SI_VD_PCIE_CRC_ERR_COUNT = 4, /* 0xC7, 2 port data in one attribute */
    RAISIN_SI_VD_TIMED_WORKLOAD_MEDIA_WEAR = 5, /* 0xE2 , unknown definition*/
    RAISIN_SI_VD_TIMED_WORKLOAD_HOST_READ = 6, /* 0xE3 , unknown definition */
    RAISIN_SI_VD_TIMED_WORKLOAD_TIMER = 7, /* 0xE4 , unknown definition */
    RAISIN_SI_VD_THERMAL_THROTTLE_STATUS = 8, /* 0xEA */
    RAISIN_SI_VD_RETRY_BUFF_OVERFLOW_COUNT = 9, /* 0xF0, unknown definition*/
    RAISIN_SI_VD_PLL_LOCK_LOSS_COUNT = 10, /* 0xF3, unknown definition*/
    RAISIN_SI_VD_TOTAL_WRITE = 11, /* 0xF4, unit is 32MiB */
    RAISIN_SI_VD_HOST_WRITE = 12, /* 0xF5, unit is 32MiB */
    RAISIN_SI_VD_SYSTEM_AREA_LIFE_LEFT = 13, /* 0xF6, unknown definition*/
    RAISIN_SI_VD_TOTAL_READ = 14, /* 0xFA, unit is 32MiB */

    /* smart attr self defined */
    RAISIN_SI_VD_TEMPT_SINCE_BORN = 15, /* 0xE7 */
    RAISIN_SI_VD_POWER_CONSUMPTION = 16, /* 0xE8 */
    RAISIN_SI_VD_TEMPT_SINCE_BOOTUP = 17, /* 0xAF */
    RAISIN_SI_VD_POWER_LOSS_PROTECTION = 18, /* 0xEC */
    RAISIN_SI_VD_READ_FAIL = 19, /* 0xF2 */
    RAISIN_SI_VD_THERMAL_THROTTLE_TIME = 20, /* 0xEB */
    RAISIN_SI_VD_FLASH_MEDIA_ERROR = 21, /* 0xED */
    RAISIN_SI_VD_SMART_INFO_ITEMS_MAX,
} RAISIN_si_vendor_smart_item_e;

// Memblaze Format & old format
enum {
    /*0*/TOTAL_WRITE = 0,
    /*1*/TOTAL_READ,
    /*2*/THERMAL_THROTTLE,
    /*3*/TEMPT_SINCE_RESET,
    /*4*/POWER_CONSUMPTION,
    /*5*/TEMPT_SINCE_BOOTUP,
    /*6*/POWER_LOSS_PROTECTION,
    /*7*/WEARLEVELING_COUNT,
    /*8*/HOST_WRITE,
    /*9*/THERMAL_THROTTLE_CNT,
    /*10*/CORRECT_PCIE_PORT0,
    /*11*/CORRECT_PCIE_PORT1,
    /*12*/REBUILD_FAIL,
    /*13*/ERASE_FAIL,
    /*14*/PROGRAM_FAIL,
    /*15*/READ_FAIL,
    /*16*/NR_SMART_ITEMS = RAISIN_SI_VD_SMART_INFO_ITEMS_MAX,
};

// Memblaze Format & old format
#pragma pack(push, 1)
struct nvme_memblaze_smart_log_item {
        __u8 id[3];
        union {
            __u8    __nmval[2];
            __le16  nmval;
        };
        union {
        __u8 rawval[6];
        struct temperature {
        __le16 max;
        __le16 min;
        __le16 curr;
        } temperature;
        struct power {
            __le16 max;
            __le16 min;
            __le16 curr;
        } power;
        struct thermal_throttle_mb {
            __u8 on;
            __u32 count;
        } thermal_throttle;
        struct temperature_p {
            __le16 max;
            __le16 min;
        } temperature_p;
        struct power_loss_protection {
            __u8 curr;
        } power_loss_protection;
        struct wearleveling_count {
            __le16 min;
            __le16 max;
            __le16 avg;
        } wearleveling_count;
        struct thermal_throttle_cnt {
            __u8 active;
            __le32 cnt;
        } thermal_throttle_cnt;
    };
    __u8 resv;
};
#pragma pack(pop)

struct nvme_memblaze_smart_log {
    struct nvme_memblaze_smart_log_item items[NR_SMART_ITEMS];
    __u8 resv[SMART_INFO_OLD_SIZE - sizeof(struct nvme_memblaze_smart_log_item) * NR_SMART_ITEMS];
};

// Intel Format & new format
struct nvme_p4_smart_log_item
{
    /* Item identifier */
    __u8 id[ID_SIZE];
    /* Normalized value or percentage. In the range from 0 to 100. */
    __u8 nmVal[NM_SIZE];
    /* raw value */
    __u8 rawVal[RAW_SIZE];
};

struct nvme_p4_smart_log
{
    struct nvme_p4_smart_log_item itemArr[NR_SMART_ITEMS];

    /**
     * change 512 to 4096.
     * because micron's getlogpage request,the size of many commands have changed to 4k.
     * request size > user malloc size,casuing parameters that are closed in momery are dirty.
     */
    __u8 resv[SMART_INFO_NEW_SIZE - sizeof(struct nvme_p4_smart_log_item) * NR_SMART_ITEMS];
};

// base
#define DD                           do{ printf("=Memblaze= %s[%d]-%s():\n", __FILE__, __LINE__, __func__); }while(0)
#define DE(str)                      do{ printf("===ERROR!=== %s[%d]-%s():str=%s\n", __FILE__, __LINE__, __func__, \
                                     str); }while(0)
// integer
#define DI(i)                        do{ printf("=Memblaze= %s[%d]-%s():int=%d\n", __FILE__, __LINE__, __func__, \
                                     (int)i); } while(0)
#define DPI(prompt, i)               do{ printf("=Memblaze= %s[%d]-%s():%s=%d\n", __FILE__, __LINE__, __func__, \
                                     prompt, i); }while(0)
#define DAI(prompt, i, arr, max)     do{ printf("=Memblaze= %s[%d]-%s():%s", __FILE__, __LINE__, __func__, prompt); \
                                     for(i=0;i<max;i++) printf(" %d:%d", i, arr[i]); \
                                     printf("\n"); }while(0)
// char
#define DC(c)                        do{ printf("=Memblaze= %s[%d]-%s():char=%c\n", __FILE__, __LINE__, __func__, c); \
                                     }while(0)
#define DPC(prompt, c)               do{ printf("=Memblaze= %s[%d]-%s():%s=%c\n", __FILE__, __LINE__, __func__, \
                                     prompt, c); }while(0)
// address
#define DA(add)                      do{ printf("=Memblaze= %s[%d]-%s():address=0x%08X\n", __FILE__, __LINE__, \
                                     __func__, add); }while(0)
#define DPA(prompt, add)             do{ printf("=Memblaze= %s[%d]-%s():%s=0x%08X\n", __FILE__, __LINE__, __func__, \
                                     prompt, add); }while(0)
// string
#define DS(str)                      do{ printf("=Memblaze= %s[%d]-%s():str=%s\n", __FILE__, __LINE__, __func__, str); \
                                     }while(0)
#define DPS(prompt, str)             do{ printf("=Memblaze= %s[%d]-%s():%s=%s\n", __FILE__, __LINE__, __func__, \
                                     prompt, str); }while(0)
#define DAS(prompt, i, arr, max)     do{ printf("=Memblaze= %s[%d]-%s():%s", __FILE__, __LINE__, __func__, prompt); \
                                     for(i=0;i<max;i++) printf(" %d:%s", i, arr[i]); \
                                     printf("\n"); }while(0)
// array
#define DR(str, k)                   do{ int ip; for(ip=0;ip<k;ip++) if(NULL != argv[ip]) \
                                     printf("=Memblaze= %s[%d]-%s():%d=%s\n", \
                                     __FILE__, __LINE__, __func__, ip, str[ip]); }while(0)
#define DARG                         do{ DPI("argc", argc); \
                                     int ip; for(ip=0;ip<argc;ip++) if(NULL != argv[ip]) \
                                     printf("=Memblaze= %s[%d]-%s():%d=%s\n", \
                                     __FILE__, __LINE__, __func__, ip, argv[ip]); }while(0)

#define fPRINT_PARAM1(format)		\
    {					\
        do {				\
	    if (fdi)			\
		fprintf(fdi, format);	\
            if (print)			\
                printf(format);		\
        } while (0);			\
    }

#define fPRINT_PARAM2(format, value)		\
    {						\
        do {					\
	    if (fdi)				\
		fprintf(fdi, format, value);	\
            if (print)				\
                printf(format, value);		\
        } while (0);				\
    }

#endif // __MEMBLAZE_UTILS_H__
 070701015D6E58000081A4000003E80000006400000001642C0FB600009195000000000000004A00000000000000000000002A00000000nvme-cli/plugins/memblaze/memblaze-nvme.c // SPDX-License-Identifier: GPL-2.0-or-later
#include <fcntl.h>
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <unistd.h>
#include <time.h>

#include "nvme.h"
#include "common.h"
#include "libnvme.h"
#include "plugin.h"
#include "linux/types.h"
#include "nvme-print.h"

#define CREATE_CMD
#include "memblaze-nvme.h"
#include "memblaze-utils.h"

enum {
    // feature id
    MB_FEAT_POWER_MGMT = 0x02,
    MB_FEAT_HIGH_LATENCY = 0xE1,
    // log id
    GLP_ID_VU_GET_READ_LATENCY_HISTOGRAM = 0xC1,
    GLP_ID_VU_GET_WRITE_LATENCY_HISTOGRAM = 0xC2,
    GLP_ID_VU_GET_HIGH_LATENCY_LOG = 0xC3,
    MB_FEAT_CLEAR_ERRORLOG = 0xF7,
};

#define LOG_PAGE_SIZE                                      (0x1000)
#define DO_PRINT_FLAG                                      (1)
#define NOT_PRINT_FLAG                                     (0)
#define FID_C1_LOG_FILENAME                                "log_c1.csv"
#define FID_C2_LOG_FILENAME                                "log_c2.csv"
#define FID_C3_LOG_FILENAME                                "log_c3.csv"

/*
 * Return -1 if @fw1 < @fw2
 * Return 0 if @fw1 == @fw2
 * Return 1 if @fw1 > @fw2
 */
static int compare_fw_version(const char *fw1, const char *fw2)
{
    while (*fw1 != '\0') {
        if (*fw2 == '\0' || *fw1 > *fw2)
            return 1;
        if (*fw1 < *fw2)
            return -1;
        fw1++;
        fw2++;
    }

    if (*fw2 != '\0')
        return -1;

    return 0;
}

/**********************************************************
 * input: firmware version string
 * output:
 *     1: new intel format
 *     0: old memblaze format
 * *******************************************************/
#define MEMBLAZE_FORMAT         (0)
#define INTEL_FORMAT            (1)

// 2.13 = papaya
#define IS_PAPAYA(str)          (!strcmp(str, "2.13"))
// 2.83 = raisin
#define IS_RAISIN(str)          (!strcmp(str, "2.83"))
// 2.94 = kumquat
#define IS_KUMQUAT(str)         (!strcmp(str, "2.94"))
// 0.60 = loquat
#define IS_LOQUAT(str)          (!strcmp(str, "0.60"))

#define STR_VER_SIZE            (5)

int getlogpage_format_type(char *model_name)
{
    int logpage_format_type = INTEL_FORMAT;
    const char *boundary_model_name1 = "P"; // MEMBLAZE P7936DT0640M00
    const char *boundary_model_name2 = "P5920"; // Use INTEL_FORMAT from Raisin P5920.
    if (0 == strncmp(model_name, boundary_model_name1, strlen(boundary_model_name1)))
    {
        if (strncmp(model_name, boundary_model_name2, strlen(boundary_model_name2)) < 0)
        {
            logpage_format_type = MEMBLAZE_FORMAT;
        }
    }
    return logpage_format_type;
}

static __u32 item_id_2_u32(struct nvme_memblaze_smart_log_item *item)
{
    __le32  __id = 0;
    memcpy(&__id, item->id, 3);
    return le32_to_cpu(__id);
}

static __u64 raw_2_u64(const __u8 *buf, size_t len)
{
    __le64  val = 0;
    memcpy(&val, buf, len);
    return le64_to_cpu(val);
}

static void get_memblaze_new_smart_info(struct nvme_p4_smart_log *smart, int index, __u8 *nm_val, __u8 *raw_val)
{
    memcpy(nm_val, smart->itemArr[index].nmVal, NM_SIZE);
    memcpy(raw_val, smart->itemArr[index].rawVal, RAW_SIZE);
}

static void show_memblaze_smart_log_new(struct nvme_memblaze_smart_log *s,
    unsigned int nsid, const char *devname)
{
    struct nvme_p4_smart_log *smart = (struct nvme_p4_smart_log *)s;
    __u8 *nm = malloc(NM_SIZE * sizeof(__u8));
    __u8 *raw = malloc(RAW_SIZE * sizeof(__u8));

    if (!nm) {
        if (raw)
            free(raw);
        return;
    }
    if (!raw) {
        free(nm);
        return;
    }

    printf("%s:%s %s:%x\n", "Additional Smart Log for NVME device", devname, "namespace-id", nsid);
    printf("%-34s%-11s%s\n", "key", "normalized", "raw");

    get_memblaze_new_smart_info(smart, RAISIN_SI_VD_PROGRAM_FAIL, nm, raw);
    printf("%-32s: %3d%%       %"PRIu64"\n", "program_fail_count", *nm, int48_to_long(raw));

    get_memblaze_new_smart_info(smart, RAISIN_SI_VD_ERASE_FAIL, nm, raw);
    printf("%-32s: %3d%%       %"PRIu64"\n", "erase_fail_count", *nm, int48_to_long(raw));

    get_memblaze_new_smart_info(smart, RAISIN_SI_VD_WEARLEVELING_COUNT, nm, raw);
    printf("%-31s : %3d%%       %s%u%s%u%s%u\n", "wear_leveling", *nm,
        "min: ", *(__u16 *)raw, ", max: ", *(__u16 *)(raw+2), ", avg: ", *(__u16 *)(raw+4));

    get_memblaze_new_smart_info(smart, RAISIN_SI_VD_E2E_DECTECTION_COUNT, nm, raw);
    printf("%-31s: %3d%%       %"PRIu64"\n", "end_to_end_error_detection_count", *nm, int48_to_long(raw));

    get_memblaze_new_smart_info(smart, RAISIN_SI_VD_PCIE_CRC_ERR_COUNT, nm, raw);
    printf("%-32s: %3d%%       %"PRIu64"\n", "crc_error_count", *nm, int48_to_long(raw));

    get_memblaze_new_smart_info(smart, RAISIN_SI_VD_TIMED_WORKLOAD_MEDIA_WEAR, nm, raw);
    printf("%-32s: %3d%%       %.3f%%\n", "timed_workload_media_wear", *nm, ((float)int48_to_long(raw))/1000);

    get_memblaze_new_smart_info(smart, RAISIN_SI_VD_TIMED_WORKLOAD_HOST_READ, nm, raw);
    printf("%-32s: %3d%%       %"PRIu64"%%\n", "timed_workload_host_reads", *nm, int48_to_long(raw));

    get_memblaze_new_smart_info(smart, RAISIN_SI_VD_TIMED_WORKLOAD_TIMER, nm, raw);
    printf("%-32s: %3d%%       %"PRIu64"%s\n", "timed_workload_timer", *nm, int48_to_long(raw), " min");

    get_memblaze_new_smart_info(smart, RAISIN_SI_VD_THERMAL_THROTTLE_STATUS, nm, raw);
    printf("%-32s: %3d%%       %u%%%s%"PRIu64"\n", "thermal_throttle_status", *nm,
        *raw, ", cnt: ", int48_to_long(raw+1));

    get_memblaze_new_smart_info(smart, RAISIN_SI_VD_RETRY_BUFF_OVERFLOW_COUNT, nm, raw);
    printf("%-32s: %3d%%       %"PRIu64"\n", "retry_buffer_overflow_count", *nm, int48_to_long(raw));

    get_memblaze_new_smart_info(smart, RAISIN_SI_VD_PLL_LOCK_LOSS_COUNT, nm, raw);
    printf("%-32s: %3d%%       %"PRIu64"\n", "pll_lock_loss_count", *nm, int48_to_long(raw));

    get_memblaze_new_smart_info(smart, RAISIN_SI_VD_TOTAL_WRITE, nm, raw);
    printf("%-32s: %3d%%       %s%"PRIu64"\n", "nand_bytes_written", *nm, "sectors: ", int48_to_long(raw));

    get_memblaze_new_smart_info(smart, RAISIN_SI_VD_HOST_WRITE, nm, raw);
    printf("%-32s: %3d%%       %s%"PRIu64"\n", "host_bytes_written", *nm, "sectors: ", int48_to_long(raw));

    get_memblaze_new_smart_info(smart, RAISIN_SI_VD_SYSTEM_AREA_LIFE_LEFT, nm, raw);
    printf("%-32s: %3d%%       %"PRIu64"\n", "system_area_life_left", *nm, int48_to_long(raw));

    get_memblaze_new_smart_info(smart, RAISIN_SI_VD_TOTAL_READ, nm, raw);
    printf("%-32s: %3d%%       %"PRIu64"\n", "total_read", *nm, int48_to_long(raw));

    get_memblaze_new_smart_info(smart, RAISIN_SI_VD_TEMPT_SINCE_BORN, nm, raw);
    printf("%-32s: %3d%%       %s%u%s%u%s%u\n", "tempt_since_born",  *nm,
        "max: ", *(__u16 *)raw, ", min: ", *(__u16 *)(raw+2), ", curr: ", *(__u16 *)(raw+4));

    get_memblaze_new_smart_info(smart, RAISIN_SI_VD_POWER_CONSUMPTION, nm, raw);
    printf("%-32s: %3d%%       %s%u%s%u%s%u\n", "power_consumption",  *nm,
        "max: ", *(__u16 *)raw, ", min: ", *(__u16 *)(raw+2), ", curr: ", *(__u16 *)(raw+4));

    get_memblaze_new_smart_info(smart, RAISIN_SI_VD_TEMPT_SINCE_BOOTUP, nm, raw);
    printf("%-32s: %3d%%       %s%u%s%u%s%u\n", "tempt_since_bootup",  *nm, "max: ", *(__u16 *)raw,
        ", min: ", *(__u16 *)(raw+2), ", curr: ", *(__u16 *)(raw+4));

    get_memblaze_new_smart_info(smart, RAISIN_SI_VD_READ_FAIL, nm, raw);
    printf("%-32s: %3d%%       %"PRIu64"\n", "read_fail_count", *nm, int48_to_long(raw));

    get_memblaze_new_smart_info(smart, RAISIN_SI_VD_THERMAL_THROTTLE_TIME, nm, raw);
    printf("%-32s: %3d%%       %"PRIu64"\n", "thermal_throttle_time", *nm, int48_to_long(raw));

    get_memblaze_new_smart_info(smart, RAISIN_SI_VD_FLASH_MEDIA_ERROR, nm, raw);
    printf("%-32s: %3d%%       %"PRIu64"\n", "flash_media_error", *nm, int48_to_long(raw));

    free(nm);
    free(raw);
}

static void show_memblaze_smart_log_old(struct nvme_memblaze_smart_log *smart,
    unsigned int nsid, const char *devname, const char *fw_ver)
{
    char fw_ver_local[STR_VER_SIZE + 1];
    struct nvme_memblaze_smart_log_item *item;

    strncpy(fw_ver_local, fw_ver, STR_VER_SIZE);
    *(fw_ver_local + STR_VER_SIZE) = '\0';

    printf("Additional Smart Log for NVME device:%s namespace-id:%x\n", devname, nsid);

    printf("Total write in GB since last factory reset			: %"PRIu64"\n",
        int48_to_long(smart->items[TOTAL_WRITE].rawval));
    printf("Total read in GB since last factory reset			: %"PRIu64"\n",
        int48_to_long(smart->items[TOTAL_READ].rawval));

    printf("Thermal throttling status[1:HTP in progress]			: %u\n",
        smart->items[THERMAL_THROTTLE].thermal_throttle.on);
    printf("Total thermal throttling minutes since power on			: %u\n",
        smart->items[THERMAL_THROTTLE].thermal_throttle.count);

    printf("Maximum temperature in kelvins since last factory reset		: %u\n",
        le16_to_cpu(smart->items[TEMPT_SINCE_RESET].temperature.max));
    printf("Minimum temperature in kelvins since last factory reset		: %u\n",
        le16_to_cpu(smart->items[TEMPT_SINCE_RESET].temperature.min));
    if (compare_fw_version(fw_ver, "0.09.0300") != 0) {
        printf("Maximum temperature in kelvins since power on			: %u\n",
            le16_to_cpu(smart->items[TEMPT_SINCE_BOOTUP].temperature_p.max));
        printf("Minimum temperature in kelvins since power on			: %u\n",
            le16_to_cpu(smart->items[TEMPT_SINCE_BOOTUP].temperature_p.min));
    }
    printf("Current temperature in kelvins					: %u\n",
        le16_to_cpu(smart->items[TEMPT_SINCE_RESET].temperature.curr));

    printf("Maximum power in watt since power on				: %u\n",
        le16_to_cpu(smart->items[POWER_CONSUMPTION].power.max));
    printf("Minimum power in watt since power on				: %u\n",
        le16_to_cpu(smart->items[POWER_CONSUMPTION].power.min));
    printf("Current power in watt						: %u\n",
        le16_to_cpu(smart->items[POWER_CONSUMPTION].power.curr));

    item = &smart->items[POWER_LOSS_PROTECTION];
    if (item_id_2_u32(item) == 0xEC)
        printf("Power loss protection normalized value				: %u\n",
            item->power_loss_protection.curr);

    item = &smart->items[WEARLEVELING_COUNT];
    if (item_id_2_u32(item) == 0xAD) {
        printf("Percentage of wearleveling count left				: %u\n",
            le16_to_cpu(item->nmval));
        printf("Wearleveling count min erase cycle				: %u\n",
            le16_to_cpu(item->wearleveling_count.min));
        printf("Wearleveling count max erase cycle				: %u\n",
            le16_to_cpu(item->wearleveling_count.max));
        printf("Wearleveling count avg erase cycle				: %u\n",
            le16_to_cpu(item->wearleveling_count.avg));
    }

    item = &smart->items[HOST_WRITE];
    if (item_id_2_u32(item) == 0xF5)
        printf("Total host write in GiB since device born 			: %llu\n",
            (unsigned long long)raw_2_u64(item->rawval, sizeof(item->rawval)));

    item = &smart->items[THERMAL_THROTTLE_CNT];
    if (item_id_2_u32(item) == 0xEB)
        printf("Thermal throttling count since device born 			: %u\n",
            item->thermal_throttle_cnt.cnt);

    item = &smart->items[CORRECT_PCIE_PORT0];
    if (item_id_2_u32(item) == 0xED)
        printf("PCIE Correctable Error Count of Port0    			: %llu\n",
            (unsigned long long)raw_2_u64(item->rawval, sizeof(item->rawval)));

    item = &smart->items[CORRECT_PCIE_PORT1];
    if (item_id_2_u32(item) == 0xEE)
        printf("PCIE Correctable Error Count of Port1 	        		: %llu\n",
            (unsigned long long)raw_2_u64(item->rawval, sizeof(item->rawval)));

    item = &smart->items[REBUILD_FAIL];
    if (item_id_2_u32(item) == 0xEF)
        printf("End-to-End Error Detection Count 	        		: %llu\n",
            (unsigned long long)raw_2_u64(item->rawval, sizeof(item->rawval)));

    item = &smart->items[ERASE_FAIL];
    if (item_id_2_u32(item) == 0xF0)
        printf("Erase Fail Count 		                        	: %llu\n",
            (unsigned long long)raw_2_u64(item->rawval, sizeof(item->rawval)));

    item = &smart->items[PROGRAM_FAIL];
    if (item_id_2_u32(item) == 0xF1)
        printf("Program Fail Count 		                        	: %llu\n",
            (unsigned long long)raw_2_u64(item->rawval, sizeof(item->rawval)));

    item = &smart->items[READ_FAIL];
    if (item_id_2_u32(item) == 0xF2)
        printf("Read Fail Count	                                 		: %llu\n",
            (unsigned long long)raw_2_u64(item->rawval, sizeof(item->rawval)));

     if ( IS_PAPAYA(fw_ver_local) ) {
        struct nvme_p4_smart_log *s = (struct nvme_p4_smart_log *)smart;
        __u8 *nm = malloc(NM_SIZE * sizeof(__u8));
        __u8 *raw = malloc(RAW_SIZE * sizeof(__u8));

	if (!nm) {
            if (raw)
                free(raw);
            return;
	}
	if (!raw) {
            free(nm);
            return;
	}
        get_memblaze_new_smart_info(s, PROGRAM_FAIL, nm, raw);
        printf("%-32s                                : %3d%%       %"PRIu64"\n",
			"program_fail_count", *nm, int48_to_long(raw));

        get_memblaze_new_smart_info(s, ERASE_FAIL, nm, raw);
        printf("%-32s                                : %3d%%       %"PRIu64"\n",
			"erase_fail_count", *nm, int48_to_long(raw));

        get_memblaze_new_smart_info(s, WEARLEVELING_COUNT, nm, raw);
        printf("%-31s                                 : %3d%%       %s%u%s%u%s%u\n",
			"wear_leveling", *nm, "min: ", *(__u16 *)raw, ", max: ", *(__u16 *)(raw+2), ", avg: ", *(__u16 *)(raw+4));

        get_memblaze_new_smart_info(s, TOTAL_WRITE, nm, raw);
        printf("%-32s                                : %3d%%       %"PRIu64"\n",
			"nand_bytes_written", *nm, 32*int48_to_long(raw));

        get_memblaze_new_smart_info(s, HOST_WRITE, nm, raw);
        printf("%-32s                                : %3d%%       %"PRIu64"\n",
			"host_bytes_written", *nm, 32*int48_to_long(raw));

        free(nm);
        free(raw);
    }
}

static int show_memblaze_smart_log(int fd, __u32 nsid, const char *devname,
    struct nvme_memblaze_smart_log *smart)
{
    struct nvme_id_ctrl ctrl;
    char fw_ver[10];
    int err = 0;

    err = nvme_identify_ctrl(fd, &ctrl);
    if (err)
        return err;

    snprintf(fw_ver, sizeof(fw_ver), "%c.%c%c.%c%c%c%c",
        ctrl.fr[0], ctrl.fr[1], ctrl.fr[2], ctrl.fr[3],
        ctrl.fr[4], ctrl.fr[5], ctrl.fr[6]);

    if (getlogpage_format_type(ctrl.mn)) // Intel Format & new format
    {
        show_memblaze_smart_log_new(smart, nsid, devname);
    }
    else  // Memblaze Format & old format
    {
        show_memblaze_smart_log_old(smart, nsid, devname, fw_ver);
    }
	return err;
}

int parse_params(char *str, int number, ...)
{
    va_list argp;
    int *param;
    char *c;
    int value;

    va_start(argp, number);

    while (number > 0) {
        c = strtok(str, ",");
        if ( c == NULL) {
            printf("No enough parameters. abort...\n");
            va_end(argp);
            return 1;
        }

        if (isalnum((int)*c) == 0) {
            printf("%s is not a valid number\n", c);
            va_end(argp);
            return 1;
        }
        value = atoi(c);
        param = va_arg(argp, int *);
        *param = value;

        if (str) {
            str = strchr(str, ',');
            if (str) { str++; }
        }
        number--;
    }
    va_end(argp);

    return 0;
}

static int mb_get_additional_smart_log(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	struct nvme_memblaze_smart_log smart_log;
	char *desc = "Get Memblaze vendor specific additional smart log (optionally, "\
		      "for the specified namespace), and show it.";
	const char *namespace = "(optional) desired namespace";
	const char *raw = "dump output in binary format";
	struct nvme_dev *dev;
	struct config {
		__u32 namespace_id;
		bool  raw_binary;
	};
	int err;

	struct config cfg = {
		.namespace_id = NVME_NSID_ALL,
	};

	OPT_ARGS(opts) = {
		OPT_UINT("namespace-id", 'n', &cfg.namespace_id,  namespace),
		OPT_FLAG("raw-binary",   'b', &cfg.raw_binary,    raw),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		return err;

	err = nvme_get_nsid_log(dev_fd(dev), false, 0xca, cfg.namespace_id,
				sizeof(smart_log), &smart_log);
	if (!err) {
		if (!cfg.raw_binary)
			err = show_memblaze_smart_log(dev_fd(dev),
						      cfg.namespace_id,
						      dev->name, &smart_log);
		else
			d_raw((unsigned char *)&smart_log, sizeof(smart_log));
	}
	if (err > 0)
		nvme_show_status(err);

	dev_close(dev);
	return err;
}

static char *mb_feature_to_string(int feature)
{
    switch (feature) {
    case MB_FEAT_POWER_MGMT: return "Memblaze power management";
    case MB_FEAT_HIGH_LATENCY: return "Memblaze high latency log";
    case MB_FEAT_CLEAR_ERRORLOG: return "Memblaze clear error log";
    default: return "Unknown";
    }
}

static int mb_get_powermanager_status(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
    const char *desc = "Get Memblaze power management ststus\n	(value 0 - 25w, 1 - 20w, 2 - 15w)";
    __u32 result;
    __u32 feature_id = MB_FEAT_POWER_MGMT;
    struct nvme_dev *dev;
    int err;

    OPT_ARGS(opts) = {
        OPT_END()
    };

    err = parse_and_open(&dev, argc, argv, desc, opts);
    if (err)
	    return err;

    struct nvme_get_features_args args = {
	    .args_size		= sizeof(args),
	    .fd			= dev_fd(dev),
	    .fid		= feature_id,
	    .nsid		= 0,
	    .sel		= 0,
	    .cdw11		= 0,
	    .uuidx		= 0,
	    .data_len		= 0,
	    .data		= NULL,
	    .timeout		= NVME_DEFAULT_IOCTL_TIMEOUT,
	    .result		= &result,
    };
    err = nvme_get_features(&args);
    if (err < 0) {
        perror("get-feature");
    }
    if (!err) {
        printf("get-feature:0x%02x (%s), %s value: %#08x\n", feature_id,
            mb_feature_to_string(feature_id),
            nvme_select_to_string(0), result);
    } else if (err > 0)
	    nvme_show_status(err);
    dev_close(dev);
    return err;
}

static int mb_set_powermanager_status(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
    const char *desc = "Set Memblaze power management status\n	(value 0 - 25w, 1 - 20w, 2 - 15w)";
    const char *value = "new value of feature (required)";
    const char *save = "specifies that the controller shall save the attribute";
    struct nvme_dev *dev;
    __u32 result;
    int err;

    struct config {
        __u32 feature_id;
        __u32 value;
        bool  save;
    };

    struct config cfg = {
        .feature_id   = MB_FEAT_POWER_MGMT,
        .value        = 0,
        .save         = 0,
    };

    OPT_ARGS(opts) = {
        OPT_UINT("value",        'v', &cfg.value,        value),
        OPT_FLAG("save",         's', &cfg.save,         save),
        OPT_END()
    };

    err = parse_and_open(&dev, argc, argv, desc, opts);
    if (err)
	    return err;

    struct nvme_set_features_args args = {
	    .args_size		= sizeof(args),
	    .fd			= dev_fd(dev),
	    .fid		= cfg.feature_id,
	    .nsid		= 0,
	    .cdw11		= cfg.value,
	    .cdw12		= 0,
	    .save		= cfg.save,
	    .uuidx		= 0,
	    .cdw15		= 0,
	    .data_len		= 0,
	    .data		= NULL,
	    .timeout		= NVME_DEFAULT_IOCTL_TIMEOUT,
	    .result		= &result,
    };
    err = nvme_set_features(&args);
    if (err < 0) {
        perror("set-feature");
    }
    if (!err) {
        printf("set-feature:%02x (%s), value:%#08x\n", cfg.feature_id,
            mb_feature_to_string(cfg.feature_id), cfg.value);
    } else if (err > 0)
	    nvme_show_status(err);

    dev_close(dev);
    return err;
}

#define P2MIN                                              (1)
#define P2MAX                                              (5000)
#define MB_FEAT_HIGH_LATENCY_VALUE_SHIFT                   (15)
static int mb_set_high_latency_log(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
    const char *desc = "Set Memblaze high latency log\n"\
                       "	input parameter p1,p2\n"\
                       "	p1 value: 0 is disable, 1 is enable\n"\
                       "	p2 value: 1 .. 5000 ms";
    const char *param = "input parameters";
    int param1 = 0, param2 = 0;
    struct nvme_dev *dev;
    __u32 result;
    int err;

    struct config {
        __u32 feature_id;
        char * param;
        __u32 value;
    };

    struct config cfg = {
        .feature_id   = MB_FEAT_HIGH_LATENCY,
        .param        = "0,0",
        .value        = 0,
    };

    OPT_ARGS(opts) = {
        OPT_LIST("param",        'p', &cfg.param,       param),
        OPT_END()
    };

    err = parse_and_open(&dev, argc, argv, desc, opts);
    if (err)
	    return err;

    if (parse_params(cfg.param, 2, &param1, &param2)) {
        printf("setfeature: invalid formats %s\n", cfg.param);
        dev_close(dev);
        return EINVAL;
    }
    if ((param1 == 1) && (param2 < P2MIN || param2 > P2MAX)) {
        printf("setfeature: invalid high io latency threshold %d\n", param2);
        dev_close(dev);
        return EINVAL;
    }
    cfg.value = (param1 << MB_FEAT_HIGH_LATENCY_VALUE_SHIFT) | param2;

    struct nvme_set_features_args args = {
	    .args_size		= sizeof(args),
	    .fd			= dev_fd(dev),
	    .fid		= cfg.feature_id,
	    .nsid		= 0,
	    .cdw11		= cfg.value,
	    .cdw12		= 0,
	    .save		= false,
	    .uuidx		= 0,
	    .cdw15		= 0,
	    .data_len		= 0,
	    .data		= NULL,
	    .timeout		= NVME_DEFAULT_IOCTL_TIMEOUT,
	    .result		= &result,
    };
    err = nvme_set_features(&args);
    if (err < 0) {
        perror("set-feature");
    }
    if (!err) {
        printf("set-feature:0x%02X (%s), value:%#08x\n", cfg.feature_id,
            mb_feature_to_string(cfg.feature_id), cfg.value);
    } else if (err > 0)
	    nvme_show_status(err);

    dev_close(dev);
    return err;
}

static int glp_high_latency_show_bar(FILE *fdi, int print)
{
    fPRINT_PARAM1("Memblaze High Latency Log\n");
    fPRINT_PARAM1("---------------------------------------------------------------------------------------------\n");
    fPRINT_PARAM1("Timestamp                        Type    QID    CID    NSID     StartLBA      NumLBA   Latency\n");
    fPRINT_PARAM1("---------------------------------------------------------------------------------------------\n");
    return 0;
}

/* High latency log page definiton
 * Total 32 bytes
 */
typedef struct
{
    __u8 port;
    __u8 revision;
    __u16 rsvd;
    __u8 opcode;
    __u8 sqe;
    __u16 cid;
    __u32 nsid;
    __u32 latency;
    __u64 sLBA;
    __u16 numLBA;
    __u16 timestampH;
    __u32 timestampL;
} log_page_high_latency_t; /* total 32 bytes */

static int find_deadbeef(char *buf)
{
    if (((*(buf + 0) & 0xff) == 0xef) && ((*(buf + 1) & 0xff) == 0xbe) && \
            ((*(buf + 2) & 0xff) == 0xad) && ((*(buf + 3) & 0xff) == 0xde))
    {
        return 1;
    }
    return 0;
}

#define TIME_STR_SIZE                                      (44)
static int glp_high_latency(FILE *fdi, char *buf, int buflen, int print)
{
    log_page_high_latency_t *logEntry;
    char string[TIME_STR_SIZE];
    int i, entrySize;
    __u64 timestamp;
    time_t tt = 0;
    struct tm *t = NULL;
    int millisec = 0;

    if (find_deadbeef(buf)) return 0;

    entrySize = sizeof(log_page_high_latency_t);
    for (i = 0; i < buflen; i += entrySize)
    {
        logEntry = (log_page_high_latency_t *)(buf + i);

        if (logEntry->latency == 0 && logEntry->revision == 0)
        {
            return 1;
        }

        if (0 == logEntry->timestampH)  //  generate host time string
        {
            snprintf(string, sizeof(string), "%d", logEntry->timestampL);
        }
        else  //  sort
        {
            timestamp = logEntry->timestampH;
            timestamp = timestamp << 32;
            timestamp += logEntry->timestampL;
            tt = timestamp / 1000;
            millisec = timestamp % 1000;
            t = gmtime(&tt);
            snprintf(string, sizeof(string), "%4d%02d%02d--%02d:%02d:%02d.%03d UTC",
                     1900 + t->tm_year, 1 + t->tm_mon, t->tm_mday, t->tm_hour, t->tm_min, t->tm_sec, millisec);
        }

	if (fdi) {
		fprintf(fdi, "%-32s %-7x %-6x %-6x %-8x %4x%08x  %-8x %-d\n",
			string, logEntry->opcode, logEntry->sqe,
			logEntry->cid, logEntry->nsid,
			(__u32)(logEntry->sLBA >> 32),
			(__u32)logEntry->sLBA, logEntry->numLBA,
			logEntry->latency);
	}
        if (print)
        {
            printf("%-32s %-7x %-6x %-6x %-8x %4x%08x  %-8x %-d\n",
                   string, logEntry->opcode, logEntry->sqe, logEntry->cid, logEntry->nsid,
                   (__u32)(logEntry->sLBA >> 32), (__u32)logEntry->sLBA, logEntry->numLBA, logEntry->latency);
        }
    }
    return 1;
}

static int mb_high_latency_log_print(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
    const char *desc = "Get Memblaze high latency log";
    char buf[LOG_PAGE_SIZE];
    struct nvme_dev *dev;
    FILE *fdi = NULL;
    int err;

    OPT_ARGS(opts) = {
        OPT_END()
    };

    err = parse_and_open(&dev, argc, argv, desc, opts);
    if (err)
	    return err;

    fdi = fopen(FID_C3_LOG_FILENAME, "w+");

    glp_high_latency_show_bar(fdi, DO_PRINT_FLAG);
    err = nvme_get_log_simple(dev_fd(dev), GLP_ID_VU_GET_HIGH_LATENCY_LOG,
			      sizeof(buf), &buf);

    while (1) {
        if (!glp_high_latency(fdi, buf, LOG_PAGE_SIZE, DO_PRINT_FLAG)) break;
        err = nvme_get_log_simple(dev_fd(dev), GLP_ID_VU_GET_HIGH_LATENCY_LOG,
				  sizeof(buf), &buf);
        if ( err) {
	    nvme_show_status(err);
            break;
        }
    }

    if (NULL != fdi) fclose(fdi);
    dev_close(dev);
    return err;
}

static int memblaze_fw_commit(int fd, int select)
{
	struct nvme_passthru_cmd cmd = {
		.opcode		= nvme_admin_fw_commit,
		.cdw10		= 8,
		.cdw12      = select,
	};

	return nvme_submit_admin_passthru(fd, &cmd, NULL);
}

static int mb_selective_download(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	const char *desc =
		"This performs a selective firmware download, which allows the user to "
		"select which firmware binary to update for 9200 devices. This requires a power cycle once the "
		"update completes. The options available are: \n\n"
		"OOB - This updates the OOB and main firmware\n"
		"EEP - This updates the eeprom and main firmware\n"
		"ALL - This updates the eeprom, OOB, and main firmware";
	const char *fw = "firmware file (required)";
	const char *select = "FW Select (e.g., --select=OOB, EEP, ALL)";
	int xfer = 4096;
	void *fw_buf;
	int selectNo,fw_fd,fw_size,err,offset = 0;
	struct nvme_dev *dev;
	struct stat sb;
	int i;

	struct config {
		char  *fw;
		char  *select;
	};

	struct config cfg = {
		.fw     = "",
		.select = "\0",
	};

	OPT_ARGS(opts) = {
		OPT_STRING("fw", 'f', "FILE", &cfg.fw, fw),
		OPT_STRING("select", 's', "flag", &cfg.select, select),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		return err;

	if (strlen(cfg.select) != 3) {
		fprintf(stderr, "Invalid select flag\n");
		err = EINVAL;
		goto out;
	}

	for (i = 0; i < 3; i++) {
		cfg.select[i] = toupper(cfg.select[i]);
	}

	if (strncmp(cfg.select,"OOB", 3) == 0) {
		selectNo = 18;
	} else if (strncmp(cfg.select,"EEP", 3) == 0) {
		selectNo = 10;
	} else if (strncmp(cfg.select,"ALL", 3) == 0) {
		selectNo = 26;
	} else {
		fprintf(stderr, "Invalid select flag\n");
		err = EINVAL;
		goto out;
	}

	fw_fd = open(cfg.fw, O_RDONLY);
	if (fw_fd < 0) {
		fprintf(stderr, "no firmware file provided\n");
		err = EINVAL;
		goto out;
	}

	err = fstat(fw_fd, &sb);
	if (err < 0) {
		perror("fstat");
		err = errno;
		goto out_close;
	}

	fw_size = sb.st_size;
	if (fw_size & 0x3) {
		fprintf(stderr, "Invalid size:%d for f/w image\n", fw_size);
		err = EINVAL;
		goto out_close;
	}

	if (posix_memalign(&fw_buf, getpagesize(), fw_size)) {
		fprintf(stderr, "No memory for f/w size:%d\n", fw_size);
		err = ENOMEM;
		goto out_close;
	}

	if (read(fw_fd, fw_buf, fw_size) != ((ssize_t)(fw_size))) {
		err = errno;
		goto out_free;
	}

	while (fw_size > 0) {
		xfer = min(xfer, fw_size);

		struct nvme_fw_download_args args = {
			.args_size	= sizeof(args),
			.fd		= dev_fd(dev),
			.offset		= offset,
			.data_len	= xfer,
			.data		= fw_buf,
			.timeout	= NVME_DEFAULT_IOCTL_TIMEOUT,
			.result		= NULL,
		};
		err = nvme_fw_download(&args);
		if (err < 0) {
			perror("fw-download");
			goto out_free;
		} else if (err != 0) {
			nvme_show_status(err);
			goto out_free;
		}
		fw_buf     += xfer;
		fw_size    -= xfer;
		offset += xfer;
	}

	err = memblaze_fw_commit(dev_fd(dev), selectNo);

	if(err == 0x10B || err == 0x20B) {
		err = 0;
		fprintf(stderr, "Update successful! Please power cycle for changes to take effect\n");
	}

out_free:
	free(fw_buf);
out_close:
	close(fw_fd);
out:
	dev_close(dev);
	return err;
}

static void ioLatencyHistogramOutput(FILE *fd, int index, int start, int end, char *unit0,
                                     char *unit1, unsigned int *pHistogram, int print)
{
    int len;
    char string[64], subString0[12], subString1[12];

    snprintf(subString0, sizeof(subString0), "%d%s", start, unit0);
    if (end != 0x7FFFFFFF)
        snprintf(subString1, sizeof(subString1), "%d%s", end, unit1);
    else
        snprintf(subString1, sizeof(subString1), "%s", "+INF");
    len = snprintf(string, sizeof(string), "%-11d %-11s %-11s %-11u\n",
		   index, subString0, subString1,
                   pHistogram[index]);
    fwrite(string, 1, len, fd);
    if (print)
        printf("%s", string);
}

int io_latency_histogram(char *file, char *buf, int print, int logid)
{
    FILE *fdi = fopen(file, "w+");
    int i, index;
    char unit[2][3];
    unsigned int *revision = (unsigned int *)buf;

    if (logid == GLP_ID_VU_GET_READ_LATENCY_HISTOGRAM)
    {
        fPRINT_PARAM1("Memblaze IO Read Command Latency Histogram\n");
    }
    else if (logid == GLP_ID_VU_GET_WRITE_LATENCY_HISTOGRAM)
    {
        fPRINT_PARAM1("Memblaze IO Write Command Latency Histogram\n");
    }
    fPRINT_PARAM2("Major Revision : %d\n", revision[1]);
    fPRINT_PARAM2("Minor Revision : %d\n", revision[0]);
    buf += 8;

    if (revision[1] == 1 && revision[0] == 0)
    {
        fPRINT_PARAM1("--------------------------------------------------\n");
        fPRINT_PARAM1("Bucket      Start       End         Value         \n");
        fPRINT_PARAM1("--------------------------------------------------\n");
        index = 0;
        strcpy(unit[0], "us");
        strcpy(unit[1], "us");
        for (i = 0; i < 32; i++, index++)
        {
            if (i == 31)
            {
                strcpy(unit[1], "ms");
                ioLatencyHistogramOutput(fdi, index, i * 32, 1, unit[0], unit[1], (unsigned int *)buf, print);
            }
            else
            {
                ioLatencyHistogramOutput(fdi, index, i * 32, (i + 1) * 32, unit[0], unit[1], (unsigned int *)buf,
                                         print);
            }
        }

        strcpy(unit[0], "ms");
        strcpy(unit[1], "ms");
        for (i = 1; i < 32; i++, index++)
        {
            ioLatencyHistogramOutput(fdi, index, i, i + 1, unit[0], unit[1], (unsigned int *)buf, print);
        }

        for (i = 1; i < 32; i++, index++)
        {
            if (i == 31)
            {
                strcpy(unit[1], "s");
                ioLatencyHistogramOutput(fdi, index, i * 32, 1, unit[0], unit[1], (unsigned int *)buf, print);
            }
            else
            {
                ioLatencyHistogramOutput(fdi, index, i * 32, (i + 1) * 32, unit[0], unit[1], (unsigned int *)buf,
                                         print);
            }
        }

        strcpy(unit[0], "s");
        strcpy(unit[1], "s");
        for (i = 1; i < 4; i++, index++)
        {
            ioLatencyHistogramOutput(fdi, index, i, i + 1, unit[0], unit[1], (unsigned int *)buf, print);
        }

        ioLatencyHistogramOutput(fdi, index, i, 0x7FFFFFFF, unit[0], unit[1], (unsigned int *)buf, print);
    }
    else
    {
        fPRINT_PARAM1("Unsupported io latency histogram revision\n");
    }

    if (fdi)
	    fclose(fdi);
    return 1;
}

static int mb_lat_stats_log_print(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
    char stats[LOG_PAGE_SIZE];
    char f1[] = FID_C1_LOG_FILENAME;
    char f2[] = FID_C2_LOG_FILENAME;
    struct nvme_dev *dev;
    int err;

    const char *desc = "Get Latency Statistics log and show it.";
    const char *write = "Get write statistics (read default)";

    struct config {
        bool  write;
    };
    struct config cfg = {
        .write = 0,
    };

    OPT_ARGS(opts) = {
        OPT_FLAG("write",      'w', &cfg.write,      write),
        OPT_END()
    };

    err = parse_and_open(&dev, argc, argv, desc, opts);
    if (err)
	    return err;

    err = nvme_get_log_simple(dev_fd(dev), cfg.write ? 0xc2 : 0xc1,
			      sizeof(stats), &stats);
    if (!err)
        io_latency_histogram(cfg.write ? f2 : f1, stats, DO_PRINT_FLAG,
         cfg.write ? GLP_ID_VU_GET_WRITE_LATENCY_HISTOGRAM : GLP_ID_VU_GET_READ_LATENCY_HISTOGRAM);
    else
	    nvme_show_status(err);

    dev_close(dev);
    return err;
}

static int memblaze_clear_error_log(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
    char *desc = "Clear Memblaze devices error log.";
    struct nvme_dev *dev;
    int err;

    __u32 result;

    struct config {
        __u32 feature_id;
        __u32 value;
        int   save;
    };

    struct config cfg = {
        .feature_id   = 0xf7,
        .value        = 0x534d0001,
        .save         = 0,
    };

    OPT_ARGS(opts) = {
        OPT_END()
    };

    err = parse_and_open(&dev, argc, argv, desc, opts);
    if (err)
        return err;

    struct nvme_set_features_args args = {
        .args_size      = sizeof(args),
        .fd             = dev_fd(dev),
        .fid            = cfg.feature_id,
        .nsid           = 0,
        .cdw11          = cfg.value,
        .cdw12          = 0,
        .save           = cfg.save,
        .uuidx          = 0,
        .cdw15          = 0,
        .data_len       = 0,
        .data           = NULL,
        .timeout        = NVME_DEFAULT_IOCTL_TIMEOUT,
        .result         = &result,
    };
    err = nvme_set_features(&args);
    if (err < 0) {
        perror("set-feature");
    }
    if (!err) {
        printf("set-feature:%02x (%s), value:%#08x\n", cfg.feature_id, mb_feature_to_string(cfg.feature_id), cfg.value);
    } else if (err > 0)
        nvme_show_status(err);

    dev_close(dev);
    return err;
}

static int mb_set_lat_stats(int argc, char **argv,
		struct command *command, struct plugin *plugin)
{
	const char *desc = (
			"Enable/Disable Latency Statistics Tracking.\n"
			"No argument prints current status.");
	const char *enable_desc = "Enable LST";
	const char *disable_desc = "Disable LST";
	const __u32 nsid = 0;
	const __u8 fid = 0xe2;
	const __u8 sel = 0;
	const __u32 cdw11 = 0x0;
	const __u32 cdw12 = 0x0;
	const __u32 data_len = 32;
	const __u32 save = 0;
	struct nvme_dev *dev;
	void *buf = NULL;
	__u32 result;
	int err;

	struct config {
		bool enable, disable;
	};

	struct config cfg = {
		.enable = false,
		.disable = false,
	};

	struct argconfig_commandline_options command_line_options[] = {
		{"enable", 'e', "", CFG_FLAG, &cfg.enable, no_argument, enable_desc},
		{"disable", 'd', "", CFG_FLAG, &cfg.disable, no_argument, disable_desc},
		{NULL}
	};

	err = parse_and_open(&dev, argc, argv, desc, command_line_options);

	enum Option {
		None = -1,
		True = 1,
		False = 0,
	};
	enum Option option = None;

	if (cfg.enable && cfg.disable)
		printf("Cannot enable and disable simultaneously.");
	else if (cfg.enable || cfg.disable)
		option = cfg.enable;

	struct nvme_get_features_args args_get = {
		.args_size	= sizeof(args_get),
		.fd		= dev_fd(dev),
		.fid		= fid,
		.nsid		= nsid,
		.sel		= sel,
		.cdw11		= cdw11,
		.uuidx		= 0,
		.data_len	= data_len,
		.data		= buf,
		.timeout	= NVME_DEFAULT_IOCTL_TIMEOUT,
		.result		= &result,
	};

	struct nvme_set_features_args args_set = {
		.args_size	= sizeof(args_set),
		.fd		= dev_fd(dev),
		.fid		= fid,
		.nsid		= nsid,
		.cdw11		= option,
		.cdw12		= cdw12,
		.save		= save,
		.uuidx		= 0,
		.cdw15		= 0,
		.data_len	= data_len,
		.data		= buf,
		.timeout	= NVME_DEFAULT_IOCTL_TIMEOUT,
		.result		= &result,
	};

	if (err)
		return err;
	switch (option) {
	case None:
		err = nvme_get_features(&args_get);
		if (!err) {
			printf(
				"Latency Statistics Tracking (FID 0x%X) is currently (%i).\n",
				fid, result);
		} else {
			printf("Could not read feature id 0xE2.\n");
			dev_close(dev);
			return err;
		}
		break;
	case True:
	case False:
	        err = nvme_set_features(&args_set);
		if (err > 0) {
			nvme_show_status(err);
		} else if (err < 0) {
			perror("Enable latency tracking");
			fprintf(stderr, "Command failed while parsing.\n");
		} else {
			printf("Successfully set enable bit for FID (0x%X) to %i.\n",
				0xe2, option);
		}
		break;
	default:
		printf("%d not supported.\n", option);
		err = EINVAL;
	}
	dev_close(dev);
	return err;
}
   070701015D6C2D000081A4000003E80000006400000001642C0FB500000806000000000000004A00000000000000000000002600000000nvme-cli/plugins/micron/micron-nvme.h /* SPDX-License-Identifier: GPL-2.0-or-later */
#undef CMD_INC_FILE
#define CMD_INC_FILE plugins/micron/micron-nvme

#if !defined(MICRON_NVME) || defined(CMD_HEADER_MULTI_READ)
#define MICRON_NVME

#include "cmd.h"

PLUGIN(NAME("micron", "Micron vendor specific extensions", NVME_VERSION),
	COMMAND_LIST(
		ENTRY("select-download", "Selective Firmware Download", micron_selective_download)
		ENTRY("vs-temperature-stats", "Retrieve Micron temperature statistics ", micron_temp_stats)
		ENTRY("vs-pcie-stats", "Retrieve Micron PCIe error stats", micron_pcie_stats)
		ENTRY("clear-pcie-correctable-errors", "Clear correctable PCIe errors", micron_clear_pcie_correctable_errors)
		ENTRY("vs-internal-log", "Retrieve Micron logs", micron_internal_logs)
		ENTRY("vs-telemetry-controller-option", "Enable/Disable controller telemetry log generation", micron_telemetry_cntrl_option)
		ENTRY("vs-nand-stats", "Retrieve NAND Stats", micron_nand_stats)
		ENTRY("vs-smart-ext-log", "Retrieve extended SMART logs", micron_smart_ext_log)
		ENTRY("vs-drive-info", "Retrieve Drive information", micron_drive_info)
		ENTRY("plugin-version", "Display plugin version info", micron_plugin_version)
		ENTRY("cloud-SSD-plugin-version", "Display plugin version info", micron_cloud_ssd_plugin_version)
		ENTRY("log-page-directory", "Retrieve log page directory", micron_logpage_dir)
		ENTRY("vs-fw-activate-history", "Display FW activation history", micron_fw_activation_history)
		ENTRY("latency-tracking", "Latency monitoring feature control", micron_latency_stats_track)
		ENTRY("latency-stats", "Latency information for tracked commands", micron_latency_stats_info)
		ENTRY("latency-logs", "Latency log details tracked by drive", micron_latency_stats_logs)
		ENTRY("vs-smart-add-log", "Retrieve extended SMART data", micron_ocp_smart_health_logs)
		ENTRY("clear-fw-activate-history", "Clear FW activation history", micron_clr_fw_activation_history)
		ENTRY("vs-smbus-option", "Enable/Disable SMBUS on the drive", micron_smbus_option)
	)
);

#endif

#include "define_cmd.h"
  070701015D6E5A000081A4000003E80000006400000001642C0FB60001AE68000000000000004A00000000000000000000002600000000nvme-cli/plugins/micron/micron-nvme.c // SPDX-License-Identifier: GPL-2.0-or-later
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <stdlib.h>
#include <errno.h>
#include <fcntl.h>
#include <unistd.h>
#include <time.h>
#include <string.h>
#include <libgen.h>
#include <sys/stat.h>
#include "common.h"
#include "nvme.h"
#include "libnvme.h"
#include <limits.h>
#include "linux/types.h"
#include "nvme-print.h"

#define CREATE_CMD
#include "micron-nvme.h"

/* Supported Vendor specific feature ids */
#define MICRON_FEATURE_CLEAR_PCI_CORRECTABLE_ERRORS 0xC3
#define MICRON_FEATURE_CLEAR_FW_ACTIVATION_HISTORY  0xC1
#define MICRON_FEATURE_TELEMETRY_CONTROL_OPTION     0xCF
#define MICRON_FEATURE_SMBUS_OPTION                 0xD5

/* Supported Vendor specific log page sizes */
#define C5_log_size (((452 + 16 * 1024) / 4) * 4096)
#define C0_log_size 512
#define C2_log_size 4096
#define D0_log_size 512
#define FB_log_size 512
#define E1_log_size 256
#define MaxLogChunk 16 * 1024
#define CommonChunkSize 16 * 4096

#define min(x, y) ((x) > (y) ? (y) : (x))
#define SensorCount 8

/* Plugin version major_number.minor_number.patch */
static const char *__version_major = "1";
static const char *__version_minor = "0";
static const char *__version_patch = "14";

/* supported models of micron plugin; new models should be added at the end
 * before UNKNOWN_MODEL. Make sure M5410 is first in the list !
 */
typedef enum { M5410 = 0, M51AX, M51BX, M51CX, M5407, M5411, UNKNOWN_MODEL } eDriveModel;

#define MICRON_VENDOR_ID 0x1344

static char *fvendorid1 = "/sys/class/nvme/nvme%d/device/vendor";
static char *fvendorid2 = "/sys/class/misc/nvme%d/device/vendor";
static char *fdeviceid1 = "/sys/class/nvme/nvme%d/device/device";
static char *fdeviceid2 = "/sys/class/misc/nvme%d/device/device";
static unsigned short vendor_id;
static unsigned short device_id;

typedef struct _LogPageHeader_t {
    unsigned char numDwordsInLogPageHeaderLo;
    unsigned char logPageHeaderFormatVersion;
    unsigned char logPageId;
    unsigned char numDwordsInLogPageHeaderHi;
    unsigned int numValidDwordsInPayload;
    unsigned int numDwordsInEntireLogPage;
} LogPageHeader_t;

static void WriteData(__u8 *data, __u32 len, const char *dir, const char *file, const char *msg)
{
    char tempFolder[8192] = { 0 };
    FILE *fpOutFile = NULL;
    sprintf(tempFolder, "%s/%s", dir, file);
    if ((fpOutFile = fopen(tempFolder, "ab+")) != NULL) {
        if (fwrite(data, 1, len,  fpOutFile) != len) {
            printf("Failed to write %s data to %s\n", msg, tempFolder);
        }
        fclose(fpOutFile);
    } else  {
        printf("Failed to open %s file to write %s\n", tempFolder, msg);
    }
}

static int ReadSysFile(const char *file, unsigned short *id)
{
    int ret = 0;
    char idstr[32] = { '\0' };
    int fd = open(file, O_RDONLY);

    if (fd < 0) {
        perror(file);
        return fd;
    }

    ret = read(fd, idstr, sizeof(idstr));
    close(fd);
    if (ret < 0)
        perror("read");
    else
        *id = strtol(idstr, NULL, 16);

    return ret;
}

static eDriveModel GetDriveModel(int idx)
{
    eDriveModel eModel = UNKNOWN_MODEL;
    char path[512];

    sprintf(path, fvendorid1, idx);
    if (ReadSysFile(path, &vendor_id) < 0) {
        sprintf(path, fvendorid2, idx);
        ReadSysFile(path, &vendor_id);
    }
    sprintf(path, fdeviceid1, idx);
    if (ReadSysFile(path, &device_id) < 0) {
        sprintf(path, fdeviceid2, idx);
        ReadSysFile(path, &device_id);
    }
    if (vendor_id == MICRON_VENDOR_ID) {
        switch (device_id) {
        case 0x5196:
        case 0x51A0:
        case 0x51A1:
        case 0x51A2:
            eModel = M51AX;
            break;
        case 0x51B0:
        case 0x51B1:
        case 0x51B2:
            eModel = M51BX;
            break;
        case 0x51C0:
        case 0x51C1:
        case 0x51C2:
        case 0x51C3:
            eModel = M51CX;
            break;
        case 0x5405:
        case 0x5406:
        case 0x5407:
            eModel = M5407;
            break;
        case 0x5410:
            eModel = M5410;
            break;
        case 0x5411:
            eModel = M5411;
            break;
        default:
            break;
        }
    }
    return eModel;
}

static int ZipAndRemoveDir(char *strDirName, char *strFileName)
{
    int  err = 0;
    char strBuffer[PATH_MAX];
    int  nRet;
    bool is_tgz = false;
    struct stat sb;

    if (strstr(strFileName, ".tar.gz") || strstr(strFileName, ".tgz")) {
        sprintf(strBuffer, "tar -zcf \"%s\" \"%s\"", strFileName,
                strDirName);
        is_tgz = true;
    } else {
        sprintf(strBuffer, "zip -r \"%s\" \"%s\" >temp.txt 2>&1", strFileName,
                strDirName);
    }

    err = EINVAL;
    nRet = system(strBuffer);

    /* check if log file is created, if not print error message */
    if (nRet < 0 || (stat(strFileName, &sb) == -1)) {
        if (is_tgz)
            sprintf(strBuffer, "check if tar and gzip commands are installed");
        else
            sprintf(strBuffer, "check if zip command is installed");

        fprintf(stderr, "Failed to create log data package, %s!\n", strBuffer);
    }

    sprintf(strBuffer, "rm -f -R \"%s\" >temp.txt 2>&1", strDirName);
    nRet = system(strBuffer);
    if (nRet < 0)
        printf("Failed to remove temporary files!\n");

    err = system("rm -f temp.txt");
    return err;
}

static int SetupDebugDataDirectories(char *strSN, char *strFilePath,
                                     char *strMainDirName, char *strOSDirName,
                                     char *strCtrlDirName)
{
    int err = 0;
    char strAppend[250];
    struct stat st;
    char *fileLocation = NULL;
    char *fileName;
    int length = 0;
    int nIndex = 0;
    char *strTemp = NULL;
    struct stat dirStat;
    int j;
    int k = 0;
    int i = 0;

    if (strchr(strFilePath, '/') != NULL) {
        fileName = strrchr(strFilePath, '\\');
        if (fileName == NULL) {
            fileName = strrchr(strFilePath, '/');
        }

        if (fileName != NULL) {
            if (!strcmp(fileName, "/")) {
                goto exit_status;
            }

            while (strFilePath[nIndex] != '\0') {
                if ('\\' == strFilePath[nIndex] && '\\' == strFilePath[nIndex + 1]) {
                    goto exit_status;
                }
                nIndex++;
            }

            length = (int)strlen(strFilePath) - (int)strlen(fileName);

            if (fileName == strFilePath) {
                length = 1;
            }

            if ((fileLocation = (char *)malloc(length + 1)) == NULL) {
                goto exit_status;
            }
            strncpy(fileLocation, strFilePath, length);
            fileLocation[length] = '\0';

            while (fileLocation[k] != '\0') {
                if (fileLocation[k] == '\\') {
                    fileLocation[k] = '/';
                }
                k++;
            }

            length = (int)strlen(fileLocation);

            if (':' == fileLocation[length - 1]) {
                if ((strTemp = (char *)malloc(length + 2)) == NULL) {
                    free(fileLocation);
                    goto exit_status;
                }
                strcpy(strTemp, fileLocation);
                strcat(strTemp, "/");
                free(fileLocation);

                length = (int)strlen(strTemp);
                if ((fileLocation = (char *)malloc(length + 1)) == NULL) {
                    free(strTemp);
                    goto exit_status;
                }

                memcpy(fileLocation, strTemp, length + 1);
                free(strTemp);
            }

            if (stat(fileLocation, &st) != 0) {
                free(fileLocation);
                goto exit_status;
            }
            free(fileLocation);
        } else {
            goto exit_status;
        }
    }

    nIndex = 0;
    for (i = 0; i < (int)strlen(strSN); i++) {
        if (strSN[i] != ' ' && strSN[i] != '\n' && strSN[i] != '\t' && strSN[i] != '\r') {
            strMainDirName[nIndex++] = strSN[i];
        }
    }
    strMainDirName[nIndex] = '\0';

    j = 1;
    while (stat(strMainDirName, &dirStat) == 0) {
        strMainDirName[nIndex] = '\0';
        sprintf(strAppend, "-%d", j);
        strcat(strMainDirName, strAppend);
        j++;
    }

    if (mkdir(strMainDirName, 0777) < 0) {
        err = -1;
        goto exit_status;
    }

    if (strOSDirName != NULL) {
        sprintf(strOSDirName, "%s/%s", strMainDirName, "OS");
        if (mkdir(strOSDirName, 0777) < 0) {
            rmdir(strMainDirName);
            err = -1;
            goto exit_status;
	}
    }
    if (strCtrlDirName != NULL) {
        sprintf(strCtrlDirName, "%s/%s", strMainDirName, "Controller");
        if (mkdir(strCtrlDirName, 0777) < 0) {
            if (strOSDirName != NULL)
                rmdir(strOSDirName);
            rmdir(strMainDirName);
            err = -1;
	}
    }

exit_status:
    return err;
}

static int GetLogPageSize(int nFD, unsigned char ucLogID, int *nLogSize)
{
    int err = 0;
    unsigned char pTmpBuf[CommonChunkSize] = { 0 };
    LogPageHeader_t *pLogHeader = NULL;

    if (ucLogID == 0xC1 || ucLogID == 0xC2 || ucLogID == 0xC4) {
        err = nvme_get_log_simple(nFD, ucLogID,
				  CommonChunkSize, pTmpBuf);
        if (err == 0) {
            pLogHeader = (LogPageHeader_t *) pTmpBuf;
            LogPageHeader_t *pLogHeader1 = (LogPageHeader_t *) pLogHeader;
            *nLogSize = (int)(pLogHeader1->numDwordsInEntireLogPage) * 4;
            if (pLogHeader1->logPageHeaderFormatVersion == 0) {
                printf ("Unsupported log page format version %d of log page : 0x%X\n",
                         ucLogID, err);
                *nLogSize = 0;
                err = -1;
            }
        } else {
            printf ("Getting size of log page : 0x%X failed with %d (ignored)!\n",
                     ucLogID, err);
            *nLogSize = 0;
        }
    }
    return err;
}

static int NVMEGetLogPage(int nFD, unsigned char ucLogID, unsigned char *pBuffer, int nBuffSize)
{
    int err = 0;
    struct nvme_passthru_cmd cmd = { 0 };
    unsigned int uiNumDwords = (unsigned int)nBuffSize / sizeof(unsigned int);
    unsigned int uiMaxChunk = uiNumDwords;
    unsigned int uiNumChunks = 1;
    unsigned int uiXferDwords = 0;
    unsigned long long ullBytesRead = 0;
    unsigned char *pTempPtr = pBuffer;
    unsigned char ucOpCode = 0x02;

    if (ullBytesRead == 0 && (ucLogID == 0xE6 || ucLogID == 0xE7)) {
        uiMaxChunk = 4096;
    } else if (uiMaxChunk > 16 * 1024) {
        uiMaxChunk = 16 * 1024;
    }

    uiNumChunks = uiNumDwords / uiMaxChunk;
    if (uiNumDwords % uiMaxChunk > 0) {
        uiNumChunks += 1;
    }

    for (unsigned int i = 0; i < uiNumChunks; i++) {
        memset(&cmd, 0, sizeof(cmd));
        uiXferDwords = uiMaxChunk;
        if (i == uiNumChunks - 1 && uiNumDwords % uiMaxChunk > 0) {
            uiXferDwords = uiNumDwords % uiMaxChunk;
        }

        cmd.opcode = ucOpCode;
        cmd.cdw10 |= ucLogID;
        cmd.cdw10 |= ((uiXferDwords - 1) & 0x0000FFFF) << 16;

        if (ucLogID == 0x7) {
            cmd.cdw10 |= 0x80;
        }
        if (ullBytesRead == 0 && (ucLogID == 0xE6 || ucLogID == 0xE7)) {
            cmd.cdw11 = 1;
        }
        if (ullBytesRead > 0 && !(ucLogID == 0xE6 || ucLogID == 0xE7)) {
            unsigned long long ullOffset = ullBytesRead;
            cmd.cdw12 = ullOffset & 0xFFFFFFFF;
            cmd.cdw13 = (ullOffset >> 32) & 0xFFFFFFFF;
        }

        cmd.addr = (__u64) (uintptr_t) pTempPtr;
        cmd.nsid = 0xFFFFFFFF;
        cmd.data_len = uiXferDwords * 4;
        err = nvme_submit_admin_passthru(nFD, &cmd, NULL);
        ullBytesRead += uiXferDwords * 4;
        pTempPtr = pBuffer + ullBytesRead;
    }

    return err;
}

static int NVMEResetLog(int nFD, unsigned char ucLogID, int nBufferSize,
                        long long llMaxSize)
{
    unsigned int *pBuffer = NULL;
    int err = 0;

    if ((pBuffer = (unsigned int *)calloc(1, nBufferSize)) == NULL)
        return err;

    while (err == 0 && llMaxSize > 0) {
        err = NVMEGetLogPage(nFD, ucLogID, (unsigned char *)pBuffer, nBufferSize);
        if (err) {
            free(pBuffer);
            return err;
	}

        if (pBuffer[0] == 0xdeadbeef)
            break;

        llMaxSize = llMaxSize - nBufferSize;
    }

    free(pBuffer);
    return err;
}

static int GetCommonLogPage(int nFD, unsigned char ucLogID,
                            unsigned char **pBuffer, int nBuffSize)
{
    unsigned char *pTempPtr = NULL;
    int err = 0;
    pTempPtr = (unsigned char *)malloc(nBuffSize);
    if (!pTempPtr) {
        goto exit_status;
    }
    memset(pTempPtr, 0, nBuffSize);
    err = nvme_get_log_simple(nFD, ucLogID, nBuffSize, pTempPtr);
    *pBuffer = pTempPtr;

exit_status:
    return err;
}

/*
 * Plugin Commands
 */
static int micron_parse_options(struct nvme_dev **dev, int argc, char **argv,
				const char *desc,
				struct argconfig_commandline_options *opts,
				eDriveModel *modelp)
{
    int idx = 0;
    int err = parse_and_open(dev, argc, argv, desc, opts);

    if (err) {
        perror("open");
        return -1;
    }

    if (modelp) {
        sscanf(argv[optind], "/dev/nvme%d", &idx);
        *modelp = GetDriveModel(idx);
    }

    return 0;
}

static int micron_fw_commit(int fd, int select)
{
    struct nvme_passthru_cmd cmd = {
        .opcode = nvme_admin_fw_commit,
        .cdw10 = 8,
        .cdw12 = select,
    };
    return ioctl(fd, NVME_IOCTL_ADMIN_CMD, &cmd);
}

static int micron_selective_download(int argc, char **argv,
                                     struct command *cmd, struct plugin *plugin)
{
    const char *desc =
        "This performs a selective firmware download, which allows the user to "
        "select which firmware binary to update for 9200 devices. This requires "
        "a power cycle once the update completes. The options available are: \n\n"
        "OOB - This updates the OOB and main firmware\n"
        "EEP - This updates the eeprom and main firmware\n"
        "ALL - This updates the eeprom, OOB, and main firmware";
    const char *fw = "firmware file (required)";
    const char *select = "FW Select (e.g., --select=ALL)";
    int xfer = 4096;
    void *fw_buf;
    int selectNo, fw_fd, fw_size, err, offset = 0;
    struct nvme_dev *dev;
    struct stat sb;

    struct config {
        char *fw;
        char *select;
    };

    struct config cfg = {
        .fw = "",
        .select = "\0",
    };

    OPT_ARGS(opts) = {
        OPT_STRING("fw", 'f', "FILE", &cfg.fw, fw),
        OPT_STRING("select", 's', "flag", &cfg.select, select),
        OPT_END()
    };

    err = parse_and_open(&dev, argc, argv, desc, opts);
    if (err)
        return err;

    if (strlen(cfg.select) != 3) {
        fprintf(stderr, "Invalid select flag\n");
        dev_close(dev);
        return EINVAL;
    }

    for (int i = 0; i < 3; i++) {
        cfg.select[i] = toupper(cfg.select[i]);
    }

    if (strncmp(cfg.select, "OOB", 3) == 0) {
        selectNo = 18;
    } else if (strncmp(cfg.select, "EEP", 3) == 0) {
        selectNo = 10;
    } else if (strncmp(cfg.select, "ALL", 3) == 0) {
        selectNo = 26;
    } else {
        fprintf(stderr, "Invalid select flag\n");
        dev_close(dev);
        return EINVAL;
    }

    fw_fd = open(cfg.fw, O_RDONLY);
    if (fw_fd < 0) {
        fprintf(stderr, "no firmware file provided\n");
        dev_close(dev);
        return EINVAL;
    }

    err = fstat(fw_fd, &sb);
    if (err < 0) {
        perror("fstat");
        err = errno;
        goto out;
    }

    fw_size = sb.st_size;
    if (fw_size & 0x3) {
        fprintf(stderr, "Invalid size:%d for f/w image\n", fw_size);
        err = EINVAL;
        goto out;
    }

    if (posix_memalign(&fw_buf, getpagesize(), fw_size)) {
        fprintf(stderr, "No memory for f/w size:%d\n", fw_size);
        err = ENOMEM;
        goto out;
    }

    if (read(fw_fd, fw_buf, fw_size) != ((ssize_t) (fw_size))) {
	err = errno;
	goto out_free;
    }

    while (fw_size > 0) {
        xfer = min(xfer, fw_size);

	struct nvme_fw_download_args args = {
		.args_size	= sizeof(args),
		.fd		= dev_fd(dev),
		.offset		= offset,
		.data_len	= xfer,
		.data		= fw_buf,
		.timeout	= NVME_DEFAULT_IOCTL_TIMEOUT,
		.result		= NULL,
	};
        err = nvme_fw_download(&args);
        if (err < 0) {
            perror("fw-download");
            goto out_free;
        } else if (err != 0) {
	    nvme_show_status(err);
            goto out_free;
        }
        fw_buf += xfer;
        fw_size -= xfer;
        offset += xfer;
    }

    err = micron_fw_commit(dev_fd(dev), selectNo);

    if (err == 0x10B || err == 0x20B) {
        err = 0;
        fprintf(stderr,
                "Update successful! Power cycle for changes to take effect\n");
    }

out_free:
    free(fw_buf);
out:
    close(fw_fd);
    dev_close(dev);
    return err;
}

static int micron_smbus_option(int argc, char **argv,
                               struct command *cmd, struct plugin *plugin)
{
    __u32 result = 0;
    __u32 cdw11 = 0;
    const char *desc = "Enable/Disable/Get status of SMBUS option on controller";
    const char *option = "enable or disable or status";
    const char *value = "1 - hottest component temperature, 0 - composite "
                        "temperature (default) for enable option, 0 (current), "
                        "1 (default), 2 (saved) for status options";
    const char *save = "1 - persistent, 0 - non-persistent (default)";
    int fid = MICRON_FEATURE_SMBUS_OPTION;
    eDriveModel model = UNKNOWN_MODEL;
    struct nvme_dev *dev;
    int err = 0;

    struct {
        char *option;
        int  value;
        int  save;
        int  status;
    } opt = {
        .option = "disable",
        .value = 0,
        .save = 0,
        .status = 0,
    };

    OPT_ARGS(opts) = {
        OPT_STRING("option", 'o', "option", &opt.option, option),
        OPT_UINT("value", 'v',  &opt.value, value),
        OPT_UINT("save", 's', &opt.save, save),
        OPT_END()
    };

    err = micron_parse_options(&dev, argc, argv, desc, opts, &model);
    if (err < 0)
        return err;

    if (model != M5407 && model != M5411) {
        printf ("This option is not supported for specified drive\n");
        dev_close(dev);
        return err;
    }

    if (!strcmp(opt.option, "enable")) {
        cdw11 = opt.value << 1 | 1;
        err = nvme_set_features_simple(dev_fd(dev), fid, 1, cdw11, opt.save,
				       &result);
        if (err == 0) {
            printf("successfully enabled SMBus on drive\n");
        } else {
            printf("Failed to enabled SMBus on drive\n");
        }
    }
    else if (!strcmp(opt.option, "status")) {
	struct nvme_get_features_args args = {
                .args_size      = sizeof(args),
                .fd             = dev_fd(dev),
                .fid            = fid,
                .nsid           = 1,
                .sel            = opt.value,
                .cdw11          = 0,
                .uuidx          = 0,
                .data_len       = 0,
                .data           = NULL,
                .timeout        = NVME_DEFAULT_IOCTL_TIMEOUT,
                .result         = &result,
        };
        err = nvme_get_features(&args);
        if (err == 0) {
            printf("SMBus status on the drive: %s (returns %s temperature) \n",
                    (result & 1) ? "enabled" : "disabled",
                    (result & 2) ? "hottest component" : "composite");
        } else {
            printf("Failed to retrieve SMBus status on the drive\n");
        }
    }
    else if (!strcmp(opt.option, "disable")) {
        cdw11 = opt.value << 1 | 0;
        err = nvme_set_features_simple(dev_fd(dev), fid, 1, cdw11, opt.save,
				       &result);
        if (err == 0) {
            printf("Successfully disabled SMBus on drive\n");
        } else {
            printf("Failed to disable SMBus on drive\n");
        }
    } else {
        printf("Invalid option %s, valid values are enable, disable or status\n",
                opt.option);
        dev_close(dev);
        return -1;
    }

    close(dev_fd(dev));
    return err;
}

static int micron_temp_stats(int argc, char **argv, struct command *cmd,
                             struct plugin *plugin)
{

    struct nvme_smart_log smart_log;
    unsigned int temperature = 0, i = 0, err = 0;
    unsigned int tempSensors[SensorCount] = { 0 };
    const char *desc = "Retrieve Micron temperature info for the given device ";
    const char *fmt = "output format normal|json";
    struct format {
        char *fmt;
    };
    struct format cfg = {
        .fmt = "normal",
    };
    bool is_json = false;
    struct json_object *root;
    struct json_object *logPages;
    struct nvme_dev *dev;

    OPT_ARGS(opts) = {
        OPT_FMT("format", 'f', &cfg.fmt, fmt),
        OPT_END()
    };

    err = parse_and_open(&dev, argc, argv, desc, opts);
    if (err) {
        printf("\nDevice not found \n");;
        return -1;
    }

    if (strcmp(cfg.fmt, "json") == 0)
        is_json = true;

    err = nvme_get_log_smart(dev_fd(dev), 0xffffffff, false, &smart_log);
    if (!err) {
        temperature = ((smart_log.temperature[1] << 8) | smart_log.temperature[0]);
        temperature = temperature ? temperature - 273 : 0;
        for (i = 0; i < SensorCount && tempSensors[i] != 0; i++) {
            tempSensors[i] = le16_to_cpu(smart_log.temp_sensor[i]);
            tempSensors[i] = tempSensors[i] ? tempSensors[i] - 273 : 0;
        }
        if (is_json) {
            struct json_object *stats = json_create_object();
            char tempstr[64] = { 0 };
            root = json_create_object();
            logPages = json_create_array();
            json_object_add_value_array(root, "Micron temperature information", logPages);
            sprintf(tempstr, "%u C", temperature);
            json_object_add_value_string(stats, "Current Composite Temperature", tempstr);
            for (i = 0; i < SensorCount && tempSensors[i] != 0; i++) {
                char sensor_str[256] = { 0 };
                char datastr[64] = { 0 };
                sprintf(sensor_str, "Temperature Sensor #%d", (i + 1));
                sprintf(datastr, "%u C", tempSensors[i]);
                json_object_add_value_string(stats, sensor_str, datastr);
            }
            json_array_add_value_object(logPages, stats);
            json_print_object(root, NULL);
            printf("\n");
            json_free_object(root);
        } else {
            printf("Micron temperature information:\n");
            printf("%-10s : %u C\n", "Current Composite Temperature", temperature);
            for (i = 0; i < SensorCount && tempSensors[i] != 0; i++) {
                printf("%-10s%d : %u C\n", "Temperature Sensor #", i + 1, tempSensors[i]);
            }
        }
    }
    dev_close(dev);
    return err;
}

static int micron_pcie_stats(int argc, char **argv,
                             struct command *cmd, struct plugin *plugin)
{
    int  i, err = 0, bus = 0, domain = 0, device = 0, function = 0, ctrlIdx;
    char strTempFile[1024], strTempFile2[1024], command[1024];
    struct nvme_dev *dev;
    char *businfo = NULL;
    char *devicename = NULL;
    char tdevice[NAME_MAX] = { 0 };
    ssize_t sLinkSize = 0;
    FILE *fp;
    char correctable[8] = { 0 };
    char uncorrectable[8] = { 0 };
    struct nvme_passthru_cmd admin_cmd = { 0 };
    eDriveModel eModel = UNKNOWN_MODEL;
    char *res;
    bool is_json = true;
    bool counters = false;
    struct format {
        char *fmt;
    };
    const char *desc = "Retrieve PCIe event counters";
    const char *fmt = "output format json|normal";
    struct format cfg = {
        .fmt = "json",
    };
    struct pcie_error_counters {
        __u16 receiver_error;
        __u16 bad_tlp;
        __u16 bad_dllp;
        __u16 replay_num_rollover;
        __u16 replay_timer_timeout;
        __u16 advisory_non_fatal_error;
        __u16 DLPES;
        __u16 poisoned_tlp;
        __u16 FCPC;
        __u16 completion_timeout;
        __u16 completion_abort;
        __u16 unexpected_completion;
        __u16 receiver_overflow;
        __u16 malformed_tlp;
        __u16 ecrc_error;
        __u16 unsupported_request_error;
    } pcie_error_counters = { 0 };

    struct {
        char *err;
        int  bit;
        int  val;
    } pcie_correctable_errors[] = {
        { "Unsupported Request Error Status (URES)", 20,
		offsetof(struct pcie_error_counters, unsupported_request_error)},
        { "ECRC Error Status (ECRCES)", 19,
		offsetof(struct pcie_error_counters, ecrc_error)},
        { "Malformed TLP Status (MTS)", 18,
		offsetof(struct pcie_error_counters, malformed_tlp)},
        { "Receiver Overflow Status (ROS)", 17,
		offsetof(struct pcie_error_counters, receiver_overflow)},
        { "Unexpected Completion Status (UCS)", 16,
		offsetof(struct pcie_error_counters, unexpected_completion)},
        { "Completer Abort Status (CAS)", 15,
		offsetof(struct pcie_error_counters, completion_abort)},
        { "Completion Timeout Status (CTS)", 14,
		offsetof(struct pcie_error_counters, completion_timeout)},
        { "Flow Control Protocol Error Status (FCPES)", 13,
		offsetof(struct pcie_error_counters, FCPC)},
        { "Poisoned TLP Status (PTS)", 12,
		offsetof(struct pcie_error_counters, poisoned_tlp)},
        { "Data Link Protocol Error Status (DLPES)", 4,
		offsetof(struct pcie_error_counters, DLPES)},
    },
    pcie_uncorrectable_errors[] = {
        { "Advisory Non-Fatal Error Status (ANFES)", 13,
		offsetof(struct pcie_error_counters, advisory_non_fatal_error)},
        { "Replay Timer Timeout Status (RTS)",  12,
		offsetof(struct pcie_error_counters, replay_timer_timeout)},
        { "REPLAY_NUM Rollover Status (RRS)", 8,
		offsetof(struct pcie_error_counters, replay_num_rollover)},
        { "Bad DLLP Status (BDS)", 7,
		offsetof(struct pcie_error_counters, bad_dllp)},
        { "Bad TLP Status (BTS)", 6,
		offsetof(struct pcie_error_counters, bad_tlp)},
        { "Receiver Error Status (RES)", 0,
		offsetof(struct pcie_error_counters, receiver_error)},
    };

    __u32 correctable_errors;
    __u32 uncorrectable_errors;

    OPT_ARGS(opts) = {
        OPT_FMT("format", 'f', &cfg.fmt, fmt),
        OPT_END()
    };

    err = parse_and_open(&dev, argc, argv, desc, opts);
    if (err) {
        printf("\nDevice not found \n");;
        return -1;
    }

    /* pull log details based on the model name */
    sscanf(argv[optind], "/dev/nvme%d", &ctrlIdx);
    if ((eModel = GetDriveModel(ctrlIdx)) == UNKNOWN_MODEL) {
        printf ("Unsupported drive model for vs-pcie-stats command\n");
        goto out;
    }

    if (strcmp(cfg.fmt, "normal") == 0)
        is_json = false;

    if (eModel == M5407) {
        admin_cmd.opcode = 0xD6;
        admin_cmd.addr = (__u64)(uintptr_t)&pcie_error_counters;
        admin_cmd.data_len = sizeof(pcie_error_counters);
        admin_cmd.cdw10 = 1;
        err = nvme_submit_admin_passthru(dev_fd(dev), &admin_cmd, NULL);
        if (!err) {
            counters = true;
            correctable_errors = 10;
            uncorrectable_errors = 6;
            goto print_stats;
        }
    }

    if (strstr(argv[optind], "/dev/nvme") && strstr(argv[optind], "n1")) {
        devicename = strrchr(argv[optind], '/');
    } else if (strstr(argv[optind], "/dev/nvme")) {
        devicename = strrchr(argv[optind], '/');
        sprintf(tdevice, "%s%s", devicename, "n1");
        devicename = tdevice;
    } else {
        printf("Invalid device specified!\n");
        goto out;
    }
    sprintf(strTempFile, "/sys/block/%s/device", devicename);
    memset(strTempFile2, 0x0, 1024);
    sLinkSize = readlink(strTempFile, strTempFile2, 1023);
    if (sLinkSize < 0) {
        err = -errno;
        printf("Failed to read device\n");
        goto out;
    }
    if (strstr(strTempFile2, "../../nvme")) {
        sprintf(strTempFile, "/sys/block/%s/device/device", devicename);
        memset(strTempFile2, 0x0, 1024);
        sLinkSize = readlink(strTempFile, strTempFile2, 1023);
        if (sLinkSize < 0) {
            err = -errno;
            printf("Failed to read device\n");
            goto out;
        }
    }
    businfo = strrchr(strTempFile2, '/');
    sscanf(businfo, "/%x:%x:%x.%x", &domain, &bus, &device, &function);
    sprintf(command, "setpci -s %x:%x.%x ECAP_AER+10.L", bus, device,
            function);
    fp = popen(command, "r");
    if (fp == NULL) {
        printf("Failed to retrieve error count\n");
        goto out;
    }
    res = fgets(correctable, sizeof(correctable), fp);
    if (res == NULL) {
        printf("Failed to retrieve error count\n");
        pclose(fp);
        goto out;
    }
    pclose(fp);

    sprintf(command, "setpci -s %x:%x.%x ECAP_AER+0x4.L", bus, device,
            function);
    fp = popen(command, "r");
    if (fp == NULL) {
        printf("Failed to retrieve error count\n");
        goto out;
    }
    res = fgets(uncorrectable, sizeof(uncorrectable), fp);
    if (res == NULL) {
        printf("Failed to retrieve error count\n");
        pclose(fp);
        goto out;
    }
    pclose(fp);

    correctable_errors = (__u32)strtol(correctable, NULL, 16);
    uncorrectable_errors = (__u32)strtol(uncorrectable, NULL, 16);

print_stats:
    if (is_json) {

        struct json_object *root = json_create_object();
        struct json_object *pcieErrors = json_create_array();
        struct json_object *stats = json_create_object();
        __u8 *pcounter = (__u8 *)&pcie_error_counters;

        json_object_add_value_array(root, "PCIE Stats", pcieErrors);
        for (i = 0; i < sizeof(pcie_correctable_errors) / sizeof(pcie_correctable_errors[0]); i++) {
            __u16 val = counters ? *(__u16 *)(pcounter + pcie_correctable_errors[i].val) :
                                    (correctable_errors >> pcie_correctable_errors[i].bit) & 1;
            json_object_add_value_int(stats, pcie_correctable_errors[i].err, val);
        }
        for (i = 0; i < sizeof(pcie_uncorrectable_errors) / sizeof(pcie_uncorrectable_errors[0]); i++) {
            __u16 val = counters ? *(__u16 *)(pcounter + pcie_uncorrectable_errors[i].val) :
                                    (uncorrectable_errors >> pcie_uncorrectable_errors[i].bit) & 1;
            json_object_add_value_int(stats, pcie_uncorrectable_errors[i].err, val);
        }
        json_array_add_value_object(pcieErrors, stats);
        json_print_object(root, NULL);
        printf("\n");
        json_free_object(root);
    } else if (counters == true) {
        __u8 *pcounter = (__u8 *)&pcie_error_counters;
        for (i = 0; i < sizeof(pcie_correctable_errors) / sizeof(pcie_correctable_errors[0]); i++) {
            printf("%-42s : %-1hu\n", pcie_correctable_errors[i].err,
                                      *(__u16 *)(pcounter + pcie_correctable_errors[i].val));
        }
        for (i = 0; i < sizeof(pcie_uncorrectable_errors) / sizeof(pcie_uncorrectable_errors[0]); i++) {
            printf("%-42s : %-1hu\n", pcie_uncorrectable_errors[i].err,
                                      *(__u16 *)(pcounter + pcie_uncorrectable_errors[i].val));
        }
    } else if (eModel == M5407 || eModel == M5410) {
        for (i = 0; i < sizeof(pcie_correctable_errors) / sizeof(pcie_correctable_errors[0]); i++) {
            printf("%-42s : %-1d\n", pcie_correctable_errors[i].err,
                                      ((correctable_errors >> pcie_correctable_errors[i].bit) & 1));
        }
        for (i = 0; i < sizeof(pcie_uncorrectable_errors) / sizeof(pcie_uncorrectable_errors[0]); i++) {
            printf("%-42s : %-1d\n", pcie_uncorrectable_errors[i].err,
                                      ((uncorrectable_errors >> pcie_uncorrectable_errors[i].bit) & 1));
        }
    } else {
        printf("PCIE Stats:\n");
        printf("Device correctable errors detected: %s\n", correctable);
        printf("Device uncorrectable errors detected: %s\n", uncorrectable);
    }

out:
    dev_close(dev);
    return err;
}

static int micron_clear_pcie_correctable_errors(int argc, char **argv,
        struct command *cmd,
        struct plugin *plugin)
{
    int err = -EINVAL, bus = 0, domain = 0, device = 0, function = 0;
    char strTempFile[1024], strTempFile2[1024], command[1024];
    struct nvme_dev *dev;
    char *businfo = NULL;
    char *devicename = NULL;
    char tdevice[PATH_MAX] = { 0 };
    ssize_t sLinkSize = 0;
    eDriveModel model = UNKNOWN_MODEL;
    struct nvme_passthru_cmd admin_cmd = { 0 };
    char correctable[8] = { 0 };
    FILE *fp;
    char *res;
    const char *desc = "Clear PCIe Device Correctable Errors";
    __u32 result = 0;
    __u8 fid = MICRON_FEATURE_CLEAR_PCI_CORRECTABLE_ERRORS;
    OPT_ARGS(opts) = {
        OPT_END()
    };

    err = micron_parse_options(&dev, argc, argv, desc, opts, &model);
    if (err < 0)
        return err;

    /* For M51CX models, PCIe errors are cleared using 0xC3 feature */
    if (model == M51CX) {
	err = nvme_set_features_simple(dev_fd(dev), fid, 0, (1 << 31), false,
				       &result);
        if (err == 0 && (err = (int)result) == 0) {
            printf("Device correctable errors are cleared!\n");
            goto out;
        }
    } else if (model == M5407) {
        admin_cmd.opcode = 0xD6;
        admin_cmd.addr = 0;
        admin_cmd.cdw10 = 0;
        err = nvme_submit_admin_passthru(dev_fd(dev), &admin_cmd, NULL);
        if (err == 0) {
            printf("Device correctable error counters are cleared!\n");
            goto out;
        } else {
            /* proceed to clear status bits using sysfs interface
            printf("Error clearing PCIe correctable errors = 0x%x\n", err); */
        }
    }

    if (strstr(argv[optind], "/dev/nvme") && strstr(argv[optind], "n1")) {
        devicename = strrchr(argv[optind], '/');
    } else if (strstr(argv[optind], "/dev/nvme")) {
        devicename = strrchr(argv[optind], '/');
        sprintf(tdevice, "%s%s", devicename, "n1");
        devicename = tdevice;
    } else {
        printf("Invalid device specified!\n");
        goto out;
    }
    err = snprintf(strTempFile, sizeof(strTempFile),
                   "/sys/block/%s/device", devicename);
    if (err < 0)
        goto out;

    memset(strTempFile2, 0x0, 1024);
    sLinkSize = readlink(strTempFile, strTempFile2, 1023);
    if (sLinkSize < 0) {
        err = -errno;
        printf("Failed to read device\n");
        goto out;
    }
    if (strstr(strTempFile2, "../../nvme")) {
        err = snprintf(strTempFile, sizeof(strTempFile),
                       "/sys/block/%s/device/device", devicename);
        if (err < 0)
            goto out;
        memset(strTempFile2, 0x0, 1024);
        sLinkSize = readlink(strTempFile, strTempFile2, 1023);
        if (sLinkSize < 0) {
            err = -errno;
            printf("Failed to read device\n");
            goto out;
        }
    }
    businfo = strrchr(strTempFile2, '/');
    sscanf(businfo, "/%x:%x:%x.%x", &domain, &bus, &device, &function);
    sprintf(command, "setpci -s %x:%x.%x ECAP_AER+0x10.L=0xffffffff", bus,
            device, function);
    err = -1;
    fp = popen(command, "r");
    if (fp == NULL) {
        printf("Failed to clear error count\n");
        goto out;
    }
    pclose(fp);

    sprintf(command, "setpci -s %x:%x.%x ECAP_AER+0x10.L", bus, device,
            function);
    fp = popen(command, "r");
    if (fp == NULL) {
        printf("Failed to retrieve error count\n");
        goto out;
    }
    res = fgets(correctable, sizeof(correctable), fp);
    if (res == NULL) {
        printf("Failed to retrieve error count\n");
        pclose(fp);
        goto out;
    }
    pclose(fp);
    printf("Device correctable errors cleared!\n");
    printf("Device correctable errors detected: %s\n", correctable);
    err = 0;
out:
    dev_close(dev);
    return err;
}

static struct logpage {
    const char *field;
    char       datastr[128];
} d0_log_page[] = {
    { "NAND Writes (Bytes Written)", { 0 }},
    { "Program Failure Count", { 0 }},
    { "Erase Failures", { 0 }},
    { "Bad Block Count", { 0 }},
    { "NAND XOR/RAID Recovery Trigger Events", { 0 }},
    { "NSZE Change Supported", { 0 }},
    { "Number of NSZE Modifications", { 0 }}
};

static void init_d0_log_page(__u8 *buf, __u8 nsze)
{
    unsigned int logD0[D0_log_size/sizeof(int)] = { 0 };
    __u64 count_lo, count_hi, count;

    memcpy(logD0, buf, sizeof(logD0));


    count = ((__u64)logD0[45] << 32) | logD0[44];
    sprintf(d0_log_page[0].datastr, "0x%"PRIx64, le64_to_cpu(count));

    count_hi = ((__u64)logD0[39] << 32) | logD0[38];
    count_lo = ((__u64)logD0[37] << 32) | logD0[36];
    if (count_hi != 0)
        sprintf(d0_log_page[1].datastr, "0x%"PRIx64"%016"PRIx64,
                le64_to_cpu(count_hi), le64_to_cpu(count_lo));
    else
        sprintf(d0_log_page[1].datastr, "0x%"PRIx64, le64_to_cpu(count_lo));

    count = ((__u64)logD0[25] << 32) | logD0[24];
    sprintf(d0_log_page[2].datastr, "0x%"PRIx64, le64_to_cpu(count));

    sprintf(d0_log_page[3].datastr, "0x%x", logD0[3]);

    count_lo = ((__u64)logD0[37] << 32) | logD0[36];
    count = ((__u64)logD0[25] << 32) | logD0[24];
    count = (__u64)logD0[3] - (count_lo + count);
    sprintf(d0_log_page[4].datastr, "0x%"PRIx64, le64_to_cpu(count));

    sprintf(d0_log_page[5].datastr, "0x%x", nsze);
    sprintf(d0_log_page[6].datastr, "0x%x", logD0[1]);
}

/* OCP and Vendor specific log data format */
struct micron_vs_logpage {
    char *field;
    int  size;  /* FB client spec version 1.0 sizes - M5410 models */
    int  size2; /* FB client spec version 0.7 sizes - M5407 models */
}
/* Smart Health Log information as per OCP spec M51CX models */
ocp_c0_log_page[] = {
    { "Physical Media Units Written", 16},
    { "Physical Media Units Read", 16 },
    { "Raw Bad User NAND Block Count", 6},
    { "Normalized Bad User NAND Block Count", 2},
    { "Raw Bad System NAND Block Count", 6},
    { "Normalized Bad System NAND Block Count", 2},
    { "XOR Recovery Count", 8},
    { "Uncorrectable Read Error Count", 8},
    { "Soft ECC Error Count", 8},
    { "SSD End to End Detected Counts", 4},
    { "SSD End to End Corrected Errors", 4},
    { "System data % life-used", 1},
    { "Refresh Count", 7},
    { "Maximum User Data Erase Count", 4},
    { "Minimum User Data Erase Count", 4},
    { "Thermal Throttling Count", 1},
    { "Thermal Throttling Status", 1},
    { "Reserved", 6},
    { "PCIe Correctable Error count", 8},
    { "Incomplete Shutdowns", 4},
    { "Reserved", 4},
    { "% Free Blocks", 1},
    { "Reserved", 7},
    { "Capacitor Health", 2},
    { "Reserved", 6},
    { "Unaligned I/O", 8},
    { "Security Version Number", 8},
    { "NUSE", 8},
    { "PLP Start Count", 16},
    { "Endurance Estimate", 16},
    { "Reserved", 302},
    { "Log Page Version", 2},
    { "Log Page GUID", 16},
},
/* Extended SMART log information */
e1_log_page[] = {
    { "Reserved", 12},
    { "Grown Bad Block Count", 4},
    { "Per Block Max Erase Count", 4},
    { "Power On Minutes", 4},
    { "Reserved", 24},
    { "Write Protect Reason", 4},
    { "Reserved", 12},
    { "Drive Capacity", 8},
    { "Reserved", 8},
    { "Total Erase Count", 8},
    { "Lifetime Use Rate", 8},
    { "Erase Fail Count", 8},
    { "Reserved", 8},
    { "Reported UC Errors", 8},
    { "Reserved", 24},
    { "Program Fail Count", 16},
    { "Total Bytes Read", 16},
    { "Total Bytes Written", 16},
    { "Reserved", 16},
    { "TU Size", 4},
    { "Total Block Stripe Count", 4},
    { "Free Block Stripe Count", 4},
    { "Block Stripe Size", 8},
    { "Reserved", 16},
    { "User Block Min Erase Count", 4},
    { "User Block Avg Erase Count", 4},
    { "User Block Max Erase Count", 4},
},
/* Vendor Specific Health Log information */
fb_log_page[] = {
    { "Physical Media Units Written - TLC",  16, 16 },
    { "Physical Media Units Written - SLC",  16, 16 },
    { "Normalized Bad User NAND Block Count", 2, 2},
    { "Raw Bad User NAND Block Count", 6, 6},
    { "XOR Recovery Count", 8, 8},
    { "Uncorrectable Read Error Count", 8, 8},
    { "SSD End to End Corrected Errors", 8, 8},
    { "SSD End to End Detected Counts", 4, 8},
    { "SSD End to End Uncorrected Counts", 4, 8},
    { "System data % life-used", 1, 1},
    { "Reserved", 0, 3},
    { "Minimum User Data Erase Count - TLC", 8, 8},
    { "Maximum User Data Erase Count - TLC", 8, 8},
    { "Average User Data Erase Count - TLC", 0, 8},
    { "Minimum User Data Erase Count - SLC", 8, 8},
    { "Maximum User Data Erase Count - SLC", 8, 8},
    { "Average User Data Erase Count - SLC", 0, 8},
    { "Normalized Program Fail Count", 2, 2},
    { "Raw Program Fail Count", 6, 6},
    { "Normalized Erase Fail Count", 2, 2},
    { "Raw Erase Fail Count", 6, 6},
    { "Pcie Correctable Error Count", 8, 8},
    { "% Free Blocks (User)", 1, 1},
    { "Reserved", 0, 3},
    { "Security Version Number", 8, 8},
    { "% Free Blocks (System)", 1, 1},
    { "Reserved", 0, 3},
    { "Dataset Management (Deallocate) Commands", 16, 16},
    { "Incomplete TRIM Data", 8, 8},
    { "% Age of Completed TRIM", 1, 2},
    { "Background Back-Pressure Gauge", 1, 1},
    { "Reserved", 0, 3},
    { "Soft ECC Error Count", 8, 8},
    { "Refresh Count", 8, 8},
    { "Normalized Bad System NAND Block Count", 2, 2},
    { "Raw Bad System NAND Block Count", 6, 6},
    { "Endurance Estimate", 16, 16},
    { "Thermal Throttling Status", 1, 1},
    { "Thermal Throttling Count", 1, 1},
    { "Unaligned I/O", 8, 8},
    { "Physical Media Units Read", 16, 16},
    { "Reserved", 279, 0},
    { "Log Page Version", 2, 0},
    { "READ CMDs exceeding threshold", 0, 4},
    { "WRITE CMDs exceeding threshold", 0, 4},
    { "TRIMs CMDs exceeding threshold", 0, 4},
    { "Reserved", 0, 4},
    { "Reserved", 0, 210},
    { "Log Page Version", 0, 2},
    { "Log Page GUID", 0, 16},
};

/* Common function to print Micron VS log pages */
static void print_micron_vs_logs(
    __u8                     *buf,             /* raw log data */
    struct micron_vs_logpage *log_page,        /* format of the data */
    int                      field_count,      /* log field count */
    struct json_object       *stats,           /* json object to add fields */
    __u8                     spec              /* ocp spec index */
)
{
    __u64 lval_lo, lval_hi;
    __u32 ival;
    __u16 sval;
    __u8  cval, lval[8] = { 0 };
    int field;
    int offset = 0;

    for (field = 0; field < field_count; field++) {
        char datastr[1024] = { 0 };
        char *sfield = NULL;
        int size = (spec == 0) ? log_page[field].size : log_page[field].size2;
        if (size == 0) continue;
        sfield = log_page[field].field;
        if (size == 16) {
            if (strstr(sfield, "GUID")) {
                sprintf(datastr, "0x%"PRIx64"%"PRIx64"",
                        (uint64_t)le64_to_cpu(*(uint64_t *)(&buf[offset + 8])),
                        (uint64_t)le64_to_cpu(*(uint64_t *)(&buf[offset])));
            } else {
                lval_lo = *((__u64 *)(&buf[offset]));
                lval_hi = *((__u64 *)(&buf[offset + 8]));
                if (lval_hi)
                    sprintf(datastr, "0x%"PRIx64"%016"PRIx64"",
                            le64_to_cpu(lval_hi), le64_to_cpu(lval_lo));
                else
                    sprintf(datastr, "0x%"PRIx64"", le64_to_cpu(lval_lo));
            }
        } else if (size == 8) {
            lval_lo = *((__u64 *)(&buf[offset]));
            sprintf(datastr, "0x%"PRIx64"", le64_to_cpu(lval_lo));
        } else if (size == 7) {
            /* 7 bytes will be in little-endian format, with last byte as MSB */
            memcpy(&lval[0], &buf[offset], 7);
            memcpy((void *)&lval_lo, lval, 8);
            sprintf(datastr, "0x%"PRIx64"", le64_to_cpu(lval_lo));
        } else if (size == 6) {
            ival    = *((__u32 *)(&buf[offset]));
            sval    = *((__u16 *)(&buf[offset + 4]));
            lval_lo = (((__u64)sval << 32) | ival);
            sprintf(datastr, "0x%"PRIx64"", le64_to_cpu(lval_lo));
        } else if (size == 4) {
            ival    = *((__u32 *)(&buf[offset]));
            sprintf(datastr, "0x%x", le32_to_cpu(ival));
        } else if (size == 2) {
            sval = *((__u16 *)(&buf[offset]));
            sprintf(datastr, "0x%04x", le16_to_cpu(sval));
        } else if (size == 1) {
            cval = buf[offset];
            sprintf(datastr, "0x%02x", cval);
        } else {
            sprintf(datastr, "0");
        }
        offset += size;
        /* do not print reserved values */
        if (strstr(sfield, "Reserved"))
            continue;
        if (stats != NULL) {
            json_object_add_value_string(stats, sfield, datastr);
        } else {
            printf("%-40s : %-4s\n", sfield, datastr);
        }
    }
}

static void print_smart_cloud_health_log(__u8 *buf, bool is_json)
{
    struct json_object *root;
    struct json_object *logPages;
    struct json_object *stats = NULL;
    int    field_count = sizeof(ocp_c0_log_page)/sizeof(ocp_c0_log_page[0]);

    if (is_json) {
        root = json_create_object();
        stats = json_create_object();
        logPages = json_create_array();
        json_object_add_value_array(root, "OCP SMART Cloud Health Log: 0xC0",
                                    logPages);
    }

    print_micron_vs_logs(buf, ocp_c0_log_page, field_count, stats, 0);

    if (is_json) {
        json_array_add_value_object(logPages, stats);
        json_print_object(root, NULL);
        printf("\n");
        json_free_object(root);
    }
}

static void print_nand_stats_fb(__u8 *buf, __u8 *buf2, __u8 nsze, bool is_json, __u8 spec)
{
    struct json_object *root;
    struct json_object *logPages;
    struct json_object *stats = NULL;
    int    field_count = sizeof(fb_log_page)/sizeof(fb_log_page[0]);

    if (is_json) {
        root = json_create_object();
        stats = json_create_object();
        logPages = json_create_array();
        json_object_add_value_array(root, "Extended Smart Log Page : 0xFB",
                                    logPages);
    }

    print_micron_vs_logs(buf, fb_log_page, field_count, stats, spec);

    /* print last three entries from D0 log page */
    if (buf2 != NULL) {
        init_d0_log_page(buf2, nsze);

        if (is_json) {
            for (int i = 0; i < 7; i++) {
                json_object_add_value_string(stats,
					     d0_log_page[i].field,
					     d0_log_page[i].datastr);
            }
        } else {
            for (int i = 0; i < 7; i++) {
                printf("%-40s : %s\n", d0_log_page[i].field, d0_log_page[i].datastr);
            }
        }
    }

    if (is_json) {
        json_array_add_value_object(logPages, stats);
        json_print_object(root, NULL);
        printf("\n");
        json_free_object(root);
    }
}

static void print_nand_stats_d0(__u8 *buf, __u8 oacs, bool is_json)
{
    init_d0_log_page(buf, oacs);

    if (is_json) {
        struct json_object *root = json_create_object();
        struct json_object *stats = json_create_object();
        struct json_object *logPages = json_create_array();

        json_object_add_value_array(root,
                                    "Extended Smart Log Page : 0xD0",
                                    logPages);

        for (int i = 0; i < 7; i++) {
            json_object_add_value_string(stats,
                                         d0_log_page[i].field,
                                         d0_log_page[i].datastr);
        }

        json_array_add_value_object(logPages, stats);
        json_print_object(root, NULL);
        printf("\n");
        json_free_object(root);
    } else {
        for (int i = 0; i < 7; i++) {
            printf("%-40s : %s\n", d0_log_page[i].field, d0_log_page[i].datastr);
        }
    }
}

static bool nsze_from_oacs = false; /* read nsze for now from idd[4059]  */

static int micron_nand_stats(int argc, char **argv,
                             struct command *cmd, struct plugin *plugin)
{
    const char *desc = "Retrieve Micron NAND stats for the given device ";
    unsigned int extSmartLog[D0_log_size/sizeof(int)] = { 0 };
    unsigned int logFB[FB_log_size/sizeof(int)] = { 0 };
    eDriveModel eModel = UNKNOWN_MODEL;
    struct nvme_id_ctrl ctrl;
    struct nvme_dev *dev;
    int err, ctrlIdx;
    __u8 nsze;
    bool has_d0_log = true;
    bool has_fb_log = false;
    bool is_json = true;
    struct format {
        char *fmt;
    };
    const char *fmt = "output format json|normal";
    struct format cfg = {
        .fmt = "json",
    };

    OPT_ARGS(opts) = {
        OPT_FMT("format", 'f', &cfg.fmt, fmt),
        OPT_END()
    };

    err = parse_and_open(&dev, argc, argv, desc, opts);
    if (err) {
        printf("\nDevice not found \n");;
        return -1;
    }

    if (strcmp(cfg.fmt, "normal") == 0)
        is_json = false;

    err = nvme_identify_ctrl(dev_fd(dev), &ctrl);
    if (err) {
        printf("Error %d retrieving controller identification data\n", err);
        goto out;
    }

    /* pull log details based on the model name */
    sscanf(argv[optind], "/dev/nvme%d", &ctrlIdx);
    eModel = GetDriveModel(ctrlIdx);
    if ((eModel == UNKNOWN_MODEL) || (eModel == M51CX)) {
        printf ("Unsupported drive model for vs-nand-stats command\n");
	err = -1;
        goto out;
    }

    err = nvme_get_log_simple(dev_fd(dev), 0xD0, D0_log_size, extSmartLog);
    has_d0_log = (0 == err);

    /* should check for firmware version if this log is supported or not */
    if (eModel == M5407 || eModel == M5410) {
        err = nvme_get_log_simple(dev_fd(dev), 0xFB, FB_log_size, logFB);
        has_fb_log = (0 == err);
    }

    nsze = (ctrl.vs[987] == 0x12);
    if (nsze == 0 && nsze_from_oacs)
        nsze = ((ctrl.oacs >> 3) & 0x1);
    err = 0;
    if (has_fb_log) {
        __u8 spec = (eModel == M5410) ? 0 : 1;  /* FB spec version */
        print_nand_stats_fb((__u8 *)logFB, (__u8 *)extSmartLog, nsze, is_json, spec);
    } else if (has_d0_log) {
        print_nand_stats_d0((__u8 *)extSmartLog, nsze, is_json);
    } else {
        printf("Unable to retrieve extended smart log for the drive\n");
        err = -ENOTTY;
    }
out:
    dev_close(dev);
    if (err > 0)
	nvme_show_status(err);

    return err;
}

static void print_ext_smart_logs_e1(__u8 *buf, bool is_json)
{
    struct json_object *root;
    struct json_object *logPages;
    struct json_object *stats = NULL;
    int    field_count = sizeof(e1_log_page)/sizeof(e1_log_page[0]);

    if (is_json) {
        root = json_create_object();
        stats = json_create_object();
        logPages = json_create_array();
        json_object_add_value_array(root, "SMART Extended Log:0xE1", logPages);
    }
    else {
        printf("SMART Extended Log:0xE1\n");
    }

    print_micron_vs_logs(buf, e1_log_page, field_count, stats, 0);

    if (is_json) {
        json_array_add_value_object(logPages, stats);
        json_print_object(root, NULL);
        printf("\n");
        json_free_object(root);
    }
}

static int micron_smart_ext_log(int argc, char **argv,
                                struct command *cmd, struct plugin *plugin)
{
    const char *desc = "Retrieve extended SMART logs for the given device ";
    unsigned int extSmartLog[E1_log_size/sizeof(int)] = { 0 };
    eDriveModel eModel = UNKNOWN_MODEL;
    int err = 0, ctrlIdx = 0;
    struct nvme_dev *dev;
    bool is_json = true;
    struct format {
        char *fmt;
    };
    const char *fmt = "output format json|normal";
    struct format cfg = {
        .fmt = "json",
    };
    OPT_ARGS(opts) = {
        OPT_FMT("format", 'f', &cfg.fmt, fmt),
        OPT_END()
    };

    err = parse_and_open(&dev, argc, argv, desc, opts);
    if (err) {
        printf("\nDevice not found \n");;
        return -1;
    }
    if (strcmp(cfg.fmt, "normal") == 0)
        is_json = false;

    sscanf(argv[optind], "/dev/nvme%d", &ctrlIdx);
    if ((eModel = GetDriveModel(ctrlIdx)) != M51CX) {
        printf ("Unsupported drive model for vs-smart-ext-log command\n");
        err = -1;
        goto out;
    }
    err = nvme_get_log_simple(dev_fd(dev), 0xE1, E1_log_size, extSmartLog);
    if (!err) {
        print_ext_smart_logs_e1((__u8 *)extSmartLog, is_json);
    }

out:
    dev_close(dev);
    if (err > 0)
        nvme_show_status(err);
    return err;
}

static void GetDriveInfo(const char *strOSDirName, int nFD,
                         struct nvme_id_ctrl *ctrlp)
{
    FILE *fpOutFile = NULL;
    char tempFile[256] = { 0 };
    char strBuffer[1024] = { 0 };
    char model[41] = { 0 };
    char serial[21] = { 0 };
    char fwrev[9] = { 0 };
    char *strPDir = strdup(strOSDirName);
    char *strDest = dirname(strPDir);

    sprintf(tempFile, "%s/%s", strDest, "drive-info.txt");
    fpOutFile = fopen(tempFile, "w+");
    if (!fpOutFile) {
        printf("Failed to create %s\n", tempFile);
        free(strPDir);
        return;
    }

    strncpy(model, ctrlp->mn, 40);
    strncpy(serial, ctrlp->sn, 20);
    strncpy(fwrev, ctrlp->fr, 8);

    sprintf(strBuffer,
            "********************\nDrive Info\n********************\n");

    fprintf(fpOutFile, "%s", strBuffer);
    sprintf(strBuffer,
            "%-20s : /dev/nvme%d\n%-20s : %s\n%-20s : %-20s\n%-20s : %-20s\n",
            "Device Name", nFD,
            "Model No", (char *)model,
            "Serial No", (char *)serial, "FW-Rev", (char *)fwrev);

    fprintf(fpOutFile, "%s", strBuffer);

    sprintf(strBuffer,
            "\n********************\nPCI Info\n********************\n");

    fprintf(fpOutFile, "%s", strBuffer);

    sprintf(strBuffer,
            "%-22s : %04X\n%-22s : %04X\n",
            "VendorId", vendor_id, "DeviceId", device_id);
    fprintf(fpOutFile, "%s", strBuffer);
    fclose(fpOutFile);
    free(strPDir);
}

static void GetTimestampInfo(const char *strOSDirName)
{
    __u8 outstr[1024];
    time_t t;
    struct tm *tmp;
    size_t num;
    char *strPDir;
    char *strDest;

    t = time(NULL);
    tmp = localtime(&t);
    if (tmp == NULL)
        return;

    num = strftime((char *)outstr, sizeof(outstr),
                   "Timestamp (UTC): %a, %d %b %Y %T %z", tmp);
    num += sprintf((char *)(outstr + num), "\nPackage Version: 1.4");
    if (num) {
        strPDir = strdup(strOSDirName);
        strDest = dirname(strPDir);
        WriteData(outstr, num, strDest, "timestamp_info.txt", "timestamp");
        free(strPDir);
    }
}

static void GetCtrlIDDInfo(const char *dir, struct nvme_id_ctrl *ctrlp)
{
    WriteData((__u8*)ctrlp, sizeof(*ctrlp), dir,
              "nvme_controller_identify_data.bin", "id-ctrl");
}

static void GetSmartlogData(int fd, const char *dir)
{
    struct nvme_smart_log smart_log;
    if (nvme_get_log_smart(fd, -1, false, &smart_log) == 0) {
        WriteData((__u8*)&smart_log, sizeof(smart_log), dir,
                  "smart_data.bin", "smart log");
    }
}

static void GetErrorlogData(int fd, int entries, const char *dir)
{
    int logSize = entries * sizeof(struct nvme_error_log_page);
    struct nvme_error_log_page *error_log =
                (struct nvme_error_log_page *)calloc(1, logSize);

    if (error_log == NULL)
        return;

    if (nvme_get_log_error(fd, entries, false, error_log) == 0) {
        WriteData((__u8*)error_log, logSize, dir,
                  "error_information_log.bin", "error log");
    }

    free(error_log);
}

static void GetGenericLogs(int fd, const char *dir)
{
    struct nvme_self_test_log self_test_log;
    struct nvme_firmware_slot fw_log;
    struct nvme_cmd_effects_log effects;
    struct nvme_persistent_event_log pevent_log;
    void *pevent_log_info = NULL;
    __u32 log_len = 0;
    int err = 0 ;
    bool huge = false;

    /* get self test log */
    if (nvme_get_log_device_self_test(fd, &self_test_log) == 0) {
        WriteData((__u8*)&self_test_log, sizeof(self_test_log), dir,
                  "drive_self_test.bin", "self test log");
    }

    /* get fw slot info log */
    if (nvme_get_log_fw_slot(fd, false, &fw_log) == 0) {
        WriteData((__u8*)&fw_log, sizeof(fw_log), dir,
                  "firmware_slot_info_log.bin", "firmware log");
    }

    /* get effects log */
    if (nvme_get_log_cmd_effects(fd, NVME_CSI_NVM, &effects) == 0) {
        WriteData((__u8*)&effects, sizeof(effects), dir,
                  "command_effects_log.bin", "effects log");
    }

    /* get persistent event log */
    (void)nvme_get_log_persistent_event(fd, NVME_PEVENT_LOG_RELEASE_CTX,
                                    sizeof(pevent_log), &pevent_log);
    memset(&pevent_log, 0, sizeof(pevent_log));
    err = nvme_get_log_persistent_event(fd, NVME_PEVENT_LOG_EST_CTX_AND_READ,
                        sizeof(pevent_log), &pevent_log);
    if (err) {
        fprintf(stderr, "Setting persistent event log read ctx failed (ignored)!\n");
        return;
    }

    log_len = le64_to_cpu(pevent_log.tll);
    pevent_log_info = nvme_alloc(log_len, &huge);
    if (!pevent_log_info) {
        perror("could not alloc buffer for persistent event log page (ignored)!\n");
        return;
    }
    err = nvme_get_log_persistent_event(fd, NVME_PEVENT_LOG_READ,
                                    log_len, pevent_log_info);
    if (err == 0) {
        WriteData((__u8*)pevent_log_info, log_len, dir,
                  "persistent_event_log.bin", "persistent event log");
    }
    nvme_free(pevent_log_info, huge);
    return;
}

static void GetNSIDDInfo(int fd, const char *dir, int nsid)
{
    char file[PATH_MAX] = { 0 };
    struct nvme_id_ns ns;

    if (nvme_identify_ns(fd, nsid, &ns) == 0) {
        sprintf(file, "identify_namespace_%d_data.bin", nsid);
        WriteData((__u8*)&ns, sizeof(ns), dir, file, "id-ns");
    }
}

static void GetOSConfig(const char *strOSDirName)
{
    FILE *fpOSConfig = NULL;
    char strBuffer[1024];
    char strFileName[PATH_MAX];
    int i;

    struct {
        char *strcmdHeader;
        char *strCommand;
    } cmdArray[] = {
        { (char *)"SYSTEM INFORMATION", (char *)"uname -a >> %s" },
        { (char *)"LINUX KERNEL MODULE INFORMATION", (char *)"lsmod >> %s" },
        { (char *)"LINUX SYSTEM MEMORY INFORMATION", (char *)"cat /proc/meminfo >> %s" },
        { (char *)"SYSTEM INTERRUPT INFORMATION", (char *)"cat /proc/interrupts >> %s" },
        { (char *)"CPU INFORMATION", (char *)"cat /proc/cpuinfo >> %s" },
        { (char *)"IO MEMORY MAP INFORMATION", (char *)"cat /proc/iomem >> %s" },
        { (char *)"MAJOR NUMBER AND DEVICE GROUP", (char *)"cat /proc/devices >> %s" },
        { (char *)"KERNEL DMESG", (char *)"dmesg >> %s" },
        { (char *)"/VAR/LOG/MESSAGES", (char *)"cat /var/log/messages >> %s" }
    };

    sprintf(strFileName, "%s/%s", strOSDirName, "os_config.txt");

    for (i = 0; i < 7; i++) {
        fpOSConfig = fopen(strFileName, "a+");
        if (NULL != fpOSConfig) {
            fprintf(fpOSConfig,
                "\n\n\n\n%s\n-----------------------------------------------\n",
                cmdArray[i].strcmdHeader);
            fclose(fpOSConfig);
            fpOSConfig = NULL;
        }
        snprintf(strBuffer, sizeof(strBuffer) - 1,
                 cmdArray[i].strCommand, strFileName);
        if (system(strBuffer))
            fprintf(stderr, "Failed to send \"%s\"\n", strBuffer);
    }
}

static int micron_telemetry_log(int fd, __u8 type, __u8 **data,
                                int *logSize, int da)
{
    int err, bs = 512, offset = bs;
    unsigned short data_area[4];
    unsigned char  ctrl_init = (type == 0x8);

    __u8 *buffer = (unsigned char *)calloc(bs, 1);
    if (buffer == NULL)
        return -1;
    if (ctrl_init)
      err = nvme_get_log_telemetry_ctrl(fd, true, 0, bs, buffer);
    else
      err = nvme_get_log_telemetry_host(fd, 0, bs, buffer);
    if (err != 0) {
        fprintf(stderr, "Failed to get telemetry log header for 0x%X\n", type);
        if (buffer != NULL) {
            free(buffer);
        }
        return err;
    }

    /* compute size of the log */
    data_area[1] = buffer[9]  << 8 | buffer[8];
    data_area[2] = buffer[11] << 8 | buffer[10];
    data_area[3] = buffer[13] << 8 | buffer[12];
    data_area[0] = data_area[1] > data_area[2] ? data_area[1] : data_area[2];
    data_area[0] = data_area[3] > data_area[0] ? data_area[3] : data_area[0];

    if (data_area[da] == 0) {
        fprintf(stderr, "Requested telemetry data for 0x%X is empty\n", type);
        if (buffer != NULL) {
            free(buffer);
            buffer = NULL;
        }
        return -1;
    }

    *logSize = data_area[da] * bs;
    offset = bs;
    err = 0;
    if ((buffer = (unsigned char *)realloc(buffer, (size_t)(*logSize))) != NULL) {
        while (err == 0 && offset != *logSize) {
	  if (ctrl_init)
	    err = nvme_get_log_telemetry_ctrl(fd, true, 0, *logSize, buffer + offset);
	  else
	    err = nvme_get_log_telemetry_host(fd, 0, *logSize, buffer + offset);
           offset += bs;
        }
    }

    if (err == 0 && buffer != NULL) {
        *data = buffer;
    } else {
        fprintf(stderr, "Failed to get telemetry data for 0x%x\n", type);
        if (buffer != NULL)
            free(buffer);
    }

    return err;
}

static int GetTelemetryData(int fd, const char *dir)
{
    unsigned char *buffer = NULL;
    int i, err, logSize = 0;
    char msg[256] = {0};
    struct {
        __u8 log;
        char *file;
    } tmap[] = {
        {0x07, "nvmetelemetrylog.bin"},
        {0x08, "nvmetelemetrylog.bin"},
    };

    for(i = 0; i < (int)(sizeof(tmap)/sizeof(tmap[0])); i++) {
        err = micron_telemetry_log(fd, tmap[i].log, &buffer, &logSize, 0);
        if (err == 0 && logSize > 0 && buffer != NULL) {
            sprintf(msg, "telemetry log: 0x%X", tmap[i].log);
            WriteData(buffer, logSize, dir, tmap[i].file, msg);
        }
        if (buffer) {
            free(buffer);
            buffer = NULL;
        }
        logSize = 0;
    }
    return err;
}

static int GetFeatureSettings(int fd, const char *dir)
{
    unsigned char *bufp, buf[4096] = { 0 };
    int i, err, len, errcnt = 0;
    __u32 attrVal = 0;
    char msg[256] = { 0 };

    struct features {
        int id;
        char *file;
    } fmap[] = {
        {0x01, "nvme_feature_setting_arbitration.bin"},
        {0x02, "nvme_feature_setting_pm.bin"},
        {0x03, "nvme_feature_setting_lba_range_namespace_1.bin"},
        {0x04, "nvme_feature_setting_temp_threshold.bin"},
        {0x05, "nvme_feature_setting_error_recovery.bin"},
        {0x06, "nvme_feature_setting_volatile_write_cache.bin"},
        {0x07, "nvme_feature_setting_num_queues.bin"},
        {0x08, "nvme_feature_setting_interrupt_coalescing.bin"},
        {0x09, "nvme_feature_setting_interrupt_vec_config.bin"},
        {0x0A, "nvme_feature_setting_write_atomicity.bin"},
        {0x0B, "nvme_feature_setting_async_event_config.bin"},
        {0x80, "nvme_feature_setting_sw_progress_marker.bin"},
    };

    for (i = 0; i < (int)(sizeof(fmap)/sizeof(fmap[0])); i++) {
        if (fmap[i].id == 0x03) {
            len = 4096;
            bufp = (unsigned char *)(&buf[0]);
        } else  {
            len = 0;
            bufp = NULL;
        }

	struct nvme_get_features_args args = {
		.args_size	= sizeof(args),
		.fd		= fd,
		.fid		= fmap[i].id,
		.nsid		= 1,
		.sel		= 0,
		.cdw11		= 0x0,
		.uuidx		= 0,
		.data_len	= len,
		.data		= bufp,
		.timeout	= NVME_DEFAULT_IOCTL_TIMEOUT,
		.result		= &attrVal,
	};
        err = nvme_get_features(&args);
        if (err == 0) {
            sprintf(msg, "feature: 0x%X", fmap[i].id);
            WriteData((__u8*)&attrVal, sizeof(attrVal), dir, fmap[i].file, msg);
            if (bufp != NULL) {
                WriteData(bufp, len, dir, fmap[i].file, msg);
            }
        } else {
            fprintf(stderr, "Feature 0x%x data not retrieved, error %d (ignored)!\n",
                    fmap[i].id, err);
            errcnt++;
        }
    }
    return (int)(errcnt == sizeof(fmap)/sizeof(fmap[0]));
}

static int micron_drive_info(int argc, char **argv, struct command *cmd,
                                struct plugin *plugin)
{
    const char *desc = "Get drive HW information";
    struct nvme_id_ctrl ctrl =  { 0 };
    struct nvme_passthru_cmd admin_cmd = { 0 };
    struct fb_drive_info {
        unsigned char hw_ver_major;
        unsigned char hw_ver_minor;
        unsigned char ftl_unit_size;
        unsigned char bs_ver_major;
        unsigned char bs_ver_minor;
    } dinfo = { 0 };
    eDriveModel model = UNKNOWN_MODEL;
    bool is_json = false;
    struct json_object *root, *driveInfo;
    struct nvme_dev *dev;
    struct format {
        char *fmt;
    };
    int err = 0;

    const char *fmt = "output format normal";
    struct format cfg = {
        .fmt = "normal",
    };

    OPT_ARGS(opts) = {
        OPT_FMT("format", 'f', &cfg.fmt, fmt),
        OPT_END()
    };

    err = micron_parse_options(&dev, argc, argv, desc, opts, &model);
    if (err < 0)
        return err;

    if (model == UNKNOWN_MODEL) {
        fprintf(stderr, "ERROR : Unsupported drive for vs-drive-info cmd");
        dev_close(dev);
        return -1;
    }

    if (strcmp(cfg.fmt, "json") == 0)
        is_json = true;

    if (model == M5407) {
        admin_cmd.opcode = 0xD4,
        admin_cmd.addr = (__u64) (uintptr_t) &dinfo;
        admin_cmd.data_len = (__u32)sizeof(dinfo);
        admin_cmd.cdw12 = 3;
        err = nvme_submit_admin_passthru(dev_fd(dev), &admin_cmd, NULL);
        if (err) {
            fprintf(stderr, "ERROR : drive-info opcode failed with 0x%x\n", err);
            dev_close(dev);
            return -1;
        }
    } else {
        err = nvme_identify_ctrl(dev_fd(dev), &ctrl);
        if (err) {
            fprintf(stderr, "ERROR : identify_ctrl() failed with 0x%x\n", err);
            dev_close(dev);
            return -1;
        }
        dinfo.hw_ver_major = ctrl.vs[820];
        dinfo.hw_ver_minor = ctrl.vs[821];
        dinfo.ftl_unit_size = ctrl.vs[822];
    }

    if (is_json) {
        struct json_object *pinfo = json_create_object();
        char tempstr[64] = { 0 };
        root = json_create_object();
        driveInfo = json_create_array();
        json_object_add_value_array(root, "Micron Drive HW Information", driveInfo);
        sprintf(tempstr, "%hhu.%hhu", dinfo.hw_ver_major, dinfo.hw_ver_minor);
        json_object_add_value_string(pinfo, "Drive Hardware Version", tempstr);

        if (dinfo.ftl_unit_size) {
            sprintf(tempstr, "%hhu KB", dinfo.ftl_unit_size);
            json_object_add_value_string(pinfo, "FTL_unit_size", tempstr);
        }

        if (dinfo.bs_ver_major != 0 || dinfo.bs_ver_minor != 0) {
            sprintf(tempstr, "%hhu.%hhu", dinfo.bs_ver_major, dinfo.bs_ver_minor);
            json_object_add_value_string(pinfo, "Boot Spec.Version", tempstr);
        }

        json_array_add_value_object(driveInfo, pinfo);
        json_print_object(root, NULL);
        printf("\n");
        json_free_object(root);
    } else {
        printf("Drive Hardware Version: %hhu.%hhu\n",
                dinfo.hw_ver_major, dinfo.hw_ver_minor);

        if (dinfo.ftl_unit_size)
            printf("FTL_unit_size: %hhu KB\n", dinfo.ftl_unit_size);

        if (dinfo.bs_ver_major != 0 || dinfo.bs_ver_minor != 0) {
            printf("Boot  Spec.Version: %hhu.%hhu\n",
                    dinfo.bs_ver_major, dinfo.bs_ver_minor);
        }
    }

    dev_close(dev);
    return 0;
}

static int micron_cloud_ssd_plugin_version(int argc, char **argv,
                                struct command *cmd, struct plugin *plugin)
{
    printf("nvme-cli Micron cloud SSD plugin version: %s.%s\n",
           __version_major, __version_minor);
    return 0;
}

static int micron_plugin_version(int argc, char **argv, struct command *cmd,
                                struct plugin *plugin)
{
    printf("nvme-cli Micron plugin version: %s.%s.%s\n",
           __version_major, __version_minor, __version_patch);
    return 0;
}

/* Binary format of firmware activation history entry */
struct __attribute__((__packed__)) fw_activation_history_entry {
    __u8                               version;
    __u8                               length;
    __u16                              rsvd1;
    __le16                             valid;
    __le64                             power_on_hour;
    __le64                             rsvd2;
    __le64                             power_cycle_count;
    __u8                               previous_fw[8];
    __u8                               activated_fw[8];
    __u8                               slot;
    __u8                               commit_action_type;
    __le16                             result;
    __u8                               rsvd3[14];
};


/* Binary format for firmware activation history table */
struct __attribute__((__packed__)) micron_fw_activation_history_table {
    __u8                               log_page;
    __u8                               rsvd1[3];
    __le32                             num_entries;
    struct fw_activation_history_entry entries[20];
    __u8                               rsvd2[2790];
    __u16                              version;
    __u8                               GUID[16];
};

/* header to be printed  field widths = 10 | 12 | 10 | 11 | 12 | 9 | 9 | 9 */

const char *fw_activation_history_table_header = "\
__________________________________________________________________________________\n\
          |           |         |          |           |        |        |        \n\
Firmware  | Power On  | Power   | Previous | New FW    | Slot   | Commit | Result \n\
Activation|   Hour    | cycle   | firmware | activated | number | Action |        \n\
Counter   |           | count   |          |           |        | Type   |        \n\
__________|___________|_________|__________|___________|________|________|________\n";

static int display_fw_activate_entry (
    int                                entry_count,
    struct fw_activation_history_entry *entry,
    char                               *formatted_entry,
    struct json_object                 *stats
)
{
    time_t    timestamp, hours;
    char      buffer[32];
    __u8      minutes, seconds;
    char      *ca[] = {"000b", "001b", "010b", "011b"};
    char      *ptr = formatted_entry;
    int       index = 0, entry_size = 82;

    if ((entry->version != 1 && entry->version != 2) || entry->length != 64) {
        /*fprintf(stderr, "unsupported entry ! version: %x with length: %d\n",
                entry->version, entry->length); */
        return -EINVAL;
    }

    sprintf(ptr, "%d", entry_count);
    ptr += 10;

    timestamp = (le64_to_cpu(entry->power_on_hour) & 0x0000FFFFFFFFFFFFUL) / 1000;
    hours = timestamp / 3600;
    minutes = (timestamp % 3600) / 60;
    seconds = (timestamp % 3600) % 60;
    sprintf(ptr, "|%"PRIu64":%hhu:%hhu", (uint64_t)hours, minutes, seconds);
    ptr += 12;

    sprintf(ptr, "| %"PRIu64, le64_to_cpu(entry->power_cycle_count));
    ptr += 10;

    /* firmware details */
    memset(buffer, 0, sizeof(buffer));
    memcpy(buffer, entry->previous_fw, sizeof(entry->previous_fw));
    sprintf(ptr, "| %s", buffer);
    ptr += 11;

    memset(buffer, 0, sizeof(buffer));
    memcpy(buffer, entry->activated_fw, sizeof(entry->activated_fw));
    sprintf(ptr, "| %s", buffer);
    ptr += 12;

    /* firmware slot and commit action*/
    sprintf(ptr, "| %d", entry->slot);
    ptr += 9;

    if (entry->commit_action_type <= 3)
        sprintf(ptr, "| %s", ca[entry->commit_action_type]);
    else
        sprintf(ptr, "| xxxb");
    ptr += 9;

    /* result */
    if (entry->result) {
        sprintf(ptr, "| Fail #%d", entry->result);
    } else {
        sprintf(ptr, "| pass");
    }

    /* replace all null charecters with spaces */
    ptr = formatted_entry;
    while (index < entry_size) {
        if (ptr[index] == '\0')
            ptr[index] = ' ';
        index++;
    }
    return 0;
}


static int micron_fw_activation_history(int argc, char **argv, struct command *cmd,
                                struct plugin *plugin)
{
    const char *desc = "Retrieve Firmware Activation history of the given drive";
    char formatted_output[100];
    int count = 0;
    unsigned int logC2[C2_log_size/sizeof(int)] = { 0 };
    eDriveModel eModel = UNKNOWN_MODEL;
    struct nvme_dev *dev;
    struct format {
        char *fmt;
    };
    int err;

    const char *fmt = "output format normal";
    struct format cfg = {
        .fmt = "normal",
    };

    OPT_ARGS(opts) = {
        OPT_FMT("format", 'f', &cfg.fmt, fmt),
        OPT_END()
    };

    err = micron_parse_options(&dev, argc, argv, desc, opts, &eModel);
    if (err < 0)
        return -1;

    if (strcmp(cfg.fmt, "normal") != 0) {
        fprintf (stderr, "only normal format is supported currently\n");
        dev_close(dev);
        return -1;
    }

    /* check if product supports fw_history log */
    err = -EINVAL;
    if (eModel != M51CX) {
        fprintf(stderr, "Unsupported drive model for vs-fw-activate-history command\n");
        goto out;
    }

    err = nvme_get_log_simple(dev_fd(dev), 0xC2, C2_log_size, logC2);
    if (err)  {
        fprintf(stderr, "Failed to retrieve fw activation history log, error: %x\n", err);
        goto out;
    }

    /* check if we have atleast one entry to print */
    struct micron_fw_activation_history_table *table =
               (struct micron_fw_activation_history_table *)logC2;

    /* check version and log page */
    if (table->log_page != 0xC2 || (table->version != 2 && table->version != 1))
    {
        fprintf(stderr, "Unsupported fw activation history page: %x, version: %x\n",
                table->log_page, table->version);
        goto out;
    }

    if (table->num_entries == 0) {
        fprintf(stderr, "No entries were found in fw activation history log\n");
        goto out;
    }

    printf("%s", fw_activation_history_table_header);
    for(count = 0; count < table->num_entries; count++) {
        memset(formatted_output, '\0', 100);
        if (display_fw_activate_entry(count,
                                      &table->entries[count],
                                      formatted_output, NULL) == 0)
        {
            printf("%s\n", formatted_output);
        }
    }
out:
    dev_close(dev);
    return err;
}

#define MICRON_FID_LATENCY_MONITOR 0xD0
#define MICRON_LOG_LATENCY_MONITOR 0xD1

static int micron_latency_stats_track(int argc, char **argv, struct command *cmd,
                                struct plugin *plugin)
{
    int err = 0;
    __u32 result = 0;
    const char *desc = "Enable, Disable or Get cmd latency monitoring stats";
    const char *option  = "enable or disable or status, default is status";
    const char *command = "commands to monitor for - all|read|write|trim,"
                          " default is all i.e, enabled for all commands";
    const char *thrtime = "The threshold value to use for latency monitoring in"
                          " milliseconds, default is 800ms";

    int fid = MICRON_FID_LATENCY_MONITOR;
    eDriveModel model = UNKNOWN_MODEL;
    uint32_t command_mask = 0x7;       /* 1:read 2:write 4:trim 7:all */
    uint32_t timing_mask = 0x08080800; /* R[31-24]:W[23:16]:T[15:8]:0 */
    uint32_t enable = 2;
    struct nvme_dev *dev;
    struct {
        char *option;
        char *command;
        uint32_t threshold;
    } opt = {
        .option = "status",
        .command = "all",
        .threshold = 0
    };

    OPT_ARGS(opts) = {
        OPT_STRING("option", 'o', "option", &opt.option, option),
        OPT_STRING("command", 'c', "command", &opt.command, command),
        OPT_UINT("threshold", 't', &opt.threshold, thrtime),
        OPT_END()
    };


    err = micron_parse_options(&dev, argc, argv, desc, opts, &model);
    if (err < 0)
        return -1;

    if (!strcmp(opt.option, "enable")) {
        enable = 1;
    } else if (!strcmp(opt.option, "disable")) {
        enable = 0;
    } else if (strcmp(opt.option, "status")) {
        printf("Invalid control option %s specified\n", opt.option);
        dev_close(dev);
        return -1;
    }

    struct nvme_get_features_args g_args = {
        .args_size	= sizeof(g_args),
        .fd		= dev_fd(dev),
        .fid            = fid,
        .nsid		= 0,
        .sel		= 0,
	.cdw11		= 0,
	.uuidx		= 0,
	.data_len	= 0,
	.data		= NULL,
	.timeout	= NVME_DEFAULT_IOCTL_TIMEOUT,
	.result		= &result,
    };

    err = nvme_get_features(&g_args);
    if (err != 0) {
        printf("Failed to retrieve latency monitoring feature status\n");
        dev_close(dev);
	return err;
    }

    /* If it is to retrieve the status only */
    if (enable == 2) {
        printf("Latency Tracking Statistics is currently %s",
                (result & 0xFFFF0000) ? "enabled" : "disabled");
        if ((result & 7) == 7) {
            printf(" for All commands\n");
        } else if ((result & 7) >  0) {
            printf(" for");
            if (result & 1) {
                printf(" Read");
            }
            if (result & 2) {
                printf(" Write");
            }
            if (result & 4) {
                printf(" Trim");
            }
            printf(" commands\n");
        } else if (result == 0) {
		printf("\n");
        }
        dev_close(dev);
        return err;
    }

    /* read and validate threshold values if enable option is specified */
    if (enable == 1) {
        if (opt.threshold > 2550) {
            printf("The maximum threshold value cannot be more than 2550 ms\n");
            dev_close(dev);
            return -1;
        }
	/* timing mask is in terms of 10ms units, so min allowed is 10ms */
	else if ((opt.threshold % 10) != 0) {
            printf("The threshold value should be multiple of 10 ms\n");
            dev_close(dev);
            return -1;
	}
	opt.threshold /= 10;
    }

    /* read-in command(s) to be monitored */
    if (!strcmp(opt.command, "read")) {
        command_mask = 0x1;
        timing_mask = (opt.threshold << 24);
    } else if (!strcmp(opt.command, "write")) {
        command_mask = 0x2;
        timing_mask = (opt.threshold << 16);
    } else if (!strcmp(opt.command, "trim")) {
        command_mask = 0x4;
        timing_mask = (opt.threshold << 8);
    } else if (strcmp(opt.command, "all")) {
        printf("Invalid command %s specified for option %s\n",
		opt.command, opt.option);
        dev_close(dev);
        return -1;
    }

    struct nvme_set_features_args args = {
            .args_size      = sizeof(args),
            .fd             = dev_fd(dev),
            .fid            = MICRON_FID_LATENCY_MONITOR,
            .nsid           = 0,
            .cdw11          = enable,
            .cdw12          = command_mask,
            .save           = 1,
            .uuidx          = 0,
            .cdw13          = timing_mask,
            .cdw15          = 0,
            .data_len       = 0,
            .data           = NULL,
            .timeout        = NVME_DEFAULT_IOCTL_TIMEOUT,
            .result         = &result,
    };
    err = nvme_set_features(&args);
    if (err == 0) {
        printf("Successfully %sd latency monitoring for %s commands with %dms threshold\n",
                opt.option, opt.command, opt.threshold == 0 ? 800 : opt.threshold * 10);
    } else {
        printf("Failed to %s latency monitoring for %s commands with %dms threshold\n",
                opt.option, opt.command, opt.threshold == 0 ? 800 : opt.threshold * 10);
    }

    dev_close(dev);
    return err;
}


static int micron_latency_stats_logs(int argc, char **argv, struct command *cmd,
                                struct plugin *plugin)
{
#define  LATENCY_LOG_ENTRIES 16
    struct latency_log_entry {
        uint64_t   timestamp;
        uint32_t   latency;
        uint32_t   cmdtag;
	union {
	    struct {
                uint32_t opcode:8;
		uint32_t fuse:2;
		uint32_t rsvd1:4;
		uint32_t psdt:2;
		uint32_t cid:16;
	    };
            uint32_t   dw0;
	};
	uint32_t nsid;
	uint32_t slba_low;
	uint32_t slba_high;
	union {
            struct {
	        uint32_t nlb:16;
	        uint32_t rsvd2:9;
	        uint32_t deac:1;
	        uint32_t prinfo:4;
	        uint32_t fua:1;
	        uint32_t lr:1;
	    };
            uint32_t   dw12;
	};
        uint32_t   dsm;
        uint32_t   rfu[6];
    } log[LATENCY_LOG_ENTRIES];
    eDriveModel model = UNKNOWN_MODEL;
    struct nvme_dev *dev;
    int err = -1;
    const char *desc = "Display Latency tracking log information";
    OPT_ARGS(opts) = {
        OPT_END()
    };

    err = micron_parse_options(&dev, argc, argv, desc, opts, &model);
    if (err)
        return err;
    memset(&log, 0, sizeof(log));
    err = nvme_get_log_simple(dev_fd(dev), 0xD1, sizeof(log), &log);
    if (err) {
        if (err < 0)
            printf("Unable to retrieve latency stats log the drive\n");
        dev_close(dev);
        return err;
    }
    /* print header and each log entry */
    printf("Timestamp, Latency, CmdTag, Opcode, Fuse, Psdt,Cid, Nsid,"
	   "Slba_L, Slba_H, Nlb, DEAC, PRINFO, FUA,LR\n");
    for (int i = 0; i < LATENCY_LOG_ENTRIES; i++) {
	printf("%"PRIu64",%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u\n",
	       log[i].timestamp,log[i].latency, log[i].cmdtag, log[i].opcode,
	       log[i].fuse, log[i].psdt, log[i].cid, log[i].nsid,
	       log[i].slba_low, log[i].slba_high, log[i].nlb,
	       log[i].deac, log[i].prinfo, log[i].fua, log[i].lr);
    }
    printf("\n");
    dev_close(dev);
    return err;
}

static int micron_latency_stats_info(int argc, char **argv, struct command *cmd,
                                struct plugin *plugin)
{
    const char *desc = "display command latency statistics";
    const char *command = "command to display stats - all|read|write|trim"
	                  "default is all";
    int err = 0;
    struct nvme_dev *dev;
    eDriveModel model = UNKNOWN_MODEL;
    #define LATENCY_BUCKET_COUNT 32
    #define LATENCY_BUCKET_RSVD  32
    struct micron_latency_stats {
       uint64_t    version; /* major << 32 | minior */
       uint64_t    all_cmds[LATENCY_BUCKET_COUNT + LATENCY_BUCKET_RSVD];
       uint64_t    read_cmds[LATENCY_BUCKET_COUNT + LATENCY_BUCKET_RSVD];
       uint64_t    write_cmds[LATENCY_BUCKET_COUNT + LATENCY_BUCKET_RSVD];
       uint64_t    trim_cmds[LATENCY_BUCKET_COUNT + LATENCY_BUCKET_RSVD];
       uint32_t    reserved[255]; /* round up to 4K */
    } log;

    struct latency_thresholds {
      uint32_t start;
      uint32_t end;
      char    *unit;
    } thresholds[LATENCY_BUCKET_COUNT] = {
      {0, 50, "us"}, {50, 100, "us"}, {100, 150, "us"}, {150, 200, "us"},
      {200, 300, "us"}, {300, 400, "us"}, {400, 500, "us"}, {500, 600, "us"},
      {600, 700, "us"}, {700, 800, "us"}, {800, 900, "us"}, {900, 1000, "us"},
      {1, 5, "ms"}, {5, 10, "ms"}, {10, 20, "ms"}, {20, 50, "ms"}, {50, 100, "ms"},
      {100, 200, "ms"}, {200, 300, "ms"}, {300, 400, "ms"}, {400, 500, "ms"},
      {500, 600, "ms"}, {600, 700, "ms"}, {700, 800, "ms"}, {800, 900, "ms"},
      {900, 1000, "ms"}, {1, 2, "s"}, {2, 3, "s"}, {3, 4, "s"}, {4, 5, "s"},
      {5,8, "s"},
      {8, INT_MAX, "s"},
    };

    struct {
        char *command;
    } opt = {
        .command="all"
    };

    uint64_t *cmd_stats = &log.all_cmds[0];
    char *cmd_str = "All";

    OPT_ARGS(opts) = {
        OPT_STRING("command", 'c', "command", &opt.command, command),
        OPT_END()
    };

    err = micron_parse_options(&dev, argc, argv, desc, opts, &model);
    if (err < 0)
        return err;
    if (!strcmp(opt.command, "read")) {
        cmd_stats = &log.read_cmds[0];
	cmd_str = "Read";
    } else if (!strcmp(opt.command, "write")) {
        cmd_stats = &log.write_cmds[0];
	cmd_str = "Write";
    } else if (!strcmp(opt.command, "trim")) {
        cmd_stats = &log.trim_cmds[0];
	cmd_str = "Trim";
    } else if (strcmp(opt.command, "all")) {
        printf("Invalid command option %s to display latency stats\n", opt.command);
        dev_close(dev);
	return -1;
    }

    memset(&log, 0, sizeof(log));
    err = nvme_get_log_simple(dev_fd(dev), 0xD0, sizeof(log), &log);
    if (err) {
        if (err < 0)
            printf("Unable to retrieve latency stats log the drive\n");
        dev_close(dev);
        return err;
    }
    printf("Micron IO %s Command Latency Statistics\n"
	   "Major Revision : %d\nMinor Revision : %d\n",
	   cmd_str, (int)(log.version >> 32), (int)(log.version & 0xFFFFFFFF));
    printf("=============================================\n");
    printf("Bucket    Start     End        Command Count\n");
    printf("=============================================\n");

    for (int b = 0; b < LATENCY_BUCKET_COUNT; b++) {
       int bucket = b + 1;
       char start[32] = { 0 };
       char end[32] = { 0 };
       sprintf(start, "%u%s", thresholds[b].start, thresholds[b].unit);
       if (thresholds[b].end == INT_MAX)
           sprintf(end, "INF");
       else
           sprintf(end, "%u%s", thresholds[b].end, thresholds[b].unit);
       printf("%2d   %8s    %8s    %8"PRIu64"\n",
              bucket, start, end, cmd_stats[b]);
    }
    dev_close(dev);
    return err;
}

static int micron_ocp_smart_health_logs(int argc, char **argv, struct command *cmd,
                                struct plugin *plugin)
{
    const char *desc = "Retrieve Smart or Extended Smart Health log for the given device ";
    unsigned int logC0[C0_log_size/sizeof(int)] = { 0 };
    unsigned int logFB[FB_log_size/sizeof(int)] = { 0 };
    struct nvme_id_ctrl ctrl;
    eDriveModel eModel = UNKNOWN_MODEL;
    struct nvme_dev *dev;
    bool is_json = true;
    struct format {
        char *fmt;
    };
    const char *fmt = "output format normal|json";
    struct format cfg = {
        .fmt = "json",
    };
    int err = 0;

    OPT_ARGS(opts) = {
        OPT_FMT("format", 'f', &cfg.fmt, fmt),
        OPT_END()
    };

    err = micron_parse_options(&dev, argc, argv, desc, opts, &eModel);
    if (err < 0)
        return -1;

    if (strcmp(cfg.fmt, "normal") == 0)
        is_json = false;

    /* For M5410 and M5407, this option prints 0xFB log page */
    if (eModel == M5410 || eModel == M5407) {
        __u8 spec = (eModel == M5410) ? 0 : 1;
        __u8 nsze;

        if ((err = nvme_identify_ctrl(dev_fd(dev), &ctrl)) == 0)
            err = nvme_get_log_simple(dev_fd(dev), 0xFB,
                                      FB_log_size, logFB);
        if (err) {
            if (err < 0)
                printf("Unable to retrieve smart log 0xFB for the drive\n");
            goto out;
        }

        nsze = (ctrl.vs[987] == 0x12);
        if (nsze == 0 && nsze_from_oacs)
            nsze = ((ctrl.oacs >> 3) & 0x1);
        print_nand_stats_fb((__u8 *)logFB, NULL, nsze, is_json, spec);
        goto out;
    }

    /* check for models that support 0xC0 log */
    if (eModel != M51CX) {
        printf ("Unsupported drive model for vs-smart-add-log commmand\n");
        err = -1;
        goto out;
    }

    err = nvme_get_log_simple(dev_fd(dev), 0xC0, C0_log_size, logC0);
    if (err == 0) {
        print_smart_cloud_health_log((__u8 *)logC0, is_json);
    } else if (err < 0) {
        printf("Unable to retrieve extended smart log 0xC0 for the drive\n");
    }
out:
    dev_close(dev);
    if (err > 0)
	nvme_show_status(err);
    return err;
}

static int micron_clr_fw_activation_history(int argc, char **argv,
                                struct command *cmd, struct plugin *plugin)
{
    const char *desc = "Clear FW activation history";
    __u32 result = 0;
    __u8 fid = MICRON_FEATURE_CLEAR_FW_ACTIVATION_HISTORY;
    eDriveModel model = UNKNOWN_MODEL;
    struct nvme_dev *dev;
    OPT_ARGS(opts) = {
        OPT_END()
    };
    int err = 0;

    err = micron_parse_options(&dev, argc, argv, desc, opts, &model);
    if (err < 0)
        return err;

    if (model != M51CX) {
        printf ("This option is not supported for specified drive\n");
        dev_close(dev);
        return err;
    }

    err = nvme_set_features_simple(dev_fd(dev), fid, 1 << 31, 0, 0, &result);
    if (err == 0) err = (int)result;
    else printf ("Failed to clear fw activation history, error = 0x%x\n", err);

    dev_close(dev);
    return err;
}

static int micron_telemetry_cntrl_option(int argc, char **argv,
                                struct command *cmd, struct plugin *plugin)
{
    int err = 0;
    __u32 result = 0;
    const char *desc = "Enable or Disable Controller telemetry log generation";
    const char *option = "enable or disable or status";
    const char *select = "select/save values: enable/disable options"
                         "1 - save (persistent), 0 - non-persistent and for "
                         "status options: 0 - current, 1 - default, 2-saved";
    int fid = MICRON_FEATURE_TELEMETRY_CONTROL_OPTION;
    eDriveModel model = UNKNOWN_MODEL;
    struct nvme_id_ctrl ctrl =  { 0 };
    struct nvme_dev *dev;

    struct {
        char *option;
        int  select;
    } opt = {
        .option = "disable",
        .select= 0,
    };

    OPT_ARGS(opts) = {
        OPT_STRING("option", 'o', "option", &opt.option, option),
        OPT_UINT("select", 's', &opt.select, select),
        OPT_END()
    };

    err = micron_parse_options(&dev, argc, argv, desc, opts, &model);
    if (err < 0)
        return -1;

    err = nvme_identify_ctrl(dev_fd(dev), &ctrl);
    if ((ctrl.lpa & 0x8) != 0x8) {
           printf("drive doesn't support host/controller generated telemetry logs\n");
           dev_close(dev);
           return err;
    }

    if (!strcmp(opt.option, "enable")) {
        struct nvme_set_features_args args = {
                .args_size      = sizeof(args),
                .fd             = dev_fd(dev),
                .fid            = fid,
                .nsid           = 1,
                .cdw11          = 1,
                .cdw12          = 0,
                .save           = (opt.select & 0x1),
                .uuidx          = 0,
                .cdw15          = 0,
                .data_len       = 0,
                .data           = NULL,
                .timeout        = NVME_DEFAULT_IOCTL_TIMEOUT,
                .result         = &result,
        };
        err = nvme_set_features(&args);
        if (err == 0) {
            printf("successfully set controller telemetry option\n");
        } else {
            printf("Failed to set controller telemetry option\n");
        }
    } else if (!strcmp(opt.option, "disable")) {
        struct nvme_set_features_args args = {
                .args_size      = sizeof(args),
                .fd             = dev_fd(dev),
                .fid            = fid,
                .nsid           = 1,
                .cdw11          = 0,
                .cdw12          = 0,
                .save           = (opt.select & 0x1),
                .uuidx          = 0,
                .cdw15          = 0,
                .data_len       = 0,
                .data           = NULL,
                .timeout        = NVME_DEFAULT_IOCTL_TIMEOUT,
                .result         = &result,
        };
	err = nvme_set_features(&args);
        if (err == 0) {
            printf("successfully disabled controller telemetry option\n");
        } else {
            printf("Failed to disable controller telemetry option\n");
        }
    } else if (!strcmp(opt.option, "status")) {
	struct nvme_get_features_args args = {
		.args_size	= sizeof(args),
		.fd		= dev_fd(dev),
		.fid		= fid,
		.nsid		= 1,
		.sel		= opt.select & 0x3,
		.cdw11		= 0,
		.uuidx		= 0,
		.data_len	= 0,
		.data		= NULL,
		.timeout	= NVME_DEFAULT_IOCTL_TIMEOUT,
		.result		= &result,
	};
        err = nvme_get_features(&args);
        if (err == 0) {
            printf("Controller telemetry option : %s\n",
                    (result) ? "enabled" : "disabled");
        } else {
            printf("Failed to retrieve controller telemetry option\n");
        }
    } else {
        printf("invalid option %s, valid values are enable,disable or status\n", opt.option);
        dev_close(dev);
        return -1;
    }

    dev_close(dev);
    return err;
}

/* M51XX models log page header */
struct micron_common_log_header  {
    uint8_t  id;
    uint8_t  version;
    uint16_t pn;
    uint32_t log_size;
    uint32_t max_size;
    uint32_t write_pointer;
    uint32_t next_pointer;
    uint32_t overwritten_bytes;
    uint8_t  flags;
    uint8_t  reserved[7];
};

/* helper function to retrieve logs with specific offset and max chunk size */
int nvme_get_log_lpo(int fd, __u8 log_id, __u32 lpo, __u32 chunk,
		     __u32 data_len, void *data)
{
	__u32 offset = lpo, xfer_len = data_len;
	void *ptr = data;
	struct nvme_get_log_args args = {
		.lpo = offset,
		.result = NULL,
		.log = ptr,
		.args_size = sizeof(args),
		.fd = fd,
		.timeout = NVME_DEFAULT_IOCTL_TIMEOUT,
		.lid = log_id,
		.len = xfer_len,
		.nsid = NVME_NSID_ALL,
		.csi = NVME_CSI_NVM,
		.lsi = NVME_LOG_LSI_NONE,
		.lsp = NVME_LOG_LSP_NONE,
		.uuidx = NVME_UUID_NONE,
		.rae = false,
		.ot = false,
	};
	int ret = 0;

	/* divide data into multiple chunks */
	do {
		xfer_len = data_len - offset;
		if (xfer_len > chunk)
			xfer_len = chunk;

		args.lpo = offset;
		args.log = ptr;
		args.len = xfer_len;
		ret = nvme_get_log(&args);
		if (ret)
			return ret;
		offset += xfer_len;
		ptr += xfer_len;
	} while (offset < data_len);
	return ret;
}

/* retrieves logs with common log format */
static int get_common_log(int fd, uint8_t id, uint8_t **buf, int *size)
{
    struct micron_common_log_header hdr = { 0 };
    int log_size = sizeof(hdr), first = 0, second = 0;
    uint8_t *buffer = NULL;
    int ret = -1;
    int chunk = 0x4000; /* max chunk size to be used for these logs */

    ret = nvme_get_log_simple(fd, id, sizeof(hdr), &hdr);
    if (ret) {
        fprintf(stderr, "pull hdr failed for  %hhu with error: 0x%x\n", id, ret);
	return ret;
    }

    if (hdr.id != id ||
        hdr.log_size == 0 ||
	hdr.max_size == 0 ||
	hdr.write_pointer < sizeof(hdr))
    {
        fprintf(stderr, "invalid log data for LOG: 0x%X, id: 0x%X, size: %u, "
			"max: %u, wp: %u, flags: %hhu, np: %u\n", id,
			 hdr.id, hdr.log_size, hdr.max_size, hdr.write_pointer,
			 hdr.flags, hdr.next_pointer);
	return 1;
    }

    /* we may have just 32-bytes for some models; write to wfile if log hasn't
     * yet reached its max size
     */
    if (hdr.log_size == sizeof(hdr)) {
        buffer = (uint8_t *)malloc(sizeof(hdr));
	if (buffer == NULL) {
            fprintf(stderr, "malloc of %zu bytes failed for log: 0x%X\n",
			    sizeof(hdr), id);
	    return -ENOMEM;
	}
	memcpy(buffer,(uint8_t *)&hdr, sizeof(hdr));
    } else if (hdr.log_size < hdr.max_size) {
	buffer = (uint8_t *)malloc(sizeof(hdr) + hdr.log_size);
	if (buffer == NULL) {
            fprintf(stderr, "malloc of %zu bytes failed for log: 0x%X\n",
			    hdr.log_size + sizeof(hdr), id);
	    return -ENOMEM;
	}
	memcpy(buffer, &hdr, sizeof(hdr));
        ret = nvme_get_log_lpo(fd, id, sizeof(hdr), chunk, hdr.log_size,
			       buffer + sizeof(hdr));
	if (ret == 0) {
	    log_size += hdr.log_size;
	}
    } else if (hdr.log_size >= hdr.max_size) {
        /* reached maximum, to maintain, sequence we need to depend on write
	 * pointer to detect wrap-overs. FW doesn't yet implement the condition
	 * hdr.log_size > hdr.max_size; also ignore over-written log data; we
	 * also ignore collisions for now
	 */
	buffer = (uint8_t *)malloc(hdr.max_size + sizeof(hdr));
	if (buffer == NULL) {
            fprintf(stderr, "malloc of %zu bytes failed for log: 0x%X\n",
			    hdr.max_size + sizeof(hdr), id);
	    return -ENOMEM;
	}
	memcpy(buffer, &hdr, sizeof(hdr));

        first = hdr.max_size - hdr.write_pointer;
        second = hdr.write_pointer - sizeof(hdr);

        if (first) {
            ret = nvme_get_log_lpo(fd, id, hdr.write_pointer, chunk, first,
				   buffer + sizeof(hdr));
	    if (ret) {
                free(buffer);
		fprintf(stderr, "failed to get log: 0x%X\n", id);
		return ret;
	    }
	    log_size += first;
	}
	if (second) {
            ret = nvme_get_log_lpo(fd, id, sizeof(hdr), chunk, second,
			           buffer + sizeof(hdr) + first);
	    if (ret) {
		fprintf(stderr, "failed to get log: 0x%X\n", id);
                free(buffer);
		return ret;
	    }
	    log_size += second;
	}
    }
    *buf = buffer;
    *size = log_size;
    return ret;
}

static int micron_internal_logs(int argc, char **argv, struct command *cmd,
                                struct plugin *plugin)
{
    int err = -EINVAL;
    int ctrlIdx, telemetry_option = 0;
    char strOSDirName[1024];
    char strCtrlDirName[1024];
    char strMainDirName[256];
    unsigned int *puiIDDBuf;
    unsigned int uiMask;
    struct nvme_id_ctrl ctrl;
    char sn[20] = { 0 };
    char msg[256] = { 0 };
    int  c_logs_index = 8; /* should be current size of aVendorLogs */
    struct nvme_dev *dev;
    struct {
        unsigned char ucLogPage;
        const char *strFileName;
        int nLogSize;
        int nMaxSize;
    } aVendorLogs[32] = {
        { 0x03, "firmware_slot_info_log.bin", 512, 0 },
        { 0xC1, "nvmelog_C1.bin", 0, 0 },
        { 0xC2, "nvmelog_C2.bin", 0, 0 },
        { 0xC4, "nvmelog_C4.bin", 0, 0 },
        { 0xC5, "nvmelog_C5.bin", C5_log_size, 0 },
        { 0xD0, "nvmelog_D0.bin", D0_log_size, 0 },
        { 0xE6, "nvmelog_E6.bin", 0, 0 },
        { 0xE7, "nvmelog_E7.bin", 0, 0 }
    },
    aM51XXLogs[] = {
        { 0xFB, "nvmelog_FB.bin", 4096, 0 },  /* this should be collected first for M51AX */
        { 0xD0, "nvmelog_D0.bin", 512, 0 },
        { 0x03, "firmware_slot_info_log.bin", 512, 0},
        { 0xF7, "nvmelog_F7.bin", 4096, 512 * 1024 },
        { 0xF8, "nvmelog_F8.bin", 4096, 512 * 1024 },
        { 0xF9, "nvmelog_F9.bin", 4096, 200 * 1024 * 1024 },
        { 0xFC, "nvmelog_FC.bin", 4096, 200 * 1024 * 1024 },
        { 0xFD, "nvmelog_FD.bin", 4096, 80 * 1024 * 1024 }
    },
    aM51AXLogs[] = {
        { 0xCA, "nvmelog_CA.bin", 512, 0 },
        { 0xFA, "nvmelog_FA.bin", 4096, 15232 },
        { 0xF6, "nvmelog_F6.bin", 4096, 512 * 1024 },
        { 0xFE, "nvmelog_FE.bin", 4096, 512 * 1024 },
        { 0xFF, "nvmelog_FF.bin", 4096, 162 * 1024 },
        { 0x04, "changed_namespace_log.bin", 4096, 0 },
        { 0x05, "command_effects_log.bin", 4096, 0 },
        { 0x06, "drive_self_test.bin", 4096, 0 }
    },
    aM51BXLogs[] = {
        { 0xFA, "nvmelog_FA.bin", 4096, 16376 },
        { 0xFE, "nvmelog_FE.bin", 4096, 256 * 1024 },
        { 0xFF, "nvmelog_FF.bin", 4096, 64 * 1024 },
        { 0xCA, "nvmelog_CA.bin", 512, 1024 }
    },
    aM51CXLogs[] = {
        { 0xE1, "nvmelog_E1.bin", 0, 0 },
        { 0xE2, "nvmelog_E2.bin", 0, 0 },
        { 0xE3, "nvmelog_E3.bin", 0, 0 },
        { 0xE4, "nvmelog_E4.bin", 0, 0 },
        { 0xE5, "nvmelog_E5.bin", 0, 0 },
        { 0xE8, "nvmelog_E8.bin", 0, 0 },
        { 0xE9, "nvmelog_E9.bin", 0, 0 },
        { 0xEA, "nvmelog_EA.bin", 0, 0 },
    };

    eDriveModel eModel;

    const char *desc = "This retrieves the micron debug log package";
    const char *package = "Log output data file name (required)";
    const char *type = "telemetry log type - host or controller";
    const char *data_area = "telemetry log data area 1, 2 or 3";
    unsigned char *dataBuffer = NULL;
    int bSize = 0;
    int maxSize = 0;

    struct config {
        char *type;
        char *package;
        int  data_area;
        int  log;
    };

    struct config cfg = {
        .type = "",
        .package = "",
        .data_area = -1,
        .log = 0x07,
    };

    OPT_ARGS(opts) = {
        OPT_STRING("type", 't', "log type", &cfg.type, type),
        OPT_STRING("package", 'p', "FILE", &cfg.package, package),
        OPT_UINT("data_area", 'd', &cfg.data_area, data_area),
        OPT_END()
    };

    err = parse_and_open(&dev, argc, argv, desc, opts);
    if (err)
        return err;

    /* if telemetry type is specified, check for data area */
    if (strlen(cfg.type) != 0) {
        if (!strcmp(cfg.type, "controller")) {
            cfg.log = 0x08;
        } else if (strcmp(cfg.type, "host")) {
            printf ("telemetry type (host or controller) should be specified i.e. -t=host\n");
            goto out;
        }

        if (cfg.data_area <= 0 || cfg.data_area > 3) {
            printf ("data area must be selected using -d option ie --d=1,2,3\n");
            goto out;
        }
        telemetry_option = 1;
    } else if (cfg.data_area > 0) {
        printf ("data area option is valid only for telemetry option (i.e --type=host|controller)\n");
        goto out;
    }

    if (strlen(cfg.package) == 0) {
        if (telemetry_option)
            printf ("Log data file must be specified. ie -p=logfile.bin\n");
        else
            printf ("Log data file must be specified. ie -p=logfile.zip or -p=logfile.tgz|logfile.tar.gz\n");
        goto out;
    }

    /* pull log details based on the model name */
    sscanf(argv[optind], "/dev/nvme%d", &ctrlIdx);
    if ((eModel = GetDriveModel(ctrlIdx)) == UNKNOWN_MODEL) {
        printf ("Unsupported drive model for vs-internal-log collection\n");
        goto out;
    }

    err = nvme_identify_ctrl(dev_fd(dev), &ctrl);
    if (err)
        goto out;

    err = -EINVAL;
    if (telemetry_option) {
        if ((ctrl.lpa & 0x8) != 0x8) {
           printf("telemetry option is not supported for specified drive\n");
           goto out;
        }
        int logSize = 0; __u8 *buffer = NULL; const char *dir = ".";
        err = micron_telemetry_log(dev_fd(dev), cfg.log,  &buffer, &logSize,
				   cfg.data_area);
        if (err == 0 && logSize > 0 && buffer != NULL) {
            sprintf(msg, "telemetry log: 0x%X", cfg.log);
            WriteData(buffer, logSize, dir, cfg.package, msg);
            free(buffer);
        }
        goto out;
    }

    printf("Preparing log package. This will take a few seconds...\n");

    /* trim spaces out of serial number string */
    int i, j = 0;
    for (i = 0; i < sizeof(ctrl.sn); i++) {
        if (isblank((int)ctrl.sn[i]))
            continue;
        sn[j++] = ctrl.sn[i];
    }
    sn[j] = '\0';
    strcpy(ctrl.sn, sn);

    SetupDebugDataDirectories(ctrl.sn, cfg.package, strMainDirName, strOSDirName, strCtrlDirName);

    GetTimestampInfo(strOSDirName);
    GetCtrlIDDInfo(strCtrlDirName, &ctrl);
    GetOSConfig(strOSDirName);
    GetDriveInfo(strOSDirName, ctrlIdx, &ctrl);

    for (int i = 1; i <= ctrl.nn; i++)
        GetNSIDDInfo(dev_fd(dev), strCtrlDirName, i);

    GetSmartlogData(dev_fd(dev), strCtrlDirName);
    GetErrorlogData(dev_fd(dev), ctrl.elpe, strCtrlDirName);
    GetGenericLogs(dev_fd(dev), strCtrlDirName);
    /* pull if telemetry log data is supported */
    if ((ctrl.lpa & 0x8) == 0x8)
        GetTelemetryData(dev_fd(dev), strCtrlDirName);

    GetFeatureSettings(dev_fd(dev), strCtrlDirName);

    if (eModel != M5410 && eModel != M5407) {
        memcpy(&aVendorLogs[c_logs_index], aM51XXLogs, sizeof(aM51XXLogs));
        c_logs_index += sizeof(aM51XXLogs)/sizeof(aM51XXLogs[0]);
        if (eModel == M51AX)
            memcpy((char *)&aVendorLogs[c_logs_index], aM51AXLogs, sizeof(aM51AXLogs));
        else if (eModel == M51BX)
            memcpy((char *)&aVendorLogs[c_logs_index], aM51BXLogs, sizeof(aM51BXLogs));
        else if (eModel == M51CX)
            memcpy((char *)&aVendorLogs[c_logs_index], aM51CXLogs, sizeof(aM51CXLogs));
    }

    for (int i = 0; i < (int)(sizeof(aVendorLogs) / sizeof(aVendorLogs[0])) &&
                        aVendorLogs[i].ucLogPage != 0; i++) {
        err = -1;
        switch (aVendorLogs[i].ucLogPage) {
        case 0xE1:
        case 0xE5:
        case 0xE9:
            err = 1;
            break;

        case 0xE2:
        case 0xE3:
        case 0xE4:
        case 0xE8:
        case 0xEA:
            err = get_common_log(dev_fd(dev), aVendorLogs[i].ucLogPage,
				 &dataBuffer, &bSize);
            break;

        case 0xC1:
        case 0xC2:
        case 0xC4:
            err = GetLogPageSize(dev_fd(dev), aVendorLogs[i].ucLogPage,
                                 &bSize);
            if (err == 0 && bSize > 0)
                err = GetCommonLogPage(dev_fd(dev), aVendorLogs[i].ucLogPage,
                                       &dataBuffer, bSize);
            break;

        case 0xE6:
        case 0xE7:
            puiIDDBuf = (unsigned int *)&ctrl;
            uiMask = puiIDDBuf[1015];
            if (uiMask == 0 || (aVendorLogs[i].ucLogPage == 0xE6 && uiMask == 2) ||
               (aVendorLogs[i].ucLogPage == 0xE7 && uiMask == 1)) {
                bSize = 0;
            } else {
                bSize = (int)puiIDDBuf[1023];
                if (bSize % (16 * 1024)) {
                    bSize += (16 * 1024) - (bSize % (16 * 1024));
                }
            }
            if (bSize != 0 && (dataBuffer = (unsigned char *)malloc(bSize)) != NULL) {
                memset(dataBuffer, 0, bSize);
                if (eModel == M5410 || eModel == M5407)
                    err = NVMEGetLogPage(dev_fd(dev),
                                         aVendorLogs[i].ucLogPage, dataBuffer,
                                         bSize);
                else
                    err = nvme_get_log_simple(dev_fd(dev),
					      aVendorLogs[i].ucLogPage,
					      bSize, dataBuffer);
            }
            break;

        case 0xF7:
        case 0xF9:
        case 0xFC:
        case 0xFD:
            if (eModel == M51BX) {
                (void)NVMEResetLog(dev_fd(dev), aVendorLogs[i].ucLogPage,
                                   aVendorLogs[i].nLogSize, aVendorLogs[i].nMaxSize);
            }
            /* fallthrough */
        default:
            bSize = aVendorLogs[i].nLogSize;
            dataBuffer = (unsigned char *)malloc(bSize);
            if (dataBuffer == NULL) {
               break;
            }
            memset(dataBuffer, 0, bSize);
            err = nvme_get_log_simple(dev_fd(dev), aVendorLogs[i].ucLogPage,
				      bSize, dataBuffer);
            maxSize = aVendorLogs[i].nMaxSize - bSize;
            while (err == 0 && maxSize > 0 && ((unsigned int *)dataBuffer)[0] != 0xdeadbeef) {
                sprintf(msg, "log 0x%x", aVendorLogs[i].ucLogPage);
                WriteData(dataBuffer, bSize, strCtrlDirName, aVendorLogs[i].strFileName, msg);
                err = nvme_get_log_simple(dev_fd(dev),
					  aVendorLogs[i].ucLogPage,
					  bSize, dataBuffer);
                if (err || (((unsigned int *)dataBuffer)[0] == 0xdeadbeef))
                    break;
                maxSize -= bSize;
            }
            break;
        }

        if (err == 0 && dataBuffer != NULL && ((unsigned int *)dataBuffer)[0] != 0xdeadbeef) {
            sprintf(msg, "log 0x%x", aVendorLogs[i].ucLogPage);
            WriteData(dataBuffer, bSize, strCtrlDirName, aVendorLogs[i].strFileName, msg);
        }

        if (dataBuffer != NULL) {
            free(dataBuffer);
            dataBuffer = NULL;
        }
    }

    err = ZipAndRemoveDir(strMainDirName, cfg.package);
out:
    dev_close(dev);
    return err;
}

#define MIN_LOG_SIZE 512
static int micron_logpage_dir(int argc, char **argv, struct command *cmd,
                              struct plugin *plugin)
{
    int err = -1;
    const char *desc = "List the supported log pages";
    eDriveModel model = UNKNOWN_MODEL;
    char logbuf[MIN_LOG_SIZE];
    struct nvme_dev *dev;
    int i;

    OPT_ARGS(opts) = {
        OPT_END()
    };

    err = micron_parse_options(&dev, argc, argv, desc, opts, &model);
    if (err < 0)
        return err;

    struct nvme_supported_logs {
        uint8_t log_id;
        uint8_t supported;
        char    *desc;
    } log_list[] = {
        {0x00, 0, "Support Log Pages"},
        {0x01, 0, "Error Information"},
        {0x02, 0, "SMART / Health Information"},
        {0x03, 0, "Firmware Slot Information"},
        {0x04, 0, "Changed Namespace List"},
        {0x05, 0, "Commands Supported and Effects"},
        {0x06, 0, "Device Self Test"},
        {0x07, 0, "Telemetry Host-Initiated"},
        {0x08, 0, "Telemetry Controller-Initiated"},
        {0x09, 0, "Endurance Group Information"},
        {0x0A, 0, "Predictable Latency Per NVM Set"},
        {0x0B, 0, "Predictable Latency Event Aggregate"},
        {0x0C, 0, "Asymmetric Namespace Access"},
        {0x0D, 0, "Persistent Event Log"},
        {0x0E, 0, "Predictable Latency Event Aggregate"},
        {0x0F, 0, "Endurance Group Event Aggregate"},
        {0x10, 0, "Media Unit Status"},
        {0x11, 0, "Supported Capacity Configuration List"},
        {0x12, 0, "Feature Identifiers Supported and Effects"},
        {0x13, 0, "NVMe-MI Commands Supported and Effects"},
        {0x14, 0, "Command and Feature lockdown"},
        {0x15, 0, "Boot Partition"},
        {0x16, 0, "Rotational Media Information"},
        {0x70, 0, "Discovery"},
        {0x80, 0, "Reservation Notification"},
        {0x81, 0, "Sanitize Status"},
        {0xC0, 0, "SMART Cloud Health Log"},
        {0xC2, 0, "Firmware Activation History"},
        {0xC3, 0, "Latency Monitor Log"},
    };

    printf("Supported log page list\nLog ID : Description\n");
    for (i = 0; i < sizeof(log_list)/sizeof(log_list[0]); i++) {
        err = nvme_get_log_simple(dev_fd(dev), log_list[i].log_id,
                                  MIN_LOG_SIZE, &logbuf[0]);
        if (err) continue;
        printf("%02Xh    : %s\n", log_list[i].log_id, log_list[i].desc);
    }

    return err;
}
070701015D6C2F000081A4000003E80000006400000001642C0FB5000044AA000000000000004A00000000000000000000002600000000nvme-cli/plugins/netapp/netapp-nvme.c // SPDX-License-Identifier: GPL-2.0-or-later
/*
* Copyright (c) 2018 NetApp, Inc.
*
* 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.
*
*/

#include <stdio.h>
#include <dirent.h>
#include <sys/stat.h>
#include <stdlib.h>
#include <fcntl.h>
#include <unistd.h>
#include <errno.h>
#include <string.h>

#include "common.h"
#include "nvme.h"
#include "libnvme.h"

#include "util/suffix.h"

#define CREATE_CMD
#include "netapp-nvme.h"

#define ONTAP_C2_LOG_ID		0xC2
#define ONTAP_C2_LOG_SIZE	4096
#define ONTAP_LABEL_LEN		260
#define ONTAP_NS_PATHLEN	525

enum {
	NNORMAL,
	NJSON,
	NCOLUMN,
};

enum {
	ONTAP_C2_LOG_SUPPORTED_LSP	= 0x0,
	ONTAP_C2_LOG_NSINFO_LSP		= 0x1,
};

enum {
	ONTAP_VSERVER_TLV		= 0x11,
	ONTAP_VOLUME_TLV		= 0x12,
	ONTAP_NS_TLV			= 0x13,
};

static const char *dev_path = "/dev/";

struct smdevice_info {
	unsigned		nsid;
	struct nvme_id_ctrl	ctrl;
	struct nvme_id_ns	ns;
	char			dev[265];
};

struct ontapdevice_info {
	unsigned		nsid;
	struct nvme_id_ctrl	ctrl;
	struct nvme_id_ns	ns;
	unsigned char		uuid[NVME_UUID_LEN];
	unsigned char		log_data[ONTAP_C2_LOG_SIZE];
	char			dev[265];
};

#define ARRAY_LABEL_LEN		60
#define VOLUME_LABEL_LEN	60

/*
 * Format of the string isn't tightly controlled yet. For now, squash UCS-2 into
 * ASCII. dst buffer must be at least count + 1 bytes long
 */
static void netapp_convert_string(char *dst, char *src, unsigned int count)
{
	int i;

	if (!dst || !src || !count)
		return;

	memset(dst, 0, count + 1);
	for (i = 0; i < count; i++)
		dst[i] = src[i * 2 + 1];
	/* the json routines won't accept empty strings */
	if (strlen(dst) == 0 && count)
		dst[0] = ' ';
}

static void netapp_nguid_to_str(char *str, __u8 *nguid)
{
	int i;

	memset(str, 0, 33);
	for (i = 0; i < 16; i++)
		str += sprintf(str, "%02x", nguid[i]);
}

static void netapp_get_ns_size(char *size, unsigned long long *lba,
		struct nvme_id_ns *ns)
{
	__u8 lba_index;
	nvme_id_ns_flbas_to_lbaf_inuse(ns->flbas, &lba_index);
	*lba = 1ULL << ns->lbaf[lba_index].ds;
	double nsze = le64_to_cpu(ns->nsze) * (*lba);
	const char *s_suffix = suffix_si_get(&nsze);

	sprintf(size, "%.2f%sB", nsze, s_suffix);
}

static void ontap_labels_to_str(char *dst, char *src, int count)
{
	int i;

	memset(dst, 0, ONTAP_LABEL_LEN);
	for (i = 0; i < count; i++) {
		if (src[i] >= '!' && src[i] <= '~')
			dst[i] = src[i];
		else
			break;
	}
	dst[i] = '\0';
}

static void netapp_get_ontap_labels(char *vsname, char *nspath,
		unsigned char *log_data)
{
	int lsp, tlv, label_len;
	char *vserver_name, *volume_name, *namespace_name;
	char vol_name[ONTAP_LABEL_LEN], ns_name[ONTAP_LABEL_LEN];
	const char *ontap_vol = "/vol/";
	int i, j;

	/* get the lsp */
	lsp = (*(__u8 *)&log_data[16]) & 0x0F;
	if (lsp != ONTAP_C2_LOG_NSINFO_LSP)
		/* lsp not related to nsinfo */
		return;

	/* get the vserver tlv and name */
	tlv = *(__u8 *)&log_data[32];
	if (tlv == ONTAP_VSERVER_TLV) {
		label_len = (*(__u16 *)&log_data[34]) * 4;
		vserver_name = (char *)&log_data[36];
		ontap_labels_to_str(vsname, vserver_name, label_len);
	} else {
		/* not the expected vserver tlv */
		fprintf(stderr, "Unable to fetch ONTAP vserver name\n");
		return;
	}

	i = 36 + label_len;
	j = i + 2;
	/* get the volume tlv and name */
	tlv = *(__u8 *)&log_data[i];
	if (tlv == ONTAP_VOLUME_TLV) {
		label_len = (*(__u16 *)&log_data[j]) * 4;
		volume_name = (char *)&log_data[j + 2];
		ontap_labels_to_str(vol_name, volume_name, label_len);
	} else {
		/* not the expected volume tlv */
		fprintf(stderr, "Unable to fetch ONTAP volume name\n");
		return;
	}

	i += 4 + label_len;
	j += 4 + label_len;
	/* get the namespace tlv and name */
	tlv = *(__u8 *)&log_data[i];
	if (tlv == ONTAP_NS_TLV) {
		label_len = (*(__u16 *)&log_data[j]) * 4;
		namespace_name = (char *)&log_data[j + 2];
		ontap_labels_to_str(ns_name, namespace_name, label_len);
	} else {
		/* not the expected namespace tlv */
		fprintf(stderr, "Unable to fetch ONTAP namespace name\n");
		return;
	}

	snprintf(nspath, ONTAP_NS_PATHLEN, "%s%s%s%s", ontap_vol,
			vol_name, "/", ns_name);
}

static void netapp_smdevice_json(struct json_object *devices, char *devname,
		char *arrayname, char *volname, int nsid, char *nguid,
		char *ctrl, char *astate, char *size, long long lba,
		long long nsze)
{
	struct json_object *device_attrs;

	device_attrs = json_create_object();
	json_object_add_value_string(device_attrs, "Device", devname);
	json_object_add_value_string(device_attrs, "Array_Name", arrayname);
	json_object_add_value_string(device_attrs, "Volume_Name", volname);
	json_object_add_value_int(device_attrs, "NSID", nsid);
	json_object_add_value_string(device_attrs, "Volume_ID", nguid);
	json_object_add_value_string(device_attrs, "Controller", ctrl);
	json_object_add_value_string(device_attrs, "Access_State", astate);
	json_object_add_value_string(device_attrs, "Size", size);
	json_object_add_value_int(device_attrs, "LBA_Data_Size", lba);
	json_object_add_value_int(device_attrs, "Namespace_Size", nsze);

	json_array_add_value_object(devices, device_attrs);
}

static void netapp_ontapdevice_json(struct json_object *devices, char *devname,
		char *vsname, char *nspath, int nsid, char *uuid,
		char *size, long long lba, long long nsze)
{
	struct json_object *device_attrs;

	device_attrs = json_create_object();
	json_object_add_value_string(device_attrs, "Device", devname);
	json_object_add_value_string(device_attrs, "Vserver", vsname);
	json_object_add_value_string(device_attrs, "Namespace_Path", nspath);
	json_object_add_value_int(device_attrs, "NSID", nsid);
	json_object_add_value_string(device_attrs, "UUID", uuid);
	json_object_add_value_string(device_attrs, "Size", size);
	json_object_add_value_int(device_attrs, "LBA_Data_Size", lba);
	json_object_add_value_int(device_attrs, "Namespace_Size", nsze);

	json_array_add_value_object(devices, device_attrs);
}

static void netapp_smdevices_print(struct smdevice_info *devices, int count, int format)
{
	struct json_object *root = NULL;
	struct json_object *json_devices = NULL;
	int i, slta;
	char array_label[ARRAY_LABEL_LEN / 2 + 1];
	char volume_label[VOLUME_LABEL_LEN / 2 + 1];
	char nguid_str[33];
	char basestr[] = "%s, Array Name %s, Volume Name %s, NSID %d, "
			"Volume ID %s, Controller %c, Access State %s, %s\n";
	char columnstr[] = "%-16s %-30s %-30s %4d %32s  %c   %-12s %9s\n";
	char *formatstr = basestr; /* default to "normal" output format */
	__u8 lba_index;

	if (format == NCOLUMN) {
		/* for column output, change output string and print column headers */
		formatstr = columnstr;
		printf("%-16s %-30s %-30s %-4s %-32s %-4s %-12s %-9s\n",
			"Device", "Array Name", "Volume Name", "NSID",
			"Volume ID", "Ctrl", "Access State", " Size");
		printf("%-16s %-30s %-30s %-4s %-32s %-4s %-12s %-9s\n",
			"----------------", "------------------------------",
			"------------------------------", "----",
			"--------------------------------", "----",
			"------------", "---------");
	}
	else if (format == NJSON) {
		/* prepare for json output */
		root = json_create_object();
		json_devices = json_create_array();
	}

	for (i = 0; i < count; i++) {
		nvme_id_ns_flbas_to_lbaf_inuse(devices[i].ns.flbas, &lba_index);
		unsigned long long int lba = 1ULL << devices[i].ns.lbaf[lba_index].ds;
		double nsze = le64_to_cpu(devices[i].ns.nsze) * lba;
		const char *s_suffix = suffix_si_get(&nsze);
		char size[128];

		sprintf(size, "%.2f%sB", nsze, s_suffix);
		netapp_convert_string(array_label, (char *)&devices[i].ctrl.vs[20],
					ARRAY_LABEL_LEN / 2);
		slta = devices[i].ctrl.vs[0] & 0x1;
		netapp_convert_string(volume_label, (char *)devices[i].ns.vs,
					VOLUME_LABEL_LEN / 2);
		netapp_nguid_to_str(nguid_str, devices[i].ns.nguid);
		if (format == NJSON)
			netapp_smdevice_json(json_devices, devices[i].dev,
				array_label, volume_label, devices[i].nsid,
				nguid_str, slta ? "A" : "B", "unknown", size,
				lba, le64_to_cpu(devices[i].ns.nsze));
		else
			printf(formatstr, devices[i].dev, array_label,
				volume_label, devices[i].nsid, nguid_str,
				slta ? 'A' : 'B', "unknown", size);
	}

	if (format == NJSON) {
		/* complete the json output */
		json_object_add_value_array(root, "SMdevices", json_devices);
		json_print_object(root, NULL);
		printf("\n");
		json_free_object(root);
	}
}

static void netapp_ontapdevices_print(struct ontapdevice_info *devices,
		int count, int format)
{
	struct json_object *root = NULL;
	struct json_object *json_devices = NULL;
	char vsname[ONTAP_LABEL_LEN] = " ";
	char nspath[ONTAP_NS_PATHLEN] = " ";
	unsigned long long lba;
	char size[128];
	char uuid_str[37] = " ";
	int i;

	char basestr[] = "%s, Vserver %s, Namespace Path %s, NSID %d, UUID %s, %s\n";
	char columnstr[] = "%-16s %-25s %-50s %-4d %-38s %-9s\n";

	/* default to 'normal' output format */
	char *formatstr = basestr;

	if (format == NCOLUMN) {
		/* change output string and print column headers */
		formatstr = columnstr;
		printf("%-16s %-25s %-50s %-4s %-38s %-9s\n",
				"Device", "Vserver", "Namespace Path",
				"NSID", "UUID", "Size");
		printf("%-16s %-25s %-50s %-4s %-38s %-9s\n",
				"----------------", "-------------------------",
				"--------------------------------------------------",
				"----", "--------------------------------------",
				"---------");
	} else if (format == NJSON) {
		/* prepare for json output */
		root = json_create_object();
		json_devices = json_create_array();
	}

	for (i = 0; i < count; i++) {

		netapp_get_ns_size(size, &lba, &devices[i].ns);
		nvme_uuid_to_string(devices[i].uuid, uuid_str);
		netapp_get_ontap_labels(vsname, nspath, devices[i].log_data);

		if (format == NJSON) {
			netapp_ontapdevice_json(json_devices, devices[i].dev,
					vsname, nspath, devices[i].nsid,
					uuid_str, size, lba,
					le64_to_cpu(devices[i].ns.nsze));
		} else
			printf(formatstr, devices[i].dev, vsname, nspath,
					devices[i].nsid, uuid_str, size);
	}

	if (format == NJSON) {
		/* complete the json output */
		json_object_add_value_array(root, "ONTAPdevices", json_devices);
		json_print_object(root, NULL);
		printf("\n");
		json_free_object(root);
	}
}

static int nvme_get_ontap_c2_log(int fd, __u32 nsid, void *buf, __u32 buflen)
{
	struct nvme_passthru_cmd get_log;
	int err;

	memset(buf, 0, buflen);
	memset(&get_log, 0, sizeof(struct nvme_passthru_cmd));

	get_log.opcode = nvme_admin_get_log_page;
	get_log.nsid = nsid;
	get_log.addr = (__u64)(uintptr_t)buf;
	get_log.data_len = buflen;

	__u32 numd = (get_log.data_len >> 2) - 1;
	__u32 numdu = numd >> 16;
	__u32 numdl = numd & 0xFFFF;

	get_log.cdw10 = ONTAP_C2_LOG_ID | (numdl << 16);
	get_log.cdw10 |= ONTAP_C2_LOG_NSINFO_LSP << 8;
	get_log.cdw11 = numdu;

	err = nvme_submit_admin_passthru(fd, &get_log, NULL);
	if (err) {
		fprintf(stderr, "ioctl error %0x\n", err);
		return 1;
	}

	return 0;
}

static int netapp_smdevices_get_info(int fd, struct smdevice_info *item,
				     const char *dev)
{
	int err;

	err = nvme_identify_ctrl(fd, &item->ctrl);
	if (err) {
		fprintf(stderr,
			"Identify Controller failed to %s (%s)\n", dev,
			err < 0 ? strerror(-err) :
			nvme_status_to_string(err, false));
		return 0;
	}

	if (strncmp("NetApp E-Series", item->ctrl.mn, 15) != 0)
		return 0; /* not the right model of controller */

	err = nvme_get_nsid(fd, &item->nsid);
	err = nvme_identify_ns(fd, item->nsid, &item->ns);
	if (err) {
		fprintf(stderr,
			"Unable to identify namespace for %s (%s)\n",
			dev, err < 0 ? strerror(-err) :
			nvme_status_to_string(err, false));
		return 0;
	}
	strncpy(item->dev, dev, sizeof(item->dev) - 1);

	return 1;
}

static int netapp_ontapdevices_get_info(int fd, struct ontapdevice_info *item,
		const char *dev)
{
	int err;
	void *nsdescs;

	err = nvme_identify_ctrl(fd, &item->ctrl);
	if (err) {
		fprintf(stderr, "Identify Controller failed to %s (%s)\n",
			dev, err < 0 ? strerror(-err) :
			nvme_status_to_string(err, false));
		return 0;
	}

	if (strncmp("NetApp ONTAP Controller", item->ctrl.mn, 23) != 0)
		/* not the right controller model */
		return 0;

	err = nvme_get_nsid(fd, &item->nsid);

	err = nvme_identify_ns(fd, item->nsid, &item->ns);
	if (err) {
		fprintf(stderr, "Unable to identify namespace for %s (%s)\n",
			dev, err < 0 ? strerror(-err) :
			nvme_status_to_string(err, false));
		return 0;
	}

	if (posix_memalign(&nsdescs, getpagesize(), 0x1000)) {
		fprintf(stderr, "Cannot allocate controller list payload\n");
		return 0;
	}

	err = nvme_identify_ns_descs(fd, item->nsid, nsdescs);
	if (err) {
		fprintf(stderr, "Unable to identify namespace descriptor for %s (%s)\n",
			dev, err < 0 ? strerror(-err) :
			nvme_status_to_string(err, false));
		free(nsdescs);
		return 0;
	}

	memcpy(item->uuid, nsdescs + sizeof(struct nvme_ns_id_desc), sizeof(item->uuid));
	free(nsdescs);

	err = nvme_get_ontap_c2_log(fd, item->nsid, item->log_data, ONTAP_C2_LOG_SIZE);
	if (err) {
		fprintf(stderr, "Unable to get log page data for %s (%s)\n",
			dev, err < 0 ? strerror(-err):
			nvme_status_to_string(err, false));
		return 0;
	}

	strncpy(item->dev, dev, sizeof(item->dev) - 1);

	return 1;
}

static int netapp_nvme_filter(const struct dirent *d)
{
	char path[264];
	struct stat bd;
	int ctrl, ns, partition;

	if (d->d_name[0] == '.')
		return 0;

	if (strstr(d->d_name, "nvme")) {
		snprintf(path, sizeof(path), "%s%s", dev_path, d->d_name);
		if (stat(path, &bd))
			return 0;
		if (sscanf(d->d_name, "nvme%dn%d", &ctrl, &ns) != 2)
			return 0;
		if (sscanf(d->d_name, "nvme%dn%dp%d", &ctrl, &ns, &partition) == 3)
			return 0;
		return 1;
	}
	return 0;
}

static int netapp_output_format(char *format)
{
	if (!format)
		return -EINVAL;
	if (!strcmp(format, "normal"))
		return NNORMAL;
	if (!strcmp(format, "json"))
		return NJSON;
	if (!strcmp(format, "column"))
		return NCOLUMN;
	return -EINVAL;
}

/* handler for 'nvme netapp smdevices' */
static int netapp_smdevices(int argc, char **argv, struct command *command,
		struct plugin *plugin)
{
	const char *desc = "Display information about E-Series volumes.";

	struct dirent **devices;
	int num, i, fd, ret, fmt;
	struct smdevice_info *smdevices;
	char path[264];
	int num_smdevices = 0;

	struct config {
		char *output_format;
	};

	struct config cfg = {
		.output_format = "normal",
	};

	OPT_ARGS(opts) = {
		OPT_FMT("output-format", 'o', &cfg.output_format, "Output Format: normal|json|column"),
		OPT_END()
	};

	ret = argconfig_parse(argc, argv, desc, opts);
	if (ret < 0)
		return ret;

	fmt = netapp_output_format(cfg.output_format);
	if (fmt != NNORMAL && fmt != NCOLUMN && fmt != NJSON) {
		fprintf(stderr, "Unrecognized output format: %s\n", cfg.output_format);
		return -EINVAL;
	}

	num = scandir(dev_path, &devices, netapp_nvme_filter, alphasort);
	if (num <= 0) {
		fprintf(stderr, "No NVMe devices detected.\n");
		return num;
	}

	smdevices = calloc(num, sizeof(*smdevices));
	if (!smdevices) {
		fprintf(stderr, "Unable to allocate memory for devices.\n");
		return ENOMEM;
	}

	for (i = 0; i < num; i++) {
		snprintf(path, sizeof(path), "%s%s", dev_path,
			devices[i]->d_name);
		fd = open(path, O_RDONLY);
		if (fd < 0) {
			fprintf(stderr, "Unable to open %s: %s\n", path,
				strerror(errno));
			continue;
		}

		num_smdevices += netapp_smdevices_get_info(fd,
						&smdevices[num_smdevices], path);
		close(fd);
	}

	if (num_smdevices)
		netapp_smdevices_print(smdevices, num_smdevices, fmt);

	for (i = 0; i < num; i++)
		free(devices[i]);
	free(devices);
	free(smdevices);
	return 0;
}

/* handler for 'nvme netapp ontapdevices' */
static int netapp_ontapdevices(int argc, char **argv, struct command *command,
		struct plugin *plugin)
{
	const char *desc = "Display information about ONTAP devices.";
	struct dirent **devices;
	int num, i, fd, ret, fmt;
	struct ontapdevice_info *ontapdevices;
	char path[264];
	int num_ontapdevices = 0;

	struct config {
		char *output_format;
	};

	struct config cfg = {
		.output_format = "normal",
	};

	OPT_ARGS(opts) = {
		OPT_FMT("output-format", 'o', &cfg.output_format, "Output Format: normal|json|column"),
		OPT_END()
	};

	ret = argconfig_parse(argc, argv, desc, opts);
	if (ret < 0)
		return ret;

	fmt = netapp_output_format(cfg.output_format);
	if (fmt != NNORMAL && fmt != NCOLUMN && fmt != NJSON) {
		fprintf(stderr, "Unrecognized output format: %s\n", cfg.output_format);
		return -EINVAL;
	}

	num = scandir(dev_path, &devices, netapp_nvme_filter, alphasort);
	if (num <= 0) {
		fprintf(stderr, "No NVMe devices detected.\n");
		return num;
	}

	ontapdevices = calloc(num, sizeof(*ontapdevices));
	if (!ontapdevices) {
		fprintf(stderr, "Unable to allocate memory for devices.\n");
		return -ENOMEM;
	}

	for (i = 0; i < num; i++) {
		snprintf(path, sizeof(path), "%s%s", dev_path,
				devices[i]->d_name);
		fd = open(path, O_RDONLY);
		if (fd < 0) {
			fprintf(stderr, "Unable to open %s: %s\n", path,
					strerror(errno));
			continue;
		}

		num_ontapdevices += netapp_ontapdevices_get_info(fd,
				&ontapdevices[num_ontapdevices], path);

		close(fd);
	}

	if (num_ontapdevices)
		netapp_ontapdevices_print(ontapdevices, num_ontapdevices, fmt);

	for (i = 0; i < num; i++)
		free(devices[i]);
	free(devices);
	free(ontapdevices);
	return 0;
}
  070701015D6C30000081A4000003E80000006400000001642C0FB5000001D7000000000000004A00000000000000000000002600000000nvme-cli/plugins/netapp/netapp-nvme.h /* SPDX-License-Identifier: GPL-2.0-or-later */
#undef CMD_INC_FILE
#define CMD_INC_FILE plugins/netapp/netapp-nvme

#if !defined(NETAPP_NVME) || defined(CMD_HEADER_MULTI_READ)
#define NETAPP_NVME

#include "cmd.h"

PLUGIN(NAME("netapp", "NetApp vendor specific extensions", NVME_VERSION),
	COMMAND_LIST(
		ENTRY("smdevices", "NetApp SMdevices", netapp_smdevices)
		ENTRY("ontapdevices", "NetApp ONTAPdevices", netapp_ontapdevices)
	)
);

#endif

#include "define_cmd.h"
 070701015D6C32000081A4000003E80000006400000001642C0FB500000503000000000000004A00000000000000000000002600000000nvme-cli/plugins/nvidia/nvidia-nvme.c // SPDX-License-Identifier: GPL-2.0-or-later
#include <fcntl.h>
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <inttypes.h>

#include "common.h"
#include "nvme.h"
#include "libnvme.h"
#include "plugin.h"

#define CREATE_CMD
#include "nvidia-nvme.h"

struct nvme_vu_id_ctrl_field {
	__u16		json_rpc_2_0_mjr;
	__u16		json_rpc_2_0_mnr;
	__u16		json_rpc_2_0_ter;
	__u8		reserved0[1018];
};

static void json_nvidia_id_ctrl(struct nvme_vu_id_ctrl_field *id,
		char *json_rpc_2_0_ver, struct json_object *root)
{
	json_object_add_value_string(root, "json_rpc_2_0_ver",
				     json_rpc_2_0_ver);
}

static void nvidia_id_ctrl(__u8 *vs, struct json_object *root)
{
	struct nvme_vu_id_ctrl_field *id = (struct nvme_vu_id_ctrl_field *)vs;
	char json_rpc_2_0_ver[16] = { 0 };

	snprintf(json_rpc_2_0_ver, sizeof(json_rpc_2_0_ver), "0x%04x%04x%04x",
		 le16_to_cpu(id->json_rpc_2_0_mjr),
		 le16_to_cpu(id->json_rpc_2_0_mnr),
		 le16_to_cpu(id->json_rpc_2_0_ter));

	if (root) {
		json_nvidia_id_ctrl(id, json_rpc_2_0_ver, root);
		return;
	}

	printf("json_rpc_2_0_ver : %s\n", json_rpc_2_0_ver);
}

static int id_ctrl(int argc, char **argv, struct command *cmd,
		struct plugin *plugin)
{
	return __id_ctrl(argc, argv, cmd, plugin, nvidia_id_ctrl);
}
 070701015D6C33000081A4000003E80000006400000001642C0FB500000195000000000000004A00000000000000000000002600000000nvme-cli/plugins/nvidia/nvidia-nvme.h /* SPDX-License-Identifier: GPL-2.0-or-later */
#undef CMD_INC_FILE
#define CMD_INC_FILE plugins/nvidia/nvidia-nvme

#if !defined(NVIDIA_NVME) || defined(CMD_HEADER_MULTI_READ)
#define NVIDIA_NVME

#include "cmd.h"

PLUGIN(NAME("nvidia", "NVIDIA vendor specific extensions", NVME_VERSION),
	COMMAND_LIST(
		ENTRY("id-ctrl", "Send NVMe Identify Controller", id_ctrl)
	)
);

#endif

#include "define_cmd.h"
   070701015D6E5B000081A4000003E80000006400000001642C0FB6000000A2000000000000004A00000000000000000000002100000000nvme-cli/plugins/ocp/meson.build  sources += [
  'plugins/ocp/ocp-utils.c',
  'plugins/ocp/ocp-nvme.c',
  'plugins/ocp/ocp-clear-fw-update-history.c',
  'plugins/ocp/ocp-smart-extended-log.c',
]

  070701015D6E5C000081A4000003E80000006400000001642C0FB600000225000000000000004A00000000000000000000003300000000nvme-cli/plugins/ocp/ocp-clear-fw-update-history.c    // SPDX-License-Identifier: GPL-2.0-or-later
/*
 * Copyright (c) 2022 Solidigm.
 *
 * Authors: haro.panosyan@solidigm.com
 *          leonardo.da.cunha@solidigm.com
 */

#include <unistd.h>
#include "ocp-utils.h"
#include "nvme-print.h"

static const __u8 OCP_FID_CLEAR_FW_ACTIVATION_HISTORY = 0xC1;

int ocp_clear_fw_update_history(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	const char *desc = "OCP Clear Firmware Update History";

	return ocp_clear_feature(argc, argv, desc,
				 OCP_FID_CLEAR_FW_ACTIVATION_HISTORY);
}
   070701015D6E5D000081A4000003E80000006400000001642C0FB600000131000000000000004A00000000000000000000003300000000nvme-cli/plugins/ocp/ocp-clear-fw-update-history.h    /* SPDX-License-Identifier: GPL-2.0-or-later */
/*
 * Copyright (c) 2022 Solidigm.
 *
 * Authors: haro.panosyan@solidigm.com
 *          leonardo.da.cunha@solidigm.com
 */

int ocp_clear_fw_update_history(int argc, char **argv,
                                struct command *cmd, struct plugin *plugin);
   070701015D6E5E000081A4000003E80000006400000001642C0FB600004816000000000000004A00000000000000000000002000000000nvme-cli/plugins/ocp/ocp-nvme.c   // SPDX-License-Identifier: GPL-2.0-or-later
/* Copyright (c) 2022 Meta Platforms, Inc.
 *
 * Authors: Arthur Shau <arthurshau@fb.com>,
 *          Wei Zhang <wzhang@fb.com>,
 *          Venkat Ramesh <venkatraghavan@fb.com>
 */
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <inttypes.h>
#include <errno.h>
#include <limits.h>
#include <fcntl.h>
#include <unistd.h>
#include <time.h>

#include "common.h"
#include "nvme.h"
#include "libnvme.h"
#include "plugin.h"
#include "linux/types.h"
#include "util/types.h"
#include "nvme-print.h"

#include "ocp-smart-extended-log.h"
#include "ocp-clear-fw-update-history.h"

#define CREATE_CMD
#include "ocp-nvme.h"
#include "ocp-utils.h"

#define C0_ACTIVE_BUCKET_TIMER_INCREMENT	5
#define C0_ACTIVE_THRESHOLD_INCREMENT		5
#define C0_MINIMUM_WINDOW_INCREMENT		100

/* C3 Latency Monitor Log Page */
#define C3_LATENCY_MON_LOG_BUF_LEN		0x200
#define C3_LATENCY_MON_OPCODE			0xC3
#define C3_LATENCY_MON_VERSION			0x0001
#define C3_GUID_LENGTH				16
static __u8 lat_mon_guid[C3_GUID_LENGTH] = {
	0x92, 0x7a, 0xc0, 0x8c,
	0xd0, 0x84, 0x6c, 0x9c,
	0x70, 0x43, 0xe6, 0xd4,
	0x58, 0x5e, 0xd4, 0x85
};

#define READ		0
#define WRITE		1
#define TRIM		2
#define RESERVED	3

struct __attribute__((__packed__)) ssd_latency_monitor_log {
	__u8	feature_status;			/* 0x00 */
	__u8	rsvd1;				/* 0x01 */
	__le16	active_bucket_timer;		/* 0x02 */
	__le16	active_bucket_timer_threshold;	/* 0x04 */
	__u8	active_threshold_a;		/* 0x06 */
	__u8	active_threshold_b;		/* 0x07 */
	__u8	active_threshold_c;		/* 0x08 */
	__u8	active_threshold_d;		/* 0x09 */
	__le16	active_latency_config;		/* 0x0A */
	__u8	active_latency_min_window;	/* 0x0C */
	__u8	rsvd2[0x13];			/* 0x0D */

	__le32	active_bucket_counter[4][4];	/* 0x20 - 0x5F */
	__le64	active_latency_timestamp[4][3];	/* 0x60 - 0xBF */
	__le16	active_measured_latency[4][3];	/* 0xC0 - 0xD7 */
	__le16	active_latency_stamp_units;	/* 0xD8 */
	__u8	rsvd3[0x16];			/* 0xDA */

	__le32	static_bucket_counter[4][4];	/* 0x0F0 - 0x12F */
	__le64	static_latency_timestamp[4][3];	/* 0x130 - 0x18F */
	__le16	static_measured_latency[4][3];	/* 0x190 - 0x1A7 */
	__le16	static_latency_stamp_units;	/* 0x1A8 */
	__u8	rsvd4[0x16];			/* 0x1AA */

	__le16	debug_log_trigger_enable;	/* 0x1C0 */
	__le16	debug_log_measured_latency;	/* 0x1C2 */
	__le64	debug_log_latency_stamp;	/* 0x1C4 */
	__le16	debug_log_ptr;			/* 0x1CC */
	__le16	debug_log_counter_trigger;	/* 0x1CE */
	__u8	debug_log_stamp_units;		/* 0x1D0 */
	__u8	rsvd5[0x1D];			/* 0x1D1 */

	__le16	log_page_version;		/* 0x1EE */
	__u8	log_page_guid[0x10];		/* 0x1F0 */
};

static const __u8 OCP_FID_CLEAR_PCIE_CORRECTABLE_ERROR_COUNTERS = 0xC3;

static int convert_ts(time_t time, char *ts_buf)
{
	struct tm gmTimeInfo;
	time_t time_Human, time_ms;
	char buf[80];

	time_Human = time/1000;
	time_ms = time % 1000;

	gmtime_r((const time_t *)&time_Human, &gmTimeInfo);

	strftime(buf, sizeof(buf), "%Y-%m-%d %H:%M:%S", &gmTimeInfo);
	sprintf(ts_buf, "%s.%03ld GMT", buf, time_ms);

	return 0;
}

static int ocp_print_C3_log_normal(struct nvme_dev *dev,
				   struct ssd_latency_monitor_log *log_data)
{
	char ts_buf[128];
	int i, j;
	int pos = 0;

	printf("-Latency Monitor/C3 Log Page Data-\n");
	printf("  Controller   :  %s\n", dev->name);
	printf("  Feature Status                     0x%x\n",
	       log_data->feature_status);
	printf("  Active Bucket Timer                %d min\n",
	       C0_ACTIVE_BUCKET_TIMER_INCREMENT *
	       le16_to_cpu(log_data->active_bucket_timer));
	printf("  Active Bucket Timer Threshold      %d min\n",
	       C0_ACTIVE_BUCKET_TIMER_INCREMENT *
	       le16_to_cpu(log_data->active_bucket_timer_threshold));
	printf("  Active Threshold A                 %d ms\n",
	       C0_ACTIVE_THRESHOLD_INCREMENT *
	       le16_to_cpu(log_data->active_threshold_a+1));
	printf("  Active Threshold B                 %d ms\n",
	       C0_ACTIVE_THRESHOLD_INCREMENT *
	       le16_to_cpu(log_data->active_threshold_b+1));
	printf("  Active Threshold C                 %d ms\n",
	       C0_ACTIVE_THRESHOLD_INCREMENT *
	       le16_to_cpu(log_data->active_threshold_c+1));
	printf("  Active Threshold D                 %d ms\n",
	       C0_ACTIVE_THRESHOLD_INCREMENT *
	       le16_to_cpu(log_data->active_threshold_d+1));
	printf("  Active Latency Minimum Window      %d ms\n",
	       C0_MINIMUM_WINDOW_INCREMENT *
	       le16_to_cpu(log_data->active_latency_min_window));
	printf("  Active Latency Stamp Units         %d\n",
	       le16_to_cpu(log_data->active_latency_stamp_units));
	printf("  Static Latency Stamp Units         %d\n",
	       le16_to_cpu(log_data->static_latency_stamp_units));
	printf("  Debug Log Trigger Enable           %d\n",
	       le16_to_cpu(log_data->debug_log_trigger_enable));

	printf("                                                            Read                           Write                 Deallocate/Trim \n");
	for (i = 0; i <= 3; i++) {
		printf("  Active Latency Mode: Bucket %d      %27d     %27d     %27d\n",
		       i,
		       log_data->active_latency_config & (1 << pos),
		       log_data->active_latency_config & (1 << pos),
		       log_data->active_latency_config & (1 << pos));
	}
	printf("\n");

	for (i = 0; i <= 3; i++) {
		printf("  Active Bucket Counter: Bucket %d    %27d     %27d     %27d \n",
		       i,
		       le32_to_cpu(log_data->active_bucket_counter[i][READ]),
		       le32_to_cpu(log_data->active_bucket_counter[i][WRITE]),
		       le32_to_cpu(log_data->active_bucket_counter[i][TRIM]));
	}

	for (i = 0; i <= 3; i++) {
		printf("  Active Measured Latency: Bucket %d  %27d ms  %27d ms  %27d ms\n",
		       i,
		       le16_to_cpu(log_data->active_measured_latency[i][READ]),
		       le16_to_cpu(log_data->active_measured_latency[i][WRITE]),
		       le16_to_cpu(log_data->active_measured_latency[i][TRIM]));
	}

	for (i = 0; i <= 3; i++) {
		printf("  Active Latency Time Stamp: Bucket %d    ", i);
		for (j = 0; j <= 2; j++) {
			if (le64_to_cpu(log_data->active_latency_timestamp[i][j]) == -1)
				printf("                    N/A         ");
			else {
				convert_ts(le64_to_cpu(log_data->active_latency_timestamp[i][j]), ts_buf);
				printf("%s     ", ts_buf);
			}
		}
		printf("\n");
	}

	for (i = 0; i <= 3; i++) {
		printf("  Static Bucket Counter: Bucket %d    %27d     %27d     %27d\n",
		       i,
		       le32_to_cpu(log_data->static_bucket_counter[i][READ]),
		       le32_to_cpu(log_data->static_bucket_counter[i][WRITE]),
		       le32_to_cpu(log_data->static_bucket_counter[i][TRIM]));
	}

	for (i = 0; i <= 3; i++) {
		printf("  Static Measured Latency: Bucket %d  %27d ms  %27d ms  %27d ms \n",
		       i,
		       le16_to_cpu(log_data->static_measured_latency[i][READ]),
		       le16_to_cpu(log_data->static_measured_latency[i][WRITE]),
		       le16_to_cpu(log_data->static_measured_latency[i][TRIM]));
	}

	for (i = 0; i <= 3; i++) {
		printf("  Static Latency Time Stamp: Bucket %d    ", i);
		for (j = 0; j <= 2; j++) {
			if (le64_to_cpu(log_data->static_latency_timestamp[i][j]) == -1)
				printf("                    N/A         ");
			else {
				convert_ts(le64_to_cpu(log_data->static_latency_timestamp[i][j]), ts_buf);
				printf("%s     ", ts_buf);
			}
		}
		printf("\n");
	}

	return 0;
}

static void ocp_print_C3_log_json(struct ssd_latency_monitor_log *log_data)
{
	struct json_object *root;
	char ts_buf[128];
	char buf[128];
	int i, j;
	int pos = 0;
	char *operation[3] = {"Read", "Write", "Trim"};

	root = json_create_object();

	json_object_add_value_uint(root, "Feature Status",
		log_data->feature_status);
	json_object_add_value_uint(root, "Active Bucket Timer",
		C0_ACTIVE_BUCKET_TIMER_INCREMENT *
		le16_to_cpu(log_data->active_bucket_timer));
	json_object_add_value_uint(root, "Active Bucket Timer Threshold",
		C0_ACTIVE_BUCKET_TIMER_INCREMENT *
		le16_to_cpu(log_data->active_bucket_timer_threshold));
	json_object_add_value_uint(root, "Active Threshold A",
		C0_ACTIVE_THRESHOLD_INCREMENT *
		le16_to_cpu(log_data->active_threshold_a + 1));
	json_object_add_value_uint(root, "Active Threshold B",
		C0_ACTIVE_THRESHOLD_INCREMENT *
		le16_to_cpu(log_data->active_threshold_b + 1));
	json_object_add_value_uint(root, "Active Threshold C",
		C0_ACTIVE_THRESHOLD_INCREMENT *
		le16_to_cpu(log_data->active_threshold_c + 1));
	json_object_add_value_uint(root, "Active Threshold D",
		C0_ACTIVE_THRESHOLD_INCREMENT *
		le16_to_cpu(log_data->active_threshold_d + 1));
	json_object_add_value_uint(root, "Active Lantency Minimum Window",
		C0_MINIMUM_WINDOW_INCREMENT *
		le16_to_cpu(log_data->active_latency_min_window));
	json_object_add_value_uint(root, "Active Latency Stamp Units",
		le16_to_cpu(log_data->active_latency_stamp_units));
	json_object_add_value_uint(root, "Static Latency Stamp Units",
		le16_to_cpu(log_data->static_latency_stamp_units));
	json_object_add_value_uint(root, "Debug Log Trigger Enable",
		le16_to_cpu(log_data->debug_log_trigger_enable));

	for (i = 0; i <= 3; i++) {
		struct json_object *bucket;

		bucket = json_create_object();
		sprintf(buf, "Active Latency Mode: Bucket %d", i);
		for (j = 0; j <= 2; j++) {
			json_object_add_value_uint(bucket, operation[j],
						   log_data->active_latency_config & (1 << pos));
		}
		json_object_add_value_object(root, buf, bucket);
	}

	for (i = 0; i <= 3; i++) {
		struct json_object *bucket;

		bucket = json_create_object();
		sprintf(buf, "Active Bucket Counter: Bucket %d", i);
		for (j = 0; j <= 2; j++) {
			json_object_add_value_uint(bucket, operation[j],
				le32_to_cpu(log_data->active_bucket_counter[i][j]));
		}
		json_object_add_value_object(root, buf, bucket);
	}

	for (i = 0; i <= 3; i++) {
		struct json_object *bucket;

		bucket = json_create_object();
		sprintf(buf, "Active Measured Latency: Bucket %d", i);
		for (j = 0; j <= 2; j++) {
			json_object_add_value_uint(bucket, operation[j],
				le16_to_cpu(log_data->active_measured_latency[i][j]));
		}
		json_object_add_value_object(root, buf, bucket);
	}

	for (i = 0; i <= 3; i++) {
		struct json_object *bucket;

		bucket = json_create_object();
		sprintf(buf, "Active Latency Time Stamp: Bucket %d", i);
		for (j = 0; j <= 2; j++) {
			if (le64_to_cpu(log_data->active_latency_timestamp[i][j]) == -1)
				json_object_add_value_string(bucket, operation[j], "NA");
			else {
				convert_ts(le64_to_cpu(log_data->active_latency_timestamp[i][j]), ts_buf);
				json_object_add_value_string(bucket, operation[j], ts_buf);
			}
		}
		json_object_add_value_object(root, buf, bucket);
	}

	for (i = 0; i <= 3; i++) {
		struct json_object *bucket;

		bucket = json_create_object();
		sprintf(buf, "Static Bucket Counter: Bucket %d", i);
		for (j = 0; j <= 2; j++) {
			json_object_add_value_uint(bucket, operation[j],
				le32_to_cpu(log_data->static_bucket_counter[i][j]));
		}
		json_object_add_value_object(root, buf, bucket);
	}

	for (i = 0; i <= 3; i++) {
		struct json_object *bucket;

		bucket = json_create_object();
		sprintf(buf, "Static Measured Latency: Bucket %d", i);
		for (j = 0; j <= 2; j++) {
			json_object_add_value_uint(bucket, operation[j],
				le16_to_cpu(log_data->static_measured_latency[i][j]));
		}
		json_object_add_value_object(root, buf, bucket);
	}

	for (i = 0; i <= 3; i++) {
		struct json_object *bucket;

		bucket = json_create_object();
		sprintf(buf, "Static Latency Time Stamp: Bucket %d", i);
		for (j = 0; j <= 2; j++) {
			if (le64_to_cpu(log_data->static_latency_timestamp[i][j]) == -1)
				json_object_add_value_string(bucket, operation[j], "NA");
			else {
				convert_ts(le64_to_cpu(log_data->static_latency_timestamp[i][j]), ts_buf);
				json_object_add_value_string(bucket, operation[j], ts_buf);
			}
		}
		json_object_add_value_object(root, buf, bucket);
	}

	json_print_object(root, NULL);
	printf("\n");

	json_free_object(root);
}

static int get_c3_log_page(struct nvme_dev *dev, char *format)
{
	struct ssd_latency_monitor_log *log_data;
	int ret = 0;
	int fmt = -1;
	__u8 *data;
	int i;

	fmt = validate_output_format(format);
	if (fmt < 0) {
		fprintf(stderr, "ERROR : OCP : invalid output format\n");
		return fmt;
	}

	data = malloc(sizeof(__u8) * C3_LATENCY_MON_LOG_BUF_LEN);
	if (!data) {
		fprintf(stderr, "ERROR : OCP : malloc : %s\n", strerror(errno));
		return -1;
	}
	memset(data, 0, sizeof(__u8) * C3_LATENCY_MON_LOG_BUF_LEN);

	ret = nvme_get_log_simple(dev_fd(dev), C3_LATENCY_MON_OPCODE,
		C3_LATENCY_MON_LOG_BUF_LEN, data);

	if (strcmp(format, "json"))
		fprintf(stderr,
			"NVMe Status:%s(%x)\n",
			nvme_status_to_string(ret, false),
			ret);

	if (ret == 0) {
		log_data = (struct ssd_latency_monitor_log *)data;

		/* check log page version */
		if (log_data->log_page_version != C3_LATENCY_MON_VERSION) {
			fprintf(stderr,
				"ERROR : OCP : invalid latency monitor version\n");
			ret = -1;
			goto out;
		}

		/* check log page guid */
		/* Verify GUID matches */
		for (i = 0; i < 16; i++) {
			if (lat_mon_guid[i] != log_data->log_page_guid[i]) {
				int j;

				fprintf(stderr, "ERROR : OCP : Unknown GUID in C3 Log Page data\n");
				fprintf(stderr, "ERROR : OCP : Expected GUID: 0x");
				for (j = 0; j < 16; j++) {
					fprintf(stderr, "%x", lat_mon_guid[j]);
				}

				fprintf(stderr, "\nERROR : OCP : Actual GUID: 0x");
				for (j = 0; j < 16; j++) {
					fprintf(stderr, "%x", log_data->log_page_guid[j]);
				}
				fprintf(stderr, "\n");

				ret = -1;
				goto out;
			}
		}

		switch (fmt) {
		case NORMAL:
			ocp_print_C3_log_normal(dev, log_data);
			break;
		case JSON:
			ocp_print_C3_log_json(log_data);
			break;
		}
	} else {
		fprintf(stderr,
			"ERROR : OCP : Unable to read C3 data from buffer\n");
	}

out:
	free(data);
	return ret;
}

static int smart_add_log(int argc, char **argv, struct command *cmd,
			 struct plugin *plugin)
{
	return ocp_smart_add_log(argc, argv, cmd, plugin);
}

static int ocp_latency_monitor_log(int argc, char **argv,
				   struct command *command,
				   struct plugin *plugin)
{
	const char *desc = "Retrieve latency monitor log data.";
	struct nvme_dev *dev;
	int ret = 0;

	struct config {
		char *output_format;
	};

	struct config cfg = {
		.output_format = "normal",
	};

	OPT_ARGS(opts) = {
		OPT_FMT("output-format", 'o', &cfg.output_format,
			"output Format: normal|json"),
		OPT_END()
	};

	ret = parse_and_open(&dev, argc, argv, desc, opts);
	if (ret)
		return ret;

	ret = get_c3_log_page(dev, cfg.output_format);
	if (ret)
		fprintf(stderr,
			"ERROR : OCP : Failure reading the C3 Log Page, ret = %d\n",
			ret);

	dev_close(dev);
	return ret;
}

static int clear_fw_update_history(int argc, char **argv,
				   struct command *cmd, struct plugin *plugin)
{
	return ocp_clear_fw_update_history(argc, argv, cmd, plugin);
}

static const char *eol_plp_failure_mode_to_string(__u8 mode)
{
	switch (mode) {
	case 1:
		return "Read only mode (ROM)";
	case 2:
		return "Write through mode (WTM)";
	case 3:
		return "Normal mode";
	default:
		break;
	}

	return "Reserved";
}

static int eol_plp_failure_mode_get(struct nvme_dev *dev, const __u32 nsid,
				    const __u8 fid, __u8 sel)
{
	__u32 result;
	int err;

	struct nvme_get_features_args args = {
		.args_size	= sizeof(args),
		.fd		= dev_fd(dev),
		.fid		= fid,
		.nsid		= nsid,
		.sel		= sel,
		.cdw11		= 0,
		.uuidx		= 0,
		.data_len	= 0,
		.data		= NULL,
		.timeout	= NVME_DEFAULT_IOCTL_TIMEOUT,
		.result		= &result,
	};

	err = nvme_get_features(&args);
	if (!err) {
		printf("End of Life Behavior (feature: %#0*x): %#0*x (%s: %s)\n",
		       fid ? 4 : 2, fid, result ? 10 : 8, result,
		       nvme_select_to_string(sel),
		       eol_plp_failure_mode_to_string(result));
		if (sel == NVME_GET_FEATURES_SEL_SUPPORTED)
			nvme_show_select_result(result);
	} else {
		printf("Could not get feature: %#0*x.\n", fid ? 4 : 2, fid);
	}

	return err;
}

static int eol_plp_failure_mode_set(struct nvme_dev *dev, const __u32 nsid,
				    const __u8 fid, __u8 mode, bool save,
				    bool uuid)
{
	__u32 result;
	int err;
	int uuid_index = 0;

	if (uuid) {
		/* OCP 2.0 requires UUID index support */
		err = ocp_get_uuid_index(dev, &uuid_index);
		if (err || !uuid_index) {
			fprintf(stderr, "ERROR: No OCP UUID index found\n");
			return err;
		}
	}


	struct nvme_set_features_args args = {
		.args_size = sizeof(args),
		.fd = dev_fd(dev),
		.fid = fid,
		.nsid = nsid,
		.cdw11 = mode << 30,
		.cdw12 = 0,
		.save = save,
		.uuidx = uuid_index,
		.cdw15 = 0,
		.data_len = 0,
		.data = NULL,
		.timeout = NVME_DEFAULT_IOCTL_TIMEOUT,
		.result = &result,
	};

	err = nvme_set_features(&args);
	if (err > 0) {
		nvme_show_status(err);
	} else if (err < 0) {
		perror("Define EOL/PLP failure mode");
		fprintf(stderr, "Command failed while parsing.\n");
	} else {
		printf("Successfully set mode (feature: %#0*x): %#0*x (%s: %s).\n",
		       fid ? 4 : 2, fid, mode ? 10 : 8, mode,
		       save ? "Save" : "Not save",
		       eol_plp_failure_mode_to_string(mode));
	}

	return err;
}

static int eol_plp_failure_mode(int argc, char **argv, struct command *cmd,
				struct plugin *plugin)
{
	const char *desc = "Define EOL or PLP circuitry failure mode.\n"\
			   "No argument prints current mode.";
	const char *mode = "[0-3]: default/rom/wtm/normal";
	const char *save = "Specifies that the controller shall save the attribute";
	const char *sel = "[0-3,8]: current/default/saved/supported/changed";
	const __u32 nsid = 0;
	const __u8 fid = 0xc2;
	struct nvme_dev *dev;
	int err;

	struct config {
		__u8 mode;
		bool save;
		__u8 sel;
	};

	struct config cfg = {
		.mode = 0,
		.save = false,
		.sel = 0,
	};

	OPT_ARGS(opts) = {
		OPT_BYTE("mode", 'm', &cfg.mode, mode),
		OPT_FLAG("save", 's', &cfg.save, save),
		OPT_BYTE("sel", 'S', &cfg.sel, sel),
		OPT_FLAG("no-uuid", 'n', NULL,
			 "Skip UUID index search (UUID index not required for OCP 1.0)"),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		return err;

	if (argconfig_parse_seen(opts, "mode"))
		err = eol_plp_failure_mode_set(dev, nsid, fid, cfg.mode,
					       cfg.save,
					       !argconfig_parse_seen(opts, "no-uuid"));
	else
		err = eol_plp_failure_mode_get(dev, nsid, fid, cfg.sel);

	dev_close(dev);

	return err;
}

static int clear_pcie_corectable_error_counters(int argc, char **argv,
						struct command *cmd,
						struct plugin *plugin)
{
	const char *desc = "OCP Clear PCIe Correctable Error Counters";

	return ocp_clear_feature(argc, argv, desc,
				 OCP_FID_CLEAR_PCIE_CORRECTABLE_ERROR_COUNTERS);
}
  070701015D6E5F000081A4000003E80000006400000001642C0FB6000003E5000000000000004A00000000000000000000002000000000nvme-cli/plugins/ocp/ocp-nvme.h   /* SPDX-License-Identifier: GPL-2.0-or-later */
/* Copyright (c) 2022 Meta Platforms, Inc.
 *
 * Authors: Arthur Shau <arthurshau@fb.com>,
 *          Wei Zhang <wzhang@fb.com>,
 *          Venkat Ramesh <venkatraghavan@fb.com>
 */
#undef CMD_INC_FILE
#define CMD_INC_FILE plugins/ocp/ocp-nvme

#if !defined(OCP_NVME) || defined(CMD_HEADER_MULTI_READ)
#define OCP_NVME

#include "cmd.h"

PLUGIN(NAME("ocp", "OCP cloud SSD extensions", NVME_VERSION),
	COMMAND_LIST(
		ENTRY("smart-add-log", "Retrieve extended SMART Information", smart_add_log)
		ENTRY("latency-monitor-log", "Get Latency Monitor Log Page", ocp_latency_monitor_log)
		ENTRY("clear-fw-activate-history", "Clear firmware update history log", clear_fw_update_history)
		ENTRY("eol-plp-failure-mode", "Define EOL or PLP circuitry failure mode.", eol_plp_failure_mode)
		ENTRY("clear-pcie-correctable-error-counters", "Clear PCIe correctable error counters", clear_pcie_corectable_error_counters)
	)
);

#endif

#include "define_cmd.h"
   070701015D6E60000081A4000003E80000006400000001642C0FB600003750000000000000004A00000000000000000000002E00000000nvme-cli/plugins/ocp/ocp-smart-extended-log.c // SPDX-License-Identifier: GPL-2.0-or-later
/* Copyright (c) 2022 Meta Platforms, Inc.
 *
 * Authors: Arthur Shau <arthurshau@fb.com>,
 *          Wei Zhang <wzhang@fb.com>,
 *          Venkat Ramesh <venkatraghavan@fb.com>
 */

#include "ocp-smart-extended-log.h"

#include <errno.h>
#include <stdio.h>

#include "common.h"
#include "nvme-print.h"

/* C0 SCAO Log Page */
#define C0_SMART_CLOUD_ATTR_LEN			0x200
#define C0_SMART_CLOUD_ATTR_OPCODE		0xC0
#define C0_GUID_LENGTH				16

static __u8 scao_guid[C0_GUID_LENGTH] = {
	0xC5, 0xAF, 0x10, 0x28,
	0xEA, 0xBF, 0xF2, 0xA4,
	0x9C, 0x4F, 0x6F, 0x7C,
	0xC9, 0x14, 0xD5, 0xAF
};

typedef enum {
	SCAO_PMUW	= 0,	/* Physical media units written */
	SCAO_PMUR	= 16,	/* Physical media units read */
	SCAO_BUNBR	= 32,	/* Bad user nand blocks raw */
	SCAO_BUNBN	= 38,	/* Bad user nand blocks normalized */
	SCAO_BSNBR	= 40,	/* Bad system nand blocks raw */
	SCAO_BSNBN	= 46,	/* Bad system nand blocks normalized */
	SCAO_XRC	= 48,	/* XOR recovery count */
	SCAO_UREC	= 56,	/* Uncorrectable read error count */
	SCAO_SEEC	= 64,	/* Soft ecc error count */
	SCAO_EEDC	= 72,	/* End to end detected errors */
	SCAO_EECE	= 76,	/* End to end corrected errors */
	SCAO_SDPU	= 80,	/* System data percent used */
	SCAO_RFSC	= 81,	/* Refresh counts */
	SCAO_MXUDEC	= 88,	/* Max User data erase counts */
	SCAO_MNUDEC	= 92,	/* Min User data erase counts */
	SCAO_NTTE	= 96,	/* Number of Thermal throttling events */
	SCAO_CTS	= 97,	/* Current throttling status */
	SCAO_EVF	= 98,	/* Errata Version Field */
	SCAO_PVF	= 99,	/* Point Version Field */
	SCAO_MIVF	= 101,	/* Minor Version Field */
	SCAO_MAVF	= 103,	/* Major Version Field */
	SCAO_PCEC	= 104,	/* PCIe correctable error count */
	SCAO_ICS	= 112,	/* Incomplete shutdowns */
	SCAO_PFB	= 120,	/* Percent free blocks */
	SCAO_CPH	= 128,	/* Capacitor health */
	SCAO_NEV	= 130,  /* NVMe Errata Version */
	SCAO_UIO	= 136,	/* Unaligned I/O */
	SCAO_SVN	= 144,	/* Security Version Number */
	SCAO_NUSE	= 152,	/* NUSE - Namespace utilization */
	SCAO_PSC	= 160,	/* PLP start count */
	SCAO_EEST	= 176,	/* Endurance estimate */
	SCAO_PLRC	= 192,	/* PCIe Link Retraining Count */
	SCAO_PSCC	= 200,	/* Power State Change Count */
	SCAO_LPV	= 494,	/* Log page version */
	SCAO_LPG	= 496,	/* Log page GUID */
} SMART_CLOUD_ATTRIBUTE_OFFSETS;

static void ocp_print_C0_log_normal(void *data)
{
	uint16_t smart_log_ver = 0;
	__u8 *log_data = data;

	printf("SMART Cloud Attributes :-\n");

	printf("  Physical media units written -   	        %"PRIu64" %"PRIu64"\n",
	       (uint64_t)le64_to_cpu(*(uint64_t *)&log_data[SCAO_PMUW + 8] & 0xFFFFFFFFFFFFFFFF),
	       (uint64_t)le64_to_cpu(*(uint64_t *)&log_data[SCAO_PMUW] & 0xFFFFFFFFFFFFFFFF));
	printf("  Physical media units read    - 	        %"PRIu64" %"PRIu64"\n",
	       (uint64_t)le64_to_cpu(*(uint64_t *)&log_data[SCAO_PMUR + 8] & 0xFFFFFFFFFFFFFFFF),
	       (uint64_t)le64_to_cpu(*(uint64_t *)&log_data[SCAO_PMUR] & 0xFFFFFFFFFFFFFFFF));
	printf("  Bad user nand blocks - Raw			%"PRIu64"\n",
	       (uint64_t)le64_to_cpu(*(uint64_t *)&log_data[SCAO_BUNBR] & 0x0000FFFFFFFFFFFF));
	printf("  Bad user nand blocks - Normalized		%d\n",
	       (uint16_t)le16_to_cpu(*(uint16_t *)&log_data[SCAO_BUNBN]));
	printf("  Bad system nand blocks - Raw			%"PRIu64"\n",
	       (uint64_t)le64_to_cpu(*(uint64_t *)&log_data[SCAO_BSNBR] & 0x0000FFFFFFFFFFFF));
	printf("  Bad system nand blocks - Normalized		%d\n",
	       (uint16_t)le16_to_cpu(*(uint16_t *)&log_data[SCAO_BSNBN]));
	printf("  XOR recovery count				%"PRIu64"\n",
	       (uint64_t)le64_to_cpu(*(uint64_t *)&log_data[SCAO_XRC]));
	printf("  Uncorrectable read error count		%"PRIu64"\n",
	       (uint64_t)le64_to_cpu(*(uint64_t *)&log_data[SCAO_UREC]));
	printf("  Soft ecc error count				%"PRIu64"\n",
	       (uint64_t)le64_to_cpu(*(uint64_t *)&log_data[SCAO_SEEC]));
	printf("  End to end detected errors			%"PRIu32"\n",
	       (uint32_t)le32_to_cpu(*(uint32_t *)&log_data[SCAO_EEDC]));
	printf("  End to end corrected errors			%"PRIu32"\n",
	       (uint32_t)le32_to_cpu(*(uint32_t *)&log_data[SCAO_EECE]));
	printf("  System data percent used			%d\n",
	       (__u8)log_data[SCAO_SDPU]);
	printf("  Refresh counts				%"PRIu64"\n",
	       (uint64_t)(le64_to_cpu(*(uint64_t *)&log_data[SCAO_RFSC]) & 0x00FFFFFFFFFFFFFF));
	printf("  Max User data erase counts			%"PRIu32"\n",
	       (uint32_t)le32_to_cpu(*(uint32_t *)&log_data[SCAO_MXUDEC]));
	printf("  Min User data erase counts			%"PRIu32"\n",
	       (uint32_t)le32_to_cpu(*(uint32_t *)&log_data[SCAO_MNUDEC]));
	printf("  Number of Thermal throttling events		%d\n",
	       (__u8)log_data[SCAO_NTTE]);
	printf("  Current throttling status		  	0x%x\n",
	       (__u8)log_data[SCAO_CTS]);
	printf("  PCIe correctable error count			%"PRIu64"\n",
	       (uint64_t)le64_to_cpu(*(uint64_t *)&log_data[SCAO_PCEC]));
	printf("  Incomplete shutdowns				%"PRIu32"\n",
	       (uint32_t)le32_to_cpu(*(uint32_t *)&log_data[SCAO_ICS]));
	printf("  Percent free blocks				%d\n",
	       (__u8)log_data[SCAO_PFB]);
	printf("  Capacitor health				%"PRIu16"\n",
	       (uint16_t)le16_to_cpu(*(uint16_t *)&log_data[SCAO_CPH]));
	printf("  Unaligned I/O					%"PRIu64"\n",
	       (uint64_t)le64_to_cpu(*(uint64_t *)&log_data[SCAO_UIO]));
	printf("  Security Version Number			%"PRIu64"\n",
	       (uint64_t)le64_to_cpu(*(uint64_t *)&log_data[SCAO_SVN]));
	printf("  NUSE - Namespace utilization			%"PRIu64"\n",
	       (uint64_t)le64_to_cpu(*(uint64_t *)&log_data[SCAO_NUSE]));
	printf("  PLP start count				%s\n",
	       uint128_t_to_string(le128_to_cpu(&log_data[SCAO_PSC])));
	printf("  Endurance estimate				%s\n",
	       uint128_t_to_string(le128_to_cpu(&log_data[SCAO_EEST])));
	smart_log_ver = (uint16_t)le16_to_cpu(*(uint16_t *)&log_data[SCAO_LPV]);
	printf("  Log page version				%"PRIu16"\n", smart_log_ver);
	printf("  Log page GUID					0x");
	printf("%"PRIx64"%"PRIx64"\n", (uint64_t)le64_to_cpu(*(uint64_t *)&log_data[SCAO_LPG + 8]),
	       (uint64_t)le64_to_cpu(*(uint64_t *)&log_data[SCAO_LPG]));
	if (smart_log_ver > 2) {
		printf("  Errata Version Field                          %d\n",
		       (__u8)log_data[SCAO_EVF]);
		printf("  Point Version Field                           %"PRIu16"\n",
		       le16_to_cpu(*(uint16_t *)&log_data[SCAO_PVF]));
		printf("  Minor Version Field                           %"PRIu16"\n",
		       le16_to_cpu(*(uint16_t *)&log_data[SCAO_MIVF]));
		printf("  Major Version Field                           %d\n",
		       (__u8)log_data[SCAO_MAVF]);
		printf("  NVMe Errata Version				%d\n",
		       (__u8)log_data[SCAO_NEV]);
		printf("  PCIe Link Retraining Count			%"PRIu64"\n",
		       (uint64_t)le64_to_cpu(*(uint64_t *)&log_data[SCAO_PLRC]));
		printf("  Power State Change Count			%"PRIu64"\n",
		       le64_to_cpu(*(uint64_t *)&log_data[SCAO_PSCC]));
	}
	printf("\n");
}

static void ocp_print_C0_log_json(void *data)
{
	struct json_object *root;
	struct json_object *pmuw;
	struct json_object *pmur;
	uint16_t smart_log_ver = 0;
	__u8 *log_data = data;
	char guid[40];

	root = json_create_object();
	pmuw = json_create_object();
	pmur = json_create_object();

	json_object_add_value_uint64(pmuw, "hi",
		(uint64_t)le64_to_cpu(*(uint64_t *)&log_data[SCAO_PMUW + 8] & 0xFFFFFFFFFFFFFFFF));
	json_object_add_value_uint64(pmuw, "lo",
		(uint64_t)le64_to_cpu(*(uint64_t *)&log_data[SCAO_PMUW] & 0xFFFFFFFFFFFFFFFF));
	json_object_add_value_object(root, "Physical media units written", pmuw);
	json_object_add_value_uint64(pmur, "hi",
		(uint64_t)le64_to_cpu(*(uint64_t *)&log_data[SCAO_PMUR + 8] & 0xFFFFFFFFFFFFFFFF));
	json_object_add_value_uint64(pmur, "lo",
		(uint64_t)le64_to_cpu(*(uint64_t *)&log_data[SCAO_PMUR] & 0xFFFFFFFFFFFFFFFF));
	json_object_add_value_object(root, "Physical media units read", pmur);
	json_object_add_value_uint64(root, "Bad user nand blocks - Raw",
		(uint64_t)le64_to_cpu(*(uint64_t *)&log_data[SCAO_BUNBR] & 0x0000FFFFFFFFFFFF));
	json_object_add_value_uint(root, "Bad user nand blocks - Normalized",
		(uint16_t)le16_to_cpu(*(uint16_t *)&log_data[SCAO_BUNBN]));
	json_object_add_value_uint64(root, "Bad system nand blocks - Raw",
		(uint64_t)le64_to_cpu(*(uint64_t *)&log_data[SCAO_BSNBR] & 0x0000FFFFFFFFFFFF));
	json_object_add_value_uint(root, "Bad system nand blocks - Normalized",
		(uint16_t)le16_to_cpu(*(uint16_t *)&log_data[SCAO_BSNBN]));
	json_object_add_value_uint64(root, "XOR recovery count",
		(uint64_t)le64_to_cpu(*(uint64_t *)&log_data[SCAO_XRC]));
	json_object_add_value_uint64(root, "Uncorrectable read error count",
		(uint64_t)le64_to_cpu(*(uint64_t *)&log_data[SCAO_UREC]));
	json_object_add_value_uint64(root, "Soft ecc error count",
		(uint64_t)le64_to_cpu(*(uint64_t *)&log_data[SCAO_SEEC]));
	json_object_add_value_uint(root, "End to end detected errors",
		(uint32_t)le32_to_cpu(*(uint32_t *)&log_data[SCAO_EEDC]));
	json_object_add_value_uint(root, "End to end corrected errors",
		(uint32_t)le32_to_cpu(*(uint32_t *)&log_data[SCAO_EECE]));
	json_object_add_value_uint(root, "System data percent used",
		(__u8)log_data[SCAO_SDPU]);
	json_object_add_value_uint64(root, "Refresh counts",
		(uint64_t)(le64_to_cpu(*(uint64_t *)&log_data[SCAO_RFSC]) & 0x00FFFFFFFFFFFFFF));
	json_object_add_value_uint(root, "Max User data erase counts",
		(uint32_t)le32_to_cpu(*(uint32_t *)&log_data[SCAO_MXUDEC]));
	json_object_add_value_uint(root, "Min User data erase counts",
		(uint32_t)le32_to_cpu(*(uint32_t *)&log_data[SCAO_MNUDEC]));
	json_object_add_value_uint(root, "Number of Thermal throttling events",
		(__u8)log_data[SCAO_NTTE]);
	json_object_add_value_uint(root, "Current throttling status",
		(__u8)log_data[SCAO_CTS]);
	json_object_add_value_uint64(root, "PCIe correctable error count",
		(uint64_t)le64_to_cpu(*(uint64_t *)&log_data[SCAO_PCEC]));
	json_object_add_value_uint(root, "Incomplete shutdowns",
		(uint32_t)le32_to_cpu(*(uint32_t *)&log_data[SCAO_ICS]));
	json_object_add_value_uint(root, "Percent free blocks",
		(__u8)log_data[SCAO_PFB]);
	json_object_add_value_uint(root, "Capacitor health",
		(uint16_t)le16_to_cpu(*(uint16_t *)&log_data[SCAO_CPH]));
	json_object_add_value_uint64(root, "Unaligned I/O",
		(uint64_t)le64_to_cpu(*(uint64_t *)&log_data[SCAO_UIO]));
	json_object_add_value_uint64(root, "Security Version Number",
		(uint64_t)le64_to_cpu(*(uint64_t *)&log_data[SCAO_SVN]));
	json_object_add_value_uint64(root, "NUSE - Namespace utilization",
		(uint64_t)le64_to_cpu(*(uint64_t *)&log_data[SCAO_NUSE]));
	json_object_add_value_uint128(root, "PLP start count",
		le128_to_cpu(&log_data[SCAO_PSC]));
	json_object_add_value_uint128(root, "Endurance estimate",
		le128_to_cpu(&log_data[SCAO_EEST]));
	smart_log_ver = (uint16_t)le16_to_cpu(*(uint16_t *)&log_data[SCAO_LPV]);

	json_object_add_value_uint(root, "Log page version", smart_log_ver);

	memset((void *)guid, 0, 40);
	sprintf((char *)guid, "0x%"PRIx64"%"PRIx64"", (uint64_t)le64_to_cpu(*(uint64_t *)&log_data[SCAO_LPG + 8]),
		(uint64_t)le64_to_cpu(*(uint64_t *)&log_data[SCAO_LPG]));
	json_object_add_value_string(root, "Log page GUID", guid);

	if (smart_log_ver > 2) {
		json_object_add_value_uint(root, "Errata Version Field",
					   (__u8)log_data[SCAO_EVF]);
		json_object_add_value_uint(root, "Point Version Field",
					   le16_to_cpu(*(uint16_t *)&log_data[SCAO_PVF]));
		json_object_add_value_uint(root, "Minor Version Field",
					   le16_to_cpu(*(uint16_t *)&log_data[SCAO_MIVF]));
		json_object_add_value_uint(root, "Major Version Field",
					   (__u8)log_data[SCAO_MAVF]);
		json_object_add_value_uint(root, "NVMe Errata Version",
					   (__u8)log_data[SCAO_NEV]);
		json_object_add_value_uint(root, "PCIe Link Retraining Count",
					   (uint64_t)le64_to_cpu(*(uint64_t *)&log_data[SCAO_PLRC]));
		json_object_add_value_uint(root, "Power State Change Count",
					   le64_to_cpu(*(uint64_t *)&log_data[SCAO_PSCC]));
	}
	json_print_object(root, NULL);
	printf("\n");
	json_free_object(root);
}

static int get_c0_log_page(int fd, char *format)
{
	__u8 *data;
	int i;
	int ret = 0;
	int fmt = -1;

	fmt = validate_output_format(format);
	if (fmt < 0) {
		fprintf(stderr, "ERROR : OCP : invalid output format\n");
		return fmt;
	}

	data = malloc(sizeof(__u8) * C0_SMART_CLOUD_ATTR_LEN);
	if (!data) {
		fprintf(stderr, "ERROR : OCP : malloc : %s\n", strerror(errno));
		return -1;
	}
	memset(data, 0, sizeof(__u8) * C0_SMART_CLOUD_ATTR_LEN);

	ret = nvme_get_log_simple(fd, C0_SMART_CLOUD_ATTR_OPCODE,
		C0_SMART_CLOUD_ATTR_LEN, data);

	if (strcmp(format, "json"))
		fprintf(stderr, "NVMe Status:%s(%x)\n",
			nvme_status_to_string(ret, false), ret);

	if (ret == 0) {
		/* check log page guid */
		/* Verify GUID matches */
		for (i = 0; i < 16; i++) {
			if (scao_guid[i] != data[SCAO_LPG + i])	{
				int j;

				fprintf(stderr, "ERROR : OCP : Unknown GUID in C0 Log Page data\n");
				fprintf(stderr, "ERROR : OCP : Expected GUID:  0x");
				for (j = 0; j < 16; j++) {
					fprintf(stderr, "%x", scao_guid[j]);
				}

				fprintf(stderr, "\nERROR : OCP : Actual GUID:    0x");
				for (j = 0; j < 16; j++) {
					fprintf(stderr, "%x", data[SCAO_LPG + j]);
				}
				fprintf(stderr, "\n");

				ret = -1;
				goto out;
			}
		}

		/* print the data */
		switch (fmt) {
		case NORMAL:
			ocp_print_C0_log_normal(data);
			break;
		case JSON:
			ocp_print_C0_log_json(data);
			break;
		}
	} else {
		fprintf(stderr, "ERROR : OCP : Unable to read C0 data from buffer\n");
	}

out:
	free(data);
	return ret;
}

int ocp_smart_add_log(int argc, char **argv, struct command *cmd,
			     struct plugin *plugin)
{
	const char *desc = "Retrieve the extended SMART health data.";
	struct nvme_dev *dev;
	int ret = 0;

	struct config {
		char *output_format;
	};

	struct config cfg = {
		.output_format = "normal",
	};

	OPT_ARGS(opts) = {
		OPT_FMT("output-format", 'o', &cfg.output_format, "output Format: normal|json"),
		OPT_END()
	};

	ret = parse_and_open(&dev, argc, argv, desc, opts);
	if (ret)
		return ret;

	ret = get_c0_log_page(dev_fd(dev), cfg.output_format);
	if (ret)
		fprintf(stderr, "ERROR : OCP : Failure reading the C0 Log Page, ret = %d\n",
			ret);
	dev_close(dev);
	return ret;
}
070701015D6E61000081A4000003E80000006400000001642C0FB6000001AF000000000000004A00000000000000000000002E00000000nvme-cli/plugins/ocp/ocp-smart-extended-log.h /* SPDX-License-Identifier: GPL-2.0-or-later */
/* Copyright (c) 2022 Meta Platforms, Inc.
 *
 * Authors: Arthur Shau <arthurshau@fb.com>,
 *          Wei Zhang <wzhang@fb.com>,
 *          Venkat Ramesh <venkatraghavan@fb.com>
 */

#ifndef OCP_SMART_EXTENDED_LOG_H
#define OCP_SMART_EXTENDED_LOG_H

struct command;
struct plugin;

int ocp_smart_add_log(int argc, char **argv, struct command *cmd,
	struct plugin *plugin);

#endif
 070701015D6E62000081A4000003E80000006400000001642C0FB6000007BE000000000000004A00000000000000000000002100000000nvme-cli/plugins/ocp/ocp-utils.c  // SPDX-License-Identifier: GPL-2.0-or-later
/*
 * Copyright (c) 2022 Solidigm.
 *
 * Author: leonardo.da.cunha@solidigm.com
 */

#include <unistd.h>
#include "ocp-utils.h"
#include "nvme-print.h"

const unsigned char ocp_uuid[NVME_UUID_LEN] = {
	0xc1, 0x94, 0xd5, 0x5b, 0xe0, 0x94, 0x47, 0x94, 0xa2, 0x1d,
	0x29, 0x99, 0x8f, 0x56, 0xbe, 0x6f };

int ocp_get_uuid_index(struct nvme_dev *dev, int *index)
{
	struct nvme_id_uuid_list uuid_list;
	int err = nvme_identify_uuid(dev_fd(dev), &uuid_list);

	*index = 0;
	if (err)
		return err;

	for (int i = 0; i < NVME_ID_UUID_LIST_MAX; i++) {
		if (memcmp(ocp_uuid, &uuid_list.entry[i].uuid, NVME_UUID_LEN) == 0) {
			*index = i + 1;
			break;
		}
	}
	return err;
}

int ocp_clear_feature(int argc, char **argv, const char *desc, const __u8 fid)
{
	__u32 result = 0;
	__u32 clear = 1 << 31;
	struct nvme_dev *dev;
	int uuid_index = 0;
	bool uuid = true;
	int err;

	OPT_ARGS(opts) = {
		OPT_FLAG("no-uuid", 'n', NULL,
			 "Skip UUID index search (UUID index not required for OCP 1.0)"),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		return err;

	if (opts[0].seen)
		uuid = false;

	if (uuid) {
		/* OCP 2.0 requires UUID index support */
		err = ocp_get_uuid_index(dev, &uuid_index);
		if (err || !uuid_index) {
			fprintf(stderr, "ERROR: No OCP UUID index found\n");
			goto close_dev;
		}
	}

	struct nvme_set_features_args args = {
		.result = &result,
		.data = NULL,
		.args_size = sizeof(args),
		.fd = dev_fd(dev),
		.timeout = NVME_DEFAULT_IOCTL_TIMEOUT,
		.nsid = 0,
		.cdw11 = clear,
		.cdw12 = 0,
		.cdw13 = 0,
		.cdw15 = 0,
		.data_len = 0,
		.save = 0,
		.uuidx = uuid_index,
		.fid = fid,
	};

	err = nvme_set_features(&args);

	if (err == 0)
		printf("Success : %s\n", desc);
	else if (err > 0)
		nvme_show_status(err);
	else
		printf("Fail : %s\n", desc);
close_dev:
	/* Redundant close() to make static code analysis happy */
	close(dev->direct.fd);
	dev_close(dev);
	return err;
}
  070701015D6E63000081A4000003E80000006400000001642C0FB60000023B000000000000004A00000000000000000000002100000000nvme-cli/plugins/ocp/ocp-utils.h  /* SPDX-License-Identifier: GPL-2.0-or-later */
/*
 * Copyright (c) 2022 Solidigm.
 *
 * Author: leonardo.da.cunha@solidigm.com
 */

#include "nvme.h"

/**
 * ocp_get_uuid_index() - Get OCP UUID index
 * @dev:	nvme device
 * @index:	integer ponter to here to save the index
 * @result:	The command completion result from CQE dword0
 *
 * Return: Zero if nvme device has UUID list log page, or result of get uuid list otherwise.
 */
int ocp_get_uuid_index(struct nvme_dev *dev, int *index);

int ocp_clear_feature(int argc, char **argv, const char *desc, const __u8 fid);
 070701015D6C3D000081A4000003E80000006400000001642C0FB500009919000000000000004A00000000000000000000002600000000nvme-cli/plugins/scaleflux/sfx-nvme.c // SPDX-License-Identifier: GPL-2.0-or-later
#include <fcntl.h>
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <linux/fs.h>
#include <inttypes.h>
#include <asm/byteorder.h>
#include <sys/sysinfo.h>
#include <sys/stat.h>
#include <unistd.h>

#include "common.h"
#include "nvme.h"
#include "libnvme.h"
#include "plugin.h"
#include "linux/types.h"
#include "nvme-print.h"

#define CREATE_CMD
#include "sfx-nvme.h"

#define SFX_PAGE_SHIFT						12
#define SECTOR_SHIFT						9

#define SFX_GET_FREESPACE			_IOWR('N', 0x240, struct sfx_freespace_ctx)
#define NVME_IOCTL_CLR_CARD			_IO('N', 0x47)

#define IDEMA_CAP(exp_GB)			(((__u64)exp_GB - 50ULL) * 1953504ULL + 97696368ULL)
#define IDEMA_CAP2GB(exp_sector)		(((__u64)exp_sector - 97696368ULL) / 1953504ULL + 50ULL)

#define VANDA_MAJOR_IDX		0
#define VANDA_MINOR_IDX		0

#define MYRTLE_MAJOR_IDX        4
#define MYRTLE_MINOR_IDX        1

enum {
	SFX_LOG_LATENCY_READ_STATS	= 0xc1,
	SFX_LOG_SMART			= 0xc2,
	SFX_LOG_LATENCY_WRITE_STATS	= 0xc3,
	SFX_LOG_QUAL			= 0xc4,
	SFX_LOG_MISMATCHLBA		= 0xc5,
	SFX_LOG_MEDIA			= 0xc6,
	SFX_LOG_BBT			= 0xc7,
	SFX_LOG_IDENTIFY		= 0xcc,
	SFX_FEAT_ATOMIC			= 0x01,
	SFX_FEAT_UP_P_CAP		= 0xac,
	SFX_FEAT_CLR_CARD		= 0xdc,
};

enum sfx_nvme_admin_opcode {
	nvme_admin_query_cap_info	= 0xd3,
	nvme_admin_change_cap		= 0xd4,
	nvme_admin_sfx_set_features	= 0xd5,
	nvme_admin_sfx_get_features	= 0xd6,
};

struct sfx_freespace_ctx
{
	__u64 free_space;
	__u64 phy_cap;		/* physical capacity, in unit of sector */
	__u64 phy_space;	/* physical space considering OP, in unit of sector */
	__u64 user_space;	/* user required space, in unit of sector*/
	__u64 hw_used;		/* hw space used in 4K */
	__u64 app_written;	/* app data written in 4K */
	__u64 out_of_space;
};

struct nvme_capacity_info {
	__u64 lba_sec_sz;
	__u64 phy_sec_sz;
	__u64 used_space;
	__u64 free_space;
};

struct  __attribute__((packed)) nvme_additional_smart_log_item {
	__u8			key;
	__u8			_kp[2];
	__u8			norm;
	__u8			_np;
	union __attribute__((packed)) {
		__u8		raw[6];
		struct __attribute__((packed))  wear_level {
			__le16	min;
			__le16	max;
			__le16	avg;
		} wear_level;
		struct __attribute__((packed)) thermal_throttle {
			__u8	pct;
			__u32	count;
		} thermal_throttle;
	} ;
	__u8			_rp;
} ;

struct nvme_additional_smart_log {
	struct nvme_additional_smart_log_item	 program_fail_cnt;
	struct nvme_additional_smart_log_item	 erase_fail_cnt;
	struct nvme_additional_smart_log_item	 wear_leveling_cnt;
	struct nvme_additional_smart_log_item	 e2e_err_cnt;
	struct nvme_additional_smart_log_item	 crc_err_cnt;
	struct nvme_additional_smart_log_item	 timed_workload_media_wear;
	struct nvme_additional_smart_log_item	 timed_workload_host_reads;
	struct nvme_additional_smart_log_item	 timed_workload_timer;
	struct nvme_additional_smart_log_item	 thermal_throttle_status;
	struct nvme_additional_smart_log_item	 retry_buffer_overflow_cnt;
	struct nvme_additional_smart_log_item	 pll_lock_loss_cnt;
	struct nvme_additional_smart_log_item	 nand_bytes_written;
	struct nvme_additional_smart_log_item	 host_bytes_written;
	struct nvme_additional_smart_log_item	 raid_recover_cnt; // errors which can be recovered by RAID
	struct nvme_additional_smart_log_item	 prog_timeout_cnt;
	struct nvme_additional_smart_log_item	 erase_timeout_cnt;
	struct nvme_additional_smart_log_item	 read_timeout_cnt;
	struct nvme_additional_smart_log_item	 read_ecc_cnt;//retry cnt
	struct nvme_additional_smart_log_item    non_media_crc_err_cnt;
	struct nvme_additional_smart_log_item    compression_path_err_cnt;
	struct nvme_additional_smart_log_item    out_of_space_flag;
	struct nvme_additional_smart_log_item    physical_usage_ratio;
	struct nvme_additional_smart_log_item    grown_bb; //grown bad block
};

int nvme_query_cap(int fd, __u32 nsid, __u32 data_len, void *data)
{
	 int rc = 0;
	 struct nvme_passthru_cmd cmd = {
        .opcode          = nvme_admin_query_cap_info,
        .nsid            = nsid,
        .addr            = (__u64)(uintptr_t) data,
        .data_len        = data_len,
        };

	 rc = ioctl(fd, SFX_GET_FREESPACE, data);
	 return rc == 0 ? 0 : nvme_submit_admin_passthru(fd, &cmd, NULL);
}
int nvme_change_cap(int fd, __u32 nsid, __u64 capacity)
{
	struct nvme_passthru_cmd cmd = {
	.opcode		 = nvme_admin_change_cap,
	.nsid		 = nsid,
	.cdw10		 = (capacity & 0xffffffff),
	.cdw11		 = (capacity >> 32),
	};

	return nvme_submit_admin_passthru(fd, &cmd, NULL);
}

int nvme_sfx_set_features(int fd, __u32 nsid, __u32 fid, __u32 value)
{
	struct nvme_passthru_cmd cmd = {
	.opcode		 = nvme_admin_sfx_set_features,
	.nsid		 = nsid,
	.cdw10		 = fid,
	.cdw11		 = value,
	};

	return nvme_submit_admin_passthru(fd, &cmd, NULL);
}

int nvme_sfx_get_features(int fd, __u32 nsid, __u32 fid, __u32 *result)
{
	int err = 0;
	struct nvme_passthru_cmd cmd = {
	.opcode		 = nvme_admin_sfx_get_features,
	.nsid		 = nsid,
	.cdw10		 = fid,
	};

	err = nvme_submit_admin_passthru(fd, &cmd, NULL);
	if (!err && result) {
		*result = cmd.result;
	}

	return err;
}

static void show_sfx_smart_log_jsn(struct nvme_additional_smart_log *smart,
		unsigned int nsid, const char *devname)
{
	struct json_object *root, *entry_stats, *dev_stats, *multi;

	root = json_create_object();
	json_object_add_value_string(root, "Intel Smart log", devname);

	dev_stats = json_create_object();

	entry_stats = json_create_object();
	json_object_add_value_int(entry_stats, "normalized", smart->program_fail_cnt.norm);
	json_object_add_value_int(entry_stats, "raw", int48_to_long(smart->program_fail_cnt.raw));
	json_object_add_value_object(dev_stats, "program_fail_count", entry_stats);

	entry_stats = json_create_object();
	json_object_add_value_int(entry_stats, "normalized", smart->erase_fail_cnt.norm);
	json_object_add_value_int(entry_stats, "raw", int48_to_long(smart->erase_fail_cnt.raw));
	json_object_add_value_object(dev_stats, "erase_fail_count", entry_stats);

	entry_stats = json_create_object();
	json_object_add_value_int(entry_stats, "normalized", smart->wear_leveling_cnt.norm);
	multi = json_create_object();
	json_object_add_value_int(multi, "min", le16_to_cpu(smart->wear_leveling_cnt.wear_level.min));
	json_object_add_value_int(multi, "max", le16_to_cpu(smart->wear_leveling_cnt.wear_level.max));
	json_object_add_value_int(multi, "avg", le16_to_cpu(smart->wear_leveling_cnt.wear_level.avg));
	json_object_add_value_object(entry_stats, "raw", multi);
	json_object_add_value_object(dev_stats, "wear_leveling", entry_stats);

	entry_stats = json_create_object();
	json_object_add_value_int(entry_stats, "normalized", smart->e2e_err_cnt.norm);
	json_object_add_value_int(entry_stats, "raw", int48_to_long(smart->e2e_err_cnt.raw));
	json_object_add_value_object(dev_stats, "end_to_end_error_detection_count", entry_stats);

	entry_stats = json_create_object();
	json_object_add_value_int(entry_stats, "normalized", smart->crc_err_cnt.norm);
	json_object_add_value_int(entry_stats, "raw", int48_to_long(smart->crc_err_cnt.raw));
	json_object_add_value_object(dev_stats, "crc_error_count", entry_stats);

	entry_stats = json_create_object();
	json_object_add_value_int(entry_stats, "normalized", smart->timed_workload_media_wear.norm);
	json_object_add_value_float(entry_stats, "raw", ((float)int48_to_long(smart->timed_workload_media_wear.raw)) / 1024);
	json_object_add_value_object(dev_stats, "timed_workload_media_wear", entry_stats);

	entry_stats = json_create_object();
	json_object_add_value_int(entry_stats, "normalized", smart->timed_workload_host_reads.norm);
	json_object_add_value_int(entry_stats, "raw", int48_to_long(smart->timed_workload_host_reads.raw));
	json_object_add_value_object(dev_stats, "timed_workload_host_reads", entry_stats);

	entry_stats = json_create_object();
	json_object_add_value_int(entry_stats, "normalized", smart->timed_workload_timer.norm);
	json_object_add_value_int(entry_stats, "raw", int48_to_long(smart->timed_workload_timer.raw));
	json_object_add_value_object(dev_stats, "timed_workload_timer", entry_stats);

	entry_stats = json_create_object();
	json_object_add_value_int(entry_stats, "normalized", smart->thermal_throttle_status.norm);
	multi = json_create_object();
	json_object_add_value_int(multi, "pct", smart->thermal_throttle_status.thermal_throttle.pct);
	json_object_add_value_int(multi, "cnt", smart->thermal_throttle_status.thermal_throttle.count);
	json_object_add_value_object(entry_stats, "raw", multi);
	json_object_add_value_object(dev_stats, "thermal_throttle_status", entry_stats);

	entry_stats = json_create_object();
	json_object_add_value_int(entry_stats, "normalized", smart->retry_buffer_overflow_cnt.norm);
	json_object_add_value_int(entry_stats, "raw",	  int48_to_long(smart->retry_buffer_overflow_cnt.raw));
	json_object_add_value_object(dev_stats, "retry_buffer_overflow_count", entry_stats);

	entry_stats = json_create_object();
	json_object_add_value_int(entry_stats, "normalized", smart->pll_lock_loss_cnt.norm);
	json_object_add_value_int(entry_stats, "raw",	  int48_to_long(smart->pll_lock_loss_cnt.raw));
	json_object_add_value_object(dev_stats, "pll_lock_loss_count", entry_stats);

	entry_stats = json_create_object();
	json_object_add_value_int(entry_stats, "normalized", smart->nand_bytes_written.norm);
	json_object_add_value_int(entry_stats, "raw",	  int48_to_long(smart->nand_bytes_written.raw));
	json_object_add_value_object(dev_stats, "nand_bytes_written", entry_stats);

	entry_stats = json_create_object();
	json_object_add_value_int(entry_stats, "normalized", smart->host_bytes_written.norm);
	json_object_add_value_int(entry_stats, "raw",	  int48_to_long(smart->host_bytes_written.raw));
	json_object_add_value_object(dev_stats, "host_bytes_written", entry_stats);

	entry_stats = json_create_object();
	json_object_add_value_int(entry_stats, "normalized", smart->raid_recover_cnt.norm);
	json_object_add_value_int(entry_stats, "raw",	  int48_to_long(smart->raid_recover_cnt.raw));
	json_object_add_value_object(dev_stats, "raid_recover_cnt", entry_stats);

	entry_stats = json_create_object();
	json_object_add_value_int(entry_stats, "normalized", smart->prog_timeout_cnt.norm);
	json_object_add_value_int(entry_stats, "raw",	  int48_to_long(smart->prog_timeout_cnt.raw));
	json_object_add_value_object(dev_stats, "prog_timeout_cnt", entry_stats);

	entry_stats = json_create_object();
	json_object_add_value_int(entry_stats, "normalized", smart->erase_timeout_cnt.norm);
	json_object_add_value_int(entry_stats, "raw",	  int48_to_long(smart->erase_timeout_cnt.raw));
	json_object_add_value_object(dev_stats, "erase_timeout_cnt", entry_stats);

	entry_stats = json_create_object();
	json_object_add_value_int(entry_stats, "normalized", smart->read_timeout_cnt.norm);
	json_object_add_value_int(entry_stats, "raw",	  int48_to_long(smart->read_timeout_cnt.raw));
	json_object_add_value_object(dev_stats, "read_timeout_cnt", entry_stats);

	entry_stats = json_create_object();
	json_object_add_value_int(entry_stats, "normalized", smart->read_ecc_cnt.norm);
	json_object_add_value_int(entry_stats, "raw",	  int48_to_long(smart->read_ecc_cnt.raw));
	json_object_add_value_object(dev_stats, "read_ecc_cnt", entry_stats);

	entry_stats = json_create_object();
	json_object_add_value_int(entry_stats, "normalized", smart->non_media_crc_err_cnt.norm);
	json_object_add_value_int(entry_stats, "raw", int48_to_long(smart->non_media_crc_err_cnt.raw));
	json_object_add_value_object(dev_stats, "non_media_crc_err_cnt", entry_stats);

	entry_stats = json_create_object();
	json_object_add_value_int(entry_stats, "normalized", smart->compression_path_err_cnt.norm);
	json_object_add_value_int(entry_stats, "raw", int48_to_long(smart->compression_path_err_cnt.raw));
	json_object_add_value_object(dev_stats, "compression_path_err_cnt", entry_stats);

	entry_stats = json_create_object();
	json_object_add_value_int(entry_stats, "normalized", smart->out_of_space_flag.norm);
	json_object_add_value_int(entry_stats, "raw", int48_to_long(smart->out_of_space_flag.raw));
	json_object_add_value_object(dev_stats, "out_of_space_flag", entry_stats);

	entry_stats = json_create_object();
	json_object_add_value_int(entry_stats, "normalized", smart->physical_usage_ratio.norm);
	json_object_add_value_int(entry_stats, "raw", int48_to_long(smart->physical_usage_ratio.raw));
	json_object_add_value_object(dev_stats, "physical_usage_ratio", entry_stats);

	entry_stats = json_create_object();
	json_object_add_value_int(entry_stats, "normalized", smart->grown_bb.norm);
	json_object_add_value_int(entry_stats, "raw", int48_to_long(smart->grown_bb.raw));
	json_object_add_value_object(dev_stats, "grown_bb", entry_stats);

	json_object_add_value_object(root, "Device stats", dev_stats);

	json_print_object(root, NULL);
	printf("/n");
	json_free_object(root);
}

static void show_sfx_smart_log(struct nvme_additional_smart_log *smart,
		unsigned int nsid, const char *devname)
{
	printf("Additional Smart Log for ScaleFlux device:%s namespace-id:%x\n",
			devname, nsid);
	printf("key                               normalized raw\n");
	printf("program_fail_count              : %3d%%       %"PRIu64"\n",
			smart->program_fail_cnt.norm,
			int48_to_long(smart->program_fail_cnt.raw));
	printf("erase_fail_count                : %3d%%       %"PRIu64"\n",
			smart->erase_fail_cnt.norm,
			int48_to_long(smart->erase_fail_cnt.raw));
	printf("wear_leveling                   : %3d%%       min: %u, max: %u, avg: %u\n",
			smart->wear_leveling_cnt.norm,
			le16_to_cpu(smart->wear_leveling_cnt.wear_level.min),
			le16_to_cpu(smart->wear_leveling_cnt.wear_level.max),
			le16_to_cpu(smart->wear_leveling_cnt.wear_level.avg));
	printf("end_to_end_error_detection_count: %3d%%       %"PRIu64"\n",
			smart->e2e_err_cnt.norm,
			int48_to_long(smart->e2e_err_cnt.raw));
	printf("crc_error_count                 : %3d%%       %"PRIu64"\n",
			smart->crc_err_cnt.norm,
			int48_to_long(smart->crc_err_cnt.raw));
	printf("timed_workload_media_wear       : %3d%%       %.3f%%\n",
			smart->timed_workload_media_wear.norm,
			((float)int48_to_long(smart->timed_workload_media_wear.raw)) / 1024);
	printf("timed_workload_host_reads       : %3d%%       %"PRIu64"%%\n",
			smart->timed_workload_host_reads.norm,
			int48_to_long(smart->timed_workload_host_reads.raw));
	printf("timed_workload_timer            : %3d%%       %"PRIu64" min\n",
			smart->timed_workload_timer.norm,
			int48_to_long(smart->timed_workload_timer.raw));
	printf("thermal_throttle_status         : %3d%%       %u%%, cnt: %u\n",
			smart->thermal_throttle_status.norm,
			smart->thermal_throttle_status.thermal_throttle.pct,
			smart->thermal_throttle_status.thermal_throttle.count);
	printf("retry_buffer_overflow_count     : %3d%%       %"PRIu64"\n",
			smart->retry_buffer_overflow_cnt.norm,
			int48_to_long(smart->retry_buffer_overflow_cnt.raw));
	printf("pll_lock_loss_count             : %3d%%       %"PRIu64"\n",
			smart->pll_lock_loss_cnt.norm,
			int48_to_long(smart->pll_lock_loss_cnt.raw));
	printf("nand_bytes_written              : %3d%%       sectors: %"PRIu64"\n",
			smart->nand_bytes_written.norm,
			int48_to_long(smart->nand_bytes_written.raw));
	printf("host_bytes_written              : %3d%%       sectors: %"PRIu64"\n",
			smart->host_bytes_written.norm,
			int48_to_long(smart->host_bytes_written.raw));
	printf("raid_recover_cnt                : %3d%%       %"PRIu64"\n",
			smart->raid_recover_cnt.norm,
			int48_to_long(smart->raid_recover_cnt.raw));
	printf("read_ecc_cnt                    : %3d%%       %"PRIu64"\n",
			smart->read_ecc_cnt.norm,
			int48_to_long(smart->read_ecc_cnt.raw));
	printf("prog_timeout_cnt                : %3d%%       %"PRIu64"\n",
			smart->prog_timeout_cnt.norm,
			int48_to_long(smart->prog_timeout_cnt.raw));
	printf("erase_timeout_cnt               : %3d%%       %"PRIu64"\n",
			smart->erase_timeout_cnt.norm,
			int48_to_long(smart->erase_timeout_cnt.raw));
	printf("read_timeout_cnt                : %3d%%       %"PRIu64"\n",
			smart->read_timeout_cnt.norm,
			int48_to_long(smart->read_timeout_cnt.raw));
	printf("non_media_crc_err_cnt           : %3d%%       %" PRIu64 "\n",
	       smart->non_media_crc_err_cnt.norm,
	       int48_to_long(smart->non_media_crc_err_cnt.raw));
	printf("compression_path_err_cnt        : %3d%%       %" PRIu64 "\n",
	       smart->compression_path_err_cnt.norm,
	       int48_to_long(smart->compression_path_err_cnt.raw));
	printf("out_of_space_flag               : %3d%%       %" PRIu64 "\n",
	       smart->out_of_space_flag.norm,
	       int48_to_long(smart->out_of_space_flag.raw));
	printf("phy_capacity_used_ratio         : %3d%%       %" PRIu64 "\n",
	       smart->physical_usage_ratio.norm,
	       int48_to_long(smart->physical_usage_ratio.raw));
	printf("grown_bb_count                  : %3d%%       %" PRIu64 "\n",
	       smart->grown_bb.norm, int48_to_long(smart->grown_bb.raw));


}

static int get_additional_smart_log(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	struct nvme_additional_smart_log smart_log;
	char *desc = "Get ScaleFlux vendor specific additional smart log (optionally, "\
			  "for the specified namespace), and show it.";
	const char *namespace = "(optional) desired namespace";
	const char *raw = "dump output in binary format";
	const char *json= "Dump output in json format";
	struct nvme_dev *dev;
	struct config {
		__u32 namespace_id;
		bool  raw_binary;
		bool  json;
	};
	int err;

	struct config cfg = {
		.namespace_id = 0xffffffff,
	};

	OPT_ARGS(opts) = {
		OPT_UINT("namespace-id", 'n', &cfg.namespace_id, namespace),
		OPT_FLAG("raw-binary",	 'b', &cfg.raw_binary,	 raw),
		OPT_FLAG("json",		 'j', &cfg.json,		 json),
		OPT_END()
	};


	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		return err;

	err = nvme_get_nsid_log(dev_fd(dev), false, 0xca, cfg.namespace_id,
				sizeof(smart_log), (void *)&smart_log);
	if (!err) {
		if (cfg.json)
			show_sfx_smart_log_jsn(&smart_log, cfg.namespace_id,
					       dev->name);
		else if (!cfg.raw_binary)
			show_sfx_smart_log(&smart_log, cfg.namespace_id,
					   dev->name);
		else
			d_raw((unsigned char *)&smart_log, sizeof(smart_log));
	}
	else if (err > 0)
		nvme_show_status(err);
	dev_close(dev);
	return err;
}

struct __attribute__((__packed__)) sfx_lat_stats_vanda {
	__u16    maj;
	__u16    min;
	__u32	 bucket_1[32];	/* 0~1ms, step 32us */
	__u32	 bucket_2[31];	/* 1~32ms, step 1ms */
	__u32	 bucket_3[31];	/* 32ms~1s, step 32ms */
	__u32	 bucket_4[1];	/* 1s~2s, specifically 1024ms~2047ms */
	__u32	 bucket_5[1];	/* 2s~4s, specifically 2048ms~4095ms */
	__u32	 bucket_6[1];	/* 4s+, specifically 4096ms+ */
};

struct __attribute__((__packed__)) sfx_lat_stats_myrtle {
	__u16    maj;
	__u16    min;
	__u32	 bucket_1[64];	/* 0us~63us, step 1us */
	__u32	 bucket_2[64];	/* 63us~127us, step 1us */
	__u32	 bucket_3[64];	/* 127us~255us, step 2us */
	__u32	 bucket_4[64];	/* 255us~510us, step 4us */
	__u32	 bucket_5[64];	/* 510us~1.02ms step 8us */
	__u32	 bucket_6[64];	/* 1.02ms~2.04ms step 16us */
	__u32    bucket_7[64];  /* 2.04ms~4.08ms step 32us */
	__u32    bucket_8[64];  /* 4.08ms~8.16ms step 64us */
	__u32    bucket_9[64];  /* 8.16ms~16.32ms step 128us */
	__u32    bucket_10[64]; /* 16.32ms~32.64ms step 256us */
	__u32    bucket_11[64]; /* 32.64ms~65.28ms step 512us */
	__u32    bucket_12[64]; /* 65.28ms~130.56ms step 1.024ms */
	__u32    bucket_13[64]; /* 130.56ms~261.12ms step 2.048ms */
	__u32    bucket_14[64]; /* 261.12ms~522.24ms step 4.096ms */
	__u32    bucket_15[64]; /* 522.24ms~1.04s step 8.192ms */
	__u32    bucket_16[64]; /* 1.04s~2.09s step 16.384ms */
	__u32    bucket_17[64]; /* 2.09s~4.18s step 32.768ms */
	__u32    bucket_18[64]; /* 4.18s~8.36s step 65.536ms */
	__u32    bucket_19[64]; /* 8.36s~ step 131.072ms */
	__u64    average; /* average latency statistics */
};


struct __attribute__((__packed__)) sfx_lat_status_ver {
	__u16 maj;
	__u16 min;
};

struct sfx_lat_stats {
	union {
		struct sfx_lat_status_ver   ver;
		struct sfx_lat_stats_vanda  vanda;
		struct sfx_lat_stats_myrtle myrtle;
	};
};

static void show_lat_stats_vanda(struct sfx_lat_stats_vanda *stats, int write)
{
	int i;

	printf("ScaleFlux IO %s Command Latency Statistics\n", write ? "Write" : "Read");
	printf("-------------------------------------\n");
	printf("Major Revision : %u\n", stats->maj);
	printf("Minor Revision : %u\n", stats->min);

	printf("\nGroup 1: Range is 0-1ms, step is 32us\n");
	for (i = 0; i < 32; i++)
		printf("Bucket %2d: %u\n", i, stats->bucket_1[i]);

	printf("\nGroup 2: Range is 1-32ms, step is 1ms\n");
	for (i = 0; i < 31; i++)
		printf("Bucket %2d: %u\n", i, stats->bucket_2[i]);

	printf("\nGroup 3: Range is 32ms-1s, step is 32ms:\n");
	for (i = 0; i < 31; i++)
		printf("Bucket %2d: %u\n", i, stats->bucket_3[i]);

	printf("\nGroup 4: Range is 1s-2s:\n");
	printf("Bucket %2d: %u\n", 0, stats->bucket_4[0]);

	printf("\nGroup 5: Range is 2s-4s:\n");
	printf("Bucket %2d: %u\n", 0, stats->bucket_5[0]);

	printf("\nGroup 6: Range is 4s+:\n");
	printf("Bucket %2d: %u\n", 0, stats->bucket_6[0]);
}

static void show_lat_stats_myrtle(struct sfx_lat_stats_myrtle *stats, int write)
{
	int i;

	printf("ScaleFlux IO %s Command Latency Statistics\n", write ? "Write" : "Read");
	printf("-------------------------------------\n");
	printf("Major Revision : %u\n", stats->maj);
	printf("Minor Revision : %u\n", stats->min);

	printf("\nGroup 1: Range is 0us~63us, step 1us\n");
	for (i = 0; i < 64; i++)
		printf("Bucket %2d: %u\n", i, stats->bucket_1[i]);

	printf("\nGroup 2: Range is 63us~127us, step 1us\n");
	for (i = 0; i < 64; i++)
		printf("Bucket %2d: %u\n", i, stats->bucket_2[i]);

	printf("\nGroup 3: Range is 127us~255us, step 2us\n");
	for (i = 0; i < 64; i++)
		printf("Bucket %2d: %u\n", i, stats->bucket_3[i]);

	printf("\nGroup 4: Range is 255us~510us, step 4us\n");
	for (i = 0; i < 64; i++)
		printf("Bucket %2d: %u\n", i, stats->bucket_4[i]);

	printf("\nGroup 5: Range is 510us~1.02ms step\n");
	for (i = 0; i < 64; i++)
		printf("Bucket %2d: %u\n", i, stats->bucket_5[i]);

	printf("\nGroup 6: Range is 1.02ms~2.04ms step 16us\n");
	for (i = 0; i < 64; i++)
		printf("Bucket %2d: %u\n", i, stats->bucket_6[i]);

	printf("\nGroup 7: Range is 2.04ms~4.08ms step 32us\n");
	for (i = 0; i < 64; i++)
		printf("Bucket %2d: %u\n", i, stats->bucket_7[i]);

	printf("\nGroup 8: Range is 4.08ms~8.16ms step 64us\n");
	for (i = 0; i < 64; i++)
		printf("Bucket %2d: %u\n", i, stats->bucket_8[i]);

	printf("\nGroup 9: Range is 8.16ms~16.32ms step 128us\n");
	for (i = 0; i < 64; i++)
		printf("Bucket %2d: %u\n", i, stats->bucket_9[i]);

	printf("\nGroup 10: Range is 16.32ms~32.64ms step 256us\n");
	for (i = 0; i < 64; i++)
		printf("Bucket %2d: %u\n", i, stats->bucket_10[i]);

	printf("\nGroup 11: Range is 32.64ms~65.28ms step 512us\n");
	for (i = 0; i < 64; i++)
		printf("Bucket %2d: %u\n", i, stats->bucket_11[i]);

	printf("\nGroup 12: Range is 65.28ms~130.56ms step 1.024ms\n");
	for (i = 0; i < 64; i++)
		printf("Bucket %2d: %u\n", i, stats->bucket_12[i]);

	printf("\nGroup 13: Range is 130.56ms~261.12ms step 2.048ms\n");
	for (i = 0; i < 64; i++)
		printf("Bucket %2d: %u\n", i, stats->bucket_13[i]);

	printf("\nGroup 14: Range is 261.12ms~522.24ms step 4.096ms\n");
	for (i = 0; i < 64; i++)
		printf("Bucket %2d: %u\n", i, stats->bucket_14[i]);

	printf("\nGroup 15: Range is 522.24ms~1.04s step 8.192ms\n");
	for (i = 0; i < 64; i++)
		printf("Bucket %2d: %u\n", i, stats->bucket_15[i]);

	printf("\nGroup 16: Range is 1.04s~2.09s step 16.384ms\n");
	for (i = 0; i < 64; i++)
		printf("Bucket %2d: %u\n", i, stats->bucket_16[i]);

	printf("\nGroup 17: Range is 2.09s~4.18s step 32.768ms\n");
	for (i = 0; i < 64; i++)
		printf("Bucket %2d: %u\n", i, stats->bucket_17[i]);

	printf("\nGroup 18: Range is 4.18s~8.36s step 65.536ms\n");
	for (i = 0; i < 64; i++)
		printf("Bucket %2d: %u\n", i, stats->bucket_18[i]);

	printf("\nGroup 19: Range is 8.36s~ step 131.072ms\n");
	for (i = 0; i < 64; i++)
		printf("Bucket %2d: %u\n", i, stats->bucket_19[i]);

	printf("\nAverage latency statistics %" PRIu64 "\n",
	       (uint64_t)stats->average);
}


static int get_lat_stats_log(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	struct sfx_lat_stats stats;
	char *desc = "Get ScaleFlux Latency Statistics log and show it.";
	const char *raw = "dump output in binary format";
	const char *write = "Get write statistics (read default)";
	struct nvme_dev *dev;
	struct config {
		bool raw_binary;
		bool write;
	};
	int err;

	struct config cfg = {
	};

	OPT_ARGS(opts) = {
		OPT_FLAG("write",	   'w', &cfg.write,		 write),
		OPT_FLAG("raw-binary", 'b', &cfg.raw_binary, raw),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		return err;

	err = nvme_get_log_simple(dev_fd(dev), cfg.write ? 0xc3 : 0xc1,
				  sizeof(stats), (void *)&stats);
	if (!err) {
		if ((stats.ver.maj == VANDA_MAJOR_IDX) && (stats.ver.min == VANDA_MINOR_IDX)) {
			if (!cfg.raw_binary) {
				show_lat_stats_vanda(&stats.vanda, cfg.write);
			} else {
				d_raw((unsigned char *)&stats.vanda, sizeof(struct sfx_lat_stats_vanda));
			}
		} else if ((stats.ver.maj == MYRTLE_MAJOR_IDX) && (stats.ver.min == MYRTLE_MINOR_IDX)) {
			if (!cfg.raw_binary) {
				show_lat_stats_myrtle(&stats.myrtle, cfg.write);
			} else {
				d_raw((unsigned char *)&stats.myrtle, sizeof(struct sfx_lat_stats_myrtle));
			}
		} else {
			printf("ScaleFlux IO %s Command Latency Statistics Invalid Version Maj %d Min %d\n",
				    cfg.write ? "Write" : "Read", stats.ver.maj, stats.ver.min);
		}
	} else if (err > 0)
		nvme_show_status(err);
	dev_close(dev);
	return err;
}

int sfx_nvme_get_log(int fd, __u32 nsid, __u8 log_id, __u32 data_len, void *data)
{
	struct nvme_passthru_cmd cmd = {
		.opcode		   = nvme_admin_get_log_page,
		.nsid		 = nsid,
		.addr		 = (__u64)(uintptr_t) data,
		.data_len	 = data_len,
	};
	__u32 numd = (data_len >> 2) - 1;
	__u16 numdu = numd >> 16, numdl = numd & 0xffff;

	cmd.cdw10 = log_id | (numdl << 16);
	cmd.cdw11 = numdu;

	return nvme_submit_admin_passthru(fd, &cmd, NULL);
}

/**
 * @brief	get bb table through admin_passthru
 *
 * @param fd
 * @param buf
 * @param size
 *
 * @return -1 fail ; 0 success
 */
static int get_bb_table(int fd, __u32 nsid, unsigned char *buf, __u64 size)
{
	if (fd < 0 || !buf || size != 256*4096*sizeof(unsigned char)) {
		fprintf(stderr, "Invalid Param \r\n");
		return EINVAL;
	}

	return sfx_nvme_get_log(fd, nsid, SFX_LOG_BBT, size, (void *)buf);
}

/**
 * @brief display bb table
 *
 * @param bd_table		buffer that contain bb table dumped from drvier
 * @param table_size	buffer size (BYTES), should at least has 8 bytes for mf_bb_count and grown_bb_count
 */
static void bd_table_show(unsigned char *bd_table, __u64 table_size)
{
	__u32 mf_bb_count = 0;
	__u32 grown_bb_count = 0;
	__u32 total_bb_count = 0;
	__u32 remap_mfbb_count = 0;
	__u32 remap_gbb_count = 0;
	__u64 *bb_elem;
	__u64 *elem_end = (__u64 *)(bd_table + table_size);
	__u64 i;

	/*buf should at least have 8bytes for mf_bb_count & total_bb_count*/
	if (!bd_table || table_size < sizeof(__u64))
		return;

	mf_bb_count = *((__u32 *)bd_table);
	grown_bb_count = *((__u32 *)(bd_table + sizeof(__u32)));
	total_bb_count = *((__u32 *)(bd_table + 2 * sizeof(__u32)));
	remap_mfbb_count = *((__u32 *)(bd_table + 3 * sizeof(__u32)));
	remap_gbb_count = *((__u32 *)(bd_table + 4 * sizeof(__u32)));
	bb_elem = (__u64 *)(bd_table + 5 * sizeof(__u32));

	printf("Bad Block Table \n");
	printf("MF_BB_COUNT:           %u\n", mf_bb_count);
	printf("GROWN_BB_COUNT:        %u\n", grown_bb_count);
	printf("TOTAL_BB_COUNT:        %u\n", total_bb_count);
	printf("REMAP_MFBB_COUNT:      %u\n", remap_mfbb_count);
	printf("REMAP_GBB_COUNT:       %u\n", remap_gbb_count);

	printf("REMAP_MFBB_TABLE [");
	i = 0;
	while (bb_elem < elem_end && i < remap_mfbb_count) {
		printf(" 0x%"PRIx64"", (uint64_t)*(bb_elem++));
		i++;
	}
	printf(" ]\n");

	printf("REMAP_GBB_TABLE [");
	i = 0;
	while (bb_elem < elem_end && i < remap_gbb_count) {
		printf(" 0x%"PRIx64"", (uint64_t)*(bb_elem++));
		i++;
	}
	printf(" ]\n");
}

/**
 * @brief	"hooks of sfx get-bad-block"
 *
 * @param argc
 * @param argv
 * @param cmd
 * @param plugin
 *
 * @return
 */
static int sfx_get_bad_block(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	const __u64 buf_size = 256*4096*sizeof(unsigned char);
	unsigned char *data_buf;
	struct nvme_dev *dev;
	int err = 0;

	char *desc = "Get bad block table of sfx block device.";

	OPT_ARGS(opts) = {
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		return err;

	data_buf = malloc(buf_size);
	if (!data_buf) {
		fprintf(stderr, "malloc fail, errno %d\r\n", errno);
		dev_close(dev);
		return -1;
	}

	err = get_bb_table(dev_fd(dev), 0xffffffff, data_buf, buf_size);
	if (err < 0) {
		perror("get-bad-block");
	} else if (err != 0) {
		nvme_show_status(err);
	} else {
		bd_table_show(data_buf, buf_size);
		printf("ScaleFlux get bad block table: success\n");
	}

	free(data_buf);
	dev_close(dev);
	return 0;
}

static void show_cap_info(struct sfx_freespace_ctx *ctx)
{

	printf("logic            capacity:%5lluGB(0x%"PRIx64")\n",
			IDEMA_CAP2GB(ctx->user_space), (uint64_t)ctx->user_space);
	printf("provisioned      capacity:%5lluGB(0x%"PRIx64")\n",
			IDEMA_CAP2GB(ctx->phy_space), (uint64_t)ctx->phy_space);
	printf("free provisioned capacity:%5lluGB(0x%"PRIx64")\n",
			IDEMA_CAP2GB(ctx->free_space), (uint64_t)ctx->free_space);
	printf("used provisioned capacity:%5lluGB(0x%"PRIx64")\n",
			IDEMA_CAP2GB(ctx->phy_space) - IDEMA_CAP2GB(ctx->free_space),
			(uint64_t)(ctx->phy_space - ctx->free_space));
}

static int query_cap_info(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	struct sfx_freespace_ctx ctx = { 0 };
	char *desc = "query current capacity info";
	const char *raw = "dump output in binary format";
	struct nvme_dev *dev;
	struct config {
		bool  raw_binary;
	};
	struct config cfg;
	int err = 0;

	OPT_ARGS(opts) = {
		OPT_FLAG("raw-binary", 'b', &cfg.raw_binary, raw),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		return err;

	if (nvme_query_cap(dev_fd(dev), 0xffffffff, sizeof(ctx), &ctx)) {
		perror("sfx-query-cap");
		err = -1;
	}

	if (!err) {
		if (!cfg.raw_binary) {
			show_cap_info(&ctx);
		} else {
			d_raw((unsigned char *)&ctx, sizeof(ctx));
		}
	}
	dev_close(dev);
	return err;
}

static int change_sanity_check(int fd, __u64 trg_in_4k, int *shrink)
{
	struct sfx_freespace_ctx freespace_ctx = { 0 };
	struct sysinfo s_info;
	__u64 mem_need = 0;
	__u64 cur_in_4k = 0;
	__u64 provisoned_cap_4k = 0;
	int extend = 0;

	if (nvme_query_cap(fd, 0xffffffff, sizeof(freespace_ctx), &freespace_ctx)) {
	    return -1;
	}

	/*
	 * capacity illegal check
	 */
	provisoned_cap_4k = freespace_ctx.phy_space >>
			    (SFX_PAGE_SHIFT - SECTOR_SHIFT);
	if (trg_in_4k < provisoned_cap_4k ||
	    trg_in_4k > ((__u64)provisoned_cap_4k * 4)) {
		fprintf(stderr,
			"WARNING: Only support 1.0~4.0 x provisoned capacity!\n");
		if (trg_in_4k < provisoned_cap_4k) {
			fprintf(stderr,
				"WARNING: The target capacity is less than 1.0 x provisioned capacity!\n");
		} else {
			fprintf(stderr,
				"WARNING: The target capacity is larger than 4.0 x provisioned capacity!\n");
		}
		return -1;
	}
	if (trg_in_4k > ((__u64)provisoned_cap_4k*4)) {
		fprintf(stderr, "WARNING: the target capacity is too large\n");
		return -1;
	}

	/*
	 * check whether mem enough if extend
	 * */
	cur_in_4k = freespace_ctx.user_space >> (SFX_PAGE_SHIFT - SECTOR_SHIFT);
	extend = (cur_in_4k <= trg_in_4k);
	if (extend) {
		if (sysinfo(&s_info) < 0) {
			printf("change-cap query mem info fail\n");
			return -1;
		}
		mem_need = (trg_in_4k - cur_in_4k) * 8;
		if (s_info.freeram <= 10 || mem_need > s_info.freeram) {
			fprintf(stderr,
				"WARNING: Free memory is not enough! "
				"Please drop cache or extend more memory and retry\n"
				"WARNING: Memory needed is %"PRIu64", free memory is %"PRIu64"\n",
				(uint64_t)mem_need, (uint64_t)s_info.freeram);
			return -1;
		}
	}
	*shrink = !extend;

	return 0;
}

/**
 * @brief prompt and get user confirm input
 *
 * @param str, prompt string
 *
 * @return 0, cancled; 1 confirmed
 */
static int sfx_confirm_change(const char *str)
{
	unsigned char confirm;
	fprintf(stderr, "WARNING: %s.\n"
			"Use the force [--force] option to suppress this warning.\n", str);

	fprintf(stderr, "Confirm Y/y, Others cancel:\n");
	confirm = (unsigned char)fgetc(stdin);
	if (confirm != 'y' && confirm != 'Y') {
		fprintf(stderr, "Cancled.\n");
		return 0;
	}
	fprintf(stderr, "Sending operation ... \n");
	return 1;
}

static int change_cap(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	char *desc = "dynamic change capacity";
	const char *cap_gb = "cap size in GB";
	const char *cap_byte = "cap size in byte";
	const char *force = "The \"I know what I'm doing\" flag, skip confirmation before sending command";
	struct nvme_dev *dev;
	__u64 cap_in_4k = 0;
	__u64 cap_in_sec = 0;
	int shrink = 0;
	int err = -1;

	struct config {
		__u64 cap_in_byte;
		__u32 capacity_in_gb;
		bool  force;
	};

	struct config cfg = {
	.cap_in_byte = 0,
	.capacity_in_gb = 0,
	.force = 0,
	};

	OPT_ARGS(opts) = {
		OPT_UINT("cap",			'c',	&cfg.capacity_in_gb,	cap_gb),
		OPT_SUFFIX("cap-byte",	'z',	&cfg.cap_in_byte,		cap_byte),
		OPT_FLAG("force",		'f',	&cfg.force,				force),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		return err;

	cap_in_sec = IDEMA_CAP(cfg.capacity_in_gb);
	cap_in_4k = cap_in_sec >> 3;
	if (cfg.cap_in_byte)
		cap_in_4k = cfg.cap_in_byte >> 12;
	printf("%dG %"PRIu64"B %"PRIu64" 4K\n",
		cfg.capacity_in_gb, (uint64_t)cfg.cap_in_byte, (uint64_t)cap_in_4k);

	if (change_sanity_check(dev_fd(dev), cap_in_4k, &shrink)) {
		printf("ScaleFlux change-capacity: fail\n");
		dev_close(dev);
		return err;
	}

	if (!cfg.force && shrink && !sfx_confirm_change("Changing Cap may irrevocably delete this device's data")) {
		dev_close(dev);
		return 0;
	}

	err = nvme_change_cap(dev_fd(dev), 0xffffffff, cap_in_4k);
	if (err < 0)
		perror("sfx-change-cap");
	else if (err != 0)
		nvme_show_status(err);
	else {
		printf("ScaleFlux change-capacity: success\n");
		ioctl(dev_fd(dev), BLKRRPART);
	}
	dev_close(dev);
	return err;
}

static int sfx_verify_chr(int fd)
{
	static struct stat nvme_stat;
	int err = fstat(fd, &nvme_stat);

	if (err < 0) {
		perror("fstat");
		return errno;
	}
	if (!S_ISCHR(nvme_stat.st_mode)) {
		fprintf(stderr,
			"Error: requesting clean card on non-controller handle\n");
		return ENOTBLK;
	}
	return 0;
}

static int sfx_clean_card(int fd)
{
	int ret;

	ret = sfx_verify_chr(fd);
	if (ret)
		return ret;
	ret = ioctl(fd, NVME_IOCTL_CLR_CARD);
	if (ret)
		perror("Ioctl Fail.");
	else
		printf("ScaleFlux clean card success\n");

	return ret;
}

char *sfx_feature_to_string(int feature)
{
	switch (feature) {
		case SFX_FEAT_ATOMIC:
			return "ATOMIC";
		case SFX_FEAT_UP_P_CAP:
			return "UPDATE_PROVISION_CAPACITY";

		default:
			return "Unknown";
	}
}

static int sfx_set_feature(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	char *desc = "ScaleFlux internal set features\n"
				 "feature id 1: ATOMIC\n"
				 "value 0: Disable atomic write\n"
				 "	1: Enable atomic write";
	const char *value = "new value of feature (required)";
	const char *feature_id = "hex feature name (required)";
	const char *namespace_id = "desired namespace";
	const char *force = "The \"I know what I'm doing\" flag, skip confirmation before sending command";
	struct nvme_dev *dev;
	struct nvme_id_ns ns;
	int err = 0;

	struct config {
		__u32 namespace_id;
		__u32 feature_id;
		__u32 value;
		bool  force;
	};
	struct config cfg = {
		.namespace_id = 1,
		.feature_id = 0,
		.value = 0,
		.force = 0,
	};

	OPT_ARGS(opts) = {
		OPT_UINT("namespace-id",		'n',	&cfg.namespace_id,		namespace_id),
		OPT_UINT("feature-id",			'f',	&cfg.feature_id,		feature_id),
		OPT_UINT("value",			'v',	&cfg.value,			value),
		OPT_FLAG("force",			's',	&cfg.force,			force),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		return err;

	if (!cfg.feature_id) {
		fprintf(stderr, "feature-id required param\n");
		dev_close(dev);
		return EINVAL;
	}

	if (cfg.feature_id == SFX_FEAT_CLR_CARD) {
		/*Warning for clean card*/
		if (!cfg.force && !sfx_confirm_change("Going to clean device's data, confirm umount fs and try again")) {
			dev_close(dev);
			return 0;
		} else {
			return sfx_clean_card(dev_fd(dev));
		}

	}

	if (cfg.feature_id == SFX_FEAT_ATOMIC && cfg.value != 0) {
		if (cfg.namespace_id != 0xffffffff) {
			err = nvme_identify_ns(dev_fd(dev), cfg.namespace_id,
					       &ns);
			if (err) {
				if (err < 0)
					perror("identify-namespace");
				else
					nvme_show_status(err);
				dev_close(dev);
				return err;
			}
			/*
			 * atomic only support with sector-size = 4k now
			 */
			if ((ns.flbas & 0xf) != 1) {
				printf("Please change-sector size to 4K, then retry\n");
				dev_close(dev);
				return EFAULT;
			}
		}
	} else if (cfg.feature_id == SFX_FEAT_UP_P_CAP) {
		if (cfg.value <= 0) {
			fprintf(stderr, "Invalid Param\n");
			dev_close(dev);
			return EINVAL;
		}

		/*Warning for change pacp by GB*/
		if (!cfg.force && !sfx_confirm_change("Changing physical capacity may irrevocably delete this device's data")) {
			dev_close(dev);
			return 0;
		}
	}

	err = nvme_sfx_set_features(dev_fd(dev), cfg.namespace_id,
				    cfg.feature_id,
				    cfg.value);

	if (err < 0) {
		perror("ScaleFlux-set-feature");
		dev_close(dev);
		return errno;
	} else if (!err) {
		printf("ScaleFlux set-feature:%#02x (%s), value:%d\n", cfg.feature_id,
			sfx_feature_to_string(cfg.feature_id), cfg.value);
	} else if (err > 0)
		nvme_show_status(err);

	dev_close(dev);
	return err;
}

static int sfx_get_feature(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	char *desc = "ScaleFlux internal set features\n"
				 "feature id 1: ATOMIC";
	const char *feature_id = "hex feature name (required)";
	const char *namespace_id = "desired namespace";
	struct nvme_dev *dev;
	__u32 result = 0;
	int err = 0;

	struct config {
		__u32 namespace_id;
		__u32 feature_id;
	};
	struct config cfg = {
		.namespace_id = 0,
		.feature_id = 0,
	};

	OPT_ARGS(opts) = {
		OPT_UINT("namespace-id",		'n',	&cfg.namespace_id,		namespace_id),
		OPT_UINT("feature-id",			'f',	&cfg.feature_id,		feature_id),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		return err;

	if (!cfg.feature_id) {
		fprintf(stderr, "feature-id required param\n");
		dev_close(dev);
		return EINVAL;
	}

	err = nvme_sfx_get_features(dev_fd(dev), cfg.namespace_id,
				    cfg.feature_id, &result);
	if (err < 0) {
		perror("ScaleFlux-get-feature");
		dev_close(dev);
		return errno;
	} else if (!err) {
		printf("ScaleFlux get-feature:%02x (%s), value:%d\n", cfg.feature_id,
			sfx_feature_to_string(cfg.feature_id), result);
	} else if (err > 0)
		nvme_show_status(err);

	dev_close(dev);
	return err;

}
   070701015D6C3E000081A4000003E80000006400000001642C0FB500000363000000000000004A00000000000000000000002600000000nvme-cli/plugins/scaleflux/sfx-nvme.h /* SPDX-License-Identifier: GPL-2.0-or-later */
#undef CMD_INC_FILE
#define CMD_INC_FILE plugins/scaleflux/sfx-nvme

#if !defined(SFX_NVME) || defined(CMD_HEADER_MULTI_READ)
#define SFX_NVME

#include "cmd.h"

PLUGIN(NAME("sfx", "ScaleFlux vendor specific extensions", NVME_VERSION),
	COMMAND_LIST(
		ENTRY("smart-log-add", "Retrieve ScaleFlux SMART Log, show it", get_additional_smart_log)
		ENTRY("lat-stats", "Retrieve ScaleFlux IO Latency Statistics log, show it", get_lat_stats_log)
		ENTRY("get-bad-block", "Retrieve bad block table of block device, show it", sfx_get_bad_block)
		ENTRY("query-cap", "Query current capacity info", query_cap_info)
		ENTRY("change-cap", "Dynamic change capacity", change_cap)
		ENTRY("set-feature", "Set a feature", sfx_set_feature)
		ENTRY("get-feature", "Get a feature", sfx_get_feature)
	)
);

#endif

#include "define_cmd.h"
 070701015D6C40000081A4000003E80000006400000001642C0FB5000045B7000000000000004A00000000000000000000002800000000nvme-cli/plugins/seagate/seagate-diag.h   /* SPDX-License-Identifier: GPL-2.0-or-later */
/*
 * Do NOT modify or remove this copyright and license
 *
 * Copyright (c) 2017-2018 Seagate Technology LLC and/or its Affiliates, All Rights Reserved
 *
 * ******************************************************************************************
 * 
 * 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.
 *
 * \file seagate-diag.h
 * \brief This file defines the functions and macros to make building a nvme-cli seagate plug-in.
 * 
 *   Author: Debabrata Bardhan <debabrata.bardhan@seagate.com>
 */


#ifndef SEAGATE_NVME_H
#define SEAGATE_NVME_H

#define SEAGATE_PLUGIN_VERSION_MAJOR 1
#define SEAGATE_PLUGIN_VERSION_MINOR 2 

#define SEAGATE_OCP_PLUGIN_VERSION_MAJOR 1
#define SEAGATE_OCP_PLUGIN_VERSION_MINOR 0 

#define PERSIST_FILE_SIZE    (2764800)
#define ONE_MB               (1048576)  /* (1024 * 1024) */
#define PERSIST_CHUNK        (65536)    /* (1024 * 64) */
#define FOUR_KB               (4096)
#define STX_NUM_LEGACY_DRV   (123)


const char* stx_jag_pan_mn[STX_NUM_LEGACY_DRV] = {"ST1000KN0002", "ST1000KN0012", "ST2000KN0002", 
                                                  "ST2000KN0012", "ST4000KN0002", "XP1600HE10002", 
                                                  "XP1600HE10012", "XP1600HE30002", "XP1600HE30012", 
                                                  "XP1920LE10002", "XP1920LE10012", "XP1920LE30002", 
                                                  "XP1920LE30012", "XP3200HE10002", "XP3200HE10012", 
                                                  "XP3840LE10002", "XP3840LE10012", "XP400HE30002", 
                                                  "XP400HE30012", "XP400HE30022", "XP400HE30032", 
                                                  "XP480LE30002", "XP480LE30012", "XP480LE30022", 
                                                  "XP480LE30032", "XP800HE10002", "XP800HE10012", 
                                                  "XP800HE30002", "XP800HE30012", "XP800HE30022", 
                                                  "XP800HE30032", "XP960LE10002", "XP960LE10012", 
                                                  "XP960LE30002", "XP960LE30012", "XP960LE30022", 
                                                  "XP960LE30032", "XP256LE30011", "XP256LE30021", 
                                                  "XP7680LE80002", "XP7680LE80003", "XP15360LE80003", 
                                                  "XP30720LE80003", "XP7200-1A2048", "XP7200-1A4096", 
                                                  "XP7201-2A2048", "XP7201-2A4096", "XP7200-1A8192", 
                                                  "ST1000HM0021", "ST1000HM0031", "ST1000HM0061", 
                                                  "ST1000HM0071", "ST1000HM0081", "ST1200HM0001", 
                                                  "ST1600HM0031", "ST1800HM0001", "ST1800HM0011", 
                                                  "ST2000HM0011", "ST2000HM0031", "ST400HM0061", 
                                                  "ST400HM0071", "ST500HM0021", "ST500HM0031", 
                                                  "ST500HM0061", "ST500HM0071", "ST500HM0081", 
                                                  "ST800HM0061", "ST800HM0071", "ST1600HM0011", 
                                                  "ST1600KN0001", "ST1600KN0011", "ST1920HM0001",
                                                  "ST1920KN0001", "ST1920KN0011", "ST400HM0021", 
                                                  "ST400KN0001", "ST400KN0011", "ST480HM0001",
                                                  "ST480KN0001", "ST480KN0011", "ST800HM0021", 
                                                  "ST800KN0001", "ST800KN0011", "ST960HM0001", 
                                                  "ST960KN0001", "ST960KN0011", "XF1441-1AA251024", 
                                                  "XF1441-1AA252048", "XF1441-1AA25512", "XF1441-1AB251024", 
                                                  "XF1441-1AB252048", "XF1441-1AB25512", "XF1441-1BA251024", 
                                                  "XF1441-1BA252048", "XF1441-1BA25512", "XF1441-1BB251024", 
                                                  "XF1441-1BB252048", "XF1441-1BB25512", "ST400HM0031", 
                                                  "ST400KN0021", "ST400KN0031", "ST480HM0011", 
                                                  "ST480KN0021", "ST480KN0031", "ST800HM0031", 
                                                  "ST800KN0021", "ST800KN0031", "ST960HM0011", 
                                                  "ST960KN0021", "ST960KN0031", "XM1441-1AA111024", 
                                                  "XM1441-1AA112048", "XM1441-1AA11512", "XM1441-1AA801024", 
                                                  "XM1441-1AA80512", "XM1441-1AB111024", "XM1441-1AB112048", 
                                                  "XM1441-1BA111024", "XM1441-1BA112048", "XM1441-1BA11512", 
                                                  "XM1441-1BA801024", "XM1441-1BA80512", "XM1441-1BB112048"};
 

/***************************
*Supported Log-Pages from FW 
***************************/

typedef struct __attribute__((__packed__)) log_page_map_entry {
   __u32 LogPageID;
   __u32 LogPageSignature;
   __u32 LogPageVersion;
} log_page_map_entry;

#define MAX_SUPPORTED_LOG_PAGE_ENTRIES ((4096 - sizeof(__u32)) / sizeof(log_page_map_entry))

typedef struct __attribute__((__packed__)) log_page_map {
   __u32 NumLogPages;
   log_page_map_entry LogPageEntry[ MAX_SUPPORTED_LOG_PAGE_ENTRIES ];
} log_page_map;
/* EOF Supported Log-Pages from FW */


/***************************
* Extended-SMART Information
***************************/
#define NUMBER_EXTENDED_SMART_ATTRIBUTES      42

typedef enum _EXTENDED_SMART_VERSION_
{
    EXTENDED_SMART_VERSION_NONE,
    EXTENDED_SMART_VERSION_GEN,
    EXTENDED_SMART_VERSION_VENDOR1,
} EXTENDED_SMART_VERSION;

typedef struct __attribute__((__packed__)) _SmartVendorSpecific
{
   __u8  AttributeNumber;                                      
   __u16 SmartStatus;                                          
   __u8  NominalValue;                                     
   __u8  LifetimeWorstValue;                               
   __u32 Raw0_3;                                                           
   __u8  RawHigh[3];                                               
} SmartVendorSpecific;

typedef struct __attribute__((__packed__)) _EXTENDED_SMART_INFO_T
{
   __u16 Version;                                                                                       
   SmartVendorSpecific vendorData[NUMBER_EXTENDED_SMART_ATTRIBUTES];            
   __u8  vendor_specific_reserved[6];                                                                           
}  EXTENDED_SMART_INFO_T;

typedef struct __attribute__((__packed__)) vendor_smart_attribute_data
{
   __u8  AttributeNumber;         
   __u8  Rsvd[3];                 
   __u32 LSDword;                 
   __u32 MSDword;                 
} vendor_smart_attribute_data;

struct __attribute__((__packed__)) nvme_temetry_log_hdr
{
    __u8        log_id;
    __u8        rsvd1[4];
    __u8        ieee_id[3];
    __le16      tele_data_area1;
    __le16      tele_data_area2;
    __le16      tele_data_area3;
    __u8        rsvd14[368];
    __u8        tele_data_aval;
    __u8        tele_data_gen_num;
    __u8        reason_identifier[128];
};

typedef struct __attribute__((__packed__)) _U128
{
    __u64 LS__u64;
    __u64 MS__u64;
} U128;

typedef struct __attribute__((__packed__)) _vendor_log_page_CF_Attr
{
   __u16    SuperCapCurrentTemperature;        
   __u16    SuperCapMaximumTemperature;        
   __u8     SuperCapStatus;                    
   __u8     Reserved5to7[3];                   
   U128     DataUnitsReadToDramNamespace;      
   U128     DataUnitsWrittenToDramNamespace;   
   __u64    DramCorrectableErrorCount;         
   __u64    DramUncorrectableErrorCount;       
} vendor_log_page_CF_Attr;

typedef struct __attribute__((__packed__)) _vendor_log_page_CF
{
   vendor_log_page_CF_Attr      AttrCF;
   __u8                         Vendor_Specific_Reserved[ 456 ];     /* 56-511 */
} vendor_log_page_CF;

typedef struct __attribute__((__packed__)) _STX_EXT_SMART_LOG_PAGE_C0
{
    U128            phyMediaUnitsWrt;   
    U128            phyMediaUnitsRd;    
    __u64           badUsrNandBlocks;   
    __u64           badSysNandBlocks;   
    __u64           xorRecoveryCnt;     
    __u64           ucRdEc;             
    __u64           softEccEc;          
    __u64           etoeCrrCnt;         
    __u64           sysDataUsed  :  8;  
    __u64           refreshCount : 56;  
    __u64           usrDataEraseCnt;    
    __u16           thermalThrottling;  
    __u8            dssdSpecVerErrata;  
    __u16           dssdSpecVerPoint;   
    __u16           dssdSpecVerMinor;   
    __u8            dssdSpecVerMajor;   
    __u64           pcieCorrEc;         
    __u32           incompleteShutdowns;
    __u32           rsvd_116_119;       
    __u8            freeBlocks;         
    __u8            rsvd_121_127[7];    
    __u16           capHealth;          
    __u8            nvmeErrataVer;      
    __u8            rsvd_131_135[5];    
    __u64           unalignedIO;        
    __u64           secVerNum;          
    __u64           totalNUSE;          
    U128            plpStartCnt;        
    U128            enduranceEstimate;  
    __u64           pcieLinkRetCnt;     
    __u64           powStateChangeCnt;  
    __u8            rsvd_208_493[286];  
    __u16           logPageVer;         
    U128            logPageGUID;        
} STX_EXT_SMART_LOG_PAGE_C0;

/* EOF Extended-SMART Information*/


/**************************
* PCIE ERROR INFORMATION
**************************/
typedef struct __attribute__((__packed__)) pcie_error_log_page
{
   __u32   Version;
   __u32   BadDllpErrCnt;
   __u32   BadTlpErrCnt;
   __u32   RcvrErrCnt;
   __u32   ReplayTOErrCnt;
   __u32   ReplayNumRolloverErrCnt;
   __u32   FCProtocolErrCnt;
   __u32   DllpProtocolErrCnt;
   __u32   CmpltnTOErrCnt;
   __u32   RcvrQOverflowErrCnt;
   __u32   UnexpectedCplTlpErrCnt;
   __u32   CplTlpURErrCnt;
   __u32   CplTlpCAErrCnt;
   __u32   ReqCAErrCnt;
   __u32   ReqURErrCnt;
   __u32   EcrcErrCnt;
   __u32   MalformedTlpErrCnt;
   __u32   CplTlpPoisonedErrCnt;
   __u32   MemRdTlpPoisonedErrCnt;
} pcie_error_log_page;
/*EOF PCIE ERROR INFORMATION */

/**************************************
* FW Activation History Log INFORMATION
***************************************/

typedef struct __attribute__((__packed__)) _stx_fw_activ_his_ele
{
    __u8    entryVerNum;
    __u8    entryLen;
    __u16   rev02_03;
    __u16   fwActivCnt;
    __u64   timeStamp;
    __u64   rev14_21;
    __u64   powCycleCnt;
    __u8    previousFW[8];
    __u8    newFW[8];
    __u8    slotNum;
    __u8    commitActionType;
    __u16   result;
    __u8    rev50_63[14];
} stx_fw_activ_his_ele;

typedef struct __attribute__((__packed__)) _stx_fw_activ_history_log_page
{
   __u8                     logID;
   __u8                     rev01_03[3];
   __u32                    numValidFwActHisEnt;
   stx_fw_activ_his_ele     fwActHisEnt[20];
   __u8                     rev1288_4077[2790];
   __u16                    logPageVer;
   __u8                     logPageGUID[16];
} stx_fw_activ_history_log_page;

/* FW Activation History Log INFORMATION */


typedef enum
{
   VS_ATTR_SOFT_READ_ERROR_RATE,                /* 0    OFFSET : 02 -13     bytes */
   VS_ATTR_REALLOCATED_SECTOR_COUNT,            /* 1    OFFSET : 14 -25     bytes */
   VS_ATTR_POWER_ON_HOURS,                      /* 2    OFFSET : 26 -37     bytes */
   VS_ATTR_POWER_FAIL_EVENT_COUNT,              /* 3    OFFSET : 38 -49     bytes */
   VS_ATTR_DEVICE_POWER_CYCLE_COUNT,            /* 4    OFFSET : 50 -61     bytes */
   VS_ATTR_GB_ERASED,                           /* 5    OFFSET : 62 -73     bytes */
   VS_ATTR_LIFETIME_DEVSLEEP_EXIT_COUNT,        /* 6    OFFSET : 74 -85     bytes */
   VS_ATTR_LIFETIME_ENTERING_PS4_COUNT,         /* 7    OFFSET : 86 -97     bytes */
   VS_ATTR_LIFETIME_ENTERING_PS3_COUNT,         /* 8    OFFSET : 98 -109    bytes */
   VS_ATTR_RETIRED_BLOCK_COUNT,                 /* 9    OFFSET : 110 -121   bytes */
   VS_ATTR_PROGRAM_FAILURE_COUNT,               /* 10   OFFSET : 122 -133   bytes */
   VS_ATTR_ERASE_FAIL_COUNT,                    /* 11   OFFSET : 134 -145   bytes */
   VS_ATTR_AVG_ERASE_COUNT,                     /* 12   OFFSET : 146 -157   bytes */
   VS_ATTR_UNEXPECTED_POWER_LOSS_COUNT,         /* 13   OFFSET : 158 -169   bytes */
   VS_ATTR_WEAR_RANGE_DELTA,                    /* 14   OFFSET : 170 -181   bytes */
   VS_ATTR_SATA_INTERFACE_DOWNSHIFT_COUNT,      /* 15   OFFSET : 182 -193   bytes */
   VS_ATTR_END_TO_END_CRC_ERROR_COUNT,          /* 16   OFFSET : 194 -205   bytes */
   VS_ATTR_MAX_LIFE_TEMPERATURE,                /* 17   OFFSET : 206 -217   bytes */
   VS_ATTR_UNCORRECTABLE_RAISE_ERRORS,          /* 18   OFFSET : 218 -229   bytes */
   VS_ATTR_DRIVE_LIFE_PROTECTION_STATUS,        /* 19   OFFSET : 230 -241   bytes */
   VS_ATTR_REMAINING_SSD_LIFE,                  /* 20   OFFSET : 242 -253   bytes */
   VS_ATTR_LIFETIME_WRITES_TO_FLASH,            /* 21   OFFSET : 254 -265   bytes */
   VS_ATTR_LIFETIME_WRITES_FROM_HOST,           /* 22   OFFSET : 266 -277   bytes */
   VS_ATTR_LIFETIME_READS_TO_HOST,              /* 23   OFFSET : 278 -289   bytes */
   VS_ATTR_FREE_SPACE,                          /* 24   OFFSET : 290 -301   bytes */
   VS_ATTR_TRIM_COUNT_LSB,                      /* 25   OFFSET : 302 -313   bytes */
   VS_ATTR_TRIM_COUNT_MSB,                      /* 26   OFFSET : 314 -325   bytes */
   VS_ATTR_OP_PERCENTAGE,                       /* 27   OFFSET : 326 -337   bytes */
   VS_ATTR_RAISE_ECC_CORRECTABLE_ERROR_COUNT, 	/* 28   OFFSET : 338 -349   bytes */
   VS_ATTR_UNCORRECTABLE_ECC_ERRORS ,           /* 29   OFFSET : 350 -361   bytes */
   VS_ATTR_LIFETIME_WRITES0_TO_FLASH,           /* 30   OFFSET : 362-372    bytes */
   VS_ATTR_LIFETIME_WRITES1_TO_FLASH,           /* 31   OFFSET : 374-385    bytes */
   VS_ATTR_LIFETIME_WRITES0_FROM_HOST,          /* 32   OFFSET : 386-397    bytes */
   VS_ATTR_LIFETIME_WRITES1_FROM_HOST,          /* 33   OFFSET : 398-409    bytes */
   VS_ATTR_LIFETIME_READ0_FROM_HOST,            /* 34   OFFSET : 410-421    bytes */
   VS_ATTR_LIFETIME_READ1_FROM_HOST,            /* 35   OFFSET : 422-433    bytes */
   VS_ATTR_PCIE_PHY_CRC_ERROR,                  /* 36   OFFSET : 434-445    bytes */
   VS_ATTR_BAD_BLOCK_COUNT_SYSTEM,              /* 37   OFFSET : 446-457    bytes */
   VS_ATTR_BAD_BLOCK_COUNT_USER,                /* 38   OFFSET : 458-469    bytes */
   VS_ATTR_THERMAL_THROTTLING_STATUS,           /* 39   OFFSET : 470-481    bytes */
   VS_ATTR_POWER_CONSUMPTION,                   /* 40   OFFSET : 482-493    bytes */
   VS_ATTR_MAX_SOC_LIFE_TEMPERATURE,            /* 41   OFFSET : 494-505    bytes */
   VS_MAX_ATTR_NUMBER
} extended_smart_attributes;

/*Smart attribute IDs */

typedef enum
{
   VS_ATTR_ID_SOFT_READ_ERROR_RATE = 1,
   VS_ATTR_ID_REALLOCATED_SECTOR_COUNT  = 5,
   VS_ATTR_ID_POWER_ON_HOURS = 9,
   VS_ATTR_ID_POWER_FAIL_EVENT_COUNT = 11,
   VS_ATTR_ID_DEVICE_POWER_CYCLE_COUNT = 12,
   VS_ATTR_ID_RAW_READ_ERROR_RATE = 13,
   VS_ATTR_ID_GROWN_BAD_BLOCK_COUNT = 40,
   VS_ATTR_ID_END_2_END_CORRECTION_COUNT = 41,
   VS_ATTR_ID_MIN_MAX_WEAR_RANGE_COUNT = 42,
   VS_ATTR_ID_REFRESH_COUNT = 43,
   VS_ATTR_ID_BAD_BLOCK_COUNT_USER = 44,
   VS_ATTR_ID_BAD_BLOCK_COUNT_SYSTEM = 45,
   VS_ATTR_ID_THERMAL_THROTTLING_STATUS = 46,
   VS_ATTR_ID_ALL_PCIE_CORRECTABLE_ERROR_COUNT = 47,
   VS_ATTR_ID_ALL_PCIE_UNCORRECTABLE_ERROR_COUNT = 48,
   VS_ATTR_ID_INCOMPLETE_SHUTDOWN_COUNT = 49,
   VS_ATTR_ID_GB_ERASED_LSB = 100,
   VS_ATTR_ID_GB_ERASED_MSB = 101,
   VS_ATTR_ID_LIFETIME_ENTERING_PS4_COUNT = 102,
   VS_ATTR_ID_LIFETIME_ENTERING_PS3_COUNT = 103,
   VS_ATTR_ID_LIFETIME_DEVSLEEP_EXIT_COUNT = 104,
   VS_ATTR_ID_RETIRED_BLOCK_COUNT = 170,
   VS_ATTR_ID_PROGRAM_FAILURE_COUNT = 171,
   VS_ATTR_ID_ERASE_FAIL_COUNT = 172,
   VS_ATTR_ID_AVG_ERASE_COUNT = 173,
   VS_ATTR_ID_UNEXPECTED_POWER_LOSS_COUNT = 174,
   VS_ATTR_ID_WEAR_RANGE_DELTA = 177,
   VS_ATTR_ID_SATA_INTERFACE_DOWNSHIFT_COUNT = 183,
   VS_ATTR_ID_END_TO_END_CRC_ERROR_COUNT = 184,
   VS_ATTR_ID_UNCORRECTABLE_READ_ERRORS = 188,
   VS_ATTR_ID_MAX_LIFE_TEMPERATURE = 194,
   VS_ATTR_ID_RAISE_ECC_CORRECTABLE_ERROR_COUNT = 195,
   VS_ATTR_ID_UNCORRECTABLE_RAISE_ERRORS = 198,
   VS_ATTR_ID_DRIVE_LIFE_PROTECTION_STATUS = 230,
   VS_ATTR_ID_REMAINING_SSD_LIFE  = 231,
   VS_ATTR_ID_LIFETIME_WRITES_TO_FLASH_LSB = 233,
   VS_ATTR_ID_LIFETIME_WRITES_TO_FLASH_MSB = 234,
   VS_ATTR_ID_LIFETIME_WRITES_FROM_HOST_LSB = 241,
   VS_ATTR_ID_LIFETIME_WRITES_FROM_HOST_MSB = 242,
   VS_ATTR_ID_LIFETIME_READS_TO_HOST_LSB = 243,
   VS_ATTR_ID_LIFETIME_READS_TO_HOST_MSB = 244,
   VS_ATTR_ID_FREE_SPACE = 245,
   VS_ATTR_ID_TRIM_COUNT_LSB = 250,
   VS_ATTR_ID_TRIM_COUNT_MSB = 251,
   VS_ATTR_ID_OP_PERCENTAGE = 252,
   VS_ATTR_ID_MAX_SOC_LIFE_TEMPERATURE = 253,
} smart_attributes_ids;

#define TELEMETRY_BLOCKS_TO_READ       8

void seaget_d_raw(unsigned char *buf, int len, int fd);


#define DP_CLASS_ID_FULL 0

#endif
 070701015D6C41000081A4000003E80000006400000001642C0FB5000107ED000000000000004A00000000000000000000002800000000nvme-cli/plugins/seagate/seagate-nvme.c   // SPDX-License-Identifier: GPL-2.0-or-later
/*
 * Do NOT modify or remove this copyright and license
 *
 * Copyright (c) 2017-2018 Seagate Technology LLC and/or its Affiliates, All Rights Reserved
 *
 * ******************************************************************************************
 *
 * 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.
 *
 * \file seagate-nvme.c
 * \brief This file defines the functions and macros to make building a nvme-cli seagate plug-in.
 *
 *   Author: Debabrata Bardhan <debabrata.bardhan@seagate.com>
 */


#include <fcntl.h>
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <inttypes.h>
#include <sys/stat.h>
#include <ctype.h>
#include "common.h"
#include "nvme.h"
#include "libnvme.h"
#include "plugin.h"
#include "linux/types.h"
#include "nvme-print.h"
#include <time.h>

#define CREATE_CMD

#include "seagate-nvme.h"
#include "seagate-diag.h"


/***************************************
 * Command for "log-pages-supp"
 ***************************************/
static char *log_pages_supp_print(__u32 pageID)
{
	switch (pageID) {
	case 0x01:
		return "ERROR_INFORMATION";
		break;
	case 0x02:
		return "SMART_INFORMATION";
		break;
	case 0x03:
		return "FW_SLOT_INFORMATION";
		break;
	case 0x04:
		return "CHANGED_NAMESPACE_LIST";
		break;
	case 0x05:
		return "COMMANDS_SUPPORTED_AND_EFFECTS";
		break;
	case 0x06:
		return "DEVICE_SELF_TEST";
		break;
	case 0x07:
		return "TELEMETRY_HOST_INITIATED";
		break;
	case 0x08:
		return "TELEMETRY_CONTROLLER_INITIATED";
		break;
	case 0xC0:
		return "VS_MEDIA_SMART_LOG";
		break;
	case 0xC1:
		return "VS_DEBUG_LOG1";
		break;
	case 0xC2:
		return "VS_SEC_ERROR_LOG_PAGE";
		break;
	case 0xC3:
		return "VS_LIFE_TIME_DRIVE_HISTORY";
		break;
	case 0xC4:
		return "VS_EXTENDED_SMART_INFO";
		break;
	case 0xC5:
		return "VS_LIST_SUPPORTED_LOG_PAGE";
		break;
	case 0xC6:
		return "VS_POWER_MONITOR_LOG_PAGE";
		break;
	case 0xC7:
		return "VS_CRITICAL_EVENT_LOG_PAGE";
		break;
	case 0xC8:
		return "VS_RECENT_DRIVE_HISTORY";
		break;
	case 0xC9:
		return "VS_SEC_ERROR_LOG_PAGE";
		break;
	case 0xCA:
		return "VS_LIFE_TIME_DRIVE_HISTORY";
		break;
	case 0xCB:
		return "VS_PCIE_ERROR_LOG_PAGE";
		break;
	case 0xCF:
		return "DRAM Supercap SMART Attributes";
		break;
	case 0xD6:
		return "VS_OEM2_WORK_LOAD";
		break;
	case 0xD7:
		return "VS_OEM2_FW_SECURITY";
		break;
	case 0xD8:
		return "VS_OEM2_REVISION";
		break;
	default:
		return "UNKNOWN";
		break;
	}
}

static int stx_is_jag_pan(char *devMN)
{
	int match_found = 1; /* found = 0, not_found = 1 */

	for (int i = 0; i < STX_NUM_LEGACY_DRV; i++) {
		match_found = strncmp(devMN, stx_jag_pan_mn[i], strlen(stx_jag_pan_mn[i]));
		if (match_found == 0) {
			break;
		}
	}

	return match_found;
}


static void json_log_pages_supp(log_page_map *logPageMap)
{
	struct json_object *root;
	struct json_object *logPages;
	__u32 i = 0;

	root = json_create_object();
	logPages = json_create_array();
	json_object_add_value_array(root, "supported_log_pages", logPages);

	for (i = 0; i < le32_to_cpu(logPageMap->NumLogPages); i++) {
		struct json_object *lbaf = json_create_object();
		json_object_add_value_int(lbaf, "logpage_id",
			le32_to_cpu(logPageMap->LogPageEntry[i].LogPageID));
		json_object_add_value_string(lbaf, "logpage_name",
			log_pages_supp_print(le32_to_cpu(logPageMap->LogPageEntry[i].LogPageID)));

		json_array_add_value_object(logPages, lbaf);
	}
	json_print_object(root, NULL);
	json_free_object(root);
}

static int log_pages_supp(int argc, char **argv, struct command *cmd,
						  struct plugin *plugin)
{
	int err = 0;
	__u32 i = 0;
	log_page_map logPageMap;
	const char *desc = "Retrieve Seagate Supported Log-Page information for the given device ";
	const char *output_format = "output in binary format";
	struct nvme_dev *dev;
	int fmt;

	struct config {
		char *output_format;
	};

	struct config cfg = {
		.output_format = "normal",
	};

	OPT_ARGS(opts) = {
		OPT_FMT("output-format", 'o', &cfg.output_format, output_format),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		return err;
	err = nvme_get_log_simple(dev_fd(dev), 0xc5,
				  sizeof(logPageMap), &logPageMap);
	if (!err) {
		if (strcmp(cfg.output_format, "json")) {
			printf ("Seagate Supported Log-pages count :%d\n",
				le32_to_cpu(logPageMap.NumLogPages));
			printf ("%-15s %-30s\n", "LogPage-Id", "LogPage-Name");

			for (fmt = 0; fmt < 45; fmt++)
				printf("-");
			printf("\n");
		} else
			json_log_pages_supp(&logPageMap);

		for (i = 0; i < le32_to_cpu(logPageMap.NumLogPages); i++) {
			if (strcmp(cfg.output_format, "json")) {
				printf("0x%-15X",
					   le32_to_cpu(logPageMap.LogPageEntry[i].LogPageID));
				printf("%-30s\n",
					   log_pages_supp_print(le32_to_cpu(logPageMap.LogPageEntry[i].LogPageID)));
			}
		}
	}

	if (err > 0)
		nvme_show_status(err);
	dev_close(dev);
	return err;
}

/* EOF Command for "log-pages-supp" */


/***************************************
* Extended-SMART Information
***************************************/
static char *print_ext_smart_id(__u8 attrId)
{
	switch (attrId) {
	case VS_ATTR_ID_SOFT_READ_ERROR_RATE:
		return "Soft ECC error count";
		break;
	case VS_ATTR_ID_REALLOCATED_SECTOR_COUNT:
		return "Bad NAND block count";
		break;
	case VS_ATTR_ID_POWER_ON_HOURS:
		return "Power On Hours";
		break;
	case VS_ATTR_ID_POWER_FAIL_EVENT_COUNT:
		return "Power Fail Event Count";
		break;
	case VS_ATTR_ID_DEVICE_POWER_CYCLE_COUNT:
		return "Device Power Cycle Count";
		break;
	case VS_ATTR_ID_RAW_READ_ERROR_RATE:
		return "Raw Read Error Count";
		break;
	case VS_ATTR_ID_GROWN_BAD_BLOCK_COUNT:
		return "Bad NAND block count";
		break;
	case VS_ATTR_ID_END_2_END_CORRECTION_COUNT:
		return "SSD End to end correction counts";
		break;
	case VS_ATTR_ID_MIN_MAX_WEAR_RANGE_COUNT:
		return "User data erase counts";
		break;
	case VS_ATTR_ID_REFRESH_COUNT:
		return "Refresh count";
		break;
	case VS_ATTR_ID_BAD_BLOCK_COUNT_USER:
		return "User data erase fail count";
		break;
	case VS_ATTR_ID_BAD_BLOCK_COUNT_SYSTEM:
		return "System area erase fail count";
		break;
	case VS_ATTR_ID_THERMAL_THROTTLING_STATUS:
		return "Thermal throttling status and count";
		break;
	case VS_ATTR_ID_ALL_PCIE_CORRECTABLE_ERROR_COUNT:
		return "PCIe Correctable Error count";
		break;
	case VS_ATTR_ID_ALL_PCIE_UNCORRECTABLE_ERROR_COUNT:
		return "PCIe Uncorrectable Error count";
		break;
	case VS_ATTR_ID_INCOMPLETE_SHUTDOWN_COUNT:
		return "Incomplete shutdowns";
		break;
	case VS_ATTR_ID_GB_ERASED_LSB:
		return "LSB of Flash GB erased";
		break;
	case VS_ATTR_ID_GB_ERASED_MSB:
		return "MSB of Flash GB erased";
		break;
	case VS_ATTR_ID_LIFETIME_DEVSLEEP_EXIT_COUNT:
		return "LIFETIME_DEV_SLEEP_EXIT_COUNT";
		break;
	case VS_ATTR_ID_LIFETIME_ENTERING_PS4_COUNT:
		return "LIFETIME_ENTERING_PS4_COUNT";
		break;
	case VS_ATTR_ID_LIFETIME_ENTERING_PS3_COUNT:
		return "LIFETIME_ENTERING_PS3_COUNT";
		break;
	case VS_ATTR_ID_RETIRED_BLOCK_COUNT:
		return "Retired block count";
		break;
	case VS_ATTR_ID_PROGRAM_FAILURE_COUNT:
		return "Program fail count";
		break;
	case VS_ATTR_ID_ERASE_FAIL_COUNT:
		return "Erase Fail Count";
		break;
	case VS_ATTR_ID_AVG_ERASE_COUNT:
		return "System data % used";
		break;
	case VS_ATTR_ID_UNEXPECTED_POWER_LOSS_COUNT:
		return "Unexpected power loss count";
		break;
	case VS_ATTR_ID_WEAR_RANGE_DELTA:
		return "Wear range delta";
		break;
	case VS_ATTR_ID_SATA_INTERFACE_DOWNSHIFT_COUNT:
		return "PCIE_INTF_DOWNSHIFT_COUNT";
		break;
	case VS_ATTR_ID_END_TO_END_CRC_ERROR_COUNT:
		return "E2E_CRC_ERROR_COUNT";
		break;
	case VS_ATTR_ID_UNCORRECTABLE_READ_ERRORS:
		return "Uncorrectable Read Error Count";
		break;
	case VS_ATTR_ID_MAX_LIFE_TEMPERATURE:
		return "Max lifetime temperature";
		break;
	case VS_ATTR_ID_RAISE_ECC_CORRECTABLE_ERROR_COUNT:
		return "RAIS_ECC_CORRECT_ERR_COUNT";
		break;
	case VS_ATTR_ID_UNCORRECTABLE_RAISE_ERRORS:
		return "Uncorrectable RAISE error count";
		break;
	case VS_ATTR_ID_DRIVE_LIFE_PROTECTION_STATUS:
		return "DRIVE_LIFE_PROTECTION_STATUS";
		break;
	case VS_ATTR_ID_REMAINING_SSD_LIFE:
		return "Remaining SSD life";
		break;
	case VS_ATTR_ID_LIFETIME_WRITES_TO_FLASH_LSB:
		return "LSB of Physical (NAND) bytes written";
		break;
	case VS_ATTR_ID_LIFETIME_WRITES_TO_FLASH_MSB:
		return "MSB of Physical (NAND) bytes written";
		break;
	case VS_ATTR_ID_LIFETIME_WRITES_FROM_HOST_LSB:
		return "LSB of Physical (HOST) bytes written";
		break;
	case VS_ATTR_ID_LIFETIME_WRITES_FROM_HOST_MSB:
		return "MSB of Physical (HOST) bytes written";
		break;
	case VS_ATTR_ID_LIFETIME_READS_TO_HOST_LSB:
		return "LSB of Physical (NAND) bytes read";
		break;
	case VS_ATTR_ID_LIFETIME_READS_TO_HOST_MSB:
		return "MSB of Physical (NAND) bytes read";
		break;
	case VS_ATTR_ID_FREE_SPACE:
		return "Free Space";
		break;
	case VS_ATTR_ID_TRIM_COUNT_LSB:
		return "LSB of Trim count";
		break;
	case VS_ATTR_ID_TRIM_COUNT_MSB:
		return "MSB of Trim count";
		break;
	case VS_ATTR_ID_OP_PERCENTAGE:
		return "OP percentage";
		break;
	case VS_ATTR_ID_MAX_SOC_LIFE_TEMPERATURE:
		return "Max lifetime SOC temperature";
		break;
	default:
		return "Un-Known";
    }
}

static __u64 smart_attribute_vs(__u16 verNo, SmartVendorSpecific attr)
{
	__u64 val = 0;
	vendor_smart_attribute_data *attrVendor;

	/**
	 * These are all Vendor A specific attributes.
	 */
	if (verNo >= EXTENDED_SMART_VERSION_VENDOR1) {
		attrVendor = (vendor_smart_attribute_data *)&attr;
		memcpy(&val, &(attrVendor->LSDword), sizeof(val));
		return val;
	} else
		return le32_to_cpu(attr.Raw0_3);
}

static void print_smart_log(__u16 verNo, SmartVendorSpecific attr, int lastAttr)
{
	static __u64 lsbGbErased = 0, msbGbErased = 0, lsbLifWrtToFlash = 0, msbLifWrtToFlash = 0,
		lsbLifWrtFrmHost = 0, msbLifWrtFrmHost = 0, lsbLifRdToHost = 0, msbLifRdToHost = 0, lsbTrimCnt = 0, msbTrimCnt = 0;
	char buf[40] = {0};
	char strBuf[35] = {0};
	int hideAttr = 0;

	if (attr.AttributeNumber == VS_ATTR_ID_GB_ERASED_LSB) {
		lsbGbErased = smart_attribute_vs(verNo, attr);
		hideAttr = 1;
	}

	if (attr.AttributeNumber == VS_ATTR_ID_GB_ERASED_MSB) {
		msbGbErased = smart_attribute_vs(verNo, attr);
		hideAttr = 1;
	}

	if (attr.AttributeNumber == VS_ATTR_ID_LIFETIME_WRITES_TO_FLASH_LSB) {
		lsbLifWrtToFlash = smart_attribute_vs(verNo, attr);
		hideAttr = 1;
	}

	if (attr.AttributeNumber == VS_ATTR_ID_LIFETIME_WRITES_TO_FLASH_MSB) {
		msbLifWrtToFlash = smart_attribute_vs(verNo, attr);
		hideAttr = 1;
	}

	if (attr.AttributeNumber == VS_ATTR_ID_LIFETIME_WRITES_FROM_HOST_LSB) {
		lsbLifWrtFrmHost = smart_attribute_vs(verNo, attr);
		hideAttr = 1;
	}

	if (attr.AttributeNumber == VS_ATTR_ID_LIFETIME_WRITES_FROM_HOST_MSB) {
		msbLifWrtFrmHost = smart_attribute_vs(verNo, attr);
		hideAttr = 1;
	}

	if (attr.AttributeNumber == VS_ATTR_ID_LIFETIME_READS_TO_HOST_LSB) {
		lsbLifRdToHost = smart_attribute_vs(verNo, attr);
		hideAttr = 1;
	}

	if (attr.AttributeNumber == VS_ATTR_ID_LIFETIME_READS_TO_HOST_MSB) {
		msbLifRdToHost = smart_attribute_vs(verNo, attr);
		hideAttr = 1;
	}

	if (attr.AttributeNumber == VS_ATTR_ID_TRIM_COUNT_LSB) {
		lsbTrimCnt = smart_attribute_vs(verNo, attr);
		hideAttr = 1;
	}

	if (attr.AttributeNumber == VS_ATTR_ID_TRIM_COUNT_MSB) {
		msbTrimCnt = smart_attribute_vs(verNo, attr);
		hideAttr = 1;
	}

	if ((attr.AttributeNumber != 0) && (hideAttr != 1)) {
		printf("%-40s", print_ext_smart_id(attr.AttributeNumber));
		printf("%-15d", attr.AttributeNumber);
		printf(" 0x%016"PRIx64"\n", (uint64_t)smart_attribute_vs(verNo, attr));
	}

	if (lastAttr == 1) {

		sprintf(strBuf, "%s", (print_ext_smart_id(VS_ATTR_ID_GB_ERASED_LSB) + 7));
		printf("%-40s", strBuf);

		printf("%-15d", VS_ATTR_ID_GB_ERASED_MSB << 8 | VS_ATTR_ID_GB_ERASED_LSB);

		sprintf(buf, "0x%016"PRIx64"%016"PRIx64"", (uint64_t)msbGbErased, (uint64_t)lsbGbErased);
		printf(" %s\n", buf);

		sprintf(strBuf, "%s", (print_ext_smart_id(VS_ATTR_ID_LIFETIME_WRITES_TO_FLASH_LSB) + 7));
		printf("%-40s", strBuf);

		printf("%-15d", VS_ATTR_ID_LIFETIME_WRITES_TO_FLASH_MSB << 8 | VS_ATTR_ID_LIFETIME_WRITES_TO_FLASH_LSB);

		sprintf(buf, "0x%016"PRIx64"%016"PRIx64"", (uint64_t)msbLifWrtToFlash, (uint64_t)lsbLifWrtToFlash);
		printf(" %s\n", buf);

		sprintf(strBuf, "%s", (print_ext_smart_id(VS_ATTR_ID_LIFETIME_WRITES_FROM_HOST_LSB) + 7));
		printf("%-40s", strBuf);

		printf("%-15d", VS_ATTR_ID_LIFETIME_WRITES_FROM_HOST_MSB << 8 | VS_ATTR_ID_LIFETIME_WRITES_FROM_HOST_LSB);

		sprintf(buf, "0x%016"PRIx64"%016"PRIx64"", (uint64_t)msbLifWrtFrmHost, (uint64_t)lsbLifWrtFrmHost);
		printf(" %s\n", buf);

		sprintf(strBuf, "%s", (print_ext_smart_id(VS_ATTR_ID_LIFETIME_READS_TO_HOST_LSB) + 7));
		printf("%-40s", strBuf);

		printf("%-15d", VS_ATTR_ID_LIFETIME_READS_TO_HOST_MSB << 8 | VS_ATTR_ID_LIFETIME_READS_TO_HOST_LSB);

		sprintf(buf, "0x%016"PRIx64"%016"PRIx64"", (uint64_t)msbLifRdToHost, (uint64_t)lsbLifRdToHost);
		printf(" %s\n", buf);

		sprintf(strBuf, "%s", (print_ext_smart_id(VS_ATTR_ID_TRIM_COUNT_LSB) + 7));
		printf("%-40s", strBuf);

		printf("%-15d", VS_ATTR_ID_TRIM_COUNT_MSB << 8 | VS_ATTR_ID_TRIM_COUNT_LSB);

		sprintf(buf, "0x%016"PRIx64"%016"PRIx64"", (uint64_t)msbTrimCnt, (uint64_t)lsbTrimCnt);
		printf(" %s\n", buf);

	}
}

static void json_print_smart_log(struct json_object *root, EXTENDED_SMART_INFO_T *ExtdSMARTInfo)
{
	struct json_object *lbafs;
	int index = 0;

	static __u64 lsbGbErased = 0, msbGbErased = 0, lsbLifWrtToFlash = 0, msbLifWrtToFlash = 0,
		lsbLifWrtFrmHost = 0, msbLifWrtFrmHost = 0, lsbLifRdToHost = 0, msbLifRdToHost = 0, lsbTrimCnt = 0, msbTrimCnt = 0;
	char buf[40] = {0};

	lbafs = json_create_array();
	json_object_add_value_array(root, "Extended-SMART-Attributes", lbafs);

	for (index = 0; index < NUMBER_EXTENDED_SMART_ATTRIBUTES; index++) {
		struct json_object *lbaf = json_create_object();
		if (ExtdSMARTInfo->vendorData[index].AttributeNumber != 0) {
			json_object_add_value_string(lbaf, "attribute_name", print_ext_smart_id(ExtdSMARTInfo->vendorData[index].AttributeNumber));
			json_object_add_value_int(lbaf, "attribute_id", ExtdSMARTInfo->vendorData[index].AttributeNumber);
			json_object_add_value_int(lbaf, "attribute_value", smart_attribute_vs(ExtdSMARTInfo->Version, ExtdSMARTInfo->vendorData[index]));
			json_array_add_value_object(lbafs, lbaf);

			if (ExtdSMARTInfo->vendorData[index].AttributeNumber == VS_ATTR_ID_GB_ERASED_LSB)
				lsbGbErased = smart_attribute_vs(ExtdSMARTInfo->Version, ExtdSMARTInfo->vendorData[index]);

			if (ExtdSMARTInfo->vendorData[index].AttributeNumber == VS_ATTR_ID_GB_ERASED_MSB)
				msbGbErased = smart_attribute_vs(ExtdSMARTInfo->Version, ExtdSMARTInfo->vendorData[index]);

			if (ExtdSMARTInfo->vendorData[index].AttributeNumber == VS_ATTR_ID_LIFETIME_WRITES_TO_FLASH_LSB)
				lsbLifWrtToFlash = smart_attribute_vs(ExtdSMARTInfo->Version, ExtdSMARTInfo->vendorData[index]);

			if (ExtdSMARTInfo->vendorData[index].AttributeNumber == VS_ATTR_ID_LIFETIME_WRITES_TO_FLASH_MSB)
				msbLifWrtToFlash = smart_attribute_vs(ExtdSMARTInfo->Version, ExtdSMARTInfo->vendorData[index]);

			if (ExtdSMARTInfo->vendorData[index].AttributeNumber == VS_ATTR_ID_LIFETIME_WRITES_FROM_HOST_LSB)
				lsbLifWrtFrmHost = smart_attribute_vs(ExtdSMARTInfo->Version, ExtdSMARTInfo->vendorData[index]);

			if (ExtdSMARTInfo->vendorData[index].AttributeNumber == VS_ATTR_ID_LIFETIME_WRITES_FROM_HOST_MSB)
				msbLifWrtFrmHost = smart_attribute_vs(ExtdSMARTInfo->Version, ExtdSMARTInfo->vendorData[index]);

			if (ExtdSMARTInfo->vendorData[index].AttributeNumber == VS_ATTR_ID_LIFETIME_READS_TO_HOST_LSB)
				lsbLifRdToHost = smart_attribute_vs(ExtdSMARTInfo->Version, ExtdSMARTInfo->vendorData[index]);

			if (ExtdSMARTInfo->vendorData[index].AttributeNumber == VS_ATTR_ID_LIFETIME_READS_TO_HOST_MSB)
				msbLifRdToHost = smart_attribute_vs(ExtdSMARTInfo->Version, ExtdSMARTInfo->vendorData[index]);

			if (ExtdSMARTInfo->vendorData[index].AttributeNumber == VS_ATTR_ID_TRIM_COUNT_LSB)
				lsbTrimCnt = smart_attribute_vs(ExtdSMARTInfo->Version, ExtdSMARTInfo->vendorData[index]);

			if (ExtdSMARTInfo->vendorData[index].AttributeNumber == VS_ATTR_ID_TRIM_COUNT_MSB)
				msbTrimCnt = smart_attribute_vs(ExtdSMARTInfo->Version, ExtdSMARTInfo->vendorData[index]);
		}
	}

	struct json_object *lbaf = json_create_object();

	json_object_add_value_string(lbaf, "attribute_name", (print_ext_smart_id(VS_ATTR_ID_GB_ERASED_LSB) + 7));

	json_object_add_value_int(lbaf, "attribute_id", VS_ATTR_ID_GB_ERASED_MSB << 8 | VS_ATTR_ID_GB_ERASED_LSB);

	sprintf(buf, "0x%016"PRIx64"%016"PRIx64"", (uint64_t)msbGbErased, (uint64_t)lsbGbErased);
	json_object_add_value_string(lbaf, "attribute_value", buf);
	json_array_add_value_object(lbafs, lbaf);


	lbaf = json_create_object();

	json_object_add_value_string(lbaf, "attribute_name", (print_ext_smart_id(VS_ATTR_ID_LIFETIME_WRITES_TO_FLASH_LSB) + 7));

	json_object_add_value_int(lbaf, "attribute_id", VS_ATTR_ID_LIFETIME_WRITES_TO_FLASH_MSB << 8 | VS_ATTR_ID_LIFETIME_WRITES_TO_FLASH_LSB);

	sprintf(buf, "0x%016"PRIx64"%016"PRIx64"", (uint64_t)msbLifWrtToFlash, (uint64_t)lsbLifWrtToFlash);
	json_object_add_value_string(lbaf, "attribute_value", buf);
	json_array_add_value_object(lbafs, lbaf);


	lbaf = json_create_object();

	json_object_add_value_string(lbaf, "attribute_name", (print_ext_smart_id(VS_ATTR_ID_LIFETIME_WRITES_FROM_HOST_LSB) + 7));

	json_object_add_value_int(lbaf, "attribute_id", VS_ATTR_ID_LIFETIME_WRITES_FROM_HOST_MSB << 8 | VS_ATTR_ID_LIFETIME_WRITES_FROM_HOST_LSB);

	sprintf(buf, "0x%016"PRIx64"%016"PRIx64"", (uint64_t)msbLifWrtFrmHost, (uint64_t)lsbLifWrtFrmHost);
	json_object_add_value_string(lbaf, "attribute_value", buf);
	json_array_add_value_object(lbafs, lbaf);


	lbaf = json_create_object();

	json_object_add_value_string(lbaf, "attribute_name", (print_ext_smart_id(VS_ATTR_ID_LIFETIME_READS_TO_HOST_LSB) + 7));

	json_object_add_value_int(lbaf, "attribute_id", VS_ATTR_ID_LIFETIME_READS_TO_HOST_MSB << 8 | VS_ATTR_ID_LIFETIME_READS_TO_HOST_LSB);

	sprintf(buf, "0x%016"PRIx64"%016"PRIx64"", (uint64_t)msbLifRdToHost, (uint64_t)lsbLifRdToHost);
	json_object_add_value_string(lbaf, "attribute_value", buf);
	json_array_add_value_object(lbafs, lbaf);


	lbaf = json_create_object();

	json_object_add_value_string(lbaf, "attribute_name", (print_ext_smart_id(VS_ATTR_ID_TRIM_COUNT_LSB) + 7));

	json_object_add_value_int(lbaf, "attribute_id", VS_ATTR_ID_TRIM_COUNT_MSB << 8 | VS_ATTR_ID_TRIM_COUNT_LSB);

	sprintf(buf, "0x%016"PRIx64"%016"PRIx64"", (uint64_t)msbTrimCnt, (uint64_t)lsbTrimCnt);
	json_object_add_value_string(lbaf, "attribute_value", buf);
	json_array_add_value_object(lbafs, lbaf);
}

static void print_smart_log_CF(vendor_log_page_CF *pLogPageCF)
{
	__u64 currentTemp, maxTemp;
	printf("\n\nSeagate DRAM Supercap SMART Attributes :\n");
	printf("%-39s %-19s \n", "Description", "Supercap Attributes");

	printf("%-40s", "Super-cap current temperature");
	currentTemp = pLogPageCF->AttrCF.SuperCapCurrentTemperature;
	printf(" 0x%016"PRIx64"\n", le64_to_cpu(currentTemp));

	maxTemp = pLogPageCF->AttrCF.SuperCapMaximumTemperature;
	printf("%-40s", "Super-cap maximum temperature");
	printf(" 0x%016"PRIx64"\n", le64_to_cpu(maxTemp));

	printf("%-40s", "Super-cap status");
	printf(" 0x%016"PRIx64"\n", le64_to_cpu(pLogPageCF->AttrCF.SuperCapStatus));

	printf("%-40s", "Data units read to DRAM namespace");
	printf(" 0x%016"PRIx64"%016"PRIx64"\n", le64_to_cpu(pLogPageCF->AttrCF.DataUnitsReadToDramNamespace.MS__u64),
		   le64_to_cpu(pLogPageCF->AttrCF.DataUnitsReadToDramNamespace.LS__u64));

	printf("%-40s", "Data units written to DRAM namespace");
	printf(" 0x%016"PRIx64"%016"PRIx64"\n", le64_to_cpu(pLogPageCF->AttrCF.DataUnitsWrittenToDramNamespace.MS__u64),
		   le64_to_cpu(pLogPageCF->AttrCF.DataUnitsWrittenToDramNamespace.LS__u64));

	printf("%-40s", "DRAM correctable error count");
	printf(" 0x%016"PRIx64"\n", le64_to_cpu(pLogPageCF->AttrCF.DramCorrectableErrorCount));

	printf("%-40s", "DRAM uncorrectable error count");
	printf(" 0x%016"PRIx64"\n", le64_to_cpu(pLogPageCF->AttrCF.DramUncorrectableErrorCount));
}

static void json_print_smart_log_CF(struct json_object *root, vendor_log_page_CF *pLogPageCF)
{
	struct json_object *logPages;
	unsigned int currentTemp, maxTemp;
	char buf[40];

	logPages = json_create_array();
	json_object_add_value_array(root, "DRAM Supercap SMART Attributes", logPages);
	struct json_object *lbaf = json_create_object();

	currentTemp = pLogPageCF->AttrCF.SuperCapCurrentTemperature;
	json_object_add_value_string(lbaf, "attribute_name", "Super-cap current temperature");
	json_object_add_value_int(lbaf, "attribute_value", currentTemp);
	json_array_add_value_object(logPages, lbaf);

	lbaf = json_create_object();
	maxTemp = pLogPageCF->AttrCF.SuperCapMaximumTemperature;
	json_object_add_value_string(lbaf, "attribute_name", "Super-cap maximum temperature");
	json_object_add_value_int(lbaf, "attribute_value", maxTemp);
	json_array_add_value_object(logPages, lbaf);

	lbaf = json_create_object();
	json_object_add_value_string(lbaf, "attribute_name", "Super-cap status");
	json_object_add_value_int(lbaf, "attribute_value", pLogPageCF->AttrCF.SuperCapStatus);
	json_array_add_value_object(logPages, lbaf);

	lbaf = json_create_object();
	json_object_add_value_string(lbaf, "attribute_name", "Data units read to DRAM namespace");
	memset(buf, 0, sizeof(buf));
	sprintf(buf, "0x%016"PRIx64"%016"PRIx64"", le64_to_cpu(pLogPageCF->AttrCF.DataUnitsReadToDramNamespace.MS__u64),
		le64_to_cpu(pLogPageCF->AttrCF.DataUnitsReadToDramNamespace.LS__u64));
	json_object_add_value_string(lbaf, "attribute_value", buf);
	json_array_add_value_object(logPages, lbaf);

	lbaf = json_create_object();
	json_object_add_value_string(lbaf, "attribute_name", "Data units written to DRAM namespace");
	memset(buf, 0, sizeof(buf));
	sprintf(buf, "0x%016"PRIx64"%016"PRIx64"", le64_to_cpu(pLogPageCF->AttrCF.DataUnitsWrittenToDramNamespace.MS__u64),
		le64_to_cpu(pLogPageCF->AttrCF.DataUnitsWrittenToDramNamespace.LS__u64));
	json_object_add_value_string(lbaf, "attribute_value", buf);
	json_array_add_value_object(logPages, lbaf);

	lbaf = json_create_object();
	json_object_add_value_string(lbaf, "attribute_name", "DRAM correctable error count");
	json_object_add_value_int(lbaf, "attribute_value", pLogPageCF->AttrCF.DramCorrectableErrorCount);
	json_array_add_value_object(logPages, lbaf);

	lbaf = json_create_object();
	json_object_add_value_string(lbaf, "attribute_name", "DRAM uncorrectable error count");
	json_object_add_value_int(lbaf, "attribute_value", pLogPageCF->AttrCF.DramUncorrectableErrorCount);
	json_array_add_value_object(logPages, lbaf);
}


static void print_stx_smart_log_C0(STX_EXT_SMART_LOG_PAGE_C0 *pLogPageC0)
{
	printf("\n\nSeagate SMART Health Attributes :\n");
	printf("%-39s %-19s \n", "Description", "Health Attributes");

	printf("%-40s", "Physical Media Units Written");
	printf(" 0x%016"PRIx64"%016"PRIx64"\n", le64_to_cpu(pLogPageC0->phyMediaUnitsWrt.MS__u64),
		   le64_to_cpu(pLogPageC0->phyMediaUnitsWrt.LS__u64));

	printf("%-40s", "Physical Media Units Read");
	printf(" 0x%016"PRIx64"%016"PRIx64"\n", le64_to_cpu(pLogPageC0->phyMediaUnitsRd.MS__u64),
		   le64_to_cpu(pLogPageC0->phyMediaUnitsRd.LS__u64));

	printf("%-40s", "Bad User NAND Blocks");
	printf(" 0x%016"PRIx64"\n", le64_to_cpu(pLogPageC0->badUsrNandBlocks));

	printf("%-40s", "Bad System NAND Blocks");
	printf(" 0x%016"PRIx64"\n", le64_to_cpu(pLogPageC0->badSysNandBlocks));

	printf("%-40s", "XOR Recovery Count");
	printf(" 0x%016"PRIx64"\n", le64_to_cpu(pLogPageC0->xorRecoveryCnt));

	printf("%-40s", "Uncorrectable Read Error Count");
	printf(" 0x%016"PRIx64"\n", le64_to_cpu(pLogPageC0->ucRdEc));

	printf("%-40s", "Soft ECC Error Count");
	printf(" 0x%016"PRIx64"\n", le64_to_cpu(pLogPageC0->softEccEc));

	printf("%-40s", "End to End Correction Counts");
	printf(" 0x%016"PRIx64"\n", le64_to_cpu(pLogPageC0->etoeCrrCnt));

	printf("%-40s", "System Data Used in Parcent");
	printf(" 0x%016"PRIx64"\n", le64_to_cpu(pLogPageC0->sysDataUsed));

	printf("%-40s", "Refresh Counts");
	printf(" 0x%016"PRIx64"\n", le64_to_cpu(pLogPageC0->refreshCount));

	printf("%-40s", "User Data Erase Counts");
	printf(" 0x%016"PRIx64"\n", le64_to_cpu(pLogPageC0->usrDataEraseCnt));

	printf("%-40s", "Thermal Throttling Status and Count");
	printf(" 0x%04x\n", le16_to_cpu(pLogPageC0->thermalThrottling));

	printf("%-40s", "DSSD Specification Version");
	printf(" %d.%d.%d.%d\n", pLogPageC0->dssdSpecVerMajor,
				le16_to_cpu(pLogPageC0->dssdSpecVerMinor),
				le16_to_cpu(pLogPageC0->dssdSpecVerPoint),
				pLogPageC0->dssdSpecVerErrata);

	printf("%-40s", "PCIe Correctable Error Count");
	printf(" 0x%016"PRIx64"\n", le64_to_cpu(pLogPageC0->pcieCorrEc));

	printf("%-40s", "Incomplete Shutdowns");
	printf(" 0x%08x\n", le32_to_cpu(pLogPageC0->incompleteShutdowns));

	printf("%-40s", "Free Blocks in Percent");
	printf(" %d\n", pLogPageC0->freeBlocks);

	printf("%-40s", "Capacitor Health");
	printf(" 0x%04x\n", le16_to_cpu(pLogPageC0->capHealth));

	printf("%-40s", "NVMe Errata Version");
	printf(" %c\n", pLogPageC0->nvmeErrataVer);

	printf("%-40s", "Unaligned IO");
	printf(" 0x%016"PRIx64"\n", le64_to_cpu(pLogPageC0->unalignedIO));

	printf("%-40s", "Security Version Number");
	printf(" 0x%016"PRIx64"\n", le64_to_cpu(pLogPageC0->secVerNum));

	printf("%-40s", "Total Namespace Utilization");
	printf(" 0x%016"PRIx64"\n", le64_to_cpu(pLogPageC0->totalNUSE));

	printf("%-40s", "PLP Start Count");
	printf(" 0x%016"PRIx64"%016"PRIx64"\n", le64_to_cpu(pLogPageC0->plpStartCnt.MS__u64),
		   le64_to_cpu(pLogPageC0->plpStartCnt.LS__u64));

	printf("%-40s", "Endurance Estimate");
	printf(" 0x%016"PRIx64"%016"PRIx64"\n", le64_to_cpu(pLogPageC0->enduranceEstimate.MS__u64),
		   le64_to_cpu(pLogPageC0->enduranceEstimate.LS__u64));

	printf("%-40s", "PCIe Link Retraining Count");
	printf(" 0x%016"PRIx64"\n", le64_to_cpu(pLogPageC0->pcieLinkRetCnt));

	printf("%-40s", "Power State Change Count");
	printf(" 0x%016"PRIx64"\n", le64_to_cpu(pLogPageC0->powStateChangeCnt));

	printf("%-40s", "Log Page Version");
	printf(" 0x%04x\n", le16_to_cpu(pLogPageC0->logPageVer));

	printf("%-40s", "Log Page GUID");
	printf(" 0x%016"PRIx64"%016"PRIx64"\n", le64_to_cpu(pLogPageC0->logPageGUID.MS__u64),
				le64_to_cpu(pLogPageC0->logPageGUID.LS__u64));
}

static void json_print_stx_smart_log_C0(struct json_object *root, STX_EXT_SMART_LOG_PAGE_C0 *pLogPageC0)
{
	struct json_object *logPages;
	char buf[40];

	logPages = json_create_array();
	json_object_add_value_array(root, "Seagate SMART Health Attributes", logPages);

	struct json_object *lbaf = json_create_object();

	json_object_add_value_string(lbaf, "attribute_name", "Physical Media Units Written");
	memset(buf, 0, sizeof(buf));
	sprintf(buf, "0x%016"PRIx64"%016"PRIx64"", le64_to_cpu(pLogPageC0->phyMediaUnitsWrt.MS__u64),
		le64_to_cpu(pLogPageC0->phyMediaUnitsWrt.LS__u64));
	json_object_add_value_string(lbaf, "attribute_value", buf);
	json_array_add_value_object(logPages, lbaf);


	lbaf = json_create_object();
	json_object_add_value_string(lbaf, "attribute_name", "Physical Media Units Read");
	memset(buf, 0, sizeof(buf));
	sprintf(buf, "0x%016"PRIx64"%016"PRIx64"", le64_to_cpu(pLogPageC0->phyMediaUnitsRd.MS__u64),
		le64_to_cpu(pLogPageC0->phyMediaUnitsRd.LS__u64));
	json_object_add_value_string(lbaf, "attribute_value", buf);
	json_array_add_value_object(logPages, lbaf);

	lbaf = json_create_object();
	json_object_add_value_string(lbaf, "attribute_name", "Bad User NAND Blocks");
	json_object_add_value_int(lbaf, "attribute_value", le64_to_cpu(pLogPageC0->badUsrNandBlocks));
	json_array_add_value_object(logPages, lbaf);

	lbaf = json_create_object();
	json_object_add_value_string(lbaf, "attribute_name", "Bad System NAND Blocks");
	json_object_add_value_int(lbaf, "attribute_value", le64_to_cpu(pLogPageC0->badSysNandBlocks));
	json_array_add_value_object(logPages, lbaf);

	lbaf = json_create_object();
	json_object_add_value_string(lbaf, "attribute_name", "XOR Recovery Count");
	json_object_add_value_int(lbaf, "attribute_value", le64_to_cpu(pLogPageC0->xorRecoveryCnt));
	json_array_add_value_object(logPages, lbaf);

	lbaf = json_create_object();
	json_object_add_value_string(lbaf, "attribute_name", "Uncorrectable Read Error Count");
	json_object_add_value_int(lbaf, "attribute_value", le64_to_cpu(pLogPageC0->ucRdEc));
	json_array_add_value_object(logPages, lbaf);

	lbaf = json_create_object();
	json_object_add_value_string(lbaf, "attribute_name", "Soft ECC Error Count");
	json_object_add_value_int(lbaf, "attribute_value", le64_to_cpu(pLogPageC0->softEccEc));
	json_array_add_value_object(logPages, lbaf);

	lbaf = json_create_object();
	json_object_add_value_string(lbaf, "attribute_name", "End to End Correction Counts");
	json_object_add_value_int(lbaf, "attribute_value", le64_to_cpu(pLogPageC0->etoeCrrCnt));
	json_array_add_value_object(logPages, lbaf);

	lbaf = json_create_object();
	json_object_add_value_string(lbaf, "attribute_name", "System Data Used in Parcent");
	json_object_add_value_int(lbaf, "attribute_value", le64_to_cpu(pLogPageC0->sysDataUsed));
	json_array_add_value_object(logPages, lbaf);

	lbaf = json_create_object();
	json_object_add_value_string(lbaf, "attribute_name", "Refresh Counts");
	json_object_add_value_int(lbaf, "attribute_value", le64_to_cpu(pLogPageC0->refreshCount));
	json_array_add_value_object(logPages, lbaf);

	lbaf = json_create_object();
	json_object_add_value_string(lbaf, "attribute_name", "User Data Erase Counts");
	json_object_add_value_int(lbaf, "attribute_value", le64_to_cpu(pLogPageC0->usrDataEraseCnt));
	json_array_add_value_object(logPages, lbaf);

	lbaf = json_create_object();
	json_object_add_value_string(lbaf, "attribute_name", "Thermal Throttling Status and Count");
	json_object_add_value_int(lbaf, "attribute_value", le16_to_cpu(pLogPageC0->thermalThrottling));
	json_array_add_value_object(logPages, lbaf);

	lbaf = json_create_object();
	json_object_add_value_string(lbaf, "attribute_name", "DSSD Specification Version");
	memset(buf, 0, sizeof(buf));
	sprintf(buf, "%d.%d.%d.%d", pLogPageC0->dssdSpecVerMajor,
					le16_to_cpu(pLogPageC0->dssdSpecVerMinor),
					le16_to_cpu(pLogPageC0->dssdSpecVerPoint),
					pLogPageC0->dssdSpecVerErrata);
	json_object_add_value_string(lbaf, "attribute_value", buf);
	json_array_add_value_object(logPages, lbaf);

	lbaf = json_create_object();
	json_object_add_value_string(lbaf, "attribute_name", "PCIe Correctable Error Count");
	json_object_add_value_int(lbaf, "attribute_value", le64_to_cpu(pLogPageC0->pcieCorrEc));
	json_array_add_value_object(logPages, lbaf);

	lbaf = json_create_object();
	json_object_add_value_string(lbaf, "attribute_name", "Incomplete Shutdowns");
	json_object_add_value_int(lbaf, "attribute_value", le32_to_cpu(pLogPageC0->incompleteShutdowns));
	json_array_add_value_object(logPages, lbaf);

	lbaf = json_create_object();
	json_object_add_value_string(lbaf, "attribute_name", "Free Blocks in Percent");
	json_object_add_value_int(lbaf, "attribute_value", pLogPageC0->freeBlocks);
	json_array_add_value_object(logPages, lbaf);

	lbaf = json_create_object();
	json_object_add_value_string(lbaf, "attribute_name", "Capacitor Health");
	json_object_add_value_int(lbaf, "attribute_value", le16_to_cpu(pLogPageC0->capHealth));
	json_array_add_value_object(logPages, lbaf);

	lbaf = json_create_object();
	json_object_add_value_string(lbaf, "attribute_name", "NVMe Errata Version");
	json_object_add_value_int(lbaf, "attribute_value", pLogPageC0->nvmeErrataVer);
	json_array_add_value_object(logPages, lbaf);

	lbaf = json_create_object();
	json_object_add_value_string(lbaf, "attribute_name", "Unaligned IO");
	json_object_add_value_int(lbaf, "attribute_value", le64_to_cpu(pLogPageC0->unalignedIO));
	json_array_add_value_object(logPages, lbaf);

	lbaf = json_create_object();
	json_object_add_value_string(lbaf, "attribute_name", "Security Version Number");
	json_object_add_value_int(lbaf, "attribute_value", le64_to_cpu(pLogPageC0->secVerNum));
	json_array_add_value_object(logPages, lbaf);

	lbaf = json_create_object();
	json_object_add_value_string(lbaf, "attribute_name", "Total Namespace Utilization");
	json_object_add_value_int(lbaf, "attribute_value", le64_to_cpu(pLogPageC0->totalNUSE));
	json_array_add_value_object(logPages, lbaf);

	lbaf = json_create_object();
	json_object_add_value_string(lbaf, "attribute_name", "PLP Start Count");
	memset(buf, 0, sizeof(buf));
	sprintf(buf, "0x%016"PRIx64"%016"PRIx64"", le64_to_cpu(pLogPageC0->plpStartCnt.MS__u64),
		le64_to_cpu(pLogPageC0->plpStartCnt.LS__u64));
	json_object_add_value_string(lbaf, "attribute_value", buf);
	json_array_add_value_object(logPages, lbaf);

	lbaf = json_create_object();
	json_object_add_value_string(lbaf, "attribute_name", "Endurance Estimate");
	memset(buf, 0, sizeof(buf));
	sprintf(buf, "0x%016"PRIx64"%016"PRIx64"", le64_to_cpu(pLogPageC0->enduranceEstimate.MS__u64),
		le64_to_cpu(pLogPageC0->enduranceEstimate.LS__u64));
	json_object_add_value_string(lbaf, "attribute_value", buf);
	json_array_add_value_object(logPages, lbaf);

	lbaf = json_create_object();
	json_object_add_value_string(lbaf, "attribute_name", "PCIe Link Retraining Count");
	json_object_add_value_int(lbaf, "attribute_value", le64_to_cpu(pLogPageC0->pcieLinkRetCnt));
	json_array_add_value_object(logPages, lbaf);

	lbaf = json_create_object();
	json_object_add_value_string(lbaf, "attribute_name", "Power State Change Count");
	json_object_add_value_int(lbaf, "attribute_value", le64_to_cpu(pLogPageC0->powStateChangeCnt));
	json_array_add_value_object(logPages, lbaf);

	lbaf = json_create_object();
	json_object_add_value_string(lbaf, "attribute_name", "Log Page Version");
	json_object_add_value_int(lbaf, "attribute_value", le16_to_cpu(pLogPageC0->logPageVer));
	json_array_add_value_object(logPages, lbaf);

	lbaf = json_create_object();
	json_object_add_value_string(lbaf, "attribute_name", "Log Page GUID");
	memset(buf, 0, sizeof(buf));
	sprintf(buf, "0x%016"PRIx64"%016"PRIx64"", le64_to_cpu(pLogPageC0->logPageGUID.MS__u64),
		le64_to_cpu(pLogPageC0->logPageGUID.LS__u64));
	json_object_add_value_string(lbaf, "attribute_value", buf);
	json_array_add_value_object(logPages, lbaf);
}

static int vs_smart_log(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	struct nvme_id_ctrl     ctrl;
	char                    modelNo[40];
	STX_EXT_SMART_LOG_PAGE_C0   ehExtSmart;
	EXTENDED_SMART_INFO_T   ExtdSMARTInfo;
	vendor_log_page_CF      logPageCF;
	struct json_object *root = json_create_object();
	struct json_object *lbafs = json_create_array();
	struct json_object *lbafs_ExtSmart, *lbafs_DramSmart;

	const char *desc = "Retrieve the Firmware Activation History for Seagate NVMe drives";
	const char *output_format = "output in binary format";
	struct nvme_dev *dev;
	int err, index = 0;
	struct config {
		char *output_format;
	};

	struct config cfg = {
		.output_format = "normal",
	};

	OPT_ARGS(opts) = {
		OPT_FMT("output-format", 'o', &cfg.output_format, output_format),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err) {
		printf ("\nDevice not found \n");
		return -1;
	}

	if (strcmp(cfg.output_format, "json"))
		printf("Seagate Extended SMART Information :\n");


	/**
	 * Here we should identify if the drive is a Panthor or Jaguar.
	 * Here we need to extract the model no from ctrl-id abd use it
	 * to deternine drive family.
	 */

	err = nvme_identify_ctrl(dev_fd(dev), &ctrl);
	if (!err) {
		memcpy(modelNo, ctrl.mn, sizeof(modelNo));
	} else {
		nvme_show_status(err);
		return err;
	}

	if (stx_is_jag_pan(modelNo) == 0) {

		err = nvme_get_log_simple(dev_fd(dev), 0xC4, sizeof(ExtdSMARTInfo), &ExtdSMARTInfo);
		if (!err) {
			if (strcmp(cfg.output_format, "json")) {
				printf("%-39s %-15s %-19s \n", "Description", "Ext-Smart-Id", "Ext-Smart-Value");
				for (index = 0; index < 80; index++)
					printf("-");
				printf("\n");
				for (index = 0; index < NUMBER_EXTENDED_SMART_ATTRIBUTES; index++)
					print_smart_log(ExtdSMARTInfo.Version, ExtdSMARTInfo.vendorData[index], index == (NUMBER_EXTENDED_SMART_ATTRIBUTES - 1));

			} else {
				lbafs_ExtSmart = json_create_object();
				json_print_smart_log(lbafs_ExtSmart, &ExtdSMARTInfo);

				json_object_add_value_array(root, "SMART-Attributes", lbafs);
				json_array_add_value_object(lbafs, lbafs_ExtSmart);
			}

			/**
			 * Next get Log Page 0xCF
			 */

			err = nvme_get_log_simple(dev_fd(dev), 0xCF, sizeof(logPageCF), &logPageCF);
			if (!err) {
				if (strcmp(cfg.output_format, "json")) {
					print_smart_log_CF(&logPageCF);
				} else {
					lbafs_DramSmart = json_create_object();
					json_print_smart_log_CF(lbafs_DramSmart, &logPageCF);
					json_array_add_value_object(lbafs, lbafs_DramSmart);
					json_print_object(root, NULL);
				}
			} else if (!strcmp(cfg.output_format, "json")) {
				json_print_object(root, NULL);
				json_free_object(root);
			}
		} else if (err > 0)
			nvme_show_status(err);
	} else {
		err = nvme_get_log_simple(dev_fd(dev), 0xC0, sizeof(ehExtSmart), &ehExtSmart);

		if (!err) {
			if (strcmp(cfg.output_format, "json")) {
				print_stx_smart_log_C0(&ehExtSmart);

			} else {
				lbafs_ExtSmart = json_create_object();
				json_print_stx_smart_log_C0(lbafs_ExtSmart, &ehExtSmart);

				json_object_add_value_array(root, "SMART-Attributes", lbafs);
				json_array_add_value_object(lbafs, lbafs_ExtSmart);

				json_print_object(root, NULL);
				json_free_object(root);
			}
		}

		if (err > 0)
			nvme_show_status(err);
	}

	err = nvme_get_log_simple(dev_fd(dev), 0xC4,
				  sizeof(ExtdSMARTInfo), &ExtdSMARTInfo);
	if (!err) {
		if (strcmp(cfg.output_format, "json")) {
			printf("%-39s %-15s %-19s \n", "Description", "Ext-Smart-Id", "Ext-Smart-Value");
			for (index = 0; index < 80; index++)
				printf("-");
			printf("\n");
			for (index = 0; index < NUMBER_EXTENDED_SMART_ATTRIBUTES; index++)
				print_smart_log(ExtdSMARTInfo.Version, ExtdSMARTInfo.vendorData[index], index == (NUMBER_EXTENDED_SMART_ATTRIBUTES - 1));

		} else {
			lbafs_ExtSmart = json_create_object();
			json_print_smart_log(lbafs_ExtSmart, &ExtdSMARTInfo);

			json_object_add_value_array(root, "SMART-Attributes", lbafs);
			json_array_add_value_object(lbafs, lbafs_ExtSmart);
		}

		/**
		 * Next get Log Page 0xCF
		 */

		err = nvme_get_log_simple(dev_fd(dev), 0xCF,
					  sizeof(logPageCF), &logPageCF);
		if (!err) {
			if (strcmp(cfg.output_format, "json")) {
				print_smart_log_CF(&logPageCF);
			} else {
				lbafs_DramSmart = json_create_object();
				json_print_smart_log_CF(lbafs_DramSmart, &logPageCF);
				json_array_add_value_object(lbafs, lbafs_DramSmart);
				json_print_object(root, NULL);
			}
		} else if (!strcmp(cfg.output_format, "json"))
			json_print_object(root, NULL);
	} else if (err > 0)
		nvme_show_status(err);

	dev_close(dev);

	return err;
}

/*EOF Extended-SMART Information */

/***************************************
 * Temperature-Stats information
 ***************************************/
static void json_temp_stats(__u32 temperature, __u32 PcbTemp, __u32 SocTemp, __u32 maxTemperature,
							__u32 MaxSocTemp, __u32 cf_err, __u32 scCurrentTemp, __u32 scMaxTem)
{
	struct json_object *root;
	root = json_create_object();

	json_object_add_value_int(root, "Current temperature", temperature);
	json_object_add_value_int(root, "Current PCB temperature", PcbTemp);
	json_object_add_value_int(root, "Current SOC temperature", SocTemp);
	json_object_add_value_int(root, "Highest temperature", maxTemperature);
	json_object_add_value_int(root, "Max SOC temperature", MaxSocTemp);
	if (!cf_err) {
		json_object_add_value_int(root, "SuperCap Current temperature", scCurrentTemp);
		json_object_add_value_int(root, "SuperCap Max temperature", scMaxTem);
	}

	json_print_object(root, NULL);
}

static int temp_stats(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	struct nvme_smart_log smart_log;
	EXTENDED_SMART_INFO_T ExtdSMARTInfo;
	vendor_log_page_CF    logPageCF;

	int err, cf_err;
	int index;
	const char *desc = "Retrieve Seagate Temperature Stats information for the given device ";
	const char *output_format = "output in binary format";
	unsigned int temperature = 0, PcbTemp = 0, SocTemp = 0, scCurrentTemp = 0, scMaxTemp = 0;
	unsigned long long maxTemperature = 0, MaxSocTemp = 0;
	struct nvme_dev *dev;
	struct config {
		char *output_format;
	};

	struct config cfg = {
		.output_format = "normal",
	};

	OPT_ARGS(opts) = {
		OPT_FMT("output-format", 'o', &cfg.output_format, output_format),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err) {
		printf ("\nDevice not found \n");;
		return -1;
	}

	if (strcmp(cfg.output_format, "json"))
		printf("Seagate Temperature Stats Information :\n");
	/*STEP-1 : Get Current Temperature from SMART */
	err = nvme_get_log_smart(dev_fd(dev), 0xffffffff, false, &smart_log);
	if (!err) {
		temperature = ((smart_log.temperature[1] << 8) | smart_log.temperature[0]);
		temperature = temperature ? temperature - 273 : 0;
		PcbTemp = le16_to_cpu(smart_log.temp_sensor[0]);
		PcbTemp = PcbTemp ? PcbTemp - 273 : 0;
		SocTemp = le16_to_cpu(smart_log.temp_sensor[1]);
		SocTemp = SocTemp ? SocTemp - 273 : 0;
		if (strcmp(cfg.output_format, "json")) {
			printf("%-20s : %u C\n", "Current Temperature", temperature);
			printf("%-20s : %u C\n", "Current PCB Temperature", PcbTemp);
			printf("%-20s : %u C\n", "Current SOC Temperature", SocTemp);
		}
	}

	/* STEP-2 : Get Max temperature form Ext SMART-id 194 */
	err = nvme_get_log_simple(dev_fd(dev), 0xC4,
				  sizeof(ExtdSMARTInfo), &ExtdSMARTInfo);
	if (!err) {
		for (index = 0; index < NUMBER_EXTENDED_SMART_ATTRIBUTES; index++) {
			if (ExtdSMARTInfo.vendorData[index].AttributeNumber == VS_ATTR_ID_MAX_LIFE_TEMPERATURE) {
				maxTemperature = smart_attribute_vs(ExtdSMARTInfo.Version, ExtdSMARTInfo.vendorData[index]);
				maxTemperature = maxTemperature ? maxTemperature - 273 : 0;
				if (strcmp(cfg.output_format, "json"))
					printf("%-20s : %d C\n", "Highest Temperature", (unsigned int)maxTemperature);
			}

			if (ExtdSMARTInfo.vendorData[index].AttributeNumber == VS_ATTR_ID_MAX_SOC_LIFE_TEMPERATURE) {
				MaxSocTemp = smart_attribute_vs(ExtdSMARTInfo.Version, ExtdSMARTInfo.vendorData[index]);
				MaxSocTemp = MaxSocTemp ? MaxSocTemp - 273 : 0;
				if (strcmp(cfg.output_format, "json"))
					printf("%-20s : %d C\n", "Max SOC Temperature", (unsigned int)MaxSocTemp);
			}
		}
	} else {
		if (err > 0)
			nvme_show_status(err);
	}

	cf_err = nvme_get_log_simple(dev_fd(dev), 0xCF,
					 sizeof(ExtdSMARTInfo), &logPageCF);

	if (!cf_err) {
		scCurrentTemp = logPageCF.AttrCF.SuperCapCurrentTemperature;
		scCurrentTemp = scCurrentTemp ? scCurrentTemp - 273 : 0;
		printf("%-20s : %d C\n", "Super-cap Current Temperature", scCurrentTemp);

		scMaxTemp = logPageCF.AttrCF.SuperCapMaximumTemperature;
		scMaxTemp = scMaxTemp ? scMaxTemp - 273 : 0;
		printf("%-20s : %d C\n", "Super-cap Max Temperature", scMaxTemp);
	}

	if (!strcmp(cfg.output_format, "json"))
		json_temp_stats(temperature, PcbTemp, SocTemp, maxTemperature, MaxSocTemp, cf_err, scCurrentTemp, scMaxTemp);

	dev_close(dev);
	return err;
}
/* EOF Temperature Stats information */

/***************************************
 * PCIe error-log information
 ***************************************/
static void print_vs_pcie_error_log(pcie_error_log_page  pcieErrorLog)
{
	__u32 correctPcieEc = 0;
	__u32 uncorrectPcieEc = 0;
	correctPcieEc = pcieErrorLog.BadDllpErrCnt + pcieErrorLog.BadTlpErrCnt
		+ pcieErrorLog.RcvrErrCnt + pcieErrorLog.ReplayTOErrCnt
		+ pcieErrorLog.ReplayNumRolloverErrCnt;

	uncorrectPcieEc = pcieErrorLog.FCProtocolErrCnt + pcieErrorLog.DllpProtocolErrCnt
		+ pcieErrorLog.CmpltnTOErrCnt + pcieErrorLog.RcvrQOverflowErrCnt
		+ pcieErrorLog.UnexpectedCplTlpErrCnt + pcieErrorLog.CplTlpURErrCnt
		+ pcieErrorLog.CplTlpCAErrCnt + pcieErrorLog.ReqCAErrCnt
		+ pcieErrorLog.ReqURErrCnt + pcieErrorLog.EcrcErrCnt
		+ pcieErrorLog.MalformedTlpErrCnt + pcieErrorLog.CplTlpPoisonedErrCnt
		+ pcieErrorLog.MemRdTlpPoisonedErrCnt;

	printf("%-45s : %u\n", "PCIe Correctable Error Count", correctPcieEc);
	printf("%-45s : %u\n", "PCIe Un-Correctable Error Count", uncorrectPcieEc);
	printf("%-45s : %u\n", "Unsupported Request Error Status (URES)", pcieErrorLog.ReqURErrCnt);
	printf("%-45s : %u\n", "ECRC Error Status (ECRCES)", pcieErrorLog.EcrcErrCnt);
	printf("%-45s : %u\n", "Malformed TLP Status (MTS)", pcieErrorLog.MalformedTlpErrCnt);
	printf("%-45s : %u\n", "Receiver Overflow Status (ROS)", pcieErrorLog.RcvrQOverflowErrCnt);
	printf("%-45s : %u\n", "Unexpected Completion Status(UCS)", pcieErrorLog.UnexpectedCplTlpErrCnt);
	printf("%-45s : %u\n", "Completion Timeout Status (CTS)", pcieErrorLog.CmpltnTOErrCnt);
	printf("%-45s : %u\n", "Flow Control Protocol Error Status (FCPES)", pcieErrorLog.FCProtocolErrCnt);
	printf("%-45s : %u\n", "Poisoned TLP Status (PTS)", pcieErrorLog.MemRdTlpPoisonedErrCnt);
	printf("%-45s : %u\n", "Data Link Protocol Error Status(DLPES)", pcieErrorLog.DllpProtocolErrCnt);
	printf("%-45s : %u\n", "Replay Timer Timeout Status(RTS)", pcieErrorLog.ReplayTOErrCnt);
	printf("%-45s : %u\n", "Replay_NUM Rollover Status(RRS)", pcieErrorLog.ReplayNumRolloverErrCnt);
	printf("%-45s : %u\n", "Bad DLLP Status (BDS)", pcieErrorLog.BadDllpErrCnt);
	printf("%-45s : %u\n", "Bad TLP Status (BTS)", pcieErrorLog.BadTlpErrCnt);
	printf("%-45s : %u\n", "Receiver Error Status (RES)", pcieErrorLog.RcvrErrCnt);
	printf("%-45s : %u\n", "Cpl TLP Unsupported Request Error Count", pcieErrorLog.CplTlpURErrCnt);
	printf("%-45s : %u\n", "Cpl TLP Completion Abort Error Count", pcieErrorLog.CplTlpCAErrCnt);
	printf("%-45s : %u\n", "Cpl TLP Poisoned Error Count", pcieErrorLog.CplTlpPoisonedErrCnt);
	printf("%-45s : %u\n", "Request Completion Abort Error Count", pcieErrorLog.ReqCAErrCnt);
	printf("%-45s : %s\n", "Advisory Non-Fatal Error Status(ANFES)", "Not Supported");
	printf("%-45s : %s\n", "Completer Abort Status (CAS)", "Not Supported");
}

static void json_vs_pcie_error_log(pcie_error_log_page pcieErrorLog)
{
	struct json_object *root;
	root = json_create_object();
	__u32 correctPcieEc = 0;
	__u32 uncorrectPcieEc = 0;
	correctPcieEc = pcieErrorLog.BadDllpErrCnt + pcieErrorLog.BadTlpErrCnt
		+ pcieErrorLog.RcvrErrCnt + pcieErrorLog.ReplayTOErrCnt
		+ pcieErrorLog.ReplayNumRolloverErrCnt;

	uncorrectPcieEc = pcieErrorLog.FCProtocolErrCnt + pcieErrorLog.DllpProtocolErrCnt
		+ pcieErrorLog.CmpltnTOErrCnt + pcieErrorLog.RcvrQOverflowErrCnt
		+ pcieErrorLog.UnexpectedCplTlpErrCnt + pcieErrorLog.CplTlpURErrCnt
		+ pcieErrorLog.CplTlpCAErrCnt + pcieErrorLog.ReqCAErrCnt
		+ pcieErrorLog.ReqURErrCnt + pcieErrorLog.EcrcErrCnt
		+ pcieErrorLog.MalformedTlpErrCnt + pcieErrorLog.CplTlpPoisonedErrCnt
		+ pcieErrorLog.MemRdTlpPoisonedErrCnt;

	json_object_add_value_int(root, "PCIe Correctable Error Count", correctPcieEc);
	json_object_add_value_int(root, "PCIe Un-Correctable Error Count", uncorrectPcieEc);
	json_object_add_value_int(root, "Unsupported Request Error Status (URES)", pcieErrorLog.ReqURErrCnt);
	json_object_add_value_int(root, "ECRC Error Status (ECRCES)", pcieErrorLog.EcrcErrCnt);
	json_object_add_value_int(root, "Malformed TLP Status (MTS)", pcieErrorLog.MalformedTlpErrCnt);
	json_object_add_value_int(root, "Receiver Overflow Status (ROS)", pcieErrorLog.RcvrQOverflowErrCnt);
	json_object_add_value_int(root, "Unexpected Completion Status(UCS)", pcieErrorLog.UnexpectedCplTlpErrCnt);
	json_object_add_value_int(root, "Completion Timeout Status (CTS)", pcieErrorLog.CmpltnTOErrCnt);
	json_object_add_value_int(root, "Flow Control Protocol Error Status (FCPES)", pcieErrorLog.FCProtocolErrCnt);
	json_object_add_value_int(root, "Poisoned TLP Status (PTS)", pcieErrorLog.MemRdTlpPoisonedErrCnt);
	json_object_add_value_int(root, "Data Link Protocol Error Status(DLPES)", pcieErrorLog.DllpProtocolErrCnt);
	json_object_add_value_int(root, "Replay Timer Timeout Status(RTS)", pcieErrorLog.ReplayTOErrCnt);
	json_object_add_value_int(root, "Replay_NUM Rollover Status(RRS)", pcieErrorLog.ReplayNumRolloverErrCnt);
	json_object_add_value_int(root, "Bad DLLP Status (BDS)", pcieErrorLog.BadDllpErrCnt);
	json_object_add_value_int(root, "Bad TLP Status (BTS)", pcieErrorLog.BadTlpErrCnt);
	json_object_add_value_int(root, "Receiver Error Status (RES)", pcieErrorLog.RcvrErrCnt);
	json_object_add_value_int(root, "Cpl TLP Unsupported Request Error Count", pcieErrorLog.CplTlpURErrCnt);
	json_object_add_value_int(root, "Cpl TLP Completion Abort Error Count", pcieErrorLog.CplTlpCAErrCnt);
	json_object_add_value_int(root, "Cpl TLP Poisoned Error Count", pcieErrorLog.CplTlpPoisonedErrCnt);
	json_object_add_value_int(root, "Request Completion Abort Error Count", pcieErrorLog.ReqCAErrCnt);
	json_print_object(root, NULL);
}

static int vs_pcie_error_log(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	pcie_error_log_page pcieErrorLog;
	struct nvme_dev *dev;

	const char *desc = "Retrieve Seagate PCIe error counters for the given device ";
	const char *output_format = "output in binary format";
	int err;
	struct config {
		char *output_format;
	};

	struct config cfg = {
		.output_format = "normal",
	};

	OPT_ARGS(opts) = {
		OPT_FMT("output-format", 'o', &cfg.output_format, output_format),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err) {
		printf ("\nDevice not found \n");;
		return -1;
	}

	if (strcmp(cfg.output_format, "json"))
		printf("Seagate PCIe error counters Information :\n");

	err = nvme_get_log_simple(dev_fd(dev), 0xCB,
				  sizeof(pcieErrorLog), &pcieErrorLog);
	if (!err) {
		if (strcmp(cfg.output_format, "json")) {
			print_vs_pcie_error_log(pcieErrorLog);
		} else
			json_vs_pcie_error_log(pcieErrorLog);

	} else if (err > 0)
		nvme_show_status(err);

	dev_close(dev);
	return err;
}
/* EOF PCIE error-log information */


/***************************************
 * FW Activation History log
 ***************************************/
static void print_stx_vs_fw_activate_history(stx_fw_activ_history_log_page fwActivHis)
{
	__u32 i;
	char prev_fw[9] = {0};
	char new_fw[9] = {0};
	char buf[80];

	if (fwActivHis.numValidFwActHisEnt > 0) {
		printf("\n\nSeagate FW Activation Histry :\n");
		printf("%-9s %-21s %-7s %-13s %-9s %-5s %-15s %-9s\n", "Counter ", "      Timestamp ", " PCC ", "Previous FW ", "New FW ", "Slot", "Commit Action", "Result");

		for (i = 0; i < fwActivHis.numValidFwActHisEnt; i++) {

			printf("   %-4d   ", fwActivHis.fwActHisEnt[i].fwActivCnt);

			time_t t = fwActivHis.fwActHisEnt[i].timeStamp / 1000;
			struct tm  ts;
			ts = *localtime(&t);
			strftime(buf, sizeof(buf), "%Y-%m-%d %H:%M:%S", &ts);
			printf(" %-20s   ", buf);
			printf("%-5" PRId64 "   ",
			       (uint64_t)fwActivHis.fwActHisEnt[i].powCycleCnt);

			memset(prev_fw, 0, sizeof(prev_fw));
			memcpy(prev_fw, fwActivHis.fwActHisEnt[i].previousFW, sizeof(fwActivHis.fwActHisEnt[i].previousFW));
			printf("%-8s   ", prev_fw);

			memset(new_fw, 0, sizeof(new_fw));
			memcpy(new_fw, fwActivHis.fwActHisEnt[i].newFW, sizeof(fwActivHis.fwActHisEnt[i].newFW));
			printf("%-8s  ", new_fw);

			printf("  %-2d  ", fwActivHis.fwActHisEnt[i].slotNum);
			printf("      0x%02x      ", fwActivHis.fwActHisEnt[i].commitActionType);
			printf("  0x%02x   \n", fwActivHis.fwActHisEnt[i].result);
		}
	} else {
		printf("%s\n", "Do not have valid FW Activation History");
	}
}

static void json_stx_vs_fw_activate_history(stx_fw_activ_history_log_page fwActivHis)
{
	struct json_object *root;
	root = json_create_object();
	__u32 i;

	char buf[80];

	struct json_object *historyLogPage;
	historyLogPage = json_create_array();
	json_object_add_value_array(root, "Seagate FW Activation History", historyLogPage);

	if (fwActivHis.numValidFwActHisEnt > 0) {
		for (i = 0; i < fwActivHis.numValidFwActHisEnt; i++) {
			struct json_object *lbaf = json_create_object();
			char prev_fw[8] = { 0 };
			char new_fw[8] = { 0 };

			json_object_add_value_int(lbaf, "Counter", fwActivHis.fwActHisEnt[i].fwActivCnt);

			time_t t = fwActivHis.fwActHisEnt[i].timeStamp / 1000;
			struct tm  ts;
			ts = *localtime(&t);
			strftime(buf, sizeof(buf), "%Y-%m-%d %H:%M:%S", &ts);
			printf(" %-20s   ", buf);
			json_object_add_value_string(lbaf, "Timestamp", buf);

			json_object_add_value_int(lbaf, "PCC", fwActivHis.fwActHisEnt[i].powCycleCnt);
			sprintf(prev_fw, "%s", fwActivHis.fwActHisEnt[i].previousFW);
			json_object_add_value_string(lbaf, "Previous_FW", prev_fw);

			sprintf(new_fw, "%s", fwActivHis.fwActHisEnt[i].newFW);
			json_object_add_value_string(lbaf, "New_FW", new_fw);

			json_object_add_value_int(lbaf, "Slot", fwActivHis.fwActHisEnt[i].slotNum);
			json_object_add_value_int(lbaf, "Commit_Action", fwActivHis.fwActHisEnt[i].commitActionType);
			json_object_add_value_int(lbaf, "Result", fwActivHis.fwActHisEnt[i].result);

			json_array_add_value_object(historyLogPage, lbaf);
		}
	} else {
		printf("%s\n", "Do not have valid FW Activation History");
	}

	json_print_object(root, NULL);
	json_free_object(root);
}

static int stx_vs_fw_activate_history(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	stx_fw_activ_history_log_page fwActivHis;
	struct nvme_dev *dev;

	const char *desc = "Retrieve FW Activate History for Seagate device ";
	const char *output_format = "output in binary format";
	int err;
	struct config {
		char *output_format;
	};

	struct config cfg = {
		.output_format = "normal",
	};

	OPT_ARGS(opts) = {
		OPT_FMT("output-format", 'o', &cfg.output_format, output_format),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err < 0) {
		printf ("\nDevice not found \n");;
		return -1;
	}

	if (strcmp(cfg.output_format, "json"))
		printf("Seagate FW Activation Histry Information :\n");

	err = nvme_get_log_simple(dev_fd(dev), 0xC2, sizeof(fwActivHis), &fwActivHis);
	if (!err) {
		if (strcmp(cfg.output_format, "json")) {
			print_stx_vs_fw_activate_history(fwActivHis);
		} else
			json_stx_vs_fw_activate_history(fwActivHis);

	} else if (err > 0)
		nvme_show_status(err);

	dev_close(dev);
	return err;
}
/* EOF FW Activation History log information */


static int clear_fw_activate_history(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	const char *desc = "Clear FW Activation History for the given Seagate device ";
	const char *save = "specifies that the controller shall save the attribute";
	int err;
	struct nvme_dev *dev;
	struct nvme_id_ctrl ctrl;
	char modelNo[40];
	__u32 result;

	struct config {
		bool   save;
	};

	struct config cfg = {
		.save         = 0,
	};

	OPT_ARGS(opts) = {
		OPT_FLAG("save", 's', &cfg.save, save),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err < 0) {
		printf ("\nDevice not found \n");
		return -1;
	}

	err = nvme_identify_ctrl(dev_fd(dev), &ctrl);
	if (!err) {
		memcpy(modelNo, ctrl.mn, sizeof(modelNo));
	} else {
		nvme_show_status(err);
		return err;
	}

	if (stx_is_jag_pan(modelNo) == 0) {
		printf ("\nDevice does not support Clear FW Activation History \n");
	} else {

		struct nvme_set_features_args args = {
		.args_size  = sizeof(args),
		.fd         = dev_fd(dev),
		.fid        = 0xC1,
		.nsid       = 0,
		.cdw11      = 0x80000000,
		.cdw12      = 0,
		.save       = 0,
		.uuidx      = 0,
		.cdw15      = 0,
		.data_len   = 0,
		.data       = NULL,
		.timeout    = NVME_DEFAULT_IOCTL_TIMEOUT,
		.result     = &result,
	};
	err = nvme_set_features(&args);
	if (err)
		fprintf(stderr, "%s: couldn't clear PCIe correctable errors \n",
			__func__);
	}

	if (err < 0) {
		perror("set-feature");
		return errno;
	}

	dev_close(dev);
	return err;
}


static int vs_clr_pcie_correctable_errs(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	const char *desc = "Clear Seagate PCIe Correctable counters for the given device ";
	const char *save = "specifies that the controller shall save the attribute";

	struct nvme_id_ctrl ctrl;
	char modelNo[40];

	struct nvme_dev *dev;

	__u32 result;
	int err;

	struct config {
		bool   save;
	};

	struct config cfg = {
		.save         = 0,
	};

	OPT_ARGS(opts) = {
		OPT_FLAG("save", 's', &cfg.save, save),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err) {
		printf ("\nDevice not found \n");;
		return -1;
	}


	err = nvme_identify_ctrl(dev_fd(dev), &ctrl);
	if (!err) {
		memcpy(modelNo, ctrl.mn, sizeof(modelNo));
	} else {
		nvme_show_status(err);
		return err;
	}

	if (stx_is_jag_pan(modelNo) == 0) {
		err = nvme_set_features_simple(dev_fd(dev), 0xE1, 0, 0xCB, cfg.save, &result);
	} else {
		struct nvme_set_features_args args = {
		.args_size  = sizeof(args),
		.fd         = dev_fd(dev),
		.fid        = 0xC3,
		.nsid       = 0,
		.cdw11      = 0x80000000,
		.cdw12      = 0,
		.save       = 0,
		.uuidx      = 0,
		.cdw15      = 0,
		.data_len   = 0,
		.data       = NULL,
		.timeout    = NVME_DEFAULT_IOCTL_TIMEOUT,
		.result     = &result,
	};
	err = nvme_set_features(&args);
	if (err)
		fprintf(stderr, "%s: couldn't clear PCIe correctable errors \n", __func__);
	}

	err = nvme_set_features_simple(dev_fd(dev), 0xE1, 0, 0xCB, cfg.save, &result);

	if (err < 0) {
		perror("set-feature");
		return errno;
	}

	dev_close(dev);
	return err;
}

static int get_host_tele(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	const char *desc = "Capture the Telemetry Host-Initiated Data in either " \
		"hex-dump (default) or binary format";
	const char *namespace_id = "desired namespace";
	const char *log_specific = "1 - controller shall capture Data representing the internal " \
		"state of the controller at the time the command is processed. " \
		"0 - controller shall not update the Telemetry Host Initiated Data.";
	const char *raw = "output in raw format";
	struct nvme_temetry_log_hdr tele_log;
	int blkCnt, maxBlk = 0, blksToGet;
	struct nvme_dev *dev;
	unsigned char  *log;
	__le64  offset = 0;
	int err, dump_fd;

	struct config {
		__u32 namespace_id;
		__u32 log_id;
		bool  raw_binary;
	};

	struct config cfg = {
		.namespace_id = 0xffffffff,
		.log_id       = 0,
	};

	OPT_ARGS(opts) = {
		OPT_UINT("namespace-id", 'n', &cfg.namespace_id, namespace_id),
		OPT_UINT("log_specific", 'i', &cfg.log_id,       log_specific),
		OPT_FLAG("raw-binary",   'b', &cfg.raw_binary,   raw),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		return err;

	dump_fd = STDOUT_FILENO;
	cfg.log_id = (cfg.log_id << 8) | 0x07;
	err = nvme_get_nsid_log(dev_fd(dev), false, cfg.log_id,
				cfg.namespace_id,
				sizeof(tele_log), (void *)(&tele_log));
	if (!err) {
		maxBlk = tele_log.tele_data_area3;
		offset += 512;

		if (!cfg.raw_binary) {
			printf("Device:%s log-id:%d namespace-id:%#x\n",
				   dev->name, cfg.log_id,
				   cfg.namespace_id);
			printf("Data Block 1 Last Block:%d Data Block 2 Last Block:%d Data Block 3 Last Block:%d\n",
				   tele_log.tele_data_area1, tele_log.tele_data_area2, tele_log.tele_data_area3);

			d((unsigned char *)(&tele_log), sizeof(tele_log), 16, 1);
		} else
			seaget_d_raw((unsigned char *)(&tele_log), sizeof(tele_log), dump_fd);
	} else if (err > 0)
		nvme_show_status(err);
	else
		perror("log page");

	blkCnt = 0;

	while (blkCnt < maxBlk) {
		unsigned long long bytesToGet;

		blksToGet = ((maxBlk - blkCnt) >= TELEMETRY_BLOCKS_TO_READ) ? TELEMETRY_BLOCKS_TO_READ : (maxBlk - blkCnt);

		if (blksToGet == 0) {
			dev_close(dev);
			return err;
		}

		bytesToGet = (unsigned long long)blksToGet * 512;
		log = malloc(bytesToGet);

		if (!log) {
			fprintf(stderr, "could not alloc buffer for log\n");
			dev_close(dev);
			return EINVAL;
		}

		memset(log, 0, bytesToGet);

		struct nvme_get_log_args args = {
			.args_size  = sizeof(args),
			.fd     = dev_fd(dev),
			.lid        = cfg.log_id,
			.nsid       = cfg.namespace_id,
			.lpo        = offset,
			.lsp        = 0,
			.lsi        = 0,
			.rae        = true,
			.uuidx      = 0,
			.csi        = NVME_CSI_NVM,
			.ot     = false,
			.len        = bytesToGet,
			.log        = (void *)log,
			.timeout    = NVME_DEFAULT_IOCTL_TIMEOUT,
			.result     = NULL,
		};
		err = nvme_get_log(&args);
		if (!err) {
			offset += (__le64)bytesToGet;

			if (!cfg.raw_binary) {
				printf("\nBlock # :%d to %d\n", blkCnt + 1, blkCnt + blksToGet);

				d((unsigned char *)log, bytesToGet, 16, 1);
			} else
				seaget_d_raw((unsigned char *)log, bytesToGet, dump_fd);
		} else if (err > 0)
			nvme_show_status(err);
		else
			perror("log page");

		blkCnt += blksToGet;

		free(log);
	}

	dev_close(dev);
	return err;
}

static int get_ctrl_tele(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	const char *desc = "Capture the Telemetry Controller-Initiated Data in either " \
		"hex-dump (default) or binary format";
	const char *namespace_id = "desired namespace";
	const char *raw = "output in raw format";
	struct nvme_dev *dev;
	int err, dump_fd;
	struct nvme_temetry_log_hdr tele_log;
	__le64  offset = 0;
	__u16 log_id;
	int blkCnt, maxBlk = 0, blksToGet;
	unsigned char  *log;

	struct config {
		__u32 namespace_id;
		bool  raw_binary;
	};

	struct config cfg = {
		.namespace_id = 0xffffffff,
	};

	OPT_ARGS(opts) = {
		OPT_UINT("namespace-id", 'n', &cfg.namespace_id, namespace_id),
		OPT_FLAG("raw-binary",   'b', &cfg.raw_binary,   raw),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		return err;

	dump_fd = STDOUT_FILENO;

	log_id = 0x08;
	err = nvme_get_nsid_log(dev_fd(dev), false, log_id, cfg.namespace_id,
				sizeof(tele_log), (void *)(&tele_log));
	if (!err) {
		maxBlk = tele_log.tele_data_area3;
		offset += 512;

		if (!cfg.raw_binary) {
			printf("Device:%s namespace-id:%#x\n",
				   dev->name, cfg.namespace_id);
			printf("Data Block 1 Last Block:%d Data Block 2 Last Block:%d Data Block 3 Last Block:%d\n",
				   tele_log.tele_data_area1, tele_log.tele_data_area2, tele_log.tele_data_area3);

			d((unsigned char *)(&tele_log), sizeof(tele_log), 16, 1);
		} else
			seaget_d_raw((unsigned char *)(&tele_log), sizeof(tele_log), dump_fd);
	} else if (err > 0)
		nvme_show_status(err);
	else
		perror("log page");

	blkCnt = 0;

	while (blkCnt < maxBlk) {
		unsigned long long bytesToGet;

		blksToGet = ((maxBlk - blkCnt) >= TELEMETRY_BLOCKS_TO_READ) ? TELEMETRY_BLOCKS_TO_READ : (maxBlk - blkCnt);

		if (blksToGet == 0)
			return err;

		bytesToGet = (unsigned long long)blksToGet * 512;
		log = malloc(bytesToGet);

		if (!log) {
			fprintf(stderr, "could not alloc buffer for log\n");
			return EINVAL;
		}

		memset(log, 0, bytesToGet);

		struct nvme_get_log_args args = {
			.args_size  = sizeof(args),
			.fd     = dev_fd(dev),
			.lid        = log_id,
			.nsid       = cfg.namespace_id,
			.lpo        = offset,
			.lsp        = 0,
			.lsi        = 0,
			.rae        = true,
			.uuidx      = 0,
			.csi        = NVME_CSI_NVM,
			.ot     = false,
			.len        = bytesToGet,
			.log        = (void *)log,
			.timeout    = NVME_DEFAULT_IOCTL_TIMEOUT,
			.result     = NULL,
		};
		err = nvme_get_log(&args);
		if (!err) {
			offset += (__le64)bytesToGet;

			if (!cfg.raw_binary) {
				printf("\nBlock # :%d to %d\n", blkCnt + 1, blkCnt + blksToGet);

				d((unsigned char *)log, bytesToGet, 16, 1);
			} else
				seaget_d_raw((unsigned char *)log, bytesToGet, dump_fd);
		} else if (err > 0)
			nvme_show_status(err);
		else
			perror("log page");

		blkCnt += blksToGet;

		free(log);
	}

	dev_close(dev);
	return err;
}

void seaget_d_raw(unsigned char *buf, int len, int fd)
{
	if (write(fd, (void *)buf, len) <= 0)
		printf("%s: Write Failed\n", __FUNCTION__);
}


static int vs_internal_log(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	const char *desc = "Capture the Telemetry Controller-Initiated Data in " \
		"binary format";
	const char *namespace_id = "desired namespace";

	const char *file = "dump file";
	struct nvme_dev *dev;
	int err, dump_fd;
	int flags = O_WRONLY | O_CREAT;
	int mode = S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH;
	struct nvme_temetry_log_hdr tele_log;
	__le64  offset = 0;
	__u16 log_id;
	int blkCnt, maxBlk = 0, blksToGet;
	unsigned char  *log;

	struct config {
		__u32 namespace_id;
		char  *file;
	};

	struct config cfg = {
		.namespace_id = 0xffffffff,
		.file         = "",
	};

	OPT_ARGS(opts) = {
		OPT_UINT("namespace-id", 'n', &cfg.namespace_id, namespace_id),
		OPT_FILE("dump-file",    'f', &cfg.file,         file),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		return err;

	dump_fd = STDOUT_FILENO;
	if (strlen(cfg.file)) {
		dump_fd = open(cfg.file, flags, mode);
		if (dump_fd < 0) {
			perror(cfg.file);
			dev_close(dev);
			return EINVAL;
		}
	}

	log_id = 0x08;
	err = nvme_get_nsid_log(dev_fd(dev), false, log_id, cfg.namespace_id,
				sizeof(tele_log), (void *)(&tele_log));
	if (!err) {
		maxBlk = tele_log.tele_data_area3;
		offset += 512;

		seaget_d_raw((unsigned char *)(&tele_log), sizeof(tele_log), dump_fd);
	} else if (err > 0)
		nvme_show_status(err);
	else
		perror("log page");

	blkCnt = 0;

	while (blkCnt < maxBlk) {
		unsigned long long bytesToGet;

		blksToGet = ((maxBlk - blkCnt) >= TELEMETRY_BLOCKS_TO_READ) ? TELEMETRY_BLOCKS_TO_READ : (maxBlk - blkCnt);

		if (blksToGet == 0) {
			goto out;
		}

		bytesToGet = (unsigned long long)blksToGet * 512;
		log = malloc(bytesToGet);

		if (!log) {
			fprintf(stderr, "could not alloc buffer for log\n");
			err = EINVAL;
			goto out;
		}

		memset(log, 0, bytesToGet);

		struct nvme_get_log_args args = {
			.args_size  = sizeof(args),
			.fd     = dev_fd(dev),
			.lid        = log_id,
			.nsid       = cfg.namespace_id,
			.lpo        = offset,
			.lsp        = 0,
			.lsi        = 0,
			.rae        = true,
			.uuidx      = 0,
			.csi        = NVME_CSI_NVM,
			.ot     = false,
			.len        = bytesToGet,
			.log        = (void *)log,
			.timeout    = NVME_DEFAULT_IOCTL_TIMEOUT,
			.result     = NULL,
		};
		err = nvme_get_log(&args);
		if (!err) {
			offset += (__le64)bytesToGet;

			seaget_d_raw((unsigned char *)log, bytesToGet, dump_fd);

		} else if (err > 0)
			nvme_show_status(err);
		else
			perror("log page");

		blkCnt += blksToGet;

		free(log);
	}
out:
	if (strlen(cfg.file))
		close(dump_fd);

	dev_close(dev);
	return err;
}

/*SEAGATE-PLUGIN Version */
static int seagate_plugin_version(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	printf("Seagate-Plugin version : %d.%d \n",
		   SEAGATE_PLUGIN_VERSION_MAJOR,
		   SEAGATE_PLUGIN_VERSION_MINOR);
	return 0;
}
/*EOF SEAGATE-PLUGIN Version */

/*OCP SEAGATE-PLUGIN Version */
static int stx_ocp_plugin_version(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	printf("Seagate-OCP-Plugin version : %d.%d \n",
		SEAGATE_OCP_PLUGIN_VERSION_MAJOR,
		SEAGATE_OCP_PLUGIN_VERSION_MINOR);
	return 0;
}
/*EOF OCP SEAGATE-PLUGIN Version */
   070701015D6C42000081A4000003E80000006400000001642C0FB500000ABC000000000000004A00000000000000000000002800000000nvme-cli/plugins/seagate/seagate-nvme.h   /* SPDX-License-Identifier: GPL-2.0-or-later */
/*
 * Do NOT modify or remove this copyright and license
 *
 * Copyright (c) 2017-2018 Seagate Technology LLC and/or its Affiliates, All Rights Reserved
 *
 * ******************************************************************************************
 *
 * 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.
 *
 * \file seagate-nvme.h
 * \brief This file defines the functions and macros to make building a nvme-cli seagate plug-in.
 * 
 *   Author: Debabrata Bardhan <debabrata.bardhan@seagate.com>
 */

#undef CMD_INC_FILE
#define CMD_INC_FILE plugins/seagate/seagate-nvme

#if !defined(SEAGATE_NVME) || defined(CMD_HEADER_MULTI_READ)
#define SEAGATE_NVME

#include "cmd.h"

PLUGIN(NAME("seagate", "Seagate vendor specific extensions", NVME_VERSION),
	COMMAND_LIST(
		ENTRY("vs-temperature-stats",           "Retrieve Seagate temperature statistics ",             temp_stats)
		ENTRY("vs-log-page-sup",                "Retrieve Seagate Supported Log-pages Information ",    log_pages_supp)
		ENTRY("vs-smart-add-log",               "Retrieve Seagate extended-SMART Information ",         vs_smart_log)
		ENTRY("vs-pcie-stats",                  "Retrieve Seagate PCIe error statistics ",              vs_pcie_error_log)
		ENTRY("clear-pcie-correctable-errors",  "Clear Seagate PCIe error statistics  ",                vs_clr_pcie_correctable_errs)
		ENTRY("get-host-tele",                  "Retrieve Seagate Host-Initiated Telemetry ",           get_host_tele)
		ENTRY("get-ctrl-tele",                  "Retrieve Seagate Controller-Initiated Telemetry ",     get_ctrl_tele)
		ENTRY("vs-internal-log",                "Retrieve Seagate Controller-Initiated Telemetry in binary format",  vs_internal_log)
        ENTRY("vs-fw-activate-history",         "Retrieve the Firmware Activation History",             stx_vs_fw_activate_history)
        ENTRY("clear-fw-activate-history",      "Clear Firmware Activation History",                    clear_fw_activate_history)
		ENTRY("plugin-version",                 "Shows Seagate plugin's version information ",          seagate_plugin_version)
        ENTRY("cloud-SSD-plugin-version",       "Shows OCP Seagate plugin's version information ",      stx_ocp_plugin_version)
	)
);

#endif
#include "define_cmd.h"
070701015D6C44000081A4000003E80000006400000001642C0FB500002EA0000000000000004A00000000000000000000002800000000nvme-cli/plugins/shannon/shannon-nvme.c   // SPDX-License-Identifier: GPL-2.0-or-later
#include <fcntl.h>
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <inttypes.h>

#include "common.h"
#include "nvme.h"
#include "libnvme.h"
#include "plugin.h"
#include "linux/types.h"
#include "nvme-print.h"

#define CREATE_CMD
#include "shannon-nvme.h"

typedef enum {
	PROGRAM_FAIL_CNT,
	ERASE_FAIL_CNT,
	WEARLEVELING_COUNT,
	E2E_ERR_CNT,
	CRC_ERR_CNT,
	TIME_WORKLOAD_MEDIA_WEAR,	
	TIME_WORKLOAD_HOST_READS, 	
	TIME_WORKLOAD_TIMER,	  	
	THERMAL_THROTTLE,	      
	RETRY_BUFFER_OVERFLOW,		
	PLL_LOCK_LOSS,			 	
	NAND_WRITE,
	HOST_WRITE,
	SRAM_ERROR_CNT,
	ADD_SMART_ITEMS,
}addtional_smart_items;

#pragma pack(push,1)
struct nvme_shannon_smart_log_item {
	__u8			rsv1[3];
	__u8			norm;
	__u8			rsv2;
	union {
		__u8		item_val[6];
		struct wear_level {
			__le16	min;
			__le16	max;
			__le16	avg;
		} wear_level ;
		struct thermal_throttle {
			__u8	st;
			__u32	count;
		} thermal_throttle;
	};
	__u8			_resv;
};
#pragma pack(pop)

struct nvme_shannon_smart_log {
	struct nvme_shannon_smart_log_item items[ADD_SMART_ITEMS];
	 __u8  vend_spec_resv; 
};

static void show_shannon_smart_log(struct nvme_shannon_smart_log *smart,
		unsigned int nsid, const char *devname)
{
	printf("Additional Smart Log for NVME device:%s namespace-id:%x\n",
		devname, nsid);
	printf("key                               normalized value\n");
	printf("program_fail_count              : %3d%%       %"PRIu64"\n",
		smart->items[PROGRAM_FAIL_CNT].norm,
		int48_to_long(smart->items[PROGRAM_FAIL_CNT].item_val));
	printf("erase_fail_count                : %3d%%       %"PRIu64"\n",
		smart->items[ERASE_FAIL_CNT].norm,
		int48_to_long(smart->items[ERASE_FAIL_CNT].item_val));
	printf("wear_leveling                   : %3d%%       min: %u, max: %u, avg: %u\n",
		smart->items[WEARLEVELING_COUNT].norm,
		le16_to_cpu(smart->items[WEARLEVELING_COUNT].wear_level.min),
		le16_to_cpu(smart->items[WEARLEVELING_COUNT].wear_level.max),
		le16_to_cpu(smart->items[WEARLEVELING_COUNT].wear_level.avg));
	printf("end_to_end_error_detection_count: %3d%%       %"PRIu64"\n",
		smart->items[E2E_ERR_CNT].norm,
		int48_to_long(smart->items[E2E_ERR_CNT].item_val));
	printf("crc_error_count                 : %3d%%       %"PRIu64"\n",
		smart->items[CRC_ERR_CNT].norm,
		int48_to_long(smart->items[CRC_ERR_CNT].item_val));
	printf("timed_workload_media_wear       : %3d%%       %.3f%%\n",
		smart->items[TIME_WORKLOAD_MEDIA_WEAR].norm,
		((float)int48_to_long(smart->items[TIME_WORKLOAD_MEDIA_WEAR].item_val)) / 1024);
	printf("timed_workload_host_reads       : %3d%%       %"PRIu64"%%\n",
		smart->items[TIME_WORKLOAD_HOST_READS].norm,
		int48_to_long(smart->items[TIME_WORKLOAD_HOST_READS].item_val));
	printf("timed_workload_timer            : %3d%%       %"PRIu64" min\n",
		smart->items[TIME_WORKLOAD_TIMER].norm,
		int48_to_long(smart->items[TIME_WORKLOAD_TIMER].item_val));
	printf("thermal_throttle_status         : %3d%%       CurTTSta: %u%%, TTCnt: %u\n",
		smart->items[THERMAL_THROTTLE].norm,
		smart->items[THERMAL_THROTTLE].thermal_throttle.st,
		smart->items[THERMAL_THROTTLE].thermal_throttle.count);
	printf("retry_buffer_overflow_count     : %3d%%       %"PRIu64"\n",
		smart->items[RETRY_BUFFER_OVERFLOW].norm,
		int48_to_long(smart->items[RETRY_BUFFER_OVERFLOW].item_val));
	printf("pll_lock_loss_count             : %3d%%       %"PRIu64"\n",
		smart->items[PLL_LOCK_LOSS].norm,
		int48_to_long(smart->items[PLL_LOCK_LOSS].item_val));
	printf("nand_bytes_written              : %3d%%       sectors: %"PRIu64"\n",
		smart->items[NAND_WRITE].norm,
		int48_to_long(smart->items[NAND_WRITE].item_val));
	printf("host_bytes_written              : %3d%%       sectors: %"PRIu64"\n",
		smart->items[HOST_WRITE].norm,
		int48_to_long(smart->items[HOST_WRITE].item_val));
	printf("sram_error_count		: %3d%%       %"PRIu64"\n",
		smart->items[RETRY_BUFFER_OVERFLOW].norm,
		int48_to_long(smart->items[SRAM_ERROR_CNT].item_val));
}


static int get_additional_smart_log(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	struct nvme_shannon_smart_log smart_log;
	char *desc = "Get Shannon vendor specific additional smart log (optionally, "\
		      "for the specified namespace), and show it.";
	const char *namespace = "(optional) desired namespace";
	const char *raw = "dump output in binary format";
	struct nvme_dev *dev;
	struct config {
		__u32 namespace_id;
		bool  raw_binary;
	};
	int err;

	struct config cfg = {
		.namespace_id = NVME_NSID_ALL,
	};

	OPT_ARGS(opts) = {
		OPT_UINT("namespace-id", 'n', &cfg.namespace_id,  namespace),
		OPT_FLAG("raw-binary",   'b', &cfg.raw_binary,    raw),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		return err;
	err = nvme_get_nsid_log(dev_fd(dev), false, 0xca, cfg.namespace_id,
				sizeof(smart_log), &smart_log);
	if (!err) {
		if (!cfg.raw_binary)
			show_shannon_smart_log(&smart_log, cfg.namespace_id,
					       dev->name);
		else
			d_raw((unsigned char *)&smart_log, sizeof(smart_log));
	}
	else if (err > 0)
		nvme_show_status(err);
	dev_close(dev);
	return err;
}

static int get_additional_feature(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	const char *desc = "Read operating parameters of the "\
		"specified controller. Operating parameters are grouped "\
		"and identified by Feature Identifiers; each Feature "\
		"Identifier contains one or more attributes that may affect "\
		"behavior of the feature. Each Feature has three possible "\
		"settings: default, saveable, and current. If a Feature is "\
		"saveable, it may be modified by set-feature. Default values "\
		"are vendor-specific and not changeable. Use set-feature to "\
		"change saveable Features.\n\n"\
		"Available additional feature id:\n"\
		"0x02:	Shannon power management\n";
	const char *raw = "show infos in binary format";
	const char *namespace_id = "identifier of desired namespace";
	const char *feature_id = "hexadecimal feature name";
	const char *sel = "[0-3]: curr./default/saved/supp.";
	const char *data_len = "buffer len (if) data is returned";
	const char *cdw11 = "dword 11 for interrupt vector config";
	const char *human_readable = "show infos in readable format";
	struct nvme_dev *dev;
	void *buf = NULL;
	__u32 result;
	int err;

	struct config {
		__u32 namespace_id;
		enum nvme_features_id feature_id;
		__u8  sel;
		__u32 cdw11;
		__u32 data_len;
		bool  raw_binary;
		bool  human_readable;
	};

	struct config cfg = {
		.namespace_id = 1,
		.feature_id   = 0,
		.sel          = 0,
		.cdw11        = 0,
		.data_len     = 0,
	};

	OPT_ARGS(opts) = {
		OPT_UINT("namespace-id",  'n', &cfg.namespace_id,   namespace_id),
		OPT_UINT("feature-id",    'f', &cfg.feature_id,     feature_id),
		OPT_BYTE("sel",           's', &cfg.sel,            sel),
		OPT_UINT("data-len",      'l', &cfg.data_len,       data_len),
		OPT_FLAG("raw-binary",    'b', &cfg.raw_binary,     raw),
		OPT_UINT("cdw11",         'c', &cfg.cdw11,          cdw11),
		OPT_FLAG("human-readable",'H', &cfg.human_readable, human_readable),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		return err;

	if (cfg.sel > 7) {
		fprintf(stderr, "invalid 'select' param:%d\n", cfg.sel);
		dev_close(dev);
		return EINVAL;
	}
	if (!cfg.feature_id) {
		fprintf(stderr, "feature-id required param\n");
		dev_close(dev);
		return EINVAL;
	}
	if (cfg.data_len) {
		if (posix_memalign(&buf, getpagesize(), cfg.data_len))
		{
			dev_close(dev);
			exit(ENOMEM);
		}
		memset(buf, 0, cfg.data_len);
	}

	struct nvme_get_features_args args = {
		.args_size	= sizeof(args),
		.fd		= dev_fd(dev),
		.fid		= cfg.feature_id,
		.nsid		= cfg.namespace_id,
		.sel		= cfg.sel,
		.cdw11		= cfg.cdw11,
		.uuidx		= 0,
		.data_len	= cfg.data_len,
		.data		= buf,
		.timeout	= NVME_DEFAULT_IOCTL_TIMEOUT,
		.result		= &result,
	};
	err = nvme_get_features(&args);
	if (!err) {
#if 0
		printf("get-feature:0x%02x (%s), %s value: %#08x\n", cfg.feature_id,
				nvme_feature_to_string(cfg.feature_id),
				nvme_select_to_string(cfg.sel), result);
		if (cfg.human_readable)
			nvme_feature_show_fields(cfg.feature_id, result, buf);
		else {
			if (buf) {
				if (!cfg.raw_binary)
					d(buf, cfg.data_len, 16, 1);
				else
					d_raw(buf, cfg.data_len);
			}
		}
#endif
	} else if (err > 0)
		nvme_show_status(err);
	if (buf)
		free(buf);
	return err;
}

static int set_additional_feature(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	const char *desc = "Modify the saveable or changeable "\
		"current operating parameters of the controller. Operating "\
		"parameters are grouped and identified by Feature "\
		"Identifiers. Feature settings can be applied to the entire "\
		"controller and all associated namespaces, or to only a few "\
		"namespace(s) associated with the controller. Default values "\
		"for each Feature are vendor-specific and may not be modified."\
		"Use get-feature to determine which Features are supported by "\
		"the controller and are saveable/changeable.\n\n"\
		"Available additional feature id:\n"\
		"0x02:	Shannon power management\n";
	const char *namespace_id = "desired namespace";
	const char *feature_id = "hex feature name (required)";
	const char *data_len = "buffer length if data required";
	const char *data = "optional file for feature data (default stdin)";
	const char *value = "new value of feature (required)";
	const char *save = "specifies that the controller shall save the attribute";
	int ffd = STDIN_FILENO;
	struct nvme_dev *dev;
	void *buf = NULL;
	__u32 result;
	int err;

	struct config {
		char *file;
		__u32 namespace_id;
		__u32 feature_id;
		__u32 value;
		__u32 data_len;
		bool  save;
	};

	struct config cfg = {
		.file         = "",
		.namespace_id = 0,
		.feature_id   = 0,
		.value        = 0,
		.data_len     = 0,
		.save         = 0,
	};

	OPT_ARGS(opts) = {
		OPT_UINT("namespace-id", 'n', &cfg.namespace_id, namespace_id),
		OPT_UINT("feature-id",   'f', &cfg.feature_id,   feature_id),
		OPT_UINT("value",        'v', &cfg.value,        value),
		OPT_UINT("data-len",     'l', &cfg.data_len,     data_len),
		OPT_FILE("data",         'd', &cfg.file,         data),
		OPT_FLAG("save",         's', &cfg.save,         save),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		return err;

	if (!cfg.feature_id) {
		fprintf(stderr, "feature-id required param\n");
		dev_close(dev);
		return EINVAL;
	}

	if (cfg.data_len) {
		if (posix_memalign(&buf, getpagesize(), cfg.data_len)){
			fprintf(stderr, "can not allocate feature payload\n");
			dev_close(dev);
			return ENOMEM;
		}
		memset(buf, 0, cfg.data_len);
	}

	if (buf) {
		if (strlen(cfg.file)) {
			ffd = open(cfg.file, O_RDONLY);
			if (ffd <= 0) {
				fprintf(stderr, "no firmware file provided\n");
				err = EINVAL;
				goto free;
			}
		}
		err = read(ffd, (void *)buf, cfg.data_len);
		if (err < 0) {
			fprintf(stderr, "failed to read data buffer from input file\n");
			err = EINVAL;
			goto free;
		}
	}

	struct nvme_set_features_args args = {
		.args_size	= sizeof(args),
		.fd		= dev_fd(dev),
		.fid		= cfg.feature_id,
		.nsid		= cfg.namespace_id,
		.cdw11		= cfg.value,
		.cdw12		= 0,
		.save		= cfg.save,
		.uuidx		= 0,
		.cdw15		= 0,
		.data_len	= cfg.data_len,
		.data		= buf,
		.timeout	= NVME_DEFAULT_IOCTL_TIMEOUT,
		.result		= &result,
	};
	err = nvme_set_features(&args);
	if (err < 0) {
		perror("set-feature");
		goto free;
	}
	if (!err) {
#if 0
		printf("set-feature:%02x (%s), value:%#08x\n", cfg.feature_id,
			nvme_feature_to_string(cfg.feature_id), cfg.value);
#endif
		if (buf)
			d(buf, cfg.data_len, 16, 1);
	} else if (err > 0)
		nvme_show_status(err);

free:
	if (buf)
		free(buf);
	return err;
}

static int shannon_id_ctrl(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	return __id_ctrl(argc, argv, cmd, plugin, NULL);
}



070701015D6C45000081A4000003E80000006400000001642C0FB5000002BE000000000000004A00000000000000000000002800000000nvme-cli/plugins/shannon/shannon-nvme.h   /* SPDX-License-Identifier: GPL-2.0-or-later */
#undef CMD_INC_FILE
#define CMD_INC_FILE plugins/shannon/shannon-nvme

#if !defined(SHANNON_NVME) || defined(CMD_HEADER_MULTI_READ)
#define SHANNON_NVME

#include "cmd.h"

PLUGIN(NAME("shannon", "Shannon vendor specific extensions", NVME_VERSION),
	COMMAND_LIST(
		ENTRY("smart-log-add", "Retrieve Shannon SMART Log, show it", get_additional_smart_log)
		ENTRY("set-additioal-feature", "Set additional Shannon feature", set_additional_feature)
		ENTRY("get-additional-feature", "Get additional Shannon feature", get_additional_feature)
		ENTRY("id-ctrl", "Retrieve Shannon ctrl id, show it", shannon_id_ctrl)
		     )
);

#endif

#include "define_cmd.h"
  070701015D6C52000041ED000003E80000006400000001642C0FB600000000000000000000004A00000000000000000000002D00000000nvme-cli/plugins/solidigm/solidigm-telemetry  070701015D6C47000081A4000003E80000006400000001642C0FB50000010A000000000000004A00000000000000000000002600000000nvme-cli/plugins/solidigm/meson.build sources += [
  'plugins/solidigm/solidigm-util.c',
  'plugins/solidigm/solidigm-smart.c',
  'plugins/solidigm/solidigm-garbage-collection.c',
  'plugins/solidigm/solidigm-latency-tracking.c',
  'plugins/solidigm/solidigm-telemetry.c',
]
subdir('solidigm-telemetry')
  070701015D6C48000081A4000003E80000006400000001642C0FB500000D96000000000000004A00000000000000000000003800000000nvme-cli/plugins/solidigm/solidigm-garbage-collection.c   // SPDX-License-Identifier: GPL-2.0-or-later
/*
 * Copyright (c) 2022 Solidigm.
 *
 * Author: leonardo.da.cunha@solidigm.com
 */

#include <fcntl.h>
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <inttypes.h>

#include "common.h"
#include "nvme.h"
#include "libnvme.h"
#include "plugin.h"
#include "linux/types.h"
#include "nvme-print.h"
#include "solidigm-garbage-collection.h"
#include "solidigm-util.h"

typedef struct __attribute__((packed)) gc_item {
	__le32 timer_type;
	__le64 timestamp;
} gc_item_t;

#define VU_GC_MAX_ITEMS 100
typedef struct garbage_control_collection_log {
	__le16 version_major;
	__le16 version_minor;
	gc_item_t item[VU_GC_MAX_ITEMS];
	__u8 reserved[2892];
} garbage_control_collection_log_t;

static void vu_gc_log_show_json(garbage_control_collection_log_t *payload, const char *devname)
{
	struct json_object *gc_entries = json_create_array();

	for (int i = 0; i < VU_GC_MAX_ITEMS; i++) {
		gc_item_t item = payload->item[i];
		struct json_object *entry = json_create_object();
		json_object_add_value_int(entry, "timestamp", le64_to_cpu(item.timestamp));
		json_object_add_value_int(entry, "timer_type", le32_to_cpu(item.timer_type));
		json_array_add_value_object(gc_entries, entry);
	}

	json_print_object(gc_entries, NULL);
	json_free_object(gc_entries);
}

static void vu_gc_log_show(garbage_control_collection_log_t *payload, const char *devname,
			   __u8 uuid_index)
{
	printf("Solidigm Garbage Collection Log for NVME device:%s UUID-idx:%d\n", devname,
	       uuid_index);
	printf("Timestamp     Timer Type\n");

	for (int i = 0; i < VU_GC_MAX_ITEMS; i++) {
		gc_item_t item = payload->item[i];
		printf("%-13" PRIu64 " %d\n", le64_to_cpu(item.timestamp), le32_to_cpu(item.timer_type));
	}
}

int solidigm_get_garbage_collection_log(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	const char *desc = "Get and parse Solidigm vendor specific garbage collection event log.";
	struct nvme_dev *dev;
	int err;
	__u8 uuid_index;

	struct config {
		char	*output_format;
	};

	struct config cfg = {
		.output_format	= "normal",
	};

	OPT_ARGS(opts) = {
		OPT_FMT("output-format",   'o', &cfg.output_format,  output_format),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		return err;

	enum nvme_print_flags flags = validate_output_format(cfg.output_format);
	if (flags == -EINVAL) {
		fprintf(stderr, "Invalid output format '%s'\n", cfg.output_format);
		dev_close(dev);
		return EINVAL;
	}

	uuid_index = solidigm_get_vu_uuid_index(dev);

	garbage_control_collection_log_t gc_log;
	const int solidigm_vu_gc_log_id = 0xfd;
	struct nvme_get_log_args args = {
		.lpo = 0,
		.result = NULL,
		.log = &gc_log,
		.args_size = sizeof(args),
		.fd = dev_fd(dev),
		.timeout = NVME_DEFAULT_IOCTL_TIMEOUT,
		.lid = solidigm_vu_gc_log_id,
		.len = sizeof(gc_log),
		.nsid = NVME_NSID_ALL,
		.csi = NVME_CSI_NVM,
		.lsi = NVME_LOG_LSI_NONE,
		.lsp = NVME_LOG_LSP_NONE,
		.uuidx = uuid_index,
		.rae = false,
		.ot = false,
	};

	err =  nvme_get_log(&args);
	if (!err) {
		if (flags & BINARY)	{
			d_raw((unsigned char *)&gc_log, sizeof(gc_log));
		} else if (flags & JSON) {
			vu_gc_log_show_json(&gc_log, dev->name);
		} else {
			vu_gc_log_show(&gc_log, dev->name, uuid_index);
		}
	}
	else if (err > 0) {
		nvme_show_status(err);
	}

	/* Redundant close() to make static code analysis happy */
	close(dev->direct.fd);
	dev_close(dev);
	return err;
}
  070701015D6C49000081A4000003E80000006400000001642C0FB5000000EE000000000000004A00000000000000000000003800000000nvme-cli/plugins/solidigm/solidigm-garbage-collection.h   // SPDX-License-Identifier: GPL-2.0-or-later
/*
 * Copyright (c) 2022 Solidigm.
 *
 * Author: leonardo.da.cunha@solidigm.com
 */

int solidigm_get_garbage_collection_log(int argc, char **argv, struct command *cmd, struct plugin *plugin);
  070701015D6C4B000081A4000003E80000006400000001642C0FB5000000F6000000000000004A00000000000000000000003600000000nvme-cli/plugins/solidigm/solidigm-latency-tracking.h // SPDX-License-Identifier: GPL-2.0-or-later
/*
 * Copyright (c) 2022 Solidigm.
 *
 * Author: leonardo.da.cunha@solidigm.com
 */

int solidigm_get_latency_tracking_log(int argc, char **argv, struct command *cmd,
				      struct plugin *plugin);
  070701015D6C4E000081A4000003E80000006400000001642C0FB500001AF9000000000000004A00000000000000000000002B00000000nvme-cli/plugins/solidigm/solidigm-smart.c    // SPDX-License-Identifier: GPL-2.0-or-later
/*
 * Copyright (c) 2022 Solidigm.
 *
 * Author: leonardo.da.cunha@solidigm.com
 */

#include <fcntl.h>
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

#include "common.h"
#include "nvme.h"
#include "libnvme.h"
#include "plugin.h"
#include "linux/types.h"
#include "nvme-print.h"

#include "solidigm-smart.h"
#include "solidigm-util.h"

struct  __attribute__((packed)) nvme_additional_smart_log_item {
	__u8			id;
	__u8			_kp[2];
	__u8			normalized;
	__u8			_np;
	union __attribute__((packed)) {
		__u8		raw[6];
		struct __attribute__((packed))  wear_level {
			__le16	min;
			__le16	max;
			__le16	avg;
		} wear_level;
		struct __attribute__((packed)) thermal_throttle {
			__u8	pct;
			__u32	count;
		} thermal_throttle;
	} ;
	__u8			_rp;
} ;
typedef struct nvme_additional_smart_log_item smart_log_item_t;

#define VU_SMART_PAGE_SIZE 512
#define VU_SMART_MAX_ITEMS VU_SMART_PAGE_SIZE / sizeof(smart_log_item_t)
typedef struct vu_smart_log {
	smart_log_item_t item[VU_SMART_MAX_ITEMS];
} vu_smart_log_t;

static char *id_to_name(__u8 id)
{
	switch (id) {
	case 0x0D:
		return "soft_ecc_error_rate";
	case 0x05:
		return "relocatable_sector_count";
	case 0xAB:
		return "program_fail_count";
	case 0xAC:
		return "erase_fail_count";
	case 0xAD:
		return "wear_leveling_count";
	case 0xAE:
		return "unexpected_power_loss";
	case 0xB8:
		return "e2e_error_detect_count";
	case 0xC7:
		return "crc_error_count";
	case 0xE2:
		return "media_wear_percentage";
	case 0xE3:
		return "host_reads";
	case 0xE4:
		return "timed_work_load";
	case 0xE5:
		return "read_commands_in_flight_counter";
	case 0xE6:
		return "write_commands_in_flight_counter";
	case 0xEA:
		return "thermal_throttle_status";
	case 0xF0:
		return "retry_buffer_overflow_counter";
	case 0xF3:
		return "pll_lock_loss_counter";
	case 0xF4:
		return "nand_bytes_written";
	case 0xF5:
		return "host_bytes_written";
	case 0xF6:
		return "host_context_wear_used";
	case 0xF7:
		return "performance_status_indicator";
	case 0xF8:
		return "media_bytes_read";
	case 0xF9:
		return "available_fw_downgrades";
	case 0xFA:
		return "host_read_collision_count";
	case 0xFB:
		return "host_write_collision_count";
	case 0xFC:
		return "xor_pass_count";
	case 0xFD:
		return "xor_fail_count";
	case 0xFE:
		return "xor_invoked_count";
	default:
		return "unknown";
	}
}

static void smart_log_item_print(smart_log_item_t *item)
{
	if (!item->id) {
		return;
	}

	printf("%#x    %-45s  %3d         ",
		item->id, id_to_name(item->id), item->normalized);

	switch (item->id) {
	case 0xAD:
		printf("min: %u, max: %u, avg: %u\n",
			le16_to_cpu(item->wear_level.min),
			le16_to_cpu(item->wear_level.max),
			le16_to_cpu(item->wear_level.avg));
		return;
	case 0xEA:
		printf("%u%%, cnt: %u\n",
			item->thermal_throttle.pct,
			le32_to_cpu(item->thermal_throttle.count));
		return;
	default:
		printf("%"PRIu64"\n", int48_to_long(item->raw));
	}
}

static void smart_log_item_add_json(smart_log_item_t *item, struct json_object *dev_stats)
{
	struct json_object *entry_stats = json_create_object();

	if (!item->id) {
		return;
	}

	json_object_add_value_int(entry_stats, "normalized", item->normalized);

	switch (item->id) {
	case 0xAD:
		json_object_add_value_int(entry_stats, "min", le16_to_cpu(item->wear_level.min));
		json_object_add_value_int(entry_stats, "max", le16_to_cpu(item->wear_level.max));
		json_object_add_value_int(entry_stats, "avg", le16_to_cpu(item->wear_level.avg));
		break;
	case 0xEA:
		json_object_add_value_int(entry_stats, "percentage", item->thermal_throttle.pct);
		json_object_add_value_int(entry_stats, "count", le32_to_cpu(item->thermal_throttle.count));
		break;
	default:
		json_object_add_value_int(entry_stats, "raw", int48_to_long(item->raw));
	}
	json_object_add_value_object(dev_stats, id_to_name(item->id), entry_stats);
}

static void vu_smart_log_show_json(vu_smart_log_t *payload, unsigned int nsid, const char *devname)
{
	struct json_object *dev_stats = json_create_object();
	smart_log_item_t *item = payload->item;
	struct json_object *root;

	for (int i = 0; i < VU_SMART_MAX_ITEMS; i++) {
		smart_log_item_add_json(&item[i], dev_stats);
	}

	root = json_create_object();
	json_object_add_value_string(root, "Solidigm SMART log", devname);
	json_object_add_value_object(root, "Device stats", dev_stats);

	json_print_object(root, NULL);
	json_free_object(root);
}

static void vu_smart_log_show(vu_smart_log_t *payload, unsigned int nsid, const char *devname,
			      __u8 uuid_index)
{
	smart_log_item_t *item = payload->item;

	printf("Additional Smart Log for NVMe device:%s namespace-id:%x UUID-idx:%d\n",
		devname, nsid, uuid_index);
	printf("ID             KEY                                 Normalized     Raw\n");

	for (int i = 0; i < VU_SMART_MAX_ITEMS; i++) {
		smart_log_item_print(&item[i]);
	}
}

int solidigm_get_additional_smart_log(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	const char *desc = "Get Solidigm vendor specific smart log (optionally, "\
		      "for the specified namespace), and show it.";
	const int solidigm_vu_smart_log_id = 0xCA;
	vu_smart_log_t smart_log_payload;
	enum nvme_print_flags flags;
	struct nvme_dev *dev;
	int err;
	__u8 uuid_index;

	struct config {
		__u32	namespace_id;
		char	*output_format;
	};

	struct config cfg = {
		.namespace_id	= NVME_NSID_ALL,
		.output_format	= "normal",
	};

	OPT_ARGS(opts) = {
		OPT_UINT("namespace-id",   'n', &cfg.namespace_id,   "(optional) desired namespace"),
		OPT_FMT("output-format",   'o', &cfg.output_format,  output_format),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		return err;

	flags = validate_output_format(cfg.output_format);
	if (flags == -EINVAL) {
		fprintf(stderr, "Invalid output format '%s'\n", cfg.output_format);
		dev_close(dev);
		return flags;
	}

	uuid_index = solidigm_get_vu_uuid_index(dev);

	struct nvme_get_log_args args = {
		.lpo = 0,
		.result = NULL,
		.log = &smart_log_payload,
		.args_size = sizeof(args),
		.fd = dev_fd(dev),
		.timeout = NVME_DEFAULT_IOCTL_TIMEOUT,
		.lid = solidigm_vu_smart_log_id,
		.len = sizeof(smart_log_payload),
		.nsid = NVME_NSID_ALL,
		.csi = NVME_CSI_NVM,
		.lsi = NVME_LOG_LSI_NONE,
		.lsp = NVME_LOG_LSP_NONE,
		.uuidx = uuid_index,
		.rae = false,
		.ot = false,
	};

	err =  nvme_get_log(&args);
	if (!err) {
		if (flags & JSON) {
			vu_smart_log_show_json(&smart_log_payload,
					       cfg.namespace_id, dev->name);
		} else if (flags & BINARY) {
			d_raw((unsigned char *)&smart_log_payload, sizeof(smart_log_payload));
		} else {
			vu_smart_log_show(&smart_log_payload, cfg.namespace_id,
					  dev->name, uuid_index);
		}
	} else if (err > 0) {
		nvme_show_status(err);
	}

	/* Redundant close() to make static code analysis happy */
	close(dev->direct.fd);
	dev_close(dev);
	return err;
}

   070701015D6C4F000081A4000003E80000006400000001642C0FB5000000EC000000000000004A00000000000000000000002B00000000nvme-cli/plugins/solidigm/solidigm-smart.h    // SPDX-License-Identifier: GPL-2.0-or-later
/*
 * Copyright (c) 2022 Solidigm.
 *
 * Author: leonardo.da.cunha@solidigm.com
 */

int solidigm_get_additional_smart_log(int argc, char **argv, struct command *cmd, struct plugin *plugin);
070701015D6C51000081A4000003E80000006400000001642C0FB5000000E5000000000000004A00000000000000000000002F00000000nvme-cli/plugins/solidigm/solidigm-telemetry.h    // SPDX-License-Identifier: GPL-2.0-or-later
/*
 * Copyright (c) 2022 Solidigm.
 *
 * Author: leonardo.da.cunha@solidigm.com
 */

int solidigm_get_telemetry_log(int argc, char **argv, struct command *cmd, struct plugin *plugin);
   070701015D6C5D000081A4000003E80000006400000001642C0FB50000017D000000000000004A00000000000000000000002A00000000nvme-cli/plugins/solidigm/solidigm-util.c // SPDX-License-Identifier: GPL-2.0-or-later
/*
 * Copyright (c) 2023 Solidigm.
 *
 * Author: leonardo.da.cunha@solidigm.com
 */

#include "plugins/ocp/ocp-utils.h"
#include "solidigm-util.h"

__u8 solidigm_get_vu_uuid_index(struct nvme_dev *dev)
{
	int ocp_uuid_index = 0;

	if (ocp_get_uuid_index(dev, &ocp_uuid_index) == 0)
		if (ocp_uuid_index == 2)
			return 1;

	return 0;
}
   070701015D6C5E000081A4000003E80000006400000001642C0FB5000000CF000000000000004A00000000000000000000002A00000000nvme-cli/plugins/solidigm/solidigm-util.h /* SPDX-License-Identifier: GPL-2.0-or-later */
/*
 * Copyright (c) 2023 Solidigm.
 *
 * Author: leonardo.da.cunha@solidigm.com
 */

#include "nvme.h"

__u8 solidigm_get_vu_uuid_index(struct nvme_dev *dev);
 070701015D6E64000081A4000003E80000006400000001642C0FB600002F94000000000000004A00000000000000000000003600000000nvme-cli/plugins/solidigm/solidigm-latency-tracking.c // SPDX-License-Identifier: GPL-2.0-or-later
/*
 * Copyright (c) 2022 Solidigm.
 *
 * Author: leonardo.da.cunha@solidigm.com
 */

#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <inttypes.h>

#include "common.h"
#include "nvme.h"
#include "libnvme.h"
#include "plugin.h"
#include "linux/types.h"
#include "nvme-print.h"
#include "solidigm-util.h"

#define BUCKET_LIST_SIZE_4_0 152
#define BUCKET_LIST_SIZE_4_1 1216

#define BASE_RANGE_BITS_4_0 3
#define BASE_RANGE_BITS_4_1 6

struct latency_statistics {
	__u16 version_major;
	__u16 version_minor;
	__u32 data[BUCKET_LIST_SIZE_4_1];
	__u64 average_latency;
};

struct config {
	bool enable;
	bool disable;
	bool read;
	bool write;
	unsigned char type;
	char *output_format;
};

struct latency_tracker {
	int fd;
	__u8 uuid_index;
	struct config cfg;
	enum nvme_print_flags print_flags;
	struct latency_statistics stats;
	struct json_object *bucket_list;
	__u32 bucket_list_size;
	__u8 base_range_bits;
	bool has_average_latency_field;
};

/* COL_WIDTH controls width of columns in NORMAL output. */
#define COL_WIDTH 12
#define BUCKET_LABEL_MAX_SIZE 10

#define US_IN_S 1000000
#define US_IN_MS 1000

/*
 * Edge buckets may have range [#s, inf) in some
 * latency statistics formats.
 */
static void get_time_unit_label(char *label, __u32 microseconds,
			    bool bonded)
{
	char *string = "us";
	int divisor = 1;

	if (!bonded) {
		snprintf(label, BUCKET_LABEL_MAX_SIZE, "%s", "+INF");
		return;
	}

	if (microseconds > US_IN_S) {
		string = "s";
		divisor = US_IN_S;
	} else if (microseconds > US_IN_MS) {
		string = "ms";
		divisor = US_IN_MS;
	}

	snprintf(label, BUCKET_LABEL_MAX_SIZE, "%4.2f%s",  (float) microseconds / divisor,
		 string);
}

static void latency_tracker_bucket_parse(const struct latency_tracker *lt, int id,
					 __u32 lower_us, __u32 upper_us, bool upper_bounded)
{
	char buffer[BUCKET_LABEL_MAX_SIZE] = "";
	__u32 bucket_data = le32_to_cpu(lt->stats.data[id]);

	if (lt->print_flags == NORMAL) {

		printf("%-*d", COL_WIDTH, id);

		get_time_unit_label(buffer, lower_us, true);
		printf("%-*s", COL_WIDTH, buffer);

		get_time_unit_label(buffer, upper_us, upper_bounded);
		printf("%-*s", COL_WIDTH, buffer);

		printf("%-*d\n", COL_WIDTH, bucket_data);
	}

	if (lt->print_flags == JSON) {
		/*
		 * Creates a bucket under the "values" json_object. Format is:
		 * "values" : {
		 *   "bucket" : {
		 *     "id" : #,
		 *     "start" : string,
		 *     "end" : string,
		 *     "value" : 0,
		 *   },
		 */
		struct json_object *bucket = json_create_object();

		json_object_array_add(lt->bucket_list, bucket);
		json_object_add_value_int(bucket, "id", id);

		get_time_unit_label(buffer, lower_us, true);
		json_object_add_value_string(bucket, "start", buffer);

		get_time_unit_label(buffer, upper_us, upper_bounded);
		json_object_add_value_string(bucket, "end", buffer);

		json_object_add_value_int(bucket, "value", bucket_data);
	}
}

static void latency_tracker_parse_linear(const struct latency_tracker *lt,
					 __u32 start_offset, __u32 end_offset,
					 __u32 bytes_per, __u32 us_step,
					 bool nonzero_print)
{
	for (int i = (start_offset / bytes_per) - 1;
			i < end_offset / bytes_per; i++) {
		if (nonzero_print && lt->stats.data[i] == 0)
			continue;
		latency_tracker_bucket_parse(lt, i, us_step * i,
				             us_step * (i + 1), true);
	}
}

/*
 * Calculates bucket time slot. Valid  starting on 4.0 revision.
 */

static int latency_tracker_bucket_pos2us(const struct latency_tracker *lt, int i)
{
	__u32 base_val = 1 <<  lt->base_range_bits;
	if (i < (base_val << 1))
		return i;

	int error_bits = (i >> lt->base_range_bits) - 1;
	int base = 1 << (error_bits + lt->base_range_bits);
	int k = i % base_val;

	return base + ((k + 0.5) * (1 << error_bits));
}

/*
 * Creates a subroot in the following manner:
 * {
 *   "latstats" : {
 *     "type" : "write" or "read",
 *     "values" : {
 */
static void latency_tracker_populate_json_root(const struct latency_tracker *lt,
                                               struct json_object *root)
{
	struct json_object *subroot = json_create_object();

	json_object_add_value_object(root, "latstats", subroot);
	json_object_add_value_string(subroot, "type", lt->cfg.write ? "write" : "read");
	if (lt->has_average_latency_field) {
		json_object_add_value_uint64(subroot, "average_latency", le64_to_cpu(lt->stats.average_latency));
	}
	json_object_add_value_object(subroot, "values", lt->bucket_list);
}

static void latency_tracker_parse_3_0(const struct latency_tracker *lt)
{
	latency_tracker_parse_linear(lt, 4, 131, 4, 32, false);
	latency_tracker_parse_linear(lt, 132, 255, 4, 1024, false);
	latency_tracker_parse_linear(lt, 256, 379, 4, 32768, false);
	latency_tracker_parse_linear(lt, 380, 383, 4, 32, true);
	latency_tracker_parse_linear(lt, 384, 387, 4, 32, true);
	latency_tracker_parse_linear(lt, 388, 391, 4, 32, true);
}

static void latency_tracker_parse_4_0(const struct latency_tracker *lt)
{
	for (unsigned int i = 0; i < lt->bucket_list_size; i++) {
		int lower_us = latency_tracker_bucket_pos2us(lt, i);
		int upper_us = latency_tracker_bucket_pos2us(lt, i + 1);

		latency_tracker_bucket_parse(lt, i, lower_us,
				             upper_us,
					     i < (lt->bucket_list_size - 1));
	}
}

static void print_dash_separator()
{
	printf("--------------------------------------------------\n");
}

static void latency_tracker_pre_parse(struct latency_tracker *lt)
{
	if (lt->print_flags == NORMAL) {
		printf("Solidigm IO %s Command Latency Tracking Statistics type %d\n",
			lt->cfg.write ? "Write" : "Read", lt->cfg.type);
		printf("UUID-idx: %d\n", lt->uuid_index);
		printf("Major Revision: %u\nMinor Revision: %u\n",
			le16_to_cpu(lt->stats.version_major), le16_to_cpu(lt->stats.version_minor));
		if (lt->has_average_latency_field) {
			printf("Average Latency: %" PRIu64 "\n", le64_to_cpu(lt->stats.average_latency));
		}
		print_dash_separator();
		printf("%-12s%-12s%-12s%-20s\n", "Bucket", "Start", "End", "Value");
		print_dash_separator();
	}
	if (lt->print_flags == JSON) {
		lt->bucket_list = json_object_new_array();
	}
}

static void latency_tracker_post_parse(struct latency_tracker *lt)
{
	if (lt->print_flags == JSON) {
		struct json_object *root = json_create_object();

		latency_tracker_populate_json_root(lt, root);
		json_print_object(root, NULL);
		json_free_object(root);
		printf("\n");
	}
}

static void latency_tracker_parse(struct latency_tracker *lt)
{
	__u16 version_major = le16_to_cpu(lt->stats.version_major);
	__u16 version_minor = le16_to_cpu(lt->stats.version_minor);

	switch (version_major) {
	case 3:
		latency_tracker_pre_parse(lt);
		latency_tracker_parse_3_0(lt);
		break;
	case 4:
		if (version_minor >= 8){
			lt->has_average_latency_field = true;
		}
		latency_tracker_pre_parse(lt);
		if (version_minor == 0){
			lt->base_range_bits = BASE_RANGE_BITS_4_0;
			lt->bucket_list_size = BUCKET_LIST_SIZE_4_0;
		}
		latency_tracker_parse_4_0(lt);
		break;
	default:
		printf("Unsupported revision (%u.%u)\n",
		       version_major, version_minor);
		break;
	}

	latency_tracker_post_parse(lt);
}

#define LATENCY_TRACKING_FID 0xe2
#define LATENCY_TRACKING_FID_DATA_LEN 32

static int latency_tracking_is_enable(struct latency_tracker *lt, __u32 * enabled)
{
	struct nvme_get_features_args args_get = {
		.args_size	= sizeof(args_get),
		.fd		= lt->fd,
		.uuidx		= lt->uuid_index,
		.fid		= LATENCY_TRACKING_FID,
		.nsid		= 0,
		.sel		= 0,
		.cdw11		= 0,
		.data_len	= LATENCY_TRACKING_FID_DATA_LEN,
		.data		= NULL,
		.timeout	= NVME_DEFAULT_IOCTL_TIMEOUT,
		.result		= enabled,
	};
	return nvme_get_features(&args_get);
}

static int latency_tracking_enable(struct latency_tracker *lt)
{
	__u32 result;
	int err;

	if (!(lt->cfg.enable || lt->cfg.disable)){
		return 0;
	}

	if (lt->cfg.enable && lt->cfg.disable){
		fprintf(stderr,"Cannot enable and disable simultaneously.\n");
		return EINVAL;
	}

	struct nvme_set_features_args args_set = {
		.args_size	= sizeof(args_set),
		.fd		= lt->fd,
		.uuidx		= lt->uuid_index,
		.fid		= LATENCY_TRACKING_FID,
		.nsid		= 0,
		.cdw11		= lt->cfg.enable,
		.cdw12		= 0,
		.save		= 0,
		.cdw15		= 0,
		.data_len	= LATENCY_TRACKING_FID_DATA_LEN,
		.data		= NULL,
		.timeout	= NVME_DEFAULT_IOCTL_TIMEOUT,
		.result		= &result,
	};

	err = nvme_set_features(&args_set);
	if (err > 0) {
		nvme_show_status(err);
	} else if (err < 0) {
		perror("Enable latency tracking");
		fprintf(stderr, "Command failed while parsing.\n");
	} else {
		if (lt->print_flags == NORMAL) {
			printf("Successfully set enable bit for UUID-idx:%d FID:0x%X, to %i.\n",
				lt->uuid_index, LATENCY_TRACKING_FID, lt->cfg.enable);
		}
	}
	return err;
}

#define READ_LOG_ID 0xc1
#define WRITE_LOG_ID 0xc2

static int latency_tracker_get_log(struct latency_tracker *lt)
{
	int err;

	if (lt->cfg.read && lt->cfg.write){
		fprintf(stderr,"Cannot capture read and write logs simultaneously.\n");
		return EINVAL;
	}

	if (!(lt->cfg.read || lt->cfg.write))
		return 0;

	struct nvme_get_log_args args = {
		.lpo	= 0,
		.result = NULL,
		.log	= &lt->stats,
		.args_size = sizeof(args),
		.fd	= lt->fd,
		.uuidx	= lt->uuid_index,
		.timeout = NVME_DEFAULT_IOCTL_TIMEOUT,
		.lid	= lt->cfg.write ? WRITE_LOG_ID : READ_LOG_ID,
		.len	= sizeof(lt->stats),
		.nsid	= NVME_NSID_ALL,
		.csi	= NVME_CSI_NVM,
		.lsi	= NVME_LOG_LSI_NONE,
		.lsp	= lt->cfg.type,
		.rae	= false,
		.ot	= false,
	};

	err = nvme_get_log(&args);
	if (err)
		return err;

	if (lt->print_flags & BINARY)
		d_raw((unsigned char *)&lt->stats,
			      sizeof(lt->stats));
	else {
		latency_tracker_parse(lt);
	}
	return err;
}

int solidigm_get_latency_tracking_log(int argc, char **argv, struct command *cmd,
				      struct plugin *plugin)
{
	const char *desc = "Get and Parse Solidigm Latency Tracking Statistics log.";
	struct nvme_dev *dev;
	__u32 enabled;
	int err;

	struct latency_tracker lt = {
		.uuid_index = 0,
		.cfg = {
			.output_format	= "normal",
		},
		.base_range_bits = BASE_RANGE_BITS_4_1,
		.bucket_list_size = BUCKET_LIST_SIZE_4_1,
		.has_average_latency_field = false,
	};

	OPT_ARGS(opts) = {
		OPT_FLAG("enable", 'e', &lt.cfg.enable, "Enable Latency Tracking"),
		OPT_FLAG("disable", 'd', &lt.cfg.disable, "Disable Latency Tracking"),
		OPT_FLAG("read", 'r', &lt.cfg.read, "Get read statistics"),
		OPT_FLAG("write", 'w', &lt.cfg.write, "Get write statistics"),
		OPT_BYTE("type", 't', &lt.cfg.type, "Log type to get"),
		OPT_FMT("output-format", 'o', &lt.cfg.output_format, output_format),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		return err;

	lt.fd = dev_fd(dev);

	lt.print_flags = validate_output_format(lt.cfg.output_format);
	if (lt.print_flags == -EINVAL) {
		fprintf(stderr, "Invalid output format '%s'\n", lt.cfg.output_format);
		dev_close(dev);
		return EINVAL;
	}

	if (lt.cfg.type > 0xf) {
		fprintf(stderr, "Invalid Log type value '%d'\n", lt.cfg.type);
		dev_close(dev);
		return EINVAL;
	}

	if (lt.cfg.type && !(lt.cfg.read || lt.cfg.write)) {
		fprintf(stderr, "Log type option valid only when retrieving statistics\n");
		dev_close(dev);
		return EINVAL;
	}

	lt.uuid_index = solidigm_get_vu_uuid_index(dev);

	err = latency_tracking_enable(&lt);
	if (err){
		dev_close(dev);
		return err;
	}

	err = latency_tracker_get_log(&lt);
	if (err){
		dev_close(dev);
		return err;
	}

	if ((lt.cfg.read || lt.cfg.write || lt.cfg.enable || lt.cfg.disable)) {
		dev_close(dev);
		return 0;
	}

	err = latency_tracking_is_enable(&lt, &enabled);
	if (!err) {
		if (lt.print_flags == JSON) {
			struct json_object *root = json_create_object();
			json_object_add_value_int(root,"enabled", enabled);
			json_print_object(root, NULL);
			json_free_object(root);
			printf("\n");
		} else if (lt.print_flags == BINARY) {
			putchar(enabled);
		} else {
		printf(
			"Latency Statistics Tracking (UUID-idx:%d, FID:0x%X) is currently %i.\n",
			lt.uuid_index, LATENCY_TRACKING_FID, enabled);
		}
	} else {
		fprintf(stderr, "Could not read feature id 0xE2.\n");
	}
	/* Redundant close() to make static code analysis happy */
	close(dev->direct.fd);
	dev_close(dev);
	return err;
}
070701015D6E65000081A4000003E80000006400000001642C0FB6000005B8000000000000004A00000000000000000000002A00000000nvme-cli/plugins/solidigm/solidigm-nvme.c // SPDX-License-Identifier: GPL-2.0-or-later
/*
 * Copyright (c) 2022 Solidigm.
 *
 * Author: leonardo.da.cunha@solidigm.com
 */

#include "nvme.h"

#define CREATE_CMD
#include "solidigm-nvme.h"

#include "solidigm-smart.h"
#include "solidigm-garbage-collection.h"
#include "solidigm-latency-tracking.h"
#include "solidigm-telemetry.h"

#include "plugins/ocp/ocp-clear-fw-update-history.h"
#include "plugins/ocp/ocp-smart-extended-log.h"

static int get_additional_smart_log(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	return solidigm_get_additional_smart_log(argc, argv, cmd, plugin);
}

static int get_garbage_collection_log(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	return solidigm_get_garbage_collection_log(argc, argv, cmd, plugin);
}

static int get_latency_tracking_log(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	return solidigm_get_latency_tracking_log(argc, argv, cmd, plugin);
}

static int get_telemetry_log(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	return solidigm_get_telemetry_log(argc, argv, cmd, plugin);
}

static int clear_fw_update_history(int argc, char **argv, struct command *cmd,
				   struct plugin *plugin)
{
	return ocp_clear_fw_update_history(argc, argv, cmd, plugin);
}

static int smart_cloud(int argc, char **argv, struct command *cmd,
		       struct plugin *plugin)
{
	return ocp_smart_add_log(argc, argv, cmd, plugin);
}
070701015D6E66000081A4000003E80000006400000001642C0FB60000043F000000000000004A00000000000000000000002A00000000nvme-cli/plugins/solidigm/solidigm-nvme.h // SPDX-License-Identifier: GPL-2.0-or-later
/*
 * Copyright (c) 2022 Solidigm.
 *
 * Author: leonardo.da.cunha@solidigm.com
 */

#undef CMD_INC_FILE
#define CMD_INC_FILE plugins/solidigm/solidigm-nvme

#if !defined(SOLIDIGM_NVME) || defined(CMD_HEADER_MULTI_READ)
#define SOLIDIGM_NVME

#include "cmd.h"

#define SOLIDIGM_PLUGIN_VERSION "0.8"

PLUGIN(NAME("solidigm", "Solidigm vendor specific extensions", SOLIDIGM_PLUGIN_VERSION),
	COMMAND_LIST(
		ENTRY("smart-log-add", "Retrieve Solidigm SMART Log", get_additional_smart_log)
		ENTRY("vs-smart-add-log", "Get SMART / health extended log (redirects to ocp plug-in)", smart_cloud)
		ENTRY("garbage-collect-log", "Retrieve Garbage Collection Log", get_garbage_collection_log)
		ENTRY("latency-tracking-log", "Enable/Retrieve Latency tracking Log", get_latency_tracking_log)
		ENTRY("parse-telemetry-log", "Parse Telemetry Log binary", get_telemetry_log)
		ENTRY("clear-fw-activate-history",
		      "Clear firmware update history log (redirects to ocp plug-in)",
		      clear_fw_update_history)
	)
);

#endif

#include "define_cmd.h"
 070701015D6E67000081A4000003E80000006400000001642C0FB600001270000000000000004A00000000000000000000002F00000000nvme-cli/plugins/solidigm/solidigm-telemetry.c    // SPDX-License-Identifier: GPL-2.0-or-later
/*
 * Copyright (c) 2022 Solidigm.
 *
 * Author: leonardo.da.cunha@solidigm.com
 */

#include <fcntl.h>
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

#include "common.h"
#include "nvme.h"
#include "libnvme.h"
#include "plugin.h"
#include "nvme-print.h"
#include "solidigm-telemetry.h"
#include "solidigm-telemetry/telemetry-log.h"
#include "solidigm-telemetry/cod.h"
#include "solidigm-telemetry/header.h"
#include "solidigm-telemetry/config.h"
#include "solidigm-telemetry/data-area.h"

static int read_file2buffer(char *file_name, char **buffer, size_t *length)
{
	FILE *fd = fopen(file_name, "rb");

	if (!fd)
		return errno;

	fseek(fd, 0, SEEK_END);
	size_t length_bytes = ftell(fd);

	fseek(fd, 0, SEEK_SET);

	*buffer = malloc(length_bytes);
	if (!*buffer) {
		fclose(fd);
		return errno;
	}
	*length = fread(*buffer, 1, length_bytes, fd);
	fclose(fd);
	return 0;
}

struct config {
	__u32 host_gen;
	bool ctrl_init;
	int  data_area;
	char *cfg_file;
	bool is_input_file;
};

int solidigm_get_telemetry_log(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	const char *desc = "Parse Solidigm Telemetry log";
	const char *hgen = "Controls when to generate new host initiated report. Default value '1' generates new host initiated report, value '0' causes retrieval of existing log.";
	const char *cgen = "Gather report generated by the controller.";
	const char *dgen = "Pick which telemetry data area to report. Default is 3 to fetch areas 1-3. Valid options are 1, 2, 3, 4.";
	const char *cfile = "JSON configuration file";
	const char *sfile = "data source <device> is binary file containing log dump instead of block or character device";
	struct nvme_dev *dev;

	struct telemetry_log tl = {
		.root = json_create_object(),
		.log = NULL,
	};

	struct config cfg = {
		.host_gen   = 1,
		.ctrl_init  = false,
		.data_area  = 3,
		.cfg_file   = NULL,
		.is_input_file = false,
	};

	OPT_ARGS(opts) = {
		OPT_UINT("host-generate",   'g', &cfg.host_gen,  hgen),
		OPT_FLAG("controller-init", 'c', &cfg.ctrl_init, cgen),
		OPT_UINT("data-area",       'd', &cfg.data_area, dgen),
		OPT_FILE("config-file",     'j', &cfg.cfg_file, cfile),
		OPT_FLAG("source-file",     's', &cfg.is_input_file, sfile),
		OPT_END()
	};

	int err = argconfig_parse(argc, argv, desc, opts);

	if (err)
		goto ret;

	if (cfg.is_input_file) {
		if (optind >= argc) {
			err = errno = EINVAL;
			perror(argv[0]);
			goto ret;
		}
		char *binary_file_name = argv[optind];

		err = read_file2buffer(binary_file_name, (char **)&tl.log, &tl.log_size);
	} else {
		err = parse_and_open(&dev, argc, argv, desc, opts);
	}
	if (err)
		goto ret;

	if (cfg.host_gen > 1) {
		SOLIDIGM_LOG_WARNING("Invalid host-generate value '%d'", cfg.host_gen);
		err = EINVAL;
		goto close_fd;
	}

	if (cfg.cfg_file) {
		char *conf_str = 0;
		size_t length = 0;

		err = read_file2buffer(cfg.cfg_file, &conf_str, &length);
		if (err) {
			SOLIDIGM_LOG_WARNING("Failed to open JSON configuration file %s: %s!",
				cfg.cfg_file, strerror(err));
			goto close_fd;
		}
		struct json_tokener * jstok = json_tokener_new();

		tl.configuration = json_tokener_parse_ex(jstok, conf_str, length);
		if (jstok->err != json_tokener_success)	{
			SOLIDIGM_LOG_WARNING("Parsing error on JSON configuration file %s: %s (at offset %d)",
					     cfg.cfg_file,
					     json_tokener_error_desc(jstok->err),
					     jstok->char_offset);
			json_tokener_free(jstok);
			err = EINVAL;
			goto close_fd;
		}
		json_tokener_free(jstok);
	}

	if (!cfg.is_input_file) {
		if (cfg.ctrl_init)
			err = nvme_get_ctrl_telemetry(dev_fd(dev), true,
						      &tl.log, cfg.data_area,
						      &tl.log_size);
		else if (cfg.host_gen)
			err = nvme_get_new_host_telemetry(dev_fd(dev), &tl.log,
							  cfg.data_area,
							  &tl.log_size);
		else
			err = nvme_get_host_telemetry(dev_fd(dev), &tl.log,
						      cfg.data_area,
						      &tl.log_size);

		if (err < 0) {
			SOLIDIGM_LOG_WARNING("get-telemetry-log: %s",
					     nvme_strerror(errno));
			goto close_fd;
		} else if (err > 0) {
			nvme_show_status(err);
			SOLIDIGM_LOG_WARNING("Failed to acquire telemetry log %d!", err);
			goto close_fd;
		}
	}
	solidigm_telemetry_log_header_parse(&tl);
	if (cfg.cfg_file)
		solidigm_telemetry_log_data_areas_parse(&tl, cfg.data_area);
	else
		solidigm_telemetry_log_cod_parse(&tl);

	json_print_object(tl.root, NULL);
	json_free_object(tl.root);
	printf("\n");

close_fd:
	if (!cfg.is_input_file) {
		/* Redundant close() to make static code analysis happy */
		close(dev->direct.fd);
		dev_close(dev);
	}
ret:
	json_free_object(tl.configuration);
	free(tl.log);
	return err;
}
070701015D6C54000081A4000003E80000006400000001642C0FB5000000D4000000000000004A00000000000000000000003300000000nvme-cli/plugins/solidigm/solidigm-telemetry/cod.h    /* SPDX-License-Identifier: MIT */
/*
 * Copyright (c) 2022 Solidigm.
 *
 * Author: leonardo.da.cunha@solidigm.com
 */

#include "telemetry-log.h"
void solidigm_telemetry_log_cod_parse(struct telemetry_log *tl);
070701015D6C58000081A4000003E80000006400000001642C0FB50000011D000000000000004A00000000000000000000003900000000nvme-cli/plugins/solidigm/solidigm-telemetry/data-area.h  /* SPDX-License-Identifier: MIT */
/*
 * Copyright (c) 2022 Solidigm.
 *
 * Author: leonardo.da.cunha@solidigm.com
 */
#include "common.h"
#include "telemetry-log.h"

int solidigm_telemetry_log_data_areas_parse(const struct telemetry_log *tl,
					    enum nvme_telemetry_da last_da);
   070701015D6C5A000081A4000003E80000006400000001642C0FB5000000DD000000000000004A00000000000000000000003600000000nvme-cli/plugins/solidigm/solidigm-telemetry/header.h /* SPDX-License-Identifier: MIT */
/*
 * Copyright (c) 2022 Solidigm.
 *
 * Author: leonardo.da.cunha@solidigm.com
 */

#include "telemetry-log.h"
bool solidigm_telemetry_log_header_parse(const struct telemetry_log *tl);
   070701015D6C5B000081A4000003E80000006400000001642C0FB5000000D7000000000000004A00000000000000000000003900000000nvme-cli/plugins/solidigm/solidigm-telemetry/meson.build  sources += [
  'plugins/solidigm/solidigm-telemetry/cod.c',
  'plugins/solidigm/solidigm-telemetry/header.c',
  'plugins/solidigm/solidigm-telemetry/config.c',
  'plugins/solidigm/solidigm-telemetry/data-area.c',
]
 070701015D6E68000081A4000003E80000006400000001642C0FB6000015AF000000000000004A00000000000000000000003300000000nvme-cli/plugins/solidigm/solidigm-telemetry/cod.c    // SPDX-License-Identifier: MIT
/*
 * Copyright (c) 2022 Solidigm.
 *
 * Author: leonardo.da.cunha@solidigm.com
 */
#include "common.h"
#include "cod.h"

const char *oemDataMapDesc[] = {
	"Media Read Count", //Uid 0x00
	"Host Read count",  //Uid 0x01
	"Media Write Count",  //Uid 0x02
	"Host Write Count",  //Uid 0x03
	"Device Model", // 0x04
	"Serial Number", // 0x05
	"Firmware Revision", // 0x06
	"Drive Status", // 0x07
	"Minimum Temperature", // 0x08
	"Maximum Temperature", // 0x09
	"Power Loss Protection Status", // 0x0a
	"Lifetime Unsafe Shutdown Count", // 0x0b
	"Lifetime Power Cycle Count", // 0x0c
	"Minimum Read Latency", // 0x0d
	"Maximum Read Latency", // 0x0e
	"Average Read Latency", // 0x0f
	"Minimum Write Latency", // 0x10
	"Maximum Write Latency", // 0x11
	"Average Write Latency", // 0x12
	"Grown Defects Count", // 0x13
	"DQS Recovery Count", // 0x14
	"Program Fail Count", // 0x15
	"Erase Fail Count",  // 0x16
	"Defrag Writes in Progress Count",  // 0x17
	"Total Defrag Writes Count",  // 0x18
	"Max Die Offline Number",  // 0x19
	"Current Die Offline Number",  // 0x1A
	"XOR Enable Status",  // 0x1B
	"Media Life Used",  // 0x1C
	"Uncorrectable Error Count",  // 0x1D
	"Current Wear Range Delta", // 0x1E
	"Read Errors Corrected by XOR", // 0x1F
	"Background Data Refresh", // 0x20
	"Pmic Vin History Data 1 Min", // 0x21
	"Pmic Vin History Data 1 Max", // 0x22
	"Pmic Vin History Data 1 Avg", // 0x23
	"Pmic Vin History Data 2 Min", // 0x24
	"Pmic Vin History Data 2 Max", // 0x25
	"Pmic Vin History Data 2 Avg", // 0x26
	"Pmic Vin History Data Total Readings", // 0x27
	"All Time Current Max Wear Level", // 0x28
	"Media Wear Remaining", // 0x29
	"Total Non-Defrag Writes",  // 0x2A
	"Number of sectors relocated in reaction to an error" //Uid 0x2B = 43
};

static const char * getOemDataMapDescription(__u32 id)
{
	if (id < (sizeof(oemDataMapDesc) / sizeof(oemDataMapDesc[0]))) {
		return oemDataMapDesc[id];
	}
	return "unknown";
}

#define OEMSIGNATURE 0x504D4443

#pragma pack(push, cod, 1)
struct cod_header
{
	uint32_t versionMajor;
	uint32_t versionMinor;
	uint32_t Signature;      //!Fixed signature value (0x504D4443) for identification and validation
	uint32_t MapSizeInBytes; //!Total size of the map data structure in bytes
	uint32_t EntryCount;     //!Total number of entries in the entry list
	uint8_t Reserved[12];
};

struct cod_item
{
	uint32_t DataFieldMapUid;       //!The data field unique identifier value
	uint32_t reserved1 : 8;
	uint32_t dataFieldType : 8;
	uint32_t issigned : 1;
	uint32_t bigEndian : 1;
	uint32_t dataInvalid : 1;
	uint32_t reserved2 : 13;
	uint32_t DataFieldSizeInBytes;
	uint8_t Reserved1[4];
	uint64_t DataFieldOffset;
	uint8_t Reserved2[8];
};

struct cod_map
{
	struct cod_header header;
	struct cod_item items[];
};

#pragma pack(pop, cod)

void solidigm_telemetry_log_cod_parse(struct telemetry_log *tl)
{
	enum cod_field_type
	{
		INTEGER,
		FLOAT,
		STRING,
		TWO_BYTE_ASCII,
		FOUR_BYTE_ASCII,

		UNKNOWN = 0xFF,
	};
	struct json_object *telemetry_header = NULL;
	struct json_object *COD_offset = NULL;
	struct json_object *reason_id = NULL;

	if (!json_object_object_get_ex(tl->root, "telemetryHeader", &telemetry_header))
		return;
	if (!json_object_object_get_ex(telemetry_header, "reasonIdentifier", &reason_id))
		return;
	if  (!json_object_object_get_ex(reason_id, "OemDataMapOffset", &COD_offset))
		return;

	__u64 offset = json_object_get_int(COD_offset);

	if  (offset ==  0) {
		return;
	}

	if ((offset + sizeof(struct cod_header)) > tl->log_size) {
		SOLIDIGM_LOG_WARNING("Warning: COD map header out of bounds.");
		return;
	}

	const struct cod_map *data = (struct cod_map *) (((__u8 *)tl->log ) + offset);

	uint32_t signature = be32_to_cpu(data->header.Signature);
	if ( signature != OEMSIGNATURE){
		SOLIDIGM_LOG_WARNING("Warning: Unsupported COD data signature %x!", signature);
		return;
	}
	if ((offset + data->header.MapSizeInBytes) > tl->log_size){
		SOLIDIGM_LOG_WARNING("Warning: COD map data out of bounds.");
		return;
	}

	struct json_object *cod = json_create_object();
	json_object_object_add(tl->root, "cod", cod);

	for (int i =0 ; i < data->header.EntryCount; i++) {
		if ((offset + sizeof(struct cod_header) + (i + 1) * sizeof(struct cod_item)) >
		tl->log_size){
			SOLIDIGM_LOG_WARNING("Warning: COD data out of bounds at item %d!", i);
			return;
		}
		struct cod_item item = data->items[i];
		if (item.DataFieldOffset + item.DataFieldOffset > tl->log_size) {
			continue;
		}
		if (item.dataInvalid) {
			continue;
		}
		uint8_t *val = ((uint8_t *)tl->log )+ item.DataFieldOffset;
		const char *key =  getOemDataMapDescription(item.DataFieldMapUid);
		switch(item.dataFieldType){
			case(INTEGER):
				if (item.issigned) {
					json_object_object_add(cod, key,
						json_object_new_int64(le64_to_cpu(*(uint64_t *)val)));
				} else {
					json_object_add_value_uint64(cod, key, le64_to_cpu(*(uint64_t *)val));
				}
				break;
			case(FLOAT):
				json_object_add_value_float(cod, key, *(float *) val);
				break;
			case(STRING):
				json_object_object_add(cod, key,
					json_object_new_string_len((const char *)val, item.DataFieldSizeInBytes));
				break;
			case(TWO_BYTE_ASCII):
				json_object_object_add(cod, key,
					json_object_new_string_len((const char *)val,2));
				break;
			case(FOUR_BYTE_ASCII):
				json_object_object_add(cod, key,
					json_object_new_string_len((const char *)val, 4));
				break;
			default:
				SOLIDIGM_LOG_WARNING("Warning: Unknown COD field type (%d)", item.DataFieldMapUid);
				
		}
	}
}
 070701015D6E69000081A4000003E80000006400000001642C0FB60000053F000000000000004A00000000000000000000003600000000nvme-cli/plugins/solidigm/solidigm-telemetry/config.c // SPDX-License-Identifier: MIT
/*
 * Copyright (c) 2022 Solidigm.
 *
 * Author: leonardo.da.cunha@solidigm.com
 */
#include <stdbool.h>
#include "util/json.h"
#include <stdio.h>

// max 16 bit unsigned integer nummber 65535
#define MAX_16BIT_NUM_AS_STRING_SIZE  6

static bool config_get_by_version(const struct json_object *obj, int version_major,
				  int version_minor, struct json_object **value)
{
	char str_key[MAX_16BIT_NUM_AS_STRING_SIZE];
	char str_subkey[MAX_16BIT_NUM_AS_STRING_SIZE];

	snprintf(str_key, sizeof(str_key), "%d", version_major);
	snprintf(str_subkey, sizeof(str_subkey), "%d", version_minor);
	struct json_object *major_obj = NULL;

	if (!json_object_object_get_ex(obj, str_key, &major_obj))
		return false;
	if  (!json_object_object_get_ex(major_obj, str_subkey, value))
		return false;
	return value != NULL;
}

bool solidigm_config_get_by_token_version(const struct json_object *obj, int token_id,
					  int version_major, int version_minor,
					  struct json_object **value)
{
	struct json_object *token_obj = NULL;
	char str_key[MAX_16BIT_NUM_AS_STRING_SIZE];

	snprintf(str_key, sizeof(str_key), "%d", token_id);
	if (!json_object_object_get_ex(obj, str_key, &token_obj))
		return false;
	if  (!config_get_by_version(token_obj, version_major, version_minor, value))
		return false;
	return value != NULL;
}
 070701015D6E6A000081A4000003E80000006400000001642C0FB600000143000000000000004A00000000000000000000003600000000nvme-cli/plugins/solidigm/solidigm-telemetry/config.h /* SPDX-License-Identifier: MIT */
/*
 * Copyright (c) 2022 Solidigm.
 *
 * Author: leonardo.da.cunha@solidigm.com
 */
#include <stdbool.h>
#include "util/json.h"

bool solidigm_config_get_by_token_version(const struct json_object *obj,
					  int key, int subkey,
					  int subsubkey,
					  struct json_object **value);
 070701015D6E6B000081A4000003E80000006400000001642C0FB6000031B7000000000000004A00000000000000000000003900000000nvme-cli/plugins/solidigm/solidigm-telemetry/data-area.c  // SPDX-License-Identifier: MIT
/*
 * Copyright (c) 2022 Solidigm.
 *
 * Author: leonardo.da.cunha@solidigm.com
 */

#include "common.h"
#include "data-area.h"
#include "config.h"
#include <ctype.h>

#define SIGNED_INT_PREFIX "int"
#define BITS_IN_BYTE 8

#define MAX_WARNING_SIZE 1024

static bool telemetry_log_get_value(const struct telemetry_log *tl,
				    uint32_t offset_bit, uint32_t size_bit,
				    bool is_signed, struct json_object **val_obj)
{
	uint32_t offset_bit_from_byte;
	uint32_t additional_size_byte;
	uint32_t offset_byte;
	uint32_t val;

	if (size_bit == 0) {
		char err_msg[MAX_WARNING_SIZE];

		snprintf(err_msg, MAX_WARNING_SIZE,
			 "Value with size_bit=0 not supported.");
		*val_obj = json_object_new_string(err_msg);

		return false;
	}
	additional_size_byte = (size_bit - 1) ? (size_bit - 1) / BITS_IN_BYTE : 0;
	offset_byte = offset_bit / BITS_IN_BYTE;

	if (offset_byte > (tl->log_size - additional_size_byte)) {
		char err_msg[MAX_WARNING_SIZE];

		snprintf(err_msg, MAX_WARNING_SIZE,
			"Value offset greater than binary size (%u > %zu).",
			 offset_byte, tl->log_size);
		*val_obj = json_object_new_string(err_msg);

		return false;
	}

	offset_bit_from_byte = offset_bit - (offset_byte * BITS_IN_BYTE);

	if ((size_bit + offset_bit_from_byte) > (sizeof(uint64_t) * BITS_IN_BYTE)) {
		char err_msg[MAX_WARNING_SIZE];

		snprintf(err_msg, MAX_WARNING_SIZE,
			 "Value crossing 64 bit, byte aligned bounday, "
			 "not supported. size_bit=%u, offset_bit_from_byte=%u.",
			  size_bit, offset_bit_from_byte);
		*val_obj = json_object_new_string(err_msg);

		return false;
	}

	val = *(uint64_t *)(((char *)tl->log) + offset_byte);
	val >>= offset_bit_from_byte;
	if (size_bit < 64)
		val &= (1ULL << size_bit) - 1;
	if (is_signed) {
		if (val >> (size_bit - 1))
			val |= -1ULL << size_bit;
		*val_obj = json_object_new_int64(val);
	} else {
		*val_obj = json_object_new_uint64(val);
	}

	return true;
}

static int telemetry_log_structure_parse(const struct telemetry_log *tl,
					 struct json_object *struct_def,
					 size_t parent_offset_bit,
					 struct json_object *output,
					 struct json_object *metadata)
{
	struct json_object *obj_arraySizeArray = NULL;
	struct json_object *obj = NULL;
	struct json_object *obj_memberList;
	struct json_object *major_dimension;
	struct json_object *sub_output;
	bool is_enumeration = false;
	bool has_member_list;
	const char *type = "";
	const char *name;
	size_t array_rank;
	size_t offset_bit;
	size_t size_bit;
	uint32_t linear_array_pos_bit;

	if (!json_object_object_get_ex(struct_def, "name", &obj)) {
		SOLIDIGM_LOG_WARNING("Warning: Structure definition missing property 'name': %s",
				     json_object_to_json_string(struct_def));
		return  -1;
	}

	name = json_object_get_string(obj);

	if (metadata) {
		json_object_get(obj);
		json_object_object_add(metadata, "objName", obj);
	}

	if (json_object_object_get_ex(struct_def, "type", &obj))
		type = json_object_get_string(obj);

	if (!json_object_object_get_ex(struct_def, "offsetBit", &obj)) {
		SOLIDIGM_LOG_WARNING("Warning: Structure definition missing "
				     "property 'offsetBit': %s",
				     json_object_to_json_string(struct_def));
		return  -1;
	}

	offset_bit = json_object_get_uint64(obj);

	if (!json_object_object_get_ex(struct_def, "sizeBit", &obj)) {
		SOLIDIGM_LOG_WARNING("Warning: Structure definition missing "
				     "property 'sizeBit': %s",
				     json_object_to_json_string(struct_def));
		return  -1;
	}

	size_bit = json_object_get_uint64(obj);

	if (json_object_object_get_ex(struct_def, "enum", &obj))
		is_enumeration = json_object_get_boolean(obj);

	has_member_list = json_object_object_get_ex(struct_def,
						    "memberList",
						    &obj_memberList);

	if (!json_object_object_get_ex(struct_def, "arraySize",
				       &obj_arraySizeArray)) {
		SOLIDIGM_LOG_WARNING("Warning: Structure definition missing "
				     "property 'arraySize': %s",
				     json_object_to_json_string(struct_def));
		return  -1;
	}

	array_rank = json_object_array_length(obj_arraySizeArray);
	if (array_rank == 0) {
		SOLIDIGM_LOG_WARNING("Warning: Structure property 'arraySize' "
				     "don't support flexible array: %s",
				     json_object_to_json_string(struct_def));
		return -1;
	}
	uint32_t array_size_dimension[array_rank];

	for (size_t i = 0; i < array_rank; i++) {
		struct json_object *dimension = json_object_array_get_idx(obj_arraySizeArray, i);

		array_size_dimension[i] = json_object_get_uint64(dimension);
		major_dimension = dimension;
	}
	if (array_rank > 1) {
		uint32_t linear_pos_per_index = array_size_dimension[0];
		uint32_t prev_index_offset_bit = 0;
		struct json_object *dimension_output;

		for (int i = 1; i < (array_rank - 1); i++)
			linear_pos_per_index *= array_size_dimension[i];

		dimension_output = json_create_array();
		if (json_object_get_type(output) == json_type_array)
			json_object_array_add(output, dimension_output);
		else
			json_object_add_value_array(output, name, dimension_output);

		/*
		 * Make sure major_dimension object will not be
		 * deleted from memory when deleted from array
		 */
		json_object_get(major_dimension);
		json_object_array_del_idx(obj_arraySizeArray, array_rank - 1, 1);

		for (int i = 0 ; i < array_size_dimension[0]; i++) {
			struct json_object *sub_array = json_create_array();
			size_t offset;

			offset = parent_offset_bit + prev_index_offset_bit;

			json_object_array_add(dimension_output, sub_array);
			telemetry_log_structure_parse(tl, struct_def,
						      offset, sub_array, NULL);
			prev_index_offset_bit += linear_pos_per_index * size_bit;
		}

		json_object_array_put_idx(obj_arraySizeArray, array_rank - 1,
					  major_dimension);

		return 0;
	}

	linear_array_pos_bit = 0;
	sub_output = output;

	if (array_size_dimension[0] > 1) {
		sub_output = json_create_array();
		if (json_object_get_type(output) == json_type_array)
			json_object_array_add(output, sub_output);
		else
			json_object_add_value_array(output, name, sub_output);
	}

	for (uint32_t j = 0; j < array_size_dimension[0]; j++) {
		if (is_enumeration || !has_member_list) {
			bool is_signed = !strncmp(type, SIGNED_INT_PREFIX, sizeof(SIGNED_INT_PREFIX)-1);
			struct json_object *val_obj;
			size_t offset;

			offset = parent_offset_bit + offset_bit + linear_array_pos_bit;
			if (telemetry_log_get_value(tl, offset, size_bit, is_signed, &val_obj)) {
				if (array_size_dimension[0] > 1)
					json_object_array_put_idx(sub_output, j, val_obj);
				else
					json_object_object_add(sub_output, name, val_obj);
			} else {
				SOLIDIGM_LOG_WARNING("Warning: %s From property '%s', "
						     "array index %u, structure definition: %s",
						     json_object_get_string(val_obj),
						     name, j, json_object_to_json_string(struct_def));
				json_free_object(val_obj);
			}
		} else {
			struct json_object *sub_sub_output = json_create_object();
			int num_members;

			if (array_size_dimension[0] > 1)
				json_object_array_put_idx(sub_output, j, sub_sub_output);
			else
				json_object_add_value_object(sub_output, name, sub_sub_output);

			num_members = json_object_array_length(obj_memberList);
			for (int k = 0; k < num_members; k++) {
				struct json_object *member = json_object_array_get_idx(obj_memberList, k);
				size_t offset;

				offset = parent_offset_bit + offset_bit + linear_array_pos_bit;
				telemetry_log_structure_parse(tl, member, offset,
							      sub_sub_output, NULL);
			}
		}
		linear_array_pos_bit += size_bit;
	}
	return 0;
}

static int telemetry_log_data_area_get_offset(const struct telemetry_log *tl,
					      enum nvme_telemetry_da da,
					      uint32_t *offset, uint32_t *size)
{
	uint32_t offset_blocks = 1;
	uint32_t last_block = tl->log->dalb1;
	uint32_t last;

	switch (da) {
	case NVME_TELEMETRY_DA_1:
		offset_blocks = 1;
		last_block = tl->log->dalb1;
		break;
	case NVME_TELEMETRY_DA_2:
		offset_blocks = tl->log->dalb1 + 1;
		last_block = tl->log->dalb2;
		break;
	case NVME_TELEMETRY_DA_3:
		offset_blocks = tl->log->dalb2 + 1;
		last_block = tl->log->dalb3;
		break;
	case NVME_TELEMETRY_DA_4:
		offset_blocks = tl->log->dalb3 + 1;
		last_block = tl->log->dalb4;
		break;
	default:
		return -1;
	}

	*offset = offset_blocks * NVME_LOG_TELEM_BLOCK_SIZE;
	last = (last_block + 1) * NVME_LOG_TELEM_BLOCK_SIZE;
	*size = last - *offset;
	if ((*offset > tl->log_size) || (last > tl->log_size) || (last <= *offset)) {
		SOLIDIGM_LOG_WARNING("Warning: Data Area %d don't fit this Telemetry log.", da);
		return -1;
	}

	return 0;
}

struct toc_item {
	uint32_t OffsetBytes;
	uint32_t ContentSizeBytes;
};

struct data_area_header {
	uint8_t versionMajor;
	uint8_t versionMinor;
	uint16_t TableOfContentsCount;
	uint32_t DataAreaSize;
	uint8_t Reserved[8];
};

struct table_of_contents {
	struct data_area_header header;
	struct toc_item items[];
};

struct telemetry_object_header {
	uint16_t versionMajor;
	uint16_t versionMinor;
	uint32_t Token;
	uint8_t CoreId;
	uint8_t Reserved[3];
};


static void telemetry_log_data_area_toc_parse(const struct telemetry_log *tl,
					      enum nvme_telemetry_da da,
					      struct json_object *toc_array,
					      struct json_object *tele_obj_array)
{

	const struct telemetry_object_header *header;
	const struct table_of_contents *toc;
	char *payload;
	uint32_t da_offset;
	uint32_t da_size;

	if (telemetry_log_data_area_get_offset(tl, da, &da_offset, &da_size))
		return;

	toc = (struct table_of_contents *)(((char *)tl->log) + da_offset);
	payload = (char *) tl->log;

	for (int i = 0; i < toc->header.TableOfContentsCount; i++) {
		struct json_object *structure_definition = NULL;
		struct json_object *toc_item;
		uint32_t obj_offset;
		bool has_struct;

		if ((char *)&toc->items[i] > (((char *)toc) + da_size - sizeof(const struct toc_item))) {
			SOLIDIGM_LOG_WARNING("Warning: Data Area %d, "
					     "Table of Contents item %d "
					     "crossed Data Area size.", da, i);
			return;
		}

		obj_offset = toc->items[i].OffsetBytes;
		if ((obj_offset + sizeof(const struct telemetry_object_header)) > da_size) {
			SOLIDIGM_LOG_WARNING("Warning: Data Area %d, item %d "
					     "data, crossed Data Area size.", da, i);
			continue;
		}

		toc_item = json_create_object();
		json_object_array_add(toc_array, toc_item);
		json_object_add_value_uint(toc_item, "dataArea", da);
		json_object_add_value_uint(toc_item, "dataAreaIndex", i);
		json_object_add_value_uint(toc_item, "dataAreaOffset", obj_offset);
		json_object_add_value_uint(toc_item, "fileOffset", obj_offset + da_offset);
		json_object_add_value_uint(toc_item, "size", toc->items[i].ContentSizeBytes);

		header = (const struct telemetry_object_header *) (payload + da_offset + obj_offset);
		json_object_add_value_uint(toc_item, "telemMajor", header->versionMajor);
		json_object_add_value_uint(toc_item, "telemMinor", header->versionMinor);
		json_object_add_value_uint(toc_item, "objectId", header->Token);
		json_object_add_value_uint(toc_item, "mediaBankId", header->CoreId);

		has_struct = solidigm_config_get_by_token_version(tl->configuration,
							          header->Token,
								  header->versionMajor,
								  header->versionMinor,
								  &structure_definition);

		if (has_struct) {
			struct json_object *tele_obj_item = json_create_object();

			json_object_array_add(tele_obj_array, tele_obj_item);
			json_object_get(toc_item);
			json_object_add_value_object(tele_obj_item, "metadata", toc_item);
			struct json_object *parsed_struct = json_create_object();

			json_object_add_value_object(tele_obj_item, "objectData", parsed_struct);
			struct json_object *obj_hasTelemObjHdr = NULL;
			uint32_t header_offset = sizeof(const struct telemetry_object_header);
			uint32_t file_offset;

			if (json_object_object_get_ex(structure_definition,
						      "hasTelemObjHdr",
						       &obj_hasTelemObjHdr)) {
				bool hasHeader = json_object_get_boolean(obj_hasTelemObjHdr);

				if (hasHeader)
					header_offset = 0;
			}

			file_offset = da_offset + obj_offset + header_offset;
			telemetry_log_structure_parse(tl, structure_definition,
						      BITS_IN_BYTE * file_offset,
						      parsed_struct, toc_item);
		}
	}
}

int solidigm_telemetry_log_data_areas_parse(const struct telemetry_log *tl,
					    enum nvme_telemetry_da last_da)
{
	struct json_object *tele_obj_array = json_create_array();
	struct json_object *toc_array = json_create_array();

	json_object_add_value_array(tl->root, "tableOfContents", toc_array);
	json_object_add_value_array(tl->root, "telemetryObjects", tele_obj_array);

	for (enum nvme_telemetry_da da = NVME_TELEMETRY_DA_1; da <= last_da; da++)
		telemetry_log_data_area_toc_parse(tl, da, toc_array, tele_obj_array);

	return 0;
}
 070701015D6E6C000081A4000003E80000006400000001642C0FB600002159000000000000004A00000000000000000000003600000000nvme-cli/plugins/solidigm/solidigm-telemetry/header.c // SPDX-License-Identifier: MIT
/*
 * Copyright (c) 2022 Solidigm.
 *
 * Author: leonardo.da.cunha@solidigm.com
 */

#include "common.h"
#include "header.h"

#pragma pack(push, reason_indentifier, 1)
struct reason_indentifier_1_0
{
	uint16_t versionMajor;
	uint16_t versionMinor;
	uint32_t reasonCode;		//! 0 denotes no issue. All other values denote a potential issue.
	char DriveStatus[20];		//! Drive Status String (for example: "Healthy", "*BAD_CONTEXT_2020")
	char FirmwareVersion[12];	//! Similar to IdentifyController.FR
	char BootloaderVersion[12];	//! Bootloader version string
	char SerialNumber[20];		//! Device serial number
	uint8_t Reserved[56];		//! Reserved for future usage
};
static_assert(sizeof(const struct reason_indentifier_1_0) ==
	      MEMBER_SIZE(struct nvme_telemetry_log, rsnident),
	      "Size mismatch for reason_indentifier_1_0");

struct reason_indentifier_1_1
{
	uint16_t versionMajor;
	uint16_t versionMinor;
	uint32_t reasonCode;		//! 0 denotes no issue. All other values denote a potential issue.
	char DriveStatus[20];		//! Drive Status String (for example: "Healthy", "*BAD_CONTEXT_2020")
	char FirmwareVersion[12];	//! Similar to IdentifyController.FR
	char BootloaderVersion[12];	//! Bootloader version string
	char SerialNumber[20];		//! Device serial number
	uint64_t OemDataMapOffset;	//! Customer Data Map Object Log Offset
	uint8_t TelemetryMajorVersion;	//! Shadow of version in TOC
	uint8_t TelemetryMinorVersion;	//! Shadow of version in TOC
	uint8_t Reserved[46];		//! Reserved for future usage
};
static_assert(sizeof(const struct reason_indentifier_1_1) ==
	      MEMBER_SIZE(struct nvme_telemetry_log, rsnident),
	      "Size mismatch for reason_indentifier_1_1");

struct reason_indentifier_1_2
{
	uint16_t versionMajor;
	uint16_t versionMinor;
	uint32_t reasonCode;		//! 0 denotes no issue. All other values denote a potential issue.
	char DriveStatus[20];		//! Drive Status String (for example: "Healthy", "*BAD_CONTEXT_2020")
	uint8_t Reserved1[24];		//! pad over Fields removed from version 1.1
	char SerialNumber[20];		//! Device serial number
	uint64_t OemDataMapOffset;	//! Customer Data Map Object Log Offset
	uint8_t TelemetryMajorVersion;	//! Shadow of version in TOC
	uint8_t TelemetryMinorVersion;	//! Shadow of version in TOC
	uint8_t ProductFamilyId;
	uint8_t Reserved2[5];		//! Reserved for future usage
	uint8_t DualPortReserved[40];	//! Reserved for dual port
};
static_assert(sizeof(const struct reason_indentifier_1_2) ==
	      MEMBER_SIZE(struct nvme_telemetry_log, rsnident),
	      "Size mismatch for reason_indentifier_1_2");
#pragma pack(pop, reason_indentifier)

static void telemetry_log_reason_id_parse1_0_ext(const struct telemetry_log *tl,
						 struct json_object *reason_id)
{
	const struct reason_indentifier_1_0 *ri;
	struct json_object *reserved;

	ri = (struct reason_indentifier_1_0 *) tl->log->rsnident;
	json_object_object_add(reason_id, "FirmwareVersion", json_object_new_string_len(ri->FirmwareVersion, sizeof(ri->FirmwareVersion)));
	json_object_object_add(reason_id, "BootloaderVersion", json_object_new_string_len(ri->BootloaderVersion, sizeof(ri->BootloaderVersion)));
	json_object_object_add(reason_id, "SerialNumber", json_object_new_string_len(ri->SerialNumber, sizeof(ri->SerialNumber)));

	reserved = json_create_array();
	json_object_add_value_array(reason_id, "Reserved", reserved);
	for ( int i=0; i < sizeof(ri->Reserved); i++) {
		struct json_object *val = json_object_new_int(ri->Reserved[i]);
		json_object_array_add(reserved, val);
	}
}

static void telemetry_log_reason_id_parse1_1_ext(const struct telemetry_log *tl,
						 struct json_object *reason_id)
{
	const struct reason_indentifier_1_1 *ri;
	struct json_object *reserved;

	ri = (struct reason_indentifier_1_1 *) tl->log->rsnident;
	json_object_object_add(reason_id, "FirmwareVersion", json_object_new_string_len(ri->FirmwareVersion, sizeof(ri->FirmwareVersion)));
	json_object_object_add(reason_id, "BootloaderVersion", json_object_new_string_len(ri->BootloaderVersion, sizeof(ri->BootloaderVersion)));
	json_object_object_add(reason_id, "SerialNumber", json_object_new_string_len(ri->SerialNumber, sizeof(ri->SerialNumber)));
	json_object_add_value_uint64(reason_id, "OemDataMapOffset", le64_to_cpu(ri->OemDataMapOffset));
	json_object_add_value_uint(reason_id, "TelemetryMajorVersion", le16_to_cpu(ri->TelemetryMajorVersion));
	json_object_add_value_uint(reason_id, "TelemetryMinorVersion", le16_to_cpu(ri->TelemetryMinorVersion));

	reserved = json_create_array();
	json_object_add_value_array(reason_id, "Reserved", reserved);
	for (int i = 0; i < sizeof(ri->Reserved); i++) {
		struct json_object *val = json_object_new_int(ri->Reserved[i]);
		json_object_array_add(reserved, val);
	}
}

static void telemetry_log_reason_id_parse1_2_ext(const struct telemetry_log *tl,
						 struct json_object *reason_id)
{
	const struct reason_indentifier_1_2 *ri;
	struct json_object *dp_reserved;
	struct json_object *reserved;

	ri = (struct reason_indentifier_1_2 *) tl->log->rsnident;

	json_object_object_add(reason_id, "SerialNumber", json_object_new_string_len(ri->SerialNumber, sizeof(ri->SerialNumber)));
	json_object_add_value_uint64(reason_id, "OemDataMapOffset", le64_to_cpu(ri->OemDataMapOffset));
	json_object_add_value_uint(reason_id, "TelemetryMajorVersion", le16_to_cpu(ri->TelemetryMajorVersion));
	json_object_add_value_uint(reason_id, "TelemetryMinorVersion", le16_to_cpu(ri->TelemetryMinorVersion));
	json_object_add_value_uint(reason_id, "ProductFamilyId", ri->ProductFamilyId);

	reserved = json_create_array();
	json_object_add_value_array(reason_id, "Reserved2", reserved);
	for (int i = 0; i < sizeof(ri->Reserved2); i++) {
		struct json_object *val = json_object_new_int(ri->Reserved2[i]);
		json_object_array_add(reserved, val);
	}

	dp_reserved = json_create_array();
	json_object_add_value_array(reason_id, "DualPortReserved", dp_reserved);
	for (int i = 0; i < sizeof(ri->DualPortReserved); i++) {
		struct json_object *val =  json_object_new_int(ri->DualPortReserved[i]);
		json_object_array_add(dp_reserved, val);
	}
}

static void solidigm_telemetry_log_reason_id_parse(const struct telemetry_log *tl, struct json_object *reason_id)
{
	const struct reason_indentifier_1_0 *ri1_0 =
		(struct reason_indentifier_1_0 *) tl->log->rsnident;
	__u16 version_major = le16_to_cpu(ri1_0->versionMajor);
	__u16 version_minor = le16_to_cpu(ri1_0->versionMinor);

	json_object_add_value_uint(reason_id, "versionMajor", version_major);
	json_object_add_value_uint(reason_id, "versionMinor", version_minor);
	json_object_add_value_uint(reason_id, "reasonCode", le32_to_cpu(ri1_0->reasonCode));
	json_object_add_value_object(reason_id, "DriveStatus", json_object_new_string_len(ri1_0->DriveStatus, sizeof(ri1_0->DriveStatus)));
	if (version_major == 1) {
		switch (version_minor) {
			case 0:
				telemetry_log_reason_id_parse1_0_ext(tl, reason_id);
				break;
			case 1:
				telemetry_log_reason_id_parse1_1_ext(tl, reason_id);
				break;
			default:
				telemetry_log_reason_id_parse1_2_ext(tl, reason_id);
		}
	}
}

bool solidigm_telemetry_log_header_parse(const struct telemetry_log *tl)
{
	const struct nvme_telemetry_log *log;
	struct json_object *ieee_oui_id;
	struct json_object *reason_id;
	struct json_object *header;

	if (tl->log_size < sizeof(const struct nvme_telemetry_log)) {
		SOLIDIGM_LOG_WARNING("Telemetry log too short.");
		return false;
	}

	header = json_create_object();

	json_object_object_add(tl->root, "telemetryHeader", header);
	log = tl->log;

	json_object_add_value_uint(header, "logIdentifier", log->lpi);
	ieee_oui_id = json_create_array();

	json_object_object_add(header, "ieeeOuiIdentifier", ieee_oui_id);
	for (int i = 0; i < sizeof(log->ieee); i++) {
		struct json_object *val = json_object_new_int(log->ieee[i]);

		json_object_array_add(ieee_oui_id, val);
	}
	json_object_add_value_uint(header, "dataArea1LastBlock", log->dalb1);
	json_object_add_value_uint(header, "dataArea2LastBlock", log->dalb2);
	json_object_add_value_uint(header, "dataArea3LastBlock", log->dalb3);
	json_object_add_value_uint(header, "hostInitiatedDataGeneration", log->hostdgn);
	json_object_add_value_uint(header, "controllerInitiatedDataAvailable", log->ctrlavail);
	json_object_add_value_uint(header, "controllerInitiatedDataGeneration", log->ctrldgn);

	reason_id = json_create_object();
	json_object_add_value_object(header, "reasonIdentifier", reason_id);
	solidigm_telemetry_log_reason_id_parse(tl, reason_id);

	return true;
}
   070701015D6E6D000081A4000003E80000006400000001642C0FB6000002B7000000000000004A00000000000000000000003D00000000nvme-cli/plugins/solidigm/solidigm-telemetry/telemetry-log.h  /* SPDX-License-Identifier: MIT */
/*
 * Copyright (c) 2022 Solidigm.
 *
 * Author: leonardo.da.cunha@solidigm.com
 */

#ifndef _SOLIDIGM_TELEMETRY_LOG_H
#define _SOLIDIGM_TELEMETRY_LOG_H

#include "libnvme.h"
#include "util/json.h"
#include <assert.h>

#if !defined __cplusplus
#define static_assert _Static_assert
#endif

#define VA_ARGS(...), ##__VA_ARGS__
#define SOLIDIGM_LOG_WARNING(format, ...) fprintf(stderr, format"\n" VA_ARGS(__VA_ARGS__))

#define MEMBER_SIZE(type, member) sizeof(((type *)0)->member)

struct telemetry_log {
	struct nvme_telemetry_log *log;
	size_t log_size;
	struct json_object *root;
	struct json_object *configuration;
};

#endif /* _SOLIDIGM_TELEMETRY_LOG_H */
 070701015D6C60000081A4000003E80000006400000001642C0FB5000037C2000000000000004A00000000000000000000002800000000nvme-cli/plugins/toshiba/toshiba-nvme.c   // SPDX-License-Identifier: GPL-2.0-or-later
#include <fcntl.h>
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <stddef.h>
#include <inttypes.h>
#include <stdbool.h>

#include "nvme.h"
#include "libnvme.h"
#include "plugin.h"
#include "linux/types.h"
#include "nvme-print.h"

#define CREATE_CMD
#include "toshiba-nvme.h"

static const __u32 OP_SCT_STATUS = 0xE0;
static const __u32 OP_SCT_COMMAND_TRANSFER = 0xE0;
static const __u32 OP_SCT_DATA_TRANSFER = 0xE1;

static const __u32 DW10_SCT_STATUS_COMMAND = 0x0;
static const __u32 DW10_SCT_COMMAND_TRANSFER = 0x1;

static const __u32 DW11_SCT_STATUS_COMMAND = 0x0;
static const __u32 DW11_SCT_COMMAND_TRANSFER = 0x0;

static const __u16 INTERNAL_LOG_ACTION_CODE = 0xFFFB;
static const __u16 CURRENT_LOG_FUNCTION_CODE = 0x0001;
static const __u16 SAVED_LOG_FUNCTION_CODE = 0x0002;

/* A bitmask field for supported devices */
typedef enum {
	MASK_0    = 1 << 0,
	MASK_1    = 1 << 1,
	/*
	 * Future devices can use the remaining 31 bits from this field
	 * and should use 1 << 2, 1 << 3, etc.
	 */
	MASK_IGNORE = 0
} DeviceMask;

/* Internal device codes */
typedef enum {
	CODE_0 = 0x0D,
	CODE_1 = 0x10
} DeviceCode;


static int nvme_sct_op(int fd,  __u32 opcode, __u32 cdw10, __u32 cdw11, void* data, __u32 data_len )
{
	void  *metadata = NULL;
	const __u32 cdw2 = 0;
	const __u32 cdw3 = 0;
	const __u32 cdw12 = 0;
	const __u32 cdw13 = 0;
	const __u32 cdw14 = 0;
	const __u32 cdw15 = 0;
	const __u32 timeout = 0;
	const __u32 metadata_len = 0;
	const __u32 namespace_id = 0x0;
	const __u32 flags = 0;
	const __u32 rsvd = 0;
	int err = 0;

	__u32 result;
	err = nvme_admin_passthru(fd, opcode, flags, rsvd,
				namespace_id, cdw2, cdw3, cdw10,
				cdw11, cdw12, cdw13, cdw14, cdw15,
				data_len, data, metadata_len, metadata,
				timeout, &result);
	return err;
}

static int nvme_get_sct_status(int fd, __u32 device_mask)
{
	int err;
	void* data = NULL;
	size_t data_len = 512;
	unsigned char *status;

	if (posix_memalign(&data, getpagesize(), data_len))
		return ENOMEM;

	memset(data, 0, data_len);
	err = nvme_sct_op(fd, OP_SCT_STATUS, DW10_SCT_STATUS_COMMAND, DW11_SCT_STATUS_COMMAND, data, data_len);
	if (err) {
		fprintf(stderr, "%s: SCT status failed :%d\n", __func__, err);
		goto end;
	}

	status = data;
	if (status[0] != 1U) {
		/* Eek, wrong version in status header */
		fprintf(stderr, "%s: unexpected value in SCT status[0]:(%x)\n", __func__, status[0]);
		err = -1;
		errno = EINVAL;
		goto end;
	}

	/* Check if device is supported */
	if (device_mask != MASK_IGNORE) {
		__u32 supported = 0;
		switch (status[1]) {
		case CODE_0:
			supported = (device_mask & MASK_0);
			break;

		case CODE_1:
			supported = (device_mask & MASK_1);
			break;

		default:
			break;
		};

		if (0 == supported) {
			fprintf(stderr, "%s: command unsupported on this device: (0x%x)\n",__func__, status[1]);
			err = -1;
			errno = EINVAL;
			goto end;
		}
	}
end:
	if (data)
		free(data);
	return err;
}

static int nvme_sct_command_transfer_log(int fd, bool current)
{
	int err;
	void *data = NULL;
	size_t data_len = 512;
	__u16 function_code, action_code = INTERNAL_LOG_ACTION_CODE;

	if (current)
		function_code = CURRENT_LOG_FUNCTION_CODE;
	else
		function_code = SAVED_LOG_FUNCTION_CODE;

	if (posix_memalign(&data, getpagesize(), data_len))
		return ENOMEM;

	memset(data, 0, data_len);
	memcpy(data, &action_code, sizeof(action_code));
	memcpy(data + 2, &function_code, sizeof(function_code));

	err = nvme_sct_op(fd, OP_SCT_COMMAND_TRANSFER, DW10_SCT_COMMAND_TRANSFER, DW11_SCT_COMMAND_TRANSFER, data, data_len);
	free(data);
	return err;
}

static int nvme_sct_data_transfer(int fd, void* data, size_t data_len, size_t offset)
{
	__u32 dw10, dw11, lba_count = (data_len) / 512;

	if (lba_count) {
		/*
		 * the count is a 0-based value, which seems to mean
		 * that it's actually last lba
		 */
		--lba_count;
	}

	dw10 = (offset << 16) | lba_count;
	dw11 = (offset >> 16);
	return nvme_sct_op(fd, OP_SCT_DATA_TRANSFER, dw10, dw11, data, data_len);
}

static int d_raw_to_fd(const unsigned char *buf, unsigned len, int fd)
{
	int written = 0;
	int remaining = len;

	while (remaining) {
		written = write(fd, buf, remaining);
		if (written < 0) {
			remaining = written;
			break;
		} else if (written <= remaining) {
			remaining -= written;
		} else {
			/* Unexpected overwrite */
			break;
		}
	}

	/* return 0 on success or remaining/error */
	return remaining;
}

/* Display progress (incoming 0->1.0) */
static void progress_runner(float progress)
{
	const size_t barWidth = 70;
	size_t i, pos;

	fprintf(stdout, "[");
	pos = barWidth * progress;
	for (i = 0; i < barWidth; ++i) {
		if (i <= pos)
			fprintf(stdout, "=");
		else
			fprintf(stdout, " ");
	}

	fprintf(stdout, "] %d %%\r",(int)(progress * 100.0));
	fflush(stdout);
}

static int nvme_get_internal_log(int fd, const char* const filename, bool current)
{
	int err;
	int o_fd = -1;
	void* page_data = NULL;
	const size_t page_sector_len = 32;
	const size_t page_data_len = page_sector_len * 512; /* 32 sectors per page */
	uint32_t* area1_last_page;
	uint32_t* area2_last_page;
	uint32_t* area3_last_page;
	uint32_t log_sectors = 0;
	size_t pages;

	/*
	 * By trial and error it seems that the largest transfer chunk size
	 * is 128 * 32 =  4k sectors = 2MB
	 */
	const __u32 max_pages = 128;
	size_t i;
	unsigned int j;
	float progress = 0.0;

	err = nvme_sct_command_transfer_log(fd, current);
	if (err) {
		fprintf(stderr, "%s: SCT command transfer failed\n", __func__);
		goto end;
	}

	if (posix_memalign(&page_data, getpagesize(), max_pages * page_data_len)) {
		err = ENOMEM;
		goto end;
	}
	memset(page_data, 0, max_pages * page_data_len);

	/* Read the header to get the last log page - offsets 8->11, 12->15, 16->19 */
	err = nvme_sct_data_transfer(fd, page_data, page_data_len, 0);
	if (err) {
		fprintf(stderr, "%s: SCT data transfer failed, page 0\n",__func__);
		goto end;
	}

	area1_last_page = (uint32_t *) (page_data + 8);
	area2_last_page = (uint32_t *) (page_data + 12);
	area3_last_page = (uint32_t *) (page_data + 16);

	/* The number of total log sectors is the maximum + 1; */
	if (*area1_last_page > log_sectors)
		log_sectors = *area1_last_page;
	if (*area2_last_page > log_sectors)
		log_sectors = *area2_last_page;
	if (*area3_last_page > log_sectors)
		log_sectors = *area3_last_page;

	++log_sectors;
	pages = log_sectors / page_sector_len;
	if (filename == NULL) {
		fprintf(stdout, "Page: %u of %zu\n", 0u, pages);
		d(page_data, page_data_len, 16, 1);
	} else {
		progress_runner(progress);
		o_fd = open(filename, O_WRONLY | O_CREAT | O_TRUNC, 0666);
		if (o_fd < 0) {
			fprintf(stderr, "%s: couldn't output file %s\n", __func__, filename);
			err = EINVAL;
			goto end;
		}
		err = d_raw_to_fd(page_data, page_data_len, o_fd);
		if (err) {
			fprintf(stderr, "%s: couldn't write all data to output file\n", __func__);
			goto end;
		}
	}

	/* Now read the rest */
	for (i = 1; i < pages;) {
		__u32 pages_chunk = max_pages;
		if (pages_chunk + i >= pages)
			pages_chunk = pages - i;

		err = nvme_sct_data_transfer(fd, page_data,
					     pages_chunk * page_data_len,
					     i * page_sector_len);
		if (err) {
			fprintf(stderr, "%s: SCT data transfer command failed\n", __func__);
			goto end;
		}

		progress = (float) (i) / (float) (pages);
		progress_runner(progress);
		if (filename == NULL) {
			for (j = 0; j < pages_chunk; ++j) {
				fprintf(stdout, "Page: %zu of %zu\n", i + j, pages);
				d(page_data + (j * page_data_len), page_data_len, 16, 1);
			}
		} else {
			progress_runner(progress);
			err = d_raw_to_fd(page_data, pages_chunk * page_data_len, o_fd);
			if (err) {
				fprintf(stderr, "%s: couldn't write all data to output file\n",
					__func__);
				goto end;
			}
		}
		i += pages_chunk;
	}
	progress = 1.0f;
	progress_runner(progress);
	fprintf(stdout,"\n");
	err = nvme_get_sct_status(fd, MASK_IGNORE);
	if (err) {
		fprintf(stderr, "%s: bad SCT status\n", __func__);
		goto end;
	}
end:
	if (o_fd >= 0) {
		close(o_fd);
	}
	if (page_data) {
		free(page_data);
	}
	return err;
}

static int nvme_get_internal_log_file(int fd, const char* const filename, bool current)
{
	int err;

	/* Check device supported */
	err = nvme_get_sct_status(fd, MASK_0 | MASK_1);
	if (!err)
		err = nvme_get_internal_log(fd, filename, current);
	return err;
}

enum LOG_PAGE_C0 {
	ERROR_LOG_C0 = 0,
	SMART_HEALTH_LOG_C0,
	FIRMWARE_SLOT_INFO_C0,
	COMMAND_EFFECTS_C0,
	DEVICE_SELF_TEST_C0,
	LOG_PAGE_DIRECTORY_C0,
	SMART_ATTRIBUTES_C0,
	NR_SMART_ITEMS_C0,
};

struct nvme_xdn_smart_log_c0 {
	__u8 items[NR_SMART_ITEMS_C0];
	__u8 resv[512 - NR_SMART_ITEMS_C0];
};

static void default_show_vendor_log_c0(struct nvme_dev *dev, __u32 nsid,
		struct nvme_xdn_smart_log_c0 *smart)
{
	printf("Vendor Log Page Directory 0xC0 for NVME device:%s namespace-id:%x\n",
		dev->name, nsid);
	printf("Error Log          : %u \n", smart->items[ERROR_LOG_C0]);
	printf("SMART Health Log   : %u \n", smart->items[SMART_HEALTH_LOG_C0]);
	printf("Firmware Slot Info : %u \n", smart->items[FIRMWARE_SLOT_INFO_C0]);
	printf("Command Effects    : %u \n", smart->items[COMMAND_EFFECTS_C0]);
	printf("Device Self Test   : %u \n", smart->items[DEVICE_SELF_TEST_C0]);
	printf("Log Page Directory : %u \n", smart->items[LOG_PAGE_DIRECTORY_C0]);
	printf("SMART Attributes   : %u \n", smart->items[SMART_ATTRIBUTES_C0]);
}

static int nvme_get_vendor_log(struct nvme_dev *dev, __u32 namespace_id,
			       int log_page, const char* const filename)
{
	int err;
	void* log = NULL;
	size_t log_len = 512;

	if (posix_memalign(&log, getpagesize(), log_len)) {
		err = ENOMEM;
		goto end;
	}

	/* Check device supported */
	err = nvme_get_sct_status(dev_fd(dev), MASK_0 | MASK_1);
	if (err) {
		goto end;
	}
	err = nvme_get_nsid_log(dev_fd(dev), false, log_page, namespace_id,
				log_len, log);
	if (err) {
		fprintf(stderr, "%s: couldn't get log 0x%x\n", __func__,
			log_page);
		goto end;
	}
	if (filename) {
		int o_fd = open(filename, O_WRONLY | O_CREAT | O_TRUNC, 0666);

		if (o_fd < 0) {
			fprintf(stderr, "%s: couldn't output file %s\n",
				__func__, filename);
			err = EINVAL;
			goto end;
		}
		err = d_raw_to_fd(log, log_len, o_fd);
		if (err) {
			fprintf(stderr, "%s: couldn't write all data to output file %s\n",
				__func__, filename);
			/* Attempt following close */
		}
		if (close(o_fd)) {
			err = errno;
			goto end;
		}
	} else {
		if (log_page == 0xc0)
			default_show_vendor_log_c0(dev, namespace_id, log);
		else
			d(log, log_len,16,1);
	}
end:
	if (log) {
		free(log);
	}
	return err;
}

static int vendor_log(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	char *desc = "Get extended SMART information and show it.";
	const char *namespace = "(optional) desired namespace";
	const char *output_file = "(optional) binary output filename";
	const char *log = "(optional) log ID (0xC0, or 0xCA), default 0xCA";
	struct nvme_dev *dev;
	int err;

	struct config {
		__u32 namespace_id;
		const char* output_file;
		int log;
	};

	struct config cfg = {
		.namespace_id = 0xffffffff,
		.output_file = NULL,
		.log = 0xca
	};

	OPT_ARGS(opts) = {
		OPT_UINT("namespace-id", 'n', &cfg.namespace_id, namespace),
		OPT_FILE("output-file",  'o', &cfg.output_file,  output_file),
		OPT_UINT("log",          'l', &cfg.log,          log),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err) {
		fprintf(stderr,"%s: failed to parse arguments\n", __func__);
		return EINVAL;
	}

	if ((cfg.log != 0xC0) && (cfg.log != 0xCA)) {
		fprintf(stderr, "%s: invalid log page 0x%x - should be 0xC0 or 0xCA\n", __func__, cfg.log);
		err = EINVAL;
		goto end;
	}

	err = nvme_get_vendor_log(dev, cfg.namespace_id, cfg.log,
				  cfg.output_file);
	if (err)
		fprintf(stderr, "%s: couldn't get vendor log 0x%x\n", __func__, cfg.log);
end:
	if (err > 0)
		nvme_show_status(err);
	dev_close(dev);
	return err;
}

static int internal_log(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	char *desc = "Get internal status log and show it.";
	const char *output_file = "(optional) binary output filename";
	const char *prev_log = "(optional) use previous log. Otherwise uses current log.";
	struct nvme_dev *dev;
	int err;

	struct config {
		const char* output_file;
		bool prev_log;
	};

	struct config cfg = {
		.output_file = NULL,
		.prev_log = false
	};

	OPT_ARGS(opts) = {
		OPT_FILE("output-file",  'o', &cfg.output_file, output_file),
		OPT_FLAG("prev-log", 'p', &cfg.prev_log, prev_log),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err) {
		fprintf(stderr,"%s: failed to parse arguments\n", __func__);
		return EINVAL;
	}

	if (cfg.prev_log)
		printf("Getting previous log\n");
	else
		printf("Getting current log\n");

	err = nvme_get_internal_log_file(dev_fd(dev), cfg.output_file,
					 !cfg.prev_log);
	if (err < 0)
		fprintf(stderr, "%s: couldn't get fw log \n", __func__);
	if (err > 0)
		nvme_show_status(err);

	dev_close(dev);
	return err;
}

static int clear_correctable_errors(int argc, char **argv, struct command *cmd,
				struct plugin *plugin)
{
	char *desc = "Clear PCIe correctable error count.";
	const __u32 namespace_id = 0xFFFFFFFF;
	const __u32 feature_id = 0xCA;
	const __u32 value = 1; /* Bit0 - reset clear PCIe correctable count */
	const __u32 cdw12 = 0;
	const bool save = false;
	struct nvme_dev *dev;
	__u32 result;
	int err;

	OPT_ARGS(opts) = {
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err) {
		fprintf(stderr,"%s: failed to parse arguments\n", __func__);
		return EINVAL;
	}

	/* Check device supported */
	err = nvme_get_sct_status(dev_fd(dev), MASK_0 | MASK_1);
	if (err)
		goto end;

	struct nvme_set_features_args args = {
		.args_size	= sizeof(args),
		.fd		= dev_fd(dev),
		.fid		= feature_id,
		.nsid		= namespace_id,
		.cdw11		= value,
		.cdw12		= cdw12,
		.save		= save,
		.uuidx		= 0,
		.cdw15		= 0,
		.data_len	= 0,
		.data		= NULL,
		.timeout	= NVME_DEFAULT_IOCTL_TIMEOUT,
		.result		= &result,
	};
	err = nvme_set_features(&args);
	if (err)
		fprintf(stderr, "%s: couldn't clear PCIe correctable errors \n",
			__func__);
end:
	if (err > 0)
		nvme_show_status(err);
	dev_close(dev);
	return err;
}
  070701015D6C61000081A4000003E80000006400000001642C0FB500000258000000000000004A00000000000000000000002800000000nvme-cli/plugins/toshiba/toshiba-nvme.h   /* SPDX-License-Identifier: GPL-2.0-or-later */
#undef CMD_INC_FILE
#define CMD_INC_FILE plugins/toshiba/toshiba-nvme

#if !defined(TOSHIBA_NVME) || defined(CMD_HEADER_MULTI_READ)
#define TOSHIBA_NVME

#include "cmd.h"
#include "plugin.h"

PLUGIN(NAME("toshiba", "Toshiba NVME plugin", NVME_VERSION),
    COMMAND_LIST(
			ENTRY("vs-smart-add-log", "Extended SMART information", vendor_log)
			ENTRY("vs-internal-log", "Get Internal Log", internal_log)
			ENTRY("clear-pcie-correctable-errors", "Clear PCIe correctable error count", clear_correctable_errors)
    )
);

#endif

#include "define_cmd.h"
070701015D6C63000081A4000003E80000006400000001642C0FB5000007C1000000000000004A00000000000000000000002C00000000nvme-cli/plugins/transcend/transcend-nvme.c   // SPDX-License-Identifier: GPL-2.0-or-later
#include <fcntl.h>
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <inttypes.h>

#include "nvme.h"
#include "libnvme.h"
#include "plugin.h"

#define CREATE_CMD
#include "transcend-nvme.h"

static const __u32 OP_BAD_BLOCK = 0xc2;
static const __u32 DW10_BAD_BLOCK = 0x400;
static const __u32 DW12_BAD_BLOCK = 0x5a;

static int getHealthValue(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	struct nvme_smart_log smart_log;
	char *desc = "Get nvme health percentage.";
	int  percent_used = 0, healthvalue=0;
	struct nvme_dev *dev;
	int result;

	OPT_ARGS(opts) = {
		OPT_END()
	};

	result = parse_and_open(&dev, argc, argv, desc, opts);
	if (result) {
		printf("\nDevice not found \n");;
		return -1;
	}
	result = nvme_get_log_smart(dev_fd(dev), 0xffffffff, false, &smart_log);
	if (!result) {
		printf("Transcend NVME heath value: ");
		percent_used =smart_log.percent_used;
		
		if(percent_used>100 || percent_used<0)
		{
			printf("0%%\n");
		}
		else
		{
			healthvalue = 100 - percent_used;
			printf("%d%%\n",healthvalue);
		}
			 
	}
	dev_close(dev);
	return result;
}

 
static int getBadblock(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{

	char *desc = "Get nvme bad block number.";
	struct nvme_dev *dev;
	int result;
 
	OPT_ARGS(opts) = {
		 
		OPT_END()
	};

	result = parse_and_open(&dev, argc, argv, desc, opts);
	if (result) {
		printf("\nDevice not found \n");;
		return -1;
	}
	unsigned char data[1]={0};
	struct nvme_passthru_cmd nvmecmd;
	memset(&nvmecmd,0,sizeof(nvmecmd));
	nvmecmd.opcode=OP_BAD_BLOCK;
	nvmecmd.cdw10=DW10_BAD_BLOCK;
	nvmecmd.cdw12=DW12_BAD_BLOCK;
	nvmecmd.addr = (__u64)(uintptr_t)data;
	nvmecmd.data_len = 0x1;
	result = nvme_submit_admin_passthru(dev_fd(dev), &nvmecmd, NULL);
	if(!result) {
		int badblock  = data[0];
		printf("Transcend NVME badblock count: %d\n",badblock);
	}
	dev_close(dev);
	return result;
}
   070701015D6C64000081A4000003E80000006400000001642C0FB5000001F5000000000000004A00000000000000000000002C00000000nvme-cli/plugins/transcend/transcend-nvme.h   /* SPDX-License-Identifier: GPL-2.0-or-later */
#undef CMD_INC_FILE
#define CMD_INC_FILE plugins/transcend/transcend-nvme

#if !defined(TRANSCEND_NVME) || defined(CMD_HEADER_MULTI_READ)
#define TRANSCEND_NVME

#include "cmd.h"
 

PLUGIN(NAME("transcend", "Transcend vendor specific extensions", NVME_VERSION),
    COMMAND_LIST(
			ENTRY("healthvalue", "NVME health percentage", getHealthValue)
			ENTRY("badblock", "Get NVME bad block number", getBadblock)
 
    )
);

#endif

#include "define_cmd.h"
   070701015D6C66000081A4000003E80000006400000001642C0FB500009C09000000000000004A00000000000000000000002800000000nvme-cli/plugins/virtium/virtium-nvme.c   // SPDX-License-Identifier: GPL-2.0-or-later
#include <fcntl.h>
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <stddef.h>
#include <inttypes.h>
#include <stdbool.h>
#include <time.h>
#include <locale.h>

#include "common.h"
#include "nvme.h"
#include "libnvme.h"
#include "plugin.h"
#include "util/types.h"

#define CREATE_CMD
#include "virtium-nvme.h"

#define MIN2(a, b) ( ((a) < (b))? (a) : (b))

#define HOUR_IN_SECONDS     3600

#define MAX_HEADER_BUFF     (20 * 1024)
#define MAX_LOG_BUFF        4096
#define DEFAULT_TEST_NAME   "Put the name of your test here"

static char vt_default_log_file_name[256];

struct vtview_log_header {
	char			path[256];
	char			test_name[256];
	long int		time_stamp;
	struct nvme_id_ctrl	raw_ctrl;
	struct nvme_firmware_slot raw_fw;
};

struct vtview_smart_log_entry {
	char	path[256];
	long int	time_stamp;
	struct nvme_id_ns	raw_ns;
	struct nvme_id_ctrl	raw_ctrl;
	struct nvme_smart_log	raw_smart;
};

struct vtview_save_log_settings {
	double	run_time_hrs;
	double	log_record_frequency_hrs;
	const char*	output_file;
	const char*	test_name;
};

static void vt_initialize_header_buffer(struct vtview_log_header *pbuff)
{
	memset(pbuff->path, 0, sizeof(pbuff->path));
	memset(pbuff->test_name, 0, sizeof(pbuff->test_name));
}

static void vt_convert_data_buffer_to_hex_string(const unsigned char *bufPtr,
		const unsigned int size, const bool isReverted, char *output)
{
	unsigned int i, pos;
	const char hextable[16] = {
		'0', '1', '2', '3',
		'4', '5', '6', '7',
		'8', '9', 'A', 'B',
		'C', 'D', 'E', 'F',
	};

	memset(output, 0, (size * 2) + 1);

	for (i = 0; i < size; i++) {
		if(isReverted)
			pos = size - 1 - i;
		else
			pos = i;
		output[2 * i] = hextable[(bufPtr[pos] & 0xF0) >> 4];
		output[2 * i + 1] = hextable[(bufPtr[pos] & 0x0F)];
	}
}

/*
 * Generate log file name.
 * Log file name will be generated automatically if user leave log file option blank.
 * Log file name will be generated as vtView-Smart-log-date-time.txt
 */
static void vt_generate_vtview_log_file_name(char* fname)
{
	time_t     current;
	struct tm  tstamp;
	char       temp[256];

	time(&current);

	tstamp = *localtime(&current);
	snprintf(temp, sizeof(temp), "./vtView-Smart-log-");
	strcat(fname, temp);
	strftime(temp, sizeof(temp), "%Y-%m-%d", &tstamp);
	strcat(fname, temp);
	snprintf(temp, sizeof(temp), ".txt");
	strcat(fname, temp);
}

static void vt_convert_smart_data_to_human_readable_format(struct vtview_smart_log_entry *smart, char *text)
{
	char tempbuff[1024] = "";
	int i;
	int temperature = ((smart->raw_smart.temperature[1] << 8) | smart->raw_smart.temperature[0]) - 273;
	double capacity;
	char *curlocale;
	char *templocale;
	__u8 lba_index;
	nvme_id_ns_flbas_to_lbaf_inuse(smart->raw_ns.flbas, &lba_index);

	curlocale = setlocale(LC_ALL, NULL);
	templocale = strdup(curlocale);

	if (NULL == templocale)
		printf("Cannot malloc buffer\n");

	setlocale(LC_ALL, "C");

	unsigned long long int lba = 1ULL << smart->raw_ns.lbaf[lba_index].ds;
	capacity = le64_to_cpu(smart->raw_ns.nsze) * lba;

	snprintf(tempbuff, sizeof(tempbuff), "log;%s;%lu;%s;%s;%-.*s;", smart->raw_ctrl.sn, smart->time_stamp, smart->path,
		smart->raw_ctrl.mn, (int)sizeof(smart->raw_ctrl.fr), smart->raw_ctrl.fr);
	strcpy(text, tempbuff);
	snprintf(tempbuff, sizeof(tempbuff), "Capacity;%lf;", capacity / 1000000000);
	strcat(text, tempbuff);
	snprintf(tempbuff, sizeof(tempbuff), "Critical_Warning;%u;", smart->raw_smart.critical_warning);
	strcat(text, tempbuff);
	snprintf(tempbuff, sizeof(tempbuff), "Temperature;%u;", temperature);
	strcat(text, tempbuff);
	snprintf(tempbuff, sizeof(tempbuff), "Available_Spare;%u;", smart->raw_smart.avail_spare);
	strcat(text, tempbuff);
	snprintf(tempbuff, sizeof(tempbuff), "Available_Spare_Threshold;%u;", smart->raw_smart.spare_thresh);
	strcat(text, tempbuff);
	snprintf(tempbuff, sizeof(tempbuff), "Percentage_Used;%u;", smart->raw_smart.percent_used);
	strcat(text, tempbuff);
	snprintf(tempbuff, sizeof(tempbuff), "Data_Units_Read;%s;", uint128_t_to_string(le128_to_cpu(smart->raw_smart.data_units_read)));
	strcat(text, tempbuff);
	snprintf(tempbuff, sizeof(tempbuff), "Data_Units_Written;%s;", uint128_t_to_string(le128_to_cpu(smart->raw_smart.data_units_written)));
	strcat(text, tempbuff);
	snprintf(tempbuff, sizeof(tempbuff), "Host_Read_Commands;%s;", uint128_t_to_string(le128_to_cpu(smart->raw_smart.host_reads)));
	strcat(text, tempbuff);
	snprintf(tempbuff, sizeof(tempbuff), "Host_Write_Commands;%s;", uint128_t_to_string(le128_to_cpu(smart->raw_smart.host_writes)));
	strcat(text, tempbuff);
	snprintf(tempbuff, sizeof(tempbuff), "Controller_Busy_Time;%s;", uint128_t_to_string(le128_to_cpu(smart->raw_smart.ctrl_busy_time)));
	strcat(text, tempbuff);
	snprintf(tempbuff, sizeof(tempbuff), "Power_Cycles;%s;", uint128_t_to_string(le128_to_cpu(smart->raw_smart.power_cycles)));
	strcat(text, tempbuff);
	snprintf(tempbuff, sizeof(tempbuff), "Power_On_Hours;%s;", uint128_t_to_string(le128_to_cpu(smart->raw_smart.power_on_hours)));
	strcat(text, tempbuff);
	snprintf(tempbuff, sizeof(tempbuff), "Unsafe_Shutdowns;%s;", uint128_t_to_string(le128_to_cpu(smart->raw_smart.unsafe_shutdowns)));
	strcat(text, tempbuff);
	snprintf(tempbuff, sizeof(tempbuff), "Media_Errors;%s;", uint128_t_to_string(le128_to_cpu(smart->raw_smart.media_errors)));
	strcat(text, tempbuff);
	snprintf(tempbuff, sizeof(tempbuff), "Num_Err_Log_Entries;%s;", uint128_t_to_string(le128_to_cpu(smart->raw_smart.num_err_log_entries)));
	strcat(text, tempbuff);
	snprintf(tempbuff, sizeof(tempbuff), "Warning_Temperature_Time;%u;", le32_to_cpu(smart->raw_smart.warning_temp_time));
	strcat(text, tempbuff);
	snprintf(tempbuff, sizeof(tempbuff), "Critical_Composite_Temperature_Time;%u;", le32_to_cpu(smart->raw_smart.critical_comp_time));
	strcat(text, tempbuff);

	for (i = 0; i < 8; i++) {
		__s32 temp = le16_to_cpu(smart->raw_smart.temp_sensor[i]);
		if (0 == temp) {
			snprintf(tempbuff, sizeof(tempbuff), "Temperature_Sensor_%d;NC;", i);
			strcat(text, tempbuff);
			continue;
		}
		snprintf(tempbuff, sizeof(tempbuff), "Temperature_Sensor_%d;%d;", i, temp - 273);
		strcat(text, tempbuff);
	}

	snprintf(tempbuff, sizeof(tempbuff), "Thermal_Management_T1_Trans_Count;%u;", le32_to_cpu(smart->raw_smart.thm_temp1_trans_count));
	strcat(text, tempbuff);
	snprintf(tempbuff, sizeof(tempbuff), "Thermal_Management_T2_Trans_Count;%u;", le32_to_cpu(smart->raw_smart.thm_temp2_trans_count));
	strcat(text, tempbuff);
	snprintf(tempbuff, sizeof(tempbuff), "Thermal_Management_T1_Total_Time;%u;", le32_to_cpu(smart->raw_smart.thm_temp1_total_time));
	strcat(text, tempbuff);
	snprintf(tempbuff, sizeof(tempbuff), "Thermal_Management_T2_Total_Time;%u;", le32_to_cpu(smart->raw_smart.thm_temp2_total_time));
	strcat(text, tempbuff);

	snprintf(tempbuff, sizeof(tempbuff), "NandWrites;%d;\n", 0);
	strcat(text, tempbuff);

	setlocale(LC_ALL, templocale);
	free(templocale);
}

static void vt_header_to_string(const struct vtview_log_header *header, char *text)
{
	char timebuff[50] = "";
	char tempbuff[MAX_HEADER_BUFF] = "";
	char identext[16384] = "";
	char fwtext[2048] = "";

	strftime(timebuff, 50, "%Y-%m-%d %H:%M:%S", localtime(&(header->time_stamp)));
	snprintf(tempbuff, MAX_HEADER_BUFF, "header;{\"session\":{\"testName\":\"%s\",\"dateTime\":\"%s\"},",
		header->test_name, timebuff);
	strcpy(text, tempbuff);

	vt_convert_data_buffer_to_hex_string((unsigned char *)&(header->raw_ctrl), sizeof(header->raw_ctrl), false, identext);
	vt_convert_data_buffer_to_hex_string((unsigned char *)&(header->raw_fw), sizeof(header->raw_fw), false, fwtext);
	snprintf(tempbuff, MAX_HEADER_BUFF,
		"\"devices\":[{\"model\":\"%s\",\"port\":\"%s\",\"SN\":\"%s\",\"type\":\"NVMe\",\"identify\":\"%s\",\"firmwareSlot\":\"%s\"}]}\n",
		header->raw_ctrl.mn, header->path, header->raw_ctrl.sn, identext, fwtext);
	strcat(text, tempbuff);
}

static int vt_append_text_file(const char *text, const char *filename)
{
	FILE *f;

	f = fopen(filename, "a");
	if(NULL == f) {
		printf("Cannot open %s\n", filename);
		return -1;
	}

	fprintf(f, "%s", text);
	fclose(f);
	return 0;
}

static int vt_append_log(struct vtview_smart_log_entry *smart, const char *filename)
{
	char sm_log_text[MAX_LOG_BUFF] = "";

	vt_convert_smart_data_to_human_readable_format(smart, sm_log_text);
	return vt_append_text_file(sm_log_text, filename);
}

static int vt_append_header(const struct vtview_log_header *header, const char *filename)
{
	char header_text[MAX_HEADER_BUFF] = "";

	vt_header_to_string(header, header_text);
	return vt_append_text_file(header_text, filename);
}

static void vt_process_string(char *str, const size_t size)
{
	size_t i;

	if (size == 0)
		return;

	i = size - 1;
	while ((0 != i) && (' ' == str[i])) {
		str[i] = 0;
		i--;
	}
}

static int vt_add_entry_to_log(const int fd, const char *path, const struct vtview_save_log_settings *cfg)
{
	struct vtview_smart_log_entry smart;
	const char *filename;
	int ret = 0;
	unsigned nsid = 0;

	memset(smart.path, 0, sizeof(smart.path));
	strncpy(smart.path, path, sizeof(smart.path) - 1);
	if(NULL == cfg->output_file)
		filename = vt_default_log_file_name;
	else
		filename = cfg->output_file;

	smart.time_stamp = time(NULL);
	ret = nvme_get_nsid(fd, &nsid);

	if (ret < 0) {
		printf("Cannot read namespace-id\n");
		return -1;
	}

	ret = nvme_identify_ns(fd, nsid, &smart.raw_ns);
	if (ret) {
		printf("Cannot read namespace identify\n");
		return -1;
	}

	ret = nvme_identify_ctrl(fd, &smart.raw_ctrl);
	if (ret) {
		printf("Cannot read device identify controller\n");
		return -1;
	}

	ret = nvme_get_log_smart(fd, NVME_NSID_ALL, false, &smart.raw_smart);
	if (ret) {
		printf("Cannot read device SMART log\n");
		return -1;
	}

	vt_process_string(smart.raw_ctrl.sn, sizeof(smart.raw_ctrl.sn));
	vt_process_string(smart.raw_ctrl.mn, sizeof(smart.raw_ctrl.mn));

	ret = vt_append_log(&smart, filename);
	return (ret);
}

static int vt_update_vtview_log_header(const int fd, const char *path, const struct vtview_save_log_settings *cfg)
{
	struct vtview_log_header header;
	const char *filename;
	int ret = 0;

	vt_initialize_header_buffer(&header);
	if (strlen(path) > sizeof(header.path)) {
		printf("filename too long\n");
		errno = EINVAL;
		return -1;
	}
	strcpy(header.path, path);

	if (NULL == cfg->test_name)
		strcpy(header.test_name, DEFAULT_TEST_NAME);
	else {
		if (strlen(cfg->test_name) > sizeof(header.test_name)) {
			printf("test name too long\n");
			errno = EINVAL;
			return -1;
		}
		strcpy(header.test_name, cfg->test_name);
	}

	if(NULL == cfg->output_file)
		filename = vt_default_log_file_name;
	else
		filename = cfg->output_file;

	printf("Log file: %s\n", filename);
	header.time_stamp = time(NULL);

	ret = nvme_identify_ctrl(fd, &header.raw_ctrl);
	if (ret) {
		printf("Cannot read identify device\n");
		return -1;
	}

	ret = nvme_get_log_fw_slot(fd, false, &header.raw_fw);
	if (ret) {
		printf("Cannot read device firmware log\n");
		return -1;
	}

	vt_process_string(header.raw_ctrl.sn, sizeof(header.raw_ctrl.sn));
	vt_process_string(header.raw_ctrl.mn, sizeof(header.raw_ctrl.mn));

	ret = vt_append_header(&header, filename);
	return (ret);
}

static void vt_build_identify_lv2(unsigned int data, unsigned int start,
				  unsigned int count, const char **table,
				  bool isEnd)
{
	unsigned int i, end, pos, sh = 1;
	unsigned int temp;

	end = start + count;

	for (i = start; i < end; i++) {
		temp = ((data & (sh << i)) >> i);
		pos = i * 2;
		printf("        \"bit %u\":\"%ub  %s\"\n", i, temp, table[pos]);
		printf("                     %s", table[pos + 1]);

		if((end - 1) != i || !isEnd)
			printf(",\n");
		else
			printf("\n");
	}

	if(isEnd)
		printf("    },\n");
}

static void vt_build_power_state_descriptor(const struct nvme_id_ctrl *ctrl)
{
	unsigned int i;
	unsigned char *buf;

	printf("{\n");
	printf("\"Power State Descriptors\":{\n");
	printf("    \"NOPS\":\"Non-Operational State,\"\n");
	printf("    \"MPS\":\"Max Power Scale (0: in 0.01 Watts; 1: in 0.0001 Watts),\"\n");
	printf("    \"ENLAT\":\"Entry Latency in microseconds,\"\n");
	printf("    \"RWL\":\"Relative Write Latency,\"\n");
	printf("    \"RRL\":\"Relative Read Latency,\"\n");
	printf("    \"IPS\":\"Idle Power Scale (00b: Not reported; 01b: 0.0001 W; 10b: 0.01 W; 11b: Reserved),\"\n");
	printf("    \"APS\":\"Active Power Scale (00b: Not reported; 01b: 0.0001 W; 10b: 0.01 W; 11b: Reserved),\"\n");
	printf("    \"ACTP\":\"Active Power,\"\n");
	printf("    \"MP\":\"Maximum Power,\"\n");
	printf("    \"EXLAT\":\"Exit Latency in microsecond,\"\n");
	printf("    \"RWT\":\"Relative Write Throughput,\"\n");
	printf("    \"RRT\":\"Relative Read Throughput,\"\n");
	printf("    \"IDLP\":\"Idle Power,\"\n");
	printf("    \"APW\":\"Active Power Workload,\"\n");
	printf("    \"Ofs\":\"BYTE Offset,\"\n");

	printf("    \"Power State Descriptors\":\"\n");

	printf("%6s%10s%5s%4s%6s%10s%10s%10s%4s%4s%4s%4s%10s%4s%6s%10s%4s%5s%6s\n", "Entry", "0fs 00-03", "NOPS", "MPS", "MP", "ENLAT", "EXLAT", "0fs 12-15",
			"RWL", "RWT", "RRL", "RRT", "0fs 16-19", "IPS", "IDLP", "0fs 20-23", "APS", "APW", "ACTP");


	printf("%6s%10s%5s%4s%6s%10s%10s%10s%4s%4s%4s%4s%10s%4s%6s%10s%4s%5s%6s\n", "=====", "=========", "====", "===", "=====", "=========", "=========",
			"=========", "===", "===", "===", "===", "=========", "===", "=====", "=========", "===", "====", "=====");

	for (i = 0; i < 32; i++) {
		char s[100];
		unsigned int temp;

		printf("%6d", i);
		buf = (unsigned char*) (&ctrl->psd[i]);
		vt_convert_data_buffer_to_hex_string(&buf[0], 4, true, s);
		printf("%9sh", s);

		temp = ctrl->psd[i].flags;
		printf("%4ub", ((unsigned char)temp & 0x02));
		printf("%3ub", ((unsigned char)temp & 0x01));
		vt_convert_data_buffer_to_hex_string(&buf[0], 2, true, s);
		printf("%5sh", s);

		vt_convert_data_buffer_to_hex_string(&buf[4], 4, true, s);
		printf("%9sh", s);
		vt_convert_data_buffer_to_hex_string(&buf[8], 4, true, s);
		printf("%9sh", s);
		vt_convert_data_buffer_to_hex_string(&buf[12], 4, true, s);
		printf("%9sh", s);
		vt_convert_data_buffer_to_hex_string(&buf[15], 1, true, s);
		printf("%3sh", s);
		vt_convert_data_buffer_to_hex_string(&buf[14], 1, true, s);
		printf("%3sh", s);
		vt_convert_data_buffer_to_hex_string(&buf[13], 1, true, s);
		printf("%3sh", s);
		vt_convert_data_buffer_to_hex_string(&buf[12], 1, true, s);
		printf("%3sh", s);
		vt_convert_data_buffer_to_hex_string(&buf[16], 4, true, s);
		printf("%9sh", s);

		temp = ctrl->psd[i].ips;
		snprintf(s, sizeof(s), "%u%u", (((unsigned char)temp >> 6) & 0x01), (((unsigned char)temp >> 7) & 0x01));
		printf("%3sb", s);

		vt_convert_data_buffer_to_hex_string(&buf[16], 2, true, s);
		printf("%5sh", s);
		vt_convert_data_buffer_to_hex_string(&buf[20], 4, true, s);
		printf("%9sh", s);

		temp = ctrl->psd[i].apws;
		snprintf(s, sizeof(s), "%u%u", (((unsigned char)temp >> 6) & 0x01), (((unsigned char)temp >> 7) & 0x01));
		printf("%3sb", s);
		snprintf(s, sizeof(s), "%u%u%u", (((unsigned char)temp) & 0x01), (((unsigned char)temp >> 1) & 0x01), (((unsigned char)temp >> 2) & 0x01));
		printf("%4sb", s);

		vt_convert_data_buffer_to_hex_string(&buf[20], 2, true, s);
		printf("%5sh", s);
		printf("\n");
	}

	printf("    \"}\n}\n");

}

static void vt_dump_hex_data(const unsigned char *pbuff, size_t pbuffsize) {

	char textbuf[33];
	unsigned long int i, j;

	textbuf[32] = '\0';
	printf("[%08X] ", 0);
	for (i = 0; i < pbuffsize; i++) {
		printf("%02X ", pbuff[i]);

		if (pbuff[i] >= ' ' && pbuff[i] <= '~') 
			textbuf[i % 32] = pbuff[i];
		else 
			textbuf[i % 32] = '.';

		if ((((i + 1) % 8) == 0) || ((i + 1) == pbuffsize)) {
			printf(" ");
			if ((i + 1) % 32 == 0) {
				printf(" %s\n", textbuf);
				if((i + 1) != pbuffsize)
				    printf("[%08lX] ", (i + 1));
			} 
			else if (i + 1 == pbuffsize) {
				textbuf[(i + 1) % 32] = '\0';
				if(((i + 1) % 8) == 0)
					printf(" ");

				for (j = ((i + 1) % 32); j < 32; j++) {
					printf("   ");
					if(((j + 1) % 8) == 0)
						printf(" ");
				}

				printf("%s\n", textbuf);
			}
		}
	}
}

static void vt_parse_detail_identify(const struct nvme_id_ctrl *ctrl)
{
	unsigned char *buf;
	unsigned int temp, pos;
	char s[1024] = "";

	const char *CMICtable[6] = {"0 = the NVM subsystem contains only a single NVM subsystem port",
								"1 = the NVM subsystem may contain more than one subsystem ports",
								"0 = the NVM subsystem contains only a single controller",
								"1 = the NVM subsystem may contain two or more controllers (see section 1.4.1)",
								"0 = the controller is associated with a PCI Function or a Fabrics connection",
								"1 = the controller is associated with an SR-IOV Virtual Function"};

	const char *OAEStable[20] = {"Reserved",
								 "Reserved",
								 "Reserved",
								 "Reserved",
								 "Reserved",
								 "Reserved",
								 "Reserved",
								 "Reserved",
								 "Reserved",
								 "Reserved",
								 "Reserved",
								 "Reserved",
								 "Reserved",
								 "Reserved",
								 "Reserved",
								 "Reserved",
								 "0 = does not support sending the Namespace Attribute Notices event nor the associated Changed Namespace List log page",
								 "1 = supports sending the Namespace Attribute Notices  & the associated Changed Namespace List log page",
								 "0 = does not support sending Firmware Activation Notices event",
								 "1 = supports sending Firmware Activation Notices"};

	const char *CTRATTtable[4] = {"0 = does not support a 128-bit Host Identifier",
								  "1 = supports a 128-bit Host Identifier",
								  "0 = does not support Non-Operational Power State Permissive Mode",
								  "1 = supports Non-Operational Power State Permissive Mode"};

	const char *OACStable[18] = {"0 = does not support the Security Send and Security Receive commands",
								 "1 = supports the Security Send and Security Receive commands",
								 "0 = does not support the Format NVM command",
								 "1 = supports the Format NVM command",
								 "0 = does not support the Firmware Commit and Firmware Image Download commands",
								 "1 = supports the Firmware Commit and Firmware Image Download commands",
								 "0 = does not support the Namespace Management capability",
								 "1 = supports the Namespace Management capability",
								 "0 = does not support the Device Self-test command",
								 "1 = supports the Device Self-test command",
								 "0 = does not support Directives",
								 "1 = supports Directive Send & Directive Receive commands",
								 "0 = does not support the NVMe-MI Send and NVMe-MI Receive commands",
								 "1 = supports the NVMe-MI Send and NVMe-MI Receive commands",
								 "0 = does not support the Virtualization Management command",
								 "1 = supports the Virtualization Management command",
								 "0 = does not support the Doorbell Buffer Config command",
								 "1 = supports the Doorbell Buffer Config command"};

	const char *FRMWtable[10] = {"0 = the 1st firmware slot (slot 1) is read/write",
								 "1 = the 1st firmware slot (slot 1) is read only",
								 "Reserved",
								 "Reserved",
								 "Reserved",
								 "Reserved",
								 "Reserved",
								 "Reserved",
								 "0 = requires a reset for firmware to be activated",
								 "1 = supports firmware activation without a reset"};

	const char *LPAtable[8] = {"0 = does not support the SMART / Health information log page on a per namespace basis",
							   "1 = supports the SMART / Health information log page on a per namespace basis",
							   "0 = does not support the Commands Supported & Effects log page",
							   "1 = supports the Commands Supported Effects log page",
							   "0 = does not support extended data for Get Log Page",
							   "1 = supports extended data for Get Log Page (including extended Number of Dwords and Log Page Offset fields)",
							   "0 = does not support the Telemetry Host-Initiated and Telemetry Controller-Initiated log pages and Telemetry Log Notices events",
							   "1 = supports the Telemetry Host-Initiated and Telemetry Controller-Initiated log pages and sending Telemetry Log Notices"							   };

	const char *AVSCCtable[2] = {"0 = the format of all Admin Vendor Specific Commands are vendor specific",
								 "1 = all Admin Vendor Specific Commands use the format defined in NVM Express specification"};

	const char *APSTAtable[2] = {"0 = does not support autonomous power state transitions",
								 "1 = supports autonomous power state transitions"};

	const char *DSTOtable[2] =  {"0 = the NVM subsystem supports one device self-test operation per controller at a time",
								 "1 = the NVM subsystem supports only one device self-test operation in progress at a time"};

	const char *HCTMAtable[2] = {"0 = does not support host controlled thermal management",
								 "1 = supports host controlled thermal management. Supports Set Features & Get Features commands with the Feature Identifier field set to 10h"};

	const char *SANICAPtable[6] =  {"0 = does not support the Crypto Erase sanitize operation",
									"1 = supports the Crypto Erase sanitize operation",
									"0 = does not support the Block Erase sanitize operation",
									"1 = supports the Block Erase sanitize operation",
									"0 = does not support the Overwrite sanitize operation",
									"1 = supports the Overwrite sanitize operation"};

	const char *ONCStable[14] =  {"0 = does not support the Compare command",
								  "1 = supports the Compare command",
								  "0 = does not support the Write Uncorrectable command",
								  "1 = supports the Write Uncorrectable command",
								  "0 = does not support the Dataset Management command",
								  "1 = supports the Dataset Management command",
								  "0 = does not support the Write Zeroes command",
								  "1 = supports the Write Zeroes command",
								  "0 = does not support the Save field set to a non-zero value in the Set Features and the Get Features commands",
								  "1 = supports the Save field set to a non-zero value in the Set Features and the Get Features commands", \
								  "0 = does not support reservations",
								  "1 = supports reservations",
								  "0 = does not support the Timestamp feature (refer to section 5.21.1.14)",
								  "1 = supports the Timestamp feature"};

	const char *FUSEStable[2] = {"0 =  does not support the Compare and Write fused operation",
								 "1 =  supports the Compare and Write fused operation"};

	const char *FNAtable[6] = {"0 = supports format on a per namespace basis",
							   "1 = all namespaces shall be configured with the same attributes and a format (excluding secure erase) of any namespace results in a format of all namespaces in an NVM subsystem",
							   "0 = any secure erase performed as part of a format results in a secure erase of a particular namespace specified",
							   "1 = any secure erase performed as part of a format operation results in a secure erase of all namespaces in the NVM subsystem",
							   "0 = cryptographic erase is not supported",
							   "1 = cryptographic erase is supported as part of the secure erase functionality"};

	const char *VWCtable[2] = {"0 = a volatile write cache is not present",
							   "1 = a volatile write cache is present"};

	const char *ICSVSCCtable[2] = {"0 = the format of all NVM Vendor Specific Commands are vendor specific",
								 "1 = all NVM Vendor Specific Commands use the format defined in NVM Express specification"};

	const char *SGLSSubtable[4] =  {"00b = SGLs are not supported",
									"01b = SGLs are supported. There is no alignment nor granularity requirement for Data Blocks",
									"10b = SGLs are supported. There is a Dword alignment and granularity requirement for Data Blocks",
									"11b = Reserved"};

	const char *SGLStable[42] =  {"Used",
								  "Used",
								  "Used",
								  "Used",
								  "0 = does not support the Keyed SGL Data Block descriptor",
								  "1 = supports the Keyed SGL Data Block descriptor",
								  "Reserved",
								  "Reserved",
								  "Reserved",
								  "Reserved",
								  "Reserved",
								  "Reserved",
								  "Reserved",
								  "Reserved",
								  "Reserved",
								  "Reserved",
								  "Reserved",
								  "Reserved",
								  "Reserved",
								  "Reserved",
								  "Reserved",
								  "Reserved",
								  "Reserved",
								  "Reserved",
								  "Reserved",
								  "Reserved",
								  "Reserved",
								  "Reserved",
								  "Reserved",
								  "Reserved",
								  "Reserved",
								  "Reserved",
								  "0 = the SGL Bit Bucket descriptor is not supported",
								  "1 = the SGL Bit Bucket descriptor is supported",
								  "0 = use of a byte aligned contiguous physical buffer of metadata is not supported",
								  "1 = use of a byte aligned contiguous physical buffer of metadata is supported",
								  "0 = the SGL length shall be equal to the amount of data to be transferred",
								  "1 = supports commands that contain a data or metadata SGL of a length larger than the amount of data to be transferred",
								  "0 = use of Metadata Pointer (MPTR) that contains an address of an SGL segment containing exactly one SGL Descriptor that is Qword aligned is not supported",
								  "1 = use of Metadata Pointer (MPTR) that contains an address of an SGL segment containing exactly one SGL Descriptor that is Qword aligned is supported",
								  "0 = the Address field specifying an offset is not supported",
	                              "1 = supports the Address field in SGL Data Block, SGL Segment, and SGL Last Segment descriptor types specifying an offset"};

	buf = (unsigned char *)(ctrl);

	printf("{\n");
	vt_convert_data_buffer_to_hex_string(buf, 2, true, s);
	printf("    \"PCI Vendor ID\":\"%sh\",\n", s);
	vt_convert_data_buffer_to_hex_string(&buf[2], 2, true, s);
	printf("    \"PCI Subsystem Vendor ID\":\"%sh\",\n",  s);
	printf("    \"Serial Number\":\"%s\",\n", ctrl->sn);
	printf("    \"Model Number\":\"%s\",\n", ctrl->mn);
	printf("    \"Firmware Revision\":\"%-.*s\",\n", (int)sizeof(ctrl->fr), ctrl->fr);
	vt_convert_data_buffer_to_hex_string(&buf[72], 1, true, s);
	printf("    \"Recommended Arbitration Burst\":\"%sh\",\n", s);
	vt_convert_data_buffer_to_hex_string(&buf[73], 3, true, s);
	printf("    \"IEEE OUI Identifier\":\"%sh\",\n", s);

	temp = ctrl->cmic;
	printf("    \"Controller Multi-Path I/O and Namespace Sharing Capabilities\":{\n");
	vt_convert_data_buffer_to_hex_string(&buf[76], 1, true, s);
	printf("        \"Value\":\"%sh\",\n", s);
	vt_build_identify_lv2(temp, 0, 3, CMICtable, true);

	vt_convert_data_buffer_to_hex_string(&buf[77], 1, true, s);
	printf("    \"Maximum Data Transfer Size\":\"%sh\",\n", s);
	vt_convert_data_buffer_to_hex_string(&buf[78], 2, true, s);
	printf("    \"Controller ID\":\"%sh\",\n", s);
	vt_convert_data_buffer_to_hex_string(&buf[80], 4, true, s);
	printf("    \"Version\":\"%sh\",\n", s);
	vt_convert_data_buffer_to_hex_string(&buf[84], 4, true, s);
	printf("    \"RTD3 Resume Latency\":\"%sh\",\n", s);
	vt_convert_data_buffer_to_hex_string(&buf[88], 4, true, s);
	printf("    \"RTD3 Entry Latency\":\"%sh\",\n", s);

	temp = le32_to_cpu(ctrl->oaes);
	printf("    \"Optional Asynchronous Events Supported\":{\n");
	vt_convert_data_buffer_to_hex_string(&buf[92], 4, true, s);
	printf("        \"Value\":\"%sh\",\n", s);
	vt_build_identify_lv2(temp, 8, 2, OAEStable, true);

	temp = le32_to_cpu(ctrl->ctratt);
	printf("    \"Controller Attributes\":{\n");
	vt_convert_data_buffer_to_hex_string(&buf[96], 4, true, s);
	printf("        \"Value\":\"%sh\",\n", s);
	vt_build_identify_lv2(temp, 0, 2, CTRATTtable, true);

	vt_convert_data_buffer_to_hex_string(&buf[122], 16, true, s);
	printf("    \"FRU Globally Unique Identifier\":\"%sh\",\n", s);
	vt_convert_data_buffer_to_hex_string(&buf[240], 16, true, s);
	printf("    \"NVMe Management Interface Specification\":\"%sh\",\n", s);

	temp = le16_to_cpu(ctrl->oacs);
	printf("    \"Optional Admin Command Support\":{\n");
	vt_convert_data_buffer_to_hex_string(&buf[256], 2, true, s);
	printf("        \"Value\":\"%sh\",\n", s);
	vt_build_identify_lv2(temp, 0, 9, OACStable, true);

	vt_convert_data_buffer_to_hex_string(&buf[258], 1, true, s);
	printf("    \"Abort Command Limit\":\"%sh\",\n", s);
	vt_convert_data_buffer_to_hex_string(&buf[259], 1, true, s);
	printf("    \"Asynchronous Event Request Limit\":\"%sh\",\n", s);

	temp = ctrl->frmw;
	printf("    \"Firmware Updates\":{\n");
	vt_convert_data_buffer_to_hex_string(&buf[260], 1, true, s);
	printf("        \"Value\":\"%sh\",\n", s);
	vt_build_identify_lv2(temp, 0, 1, FRMWtable, false);
	vt_convert_data_buffer_to_hex_string(&buf[260], 1, true, s);
	printf("        \"Firmware Slot\":\"%uh\",\n", ((ctrl->frmw >> 1) & 0x07));
	vt_build_identify_lv2(temp, 4, 1, FRMWtable, true);

	temp = ctrl->lpa;
	printf("    \"Log Page Attributes\":{\n");
	vt_convert_data_buffer_to_hex_string(&buf[261], 1, true, s);
	printf("        \"Value\":\"%sh\",\n", s);
	vt_build_identify_lv2(temp, 0, 4, LPAtable, true);

	vt_convert_data_buffer_to_hex_string(&buf[262], 1, true, s);
	printf("    \"Error Log Page Entries\":\"%sh\",\n", s);
	vt_convert_data_buffer_to_hex_string(&buf[263], 1, true, s);
	printf("    \"Number of Power States Support\":\"%sh\",\n", s);

	temp = ctrl->avscc;
	printf("    \"Admin Vendor Specific Command Configuration\":{\n");
	vt_convert_data_buffer_to_hex_string(&buf[264], 1, true, s);
	printf("        \"Value\":\"%sh\",\n", s);
	vt_build_identify_lv2(temp, 0, 1, AVSCCtable, true);

	temp = ctrl->apsta;
	printf("    \"Autonomous Power State Transition Attributes\":{\n");
	vt_convert_data_buffer_to_hex_string(&buf[265], 1, true, s);
	printf("        \"Value\":\"%sh\",\n", s);
	vt_build_identify_lv2(temp, 0, 1, APSTAtable, true);

	vt_convert_data_buffer_to_hex_string(&buf[266], 2, true, s);
	printf("    \"Warning Composite Temperature Threshold\":\"%sh\",\n", s);
	vt_convert_data_buffer_to_hex_string(&buf[268], 2, true, s);
	printf("    \"Critical Composite Temperature Threshold\":\"%sh\",\n", s);
	vt_convert_data_buffer_to_hex_string(&buf[270], 2, true, s);
	printf("    \"Maximum Time for Firmware Activation\":\"%sh\",\n", s);
	vt_convert_data_buffer_to_hex_string(&buf[272], 4, true, s);
	printf("    \"Host Memory Buffer Preferred Size\":\"%sh\",\n", s);
	vt_convert_data_buffer_to_hex_string(&buf[276], 4, true, s);
	printf("    \"Host Memory Buffer Minimum Size\":\"%sh\",\n", s);
	vt_convert_data_buffer_to_hex_string(&buf[280], 16, true, s);
	printf("    \"Total NVM Capacity\":\"%sh\",\n", s);
	vt_convert_data_buffer_to_hex_string(&buf[296], 16, true, s);
	printf("    \"Unallocated NVM Capacity\":\"%sh\",\n", s);

	temp = le32_to_cpu(ctrl->rpmbs); 
	printf("    \"Replay Protected Memory Block Support\":{\n");
	vt_convert_data_buffer_to_hex_string(&buf[312], 4, true, s);
	printf("        \"Value\":\"%sh\",\n", s);
	printf("        \"Number of RPMB Units\":\"%u\",\n", (temp & 0x00000003));
	snprintf(s, sizeof(s), ((temp >> 3) & 0x00000007)? "Reserved" : "HMAC SHA-256");
	printf("        \"Authentication Method\":\"%u: %s\",\n", ((temp >> 3) & 0x00000007), s);
	printf("        \"Total Size\":\"%u\",\n", ((temp >> 16) & 0x000000FF));
	printf("        \"Access Size\":\"%u\",\n", ((temp >> 24) & 0x000000FF));
	printf("    },\n");

	vt_convert_data_buffer_to_hex_string(&buf[316], 2, true, s);
	printf("    \"Extended Device Self-test Time\":\"%sh\",\n", s);

	temp = ctrl->dsto;
	printf("    \"Device Self-test Options\":{\n");
	vt_convert_data_buffer_to_hex_string(&buf[318], 1, true, s);
	printf("        \"Value\":\"%sh\",\n", s);
	vt_build_identify_lv2(temp, 0, 1, DSTOtable, true);

	vt_convert_data_buffer_to_hex_string(&buf[319], 1, true, s);
	printf("    \"Firmware Update Granularity\":\"%sh\",\n", s);
	vt_convert_data_buffer_to_hex_string(&buf[320], 1, true, s);
	printf("    \"Keep Alive Support\":\"%sh\",\n", s);

	temp = le16_to_cpu(ctrl->hctma);
	printf("    \"Host Controlled Thermal Management Attributes\":{\n");
	vt_convert_data_buffer_to_hex_string(&buf[322], 2, true, s);
	printf("        \"Value\":\"%sh\",\n", s);
	vt_build_identify_lv2(temp, 0, 1, HCTMAtable, true);

	vt_convert_data_buffer_to_hex_string(&buf[324], 2, true, s);
	printf("    \"Minimum Thermal Management Temperature\":\"%sh\",\n", s);
	vt_convert_data_buffer_to_hex_string(&buf[326], 2, true, s);
	printf("    \"Maximum Thermal Management Temperature\":\"%sh\",\n", s);

	temp = le16_to_cpu(ctrl->sanicap);
	printf("    \"Sanitize Capabilities\":{\n");
	vt_convert_data_buffer_to_hex_string(&buf[328], 2, true, s);
	printf("        \"Value\":\"%sh\",\n", s);
	vt_build_identify_lv2(temp, 0, 3, SANICAPtable, true);

	temp = ctrl->sqes;
	printf("    \"Submission Queue Entry Size\":{\n");
	vt_convert_data_buffer_to_hex_string(&buf[512], 1, true, s);
	printf("        \"Value\":\"%sh\",\n", s);
	printf("        \"Maximum Size\":\"%u\",\n", (temp & 0x0000000F));
	printf("        \"Required Size\":\"%u\",\n", ((temp >> 4) & 0x0000000F));
	printf("    }\n");

	temp = ctrl->cqes;
	printf("    \"Completion Queue Entry Size\":{\n");
	vt_convert_data_buffer_to_hex_string(&buf[513], 1, true, s);
	printf("        \"Value\":\"%sh\",\n", s);
	printf("        \"Maximum Size\":\"%u\",\n", (temp & 0x0000000F));
	printf("        \"Required Size\":\"%u\",\n", ((temp >> 4) & 0x0000000F));
	printf("    }\n");

	vt_convert_data_buffer_to_hex_string(&buf[514], 2, true, s);
	printf("    \"Maximum Outstanding Commands\":\"%sh\",\n", s);
	vt_convert_data_buffer_to_hex_string(&buf[516], 4, true, s);
	printf("    \"Number of Namespaces\":\"%sh\",\n", s);

	temp = le16_to_cpu(ctrl->oncs);
	printf("    \"Optional NVM Command Support\":{\n");
	vt_convert_data_buffer_to_hex_string(&buf[520], 2, true, s);
	printf("        \"Value\":\"%sh\",\n", s);
	vt_build_identify_lv2(temp, 0, 7, ONCStable, true);

	temp = le16_to_cpu(ctrl->fuses);
	printf("    \"Fused Operation Support\":{\n");
	vt_convert_data_buffer_to_hex_string(&buf[522], 2, true, s);
	printf("        \"Value\":\"%sh\",\n", s);
	vt_build_identify_lv2(temp, 0, 1, FUSEStable, true);

	temp = ctrl->fna;
	printf("    \"Format NVM Attributes\":{\n");
	vt_convert_data_buffer_to_hex_string(&buf[524], 1, true, s);
	printf("        \"Value\":\"%sh\",\n", s);
	vt_build_identify_lv2(temp, 0, 3, FNAtable, true);

	temp = ctrl->vwc;
	printf("    \"Volatile Write Cache\":{\n");
	vt_convert_data_buffer_to_hex_string(&buf[525], 1, true, s);
	printf("        \"Value\":\"%sh\",\n", s);
	vt_build_identify_lv2(temp, 0, 1, VWCtable, true);

	vt_convert_data_buffer_to_hex_string(&buf[526], 2, true, s);
	printf("    \"Atomic Write Unit Normal\":\"%sh\",\n", s);
	vt_convert_data_buffer_to_hex_string(&buf[528], 2, true, s);
	printf("    \"Atomic Write Unit Power Fail\":\"%sh\",\n", s);

	temp = ctrl->icsvscc;
	printf("    \"NVM Vendor Specific Command Configuration\":{\n");
	vt_convert_data_buffer_to_hex_string(&buf[530], 1, true, s);
	printf("        \"Value\":\"%sh\",\n", s);
	vt_build_identify_lv2(temp, 0, 1, ICSVSCCtable, true);

	vt_convert_data_buffer_to_hex_string(&buf[532], 2, true, s);
	printf("    \"Atomic Compare 0 Write Unit\":\"%sh\",\n", s);

	temp = le32_to_cpu(ctrl->sgls);
	printf("    \"SGL Support\":{\n");
	vt_convert_data_buffer_to_hex_string(&buf[536], 4, true, s);
	printf("        \"Value\":\"%sh\",\n", s);
	pos = (temp & 0x00000003);
	printf("        \"bit 1:0\":\"%s\",\n", SGLSSubtable[pos]);
	vt_build_identify_lv2(temp, 2, 1, SGLStable, false);
	vt_build_identify_lv2(temp, 16, 5, SGLStable, true);

	vt_convert_data_buffer_to_hex_string(&buf[768], 256, false, s);
	printf("    \"NVM Subsystem NVMe Qualified Name\":\"%s\",\n", s);
	printf("}\n\n");

	vt_build_power_state_descriptor(ctrl);


	printf("\n{\n");
	printf("\"Vendor Specific\":\"\n");
	vt_dump_hex_data(&buf[3072], 1024);
	printf("\"}\n");
}

static int vt_save_smart_to_vtview_log(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	int ret, err = 0;
	long int total_time = 0;
	long int freq_time = 0;
	long int cur_time = 0;
	long int remain_time = 0;
	long int start_time = 0;
	long int end_time = 0;
	char path[256] = "";
	char *desc = "Save SMART data into log file with format that is easy to analyze (comma delimited). Maximum log file will be 4K.\n\n"
		"Typical usages:\n\n"
		"Temperature characterization: \n"
		"\tvirtium save-smart-to-vtview-log /dev/yourDevice --run-time=100 --record-frequency=0.25 --test-name=burn-in-at-(-40)\n\n"
		"Endurance testing : \n"
		"\tvirtium save-smart-to-vtview-log /dev/yourDevice --run-time=100 --record-frequency=1 --test-name=Endurance-test-JEDEG-219-workload\n\n"
		"Just logging :\n"
		"\tvirtium save-smart-to-vtview-log /dev/yourDevice";

	const char *run_time = "(optional) Number of hours to log data (default = 20 hours)";
	const char *freq = "(optional) How often you want to log SMART data (0.25 = 15' , 0.5 = 30' , 1 = 1 hour, 2 = 2 hours, etc.). Default = 10 hours.";
	const char *output_file = "(optional) Name of the log file (give it a name that easy for you to remember what the test is). You can leave it blank too, we will take care it for you.";
	const char *test_name = "(optional) Name of the test you are doing. We use this as part of the name of the log file.";
	struct nvme_dev *dev;

	struct vtview_save_log_settings cfg = {
		.run_time_hrs = 20,
		.log_record_frequency_hrs = 10,
		.output_file = NULL,
		.test_name = NULL,
	};

	OPT_ARGS(opts) = {
		OPT_DOUBLE("run-time",  'r', &cfg.run_time_hrs,             run_time),
		OPT_DOUBLE("freq",      'f', &cfg.log_record_frequency_hrs, freq),
		OPT_FILE("output-file", 'o', &cfg.output_file,              output_file),
		OPT_STRING("test-name", 'n', "NAME", &cfg.test_name,        test_name),
		OPT_END()
	};

	vt_generate_vtview_log_file_name(vt_default_log_file_name);

	if (argc >= 2) {
		if (strlen(argv[1]) > sizeof(path) - 1) {
			printf("Filename too long\n");
			return -1;
		}
		strcpy(path, argv[1]);
	}

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err) {
		printf("Error parse and open (err = %d)\n", err);
		return err;
	}

	printf("Running...\n");
	printf("Collecting data for device %s\n", path);
	printf("Running for %lf hour(s)\n", cfg.run_time_hrs);
	printf("Logging SMART data for every %lf hour(s)\n", cfg.log_record_frequency_hrs);

	ret = vt_update_vtview_log_header(dev_fd(dev), path, &cfg);
	if (ret) {
		err = EINVAL;
		dev_close(dev);
		return (err);
	}

	total_time = cfg.run_time_hrs * (float)HOUR_IN_SECONDS;
	freq_time = cfg.log_record_frequency_hrs * (float)HOUR_IN_SECONDS;

	if(freq_time == 0)
		freq_time = 1;

	start_time = time(NULL);
	end_time = start_time + total_time;

	fflush(stdout);

	while (1) {
		cur_time = time(NULL);
		if(cur_time >= end_time)
			break;

		ret = vt_add_entry_to_log(dev_fd(dev), path, &cfg);
		if (ret) {
			printf("Cannot update driver log\n");
			break;
		}

		remain_time = end_time - cur_time;
		freq_time = MIN2(freq_time, remain_time);
		sleep(freq_time);
		fflush(stdout);
	}

	dev_close(dev);
	return (err);
}

static int vt_show_identify(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	int ret, err = 0;
	struct nvme_id_ctrl ctrl;
	struct nvme_dev *dev;
	char *desc = "Parse identify data to json format\n\n"
		"Typical usages:\n\n"
		"virtium show-identify /dev/yourDevice\n";

	OPT_ARGS(opts) = {
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err) {
		printf("Error parse and open (err = %d)\n", err);
		return err;
	}

	ret = nvme_identify_ctrl(dev_fd(dev), &ctrl);
	if (ret) {
		printf("Cannot read identify device\n");
		dev_close(dev);
		return (-1);
	}

	vt_process_string(ctrl.sn, sizeof(ctrl.sn));
	vt_process_string(ctrl.mn, sizeof(ctrl.mn));
	vt_parse_detail_identify(&ctrl);

	dev_close(dev);
	return (err);
}
   070701015D6C67000081A4000003E80000006400000001642C0FB50000032D000000000000004A00000000000000000000002800000000nvme-cli/plugins/virtium/virtium-nvme.h   /* SPDX-License-Identifier: GPL-2.0-or-later */
#undef CMD_INC_FILE
#define CMD_INC_FILE plugins/virtium/virtium-nvme

#if !defined(VIRTIUM_NVME) || defined(CMD_HEADER_MULTI_READ)
#define VIRTIUM_NVME

#include "cmd.h"
#include "plugin.h"

PLUGIN(NAME("virtium", "Virtium vendor specific extensions", NVME_VERSION),
    COMMAND_LIST(
            ENTRY("save-smart-to-vtview-log", "Periodically save smart attributes into a log file.\n\
                             The data in this log file can be analyzed using excel or using Virtiumâ€™s vtView.\n\
                             Visit vtView.virtium.com to see full potential uses of the data", vt_save_smart_to_vtview_log)
            ENTRY("show-identify", "Shows detail features and current settings", vt_show_identify)
	)
);

#endif

#include "define_cmd.h"
   070701015D6C6B000081A4000003E80000006400000001642C0FB5000010A5000000000000004A00000000000000000000002100000000nvme-cli/plugins/wdc/wdc-utils.c  // SPDX-License-Identifier: GPL-2.0-or-later
/*
 * Copyright (c) 2017-2018 Western Digital Corporation or its affiliates.
 *
 * 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 Street, Fifth Floor, Boston,
 * MA  02110-1301, USA.
 *
 *   Author: Jeff Lien <jeff.lien@wdc.com>,
 */

#include <errno.h>
#include <string.h>
#include <unistd.h>
#include <time.h>
#include "wdc-utils.h"

int wdc_UtilsSnprintf(char *buffer, unsigned int sizeOfBuffer, const char *format, ...)
{
	int res = 0;
	va_list vArgs;

	va_start(vArgs, format);
	res = vsnprintf(buffer, sizeOfBuffer, format, vArgs);
	va_end(vArgs);

	return res;
}

void wdc_UtilsDeleteCharFromString(char* buffer, int buffSize, char charToRemove)
{
	int i = 0;
	int count = 0;

	if (!buffer || !buffSize)
		return;

	/*
	 * Traverse the given string. If current character is not charToRemove,
	 * then place it at index count++
	 */
	for (i = 0; ((i < buffSize) && (buffer[i] != '\0')); i++) {
		if (buffer[i] != charToRemove)
			buffer[count++] = buffer[i];
	}
	buffer[count] = '\0';
}

int wdc_UtilsGetTime(PUtilsTimeInfo timeInfo)
{
	time_t currTime;
	struct tm currTimeInfo;

	if(!timeInfo)
		return WDC_STATUS_INVALID_PARAMETER;

	tzset();
	time(&currTime);
	localtime_r(&currTime, &currTimeInfo);

	timeInfo->year			=  currTimeInfo.tm_year + 1900;
	timeInfo->month			=  currTimeInfo.tm_mon + 1;
	timeInfo->dayOfWeek		=  currTimeInfo.tm_wday;
	timeInfo->dayOfMonth		=  currTimeInfo.tm_mday;
	timeInfo->hour			=  currTimeInfo.tm_hour;
	timeInfo->minute		=  currTimeInfo.tm_min;
	timeInfo->second		=  currTimeInfo.tm_sec;
	timeInfo->msecs			=  0;
	timeInfo->isDST			=  currTimeInfo.tm_isdst;
#if defined(__GLIBC__) && !defined(__UCLIBC__) && !defined(__MUSL__)
	timeInfo->zone			= -currTimeInfo.tm_gmtoff / 60;
#else
	timeInfo->zone 			= -1 * (timezone / SECONDS_IN_MIN);
#endif

	return WDC_STATUS_SUCCESS;
}

int wdc_UtilsCreateDir(char *path)
{
	int retStatus;
	int status = WDC_STATUS_SUCCESS;

	if  (!path )
		return WDC_STATUS_INVALID_PARAMETER;

	retStatus = mkdir(path, 0x999);
	if (retStatus < 0) {
		if (errno == EEXIST)
			status = WDC_STATUS_DIR_ALREADY_EXISTS;
		else if (errno == ENOENT)
			status = WDC_STATUS_PATH_NOT_FOUND;
		else
			status = WDC_STATUS_CREATE_DIRECTORY_FAILED;
	}

	return status;
}

int wdc_WriteToFile(char *fileName, char *buffer, unsigned int bufferLen)
{
	int          status = WDC_STATUS_SUCCESS;
	FILE         *file;
	size_t       bytesWritten = 0;

	file = fopen(fileName, "ab+");
	if (!file) {
		status = WDC_STATUS_UNABLE_TO_OPEN_FILE;
		goto end;
	}

	bytesWritten = fwrite(buffer, 1, bufferLen, file);
	if (bytesWritten != bufferLen)
		status = WDC_STATUS_UNABLE_TO_WRITE_ALL_DATA;

end:
	if(file)
		fclose(file);
	return status;
}

/**
 * Compares the strings ignoring their cases.
 *
 * @param pcSrc Points to a null terminated string for comapring.
 * @param pcDst Points to a null terminated string for comapring.
 *
 * @returns zero if the string matches or
 *          1 if the pcSrc string is lexically higher than pcDst or
 *         -1 if the pcSrc string is lexically lower than pcDst.
 */
int wdc_UtilsStrCompare(char *pcSrc, char *pcDst)
{
	while ((toupper(*pcSrc) == toupper(*pcDst)) && (*pcSrc != '\0')) {
		pcSrc++;
		pcDst++;
	}
	return *pcSrc - *pcDst;
}

void wdc_StrFormat(char *formatter, size_t fmt_sz, char *tofmt, size_t tofmtsz)
{

	fmt_sz = snprintf(formatter,fmt_sz, "%-*.*s",
		 (int)tofmtsz, (int)tofmtsz, tofmt);
	/* trim() the obnoxious trailing white lines */
	while (fmt_sz) {
		if (formatter[fmt_sz - 1] != ' ' && formatter[fmt_sz - 1] != '\0') {
			formatter[fmt_sz] = '\0';
			break;
		}
		fmt_sz--;
	}
}

   070701015D6C6C000081A4000003E80000006400000001642C0FB500000B6F000000000000004A00000000000000000000002100000000nvme-cli/plugins/wdc/wdc-utils.h  /* SPDX-License-Identifier: GPL-2.0-or-later */
/*
 * Copyright (c) 2017-2018 Western Digital Corporation or its affiliates.
 *
 * 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 Street, Fifth Floor, Boston,
 * MA  02110-1301, USA.
 *
 *   Author: Jeff Lien <jeff.lien@wdc.com>,
 */

#include <stdio.h>
#include <ctype.h>
#include <stdarg.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/types.h>
#include <assert.h>
#include <time.h>
#include <sys/time.h>
#include <sys/stat.h>

#include <string.h>
#include <unistd.h>

/* Create Dir Command Status */
#define WDC_STATUS_SUCCESS                		  			0
#define WDC_STATUS_FAILURE   					 			-1
#define WDC_STATUS_INSUFFICIENT_MEMORY           			-2
#define WDC_STATUS_INVALID_PARAMETER       		 			-3
#define WDC_STATUS_FILE_SIZE_ZERO               			-27
#define WDC_STATUS_UNABLE_TO_WRITE_ALL_DATA 				-34
#define WDC_STATUS_DIR_ALREADY_EXISTS      					-36
#define WDC_STATUS_PATH_NOT_FOUND          					-37
#define WDC_STATUS_CREATE_DIRECTORY_FAILED 					-38
#define WDC_STATUS_DELETE_DIRECTORY_FAILED 					-39
#define WDC_STATUS_UNABLE_TO_OPEN_FILE 						-40
#define WDC_STATUS_UNABLE_TO_OPEN_ZIP_FILE             		-41
#define WDC_STATUS_UNABLE_TO_ARCHIVE_EXCEEDED_FILES_LIMIT  	-256
#define WDC_STATUS_NO_DATA_FILE_AVAILABLE_TO_ARCHIVE  		-271

#define WDC_NVME_FIRMWARE_REV_LEN           9        /* added 1 for end delimiter */
#define WDC_SERIAL_NO_LEN                   20
#define SECONDS_IN_MIN   					60
#define MAX_PATH_LEN       					256

typedef struct _UtilsTimeInfo
{
	unsigned int year;
	unsigned int month;
	unsigned int dayOfWeek;
	unsigned int dayOfMonth;
	unsigned int hour;
	unsigned int minute;
	unsigned int second;
	unsigned int msecs;
	unsigned char isDST; /*0 or 1 */
    int      zone; /* Zone value like +530 or -300 */
} UtilsTimeInfo, *PUtilsTimeInfo;

int wdc_UtilsSnprintf(char *buffer, unsigned int sizeOfBuffer, const char *format, ...);
void wdc_UtilsDeleteCharFromString(char* buffer, int buffSize, char charToRemove);
int wdc_UtilsGetTime(PUtilsTimeInfo timeInfo);
int wdc_UtilsStrCompare(char *pcSrc, char *pcDst);
int wdc_UtilsCreateDir(char *path);
int wdc_WriteToFile(char *fileName, char *buffer, unsigned int bufferLen);
void wdc_StrFormat(char *formatter, size_t fmt_sz, char *tofmt, size_t tofmtsz);

 070701015D6E6E000081A4000003E80000006400000001642C0FB60005D0C8000000000000004A00000000000000000000002000000000nvme-cli/plugins/wdc/wdc-nvme.c   // SPDX-License-Identifier: GPL-2.0-or-later
/*
 * Copyright (c) 2015-2018 Western Digital Corporation or its affiliates.
 *
 * 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 Street, Fifth Floor, Boston,
 * MA  02110-1301, USA.
 *
 *   Author: Chaitanya Kulkarni <chaitanya.kulkarni@hgst.com>,
 *           Dong Ho <dong.ho@hgst.com>,
 *           Jeff Lien <jeff.lien@wdc.com>
 *   	     Brandon Paupore <brandon.paupore@wdc.com>
 */
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <inttypes.h>
#include <errno.h>
#include <limits.h>
#include <fcntl.h>
#include <unistd.h>

#include "common.h"
#include "nvme.h"
#include "libnvme.h"
#include "plugin.h"
#include "linux/types.h"
#include "util/types.h"
#include "nvme-print.h"

#define CREATE_CMD
#include "wdc-nvme.h"
#include "wdc-utils.h"

#define WRITE_SIZE	(sizeof(__u8) * 4096)

#define WDC_NVME_SUBCMD_SHIFT				8

#define WDC_NVME_LOG_SIZE_DATA_LEN			0x08
#define WDC_NVME_LOG_SIZE_HDR_LEN			0x08

/* Enclosure */
#define WDC_OPENFLEX_MI_DEVICE_MODEL		"OpenFlex"
#define WDC_RESULT_MORE_DATA				0x80000000
#define WDC_RESULT_NOT_AVAILABLE			0x7FFFFFFF

/* Device Config */
#define WDC_NVME_VID					0x1c58
#define WDC_NVME_VID_2					0x1b96
#define WDC_NVME_SNDK_VID				0x15b7

#define WDC_NVME_SN100_DEV_ID				0x0003
#define WDC_NVME_SN200_DEV_ID				0x0023
#define WDC_NVME_SN630_DEV_ID				0x2200
#define WDC_NVME_SN630_DEV_ID_1				0x2201
#define WDC_NVME_SN840_DEV_ID				0x2300
#define WDC_NVME_SN840_DEV_ID_1				0x2500
#define WDC_NVME_SN640_DEV_ID				0x2400
#define WDC_NVME_SN640_DEV_ID_1				0x2401
#define WDC_NVME_SN640_DEV_ID_2				0x2402
#define WDC_NVME_SN640_DEV_ID_3             0x2404
#define WDC_NVME_ZN540_DEV_ID               0x2600
#define WDC_NVME_SN540_DEV_ID               0x2610
#define WDC_NVME_SN650_DEV_ID				0x2700
#define WDC_NVME_SN650_DEV_ID_1             0x2701
#define WDC_NVME_SN650_DEV_ID_2             0x2702
#define WDC_NVME_SN650_DEV_ID_3             0x2720
#define WDC_NVME_SN650_DEV_ID_4             0x2721
#define WDC_NVME_SN655_DEV_ID               0x2722
#define WDC_NVME_SN860_DEV_ID               0x2730
#define WDC_NVME_SN660_DEV_ID               0x2704

/* This id's are no longer supported, delete ?? */
#define WDC_NVME_SN550_DEV_ID               0x2708
#define WDC_NVME_SN560_DEV_ID_1             0x2712
#define WDC_NVME_SN560_DEV_ID_2             0x2713
#define WDC_NVME_SN560_DEV_ID_3             0x2714

#define WDC_NVME_SXSLCL_DEV_ID				0x2001
#define WDC_NVME_SN520_DEV_ID				0x5003
#define WDC_NVME_SN520_DEV_ID_1				0x5004
#define WDC_NVME_SN520_DEV_ID_2				0x5005
#define WDC_NVME_SN530_DEV_ID				0x5009
#define WDC_NVME_SN720_DEV_ID				0x5002
#define WDC_NVME_SN730A_DEV_ID				0x5006
#define WDC_NVME_SN740_DEV_ID				0x5015
#define WDC_NVME_SN740_DEV_ID_1 			0x5016
#define WDC_NVME_SN740_DEV_ID_2 			0x5017
#define WDC_NVME_SN740_DEV_ID_3 			0x5025
#define WDC_NVME_SN340_DEV_ID				0x500d
#define WDC_NVME_ZN350_DEV_ID				0x5010
#define WDC_NVME_ZN350_DEV_ID_1 			0x5018
#define WDC_NVME_SN810_DEV_ID				0x5011
#define WDC_NVME_SN820CL_DEV_ID		        0x5037

#define WDC_DRIVE_CAP_CAP_DIAG				0x0000000000000001
#define WDC_DRIVE_CAP_INTERNAL_LOG			0x0000000000000002
#define WDC_DRIVE_CAP_C1_LOG_PAGE			0x0000000000000004
#define WDC_DRIVE_CAP_CA_LOG_PAGE			0x0000000000000008
#define WDC_DRIVE_CAP_D0_LOG_PAGE			0x0000000000000010
#define WDC_DRIVE_CAP_DRIVE_STATUS			0x0000000000000020
#define WDC_DRIVE_CAP_CLEAR_ASSERT			0x0000000000000040
#define WDC_DRIVE_CAP_CLEAR_PCIE			0x0000000000000080
#define WDC_DRIVE_CAP_RESIZE				0x0000000000000100
#define WDC_DRIVE_CAP_NAND_STATS			0x0000000000000200
#define WDC_DRIVE_CAP_DRIVE_LOG             0x0000000000000400
#define WDC_DRIVE_CAP_CRASH_DUMP            0x0000000000000800
#define WDC_DRIVE_CAP_PFAIL_DUMP            0x0000000000001000
#define WDC_DRIVE_CAP_FW_ACTIVATE_HISTORY   0x0000000000002000
#define WDC_DRIVE_CAP_CLEAR_FW_ACT_HISTORY  0x0000000000004000
#define WDC_DRVIE_CAP_DISABLE_CTLR_TELE_LOG 0x0000000000008000
#define WDC_DRIVE_CAP_REASON_ID             0x0000000000010000
#define WDC_DRIVE_CAP_LOG_PAGE_DIR          0x0000000000020000
#define WDC_DRIVE_CAP_NS_RESIZE             0x0000000000040000
#define WDC_DRIVE_CAP_INFO                  0x0000000000080000
#define WDC_DRIVE_CAP_C0_LOG_PAGE           0x0000000000100000
#define WDC_DRIVE_CAP_TEMP_STATS            0x0000000000200000
#define WDC_DRIVE_CAP_VUC_CLEAR_PCIE        0x0000000000400000
#define WDC_DRIVE_CAP_VU_FID_CLEAR_PCIE     0x0000000000800000
#define WDC_DRIVE_CAP_FW_ACTIVATE_HISTORY_C2        0x0000000001000000
#define WDC_DRIVE_CAP_VU_FID_CLEAR_FW_ACT_HISTORY	0x0000000002000000
#define WDC_DRIVE_CAP_CLOUD_SSD_VERSION		0x0000000004000000
#define WDC_DRIVE_CAP_PCIE_STATS			0x0000000008000000
#define WDC_DRIVE_CAP_HW_REV_LOG_PAGE		0x0000000010000000
#define WDC_DRIVE_CAP_C3_LOG_PAGE			0x0000000020000000
#define WDC_DRIVE_CAP_CLOUD_BOOT_SSD_VERSION		0x0000000040000000
#define WDC_DRIVE_CAP_CLOUD_LOG_PAGE		0x0000000080000000

#define WDC_DRIVE_CAP_DRIVE_ESSENTIALS      0x0000000100000000
#define WDC_DRIVE_CAP_DUI_DATA				0x0000000200000000
#define WDC_SN730B_CAP_VUC_LOG				0x0000000400000000
#define WDC_DRIVE_CAP_DUI    				0x0000000800000000
#define WDC_DRIVE_CAP_PURGE  				0x0000001000000000
#define WDC_DRIVE_CAP_OCP_C1_LOG_PAGE		0x0000002000000000
#define WDC_DRIVE_CAP_OCP_C4_LOG_PAGE		0x0000004000000000
#define WDC_DRIVE_CAP_OCP_C5_LOG_PAGE		0x0000008000000000
#define WDC_DRIVE_CAP_DEVICE_WAF            0x0000010000000000
#define WDC_DRIVE_CAP_SMART_LOG_MASK	(WDC_DRIVE_CAP_C0_LOG_PAGE | WDC_DRIVE_CAP_C1_LOG_PAGE | \
                                         WDC_DRIVE_CAP_CA_LOG_PAGE | WDC_DRIVE_CAP_D0_LOG_PAGE)
#define WDC_DRIVE_CAP_CLEAR_PCIE_MASK       (WDC_DRIVE_CAP_CLEAR_PCIE | \
                                             WDC_DRIVE_CAP_VUC_CLEAR_PCIE | \
                                             WDC_DRIVE_CAP_VU_FID_CLEAR_PCIE)
#define WDC_DRIVE_CAP_FW_ACTIVATE_HISTORY_MASK		(WDC_DRIVE_CAP_FW_ACTIVATE_HISTORY | \
        											 WDC_DRIVE_CAP_FW_ACTIVATE_HISTORY_C2)
#define WDC_DRIVE_CAP_CLEAR_FW_ACT_HISTORY_MASK		(WDC_DRIVE_CAP_CLEAR_FW_ACT_HISTORY | \
        											 WDC_DRIVE_CAP_VU_FID_CLEAR_FW_ACT_HISTORY)
#define WDC_DRIVE_CAP_INTERNAL_LOG_MASK	(WDC_DRIVE_CAP_INTERNAL_LOG | WDC_DRIVE_CAP_DUI | \
        								 WDC_DRIVE_CAP_DUI_DATA | WDC_SN730B_CAP_VUC_LOG)
/* SN730 Get Log Capabilities */
#define SN730_NVME_GET_LOG_OPCODE			0xc2
#define SN730_GET_FULL_LOG_LENGTH			0x00080009
#define SN730_GET_KEY_LOG_LENGTH			0x00090009
#define SN730_GET_COREDUMP_LOG_LENGTH			0x00120009
#define SN730_GET_EXTENDED_LOG_LENGTH			0x00420009

#define SN730_GET_FULL_LOG_SUBOPCODE			0x00010009
#define SN730_GET_KEY_LOG_SUBOPCODE			0x00020009
#define SN730_GET_CORE_LOG_SUBOPCODE			0x00030009
#define SN730_GET_EXTEND_LOG_SUBOPCODE			0x00040009
#define SN730_LOG_CHUNK_SIZE				0x1000

/* Customer ID's */
#define WDC_CUSTOMER_ID_GN					0x0001
#define WDC_CUSTOMER_ID_GD					0x0101
#define WDC_CUSTOMER_ID_BD					0x1009

#define WDC_CUSTOMER_ID_0x1005				0x1005

#define WDC_CUSTOMER_ID_0x1004				0x1004
#define WDC_CUSTOMER_ID_0x1008				0x1008
#define WDC_CUSTOMER_ID_0x1304				0x1304
#define WDC_INVALID_CUSTOMER_ID				-1

#define WDC_ALL_PAGE_MASK                   0xFFFF
#define WDC_C0_PAGE_MASK                    0x0001
#define WDC_C1_PAGE_MASK                    0x0002
#define WDC_CA_PAGE_MASK                    0x0004
#define WDC_D0_PAGE_MASK                    0x0008

/* Drive Resize */
#define WDC_NVME_DRIVE_RESIZE_OPCODE			0xCC
#define WDC_NVME_DRIVE_RESIZE_CMD			0x03
#define WDC_NVME_DRIVE_RESIZE_SUBCMD			0x01

/* Namespace Resize  */
#define WDC_NVME_NAMESPACE_RESIZE_OPCODE    0xFB

/* Drive Info */
#define WDC_NVME_DRIVE_INFO_OPCODE          0xC6
#define WDC_NVME_DRIVE_INFO_CMD             0x22
#define WDC_NVME_DRIVE_INFO_SUBCMD          0x06

/* VS PCIE Stats */
#define WDC_NVME_PCIE_STATS_OPCODE          0xD1

/* Capture Diagnostics */
#define WDC_NVME_CAP_DIAG_HEADER_TOC_SIZE		WDC_NVME_LOG_SIZE_DATA_LEN
#define WDC_NVME_CAP_DIAG_OPCODE			0xE6
#define WDC_NVME_CAP_DIAG_CMD_OPCODE			0xC6
#define WDC_NVME_CAP_DIAG_SUBCMD			0x00
#define WDC_NVME_CAP_DIAG_CMD				0x00

#define WDC_NVME_CRASH_DUMP_TYPE			1
#define WDC_NVME_PFAIL_DUMP_TYPE			2

/* Capture Device Unit Info */
#define WDC_NVME_CAP_DUI_HEADER_SIZE			0x400
#define WDC_NVME_CAP_DUI_OPCODE				0xFA
#define WDC_NVME_CAP_DUI_DISABLE_IO         0x01
#define WDC_NVME_DUI_MAX_SECTION			0x3A
#define WDC_NVME_DUI_MAX_SECTION_V2			0x26
#define WDC_NVME_DUI_MAX_SECTION_V3			0x23
#define WDC_NVME_DUI_MAX_DATA_AREA			0x05
#define WDC_NVME_SN730_SECTOR_SIZE		    512

/* Telemtery types for vs-internal-log command  */
#define WDC_TELEMETRY_TYPE_NONE             0x0
#define WDC_TELEMETRY_TYPE_HOST             0x1
#define WDC_TELEMETRY_TYPE_CONTROLLER       0x2
#define WDC_TELEMETRY_HEADER_LENGTH         512
#define WDC_TELEMETRY_BLOCK_SIZE            512

/* Crash dump */
#define WDC_NVME_CRASH_DUMP_SIZE_DATA_LEN		WDC_NVME_LOG_SIZE_DATA_LEN
#define WDC_NVME_CRASH_DUMP_SIZE_NDT			0x02
#define WDC_NVME_CRASH_DUMP_SIZE_CMD			0x20
#define WDC_NVME_CRASH_DUMP_SIZE_SUBCMD			0x03

#define WDC_NVME_CRASH_DUMP_OPCODE			WDC_NVME_CAP_DIAG_CMD_OPCODE
#define WDC_NVME_CRASH_DUMP_CMD				0x20
#define WDC_NVME_CRASH_DUMP_SUBCMD			0x04

/* PFail Crash dump */
#define WDC_NVME_PF_CRASH_DUMP_SIZE_DATA_LEN		WDC_NVME_LOG_SIZE_HDR_LEN
#define WDC_NVME_PF_CRASH_DUMP_SIZE_NDT			0x02
#define WDC_NVME_PF_CRASH_DUMP_SIZE_CMD			0x20
#define WDC_NVME_PF_CRASH_DUMP_SIZE_SUBCMD		0x05

#define WDC_NVME_PF_CRASH_DUMP_OPCODE			WDC_NVME_CAP_DIAG_CMD_OPCODE
#define WDC_NVME_PF_CRASH_DUMP_CMD			0x20
#define WDC_NVME_PF_CRASH_DUMP_SUBCMD			0x06

/* Drive Log */
#define WDC_NVME_DRIVE_LOG_SIZE_OPCODE			 WDC_NVME_CAP_DIAG_CMD_OPCODE
#define WDC_NVME_DRIVE_LOG_SIZE_DATA_LEN		WDC_NVME_LOG_SIZE_DATA_LEN
#define WDC_NVME_DRIVE_LOG_SIZE_NDT			0x02
#define WDC_NVME_DRIVE_LOG_SIZE_CMD			0x20
#define WDC_NVME_DRIVE_LOG_SIZE_SUBCMD			0x01

#define WDC_NVME_DRIVE_LOG_OPCODE			WDC_NVME_CAP_DIAG_CMD_OPCODE
#define WDC_NVME_DRIVE_LOG_CMD				0x20
#define WDC_NVME_DRIVE_LOG_SUBCMD			0x00

/* Purge and Purge Monitor */
#define WDC_NVME_PURGE_CMD_OPCODE			0xDD
#define WDC_NVME_PURGE_MONITOR_OPCODE			0xDE
#define WDC_NVME_PURGE_MONITOR_DATA_LEN			0x2F
#define WDC_NVME_PURGE_MONITOR_CMD_CDW10		0x0000000C
#define WDC_NVME_PURGE_MONITOR_TIMEOUT			0x7530
#define WDC_NVME_PURGE_CMD_SEQ_ERR			0x0C
#define WDC_NVME_PURGE_INT_DEV_ERR			0x06

#define WDC_NVME_PURGE_STATE_IDLE			0x00
#define WDC_NVME_PURGE_STATE_DONE			0x01
#define WDC_NVME_PURGE_STATE_BUSY			0x02
#define WDC_NVME_PURGE_STATE_REQ_PWR_CYC		0x03
#define WDC_NVME_PURGE_STATE_PWR_CYC_PURGE		0x04

/* Clear dumps */
#define WDC_NVME_CLEAR_DUMP_OPCODE			0xFF
#define WDC_NVME_CLEAR_CRASH_DUMP_CMD			0x03
#define WDC_NVME_CLEAR_CRASH_DUMP_SUBCMD		0x05
#define WDC_NVME_CLEAR_PF_CRASH_DUMP_SUBCMD		0x06

/* Clear FW Activate History */
#define WDC_NVME_CLEAR_FW_ACT_HIST_OPCODE       0xC6
#define WDC_NVME_CLEAR_FW_ACT_HIST_CMD			0x23
#define WDC_NVME_CLEAR_FW_ACT_HIST_SUBCMD		0x05
#define WDC_NVME_CLEAR_FW_ACT_HIST_VU_FID		0xC1

/* Additional Smart Log */
#define WDC_ADD_LOG_BUF_LEN				0x4000
#define WDC_NVME_ADD_LOG_OPCODE				0xC1
#define WDC_GET_LOG_PAGE_SSD_PERFORMANCE		0x37
#define WDC_NVME_GET_STAT_PERF_INTERVAL_LIFETIME	0x0F

/* C2 Log Page */
#define WDC_NVME_GET_DEV_MGMNT_LOG_PAGE_OPCODE		0xC2
#define WDC_NVME_GET_DEV_MGMNT_LOG_PAGE_OPCODE_C8       0xC8
#define WDC_C2_LOG_BUF_LEN				0x1000
#define WDC_C2_LOG_PAGES_SUPPORTED_ID			0x08
#define WDC_C2_CUSTOMER_ID_ID					0x15
#define WDC_C2_THERMAL_THROTTLE_STATUS_ID		0x18
#define WDC_C2_ASSERT_DUMP_PRESENT_ID			0x19
#define WDC_C2_USER_EOL_STATUS_ID			0x1A
#define WDC_C2_USER_EOL_STATE_ID			0x1C
#define WDC_C2_SYSTEM_EOL_STATE_ID			0x1D
#define WDC_C2_FORMAT_CORRUPT_REASON_ID			0x1E
#define WDC_EOL_STATUS_NORMAL				cpu_to_le32(0x00000000)
#define WDC_EOL_STATUS_END_OF_LIFE			cpu_to_le32(0x00000001)
#define WDC_EOL_STATUS_READ_ONLY			cpu_to_le32(0x00000002)
#define WDC_ASSERT_DUMP_NOT_PRESENT			cpu_to_le32(0x00000000)
#define WDC_ASSERT_DUMP_PRESENT				cpu_to_le32(0x00000001)
#define WDC_THERMAL_THROTTLING_OFF			cpu_to_le32(0x00000000)
#define WDC_THERMAL_THROTTLING_ON			cpu_to_le32(0x00000001)
#define WDC_THERMAL_THROTTLING_UNAVAILABLE		cpu_to_le32(0x00000002)
#define WDC_FORMAT_NOT_CORRUPT				cpu_to_le32(0x00000000)
#define WDC_FORMAT_CORRUPT_FW_ASSERT			cpu_to_le32(0x00000001)
#define WDC_FORMAT_CORRUPT_UNKNOWN			cpu_to_le32(0x000000FF)

/* CA Log Page */
#define WDC_NVME_GET_DEVICE_INFO_LOG_OPCODE		0xCA
#define WDC_FB_CA_LOG_BUF_LEN					0x80
#define WDC_BD_CA_LOG_BUF_LEN					0xA0    /* Added 4 padding bytes to resolve build warning messages */

/* C0 EOL Status Log Page */
#define WDC_NVME_GET_EOL_STATUS_LOG_OPCODE		0xC0
#define WDC_NVME_EOL_STATUS_LOG_LEN				0x200
#define WDC_NVME_SMART_CLOUD_ATTR_LEN			0x200

/* C0 SMART Cloud Attributes Log Page*/
#define WDC_NVME_GET_SMART_CLOUD_ATTR_LOG_ID    0xC0

/* CB - FW Activate History Log Page */
#define WDC_NVME_GET_FW_ACT_HISTORY_LOG_ID      0xCB
#define WDC_FW_ACT_HISTORY_LOG_BUF_LEN          0x3d0

/* C2 - FW Activation History Log Page */
#define WDC_NVME_GET_FW_ACT_HISTORY_C2_LOG_ID   0xC2
#define WDC_FW_ACT_HISTORY_C2_LOG_BUF_LEN       0x1000
#define WDC_MAX_NUM_ACT_HIST_ENTRIES            20
#define WDC_C2_GUID_LENGTH                      16

/* C3 Latency Monitor Log Page */
#define WDC_LATENCY_MON_LOG_BUF_LEN             0x200
#define WDC_LATENCY_MON_LOG_ID                  0xC3
#define WDC_LATENCY_MON_VERSION                 0x0001

#define WDC_C3_GUID_LENGTH                      16
static __u8 wdc_lat_mon_guid[WDC_C3_GUID_LENGTH]    = { 0x92, 0x7a, 0xc0, 0x8c, 0xd0, 0x84, 0x6c, 0x9c,
		0x70, 0x43, 0xe6, 0xd4, 0x58, 0x5e, 0xd4, 0x85 };

/* D0 Smart Log Page */
#define WDC_NVME_GET_VU_SMART_LOG_OPCODE		0xD0
#define WDC_NVME_VU_SMART_LOG_LEN				0x200

/* Log Page Directory defines  */
#define NVME_LOG_PERSISTENT_EVENT               0x0D
#define WDC_LOG_ID_C0                           0xC0
#define WDC_LOG_ID_C1                           0xC1
#define WDC_LOG_ID_C2                           WDC_NVME_GET_DEV_MGMNT_LOG_PAGE_OPCODE
#define WDC_LOG_ID_C3                           0xC3
#define WDC_LOG_ID_C4                           0xC4
#define WDC_LOG_ID_C5                           0xC5
#define WDC_LOG_ID_C6                           0xC6
#define WDC_LOG_ID_C8                           WDC_NVME_GET_DEV_MGMNT_LOG_PAGE_OPCODE_C8
#define WDC_LOG_ID_CA                           WDC_NVME_GET_DEVICE_INFO_LOG_OPCODE
#define WDC_LOG_ID_CB                           WDC_NVME_GET_FW_ACT_HISTORY_LOG_ID
#define WDC_LOG_ID_D0                           WDC_NVME_GET_VU_SMART_LOG_OPCODE
#define WDC_LOG_ID_D1                           0xD1
#define WDC_LOG_ID_D6                           0xD6
#define WDC_LOG_ID_D7                           0xD7
#define WDC_LOG_ID_D8                           0xD8
#define WDC_LOG_ID_DE                           0xDE
#define WDC_LOG_ID_F0                           0xF0
#define WDC_LOG_ID_F1                           0xF1
#define WDC_LOG_ID_F2                           0xF2
#define WDC_LOG_ID_FA                           0xFA

/* Clear PCIe Correctable Errors */
#define WDC_NVME_CLEAR_PCIE_CORR_OPCODE     WDC_NVME_CAP_DIAG_CMD_OPCODE
#define WDC_NVME_CLEAR_PCIE_CORR_CMD        0x22
#define WDC_NVME_CLEAR_PCIE_CORR_SUBCMD     0x04
#define WDC_NVME_CLEAR_PCIE_CORR_OPCODE_VUC 0xD2
#define WDC_NVME_CLEAR_PCIE_CORR_FEATURE_ID 0xC3
/* Clear Assert Dump Status */
#define WDC_NVME_CLEAR_ASSERT_DUMP_OPCODE		0xD8
#define WDC_NVME_CLEAR_ASSERT_DUMP_CMD			0x03
#define WDC_NVME_CLEAR_ASSERT_DUMP_SUBCMD		0x05

#define WDC_VU_DISABLE_CNTLR_TELEMETRY_OPTION_FEATURE_ID   0xD2

/* Drive Essentials */
#define WDC_DE_DEFAULT_NUMBER_OF_ERROR_ENTRIES		64
#define WDC_DE_GENERIC_BUFFER_SIZE			80
#define WDC_DE_GLOBAL_NSID				0xFFFFFFFF
#define WDC_DE_DEFAULT_NAMESPACE_ID			0x01
#define WDC_DE_PATH_SEPARATOR				"/"
#define WDC_DE_TAR_FILES				"*.bin"
#define WDC_DE_TAR_FILE_EXTN				".tar.gz"
#define WDC_DE_TAR_CMD					"tar -czf"

/* VS NAND Stats */
#define WDC_NVME_NAND_STATS_LOG_ID			0xFB
#define WDC_NVME_NAND_STATS_SIZE			0x200

/* VU Opcodes */
#define WDC_DE_VU_READ_SIZE_OPCODE			0xC0
#define WDC_DE_VU_READ_BUFFER_OPCODE			0xC2
#define WDC_NVME_ADMIN_ENC_MGMT_SND			0xC9
#define WDC_NVME_ADMIN_ENC_MGMT_RCV			0xCA

#define WDC_DE_FILE_HEADER_SIZE				4
#define WDC_DE_FILE_OFFSET_SIZE				2
#define WDC_DE_FILE_NAME_SIZE				32
#define WDC_DE_VU_READ_BUFFER_STANDARD_OFFSET		0x8000
#define WDC_DE_READ_MAX_TRANSFER_SIZE			0x8000

#define WDC_DE_MANUFACTURING_INFO_PAGE_FILE_NAME	"manufacturing_info"  /* Unique log entry page name. */
#define WDC_DE_CORE_DUMP_FILE_NAME			"core_dump"
#define WDC_DE_EVENT_LOG_FILE_NAME			"event_log"
#define WDC_DE_DESTN_SPI				1
#define WDC_DE_DUMPTRACE_DESTINATION			6

#define NVME_ID_CTRL_MODEL_NUMBER_SIZE		40
#define NVME_ID_CTRL_SERIAL_NUMBER_SIZE		20

/* Enclosure log */
#define WDC_NVME_ENC_LOG_SIZE_CHUNK         0x1000
#define WDC_NVME_ENC_NIC_LOG_SIZE           0x400000

/* Enclosure nic crash dump get-log id */
#define WDC_ENC_NIC_CRASH_DUMP_ID_SLOT_1    0xD1
#define WDC_ENC_NIC_CRASH_DUMP_ID_SLOT_2    0xD2
#define WDC_ENC_NIC_CRASH_DUMP_ID_SLOT_3    0xD3
#define WDC_ENC_NIC_CRASH_DUMP_ID_SLOT_4    0xD4
#define WDC_ENC_CRASH_DUMP_ID               0xE4
#define WDC_ENC_LOG_DUMP_ID                 0xE2

typedef enum _NVME_FEATURES_SELECT
{
    FS_CURRENT                      = 0,
    FS_DEFAULT                      = 1,
    FS_SAVED                        = 2,
    FS_SUPPORTED_CAPBILITIES        = 3
} NVME_FEATURES_SELECT;

typedef enum _NVME_FEATURE_IDENTIFIERS
{
    FID_ARBITRATION                                 = 0x01,
    FID_POWER_MANAGEMENT                            = 0x02,
    FID_LBA_RANGE_TYPE                              = 0x03,
    FID_TEMPERATURE_THRESHOLD                       = 0x04,
    FID_ERROR_RECOVERY                              = 0x05,
    FID_VOLATILE_WRITE_CACHE                        = 0x06,
    FID_NUMBER_OF_QUEUES                            = 0x07,
    FID_INTERRUPT_COALESCING                        = 0x08,
    FID_INTERRUPT_VECTOR_CONFIGURATION              = 0x09,
    FID_WRITE_ATOMICITY                             = 0x0A,
    FID_ASYNCHRONOUS_EVENT_CONFIGURATION            = 0x0B,
    FID_AUTONOMOUS_POWER_STATE_TRANSITION           = 0x0C,
/*Below FID's are NVM Command Set Specific*/
    FID_SOFTWARE_PROGRESS_MARKER                    = 0x80,
    FID_HOST_IDENTIFIER                             = 0x81,
    FID_RESERVATION_NOTIFICATION_MASK               = 0x82,
    FID_RESERVATION_PERSISTENCE                     = 0x83
} NVME_FEATURE_IDENTIFIERS;

typedef enum
{
	WDC_DE_TYPE_IDENTIFY            = 0x1,
	WDC_DE_TYPE_SMARTATTRIBUTEDUMP  = 0x2,
	WDC_DE_TYPE_EVENTLOG            = 0x4,
	WDC_DE_TYPE_DUMPTRACE           = 0x8,
	WDC_DE_TYPE_DUMPSNAPSHOT        = 0x10,
	WDC_DE_TYPE_ATA_LOGS            = 0x20,
	WDC_DE_TYPE_SMART_LOGS          = 0x40,
	WDC_DE_TYPE_SCSI_LOGS           = 0x80,
	WDC_DE_TYPE_SCSI_MODE_PAGES     = 0x100,
	WDC_DE_TYPE_NVMe_FEATURES       = 0x200,
	WDC_DE_TYPE_DUMPSMARTERRORLOG3  = 0x400,
	WDC_DE_TYPE_DUMPLOG3E           = 0x800,
	WDC_DE_TYPE_DUMPSCRAM           = 0x1000,
	WDC_DE_TYPE_PCU_LOG             = 0x2000,
	WDC_DE_TYPE_DUMP_ERROR_LOGS     = 0x4000,
	WDC_DE_TYPE_FW_SLOT_LOGS        = 0x8000,
	WDC_DE_TYPE_MEDIA_SETTINGS      = 0x10000,
	WDC_DE_TYPE_SMART_DATA          = 0x20000,
	WDC_DE_TYPE_NVME_SETTINGS       = 0x40000,
	WDC_DE_TYPE_NVME_ERROR_LOGS     = 0x80000,
	WDC_DE_TYPE_NVME_LOGS           = 0x100000,
	WDC_DE_TYPE_UART_LOGS           = 0x200000,
	WDC_DE_TYPE_DLOGS_SPI           = 0x400000,
	WDC_DE_TYPE_DLOGS_RAM           = 0x800000,
	WDC_DE_TYPE_NVME_MANF_INFO      = 0x2000000,
	WDC_DE_TYPE_NONE                = 0x1000000,
	WDC_DE_TYPE_ALL                 = 0xFFFFFFF,
} WDC_DRIVE_ESSENTIAL_TYPE;

#define WDC_C0_GUID_LENGTH              16
#define WDC_SCA_V1_NAND_STATS           0x1
#define WDC_SCA_V1_ALL                  0xF
typedef enum
{
	SCAO_V1_PMUWT              =  0,	/* Physical media units written TLC */
	SCAO_V1_PMUWS              = 16,	/* Physical media units written SLC */
	SCAO_V1_BUNBN              = 32,	/* Bad user nand blocks normalized */
	SCAO_V1_BUNBR              = 34,	/* Bad user nand blocks raw */
	SCAO_V1_XRC                = 40,	/* XOR recovery count */
	SCAO_V1_UREC               = 48,	/* Uncorrectable read error count */
	SCAO_V1_EECE               = 56,	/* End to end corrected errors */
	SCAO_V1_EEDE               = 64,	/* End to end detected errors */
	SCAO_V1_EEUE               = 72,	/* End to end uncorrected errors */
	SCAO_V1_SDPU               = 80,	/* System data percent used */
	SCAO_V1_MNUDEC             = 84,	/* Min User data erase counts (TLC) */
	SCAO_V1_MXUDEC             = 92,	/* Max User data erase counts (TLC) */
	SCAO_V1_AVUDEC             = 100,	/* Average User data erase counts (TLC) */
	SCAO_V1_MNEC               = 108,	/* Min Erase counts (SLC) */
	SCAO_V1_MXEC               = 116,	/* Max Erase counts (SLC) */
	SCAO_V1_AVEC               = 124,	/* Average Erase counts (SLC) */
	SCAO_V1_PFCN               = 132,	/* Program fail count normalized */
	SCAO_V1_PFCR               = 134,	/* Program fail count raw */
	SCAO_V1_EFCN               = 140,	/* Erase fail count normalized */
	SCAO_V1_EFCR               = 142,	/* Erase fail count raw */
	SCAO_V1_PCEC               = 148,	/* PCIe correctable error count */
	SCAO_V1_PFBU               = 156,	/* Percent free blocks (User) */
	SCAO_V1_SVN                = 160,	/* Security Version Number */
	SCAO_V1_PFBS               = 168,	/* Percent free blocks (System) */
	SCAO_V1_DCC                = 172,	/* Deallocate Commands Completed */
	SCAO_V1_TNU                = 188,	/* Total Namespace Utilization   */
	SCAO_V1_FCC                = 196,	/* Format NVM Commands Completed */
	SCAO_V1_BBPG               = 198,	/* Background Back-Pressure Gauge */
	SCAO_V1_SEEC               = 202,	/* Soft ECC error count */
	SCAO_V1_RFSC               = 210,	/* Refresh count */
	SCAO_V1_BSNBN              = 218,	/* Bad system nand blocks normalized */
	SCAO_V1_BSNBR              = 220,	/* Bad system nand blocks raw */
	SCAO_V1_EEST               = 226,	/* Endurance estimate */
	SCAO_V1_TTC                = 242,	/* Thermal throttling count */
	SCAO_V1_UIO                = 244,	/* Unaligned I/O */
	SCAO_V1_PMUR               = 252,	/* Physical media units read */
	SCAO_V1_RTOC               = 268,	/* Read command timeout count */
	SCAO_V1_WTOC               = 272,	/* Write command timeout count */
	SCAO_V1_TTOC               = 276,	/* Trim command timeout count */
	SCAO_V1_PLRC               = 284,	/* PCIe Link Retraining Count */
	SCAO_V1_PSCC               = 292,	/* Power State Change Count */
	SCAO_V1_MAVF               = 300,	/* Boot SSD major version field */
	SCAO_V1_MIVF               = 302,	/* Boot SSD minor version field */
	SCAO_V1_PVF                = 304,	/* Boot SSD point version field */
	SCAO_V1_EVF                = 306,	/* Boot SSD errata version field */
	SCAO_V1_FTLUS              = 308,	/* FTL Unit Size  */
	SCAO_V1_TCGOS              = 312,	/* TCG Ownership Status */

	SCAO_V1_LPV                = 494,	/* Log page version - 0x0001 */
	SCAO_V1_LPG                = 496,	/* Log page GUID */
} SMART_CLOUD_ATTRIBUTE_OFFSETS_V1;

static __u8 ext_smart_guid[WDC_C0_GUID_LENGTH]    = { 0x65, 0x43, 0x88, 0x78, 0xAC, 0xD8, 0x78, 0xA1,
		0x66, 0x42, 0x1E, 0x0F, 0x92, 0xD7, 0x6D, 0xC4 };

typedef struct __attribute__((__packed__)) wdc_nvme_ext_smart_log
{
	__u8  ext_smart_pmuwt[16];			/* 000 Physical media units written TLC */
	__u8  ext_smart_pmuws[16];			/* 016 Physical media units written SLC */
	__u8  ext_smart_bunbc[8];			/* 032 Bad user nand block count */
	__u64 ext_smart_xrc;				/* 040 XOR recovery count */
	__u64 ext_smart_urec;				/* 048 Uncorrectable read error count */
	__u64 ext_smart_eece;				/* 056 End to end corrected errors */
	__u64 ext_smart_eede;				/* 064 End to end detected errors */
	__u64 ext_smart_eeue;				/* 072 End to end uncorrected errors */
	__u8  ext_smart_sdpu;				/* 080 System data percent used */
	__u8  ext_smart_rsvd1[3];			/* 081 reserved */
	__u64 ext_smart_mnudec;				/* 084 Min User data erase counts (TLC) */
	__u64 ext_smart_mxudec;				/* 092 Max User data erase counts (TLC) */
	__u64 ext_smart_avudec;				/* 100 Average User data erase counts (TLC) */
	__u64 ext_smart_mnec;				/* 108 Min Erase counts (SLC) */
	__u64 ext_smart_mxec;				/* 116 Max Erase counts (SLC) */
	__u64 ext_smart_avec;				/* 124 Average Erase counts (SLC) */
	__u8  ext_smart_pfc[8];				/* 132 Program fail count  */
	__u8  ext_smart_efc[8];				/* 140 Erase fail count  */
	__u64 ext_smart_pcec;				/* 148 PCIe correctable error count */
	__u8  ext_smart_pfbu;				/* 156 Percent free blocks (User) */
	__u8  ext_smart_rsvd2[3];			/* 157 reserved */
	__u64 ext_smart_svn;				/* 160 Security Version Number */
	__u8  ext_smart_pfbs;				/* 168 Percent free blocks (System) */
	__u8  ext_smart_rsvd3[3];			/* 169 reserved */
	__u8  ext_smart_dcc[16];			/* 172 Deallocate Commands Completed */
	__u64 ext_smart_tnu; 				/* 188 Total Namespace Utilization   */
	__u16 ext_smart_fcc; 				/* 196 Format NVM Commands Completed */
	__u8  ext_smart_bbpg;				/* 198 Background Back-Pressure Gauge */
	__u8  ext_smart_rsvd4[3];			/* 199 reserved */
	__u64 ext_smart_seec;				/* 202 Soft ECC error count */
	__u64 ext_smart_rfsc;				/* 210 Refresh count */
	__u8  ext_smart_bsnbc[8];			/* 218 Bad system nand block count */
	__u8  ext_smart_eest[16];			/* 226 Endurance estimate */
	__u16 ext_smart_ttc; 				/* 242 Thermal throttling count */
	__u64 ext_smart_uio;				/* 244 Unaligned I/O */
	__u8  ext_smart_pmur[16]; 			/* 252 Physical media units read */
	__u32 ext_smart_rtoc;				/* 268 Read command timeout count */
	__u32 ext_smart_wtoc;				/* 272 Write command timeout count */
	__u32 ext_smart_ttoc;				/* 276 Trim command timeout count */
	__u8  ext_smart_rsvd5[4];			/* 280 reserved */
	__u64 ext_smart_plrc;				/* 284 PCIe Link Retraining Count */
	__u64 ext_smart_pscc;				/* 292 Power State Change Count */
	__u16 ext_smart_maj;				/* 300 Boot SSD major version field */
	__u16 ext_smart_min;				/* 302 Boot SSD minor version field */
	__u16 ext_smart_pt; 				/* 304 Boot SSD point version field */
	__u16 ext_smart_err;				/* 306 Boot SSD errata version field */
	__u32 ext_smart_ftlus;				/* 308 FTL Unit Size  */
	__u32 ext_smart_tcgos;				/* 312 TCG Ownership Status */
	__u8  ext_smart_rsvd6[178];			/* 316 reserved */
	__u16 ext_smart_lpv;				/* 494 Log page version - 0x0001 */
	__u8  ext_smart_lpg[16];			/* 496 Log page GUID */
} wdc_nvme_ext_smart_log;

typedef enum
{
    SCAO_PMUW               =  0,	/* Physical media units written */
    SCAO_PMUR               = 16,	/* Physical media units read */
    SCAO_BUNBR              = 32,	/* Bad user nand blocks raw */
    SCAO_BUNBN              = 38,	/* Bad user nand blocks normalized */
    SCAO_BSNBR              = 40,	/* Bad system nand blocks raw */
    SCAO_BSNBN              = 46,	/* Bad system nand blocks normalized */
    SCAO_XRC                = 48,	/* XOR recovery count */
    SCAO_UREC               = 56,	/* Uncorrectable read error count */
    SCAO_SEEC               = 64,	/* Soft ecc error count */
    SCAO_EECE               = 72,	/* End to end corrected errors */
    SCAO_EEDC               = 76,	/* End to end detected errors */
    SCAO_SDPU               = 80,	/* System data percent used */
    SCAO_RFSC               = 81,	/* Refresh counts */
    SCAO_MXUDEC             = 88,	/* Max User data erase counts */
    SCAO_MNUDEC             = 92,	/* Min User data erase counts */
    SCAO_NTTE               = 96,	/* Number of Thermal throttling events */
    SCAO_CTS                = 97,	/* Current throttling status */
    SCAO_EVF                = 98,      /* Errata Version Field */
    SCAO_PVF                = 99,      /* Point Version Field */
    SCAO_MIVF               = 101,     /* Minor Version Field */
    SCAO_MAVF               = 103,     /* Major Version Field */
    SCAO_PCEC               = 104,	/* PCIe correctable error count */
    SCAO_ICS                = 112,	/* Incomplete shutdowns */
    SCAO_PFB                = 120,	/* Percent free blocks */
    SCAO_CPH                = 128,	/* Capacitor health */
    SCAO_NEV                = 130,     /* NVMe Errata Version */
    SCAO_UIO                = 136,	/* Unaligned I/O */
    SCAO_SVN                = 144,	/* Security Version Number */
    SCAO_NUSE               = 152,	/* NUSE - Namespace utilization */
    SCAO_PSC                = 160,	/* PLP start count */
    SCAO_EEST               = 176,	/* Endurance estimate */
    SCAO_PLRC               = 192,     /* PCIe Link Retraining Count */
    SCAO_PSCC               = 200,	/* Power State Change Count */
    SCAO_LPV                = 494,	/* Log page version */
    SCAO_LPG                = 496,	/* Log page GUID */
} SMART_CLOUD_ATTRIBUTE_OFFSETS_V3;

static __u8 scao_guid[WDC_C0_GUID_LENGTH]    = { 0xC5, 0xAF, 0x10, 0x28, 0xEA, 0xBF, 0xF2, 0xA4,
		0x9C, 0x4F, 0x6F, 0x7C, 0xC9, 0x14, 0xD5, 0xAF };

typedef enum
{
    EOL_RBC                 = 76,	/* Realloc Block Count */
    EOL_ECCR                = 80,	/* ECC Rate */
    EOL_WRA                 = 84,	/* Write Amp */
    EOL_PLR                 = 88,	/* Percent Life Remaining */
    EOL_RSVBC               = 92,	/* Reserved Block Count */
    EOL_PFC                 = 96,	/* Program Fail Count */
    EOL_EFC                 = 100,	/* Erase Fail Count */
    EOL_RRER                = 108,	/* Raw Read Error Rate */
} EOL_LOG_PAGE_C0_OFFSETS;

#define WDC_NVME_C6_GUID_LENGTH         16
#define WDC_NVME_GET_HW_REV_LOG_OPCODE  0xc6
#define WDC_NVME_HW_REV_LOG_PAGE_LEN    512

typedef struct __attribute__((__packed__)) wdc_nvme_hw_rev_log
{
	__u8  hw_rev_gdr;           /*   0 Global Device HW Revision      */
	__u8  hw_rev_ar;            /*   1 ASIC HW Revision               */
	__u8  hw_rev_pbc_mc;        /*   2 PCB Manufacturer Code          */
	__u8  hw_rev_dram_mc;       /*   3 DRAM Manufacturer Code         */
	__u8  hw_rev_nand_mc;       /*   4 NAND Manufacturer Code         */
	__u8  hw_rev_pmic1_mc;      /*   5 PMIC 1 Manufacturer Code       */
	__u8  hw_rev_pmic2_mc;      /*   6 PMIC 2 Manufacturer Code       */
	__u8  hw_rev_c1_mc;         /*   7 Other Component 1 Manf Code    */
	__u8  hw_rev_c2_mc;         /*   8 Other Component 2 Manf Code    */
	__u8  hw_rev_c3_mc;         /*   9 Other Component 3 Manf Code    */
	__u8  hw_rev_c4_mc;         /*  10 Other Component 4 Manf Code    */
	__u8  hw_rev_c5_mc;         /*  11 Other Component 5 Manf Code    */
	__u8  hw_rev_c6_mc;         /*  12 Other Component 6 Manf Code    */
	__u8  hw_rev_c7_mc;         /*  13 Other Component 7 Manf Code    */
	__u8  hw_rev_c8_mc;         /*  14 Other Component 8 Manf Code    */
	__u8  hw_rev_c9_mc;         /*  15 Other Component 9 Manf Code    */
	__u8  hw_rev_rsrvd1[48];    /*  16 Reserved 48 bytes              */
	__u8  hw_rev_dev_mdi[16];   /*  64 Device Manf Detailed Info      */
	__u8  hw_rev_asic_di[16];   /*  80 ASIC Detailed Info             */
	__u8  hw_rev_pcb_di[16];    /*  96 PCB Detailed Info              */
	__u8  hw_rev_dram_di[16];   /* 112 DRAM Detailed Info             */
	__u8  hw_rev_nand_di[16];   /* 128 NAND Detailed Info             */
	__u8  hw_rev_pmic1_di[16];  /* 144 PMIC1 Detailed Info            */
	__u8  hw_rev_pmic2_di[16];  /* 160 PMIC2 Detailed Info            */
	__u8  hw_rev_c1_di[16];     /* 176 Component 1 Detailed Info      */
	__u8  hw_rev_c2_di[16];     /* 192 Component 2 Detailed Info      */
	__u8  hw_rev_c3_di[16];     /* 208 Component 3 Detailed Info      */
	__u8  hw_rev_c4_di[16];     /* 224 Component 4 Detailed Info      */
	__u8  hw_rev_c5_di[16];     /* 240 Component 5 Detailed Info      */
	__u8  hw_rev_c6_di[16];     /* 256 Component 6 Detailed Info      */
	__u8  hw_rev_c7_di[16];     /* 272 Component 7 Detailed Info      */
	__u8  hw_rev_c8_di[16];     /* 288 Component 8 Detailed Info      */
	__u8  hw_rev_c9_di[16];     /* 304 Component 9 Detailed Info      */
	__u8  hw_rev_sn[32];        /* 320 Serial Number                  */
	__u8  hw_rev_rsrvd2[142];   /* 352 Reserved 143 bytes             */
	__u16 hw_rev_version;       /* 494 Log Page Version               */
	__u8  hw_rev_guid[16];      /* 496 Log Page GUID                  */
} wdc_nvme_hw_rev_log;

static __u8 hw_rev_log_guid[WDC_NVME_C6_GUID_LENGTH] = { 0xAA, 0xB0, 0x05, 0xF5, 0x13, 0x5E, 0x48, 0x15,
		0xAB, 0x89, 0x05, 0xBA, 0x8B, 0xE2, 0xBF, 0x3C };

typedef struct __attribute__((__packed__)) _WDC_DE_VU_FILE_META_DATA
{
    __u8 fileName[WDC_DE_FILE_NAME_SIZE];
    __u16 fileID;
    __u64 fileSize;
} WDC_DE_VU_FILE_META_DATA, *PWDC_DE_VU_FILE_META_DATA;

typedef struct _WDC_DRIVE_ESSENTIALS
{
    WDC_DE_VU_FILE_META_DATA metaData;
    WDC_DRIVE_ESSENTIAL_TYPE essentialType;
} WDC_DRIVE_ESSENTIALS;

typedef struct _WDC_DE_VU_LOG_DIRECTORY
{
    WDC_DRIVE_ESSENTIALS *logEntry;		/* Caller to allocate memory        */
    __u32 maxNumLogEntries; 			/* Caller to input memory allocated */
    __u32 numOfValidLogEntries;			/* API will output this value       */
} WDC_DE_VU_LOG_DIRECTORY,*PWDC_DE_VU_LOG_DIRECTORY;

typedef struct _WDC_DE_CSA_FEATURE_ID_LIST
{
    NVME_FEATURE_IDENTIFIERS featureId;
    __u8 featureName[WDC_DE_GENERIC_BUFFER_SIZE];
} WDC_DE_CSA_FEATURE_ID_LIST;

typedef struct tarfile_metadata {
	char fileName[MAX_PATH_LEN];
	int8_t bufferFolderPath[MAX_PATH_LEN];
	char bufferFolderName[MAX_PATH_LEN];
	char tarFileName[MAX_PATH_LEN];
	char tarFiles[MAX_PATH_LEN];
	char tarCmd[MAX_PATH_LEN+MAX_PATH_LEN];
	char currDir[MAX_PATH_LEN];
	UtilsTimeInfo timeInfo;
	uint8_t* timeString[MAX_PATH_LEN];
} tarfile_metadata;

static WDC_DE_CSA_FEATURE_ID_LIST deFeatureIdList[] =
{
	{0x00                                   , "Dummy Placeholder"},
	{FID_ARBITRATION                        , "Arbitration"},
	{FID_POWER_MANAGEMENT                   , "PowerMgmnt"},
	{FID_LBA_RANGE_TYPE                     , "LbaRangeType"},
	{FID_TEMPERATURE_THRESHOLD              , "TempThreshold"},
	{FID_ERROR_RECOVERY                     , "ErrorRecovery"},
	{FID_VOLATILE_WRITE_CACHE               , "VolatileWriteCache"},
	{FID_NUMBER_OF_QUEUES                   , "NumOfQueues"},
	{FID_INTERRUPT_COALESCING               , "InterruptCoalesing"},
	{FID_INTERRUPT_VECTOR_CONFIGURATION     , "InterruptVectorConfig"},
	{FID_WRITE_ATOMICITY                    , "WriteAtomicity"},
	{FID_ASYNCHRONOUS_EVENT_CONFIGURATION   , "AsynEventConfig"},
	{FID_AUTONOMOUS_POWER_STATE_TRANSITION  , "AutonomousPowerState"},
};

typedef enum _NVME_VU_DE_LOGPAGE_NAMES
{
    NVME_DE_LOGPAGE_E3 = 0x01,
    NVME_DE_LOGPAGE_C0 = 0x02
} NVME_VU_DE_LOGPAGE_NAMES;
typedef struct _NVME_VU_DE_LOGPAGE_LIST
{
	NVME_VU_DE_LOGPAGE_NAMES logPageName;
	__u32	logPageId;
	__u32	logPageLen;
	char	logPageIdStr[5];
} NVME_VU_DE_LOGPAGE_LIST, *PNVME_VU_DE_LOGPAGE_LIST;

typedef struct _WDC_NVME_DE_VU_LOGPAGES
{
    NVME_VU_DE_LOGPAGE_NAMES vuLogPageReqd;
    __u32 numOfVULogPages;
} WDC_NVME_DE_VU_LOGPAGES, *PWDC_NVME_DE_VU_LOGPAGES;

static NVME_VU_DE_LOGPAGE_LIST deVULogPagesList[] =
{
    { NVME_DE_LOGPAGE_E3, 0xE3, 1072, "0xe3"},
    { NVME_DE_LOGPAGE_C0, 0xC0, 512, "0xc0"}
};

static int wdc_get_serial_name(struct nvme_dev *dev, char *file, size_t len,
		const char *suffix);
static int wdc_create_log_file(char *file, __u8 *drive_log_data,
		__u32 drive_log_length);
static int wdc_do_clear_dump(struct nvme_dev *dev, __u8 opcode, __u32 cdw12);
static int wdc_do_dump(struct nvme_dev *dev, __u32 opcode,__u32 data_len,
		__u32 cdw12, char *file, __u32 xfer_size);
static int wdc_do_crash_dump(struct nvme_dev *dev, char *file, int type);
static int wdc_crash_dump(struct nvme_dev *dev, char *file, int type);
static int wdc_get_crash_dump(int argc, char **argv, struct command *command,
		struct plugin *plugin);
static int wdc_do_drive_log(struct nvme_dev *dev, char *file);
static int wdc_drive_log(int argc, char **argv, struct command *command,
		struct plugin *plugin);
static const char* wdc_purge_mon_status_to_string(__u32 status);
static int wdc_purge(int argc, char **argv,
		struct command *command, struct plugin *plugin);
static int wdc_purge_monitor(int argc, char **argv,
		struct command *command, struct plugin *plugin);
static bool wdc_nvme_check_supported_log_page(nvme_root_t r,
		struct nvme_dev *dev, __u8 log_id);
static int wdc_clear_pcie_correctable_errors(int argc, char **argv, struct command *command,
		struct plugin *plugin);
static int wdc_do_drive_essentials(nvme_root_t r, struct nvme_dev *dev, char *dir, char *key);
static int wdc_drive_essentials(int argc, char **argv, struct command *command,
		struct plugin *plugin);
static int wdc_drive_status(int argc, char **argv, struct command *command,
		struct plugin *plugin);
static int wdc_clear_assert_dump(int argc, char **argv, struct command *command,
		struct plugin *plugin);
static int wdc_drive_resize(int argc, char **argv,
		struct command *command, struct plugin *plugin);
static int wdc_do_drive_resize(struct nvme_dev *dev, uint64_t new_size);
static int wdc_namespace_resize(int argc, char **argv,
		struct command *command, struct plugin *plugin);
static int wdc_do_namespace_resize(struct nvme_dev *dev, __u32 nsid,
		__u32 op_option);
static int wdc_reason_identifier(int argc, char **argv,
		struct command *command, struct plugin *plugin);
static int wdc_do_get_reason_id(struct nvme_dev *dev, char *file, int log_id);
static int wdc_save_reason_id(struct nvme_dev *dev, __u8 *rsn_ident,  int size);
static int wdc_clear_reason_id(struct nvme_dev *dev);
static int wdc_log_page_directory(int argc, char **argv, struct command *command,
		struct plugin *plugin);
static int wdc_do_drive_info(struct nvme_dev *dev, __u32 *result);
static int wdc_vs_drive_info(int argc, char **argv, struct command *command,
		struct plugin *plugin);
static int wdc_vs_temperature_stats(int argc, char **argv, struct command *command,
		struct plugin *plugin);
static __u64 wdc_get_enc_drive_capabilities(nvme_root_t r, struct nvme_dev *dev);
static int wdc_enc_get_nic_log(struct nvme_dev *dev, __u8 log_id,
		__u32 xfer_size, __u32 data_len, FILE *out);
static int wdc_enc_submit_move_data(struct nvme_dev *dev, char *cmd, int len,
		int xfer_size, FILE *out, int data_id, int cdw14, int cdw15);
static bool get_dev_mgment_cbs_data(nvme_root_t r, struct nvme_dev *dev,
		__u8 log_id, void **cbs_data);
static __u32 wdc_get_fw_cust_id(nvme_root_t r, struct nvme_dev *dev);

/* Drive log data size */
struct wdc_log_size {
	__le32	log_size;
};

/* E6 log header */
struct wdc_e6_log_hdr {
	__le32  eye_catcher;
	__u8	log_size[4];
};

/* DUI log header */
struct wdc_dui_log_section {
	__le16	section_type;
	__le16	data_area_id;
	__le32	section_size;
};

/* DUI log header V2 */
struct __attribute__((__packed__)) wdc_dui_log_section_v2 {
	__le16	section_type;
	__le16	data_area_id;
	__le64	section_size;
};

/* DUI log header V4 */
struct wdc_dui_log_section_v4 {
	__le16	section_type;
	__u8	data_area_id;
	__u8    reserved;
	__le32	section_size_sectors;
};

struct wdc_dui_log_hdr {
	__u8    telemetry_hdr[512];
	__le16	hdr_version;
	__le16	section_count;
	__le32	log_size;
	struct	wdc_dui_log_section log_section[WDC_NVME_DUI_MAX_SECTION];
	__u8    log_data[40];
};

struct __attribute__((__packed__)) wdc_dui_log_hdr_v2 {
	__u8    telemetry_hdr[512];
	__u8	hdr_version;
	__u8    product_id;
	__le16	section_count;
	__le64	log_size;
	struct	wdc_dui_log_section_v2 log_section[WDC_NVME_DUI_MAX_SECTION_V2];
	__u8    log_data[40];
};

struct __attribute__((__packed__)) wdc_dui_log_hdr_v3 {
	__u8    telemetry_hdr[512];
	__u8	hdr_version;
	__u8    product_id;
	__le16	section_count;
	__le64	log_size;
	struct	wdc_dui_log_section_v2 log_section[WDC_NVME_DUI_MAX_SECTION_V3];
	__u8    securityNonce[36];
	__u8    log_data[40];
};

struct __attribute__((__packed__)) wdc_dui_log_hdr_v4 {
	__u8    telemetry_hdr[512];
	__u8	hdr_version;
	__u8    product_id;
	__le16	section_count;
	__le32	log_size_sectors;
	struct	wdc_dui_log_section_v4 log_section[WDC_NVME_DUI_MAX_SECTION];
	__u8    log_data[40];
};

/* Purge monitor response */
struct wdc_nvme_purge_monitor_data {
	__le16 	rsvd1;
	__le16 	rsvd2;
	__le16 	first_erase_failure_cnt;
	__le16 	second_erase_failure_cnt;
	__le16 	rsvd3;
	__le16 	programm_failure_cnt;
	__le32 	rsvd4;
	__le32 	rsvd5;
	__le32 	entire_progress_total;
	__le32 	entire_progress_current;
	__u8   	rsvd6[14];
};

/* Additional Smart Log */
struct wdc_log_page_header {
	uint8_t	num_subpages;
	uint8_t	reserved;
	__le16	total_log_size;
};

struct wdc_log_page_subpage_header {
	uint8_t	spcode;
	uint8_t	pcset;
	__le16	subpage_length;
};

struct wdc_ssd_perf_stats {
	__le64	hr_cmds;		/* Host Read Commands				*/
	__le64	hr_blks;		/* Host Read Blocks					*/
	__le64	hr_ch_cmds;		/* Host Read Cache Hit Commands		*/
	__le64	hr_ch_blks;		/* Host Read Cache Hit Blocks		*/
	__le64	hr_st_cmds;		/* Host Read Stalled Commands		*/
	__le64	hw_cmds;		/* Host Write Commands				*/
	__le64	hw_blks;		/* Host Write Blocks				*/
	__le64	hw_os_cmds;		/* Host Write Odd Start Commands	*/
	__le64	hw_oe_cmds;		/* Host Write Odd End Commands		*/
	__le64	hw_st_cmds;		/* Host Write Commands Stalled		*/
	__le64	nr_cmds;		/* NAND Read Commands				*/
	__le64	nr_blks;		/* NAND Read Blocks					*/
	__le64	nw_cmds;		/* NAND Write Commands				*/
	__le64	nw_blks;		/* NAND Write Blocks				*/
	__le64	nrbw;			/* NAND Read Before Write			*/
};

/* Additional C2 Log Page */
struct wdc_c2_log_page_header {
	__le32	length;
	__le32	version;
};

struct wdc_c2_log_subpage_header {
	__le32	length;
	__le32	entry_id;
	__le32	data;
};

struct wdc_c2_cbs_data {
	__le32	length;
	__u8	data[];
};

struct __attribute__((__packed__)) wdc_bd_ca_log_format {
	__u8	field_id;
	__u8	reserved1[2];
	__u8	normalized_value;
	__u8	raw_value[8];
};

#define LATENCY_LOG_BUCKET_READ         3
#define LATENCY_LOG_BUCKET_WRITE        2
#define LATENCY_LOG_BUCKET_TRIM         1
#define LATENCY_LOG_BUCKET_RESERVED     0

#define LATENCY_LOG_MEASURED_LAT_READ   2
#define LATENCY_LOG_MEASURED_LAT_WRITE  1
#define LATENCY_LOG_MEASURED_LAT_TRIM   0

struct __attribute__((__packed__)) wdc_ssd_latency_monitor_log {
	__u8    feature_status;                         /* 0x00  */
	__u8    rsvd1;                                  /* 0x01  */
	__le16  active_bucket_timer;                    /* 0x02  */
	__le16  active_bucket_timer_threshold;          /* 0x04  */
	__u8    active_threshold_a;                     /* 0x06  */
	__u8    active_threshold_b;                     /* 0x07  */
	__u8    active_threshold_c;                     /* 0x08  */
	__u8    active_threshold_d;                     /* 0x09  */
	__le16  active_latency_config;                  /* 0x0A  */
	__u8    active_latency_min_window;              /* 0x0C  */
	__u8    rsvd2[0x13];                            /* 0x0D  */

	__le32  active_bucket_counter[4][4];            /* 0x20 - 0x5F  */
	__le64  active_latency_timestamp[4][3];         /* 0x60 - 0xBF  */
	__le16  active_measured_latency[4][3];          /* 0xC0 - 0xD7  */
	__le16  active_latency_stamp_units;             /* 0xD8  */
	__u8    rsvd3[0x16];                            /* 0xDA  */

	__le32  static_bucket_counter[4][4] ;           /* 0xF0  - 0x12F  */
	__le64  static_latency_timestamp[4][3];         /* 0x130 - 0x18F */
	__le16  static_measured_latency[4][3];          /* 0x190 - 0x1A7 */
	__le16  static_latency_stamp_units;             /* 0x1A8 */
	__u8    rsvd4[0x16];                            /* 0x1AA */

	__le16  debug_log_trigger_enable;               /* 0x1C0 */
	__le16  debug_log_measured_latency;             /* 0x1C2 */
	__le64  debug_log_latency_stamp;                /* 0x1C4 */
	__le16  debug_log_ptr;                          /* 0x1CC */
	__le16  debug_log_counter_trigger;              /* 0x1CE */
	__u8    debug_log_stamp_units;                  /* 0x1D0 */
	__u8    rsvd5[0x1D];                            /* 0x1D1 */

	__le16  log_page_version;                       /* 0x1EE */
	__u8    log_page_guid[0x10];                    /* 0x1F0 */
};

struct __attribute__((__packed__)) wdc_ssd_ca_perf_stats {
	__le64  nand_bytes_wr_lo;                       /* 0x00 - NAND Bytes Written lo             */
	__le64  nand_bytes_wr_hi;                       /* 0x08 - NAND Bytes Written hi             */
	__le64  nand_bytes_rd_lo;                       /* 0x10 - NAND Bytes Read lo                */
	__le64  nand_bytes_rd_hi;                       /* 0x18 - NAND Bytes Read hi                */
	__le64  nand_bad_block;                         /* 0x20 - NAND Bad Block Count              */
	__le64  uncorr_read_count;                      /* 0x28 - Uncorrectable Read Count          */
	__le64  ecc_error_count;                        /* 0x30 - Soft ECC Error Count              */
	__le32  ssd_detect_count;                       /* 0x38 - SSD End to End Detection Count    */
	__le32  ssd_correct_count;                      /* 0x3C - SSD End to End Correction Count   */
	__u8    data_percent_used;                      /* 0x40 - System Data Percent Used          */
	__le32  data_erase_max;                         /* 0x41 - User Data Erase Counts            */
	__le32  data_erase_min;                         /* 0x45 - User Data Erase Counts            */
	__le64  refresh_count;                          /* 0x49 - Refresh Count                     */
	__le64  program_fail;                           /* 0x51 - Program Fail Count                */
	__le64  user_erase_fail;                        /* 0x59 - User Data Erase Fail Count        */
	__le64  system_erase_fail;                      /* 0x61 - System Area Erase Fail Count      */
	__u8    thermal_throttle_status;                /* 0x69 - Thermal Throttling Status         */
	__u8    thermal_throttle_count;                 /* 0x6A - Thermal Throttling Count          */
	__le64  pcie_corr_error;                        /* 0x6B - pcie Correctable Error Count      */
	__le32  incomplete_shutdown_count;              /* 0x73 - Incomplete Shutdown Count         */
	__u8    percent_free_blocks;                    /* 0x77 - Percent Free Blocks               */
	__u8    rsvd[392];                              /* 0x78 - Reserved bytes 120-511            */
};

struct __attribute__((__packed__)) wdc_ssd_d0_smart_log {
    __le32  smart_log_page_header;                 /* 0x00 - Smart Log Page Header                       */
    __le32  lifetime_realloc_erase_block_count;    /* 0x04 - Lifetime reallocated erase block count      */
    __le32  lifetime_power_on_hours;               /* 0x08 - Lifetime power on hours                     */
    __le32  lifetime_uecc_count;                   /* 0x0C - Lifetime UECC count                         */
    __le32  lifetime_wrt_amp_factor;               /* 0x10 - Lifetime write amplification factor         */
    __le32  trailing_hr_wrt_amp_factor;            /* 0x14 - Trailing hour write amplification factor    */
    __le32  reserve_erase_block_count;             /* 0x18 - Reserve erase block count                   */
    __le32  lifetime_program_fail_count;           /* 0x1C - Lifetime program fail count                 */
    __le32  lifetime_block_erase_fail_count;       /* 0x20 - Lifetime block erase fail count             */
    __le32  lifetime_die_failure_count;            /* 0x24 - Lifetime die failure count                  */
    __le32  lifetime_link_rate_downgrade_count;    /* 0x28 - Lifetime link rate downgrade count          */
    __le32  lifetime_clean_shutdown_count;         /* 0x2C - Lifetime clean shutdown count on power loss */
    __le32  lifetime_unclean_shutdown_count;       /* 0x30 - Lifetime unclean shutdowns on power loss    */
    __le32  current_temp;                          /* 0x34 - Current temperature                         */
    __le32  max_recorded_temp;                     /* 0x38 - Max recorded temperature                    */
    __le32  lifetime_retired_block_count;          /* 0x3C - Lifetime retired block count                */
    __le32  lifetime_read_disturb_realloc_events;  /* 0x40 - Lifetime read disturb reallocation events   */
    __le64  lifetime_nand_writes;                  /* 0x44 - Lifetime NAND write Lpages                  */
    __le32  capacitor_health;                      /* 0x4C - Capacitor health                            */
    __le64  lifetime_user_writes;                  /* 0x50 - Lifetime user writes                        */
    __le64  lifetime_user_reads;                   /* 0x58 - Lifetime user reads                         */
    __le32  lifetime_thermal_throttle_act;         /* 0x60 - Lifetime thermal throttle activations       */
    __le32  percentage_pe_cycles_remaining;        /* 0x64 - Percentage of P/E cycles remaining          */
    __u8    rsvd[408];                             /* 0x68 - 408 Reserved bytes                          */
};

#define WDC_OCP_C1_GUID_LENGTH              16
#define WDC_ERROR_REC_LOG_BUF_LEN          512
#define WDC_ERROR_REC_LOG_ID              0xC1
#define WDC_ERROR_REC_LOG_VERSION1        0001
#define WDC_ERROR_REC_LOG_VERSION2        0002

struct __attribute__((__packed__)) wdc_ocp_c1_error_recovery_log {
    __le16  panic_reset_wait_time;                  /* 000 - Panic Reset Wait Time              */
    __u8    panic_reset_action;                     /* 002 - Panic Reset Action                 */
    __u8    dev_recovery_action1;                   /* 003 - Device Recovery Action 1           */
    __le64  panic_id;                               /* 004 - Panic ID                           */
    __le32  dev_capabilities;                       /* 012 - Device Capabilities                */
    __u8    vs_recovery_opc;                        /* 016 - Vendor Specific Recovery Opcode    */
    __u8    rsvd1[3];                               /* 017 - 3 Reserved Bytes                   */
    __le32  vs_cmd_cdw12;                           /* 020 - Vendor Specific Command CDW12      */
    __le32  vs_cmd_cdw13;                           /* 024 - Vendor Specific Command CDW13      */
    __u8    vs_cmd_to;                              /* 028 - Vendor Specific Command Timeout V2 */
    __u8    dev_recovery_action2;                   /* 029 - Device Recovery Action 2 V2        */
    __u8    dev_recovery_action2_to;                /* 030 - Device Recovery Action 2 Timeout V2*/
    __u8    rsvd2[463];                             /* 031 - 463 Reserved Bytes                 */
    __le16  log_page_version;                       /* 494 - Log Page Version                   */
    __u8    log_page_guid[WDC_OCP_C1_GUID_LENGTH];  /* 496 - Log Page GUID                      */
};

static __u8 wdc_ocp_c1_guid[WDC_OCP_C1_GUID_LENGTH]    = { 0x44, 0xD9, 0x31, 0x21, 0xFE, 0x30, 0x34, 0xAE,
		0xAB, 0x4D, 0xFD, 0x3D, 0xBA, 0x83, 0x19, 0x5A };

/* NAND Stats */
struct __attribute__((__packed__)) wdc_nand_stats {
	__u8		nand_write_tlc[16];
	__u8		nand_write_slc[16];
	__le32		nand_prog_failure;
	__le32		nand_erase_failure;
	__le32		bad_block_count;
	__le64		nand_rec_trigger_event;
	__le64		e2e_error_counter;
	__le64		successful_ns_resize_event;
	__u8		rsvd[442];
	__u16       log_page_version;
};

struct __attribute__((__packed__)) wdc_nand_stats_V3 {
	__u8		nand_write_tlc[16];
	__u8		nand_write_slc[16];
	__u8		bad_nand_block_count[8];
	__le64		xor_recovery_count;
	__le64		uecc_read_error_count;
	__u8		ssd_correction_counts[16];
	__u8		percent_life_used;
	__le64		user_data_erase_counts[4];
	__u8  		program_fail_count[8];
	__u8  		erase_fail_count[8];
	__le64		correctable_error_count;
	__u8		percent_free_blocks_user;
	__le64		security_version_number;
	__u8		percent_free_blocks_system;
	__u8		trim_completions[25];
	__u8		back_pressure_guage;
	__le64		soft_ecc_error_count;
	__le64		refresh_count;
	__u8		bad_sys_nand_block_count[8];
	__u8		endurance_estimate[16];
	__u8		thermal_throttling_st_ct[2];
	__le64		unaligned_IO;
	__u8		physical_media_units[16];
	__u8		reserved[279];
	__u16       log_page_version;
};

struct wdc_vs_pcie_stats
{
    __le64      unsupportedRequestErrorCount;
    __le64      ecrcErrorStatusCount;
    __le64      malformedTlpStatusCount;
    __le64      receiverOverflowStatusCount;
    __le64      unexpectedCmpltnStatusCount;
    __le64      completeAbortStatusCount;
    __le64      cmpltnTimoutStatusCount;
    __le64      flowControlErrorStatusCount;
    __le64      poisonedTlpStatusCount;
    __le64      dLinkPrtclErrorStatusCount;
    __le64      advsryNFatalErrStatusCount;
    __le64      replayTimerToStatusCount;
    __le64      replayNumRolloverStCount;
    __le64      badDllpStatusCount;
    __le64      badTlpStatusCount;
    __le64      receiverErrStatusCount;
    __u8        reserved1[384];
};

struct wdc_fw_act_history_log_hdr {
	__le32		eye_catcher;
	__u8        version;
	__u8        reserved1;
	__u8        num_entries;
	__u8        reserved2;
	__le32      entry_size;
	__le32      reserved3;
};

struct wdc_fw_act_history_log_entry {
	__le32      entry_num;
	__le32      power_cycle_count;
	__le64      power_on_seconds;
	__le64      previous_fw_version;
	__le64      new_fw_version;
    __u8        slot_number;
    __u8        commit_action_type;
    __le16      result;
	__u8        reserved[12];
};

struct __attribute__((__packed__)) wdc_fw_act_history_log_entry_c2 {
	__u8		entry_version_num;
	__u8		entry_len;
	__le16		reserved;
	__le16		fw_act_hist_entries;
	__le64		timestamp;
	__u8		reserved2[8];
	__le64		power_cycle_count;
	__le64		previous_fw_version;
	__le64		current_fw_version;
	__u8		slot_number;
	__u8		commit_action_type;
	__le16		result;
	__u8		reserved3[14];
};

struct __attribute__((__packed__)) wdc_fw_act_history_log_format_c2 {
	__u8		log_identifier;
	__u8 		reserved[3];
	__le32		num_entries;
	struct 		wdc_fw_act_history_log_entry_c2 entry[WDC_MAX_NUM_ACT_HIST_ENTRIES];
	__u8 		reserved2[2790];
	__le16 		log_page_version;
	__u8 		log_page_guid[WDC_C2_GUID_LENGTH];
};

#define WDC_OCP_C4_GUID_LENGTH              16
#define WDC_DEV_CAP_LOG_BUF_LEN           4096
#define WDC_DEV_CAP_LOG_ID                0xC4
#define WDC_DEV_CAP_LOG_VERSION           0001
#define WDC_OCP_C4_NUM_PS_DESCR            127

struct __attribute__((__packed__)) wdc_ocp_C4_dev_cap_log {
    __le16  num_pcie_ports;                        /* 0000 - Number of PCI Express Ports           */
    __le16  oob_mgmt_support;                      /* 0002 - OOB Management Interfaces Supported   */
    __le16  wrt_zeros_support;                     /* 0004 - Write Zeros Commmand Support          */
    __le16  sanitize_support;                      /* 0006 - Sanitize Command Support              */
    __le16  dsm_support;                           /* 0008 - Dataset Management Command Support    */
    __le16  wrt_uncor_support;                     /* 0010 - Write Uncorrectable Command Support   */
    __le16  fused_support;                         /* 0012 - Fused Operation Support               */
    __le16  min_dssd_ps;                           /* 0014 - Minimum Valid DSSD Power State        */
    __u8    rsvd1;                                 /* 0016 - Reserved must be cleared to zero      */
    __u8    dssd_ps_descr[WDC_OCP_C4_NUM_PS_DESCR];/* 0017 - DSSD Power State Descriptors          */
    __u8    rsvd2[3934];                           /* 0144 - Reserved must be cleared to zero      */
    __le16  log_page_version;                      /* 4078 - Log Page Version                      */
    __u8    log_page_guid[WDC_OCP_C4_GUID_LENGTH]; /* 4080 - Log Page GUID                         */
};

static __u8 wdc_ocp_c4_guid[WDC_OCP_C4_GUID_LENGTH]    = { 0x97, 0x42, 0x05, 0x0D, 0xD1, 0xE1, 0xC9, 0x98,
		0x5D, 0x49, 0x58, 0x4B, 0x91, 0x3C, 0x05, 0xB7 };

#define WDC_OCP_C5_GUID_LENGTH              16
#define WDC_UNSUPPORTED_REQS_LOG_BUF_LEN  4096
#define WDC_UNSUPPORTED_REQS_LOG_ID       0xC5
#define WDC_UNSUPPORTED_REQS_LOG_VERSION  0001
#define WDC_NUM_UNSUPPORTED_REQ_ENTRIES    253

struct __attribute__((__packed__)) wdc_ocp_C5_unsupported_reqs {
    __le16  unsupported_count;                     /* 0000 - Number of Unsupported Requirement IDs */
    __u8    rsvd1[14];                             /* 0002 - Reserved must be cleared to zero      */
    __u8    unsupported_req_list[WDC_NUM_UNSUPPORTED_REQ_ENTRIES][16];  /* 0016 - Unsupported Requirements List */
    __u8    rsvd2[14];                             /* 4064 - Reserved must be cleared to zero      */
    __le16  log_page_version;                      /* 4078 - Log Page Version                      */
    __u8    log_page_guid[WDC_OCP_C5_GUID_LENGTH]; /* 4080 - Log Page GUID                         */
};

static __u8 wdc_ocp_c5_guid[WDC_OCP_C5_GUID_LENGTH]    = { 0x2F, 0x72, 0x9C, 0x0E, 0x99, 0x23, 0x2C, 0xBB,
		0x63, 0x48, 0x32, 0xD0, 0xB7, 0x98, 0xBB, 0xC7 };

#define WDC_REASON_INDEX_MAX                    16
#define WDC_REASON_ID_ENTRY_LEN                128
#define WDC_REASON_ID_PATH_NAME                "/usr/local/nvmecli"


static double safe_div_fp(double numerator, double denominator)
{
	return denominator ? numerator / denominator : 0;
}

static double calc_percent(uint64_t numerator, uint64_t denominator)
{
	return denominator ?
		(uint64_t)(((double)numerator / (double)denominator) * 100) : 0;
}

static int wdc_get_pci_ids(nvme_root_t r, struct nvme_dev *dev,
			   uint32_t *device_id, uint32_t *vendor_id)
{
	char vid[256], did[256], id[32];
	nvme_ctrl_t c = NULL;
	nvme_ns_t n = NULL;
	int fd, ret;

	c = nvme_scan_ctrl(r, dev->name);
	if (c) {
		snprintf(vid, sizeof(vid), "%s/device/vendor",
			nvme_ctrl_get_sysfs_dir(c));
		snprintf(did, sizeof(did), "%s/device/device",
			nvme_ctrl_get_sysfs_dir(c));
		nvme_free_ctrl(c);
	} else {
		n = nvme_scan_namespace(dev->name);
		if (!n) {
			fprintf(stderr, "Unable to find %s\n", dev->name);
			return -1;
		}

		snprintf(vid, sizeof(vid), "%s/device/device/vendor",
			nvme_ns_get_sysfs_dir(n));
		snprintf(did, sizeof(did), "%s/device/device/device",
			nvme_ns_get_sysfs_dir(n));
		nvme_free_ns(n);
	}

	fd = open(vid, O_RDONLY);
	if (fd < 0) {
		fprintf(stderr, "ERROR : WDC : %s : Open vendor file failed\n", __func__);
		return -1;
	}

	ret = read(fd, id, 32);
	close(fd);

	if (ret < 0) {
		fprintf(stderr, "%s: Read of pci vendor id failed\n", __func__);
		return -1;
	}
	id[ret < 32 ? ret : 31] = '\0';
	if (id[strlen(id) - 1] == '\n')
		id[strlen(id) - 1] = '\0';

	*vendor_id = strtol(id, NULL, 0);
	ret = 0;

	fd = open(did, O_RDONLY);
	if (fd < 0) {
		fprintf(stderr, "ERROR : WDC : %s : Open device file failed\n", __func__);
		return -1;
	}

	ret = read(fd, id, 32);
	close(fd);

	if (ret < 0) {
		fprintf(stderr, "%s: Read of pci device id failed\n", __func__);
		return -1;
	}
	id[ret < 32 ? ret : 31] = '\0';
	if (id[strlen(id) - 1] == '\n')
		id[strlen(id) - 1] = '\0';

	*device_id = strtol(id, NULL, 0);
	return 0;
}

static int wdc_get_vendor_id(struct nvme_dev *dev, uint32_t *vendor_id)
{
	int ret;
	struct nvme_id_ctrl ctrl;

	memset(&ctrl, 0, sizeof(struct nvme_id_ctrl));
	ret = nvme_identify_ctrl(dev_fd(dev), &ctrl);
	if (ret) {
		fprintf(stderr, "ERROR : WDC : nvme_identify_ctrl() failed "
			"0x%x\n", ret);
		return -1;
	}

	*vendor_id = (uint32_t) ctrl.vid;

	return ret;
}

static bool wdc_check_power_of_2(int num)
{
	return (num && ( !(num & (num-1))));
}

static int wdc_get_model_number(struct nvme_dev *dev, char *model)
{
	int ret,i;
	struct nvme_id_ctrl ctrl;

	memset(&ctrl, 0, sizeof(struct nvme_id_ctrl));
	ret = nvme_identify_ctrl(dev_fd(dev), &ctrl);
	if (ret) {
		fprintf(stderr, "ERROR : WDC : nvme_identify_ctrl() failed "
			"0x%x\n", ret);
		return -1;
	}

	memcpy(model,ctrl.mn,NVME_ID_CTRL_MODEL_NUMBER_SIZE);
	/* get rid of the padded spaces */
	i = NVME_ID_CTRL_MODEL_NUMBER_SIZE-1;
	while (model[i] == ' ') i--;
		model[i+1]=0;

	return ret;
}

static bool wdc_check_device(nvme_root_t r, struct nvme_dev *dev)
{
	int ret;
	bool supported;
	uint32_t read_device_id = -1, read_vendor_id = -1;

	ret = wdc_get_pci_ids(r, dev, &read_device_id, &read_vendor_id);
	if (ret < 0) {
		/* Use the identify nvme command to get vendor id due to NVMeOF device. */
		if (wdc_get_vendor_id(dev, &read_vendor_id) < 0)
			return false;
	}

	supported = false;

	if (read_vendor_id == WDC_NVME_VID ||
	    read_vendor_id == WDC_NVME_VID_2 ||
	    read_vendor_id == WDC_NVME_SNDK_VID)
		supported = true;
	else
		fprintf(stderr, "ERROR : WDC: unsupported WDC device, Vendor ID = 0x%x, Device ID = 0x%x\n",
				read_vendor_id, read_device_id);

	return supported;
}

static bool wdc_enc_check_model(struct nvme_dev *dev)
{
	int ret;
	bool supported;
	char model[NVME_ID_CTRL_MODEL_NUMBER_SIZE+1];

	ret = wdc_get_model_number(dev, model);
	if (ret < 0)
		return false;

	supported = false;
	model[NVME_ID_CTRL_MODEL_NUMBER_SIZE] = 0; /* forced termination */
	if (strstr(model,WDC_OPENFLEX_MI_DEVICE_MODEL) != NULL)
		supported = true;
	else
		fprintf(stderr, "ERROR : WDC: unsupported WDC enclosure, Model = %s\n",model);

	return supported;
}

static __u64 wdc_get_drive_capabilities(nvme_root_t r, struct nvme_dev *dev)
{
	int ret;
	uint32_t read_device_id = -1, read_vendor_id = -1;
	__u64 capabilities = 0;
	__u32 cust_id;

	ret = wdc_get_pci_ids(r, dev, &read_device_id, &read_vendor_id);
	if (ret < 0)
	{
		if (wdc_get_vendor_id(dev, &read_vendor_id) < 0)
			return capabilities;
	}

	/* below check condition is added due in NVMeOF device we dont have device_id so we need to use only vendor_id*/
	if (read_device_id == -1 && read_vendor_id != -1)
	{
		capabilities = wdc_get_enc_drive_capabilities(r, dev);
		return capabilities;
	}

	switch (read_vendor_id) {
	case WDC_NVME_VID:
		switch (read_device_id) {
		case WDC_NVME_SN100_DEV_ID:
			capabilities = (WDC_DRIVE_CAP_CAP_DIAG | WDC_DRIVE_CAP_INTERNAL_LOG | WDC_DRIVE_CAP_C1_LOG_PAGE |
					WDC_DRIVE_CAP_DRIVE_LOG | WDC_DRIVE_CAP_CRASH_DUMP | WDC_DRIVE_CAP_PFAIL_DUMP |
					WDC_DRIVE_CAP_PURGE);
			break;
		case WDC_NVME_SN200_DEV_ID:
			capabilities = (WDC_DRIVE_CAP_CAP_DIAG | WDC_DRIVE_CAP_INTERNAL_LOG | WDC_DRIVE_CAP_CLEAR_PCIE |
					WDC_DRIVE_CAP_DRIVE_LOG | WDC_DRIVE_CAP_CRASH_DUMP | WDC_DRIVE_CAP_PFAIL_DUMP |
					WDC_DRIVE_CAP_PURGE);

			/* verify the 0xCA log page is supported */
			if (wdc_nvme_check_supported_log_page(r, dev,
							      WDC_NVME_GET_DEVICE_INFO_LOG_OPCODE))
				capabilities |= WDC_DRIVE_CAP_CA_LOG_PAGE;

			/* verify the 0xC1 log page is supported */
			if (wdc_nvme_check_supported_log_page(r, dev,
							      WDC_NVME_ADD_LOG_OPCODE))
				capabilities |= WDC_DRIVE_CAP_C1_LOG_PAGE;
			break;
		default:
			capabilities = 0;
		}
		break;
	case WDC_NVME_VID_2:
		switch (read_device_id) {
		case WDC_NVME_SN630_DEV_ID:
		/* FALLTHRU */
		case WDC_NVME_SN630_DEV_ID_1:
			capabilities = (WDC_DRIVE_CAP_CAP_DIAG | WDC_DRIVE_CAP_INTERNAL_LOG |
					WDC_DRIVE_CAP_DRIVE_STATUS | WDC_DRIVE_CAP_CLEAR_ASSERT |
					WDC_DRIVE_CAP_RESIZE | WDC_DRIVE_CAP_CLEAR_PCIE);
			/* verify the 0xCA log page is supported */
			if (wdc_nvme_check_supported_log_page(r, dev,
							      WDC_NVME_GET_DEVICE_INFO_LOG_OPCODE))
				capabilities |= WDC_DRIVE_CAP_CA_LOG_PAGE;

			/* verify the 0xD0 log page is supported */
			if (wdc_nvme_check_supported_log_page(r, dev,
							      WDC_NVME_GET_VU_SMART_LOG_OPCODE)
			    == true)
				capabilities |= WDC_DRIVE_CAP_D0_LOG_PAGE;
			break;
		case WDC_NVME_SN640_DEV_ID:
		/* FALLTHRU */
		case WDC_NVME_SN640_DEV_ID_1:
		/* FALLTHRU */
		case WDC_NVME_SN640_DEV_ID_2:
		/* FALLTHRU */
        case WDC_NVME_SN640_DEV_ID_3:
        /* FALLTHRU */
        case WDC_NVME_SN560_DEV_ID_1:
        /* FALLTHRU */
        case WDC_NVME_SN560_DEV_ID_2:
        /* FALLTHRU */
        case WDC_NVME_SN560_DEV_ID_3:
        /* FALLTHRU */
        case WDC_NVME_SN660_DEV_ID:
			/* verify the 0xC0 log page is supported */
			if (wdc_nvme_check_supported_log_page(r, dev,
							      WDC_NVME_GET_SMART_CLOUD_ATTR_LOG_ID)
			    == true) {
				capabilities |= WDC_DRIVE_CAP_C0_LOG_PAGE;
			}

			capabilities |= (WDC_DRIVE_CAP_CAP_DIAG | WDC_DRIVE_CAP_INTERNAL_LOG |
					WDC_DRIVE_CAP_DRIVE_STATUS | WDC_DRIVE_CAP_CLEAR_ASSERT |
					WDC_DRIVE_CAP_RESIZE | WDC_DRIVE_CAP_FW_ACTIVATE_HISTORY |
					WDC_DRVIE_CAP_DISABLE_CTLR_TELE_LOG | WDC_DRIVE_CAP_REASON_ID |
					WDC_DRIVE_CAP_LOG_PAGE_DIR);

			/* verify the 0xC1 (OCP Error Recovery) log page is supported */
			if (wdc_nvme_check_supported_log_page(r, dev,
							      WDC_ERROR_REC_LOG_ID))
				capabilities |= WDC_DRIVE_CAP_OCP_C1_LOG_PAGE;

			/* verify the 0xC3 (OCP Latency Monitor) log page is supported */
			if (wdc_nvme_check_supported_log_page(r, dev,
							      WDC_LATENCY_MON_LOG_ID))
				capabilities |= WDC_DRIVE_CAP_C3_LOG_PAGE;

			/* verify the 0xC4 (OCP Device Capabilities) log page is supported */
			if (wdc_nvme_check_supported_log_page(r, dev,
							      WDC_DEV_CAP_LOG_ID))
				capabilities |= WDC_DRIVE_CAP_OCP_C4_LOG_PAGE;

			/* verify the 0xC5 (OCP Unsupported Requirments) log page is supported */
			if (wdc_nvme_check_supported_log_page(r, dev,
							      WDC_UNSUPPORTED_REQS_LOG_ID))
				capabilities |= WDC_DRIVE_CAP_OCP_C5_LOG_PAGE;

			/* verify the 0xCA log page is supported */
			if (wdc_nvme_check_supported_log_page(r, dev,
							      WDC_NVME_GET_DEVICE_INFO_LOG_OPCODE))
				capabilities |= WDC_DRIVE_CAP_CA_LOG_PAGE;

			/* verify the 0xD0 log page is supported */
			if (wdc_nvme_check_supported_log_page(r, dev,
							      WDC_NVME_GET_VU_SMART_LOG_OPCODE))
				capabilities |= WDC_DRIVE_CAP_D0_LOG_PAGE;

			cust_id = wdc_get_fw_cust_id(r, dev);
			if (cust_id == WDC_INVALID_CUSTOMER_ID) {
				fprintf(stderr, "%s: ERROR : WDC : invalid customer id\n", __func__);
				return -1;
			}

			if ((cust_id == WDC_CUSTOMER_ID_0x1004) || (cust_id == WDC_CUSTOMER_ID_0x1008) ||
					(cust_id == WDC_CUSTOMER_ID_0x1005) || (cust_id == WDC_CUSTOMER_ID_0x1304))
				capabilities |= (WDC_DRIVE_CAP_VU_FID_CLEAR_FW_ACT_HISTORY | WDC_DRIVE_CAP_VU_FID_CLEAR_PCIE |
						WDC_DRIVE_CAP_INFO | WDC_DRIVE_CAP_CLOUD_SSD_VERSION);
			else
				capabilities |= (WDC_DRIVE_CAP_CLEAR_FW_ACT_HISTORY | WDC_DRIVE_CAP_CLEAR_PCIE);

        	break;
		case WDC_NVME_SN840_DEV_ID:
		/* FALLTHRU */
		case WDC_NVME_SN840_DEV_ID_1:
		/* FALLTHRU */
		case WDC_NVME_SN860_DEV_ID:
			/* verify the 0xC0 log page is supported */
			if (wdc_nvme_check_supported_log_page(r, dev,
							      WDC_NVME_GET_EOL_STATUS_LOG_OPCODE))
				capabilities |= WDC_DRIVE_CAP_C0_LOG_PAGE;
		/* FALLTHRU */
		case WDC_NVME_ZN540_DEV_ID:
		/* FALLTHRU */
        case WDC_NVME_SN540_DEV_ID:
        /* FALLTHRU */
			capabilities |= (WDC_DRIVE_CAP_CAP_DIAG | WDC_DRIVE_CAP_INTERNAL_LOG |
					WDC_DRIVE_CAP_DRIVE_STATUS | WDC_DRIVE_CAP_CLEAR_ASSERT |
					WDC_DRIVE_CAP_RESIZE | WDC_DRIVE_CAP_CLEAR_PCIE |
					WDC_DRIVE_CAP_FW_ACTIVATE_HISTORY | WDC_DRIVE_CAP_CLEAR_FW_ACT_HISTORY |
					WDC_DRVIE_CAP_DISABLE_CTLR_TELE_LOG | WDC_DRIVE_CAP_REASON_ID |
					WDC_DRIVE_CAP_LOG_PAGE_DIR );

			/* verify the 0xCA log page is supported */
			if (wdc_nvme_check_supported_log_page(r, dev,
							      WDC_NVME_GET_DEVICE_INFO_LOG_OPCODE))
				capabilities |= WDC_DRIVE_CAP_CA_LOG_PAGE;

			/* verify the 0xD0 log page is supported */
			if (wdc_nvme_check_supported_log_page(r, dev,
							      WDC_NVME_GET_VU_SMART_LOG_OPCODE))
				capabilities |= WDC_DRIVE_CAP_D0_LOG_PAGE;
			break;
		case WDC_NVME_SN650_DEV_ID:
		case WDC_NVME_SN650_DEV_ID_1:
		case WDC_NVME_SN650_DEV_ID_2:
		case WDC_NVME_SN650_DEV_ID_3:
		case WDC_NVME_SN650_DEV_ID_4:
		case WDC_NVME_SN655_DEV_ID:
		case WDC_NVME_SN550_DEV_ID:
			/* verify the 0xC0 log page is supported */
			if (wdc_nvme_check_supported_log_page(r, dev,
							      WDC_NVME_GET_SMART_CLOUD_ATTR_LOG_ID))
				capabilities |= WDC_DRIVE_CAP_C0_LOG_PAGE;

			/* verify the 0xC1 (OCP Error Recovery) log page is supported */
			if (wdc_nvme_check_supported_log_page(r, dev, WDC_ERROR_REC_LOG_ID))
				capabilities |= WDC_DRIVE_CAP_OCP_C1_LOG_PAGE;

			/* verify the 0xC3 (OCP Latency Monitor) log page is supported */
			if (wdc_nvme_check_supported_log_page(r, dev, WDC_LATENCY_MON_LOG_ID))
				capabilities |= WDC_DRIVE_CAP_C3_LOG_PAGE;

			/* verify the 0xC4 (OCP Device Capabilities) log page is supported */
			if (wdc_nvme_check_supported_log_page(r, dev, WDC_DEV_CAP_LOG_ID))
				capabilities |= WDC_DRIVE_CAP_OCP_C4_LOG_PAGE;

			/* verify the 0xC5 (OCP Unsupported Requirments) log page is supported */
			if (wdc_nvme_check_supported_log_page(r, dev, WDC_UNSUPPORTED_REQS_LOG_ID))
				capabilities |= WDC_DRIVE_CAP_OCP_C5_LOG_PAGE;

			capabilities |= (WDC_DRIVE_CAP_CAP_DIAG | WDC_DRIVE_CAP_INTERNAL_LOG |
					WDC_DRIVE_CAP_DRIVE_STATUS | WDC_DRIVE_CAP_CLEAR_ASSERT |
					WDC_DRIVE_CAP_RESIZE | WDC_DRIVE_CAP_FW_ACTIVATE_HISTORY |
					WDC_DRVIE_CAP_DISABLE_CTLR_TELE_LOG | WDC_DRIVE_CAP_REASON_ID |
					WDC_DRIVE_CAP_LOG_PAGE_DIR);

			cust_id = wdc_get_fw_cust_id(r, dev);
			if (cust_id == WDC_INVALID_CUSTOMER_ID) {
				fprintf(stderr, "%s: ERROR : WDC : invalid customer id\n", __func__);
				return -1;
			}

			if ((cust_id == WDC_CUSTOMER_ID_0x1004) || (cust_id == WDC_CUSTOMER_ID_0x1008) ||
					(cust_id == WDC_CUSTOMER_ID_0x1005) || (cust_id == WDC_CUSTOMER_ID_0x1304))
				capabilities |= (WDC_DRIVE_CAP_VU_FID_CLEAR_FW_ACT_HISTORY | WDC_DRIVE_CAP_VU_FID_CLEAR_PCIE |
						WDC_DRIVE_CAP_INFO | WDC_DRIVE_CAP_CLOUD_SSD_VERSION);
			else
				capabilities |= (WDC_DRIVE_CAP_CLEAR_FW_ACT_HISTORY | WDC_DRIVE_CAP_CLEAR_PCIE);

			break;
		default:
			capabilities = 0;
		}
		break;
	case WDC_NVME_SNDK_VID:
		switch (read_device_id) {
		case WDC_NVME_SXSLCL_DEV_ID:
			capabilities = WDC_DRIVE_CAP_DRIVE_ESSENTIALS;
			break;
		case WDC_NVME_SN520_DEV_ID:
		/* FALLTHRU */
		case WDC_NVME_SN520_DEV_ID_1:
		/* FALLTHRU */
		case WDC_NVME_SN520_DEV_ID_2:
		case WDC_NVME_SN530_DEV_ID:
		case WDC_NVME_SN810_DEV_ID:
			capabilities = WDC_DRIVE_CAP_DUI_DATA;
			break;
		case WDC_NVME_SN820CL_DEV_ID:
			capabilities = WDC_DRIVE_CAP_DUI_DATA | WDC_DRIVE_CAP_CLOUD_BOOT_SSD_VERSION |
				WDC_DRIVE_CAP_CLOUD_LOG_PAGE | WDC_DRIVE_CAP_C0_LOG_PAGE |
				WDC_DRIVE_CAP_HW_REV_LOG_PAGE | WDC_DRIVE_CAP_INFO |
				WDC_DRIVE_CAP_VU_FID_CLEAR_PCIE | WDC_DRIVE_CAP_NAND_STATS |
					WDC_DRIVE_CAP_DEVICE_WAF | WDC_DRIVE_CAP_TEMP_STATS;
			break;
		case WDC_NVME_SN720_DEV_ID:
			capabilities = WDC_DRIVE_CAP_DUI_DATA | WDC_DRIVE_CAP_NAND_STATS | WDC_DRIVE_CAP_NS_RESIZE;
			break;
		case WDC_NVME_SN730A_DEV_ID:
			capabilities =  WDC_DRIVE_CAP_DUI | WDC_DRIVE_CAP_NAND_STATS | WDC_DRIVE_CAP_INFO |
			WDC_DRIVE_CAP_TEMP_STATS | WDC_DRIVE_CAP_VUC_CLEAR_PCIE | WDC_DRIVE_CAP_PCIE_STATS;
			break;
                case WDC_NVME_SN740_DEV_ID:
                case WDC_NVME_SN740_DEV_ID_1:
                case WDC_NVME_SN740_DEV_ID_2:
                case WDC_NVME_SN740_DEV_ID_3:
		case WDC_NVME_SN340_DEV_ID:
			capabilities = WDC_DRIVE_CAP_DUI;
			break;
		case WDC_NVME_ZN350_DEV_ID:
		/* FALLTHRU */
		case WDC_NVME_ZN350_DEV_ID_1:
			capabilities = WDC_DRIVE_CAP_DUI_DATA | WDC_DRIVE_CAP_VU_FID_CLEAR_PCIE | WDC_DRIVE_CAP_C0_LOG_PAGE |
			        WDC_DRIVE_CAP_VU_FID_CLEAR_FW_ACT_HISTORY | WDC_DRIVE_CAP_FW_ACTIVATE_HISTORY_C2 |
			        WDC_DRIVE_CAP_INFO | WDC_DRIVE_CAP_CLOUD_SSD_VERSION | WDC_DRIVE_CAP_LOG_PAGE_DIR;
			break;
		default:
			capabilities = 0;
		}
		break;
	default:
		capabilities = 0;
	}

	return capabilities;
}

static __u64 wdc_get_enc_drive_capabilities(nvme_root_t r,
					    struct nvme_dev *dev)
{
	int ret;
	uint32_t read_vendor_id;
	__u64 capabilities = 0;
	__u32 cust_id;

	ret = wdc_get_vendor_id(dev, &read_vendor_id);
	if (ret < 0)
		return capabilities;

	switch (read_vendor_id) {
		case WDC_NVME_VID:
			capabilities = (WDC_DRIVE_CAP_CAP_DIAG | WDC_DRIVE_CAP_INTERNAL_LOG | WDC_DRIVE_CAP_CLEAR_PCIE |
				WDC_DRIVE_CAP_DRIVE_LOG | WDC_DRIVE_CAP_CRASH_DUMP | WDC_DRIVE_CAP_PFAIL_DUMP);

			/* verify the 0xCA log page is supported */
			if (wdc_nvme_check_supported_log_page(r, dev, WDC_NVME_GET_DEVICE_INFO_LOG_OPCODE) == true)
				capabilities |= WDC_DRIVE_CAP_CA_LOG_PAGE;

			/* verify the 0xC1 log page is supported */
			if (wdc_nvme_check_supported_log_page(r, dev, WDC_NVME_ADD_LOG_OPCODE) == true)
				capabilities |= WDC_DRIVE_CAP_C1_LOG_PAGE;
			break;
		case WDC_NVME_VID_2:
			capabilities = (WDC_DRIVE_CAP_CAP_DIAG | WDC_DRIVE_CAP_INTERNAL_LOG |
				WDC_DRIVE_CAP_DRIVE_STATUS | WDC_DRIVE_CAP_CLEAR_ASSERT |
				WDC_DRIVE_CAP_RESIZE);

			/* verify the 0xC3 log page is supported */
			if (wdc_nvme_check_supported_log_page(r, dev, WDC_LATENCY_MON_LOG_ID) == true)
				capabilities |= WDC_DRIVE_CAP_C3_LOG_PAGE;

			/* verify the 0xCB log page is supported */
			if (wdc_nvme_check_supported_log_page(r, dev, WDC_NVME_GET_FW_ACT_HISTORY_LOG_ID) == true)
				capabilities |= WDC_DRIVE_CAP_FW_ACTIVATE_HISTORY;

			/* verify the 0xCA log page is supported */
			if (wdc_nvme_check_supported_log_page(r, dev, WDC_NVME_GET_DEVICE_INFO_LOG_OPCODE) == true)
				capabilities |= WDC_DRIVE_CAP_CA_LOG_PAGE;

			/* verify the 0xD0 log page is supported */
			if (wdc_nvme_check_supported_log_page(r, dev, WDC_NVME_GET_VU_SMART_LOG_OPCODE) == true)
				capabilities |= WDC_DRIVE_CAP_D0_LOG_PAGE;

			cust_id = wdc_get_fw_cust_id(r, dev);
			if (cust_id == WDC_INVALID_CUSTOMER_ID) {
				fprintf(stderr, "%s: ERROR : WDC : invalid customer id\n", __func__);
				return -1;
			}

			if ((cust_id == WDC_CUSTOMER_ID_0x1004) || (cust_id == WDC_CUSTOMER_ID_0x1008) ||
					(cust_id == WDC_CUSTOMER_ID_0x1005) || (cust_id == WDC_CUSTOMER_ID_0x1304))
				capabilities |= (WDC_DRIVE_CAP_VU_FID_CLEAR_FW_ACT_HISTORY | WDC_DRIVE_CAP_VU_FID_CLEAR_PCIE);
			else
				capabilities |= (WDC_DRIVE_CAP_CLEAR_FW_ACT_HISTORY | WDC_DRIVE_CAP_CLEAR_PCIE);

			break;
		case WDC_NVME_SNDK_VID:
			capabilities = WDC_DRIVE_CAP_DRIVE_ESSENTIALS;
			break;
		default:
			capabilities = 0;
	}

	return capabilities;
}

static int wdc_get_serial_name(struct nvme_dev *dev, char *file, size_t len,
			       const char *suffix)
{
	int i;
	int ret;
	int res_len = 0;
	char orig[PATH_MAX] = {0};
	struct nvme_id_ctrl ctrl;
	int ctrl_sn_len = sizeof (ctrl.sn);

	i = sizeof (ctrl.sn) - 1;
	strncpy(orig, file, PATH_MAX - 1);
	memset(file, 0, len);
	memset(&ctrl, 0, sizeof (struct nvme_id_ctrl));
	ret = nvme_identify_ctrl(dev_fd(dev), &ctrl);
	if (ret) {
		fprintf(stderr, "ERROR : WDC : nvme_identify_ctrl() failed "
				"0x%x\n", ret);
		return -1;
	}
	/* Remove trailing spaces from the name */
	while (i && ctrl.sn[i] == ' ') {
		ctrl.sn[i] = '\0';
		i--;
	}
	if (ctrl.sn[sizeof (ctrl.sn) - 1] == '\0') {
		ctrl_sn_len = strlen(ctrl.sn);
	}

	res_len = snprintf(file, len, "%s%.*s%s", orig, ctrl_sn_len, ctrl.sn, suffix);
	if (len <= res_len) {
		fprintf(stderr, "ERROR : WDC : cannot format serial number due to data "
				"of unexpected length\n");
		return -1;
	}

	return 0;
}

static int wdc_create_log_file(char *file, __u8 *drive_log_data,
		__u32 drive_log_length)
{
	int fd;
	int ret;

	if (drive_log_length == 0) {
		fprintf(stderr, "ERROR : WDC: invalid log file length\n");
		return -1;
	}

	fd = open(file, O_WRONLY | O_CREAT | O_TRUNC, 0666);
	if (fd < 0) {
		fprintf(stderr, "ERROR : WDC: open : %s\n", strerror(errno));
		return -1;
	}

	while (drive_log_length > WRITE_SIZE) {
		ret = write(fd, drive_log_data, WRITE_SIZE);
		if (ret < 0) {
			fprintf (stderr, "ERROR : WDC: write : %s\n", strerror(errno));
			close(fd);
			return -1;
		}
		drive_log_data += WRITE_SIZE;
		drive_log_length -= WRITE_SIZE;
	}

	ret = write(fd, drive_log_data, drive_log_length);
	if (ret < 0) {
		fprintf(stderr, "ERROR : WDC : write : %s\n", strerror(errno));
		close(fd);
		return -1;
	}

	if (fsync(fd) < 0) {
		fprintf(stderr, "ERROR : WDC : fsync : %s\n", strerror(errno));
		close(fd);
		return -1;
	}
	close(fd);
	return 0;
}

bool wdc_get_dev_mng_log_entry(__u32 log_length,
    __u32 entry_id,
    struct wdc_c2_log_page_header* p_log_hdr,
    struct wdc_c2_log_subpage_header **p_p_found_log_entry)
{
    __u32 remaining_len = 0;
    __u32 log_entry_hdr_size = sizeof(struct wdc_c2_log_subpage_header) - 1;
    __u32 log_entry_size = 0;
    __u32 size = 0;
    bool valid_log;
    __u32 current_data_offset = 0;
    struct wdc_c2_log_subpage_header *p_next_log_entry = NULL;

    if (*p_p_found_log_entry == NULL) {
    	fprintf(stderr, "ERROR : WDC - wdc_get_dev_mng_log_entry: No ppLogEntry pointer.\n");
        return false;
    }

    *p_p_found_log_entry = NULL;

    /* Ensure log data is large enough for common header */
    if (log_length < sizeof(struct wdc_c2_log_page_header)) {
    	fprintf(stderr, "ERROR : WDC - wdc_get_dev_mng_log_entry: \
    			Buffer is not large enough for the common header. BufSize: 0x%x  HdrSize: %"PRIxPTR"\n",
                log_length, sizeof(struct wdc_c2_log_page_header));
        return false;
    }

    /* Get pointer to first log Entry */
    size = sizeof(struct wdc_c2_log_page_header);
    current_data_offset = size;
    p_next_log_entry = (struct wdc_c2_log_subpage_header *)((__u8*)p_log_hdr + current_data_offset);
    remaining_len = log_length - size;
    valid_log = false;

    /* Walk the entire structure. Perform a sanity check to make sure this is a
     standard version of the structure. This means making sure each entry looks
     valid. But allow for the data to overflow the allocated
     buffer (we don't want a false negative because of a FW formatting error) */

    /* Proceed only if there is at least enough data to read an entry header */
    while (remaining_len >= log_entry_hdr_size) {
        /* Get size of the next entry */
        log_entry_size = p_next_log_entry->length;

        /* If log entry size is 0 or the log entry goes past the end
         of the data, we must be at the end of the data */
        if ((log_entry_size == 0) ||
            (log_entry_size > remaining_len)) {
        	fprintf(stderr, "ERROR : WDC: wdc_get_dev_mng_log_entry: \
        			Detected unaligned end of the data. Data Offset: 0x%x  \
        			Entry Size: 0x%x, Remaining Log Length: 0x%x Entry Id: 0x%x\n",
					current_data_offset, log_entry_size, remaining_len, p_next_log_entry->entry_id);

            /* Force the loop to end */
            remaining_len = 0;
        } else if ((p_next_log_entry->entry_id == 0) ||
            (p_next_log_entry->entry_id > 200)) {
            /* Invalid entry - fail the search */
        	fprintf(stderr, "ERROR : WDC: wdc_get_dev_mng_log_entry: \
        			Invalid entry found at offset: 0x%x Entry Size: 0x%x, \
        			Remaining Log Length: 0x%x Entry Id: 0x%x\n",
                current_data_offset, log_entry_size, remaining_len, p_next_log_entry->entry_id);

            /* Force the loop to end */
            remaining_len = 0;
            valid_log = false;

            /* The struture is invalid, so any match that was found is invalid. */
            *p_p_found_log_entry = NULL;
        } else {
            /* Structure must have at least one valid entry to be considered valid */
            valid_log = true;
            if (p_next_log_entry->entry_id == entry_id) {
                /* A potential match. */
                *p_p_found_log_entry = p_next_log_entry;
            }

            remaining_len -= log_entry_size;

            if (remaining_len > 0) {
                /* Increment the offset counter */
                current_data_offset += log_entry_size;

                /* Get the next entry */
                p_next_log_entry = (struct wdc_c2_log_subpage_header *)(((__u8*)p_log_hdr) + current_data_offset);
            }
        }
    }

    return valid_log;
}

static bool get_dev_mgment_cbs_data(nvme_root_t r, struct nvme_dev *dev,
				    __u8 log_id, void **cbs_data)
{
	int ret = -1;
	void* data;
	struct wdc_c2_log_page_header *hdr_ptr;
	struct wdc_c2_log_subpage_header *sph;
	__u32 length = 0;
	bool found = false;
	__u8 uuid_ix = 1;
	__u8 lid = 0;
	*cbs_data = NULL;
	__u32 device_id, read_vendor_id;

	ret = wdc_get_pci_ids(r, dev, &device_id, &read_vendor_id);
	if(device_id == WDC_NVME_ZN350_DEV_ID || device_id == WDC_NVME_ZN350_DEV_ID_1) {
		lid = WDC_NVME_GET_DEV_MGMNT_LOG_PAGE_OPCODE_C8;
		uuid_ix = 0;
	} else
		lid = WDC_NVME_GET_DEV_MGMNT_LOG_PAGE_OPCODE;

	if ((data = (__u8*) malloc(sizeof (__u8) * WDC_C2_LOG_BUF_LEN)) == NULL) {
		fprintf(stderr, "ERROR : WDC : malloc : %s\n", strerror(errno));
		return false;
	}
	memset(data, 0, sizeof (__u8) * WDC_C2_LOG_BUF_LEN);

	/* get the log page length */
	struct nvme_get_log_args args_len = {
		.args_size	= sizeof(args_len),
		.fd		= dev_fd(dev),
		.lid		= lid,
		.nsid		= 0xFFFFFFFF,
		.lpo		= 0,
		.lsp		= NVME_LOG_LSP_NONE,
		.lsi		= 0,
		.rae		= false,
		.uuidx		= uuid_ix,
		.csi		= NVME_CSI_NVM,
		.ot		= false,
		.len		= WDC_C2_LOG_BUF_LEN,
		.log		= data,
		.timeout	= NVME_DEFAULT_IOCTL_TIMEOUT,
		.result		= NULL,
	};
	ret = nvme_get_log(&args_len);
	if (ret) {
		fprintf(stderr, "ERROR : WDC : Unable to get 0x%x Log Page length, ret = 0x%x\n", lid, ret);
		goto end;
	}

	hdr_ptr = (struct wdc_c2_log_page_header *)data;
	length = le32_to_cpu(hdr_ptr->length);

	if (length > WDC_C2_LOG_BUF_LEN) {
		/* Log Page buffer too small, free and reallocate the necessary size */
		free(data);
		data = calloc(length, sizeof(__u8));
		if (data == NULL) {
			fprintf(stderr, "ERROR : WDC : malloc : %s\n", strerror(errno));
			return false;
		}
	}

	/* get the log page data */
	struct nvme_get_log_args args_data = {
		.args_size	= sizeof(args_data),
		.fd		= dev_fd(dev),
		.lid		= lid,
		.nsid		= 0xFFFFFFFF,
		.lpo		= 0,
		.lsp		= NVME_LOG_LSP_NONE,
		.lsi		= 0,
		.rae		= false,
		.uuidx		= uuid_ix,
		.csi		= NVME_CSI_NVM,
		.ot		= false,
		.len		= length,
		.log		= data,
		.timeout	= NVME_DEFAULT_IOCTL_TIMEOUT,
		.result		= NULL,
	};
	ret = nvme_get_log(&args_data);

	if (ret) {
		fprintf(stderr, "ERROR : WDC : Unable to read 0x%x Log Page data, ret = 0x%x\n", lid, ret);
		goto end;
	}

	/* Check the log data to see if the WD version of log page ID's is found */

	length = sizeof(struct wdc_c2_log_page_header);
	hdr_ptr = (struct wdc_c2_log_page_header *)data;
	sph = (struct wdc_c2_log_subpage_header *)(data + length);
	found = wdc_get_dev_mng_log_entry(le32_to_cpu(hdr_ptr->length), log_id, hdr_ptr, &sph);
	if (found) {
		*cbs_data = calloc(le32_to_cpu(sph->length), sizeof(__u8));
		if (*cbs_data == NULL) {
			fprintf(stderr, "ERROR : WDC : calloc : %s\n", strerror(errno));
			goto end;
		}
		memcpy((void *)*cbs_data, (void *)&sph->data, le32_to_cpu(sph->length));
	} else {
		/* not found with uuid = 1 try with uuid = 0 */
		uuid_ix = 0;
		/* get the log page data */
		struct nvme_get_log_args args = {
			.args_size	= sizeof(args),
			.fd		= dev_fd(dev),
			.lid		= lid,
			.nsid		= 0xFFFFFFFF,
			.lpo		= 0,
			.lsp		= NVME_LOG_LSP_NONE,
			.lsi		= 0,
			.rae		= false,
			.uuidx		= uuid_ix,
			.csi		= NVME_CSI_NVM,
			.ot		= false,
			.len		= le32_to_cpu(hdr_ptr->length),
			.log		= data,
			.timeout	= NVME_DEFAULT_IOCTL_TIMEOUT,
			.result		= NULL,
		};
		ret = nvme_get_log(&args);

		hdr_ptr = (struct wdc_c2_log_page_header *)data;
		sph = (struct wdc_c2_log_subpage_header *)(data + length);
		found = wdc_get_dev_mng_log_entry(le32_to_cpu(hdr_ptr->length), log_id, hdr_ptr, &sph);
		if (found) {
			*cbs_data = calloc(le32_to_cpu(sph->length), sizeof(__u8));
			if (*cbs_data == NULL) {
				fprintf(stderr, "ERROR : WDC : calloc : %s\n", strerror(errno));
				goto end;
			}
			memcpy((void *)*cbs_data, (void *)&sph->data, le32_to_cpu(sph->length));

		} else {
			/* WD version not found  */
			fprintf(stderr, "ERROR : WDC : Unable to find correct version of page 0x%x, entry id = %d\n", lid, log_id);
		}
	}
end:
	free(data);
	return found;
}

static bool wdc_nvme_check_supported_log_page(nvme_root_t r,
					      struct nvme_dev *dev,
					      __u8 log_id)
{
	int i;
	bool found = false;
	struct wdc_c2_cbs_data *cbs_data = NULL;

	if (get_dev_mgment_cbs_data(r, dev, WDC_C2_LOG_PAGES_SUPPORTED_ID, (void *)&cbs_data)) {
		if (cbs_data != NULL) {
			for (i = 0; i < le32_to_cpu(cbs_data->length); i++) {
				if (log_id == cbs_data->data[i]) {
					found = true;
					break;
				}
			}

#ifdef WDC_NVME_CLI_DEBUG
			if (!found) {
				fprintf(stderr, "ERROR : WDC : Log Page 0x%x not supported\n", log_id);
				fprintf(stderr, "WDC : Supported Log Pages:\n");
				/* print the supported pages */
				d((__u8 *)cbs_data->data, le32_to_cpu(cbs_data->length), 16, 1);
			}
#endif
			free(cbs_data);
		} else
			fprintf(stderr, "ERROR : WDC : cbs_data ptr = NULL\n");
	} else
		fprintf(stderr, "ERROR : WDC : 0xC2 Log Page entry ID 0x%x not found\n", WDC_C2_LOG_PAGES_SUPPORTED_ID);

	return found;
}

static bool wdc_nvme_get_dev_status_log_data(nvme_root_t r,
					     struct nvme_dev *dev,
					     __le32 *ret_data,
		__u8 log_id)
{
	__u32 *cbs_data = NULL;

	if (get_dev_mgment_cbs_data(r, dev, log_id, (void *)&cbs_data)) {
		if (cbs_data != NULL) {
			memcpy((void *)ret_data, (void *)cbs_data, 4);
			free(cbs_data);

			return true;
		}
	}

	*ret_data = 0;
	return false;
}

static int wdc_do_clear_dump(struct nvme_dev *dev, __u8 opcode, __u32 cdw12)
{
	int ret;
	struct nvme_passthru_cmd admin_cmd;

	memset(&admin_cmd, 0, sizeof (struct nvme_passthru_cmd));
	admin_cmd.opcode = opcode;
	admin_cmd.cdw12 = cdw12;
	ret = nvme_submit_admin_passthru(dev_fd(dev), &admin_cmd, NULL);
	if (ret != 0) {
		fprintf(stdout, "ERROR : WDC : Crash dump erase failed\n");
	}
	nvme_show_status(ret);
	return ret;
}

static __u32 wdc_dump_length(int fd, __u32 opcode, __u32 cdw10, __u32 cdw12, __u32 *dump_length)
{
	int ret;
	__u8 buf[WDC_NVME_LOG_SIZE_DATA_LEN] = {0};
	struct wdc_log_size *l;
	struct nvme_passthru_cmd admin_cmd;

	l = (struct wdc_log_size *) buf;
	memset(&admin_cmd, 0, sizeof (struct nvme_passthru_cmd));
	admin_cmd.opcode = opcode;
	admin_cmd.addr = (__u64)(uintptr_t)buf;
	admin_cmd.data_len = WDC_NVME_LOG_SIZE_DATA_LEN;
	admin_cmd.cdw10 = cdw10;
	admin_cmd.cdw12 = cdw12;

	ret = nvme_submit_admin_passthru(fd, &admin_cmd, NULL);
	if (ret != 0) {
		l->log_size = 0;
		ret = -1;
		fprintf(stderr, "ERROR : WDC : reading dump length failed\n");
		nvme_show_status(ret);
		return ret;
	}

	if (opcode == WDC_NVME_CAP_DIAG_OPCODE)
		*dump_length = buf[0x04] << 24 | buf[0x05] << 16 | buf[0x06] << 8 | buf[0x07];
	else
		*dump_length = le32_to_cpu(l->log_size);
	return ret;
}

static __u32 wdc_dump_length_e6(int fd, __u32 opcode, __u32 cdw10, __u32 cdw12, struct wdc_e6_log_hdr *dump_hdr)
{
	int ret;
	struct nvme_passthru_cmd admin_cmd;

	memset(&admin_cmd, 0, sizeof (struct nvme_passthru_cmd));
	admin_cmd.opcode = opcode;
	admin_cmd.addr = (__u64)(uintptr_t)dump_hdr;
	admin_cmd.data_len = WDC_NVME_LOG_SIZE_HDR_LEN;
	admin_cmd.cdw10 = cdw10;
	admin_cmd.cdw12 = cdw12;

	ret = nvme_submit_admin_passthru(fd, &admin_cmd, NULL);
	if (ret != 0) {
		fprintf(stderr, "ERROR : WDC : reading dump length failed\n");
		nvme_show_status(ret);
	}

	return ret;
}

static __u32 wdc_dump_dui_data(int fd, __u32 dataLen, __u32 offset, __u8 *dump_data, bool last_xfer)
{
	int ret;
	struct nvme_passthru_cmd admin_cmd;

	memset(&admin_cmd, 0, sizeof (struct nvme_passthru_cmd));
	admin_cmd.opcode = WDC_NVME_CAP_DUI_OPCODE;
	admin_cmd.nsid = 0xFFFFFFFF;
	admin_cmd.addr = (__u64)(uintptr_t)dump_data;
	admin_cmd.data_len = dataLen;
	admin_cmd.cdw10 = ((dataLen >> 2) - 1);
	admin_cmd.cdw12 = offset;
	if (last_xfer)
		admin_cmd.cdw14 = 0;
	else
		admin_cmd.cdw14 = WDC_NVME_CAP_DUI_DISABLE_IO;


	ret = nvme_submit_admin_passthru(fd, &admin_cmd, NULL);
	if (ret != 0) {
		fprintf(stderr, "ERROR : WDC : reading DUI data failed\n");
		nvme_show_status(ret);
	}

	return ret;
}

static __u32 wdc_dump_dui_data_v2(int fd, __u32 dataLen, __u64 offset, __u8 *dump_data, bool last_xfer)
{
	int ret;
	struct nvme_passthru_cmd admin_cmd;
	__u64 offset_lo, offset_hi;

	memset(&admin_cmd, 0, sizeof (struct nvme_passthru_cmd));
	admin_cmd.opcode = WDC_NVME_CAP_DUI_OPCODE;
	admin_cmd.nsid = 0xFFFFFFFF;
	admin_cmd.addr = (__u64)(uintptr_t)dump_data;
	admin_cmd.data_len = dataLen;
	admin_cmd.cdw10 = ((dataLen >> 2) - 1);
	offset_lo = offset & 0x00000000FFFFFFFF;
	offset_hi = ((offset & 0xFFFFFFFF00000000) >> 32);
	admin_cmd.cdw12 = (__u32)offset_lo;
	admin_cmd.cdw13 = (__u32)offset_hi;

	if (last_xfer)
		admin_cmd.cdw14 = 0;
	else
		admin_cmd.cdw14 = WDC_NVME_CAP_DUI_DISABLE_IO;

	ret = nvme_submit_admin_passthru(fd, &admin_cmd, NULL);
	if (ret != 0) {
		fprintf(stderr, "ERROR : WDC : reading DUI data V2 failed\n");
		nvme_show_status(ret);
	}

	return ret;
}

static int wdc_do_dump(struct nvme_dev *dev, __u32 opcode,__u32 data_len,
		__u32 cdw12, char *file, __u32 xfer_size)
{
	int ret = 0;
	__u8 *dump_data;
	__u32 curr_data_offset, curr_data_len;
	int i;
	struct nvme_passthru_cmd admin_cmd;
	__u32 dump_length = data_len;

	dump_data = (__u8 *) malloc(sizeof (__u8) * dump_length);
	if (dump_data == NULL) {
		fprintf(stderr, "%s: ERROR : malloc : %s\n", __func__, strerror(errno));
		return -1;
	}
	memset(dump_data, 0, sizeof (__u8) * dump_length);
	memset(&admin_cmd, 0, sizeof (struct nvme_passthru_cmd));
	curr_data_offset = 0;
	curr_data_len = xfer_size;
	i = 0;

	admin_cmd.opcode = opcode;
	admin_cmd.addr = (__u64)(uintptr_t)dump_data;
	admin_cmd.data_len = curr_data_len;
	admin_cmd.cdw10 = curr_data_len >> 2;
	admin_cmd.cdw12 = cdw12;
	admin_cmd.cdw13 = curr_data_offset;

	while (curr_data_offset < data_len) {
		ret = nvme_submit_admin_passthru(dev_fd(dev), &admin_cmd,
						 NULL);
		if (ret != 0) {
			nvme_show_status(ret);
			fprintf(stderr, "%s: ERROR : WDC : Get chunk %d, size = 0x%x, offset = 0x%x, addr = 0x%lx\n",
				__func__, i, admin_cmd.data_len, curr_data_offset, (long unsigned int)admin_cmd.addr);
			break;
		}

		if ((curr_data_offset + xfer_size) <= data_len)
			curr_data_len = xfer_size;
		else
			curr_data_len = data_len - curr_data_offset;   /* last transfer */

		curr_data_offset += curr_data_len;
		admin_cmd.addr = (__u64)(uintptr_t)dump_data + (__u64)curr_data_offset;
		admin_cmd.data_len = curr_data_len;
		admin_cmd.cdw10 = curr_data_len >> 2;
		admin_cmd.cdw13 = curr_data_offset >> 2;
		i++;
	}

	if (ret == 0) {
		nvme_show_status(ret);
		ret = wdc_create_log_file(file, dump_data, dump_length);
	}
	free(dump_data);
	return ret;
}

static int wdc_do_dump_e6(int fd, __u32 opcode,__u32 data_len,
		__u32 cdw12, char *file, __u32 xfer_size, __u8 *log_hdr)
{
	int ret = 0;
	__u8 *dump_data;
	__u32 curr_data_offset, log_size;
	int i;
	struct nvme_passthru_cmd admin_cmd;

	dump_data = (__u8 *) malloc(sizeof (__u8) * data_len);

	if (dump_data == NULL) {
		fprintf(stderr, "%s: ERROR : malloc : %s\n", __func__, strerror(errno));
		return -1;
	}
	memset(dump_data, 0, sizeof (__u8) * data_len);
	memset(&admin_cmd, 0, sizeof (struct nvme_passthru_cmd));
	curr_data_offset = WDC_NVME_LOG_SIZE_HDR_LEN;
	i = 0;

	/* copy the 8 byte header into the dump_data buffer */
	memcpy(dump_data, log_hdr, WDC_NVME_LOG_SIZE_HDR_LEN);

	admin_cmd.opcode = opcode;
	admin_cmd.cdw12 = cdw12;

	log_size = data_len;
	while (log_size > 0) {
		xfer_size = min(xfer_size, log_size);

		admin_cmd.addr = (__u64)(uintptr_t)dump_data + (__u64)curr_data_offset;
		admin_cmd.data_len = xfer_size;
		admin_cmd.cdw10 = xfer_size >> 2;
		admin_cmd.cdw13 = curr_data_offset >> 2;

		ret = nvme_submit_admin_passthru(fd, &admin_cmd, NULL);
		if (ret != 0) {
			nvme_show_status(ret);
			fprintf(stderr, "%s: ERROR : WDC : Get chunk %d, size = 0x%x, offset = 0x%x, addr = 0x%lx\n",
					__func__, i, admin_cmd.data_len, curr_data_offset, (long unsigned int)admin_cmd.addr);
			break;
		}

		log_size         -= xfer_size;
		curr_data_offset += xfer_size;
		i++;
	}

	if (ret == 0) {
		fprintf(stderr, "%s:  ", __func__);
		nvme_show_status(ret);
	} else {
		fprintf(stderr, "%s:  FAILURE: ", __func__);
		nvme_show_status(ret);
		fprintf(stderr, "%s:  Partial data may have been captured\n", __func__);
		snprintf(file + strlen(file), PATH_MAX, "%s", "-PARTIAL");
	}

	ret = wdc_create_log_file(file, dump_data, data_len);

	free(dump_data);
	return ret;
}

static int wdc_do_cap_telemetry_log(struct nvme_dev *dev, char *file,
				    __u32 bs, int type, int data_area)
{
	struct nvme_telemetry_log *log;
	size_t full_size = 0;
	int err = 0, output;
	__u32 host_gen = 1;
	int ctrl_init = 0;
	__u32 result;
	void *buf = NULL;
	__u8 *data_ptr = NULL;
	int data_written = 0, data_remaining = 0;
	struct nvme_id_ctrl ctrl;
	__u64 capabilities = 0;
	nvme_root_t r;

	memset(&ctrl, 0, sizeof (struct nvme_id_ctrl));
	err = nvme_identify_ctrl(dev_fd(dev), &ctrl);
	if (err) {
		fprintf(stderr, "ERROR : WDC : nvme_identify_ctrl() failed "
				"0x%x\n", err);
		return err;
	}

	if (!(ctrl.lpa & 0x8)) {
		fprintf(stderr, "Telemetry Host-Initiated and Telemetry Controller-Initiated log pages not supported\n");
		return -EINVAL;
	}

	r = nvme_scan(NULL);
	capabilities = wdc_get_drive_capabilities(r, dev);

	if (type == WDC_TELEMETRY_TYPE_HOST) {
		host_gen = 1;
		ctrl_init = 0;
	} else if (type == WDC_TELEMETRY_TYPE_CONTROLLER) {
		if ((capabilities & WDC_DRIVE_CAP_INTERNAL_LOG) == WDC_DRIVE_CAP_INTERNAL_LOG) {
			/* Verify the Controller Initiated Option is enabled */
			err = nvme_get_features_data(dev_fd(dev),
						     WDC_VU_DISABLE_CNTLR_TELEMETRY_OPTION_FEATURE_ID,
						     0, 4, buf, &result);
			if (err == 0) {
				if (result == 0) {
					/* enabled */
					host_gen = 0;
					ctrl_init = 1;
				}
				else {
					fprintf(stderr, "%s: Controller initiated option telemetry log page disabled\n", __func__);
					return -EINVAL;
				}
			}
			else {
				fprintf(stderr, "ERROR : WDC: Get telemetry option feature failed.");
				nvme_show_status(err);
				return -EPERM;
			}
		}
		else {
			host_gen = 0;
			ctrl_init = 1;
		}
	} else {
		fprintf(stderr, "%s: Invalid type parameter; type = %d\n", __func__, type);
		return -EINVAL;
	}

	if (!file) {
		fprintf(stderr, "%s: Please provide an output file!\n", __func__);
		return -EINVAL;
	}

	output = open(file, O_WRONLY | O_CREAT | O_TRUNC, 0666);
	if (output < 0) {
		fprintf(stderr, "%s: Failed to open output file %s: %s!\n",
				__func__, file, strerror(errno));
		return output;
	}

	if (ctrl_init)
		err = nvme_get_ctrl_telemetry(dev_fd(dev), true, &log,
					      data_area, &full_size);
	else if (host_gen)
		err = nvme_get_new_host_telemetry(dev_fd(dev), &log,
						  data_area, &full_size);
	else
		err = nvme_get_host_telemetry(dev_fd(dev), &log, data_area,
					      &full_size);

	if (err < 0) {
		perror("get-telemetry-log");
		goto close_output;
	} else if (err > 0) {
		nvme_show_status(err);
		fprintf(stderr, "%s: Failed to acquire telemetry header!\n", __func__);
		goto close_output;
	}

	/*
	 * Continuously pull data until the offset hits the end of the last
	 * block.
	 */
	data_written = 0;
	data_remaining = full_size;
	data_ptr = (__u8 *)log;

	while (data_remaining) {
		data_written = write(output, data_ptr, data_remaining);

		if (data_written < 0) {
			data_remaining = data_written;
			break;
		} else if (data_written <= data_remaining) {
			data_remaining -= data_written;
			data_ptr += data_written;
		} else {
			/* Unexpected overwrite */
			fprintf(stderr, "Failure: Unexpected telemetry log overwrite - data_remaining = 0x%x, data_written = 0x%x\n",
					data_remaining, data_written);
			break;
		}
	}

	if (fsync(output) < 0) {
		fprintf(stderr, "ERROR : %s: fsync : %s\n", __func__, strerror(errno));
		err = -1;
	}

	free(log);
close_output:
	close(output);
	return err;
}

static int wdc_do_cap_diag(nvme_root_t r, struct nvme_dev *dev, char *file,
			   __u32 xfer_size, int type, int data_area)
{
	int ret = -1;
	__u32 e6_log_hdr_size = WDC_NVME_CAP_DIAG_HEADER_TOC_SIZE;
	struct wdc_e6_log_hdr *log_hdr;
	__u32 cap_diag_length;

	log_hdr = (struct wdc_e6_log_hdr *) malloc(e6_log_hdr_size);
	if (log_hdr == NULL) {
		fprintf(stderr, "%s: ERROR : malloc : %s\n", __func__, strerror(errno));
		ret = -1;
		goto out;
	}
	memset(log_hdr, 0, e6_log_hdr_size);

	if (type == WDC_TELEMETRY_TYPE_NONE) {
		ret = wdc_dump_length_e6(dev_fd(dev),
							WDC_NVME_CAP_DIAG_OPCODE,
							WDC_NVME_CAP_DIAG_HEADER_TOC_SIZE>>2,
							0x00,
							log_hdr);
		if (ret == -1) {
			ret = -1;
			goto out;
		}

		cap_diag_length = (log_hdr->log_size[0] << 24 | log_hdr->log_size[1] << 16 |
				log_hdr->log_size[2] << 8 | log_hdr->log_size[3]);

		if (cap_diag_length == 0) {
			fprintf(stderr, "INFO : WDC : Capture Diagnostics log is empty\n");
		} else {
			ret = wdc_do_dump_e6(dev_fd(dev),
					     WDC_NVME_CAP_DIAG_OPCODE,
							cap_diag_length,
							(WDC_NVME_CAP_DIAG_SUBCMD << WDC_NVME_SUBCMD_SHIFT) | WDC_NVME_CAP_DIAG_CMD,
							file, xfer_size, (__u8 *)log_hdr);

			fprintf(stderr, "INFO : WDC : Capture Diagnostics log, length = 0x%x\n", cap_diag_length);
		}
	} else if ((type == WDC_TELEMETRY_TYPE_HOST) ||
			(type == WDC_TELEMETRY_TYPE_CONTROLLER)) {
		/* Get the desired telemetry log page */
		ret = wdc_do_cap_telemetry_log(dev, file, xfer_size, type, data_area);
	} else
		fprintf(stderr, "%s: ERROR : Invalid type : %d\n", __func__, type);

out:
	free(log_hdr);
	return ret;
}

static int wdc_do_cap_dui(int fd, char *file, __u32 xfer_size, int data_area, int verbose, __u64 file_size, __u64 offset)
{
	int ret = 0;
	__u32 dui_log_hdr_size = WDC_NVME_CAP_DUI_HEADER_SIZE;
	struct wdc_dui_log_hdr *log_hdr;
	struct wdc_dui_log_hdr_v3 *log_hdr_v3;
	__u32 cap_dui_length;
	__u64 cap_dui_length_v3;
	__u64 cap_dui_length_v4;
	__u8 *dump_data = NULL;
	__u8 *buffer_addr;
	__s64 total_size = 0;
	int i;
	int j;
	bool last_xfer = false;
	int err = 0, output = 0;

	log_hdr = (struct wdc_dui_log_hdr *) malloc(dui_log_hdr_size);
	if (log_hdr == NULL) {
		fprintf(stderr, "%s: ERROR : log header malloc failed : status %s, size 0x%x\n",
				__func__, strerror(errno), dui_log_hdr_size);
		return -1;
	}
	memset(log_hdr, 0, dui_log_hdr_size);

	/* get the dui telemetry and log headers  */
	ret = wdc_dump_dui_data(fd, WDC_NVME_CAP_DUI_HEADER_SIZE, 0x00,	(__u8 *)log_hdr, last_xfer);
	if (ret != 0) {
		fprintf(stderr, "%s: ERROR : WDC : Get DUI headers failed\n", __func__);
		fprintf(stderr, "%s: ERROR : WDC : ", __func__);
		nvme_show_status(ret);
		goto out;
	}

	/* Check the Log Header version  */
	if ((log_hdr->hdr_version & 0xFF) == 0x00 ||
        (log_hdr->hdr_version & 0xFF) == 0x01)	{
		__s32 log_size = 0;
		__u32 curr_data_offset = 0;

		cap_dui_length = le32_to_cpu(log_hdr->log_size);

		if (verbose) {
			fprintf(stderr, "INFO : WDC : Capture V1 Device Unit Info log, data area = %d\n", data_area);
			fprintf(stderr, "INFO : WDC : DUI Header Version = 0x%x\n", log_hdr->hdr_version);
		}

		if (cap_dui_length == 0) {
			fprintf(stderr, "INFO : WDC : Capture V1 Device Unit Info log is empty\n");
		} else {
			/* parse log header for all sections up to specified data area inclusively */
			if (data_area != WDC_NVME_DUI_MAX_DATA_AREA) {
				for(j = 0; j < WDC_NVME_DUI_MAX_SECTION; j++) {
					if (log_hdr->log_section[j].data_area_id <= data_area &&
							log_hdr->log_section[j].data_area_id != 0) {
						log_size += log_hdr->log_section[j].section_size;
						if (verbose)
							fprintf(stderr, "%s: Data area ID %d : section size 0x%x, total size = 0x%x\n",
									__func__, log_hdr->log_section[j].data_area_id, (unsigned int)log_hdr->log_section[j].section_size, (unsigned int)log_size);

					}
					else {
						if (verbose)
							fprintf(stderr, "%s: break, total size = 0x%x\n", 	__func__, (unsigned int)log_size);
						break;
					}
				}
			} else
				log_size = cap_dui_length;

			total_size = log_size;

			dump_data = (__u8 *) malloc(sizeof (__u8) * xfer_size);
			if (dump_data == NULL) {
				fprintf(stderr, "%s: ERROR : dump data V1 malloc failed : status %s, size = 0x%x\n",
						__func__, strerror(errno), (unsigned int)xfer_size);
				ret = -1;
				goto out;
			}
			memset(dump_data, 0, sizeof (__u8) * xfer_size);

			output = open(file, O_WRONLY | O_CREAT | O_TRUNC, 0666);
			if (output < 0) {
				fprintf(stderr, "%s: Failed to open output file %s: %s!\n",
						__func__, file, strerror(errno));
				ret = output;
				goto free_mem;
			}

			/* write the telemetry and log headers into the dump_file */
			err = write(output, (void *)log_hdr, WDC_NVME_CAP_DUI_HEADER_SIZE);
			if (err != WDC_NVME_CAP_DUI_HEADER_SIZE) {
				fprintf(stderr, "%s:  Failed to flush header data to file!\n", __func__);
				goto free_mem;
			}

			log_size -= WDC_NVME_CAP_DUI_HEADER_SIZE;
			curr_data_offset = WDC_NVME_CAP_DUI_HEADER_SIZE;
			i = 0;
			buffer_addr = dump_data;

			for(; log_size > 0; log_size -= xfer_size) {
				xfer_size = min(xfer_size, log_size);

				if (log_size <= xfer_size)
					last_xfer = true;

				ret = wdc_dump_dui_data(fd, xfer_size, curr_data_offset, buffer_addr, last_xfer);
				if (ret != 0) {
					fprintf(stderr, "%s: ERROR : WDC : Get chunk %d, size = 0x%"PRIx64", offset = 0x%x, addr = %p\n",
							__func__, i, (uint64_t)log_size, curr_data_offset, buffer_addr);
					fprintf(stderr, "%s: ERROR : WDC : ",
						__func__);
					nvme_show_status(ret);
					break;
				}

				/* write the dump data into the file */
				err = write(output, (void *)buffer_addr, xfer_size);
				if (err != xfer_size) {
					fprintf(stderr, "%s: ERROR : WDC : Failed to flush DUI data to file! chunk %d, err = 0x%x, xfer_size = 0x%x\n",
							__func__, i, err, xfer_size);
					goto free_mem;
				}

				curr_data_offset += xfer_size;
				i++;
			}
		}
	}
	else if (((log_hdr->hdr_version & 0xFF) == 0x02) ||
		((log_hdr->hdr_version & 0xFF) == 0x03)) {					/* Process Version 2 or 3 header */
		__s64 log_size = 0;
		__u64 curr_data_offset = 0;
		__u64 xfer_size_long = (__u64)xfer_size;

		log_hdr_v3 = (struct wdc_dui_log_hdr_v3 *)log_hdr;

		cap_dui_length_v3 = le64_to_cpu(log_hdr_v3->log_size);

		if (verbose) {
			fprintf(stderr, "INFO : WDC : Capture V2 or V3 Device Unit Info log, data area = %d\n", data_area);

			fprintf(stderr, "INFO : WDC : DUI Header Version = 0x%x\n", log_hdr_v3->hdr_version);
			if ((log_hdr->hdr_version & 0xFF) == 0x03)
			    fprintf(stderr, "INFO : WDC : DUI Product ID = 0x%x/%c\n", log_hdr_v3->product_id, log_hdr_v3->product_id);
		}

		if (cap_dui_length_v3 == 0) {
			fprintf(stderr, "INFO : WDC : Capture V2 or V3 Device Unit Info log is empty\n");
		} else {
			/* parse log header for all sections up to specified data area inclusively */
			if (data_area != WDC_NVME_DUI_MAX_DATA_AREA) {
				for(j = 0; j < WDC_NVME_DUI_MAX_SECTION_V3; j++) {
					if (log_hdr_v3->log_section[j].data_area_id <= data_area &&
							log_hdr_v3->log_section[j].data_area_id != 0) {
						log_size += log_hdr_v3->log_section[j].section_size;
						if (verbose)
							fprintf(stderr, "%s: Data area ID %d : section size 0x%x, total size = 0x%"PRIx64"\n",
								__func__, log_hdr_v3->log_section[j].data_area_id, (unsigned int)log_hdr_v3->log_section[j].section_size, (uint64_t)log_size);
					}
					else {
						if (verbose)
							fprintf(stderr, "%s: break, total size = 0x%"PRIx64"\n", __func__, (uint64_t)log_size);
						break;
					}
				}
			} else
				log_size = cap_dui_length_v3;

			total_size = log_size;

			if (offset >= total_size) {
				fprintf(stderr, "%s: INFO : WDC : Offset 0x%"PRIx64" exceeds total size 0x%"PRIx64", no data retrieved\n",
					__func__, (uint64_t)offset, (uint64_t)total_size);
				goto out;
			}

			dump_data = (__u8 *) malloc(sizeof (__u8) * xfer_size_long);
			if (dump_data == NULL) {
				fprintf(stderr, "%s: ERROR : dump data v3 malloc failed : status %s, size = 0x%"PRIx64"\n",
						__func__, strerror(errno), (uint64_t)xfer_size_long);
				ret = -1;
				goto out;
			}
			memset(dump_data, 0, sizeof (__u8) * xfer_size_long);

			output = open(file, O_WRONLY | O_CREAT | O_TRUNC, 0666);
			if (output < 0) {
				fprintf(stderr, "%s: Failed to open output file %s: %s!\n",
						__func__, file, strerror(errno));
				ret = output;
				goto free_mem;
			}

			curr_data_offset = 0;

			if (file_size != 0) {
				/* Write the DUI data based on the passed in file size */
				if ((offset + file_size) > total_size)
					log_size = min((total_size - offset), file_size);
				else
					log_size = min(total_size, file_size);

				if (verbose)
					fprintf(stderr, "%s: INFO : WDC : Offset 0x%"PRIx64", file size 0x%"PRIx64", total size 0x%"PRIx64", log size 0x%"PRIx64"\n",
						__func__, (uint64_t)offset, (uint64_t)file_size, (uint64_t)total_size, (uint64_t)log_size);

				curr_data_offset = offset;

			}

			i = 0;
			buffer_addr = dump_data;

			for(; log_size > 0; log_size -= xfer_size_long) {
				xfer_size_long = min(xfer_size_long, log_size);

				if (log_size <= xfer_size_long)
					last_xfer = true;

				ret = wdc_dump_dui_data_v2(fd, (__u32)xfer_size_long, curr_data_offset, buffer_addr, last_xfer);
				if (ret != 0) {
					fprintf(stderr, "%s: ERROR : WDC : Get chunk %d, size = 0x%"PRIx64", offset = 0x%"PRIx64", addr = %p\n",
							__func__, i, (uint64_t)total_size, (uint64_t)curr_data_offset, buffer_addr);
					fprintf(stderr, "%s: ERROR : WDC : ", __func__);
					nvme_show_status(ret);
					break;
				}

				/* write the dump data into the file */
				err = write(output, (void *)buffer_addr, xfer_size_long);
				if (err != xfer_size_long) {
					fprintf(stderr, "%s: ERROR : WDC : Failed to flush DUI data to file! chunk %d, err = 0x%x, xfer_size = 0x%"PRIx64"\n",
							__func__, i, err, (uint64_t)xfer_size_long);
					goto free_mem;
				}

				curr_data_offset += xfer_size_long;
				i++;
			}
		}
	}
	else if ((log_hdr->hdr_version & 0xFF) == 0x04)	{
		__s64 log_size = 0;
		__u64 curr_data_offset = 0;
		struct wdc_dui_log_hdr_v4 *log_hdr_v4;
		log_hdr_v4 = (struct wdc_dui_log_hdr_v4 *)log_hdr;
		__s64 xfer_size_long = (__s64)xfer_size;
		__s64 section_size_bytes = 0;

		cap_dui_length_v4 = le64_to_cpu(log_hdr_v4->log_size_sectors) * WDC_NVME_SN730_SECTOR_SIZE;

		if (verbose) {
			fprintf(stderr, "INFO : WDC : Capture V4 Device Unit Info log, data area = %d\n", data_area);
			fprintf(stderr, "INFO : WDC : DUI Header Version = 0x%x\n", log_hdr_v4->hdr_version);
			fprintf(stderr, "INFO : WDC : DUI Product ID = 0x%x/%c\n", log_hdr_v4->product_id, log_hdr_v4->product_id);
			fprintf(stderr, "INFO : WDC : DUI log size sectors = 0x%x\n", log_hdr_v4->log_size_sectors);
			fprintf(stderr, "INFO : WDC : DUI cap_dui_length = 0x%"PRIx64"\n", (uint64_t)cap_dui_length_v4);
		}

		if (cap_dui_length_v4 == 0) {
			fprintf(stderr, "INFO : WDC : Capture V4 Device Unit Info log is empty\n");
		} else {
			/* parse log header for all sections up to specified data area inclusively */
			if (data_area != WDC_NVME_DUI_MAX_DATA_AREA) {
				for(j = 0; j < WDC_NVME_DUI_MAX_SECTION; j++) {
					if (log_hdr_v4->log_section[j].data_area_id <= data_area &&
							log_hdr_v4->log_section[j].data_area_id != 0) {
						section_size_bytes = ((__s64)log_hdr_v4->log_section[j].section_size_sectors * WDC_NVME_SN730_SECTOR_SIZE);
						log_size += section_size_bytes;
						if (verbose)
							fprintf(stderr, "%s: Data area ID %d : section size 0x%x sectors, section size 0x%"PRIx64" bytes, total size = 0x%"PRIx64"\n",
									__func__, log_hdr_v4->log_section[j].data_area_id, log_hdr_v4->log_section[j].section_size_sectors, (uint64_t)section_size_bytes,
									(uint64_t)log_size);
					}
					else {
						if (verbose)
							fprintf(stderr, "%s: break, total size = 0x%"PRIx64"\n", __func__, (uint64_t)log_size);
						break;
					}
				}
			} else
				log_size = cap_dui_length_v4;

			total_size = log_size;

			if (offset >= total_size) {
				fprintf(stderr, "%s: INFO : WDC : Offset 0x%"PRIx64" exceeds total size 0x%"PRIx64", no data retrieved\n",
					__func__, (uint64_t)offset, (uint64_t)total_size);
				goto out;
			}

			dump_data = (__u8 *) malloc(sizeof (__u8) * xfer_size_long);
			if (dump_data == NULL) {
				fprintf(stderr, "%s: ERROR : dump data V4 malloc failed : status %s, size = 0x%x\n",
						__func__, strerror(errno), (unsigned int)xfer_size_long);
				ret = -1;
				goto out;
			}
			memset(dump_data, 0, sizeof (__u8) * xfer_size_long);

			output = open(file, O_WRONLY | O_CREAT | O_TRUNC, 0666);
			if (output < 0) {
				fprintf(stderr, "%s: Failed to open output file %s: %s!\n",
						__func__, file, strerror(errno));
				ret = output;
				goto free_mem;
			}

			curr_data_offset = 0;

			if (file_size != 0) {
				/* Write the DUI data based on the passed in file size */
				if ((offset + file_size) > total_size)
					log_size = min((total_size - offset), file_size);
				else
					log_size = min(total_size, file_size);

				if (verbose)
					fprintf(stderr, "%s: INFO : WDC : Offset 0x%"PRIx64", file size 0x%"PRIx64", total size 0x%"PRIx64", log size 0x%"PRIx64"\n",
						__func__, (uint64_t)offset, (uint64_t)file_size, (uint64_t)total_size, (uint64_t)log_size);

				curr_data_offset = offset;

			}

			i = 0;
			buffer_addr = dump_data;

			for(; log_size > 0; log_size -= xfer_size_long) {
				xfer_size_long = min(xfer_size_long, log_size);

				if (log_size <= xfer_size_long)
					last_xfer = true;

				ret = wdc_dump_dui_data_v2(fd, (__u32)xfer_size_long, curr_data_offset, buffer_addr, last_xfer);
				if (ret != 0) {
					fprintf(stderr, "%s: ERROR : WDC : Get chunk %d, size = 0x%"PRIx64", offset = 0x%"PRIx64", addr = %p\n",
							__func__, i, (uint64_t)log_size, (uint64_t)curr_data_offset, buffer_addr);
					fprintf(stderr, "%s: ERROR : WDC :", __func__);
					nvme_show_status(ret);
					break;
				}

				/* write the dump data into the file */
				err = write(output, (void *)buffer_addr, xfer_size_long);
				if (err != xfer_size_long) {
					fprintf(stderr, "%s: ERROR : WDC : Failed to flush DUI data to file! chunk %d, err = 0x%x, xfer_size_long = 0x%"PRIx64"\n",
							__func__, i, err, (uint64_t)xfer_size_long);
					goto free_mem;
				}

				curr_data_offset += xfer_size_long;
				i++;
			}
		}
	}
	else {
		fprintf(stderr, "INFO : WDC : Unsupported header version = 0x%x\n", log_hdr->hdr_version);
        goto out;
	}

	nvme_show_status(ret);
	if (verbose)
		fprintf(stderr, "INFO : WDC : Capture Device Unit Info log, length = 0x%"PRIx64"\n", (uint64_t)total_size);

 free_mem:
	close(output);
	free(dump_data);

 out:
	free(log_hdr);
	return ret;
}

static int wdc_cap_diag(int argc, char **argv, struct command *command,
		struct plugin *plugin)
{
	nvme_root_t r;
	char *desc = "Capture Diagnostics Log.";
	char *file = "Output file pathname.";
	char *size = "Data retrieval transfer size.";
	__u64 capabilities = 0;
	char f[PATH_MAX] = {0};
	struct nvme_dev *dev;
	__u32 xfer_size = 0;
	int ret = 0;

	struct config {
		char *file;
		__u32 xfer_size;
	};

	struct config cfg = {
		.file = NULL,
		.xfer_size = 0x10000
	};

	OPT_ARGS(opts) = {
		OPT_FILE("output-file",   'o', &cfg.file,      file),
		OPT_UINT("transfer-size", 's', &cfg.xfer_size, size),
		OPT_END()
	};

	ret = parse_and_open(&dev, argc, argv, desc, opts);
	if (ret)
		return ret;

	r = nvme_scan(NULL);

	if (cfg.file != NULL)
		strncpy(f, cfg.file, PATH_MAX - 1);
	if (cfg.xfer_size != 0)
		xfer_size = cfg.xfer_size;
	ret = wdc_get_serial_name(dev, f, PATH_MAX, "cap_diag");
	if (ret) {
		fprintf(stderr, "ERROR : WDC: failed to generate file name\n");
		goto out;
	}
	if (cfg.file == NULL) {
		if (strlen(f) > PATH_MAX - 5) {
			fprintf(stderr, "ERROR : WDC: file name overflow\n");
			ret = -1;
			goto out;
		}
		strcat(f, ".bin");
	}

	capabilities = wdc_get_drive_capabilities(r, dev);
	if ((capabilities & WDC_DRIVE_CAP_CAP_DIAG) == WDC_DRIVE_CAP_CAP_DIAG)
		ret = wdc_do_cap_diag(r, dev, f, xfer_size, 0, 0);
	else
		fprintf(stderr,
			"ERROR : WDC: unsupported device for this command\n");
out:
	nvme_free_tree(r);
	dev_close(dev);
	return ret;
}

static int wdc_do_get_sn730_log_len(int fd, uint32_t *len_buf, uint32_t subopcode)
{
	int ret;
	uint32_t *output = NULL;
	struct nvme_passthru_cmd admin_cmd;

	if ((output = (uint32_t*)malloc(sizeof(uint32_t))) == NULL) {
		fprintf(stderr, "ERROR : WDC : malloc : %s\n", strerror(errno));
		return -1;
	}
	memset(output, 0, sizeof (uint32_t));
	memset(&admin_cmd, 0, sizeof (struct nvme_passthru_cmd));

	admin_cmd.data_len = 8;
	admin_cmd.opcode = SN730_NVME_GET_LOG_OPCODE;
	admin_cmd.addr = (uintptr_t)output;
	admin_cmd.cdw12 = subopcode;
	admin_cmd.cdw10 = SN730_LOG_CHUNK_SIZE / 4;

	ret = nvme_submit_admin_passthru(fd, &admin_cmd, NULL);
	if (ret == 0)
		*len_buf = *output;
	free(output);
	return ret;
}

static int wdc_do_get_sn730_log(int fd, void * log_buf, uint32_t offset, uint32_t subopcode)
{
	int ret;
	uint8_t *output = NULL;
	struct nvme_passthru_cmd admin_cmd;

	if ((output = (uint8_t*)calloc(SN730_LOG_CHUNK_SIZE, sizeof(uint8_t))) == NULL) {
		fprintf(stderr, "ERROR : WDC : calloc : %s\n", strerror(errno));
		return -1;
	}
	memset(&admin_cmd, 0, sizeof (struct nvme_passthru_cmd));
	admin_cmd.data_len = SN730_LOG_CHUNK_SIZE;
	admin_cmd.opcode = SN730_NVME_GET_LOG_OPCODE;
	admin_cmd.addr = (uintptr_t)output;
	admin_cmd.cdw12 = subopcode;
	admin_cmd.cdw13 = offset;
	admin_cmd.cdw10 = SN730_LOG_CHUNK_SIZE / 4;

	ret = nvme_submit_admin_passthru(fd, &admin_cmd, NULL);
	if (!ret)
		memcpy(log_buf, output, SN730_LOG_CHUNK_SIZE);
	return ret;
}

static int get_sn730_log_chunks(int fd, uint8_t* log_buf, uint32_t log_len, uint32_t subopcode)
{
	int ret = 0;
	uint8_t* chunk_buf = NULL;
	int remaining = log_len;
	int curr_offset = 0;

	if ((chunk_buf = (uint8_t*) malloc(sizeof (uint8_t) * SN730_LOG_CHUNK_SIZE)) == NULL) {
		fprintf(stderr, "ERROR : WDC : malloc : %s\n", strerror(errno));
		ret = -1;
		goto out;
	}

	while (remaining > 0) {
		memset(chunk_buf, 0, SN730_LOG_CHUNK_SIZE);
		ret = wdc_do_get_sn730_log(fd, chunk_buf, curr_offset, subopcode);
		if (!ret) {
			if (remaining >= SN730_LOG_CHUNK_SIZE) {
				memcpy(log_buf + (curr_offset * SN730_LOG_CHUNK_SIZE),
						chunk_buf, SN730_LOG_CHUNK_SIZE);
			} else {
				memcpy(log_buf + (curr_offset * SN730_LOG_CHUNK_SIZE),
						chunk_buf, remaining);
			}
			remaining -= SN730_LOG_CHUNK_SIZE;
			curr_offset += 1;
		} else
			goto out;
	}
out:
	free(chunk_buf);
	return ret;
}

static int wdc_do_sn730_get_and_tar(int fd, char * outputName)
{
	int ret = 0;
	void *retPtr;
	uint8_t* full_log_buf = NULL;
	uint8_t* key_log_buf = NULL;
	uint8_t* core_dump_log_buf = NULL;
	uint8_t* extended_log_buf = NULL;
	uint32_t full_log_len = 0;
	uint32_t key_log_len = 0;
	uint32_t core_dump_log_len = 0;
	uint32_t extended_log_len = 0;
	tarfile_metadata* tarInfo = NULL;

	tarInfo = (struct tarfile_metadata*) malloc(sizeof(tarfile_metadata));
	if (tarInfo == NULL) {
		fprintf(stderr, "ERROR : WDC : malloc : %s\n", strerror(errno));
		ret = -1;
		goto free_buf;
	}
	memset(tarInfo, 0, sizeof(tarfile_metadata));

	/* Create Logs directory  */
	wdc_UtilsGetTime(&tarInfo->timeInfo);
	memset(tarInfo->timeString, 0, sizeof(tarInfo->timeString));
	wdc_UtilsSnprintf((char*)tarInfo->timeString, MAX_PATH_LEN, "%02u%02u%02u_%02u%02u%02u",
			tarInfo->timeInfo.year, tarInfo->timeInfo.month, tarInfo->timeInfo.dayOfMonth,
			tarInfo->timeInfo.hour, tarInfo->timeInfo.minute, tarInfo->timeInfo.second);

	wdc_UtilsSnprintf((char*)tarInfo->bufferFolderName, MAX_PATH_LEN, "%s",
			(char*)outputName);

	retPtr = getcwd((char*)tarInfo->currDir, MAX_PATH_LEN);
	if (retPtr != NULL)
		wdc_UtilsSnprintf((char*)tarInfo->bufferFolderPath, MAX_PATH_LEN, "%s%s%s",
				(char *)tarInfo->currDir, WDC_DE_PATH_SEPARATOR, (char *)tarInfo->bufferFolderName);
	else {
		fprintf(stderr, "ERROR : WDC : get current working directory failed\n");
		goto free_buf;
	}

	ret = wdc_UtilsCreateDir((char*)tarInfo->bufferFolderPath);
	if (ret)
	{
		fprintf(stderr, "ERROR : WDC : create directory failed, ret = %d, dir = %s\n", ret, tarInfo->bufferFolderPath);
		goto free_buf;
	} else {
		fprintf(stderr, "Stored log files in directory: %s\n", tarInfo->bufferFolderPath);
	}

	ret = wdc_do_get_sn730_log_len(fd, &full_log_len, SN730_GET_FULL_LOG_LENGTH);
	if (ret) {
		nvme_show_status(ret);
		goto free_buf;
	}
	ret = wdc_do_get_sn730_log_len(fd, &key_log_len, SN730_GET_KEY_LOG_LENGTH);
	if (ret) {
		nvme_show_status(ret);
		goto free_buf;
	}
	ret = wdc_do_get_sn730_log_len(fd, &core_dump_log_len, SN730_GET_COREDUMP_LOG_LENGTH);
	if (ret) {
		nvme_show_status(ret);
		goto free_buf;
	}
	ret = wdc_do_get_sn730_log_len(fd, &extended_log_len, SN730_GET_EXTENDED_LOG_LENGTH);
	if (ret) {
		nvme_show_status(ret);
		goto free_buf;
	}

	full_log_buf = (uint8_t*) calloc(full_log_len, sizeof (uint8_t));
	key_log_buf = (uint8_t*) calloc(key_log_len, sizeof (uint8_t));
	core_dump_log_buf = (uint8_t*) calloc(core_dump_log_len, sizeof (uint8_t));
	extended_log_buf = (uint8_t*) calloc(extended_log_len, sizeof (uint8_t));

	if (!full_log_buf || !key_log_buf || !core_dump_log_buf || !extended_log_buf) {
		fprintf(stderr, "ERROR : WDC : malloc : %s\n", strerror(errno));
		ret = -1;
		goto free_buf;
	}

	/* Get the full log */
	ret = get_sn730_log_chunks(fd, full_log_buf, full_log_len, SN730_GET_FULL_LOG_SUBOPCODE);
	if (ret) {
		nvme_show_status(ret);
		goto free_buf;
	}

	/* Get the key log */
	ret = get_sn730_log_chunks(fd, key_log_buf, key_log_len, SN730_GET_KEY_LOG_SUBOPCODE);
	if (ret) {
		nvme_show_status(ret);
		goto free_buf;
	}

	/* Get the core dump log */
	ret = get_sn730_log_chunks(fd, core_dump_log_buf, core_dump_log_len, SN730_GET_CORE_LOG_SUBOPCODE);
	if (ret) {
		nvme_show_status(ret);
		goto free_buf;
	}

	/* Get the extended log */
	ret = get_sn730_log_chunks(fd, extended_log_buf, extended_log_len, SN730_GET_EXTEND_LOG_SUBOPCODE);
	if (ret) {
		nvme_show_status(ret);
		goto free_buf;
	}

	/* Write log files */
	wdc_UtilsSnprintf(tarInfo->fileName, MAX_PATH_LEN, "%s%s%s_%s.bin", (char*)tarInfo->bufferFolderPath, WDC_DE_PATH_SEPARATOR,
			"full_log", (char*)tarInfo->timeString);
	wdc_WriteToFile(tarInfo->fileName, (char*)full_log_buf, full_log_len);

	wdc_UtilsSnprintf(tarInfo->fileName, MAX_PATH_LEN, "%s%s%s_%s.bin", (char*)tarInfo->bufferFolderPath, WDC_DE_PATH_SEPARATOR,
			"key_log", (char*)tarInfo->timeString);
	wdc_WriteToFile(tarInfo->fileName, (char*)key_log_buf, key_log_len);

	wdc_UtilsSnprintf(tarInfo->fileName, MAX_PATH_LEN, "%s%s%s_%s.bin", (char*)tarInfo->bufferFolderPath, WDC_DE_PATH_SEPARATOR,
			"core_dump_log", (char*)tarInfo->timeString);
	wdc_WriteToFile(tarInfo->fileName, (char*)core_dump_log_buf, core_dump_log_len);

	wdc_UtilsSnprintf(tarInfo->fileName, MAX_PATH_LEN, "%s%s%s_%s.bin", (char*)tarInfo->bufferFolderPath, WDC_DE_PATH_SEPARATOR,
			"extended_log", (char*)tarInfo->timeString);
	wdc_WriteToFile(tarInfo->fileName, (char*)extended_log_buf, extended_log_len);

	/* Tar the log directory */
	wdc_UtilsSnprintf(tarInfo->tarFileName, sizeof(tarInfo->tarFileName), "%s%s", (char*)tarInfo->bufferFolderPath, WDC_DE_TAR_FILE_EXTN);
	wdc_UtilsSnprintf(tarInfo->tarFiles, sizeof(tarInfo->tarFiles), "%s%s%s", (char*)tarInfo->bufferFolderName, WDC_DE_PATH_SEPARATOR, WDC_DE_TAR_FILES);
	wdc_UtilsSnprintf(tarInfo->tarCmd, sizeof(tarInfo->tarCmd), "%s %s %s", WDC_DE_TAR_CMD, (char*)tarInfo->tarFileName, (char*)tarInfo->tarFiles);

	ret = system(tarInfo->tarCmd);

	if (ret)
		fprintf(stderr, "ERROR : WDC : Tar of log data failed, ret = %d\n", ret);

free_buf:
	free(tarInfo);
	free(full_log_buf);
	free(core_dump_log_buf);
	free(key_log_buf);
	free(extended_log_buf);
	return ret;
}

static int wdc_vs_internal_fw_log(int argc, char **argv, struct command *command,
               struct plugin *plugin)
{
	char *desc = "Internal Firmware Log.";
	char *file = "Output file pathname.";
	char *size = "Data retrieval transfer size.";
	char *data_area = "Data area to retrieve up to. Currently only supported on the SN340, SN640, SN730, and SN840 devices.";
	char *file_size = "Output file size.  Currently only supported on the SN340 device.";
	char *offset = "Output file data offset. Currently only supported on the SN340 device.";
	char *type = "Telemetry type - NONE, HOST, or CONTROLLER. Currently only supported on the SN530, SN640, SN730, SN740, SN810, SN840 and ZN350 devices.";
	char *verbose = "Display more debug messages.";
	char f[PATH_MAX] = {0};
	char fileSuffix[PATH_MAX] = {0};
	struct nvme_dev *dev;
	nvme_root_t r;
	__u32 xfer_size = 0;
	int telemetry_type = 0, telemetry_data_area = 0;
	UtilsTimeInfo             timeInfo;
	__u8                      timeStamp[MAX_PATH_LEN];
	__u64 capabilities = 0;
	int ret = -1;

	struct config {
		char *file;
		__u32 xfer_size;
		int data_area;
		__u64 file_size;
		__u64 offset;
		char *type;
		bool verbose;
	};

	struct config cfg = {
		.file = NULL,
		.xfer_size = 0x10000,
		.data_area = 0,
		.file_size = 0,
		.offset = 0,
		.type = NULL,
		.verbose = false,
	};

	OPT_ARGS(opts) = {
		OPT_FILE("output-file",   'o', &cfg.file,      file),
		OPT_UINT("transfer-size", 's', &cfg.xfer_size, size),
		OPT_UINT("data-area",     'd', &cfg.data_area, data_area),
		OPT_LONG("file-size",     'f', &cfg.file_size, file_size),
		OPT_LONG("offset",        'e', &cfg.offset,    offset),
		OPT_FILE("type",          't', &cfg.type,      type),
		OPT_FLAG("verbose",       'v', &cfg.verbose,   verbose),
		OPT_END()
	};

	ret = parse_and_open(&dev, argc, argv, desc, opts);
	if (ret)
		return ret;

	r = nvme_scan(NULL);
	if (!wdc_check_device(r, dev))
		goto out;

	if (cfg.xfer_size != 0)
		xfer_size = cfg.xfer_size;
	else {
		fprintf(stderr, "ERROR : WDC : Invalid length\n");
		goto out;
	}

	if (cfg.file != NULL) {
		int verify_file;

		/* verify the passed in file name and path is valid before getting the dump data */
		verify_file = open(cfg.file, O_WRONLY | O_CREAT | O_TRUNC, 0666);
		if (verify_file < 0) {
			fprintf(stderr, "ERROR : WDC: open : %s\n", strerror(errno));
			goto out;
		}
		close(verify_file);
		strncpy(f, cfg.file, PATH_MAX - 1);
	} else {
		wdc_UtilsGetTime(&timeInfo);
		memset(timeStamp, 0, sizeof(timeStamp));
		wdc_UtilsSnprintf((char*)timeStamp, MAX_PATH_LEN, "%02u%02u%02u_%02u%02u%02u",
			timeInfo.year, timeInfo.month, timeInfo.dayOfMonth,
			timeInfo.hour, timeInfo.minute, timeInfo.second);
		snprintf(fileSuffix, PATH_MAX, "_internal_fw_log_%s", (char*)timeStamp);

		ret = wdc_get_serial_name(dev, f, PATH_MAX, fileSuffix);
		if (ret) {
			fprintf(stderr, "ERROR : WDC: failed to generate file name\n");
			goto out;
		}
	}

	if (cfg.file == NULL) {
		if (strlen(f) > PATH_MAX - 5) {
			fprintf(stderr, "ERROR : WDC: file name overflow\n");
			ret = -1;
			goto out;
		}
		strcat(f, ".bin");
	}
	fprintf(stderr, "%s: filename = %s\n", __func__, f);

	if (cfg.data_area) {
		if (cfg.data_area > 5 || cfg.data_area < 1) {
			fprintf(stderr, "ERROR : WDC: Data area must be 1-5\n");
			ret = -1;
			goto out;
		}
	}

	if ((cfg.type == NULL) ||
		(!strcmp(cfg.type, "NONE")) ||
		(!strcmp(cfg.type, "none"))) {
		telemetry_type = WDC_TELEMETRY_TYPE_NONE;
		data_area = 0;
	} else if ((!strcmp(cfg.type, "HOST")) ||
			(!strcmp(cfg.type, "host"))) {
		telemetry_type = WDC_TELEMETRY_TYPE_HOST;
		telemetry_data_area = cfg.data_area;
	} else if ((!strcmp(cfg.type, "CONTROLLER")) ||
			(!strcmp(cfg.type, "controller"))) {
		telemetry_type = WDC_TELEMETRY_TYPE_CONTROLLER;
		telemetry_data_area = cfg.data_area;
	} else {
		fprintf(stderr, "ERROR : WDC: Invalid type - Must be NONE, HOST or CONTROLLER\n");
		ret = -1;
		goto out;
	}

	capabilities = wdc_get_drive_capabilities(r, dev);
	if ((capabilities & WDC_DRIVE_CAP_INTERNAL_LOG) == WDC_DRIVE_CAP_INTERNAL_LOG) {
		if (telemetry_data_area == 0)
			telemetry_data_area = 3;       /* Set the default DA to 3 if not specified */

		ret = wdc_do_cap_diag(r, dev, f, xfer_size,
				      telemetry_type, telemetry_data_area);
		goto out;
	}
	if ((capabilities & WDC_DRIVE_CAP_DUI) == WDC_DRIVE_CAP_DUI) {
		if ((telemetry_type == WDC_TELEMETRY_TYPE_HOST) ||
			(telemetry_type == WDC_TELEMETRY_TYPE_CONTROLLER)) {
			if (telemetry_data_area == 0)
				telemetry_data_area = 3;       /* Set the default DA to 3 if not specified */
			/* Get the desired telemetry log page */
			ret = wdc_do_cap_telemetry_log(dev, f, xfer_size,
					telemetry_type, telemetry_data_area);
			goto out;
		} else {
			if (cfg.data_area == 0)
				cfg.data_area = 1;

			/* FW requirement - xfer size must be 256k for data area 4 */
			if (cfg.data_area >= 4)
				xfer_size = 0x40000;
			ret = wdc_do_cap_dui(dev_fd(dev), f, xfer_size,
					     cfg.data_area,
					     cfg.verbose, cfg.file_size,
					     cfg.offset);
			goto out;
		}
	}
	if ((capabilities & WDC_DRIVE_CAP_DUI_DATA) == WDC_DRIVE_CAP_DUI_DATA){
		if ((telemetry_type == WDC_TELEMETRY_TYPE_HOST) ||
			(telemetry_type == WDC_TELEMETRY_TYPE_CONTROLLER)) {
			if (telemetry_data_area == 0)
				telemetry_data_area = 3;       /* Set the default DA to 3 if not specified */
			/* Get the desired telemetry log page */
			ret = wdc_do_cap_telemetry_log(dev, f, xfer_size,
					telemetry_type, telemetry_data_area);
			goto out;
		} else {
			ret = wdc_do_cap_dui(dev_fd(dev), f, xfer_size,
					     WDC_NVME_DUI_MAX_DATA_AREA,
					     cfg.verbose, 0, 0);
			goto out;
		}
	}
	if ((capabilities & WDC_SN730B_CAP_VUC_LOG) == WDC_SN730B_CAP_VUC_LOG)
		ret = wdc_do_sn730_get_and_tar(dev_fd(dev), f);
	else {
		fprintf(stderr, "ERROR : WDC: unsupported device for this command\n");
		ret = -1;
	}
out:
	nvme_free_tree(r);
	dev_close(dev);
	return ret;
}

static int wdc_do_crash_dump(struct nvme_dev *dev, char *file, int type)
{
	int ret;
	__u32 crash_dump_length;
	__u32 opcode;
	__u32 cdw12;
	__u32 cdw10_size;
	__u32 cdw12_size;
	__u32 cdw12_clear;

	if (type == WDC_NVME_PFAIL_DUMP_TYPE) {
		/* set parms to get the PFAIL Crash Dump */
		opcode = WDC_NVME_PF_CRASH_DUMP_OPCODE;
		cdw10_size = WDC_NVME_PF_CRASH_DUMP_SIZE_NDT;
		cdw12_size = ((WDC_NVME_PF_CRASH_DUMP_SIZE_SUBCMD << WDC_NVME_SUBCMD_SHIFT) |
			WDC_NVME_PF_CRASH_DUMP_SIZE_CMD);

		cdw12 = (WDC_NVME_PF_CRASH_DUMP_SUBCMD << WDC_NVME_SUBCMD_SHIFT) |
			WDC_NVME_PF_CRASH_DUMP_CMD;

		cdw12_clear = ((WDC_NVME_CLEAR_PF_CRASH_DUMP_SUBCMD << WDC_NVME_SUBCMD_SHIFT) |
			WDC_NVME_CLEAR_CRASH_DUMP_CMD);

	} else {
		/* set parms to get the Crash Dump */
		opcode = WDC_NVME_CRASH_DUMP_OPCODE;
		cdw10_size = WDC_NVME_CRASH_DUMP_SIZE_NDT;
		cdw12_size = ((WDC_NVME_CRASH_DUMP_SIZE_SUBCMD << WDC_NVME_SUBCMD_SHIFT) |
			WDC_NVME_CRASH_DUMP_SIZE_CMD);

		cdw12 = (WDC_NVME_CRASH_DUMP_SUBCMD << WDC_NVME_SUBCMD_SHIFT) |
			WDC_NVME_CRASH_DUMP_CMD;

		cdw12_clear = ((WDC_NVME_CLEAR_CRASH_DUMP_SUBCMD << WDC_NVME_SUBCMD_SHIFT) |
			WDC_NVME_CLEAR_CRASH_DUMP_CMD);
	}

	ret = wdc_dump_length(dev_fd(dev),
			      opcode,
			      cdw10_size,
			      cdw12_size,
			      &crash_dump_length);

	if (ret == -1) {
		if (type == WDC_NVME_PFAIL_DUMP_TYPE)
		    fprintf(stderr, "INFO : WDC: Pfail dump get size failed\n");
		else
		    fprintf(stderr, "INFO : WDC: Crash dump get size failed\n");

		return -1;
	}

	if (crash_dump_length == 0) {
		if (type == WDC_NVME_PFAIL_DUMP_TYPE)
		    fprintf(stderr, "INFO : WDC: Pfail dump is empty\n");
		else
		    fprintf(stderr, "INFO : WDC: Crash dump is empty\n");
	} else {
		ret = wdc_do_dump(dev,
			opcode,
			crash_dump_length,
			cdw12,
			file,
			crash_dump_length);

		if (ret == 0)
			ret = wdc_do_clear_dump(dev, WDC_NVME_CLEAR_DUMP_OPCODE,
						cdw12_clear);
	}
	return ret;
}

static int wdc_crash_dump(struct nvme_dev *dev, char *file, int type)
{
	char f[PATH_MAX] = {0};
	const char *dump_type;
	int ret;

	if (file != NULL) {
		strncpy(f, file, PATH_MAX - 1);
	}

	if (type == WDC_NVME_PFAIL_DUMP_TYPE)
		dump_type = "_pfail_dump";
	else
		dump_type = "_crash_dump";

	ret = wdc_get_serial_name(dev, f, PATH_MAX, dump_type);
	if (ret)
		fprintf(stderr, "ERROR : WDC : failed to generate file name\n");
	else
		ret = wdc_do_crash_dump(dev, f, type);
	return ret;
}

static int wdc_do_drive_log(struct nvme_dev *dev, char *file)
{
	int ret;
	__u8 *drive_log_data;
	__u32 drive_log_length;
	struct nvme_passthru_cmd admin_cmd;

	ret = wdc_dump_length(dev_fd(dev), WDC_NVME_DRIVE_LOG_SIZE_OPCODE,
			      WDC_NVME_DRIVE_LOG_SIZE_NDT,
			      (WDC_NVME_DRIVE_LOG_SIZE_SUBCMD <<
			       WDC_NVME_SUBCMD_SHIFT | WDC_NVME_DRIVE_LOG_SIZE_CMD),
			      &drive_log_length);
	if (ret == -1) {
		return -1;
	}

	drive_log_data = (__u8 *) malloc(sizeof (__u8) * drive_log_length);
	if (drive_log_data == NULL) {
		fprintf(stderr, "ERROR : WDC : malloc : %s\n", strerror(errno));
		return -1;
	}

	memset(drive_log_data, 0, sizeof (__u8) * drive_log_length);
	memset(&admin_cmd, 0, sizeof (struct nvme_passthru_cmd));
	admin_cmd.opcode = WDC_NVME_DRIVE_LOG_OPCODE;
	admin_cmd.addr = (__u64)(uintptr_t)drive_log_data;
	admin_cmd.data_len = drive_log_length;
	admin_cmd.cdw10 = drive_log_length;
	admin_cmd.cdw12 = ((WDC_NVME_DRIVE_LOG_SUBCMD <<
				WDC_NVME_SUBCMD_SHIFT) | WDC_NVME_DRIVE_LOG_SIZE_CMD);

	ret = nvme_submit_admin_passthru(dev_fd(dev), &admin_cmd, NULL);
	nvme_show_status(ret);
	if (ret == 0) {
		ret = wdc_create_log_file(file, drive_log_data, drive_log_length);
	}
	free(drive_log_data);
	return ret;
}

static int wdc_drive_log(int argc, char **argv, struct command *command,
		struct plugin *plugin)
{
	const char *desc = "Capture Drive Log.";
	const char *file = "Output file pathname.";
	char f[PATH_MAX] = {0};
	struct nvme_dev *dev;
	int ret;
	nvme_root_t r;
	__u64 capabilities = 0;
	struct config {
		char *file;
	};

	struct config cfg = {
		.file = NULL
	};

	OPT_ARGS(opts) = {
		OPT_FILE("output-file", 'o', &cfg.file, file),
		OPT_END()
	};

	ret = parse_and_open(&dev, argc, argv, desc, opts);
	if (ret)
		return ret;

	r = nvme_scan(NULL);

	if (!wdc_check_device(r, dev)) {
		nvme_free_tree(r);
		dev_close(dev);
		return -1;
	}
	capabilities = wdc_get_drive_capabilities(r, dev);

	if ((capabilities & WDC_DRIVE_CAP_DRIVE_LOG) == 0) {
		fprintf(stderr, "ERROR : WDC: unsupported device for this command\n");
		ret = -1;
	} else {
		if (cfg.file != NULL) {
			strncpy(f, cfg.file, PATH_MAX - 1);
		}
		ret = wdc_get_serial_name(dev, f, PATH_MAX, "drive_log");
		if (ret)
			fprintf(stderr, "ERROR : WDC : failed to generate file name\n");
		else
			ret = wdc_do_drive_log(dev, f);
	}
	nvme_free_tree(r);
	dev_close(dev);
	return ret;
}

static int wdc_get_crash_dump(int argc, char **argv, struct command *command,
		struct plugin *plugin)
{
	const char *desc = "Get Crash Dump.";
	const char *file = "Output file pathname.";
	__u64 capabilities = 0;
	struct nvme_dev *dev;
	nvme_root_t r;
	int ret;

	struct config {
		char *file;
	};

	struct config cfg = {
		.file = NULL,
	};

	OPT_ARGS(opts) = {
		OPT_FILE("output-file", 'o', &cfg.file, file),
		OPT_END()
	};

	ret = parse_and_open(&dev, argc, argv, desc, opts);
	if (ret)
		return ret;

	r = nvme_scan(NULL);

	if (!wdc_check_device(r, dev)) {
		nvme_free_tree(r);
		dev_close(dev);
		return -1;

	}

	capabilities = wdc_get_drive_capabilities(r, dev);

	if ((capabilities & WDC_DRIVE_CAP_CRASH_DUMP) == 0) {
		fprintf(stderr, "ERROR : WDC: unsupported device for this command\n");
		ret = -1;
	} else {
		ret = wdc_crash_dump(dev, cfg.file, WDC_NVME_CRASH_DUMP_TYPE);
		if (ret != 0) {
			fprintf(stderr, "ERROR : WDC : failed to read crash dump\n");
		}
	}
	nvme_free_tree(r);
	dev_close(dev);
	return ret;
}

static int wdc_get_pfail_dump(int argc, char **argv, struct command *command,
		struct plugin *plugin)
{
	char *desc = "Get Pfail Crash Dump.";
	char *file = "Output file pathname.";
	__u64 capabilities = 0;
	struct nvme_dev *dev;
	struct config {
		char *file;
	};
	nvme_root_t r;
	int ret;

	struct config cfg = {
		.file = NULL,
	};

	OPT_ARGS(opts) = {
		OPT_FILE("output-file", 'o', &cfg.file, file),
		OPT_END()
	};

	ret = parse_and_open(&dev, argc, argv, desc, opts);
	if (ret)
		return ret;

	r = nvme_scan(NULL);

	if (!wdc_check_device(r, dev)) {
		nvme_free_tree(r);
		dev_close(dev);
		return -1;
	}

	capabilities = wdc_get_drive_capabilities(r, dev);
	if ((capabilities & WDC_DRIVE_CAP_PFAIL_DUMP) == 0) {
		fprintf(stderr, "ERROR : WDC: unsupported device for this command\n");
		ret = -1;
	} else {
		ret = wdc_crash_dump(dev, cfg.file, WDC_NVME_PFAIL_DUMP_TYPE);
		if (ret != 0) {
			fprintf(stderr, "ERROR : WDC : failed to read pfail crash dump\n");
		}
	}
	nvme_free_tree(r);
	dev_close(dev);
	return ret;
}

static void wdc_do_id_ctrl(__u8 *vs, struct json_object *root)
{
	char vsn[24] = {0};
	int base = 3072;
	int vsn_start = 3081;

	memcpy(vsn, &vs[vsn_start - base], sizeof(vsn));
	if (root)
		json_object_add_value_string(root, "wdc vsn", strlen(vsn) > 1 ? vsn : "NULL");
	else
		printf("wdc vsn : %s\n", strlen(vsn) > 1 ? vsn : "NULL");
}

static int wdc_id_ctrl(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	return __id_ctrl(argc, argv, cmd, plugin, wdc_do_id_ctrl);
}

static const char* wdc_purge_mon_status_to_string(__u32 status)
{
	const char *str;

	switch (status) {
	case WDC_NVME_PURGE_STATE_IDLE:
		str = "Purge State Idle.";
		break;
	case WDC_NVME_PURGE_STATE_DONE:
		str = "Purge State Done.";
		break;
	case WDC_NVME_PURGE_STATE_BUSY:
		str = "Purge State Busy.";
		break;
	case WDC_NVME_PURGE_STATE_REQ_PWR_CYC:
		str = "Purge Operation resulted in an error that requires "
			"power cycle.";
		break;
	case WDC_NVME_PURGE_STATE_PWR_CYC_PURGE:
		str = "The previous purge operation was interrupted by a power "
			"cycle\nor reset interruption. Other commands may be "
			"rejected until\nPurge Execute is issued and "
			"completed.";
		break;
	default:
		str = "Unknown.";
	}
	return str;
}

static int wdc_purge(int argc, char **argv,
		struct command *command, struct plugin *plugin)
{
	const char *desc = "Send a Purge command.";
	struct nvme_passthru_cmd admin_cmd;
	__u64 capabilities = 0;
	struct nvme_dev *dev;
	char *err_str;
	nvme_root_t r;
	int ret;

	OPT_ARGS(opts) = {
		OPT_END()
	};

	ret = parse_and_open(&dev, argc, argv, desc, opts);
	if (ret)
		return ret;

	r = nvme_scan(NULL);

	if (!wdc_check_device(r, dev)) {
		nvme_free_tree(r);
		dev_close(dev);
		return -1;
	}

	capabilities = wdc_get_drive_capabilities(r, dev);
	if((capabilities & WDC_DRIVE_CAP_PURGE) == 0) {
		ret = -1;
		fprintf(stderr, "ERROR : WDC: unsupported device for this command\n");
	} else {
		err_str = "";
		memset(&admin_cmd, 0, sizeof (admin_cmd));
		admin_cmd.opcode = WDC_NVME_PURGE_CMD_OPCODE;

		ret = nvme_submit_admin_passthru(dev_fd(dev), &admin_cmd,
						 NULL);
		if (ret > 0) {
			switch (ret) {
			case WDC_NVME_PURGE_CMD_SEQ_ERR:
				err_str = "ERROR : WDC : Cannot execute purge, "
						"Purge operation is in progress.\n";
				break;
			case WDC_NVME_PURGE_INT_DEV_ERR:
				err_str = "ERROR : WDC : Internal Device Error.\n";
				break;
			default:
				err_str = "ERROR : WDC\n";
			}
		}

		fprintf(stderr, "%s", err_str);
		nvme_show_status(ret);
	}
	nvme_free_tree(r);
	dev_close(dev);
	return ret;
}

static int wdc_purge_monitor(int argc, char **argv,
		struct command *command, struct plugin *plugin)
{
	const char *desc = "Send a Purge Monitor command.";
	__u8 output[WDC_NVME_PURGE_MONITOR_DATA_LEN];
	double progress_percent;
	struct nvme_passthru_cmd admin_cmd;
	struct wdc_nvme_purge_monitor_data *mon;
	struct nvme_dev *dev;
	__u64 capabilities;
	nvme_root_t r;
	int ret;

	OPT_ARGS(opts) = {
		OPT_END()
	};

	ret = parse_and_open(&dev, argc, argv, desc, opts);
	if (ret)
		return ret;

	r = nvme_scan(NULL);
	if (!wdc_check_device(r, dev)) {
		nvme_free_tree(r);
		dev_close(dev);
		return -1;
	}

	capabilities = wdc_get_drive_capabilities(r, dev);
	if((capabilities & WDC_DRIVE_CAP_PURGE) == 0) {
		ret = -1;
		fprintf(stderr, "ERROR : WDC: unsupported device for this command\n");
	} else {
		memset(output, 0, sizeof (output));
		memset(&admin_cmd, 0, sizeof (struct nvme_passthru_cmd));
		admin_cmd.opcode = WDC_NVME_PURGE_MONITOR_OPCODE;
		admin_cmd.addr = (__u64)(uintptr_t)output;
		admin_cmd.data_len = WDC_NVME_PURGE_MONITOR_DATA_LEN;
		admin_cmd.cdw10 = WDC_NVME_PURGE_MONITOR_CMD_CDW10;
		admin_cmd.timeout_ms = WDC_NVME_PURGE_MONITOR_TIMEOUT;

		ret = nvme_submit_admin_passthru(dev_fd(dev), &admin_cmd,
						 NULL);
		if (ret == 0) {
			mon = (struct wdc_nvme_purge_monitor_data *) output;
			printf("Purge state = 0x%0x\n", admin_cmd.result);
			printf("%s\n", wdc_purge_mon_status_to_string(admin_cmd.result));
			if (admin_cmd.result == WDC_NVME_PURGE_STATE_BUSY) {
				progress_percent =
					((double)le32_to_cpu(mon->entire_progress_current) * 100) /
					le32_to_cpu(mon->entire_progress_total);
				printf("Purge Progress = %f%%\n", progress_percent);
			}
		}

		nvme_show_status(ret);
	}
	nvme_free_tree(r);
	dev_close(dev);
	return ret;
}

static void wdc_print_log_normal(struct wdc_ssd_perf_stats *perf)
{
	printf("  C1 Log Page Performance Statistics :- \n");
	printf("  Host Read Commands                             %20"PRIu64"\n",
			le64_to_cpu(perf->hr_cmds));
	printf("  Host Read Blocks                               %20"PRIu64"\n",
			le64_to_cpu(perf->hr_blks));
	printf("  Average Read Size                              %20lf\n",
			safe_div_fp((le64_to_cpu(perf->hr_blks)), (le64_to_cpu(perf->hr_cmds))));
	printf("  Host Read Cache Hit Commands                   %20"PRIu64"\n",
			le64_to_cpu(perf->hr_ch_cmds));
	printf("  Host Read Cache Hit_Percentage                 %20"PRIu64"%%\n",
			(uint64_t) calc_percent(le64_to_cpu(perf->hr_ch_cmds), le64_to_cpu(perf->hr_cmds)));
	printf("  Host Read Cache Hit Blocks                     %20"PRIu64"\n",
			le64_to_cpu(perf->hr_ch_blks));
	printf("  Average Read Cache Hit Size                    %20f\n",
			safe_div_fp((le64_to_cpu(perf->hr_ch_blks)), (le64_to_cpu(perf->hr_ch_cmds))));
	printf("  Host Read Commands Stalled                     %20"PRIu64"\n",
			le64_to_cpu(perf->hr_st_cmds));
	printf("  Host Read Commands Stalled Percentage          %20"PRIu64"%%\n",
			(uint64_t)calc_percent((le64_to_cpu(perf->hr_st_cmds)), le64_to_cpu(perf->hr_cmds)));
	printf("  Host Write Commands                            %20"PRIu64"\n",
			le64_to_cpu(perf->hw_cmds));
	printf("  Host Write Blocks                              %20"PRIu64"\n",
			le64_to_cpu(perf->hw_blks));
	printf("  Average Write Size                             %20f\n",
			safe_div_fp((le64_to_cpu(perf->hw_blks)), (le64_to_cpu(perf->hw_cmds))));
	printf("  Host Write Odd Start Commands                  %20"PRIu64"\n",
			le64_to_cpu(perf->hw_os_cmds));
	printf("  Host Write Odd Start Commands Percentage       %20"PRIu64"%%\n",
			(uint64_t)calc_percent((le64_to_cpu(perf->hw_os_cmds)), (le64_to_cpu(perf->hw_cmds))));
	printf("  Host Write Odd End Commands                    %20"PRIu64"\n",
			le64_to_cpu(perf->hw_oe_cmds));
	printf("  Host Write Odd End Commands Percentage         %20"PRIu64"%%\n",
			(uint64_t)calc_percent((le64_to_cpu(perf->hw_oe_cmds)), (le64_to_cpu((perf->hw_cmds)))));
	printf("  Host Write Commands Stalled                    %20"PRIu64"\n",
		le64_to_cpu(perf->hw_st_cmds));
	printf("  Host Write Commands Stalled Percentage         %20"PRIu64"%%\n",
		(uint64_t)calc_percent((le64_to_cpu(perf->hw_st_cmds)), (le64_to_cpu(perf->hw_cmds))));
	printf("  NAND Read Commands                             %20"PRIu64"\n",
		le64_to_cpu(perf->nr_cmds));
	printf("  NAND Read Blocks Commands                      %20"PRIu64"\n",
		le64_to_cpu(perf->nr_blks));
	printf("  Average NAND Read Size                         %20f\n",
		safe_div_fp((le64_to_cpu(perf->nr_blks)), (le64_to_cpu((perf->nr_cmds)))));
	printf("  Nand Write Commands                            %20"PRIu64"\n",
			le64_to_cpu(perf->nw_cmds));
	printf("  NAND Write Blocks                              %20"PRIu64"\n",
			le64_to_cpu(perf->nw_blks));
	printf("  Average NAND Write Size                        %20f\n",
			safe_div_fp((le64_to_cpu(perf->nw_blks)), (le64_to_cpu(perf->nw_cmds))));
	printf("  NAND Read Before Write                         %20"PRIu64"\n",
			le64_to_cpu(perf->nrbw));
}

static void wdc_print_log_json(struct wdc_ssd_perf_stats *perf)
{
	struct json_object *root;

	root = json_create_object();
	json_object_add_value_int(root, "Host Read Commands", le64_to_cpu(perf->hr_cmds));
	json_object_add_value_int(root, "Host Read Blocks", le64_to_cpu(perf->hr_blks));
	json_object_add_value_int(root, "Average Read Size",
			safe_div_fp((le64_to_cpu(perf->hr_blks)), (le64_to_cpu(perf->hr_cmds))));
	json_object_add_value_int(root, "Host Read Cache Hit Commands",
			le64_to_cpu(perf->hr_ch_cmds));
	json_object_add_value_int(root, "Host Read Cache Hit Percentage",
			(uint64_t) calc_percent(le64_to_cpu(perf->hr_ch_cmds), le64_to_cpu(perf->hr_cmds)));
	json_object_add_value_int(root, "Host Read Cache Hit Blocks",
			le64_to_cpu(perf->hr_ch_blks));
	json_object_add_value_int(root, "Average Read Cache Hit Size",
			safe_div_fp((le64_to_cpu(perf->hr_ch_blks)), (le64_to_cpu(perf->hr_ch_cmds))));
	json_object_add_value_int(root, "Host Read Commands Stalled",
			le64_to_cpu(perf->hr_st_cmds));
	json_object_add_value_int(root, "Host Read Commands Stalled Percentage",
			(uint64_t)calc_percent((le64_to_cpu(perf->hr_st_cmds)), le64_to_cpu(perf->hr_cmds)));
	json_object_add_value_int(root, "Host Write Commands",
			le64_to_cpu(perf->hw_cmds));
	json_object_add_value_int(root, "Host Write Blocks",
			le64_to_cpu(perf->hw_blks));
	json_object_add_value_int(root, "Average Write Size",
			safe_div_fp((le64_to_cpu(perf->hw_blks)), (le64_to_cpu(perf->hw_cmds))));
	json_object_add_value_int(root, "Host Write Odd Start Commands",
			le64_to_cpu(perf->hw_os_cmds));
	json_object_add_value_int(root, "Host Write Odd Start Commands Percentage",
			(uint64_t)calc_percent((le64_to_cpu(perf->hw_os_cmds)), (le64_to_cpu(perf->hw_cmds))));
	json_object_add_value_int(root, "Host Write Odd End Commands",
			le64_to_cpu(perf->hw_oe_cmds));
	json_object_add_value_int(root, "Host Write Odd End Commands Percentage",
			(uint64_t)calc_percent((le64_to_cpu(perf->hw_oe_cmds)), (le64_to_cpu((perf->hw_cmds)))));
	json_object_add_value_int(root, "Host Write Commands Stalled",
		le64_to_cpu(perf->hw_st_cmds));
	json_object_add_value_int(root, "Host Write Commands Stalled Percentage",
		(uint64_t)calc_percent((le64_to_cpu(perf->hw_st_cmds)), (le64_to_cpu(perf->hw_cmds))));
	json_object_add_value_int(root, "NAND Read Commands",
		le64_to_cpu(perf->nr_cmds));
	json_object_add_value_int(root, "NAND Read Blocks Commands",
		le64_to_cpu(perf->nr_blks));
	json_object_add_value_int(root, "Average NAND Read Size",
		safe_div_fp((le64_to_cpu(perf->nr_blks)), (le64_to_cpu((perf->nr_cmds)))));
	json_object_add_value_int(root, "Nand Write Commands",
			le64_to_cpu(perf->nw_cmds));
	json_object_add_value_int(root, "NAND Write Blocks",
			le64_to_cpu(perf->nw_blks));
	json_object_add_value_int(root, "Average NAND Write Size",
			safe_div_fp((le64_to_cpu(perf->nw_blks)), (le64_to_cpu(perf->nw_cmds))));
	json_object_add_value_int(root, "NAND Read Before Written",
			le64_to_cpu(perf->nrbw));
	json_print_object(root, NULL);
	printf("\n");
	json_free_object(root);
}

static int wdc_print_log(struct wdc_ssd_perf_stats *perf, int fmt)
{
	if (!perf) {
		fprintf(stderr, "ERROR : WDC : Invalid buffer to read perf stats\n");
		return -1;
	}
	switch (fmt) {
	case NORMAL:
		wdc_print_log_normal(perf);
		break;
	case JSON:
		wdc_print_log_json(perf);
		break;
	}
	return 0;
}

static int wdc_convert_ts(time_t time, char *ts_buf)
{
	struct tm  gmTimeInfo;
	time_t     time_Human, time_ms;
	char       buf[80];

	time_Human = time/1000;
	time_ms = time % 1000;

	gmtime_r((const time_t *)&time_Human, &gmTimeInfo);

	strftime(buf, sizeof(buf), "%Y-%m-%d %H:%M:%S", &gmTimeInfo);
	sprintf(ts_buf, "%s.%03ld GMT", buf, time_ms);

	return 0;
}

static int wdc_print_latency_monitor_log_normal(struct nvme_dev *dev,
						struct wdc_ssd_latency_monitor_log *log_data)
{
	printf("Latency Monitor/C3 Log Page Data \n");
	printf("  Controller   :  %s\n", dev->name);
	int err = -1, i, j;
	struct nvme_id_ctrl ctrl;
	char       ts_buf[128];

	err = nvme_identify_ctrl(dev_fd(dev), &ctrl);
	if (!err)
		printf("  Serial Number:  %-.*s\n", (int)sizeof(ctrl.sn), ctrl.sn);
	else {
		fprintf(stderr, "ERROR : WDC : latency monitor read id ctrl failure, err = %d\n", err);
		return err;
	}

	printf("  Feature Status                     0x%x \n", log_data->feature_status);
	printf("  Active Bucket Timer                %d min \n", 5*le16_to_cpu(log_data->active_bucket_timer));
	printf("  Active Bucket Timer Threshold      %d min \n", 5*le16_to_cpu(log_data->active_bucket_timer_threshold));
	printf("  Active Threshold A                 %d ms \n", 5*(le16_to_cpu(log_data->active_threshold_a+1)));
	printf("  Active Threshold B                 %d ms \n", 5*(le16_to_cpu(log_data->active_threshold_b+1)));
	printf("  Active Threshold C                 %d ms \n", 5*(le16_to_cpu(log_data->active_threshold_c+1)));
	printf("  Active Threshold D                 %d ms \n", 5*(le16_to_cpu(log_data->active_threshold_d+1)));
	printf("  Active Latency Config              0x%x \n", le16_to_cpu(log_data->active_latency_config));
	printf("  Active Latency Minimum Window      %d ms \n", 100*log_data->active_latency_min_window);
	printf("  Active Latency Stamp Units         %d \n", le16_to_cpu(log_data->active_latency_stamp_units));
	printf("  Static Latency Stamp Units         %d \n", le16_to_cpu(log_data->static_latency_stamp_units));
	printf("  Debug Log Trigger Enable           %d \n", le16_to_cpu(log_data->debug_log_trigger_enable));

	printf("                                                            Read                           Write                 Deallocate/Trim \n");
	for (i = 0; i <= 3; i++) {
	    printf("  Active Bucket Counter: Bucket %d    %27d     %27d     %27d \n",
			i, le32_to_cpu(log_data->active_bucket_counter[i][LATENCY_LOG_BUCKET_READ]),
			le32_to_cpu(log_data->active_bucket_counter[i][LATENCY_LOG_BUCKET_WRITE]),
			le32_to_cpu(log_data->active_bucket_counter[i][LATENCY_LOG_BUCKET_TRIM]));
	}

	for (i = 3; i >= 0; i--) {
	    printf("  Active Measured Latency: Bucket %d  %27d ms  %27d ms  %27d ms \n",
			3-i, le16_to_cpu(log_data->active_measured_latency[i][LATENCY_LOG_MEASURED_LAT_READ]),
			le16_to_cpu(log_data->active_measured_latency[i][LATENCY_LOG_MEASURED_LAT_WRITE]),
			le16_to_cpu(log_data->active_measured_latency[i][LATENCY_LOG_MEASURED_LAT_TRIM]));
	}

	for (i = 3; i >= 0; i--) {
		printf("  Active Latency Time Stamp: Bucket %d    ", 3-i);
		for (j = 2; j >= 0; j--) {
		    if (le64_to_cpu(log_data->active_latency_timestamp[i][j]) == -1)
		    	printf("                    N/A         ");
		    else {
		    	wdc_convert_ts(le64_to_cpu(log_data->active_latency_timestamp[i][j]), ts_buf);
		    	printf("%s     ",	ts_buf);
		    }
		}
		printf("\n");
	}

	for (i = 0; i <= 3; i++) {
	    printf("  Static Bucket Counter: Bucket %d    %27d     %27d     %27d \n",
			i, le32_to_cpu(log_data->static_bucket_counter[i][LATENCY_LOG_BUCKET_READ]),
			le32_to_cpu(log_data->static_bucket_counter[i][LATENCY_LOG_BUCKET_WRITE]),
			le32_to_cpu(log_data->static_bucket_counter[i][LATENCY_LOG_BUCKET_TRIM]));
	}

	for (i = 3; i >= 0; i--) {
	    printf("  Static Measured Latency: Bucket %d  %27d ms  %27d ms  %27d ms \n",
			3-i, le16_to_cpu(log_data->static_measured_latency[i][LATENCY_LOG_MEASURED_LAT_READ]),
			le16_to_cpu(log_data->static_measured_latency[i][LATENCY_LOG_MEASURED_LAT_WRITE]),
			le16_to_cpu(log_data->static_measured_latency[i][LATENCY_LOG_MEASURED_LAT_TRIM]));
	}

	for (i = 3; i >= 0; i--) {
		printf("  Static Latency Time Stamp: Bucket %d    ", 3-i);
		for (j = 2; j >= 0; j--) {
		    if (le64_to_cpu(log_data->static_latency_timestamp[i][j]) == -1)
		    	printf("                    N/A         ");
		    else {
		    	wdc_convert_ts(le64_to_cpu(log_data->static_latency_timestamp[i][j]), ts_buf);
		    	printf("%s     ",	ts_buf);
		    }
		}
		printf("\n");
	}

	return 0;
}

static void wdc_print_latency_monitor_log_json(struct wdc_ssd_latency_monitor_log *log_data)
{
	int i, j;
	char	buf[128];
	char	*operation[3] = {"Read", "Write", "Trim"};
	struct json_object *root;
	root = json_create_object();

	json_object_add_value_int(root, "Feature Status", log_data->feature_status);
	json_object_add_value_int(root, "Active Bucket Timer", 5*le16_to_cpu(log_data->active_bucket_timer));
	json_object_add_value_int(root, "Active Bucket Timer Threshold", 5*le16_to_cpu(log_data->active_bucket_timer_threshold));
	json_object_add_value_int(root, "Active Threshold A", 5*le16_to_cpu(log_data->active_threshold_a+1));
	json_object_add_value_int(root, "Active Threshold B", 5*le16_to_cpu(log_data->active_threshold_b+1));
	json_object_add_value_int(root, "Active Threshold C", 5*le16_to_cpu(log_data->active_threshold_c+1));
	json_object_add_value_int(root, "Active Threshold D", 5*le16_to_cpu(log_data->active_threshold_d+1));
	json_object_add_value_int(root, "Active Latency Config", le16_to_cpu(log_data->active_latency_config));
	json_object_add_value_int(root, "Active Lantency Minimum Window", 100*log_data->active_latency_min_window);
	json_object_add_value_int(root, "Active Latency Stamp Units", le16_to_cpu(log_data->active_latency_stamp_units));
	json_object_add_value_int(root, "Static Latency Stamp Units", le16_to_cpu(log_data->static_latency_stamp_units));
	json_object_add_value_int(root, "Debug Log Trigger Enable", le16_to_cpu(log_data->debug_log_trigger_enable));

	for (i = 0; i <= 3; i++) {
		for (j = 2; j >= 0; j--) {
			sprintf(buf, "Active Bucket Counter: Bucket %d %s", i, operation[2-j]);
			json_object_add_value_int(root, buf, le32_to_cpu(log_data->active_bucket_counter[i][j+1]));
		}
	}
	for (i = 3; i >= 0; i--) {
		for (j = 2; j >= 0; j--) {
			sprintf(buf, "Active Measured Latency: Bucket %d %s", 3-i, operation[2-j]);
			json_object_add_value_int(root, buf, le16_to_cpu(log_data->active_measured_latency[i][j]));
		}
	}
	for (i = 3; i >= 0; i--) {
		for (j = 2; j >= 0; j--) {
			sprintf(buf, "Active Latency Time Stamp: Bucket %d %s", 3-i, operation[2-j]);
			json_object_add_value_int(root, buf, le64_to_cpu(log_data->active_latency_timestamp[i][j]));
		}
	}
	for (i = 0; i <= 3; i++) {
		for (j = 2; j >= 0; j--) {
			sprintf(buf, "Static Bucket Counter: Bucket %d %s", i, operation[2-j]);
			json_object_add_value_int(root, buf, le32_to_cpu(log_data->static_bucket_counter[i][j+1]));
		}
	}
	for (i = 3; i >= 0; i--) {
		for (j = 2; j >= 0; j--) {
			sprintf(buf, "Static Measured Latency: Bucket %d %s", 3-i, operation[2-j]);
			json_object_add_value_int(root, buf, le16_to_cpu(log_data->static_measured_latency[i][j]));
		}
	}
	for (i = 3; i >= 0; i--) {
		for (j = 2; j >= 0; j--) {
			sprintf(buf, "Static Latency Time Stamp: Bucket %d %s", 3-i, operation[2-j]);
			json_object_add_value_int(root, buf, le64_to_cpu(log_data->static_latency_timestamp[i][j]));
		}
	}

	json_print_object(root, NULL);
	printf("\n");

	json_free_object(root);
}

static void wdc_print_error_rec_log_normal(struct wdc_ocp_c1_error_recovery_log *log_data)
{
	int j;
	printf("Error Recovery/C1 Log Page Data \n");

	printf("  Panic Reset Wait Time             : 0x%x \n", le16_to_cpu(log_data->panic_reset_wait_time));
	printf("  Panic Reset Action                : 0x%x \n", log_data->panic_reset_action);
	printf("  Device Recovery Action 1          : 0x%x \n", log_data->dev_recovery_action1);
	printf("  Panic ID                          : 0x%" PRIu64 "\n", le64_to_cpu(log_data->panic_id));
	printf("  Device Capabilities               : 0x%x \n", le32_to_cpu(log_data->dev_capabilities));
	printf("  Vendor Specific Recovery Opcode   : 0x%x \n", log_data->vs_recovery_opc);
	printf("  Vendor Specific Command CDW12     : 0x%x \n", le32_to_cpu(log_data->vs_cmd_cdw12));
	printf("  Vendor Specific Command CDW13     : 0x%x \n", le32_to_cpu(log_data->vs_cmd_cdw13));
	if (le16_to_cpu(log_data->log_page_version) == WDC_ERROR_REC_LOG_VERSION2) {
		printf("  Vendor Specific Command Timeout   : 0x%x \n", log_data->vs_cmd_to);
		printf("  Device Recovery Action 2          : 0x%x \n", log_data->dev_recovery_action2);
		printf("  Device Recovery Action 2 Timeout  : 0x%x \n", log_data->dev_recovery_action2_to);
	}
	printf("  Log Page Version                  : 0x%x \n", le16_to_cpu(log_data->log_page_version));
	printf("  Log page GUID			    : 0x");
	for (j = 0; j < WDC_OCP_C1_GUID_LENGTH; j++) {
		printf("%x", log_data->log_page_guid[j]);
	}
	printf("\n");
}

static void wdc_print_error_rec_log_json(struct wdc_ocp_c1_error_recovery_log *log_data)
{
	struct json_object *root;
	root = json_create_object();

	json_object_add_value_int(root, "Panic Reset Wait Time", le16_to_cpu(log_data->panic_reset_wait_time));
	json_object_add_value_int(root, "Panic Reset Action", log_data->panic_reset_wait_time);
	json_object_add_value_int(root, "Device Recovery Action 1", log_data->dev_recovery_action1);
	json_object_add_value_int(root, "Panic ID", le64_to_cpu(log_data->panic_id));
	json_object_add_value_int(root, "Device Capabilities", le32_to_cpu(log_data->dev_capabilities));
	json_object_add_value_int(root, "Vendor Specific Recovery Opcode", log_data->vs_recovery_opc);
	json_object_add_value_int(root, "Vendor Specific Command CDW12", le32_to_cpu(log_data->vs_cmd_cdw12));
	json_object_add_value_int(root, "Vendor Specific Command CDW13", le32_to_cpu(log_data->vs_cmd_cdw13));
	if (le16_to_cpu(log_data->log_page_version) == WDC_ERROR_REC_LOG_VERSION2) {
		json_object_add_value_int(root, "Vendor Specific Command Timeout", log_data->vs_cmd_to);
		json_object_add_value_int(root, "Device Recovery Action 2", log_data->dev_recovery_action2);
		json_object_add_value_int(root, "Device Recovery Action 2 Timeout", log_data->dev_recovery_action2_to);
	}
	json_object_add_value_int(root, "Log Page Version", le16_to_cpu(log_data->log_page_version));

	char guid[40];
	memset((void*)guid, 0, 40);
	sprintf((char*)guid, "0x%"PRIx64"%"PRIx64"",(uint64_t)le64_to_cpu(*(uint64_t *)&log_data->log_page_guid[8]),
		(uint64_t)le64_to_cpu(*(uint64_t *)&log_data->log_page_guid[0]));
	json_object_add_value_string(root, "Log page GUID", guid);

	json_print_object(root, NULL);
	printf("\n");

	json_free_object(root);
}

static void wdc_print_dev_cap_log_normal(struct wdc_ocp_C4_dev_cap_log *log_data)
{
	int j;
	printf("Device Capabilities/C4 Log Page Data \n");

	printf("  Number PCIE Ports                 	: 0x%x \n", le16_to_cpu(log_data->num_pcie_ports));
	printf("  Number OOB Management Interfaces  	: 0x%x \n", le16_to_cpu(log_data->oob_mgmt_support));
	printf("  Write Zeros Command Support       	: 0x%x \n", le16_to_cpu(log_data->wrt_zeros_support));
	printf("  Sanitize Command Support          	: 0x%x \n", le16_to_cpu(log_data->sanitize_support));
	printf("  DSM Command Support               	: 0x%x \n", le16_to_cpu(log_data->dsm_support));
	printf("  Write Uncorr Command Support      	: 0x%x \n", le16_to_cpu(log_data->wrt_uncor_support));
	printf("  Fused Command Support             	: 0x%x \n", le16_to_cpu(log_data->fused_support));
	printf("  Minimum DSSD Power State          	: 0x%x \n", le16_to_cpu(log_data->min_dssd_ps));

	for (j = 0; j < WDC_OCP_C4_NUM_PS_DESCR; j++) {
		printf("  DSSD Power State %d Desriptor  	: 0x%x \n", j, log_data->dssd_ps_descr[j]);
	}

	printf("  Log Page Version			: 0x%x \n", le16_to_cpu(log_data->log_page_version));
	printf("  Log page GUID				: 0x");
	for (j = 0; j < WDC_OCP_C4_GUID_LENGTH; j++) {
		printf("%x", log_data->log_page_guid[j]);
	}
	printf("\n");
}

static void wdc_print_dev_cap_log_json(struct wdc_ocp_C4_dev_cap_log *log_data)
{
	int j;
	struct json_object *root;
	root = json_create_object();

	json_object_add_value_int(root, "Number PCIE Ports", le16_to_cpu(log_data->num_pcie_ports));
	json_object_add_value_int(root, "Number OOB Management Interfaces", le16_to_cpu(log_data->num_pcie_ports));
	json_object_add_value_int(root, "Write Zeros Command Support", le16_to_cpu(log_data->num_pcie_ports));
	json_object_add_value_int(root, "Sanitize Command Support", le16_to_cpu(log_data->num_pcie_ports));
	json_object_add_value_int(root, "DSM Command Support", le16_to_cpu(log_data->num_pcie_ports));
	json_object_add_value_int(root, "Write Uncorr Command Support", le16_to_cpu(log_data->num_pcie_ports));
	json_object_add_value_int(root, "Fused Command Support", le16_to_cpu(log_data->num_pcie_ports));
	json_object_add_value_int(root, "Minimum DSSD Power State", le16_to_cpu(log_data->num_pcie_ports));

	char dssd_descr_str[40];
	memset((void *)dssd_descr_str, 0, 40);
	for (j = 0; j < WDC_OCP_C4_NUM_PS_DESCR; j++) {
		sprintf((char *)dssd_descr_str, "DSSD Power State %d Descriptor", j);
		json_object_add_value_int(root, dssd_descr_str, log_data->dssd_ps_descr[j]);
	}

	json_object_add_value_int(root, "Log Page Version", le16_to_cpu(log_data->log_page_version));
	char guid[40];
	memset((void*)guid, 0, 40);
	sprintf((char*)guid, "0x%"PRIx64"%"PRIx64"",(uint64_t)le64_to_cpu(*(uint64_t *)&log_data->log_page_guid[8]),
		(uint64_t)le64_to_cpu(*(uint64_t *)&log_data->log_page_guid[0]));
	json_object_add_value_string(root, "Log page GUID", guid);

	json_print_object(root, NULL);
	printf("\n");

	json_free_object(root);
}

static void wdc_print_unsupported_reqs_log_normal(struct wdc_ocp_C5_unsupported_reqs *log_data)
{
	int j;
	printf("Unsupported Requirements/C5 Log Page Data \n");

	printf("  Number Unsupported Req IDs		: 0x%x \n", le16_to_cpu(log_data->unsupported_count));

	for (j = 0; j < le16_to_cpu(log_data->unsupported_count); j++) {
		printf("  Unsupported Requirement List %d	: %s \n", j, log_data->unsupported_req_list[j]);
	}

	printf("  Log Page Version			: 0x%x \n", le16_to_cpu(log_data->log_page_version));
	printf("  Log page GUID				: 0x");
	for (j = 0; j < WDC_OCP_C5_GUID_LENGTH; j++) {
		printf("%x", log_data->log_page_guid[j]);
	}
	printf("\n");
}

static void wdc_print_unsupported_reqs_log_json(struct wdc_ocp_C5_unsupported_reqs *log_data)
{
	int j;
	struct json_object *root;
	root = json_create_object();

	json_object_add_value_int(root, "Number Unsupported Req IDs", le16_to_cpu(log_data->unsupported_count));

	char unsup_req_list_str[40];
	memset((void *)unsup_req_list_str, 0, 40);
	for (j = 0; j < le16_to_cpu(log_data->unsupported_count); j++) {
		sprintf((char *)unsup_req_list_str, "Unsupported Requirement List %d", j);
		json_object_add_value_string(root, unsup_req_list_str, (char *)log_data->unsupported_req_list[j]);
	}

	json_object_add_value_int(root, "Log Page Version", le16_to_cpu(log_data->log_page_version));
	char guid[40];
	memset((void*)guid, 0, 40);
	sprintf((char*)guid, "0x%"PRIx64"%"PRIx64"",(uint64_t)le64_to_cpu(*(uint64_t *)&log_data->log_page_guid[8]),
		(uint64_t)le64_to_cpu(*(uint64_t *)&log_data->log_page_guid[0]));
	json_object_add_value_string(root, "Log page GUID", guid);

	json_print_object(root, NULL);
	printf("\n");

	json_free_object(root);
}

static void wdc_print_fb_ca_log_normal(struct wdc_ssd_ca_perf_stats *perf)
{
	uint64_t converted = 0;

	printf("  CA Log Page Performance Statistics :- \n");
	printf("  NAND Bytes Written                             %20"PRIu64 "%20"PRIu64"\n",
			le64_to_cpu(perf->nand_bytes_wr_hi), le64_to_cpu(perf->nand_bytes_wr_lo));
	printf("  NAND Bytes Read                                %20"PRIu64 "%20"PRIu64"\n",
			le64_to_cpu(perf->nand_bytes_rd_hi), le64_to_cpu(perf->nand_bytes_rd_lo));

	converted = le64_to_cpu(perf->nand_bad_block);
	printf("  NAND Bad Block Count (Normalized)              %20"PRIu64"\n",
			converted & 0xFFFF);
	printf("  NAND Bad Block Count (Raw)                     %20"PRIu64"\n",
			converted >> 16);

	printf("  Uncorrectable Read Count                       %20"PRIu64"\n",
			le64_to_cpu(perf->uncorr_read_count));
	printf("  Soft ECC Error Count                           %20"PRIu64"\n",
			le64_to_cpu(perf->ecc_error_count));
	printf("  SSD End to End Detected Correction Count       %20"PRIu32"\n",
			(uint32_t)le32_to_cpu(perf->ssd_detect_count));
	printf("  SSD End to End Corrected Correction Count      %20"PRIu32"\n",
			(uint32_t)le32_to_cpu(perf->ssd_correct_count));
	printf("  System Data Percent Used                       %20"PRIu32"%%\n",
			perf->data_percent_used);
	printf("  User Data Erase Counts Max                     %20"PRIu32"\n",
			(uint32_t)le32_to_cpu(perf->data_erase_max));
	printf("  User Data Erase Counts Min                     %20"PRIu32"\n",
			(uint32_t)le32_to_cpu(perf->data_erase_min));
	printf("  Refresh Count                                  %20"PRIu64"\n",
			le64_to_cpu(perf->refresh_count));

	converted = le64_to_cpu(perf->program_fail);
	printf("  Program Fail Count (Normalized)                %20"PRIu64"\n",
			converted & 0xFFFF);
	printf("  Program Fail Count (Raw)                       %20"PRIu64"\n",
			converted >> 16);

	converted = le64_to_cpu(perf->user_erase_fail);
	printf("  User Data Erase Fail Count (Normalized)        %20"PRIu64"\n",
			converted & 0xFFFF);
	printf("  User Data Erase Fail Count (Raw)               %20"PRIu64"\n",
			converted >> 16);

	converted = le64_to_cpu(perf->system_erase_fail);
	printf("  System Area Erase Fail Count (Normalized)      %20"PRIu64"\n",
			converted & 0xFFFF);
	printf("  System Area Erase Fail Count (Raw)             %20"PRIu64"\n",
			converted >> 16);

	printf("  Thermal Throttling Status                      %20"PRIu8"\n",
			perf->thermal_throttle_status);
	printf("  Thermal Throttling Count                       %20"PRIu8"\n",
			perf->thermal_throttle_count);
	printf("  PCIe Correctable Error Count                   %20"PRIu64"\n",
			le64_to_cpu(perf->pcie_corr_error));
	printf("  Incomplete Shutdown Count                      %20"PRIu32"\n",
			(uint32_t)le32_to_cpu(perf->incomplete_shutdown_count));
	printf("  Percent Free Blocks                            %20"PRIu32"%%\n",
			perf->percent_free_blocks);
}

static void wdc_print_fb_ca_log_json(struct wdc_ssd_ca_perf_stats *perf)
{
	struct json_object *root;
	uint64_t converted = 0;

	root = json_create_object();
	json_object_add_value_int(root, "NAND Bytes Written Hi", le64_to_cpu(perf->nand_bytes_wr_hi));
	json_object_add_value_int(root, "NAND Bytes Written Lo", le64_to_cpu(perf->nand_bytes_wr_lo));
	json_object_add_value_int(root, "NAND Bytes Read Hi", le64_to_cpu(perf->nand_bytes_rd_hi));
	json_object_add_value_int(root, "NAND Bytes Read Lo", le64_to_cpu(perf->nand_bytes_rd_lo));

	converted = le64_to_cpu(perf->nand_bad_block);
	json_object_add_value_int(root, "NAND Bad Block Count (Normalized)",
			converted & 0xFFFF);
	json_object_add_value_int(root, "NAND Bad Block Count (Raw)",
			converted >> 16);

	json_object_add_value_int(root, "Uncorrectable Read Count", le64_to_cpu(perf->uncorr_read_count));
	json_object_add_value_int(root, "Soft ECC Error Count",	le64_to_cpu(perf->ecc_error_count));
	json_object_add_value_int(root, "SSD End to End Detected Correction Count",
			le32_to_cpu(perf->ssd_detect_count));
	json_object_add_value_int(root, "SSD End to End Corrected Correction Count",
			le32_to_cpu(perf->ssd_correct_count));
	json_object_add_value_int(root, "System Data Percent Used",
			perf->data_percent_used);
	json_object_add_value_int(root, "User Data Erase Counts Max",
			le32_to_cpu(perf->data_erase_max));
	json_object_add_value_int(root, "User Data Erase Counts Min",
			le32_to_cpu(perf->data_erase_min));
	json_object_add_value_int(root, "Refresh Count", le64_to_cpu(perf->refresh_count));

	converted = le64_to_cpu(perf->program_fail);
	json_object_add_value_int(root, "Program Fail Count (Normalized)",
			converted & 0xFFFF);
	json_object_add_value_int(root, "Program Fail Count (Raw)",
			converted >> 16);

	converted = le64_to_cpu(perf->user_erase_fail);
	json_object_add_value_int(root, "User Data Erase Fail Count (Normalized)",
			converted & 0xFFFF);
	json_object_add_value_int(root, "User Data Erase Fail Count (Raw)",
			converted >> 16);

	converted = le64_to_cpu(perf->system_erase_fail);
	json_object_add_value_int(root, "System Area Erase Fail Count (Normalized)",
			converted & 0xFFFF);
	json_object_add_value_int(root, "System Area Erase Fail Count (Raw)",
			converted >> 16);

	json_object_add_value_int(root, "Thermal Throttling Status",
			perf->thermal_throttle_status);
	json_object_add_value_int(root, "Thermal Throttling Count",
			perf->thermal_throttle_count);
	json_object_add_value_int(root, "PCIe Correctable Error", le64_to_cpu(perf->pcie_corr_error));
	json_object_add_value_int(root, "Incomplete Shutdown Counte", le32_to_cpu(perf->incomplete_shutdown_count));
	json_object_add_value_int(root, "Percent Free Blocks", perf->percent_free_blocks);
	json_print_object(root, NULL);
	printf("\n");
	json_free_object(root);
}

static void wdc_print_bd_ca_log_normal(struct nvme_dev *dev, void *data)
{
	struct wdc_bd_ca_log_format *bd_data = (struct wdc_bd_ca_log_format *)data;
	__u64 *raw;
	__u16 *word_raw1, *word_raw2, *word_raw3;
	__u32  *dword_raw;
	__u8  *byte_raw;

	if (bd_data->field_id == 0x00) {
		raw = (__u64*)&bd_data->raw_value[0];
		printf("Additional Smart Log for NVME device:%s namespace-id:%x\n",
			dev->name, WDC_DE_GLOBAL_NSID);
		printf("key                               normalized raw\n");
        printf("program_fail_count              : %3"PRIu8"%%       %"PRIu64"\n",
				bd_data->normalized_value, le64_to_cpu(*raw & 0x00FFFFFFFFFFFFFF));
	} else {
		goto invalid_id;
	}
	bd_data++;
	if (bd_data->field_id == 0x01) {
		raw = (__u64*)&bd_data->raw_value[0];
		printf("erase_fail_count                : %3"PRIu8"%%       %"PRIu64"\n",
				bd_data->normalized_value, le64_to_cpu(*raw & 0x00FFFFFFFFFFFFFF));
	} else {
		goto invalid_id;
	}
	bd_data++;
	if (bd_data->field_id == 0x02) {
		word_raw1 = (__u16*)&bd_data->raw_value[1];
		word_raw2 = (__u16*)&bd_data->raw_value[3];
		word_raw3 = (__u16*)&bd_data->raw_value[5];
		printf("wear_leveling                   : %3"PRIu8"%%       min: %"PRIu16", max: %"PRIu16", avg: %"PRIu16"\n",
				bd_data->normalized_value,
				le16_to_cpu(*word_raw1),
				le16_to_cpu(*word_raw2),
				le16_to_cpu(*word_raw3));
	} else {
		goto invalid_id;
	}
	bd_data++;
	if (bd_data->field_id == 0x03) {
		raw = (__u64*)&bd_data->raw_value[0];
		printf("end_to_end_error_detection_count: %3"PRIu8"%%       %"PRIu64"\n",
				bd_data->normalized_value, le64_to_cpu(*raw & 0x00FFFFFFFFFFFFFF));
	} else {
		goto invalid_id;
	}
	bd_data++;
	if (bd_data->field_id == 0x04) {
		raw = (__u64*)&bd_data->raw_value[0];
		printf("crc_error_count                 : %3"PRIu8"%%       %"PRIu64"\n",
			   bd_data->normalized_value, le64_to_cpu(*raw & 0x00FFFFFFFFFFFFFF));
	} else {
		goto invalid_id;
	}
	bd_data++;
	if (bd_data->field_id == 0x05) {
		raw = (__u64*)&bd_data->raw_value[0];
		printf("timed_workload_media_wear       : %3"PRIu8"%%       %-.3f%%\n",
			   bd_data->normalized_value, 
			   safe_div_fp((*raw & 0x00FFFFFFFFFFFFFF), 1024.0));
	} else {
		goto invalid_id;
	}
	bd_data++;
	if (bd_data->field_id == 0x06) {
		raw = (__u64*)&bd_data->raw_value[0];
		printf("timed_workload_host_reads       : %3"PRIu8"%%       %"PRIu64"%%\n",
			   bd_data->normalized_value, le64_to_cpu(*raw & 0x00FFFFFFFFFFFFFF));
	} else {
		goto invalid_id;
	}
	bd_data++;
	if (bd_data->field_id == 0x07) {
		raw = (__u64*)&bd_data->raw_value[0];
		printf("timed_workload_timer            : %3"PRIu8"%%       %"PRIu64"\n",
			   bd_data->normalized_value, le64_to_cpu(*raw & 0x00FFFFFFFFFFFFFF));
	} else {
		goto invalid_id;
	}
	bd_data++;
	if (bd_data->field_id == 0x08) {
		byte_raw = (__u8*)&bd_data->raw_value[1];
		dword_raw = (__u32*)&bd_data->raw_value[2];
		printf("thermal_throttle_status         : %3"PRIu8"%%       %"PRIu16"%%, cnt: %"PRIu16"\n",
				bd_data->normalized_value, *byte_raw, le32_to_cpu(*dword_raw));
	} else {
		goto invalid_id;
	}
	bd_data++;
	if (bd_data->field_id == 0x09) {
		raw = (__u64*)&bd_data->raw_value[0];
		printf("retry_buffer_overflow_count     : %3"PRIu8"%%       %"PRIu64"\n",
			   bd_data->normalized_value, le64_to_cpu(*raw & 0x00FFFFFFFFFFFFFF));
	} else {
		goto invalid_id;
	}
	bd_data++;
	if (bd_data->field_id == 0x0A) {
		raw = (__u64*)&bd_data->raw_value[0];
		printf("pll_lock_loss_count             : %3"PRIu8"%%       %"PRIu64"\n",
			   bd_data->normalized_value, le64_to_cpu(*raw & 0x00FFFFFFFFFFFFFF));
	} else {
		goto invalid_id;
	}
	bd_data++;
	if (bd_data->field_id == 0x0B) {
		raw = (__u64*)&bd_data->raw_value[0];
		printf("nand_bytes_written              : %3"PRIu8"%%       sectors: %.f\n",
			   bd_data->normalized_value, safe_div_fp((*raw & 0x00FFFFFFFFFFFFFF), 0xFFFF));
	} else {
		goto invalid_id;
	}
	bd_data++;
	if (bd_data->field_id == 0x0C) {
		raw = (__u64*)&bd_data->raw_value[0];
		printf("host_bytes_written              : %3"PRIu8"%%       sectors: %.f\n",
			   bd_data->normalized_value, safe_div_fp((*raw & 0x00FFFFFFFFFFFFFF), 0xFFFF));
	} else {
		goto invalid_id;
	}

	goto done;

	invalid_id:
		printf("  Invalid Field ID = %d\n", bd_data->field_id);

	done:
		return;

}

static void wdc_print_bd_ca_log_json(void *data)
{
	struct wdc_bd_ca_log_format *bd_data = (struct wdc_bd_ca_log_format *)data;
	__u64 *raw;
	__u16 *word_raw;
	__u32  *dword_raw;
	__u8  *byte_raw;
	struct json_object *root;

	root = json_create_object();
	if (bd_data->field_id == 0x00) {
		raw = (__u64*)&bd_data->raw_value[0];
		json_object_add_value_int(root, "program_fail_count normalized",
				bd_data->normalized_value);
		json_object_add_value_int(root, "program_fail_count raw",
				le64_to_cpu(*raw & 0x00FFFFFFFFFFFFFF));
	} else {
		goto invalid_id;
	}
	bd_data++;
	if (bd_data->field_id == 0x01) {
		raw = (__u64*)&bd_data->raw_value[0];
		json_object_add_value_int(root, "erase_fail_count normalized",
				bd_data->normalized_value);
		json_object_add_value_int(root, "erase_fail_count raw",
				le64_to_cpu(*raw & 0x00FFFFFFFFFFFFFF));
	} else {
		goto invalid_id;
	}
	bd_data++;
	if (bd_data->field_id == 0x02) {
		word_raw = (__u16*)&bd_data->raw_value[1];
		json_object_add_value_int(root, "wear_leveling normalized",	bd_data->normalized_value);
		json_object_add_value_int(root, "wear_leveling min", le16_to_cpu(*word_raw));
		word_raw = (__u16*)&bd_data->raw_value[3];
		json_object_add_value_int(root, "wear_leveling max", le16_to_cpu(*word_raw));
		word_raw = (__u16*)&bd_data->raw_value[5];
		json_object_add_value_int(root, "wear_leveling avg", le16_to_cpu(*word_raw));
	} else {
		goto invalid_id;
	}
	bd_data++;
	if (bd_data->field_id == 0x03) {
		raw = (__u64*)&bd_data->raw_value[0];
		json_object_add_value_int(root, "end_to_end_error_detection_count normalized",
				bd_data->normalized_value);
		json_object_add_value_int(root, "end_to_end_error_detection_count raw",
				le64_to_cpu(*raw & 0x00FFFFFFFFFFFFFF));
	} else {
		goto invalid_id;
	}
	bd_data++;
	if (bd_data->field_id == 0x04) {
		raw = (__u64*)&bd_data->raw_value[0];
		json_object_add_value_int(root, "crc_error_count normalized",
				bd_data->normalized_value);
		json_object_add_value_int(root, "crc_error_count raw",
				le64_to_cpu(*raw & 0x00FFFFFFFFFFFFFF));
	} else {
		goto invalid_id;
	}
	bd_data++;
	if (bd_data->field_id == 0x05) {
		raw = (__u64*)&bd_data->raw_value[0];
		json_object_add_value_int(root, "timed_workload_media_wear normalized",
				bd_data->normalized_value);
		json_object_add_value_double(root, "timed_workload_media_wear raw",
				safe_div_fp((*raw & 0x00FFFFFFFFFFFFFF), 1024.0));
	} else {
		goto invalid_id;
	}
	bd_data++;
	if (bd_data->field_id == 0x06) {
		raw = (__u64*)&bd_data->raw_value[0];
		json_object_add_value_int(root, "timed_workload_host_reads normalized",
				bd_data->normalized_value);
		json_object_add_value_int(root, "timed_workload_host_reads raw",
				le64_to_cpu(*raw & 0x00000000000000FF));
	} else {
		goto invalid_id;
	}
	bd_data++;
	if (bd_data->field_id == 0x07) {
		raw = (__u64*)&bd_data->raw_value[0];
		json_object_add_value_int(root, "timed_workload_timer normalized",
				bd_data->normalized_value);
		json_object_add_value_int(root, "timed_workload_timer",
				le64_to_cpu(*raw & 0x00FFFFFFFFFFFFFF));
	} else {
		goto invalid_id;
	}
	bd_data++;
	if (bd_data->field_id == 0x08) {
		byte_raw = (__u8*)&bd_data->raw_value[1];
		json_object_add_value_int(root, "thermal_throttle_status normalized",
				bd_data->normalized_value);
		json_object_add_value_int(root, "thermal_throttle_status", *byte_raw);
		dword_raw = (__u32*)&bd_data->raw_value[2];
		json_object_add_value_int(root, "thermal_throttle_cnt",	le32_to_cpu(*dword_raw));
	} else {
		goto invalid_id;
	}
	bd_data++;
	if (bd_data->field_id == 0x09) {
		raw = (__u64*)&bd_data->raw_value[0];
		json_object_add_value_int(root, "retry_buffer_overflow_count normalized",
				bd_data->normalized_value);
		json_object_add_value_int(root, "retry_buffer_overflow_count raw",
				le64_to_cpu(*raw & 0x00FFFFFFFFFFFFFF));
	} else {
		goto invalid_id;
	}
	bd_data++;
	if (bd_data->field_id == 0x0A) {
		raw = (__u64*)&bd_data->raw_value[0];
		json_object_add_value_int(root, "pll_lock_loss_count normalized",
				bd_data->normalized_value);
		json_object_add_value_int(root, "pll_lock_loss_count raw",
				le64_to_cpu(*raw & 0x00FFFFFFFFFFFFFF));
	} else {
		goto invalid_id;
	}
	bd_data++;
	if (bd_data->field_id == 0x0B) {
		raw = (__u64*)&bd_data->raw_value[0];
		json_object_add_value_int(root, "nand_bytes_written normalized",
				bd_data->normalized_value);
		json_object_add_value_double(root, "nand_bytes_written raw",
				safe_div_fp((*raw & 0x00FFFFFFFFFFFFFF), 0xFFFF));
	} else {
		goto invalid_id;
	}
	bd_data++;
	if (bd_data->field_id == 0x0C) {
		raw = (__u64*)&bd_data->raw_value[0];
		json_object_add_value_int(root, "host_bytes_written normalized",
				bd_data->normalized_value);
		json_object_add_value_double(root, "host_bytes_written raw",
				safe_div_fp((*raw & 0x00FFFFFFFFFFFFFF), 0xFFFF));
	} else {
		goto invalid_id;
	}

	goto done;

 invalid_id:
	printf("  Invalid Field ID = %d\n", bd_data->field_id);

 done:
	json_print_object(root, NULL);
	printf("\n");
	json_free_object(root);

	return;

}

static void wdc_print_d0_log_normal(struct wdc_ssd_d0_smart_log *perf)
{
	printf("  D0 Smart Log Page Statistics :- \n");
	printf("  Lifetime Reallocated Erase Block Count	 %20"PRIu32"\n",
			(uint32_t)le32_to_cpu(perf->lifetime_realloc_erase_block_count));
	printf("  Lifetime Power on Hours			 %20"PRIu32"\n",
			(uint32_t)le32_to_cpu(perf->lifetime_power_on_hours));
	printf("  Lifetime UECC Count	                         %20"PRIu32"\n",
			(uint32_t)le32_to_cpu(perf->lifetime_uecc_count));
	printf("  Lifetime Write Amplification Factor	         %20"PRIu32"\n",
			(uint32_t)le32_to_cpu(perf->lifetime_wrt_amp_factor));
	printf("  Trailing Hour Write Amplification Factor  	 %20"PRIu32"\n",
			(uint32_t)le32_to_cpu(perf->trailing_hr_wrt_amp_factor));
	printf("  Reserve Erase Block Count	                 %20"PRIu32"\n",
			(uint32_t)le32_to_cpu(perf->reserve_erase_block_count));
	printf("  Lifetime Program Fail Count	     	         %20"PRIu32"\n",
			(uint32_t)le32_to_cpu(perf->lifetime_program_fail_count));
	printf("  Lifetime Block Erase Fail Count		 %20"PRIu32"\n",
			(uint32_t)le32_to_cpu(perf->lifetime_block_erase_fail_count));
	printf("  Lifetime Die Failure Count	                 %20"PRIu32"\n",
			(uint32_t)le32_to_cpu(perf->lifetime_die_failure_count));
	printf("  Lifetime Link Rate Downgrade Count	         %20"PRIu32"\n",
			(uint32_t)le32_to_cpu(perf->lifetime_link_rate_downgrade_count));
	printf("  Lifetime Clean Shutdown Count on Power Loss	 %20"PRIu32"\n",
			(uint32_t)le32_to_cpu(perf->lifetime_clean_shutdown_count));
	printf("  Lifetime Unclean Shutdowns on Power Loss	 %20"PRIu32"\n",
			(uint32_t)le32_to_cpu(perf->lifetime_unclean_shutdown_count));
	printf("  Current Temperature 	                         %20"PRIu32"\n",
			(uint32_t)le32_to_cpu(perf->current_temp));
	printf("  Max Recorded Temperature			 %20"PRIu32"\n",
			(uint32_t)le32_to_cpu(perf->max_recorded_temp));
	printf("  Lifetime Retired Block Count	                 %20"PRIu32"\n",
			(uint32_t)le32_to_cpu(perf->lifetime_retired_block_count));
	printf("  Lifetime Read Disturb Reallocation Events	 %20"PRIu32"\n",
			(uint32_t)le32_to_cpu(perf->lifetime_read_disturb_realloc_events));
	printf("  Lifetime NAND Writes	                         %20"PRIu64"\n",
			le64_to_cpu(perf->lifetime_nand_writes));
	printf("  Capacitor Health			 	 %20"PRIu32"%%\n",
			(uint32_t)le32_to_cpu(perf->capacitor_health));
	printf("  Lifetime User Writes	                         %20"PRIu64"\n",
			le64_to_cpu(perf->lifetime_user_writes));
	printf("  Lifetime User Reads	                         %20"PRIu64"\n",
			le64_to_cpu(perf->lifetime_user_reads));
	printf("  Lifetime Thermal Throttle Activations	         %20"PRIu32"\n",
			(uint32_t)le32_to_cpu(perf->lifetime_thermal_throttle_act));
	printf("  Percentage of P/E Cycles Remaining             %20"PRIu32"%%\n",
			(uint32_t)le32_to_cpu(perf->percentage_pe_cycles_remaining));
}

static void wdc_print_d0_log_json(struct wdc_ssd_d0_smart_log *perf)
{
	struct json_object *root;

	root = json_create_object();
	json_object_add_value_int(root, "Lifetime Reallocated Erase Block Count",
			le32_to_cpu(perf->lifetime_realloc_erase_block_count));
	json_object_add_value_int(root, "Lifetime Power on Hours",
			le32_to_cpu(perf->lifetime_power_on_hours));
	json_object_add_value_int(root, "Lifetime UECC Count",
			le32_to_cpu(perf->lifetime_uecc_count));
	json_object_add_value_int(root, "Lifetime Write Amplification Factor",
			le32_to_cpu(perf->lifetime_wrt_amp_factor));
	json_object_add_value_int(root, "Trailing Hour Write Amplification Factor",
			le32_to_cpu(perf->trailing_hr_wrt_amp_factor));
	json_object_add_value_int(root, "Reserve Erase Block Count",
			le32_to_cpu(perf->reserve_erase_block_count));
	json_object_add_value_int(root, "Lifetime Program Fail Count",
			le32_to_cpu(perf->lifetime_program_fail_count));
	json_object_add_value_int(root, "Lifetime Block Erase Fail Count",
			le32_to_cpu(perf->lifetime_block_erase_fail_count));
	json_object_add_value_int(root, "Lifetime Die Failure Count",
			le32_to_cpu(perf->lifetime_die_failure_count));
	json_object_add_value_int(root, "Lifetime Link Rate Downgrade Count",
			le32_to_cpu(perf->lifetime_link_rate_downgrade_count));
	json_object_add_value_int(root, "Lifetime Clean Shutdown Count on Power Loss",
			le32_to_cpu(perf->lifetime_clean_shutdown_count));
	json_object_add_value_int(root, "Lifetime Unclean Shutdowns on Power Loss",
			le32_to_cpu(perf->lifetime_unclean_shutdown_count));
	json_object_add_value_int(root, "Current Temperature",
			le32_to_cpu(perf->current_temp));
	json_object_add_value_int(root, "Max Recorded Temperature",
			le32_to_cpu(perf->max_recorded_temp));
	json_object_add_value_int(root, "Lifetime Retired Block Count",
			le32_to_cpu(perf->lifetime_retired_block_count));
	json_object_add_value_int(root, "Lifetime Read Disturb Reallocation Events",
			le32_to_cpu(perf->lifetime_read_disturb_realloc_events));
	json_object_add_value_int(root, "Lifetime NAND Writes",
			le64_to_cpu(perf->lifetime_nand_writes));
	json_object_add_value_int(root, "Capacitor Health",
			le32_to_cpu(perf->capacitor_health));
	json_object_add_value_int(root, "Lifetime User Writes",
			le64_to_cpu(perf->lifetime_user_writes));
	json_object_add_value_int(root, "Lifetime User Reads",
			le64_to_cpu(perf->lifetime_user_reads));
	json_object_add_value_int(root, "Lifetime Thermal Throttle Activations",
			le32_to_cpu(perf->lifetime_thermal_throttle_act));
	json_object_add_value_int(root, "Percentage of P/E Cycles Remaining",
			le32_to_cpu(perf->percentage_pe_cycles_remaining));

	json_print_object(root, NULL);
	printf("\n");
	json_free_object(root);
}

static void wdc_get_commit_action_bin(__u8 commit_action_type, char *action_bin)
{

	switch (commit_action_type)
	{
	case(0):
		strcpy(action_bin, "000b");
		break;
	case(1):
		strcpy(action_bin, "001b");
        break;
	case(2):
		strcpy(action_bin, "010b");
    	break;
	case(3):
		strcpy(action_bin, "011b");
    	break;
	case(4):
		strcpy(action_bin, "100b");
	    break;
	case(5):
		strcpy(action_bin, "101b");
	    break;
	case(6):
		strcpy(action_bin, "110b");
	    break;
	case(7):
        strcpy(action_bin, "111b");
    	break;
	default:
		strcpy(action_bin, "INVALID");
	}

}

static void wdc_print_fw_act_history_log_normal(__u8 *data, int num_entries, __u32 cust_id, __u32 vendor_id)
{
	int i, j;
	char previous_fw[9];
	char new_fw[9];
	char commit_action_bin[8];
	char time_str[11];
	__u16 oldestEntryIdx = 0, entryIdx = 0;
	char *null_fw = "--------";
	memset((void *)time_str, 0, 11);

	if (data[0] == WDC_NVME_GET_FW_ACT_HISTORY_C2_LOG_ID) {
		printf("  Firmware Activate History Log \n");
		if (cust_id == WDC_CUSTOMER_ID_0x1005 || vendor_id == WDC_NVME_SNDK_VID) {
			printf("           Power on Hour       Power Cycle     Previous    New                               \n");
			printf("  Entry      hh:mm:ss             Count        Firmware    Firmware    Slot   Action  Result \n");
			printf("  -----  -----------------  -----------------  ---------   ---------   -----  ------  -------\n");
		} else {
			printf("                               Power Cycle     Previous    New                               \n");
			printf("  Entry      Timestamp            Count        Firmware    Firmware    Slot   Action  Result \n");
			printf("  -----  -----------------  -----------------  ---------   ---------   -----  ------  -------\n");
		}

		struct wdc_fw_act_history_log_format_c2 *fw_act_history_entry = (struct wdc_fw_act_history_log_format_c2 *)(data);

		oldestEntryIdx = WDC_MAX_NUM_ACT_HIST_ENTRIES;
		if (num_entries == WDC_MAX_NUM_ACT_HIST_ENTRIES) {
			/* find lowest/oldest entry */
			for (i = 0; i < num_entries; i++) {
				j = (i+1 == WDC_MAX_NUM_ACT_HIST_ENTRIES) ? 0 : i+1;
				if (le16_to_cpu(fw_act_history_entry->entry[i].fw_act_hist_entries) >
						le16_to_cpu(fw_act_history_entry->entry[j].fw_act_hist_entries)) {
					oldestEntryIdx = j;
					break;
				}
			}
		}
		if (oldestEntryIdx == WDC_MAX_NUM_ACT_HIST_ENTRIES)
			entryIdx = 0;
		else
			entryIdx = oldestEntryIdx;

		for (i = 0; i < num_entries; i++) {
			memset((void *)previous_fw, 0, 9);
			memset((void *)new_fw, 0, 9);
			memset((void *)commit_action_bin, 0, 8);

			memcpy(previous_fw, (char *)&(fw_act_history_entry->entry[entryIdx].previous_fw_version), 8);
			if (strlen((char *)&(fw_act_history_entry->entry[entryIdx].current_fw_version)) > 1)
				memcpy(new_fw, (char *)&(fw_act_history_entry->entry[entryIdx].current_fw_version), 8);
			else
				memcpy(new_fw, null_fw, 8);

			printf("%5"PRIu16"", (uint16_t)le16_to_cpu(fw_act_history_entry->entry[entryIdx].fw_act_hist_entries));
			if (cust_id == WDC_CUSTOMER_ID_0x1005) {
				printf("       ");
				memset((void *)time_str, 0, 9);
				sprintf((char *)time_str, "%04d:%02d:%02d", (int)(le64_to_cpu(fw_act_history_entry->entry[entryIdx].timestamp)/3600),
						(int)((le64_to_cpu(fw_act_history_entry->entry[entryIdx].timestamp%3600)/60)),
						(int)(le64_to_cpu(fw_act_history_entry->entry[entryIdx].timestamp%60)));

				printf("%s", time_str);
				printf("     ");
			} else if(vendor_id == WDC_NVME_SNDK_VID) {
				printf("       ");
				uint64_t timestamp = (0x0000FFFFFFFFFFFF & le64_to_cpu(fw_act_history_entry->entry[entryIdx].timestamp));
				memset((void *)time_str, 0, 9);
				sprintf((char *)time_str, "%04d:%02d:%02d", (int)((timestamp/(3600*1000))%24), (int)((timestamp/(1000*60))%60),
						(int)((timestamp/1000)%60));
				printf("%s", time_str);
				printf("     ");
			} else {
				printf("   ");
				uint64_t timestamp = (0x0000FFFFFFFFFFFF & le64_to_cpu(fw_act_history_entry->entry[entryIdx].timestamp));
				printf("%16"PRIu64"", timestamp);
				printf("   ");
			}

			printf("%16"PRIu64"", (uint64_t)le64_to_cpu(fw_act_history_entry->entry[entryIdx].power_cycle_count));
			printf("     ");
			printf("%s", (char *)previous_fw);
			printf("    ");
			printf("%s", (char *)new_fw);
			printf("     ");
			printf("%2"PRIu8"", (uint8_t)fw_act_history_entry->entry[entryIdx].slot_number);
			printf("   ");
			wdc_get_commit_action_bin(fw_act_history_entry->entry[entryIdx].commit_action_type,(char *)&commit_action_bin);
			printf("  %s", (char *)commit_action_bin);
			printf("  ");
			if (le16_to_cpu(fw_act_history_entry->entry[entryIdx].result) == 0)
				printf("pass");
			else
				printf("fail #%d", (uint16_t)le16_to_cpu(fw_act_history_entry->entry[entryIdx].result));
			printf("\n");

			entryIdx++;
			if (entryIdx >= WDC_MAX_NUM_ACT_HIST_ENTRIES)
				entryIdx = 0;
		}
	}
	else
	{
		printf("  Firmware Activate History Log \n");
		printf("         Power on Hour   Power Cycle           Previous    New                               \n");
		printf("  Entry    hh:mm:ss      Count                 Firmware    Firmware    Slot   Action  Result \n");
		printf("  -----  --------------  --------------------  ----------  ----------  -----  ------  -------\n");

		struct wdc_fw_act_history_log_entry *fw_act_history_entry = (struct wdc_fw_act_history_log_entry *)(data + sizeof(struct wdc_fw_act_history_log_hdr));

		oldestEntryIdx = WDC_MAX_NUM_ACT_HIST_ENTRIES;
		if (num_entries == WDC_MAX_NUM_ACT_HIST_ENTRIES) {
			/* find lowest/oldest entry */
			for (i = 0; i < num_entries; i++) {
				if (le32_to_cpu(fw_act_history_entry[i].entry_num) > le32_to_cpu(fw_act_history_entry[i+1].entry_num)) {
					oldestEntryIdx = i+1;
					break;
				}
			}
		}

		if (oldestEntryIdx == WDC_MAX_NUM_ACT_HIST_ENTRIES)
			entryIdx = 0;
		else
			entryIdx = oldestEntryIdx;

		for (i = 0; i < num_entries; i++) {
			memset((void *)previous_fw, 0, 9);
			memset((void *)new_fw, 0, 9);
			memset((void *)commit_action_bin, 0, 8);

			memcpy(previous_fw, (char *)&(fw_act_history_entry[entryIdx].previous_fw_version), 8);
			if (strlen((char *)&(fw_act_history_entry[entryIdx].new_fw_version)) > 1)
				memcpy(new_fw, (char *)&(fw_act_history_entry[entryIdx].new_fw_version), 8);
			else
				memcpy(new_fw, null_fw, 8);

			printf("%5"PRIu32"", (uint32_t)le32_to_cpu(fw_act_history_entry[entryIdx].entry_num));
			printf("      ");
			printf("%04d:%02d:%02d", (int)(le64_to_cpu(fw_act_history_entry[entryIdx].power_on_seconds)/3600),
					(int)((le64_to_cpu(fw_act_history_entry[entryIdx].power_on_seconds)%3600)/60),
					(int)(le64_to_cpu(fw_act_history_entry[entryIdx].power_on_seconds)%60));
			printf("      ");
			printf("%16"PRIu32"", (uint32_t)le32_to_cpu(fw_act_history_entry[entryIdx].power_cycle_count));
			printf("     ");
			printf("%s", (char *)previous_fw);
			printf("    ");
			printf("%s", (char *)new_fw);
			printf("     ");
			printf("%2"PRIu8"", (uint8_t)fw_act_history_entry[entryIdx].slot_number);
			printf("  ");
			wdc_get_commit_action_bin(fw_act_history_entry[entryIdx].commit_action_type,(char *)&commit_action_bin);
			printf("  %s", (char *)commit_action_bin);
			printf("   ");
			if (le16_to_cpu(fw_act_history_entry[entryIdx].result) == 0)
				printf("pass");
			else
				printf("fail #%d", (uint16_t)le16_to_cpu(fw_act_history_entry[entryIdx].result));

			printf("\n");

			entryIdx++;
			if (entryIdx >= WDC_MAX_NUM_ACT_HIST_ENTRIES)
				entryIdx = 0;
		}
	}
}

static void wdc_print_fw_act_history_log_json(__u8 *data, int num_entries, __u32 cust_id, __u32 vendor_id)
{
	struct json_object *root;
	int i, j;
	char previous_fw[9];
	char new_fw[9];
	char commit_action_bin[8];
	char fail_str[32];
	char time_str[11];
	memset((void *)previous_fw, 0, 9);
	memset((void *)new_fw, 0, 9);
	memset((void *)commit_action_bin, 0, 8);
	memset((void *)time_str, 0, 11);
	memset((void *)fail_str, 0, 11);
	char *null_fw = "--------";
	__u16 oldestEntryIdx = 0, entryIdx = 0;

	root = json_create_object();

	if (data[0] == WDC_NVME_GET_FW_ACT_HISTORY_C2_LOG_ID) {
		struct wdc_fw_act_history_log_format_c2 *fw_act_history_entry = (struct wdc_fw_act_history_log_format_c2 *)(data);

		oldestEntryIdx = WDC_MAX_NUM_ACT_HIST_ENTRIES;
		if (num_entries == WDC_MAX_NUM_ACT_HIST_ENTRIES) {
			/* find lowest/oldest entry */
			for (i = 0; i < num_entries; i++) {
				j = (i+1 == WDC_MAX_NUM_ACT_HIST_ENTRIES) ? 0 : i+1;
				if (le16_to_cpu(fw_act_history_entry->entry[i].fw_act_hist_entries) >
						le16_to_cpu(fw_act_history_entry->entry[j].fw_act_hist_entries)) {
					oldestEntryIdx = j;
					break;
				}
			}
		}
		if (oldestEntryIdx == WDC_MAX_NUM_ACT_HIST_ENTRIES)
			entryIdx = 0;
		else
			entryIdx = oldestEntryIdx;

		for (i = 0; i < num_entries; i++) {
			memcpy(previous_fw, (char *)&(fw_act_history_entry->entry[entryIdx].previous_fw_version), 8);
			if (strlen((char *)&(fw_act_history_entry->entry[entryIdx].current_fw_version)) > 1)
			    memcpy(new_fw, (char *)&(fw_act_history_entry->entry[entryIdx].current_fw_version), 8);
			else
				memcpy(new_fw, null_fw, 8);

			json_object_add_value_int(root, "Entry",
				le16_to_cpu(fw_act_history_entry->entry[entryIdx].fw_act_hist_entries));

			if (cust_id == WDC_CUSTOMER_ID_0x1005) {
				sprintf((char *)time_str, "%04d:%02d:%02d", (int)(le64_to_cpu(fw_act_history_entry->entry[entryIdx].timestamp)/3600),
						(int)((le64_to_cpu(fw_act_history_entry->entry[entryIdx].timestamp%3600)/60)),
						(int)(le64_to_cpu(fw_act_history_entry->entry[entryIdx].timestamp%60)));

				json_object_add_value_string(root, "Power on Hour", time_str);

			} else if (vendor_id == WDC_NVME_SNDK_VID) {
				uint64_t timestamp = (0x0000FFFFFFFFFFFF & le64_to_cpu(fw_act_history_entry->entry[entryIdx].timestamp));
				sprintf((char *)time_str, "%04d:%02d:%02d", (int)((timestamp/(3600*1000))%24), (int)((timestamp/(1000*60))%60),
						(int)((timestamp/1000)%60));
				json_object_add_value_string(root, "Power on Hour", time_str);
			} else {
				uint64_t timestamp = (0x0000FFFFFFFFFFFF & le64_to_cpu(fw_act_history_entry->entry[entryIdx].timestamp));
				json_object_add_value_uint64(root, "Timestamp", timestamp);
			}

			json_object_add_value_int(root, "Power Cycle Count",
				le64_to_cpu(fw_act_history_entry->entry[entryIdx].power_cycle_count));
			json_object_add_value_string(root, "Previous Firmware",
					previous_fw);
			json_object_add_value_string(root, "New Firmware",
					new_fw);
			json_object_add_value_int(root, "Slot",
				fw_act_history_entry->entry[entryIdx].slot_number);

			wdc_get_commit_action_bin(fw_act_history_entry->entry[entryIdx].commit_action_type,(char *)&commit_action_bin);
			json_object_add_value_string(root, "Action", commit_action_bin);

			if (le16_to_cpu(fw_act_history_entry->entry[entryIdx].result) == 0)
				json_object_add_value_string(root, "Result", "pass");
			else {
				sprintf((char *)fail_str, "fail #%d", (int)(le16_to_cpu(fw_act_history_entry->entry[entryIdx].result)));
				json_object_add_value_string(root, "Result", fail_str);
			}

			json_print_object(root, NULL);
			printf("\n");

			entryIdx++;
			if (entryIdx >= WDC_MAX_NUM_ACT_HIST_ENTRIES)
				entryIdx = 0;
		}
	}
	else {
		struct wdc_fw_act_history_log_entry *fw_act_history_entry = (struct wdc_fw_act_history_log_entry *)(data + sizeof(struct wdc_fw_act_history_log_hdr));

		oldestEntryIdx = WDC_MAX_NUM_ACT_HIST_ENTRIES;
		if (num_entries == WDC_MAX_NUM_ACT_HIST_ENTRIES) {
			/* find lowest/oldest entry */
			for (i = 0; i < num_entries; i++) {
				if (le32_to_cpu(fw_act_history_entry[i].entry_num) > le32_to_cpu(fw_act_history_entry[i+1].entry_num)) {
					oldestEntryIdx = i+1;
					break;
				}
			}
		}
		if (oldestEntryIdx == WDC_MAX_NUM_ACT_HIST_ENTRIES)
			entryIdx = 0;
		else
			entryIdx = oldestEntryIdx;

		for (i = 0; i < num_entries; i++) {
			memcpy(previous_fw, (char *)&(fw_act_history_entry[entryIdx].previous_fw_version), 8);
			if (strlen((char *)&(fw_act_history_entry[entryIdx].new_fw_version)) > 1)
			    memcpy(new_fw, (char *)&(fw_act_history_entry[entryIdx].new_fw_version), 8);
			else
				memcpy(new_fw, null_fw, 8);

			json_object_add_value_int(root, "Entry",
				le32_to_cpu(fw_act_history_entry[entryIdx].entry_num));

			sprintf((char *)time_str, "%04d:%02d:%02d", (int)(le64_to_cpu(fw_act_history_entry[entryIdx].power_on_seconds)/3600),
					(int)((le64_to_cpu(fw_act_history_entry[entryIdx].power_on_seconds)%3600)/60),
					(int)(le64_to_cpu(fw_act_history_entry[entryIdx].power_on_seconds)%60));
			json_object_add_value_string(root, "Power on Hour", time_str);

			json_object_add_value_int(root, "Power Cycle Count",
				le32_to_cpu(fw_act_history_entry[entryIdx].power_cycle_count));
			json_object_add_value_string(root, "Previous Firmware",
					previous_fw);
			json_object_add_value_string(root, "New Firmware",
					new_fw);
			json_object_add_value_int(root, "Slot",
				fw_act_history_entry[entryIdx].slot_number);

			wdc_get_commit_action_bin(fw_act_history_entry[entryIdx].commit_action_type,(char *)&commit_action_bin);
			json_object_add_value_string(root, "Action", commit_action_bin);

			if (le16_to_cpu(fw_act_history_entry[entryIdx].result) == 0)
				json_object_add_value_string(root, "Result", "pass");
			else {
				sprintf((char *)fail_str, "fail #%d", (int)(le16_to_cpu(fw_act_history_entry[entryIdx].result)));
				json_object_add_value_string(root, "Result", fail_str);
			}

			json_print_object(root, NULL);
			printf("\n");

			entryIdx++;
			if (entryIdx >= WDC_MAX_NUM_ACT_HIST_ENTRIES)
				entryIdx = 0;
		}
	}

	json_free_object(root);
}

static int nvme_get_ext_smart_cloud_log(int fd, __u8 **data, int uuid_index, __u32 namespace_id)
{
	int ret, i;
	__u8 *log_ptr = NULL;

	if ((log_ptr = (__u8*) malloc(sizeof (__u8) * WDC_NVME_SMART_CLOUD_ATTR_LEN)) == NULL) {
		fprintf(stderr, "ERROR : WDC : malloc : %s\n", strerror(errno));
		return -1;
	}

	/* Get the 0xC0 log data */
	struct nvme_get_log_args args = {
		.args_size	= sizeof(args),
		.fd			= fd,
		.lid		= WDC_NVME_GET_SMART_CLOUD_ATTR_LOG_ID,
		.nsid		= namespace_id,
		.lpo		= 0,
		.lsp		= NVME_LOG_LSP_NONE,
		.lsi		= 0,
		.rae		= false,
		.uuidx		= uuid_index,
		.csi		= NVME_CSI_NVM,
		.ot			= false,
		.len		= WDC_NVME_SMART_CLOUD_ATTR_LEN,
		.log		= log_ptr,
		.timeout	= NVME_DEFAULT_IOCTL_TIMEOUT,
		.result		= NULL,
	};
	ret = nvme_get_log(&args);

	if (ret == 0) {

		/* Verify GUID matches */
		for (i = 0; i < WDC_C0_GUID_LENGTH; i++) {
			if (ext_smart_guid[i] != *&log_ptr[SCAO_V1_LPG + i])	{
				fprintf(stderr, "ERROR : WDC : Unknown GUID in C0 Log Page V1 data\n");
				int j;
				fprintf(stderr, "ERROR : WDC : Expected GUID:  0x");
				for (j = 0; j < WDC_C0_GUID_LENGTH; j++) {
					fprintf(stderr, "%x", ext_smart_guid[j]);
				}
				fprintf(stderr, "\nERROR : WDC : Actual GUID:    0x");
				for (j = 0; j < WDC_C0_GUID_LENGTH; j++) {
					fprintf(stderr, "%x", *&log_ptr[SCAO_V1_LPG + j]);
				}
				fprintf(stderr, "\n");

				ret = -1;
				break;
			}
		}
	}

	*data = log_ptr;

	return ret;
}


static int nvme_get_hw_rev_log(int fd, __u8 **data, int uuid_index, __u32 namespace_id)
{
	int ret, i;
	wdc_nvme_hw_rev_log *log_ptr = NULL;

	if ((log_ptr = (wdc_nvme_hw_rev_log *)malloc(sizeof (__u8) * WDC_NVME_HW_REV_LOG_PAGE_LEN)) == NULL) {
		fprintf(stderr, "ERROR : WDC : malloc : %s\n", strerror(errno));
		return -1;
	}

	/* Get the 0xC0 log data */
	struct nvme_get_log_args args = {
		.args_size	= sizeof(args),
		.fd			= fd,
		.lid		= WDC_NVME_GET_HW_REV_LOG_OPCODE,
		.nsid		= namespace_id,
		.lpo		= 0,
		.lsp		= NVME_LOG_LSP_NONE,
		.lsi		= 0,
		.rae		= false,
		.uuidx		= uuid_index,
		.csi		= NVME_CSI_NVM,
		.ot			= false,
		.len		= WDC_NVME_HW_REV_LOG_PAGE_LEN,
		.log		= log_ptr,
		.timeout	= NVME_DEFAULT_IOCTL_TIMEOUT,
		.result		= NULL,
	};
	ret = nvme_get_log(&args);

	if (ret == 0) {

		/* Verify GUID matches */
		for (i = 0; i < WDC_NVME_C6_GUID_LENGTH; i++) {
			if (hw_rev_log_guid[i] != log_ptr->hw_rev_guid[i])	{
				fprintf(stderr, "ERROR : WDC : Unknown GUID in HW Revision Log Page data\n");
				int j;
				fprintf(stderr, "ERROR : WDC : Expected GUID:  0x");
				for (j = 0; j < WDC_NVME_C6_GUID_LENGTH; j++) {
					fprintf(stderr, "%x", hw_rev_log_guid[j]);
				}
				fprintf(stderr, "\nERROR : WDC : Actual GUID:    0x");
				for (j = 0; j < WDC_NVME_C6_GUID_LENGTH; j++) {
					fprintf(stderr, "%x", log_ptr->hw_rev_guid[j]);
				}
				fprintf(stderr, "\n");

				ret = -1;
				break;
			}
		}
	}

	*data = (__u8 *)log_ptr;

	return ret;
}


static void wdc_print_hw_rev_log_normal(void *data)
{
	int i;
	wdc_nvme_hw_rev_log *log_data = (wdc_nvme_hw_rev_log *)data;

	printf("  Hardware Revision Log:- \n");

	printf("  Global Device HW Revision		: %d\n",
			log_data->hw_rev_gdr);
	printf("  ASIC HW Revision			: %d\n",
			log_data->hw_rev_ar);
	printf("  PCB Manufacturer Code			: %d\n",
			log_data->hw_rev_pbc_mc);
	printf("  DRAM Manufacturer Code		: %d\n",
			log_data->hw_rev_dram_mc);
	printf("  NAND Manufacturer Code		: %d\n",
			log_data->hw_rev_nand_mc);
	printf("  PMIC 1 Manufacturer Code		: %d\n",
			log_data->hw_rev_pmic1_mc);
	printf("  PMIC 2 Manufacturer Code		: %d\n",
			log_data->hw_rev_pmic2_mc);
	printf("  Other Component 1 Manf Code		: %d\n",
			log_data->hw_rev_c1_mc);
	printf("  Other Component 2 Manf Code		: %d\n",
			log_data->hw_rev_c2_mc);
	printf("  Other Component 3 Manf Code		: %d\n",
			log_data->hw_rev_c3_mc);
	printf("  Other Component 4 Manf Code		: %d\n",
			log_data->hw_rev_c4_mc);
	printf("  Other Component 5 Manf Code		: %d\n",
			log_data->hw_rev_c5_mc);
	printf("  Other Component 6 Manf Code		: %d\n",
			log_data->hw_rev_c6_mc);
	printf("  Other Component 7 Manf Code		: %d\n",
			log_data->hw_rev_c7_mc);
	printf("  Other Component 8 Manf Code		: %d\n",
			log_data->hw_rev_c8_mc);
	printf("  Other Component 9 Manf Code		: %d\n",
			log_data->hw_rev_c9_mc);

	printf("  Device Manf Detailed Info		: 0x");
	for (i = 0; i < 16; i++) {
		printf("%02x", log_data->hw_rev_dev_mdi[i]);
		if (i == 7)
			printf(" 0x");
	}
	printf("\n");
	printf("  ASIC Detailed Info			: 0x");
	for (i = 0; i < 16; i++) {
		printf("%02x", log_data->hw_rev_asic_di[i]);
		if (i == 7)
			printf(" 0x");
	}
	printf("\n");
	printf("  PCB Detailed Info			: 0x");
	for (i = 0; i < 16; i++) {
		printf("%02x", log_data->hw_rev_pcb_di[i]);
		if (i == 7)
			printf(" 0x");
	}
	printf("\n");
	printf("  DRAM Detailed Info			: 0x");
	for (i = 0; i < 16; i++) {
		printf("%02x", log_data->hw_rev_dram_di[i]);
		if (i == 7)
			printf(" 0x");
	}
	printf("\n");
	printf("  NAND Detailed Info			: 0x");
	for (i = 0; i < 16; i++) {
		printf("%02x", log_data->hw_rev_nand_di[i]);
		if (i == 7)
			printf(" 0x");
	}
	printf("\n");
	printf("  PMIC 1 Detailed Info			: 0x");
	for (i = 0; i < 16; i++) {
		printf("%02x", log_data->hw_rev_pmic1_di[i]);
		if (i == 7)
			printf(" 0x");
	}
	printf("\n");
	printf("  PMIC 2 Detailed Info			: 0x");
	for (i = 0; i < 16; i++) {
		printf("%02x", log_data->hw_rev_pmic2_di[i]);
		if (i == 7)
			printf(" 0x");
	}
	printf("\n");
	printf("  Component 1 Detailed Info		: 0x");
	for (i = 0; i < 16; i++) {
		printf("%02x", log_data->hw_rev_c1_di[i]);
		if (i == 7)
			printf(" 0x");
	}
	printf("\n");
	printf("  Component 2 Detailed Info		: 0x");
	for (i = 0; i < 16; i++) {
		printf("%02x", log_data->hw_rev_c2_di[i]);
		if (i == 7)
			printf(" 0x");
	}
	printf("\n");
	printf("  Component 3 Detailed Info		: 0x");
	for (i = 0; i < 16; i++) {
		printf("%02x", log_data->hw_rev_c3_di[i]);
		if (i == 7)
			printf(" 0x");
	}
	printf("\n");
	printf("  Component 4 Detailed Info		: 0x");
	for (i = 0; i < 16; i++) {
		printf("%02x", log_data->hw_rev_c4_di[i]);
		if (i == 7)
			printf(" 0x");
	}
	printf("\n");
	printf("  Component 5 Detailed Info		: 0x");
	for (i = 0; i < 16; i++) {
		printf("%02x", log_data->hw_rev_c5_di[i]);
		if (i == 7)
			printf(" 0x");
	}
	printf("\n");
	printf("  Component 6 Detailed Info		: 0x");
	for (i = 0; i < 16; i++) {
		printf("%02x", log_data->hw_rev_c6_di[i]);
		if (i == 7)
			printf(" 0x");
	}
	printf("\n");
	printf("  Component 7 Detailed Info		: 0x");
	for (i = 0; i < 16; i++) {
		printf("%02x", log_data->hw_rev_c7_di[i]);
		if (i == 7)
			printf(" 0x");
	}
	printf("\n");
	printf("  Component 8 Detailed Info		: 0x");
	for (i = 0; i < 16; i++) {
		printf("%02x", log_data->hw_rev_c8_di[i]);
		if (i == 7)
			printf(" 0x");
	}
	printf("\n");
	printf("  Component 9 Detailed Info		: 0x");
	for (i = 0; i < 16; i++) {
		printf("%02x", log_data->hw_rev_c9_di[i]);
		if (i == 7)
			printf(" 0x");
	}
	printf("\n");
	printf("  Serial Number  	           	: 0x");
	for (i = 0; i < 32; i++) {
		if ((i > 1) & !(i % 8))
			printf(" 0x");
		printf("%02x", log_data->hw_rev_sn[i]);
	}
	printf("\n");

	printf("  Log Page Version           		: %d\n",
			log_data->hw_rev_version);
	printf("  Log page GUID				: 0x");
	printf("%"PRIx64"%"PRIx64"\n",le64_to_cpu(*(uint64_t *)&log_data->hw_rev_guid[8]),
			le64_to_cpu(*(uint64_t *)&log_data->hw_rev_guid[0]));
	printf("\n");
}

static void wdc_print_hw_rev_log_json(void *data)
{
	wdc_nvme_hw_rev_log *log_data = (wdc_nvme_hw_rev_log *)data;
	struct json_object *root;
	char json_data[80];

	root = json_create_object();
	json_object_add_value_uint(root, "Global Device HW Revision",
			log_data->hw_rev_gdr);
	json_object_add_value_uint(root, "ASIC HW Revision",
			log_data->hw_rev_ar);
	json_object_add_value_uint(root, "PCB Manufacturer Code",
			log_data->hw_rev_pbc_mc);
	json_object_add_value_uint(root, "DRAM Manufacturer Code",
			log_data->hw_rev_dram_mc);
	json_object_add_value_uint(root, "NAND Manufacturer Code",
			log_data->hw_rev_nand_mc);
	json_object_add_value_uint(root, "PMIC 1 Manufacturer Code",
			log_data->hw_rev_pmic1_mc);
	json_object_add_value_uint(root, "PMIC 2 Manufacturer Code",
			log_data->hw_rev_pmic2_mc);
	json_object_add_value_uint(root, "Other Component 1 Manf Code",
			log_data->hw_rev_c1_mc);
	json_object_add_value_uint(root, "Other Component 2 Manf Code",
			log_data->hw_rev_c2_mc);
	json_object_add_value_uint(root, "Other Component 3 Manf Code",
			log_data->hw_rev_c3_mc);
	json_object_add_value_uint(root, "Other Component 4 Manf Code",
			log_data->hw_rev_c4_mc);
	json_object_add_value_uint(root, "Other Component 5 Manf Code",
			log_data->hw_rev_c5_mc);
	json_object_add_value_uint(root, "Other Component 6 Manf Code",
			log_data->hw_rev_c6_mc);
	json_object_add_value_uint(root, "Other Component 7 Manf Code",
			log_data->hw_rev_c7_mc);
	json_object_add_value_uint(root, "Other Component 8 Manf Code",
			log_data->hw_rev_c8_mc);
	json_object_add_value_uint(root, "Other Component 9 Manf Code",
			log_data->hw_rev_c9_mc);

	memset((void*)json_data, 0, 40);
	sprintf((char*)json_data, "0x%"PRIx64"%"PRIx64"", le64_to_cpu(*(uint64_t *)&log_data->hw_rev_dev_mdi[8]),
		le64_to_cpu(*(uint64_t *)&log_data->hw_rev_dev_mdi[0]));
	json_object_add_value_string(root, "Device Manf Detailed Info", json_data);

	memset((void*)json_data, 0, 40);
	sprintf((char*)json_data, "0x%"PRIx64"%"PRIx64"", le64_to_cpu(*(uint64_t *)&log_data->hw_rev_asic_di[8]),
		le64_to_cpu(*(uint64_t *)&log_data->hw_rev_asic_di[0]));
	json_object_add_value_string(root, "ASIC Detailed Info", json_data);

	memset((void*)json_data, 0, 40);
	sprintf((char*)json_data, "0x%"PRIx64"%"PRIx64"", le64_to_cpu(*(uint64_t *)&log_data->hw_rev_pcb_di[8]),
		le64_to_cpu(*(uint64_t *)&log_data->hw_rev_pcb_di[0]));
	json_object_add_value_string(root, "PCB Detailed Info", json_data);

	memset((void*)json_data, 0, 40);
	sprintf((char*)json_data, "0x%"PRIx64"%"PRIx64"", le64_to_cpu(*(uint64_t *)&log_data->hw_rev_dram_di[8]),
		le64_to_cpu(*(uint64_t *)&log_data->hw_rev_dram_di[0]));
	json_object_add_value_string(root, "DRAM Detailed Info", json_data);

	memset((void*)json_data, 0, 40);
	sprintf((char*)json_data, "0x%"PRIx64"%"PRIx64"", le64_to_cpu(*(uint64_t *)&log_data->hw_rev_nand_di[8]),
		le64_to_cpu(*(uint64_t *)&log_data->hw_rev_nand_di[0]));
	json_object_add_value_string(root, "NAND Detailed Info", json_data);

	memset((void*)json_data, 0, 40);
	sprintf((char*)json_data, "0x%"PRIx64"%"PRIx64"", le64_to_cpu(*(uint64_t *)&log_data->hw_rev_pmic1_di[8]),
		le64_to_cpu(*(uint64_t *)&log_data->hw_rev_pmic1_di[0]));
	json_object_add_value_string(root, "PMIC 1 Detailed Info", json_data);

	memset((void*)json_data, 0, 40);
	sprintf((char*)json_data, "0x%"PRIx64"%"PRIx64"", le64_to_cpu(*(uint64_t *)&log_data->hw_rev_pmic2_di[8]),
		le64_to_cpu(*(uint64_t *)&log_data->hw_rev_pmic2_di[0]));
	json_object_add_value_string(root, "PMIC 2 Detailed Info", json_data);

	memset((void*)json_data, 0, 40);
	sprintf((char*)json_data, "0x%"PRIx64"%"PRIx64"", le64_to_cpu(*(uint64_t *)&log_data->hw_rev_c1_di[8]),
		le64_to_cpu(*(uint64_t *)&log_data->hw_rev_c1_di[0]));
	json_object_add_value_string(root, "Component 1 Detailed Info", json_data);

	memset((void*)json_data, 0, 40);
	sprintf((char*)json_data, "0x%"PRIx64"%"PRIx64"", le64_to_cpu(*(uint64_t *)&log_data->hw_rev_c2_di[8]),
		le64_to_cpu(*(uint64_t *)&log_data->hw_rev_c2_di[0]));
	json_object_add_value_string(root, "Component 2 Detailed Info", json_data);

	memset((void*)json_data, 0, 40);
	sprintf((char*)json_data, "0x%"PRIx64"%"PRIx64"", le64_to_cpu(*(uint64_t *)&log_data->hw_rev_c3_di[8]),
		le64_to_cpu(*(uint64_t *)&log_data->hw_rev_c3_di[0]));
	json_object_add_value_string(root, "Component 3 Detailed Info", json_data);

	memset((void*)json_data, 0, 40);
	sprintf((char*)json_data, "0x%"PRIx64"%"PRIx64"", le64_to_cpu(*(uint64_t *)&log_data->hw_rev_c4_di[8]),
		le64_to_cpu(*(uint64_t *)&log_data->hw_rev_c4_di[0]));
	json_object_add_value_string(root, "Component 4 Detailed Info", json_data);

	memset((void*)json_data, 0, 40);
	sprintf((char*)json_data, "0x%"PRIx64"%"PRIx64"", le64_to_cpu(*(uint64_t *)&log_data->hw_rev_c5_di[8]),
		le64_to_cpu(*(uint64_t *)&log_data->hw_rev_c5_di[0]));
	json_object_add_value_string(root, "Component 5 Detailed Info", json_data);

	memset((void*)json_data, 0, 40);
	sprintf((char*)json_data, "0x%"PRIx64"%"PRIx64"", le64_to_cpu(*(uint64_t *)&log_data->hw_rev_c6_di[8]),
		le64_to_cpu(*(uint64_t *)&log_data->hw_rev_c6_di[0]));
	json_object_add_value_string(root, "Component 6 Detailed Info", json_data);

	memset((void*)json_data, 0, 40);
	sprintf((char*)json_data, "0x%"PRIx64"%"PRIx64"", le64_to_cpu(*(uint64_t *)&log_data->hw_rev_c7_di[8]),
		le64_to_cpu(*(uint64_t *)&log_data->hw_rev_c7_di[0]));
	json_object_add_value_string(root, "Component 7 Detailed Info", json_data);

	memset((void*)json_data, 0, 40);
	sprintf((char*)json_data, "0x%"PRIx64"%"PRIx64"", le64_to_cpu(*(uint64_t *)&log_data->hw_rev_c8_di[8]),
		le64_to_cpu(*(uint64_t *)&log_data->hw_rev_c8_di[0]));
	json_object_add_value_string(root, "Component 8 Detailed Info", json_data);

	memset((void*)json_data, 0, 40);
	sprintf((char*)json_data, "0x%"PRIx64"%"PRIx64"", le64_to_cpu(*(uint64_t *)&log_data->hw_rev_c9_di[8]),
		le64_to_cpu(*(uint64_t *)&log_data->hw_rev_c9_di[0]));
	json_object_add_value_string(root, "Component 9 Detailed Info", json_data);

	memset((void*)json_data, 0, 80);
	sprintf((char*)json_data, "0x%"PRIx64"%"PRIx64"%"PRIx64"%"PRIx64"",
			le64_to_cpu(*(uint64_t *)&log_data->hw_rev_sn[0]), le64_to_cpu(*(uint64_t *)&log_data->hw_rev_sn[8]),
			le64_to_cpu(*(uint64_t *)&log_data->hw_rev_sn[16]), le64_to_cpu(*(uint64_t *)&log_data->hw_rev_sn[24]));
	json_object_add_value_string(root, "Serial Number", json_data);

	json_object_add_value_uint(root, "Log Page Version",
			le16_to_cpu(log_data->hw_rev_version));

	memset((void*)json_data, 0, 40);
	sprintf((char*)json_data, "0x%"PRIx64"%"PRIx64"", le64_to_cpu(*(uint64_t *)&log_data->hw_rev_guid[8]),
		le64_to_cpu(*(uint64_t *)&log_data->hw_rev_guid[0]));
	json_object_add_value_string(root, "Log Page GUID", json_data);

	json_print_object(root, NULL);
	printf("\n");
	json_free_object(root);
}

static void wdc_print_ext_smart_cloud_log_normal(void *data, int mask)
{
	int i;
	wdc_nvme_ext_smart_log *ext_smart_log_ptr = (wdc_nvme_ext_smart_log *)data;

	if (mask == WDC_SCA_V1_NAND_STATS)
		printf("  NAND Statistics :- \n");
	else
		printf("  SMART Cloud Attributes :- \n");

	printf("  Physical Media Units Written TLC (Bytes) : %s\n",
		uint128_t_to_string(le128_to_cpu(
					ext_smart_log_ptr->ext_smart_pmuwt)));
	printf("  Physical Media Units Written SLC (Bytes) : %s\n",
		uint128_t_to_string(le128_to_cpu(
					ext_smart_log_ptr->ext_smart_pmuws)));
	printf("  Bad User NAND Block Count (Normalized) (Int) : %d\n",
			le16_to_cpu(*(uint16_t *)ext_smart_log_ptr->ext_smart_bunbc));
	printf("  Bad User NAND Block Count (Raw) (Int)	: %"PRIu64"\n",
			le64_to_cpu(*(uint64_t *)ext_smart_log_ptr->ext_smart_bunbc & 0xFFFFFFFFFFFF0000));
	printf("  XOR Recovery Count (Int) : %"PRIu64"\n",
			le64_to_cpu(ext_smart_log_ptr->ext_smart_xrc));
	printf("  Uncorrectable Read Error Count (Int) : %"PRIu64"\n",
			le64_to_cpu(ext_smart_log_ptr->ext_smart_urec));
	if (mask == WDC_SCA_V1_ALL) {
		printf("  SSD End to End correction counts (Corrected Errors) (Int) : %"PRIu64"\n",
			le64_to_cpu(ext_smart_log_ptr->ext_smart_eece));
		printf("  SSD End to End correction counts (Detected Errors) (Int) : %"PRIu64"\n",
			le64_to_cpu(ext_smart_log_ptr->ext_smart_eede));
		printf("  SSD End to End correction counts (Uncorrected E2E Errors) (Int) : %"PRIu64"\n",
			le64_to_cpu(ext_smart_log_ptr->ext_smart_eeue));
		printf("  System Data %% life-used : %d %%\n",
			ext_smart_log_ptr->ext_smart_sdpu);
	}
	printf("  User data erase counts (Minimum TLC) (Int) : %"PRIu64"\n",
			le64_to_cpu(ext_smart_log_ptr->ext_smart_mnudec));
	printf("  User data erase counts (Maximum TLC) (Int) : %"PRIu64"\n",
			le64_to_cpu(ext_smart_log_ptr->ext_smart_mxudec));
	printf("  User data erase counts (Minimum SLC) (Int) : %"PRIu64"\n",
			le64_to_cpu(ext_smart_log_ptr->ext_smart_mnec));
	printf("  User data erase counts (Maximum SLC) (Int) : %"PRIu64"\n",
			le64_to_cpu(ext_smart_log_ptr->ext_smart_mxec));
	printf("  User data erase counts (Average SLC) (Int) : %"PRIu64"\n",
			le64_to_cpu(ext_smart_log_ptr->ext_smart_avec));
	printf("  User data erase counts (Average TLC) (Int) : %"PRIu64"\n",
			le64_to_cpu(ext_smart_log_ptr->ext_smart_avudec));
	printf("  Program Fail Count (Normalized) (Int) : %d\n",
			le16_to_cpu(*(uint16_t *)ext_smart_log_ptr->ext_smart_pfc));
	printf("  Program Fail Count (Raw) (Int) : %"PRIu64"\n",
			le64_to_cpu(*(uint64_t *)ext_smart_log_ptr->ext_smart_pfc & 0xFFFFFFFFFFFF0000));
	printf("  Erase Fail Count (Normalized) (Int) : %d\n",
			le16_to_cpu(*(uint16_t *)ext_smart_log_ptr->ext_smart_efc));
	printf("  Erase Fail Count (Raw) (Int) : %"PRIu64"\n",
			le64_to_cpu(*(uint64_t *)ext_smart_log_ptr->ext_smart_efc & 0xFFFFFFFFFFFF0000));
	if (mask == WDC_SCA_V1_ALL) {
		printf("  PCIe Correctable Error Count (Int) : %"PRIu64"\n",
			le64_to_cpu(ext_smart_log_ptr->ext_smart_pcec));
		printf("  %% Free Blocks (User) (Int) : %d %%\n",
			ext_smart_log_ptr->ext_smart_pfbu);
		printf("  Security Version Number (Int) : %"PRIu64"\n",
			le64_to_cpu(ext_smart_log_ptr->ext_smart_svn));
		printf("  %% Free Blocks (System) (Int)	: %d %%\n",
			ext_smart_log_ptr->ext_smart_pfbs);
		printf("  NVMe Stats (# Data Set Management/TRIM Commands Completed) (Int) : %s\n",
			uint128_t_to_string(le128_to_cpu(
						ext_smart_log_ptr->ext_smart_dcc)));
		printf("  Total Namespace Utilization (nvme0n1 NUSE) (Bytes) : %"PRIu64"\n",
			le64_to_cpu(ext_smart_log_ptr->ext_smart_tnu));
		printf("  NVMe Stats (# NVMe Format Commands Completed) (Int) : %d\n",
			le16_to_cpu(ext_smart_log_ptr->ext_smart_fcc));
		printf("  Background Back-Pressure Gauge(%%) (Int) : %d\n",
			ext_smart_log_ptr->ext_smart_bbpg);
	}
	printf("  Total # of Soft ECC Error Count (Int)	: %"PRIu64"\n",
			le64_to_cpu(ext_smart_log_ptr->ext_smart_seec));
	if (mask == WDC_SCA_V1_ALL) {
		printf("  Total # of Read Refresh Count (Int) : %"PRIu64"\n",
			le64_to_cpu(ext_smart_log_ptr->ext_smart_rfsc));
	}
	printf("  Bad System NAND Block Count (Normalized) (Int) : %d\n",
			le16_to_cpu(*(uint16_t *)ext_smart_log_ptr->ext_smart_bsnbc));
	printf("  Bad System NAND Block Count (Raw) (Int) : %"PRIu64"\n",
			le64_to_cpu(*(uint64_t *)ext_smart_log_ptr->ext_smart_bsnbc & 0xFFFFFFFFFFFF0000));
	printf("  Endurance Estimate (Total Writable Lifetime Bytes) (Bytes) :  %s\n",
		uint128_t_to_string(
			le128_to_cpu(ext_smart_log_ptr->ext_smart_eest)));
	if (mask == WDC_SCA_V1_ALL) {
		printf("  Thermal Throttling Status & Count (Number of thermal throttling events) (Int)	: %d\n",
			le16_to_cpu(ext_smart_log_ptr->ext_smart_ttc));
		printf("  Total # Unaligned I/O (Int) : %"PRIu64"\n",
			le64_to_cpu(ext_smart_log_ptr->ext_smart_uio));
	}
	printf("  Total Physical Media Units Read (Bytes) (Int)	:  %s\n",
		uint128_t_to_string(
			le128_to_cpu(ext_smart_log_ptr->ext_smart_pmur)));
	if (mask == WDC_SCA_V1_ALL) {
		printf("  Command Timeout (# of READ Commands > 5 Seconds) (Int) : %"PRIu32"\n",
			le32_to_cpu(ext_smart_log_ptr->ext_smart_rtoc));
		printf("  Command Timeout (# of WRITE Commands > 5 Seconds) (Int) : %"PRIu32"\n",
			le32_to_cpu(ext_smart_log_ptr->ext_smart_wtoc));
		printf("  Command Timeout (# of TRIM Commands > 5 Seconds) (Int) : %"PRIu32"\n",
			le32_to_cpu(ext_smart_log_ptr->ext_smart_ttoc));
		printf("  Total PCIe Link Retraining Count (Int) : %"PRIu64"\n",
			le64_to_cpu(ext_smart_log_ptr->ext_smart_plrc));
		printf("  Active Power State Change Count (Int)	: %"PRIu64"\n",
			le64_to_cpu(ext_smart_log_ptr->ext_smart_pscc));
	}
	printf("  Cloud Boot SSD Spec Version (Int) : %d.%d.%d.%d\n",
			le16_to_cpu(ext_smart_log_ptr->ext_smart_maj),
			le16_to_cpu(ext_smart_log_ptr->ext_smart_min),
			le16_to_cpu(ext_smart_log_ptr->ext_smart_pt),
			le16_to_cpu(ext_smart_log_ptr->ext_smart_err));
	printf("  Cloud Boot SSD HW Revision (Int) : %d.%d.%d.%d\n",
			0, 0, 0, 0);
	if (mask == WDC_SCA_V1_ALL) {
		printf("  FTL Unit Size	: %"PRIu32"\n",
			le32_to_cpu(ext_smart_log_ptr->ext_smart_ftlus));
		printf("  TCG Ownership Status : %"PRIu32"\n",
			le32_to_cpu(ext_smart_log_ptr->ext_smart_tcgos));
		printf("  Log Page Version (Int) : %d\n",
			le16_to_cpu(ext_smart_log_ptr->ext_smart_lpv));
		printf("  Log page GUID	(Hex) : 0x");
		for (i = WDC_C0_GUID_LENGTH; i > 0; i--)
			printf("%02x", ext_smart_log_ptr->ext_smart_lpg[i-1]);
		printf("\n");
	}
	printf("\n");
}

static void wdc_print_ext_smart_cloud_log_json(void *data, int mask)
{
	wdc_nvme_ext_smart_log *ext_smart_log_ptr = (wdc_nvme_ext_smart_log *)data;
	struct json_object *root;

	root = json_create_object();
	json_object_add_value_uint128(root, "physical_media_units_bytes_tlc",
		le128_to_cpu(ext_smart_log_ptr->ext_smart_pmuwt));
	json_object_add_value_uint128(root, "physical_media_units_bytes_slc",
		le128_to_cpu(ext_smart_log_ptr->ext_smart_pmuws));
	json_object_add_value_uint(root, "bad_user_blocks_normalized",
		le16_to_cpu(*(uint16_t *)ext_smart_log_ptr->ext_smart_bunbc));
	json_object_add_value_uint64(root, "bad_user_blocks_raw",
		le64_to_cpu(*(uint64_t *)ext_smart_log_ptr->ext_smart_bunbc & 0xFFFFFFFFFFFF0000));
	json_object_add_value_uint64(root, "xor_recovery_count",
		le64_to_cpu(ext_smart_log_ptr->ext_smart_xrc));
	json_object_add_value_uint64(root, "uncorrectable_read_errors",
		le64_to_cpu(ext_smart_log_ptr->ext_smart_urec));
	if (mask == WDC_SCA_V1_ALL) {
		json_object_add_value_uint64(root, "corrected_e2e_errors",
			le64_to_cpu(ext_smart_log_ptr->ext_smart_eece));
		json_object_add_value_uint64(root, "detected_e2e_errors",
			le64_to_cpu(ext_smart_log_ptr->ext_smart_eede));
		json_object_add_value_uint64(root, "uncorrected_e2e_errors",
			le64_to_cpu(ext_smart_log_ptr->ext_smart_eeue));
		json_object_add_value_uint(root, "system_data_life_used_pct",
			(__u8)ext_smart_log_ptr->ext_smart_sdpu);
	}
	json_object_add_value_uint64(root, "min_slc_user_data_erase_count",
		le64_to_cpu(ext_smart_log_ptr->ext_smart_mnec));
	json_object_add_value_uint64(root, "min_tlc_user_data_erase_count",
		le64_to_cpu(ext_smart_log_ptr->ext_smart_mnudec));
	json_object_add_value_uint64(root, "max_slc_user_data_erase_count",
		le64_to_cpu(ext_smart_log_ptr->ext_smart_mxec));
	json_object_add_value_uint64(root, "max_tlc_user_data_erase_count",
		le64_to_cpu(ext_smart_log_ptr->ext_smart_mxudec));
	json_object_add_value_uint64(root, "avg_slc_user_data_erase_count",
		le64_to_cpu(ext_smart_log_ptr->ext_smart_avec));
	json_object_add_value_uint64(root, "avg_tlc_user_data_erase_count",
		le64_to_cpu(ext_smart_log_ptr->ext_smart_avudec));
	json_object_add_value_uint(root, "program_fail_count_normalized",
		le16_to_cpu(*(uint16_t *)ext_smart_log_ptr->ext_smart_pfc));
	json_object_add_value_uint64(root, "program_fail_count_raw",
		le64_to_cpu(*(uint64_t *)ext_smart_log_ptr->ext_smart_pfc & 0xFFFFFFFFFFFF0000));
	json_object_add_value_uint(root, "erase_fail_count_normalized",
		le16_to_cpu(*(uint16_t *)ext_smart_log_ptr->ext_smart_efc));
	json_object_add_value_uint64(root, "erase_fail_count_raw",
		le64_to_cpu(*(uint64_t *)ext_smart_log_ptr->ext_smart_efc & 0xFFFFFFFFFFFF0000));
	if (mask == WDC_SCA_V1_ALL) {
		json_object_add_value_uint64(root, "pcie_correctable_errors",
			le64_to_cpu(ext_smart_log_ptr->ext_smart_pcec));
		json_object_add_value_uint(root, "pct_free_blocks_user",
			(__u8)ext_smart_log_ptr->ext_smart_pfbu);
		json_object_add_value_uint64(root, "security_version",
			le64_to_cpu(ext_smart_log_ptr->ext_smart_svn));
		json_object_add_value_uint(root, "pct_free_blocks_system",
			(__u8)ext_smart_log_ptr->ext_smart_pfbs);
		json_object_add_value_uint128(root, "num_of_trim_commands",
			le128_to_cpu(ext_smart_log_ptr->ext_smart_dcc));
		json_object_add_value_uint64(root, "total_nuse_bytes",
			le64_to_cpu(ext_smart_log_ptr->ext_smart_tnu));
		json_object_add_value_uint(root, "num_of_format_commands",
			le16_to_cpu(ext_smart_log_ptr->ext_smart_fcc));
		json_object_add_value_uint(root, "background_pressure_gauge",
			(__u8)ext_smart_log_ptr->ext_smart_bbpg);
	}
	json_object_add_value_uint64(root, "soft_ecc_error_count",
		le64_to_cpu(ext_smart_log_ptr->ext_smart_seec));
	if (mask == WDC_SCA_V1_ALL) {
		json_object_add_value_uint64(root, "read_refresh_count",
			le64_to_cpu(ext_smart_log_ptr->ext_smart_rfsc));
	}
	json_object_add_value_uint(root, "bad_system_block_normalized",
		le16_to_cpu(*(uint16_t *)ext_smart_log_ptr->ext_smart_bsnbc));
	json_object_add_value_uint64(root, "bad_system_block_raw",
		le64_to_cpu(*(uint64_t *)ext_smart_log_ptr->ext_smart_bsnbc & 0xFFFFFFFFFFFF0000));
	json_object_add_value_uint128(root, "endurance_est_bytes",
		le128_to_cpu(ext_smart_log_ptr->ext_smart_eest));
	if (mask == WDC_SCA_V1_ALL) {
		json_object_add_value_uint(root, "num_throttling_events",
			le16_to_cpu(ext_smart_log_ptr->ext_smart_ttc));
		json_object_add_value_uint64(root, "total_unaligned_io",
			le64_to_cpu(ext_smart_log_ptr->ext_smart_uio));
	}
	json_object_add_value_uint128(root, "physical_media_units_read_bytes",
			le128_to_cpu(ext_smart_log_ptr->ext_smart_pmur));
	if (mask == WDC_SCA_V1_ALL) {
		json_object_add_value_uint(root, "num_read_timeouts",
			le32_to_cpu(ext_smart_log_ptr->ext_smart_rtoc));
		json_object_add_value_uint(root, "num_write_timeouts",
			le32_to_cpu(ext_smart_log_ptr->ext_smart_wtoc));
		json_object_add_value_uint(root, "num_trim_timeouts",
			le32_to_cpu(ext_smart_log_ptr->ext_smart_ttoc));
		json_object_add_value_uint64(root, "pcie_link_retrain_count",
			le64_to_cpu(ext_smart_log_ptr->ext_smart_plrc));
		json_object_add_value_uint64(root, "active_power_state_change_count",
			le64_to_cpu(ext_smart_log_ptr->ext_smart_pscc));
	}
	char vers_str[40];
	memset((void*)vers_str, 0, 40);
	sprintf((char*)vers_str, "%d.%d.%d.%d",
			le16_to_cpu(ext_smart_log_ptr->ext_smart_maj), le16_to_cpu(ext_smart_log_ptr->ext_smart_min),
			le16_to_cpu(ext_smart_log_ptr->ext_smart_pt), le16_to_cpu(ext_smart_log_ptr->ext_smart_err));
	json_object_add_value_string(root, "cloud_boot_ssd_spec_ver", vers_str);
	memset((void*)vers_str, 0, 40);
	sprintf((char*)vers_str, "%d.%d.%d.%d", 0, 0, 0, 0);
	json_object_add_value_string(root, "cloud_boot_ssd_hw_ver", vers_str);

	if (mask == WDC_SCA_V1_ALL) {
		json_object_add_value_uint(root, "ftl_unit_size",
			le32_to_cpu(ext_smart_log_ptr->ext_smart_ftlus));
		json_object_add_value_uint(root, "tcg_ownership_status",
			le32_to_cpu(ext_smart_log_ptr->ext_smart_tcgos));
		json_object_add_value_uint(root, "log_page_ver",
			le16_to_cpu(ext_smart_log_ptr->ext_smart_lpv));
		char guid[40];
		memset((void*)guid, 0, 40);
		sprintf((char*)guid, "0x%"PRIx64"%"PRIx64"",le64_to_cpu(*(uint64_t *)&ext_smart_log_ptr->ext_smart_lpg[8]),
				le64_to_cpu(*(uint64_t *)&ext_smart_log_ptr->ext_smart_lpg[0]));
		json_object_add_value_string(root, "log_page_guid", guid);
	}

	json_print_object(root, NULL);
	printf("\n");
	json_free_object(root);
}

static void wdc_print_smart_cloud_attr_C0_normal(void *data)
{
	__u8 *log_data = (__u8*)data;
	uint16_t smart_log_ver = 0;

	printf("  SMART Cloud Attributes :- \n");

	printf("  Physical media units written			: %s\n",
		uint128_t_to_string(le128_to_cpu(&log_data[SCAO_PMUW])));
	printf("  Physical media units read			: %s\n",
		uint128_t_to_string(le128_to_cpu(&log_data[SCAO_PMUR])));
	printf("  Bad user nand blocks Raw			: %"PRIu64"\n",
			(uint64_t)le64_to_cpu(*(uint64_t *)&log_data[SCAO_BUNBR] & 0x0000FFFFFFFFFFFF));
	printf("  Bad user nand blocks Normalized		: %d\n",
			(uint16_t)le16_to_cpu(*(uint16_t *)&log_data[SCAO_BUNBN]));
	printf("  Bad system nand blocks Raw			: %"PRIu64"\n",
			(uint64_t)le64_to_cpu(*(uint64_t *)&log_data[SCAO_BSNBR] & 0x0000FFFFFFFFFFFF));
	printf("  Bad system nand blocks Normalized		: %d\n",
			(uint16_t)le16_to_cpu(*(uint16_t *)&log_data[SCAO_BSNBN]));
	printf("  XOR recovery count			  	: %"PRIu64"\n",
			(uint64_t)le64_to_cpu(*(uint64_t *)&log_data[SCAO_XRC]));
	printf("  Uncorrectable read error count		: %"PRIu64"\n",
			(uint64_t)le64_to_cpu(*(uint64_t *)&log_data[SCAO_UREC]));
	printf("  Soft ecc error count				: %"PRIu64"\n",
			(uint64_t)le64_to_cpu(*(uint64_t *)&log_data[SCAO_SEEC]));
	printf("  End to end corrected errors			: %"PRIu32"\n",
			(uint32_t)le32_to_cpu(*(uint32_t *)&log_data[SCAO_EECE]));
	printf("  End to end detected errors			: %"PRIu32"\n",
			(uint32_t)le32_to_cpu(*(uint32_t *)&log_data[SCAO_EEDC]));
	printf("  System data percent used			: %d\n", (__u8)log_data[SCAO_SDPU]);
	printf("  Refresh counts				: %"PRIu64"\n",
			(uint64_t)(le64_to_cpu(*(uint64_t *)&log_data[SCAO_RFSC])& 0x00FFFFFFFFFFFFFF));
	printf("  Max User data erase counts			: %"PRIu32"\n",
			(uint32_t)le32_to_cpu(*(uint32_t *)&log_data[SCAO_MXUDEC]));
	printf("  Min User data erase counts			: %"PRIu32"\n",
			(uint32_t)le32_to_cpu(*(uint32_t *)&log_data[SCAO_MNUDEC]));
	printf("  Number of Thermal throttling events		: %d\n", (__u8)log_data[SCAO_NTTE]);
	printf("  Current throttling status			: 0x%x\n", (__u8)log_data[SCAO_CTS]);
	printf("  PCIe correctable error count			: %"PRIu64"\n",
			(uint64_t)le64_to_cpu(*(uint64_t *)&log_data[SCAO_PCEC]));
	printf("  Incomplete shutdowns				: %"PRIu32"\n",
			(uint32_t)le32_to_cpu(*(uint32_t *)&log_data[SCAO_ICS]));
	printf("  Percent free blocks				: %d\n", (__u8)log_data[SCAO_PFB]);
	printf("  Capacitor health				: %"PRIu16"\n",
			(uint16_t)le16_to_cpu(*(uint16_t *)&log_data[SCAO_CPH]));
	printf("  Unaligned I/O					: %"PRIu64"\n",
			(uint64_t)le64_to_cpu(*(uint64_t *)&log_data[SCAO_UIO]));
	printf("  Security Version Number			: %"PRIu64"\n",
			(uint64_t)le64_to_cpu(*(uint64_t *)&log_data[SCAO_SVN]));
	printf("  NUSE Namespace utilization			: %"PRIu64"\n",
			(uint64_t)le64_to_cpu(*(uint64_t *)&log_data[SCAO_NUSE]));
	printf("  PLP start count				: %s\n",
		uint128_t_to_string(le128_to_cpu(&log_data[SCAO_PSC])));
	printf("  Endurance estimate				: %s\n",
		uint128_t_to_string(le128_to_cpu(&log_data[SCAO_EEST])));
	smart_log_ver = (uint16_t)le16_to_cpu(*(uint16_t *)&log_data[SCAO_LPV]);
	printf("  Log page version				: %"PRIu16"\n",smart_log_ver);
	printf("  Log page GUID					: 0x");
	printf("%"PRIx64"%"PRIx64"\n",(uint64_t)le64_to_cpu(*(uint64_t *)&log_data[SCAO_LPG + 8]),
			(uint64_t)le64_to_cpu(*(uint64_t *)&log_data[SCAO_LPG]));
	if(smart_log_ver > 2) {
		printf("  Errata Version Field				: %d\n",
				(__u8)log_data[SCAO_EVF]);
		printf("  Point Version Field				: %"PRIu16"\n",
				(uint16_t)log_data[SCAO_PVF]);
		printf("  Minor Version Field				: %"PRIu16"\n",
				(uint16_t)log_data[SCAO_MIVF]);
		printf("  Major Version Field				: %d\n",
				(__u8)log_data[SCAO_MAVF]);
		printf("  NVMe Errata Version				: %d\n",
				(__u8)log_data[SCAO_NEV]);
		printf("  PCIe Link Retraining Count			: %"PRIu64"\n",
			(uint64_t)le64_to_cpu(*(uint64_t *)&log_data[SCAO_PLRC]));
	}
	if (smart_log_ver > 3) {
		printf("  Power State Change Count				: %"PRIu64"\n",
			(uint64_t)le64_to_cpu(*(uint64_t *)&log_data[SCAO_PSCC]));
	}
	printf("\n");
}

static void wdc_print_smart_cloud_attr_C0_json(void *data)
{
	__u8 *log_data = (__u8*)data;
	struct json_object *root;
	uint16_t smart_log_ver = 0;

	root = json_create_object();
	json_object_add_value_uint128(root, "Physical media units written",
			le128_to_cpu(&log_data[SCAO_PMUW]));
	json_object_add_value_uint128(root, "Physical media units read",
			le128_to_cpu(&log_data[SCAO_PMUR]));
	json_object_add_value_uint64(root, "Bad user nand blocks - Raw",
			(uint64_t)le64_to_cpu(*(uint64_t *)&log_data[SCAO_BUNBR] & 0x0000FFFFFFFFFFFF));
	json_object_add_value_uint(root, "Bad user nand blocks - Normalized",
			(uint16_t)le16_to_cpu(*(uint16_t *)&log_data[SCAO_BUNBN]));
	json_object_add_value_uint64(root, "Bad system nand blocks - Raw",
			(uint64_t)le64_to_cpu(*(uint64_t *)&log_data[SCAO_BSNBR] & 0x0000FFFFFFFFFFFF));
	json_object_add_value_uint(root, "Bad system nand blocks - Normalized",
			(uint16_t)le16_to_cpu(*(uint16_t *)&log_data[SCAO_BSNBN]));
	json_object_add_value_uint64(root, "XOR recovery count",
			(uint64_t)le64_to_cpu(*(uint64_t *)&log_data[SCAO_XRC]));
	json_object_add_value_uint64(root, "Uncorrectable read error count",
			(uint64_t)le64_to_cpu(*(uint64_t *)&log_data[SCAO_UREC]));
	json_object_add_value_uint64(root, "Soft ecc error count",
			(uint64_t)le64_to_cpu(*(uint64_t *)&log_data[SCAO_SEEC]));
	json_object_add_value_uint(root, "End to end corrected errors",
			(uint32_t)le32_to_cpu(*(uint32_t *)&log_data[SCAO_EECE]));
	json_object_add_value_uint(root, "End to end detected errors",
			(uint32_t)le32_to_cpu(*(uint32_t *)&log_data[SCAO_EEDC]));
	json_object_add_value_uint(root, "System data percent used",
			(__u8)log_data[SCAO_SDPU]);
	json_object_add_value_uint64(root, "Refresh counts",
			(uint64_t)(le64_to_cpu(*(uint64_t *)&log_data[SCAO_RFSC])& 0x00FFFFFFFFFFFFFF));
	json_object_add_value_uint(root, "Max User data erase counts",
			(uint32_t)le32_to_cpu(*(uint32_t *)&log_data[SCAO_MXUDEC]));
	json_object_add_value_uint(root, "Min User data erase counts",
			(uint32_t)le32_to_cpu(*(uint32_t *)&log_data[SCAO_MNUDEC]));
	json_object_add_value_uint(root, "Number of Thermal throttling events",
			(__u8)log_data[SCAO_NTTE]);
	json_object_add_value_uint(root, "Current throttling status",
			(__u8)log_data[SCAO_CTS]);
	json_object_add_value_uint64(root, "PCIe correctable error count",
			(uint64_t)le64_to_cpu(*(uint64_t *)&log_data[SCAO_PCEC]));
	json_object_add_value_uint(root, "Incomplete shutdowns",
			(uint32_t)le32_to_cpu(*(uint32_t *)&log_data[SCAO_ICS]));
	json_object_add_value_uint(root, "Percent free blocks",
			(__u8)log_data[SCAO_PFB]);
	json_object_add_value_uint(root, "Capacitor health",
			(uint16_t)le16_to_cpu(*(uint16_t *)&log_data[SCAO_CPH]));
	json_object_add_value_uint64(root, "Unaligned I/O",
			(uint64_t)le64_to_cpu(*(uint64_t *)&log_data[SCAO_UIO]));
	json_object_add_value_uint64(root, "Security Version Number",
			(uint64_t)le64_to_cpu(*(uint64_t *)&log_data[SCAO_SVN]));
	json_object_add_value_uint64(root, "NUSE - Namespace utilization",
			(uint64_t)le64_to_cpu(*(uint64_t *)&log_data[SCAO_NUSE]));
	json_object_add_value_uint128(root, "PLP start count",
			le128_to_cpu(&log_data[SCAO_PSC]));
	json_object_add_value_uint128(root, "Endurance estimate",
			le128_to_cpu(&log_data[SCAO_EEST]));
	smart_log_ver = (uint16_t)le16_to_cpu(*(uint16_t *)&log_data[SCAO_LPV]);
	json_object_add_value_uint(root, "Log page version", smart_log_ver);
	char guid[40];
	memset((void*)guid, 0, 40);
	sprintf((char*)guid, "0x%"PRIx64"%"PRIx64"",(uint64_t)le64_to_cpu(*(uint64_t *)&log_data[SCAO_LPG + 8]),
		(uint64_t)le64_to_cpu(*(uint64_t *)&log_data[SCAO_LPG]));
	json_object_add_value_string(root, "Log page GUID", guid);
	if(smart_log_ver > 2){
		json_object_add_value_uint(root, "Errata Version Field",
				(__u8)log_data[SCAO_EVF]);
		json_object_add_value_uint(root, "Point Version Field",
				(uint16_t)log_data[SCAO_PVF]);
		json_object_add_value_uint(root, "Minor Version Field",
				(uint16_t)log_data[SCAO_MIVF]);
		json_object_add_value_uint(root, "Major Version Field",
				(__u8)log_data[SCAO_MAVF]);
		json_object_add_value_uint(root, "NVMe Errata Version",
				(__u8)log_data[SCAO_NEV]);
		json_object_add_value_uint64(root, "PCIe Link Retraining Count",
				(uint64_t)le64_to_cpu(*(uint64_t *)&log_data[SCAO_PLRC]));
	}
	if(smart_log_ver > 3) {
		json_object_add_value_uint64(root, "Power State Change Count",
				(uint64_t)le64_to_cpu(*(uint64_t *)&log_data[SCAO_PSCC]));
	}
	json_print_object(root, NULL);
	printf("\n");
	json_free_object(root);
}

static void wdc_print_eol_c0_normal(void *data)
{

	__u8 *log_data = (__u8*)data;

	printf("  End of Life Log Page 0xC0 :- \n");

	printf("  Realloc Block Count			%"PRIu32"\n",
			(uint32_t)le32_to_cpu(log_data[EOL_RBC]));
	printf("  ECC Rate				%"PRIu32"\n",
			(uint32_t)le32_to_cpu(log_data[EOL_ECCR]));
	printf("  Write Amp				%"PRIu32"\n",
			(uint32_t)le32_to_cpu(log_data[EOL_WRA]));
	printf("  Percent Life Remaining		%"PRIu32"\n",
			(uint32_t)le32_to_cpu(log_data[EOL_PLR]));
	printf("  Program Fail Count			%"PRIu32"\n",
			(uint32_t)le32_to_cpu(log_data[EOL_PFC]));
	printf("  Erase Fail Count			%"PRIu32"\n",
			(uint32_t)le32_to_cpu(log_data[EOL_EFC]));
	printf("  Raw Read Error Rate			%"PRIu32"\n",
			(uint32_t)le32_to_cpu(log_data[EOL_RRER]));

}

static void wdc_print_eol_c0_json(void *data)
{
	__u8 *log_data = (__u8*)data;
	struct json_object *root;

	root = json_create_object();

	json_object_add_value_uint(root, "Realloc Block Count",
			(uint32_t)le32_to_cpu(log_data[EOL_RBC]));
	json_object_add_value_uint(root, "ECC Rate",
			(uint32_t)le32_to_cpu(log_data[EOL_ECCR]));
	json_object_add_value_uint(root, "Write Amp",
			(uint32_t)le32_to_cpu(log_data[EOL_WRA]));
	json_object_add_value_uint(root, "Percent Life Remaining",
			(uint32_t)le32_to_cpu(log_data[EOL_PLR]));
	json_object_add_value_uint(root, "Program Fail Count",
			(uint32_t)le32_to_cpu(log_data[EOL_PFC]));
	json_object_add_value_uint(root, "Erase Fail Count",
			(uint32_t)le32_to_cpu(log_data[EOL_EFC]));
	json_object_add_value_uint(root, "Raw Read Error Rate",
			(uint32_t)le32_to_cpu(log_data[EOL_RRER]));

	json_print_object(root, NULL);
	printf("\n");
	json_free_object(root);
}

static int wdc_print_ext_smart_cloud_log(void *data, int fmt)
{
	if (!data) {
		fprintf(stderr, "ERROR : WDC : Invalid buffer to read 0xC0 V1 log\n");
		return -1;
	}
	switch (fmt) {
	case NORMAL:
		wdc_print_ext_smart_cloud_log_normal(data, WDC_SCA_V1_ALL);
		break;
	case JSON:
		wdc_print_ext_smart_cloud_log_json(data, WDC_SCA_V1_ALL);
		break;
	}
	return 0;
}

static int wdc_print_c0_cloud_attr_log(void *data, int fmt)
{
	if (!data) {
		fprintf(stderr, "ERROR : WDC : Invalid buffer to read 0xC0 log\n");
		return -1;
	}
	switch (fmt) {
	case NORMAL:
		wdc_print_smart_cloud_attr_C0_normal(data);
		break;
	case JSON:
		wdc_print_smart_cloud_attr_C0_json(data);
		break;
	}
	return 0;
}

static int wdc_print_c0_eol_log(void *data, int fmt)
{
	if (!data) {
		fprintf(stderr, "ERROR : WDC : Invalid buffer to read 0xC0 log\n");
		return -1;
	}
	switch (fmt) {
	case NORMAL:
		wdc_print_eol_c0_normal(data);
		break;
	case JSON:
		wdc_print_eol_c0_json(data);
		break;
	}
	return 0;
}

static int wdc_get_c0_log_page(nvme_root_t r, struct nvme_dev *dev, char *format,
			int uuid_index, __u32 namespace_id)
{
	int ret = 0;
	int fmt = -1;
	int i = 0;
	__u8 *data;
	__u32 cust_id;
	uint32_t device_id, read_vendor_id;

	if (!wdc_check_device(r, dev))
		return -1;
	fmt = validate_output_format(format);
	if (fmt < 0) {
		fprintf(stderr, "ERROR : WDC : invalid output format\n");
		return fmt;
	}

	ret = wdc_get_pci_ids(r, dev, &device_id, &read_vendor_id);

	switch (device_id) {

	case WDC_NVME_SN640_DEV_ID:
	case WDC_NVME_SN640_DEV_ID_1:
	case WDC_NVME_SN640_DEV_ID_2:
	case WDC_NVME_SN640_DEV_ID_3:
	case WDC_NVME_SN840_DEV_ID:
	case WDC_NVME_SN840_DEV_ID_1:
	case WDC_NVME_SN860_DEV_ID:
	case WDC_NVME_SN650_DEV_ID:
	case WDC_NVME_SN650_DEV_ID_1:
	case WDC_NVME_SN650_DEV_ID_2:
	case WDC_NVME_SN650_DEV_ID_3:
	case WDC_NVME_SN650_DEV_ID_4:
	case WDC_NVME_SN655_DEV_ID:
	case WDC_NVME_SN560_DEV_ID_1:
	case WDC_NVME_SN560_DEV_ID_2:
	case WDC_NVME_SN560_DEV_ID_3:
	case WDC_NVME_SN550_DEV_ID:
		cust_id = wdc_get_fw_cust_id(r, dev);
		if (cust_id == WDC_INVALID_CUSTOMER_ID) {
			fprintf(stderr, "%s: ERROR : WDC : invalid customer id\n", __func__);
			return -1;
		}

		if ((cust_id == WDC_CUSTOMER_ID_0x1004) || (cust_id == WDC_CUSTOMER_ID_0x1008) || (cust_id == WDC_CUSTOMER_ID_0x1005))
		{
			if (uuid_index == 0)
			{
				if ((data = (__u8*) malloc(sizeof (__u8) * WDC_NVME_SMART_CLOUD_ATTR_LEN)) == NULL) {
					fprintf(stderr, "ERROR : WDC : malloc : %s\n", strerror(errno));
					return -1;
				}

				if (namespace_id == NVME_NSID_ALL) {
					ret = nvme_get_nsid(dev_fd(dev),
							    &namespace_id);
					if (ret < 0) {
						namespace_id = NVME_NSID_ALL;
					}
				}

				/* Get the 0xC0 log data */
				struct nvme_get_log_args args = {
					.args_size	= sizeof(args),
					.fd		= dev_fd(dev),
					.lid		= WDC_NVME_GET_SMART_CLOUD_ATTR_LOG_ID,
					.nsid		= namespace_id,
					.lpo		= 0,
					.lsp		= NVME_LOG_LSP_NONE,
					.lsi		= 0,
					.rae		= false,
					.uuidx		= uuid_index,
					.csi		= NVME_CSI_NVM,
					.ot		= false,
					.len		= WDC_NVME_SMART_CLOUD_ATTR_LEN,
					.log		= data,
					.timeout	= NVME_DEFAULT_IOCTL_TIMEOUT,
					.result		= NULL,
				};
				ret = nvme_get_log(&args);

				if (strcmp(format, "json"))
					nvme_show_status(ret);

				if (ret == 0) {

					/* Verify GUID matches */
					for (i=0; i<16; i++) {
						if (scao_guid[i] != data[SCAO_LPG + i])	{
							fprintf(stderr, "ERROR : WDC : Unknown GUID in C0 Log Page data\n");
							int j;
							fprintf(stderr, "ERROR : WDC : Expected GUID:  0x");
							for (j = 0; j<16; j++) {
								fprintf(stderr, "%x", scao_guid[j]);
							}
							fprintf(stderr, "\nERROR : WDC : Actual GUID:    0x");
							for (j = 0; j<16; j++) {
								fprintf(stderr, "%x", data[SCAO_LPG + j]);
							}
							fprintf(stderr, "\n");

							ret = -1;
							break;
						}
					}

					if (ret == 0) {

						/* parse the data */
						wdc_print_c0_cloud_attr_log(data, fmt);
					}
				} else {
					fprintf(stderr, "ERROR : WDC : Unable to read C0 Log Page data\n");
					ret = -1;
				}

				free(data);
			} else if (uuid_index == 1) {

				if ((data = (__u8*) malloc(sizeof (__u8) * WDC_NVME_EOL_STATUS_LOG_LEN)) == NULL) {
					fprintf(stderr, "ERROR : WDC : malloc : %s\n", strerror(errno));
					return -1;
				}

				/* Get the 0xC0 log data */
				struct nvme_get_log_args args = {
					.args_size	= sizeof(args),
					.fd		= dev_fd(dev),
					.lid		= WDC_NVME_GET_EOL_STATUS_LOG_OPCODE,
					.nsid		= NVME_NSID_ALL,
					.lpo		= 0,
					.lsp		= NVME_LOG_LSP_NONE,
					.lsi		= 0,
					.rae		= false,
					.uuidx		= uuid_index,
					.csi		= NVME_CSI_NVM,
					.ot		= false,
					.len		= WDC_NVME_EOL_STATUS_LOG_LEN,
					.log		= data,
					.timeout	= NVME_DEFAULT_IOCTL_TIMEOUT,
					.result		= NULL,
				};
				ret = nvme_get_log(&args);

				if (strcmp(format, "json"))
					nvme_show_status(ret);

				if (ret == 0) {
					/* parse the data */
					wdc_print_c0_eol_log(data, fmt);
				} else {
					fprintf(stderr, "ERROR : WDC : Unable to read C0 Log Page data\n");
					ret = -1;
				}

				free(data);
			} else {
				fprintf(stderr, "ERROR : WDC : Unknown uuid index\n");
				ret = -1;
			}
		}
		else {
			if ((data = (__u8*) malloc(sizeof (__u8) * WDC_NVME_EOL_STATUS_LOG_LEN)) == NULL) {
				fprintf(stderr, "ERROR : WDC : malloc : %s\n", strerror(errno));
				return -1;
			}

			/* Get the 0xC0 log data */
			ret = nvme_get_log_simple(dev_fd(dev),
						  WDC_NVME_GET_EOL_STATUS_LOG_OPCODE,
						  WDC_NVME_EOL_STATUS_LOG_LEN,
						  data);

			if (strcmp(format, "json"))
				nvme_show_status(ret);

			if (ret == 0) {
				/* parse the data */
				wdc_print_c0_eol_log(data, fmt);
			} else {
				fprintf(stderr, "ERROR : WDC : Unable to read C0 Log Page data\n");
				ret = -1;
			}

			free(data);
		}
		break;

	case WDC_NVME_ZN350_DEV_ID:
	case WDC_NVME_ZN350_DEV_ID_1:
		if ((data = (__u8*) malloc(sizeof (__u8) * WDC_NVME_SMART_CLOUD_ATTR_LEN)) == NULL) {
			fprintf(stderr, "ERROR : WDC : malloc : %s\n", strerror(errno));
			return -1;
		}

		/* Get the 0xC0 log data */
		ret = nvme_get_log_simple(dev_fd(dev),
					  WDC_NVME_GET_SMART_CLOUD_ATTR_LOG_ID,
					  WDC_NVME_SMART_CLOUD_ATTR_LEN, data);

		if (strcmp(format, "json"))
			nvme_show_status(ret);

		if (ret == 0) {
			/* parse the data */
			wdc_print_c0_cloud_attr_log(data, fmt);
		} else {
			fprintf(stderr, "ERROR : WDC : Unable to read C0 Log Page data\n");
			ret = -1;
		}

		free(data);
		break;

	case WDC_NVME_SN820CL_DEV_ID:
		/* Get the 0xC0 Extended Smart Cloud Attribute log data */
		data = NULL;
		ret = nvme_get_ext_smart_cloud_log(dev_fd(dev), &data,
						   uuid_index, namespace_id);

		if (strcmp(format, "json"))
			nvme_show_status(ret);

		if (ret == 0) {
			/* parse the data */
			wdc_print_ext_smart_cloud_log(data, fmt);
		} else {
			fprintf(stderr, "ERROR : WDC : Unable to read C0 Log Page V1 data\n");
			ret = -1;
		}

		if (data)
			free(data);
		break;

	default:
		fprintf(stderr, "ERROR : WDC : Unknown device id - 0x%x\n", device_id);
		ret = -1;
		break;

	}

	return ret;
}

static int wdc_print_latency_monitor_log(struct nvme_dev *dev,
					 struct wdc_ssd_latency_monitor_log *log_data,
					 int fmt)
{
	if (!log_data) {
		fprintf(stderr, "ERROR : WDC : Invalid C3 log data buffer\n");
		return -1;
	}
	switch (fmt) {
	case NORMAL:
		wdc_print_latency_monitor_log_normal(dev, log_data);
		break;
	case JSON:
		wdc_print_latency_monitor_log_json(log_data);
		break;
	}
	return 0;
}

static int wdc_print_error_rec_log(struct wdc_ocp_c1_error_recovery_log *log_data, int fmt)
{
	if (!log_data) {
		fprintf(stderr, "ERROR : WDC : Invalid C1 log data buffer\n");
		return -1;
	}
	switch (fmt) {
	case NORMAL:
		wdc_print_error_rec_log_normal(log_data);
		break;
	case JSON:
		wdc_print_error_rec_log_json(log_data);
		break;
	}
	return 0;
}

static int wdc_print_dev_cap_log(struct wdc_ocp_C4_dev_cap_log *log_data, int fmt)
{
	if (!log_data) {
		fprintf(stderr, "ERROR : WDC : Invalid C4 log data buffer\n");
		return -1;
	}
	switch (fmt) {
	case NORMAL:
		wdc_print_dev_cap_log_normal(log_data);
		break;
	case JSON:
		wdc_print_dev_cap_log_json(log_data);
		break;
	}
	return 0;
}

static int wdc_print_unsupported_reqs_log(struct wdc_ocp_C5_unsupported_reqs *log_data, int fmt)
{
	if (!log_data) {
		fprintf(stderr, "ERROR : WDC : Invalid C5 log data buffer\n");
		return -1;
	}
	switch (fmt) {
	case NORMAL:
		wdc_print_unsupported_reqs_log_normal(log_data);
		break;
	case JSON:
		wdc_print_unsupported_reqs_log_json(log_data);
		break;
	}
	return 0;
}

static int wdc_print_fb_ca_log(struct wdc_ssd_ca_perf_stats *perf, int fmt)
{
	if (!perf) {
		fprintf(stderr, "ERROR : WDC : Invalid buffer to read perf stats\n");
		return -1;
	}
	switch (fmt) {
	case NORMAL:
		wdc_print_fb_ca_log_normal(perf);
		break;
	case JSON:
		wdc_print_fb_ca_log_json(perf);
		break;
	}
	return 0;
}

static int wdc_print_bd_ca_log(struct nvme_dev *dev, void *bd_data, int fmt)
{
	if (!bd_data) {
		fprintf(stderr, "ERROR : WDC : Invalid buffer to read data\n");
		return -1;
	}
	switch (fmt) {
	case NORMAL:
		wdc_print_bd_ca_log_normal(dev, bd_data);
		break;
	case JSON:
		wdc_print_bd_ca_log_json(bd_data);
		break;
	default:
		fprintf(stderr, "ERROR : WDC : Unknown format - %d\n", fmt);
		return -1;
	}
	return 0;
}

static int wdc_print_d0_log(struct wdc_ssd_d0_smart_log *perf, int fmt)
{
	if (!perf) {
		fprintf(stderr, "ERROR : WDC : Invalid buffer to read perf stats\n");
		return -1;
	}
	switch (fmt) {
	case NORMAL:
		wdc_print_d0_log_normal(perf);
		break;
	case JSON:
		wdc_print_d0_log_json(perf);
		break;
	}
	return 0;
}

static int wdc_print_fw_act_history_log(__u8 *data, int num_entries, int fmt, __u32 cust_id, __u32 vendor_id)
{
	if (!data) {
		fprintf(stderr, "ERROR : WDC : Invalid buffer to read fw activate history entries\n");
		return -1;
	}

	switch (fmt) {
	case NORMAL:
		wdc_print_fw_act_history_log_normal(data, num_entries, cust_id, vendor_id);
		break;
	case JSON:
		wdc_print_fw_act_history_log_json(data, num_entries, cust_id, vendor_id);
		break;
	}
	return 0;
}

static int wdc_get_ca_log_page(nvme_root_t r, struct nvme_dev *dev, char *format)
{
	int ret = 0;
	int fmt = -1;
	__u8 *data;
	struct wdc_ssd_ca_perf_stats *perf;
	uint32_t read_device_id, read_vendor_id;
	__u32 cust_id;

	if (!wdc_check_device(r, dev))
		return -1;
	fmt = validate_output_format(format);
	if (fmt < 0) {
		fprintf(stderr, "ERROR : WDC : invalid output format\n");
		return fmt;
	}

	/* verify the 0xCA log page is supported */
	if (wdc_nvme_check_supported_log_page(r, dev, WDC_NVME_GET_DEVICE_INFO_LOG_OPCODE) == false) {
		fprintf(stderr, "ERROR : WDC : 0xCA Log Page not supported\n");
		return -1;
	}

	/* get the FW customer id */
	cust_id = wdc_get_fw_cust_id(r, dev);
	if (cust_id == WDC_INVALID_CUSTOMER_ID) {
		fprintf(stderr, "%s: ERROR : WDC : invalid customer id\n", __func__);
		return -1;
	}

	ret = wdc_get_pci_ids(r, dev, &read_device_id, &read_vendor_id);

	switch (read_device_id) {

	case WDC_NVME_SN200_DEV_ID:

		if (cust_id == WDC_CUSTOMER_ID_0x1005) {

			if ((data = (__u8*) malloc(sizeof (__u8) * WDC_FB_CA_LOG_BUF_LEN)) == NULL) {
				fprintf(stderr, "ERROR : WDC : malloc : %s\n", strerror(errno));
				return -1;
			}

			memset(data, 0, sizeof (__u8) * WDC_FB_CA_LOG_BUF_LEN);

			ret = nvme_get_log_simple(dev_fd(dev),
						  WDC_NVME_GET_DEVICE_INFO_LOG_OPCODE,
						  WDC_FB_CA_LOG_BUF_LEN, data);
			if (strcmp(format, "json"))
				nvme_show_status(ret);

			if (ret == 0) {
				/* parse the data */
				perf = (struct wdc_ssd_ca_perf_stats *)(data);
				ret = wdc_print_fb_ca_log(perf, fmt);
			} else {
				fprintf(stderr, "ERROR : WDC : Unable to read CA Log Page data\n");
				ret = -1;
			}
		} else {

			fprintf(stderr, "ERROR : WDC : Unsupported Customer id, id = 0x%x\n", cust_id);
			return -1;
		}
		break;

	case WDC_NVME_SN640_DEV_ID:
	case WDC_NVME_SN640_DEV_ID_1:
	case WDC_NVME_SN640_DEV_ID_2:
	case WDC_NVME_SN640_DEV_ID_3:
	case WDC_NVME_SN840_DEV_ID:
	case WDC_NVME_SN840_DEV_ID_1:
	case WDC_NVME_SN860_DEV_ID:
		if (cust_id == WDC_CUSTOMER_ID_0x1005) {

			if ((data = (__u8*) malloc(sizeof (__u8) * WDC_FB_CA_LOG_BUF_LEN)) == NULL) {
				fprintf(stderr, "ERROR : WDC : malloc : %s\n", strerror(errno));
				return -1;
			}

			memset(data, 0, sizeof (__u8) * WDC_FB_CA_LOG_BUF_LEN);

			ret = nvme_get_log_simple(dev_fd(dev),
						  WDC_NVME_GET_DEVICE_INFO_LOG_OPCODE,
						  WDC_FB_CA_LOG_BUF_LEN, data);
			if (strcmp(format, "json"))
				nvme_show_status(ret);

			if (ret == 0) {
				/* parse the data */
				perf = (struct wdc_ssd_ca_perf_stats *)(data);
				ret = wdc_print_fb_ca_log(perf, fmt);
			} else {
				fprintf(stderr, "ERROR : WDC : Unable to read CA Log Page data\n");
				ret = -1;
			}
		} else if ((cust_id == WDC_CUSTOMER_ID_GN) || (cust_id == WDC_CUSTOMER_ID_GD) ||
				(cust_id == WDC_CUSTOMER_ID_BD)) {
			if ((data = (__u8*) malloc(sizeof (__u8) * WDC_BD_CA_LOG_BUF_LEN)) == NULL) {
				fprintf(stderr, "ERROR : WDC : malloc : %s\n", strerror(errno));
				return -1;
			}

			memset(data, 0, sizeof (__u8) * WDC_BD_CA_LOG_BUF_LEN);
			ret = nvme_get_log_simple(dev_fd(dev),
						  WDC_NVME_GET_DEVICE_INFO_LOG_OPCODE,
						  WDC_BD_CA_LOG_BUF_LEN, data);
			if (strcmp(format, "json"))
				nvme_show_status(ret);

			if (ret == 0) {
				/* parse the data */
				ret = wdc_print_bd_ca_log(dev, data, fmt);
			} else {
				fprintf(stderr, "ERROR : WDC : Unable to read CA Log Page data\n");
				ret = -1;
			}

			break;
		} else {

			fprintf(stderr, "ERROR : WDC : Unsupported Customer id, id = 0x%x\n", cust_id);
			return -1;
		}
		break;

	default:

		fprintf(stderr, "ERROR : WDC : Log page 0xCA not supported for this device\n");
		return -1;
		break;
	}

	free(data);
	return ret;
}

static int wdc_get_c1_log_page(nvme_root_t r, struct nvme_dev *dev,
			       char *format, uint8_t interval)
{
	int ret = 0;
	int fmt = -1;
	__u8 *data;
	__u8 *p;
	int i;
	int skip_cnt = 4;
	int total_subpages;
	struct wdc_log_page_header *l;
	struct wdc_log_page_subpage_header *sph;
	struct wdc_ssd_perf_stats *perf;

	if (!wdc_check_device(r, dev))
		return -1;
	fmt = validate_output_format(format);
	if (fmt < 0) {
		fprintf(stderr, "ERROR : WDC : invalid output format\n");
		return fmt;
	}

	if (interval < 1 || interval > 15) {
		fprintf(stderr, "ERROR : WDC : interval out of range [1-15]\n");
		return -1;
	}

	if ((data = (__u8*) malloc(sizeof (__u8) * WDC_ADD_LOG_BUF_LEN)) == NULL) {
		fprintf(stderr, "ERROR : WDC : malloc : %s\n", strerror(errno));
		return -1;
	}
	memset(data, 0, sizeof (__u8) * WDC_ADD_LOG_BUF_LEN);

	ret = nvme_get_log_simple(dev_fd(dev), WDC_NVME_ADD_LOG_OPCODE,
				  WDC_ADD_LOG_BUF_LEN, data);
	if (strcmp(format, "json"))
		nvme_show_status(ret);
	if (ret == 0) {
		l = (struct wdc_log_page_header*)data;
		total_subpages = l->num_subpages + WDC_NVME_GET_STAT_PERF_INTERVAL_LIFETIME - 1;
		for (i = 0, p = data + skip_cnt; i < total_subpages; i++, p += skip_cnt) {
			sph = (struct wdc_log_page_subpage_header *) p;
			if (sph->spcode == WDC_GET_LOG_PAGE_SSD_PERFORMANCE) {
				if (sph->pcset == interval) {
					perf = (struct wdc_ssd_perf_stats *) (p + 4);
					ret = wdc_print_log(perf, fmt);
					break;
				}
			}
			skip_cnt = le16_to_cpu(sph->subpage_length) + 4;
		}
		if (ret) {
			fprintf(stderr, "ERROR : WDC : Unable to read data from buffer\n");
		}
	}
	free(data);
	return ret;
}

static int wdc_get_c3_log_page(nvme_root_t r, struct nvme_dev *dev, char *format)
{
	int ret = 0;
	int fmt = -1;
	__u8 *data;
	int i;
	struct wdc_ssd_latency_monitor_log *log_data;

	if (!wdc_check_device(r, dev))
		return -1;
	fmt = validate_output_format(format);
	if (fmt < 0) {
		fprintf(stderr, "ERROR : WDC : invalid output format\n");
		return fmt;
	}

	if ((data = (__u8 *) malloc(sizeof(__u8) * WDC_LATENCY_MON_LOG_BUF_LEN)) == NULL) {
		fprintf(stderr, "ERROR : WDC : malloc : %s\n", strerror(errno));
		return -1;
	}
	memset(data, 0, sizeof (__u8) * WDC_LATENCY_MON_LOG_BUF_LEN);

	ret = nvme_get_log_simple(dev_fd(dev), WDC_LATENCY_MON_LOG_ID,
				  WDC_LATENCY_MON_LOG_BUF_LEN, data);

	if (strcmp(format, "json"))
		fprintf(stderr, "NVMe Status:%s(%x)\n", nvme_status_to_string(ret, false), ret);

	if (ret == 0) {
		log_data = (struct wdc_ssd_latency_monitor_log*)data;

		/* check log page version */
		if (log_data->log_page_version != WDC_LATENCY_MON_VERSION) {
			fprintf(stderr, "ERROR : WDC : invalid latency monitor version\n");
			ret = -1;
            goto out;
		}

		/* check log page guid */
		/* Verify GUID matches */
		for (i=0; i<16; i++) {
			if (wdc_lat_mon_guid[i] != log_data->log_page_guid[i])	{
				fprintf(stderr, "ERROR : WDC : Unknown GUID in C3 Log Page data\n");
				int j;
				fprintf(stderr, "ERROR : WDC : Expected GUID:  0x");
				for (j = 0; j<16; j++) {
					fprintf(stderr, "%x", wdc_lat_mon_guid[j]);
				}
				fprintf(stderr, "\nERROR : WDC : Actual GUID:    0x");
				for (j = 0; j<16; j++) {
					fprintf(stderr, "%x", log_data->log_page_guid[j]);
				}
				fprintf(stderr, "\n");

				ret = -1;
				goto out;
			}
		}

		/* parse the data */
		wdc_print_latency_monitor_log(dev, log_data, fmt);
	} else {
		fprintf(stderr, "ERROR : WDC : Unable to read C3 data from buffer\n");
	}

out:
	free(data);
	return ret;

}

static int wdc_get_ocp_c1_log_page(nvme_root_t r, struct nvme_dev *dev, char *format)
{
	int ret = 0;
	int fmt = -1;
	__u8 *data;
	int i;
	struct wdc_ocp_c1_error_recovery_log *log_data;

	if (!wdc_check_device(r, dev))
		return -1;
	fmt = validate_output_format(format);
	if (fmt < 0) {
		fprintf(stderr, "ERROR : WDC : invalid output format\n");
		return fmt;
	}

	if ((data = (__u8 *) malloc(sizeof(__u8) * WDC_ERROR_REC_LOG_BUF_LEN)) == NULL) {
		fprintf(stderr, "ERROR : WDC : malloc : %s\n", strerror(errno));
		return -1;
	}
	memset(data, 0, sizeof (__u8) * WDC_ERROR_REC_LOG_BUF_LEN);

	ret = nvme_get_log_simple(dev_fd(dev), WDC_ERROR_REC_LOG_ID,
				  WDC_ERROR_REC_LOG_BUF_LEN, data);

	if (strcmp(format, "json"))
		fprintf(stderr, "NVMe Status:%s(%x)\n", nvme_status_to_string(ret, false), ret);

	if (ret == 0) {
		log_data = (struct wdc_ocp_c1_error_recovery_log *)data;

		/* check log page version */
		if ((log_data->log_page_version != WDC_ERROR_REC_LOG_VERSION1) &&
			(log_data->log_page_version != WDC_ERROR_REC_LOG_VERSION2))	{
			fprintf(stderr, "ERROR : WDC : invalid error recovery log version - %d\n", log_data->log_page_version);
			ret = -1;
			goto out;
		}

		/* Verify GUID matches */
		for (i=0; i < WDC_OCP_C1_GUID_LENGTH; i++) {
			if (wdc_ocp_c1_guid[i] != log_data->log_page_guid[i])	{
				fprintf(stderr, "ERROR : WDC : Unknown GUID in C1 Log Page data\n");
				int j;
				fprintf(stderr, "ERROR : WDC : Expected GUID:  0x");
				for (j = 0; j<16; j++) {
					fprintf(stderr, "%x", wdc_ocp_c1_guid[j]);
				}
				fprintf(stderr, "\nERROR : WDC : Actual GUID:    0x");
				for (j = 0; j<16; j++) {
					fprintf(stderr, "%x", log_data->log_page_guid[j]);
				}
				fprintf(stderr, "\n");

				ret = -1;
				goto out;
			}
		}

		/* parse the data */
		wdc_print_error_rec_log(log_data, fmt);
	} else {
		fprintf(stderr, "ERROR : WDC : Unable to read error recovery (C1) data from buffer\n");
	}

out:
	free(data);
	return ret;
}

static int wdc_get_ocp_c4_log_page(nvme_root_t r, struct nvme_dev *dev, char *format)
{
	int ret = 0;
	int fmt = -1;
	__u8 *data;
	int i;
	struct wdc_ocp_C4_dev_cap_log *log_data;

	if (!wdc_check_device(r, dev))
		return -1;
	fmt = validate_output_format(format);
	if (fmt < 0) {
		fprintf(stderr, "ERROR : WDC : invalid output format\n");
		return fmt;
	}

	if ((data = (__u8 *) malloc(sizeof(__u8) * WDC_DEV_CAP_LOG_BUF_LEN)) == NULL) {
		fprintf(stderr, "ERROR : WDC : malloc : %s\n", strerror(errno));
		return -1;
	}
	memset(data, 0, sizeof (__u8) * WDC_DEV_CAP_LOG_BUF_LEN);

	ret = nvme_get_log_simple(dev_fd(dev), WDC_DEV_CAP_LOG_ID,
				  WDC_DEV_CAP_LOG_BUF_LEN, data);

	if (strcmp(format, "json"))
		fprintf(stderr, "NVMe Status:%s(%x)\n", nvme_status_to_string(ret, false), ret);

	if (ret == 0) {
		log_data = (struct wdc_ocp_C4_dev_cap_log *)data;

		/* check log page version */
		if (log_data->log_page_version != WDC_DEV_CAP_LOG_VERSION) {
			fprintf(stderr, "ERROR : WDC : invalid device capabilities log version - %d\n", log_data->log_page_version);
			ret = -1;
			goto out;
		}

		/* Verify GUID matches */
		for (i=0; i < WDC_OCP_C4_GUID_LENGTH; i++) {
			if (wdc_ocp_c4_guid[i] != log_data->log_page_guid[i])	{
				fprintf(stderr, "ERROR : WDC : Unknown GUID in C4 Log Page data\n");
				int j;
				fprintf(stderr, "ERROR : WDC : Expected GUID:  0x");
				for (j = 0; j<16; j++) {
					fprintf(stderr, "%x", wdc_ocp_c4_guid[j]);
				}
				fprintf(stderr, "\nERROR : WDC : Actual GUID:    0x");
				for (j = 0; j<16; j++) {
					fprintf(stderr, "%x", log_data->log_page_guid[j]);
				}
				fprintf(stderr, "\n");

				ret = -1;
				goto out;
			}
		}

		/* parse the data */
		wdc_print_dev_cap_log(log_data, fmt);
	} else {
		fprintf(stderr, "ERROR : WDC : Unable to read device capabilities (C4) data from buffer\n");
	}

out:
	free(data);
	return ret;
}

static int wdc_get_ocp_c5_log_page(nvme_root_t r, struct nvme_dev *dev, char *format)
{
	int ret = 0;
	int fmt = -1;
	__u8 *data;
	int i;
	struct wdc_ocp_C5_unsupported_reqs *log_data;

	if (!wdc_check_device(r, dev))
		return -1;
	fmt = validate_output_format(format);
	if (fmt < 0) {
		fprintf(stderr, "ERROR : WDC : invalid output format\n");
		return fmt;
	}

	if ((data = (__u8 *) malloc(sizeof(__u8) * WDC_UNSUPPORTED_REQS_LOG_BUF_LEN)) == NULL) {
		fprintf(stderr, "ERROR : WDC : malloc : %s\n", strerror(errno));
		return -1;
	}
	memset(data, 0, sizeof (__u8) * WDC_UNSUPPORTED_REQS_LOG_BUF_LEN);

	ret = nvme_get_log_simple(dev_fd(dev), WDC_UNSUPPORTED_REQS_LOG_ID,
				  WDC_UNSUPPORTED_REQS_LOG_BUF_LEN, data);

	if (strcmp(format, "json"))
		fprintf(stderr, "NVMe Status:%s(%x)\n", nvme_status_to_string(ret, false), ret);

	if (ret == 0) {
		log_data = (struct wdc_ocp_C5_unsupported_reqs *)data;

		/* check log page version */
		if (log_data->log_page_version != WDC_UNSUPPORTED_REQS_LOG_VERSION) {
			fprintf(stderr, "ERROR : WDC : invalid unsupported requirements log version - %d\n", log_data->log_page_version);
			ret = -1;
			goto out;
		}

		/* Verify GUID matches */
		for (i=0; i < WDC_OCP_C5_GUID_LENGTH; i++) {
			if (wdc_ocp_c5_guid[i] != log_data->log_page_guid[i])	{
				fprintf(stderr, "ERROR : WDC : Unknown GUID in C5 Log Page data\n");
				int j;
				fprintf(stderr, "ERROR : WDC : Expected GUID:  0x");
				for (j = 0; j<16; j++) {
					fprintf(stderr, "%x", wdc_ocp_c5_guid[j]);
				}
				fprintf(stderr, "\nERROR : WDC : Actual GUID:    0x");
				for (j = 0; j<16; j++) {
					fprintf(stderr, "%x", log_data->log_page_guid[j]);
				}
				fprintf(stderr, "\n");

				ret = -1;
				goto out;
			}
		}

		/* parse the data */
		wdc_print_unsupported_reqs_log(log_data, fmt);
	} else {
		fprintf(stderr, "ERROR : WDC : Unable to read unsupported requirements (C5) data from buffer\n");
	}

out:
	free(data);
	return ret;
}

static int wdc_get_d0_log_page(nvme_root_t r, struct nvme_dev *dev, char *format)
{
	int ret = 0;
	int fmt = -1;
	__u8 *data;
	struct wdc_ssd_d0_smart_log *perf;

	if (!wdc_check_device(r, dev))
		return -1;
	fmt = validate_output_format(format);
	if (fmt < 0) {
		fprintf(stderr, "ERROR : WDC : invalid output format\n");
		return fmt;
	}

	/* verify the 0xD0 log page is supported */
	if (wdc_nvme_check_supported_log_page(r, dev, WDC_NVME_GET_VU_SMART_LOG_OPCODE) == false) {
		fprintf(stderr, "ERROR : WDC : 0xD0 Log Page not supported\n");
		return -1;
	}

	if ((data = (__u8*) malloc(sizeof (__u8) * WDC_NVME_VU_SMART_LOG_LEN)) == NULL) {
		fprintf(stderr, "ERROR : WDC : malloc : %s\n", strerror(errno));
		return -1;
	}
	memset(data, 0, sizeof (__u8) * WDC_NVME_VU_SMART_LOG_LEN);

	ret = nvme_get_log_simple(dev_fd(dev),
				  WDC_NVME_GET_VU_SMART_LOG_OPCODE,
				  WDC_NVME_VU_SMART_LOG_LEN, data);
	if (strcmp(format, "json"))
		nvme_show_status(ret);

	if (ret == 0) {
		/* parse the data */
		perf = (struct wdc_ssd_d0_smart_log *)(data);
		ret = wdc_print_d0_log(perf, fmt);
	} else {
		fprintf(stderr, "ERROR : WDC : Unable to read D0 Log Page data\n");
		ret = -1;
	}

	free(data);
	return ret;
}

static int wdc_vs_smart_add_log(int argc, char **argv, struct command *command,
		struct plugin *plugin)
{
	const char *desc = "Retrieve additional performance statistics.";
	const char *interval = "Interval to read the statistics from [1, 15].";
	const char *log_page_version = "Log Page Version: 0 = vendor, 1 = WDC";
	const char *log_page_mask = "Log Page Mask, comma separated list: 0xC0, 0xC1, 0xCA, 0xD0";
	const char *namespace_id = "desired namespace id";
	struct nvme_dev *dev;
	nvme_root_t r;
	int ret = 0;
	int uuid_index = 0;
	int page_mask = 0, num, i;
	int log_page_list[16];
	__u64 capabilities = 0;

	struct config {
		uint8_t interval;
		char *output_format;
		__u8  log_page_version;
		char *log_page_mask;
		__u32 namespace_id;
	};

	struct config cfg = {
		.interval = 14,
		.output_format = "normal",
		.log_page_version   = 0,
		.log_page_mask   = "",
		.namespace_id = NVME_NSID_ALL,
	};

	OPT_ARGS(opts) = {
		OPT_UINT("interval",          'i', &cfg.interval,         interval),
		OPT_FMT("output-format",      'o', &cfg.output_format,    "Output Format: normal|json"),
		OPT_BYTE("log-page-version",  'l', &cfg.log_page_version, log_page_version),
		OPT_LIST("log-page-mask",     'p', &cfg.log_page_mask,    log_page_mask),
		OPT_UINT("namespace-id",      'n', &cfg.namespace_id,     namespace_id),
		OPT_END()
	};

	ret = parse_and_open(&dev, argc, argv, desc, opts);
	if (ret)
		return ret;

	r = nvme_scan(NULL);
	if (cfg.log_page_version == 0) {
		uuid_index = 0;
	} else if (cfg.log_page_version == 1) {
		uuid_index = 1;
	} else {
		fprintf(stderr, "ERROR : WDC: unsupported log page version for this command\n");
		ret = -1;
		goto out;
	}

	num = argconfig_parse_comma_sep_array(cfg.log_page_mask, log_page_list, 16);

	if (num == -1) {
		fprintf(stderr, "ERROR: WDC: log page list is malformed\n");
		ret = -1;
		goto out;
	}

	if (num == 0)
	{
		page_mask |= WDC_ALL_PAGE_MASK;
	}
	else
	{
		for (i = 0; i < num; i++)
		{
			if (log_page_list[i] == 0xc0)  {
				page_mask |= WDC_C0_PAGE_MASK;
			}
			if (log_page_list[i] == 0xc1)  {
				page_mask |= WDC_C1_PAGE_MASK;
			}
			if (log_page_list[i] == 0xca)  {
				page_mask |= WDC_CA_PAGE_MASK;
			}
			if (log_page_list[i] == 0xd0)  {
				page_mask |= WDC_D0_PAGE_MASK;
			}
		}
	}
	if (page_mask == 0)
		fprintf(stderr, "ERROR : WDC: Unknown log page mask - %s\n", cfg.log_page_mask);


	capabilities = wdc_get_drive_capabilities(r, dev);

	if ((capabilities & WDC_DRIVE_CAP_SMART_LOG_MASK) == 0) {
		fprintf(stderr, "ERROR : WDC: unsupported device for this command\n");
		ret = -1;
		goto out;
	}

	if (((capabilities & WDC_DRIVE_CAP_C0_LOG_PAGE) == WDC_DRIVE_CAP_C0_LOG_PAGE) &&
		(page_mask & WDC_C0_PAGE_MASK))	{
		/* Get 0xC0 log page if possible. */
		ret = wdc_get_c0_log_page(r, dev, cfg.output_format,
					  uuid_index, cfg.namespace_id);
		if (ret)
			fprintf(stderr, "ERROR : WDC : Failure reading the C0 Log Page, ret = %d\n", ret);
	}
	if (((capabilities & (WDC_DRIVE_CAP_CA_LOG_PAGE)) == (WDC_DRIVE_CAP_CA_LOG_PAGE))  &&
		(page_mask & WDC_CA_PAGE_MASK)) {
		/* Get the CA Log Page */
		ret = wdc_get_ca_log_page(r, dev, cfg.output_format);
		if (ret)
			fprintf(stderr, "ERROR : WDC : Failure reading the CA Log Page, ret = %d\n", ret);
	}
	if (((capabilities & WDC_DRIVE_CAP_C1_LOG_PAGE) == WDC_DRIVE_CAP_C1_LOG_PAGE) &&
		(page_mask & WDC_C1_PAGE_MASK)) {
		/* Get the C1 Log Page */
		ret = wdc_get_c1_log_page(r, dev, cfg.output_format,
					  cfg.interval);
		if (ret)
			fprintf(stderr, "ERROR : WDC : Failure reading the C1 Log Page, ret = %d\n", ret);
	}
	if (((capabilities & WDC_DRIVE_CAP_D0_LOG_PAGE) == WDC_DRIVE_CAP_D0_LOG_PAGE) &&
		(page_mask & WDC_D0_PAGE_MASK)) {
		/* Get the D0 Log Page */
		ret = wdc_get_d0_log_page(r, dev, cfg.output_format);
		if (ret)
			fprintf(stderr, "ERROR : WDC : Failure reading the D0 Log Page, ret = %d\n", ret);
	}

out:
	nvme_free_tree(r);
	dev_close(dev);
	return ret;
}

static int wdc_vs_cloud_log(int argc, char **argv, struct command *command,
		struct plugin *plugin)
{
	const char *desc = "Retrieve Cloud Log Smart/Health Information";
	const char *namespace_id = "desired namespace id";
	__u64 capabilities = 0;
	struct nvme_dev *dev;
	int ret, fmt = -1;
	nvme_root_t r;
	__u8 *data;

	struct config {
		char *output_format;
		__u32 namespace_id;
	};

	struct config cfg = {
		.output_format = "normal",
		.namespace_id = NVME_NSID_ALL,
	};

	OPT_ARGS(opts) = {
		OPT_FMT("output-format",      'o', &cfg.output_format,    "Output Format: normal|json"),
		OPT_UINT("namespace-id",      'n', &cfg.namespace_id,     namespace_id),
		OPT_END()
	};

	ret = parse_and_open(&dev, argc, argv, desc, opts);
	if (ret)
		return ret;

	r = nvme_scan(NULL);

	capabilities = wdc_get_drive_capabilities(r, dev);

	if ((capabilities & WDC_DRIVE_CAP_CLOUD_LOG_PAGE) == 0) {
		fprintf(stderr, "ERROR : WDC: unsupported device for this command\n");
		ret = -1;
		goto out;
	}

	data = NULL;
	ret = nvme_get_ext_smart_cloud_log(dev_fd(dev), &data, 0,
					   cfg.namespace_id);

	if (strcmp(cfg.output_format, "json"))
		nvme_show_status(ret);

	if (ret == 0) {
		fmt = validate_output_format(cfg.output_format);
		if (fmt < 0) {
			fprintf(stderr, "ERROR : WDC %s: invalid output format\n", __func__);
			ret = fmt;
		}

		/* parse the data */
		wdc_print_ext_smart_cloud_log(data, fmt);
	} else {
		fprintf(stderr, "ERROR : WDC : Unable to read C0 Log Page V1 data\n");
		ret = -1;
	}

	if (data)
		free(data);

out:
	nvme_free_tree(r);
	dev_close(dev);
	return ret;
}

static int wdc_vs_hw_rev_log(int argc, char **argv, struct command *command,
		struct plugin *plugin)
{
	const char *desc = "Retrieve Hardware Revision Log Information";
	const char *namespace_id = "desired namespace id";
	__u64 capabilities = 0;
	struct nvme_dev *dev;
	int ret, fmt = -1;
	__u8 *data = NULL;
	nvme_root_t r;

	struct config {
		char *output_format;
		__u32 namespace_id;
	};

	struct config cfg = {
		.output_format = "normal",
		.namespace_id = NVME_NSID_ALL,
	};

	OPT_ARGS(opts) = {
		OPT_FMT("output-format",      'o', &cfg.output_format,    "Output Format: normal|json"),
		OPT_UINT("namespace-id",      'n', &cfg.namespace_id,     namespace_id),
		OPT_END()
	};

	ret = parse_and_open(&dev, argc, argv, desc, opts);
	if (ret)
		return ret;

	r = nvme_scan(NULL);

	capabilities = wdc_get_drive_capabilities(r, dev);

	if ((capabilities & WDC_DRIVE_CAP_HW_REV_LOG_PAGE) == 0) {
		fprintf(stderr, "ERROR : WDC: unsupported device for this command\n");
		ret = -1;
		goto out;
	}

	ret = nvme_get_hw_rev_log(dev_fd(dev), &data, 0, cfg.namespace_id);

	if (strcmp(cfg.output_format, "json"))
		nvme_show_status(ret);

	if (ret == 0) {
		fmt = validate_output_format(cfg.output_format);
		if (fmt < 0) {
			fprintf(stderr, "ERROR : WDC %s: invalid output format\n", __func__);
			ret = fmt;
			goto free_buf;
		}

		if (!data) {
			fprintf(stderr, "ERROR : WDC : Invalid buffer to read Hardware Revision log\n");
			ret = -1;
			goto out;
		}
		switch (fmt) {
		case NORMAL:
			wdc_print_hw_rev_log_normal(data);
			break;
		case JSON:
			wdc_print_hw_rev_log_json(data);
			break;
		}
	} else {
		fprintf(stderr, "ERROR : WDC : Unable to read Hardware Revision Log Page data\n");
		ret = -1;
	}

free_buf:
	if (data)
		free(data);

out:
	nvme_free_tree(r);
	dev_close(dev);
	return ret;
}

static int wdc_vs_device_waf(int argc, char **argv, struct command *command,
		struct plugin *plugin)
{
	const char *desc = "Retrieve Device Write Amplication Factor";
	const char *namespace_id = "desired namespace id";
	struct nvme_smart_log smart_log;
	struct nvme_dev *dev;
	__u8 *data;
	nvme_root_t r;
	int ret = 0;
	int fmt = -1;
	__u64 capabilities = 0;
	wdc_nvme_ext_smart_log *ext_smart_log_ptr;
	long double  data_units_written = 0,
			phys_media_units_written_tlc = 0,
			phys_media_units_written_slc = 0;
	struct json_object *root = NULL;
	char tlc_waf_str[32] = { 0 },
			slc_waf_str[32] = { 0 };

	struct config {
		char *output_format;
		__u32 namespace_id;
	};

	struct config cfg = {
		.output_format = "normal",
		.namespace_id = NVME_NSID_ALL,
	};

	OPT_ARGS(opts) = {
		OPT_FMT("output-format",      'o', &cfg.output_format,    "Output Format: normal|json"),
		OPT_UINT("namespace-id",      'n', &cfg.namespace_id,     namespace_id),
		OPT_END()
	};

	ret = parse_and_open(&dev, argc, argv, desc, opts);
	if (ret)
		return ret;

	r = nvme_scan(NULL);

	capabilities = wdc_get_drive_capabilities(r, dev);

	if ((capabilities & WDC_DRIVE_CAP_DEVICE_WAF) == 0) {
		fprintf(stderr, "ERROR : WDC: unsupported device for this command\n");
		ret = -1;
		goto out;
	}

	/* get data units written from the smart log page */
	ret = nvme_get_log_smart(dev_fd(dev), cfg.namespace_id, false,
				 &smart_log);
	if (!ret) {
		data_units_written = int128_to_double(smart_log.data_units_written);
	}
	else if (ret > 0) {
		nvme_show_status(ret);
		ret = -1;
		goto out;
	} else {
		fprintf(stderr, "smart log: %s\n", nvme_strerror(errno));
		ret = -1;
		goto out;
	}

	/* get Physical Media Units Written from extended smart/C0 log page */
	data = NULL;
	ret = nvme_get_ext_smart_cloud_log(dev_fd(dev), &data, 0,
					   cfg.namespace_id);

	if (ret == 0) {
		ext_smart_log_ptr = (wdc_nvme_ext_smart_log *)data;
		phys_media_units_written_tlc = int128_to_double(ext_smart_log_ptr->ext_smart_pmuwt);
		phys_media_units_written_slc = int128_to_double(ext_smart_log_ptr->ext_smart_pmuws);

		if (data)
			free(data);
	} else {
		fprintf(stderr, "ERROR : WDC %s: get smart cloud log failure\n", __func__);
		ret = -1;
		goto out;
	}

	if (strcmp(cfg.output_format, "json"))
		nvme_show_status(ret);

	fmt = validate_output_format(cfg.output_format);
	if (fmt < 0) {
		fprintf(stderr, "ERROR : WDC %s: invalid output format\n", __func__);
		ret = fmt;
		goto out;
	}

	if (data_units_written == 0) {
		fprintf(stderr, "ERROR : WDC %s: 0 data units written\n", __func__);
		ret = -1;
		goto out;
	}

	if (fmt == NORMAL) {
		printf("Device Write Amplification Factor TLC : %4.2Lf\n",
				(phys_media_units_written_tlc/data_units_written));
		printf("Device Write Amplification Factor SLC : %4.2Lf\n",
				(phys_media_units_written_slc/data_units_written));
	}
	else if (fmt == JSON) {
   		root = json_create_object();
   		sprintf(tlc_waf_str, "%4.2Lf", (phys_media_units_written_tlc/data_units_written));
   		sprintf(slc_waf_str, "%4.2Lf", (phys_media_units_written_slc/data_units_written));

		json_object_add_value_string(root, "Device Write Amplification Factor TLC", tlc_waf_str);
		json_object_add_value_string(root, "Device Write Amplification Factor SLC", slc_waf_str);

		json_print_object(root, NULL);
		printf("\n");

		json_free_object(root);
	}

out:
	nvme_free_tree(r);
	dev_close(dev);
	return ret;
}

static int wdc_get_latency_monitor_log(int argc, char **argv, struct command *command,
		struct plugin *plugin)
{
	const char *desc = "Retrieve latency monitor log data.";
	__u64 capabilities = 0;
	struct nvme_dev *dev;
	nvme_root_t r;
	int ret = 0;

	struct config {
		char *output_format;
	};

	struct config cfg = {
		.output_format = "normal",
	};

	OPT_ARGS(opts) = {
		OPT_FMT("output-format",      'o', &cfg.output_format,    "Output Format: normal|json"),
		OPT_END()
	};

	ret = parse_and_open(&dev, argc, argv, desc, opts);
	if (ret)
		return ret;

	r = nvme_scan(NULL);
	capabilities = wdc_get_drive_capabilities(r, dev);

	if ((capabilities & WDC_DRIVE_CAP_C3_LOG_PAGE) == 0) {
		fprintf(stderr, "ERROR : WDC: unsupported device for this command\n");
		ret = -1;
		goto out;
	}

	ret = wdc_get_c3_log_page(r, dev, cfg.output_format);
	if (ret)
		fprintf(stderr, "ERROR : WDC : Failure reading the Latency Monitor (C3) Log Page, ret = %d\n", ret);

out:
	nvme_free_tree(r);
	dev_close(dev);
	return ret;
}

static int wdc_get_error_recovery_log(int argc, char **argv, struct command *command,
		struct plugin *plugin)
{
	const char *desc = "Retrieve error recovery log data.";
	__u64 capabilities = 0;
	struct nvme_dev *dev;
	nvme_root_t r;
	int ret = 0;

	struct config {
		char *output_format;
	};

	struct config cfg = {
		.output_format = "normal",
	};

	OPT_ARGS(opts) = {
		OPT_FMT("output-format",      'o', &cfg.output_format,    "Output Format: normal|json"),
		OPT_END()
	};

	ret = parse_and_open(&dev, argc, argv, desc, opts);
	if (ret)
		return ret;

	r = nvme_scan(NULL);
	capabilities = wdc_get_drive_capabilities(r, dev);

	if ((capabilities & WDC_DRIVE_CAP_OCP_C1_LOG_PAGE) == 0) {
		fprintf(stderr, "ERROR : WDC: unsupported device for this command\n");
		ret = -1;
		goto out;
	}

	ret = wdc_get_ocp_c1_log_page(r, dev, cfg.output_format);
	if (ret)
		fprintf(stderr, "ERROR : WDC : Failure reading the Error Recovery (C1) Log Page, ret = 0x%x\n", ret);

out:
	nvme_free_tree(r);
	dev_close(dev);
	return ret;
}

static int wdc_get_dev_capabilities_log(int argc, char **argv, struct command *command,
		struct plugin *plugin)
{
	const char *desc = "Retrieve device capabilities log data.";
	__u64 capabilities = 0;
	struct nvme_dev *dev;
	nvme_root_t r;
	int ret = 0;

	struct config {
		char *output_format;
	};

	struct config cfg = {
		.output_format = "normal",
	};

	OPT_ARGS(opts) = {
		OPT_FMT("output-format",      'o', &cfg.output_format,    "Output Format: normal|json"),
		OPT_END()
	};

	ret = parse_and_open(&dev, argc, argv, desc, opts);
	if (ret)
		return ret;

	r = nvme_scan(NULL);
	capabilities = wdc_get_drive_capabilities(r, dev);

	if ((capabilities & WDC_DRIVE_CAP_OCP_C4_LOG_PAGE) == 0) {
		fprintf(stderr, "ERROR : WDC: unsupported device for this command\n");
		ret = -1;
		goto out;
	}

	ret = wdc_get_ocp_c4_log_page(r, dev, cfg.output_format);
	if (ret)
		fprintf(stderr, "ERROR : WDC : Failure reading the Device Capabilities (C4) Log Page, ret = 0x%x\n", ret);

out:
	nvme_free_tree(r);
	dev_close(dev);
	return ret;
}

static int wdc_get_unsupported_reqs_log(int argc, char **argv, struct command *command,
		struct plugin *plugin)
{
	const char *desc = "Retrieve unsupported requirements log data.";
	__u64 capabilities = 0;
	struct nvme_dev *dev;
	nvme_root_t r;
	int ret = 0;

	struct config {
		char *output_format;
	};

	struct config cfg = {
		.output_format = "normal",
	};

	OPT_ARGS(opts) = {
		OPT_FMT("output-format",      'o', &cfg.output_format,    "Output Format: normal|json"),
		OPT_END()
	};

	ret = parse_and_open(&dev, argc, argv, desc, opts);
	if (ret)
		return ret;

	r = nvme_scan(NULL);
	capabilities = wdc_get_drive_capabilities(r, dev);

	if ((capabilities & WDC_DRIVE_CAP_OCP_C5_LOG_PAGE) == 0) {
		fprintf(stderr, "ERROR : WDC: unsupported device for this command\n");
		ret = -1;
		goto out;
	}

	ret = wdc_get_ocp_c5_log_page(r, dev, cfg.output_format);
	if (ret)
		fprintf(stderr, "ERROR : WDC : Failure reading the Unsupported Requirements (C5) Log Page, ret = 0x%x\n", ret);

out:
	nvme_free_tree(r);
	dev_close(dev);
	return ret;
}

static int wdc_do_clear_pcie_correctable_errors(int fd)
{
	int ret;
	struct nvme_passthru_cmd admin_cmd;

	memset(&admin_cmd, 0, sizeof (admin_cmd));
	admin_cmd.opcode = WDC_NVME_CLEAR_PCIE_CORR_OPCODE;
	admin_cmd.cdw12 = ((WDC_NVME_CLEAR_PCIE_CORR_SUBCMD << WDC_NVME_SUBCMD_SHIFT) |
			WDC_NVME_CLEAR_PCIE_CORR_CMD);

	ret = nvme_submit_admin_passthru(fd, &admin_cmd, NULL);
	nvme_show_status(ret);
	return ret;
}

static int wdc_do_clear_pcie_correctable_errors_vuc(int fd)
{
	int ret;
	struct nvme_passthru_cmd admin_cmd;

	memset(&admin_cmd, 0, sizeof (admin_cmd));
	admin_cmd.opcode = WDC_NVME_CLEAR_PCIE_CORR_OPCODE_VUC;

	ret = nvme_submit_admin_passthru(fd, &admin_cmd, NULL);
	nvme_show_status(ret);
	return ret;
}

static int wdc_do_clear_pcie_correctable_errors_fid(int fd)
{
	int ret;
	__u32 result;
	__u32 value = 1 << 31; /* Bit 31 - clear PCIe correctable count */

	ret = nvme_set_features_simple(fd, WDC_NVME_CLEAR_PCIE_CORR_FEATURE_ID, 0, value,
				false, &result);

	nvme_show_status(ret);
	return ret;
}

static int wdc_clear_pcie_correctable_errors(int argc, char **argv, struct command *command,
		struct plugin *plugin)
{
	char *desc = "Clear PCIE Correctable Errors.";
	__u64 capabilities = 0;
	struct nvme_dev *dev;
	nvme_root_t r;
	int ret;

	OPT_ARGS(opts) = {
		OPT_END()
	};

	ret = parse_and_open(&dev, argc, argv, desc, opts);
	if (ret)
		return ret;

	r = nvme_scan(NULL);
	if (!wdc_check_device(r, dev)) {
		ret = -1;
		goto out;
	}

	capabilities = wdc_get_drive_capabilities(r, dev);
	if ((capabilities & WDC_DRIVE_CAP_CLEAR_PCIE_MASK) == 0) {
		fprintf(stderr, "ERROR : WDC: unsupported device for this command\n");
		ret = -1;
		goto out;
	}
        
	if (capabilities & WDC_DRIVE_CAP_CLEAR_PCIE) {
		ret = wdc_do_clear_pcie_correctable_errors(dev_fd(dev));
	}
	else if (capabilities & WDC_DRIVE_CAP_VUC_CLEAR_PCIE) {
		ret = wdc_do_clear_pcie_correctable_errors_vuc(dev_fd(dev));
	}
	else {
		ret = wdc_do_clear_pcie_correctable_errors_fid(dev_fd(dev));
	}

out:
	nvme_free_tree(r);
	dev_close(dev);
	return ret;
}

static int wdc_drive_status(int argc, char **argv, struct command *command,
		struct plugin *plugin)
{
	char *desc = "Get Drive Status.";
	struct nvme_dev *dev;
	int ret = 0;
	nvme_root_t r;
	__le32 system_eol_state;
	__le32 user_eol_state;
	__le32 format_corrupt_reason = cpu_to_le32(0xFFFFFFFF);
	__le32 eol_status;
	__le32 assert_status = cpu_to_le32(0xFFFFFFFF);
	__le32 thermal_status = cpu_to_le32(0xFFFFFFFF);
	__u64 capabilities = 0;

	OPT_ARGS(opts) = {
		OPT_END()
	};

	ret = parse_and_open(&dev, argc, argv, desc, opts);
	if (ret)
		return ret;

	r = nvme_scan(NULL);
	capabilities = wdc_get_drive_capabilities(r, dev);
	if ((capabilities & WDC_DRIVE_CAP_DRIVE_STATUS) != WDC_DRIVE_CAP_DRIVE_STATUS) {
		fprintf(stderr, "ERROR : WDC: unsupported device for this command\n");
		ret = -1;
		goto out;
	}

	/* verify the 0xC2 Device Manageability log page is supported */
	if (wdc_nvme_check_supported_log_page(r, dev,
					      WDC_NVME_GET_DEV_MGMNT_LOG_PAGE_OPCODE) == false) {
		fprintf(stderr, "ERROR : WDC : 0xC2 Log Page not supported\n");
		ret = -1;
		goto out;
	}

	/* Get the assert dump present status */
	if (!wdc_nvme_get_dev_status_log_data(r, dev, &assert_status,
			WDC_C2_ASSERT_DUMP_PRESENT_ID))
		fprintf(stderr, "ERROR : WDC : Get Assert Status Failed\n");

	/* Get the thermal throttling status */
	if (!wdc_nvme_get_dev_status_log_data(r, dev, &thermal_status,
			WDC_C2_THERMAL_THROTTLE_STATUS_ID))
		fprintf(stderr, "ERROR : WDC : Get Thermal Throttling Status Failed\n");

	/* Get EOL status */
	if (!wdc_nvme_get_dev_status_log_data(r, dev, &eol_status,
			WDC_C2_USER_EOL_STATUS_ID)) {
		fprintf(stderr, "ERROR : WDC : Get User EOL Status Failed\n");
		eol_status = cpu_to_le32(-1);
	}

	/* Get Customer EOL state */
	if (!wdc_nvme_get_dev_status_log_data(r, dev, &user_eol_state,
			WDC_C2_USER_EOL_STATE_ID))
		fprintf(stderr, "ERROR : WDC : Get User EOL State Failed\n");

	/* Get System EOL state*/
	if (!wdc_nvme_get_dev_status_log_data(r, dev, &system_eol_state,
			WDC_C2_SYSTEM_EOL_STATE_ID))
		fprintf(stderr, "ERROR : WDC : Get System EOL State Failed\n");

	/* Get format corrupt reason*/
	if (!wdc_nvme_get_dev_status_log_data(r, dev, &format_corrupt_reason,
			WDC_C2_FORMAT_CORRUPT_REASON_ID))
		fprintf(stderr, "ERROR : WDC : Get Format Corrupt Reason Failed\n");

	printf("  Drive Status :- \n");
	if ((int)le32_to_cpu(eol_status) >= 0) {
		printf("  Percent Used:				%"PRIu32"%%\n",
				le32_to_cpu(eol_status));
	}
	else
		printf("  Percent Used:				Unknown\n");
	if (system_eol_state == WDC_EOL_STATUS_NORMAL && user_eol_state == WDC_EOL_STATUS_NORMAL)
		printf("  Drive Life Status:			Normal\n");
	else if (system_eol_state == WDC_EOL_STATUS_END_OF_LIFE || user_eol_state == WDC_EOL_STATUS_END_OF_LIFE)
		printf("  Drive Life Status:	  		End Of Life\n");
	else if (system_eol_state == WDC_EOL_STATUS_READ_ONLY || user_eol_state == WDC_EOL_STATUS_READ_ONLY)
		printf("  Drive Life Status:	  		Read Only\n");
	else
		printf("  Drive Life Status:			Unknown : 0x%08x/0x%08x\n",
				le32_to_cpu(user_eol_state), le32_to_cpu(system_eol_state));

	if (assert_status == WDC_ASSERT_DUMP_PRESENT)
		printf("  Assert Dump Status:			Present\n");
	else if (assert_status == WDC_ASSERT_DUMP_NOT_PRESENT)
		printf("  Assert Dump Status:			Not Present\n");
	else
		printf("  Assert Dump Status:			Unknown : 0x%08x\n", le32_to_cpu(assert_status));

	if (thermal_status == WDC_THERMAL_THROTTLING_OFF)
		printf("  Thermal Throttling Status:		Off\n");
	else if (thermal_status == WDC_THERMAL_THROTTLING_ON)
		printf("  Thermal Throttling Status:		On\n");
	else if (thermal_status == WDC_THERMAL_THROTTLING_UNAVAILABLE)
		printf("  Thermal Throttling Status:		Unavailable\n");
	else
		printf("  Thermal Throttling Status:		Unknown : 0x%08x\n", le32_to_cpu(thermal_status));

	if (format_corrupt_reason == WDC_FORMAT_NOT_CORRUPT)
		printf("  Format Corrupt Reason:		Format Not Corrupted\n");
	else if (format_corrupt_reason == WDC_FORMAT_CORRUPT_FW_ASSERT)
		printf("  Format Corrupt Reason:	        Format Corrupt due to FW Assert\n");
	else if (format_corrupt_reason == WDC_FORMAT_CORRUPT_UNKNOWN)
		printf("  Format Corrupt Reason:	        Format Corrupt for Unknown Reason\n");
	else
		printf("  Format Corrupt Reason:	        Unknown : 0x%08x\n", le32_to_cpu(format_corrupt_reason));

out:
	nvme_free_tree(r);
	dev_close(dev);
	return ret;
}

static int wdc_clear_assert_dump(int argc, char **argv, struct command *command,
		struct plugin *plugin)
{
	char *desc = "Clear Assert Dump Present Status.";
	struct nvme_dev *dev;
	int ret = -1;
	nvme_root_t r;
	__le32 assert_status = cpu_to_le32(0xFFFFFFFF);
	__u64 capabilities = 0;
	struct nvme_passthru_cmd admin_cmd;

	OPT_ARGS(opts) = {
		OPT_END()
	};

	ret = parse_and_open(&dev, argc, argv, desc, opts);
	if (ret)
		return ret;

	r = nvme_scan(NULL);
	capabilities = wdc_get_drive_capabilities(r, dev);
	if ((capabilities & WDC_DRIVE_CAP_CLEAR_ASSERT) != WDC_DRIVE_CAP_CLEAR_ASSERT) {
		fprintf(stderr, "ERROR : WDC: unsupported device for this command\n");
		ret = -1;
		goto out;
	}
	if (!wdc_nvme_get_dev_status_log_data(r, dev, &assert_status,
			WDC_C2_ASSERT_DUMP_PRESENT_ID)) {
		fprintf(stderr, "ERROR : WDC : Get Assert Status Failed\n");
		ret = -1;
		goto out;
	}

	/* Get the assert dump present status */
	if (assert_status == WDC_ASSERT_DUMP_PRESENT) {
		memset(&admin_cmd, 0, sizeof (admin_cmd));
		admin_cmd.opcode = WDC_NVME_CLEAR_ASSERT_DUMP_OPCODE;
		admin_cmd.cdw12 = ((WDC_NVME_CLEAR_ASSERT_DUMP_SUBCMD << WDC_NVME_SUBCMD_SHIFT) |
				WDC_NVME_CLEAR_ASSERT_DUMP_CMD);

		ret = nvme_submit_admin_passthru(dev_fd(dev), &admin_cmd,
						 NULL);
		nvme_show_status(ret);
	} else
		fprintf(stderr, "INFO : WDC : No Assert Dump Present\n");

out:
	nvme_free_tree(r);
	dev_close(dev);
	return ret;
}

static int wdc_get_fw_act_history(nvme_root_t r, struct nvme_dev *dev,
				  char *format)
{
	int ret = 0;
	int fmt = -1;
	__u8 *data;
	struct wdc_fw_act_history_log_hdr *fw_act_history_hdr;

	if (!wdc_check_device(r, dev))
		return -1;

	fmt = validate_output_format(format);
	if (fmt < 0) {
		fprintf(stderr, "ERROR : WDC : invalid output format\n");
		return fmt;
	}

	/* verify the FW Activate History log page is supported */
	if (wdc_nvme_check_supported_log_page(r, dev, WDC_NVME_GET_FW_ACT_HISTORY_LOG_ID) == false) {
		fprintf(stderr, "ERROR : WDC : %d Log Page not supported\n", WDC_NVME_GET_FW_ACT_HISTORY_LOG_ID);
		return -1;
	}

	if ((data = (__u8*) malloc(sizeof (__u8) * WDC_FW_ACT_HISTORY_LOG_BUF_LEN)) == NULL) {
		fprintf(stderr, "ERROR : WDC : malloc : %s\n", strerror(errno));
		return -1;
	}

	memset(data, 0, sizeof (__u8) * WDC_FW_ACT_HISTORY_LOG_BUF_LEN);

	ret = nvme_get_log_simple(dev_fd(dev),
				  WDC_NVME_GET_FW_ACT_HISTORY_LOG_ID,
				  WDC_FW_ACT_HISTORY_LOG_BUF_LEN, data);

	if (strcmp(format, "json"))
		nvme_show_status(ret);

	if (ret == 0) {
		/* parse the data */
		fw_act_history_hdr = (struct wdc_fw_act_history_log_hdr *)(data);

		if ((fw_act_history_hdr->num_entries > 0) && (fw_act_history_hdr->num_entries <= WDC_MAX_NUM_ACT_HIST_ENTRIES))
			ret = wdc_print_fw_act_history_log(data, fw_act_history_hdr->num_entries, fmt, 0, 0);
		else if (fw_act_history_hdr->num_entries == 0) {
			fprintf(stderr, "INFO : WDC : No FW Activate History entries found.\n");
			ret = 0;
		}
		else {
			fprintf(stderr, "ERROR : WDC : Invalid number entries found in FW Activate History Log Page - %d\n", fw_act_history_hdr->num_entries);
			ret = -1;
		}
	} else {
		fprintf(stderr, "ERROR : WDC : Unable to read FW Activate History Log Page data\n");
		ret = -1;
	}

	free(data);
	return ret;
}

static __u32 wdc_get_fw_cust_id(nvme_root_t r, struct nvme_dev *dev)
{

	__u32 cust_id = WDC_INVALID_CUSTOMER_ID;
	__u32 *cust_id_ptr = NULL;

	if (!(get_dev_mgment_cbs_data(r, dev, WDC_C2_CUSTOMER_ID_ID, (void*)&cust_id_ptr))) {
		fprintf(stderr, "%s: ERROR : WDC : 0xC2 Log Page entry ID 0x%x not found\n", __func__, WDC_C2_CUSTOMER_ID_ID);
	} else {
		cust_id = *cust_id_ptr;
	}

	free(cust_id_ptr);
	return cust_id;
}

static int wdc_get_fw_act_history_C2(nvme_root_t r, struct nvme_dev *dev,
				     char *format)
{
	int ret = 0;
	int fmt = -1;
	__u8 *data;
	__u32 cust_id;
	struct wdc_fw_act_history_log_format_c2 *fw_act_history_log;
	__u32 tot_entries = 0, num_entries = 0;
	__u32 vendor_id = 0, device_id = 0;

	if (!wdc_check_device(r, dev))
		return -1;

	fmt = validate_output_format(format);
	if (fmt < 0) {
		fprintf(stderr, "ERROR : WDC : invalid output format\n");
		return fmt;
	}

	ret = wdc_get_pci_ids(r, dev, &device_id, &vendor_id);

	if ((data = (__u8*) malloc(sizeof (__u8) * WDC_FW_ACT_HISTORY_C2_LOG_BUF_LEN)) == NULL) {
		fprintf(stderr, "ERROR : WDC : malloc : %s\n", strerror(errno));
		return -1;
	}

	memset(data, 0, sizeof (__u8) * WDC_FW_ACT_HISTORY_C2_LOG_BUF_LEN);

	ret = nvme_get_log_simple(dev_fd(dev),
				  WDC_NVME_GET_FW_ACT_HISTORY_C2_LOG_ID,
				  WDC_FW_ACT_HISTORY_C2_LOG_BUF_LEN, data);

	if (strcmp(format, "json"))
		nvme_show_status(ret);

	if (ret == 0) {
		/* parse the data */
		fw_act_history_log = (struct wdc_fw_act_history_log_format_c2*)(data);
		tot_entries = le32_to_cpu(fw_act_history_log->num_entries);

		if (tot_entries > 0) {
			/* get the FW customer id */
			cust_id = wdc_get_fw_cust_id(r, dev);
			if (cust_id == WDC_INVALID_CUSTOMER_ID) {
				fprintf(stderr, "%s: ERROR : WDC : invalid customer id\n", __func__);
				ret = -1;
				goto freeData;
			}
			num_entries = (tot_entries < WDC_MAX_NUM_ACT_HIST_ENTRIES) ? tot_entries :
				WDC_MAX_NUM_ACT_HIST_ENTRIES;
			ret = wdc_print_fw_act_history_log(data, num_entries, fmt, cust_id, vendor_id);
		} else  {
			fprintf(stderr, "INFO : WDC : No FW Activate History entries found.\n");
			ret = 0;
		}
	} else {
		fprintf(stderr, "ERROR : WDC : Unable to read FW Activate History Log Page data\n");
		ret = -1;
	}

freeData:
	free(data);
	return ret;
}

static int wdc_vs_fw_activate_history(int argc, char **argv, struct command *command,
		struct plugin *plugin)
{
	const char *desc = "Retrieve FW activate history table.";
	__u64 capabilities = 0;
	struct nvme_dev *dev;
	nvme_root_t r;
	int ret;

	struct config {
		char *output_format;
	};

	struct config cfg = {
		.output_format = "normal",
	};

	OPT_ARGS(opts) = {
		OPT_FMT("output-format", 'o', &cfg.output_format, "Output Format: normal|json"),
		OPT_END()
	};

	ret = parse_and_open(&dev, argc, argv, desc, opts);
	if (ret)
		return ret;

	r = nvme_scan(NULL);
	capabilities = wdc_get_drive_capabilities(r, dev);
	if ((capabilities & WDC_DRIVE_CAP_FW_ACTIVATE_HISTORY_MASK) == 0) {
		fprintf(stderr, "ERROR : WDC: unsupported device for this command\n");
		ret = -1;
		goto out;
	}

	if (capabilities & WDC_DRIVE_CAP_FW_ACTIVATE_HISTORY) {
		int uuid_index = 0;
		bool c0GuidMatch = false;
		__u8 *data;
		int i;

		/* check for the GUID in the 0xC0 log page to determine which log page to use to */
		/* to retrieve fw activate history data                                          */
		if ((data = (__u8*) malloc(sizeof (__u8) * WDC_NVME_SMART_CLOUD_ATTR_LEN)) == NULL) {
			fprintf(stderr, "ERROR : WDC : malloc : %s\n", strerror(errno));
			ret = -1;
			goto out;
		}

		/* Get the 0xC0 log data */
		struct nvme_get_log_args args = {
			.args_size	= sizeof(args),
			.fd		= dev_fd(dev),
			.lid		= WDC_NVME_GET_SMART_CLOUD_ATTR_LOG_ID,
			.nsid		= 0xFFFFFFFF,
			.lpo		= 0,
			.lsp		= NVME_LOG_LSP_NONE,
			.lsi		= 0,
			.rae		= false,
			.uuidx		= uuid_index,
			.csi		= NVME_CSI_NVM,
			.ot		= false,
			.len		= WDC_NVME_SMART_CLOUD_ATTR_LEN,
			.log		= data,
			.timeout	= NVME_DEFAULT_IOCTL_TIMEOUT,
			.result		= NULL,
		};
		ret = nvme_get_log(&args);

		if (ret == 0) {
			/* Verify GUID matches */
			for (i=0; i<16; i++) {
				if (scao_guid[i] != data[SCAO_LPG + i])	{
					c0GuidMatch = false;
					break;
				}
			}

			if (i == 16) {
				c0GuidMatch = true;
			}
		}

		free(data);
		if (c0GuidMatch) {
			ret = wdc_get_fw_act_history_C2(r, dev,
							cfg.output_format);
		}
		else {
			ret = wdc_get_fw_act_history(r, dev,
						     cfg.output_format);
		}
	} else {
		ret = wdc_get_fw_act_history_C2(r, dev, cfg.output_format);
	}

	if (ret)
		fprintf(stderr, "ERROR : WDC : Failure reading the FW Activate History, ret = %d\n", ret);
out:
	nvme_free_tree(r);
	dev_close(dev);
	return ret;
}

static int wdc_do_clear_fw_activate_history_vuc(int fd)
{
	int ret = -1;
	struct nvme_passthru_cmd admin_cmd;

	memset(&admin_cmd, 0, sizeof (admin_cmd));
	admin_cmd.opcode = WDC_NVME_CLEAR_FW_ACT_HIST_OPCODE;
	admin_cmd.cdw12 = ((WDC_NVME_CLEAR_FW_ACT_HIST_SUBCMD << WDC_NVME_SUBCMD_SHIFT) |
			WDC_NVME_CLEAR_FW_ACT_HIST_CMD);

	ret = nvme_submit_admin_passthru(fd, &admin_cmd, NULL);
	nvme_show_status(ret);

	return ret;
}

static int wdc_do_clear_fw_activate_history_fid(int fd)
{
	int ret = -1;
	__u32 result;
	__u32 value = 1 << 31; /* Bit 31 - Clear Firmware Update History Log */

	ret = nvme_set_features_simple(fd, WDC_NVME_CLEAR_FW_ACT_HIST_VU_FID, 0, value,
				false, &result);

	nvme_show_status(ret);
	return ret;
}

static int wdc_clear_fw_activate_history(int argc, char **argv, struct command *command,
		struct plugin *plugin)
{
	char *desc = "Clear FW activate history table.";
	__u64 capabilities = 0;
	struct nvme_dev *dev;
	nvme_root_t r;
	int ret;

	OPT_ARGS(opts) = {
		OPT_END()
	};

	ret = parse_and_open(&dev, argc, argv, desc, opts);
	if (ret)
		return ret;

	r = nvme_scan(NULL);
	capabilities = wdc_get_drive_capabilities(r, dev);
	if ((capabilities & WDC_DRIVE_CAP_CLEAR_FW_ACT_HISTORY_MASK) == 0) {
		fprintf(stderr, "ERROR : WDC: unsupported device for this command\n");
		ret = -1;
		goto out;
	}

	if (capabilities & WDC_DRIVE_CAP_CLEAR_FW_ACT_HISTORY)
		ret = wdc_do_clear_fw_activate_history_vuc(dev_fd(dev));
	else
		ret = wdc_do_clear_fw_activate_history_fid(dev_fd(dev));

out:
	nvme_free_tree(r);
	dev_close(dev);
	return ret;
}

static int wdc_vs_telemetry_controller_option(int argc, char **argv, struct command *command,
		struct plugin *plugin)
{
	char *desc = "Disable/Enable Controller Option of the Telemetry Log Page.";
	char *disable = "Disable controller option of the telemetry log page.";
	char *enable = "Enable controller option of the telemetry log page.";
	char *status = "Displays the current state of the controller initiated log page.";
	__u64 capabilities = 0;
	struct nvme_dev *dev;
	nvme_root_t r;
	__u32 result;
	int ret = -1;


	struct config {
		bool disable;
		bool enable;
		bool status;
	};

	struct config cfg = {
		.disable = false,
		.enable = false,
		.status = false,
	};

	OPT_ARGS(opts) = {
		OPT_FLAG("disable",       'd', &cfg.disable,   disable),
		OPT_FLAG("enable",        'e', &cfg.enable,    enable),
		OPT_FLAG("status",        's', &cfg.status,    status),
		OPT_END()
	};

	ret = parse_and_open(&dev, argc, argv, desc, opts);
	if (ret)
		return ret;

	r = nvme_scan(NULL);
	capabilities = wdc_get_drive_capabilities(r, dev);
	if ((capabilities & WDC_DRVIE_CAP_DISABLE_CTLR_TELE_LOG) != WDC_DRVIE_CAP_DISABLE_CTLR_TELE_LOG) {
		fprintf(stderr, "ERROR : WDC: unsupported device for this command\n");
		ret = -1;
		goto out;
	}

	/* allow only one option at a time */
	if ((cfg.disable + cfg.enable + cfg.status) > 1) {

		fprintf(stderr, "ERROR : WDC : Invalid option\n");
		ret = -1;
		goto out;
	}

	if (cfg.disable) {
		ret = nvme_set_features_simple(dev_fd(dev),
					       WDC_VU_DISABLE_CNTLR_TELEMETRY_OPTION_FEATURE_ID,
					       0, 1, false, &result);

		wdc_clear_reason_id(dev);
	}
	else {
	   if (cfg.enable) {
			ret = nvme_set_features_simple(dev_fd(dev),
						       WDC_VU_DISABLE_CNTLR_TELEMETRY_OPTION_FEATURE_ID,
						       0, 0, false, &result);
	   }
	   else if (cfg.status) {
			ret = nvme_get_features_simple(dev_fd(dev),
						       WDC_VU_DISABLE_CNTLR_TELEMETRY_OPTION_FEATURE_ID,
						       0, &result);
			if (ret == 0) {
				if (result)
					fprintf(stderr, "Controller Option Telemetry Log Page State: Disabled\n");
				else
					fprintf(stderr, "Controller Option Telemetry Log Page State: Enabled\n");
			} else {
				nvme_show_status(ret);
			}
	   }
	   else {
			fprintf(stderr, "ERROR : WDC: unsupported option for this command\n");
			fprintf(stderr, "Please provide an option, -d, -e or -s\n");
			ret = -1;
			goto out;
	   }

	}

out:
	nvme_free_tree(r);
	dev_close(dev);
	return ret;
}


static int wdc_get_serial_and_fw_rev(struct nvme_dev *dev, char *sn, char *fw_rev)
{
	int i;
	int ret;
	struct nvme_id_ctrl ctrl;

	i = sizeof (ctrl.sn) - 1;
	memset(sn, 0, WDC_SERIAL_NO_LEN);
	memset(fw_rev, 0, WDC_NVME_FIRMWARE_REV_LEN);
	memset(&ctrl, 0, sizeof (struct nvme_id_ctrl));
	ret = nvme_identify_ctrl(dev_fd(dev), &ctrl);
	if (ret) {
		fprintf(stderr, "ERROR : WDC : nvme_identify_ctrl() failed "
				"0x%x\n", ret);
		return -1;
	}
	/* Remove trailing spaces from the name */
	while (i && ctrl.sn[i] == ' ') {
		ctrl.sn[i] = '\0';
		i--;
	}
	snprintf(sn, WDC_SERIAL_NO_LEN, "%s", ctrl.sn);
	snprintf(fw_rev, WDC_NVME_FIRMWARE_REV_LEN, "%s", ctrl.fr);

	return 0;
}

static int wdc_get_max_transfer_len(struct nvme_dev *dev, __u32 *maxTransferLen)
{
	int ret = 0;
	struct nvme_id_ctrl ctrl;

	__u32 maxTransferLenDevice = 0;

	memset(&ctrl, 0, sizeof (struct nvme_id_ctrl));
	ret = nvme_identify_ctrl(dev_fd(dev), &ctrl);
	if (ret) {
		fprintf(stderr, "ERROR : WDC : nvme_identify_ctrl() failed 0x%x\n", ret);
		return -1;
	}

	maxTransferLenDevice = (1 << ctrl.mdts) * getpagesize();
	*maxTransferLen = maxTransferLenDevice;

	return ret;
}

static int wdc_de_VU_read_size(struct nvme_dev *dev, __u32 fileId,
			       __u16 spiDestn, __u32* logSize)
{
	int ret = WDC_STATUS_FAILURE;
	struct nvme_passthru_cmd cmd;

	if(!dev || !logSize )
	{
		ret = WDC_STATUS_INVALID_PARAMETER;
		goto end;
	}

	memset(&cmd,0,sizeof(struct nvme_passthru_cmd));
	cmd.opcode = WDC_DE_VU_READ_SIZE_OPCODE;
	cmd.nsid = WDC_DE_DEFAULT_NAMESPACE_ID;
	cmd.cdw13 = fileId<<16;
	cmd.cdw14 = spiDestn;

	ret = nvme_submit_admin_passthru(dev_fd(dev), &cmd, NULL);

	if (!ret && logSize)
		*logSize = cmd.result;
	if( ret != WDC_STATUS_SUCCESS) {
		fprintf(stderr, "ERROR : WDC : VUReadSize() failed, ");
		nvme_show_status(ret);
	}

	end:
	return ret;
}

static int wdc_de_VU_read_buffer(struct nvme_dev *dev, __u32 fileId,
				 __u16 spiDestn, __u32 offsetInDwords,
				 __u8* dataBuffer, __u32* bufferSize)
{
	int ret = WDC_STATUS_FAILURE;
	struct nvme_passthru_cmd cmd;
	__u32 noOfDwordExpected = 0;

	if(!dev || !dataBuffer || !bufferSize)
	{
		ret = WDC_STATUS_INVALID_PARAMETER;
		goto end;
	}

	memset(&cmd,0,sizeof(struct nvme_passthru_cmd));
	noOfDwordExpected = *bufferSize/sizeof(__u32);
	cmd.opcode = WDC_DE_VU_READ_BUFFER_OPCODE;
	cmd.nsid = WDC_DE_DEFAULT_NAMESPACE_ID;
	cmd.cdw10 = noOfDwordExpected;
	cmd.cdw13 = fileId<<16;
	cmd.cdw14 = spiDestn;
	cmd.cdw15 = offsetInDwords;

	cmd.addr = (__u64)(__u64)(uintptr_t)dataBuffer;
	cmd.data_len = *bufferSize;

	ret = nvme_submit_admin_passthru(dev_fd(dev), &cmd, NULL);

	if( ret != WDC_STATUS_SUCCESS) {
		fprintf(stderr, "ERROR : WDC : VUReadBuffer() failed, ");
		nvme_show_status(ret);
	}

	end:
	return ret;
}

static int wdc_get_log_dir_max_entries(struct nvme_dev *dev, __u32* maxNumOfEntries)
{
	int     		ret = WDC_STATUS_FAILURE;
	__u32           headerPayloadSize = 0;
	__u8*           fileIdOffsetsBuffer = NULL;
	__u32           fileIdOffsetsBufferSize = 0;
	__u32           fileNum = 0;
	__u16           fileOffset = 0;


	if (!dev || !maxNumOfEntries)
	{
		ret = WDC_STATUS_INVALID_PARAMETER;
		return ret;
	}
	/* 1.Get log directory first four bytes */
	if (WDC_STATUS_SUCCESS != (ret = wdc_de_VU_read_size(dev, 0, 5, (__u32*)&headerPayloadSize)))
	{
		fprintf(stderr, "ERROR : WDC : %s: Failed to get headerPayloadSize from file directory 0x%x\n",
				__func__, ret);
		return ret;
	}

	fileIdOffsetsBufferSize = WDC_DE_FILE_HEADER_SIZE + (headerPayloadSize * WDC_DE_FILE_OFFSET_SIZE);
	fileIdOffsetsBuffer = (__u8*)calloc(1, fileIdOffsetsBufferSize);

	/* 2.Read to get file offsets */
	if (WDC_STATUS_SUCCESS != (ret = wdc_de_VU_read_buffer(dev, 0, 5, 0, fileIdOffsetsBuffer, &fileIdOffsetsBufferSize)))
	{
		fprintf(stderr, "ERROR : WDC : %s: Failed to get fileIdOffsets from file directory 0x%x\n",
				__func__, ret);
		goto end;
	}
	/* 3.Determine valid entries */
	for (fileNum = 0; fileNum < (headerPayloadSize - WDC_DE_FILE_HEADER_SIZE) / WDC_DE_FILE_OFFSET_SIZE; fileNum++)
	{
		fileOffset = (fileIdOffsetsBuffer[WDC_DE_FILE_HEADER_SIZE + (fileNum * WDC_DE_FILE_OFFSET_SIZE)] << 8) +
				fileIdOffsetsBuffer[WDC_DE_FILE_HEADER_SIZE + (fileNum * WDC_DE_FILE_OFFSET_SIZE) + 1];
		if (!fileOffset)
			continue;
		(*maxNumOfEntries)++;
	}
end:
	free(fileIdOffsetsBuffer);
	return ret;
}

static WDC_DRIVE_ESSENTIAL_TYPE wdc_get_essential_type(__u8 fileName[])
{
	WDC_DRIVE_ESSENTIAL_TYPE essentialType = WDC_DE_TYPE_NONE;

	if (wdc_UtilsStrCompare((char*)fileName, WDC_DE_CORE_DUMP_FILE_NAME) == 0)
	{
		essentialType = WDC_DE_TYPE_DUMPSNAPSHOT;
	}
	else if (wdc_UtilsStrCompare((char*)fileName, WDC_DE_EVENT_LOG_FILE_NAME) == 0)
	{
		essentialType = WDC_DE_TYPE_EVENTLOG;
	}
	else if (wdc_UtilsStrCompare((char*)fileName, WDC_DE_MANUFACTURING_INFO_PAGE_FILE_NAME) == 0)
	{
		essentialType = WDC_DE_TYPE_NVME_MANF_INFO;
	}

	return essentialType;
}

static int wdc_fetch_log_directory(struct nvme_dev *dev, PWDC_DE_VU_LOG_DIRECTORY directory)
{
	int             ret = WDC_STATUS_FAILURE;
	__u8            *fileOffset = NULL;
	__u8            *fileDirectory = NULL;
	__u32           headerSize = 0;
	__u32           fileNum = 0, startIdx = 0;
	__u16           fileOffsetTemp = 0;
	__u32           entryId = 0;
	__u32           fileDirectorySize = 0;

	if (!dev || !directory) {
		ret = WDC_STATUS_INVALID_PARAMETER;
		goto end;
	}

	ret = wdc_de_VU_read_size(dev, 0, 5, &fileDirectorySize);
	if (WDC_STATUS_SUCCESS != ret) {
		fprintf(stderr,
			"ERROR : WDC : %s: Failed to get filesystem directory size, ret = %d\n",
			__func__, ret);
		goto end;
	}

	fileDirectory = (__u8*)calloc(1, fileDirectorySize);
	ret = wdc_de_VU_read_buffer(dev, 0, 5, 0, fileDirectory, &fileDirectorySize);
	if (WDC_STATUS_SUCCESS != ret) {
		fprintf(stderr,
			"ERROR : WDC : %s: Failed to get filesystem directory, ret = %d\n",
			__func__, ret);
		goto end;
	}

	/* First four bytes of header directory is headerSize */
	memcpy(&headerSize, fileDirectory, WDC_DE_FILE_HEADER_SIZE);

	/* minimum buffer for 1 entry is required */
	if (directory->maxNumLogEntries == 0) {
		ret = WDC_STATUS_INVALID_PARAMETER;
		goto end;
	}

	for (fileNum = 0;
	     fileNum < (headerSize - WDC_DE_FILE_HEADER_SIZE) / WDC_DE_FILE_OFFSET_SIZE;
	     fileNum++) {
		if (entryId >= directory->maxNumLogEntries)
			break;

		startIdx = WDC_DE_FILE_HEADER_SIZE + (fileNum * WDC_DE_FILE_OFFSET_SIZE);
		memcpy(&fileOffsetTemp, fileDirectory + startIdx, sizeof(fileOffsetTemp));
		fileOffset = fileDirectory + fileOffsetTemp;

		if (0 == fileOffsetTemp)
			continue;

		memset(&directory->logEntry[entryId], 0, sizeof(WDC_DRIVE_ESSENTIALS));
		memcpy(&directory->logEntry[entryId].metaData, fileOffset, sizeof(WDC_DE_VU_FILE_META_DATA));
		directory->logEntry[entryId].metaData.fileName[WDC_DE_FILE_NAME_SIZE - 1] = '\0';
		wdc_UtilsDeleteCharFromString((char*)directory->logEntry[entryId].metaData.fileName,
				WDC_DE_FILE_NAME_SIZE, ' ');
		if (0 == directory->logEntry[entryId].metaData.fileID)
			continue;

		directory->logEntry[entryId].essentialType = wdc_get_essential_type(directory->logEntry[entryId].metaData.fileName);
		/*fprintf(stderr, "WDC : %s: NVMe VU Log Entry %d, fileName = %s, fileSize = 0x%lx, fileId = 0x%x\n",
			__func__, entryId, directory->logEntry[entryId].metaData.fileName,
			(long unsigned int)directory->logEntry[entryId].metaData.fileSize, directory->logEntry[entryId].metaData.fileID);
		 */
		entryId++;
	}

	directory->numOfValidLogEntries = entryId;
end:
	if (fileDirectory != NULL)
		free(fileDirectory);
	return ret;
}

static int wdc_fetch_log_file_from_device(struct nvme_dev *dev, __u32 fileId,
					  __u16 spiDestn, __u64 fileSize, __u8* dataBuffer)
{
	int ret = WDC_STATUS_FAILURE;
	__u32                     chunckSize = WDC_DE_VU_READ_BUFFER_STANDARD_OFFSET;
	__u32                     maximumTransferLength = 0;
	__u32                     buffSize = 0;
	__u64                     offsetIdx = 0;

	if (!dev || !dataBuffer || !fileSize)
	{
		ret = WDC_STATUS_INVALID_PARAMETER;
		goto end;
	}

	if (wdc_get_max_transfer_len(dev, &maximumTransferLength) < 0) {
		ret = WDC_STATUS_FAILURE;
		goto end;
	}

	/* Fetch Log File Data */
	if ((fileSize >= maximumTransferLength) || (fileSize > 0xFFFFFFFF))
	{
		chunckSize = WDC_DE_VU_READ_BUFFER_STANDARD_OFFSET;
		if (maximumTransferLength < WDC_DE_VU_READ_BUFFER_STANDARD_OFFSET)
			chunckSize = maximumTransferLength;

		buffSize = chunckSize;
		for (offsetIdx = 0; (offsetIdx * chunckSize) < fileSize; offsetIdx++)
		{
			if (((offsetIdx * chunckSize) + buffSize) > fileSize)
				buffSize = (__u32)(fileSize - (offsetIdx * chunckSize));
			/* Limitation in VU read buffer - offsetIdx and bufferSize are not greater than u32 */
			ret = wdc_de_VU_read_buffer(dev, fileId, spiDestn,
					(__u32)((offsetIdx * chunckSize) / sizeof(__u32)), dataBuffer + (offsetIdx * chunckSize), &buffSize);
			if (ret != WDC_STATUS_SUCCESS)
			{
				fprintf(stderr, "ERROR : WDC : %s: wdc_de_VU_read_buffer failed with ret = %d, fileId = 0x%x, fileSize = 0x%lx\n",
						__func__, ret, fileId, (long unsigned int)fileSize);
				break;
			}
		}
	} else {
		buffSize = (__u32)fileSize;
		ret = wdc_de_VU_read_buffer(dev, fileId, spiDestn,
				(__u32)((offsetIdx * chunckSize) / sizeof(__u32)), dataBuffer, &buffSize);
		if (ret != WDC_STATUS_SUCCESS)
		{
			fprintf(stderr, "ERROR : WDC : %s: wdc_de_VU_read_buffer failed with ret = %d, fileId = 0x%x, fileSize = 0x%lx\n",
					__func__, ret, fileId, (long unsigned int)fileSize);
		}
	}

	end:
	return ret;
}

static int wdc_de_get_dump_trace(struct nvme_dev *dev, char * filePath, __u16 binFileNameLen, char *binFileName)
{
	int                     ret = WDC_STATUS_FAILURE;
	__u8                    *readBuffer = NULL;
	__u32                   readBufferLen = 0;
	__u32                   lastPktReadBufferLen = 0;
	__u32                   maxTransferLen = 0;
	__u32                   dumptraceSize = 0;
	__u32                   chunkSize = 0;
	__u32                   chunks = 0;
	__u32                   offset = 0;
	__u8                    loop = 0;
	__u16					i = 0;
	__u32                   maximumTransferLength = 0;

	if (!dev || !binFileName || !filePath)
	{
		ret = WDC_STATUS_INVALID_PARAMETER;
		return ret;
	}

	if (wdc_get_max_transfer_len(dev, &maximumTransferLength) < 0)
		return WDC_STATUS_FAILURE;

	do
	{
		/* Get dumptrace size */
		ret = wdc_de_VU_read_size(dev, 0, WDC_DE_DUMPTRACE_DESTINATION, &dumptraceSize);
		if (ret != WDC_STATUS_SUCCESS)
		{
			fprintf(stderr, "ERROR : WDC : %s: wdc_de_VU_read_size failed with ret = %d\n",
					__func__, ret);
			break;
		}

		/* Make sure the size requested is greater than dword */
		if (dumptraceSize < 4)
		{
			ret = WDC_STATUS_FAILURE;
			fprintf(stderr, "ERROR : WDC : %s: wdc_de_VU_read_size failed, read size is less than 4 bytes, dumptraceSize = 0x%x\n",
					__func__, dumptraceSize);
			break;
		}

		/* Choose the least max transfer length */
		maxTransferLen = maximumTransferLength < WDC_DE_READ_MAX_TRANSFER_SIZE ? maximumTransferLength : WDC_DE_READ_MAX_TRANSFER_SIZE;

		/* Comment from  FW Team:
		 * The max non - block transfer size is 0xFFFF (16 bits allowed as the block size).Use 0x8000
		 * to keep it on a word - boundary.
		 * max_xfer = int(pow(2, id_data['MDTS'])) * 4096 # 4k page size as reported in pcie capabiltiies
		 */
		chunkSize = dumptraceSize < maxTransferLen ? dumptraceSize : maxTransferLen;
		chunks = (dumptraceSize / maxTransferLen) + ((dumptraceSize % maxTransferLen) ? 1 : 0);

		readBuffer = (unsigned char *)calloc(dumptraceSize, sizeof(unsigned char));
		readBufferLen = chunkSize;
		lastPktReadBufferLen = (dumptraceSize % maxTransferLen) ? (dumptraceSize % maxTransferLen) : chunkSize;

		if (readBuffer == NULL)
		{
			fprintf(stderr, "ERROR : WDC : %s: readBuffer calloc failed\n", __func__);
			ret = WDC_STATUS_INSUFFICIENT_MEMORY;
			break;
		}

		for (i = 0; i < chunks; i++)
		{
			offset = ((i*chunkSize) / 4);

			/* Last loop call, Assign readBufferLen to read only left over bytes */
			if (i == (chunks - 1))
			{
				readBufferLen = lastPktReadBufferLen;
			}

			ret = wdc_de_VU_read_buffer(dev, 0, WDC_DE_DUMPTRACE_DESTINATION, 0, readBuffer + offset, &readBufferLen);
			if (ret != WDC_STATUS_SUCCESS)
			{
				fprintf(stderr, "ERROR : WDC : %s: wdc_de_VU_read_buffer failed, ret = %d on offset 0x%x\n",
						__func__, ret, offset);
				break;
			}
		}
	} while (loop);

	if (ret == WDC_STATUS_SUCCESS)
	{
		ret = wdc_WriteToFile(binFileName, (char*)readBuffer, dumptraceSize);
		if (ret != WDC_STATUS_SUCCESS)
			fprintf(stderr, "ERROR : WDC : %s: wdc_WriteToFile failed, ret = %d\n", __func__, ret);
	} else {
		fprintf(stderr, "ERROR : WDC : %s: Read Buffer Loop failed, ret = %d\n", __func__, ret);
	}

	if (readBuffer)
	{
		free(readBuffer);
	}

	return ret;
}

static int wdc_do_drive_essentials(nvme_root_t r, struct nvme_dev *dev,
				   char *dir, char *key)
{
	int ret = 0;
	void *retPtr;
	char                      fileName[MAX_PATH_LEN];
	__s8                      bufferFolderPath[MAX_PATH_LEN];
	char                      bufferFolderName[MAX_PATH_LEN];
	char                      tarFileName[MAX_PATH_LEN];
	char                      tarFiles[MAX_PATH_LEN];
	char                      tarCmd[MAX_PATH_LEN+MAX_PATH_LEN];
	UtilsTimeInfo             timeInfo;
	__u8                      timeString[MAX_PATH_LEN];
	__u8                      serialNo[WDC_SERIAL_NO_LEN];
	__u8                      firmwareRevision[WDC_NVME_FIRMWARE_REV_LEN];
	__u8                      idSerialNo[WDC_SERIAL_NO_LEN];
	__u8                      idFwRev[WDC_NVME_FIRMWARE_REV_LEN];
	__u8                      featureIdBuff[4];
	char                      currDir[MAX_PATH_LEN];
	char                      *dataBuffer     = NULL;
	__u32 					  elogNumEntries, elogBufferSize;
	__u32 					  dataBufferSize;
	__u32                     listIdx = 0;
	__u32                     vuLogIdx = 0;
	__u32 					  result;
	__u32                     maxNumOfVUFiles = 0;
	struct nvme_id_ctrl ctrl;
	struct nvme_id_ns ns;
	struct nvme_error_log_page *elogBuffer;
	struct nvme_smart_log smart_log;
	struct nvme_firmware_slot fw_log;
	PWDC_NVME_DE_VU_LOGPAGES vuLogInput = NULL;
	WDC_DE_VU_LOG_DIRECTORY deEssentialsList;

	memset(bufferFolderPath,0,sizeof(bufferFolderPath));
	memset(bufferFolderName,0,sizeof(bufferFolderName));
	memset(tarFileName,0,sizeof(tarFileName));
	memset(tarFiles,0,sizeof(tarFiles));
	memset(tarCmd,0,sizeof(tarCmd));
	memset(&timeInfo,0,sizeof(timeInfo));

	if (wdc_get_serial_and_fw_rev(dev, (char *)idSerialNo, (char *)idFwRev))
	{
		fprintf(stderr, "ERROR : WDC : get serial # and fw revision failed\n");
		return -1;
	} else {
		fprintf(stderr, "Get Drive Essentials Data for device serial #: %s and fw revision: %s\n",
				idSerialNo, idFwRev);
	}

	/* Create Drive Essentials directory  */
	wdc_UtilsGetTime(&timeInfo);
	memset(timeString, 0, sizeof(timeString));
	wdc_UtilsSnprintf((char*)timeString, MAX_PATH_LEN, "%02u%02u%02u_%02u%02u%02u",
			timeInfo.year, timeInfo.month, timeInfo.dayOfMonth,
			timeInfo.hour, timeInfo.minute, timeInfo.second);

	wdc_UtilsSnprintf((char*)serialNo,WDC_SERIAL_NO_LEN,(char*)idSerialNo);
	/* Remove any space form serialNo */
	wdc_UtilsDeleteCharFromString((char*)serialNo, WDC_SERIAL_NO_LEN, ' ');

	memset(firmwareRevision, 0, sizeof(firmwareRevision));
	wdc_UtilsSnprintf((char*)firmwareRevision, WDC_NVME_FIRMWARE_REV_LEN, (char*)idFwRev);
	/* Remove any space form FirmwareRevision */
	wdc_UtilsDeleteCharFromString((char*)firmwareRevision, WDC_NVME_FIRMWARE_REV_LEN, ' ');

	wdc_UtilsSnprintf((char*)bufferFolderName, MAX_PATH_LEN, "%s_%s_%s_%s",
			"DRIVE_ESSENTIALS", (char*)serialNo, (char*)firmwareRevision, (char*)timeString);

	if (dir != NULL) {
		wdc_UtilsSnprintf((char*)bufferFolderPath, MAX_PATH_LEN, "%s%s%s",
				(char *)dir, WDC_DE_PATH_SEPARATOR, (char *)bufferFolderName);
	} else {
		retPtr = getcwd((char*)currDir, MAX_PATH_LEN);
		if (retPtr != NULL)
			wdc_UtilsSnprintf((char*)bufferFolderPath, MAX_PATH_LEN, "%s%s%s",
					(char *)currDir, WDC_DE_PATH_SEPARATOR, (char *)bufferFolderName);
		else {
			fprintf(stderr, "ERROR : WDC : get current working directory failed\n");
			return -1;
		}
	}

	ret = wdc_UtilsCreateDir((char*)bufferFolderPath);
	if (ret != 0)
	{
		fprintf(stderr, "ERROR : WDC : create directory failed, ret = %d, dir = %s\n", ret, bufferFolderPath);
		return -1;
	} else {
		fprintf(stderr, "Store Drive Essentials bin files in directory: %s\n", bufferFolderPath);
	}

	/* Get Identify Controller Data */
	memset(&ctrl, 0, sizeof (struct nvme_id_ctrl));
	ret = nvme_identify_ctrl(dev_fd(dev), &ctrl);
	if (ret) {
		fprintf(stderr, "ERROR : WDC : nvme_identify_ctrl() failed, ret = %d\n", ret);
		return -1;
	} else {
		wdc_UtilsSnprintf(fileName, MAX_PATH_LEN, "%s%s%s_%s_%s.bin", (char*)bufferFolderPath, WDC_DE_PATH_SEPARATOR,
				"IdentifyController", (char*)serialNo, (char*)timeString);
		wdc_WriteToFile(fileName, (char*)&ctrl, sizeof (struct nvme_id_ctrl));
	}

	memset(&ns, 0, sizeof (struct nvme_id_ns));
	ret = nvme_identify_ns(dev_fd(dev), 1, &ns);
	if (ret) {
		fprintf(stderr, "ERROR : WDC : nvme_identify_ns() failed, ret = %d\n", ret);
	} else {
		wdc_UtilsSnprintf(fileName, MAX_PATH_LEN, "%s%s%s_%s_%s.bin", (char*)bufferFolderPath, WDC_DE_PATH_SEPARATOR,
				"IdentifyNamespace", (char*)serialNo, (char*)timeString);
		wdc_WriteToFile(fileName, (char*)&ns, sizeof (struct nvme_id_ns));
	}

	/* Get Log Pages (0x01, 0x02, 0x03, 0xC0 and 0xE3) */
	elogNumEntries = WDC_DE_DEFAULT_NUMBER_OF_ERROR_ENTRIES;
	elogBufferSize = elogNumEntries*sizeof(struct nvme_error_log_page);
	dataBuffer = calloc(1, elogBufferSize);
	elogBuffer = (struct nvme_error_log_page *)dataBuffer;

	ret = nvme_get_log_error(dev_fd(dev), elogNumEntries, false,
				 elogBuffer);
	if (ret) {
		fprintf(stderr, "ERROR : WDC : nvme_error_log() failed, ret = %d\n", ret);
	} else {
		wdc_UtilsSnprintf(fileName, MAX_PATH_LEN, "%s%s%s_%s_%s.bin", (char*)bufferFolderPath, WDC_DE_PATH_SEPARATOR,
				"ErrorLog", (char*)serialNo, (char*)timeString);
		wdc_WriteToFile(fileName, (char*)elogBuffer, elogBufferSize);
	}

	free(dataBuffer);
	dataBuffer = NULL;

	/* Get Smart log page  */
	memset(&smart_log, 0, sizeof (struct nvme_smart_log));
	ret = nvme_get_log_smart(dev_fd(dev), NVME_NSID_ALL, false,
				 &smart_log);
	if (ret) {
		fprintf(stderr, "ERROR : WDC : nvme_smart_log() failed, ret = %d\n", ret);
	} else {
		wdc_UtilsSnprintf(fileName, MAX_PATH_LEN, "%s%s%s_%s_%s.bin", (char*)bufferFolderPath, WDC_DE_PATH_SEPARATOR,
				"SmartLog", (char*)serialNo, (char*)timeString);
		wdc_WriteToFile(fileName, (char*)&smart_log, sizeof(struct nvme_smart_log));
	}

	/* Get FW Slot log page  */
	memset(&fw_log, 0, sizeof (struct nvme_firmware_slot));
	ret = nvme_get_log_fw_slot(dev_fd(dev), false, &fw_log);
	if (ret) {
		fprintf(stderr, "ERROR : WDC : nvme_fw_log() failed, ret = %d\n", ret);
	} else {
		wdc_UtilsSnprintf(fileName, MAX_PATH_LEN, "%s%s%s_%s_%s.bin", (char*)bufferFolderPath, WDC_DE_PATH_SEPARATOR,
				"FwSLotLog", (char*)serialNo, (char*)timeString);
		wdc_WriteToFile(fileName, (char*)&fw_log, sizeof(struct nvme_firmware_slot));
	}

	/* Get VU log pages  */
	/* define inputs for vendor unique log pages */
	vuLogInput = (PWDC_NVME_DE_VU_LOGPAGES)calloc(1, sizeof(WDC_NVME_DE_VU_LOGPAGES));
	vuLogInput->numOfVULogPages = sizeof(deVULogPagesList) / sizeof(deVULogPagesList[0]);

	for (vuLogIdx = 0; vuLogIdx < vuLogInput->numOfVULogPages; vuLogIdx++)
	{
		dataBufferSize = deVULogPagesList[vuLogIdx].logPageLen;
		dataBuffer = calloc(1, dataBufferSize);
		memset(dataBuffer, 0, dataBufferSize);

		ret = nvme_get_log_simple(dev_fd(dev),
					  deVULogPagesList[vuLogIdx].logPageId,
					  dataBufferSize, dataBuffer);
		if (ret) {
			fprintf(stderr, "ERROR : WDC : nvme_get_log() for log page 0x%x failed, ret = %d\n",
					deVULogPagesList[vuLogIdx].logPageId, ret);
		} else {
			wdc_UtilsDeleteCharFromString((char*)deVULogPagesList[vuLogIdx].logPageIdStr, 4, ' ');
			wdc_UtilsSnprintf(fileName, MAX_PATH_LEN, "%s%s%s_%s_%s_%s.bin", (char*)bufferFolderPath, WDC_DE_PATH_SEPARATOR,
					"LogPage", (char*)&deVULogPagesList[vuLogIdx].logPageIdStr, (char*)serialNo, (char*)timeString);
			wdc_WriteToFile(fileName, (char*)dataBuffer, dataBufferSize);
		}

		free(dataBuffer);
		dataBuffer = NULL;
	}

	free(vuLogInput);

	/* Get NVMe Features (0x01, 0x02, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C) */
	for (listIdx = 1; listIdx < (sizeof(deFeatureIdList) / sizeof(deFeatureIdList[0])); listIdx++)
	{
		memset(featureIdBuff, 0, sizeof(featureIdBuff));
		/* skipping  LbaRangeType as it is an optional nvme command and not supported */
		if (deFeatureIdList[listIdx].featureId == FID_LBA_RANGE_TYPE)
			continue;
		ret = nvme_get_features_data(dev_fd(dev),
					     (enum nvme_features_id)deFeatureIdList[listIdx].featureId,
					     WDC_DE_GLOBAL_NSID,
					     sizeof(featureIdBuff),
					     &featureIdBuff, &result);

		if (ret) {
			fprintf(stderr, "ERROR : WDC : nvme_get_feature id 0x%x failed, ret = %d\n",
					deFeatureIdList[listIdx].featureId, ret);
		} else {
			wdc_UtilsSnprintf(fileName, MAX_PATH_LEN, "%s%s%s0x%x_%s_%s_%s.bin", (char*)bufferFolderPath, WDC_DE_PATH_SEPARATOR,
					"FEATURE_ID_", deFeatureIdList[listIdx].featureId,
					deFeatureIdList[listIdx].featureName, serialNo, timeString);
			wdc_WriteToFile(fileName, (char*)featureIdBuff, sizeof(featureIdBuff));
		}
	}

	/* Read Debug Directory */
	ret = wdc_get_log_dir_max_entries(dev, &maxNumOfVUFiles);
	if (ret == WDC_STATUS_SUCCESS)
	{
		memset(&deEssentialsList, 0, sizeof(deEssentialsList));
		deEssentialsList.logEntry = (WDC_DRIVE_ESSENTIALS*)calloc(1, sizeof(WDC_DRIVE_ESSENTIALS)*maxNumOfVUFiles);
		deEssentialsList.maxNumLogEntries = maxNumOfVUFiles;

		/* Fetch VU File Directory */
		ret = wdc_fetch_log_directory(dev, &deEssentialsList);
		if (ret == WDC_STATUS_SUCCESS)
		{
			/* Get Debug Data Files */
			for (listIdx = 0; listIdx < deEssentialsList.numOfValidLogEntries; listIdx++)
			{
				if (0 == deEssentialsList.logEntry[listIdx].metaData.fileSize)
				{
					fprintf(stderr, "ERROR : WDC : File Size for %s is 0\n",
							deEssentialsList.logEntry[listIdx].metaData.fileName);
					ret = WDC_STATUS_FILE_SIZE_ZERO;
				} else {
					/* Fetch Log File Data */
					dataBuffer = (char *)calloc(1, (size_t)deEssentialsList.logEntry[listIdx].metaData.fileSize);
					ret = wdc_fetch_log_file_from_device(dev, deEssentialsList.logEntry[listIdx].metaData.fileID, WDC_DE_DESTN_SPI, deEssentialsList.logEntry[listIdx].metaData.fileSize,
							(__u8 *)dataBuffer);

					/* Write databuffer to file */
					if (ret == WDC_STATUS_SUCCESS)
					{
						memset(fileName, 0, sizeof(fileName));
						wdc_UtilsSnprintf(fileName, MAX_PATH_LEN, "%s%s%s_%s_%s.bin", bufferFolderPath, WDC_DE_PATH_SEPARATOR,
								deEssentialsList.logEntry[listIdx].metaData.fileName, serialNo, timeString);
						if (deEssentialsList.logEntry[listIdx].metaData.fileSize > 0xFFFFFFFF)
						{
							wdc_WriteToFile(fileName, dataBuffer, 0xFFFFFFFF);
							wdc_WriteToFile(fileName, dataBuffer + 0xFFFFFFFF, (__u32)(deEssentialsList.logEntry[listIdx].metaData.fileSize - 0xFFFFFFFF));
						} else {
							wdc_WriteToFile(fileName, dataBuffer, (__u32)deEssentialsList.logEntry[listIdx].metaData.fileSize);
						}
					} else {
						fprintf(stderr, "ERROR : WDC : wdc_fetch_log_file_from_device: %s failed, ret = %d\n",
								deEssentialsList.logEntry[listIdx].metaData.fileName, ret);
					}
					free(dataBuffer);
					dataBuffer = NULL;
				}
			}
		} else {
			fprintf(stderr, "WDC : wdc_fetch_log_directory failed, ret = %d\n", ret);
		}

		free(deEssentialsList.logEntry);
		deEssentialsList.logEntry = NULL;
	} else {
		fprintf(stderr, "WDC : wdc_get_log_dir_max_entries failed, ret = %d\n", ret);
	}

	/* Get Dump Trace Data */
	wdc_UtilsSnprintf(fileName, MAX_PATH_LEN, "%s%s%s_%s_%s.bin", (char*)bufferFolderPath, WDC_DE_PATH_SEPARATOR, "dumptrace", serialNo, timeString);
	if (WDC_STATUS_SUCCESS != (ret = wdc_de_get_dump_trace(dev, (char*)bufferFolderPath, 0, fileName)))
	{
		fprintf(stderr, "ERROR : WDC : wdc_de_get_dump_trace failed, ret = %d\n", ret);
	}

	/* Tar the Drive Essentials directory */
	wdc_UtilsSnprintf(tarFileName, sizeof(tarFileName), "%s%s", (char*)bufferFolderPath, WDC_DE_TAR_FILE_EXTN);
	if (dir != NULL) {
		wdc_UtilsSnprintf(tarFiles, sizeof(tarFiles), "%s%s%s%s%s",
				(char*)dir, WDC_DE_PATH_SEPARATOR, (char*)bufferFolderName, WDC_DE_PATH_SEPARATOR, WDC_DE_TAR_FILES);
	} else {
		wdc_UtilsSnprintf(tarFiles, sizeof(tarFiles), "%s%s%s", (char*)bufferFolderName, WDC_DE_PATH_SEPARATOR, WDC_DE_TAR_FILES);
	}
	wdc_UtilsSnprintf(tarCmd, sizeof(tarCmd), "%s %s %s", WDC_DE_TAR_CMD, (char*)tarFileName, (char*)tarFiles);

	ret = system(tarCmd);

	if (ret) {
		fprintf(stderr, "ERROR : WDC : Tar of Drive Essentials data failed, ret = %d\n", ret);
	}

	fprintf(stderr, "Get of Drive Essentials data successful\n");
	nvme_free_tree(r);
	return 0;
}

static int wdc_drive_essentials(int argc, char **argv, struct command *command,
		struct plugin *plugin)
{
	char *desc = "Capture Drive Essentials.";
	char *dirName = "Output directory pathname.";
	char d[PATH_MAX] = {0};
	char k[PATH_MAX] = {0};
	__u64 capabilities = 0;
	struct nvme_dev *dev;
	nvme_root_t r;
	char *d_ptr;
	int ret;

	struct config {
		char *dirName;
	};

	struct config cfg = {
			.dirName = NULL,
	};

	OPT_ARGS(opts) = {
		OPT_STRING("dir-name", 'd', "DIRECTORY", &cfg.dirName, dirName),
		OPT_END()
	};


	ret = parse_and_open(&dev, argc, argv, desc, opts);
	if (ret)
		return ret;

	r = nvme_scan(NULL);
	capabilities = wdc_get_drive_capabilities(r, dev);
	if ((capabilities & WDC_DRIVE_CAP_DRIVE_ESSENTIALS) != WDC_DRIVE_CAP_DRIVE_ESSENTIALS) {
		fprintf(stderr, "ERROR : WDC: unsupported device for this command\n");
		ret = -1;
		goto out;
	}

	if (cfg.dirName != NULL) {
		strncpy(d, cfg.dirName, PATH_MAX - 1);
		d_ptr = d;
	} else {
		d_ptr = NULL;
	}

	ret = wdc_do_drive_essentials(r, dev, d_ptr, k);
out:
	nvme_free_tree(r);
	dev_close(dev);
	return ret;
}

static int wdc_do_drive_resize(struct nvme_dev *dev, uint64_t new_size)
{
	int ret;
	struct nvme_passthru_cmd admin_cmd;

	memset(&admin_cmd, 0, sizeof (struct nvme_passthru_cmd));
	admin_cmd.opcode = WDC_NVME_DRIVE_RESIZE_OPCODE;
	admin_cmd.cdw12 = ((WDC_NVME_DRIVE_RESIZE_SUBCMD << WDC_NVME_SUBCMD_SHIFT) |
			    WDC_NVME_DRIVE_RESIZE_CMD);
	admin_cmd.cdw13 = new_size;

	ret = nvme_submit_admin_passthru(dev_fd(dev), &admin_cmd, NULL);
	return ret;
}

static int wdc_do_namespace_resize(struct nvme_dev *dev, __u32 nsid, __u32 op_option)
{
	int ret;
	struct nvme_passthru_cmd admin_cmd;

	memset(&admin_cmd, 0, sizeof (struct nvme_passthru_cmd));
	admin_cmd.opcode = WDC_NVME_NAMESPACE_RESIZE_OPCODE;
	admin_cmd.nsid = nsid;
	admin_cmd.cdw10 = op_option;

	ret = nvme_submit_admin_passthru(dev_fd(dev), &admin_cmd, NULL);
	return ret;
}

static int wdc_do_drive_info(struct nvme_dev *dev, __u32 *result)
{
	int ret;
	struct nvme_passthru_cmd admin_cmd;

	memset(&admin_cmd, 0, sizeof (struct nvme_passthru_cmd));
	admin_cmd.opcode = WDC_NVME_DRIVE_INFO_OPCODE;
	admin_cmd.cdw12 = ((WDC_NVME_DRIVE_INFO_SUBCMD << WDC_NVME_SUBCMD_SHIFT) |
			    WDC_NVME_DRIVE_INFO_CMD);

	ret = nvme_submit_admin_passthru(dev_fd(dev), &admin_cmd, NULL);

	if (!ret && result)
		*result = admin_cmd.result;

	return ret;
}

static int wdc_drive_resize(int argc, char **argv,
		struct command *command, struct plugin *plugin)
{
	const char *desc = "Send a Resize command.";
	const char *size = "The new size (in GB) to resize the drive to.";
	uint64_t capabilities = 0;
	struct nvme_dev *dev;
	nvme_root_t r;
	int ret;

	struct config {
		uint64_t size;
	};

	struct config cfg = {
		.size = 0,
	};

	OPT_ARGS(opts) = {
		OPT_UINT("size", 's', &cfg.size, size),
		OPT_END()
	};

	ret = parse_and_open(&dev, argc, argv, desc, opts);
	if (ret)
		return ret;

	r = nvme_scan(NULL);
	wdc_check_device(r, dev);
	capabilities = wdc_get_drive_capabilities(r, dev);
	if ((capabilities & WDC_DRIVE_CAP_RESIZE) == WDC_DRIVE_CAP_RESIZE) {
		ret = wdc_do_drive_resize(dev, cfg.size);
	} else {
		fprintf(stderr, "ERROR : WDC: unsupported device for this command\n");
		ret = -1;
	}

	if (!ret)
		printf("New size: %" PRIu64 " GB\n", cfg.size);

	nvme_show_status(ret);
	nvme_free_tree(r);
	dev_close(dev);
	return ret;
}

static int wdc_namespace_resize(int argc, char **argv,
		struct command *command, struct plugin *plugin)
{
	const char *desc = "Send a Namespace Resize command.";
	const char *namespace_id = "The namespace id to resize.";
	const char *op_option = "The over provisioning option to set for namespace.";
	uint64_t capabilities = 0;
	struct nvme_dev *dev;
	nvme_root_t r;
	int ret;

	struct config {
		__u32 namespace_id;
		__u32 op_option;
	};

	struct config cfg = {
		.namespace_id = 0x1,
		.op_option = 0xF,
	};

	OPT_ARGS(opts) = {
		OPT_UINT("namespace-id", 'n', &cfg.namespace_id, namespace_id),
		OPT_UINT("op-option", 'o', &cfg.op_option, op_option),
		OPT_END()
	};

	ret = parse_and_open(&dev, argc, argv, desc, opts);
	if (ret)
		return ret;

	if ((cfg.op_option != 0x1) &&
		(cfg.op_option != 0x2) &&
		(cfg.op_option != 0x3) &&
		(cfg.op_option != 0xF))
	{
		fprintf(stderr, "ERROR : WDC: unsupported OP option parameter\n");
		dev_close(dev);
		return -1;
	}

	r = nvme_scan(NULL);
	wdc_check_device(r, dev);
	capabilities = wdc_get_drive_capabilities(r, dev);
	if ((capabilities & WDC_DRIVE_CAP_NS_RESIZE) == WDC_DRIVE_CAP_NS_RESIZE) {
		ret = wdc_do_namespace_resize(dev, cfg.namespace_id,
					      cfg.op_option);

		if (ret != 0)
			printf("ERROR : WDC: Namespace Resize of namespace id 0x%x, op option 0x%x failed\n", cfg.namespace_id, cfg.op_option);
	} else {
		fprintf(stderr, "ERROR : WDC: unsupported device for this command\n");
		ret = -1;
	}

	nvme_show_status(ret);
	nvme_free_tree(r);
	dev_close(dev);
	return ret;
}

static int wdc_reason_identifier(int argc, char **argv,
		struct command *command, struct plugin *plugin)
{
	const char *desc = "Retrieve telemetry log reason identifier.";
	const char *log_id = "Log ID to retrieve - host - 7 or controller - 8";
	const char *fname = "File name to save raw binary identifier";
	struct nvme_dev *dev;
	nvme_root_t r;
	int ret;
	uint64_t capabilities = 0;
	char f[PATH_MAX] = {0};
	char fileSuffix[PATH_MAX] = {0};
	UtilsTimeInfo             timeInfo;
	__u8                      timeStamp[MAX_PATH_LEN];


	struct config {
		int log_id;
		char *file;
	};
	struct config cfg = {
		.log_id = 7,
		.file = NULL,
	};

	OPT_ARGS(opts) = {
		OPT_UINT("log-id", 'i', &cfg.log_id, log_id),
		OPT_FILE("file",   'o', &cfg.file,   fname),
		OPT_END()
	};

	ret = parse_and_open(&dev, argc, argv, desc, opts);

	if (ret)
		return ret;

	r = nvme_scan(NULL);

	if (cfg.log_id != NVME_LOG_LID_TELEMETRY_HOST&& cfg.log_id != NVME_LOG_LID_TELEMETRY_CTRL) {
		fprintf(stderr, "ERROR : WDC: Invalid Log ID. It must be 7 (Host) or 8 (Controller)\n");
		ret = -1;
		goto close_fd;
	}

	if (cfg.file != NULL) {
		int verify_file;

		/* verify the passed in file name and path is valid before getting the dump data */
		verify_file = open(cfg.file, O_WRONLY | O_CREAT | O_TRUNC, 0666);
		if (verify_file < 0) {
			fprintf(stderr, "ERROR : WDC: open : %s\n", strerror(errno));
			ret = -1;
			goto close_fd;
		}
		close(verify_file);
		strncpy(f, cfg.file, PATH_MAX - 1);
	} else {
		wdc_UtilsGetTime(&timeInfo);
		memset(timeStamp, 0, sizeof(timeStamp));
		wdc_UtilsSnprintf((char*)timeStamp, MAX_PATH_LEN, "%02u%02u%02u_%02u%02u%02u",
			timeInfo.year, timeInfo.month, timeInfo.dayOfMonth,
			timeInfo.hour, timeInfo.minute, timeInfo.second);
		if (cfg.log_id == NVME_LOG_LID_TELEMETRY_CTRL)
			snprintf(fileSuffix, PATH_MAX, "_error_reason_identifier_ctlr_%s", (char*)timeStamp);
		else
			snprintf(fileSuffix, PATH_MAX, "_error_reason_identifier_host_%s", (char*)timeStamp);

		if (wdc_get_serial_name(dev, f, PATH_MAX, fileSuffix) == -1) {
			fprintf(stderr, "ERROR : WDC: failed to generate file name\n");
			ret = -1;
			goto close_fd;
		}
		if (strlen(f) > PATH_MAX - 5) {
			fprintf(stderr, "ERROR : WDC: file name overflow\n");
			ret = -1;
			goto close_fd;
		}
		strcat(f, ".bin");
	}

	fprintf(stderr, "%s: filename = %s\n", __func__, f);

	capabilities = wdc_get_drive_capabilities(r, dev);
	if ((capabilities & WDC_DRIVE_CAP_REASON_ID) == WDC_DRIVE_CAP_REASON_ID) {
		ret = wdc_do_get_reason_id(dev, f, cfg.log_id);
	} else {
		fprintf(stderr, "ERROR : WDC: unsupported device for this command\n");
		ret = -1;
	}

	nvme_show_status(ret);

 close_fd:
	dev_close(dev);
	nvme_free_tree(r);
	return ret;
}

static const char *nvme_log_id_to_string(__u8 log_id)
{
	switch (log_id) {
		case NVME_LOG_LID_ERROR:	    return "Error Information Log ID";
		case NVME_LOG_LID_SMART:	    return "Smart/Health Information Log ID";
		case NVME_LOG_LID_FW_SLOT:	    return "Firmware Slot Information Log ID";
		case NVME_LOG_LID_CHANGED_NS:       return "Namespace Changed Log ID";
		case NVME_LOG_LID_CMD_EFFECTS:      return "Commamds Supported and Effects Log ID";
		case NVME_LOG_LID_DEVICE_SELF_TEST: return "Device Self Test Log ID";
		case NVME_LOG_LID_TELEMETRY_HOST:   return "Telemetry Host Initiated Log ID";
		case NVME_LOG_LID_TELEMETRY_CTRL:   return "Telemetry Controller Generated Log ID";
		case NVME_LOG_LID_ENDURANCE_GROUP:  return "Endurance Group Log ID";
		case NVME_LOG_LID_ANA:              return "ANA Log ID";
		case NVME_LOG_LID_PERSISTENT_EVENT: return "Persistent Event Log ID";
		case NVME_LOG_LID_DISCOVER:         return "Discovery Log ID";
		case NVME_LOG_LID_RESERVATION:      return "Reservation Notification Log ID";
		case NVME_LOG_LID_SANITIZE:	    return "Sanitize Status Log ID";

		case WDC_LOG_ID_C0:             return "WDC Vendor Unique Log ID C0";
		case WDC_LOG_ID_C1:             return "WDC Vendor Unique Log ID C1";
		case WDC_LOG_ID_C2:             return "WDC Vendor Unique Log ID C2";
		case WDC_LOG_ID_C3:             return "WDC Vendor Unique Log ID C3";
		case WDC_LOG_ID_C4:             return "WDC Vendor Unique Log ID C4";
		case WDC_LOG_ID_C5:             return "WDC Vendor Unique Log ID C5";
		case WDC_LOG_ID_C6:             return "WDC Vendor Unique Log ID C6";
		case WDC_LOG_ID_C8:             return "WDC Vendor Unique Log ID C8";
		case WDC_LOG_ID_CA:             return "WDC Vendor Unique Log ID CA";
		case WDC_LOG_ID_CB:             return "WDC Vendor Unique Log ID CB";
		case WDC_LOG_ID_D0:             return "WDC Vendor Unique Log ID D0";
		case WDC_LOG_ID_D1:             return "WDC Vendor Unique Log ID D1";
		case WDC_LOG_ID_D6:             return "WDC Vendor Unique Log ID D6";
		case WDC_LOG_ID_D7:             return "WDC Vendor Unique Log ID D7";
		case WDC_LOG_ID_D8:             return "WDC Vendor Unique Log ID D8";
		case WDC_LOG_ID_DE:             return "WDC Vendor Unique Log ID DE";
		case WDC_LOG_ID_F0:             return "WDC Vendor Unique Log ID F0";
		case WDC_LOG_ID_F1:             return "WDC Vendor Unique Log ID F1";
		case WDC_LOG_ID_F2:             return "WDC Vendor Unique Log ID F2";
		case WDC_LOG_ID_FA:             return "WDC Vendor Unique Log ID FA";

		default:                        return "Unknown Log ID";
	}
}

static int wdc_log_page_directory(int argc, char **argv, struct command *command,
		struct plugin *plugin)
{
	const char *desc = "Retrieve Log Page Directory.";
	struct nvme_dev *dev;
	int ret = 0;
	nvme_root_t r;
	__u64 capabilities = 0;
	struct wdc_c2_cbs_data *cbs_data = NULL;
    int i;
	__u8 log_id = 0;
	__u32 device_id, read_vendor_id;

	struct config {
		char *output_format;
	};

	struct config cfg = {
		.output_format = "normal",
	};

	OPT_ARGS(opts) = {
		OPT_FMT("output-format", 'o', &cfg.output_format, "Output Format: normal|json|binary"),
		OPT_END()
	};

	ret = parse_and_open(&dev, argc, argv, desc, opts);
	if (ret)
		return ret;

	ret = validate_output_format(cfg.output_format);
	if (ret < 0) {
		fprintf(stderr, "%s: ERROR : WDC : invalid output format\n", __func__);
		dev_close(dev);
		return ret;
	}
	ret = 0;

	r = nvme_scan(NULL);
	capabilities = wdc_get_drive_capabilities(r, dev);

	if ((capabilities & WDC_DRIVE_CAP_LOG_PAGE_DIR) == 0) {
		fprintf(stderr, "ERROR : WDC: unsupported device for this command\n");
		ret = -1;
	} else {
		ret = wdc_get_pci_ids(r, dev, &device_id, &read_vendor_id);
		log_id = (device_id == WDC_NVME_ZN350_DEV_ID || device_id == WDC_NVME_ZN350_DEV_ID_1) ?
			WDC_NVME_GET_DEV_MGMNT_LOG_PAGE_OPCODE_C8 : WDC_NVME_GET_DEV_MGMNT_LOG_PAGE_OPCODE;
		/* verify the 0xC2 Device Manageability log page is supported */
		if (wdc_nvme_check_supported_log_page(r, dev, log_id) == false) {
			fprintf(stderr, "%s: ERROR : WDC : 0x%x Log Page not supported\n", __func__, log_id);
			ret = -1;
			goto out;
		}

		if (get_dev_mgment_cbs_data(r, dev, WDC_C2_LOG_PAGES_SUPPORTED_ID, (void *)&cbs_data)) {
			if (cbs_data != NULL) {
				printf("Log Page Directory\n");
				/* print the supported pages */
				if (!strcmp(cfg.output_format, "normal")) {
					for (i = 0; i < le32_to_cpu(cbs_data->length); i++) {
						printf("0x%x  - %s\n", cbs_data->data[i],
								nvme_log_id_to_string(cbs_data->data[i]));
					}
				} else if (!strcmp(cfg.output_format, "binary")) {
					d((__u8 *)cbs_data->data, le32_to_cpu(cbs_data->length), 16, 1);
				} else if (!strcmp(cfg.output_format, "json")) {
					struct json_object *root;
					root = json_create_object();

					for (i = 0; i < le32_to_cpu(cbs_data->length); i++) {
						json_object_add_value_int(root, nvme_log_id_to_string(cbs_data->data[i]),
								cbs_data->data[i]);
					}

					json_print_object(root, NULL);
					printf("\n");
					json_free_object(root);
				} else
					fprintf(stderr, "%s: ERROR : WDC : Invalid format, format = %s\n", __func__, cfg.output_format);

				free(cbs_data);
			} else
				fprintf(stderr, "%s: ERROR : WDC : NULL_data ptr\n", __func__);
		} else
			fprintf(stderr, "%s: ERROR : WDC : 0xC2 Log Page entry ID 0x%x not found\n", __func__, WDC_C2_LOG_PAGES_SUPPORTED_ID);


	}

 out:
	nvme_free_tree(r);
	dev_close(dev);
	return ret;
}

static int wdc_get_drive_reason_id(struct nvme_dev *dev, char *drive_reason_id, size_t len)
{
	int i, j;
	int ret;
	int res_len = 0;
	struct nvme_id_ctrl ctrl;
	char *reason_id_str = "reason_id";

	i = sizeof (ctrl.sn) - 1;
	j = sizeof (ctrl.mn) - 1;
	memset(drive_reason_id, 0, len);
	memset(&ctrl, 0, sizeof (struct nvme_id_ctrl));
	ret = nvme_identify_ctrl(dev_fd(dev), &ctrl);
	if (ret) {
		fprintf(stderr, "ERROR : WDC : nvme_identify_ctrl() failed "
				"0x%x\n", ret);
		return -1;
	}
	/* Remove trailing spaces from the sn and mn */
	while (i && ctrl.sn[i] == ' ') {
		ctrl.sn[i] = '\0';
		i--;
	}

	while (j && ctrl.mn[j] == ' ') {
		ctrl.mn[j] = '\0';
		j--;
	}

	res_len = snprintf(drive_reason_id, len, "%s_%s_%s", ctrl.sn, ctrl.mn, reason_id_str);
	if (len <= res_len) {
		fprintf(stderr, "ERROR : WDC : cannot format serial number due to data "
				"of unexpected length\n");
		return -1;
	}

	return 0;
}

static int wdc_save_reason_id(struct nvme_dev *dev, __u8 *rsn_ident,  int size)
{
	int ret = 0;
	char *reason_id_file;
	char drive_reason_id[PATH_MAX] = {0};
	char reason_id_path[PATH_MAX] = WDC_REASON_ID_PATH_NAME;
	struct stat st = {0};

	if (wdc_get_drive_reason_id(dev, drive_reason_id, PATH_MAX) == -1) {
		fprintf(stderr, "%s: ERROR : failed to get drive reason id\n", __func__);
		return -1;
	}

	/* make the nvmecli dir in /usr/local if it doesn't already exist */
	if (stat(reason_id_path, &st) == -1) {
		if (mkdir(reason_id_path, 0700) < 0) {
			fprintf(stderr, "%s: ERROR : failed to mkdir %s : %s\n",
				__func__, reason_id_path, strerror(errno));
			return -1;
		}
	}

	if (asprintf(&reason_id_file, "%s/%s%s", reason_id_path,
		    drive_reason_id, ".bin") < 0)
		return -ENOMEM;

	fprintf(stderr, "%s: reason id file = %s\n", __func__, reason_id_file);

	/* save off the error reason identifier to a file in /usr/local/nvmecli  */
	ret = wdc_create_log_file(reason_id_file, rsn_ident, WDC_REASON_ID_ENTRY_LEN);
	free(reason_id_file);

	return ret;
}

static int wdc_clear_reason_id(struct nvme_dev *dev)
{
	int ret = -1;
	int verify_file;
	char *reason_id_file;
	char drive_reason_id[PATH_MAX] = {0};

	if (wdc_get_drive_reason_id(dev, drive_reason_id, PATH_MAX) == -1) {
		fprintf(stderr, "%s: ERROR : failed to get drive reason id\n", __func__);
		return -1;
	}

	if (asprintf(&reason_id_file, "%s/%s%s", WDC_REASON_ID_PATH_NAME,
		     drive_reason_id, ".bin") < 0)
		return -ENOMEM;

	/* verify the drive reason id file name and path is valid */
	verify_file = open(reason_id_file, O_WRONLY | O_CREAT | O_TRUNC, 0666);
	if (verify_file < 0) {
		ret = -1;
		goto free;
	}
	close(verify_file);

	/* remove the reason id file */
	ret = remove(reason_id_file);

 free:
	free(reason_id_file);

	return ret;
}

static int wdc_dump_telemetry_hdr(struct nvme_dev *dev, int log_id, struct nvme_telemetry_log *log_hdr)
{
	int ret = 0;

	if (log_id == NVME_LOG_LID_TELEMETRY_HOST)
		ret = nvme_get_log_create_telemetry_host(dev_fd(dev), log_hdr);
	else
		ret = nvme_get_log_telemetry_ctrl(dev_fd(dev), false, 0, 512,
						  (void *)log_hdr);

	if (ret < 0)
		perror("get-telemetry-log");
	else if (ret > 0) {
		nvme_show_status(ret);
		fprintf(stderr, "%s: ERROR : Failed to acquire telemetry header, ret = %d!\n", __func__, ret);
	}

	return ret;
}

static int wdc_do_get_reason_id(struct nvme_dev *dev, char *file, int log_id)
{
	int ret;
	struct nvme_telemetry_log *log_hdr;
	__u32 log_hdr_size = sizeof(struct nvme_telemetry_log);
	__u32 reason_id_size = 0;

	log_hdr = (struct nvme_telemetry_log *) malloc(log_hdr_size);
	if (log_hdr == NULL) {
		fprintf(stderr, "%s: ERROR : malloc failed, size : 0x%x, status : %s\n", __func__, log_hdr_size, strerror(errno));
		ret = -1;
		goto out;
	}
	memset(log_hdr, 0, log_hdr_size);

	ret = wdc_dump_telemetry_hdr(dev, log_id, log_hdr);
	if (ret != 0) {
		fprintf(stderr, "%s: ERROR : get telemetry header failed, ret  : %d\n", __func__, ret);
		ret = -1;
		goto out;
	}

	reason_id_size = sizeof(log_hdr->rsnident);

	if (log_id == NVME_LOG_LID_TELEMETRY_CTRL)
		wdc_save_reason_id(dev, log_hdr->rsnident, reason_id_size);

	ret = wdc_create_log_file(file, (__u8 *)log_hdr->rsnident, reason_id_size);

out:
	free(log_hdr);
	return ret;
}

static void wdc_print_nand_stats_normal(__u16 version, void *data)
{
	struct wdc_nand_stats *nand_stats = (struct wdc_nand_stats *)(data);
	struct wdc_nand_stats_V3 *nand_stats_v3 = (struct wdc_nand_stats_V3 *)(data);
	__u64 temp_raw;
	__u16 temp_norm;
	__u64 *temp_ptr = NULL;

	switch (version)
	{
	case 0:
		printf("  NAND Statistics :- \n");
		printf("  NAND Writes TLC (Bytes)		         %s\n",
			uint128_t_to_string(
				le128_to_cpu(nand_stats->nand_write_tlc)));
		printf("  NAND Writes SLC (Bytes)			 %s\n",
			uint128_t_to_string(
				le128_to_cpu(nand_stats->nand_write_slc)));
		printf("  NAND Program Failures			  	 %"PRIu32"\n",
				(uint32_t)le32_to_cpu(nand_stats->nand_prog_failure));
		printf("  NAND Erase Failures				 %"PRIu32"\n",
				(uint32_t)le32_to_cpu(nand_stats->nand_erase_failure));
		printf("  Bad Block Count			         %"PRIu32"\n",
				(uint32_t)le32_to_cpu(nand_stats->bad_block_count));
		printf("  NAND XOR/RAID Recovery Trigger Events		 %"PRIu64"\n",
				le64_to_cpu(nand_stats->nand_rec_trigger_event));
		printf("  E2E Error Counter                    		 %"PRIu64"\n",
				le64_to_cpu(nand_stats->e2e_error_counter));
		printf("  Number Successful NS Resizing Events		 %"PRIu64"\n",
				le64_to_cpu(nand_stats->successful_ns_resize_event));
		printf("  log page version				 %"PRIu16"\n",
				le16_to_cpu(nand_stats->log_page_version));
		break;
	case 3:
		printf("  NAND Statistics V3:- \n");
		printf("  TLC Units Written				 %s\n",
			uint128_t_to_string(
				le128_to_cpu(nand_stats_v3->nand_write_tlc)));
		printf("  SLC Units Written 				 %s\n",
			uint128_t_to_string(
				le128_to_cpu(nand_stats_v3->nand_write_slc)));
		temp_ptr = (__u64 *)nand_stats_v3->bad_nand_block_count;
		temp_norm = (__u16)(*temp_ptr & 0x000000000000FFFF);
		temp_raw = ((*temp_ptr & 0xFFFFFFFFFFFF0000) >> 16);
		printf("  Bad NAND Blocks Count - Normalized 		 %"PRIu16"\n",
				le16_to_cpu(temp_norm));
		printf("  Bad NAND Blocks Count - Raw	        	 %"PRIu64"\n",
				le64_to_cpu(temp_raw));
		printf("  NAND XOR Recovery count			 %"PRIu64"\n",
				le64_to_cpu(nand_stats_v3->xor_recovery_count));
		printf("  UECC Read Error count				 %"PRIu64"\n",
				le64_to_cpu(nand_stats_v3->uecc_read_error_count));
		printf("  SSD End to End corrected errors		 %"PRIu64"\n",
				le64_to_cpu(nand_stats_v3->ssd_correction_counts[0]));
		printf("  SSD End to End detected errors		 %"PRIu32"\n",
				le32_to_cpu(nand_stats_v3->ssd_correction_counts[8]));
		printf("  SSD End to End uncorrected E2E errors		 %"PRIu32"\n",
				le32_to_cpu(nand_stats_v3->ssd_correction_counts[12]));
		printf("  System data %% life-used			 %u\n",
				nand_stats_v3->percent_life_used);
		printf("  User Data Erase Counts - TLC Min		 %"PRIu64"\n",
				le64_to_cpu(nand_stats_v3->user_data_erase_counts[0]));
		printf("  User Data Erase Counts - TLC Max		 %"PRIu64"\n",
				le64_to_cpu(nand_stats_v3->user_data_erase_counts[1]));
		printf("  User Data Erase Counts - SLC Min		 %"PRIu64"\n",
				le64_to_cpu(nand_stats_v3->user_data_erase_counts[2]));
		printf("  User Data Erase Counts - SLC Max		 %"PRIu64"\n",
				le64_to_cpu(nand_stats_v3->user_data_erase_counts[3]));
		temp_ptr = (__u64 *)nand_stats_v3->program_fail_count;
		temp_norm = (__u16)(*temp_ptr & 0x000000000000FFFF);
		temp_raw = ((*temp_ptr & 0xFFFFFFFFFFFF0000) >> 16);
		printf("  Program Fail Count - Normalized	 	 %"PRIu16"\n",
				le16_to_cpu(temp_norm));
		printf("  Program Fail Count - Raw		     	 %"PRIu64"\n",
				le64_to_cpu(temp_raw));
		temp_ptr = (__u64 *)nand_stats_v3->erase_fail_count;
		temp_norm = (__u16)(*temp_ptr & 0x000000000000FFFF);
		temp_raw = ((*temp_ptr & 0xFFFFFFFFFFFF0000) >> 16);
		printf("  Erase Fail Count - Normalized	     		 %"PRIu16"\n",
				le16_to_cpu(temp_norm));
		printf("  Erase Fail Count - Raw		         %"PRIu64"\n",
				le64_to_cpu(temp_raw));
		printf("  PCIe Correctable Error Count			 %"PRIu16"\n",
				le16_to_cpu(nand_stats_v3->correctable_error_count));
		printf("  %% Free Blocks (User)				 %u\n",
				nand_stats_v3->percent_free_blocks_user);
		printf("  Security Version Number			 %"PRIu64"\n",
				le64_to_cpu(nand_stats_v3->security_version_number));
		printf("  %% Free Blocks (System)			 %u\n",
				nand_stats_v3->percent_free_blocks_system);
		printf("  Data Set Management Commands			 %s\n",
			uint128_t_to_string(
				le128_to_cpu(nand_stats_v3->trim_completions)));
		printf("  Estimate of Incomplete Trim Data		 %"PRIu64"\n",
				le64_to_cpu(nand_stats_v3->trim_completions[16]));
		printf("  %% of completed trim				 %u\n",
				nand_stats_v3->trim_completions[24]);
		printf("  Background Back-Pressure-Guage		 %u\n",
				nand_stats_v3->back_pressure_guage);
		printf("  Soft ECC Error Count				 %"PRIu64"\n",
				le64_to_cpu(nand_stats_v3->soft_ecc_error_count));
		printf("  Refresh Count					 %"PRIu64"\n",
				le64_to_cpu(nand_stats_v3->refresh_count));
		temp_ptr = (__u64 *)nand_stats_v3->bad_sys_nand_block_count;
		temp_norm = (__u16)(*temp_ptr & 0x000000000000FFFF);
		temp_raw = ((*temp_ptr & 0xFFFFFFFFFFFF0000) >> 16);
		printf("  Bad System Nand Block Count - Normalized	 %"PRIu16"\n",
				le16_to_cpu(temp_norm));
		printf("  Bad System Nand Block Count - Raw	         %"PRIu64"\n",
				le64_to_cpu(temp_raw));
		printf("  Endurance Estimate				 %s\n",
			uint128_t_to_string(
				le128_to_cpu(nand_stats_v3->endurance_estimate)));
		printf("  Thermal Throttling Count			 %u\n",
				nand_stats_v3->thermal_throttling_st_ct[0]);
		printf("  Thermal Throttling Status			 %u\n",
				nand_stats_v3->thermal_throttling_st_ct[1]);
		printf("  Unaligned I/O					 %"PRIu64"\n",
				le64_to_cpu(nand_stats_v3->unaligned_IO));
		printf("  Physical Media Units Read			 %s\n",
			uint128_t_to_string(
				le128_to_cpu(nand_stats_v3->physical_media_units)));
		printf("  log page version				 %"PRIu16"\n",
				le16_to_cpu(nand_stats_v3->log_page_version));
		break;

	default:
		fprintf(stderr, "WDC: Nand Stats ERROR : Invalid version\n");
		break;

	}
}

static void wdc_print_nand_stats_json(__u16 version, void *data)
{
	struct wdc_nand_stats *nand_stats = (struct wdc_nand_stats *)(data);
	struct wdc_nand_stats_V3 *nand_stats_v3 = (struct wdc_nand_stats_V3 *)(data);
	struct json_object *root;
	root = json_create_object();
	__u64 temp_raw;
	__u16 temp_norm;
	__u64 *temp_ptr = NULL;

	switch (version)
	{

	case 0:

		json_object_add_value_uint128(root, "NAND Writes TLC (Bytes)",
				le128_to_cpu(nand_stats->nand_write_tlc));
		json_object_add_value_uint128(root, "NAND Writes SLC (Bytes)",
				le128_to_cpu(nand_stats->nand_write_slc));
		json_object_add_value_uint(root, "NAND Program Failures",
				le32_to_cpu(nand_stats->nand_prog_failure));
		json_object_add_value_uint(root, "NAND Erase Failures",
				le32_to_cpu(nand_stats->nand_erase_failure));
		json_object_add_value_uint(root, "Bad Block Count",
				le32_to_cpu(nand_stats->bad_block_count));
		json_object_add_value_uint64(root, "NAND XOR/RAID Recovery Trigger Events",
				le64_to_cpu(nand_stats->nand_rec_trigger_event));
		json_object_add_value_uint64(root, "E2E Error Counter",
				le64_to_cpu(nand_stats->e2e_error_counter));
		json_object_add_value_uint64(root, "Number Successful NS Resizing Events",
				le64_to_cpu(nand_stats->successful_ns_resize_event));

		json_print_object(root, NULL);
		printf("\n");
		break;

	case 3:

		json_object_add_value_uint128(root, "NAND Writes TLC (Bytes)",
				le128_to_cpu(nand_stats_v3->nand_write_tlc));
		json_object_add_value_uint128(root, "NAND Writes SLC (Bytes)",
				le128_to_cpu(nand_stats_v3->nand_write_slc));
		temp_ptr = (__u64 *)nand_stats_v3->bad_nand_block_count;
		temp_norm = (__u16)(*temp_ptr & 0x000000000000FFFF);
		temp_raw = ((*temp_ptr & 0xFFFFFFFFFFFF0000) >> 16);
		json_object_add_value_uint(root, "Bad NAND Blocks Count - Normalized",
				le16_to_cpu(temp_norm));
		json_object_add_value_uint64(root, "Bad NAND Blocks Count - Raw",
				le64_to_cpu(temp_raw));
		json_object_add_value_uint64(root, "NAND XOR Recovery count",
				le64_to_cpu(nand_stats_v3->xor_recovery_count));
		json_object_add_value_uint64(root, "UECC Read Error count",
				le64_to_cpu(nand_stats_v3->uecc_read_error_count));
		json_object_add_value_uint64(root, "SSD End to End corrected errors",
				le64_to_cpu(nand_stats_v3->ssd_correction_counts[0]));
		json_object_add_value_uint(root, "SSD End to End detected errors",
				le32_to_cpu(nand_stats_v3->ssd_correction_counts[8]));
		json_object_add_value_uint(root, "SSD End to End uncorrected E2E errors",
				le32_to_cpu(nand_stats_v3->ssd_correction_counts[12]));
		json_object_add_value_uint(root, "System data % life-used",
				nand_stats_v3->percent_life_used);
		json_object_add_value_uint64(root, "User Data Erase Counts - SLC Min",
				le64_to_cpu(nand_stats_v3->user_data_erase_counts[0]));
		json_object_add_value_uint64(root, "User Data Erase Counts - SLC Max",
				le64_to_cpu(nand_stats_v3->user_data_erase_counts[1]));
		json_object_add_value_uint64(root, "User Data Erase Counts - TLC Min",
				le64_to_cpu(nand_stats_v3->user_data_erase_counts[2]));
		json_object_add_value_uint64(root, "User Data Erase Counts - TLC Max",
				le64_to_cpu(nand_stats_v3->user_data_erase_counts[3]));
		temp_ptr = (__u64 *)nand_stats_v3->program_fail_count;
		temp_norm = (__u16)(*temp_ptr & 0x000000000000FFFF);
		temp_raw = ((*temp_ptr & 0xFFFFFFFFFFFF0000) >> 16);
		json_object_add_value_uint(root, "Program Fail Count - Normalized",
				le16_to_cpu(temp_norm));
		json_object_add_value_uint64(root, "Program Fail Count - Raw",
				le64_to_cpu(temp_raw));
		temp_ptr = (__u64 *)nand_stats_v3->erase_fail_count;
		temp_norm = (__u16)(*temp_ptr & 0x000000000000FFFF);
		temp_raw = ((*temp_ptr & 0xFFFFFFFFFFFF0000) >> 16);
		json_object_add_value_uint(root, "Erase Fail Count - Normalized",
				le16_to_cpu(temp_norm));
		json_object_add_value_uint64(root, "Erase Fail Count - Raw",
				le64_to_cpu(temp_raw));
		json_object_add_value_uint(root, "PCIe Correctable Error Count",
				le16_to_cpu(nand_stats_v3->correctable_error_count));
		json_object_add_value_uint(root, "% Free Blocks (User)",
				nand_stats_v3->percent_free_blocks_user);
		json_object_add_value_uint64(root, "Security Version Number",
				le64_to_cpu(nand_stats_v3->security_version_number));
		json_object_add_value_uint(root, "% Free Blocks (System)",
				nand_stats_v3->percent_free_blocks_system);
		json_object_add_value_uint128(root, "Data Set Management Commands",
				le128_to_cpu(nand_stats_v3->trim_completions));
		json_object_add_value_uint64(root, "Estimate of Incomplete Trim Data",
				le64_to_cpu(nand_stats_v3->trim_completions[16]));
		json_object_add_value_uint(root, "%% of completed trim",
				nand_stats_v3->trim_completions[24]);
		json_object_add_value_uint(root, "Background Back-Pressure-Guage",
				nand_stats_v3->back_pressure_guage);
		json_object_add_value_uint64(root, "Soft ECC Error Count",
				le64_to_cpu(nand_stats_v3->soft_ecc_error_count));
		json_object_add_value_uint64(root, "Refresh Count",
				le64_to_cpu(nand_stats_v3->refresh_count));
		temp_ptr = (__u64 *)nand_stats_v3->bad_sys_nand_block_count;
		temp_norm = (__u16)(*temp_ptr & 0x000000000000FFFF);
		temp_raw = ((*temp_ptr & 0xFFFFFFFFFFFF0000) >> 16);
		json_object_add_value_uint(root, "Bad System Nand Block Count - Normalized",
				le16_to_cpu(temp_norm));
		json_object_add_value_uint64(root, "Bad System Nand Block Count - Raw",
				le64_to_cpu(temp_raw));
		json_object_add_value_uint128(root, "Endurance Estimate",
				le128_to_cpu(nand_stats_v3->endurance_estimate));
		json_object_add_value_uint(root, "Thermal Throttling Status",
				nand_stats_v3->thermal_throttling_st_ct[0]);
		json_object_add_value_uint(root, "Thermal Throttling Count",
				nand_stats_v3->thermal_throttling_st_ct[1]);
		json_object_add_value_uint64(root, "Unaligned I/O",
				le64_to_cpu(nand_stats_v3->unaligned_IO));
		json_object_add_value_uint128(root, "Physical Media Units Read",
				le128_to_cpu(nand_stats_v3->physical_media_units));
		json_object_add_value_uint(root, "log page version",
				le16_to_cpu(nand_stats_v3->log_page_version));

		json_print_object(root, NULL);
		printf("\n");
		break;

	default:
		printf("%s: Invalid Stats Version = %d\n", __func__, version);
		break;

	}

	json_free_object(root);

}

static void wdc_print_pcie_stats_normal(struct wdc_vs_pcie_stats *pcie_stats)
{
	printf("  PCIE Statistics :- \n");
	printf("  Unsupported Request Error Counter             %20"PRIu64"\n",
			le64_to_cpu(pcie_stats->unsupportedRequestErrorCount));
	printf("  ECRC Error Status Counter                     %20"PRIu64"\n",
			le64_to_cpu(pcie_stats->ecrcErrorStatusCount));
	printf("  Malformed TLP Status Counter                  %20"PRIu64"\n",
			le64_to_cpu(pcie_stats->malformedTlpStatusCount));
	printf("  Receiver Overflow Status Counter              %20"PRIu64"\n",
			le64_to_cpu(pcie_stats->receiverOverflowStatusCount));
	printf("  Unexpected Completion Status Counter          %20"PRIu64"\n",
			le64_to_cpu(pcie_stats->unexpectedCmpltnStatusCount));
	printf("  Complete Abort Status Counter                 %20"PRIu64"\n",
			le64_to_cpu(pcie_stats->completeAbortStatusCount));
	printf("  Completion Timeout Status Counter             %20"PRIu64"\n",
			le64_to_cpu(pcie_stats->cmpltnTimoutStatusCount));
	printf("  Flow Control Error Status Counter             %20"PRIu64"\n",
			le64_to_cpu(pcie_stats->flowControlErrorStatusCount));
	printf("  Poisoned TLP Status Counter                   %20"PRIu64"\n",
			le64_to_cpu(pcie_stats->poisonedTlpStatusCount));
	printf("  Dlink Protocol Error Status Counter           %20"PRIu64"\n",
			le64_to_cpu(pcie_stats->dLinkPrtclErrorStatusCount));
	printf("  Advisory Non Fatal Error Status Counter       %20"PRIu64"\n",
			le64_to_cpu(pcie_stats->advsryNFatalErrStatusCount));
	printf("  Replay Timer TO Status Counter                %20"PRIu64"\n",
			le64_to_cpu(pcie_stats->replayTimerToStatusCount));
	printf("  Replay Number Rollover Status Counter         %20"PRIu64"\n",
			le64_to_cpu(pcie_stats->replayNumRolloverStCount));
	printf("  Bad DLLP Status Counter                       %20"PRIu64"\n",
			le64_to_cpu(pcie_stats->badDllpStatusCount));
	printf("  Bad TLP Status Counter                        %20"PRIu64"\n",
			le64_to_cpu(pcie_stats->badTlpStatusCount));
	printf("  Receiver Error Status Counter                 %20"PRIu64"\n",
			le64_to_cpu(pcie_stats->receiverErrStatusCount));

}

static void wdc_print_pcie_stats_json(struct wdc_vs_pcie_stats *pcie_stats)
{
	struct json_object *root;
	root = json_create_object();

	json_object_add_value_uint64(root, "Unsupported Request Error Counter",
			le64_to_cpu(pcie_stats->unsupportedRequestErrorCount));
	json_object_add_value_uint64(root, "ECRC Error Status Counter",
			le64_to_cpu(pcie_stats->ecrcErrorStatusCount));
	json_object_add_value_uint64(root, "Malformed TLP Status Counter",
			le64_to_cpu(pcie_stats->malformedTlpStatusCount));

	json_object_add_value_uint64(root, "Receiver Overflow Status Counter",
			le64_to_cpu(pcie_stats->receiverOverflowStatusCount));
	json_object_add_value_uint64(root, "Unexpected Completion Status Counter",
			le64_to_cpu(pcie_stats->unexpectedCmpltnStatusCount));
	json_object_add_value_uint64(root, "Complete Abort Status Counter",
			le64_to_cpu(pcie_stats->completeAbortStatusCount));
	json_object_add_value_uint64(root, "Completion Timeout Status Counter",
			le64_to_cpu(pcie_stats->cmpltnTimoutStatusCount));
	json_object_add_value_uint64(root, "Flow Control Error Status Counter",
			le64_to_cpu(pcie_stats->flowControlErrorStatusCount));
	json_object_add_value_uint64(root, "Poisoned TLP Status Counter",
			le64_to_cpu(pcie_stats->poisonedTlpStatusCount));
	json_object_add_value_uint64(root, "Dlink Protocol Error Status Counter",
			le64_to_cpu(pcie_stats->dLinkPrtclErrorStatusCount));
	json_object_add_value_uint64(root, "Advisory Non Fatal Error Status Counter",
			le64_to_cpu(pcie_stats->advsryNFatalErrStatusCount));
	json_object_add_value_uint64(root, "Replay Timer TO Status Counter",
			le64_to_cpu(pcie_stats->replayTimerToStatusCount));
	json_object_add_value_uint64(root, "Replay Number Rollover Status Counter",
			le64_to_cpu(pcie_stats->replayNumRolloverStCount));
	json_object_add_value_uint64(root, "Bad DLLP Status Counter",
			le64_to_cpu(pcie_stats->badDllpStatusCount));
	json_object_add_value_uint64(root, "Bad TLP Status Counter",
			le64_to_cpu(pcie_stats->badTlpStatusCount));
	json_object_add_value_uint64(root, "Receiver Error Status Counter",
			le64_to_cpu(pcie_stats->receiverErrStatusCount));

	json_print_object(root, NULL);
	printf("\n");

	json_free_object(root);
}

static int wdc_do_vs_nand_stats_sn810_2(struct nvme_dev *dev, char *format)
{
	int ret;
	int fmt = -1;
	uint8_t *data = NULL;

	data = NULL;
	ret = nvme_get_ext_smart_cloud_log(dev_fd(dev), &data, 0,
					   NVME_NSID_ALL);

	if (ret) {
		fprintf(stderr, "ERROR : WDC : %s : Failed to retreive NAND stats\n", __func__);
		goto out;
	} else {
		fmt = validate_output_format(format);
		if (fmt < 0) {
			fprintf(stderr, "ERROR : WDC : %s : invalid output format\n", __func__);
			ret = fmt;
			goto out;
		}

		/* parse the data */
		switch (fmt) {
		case NORMAL:
			wdc_print_ext_smart_cloud_log_normal(data, WDC_SCA_V1_NAND_STATS);
			break;
		case JSON:
			wdc_print_ext_smart_cloud_log_json(data, WDC_SCA_V1_NAND_STATS);
			break;
		}
	}

out:
	if (data)
		free(data);
	return ret;
}

static int wdc_do_vs_nand_stats(struct nvme_dev *dev, char *format)
{
	int ret;
	int fmt = -1;
	uint8_t *output = NULL;
	__u16 version = 0;

	if ((output = (uint8_t*)calloc(WDC_NVME_NAND_STATS_SIZE, sizeof(uint8_t))) == NULL) {
		fprintf(stderr, "ERROR : WDC : calloc : %s\n", strerror(errno));
		ret = -1;
		goto out;
	}

	ret = nvme_get_log_simple(dev_fd(dev), WDC_NVME_NAND_STATS_LOG_ID,
				  WDC_NVME_NAND_STATS_SIZE, (void*)output);
	if (ret) {
		fprintf(stderr, "ERROR : WDC : %s : Failed to retreive NAND stats\n", __func__);
		goto out;
	} else {
		fmt = validate_output_format(format);
		if (fmt < 0) {
			fprintf(stderr, "ERROR : WDC : invalid output format\n");
			ret = fmt;
			goto out;
		}

		version = output[WDC_NVME_NAND_STATS_SIZE - 2];

		/* parse the data */
		switch (fmt) {
		case NORMAL:
			wdc_print_nand_stats_normal(version, output);
			break;
		case JSON:
			wdc_print_nand_stats_json(version, output);
			break;
		}
	}

out:
	free(output);
	return ret;
}

static int wdc_vs_nand_stats(int argc, char **argv, struct command *command,
		struct plugin *plugin)
{
	const char *desc = "Retrieve NAND statistics.";
	struct nvme_dev *dev;
	nvme_root_t r;
	__u64 capabilities = 0;
	uint32_t read_device_id = 0, read_vendor_id = 0;
	int ret;

	struct config {
		char *output_format;
	};

	struct config cfg = {
		.output_format = "normal",
	};

	OPT_ARGS(opts) = {
		OPT_FMT("output-format", 'o', &cfg.output_format, "Output Format: normal|json"),
		OPT_END()
	};

	ret = parse_and_open(&dev, argc, argv, desc, opts);
	if (ret)
		return ret;

	r = nvme_scan(NULL);
	capabilities = wdc_get_drive_capabilities(r, dev);

	if ((capabilities & WDC_DRIVE_CAP_NAND_STATS) == 0) {
		fprintf(stderr, "ERROR : WDC: unsupported device for this command\n");
		ret = -1;
	} else {
		ret = wdc_get_pci_ids(r, dev, &read_device_id, &read_vendor_id);
		if (ret < 0)
		{
			fprintf(stderr, "ERROR : WDC: %s: failure to get pci ids, ret = %d\n", __func__, ret);
			return -1;
		}

		switch (read_device_id) {
		case WDC_NVME_SN820CL_DEV_ID:
			ret = wdc_do_vs_nand_stats_sn810_2(dev,
							   cfg.output_format);
			break;
		default:
			ret = wdc_do_vs_nand_stats(dev, cfg.output_format);
			break;
		}
	}

	if (ret)
		fprintf(stderr, "ERROR : WDC : Failure reading NAND statistics, ret = %d\n", ret);

	nvme_free_tree(r);
	dev_close(dev);
	return ret;
}

static int wdc_do_vs_pcie_stats(struct nvme_dev *dev,
		struct wdc_vs_pcie_stats *pcieStatsPtr)
{
	int ret;
	struct nvme_passthru_cmd admin_cmd;
	int pcie_stats_size = sizeof(struct wdc_vs_pcie_stats);

	memset(&admin_cmd, 0, sizeof (struct nvme_passthru_cmd));
	admin_cmd.opcode = WDC_NVME_PCIE_STATS_OPCODE;
	admin_cmd.addr = (__u64)(uintptr_t)pcieStatsPtr;
	admin_cmd.data_len = pcie_stats_size;

	ret = nvme_submit_admin_passthru(dev_fd(dev), &admin_cmd, NULL);

	return ret;
}

static int wdc_vs_pcie_stats(int argc, char **argv, struct command *command,
		struct plugin *plugin)
{
	const char *desc = "Retrieve PCIE statistics.";
	struct nvme_dev *dev;
	int ret = 0;
	nvme_root_t r;
	__u64 capabilities = 0;
	int fmt = -1;
	struct wdc_vs_pcie_stats *pcieStatsPtr = NULL;
	int pcie_stats_size = sizeof(struct wdc_vs_pcie_stats);
	bool huge;

	struct config {
		char *output_format;
	};

	struct config cfg = {
		.output_format = "normal",
	};

	OPT_ARGS(opts) = {
		OPT_FMT("output-format", 'o', &cfg.output_format, "Output Format: normal|json"),
		OPT_END()
	};

	ret = parse_and_open(&dev, argc, argv, desc, opts);
	if (ret)
		return ret;


	r = nvme_scan(NULL);
	fmt = validate_output_format(cfg.output_format);
	if (fmt < 0) {
		fprintf(stderr, "ERROR : WDC : invalid output format\n");
		ret = fmt;
		goto out;
	}

	pcieStatsPtr = nvme_alloc(pcie_stats_size, &huge);
	if (pcieStatsPtr == NULL) {
		fprintf(stderr, "ERROR : WDC : PCIE Stats alloc : %s\n", strerror(errno));
		ret = -1;
		goto out;
	}

	memset((void *)pcieStatsPtr, 0, pcie_stats_size);

	capabilities = wdc_get_drive_capabilities(r, dev);

	if ((capabilities & WDC_DRIVE_CAP_PCIE_STATS) == 0) {
		fprintf(stderr, "ERROR : WDC: unsupported device for this command\n");
		ret = -1;
	} else {
		ret = wdc_do_vs_pcie_stats(dev, pcieStatsPtr);
		if (ret)
			fprintf(stderr, "ERROR : WDC : Failure reading PCIE statistics, ret = 0x%x\n", ret);
		else {
			/* parse the data */
			switch (fmt) {
			case NORMAL:
				wdc_print_pcie_stats_normal(pcieStatsPtr);
				break;
			case JSON:
				wdc_print_pcie_stats_json(pcieStatsPtr);
				break;
			}
		}
	}

	nvme_free(pcieStatsPtr, huge);

out:
	nvme_free_tree(r);
	dev_close(dev);
	return ret;
}

static int wdc_vs_drive_info(int argc, char **argv,
		struct command *command, struct plugin *plugin)
{
	const char *desc = "Send a vs-drive-info command.";
	nvme_root_t r;
	uint64_t capabilities = 0;
	struct nvme_dev *dev;
	int ret;
	__le32 result;
	__u16 size;
	double rev;
	struct nvme_id_ctrl ctrl;
	char vsData[32] = {0};
	char major_rev = 0, minor_rev = 0;
	__u8 *data = NULL;
	__u32 ftl_unit_size = 0, tcg_dev_ownership = 0;
	__u16 boot_spec_major = 0, boot_spec_minor = 0;
	int fmt = -1;
	struct json_object *root = NULL;
	char formatter[41] = { 0 };
	char rev_str[16] = { 0 };
	uint32_t read_device_id = -1, read_vendor_id = -1;
	wdc_nvme_ext_smart_log *ext_smart_log_ptr = NULL;

	struct config {
		char *output_format;
	};

	struct config cfg = {
		.output_format = "normal",
	};

	OPT_ARGS(opts) = {
		OPT_FMT("output-format", 'o', &cfg.output_format, "Output Format: normal|json"),
		OPT_END()
	};

	ret = parse_and_open(&dev, argc, argv, desc, opts);
	if (ret)
		return ret;

	fmt = validate_output_format(cfg.output_format);
	if (fmt < 0) {
		fprintf(stderr, "ERROR : WDC %s invalid output format\n", __func__);
		dev_close(dev);
		return fmt;
	}

	/* get the id ctrl data used to fill in drive info below */
	ret = nvme_identify_ctrl(dev_fd(dev), &ctrl);

	if (ret) {
		fprintf(stderr, "ERROR : WDC %s: Identify Controller failed\n", __func__);
		dev_close(dev);
		return ret;
	}

	r = nvme_scan(NULL);
	wdc_check_device(r, dev);
	capabilities = wdc_get_drive_capabilities(r, dev);
	if ((capabilities & WDC_DRIVE_CAP_INFO) == WDC_DRIVE_CAP_INFO) {
		ret = wdc_get_pci_ids(r, dev, &read_device_id, &read_vendor_id);
		if (ret < 0)
		{
			fprintf(stderr, "ERROR : WDC: %s: failure to get pci ids, ret = %d\n", __func__, ret);
			goto out;
		}

		switch (read_device_id) {
		case WDC_NVME_SN640_DEV_ID:
		case WDC_NVME_SN640_DEV_ID_1:
		case WDC_NVME_SN640_DEV_ID_2:
		case WDC_NVME_SN640_DEV_ID_3:
		case WDC_NVME_SN650_DEV_ID:
		case WDC_NVME_SN650_DEV_ID_1:
		case WDC_NVME_SN650_DEV_ID_2:
		case WDC_NVME_SN650_DEV_ID_3:
		case WDC_NVME_SN650_DEV_ID_4:
		case WDC_NVME_SN655_DEV_ID:
		case WDC_NVME_SN560_DEV_ID_1:
		case WDC_NVME_SN560_DEV_ID_2:
		case WDC_NVME_SN560_DEV_ID_3:
		case WDC_NVME_SN550_DEV_ID:
		case WDC_NVME_ZN350_DEV_ID:
		case WDC_NVME_ZN350_DEV_ID_1:
			ret = wdc_do_drive_info(dev, &result);

			if (!ret) {
				size = (__u16)((cpu_to_le32(result) & 0xffff0000) >> 16);
				rev = (double)(cpu_to_le32(result) & 0x0000ffff);

				if (fmt == NORMAL) {
					printf("Drive HW Revison: %4.1f\n", (.1 * rev));
					printf("FTL Unit Size:     0x%x KB\n", size);
					printf("Customer SN:        %-.*s\n", (int)sizeof(ctrl.sn), &ctrl.sn[0]);
				}
				else if (fmt == JSON) {
			   		root = json_create_object();
			   		sprintf(rev_str, "%4.1f", (.1 * rev));
					json_object_add_value_string(root, "Drive HW Revison", rev_str);

					json_object_add_value_int(root, "FTL Unit Size", le16_to_cpu(size));
					wdc_StrFormat(formatter, sizeof(formatter), &ctrl.sn[0], sizeof(ctrl.sn));
					json_object_add_value_string(root, "Customer SN", formatter);

					json_print_object(root, NULL);
					printf("\n");

					json_free_object(root);
				}
			}
			break;
		case WDC_NVME_SN730A_DEV_ID:
			memcpy(vsData, &ctrl.vs[0], 32);

			major_rev = ctrl.sn[12];
			minor_rev = ctrl.sn[13];

			if (fmt == NORMAL) {
				printf("Drive HW Revision:   %c.%c \n", major_rev, minor_rev);
				printf("Customer SN:         %-.*s\n", 14, &ctrl.sn[0]);
			}
			else if (fmt == JSON) {
		   		root = json_create_object();
		   		sprintf(rev_str, "%c.%c", major_rev, minor_rev);
				json_object_add_value_string(root, "Drive HW Revison", rev_str);
				wdc_StrFormat(formatter, sizeof(formatter), &ctrl.sn[0], 14);
				json_object_add_value_string(root, "Customer SN", formatter);

				json_print_object(root, NULL);
				printf("\n");

				json_free_object(root);
			}
			break;
		case WDC_NVME_SN820CL_DEV_ID:
			/* Get the Drive HW Rev from the C6 Log page */
			ret = nvme_get_hw_rev_log(dev_fd(dev), &data, 0,
						  NVME_NSID_ALL);
			if (ret == 0) {
				wdc_nvme_hw_rev_log *log_data = (wdc_nvme_hw_rev_log *)data;
				major_rev = log_data->hw_rev_gdr;

				free(data);
				data = NULL;
			} else {
				fprintf(stderr, "ERROR : WDC: %s: failure to get hw revision log\n", __func__);
				ret = -1;
				goto out;
			}

			/* Get the Smart C0 log page */
			if ((capabilities & WDC_DRIVE_CAP_CLOUD_LOG_PAGE) == 0) {
				fprintf(stderr, "ERROR : WDC: unsupported device for this command\n");
				ret = -1;
				goto out;
			}

			ret = nvme_get_ext_smart_cloud_log(dev_fd(dev), &data,
							   0, NVME_NSID_ALL);

			if (ret == 0) {
				ext_smart_log_ptr = (wdc_nvme_ext_smart_log *)data;

				/* Set the FTL Unit size */
				ftl_unit_size = le32_to_cpu(ext_smart_log_ptr->ext_smart_ftlus);

				/* Set the Boot Spec Version */
				boot_spec_major = le16_to_cpu(ext_smart_log_ptr->ext_smart_maj);
				boot_spec_minor = le16_to_cpu(ext_smart_log_ptr->ext_smart_min);

				/* Set the Drive Ownership Status */
				tcg_dev_ownership = le32_to_cpu(ext_smart_log_ptr->ext_smart_tcgos);
				free(data);
			} else {
				fprintf(stderr, "ERROR : WDC: %s: failure to get extended smart cloud log\n", __func__);
				ret = -1;
				goto out;
			}

			if (fmt == NORMAL) {
				printf("Drive HW Revision:                    %2d\n", major_rev);
				printf("FTL Unit Size:                        %d\n", ftl_unit_size);
				printf("HyperScale Boot Version Spec:        %d.%d\n", boot_spec_major, boot_spec_minor);
				printf("TCG Device Ownership Status:          %2d\n", tcg_dev_ownership);

			}
			else if (fmt == JSON) {
		   		root = json_create_object();

				json_object_add_value_int(root, "Drive HW Revison", major_rev);
				json_object_add_value_int(root, "FTL Unit Size", ftl_unit_size);
		   		sprintf(rev_str, "%d.%d", boot_spec_major, boot_spec_minor);
				json_object_add_value_string(root, "HyperScale Boot Version Spec", rev_str);
				json_object_add_value_int(root, "TCG Device Ownership Status", tcg_dev_ownership);

				json_print_object(root, NULL);
				printf("\n");

				json_free_object(root);
			}

			break;
		default:
			fprintf(stderr, "ERROR : WDC: unsupported device for this command\n");
			ret = -1;
			break;
		}
	} else {
		fprintf(stderr, "ERROR : WDC: capability not supported by this device\n");
		ret = -1;
	}

out:
	nvme_show_status(ret);
	nvme_free_tree(r);
	dev_close(dev);
	return ret;
}

static int wdc_vs_temperature_stats(int argc, char **argv,
		struct command *command, struct plugin *plugin)
{
	const char *desc = "Send a vs-temperature-stats command.";
	struct nvme_smart_log smart_log;
	struct nvme_id_ctrl id_ctrl;
	struct nvme_dev *dev;
	nvme_root_t r;
	uint64_t capabilities = 0;
    	__u32 hctm_tmt;
	int temperature, temp_tmt1, temp_tmt2;
	int ret, fmt = -1;

	struct config {
		char *output_format;
	};

	struct config cfg = {
		.output_format = "normal",
	};

	OPT_ARGS(opts) = {
		OPT_FMT("output-format", 'o', &cfg.output_format, "Output Format: normal|json"),
		OPT_END()
	};

	ret = parse_and_open(&dev, argc, argv, desc, opts);
	if (ret)
		return ret;

	r = nvme_scan(NULL);
	fmt = validate_output_format(cfg.output_format);
	if (fmt < 0) {
		fprintf(stderr, "ERROR : WDC : invalid output format\n");
		ret = fmt;
		goto out;
	}

	/* check if command is supported */
	wdc_check_device(r, dev);
	capabilities = wdc_get_drive_capabilities(r, dev);
	if ((capabilities & WDC_DRIVE_CAP_TEMP_STATS) != WDC_DRIVE_CAP_TEMP_STATS) {
		fprintf(stderr, "ERROR : WDC: unsupported device for this command\n");
		ret = -1;
		goto out;
	} 

    	/* get the temperature stats or report errors */
	ret = nvme_identify_ctrl(dev_fd(dev), &id_ctrl);
   	if (ret != 0)
		goto out;
	ret = nvme_get_log_smart(dev_fd(dev), NVME_NSID_ALL, false,
				 &smart_log);
	if (ret != 0)
		goto out;

	/* convert from kelvins to degrees Celsius */
	temperature = ((smart_log.temperature[1] << 8) | smart_log.temperature[0]) - 273;

	/* retrieve HCTM Thermal Management Temperatures */
	nvme_get_features_simple(dev_fd(dev), 0x10, 0, &hctm_tmt);
   	temp_tmt1 = ((hctm_tmt >> 16) & 0xffff) ? ((hctm_tmt >> 16) & 0xffff) - 273 : 0;
   	temp_tmt2 = (hctm_tmt & 0xffff) ? (hctm_tmt & 0xffff) - 273 : 0;

   	if (fmt == NORMAL) {
		/* print the temperature stats */
		printf("Temperature Stats for NVME device:%s namespace-id:%x\n",
					dev->name, WDC_DE_GLOBAL_NSID);

		printf("Current Composite Temperature           : %d Â°C\n", temperature);
		printf("WCTEMP                                  : %"PRIu16" Â°C\n", id_ctrl.wctemp - 273);
		printf("CCTEMP                                  : %"PRIu16" Â°C\n", id_ctrl.cctemp - 273);
		printf("DITT support                            : 0\n");
		printf("HCTM support                            : %"PRIu16"\n", id_ctrl.hctma);

		printf("HCTM Light (TMT1)                       : %"PRIu16" Â°C\n", temp_tmt1);
		printf("TMT1 Transition Counter                 : %"PRIu32"\n", smart_log.thm_temp1_trans_count);
		printf("TMT1 Total Time                         : %"PRIu32"\n", smart_log.thm_temp1_total_time);

		printf("HCTM Heavy (TMT2)                       : %"PRIu16" Â°C\n", temp_tmt2);
		printf("TMT2 Transition Counter                 : %"PRIu32"\n", smart_log.thm_temp2_trans_count);
		printf("TMT2 Total Time                         : %"PRIu32"\n", smart_log.thm_temp2_total_time);
		printf("Thermal Shutdown Threshold              : 95 Â°C\n");
   	}
   	else if (fmt == JSON) {
   		struct json_object *root;
   		root = json_create_object();

		json_object_add_value_int(root, "Current Composite Temperature", le32_to_cpu(temperature));
		json_object_add_value_int(root, "WCTEMP", le16_to_cpu(id_ctrl.wctemp - 273));
		json_object_add_value_int(root, "CCTEMP", le16_to_cpu(id_ctrl.cctemp - 273));
		json_object_add_value_int(root, "DITT support", 0);
		json_object_add_value_int(root, "HCTM support", le16_to_cpu(id_ctrl.hctma));

		json_object_add_value_int(root, "HCTM Light (TMT1)", le16_to_cpu(temp_tmt1));
		json_object_add_value_int(root, "TMT1 Transition Counter", le32_to_cpu(smart_log.thm_temp1_trans_count));
		json_object_add_value_int(root, "TMT1 Total Time", le32_to_cpu(smart_log.thm_temp1_total_time));

		json_object_add_value_int(root, "HCTM Light (TMT2)", le16_to_cpu(temp_tmt2));
		json_object_add_value_int(root, "TMT2 Transition Counter", le32_to_cpu(smart_log.thm_temp2_trans_count));
		json_object_add_value_int(root, "TMT2 Total Time", le32_to_cpu(smart_log.thm_temp2_total_time));
		json_object_add_value_int(root, "Thermal Shutdown Threshold", 95);

		json_print_object(root, NULL);
		printf("\n");

		json_free_object(root);
   	}
   	else
   	   	printf("%s: Invalid format\n", __func__);

out:
	nvme_show_status(ret);
	nvme_free_tree(r);
	dev_close(dev);
	return ret;
}

static int wdc_capabilities(int argc, char **argv, 
        struct command *command, struct plugin *plugin) 
{
    const char *desc = "Send a capabilities command.";
    uint64_t capabilities = 0;
    struct nvme_dev *dev;
    nvme_root_t r;
    int ret;

    OPT_ARGS(opts) = 
    {
        OPT_END()
    };

    ret = parse_and_open(&dev, argc, argv, desc, opts);
    if (ret)
        return ret;

    /* get capabilities */
    r = nvme_scan(NULL);
    wdc_check_device(r, dev);
    capabilities = wdc_get_drive_capabilities(r, dev);

    /* print command and supported status */
    printf("WDC Plugin Capabilities for NVME device:%s\n", dev->name);
    printf("cap-diag                      : %s\n", 
            capabilities & WDC_DRIVE_CAP_CAP_DIAG ? "Supported" : "Not Supported");
    printf("drive-log                     : %s\n", 
            capabilities & WDC_DRIVE_CAP_DRIVE_LOG ? "Supported" : "Not Supported");
    printf("get-crash-dump                : %s\n", 
            capabilities & WDC_DRIVE_CAP_CRASH_DUMP ? "Supported" : "Not Supported");
    printf("get-pfail-dump                : %s\n", 
            capabilities & WDC_DRIVE_CAP_PFAIL_DUMP ? "Supported" : "Not Supported");
    printf("id-ctrl                       : Supported\n");
    printf("purge                         : %s\n",
            capabilities & WDC_DRIVE_CAP_PURGE ? "Supported" : "Not Supported");
    printf("purge-monitor                 : %s\n",
            capabilities & WDC_DRIVE_CAP_PURGE ? "Supported" : "Not Supported");
    printf("vs-internal-log               : %s\n", 
            capabilities & WDC_DRIVE_CAP_INTERNAL_LOG_MASK ? "Supported" : "Not Supported");
    printf("vs-nand-stats                 : %s\n", 
            capabilities & WDC_DRIVE_CAP_NAND_STATS ? "Supported" : "Not Supported");
    printf("vs-smart-add-log              : %s\n", 
            capabilities & WDC_DRIVE_CAP_SMART_LOG_MASK ? "Supported" : "Not Supported");
    printf("--C0 Log Page                 : %s\n",
            capabilities & WDC_DRIVE_CAP_C0_LOG_PAGE ? "Supported" : "Not Supported");
    printf("--C1 Log Page                 : %s\n",
            capabilities & WDC_DRIVE_CAP_C1_LOG_PAGE ? "Supported" : "Not Supported");
    printf("--C3 Log Page                 : %s\n",
            capabilities & WDC_DRIVE_CAP_C3_LOG_PAGE ? "Supported" : "Not Supported");
    printf("--CA Log Page                 : %s\n",
            capabilities & WDC_DRIVE_CAP_CA_LOG_PAGE ? "Supported" : "Not Supported");
    printf("--D0 Log Page                 : %s\n",
            capabilities & WDC_DRIVE_CAP_D0_LOG_PAGE ? "Supported" : "Not Supported");
    printf("clear-pcie-correctable-errors : %s\n", 
            capabilities & WDC_DRIVE_CAP_CLEAR_PCIE_MASK ? "Supported" : "Not Supported");
    printf("drive-essentials              : %s\n", 
            capabilities & WDC_DRIVE_CAP_DRIVE_ESSENTIALS ? "Supported" : "Not Supported");
    printf("get-drive-status              : %s\n", 
            capabilities & WDC_DRIVE_CAP_DRIVE_STATUS ? "Supported" : "Not Supported");
    printf("clear-assert-dump             : %s\n", 
            capabilities & WDC_DRIVE_CAP_CLEAR_ASSERT ? "Supported" : "Not Supported");
    printf("drive-resize                  : %s\n", 
            capabilities & WDC_DRIVE_CAP_RESIZE ? "Supported" : "Not Supported");
    printf("vs-fw-activate-history        : %s\n", 
            capabilities & WDC_DRIVE_CAP_FW_ACTIVATE_HISTORY_MASK ? "Supported" : "Not Supported");
    printf("clear-fw-activate-history     : %s\n", 
            capabilities & WDC_DRIVE_CAP_CLEAR_FW_ACT_HISTORY_MASK ? "Supported" : "Not Supported");
    printf("vs-telemetry-controller-option: %s\n", 
            capabilities & WDC_DRVIE_CAP_DISABLE_CTLR_TELE_LOG ? "Supported" : "Not Supported");
    printf("vs-error-reason-identifier    : %s\n", 
            capabilities & WDC_DRIVE_CAP_REASON_ID ? "Supported" : "Not Supported");
    printf("log-page-directory            : %s\n", 
            capabilities & WDC_DRIVE_CAP_LOG_PAGE_DIR ? "Supported" : "Not Supported");
    printf("namespace-resize              : %s\n", 
            capabilities & WDC_DRIVE_CAP_NS_RESIZE ? "Supported" : "Not Supported");
    printf("vs-drive-info                 : %s\n", 
            capabilities & WDC_DRIVE_CAP_INFO ? "Supported" : "Not Supported");
    printf("vs-temperature-stats          : %s\n", 
            capabilities & WDC_DRIVE_CAP_TEMP_STATS ? "Supported" : "Not Supported");
    printf("cloud-SSD-plugin-version      : %s\n",
            capabilities & WDC_DRIVE_CAP_CLOUD_SSD_VERSION ? "Supported" : "Not Supported");
    printf("vs-pcie-stats                 : %s\n",
            capabilities & WDC_DRIVE_CAP_PCIE_STATS ? "Supported" : "Not Supported");
    printf("get-error-recovery-log        : %s\n",
            capabilities & WDC_DRIVE_CAP_OCP_C1_LOG_PAGE ? "Supported" : "Not Supported");
    printf("get-dev-capabilities-log      : %s\n",
            capabilities & WDC_DRIVE_CAP_OCP_C4_LOG_PAGE ? "Supported" : "Not Supported");
    printf("get-unsupported-reqs-log      : %s\n",
            capabilities & WDC_DRIVE_CAP_OCP_C5_LOG_PAGE ? "Supported" : "Not Supported");
    printf("get-latency-monitor-log       : %s\n",
            capabilities & WDC_DRIVE_CAP_C3_LOG_PAGE ? "Supported" : "Not Supported");
    printf("cloud-boot-SSD-version        : %s\n",
            capabilities & WDC_DRIVE_CAP_CLOUD_BOOT_SSD_VERSION ? "Supported" : "Not Supported");
    printf("vs-cloud-log                  : %s\n",
            capabilities & WDC_DRIVE_CAP_CLOUD_LOG_PAGE ? "Supported" : "Not Supported");
    printf("vs-hw-rev-log                 : %s\n",
            capabilities & WDC_DRIVE_CAP_HW_REV_LOG_PAGE ? "Supported" : "Not Supported");
    printf("vs-device_waf                 : %s\n",
			capabilities & WDC_DRIVE_CAP_DEVICE_WAF ? "Supported" : "Not Supported");
   printf("capabilities                  : Supported\n");
    nvme_free_tree(r);
    dev_close(dev);
    return 0;
}

static int wdc_cloud_ssd_plugin_version(int argc, char **argv,
        struct command *command, struct plugin *plugin)
{
	const char *desc = "Get Cloud SSD Plugin Version command.";
	uint64_t capabilities = 0;
	struct nvme_dev *dev;
	nvme_root_t r;
	int ret;

	OPT_ARGS(opts) = {
		OPT_END()
	};

	ret = parse_and_open(&dev, argc, argv, desc, opts);
	if (ret)
		return ret;

	/* get capabilities */
	r = nvme_scan(NULL);
	wdc_check_device(r, dev);
	capabilities = wdc_get_drive_capabilities(r, dev);

	if ((capabilities & WDC_DRIVE_CAP_CLOUD_SSD_VERSION) == WDC_DRIVE_CAP_CLOUD_SSD_VERSION) {
	    /* print command and supported status */
	    printf("WDC Cloud SSD Plugin Version: 1.0\n");
	} else {
		fprintf(stderr, "ERROR : WDC: unsupported device for this command\n");
	}

	nvme_free_tree(r);
	dev_close(dev);
	return 0;
}

static int wdc_cloud_boot_SSD_version(int argc, char **argv,
        struct command *command, struct plugin *plugin)
{
	const char *desc = "Get Cloud Boot SSD Version command.";
	const char *namespace_id = "desired namespace id";
	nvme_root_t r;
	uint64_t capabilities = 0;
	struct nvme_dev *dev;
	int ret;
	int major = 0, minor = 0;
	__u8 *data = NULL;
	wdc_nvme_ext_smart_log *ext_smart_log_ptr = NULL;

	struct config {
		__u32 namespace_id;
	};

	struct config cfg = {
		.namespace_id = NVME_NSID_ALL,
	};

	OPT_ARGS(opts) = {
		OPT_UINT("namespace-id",      'n', &cfg.namespace_id,     namespace_id),
		OPT_END()
	};

	ret = parse_and_open(&dev, argc, argv, desc, opts);
	if (ret)
		return ret;

	/* get capabilities */
	r = nvme_scan(NULL);
	wdc_check_device(r, dev);
	capabilities = wdc_get_drive_capabilities(r, dev);

	if ((capabilities & WDC_DRIVE_CAP_CLOUD_BOOT_SSD_VERSION) == WDC_DRIVE_CAP_CLOUD_BOOT_SSD_VERSION) {
		/* Get the 0xC0 Smart Cloud Attribute V1 log data */
		ret = nvme_get_ext_smart_cloud_log(dev_fd(dev), &data, 0,
						   cfg.namespace_id);

		ext_smart_log_ptr = (wdc_nvme_ext_smart_log *)data;
		if (ret == 0) {
			major = le16_to_cpu(ext_smart_log_ptr->ext_smart_maj);
			minor = le16_to_cpu(ext_smart_log_ptr->ext_smart_min);

		    /* print the version returned from the log page */
		    printf("HyperScale Boot Version: %d.%d\n", major, minor);

		} else {
			fprintf(stderr, "ERROR : WDC : Unable to read Extended Smart/C0 Log Page data\n");
			ret = -1;
		}

		if (data)
			free(data);
	} else {
		fprintf(stderr, "ERROR : WDC: unsupported device for this command\n");
	}

	nvme_free_tree(r);
	dev_close(dev);
	return ret;
}

static int wdc_enc_get_log(int argc, char **argv, struct command *command,
        struct plugin *plugin)
{
	char *desc = "Get Enclosure Log.";
	char *file = "Output file pathname.";
	char *size = "Data retrieval transfer size.";
	char *log = "Enclosure Log Page ID.";
	struct nvme_dev *dev;
	FILE *output_fd;
	int xfer_size = 0;
	int len;
	int err = 0;

	struct config {
		char  *file;
		__u32 xfer_size;
		__u32 log_id;
	};

	struct config cfg = {
		.file = NULL,
		.xfer_size = 0,
		.log_id = 0xffffffff,
	};

	OPT_ARGS(opts) = {
		OPT_FILE("output-file",   'o', &cfg.file,  file),
		OPT_UINT("transfer-size", 's', &cfg.xfer_size, size),
		OPT_UINT("log-id",        'l', &cfg.log_id, log),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		goto ret;

	if (!wdc_enc_check_model(dev)) {
		err = -EINVAL;
		goto closed_fd;
	}

	if (cfg.log_id > 0xff) {
		fprintf(stderr, "Invalid log identifier: %d. Valid 0xd1, 0xd2, 0xd3, 0xd4, 0xe2, 0xe4\n", cfg.log_id);
		goto closed_fd;
	}

	if (cfg.xfer_size != 0) {
		xfer_size = cfg.xfer_size;
			if (!wdc_check_power_of_2(cfg.xfer_size)) {
				fprintf(stderr, "%s: ERROR : xfer-size (%d) must be a power of 2\n", __func__, cfg.xfer_size);
				err = -EINVAL;
				goto closed_fd;
			}
	}

	/* Log IDs are only for specific enclosures */
	if (cfg.log_id) {
		xfer_size = (xfer_size) ? xfer_size : WDC_NVME_ENC_LOG_SIZE_CHUNK;
		len = cfg.file==NULL?0:strlen(cfg.file);
		if (len > 0) {
			output_fd = fopen(cfg.file,"wb");
			if (output_fd == 0) {
				fprintf(stderr, "%s: ERROR : opening:%s : %s\n", __func__,cfg.file, strerror(errno));
				err = -EINVAL;
				goto closed_fd;
			}
		} else {
			output_fd = stdout;
		}
		if (cfg.log_id == WDC_ENC_NIC_CRASH_DUMP_ID_SLOT_1 || cfg.log_id == WDC_ENC_NIC_CRASH_DUMP_ID_SLOT_2
				|| cfg.log_id == WDC_ENC_NIC_CRASH_DUMP_ID_SLOT_3 || cfg.log_id == WDC_ENC_NIC_CRASH_DUMP_ID_SLOT_4) {
			fprintf(stderr, "args - sz:%x logid:%x of:%s\n",xfer_size,cfg.log_id,cfg.file);
			err = wdc_enc_get_nic_log(dev, cfg.log_id,
						  xfer_size,
						  WDC_NVME_ENC_NIC_LOG_SIZE,
						  output_fd);
		} else {
			fprintf(stderr, "args - sz:%x logid:%x of:%s\n",xfer_size,cfg.log_id,cfg.file);
			err = wdc_enc_submit_move_data(dev, NULL, 0,
						       xfer_size, output_fd,
						       cfg.log_id, 0, 0);
		}

		if (err == WDC_RESULT_NOT_AVAILABLE) {
			fprintf(stderr, "No Log/Crashdump available\n");
			err = 0;
		} else if (err) {
			fprintf(stderr, "ERROR:0x%x Failed to collect log-id:%x \n",err, cfg.log_id);
		}
	}
closed_fd:
	dev_close(dev);
ret:
	return err;
}

static int wdc_enc_submit_move_data(struct nvme_dev *dev, char *cmd, int len,
				    int xfer_size, FILE *out, int log_id,
				    int cdw14, int cdw15)
{
	struct timespec time;
	uint32_t response_size, more;
	int err;
	int handle;
	uint32_t offset = 0;
	char *buf;

	buf = (char *)malloc(sizeof(__u8) * xfer_size);
	if (buf == NULL) {
		fprintf(stderr, "%s: ERROR : malloc : %s\n", __func__, strerror(errno));
		return -1;
	}
	/* send something no matter what */
	cmd = (len) ? cmd : buf;
	len = (len) ? len : 0x20;

	struct nvme_passthru_cmd nvme_cmd = {
		.opcode     = WDC_NVME_ADMIN_ENC_MGMT_SND,
		.nsid       = 0,
		.addr       = (__u64)(uintptr_t) cmd,
		.data_len   = ((len + sizeof(uint32_t) - 1)/sizeof(uint32_t)) * sizeof(uint32_t),
		.cdw10      = len,
		.cdw12      = log_id,
		.cdw13      = 0,
		.cdw14      = cdw14,
		.cdw15      = cdw15,
	};

	clock_gettime(CLOCK_REALTIME, &time);
	srand(time.tv_nsec);
	handle = random();  /* Handle to associate send request with receive request */
	nvme_cmd.cdw11 = handle;

#ifdef WDC_NVME_CLI_DEBUG
	unsigned char *d = (unsigned char*) nvme_cmd.addr;
	unsigned char *md = (unsigned char*) nvme_cmd.metadata;
	printf("NVME_ADMIN_COMMAND:\n" \
		"opcode: 0x%02x, flags: 0x%02x, rsvd: 0x%04x, nsid: 0x%08x, cdw2: 0x%08x, cdw3: 0x%08x, " \
		"metadata_len: 0x%08x, data_len: 0x%08x, cdw10: 0x%08x, cdw11: 0x%08x, cdw12: 0x%08x, " \
		"cdw13: 0x%08x, cdw14: 0x%08x, cdw15: 0x%08x, timeout_ms: 0x%08x, result: 0x%08x, " \
		"metadata: %s, " \
		"data: %s\n", \
		nvme_cmd.opcode, nvme_cmd.flags, nvme_cmd.rsvd1, nvme_cmd.nsid, nvme_cmd.cdw2, nvme_cmd.cdw3, \
		nvme_cmd.metadata_len, nvme_cmd.data_len, nvme_cmd.cdw10, nvme_cmd.cdw11, nvme_cmd.cdw12, \
		nvme_cmd.cdw13, nvme_cmd.cdw14, nvme_cmd.cdw15, nvme_cmd.timeout_ms, nvme_cmd.result,
		md, \
		d);
#endif
	nvme_cmd.result = 0;
	err = nvme_submit_admin_passthru(dev_fd(dev), &nvme_cmd, NULL);
	if (nvme_status_equals(err, NVME_STATUS_TYPE_NVME, NVME_SC_INTERNAL)) {
		fprintf(stderr, "%s: WARNING : WDC : No log ID:x%x available\n",
			__func__, log_id);
	}
	else if (err != 0) {
		fprintf(stderr, "%s: ERROR : WDC : NVMe Snd Mgmt\n", __func__);
		nvme_show_status(err);
	} else {
		if (nvme_cmd.result == WDC_RESULT_NOT_AVAILABLE)
		{
			free(buf);
			return WDC_RESULT_NOT_AVAILABLE;
		}

		do {
			/* Sent request, now go retrieve response */
			nvme_cmd.flags = 0;
			nvme_cmd.opcode = WDC_NVME_ADMIN_ENC_MGMT_RCV;
			nvme_cmd.addr = (__u64)(uintptr_t) buf;
			nvme_cmd.data_len = xfer_size;
			nvme_cmd.cdw10 = xfer_size / sizeof(uint32_t);
			nvme_cmd.cdw11 = handle;
			nvme_cmd.cdw12 = log_id;
			nvme_cmd.cdw13 = offset / sizeof(uint32_t);
			nvme_cmd.cdw14 = cdw14;
			nvme_cmd.cdw15 = cdw15;
			nvme_cmd.result = 0;  /* returned result !=0 indicates more data available */
			err = nvme_submit_admin_passthru(dev_fd(dev),
							 &nvme_cmd, NULL);
			if (err != 0) {
				more = 0;
				fprintf(stderr, "%s: ERROR : WDC : NVMe Rcv Mgmt ", __func__);
				nvme_show_status(err);
			} else {
				more = nvme_cmd.result & WDC_RESULT_MORE_DATA;
				response_size = nvme_cmd.result & ~WDC_RESULT_MORE_DATA;
				fwrite(buf, response_size, 1, out);
				offset += response_size;
				if (more && (response_size & (sizeof(uint32_t)-1))) {
					fprintf(stderr, "%s: ERROR : WDC : NVMe Rcv Mgmt response size:x%x not LW aligned\n",
						__func__, response_size);
				}
			}
		} while (more);
	}

	free(buf);
	return err;
}

static int wdc_enc_get_nic_log(struct nvme_dev *dev, __u8 log_id, __u32 xfer_size, __u32 data_len, FILE *out)
{
	__u8 *dump_data;
	__u32 curr_data_offset, curr_data_len;
	int i, ret = -1;
	struct nvme_passthru_cmd admin_cmd;
	__u32 dump_length = data_len;
	__u32 numd;
	__u16 numdu, numdl;

	dump_data = (__u8 *) malloc(sizeof (__u8) * dump_length);
	if (dump_data == NULL) {
		fprintf(stderr, "%s: ERROR : malloc : %s\n",__func__, strerror(errno));
		return -1;
	}
	memset(dump_data, 0, sizeof (__u8) * dump_length);
	memset(&admin_cmd, 0, sizeof (struct nvme_passthru_cmd));
	curr_data_offset = 0;
	curr_data_len = xfer_size;
	i = 0;

	numd = (curr_data_len >> 2) - 1;
	numdu = numd >> 16;
	numdl = numd & 0xffff;
	admin_cmd.opcode = nvme_admin_get_log_page;
	admin_cmd.nsid = curr_data_offset;
	admin_cmd.addr = (__u64)(uintptr_t) dump_data;
	admin_cmd.data_len = curr_data_len;
	admin_cmd.cdw10 = log_id | (numdl << 16);
	admin_cmd.cdw11 = numdu;

	while (curr_data_offset < data_len) {
#ifdef WDC_NVME_CLI_DEBUG
		fprintf(stderr, "nsid 0x%08x addr 0x%08llx, data_len 0x%08x, cdw10 0x%08x, cdw11 0x%08x, cdw12 0x%08x, cdw13 0x%08x, cdw14 0x%08x \n", admin_cmd.nsid, admin_cmd.addr, admin_cmd.data_len, admin_cmd.cdw10, admin_cmd.cdw11, admin_cmd.cdw12, admin_cmd.cdw13, admin_cmd.cdw14);
#endif
		ret = nvme_submit_admin_passthru(dev_fd(dev), &admin_cmd,
						 NULL);
		if (ret != 0) {
			nvme_show_status(ret);
			fprintf(stderr, "%s: ERROR : WDC : Get chunk %d, size = 0x%x, offset = 0x%x, addr = 0x%lx\n",
				 __func__, i, admin_cmd.data_len, curr_data_offset, (long unsigned int)admin_cmd.addr);
			break;
		}

		if ((curr_data_offset + xfer_size) <= data_len)
			curr_data_len = xfer_size;
		else
			curr_data_len = data_len - curr_data_offset;   /* last transfer */

		curr_data_offset += curr_data_len;
		numd = (curr_data_len >> 2) - 1;
		numdu = numd >> 16;
		numdl = numd & 0xffff;
		admin_cmd.addr = (__u64)(uintptr_t)dump_data + (__u64)curr_data_offset;
		admin_cmd.nsid = curr_data_offset;
		admin_cmd.data_len = curr_data_len;
		admin_cmd.cdw10 = log_id | (numdl << 16);
		admin_cmd.cdw11 = numdu;
		i++;
	}
	fwrite(dump_data, data_len, 1, out);
	free(dump_data);
	return ret;
}
070701015D6E6F000081A4000003E80000006400000001642C0FB600000C93000000000000004A00000000000000000000002000000000nvme-cli/plugins/wdc/wdc-nvme.h   // SPDX-License-Identifier: GPL-2.0-or-later
#undef CMD_INC_FILE
#define CMD_INC_FILE plugins/wdc/wdc-nvme

#if !defined(WDC_NVME) || defined(CMD_HEADER_MULTI_READ)
#define WDC_NVME

#define WDC_PLUGIN_VERSION   "2.3.1"
#include "cmd.h"

PLUGIN(NAME("wdc", "Western Digital vendor specific extensions", WDC_PLUGIN_VERSION),
	COMMAND_LIST(
		ENTRY("cap-diag", "WDC Capture-Diagnostics", wdc_cap_diag)
		ENTRY("drive-log", "WDC Drive Log", wdc_drive_log)
		ENTRY("get-crash-dump", "WDC Crash Dump", wdc_get_crash_dump)
		ENTRY("get-pfail-dump", "WDC Pfail Dump", wdc_get_pfail_dump)
		ENTRY("id-ctrl", "WDC identify controller", wdc_id_ctrl)
		ENTRY("purge", "WDC Purge", wdc_purge)
		ENTRY("purge-monitor", "WDC Purge Monitor", wdc_purge_monitor)
		ENTRY("vs-internal-log", "WDC Internal Firmware Log", wdc_vs_internal_fw_log)
		ENTRY("vs-nand-stats", "WDC NAND Statistics", wdc_vs_nand_stats)
		ENTRY("vs-smart-add-log", "WDC Additional Smart Log", wdc_vs_smart_add_log)
		ENTRY("clear-pcie-correctable-errors", "WDC Clear PCIe Correctable Error Count", wdc_clear_pcie_correctable_errors)
		ENTRY("drive-essentials", "WDC Drive Essentials", wdc_drive_essentials)
		ENTRY("get-drive-status", "WDC Get Drive Status", wdc_drive_status)
		ENTRY("clear-assert-dump", "WDC Clear Assert Dump", wdc_clear_assert_dump)
		ENTRY("drive-resize", "WDC Drive Resize", wdc_drive_resize)
		ENTRY("vs-fw-activate-history", "WDC Get FW Activate History", wdc_vs_fw_activate_history)
		ENTRY("clear-fw-activate-history", "WDC Clear FW Activate History", wdc_clear_fw_activate_history)
		ENTRY("enc-get-log", "WDC Get Enclosure Log", wdc_enc_get_log)
		ENTRY("vs-telemetry-controller-option", "WDC Enable/Disable Controller Initiated Telemetry Log", wdc_vs_telemetry_controller_option)
		ENTRY("vs-error-reason-identifier", "WDC Telemetry Reason Identifier", wdc_reason_identifier)
		ENTRY("log-page-directory", "WDC Get Log Page Directory", wdc_log_page_directory)
		ENTRY("namespace-resize", "WDC NamespaceDrive Resize", wdc_namespace_resize)
		ENTRY("vs-drive-info", "WDC Get Drive Info", wdc_vs_drive_info)
		ENTRY("vs-temperature-stats", "WDC Get Temperature Stats", wdc_vs_temperature_stats)
		ENTRY("capabilities", "WDC Device Capabilities", wdc_capabilities)
		ENTRY("cloud-SSD-plugin-version", "WDC Cloud SSD Plugin Version", wdc_cloud_ssd_plugin_version)
		ENTRY("vs-pcie-stats", "WDC VS PCIE Statistics", wdc_vs_pcie_stats)
		ENTRY("get-latency-monitor-log", "WDC Get Latency Monitor Log Page", wdc_get_latency_monitor_log)
		ENTRY("get-error-recovery-log", "WDC Get Error Recovery Log Page", wdc_get_error_recovery_log)
		ENTRY("get-dev-capabilities-log", "WDC Get Device Capabilities Log Page", wdc_get_dev_capabilities_log)
		ENTRY("get-unsupported-reqs-log", "WDC Get Unsupported Requirements Log Page", wdc_get_unsupported_reqs_log)
		ENTRY("cloud-boot-SSD-version", "WDC Get the Cloud Boot SSD Version", wdc_cloud_boot_SSD_version)
		ENTRY("vs-cloud-log", "WDC Get the Cloud Log Page", wdc_vs_cloud_log)
		ENTRY("vs-hw-rev-log", "WDC Get the Hardware Revision Log Page", wdc_vs_hw_rev_log)
		ENTRY("vs-device-waf", "WDC Calculate Device Write Amplication Factor", wdc_vs_device_waf)
	)
);

#endif

#include "define_cmd.h"
 070701015D6C6E000081A4000003E80000006400000001642C0FB500001898000000000000004A00000000000000000000002200000000nvme-cli/plugins/ymtc/ymtc-nvme.c // SPDX-License-Identifier: GPL-2.0-or-later
#include <fcntl.h>
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

#include "nvme.h"
#include "libnvme.h"
#include "plugin.h"
#include "linux/types.h"
#include "nvme-print.h"

#define CREATE_CMD
#include "ymtc-nvme.h"
#include "ymtc-utils.h"

static void get_ymtc_smart_info(struct nvme_ymtc_smart_log *smart, int index, u8 *nm_val, u8 *raw_val)
{
    memcpy(nm_val, smart->itemArr[index].nmVal, NM_SIZE);
    memcpy(raw_val, smart->itemArr[index].rawVal, RAW_SIZE);
}

static int show_ymtc_smart_log(struct nvme_dev *dev, __u32 nsid,
			       struct nvme_ymtc_smart_log *smart)
{
    struct nvme_id_ctrl ctrl;
    char fw_ver[10];
    int err = 0;

    u8 *nm = malloc(NM_SIZE * sizeof(u8));
    u8 *raw = malloc(RAW_SIZE * sizeof(u8));

    if (!nm) {
        if (raw)
            free(raw);
        return -1;
    }
    if (!raw) {
        free(nm);
        return -1;
    }
    err = nvme_identify_ctrl(dev_fd(dev), &ctrl);
    if (err) {
        free(nm);
        free(raw);
        return err;
    }

    snprintf(fw_ver, sizeof(fw_ver), "%c.%c%c.%c%c%c%c",
        ctrl.fr[0], ctrl.fr[1], ctrl.fr[2], ctrl.fr[3],
        ctrl.fr[4], ctrl.fr[5], ctrl.fr[6]);

    /* Table Title */
    printf("Additional Smart Log for NVME device:%s namespace-id:%x\n",
	   dev->name, nsid);
    /* Clumn Name*/
    printf("key                               normalized raw\n");
    /* 00 SI_VD_PROGRAM_FAIL */
    get_ymtc_smart_info(smart, SI_VD_PROGRAM_FAIL, nm, raw);
    printf("program_fail_count              : %3d%%       %"PRIu64"\n", *nm, int48_to_long(raw));
    /* 01 SI_VD_ERASE_FAIL */
    get_ymtc_smart_info(smart, SI_VD_ERASE_FAIL, nm, raw);
    printf("erase_fail_count                : %3d%%       %"PRIu64"\n", *nm, int48_to_long(raw));
    /* 02 SI_VD_WEARLEVELING_COUNT */
    get_ymtc_smart_info(smart, SI_VD_WEARLEVELING_COUNT, nm, raw);
    printf("wear_leveling                   : %3d%%       min: %u, max: %u, avg: %u\n", *nm,
        *(uint16_t *)raw, *(uint16_t *)(raw+2), *(uint16_t *)(raw+4));
    /* 03 SI_VD_E2E_DECTECTION_COUNT */
    get_ymtc_smart_info(smart, SI_VD_E2E_DECTECTION_COUNT, nm, raw);
    printf("end_to_end_error_detection_count: %3d%%       %"PRIu64"\n", *nm, int48_to_long(raw));
    /* 04 SI_VD_PCIE_CRC_ERR_COUNT */
    get_ymtc_smart_info(smart, SI_VD_PCIE_CRC_ERR_COUNT, nm, raw);
    printf("crc_error_count                 : %3d%%       %"PRIu32"\n", *nm, *(uint32_t *)raw);
    /* 08 SI_VD_THERMAL_THROTTLE_STATUS */
    get_ymtc_smart_info(smart, SI_VD_THERMAL_THROTTLE_STATUS, nm, raw);
    printf("thermal_throttle_status         : %3d%%       %d%%, cnt: %"PRIu32"\n", *nm,
        *raw, *(uint32_t *)(raw+1));
    /* 11 SI_VD_TOTAL_WRITE */
    get_ymtc_smart_info(smart, SI_VD_TOTAL_WRITE, nm, raw);
    printf("nand_bytes_written              : %3d%%       sectors: %"PRIu64"\n", *nm, int48_to_long(raw));
    /* 12 SI_VD_HOST_WRITE */
    get_ymtc_smart_info(smart, SI_VD_HOST_WRITE, nm, raw);
    printf("host_bytes_written              : %3d%%       sectors: %"PRIu64"\n", *nm, int48_to_long(raw));
    /* 14 SI_VD_TOTAL_READ */
    get_ymtc_smart_info(smart, SI_VD_TOTAL_READ, nm, raw);
    printf("nand_bytes_read                 : %3d%%       %"PRIu64"\n", *nm, int48_to_long(raw));
    /* 15 SI_VD_TEMPT_SINCE_BORN */
    get_ymtc_smart_info(smart, SI_VD_TEMPT_SINCE_BORN, nm, raw);
    printf("tempt_since_born                : %3d%%       max: %u, min: %u, curr: %u\n",  *nm,
        *(uint16_t *)raw-273, *(uint16_t *)(raw+2)-273, *(int16_t *)(raw+4)-273);
    /* 16 SI_VD_POWER_CONSUMPTION */
    get_ymtc_smart_info(smart, SI_VD_POWER_CONSUMPTION, nm, raw);
    printf("power_consumption               : %3d%%       max: %u, min: %u, curr: %u\n",  *nm,
        *(uint16_t *)raw, *(uint16_t *)(raw+2), *(uint16_t *)(raw+4));
    /* 17 SI_VD_TEMPT_SINCE_BOOTUP */
    get_ymtc_smart_info(smart, SI_VD_TEMPT_SINCE_BOOTUP, nm, raw);
    printf("tempt_since_bootup              : %3d%%       max: %u, min: %u, curr: %u\n",  *nm,
        *(uint16_t *)raw-273, *(uint16_t *)(raw+2)-273, *(uint16_t *)(raw+4)-273);
    /* 18 SI_VD_POWER_LOSS_PROTECTION */
    get_ymtc_smart_info(smart, SI_VD_POWER_LOSS_PROTECTION, nm, raw);
    printf("power_loss_protection           : %3d%%       %"PRIu64"\n", *nm, int48_to_long(raw));
    /* 19 SI_VD_READ_FAIL */
    get_ymtc_smart_info(smart, SI_VD_READ_FAIL, nm, raw);
    printf("read_fail                       : %3d%%       %"PRIu64"\n", *nm, int48_to_long(raw));
    /* 20 SI_VD_THERMAL_THROTTLE_TIME */
    get_ymtc_smart_info(smart, SI_VD_THERMAL_THROTTLE_TIME, nm, raw);
    printf("thermal_throttle_time           : %3d%%       %u, time: %"PRIu32"\n", *nm,
		*raw, *(uint32_t *)(raw+1));
    /* 21 SI_VD_FLASH_MEDIA_ERROR */
    get_ymtc_smart_info(smart, SI_VD_FLASH_MEDIA_ERROR, nm, raw);
    printf("flash_error_media_count         : %3d%%       %"PRIu64"\n", *nm, int48_to_long(raw));

    free(nm);
    free(raw);

    return err;
}

static int get_additional_smart_log(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
    struct nvme_ymtc_smart_log smart_log;
    char *desc = "Get Ymtc vendor specific additional smart log (optionally, "\
              "for the specified namespace), and show it.";
    const char *namespace = "(optional) desired namespace";
    const char *raw = "dump output in binary format";
    struct nvme_dev *dev;
    struct config {
        __u32 namespace_id;
        bool  raw_binary;
    };
    int err;

    struct config cfg = {
        .namespace_id = NVME_NSID_ALL,
    };

    OPT_ARGS(opts) = {
        OPT_UINT("namespace-id", 'n', &cfg.namespace_id,  namespace),
        OPT_FLAG("raw-binary",   'b', &cfg.raw_binary,    raw),
        OPT_END()
    };

    err = parse_and_open(&dev, argc, argv, desc, opts);
    if (err)
        return err;

    err = nvme_get_nsid_log(dev_fd(dev), false, 0xca, cfg.namespace_id,
			    sizeof(smart_log), &smart_log);
    if (!err) {
        if (!cfg.raw_binary)
            err = show_ymtc_smart_log(dev, cfg.namespace_id, &smart_log);
        else
            d_raw((unsigned char *)&smart_log, sizeof(smart_log));
    }
    if (err > 0)
        nvme_show_status(err);

    dev_close(dev);
    return err;
}
070701015D6C6F000081A4000003E80000006400000001642C0FB500000219000000000000004A00000000000000000000002200000000nvme-cli/plugins/ymtc/ymtc-nvme.h /* SPDX-License-Identifier: GPL-2.0-or-later */
#undef CMD_INC_FILE
#define CMD_INC_FILE plugins/ymtc/ymtc-nvme

#if !defined(YMTC_NVME) || defined(CMD_HEADER_MULTI_READ)
#define YMTC_NVME

#include "cmd.h"
#include "common.h"

#include <ctype.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>

PLUGIN(NAME("ymtc", "Ymtc vendor specific extensions", NVME_VERSION),
    COMMAND_LIST(
        ENTRY("smart-log-add", "Retrieve Ymtc SMART Log, show it", get_additional_smart_log)
    )
);

#endif

#include "define_cmd.h"

   070701015D6C70000081A4000003E80000006400000001642C0FB500000B9C000000000000004A00000000000000000000002300000000nvme-cli/plugins/ymtc/ymtc-utils.h    /* SPDX-License-Identifier: GPL-2.0-or-later */
#ifndef __YMTC_UTILS_H__
#define __YMTC_UTILS_H__

#define SMART_INFO_SIZE     4096

#define ID_SIZE                 3
#define NM_SIZE                 2
#define RAW_SIZE                7

typedef unsigned char           u8;

/* Additional smart external ID */
#define SI_VD_PROGRAM_FAIL_ID                        0xAB
#define SI_VD_ERASE_FAIL_ID                          0xAC
#define SI_VD_WEARLEVELING_COUNT_ID                  0xAD
#define SI_VD_E2E_DECTECTION_COUNT_ID                0xB8
#define SI_VD_PCIE_CRC_ERR_COUNT_ID                  0xC7
#define SI_VD_TIMED_WORKLOAD_MEDIA_WEAR_ID           0xE2
#define SI_VD_TIMED_WORKLOAD_HOST_READ_ID            0xE3
#define SI_VD_TIMED_WORKLOAD_TIMER_ID                0xE4
#define SI_VD_THERMAL_THROTTLE_STATUS_ID             0xEA
#define SI_VD_RETRY_BUFF_OVERFLOW_COUNT_ID           0xF0
#define SI_VD_PLL_LOCK_LOSS_COUNT_ID                 0xF3
#define SI_VD_TOTAL_WRITE_ID                         0xF4
#define SI_VD_HOST_WRITE_ID                          0xF5
#define SI_VD_SYSTEM_AREA_LIFE_LEFT_ID               0xF6
#define SI_VD_TOTAL_READ_ID                          0xFA
#define SI_VD_TEMPT_SINCE_BORN_ID                    0xE7
#define SI_VD_POWER_CONSUMPTION_ID                   0xE8
#define SI_VD_TEMPT_SINCE_BOOTUP_ID                  0xAF
#define SI_VD_POWER_LOSS_PROTECTION_ID               0xEC
#define SI_VD_READ_FAIL_ID                           0xF2
#define SI_VD_THERMAL_THROTTLE_TIME_ID               0xEB
#define SI_VD_FLASH_MEDIA_ERROR_ID                   0xED

/* Addtional smart internal ID */
typedef enum
{
    /* smart attr following intel */
    SI_VD_PROGRAM_FAIL = 0, /* 0xAB */
    SI_VD_ERASE_FAIL = 1,   /* 0xAC */
    SI_VD_WEARLEVELING_COUNT = 2,/* 0xAD */
    SI_VD_E2E_DECTECTION_COUNT = 3, /* 0xB8 */
    SI_VD_PCIE_CRC_ERR_COUNT = 4, /* 0xC7, 2 port data in one attribute */
    SI_VD_THERMAL_THROTTLE_STATUS = 8, /* 0xEA */
    SI_VD_TOTAL_WRITE = 11, /* 0xF4, unit is 32MiB */
    SI_VD_HOST_WRITE = 12, /* 0xF5, unit is 32MiB */
    SI_VD_TOTAL_READ = 14, /* 0xFA, unit is 32MiB */

    /* smart attr self defined */
    SI_VD_TEMPT_SINCE_BORN = 15, /* 0xE7 */
    SI_VD_POWER_CONSUMPTION = 16, /* 0xE8 */
    SI_VD_TEMPT_SINCE_BOOTUP = 17, /* 0xAF */
    SI_VD_POWER_LOSS_PROTECTION = 18, /* 0xEC */
    SI_VD_READ_FAIL = 19, /* 0xF2 */
    SI_VD_THERMAL_THROTTLE_TIME = 20, /* 0xEB */
    SI_VD_FLASH_MEDIA_ERROR = 21, /* 0xED */
    NR_SMART_ITEMS,
} si_vendor_smart_item_e;

// Intel Format
struct nvme_ymtc_smart_log_item
{
    /* Item identifier */
    u8 id[ID_SIZE];
    /* Normalized value or percentage. In the range from 0 to 100. */
    u8 nmVal[NM_SIZE];
    /* raw value */
    u8 rawVal[RAW_SIZE];
};

struct nvme_ymtc_smart_log
{
    struct nvme_ymtc_smart_log_item itemArr[NR_SMART_ITEMS];

    u8 resv[SMART_INFO_SIZE - sizeof(struct nvme_ymtc_smart_log_item) * NR_SMART_ITEMS];
};

#endif // __YMTC_UTILS_H__

070701015D6C72000081A4000003E80000006400000001642C0FB500007A7B000000000000004A00000000000000000000001B00000000nvme-cli/plugins/zns/zns.c    // SPDX-License-Identifier: GPL-2.0-or-later
#include <fcntl.h>
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <inttypes.h>
#include <linux/fs.h>
#include <sys/stat.h>

#include "common.h"
#include "nvme.h"
#include "libnvme.h"
#include "nvme-print.h"

#define CREATE_CMD
#include "zns.h"

static const char *namespace_id = "Namespace identifier to use";
static const char dash[100] = { [0 ... 99] = '-' };

static int detect_zns(nvme_ns_t ns, int *out_supported)
{
	int err = 0;
	char *zoned;

	*out_supported = 0;

	zoned = nvme_get_attr(nvme_ns_get_sysfs_dir(ns), "queue/zoned");
	if (!zoned) {
		*out_supported = 0;
		return err;
	}

	*out_supported = strcmp("host-managed", zoned) == 0;
	free(zoned);

	return err;
}

static int print_zns_list_ns(nvme_ns_t ns)
{
	int supported;
	int err = 0;

	err = detect_zns(ns, &supported);
	if (err) {
		perror("Failed to enumerate namespace");
		return err;
	}

	if (supported) {
		nvme_show_list_item(ns);
	}

	return err;
}

static int print_zns_list(nvme_root_t nvme_root)
{
	int err = 0;
	nvme_host_t h;
	nvme_subsystem_t s;
	nvme_ctrl_t c;
	nvme_ns_t n;
	nvme_for_each_host(nvme_root, h)
	{
		nvme_for_each_subsystem(h, s)
		{
			nvme_subsystem_for_each_ns(s, n)
			{
				err = print_zns_list_ns(n);
				if (err)
					return err;
			}

			nvme_subsystem_for_each_ctrl(s, c)
			{
				nvme_ctrl_for_each_ns(c, n)
				{
					err = print_zns_list_ns(n);
					if (err)
						return err;
				}
			}
		}
	}

	return err;
}

static int list(int argc, char **argv, struct command *cmd,
		struct plugin *plugin)
{
	int err = 0;
	nvme_root_t nvme_root;

	printf("%-21s %-20s %-40s %-9s %-26s %-16s %-8s\n", "Node", "SN",
	       "Model", "Namespace", "Usage", "Format", "FW Rev");
	printf("%-.21s %-.20s %-.40s %-.9s %-.26s %-.16s %-.8s\n", dash, dash,
	       dash, dash, dash, dash, dash);

	nvme_root = nvme_scan(NULL);
	if (nvme_root) {
		err = print_zns_list(nvme_root);
		nvme_free_tree(nvme_root);
	} else {
		fprintf(stderr, "Failed to scan nvme subsystems\n");
		err = -errno;
	}

	return err;
}

static int id_ctrl(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	const char *desc = "Send an ZNS specific Identify Controller command to "\
		"the given device and report information about the specified "\
		"controller in various formats.";

	enum nvme_print_flags flags;
	struct nvme_zns_id_ctrl ctrl;
	struct nvme_dev *dev;
	int err = -1;

	struct config {
		char *output_format;
	};

	struct config cfg = {
		.output_format = "normal",
	};

	OPT_ARGS(opts) = {
		OPT_FMT("output-format", 'o', &cfg.output_format, output_format),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		return errno;

	err = flags = validate_output_format(cfg.output_format);
	if (flags < 0)
		goto close_fd;

	err = nvme_zns_identify_ctrl(dev_fd(dev), &ctrl);
	if (!err)
		nvme_show_zns_id_ctrl(&ctrl, flags);
	else if (err > 0)
		nvme_show_status(err);
	else
		perror("zns identify controller");
close_fd:
	dev_close(dev);
	return err;
}

static int id_ns(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	const char *desc = "Send an ZNS specific Identify Namespace command to "\
		"the given device and report information about the specified "\
		"namespace in varios formats.";
	const char *vendor_specific = "dump binary vendor fields";
	const char *human_readable = "show identify in readable format";

	enum nvme_print_flags flags;
	struct nvme_zns_id_ns ns;
	struct nvme_id_ns id_ns;
	struct nvme_dev *dev;
	int err = -1;

	struct config {
		char *output_format;
		__u32 namespace_id;
		bool human_readable;
		bool vendor_specific;
	};

	struct config cfg = {
		.output_format = "normal",
	};

	OPT_ARGS(opts) = {
		OPT_UINT("namespace-id", 'n', &cfg.namespace_id,  namespace_id),
		OPT_FLAG("vendor-specific", 'v', &cfg.vendor_specific, vendor_specific),
		OPT_FMT("output-format", 'o', &cfg.output_format, output_format),
		OPT_FLAG("human-readable", 'H', &cfg.human_readable, human_readable),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		return errno;

	flags = validate_output_format(cfg.output_format);
	if (flags < 0)
		goto close_fd;
	if (cfg.vendor_specific)
		flags |= VS;
	if (cfg.human_readable)
		flags |= VERBOSE;

	if (!cfg.namespace_id) {
		err = nvme_get_nsid(dev_fd(dev), &cfg.namespace_id);
		if (err < 0) {
			perror("get-namespace-id");
			goto close_fd;
		}
	}

	err = nvme_identify_ns(dev_fd(dev), cfg.namespace_id, &id_ns);
	if (err) {
		nvme_show_status(err);
		goto close_fd;
	}

	err = nvme_zns_identify_ns(dev_fd(dev), cfg.namespace_id, &ns);
	if (!err)
		nvme_show_zns_id_ns(&ns, &id_ns, flags);
	else if (err > 0)
		nvme_show_status(err);
	else
		perror("zns identify namespace");
close_fd:
	dev_close(dev);
	return err;
}

static int zns_mgmt_send(int argc, char **argv, struct command *cmd, struct plugin *plugin,
	const char *desc, enum nvme_zns_send_action zsa)
{
	const char *zslba = "starting LBA of the zone for this command";
	const char *select_all = "send command to all zones";
	const char *timeout = "timeout value, in milliseconds";
	struct nvme_dev *dev;
	int err, zcapc = 0;
	char *command;
	__u32 result;

	struct config {
		__u64	zslba;
		__u32	namespace_id;
		bool	select_all;
		__u32	timeout;
	};

	struct config cfg = {};

	OPT_ARGS(opts) = {
		OPT_UINT("namespace-id", 'n', &cfg.namespace_id,  namespace_id),
		OPT_SUFFIX("start-lba",  's', &cfg.zslba,         zslba),
		OPT_FLAG("select-all",   'a', &cfg.select_all,    select_all),
		OPT_UINT("timeout",      't', &cfg.timeout,       timeout),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		goto ret;

	err = asprintf(&command, "%s-%s", plugin->name, cmd->name);
	if (err < 0)
		goto close_dev;

	if (!cfg.namespace_id) {
		err = nvme_get_nsid(dev_fd(dev), &cfg.namespace_id);
		if (err < 0) {
			perror("get-namespace-id");
			goto free;
		}
	}

	struct nvme_zns_mgmt_send_args args = {
		.args_size	= sizeof(args),
		.fd		= dev_fd(dev),
		.nsid		= cfg.namespace_id,
		.slba		= cfg.zslba,
		.zsa		= zsa,
		.select_all	= cfg.select_all,
		.zsaso		= 0,
		.data_len	= 0,
		.data		= NULL,
		.timeout	= cfg.timeout,
		.result		= &result,
	};
	err = nvme_zns_mgmt_send(&args);
	if (!err) {
		if (zsa == NVME_ZNS_ZSA_RESET)
			zcapc = result & 0x1;

		printf("%s: Success, action:%d zone:%"PRIx64" all:%d zcapc:%u nsid:%d\n",
			command, zsa, (uint64_t)cfg.zslba, (int)cfg.select_all,
			zcapc, cfg.namespace_id);
	}
	else if (err > 0)
		nvme_show_status(err);
	else
		perror(desc);
free:
	free(command);
close_dev:
	dev_close(dev);
ret:
	return err;
}

static int get_zdes_bytes(int fd, __u32 nsid)
{
	struct nvme_zns_id_ns ns;
	struct nvme_id_ns id_ns;
	__u8 lbaf;
	int err;

	err = nvme_identify_ns(fd, nsid, &id_ns);
	if (err > 0) {
		nvme_show_status(err);
		return -1;
	} else if (err < 0) {
		perror("identify namespace");
		return -1;
	}

	err = nvme_zns_identify_ns(fd, nsid,  &ns);
	if (err > 0) {
		nvme_show_status(err);
		return -1;
	} else if (err < 0) {
		perror("zns identify namespace");
		return -1;
	}

	nvme_id_ns_flbas_to_lbaf_inuse(id_ns.flbas, &lbaf);
	return ns.lbafe[lbaf].zdes << 6;
}

static int zone_mgmt_send(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	const char *desc = "Zone Management Send";
	const char *zslba = "starting LBA of the zone for this command"\
						"(for flush action, last lba to flush)";
	const char *zsaso = "Zone Send Action Specific Option";
	const char *select_all = "send command to all zones";
	const char *zsa = "zone send action";
	const char *data_len = "buffer length if data required";
	const char *data = "optional file for data (default stdin)";
	const char *timeout = "timeout value, in milliseconds";

	int ffd = STDIN_FILENO, err = -1;
	struct nvme_dev *dev;
	void *buf = NULL;

	struct config {
		__u64	zslba;
		__u32	namespace_id;
		bool	zsaso;
		bool	select_all;
		__u8	zsa;
		int   	data_len;
		char   *file;
		__u32	timeout;
	};

	struct config cfg = {};

	OPT_ARGS(opts) = {
		OPT_UINT("namespace-id", 'n', &cfg.namespace_id,  namespace_id),
		OPT_SUFFIX("start-lba",  's', &cfg.zslba,         zslba),
		OPT_FLAG("zsaso",        'o', &cfg.zsaso,         zsaso),
		OPT_FLAG("select-all",   'a', &cfg.select_all,    select_all),
		OPT_BYTE("zsa",          'z', &cfg.zsa,           zsa),
		OPT_UINT("data-len",     'l', &cfg.data_len,      data_len),
		OPT_FILE("data",         'd', &cfg.file,          data),
		OPT_UINT("timeout",      't', &cfg.timeout,       timeout),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		return errno;

	if (!cfg.namespace_id) {
		err = nvme_get_nsid(dev_fd(dev), &cfg.namespace_id);
		if (err < 0) {
			perror("get-namespace-id");
			goto close_dev;
		}
	}

	if (!cfg.zsa) {
		fprintf(stderr, "zone send action must be specified\n");
		err = -EINVAL;
		goto close_dev;
	}

	if (cfg.zsa == NVME_ZNS_ZSA_SET_DESC_EXT) {
		if(!cfg.data_len) {
			int data_len = get_zdes_bytes(dev_fd(dev),
						      cfg.namespace_id);

			if (data_len == 0) {
				fprintf(stderr, 
					"Zone Descriptor Extensions are not supported\n");
				goto close_dev;
			} else if (data_len < 0) {
				err = data_len;
				goto close_dev;
			}
			cfg.data_len = data_len;
		}
		if (posix_memalign(&buf, getpagesize(), cfg.data_len)) {
			fprintf(stderr, "can not allocate feature payload\n");
			goto close_dev;
		}
		memset(buf, 0, cfg.data_len);

		if (cfg.file) {
			ffd = open(cfg.file, O_RDONLY);
			if (ffd < 0) {
				perror(cfg.file);
				goto free;
			}
		}

		err = read(ffd, (void *)buf, cfg.data_len);
		if (err < 0) {
			perror("read");
			goto close_ffd;
		}
	} else {
		if (cfg.file || cfg.data_len) {
			fprintf(stderr, 
			"data, data_len only valid with set extended descriptor\n");
			err = -EINVAL;
			goto close_dev;
		}
	}

	struct nvme_zns_mgmt_send_args args = {
		.args_size	= sizeof(args),
		.fd		= dev_fd(dev),
		.nsid		= cfg.namespace_id,
		.slba		= cfg.zslba,
		.zsa		= cfg.zsa,
		.select_all	= cfg.select_all,
		.zsaso		= cfg.zsaso,
		.data_len	= cfg.data_len,
		.data		= buf,
		.timeout	= cfg.timeout,
		.result		= NULL,
	};
	err = nvme_zns_mgmt_send(&args);
	if (!err)
		printf("zone-mgmt-send: Success, action:%d zone:%"PRIx64" "
			"all:%d nsid:%d\n",
			cfg.zsa, (uint64_t)cfg.zslba, (int)cfg.select_all,
			cfg.namespace_id);
	else if (err > 0)
		nvme_show_status(err);
	else
		perror("zns zone-mgmt-send");

close_ffd:
	if (cfg.file)
		close(ffd);
free:
	free(buf);
close_dev:
	dev_close(dev);
	return err;
}

static int close_zone(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	const char *desc = "Close zones\n";

	return zns_mgmt_send(argc, argv, cmd, plugin, desc, NVME_ZNS_ZSA_CLOSE);
}

static int finish_zone(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	const char *desc = "Finish zones\n";

	return zns_mgmt_send(argc, argv, cmd, plugin, desc, NVME_ZNS_ZSA_FINISH);
}

static int open_zone(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	const char *desc = "Open zones\n";
	const char *zslba = "starting LBA of the zone for this command";
	const char *zrwaa = "Allocate Zone Random Write Area to zone";
	const char *select_all = "send command to all zones";
	const char *timeout = "timeout value, in milliseconds";
	struct nvme_dev *dev;
	int err;

	struct config {
		__u64	zslba;
		__u32	namespace_id;
		bool	zrwaa;
		bool	select_all;
		__u32	timeout;
	};

	struct config cfg = {
	};

	OPT_ARGS(opts) = {
		OPT_UINT("namespace-id", 'n', &cfg.namespace_id,  namespace_id),
		OPT_SUFFIX("start-lba",  's', &cfg.zslba,         zslba),
		OPT_FLAG("zrwaa",         'r', &cfg.zrwaa,          zrwaa),
		OPT_FLAG("select-all",   'a', &cfg.select_all,    select_all),
		OPT_UINT("timeout",      't', &cfg.timeout,       timeout),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		return errno;

	if (!cfg.namespace_id) {
		err = nvme_get_nsid(dev_fd(dev), &cfg.namespace_id);
		if (err < 0) {
			perror("get-namespace-id");
			goto close_dev;
		}
	}

	struct nvme_zns_mgmt_send_args args = {
		.args_size	= sizeof(args),
		.fd		= dev_fd(dev),
		.nsid		= cfg.namespace_id,
		.slba		= cfg.zslba,
		.zsa		= NVME_ZNS_ZSA_OPEN,
		.select_all	= cfg.select_all,
		.zsaso		= cfg.zrwaa,
		.data_len	= 0,
		.data		= NULL,
		.timeout	= cfg.timeout,
		.result		= NULL,
	};
	err = nvme_zns_mgmt_send(&args);
	if (!err)
		printf("zns-open-zone: Success zone slba:%"PRIx64" nsid:%d\n",
			(uint64_t)cfg.zslba, cfg.namespace_id);
	else
		nvme_show_status(err);
close_dev:
	dev_close(dev);
	return err;
}

static int reset_zone(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	const char *desc = "Reset zones\n";

	return zns_mgmt_send(argc, argv, cmd, plugin, desc, NVME_ZNS_ZSA_RESET);
}

static int offline_zone(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	const char *desc = "Offline zones\n";

	return zns_mgmt_send(argc, argv, cmd, plugin, desc, NVME_ZNS_ZSA_OFFLINE);
}

static int set_zone_desc(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	const char *desc = "Set Zone Descriptor Extension\n";
	const char *zslba = "starting LBA of the zone for this command";
	const char *zrwaa = "Allocate Zone Random Write Area to zone";
	const char *data = "optional file for zone extention data (default stdin)";
	const char *timeout = "timeout value, in milliseconds";

	int ffd = STDIN_FILENO, err;
	struct nvme_dev *dev;
	void *buf = NULL;
	int data_len;

	struct config {
		__u64	zslba;
		bool	zrwaa;
		__u32	namespace_id;
		char   *file;
		__u32	timeout;
	};

	struct config cfg = {};

	OPT_ARGS(opts) = {
		OPT_UINT("namespace-id", 'n', &cfg.namespace_id,  namespace_id),
		OPT_SUFFIX("start-lba",  's', &cfg.zslba,         zslba),
		OPT_FLAG("zrwaa",        'r', &cfg.zrwaa,         zrwaa),
		OPT_FILE("data",         'd', &cfg.file,          data),
		OPT_UINT("timeout",      't', &cfg.timeout,       timeout),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		return errno;

	if (!cfg.namespace_id) {
		err = nvme_get_nsid(dev_fd(dev), &cfg.namespace_id);
		if (err < 0) {
			perror("get-namespace-id");
			goto close_dev;
		}
	}

	data_len = get_zdes_bytes(dev_fd(dev), cfg.namespace_id);

	if (!data_len || data_len < 0) {
		fprintf(stderr,
			"zone format does not provide descriptor extention\n");
		errno = EINVAL;
		err = -1;
		goto close_dev;
	}

	buf = calloc(1, data_len);
	if (!buf) {
		perror("could not alloc memory for zone desc");
		err = -ENOMEM;
		goto close_dev;
	}

	if (cfg.file) {
		ffd = open(cfg.file, O_RDONLY);
		if (ffd < 0) {
			perror(cfg.file);
			err = -1;
			goto free;
		}
	}

	err = read(ffd, (void *)buf, data_len);
	if (err < 0) {
		perror("read");
		goto close_ffd;
	}

	struct nvme_zns_mgmt_send_args args = {
		.args_size	= sizeof(args),
		.fd		= dev_fd(dev),
		.nsid		= cfg.namespace_id,
		.slba		= cfg.zslba,
		.zsa		= NVME_ZNS_ZSA_SET_DESC_EXT,
		.select_all	= 0,
		.zsaso		= cfg.zrwaa,
		.data_len	= data_len,
		.data		= buf,
		.timeout	= cfg.timeout,
		.result		= NULL,
	};
	err = nvme_zns_mgmt_send(&args);
	if (!err)
		printf("set-zone-desc: Success, zone:%"PRIx64" nsid:%d\n",
			(uint64_t)cfg.zslba, cfg.namespace_id);
	else if (err > 0)
		nvme_show_status(err);
	else
		perror("zns set-zone-desc");
close_ffd:
	if (cfg.file)
		close(ffd);
free:
	free(buf);
close_dev:
	dev_close(dev);
	return err;
}


static int zrwa_flush_zone(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	const char *desc = "Flush Explicit ZRWA Range";
	const char *slba = "LBA to flush up to";
	const char *timeout = "timeout value, in milliseconds";
	struct nvme_dev *dev;
	int err;

	struct config {
		__u64	lba;
		__u32	namespace_id;
		__u32	timeout;
	};

	struct config cfg = {};

	OPT_ARGS(opts) = {
		OPT_UINT("namespace-id", 'n', &cfg.namespace_id,  namespace_id),
		OPT_SUFFIX("lba",        'l', &cfg.lba,           slba),
		OPT_UINT("timeout",      't', &cfg.timeout,       timeout),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		return errno;

	if (!cfg.namespace_id) {
		err = nvme_get_nsid(dev_fd(dev), &cfg.namespace_id);
		if (err < 0) {
			perror("get-namespace-id");
			goto close_dev;
		}
	}

	struct nvme_zns_mgmt_send_args args = {
		.args_size	= sizeof(args),
		.fd		= dev_fd(dev),
		.nsid		= cfg.namespace_id,
		.slba		= cfg.lba,
		.zsa		= NVME_ZNS_ZSA_ZRWA_FLUSH,
		.select_all	= 0,
		.zsaso		= 0,
		.data_len	= 0,
		.data		= NULL,
		.timeout	= cfg.timeout,
		.result		= NULL,
	};
	err = nvme_zns_mgmt_send(&args);
	if (!err)
		printf("zrwa-flush-zone: Success, lba:%"PRIx64" nsid:%d\n",
			(uint64_t)cfg.lba, cfg.namespace_id);
	else
		nvme_show_status(err);
close_dev:
	dev_close(dev);
	return err;
}

static int zone_mgmt_recv(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	const char *desc = "Zone Management Receive";
	const char *zslba = "starting LBA of the zone";
	const char *zra = "Zone Receive Action";
	const char *zrasf = "Zone Receive Action Specific Field(Reporting Options)";
	const char *partial = "Zone Receive Action Specific Features(Partial Report)";	
	const char *data_len = "length of data in bytes";

	enum nvme_print_flags flags;
	struct nvme_dev *dev;
	void *data = NULL;
	int err = -1;

	struct config {
		char *output_format;
		__u64  zslba;
		__u32  namespace_id;
		__u8   zra;
		__u8   zrasf;
		bool   partial;
		__u32  data_len;
	};

	struct config cfg = {
		.output_format = "normal",
	};

	OPT_ARGS(opts) = {
		OPT_FMT("output-format",  'o', &cfg.output_format,  output_format),
		OPT_UINT("namespace-id",  'n', &cfg.namespace_id,   namespace_id),
		OPT_SUFFIX("start-lba",   's', &cfg.zslba,          zslba),
		OPT_BYTE("zra",           'z', &cfg.zra,            zra),
		OPT_BYTE("zrasf",         'S', &cfg.zrasf,          zrasf),
		OPT_FLAG("partial",       'p', &cfg.partial,        partial),
		OPT_UINT("data-len",      'l', &cfg.data_len,       data_len),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		return errno;

	flags = validate_output_format(cfg.output_format);
	if (flags < 0)
		goto close_dev;

	if (!cfg.namespace_id) {
		err = nvme_get_nsid(dev_fd(dev), &cfg.namespace_id);
		if (err < 0) {
			perror("get-namespace-id");
			goto close_dev;
		}
	}

	if (cfg.zra == NVME_ZNS_ZRA_REPORT_ZONES && !cfg.data_len) {
		fprintf(stderr, "error: data len is needed for NVME_ZRA_ZONE_REPORT\n");
		err = -EINVAL;
		goto close_dev;
	}
	if (cfg.data_len) {
		data = calloc(1, cfg.data_len);
		if (!data) {
			perror("could not alloc memory for zone mgmt receive data");
			err = -ENOMEM;
			goto close_dev;
		}
	}

	struct nvme_zns_mgmt_recv_args args = {
		.args_size	= sizeof(args),
		.fd		= dev_fd(dev),
		.nsid		= cfg.namespace_id,
		.slba		= cfg.zslba,
		.zra		= cfg.zra,
		.zrasf		= cfg.zrasf,
		.zras_feat	= cfg.partial,
		.data_len	= cfg.data_len,
		.data		= data,
		.timeout	= NVME_DEFAULT_IOCTL_TIMEOUT,
		.result		= NULL,
	};
	err = nvme_zns_mgmt_recv(&args);
	if (!err)
		printf("zone-mgmt-recv: Success, action:%d zone:%"PRIx64" nsid:%d\n",
			cfg.zra, (uint64_t)cfg.zslba, cfg.namespace_id);
	else if (err > 0)
		nvme_show_status(err);
	else
		perror("zns zone-mgmt-recv");

	free(data);
close_dev:
	dev_close(dev);
	return err;
}

static int report_zones(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	const char *desc = "Retrieve the Report Zones data structure";
	const char *zslba = "starting LBA of the zone";
	const char *num_descs = "number of descriptors to retrieve (default: all of them)";
	const char *state = "state of zones to list";
	const char *ext = "set to use the extended report zones";
	const char *part = "set to use the partial report";
	const char *verbose = "show report zones verbosity";

	enum nvme_print_flags flags;
	int zdes = 0, err = -1;
	struct nvme_dev *dev;
	__u32 report_size;
	bool huge = false;
	struct nvme_zone_report *report, *buff;

	unsigned int nr_zones_chunks = 1024,   /* 1024 entries * 64 bytes per entry = 64k byte transfer */
			nr_zones_retrieved = 0,
			nr_zones,
			offset,
			log_len;
	int total_nr_zones = 0;
	struct nvme_zns_id_ns id_zns;
	struct nvme_id_ns id_ns;
	uint8_t lbaf;
	__le64	zsze;
	struct json_object *zone_list = 0;

	struct config {
		char *output_format;
		__u64 zslba;
		__u32 namespace_id;
		int   num_descs;
		int   state;
		bool  verbose;
		bool  extended;
		bool  partial;
	};

	struct config cfg = {
		.output_format = "normal",
		.num_descs = -1,
	};

	OPT_ARGS(opts) = {
		OPT_UINT("namespace-id",  'n', &cfg.namespace_id,   namespace_id),
		OPT_SUFFIX("start-lba",   's', &cfg.zslba,          zslba),
		OPT_UINT("descs",         'd', &cfg.num_descs,      num_descs),
		OPT_UINT("state",         'S', &cfg.state,          state),
		OPT_FMT("output-format",  'o', &cfg.output_format,  output_format),
		OPT_FLAG("verbose",       'v', &cfg.verbose,        verbose),
		OPT_FLAG("extended",      'e', &cfg.extended,       ext),
		OPT_FLAG("partial",       'p', &cfg.partial,        part),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		return errno;

	flags = validate_output_format(cfg.output_format);
	if (flags < 0)
		goto close_dev;
	if (cfg.verbose)
		flags |= VERBOSE;

	if (!cfg.namespace_id) {
		err = nvme_get_nsid(dev_fd(dev), &cfg.namespace_id);
		if (err < 0) {
			perror("get-namespace-id");
			goto close_dev;
		}
	}

	if (cfg.extended) {
		zdes = get_zdes_bytes(dev_fd(dev), cfg.namespace_id);
		if (zdes < 0) {
			err = zdes;
			goto close_dev;
		}
	}

	err = nvme_identify_ns(dev_fd(dev), cfg.namespace_id, &id_ns);
	if (err) {
		nvme_show_status(err);
		goto close_dev;
	}

	err = nvme_zns_identify_ns(dev_fd(dev), cfg.namespace_id, &id_zns);
	if (!err) {
		/* get zsze field from zns id ns data - needed for offset calculation */
		nvme_id_ns_flbas_to_lbaf_inuse(id_ns.flbas, &lbaf);
	    zsze = le64_to_cpu(id_zns.lbafe[lbaf].zsze);
	}
	else {
		nvme_show_status(err);
		goto close_dev;
	}

	log_len = sizeof(struct nvme_zone_report);
	buff = calloc(1, log_len);
	if (!buff) {
		err = -ENOMEM;
		goto close_dev;
	}

	err = nvme_zns_report_zones(dev_fd(dev), cfg.namespace_id, 0,
				    cfg.state, false, false,
				    log_len, buff,
				    NVME_DEFAULT_IOCTL_TIMEOUT, NULL);
	if (err > 0) {
		nvme_show_status(err);
		goto free_buff;
	}
	else if (err < 0) {
		perror("zns report-zones");
		goto free_buff;
	}

	total_nr_zones = le64_to_cpu(buff->nr_zones);

	if (cfg.num_descs == -1) {
		cfg.num_descs = total_nr_zones;
	}

	nr_zones = cfg.num_descs;
	if (nr_zones < nr_zones_chunks)
		nr_zones_chunks = nr_zones;

	log_len = sizeof(struct nvme_zone_report) + ((sizeof(struct nvme_zns_desc) * nr_zones_chunks) + (nr_zones_chunks * zdes));
	report_size = log_len;

	report = nvme_alloc(report_size, &huge);
	if (!report) {
		perror("alloc");
		err = -ENOMEM;
		goto close_dev;
	}

	offset = cfg.zslba;
	if (flags & JSON)
		zone_list = json_create_array();
	else
		printf("nr_zones: %"PRIu64"\n", (uint64_t)le64_to_cpu(total_nr_zones));

	while (nr_zones_retrieved < nr_zones) {
		if (nr_zones_retrieved >= nr_zones)
			break;

		if (nr_zones_retrieved + nr_zones_chunks > nr_zones) {
			nr_zones_chunks = nr_zones - nr_zones_retrieved;
			log_len = sizeof(struct nvme_zone_report) + ((sizeof(struct nvme_zns_desc) * nr_zones_chunks) + (nr_zones_chunks * zdes));
		}

		err = nvme_zns_report_zones(dev_fd(dev), cfg.namespace_id,
					    offset,
					    cfg.state, cfg.extended,
					    cfg.partial, log_len, report,
					    NVME_DEFAULT_IOCTL_TIMEOUT, NULL);
		if (err > 0) {
			nvme_show_status(err);
			break;
		}

		if (!err)
			nvme_show_zns_report_zones(report, nr_zones_chunks, 
					zdes, log_len, flags, zone_list);

		nr_zones_retrieved += nr_zones_chunks;
		offset = le64_to_cpu(report->entries[nr_zones_chunks-1].zslba) + zsze;
    }

	if (flags & JSON)
		json_nvme_finish_zone_list(total_nr_zones, zone_list);

	nvme_free(report, huge);

free_buff:
	free(buff);
close_dev:
	dev_close(dev);
	return err;
}

static int zone_append(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	const char *desc = "The zone append command is used to write to a zone "\
		  "using the slba of the zone, and the write will be appended from the "\
		  "write pointer of the zone";
	const char *zslba = "starting LBA of the zone";
	const char *data = "file containing data to write";
	const char *metadata = "file with metadata to be written";
	const char *limited_retry = "limit media access attempts";
	const char *fua = "force unit access";
	const char *prinfo = "protection information action and checks field";
	const char *piremap = "protection information remap (for type 1 PI)";
	const char *ref_tag = "reference tag for end-to-end PI";
	const char *lbat = "logical block application tag for end-to-end PI";
	const char *lbatm = "logical block application tag mask for end-to-end PI";
	const char *metadata_size = "size of metadata in bytes";
	const char *data_size = "size of data in bytes";
	const char *latency = "output latency statistics";

	int err = -1, dfd = STDIN_FILENO, mfd = STDIN_FILENO;
	unsigned int lba_size, meta_size;
	void *buf = NULL, *mbuf = NULL;
	__u16 nblocks, control = 0;
	struct nvme_dev *dev;
	__u64 result;
	__u8 lba_index;
	struct timeval start_time, end_time;

	struct nvme_id_ns ns;

	struct config {
		char  *data;
		char  *metadata;
		__u64  zslba;
		__u64  data_size;
		__u64  metadata_size;
		bool   limited_retry;
		bool   fua;
		__u32  namespace_id;
		__u64  ref_tag;
		__u16  lbat;
		__u16  lbatm;
		__u8   prinfo;
		bool   piremap;
		bool   latency;
	};

	struct config cfg = {};

	OPT_ARGS(opts) = {
		OPT_UINT("namespace-id", 'n', &cfg.namespace_id,  namespace_id),
		OPT_SUFFIX("zslba",           's', &cfg.zslba,         zslba),
		OPT_SUFFIX("data-size",       'z', &cfg.data_size,     data_size),
		OPT_SUFFIX("metadata-size",   'y', &cfg.metadata_size, metadata_size),
		OPT_FILE("data",              'd', &cfg.data,          data),
		OPT_FILE("metadata",          'M', &cfg.metadata,      metadata),
		OPT_FLAG("limited-retry",     'l', &cfg.limited_retry, limited_retry),
		OPT_FLAG("force-unit-access", 'f', &cfg.fua,           fua),
		OPT_SUFFIX("ref-tag",         'r', &cfg.ref_tag,       ref_tag),
		OPT_SHRT("app-tag-mask",      'm', &cfg.lbatm,         lbatm),
		OPT_SHRT("app-tag",           'a', &cfg.lbat,          lbat),
		OPT_BYTE("prinfo",            'p', &cfg.prinfo,        prinfo),
		OPT_FLAG("piremap",           'P', &cfg.piremap,       piremap),
		OPT_FLAG("latency",           't', &cfg.latency,       latency),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		return errno;

	if (!cfg.data_size) {
		fprintf(stderr, "Append size not provided\n");
		errno = EINVAL;
		goto close_dev;
	}

	if (!cfg.namespace_id) {
		err = nvme_get_nsid(dev_fd(dev), &cfg.namespace_id);
		if (err < 0) {
			perror("get-namespace-id");
			goto close_dev;
		}
	}

	err = nvme_identify_ns(dev_fd(dev), cfg.namespace_id, &ns);
	if (err) {
		nvme_show_status(err);
		goto close_dev;
	}

	nvme_id_ns_flbas_to_lbaf_inuse(ns.flbas, &lba_index);
	lba_size = 1 << ns.lbaf[lba_index].ds;
	if (cfg.data_size & (lba_size - 1)) {
		fprintf(stderr,
			"Data size:%#"PRIx64" not aligned to lba size:%#x\n",
			(uint64_t)cfg.data_size, lba_size);
		errno = EINVAL;
		goto close_dev;
	}

	meta_size = ns.lbaf[lba_index].ms;
	if (meta_size && !(meta_size == 8 && (cfg.prinfo & 0x8)) &&
			(!cfg.metadata_size || cfg.metadata_size % meta_size)) {
		fprintf(stderr,
			"Metadata size:%#"PRIx64" not aligned to metadata size:%#x\n",
			(uint64_t)cfg.metadata_size, meta_size);
		errno = EINVAL;
		goto close_dev;
	}

	if (cfg.prinfo > 0xf) {
	        fprintf(stderr, "Invalid value for prinfo:%#x\n", cfg.prinfo);
		errno = EINVAL;
		goto close_dev;
	}

	if (cfg.data) {
		dfd = open(cfg.data, O_RDONLY);
		if (dfd < 0) {
			perror(cfg.data);
			goto close_dev;
		}
	}

	if (posix_memalign(&buf, getpagesize(), cfg.data_size)) {
		fprintf(stderr, "No memory for data size:%"PRIx64"\n",
			(uint64_t)cfg.data_size);
		goto close_dfd;
	}

	memset(buf, 0, cfg.data_size);
	err = read(dfd, buf, cfg.data_size);
	if (err < 0) {
		perror("read-data");
		goto free_data;
	}

	if (cfg.metadata) {
		mfd = open(cfg.metadata, O_RDONLY);
		if (mfd < 0) {
			perror(cfg.metadata);
			err = -1;
			goto free_data;
		}
	}

	if (cfg.metadata_size) {
		if (posix_memalign(&mbuf, getpagesize(), meta_size)) {
			fprintf(stderr, "No memory for metadata size:%d\n",
				meta_size);
			err = -1;
			goto close_mfd;
		}

		memset(mbuf, 0, cfg.metadata_size);
		err = read(mfd, mbuf, cfg.metadata_size);
		if (err < 0) {
			perror("read-metadata");
			goto free_meta;
		}
	}

	nblocks = (cfg.data_size / lba_size) - 1;
	control |= (cfg.prinfo << 10);
	if (cfg.limited_retry)
		control |= NVME_IO_LR;
	if (cfg.fua)
		control |= NVME_IO_FUA;
	if (cfg.piremap)
		control |= NVME_IO_ZNS_APPEND_PIREMAP;

	struct nvme_zns_append_args args = {
		.args_size	= sizeof(args),
		.fd		= dev_fd(dev),
		.nsid		= cfg.namespace_id,
		.zslba		= cfg.zslba,
		.nlb		= nblocks,
		.control	= control,
		.ilbrt_u64	= cfg.ref_tag,
		.lbat		= cfg.lbat,
		.lbatm		= cfg.lbatm,
		.data_len	= cfg.data_size,
		.data		= buf,
		.metadata_len	= cfg.metadata_size,
		.metadata	= mbuf,
		.timeout	= NVME_DEFAULT_IOCTL_TIMEOUT,
		.result		= &result,
	};

	gettimeofday(&start_time, NULL);
	err = nvme_zns_append(&args);
	gettimeofday(&end_time, NULL);
	if (cfg.latency)
		printf(" latency: zone append: %llu us\n",
			elapsed_utime(start_time, end_time));

	if (!err)
		printf("Success appended data to LBA %"PRIx64"\n", (uint64_t)result);
	else if (err > 0)
		nvme_show_status(err);
	else
		perror("zns zone-append");

free_meta:
	free(mbuf);
close_mfd:
	if (cfg.metadata)
		close(mfd);
free_data:
	free(buf);
close_dfd:
	if (cfg.data)
		close(dfd);
close_dev:
	dev_close(dev);
	return err;
}

static int changed_zone_list(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	const char *desc = "Retrieve Changed Zone log for the given device";
	const char *rae = "retain an asynchronous event";

	struct nvme_zns_changed_zone_log log;
	enum nvme_print_flags flags;
	struct nvme_dev *dev;
	int err = -1;

	struct config {
		char *output_format;
		__u32 namespace_id;
		bool  rae;
	};

	struct config cfg = {
		.output_format = "normal",
	};

	OPT_ARGS(opts) = {
		OPT_UINT("namespace-id", 'n', &cfg.namespace_id,  namespace_id),
		OPT_FMT("output-format", 'o', &cfg.output_format, output_format),
		OPT_FLAG("rae",          'r', &cfg.rae,           rae),
		OPT_END()
	};

	err = parse_and_open(&dev, argc, argv, desc, opts);
	if (err)
		return errno;

	flags = validate_output_format(cfg.output_format);
	if (flags < 0)
		goto close_fd;

	if (!cfg.namespace_id) {
		err = nvme_get_nsid(dev_fd(dev), &cfg.namespace_id);
		if (err < 0) {
			perror("get-namespace-id");
			goto close_fd;
		}
	}

	err = nvme_get_log_zns_changed_zones(dev_fd(dev), cfg.namespace_id,
					     cfg.rae, &log);
	if (!err)
		nvme_show_zns_changed(&log, flags);
	else if (err > 0)
		nvme_show_status(err);
	else
		perror("zns changed-zone-list");

close_fd:
	dev_close(dev);
	return err;
}
 070701015D6C73000081A4000003E80000006400000001642C0FB5000005EF000000000000004A00000000000000000000001B00000000nvme-cli/plugins/zns/zns.h    /* SPDX-License-Identifier: GPL-2.0-or-later */
#undef CMD_INC_FILE
#define CMD_INC_FILE plugins/zns/zns

#if !defined(ZNS_NVME) || defined(CMD_HEADER_MULTI_READ)
#define ZNS_NVME

#include "cmd.h"

PLUGIN(NAME("zns", "Zoned Namespace Command Set", NVME_VERSION),
	COMMAND_LIST(
		ENTRY("list", "List all NVMe devices with Zoned Namespace Command Set support", list)
		ENTRY("id-ctrl", "Send NVMe Identify Zoned Namespace Controller, display structure", id_ctrl)
		ENTRY("id-ns", "Send NVMe Identify Zoned Namespace Namespace, display structure", id_ns)
		ENTRY("report-zones", "Report zones associated to a Zoned Namespace", report_zones)
		ENTRY("reset-zone", "Reset one or more zones", reset_zone)
		ENTRY("close-zone", "Close one or more zones", close_zone)
		ENTRY("finish-zone", "Finishe one or more zones", finish_zone)
		ENTRY("open-zone", "Open one or more zones", open_zone)
		ENTRY("offline-zone", "Offline one or more zones", offline_zone)
		ENTRY("set-zone-desc", "Attach zone descriptor extension data to a zone", set_zone_desc)
		ENTRY("zrwa-flush-zone", "Flush LBAs associated with a ZRWA to a zone.", zrwa_flush_zone)
		ENTRY("changed-zone-list", "Retrieve the changed zone list log", changed_zone_list)
		ENTRY("zone-mgmt-recv", "Send the zone management receive command", zone_mgmt_recv)
		ENTRY("zone-mgmt-send", "Send the zone management send command", zone_mgmt_send)
		ENTRY("zone-append", "Append data and metadata (if applicable) to a zone", zone_append)
	)
);

#endif

#include "define_cmd.h"
 07070101755AF1000081A4000003E800000064000000016442733700004184000000000000004A00000000000000000000002400000000nvme-cli/plugins/nbft/nbft-plugin.c   // SPDX-License-Identifier: GPL-2.0-or-later

#include <errno.h>
#include <stdio.h>
#include <fnmatch.h>

#include "nvme-print.h"
#include "nvme.h"
#include "nbft.h"
#include "libnvme.h"
#include "fabrics.h"

#define CREATE_CMD
#include "nbft-plugin.h"

static const char dash[100] = {[0 ... 98] = '-', [99] = '\0'};

#define PCI_SEGMENT(sbdf) ((sbdf & 0xffff0000) >> 16)
#define PCI_BUS(sbdf) ((sbdf & 0x0000ff00) >> 8)
#define PCI_DEV(sbdf) ((sbdf & 0x000000f8) >> 3)
#define PCI_FUNC(sbdf) ((sbdf & 0x00000007) >> 0)

static const char *pci_sbdf_to_string(__u16 pci_sbdf)
{
	static char pcidev[13];

	snprintf(pcidev, sizeof(pcidev), "%x:%x:%x.%x",
		 PCI_SEGMENT(pci_sbdf),
		 PCI_BUS(pci_sbdf),
		 PCI_DEV(pci_sbdf),
		 PCI_FUNC(pci_sbdf));
	return pcidev;
}

static char *mac_addr_to_string(unsigned char mac_addr[6])
{
	static char mac_string[18];

	snprintf(mac_string, sizeof(mac_string), "%02x:%02x:%02x:%02x:%02x:%02x",
		 mac_addr[0],
		 mac_addr[1],
		 mac_addr[2],
		 mac_addr[3],
		 mac_addr[4],
		 mac_addr[5]);
	return mac_string;
}

static json_object *hfi_to_json(struct nbft_info_hfi *hfi)
{
	struct json_object *hfi_json;

	hfi_json = json_create_object();
	if (!hfi_json)
		return NULL;

	if (json_object_add_value_int(hfi_json, "index", hfi->index)
	    || json_object_add_value_string(hfi_json, "transport", hfi->transport))
		goto fail;

	if (strcmp(hfi->transport, "tcp") == 0) {
		if (json_object_add_value_string(hfi_json, "pcidev",
						 pci_sbdf_to_string(hfi->tcp_info.pci_sbdf))
		    || json_object_add_value_string(hfi_json, "mac_addr",
						    mac_addr_to_string(hfi->tcp_info.mac_addr))
		    || json_object_add_value_int(hfi_json, "vlan",
						 hfi->tcp_info.vlan)
		    || json_object_add_value_int(hfi_json, "ip_origin",
						 hfi->tcp_info.ip_origin)
		    || json_object_add_value_string(hfi_json, "ipaddr",
						    hfi->tcp_info.ipaddr)
		    || json_object_add_value_int(hfi_json, "subnet_mask_prefix",
						 hfi->tcp_info.subnet_mask_prefix)
		    || json_object_add_value_string(hfi_json, "gateway_ipaddr",
						    hfi->tcp_info.gateway_ipaddr)
		    || json_object_add_value_int(hfi_json, "route_metric",
						 hfi->tcp_info.route_metric)
		    || json_object_add_value_string(hfi_json, "primary_dns_ipaddr",
						    hfi->tcp_info.primary_dns_ipaddr)
		    || json_object_add_value_string(hfi_json, "secondary_dns_ipaddr",
						    hfi->tcp_info.secondary_dns_ipaddr)
		    || json_object_add_value_string(hfi_json, "dhcp_server_ipaddr",
						    hfi->tcp_info.dhcp_server_ipaddr)
		    || (hfi->tcp_info.host_name
			&& json_object_add_value_string(hfi_json, "host_name",
							hfi->tcp_info.host_name))
		    || json_object_add_value_int(hfi_json, "this_hfi_is_default_route",
						 hfi->tcp_info.this_hfi_is_default_route)
		    || json_object_add_value_int(hfi_json, "dhcp_override",
						 hfi->tcp_info.dhcp_override))
			goto fail;
		else
			return hfi_json;
	}
fail:
	json_free_object(hfi_json);
	return NULL;
}

static json_object *ssns_to_json(struct nbft_info_subsystem_ns *ss)
{
	struct json_object *ss_json;
	struct json_object *hfi_array_json;
	char json_str[40];
	char *json_str_p;
	int i;

	ss_json = json_create_object();
	if (!ss_json)
		return NULL;

	hfi_array_json = json_create_array();
	if (!hfi_array_json)
		goto fail;

	for (i = 0; i < ss->num_hfis; i++)
		if (json_array_add_value_object(hfi_array_json,
						json_object_new_int(ss->hfis[i]->index)))
			goto fail;

	if (json_object_add_value_int(ss_json, "index", ss->index)
	    || json_object_add_value_int(ss_json, "num_hfis", ss->num_hfis)
	    || json_object_object_add(ss_json, "hfis", hfi_array_json)
	    || json_object_add_value_string(ss_json, "transport", ss->transport)
	    || json_object_add_value_string(ss_json, "traddr", ss->traddr)
	    || json_object_add_value_string(ss_json, "trsvcid", ss->trsvcid)
	    || json_object_add_value_int(ss_json, "subsys_port_id", ss->subsys_port_id)
	    || json_object_add_value_int(ss_json, "nsid", ss->nsid))
		goto fail;

	memset(json_str, 0, sizeof(json_str));
	json_str_p = json_str;

	switch (ss->nid_type) {
	case NBFT_INFO_NID_TYPE_EUI64:
		if (json_object_add_value_string(ss_json, "nid_type", "eui64"))
			goto fail;
		for (i = 0; i < 8; i++)
			json_str_p += sprintf(json_str_p, "%02x", ss->nid[i]);
		break;

	case NBFT_INFO_NID_TYPE_NGUID:
		if (json_object_add_value_string(ss_json, "nid_type", "nguid"))
			goto fail;
		for (i = 0; i < 16; i++)
			json_str_p += sprintf(json_str_p, "%02x", ss->nid[i]);
		break;

	case NBFT_INFO_NID_TYPE_NS_UUID:
		if (json_object_add_value_string(ss_json, "nid_type", "uuid"))
			goto fail;
		nvme_uuid_to_string(ss->nid, json_str);
		break;

	default:
		break;
	}
	if (json_object_add_value_string(ss_json, "nid", json_str))
		goto fail;

	if ((ss->subsys_nqn
	     && json_object_add_value_string(ss_json, "subsys_nqn", ss->subsys_nqn))
	    || json_object_add_value_int(ss_json, "controller_id", ss->controller_id)
	    || json_object_add_value_int(ss_json, "asqsz", ss->asqsz)
	    || (ss->dhcp_root_path_string
		&& json_object_add_value_string(ss_json, "dhcp_root_path_string",
						ss->dhcp_root_path_string))
	    || json_object_add_value_int(ss_json, "pdu_header_digest_required",
					 ss->pdu_header_digest_required)
	    || json_object_add_value_int(ss_json, "data_digest_required",
					 ss->data_digest_required))
		goto fail;

	return ss_json;
fail:
	json_free_object(ss_json);
	return NULL;
}

static json_object *discovery_to_json(struct nbft_info_discovery *disc)
{
	struct json_object *disc_json;

	disc_json = json_create_object();
	if (!disc_json)
		return NULL;

	if (json_object_add_value_int(disc_json, "index", disc->index)
	    || (disc->security
		&& json_object_add_value_int(disc_json, "security", disc->security->index))
	    || (disc->hfi
		&& json_object_add_value_int(disc_json, "hfi", disc->hfi->index))
	    || (disc->uri
		&& json_object_add_value_string(disc_json, "uri", disc->uri))
	    || (disc->nqn
		&& json_object_add_value_string(disc_json, "nqn", disc->nqn))) {
		json_free_object(disc_json);
		return NULL;
	} else
		return disc_json;
}

static const char *primary_admin_host_flag_to_str(unsigned int primary)
{
	static const char * const str[] = {
		[NBFT_INFO_PRIMARY_ADMIN_HOST_FLAG_NOT_INDICATED] =	"not indicated",
		[NBFT_INFO_PRIMARY_ADMIN_HOST_FLAG_UNSELECTED] =	"unselected",
		[NBFT_INFO_PRIMARY_ADMIN_HOST_FLAG_SELECTED] =		"selected",
		[NBFT_INFO_PRIMARY_ADMIN_HOST_FLAG_RESERVED] =		"reserved",
	};

	if (primary > NBFT_INFO_PRIMARY_ADMIN_HOST_FLAG_RESERVED)
		return "INVALID";
	return str[primary];
}

static struct json_object *nbft_to_json(struct nbft_info *nbft, bool show_subsys,
					bool show_hfi, bool show_discovery)
{
	struct json_object *nbft_json, *host_json;

	nbft_json = json_create_object();
	if (!nbft_json)
		return NULL;

	if (json_object_add_value_string(nbft_json, "filename", nbft->filename))
		goto fail;

	host_json = json_create_object();
	if (!host_json)
		goto fail;
	if ((nbft->host.nqn
	     && json_object_add_value_string(host_json, "nqn", nbft->host.nqn))
	    || (nbft->host.id
		&& json_object_add_value_string(host_json, "id",
						util_uuid_to_string(nbft->host.id))))
		goto fail;
	json_object_add_value_int(host_json, "host_id_configured",
				  nbft->host.host_id_configured);
	json_object_add_value_int(host_json, "host_nqn_configured",
				  nbft->host.host_nqn_configured);
	json_object_add_value_string(host_json, "primary_admin_host_flag",
				     primary_admin_host_flag_to_str(nbft->host.primary));
	if (json_object_object_add(nbft_json, "host", host_json)) {
		json_free_object(host_json);
		goto fail;
	}

	if (show_subsys) {
		struct json_object *subsys_array_json, *subsys_json;
		struct nbft_info_subsystem_ns **ss;

		subsys_array_json = json_create_array();
		if (!subsys_array_json)
			goto fail;
		for (ss = nbft->subsystem_ns_list; ss && *ss; ss++) {
			subsys_json = ssns_to_json(*ss);
			if (!subsys_json)
				goto fail;
			if (json_object_array_add(subsys_array_json, subsys_json)) {
				json_free_object(subsys_json);
				goto fail;
			}
		}
		if (json_object_object_add(nbft_json, "subsystem", subsys_array_json)) {
			json_free_object(subsys_array_json);
			goto fail;
		}
	}
	if (show_hfi) {
		struct json_object *hfi_array_json, *hfi_json;
		struct nbft_info_hfi **hfi;

		hfi_array_json = json_create_array();
		if (!hfi_array_json)
			goto fail;
		for (hfi = nbft->hfi_list; hfi && *hfi; hfi++) {
			hfi_json = hfi_to_json(*hfi);
			if (!hfi_json)
				goto fail;
			if (json_object_array_add(hfi_array_json, hfi_json)) {
				json_free_object(hfi_json);
				goto fail;
			}
		}
		if (json_object_object_add(nbft_json, "hfi", hfi_array_json)) {
			json_free_object(hfi_array_json);
			goto fail;
		}
	}
	if (show_discovery) {
		struct json_object *discovery_array_json, *discovery_json;
		struct nbft_info_discovery **disc;

		discovery_array_json = json_create_array();
		if (!discovery_array_json)
			goto fail;
		for (disc = nbft->discovery_list; disc && *disc; disc++) {
			discovery_json = discovery_to_json(*disc);
			if (!discovery_json)
				goto fail;
			if (json_object_array_add(discovery_array_json, discovery_json)) {
				json_free_object(discovery_json);
				goto fail;
			}
		}
		if (json_object_object_add(nbft_json, "discovery", discovery_array_json)) {
			json_free_object(discovery_array_json);
			goto fail;
		}
	}
	return nbft_json;
fail:
	json_free_object(nbft_json);
	return NULL;
}

static int json_show_nbfts(struct list_head *nbft_list, bool show_subsys,
			   bool show_hfi, bool show_discovery)
{
	struct json_object *nbft_json_array, *nbft_json;
	struct nbft_file_entry *entry;

	nbft_json_array = json_create_array();
	if (!nbft_json_array)
		return ENOMEM;

	list_for_each(nbft_list, entry, node) {
		nbft_json = nbft_to_json(entry->nbft, show_subsys, show_hfi, show_discovery);
		if (!nbft_json)
			goto fail;
		if (json_object_array_add(nbft_json_array, nbft_json)) {
			json_free_object(nbft_json);
			goto fail;
		}
	}

	json_print_object(nbft_json_array, NULL);
	printf("\n");
	json_free_object(nbft_json_array);
	return 0;
fail:
	json_free_object(nbft_json_array);
	return ENOMEM;
}

static void print_nbft_hfi_info(struct nbft_info *nbft)
{
	struct nbft_info_hfi **hfi;
	unsigned int ip_width = 8, gw_width = 8, dns_width = 8;

	hfi = nbft->hfi_list;
	if (!hfi || !*hfi)
		return;

	for (; *hfi; hfi++) {
		unsigned int len;

		len = strlen((*hfi)->tcp_info.ipaddr);
		if (len > ip_width)
			ip_width = len;
		len = strlen((*hfi)->tcp_info.gateway_ipaddr);
		if (len > gw_width)
			gw_width = len;
		len = strlen((*hfi)->tcp_info.primary_dns_ipaddr);
		if (len > dns_width)
			dns_width = len;
	}

	printf("\nNBFT HFIs:\n\n");
	printf("%-3.3s|%-4.4s|%-10.10s|%-17.17s|%-4.4s|%-*.*s|%-4.4s|%-*.*s|%-*.*s\n",
	       "Idx", "Trsp", "PCI Addr", "MAC Addr", "DHCP",
	       ip_width, ip_width, "IP Addr", "Mask",
	       gw_width, gw_width, "Gateway", dns_width, dns_width, "DNS");
	printf("%-.3s+%-.4s+%-.10s+%-.17s+%-.4s+%-.*s+%-.4s+%-.*s+%-.*s\n",
	       dash, dash, dash, dash, dash, ip_width, dash, dash,
	       gw_width, dash, dns_width, dash);
	for (hfi = nbft->hfi_list; *hfi; hfi++)
		printf("%-3d|%-4.4s|%-10.10s|%-17.17s|%-4.4s|%-*.*s|%-4d|%-*.*s|%-*.*s\n",
		       (*hfi)->index,
		       (*hfi)->transport,
		       pci_sbdf_to_string((*hfi)->tcp_info.pci_sbdf),
		       mac_addr_to_string((*hfi)->tcp_info.mac_addr),
		       (*hfi)->tcp_info.dhcp_override ? "yes" : "no",
		       ip_width, ip_width, (*hfi)->tcp_info.ipaddr,
		       (*hfi)->tcp_info.subnet_mask_prefix,
		       gw_width, gw_width, (*hfi)->tcp_info.gateway_ipaddr,
		       dns_width, dns_width, (*hfi)->tcp_info.primary_dns_ipaddr);
}

static void print_nbft_discovery_info(struct nbft_info *nbft)
{
	struct nbft_info_discovery **disc;
	unsigned int nqn_width = 20, uri_width = 12;

	disc = nbft->discovery_list;
	if (!disc || !*disc)
		return;

	for (; *disc; disc++) {
		size_t len;

		len = strlen((*disc)->uri);
		if (len > uri_width)
			uri_width = len;
		len = strlen((*disc)->nqn);
		if (len > nqn_width)
			nqn_width = len;
	}

	printf("\nNBFT Discovery Controllers:\n\n");
	printf("%-3.3s|%-*.*s|%-*.*s\n", "Idx", uri_width, uri_width, "URI",
	       nqn_width, nqn_width, "NQN");
	printf("%-.3s+%-.*s+%-.*s\n", dash, uri_width, dash, nqn_width, dash);
	for (disc = nbft->discovery_list; *disc; disc++)
		printf("%-3d|%-*.*s|%-*.*s\n", (*disc)->index,
		       uri_width, uri_width, (*disc)->uri,
		       nqn_width, nqn_width, (*disc)->nqn);
}

#define HFIS_LEN 20
static size_t print_hfis(const struct nbft_info_subsystem_ns *ss, char buf[HFIS_LEN])
{
	char hfi_buf[HFIS_LEN];
	size_t len, ofs;
	int i;

	len = snprintf(hfi_buf, sizeof(hfi_buf), "%d", ss->hfis[0]->index);
	for (i = 1; i < ss->num_hfis; i++) {
		ofs = len;
		len += snprintf(hfi_buf + ofs, sizeof(hfi_buf) - ofs, ",%d",
				ss->hfis[i]->index);
		/*
		 * If the list doesn't fit in HFIS_LEN characters,
		 * truncate and end with "..."
		 */
		if (len >= sizeof(hfi_buf)) {
			while (ofs < sizeof(hfi_buf) - 1)
				hfi_buf[ofs++] = '.';
			hfi_buf[ofs] = '\0';
			len = sizeof(hfi_buf) - 1;
			break;
		}
	}
	if (buf)
		memcpy(buf, hfi_buf, len + 1);
	return len;
}


static void print_nbft_subsys_info(struct nbft_info *nbft)
{
	struct nbft_info_subsystem_ns **ss;
	unsigned int nqn_width = 20, adr_width = 8, hfi_width = 4;

	ss = nbft->subsystem_ns_list;
	if (!ss || !*ss)
		return;
	for (; *ss; ss++) {
		size_t len;

		len = strlen((*ss)->subsys_nqn);
		if (len > nqn_width)
			nqn_width = len;
		len = strlen((*ss)->traddr);
		if (len > adr_width)
			adr_width = len;
		len = print_hfis(*ss, NULL);
		if (len > hfi_width)
			hfi_width = len;
	}

	printf("\nNBFT Subsystems:\n\n");
	printf("%-3.3s|%-*.*s|%-4.4s|%-*.*s|%-5.5s|%-*.*s\n",
	       "Idx", nqn_width, nqn_width, "NQN",
	       "Trsp", adr_width, adr_width, "Address", "SvcId", hfi_width, hfi_width, "HFIs");
	printf("%-.3s+%-.*s+%-.4s+%-.*s+%-.5s+%-.*s\n",
	       dash, nqn_width, dash, dash, adr_width, dash, dash, hfi_width, dash);
	for (ss = nbft->subsystem_ns_list; *ss; ss++) {
		char hfi_buf[HFIS_LEN];

		print_hfis(*ss, hfi_buf);
		printf("%-3d|%-*.*s|%-4.4s|%-*.*s|%-5.5s|%-*.*s\n",
		       (*ss)->index, nqn_width, nqn_width, (*ss)->subsys_nqn,
		       (*ss)->transport, adr_width, adr_width, (*ss)->traddr,
		       (*ss)->trsvcid, hfi_width, hfi_width, hfi_buf);
	}
}

static void normal_show_nbft(struct nbft_info *nbft, bool show_subsys,
			     bool show_hfi, bool show_discovery)
{
	printf("%s:\n", nbft->filename);
	if ((!nbft->hfi_list || !*nbft->hfi_list) &&
	    (!nbft->security_list || !*nbft->security_list) &&
	    (!nbft->discovery_list || !*nbft->discovery_list) &&
	    (!nbft->subsystem_ns_list || !*nbft->subsystem_ns_list))
		printf("(empty)\n");
	else {
		if (show_subsys)
			print_nbft_subsys_info(nbft);
		if (show_hfi)
			print_nbft_hfi_info(nbft);
		if (show_discovery)
			print_nbft_discovery_info(nbft);
	}
}

static void normal_show_nbfts(struct list_head *nbft_list, bool show_subsys,
			      bool show_hfi, bool show_discovery)
{
	bool not_first = false;
	struct nbft_file_entry *entry;

	list_for_each(nbft_list, entry, node) {
		if (not_first)
			printf("\n");
		normal_show_nbft(entry->nbft, show_subsys, show_hfi, show_discovery);
		not_first = true;
	}
}

int show_nbft(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
	const char *desc = "Display contents of the ACPI NBFT files.";
	struct list_head nbft_list;
	char *format = "normal";
	char *nbft_path = NBFT_SYSFS_PATH;
	enum nvme_print_flags flags = -1;
	int ret;
	bool show_subsys = false, show_hfi = false, show_discovery = false;

	OPT_ARGS(opts) = {
		OPT_FMT("output-format", 'o', &format, "Output format: normal|json"),
		OPT_FLAG("subsystem", 's', &show_subsys, "show NBFT subsystems"),
		OPT_FLAG("hfi", 'H', &show_hfi, "show NBFT HFIs"),
		OPT_FLAG("discovery", 'd', &show_discovery, "show NBFT discovery controllers"),
		OPT_STRING("nbft-path", 0, "STR", &nbft_path, "user-defined path for NBFT tables"),
		OPT_END()
	};

	ret = argconfig_parse(argc, argv, desc, opts);
	if (ret)
		return ret;

	if (!(show_subsys || show_hfi || show_discovery))
		show_subsys = show_hfi = show_discovery = true;

	if (!strcmp(format, ""))
		flags = -1;
	else if (!strcmp(format, "normal"))
		flags = NORMAL;
	else if (!strcmp(format, "json"))
		flags = JSON;
	else
		return EINVAL;

	list_head_init(&nbft_list);
	ret = read_nbft_files(&nbft_list, nbft_path);
	if (!ret) {
		if (flags == NORMAL)
			normal_show_nbfts(&nbft_list, show_subsys, show_hfi, show_discovery);
		else if (flags == JSON)
			ret = json_show_nbfts(&nbft_list, show_subsys, show_hfi, show_discovery);
		free_nbfts(&nbft_list);
	}
	return ret;
}
07070101755AF2000081A4000003E80000006400000001644273370000017F000000000000004A00000000000000000000002400000000nvme-cli/plugins/nbft/nbft-plugin.h   /* SPDX-License-Identifier: GPL-2.0-or-later */
#undef CMD_INC_FILE
#define CMD_INC_FILE plugins/nbft/nbft-plugin

#if !defined(NBFT) || defined(CMD_HEADER_MULTI_READ)
#define NBFT

#include "cmd.h"

PLUGIN(NAME("nbft", "ACPI NBFT table extensions", NVME_VERSION),
	COMMAND_LIST(
		ENTRY("show", "Show contents of ACPI NBFT tables", show_nbft)
	)
);

#endif

#include "define_cmd.h"
 070701015D6C77000081A4000003E80000006400000001642C0FB500000048000000000000004A00000000000000000000002000000000nvme-cli/scripts/gen-hostnqn.sh   #!/bin/sh
# SPDX-License-Identifier: GPL-2.0-or-later

nvme gen-hostnqn
070701015D6C78000081ED000003E80000006400000001642C0FB500000BEC000000000000004A00000000000000000000001900000000nvme-cli/scripts/latency  #!/bin/bash
# SPDX-License-Identifier: GPL-2.0-or-later
#
# Copyright 2015 PMC-Sierra, Inc.
#
# 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 Street, Fifth Floor, Boston,
# MA  02110-1301, USA.
#
#   Author: Stephen Bates <stephen.bates@pmcs.com>
#
#   Description:
#     A shell script that calls the NVMe CLI multiple times to gather
#     latency data. Consider this a poor man's iometer or fio for QD=1
#     analysis. Of course this is below the file-system and block
#     layer so is a best case measurement.
#

DEVICE=
WRITE=false
COUNT=10
DATA_SIZE=4096
METADATA_SIZE=64

RAND_BASE=temp.rand
RAND_WFILE=${RAND_BASE}.write
RAND_RFILE=${RAND_BASE}.read
OUTPUT=latency.dat

green=$(tput bold)$(tput setaf 2)
red=$(tput bold)$(tput setaf 1)
rst=$(tput sgr0)

while getopts ":d:n:w" opt; do
  case $opt in
    d)
      DEVICE=${OPTARG}
      ;;
    n)
      COUNT=${OPTARG}
      ;;
    w)
      echo "WARNING: Write mode enabled, this might trash your drive!"
      WRITE=true
      ;;
    \?)
      echo "Invalid option: -$OPTARG" >&2
      exit 1
      ;;
    :)
      echo "Option -$OPTARG requires an argument." >&2
      exit 1
      ;;
  esac
done

if [ "$COUNT" == "0" ]; then
    echo "Count can not be 0"
    exit 1
fi

if [ -z "$DEVICE" ]; then
     echo "regress: You must specify a NVMe device using -d"
     exit 1
fi

function run_test {
    $* | grep -i latency >> ${OUTPUT} 2>&1
    if (( $? )); then
        echo ${red}"FAILED!"${rst}
        echo "Failed running command: "
        echo  "   $*"
        exit 1
    fi
}

rm -f ${OUTPUT} > /dev/null || exit -1
make clean   > /dev/null || exit -1
make install > /dev/null || exit -1

for i in `seq 1 ${COUNT}`;
do
    if $WRITE ; then
        dd if=/dev/urandom of=${RAND_WFILE} bs=${DATA_SIZE} count=1
        run_test nvme write ${DEVICE} --start-block=0 --block-count=0 \
            --metadata-size=${METADATA_SIZE} --data-size=${DATA_SIZE} \
            --data ${RAND_WFILE} --latency
        rm ${RAND_WFILE} > /dev/null
    else
        run_test nvme read ${DEVICE} --start-block=0 --block-count=0 \
            --metadata-size=${METADATA_SIZE} --data-size=${DATA_SIZE} \
            --data ${RAND_RFILE} --latency
        rm ${RAND_RFILE} > /dev/null
    fi
done

# Calculate average latency
SUM=0
for i in `cat ${OUTPUT} | awk '{print $3}' | xargs`
do
    SUM=$(($SUM + $i))
done
AVERAGE=$(echo "scale=2; $SUM/$COUNT" | bc -l)
echo "Average Latency: $AVERAGE us"
070701015D6C7A000081A4000003E80000006400000001642C0FB5000001DD000000000000004A00000000000000000000002100000000nvme-cli/subprojects/json-c.wrap  [wrap-file]
directory = json-c-0.16
source_url = https://s3.amazonaws.com/json-c_releases/releases/json-c-0.16.tar.gz
source_filename = json-c-0.16.tar.gz
source_hash = 8e45ac8f96ec7791eaf3bb7ee50e9c2100bbbc87b8d0f1d030c5ba8a0288d96b
patch_filename = json-c_0.16-3_patch.zip
patch_url = https://wrapdb.mesonbuild.com/v2/json-c_0.16-3/get_patch
patch_hash = 6e712826ba1e6e1b6d21c6157a764984fedc6b594c9f92443498b972b6377a94
wrapdb_version = 0.16-3

[provide]
json-c = json_c_dep
   070701018A403A000081A4000003E80000006400000001646E2B2D00000090000000000000004A00000000000000000000002200000000nvme-cli/subprojects/libnvme.wrap [wrap-git]
url = https://github.com/openSUSE/libnvme.git
revision = SLE15-SP5-next

[provide]
libnvme = libnvme_dep
libnvme-mi = libnvme_mi_dep
070701015D6C7D000081A4000003E80000006400000001642C0FB500000F68000000000000004A00000000000000000000001600000000nvme-cli/tests/README nvmetests
=========

    This contains a NVMe tests framework. The purpose of this framework
    to use nvme cli and test various supported commands and scenarios for
    NVMe device.

    In current implementation this framework uses nvme-cli to
    interact with underlying controller/namespace.

    Note these tests expect to run against real hardware and will
    read and write data to /dev/nvme0!

    DO NOT RUN THEM IF YOU DO NOT KNOW WHAT YOU ARE DOING!

    You have been warned.

1. Common Package Dependencies
------------------------------

    1. Python(>= 3.3)
    2. nose2 (Installation guide http://nose2.readthedocs.io/)
    3. flake8 (https://pypi.python.org/pypi/flake8)
    4. mypy (https://pypi.org/project/mypy/)
    5. autopep8 (https://pypi.org/project/autopep8/)
    6. isort (https://pypi.org/project/isort/)

    Python package management system pip can be used to install most of the
    listed packages(https://pip.pypa.io/en/stable/installing/) :-
    $ pip install nose2 flake8 mypy autopep8 isort

2. Overview
-----------

    This framework follows simple class hierarchy. Each test file contains
    one test. Each test is direct subclass or indirect subclass of TestNVMe
    class which represents one testcase. To write a new testcase one can copy
    existing template "nvme_simple_template_test.py" and start adding new
    testcase specific functionality. For detailed information please look into
    section 3.

    For more information about tests, class hierarchy and code please refer :-

    1. Documentation :- html/
    2. Class Index :-  html/index.html
    3. Class Hierarchy :- html/class-tree.html

    For each testcase it will create log directory mentioned in
    configuration file. This directory will be used for a temporary files
    and storing execution logs of each testcases. Current implementation stores
    stdout and stderr for each testcase under log directory, e.g. :-

        $ tree nvmetests/
        nvmetests/
        â”œâ”€â”€ TestNVMeAttachDetachNSCmd
        â”‚Â Â  â”œâ”€â”€ stderr.log
        â”‚Â Â  â””â”€â”€ stdout.log
        â”œâ”€â”€ TestNVMeFlushCmd
        â”‚Â Â  â”œâ”€â”€ stderr.log
        â”‚Â Â  â””â”€â”€ stdout.log
        â””â”€â”€ TestNVMeFormatCmd
            â”œâ”€â”€ stderr.log
            â””â”€â”€ stdout.log
                 .
                 .
                 .

3. Walk-Through Example for writing a new testcase
--------------------------------------------------
    1. Copy simple test template file from current directory
       with appropriate name, replace "simple_template" with testcase name
       in new file name. Update config.json if necessary.
    2. Write a testcase main function, make sure its name is starting with
       test_*.
    3. Based on the requirement one can inherit TestNVMe or TestNVMeIO
       class.
    4. Write test precondition code into setUp. Make sure you are calling
       super class setUp.
    5. Write test post condition code into tearDown. Make sure you are calling
       super class tearDown.
    6. Before writing a new function have a look into TestNVMe to see if it
       can be reused.
    7. Once testcase is ready make sure :-
           a. Run flake8, mypy, autopep8 and isort on the testcase and fix
	      errors/warnings.
               - Example "$ ninja -C .build lint-python" will run flake8 and
	         mypy on all the python files in current directory.
	       - Example "$ ninja -C .build format-python" will run autopep8 and
	         isort on all the python files in the current directory.

4. Running testcases with framework
-----------------------------------
    1. Running single testcase (in the source tree) with nose2 :-
       $ nose2 --verbose --start-dir tests nvme_writezeros_test
       $ nose2 --verbose --start-dir tests nvme_read_write_test

    2. Running all the testcases (in the build root directory) with ninja :-
       $ ninja test -C .build
070701015D6C7E000081A4000003E80000006400000001642C0FB500000269000000000000004A00000000000000000000001400000000nvme-cli/tests/TODO   nvmetests TODO List
===================

Feature list (with priority):-
------------------------------
    1. PRE and POST section improvements :-
        a. Add functionality to load and unload driver.
        b. Make sure default namespace is present, if not create one before
           any test begins. Read the default namespace size from config file.
    2. Add system statistics collection in PRE and POST section of testcase.
    3. Create execution summary file under log directory at the end of each
       run.
    4. Add tracing functionality to track overall and current progress of the
       testcase.
   070701015D6C7F000081A4000003E80000006400000001642C0FB50000005A000000000000004A00000000000000000000001B00000000nvme-cli/tests/config.json    {
	"controller" : "/dev/nvme0",
        "ns1": "/dev/nvme0n1",
	"log_dir": "nvmetests/"
}
  070701015D6C80000081A4000003E80000006400000001642C0FB500000842000000000000004A00000000000000000000001B00000000nvme-cli/tests/meson.build    # SPDX-License-Identifier: GPL-2.0-or-later

infra = [
  'config.json',
  'nvme_test.py',
  'nvme_test_io.py',
  'nvme_test_logger.py',
  'nvme_simple_template_test.py',
]

tests = [
  'nvme_attach_detach_ns_test.py',
  'nvme_compare_test.py',
  'nvme_create_max_ns_test.py',
  'nvme_error_log_test.py',
  'nvme_flush_test.py',
  'nvme_format_test.py',
  'nvme_fw_log_test.py',
  'nvme_get_features_test.py',
  'nvme_id_ctrl_test.py',
  'nvme_id_ns_test.py',
  'nvme_read_write_test.py',
  'nvme_smart_log_test.py',
  'nvme_writeuncor_test.py',
  'nvme_writezeros_test.py',
  'nvme_copy_test.py',
  'nvme_dsm_test.py',
  'nvme_verify_test.py',
  'nvme_lba_status_log_test.py',
  'nvme_get_lba_status_test.py',
]

runtests = find_program('nose2', required : false)

if meson.version().version_compare('>= 0.56')
    nvmecli_path = meson.project_build_root()
else
    nvmecli_path = meson.build_root()
endif

if runtests.found()
  foreach file : infra + tests
    configure_file(
      input: file,
      output: file,
      copy: true)
  endforeach

  foreach t : tests
    t_name = t.split('.')[0]
    test(t_name, runtests,
         args: ['--verbose', '--start-dir', meson.current_build_dir(), t_name],
         env: ['PATH=' + nvmecli_path + ':/usr/bin:/usr/sbin'],
         timeout: 500)
  endforeach
endif

python_module = import('python')

python = python_module.find_installation('python3')

mypy = find_program(
    'mypy',
    required : false,
)
flake8 = find_program(
    'flake8',
    required : false,
)
linter_script = files('run_py_linters.py')

if mypy.found() and flake8.found()
    run_target(
        'lint-python',
        command : [python, linter_script, 'lint'],
    )
else
    message('Mypy or Flake8 not found. Python linting disabled')
endif


autopep8 = find_program(
    'autopep8',
    required : false,
)
isort = find_program(
    'isort',
    required : false,
)

if autopep8.found() and isort.found()
    run_target(
        'format-python',
        command : [python, linter_script, 'format'],
    )
else
    message('autopep8 or isort not found. Python formating disabled')
endif
  070701015D6C81000081A4000003E80000006400000001642C0FB500000C81000000000000004A00000000000000000000002D00000000nvme-cli/tests/nvme_attach_detach_ns_test.py  # SPDX-License-Identifier: GPL-2.0-or-later
#
# Copyright (c) 2015-2016 Western Digital Corporation or its affiliates.
#
# 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 Street, Fifth Floor, Boston,
# MA  02110-1301, USA.
#
#   Author: Chaitanya Kulkarni <chaitanya.kulkarni@hgst.com>
#
"""
NVMe Namespace Management Testcase:-

    1. Create Namespace and validate.
    2. Attach Namespace to controller.
    3. Run IOs on Namespace under test.
    4. Detach Namespace from controller.
    5. Delete Namespace.
"""

import time

from nvme_test import TestNVMe


class TestNVMeAttachDetachNSCmd(TestNVMe):

    """
    Represents Attach, Detach namespace testcase.

        - Attributes:
              - dps : data protection information.
              - flabs : LBA format information.
              - nsze : namespace size.
              - ncap : namespace capacity.
              - ctrl_id : controller id.
    """

    def setUp(self):
        """ Pre Section for TestNVMeAttachDetachNSCmd """
        super().setUp()
        self.dps = 0
        self.flbas = 0
        self.nsze = 0x1400000
        self.ncap = 0x1400000
        self.setup_log_dir(self.__class__.__name__)
        self.ctrl_id = self.get_ctrl_id()
        self.delete_all_ns()
        time.sleep(1)

    def tearDown(self):
        """
        Post Section for TestNVMeAttachDetachNSCmd

            - Create primary namespace.
            - Atttach it to controller.
            - Call super class's destructor.
        """
        self.assertEqual(self.create_and_validate_ns(self.default_nsid,
                                                     self.nsze,
                                                     self.ncap,
                                                     self.flbas,
                                                     self.dps), 0)
        self.attach_ns(self.ctrl_id, self.default_nsid)
        super().tearDown()

    def test_attach_detach_ns(self):
        """ Testcase main """
        err = self.create_and_validate_ns(self.default_nsid,
                                          self.nsze,
                                          self.ncap,
                                          self.flbas,
                                          self.dps)
        self.assertEqual(err, 0)
        self.assertEqual(self.attach_ns(self.ctrl_id, self.default_nsid), 0)

        self.run_ns_io(self.default_nsid, 0)

        self.assertEqual(self.detach_ns(self.ctrl_id, self.default_nsid), 0)
        self.assertEqual(self.delete_and_validate_ns(self.default_nsid), 0)
        self.nvme_reset_ctrl()
   070701015D6C82000081A4000003E80000006400000001642C0FB500000C13000000000000004A00000000000000000000002400000000nvme-cli/tests/nvme_compare_test.py   # SPDX-License-Identifier: GPL-2.0-or-later
#
# Copyright (c) 2015-2016 Western Digital Corporation or its affiliates.
#
# 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 Street, Fifth Floor, Boston,
# MA  02110-1301, USA.
#
#   Author: Chaitanya Kulkarni <chaitanya.kulkarni@hgst.com>
#
"""
NVMe Compare Command Testcase:-

    1. Create a data file 1 with pattern 1515 to write.
    2. Create a data file 2 with pattern 2525 to compare with.
    3. Write a block of data pattern using data file1.
    4. Compare written block to data file 2's pattern; shall fail.
    5. Compare written block to data file1's pattern; shall pass.

"""

from nvme_test_io import TestNVMeIO


class TestNVMeCompareCmd(TestNVMeIO):

    """
    Represents Compare Testcase. Inherits TestNVMeIO class.

        - Attributes:
              - data_size : data size to perform IO.
              - start_block : starting block of to perform IO.
              - compare_file : data file to use in nvme compare command.
              - test_log_dir : directory for logs, temp files.
    """

    def setUp(self):
        """ Pre Section for TestNVMeCompareCmd """
        super().setUp()
        self.data_size = 1024
        self.start_block = 1023
        self.setup_log_dir(self.__class__.__name__)
        self.compare_file = self.test_log_dir + "/" + "compare_file.txt"
        self.write_file = self.test_log_dir + "/" + self.write_file
        self.create_data_file(self.write_file, self.data_size, "15")
        self.create_data_file(self.compare_file, self.data_size, "25")

    def tearDown(self):
        """ Post Section for TestNVMeCompareCmd """
        super().tearDown()

    def nvme_compare(self, cmp_file):
        """ Wrapper for nvme compare command.
           - Args:
               - cmp_file : data file used in nvme compare command.
           - Returns:
               - return code of the nvme compare command.
        """
        compare_cmd = "nvme compare " + self.ns1 + " --start-block=" + \
                      str(self.start_block) + " --block-count=" + \
                      str(self.block_count) + " --data-size=" + \
                      str(self.data_size) + " --data=" + cmp_file
        return self.exec_cmd(compare_cmd)

    def test_nvme_compare(self):
        """ Testcase main """
        self.assertEqual(self.nvme_write(), 0)
        self.assertNotEqual(self.nvme_compare(self.compare_file), 0)
        self.assertEqual(self.nvme_compare(self.write_file), 0)
 070701015D6C83000081A4000003E80000006400000001642C0FB500000664000000000000004A00000000000000000000002100000000nvme-cli/tests/nvme_copy_test.py  # SPDX-License-Identifier: GPL-2.0-or-later
#
# This file is part of nvme-cli
#
# Copyright (c) 2022 Samsung Electronics Co., Ltd. All Rights Reserved.
#
# Author: Arunpandian J <apj.arun@samsung.com>

"""
NVMe Copy Testcase:-

    1. Issue copy command on set of block; shall pass.

"""

from nvme_test import TestNVMe


class TestNVMeCopy(TestNVMe):

    """
    Represents NVMe Verify testcase.
        - Attributes:
              - start_block :   starting block of to verify operation.
              - range :         Range of blocks for DSM operation.
              - slbs :          64-bit addr of first block per range
              - test_log_dir :  directory for logs, temp files.
    """

    def setUp(self):
        """ Pre Section for TestNVMeCopy """
        super().setUp()
        self.start_block = 0
        self.range = 1
        self.slbs = 1
        self.namespace = 1
        self.setup_log_dir(self.__class__.__name__)

    def tearDown(self):
        """ Post Section for TestNVMeCopy """
        super().tearDown()

    def copy(self):
        """ Wrapper for nvme copy
            - Args:
                - None
            - Returns:
                - return code for nvme copy command.
        """
        copy_cmd = "nvme copy " + self.ctrl + \
                   " --namespace-id=" + str(self.namespace) + \
                   " --sdlba=" + str(self.start_block) + \
                   " --blocks=" + str(self.range) + \
                   " --slbs=" + str(self.range)
        return self.exec_cmd(copy_cmd)

    def test_copy(self):
        """ Testcase main """
        self.assertEqual(self.copy(), 0)
070701015D6C84000081A4000003E80000006400000001642C0FB500000E54000000000000004A00000000000000000000002A00000000nvme-cli/tests/nvme_create_max_ns_test.py # SPDX-License-Identifier: GPL-2.0-or-later
#
# Copyright (c) 2015-2016 Western Digital Corporation or its affiliates.
#
# 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 Street, Fifth Floor, Boston,
# MA  02110-1301, USA.
#
#   Author: Chaitanya Kulkarni <chaitanya.kulkarni@hgst.com>
#
"""
NVMe Namespace Management Testcase:-

    1. Create Maximum number of Namespaces and validate.
    2. Attach all Namespaces to controller.
    3. Run IOs on Namespace under test.
    4. Detach Maximum number of Namespaces from controller.
    5. Delete all Namespaces.
"""

import time

from nvme_test import TestNVMe


class TestNVMeCreateMaxNS(TestNVMe):

    """
    Represents Attach, Detach namespace testcase.

        - Attributes:
              - dps : data protection information.
              - flbas : LBA format information.
              - nsze : namespace size.
              - ncap : namespace capacity.
              - ctrl_id : controller id.
    """

    def setUp(self):
        """ Pre Section for TestNVMeAttachDetachNSCmd """
        super().setUp()
        self.dps = 0
        self.flbas = 0
        self.nsze = int(self.get_ncap() /
                        self.get_format() / self.get_max_ns())
        self.ncap = self.nsze
        self.setup_log_dir(self.__class__.__name__)
        self.max_ns = self.get_max_ns()
        self.ctrl_id = self.get_ctrl_id()
        self.delete_all_ns()
        time.sleep(1)

    def tearDown(self):
        """
        Post Section for TestNVMeAttachDetachNSCmd

            - Create primary namespace.
            - Atttach it to controller.
            - Call super class's destructor.
        """
        self.assertEqual(self.create_and_validate_ns(self.default_nsid,
                                                     self.nsze,
                                                     self.ncap,
                                                     self.flbas,
                                                     self.dps), 0)
        self.attach_ns(self.ctrl_id, self.default_nsid)
        super.tearDown()

    def test_attach_detach_ns(self):
        """ Testcase main """
        for nsid in range(1, self.max_ns):
            print("##### Creating " + str(nsid))
            err = self.create_and_validate_ns(nsid,
                                              self.nsze,
                                              self.ncap,
                                              self.flbas,
                                              self.dps)
            self.assertEqual(err, 0)
            print("##### Attaching " + str(nsid))
            self.assertEqual(self.attach_ns(self.ctrl_id, nsid), 0)
            print("##### Running IOs in " + str(nsid))
            self.run_ns_io(nsid, 0)

        for nsid in range(1, self.max_ns):
            print("##### Detaching " + str(nsid))
            self.assertEqual(self.detach_ns(self.ctrl_id, nsid), 0)
            print("#### Deleting " + str(nsid))
            self.assertEqual(self.delete_and_validate_ns(nsid), 0)
        self.nvme_reset_ctrl()
070701015D6C85000081A4000003E80000006400000001642C0FB5000005C7000000000000004A00000000000000000000002000000000nvme-cli/tests/nvme_dsm_test.py   # SPDX-License-Identifier: GPL-2.0-or-later
#
# This file is part of nvme-cli
#
# Copyright (c) 2022 Samsung Electronics Co., Ltd. All Rights Reserved.
#
# Author: Arunpandian J <apj.arun@samsung.com>

"""
NVMe DSM Testcase:-

    1. Issue DSM command on set of block; shall pass.

"""

from nvme_test import TestNVMe


class TestNVMeDsm(TestNVMe):

    """
    Represents NVMe Verify testcase.
        - Attributes:
              - start_block :   starting block of to verify operation.
              - range :         Range of blocks for DSM operation.
              - test_log_dir :  directory for logs, temp files.
    """

    def setUp(self):
        """ Pre Section for TestNVMeDsm """
        super().setUp()
        self.start_block = 0
        self.range = 0
        self.namespace = 1
        self.setup_log_dir(self.__class__.__name__)

    def tearDown(self):
        """ Post Section for TestNVMeDsm """
        super().tearDown()

    def dsm(self):
        """ Wrapper for nvme verify
            - Args:
                - None
            - Returns:
                - return code for nvme dsm command.
        """
        dsm_cmd = "nvme dsm " + self.ctrl + \
                  " --namespace-id=" + str(self.namespace) + \
                  " --blocks=" + str(self.range) + \
                  " --slbs=" + str(self.start_block)
        return self.exec_cmd(dsm_cmd)

    def test_dsm(self):
        """ Testcase main """
        self.assertEqual(self.dsm(), 0)
 070701015D6C86000081A4000003E80000006400000001642C0FB500000725000000000000004A00000000000000000000002600000000nvme-cli/tests/nvme_error_log_test.py # SPDX-License-Identifier: GPL-2.0-or-later
#
# Copyright (c) 2015-2016 Western Digital Corporation or its affiliates.
#
# 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 Street, Fifth Floor, Boston,
# MA  02110-1301, USA.
#
#   Author: Chaitanya Kulkarni <chaitanya.kulkarni@hgst.com>
#
"""
NVMe Smart Log Verification Testcase:-

    1. Execute error-log on controller.

"""

from nvme_test import TestNVMe


class TestNVMeErrorLogCmd(TestNVMe):

    """
    Represents Smart Log testcae.

        - Attributes:
    """

    def setUp(self):
        """ Pre Section for TestNVMeErrorLogCmd """
        super().setUp()
        self.setup_log_dir(self.__class__.__name__)

    def tearDown(self):
        """
        Post Section for TestNVMeErrorLogCmd

            - Call super class's destructor.
        """
        super().tearDown()

    def get_error_log_ctrl(self):
        """ Wrapper for executing error-log on controller.
            - Args:
                - None:
            - Returns:
                - 0 on success, error code on failure.
        """
        return self.get_error_log()

    def test_get_error_log(self):
        """ Testcase main """
        self.assertEqual(self.get_error_log_ctrl(), 0)
   070701015D6C87000081A4000003E80000006400000001642C0FB500000712000000000000004A00000000000000000000002200000000nvme-cli/tests/nvme_flush_test.py # SPDX-License-Identifier: GPL-2.0-or-later
#
# Copyright (c) 2015-2016 Western Digital Corporation or its affiliates.
#
# 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 Street, Fifth Floor, Boston,
# MA  02110-1301, USA.
#
#   Author: Chaitanya Kulkarni <chaitanya.kulkarni@hgst.com>
#
"""
NVMe Flush Command Testcase:-

    1. Execute nvme flush on controller.

"""

from nvme_test import TestNVMe


class TestNVMeFlushCmd(TestNVMe):

    """
    Represents Flush Testcase. Inherits TestNVMe class.

        - Attributes:
    """

    def setUp(self):
        """ Pre Section for TestNVMeFlushCmd """
        super().setUp()
        self.setup_log_dir(self.__class__.__name__)

    def tearDown(self):
        """ Post Section for TestNVMeFlushCmd """
        super().tearDown()

    def nvme_flush(self):
        """ Wrapper for nvme flush command.
           - Args:
               - None
           - Returns:
               - None
        """
        flush_cmd = "nvme flush " + self.ctrl + " -n " + str(self.default_nsid)
        print(flush_cmd)
        return self.exec_cmd(flush_cmd)

    def test_nvme_flush(self):
        """ Testcase main """
        self.assertEqual(self.nvme_flush(), 0)
  070701015D6C88000081A4000003E80000006400000001642C0FB5000019DA000000000000004A00000000000000000000002300000000nvme-cli/tests/nvme_format_test.py    # SPDX-License-Identifier: GPL-2.0-or-later
#
# Copyright (c) 2015-2016 Western Digital Corporation or its affiliates.
#
# 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 Street, Fifth Floor, Boston,
# MA  02110-1301, USA.
#
#   Author: Chaitanya Kulkarni <chaitanya.kulkarni@hgst.com>
#
"""
Namespace Format testcase :-

    1. Create, attach, detach, delete primary namespace and
       extract the supported format information from default namespace:-
           - List of the supported format.
           - List of Metadata Size per format. Based on this we calculate
             data protection parameter at the time of namespace.
           - List of LBA Data Size per format.
    2. Use the collected information and iterate through each supported
       format:-
           - Create namespace.
           - Attach namespace.
           - Run IOs on the namespace under test.
           - Detach namespace
           - Delete Namespace.
"""

import subprocess
import time

from nvme_test import TestNVMe


class TestNVMeFormatCmd(TestNVMe):

    """
    Represents Format testcase.

        - Attributes:
              - dps : data protection information.
              - flabs : LBA format information.
              - nsze : namespace size.
              - ncap : namespace capacity.
              - ctrl_id : controller id.
              - lba_format_list : lis of supported format.
              - ms_list : list of metadat size per format.
              - lbads_list : list of LBA data size per format.
              - test_log_dir : directory for logs, temp files.
    """

    def setUp(self):
        """ Pre Section for TestNVMeFormatCmd """
        super().setUp()
        self.dps = 0                 # ns data protection settings
        self.flbas = 0               # ns formattes logical block settings
        self.nsze = 0x1400000        # ns size
        self.ncap = 0x1400000        # ns capacity
        self.ctrl_id = self.get_ctrl_id()
        self.lba_format_list = []
        self.ms_list = []
        self.lbads_list = []
        self.test_log_dir = self.log_dir + "/" + self.__class__.__name__
        self.setup_log_dir(self.__class__.__name__)
        self.delete_all_ns()
        time.sleep(1)

    def tearDown(self):
        """
        Post Section for TestNVMeFormatCmd

            - Create primary namespace.
            - Atttach it to controller.
            - Call super class's destructor.
        """
        self.assertEqual(self.create_and_validate_ns(self.default_nsid,
                                                     self.nsze,
                                                     self.ncap,
                                                     self.flbas,
                                                     self.dps), 0)
        self.attach_ns(self.ctrl_id, self.default_nsid)
        super().tearDown()

    def attach_detach_primary_ns(self):
        """ Extract supported format information using default namespace """
        self.assertEqual(self.create_and_validate_ns(self.default_nsid,
                                                     self.nsze,
                                                     self.ncap,
                                                     self.flbas,
                                                     self.dps), 0)
        self.assertEqual(self.attach_ns(self.ctrl_id, self.default_nsid), 0)
        # read lbaf information
        id_ns = "nvme id-ns " + self.ctrl + \
                " -n1 | grep ^lbaf | awk '{print $2}' | tr -s \"\\n\" \" \""
        proc = subprocess.Popen(id_ns, shell=True, stdout=subprocess.PIPE,
                                encoding='utf-8')
        self.lba_format_list = proc.stdout.read().strip().split(" ")
        if proc.wait() == 0:
            # read lbads information
            id_ns = "nvme id-ns " + self.ctrl + \
                    " -n1 | grep ^lbaf | awk '{print $5}'" + \
                    " | cut -f 2 -d ':' | tr -s \"\\n\" \" \""
            proc = subprocess.Popen(id_ns, shell=True, stdout=subprocess.PIPE,
                                    encoding='utf-8')
            self.lbads_list = proc.stdout.read().strip().split(" ")
            # read metadata information
            id_ns = "nvme id-ns " + self.ctrl + \
                    " -n1 | grep ^lbaf | awk '{print $4}'" + \
                    " | cut -f 2 -d ':' | tr -s \"\\n\" \" \""
            proc = subprocess.Popen(id_ns, shell=True, stdout=subprocess.PIPE,
                                    encoding='utf-8')
            self.ms_list = proc.stdout.read().strip().split(" ")
            self.assertEqual(self.detach_ns(self.ctrl_id, self.default_nsid), 0)
            self.assertEqual(self.delete_and_validate_ns(self.default_nsid), 0)
            self.nvme_reset_ctrl()

    def test_format_ns(self):
        """ Testcase main """
        # extract the supported format information.
        self.attach_detach_primary_ns()

        # iterate through all supported format
        for i in range(0, len(self.lba_format_list)):
            print("\nlba format " + str(self.lba_format_list[i]) +
                  " lbad       " + str(self.lbads_list[i]) +
                  " ms         " + str(self.ms_list[i]))
            metadata_size = 1 if self.ms_list[i] == '8' else 0
            err = self.create_and_validate_ns(self.default_nsid,
                                              self.nsze,
                                              self.ncap,
                                              self.lba_format_list[i],
                                              metadata_size)
            self.assertEqual(err, 0)
            self.assertEqual(self.attach_ns(self.ctrl_id, self.default_nsid), 0)
            self.run_ns_io(self.default_nsid, self.lbads_list[i])
            time.sleep(5)
            self.assertEqual(self.detach_ns(self.ctrl_id, self.default_nsid), 0)
            self.assertEqual(self.delete_and_validate_ns(self.default_nsid), 0)
            self.nvme_reset_ctrl()
  070701015D6C89000081A4000003E80000006400000001642C0FB50000087A000000000000004A00000000000000000000002300000000nvme-cli/tests/nvme_fw_log_test.py    # SPDX-License-Identifier: GPL-2.0-or-later
#
# Copyright (c) 2015-2016 Western Digital Corporation or its affiliates.
#
# 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 Street, Fifth Floor, Boston,
# MA  02110-1301, USA.
#
#   Author: Madhusudhana S.J <madhusudhana.sj@wdc.com>
#   Author: Dong Ho <dong.ho@wdc.com>
#
"""
NVMe Firmware Log Testcase :-

    1. Execute fw-log on a device.
"""

import subprocess

from nvme_test import TestNVMe


class TestNVMeFwLogCmd(TestNVMe):

    """
    Represents NVMe Firmware Log test.
    """

    def setUp(self):
        """ Pre Section for TestNVMeFwLogCmd. """
        super().setUp()
        self.setup_log_dir(self.__class__.__name__)

    def tearDown(self):
        """
        Post Section for TestNVMeSimpleTestTemplate.

            - Call super class's destructor.
        """
        super().tearDown()

    def get_fw_log(self):
        """ Wrapper for executing nvme fw-log.
            - Args:
                - None
            - Returns:
                - 0 on success, error code on failure.
        """
        err = 0
        fw_log_cmd = "nvme fw-log " + self.ctrl
        proc = subprocess.Popen(fw_log_cmd,
                                shell=True,
                                stdout=subprocess.PIPE,
                                encoding='utf-8')
        fw_log_output = proc.communicate()[0]
        print("\n" + fw_log_output + "\n")
        err = proc.wait()
        return err

    def test_fw_log(self):
        """ Testcase main """
        self.assertEqual(self.get_fw_log(), 0)
  070701015D6C8A000081A4000003E80000006400000001642C0FB500001060000000000000004A00000000000000000000002900000000nvme-cli/tests/nvme_get_features_test.py  # SPDX-License-Identifier: GPL-2.0-or-later
#
# Copyright (c) 2015-2016 Western Digital Corporation or its affiliates.
#
# 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 Street, Fifth Floor, Boston,
# MA  02110-1301, USA.
#
#   Author: Chaitanya Kulkarni <chaitanya.kulkarni@hgst.com>
#
"""
Get Features Testcase:-

Test the Mandatory features with get features command:-
    1. 01h M Arbitration.
    2. 02h M Power Management.
    3. 04h M Temperature Threshold.
    4. 05h M Error Recovery.
    5. 07h M Number of Queues.
    6. 08h M Interrupt Coalescing.
    7. 09h M Interrupt Vector Configuration.
    8. 0Ah M Write Atomicity Normal.
    9. 0Bh M Asynchronous Event Configuration.
"""

import subprocess

from nvme_test import TestNVMe


class TestNVMeGetMandatoryFeatures(TestNVMe):

    """
    Represents Get Features testcase.

        - Attributes:
              - feature_id_list : list of the mandatory features.
              - get_vector_list_cmd : vector list collection for 09h.
              - vector_list_len : numer of the interrupt vectors.
    """

    def setUp(self):
        """ Pre Section for TestNVMeGetMandatoryFeatures """
        super().setUp()
        self.setup_log_dir(self.__class__.__name__)
        self.feature_id_list = ["0x01", "0x02", "0x04", "0x05", "0x07",
                                "0x08", "0x09", "0x0A", "0x0B"]
        device = self.ctrl.split('/')[-1]
        get_vector_list_cmd = "grep " + device + "q /proc/interrupts |" \
                              " cut -d : -f 1 | tr -d ' ' | tr '\n' ' '"
        proc = subprocess.Popen(get_vector_list_cmd,
                                shell=True,
                                stdout=subprocess.PIPE,
                                encoding='utf-8')
        self.vector_list_len = len(proc.stdout.read().strip().split(" "))

    def tearDown(self):
        """ Post Section for TestNVMeGetMandatoryFeatures

            Call super class's destructor.
        """
        super().tearDown()

    def get_mandatory_features(self, feature_id):
        """ Wrapper for NVMe get features command
            - Args:
                - feature_id : feature id to be used with get feature command.
            - Returns:
                - None
        """
        if str(feature_id) == "0x09":
            for vector in range(self.vector_list_len):
                get_feat_cmd = "nvme get-feature " + self.ctrl + \
                               " --feature-id=" + str(feature_id) + \
                               " --cdw11=" + str(vector) + " -H"
                proc = subprocess.Popen(get_feat_cmd,
                                        shell=True,
                                        stdout=subprocess.PIPE,
                                        encoding='utf-8')
                feature_output = proc.communicate()[0]
                print(feature_output)
                self.assertEqual(proc.wait(), 0)
        else:
            get_feat_cmd = "nvme get-feature " + self.ctrl + \
                           " --feature-id=" + str(feature_id) + " -H"
            proc = subprocess.Popen(get_feat_cmd,
                                    shell=True,
                                    stdout=subprocess.PIPE,
                                    encoding='utf-8')
            feature_output = proc.communicate()[0]
            print(feature_output)
            self.assertEqual(proc.wait(), 0)

    def test_get_mandatory_features(self):
        """ Testcase main """
        for feature_id in self.feature_id_list:
            self.get_mandatory_features(feature_id)
070701015D6C8B000081A4000003E80000006400000001642C0FB5000007F1000000000000004A00000000000000000000002B00000000nvme-cli/tests/nvme_get_lba_status_test.py    # SPDX-License-Identifier: GPL-2.0-or-later
#
# This file is part of nvme-cli
#
# Copyright (c) 2022 Samsung Electronics Co., Ltd. All Rights Reserved.
#
# Author: Arunpandian J <apj.arun@samsung.com>

"""
NVMe LBA Status Log Testcase :-

    1. Execute get-lba-status on a device.
"""

import subprocess

from nvme_test import TestNVMe


class TestNVMeGetLbaStatusCmd(TestNVMe):

    """
    Represents Get LBA Status test.
    """

    def setUp(self):
        """ Pre Section for TestNVMeGetLbaStatusCmd. """
        super().setUp()
        self.start_lba = 0
        self.block_count = 0
        self.namespace = 1
        self.max_dw = 1
        self.action = 11
        self.range_len = 1
        self.setup_log_dir(self.__class__.__name__)

    def tearDown(self):
        """
        Post Section for TestNVMeGetLbaStatusCmd.

            - Call super class's destructor.
        """
        super().tearDown()

    def get_lba_status(self):
        """ Wrapper for executing nvme get-lba-status.
            - Args:
                - None
            - Returns:
                - 0 on success, error code on failure.
        """
        err = 0
        get_lba_status_cmd = "nvme get-lba-status " + self.ctrl + \
                             " --namespace-id=" + str(self.namespace) + \
                             " --start-lba=" + str(self.start_lba) + \
                             " --max-dw=" + str(self.max_dw) + \
                             " --action=" + str(self.action) + \
                             " --range-len=" + str(self.range_len)
        proc = subprocess.Popen(get_lba_status_cmd,
                                shell=True,
                                stdout=subprocess.PIPE,
                                encoding='utf-8')
        get_lba_status_output = proc.communicate()[0]
        print("\n" + get_lba_status_output + "\n")
        err = proc.wait()
        return err

    def test_get_lba_status(self):
        """ Testcase main """
        self.assertEqual(self.get_lba_status(), 0)
   070701015D6C8C000081A4000003E80000006400000001642C0FB50000066D000000000000004A00000000000000000000002400000000nvme-cli/tests/nvme_id_ctrl_test.py   # SPDX-License-Identifier: GPL-2.0-or-later
#
# Copyright (c) 2015-2016 Western Digital Corporation or its affiliates.
#
# 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 Street, Fifth Floor, Boston,
# MA  02110-1301, USA.
#
#   Author: Madhusudhana S.J <madhusudhana.sj@wdc.com>
#   Author: Dong Ho <dong.ho@wdc.com>
#
"""
NVMe Identify ctrl Testcase:-

  1. Execute id-ctrl on ctrl
  2. Execute id-ctrl vendor specific on ctrl

"""

from nvme_test import TestNVMe


class TestNVMeIdctrlCmd(TestNVMe):

    """
    Represents Id ctrl testcase
    """

    def setUp(self):
        """ Pre Section for TestNVMeIdctrlCmd. """
        super().setUp()
        self.setup_log_dir(self.__class__.__name__)

    def tearDown(self):
        """ Post Section for TestNVMeIdctrlCmd

            Call super class's destructor.
        """
        super().tearDown()

    def test_id_ctrl(self):
        """ Testcase main """
        vendor = True
        self.assertEqual(self.get_id_ctrl(), 0)
        self.assertEqual(self.get_id_ctrl(vendor), 0)
   070701015D6C8D000081A4000003E80000006400000001642C0FB500000ABF000000000000004A00000000000000000000002200000000nvme-cli/tests/nvme_id_ns_test.py # SPDX-License-Identifier: GPL-2.0-or-later
#
# Copyright (c) 2015-2016 Western Digital Corporation or its affiliates.
#
# 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 Street, Fifth Floor, Boston,
# MA  02110-1301, USA.
#
#   Author: Madhusudhana S.J <madhusudhana.sj@wdc.com>
#   Author: Dong Ho <dong.ho@wdc.com>
#
"""
NVme Identify Namespace Testcase:-

    1. Execute id-ns on a namespace
    2. Execute id-ns on all namespaces
"""

import subprocess

from nvme_test import TestNVMe


class TestNVMeIdentifyNamespace(TestNVMe):

    """
    Represents Identify Namesepace testcase
    """

    def setUp(self):
        """ Pre Section for TestNVMeIdentifyNamespace. """
        super().setUp()
        self.setup_log_dir(self.__class__.__name__)
        self.ns_list = self.get_ns_list()

    def tearDown(self):
        """
        Post Section for TestNVMeIdentifyNamespace

            - Call super class's destructor.
        """
        super().tearDown()

    def get_id_ns(self, nsid):
        """
        Wrapper for executing nvme id-ns on a namespace.
            - Args:
                - nsid : namespace id to get info from.
            - Returns:
                - 0 on success, error code on failure.
        """
        err = 0
        id_ns_cmd = "nvme id-ns " + self.ctrl + "n" + str(nsid)
        proc = subprocess.Popen(id_ns_cmd,
                                shell=True,
                                stdout=subprocess.PIPE,
                                encoding='utf-8')
        id_ns_output = proc.communicate()[0]
        print(id_ns_output + "\n")
        err = proc.wait()
        return err

    def get_id_ns_all(self):
        """
        Wrapper for executing nvme id-ns on all namespaces.
            - Args:
                - None
            - Returns:
                - 0 on success, error code on failure.
        """
        err = 0
        for namespace in self.ns_list:
            err = self.get_id_ns(str(namespace))
        return err

    def test_id_ns(self):
        """ Testcase main """
        self.assertEqual(self.get_id_ns(1), 0)
        self.assertEqual(self.get_id_ns_all(), 0)
 070701015D6C8E000081A4000003E80000006400000001642C0FB5000005EC000000000000004A00000000000000000000002B00000000nvme-cli/tests/nvme_lba_status_log_test.py    # SPDX-License-Identifier: GPL-2.0-or-later
#
# This file is part of nvme-cli
#
# Copyright (c) 2022 Samsung Electronics Co., Ltd. All Rights Reserved.
#
# Author: Arunpandian J <apj.arun@samsung.com>

"""
NVMe LBA Status Log Testcase :-

    1. Execute lba-status-log on a device.
"""

import subprocess

from nvme_test import TestNVMe


class TestNVMeLbaStatLogCmd(TestNVMe):

    """
    Represents LBA Status Log test.
    """

    def setUp(self):
        """ Pre Section for TestNVMeLbaStatLogCmd. """
        super().setUp()
        self.setup_log_dir(self.__class__.__name__)

    def tearDown(self):
        """
        Post Section for TestNVMeLbaStatLogCmd.

            - Call super class's destructor.
        """
        super().tearDown()

    def get_lba_stat_log(self):
        """ Wrapper for executing nvme lba-status-log.
            - Args:
                - None
            - Returns:
                - 0 on success, error code on failure.
        """
        err = 0
        lba_stat_log_cmd = "nvme lba-status-log " + self.ctrl
        proc = subprocess.Popen(lba_stat_log_cmd,
                                shell=True,
                                stdout=subprocess.PIPE,
                                encoding='utf-8')
        lba_stat_log_output = proc.communicate()[0]
        print("\n" + lba_stat_log_output + "\n")
        err = proc.wait()
        return err

    def test_lba_stat_log(self):
        """ Testcase main """
        self.assertEqual(self.get_lba_stat_log(), 0)
070701015D6C8F000081A4000003E80000006400000001642C0FB500000A49000000000000004A00000000000000000000002700000000nvme-cli/tests/nvme_read_write_test.py    # SPDX-License-Identifier: GPL-2.0-or-later
#
# Copyright (c) 2015-2016 Western Digital Corporation or its affiliates.
#
# 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 Street, Fifth Floor, Boston,
# MA  02110-1301, USA.
#
#   Author: Chaitanya Kulkarni <chaitanya.kulkarni@hgst.com>
#
"""
NVMe Read/Write Testcae:-

    1. Create data file with specific pattern outside of the device under test.
    2. Write data file on the namespace under test.
    3. Read the data from the namespace under test into different file.
    4. Compare file in #1 and #3.
"""

import filecmp

from nvme_test_io import TestNVMeIO


class TestNVMeReadWriteTest(TestNVMeIO):

    """
    Represents NVMe read, write testcase.

        - Attributes:
              - start_block : starting block of to perform IO.
              - compare_file : data file to use in nvme compare command.
              - test_log_dir : directory for logs, temp files.
    """

    def setUp(self):
        """ Pre Section for TestNVMeReadWriteTest """
        super().setUp()
        self.start_block = 1023
        self.test_log_dir = self.log_dir + "/" + self.__class__.__name__
        self.setup_log_dir(self.__class__.__name__)
        self.write_file = self.test_log_dir + "/" + self.write_file
        self.read_file = self.test_log_dir + "/" + self.read_file
        self.create_data_file(self.write_file, self.data_size, "15")
        open(self.read_file, 'a').close()

    def tearDown(self):
        """ Post Section for TestNVMeReadWriteTest """
        super().tearDown()

    def read_validate(self):
        """ Validate the data file read
            - Args:
                - None
            - Returns:
                - returns 0 on success, 1 on failure.
        """
        return 0 if filecmp.cmp(self.read_file, self.write_file) else 1

    def test_nvme_write(self):
        """ Testcaes main  """
        self.assertEqual(self.nvme_write(), 0)
        self.assertEqual(self.nvme_read(), 0)
        self.assertEqual(self.read_validate(), 0)
   070701015D6C90000081A4000003E80000006400000001642C0FB5000006FC000000000000004A00000000000000000000002C00000000nvme-cli/tests/nvme_simple_template_test.py   # SPDX-License-Identifier: GPL-2.0-or-later
#
# Copyright (c) 2015-2016 Western Digital Corporation or its affiliates.
#
# 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 Street, Fifth Floor, Boston,
# MA  02110-1301, USA.
#
#   Author: Chaitanya Kulkarni <chaitanya.kulkarni@hgst.com>
#
""" Simple Template test example :-
"""

from nvme_test import TestNVMe


class TestNVMeSimpleTestTemplate(TestNVMe):

    """ Represents Simple NVMe test """

    def setUp(self):
        """ Pre Section for TestNVMeSimpleTestTemplate. """
        super().setUp()
        self.setup_log_dir(self.__class__.__name__)
        # Add this test specific variables here

    def tearDown(self):
        """ Post Section for TestNVMeSimpleTestTemplate

            Call super class's destructor.
        """
        # Add this test specific cleanup code here
        super().tearDown()

    def simple_template_test(self):
        """ Wrapper for this test specific functions
            - Args:
                - None
            - Returns:
                - None
        """
        pass

    def test_get_mandetory_features(self):
        """ Testcase main """
        self.simple_template_test()
070701015D6C91000081A4000003E80000006400000001642C0FB500000AAC000000000000004A00000000000000000000002600000000nvme-cli/tests/nvme_smart_log_test.py # SPDX-License-Identifier: GPL-2.0-or-later
#
# Copyright (c) 2015-2016 Western Digital Corporation or its affiliates.
#
# 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 Street, Fifth Floor, Boston,
# MA  02110-1301, USA.
#
#   Author: Chaitanya Kulkarni <chaitanya.kulkarni@hgst.com>
#
"""
NVMe Smart Log Verification Testcase:-

    1. Execute smat-log on controller.
    2. Execute smart-log on each available namespace.

"""

from nvme_test import TestNVMe


class TestNVMeSmartLogCmd(TestNVMe):

    """
    Represents Smart Log testcae.

        - Attributes:
    """

    def setUp(self):
        """ Pre Section for TestNVMeSmartLogCmd """
        super().setUp()
        self.setup_log_dir(self.__class__.__name__)

    def tearDown(self):
        """
        Post Section for TestNVMeSmartLogCmd

            - Call super class's destructor.
        """
        super().tearDown()

    def get_smart_log_ctrl(self):
        """ Wrapper for executing smart-log on controller.
            - Args:
                - None:
            - Returns:
                - 0 on success, error code on failure.
        """
        return self.get_smart_log("0xFFFFFFFF")

    def get_smart_log_ns(self, nsid):
        """ Wrapper for executing smart-log on a namespace.
            - Args:
                - nsid: namespace id to be used in smart-log command.
            - Returns:
                - 0 on success, error code on failure.
        """
        return self.get_smart_log(nsid)

    def get_smart_log_all_ns(self):
        """ Wrapper for executing smart-log on all the namespaces.
            - Args:
                - None:
            - Returns:
                - 0 on success, error code on failure.
        """
        ns_list = self.get_ns_list()
        for nsid in range(0, len(ns_list)):
            self.get_smart_log_ns(ns_list[nsid])
        return 0

    def test_smart_log(self):
        """ Testcase main """
        self.assertEqual(self.get_smart_log_ctrl(), 0)
        smlp = self.supp_check_id_ctrl("lpa")
        if smlp & 0x1 == True:
            self.assertEqual(self.get_smart_log_all_ns(), 0)
070701015D6C92000081A4000003E80000006400000001642C0FB50000470F000000000000004A00000000000000000000001C00000000nvme-cli/tests/nvme_test.py   # SPDX-License-Identifier: GPL-2.0-or-later
#
# Copyright (c) 2015-2016 Western Digital Corporation or its affiliates.
#
# 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 Street, Fifth Floor, Boston,
# MA  02110-1301, USA.
#
#   Author: Chaitanya Kulkarni <chaitanya.kulkarni@hgst.com>
#
""" Base class for all the testcases
"""

import json
import mmap
import os
import re
import shutil
import stat
import subprocess
import sys
import time
import unittest

from nvme_test_logger import TestNVMeLogger


class TestNVMe(unittest.TestCase):

    """
    Represents a testcase, each testcase shuold inherit this
    class or appropriate subclass which is a child of this class.

    Common utility functions used in various testcases.

        - Attributes:
            - ctrl : NVMe Controller.
            - ns1 : default namespace.
            - default_nsid : default namespace id.
            - config_file : configuration file.
            - clear_log_dir : default log directory.
    """

    def setUp(self):
        """ Pre Section for TestNVMe. """
        # common code used in various testcases.
        self.ctrl = "XXX"
        self.ns1 = "XXX"
        self.test_log_dir = "XXX"
        self.default_nsid = 0x1
        self.config_file = 'tests/config.json'

        self.load_config()
        self.validate_pci_device()

    def tearDown(self):
        """ Post Section for TestNVMe. """
        if self.clear_log_dir is True:
            shutil.rmtree(self.log_dir, ignore_errors=True)

    def validate_pci_device(self):
        """ Validate underlaying device belogs to pci subsystem.
            - Args:
                - None
            - Returns:
                - None
        """
        x1, x2, dev = self.ctrl.split('/')
        cmd = cmd = "find /sys/devices -name \\*" + dev + " | grep -i pci"
        err = subprocess.call(cmd, shell=True)
        self.assertEqual(err, 0, "ERROR : Only NVMe PCI subsystem is supported")

    def load_config(self):
        """ Load Basic test configuration.
            - Args:
                - None
            - Returns:
                - None
        """
        with open(self.config_file) as data_file:
            config = json.load(data_file)
            self.ctrl = config['controller']
            self.ns1 = config['ns1']
            self.log_dir = config['log_dir']
            self.clear_log_dir = False

            if self.clear_log_dir is True:
                shutil.rmtree(self.log_dir, ignore_errors=True)

            if not os.path.exists(self.log_dir):
                os.makedirs(self.log_dir)

    def setup_log_dir(self, test_name):
        """ Set up the log directory for a testcase
            Args:
              - test_name : name of the testcase.
            Returns:
              - None
        """
        self.test_log_dir = self.log_dir + "/" + test_name
        if not os.path.exists(self.test_log_dir):
            os.makedirs(self.test_log_dir)
        sys.stdout = TestNVMeLogger(self.test_log_dir + "/" + "stdout.log")
        sys.stderr = TestNVMeLogger(self.test_log_dir + "/" + "stderr.log")

    def exec_cmd(self, cmd):
        """ Wrapper for executing a shell command and return the result. """
        proc = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE,
                                encoding='utf-8')
        return proc.wait()

    def nvme_reset_ctrl(self):
        """ Wrapper for nvme reset command.
            - Args:
                - None:
            - Returns:
                - None
        """
        nvme_reset_cmd = "nvme reset " + self.ctrl
        err = subprocess.call(nvme_reset_cmd,
                              shell=True,
                              stdout=subprocess.PIPE,
                              encoding='utf-8')
        self.assertEqual(err, 0, "ERROR : nvme reset failed")
        time.sleep(5)
        rescan_cmd = "echo 1 > /sys/bus/pci/rescan"
        proc = subprocess.Popen(rescan_cmd,
                                shell=True,
                                stdout=subprocess.PIPE,
                                stderr=subprocess.PIPE,
                                encoding='utf-8')
        time.sleep(5)
        self.assertEqual(proc.wait(), 0, "ERROR : pci rescan failed")

    def get_ctrl_id(self):
        """ Wrapper for extracting the controller id.
            - Args:
                - None
            - Returns:
                - controller id.
        """
        get_ctrl_id = "nvme list-ctrl " + self.ctrl
        proc = subprocess.Popen(get_ctrl_id,
                                shell=True,
                                stdout=subprocess.PIPE,
                                encoding='utf-8')
        err = proc.wait()
        self.assertEqual(err, 0, "ERROR : nvme list-ctrl failed")
        line = proc.stdout.readline()
        ctrl_id = line.split(":")[1].strip()
        return ctrl_id

    def get_ns_list(self):
        """ Wrapper for extrating the namespace list.
            - Args:
                - None
            - Returns:
                - List of the namespaces.
        """
        ns_list = []
        ns_list_cmd = "nvme list-ns " + self.ctrl
        proc = subprocess.Popen(ns_list_cmd,
                                shell=True,
                                stdout=subprocess.PIPE,
                                encoding='utf-8')
        self.assertEqual(proc.wait(), 0, "ERROR : nvme list namespace failed")
        for line in proc.stdout:
            ns_list.append(line.split('x')[-1])

        return ns_list

    def get_max_ns(self):
        """ Wrapper for extracting maximum number of namspaces supported.
            - Args:
                - None
            - Returns:
                - maximum number of namespaces supported.
        """
        pattern = re.compile("^nn[ ]+: [0-9]", re.IGNORECASE)
        max_ns = -1
        max_ns_cmd = "nvme id-ctrl " + self.ctrl
        proc = subprocess.Popen(max_ns_cmd,
                                shell=True,
                                stdout=subprocess.PIPE,
                                encoding='utf-8')
        err = proc.wait()
        self.assertEqual(err, 0, "ERROR : reading maximum namespace count failed")

        for line in proc.stdout:
            if pattern.match(line):
                max_ns = line.split(":")[1].strip()
                break
        print(max_ns)
        return int(max_ns)

    def get_ncap(self):
        """ Wrapper for extracting capacity.
            - Args:
                - None
            - Returns:
                - maximum number of namespaces supported.
        """
        pattern = re.compile("^tnvmcap[ ]+: [0-9]", re.IGNORECASE)
        ncap = -1
        ncap_cmd = "nvme id-ctrl " + self.ctrl
        proc = subprocess.Popen(ncap_cmd,
                                shell=True,
                                stdout=subprocess.PIPE,
                                encoding='utf-8')
        err = proc.wait()
        self.assertEqual(err, 0, "ERROR : reading nvm capacity failed")

        for line in proc.stdout:
            if pattern.match(line):
                ncap = line.split(":")[1].strip()
                break
        print(ncap)
        return int(ncap)

    def get_format(self):
        """ Wrapper for extracting format.
            - Args:
                - None
            - Returns:
                - maximum format of namespace.
        """
        # defaulting to 4K
        nvm_format = 4096
        nvm_format_cmd = "nvme id-ns " + self.ctrl + " -n1"
        proc = subprocess.Popen(nvm_format_cmd,
                                shell=True,
                                stdout=subprocess.PIPE,
                                encoding='utf-8')
        err = proc.wait()
        self.assertEqual(err, 0, "ERROR : reading nvm capacity failed")

        for line in proc.stdout:
            if "in use" in line:
                nvm_format = 2 ** int(line.split(":")[3].split()[0])
        print(nvm_format)
        return int(nvm_format)

    def delete_all_ns(self):
        """ Wrapper for deleting all the namespaces.
            - Args:
                - None
            - Returns:
                - None
        """
        delete_ns_cmd = "nvme delete-ns " + self.ctrl + " -n 0xFFFFFFFF"
        self.assertEqual(self.exec_cmd(delete_ns_cmd), 0)
        list_ns_cmd = "nvme list-ns " + self.ctrl + " --all | wc -l"
        proc = subprocess.Popen(list_ns_cmd,
                                shell=True,
                                stdout=subprocess.PIPE,
                                encoding='utf-8')
        output = proc.stdout.read().strip()
        self.assertEqual(output, '0', "ERROR : deleting all namespace failed")

    def create_ns(self, nsze, ncap, flbas, dps):
        """ Wrapper for creating a namespace.
            - Args:
                - nsze : new namespace size.
                - ncap : new namespace capacity.
                - flbas : new namespace format.
                - dps : new namespace data protection information.
            - Returns:
                - return code of the nvme create namespace command.
        """
        create_ns_cmd = "nvme create-ns " + self.ctrl + " --nsze=" + \
                        str(nsze) + " --ncap=" + str(ncap) + \
                        " --flbas=" + str(flbas) + " --dps=" + str(dps)
        return self.exec_cmd(create_ns_cmd)

    def create_and_validate_ns(self, nsid, nsze, ncap, flbas, dps):
        """ Wrapper for creating and validating a namespace.
            - Args:
                - nsid : new namespace id.
                - nsze : new namespace size.
                - ncap : new namespace capacity.
                - flbas : new namespace format.
                - dps : new namespace data protection information.
            - Returns:
                - return 0 on success, error code on failure.
        """
        err = self.create_ns(nsze, ncap, flbas, dps)
        if err == 0:
            time.sleep(2)
            id_ns_cmd = "nvme id-ns " + self.ctrl + " -n " + str(nsid)
            err = subprocess.call(id_ns_cmd,
                                  shell=True,
                                  stdout=subprocess.PIPE,
                                  encoding='utf-8')
        return err

    def attach_ns(self, ctrl_id, ns_id):
        """ Wrapper for attaching the namespace.
            - Args:
                - ctrl_id : controller id to which namespace to be attached.
                - nsid : new namespace id.
            - Returns:
                - 0 on success, error code on failure.
        """
        attach_ns_cmd = "nvme attach-ns " + self.ctrl + \
                        " --namespace-id=" + str(ns_id) + \
                        " --controllers=" + ctrl_id
        err = subprocess.call(attach_ns_cmd,
                              shell=True,
                              stdout=subprocess.PIPE,
                              encoding='utf-8')
        time.sleep(5)
        if err == 0:
            # enumerate new namespace block device
            self.nvme_reset_ctrl()
            time.sleep(5)
            # check if new namespace block device exists
            err = 0 if stat.S_ISBLK(os.stat(self.ns1).st_mode) else 1
        return err

    def detach_ns(self, ctrl_id, nsid):
        """ Wrapper for detaching the namespace.
            - Args:
                - ctrl_id : controller id to which namespace to be attached.
                - nsid : new namespace id.
            - Returns:
                - 0 on success, error code on failure.
        """
        detach_ns_cmd = "nvme detach-ns " + self.ctrl + \
                        " --namespace-id=" + str(nsid) + \
                        " --controllers=" + ctrl_id
        return subprocess.call(detach_ns_cmd,
                               shell=True,
                               stdout=subprocess.PIPE,
                               encoding='utf-8')

    def delete_and_validate_ns(self, nsid):
        """ Wrapper for deleting and validating that namespace is deleted.
            - Args:
                - nsid : new namespace id.
            - Returns:
                - 0 on success, 1 on failure.
        """
        # delete the namespace
        delete_ns_cmd = "nvme delete-ns " + self.ctrl + " -n " + str(nsid)
        err = subprocess.call(delete_ns_cmd,
                              shell=True,
                              stdout=subprocess.PIPE,
                              encoding='utf-8')
        self.assertEqual(err, 0, "ERROR : delete namespace failed")
        return err

    def get_smart_log(self, nsid):
        """ Wrapper for nvme smart-log command.
            - Args:
                - nsid : namespace id to get smart log from.
            - Returns:
                - 0 on success, error code on failure.
        """
        smart_log_cmd = "nvme smart-log " + self.ctrl + " -n " + str(nsid)
        print(smart_log_cmd)
        proc = subprocess.Popen(smart_log_cmd,
                                shell=True,
                                stdout=subprocess.PIPE,
                                encoding='utf-8')
        err = proc.wait()
        self.assertEqual(err, 0, "ERROR : nvme smart log failed")

        for line in proc.stdout:
            if "data_units_read" in line:
                data_units_read = \
                    line.replace(",", "", 1)
            if "data_units_written" in line:
                data_units_written = \
                    line.replace(",", "", 1)
            if "host_read_commands" in line:
                host_read_commands = \
                    line.replace(",", "", 1)
            if "host_write_commands" in line:
                host_write_commands = \
                    line.replace(",", "", 1)

        print("data_units_read " + data_units_read)
        print("data_units_written " + data_units_written)
        print("host_read_commands " + host_read_commands)
        print("host_write_commands " + host_write_commands)
        return err

    def get_id_ctrl(self, vendor=False):
        """ Wrapper for nvme id-ctrl command.
            - Args:
              - None
            - Returns:
              - 0 on success, error code on failure.
        """
        if not vendor:
            id_ctrl_cmd = "nvme id-ctrl " + self.ctrl
        else:
            id_ctrl_cmd = "nvme id-ctrl -v " + self.ctrl
        print(id_ctrl_cmd)
        proc = subprocess.Popen(id_ctrl_cmd,
                                shell=True,
                                stdout=subprocess.PIPE,
                                encoding='utf-8')
        err = proc.wait()
        self.assertEqual(err, 0, "ERROR : nvme id controller failed")
        return err

    def get_error_log(self):
        """ Wrapper for nvme error-log command.
            - Args:
                - None
            - Returns:
                - 0 on success, error code on failure.
        """
        pattern = re.compile("^ Entry\[[ ]*[0-9]+\]")
        error_log_cmd = "nvme error-log " + self.ctrl
        proc = subprocess.Popen(error_log_cmd,
                                shell=True,
                                stdout=subprocess.PIPE,
                                encoding='utf-8')
        err = proc.wait()
        self.assertEqual(err, 0, "ERROR : nvme error log failed")
        line = proc.stdout.readline()
        err_log_entry_count = int(line.split(" ")[5].strip().split(":")[1])
        entry_count = 0
        for line in proc.stdout:
            if pattern.match(line):
                entry_count += 1

        return 0 if err_log_entry_count == entry_count else 1

    def run_ns_io(self, nsid, lbads):
        """ Wrapper to run ios on namespace under test.
            - Args:
                - lbads : LBA Data size supported in power of 2 format.
            - Returns:
                - None
        """
        block_size = mmap.PAGESIZE if int(lbads) < 9 else 2 ** int(lbads)
        ns_path = self.ctrl + "n" + str(nsid)
        io_cmd = "dd if=" + ns_path + " of=/dev/null" + " bs=" + \
                 str(block_size) + " count=10 > /dev/null 2>&1"
        print(io_cmd)
        run_io = subprocess.Popen(io_cmd, shell=True, stdout=subprocess.PIPE,
                                  encoding='utf-8')
        run_io_result = run_io.communicate()[1]
        self.assertEqual(run_io_result, None)
        io_cmd = "dd if=/dev/zero of=" + ns_path + " bs=" + \
                 str(block_size) + " count=10 > /dev/null 2>&1"
        print(io_cmd)
        run_io = subprocess.Popen(io_cmd, shell=True, stdout=subprocess.PIPE,
                                  encoding='utf-8')
        run_io_result = run_io.communicate()[1]
        self.assertEqual(run_io_result, None)

    def supp_check_id_ctrl(self, key):
        """ Wrapper for support check.
            - Args:
                - key : search key.
            - Returns:
                - value for key requested.
        """
        id_ctrl = "nvme id-ctrl " + self.ctrl
        print("\n" + id_ctrl)
        proc = subprocess.Popen(id_ctrl,
                                shell=True,
                                stdout=subprocess.PIPE,
                                encoding='utf-8')
        err = proc.wait()
        self.assertEqual(err, 0, "ERROR : nvme Identify controller Data \
                         structure failed")
        for line in proc.stdout:
            if key in line:
                key = line.replace(",", "", 1)
        print(key)
        val = (key.split(':'))[1].strip()
        return int(val, 16)
 070701015D6C93000081A4000003E80000006400000001642C0FB500000DA3000000000000004A00000000000000000000001F00000000nvme-cli/tests/nvme_test_io.py    # SPDX-License-Identifier: GPL-2.0-or-later
#
# Copyright (c) 2015-2016 Western Digital Corporation or its affiliates.
#
# 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 Street, Fifth Floor, Boston,
# MA  02110-1301, USA.
#
#   Author: Chaitanya Kulkarni <chaitanya.kulkarni@hgst.com>
#
""" Inherit TestNVMeIO for nvme read/write operations """

import os

from nvme_test import TestNVMe


class TestNVMeIO(TestNVMe):

    """
    Variable and Methods required to perform nvme read/write.

        - Attributes:
              - data_size : data size to perform IO.
              - start_block : starting block of to perform IO.
              - block_count : Number of blocks to use in IO.
              - write_file : data file to use in nvme write command.
              - read_file : data file to use in nvme read command.
    """

    def setUp(self):
        """ Pre Section for TestNVMeIO """
        super().setUp()
        # common code used in various testcases.
        self.data_size = 512
        self.start_block = 0
        self.block_count = 0
        self.write_file = "write_file.txt"
        self.read_file = "read_file.txt"

    def tearDown(self):
        """ Post Section for TestNVMeIO """
        super().tearDown()

    def create_data_file(self, pathname, data_size, pattern):
        """ Creates data file with specific pattern
            - Args:
                - pathname : data file path name.
                - data_size : total size of the data.
                - pattern : data pattern to create file.
            - Returns:
            None
        """
        pattern_len = len(pattern)
        data_file = open(pathname, "w")
        for i in range(0, data_size):
            data_file.write(pattern[i % pattern_len])
        data_file.flush()
        os.fsync(data_file.fileno())
        data_file.close()

    def nvme_write(self):
        """ Wrapper for nvme write operation
            - Args:
                - None
            - Returns:
                - return code for nvme write command.
        """
        write_cmd = "nvme write " + self.ns1 + " --start-block=" + \
                    str(self.start_block) + " --block-count=" + \
                    str(self.block_count) + " --data-size=" + \
                    str(self.data_size) + " --data=" + self.write_file
        return self.exec_cmd(write_cmd)

    def nvme_read(self):
        """ Wrapper for nvme read operation
            - Args:
                - None
            - Returns:
                - return code for nvme read command.
        """
        read_cmd = "nvme read " + self.ns1 + " --start-block=" + \
                   str(self.start_block) + " --block-count=" + \
                   str(self.block_count) + " --data-size=" + \
                   str(self.data_size) + " --data=" + self.read_file
        print(read_cmd)
        return self.exec_cmd(read_cmd)
 070701015D6C94000081A4000003E80000006400000001642C0FB5000006EE000000000000004A00000000000000000000002300000000nvme-cli/tests/nvme_test_logger.py    # SPDX-License-Identifier: GPL-2.0-or-later
#
# Copyright (c) 2015-2016 Western Digital Corporation or its affiliates.
#
# 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 Street, Fifth Floor, Boston,
# MA  02110-1301, USA.
#
#   Author: Chaitanya Kulkarni <chaitanya.kulkarni@hgst.com>
#
"""
Logger for NVMe Test Framwwork:-

"""
import sys


class TestNVMeLogger():
    """ Represents Logger for NVMe Testframework.  """

    def __init__(self, log_file_path):
        """ Logger setup
            - Args:
                log_file_path : path to store the log.
        """
        self.terminal = sys.stdout
        self.log = open(log_file_path, "w")

    def write(self, log_message):
        """ Logger setup
            - Args:
                log_message: string to write in the log file.
            - Returns:
                None
        """
        self.terminal.write(log_message)
        self.log.write(log_message)

    def flush(self):
        """ This flush method is needed for python 3 compatibility.
            this handles the flush command by doing nothing.
            you might want to specify some extra behavior here.
        """
        pass
  070701015D6C95000081A4000003E80000006400000001642C0FB5000005C6000000000000004A00000000000000000000002300000000nvme-cli/tests/nvme_verify_test.py    # SPDX-License-Identifier: GPL-2.0-or-later
#
# This file is part of nvme-cli
#
# Copyright (c) 2022 Samsung Electronics Co., Ltd. All Rights Reserved.
#
# Author: Arunpandian J <apj.arun@samsung.com>

"""
NVMe Verify Testcase:-

    1. Issue verify command on set of block; shall pass.

"""

from nvme_test import TestNVMe


class TestNVMeVerify(TestNVMe):

    """
    Represents NVMe Verify testcase.
        - Attributes:
              - start_block : starting block of to verify operation.
              - test_log_dir : directory for logs, temp files.
    """

    def setUp(self):
        """ Pre Section for TestNVMeVerify """
        super().setUp()
        self.start_block = 0
        self.block_count = 0
        self.namespace = 1
        self.setup_log_dir(self.__class__.__name__)

    def tearDown(self):
        """ Post Section for TestNVMeVerify """
        super().tearDown()

    def verify(self):
        """ Wrapper for nvme verify
            - Args:
                - None
            - Returns:
                - return code for nvme verify command.
        """
        verify_cmd = "nvme verify " + self.ctrl + \
                     " --namespace-id=" + str(self.namespace) + \
                     " --start-block=" + str(self.start_block) + \
                     " --block-count=" + str(self.block_count)
        return self.exec_cmd(verify_cmd)

    def test_verify(self):
        """ Testcase main """
        self.assertEqual(self.verify(), 0)
  070701015D6C96000081A4000003E80000006400000001642C0FB500000AB9000000000000004A00000000000000000000002700000000nvme-cli/tests/nvme_writeuncor_test.py    # SPDX-License-Identifier: GPL-2.0-or-later
#
# Copyright (c) 2015-2016 Western Digital Corporation or its affiliates.
#
# 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 Street, Fifth Floor, Boston,
# MA  02110-1301, USA.
#
#   Author: Chaitanya Kulkarni <chaitanya.kulkarni@hgst.com>
#
"""
NVMe Write Compare Testcae:-

    1. Read block of data successfully.
    2. Issue write uncorrectable to block of data.
    3. Attempt to read from same block; shall fail.
    4. Issue a write command to first block of data.
    5. Read from the same block; shall pass.

"""

from nvme_test_io import TestNVMeIO


class TestNVMeUncor(TestNVMeIO):

    """
    Represents NVMe Write Uncorrecatble testcase.
        - Attributes:
              - start_block : starting block of to perform IO.
              - test_log_dir : directory for logs, temp files.
    """

    def setUp(self):
        """ Constructor TestNVMeUncor """
        super().setUp()
        self.start_block = 1023
        self.setup_log_dir(self.__class__.__name__)
        self.write_file = self.test_log_dir + "/" + self.write_file
        self.read_file = self.test_log_dir + "/" + self.read_file
        self.create_data_file(self.write_file, self.data_size, "15")
        open(self.read_file, 'a').close()

    def tearDown(self):
        """ Post Section for TestNVMeUncor """
        super().tearDown()

    def write_uncor(self):
        """ Wrapper for nvme write uncorrectable
            - Args:
                - None
            - Returns:
                - return code of nvme write uncorrectable command.
        """
        write_uncor_cmd = "nvme write-uncor " + self.ns1 + \
                          " --start-block=" + str(self.start_block) + \
                          " --block-count=" + str(self.block_count)
        return self.exec_cmd(write_uncor_cmd)

    def test_write_uncor(self):
        """ Testcase main """
        self.assertEqual(self.nvme_read(), 0)
        self.assertEqual(self.write_uncor(), 0)
        self.assertNotEqual(self.nvme_read(), 0)
        self.assertEqual(self.nvme_write(), 0)
        self.assertEqual(self.nvme_read(), 0)
   070701015D6C97000081A4000003E80000006400000001642C0FB500000E8F000000000000004A00000000000000000000002700000000nvme-cli/tests/nvme_writezeros_test.py    # SPDX-License-Identifier: GPL-2.0-or-later
#
# Copyright (c) 2015-2016 Western Digital Corporation or its affiliates.
#
# 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 Street, Fifth Floor, Boston,
# MA  02110-1301, USA.
#
#   Author: Chaitanya Kulkarni <chaitanya.kulkarni@hgst.com>
#
"""
NVMe Write Zeros:-

    1. Issue a write command to block of data.
    2. Read from same block to verify data pattern.
    3. Issue write zeros to the block of data.
    4. Read from same block, should be all zeroes.

"""

import filecmp

from nvme_test_io import TestNVMeIO


class TestNVMeWriteZeros(TestNVMeIO):

    """
    Represents NVMe Write Zero Testcase.

        - Attributes:
              - zero_file : file with all '\0' to compare the zero data.
              - data_size : data size to perform IO.
              - start_block : starting block of to perform IO.
              - block_count: Number of blocks to use in IO.
              - test_log_dir : directory for logs, temp files.
    """

    def setUp(self):
        """ Pre Section for TestNVMeWriteZeros """
        super().setUp()
        self.start_block = 1023
        self.block_count = 0
        self.setup_log_dir(self.__class__.__name__)
        self.write_file = self.test_log_dir + "/" + self.write_file
        self.read_file = self.test_log_dir + "/" + self.read_file
        self.zero_file = self.test_log_dir + "/" + "zero_file.txt"
        self.create_data_file(self.write_file, self.data_size, "15")
        self.create_data_file(self.zero_file, self.data_size, '\0')
        open(self.read_file, 'a').close()

    def tearDown(self):
        """ Post Section for TestNVMeWriteZeros """
        super().tearDown()

    def write_zeroes(self):
        """ Wrapper for nvme write-zeroe
            - Args:
                - None
            - Returns:
                - return code for nvme write command.
        """
        write_zeroes_cmd = "nvme write-zeroes " + self.ns1 + \
                           " --start-block=" + str(self.start_block) + \
                           " --block-count=" + str(self.block_count)
        return self.exec_cmd(write_zeroes_cmd)

    def validate_write_read(self):
        """ Validate the file which had been read from the device
            - Args:
                - None
            - Returns:
                - 0 on success, 1 on failure
        """
        return 0 if filecmp.cmp(self.write_file, self.read_file) is True else 1

    def validate_zeroes(self):
        """
        Validate the data which is zeroed out via write-zeroes
            - Args:
                - None
            - Returns:
                - 0 on success, 1 on failure
         """
        return 0 if filecmp.cmp(self.zero_file, self.read_file) is True else 1

    def test_write_zeros(self):
        """ Testcae main """
        self.assertEqual(self.nvme_write(), 0)
        self.assertEqual(self.nvme_read(), 0)
        self.assertEqual(self.validate_write_read(), 0)
        self.assertEqual(self.write_zeroes(), 0)
        self.assertEqual(self.nvme_read(), 0)
        self.assertEqual(self.validate_zeroes(), 0)
 070701015D6C98000081A4000003E80000006400000001642C0FB500000BD6000000000000004A00000000000000000000002100000000nvme-cli/tests/run_py_linters.py  # SPDX-License-Identifier: LGPL-2.1-or-later

# Copied from https://github.com/python-sdbus/python-sdbus
# Copyright (C) 2020, 2021 igo95862

# This file is part of nvme-cli

# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.

# This library 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
# Lesser General Public License for more details.

# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301 USA
from __future__ import annotations

from argparse import ArgumentParser
from os import environ
from pathlib import Path
from subprocess import run
from typing import List

source_root = Path(environ['MESON_SOURCE_ROOT'])
build_dir = Path(environ['MESON_BUILD_ROOT'])

tests_dir = source_root / 'tests'

all_python_modules = [
    tests_dir,
]

mypy_cache_dir = build_dir / '.mypy_cache'


def run_mypy(path: Path) -> None:
    print(f"Running mypy on {path}")
    run(
        args=(
            'mypy', '--strict',
            '--cache-dir', mypy_cache_dir,
            '--python-version', '3.8',
            '--namespace-packages',
            '--ignore-missing-imports',
            path,
        ),
        check=False,
        env={'MYPYPATH': str(tests_dir.absolute()), **environ},
    )


def linter_main() -> None:
    run(
        args=(
            'flake8',
            *all_python_modules,
        ),
        check=False,
    )

    for x in all_python_modules:
        run_mypy(x)


def get_all_python_files() -> List[Path]:
    python_files: List[Path] = []

    for python_module in all_python_modules:
        if python_module.is_dir():
            for a_file in python_module.iterdir():
                if a_file.suffix == '.py':
                    python_files.append(a_file)
        else:
            python_files.append(python_module)

    return python_files


def formater_main() -> None:
    all_python_files = get_all_python_files()

    run(
        args=('autopep8', '--in-place', *all_python_files),
        check=False,
    )

    run(
        args=(
            'isort',
            '-m', 'VERTICAL_HANGING_INDENT',
            '--trailing-comma',
            *all_python_files,
        ),
        check=False,
    )


def main() -> None:
    parser = ArgumentParser()
    parser.add_argument(
        'mode',
        choices=('lint', 'format'),
    )

    args = parser.parse_args()

    mode = args.mode

    if mode == 'lint':
        linter_main()
    elif mode == 'format':
        formater_main()
    else:
        raise ValueError('Unknown mode', mode)


if __name__ == '__main__':
    main()
  070701015D6C9B000081A4000003E80000006400000001642C0FB5000004C4000000000000004A00000000000000000000002900000000nvme-cli/unit/test-suffix-binary-parse.c  // SPDX-License-Identifier: GPL-2.0-or-later

#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>

#include "../util/suffix.h"
#include "../util/types.h"

#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0]))

static int test_rc;

static void check_num(const char *val, __u64 exp, __u64 num)
{
	if (exp == num)
		return;

	printf("ERROR: printing {%s},  got '%llu', expected '%llu'\n",
	       val, (unsigned long long)num, (unsigned long long)exp);

	test_rc = 1;
}

struct tonum_test {
	const char *val;
	const uint64_t exp;
	int ret;
};

static struct tonum_test tonum_tests[] = {
	{ "1234", 1234, 0 },
	{ "1Ki", 1024, 0},
	{ "34Gi", 36507222016, 0 },
	{ "34.9Ki", 0, -EINVAL},
	{ "32Gii", 0, -EINVAL },
};

void tonum_test(struct tonum_test *test)
{
	char *endptr;
	uint64_t num;
	int ret;

	ret = suffix_binary_parse(test->val, &endptr, &num);
	if (ret != test->ret) {
		printf("ERROR: converting {%s} failed\n", test->val);
		test_rc = 1;
		return;
	}
	if (ret)
		return;

	check_num(test->val, test->exp, num);
}

int main(void)
{
	unsigned int i;

	test_rc = 0;

	for (i = 0; i < ARRAY_SIZE(tonum_tests); i++)
		tonum_test(&tonum_tests[i]);

	return test_rc ? EXIT_FAILURE : EXIT_SUCCESS;
}
070701015D6C9C000081A4000003E80000006400000001642C0FB5000005D2000000000000004A00000000000000000000002500000000nvme-cli/unit/test-suffix-si-parse.c  // SPDX-License-Identifier: GPL-2.0-or-later

#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <locale.h>

#include "../util/suffix.h"
#include "../util/types.h"

#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0]))

static int test_rc;

static void check_num(const char *val, __u64 exp, __u64 num)
{
	if (exp == num)
		return;

	printf("ERROR: printing {%s},  got '%llu', expected '%llu'\n",
	       val, (unsigned long long)num, (unsigned long long)exp);

	test_rc = 1;
}

struct tonum_test {
	const char *val;
	const uint64_t exp;
	int ret;
};

static struct tonum_test tonum_tests[] = {
	{ "11995709440", 11995709440, 0 },
	{ "1199570940", 1199570940, 0},
	{ "234.567M", 234567000, 0 },
	{ "1.2k", 1200, 0 },
	{ "6.14T", 6140000000000, 0 },
	{ "123.4567k", 123456, 0 },
	{ "12345.6789101112M", 12345678910, 0},
	{ "6.14", 6, 0 },
	{ "6.14#", 0, -EINVAL },
	{ "2,33", 0, -EINVAL },
	{ "3..3", 0, -EINVAL },
	{ "123.12MM", 0, -EINVAL },
};

void tonum_test(struct tonum_test *test)
{
	char *endptr;
	uint64_t num;
	int ret;

	ret = suffix_si_parse(test->val, &endptr, &num);
	if (ret != test->ret) {
		printf("ERROR: converting {%s} failed\n", test->val);
		test_rc = 1;
		return;
	}
	if (ret)
		return;

	check_num(test->val, test->exp, num);
}

int main(void)
{
	unsigned int i;

	test_rc = 0;
	setlocale(LC_NUMERIC, "C");

	for (i = 0; i < ARRAY_SIZE(tonum_tests); i++)
		tonum_test(&tonum_tests[i]);

	return test_rc ? EXIT_FAILURE : EXIT_SUCCESS;
}
  070701015D6C9D000081A4000003E80000006400000001642C0FB500000682000000000000004A00000000000000000000002000000000nvme-cli/unit/test-uint128-si.c   // SPDX-License-Identifier: GPL-2.0-or-later

#include <string.h>
#include <stdio.h>
#include <stdlib.h>

#include "../util/types.h"

#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0]))

/* create a uint128_t from four uint32_ts. w0 is the most significant value,
 * w2 the least */
#define U128(w0, w1, w2, w3) { .words = { w0, w1, w2, w3 } }

static int test_rc;

static void check_str(nvme_uint128_t val, __u32 bytes_per_unit, const char *exp,
		      const char *res)
{
	if (!strcmp(res, exp))
		return;

	printf("ERROR: printing {%08x.%08x.%08x.%08x} (bytes per unit %u), got '%s', expected '%s'\n",
	       val.words[3], val.words[2], val.words[1], val.words[0],
	       bytes_per_unit, res, exp);

	test_rc = 1;
}

struct tostr_test {
	nvme_uint128_t val;
	__u32 bytes_per_unit;
	const char *exp;
};

static struct tostr_test tostr_tests[] = {
	{ U128(0, 0, 0, 0), 1, "0.00 B" },
	{ U128(0, 0, 0, 1), 1, "1.00 B" },
	{ U128(0, 0, 0, 10), 1, "10.00 B" },
	{ U128(4, 3, 2, 1), 1, "316.91 RB" },
	{ U128(0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff), 1,
	  "340282366.92 QB" },
	{ U128(0, 0, 0, 0xae0dc2), 1000 * 512, "5.84 TB" },
	{ U128(0, 0, 0, 0xf9c546), 1000 * 512, "8.38 TB" },
	{ U128(0, 0, 0, 0x4c2aa594), 1000 * 512, "654.27 TB" },
	{ U128(0, 0, 0, 0x5b013de8), 1000 * 512, "781.73 TB" },
};

void tostr_test(struct tostr_test *test)
{
	char *str;
	str = uint128_t_to_si_string(test->val, test->bytes_per_unit);
	check_str(test->val, test->bytes_per_unit, test->exp, str);
}

int main(void)
{
	unsigned int i;

	test_rc = 0;

	for (i = 0; i < ARRAY_SIZE(tostr_tests); i++)
		tostr_test(&tostr_tests[i]);

	return test_rc ? EXIT_FAILURE : EXIT_SUCCESS;
}
  070701015D6C9E000081A4000003E80000006400000001642C0FB50000052F000000000000004A00000000000000000000001D00000000nvme-cli/unit/test-uint128.c  // SPDX-License-Identifier: GPL-2.0-or-later

#include <string.h>
#include <stdio.h>
#include <stdlib.h>

#include "../util/types.h"

#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0]))

/* create a uint128_t from four uint32_ts. w0 is the most significant value,
 * w2 the least */
#define U128(w0, w1, w2, w3) { .words = { w0, w1, w2, w3 } }

static int test_rc;

static void check_str(nvme_uint128_t val, const char *exp, const char *res)
{
	if (!strcmp(res, exp))
		return;

	printf("ERROR: printing {%08x.%08x.%08x.%08x}, got '%s', expected '%s'\n",
	       val.words[3], val.words[2], val.words[1], val.words[0],
	       res, exp);

	test_rc = 1;
}

struct tostr_test {
	nvme_uint128_t val;
	const char *exp;
};

static struct tostr_test tostr_tests[] = {
	{ U128(0, 0, 0, 0), "0" },
	{ U128(0, 0, 0, 1), "1" },
	{ U128(0, 0, 0, 10), "10" },
	{ U128(4, 3, 2, 1), "316912650112397582603894390785" },
	{
		U128(0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff),
		"340282366920938463463374607431768211455"
	},
};

void tostr_test(struct tostr_test *test)
{
	char *str;
	str = uint128_t_to_string(test->val);
	check_str(test->val, test->exp, str);
}

int main(void)
{
	unsigned int i;

	test_rc = 0;

	for (i = 0; i < ARRAY_SIZE(tostr_tests); i++)
		tostr_test(&tostr_tests[i]);

	return test_rc ? EXIT_FAILURE : EXIT_SUCCESS;
}
 070701015D6E71000081A4000003E80000006400000001642C0FB6000004E7000000000000004A00000000000000000000001A00000000nvme-cli/unit/meson.build # SPDX-License-Identifier: GPL-2.0-or-later

test_uint128 = executable(
    'test-uint128',
    ['test-uint128.c', '../util/types.c', '../util/suffix.c'],
    include_directories: [incdir, '..'],
    dependencies: [libnvme_dep],
)

test('uint128', test_uint128)

test_suffix_si_parse = executable(
    'test-suffix-si-parse',
    ['test-suffix-si-parse.c', '../util/suffix.c'],
    include_directories: [incdir, '..'],
    dependencies: [libnvme_dep],
)

test('suffix_si_parse', test_suffix_si_parse)

test_suffix_binary_parse = executable(
    'test-suffix-binary-parse',
    ['test-suffix-binary-parse.c', '../util/suffix.c'],
    include_directories: [incdir, '..'],
    dependencies: [libnvme_dep],
)

test('suffix_binary_parse', test_suffix_binary_parse)

test_uint128_si = executable(
    'test-uint128-si',
    ['test-uint128-si.c', '../util/types.c', '../util/suffix.c'],
    include_directories: [incdir, '..'],
    dependencies: [libnvme_dep],
)

test('uint128-si', test_uint128_si)

test_argconfig_parse = executable(
    'test-argconfig-parse',
    ['test-argconfig-parse.c', '../util/argconfig.c', '../util/suffix.c'],
    include_directories: [incdir, '..'],
    dependencies: [libnvme_dep],
)

test('argconfig_parse', test_argconfig_parse)
 070701015D6E72000081A4000003E80000006400000001642C0FB600000FA2000000000000004A00000000000000000000002500000000nvme-cli/unit/test-argconfig-parse.c  // SPDX-License-Identifier: GPL-2.0-or-later

#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <locale.h>

#include "../util/argconfig.h"
#include "nvme/types.h"

#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0]))

static int test_rc;

union val {
	bool flag;
	__u64 suffix;
	__u32 uint;
	int int_val;
	__u64 long_val;
	double double_val;
	__u8 byte;
	__u16 shrt;
	int incr;
	char *string;
	char *fmt;
	char *file;
	char *list;
	char *str;
};

struct toval_test {
	char *arg;
	void *val;
	union val exp;
	int size;
	int ret;
};

static void check_val(const char *arg, void *exp, void *val, int size)
{
	if ((size && !memcmp(exp, val, size)) ||
	    (!size && !strcmp(*(char **)exp, *(char **)val)))
		return;

	switch (size) {
	case 0:
		printf("ERROR: printing {%s}, got '%s', expected '%s'\n",
		       arg, *(char **)val, *(char **)exp);
		break;
	default:
		printf("ERROR: printing {%s}, got '%llu', expected '%llu'\n",
		       arg, *(unsigned long long *)val, *(unsigned long long *)exp);
		break;
	}

	test_rc = 1;
}

struct cfg {
	bool flag;
	__u64 suffix;
	__u32 uint;
	int int_val;
	__u64 long_val;
	double double_val;
	__u8 byte;
	__u16 shrt;
	int incr;
	char *string;
	char *fmt;
	char *file;
	char *list;
	char *str;
};

static struct cfg cfg;

#define VAL_TEST(a, c, v, l, r) \
	{ a, &cfg.c, { .c = v }, l ? sizeof(cfg.c) : 0, r }

static struct toval_test toval_tests[] = {
	VAL_TEST("--flag", flag, true, true, 0),
	VAL_TEST("--flag=1", flag, false, true, -EINVAL),
	VAL_TEST("--suffix=0", suffix, 0, true, 0),
	VAL_TEST("--suffix=1", suffix, 1, true, 0),
	VAL_TEST("--suffix=1234", suffix, 1234, true, 0),
	VAL_TEST("--suffix=4096", suffix, 4096, true, 0),
	VAL_TEST("--suffix=1Ki", suffix, 1024, true, 0),
	VAL_TEST("--suffix=34Gi", suffix, 36507222016, true, 0),
	VAL_TEST("--suffix=34.9Ki", suffix, 0, true, -EINVAL),
	VAL_TEST("--suffix=32Gii", suffix, 0, true, -EINVAL),
	VAL_TEST("--uint=1", uint, 1, true, 0),
	VAL_TEST("--int=1", int_val, 1, true, 0),
	VAL_TEST("--long=1", long_val, 1, true, 0),
	VAL_TEST("--double=1", double_val, 1, true, 0),
	VAL_TEST("--byte=1", byte, 1, true, 0),
	VAL_TEST("--byte=256", byte, 0, true, -EINVAL),
	VAL_TEST("--shrt=1", shrt, 1, true, 0),
	VAL_TEST("--incr", incr, 1, true, 0),
	VAL_TEST("--incr=1", incr, 0, true, -EINVAL),
	VAL_TEST("--string=string", string, "string", false, 0),
	VAL_TEST("--fmt=fmt", fmt, "fmt", false, 0),
	VAL_TEST("--file=file", file, "file", false, 0),
	VAL_TEST("--list=list", list, "list", false, 0),
	VAL_TEST("--str=str", str, "str", false, 0),
};

void toval_test(struct toval_test *test)
{
	const char *desc = "Test argconfig parse";
	int ret;
	char *argv[] = { "test-argconfig", test->arg };

	OPT_ARGS(opts) = {
		OPT_FLAG("flag",'f', &cfg.flag, "flag"),
		OPT_SUFFIX("suffix", 's', &cfg.suffix, "suffix"),
		OPT_UINT("uint", 'u', &cfg.uint, "uint"),
		OPT_INT("int", 'i', &cfg.int_val, "int"),
		OPT_LONG("long", 'l', &cfg.long_val, "long"),
		OPT_DOUBLE("double", 'd', &cfg.double_val, "double"),
		OPT_BYTE("byte", 'b', &cfg.byte, "byte"),
		OPT_SHRT("shrt", 'S', &cfg.shrt, "shrt"),
		OPT_INCR("incr", 'I', &cfg.incr, "incr"),
		OPT_STRING("string", 't', "STRING", &cfg.string, "string"),
		OPT_FMT("fmt", 'F', &cfg.fmt, "fmt"),
		OPT_FILE("file", 'L', &cfg.file, "file"),
		OPT_LIST("list", 'T', &cfg.list, "list"),
		OPT_STR("str", 'r', &cfg.str, "str"),
		OPT_END()
	};

	ret = argconfig_parse(2, argv, desc, opts);
	if (ret != test->ret) {
		printf("ERROR: converting {%s} failed\n", test->arg);
		test_rc = 1;
		return;
	}
	if (ret)
		return;

	check_val(test->arg, &test->exp, test->val, test->size);
}

int main(void)
{
	unsigned int i;
	FILE *f;

	test_rc = 0;
	setlocale(LC_NUMERIC, "C");
	f = freopen("/dev/null", "w", stderr);
	if (!f)
		printf("ERROR: reopening stderr failed: %s\n", strerror(errno));

	for (i = 0; i < ARRAY_SIZE(toval_tests); i++)
		toval_test(&toval_tests[i]);

	if (f)
		fclose(f);

	return test_rc ? EXIT_FAILURE : EXIT_SUCCESS;
}
  070701015D6CA2000081A4000003E80000006400000001642C0FB500000B8C000000000000004A00000000000000000000001700000000nvme-cli/util/base64.c    // SPDX-License-Identifier: GPL-2.0-or-later
/*
 * base64.c - RFC4648-compliant base64 encoding
 *
 * Copyright (c) 2020 Hannes Reinecke, SUSE
 *
 * 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 Street, Fifth Floor, Boston,
 * MA  02110-1301, USA.
 */

#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <sys/types.h>

static const char base64_table[65] =
	"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";

/**
 * base64_encode() - base64-encode some bytes
 * @src: the bytes to encode
 * @srclen: number of bytes to encode
 * @dst: (output) the base64-encoded string.  Not NUL-terminated.
 *
 * Encodes the input string using characters from the set [A-Za-z0-9+,].
 * The encoded string is roughly 4/3 times the size of the input string.
 *
 * Return: length of the encoded string
 */
int base64_encode(const unsigned char *src, int srclen, char *dst)
{
	int i, bits = 0;
	u_int32_t ac = 0;
	char *cp = dst;

	for (i = 0; i < srclen; i++) {
		ac = (ac << 8) | src[i];
		bits += 8;
		do {
			bits -= 6;
			*cp++ = base64_table[(ac >> bits) & 0x3f];
		} while (bits >= 6);
	}
	if (bits) {
		*cp++ = base64_table[(ac << (6 - bits)) & 0x3f];
		bits -= 6;
	}
	while (bits < 0) {
		*cp++ = '=';
		bits += 2;
	}

	return cp - dst;
}

/**
 * base64_decode() - base64-decode some bytes
 * @src: the base64-encoded string to decode
 * @len: number of bytes to decode
 * @dst: (output) the decoded bytes.
 *
 * Decodes the base64-encoded bytes @src according to RFC 4648.
 *
 * Return: number of decoded bytes
 */
int base64_decode(const char *src, int srclen, unsigned char *dst)
{
	u_int32_t ac = 0;
	int i, bits = 0;
	unsigned char *bp = dst;

        for (i = 0; i < srclen; i++) {
                const char *p = strchr(base64_table, src[i]);

                if (src[i] == '=') {
                        ac = (ac << 6);
			bits += 6;
			if (bits >= 8)
				bits -= 8;
                        continue;
                }
                if (p == NULL || src[i] == 0)
                        return -EINVAL;
                ac = (ac << 6) | (p - base64_table);
                bits += 6;
                if (bits >= 8) {
                        bits -= 8;
                        *bp++ = (unsigned char)(ac >> bits);
                }
	}
	if (ac && ((1 << bits) - 1))
		return -EAGAIN;

	return bp - dst;
}
070701015D6CA3000081A4000003E80000006400000001642C0FB5000000EF000000000000004A00000000000000000000001700000000nvme-cli/util/base64.h    /* SPDX-License-Identifier: GPL-2.0-or-later */
#ifndef _BASE64_H
#define _BASE64_H

int base64_encode(const unsigned char *src, int len, char *dst);
int base64_decode(const char *src, int len, unsigned char *dst);

#endif /* _BASE64_H */
 070701015D6CA4000081A4000003E80000006400000001642C0FB500000089000000000000004A00000000000000000000001800000000nvme-cli/util/cleanup.c   // SPDX-License-Identifier: GPL-2.0-or-later
#include <stdlib.h>
#include "cleanup.h"

DEFINE_CLEANUP_FUNC(cleanup_charp, char *, free);
   070701015D6CA5000081A4000003E80000006400000001642C0FB50000018D000000000000004A00000000000000000000001800000000nvme-cli/util/cleanup.h   /* SPDX-License-Identifier: GPL-2.0-or-later */
#ifndef __CLEANUP_H
#define __CLEANUP_H

#define __cleanup__(fn) __attribute__((cleanup(fn)))

#define DECLARE_CLEANUP_FUNC(name, type) \
	void name(type *__p)

#define DEFINE_CLEANUP_FUNC(name, type, free_fn)\
DECLARE_CLEANUP_FUNC(name, type)		\
{						\
	if (*__p)				\
		free_fn(*__p);			\
}

DECLARE_CLEANUP_FUNC(cleanup_charp, char *);

#endif
   070701015D6CA6000081A4000003E80000006400000001642C0FB500001267000000000000004A00000000000000000000001600000000nvme-cli/util/crc32.c // SPDX-License-Identifier: GPL-2.0-or-later

/* Copyright (C) 2002 Red Hat, Inc.
   This file is part of elfutils.

   This file is free software; you can redistribute it and/or modify
   it under the terms of either

     * the GNU Lesser General Public License as published by the Free
       Software Foundation; either version 3 of the License, or (at
       your option) any later version

   or

     * 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

   or both in parallel, as here.

   elfutils 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 copies of the GNU General Public License and
   the GNU Lesser General Public License along with this program.  If
   not, see <http://www.gnu.org/licenses/>.  */

/* https://sourceware.org/git/?p=elfutils.git;a=blob;f=lib/crc32.c;hb=575198c29a427392823cc8f2400579a23d06a875 */

#include "crc32.h"

/* Table computed with Mark Adler's makecrc.c utility.  */
static const uint32_t crc32_table[256] =
{
  0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419,
  0x706af48f, 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4,
  0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07,
  0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de,
  0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856,
  0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9,
  0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4,
  0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b,
  0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3,
  0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac, 0x51de003a,
  0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599,
  0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,
  0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190,
  0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f,
  0x9fbfe4a5, 0xe8b8d433, 0x7807c9a2, 0x0f00f934, 0x9609a88e,
  0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01,
  0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed,
  0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950,
  0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3,
  0xfbd44c65, 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2,
  0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a,
  0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5,
  0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010,
  0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
  0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17,
  0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6,
  0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615,
  0x73dc1683, 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8,
  0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, 0xf00f9344,
  0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb,
  0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a,
  0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5,
  0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1,
  0xa6bc5767, 0x3fb506dd, 0x48b2364b, 0xd80d2bda, 0xaf0a1b4c,
  0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef,
  0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,
  0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe,
  0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31,
  0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c,
  0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713,
  0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b,
  0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242,
  0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1,
  0x18b74777, 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c,
  0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 0xa00ae278,
  0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7,
  0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 0x40df0b66,
  0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
  0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605,
  0xcdd70693, 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8,
  0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b,
  0x2d02ef8d
};

uint32_t crc32 (uint32_t crc, unsigned char *buf, size_t len)
{
        unsigned char *end;

        crc = ~crc;
        for (end = buf + len; buf < end; ++buf)
                crc = crc32_table[(crc ^ *buf) & 0xff] ^ (crc >> 8);
        return ~crc;
}
 070701015D6CA7000081A4000003E80000006400000001642C0FB5000000C1000000000000004A00000000000000000000001600000000nvme-cli/util/crc32.h /* SPDX-License-Identifier: GPL-2.0-or-later */

#ifndef crc32_H
#define crc32_H

#include <stdint.h>
#include <stddef.h>

uint32_t crc32(uint32_t crc, unsigned char *buf, size_t len);

#endif
   070701015D6CAB000081A4000003E80000006400000001642C0FB500001363000000000000004A00000000000000000000001700000000nvme-cli/util/suffix.c    // SPDX-License-Identifier: GPL-2.0-or-later
/*
 *
 * Copyright 2014 PMC-Sierra, Inc.
 *
 * 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 Street, Fifth Floor, Boston, MA  02110-1301, USA.
 *
 */

/*
 *
 *   Author: Logan Gunthorpe
 *
 *   Date:   Oct 23 2014
 *
 *   Description:
 *     Functions for dealing with number suffixes
 *
 */

#include "suffix.h"
#include "common.h"

#include <stdlib.h>
#include <ctype.h>
#include <errno.h>
#include <math.h>
#include <float.h>
#include <limits.h>
#include <locale.h>

static struct si_suffix {
	long double magnitude;
	unsigned int exponent;
	const char *suffix;
} si_suffixes[] = {
	{1e30, 30, "Q"},
	{1e27, 27, "R"},
	{1e24, 24, "Y"},
	{1e21, 21, "Z"},
	{1e18, 18, "E"},
	{1e15, 15, "P"},
	{1e12, 12, "T"},
	{1e9, 9, "G"},
	{1e6, 6, "M"},
	{1e3, 3, "k"},
};

const char *suffix_si_get(double *value)
{
	long double value_ld = *value;
	const char *suffix = suffix_si_get_ld(&value_ld);

	*value = value_ld;

	return suffix;
}

int suffix_si_parse(const char *str, char **endptr, uint64_t *val)
{
	unsigned long long num, frac;
	char *sep, *tmp;
	int frac_len, len, i;

	num = strtoull(str, endptr, 0);
	if (str == *endptr ||
	    ((num == ULLONG_MAX) && errno == ERANGE))
		return -EINVAL;

	/* simple number, no decimal point not suffix */
	if ((*endptr)[0] == '\0') {
		*val = num;
		return 0;
	}

	/* get rid of the decimal point */
	sep = localeconv()->decimal_point;
	if (sep)
		len = strlen(sep);
	else
		len = 0;

	for (i = 0; i < len; i++) {
		if (((*endptr)[i] == '\0') || (*endptr)[i] != sep[i])
			return -EINVAL;
	}
	*endptr += len;
	tmp = *endptr;

	/* extract the digits after decimal point */
	frac = strtoull(tmp, endptr, 0);
	if (tmp == *endptr ||
	    ((frac == ULLONG_MAX) && errno == ERANGE))
		return -EINVAL;

	/* test that we have max one character as suffix */
	if ((*endptr)[0] != '\0' && (*endptr)[1] != '\0')
		return -EINVAL;

	frac_len = *endptr - tmp;

	for (i = 0; i < ARRAY_SIZE(si_suffixes); i++) {
		struct si_suffix *s = &si_suffixes[i];

		if ((*endptr)[0] != s->suffix[0])
			continue;

		/* we should check for overflow */
		for (int j = 0; j < s->exponent; j++)
			num *= 10;

		if (s->exponent > frac_len) {
			for (int j = 0; j < s->exponent - frac_len;  j++)
				frac *= 10;
		} else if (s->exponent < frac_len) {
			for (int j = 0; j < frac_len - s->exponent;  j++)
				frac /= 10;
		} else {
			frac = 0;
		}

		*val = num + frac;
		return 0;
	}

	if ((*endptr)[0] != '\0')
		return -EINVAL;

	*val = num;
	return 0;
}

const char *suffix_si_get_ld(long double *value)
{
	int i;

	for (i = 0; i < ARRAY_SIZE(si_suffixes); i++) {
		struct si_suffix *s = &si_suffixes[i];

		if (*value >= s->magnitude) {
			*value /= s->magnitude;
			return s->suffix;
		}
	}

	return "";
}

static struct binary_suffix {
	int shift;
	const char *suffix;
} binary_suffixes[] = {
	{50, "Pi"},
	{40, "Ti"},
	{30, "Gi"},
	{20, "Mi"},
	{10, "Ki"},
};

const char *suffix_binary_get(long long *value)
{
	int i;

	for (i = 0; i < ARRAY_SIZE(binary_suffixes); i++) {
		struct binary_suffix *s = &binary_suffixes[i];

		if (llabs(*value) >= (1LL << s->shift)) {
			*value =
			    (*value + (1LL << (s->shift - 1))) / (1LL << s->shift);
			return s->suffix;
		}
	}

	return "";
}

const char *suffix_dbinary_get(double *value)
{
	int i;

	for (i = 0; i < ARRAY_SIZE(binary_suffixes); i++) {
		struct binary_suffix *s = &binary_suffixes[i];

		if (fabs(*value) >= (1LL << s->shift)) {
			*value = *value / (1LL << s->shift);
			return s->suffix;
		}
	}

	return "";
}

int suffix_binary_parse(const char *str, char **endptr, uint64_t *val)
{
	uint64_t ret;
	int i;

	ret = strtoull(str, endptr, 0);
	if (str == *endptr ||
	    ((ret == ULLONG_MAX) && errno == ERANGE))
		return -EINVAL;

	if (str == *endptr) {
		*val = ret;
		return 0;
	}

	/* simple number, no decimal point, no suffix */
	if ((*endptr)[0] == '\0') {
		*val = ret;
		return 0;
	}

	for (i = 0; i < ARRAY_SIZE(binary_suffixes); i++) {
		struct binary_suffix *s = &binary_suffixes[i];

		if (tolower((*endptr)[0]) == tolower(s->suffix[0]) &&
		    (s->suffix[0] != '\0' &&
		     (((*endptr)[0] != '\0' &&
		       (*endptr)[1] != '\0' &&
		       (*endptr)[2] == '\0') &&
		      (tolower((*endptr)[1]) == tolower(s->suffix[1]))))) {
			ret <<= s->shift;
			*val = ret;
			return 0;
		}
	}

	return -EINVAL;
}
 070701015D6CAC000081A4000003E80000006400000001642C0FB50000055D000000000000004A00000000000000000000001700000000nvme-cli/util/suffix.h    /* SPDX-License-Identifier: GPL-2.0-or-later */
/*
 *
 * Copyright 2014 PMC-Sierra, Inc.
 *
 * 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 Street, Fifth Floor, Boston, MA  02110-1301, USA.
 *
 */

/*
 *
 *   Author: Logan Gunthorpe
 *
 *   Date:   Oct 23 2014
 *
 *   Description:
 *     Functions for dealing with number suffixes
 *
 */

#ifndef __ARGCONFIG_SUFFIX_H__

#include <inttypes.h>
#include <stdbool.h>

const char *suffix_si_get(double *value);
int suffix_si_parse(const char *str, char **endptr, uint64_t *val);
const char *suffix_si_get_ld(long double *value);
const char *suffix_binary_get(long long *value);
const char *suffix_dbinary_get(double *value);
int suffix_binary_parse(const char *str, char **endptr, uint64_t *val);

#endif
   070701015D6E73000081A4000003E80000006400000001642C0FB600003291000000000000004A00000000000000000000001A00000000nvme-cli/util/argconfig.c // SPDX-License-Identifier: GPL-2.0-or-later
/*
 * Copyright 2014 PMC-Sierra, Inc.
 *
 * 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 Street, Fifth Floor, Boston, MA  02110-1301, USA.
 *
 */

/*
 *
 *   Author: Logan Gunthorpe
 *
 *   Date:   Oct 23 2014
 *
 *   Description:
 *     Functions for parsing command line options.
 *
 */

#include "argconfig.h"
#include "suffix.h"

#include <errno.h>
#include <inttypes.h>
#include <getopt.h>
#include <limits.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
#include <string.h>
#include <stdbool.h>

#if __has_attribute(__fallthrough__)
#define fallthrough __attribute__((__fallthrough__))
#else
#define fallthrough do {} while (0)
#endif

static argconfig_help_func *help_funcs[MAX_HELP_FUNC] = { NULL };

static char END_DEFAULT[] = "__end_default__";

static const char *append_usage_str = "";

void argconfig_append_usage(const char *str)
{
	append_usage_str = str;
}

void print_word_wrapped(const char *s, int indent, int start, FILE *stream)
{
	const int width = 76;
	const char *c, *t;
	int next_space = -1;
	int last_line = indent;

	while (start < indent) {
		putc(' ', stream);
		start++;
	}

	for (c = s; *c != 0; c++) {
		if (*c == '\n')
			goto new_line;

		if (*c == ' ' || next_space < 0) {
			next_space = 0;
			for (t = c + 1; *t != 0 && *t != ' '; t++)
				next_space++;

			if (((int)(c - s) + start + next_space) > (last_line - indent + width)) {
				int i;
new_line:
				last_line = (int) (c-s) + start;
				putc('\n', stream);
				for (i = 0; i < indent; i++)
					putc(' ', stream);
				start = indent;
				continue;
			}
		}
		putc(*c, stream);
	}
}

static void show_option(const struct argconfig_commandline_options *option)
{
	char buffer[0x1000];
	char *b = buffer;

	b += sprintf(b, "  [ ");
	if (option->option) {
		b += sprintf(b, " --%s", option->option);
		if (option->argument_type == optional_argument)
			b += sprintf(b, "[=<%s>]", option->meta ? option->meta : "arg");
		if (option->argument_type == required_argument)
			b += sprintf(b, "=<%s>", option->meta ? option->meta : "arg");
		if (option->short_option)
			b += sprintf(b, ",");
	}
	if (option->short_option) {
		b += sprintf(b, " -%c", option->short_option);
		if (option->argument_type == optional_argument)
			b += sprintf(b, " [<%s>]", option->meta ? option->meta : "arg");
		if (option->argument_type == required_argument)
			b += sprintf(b, " <%s>", option->meta ? option->meta : "arg");
	}
	b += sprintf(b, " ] ");

	fprintf(stderr, "%s", buffer);
	if (option->help) {
		print_word_wrapped("--- ", 40, b - buffer, stderr);
		print_word_wrapped(option->help, 44, 44, stderr);
	}
	fprintf(stderr, "\n");
}

void argconfig_print_help(const char *program_desc,
			  struct argconfig_commandline_options *s)
{
	fprintf(stderr, "\033[1mUsage: %s\033[0m\n\n",
		append_usage_str);

	print_word_wrapped(program_desc, 0, 0, stderr);
	fprintf(stderr, "\n");

	if (!s || !s->option)
		return;

	fprintf(stderr, "\n\033[1mOptions:\033[0m\n");
	for (; s && s->option; s++)
		show_option(s);
}

static int argconfig_error(char *type, const char *opt, const char *arg)
{
	fprintf(stderr, "Expected %s argument for '%s' but got '%s'!\n", type, opt, arg);
	return -EINVAL;
}

int argconfig_parse_byte(const char *opt, const char *str, unsigned char *val)
{
	char *endptr;
	unsigned long tmp = strtoul(str, &endptr, 0);

	if (errno || tmp >= 1 << 8 || str == endptr)
		return argconfig_error("byte", opt, str);

	*val = tmp;

	return 0;
}

static int argconfig_parse_type(struct argconfig_commandline_options *s, struct option *option,
				int index)
{
	void *value = (void *)(char *)s->default_value;
	char *endptr;
	const char *fopts = NULL;
	FILE *f;
	int ret = 0;
	char **opts = ((char **)value);
	int remaining_space = CFG_MAX_SUBOPTS - 2;

	switch (s->config_type) {
	case CFG_STRING:
		*((char **)value) = optarg;
		break;
	case CFG_SIZE:
		*((size_t *)value) = strtol(optarg, &endptr, 0);
		if (errno || optarg == endptr)
			ret = argconfig_error("integer", option[index].name, optarg);
		break;
	case CFG_INT:
		*((int *)value) = strtol(optarg, &endptr, 0);
		if (errno || optarg == endptr)
			ret = argconfig_error("integer", option[index].name, optarg);
		break;
	case CFG_BOOL: {
		int tmp = strtol(optarg, &endptr, 0);
		if (errno || tmp < 0 || tmp > 1 || optarg == endptr)
			ret = argconfig_error("0 or 1", option[index].name, optarg);
		else
			*((int *)value) = tmp;
		break;
	}
	case CFG_BYTE:
		ret = argconfig_parse_byte(option[index].name, optarg, (uint8_t *)value);
		break;
	case CFG_SHORT: {
		unsigned long tmp = strtoul(optarg, &endptr, 0);
		if (errno || tmp >= 1 << 16 || optarg == endptr)
			ret = argconfig_error("short", option[index].name, optarg);
		else
			*((uint16_t *)value) = tmp;
		break;
	}
	case CFG_POSITIVE: {
		uint32_t tmp = strtoul(optarg, &endptr, 0);
		if (errno || optarg == endptr)
			ret = argconfig_error("word", option[index].name, optarg);
		else
			*((uint32_t *)value) = tmp;
		break;
	}
	case CFG_INCREMENT:
		*((int *)value) += 1;
		break;
	case CFG_LONG:
		*((unsigned long *)value) = strtoul(optarg, &endptr, 0);
		if (errno || optarg == endptr)
			ret = argconfig_error("long integer", option[index].name, optarg);
		break;
	case CFG_LONG_SUFFIX:
		ret = suffix_binary_parse(optarg, &endptr, (uint64_t*)value);
		if (ret)
			argconfig_error("long suffixed integer", option[index].name, optarg);
		break;
	case CFG_DOUBLE:
		*((double *)value) = strtod(optarg, &endptr);
		if (errno || optarg == endptr)
			ret = argconfig_error("float", option[index].name, optarg);
		break;
	case CFG_SUBOPTS:
		*opts = END_DEFAULT;
		opts += 2;
		ret = argconfig_parse_subopt_string(optarg, opts, remaining_space);
		if (ret) {
			if (ret == 2)
				fprintf(stderr, "Error Parsing Sub-Options: Too many options!\n");
			else
				fprintf(stderr, "Error Parsing Sub-Options\n");
			ret = -EINVAL;
		}
		break;
	case CFG_FILE_A:
		fopts = "a";
		fallthrough;
	case CFG_FILE_R:
		if (!fopts)
			fopts = "r";
		fallthrough;
	case CFG_FILE_W:
		if (!fopts)
			fopts = "w";
		fallthrough;
	case CFG_FILE_AP:
		if (!fopts)
			fopts = "a+";
		fallthrough;
	case CFG_FILE_RP:
		if (!fopts)
			fopts = "r+";
		fallthrough;
	case CFG_FILE_WP:
		if (!fopts)
			fopts = "w+";
		f = fopen(optarg, fopts);
		if (!f) {
			fprintf(stderr, "Unable to open %s file: %s\n", s->option, optarg);
			ret = -EINVAL;
		} else {
			*((FILE **)value) = f;
		}
		break;
	case CFG_FLAG:
		*((bool *)value) = true;
		break;
	default:
		break;
	}

	return ret;
}

bool argconfig_output_format_json(bool set)
{
	static bool output_format_json = false;

	if (set)
		output_format_json = true;

	return output_format_json;
}

int argconfig_parse(int argc, char *argv[], const char *program_desc,
		    struct argconfig_commandline_options *options)
{
	char *short_opts;
	struct option *long_opts;
	struct argconfig_commandline_options *s;
	int c, option_index = 0, short_index = 0, options_count = 0;
	int ret = 0;

	errno = 0;
	for (s = options; s->option; s++)
		options_count++;

	long_opts = calloc(1, sizeof(struct option) * (options_count + 3));
	short_opts = calloc(1, sizeof(*short_opts) * (options_count * 3 + 5));

	if (!long_opts || !short_opts) {
		fprintf(stderr, "failed to allocate memory for opts: %s\n", strerror(errno));
		ret = -errno;
		goto out;
	}

	for (s = options; s->option && option_index < options_count; s++) {
		if (s->short_option) {
			short_opts[short_index++] = s->short_option;
			if (s->argument_type == required_argument ||
			    s->argument_type == optional_argument)
				short_opts[short_index++] = ':';
			if (s->argument_type == optional_argument)
				short_opts[short_index++] = ':';
		}
		if (s->option && strlen(s->option)) {
			long_opts[option_index].name = s->option;
			long_opts[option_index].has_arg = s->argument_type;
		}
		s->seen = false;
		option_index++;
	}

	long_opts[option_index].name = "help";
	long_opts[option_index++].val = 'h';

	long_opts[option_index].name = "json";
	long_opts[option_index].val = 'j';

	short_opts[short_index++] = '?';
	short_opts[short_index++] = 'h';
	short_opts[short_index] = 'j';

	optind = 0;
	while ((c = getopt_long_only(argc, argv, short_opts, long_opts, &option_index)) != -1) {
		if (c) {
			if (c == '?' || c == 'h') {
				argconfig_print_help(program_desc, options);
				ret = -EINVAL;
				break;
			}
			if (c == 'j')
				argconfig_output_format_json(true);
			for (option_index = 0; option_index < options_count; option_index++) {
				if (c == options[option_index].short_option)
					break;
			}
			if (option_index == options_count)
				continue;
		}

		s = &options[option_index];
		s->seen = true;

		if (!s->default_value)
			continue;

		ret = argconfig_parse_type(s, long_opts,option_index);
		if (ret)
			break;
	}
out:
	free(short_opts);
	free(long_opts);
	return ret;
}

int argconfig_parse_subopt_string(char *string, char **options,
				  size_t max_options)
{
	char **o = options;
	char *tmp;
	size_t toklen;

	if (!string || !strlen(string)) {
		*(o++) = NULL;
		*(o++) = NULL;
		return 0;
	}

	tmp = calloc(strlen(string) + 2, 1);
	if (!tmp)
		return 1;
	strcpy(tmp, string);

	toklen = strcspn(tmp, "=");

	if (!toklen) {
		free(tmp);
		return 1;
	}

	*(o++) = tmp;
	tmp[toklen] = 0;
	tmp += toklen + 1;

	while (1) {
		if (*tmp == '"' || *tmp == '\'' || *tmp == '[' || *tmp == '(' ||
		    *tmp == '{') {

			tmp++;
			toklen = strcspn(tmp, "\"'])}");

			if (!toklen)
				return 1;

			*(o++) = tmp;
			tmp[toklen] = 0;
			tmp += toklen + 1;

			toklen = strcspn(tmp, ";:,");
			tmp[toklen] = 0;
			tmp += toklen + 1;
		} else {
			toklen = strcspn(tmp, ";:,");

			if (!toklen)
				return 1;

			*(o++) = tmp;
			tmp[toklen] = 0;
			tmp += toklen + 1;
		}

		toklen = strcspn(tmp, "=");

		if (!toklen)
			break;

		*(o++) = tmp;
		tmp[toklen] = 0;
		tmp += toklen + 1;

		if ((o - options) > (max_options - 2))
			return 2;
	}

	*(o++) = NULL;
	*(o++) = NULL;

	return 0;
}

int argconfig_parse_comma_sep_array(char *string, int *val,
					 unsigned max_length)
{
	int ret = 0;
	unsigned long v;
	char *tmp;
	char *p;

	if (!string || !strlen(string))
		return 0;

	tmp = strtok(string, ",");
	if (!tmp)
		return 0;

	v = strtoul(tmp, &p, 0);
	if (*p != 0)
		return -1;
	if (v > UINT_MAX) {
		fprintf(stderr, "%s out of range\n", tmp);
		return -1;
	}
	val[ret] = v;

	ret++;
	while (1) {
		tmp = strtok(NULL, ",");

		if (tmp == NULL)
			return ret;

		if (ret >= max_length)
			return -1;

		v = strtoul(tmp, &p, 0);
		if (*p != 0)
			return -1;
		if (v > UINT_MAX) {
			fprintf(stderr, "%s out of range\n", tmp);
			return -1;
		}
		val[ret] = v;
		ret++;
	}
}

int argconfig_parse_comma_sep_array_short(char *string, unsigned short *val,
					  unsigned max_length)
{
	int ret = 0;
	unsigned long v;
	char *tmp;
	char *p;

	if (!string || !strlen(string))
		return 0;

	tmp = strtok(string, ",");
	if (!tmp)
		return 0;

	v = strtoul(tmp, &p, 0);
	if (*p != 0)
		return -1;
	if (v > UINT16_MAX) {
		fprintf(stderr, "%s out of range\n", tmp);
		return -1;
	}
	val[ret] = v;
	ret++;

	while (1) {
		tmp = strtok(NULL, ",");
		if (tmp == NULL)
			return ret;

		if (ret >= max_length)
			return -1;

		v = strtoul(tmp, &p, 0);
		if (*p != 0)
			return -1;
		if (v > UINT16_MAX) {
			fprintf(stderr, "%s out of range\n", tmp);
			return -1;
		}
		val[ret] = v;
		ret++;
	}
}

int argconfig_parse_comma_sep_array_long(char *string,
					      unsigned long long *val,
					      unsigned max_length)
{
	int ret = 0;
	char *tmp;
	char *p;

	if (!string || !strlen(string))
		return 0;

	tmp = strtok(string, ",");
	if (tmp == NULL)
		return 0;

	val[ret] = strtoll(tmp, &p, 0);
	if (*p != 0)
		return -1;
	ret++;
	while (1) {
		tmp = strtok(NULL, ",");

		if (tmp == NULL)
			return ret;

		if (ret >= max_length)
			return -1;

		val[ret] = strtoll(tmp, &p, 0);
		if (*p != 0)
			return -1;
		ret++;
	}
}

void argconfig_register_help_func(argconfig_help_func * f)
{
	int i;
	for (i = 0; i < MAX_HELP_FUNC; i++) {
		if (help_funcs[i] == NULL) {
			help_funcs[i] = f;
			if (i < MAX_HELP_FUNC - 1)
				help_funcs[i + 1] = NULL;
			break;
		}
	}
}

bool argconfig_parse_seen(struct argconfig_commandline_options *s,
			  const char *option)
{
	for (; s && s->option; s++) {
		if (!strcmp(s->option, option))
			return s->seen;
	}

	return false;
}
   070701015D6E74000081A4000003E80000006400000001642C0FB600000F64000000000000004A00000000000000000000001A00000000nvme-cli/util/argconfig.h /* SPDX-License-Identifier: GPL-2.0-or-later */
/*
 *
 * Copyright 2014 PMC-Sierra, Inc.
 *
 * 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 Street, Fifth Floor, Boston, MA  02110-1301, USA.
 *
 */

/*
 *
 *   Author: Logan Gunthorpe <logang@deltatee.com>
 *           Logan Gunthorpe
 *
 *   Date:   Oct 23 2014
 *
 *   Description:
 *     Header file for argconfig.c
 *
 */

#ifndef argconfig_H
#define argconfig_H

#include <string.h>
#include <getopt.h>
#include <stdarg.h>
#include <stdio.h>
#include <stdbool.h>

enum argconfig_types {
	CFG_FLAG,
	CFG_STRING,
	CFG_INT,
	CFG_SIZE,
	CFG_LONG,
	CFG_LONG_SUFFIX,
	CFG_DOUBLE,
	CFG_BOOL,
	CFG_BYTE,
	CFG_SHORT,
	CFG_POSITIVE,
	CFG_INCREMENT,
	CFG_SUBOPTS,
	CFG_FILE_A,
	CFG_FILE_W,
	CFG_FILE_R,
	CFG_FILE_AP,
	CFG_FILE_WP,
	CFG_FILE_RP,
};

#define OPT_ARGS(n) \
	struct argconfig_commandline_options n[]

#define OPT_END() { NULL }

#define OPT_FLAG(l, s, v, d) \
	{l, s, NULL, CFG_FLAG, v, no_argument, d}

#define OPT_SUFFIX(l, s, v, d) \
	{l, s, "IONUM", CFG_LONG_SUFFIX, v, required_argument, d}

#define OPT_UINT(l, s, v, d) \
	{l, s, "NUM", CFG_POSITIVE, v, required_argument, d}

#define OPT_INT(l, s, v, d) \
	{l, s, "NUM", CFG_INT, v, required_argument, d}

#define OPT_LONG(l, s, v, d) \
	{l, s, "NUM", CFG_LONG, v, required_argument, d}

#define OPT_DOUBLE(l, s, v, d) \
	{l, s, "NUM", CFG_DOUBLE, v, required_argument, d}

#define OPT_BYTE(l, s, v, d) \
	{l, s, "NUM", CFG_BYTE, v, required_argument, d}

#define OPT_SHRT(l, s, v, d) \
	{l, s, "NUM", CFG_SHORT, v, required_argument, d}

#define OPT_INCR(l, s, v, d) \
	{l, s, "NUM", CFG_INCREMENT, v, no_argument, d}

#define OPT_STRING(l, s, m, v, d) \
	{l, s, m, CFG_STRING, v, required_argument, d}

#define OPT_FMT(l, s, v, d)  OPT_STRING(l, s, "FMT", v, d)
#define OPT_FILE(l, s, v, d) OPT_STRING(l, s, "FILE", v, d)
#define OPT_LIST(l, s, v, d) OPT_STRING(l, s, "LIST", v, d)
#define OPT_STR(l, s, v, d) OPT_STRING(l, s, "STRING", v, d)

struct argconfig_commandline_options {
	const char *option;
	const char short_option;
	const char *meta;
	enum argconfig_types config_type;
	void *default_value;
	int argument_type;
	const char *help;
	bool seen;
};

#define CFG_MAX_SUBOPTS 500
#define MAX_HELP_FUNC 20

typedef void argconfig_help_func();
void argconfig_append_usage(const char *str);
void argconfig_print_help(const char *program_desc,
			  struct argconfig_commandline_options *options);
int argconfig_parse(int argc, char *argv[], const char *program_desc,
		    struct argconfig_commandline_options *options);
int argconfig_parse_subopt_string(char *string, char **options,
				  size_t max_options);
int argconfig_parse_comma_sep_array(char *string, int *ret,
					 unsigned max_length);
int argconfig_parse_comma_sep_array_short(char *string, unsigned short *ret,
					  unsigned max_length);
int argconfig_parse_comma_sep_array_long(char *string,
					      unsigned long long *ret,
					      unsigned max_length);
int argconfig_parse_byte(const char *opt, const char *str, unsigned char *val);
void argconfig_register_help_func(argconfig_help_func * f);

void print_word_wrapped(const char *s, int indent, int start, FILE *stream);
bool argconfig_parse_seen(struct argconfig_commandline_options *options,
			  const char *option);
bool argconfig_output_format_json(bool set);
#endif
070701015D6E75000081A4000003E80000006400000001642C0FB60000057B000000000000004A00000000000000000000001500000000nvme-cli/util/json.c  // SPDX-License-Identifier: GPL-2.0-or-later
#include <stdio.h>
#include <errno.h>

#include "json.h"
#include "types.h"

struct json_object *util_json_object_new_double(long double d)
{
	struct json_object *obj;
	char *str;

	if (asprintf(&str, "%Lf", d) < 0)
		return NULL;

	obj = json_object_new_string(str);

	free(str);
	return obj;

}

struct json_object *util_json_object_new_uint64(uint64_t i)
{
	struct json_object *obj;
	char *str;

	if (asprintf(&str, "%" PRIu64, i) < 0)
		return NULL;

	obj = json_object_new_string(str);

	free(str);
	return obj;

}

static int util_json_object_string_to_number(struct json_object *jso,
					     struct printbuf *pb, int level,
					     int flags)
{
	ssize_t len = json_object_get_string_len(jso);

	printbuf_memappend(pb, json_object_get_string(jso), len);

	return 0;
}

struct json_object *util_json_object_new_uint128(nvme_uint128_t  val)
{
	struct json_object *obj;

	obj = json_object_new_string(uint128_t_to_string(val));
	json_object_set_serializer(obj, util_json_object_string_to_number, NULL, NULL);

	return obj;
}

uint64_t util_json_object_get_uint64(struct json_object *obj)
{
	uint64_t val = 0;

	if (json_object_is_type(obj, json_type_string)) {
		char *end = NULL;
		const char *buf;

		buf = json_object_get_string(obj);
		val = strtoull(buf, &end, 10);
		if ((val == 0 && errno != 0) || (end == buf))
			return 0;
	}

	return val;
}
 070701015D6E76000081A4000003E80000006400000001642C0FB60000087A000000000000004A00000000000000000000001500000000nvme-cli/util/json.h  /* SPDX-License-Identifier: GPL-2.0-or-later */
#ifndef __JSON__H
#define __JSON__H

#ifdef CONFIG_JSONC
#include <json.h>
#include "util/types.h"

/* Wrappers around json-c's API */

#define json_create_object(o) json_object_new_object(o)
#define json_create_array(a) json_object_new_array(a)
#define json_free_object(o) json_object_put(o)
#define json_free_array(a) json_object_put(a)
#define json_object_add_value_uint(o, k, v) \
	json_object_object_add(o, k, json_object_new_uint64(v))
#define json_object_add_value_int(o, k, v) \
	json_object_object_add(o, k, json_object_new_int(v))
#ifndef CONFIG_JSONC_14
#define json_object_new_uint64(v) util_json_object_new_uint64(v)
#define json_object_get_uint64(v) util_json_object_get_uint64(v)
#endif
#define json_object_add_value_uint64(o, k, v) \
	json_object_object_add(o, k, json_object_new_uint64(v))
#define json_object_add_value_uint128(o, k, v) \
	json_object_object_add(o, k, util_json_object_new_uint128(v))
#define json_object_add_value_double(o, k, v) \
	json_object_object_add(o, k, util_json_object_new_double(v))
#define json_object_add_value_float(o, k, v) \
	json_object_object_add(o, k, json_object_new_double(v))
#define json_object_add_value_string(o, k, v) \
	json_object_object_add(o, k, json_object_new_string(v))
#define json_object_add_value_array(o, k, v) \
	json_object_object_add(o, k, v)
#define json_object_add_value_object(o, k, v) \
	json_object_object_add(o, k, v)
#define json_array_add_value_object(o, k) \
	json_object_array_add(o, k)
#define json_array_add_value_string(o, v) \
	json_object_array_add(o, json_object_new_string(v))
#define json_print_object(o, u)						\
	printf("%s", json_object_to_json_string_ext(o,			\
		JSON_C_TO_STRING_PRETTY |				\
		JSON_C_TO_STRING_NOSLASHESCAPE))

struct json_object *util_json_object_new_double(long double d);
struct json_object *util_json_object_new_uint64(uint64_t i);
struct json_object *util_json_object_new_uint128(nvme_uint128_t val);
struct json_object *util_json_object_new_uint128(nvme_uint128_t val);

uint64_t util_json_object_get_uint64(struct json_object *obj);

#else /* !CONFIG_JSONC */

struct json_object;

#endif

#endif
  070701015D6E77000081A4000003E80000006400000001642C0FB6000000F3000000000000004A00000000000000000000001A00000000nvme-cli/util/meson.build # SPDX-License-Identifier: GPL-2.0-or-later

sources += [
  'util/argconfig.c',
  'util/base64.c',
  'util/cleanup.c',
  'util/crc32.c',
  'util/suffix.c',
  'util/types.c',
]

if json_c_dep.found()
  sources += [
    'util/json.c',
  ]
endif
 070701015D6E78000081A4000003E80000006400000001642C0FB600000B45000000000000004A00000000000000000000001600000000nvme-cli/util/types.c // SPDX-License-Identifier: GPL-2.0-or-later

#include <inttypes.h>
#include <stdio.h>
#include <string.h>
#include <locale.h>

#include <ccan/endian/endian.h>

#include "types.h"
#include "util/suffix.h"

nvme_uint128_t le128_to_cpu(__u8 *data)
{
	nvme_uint128_t u;
	nvme_uint128_t tmp;
	memcpy(tmp.bytes, data, 16);
	u.words[0] = le32_to_cpu(tmp.words[3]);
	u.words[1] = le32_to_cpu(tmp.words[2]);
	u.words[2] = le32_to_cpu(tmp.words[1]);
	u.words[3] = le32_to_cpu(tmp.words[0]);
	return u;
}

long double int128_to_double(__u8 *data)
{
	int i;
	long double result = 0;

	for (i = 0; i < 16; i++) {
		result *= 256;
		result += data[15 - i];
	}
	return result;
}

uint64_t int48_to_long(__u8 *data)
{
	int i;
	uint64_t result = 0;

	for (i = 0; i < 6; i++) {
		result *= 256;
		result += data[5 - i];
	}
	return result;
}

static long double uint128_t_to_double(nvme_uint128_t data)
{
	int i;
	long double result = 0;

	for (i = 0; i < sizeof(data.words) / sizeof(*data.words); i++) {
		result *= 4294967296;
		result += data.words[i];
	}

	return result;
}

static char *__uint128_t_to_string(nvme_uint128_t val, bool l10n)
{
	static char str[60];
	int idx = 60;
	__u64 div, rem;
	char *sep = NULL;
	int i, len = 0;

	if (l10n) {
		sep = localeconv()->thousands_sep;
		len = strlen(sep);
	}

	/* terminate at the end, and build up from the ones */
	str[--idx] = '\0';

	do {
		if (len && !((sizeof(str) - idx) % (3 + len))) {
			for (i = 0; i < len; i++)
				str[--idx] = sep[i];
		}

		rem = val.words[0];

		div = rem / 10;
		rem = ((rem - div * 10) << 32) + val.words[1];
		val.words[0] = div;

		div = rem / 10;
		rem = ((rem - div * 10) << 32) + val.words[2];
		val.words[1] = div;

		div = rem / 10;
		rem = ((rem - div * 10) << 32) + val.words[3];
		val.words[2] = div;

		div = rem / 10;
		rem = rem - div * 10;
		val.words[3] = div;

		str[--idx] = '0' + rem;
	} while (val.words[0] || val.words[1] || val.words[2] || val.words[3]);

	return str + idx;
}

char *uint128_t_to_string(nvme_uint128_t val)
{
	return __uint128_t_to_string(val, false);
}

char *uint128_t_to_l10n_string(nvme_uint128_t val)
{
	return __uint128_t_to_string(val, true);
}

char *uint128_t_to_si_string(nvme_uint128_t val, __u32 bytes_per_unit)
{
	static char str[40];
	long double bytes = uint128_t_to_double(val) * bytes_per_unit;
	const char *suffix = suffix_si_get_ld(&bytes);
	int n = snprintf(str, sizeof(str), "%.2Lf %sB", bytes, suffix);

	if (n <= 0)
		return "";

	if (n >= sizeof(str))
		str[sizeof(str) - 1] = '\0';

	return str;
}

const char *util_uuid_to_string(unsigned char uuid[NVME_UUID_LEN])
{
	static char uuid_str[NVME_UUID_LEN_STRING];

	nvme_uuid_to_string(uuid, uuid_str);

	return uuid_str;
}

const char *util_fw_to_string(char *c)
{
	static char ret[9];
	int i;

	for (i = 0; i < 8; i++)
		ret[i] = c[i] >= '!' && c[i] <= '~' ? c[i] : '.';
	ret[i] = '\0';
	return ret;
}
   070701015D6E79000081A4000003E80000006400000001642C0FB60000039D000000000000004A00000000000000000000001600000000nvme-cli/util/types.h /* SPDX-License-Identifier: GPL-2.0-or-later */
#ifndef _MISC_H
#define _MISC_H

/* type conversion helpers */

#include <stdint.h>
#include <linux/types.h>

#include <libnvme.h>

#define ABSOLUTE_ZERO_CELSIUS -273

static inline long kelvin_to_celsius(long t)
{
	return t + ABSOLUTE_ZERO_CELSIUS;
}

/* uint128_t is not always available, define our own. */
union nvme_uint128 {
        __u8  bytes[16];
	__u32 words[4]; /* [0] is most significant word */
};

typedef union nvme_uint128 nvme_uint128_t;

nvme_uint128_t le128_to_cpu(__u8 *data);
long double int128_to_double(__u8 *data);
uint64_t int48_to_long(__u8 *data);

char *uint128_t_to_string(nvme_uint128_t val);
char *uint128_t_to_l10n_string(nvme_uint128_t val);
char *uint128_t_to_si_string(nvme_uint128_t val, __u32 bytes_per_unit);
const char *util_uuid_to_string(unsigned char uuid[NVME_UUID_LEN]);
const char *util_fw_to_string(char *c);

#endif /* _MISC_H */
   07070100000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000B00000000TRAILER!!!                